System and method for atomic persistence in storage class memory
First Claim
1. A method for performing a group of processor load and store instructions to Storage Class Memory atomically and asynchronously, the method comprising:
- creating an alias table in Dynamic Random Access Memory which catches spurious cache evictions from write-back caching of aliased Storage Class Memory addresses from corrupting a Storage Class Memory structure on a system failure;
creating a log area in a Storage Class Memory for asynchronous logging operations;
upon receiving a request for a new atomic group of processor load and store instructions to Storage Class Memory, creating a log for stored values in the group;
upon receiving a store request to a Storage Class Memory address in an atomic group of processor load and store instructions to Storage Class Memory;
asynchronously storing the Storage Class Memory address and value to be stored to the log;
determining whether an alias for the Storage Class Memory address exists;
upon determining that the alias address exists, performing a store of the value to the alias address location;
and upon determining that the alias address does not exist, storing the value to an alias address memory location in Dynamic Random Access Memory and associating the alias address with the Storage Class Memory address;
upon receiving a load request to a Storage Class Memory address in an atomic group of processor load and store instructions to Storage Class Memory;
determining whether an alias for the Storage Class Memory address exists;
upon determining that the alias address exists, returning the value in the alias address location;
and upon determining that the alias address does not exist, returning the value in the Storage Class Memory location;
upon receiving a close request for an atomic group of processor load and store instructions to Storage Class Memory, marking the log structure in Storage Class Memory as closed;
upon receiving an abort request for an atomic group of processor load and store instructions to Storage Class Memory, deleting the log for the group, performing a memory fence, notifying a log manager to copy values from completed logs to Storage Class Memory, and clearing the alias table;
and upon determining the alias table in Dynamic Random Access Memory running out of space, suspending new atomic group requests, notifying the log manager to process completed logs, and clearing the alias table.
0 Assignments
0 Petitions
Accused Products
Abstract
Emerging byte-addressable persistent memory technologies, generically referred to as Storage Class Memory, offer performance advantages and access similar to Dynamic Random Access Memory while having the persistence of disk. Unifying storage and memory into a memory tier that can be accessed directly requires additional burden to ensure that groups of memory operations to persistent or nonvolatile memory locations are performed sequentially, atomically, and not caught in the cache hierarchy.
The present invention provides a lightweight solution for the atomicity and durability of write operations to nonvolatile memory, while simultaneously supporting fast paths through the cache hierarchy to memory. The invention includes a hardware-supported solution with modifications to the memory hierarchy comprising a victim cache and additional memory controller logic. The invention also includes a software only method and system that provides atomic persistence to nonvolatile memory using a software alias in DRAM and log in nonvolatile memory.
25 Citations
11 Claims
-
1. A method for performing a group of processor load and store instructions to Storage Class Memory atomically and asynchronously, the method comprising:
-
creating an alias table in Dynamic Random Access Memory which catches spurious cache evictions from write-back caching of aliased Storage Class Memory addresses from corrupting a Storage Class Memory structure on a system failure; creating a log area in a Storage Class Memory for asynchronous logging operations; upon receiving a request for a new atomic group of processor load and store instructions to Storage Class Memory, creating a log for stored values in the group; upon receiving a store request to a Storage Class Memory address in an atomic group of processor load and store instructions to Storage Class Memory; asynchronously storing the Storage Class Memory address and value to be stored to the log; determining whether an alias for the Storage Class Memory address exists; upon determining that the alias address exists, performing a store of the value to the alias address location; and upon determining that the alias address does not exist, storing the value to an alias address memory location in Dynamic Random Access Memory and associating the alias address with the Storage Class Memory address; upon receiving a load request to a Storage Class Memory address in an atomic group of processor load and store instructions to Storage Class Memory; determining whether an alias for the Storage Class Memory address exists; upon determining that the alias address exists, returning the value in the alias address location; and upon determining that the alias address does not exist, returning the value in the Storage Class Memory location; upon receiving a close request for an atomic group of processor load and store instructions to Storage Class Memory, marking the log structure in Storage Class Memory as closed; upon receiving an abort request for an atomic group of processor load and store instructions to Storage Class Memory, deleting the log for the group, performing a memory fence, notifying a log manager to copy values from completed logs to Storage Class Memory, and clearing the alias table; and upon determining the alias table in Dynamic Random Access Memory running out of space, suspending new atomic group requests, notifying the log manager to process completed logs, and clearing the alias table. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A system for performing a group of processor load and store instructions to Storage Class Memory atomically and asynchronously, the system comprising:
-
one or more central processing units; one or more levels of write-back cache hierarchy; Dynamic Random Access Memory; an alias table in Dynamic Random Access Memory which catches spurious cache evictions to the write-back memory hierarchy of aliased Storage Class Memory addresses from corrupting a Storage Class Memory structure on a system failure; Storage Class Memory attached to the main-memory bus fronted by the write-back cache hierarchy; an area of Storage Class Memory used for log operations; a persistent atomicity memory control manager which opens a log on new atomic group requests, checks the alias table on Storage Class Memory load requests and returns the alias if exists or the original memory value, updates an alias table entry on a Storage Class Memory store request associating the address and value in the alias table and adding the address value pair to the log, and on close requests, marks the log closed, and notifies a log manager; and a log manager which, upon receiving a log completion request, processes the log asynchronously by issuing a store fence and copying values from the completed log to the Storage Class Memory addresses for each of the entries in the log, and when running out of space in the alias table, processes completed logs and clears the alias table. - View Dependent Claims (11)
-
Specification