inorder: import name for addtl. bpred stats
authorKorey Sewell <ksewell@umich.edu>
Mon, 22 Mar 2010 21:19:48 +0000 (17:19 -0400)
committerKorey Sewell <ksewell@umich.edu>
Mon, 22 Mar 2010 21:19:48 +0000 (17:19 -0400)
src/cpu/inorder/resources/bpred_unit.cc
src/cpu/inorder/resources/bpred_unit.hh
src/cpu/inorder/resources/branch_predictor.cc

index c9674a0b56f951b8e9d6ea157d311c0fc5b37dbe..c4bb619745caa9a664d5899d5f05693da76991e0 100644 (file)
 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.")
         ;
 }
index 1571e3206488add7be9f4de6ed330d285427c46b..72229ca70131463e13c7e1cbe8761f68315b6e08 100644 (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
index ea9cf720771e0175dab2d36d1140516c61b40310..a4ebfe33d7f4ed50bdcddba7f9f88503b3c25376 100644 (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);
 }