Method for increasing the speed of speculative execution

US10061582B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10061582-B2
Application numberUS-201314143926-A
CountryUS
Kind codeB2
Filing dateDec 30, 2013
Priority dateOct 20, 1999
Publication dateAug 28, 2018
Grant dateAug 28, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

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.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: storing, by a processor, a copy of original loop instructions that are in an original sequence order; modifying, by the processor, the original sequence order to form modified loop instructions that are in a speculative execution sequence order in which it is unknown whether execution without error will occur, wherein said modifying includes: before an initial instruction of the original loop instructions, causing the processor to release results of most recently completed loop to memory; inserting, by the processor, a plurality of branch instructions that are taken to indicate a branch misprediction and cause the processor to exit and to end execution of a current loop; and inserting, by the processor, a plurality of copies of a portion of the original loop instructions; speculatively executing in the speculative execution sequence order, by using the processor, the modified loop instructions that are executable with fewer processor operations than execution of the original loop instructions, wherein the modified loop instructions are free of renaming at least one of the original loop instructions to prevent or correct errors and are free of compensation instructions comprising a duplicate of at least one of the original loop instructions to prevent or correct errors; and if a branch instruction of the modified loop instructions is taken to indicate the branch misprediction and to cause the processor to exit and to end execution of the modified loop instructions, discarding results and state changes of an exited current uncompleted loop, and accessing and executing, from beginning of the initial instruction of and in the original sequence order, the copy of the original loop instructions by using the processor. 2. The method of claim 1 , wherein said modifying further comprises: removing, by the processor, from the modified loop instructions an invariant comprising an operation that occurs in a same manner each time the original loop instructions are executed. 3. The method of claim 2 , wherein said modifying further comprises: inserting, by the processor, the invariant in a prologue before the modified loop instructions. 4. A method comprising: storing, by a processor, a copy of original loop instructions that are in an original sequence order; modifying, by the processor, the original sequence order to form modified loop instructions that are in a speculative execution sequence order in which it is unknown whether execution without error will occur, wherein said modifying includes: before an initial instruction of the original loop instructions, causing the processor to release results of most recently completed loop to memory; and inserting, by the processor, a plurality of branch instructions that are taken to indicate a branch misprediction and cause the processor to exit and to end execution of a current loop; speculatively executing in the speculative execution sequence order, by using the processor, the modified loop instructions that are executable with fewer processor operations than execution of the original loop instructions, wherein the modified loop instructions are free of renaming at least one of the original loop instructions to prevent or correct errors and are free of compensation instructions comprising a duplicate of at least one of the original loop instructions to prevent or correct errors; and if a branch instruction of the modified loop instructions is taken to indicate the branch misprediction and to cause the processor to exit and to end execution of the modified loop instructions, discarding results and state changes of an exited current uncompleted loop, and accessing and executing, from beginning of the initial instruction of and in the original sequence order, the copy of the original loop instructions by using the processor. 5. The method of claim 4 , wherein said modifying further comprises: removing, by the processor, from the modified loop instructions an invariant comprising an operation that occurs in a same manner each time the original loop instructions are executed. 6. The method of claim 5 , wherein said modifying further comprises: inserting, by the processor, the invariant in a prologue before the modified loop instructions. 7. The method of claim 4 , wherein the processor comprises a VLIW (very long instruction word) processor. 8. A method comprising: storing, by a processor, a copy of original loop instructions that are in an original sequence order; modifying, by the processor, the original sequence order to form modified loop instructions that are in a speculative execution sequence order in which it is unknown whether execution without error will occur, wherein said modifying includes: before an initial instruction of the original loop instructions, causing the processor to release results of most recently completed loop to memory; inserting, by the processor, a plurality of branch instructions that are taken to indicate a branch misprediction and cause the processor to exit and to end execution of a current loop; and deleting, by the processor, an instruction from the original loop instructions; speculatively executing in the speculative execution sequence order, by using the processor, the modified loop instructions that are executable with fewer processor operations than execution of the original loop instructions, wherein the modified loop instructions are free of renaming at least one of the original loop instructions to prevent or correct errors and are free of compensation instructions comprising a duplicate of at least one of the original loop instructions to prevent or correct errors; and if a branch instruction of the modified loop instructions is taken to indicate the branch misprediction and to cause the processor to exit and to end execution of the modified loop instructions, discarding results and state changes of an exited current uncompleted loop, and accessing and executing, from beginning of the initial instruction of and in the original sequence order, the copy of the original loop instructions by using the processor. 9. The method of claim 8 , wherein said modifying further comprises: removing, by the processor, from the modified loop instructions an invariant comprising an operation that occurs in a same manner each time the original loop instructions are executed. 10. The method of claim 9 , wherein said modifying further comprises: inserting, by the processor, the invariant in a prologue before the modified loop instructions. 11. The method of claim 8 , wherein the processor comprises a VLIW (very long instruction word) processor.

Assignees

Inventors

Classifications

  • Loop control instructions; iterative instructions, e.g. LOOP, REPEAT · CPC title

  • G06F8/4441Primary

    Reducing the execution time required by the program code · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10061582B2 cover?
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 optimize…
Who is the assignee on this patent?
Intellectual Ventures Holding 81 Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/30065. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 28 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).