From: Hoa Nguyen Date: Sat, 17 Oct 2020 10:48:22 +0000 (-0700) Subject: cpu,stats: Fix incorrect stat names of ThreadStateStats X-Git-Tag: v20.1.0.2~1 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=14045cb39548cc44ecff2da18815129fe1c01a30;p=gem5.git cpu,stats: Fix incorrect stat names of ThreadStateStats Previously, ThreadStateStats uses ThreadState::threadId() to determine the name of the stats. However, in the ThreadState constructor, ThreadStateStats is initialized before ThreadState is intialized. As a result, the name of ThreadStateStats has a wrong ThreadID. This commit uses ThreadID instead of ThreadState to determine the name of the stats. This causes a name collision between ThreadStateStats and ExecContextStats as both have the name of "thread_[tid]". Ideally, those stats should be merged to the BaseSimpleCPU. However, both ThreadStateStats and ExecContextStats have a stat named numInsts. So, for now, ExecContextStats will have a name of "exec_context.thread_[tid]", while ThreadStateStats keeps its name. Change-Id: If9a21549f98bd6e3ce6dc29bdf183e8fd5f51a67 Signed-off-by: Hoa Nguyen Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/37455 Reviewed-by: Bobby R. Bruce Maintainer: Bobby R. Bruce Tested-by: kokoro --- diff --git a/src/cpu/thread_state.cc b/src/cpu/thread_state.cc index a142f5741..5e59eb258 100644 --- a/src/cpu/thread_state.cc +++ b/src/cpu/thread_state.cc @@ -39,7 +39,7 @@ #include "sim/system.hh" ThreadState::ThreadState(BaseCPU *cpu, ThreadID _tid, Process *_process) - : numInst(0), numOp(0), threadStats(cpu, this), + : numInst(0), numOp(0), threadStats(cpu, _tid), numLoad(0), startNumLoad(0), _status(ThreadContext::Halted), baseCpu(cpu), _contextId(0), _threadId(_tid), lastActivate(0), lastSuspend(0), @@ -119,8 +119,8 @@ ThreadState::getVirtProxy() } ThreadState::ThreadStateStats::ThreadStateStats(BaseCPU *cpu, - ThreadState *thread) - : Stats::Group(cpu, csprintf("thread%i", thread->threadId()).c_str()), + const ThreadID& tid) + : Stats::Group(cpu, csprintf("thread_%i", tid).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 3ac473dce..53817c840 100644 --- a/src/cpu/thread_state.hh +++ b/src/cpu/thread_state.hh @@ -111,7 +111,7 @@ struct ThreadState : public Serializable { // Defining the stat group struct ThreadStateStats : public Stats::Group { - ThreadStateStats(BaseCPU *cpu, ThreadState *thread); + ThreadStateStats(BaseCPU *cpu, const ThreadID& thread); /** Stat for number instructions committed. */ Stats::Scalar numInsts; /** Stat for number ops (including micro ops) committed. */