IP Library Granted Patent US 10,908,913
Granted Patent B2
US 10,908,913 · App. 16/537,329 · Granted Feb 2, 2021

Method for a delayed branch implementation by using a front end track table

Inventor: Mohammad Abdallah (El Dorado Hills, CA)
Assignee: Intel Corporation
G06F9/3806G06F9/30094G06F9/3842G06F9/3844G06F9/30021G06F9/30058G06F9/321G06F9/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 10,908,913
App. No.
16/537,329
Granted
Feb 2, 2021
Kind
B2
Abstract

A method for a delayed branch implementation by using a front end track table. The method includes receiving an incoming instruction sequence using a global front end, wherein the instruction sequence includes at least one branch, creating a delayed branch in response to receiving the one branch, and using a front end track table to track both the delayed branch the one branch.

Claims (56)

1. A method for determining outcomes of branch instructions by using a delayed branch compare record table, the method comprising:

receiving, by a processor, an incoming instruction sequence, wherein the instruction sequence includes a branch instruction; and

tracking, by the processor, both a delayed branch instruction and the branch instruction using the delayed branch compare record table in response to receipt of the branch instruction, wherein the delayed branch compare record table uses an identifier value to link between the delayed branch instruction and the branch instruction in the delayed branch compare record table,

wherein the incoming instruction sequence is separate from the delayed branch compare record table.

2. The method of claim 1 , further comprising:

performing the delayed branch instruction and storing an outcome of the delayed branch instruction in a compare outcome field of an entry in the delayed branch compare record table corresponding to the identifier value of the delayed branch instruction and the branch instruction when the delayed branch instruction is performed a predefined time period before a fetching of the branch instruction.

3. The method of claim 2 , further comprising:

fetching the branch instruction for execution;

checking the entry of the delayed branch compare record table that corresponds to the identifier value to determine whether the compare outcome field of the entry has been updated; and

using the outcome stored in the compare outcome field of the entry for execution of the branch instruction in response to determining that the compare outcome field has been updated.

4. The method of claim 1 , further comprising:

checking an entry of the delayed branch compare record table that corresponds to the identifier value to determine whether a compare outcome field of the entry has been updated;

checking a branch prediction table in response to determining that the compare outcome field has not been updated; and

using a branch prediction outcome from the branch prediction table for execution of the branch instruction.

5. The method of claim 4 , further comprising:

comparing, upon the compare outcome field of the entry being updated, the branch prediction outcome from the branch prediction table with the compare outcome field of the entry; and

triggering a branch flush, in response to determining that the branch prediction outcome from the branch prediction table is different from the compare outcome field of the entry, to flush all instructions in an execution pipeline after the branch instruction.

6. The method of claim 1 , wherein the identifier value is based on a program counter value associated with the delayed branch instruction.

7. The method of claim 1 , wherein the identifier value is based on a program counter value associated with the branch instruction.

8. A system for determining outcomes of branch instructions by using a delayed branch compare record table, the system comprising:

a front-end unit to receive an incoming instruction sequence, wherein the instruction sequence includes a branch instruction; and

a delayed branch compare record table to track both a delayed branch instruction and the branch instruction using the delayed branch compare record table in response to receipt of the branch instruction, wherein the delayed branch compare record table uses an identifier value to link between the delayed branch instruction and the branch instruction in the delayed branch compare record table,

wherein the incoming instruction sequence is separate from the delayed branch compare record table.

9. The system of claim 8 , further comprising:

an execution unit to perform the delayed branch instruction and storing an outcome of the delayed branch instruction in a compare outcome field of an entry in the delayed branch compare record table corresponding to the identifier value of the delayed branch instruction and the branch instruction when the delayed branch instruction is performed a predefined time period before a fetching of the branch instruction.

10. The system of claim 9 , further comprising:

a fetch unit to fetch the branch instruction for execution, wherein the execution unit to check the entry of the delayed branch compare record table that corresponds to the identifier value to determine whether the compare outcome field of the entry has been updated and use the outcome stored in the compare outcome field of the entry for execution of the branch instruction in response to determining that the compare outcome field has been updated.

11. The system of claim 8 , further comprising:

an execution unit to:

check an entry of the delayed branch compare record table that corresponds to the identifier value to determine whether a compare outcome field of the entry has been updated;

check a branch prediction table in response to determining that the compare outcome field has not been updated; and

use a branch prediction outcome from the branch prediction table for execution of the branch instruction.

12. The system of claim 11 , further comprising:

a retirement unit to:

compare, upon the compare outcome field of the entry being updated, the branch prediction outcome from the branch prediction table with the compare outcome field of the entry; and

trigger a branch flush, in response to determining that the branch prediction outcome from the branch prediction table is different from the compare outcome field of the entry, to flush all instructions in an execution pipeline after the branch instruction.

13. The system of claim 8 , wherein the identifier value is based on a program counter value associated with the delayed branch instruction.

14. The system of claim 8 , wherein the identifier value is based on a program counter value associated with the branch instruction.

15. A non-transitory machine-readable medium containing instructions that, when performed by a processor, cause the performance of operations comprising:

receiving an incoming instruction sequence, wherein the instruction sequence includes a branch instruction; and

tracking both a delayed branch instruction and the branch instruction using the delayed branch compare record table in response to receipt of the branch instruction, wherein the delayed branch compare record table uses an identifier value to link between the delayed branch instruction and the branch instruction in the delayed branch compare record table,

wherein the incoming instruction sequence is separate from the delayed branch compare record table.

16. The non-transitory machine-readable medium of claim 15 , wherein the operations further comprise:

performing the delayed branch instruction and storing an outcome of the delayed branch instruction in a compare outcome field of an entry in the delayed branch compare record table corresponding to the identifier value of the delayed branch instruction and the branch instruction.

17. The non-transitory machine-readable medium of claim 16 , wherein the operations further comprise:

fetching the branch instruction for execution;

checking the entry of the delayed branch compare record table that corresponds to the identifier value to determine whether the compare outcome field of the entry has been updated; and

using the outcome stored in the compare outcome field of the entry for execution of the branch instruction in response to determining that the compare outcome field has been updated.

18. The non-transitory machine-readable medium of claim 15 , wherein the operations further comprise:

checking an entry of the delayed branch compare record table that corresponds to the identifier value to determine whether a compare outcome field of the entry has been updated;

checking a branch prediction table in response to determining that the compare outcome field has not been updated; and

using a branch prediction outcome from the branch prediction table for execution of the branch instruction.

19. The non-transitory machine-readable medium of claim 18 , wherein the operations further comprise:

comparing, upon the compare outcome field of the entry being updated, the branch prediction outcome from the branch prediction table with the compare outcome field of the entry; and

triggering a branch flush, in response to determining that the branch prediction outcome from the branch prediction table is different from the compare outcome field of the entry, to flush all instructions in an execution pipeline after the branch instruction.

20. The non-transitory machine-readable medium of claim 15 , wherein the identifier value is based on one of a program counter value associated with the delayed branch instruction and a program counter value associated with the branch instruction.

Continuity (4)
Continuation 15783923 · Oct 13, 2017
Continuation 14216683 · Mar 17, 2014
Provisional Application 61852057 · Mar 15, 2013
Related Publication 20190361704A1 · Nov 28, 2019