diff options
author | Nilay Vaish <nilay@cs.wisc.edu> | 2015-08-03 22:44:28 -0500 |
---|---|---|
committer | Nilay Vaish <nilay@cs.wisc.edu> | 2015-08-03 22:44:28 -0500 |
commit | 9bf3b8828a19570f50914d86d76e32896ecd12bb (patch) | |
tree | 983003b7070af638065b819353e1119c29347861 /src | |
parent | 3d782f8df7450af529d30c0488a5c12e0701dbed (diff) | |
download | gem5-9bf3b8828a19570f50914d86d76e32896ecd12bb.tar.xz |
ruby: mesi two,three level: copy data only when dirty
The level 2 controller has a bug. In one particular action, the data block was
copied from a message irrespective whether the block is dirty or not. In cases
when L1 sends no data, the data value copied was incorrect.
Diffstat (limited to 'src')
-rw-r--r-- | src/mem/protocol/MESI_Two_Level-L2cache.sm | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mem/protocol/MESI_Two_Level-L2cache.sm b/src/mem/protocol/MESI_Two_Level-L2cache.sm index ede420626..6afd0fcea 100644 --- a/src/mem/protocol/MESI_Two_Level-L2cache.sm +++ b/src/mem/protocol/MESI_Two_Level-L2cache.sm @@ -628,8 +628,8 @@ machine(L2Cache, "MESI Directory L2 Cache CMP") action(mr_writeDataToCacheFromRequest, "mr", desc="Write data from response queue to cache") { peek(L1RequestL2Network_in, RequestMsg) { assert(is_valid(cache_entry)); - cache_entry.DataBlk := in_msg.DataBlk; if (in_msg.Dirty) { + cache_entry.DataBlk := in_msg.DataBlk; cache_entry.Dirty := in_msg.Dirty; } } |