IP Library Granted Patent US 12,517,888
Granted Patent B2
US 12,517,888 · App. 18/523,671 · Granted Jan 6, 2026

Persistent memory management

Inventors: Nisha Talagala (Livermore, CA); Swaminathan Sundararaman (San Jose, CA); David Flynn (Sandy, UT)
Assignee: Sandisk Technologies, Inc.
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 12,517,888
App. No.
18/523,671
Granted
Jan 6, 2026
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 (29)

1 . A method comprising:

determining completion of a barrier operation for a first auto-commit memory (ACM) buffer of a first volatile memory buffer of a first non-volatile storage device;

creating a copy of data of the first ACM buffer in response to determining completion of the barrier operation, wherein the creating comprises storing the copy in a second ACM buffer of a second volatile memory buffer of a second non-volatile storage device;

dynamically switching data operations for the data of the first ACM buffer to the copy;

receiving an updated version of the data of the first ACM buffer, wherein the updated version is inconsistent with the copy; and

synchronizing, in response to a trigger associated with the first ACM buffer, the updated version of the data to the first ACM buffer and the copy, wherein the updated version of the data of the first ACM buffer 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 the copy is stored on a blank page of the second ACM buffer.

3 . The method of claim 1 , further comprising providing the data of the first ACM buffer to a client from the first non-volatile storage device after recovery from a restart event.

4 . The method of claim 3 , further comprising providing the data by loading the data from the first non-volatile storage device into the first volatile memory buffer.

5 . The method of claim 1 , further comprising receiving a barrier request for the first volatile memory buffer.

6 . An apparatus comprising:

a hardware controller for one or more volatile memory buffers each associated with a non-volatile storage medium of a plurality of non-volatile storage mediums, the hardware controller configured to:

determine completion of a barrier operation for a first auto-commit memory (ACM) buffer of a first volatile memory buffer of a first non-volatile storage medium of the plurality of non-volatile storage mediums;

create a copy of data of the first ACM buffer in response to determining completion of the barrier operation, wherein the creating comprises storing the copy in a second ACM buffer of a second volatile memory buffer of a second non-volatile storage medium of the plurality of non-volatile storage mediums;

preserve the copy by dynamically switching data operations for the data of the first ACM buffer to the copy;

receive an updated version of the data of the first ACM buffer, wherein the updated version is inconsistent with the copy; and

synchronize, in response to a trigger associated with the first ACM buffer, the updated version to the first ACM buffer and the copy, wherein the version is accessible to both an application for the first non-volatile storage medium and an application for the second non-volatile storage medium.

7 . The apparatus of claim 6 , wherein the copy is stored on a blank page of the second ACM buffer.

8 . The apparatus of claim 6 , wherein the hardware controller is further configured to write the data of the first ACM buffer to the first non-volatile storage medium.

9 . The apparatus of claim 8 , wherein the hardware controller is further configured to provide the data of the first ACM buffer to a client from the first non-volatile storage medium after recovery from a restart event.

10 . The apparatus of claim 9 , wherein the hardware controller is further configured to provide the data of the first ACM buffer by loading the data from the first non-volatile storage medium into the first volatile memory buffer.

11 . The apparatus of claim 6 , wherein the hardware controller is further configured to receive a barrier request for the first volatile memory buffer.

12 . An apparatus comprising:

means for determining completion of a barrier operation for a first auto-commit memory (ACM) buffer of a first volatile memory buffer of a first non-volatile storage device;

means for creating a copy of data of the first ACM buffer in response to determining completion of the barrier operation, wherein the creating comprises storing the copy in a second ACM buffer of a second volatile memory buffer of a second non-volatile storage device;

means for dynamically switching data operations for the data of the first ACM buffer to the copy;

means for receiving an updated version of the data of the first ACM buffer, wherein the updated version is inconsistent with the copy; and

means for synchronizing, in response to a trigger associated with the first ACM buffer, the updated version to the first ACM buffer and the copy, wherein the updated version is accessible to both an application for the first non-volatile storage device and an application for the second non-volatile storage device.

13 . The apparatus of claim 12 , wherein the copy is stored on a blank page of the second ACM buffer.

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 Dec 3, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 069475/0640 →
CHANGE OF NAME Recorded Dec 3, 2024
From: FUSION-IO, INC.
To: FUSION-IO, LLC
Reel/Frame 069475/0629 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2024
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069460/0848 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2024
From: TALAGALA, NISHA; SUNDARARAMAN, SWAMINATHAN; FLYNN, DAVID
To: FUSION-IO, INC.
Reel/Frame 069468/0249 →
Continuity (15)
Division 17037445 · Sep 29, 2020
Division 14207093 · Mar 12, 2014
Continuation In Part 13836826 · Mar 15, 2013
Continuation In Part 13838070 · Mar 15, 2013
Continuation In Part 13694000 · Dec 4, 2012
Continuation In Part 13324942 · Dec 13, 2011
Provisional Application 61878031 · Sep 15, 2013
Provisional Application 61864514 · Aug 9, 2013
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 61583133 · Jan 4, 2012
Provisional Application 61422635 · Dec 13, 2010
Related Publication 20240095233A1 · Mar 21, 2024
References Cited (9)
US 5895488A · Loechel · 1999 [cited by examiner]
US 9047178B2 · Talagala · 2015 [cited by examiner]
US 20020174283A1 · Lin · 2002 [cited by examiner]
US 20050005070A1 · Lam · 2005 [cited by examiner]
US 20050065986A1 · Bixby · 2005 [cited by examiner]
US 20050193232A1 · Diehl · 2005 [cited by examiner]
US 20080162786A1 · Shanmuganathan · 2008 [cited by examiner]
US 20100070747A1 · Iyigun · 2010 [cited by examiner]
US 20100199042A1 · Bates · 2010 [cited by examiner]