Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
First Claim
1. In a computer system having one or more processors, volatile memory, nonvolatile memory, and a processor cache, a method of mirroring updates to the nonvolatile memory, comprising:
- determining that an instruction to flush the processor cache into the nonvolatile memory has been issued, wherein the processor cache contains cached data and memory addresses of both the volatile memory and the non-volatile memory, and a memory space of the volatile memory and the nonvolatile memory is logically partitioned into pages;
in response to the issuance of the flush instruction when dirty contents of pages of the nonvolatile memory are cached in cache lines of the processor cache such that a dirty indication in each of page table entries of the pages of the nonvolatile memory is set, writing the dirty contents of the pages of the nonvolatile memory that are cached in the cache lines of the processor cache into the pages of the nonvolatile memory at corresponding memory addresses of the nonvolatile memory stored in the cache lines; and
transmitting at least the cache lines of the processor cache that have been written into the nonvolatile memory to a remote computer system,wherein after said writing and prior to said transmitting, not clearing the dirty indication in each of the pages table entries of the pages of the nonvolatile memory, and responsive to said transmitting, clearing the dirty indication in each of the page table entries of the pages of the nonvolatile memory.
2 Assignments
0 Petitions
Accused Products
Abstract
Updates to nonvolatile memory pages are mirrored so that certain features of a computer system, such as live migration of applications, fault tolerance, and high availability, will be available even when nonvolatile memory is local to the computer system. Mirroring may be carried out when a cache flush instruction is executed to flush contents of the cache into nonvolatile memory. In addition, mirroring may be carried out asynchronously with respect to execution of the cache flush instruction by retrieving content that is to be mirrored from the nonvolatile memory using memory addresses of the nonvolatile memory corresponding to target memory addresses of the cache flush instruction.
50 Citations
20 Claims
-
1. In a computer system having one or more processors, volatile memory, nonvolatile memory, and a processor cache, a method of mirroring updates to the nonvolatile memory, comprising:
-
determining that an instruction to flush the processor cache into the nonvolatile memory has been issued, wherein the processor cache contains cached data and memory addresses of both the volatile memory and the non-volatile memory, and a memory space of the volatile memory and the nonvolatile memory is logically partitioned into pages; in response to the issuance of the flush instruction when dirty contents of pages of the nonvolatile memory are cached in cache lines of the processor cache such that a dirty indication in each of page table entries of the pages of the nonvolatile memory is set, writing the dirty contents of the pages of the nonvolatile memory that are cached in the cache lines of the processor cache into the pages of the nonvolatile memory at corresponding memory addresses of the nonvolatile memory stored in the cache lines; and transmitting at least the cache lines of the processor cache that have been written into the nonvolatile memory to a remote computer system, wherein after said writing and prior to said transmitting, not clearing the dirty indication in each of the pages table entries of the pages of the nonvolatile memory, and responsive to said transmitting, clearing the dirty indication in each of the page table entries of the pages of the nonvolatile memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A non-transitory computer readable medium comprising instructions to be executed in a computer system having one or more processors, volatile memory, nonvolatile memory, and a processor cache to perform a method of mirroring updates to the nonvolatile memory, comprising the steps of:
-
determining that an instruction to flush the processor cache into the nonvolatile memory has been issued, wherein the processor cache contains cached data and memory addresses of both the volatile memory and the non-volatile memory, and a memory space of the volatile memory and the nonvolatile memory is logically partitioned into pages; in response to the issuance of the flush instruction when dirty contents of pages of the nonvolatile memory are cached in cache lines of the processor cache such that a dirty indication in each of page table entries of the pages of the nonvolatile memory is set, writing the dirty contents of the pages of the nonvolatile memory that are cached in the cache lines of the processor cache into the pages of the nonvolatile memory at corresponding memory addresses of the nonvolatile memory stored in the cache lines; and transmitting at least the cache lines of the processor cache that have been written into the nonvolatile memory to a remote computer system, wherein after said writing and prior to said transmitting, not clearing the dirty indication in each of the pages table entries of the pages of the nonvolatile memory, and responsive to said transmitting, clearing the dirty indication in each of the page table entries of the pages of the nonvolatile memory. - View Dependent Claims (17, 18)
-
-
19. A computer system comprising:
-
one or more processors; volatile memory; nonvolatile memory; and a processor cache, wherein the processor cache contains cached data and memory addresses of both the volatile memory and the non-volatile memory, and a memory space of the volatile memory and the nonvolatile memory is logically partitioned into pages, and wherein the one or more processors are programmed to execute a method of mirroring updates to the nonvolatile memory, comprising the steps of; determining that an instruction to flush the processor cache into the nonvolatile memory has been issued; in response to the issuance of the flush instruction when dirty contents of pages of the nonvolatile memory are cached in cache lines of the processor cache such that a dirty indication in each of page table entries of the pages of the nonvolatile memory is set, writing the dirty contents of the pages of the nonvolatile memory that are cached in the cache lines of the processor cache into the pages of the nonvolatile memory at corresponding memory addresses of the nonvolatile memory stored in the cache lines; and transmitting at least the cache lines of the processor cache that have been written into the nonvolatile memory to a remote computer system, wherein after said writing and prior to said transmitting, not clearing the dirty indication in each of the pages table entries of the pages of the nonvolatile memory, and responsive to said transmitting, clearing the dirty indication in each of the page table entries of the pages of the nonvolatile memory. - View Dependent Claims (20)
-
Specification