#define __BASE_TAGS_HH__
#include <string>
-#include "base/statistics.hh"
+
#include "base/callback.hh"
+#include "base/statistics.hh"
class BaseCache;
/** Marked true when the cache is warmed up. */
bool warmedUp;
+ /** the number of blocks in the cache */
+ unsigned numBlocks;
+
// Statistics
/**
* @addtogroup CacheStatistics
*/
/** Number of replacements of valid blocks per thread. */
- Stats::Vector<> replacements;
+ Stats::Vector replacements;
/** Per cycle average of the number of tags that hold valid data. */
- Stats::Average<> tagsInUse;
+ Stats::Average tagsInUse;
/** The total number of references to a block before it is replaced. */
- Stats::Scalar<> totalRefs;
+ Stats::Scalar totalRefs;
/**
* The number of reference counts sampled. This is different from
* replacements because we sample all the valid blocks when the simulator
* exits.
*/
- Stats::Scalar<> sampledRefs;
+ Stats::Scalar sampledRefs;
/**
* Average number of references to a block before is was replaced.
Stats::Formula avgRefs;
/** The cycle that the warmup percentage was hit. */
- Stats::Scalar<> warmupCycle;
+ 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;
+
/**
* @}
*/
* 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