summaryrefslogtreecommitdiff
path: root/src/cpu/o3
diff options
context:
space:
mode:
authorCurtis Dunham <Curtis.Dunham@arm.com>2014-05-09 18:58:47 -0400
committerCurtis Dunham <Curtis.Dunham@arm.com>2014-05-09 18:58:47 -0400
commit1028c03320c6c7822b8f5a32da2297c1be2d1487 (patch)
tree1b1688d2b4fbc9e5009af54a200243805169d820 /src/cpu/o3
parenta15b713cba52d9d4d2c1204fef050fb3856ca33e (diff)
downloadgem5-1028c03320c6c7822b8f5a32da2297c1be2d1487.tar.xz
cpu: add more instruction mix statistics
For the o3, add instruction mix (OpClass) histogram at commit (stats also already collected at issue). For the simple CPUs we add a histogram of executed instructions
Diffstat (limited to 'src/cpu/o3')
-rw-r--r--src/cpu/o3/commit.hh2
-rw-r--r--src/cpu/o3/commit_impl.hh9
2 files changed, 11 insertions, 0 deletions
diff --git a/src/cpu/o3/commit.hh b/src/cpu/o3/commit.hh
index cd663e2df..ba594a2d2 100644
--- a/src/cpu/o3/commit.hh
+++ b/src/cpu/o3/commit.hh
@@ -532,6 +532,8 @@ class DefaultCommit
Stats::Vector statComInteger;
/** Total number of function calls */
Stats::Vector statComFunctionCalls;
+ /** Committed instructions by instruction type (OpClass) */
+ Stats::Vector2d statCommittedInstType;
/** Number of cycles where the commit bandwidth limit is reached. */
Stats::Scalar commitEligibleSamples;
diff --git a/src/cpu/o3/commit_impl.hh b/src/cpu/o3/commit_impl.hh
index 35d21d071..333687c84 100644
--- a/src/cpu/o3/commit_impl.hh
+++ b/src/cpu/o3/commit_impl.hh
@@ -273,6 +273,14 @@ DefaultCommit<Impl>::regStats()
.flags(total)
;
+ statCommittedInstType
+ .init(numThreads,Enums::Num_OpClass)
+ .name(name() + ".op_class")
+ .desc("Class of committed instruction")
+ .flags(total | pdf | dist)
+ ;
+ statCommittedInstType.ysubnames(Enums::OpClassStrings);
+
commitEligible
.init(cpu->numThreads)
.name(name() + ".bw_limited")
@@ -1032,6 +1040,7 @@ DefaultCommit<Impl>::commitInsts()
if (commit_success) {
++num_committed;
+ statCommittedInstType[tid][head_inst->opClass()]++;
ppCommit->notify(head_inst);
changedROBNumEntries[tid] = true;