summaryrefslogtreecommitdiff
path: root/src/cpu/inorder/cpu.cc
diff options
context:
space:
mode:
authorKorey Sewell <ksewell@umich.edu>2010-01-31 18:28:51 -0500
committerKorey Sewell <ksewell@umich.edu>2010-01-31 18:28:51 -0500
commitffa9ecb1fa71f1fe89a65975b2c558e312bbfbc8 (patch)
treeadbae9144a62e3a25720954b48feb4de8c46f259 /src/cpu/inorder/cpu.cc
parent4d749472e3cb97ff0421fbf5cbc53d9c89ecfa45 (diff)
downloadgem5-ffa9ecb1fa71f1fe89a65975b2c558e312bbfbc8.tar.xz
inorder: pipeline stage stats
add idle/run/utilization stats for each pipeline stage
Diffstat (limited to 'src/cpu/inorder/cpu.cc')
-rw-r--r--src/cpu/inorder/cpu.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/cpu/inorder/cpu.cc b/src/cpu/inorder/cpu.cc
index d8fea79d9..4cc9b9f22 100644
--- a/src/cpu/inorder/cpu.cc
+++ b/src/cpu/inorder/cpu.cc
@@ -346,6 +346,11 @@ InOrderCPU::regStats()
.prereq(maxResReqCount);
#endif
+ /* Register for each Pipeline Stage */
+ for (int stage_num=0; stage_num < ThePipeline::NumStages; stage_num++) {
+ pipelineStage[stage_num]->regStats();
+ }
+
/* Register any of the InOrderCPU's stats here.*/
timesIdled
.name(name() + ".timesIdled")
@@ -1289,8 +1294,14 @@ InOrderCPU::wakeCPU()
DPRINTF(Activity, "Waking up CPU\n");
- //@todo: figure out how to count idleCycles correctly
- //idleCycles += (curTick - 1) - lastRunningCycle;
+ Tick extra_cycles = tickToCycles((curTick - 1) - lastRunningCycle);
+
+ idleCycles += extra_cycles;
+ for (int stage_num = 0; stage_num < NumStages; stage_num++) {
+ pipelineStage[stage_num]->idleCycles += extra_cycles;
+ }
+
+ numCycles += extra_cycles;
mainEventQueue.schedule(&tickEvent, curTick);
}