Instruction pointer limits in processor that performs speculative out-of-order instruction execution
First Claim
Patent Images
1. A method for enforcing an instruction pointer limit in an out-of-order processor, comprising the steps of:
- reading a set of reorder buffer entries, the reorder buffer entries storing a set of result data values from out-of-order speculative execution of a set of instructions, wherein the reorder buffer entries comprise a first and a second reorder buffer entry, a first instruction corresponding to the first reorder buffer entry occurring before a second instruction corresponding to the second reorder buffer entry;
determining a speculative instruction pointer for each reorder buffer entry, wherein a first speculative instruction pointer for the first reorder buffer entry is determined by adding an instruction pointer to an instruction pointer delta value from the first reorder buffer entry that indicates a length of the first instruction, and a second speculative instruction pointer for the second reorder buffer entry is determined by adding the instruction pointer to the instruction pointer delta value for the first instruction and an instruction pointer delta value from the second reorder buffer entry that indicates a length of the second instruction;
determining whether each speculative instruction pointer exceeds the instruction pointer limit; and
committing the result data value of each reorder buffer entry to the architectural state if the speculative instruction pointer for the result data value does not exceed the instruction pointer limit.
0 Assignments
0 Petitions
Accused Products
Abstract
A method for enforcing an instruction pointer limit in a processor, wherein a retire circuit determines a speculative instruction pointer for a set of retiring instruction during a retirement operation. The retire circuit also determines whether each speculative instruction pointer exceeds the instruction pointer limit. The retire circuit commits the result data value of each instruction to the architectural state if the speculative instruction pointer for the result data value does not exceed the instruction pointer limit.
43 Citations
53 Claims
-
1. A method for enforcing an instruction pointer limit in an out-of-order processor, comprising the steps of:
-
reading a set of reorder buffer entries, the reorder buffer entries storing a set of result data values from out-of-order speculative execution of a set of instructions, wherein the reorder buffer entries comprise a first and a second reorder buffer entry, a first instruction corresponding to the first reorder buffer entry occurring before a second instruction corresponding to the second reorder buffer entry; determining a speculative instruction pointer for each reorder buffer entry, wherein a first speculative instruction pointer for the first reorder buffer entry is determined by adding an instruction pointer to an instruction pointer delta value from the first reorder buffer entry that indicates a length of the first instruction, and a second speculative instruction pointer for the second reorder buffer entry is determined by adding the instruction pointer to the instruction pointer delta value for the first instruction and an instruction pointer delta value from the second reorder buffer entry that indicates a length of the second instruction; determining whether each speculative instruction pointer exceeds the instruction pointer limit; and committing the result data value of each reorder buffer entry to the architectural state if the speculative instruction pointer for the result data value does not exceed the instruction pointer limit. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A circuit for enforcing an instruction pointer limit in an out-of-order processor, comprising:
-
a circuit for reading a set of reorder buffer entries, the reorder buffer entries storing a set of result data values from out-of-order speculative execution of a set of instructions, wherein the reorder buffer entries comprise a first and a second reorder buffer entry, a first instruction corresponding to the first reorder buffer entry occurring before a second instruction corresponding to the second reorder buffer entry; a circuit for determining a speculative instruction pointer for each reorder buffer entry, wherein a first speculative instruction pointer for the first reorder buffer entry is determined by adding an instruction pointer to an instruction pointer delta value from the first reorder buffer entry that indicates a length of the first instruction, and a second speculative instruction pointer for the second reorder buffer entry is determined by adding the instruction pointer to the instruction pointer delta value for the first instruction and an instruction pointer delta value from the second reorder buffer entry that indicates a length of the second instruction; a circuit for determining whether each speculative instruction pointer exceeds the instruction pointer limit; and a circuit for committing the result data value of each reorder buffer entry to the architectural state if the speculative instruction pointer of the result data value does not exceed the instruction pointer limit. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. A circuit for enforcing an instruction pointer limit in an out-of-order processor, comprising:
-
a read control circuit reading a set of reorder buffer entries, the reorder buffer entries storing a set of result data values from out-of-order speculative execution of a set of instructions, wherein the reorder buffer entries comprise a first and a second reorder buffer entry, a first instruction corresponding to the first reorder buffer entry occurring before a second instruction corresponding to the second reorder buffer entry; an instruction pointer logic circuit determining a speculative instruction pointer for each reorder buffer entry, comprising; a first adder circuit generating a speculative instruction pointer for the first reorder buffer entry by adding an instruction pointer to an instruction pointer delta value from the first reorder buffer entry, the instruction pointer delta value from the first reorder buffer entry indicates a length of the instruction corresponding to the first reorder buffer entry, and a second adder circuit a speculative instruction pointer for the second reorder buffer entry by adding the instruction pointer, the instruction pointer delta value from the first reorder buffer entry, and an instruction pointer delta value from the second reorder buffer entry, the instruction pointer delta value from the second reorder buffer entry indicating a length of the instruction corresponding to the second reorder buffer entry, the instruction pointer logic circuit determining whether each speculative instruction pointer exceeds the instruction pointer limit; an event circuit committing the result data value of each reorder buffer entry to the architectural state if the speculative instruction pointer for the result data value does not exceed the instruction pointer limit. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
-
-
43. A computer system, comprising:
-
a memory subsystem storing a plurality of instructions according to a sequential program order, the memory subsystem coupled for communication over a host bus; a processor fetching the instructions from the memory subsystem over the host bus and speculatively executing the instructions, the processor comprising a reorder buffer circuit storing a set of result data values for the instructions in a set of reorder buffer entries, wherein the reorder buffer entries comprise a first reorder buffer entry and a second reorder buffer entry such that the instruction corresponding to the second reorder buffer entry occurs after the instruction corresponding to the first reorder buffer entry in the sequential program order, the processor further comprising an instruction pointer logic circuit that determines a speculative instruction pointer for each reorder buffer entry and compares each speculative instruction pointer to an instruction pointer limit, the processor further comprising an event circuit that commits the result data value of each reorder buffer entry to the architectural state if the speculative instruction pointer for the result data value does not exceed the instruction pointer limit. - View Dependent Claims (44, 45, 46, 47)
-
-
48. A computer system, comprising:
-
a memory subsystem storing a plurality of instructions according to a sequential program order, the memory subsystem coupled for communication over a host bus; a processor fetching the instructions from the memory subsystem over the host bus and speculatively executing the instructions, the processor comprising; a circuit for reading the reorder buffer entries, wherein the reorder buffer entries comprise a first reorder buffer entry and a second reorder buffer entry such that the instruction corresponding to the second reorder buffer entry occurs after the instruction corresponding to the first reorder buffer entry in the sequential program order; a circuit for determining the speculative instruction pointer for each reorder buffer entry, the speculative instruction pointer indicating an updated instruction pointer for the processor if the corresponding result data value is committed to an architectural state; a circuit for determining whether each speculative instruction pointer exceeds the instruction pointer limit; and a circuit for committing the result data value of each reorder buffer entry to the architectural state if the speculative instruction pointer for the result data value does not exceed the instruction pointer limit. - View Dependent Claims (49, 50, 51, 52)
-
-
53. A method for executing multiple out of order branch instructions in a same clock cycle, comprising the steps of:
-
determining a speculative instruction pointer for each executed instruction by adding an instruction pointer to an instruction pointer delta value associated with each instruction executed that comprises a delta value for a particular a instruction plus delta values for instructions preceding the particular instruction; comparing each speculative instruction pointer to an instruction pointer limit; determining that a speculative instruction pointer exceeds the instruction pointer limit if the speculative instruction pointer is greater than or equal to the instruction pointer limit plus one; if the speculative instruction pointer does not exceed the instruction pointer limit, committing a result data entry associated with the speculative instruction pointer to an architectural state; if the speculative instruction pointer does exceed the instruction pointer limit, generating and storing fault information; comparing each of the target addresses to the instruction pointer limit; determining that a target address exceeds the instruction pointer limit if the target address is greater than or equal to the instruction pointer limit; and for a branch instruction whose speculative instruction pointer does not exceed the instruction pointer limit, calculating an updated instruction pointer value by summing an associated target address with an associated instruction pointer delta value and instruction pointer delta values of other instructions of the instructions executed whose speculative instruction pointers do not exceed the instruction pointer limit.
-
Specification