Restartable cache write-back and invalidation

US2020201638A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2020201638-A1
Application numberUS-201816227881-A
CountryUS
Kind codeA1
Filing dateDec 20, 2018
Priority dateDec 20, 2018
Publication dateJun 25, 2020
Grant date

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 processor includes a global register to store a value of an interrupted block count. A processor core, communicably coupled to the global register, may, upon execution of an instruction to flush blocks of a cache that are associated with a security domain: flush the blocks of the cache sequentially according to a flush loop of the cache; and in response to detection of a system interrupt: store a value of a current cache block count to the global register as the interrupted block count; and stop execution of the instruction to pause the flush of the blocks of the cache. After handling of the interrupt, the instruction may be called again to restart the flush of the cache.

First claim

Opening claim text (preview).

What is claimed is: 1 . A processor comprising: a global register to store a value of an interrupted block count; and a processor core communicably coupled to the global register, the processor core to, upon execution of an instruction to flush blocks of a cache that are associated with a security domain: flush the blocks of the cache sequentially according to a flush loop of the cache; and in response to detection of a system interrupt: store a value of a current cache block count to the global register as the interrupted block count; and stop execution of the instruction to pause the flush of the blocks of the cache. 2 . The processor of claim 1 , wherein the security domain comprises a first trust domain and a virtual machine manager (VMM) calls for execution of the instruction to flush the blocks of the cache, wherein the processor core is to execute the VMM, which is to: detect that the first trust domain, which owns a host key identifier (HKID) to be reclaimed for assignment to a second trust domain, is in a quiesced state; and call for execution of the instruction, which identifies the HKID, to flush the blocks of the cache that are associated with the first trust domain. 3 . The processor of claim 2 , wherein the processor core is further to tag the HKID as being in a reclaim state. 4 . The processor of claim 2 , wherein the processor core is further to: tag that the flush of the cache has started; and in response to the system interrupt, set an interrupt flag in a flag register that indicates the flush of the cache is interrupted. 5 . The processor of claim 4 , wherein the processor core is further to execute the VMM, which is to: detect the interrupt flag is set within the flag register; handle the interrupt; and reissue a call for execution of the instruction to complete flush of the cache. 6 . The processor of claim 5 , wherein the processor core is further to: retrieve the interrupted block count stored in the global register; and resume execution of the instruction to resume the flush of the cache from a location within the cache identified by the value of the interrupted block count. 7 . The processor of claim 5 , wherein the processor core is further to, in response to completion of the flush: set a completion flag in the flag register to indicate successful cache flush completion; and reset to zero the value of the interrupt block count in the global register. 8 . The processor of claim 1 , wherein the processor core is further to, during each iteration of the flush loop, store a value of the current cache block count in the global register. 9 . The processor of claim 1 , wherein the interrupted block count comprises an iteration number of the flush loop at which the system interrupt occurs, and wherein the cache comprises all caches available to the processor core for caching. 10 . A system comprising: a cache to store data read from a memory device; a global register to store a value of an interrupted block count; and a processor core to execute a virtual machine manager (VMM) to: detect that a first trust domain, which owns a host key identifier (HKID) to be reclaimed for assignment to a second trust domain, is in a quiesced state; and call for execution of an instruction, which identifies the HKID, to flush blocks of the cache that are associated with the first trust domain; a processor comprising the processor core, the global register, and the cache, wherein the processor is to, upon execution of the instruction: flush the blocks of the cache sequentially according to a flush loop of the cache; store a value of a current cache block count, at each iteration of the flush loop, into the global register; detect a system interrupt; and stop execution of the instruction to pause the flush of the cache in response to the system interrupt. 11 . The system of claim 10 , wherein the current cache block count, in response to the pause, is the interrupt block count in the global register, and wherein the global register comprises protected hardware. 12 . The system of claim 10 , wherein the processor is further to: tag, within key identifier (ID) tracker logic, that the flush of the cache has started; and in response to the system interrupt, set an interrupt flag in a flag register that indicates the flush of the cache is interrupted. 13 . The system of claim 12 , wherein the processor core is further to execute the VMM, which is to: detect the interrupt flag is set within the flag register; handle the interrupt; and reissue a call for execution of the instruction to complete flush of the cache. 14 . The system of claim 13 , wherein the processor is further to: retrieve the interrupted block count stored in the global register; and resume execution of the instruction to resume the flush of the cache from a location within the cache identified by the value of the interrupted block count. 15 . The system of claim 13 , wherein the processor is further to, in response to completion of the flush: set a completion flag in the flag register to indicate successful cache flush completion; and reset to zero the value of the interrupt block count in the global register. 16 . The system of claim 10 , wherein the processor is further to tag the HKID as being in a reclaim state. 17 . The system of claim 10 , wherein the interrupted block count comprises an iteration number of the flush loop at which the system interrupt occurs. 18 . A method comprising: detecting, by a virtual machine monitor (VMM) running on a processor, that a first trust domain, which owns a host key identifier (HKID) to be reclaimed for assignment to a second trust domain, is in a quiesced state; calling, by the VMM, for execution of an instruction, which identifies the HKID, to flush blocks of cache that are associated with the first trust domain; initializing, by processor hardware of the processor during execution of the instruction, a value for a current cache block count associated with blocks of the cache; and iteratively, by the processor hardware, over a flush loop of the cache: flushing a cache block associated with the value for the current cache block count; incrementing the value for the current cache block count; determining whether the value for the current cache block count is equal to a total number of cache blocks of the cache; and detecting whether an interrupt is pending; and in response to detecting a system interrupt is pending: stopping execution of the instruction to pause the flush of the cache; and storing the current cache block count into protected hardware storage as an interrupted block count. 19 . The method of claim 18 , wherein initializing the value for the current cache block count comprises setting the value of the current cache block count to be a value of the interrupted block count upon beginning execution of the instruction. 20 . The method of claim 18 , wherein, in response to the value for the current cache block count being equal to the total number of cache blocks: setting a completion flag in a flag register; and setting the interrupt block count to a zero value. 21 . The method of claim 18 , further comprising setting an interrupt flag in a flag register that indicates the flush of the cache is interrupted. 22 . The method of claim 21 , further comprising: detecting, by the VMM, the interrupt flag is set within the flag register;

Assignees

Inventors

Classifications

  • Latency reduction · CPC title

  • by multiple requestors · CPC title

  • Virtual address space management · CPC title

  • using clearing, invalidating or resetting means · CPC title

  • for multiple virtual address spaces, e.g. segmentation (G06F12/1045 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 US2020201638A1 cover?
A processor includes a global register to store a value of an interrupted block count. A processor core, communicably coupled to the global register, may, upon execution of an instruction to flush blocks of a cache that are associated with a security domain: flush the blocks of the cache sequentially according to a flush loop of the cache; and in response to detection of a system interrupt: sto…
Who is the assignee on this patent?
Intel Corp
What technology area does this patent fall under?
Primary CPC classification G06F9/45558. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu Jun 25 2020 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).