IP Library Granted Patent US 11,966,631
Granted Patent B2
US 11,966,631 · App. 17/232,888 · Granted Apr 23, 2024

Command queue order adjustment in a data storage device

Inventors: Sang Yun Jung (YongIn, KR); Min Woo Lee (Hwasung, KR); Min Young Kim (Suwon, KR)
Assignee: Western Digital Technologies, Inc.
G06F3/0659G06F3/0604G06F3/0673G06F12/06G06F2212/1016
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,966,631
App. No.
17/232,888
Granted
Apr 23, 2024
Kind
B2
Abstract

A method and system for maintaining command queue order are disclosed. According to certain embodiments, commands are read from a host, storing command queue IDs in an array that will keep the queue IDs in order. After having the queue IDs stored in the array, the commands are processed in the data storage device (DSD). After processing, the commands are provided to a completion order adjustment module that will order the commands in queue ID order for sequential commands to be returned to the host. In certain embodiments, for a sequential command, other commands of the same sequence are searched for the array and ordered with the sequential command. If a particular command of the sequence is not found, the completion order adjustment module will wait to transfer the sequence until each command of the sequence is found. For commands not part of a sequence, these commands are transferred to the host.

Claims (59)

1. A data storage device, comprising:

a controller comprising computer-readable instructions that when executed by the controller, cause the controller to execute a method for command queue order adjustment, the method comprising:

read a first command comprising a first queue ID and a second command comprising a second queue ID from a host;

provide the first queue ID and the second queue ID to an array of a completion order adjustment module;

store the first queue ID and the second queue ID in the array;

provide the first command and the second command to a command handler for processing;

generate a first processed command and a second processed command, wherein the first processed command and the second processed command are processed in an order of a fast read to a read look ahead (RLA);

receive the first processed command at the completion order adjustment module;

determine if the first processed command is part of a logical block address (LBA) sequence of commands;

search the array for other commands of the sequence of commands;

wait to transfer until each command of the sequence of commands is found;

reorder the first queue ID and the second queue ID such that the first processed command comprising the first queue ID is sent to a host before the second processed command comprising the second queue ID is sent to the host;

transfer data associated with each command of the sequence of commands to the host;

generate a host transfer done interrupt service routine (ISR) and then check for any pending transfers; and

search a target queue ID when there are pending transfers, wherein the searching comprises using a search module to search a RLA location, a normal read location, and a fast read location, wherein the RLA location, the normal read location, and the fast read location are separate and distinct locations within the search module.

2. The data storage device of claim 1 , wherein determining if the first processed command is part of the logical block address (LBA) sequence of commands comprises determining that the first processed command is part of LBA sequence of commands.

3. The data storage device of claim 2 , wherein the computer-readable instructions further cause the controller to search the array for the second queue ID.

4. The data storage device of claim 3 , wherein the computer-readable instructions further cause the controller to provide the first processed command and second processed command to the host.

5. The data storage device of claim 2 , wherein the computer-readable instructions further cause the controller to pause transmission of the first processed command to the host until the second queue ID is found in the array.

6. The data storage device of claim 1 , wherein determining if the first processed command is part of the logical block address (LBA) sequence of commands comprises determining that the first processed command is not part of the LBA sequence of commands.

7. The data storage device of claim 6 , the computer-readable instructions further cause the controller to provide the first processed command to the host.

8. A controller for a data storage device, comprising:

one or more memory devices comprising computer-readable instructions;

a processor coupled to the one or more memory devices configured to execute the computer-readable instructions and cause the controller to perform a method for command queue order adjustment in a data storage device, the method comprising:

receive a first command having a first queue ID and a second command having a second queue ID at a completion order adjustment module comprising a search;

store the first queue ID and the second queue ID in an array;

generate a first processed command and a second processed command, wherein the first processed command and the second processed command are processed in an order of a fast read to a read look ahead (RLA);

determine if the first processed command and second processed command are sequential commands;

search the array for other commands of the sequential commands;

wait to transfer until each command of a LBA sequence of commands is found;

reorder the first queue ID and the second queue ID such that the first processed command comprising the first queue ID is to be sent to a host before the second processed command comprising the second queue ID is sent to the host;

transfer data for each command of the sequence of commands to the host;

generate a host transfer done interrupt service routine (ISR) and then check for any pending transfers; and

search a target queue ID when there are pending transfers, wherein the searching comprises using a search module to search a RLA location, a normal read location, and a fast read location, wherein the RLA location, the normal read location, and the fast read location are separate and distinct locations within the search module.

9. The controller of claim 8 , wherein determining if the first processed command and second processed command are sequential commands comprises determining that the first command and second command are sequential commands.

10. The controller of claim 9 , wherein the computer-readable instructions further cause the controller to search a data structure for the second queue ID, using the search module.

11. The controller of claim 10 , wherein the computer-readable instructions further cause the controller to pause transfer of the first processed command to the host until a second received command is processed.

12. The controller of claim 10 , wherein the computer-readable instructions further cause the controller to transfer the first processed command and the second processed command to a host.

13. The controller of claim 8 , wherein determining if the first processed command and second processed command are sequential commands comprises determining that the first command and second command are not sequential commands.

14. The controller of claim 13 , wherein the computer-readable instructions further cause the controller to transfer the first processed command to a host.

15. A system for storing data, comprising:

means for storing data; and

a controller configured to perform a method for command queue order adjustment in a data storage device, the method comprising:

provide a first queue ID of a first command and a second queue ID of a second command to a searchable data structure;

store the first queue ID and the second queue ID in an array;

generate a first processed command and a second processed command, wherein the first processed command and the second processed command are processed in an order of a fast read to a read look ahead (RLA);

determine if the first processed command and second processed command are sequential commands;

search the array for other commands of the sequential commands;

wait to transfer until each command of a LBA sequence of commands is found;

reorder the first queue ID and the second queue ID such that the first processed command comprising the first queue ID is to be sent to a host before the second processed command comprising the second queue ID is sent to the host;

transfer the first processed command to the host;

transfer data for each command of the sequence of commands to the host;

generate a host transfer done interrupt service routine (ISR) and then check for any pending transfers; and

search a target queue ID when there are pending transfers, wherein the searching comprises using a search module to search a RLA location, a normal read location, and a fast read location, wherein the RLA location, the normal read location, and the fast read location are separate and distinct locations within the search module.

16. The system of claim 15 , wherein determining if the first processed command and second processed command are sequential commands comprises determining that the first processed command and second processed command are not sequential commands.

17. The system of claim 15 , wherein determining if the first processed command and second processed command are sequential commands comprises determining that the first and second processed command are sequential commands.

18. The system of claim 17 , wherein the controller is further configured to, search the searchable data structure for the second queue ID.

19. The system of claim 18 , wherein the controller is further configured to, responsive to search the searchable data structure for the second queue ID, find the second queue ID in the searchable data structure and provide the second queue ID to the host.

20. The system of claim 18 , wherein the controller is further configured to, responsive to search the searchable data structure for the second queue ID, not find the second queue ID in the searchable data structure, wait for the second queue ID to be present in the searchable data structure, and provide the second queue ID to the host.

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 056285 FRAME 0292 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0001 →
SECURITY INTEREST Recorded May 19, 2021
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 056285/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2021
From: JUNG, SANG YUN; LEE, MIN WOO; KIM, MIN YOUNG
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 055947/0290 →
Continuity (1)
Related Publication 20220334765A1 · Oct 20, 2022