Implement BTB using the cache library (#1537)

This enables the BTB to be associative and use various replacement
policies.
This commit is contained in:
Pranith
2024-10-10 09:05:22 -07:00
committed by GitHub
parent 1c8ab47a54
commit 50f652a2ee
8 changed files with 394 additions and 133 deletions

View File

@@ -1683,6 +1683,15 @@ class HPI_MMU(ArmMMU):
class HPI_BTB(SimpleBTB):
numEntries = 128
tagBits = 18
associativity = 1
instShiftAmt = 2
btbReplPolicy = LRURP()
btbIndexingPolicy = BTBSetAssociative(
num_entries=Parent.numEntries,
set_shift=Parent.instShiftAmt,
assoc=Parent.associativity,
tag_bits=Parent.tagBits,
)
class HPI_BP(TournamentBP):

View File

@@ -111,6 +111,15 @@ class O3_ARM_v7a_FUP(FUPool):
class O3_ARM_v7a_BTB(SimpleBTB):
numEntries = 2048
tagBits = 18
associativity = 1
instShiftAmt = 2
btbReplPolicy = LRURP()
btbIndexingPolicy = BTBSetAssociative(
num_entries=Parent.numEntries,
set_shift=Parent.instShiftAmt,
assoc=Parent.associativity,
tag_bits=Parent.tagBits,
)
# Bi-Mode Branch Predictor

View File

@@ -108,6 +108,15 @@ class ex5_big_FUP(FUPool):
class ex5_big_BTB(SimpleBTB):
numEntries = 4096
tagBits = 18
associativity = 1
instShiftAmt = 2
btbReplPolicy = LRURP()
btbIndexingPolicy = BTBSetAssociative(
num_entries=Parent.numEntries,
set_shift=Parent.instShiftAmt,
assoc=Parent.associativity,
tag_bits=Parent.tagBits,
)
# Bi-Mode Branch Predictor