diff options
-rw-r--r-- | src/cpu/minor/execute.cc | 2 | ||||
-rw-r--r-- | src/cpu/minor/stats.cc | 7 | ||||
-rw-r--r-- | src/cpu/minor/stats.hh | 3 |
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(); |