Load speculation recovery
First Claim
1. A processor comprising:
- one or more execution units; and
a scheduler configured to schedule instruction operations for execution on the one or more execution units;
wherein the processor is configured to;
maintain a first dependency vector for a first instruction operation, wherein the first dependency vector comprises one or more bits stored in one or more propagate bit positions and one or more cancel bit positions;
mark an earliest bit of the first dependency vector to indicate a dependency of the first instruction operation on a second instruction operation; and
for each clock cycle the second instruction operation executes, shift bits of the first dependency vector from the one or more propagate bit positions toward the one or more cancel bit positions; and
cancel the first instruction operation responsive to receiving a cancel signal and determining a bit of the dependency vector has been shifted into a cancel bit position of the one or more cancel bit positions.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems, apparatuses, and methods for managing dependencies between instruction operations when speculatively issuing load instruction operations. A processor may maintain dependency vectors for sources of instruction operations dispatched to the scheduler. The dependency vector may include a column for each cycle of the load recovery window and a row for each load execution pipeline. When a load speculatively issues, any instruction operation which is dependent on the load may have a bit set in the earliest bit position of its dependency vector to indicate the dependency. The bit may shift in the dependency vector toward the cancel bit position during each clock cycle as the load executes. If the load does not produce its data at the expected latency, an instruction operation may be canceled if there is a bit in the cancel bit position of the dependency vector row corresponding to the execution pipeline of the load.
95 Citations
21 Claims
-
1. A processor comprising:
-
one or more execution units; and a scheduler configured to schedule instruction operations for execution on the one or more execution units; wherein the processor is configured to; maintain a first dependency vector for a first instruction operation, wherein the first dependency vector comprises one or more bits stored in one or more propagate bit positions and one or more cancel bit positions; mark an earliest bit of the first dependency vector to indicate a dependency of the first instruction operation on a second instruction operation; and for each clock cycle the second instruction operation executes, shift bits of the first dependency vector from the one or more propagate bit positions toward the one or more cancel bit positions; and cancel the first instruction operation responsive to receiving a cancel signal and determining a bit of the dependency vector has been shifted into a cancel bit position of the one or more cancel bit positions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method comprising:
-
maintaining a first dependency vector for a first instruction operation, wherein the first dependency vector comprises one or more bits stored in one or more propagate bit positions and one or more cancel bit positions; marking an earliest bit of the first dependency vector to indicate a dependency of the first instruction operation on a second instruction operation; and for each clock cycle the second instruction operation executes, shifting bits of the first dependency vector from the one or more propagate bit positions toward the one or more cancel bit position; cancelling the first instruction operation responsive to receiving a cancel signal and determining a bit of the dependency vector has been shifted into a cancel bit position of the one or more cancel bit positions. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A computing system comprising:
-
a memory; and a processor comprising; one or more execution units; and a scheduler configured to schedule instruction operations for execution on the one or more execution units; wherein the processor is configured to; maintain a first dependency vector for a first instruction operation, wherein the first dependency vector comprises one or more bits stored in one or more propagate bit positions and one or more cancel bit positions; mark an earliest bit of the first dependency vector to indicate a dependency of the first instruction operation on a second instruction operation; and for each clock cycle the second instruction operation executes, shift bits of the first dependency vector from the one or more propagate bit positions toward the one or more cancel bit position; cancel the first instruction operation responsive to receiving a cancel signal and determining a bit of the dependency vector has been shifted into a cancel bit position of the one or more cancel bit positions. - View Dependent Claims (17, 18, 19, 20, 21)
-
Specification