ruby: call setMRU from L1 controllers, not from sequencer
authorNilay Vaish <nilay@cs.wisc.edu>
Sat, 15 Aug 2015 00:28:43 +0000 (19:28 -0500)
committerNilay Vaish <nilay@cs.wisc.edu>
Sat, 15 Aug 2015 00:28:43 +0000 (19:28 -0500)
commit5060e572ca07b98f7d84679bac81c0151dee46b9
treed7ff69a0fb7c5959b038dad87cd01e08801f33fe
parentb815221718d246549311b2923a2da7a233e1f625
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