(57)【要約】【課題】背後供流要求の実行が大幅に遅れるのを防ぐための装置および方法を提供する。【解決手段】データ記憶装置（１００）への書込みまたは読取り要求コマンドを受けると制御ブロック（１４２）はこれをコマンド待ち行列（１４４）に入れる。待ち行列（１４４）内の或る選ばれた要求が解放されると装置（１００）は要求完了状態信号を出す。遅れ到着状態タイマ（１４６）および遅れ要求カウンタ（１４８）を用いてその後完了した要求の総数が所定のしきい値に達したことを知ると、待ち行列（１４４）から要求を更に解放するのを中断して、背後供流要求の実行が大幅に遅れるのを防ぐ。【選択図】図４
2009116853.tif 000002
【特許請求の範囲】
【請求項１】
或る選ばれた要求をコマンド待ち行列から解放し、またその後完了した要求の総数が所定のしきい値に達すると前記待ち行列から要求を更に解放するのを中断することを含む方法。
【請求項２】
前記解放するステップは前記選ばれた要求を解放するとタイムアウト・カウントを設定することを含み、前記方法は、以前に前記待ち行列から解放した要求について送信された要求完了状態に応じてタイムアウト・カウントを減分し、前記タイムアウト・カウントは、前記送信された状態毎にまた経過時間とは無関係に、１カウント減分することを更に含む、請求項１記載の方法。
【請求項３】
前記タイムアウト・カウントは、前記選ばれた要求を解放したときに前記待ち行列内にある未処理の要求の総数と関連して選択される、請求項２記載の方法。
【請求項４】
前記停止ステップは、前記減分したタイムアウト・カウントが所定のしきい値に達すると前記更に解放するのを停止することを更に含む、請求項２記載の方法。
【請求項５】
前記選ばれた要求はデータを第１のメモリと第２のメモリとの間に転送するコマンドを含む、請求項１記載の方法。
【請求項６】
前記解放するステップは、前記選ばれた要求をデータ記憶装置に送って前記装置のメモリとの間でデータを書き込みまたはデータを読み取ることを含み、前記装置は前記選ばれた要求が完了すると要求完了状態を出力する、請求項１記載の方法。
【請求項７】
それぞれが異なる未処理の要求を納めるＮ個のスロットを持つ前記コマンド待ち行列と、それぞれが前記コマンド待ち行列のスロットの対応する１つに関連するＮ個の対応するエントリを持つバイト・アレイとを与える前ステップを更に含み、前記解放するステップは前記選ばれた要求に関連するバイト・アレイの対応するエントリにタイムアウト・カウントを書き込むことを含む、請求項１記載の方法。
【請求項８】
前記解放するステップは前記待ち行列から複数の要求を解放しそして対応するタイムアウト・カウントをそれぞれに割当てて対応する複数のタイムアウト・カウントを形成することを更に含み、また前記方法は以前に出した要求が完了したことを示す要求完了状態を受ける度に前記複数のタイムアウト・カウントのそれぞれを減分することを更に含む、請求項１記載の方法。
【請求項９】
前記解放するステップの前記選ばれた要求の実行が完了したという通知を受けて前記中断ステップを行った後に前記待ち行列から要求を更に解放することを再開し、前記完了した選ばれた要求を前記待ち行列から削除して、前記完了した選ばれた要求の代わりに新たな要求を前記待ち行列に追加できるようにすることを更に含む、請求項１記載の方法。
【請求項１０】
制御ブロックおよび関連するコマンド待ち行列を含む機器であって、前記制御ブロックは或る選ばれた要求を待ち行列から解放し、その後完了した要求の総数が所定のしきい値に達すると前記待ち行列から要求を更に解放するのを中断する、機器。
【請求項１１】
前記制御ブロックは前記選ばれた要求を解放するとタイムアウト・カウントを設定し、また以前に前記待ち行列から解放した要求の要求完了状態を送信する度にタイムアウト・カウントを減分する、請求項１０記載の機器。
【請求項１２】
前記タイムアウト・カウントは、前記選ばれた要求を解放したときに前記待ち行列内にある未処理の要求の総数と関連して選択される、請求項１１記載の機器。
【請求項１３】
前記選ばれた要求はデータを第１のメモリと第２のメモリとの間に転送するコマンドを含む、請求項１０記載の機器。
【請求項１４】
前記制御ブロックは前記選ばれた要求をデータ記憶装置に送って前記装置のメモリとの間でデータを書き込みまたはデータを読み取ることにより前記選ばれた要求を解放し、前記装置が前記選ばれた要求の実行を完了すると前記装置は要求完了状態を前記制御ブロックに返す、請求項１０記載の機器。
【請求項１５】
前記コマンド待ち行列はそれぞれが異なる未処理の要求を納めるＮ個のスロットを含み、前記機器はそれぞれが前記コマンド待ち行列のスロットの対応する１つに関連するＮ個の対応するエントリを持つバイト・アレイを更に含み、また前記制御ブロックは前記選ばれた要求に関連するバイト・アレイの対応するエントリ内にタイムアウト・カウントを入れる、請求項１０記載の機器。
【請求項１６】
前記機器は、前記タイムアウト・カウントが前記所定のしきい値に達すると増分される遅れ要求カウントを保持する遅れ要求カウンタを更に含む、請求項１５記載の機器。
【請求項１７】
前記制御ブロックは前記待ち行列から複数の要求を解放し、対応するタイムアウト・カウントを前記複数の要求のそれぞれに割当てて対応する複数のタイムアウト・カウントを形成し、以前に出した要求が完了したことを示す要求完了状態を受ける度に前記複数のタイムアウト・カウントのそれぞれを減分するよう更に構成されている、請求項１０記載の機器。
【請求項１８】
コマンド待ち行列と、前記待ち行列から或る選ばれた要求を解放しそしてその後完了した要求の総数が所定のしきい値に達すると前記待ち行列からの要求を更に解放するのを中断するための第１の手段とを含む機器。
【請求項１９】
前記第１の手段はメモリ位置に関連する制御ブロックを含み、また前記制御ブロックが解放した前記選ばれた要求はデータを前記メモリ位置との間で転送する要求を含む、請求項１８記載の機器。
【請求項２０】
前記制御ブロックはアレイ・コントローラのプロセッサとして特徴付けられ、前記メモリ位置は複数のデータ記憶装置から形成される関連する記憶アレイの一部を形成する、請求項１９記載の機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコマンド待ち行列管理のための機器および方法に関するものである。
【背景技術】
【０００２】
データ記憶装置はユーザ・データを記憶しまた検索するために種々のアプリケーションに用いられている。データは、データ・トランスデューサのアレイによりアクセスされる内部記憶媒体（１個以上の回転ディスクなど）に記憶されることが多い。これらのトランスデューサは、トラックが定義されている媒体の種々の半径まで移動して入出力動作を行う。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
媒体の特定の半径付近における入出力要求の処理を促進するのにソート方式を用いることができる。これにより全体的なデータ処理速度は向上するが、或るデータ要求は活動場所がそのデータ要求の半径位置から離れているために極端に遅れる、すなわち「背後供流する（ｂａｃｋ  ｗａｔｅｒｅｄ）」ことがある。
したがって背後供流する要求は未処理のまま残り、他の一層効率的に実行できる要求の方がバイパスして先に実行される。しかしホストまたはコントローラから見ると、一般に背後供流要求と装置が正常に受けなかった「消失」要求とを区別することができない。
【課題を解決するための手段】
【０００４】
本発明の種々の実施の形態は一般に、背後供流要求のコマンド待ち行列管理のための装置および方法に関する。
種々の実施の形態では、或る選ばれた要求をコマンド待ち行列から解放し、またその後完了した要求の総数が所定のしきい値に達すると待ち行列から要求を更に解放するのを中断する。
【実施例】
【０００５】
図１は種々の実施の形態に係るデータ記憶装置の一例を示す。この装置の特徴は、ユーザ・データを記憶しまたホスト装置との間で転送するタイプのハードディスク・ドライブであるが、これに限定されるものではない。
装置１００はベース・デッキ１０２と上部カバー１０４とで形成するハウジングを含む。内部に配置されたスピンドル・モータ１０６は多数の記憶媒体１０８を回転方向１０９に回転させる。媒体１０８には、媒体に近接して配置された、ヘッド・ディスク・インターフェース（ＨＤＩ）を形成する対応する複数のデータ・トランスデューサ（ヘッド）１１０のアレイによりアクセスする。
【０００６】
ヘッド・スタック組立体（「ＨＳＡ」または「アクチュエータ」）を１１２で示す。ボイス・コイル・モータ（ＶＣＭ）１１４に電流を流すとアクチュエータ１１２は回転する。ＶＣＭ１１４を制御して動作させることによりトランスデューサ１１０は、媒体表面上に確定されたトラック（図示せず）に位置合わせして、データを記憶しまたは取得する。可撓性の回路組立体１１６は、アクチュエータ１１２と、外部に設けられるプリント回路基板（ＰＣＢ）１１８上の装置制御電子回路との間に電気通信経路を形成する。
【０００７】
図２は図１の装置１００の一般的な機能ブロック図を示す。トップ・レベル・コントローラ１２０は動作中の装置１００を全体的に制御する。インターフェース（Ｉ／Ｆ）回路１２２は上流の装置（図示せず）と通信して、ユーザ・データを媒体１０８と上流の装置との間に転送するデータ入出力動作を容易にする。
読取り／書込み（Ｒ／Ｗ）チャネル１２４は媒体１０８に書き込む書込みデータを調整し、また媒体１０８から変換されたリードバック信号からの以前記憶したデータを再構築する。前置増幅器／ドライバ回路（プレアンプ）１２６は、書込み動作中は関連するトランスデューサ１１０に書込み電流を供給し、また読取り動作中はトランスデューサ１１０およびリードバック信号前置増幅器に読取りバイアス電流を与える。
【０００８】
サーボ回路１２８は、各媒体表面上の埋込みサーボ・データを用いて閉ループ・サーボ・アクチュエータ制御を行う。好ましくは、サーボ回路１２８はトップ・レベル・コントローラ１２０の指示の下に動作するプログラム可能サーボ・コントローラ１３０を含む。
サーボ・コントローラ１３０は一般に、シークとトラック追跡の２つの主モードで動作する。シークは一般に、選ばれたトランスデューサ１１２を最初の位置から最終的な目的位置まで半径方向に制御して移動させることを含む。トラック追跡は一般に、トラックのデータにアクセスするために、選ばれたトランスデューサ１１２を選ばれたトラックの中心（または他の命令された位置）の上に保持するというサーボ・コントローラ１３０の動作を含む。
【０００９】
トップ・レベルのコントローラ１２０は受けた複数の受けたデータ・アクセス・コマンド（入出力要求）を同時に処理することができる。またコマンド待ち行列ソート方式を用いてこれらのコマンドの局所処理を効率的に順序づけて、全体のデータ処理速度を高める。
或る実施の形態では、装置１００は図３に示すマルチ・デバイス・データ記憶アレイ１３２内に組み込まれる。記憶アレイ１３２は、或る選ばれたＲＡＩＤ（独立ディスクの冗長アレイ）構成などの、より大きな記憶空間内に配置されたこれらの複数の装置で構成する。
【００１０】
記憶アレイ１３２はアレイ・コントローラ１３４により制御される。アレイ・コントローラ１３４はアレイとの複雑なデータ入出力トランザクションを管理する１個以上の処理コアを備える。図３にはアレイ１３２とコントローラ１３４とをそれぞれ１個だけ示しているが、好ましい実施の形態では、複数の冗長なアレイとコントローラを並列に配置してシステムの信頼性および可用性を向上させる。
コントローラ１３４はコンピュータ・ネットワーク、すなわちファブリック（ｆａｂｒｉｃ）１３６を介して任意の数のホスト装置（例えば、ホスト装置１３８など）と通信する。ファブリックは、インターネット、ローカル・エリア・ネットワーク（ＬＡＮ）などの任意の適当な形をとってよい。ホスト装置１３８は個々のパーソナル・コンピュータ（ＰＣ）や遠隔ファイル・サーバなどでよい。
【００１１】
図４はコントローラ１３４の選ばれた部分を詳細に示す。データ・バッファ１４０は、記憶装置１００とホスト装置１３８との間に転送されるデータを一時的に記憶するためのキャッシュ・メモリとして働く。関連するコマンドはコントローラ１３４の制御ブロック１４２が受けて処理する。
アレイ１３２に記憶するために書込みデータをホスト装置１３８から供給する動作である書込み動作の間は、書込みデータはデータ・バッファ１４０に一時的に転送される。関連する書込みコマンド・データ入出力要求が制御ブロック１４２に供給されると、制御ブロック１４２は、記憶装置１００に解放するまでこの要求をコマンド待ち行列１４４内に入れる。
【００１２】
解放すると、書込みデータは関連する書込み要求と共に装置１００に供給され、装置１００は媒体１０８（図１）へのデータの書込みをスケジュールする。装置１００はただちに（ライトバック・モードのとき）または装置１００がデータの書込みを実際に終了した後に（非ライトバック・モードのとき）要求完了状態を返して、書込み要求が完了したことを示す。
【００１３】
以前に記憶したデータをホスト装置１３８が要求する動作である読取り動作の間は、関連する読取りコマンド・データ入出力要求が制御ブロック１４２に供給され、コマンド待ち行列１４４内に入れられる。次に、制御ブロック１４２は関連する読取り要求を処理するために装置１００に送る。得られたリードバック・データはデータ・バッファ１４０に転送され、次にファブリック１３６を介して最初のホスト装置１３８に転送される。
【００１４】
要求されたデータがローカル・デバイス・キャッシュ（例えば、図２のＩ／Ｆ回路１２２のバッファ）内に存在する場合はキャッシュ・ヒットが起こる。この場合は、データはすぐ装置１００からコントローラ１３４に送られる。データがローカル・キャッシュ内に存在するのは、コントローラから以前に要求されたことがある場合や、以前の要求の順序づけに基づいて装置１００が独立の見込み的な（ｓｐｅｃｕｌａｔｉｖｅ）データ検索動作を行った場合である。
要求されたデータが局所に存在しない場合は、装置１００はスケジュールされた読取り動作を行ってデータを媒体１０８から取得する。装置１００は関連する読取り要求をそのシーク待ち行列に追加して、やがて要求を実行する。
【００１５】
図４のコマンド待ち行列（ｃｏｍｍａｎｄ  ｑｕｅｕｅ）１４４は、最大Ｎ個（選ばれた数）の未処理のデータ・アクセス要求（コマンド）（例えば１６の要求）を管理する能力を有する。制限するものではないが、コマンド待ち行列１４４は好ましくは全ての標準の優先度（例えば、レベル０）の要求を受け入れ、より高い優先度の要求（例えば、レベル１など）は現在の待ち行列深さに関係なく優先的に処理する。要求されたデータがバッファ１４０内にすでに存在するときのキャッシュ・ヒットはすぐ処理されるので、かかる読取り要求はコマンド待ち行列１４４には入れられない。
【００１６】
記憶装置１００が処理する必要のある要求を受けると、制御ブロック１４２はこれをコマンド待ち行列１４４内の利用可能なスロット内に入れる。コマンド待ち行列スロットの例として図５にＸ0からＸ15を示す。要求は、データ転送効率を高めるのに適当と制御ブロック１４２が見なした速度および順序で待ち行列１４４から装置１００に選択的に送られる（解放される）。
好ましくは、解放された要求は、装置１００が要求の実行を完了したことを示す要求完了状態を装置１００から受けるまで、コマンド待ち行列１４４内の関連するスロット内に留まる。要求完了状態信号を受けると完了した要求は待ち行列から削除され、そのスロットは新たな要求を受けることができるようになる。または、解放された要求は別の待ち行列内にまたはまだ完了していない他のメモリ構造内に蓄積してよい。
【００１７】
ホストの入出力活動レベルが比較的高いときはコマンド待ち行列１４４は満杯になることがある。すなわち、待ち行列深さは１６またはその待ち行列に与えられた他の任意の最大容量Ｎに達してよい。その場合は、コマンド待ち行列１４４内のスロットで利用可能になるまで、制御ブロック１４２はホスト１３８から受けた追加のコマンドを蓄積して保持する。
種々の実施の形態は、コマンド待ち行列１４４に関連して遅れ到着（ｌａｔｅ  ａｒｒｉｖｉｎｇ）状態タイマ（ＬＡＳＴ）１４６および遅れ要求（ｌａｔｅ  ｒｅｑｕｅｓｔ）カウンタ１４８を備える。ＬＡＳＴ１４６はバイト・アレイであって、好ましくはコマンド待ち行列１４４の種々のスロットに位置を合わせたキャッシュ・ラインであり、遅れ要求カウンタ１４８はＬＡＳＴ１４６に関係して増分的に設定される。
【００１８】
図５に示すように、ＬＡＳＴ１４６はタイムアウト・カウントＴＣ0からＴＣ15を記憶し、各カウントはコマンド待ち行列１４４の対応するスロットに関連するよう構成する。遅れ要求カウンタ１４８は、タイムアウト・カウントＴＣの各値に関して選択的に調整される遅れ要求カウント（図５のＬＲＣ0）を保持する。コマンド待ち行列１４４から装置１００への要求の解放は、ＬＲＣ値の設定との関連で一時的に中断されまたは再開される。
【００１９】
一般に、図４の回路は「背後供流（ｂａｃｋ  ｗａｔｅｒｅｄ）」要求の発生を減らすよう動作する。背後供流要求とは、実行するために正常に送られたが、後に出された他の要求の方を先に処理するために許容できないほど遅らされた（例えば、シーク待ち行列の後ろに押しやられるなどした）要求である。更に図４の回路では、コントローラ１３４は背後供流要求と消失要求（ｌｏｓｔ  ｒｅｑｕｅｓｔｓ）（すなわち、消失した要求であって、装置の処理待ちの要求ではない）とを区別することができる。かかる消失要求は、例えばコマンド要求パケットを送るときの誤りにより起こることがある。
【００２０】
図４のコントローラ１３４は一般に次のように動作する。制御ブロック１４２が要求をコマンド待ち行列１４４から装置１００に送る度に、その要求に関連するＴＣ値をＬＡＳＴ１４６内に入れる。要求完了状態を装置１００から受けると、制御ブロック１４２はＬＡＳＴ１４６内の完了した要求に関連するＴＣをチェックする。ＴＣ値が０（または他の選ばれたしきい値）の場合は、遅れ要求カウント（ＬＲＣ0）値を１カウント減分する。
【００２１】
次に、完了した要求のＴＣ値を好ましくは無条件に０に設定して、完了した要求を待ち行列１４４から削除する（すなわち、関連するスロットは新たな要求を受けることができるようになる）。残りの未処理の要求のＬＡＳＴ１４６内の各ＴＣ値も１カウント減分する。減分したＴＣ値の中に０になるものがあるとＬＲＣ値を１カウント増分する。ＬＲＣ値が非ゼロになると装置１００にもう要求を出さない。この中断条件はＬＲＣ値が０に戻るまで保持される。
【００２２】
上記の動作は必要なときに装置待ち行列を制限して、或る選ばれた要求が、その後装置１００に出される要求のために大幅に遅らされることがないようにする。このように、追跡は経過時間に従ってではなく事象に従って行われ、また選ばれた要求が出された後に処理された要求の数の程度に基づいて行われる。
【００２３】
図６は上の動作を詳細に示すコマンド待ち行列処理（ＣＯＭＭＡＮＤ  ＱＵＥＵＥ  ＰＲＯＣＥＳＳＩＮＧ）ルーチン２００のフロー・チャートを示す。ルーチン２００はコントローラ１３４の例示の動作を示すが、制限するものではない。またはルーチン２００は、図１−図２の記憶装置１００により単独にまたは１３２などのアレイ内に含めて、また１３４などの関連するコントローラを用いてまたは用いずになど、別の環境で実行してよい。
【００２４】
ステップ２０２で、制御ブロック１４２は未処理のデータ・アクセス要求（コマンド）をまずコマンド待ち行列１４４内に入れる。これらの要求はこのルーチンを通していろいろの時刻に絶えずコマンド待ち行列１４４内に入れてよい。新たなコマンドを導入する速さはホスト１３８のトランザクション・ローディング要求に応じて変わる。対応する待ち行列深さは０から１６までのどれでもよく、各要求は削除されるまで待ち行列内に留まる。
【００２５】
ステップ２０４で、制御ブロック１４２は、コマンド待ち行列１４４内にある現在未処理のコマンドの１つを選択して記憶装置１００に解放する。この例では、実行するために解放される要求は図５のスロットＸ3内に入っていると仮定する。またスロットＸ3にある要求は、選ばれた量のデータを装置１００の媒体１０８（図１）の関連する位置から読み取る読取りコマンドと仮定する。ただし、同じ処理を好ましくは書込みコマンドにも適用してよいことに注意していただきたい。
【００２６】
ステップ２０６で、制御ブロック１４２は今解放したコマンドに、関連するタイムアウト・カウントＴＣ3（図５）を割り当てる。好ましい実施の形態では、ＴＣ値は待ち行列１４４内の未処理コマンドの総数と関連して選択する。例えば、カウント値ＴＣは未処理コマンドの数ＮPCとデルタ値Δとの和でよい。すなわち、
ＴＣ＝ＮPC＋Δ                                    （１）
ただし、Δは適当な値、例えば１６である。したがって、ステップ２０４でコマンドＸ3を解放したときにコマンド待ち行列１４４内に未処理のコマンドが５個ある場合は、ステップ２０６でのＬＡＳＴ１４６内の関連する値はＴＣ3＝５＋１６＝２１に設定する。このように、最初ＴＣは解放される要求についてそのときに存在する動作トランザクション・ローディング・レベルに関連して設定し、待ち行列深さがより深くなるとＴＣ値を次第に大きくする。
【００２７】
または、存在する待ち行列深さに関係なくＴＣを或る選ばれたレベルに、例えば毎回ＴＣ＝１６（または他の値）に設定してよい。別の実施の形態では、ＴＣ値の範囲を用いてよい。例えば、待ち行列深さが浅い範囲では第１の値を用い、待ち行列深さが深い範囲では第２の値を用いるなどしてよい。読取り要求と書込み要求に異なるＴＣ値またはΔ値を用いてよい。また、制御ブロック１４２は最初に割当てたＴＣ値を時間と共に適応的に調整して性能を最適にすることができる。
【００２８】
ステップ２０４および２０６の動作はルーチン２００の動作を通して繰り返し起こる。待ち行列内のコマンドが記憶装置１００に解放される度に、関連するＴＣ値がＬＡＳＴ１４６の関連する位置に与えられる。
次に、図６のステップ２０８は装置１００から要求完了状態を受けることを示す。この説明では、このときに受けた要求完了状態が図５のスロットＸ7での要求に関連すると仮定する。前と同様に、かかる状態はルーチンを通して定期的に報告される。
【００２９】
ステップ２１０で、完了した要求の関連するＴＣ値（図５のＴＣ7）を評価する。決定ステップ２１２で示すように、ＴＣ値が０に等しい場合はフローはステップ２１４に進み、遅れ要求カウンタ１４６のＬＲＣ0値（図５）を１カウント減分する。ステップ２１４の前にＬＲＣ0値がすでに０の場合は、この値はステップ２１４の動作の後好ましくはそのまま残ることに注意していただきたい。
ステップ２１６で、ＬＡＳＴ１４６内の全て残りのＴＣ値を同様に１カウント減分する。決定ステップ２１８で示すように、減分したＴＣ値の全てが非ゼロの場合は、ルーチンはステップ２０２に戻って前と同様に動作を続ける。
【００３０】
他方で、減分されたＴＣ値の少なくとも１つが０に達した場合は、フローはステップ２２０に移って、０のＴＣ値の数に等しいカウント数だけＬＲＣ0値を増分する。このステップ中は要求を更に解放することも止め、ＬＲＣ0値がゼロに戻るまでそのままにする。
追加の要求を装置１００に与えることは一時的に止めるが、コントローラ１３４は状況に応じて任意の数の適当な活動を行うことができる。例えば、活動が活発なときはコントローラ１３４は選ばれた比較的短時間待って、残りの未処理の要求が間もなく完了するかどうか調べる。代わりにまたは追加して、コントローラ１３４は装置１００に状態の問合せを送り、未処理の要求を再送信するなどしてよい。
【００３１】
出された要求の最大待ち時間は、一般に多数の要因（既知の装置挙動に関する要因を含む）の関数である。最大の待ち行列（ＴＣが３２）の最大待ち時間の一例を示すと、約３２＊４＝１２８ミリ秒（ｍｓ）（１２８ｘ１０-3秒）に近くなる。これは、媒体が１要求当たり平均１回転し（毎分１５，０００回転（ｒｐｍ））、大きなエラー回復は起こらないと仮定した場合である。しかし、ルーチン２００はこのレベルよりかなり優れた性能を与えるであろう。
【００３２】
適度の長さの１つの未処理の要求では、予想される完了の間隔は恐らくせいぜい媒体の２回転、すなわち約８ミリ秒（ｍｓ）（８ｘ１０-3秒）程度であろう。データ回復動作を行うとこれは更に大きな値まで、例えば約１秒程度まで伸びることがある。これは標準のＲＡＩＤコントローラ入出力全経過時間タイムアウト値（一般に１０秒かそれ以上の程度）に比べて優れている。したがって、ステップ２２０の動作は、要求のタイプ（例えば、読取りコマンドか書込みコマンドか）、現在の待ち行列深さ、および任意の他の情報（短いエラー回復フラグの設定など）に関して適応的に調整することができる。したがって、コントローラが待つ時間の範囲は例えば２０ｍｓから最大約１秒程度であろう。
【００３３】
この遅れ期間の終わりに、ｇｅｔ−ｎｅｘｔ−ｉｎ−ｑｕｅｕｅ（待ち行列内の次を取得）ＳＣＳＩコマンドを出して、要求が消失したのか、または装置１００が処理するのに単に時間がかかっているのかを判定することができる。後者の場合は、状態を問い合わせることにより更に大きなタイムアウト値を再設定することができる。
図６のルーチンはタイムアウト・カウントＴＣと遅れ要求カウントＬＲＣの両方について値ゼロをうまく用いて、これらの値を整数ベースでそれぞれ調整する（例えば、ＴＣは１６，１５，１４などとカウントダウンする。ＬＲＣは通常は０であるが、１，２などと増分する）。しかし認識されるように、所定のアプリケーションの要求に従って任意の適当な所定の値またはしきい値を随意に選択してよい。
【００３４】
ハードディスク・ドライブのデータ記憶装置の環境で実施の形態の例を示したが、認識されるように、上述の実施の形態は任意の数の適当な環境で用いてよい。
添付のクレームでは、「増分」、「減分」などの用語は、大きさの増加および／または減少の特定の方向を必ずしも示さずに値の一般的な調整を示すものであると広く理解してよい。
【００３５】
理解されるように、本発明の種々の実施の形態の多くの特徴および利点を、本発明の種々の実施の形態の構造および機能の詳細と共に上に説明したが、この詳細な説明は単なる例であって、詳細について、特に本発明の原理内の各部の構造および配置に関して、添付のクレームに示す用語の広い一般的意味が示す範囲において、変更を行ってよいものとする。
【図面の簡単な説明】
【００３６】
【図１】データ記憶装置の一例を示す
【図２】図１の装置の機能的表現である。
【図３】図１の装置を組み込んだネットワーク・システムを示す。
【図４】図３のアレイ・コントローラの機能的表現の一例を示す。
【図５】一般に図４の回路の部分を詳細に示す。
【図６】本発明の種々の実施の形態に従って行われるステップを一般的に表すコマンド待ち行列処理ルーチンのフロー・チャートである。
【符号の説明】
【００３７】
１００  データ記憶装置
１４２  制御ブロック
１４４  要求待ち行列
１４６  遅れ到着状態タイマ（ＬＡＳＴ）
１４８  遅れ要求カウンタ
【図１】
2009116853.tif 000003
【図２】
2009116853.tif 000004
【図３】
2009116853.tif 000005
【図４】
2009116853.tif 000006
【図５】
2009116853.tif 000007
【図６】
2009116853.tif 000008