inorder: import name for addtl. bpred stats

This commit is contained in:
Korey Sewell 2010-03-22 17:19:48 -04:00
parent 0170e851de
commit 2620e08722
3 changed files with 22 additions and 19 deletions

View file

@ -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.")
;
}

View file

@ -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

View file

@ -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);
}