US 11,681,550 B2
Command management using allocated command identifier pools
Albert Vainer, Netanya (IL); Itay Presiado, Holon (IL); and Ido Naveh, HaOgen (IL)
Assigned to Western Digital Technologies, Inc., San Jose, CA (US)
Filed by Western Digital Technologies, Inc., San Jose, CA (US)
Filed on Feb. 16, 2021, as Appl. No. 17/176,445.
Claims priority of provisional application 63/084,148, filed on Sep. 28, 2020.
Prior Publication US 2022/0100562 A1, Mar. 31, 2022
Int. Cl. G06F 9/50 (2006.01); G06F 9/48 (2006.01)
CPC G06F 9/50 (2013.01) [G06F 9/48 (2013.01); G06F 9/4843 (2013.01); G06F 9/4881 (2013.01); G06F 9/5005 (2013.01); G06F 2209/5011 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A system comprising:
a processor;
a memory; and
a command manager stored in the memory and executable by the processor to:
receive a plurality of command requests, wherein each command request of the plurality of command requests is configured to initiate a corresponding command of a plurality of commands;
determine, for each command request, a corresponding thread from a plurality of threads to distribute the plurality of commands among the plurality of threads, wherein:
each thread of the plurality of threads is configured to operate in a separate context that is unaware of each other thread among the plurality of threads; and
the plurality of command requests includes a first command request for initiating a first command for a first thread selected from the plurality of threads;
assign, based on the first thread, a first command identifier from a first pool of command identifiers to the first command, wherein:
each thread from the plurality of threads has a different associated pool of command identifiers; and
the command manager assigns, to each command of the plurality of commands, a unique command identifier without synchronization across command identifier assignments for the plurality of threads; and
return, upon completion of the first command, the first command identifier to the first pool of command identifiers.