IP Library Granted Patent US 9,678,863
Granted Patent B2
US 9,678,863 · App. 13/786,385 · Granted Jun 13, 2017

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/82Y02B60/1225
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 9,678,863
App. No.
13/786,385
Granted
Jun 13, 2017
Kind
B2
Abstract

Apparatuses, systems, methods, and computer program products are disclosed for hybrid checkpointed memory. A method includes referencing data of a range of virtual memory of a host. The referenced data is already stored by a non-volatile medium. A method includes writing, to a non-volatile medium, data of a range of virtual memory that is not stored by the non-volatile medium. A method includes providing access to data of a range of virtual memory from a non-volatile medium using a persistent identifier associated with referenced data and written data.

Claims (44)

1. A method comprising:

receiving a checkpoint request from a client, the checkpoint request comprising an identifier of an address range of virtual memory of a host to persist, the address range dynamically selected for the checkpoint request by the client, the virtual memory providing access, using volatile memory access semantics, to a non-volatile medium and to volatile memory of the host, the range of virtual memory addresses comprising at least a first set of addresses backed by the non-volatile medium and a second set of addresses backed by the volatile memory of the host and not by the non-volatile medium;

referencing data of the range of virtual memory, the referenced data comprising data already stored by the non-volatile medium, for the first set of addresses;

writing, to the non-volatile medium, data of the range of virtual memory, the written data comprising data stored by volatile memory of the host that is not stored by the non-volatile medium, for the second set of addresses; and

providing access to the data of the range of virtual memory from the non-volatile medium using a persistent identifier associated with the referenced data and the written data.

2. The method of claim 1 , further comprising copying at least a portion of the data of the range of virtual memory and providing write access to the copy while writing from the range of virtual memory to the non-volatile medium.

3. The method of claim 2 , wherein the copied at least a portion of the data comprises data of a storage request received during checkpointing, the copied at least a portion of the data copied in response to the storage request.

4. The method of claim 2 , wherein the copied at least a portion of the data comprises data stored in volatile memory of the host and data stored on the non-volatile medium.

5. The method of claim 2 , further comprising merging data of the copied at least a portion of the data with the data of the range of virtual memory in response to completing the writing.

6. The method of claim 1 , further comprising providing access to a different version of the data of the range of virtual memory using a different persistent storage namespace identifier.

7. The method of claim 1 , further comprising deleting one or more inconsistent versions of the data in response to recovering from a restart event and providing a consistent version of the data to a client.

8. The method of claim 1 , wherein the referencing and the writing are in response to the checkpoint request.

9. The method of claim 1 , wherein writing the data comprises writing the data not stored by the non-volatile medium from volatile memory of the host to an append point of a sequential log of the non-volatile medium.

10. The method of claim 9 , wherein providing access to the data of the range of virtual memory comprises 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 method of claim 1 , wherein writing the data comprises copying the data and preserving the copied data on the non-volatile medium.

12. The method of claim 1 , further comprising mapping multiple clones of the data into the virtual memory of the host.

13. The method of claim 12 , further comprising merging updates to the multiple clones and storing the merged data on the non-volatile medium.

14. The method of claim 13 , wherein merging the updates comprises resolving conflicts in the updates based on a collision detection policy for the data.

15. The method of claim 1 , further comprising locating dirty pages in the range of virtual memory using a page table to determine which data is not stored by the non-volatile medium.

16. The method of claim 1 , further comprising maintaining 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.

17. An apparatus comprising:

a checkpoint module configured to

receive a checkpoint request from a client, the checkpoint request comprising an identifier of an address range of virtual memory of a host to persist, the address range dynamically selected for the checkpoint request by the client, the virtual memory providing access, using volatile memory access semantics, to a non-volatile medium and to volatile memory of the host, the range of virtual memory addresses comprising at least a first set of addresses backed by the non-volatile medium and a second set of addresses backed by the volatile memory of the host and not by the non-volatile medium,

reference data of the range of virtual memory, the referenced data comprising data already stored by the non-volatile medium, for the first set of addresses, and

write, to the non-volatile medium, data of the range of virtual memory, the written data comprising data stored by volatile memory of the host that is not stored by the non-volatile medium, for the second set of addresses; and

a storage namespace module configured to provide access to the data of the range of virtual memory from the non-volatile medium using a persistent identifier associated with the referenced data and the written data,

wherein the checkpoint module and the storage namespace module comprise one or more of logic hardware and executable code, the executable code stored on a non-transitory computer readable storage medium.

18. The apparatus of claim 17 , wherein the checkpoint module is configured to copy at least a portion of the data of the range of virtual memory and provide write access to the copy while writing from the range of virtual memory to the non-volatile medium.

19. The apparatus of claim 18 , wherein the copied at least a portion of the data comprises data of a storage request received during checkpointing, the copied at least a portion of the data copied in response to the storage request.

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

receiving a checkpoint request from a client, the checkpoint request comprising an identifier of an address range of virtual memory of a host to persist, the address range dynamically selected for the checkpoint request by the client, the virtual memory providing access, using volatile memory access semantics, to a non-volatile medium and to volatile memory of the host, the range of virtual memory comprising at least a first set of addresses backed by the non-volatile medium and a second set of addresses backed by the volatile memory of the host and not by the non-volatile medium;

referencing data of the range of virtual memory, the referenced data comprising data already stored by the non-volatile medium, for the first set of addresses;

writing, to the non-volatile medium, data of the range of virtual memory, the written data comprising data stored by volatile memory of the host that is not stored by the non-volatile medium, for the second set of addresses; and

providing access to the data of the range of virtual memory from the non-volatile medium using a persistent identifier associated with the referenced data and the written data.

21. The computer program product of claim 20 , the operations further comprising copying at least a portion of the data of the range of virtual memory and providing write access to the copy while writing from the range of virtual memory to the non-volatile medium.

22. The computer program product of claim 21 , wherein the copied at least a portion of the data comprises data of a storage request received during checkpointing, the copied at least a portion of the data copied in response to the storage request.

23. A system comprising:

a non-volatile medium;

a checkpoint module configured to

receive a checkpoint request from a client, the checkpoint request comprising an identifier of an address range of virtual memory of a host to persist, the virtual memory providing access, using volatile memory access semantics, to the non-volatile medium and to volatile memory of the host, the range of virtual memory addresses comprising at least a first set of addresses backed by the non-volatile medium and a second set of addresses backed by the volatile memory of the host and not by the non-volatile medium,

reference data of the range of virtual memory, the referenced data comprising data already stored by the non-volatile medium, for the first set of addresses, and

write, to the non-volatile medium, data of the range of virtual memory, the written data comprising data stored by volatile memory of the host that is not stored by the non-volatile medium, for the second set of addresses; and

a storage namespace module configured to provide access to the data of the range of virtual memory from the non-volatile medium using a persistent identifier associated with the referenced data and the written data.

24. The system of claim 23 , wherein the checkpoint module is configured to copy at least a portion of the data of the range of virtual memory and provide write access to the copy while writing from the range of virtual memory to the non-volatile medium.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2025
From: SANDISK TECHNOLOGIES LLC
To: PALISADE TECHNOLOGIES, LLP
Reel/Frame 071435/0463 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
CORRECTIVE ASSIGNMENT TO REMOVE APPL. NO'S 13/925,410 AND 61/663,464 PREVIOUSLY RECORDED AT REEL: 035168 FRAME: 0366. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 30, 2015
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 035603/0582 →
CORRECTIVE ASSIGNMENT TO REMOVE APPL. NO'S 13/925,410 AND 61/663,464 PREVIOUSLY RECORDED AT REEL: 034838 FRAME: 0091. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Apr 30, 2015
From: FUSION-IO, INC
To: FUSION-IO, LLC
Reel/Frame 035603/0748 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2015
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 035168/0366 →
CHANGE OF NAME Recorded Jan 28, 2015
From: FUSION-IO, INC
To: FUSION-IO, LLC
Reel/Frame 034838/0091 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2013
From: TALAGALA, NISHA; SUNDARARAMAN, SWAMINATHAN; PIGGIN, NICK; BATWARA, ASHISH; FLYNN, DAVID
To: FUSION-IO, INC.
Reel/Frame 030203/0042 →
Continuity (2)
Provisional Application 61658893 · Jun 12, 2012
Related Publication 20130332660A1 · Dec 12, 2013