Richard Cooper has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/69958?usp=email )

Change subject: arch-arm: Add option to dump & reset stats on Arm PMU interrupt
......................................................................

arch-arm: Add option to dump & reset stats on Arm PMU interrupt

Add an option `dumpStatsOnInterrupt` to ArmPMU.

This feature allows the PMU to be used to control the run of sampled
workloads which must run for a specified number of warmup and live
instructions. The stats will be reset when the PMU interrupts used to
count the instructions stream are triggered.

Change-Id: Ife02fe8e467dec91a2d4fda3f7dc9540a092f1ec
---
M src/arch/arm/ArmPMU.py
M src/arch/arm/pmu.cc
M src/arch/arm/pmu.hh
3 files changed, 14 insertions(+), 1 deletion(-)



diff --git a/src/arch/arm/ArmPMU.py b/src/arch/arm/ArmPMU.py
index 3eaed07..13c2e0b 100644
--- a/src/arch/arm/ArmPMU.py
+++ b/src/arch/arm/ArmPMU.py
@@ -221,5 +221,9 @@
     # full implementation of FEAT_PMUv3p5.
     use64bitCounters = Param.Bool(
         False,
- "Choose whether to use 64-bit or " "32-bit PMEVCNTR<n>_EL0 registers.", + "Choose whether to use 64-bit or 32-bit PMEVCNTR<n>_EL0 registers.",
+    )
+
+    dumpStatsOnInterrupt = Param.Bool(
+        False, "Dump and reset staticstics on PMU interrupt."
     )
diff --git a/src/arch/arm/pmu.cc b/src/arch/arm/pmu.cc
index 89dc2c8..b2c3147 100644
--- a/src/arch/arm/pmu.cc
+++ b/src/arch/arm/pmu.cc
@@ -46,6 +46,7 @@
 #include "dev/arm/base_gic.hh"
 #include "dev/arm/generic_timer.hh"
 #include "params/ArmPMU.hh"
+#include "sim/stat_control.hh"

 namespace gem5
 {
@@ -57,6 +58,7 @@
 PMU::PMU(const ArmPMUParams &p)
     : SimObject(p), BaseISADevice(),
       use64bitCounters(p.use64bitCounters),
+      dumpStatsOnInterrupt(p.dumpStatsOnInterrupt),
       reg_pmcnten(0), reg_pmcr(0),
       reg_pmselr(0), reg_pminten(0), reg_pmovsr(0),
       reg_pmceid0(0),reg_pmceid1(0),
@@ -660,6 +662,10 @@
 void
 PMU::raiseInterrupt()
 {
+    if (dumpStatsOnInterrupt) {
+        // Dump stats, with reset, at curTick(), no-repeat
+        statistics::schedStatEvent(true, true, curTick(), false);
+    }
     if (interrupt) {
         DPRINTF(PMUVerbose, "Delivering PMU interrupt.\n");
         interrupt->raise();
diff --git a/src/arch/arm/pmu.hh b/src/arch/arm/pmu.hh
index ec60c6b..3594e8e 100644
--- a/src/arch/arm/pmu.hh
+++ b/src/arch/arm/pmu.hh
@@ -576,6 +576,9 @@
     /** Determine whether to use 64-bit or 32-bit counters. */
     bool use64bitCounters;

+    /** Dump and reset statistics on PMU interrupt. */
+    bool dumpStatsOnInterrupt;
+
     /** Performance Monitor Count Enable Register */
     RegVal reg_pmcnten;


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

Gerrit-MessageType: newchange
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ife02fe8e467dec91a2d4fda3f7dc9540a092f1ec
Gerrit-Change-Number: 69958
Gerrit-PatchSet: 1
Gerrit-Owner: Richard Cooper <richard.coo...@arm.com>
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org

Reply via email to