changeset a42b8d98fddc in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=a42b8d98fddc
description:
        arm: Add helper methods to setup architected PMU events

diffstat:

 src/arch/arm/ArmPMU.py |  53 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diffs (63 lines):

diff -r 2a0fe8bca031 -r a42b8d98fddc src/arch/arm/ArmPMU.py
--- a/src/arch/arm/ArmPMU.py    Thu Oct 16 05:49:41 2014 -0400
+++ b/src/arch/arm/ArmPMU.py    Thu Oct 16 05:49:42 2014 -0400
@@ -78,6 +78,59 @@
         for name in args:
             self._deferred_event_types.append((event_id, obj, name))
 
+    def addArchEvents(self,
+                      cpu=None,
+                      itb=None, dtb=None,
+                      icache=None, dcache=None,
+                      l2cache=None):
+        """Add architected events to the PMU.
+
+        This method can be called multiple times with only a subset of
+        the keyword arguments set. This enables event registration in
+        configuration scripts to happen closer to the instantiation of
+        the instrumented objects (e.g., the memory system) instead of
+        a central point.
+
+        CPU events should also be registered once per CPU that is
+        sharing the PMU (e.g., when switching between CPU models).
+        """
+
+        bpred = cpu.branchPred if cpu and not isNullPointer(cpu.branchPred) \
+            else None
+
+        # 0x01: L1I_CACHE_REFILL
+        self.addEventProbe(0x02, itb, "Refills")
+        # 0x03: L2D_CACHE_REFILL
+        # 0x04: L1D_CACHE
+        self.addEventProbe(0x05, dtb, "Refills")
+        self.addEventProbe(0x06, cpu, "RetiredLoads")
+        self.addEventProbe(0x07, cpu, "RetiredStores")
+        self.addEventProbe(0x08, cpu, "RetiredInsts")
+        # 0x09: EXC_TAKEN
+        # 0x0A: EXC_RETURN
+        # 0x0B: CID_WRITE_RETIRED
+        self.addEventProbe(0x0C, cpu, "RetiredBranches")
+        # 0x0D: BR_IMMED_RETIRED
+        # 0x0E: BR_RETURN_RETIRED
+        # 0x0F: UNALIGEND_LDST_RETIRED
+        self.addEventProbe(0x10, bpred, "Misses")
+        self.addEventProbe(0x11, cpu, "Cycles")
+        self.addEventProbe(0x12, bpred, "Branches")
+        self.addEventProbe(0x13, cpu, "RetiredLoads", "RetiredStores")
+        # 0x14: L1I_CACHE
+        # 0x15: L1D_CACHE_WB
+        # 0x16: L2D_CACHE
+        # 0x17: L2D_CACHE_REFILL
+        # 0x18: L2D_CACHE_WB
+        # 0x19: BUS_ACCESS
+        # 0x1A: MEMORY_ERROR
+        # 0x1B: INST_SPEC
+        # 0x1C: TTBR_WRITE_RETIRED
+        # 0x1D: BUS_CYCLES
+        # 0x1E: CHAIN
+        # 0x1F: L1D_CACHE_ALLOCATE
+        # 0x20: L2D_CACHE_ALLOCATE
+
     platform = Param.Platform(Parent.any, "Platform this device is part of.")
     eventCounters = Param.Int(31, "Number of supported PMU counters")
     pmuInterrupt = Param.Int(68, "PMU GIC interrupt number")
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to