Nathanael Premillieu has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/47602 )

Change subject: mem-cache: add a prefetch useful stat
......................................................................

mem-cache: add a prefetch useful stat

Count how many time a prefetch is useful, meaning
a hit has happened on a prefetched cache block.
Another stat (pfUsefulButMiss) has been added to count
the special case where there is a hit on prefetched block
but it is counted as a miss because the block is not in
the requested coherency state.

Change-Id: I253216b9ac96d5f21139b710c489d6eb3fce7136
---
M src/mem/cache/base.cc
M src/mem/cache/prefetch/base.cc
M src/mem/cache/prefetch/base.hh
3 files changed, 23 insertions(+), 1 deletion(-)



diff --git a/src/mem/cache/base.cc b/src/mem/cache/base.cc
index 303ae72..17895ce 100644
--- a/src/mem/cache/base.cc
+++ b/src/mem/cache/base.cc
@@ -380,6 +380,7 @@
         ppHit->notify(pkt);

         if (prefetcher && blk && blk->wasPrefetched()) {
+            prefetcher->prefetchUseful(blk);
             DPRINTF(Cache, "Hit on prefetch for addr %#x on blk: %s\n",
                     pkt->getAddr(), blk->print());
             blk->clearPrefetched();
diff --git a/src/mem/cache/prefetch/base.cc b/src/mem/cache/prefetch/base.cc
index 58a7439..724cebf 100644
--- a/src/mem/cache/prefetch/base.cc
+++ b/src/mem/cache/prefetch/base.cc
@@ -122,7 +122,12 @@
     ADD_STAT(pfIssued, statistics::units::Count::get(),
         "number of hwpf issued"),
     ADD_STAT(pfUnused, statistics::units::Count::get(),
-             "number of HardPF blocks evicted w/o reference")
+             "number of HardPF blocks evicted w/o reference"),
+    ADD_STAT(pfUseful, statistics::units::Count::get(),
+        "number of useful prefetch"),
+    ADD_STAT(pfUsefulButMiss, statistics::units::Count::get(),
+        "number of hit on prefetch but cache block is not in an usable "
+        "state")
 {
     pfUnused.flags(statistics::nozero);
 }
@@ -219,6 +224,10 @@

     if (hasBeenPrefetched(pkt->getAddr(), pkt->isSecure())) {
         usefulPrefetches += 1;
+        if (miss)
+            // This case happens when a demand hits on a prefetched line
+            // that's not in the requested coherency state.
+            prefetchStats.pfUsefulButMiss++;
     }

     // Verify this access type is observed by prefetcher
diff --git a/src/mem/cache/prefetch/base.hh b/src/mem/cache/prefetch/base.hh
index a4c3b97..87b7f55 100644
--- a/src/mem/cache/prefetch/base.hh
+++ b/src/mem/cache/prefetch/base.hh
@@ -332,6 +332,11 @@
         /** The number of times a HW-prefetched block is evicted w/o
          * reference. */
         statistics::Scalar pfUnused;
+        /** The number of times a HW-prefetch is useful. */
+        statistics::Scalar pfUseful;
+        /** The number of times there is a hit on prefetch but cache block
+         * is not in an usable state */
+        statistics::Scalar pfUsefulButMiss;
     } prefetchStats;

     /** Total prefetches issued */
@@ -369,6 +374,13 @@
         prefetchStats.pfUnused++;
     }

+    virtual void
+    prefetchUseful(CacheBlk *blk)
+    {
+        assert(blk->wasPrefetched());
+        prefetchStats.pfUseful++;
+    }
+
     /**
      * Register probe points for this object.
      */

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/47602
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I253216b9ac96d5f21139b710c489d6eb3fce7136
Gerrit-Change-Number: 47602
Gerrit-PatchSet: 1
Gerrit-Owner: Nathanael Premillieu <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
  • [gem5-dev] Change in gem5/gem5[... Nathanael Premillieu (Gerrit) via gem5-dev

Reply via email to