US 11,966,631 B2
Command queue order adjustment in a data storage device
Sang Yun Jung, YongIn (KR); Min Woo Lee, Hwasung (KR); and Min Young Kim, Suwon (KR)
Assigned to Western Digital Technologies, Inc., San Jose, CA (US)
Filed by Western Digital Technologies, Inc., San Jose, CA (US)
Filed on Apr. 16, 2021, as Appl. No. 17/232,888.
Prior Publication US 2022/0334765 A1, Oct. 20, 2022
Int. Cl. G06F 3/06 (2006.01); G06F 12/06 (2006.01)
CPC G06F 3/0659 (2013.01) [G06F 3/0604 (2013.01); G06F 3/0673 (2013.01); G06F 12/06 (2013.01); G06F 2212/1016 (2013.01)] 20 Claims
OG exemplary drawing
 
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.