IP Library Granted Patent US 11,379,151
Granted Patent B2
US 11,379,151 · App. 16/836,454 · Granted Jul 5, 2022

Flow control of large sequential host read commands based on a queue threshold

Inventors: Vishwas Saxena (Karnataka, IN); Abhijit K Rao (Karnataka, IN)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F3/0659G06F3/0604G06F3/0673G06F12/10G06F2212/657
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,379,151
App. No.
16/836,454
Granted
Jul 5, 2022
Kind
B2
Abstract

Aspects of a storage device are provided which use flow control to prevent stalling during processing of read requests for a large read command. A controller of the storage device receives a read command for data from a host device, stores in a queue read requests for a portion of the data, and reads the portion of the data from a memory based on the read requests. The controller may store other read requests in the queue for other portions of the data when a number of read requests in the queue does not meet a threshold. Otherwise, the controller refrains from storing other read requests in the queue for other portions of the data when the number of read requests in the queue meets the threshold. The controller may operate similarly with subsequent sequential commands, but may continue to store read requests in the queue for subsequent random commands.

Claims (29)

1. A storage device, comprising:

a memory configured to store data; and

a controller configured to receive, from a host device, a first read command having a first command length for the data, to store at least one read request associated with the first read command into a queue for a portion of the data, and to read the portion of the data from the memory based on the at least one read request,

wherein the controller is further configured to store other read requests associated with the first read command into the queue for one or more other portions of the data when a number of read requests associated with the first read command in the queue does not meet a threshold, to refrain from storing the other read requests associated with the first read command into the queue when the number of read requests associated with the first read command in the queue meets the threshold, and to process a second read command having a second command length smaller than the first command length when the number of read requests associated with the first read command in the queue meets the threshold.

2. The storage device of claim 1 , wherein the controller is further configured, after receiving the first read command, to receive a third read command having a third command length that corresponds to the first command length for sequential data stored in the memory, and to refrain from storing one or more read requests associated with the third read command into the queue for the sequential data when the number of read requests associated with the first read command in the queue meets the threshold.

3. The storage device of claim 1 , wherein the controller is further configured, after receiving the first read command, to receive the second read command for random data stored in the memory, and to store one or more read requests associated with the second read command into the queue for the random data when the number of read requests associated with the first read command in the queue meets the threshold.

4. The storage device of claim 3 , wherein the controller is further configured to identify a physical address associated with the portion of the data based on a logical-to-physical (L2P) mapping table, and wherein the controller is further configured to store the one or more read requests associated with the second read command into the queue for the random data in response to identifying the physical address when the portion associated with the physical address is a last portion of the data.

5. The storage device of claim 1 , wherein the threshold is less than a maximum size for the queue.

6. The storage device of claim 1 , wherein the portion of the data is based on a rate at which the first read command is received from the host device.

7. The storage device of claim 1 , wherein the portion of the data is based on the first command length of the first read command.

8. A storage device, comprising:

a memory configured to store first data and second data; and

a controller configured to receive, from a host device, a first read command having a first command length for the first data, to receive, from the host device, a second read command having a second command length that corresponds to the first command length for the second data after receiving the first read command, to store at least one read request associated with the first read command into a queue for a portion of the first data, and to read the portion of the first data from the memory based on the at least one read request associated with the first read command,

wherein the controller is further configured to store one or more read requests associated with the second read command into the queue for the second data when a number of read requests associated with the first read command in the queue does not meet a threshold, to refrain from storing the one or more read requests associated with the second read command into the queue for the second data when the number of read requests associated with the first read command in the queue meets the threshold, and to process a third read command having a third command length smaller than the first command length when the number of read requests associated with the first read command in the queue meets the threshold.

9. The storage device of claim 8 , wherein the second data comprises sequential data.

10. The storage device of claim 8 , wherein the controller is further configured, after receiving the first read command and before receiving the second read command, to receive the third read command for random data stored in the memory, and to store at least one read request associated with the third read command into the queue for the random data when the number of read requests associated with the first read command in the queue meets the threshold.

11. The storage device of claim 10 , wherein the controller is further configured to identify a physical address associated with the portion of the first data based on a logical-to-physical (L2P) mapping table, and wherein the controller is further configured to store the one or more read requests associated with the third read command into the queue for the random data in response to identifying the physical address when the portion associated with the physical address is a last portion of the first data.

12. The storage device of claim 8 , wherein the threshold is less than a maximum size for the queue.

13. The storage device of claim 8 , wherein the portion of the first data is based on a rate at which the first read command is received from the host device.

14. The storage device of claim 8 , wherein the portion of the first data is based on the first command length of the first read command.

15. A storage device, comprising:

a memory configured to store first data and second data; and

a controller configured to receive, from a host device, a first read command having a first command length for the first data, to receive, from the host device, a second read command having a second command length smaller than the first command length for the second data after receiving the first read command, to store at least one read request associated with the first read command into a queue for a portion of the first data, and to read the portion of the first data from the memory based on the at least one read request associated with the first read command,

wherein the controller is further configured to refrain from storing other read requests associated with the first read command into the queue and process the second read command by storing at least one read request associated with the second read command into the queue for the second data, when a number of read requests associated with the first read command in the queue meets a threshold.

16. The storage device of claim 15 , wherein the second data comprises random data.

17. The storage device of claim 15 , wherein the controller is further configured, after receiving the first read command and before receiving the second read command, to receive a third read command for sequential data stored in the memory, and to refrain from storing at least one read request associated with the third read command into the queue for the sequential data when the number of read requests associated with the first read command in the queue meets the threshold.

18. The storage device of claim 15 , wherein the controller is further configured to identify a physical address associated with the portion of the first data based on a logical-to-physical (L2P) mapping table, and wherein the controller is further configured to store the at least one read request associated with the second read command into the queue for the second data in response to identifying the physical address when the portion associated with the physical address is a last portion of the first data.

19. The storage device of claim 15 , wherein the threshold is less than a maximum size for the queue.

20. The storage device of claim 15 , wherein the portion of the first data is based on at least one of a rate at which the first read command is received from the host device or the first command length of the first read command.

Assignments (10)
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 LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 053482 FRAME 0453 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0279 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2020
From: SAXENA, VISHWAS; RAO, ABHIJIT K
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 052963/0266 →
SECURITY INTEREST Recorded May 14, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053482/0453 →
Continuity (1)
Related Publication 20210303206A1 · Sep 30, 2021
Cited By (2)
US 12,314,585 US 12,321,639