diff --git a/src/cpu/minor/cpu.cc b/src/cpu/minor/cpu.cc index de74256307..0af81c53be 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 5de820d3bb..b43a4a1d69 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"); + quiesceCycles.prereq(quiesceCycles); - numOps - .name(name + ".committedOps") - .desc("Number of ops (including micro ops) committed"); + cpi.precision(6); + cpi = base_cpu->numCycles / numInsts; - 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); - - cpi - .name(name + ".cpi") - .desc("CPI: cycles per instruction") - .precision(6); - cpi = baseCpu.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 3ee678aa76..e42b56f827 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); }; }