cpu: Implement per-thread GHRs
Branch predictors that use GHRs should index them on a per-thread basis. This makes that so. This is a re-spin of fb51231 after the revert (bd1c6789).
This commit is contained in:
@@ -78,7 +78,7 @@ LocalBP::reset()
|
||||
}
|
||||
|
||||
void
|
||||
LocalBP::btbUpdate(Addr branch_addr, void * &bp_history)
|
||||
LocalBP::btbUpdate(ThreadID tid, Addr branch_addr, void * &bp_history)
|
||||
{
|
||||
// Place holder for a function that is called to update predictor history when
|
||||
// a BTB entry is invalid or not found.
|
||||
@@ -86,7 +86,7 @@ LocalBP::btbUpdate(Addr branch_addr, void * &bp_history)
|
||||
|
||||
|
||||
bool
|
||||
LocalBP::lookup(Addr branch_addr, void * &bp_history)
|
||||
LocalBP::lookup(ThreadID tid, Addr branch_addr, void * &bp_history)
|
||||
{
|
||||
bool taken;
|
||||
uint8_t counter_val;
|
||||
@@ -117,7 +117,8 @@ LocalBP::lookup(Addr branch_addr, void * &bp_history)
|
||||
}
|
||||
|
||||
void
|
||||
LocalBP::update(Addr branch_addr, bool taken, void *bp_history, bool squashed)
|
||||
LocalBP::update(ThreadID tid, Addr branch_addr, bool taken, void *bp_history,
|
||||
bool squashed)
|
||||
{
|
||||
assert(bp_history == NULL);
|
||||
unsigned local_predictor_idx;
|
||||
@@ -152,7 +153,7 @@ LocalBP::getLocalIndex(Addr &branch_addr)
|
||||
}
|
||||
|
||||
void
|
||||
LocalBP::uncondBranch(Addr pc, void *&bp_history)
|
||||
LocalBP::uncondBranch(ThreadID tid, Addr pc, void *&bp_history)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user