IP Library Granted Patent US 11,907,200
Granted Patent B2
US 11,907,200 · App. 17/037,445 · Granted Feb 20, 2024

Persistent memory management

Inventors: Nisha Talagala (Livermore, CA); Swaminathan Sundararaman (San Jose, CA); David Flynn (Sandy, UT)
Assignee: SANDISK TECHNOLOGIES LLC
G06F16/2365G06F11/1441G06F12/0804G06F11/1666G06F11/20G06F12/0238G06F2212/202
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 11,907,200
App. No.
17/037,445
Granted
Feb 20, 2024
Kind
B2
Abstract

Apparatuses, systems, methods, and computer program products are disclosed for persistent memory management. Persistent memory management may include replicating a persistent data structure in volatile memory buffers of at least two non-volatile storage devices. Persistent memory management may include preserving a snapshot copy of data in association with completion of a barrier operation for the data. Persistent memory management may include determining which interface of a plurality of supported interfaces is to be used to flush data from a processor complex.

Claims (32)

1. A method comprising:

storing at least a portion of a data structure in a first volatile memory buffer within an isolation zone of a first non-volatile storage device, the first volatile memory buffer comprising a first auto-commit buffer of a first auto-commit memory that is configured to ensure that the data structure is preserved in the first non-volatile storage device in response to a trigger associated with the first auto-commit buffer;

copying data of the at least a portion of the data structure stored in the first volatile memory buffer to a second volatile memory buffer within an isolation zone of a second non-volatile storage device such that both the first and second non-volatile storage devices independently ensure persistence of the data structure, the second volatile memory buffer comprising a second auto-commit buffer of a second auto-commit memory;

receiving updated data for the at least a portion of the data structure stored in the first volatile memory buffer; and

synchronizing, in response to the trigger associated with the first auto-commit buffer, the updated data of the at least a portion of the data structure stored in the first volatile memory buffer and the at least a portion of the data structure stored in the second volatile memory buffer such that the updated data of the data structure is accessible to both an application for the first non-volatile storage device and an application for the second non-volatile storage device.

2. The method of claim 1 , wherein copying the data of the data structure is performed over a network interface from the first non-volatile storage device to the second non-volatile storage device.

3. The method of claim 2 , wherein the network interface is independent of a processor and a host volatile memory of a host computing device.

4. The method of claim 2 , wherein the network interface comprises one or more of a serial bus, a parallel bus, a peripheral component interconnect (PCI) interface, a PCI express (PCIe) interface, a universal serial bus (USB), an Ethernet interface, a small computer system interface (SCSI), and an advance technology attachment (ATA) interface.

5. The method of claim 1 , wherein the data structure is accessible as a file associated with a filename.

6. The method of claim 5 , wherein:

a first portion of the file is stored in the first and second volatile memory buffers; and

a second portion of the file is stored on the first and second non-volatile storage devices.

7. The method of claim 1 , wherein copying the data of the data structure is performed at a byte granularity, the data of the data structure comprising one or more updates to the data structure.

8. An apparatus comprising:

a persistent data structure module configured to store at least a portion of a data structure in a first volatile memory buffer within an isolation zone of a first non-volatile storage device, the first volatile memory buffer comprising a first auto-commit buffer of a first auto-commit memory that is configured to ensure that the data structure is preserved in the first non-volatile storage device in response to a trigger associated with the first auto-commit buffer; and

a replication module configured to copy data of the at least a portion of the data structure stored in the first volatile memory buffer to a second volatile memory buffer within an isolation zone of a second non-volatile storage device such that both the first and second non-volatile storage devices independently ensure persistence of the data structure, the second volatile memory buffer comprising a second auto-commit buffer of a second auto-commit memory; and

a write module configured to receive updated data for the at least a portion of the data structure stored in the first volatile memory buffer,

wherein the replication module is configured to synchronize, in response to the trigger associated with the first auto-commit buffer, the updated data of the at least a portion of the data structure stored in the first volatile memory buffer and the at least a portion of the data structure stored in the second volatile memory buffer such that the updated data of the data structure is accessible to both an application for the first non-volatile storage device and an application for the second non-volatile storage device.

9. The apparatus of claim 8 , wherein the replication module is further configured to copy the data of the data structure over a network interface from the first non-volatile storage device to the second non-volatile storage device.

10. The apparatus of claim 9 , wherein the replication module is further configured to copy the data of the data structure over the network interface independent of a processor of a host computing device.

11. The apparatus of claim 10 , wherein the replication module is further configured to copy the data of the data structure over the network interface independent of a host volatile memory of the host computing device.

12. The apparatus of claim 9 , wherein the network interface comprises one or more of a serial bus, a parallel bus, a peripheral component interconnect (PCI) interface, a PCI express (PCIe) interface, a universal serial bus (USB), an Ethernet interface, a small computer system interface (SCSI), and an advance technology attachment (ATA) interface.

13. The apparatus of claim 8 , wherein the data structure is accessible as a file associated with a filename.

14. The apparatus of claim 13 , wherein a first portion of the file is stored in the first and second volatile memory buffers.

15. The apparatus of claim 14 , wherein a second portion of the file is stored on the first and second non-volatile storage devices.

16. The apparatus of claim 8 , wherein the replication module is further configured to copy the data of the data structure at a byte granularity.

17. The apparatus of claim 8 , wherein the data of the data structure comprises one or more updates to the data structure.

18. An apparatus comprising:

means for storing at least a portion of a data structure in a first volatile memory buffer within an isolation zone of a first non-volatile storage device, the first volatile memory buffer comprising a first auto-commit buffer of a first auto-commit memory that is configured to ensure that the data structure is preserved in the first non-volatile storage device in response to a trigger associated with the first auto-commit buffer;

means for copying data of the at least a portion of the data structure stored in the first volatile memory buffer to a second volatile memory buffer within an isolation zone of a second non-volatile storage device such that both the first and second non-volatile storage devices independently ensure persistence of the data structure, the second volatile memory buffer comprising a second auto-commit buffer of a second auto-commit memory;

means for receiving updated data for the at least a portion of the data structure stored in the first volatile memory buffer; and

means for synchronizing, in response to the trigger associated with the first auto-commit buffer, the updated data of the at least a portion of the data structure stored in the first volatile memory buffer and the at least a portion of the data structure stored in the second volatile memory buffer such that the updated data of the data structure is accessible to both an application for the first non-volatile storage device and an application for the second non-volatile storage device.

Assignments (7)
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 Jan 22, 2021
From: FUSION-IO, INC.
To: FUSION-IO, LLC
Reel/Frame 055088/0675 →
CHANGE OF NAME Recorded Jan 22, 2021
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 055088/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2021
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 055004/0047 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2021
From: TALAGALA, NISHA; SUNDARARAMAN, SWAMINATHAN; FLYNN, DAVID
To: FUSION-IO, INC.
Reel/Frame 055088/0597 →
Cited By (1)
US 12,602,473