IP Library › Granted Patent US 10,642,619
Granted Patent B2
US 10,642,619 · App. 14/528,214 · Granted May 5, 2020

Branch prediction using multi-way pattern history table (PHT) and global path vector (GPV)

Inventors: James J. Bonanno (Wappingers Falls, NY); Matthias D. Heizmann (Poughkeepsie, NY); Daniel Lipetz (Linden, NJ); Brian R. Prasky (Campbell Hall, NY)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F9/3806G06F9/3848
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,642,619
App. No.
14/528,214
Granted
May 5, 2020
Kind
B2
Abstract

Embodiments relate to branch prediction using a pattern history table (PHT) that is indexed using a global path vector (GPV). An aspect includes receiving a search address by a branch prediction logic that is in communication with the PHT and the GPV. Another aspect includes starting with the search address, simultaneously determining a plurality of branch predictions by the branch prediction logic based on the PHT, wherein the plurality of branch predictions comprises one of: (i) at least one not taken prediction and a single taken prediction, and (ii) a plurality of not taken predictions. Another aspect includes updating the GPV by shifting an instruction identifier of a branch instruction associated with a taken prediction into the GPV, wherein the GPV is not updated based on any not taken prediction.

Claims (25)

1. A computer implemented method for branch prediction using a multi-way pattern history table (PHT) that is indexed using a global path vector (GPV), the method comprising:

receiving a search address by a branch prediction logic that is in communication with the PHT and the GPV, wherein the branch prediction logic comprises a branch target buffer (BTB) and a plurality of hit detection modules that each determine a respective branch prediction,

wherein a number N of the plurality of hit detection modules is equal to a number N of ways in the BTB, and wherein each of the plurality of hit detection modules receives an input from a single respective way in the BTB; and

wherein the plurality of hit detection modules receives at least one input from the PHT;

starting with the search address, simultaneously determining a plurality of branch predictions by the branch prediction logic based on the PHT and the BTB, wherein the plurality of branch predictions comprises one of: (i) N−1 not taken predictions and a single taken prediction, and (ii) N not taken predictions;

providing the plurality of branch predictions to the processor;

updating the GPV by shifting an instruction identifier of a branch instruction associated with a taken prediction into the GPV, wherein the GPV is not updated based on any not taken prediction, wherein the GPV is updated at prediction time to generate a PHT read index and at a completion time to generate a PHT write index; and

inputting a target address of the branch instruction associated with the taken prediction into the branch prediction logic as the search address and repeating each of the previous steps using the updated search address.

2. The method of claim 1 , wherein shifting the instruction identifier of the branch instruction associated with the taken prediction into the GPV comprises inputting the instruction identifier into a history generator function configured to reduce a number of bits in the instruction identifier, and shifting the reduced number of bits into the GPV.

3. The method of claim 1 , further comprising, based on a branch completion, updating the PHT based on the GPV by inputting a branch address of the branch instruction associated with the branch completion and a value stored in the GPV into an index generator, and updating the PHT based on an index that is output by the index generator.

4. The method of claim 1 , wherein the PHT comprises an N-way PHT, and wherein each of the plurality of hit detection modules receives an input from a single respective way in the PHT.

5. The method of claim 1 , wherein the PHT comprises an M-way PHT, and wherein each of the plurality of hit detection modules receives an input from each of the M ways in the PHT.

6. A computer program product for implementing branch prediction using a multi-way pattern history table (PHT) that is indexed using a global path vector (GPV), the computer program product comprising:

a computer readable storage medium having program instructions embodied therewith, the program instructions readable by a processing circuit to cause the processing circuit to perform a method comprising:

receiving a search address by a branch prediction logic that is in communication with the PHT and the GPV, wherein the branch prediction logic comprises a branch target buffer (BTB) and a plurality of hit detection modules that each determine a respective branch prediction,

wherein a number N of the plurality of hit detection modules is equal to a number N of ways in the BTB, and wherein each of the plurality of hit detection modules receives an input from a single respective way in the BTB; and

wherein the plurality of hit detection modules receives at least one input from the PHT;

starting with the search address, simultaneously determining a plurality of branch predictions by the branch prediction logic based on the PHT and the BTB, wherein the plurality of branch predictions comprises one of: (i) N−1 not taken predictions and a single taken prediction, and (ii) N not taken predictions; and

providing the plurality of branch predictions to the processor;

updating the GPV by shifting an instruction identifier of a branch instruction associated with a taken prediction into the GPV, wherein the GPV is not updated based on any not taken prediction, wherein the GPV is updated at prediction time to generate a PHT read index and at a completion time to generate a PHT write index; and

inputting a target address of the branch instruction associated with the taken prediction into the branch prediction logic as the search address and repeating each of the previous steps using the updated search address.

7. The computer program product of claim 6 , wherein shifting the instruction identifier of the branch instruction associated with the taken prediction into the GPV comprises inputting the instruction identifier into a history generator function configured to reduce a number of bits in the instruction identifier, and shifting the reduced number of bits into the GPV.

8. The computer program product of claim 6 , further comprising, based on a branch completion, updating the PHT based on the GPV by inputting a branch address of the branch instruction associated with the branch completion and a value stored in the GPV into an index generator, and updating the PHT based on an index that is output by the index generator.

9. The computer program product of claim 6 , wherein the PHT comprises an N-way PHT, and wherein each of the plurality of hit detection modules receives an input from a single respective way in the PHT.

10. The computer program product of claim 6 , wherein the PHT comprises an M-way PHT, and wherein each of the plurality of hit detection modules receives an input from each of the M ways in the PHT.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2014
From: BONANNO, JAMES J.; HEIZMANN, MATTHIAS D.; LIPETZ, DANIEL; PRASKY, BRIAN R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 034071/0764 →
Continuity (2)
Continuation 14448030 · Jul 31, 2014
Related Publication 20160034280A1 · Feb 4, 2016