From 76ee011a12ade238d5cbf4b570e1d34d7ba72687 Mon Sep 17 00:00:00 2001 From: Curtis Dunham Date: Tue, 5 Apr 2016 12:20:19 -0500 Subject: cpu: Implement per-thread GHRs Branch predictors that use GHRs should index them on a per-thread basis. This makes that so. --- src/cpu/pred/2bit_local.hh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/cpu/pred/2bit_local.hh') diff --git a/src/cpu/pred/2bit_local.hh b/src/cpu/pred/2bit_local.hh index 61e2dc24e..e3f87491b 100644 --- a/src/cpu/pred/2bit_local.hh +++ b/src/cpu/pred/2bit_local.hh @@ -66,7 +66,7 @@ class LocalBP : public BPredUnit */ LocalBP(const LocalBPParams *params); - virtual void uncondBranch(Addr pc, void * &bp_history); + virtual void uncondBranch(ThreadID tid, Addr pc, void * &bp_history); /** * Looks up the given address in the branch predictor and returns @@ -75,7 +75,7 @@ class LocalBP : public BPredUnit * @param bp_history Pointer to any bp history state. * @return Whether or not the branch is taken. */ - bool lookup(Addr branch_addr, void * &bp_history); + bool lookup(ThreadID tid, Addr branch_addr, void * &bp_history); /** * Updates the branch predictor to Not Taken if a BTB entry is @@ -84,19 +84,20 @@ class LocalBP : public BPredUnit * @param bp_history Pointer to any bp history state. * @return Whether or not the branch is taken. */ - void btbUpdate(Addr branch_addr, void * &bp_history); + void btbUpdate(ThreadID tid, Addr branch_addr, void * &bp_history); /** * Updates the branch predictor with the actual result of a branch. * @param branch_addr The address of the branch to update. * @param taken Whether or not the branch was taken. */ - void update(Addr branch_addr, bool taken, void *bp_history, bool squashed); + void update(ThreadID tid, Addr branch_addr, bool taken, void *bp_history, + bool squashed); - void retireSquashed(void *bp_history) + void retireSquashed(ThreadID tid, void *bp_history) { assert(bp_history == NULL); } - void squash(void *bp_history) + void squash(ThreadID tid, void *bp_history) { assert(bp_history == NULL); } void reset(); -- cgit v1.2.3