From a71f3e1a29900fcc0ac90278e6426214e96a254a Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Wed, 14 Oct 2020 19:40:26 -0700 Subject: [PATCH] cpu-minor,stats: Update stats style of MinorCPU Change-Id: Id14e6816cc82603459bf68461ae40bf2b63080eb Signed-off-by: Hoa Nguyen Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/36075 Reviewed-by: Daniel Carvalho Maintainer: Giacomo Travaglini Tested-by: kokoro --- src/cpu/minor/cpu.cc | 4 +-- src/cpu/minor/stats.cc | 61 +++++++++++++++--------------------------- src/cpu/minor/stats.hh | 10 +++---- 3 files changed, 26 insertions(+), 49 deletions(-) diff --git a/src/cpu/minor/cpu.cc b/src/cpu/minor/cpu.cc index de7425630..0af81c53b 100644 --- a/src/cpu/minor/cpu.cc +++ b/src/cpu/minor/cpu.cc @@ -47,7 +47,8 @@ MinorCPU::MinorCPU(const MinorCPUParams ¶ms) : BaseCPU(params), - threadPolicy(params.threadPolicy) + threadPolicy(params.threadPolicy), + stats(this) { /* This is only written for one thread at the moment */ Minor::MinorThread *thread; @@ -118,7 +119,6 @@ void MinorCPU::regStats() { BaseCPU::regStats(); - stats.regStats(name(), *this); pipeline->regStats(); } diff --git a/src/cpu/minor/stats.cc b/src/cpu/minor/stats.cc index 5de820d3b..b43a4a1d6 100644 --- a/src/cpu/minor/stats.cc +++ b/src/cpu/minor/stats.cc @@ -40,51 +40,32 @@ namespace Minor { -MinorStats::MinorStats() -{ } - -void -MinorStats::regStats(const std::string &name, BaseCPU &baseCpu) +MinorStats::MinorStats(BaseCPU *base_cpu) + : Stats::Group(base_cpu), + ADD_STAT(numInsts, "Number of instructions committed"), + ADD_STAT(numOps, "Number of ops (including micro ops) committed"), + ADD_STAT(numDiscardedOps, + "Number of ops (including micro ops) which were discarded before " + "commit"), + ADD_STAT(numFetchSuspends, + "Number of times Execute suspended instruction fetching"), + ADD_STAT(quiesceCycles, + "Total number of cycles that CPU has spent quiesced or waiting " + "for an interrupt"), + ADD_STAT(cpi, "CPI: cycles per instruction"), + ADD_STAT(ipc, "IPC: instructions per cycle"), + ADD_STAT(committedInstType, "Class of committed instruction") { - numInsts - .name(name + ".committedInsts") - .desc("Number of instructions committed"); - - numOps - .name(name + ".committedOps") - .desc("Number of ops (including micro ops) committed"); - - numDiscardedOps - .name(name + ".discardedOps") - .desc("Number of ops (including micro ops) which were discarded " - "before commit"); - - numFetchSuspends - .name(name + ".numFetchSuspends") - .desc("Number of times Execute suspended instruction fetching"); - - quiesceCycles - .name(name + ".quiesceCycles") - .desc("Total number of cycles that CPU has spent quiesced or waiting " - "for an interrupt") - .prereq(quiesceCycles); + quiesceCycles.prereq(quiesceCycles); - cpi - .name(name + ".cpi") - .desc("CPI: cycles per instruction") - .precision(6); - cpi = baseCpu.numCycles / numInsts; + cpi.precision(6); + cpi = base_cpu->numCycles / numInsts; - ipc - .name(name + ".ipc") - .desc("IPC: instructions per cycle") - .precision(6); - ipc = numInsts / baseCpu.numCycles; + ipc.precision(6); + ipc = numInsts / base_cpu->numCycles; committedInstType - .init(baseCpu.numThreads, Enums::Num_OpClass) - .name(name + ".op_class") - .desc("Class of committed instruction") + .init(base_cpu->numThreads, Enums::Num_OpClass) .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 3ee678aa7..e42b56f82 100644 --- a/src/cpu/minor/stats.hh +++ b/src/cpu/minor/stats.hh @@ -52,9 +52,10 @@ namespace Minor { /** Currently unused stats class. */ -class MinorStats +struct MinorStats : public Stats::Group { - public: + MinorStats(BaseCPU *parent); + /** Number of simulated instructions */ Stats::Scalar numInsts; @@ -77,11 +78,6 @@ class MinorStats /** Number of instructions by type (OpClass) */ Stats::Vector2d committedInstType; - public: - MinorStats(); - - public: - void regStats(const std::string &name, BaseCPU &baseCpu); }; } -- 2.30.2