Claims
- 1. A method of prioritizing a plurality of commands comprising steps of:
(a) storing a plurality of command nodes in memory; (b) identifying a pending command node in the plurality of command nodes; and (c) scheduling the pending command node for processing.
- 2. The method of claim 1 further comprising steps of:
(d) identifying intermediate command nodes in the plurality of command nodes that can be processed in addition to the pending command node within a predetermined amount of time; and (e) scheduling the intermediate command nodes before the pending command node.
- 3. The method of claim 2 wherein the identifying step (d) comprises steps of:
(d)(2) storing the plurality of command nodes in a first queue; (d)(3) for each of the plurality of command nodes, determining an associated required processing time from a last scheduled command node; (d)(4) sorting the plurality of command nodes according to their associated required processing times; and (d)(5) selecting any of the plurality of command nodes that have an aggregated processing time which, when added to the processing time of the pending command node, is less than the predetermined processing time.
- 4. The method of claim 3 wherein the processing times are a number of disc revolutions and the predetermined processing time is zero disc revolutions.
- 5. The method of claim 4 wherein the predetermined processing time is one revolution.
- 6. A method of prioritizing commands comprising steps of:
(a) sorting non-pending and pending command nodes according to associated processing times; (b) identifying a pending command node; (c) determining whether any of the non-pending command nodes are non-penalizing command nodes, which can be processed prior to the pending command node in the same or less time as the pending command node processed alone; and (d) scheduling the non-penalizing non-pending command nodes and the pending command node, such that the non-penalizing non-pending command nodes are processed before the pending command node.
- 7. The method of claim 6 wherein the determining step (c) comprises steps of:
(c)(1) comparing an accumulated processing time to a predetermined allowable time, wherein the accumulated processing time is the summation of processing times for one or more non-pending command node(s) and the pending command node; and (c)(2) if the accumulated processing time is not greater than the predetermined allowable time, storing one or more references to the non-pending command node(s).
- 8. The method of claim 6 wherein the scheduling step (d) comprises steps of:
(d)(1) moving the non-penalizing non-pending command node(s) and the pending command node from a first queue holding the sorted command nodes to a second queue holding scheduled command nodes.
- 9. The method of claim 6 wherein the scheduling step (d) comprises steps of:
(d)(1) creating a list of command node references, each command node reference corresponding to one of the non-penalizing non-pending command node(s) or the pending command node; and (d)(2) moving the command nodes referenced by the list of command node references from the first queue to a second queue having scheduled command nodes.
- 10. A disc drive comprising:
a command prioritization module operable to receive a pending command and a plurality of non-pending commands, and schedule the pending command and one or more of the plurality of non-pending commands if processing time associated with the one or more non-pending command(s) and the pending command is less than a predetermined allowed time.
- 11. The disc drive of claim 10 wherein the command prioritization module comprises:
a first command queue having command nodes associated with a set of most recently received commands; a second command queue having one or more command nodes to be scheduled; a third command queue having one or more scheduled command nodes; and executable software operable to sort the pending and non-pending command nodes in the second command queue according to processing time from a last scheduled command, identify a pending command in the second command queue, calculate a total processing time for one or more of the plurality of non-pending commands and pending command, and schedule the pending command and one or more of the non-pending commands if the total processing time is less than the predetermined allowed time.
- 12. The disc drive of claim 10 wherein the pending command prioritization module is a state machine.
- 13. A method of scheduling commands in a data storage device comprising steps of:
(a) sorting commands nodes according to time to process from a last scheduled command node irrespective of command type; and (b) selectively scheduling one or more of the sorted command nodes depending on the command type.
- 14. The method of claim 13 wherein the scheduling step (b) comprises steps of:
(b)(1) identifying a pending command node to be scheduled and any non-pending command nodes that can be processed before processing the pending command node within a predetermined time; (b)(2) creating a command node reference to each of the identified command nodes in a command node reference list; and (b)(3) scheduling the command nodes referenced in the command node reference list such that the non-pending command nodes are scheduled prior to the pending command node.
- 15. A prioritization module for a data storage device comprising:
a set of queues holding command nodes representing commands received by the data storage device; and a means for prioritizing command nodes giving preference to one or more pending command(s).
- 16. The prioritization module of claim 15 wherein the set of queues comprises:
a first queue holding command nodes representing new commands received by the data storage device; a second queue receiving the command nodes from the first queue, the command nodes in the second queue being sorted according to processing time; and a third queue holding scheduled command nodes received from the second queue.
- 17. The prioritization module of claim 16 wherein each of the first, second, and third queues comprises a linked list of one or more command nodes.
- 18. The prioritization module of claim 16 wherein the means for prioritizing comprises:
a pending command prioritization module operable to identify a pending command node associated with a pending command in the second queue and schedule writeback command nodes prior to the pending command node whereby the pending command and the writeback commands can be processed in a predetermined allowed time.
RELATED APPLICATIONS
[0001] This application claims priority of U.S. provisional application Serial No. 60/322,492, filed Sep. 14, 2001.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60322492 |
Sep 2001 |
US |