IP Library Granted Patent US 10,289,545
Granted Patent B2
US 10,289,545 · App. 15/610,577 · Granted May 14, 2019

Hybrid checkpointed memory

Inventors: Nisha Talagala (Livermore, CA); Swaminathan Sundararaman (Santa Clara, CA); Nick Piggin (Yarralumla, AU); Ashish Batwara (Fremont, CA); David Flynn (Sandy, UT)
Assignee: SANDISK TECHNOLOGIES LLC
G06F12/0246G06F11/1441G06F12/08G06F2201/815G06F2201/82Y02D10/13
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,289,545
App. No.
15/610,577
Granted
May 14, 2019
Kind
B2
Abstract

Apparatuses, systems, methods, and computer program products are disclosed for hybrid checkpointed memory. An extended memory module uses volatile memory of a host and a non-volatile memory medium as virtual memory for the host. A clone module clones data of a range of virtual memory in response to a checkpoint event for the range of virtual memory. A range of virtual memory may include data stored in a volatile memory and data stored in a non-volatile memory medium. A checkpoint module flushes dirty data of a range of virtual memory to a non-volatile memory medium in response to a checkpoint event. A hybrid checkpointed memory interface provides access to data of a range of virtual memory while dirty data is being flushed using data of a range of virtual memory, or using a clone of the data.

Claims (37)

1. An apparatus comprising:

an extended memory module configured to use volatile memory of a host and a non-volatile memory medium as virtual memory for the host;

a clone module configured to clone data of a range of virtual memory in response to a checkpoint event for the range of virtual memory, the range of virtual memory comprising data stored in the volatile memory and data stored in the non-volatile memory medium;

a checkpoint module configured to flush dirty data of the range of virtual memory to the non-volatile memory medium in response to the checkpoint event; and

a hybrid checkpointed memory interface configured to provide access to the data of the range of virtual memory while the dirty data is being flushed using one of the clone of the data and the data of the range of virtual memory.

2. The apparatus of claim 1 , wherein:

the checkpoint module is further configured to flush data of the clone that is stored in the volatile memory and not in the non-volatile memory medium to the non-volatile memory medium in response to a subsequent checkpoint event; and

the hybrid checkpointed memory interface is further configured to provide access exclusively to the flushed versions of the data such that access to the data transitions atomically between consistent states for the data.

3. The apparatus of claim 1 , wherein the clone module is further configured to delete one or more clones of the data after a restart event to prevent a client from accessing an inconsistent state of the data.

4. The apparatus of claim 1 , further comprising a storage namespace module configured to associate different filenames with the data in response to different checkpoint requests for the data.

5. The apparatus of claim 1 , wherein the hybrid checkpointed memory interface is further configured to provide write access to the data of the range of virtual memory while the dirty data is being flushed.

6. The apparatus of claim 1 , wherein the clone of the data comprises data of a storage request received during checkpointing, the data copied in response to the storage request.

7. The apparatus of claim 6 , wherein the clone module is further configured to merge the clone of the data with the data of the range of virtual memory in response to the storage request having executed.

8. The apparatus of claim 1 , wherein the checkpoint request comprises a request from a client labeling the range of virtual memory as persistent.

9. The apparatus of claim 1 , wherein the checkpoint module flushes the dirty data by writing the dirty data to an append point of a sequential log of the non-volatile memory medium.

10. The apparatus of claim 1 , wherein the hybrid checkpointed memory interface provides access to the data of the range of virtual memory by providing access to portions of the data located in the sequential log based on entries for the data in an address mapping structure.

11. The apparatus of claim 1 , wherein the extended memory module is further configured to map multiple clones of the data into the virtual memory of the host.

12. The apparatus of claim 11 , wherein the clone module is further configured to merge updates to the multiple clones and the checkpoint module is further configured to store the merged data on the non-volatile memory medium.

13. The apparatus of claim 1 , wherein the extended memory module locates the dirty data using a page table to determine which data is not stored by the non-volatile medium.

14. The apparatus of claim 1 , wherein the extended memory module maintains a has-been-written data structure indicating which data of the range of virtual memory has been written since a previous checkpoint at a sub-page granularity.

15. A method comprising:

cloning data of a range of virtual memory in response to a checkpoint event for the range of virtual memory, the range of virtual memory comprising data stored in volatile memory and data stored in a non-volatile memory medium;

flushing dirty data of the range of virtual memory to the non-volatile memory medium in response to the checkpoint event; and

providing access to the data of the range of virtual memory while the dirty data is being flushed using one of the clone of the data and the data of the range of virtual memory.

16. The method of claim 15 , further comprising:

flushing data of the clone that is stored in the volatile memory and not in the non-volatile memory medium to the non-volatile memory medium in response to a subsequent checkpoint event; and

providing access exclusively to the flushed versions of the data such that access to the data transitions atomically between consistent states for the data.

17. The method of claim 15 , further comprising deleting one or more clones of the data after a restart event to prevent a client from accessing an inconsistent state of the data.

18. The method of claim 15 , further comprising merging the clone of the data with the data of the range of virtual memory in response to a storage request having executed.

19. A computer program product comprising a computer readable storage medium storing computer usable program code executable to perform operations, the operations comprising:

cloning data of a range of virtual memory in response to a checkpoint event for the range of virtual memory, the range of virtual memory comprising data stored in volatile memory and data stored in a non-volatile memory medium;

flushing dirty data of the range of virtual memory to the non-volatile memory medium in response to the checkpoint event; and

providing access to the data of the range of virtual memory while the dirty data is being flushed using one of the clone of the data and the data of the range of virtual memory.

20. The computer program product of claim 19 , wherein the operations further comprise:

mapping multiple clones of the data into the virtual memory of the host;

merging updates to the multiple clones; and

storing the merged data on the non-volatile memory medium.

Assignments (5)
CHANGE OF NAME Recorded Mar 28, 2019
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 048740/0053 →
CHANGE OF NAME Recorded Jan 17, 2019
From: FUSION-IO, INC.
To: FUSION-IO, LLC
Reel/Frame 049495/0200 →
CHANGE OF NAME Recorded Jan 17, 2019
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 049500/0849 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2019
From: TALAGALA, NISHA; SUNDARARAMAN, SWAMINATHAN; PIGGIN, NICK; BATWARA, ASHISH; FLYNN, DAVID
To: FUSION-IO, INC.
Reel/Frame 048053/0334 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2019
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 048053/0448 →
Continuity (3)
Division 13786385 · Mar 5, 2013
Provisional Application 61658893 · Jun 12, 2012
Related Publication 20170270041A1 · Sep 21, 2017