IP Library Granted Patent US 11,513,801
Granted Patent B2
US 11,513,801 · App. 16/127,093 · Granted Nov 29, 2022

Controlling accesses to a branch prediction unit for sequences of fetch groups

Inventors: Adithya Yalavarti (Boston, MA); John Kalamatianos (Arlington, MA); Matthew R. Poremba (Shavertown, PA)
Assignee: Advanced Micro Devices, Inc.
G06F9/3806G06F1/3287G06F9/30058
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,513,801
App. No.
16/127,093
Granted
Nov 29, 2022
Kind
B2
Abstract

An electronic device is described that handles control transfer instructions (CTIs) when executing instructions in program code. The electronic device has a processor that includes a branch prediction functional block and a sequential fetch logic functional block. The sequential fetch logic functional block determines, based on a record associated with a CTI, that a specified number of fetch groups of instructions that were previously determined to include no CTIs are to be fetched for execution in sequence following the CTI. When each of the specified number of fetch groups is fetched and prepared for execution, the sequential fetch logic prevents corresponding accesses of the branch prediction functional block for acquiring branch prediction information for instructions in that fetch group.

Claims (59)

1. An electronic device that handles control transfer instructions (CTIs) when executing instructions in program code, the electronic device comprising:

a processor that includes:

a branch prediction functional block; and

a sequential fetch logic functional block;

wherein the sequential fetch logic functional block:

determines, based on a count of a number of fetch groups that are to be fetched for execution in sequence before a subsequent CTI retires from a record associated with a CTI, that a specified number of fetch groups of instructions that were previously determined to include no CTIs are to be fetched for execution in sequence following the CTI; and

when each of the specified number of fetch groups is fetched and prepared for execution before instructions in that fetch group are dispatched to one or more execution units for execution, prevents corresponding accesses of the branch prediction functional block for acquiring branch prediction information for instructions in that fetch group.

2. The electronic device of claim 1 , wherein the processor further includes:

a branch target buffer (BTB) associated with the branch prediction functional block;

wherein the sequential fetch logic functional block:

upon detecting a specified type of CTI, keeps a count of a number of fetch groups that are retired in sequence before a subsequent CTI retires; and

stores, in an entry in the BTB associated with the CTI, a record that indicates the count of the number of fetch groups.

3. The electronic device of claim 2 , wherein the specified type of CTI includes unconditional CTIs having a static target instruction or conditional CTIs for which a non-taken path is directed to a static target instruction.

4. The electronic device of claim 2 , wherein the sequential fetch logic functional block:

stores, in the entry in the BTB associated with the CTI, the record that indicates the count of the number of fetch groups only when the count of the number of fetch groups is greater than a threshold value.

5. The electronic device of claim 1 , wherein the processor further includes:

a sequential fetch table (SFT);

wherein the sequential fetch logic functional block:

upon a retirement of a target instruction for a CTI retiring, keeps a count of a number of fetch groups that are retired in sequence before a subsequent CTI retires; and

stores, in an entry in the SFT associated with the target instruction for the CTI, a record that indicates the count of the number of fetch groups.

6. The electronic device of claim 5 , wherein the sequential fetch logic functional block:

stores, in the entry in the SFT associated with the target instruction for the CTI, the record that indicates the count of the number of fetch groups only when the count of the number of fetch groups is greater than a threshold value.

7. The electronic device of claim 1 , wherein, when preventing corresponding accesses of the branch prediction functional block for acquiring branch prediction information when each of the specified number of fetch groups is fetched and prepared for execution, the sequential fetch logic functional block is configured to:

set a counter equal to the specified number of fetch groups;

when each fetch group is fetched and prepared for execution and the corresponding access of the branch prediction functional block is prevented, decrement the counter; and

after the counter reaches zero, as one or more subsequent fetch groups are fetched and prepared for execution, permit corresponding accesses of the branch prediction functional block to be performed to acquire branch prediction information for instructions in the one or more subsequent fetch groups.

8. The electronic device of claim 1 , wherein the branch prediction functional block comprises:

a branch target buffer (BTB); and

a branch direction predictor;

wherein, when preventing the accesses of the branch prediction functional block, the sequential fetch logic functional block prevents at least accesses of the BTB and the branch direction predictor.

9. The electronic device of claim 1 , wherein, while each of the specified number of fetch groups is fetched and prepared for execution:

preventing accesses of one or more functional blocks that store records associated with CTIs; and

placing the one or more functional blocks in a reduced power mode.

10. The electronic device of claim 1 , wherein each fetch group includes a predetermined number of instructions that are fetched in a same transfer operation to be prepared for execution in the processor.

11. The electronic device of claim 1 , wherein preventing corresponding accesses of the branch prediction functional block includes preventing at least one operation that consumes electrical power, thereby conserving electrical power.

12. A method for handling control transfer instructions (CTIs) when executing instructions in program code in an electronic device having a processor that includes a branch prediction functional block and a sequential fetch logic functional block, the method comprising:

determining, by the sequential fetch logic functional block, based on a count of a number of fetch groups that are to be fetched for execution in sequence before a subsequent CTI retires from a record associated with a CTI, that a specified number of fetch groups of instructions that were previously determined to include no CTIs are to be fetched for execution in sequence following the CTI; and

when each of the specified number of fetch groups is fetched and prepared for execution before instructions in that fetch group are dispatched to one or more execution units for execution, preventing, by the sequential fetch logic functional block, corresponding accesses of the branch prediction functional block for acquiring branch prediction information for instructions in that fetch group.

13. The method of claim 12 , wherein the processor further includes a branch target buffer (BTB) associated with the branch prediction functional block, and wherein the method further comprises:

upon detecting a specified type of CTI, keeping, by the processor, a count of a number of fetch groups that are retired in sequence before a subsequent CTI retires; and

storing, by the sequential fetch logic functional block, in an entry in the BTB associated with the CTI, a record that indicates the count of the number of fetch groups.

14. The method of claim 13 , wherein the specified type of CTI includes unconditional CTIs having a static target instruction or conditional CTIs for which a non-taken path is directed to a static target instruction.

15. The method of claim 13 , further comprising:

storing, in the entry in the BTB associated with the CTI, the record that indicates the count of the number of fetch groups only when the count of the number of fetch groups is greater than a threshold value.

16. The method of claim 12 , wherein the processor further includes a sequential fetch table (SFT), and wherein the method further comprises:

upon a retirement of a target instruction for a CTI, keeping, by the processor, a count of a number of fetch groups that are retired in sequence before a subsequent CTI retires; and

storing, by the sequential fetch logic functional block, in an entry in the SFT associated with the target instruction for the CTI, a record that indicates the count of the number of fetch groups.

17. The method of claim 16 , further comprising:

storing, in the entry in the SFT associated with the target instruction for the CTI, the record that indicates the count of the number of fetch groups only when the count of the number of fetch groups is greater than a threshold value.

18. The method of claim 12 , wherein preventing corresponding accesses of the branch prediction functional block for acquiring branch prediction information when each of the specified number of fetch groups is fetched and prepared for execution comprises:

setting, by the sequential fetch logic functional block, a counter equal to the specified number of fetch groups;

when each fetch group is fetched and prepared for execution and the corresponding access of the branch prediction functional block is prevented, decrementing, by the sequential fetch logic functional block, the counter; and

after the counter reaches zero, as one or more subsequent fetch groups are fetched and prepared for execution, permitting, by the sequential fetch logic functional block, corresponding accesses of the branch prediction functional block to be performed to acquire branch prediction information for instructions in the one or more subsequent fetch groups.

19. The method of claim 12 , wherein the branch prediction functional block comprises a branch target buffer (BTB) and a branch direction predictor, and wherein preventing the accesses of the branch prediction functional block comprises preventing at least accesses of the BTB and the branch direction predictor.

20. The method of claim 12 , wherein each fetch group includes a predetermined number of instructions that are fetched in a same transfer operation to be prepared for execution in the processor.

21. The method of claim 12 , further comprising, while each of the specified number of fetch groups is fetched and prepared for execution:

preventing, by the sequential fetch logic functional block, accesses of one or more functional blocks that store records associated with CTIs; and

placing, by the sequential fetch logic functional block, the one or more functional blocks in a reduced power mode.

22. The method of claim 12 , wherein preventing corresponding accesses of the branch prediction functional block includes preventing at least one operation that consumes electrical power, thereby conserving electrical power.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2018
From: YALAVARTI, ADITHYA; KALAMATIANOS, JOHN; POREMBA, MATTHEW R.
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 046832/0896 →
Continuity (1)
Related Publication 20200081716A1 · Mar 12, 2020