summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mem/cache/base.cc6
-rw-r--r--src/mem/cache/base.hh3
-rw-r--r--src/mem/cache/cache.cc3
3 files changed, 12 insertions, 0 deletions
diff --git a/src/mem/cache/base.cc b/src/mem/cache/base.cc
index ecbd3526e..3ae52cebd 100644
--- a/src/mem/cache/base.cc
+++ b/src/mem/cache/base.cc
@@ -444,6 +444,12 @@ BaseCache::regStats()
.desc("number of cache copies performed")
;
+ unusedPrefetches
+ .name(name() + ".unused_prefetches")
+ .desc("number of HardPF blocks evicted w/o reference")
+ .flags(nozero)
+ ;
+
writebacks
.init(system->maxMasters())
.name(name() + ".writebacks")
diff --git a/src/mem/cache/base.hh b/src/mem/cache/base.hh
index cd21bce91..9275eb453 100644
--- a/src/mem/cache/base.hh
+++ b/src/mem/cache/base.hh
@@ -387,6 +387,9 @@ class BaseCache : public MemObject
/** The number of cache copies performed. */
Stats::Scalar cacheCopies;
+ /** The number of times a HW-prefetched block is evicted w/o reference. */
+ Stats::Scalar unusedPrefetches;
+
/** Number of blocks written back per thread. */
Stats::Vector writebacks;
diff --git a/src/mem/cache/cache.cc b/src/mem/cache/cache.cc
index 267497aca..5d5760ff3 100644
--- a/src/mem/cache/cache.cc
+++ b/src/mem/cache/cache.cc
@@ -1709,6 +1709,9 @@ Cache::allocateBlock(Addr addr, bool is_secure, PacketList &writebacks)
addr, is_secure ? "s" : "ns",
blk->isDirty() ? "writeback" : "clean");
+ if (blk->wasPrefetched()) {
+ unusedPrefetches++;
+ }
// Will send up Writeback/CleanEvict snoops via isCachedAbove
// when pushing this writeback list into the write buffer.
if (blk->isDirty() || writebackClean) {