IP Library Granted Patent US 9,772,938
Granted Patent B2
US 9,772,938 · App. 14/042,189 · Granted Sep 26, 2017

Auto-commit memory metadata and resetting the metadata by writing to special address in free space of page storing the metadata

Inventors: Nisha Talagala (Livermore, CA); David Flynn (Sandy, UT)
Assignee: SANDISK TECHNOLOGIES LLC
G06F12/0246G06F3/0619G06F3/0656G06F3/0679G06F12/0804G06F13/28G06F2212/202G06F2212/7205
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,772,938
App. No.
14/042,189
Granted
Sep 26, 2017
Kind
B2
Abstract

Apparatuses, systems, methods, and computer program products are disclosed. A method includes tracking which portions of data stored in a volatile memory buffer are not yet stored in a non-volatile memory medium. A volatile memory buffer may be accessible using memory semantics. A volatile memory buffer may be associated with logic configured to ensure that the data stored in the volatile memory buffer is non-volatile. A method includes maintaining consistency of data between a volatile memory buffer and a non-volatile memory medium based on tracked portions of the data. A method includes copying at least portions of data not yet stored in a non-volatile memory medium to the non-volatile memory medium in response to a trigger.

Claims (31)

1. A method comprising:

tracking which portions of data stored in a volatile memory buffer are not yet stored in a non-volatile memory medium, the volatile memory buffer associated with hardware configured to ensure that the data stored in the volatile memory buffer becomes stored in the non-volatile memory medium;

maintaining consistency of the data between the volatile memory buffer and the non-volatile memory medium based on the tracked portions of the data;

in response to a trigger, copying at least the portions of the data not yet stored in the non-volatile memory medium to the non-volatile memory medium;

providing metadata indicating which other portions of the data are stored in the non-volatile memory medium, the metadata comprising a bitmask of a first page, the first page comprises a number of bytes, the bitmask comprising a set of bits stored within one eighth of a size of a second page, such that the number of bytes of the first page are represented by the set of bits of the bitmask, the set of bits of the bitmask indicating whether the number of bytes of the first page are stored in the non-volatile memory medium;

providing a clear-all byte at a special address of a host address space for clearing the entire bitmask at once, wherein the special address is located within free space of the second page; and

in response to writing to the clear-all byte, resetting the bitmask.

2. The method of claim 1 , further comprising allowing a user to perform write operations for both the bitmask and the first page.

3. The method of claim 1 , wherein providing the metadata comprises mapping the metadata and the volatile memory buffer into the host address space.

4. The method of claim 1 , wherein the trigger comprises a non-restart event.

5. The method of claim 4 , wherein the non-restart event comprises a destage request from a client to copy at least the portions of the data not yet stored in the non-volatile memory medium to the non-volatile memory medium.

6. The method of claim 1 , further comprising merging the portions of the data not yet stored in the non-volatile memory medium with one or more previous versions of the data already stored in the non-volatile memory medium.

7. The method of claim 1 , further comprising extending a file length for the data in response to at least one of the portions of the data not yet stored in the non-volatile memory medium being associated with an offset beyond a current file length.

8. The method of claim 1 , further comprising populating an application-specific persistent object with the data based on application metadata for the data.

9. An apparatus comprising:

a memory module configured to preserve data in a volatile memory to a non-volatile storage medium of a non-volatile storage device in response to a trigger;

a has-been-written module configured to maintain metadata indicating which of the data in the volatile memory is stored in the non-volatile storage medium, the metadata comprising a bitmask of a first page, the first page comprises a number of bytes, the bitmask comprising a set of bits stored within one eighth of a size of a second page, such that the number of bytes of the first page are represented by the set of bits of the bitmask, the set of bits of the bitmask indicating whether the number of bytes of the first page are stored in the non-volatile storage medium, wherein the has-been-written module is configured to provide a clear-all byte at a special address of a host address space for clearing the entire bitmask at once, the special address located within free space of the second page, and to reset the bitmask in response to writing to the clear-all byte; and

a destage module configured to transfer only portions of the data not stored in the non-volatile storage medium from the volatile memory to the non-volatile storage medium based on the maintained metadata.

10. The apparatus of claim 9 , wherein the has-been-written module is configured to persist the metadata to the non-volatile storage medium in response to the trigger and to merge the portions of the data not stored in the non-volatile memory transferred by the destage module with one or more previous versions of the data based on the persisted metadata in response to recovery from the trigger, the trigger comprising a restart event.

11. The apparatus of claim 9 , wherein the metadata comprises a data structure populated with indicators of which data from the volatile memory has been updated.

12. A method comprising:

maintaining metadata for data of a volatile memory of a storage device, the metadata and the data of the volatile memory mapped into a virtual address space for an application executing on a host computing device coupled to the storage device, the volatile memory associated with a non-volatile storage medium of the storage device, the metadata comprising a bitmask of a first page, the first page comprises a number of bytes, the bitmask comprising a set of bits stored within one eighth of a size of a second page, such that the number of bytes of the first page are represented by the set of bits of the bitmask, the set of bits of the bitmask indicating whether the number of bytes of the first page are stored in the non-volatile storage medium;

providing a clear-all byte at a special address of the virtual address space, for clearing all the metadata at once in response to the application writing to the clear-all byte, wherein the special address is located within free space of the second page;

in response to a trigger, storing the data of the volatile memory and the metadata on the non-volatile storage medium; and

providing the data of the volatile memory and the metadata from the non-volatile storage medium to the application for processing.

13. The method of claim 12 , wherein providing the data of the volatile memory from the non-volatile storage medium to the application is in response to recovery from the trigger, the trigger comprising a restart event.

14. The method of claim 12 , wherein the metadata comprises one or more of a predefined location for writing the data after the trigger, security data for authenticating a recipient of the data, an identifier of an agent for processing the data, computer executable code for processing the data, a persistent unique identifier for the data, and a location of the data on the non-volatile storage medium.

15. The method of claim 12 , wherein:

the metadata identifies an application-specific persistent object; and

providing the data to the application comprises populating the application-specific persistent object with the data in response to recovery from the trigger, the trigger comprising a restart event.

16. The method of claim 15 , wherein the application-specific persistent object comprises a database record.

Assignments (9)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
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: 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 →
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 →
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 Oct 1, 2013
From: TALAGALA, NISHA; FLYNN, DAVID
To: FUSION-IO, INC.
Reel/Frame 031317/0143 →
Continuity (10)
Continuation 13836826 · Mar 15, 2013
Continuation In Part 13694000 · Dec 4, 2012
Continuation In Part 13324942 · Dec 13, 2011
Provisional Application 61583133 · Jan 4, 2012
Provisional Application 61705058 · Sep 24, 2012
Provisional Application 61691221 · Aug 20, 2012
Provisional Application 61661742 · Jun 19, 2012
Provisional Application 61637257 · Apr 23, 2012
Provisional Application 61422635 · Dec 13, 2010
Related Publication 20140025877A1 · Jan 23, 2014