← Back to Patent Explorer
US5548795A Expired / Lapsed US ⏱️ 0.0 years remaining

Method for determining command execution dependencies within command queue reordering process

Assignee: Maxtor Corp
•
Filing: 1994-03-28
•
Granted: 1996-08-20
•
Expires: 2014-03-28
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A disk drive command queue reordering method includes calculation of least-latency and accounts for dependencies of I/O commands in the queue to avoid data hazards with respect to reordering of I/O commands. Command queue representation is augmented by a graph structure representing dependencies of queue commands. Computational overhead associated with constructing, maintaining, and executing graph flow analysis relative to the dependency graph is sufficiently low to allow interleaved operation with higher level disk drive functions such as timely interaction with the host device. The disclosure includes a method of calculating and maintaining the dependency information in a command queue and using this information to constrain command reordering in a time and computationally efficient manner.

Inventors

  • 👤 Wing Y. Au

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 12:55
CPC Classifications
G; G06; G06F; G06F3/00; G06F3/06; G06F3/0601; G06F3/0602; G06F3/061; G06F3/0613; G06F3/0628; G06F3/0638; G06F3/064; G06F3/0655; G06F3/0659; G06F3/0668; G06F3/0671; G06F3/0673; G06F3/0674; G06F3/0676

Claims Analysis

Total Claims: 15
Claim 1
Independent Claim 161 words
A method of managing a command queue within a storage device defining a multiplicity of block addresses for storing user data blocks and receiving into the command queue a group of presently unexecuted input/output (I/O) commands for the device from a host system, the method comprising the steps: maintaining a sequential ordering of said group of commands within the command queue; maintaining command execution dependency relation information for each command of said group, each dependency relation indicating an overlap of block addresses between a given command and other commands within the group; identifying a set of independent commands within the group as having no block address overlap relative to other commands within the group; and selecting one of said independent commands for promotion to a command execution position within the command queue, said selected independent command determined by the device to be a least-latent one of said independent commands relative to a head-of-queue command presently being executed within the storage device.
Claim 2
Independent Claim 161 words
A method of managing a command queue within a storage device defining a multiplicity of block addresses for storing user data blocks and receiving into the command queue a group of presently unexecuted input/output (I/O) commands for the device from a host system, the method comprising the steps: maintaining a sequential ordering of said group of commands within the command queue; maintaining command execution dependency relation information for each command of said group, each dependency relation indicating an overlap of block addresses between a given command and other commands within the group; identifying a set of independent commands within the group as having no block address overlap relative to other commands within the group; and selecting one of said independent commands for promotion to a command execution position within the command queue, said selected independent command determined by the device to be a least-latent one of said independent commands relative to a head-of-queue command presently being executed within the storage device.
Claim 3
Dependent Claim 46 words
The method according to claim 1 wherein said dependency information is maintained as a graph structure within the storage device as including a node representing each said command and an arc between plural nodes representing a command execution dependency relation between plural commands of said group.
Claim 4
Independent Claim 234 words
A method of managing a command queue within an addressable storage device receiving input/output (I/O) commands from a host for retrieving and writing user data blocks, the addressable storage device having multiple block addresses for storing blocks of user data, the method comprising the steps: maintaining a sequential ordering of said commands received from the host within the command queue wherein each new command is appended to a rearmost position of said sequential ordering and a command under execution is maintained at a forward most position of said sequential ordering until said command under execution completes execution, a next executed position of said sequential ordering being immediately rearward of said forward most position and indicating a command to be next executed following completion of the command under execution; maintaining an execution dependency relation record for each command in said sequential ordering within the command queue, each execution dependency relation record indicating an overlap of block addresses between a given command and a more forward command in said sequential ordering; identifying from said execution dependency relation record a set of independent commands as those commands within the command queue having no execution dependency relative to a more forward command within the command queue; and selecting one of said independent commands for promotion to said next executed position, said selected independent command being a least-latent one of said independent commands relative to said command under execution.
Claim 5
Independent Claim 234 words
A method of managing a command queue within an addressable storage device receiving input/output (I/O) commands from a host for retrieving and writing user data blocks, the addressable storage device having multiple block addresses for storing blocks of user data, the method comprising the steps: maintaining a sequential ordering of said commands received from the host within the command queue wherein each new command is appended to a rearmost position of said sequential ordering and a command under execution is maintained at a forward most position of said sequential ordering until said command under execution completes execution, a next executed position of said sequential ordering being immediately rearward of said forward most position and indicating a command to be next executed following completion of the command under execution; maintaining an execution dependency relation record for each command in said sequential ordering within the command queue, each execution dependency relation record indicating an overlap of block addresses between a given command and a more forward command in said sequential ordering; identifying from said execution dependency relation record a set of independent commands as those commands within the command queue having no execution dependency relative to a more forward command within the command queue; and selecting one of said independent commands for promotion to said next executed position, said selected independent command being a least-latent one of said independent commands relative to said command under execution.
Claim 6
Dependent Claim 90 words
The method according to claim 3 wherein said step of maintaining an execution dependency relation record includes for each new command received into the command queue the steps of scanning said sequential ordering from said rearmost position to said forward most position and comparing block addresses for said new command with block addresses for each of said commands in said sequential ordering, and entering a dependency relation into the execution dependency relation record for said new command when a block address overlap is determined to exist by the comparing step.
Claim 7
Dependent Claim 62 words
The method according to claim 3 wherein said step of maintaining an execution dependency relation record comprises the step of maintaining a graph structure wherein nodes of said graph correspond to commands in said command queue and arcs emanating from a first given node to a second given node indicate dependency of said second given node relative to said first given node.
Claim 8
Dependent Claim 54 words
The method according to claim 5 wherein said graph structure is implemented by each command in said command queue being associated with a linked list of pointers, a pointer in said linked list of pointers indicating a more rearward command in the queue having an execution dependency relative to the command associated said pointer.
Claim 9
Dependent Claim 73 words
The method according to claim 3 wherein said method further comprises a step of calculating a latency value for each command in said sequential ordering relative to the command under execution and prior to said step of identifying a set of independent commands, said step of selecting one of said independent commands being comprised of a step of selecting an independent command having a smallest calculated latency relative to the command under execution.
Claim 10
Dependent Claim 59 words
The method according to claim 3 wherein said method further comprises the step of removing the command under execution at completion of execution thereof by moving a head of queue pointer to said next executed position and removing any execution dependency relation between the command under execution in a record of another command awaiting execution in the command queue.
Claim 11
Independent Claim 245 words
A method for reordering presently unexecuted user data block access commands in relation to detected execution dependencies therebetween in a command queue within a data storage device providing a multiplicity of logical block address (LBA) storage locations for storing blocks of user data, the method comprising during execution of a head-of-queue command the steps of: maintaining a plurality of user data block access command records, a particular record representing a particular command of the user data block access command queue, and the particular record including an LBA range, a dependency flag field, a queue pointer field, and a dependency list, the dependency list representing rearward members of the command queue having execution dependency upon the particular command, the queue pointer field maintaining position of the particular command within the command queue, the dependency flag indicating an execution dependency of the particular command upon a more forward command in the command queue, and reordering the command queue by: first clearing all dependency flags of records of the commands therein, traversing the plurality of command records, and calculating execution latency values for the commands therein in relation to the head-of-queue command, setting the dependency flags of the records of rearward members having execution dependencies upon each record traversed, restricting command reordering to a next-to-head-of-queue position to those commands having records with command dependency flags clear, and promoting one of those command determined to have a least execution latency value to the next-to-head-of-queue position within the command queue.
Claim 12
Independent Claim 245 words
A method for reordering presently unexecuted user data block access commands in relation to detected execution dependencies therebetween in a command queue within a data storage device providing a multiplicity of logical block address (LBA) storage locations for storing blocks of user data, the method comprising during execution of a head-of-queue command the steps of: maintaining a plurality of user data block access command records, a particular record representing a particular command of the user data block access command queue, and the particular record including an LBA range, a dependency flag field, a queue pointer field, and a dependency list, the dependency list representing rearward members of the command queue having execution dependency upon the particular command, the queue pointer field maintaining position of the particular command within the command queue, the dependency flag indicating an execution dependency of the particular command upon a more forward command in the command queue, and reordering the command queue by: first clearing all dependency flags of records of the commands therein, traversing the plurality of command records, and calculating execution latency values for the commands therein in relation to the head-of-queue command, setting the dependency flags of the records of rearward members having execution dependencies upon each record traversed, restricting command reordering to a next-to-head-of-queue position to those commands having records with command dependency flags clear, and promoting one of those command determined to have a least execution latency value to the next-to-head-of-queue position within the command queue.
Claim 13
Independent Claim 321 words
A method for reordering presently unexecuted user data block access commands in relation to detected execution dependencies therebetween in a command queue within a data storage device providing a multiplicity of logical block address (LBA) storage locations for storing blocks of user data, the method comprising the steps of: maintaining a plurality of user data block access command records, a particular record representing a particular command of the user data block access command queue, and the particular record including an LBA range, a dependency flag field, a queue pointer field, and a dependency list, the dependency list representing rearward members of the command queue having execution dependency upon the particular command, the queue pointer field maintaining position of the particular command within the command queue, the dependency flag indicating an execution dependency of the particular command upon a more forward command in the command queue, and reordering the command queue by: first clearing all dependency flags of records of the commands therein, traversing the plurality of command records, and calculating execution latency values for the commands therein in relation to the head-of-queue command, setting the dependency flags of the records of rearward members having execution dependencies upon each record traversed, restricting command reordering to a next-to-head-of-queue position to those commands having records with command dependency flags clear, and promoting one of those command determined to have a least execution latency value to the next-to-head-of-queue position within the command queue building dependency lists of each record for each member of said command queue as new records are appended to said plurality of user data block access command records; and deleting a record representing the top-of-queue command from said plurality of user data block access command records upon completion of execution of the top-of-queue command and thereby automatically removing dependency upon the executed command from the dependency lists of all other records remaining in the plurality of user data block access command records.
Claim 14
Independent Claim 321 words
A method for reordering presently unexecuted user data block access commands in relation to detected execution dependencies therebetween in a command queue within a data storage device providing a multiplicity of logical block address (LBA) storage locations for storing blocks of user data, the method comprising the steps of: maintaining a plurality of user data block access command records, a particular record representing a particular command of the user data block access command queue, and the particular record including an LBA range, a dependency flag field, a queue pointer field, and a dependency list, the dependency list representing rearward members of the command queue having execution dependency upon the particular command, the queue pointer field maintaining position of the particular command within the command queue, the dependency flag indicating an execution dependency of the particular command upon a more forward command in the command queue, and reordering the command queue by: first clearing all dependency flags of records of the commands therein, traversing the plurality of command records, and calculating execution latency values for the commands therein in relation to the head-of-queue command, setting the dependency flags of the records of rearward members having execution dependencies upon each record traversed, restricting command reordering to a next-to-head-of-queue position to those commands having records with command dependency flags clear, and promoting one of those command determined to have a least execution latency value to the next-to-head-of-queue position within the command queue building dependency lists of each record for each member of said command queue as new records are appended to said plurality of user data block access command records; and deleting a record representing the top-of-queue command from said plurality of user data block access command records upon completion of execution of the top-of-queue command and thereby automatically removing dependency upon the executed command from the dependency lists of all other records remaining in the plurality of user data block access command records.
Claim 15
Dependent Claim 59 words
The method set forth in claim 10 wherein the step of building dependency lists of each record for each member of said command queue as new records are appended to said plurality comprises the step of determining execution dependencies for each new record based upon LBA range thereof in relation to LBA ranges of other records within the plurality.

References Cited (Backward Citations)

US3629860A Cited
US3623006A Cited
US3990055A Cited
US4232365A Cited
US4434487A Cited
US4583166A Cited
US5140683A Cited
US5184341A Cited
US5255136A Cited
US5241546A Cited
US5483641A Cited
US5422762A Cited
US5341351A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1999-08-20 2000-02-19 2000-08-20 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2003-08-20 2004-02-19 2004-08-20 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2007-08-20 2008-02-19 2008-08-20 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag