summaryrefslogtreecommitdiff
path: root/src/cpu/pred/BranchPredictor.py
diff options
context:
space:
mode:
authorMitch Hayenga <mitch.hayenga@arm.com>2016-04-05 11:48:37 -0500
committerMitch Hayenga <mitch.hayenga@arm.com>2016-04-05 11:48:37 -0500
commit1578d2d0b66d995684cee77b3fe527ed0493d41c (patch)
tree120b81ec01c889a41c26ddbc6e26cb0434db764b /src/cpu/pred/BranchPredictor.py
parent7bc52af7716168baa5deb28bb88475ddbba5d62a (diff)
downloadgem5-1578d2d0b66d995684cee77b3fe527ed0493d41c.tar.xz
cpu: Add an indirect branch target predictor
This patch adds a configurable indirect branch predictor that can be indexed by a combination of GHR and path history hashes. Implements the functionality described in: "Target prediction for indirect jumps" by Chang, Hao, and Patt http://dl.acm.org/citation.cfm?id=264209
Diffstat (limited to 'src/cpu/pred/BranchPredictor.py')
-rw-r--r--src/cpu/pred/BranchPredictor.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/cpu/pred/BranchPredictor.py b/src/cpu/pred/BranchPredictor.py
index 5c52fb65e..2d7d0d0e2 100644
--- a/src/cpu/pred/BranchPredictor.py
+++ b/src/cpu/pred/BranchPredictor.py
@@ -42,6 +42,16 @@ class BranchPredictor(SimObject):
RASSize = Param.Unsigned(16, "RAS size")
instShiftAmt = Param.Unsigned(2, "Number of bits to shift instructions by")
+ useIndirect = Param.Bool(True, "Use indirect branch predictor")
+ indirectHashGHR = Param.Bool(True, "Hash branch predictor GHR")
+ indirectHashTargets = Param.Bool(True, "Hash path history targets")
+ indirectSets = Param.Unsigned(256, "Cache sets for indirect predictor")
+ indirectWays = Param.Unsigned(2, "Ways for indirect predictor")
+ indirectTagSize = Param.Unsigned(16, "Indirect target cache tag bits")
+ indirectPathLength = Param.Unsigned(3,
+ "Previous indirect targets to use for path history")
+
+
class LocalBP(BranchPredictor):
type = 'LocalBP'