IP Library Granted Patent US 7,337,439
Granted Patent B1
US 7,337,439 · App. 10/464,871 · Granted Feb 26, 2008

Method for increasing the speed of 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,337,439
App. No.
10/464,871
Granted
Feb 26, 2008
Kind
B1
Abstract

A method for increasing the speed of execution by a processor including the steps of selecting a sequence of instructions to optimize, optimizing the sequence of instructions, creating a duplicate of instructions from the sequence of instructions which has been selected to optimize, executing the optimized sequence of instructions, and responding to an error during the execution of the optimized sequence of instructions by rolling back to the duplicate of instructions from the sequence of instructions.

Claims (23)

1. A method of code modification and speculative code execution by a processor comprising:

duplicating a first sequence of instructions to generate a second sequence of instructions;

modifying said second sequence of instructions to increase execution efficiency thereof;

executing said modified sequence of instructions; and

upon exiting said modified sequence of instructions and prior to executing at least one instruction of said first sequence of instructions, loading an updated state of said processor.

2. The method of claim 1 , wherein said first sequence of instructions comprises a branch operation, and wherein said modified sequence of instructions is generated assuming that said branch operation will not be executed.

3. The method of claim 1 further comprising:

saving said updated state of said processor by writing a value to a memory of said processor, wherein said value relates to said first sequence of instructions, and wherein said value is written before execution of said portion of said modified sequence of instructions.

4. The method of claim 3 , wherein said loading an updated state of said processor further comprises loading said value.

5. The method of claim 1 further comprising:

detecting an asynchronous event indicating a need to exit said modified sequence of instructions.

6. The method of claim 5 , wherein said asynchronous event comprises at least one of an error, a mls-speculation and an exception.

7. The method of claim 1 , wherein said updated state of said processor comprises a correct state for enabling execution of said at least one instruction of said first sequence of instructions.

8. A method of code modification and speculative code execution by a processor comprising:

duplicating a first sequence of instructions to generate a second sequence of instructions, wherein said first sequence of instructions comprises a first loop, and wherein said second sequence of instructions comprises a second loop;

modifying said second sequence of instructions to increase execution efficiency thereof;

executing said modified sequence of instructions; and

upon identifying an event indicating a need to exit said modified sequence of instructions, loading an updated state of said processor and executing a portion of said first sequence of instructions.

9. The method of claim 8 , wherein said modifying said second sequence of instructions comprises unrolling said second loop.

10. The method of claim 8 , wherein said event comprises a satisfaction of a conditional instruction of said modified sequence of instructions.

11. The method of claim 8 , wherein said updated state is saved in response to an execution of an instruction of said second loop.

12. The method of claim 8 , wherein said modifying comprises removal of at least one invariable operation from said second sequence of instructions, wherein said at least one invariable operation is performed during execution of said portion of said first sequence of instructions after exit from said modified sequence of instructions.

13. The method of claim 12 , wherein said at least one invariable operation is operable to access a memory location which remains constant between iterations of said second loop.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2020
From: INTELLECTUAL VENTURES ASSETS 154 LLC
To: LIBERTY PATENTS LLC
Reel/Frame 051709/0805 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2020
From: INTELLECTUAL VENTURES HOLDING 81 LLC
To: INTELLECTUAL VENTURES ASSETS 154 LLC
Reel/Frame 051411/0565 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR'S NAME PREVIOUSLY RECORDED AT REEL: 036711 FRAME: 0160. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 6, 2015
From: INTELLECTUAL VENTURES FUNDING LLC
To: INTELLECTUAL VENTURES HOLDING 81 LLC
Reel/Frame 036797/0356 →
MERGER Recorded Sep 29, 2015
From: INTELLECTUAL VENTURE FUNDING LLC
To: INTELLECTUAL VENTURES HOLDING 81 LLC
Reel/Frame 036711/0160 →