IP Library Granted Patent US 12,572,289
Granted Patent B2
US 12,572,289 · App. 18/406,586 · Granted Mar 10, 2026

Just-in-time low capacity DRAM memory allocation

Inventors: Amir Segev (Meiter, IL); Shay Benisty (Beer Sheva, IL)
Assignee: Sandisk Technologies, Inc.
G06F3/0631G06F3/0604G06F3/0656G06F3/0673
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,572,289
App. No.
18/406,586
Granted
Mar 10, 2026
Kind
B2
Abstract

Instead of allocating unused resources, offload work from the host, and move to just-in-time, low capacity DRAM memory allocation. The host does a read and receives the location of the data in the response. This will offload the host from managing physical region page (PRP) lists. The data storage device counts the number of bytes that have been read by the host (per flash memory unit (FMU)), and the data storage device can release the buffer as soon as all the data has been read. The data storage device knows automatically when a buffer should be allocated/de-allocated just-in-time.

Claims (56)

1 . A data storage device, comprising:

a memory device; and

a controller coupled to the memory device, wherein the controller is configured to:

fetch a read command;

read data for the read command from the memory device;

store the read data in a controller memory buffer (CMB);

send the read data from the CMB to a host device;

mark a CMB range of the read data as free;

detect a queue depth for a queue from where the read command is fetched; and

determine whether the queue depth is above a first threshold or below a second threshold, wherein the CMB includes a first CMB disposed in a first memory location and a second CMB disposed in a second memory location distinct from the first memory location, and wherein the storing is to the CMB in the first memory location when the queue depth is above the first threshold.

2 . The data storage device of claim 1 , wherein the storing is to the CMB in the second memory location when the queue depth is below the second threshold.

3 . The data storage device of claim 1 , wherein the first CMB is static random access memory (SRAM).

4 . The data storage device of claim 3 , wherein the second CMB is dynamic random access memory (DRAM).

5 . The data storage device of claim 1 , wherein the controller is configured to switch between the first memory location and the second memory location based upon the detected queue depth.

6 . The data storage device of claim 1 , wherein the controller is configured to count an amount of data read.

7 . The data storage device of claim 6 , wherein the controller is configured to release allocated memory from the CMB in response to the counting.

8 . A data storage device, comprising:

a memory device; and

a controller coupled to the memory device, wherein the controller is configured to:

count an amount of data read from a controller memory buffer (CMB);

send the read data from the CMB to a host device; and

release allocated memory of the CMB based upon the counting wherein the CMB includes a first CMB disposed in static random access memory (SRAM) and a second CMB disposed in dynamic random access memory (DRAM).

9 . The data storage device of claim 8 , wherein the controller is configured to determine whether to store data read from the memory device in either the first CMB or the second CMB.

10 . The data storage device of claim 9 , wherein the determining is based upon a predetermined queue depth threshold.

11 . The data storage device of claim 8 , wherein the controller includes:

a direct memory access (DMA) module;

an encryption/decryption module;

a flash interface module coupled to the memory device; and

an error correction module.

12 . The data storage device of claim 11 , wherein the DMA module include a counter for performing the counting.

13 . A data storage device, comprising:

a memory device; and

a controller coupled to the memory device, wherein the controller is configured to:

count an amount of data read from a controller memory buffer (CMB);

send the read data from the CMB to a host device; and

release allocated memory of the CMB based upon the counting, wherein the controller includes:

a direct memory access (DMA) module, wherein the DMA module includes a counter for performing the counting;

an encryption/decryption module;

a flash interface module coupled to the memory device; and

an error correction module,

wherein the DMA module is coupled to the CMB and a resource server that manages memory allocation for the CMB.

14 . A data storage device, comprising:

means to store data; and

a controller coupled to the means to store data, wherein the controller is configured to:

retrieve a read command;

retrieve data associated with the read command from the means to store data;

store the retrieved data in a controller memory buffer (CMB), wherein the controller includes a first CMB and a second CMB distinct from the first CMB; and

send the data from either the first CMB or the second CMB to a host device, wherein the sending comprises sending the data and a physical region page (PRP) list associated with the data.

15 . The data storage device of claim 14 , wherein the controller is configured to generate the PRP list.

16 . The data storage device of claim 14 , wherein the controller is configured to:

mark a corresponding CMB range as free or available based upon the sending; and

determine whether the storing is to a CMB in static random access memory (SRAM) or dynamic random access memory (DRAM).

17 . The data storage device of claim 14 , wherein the controller is further configured to detect a queue depth for a queue from where the read command is fetched.

18 . The data storage device of claim 17 , wherein the controller is configured to determine whether the queue depth is above a first threshold or below a second threshold.

19 . The data storage device of claim 14 , wherein the controller is configured to increase a counter after storing the retrieved data.

20 . The data storage device of claim 19 , wherein the controller is configured to decrease the counter after sending the data.

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 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT (AR) Recorded May 15, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 067417/0329 →
PATENT COLLATERAL AGREEMENT (AR) Recorded Feb 22, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 066648/0284 →
PATENT COLLATERAL AGREEMENT (DDTL) Recorded Feb 22, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 066648/0206 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2024
From: SEGEV, AMIR; BENISTY, SHAY
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 066455/0023 →
Continuity (1)
Related Publication 20250224890A1 · Jul 10, 2025
References Cited (18)
US 10466906B2 · Benisty · 2019 [cited by applicant]
US 10592409B2 · Kanno · 2020 [cited by applicant]
US 11188239B2 · Benisty et al. · 2021 [cited by applicant]
US 11847323B1 · Segev et al. · 2023 [cited by applicant]
US 20160011964A1 · Rostoker et al. · 2016 [cited by applicant]
US 20180136875A1 · Nimmagadda et al. · 2018 [cited by applicant]
US 20180260347A1 · Benisty · 2018 [cited by applicant]
US 20190065102A1 · Shin et al. · 2019 [cited by applicant]
US 20190294350A1 · Hahn et al. · 2019 [cited by applicant]
US 20200050366A1 · Bavishi · 2020 [cited by examiner]
US 20200098423A1 · Huang et al. · 2020 [cited by applicant]
US 20200151040A1 · Lee et al. · 2020 [cited by applicant]
US 20200204503A1 · Cornett et al. · 2020 [cited by applicant]
US 20210223994A1 · Kanno et al. · 2021 [cited by applicant]
US 20210303199A1 · Horspool et al. · 2021 [cited by applicant]
US 20220057959A1 · Yang et al. · 2022 [cited by applicant]
US 20230112869A1 · Hwang et al. · 2023 [cited by applicant]
CN 107665091A · 2018 [cited by applicant]