O3: Add stat that counts how many cycles the O3 cpu was quiesced.
--HG-- extra : rebase_source : 043b9307eef3c5b87f8e6370765641e016ed1fa7
This commit is contained in:
parent
93fb460fad
commit
1444103998
2 changed files with 16 additions and 0 deletions
|
@ -442,6 +442,12 @@ FullO3CPU<Impl>::regStats()
|
|||
"to idling")
|
||||
.prereq(idleCycles);
|
||||
|
||||
quiesceCycles
|
||||
.name(name() + ".quiesceCycles")
|
||||
.desc("Total number of cycles that CPU has spent quiesced or waiting "
|
||||
"for an interrupt")
|
||||
.prereq(quiesceCycles);
|
||||
|
||||
// Number of Instructions simulated
|
||||
// --------------------------------
|
||||
// Should probably be in Base CPU but need templated
|
||||
|
@ -688,6 +694,8 @@ FullO3CPU<Impl>::activateContext(ThreadID tid, int delay)
|
|||
activityRec.activity();
|
||||
fetch.wakeFromQuiesce();
|
||||
|
||||
quiesceCycles += tickToCycles((curTick() - 1) - lastRunningCycle);
|
||||
|
||||
lastActivatedCycle = curTick();
|
||||
|
||||
_status = Running;
|
||||
|
@ -722,6 +730,9 @@ FullO3CPU<Impl>::suspendContext(ThreadID tid)
|
|||
if ((activeThreads.size() == 1 && !deallocated) ||
|
||||
activeThreads.size() == 0)
|
||||
unscheduleTickEvent();
|
||||
|
||||
DPRINTF(Quiesce, "Suspending Context\n");
|
||||
lastRunningCycle = curTick();
|
||||
_status = Idle;
|
||||
}
|
||||
|
||||
|
@ -1205,6 +1216,8 @@ FullO3CPU<Impl>::takeOverFrom(BaseCPU *oldCPU)
|
|||
}
|
||||
if (!tickEvent.scheduled())
|
||||
schedule(tickEvent, nextCycle());
|
||||
|
||||
lastRunningCycle = curTick();
|
||||
}
|
||||
|
||||
template <class Impl>
|
||||
|
|
|
@ -720,6 +720,9 @@ class FullO3CPU : public BaseO3CPU
|
|||
Stats::Scalar timesIdled;
|
||||
/** Stat for total number of cycles the CPU spends descheduled. */
|
||||
Stats::Scalar idleCycles;
|
||||
/** Stat for total number of cycles the CPU spends descheduled due to a
|
||||
* quiesce operation or waiting for an interrupt. */
|
||||
Stats::Scalar quiesceCycles;
|
||||
/** Stat for the number of committed instructions per thread. */
|
||||
Stats::Vector committedInsts;
|
||||
/** Stat for the total number of committed instructions. */
|
||||
|
|
Loading…
Reference in a new issue