diff options
author | Mitch Hayenga <mitch.hayenga@arm.com> | 2016-04-05 08:08:12 -0500 |
---|---|---|
committer | Mitch Hayenga <mitch.hayenga@arm.com> | 2016-04-05 08:08:12 -0500 |
commit | 85dadcd38133252652686b92c52cc6a38c90331c (patch) | |
tree | 8c87dfd7f98a7825af1f07e7a615b89fa7620b8f /src/cpu | |
parent | 774350b750a3d34ed55f0846d0cd8f8fc4b3897d (diff) | |
download | gem5-85dadcd38133252652686b92c52cc6a38c90331c.tar.xz |
cpu: Add instruction opclass histogram to minor
Diffstat (limited to 'src/cpu')
-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(); |