(57)【特許請求の範囲】
【請求項１】
ディスク・コントローラからディスク・ドライブへコマンドを出すかどうかを決定する方法であって、前記ディスク・コントローラは前記ディスク・ドライブの利用可能性を量的に表すディスク利用可能値を維持し、前記コマンドは、関連づけられた優先レベルを有し、前記ディスク・コントローラは、
（Ａ）前記優先レベルがしきい値優先レベル以上かどうかを決定し、
（Ｂ）前記優先レベルが前記しきい値優先レベル以上であることをステップＡが決定するとき、前記ディスク利用可能値が第１のしきい値より小さいかどうかを決定し、
（Ｃ）前記優先レベルが前記しきい値優先レベルより小さいことをステップＡが決定するとき、前記ディスク利用可能値が第２のしきい値より小さいかどうかを決定し、
（Ｄ）前記ディスク利用可能値が前記第１のしきい値より小さいことをステップＢが決定するか、又は前記ディスク利用可能値が前記第２のしきい値より小さいことをステップＣが決定するとき、前記コマンドを前記ディスク・ドライブへ出す
ステップを実行する方法。
【請求項２】
前記ディスク・ドライブへ出されたが未だ実行されていない未決着のコマンドを含むディスク・キューを前記ディスク・ドライブが含む、請求項１に記載の方法。
【請求項３】
前記ディスク・ドライブが、前記ディスク・キュー上の前記未決着のコマンドを配列し直すことができる、請求項２に記載の方法。
【請求項４】
前記ディスク利用可能値が、前記ディスク・ドライブへ出されたが未だ実行されていない未決着のコマンドのカウントである、請求項１に記載の方法。
【請求項５】
前記未決着のコマンドの前記カウントが、前記コマンドが前記ディスク・ドライブへ出されるときに増加され、前記コマンドが前記ディスク・ドライブによって実行されるときに減少される、請求項４に記載の方法。
【請求項６】
前記優先レベルが複数の優先レベルの１つである、請求項１に記載の方法。
【請求項７】
コマンドをディスク・ドライブへ出すかどうかを決定するディスク・コントローラであって、前記コマンドは、関連づけられた優先レベルを有し、
（Ａ）前記ディスク・ドライブの利用可能性を量的に表すディスク利用可能値を維持するディスク利用可能インディケータと、
（Ｂ）前記優先レベルがしきい値優先レベル以上かどうかを決定する第１の比較器と、
（Ｃ）前記優先レベルが前記しきい値優先レベル以上であることを前記第１の比較器が決定するとき、前記ディスク利用可能値が第１のしきい値より小さいかどうかを決定する第２の比較器と、
（Ｄ）前記優先レベルが前記しきい値優先レベルより小さいことを前記第１の比較器が決定するとき、前記ディスク利用可能値が第２のしきい値より小さいかどうかを決定する第３の比較器と、
（Ｅ）前記ディスク利用可能値が前記第１のしきい値より小さいことを前記第２の比較器が決定するか、又は前記ディスク利用可能値が前記第２のしきい値より小さいことを前記第３の比較器が決定するとき、前記コマンドを前記ディスク・ドライブへ出すコマンド発行器と
を含むディスク・コントローラ。
【請求項８】
前記ディスク・ドライブへ出されたが未だ実行されていない未決着のコマンドを含むディスク・キューを前記ディスク・ドライブが含む、請求項７に記載のディスク・コントローラ。
【請求項９】
前記ディスク・ドライブが、前記ディスク・キュー上の前記未決着のコマンドを配列し直すことができる、請求項８に記載のディスク・コントローラ。
【請求項１０】
前記ディスク利用可能値が、前記ディスク・ドライブへ出されたが未だ実行されていない未決着のコマンドのカウントである、請求項７に記載のディスク・コントローラ。
【請求項１１】
前記ディスク利用可能インディケータが、前記コマンドが前記ディスク・ドライブへ出されるとき未決着コマンドの前記カウントを増加し、前記コマンドが前記ディスク・ドライブによって実行されるとき未決着コマンドの前記カウントを減少する、請求項１０に記載のディスク・コントローラ。
【請求項１２】
前記優先レベルが複数の優先レベルの１つである、請求項７に記載のディスク・コントローラ。
【請求項１３】
コマンドをディスク・ドライブへ出すかどうかを決定するディスク・コントローラのためのプログラムを記憶するメモリ媒体であって、前記ディスク・コントローラは、前記ディスク・ドライブの利用可能性を量的に表すディスク利用可能値を維持し、前記コマンドは、関連づけられた優先レベルを有し、前記プログラムは、前記ディスク・コントローラに、
（Ａ）前記ディスク・コントローラを制御して、前記優先レベルがしきい値優先レベル以上かどうかを決定する実行ステップと、
（Ｂ）前記優先レベルが前記しきい値優先レベル以上であることを実行ステップＡが決定するとき、前記ディスク・コントローラを制御して前記ディスク利用可能値が第１のしきい値より小さいかどうかを決定する実行ステップと、
（Ｃ）前記優先レベルが前記しきい値優先レベルより小さいことを実行ステップＡが決定するとき、前記ディスク・コントローラを制御して前記ディスク利用可能値が第２のしきい値より小さいかどうかを決定する実行ステップと、
（Ｄ）前記ディスク利用可能値が前記第１のしきい値より小さいことを実行ステップＢが決定するか、又は前記ディスク利用可能値が前記第２のしきい値より小さいことを実行ステップＣが決定するとき、前記ディスク・コントローラを制御して前記コマンドを前記ディスク・ドライブへ出す実行ステップとを実行させるプログラムであることを特徴とする、ディスク・コントローラのためのプログラムを記憶する
メモリ媒体。
【請求項１４】
前記ディスク・ドライブへ出されたが未だ実行されていない未決着のコマンドを含むディスク・キューを前記ディスク・ドライブが含む、請求項１３に記載のメモリ媒体。
【請求項１５】
前記ディスク・ドライブが、前記ディスク・キュー上の前記未決着コマンドを配列し直すことができる、請求項１４に記載のメモリ媒体。
【請求項１６】
前記ディスク利用可能値が、前記ディスク・ドライブへ出されたが未だ実行されていない未決着コマンドのカウントである、請求項１３に記載のメモリ媒体。
【請求項１７】
前記ディスク・コントローラを制御して、前記コマンドが前記ディスク・ドライブへ出されるとき未決着コマンドの前記カウントを増加し、前記コマンドが前記ディスク・ドライブによって実行されるとき未決着コマンドの前記カウントを減少する実行ステップを更に含む、請求項１６に記載のメモリ媒体。
【請求項１８】
前記優先レベルが複数の優先レベルの１つである、請求項１３に記載のメモリ媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスク・ドライブのコマンドの順序付けに関し、更に具体的には、コマンドの優先レベル及びディスク・ドライブの利用可能性に基づいて、コマンドをディスク・ドライブへ出すかどうかを決定することに関する。
【０００２】
【従来の技術】
図１は、コンピュータ・システム１００のブロック図である。その主な構成要素はホスト・コンピュータ１１０、ディスク・コントローラ１１５、及びディスク・ドライブ１２５である。ディスク・ドライブ１２５は、ＳＣＳＩプロトコルに従った、時には商品ディスク・ドライブと呼ばれる市販の既製のコンポーネントであってよい。
【０００３】
ホスト・コンピュータ１１０は、ディスク・ドライブ１２５上に記憶されたデータに作用する。ホスト・コンピュータ１１０がデータを読み取りたいとき、それは、データを識別する読み取りコマンドをディスク・コントローラ１１５へ出す。転じて、ディスク・コントローラ１１５は、読み取りコマンドをディスク・ドライブ１２５へ出す。ディスク・ドライブ１２５が読み取りコマンドを実行するとき、それはデータをディスク・コントローラ１１５へ送り、ディスク・コントローラ１１５はデータをホスト・コンピュータ１１０へ渡す。ホスト・コンピュータ１１０がデータを書き込みたい場合には、それは、ディスク・コントローラ１１５へ書き込みコマンドを出して関連データを送る。その後で、ディスク・コントローラ１１５は書き込みコマンドをディスク・ドライブ１２５へ出す。ディスク・ドライブ１２５が書き込みコマンドを実行する準備を整えたとき、それはディスク・コントローラ１１５へ通知し、ディスク・コントローラ１１５は、関連づけられたデータをディスク・ドライブ１２５へ送る。
【０００４】
ディスク・コントローラ１１５は、ホスト・コンピュータ１１０及びディスク・ドライブ１２５との情報交換に関連した手順を実行するために、プロセッサ１１７及び関連したメモリ１１８を含む。更に、それは、やがてディスク・ドライブ１２５へ出さなければならないコマンドを含むコントローラ・コマンド・キュー１２０を含む。
【０００５】
更に、ディスク・ドライブ１２５は、プロセッサ（図示されない）及び関連したメモリ１２８の形式で、或るローカル知能を含む。メモリ１２８はディスク・ドライブ・コマンド・キュー１３０を含む。ディスク・ドライブ・コマンド・キュー１３０は、ディスク・ドライブ１２５へ出されたが未だ実行されていないコマンドを含む。
【０００６】
コンピュータ・システム１００のようなシステムのパフォーマンスは、度々応答時間及びスループットに関して評価される。待ち時間とも呼ばれる応答時間は、コマンドが出された時と、それが実行される時との間の時間間隔である。短い応答時間が、長い応答時間よりも好ましい。スループットは、指定された時間周期の間にシステムによって処理されるコマンドの総数である。より大きいスループットが、より小さいスループットよりも好ましい。
【０００７】
ディスク・コントローラ１１５及びディスク・ドライブ１２５の各々は、応答時間を減少しスループットを増大するための特徴を含む。特徴は、コマンドに優先順位をつけ、コントローラ・コマンド・キュー１２０及びディスク・ドライブ・コマンド・キュー１３０の上でコマンドを配列することを含む。
【０００８】
ディスク・コントローラ１１５は、ディスク・ドライブ１２５へ出す各コマンドへ優先レベルを割り当てる。最も重要なコマンドは、最高優先レベルを割り当てられる。目下の説明で、３つの優先レベルが関連している。それらはデマンド・ステージ（ｄｅｍａｎｄ  ｓｔａｇｅ）、プレステージ（ｐｒｅｓｔａｇｅ）、及びデステージ（ｄｅｓｔａｇｅ）である。
【０００９】
デマンド・ステージ優先レベルは、最高優先レベルである。それは、ホスト・コンピュータ１１０がデータの読み取りを望むコマンドに関連づけられる。一般的に、ホスト・コンピュータ１１０が読み取りコマンドをディスク・コントローラ１１５へ出すとき、ホスト・コンピュータ１１０はデータに対して即時の必要性を有する。従って、ディスク・コントローラ１１５が読み取りコマンドをホスト・コンピュータ１１０から受け取るとき、それはデマンド・ステージ優先レベルを読み取りコマンドへ割り当てる。
【００１０】
プレステージ優先レベルは、次に高い優先レベルである。それは、ホスト・コンピュータ１１０によって開始される読み取りコマンドとは対照的に、ディスク・コントローラ１１５によって開始される読み取りコマンドへ割り当てられる。ディスク・コントローラ１１５は、ホスト・コンピュータ１１０から受け取られたコマンドの最近の履歴を評価し、ホスト・コンピュータ１１０が出すであろう次のコマンドを予測する。例えば、ホスト・コンピュータ１１０が２つの隣接するデータ・ブロックについて読み取りコマンドを出す場合、ディスク・コントローラ１１５は、ホスト・コンピュータ１１０からの次のコマンドが、３番目の隣接したデータ・ブロックに対する読み取りコマンドであろうと予測するかも知れない。このコマンドの予想において、ディスク・コントローラ１１５は３番目の隣接したデータ・ブロックについて読み取りコマンドをディスク・ドライブ１２５へ出す。ホスト・コンピュータ１１０からの読み取りコマンドを予想してなされた、そのようなディスク・コントローラ１１５からの読み取りコマンドは、プレステージ優先レベルを割り当てられる。
【００１１】
デステージ優先レベルは、プレステージ優先レベルよりも低い。ディスク・コントローラ１１５は、データをディスク・ドライブ１２５へ書き込みたい書き込みコマンドへデステージ優先レベルを割り当てる。ホスト・コンピュータ１１０がデータを記憶装置へ書き込むとき、それは、一般的に、少なくとも短期間では、データの処理を終了している。ホスト・コンピュータ１１０は、データをディスク・コントローラ１１５へ渡し、次に他の仕事へ移る。ホスト・コンピュータ１１０は、ディスク・コントローラ１１５がデータをディスク・ドライブ１２５へ実際に書き込むまで待たず、従って、ディスク・ドライブ１２５が書き込みコマンドを実行する即時の緊急性はない。
【００１２】
ディスク・コントローラ１１５は、コントローラ・コマンド・キュー１２０上で、コマンドを優先順位に従って配列する。即ち、最高優先レベルを有するコマンドは、コントローラ・コマンド・キュー１２０の前部に置かれ、最低優先レベルを有するコマンドは、コントローラ・コマンド・キュー１２０の末端に置かれる。同じ優先レベルを有するコマンドは、キュー上に存在した時間量に従って配列される。即ち、コマンドは優先順位及び年齢に従って配列される。コントローラ・コマンド・キュー１２０の前部にあるコマンドは、ディスク・コントローラ１１５がディスク・ドライブ１２５へ出したい次のコマンドである。コントローラ・コマンド・キュー１２０上におけるコマンドのこの構成は、最高優先順位コマンドについて応答時間を最小化することを意図されている。
【００１３】
ディスク・コントローラ１１５は、プレステージ優先レベルからデマンド・ステージ優先レベルへ、コマンドを昇進させることができる。そのようなコマンドがデマンド・ステージへ昇進したとき、コマンドはデマンド・ステージ優先順位の他のコマンドの中に置かれ、更にコマンドの年齢に従って配列される。コマンドが昇進したとき、ディスク・コントローラ１１５は、もし必要ならば、コントローラ・コマンド・キュー１２０を配列し直す。デステージ優先レベルのコマンドは、昇進適格を有しないことに注意されたい。
【００１４】
更に、ディスク・コントローラ１１５は、所定の時間周期の後、コントローラ・コマンド・キュー１２０における全てのコマンドの優先レベルを進める経時（エージング）アルゴリズムを使用する。更に具体的には、所定の時間が経過した後、コントローラ・コマンド・キュー１２０上の全てのコマンドは、より高い優先レベルへ進められる。経時アルゴリズムは、新しいコマンドがより高い優先レベルを有する場合に、低い優先順位のコマンドが長時間停止状態にあること、即ち、サービスされないことを妨げるために意図されている。経時アルゴリズムは、優先レベルに関わらず全てのコマンドに適用されるが、コマンド・キュー１２０を配列し直さないことに注意されたい。
【００１５】
ディスク・ドライブ１２５は、やがて実行する必要があるコマンドを、ディスク・ドライブ・コマンド・キュー１３０上に保持する。ディスク・ドライブ１２５は、２つのモードのいずれか、即ち、配列モード又は再配列モードで動作することができる。配列モードの間に、ディスク・ドライブ１２５はコマンドをディスク・ドライブ・コマンド・キュー１３０上に置き、ディスク・コントローラ１１５から受け取られた順序でコマンドを実行する。再配列モードでは、ディスク・ドライブ１２５は、シーク・タイム及び連続したコマンドの実行の間の回転待ち時間を最小にしてスループットを改善するために、ディスク・ドライブ・コマンド・キュー１３０上のコマンドの順序を変更する。
【００１６】
再配列モードでは、ディスク・ドライブ・コマンド・キュー１３０上のコマンドの数が増加するにつれて、ディスク・ドライブ１２５はより効率的になる。なぜなら、それは、実行すべき次のコマンドを選択するとき、選択するためのより多くのコマンドを有するからである。従って、スループットは増大する。しかし、ディスク・ドライブ・コマンド・キュー１３０上のコマンドの数が増加するにつれて、所与のコマンドの潜在的最大待ち時間も増加する。更に、ディスク・ドライブ１２５はディスク・コントローラ１１５によって使用される優先レベルを知っているわけではなく、その結果、再配列モードでは、それは高優先順位コマンドの前に１つ又は複数の低優先順位コマンドを実行するかも知れない。
【００１７】
キュー・ヘッド・オプションと呼ばれる他の特徴によって、ディスク・コントローラ１１５は、特定のコマンドがディスク・ドライブ・コマンド・キュー１３０の先頭に置かれるように強制することができる。ディスク・コントローラ１１５がコマンドを出し、キュー・ヘッド・オプションを指定するとき、その指定はディスク・ドライブ１２５がディスク・ドライブ・コマンド・キュー１３０を再配列することを妨げ、指定されたコマンドはディスク・ドライブ１２５によって実行されるべき次のコマンドとなる。この特徴は、指定されたコマンドについて待ち時間を最小にするが、ディスク・ドライブの効率を犠牲にし、ディスク・ドライブ・コマンド・キュー１３０上にある他のコマンドの待ち時間を増大する。
【００１８】
幾つかの連続したコマンドが、キュー・ヘッド・オプションを用いて、ディスク・ドライブ１２５がコマンドを実行できる速度よりも早く出される場合、問題が起こる。キュー・ヘッド・オプションを用いて、Ｃ１、Ｃ２、及びＣ３のシーケンスで出された３つのコマンドは、Ｃ３、Ｃ２、及びＣ１の順序で実行されるであろう。最も古いコマンドＣ１は、その優先レベルに拘わらず最後に実行される。更に、キュー・ヘッド・オプションのために、ディスク・ドライブはコマンドを再配列してスループットを改善することはできない。その結果、この場合、キュー・ヘッド・オプションは、コマンドＣ１の応答時間及びコンピュータ・システム１００の全体的スループットに悪影響を及ぼす。
【００１９】
理想的なシステムは、応答時間を最小にし、同時にスループットを最大にするであろう。次の特許は、このチャレンジに取り組むために使用される幾つかの従来技術を代表する。
【００２０】
米国特許第４，４２５，６１５号は、複数のディスクのためのコマンド・キューを有するキャッシュ／ディスク・サブシステムを含む階層メモリ・システムを規定する。それは、コマンド・キューが各ディスク・ドライブのために設けられた複数のディスク・ドライブを含むディスク・サブシステムを説明する。優先順位値及びシーケンス番号が各コマンド・キューへ割り当てられ、従って、キューに対応するディスク・ドライブがアイドルになったとき、最高順位のキュー・コマンド番号が実行される。
【００２１】
米国特許第５，５４８，７９５号は、コマンド・キュー再配列プロセスの中でコマンド実行依存性を決定する方法を提供する。この発明は、最小待ち時間を計算し、依存性情報をディスク・ドライブ・コマンド・キューの中に維持し、この情報を使用して、時間的及び計算的に効率のある様式でコマンドの再配列を妨げる方法を説明する。
【００２２】
米国特許第５，４６９，５６０号は、自動化されたストレージ・ライブラリにおける保留中の読み取り要求に優先順位をつけることを規定する。それは、待ち時間を最小にするため、ディスクの自動化されたストレージ・ライブラリからのオブジェクトを優先順位を付けて読み取る方法を有する情報処理システムを説明する。
【００２３】
米国特許第５，７２９，７１８号は、ヘッド・スイッチ、シーク、及び回転待ち時間の関数としてリード・タイム待ち時間を決定し、埋め込まれたディスク・ドライブ・コントローラをコマンド・キュー記録に利用するシステムを提供する。それは、ディスク・ドライブによって受け取られたコマンドを再配列するシステムを説明する。リード・タイム待ち時間は、アクティブ・コマンドに関してキュー内のコマンドのために決定される。最小リード・タイム待ち時間を有するコマンドが選択され、キューの前部へ進められ、そこで、アクティブ・コマンドの後に実行される。
【００２４】
米国特許第５，８４８，２２６号は、ディジタル印刷システムでバッファ・メモリを介してデータ転送に優先順位を付けることを規定する。ディスク・ドライブ内の制御手段は、ソフトウェア・エンティティーによって優先順位値をコマンド出力へ割り当て、最高優先順位を有するコマンドを実行する。
【００２５】
応答時間を縮小するか、又はスループットを最大にする従来技術の手法は、一般的に、積極的にコマンドの優先順位を付け直すか、又はキューを配列し直してシステムの効率を改善する方法に向けられている。通常、応答時間に関する改善はスループットの減損を伴うか、又はその逆である。更に、これらの手法は、複雑である場合が多く、必ずしも商品ディスク・ドライブとの互換性を有しない。
【００２６】
【発明が解決しようとする課題】
従って、本発明の目的は、高い優先順位のコマンドに対して応答時間を最小にし、全てのコマンドに対してスループットを最大にするように、コマンドをディスク・ドライブへ出すかどうかを決定するディスク・コントローラ及び方法を提供することである。
【００２７】
本発明の他の目的は、市販ディスク・ドライブの動作と互換性のあるディスク・コントローラ及び方法を提供することである。
【００２８】
【課題を解決するための手段】
ディスク・コントローラ及びディスク・ドライブを含むコンピュータ・システムにおいて、ディスク・コントローラは、コマンドに関連づけられた優先レベル、及びディスク・ドライブの利用可能性の双方を考慮することによって、コマンドをディスク・ドライブへ出すかどうかを決定する。
【００２９】
好ましい実施形態において、ディスク・コントローラは未決着のコマンド、即ち、ディスク・ドライブへ出されたが未だ実行されていないコマンドのカウントを維持する。コマンドをディスク・ドライブへ出すかどうかを考慮するとき、ディスク・コントローラは、先ずコマンドの優先レベルを決定する。もしコマンドの優先順位が最高レベルであれば、未決着コマンドのカウントが８より小さいときにのみコマンドが出される。もしコマンドの優先順位が最高レベルでなければ、未決着コマンドのカウントが２より小さいときにのみコマンドが出される。
【００３０】
高い優先順位のコマンドを考慮するとき、８つの未決着コマンドの第１のしきい値を使用し、より低い優先順位のコマンドを考慮するとき２つの未決着コマンドの第２のしきい値を使用することによって、ディスク・コントローラは、全てのコマンドに関してディスク・ドライブのスループットに悪影響を及ぼすことなく、高い優先順位のコマンドについて応答時間を最小にする必要性を容易に満たす。
【００３１】
【発明の実施の形態】
図２は、コンピュータ・システム２００のブロック図である。主な構成要素はホスト・コンピュータ２１０、ディスク・コントローラ２１５、及びディスク・ドライブ２２５である。これらの構成要素の動作、及びそれらの相互の関係は、前記の図１で説明したものと同じである。
【００３２】
ディスク・ドライブ２２５は、ＳＣＳＩプロトコルに従った、市販の既製の構成要素であってよい。しかし、本発明はＳＣＳＩプロトコルに限定されず、実行コマンドの効率に基づいてコマンドを再配列する任意のディスク・ドライブに応用することができる。
【００３３】
ディスク・ドライブ２２５は、プロセッサ（図示されていない）、及び関連したメモリを含む。メモリ２２８はディスク・ドライブ・コマンド・キュー２３０を含む。ディスク・ドライブ・コマンド・キュー２３０は、ディスク・ドライブ２２５へ出されたが未だ実行されていないコマンドを含む。ディスク・ドライブ２２５は、ディスク・ドライブ・コマンド・キュー２３０上のコマンドを再配列することができる。
【００３４】
ディスク・コントローラ２１５は、ホスト・コンピュータ２１０及びディスク・ドライブ２２５との情報交換に関連した手順を実行するためのプロセッサ２１６及び関連したメモリ２１７を含む。コントローラ・コマンド・キュー２２０は、やがてディスク・ドライブ２２５へ出されなければならないコマンドを含む。更に、ディスク・コントローラ２１５は、ディスク・ドライブ２２５の利用可能性を示すディスク利用可能値２１８を維持する。ディスク利用可能値２１８は、ディスク・ドライブ２２５の利用可能性、例えば未決着コマンドを実行する推定時間又は未決着コマンドの数などを表す任意の量的インディケータであることができる。コマンド発行プロセス２１９は、コマンドをディスク・ドライブ２２５へ出すかどうかを決定する。
【００３５】
好ましい実施形態において。ディスク利用可能値２１８は、未決着コマンドのカウント（ＯＣＣ）、即ち、ディスク・ドライブ２２５へ出されたが未だ実行されていないコマンドのカウントである。言い換えれば、ディスク利用可能値２１８は、ディスク・ドライブ・コマンド・キュー２３０上のコマンドの数を示す。ディスク・コントローラ２１５がコマンドをディスク・ドライブ２２５へ出すとき、それはディスク利用可能値２１８の未決着コマンドのカウントを増加する。ディスク・ドライブ２２５がコマンドを実行するとき、ディスク・コントローラ２１５は、ディスク利用可能値２１８の未決着コマンドのカウントを減少する。
【００３６】
ディスク・コントローラ２１５は、ディスク・ドライブ２２５へ出す各コマンドへ優先レベルを割り当てる。図１に関連して前述したように、デマンド・ステージは最高優先レベルである。好ましい実施形態において、コマンドの優先順位はデマンド・ステージであるか、又はより低い優先レベルであることができる。より低い優先レベルは、相互には識別されない。即ち、コマンドの優先順位は、デマンド・ステージであるか、又はデマンド・ステージではない。しかし、一般的な場合、本発明は任意数の優先レベルを用いて動作することができる。
【００３７】
コマンドをディスク・ドライブ２２５へ出すかどうかを考慮するとき、コマンド発行プロセス２１９は、先ずコマンドの優先レベルを決定する。もしコマンドの優先順位がデマンド・ステージであれば、コマンドは、未決着コマンドのカウントが８より小さいときにのみ出される。もしコマンドの優先順位がデマンド・ステージでなければ、コマンドは、未決着コマンドのカウントが２より小さいときにのみ出される。
【００３８】
このアルゴリズムによって、コンピュータ・システム２００が十分にビジーで８つのデマンド・ステージ・コマンドを累積するとき、８つのより低い優先順位のコマンドがデマンド・ステージへ進んだとき、又はこれら２つのことが組み合わせて起こったときに、８つまでのコマンドをディスク・ドライブ・コマンド・キュー２３０へ入れることができる。もしコンピュータ・システム２００が軽いワークロードのもとで動作しているならば、デマンド・ステージ・コマンドは、前に出されたコマンドの２つを超えて後に待たされることはないであろう。この計画は、デマンド・ステージ・コマンドへ優先的処置を与えて、それらの応答時間を最小にするにも拘わらず、ディスク・ドライブ２２５がディスク・ドライブ・コマンド・キュー２３０上のコマンドを再配列して、スループットを最大にすることを可能ならしめる。
【００３９】
図３は、コマンド発行プロセス２１９のフローチャート３００である。コマンド発行プロセス２１９は、ディスク・コントローラ２１５がコマンドをディスク・ドライブ２２５へ出すかどうかを決定しなければならないときに呼び出される。これは、新しいコマンドがホスト・コンピュータ２１０から受け取られたとき、前に出されたコマンドがディスク・ドライブ２２５によって完了されたとき、又はコマンドがより高い優先レベルへ昇進したときに起こる。考慮されているコマンドは、コントローラ・コマンド・キュー２２０の前方にあるコマンドである。
【００４０】
前述したように、ディスクの利用可能性２１８はディスク・ドライブ２２５の利用可能性を示し、好ましい実施形態では、それは未決着コマンドのカウントを保持する。図３に示されるように、コマンド発行プロセス２１９は未決着コマンドのカウント（ＯＣＣ）３０５を評価する。
【００４１】
ステップ３１０で、プロセスは、考慮されているコマンドがデマンド・ステージ優先レベルを有するかどうかを決定することによってスタートする。もし優先レベルがデマンド・ステージであれば、プロセスはステップ３１５へ進む。もし優先レベルがデマンド・ステージでなければ、プロセスはステップ３２５へ進む。この実施形態において、デマンド・ステージはしきい値優先レベルであり、デマンド・ステージより大きい優先レベルの場合を考慮する必要はないことに注意されたい。なぜなら、デマンド・ステージは最高の可能な優先レベルだからである。しかし、一般的な場合、しきい値優先レベルは最高優先レベルである必要はなく、コマンドの優先レベルがしきい値優先レベルより大きいか、又は等しいかどうかをプロセスが決定する。
【００４２】
ステップ３１５では、プロセスは、未決着コマンド・カウント３０５が第１のしきい値である８カウントよりも小さいかどうかを決定する。言い換えれば、それは、ディスク・ドライブ・コマンド・キュー２３０が８つよりも少ない未決着コマンドを含むかどうかを決定する。もし未決着コマンドのカウントが８より小さければ、プロセスはステップ３２０へ進む。もし未決着コマンドのカウントが８より小さくなければ、プロセスはステップ３３５へ進む。
【００４３】
ステップ３２０では、プロセスは考慮されているコマンドをディスク・ドライブ２２５へ出す。その後で、プロセスはステップ３３５へ進む。
【００４４】
ステップ３２５で、プロセスは、未決着コマンド・カウント３０５が第２のしきい値である２カウントより小さいかどうかを決定する。言い換えれば、それは、ディスク・ドライブ・コマンド・キュー２３０が２より少ない未決着コマンドを含むかどうかを決定する。もし未決着コマンドのカウントが２より小さければ、プロセスはステップ３３０へ進む。もし未決着コマンドのカウントが２より小さくなければ、プロセスはステップ３３５へ進む。
【００４５】
ステップ３３０では、プロセスは考慮されているコマンドをディスク・ドライブ２２５へ出す。その後で、プロセスはステップ３３５へ進む。
【００４６】
ステップ３３５で、プロセスは終了する。
【００４７】
コマンド発行プロセス２１９は、前述したキュー・ヘッド・オプションを使用しないことに注意されたい。ディスク・ドライブ２２５は再配列モードで動作し、ディスク・ドライブ・コマンド・キュー２３０上のコマンドを再配列することができる。これによって、ディスク・ドライブ２２５は、再配列モードで利用可能な範囲までそのスループットを最適化することができる。
【００４８】
本発明を実行するために必要な手順は、ディスク・コントローラ２１５のメモリ２１７の中へ既にロードされているように示されるが、それら手順は、図２のデータ・メモリ２５０のように、ストレージ媒体上に構成され、その後でメモリ２１７へロードされてよい。
【００４９】
これまでの説明は、単に本発明を例示するだけであることを理解すべきである。各種の選択肢及び修正が、本発明から逸脱することなく当業者によって案出され得る。例えば、プロセスは、必ずしも２つの優先レベル又は２つのディスク利用可能しきい値へ限定されない。多数の優先レベル及びしきい値を考えることができる。第二に、ディスク・コントローラは、図２のディスク・コントローラ２１５によって表されるようなスタンドアロンの構成要素である必要はなく、ホスト・コンピュータ２１０のような他の装置に埋め込まれることができる。更に、本発明は、ただ１つのディスク・ドライブを有するコンピュータ・システムに限定されない。多数のディスク・ドライブを有するシステムでは、ディスク・コントローラ２１５は、多数のディスク・ドライブの各々のために、コントローラ・コマンド・キュー２２０及びディスク利用可能値２１８を維持する。従って、本発明は、従属項の範囲に入るような全ての選択肢、修正、及び変形を包含することを意図されている。
【００５０】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）ディスク・コントローラからディスク・ドライブへコマンドを出すかどうかを決定する方法であって、前記ディスク・コントローラは前記ディスク・ドライブの利用可能性を量的に表すディスク利用可能値を維持し、前記コマンドは、関連づけられた優先レベルを有し、前記ディスク・コントローラは、
（Ａ）前記優先レベルがしきい値優先レベル以上かどうかを決定し、
（Ｂ）前記優先レベルが前記しきい値優先レベル以上であることをステップＡが決定するとき、前記ディスク利用可能値が第１のしきい値より小さいかどうかを決定し、
（Ｃ）前記優先レベルが前記しきい値優先レベルより小さいことをステップＡが決定するとき、前記ディスク利用可能値が第２のしきい値より小さいかどうかを決定し、
（Ｄ）前記ディスク利用可能値が前記第１のしきい値より小さいことをステップＢが決定するか、又は前記ディスク利用可能値が前記第２のしきい値より小さいことをステップＣが決定するとき、前記コマンドを前記ディスク・ドライブへ出す
ステップを実行する方法。
（２）前記ディスク・ドライブへ出されたが未だ実行されていない未決着のコマンドを含むディスク・キューを前記ディスク・ドライブが含む、上記（１）に記載の方法。
（３）前記ディスク・ドライブが、前記ディスク・キュー上の前記未決着のコマンドを配列し直すことができる、上記（２）に記載の方法。
（４）前記ディスク利用可能値が、前記ディスク・ドライブへ出されたが未だ実行されていない未決着のコマンドのカウントである、上記（１）に記載の方法。
（５）前記未決着のコマンドの前記カウントが、前記コマンドが前記ディスク・ドライブへ出されるときに増加され、前記コマンドが前記ディスク・ドライブによって実行されるときに減少される、上記（４）に記載の方法。
（６）前記優先レベルが複数の優先レベルの１つである、上記（１）に記載の方法。
（７）未だ出されてしないコマンドを含むキューを前記コントローラが含む、上記（１）に記載の方法。
（８）コマンドをディスク・ドライブへ出すかどうかを決定するディスク・コントローラであって、前記コマンドは、関連づけられた優先レベルを有し、
（Ａ）前記ディスク・ドライブの利用可能性を量的に表すディスク利用可能値を維持するディスク利用可能インディケータと、
（Ｂ）前記優先レベルがしきい値優先レベル以上かどうかを決定する第１の比較器と、
（Ｃ）前記優先レベルが前記しきい値優先レベル以上であることを前記第１の比較器が決定するとき、前記ディスク利用可能値が第１のしきい値より小さいかどうかを決定する第２の比較器と、
（Ｄ）前記優先レベルが前記しきい値優先レベルより小さいことを前記第１の比較器が決定するとき、前記ディスク利用可能値が第２のしきい値より小さいかどうかを決定する第３の比較器と、
（Ｅ）前記ディスク利用可能値が前記第１のしきい値より小さいことを前記第２の比較器が決定するか、又は前記ディスク利用可能値が前記第２のしきい値より小さいことを前記第３の比較器が決定するとき、前記コマンドを前記ディスク・ドライブへ出すコマンド発行器と
を含むディスク・コントローラ。
（９）前記ディスク・ドライブへ出されたが未だ実行されていない未決着のコマンドを含むディスク・キューを前記ディスク・ドライブが含む、上記（８）に記載のディスク・コントローラ。
（１０）前記ディスク・ドライブが、前記ディスク・キュー上の前記未決着のコマンドを配列し直すことができる、上記（９）に記載のディスク・コントローラ。
（１１）前記ディスク利用可能値が、前記ディスク・ドライブへ出されたが未だ実行されていない未決着のコマンドのカウントである、上記（８）に記載のディスク・コントローラ。
（１２）前記ディスク利用可能インディケータが、前記コマンドが前記ディスク・ドライブへ出されるとき未決着コマンドの前記カウントを増加し、前記コマンドが前記ディスク・ドライブによって実行されるとき未決着コマンドの前記カウントを減少する、上記（１１）に記載のディスク・コントローラ。
（１３）前記優先レベルが複数の優先レベルの１つである、上記（８）に記載のディスク・コントローラ。
（１４）未だ出されていないコマンドを含むキューを更に含む、上記（８）に記載のディスク・コントローラ。
（１５）コマンドをディスク・ドライブへ出すかどうかを決定するディスク・コントローラのためのプログラムを記憶するメモリ媒体であって、前記ディスク・コントローラは、前記ディスク・ドライブの利用可能性を量的に表すディスク利用可能値を維持し、前記コマンドは、関連づけられた優先レベルを有し、
（Ａ）前記ディスク・コントローラを制御して、前記優先レベルがしきい値優先レベル以上かどうかを決定する手段と、
（Ｂ）前記優先レベルが前記しきい値優先レベル以上であることを手段Ａが決定するとき、前記ディスク・コントローラを制御して前記ディスク利用可能値が第１のしきい値より小さいかどうかを決定する手段と、
（Ｃ）前記優先レベルが前記しきい値優先レベルより小さいことを手段Ａが決定するとき、前記ディスク・コントローラを制御して前記ディスク利用可能値が第２のしきい値より小さいかどうかを決定する手段と、
（Ｄ）前記ディスク利用可能値が前記第１のしきい値より小さいことを手段Ｂが決定するか、又は前記ディスク利用可能値が前記第２のしきい値より小さいことを手段Ｃが決定するとき、前記ディスク・コントローラを制御して前記コマンドを前記ディスク・ドライブへ出す手段と
を含むメモリ媒体。
（１６）前記ディスク・ドライブへ出されたが未だ実行されていない未決着のコマンドを含むディスク・キューを前記ディスク・ドライブが含む、上記（１５）に記載のメモリ媒体。
（１７）前記ディスク・ドライブが、前記ディスク・キュー上の前記未決着コマンドを配列し直すことができる、上記（１６）に記載のメモリ媒体。
（１８）前記ディスク利用可能値が、前記ディスク・ドライブへ出されたが未だ実行されていない未決着コマンドのカウントである、上記（１５）に記載のメモリ媒体。
（１９）前記ディスク・コントローラを制御して、前記コマンドが前記ディスク・ドライブへ出されるとき未決着コマンドの前記カウントを増加し、前記コマンドが前記ディスク・ドライブによって実行されるとき未決着コマンドの前記カウントを減少する手段を更に含む、上記（１８）に記載のメモリ媒体。
（２０）前記優先レベルが複数の優先レベルの１つである、上記（１５）に記載のメモリ媒体。
（２１）未だ出されていないコマンドを含むキューを前記ディスク・コントローラが含む、上記（１５）に記載のメモリ媒体。
【図面の簡単な説明】
【図１】従来技術に従ったコンピュータ・システムのブロック図である。
【図２】本発明を実行するために特に適合させられたコンピュータ・システムのブロック図である。
【図３】本発明に従って、コマンドをディスク・ドライブへ出すかどうかを決定するプロセスを示すフローチャートである。
【符号の説明】
１００  コンピュータ・システム
１１０  ホスト・コンピュータ
１１５  ディスク・コントローラ
１１７  プロセッサ
１１８  メモリ
１２０  コントローラ・コマンド・キュー
１２５  ディスク・ドライブ
１２８  メモリ
１３０    ディスク・ドライブ・コマンド・キュー
２００  コンピュータ・システム
２１０  ホスト・コンピュータ
２１５    ディスク・コントローラ
２１６  プロセッサ
２１７    メモリ
２１８  ディスク利用可能値
２１９    コマンド発行プロセス
２２０    コントローラ・コマンド・キュー
２２５    ディスク・ドライブ
２２８  メモリ
２３０    ディスク・ドライブ・コマンド・キュー
２５０  データ・メモリ
【図１】
0003588311.tif 000002
【図２】
0003588311.tif 000003
【図３】
0003588311.tif 000004