ruby: call setMRU from L1 controllers, not from sequencer
authorNilay Vaish <nilay@cs.wisc.edu>
Sat, 5 Sep 2015 14:35:39 +0000 (09:35 -0500)
committerNilay Vaish <nilay@cs.wisc.edu>
Sat, 5 Sep 2015 14:35:39 +0000 (09:35 -0500)
commit740984b30be923e0c171a52fe357a05016fe08c0
tree909369348aaf57d64a23b9b110d5ca81d512bfca
parent8f29298bc7a9aee1572ba3de66ed12db5995509c
ruby: call setMRU from L1 controllers, not from sequencer
Currently the sequencer calls the function setMRU that updates the replacement
policy structures with the first level caches.  While functionally this is
correct, the problem is that this requires calling findTagInSet() which is an
expensive function.  This patch removes the calls to setMRU from the sequencer.
All controllers should now update the replacement policy on their own.

The set and the way index for a given cache entry can be found within the
AbstractCacheEntry structure. Use these indicies to update the replacement
policy structures.
src/mem/protocol/MESI_Three_Level-L0cache.sm
src/mem/protocol/MESI_Two_Level-L1cache.sm
src/mem/protocol/MI_example-cache.sm
src/mem/protocol/MOESI_CMP_directory-L1cache.sm
src/mem/protocol/MOESI_CMP_token-L1cache.sm
src/mem/protocol/MOESI_hammer-cache.sm
src/mem/protocol/RubySlicc_Types.sm
src/mem/ruby/structures/CacheMemory.cc
src/mem/ruby/structures/CacheMemory.hh
src/mem/ruby/system/Sequencer.cc