IP Library Granted Patent US 7,257,699
Granted Patent B2
US 7,257,699 · App. 11/058,522 · Granted Aug 14, 2007

Selective execution of deferred instructions in a processor that supports speculative execution

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 7,257,699
App. No.
11/058,522
Granted
Aug 14, 2007
Kind
B2
Abstract

One embodiment of the present invention provides a system which selectively executes deferred instructions following a return of a long-latency operation in a processor that supports speculative-execution. During normal-execution mode, the processor issues instructions for execution in program order. When the processor encounters a long-latency operation, such as a load miss, the processor records the long-latency operation in a long-latency scoreboard, wherein each entry in the long-latency scoreboard includes a deferred buffer start index. Upon encountering an unresolved data dependency during execution of an instruction, the processor performs a checkpointing operation and executes subsequent instructions in an execute-ahead mode, wherein instructions that cannot be executed because of the unresolved data dependency are deferred into a deferred buffer, and wherein other non-deferred instructions are executed in program order. Upon encountering a deferred instruction that depends on a long-latency operation within the long-latency scoreboard, the processor updates a deferred buffer start index associated with the long-latency operation to point to position in the deferred buffer occupied by the deferred instruction. When a long-latency operation returns, the processor executes instructions in the deferred buffer starting at the deferred buffer start index for the returning long-latency operation.

Claims (45)

1. A method for selectively executing deferred instructions following a return of a long-latency operation in a processor that supports speculative-execution, comprising:

issuing instructions for execution in program order during a normal-execution mode;

when a long-latency operation is encountered, recording the long-latency operation in a long-latency scoreboard wherein each position in the long-latency scoreboard includes a deferred buffer start index;

upon encountering an unresolved data dependency during execution of an instruction, performing a checkpointing operation and executing subsequent instructions in an execute-ahead mode, wherein instructions that cannot be executed because of the unresolved data dependency are deferred into a deferred buffer, and wherein other non-deferred instructions are executed in program order,

upon encountering a deferred instruction that depends on a long-latency operation within the long-latency scoreboard, updating the deferred buffer start index associated with the long-latency operation to point to position in the deferred buffer occupied by the deferred instruction; and

when a long-latency operation returns, executing instructions in the deferred buffer starting at the deferred buffer start index for the returning long-latency operation.

2. The method of claim 1 , wherein the processor initializes the deferred buffer start index associated with each entry in the long-latency scoreboard to a highest possible value.

3. The method of claim 1 , wherein the processor updates the value for the deferred buffer start index for a long-latency operation in the long-latency scoreboard when the processor stores a dependent instruction in the deferred buffer in a position closer to the start of the deferred buffer than the existing value for the deferred buffer start index indicates.

4. The method of claim 1 , wherein deferred instructions perform a content addressable memory (CAM) lookup in the long-latency scoreboard to identify long-latency operations for one or more operands required by the deferred instruction.

5. The method of claim 1 , further comprising maintaining a deferred buffer count which indicates where in the deferred buffer the last deferred instruction was stored.

6. The method of claim 1 , wherein, when beginning execution of deferred instructions following the return of a long-latency operation, the deferred instruction counter is reset to the position of the deferred buffer start index associated with the long-latency operation.

7. The method of claim 1 , wherein executing deferred instructions in the deferred mode involves:

issuing deferred instructions for execution in program order;

re-deferring execution of deferred instructions that still cannot be executed because of unresolved data dependencies; and

executing other deferred instructions that are able to be executed in program order.

8. The method of claim 7 , wherein the method further comprises re-deferring instructions into the deferred buffer starting at the location specified by the deferred buffer start index.

9. The method of claim 8 , wherein when instructions are re-deferred, the method further comprises performing a CAM lookup in the long-latency scoreboard to identify long-latency operations for one or more operands required by the deferred instruction and, if necessary, updating the deferred buffer start index.

10. The method of claim 7 , wherein if some deferred instructions are deferred again, the method further comprises returning to execute-ahead mode at the point where execute-ahead mode left off.

11. An apparatus for selectively executing deferred instructions following a return of a long-latency operation in a processor that supports speculative-execution, comprising:

a processor;

an execution mechanism within the processor that is configured to issue instructions for execution in program order during a normal-execution mode;

wherein when a long-latency operation is encountered, the execution mechanism is configured to record the long-latency operation in a long-latency scoreboard wherein each position in the long-latency scoreboard includes a deferred buffer start index;

wherein upon encountering an unresolved data dependency during execution of an instruction, the execution mechanism is configured to perform a checkpointing operation and execute subsequent instructions in an execute-ahead mode, wherein instructions that cannot be executed because of the unresolved data dependency are deferred into a deferred buffer, and wherein other non-deferred instructions are executed in program order,

wherein upon encountering a deferred instruction that depends on a long-latency operation within the long-latency scoreboard, the execution mechanism is configured to update the deferred buffer start index associated with the long-latency operation to point to position in the deferred buffer occupied by the deferred instruction; and

wherein when a long-latency operation returns, the execution mechanism is configured to execute all of the instructions in the deferred buffer starting at the deferred buffer start index for the returning long-latency operation.

12. The apparatus of claim 11 , wherein execution mechanism is configured such that the deferred buffer start index associated with each entry in the long-latency scoreboard is initialized to a highest possible value.

13. The apparatus of claim 11 , wherein the execution mechanism is configured such that the deferred buffer start index for a long-latency operation in the long-latency scoreboard is only updated when a deferred instruction which depends on the long-latency operation enters the deferred buffer in a position closer to the start of the deferred buffer than the existing deferred buffer start index indicates.

14. The apparatus of claim 11 , wherein the execution mechanism is configured such that the deferred instructions perform a content addressable memory (CAM) lookup in the long-latency scoreboard to identify long-latency operations for one or more operands required by the deferred instruction.

15. The apparatus of claim 11 , wherein the execution mechanism is configured such to maintain a deferred buffer count which indicates where in the deferred buffer the last deferred instruction was stored.

16. The apparatus of claim 11 , wherein, when beginning execution of deferred instructions following the return of a long-latency operation, the execution mechanism is configured such to reset a deferred instruction counter to the position of the deferred buffer start index associated with the long-latency operation.

17. The apparatus of claim 11 , wherein while executing deferred instructions in the deferred mode, the execution mechanism is configured to:

issuing deferred instructions for execution in program order;

deferring execution of deferred instructions that still cannot be executed because of unresolved data dependencies; and

executing other deferred instructions that are able to be executed in program order.

18. The apparatus of claim 17 , wherein the execution mechanism is configured to re-defer instructions into the deferred buffer starting at the location specified by the deferred buffer start index.

19. The apparatus of claim 18 , wherein when instructions are re-deferred, the execution mechanism is configured to perform a CAM lookup in the long-latency scoreboard to identify long-latency operations for one or more operands required by the deferred instruction and, if necessary, updating the deferred buffer start index.

20. The apparatus of claim 17 , wherein if some deferred instructions are deferred again, the execution mechanism is configured to return to execute-ahead mode at the point where execute-ahead mode left off.

21. A computer system for selectively executing deferred instructions following a return of a long-latency operation in a processor that supports speculative-execution, comprising:

a memory;

a processor;

an execution mechanism within the processor which is configured to issue instructions for execution in program order during a normal-execution mode;

wherein when a long-latency operation is encountered, the execution mechanism is configured to record the long-latency operation in a long-latency scoreboard wherein each position in the long-latency scoreboard includes a deferred buffer start index;

wherein upon encountering an unresolved data dependency during execution of an instruction, the execution mechanism is configured to perform a checkpointing operation and execute subsequent instructions in an execute-ahead mode, wherein instructions that cannot be executed because of the unresolved data dependency are deferred into a deferred buffer, and wherein other non-deferred instructions are executed in program order,

wherein upon encountering a deferred instruction that depends on a long-latency operation within the long-latency scoreboard, the execution mechanism is configured to update the deferred buffer start index associated with the long-latency operation to point to position in the deferred buffer occupied by the deferred instruction; and

wherein when a long-latency operation returns, the execution mechanism is configured to execute instructions in the deferred buffer starting at the deferred buffer start index for the returning long-latency operation.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037302/0843 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2005
From: CHAUDHRY, SHAILENDER; CAPRIOLI, PAUL; TREMBLAY, MARC
To: SUN MICROSYSTEMS, INC.
Reel/Frame 016281/0210 →