Bobby Bruce has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/69103?usp=email )
Change subject: cpu-o3: Copy O3 IEW stats to BaseCPU::ExecuteCPUStats
......................................................................
cpu-o3: Copy O3 IEW stats to BaseCPU::ExecuteCPUStats
Move numInsts, numBranches, numNop, numRefs, numLoadInsts, numRate to
Base. Merged numRefs into numMemRefs of ExecuteCPUStats. Renamed
numRate to instRate. Updated formatting in ExecuteCPUStats group.
Change-Id: Ibe4c121ac1e04f1c989d4786a52acd5878a43df0
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/69103
Tested-by: kokoro <noreply+kok...@google.com>
Reviewed-by: Bobby Bruce <bbr...@ucdavis.edu>
Maintainer: Bobby Bruce <bbr...@ucdavis.edu>
---
M src/cpu/base.cc
M src/cpu/base.hh
M src/cpu/o3/iew.cc
3 files changed, 46 insertions(+), 2 deletions(-)
Approvals:
Bobby Bruce: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/cpu/base.cc b/src/cpu/base.cc
index 7c19307..e5a661b 100644
--- a/src/cpu/base.cc
+++ b/src/cpu/base.cc
@@ -203,7 +203,12 @@
baseStats.numCycles;
fetchStats.emplace_back(fetchStatptr);
- executeStats.emplace_back(new ExecuteCPUStats(this, i));
+ // create executeStat object for thread i and set rate formulas
+ ExecuteCPUStats* executeStatptr = new ExecuteCPUStats(this, i);
+ executeStatptr->instRate = executeStatptr->numInsts /
+ baseStats.numCycles;
+ executeStats.emplace_back(executeStatptr);
+
// create commitStat object for thread i and set ipc, cpi formulas
CommitCPUStats* commitStatptr = new CommitCPUStats(this, i);
commitStatptr->ipc = commitStatptr->numInsts / baseStats.numCycles;
@@ -899,6 +904,19 @@
BaseCPU::
ExecuteCPUStats::ExecuteCPUStats(statistics::Group *parent, int thread_id)
: statistics::Group(parent, csprintf("executeStats%i",
thread_id).c_str()),
+ ADD_STAT(numInsts, statistics::units::Count::get(),
+ "Number of executed instructions"),
+ ADD_STAT(numNop, statistics::units::Count::get(),
+ "Number of nop insts executed"),
+ ADD_STAT(numBranches, statistics::units::Count::get(),
+ "Number of branches executed"),
+ ADD_STAT(numLoadInsts, statistics::units::Count::get(),
+ "Number of load instructions executed"),
+ ADD_STAT(numStoreInsts, statistics::units::Count::get(),
+ "Number of stores executed"),
+ ADD_STAT(instRate, statistics::units::Rate<
+ statistics::units::Count, statistics::units::Cycle>::get(),
+ "Inst execution rate"),
ADD_STAT(dcacheStallCycles, statistics::units::Cycle::get(),
"DCache total stall cycles"),
ADD_STAT(numCCRegReads, statistics::units::Count::get(),
@@ -937,6 +955,8 @@
"Number of ops (including micro ops) which were discarded
before "
"commit")
{
+ numStoreInsts = numMemRefs - numLoadInsts;
+
dcacheStallCycles
.prereq(dcacheStallCycles);
numCCRegReads
diff --git a/src/cpu/base.hh b/src/cpu/base.hh
index 946ea6b..3976b66 100644
--- a/src/cpu/base.hh
+++ b/src/cpu/base.hh
@@ -717,6 +717,19 @@
{
ExecuteCPUStats(statistics::Group *parent, int thread_id);
+ /* Stat for total number of executed instructions */
+ statistics::Scalar numInsts;
+ /* Number of executed nops */
+ statistics::Scalar numNop;
+ /* Number of executed branches */
+ statistics::Scalar numBranches;
+ /* Stat for total number of executed load instructions */
+ statistics::Scalar numLoadInsts;
+ /* Number of executed store instructions */
+ statistics::Formula numStoreInsts;
+ /* Number of instructions executed per cycle */
+ statistics::Formula instRate;
+
/* Number of cycles stalled for D-cache responses */
statistics::Scalar dcacheStallCycles;
diff --git a/src/cpu/o3/iew.cc b/src/cpu/o3/iew.cc
index e67bc69..1b3598c 100644
--- a/src/cpu/o3/iew.cc
+++ b/src/cpu/o3/iew.cc
@@ -1053,7 +1053,9 @@
instQueue.recordProducer(inst);
+ // update both old and new stats
iewStats.executedInstStats.numNop[tid]++;
+ cpu->executeStats[tid]->numNop++;
add_to_iq = false;
} else {
@@ -1561,7 +1563,9 @@
{
ThreadID tid = inst->threadNumber;
+ // update both old and new stats
iewStats.executedInstStats.numInsts++;
+ cpu->executeStats[tid]->numInsts++;
#if TRACING_ON
if (debug::O3PipeView) {
@@ -1572,17 +1576,24 @@
//
// Control operations
//
- if (inst->isControl())
+ if (inst->isControl()) {
+ // update both old and new stats
iewStats.executedInstStats.numBranches[tid]++;
+ cpu->executeStats[tid]->numBranches++;
+ }
//
// Memory operations
//
if (inst->isMemRef()) {
+ // update both old and new stats
iewStats.executedInstStats.numRefs[tid]++;
+ cpu->executeStats[tid]->numMemRefs++;
if (inst->isLoad()) {
+ // update both old and new stats
iewStats.executedInstStats.numLoadInsts[tid]++;
+ cpu->executeStats[tid]->numLoadInsts++;
}
}
}
--
To view, visit
https://gem5-review.googlesource.com/c/public/gem5/+/69103?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ibe4c121ac1e04f1c989d4786a52acd5878a43df0
Gerrit-Change-Number: 69103
Gerrit-PatchSet: 11
Gerrit-Owner: Melissa Jost <melissakj...@gmail.com>
Gerrit-Reviewer: Bobby Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org