Translation address cache for a microprocessor

US10146545B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10146545-B2
Application numberUS-201213419323-A
CountryUS
Kind codeB2
Filing dateMar 13, 2012
Priority dateMar 13, 2012
Publication dateDec 4, 2018
Grant dateDec 4, 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.

Embodiments related to fetching instructions and alternate versions achieving the same functionality as the instructions from an instruction cache included in a microprocessor are provided. In one example, a method is provided, comprising, at an example microprocessor, fetching an instruction from an instruction cache. The example method also includes hashing an address for the instruction to determine whether an alternate version of the instruction which achieves the same functionality as the instruction exists. The example method further includes, if hashing results in a determination that such an alternate version exists, aborting fetching of the instruction and retrieving and executing the alternate version.

First claim

Opening claim text (preview).

The invention claimed is: 1. A microprocessor comprising fetch logic operative to: fetch an instruction; generate a hash index from one or more portions of an address for the instruction; generate a disambiguation tag from at least one other portion of the address for the instruction; determine whether an alternate version exists for the instruction based on the hash index and the disambiguation tag, including: referencing a translation address index in a translation address cache of the microprocessor according to the hash index, comparing a current context for the microprocessor with an assumed context, the current context describing a current working state of the microprocessor, the assumed context describing a state of the microprocessor for which the alternate version is valid, and determining that an alternative version of the instruction exists when the current context agrees with the assumed context, wherein the alternate version is a translation of the instruction, and the alternative version comprises a set of two or more micro-operations; and in response to a determination that the alternative version exists, abort the fetch of the instruction; and retrieve the alternate version for execution by the microprocessor, including retrieving a physical address for the alternate version from the translation address cache. 2. The microprocessor of claim 1 , wherein the fetch logic is further operative to generate the hash index or the disambiguation tag while the instruction is being fetched. 3. The microprocessor of claim 1 , wherein the fetch logic is further operative to: obtain one or more translation address entries stored in the translation address cache according to the translation address index; compare the disambiguation tag with a second disambiguation tag associated with at least one of the translation address entries; and determine that an alternative version of the instruction exists when the disambiguation tag agrees with the second disambiguation tag. 4. The microprocessor of claim 1 , wherein the fetch logic is further operative to: send the physical address for the alternate version to an instruction cache to obtain the alternate version from the instruction cache; and send the alternate version obtained from the instruction cache to a scheduling logic that schedules the alternate version for execution. 5. The microprocessor of claim 1 , further comprising a translation address cache configured to store, for each alternate version stored within the translation address cache, a translation address entry comprising a physical address for the alternate version and an assumed context for describing a state of the microprocessor for which the alternate version is valid. 6. The microprocessor of claim 1 , further comprising a linear-indexed-physically-tagged instruction cache or a physically-indexed-physically-tagged instruction cache. 7. The microprocessor of claim 1 , wherein the address for the instruction is a linear address, and the fetch logic is further operative to retrieve a physical address for the instruction from an instruction translation lookaside buffer with reference to the linear address for the instruction. 8. The microprocessor of claim 7 , wherein the fetch logic is further operative to: in response to a determination that the alternate version does not exist, send the physical address for the instruction to an instruction cache to obtain the instruction from the instruction cache; send the instruction to a decode logic to generate a decoded instruction; and send the decoded instruction to scheduling logic to schedule the decoded instruction for execution. 9. A microprocessor, comprising: an instruction cache that stores one or more instructions for execution by the microprocessor; scheduling logic that schedules execution of at least one of the one or more instructions; a translation address cache that stores at least an address for an alternate version of at least one of the one or more instructions, the alternate version being a translation of the at least one of the one or more instructions and the alternative version comprises a set of two or more micro-operations, the translation address cache being configured to store, for a selected translation address index, a plurality of translation address entries, each translation address entry comprising a physical address for a respective alternate version, and each translation address entry further comprising an assumed context for describing a state of the microprocessor for which a respective alternate version is valid; and fetch logic operative to: fetch a selected instruction from the instruction cache, generate a hash index and a disambiguation tag for the selected instruction, determine whether an address of an alternate version of the selected instruction exists in the translation address cache, and in response to a determination that the address for the alternate version of the selected instruction exists in the translation address cache, abort fetching or decoding the selected instruction, and obtain the alternate version of the selected instruction from the instruction cache based upon the address of the alternate version of the selected instruction, and send the alternate version of the selected instruction to the scheduling logic. 10. The microprocessor of claim 9 , further comprising: an instruction translation lookaside buffer that translates a physical address for the selected instruction stored in the instruction cache according to a linear address for that instruction. 11. The microprocessor of claim 9 , further comprising a decode logic that sends a decoded version of the selected instruction to the scheduling logic in response to a determination that an alternate version of the selected instruction does not exist. 12. The microprocessor of claim 9 , wherein the selected instruction is associated with a linear address comprising 48 bits, the hash index comprises 8 bits and the disambiguation tag comprises 40 bits. 13. The microprocessor of claim 9 , the translation address cache comprising 1024 translation address entries distributed among at least 4 ways, each way comprising 256 data locations. 14. A method for determining whether an alternative version of an instruction is available for execution by a microprocessor, the method comprising: fetching a physical address for an instruction from an instruction translation lookaside buffer with reference to a linear address for the instruction; while fetching the physical address from the instruction translation lookaside buffer, determining whether a physical address for an alternative version of the instruction is stored in a translation address cache by performing the steps comprising: hashing one or more portions of the linear address to obtain a hash index and a disambiguation tag, obtaining one or more translation address entries stored in the translation address cache according to the hash index, and comparing the disambiguation tag with each of the one or more translation address entries obtained, identifying an assumed context for the alternative version from the translation address cache based on the hash index and the disambiguation tag; comparing a current context for the microprocessor with the assumed context; and in response to the current context agreeing with the assumed context, identifying the physical address of the alternative version stored in a translation address entry of the translation cache associated with the hash index; wherein the alternate version is a translation of the instruction, and the alternative vers

Assignees

Inventors

Classifications

  • Instruction operation extension or modification · CPC title

  • with prefetch · CPC title

  • Instruction prefetching · CPC title

  • for non-native instruction set, e.g. Javabyte, legacy code · CPC title

  • involving hashing techniques, e.g. inverted page tables · 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 US10146545B2 cover?
Embodiments related to fetching instructions and alternate versions achieving the same functionality as the instructions from an instruction cache included in a microprocessor are provided. In one example, a method is provided, comprising, at an example microprocessor, fetching an instruction from an instruction cache. The example method also includes hashing an address for the instruction to d…
Who is the assignee on this patent?
Segelken Ross, Klaiber Alex, Tuck Nathan, and 2 more
What technology area does this patent fall under?
Primary CPC classification G06F9/30181. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Dec 04 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 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).