inorder: import name for addtl. bpred stats
This commit is contained in:
parent
0170e851de
commit
2620e08722
3 changed files with 22 additions and 19 deletions
|
@ -39,10 +39,9 @@
|
|||
using namespace std;
|
||||
using namespace ThePipeline;
|
||||
|
||||
BPredUnit::BPredUnit(ThePipeline::Params *params)
|
||||
: BTB(params->BTBEntries,
|
||||
params->BTBTagSize,
|
||||
params->instShiftAmt)
|
||||
BPredUnit::BPredUnit(Resource *_res, ThePipeline::Params *params)
|
||||
: res(_res),
|
||||
BTB(params->BTBEntries, params->BTBTagSize, params->instShiftAmt)
|
||||
{
|
||||
// Setup the selected predictor.
|
||||
if (params->predType == "local") {
|
||||
|
@ -70,48 +69,47 @@ BPredUnit::BPredUnit(ThePipeline::Params *params)
|
|||
RAS[i].init(params->RASSize);
|
||||
}
|
||||
|
||||
std::string
|
||||
BPredUnit::name()
|
||||
{
|
||||
return res->name();
|
||||
}
|
||||
|
||||
void
|
||||
BPredUnit::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")
|
||||
.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.")
|
||||
;
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "cpu/inst_seq.hh"
|
||||
#include "cpu/inorder/inorder_dyn_inst.hh"
|
||||
#include "cpu/inorder/pipeline_traits.hh"
|
||||
#include "cpu/inorder/resource.hh"
|
||||
#include "cpu/pred/2bit_local.hh"
|
||||
#include "cpu/pred/btb.hh"
|
||||
#include "cpu/pred/ras.hh"
|
||||
|
@ -65,7 +66,9 @@ class BPredUnit
|
|||
/**
|
||||
* @param params The params object, that has the size of the BP and BTB.
|
||||
*/
|
||||
BPredUnit(ThePipeline::Params *params);
|
||||
BPredUnit(Resource *_res, ThePipeline::Params *params);
|
||||
|
||||
std::string name();
|
||||
|
||||
/**
|
||||
* Registers statistics.
|
||||
|
@ -169,6 +172,8 @@ class BPredUnit
|
|||
void dump();
|
||||
|
||||
private:
|
||||
Resource *res;
|
||||
|
||||
struct PredictorHistory {
|
||||
/**
|
||||
* Makes a predictor history struct that contains any
|
||||
|
|
|
@ -39,7 +39,7 @@ using namespace ThePipeline;
|
|||
BranchPredictor::BranchPredictor(std::string res_name, int res_id, int res_width,
|
||||
int res_latency, InOrderCPU *_cpu, ThePipeline::Params *params)
|
||||
: Resource(res_name, res_id, res_width, res_latency, _cpu),
|
||||
branchPred(params)
|
||||
branchPred(this, params)
|
||||
{
|
||||
instSize = sizeof(MachInst);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue