Review Board 2.0.15


MOESI_hammer: adding cache flushing

Review Request #551 - Created March 5, 2011 and discarded - Latest diff uploaded

Information
Somayeh Sardashti
gem5
default
Reviewers
Default, Ruby
beckmann
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.
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.