Techniques for performing store-to-load forwarding

US11113056B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11113056-B2
Application numberUS-201916698808-A
CountryUS
Kind codeB2
Filing dateNov 27, 2019
Priority dateNov 27, 2019
Publication dateSep 7, 2021
Grant dateSep 7, 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 technique for performing store-to-load forwarding is provided. The technique includes determining a virtual address for data to be loaded for the load instruction, identifying a matching store instruction from one or more store instruction memories by comparing a virtual-address-based comparison value for the load instruction to one or more virtual-address-based comparison values of one or more store instructions, determining a physical address for the load instruction, and validating the load instruction based on a comparison between the physical address of the load instruction and a physical address of the matching store instruction.

First claim

Opening claim text (preview).

What is claimed is: 1. A method for performing store-to-load forwarding for a load instruction, the method comprising: determining a virtual address for data to be loaded for the load instruction; identifying a matching store instruction from one or more store instruction memories by comparing a virtual-address-based comparison value for the load instruction to one or more virtual-address-based comparison values of one or more store instructions; placing the load instruction into a load waiting buffer in response to detecting that the matching store instruction has not yet received an address translation when initiating validation of the load instruction; and validating the load instruction based on a comparison between a physical address of the load instruction and a physical address of the matching store instruction. 2. The method of claim 1 , wherein determining the virtual address for the data to be loaded for the load instruction comprises: performing one or more calculations on address values as specified by the load instruction to obtain the virtual address. 3. The method of claim 1 , wherein the one or more store instruction memories includes at least one of: a store queue configured to store store instructions that are executing and have not yet retired; and a store commit queue configured to store store instructions that have retired and whose store data has not been committed to a memory system. 4. The method of claim 1 , further comprising determining the physical address for the load instruction by performing an address translation to translate the virtual address for the data to be loaded for the load instruction to the physical address for the load instruction. 5. The method of claim 1 , further comprising: in response to receiving a physical address for the store instruction, applying the physical address for the store instruction to the load waiting buffer to determine whether the physical address of the store instruction matches the physical address of the load instruction. 6. The method of claim 1 , wherein validating the load instruction comprises: at time of initiation of the validating, detecting that the matching store instruction has received an address translation; and comparing the physical address of the load instruction to the physical address of the matching store instruction. 7. The method of claim 1 , wherein the virtual-address-based comparison value for the load instruction based on the virtual address for the data for the load instruction comprises one of: a hash of a portion of the virtual address for the load instruction; a hash of the full virtual address for the load instruction; a portion of the virtual address for the load instruction; and the full virtual address for the load instruction. 8. The method of claim 1 , further comprising: in response to successfully validating the load instruction, allowing the load instruction to complete execution without flushing the load instruction; or in response to unsuccessfully validating the load instruction, flushing the load instruction and replaying the load instruction. 9. A load/store subsystem for performing store-to-load forwarding for a load instruction, the load/store subsystem comprising: one or more store instruction memories; and a load/store unit configured to: determine a virtual address for data to be loaded for the load instruction; identify a matching store instruction from the one or more store instruction memories by comparing a virtual-address-based comparison value for the load instruction to one or more virtual-address-based comparison values of one or more store instructions; place the load instruction into a load waiting buffer in response to detecting that the matching store instruction has not yet received an address translation when initiating validation of the load instruction; and validate the load instruction based on a comparison between the physical address of the load instruction and a physical address of the matching store instruction. 10. The load/store subsystem of claim 9 , wherein determining the virtual address for the data to be loaded for the load instruction comprises: performing one or more calculations on address values as specified by the load instruction to obtain the virtual address. 11. The load/store subsystem of claim 9 , wherein the one or more store instruction memories includes at least one of: a store queue configured to store store instructions that are executing and have not yet retired; and a store commit queue configured to store store instructions that have retired and whose store data has not been committed to a memory system. 12. The load/store subsystem of claim 9 , wherein the load/store unit is further configured to determine the physical address for the load instruction by performing an address translation to translate the virtual address for the data to be loaded for the load instruction to the physical address for the load instruction. 13. The load/store subsystem of claim 9 , wherein the load/store unit is further configured to: in response to receiving a physical address for the store instruction, apply the physical address for the store instruction to the load waiting buffer to determine whether the physical address of the store instruction matches the physical address of the load instruction. 14. The load/store subsystem of claim 9 , wherein validating the load instruction comprises: at time of initiation of the validating, detecting that the matching store instruction has received an address translation; and comparing the physical address of the load instruction to the physical address of the matching store instruction. 15. The load/store subsystem of claim 9 , wherein the virtual-address-based comparison value for the load instruction based on the virtual address for the data for the load instruction comprises one of: a hash of a portion of the virtual address for the load instruction; a hash of the full virtual address for the load instruction; a portion of the virtual address for the load instruction; and the full virtual address for the load instruction. 16. The load/store subsystem of claim 9 , wherein the load/store unit is further configured to: in response to successfully validating the load instruction, allowing the load instruction to complete execution without flushing the load instruction; or in response to unsuccessfully validating the load instruction, flushing the load instruction and replaying the load instruction. 17. A processing unit for performing store-to-load forwarding for a load instruction, the processing unit comprising: one or more store instruction memories; a load/store unit configured to: determine a virtual address for data to be loaded for the load instruction; identify a matching store instruction from the one or more store instruction memories by comparing a virtual-address-based comparison value for the load instruction to one or more virtual-address-based comparison values of one or more store instructions; place the load instruction into a load waiting buffer in response to detecting that the matching store instruction has not yet received an address translation when initiating validation of the load instruction; and validate the load instruction based on a comparison between the physical address of the load instruction and a physical address of the matching store instruction; and a data translation lookaside buffer configured to translate the virtual address for the load instruction to the physical address for the

Assignees

Inventors

Classifications

  • with multilevel cache hierarchies · CPC title

  • Buffers; Shared memory; Pipes · CPC title

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

  • Dependency mechanisms, e.g. register scoreboarding · CPC title

  • Instruction issuing, e.g. dynamic instruction scheduling or out of order 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 US11113056B2 cover?
A technique for performing store-to-load forwarding is provided. The technique includes determining a virtual address for data to be loaded for the load instruction, identifying a matching store instruction from one or more store instruction memories by comparing a virtual-address-based comparison value for the load instruction to one or more virtual-address-based comparison values of one or mo…
Who is the assignee on this patent?
Advanced Micro Devices Inc
What technology area does this patent fall under?
Primary CPC classification G06F9/3834. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Sep 07 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 11 related publications on this page (citations in our corpus or others sharing the same primary CPC).