PredType predictor;
+ const std::string _name;
+
public:
/**
*/
BPredUnit(DerivO3CPUParams *params);
+ const std::string &name() const { return _name; }
+
/**
* Registers statistics.
*/
template<class Impl>
BPredUnit<Impl>::BPredUnit(DerivO3CPUParams *params)
- : BTB(params->BTBEntries,
- params->BTBTagSize,
- params->instShiftAmt)
+ : _name(params->name + ".BPredUnit"),
+ BTB(params->BTBEntries,
+ params->BTBTagSize,
+ params->instShiftAmt)
{
// Setup the selected predictor.
if (params->predType == "local") {
BPredUnit<Impl>::regStats()
{
lookups
- .name(name() + ".BPredUnit.lookups")
+ .name(name() + ".lookups")
.desc("Number of BP lookups")
;
condPredicted
- .name(name() + ".BPredUnit.condPredicted")
+ .name(name() + ".condPredicted")
.desc("Number of conditional branches predicted")
;
condIncorrect
- .name(name() + ".BPredUnit.condIncorrect")
+ .name(name() + ".condIncorrect")
.desc("Number of conditional branches incorrect")
;
BTBLookups
- .name(name() + ".BPredUnit.BTBLookups")
+ .name(name() + ".BTBLookups")
.desc("Number of BTB lookups")
;
BTBHits
- .name(name() + ".BPredUnit.BTBHits")
+ .name(name() + ".BTBHits")
.desc("Number of BTB hits")
;
BTBCorrect
- .name(name() + ".BPredUnit.BTBCorrect")
+ .name(name() + ".BTBCorrect")
.desc("Number of correct BTB predictions (this stat may not "
"work properly.")
;
usedRAS
- .name(name() + ".BPredUnit.usedRAS")
+ .name(name() + ".usedRAS")
.desc("Number of times the RAS was used to get a target.")
;
RASIncorrect
- .name(name() + ".BPredUnit.RASInCorrect")
+ .name(name() + ".RASInCorrect")
.desc("Number of incorrect RAS predictions.")
;
}
* dependence prediction schemes.
*/
template <class MemDepPred, class Impl>
-class MemDepUnit {
+class MemDepUnit
+{
+ protected:
+ std::string _name;
+
public:
typedef typename Impl::DynInstPtr DynInstPtr;
~MemDepUnit();
/** Returns the name of the memory dependence unit. */
- std::string name() const;
+ std::string name() const { return _name; }
/** Initializes the unit with parameters and a thread id. */
void init(DerivO3CPUParams *params, int tid);
template <class MemDepPred, class Impl>
MemDepUnit<MemDepPred, Impl>::MemDepUnit(DerivO3CPUParams *params)
- : depPred(params->SSITSize, params->LFSTSize), loadBarrier(false),
+ : _name(params->name + ".memdepunit"),
+ depPred(params->SSITSize, params->LFSTSize), loadBarrier(false),
loadBarrierSN(0), storeBarrier(false), storeBarrierSN(0), iqPtr(NULL)
{
DPRINTF(MemDepUnit, "Creating MemDepUnit object.\n");
#endif
}
-template <class MemDepPred, class Impl>
-std::string
-MemDepUnit<MemDepPred, Impl>::name() const
-{
- return "memdepunit";
-}
-
template <class MemDepPred, class Impl>
void
MemDepUnit<MemDepPred, Impl>::init(DerivO3CPUParams *params, int tid)
{
DPRINTF(MemDepUnit, "Creating MemDepUnit %i object.\n",tid);
+ _name = csprintf("%s.memDep%d", params->name, tid);
id = tid;
depPred.init(params->SSITSize, params->LFSTSize);
MemDepUnit<MemDepPred, Impl>::regStats()
{
insertedLoads
- .name(name() + ".memDep.insertedLoads")
+ .name(name() + ".insertedLoads")
.desc("Number of loads inserted to the mem dependence unit.");
insertedStores
- .name(name() + ".memDep.insertedStores")
+ .name(name() + ".insertedStores")
.desc("Number of stores inserted to the mem dependence unit.");
conflictingLoads
- .name(name() + ".memDep.conflictingLoads")
+ .name(name() + ".conflictingLoads")
.desc("Number of conflicting loads.");
conflictingStores
- .name(name() + ".memDep.conflictingStores")
+ .name(name() + ".conflictingStores")
.desc("Number of conflicting stores.");
}