Branch prediction utilizing both a branch target buffer and a multiple target table
First Claim
1. A method of processing branch targets in a computer systems for a local microprocessor having branch prediction and an instruction cache using a Branch Target Buffer (BTB) comprising of:
- (a) predicting an address corresponding to a next branch;
(b) predicting a static target address of a predicted branch; and
(c) predicting a dynamic target address of a predicted branch; and
then(d) selecting between the static and dynamic target address wherein;
upon finding a hit during selecting between the static and dynamic target addresses, the target is sent to the local microprocessor'"'"'s instruction cache such that a fetch can begin for the current target address and the target address is sent back to the Branch Target Buffer (BTB) and a global history register (GHR) is speculatively updated immediately following and based upon a prediction of a dynamic target address of said next branch a speculative GHR is used to access a Multiple Target Table (MTT) in searching for a predicted target address for said next branch, andwherein the step of selecting between the static and dynamic target address includes selecting between two predicted target addresses based on entry information supplied from said branch target buffer (BTB) and said Multiple Target Table (MTT) and upon resolving a branch the dynamic target is placed in said Multiple Target Table (MTT) for future use when the resolved dynamic taken branch of said branch target buffer (BTB) initially resolves with a different target address computation than employed when predicted via said branch target buffer (BTB).
1 Assignment
0 Petitions
Accused Products
Abstract
Improved Branch prediction utilizes both a Branch Target Buffer (BTB) and a Multiple Target Table (MTT) for providing the capability to predict multiple targets for a single branch. A MTT when used in conjunction with a BTB allows for branches which have changing targets to be able to selectively choose the target of choice based on the execution path that was taken that lead to the given branch. The method predicts traget addresses, and between the static and dynamic target address, and upon finding a hit, the target is sent to the instruction cache such that a fetch can begin for the current target address and the target address is sent back to the Branch Target Buffer (BTB) to begin the search for the next branch given the current target predicted address. Upon resolving a branch the dynamic target is placed in MTT for future use.
57 Citations
15 Claims
-
1. A method of processing branch targets in a computer systems for a local microprocessor having branch prediction and an instruction cache using a Branch Target Buffer (BTB) comprising of:
-
(a) predicting an address corresponding to a next branch; (b) predicting a static target address of a predicted branch; and (c) predicting a dynamic target address of a predicted branch; and
then(d) selecting between the static and dynamic target address wherein; upon finding a hit during selecting between the static and dynamic target addresses, the target is sent to the local microprocessor'"'"'s instruction cache such that a fetch can begin for the current target address and the target address is sent back to the Branch Target Buffer (BTB) and a global history register (GHR) is speculatively updated immediately following and based upon a prediction of a dynamic target address of said next branch a speculative GHR is used to access a Multiple Target Table (MTT) in searching for a predicted target address for said next branch, and wherein the step of selecting between the static and dynamic target address includes selecting between two predicted target addresses based on entry information supplied from said branch target buffer (BTB) and said Multiple Target Table (MTT) and upon resolving a branch the dynamic target is placed in said Multiple Target Table (MTT) for future use when the resolved dynamic taken branch of said branch target buffer (BTB) initially resolves with a different target address computation than employed when predicted via said branch target buffer (BTB). - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
Specification