Instead of keeping track of the fraction of time that we're

idle, keep track of the fraction of time we're not idle.  This
works better because the default processor state is idle, and
the default stat value is 0.
Keep the stat as idleFraction which is a formula that is equal
to 1 - notIdleFraction

--HG--
extra : convert_revision : 331c2e46f45ae0abda46988567ac2c4f7c42ccad
This commit is contained in:
Nathan Binkert
2003-12-08 14:01:48 -05:00
parent 0ff2457bfa
commit 1d7c11af7d
2 changed files with 7 additions and 4 deletions

View File

@@ -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

View File

@@ -193,7 +193,8 @@ class SimpleCPU : public BaseCPU
Counter startNumLoad;
// number of idle cycles
Statistics::Average<> idleFraction;
Statistics::Average<> notIdleFraction;
Statistics::Formula idleFraction;
// number of cycles stalled for I-cache misses
Statistics::Scalar<> icacheStallCycles;