diff options
Diffstat (limited to 'cpu/simple_cpu')
-rw-r--r-- | cpu/simple_cpu/simple_cpu.cc | 12 | ||||
-rw-r--r-- | cpu/simple_cpu/simple_cpu.hh | 5 |
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; |