summaryrefslogtreecommitdiff
path: root/cpu
diff options
context:
space:
mode:
Diffstat (limited to 'cpu')
-rw-r--r--cpu/simple_cpu/simple_cpu.cc12
-rw-r--r--cpu/simple_cpu/simple_cpu.hh5
2 files changed, 15 insertions, 2 deletions
diff --git a/cpu/simple_cpu/simple_cpu.cc b/cpu/simple_cpu/simple_cpu.cc
index 550b6c64f..a63f86098 100644
--- a/cpu/simple_cpu/simple_cpu.cc
+++ b/cpu/simple_cpu/simple_cpu.cc
@@ -159,7 +159,9 @@ SimpleCPU::SimpleCPU(const string &_name, Process *_process,
memReq->data = new uint8_t[64];
numInst = 0;
+ startNumInst = 0;
numLoad = 0;
+ startNumLoad = 0;
lastIcacheStall = 0;
lastDcacheStall = 0;
@@ -215,6 +217,8 @@ SimpleCPU::execCtxStatusChg(int thread_num) {
void
SimpleCPU::regStats()
{
+ using namespace Statistics;
+
BaseCPU::regStats();
numInsts
@@ -244,11 +248,17 @@ SimpleCPU::regStats()
.prereq(dcacheStallCycles)
;
- numInsts = Statistics::scalar(numInst);
+ numInsts = Statistics::scalar(numInst) - Statistics::scalar(startNumInst);
simInsts += numInsts;
}
void
+SimpleCPU::resetStats()
+{
+ startNumInst = numInst;
+}
+
+void
SimpleCPU::serialize(ostream &os)
{
SERIALIZE_ENUM(_status);
diff --git a/cpu/simple_cpu/simple_cpu.hh b/cpu/simple_cpu/simple_cpu.hh
index d69d4e8de..b0189349f 100644
--- a/cpu/simple_cpu/simple_cpu.hh
+++ b/cpu/simple_cpu/simple_cpu.hh
@@ -231,10 +231,12 @@ class SimpleCPU : public BaseCPU
}
// statistics
- void regStats();
+ virtual void regStats();
+ virtual void resetStats();
// number of simulated instructions
Counter numInst;
+ Counter startNumInst;
Statistics::Formula numInsts;
// number of simulated memory references
@@ -242,6 +244,7 @@ class SimpleCPU : public BaseCPU
// number of simulated loads
Counter numLoad;
+ Counter startNumLoad;
// number of idle cycles
Statistics::Average<> idleFraction;