diff options
Diffstat (limited to 'cpu/simple_cpu/simple_cpu.cc')
-rw-r--r-- | cpu/simple_cpu/simple_cpu.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/cpu/simple_cpu/simple_cpu.cc b/cpu/simple_cpu/simple_cpu.cc index 4b9a7c6bd..aaf8a9dc5 100644 --- a/cpu/simple_cpu/simple_cpu.cc +++ b/cpu/simple_cpu/simple_cpu.cc @@ -247,7 +247,7 @@ SimpleCPU::setStatus(Status new_status) case Idle: assert(old_status == Running); - idleFraction++; + notIdleFraction--; if (tickEvent.scheduled()) tickEvent.squash(); break; @@ -256,8 +256,8 @@ SimpleCPU::setStatus(Status new_status) assert(old_status == Idle || old_status == DcacheMissStall || old_status == IcacheMissComplete); - if (old_status == Idle && curTick != 0) - idleFraction--; + if (old_status == Idle) + notIdleFraction++; if (tickEvent.squashed()) tickEvent.reschedule(curTick + 1); @@ -304,6 +304,7 @@ SimpleCPU::regStats() .prereq(dcacheStallCycles) ; + idleFraction = constant(1.0) - notIdleFraction; numInsts = Statistics::scalar(numInst) - Statistics::scalar(startNumInst); simInsts += numInsts; } @@ -312,6 +313,7 @@ void SimpleCPU::resetStats() { startNumInst = numInst; + notIdleFraction = (_status != Idle); } void |