IP Library Granted Patent US 9,223,662
Granted Patent B2
US 9,223,662 · App. 14/011,395 · Granted Dec 29, 2015

Preserving data of a volatile memory

Inventors: David Flynn (Sandy, UT); David Nellans (Slt Lake City, UT); John Strasser (Syracuse, UT); James G. Peterson (San Jose, CA); Robert Wipfel (Draper, UT)
Assignee: SanDisk Technologies, Inc.
G06F11/1666G06F1/30G06F3/0619G06F3/0656G06F3/0679G06F11/1008G06F11/1441G06F12/0246G06F12/0802G06F11/2015G06F11/3034G06F11/3058G06F2201/81G06F2212/7207
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,223,662
App. No.
14/011,395
Granted
Dec 29, 2015
Kind
B2
Abstract

Apparatuses, systems, methods, and computer program products for auto-commit memory are presented. A monitor module determines that a triggering event for an auto-commit memory has occurred. An identification module identifies a triggered commit action for an auto-commit memory. An auto-commit memory module performs a triggered commit action for an auto-commit memory in response to a triggering event occurring.

Claims (28)

1. A method comprising:

storing data in a volatile memory communicatively coupled to a non-volatile memory device, the data associated with a logical identifier;

maintaining metadata associating the data with the logical identifier;

writing the data from the volatile memory to a non-volatile memory medium of the non-volatile memory device in response to a failure event such that the data on the non-volatile memory medium remains associated with the logical identifier; and

preventing a read before write hazard based on the maintained metadata, the metadata tracking associations between logical identifiers of a block device interface for the data and memory addresses for the data in the volatile memory.

2. The method of claim 1 , further comprising mapping the volatile memory into a volatile memory address space of a host computer in response to a request.

3. The method of claim 1 , further comprising mapping the volatile memory into a memory system of a remote computing device using remote direct memory access (RDMA) such that the data of the volatile memory is accessible on the remote computing device using memory semantics.

4. The method of claim 1 , further comprising disabling caching of memory operations for the volatile memory on a host computing device such that memory semantic operations for the volatile memory are performed directly on the volatile memory.

5. The method of claim 1 , further comprising clearing the metadata in response to writing the data to the non-volatile memory medium.

6. The method of claim 1 , wherein the logical identifier associated with the data is associated with a physical location on the non-volatile memory medium of a non-volatile storage device.

7. The method of claim 1 , wherein the non-volatile memory medium comprises a cache for a backing store and writing the data from the volatile memory to the non-volatile memory medium in response to the failure event preserves dirty data for migration from the cache to the backing store.

8. The method of claim 1 , wherein the data comprises a durable synchronization primitive, the volatile memory mapped into different address ranges of a memory system such that the synchronization primitive has a same state for each of the different address ranges.

9. The method of claim 1 , wherein the volatile memory is tightly coupled to a storage controller for the non-volatile memory medium, the storage controller configured to write the data from the volatile memory to the non-volatile memory medium independent of a host computing device.

10. An apparatus comprising:

a monitor module configured to determine that a triggering event for a volatile memory has occurred, the volatile memory mapped into a volatile memory system of a host computing device;

an identification module configured to identify a triggered commit action for the volatile memory;

an auto-commit memory module configured to perform the triggered commit action for the volatile memory during a power hold-up time provided by a secondary power source for the volatile memory in response to the monitor module determining that the triggering event has occurred; and

a storage layer configured to prevent a read before write hazard based on metadata maintained for data of the volatile memory, the metadata tracking associations between logical identifiers of a block device interface for the data of the volatile memory and memory addresses for the data of the volatile memory mapped into the volatile memory system of the host computing device, wherein the monitor module, the identification module, the auto-commit memory module, and the storage layer comprise one or more of logic hardware and executable code stored on a non-transitory computer readable storage medium.

11. The apparatus of claim 10 , further comprising an instant committed memory library configured to map the volatile memory into the volatile memory system of the host computing device in response to a request.

12. The apparatus of claim 10 , further comprising a storage layer configured to disable caching of memory operations for the volatile memory on a host computing device such that memory semantic operations for the volatile memory are performed directly on the volatile memory.

13. The apparatus of claim 10 , further comprising a storage layer configured to disarm the volatile memory by clearing the triggered commit action for the volatile memory in response to the auto-commit memory module performing the triggered commit action.

14. An apparatus comprising:

means for executing memory semantic operations on data in a volatile memory buffer mapped into a volatile memory address space of a host computer of a non-volatile storage device comprising the volatile memory buffer and disabling caching of the memory semantic operations on the host computer such that the memory semantic operations are executed directly on the volatile memory buffer;

means for arming the volatile memory buffer with metadata associating the data with a logical identifier of the non-volatile storage device; and

means for committing the data from the volatile memory buffer to a non-volatile memory medium of the non-volatile storage device in response to a trigger such that the logical identifier is stored together with the data associated with the logical identifier in the non-volatile memory medium, wherein the means for executing, the means for arming, and the means for committing comprise one or more of logic hardware and executable code stored on a non-transitory computer readable storage medium.

15. The apparatus of claim 14 , further comprising means for mapping the volatile memory buffer into the volatile memory address space of the host computer in response to a request.

16. The apparatus of claim 14 , further comprising means for preventing a read before write hazard based on the metadata, the metadata tracking associations between the logical identifier and memory addresses for the data of the volatile memory buffer.

17. The apparatus of claim 14 , further comprising means for disarming the volatile memory buffer by clearing the metadata in response to committing the data from the volatile memory buffer to the non-volatile storage device.

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/0948 →
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 Sep 6, 2013
From: FLYNN, DAVID; NELLANS, DAVID; STRASSER, JOHN; PETERSON, JAMES G.; WIPFEL, ROBERT
To: FUSION-IO, INC.
Reel/Frame 031155/0444 →
Continuity (3)
Continuation 13324942 · Dec 13, 2011
Provisional Application 61422635 · Dec 13, 2010
Related Publication 20130346793A1 · Dec 26, 2013