Zero cycle move using free list counts

US11068271B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11068271-B2
Application numberUS-201414444798-A
CountryUS
Kind codeB2
Filing dateJul 28, 2014
Priority dateJul 28, 2014
Publication dateJul 20, 2021
Grant dateJul 20, 2021

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 system and method for reducing the latency of data move operations. A register rename unit within a processor determines whether a decoded move instruction qualifies for a zero cycle move operation. If so, control logic assigns a physical register identifier associated with a source operand of the move instruction to the destination operand of the move instruction. Additionally, the register rename unit marks the given move instruction to prevent it from proceeding in the processor pipeline. Further maintenance of the particular physical register identifier may be done by the register rename unit during commit of the given move instruction.

First claim

Opening claim text (preview).

What is claimed is: 1. A processor comprising: a free list comprising a plurality of entries with a number of the plurality of entries being less than or equal to a number of rename registers in the processor, including: one or more first entries for rename registers that are not currently assigned; one or more second entries for rename registers that are currently assigned and unduplicated; and one or more third entries for rename registers that are currently assigned and duplicated; wherein at least one of each of the first entries, the second entries, and the third entries: is associated with a corresponding rename register identifier (ID); and is configured to store a count of a number of mappings for the corresponding rename register ID; a register file separate from the free list; and a register rename unit configured to: determine both a source operand and a destination operand of a given move instruction are registers; identify a given rename register ID associated with the source operand; and based at least in part on determining a count of a number of mappings in the free list for the given rename register ID being less than a maximum value: assign the given rename register ID to the destination operand of the given move instruction; and convey the given rename register ID from a reorder buffer to instructions younger in program order than the move instruction that have a data dependency on the move instruction. 2. The processor as recited in claim 1 , wherein the register rename unit is further configured to, based at least in part on assigning the given rename register ID to the destination operand of the given move instruction, increment the count associated with the given rename register ID stored in a same entry of the plurality of entries allocated to the given rename register ID. 3. The processor as recited in claim 2 , wherein the rename register unit is further configured to prevent the given move instruction from proceeding in a pipeline of the processor. 4. The processor as recited in claim 3 , wherein to prevent the given move instruction from proceeding in the pipeline, the register rename unit is configured to indicate the given move instruction has been completed. 5. The processor as recited in claim 3 , wherein in response to detecting the given move instruction is ready to commit, the register rename unit is further configured to decrement the count associated with the given rename register ID. 6. The processor as recited in claim 3 , wherein to assign new register rename IDs to operands of instructions, the register rename unit is further configured to search the free list for an entry of the plurality of entries storing a zero count. 7. The processor as recited in claim 1 , wherein the register rename unit is further configured to: search a mapping table using a source operand ID associated with the source operand of the given move instruction; and in response to finding the source operand ID in the mapping table, identify a respective count in the free list of the given rename register ID mapped to the source operand ID regardless of whether the given rename register ID is duplicated; and in response to not finding the source operand ID in the mapping table, the register rename unit is further configured to identify an entry of the plurality of entries within the free list storing a zero count. 8. The processor as recited in claim 1 , further comprising rename intra-group dependency detection logic configured to generate a dependency vector indicating dependencies between groups of instructions. 9. A method comprising: maintaining a free list comprising a plurality of entries with a number of the plurality of entries being less than or equal to a number of rename registers in a processor, including: one or more first entries for rename registers that are not currently assigned; one or more second entries for rename registers that are currently assigned and unduplicated; and one or more third entries for rename registers that are currently assigned and duplicated, wherein at least one of the first entries, at least one of the second entries and at least one of the third entries: is associated with a corresponding rename register identifier (ID); and is configured to store a count of a number of mappings for the corresponding rename register ID; maintaining a register file separate from the free list; determining both a source operand and a destination operand of a given move instruction are registers; identifying a given rename register ID associated with the source operand; and in response to determining a count of a number of mappings in the free list for the given rename register ID being less than a maximum value: assigning the given rename register ID to the destination operand of the given move instruction; and conveying the given rename register ID from a reorder buffer to instructions younger in program order than the move instruction that have a data dependency on the move instruction. 10. The method as recited in claim 9 , further comprising incrementing the respective count for the given rename register ID stored in a same entry of the plurality of entries allocated to the rename register ID, responsive to assigning the given rename register ID to the destination operand of the given move instruction. 11. The method as recited in claim 10 , wherein the method further comprises preventing the given instruction from proceeding in a pipeline of the processor. 12. The method as recited in claim 11 , wherein to prevent the given move instruction from proceeding in the pipeline, the method further comprises indicating the given move instruction has been completed. 13. The method as recited in claim 11 , further comprising decrementing the count associated with the given rename register ID, responsive to detecting the given move instruction is ready to commit. 14. The method as recited in claim 11 , wherein to assign new register rename IDs to operands of instructions, the method further comprises searching the free list for an entry of the plurality of entries storing a zero count. 15. The method as recited in claim 11 , further comprising: searching a mapping table within the processor using a source operand ID of the source operand of the given move instruction; and in response to finding the source operand ID in the mapping table, identifying a respective count in the free list of the given rename register ID mapped to the source operand ID regardless of whether the given rename register ID is duplicated. 16. The method as recited in claim 11 , further comprising: searching a mapping table within the processor using a source operand ID of the source operand of the given move instruction; and in response to not finding the source operand ID in the mapping table, the method further comprises identifying an entry of the plurality of entries within the free list storing a zero count. 17. A register rename unit comprising: a free list, separate from a register file, comprising a plurality of entries with a number of the plurality of entries being less than or equal to a number of rename registers in a processor, including: one or more first entries for rename registers that are not currently assigned; one or more second entries for rename registers that are currently assigned and unduplicated; and one or more third entries for rename registers that are currently assigned and duplicated, wherein at least one of the first entries, at least one of the second entries and at least one of the third

Assignees

Inventors

Classifications

  • G06F9/384Primary

    Register renaming · CPC title

  • Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE · CPC title

  • Instruction operation extension or modification · 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 US11068271B2 cover?
A system and method for reducing the latency of data move operations. A register rename unit within a processor determines whether a decoded move instruction qualifies for a zero cycle move operation. If so, control logic assigns a physical register identifier associated with a source operand of the move instruction to the destination operand of the move instruction. Additionally, the register …
Who is the assignee on this patent?
Apple Inc
What technology area does this patent fall under?
Primary CPC classification G06F9/384. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jul 20 2021 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).