Cache: Fix the LRU policy for classic memory hierarchy
[gem5.git] / src / mem / cache / tags / base.hh
index 46c7186b13a3dd3e9ba807b5827931f6b8678493..576b512e50785dbd6c146cb09081ae9e2159fcde 100644 (file)
@@ -38,8 +38,9 @@
 #define __BASE_TAGS_HH__
 
 #include <string>
-#include "base/statistics.hh"
+
 #include "base/callback.hh"
+#include "base/statistics.hh"
 
 class BaseCache;
 
@@ -63,6 +64,9 @@ class BaseTags
     /** Marked true when the cache is warmed up. */
     bool warmedUp;
 
+    /** the number of blocks in the cache */
+    unsigned numBlocks;
+
     // Statistics
     /**
      * @addtogroup CacheStatistics
@@ -92,6 +96,13 @@ class BaseTags
 
     /** The cycle that the warmup percentage was hit. */
     Stats::Scalar warmupCycle;
+
+    /** Average occupancy of each requestor using the cache */
+    Stats::AverageVector occupancies;
+
+    /** Average occ % of each requestor using the cache */
+    Stats::Formula avgOccs;
+
     /**
      * @}
      */
@@ -130,6 +141,12 @@ class BaseTags
      * exits.
      */
     virtual void cleanupRefs() {}
+
+    /**
+     *iterated through all blocks and clear all locks
+     *Needed to clear all lock tracking at once
+     */
+    virtual void clearLocks() {}
 };
 
 class BaseTagsCallback : public Callback