Instruction ordering for in-progress operations

US10339054B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10339054-B2
Application numberUS-201815890921-A
CountryUS
Kind codeB2
Filing dateFeb 7, 2018
Priority dateNov 14, 2014
Publication dateJul 2, 2019
Grant dateJul 2, 2019

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.

Execution of the memory instructions is managed using memory management circuitry including a first cache that stores a plurality of the mappings in the page table, and a second cache that stores entries based on virtual addresses. The memory management circuitry executes operations from the one or more modules, including, in response to a first operation that invalidates at least a first virtual address, selectively ordering each of a plurality of in progress operations that were in progress when the first operation was received by the memory management circuitry, wherein a position in the ordering of a particular in progress operation depends on either or both of: (1) which of one or more modules initiated the particular in progress operation, or (2) whether or not the particular in progress operation provides results to the first cache or second cache.

First claim

Opening claim text (preview).

What is claimed is: 1. An apparatus comprising: one or more modules configured to execute memory instructions that access data stored in physical memory based on virtual addresses translated to physical addresses based on mappings in a page table; and memory management circuitry coupled to the one or more modules, the memory management circuitry including a first cache that stores a plurality of the mappings in the page table, and a second cache that stores entries based on virtual addresses; wherein the memory management circuitry is configured to execute operations from the one or more modules, the executing including selectively ordering each of a plurality of in-progress operations that were in progress within a processor pipeline when a first operation was received by the memory management circuitry, wherein said selectively ordering is with respect to completing execution within said processor pipeline, and is performed in response to the first operation being received, wherein the first operation invalidates at least a first virtual address as a result of inserting an instruction into the pipeline within a pre-determined maximum number of cycles after the first operation was received, wherein the pre-determined maximum number of cycles is determined based at least in part on (1) a guaranteed maximum latency and (2) a maximum number of cycles needed for the inserted instruction to propagate through the pipeline, and wherein a position in said selective ordering of a particular in-progress operation depends on whether or not the particular in-progress operation provides results to at least one of the first cache or second cache. 2. The apparatus of claim 1 , wherein a position in said selective ordering of the particular in-progress operation is selected to be either: (1) before the first operation, or (2) after the first operation. 3. The apparatus of claim 2 , wherein execution of a set of operations by the memory management circuitry includes overlap in the execution of the first operation and the particular in-progress operation, but results of execution of the set of operations, with respect to their effect on other operations executed by the memory management circuitry, are provided atomically without overlap of any effects of results of the first operation and any effects of results of the particular in-progress operation. 4. The apparatus of claim 2 , wherein a first module of the one or more modules comprises a core configured as a central processing unit, and a second module of the one or more modules is configured for direct memory access without requiring the core. 5. The apparatus of claim 4 , wherein a position in said selective ordering of the particular in-progress operation is before the first operation if the particular in-progress operation was initiated by the second module. 6. The apparatus of claim 5 , wherein selecting the position of the particular in-progress operation to be before the first operation includes allowing the particular in-progress operation to continue execution concurrently with the first operation and preventing any results from the particular in-progress operation generated after the first operation was received by the memory management circuitry from being used to modify the first cache or second cache. 7. The apparatus of claim 5 , wherein the particular in-progress operation was initiated by the first module. 8. The apparatus of claim 7 , wherein the position of the particular in-progress operation is selected to be before the first operation if the particular in-progress operation does not provide results to the first cache and does not provide results to the second cache, and after the first operation if the particular in-progress operation does provide results to at least one of the first cache or the second cache. 9. The apparatus of claim 2 , wherein a position in said selective ordering of the particular in-progress operation depends on whether or not the in-progress operation provides results to at least one of the first cache or the second cache. 10. The apparatus of claim 9 , wherein the position of the particular in-progress operation is selected to be before the first operation if the particular in-progress operation does not provide results to the first cache and does not provide results to the second cache, and after the first operation if the particular in-progress operation does provide results to at least one of the first cache or the second cache. 11. The apparatus of claim 10 , wherein selecting the position of the particular in-progress operation to be before the first operation includes allowing the particular in-progress operation to continue execution concurrently with the first operation. 12. The apparatus of claim 10 , wherein selecting the position of the particular in-progress operation to be after the first operation includes aborting the particular in-progress operation and re-starting the particular in-progress operation after completing execution of the first operation. 13. The apparatus of claim 1 , wherein the first cache comprises a translation lookaside buffer that stores a subset consisting of fewer than all of the mappings in the page table. 14. The apparatus of claim 1 , wherein the second cache comprises a data cache that stores copies of data stored in the physical memory. 15. The apparatus of claim 1 , wherein the second cache comprises a page table walker cache that stores a limited number of intermediate results provided by a page table walker that traverses levels of a hierarchical page table having multiple levels that each store intermediate results for determining the mappings. 16. The apparatus of claim 1 , wherein the first operation comprises an operation that invalidates a range of virtual addresses that includes the first virtual address. 17. A method comprising: executing memory instructions using one or more modules that access data stored in physical memory based on virtual addresses translated to physical addresses based on mappings in a page table; and managing execution of the memory instructions using memory management circuitry coupled to the one or more modules, the memory management circuitry including a first cache that stores a plurality of the mappings in the page table, and a second cache that stores entries based on virtual addresses; wherein the memory management circuitry executes operations from the one or more modules, the executing including selectively ordering each of a plurality of in-progress operations that were in progress within a processor pipeline when a first operation was received by the memory management circuitry, wherein said selectively ordering is with respect to completing execution within said processor pipeline, and is performed in response to the first operation being received, wherein the first operation invalidates at least a first virtual address as a result of inserting an instruction into the pipeline within a pre-determined maximum number of cycles after the first operation was received, wherein the pre-determined maximum number of cycles is determined based at least in part on (1) a guaranteed maximum latency and (2) a maximum number of cycles needed for the inserted instruction to propagate through the pipeline, and wherein a position in said selective ordering of a particular in-progress operation depends on whether or not the particular in-progress operation provides results to at least one of the first cache or second cache. 18. The method of claim 17 , wherein a position in said selective ordering of the part

Assignees

Inventors

Classifications

  • using page tables, e.g. page table structures · CPC title

  • of parts of caches, e.g. directory or tag array · CPC title

  • with cache invalidating means (G06F12/0815 takes precedence) · 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 US10339054B2 cover?
Execution of the memory instructions is managed using memory management circuitry including a first cache that stores a plurality of the mappings in the page table, and a second cache that stores entries based on virtual addresses. The memory management circuitry executes operations from the one or more modules, including, in response to a first operation that invalidates at least a first virtu…
Who is the assignee on this patent?
Cavium Llc
What technology area does this patent fall under?
Primary CPC classification G06F12/1009. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jul 02 2019 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 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).