changeset bbdf1177f250 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=bbdf1177f250
description:
        ruby: allocate a block in CacheMemory without updating LRU state

diffstat:

 src/mem/protocol/RubySlicc_Types.sm    |   1 +
 src/mem/ruby/structures/CacheMemory.cc |   6 ++++--
 src/mem/ruby/structures/CacheMemory.hh |  10 ++++++++--
 3 files changed, 13 insertions(+), 4 deletions(-)

diffs (56 lines):

diff -r 4820cc8408b0 -r bbdf1177f250 src/mem/protocol/RubySlicc_Types.sm
--- a/src/mem/protocol/RubySlicc_Types.sm       Mon Jul 20 09:15:18 2015 -0500
+++ b/src/mem/protocol/RubySlicc_Types.sm       Mon Jul 20 09:15:18 2015 -0500
@@ -146,6 +146,7 @@
   bool cacheAvail(Address);
   Address cacheProbe(Address);
   AbstractCacheEntry allocate(Address, AbstractCacheEntry);
+  AbstractCacheEntry allocate(Address, AbstractCacheEntry, bool);
   void allocateVoid(Address, AbstractCacheEntry);
   void deallocate(Address);
   AbstractCacheEntry lookup(Address);
diff -r 4820cc8408b0 -r bbdf1177f250 src/mem/ruby/structures/CacheMemory.cc
--- a/src/mem/ruby/structures/CacheMemory.cc    Mon Jul 20 09:15:18 2015 -0500
+++ b/src/mem/ruby/structures/CacheMemory.cc    Mon Jul 20 09:15:18 2015 -0500
@@ -251,7 +251,7 @@
 }
 
 AbstractCacheEntry*
-CacheMemory::allocate(const Address& address, AbstractCacheEntry* entry)
+CacheMemory::allocate(const Address& address, AbstractCacheEntry* entry, bool 
touch)
 {
     assert(address == line_address(address));
     assert(!isTagPresent(address));
@@ -271,7 +271,9 @@
             set[i]->m_locked = -1;
             m_tag_index[address] = i;
 
-            m_replacementPolicy_ptr->touch(cacheSet, i, curTick());
+            if (touch) {
+                m_replacementPolicy_ptr->touch(cacheSet, i, curTick());
+            }
 
             return entry;
         }
diff -r 4820cc8408b0 -r bbdf1177f250 src/mem/ruby/structures/CacheMemory.hh
--- a/src/mem/ruby/structures/CacheMemory.hh    Mon Jul 20 09:15:18 2015 -0500
+++ b/src/mem/ruby/structures/CacheMemory.hh    Mon Jul 20 09:15:18 2015 -0500
@@ -74,10 +74,16 @@
     bool cacheAvail(const Address& address) const;
 
     // find an unused entry and sets the tag appropriate for the address
-    AbstractCacheEntry* allocate(const Address& address, AbstractCacheEntry* 
new_entry);
+    AbstractCacheEntry* allocate(const Address& address,
+                                 AbstractCacheEntry* new_entry, bool touch);
+    AbstractCacheEntry* allocate(const Address& address,
+                                 AbstractCacheEntry* new_entry)
+    {
+        return allocate(address, new_entry, true);
+    }
     void allocateVoid(const Address& address, AbstractCacheEntry* new_entry)
     {
-        allocate(address, new_entry);
+        allocate(address, new_entry, true);
     }
 
     // Explicitly free up this address
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to