IP Library Granted Patent US 12,417,021
Granted Patent B2
US 12,417,021 · App. 18/473,500 · Granted Sep 16, 2025

Managing streams based on predicted host commands

Inventors: Lovish Singla (Bangalore, IN); Shaheed Nehal A (Bangalore, IN); Prathmesh Tandon (Bangalore, IN)
Assignee: Sandisk Technologies, Inc.
G06F3/061G06F3/0659G06F3/0679G06F12/0862G06F2212/6022G06F2212/6028
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,417,021
App. No.
18/473,500
Granted
Sep 16, 2025
Kind
B2
Abstract

A controller of a data storage device manages access to sequential streams based on predicted commands from a host device. When a command is received, the controller analyzes command characteristics associated with the command. The controller also analyzes command characteristics associated with each predicted command. The controller compares the command characteristics to determine whether any of the predicted commands are sequential to the received command. If the controller determines that one or more of the predicted commands are sequential to the received command, the controller enables data associated with the received command to be written to a sequential stream. The controller also updates a stream counter associated with the sequential stream. The stream counter is used to determine which sequential stream will be closed and subsequently opened when a new set of sequential commands is received or identified.

Claims (55)

1. A method, comprising:

receiving a first command from a host device;

determining one or more command characteristics associated with the first command;

predicting a set of upcoming commands from the host device;

determining based, at least in part, on one or more command characteristics associated with the set of upcoming commands and on the one or more command characteristics associated with the first command, whether one or more commands of the set of upcoming commands is sequential to the first command;

based, at least in part, on determining the one or more commands of the set of upcoming commands is sequential to the first command:

associating a sequential stream with the first command;

determining a counter for the sequential stream, the counter indicating a total amount of data associated with the one or more commands of the set of upcoming commands that is sequential to the first command; and

updating the counter for the sequential stream based, at least in part, on the one or more commands of the set of upcoming commands being executed;

receiving a second command from the host device, the second command being part of the set of upcoming commands from the host device;

determining one or more command characteristics associated with the second command;

determining based, at least in part, on one or more command characteristics associated with the second command, whether the second command is sequential to the first command;

analyzing the set of upcoming commands from the host device based, at least in part, on determining the second command is non-sequential to the first command;

determining based, at least in part, on the one or more command characteristics associated with the set of upcoming commands and on the one or more command characteristics associated with the second command, whether one or more commands of the set of upcoming commands is sequential to the second command; and

based, at least in part, on determining the one or more commands of the set of upcoming commands is sequential to the second command:

comparing the counter associated the sequential stream to another counter associated with another sequential stream; and

associating the second command with the sequential stream or the another sequential stream based, at least in part, on the comparison.

2. The method of claim 1 , wherein the one or more command characteristics include one or more of a logical block address associated with a command and an amount of data associated with the command.

3. The method of claim 1 , further comprising executing the first command on the sequential stream.

4. The method of claim 1 , further comprising:

associating the second command with the sequential stream based, at least in part, on determining the second command is sequential to the first command;

executing the second command on the sequential stream; and

updating the counter associated with the sequential stream.

5. The method of claim 1 , wherein the second command is associated with the sequential stream based, at least in part, on determining the counter associated with the sequential stream is less than the another counter associated with the another sequential stream.

6. The method of claim 5 , further comprising:

updating the counter associated with the sequential stream based, at least in part, on the one or more command characteristics associated with the set of upcoming commands and on the one or more command characteristics associated with the second command; and

executing the second command on the sequential stream.

7. A data storage device, comprising:

a controller operable to:

receive a command from a host device;

determine one or more command characteristics associated with the received command;

analyze a set of predicted commands from the host device;

determine based, at least in part, on one or more command characteristics associated with the set of predicted commands and on the one or more command characteristics associated with the received command, whether one or more commands of the set of predicted commands is sequential to the received command; and

based, at least in part, on a determination that the one or more commands of the set of predicted commands is sequential to the received command:

compare a first counter associated with a first sequential stream to a second counter associated with a second sequential stream, the first counter indicating an amount of data associated with a first set of predicted sequential commands and the second counter indicating an amount of data associated with a second set of predicted sequential commands; and

associate the received command with one of the first sequential stream or the second sequential stream based, at least in part, on the comparison.

8. The data storage device of claim 7 , wherein the one or more command characteristics associated with the received command include one or more of a logical block address associated with the received command and an amount of data associated with the received command.

9. The data storage device of claim 7 , wherein the controller is further operable to determine whether an amount of data associated with the received command exceeds a data size threshold.

10. The data storage device of claim 7 , wherein the controller is further operable to execute the received command on the first sequential stream based, at least in part, on a determination that the second counter is greater than the first counter.

11. The data storage device of claim 10 , wherein the controller is further operable to update the first counter.

12. The data storage device of claim 11 , wherein the first counter is updated based, at least in part, on a determined amount of data associated with the one or more commands of the set of predicted commands that is sequential to the received command.

13. The data storage device of claim 10 , wherein the controller is further operable to update the set of predicted commands based, at least in part, on an execution of the received command on the first sequential stream.

14. A data storage device, comprising:

means for receiving a command from a host device;

means for determining one or more command characteristics associated with the received command;

means for analyzing a set of predicted commands from the host device;

means for determining whether one or more commands of the set of predicted commands is sequential to the received command;

means for comparing a first counter associated with a first sequential stream to a second counter associated with a second sequential stream, wherein the first counter indicates an amount of data associated with a first set of predicted sequential commands and the second counter indicates an amount of data associated with a second set of predicted sequential commands and wherein the comparison is based, at least in part, on a determination that the one or more commands of the set of predicted commands is sequential to the received command; and

means for associating the received command with one of the first sequential stream or the second sequential stream, wherein the received command is associated with one of the first sequential stream or the second sequential stream based, at least in part, on the comparison.

15. The data storage device of claim 14 , wherein determining whether the one or more commands of the set of predicted commands is sequential to the received command is based, at least in part, on one or more command characteristics associated with the set of predicted commands and on the one or more command characteristics associated with the received command.

16. The data storage device of claim 15 , wherein the one or more command characteristics associated with the received command include one or more of a logical block address associated with the received command and an amount of data associated with the received command.

17. The data storage device of claim 14 , further comprising means for determining whether an amount of data associated with the received command exceeds a data size threshold.

18. The data storage device of claim 14 , further comprising means for executing the received command on the first sequential stream based, at least in part, on determining the second counter is greater than the first counter.

19. The data storage device of claim 18 , further comprising means for updating the first counter.

20. The data storage device of claim 18 , further comprising means for updating the set of predicted commands based, at least in part, on executing the received command on the first sequential stream.

Assignments (8)
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 - DDTL Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065657/0158 →
PATENT COLLATERAL AGREEMENT- A&R Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065656/0649 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2023
From: SINGLA, LOVISH; A, SHAHEED NEHAL; TANDON, PRATHMESH
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 065009/0014 →
Continuity (1)
Related Publication 20250103205A1 · Mar 27, 2025
References Cited (3)
US 11513720B1 · A et al. · 2022 [cited by applicant]
US 20140052927A1 · McCauley · 2014 [cited by examiner]
US 20220155995A1 · Jung · 2022 [cited by examiner]