Mechanism for performing speculative predicated instructions

US9298456B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9298456-B2
Application numberUS-201213590870-A
CountryUS
Kind codeB2
Filing dateAug 21, 2012
Priority dateAug 21, 2012
Publication dateMar 29, 2016
Grant dateMar 29, 2016

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 mechanism for executing speculative predicated instructions may include execution of initiating execution of a vector instruction when one or more operands upon which the vector instruction depends are available for use, even if a predicate vector that the vector instruction also depends is not available. If the predicate vector was not available, the results of the execution of the vector instruction may be temporarily held until the predicate vector becomes available, at which time, a destination vector may be updated with the results.

First claim

Opening claim text (preview).

What is claimed is: 1. A functional unit, comprising: a controller configured to initiate execution of a vector instruction in response to a determination that one or more operands on which the vector instruction depends are available for use; and a holding unit configured to temporarily store results of the vector instruction; wherein in response to receiving a determination that a predicate vector on which the vector instruction depends was not yet available for use upon initiation of the vector instruction, the controller is further configured to: temporarily store results of the vector instruction within the holding unit, such that the results are not made available to one or more operations that depend upon the vector instruction; and in response to receiving a determination that the predicate vector is available for use, update the temporarily stored results of the vector instruction dependent upon one or more element positions of the vector instruction that are indicated to be active by the predicate vector, and store the updated results in a destination register that is made available to the one or more operations that depend upon the vector instruction. 2. The functional unit of claim 1 , wherein in response to receiving the determination that the predicate vector was not yet available for use upon initiation of the vector instruction, the controller is further configured to suppress any faults raised during execution of the vector instruction. 3. The functional unit of claim 2 , wherein in response to a determination that one or more faults were raised during execution of the vector instruction, the controller is further configured to re-initiate the vector instruction after receiving the determination that the predicate vector is available for use. 4. The functional unit of claim 3 , wherein the controller is further configured to raise faults that correspond to active elements and which occur during the re-initiation of the vector instruction. 5. The functional unit of claim 2 , wherein the controller is further configured to hold the faults raised during execution of the vector instruction prior to the predicate vector being available for use, and to re-initiate the vector instruction after receiving the determination that the predicate vector is available for use only in response to determining, based upon the predicate vector, that the faults raised during execution of the vector instruction correspond to active elements of the vector instruction. 6. The functional unit of claim 1 , wherein the vector instruction comprises a vector load instruction, and the one or more operands comprise one or more memory addresses on which the vector load instruction depends. 7. A processor, comprising: an execution unit configured to initiate generation of a predicate vector that includes one or more predicate elements; and a functional unit configured to initiate execution of a vector instruction in response to a determination that one or more operands on which the vector instruction depends are available for use; wherein in response to a determination that the predicate vector was not yet available upon initiation of the vector instruction, the functional unit is further configured to: hold results of the vector instruction in abeyance until the predicate vector becomes available for use, such that the results are not made available to one or more operations that depend upon the vector instruction; and in response to a determination that the predicate vector is available for use, update the results of the vector instruction dependent upon one or more element positions of the vector instruction that are indicated to be active by the predicate vector, and store the updated results to a destination that is made available to one or more operations that depend upon the vector instruction. 8. The processor of claim 7 , wherein to hold results of the vector read operation in abeyance, the functional unit is further configured to suppress any faults raised during execution of the vector instruction. 9. The processor of claim 8 , wherein in response to a determination that one or more faults were raised during execution of the vector instruction, the functional unit is further configured to re-initiate the vector instruction after the predicate vector becomes available for use. 10. The processor of claim 9 , wherein the functional unit is configured to raise faults that correspond to active elements and which occur during the re-initiation of the vector instruction. 11. The processor of claim 8 , wherein the functional unit is configured to hold the faults raised during execution of the vector instruction prior to the predicate vector being available for use, and in response to determining, based upon the predicate vector, that the faults raised during execution of the vector instruction correspond to active elements of the vector instruction, the functional unit is further configured to re-initiate execution of the vector instruction after receiving the determination that the predicate vector is available for use. 12. A method comprising: initiating generation of a predicate vector including one or more elements; prior to the predicate vector becoming available for use, initiating a vector instruction in response to a determination that one or more operands on which the vector instruction depends are available for use; holding results of the vector instruction in abeyance until the predicate vector becomes available for use, such that the results are not made available to one or more operations that depend upon the vector instruction; and in response to a determination that the predicate vector is available for use, updating the results of the vector instruction dependent upon one or more element positions of the vector instruction that are indicated to be active by the predicate vector, and storing the updated results to a destination that is made available to one or more operations that depend upon the vector instruction. 13. The method of claim 12 , further comprising, in response to detecting a fault during execution of the vector instruction, suppressing the fault, discarding the results of the vector instruction, and re-initiating the vector instruction after determining that the predicate vector is available. 14. The method of claim 13 , wherein re-initiating the vector instruction after determining that the predicate vector is available further comprises re-initiating the vector instruction only in response to determining, based upon the predicate vector, that the faults raised during execution of the vector instruction correspond to active elements of the vector instruction. 15. The method of claim 13 , further comprising raising faults that correspond to active elements and which occur during the re-initiation of the instruction. 16. The method of claim 12 , wherein each of the one or more elements of the predicate vector control whether a corresponding element in the destination will receive a result of the vector instruction or remain unmodified. 17. The method of claim 12 , wherein initiating generation of the predicate vector includes executing a predicate generating instruction. 18. The method of claim 17 , wherein the predicate generating instruction is a Macroscalar GeneratePredicates instruction. 19. A functional unit, comprising: a controller configured to initiate execution of a vector instruction when one or more operands on which the vector instruction depends are available, and prior to a predicate vector on which th

Assignees

Inventors

Classifications

  • Instructions to perform operations on packed data, e.g. vector, tile or matrix operations · CPC title

  • Recovery, e.g. branch miss-prediction, exception handling (error detection or correction G06F11/00) · CPC title

  • LOAD or STORE instructions; Clear instruction · CPC title

  • Physics · mapped topic

  • Speculative instruction execution · 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 US9298456B2 cover?
A mechanism for executing speculative predicated instructions may include execution of initiating execution of a vector instruction when one or more operands upon which the vector instruction depends are available for use, even if a predicate vector that the vector instruction also depends is not available. If the predicate vector was not available, the results of the execution of the vector in…
Who is the assignee on this patent?
Gonion Jeffry E, Apple Inc
What technology area does this patent fall under?
Primary CPC classification G06F9/30036. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 29 2016 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).