IP Library Granted Patent US 9,495,157
Granted Patent B1
US 9,495,157 · App. 14/960,535 · Granted Nov 15, 2016

Fingerprint-based branch prediction

Inventors: Jonathan D. Bradbury (Poughkeepsie, NY); Giles R. Frazier (Austin, TX); Michael Karl Gschwind (Chappaqua, NY); Christian Jacobi (West Park, NY); Anthony Saporito (Highland, NY); Chung-Lung K. Shum (Wappingers Falls, NY)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F9/30058G06F9/3844G06F12/0875G06F2212/452
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 9,495,157
App. No.
14/960,535
Granted
Nov 15, 2016
Kind
B1
Abstract

Embodiments relate to fingerprint-based branch prediction. An aspect includes based on encountering a branch instruction during execution of software on a processor of a computer system, determining a fingerprint of the software, the fingerprint comprising a representation of a sequence of behavior that occurs in the processor while the software is executing. Another aspect includes based on determining that a match for the fingerprint and the branch instruction is located in an entry in the prediction table: predicting the branch instruction according to the associated prediction field. Another aspect includes based on determining that no match for the fingerprint and the branch instruction are located in an entry in the prediction table: creating a new entry in the prediction table for the fingerprint and the branch instruction.

Claims (30)

1. A computer implemented method for fingerprint-based branch prediction, the method comprising:

based on encountering a branch instruction during execution of software on a processor of a computer system, determining a fingerprint of the software, the fingerprint comprising a representation of a sequence of behavior that occurs in the processor while the software is executing;

determining whether a match for the fingerprint and the branch instruction is located in an entry in a prediction table, the entry including an associated prediction field;

based on determining that a match for the fingerprint and the branch instruction is located in an entry in the prediction table:

predicting the branch instruction according to the associated prediction field; and

based on resolution of the branch instruction, updating the associated prediction field;

based on determining that no match for the fingerprint and the branch instruction is located in an entry in the prediction table:

creating a new entry in the prediction table for the fingerprint and the branch instruction; and

based on resolution of the branch instruction, updating a prediction field of the new entry according to the resolution, and

wherein determining the fingerprint comprises tracking a rate of occurrence of an event outcome for an event in the processor by a fingerprint module, wherein the fingerprint module counts a number of occurrences of the event outcome over a predetermined number of occurrences of the event.

2. The method of claim 1 , wherein determining the fingerprint further comprises tracking the event in the processor by a fingerprint register, wherein the fingerprint register holds a sequence of ones and zeros indicating different outcomes of the event.

3. The method of claim 2 , wherein the event comprises a cache access, wherein the different outcomes comprise cache hits and cache misses.

4. The method of claim 2 , wherein the event comprises branch prediction, wherein the different outcomes comprise correct branch predictions and incorrect branch predictions.

5. The method of claim 1 , wherein the prediction table comprises a branch target buffer, and comprises a plurality of entries corresponding to an address of the branch instruction, each of the plurality of entries comprises a different respective fingerprint.

6. A computer program product for implementing fingerprint-based branch prediction, the computer program product comprising:

a computer readable storage medium having program instructions embodied therewith, the program instructions readable by a processor of a computer system to cause the processor to perform a method comprising:

based on encountering a branch instruction during execution of software on the processor, determining a fingerprint of the software, the fingerprint comprising a representation of a sequence of behavior that occurs in the processor while the software is executing;

determining whether a match for the fingerprint and the branch instruction is located in an entry in a prediction table, the entry including an associated prediction field;

based on determining that a match for the fingerprint and the branch instruction is located in an entry in the prediction table:

predicting the branch instruction according to the associated prediction field; and

based on resolution of the branch instruction, updating the associated prediction field;

based on determining that no match for the fingerprint and the branch instruction is located in an entry in the prediction table:

creating a new entry in the prediction table for the fingerprint and the branch instruction; and

based on resolution of the branch instruction, updating a prediction field of the new entry according to the resolution, and

wherein determining the fingerprint comprises tracking a rate of occurrence of an event outcome for an event in the processor by a fingerprint module, wherein the fingerprint module counts a number of occurrences of the event outcome over a predetermined number of occurrences of the event.

7. The computer program product of claim 6 , wherein

determining the fingerprint further comprises tracking the event in the processor by a fingerprint register, wherein the fingerprint register holds a sequence of ones and zeros indicating different outcomes of the event.

8. The computer program product of claim 7 , wherein the event comprises a cache access, wherein the different outcomes comprise cache hits and cache misses.

9. The computer program product of claim 7 , wherein the event comprises branch prediction, wherein the different outcomes comprise correct branch predictions and incorrect branch predictions.

10. The computer program product of claim 6 , wherein the prediction table comprises a branch target buffer, and comprises a plurality of entries corresponding to an address of the branch instruction, each of the plurality of entries comprises a different respective fingerprint.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2015
From: BRADBURY, JONATHAN D.; FRAZIER, GILES R.; GSCHWIND, MICHAEL KARL; JACOBI, CHRISTIAN; SAPORITO, ANTHONY; SHUM, CHUNG-LUNG K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 037222/0718 →