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