diff options
Diffstat (limited to 'src/cpu/pred/tournament.hh')
-rw-r--r-- | src/cpu/pred/tournament.hh | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/cpu/pred/tournament.hh b/src/cpu/pred/tournament.hh index 82a1daa64..3aa17e030 100644 --- a/src/cpu/pred/tournament.hh +++ b/src/cpu/pred/tournament.hh @@ -77,7 +77,7 @@ class TournamentBP : public BPredUnit * @param bp_history Pointer that will be set to the BPHistory object. * @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); /** * Records that there was an unconditional branch, and modifies @@ -85,7 +85,7 @@ class TournamentBP : public BPredUnit * global history stored in it. * @param bp_history Pointer that will be set to the BPHistory object. */ - void uncondBranch(Addr pc, void * &bp_history); + void uncondBranch(ThreadID tid, Addr pc, void * &bp_history); /** * Updates the branch predictor to Not Taken if a BTB entry is * invalid or not found. @@ -93,7 +93,7 @@ class TournamentBP : 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. @@ -103,21 +103,19 @@ class TournamentBP : public BPredUnit * @param squashed is set when this function is called during a squash * operation. */ - 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); /** * Restores the global branch history on a squash. * @param bp_history Pointer to the BPHistory object that has the * previous global branch history in it. */ - void squash(void *bp_history); + void squash(ThreadID tid, void *bp_history); - unsigned getGHR(void *bp_history) const; - - /** Returns the global history. */ - inline unsigned readGlobalHist() { return globalHistory; } + unsigned getGHR(ThreadID tid, void *bp_history) const; private: /** @@ -134,10 +132,10 @@ class TournamentBP : public BPredUnit inline unsigned calcLocHistIdx(Addr &branch_addr); /** Updates global history as taken. */ - inline void updateGlobalHistTaken(); + inline void updateGlobalHistTaken(ThreadID tid); /** Updates global history as not taken. */ - inline void updateGlobalHistNotTaken(); + inline void updateGlobalHistNotTaken(ThreadID tid); /** * Updates local histories as taken. @@ -211,7 +209,7 @@ class TournamentBP : public BPredUnit /** Global history register. Contains as much history as specified by * globalHistoryBits. Actual number of bits used is determined by * globalHistoryMask and choiceHistoryMask. */ - unsigned globalHistory; + std::vector<unsigned> globalHistory; /** Number of bits for the global history. Determines maximum number of entries in global and choice predictor tables. */ |