summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/minor/execute.cc2
-rw-r--r--src/cpu/minor/stats.cc7
-rw-r--r--src/cpu/minor/stats.hh3
3 files changed, 12 insertions, 0 deletions
diff --git a/src/cpu/minor/execute.cc b/src/cpu/minor/execute.cc
index 0a2c4b8c8..4298e1dcc 100644
--- a/src/cpu/minor/execute.cc
+++ b/src/cpu/minor/execute.cc
@@ -849,6 +849,8 @@ Execute::doInstCommitAccounting(MinorDynInstPtr inst)
thread->numOp++;
thread->numOps++;
cpu.stats.numOps++;
+ cpu.stats.committedInstType[inst->id.threadId]
+ [inst->staticInst->opClass()]++;
/* Set the CP SeqNum to the numOps commit number */
if (inst->traceData)
diff --git a/src/cpu/minor/stats.cc b/src/cpu/minor/stats.cc
index baa0aa7f3..7048737e0 100644
--- a/src/cpu/minor/stats.cc
+++ b/src/cpu/minor/stats.cc
@@ -82,6 +82,13 @@ MinorStats::regStats(const std::string &name, BaseCPU &baseCpu)
.desc("IPC: instructions per cycle")
.precision(6);
ipc = numInsts / baseCpu.numCycles;
+
+ committedInstType
+ .init(baseCpu.numThreads, Enums::Num_OpClass)
+ .name(name + ".op_class")
+ .desc("Class of committed instruction")
+ .flags(Stats::total | Stats::pdf | Stats::dist);
+ committedInstType.ysubnames(Enums::OpClassStrings);
}
};
diff --git a/src/cpu/minor/stats.hh b/src/cpu/minor/stats.hh
index dc246304d..c2f7e5f6d 100644
--- a/src/cpu/minor/stats.hh
+++ b/src/cpu/minor/stats.hh
@@ -76,6 +76,9 @@ class MinorStats
Stats::Formula cpi;
Stats::Formula ipc;
+ /** Number of instructions by type (OpClass) */
+ Stats::Vector2d committedInstType;
+
public:
MinorStats();