arm: Add TLB PMU probes
authorAndreas Sandberg <Andreas.Sandberg@ARM.com>
Thu, 16 Oct 2014 09:49:41 +0000 (05:49 -0400)
committerAndreas Sandberg <Andreas.Sandberg@ARM.com>
Thu, 16 Oct 2014 09:49:41 +0000 (05:49 -0400)
This changeset adds probe points that can be used to implement PMU
counters for TLB stats. The following probes are supported:

* ArmISA::TLB::ppRefills / TLB Refills (TLB insertions)

src/arch/arm/tlb.cc
src/arch/arm/tlb.hh

index 94343c1c21ad58f62a8f1cff59b9678ce19eda20..7f296e7cf4c778644b5cc7a6ed47fc52c6e92664 100644 (file)
@@ -197,6 +197,7 @@ TLB::insert(Addr addr, TlbEntry &entry)
     table[0] = entry;
 
     inserts++;
+    ppRefills->notify(1);
 }
 
 void
@@ -531,6 +532,12 @@ TLB::regStats()
     accesses = readAccesses + writeAccesses + instAccesses;
 }
 
+void
+TLB::regProbePoints()
+{
+    ppRefills.reset(new ProbePoints::PMU(getProbeManager(), "Refills"));
+}
+
 Fault
 TLB::translateSe(RequestPtr req, ThreadContext *tc, Mode mode,
                  Translation *translation, bool &delay, bool timing)
index b9025fa5f42ff8ff3620fa0297b23921a8656822..06a51e5dae139eeb32bae8df8381084ae1ebd239 100644 (file)
@@ -53,6 +53,7 @@
 #include "mem/request.hh"
 #include "params/ArmTLB.hh"
 #include "sim/fault_fwd.hh"
+#include "sim/probe/pmu.hh"
 #include "sim/tlb.hh"
 
 class ThreadContext;
@@ -131,6 +132,9 @@ class TLB : public BaseTLB
     Stats::Formula misses;
     Stats::Formula accesses;
 
+    /** PMU probe for TLB refills */
+    ProbePoints::PMUUPtr ppRefills;
+
     int rangeMRU; //On lookup, only move entries ahead when outside rangeMRU
 
     bool bootUncacheability;
@@ -291,6 +295,8 @@ class TLB : public BaseTLB
 
     void regStats();
 
+    void regProbePoints() M5_ATTR_OVERRIDE;
+
     /**
      * Get the table walker master port. This is used for migrating
      * port connections during a CPU takeOverFrom() call. For