summaryrefslogtreecommitdiff
path: root/src/cpu
diff options
context:
space:
mode:
authorMitch Hayenga <mitch.hayenga@arm.com>2016-04-05 08:08:12 -0500
committerMitch Hayenga <mitch.hayenga@arm.com>2016-04-05 08:08:12 -0500
commit85dadcd38133252652686b92c52cc6a38c90331c (patch)
tree8c87dfd7f98a7825af1f07e7a615b89fa7620b8f /src/cpu
parent774350b750a3d34ed55f0846d0cd8f8fc4b3897d (diff)
downloadgem5-85dadcd38133252652686b92c52cc6a38c90331c.tar.xz
cpu: Add instruction opclass histogram to minor
Diffstat (limited to 'src/cpu')
-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();