summaryrefslogtreecommitdiff
path: root/src/cpu/pred/tournament.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/pred/tournament.hh')
-rw-r--r--src/cpu/pred/tournament.hh24
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. */