IP Library Granted Patent US 12,619,385
Granted Patent B1
US 12,619,385 · App. 18/938,491 · Granted May 5, 2026

Data retrieval

Inventors: Ojasweeta Singh (Bangalore, IN); Ramanathan Muthiah (Bangalore, IN); Ramkumar Ramamurthy (Bangalore, IN)
Assignee: Sandisk Technologies, Inc.
G06F3/0659G06F3/0604G06F3/0679
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,619,385
App. No.
18/938,491
Granted
May 5, 2026
Kind
B1
Abstract

A data storage device usually performs better when executing a sequential read command than when executing a plurality of random read commands. If the amount of data requested to be read by a plurality of random read commands in an address range is greater than a certain percentage of the address range, it may be more efficient to treat the plurality of random read commands as a sequential read command for the entire address range. After reading the entire address range, the data storage device can determine which portions of the read data should be returned in response to the plurality of random read commands.

Claims (61)

1 . A data storage device comprising:

a memory; and

one or more processors, individually or in combination, configured to;

receive, from a requestor, a plurality of commands to read data stored non-sequentially in an address range of the memory;

determine a total size of the data requested to be read by the plurality of commands;

determine a ratio of (a) the total size of the data requested to be read by the plurality of commands and (b) a total size of the address range:

determine whether the ratio is greater than a threshold percentage of a total size of the address range; and

in response to determining that the ratio is greater than the threshold percentage of the total size of the address range:

read data stored in an entirety of the address range, wherein the data stored in the entirety of the address range comprises data requested to be read by the plurality of commands and data not requested to be read by the plurality of commands; and

respond to the plurality of commands by, for each portion of the data that is read:

determining whether the portion was requested by the plurality of commands; and

in response to determining that the portion was requested by the plurality of commands, returning that portion to the requestor:

wherein only the portions of data requested to be read by the plurality of commands are returned to the requestor.

2 . The data storage device of claim 1 , wherein the one or more processors, individually or in combination, are further configured to:

in response to determining that the ratio is not greater than the threshold percentage of the total size of the address range, execute each of the plurality of commands as individual commands.

3 . The data storage device of claim 1 , wherein the requestor comprises a plurality of cores in the data storage device.

4 . The data storage device of claim 1 , wherein the requestor comprises a host in communication with the data storage device.

5 . The data storage device of claim 1 , wherein the data stored in the entirety of the address range is read also in response to determining that there is enough cache memory available to store that data.

6 . The data storage device of claim 1 , wherein the data stored in the entirety of the address range is read also in response to determining that a flash channel workload is below a workload threshold.

7 . The data storage device of claim 1 , wherein the data stored in the entirety of the address range is read also in response to determining that a decode workload is below a decode threshold.

8 . The data storage device of claim 1 , wherein the data stored in the entirety of the address range is read also in response to determining that a data-storage-device-specific parameter and/or a memory-specific parameter is satisfied.

9 . The data storage device of claim 1 , wherein the plurality of commands is consolidated from a larger set of commands, at least some of which do not belong to the address range.

10 . The data storage device of claim 1 , wherein the data storage device comprises a compute storage system with a plurality of accelerator cores.

11 . The data storage device of claim 1 , wherein the memory comprises a three-dimensional memory.

12 . A method comprising:

performing in a data storage device comprising a memory:

receiving a plurality of read commands that fall in one region in the memory;

determining a sum of sizes of data requested to be read by the plurality of read commands;

determining a ratio of (a) the sum of the sizes of data requested to be read by the plurality of read commands and (b) a total size of the region in the memory;

determining whether the ratio is greater than a threshold percentage of the total size of the region in the memory; and

in response to determining that the ratio is greater than the threshold percentage of the total size of the region in the memory:

executing the plurality of read commands as a sequential read command for the size of the region; and

for each portion of data read by executing the plurality of read commands:

determining whether the portion of the data was requested by the plurality of read commands;

in response to determining that the portion of the data was requested by the plurality of read commands, keeping the data;

in response to determining that the portion of the data was not requested by the plurality of read commands, discarding the data.

13 . The method of claim 12 , further comprising:

in response to determining that the ratio is not greater than the threshold percentage of the total size of the region in the memory, executing the plurality of read commands as individual commands.

14 . The method of claim 12 , wherein the method is performed by a controller comprising:

an input-output command consolidation module;

a ratio calculation module;

a read command decision module; and

a data validation module.

15 . The method of claim 12 , wherein the plurality of read commands is received from a plurality of cores in the data storage device.

16 . The method of claim 12 , wherein the plurality of read commands is received from a host in communication with the data storage device.

17 . The method of claim 12 , wherein the plurality of read commands is executed as a sequential read command also in response to determining that more than a threshold amount of cache memory is available.

18 . The method of claim 12 , wherein the plurality of read commands is executed as a sequential read command also in response to determining that a flash channel workload is below a workload threshold.

19 . The method of claim 12 , wherein the plurality of read commands is executed as a sequential read command also in response to determining that a decode workload is below a decode threshold.

20 . A data storage device comprising:

a memory; and

means for;

receiving a plurality of read commands that fall in one region in the memory;

determining a sum of sizes of data requested to be read by the plurality of read commands;

determining a ratio of (a) the sum of the sizes of data requested to be read by the plurality of read commands and (b) a total size of the region in the memory;

determining whether the ratio is greater than a threshold percentage of the total size of the region in the memory; and

in response to determining that the ratio is greater than the threshold percentage of the total size of the region in the memory:

executing the plurality of read commands as a sequential read command for the size of the region; and

for each portion of data read by executing the plurality of read commands:

determining whether the portion of the data was requested by the plurality of read commands;

in response to determining that the portion of the data was requested by the plurality of read commands, keeping the data;

in response to determining that the portion of the data was not requested by the plurality of read commands, discarding the data.

Assignments (3)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 (SUPPLEMENTAL) Recorded Feb 3, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 070088/0320 →
References Cited (12)
US 9727503B2 · Kagan et al. · 2017 [cited by applicant]
US 10049047B1 · Kotte · 2018 [cited by examiner]
US 10564853B2 · Linkovsky et al. · 2020 [cited by applicant]
US 20070061492A1 · Van Riel · 2007 [cited by applicant]
US 20150363418A1 · Barajas Gonzalez · 2015 [cited by examiner]
US 20180081569A1 · Kan · 2018 [cited by examiner]
US 20190227743A1 · Hamilton · 2019 [cited by examiner]
US 20220100407A1 · Secatch · 2022 [cited by examiner]
US 20220398130A1 · Auernhammer et al. · 2022 [cited by applicant]
US 20230011387A1 · Qiu et al. · 2023 [cited by applicant]
“Microsoft Windows zero page”; Google search of “Microsoft Windows zero page”; downloaded from the Internet at [cited by applicant]
“NVM Express, Revision 1.1a”; downloaded from the Internet on Nov. 5, 2024 at [cited by applicant]