cpu: Added a probe to notify the address of retired instructions
A probe is added to notify the address of each retired instruction. Change-Id: Iefc1b09d74b3aa0aa5773b17ba637bf51f5a59c9 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17632 Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
committed by
Javier Bueno Hedo
parent
cbaae54782
commit
1a27580e3b
@@ -391,6 +391,7 @@ BaseCPU::regProbePoints()
|
||||
ppActiveCycles = pmuProbePoint("ActiveCycles");
|
||||
|
||||
ppRetiredInsts = pmuProbePoint("RetiredInsts");
|
||||
ppRetiredInstsPC = pmuProbePoint("RetiredInstsPC");
|
||||
ppRetiredLoads = pmuProbePoint("RetiredLoads");
|
||||
ppRetiredStores = pmuProbePoint("RetiredStores");
|
||||
ppRetiredBranches = pmuProbePoint("RetiredBranches");
|
||||
@@ -400,11 +401,12 @@ BaseCPU::regProbePoints()
|
||||
}
|
||||
|
||||
void
|
||||
BaseCPU::probeInstCommit(const StaticInstPtr &inst)
|
||||
BaseCPU::probeInstCommit(const StaticInstPtr &inst, Addr pc)
|
||||
{
|
||||
if (!inst->isMicroop() || inst->isLastMicroop())
|
||||
if (!inst->isMicroop() || inst->isLastMicroop()) {
|
||||
ppRetiredInsts->notify(1);
|
||||
|
||||
ppRetiredInstsPC->notify(pc);
|
||||
}
|
||||
|
||||
if (inst->isLoad())
|
||||
ppRetiredLoads->notify(1);
|
||||
|
||||
@@ -487,8 +487,9 @@ class BaseCPU : public MemObject
|
||||
* instruction.
|
||||
*
|
||||
* @param inst Instruction that just committed
|
||||
* @param pc PC of the instruction that just committed
|
||||
*/
|
||||
virtual void probeInstCommit(const StaticInstPtr &inst);
|
||||
virtual void probeInstCommit(const StaticInstPtr &inst, Addr pc);
|
||||
|
||||
protected:
|
||||
/**
|
||||
@@ -509,6 +510,7 @@ class BaseCPU : public MemObject
|
||||
* instructions may call notify once for the entire bundle.
|
||||
*/
|
||||
ProbePoints::PMUUPtr ppRetiredInsts;
|
||||
ProbePoints::PMUUPtr ppRetiredInstsPC;
|
||||
|
||||
/** Retired load instructions */
|
||||
ProbePoints::PMUUPtr ppRetiredLoads;
|
||||
|
||||
@@ -872,7 +872,7 @@ Execute::doInstCommitAccounting(MinorDynInstPtr inst)
|
||||
if (inst->traceData)
|
||||
inst->traceData->setCPSeq(thread->numOp);
|
||||
|
||||
cpu.probeInstCommit(inst->staticInst);
|
||||
cpu.probeInstCommit(inst->staticInst, inst->pc.instAddr());
|
||||
}
|
||||
|
||||
bool
|
||||
|
||||
@@ -1623,7 +1623,7 @@ FullO3CPU<Impl>::instDone(ThreadID tid, const DynInstPtr &inst)
|
||||
thread[tid]->numOps++;
|
||||
committedOps[tid]++;
|
||||
|
||||
probeInstCommit(inst->staticInst);
|
||||
probeInstCommit(inst->staticInst, inst->instAddr());
|
||||
}
|
||||
|
||||
template <class Impl>
|
||||
|
||||
@@ -661,7 +661,7 @@ BaseSimpleCPU::postExecute()
|
||||
}
|
||||
|
||||
// Call CPU instruction commit probes
|
||||
probeInstCommit(curStaticInst);
|
||||
probeInstCommit(curStaticInst, instAddr);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user