cpu: Restructure BTB

- A new abstract BTB class is created to enable different BTB
  implementations. The new BTB class gets its own parameter
  and stats.
- An enum is added to differentiate branch instruction types.
  This enum is used to enhance statistics and BPU management.
- The existing BTB is moved into `simple_btb` as default.
- An additional function is added to store the static instruction in
  the BTB. This function is used for the decoupled front-end.
- Update configs to match new BTB parameters.

Change-Id: I99b29a19a1b57e59ea2b188ed7d62a8b79426529
Signed-off-by: David Schall <david.schall@ed.ac.uk>
This commit is contained in:
David Schall
2023-10-07 17:26:16 +00:00
parent ae104cc431
commit edf9092fee
13 changed files with 646 additions and 206 deletions

View File

@@ -95,7 +95,7 @@ class U74FUPool(MinorFUPool):
class U74BP(TournamentBP):
BTBEntries = 32
btb = SimpleBTB(numEntries=32)
RASSize = 12
localHistoryTableSize = 4096 # is 3.6 KiB but gem5 requires power of 2
localPredictorSize = 16384