From 1d7c11af7d876e758e7afce47782563aefdcdcc7 Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Mon, 8 Dec 2003 14:01:48 -0500 Subject: 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 --- cpu/simple_cpu/simple_cpu.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'cpu/simple_cpu/simple_cpu.cc') 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 -- cgit v1.2.3