90,95c90,93
< # TAGE branch predictor as described in https://www.jilp.org/vol8/v8paper1.pdf
< # The default sizes below are for the 8C-TAGE configuration (63.5 Kbits)
< class TAGE(BranchPredictor):
< type = 'TAGE'
< cxx_class = 'TAGE'
< cxx_header = "cpu/pred/tage.hh"
---
> class TAGEBase(SimObject):
> type = 'TAGEBase'
> cxx_class = 'TAGEBase'
> cxx_header = "cpu/pred/tage_base.hh"
96a95,98
> numThreads = Param.Unsigned(Parent.numThreads, "Number of threads")
> instShiftAmt = Param.Unsigned(Parent.instShiftAmt,
> "Number of bits to shift instructions by")
>
117a120
> numUseAltOnNa = Param.Unsigned(1, "Number of USE_ALT_ON_NA counters")
119a123,124
> maxNumAlloc = Param.Unsigned(1,
> "Max number of TAGE entries allocted on mispredict")
120a126,147
> # List of enabled TAGE tables. If empty, all are enabled
> noSkip = VectorParam.Bool([], "Vector of enabled TAGE tables")
>
> speculativeHistUpdate = Param.Bool(True,
> "Use speculative update for histories")
>
> # TAGE branch predictor as described in https://www.jilp.org/vol8/v8paper1.pdf
> # The default sizes below are for the 8C-TAGE configuration (63.5 Kbits)
> class TAGE(BranchPredictor):
> type = 'TAGE'
> cxx_class = 'TAGE'
> cxx_header = "cpu/pred/tage.hh"
> tage = Param.TAGEBase(TAGEBase(), "Tage object")
>
> class LTAGE_TAGE(TAGEBase):
> nHistoryTables = 12
> minHist = 4
> maxHist = 640
> tagTableTagWidths = [0, 7, 7, 8, 8, 9, 10, 11, 12, 12, 13, 14, 15]
> logTagTableSizes = [14, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 9, 9]
> logUResetPeriod = 19
>
130,135c157
< nHistoryTables = 12
< minHist = 4
< maxHist = 640
< tagTableTagWidths = [0, 7, 7, 8, 8, 9, 10, 11, 12, 12, 13, 14, 15]
< logTagTableSizes = [14, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 9, 9]
< logUResetPeriod = 19
---
> tage = LTAGE_TAGE()