You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A new function should be added to the branch predictor interface, to allow branch predictor implementations to determine whether the target of a branch was mispredicted once it's been decoded, but before execution. This logic is currently implemented as Instruction::checkEarlyBranchMisprediction; moving this out of the instruction implementation and into the model/predictor allows for ISA-independent branch prediction models.
This enables the addition of more informed predictor models, such as backwards taken/forwards not taken static prediction, and return address stack predictors.
The expected function signature would be as follows:
/** Improve a branch prediction according to decoded information. * Returns a tuple of values, signifying whether the branch was * mispredicted and, if so, the updated branch target prediction. */
std::tuple<bool, uint64_t> improvePrediction(Instruction& uop);
Any changes to the prediction should be propagated to the uop via setBranchPrediction().
This change would also require the addition of numerous additional public "metadata" functions on the Instruction interface, to allow the branch predictor to request and retrieve the necessary information to make an informed decision. Examples may include isBranchConditional, isBranchImmediate, isBranchReturn, isBranchSubroutine, and getBranchTarget.
The text was updated successfully, but these errors were encountered:
A new function should be added to the branch predictor interface, to allow branch predictor implementations to determine whether the target of a branch was mispredicted once it's been decoded, but before execution. This logic is currently implemented as
Instruction::checkEarlyBranchMisprediction
; moving this out of the instruction implementation and into the model/predictor allows for ISA-independent branch prediction models.This enables the addition of more informed predictor models, such as backwards taken/forwards not taken static prediction, and return address stack predictors.
The expected function signature would be as follows:
Any changes to the prediction should be propagated to the uop via
setBranchPrediction()
.This change would also require the addition of numerous additional public "metadata" functions on the
Instruction
interface, to allow the branch predictor to request and retrieve the necessary information to make an informed decision. Examples may includeisBranchConditional
,isBranchImmediate
,isBranchReturn
,isBranchSubroutine
, andgetBranchTarget
.The text was updated successfully, but these errors were encountered: