----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/552/ -----------------------------------------------------------
Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, Nathan Binkert, and Brad Beckmann. Summary ------- MOESI_hammer: adding cache flushing This patch adds cache flushing to MOESI_hammer. In order to flush a cache line, a FLUSH request is issued. Flushing is basically a store to a line (with no change to data) followed by a write back to the memory (invalidation). At the L1 cache, up on a flush request, a GETF (similar to GETX) is issued. When the directory processes this request, it gives the exclusive permission, and blocks this line until the flush is done (stalls other GETS/GETX/GETF requests). If the cache line is already in a modified state (MM/M), the cache issues a BLOCK request to the directory (instead of issuing GETF as the cache already has the line exclusively), which blocks the line until the flush is done. Diffs ----- src/cpu/testers/rubytest/Check.hh baf4b5f6782e src/cpu/testers/rubytest/Check.cc baf4b5f6782e src/mem/packet.hh baf4b5f6782e src/mem/packet.cc baf4b5f6782e src/mem/physical.cc baf4b5f6782e src/mem/protocol/MOESI_hammer-cache.sm baf4b5f6782e src/mem/protocol/MOESI_hammer-dir.sm baf4b5f6782e src/mem/protocol/MOESI_hammer-msg.sm baf4b5f6782e src/mem/protocol/RubySlicc_Exports.sm baf4b5f6782e src/mem/protocol/RubySlicc_Types.sm baf4b5f6782e src/mem/ruby/slicc_interface/RubyRequest.hh baf4b5f6782e src/mem/ruby/slicc_interface/RubyRequest.cc baf4b5f6782e src/mem/ruby/system/DMASequencer.cc baf4b5f6782e src/mem/ruby/system/RubyPort.cc baf4b5f6782e src/mem/ruby/system/Sequencer.hh baf4b5f6782e src/mem/ruby/system/Sequencer.cc baf4b5f6782e Diff: http://reviews.m5sim.org/r/552/diff Testing ------- To test this implementation, I have changed the ruby tester (Check.cc). It randomly creates flushes (instead of checks (loads)). In this version, a flush request returns data, so it can be used like loads after issuing some stores (actions). Currently, this implementation passes more than 20000 ruby tests (including more than 1000 flushes), however there are still bugs, which cause deadlocks. Thanks, Somayeh _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev