From: Rekai Gonzalez Alberquilla Date: Wed, 27 May 2015 12:50:01 +0000 (+0100) Subject: mem: Add unused prefetch counter in caches X-Git-Tag: v19.0.0.0~3382 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a3bf4aa6ec9caa68a558f7347d55991f7a254fa5;p=gem5.git mem: Add unused prefetch counter in caches Added stat to the cache to account for HardPF'ed blocks that are evicted before being referenced (over-prefetching). --- 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) {