From 7bab96da671cd2ada6d2a1e3db2707c933247934 Mon Sep 17 00:00:00 2001 From: eavivi Date: Tue, 25 Aug 2020 17:18:28 -0700 Subject: [PATCH] cpu: convert thread_state to new style stats Change-Id: Ib8cc8633ca5fced63918a7a6d10e15126f7c7459 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33400 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/cpu/minor/execute.cc | 4 ++-- src/cpu/o3/cpu.cc | 4 ++-- src/cpu/thread_state.cc | 13 ++++++++++++- src/cpu/thread_state.hh | 19 ++++++++++++------- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/cpu/minor/execute.cc b/src/cpu/minor/execute.cc index 3c94531ec..45ca00233 100644 --- a/src/cpu/minor/execute.cc +++ b/src/cpu/minor/execute.cc @@ -865,7 +865,7 @@ Execute::doInstCommitAccounting(MinorDynInstPtr inst) if (!inst->staticInst->isMicroop() || inst->staticInst->isLastMicroop()) { thread->numInst++; - thread->numInsts++; + thread->threadStats.numInsts++; cpu.stats.numInsts++; cpu.system->totalNumInsts++; @@ -873,7 +873,7 @@ Execute::doInstCommitAccounting(MinorDynInstPtr inst) thread->comInstEventQueue.serviceEvents(thread->numInst); } thread->numOp++; - thread->numOps++; + thread->threadStats.numOps++; cpu.stats.numOps++; cpu.stats.committedInstType[inst->id.threadId] [inst->staticInst->opClass()]++; diff --git a/src/cpu/o3/cpu.cc b/src/cpu/o3/cpu.cc index a525ea4c2..562a3324b 100644 --- a/src/cpu/o3/cpu.cc +++ b/src/cpu/o3/cpu.cc @@ -1512,7 +1512,7 @@ FullO3CPU::instDone(ThreadID tid, const DynInstPtr &inst) // Keep an instruction count. if (!inst->isMicroop() || inst->isLastMicroop()) { thread[tid]->numInst++; - thread[tid]->numInsts++; + thread[tid]->threadStats.numInsts++; committedInsts[tid]++; system->totalNumInsts++; @@ -1520,7 +1520,7 @@ FullO3CPU::instDone(ThreadID tid, const DynInstPtr &inst) thread[tid]->comInstEventQueue.serviceEvents(thread[tid]->numInst); } thread[tid]->numOp++; - thread[tid]->numOps++; + thread[tid]->threadStats.numOps++; committedOps[tid]++; probeInstCommit(inst->staticInst, inst->instAddr()); diff --git a/src/cpu/thread_state.cc b/src/cpu/thread_state.cc index f681abc57..a142f5741 100644 --- a/src/cpu/thread_state.cc +++ b/src/cpu/thread_state.cc @@ -39,7 +39,8 @@ #include "sim/system.hh" ThreadState::ThreadState(BaseCPU *cpu, ThreadID _tid, Process *_process) - : numInst(0), numOp(0), numLoad(0), startNumLoad(0), + : numInst(0), numOp(0), threadStats(cpu, this), + numLoad(0), startNumLoad(0), _status(ThreadContext::Halted), baseCpu(cpu), _contextId(0), _threadId(_tid), lastActivate(0), lastSuspend(0), process(_process), physProxy(NULL), virtProxy(NULL), @@ -116,3 +117,13 @@ ThreadState::getVirtProxy() assert(virtProxy != NULL); return *virtProxy; } + +ThreadState::ThreadStateStats::ThreadStateStats(BaseCPU *cpu, + ThreadState *thread) + : Stats::Group(cpu, csprintf("thread%i", thread->threadId()).c_str()), + ADD_STAT(numInsts, "Number of Instructions committed"), + ADD_STAT(numOps, "Number of Ops committed"), + ADD_STAT(numMemRefs, "Number of Memory References") +{ + +} diff --git a/src/cpu/thread_state.hh b/src/cpu/thread_state.hh index 1cc92a175..3ac473dce 100644 --- a/src/cpu/thread_state.hh +++ b/src/cpu/thread_state.hh @@ -106,14 +106,19 @@ struct ThreadState : public Serializable { /** Number of instructions committed. */ Counter numInst; - /** Stat for number instructions committed. */ - Stats::Scalar numInsts; - /** Number of ops (including micro ops) committed. */ + /** Number of ops (including micro ops) committed. */ Counter numOp; - /** Stat for number ops (including micro ops) committed. */ - Stats::Scalar numOps; - /** Stat for number of memory references. */ - Stats::Scalar numMemRefs; + // Defining the stat group + struct ThreadStateStats : public Stats::Group + { + ThreadStateStats(BaseCPU *cpu, ThreadState *thread); + /** Stat for number instructions committed. */ + Stats::Scalar numInsts; + /** Stat for number ops (including micro ops) committed. */ + Stats::Scalar numOps; + /** Stat for number of memory references. */ + Stats::Scalar numMemRefs; + } threadStats; /** Number of simulated loads, used for tracking events based on * the number of loads committed. -- 2.30.2