cpu-minor: convert fetch2 to new style stats

Change-Id: Idfe0f1f256c93209fe51140b9cab3b454153c597
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33975
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
eavivi
2020-09-02 10:35:27 -07:00
committed by Jason Lowe-Power
parent dba4623395
commit e2f01afff3
4 changed files with 44 additions and 59 deletions

View File

@@ -69,7 +69,7 @@ Fetch2::Fetch2(const std::string &name,
processMoreThanOneInput(params.fetch2CycleInput),
branchPredictor(*params.branchPred),
fetchInfo(params.numThreads),
threadPriority(0)
threadPriority(0), stats(&cpu_)
{
if (outputWidth < 1)
fatal("%s: decodeInputWidth must be >= 1 (%d)\n", name, outputWidth);
@@ -413,17 +413,17 @@ Fetch2::evaluate()
// Collect some basic inst class stats
if (decoded_inst->isLoad())
loadInstructions++;
stats.loadInstructions++;
else if (decoded_inst->isStore())
storeInstructions++;
stats.storeInstructions++;
else if (decoded_inst->isAtomic())
amoInstructions++;
stats.amoInstructions++;
else if (decoded_inst->isVector())
vecInstructions++;
stats.vecInstructions++;
else if (decoded_inst->isFloating())
fpInstructions++;
stats.fpInstructions++;
else if (decoded_inst->isInteger())
intInstructions++;
stats.intInstructions++;
DPRINTF(Fetch, "Instruction extracted from line %s"
" lineWidth: %d output_index: %d inputIndex: %d"
@@ -602,40 +602,33 @@ Fetch2::isDrained()
(*predictionOut.inputWire).isBubble();
}
void
Fetch2::regStats()
Fetch2::Fetch2Stats::Fetch2Stats(MinorCPU *cpu)
: Stats::Group(cpu, "fetch2"),
ADD_STAT(intInstructions,
"Number of integer instructions successfully decoded"),
ADD_STAT(fpInstructions,
"Number of floating point instructions successfully decoded"),
ADD_STAT(vecInstructions,
"Number of SIMD instructions successfully decoded"),
ADD_STAT(loadInstructions,
"Number of memory load instructions successfully decoded"),
ADD_STAT(storeInstructions,
"Number of memory store instructions successfully decoded"),
ADD_STAT(amoInstructions,
"Number of memory atomic instructions successfully decoded")
{
using namespace Stats;
intInstructions
.name(name() + ".int_instructions")
.desc("Number of integer instructions successfully decoded")
.flags(total);
fpInstructions
.name(name() + ".fp_instructions")
.desc("Number of floating point instructions successfully decoded")
.flags(total);
vecInstructions
.name(name() + ".vec_instructions")
.desc("Number of SIMD instructions successfully decoded")
.flags(total);
loadInstructions
.name(name() + ".load_instructions")
.desc("Number of memory load instructions successfully decoded")
.flags(total);
storeInstructions
.name(name() + ".store_instructions")
.desc("Number of memory store instructions successfully decoded")
.flags(total);
amoInstructions
.name(name() + ".amo_instructions")
.desc("Number of memory atomic instructions successfully decoded")
.flags(total);
intInstructions
.flags(Stats::total);
fpInstructions
.flags(Stats::total);
vecInstructions
.flags(Stats::total);
loadInstructions
.flags(Stats::total);
storeInstructions
.flags(Stats::total);
amoInstructions
.flags(Stats::total);
}
void

View File

@@ -163,13 +163,17 @@ class Fetch2 : public Named
std::vector<Fetch2ThreadInfo> fetchInfo;
ThreadID threadPriority;
/** Stats */
Stats::Scalar intInstructions;
Stats::Scalar fpInstructions;
Stats::Scalar vecInstructions;
Stats::Scalar loadInstructions;
Stats::Scalar storeInstructions;
Stats::Scalar amoInstructions;
struct Fetch2Stats : public Stats::Group
{
Fetch2Stats(MinorCPU *cpu);
/** Stats */
Stats::Scalar intInstructions;
Stats::Scalar fpInstructions;
Stats::Scalar vecInstructions;
Stats::Scalar loadInstructions;
Stats::Scalar storeInstructions;
Stats::Scalar amoInstructions;
} stats;
protected:
/** Get a piece of data to work on from the inputBuffer, or 0 if there
@@ -212,7 +216,6 @@ class Fetch2 : public Named
void minorTrace() const;
void regStats();
/** Is this stage drained? For Fetch2, draining is initiated by
* Execute halting Fetch1 causing Fetch2 to naturally drain.

View File

@@ -103,14 +103,6 @@ Pipeline::Pipeline(MinorCPU &cpu_, MinorCPUParams &params) :
}
}
void
Pipeline::regStats()
{
Ticked::regStats();
fetch2.regStats();
}
void
Pipeline::minorTrace() const
{

View File

@@ -126,9 +126,6 @@ class Pipeline : public Ticked
void minorTrace() const;
/** Stats registering */
void regStats();
/** Functions below here are BaseCPU operations passed on to pipeline
* stages */