summaryrefslogtreecommitdiff
path: root/cpu/simple_cpu
diff options
context:
space:
mode:
authorNathan Binkert <binkertn@umich.edu>2003-12-08 14:01:48 -0500
committerNathan Binkert <binkertn@umich.edu>2003-12-08 14:01:48 -0500
commit1d7c11af7d876e758e7afce47782563aefdcdcc7 (patch)
treec42cad0e4b7b9aaa4abfdfb93c56a06f20a1354b /cpu/simple_cpu
parent0ff2457bfaa223c70d431d100c5b5a92540ff6e2 (diff)
downloadgem5-1d7c11af7d876e758e7afce47782563aefdcdcc7.tar.xz
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
Diffstat (limited to 'cpu/simple_cpu')
-rw-r--r--cpu/simple_cpu/simple_cpu.cc8
-rw-r--r--cpu/simple_cpu/simple_cpu.hh3
2 files changed, 7 insertions, 4 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
diff --git a/cpu/simple_cpu/simple_cpu.hh b/cpu/simple_cpu/simple_cpu.hh
index e497559ce..666fe490b 100644
--- a/cpu/simple_cpu/simple_cpu.hh
+++ b/cpu/simple_cpu/simple_cpu.hh
@@ -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;