diff options
-rw-r--r-- | src/mem/cache/base.cc | 6 | ||||
-rw-r--r-- | src/mem/cache/base.hh | 3 | ||||
-rw-r--r-- | src/mem/cache/cache.cc | 3 |
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) { |