IP Library Granted Patent US 11,983,533
Granted Patent B2
US 11,983,533 · App. 17/851,266 · Granted May 14, 2024

Control flow prediction using pointers

Inventors: Joseph Michael Pusdesris (Austin, TX); Alexander Cole Shulyak (Austin, TX); Yasuo Ishii (Austin, TX); Houdhaifa Bouzguarrou (Valbonne, FR)
Assignee: Arm Limited
G06F9/30058G06F9/3861
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 11,983,533
App. No.
17/851,266
Granted
May 14, 2024
Kind
B2
Abstract

There is provided a data processing apparatus comprising history storage circuitry that stores sets of behaviours of helper instructions for a control flow instruction. Pointer storage circuitry stores pointers, each associated with one of the sets. The behaviours in the one of the sets are indexed according to one of the pointers associated with that one of the sets. Increment circuitry increments at least some of the pointers in response to an increment event and prediction circuitry determines a predicted behaviour of the control flow instruction using one of the sets of behaviours.

Claims (41)

1. A data processing apparatus comprising:

history storage circuitry configured to store a plurality of sets of behaviours of helper instructions for a control flow instruction;

pointer storage circuitry configured to store a plurality of pointers, each associated with one of the sets, wherein the behaviours in the one of the sets are indexed according to one of the pointers associated with that one of the sets;

increment circuitry configured to increment at least some of the pointers in response to an increment event; and

prediction circuitry configured to determine a predicted behaviour of the control flow instruction using one of the sets of behaviours.

2. The data processing apparatus according to claim 1 , comprising:

flush circuitry configured to generate a flush in response to a control flow misprediction; and

the flush circuitry is configured to maintain contents of the history storage circuitry during the flush.

3. The data processing apparatus according to claim 2 , comprising:

recover circuitry configured to recover a previous value of the plurality of pointers in response to the flush.

4. The data processing apparatus according to claim 1 , wherein

each of the sets of behaviours in the plurality of sets of behaviours is different.

5. The data processing apparatus according to claim 1 , wherein

the increment circuitry is configured to increment each of the pointers at a different rate.

6. The data processing apparatus according to claim 1 , wherein

the increment event is a backwards taken branch.

7. The data processing apparatus according to claim 1 , wherein

the increment circuitry is configured to increment only some of the pointers in response to the increment event; and

the increment event is configured to increment a plurality of the pointers.

8. The data processing apparatus according to claim 6 , wherein

the increment circuitry is configured to determine which of the pointers to increment based on a program counter value of the backwards taken branch.

9. The data processing apparatus according to claim 6 , wherein

the increment circuitry is configured to determine which of the pointers to increment based on a hash of the program counter value of the backwards taken branch.

10. The data processing apparatus according to claim 1 , comprising:

training circuitry configured to maintain a plurality of confidence values for each of the sets of behaviours of helper instructions.

11. The data processing apparatus according to claim 10 , wherein

the one of the sets of behaviours used to determine the predicted behaviour of the control flow instruction has a highest confidence value among the confidence values.

12. The data processing apparatus according to claim 1 , wherein

the helper instructions are previous instances of the control flow instruction.

13. The data processing apparatus according to claim 1 , wherein

the helper instructions are previous instances of the control flow instruction in a loop.

14. A data processing method comprising:

storing a plurality of sets of behaviours of helper instructions for a control flow instruction;

storing a plurality of pointers, each associated with one of the sets, wherein the behaviours in the one of the sets are indexed according to one of the pointers associated with that one of the sets;

incrementing at least some of the pointers in response to an increment event; and

determining a predicted behaviour of the control flow instruction using one of the sets of behaviours.

15. A non-transitory computer-readable medium to store computer-readable code for fabrication of a data processing apparatus comprising:

history storage circuitry configured to store a plurality of sets of behaviours of helper instructions for a control flow instruction;

pointer storage circuitry configured to store a plurality of pointers, each associated with one of the sets, wherein the behaviours in the one of the sets are indexed according to one of the pointers associated with that one of the sets;

increment circuitry configured to increment at least some of the pointers in response to an increment event; and

prediction circuitry configured to determine a predicted behaviour of the control flow instruction using one of the sets of behaviours.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2022
From: PUSDESRIS, JOSEPH MICHAEL; SHULYAK, ALEXANDER COLE; ISHII, YASUO; BOUZGUARROU, HOUDHAIFA
To: ARM LIMITED
Reel/Frame 060334/0334 →
Continuity (1)
Related Publication 20230418609A1 · Dec 28, 2023
Cited By (2)
US 12,411,692 US 12,541,371