IP Library Granted Patent US 7,574,588
Granted Patent B2
US 7,574,588 · App. 11/359,659 · Granted Aug 11, 2009

Time-multiplexed speculative multi-threading to support single-threaded applications

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,574,588
App. No.
11/359,659
Granted
Aug 11, 2009
Kind
B2
Abstract

One embodiment of the present invention provides a system that facilitates interleaved execution of a head thread and a speculative thread within a single processor pipeline. The system operates by executing program instructions using the head thread, and by speculatively executing program instructions in advance of the head thread using the speculative thread, wherein the head thread and the speculative thread execute concurrently through time-multiplexed interleaving in the single processor pipeline.

Claims (70)

1. A method for interleaving execution within a single processor pipeline of a head thread and a speculative thread, the method comprising:

executing program instructions using the head thread which operates on primary versions of memory elements;

speculatively executing program instructions in advance of the head thread using the speculative thread which operates on space-dimensioned versions of the memory elements; and

if the speculative thread performs a read operation to a memory element:

determining if the space-time dimensioned version of the memory element exists;

if the space-time dimensioned version of the memory element exists, reading the space-time dimensioned version of the memory element;

otherwise, reading the primary version of the memory element; and

updating status information associated with the memory element to indicate the memory element has been read by the speculative thread;

upon the head thread reaching a point in the program where the speculative thread began executing, merging the space-time dimensioned versions of the memory elements into the primary versions of the memory elements, so that updates to the space-time dimensioned versions of the memory elements are incorporated into corresponding primary versions of memory elements; and

wherein instructions from the head thread and instructions from the speculative thread are interleaved in a round-robin fashion and execute concurrently through time-multiplexed interleaving in the single processor pipeline.

2. The method of claim 1 , wherein the speculative thread includes one or more speculative threads.

3. The method of claim 1 , wherein if the speculative thread performs a write operation to a memory element, the method further comprises:

determining if the space-time dimensioned version of the memory element exists;

if the space-time dimensioned version of the memory element does not exist, creating the space-time dimensioned version of the memory element; and

performing the write operation to the space-time dimensioned version of the memory element.

4. The method of claim 1 , wherein if the head thread performs a read operation to a memory element, the method further comprises performing the read operation to the primary version of the memory element.

5. The method of claim 1 , wherein if the head thread performs a write operation to a memory element, the method further comprises:

performing the write operation to the primary version of the memory element;

checking status information associated with the memory element to determine if the memory element has been read by the speculative thread;

if the memory element has been read by the speculative thread, causing the speculative thread to roll back so that the speculative thread can read a result of the write operation; and

if the memory element has not been read by the speculative thread, performing the write operation to the space-time dimensioned version of the memory element if the space-time dimensioned version exists.

6. The method of claim 1 , wherein the memory elements include objects defined within an object-oriented programming system.

7. The method of claim 1 , wherein the head thread and the speculative thread access separate hardware register files.

8. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for interleaving within a single processor pipeline execution of a head thread and a speculative thread, the method comprising:

executing program instructions using the head thread which operates on primary version of memory elements;

speculatively executing program instructions in advance of the head thread using the speculative thread which operates on space-dimensioned versions of the memory elements; and

if the speculative thread performs a read operation to a memory element:

determining if the space-time dimensioned version of the memory element exists;

if the space-time dimensioned version of the memory element exists, reading the space-time dimensioned version of the memory element;

otherwise, reading the primary version of the memory element; and

updating status information associated with the memory element to indicate the memory element has been read by the speculative thread;

upon the head thread reaching a point in the program where the speculative thread began executing, merging the space-time dimensioned versions of the memory elements into the primary versions of the memory elements, so that updates to the space-time dimensioned versions of the memory elements are incorporated into corresponding primary versions of memory elements; wherein instructions from the head thread and instructions from the speculative thread are interleaved in a round-robin fashion and execute concurrently through time-multiplexed interleaving in the single processor pipeline.

9. The computer-readable storage medium of claim 8 , wherein the speculative thread includes one or more speculative threads.

10. The computer-readable storage medium of claim 8 , wherein if the speculative thread performs a write operation to a memory element, the method further comprises:

determining if the space-time dimensioned version of the memory element exists;

if the space-time dimensioned version of the memory element does not exist, creating the space-time dimensioned version of the memory element; and

performing the write operation to the space-time dimensioned version of the memory element.

11. The computer-readable storage medium of claim 8 , wherein if the head thread performs a read operation to a memory element, the method further comprises performing the read operation to the primary version of the memory element.

12. The computer-readable storage medium of claim 8 , wherein if the head thread performs a write operation to a memory element, the method further comprises:

performing the write operation to the primary version of the memory element;

checking status information associated with the memory element to determine if the memory element has been read by the speculative thread;

if the memory element has been read by the speculative thread, causing the speculative thread to roll back so that the speculative thread can read a result of the write operation; and

if the memory element has not been read by the speculative thread, performing the write operation to the space-time dimensioned version of the memory element if the space-time dimensioned version exists.

13. The computer-readable storage medium of claim 8 , wherein the memory elements include objects defined within an object-oriented programming system.

14. The computer-readable storage medium of claim 8 , wherein the head thread and the speculative thread access separate hardware register files.

15. An apparatus that supports interleaving execution of a head thread and a speculative thread within a single processor pipeline, the apparatus comprising:

a processor;

a processor pipeline within the processor;

an execution mechanism within the processor that is configured to, execute program instructions using the head thread which operates on primary versions of memory elements;

speculatively execute program instructions in advance of the head thread using the speculative thread which executes on space-time dimensioned versions of the memory elements; and

if the speculative thread performs a read operation to a memory element:

determine if the space-time dimensioned version of the memory element exists;

if the space-time dimensioned version of the memory element exists, read the space-time dimensioned version of the memory element;

otherwise, read the primary version of the memory element; and to

update status information associated with the memory element to indicate the memory element has been read by the speculative thread; and

a join mechanism that is configured to merge the space-time dimensioned versions of the memory elements into the primary versions of the memory elements when the head thread reaches a point in the program where the speculative thread began executing, so that updates to the space-time dimensioned versions of the memory elements are incorporated into corresponding primary versions of memory elements;

wherein instructions from the head thread and instructions from the speculative thread are interleaved in a round-robin fashion, and wherein the execution mechanism is configured to concurrently execute the head thread and the speculative thread through time-multiplexed interleaving in the processor pipeline.

16. The apparatus of claim 15 , wherein the speculative thread includes one or more speculative threads.

17. The apparatus of claim 15 , wherein if the speculative thread performs a write operation to a memory element, the execution mechanism is configured to:

determine if the space-time dimensioned version of the memory element exists;

if the space-time dimensioned version of the memory element does not exist, to create the space-time dimensioned version of the memory element; and to

perform the write operation to the space-time dimensioned version of the memory element.

18. The apparatus of claim 15 , wherein if the head thread performs a read operation to a memory element, the execution mechanism is configured to perform the read operation to the primary version of the memory element.

19. The apparatus of claim 15 , wherein if the head thread performs a write operation to a memory element, the execution mechanism is configured to:

perform the write operation to the primary version of the memory element;

check status information associated with the memory element to determine if the memory element has been read by the speculative thread;

if the memory element has been read by the speculative thread, to cause the speculative thread to roll back so that the speculative thread can read a result of the write operation; and

if the memory element has not been read by the speculative thread, to perform the write operation to the space-time dimensioned version of the memory element if the space-time dimensioned version exists.

20. The apparatus of claim 15 , wherein the memory elements include objects defined within an object-oriented programming system.

21. The apparatus of claim 15 , wherein the head thread and the speculative thread access separate hardware register files.

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 037304/0194 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 14, 2006
From: CHAUDHRY, SHAILENDER; TREMBLAY, MARC
To: SUN MICROSYSTEMS, INC.
Reel/Frame 018168/0205 →