Hoa Nguyen has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/39276 )

Change subject: mem: Add Units to mem stats
......................................................................

mem: Add Units to mem stats

Change-Id: Iab214b5d08eb1accc2b35af0c3aed7d30df5b5f3
Signed-off-by: Hoa Nguyen <hoangu...@ucdavis.edu>
---
M src/mem/abstract_mem.cc
M src/mem/cache/base.cc
M src/mem/cache/tags/base.cc
M src/mem/coherent_xbar.cc
M src/mem/ruby/slicc_interface/AbstractController.cc
M src/mem/ruby/structures/RubyPrefetcher.cc
M src/mem/ruby/system/HTMSequencer.cc
7 files changed, 148 insertions(+), 85 deletions(-)



diff --git a/src/mem/abstract_mem.cc b/src/mem/abstract_mem.cc
index 1238f17..0a5709a 100644
--- a/src/mem/abstract_mem.cc
+++ b/src/mem/abstract_mem.cc
@@ -114,19 +114,31 @@

 AbstractMemory::MemStats::MemStats(AbstractMemory &_mem)
     : Stats::Group(&_mem), mem(_mem),
-    ADD_STAT(bytesRead, "Number of bytes read from this memory"),
-    ADD_STAT(bytesInstRead,
-             "Number of instructions bytes read from this memory"),
-    ADD_STAT(bytesWritten, "Number of bytes written to this memory"),
- ADD_STAT(numReads, "Number of read requests responded to by this memory"),
-    ADD_STAT(numWrites,
-             "Number of write requests responded to by this memory"),
- ADD_STAT(numOther, "Number of other requests responded to by this memory"),
-    ADD_STAT(bwRead, "Total read bandwidth from this memory (bytes/s)"),
-    ADD_STAT(bwInstRead,
-             "Instruction read bandwidth from this memory (bytes/s)"),
-    ADD_STAT(bwWrite, "Write bandwidth from this memory (bytes/s)"),
-    ADD_STAT(bwTotal, "Total bandwidth to/from this memory (bytes/s)")
+    ADD_STAT_WITH_UNIT(bytesRead, UNIT_BYTE,
+                       "Number of bytes read from this memory"),
+    ADD_STAT_WITH_UNIT(bytesInstRead, UNIT_BYTE,
+ "Number of instructions bytes read from this memory"),
+    ADD_STAT_WITH_UNIT(bytesWritten, UNIT_BYTE,
+                      "Number of bytes written to this memory"),
+    ADD_STAT_WITH_UNIT(numReads, UNIT_COUNT,
+ "Number of read requests responded to by this memory"),
+    ADD_STAT_WITH_UNIT(numWrites, UNIT_COUNT,
+ "Number of write requests responded to by this memory"),
+    ADD_STAT_WITH_UNIT(numOther, UNIT_COUNT,
+ "Number of other requests responded to by this memory"),
+    ADD_STAT_WITH_UNIT(bwRead,
+                       UNIT_RATE(Stats::Units::Byte, Stats::Units::Second),
+                       "Total read bandwidth from this memory (bytes/s)"),
+    ADD_STAT_WITH_UNIT(bwInstRead,
+                       UNIT_RATE(Stats::Units::Byte, Stats::Units::Second),
+                       "Instruction read bandwidth from this memory "
+                       "(bytes/s)"),
+    ADD_STAT_WITH_UNIT(bwWrite,
+                       UNIT_RATE(Stats::Units::Byte, Stats::Units::Second),
+                       "Write bandwidth from this memory (bytes/s)"),
+    ADD_STAT_WITH_UNIT(bwTotal,
+                       UNIT_RATE(Stats::Units::Byte, Stats::Units::Second),
+                       "Total bandwidth to/from this memory (bytes/s)")
 {
 }

diff --git a/src/mem/cache/base.cc b/src/mem/cache/base.cc
index cf1a9e8..6bed42c 100644
--- a/src/mem/cache/base.cc
+++ b/src/mem/cache/base.cc
@@ -2108,44 +2108,74 @@
 BaseCache::CacheStats::CacheStats(BaseCache &c)
     : Stats::Group(&c), cache(c),

-    ADD_STAT(demandHits, "number of demand (read+write) hits"),
-    ADD_STAT(overallHits, "number of overall hits"),
-    ADD_STAT(demandMisses, "number of demand (read+write) misses"),
-    ADD_STAT(overallMisses, "number of overall misses"),
- ADD_STAT(demandMissLatency, "number of demand (read+write) miss cycles"),
-    ADD_STAT(overallMissLatency, "number of overall miss cycles"),
-    ADD_STAT(demandAccesses, "number of demand (read+write) accesses"),
-    ADD_STAT(overallAccesses, "number of overall (read+write) accesses"),
-    ADD_STAT(demandMissRate, "miss rate for demand accesses"),
-    ADD_STAT(overallMissRate, "miss rate for overall accesses"),
-    ADD_STAT(demandAvgMissLatency, "average overall miss latency"),
-    ADD_STAT(overallAvgMissLatency, "average overall miss latency"),
-    ADD_STAT(blocked_cycles, "number of cycles access was blocked"),
-    ADD_STAT(blocked_causes, "number of cycles access was blocked"),
- ADD_STAT(avg_blocked,"average number of cycles each access was blocked"),
-    ADD_STAT(unusedPrefetches,
-             "number of HardPF blocks evicted w/o reference"),
-    ADD_STAT(writebacks, "number of writebacks"),
-    ADD_STAT(demandMshrHits, "number of demand (read+write) MSHR hits"),
-    ADD_STAT(overallMshrHits, "number of overall MSHR hits"),
- ADD_STAT(demandMshrMisses, "number of demand (read+write) MSHR misses"),
-    ADD_STAT(overallMshrMisses, "number of overall MSHR misses"),
-    ADD_STAT(overallMshrUncacheable,
-             "number of overall MSHR uncacheable misses"),
-    ADD_STAT(demandMshrMissLatency,
-             "number of demand (read+write) MSHR miss cycles"),
-    ADD_STAT(overallMshrMissLatency, "number of overall MSHR miss cycles"),
-    ADD_STAT(overallMshrUncacheableLatency,
-             "number of overall MSHR uncacheable cycles"),
-    ADD_STAT(demandMshrMissRate, "mshr miss rate for demand accesses"),
-    ADD_STAT(overallMshrMissRate, "mshr miss rate for overall accesses"),
- ADD_STAT(demandAvgMshrMissLatency, "average overall mshr miss latency"), - ADD_STAT(overallAvgMshrMissLatency, "average overall mshr miss latency"),
-    ADD_STAT(overallAvgMshrUncacheableLatency,
-             "average overall mshr uncacheable latency"),
-    ADD_STAT(replacements, "number of replacements"),
-    ADD_STAT(dataExpansions, "number of data expansions"),
-    ADD_STAT(dataContractions, "number of data contractions"),
+    ADD_STAT_WITH_UNIT(demandHits, UNIT_COUNT,
+                       "number of demand (read+write) hits"),
+    ADD_STAT_WITH_UNIT(overallHits, UNIT_COUNT, "number of overall hits"),
+    ADD_STAT_WITH_UNIT(demandMisses, UNIT_COUNT,
+                       "number of demand (read+write) misses"),
+ ADD_STAT_WITH_UNIT(overallMisses, UNIT_COUNT, "number of overall misses"),
+    ADD_STAT_WITH_UNIT(demandMissLatency, UNIT_CYCLE,
+                       "number of demand (read+write) miss cycles"),
+    ADD_STAT_WITH_UNIT(overallMissLatency, UNIT_CYCLE,
+                       "number of overall miss cycles"),
+    ADD_STAT_WITH_UNIT(demandAccesses, UNIT_COUNT,
+                       "number of demand (read+write) accesses"),
+    ADD_STAT_WITH_UNIT(overallAccesses, UNIT_COUNT,
+                       "number of overall (read+write) accesses"),
+    ADD_STAT_WITH_UNIT(demandMissRate, UNIT_RATIO(Stats::Units::Count),
+                       "miss rate for demand accesses"),
+    ADD_STAT_WITH_UNIT(overallMissRate, UNIT_RATIO(Stats::Units::Count),
+                       "miss rate for overall accesses"),
+    ADD_STAT_WITH_UNIT(demandAvgMissLatency,
+                       UNIT_RATE(Stats::Units::Cycle, Stats::Units::Count),
+                       "average overall miss latency"),
+    ADD_STAT_WITH_UNIT(overallAvgMissLatency,
+                       UNIT_RATE(Stats::Units::Cycle, Stats::Units::Count),
+                       "average overall miss latency"),
+    ADD_STAT_WITH_UNIT(blocked_cycles, UNIT_COUNT,
+                       "number of cycles access was blocked"),
+    ADD_STAT_WITH_UNIT(blocked_causes, UNIT_COUNT,
+                       "number of cycles access was blocked"),
+    ADD_STAT_WITH_UNIT(avg_blocked,
+                       UNIT_RATE(Stats::Units::Cycle, Stats::Units::Count),
+                       "average number of cycles each access was blocked"),
+    ADD_STAT_WITH_UNIT(unusedPrefetches, UNIT_COUNT,
+                       "number of HardPF blocks evicted w/o reference"),
+    ADD_STAT_WITH_UNIT(writebacks, UNIT_COUNT, "number of writebacks"),
+    ADD_STAT_WITH_UNIT(demandMshrHits, UNIT_COUNT,
+                       "number of demand (read+write) MSHR hits"),
+    ADD_STAT_WITH_UNIT(overallMshrHits, UNIT_COUNT,
+                       "number of overall MSHR hits"),
+    ADD_STAT_WITH_UNIT(demandMshrMisses, UNIT_COUNT,
+                       "number of demand (read+write) MSHR misses"),
+    ADD_STAT_WITH_UNIT(overallMshrMisses, UNIT_COUNT,
+                       "number of overall MSHR misses"),
+    ADD_STAT_WITH_UNIT(overallMshrUncacheable, UNIT_COUNT,
+                       "number of overall MSHR uncacheable misses"),
+    ADD_STAT_WITH_UNIT(demandMshrMissLatency, UNIT_CYCLE,
+                       "number of demand (read+write) MSHR miss cycles"),
+    ADD_STAT_WITH_UNIT(overallMshrMissLatency, UNIT_CYCLE,
+                       "number of overall MSHR miss cycles"),
+    ADD_STAT_WITH_UNIT(overallMshrUncacheableLatency, UNIT_CYCLE,
+                       "number of overall MSHR uncacheable cycles"),
+    ADD_STAT_WITH_UNIT(demandMshrMissRate, UNIT_RATIO(Stats::Units::Count),
+                       "mshr miss rate for demand accesses"),
+ ADD_STAT_WITH_UNIT(overallMshrMissRate, UNIT_RATIO(Stats::Units::Count),
+                       "mshr miss rate for overall accesses"),
+    ADD_STAT_WITH_UNIT(demandAvgMshrMissLatency,
+                       UNIT_RATE(Stats::Units::Cycle, Stats::Units::Count),
+                       "average overall mshr miss latency"),
+    ADD_STAT_WITH_UNIT(overallAvgMshrMissLatency,
+                       UNIT_RATE(Stats::Units::Cycle, Stats::Units::Count),
+                       "average overall mshr miss latency"),
+    ADD_STAT_WITH_UNIT(overallAvgMshrUncacheableLatency,
+                       UNIT_RATE(Stats::Units::Cycle, Stats::Units::Count),
+                       "average overall mshr uncacheable latency"),
+    ADD_STAT_WITH_UNIT(replacements, UNIT_COUNT, "number of replacements"),
+    ADD_STAT_WITH_UNIT(dataExpansions, UNIT_COUNT,
+                       "number of data expansions"),
+    ADD_STAT_WITH_UNIT(dataContractions, UNIT_COUNT,
+                       "number of data contractions"),
     cmd(MemCmd::NUM_MEM_CMDS)
 {
     for (int idx = 0; idx < MemCmd::NUM_MEM_CMDS; ++idx)
diff --git a/src/mem/cache/tags/base.cc b/src/mem/cache/tags/base.cc
index b12fdf0..258c96f 100644
--- a/src/mem/cache/tags/base.cc
+++ b/src/mem/cache/tags/base.cc
@@ -216,18 +216,29 @@
     : Stats::Group(&_tags),
     tags(_tags),

-    ADD_STAT(tagsInUse, "Cycle average of tags in use"),
-    ADD_STAT(totalRefs, "Total number of references to valid blocks."),
-    ADD_STAT(sampledRefs, "Sample count of references to valid blocks."),
-    ADD_STAT(avgRefs, "Average number of references to valid blocks."),
-    ADD_STAT(warmupCycle, "Cycle when the warmup percentage was hit."),
-    ADD_STAT(occupancies, "Average occupied blocks per requestor"),
-    ADD_STAT(avgOccs, "Average percentage of cache occupancy"),
-    ADD_STAT(occupanciesTaskId, "Occupied blocks per task id"),
-    ADD_STAT(ageTaskId, "Occupied blocks per task id"),
- ADD_STAT(percentOccsTaskId, "Percentage of cache occupancy per task id"),
-    ADD_STAT(tagAccesses, "Number of tag accesses"),
-    ADD_STAT(dataAccesses, "Number of data accesses")
+    ADD_STAT_WITH_UNIT(tagsInUse,
+                       UNIT_RATE(Stats::Units::Count, Stats::Units::Cycle),
+                       "Cycle average of tags in use"),
+    ADD_STAT_WITH_UNIT(totalRefs, UNIT_COUNT,
+                       "Total number of references to valid blocks."),
+    ADD_STAT_WITH_UNIT(sampledRefs, UNIT_COUNT,
+                       "Sample count of references to valid blocks."),
+    ADD_STAT_WITH_UNIT(avgRefs, UNIT_RATIO(Stats::Units::Count),
+                       "Average number of references to valid blocks."),
+    ADD_STAT_WITH_UNIT(warmupCycle, UNIT_TICK,
+                       "Cycle when the warmup percentage was hit."),
+    ADD_STAT_WITH_UNIT(occupancies,
+                       UNIT_RATE(Stats::Units::Count, Stats::Units::Cycle),
+                       "Average occupied blocks per requestor"),
+    ADD_STAT_WITH_UNIT(avgOccs, UNIT_RATIO(Stats::Units::Count),
+                       "Average percentage of cache occupancy"),
+    ADD_STAT_WITH_UNIT(occupanciesTaskId, UNIT_COUNT,
+                       "Occupied blocks per task id"),
+ ADD_STAT_WITH_UNIT(ageTaskId, UNIT_COUNT, "Occupied blocks per task id"),
+    ADD_STAT_WITH_UNIT(percentOccsTaskId, UNIT_RATIO(Stats::Units::Count),
+                       "Percentage of cache occupancy per task id"),
+    ADD_STAT_WITH_UNIT(tagAccesses, UNIT_COUNT, "Number of tag accesses"),
+    ADD_STAT_WITH_UNIT(dataAccesses, UNIT_COUNT, "Number of data accesses")
 {
 }

diff --git a/src/mem/coherent_xbar.cc b/src/mem/coherent_xbar.cc
index ae12fdc..7130d57 100644
--- a/src/mem/coherent_xbar.cc
+++ b/src/mem/coherent_xbar.cc
@@ -60,9 +60,10 @@
       pointOfCoherency(p.point_of_coherency),
       pointOfUnification(p.point_of_unification),

-      ADD_STAT(snoops, "Total snoops (count)"),
-      ADD_STAT(snoopTraffic, "Total snoop traffic (bytes)"),
-      ADD_STAT(snoopFanout, "Request fanout histogram")
+      ADD_STAT_WITH_UNIT(snoops, UNIT_COUNT, "Total snoops (count)"),
+      ADD_STAT_WITH_UNIT(snoopTraffic, UNIT_BYTE,
+                         "Total snoop traffic (bytes)"),
+ ADD_STAT_WITH_UNIT(snoopFanout, UNIT_COUNT, "Request fanout histogram")
 {
     // create the ports based on the size of the memory-side port and
     // CPU-side port vector ports, and the presence of the default port,
diff --git a/src/mem/ruby/slicc_interface/AbstractController.cc b/src/mem/ruby/slicc_interface/AbstractController.cc
index 5d006da..ac07b94 100644
--- a/src/mem/ruby/slicc_interface/AbstractController.cc
+++ b/src/mem/ruby/slicc_interface/AbstractController.cc
@@ -423,9 +423,10 @@
 AbstractController::
 ControllerStats::ControllerStats(Stats::Group *parent)
     : Stats::Group(parent),
-      ADD_STAT(m_fully_busy_cycles,
- "cycles for which number of transistions == max transitions"),
-      ADD_STAT(m_delayHistogram, "delay_histogram")
+      ADD_STAT_WITH_UNIT(m_fully_busy_cycles, UNIT_CYCLE,
+                         "cycles for which number of transistions == max "
+                         "transitions"),
+      ADD_STAT_WITH_UNIT(m_delayHistogram, UNIT_CYCLE, "delay_histogram")
 {
     m_fully_busy_cycles
         .flags(Stats::nozero);
diff --git a/src/mem/ruby/structures/RubyPrefetcher.cc b/src/mem/ruby/structures/RubyPrefetcher.cc
index 7848b14..5ec6289 100644
--- a/src/mem/ruby/structures/RubyPrefetcher.cc
+++ b/src/mem/ruby/structures/RubyPrefetcher.cc
@@ -66,17 +66,23 @@
 RubyPrefetcher::
 RubyPrefetcherStats::RubyPrefetcherStats(Stats::Group *parent)
     : Stats::Group(parent, "RubyPrefetcher"),
-      ADD_STAT(numMissObserved, "Number of misses observed"),
-      ADD_STAT(numAllocatedStreams, "Number of streams allocated for "
-                                    "prefetching"),
-      ADD_STAT(numPrefetchRequested, "Number of prefetch requests made"),
-      ADD_STAT(numHits, "Number of prefetched blocks accessed "
-                        "(for the first time)"),
- ADD_STAT(numPartialHits, "Number of misses observed for a block being "
-                               "prefetched"),
-      ADD_STAT(numPagesCrossed, "Number of prefetches across pages"),
- ADD_STAT(numMissedPrefetchedBlocks, "Number of misses for blocks that "
-                                          "were prefetched, yet missed")
+      ADD_STAT_WITH_UNIT(numMissObserved, UNIT_COUNT,
+                         "Number of misses observed"),
+      ADD_STAT_WITH_UNIT(numAllocatedStreams, UNIT_COUNT,
+                         "Number of streams allocated for prefetching"),
+      ADD_STAT_WITH_UNIT(numPrefetchRequested, UNIT_COUNT,
+                         "Number of prefetch requests made"),
+      ADD_STAT_WITH_UNIT(numHits, UNIT_COUNT,
+                         "Number of prefetched blocks accessed "
+                         "(for the first time)"),
+      ADD_STAT_WITH_UNIT(numPartialHits, UNIT_COUNT,
+                         "Number of misses observed for a block being "
+                         "prefetched"),
+      ADD_STAT_WITH_UNIT(numPagesCrossed, UNIT_COUNT,
+                         "Number of prefetches across pages"),
+      ADD_STAT_WITH_UNIT(numMissedPrefetchedBlocks, UNIT_COUNT,
+ "Number of misses for blocks that were prefetched, "
+                         "yet missed")
 {
 }

diff --git a/src/mem/ruby/system/HTMSequencer.cc b/src/mem/ruby/system/HTMSequencer.cc
index 15071fa..52c2f4d 100644
--- a/src/mem/ruby/system/HTMSequencer.cc
+++ b/src/mem/ruby/system/HTMSequencer.cc
@@ -64,11 +64,13 @@

 HTMSequencer::HTMSequencer(const RubyHTMSequencerParams &p)
     : Sequencer(p),
- ADD_STAT(m_htm_transaction_cycles, "number of cycles spent in an outer "
-                                         "transaction"),
- ADD_STAT(m_htm_transaction_instructions, "number of instructions spent "
-                                               "in an outer transaction"),
- ADD_STAT(m_htm_transaction_abort_cause, "cause of htm transaction abort")
+      ADD_STAT_WITH_UNIT(m_htm_transaction_cycles, UNIT_CYCLE,
+                        "number of cycles spent in an outer transaction"),
+      ADD_STAT_WITH_UNIT(m_htm_transaction_instructions, UNIT_COUNT,
+                         "number of instructions spent in an outer "
+                         "transaction"),
+      ADD_STAT_WITH_UNIT(m_htm_transaction_abort_cause, UNIT_COUNT,
+                         "cause of htm transaction abort")
 {
     m_htmstart_tick = 0;
     m_htmstart_instruction = 0;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/39276
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: Iab214b5d08eb1accc2b35af0c3aed7d30df5b5f3
Gerrit-Change-Number: 39276
Gerrit-PatchSet: 1
Gerrit-Owner: Hoa Nguyen <hoangu...@ucdavis.edu>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to