IP Library Granted Patent US 8,719,806
Granted Patent B2
US 8,719,806 · App. 12/879,898 · Granted May 6, 2014

Speculative multi-threading for instruction prefetch and/or trace pre-build

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 8,719,806
App. No.
12/879,898
Granted
May 6, 2014
Kind
B2
Abstract

The latencies associated with retrieving instruction information for a main thread are decreased through the use of a simultaneous helper thread. The helper thread is a speculative prefetch thread to perform instruction prefetch and/or trace pre-build for the main thread.

Claims (27)

1. A method comprising:

identifying a code region in an original binary that is predicted to incur a threshold quantity of performance loss during execution of the code region based on one or more predicted cache misses;

identifying one or more spawning pairs that each includes a spawn point and a target point;

selecting one of the one or more spawning pairs, the target point of the selected spawning pair being associated with the code region, wherein the selecting is based at least in part on a number of dependent instructions that a speculative thread includes in relation to code between the spawn point and the target point;

generating an enhanced binary code from the original binary that includes one or more instructions to cause, during execution of a first thread, spawning of a second thread at the selected spawn point; and

speculatively pre-executing an instruction associated with the selected target point on the second thread ahead of a portion of the code that begins at the target point, wherein in response to executing the instruction with the second thread a future instruction for the first thread is prefetched into a cache.

2. The method of claim 1 , wherein: the target point for each of the one or more identified spawning pairs is a control-quasi-independent point.

3. The method of claim 1 , wherein: identifying one or more spawning pairs further includes approximating a reaching probability for each of the spawning pairs.

4. The method of claim 1 , wherein the cache includes an instruction cache, and wherein the future instruction includes a decoded future instruction.

5. The method of claim 1 , wherein: the cache includes a trace cache, and wherein the future instruction includes future traces of decoded micro-operations.

6. The method of claim 1 , further comprising:

marking instruction information from the second thread as originating in a speculative thread.

7. The method of claim 1 , wherein the cache is a trace cache.

8. An article comprising:

a machine-readable storage medium having a plurality of machine accessible instructions which, if executed by a machine, cause the machine to perform operations comprising:

identify a code region in an original binary that is predicted to incur a threshold quantity of performance loss during execution of the code region based on one or more cache misses;

identify one or more spawning pairs that each includes a spawn point and a target point;

select one of the one or more spawning pairs, the target point of the selected spawning pair being associated with the code region, based at least in part on a number of dependent instructions that a speculative thread includes in relation to code between the spawn point and the target point; and

generate an enhanced binary code from the original binary that includes one or more instructions to cause, during execution of a first thread; and

speculatively pre-execute an instruction associated with the selected target point on the second thread ahead of a portion of the code that begins at the target point, wherein in response to executing the instruction with the second thread a future instruction for the first thread is prefetched into an instruction cache.

9. The article of claim 8 , wherein: the target point for each of the one or more identified spawning pairs is a control-quasi-independent point.

10. The article of claim 8 , wherein: instructions that provide for identifying one or more spawning pairs further include instructions that provide for approximating a reaching probability for each of the spawning pairs.

11. The article of claim 10 , wherein: instructions that provide for identifying one or more spawning pairs further include instructions that provide for identifying spawning pairs that have at least a threshold approximated reaching probability.

12. The article of claim 8 , wherein: instructions for selecting further include instructions that provide for determining that the selected spawning pair encompasses the code region.

13. The article of claim 8 , further comprising:

marking instruction information from the second thread as originating in a speculative thread.

14. The article of claim 8 , wherein the cache is a trace cache.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: INTEL CORPORATION
To: TAHOE RESEARCH, LTD.
Reel/Frame 061175/0176 →