Stats::Vector statComInteger;
/** Total number of function calls */
Stats::Vector statComFunctionCalls;
+ /** Committed instructions by instruction type (OpClass) */
+ Stats::Vector2d statCommittedInstType;
/** Number of cycles where the commit bandwidth limit is reached. */
Stats::Scalar commitEligibleSamples;
.flags(total)
;
+ statCommittedInstType
+ .init(numThreads,Enums::Num_OpClass)
+ .name(name() + ".op_class")
+ .desc("Class of committed instruction")
+ .flags(total | pdf | dist)
+ ;
+ statCommittedInstType.ysubnames(Enums::OpClassStrings);
+
commitEligible
.init(cpu->numThreads)
.name(name() + ".bw_limited")
if (commit_success) {
++num_committed;
+ statCommittedInstType[tid][head_inst->opClass()]++;
ppCommit->notify(head_inst);
changedROBNumEntries[tid] = true;
.prereq(dcacheRetryCycles)
;
+ statExecutedInstType
+ .init(Enums::Num_OpClass)
+ .name(name() + ".op_class")
+ .desc("Class of executed instruction")
+ .flags(total | pdf | dist)
+ ;
+ for (unsigned i = 0; i < Num_OpClasses; ++i) {
+ statExecutedInstType.subname(i, Enums::OpClassStrings[i]);
+ }
+
idleFraction = constant(1.0) - notIdleFraction;
numIdleCycles = idleFraction * numCycles;
numBusyCycles = (notIdleFraction)*numCycles;
}
/* End power model statistics */
+ statExecutedInstType[curStaticInst->opClass()]++;
+
if (FullSystem)
traceFunctions(instAddr);
Stats::Scalar numBranchMispred;
/// @}
+ // instruction mix histogram by OpClass
+ Stats::Vector statExecutedInstType;
+
void serializeThread(std::ostream &os, ThreadID tid);
void unserializeThread(Checkpoint *cp, const std::string §ion,
ThreadID tid);