(57)【要約】【課題】  記憶装置に対するリード／ライトコマンドについてタイムアウトの発生を防止することを目的とする。【解決手段】  コマンドの実行の開始から完了までに要されるコマンド実行時間を予測し、全ての未処理のコマンドについて合計した総予測実行時間を得、総予測実行時間が一定の値以上か否かを判断し、総予測実行時間が一定の値以上であると判断した際、エラーを応答する構成を有する。【選択図】  図２０
2010211902.tif 000002
【特許請求の範囲】
【請求項１】
コマンド受信手段が、情報処理装置から、記憶装置に対する情報の記録コマンドおよび前記記憶装置からの情報の再生コマンドのうちの少なくとも何れかのコマンドを受信する段階と、
コマンド実行時間予測手段が、前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求める段階と、
総予測実行時間算出手段が、前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める段階と、
判断手段が、前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する段階と、
エラー応答手段が、前記判断手段が総予測実行時間が一定の値以上であると判断した際、前記コマンド受信手段がエラーを応答する段階とを有する記憶装置の制御方法。
【請求項２】
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める請求項１に記載の記憶装置の制御方法。
【請求項３】
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段とを有する記憶装置。
【請求項４】
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める請求項３に記載の記憶装置。
【請求項５】
ディスク装置とされる請求項３または４に記載の記憶装置。
【請求項６】
記憶装置の動作を制御するコンピュータを、
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段として機能させるための記憶装置制御プログラム。
【請求項７】
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める請求項６に記載の記憶装置制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施例は記憶装置の制御方法、記憶装置および記憶装置制御プログラムに関する。
【背景技術】
【０００２】
記憶装置の制御方法として以下の構成が知られている。すなわちアクセス時間が最小となるようにコマンド実行順を変更するものであって、特に高速に各コマンド間のアクセス時間を予測計算する。ここではコマンドキューバッファに格納された各コマンドと実行中のコマンドとのアクセス時間をシーク時間テーブルとセクタ位置テーブルを用いて計算する。
【０００３】
また以下の構成も知られている。すなわちホスト装置は磁気記憶装置から受信したパラメータ情報に基づいてハードディスク装置に対するコマンドの実行時間を予測し、この予測結果に基づいてコマンドの並び替えを行う。
【０００４】
また以下の構成も知られている。すなわち複数のディスク状記録媒体を有するデータ記憶装置に対して、複数のアクセス要求順序を並び替えたアクセス要求群単位によるアクセスを行う。そして既にアクセスを終了したアクセス要求群の最終ディスクヘッド位置と次に実行するアクセス要求群のディスクヘッド位置との関係に基づいてディスクヘッドの移動方向を選択する。
【０００５】
また以下の構成も知られている。すなわちデータ転送の中断を最小限に抑えつつ最も有効なリトライを行うという課題の解決のため、リトライが必要なときは負荷検出手段によって検出された負荷レベルに応じてリトライ処理の内容をリトライテーブルより取得する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−１５４８０９号公報
【特許文献２】特開２００１−２２２３８０号公報
【特許文献３】特開平１１−３４５０９４号公報
【特許文献４】特開２０００−１４８４１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
記憶装置が情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信した際に当該コマンドについてのタイムアウトの発生を防止することを目的とする。
【課題を解決するための手段】
【０００８】
実施例によればコマンドの実行に着手してから当該実行が完了するまでに要されるコマンド実行時間を予測し、全ての未処理のコマンドについて合計した総予測実行時間を得、総予測実行時間が一定の値以上か否かを判断し、総予測実行時間が一定の値以上であると判断した際、エラーを応答する。
【発明の効果】
【０００９】
予測したコマンド実行時間を全ての未処理のコマンドについて合計して得た総予測実行時間が一定の値以上か否かを判断し判断結果に応じてエラーを応答するため、確実にタイムアウトの発生を防止し得る。
【図面の簡単な説明】
【００１０】
【図１】コマンドキューテーブルによる制御について説明するための図である。
【図２】参考例におけるキューフル状態について説明するための図である。
【図３】参考例においてタイムアウトが検出される場合について説明するための図である。
【図４】実施例の記憶装置としての磁気記憶装置のハードウェア構成例を説明するためのブロック図である。
【図５】図４に示す磁気記憶装置のディスク駆動機構の構成例を説明するための平面図である。
【図６】基本時間テーブルについて説明するための図である。
【図７】シーク時間テーブルについて説明するための図である。
【図８】予測基本実行時間を算出する動作の流れを説明するためのフローチャート（その１）である。
【図９】リトライテーブルについて説明するための図である。
【図１０】エラー発生箇所テーブルについて説明するための図である。
【図１１】予測リトライ時間を算出する動作の流れを説明するためのフローチャートである。
【図１２】交代管理テーブルについて説明するための図である。
【図１３】交代割り付け処理について説明するための図である。
【図１４】交代割り付けがなされなかった場合のアクセス手順について説明するための図である。
【図１５】交代割り付けがなされた場合のアクセス手順について説明するための図である。
【図１６】予測交代時間を算出する動作の流れを説明するためのフローチャートである。
【図１７】キャッシュテーブルについて説明するための図である。
【図１８】キャッシュ制御を考慮して予測基本実行時間を算出する動作の流れを説明するためのフローチャート（その２）である。
【図１９】コマンドキューテーブルについて説明するための図である。
【図２０】タイムアウト判定動作の流れを説明するためのフローチャートである。
【図２１】タイムアウト判定動作を数値例を用いて説明するための図（その１）である。
【図２２】タイムアウト判定動作を数値例を用いて説明するための図（その２）である。
【発明を実施するための形態】
【００１１】
以下に実施例について詳細に説明する。
【００１２】
実施例によれば、ホスト装置からのコマンド受信時、リトライ発生状況録、交代情報、キャッシュヒット予測、転送ブロック数等の情報を考慮してコマンド実行時間を予測する。ここでコマンド実行時間とは、当該コマンドの実行が開始されてから当該実行が完了するまでに要される時間を言う。またコマンド実行時間の予測値を予測コマンド実行時間と称する。
【００１３】
また実施例によれば、当該予測した個々のコマンドの予測コマンド実行時間の合計により、現在コマンドキューテーブルに登録されている総コマンドの実行時間(総予測実行時間)を算出する。
【００１４】
また実施例によれば、当該算出した総予測実行時間が一定の値以上となった場合、受信した未処理コマンドが限界を超えた旨を、キューフルステータスや特定のセンスコード等により報告する。
【００１５】
ここで実施例はコマンドキューテーブルによるコマンド管理機能を有する磁気記憶装置の制御に係る。
【００１６】
近年磁気記憶装置に対してコマンドを発行するホスト装置としての情報処理装置の性能が向上し、磁気記憶装置に対する時間的な要求が厳しくなっている。磁気記憶装置においてはホスト装置から発行されるコマンドをコマンドキューテーブルで管理し処理の高速化を図ってきた。実施例では上記コマンドキューテーブルでコマンドを管理するに当たり、個々のコマンドのコマンド実行時間の増減の影響を考慮する。これはコマンドキューテーブルで管理しているコマンドを実行する際、たとえばリトライが多発したりすると実行時間の増大が生じ、他のコマンドの実行開始時間が遅延し、結果的に要求元のホスト装置においてタイムアウトが生ずるおそれがあるからである。
【００１７】
図1は従来のコマンドキューテーブルを利用した制御について説明するための図である。図１中、ホスト装置からコマンドが発行されると磁気記憶装置は当該コマンドを受信し、当該コマンドを自己が有するコマンドキューテーブルに順番に登録する。図１の左側に示す如く、ホスト装置からコマンド−１、コマンド−２が順に発行されると、磁気記憶装置は当該コマンド−１，コマンド−２を上記の順で受信し、自己が有するコマンドキューテーブルに登録する。当該コマンドキューテーブルはキュー１〜５の５コマンド分のサイズを有する。当該コマンドキューテーブル中、キュー１，キュー２にそれぞれ上記コマンド−１、コマンド−２の２個のコマンドが、上記受信した順で登録され、他のキュー３〜キュー５は空いている。磁気記憶装置は当該コマンド−１、コマンド−２を、上記登録した順、すなわちコマンド−１、コマンド−２の順で順次実行する。磁気記憶装置がコマンド−１を実行すると、図１の右側にしめす如く、コマンドキューテーブル中、処理済みのコマンド−１が削除され、キュー１には次に実行されるコマンドとして、コマンド−２が登録された状態となる。
【００１８】
このようなコマンドキューテーブルによる制御においては、たとえば以下に説明する参考例の制御方法を採ることができる。すなわち上記コマンドキューテーブルのキュー１〜キュー５により、無条件でホスト装置からのコマンドを登録する。図２はキュー１〜キュー５のコマンドキューテーブル中、コマンド−１〜コマンド−５の計５個のコマンドが登録された状態を示す。図２の状態において更にホスト装置から次のコマンド−６が発行されると、コマンドキューテーブルにおいて更に登録する余地がないため、たとえば周知のＳＣＳＩ等の制御においては、磁気記憶装置がホスト装置に対しキューフルステータスを応答する。磁気記憶装置は上記キューフルステータスの応答を行うことにより、受信済み未処理のコマンドが限界を超えた旨を示し、最後に受信したコマンドを実行しない旨を示す。
【００１９】
図３は、図２の状態、すなわち５個のコマンドを管理可能なコマンドキューテーブルに既に５個のコマンドが格納された状態で、実際に磁気記憶装置が当該５個のコマンドを順次実行した場合の例を示す。図３の例の場合、磁気記憶装置がコマンド−２の実行時リトライが多発し、またコマンド−４の実行時にはリトライの多発に加えて交代処理が発生した。なおリトライ、交代処理については後述する。その結果ホスト装置から見た場合、コマンド−２以降、徐々にコマンド応答が遅延し、その結果コマンド−５に対するコマンド応答が相当遅延し、ホスト装置でタイムアウトが発生した。実施例は当該問題を解決し、ホスト装置においてタイムアウトが生ずることを防止する。
【００２０】
実施例によれば、磁気記憶装置がホスト装置からコマンドを受信した際、当該コマンドにつき、コマンド実行時間を予測する。そしてコマンド実行時間を予測する際、過去にリトライが発生した磁気ディスク上の位置に関する記録、交代情報、キャッシュヒットに対する予測、コマンドの実行に必要な転送ブロック数等を考慮して行う。
【００２１】
次に当該予測された各コマンド実行時間（すなわち予測コマンド実行時間）を、現在コマンドキューテーブルに登録されている全コマンド、すなわち未処理の全コマンドについて合計する。当該合計を総予測実行時間と称する。
【００２２】
次に総予測実行時間が一定の値以上となったか否かを判定し、総予測実行時間が一定の値以上となった場合、磁気記憶装置はホスト装置に対し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。具体的にはホスト装置に対しキューフルステータス、特定のセンスコード等を応答する。
【００２３】
実施例によればこのように、ホスト装置からコマンドを受信した際に当該コマンドの実行時間を予測し、コマンドキューテーブルに登録されている全コマンド、すなわち未処理の全コマンドの実行時間の予測（すなわち予測コマンド実行時間）の合計である総予測実行時間を算出する。そして当該総予測実行時間がホスト装置においてタイムアウトが発生する時間以上か否かを判断する。総予測実行時間がホスト装置においてタイムアウトが発生する時間以上の場合、ホスト装置に対し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。ホスト装置は当該報告を受け、最後に送信したコマンドが実行されないことを認識する。このような制御を行うことにより、ホスト装置から受信したコマンドの実行中にホスト装置においてタイムアウトが生ずる事態が防止される。タイムアウトは当該コマンドが実行されるとの認識に基づいて発生されるものだからである。
【００２４】
実施例の磁気記憶装置の制御方法によれば、受信したコマンドの各々についての実行時間を予測するとともに、当該各コマンドの予測コマンド実行時間の合計である総予測実行時間を使用してコマンドキューテーブルによる制御を行う。その結果ホスト装置におけるタイムアウトの発生を低減することが可能である。以下に実施例の磁気記憶装置の制御方法の詳細を示す。
【００２５】
実施例の磁気記憶装置の制御方法では、磁気記憶装置がホスト装置からのコマンド受信時、当該コマンドについて予測コマンド実行時間を算出する。より具体的には、各コマンドについての基本的な実行時間である予測基本実行時間を求め、当該コマンドの実行において変動する可能性がある時間の項目について考慮した上で、当該コマンドについての予測コマンド実行時間を求める。
【００２６】
図４は、本発明の一実施例における磁気記憶装置のハードウェア構成例を示すブロック図である。実施例における磁気記憶装置１０は、より具体的には図５とともに後述するように磁気ディスク装置である。
【００２７】
磁気記憶装置１０は、図４に示す如くに相互に接続されたインタフェース制御部１、ＭＰＵ（マイクロプロセッサユニット、以下同様）２、ドライブ制御部３、ドライブ部４、バッファ５、ＲＡＭ６および、フラッシュＲＯＭ７を有する。
【００２８】
インタフェース制御部１はホスト装置２０と磁気記憶装置１０との間のデータやコマンドのやり取りを制御する。ＭＰＵ２は磁気記憶装置１０全体の制御を行う制御部（または、制御手段）として機能する。またＭＰＵ２は図１９とともに後述するコマンドキューテーブルを使用してホスト装置２０から受信したコマンドの管理を行う。ドライブ制御部３は、ＭＰＵ２の制御下でドライブ部４の制御を行う。バッファ５は、ホスト装置２０と磁気記憶装置１０との間でやり取りされる各種データやコマンドを一時的に格納する。ＲＡＭ６は、ＭＰＵ２による演算処理の中間結果等の各種データを格納する。ＲＡＭ６に格納されるデータには、後述するリトライテーブル、エラー発生箇所テーブル、交代管理テーブル、キャッシュテーブル等の各種データが含まれる。フラッシュＲＯＭ７は、ＭＰＵ２が実行するプログラムやデータを格納する。
【００２９】
次に図５とともに、磁気ディスク装置である磁気記憶装置１０のディスク駆動機構の構成例について説明する。当該ディスク駆動機構は図４に示されているドライブ部４に含まれる。
【００３０】
図５に示される如く、磁気ディスク装置である磁気記憶装置１０はスピンドルモータ（図示を省略）、スピンドルモータによって回転される回転軸１１、回転軸１１に装着される磁気記憶媒体としての磁気ディスク１２を有する。磁気記憶装置１０は更に、磁気ディスク１２に対向して配置され、先端に磁気ヘッド１３を備えたヘッドスライダ１４、アーム軸１６、ヘッドスライダ１４を先端に固着してアーム軸１６を中心に磁気ディスク１２上を水平に移動するアーム１５を有する。磁気記憶装置１０は更にアーム１５を駆動して水平移動させるためのアクチュエータ１７を有する。ヘッドスライダ１４、アーム軸１６、アーム１５、およびアクチュエータ１７は、磁気ディスク１２上で磁気ヘッド１３を移動させるヘッド移動機構として機能する。
【００３１】
図５の構成において磁気ディスク１２に対して情報の記録または再生を行う場合には、磁気回路で構成されたアクチュエータ１７によりアーム１５が駆動される。そしてヘッドスライダ１４の先端に設けられた磁気ヘッド１３が回転状態にある磁気ディスク１２上の所望のトラックに位置決めされる。磁気ヘッド１３には、記録素子とリード素子とが形成されている。磁気ディスク１２上の所望のトラックに位置決めされた磁気ヘッド１３により、当該トラック上の所望のブロック（セクタとも称する）に対し、情報の記録または再生が行われる。所望のブロックに情報が記録される場合、情報は図４に示されるホスト装置２０からインタフェース制御部１、ＭＰＵ２，ドライブ制御部３を介しドライブ部４に転送され、磁気ヘッド１３の記録素子により磁気ディスク１２上の所望のブロックに記録される。尚情報がホスト装置２０から上記の経路で磁気ヘッド１３の記録素子に送られる間にドライブ制御部３等において適宜行われる信号変換の具体的な内容については周知の技術を適用可能であり、ここでの説明を省略する。
【００３２】
また磁気ディスク１２の所望のブロックから情報が再生される場合、情報が磁気ヘッド１３のリード素子で所望のブロックから取り出され、ドライブ部４からドライブ制御部３、ＭＰＵ２，インタフェース制御部１を介しホスト装置２０へと転送される。尚情報が磁気ヘッド１３のリード素子で取り出され上記の経路でホスト装置２０に送信される間ドライブ制御部３等において適宜行われる信号変換の具体的な内容については周知の技術を適用可能であり、ここでの説明を省略する。尚、磁気記憶装置１０のハードウェア構成は図４、図５に示す構成に限定されるものではなく、後述する動作の実施が可能であれば他の構成でもよい。
【００３３】
以下に磁気記憶装置１０がホスト装置２０から受信したコマンドを実行する際の基本的な動作の流れについて説明する。
【００３４】
図４のホスト装置２０から、磁気記憶装置１０がコマンドを受信した場合、インタフェース制御部１を経由してコマンドがバッファ５に格納される。次にＭＰＵ２がコマンドを解析し、コマンドの内容に応じた制御を実施する。例えば、受信したコマンドがＲｅａｄコマンド、Ｗｒｉｔｅコマンド等の媒体アクセス系のコマンドの場合、ＭＰＵ２が当該コマンドに係るアクセス開始ブロックアドレスと転送ブロック数とを認識する。そしてＭＰＵ２はドライブ制御部３経由でドライブ部４に対し、上記アクセス開始ブロックアドレスのブロックに対するシーク命令を発行し、前記転送ブロック数分のブロックのＲｅａｄあるいはＷｒｉｔｅを指示する。たとえばＲｅａｄコマンドの場合、当該指示に応じてドライブ部４から読み出されたブロックのデータは一旦バッファ５へ格納され、その後インタフェース制御部１を経由してホスト装置２０へと転送される。
【００３５】
次に、実施例において、各コマンドについての実行時間、すなわち当該コマンドの実行が開始されてから完了する迄に要される時間の予測値である予測コマンド実行時間を算出する際に考慮する各種時間情報および、キャッシュ制御について説明する。上記各種時間情報とは、後述する予測基本実行時間、予測リトライ時間、および予測交代時間を含む。以下に個々に説明する。
【００３６】
上記予測基本実行時間は、各コマンドが通常の状態で実行された場合に要される時間である。非媒体アクセス系のほとんどのコマンドの実行時間は一定である。非媒体アクセス系のコマンドとは、特に磁気記憶媒体、すなわち実施例の場合磁気ディスク１２に対するアクセス動作を伴わない動作に対するコマンドを言う。上記の如く非媒体アクセス系のほとんどのコマンドの実行時間は一定であるため、予測基本実行時間は一定である。非媒体アクセス系のコマンドの予測基本実行時間を予測実行時間として図６に示される如くの基本時間テーブルに格納する。基本時間テーブルは予め対応する実績データ等を利用して作成しフラッシュＲＯＭ７に登録しておく。他方後述する如く、媒体アクセス系のコマンドについては変動要素があるため、基本予測実行時間は変動する。
【００３７】
次に実施例における、媒体アクセス系のコマンド、すなわちＲｅａｄ（すなわち再生）コマンドおよびＷｒｉｔｅ（すなわち記録）コマンドについての予測基本実行時間の求め方について述べる。媒体アクセス系のコマンドに係る予測基本実行時間は以下の演算式（１）で求める。
予測基本実行時間＝予測シーク時間＋予測実行時間×転送ブロック数  ・・・（１）
ここで
予測実行時間＝予測媒体アクセス時間＋予測データ転送時間  ・・・（２）
である。
【００３８】
すなわち、図５の構成において、スピンドルモータで駆動され回転する磁気ディスク１２上、アーム１５がアクチュエータ１７により駆動され磁気ヘッド１３が磁気ディスク１２の半径方向に沿って移動する。その結果磁気ヘッド１３は磁気ディスク１２のシリンダを横切り、すなわちトラックを横切ることでシーク動作を行い、所望のトラックに到達する。媒体アクセス系のコマンドの実行時、コマンドに含まれるアクセス開始ブロックアドレスと転送ブロック数とのうち、アクセス開始ブロックを有するトラックへシーク動作により磁気ヘッド１３が移動される。当該シーク動作による磁気ヘッド１３の移動に要される時間の予測値が予測シーク時間である。上記シーク動作により磁気ヘッド１３が磁気ディスク１２上の所望のトラックに到達した後、コマンドに含まれるアクセス開始ブロックアドレスと転送ブロック数とのうち、転送ブロック数分のブロックに磁気ヘッド１３がアクセスする。当該磁気ヘッド１３のアクセスにより、磁気ディスク１２上のブロックに対する情報の取り出し或いは記録がなされる。磁気ヘッド１３の磁気ディスク１２上の所望のトラックへの到達以降、ブロックごとに媒体アクセスおよびデータ転送を行うのに要する時間の予測値が、媒体アクセス系のコマンドについての予測実行時間である。
【００３９】
予測シーク時間については、図７に示す如くの、シーク距離に応じた所要シーク時間を登録したテーブルを予め作成してフラッシュＲＯＭ７に登録しておく。尚予測シーク時間として、簡易的には、当該磁気記憶装置１０の平均シーク時間を一律に使用する方法も可能である。
【００４０】
実施例では、以下の演算式（１）、（２）
予測基本実行時間＝予測シーク時間＋予測実行時間×転送ブロック数  ・・・（１）
予測実行時間＝予測媒体アクセス時間＋予測データ転送時間  ・・・（２）
の演算における予測実行時間、すなわち（予測媒体アクセス時間＋予測データ転送時間）の値として「１セクタ処理」に要する時間を登録しておく。すなわち当該予測実行時間を、図６のテーブル中、Ｒｅａｄ、Ｗｒｉｔｅのそれぞれのコマンドについての予測実行時間として登録しておく。「１セクタ処理」とは１セクタ分の媒体アクセスおよびデータ転送の処理を言う。
【００４１】
より具体的には、磁気記憶装置１０がホスト装置２０からコマンドを受信した際、ＭＰＵ２が当該コマンドを解析する。ＭＰＵ２はコマンドに含まれるアクセス開始ブロックアドレスとしての論理アドレスからシーク距離を求める。論理アドレスからシーク距離を求める場合、以下に示す方法で求める。まず以下の演算式により「目的シリンダ」を得る。
論理アドレス ÷（セクタ数／シリンダ）＝ 目的シリンダ
ここで（セクタ数／シリンダ）は１シリンダに含まれ得るセクタ数を意味する。次にＭＰＵ２はドライブ制御部３から、現在磁気ヘッド１３が磁気ディスク１２上、どのシリンダ上に位置するかの情報、すなわち現在のシリンダの情報を得る。ＭＰＵ２は上記演算式により算出した目的シリンダと現在のシリンダとの差分を算出する。得られた差分が求めるシーク距離である。
【００４２】
次にシーク距離に応じた所要時間を予測シーク時間として図７のテーブルから得、上記演算式（１）、（２）
予測基本実行時間＝予測シーク時間＋予測実行時間×転送ブロック数  ・・・（１）
予測実行時間＝予測媒体アクセス時間＋予測データ転送時間  ・・・（２）
を適用する。そして図６のテーブルで得られる予測実行時間（すなわち１セクタ分についての（予測媒体アクセス時間＋予測データ転送時間））に処理セクタ数、すなわち転送ブロック数を乗じた値を加算して予測基本実行時間を得る。尚上記図７のテーブルはシーク時間テーブルであり、予め対応する実績データ等を利用して作成し、フラッシュＲＯＭ７に登録しておく。
【００４３】
図８は予測基本実行時間を算出する動作の流れを示す。図８中、ＭＰＵ２はステップＳ１で受信したコマンドを解析し、ステップＳ２で図６の基本時間テーブルからコマンドに係る予測実行時間を求める。ステップＳ３で当該コマンドが媒体アクセス系のコマンドか否かを判断する。非媒体アクセス系のコマンドの場合、ステップＳ４で、予測基本実行時間として、図６の基本時間テーブルで得られた予測実行時間をそのまま採用する。他方媒体アクセス系のコマンドの場合、ステップＳ５でまず、上記演算式（１）の演算中、予測実行時間×転送ブロック数の演算を行う。次にステップＳ６にて、図７のシーク時間テーブルから予測シーク時間を得、演算式（１）を適用して予測基本実行時間を得る。ＭＰＵ２はステップＳ４またはＳ７にて得られた予測基本実行時間をステップＳ７にて確定する。
【００４４】
次に前記予測コマンド実行時間を算出する際に考慮する各種時間情報のうちの、予測リトライ時間について説明する。受信したコマンドが上記媒体アクセス系のコマンドの場合、図４のホスト装置２０から受けたコマンドはインタフェース制御部１を経由してバッファ５に格納される。その後上記の如く、ＭＰＵ２がコマンドを解析し、アクセス開始ブロックアドレスおよび転送ブロック数等の情報を得る。次にＭＰＵ２はドライブ制御部３を介しドライブ部４を使用して当該コマンドを実行する。ここで上記コマンド実行中にエラーが発生した場合、ＭＰＵ２は、予め図４のＲＡＭ６に格納された図９に示される如くのリトライテーブルを参照し、いわゆるエラー回復処理、すなわちリトライ処理を実行する。
【００４５】
ここで図９に示す如くのリトライテーブルとは、リトライ処理の実行順を示したものである。ＭＰＵ２は各ステップのリトライ処理後に再度コマンドを実行し、その際エラーが生じなければリトライ処理を終了する。他方上記リトライ処理後の再度のコマンドの実行中に再びエラーが生じた場合、ＭＰＵ２はリトライテーブル上、次のステップのリトライ処理を実行し、実行後再度コマンドを実行する。このようにリトライ処理後のコマンド実行中にエラーが生ずることが繰り返された場合、ＭＰＵ２はリトライテーブルに示される実行順に順次各ステップのリトライ処理を実行する。たとえばステップ０１の「オフセット−方向」は、磁気ヘッド１３が位置する磁気ディスク１２のトラック位置を所定方向に所定量移動した上で再度コマンドの実行を行う動作を示す。なおＭＰＵ２は、上記リトライテーブルに従ったリトライ処理を当該コマンドが正常に終了するか、或いは規定回数分のリトライ処理を実施するまで繰り返す。
【００４６】
ＭＰＵ２はリトライ処理を実行した際、該当するエラーが発生したブロックのアドレスおよび実施した一連のリトライ処理のステップ数の情報を、図１０に示される如くのエラー発生箇所テーブルとして図４のＲＡＭ６やフラッシュＲＯＭ７に記録する。図１０のエラー発生箇所テーブル中、「エラー発生ブロック」の欄には、ＭＰＵ２が実施したリトライ処理の対象ブロックのアドレスが格納される。図１０のエラー発生箇所テーブル中、「リトライステップ」の欄には、上記リトライ処理の対象ブロックに対し実施した一連のリトライ処理のステップ数が格納される。
【００４７】
また、実施例の如くの、磁気記憶装置１０の媒体アクセス系のコマンドのリトライ処理においては「回転待ち時間」が生ずる。すなわち、コマンドの実行中にエラーが生じリトライ処理を行う場合、磁気ディスク１２の回転により、磁気ディスク１２上の処理対象ブロックが磁気１３ヘッド下に次に到達するまでに時間が要され、当該所要の時間を「回転待ち時間」と称する。リトライ処理では当該回転待ち時間内にコマンドの実行に係る各種の設定等を変更して再度磁気ディスク１２にアクセスを行う。当該回転待ち時間はリトライ処理のステップ毎に生じる。このためリトライ処理に要すると予測される予測リトライ時間は以下の演算式（３）で求める。
予測リトライ時間＝リトライステップ数×予測回転待ち時間  ・・・（３）
ここでリトライステップ数とは、ＭＰＵ２が実施した一連のリトライ処理のステップ数を意味する。また予測回転待ち時間とは、上記回転待ち時間の予測値である。
【００４８】
予測回転待ち時間は磁気記憶装置に固有の値であり、磁気記憶装置の回転数から算出し得る。例えば、磁気記憶装置１０の磁気ディスク１２の回転数が１万回転の場合、以下の演算式
６０÷１００００＝６［ｍｓ］
で求まる値６［ｍｓ］が磁気ディスク１３の１回転に要する時間であり、予測回転待ち時間である。予測リトライ時間を算出する動作の流れを図１１に示す。
【００４９】
図１１中、ステップＳ１１でＭＰＵ２は受信したコマンドを解析する。ＭＰＵ２は解析により、アクセス開始ブロックアドレスおよび転送ブロック数を求め、アクセス開始ブロックアドレスおよび転送ブロック数の情報から、当該コマンドの実行時にアクセスする磁気ディスク１２上のブロックのアドレスの範囲を得る。次にステップＳ１２でＭＰＵ２は図１０のエラー発生箇所テーブルを参照し、上記当該コマンドの実行時にアクセスする磁気ディスク１２上のブロックのアドレスの範囲に、エラー発生箇所テーブルに含まれるエラー発生ブロックが含まれるか否かを判定する。判定の結果がＮＯの場合、ＭＰＵ２は当該コマンドの実行においてリトライ処理が生ずることはないものと判断し、予測リトライ時間として「０」を得る（ステップＳ１６）。
【００５０】
他方、ステップＳ１２の判定の結果がＹＥＳの場合、ＭＰＵ２はステップＳ１３にて、上記エラー発生箇所テーブルから、該当するエラー発生ブロックに係るリトライステップ数を得る。次にステップＳ１４でＭＰＵ２は、上記演算式（３）
予測リトライ時間＝リトライステップ数×予測回転待ち時間  ・・・（３）
により当該エラー発生ブロックについての予測リトライ時間を算出する。
【００５１】
ＭＰＵ２は次にステップＳ１５にて、当該コマンドの実行時にアクセスする磁気ディスク１２上のブロックのアドレスの範囲にエラー発生箇所テーブルに含まれる他のエラー発生ブロックが含まれるか否かを判定する。判定の結果がＹＥＳの場合、ＭＰＵ２はステップＳ１３に戻り、ステップＳ１３，Ｓ１４にて上記同様にして、当該エラー発生ブロックにつき、予測リトライ時間を得る。
【００５２】
他方ステップＳ１５の判定の結果がＮＯの場合、ＭＰＵ２は、ステップＳ１３、Ｓ１４，Ｓ１５のループによってエラー発生ブロックごとに得られた予測リトライ時間を全エラー発生ブロックについて合計する。ＭＰＵ２は得られた合計を当該コマンドに係る予測リトライ時間として得る（ステップＳ１６）。尚上記リトライ処理としては公知の技術を適用可能であり、更に詳細な説明は省略する。
【００５３】
次に前記予測コマンド実行時間を算出する際に考慮する各種時間情報のうちの、予測交代時間について説明する。磁気記録媒体としての磁気ディスク１２には、媒体傷などによる不良ブロックが存在し得る。当該不良ブロックを回避する為に交代処理を実施することができる。すなわちユーザ領域に不良ブロックが生じた場合、当該不良ブロックのデータに対し、磁気ディスク１２上、ユーザ領域とは別に設けられた交代領域に、代替のブロック（以下交代ブロックと称する）を割り当てる。当該交代処理後、媒体アクセス系のコマンドの実行の際、アクセス対象の範囲に当該不良ブロックのデータが含まれる場合、前記交代ブロックに対するアクセスを行うことになる。
【００５４】
不良ブロックおよび交代ブロックの管理を行うため、たとえばＭＰＵ２は図１２示す如くの交代管理テーブルを使用する。図１２の交代管理テーブル中、「不良ブロック」の欄には上記不良ブロックのアドレスが格納され、「交代ブロック」の欄には、当該不良ブロックのデータが割り付けられた交代ブロックのアドレスが格納される。
【００５５】
図１３，図１４，図１５は交代処理の例を説明するための図である。図１３は、ユーザ領域の00000012および00000014のアドレスの２個のブロックに交代処理を実施した場合の例を示す。当該交代処理の結果、交代領域のxxxxxxxxおよびyyyyyyyyのアドレスのブロックがそれぞれ交代ブロックとして割り付けられている。この状態でアドレス00000010〜00000015のブロックに対しＲｅａｄコマンドを実行する場合について説明する。比較のため、図１４に、不良ブロックが生じず、交代処理を行わない場合について示す。図１４の場合、アドレス00000010〜00000015の６個のブロックに対し、一回のシーク動作でＲｅａｄ動作を行うことができる。これに対し交代処理を行った場合の例を図１５に示す。図１５の例の場合、まずアドレス00000010〜00000011の2個のブロックに対し、シーク動作およびＲｅａｄ動作を行う（ステップＲ１）。次にアドレスxxxxxxxxのブロックに対し、シーク動作およびＲｅａｄ動作を行う（ステップＲ２）。次にアドレス00000013のブロックに対し、シーク動作およびＲｅａｄ動作を行う（ステップＲ３）。次にアドレスyyyyyyyyのブロックに対し、シーク動作およびＲｅａｄ動作を行う（ステップＲ４）。次にアドレス00000015のブロックに対し、シーク動作およびＲｅａｄ動作を行う（ステップＲ５）。上記の如く、図１４に示す不良ブロックが無い場合と比較すると、通常は１回のシーケンシャルなＲｅａｄ動作で済む処理が、ステップＲ１〜Ｒ５の計５回に分割してＲｅａｄ動作を行うことになる。更に、コマンド毎にシーク時間と回転待ち時間とが発生する。
【００５６】
図１６は予測交代時間の算出の動作の流れを示す。図１６中、ステップＳ２１にて、ＭＰＵ２は受信したコマンドを解析する。次にステップＳ２２にてＭＰＵ２は図１２の交代管理テーブルを参照し、当該コマンドの実行に伴うアクセスの範囲内に交代処理済のブロックが含まれるか否かを判断する。交代処理済みのブロックとは、既に不良ブロックとして判断され交代ブロックに対するデータの割付がなされたブロックを言う。ステップＳ２２の判断結果がＮＯの場合、アクセス範囲に交代処理済みのブロックは含まれないため、予測交代時間として「０」を得る（ステップＳ２９）。
【００５７】
他方ステップＳ２２の結果がＹＥＳの場合、アクセス範囲に交代処理済みのブロックは含まれるため、ＭＰＵ２はステップＳ２３にて、当該コマンドの実行に伴うアクセス範囲内に含まれる交代処理済みのブロックが複数個か否かを判断する。判断結果がＹＥＳの場合、ＭＰＵ２はステップＳ２４にて、当該コマンドの実行に伴うアクセス範囲内に含まれる交代処理済みのブロックに対し、連続で交代ブロックに割り付けられているか否かを判断する。ステップＳ２３の判断結果がＮＯの場合、ＭＰＵ２はステップＳ２５に移行する。またステップＳ２４の判断結果がＮＯの場合にもＭＰＵ２はステップＳ２５に移行する。ステップＳ２５でＭＰＵ２は、交代処理済みのブロックが上記アクセス範囲の最初のブロックおよび最後のブロックのうちのいずれかのブロックであるか否かを判断する。
【００５８】
ステップＳ２５の判断結果がＮＯの場合、ステップＳ２６でＭＰＵ２は、以下の演算式（４）で予測交代時間を求める。
予測交代時間＝予測シーク時間×２＋予測回転待ち時間  ・・・（４）
すなわち、たとえば図１３の例においてコマンドの実行によりアドレス00000010〜0000001５の６個のブロックにアクセスする場合を想定する。当該場合、アドレス00000012の不良ブロックに対し割り付けられた交代ブロックxxxxxxxxへのアクセスの際、ユーザ領域から交代領域へのシーク動作と、交代領域からユーザ領域へ戻るシーク動作とが要される。すなわちシーク動作が２回要される。したがって当該例の如く交代処理済みのブロックがアクセス範囲の最初や最後のブロックでない場合（ステップＳ２５のＮＯ）、当該交代処理済みのブロックについての予測交代時間には、上記演算式（４）に示すように、予測シーク時間に２を乗ずる必要がある（ステップＳ２６）。
【００５９】
他方、交代処理済みのブロックがアクセス範囲の最初や最後のブロックの場合（ステップＳ２５のＹＥＳ）、最初のブロックであれば、交代領域からユーザ領域へ戻るシーク動作のみが要される。また最後のブロックであれば、ユーザ領域から交代領域へのシーク動作のみが要される。すなわちシーク動作は一回のみ要される。したがって当該場合についての予測交代時間には、以下の演算式（５）に示すように、予測シーク時間に２を乗ずる必要がない（ステップＳ２７）。
予測交代時間＝予測シーク時間＋予測回転待ち時間  ・・・（５）
また連続で交代ブロックに割り付けられている場合（ステップＳ２４のＹＥＳ）、複数の連続する交代ブロックの最初と最後の２回のシーク動作のみが要される。従って当該場合も交代処理済みのブロックごとに２回のシーク動作は要されず、上記演算式（５）が適用される（ステップＳ２７）。
【００６０】
ステップＳ２８でＭＰＵ２は、当該コマンドのアクセス範囲内に他の交代処理済みのブロックが存在するか否かを判断する。判断結果がＹＥＳの場合、ＭＰＵ２はステップＳ２３に戻り、当該交代処理済みのブロックにつき、ステップＳ２３，Ｓ２４，Ｓ２５，Ｓ２６，Ｓ２７にて上記同様にして予測交代時間を求める。ステップＳ２９でＭＰＵ２は、当該ステップＳ２９に至るまでの間に、交代処理済みのブロックごとに、ステップＳ２６またはステップＳ２７にて得られた予測交代時間を、上記交代処理済みのブロック全部について合計する。そしてＭＰＵ２は当該合計値を当該コマンドについての予測交代時間として得る（ステップＳ２９）。尚ステップＳ２６，Ｓ２７において行う上記演算式（４）、（５）中の予測シーク時間については、図６，図７，図８とともに上述の予測基本実行時間の算出の際に求めた方法と同様の方法で図７のシーク時間テーブルを参照して求める。
【００６１】
次に上記予測コマンド実行時間を算出する際に考慮するキャッシュ制御について説明する。図４のバッファ５にはキャッシュデータが格納され、当該キャッシュデータは、たとえば図１７に示す如くのキャッシュテーブルに登録されている。当該キャッシュテーブルはＲＡＭ６に格納されている。当該キャッシュテーブル中、「先頭ブロック」、「最終ブロック」の各欄には、有効なキャッシュデータが対応する、磁気ディスク１２上のブロックの先頭ブロックおよび最終ブロックのそれぞれのアドレスが格納される。また当該キャッシュテーブル中の「バッファアドレス」の欄には、当該キャッシュデータが格納されているバッファ５内のアドレスが格納されている。
【００６２】
コマンドの実行に伴うアクセス範囲がキャッシュにヒットする場合該当するデータについては実際に磁気ディスク１２にアクセスする必要がない。すなわち図１７のキャッシュテーブル中に、当該アクセス範囲に含まれるデータに対応するキャッシュデータが登録されている場合、当該キャッシュデータに対応するデータについては実際に磁気ディスク１２にアクセスする必要がない。たとえば前記コマンドがＲｅａｄコマンドであれば、バッファ５から直接ホスト装置２０へ対象のデータを転送することができる。更に、コマンドに伴うアクセス範囲のデータの全てに対応するキャッシュデータがキャッシュテーブルに登録されていた場合、すなわちフルヒットの場合、当該コマンドについての予測基本実行時間には予測シーク時間を含める必要がない。図１８は、キャッシュ制御を考慮した場合の予測基本実行時間の算出の流れを示す。
【００６３】
図１８中、ステップＳ４１，Ｓ４２，Ｓ４３，Ｓ４５，Ｓ４６，Ｓ４８，Ｓ４９は、それぞれ上述した図８中、ステップＳ１，Ｓ２，Ｓ３，Ｓ４、Ｓ５、Ｓ６，Ｓ７と同様の内容を有し、重複する説明を省略する。
【００６４】
図１８中、ステップＳ４６にてＭＰＵ２は、図１７のキャッシュテーブル中、コマンドの実行に伴うアクセス範囲と一部でも合致するキャッシュデータが登録されているかを判断する。判断の結果がＮＯの場合、ＭＰＵ２はステップＳ４８に移行する。この場合、予測基本実行時間の算出においてキャッシュ制御は考慮されず、図８の動作と結果的に同様となる。
【００６５】
他方、図１７のキャッシュテーブル中、コマンドの実行に伴うアクセス範囲と一部でも合致するキャッシュデータが登録されていた場合（ステップＳ４６のＹＥＳ、すなわち、いわゆるキャッシュヒットの場合），ＭＰＵ２はステップＳ４７に移行する。ステップＳ４７でＭＰＵ２は、図１７のキャッシュテーブル中、コマンドの実行に伴うアクセス範囲の全てを含むキャッシュデータが登録されている（すなわち、いわゆるフルヒットの場合）か否かを判断する。上記フルヒットの場合とは、図１７のキャッシュテーブル中、あるキャッシュデータの先頭ブロックと最終ブロックとの間の範囲が、コマンドの実行に伴うアクセス範囲を全て含む場合である。上気フルヒットの場合、既にバッファ５上にあるデータをホスト装置２０に転送するだけで当該コマンドを実行したことになる。したがって予測シーク時間を予測基本実行時間に含める必要がない。ここでフルヒットの場合にのみキャッシュ制御を考慮して予測シーク時間を不含とする理由は以下の通りである。すなわちフルヒットでなく、アクセス範囲の一部のみがヒットの場合には、アクセス範囲中、キャッシュデータが存在しない部分について実際に磁気ディスクへアクセスする必要があるため、結果的に全くヒットしない場合の実行時間と変わらなくなるからである。
【００６６】
したがってステップＳ４７の判断結果がＮＯの場合、ＭＰＵ２はステップＳ４８に移行する。この場合も、予測基本実行時間の算出においてキャッシュ制御は考慮されず、図８の動作と結果的に同様となる。
【００６７】
他方、ステップＳ４７の判断結果がＹＥＳの場合（すなわちフルヒットの場合）、ＭＰＵ２はステップＳ４８をスキップし、予測シーク時間を加算しない以下の演算式（６）で予測基本実行時間を算出する。
予測基本実行時間＝予測実行時間×転送ブロック数  ・・・（６）
但し
予測実行時間＝予測媒体アクセス時間＋予測データ転送時間  ・・・（２）
実施例では上記した予測基本実行時間、予測リトライ時間、予測交代時間およびキャッシュ制御を考慮して現在コマンドキューテーブルに登録されている個々のコマンド、すなわち未処理のコマンドについて予測コマンド実行時間を求める。更にコマンド毎の予測コマンド実行時間を現在コマンドキューテーブルに登録されている全ての未処理のコマンド、すなわち未処理の全コマンドについて合計した総予測実行時間を求める。そして求めた総予測実行時間をホスト装置においてタイムアウトが発生するタイムアウト値と比較し、総予測実行時間がタイムアウト値以上の場合、ホスト装置２０においてタイムアウトが発生するおそれがあると判定する。当該判定に至る一連の動作をタイムアウト判定動作と称する。タイムアウト判定動作において、ホスト装置２０にてタイムアウトが生ずると判定した場合、ＭＰＵ２はホスト装置２０に対し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。具体的にはホスト装置２０に対しキューフルステータス等を応答する。その結果ホスト装置では最後に送信したコマンドが磁気記憶装置２０により実行されないことを認識する。その結果ホスト装置におけるタイムアウトの発生が効果的に防止される。タイムアウトは当該コマンドが実行されるとの認識に基づいてホスト装置２０において発生されるものだからである。タイムアウト判定動作の詳細について図２０とともに後述する。
【００６８】
図１９はコマンドキューテーブルにおけるコマンドの登録状況の一例について示す。図１９の場合、現在コマンドキューテーブルにはキュー１〜キュー５に対し、それぞれ計５個のコマンドが登録されている。これら５個のコマンドのうち、キュー１に登録されているコマンドは１ブロック分の情報をＷｒｉｔｅするコマンドであり、予測コマンド実行時間が６．５ｍｓとして求められる。同様にキュー２に登録されているコマンドはＦＦＦＦブロック分の情報をＲｅａｄするコマンドであり、予測コマンド実行時間が３７０．５ｍｓとして求められる。キュー３に登録されているコマンドは１ブロック分の情報をＲｅａｄするコマンドであり、予測コマンド実行時間が６．５ｍｓとして求められる。キュー４に登録されているコマンドはＦＦＦＦブロック分の情報をＷｒｉｔｅするコマンドであり、予測コマンド実行時間が３７５．５ｍｓとして求めらいる。キュー５に登録されているコマンドは１ブロック分の情報をＷｒｉｔｅするコマンドであり、予測コマンド実行時間が６．５ｍｓとして求められる。上記キュー１〜キュー５のそれぞれの登録されている計５個のコマンドは、ホスト装置２０から磁気記憶装置１０が受信した順に、キュー１、キュー２、キュー３，キュー４，キュー５の順に、登録されたものである。当該５個のコマンドは、受信した順で磁気記憶装置１０が実行する。コマンドキューテーブル中、磁気記憶装置１０が実行し処理済みとなったコマンドは順次削除される。
【００６９】
図２０は実施例におけるタイムアウト判定動作の流れを示す。ＭＰＵ２はステップＳ６１でホスト装置２０からのコマンドを受信すると、当該受信したコマンドについて予測コマンド実行時間を算出する（ステップＳ６２，Ｓ６３，Ｓ６４、Ｓ６５）。より具体的には、ＭＰＵ２は当該コマンドについて予測基本実行時間を求める（ステップＳ６２）。予測基本実行時間の求め方は上記の如く、キャッシュ制御を考慮しない図８の方法と、キャッシュ制御を考慮する図１８の方法とがある。図２０の場合、図１８の方法を採る。図１８の方法を採る場合、ＭＰＵ２は図６，図７，図８，図１７，図１８とともに上述した方法で予測基本実行時間を求める。
【００７０】
次にＭＰＵ２は当該コマンドについて予測リトライ時間を求める（ステップＳ６３）。予測リトライ時間は図９，図１０，図１１とともに上述した方法で求める。
【００７１】
次にＭＰＵ２は当該コマンドについて予測交代時間を求める（ステップＳ６４）。予測交代時間は図１２，図１６とともに上述した方法で求める。
【００７２】
次にＭＰＵ２はステップＳ６５にて、以下の演算式により、上記の如くに求めた予測基本実行時間、予測リトライ時間および予測交代時間を合計し、当該コマンドについて予測コマンド実行時間を求める。
予測コマンド実行時間＝予測基本実行時間＋予測リトライ時間＋予測交代時間
そしてＭＰＵ２は、以下の演算式により、既に今回受信した当該コマンド以前に受信したコマンドについての総予測実行時間に、今回受信した当該コマンドについて上記の如く求めた予測コマンド実行時間を加算して総予測実行時間を更新する。上記総予測実行時間は、ＭＰＵ２が既に今回受信した当該コマンド以前に受信したコマンドの各々について上記同様にして求めた予測コマンド実行時間を、コマンドを受信するたびに加算して求めたものである。ＭＰＵ２はコマンドを受信するたびに総予測実行時間を更新し、その都度コマンドキューテーブルに格納する（図１９参照）。
総予測実行時間＝総予測実行時間＋予測コマンド実行時間
次にＭＰＵ２はステップＳ６６にて、上記更新した総予測実行時間をタイムアウト値と比較する。比較の結果総予測実行時間がタイムアウト値より小さい場合（ステップＳ６６のＮＯ），ＭＰＵ２は今回受信したコマンドをコマンドキューテーブルに追加して登録する。
【００７３】
たとえば図１９の例の場合、キュー１〜キュー５の計５個のコマンドのそれぞれの予測コマンド実行時間を合計すると、総予測実行時間として７６５．５［ｍｓ］が得られる。たとえばタイムアウト値を１０００［ｍｓ］とすると、当該総予測実行時間はタイムアウト値より小さい。このため、５番目のコマンドを受信した際の、図２０のステップＳ６６の判定結果はＮＯとなる。
【００７４】
他方ステップＳ６６の判定結果がＹＥＳの場合、すなわち総予測実行時間がタイムアウト値以上の場合、ＭＰＵ２はステップＳ６８にて、ホスト装置２０に対しキューフルステータス等のエラーを報告し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。したがってＭＰＵ２は今回受信したコマンドをコマンドキューテーブルに追加せず、今回受信したコマンドを実行することはない。
【００７５】
すなわち仮に今回受信したコマンドを受信したままにしておくと、上記の如く総予測実行時間がタイムアウト値以上となる（ステップＳ６６のＹＥＳ）。すなわち今回受信したコマンドを受信した時点から今回受信したコマンドの実行が完了する時点までの経過時間がタイムアウト値以上となり、ホスト装置２０で今回受信したコマンドについてタイムアウトが生ずる可能性が高い。ここで今回受信したコマンドが受信された時点から今回受信されたコマンドの実行が完了する時点までの経過時間には、今回受信されたコマンド以前に受信された未処理の全てのコマンドの実行に要する時間が含まれる。
【００７６】
実施例では上記の如く総予測実行時間がタイムアウト値以上となる場合には、受信した未処理のコマンドが限界を超えた旨を報告する。その結果ホスト装置は最後に送信したコマンドが実行されないことを認識し、よってホスト装置２０においてタイムアウトが生ずることが効果的に防止され得る。タイムアウトは当該コマンドが実行されるとの認識に基づいてホスト装置２０において発生されるものだからである。
【００７７】
他方、総予測実行時間がタイムアウト値未満の場合（ステップＳ６６のＹＥＳ）、今回受信したコマンドを受信した時点から今回受信したコマンドの実行が完了する時点までの経過時間がタイムアウト値内に収まる可能性が高い。したがってホスト装置２０で今回受信したコマンドについてタイムアウトが生ずる可能性は低い。したがって総予測実行時間がタイムアウト値未満の場合（ステップＳ６６のＹＥＳ）、そのままコマンドキューテーブルに追加して登録する（ステップＳ６７）。
【００７８】
ここでコマンドキューテーブルにて登録可能なコマンドの数の上限を設けることが可能である。その場合、ステップＳ６６における判断とは別に、上記上限を超える場合には新たにコマンドはコマンドキューテーブルにて登録されない。この場合もキューフルステータスがホスト装置２０に応答されるため、ホスト装置２０は最後に送信したコマンドは実行されないことを認識する。他方、上記上限以内の場合であっても、ステップＳ６６における判断結果がＹＥＳの場合には、受信した未処理のコマンドが限界を超えた旨がキューフルステータス等によりホスト装置２０に応答される。従ってこの場合もホスト装置２０は最後に送信したコマンドは実行されないことを認識する。
【００７９】
次に図２１，２２とともに、図２０とともに上述したタイムアウト判定動作につき、実際の数値例を使用して再度説明する。ここではホスト装置２０においてタイムアウトするタイムアウト値を1000msと想定する。図２２に示される如く、現在、コマンド-1、2、3と受信しており、総予測実行時間は956msでタイムアウト値以内である。したがって全ての未処理のコマンドがコマンドキューテーブルのキュー1〜3に登録されている。
【００８０】
次にＭＰＵ２がホスト装置２０からコマンド-4を受信してコマンド解析を行う（図２１のステップＳ８１、図２０のステップＳ６１）。そして当該コマンドの予測基本実行時間が130msと得られ、アクセス範囲中にエラー発生ブロックが存在した為、予測リトライ時間が20msと得られた。またアクセス範囲中に交代処理済みのブロックは存在しなかったので予測交代時間は0msと得られた（図２１のステップＳ８２、図２０のステップＳ６２、Ｓ６３，Ｓ６４）。したがてコマンド-4の予測実行時間は、130ms+20ms+0ms=150msとなる（図２１のステップＳ８３，図２０のステップＳ６５）。次にコマンドキューテーブルから現在の総予測実行時間を参照し、コマンド-4を含んだ場合の総予測実行時間を計算すると956ms+150ms=1106msとなる（図２１のステップＳ８３，図２０のステップＳ６５）。  したがってタイムアウト値1000ms以上となっている（図２１のステップＳ８４，図２０のステップＳ６６のＹＥＳ）。この為、受信した未処理のコマンドが限界を超えた旨をホスト装置２０に報告する。具体的にはホスト装置２０に対しキューフルステータスを報告する。その結果ホスト装置は最後に送信したコマンドが実行されないことを認識し、タイムアウトが防止される。尚図２２の例の場合、コマンドキューテーブルにて登録可能なコマンドの数の上限が５であり、現在登録されているコマンドは３個であるため、上記コマンド-4を含めても当該上限以内に収まる。しかしながら図２１のステップＳ８４，図２０のステップＳ６６のＹＥＳの判定により、キューフルステータスが応答され、受信した未処理コマンドが限界を超えた旨がホスト装置２０に報告される（図２１のステップＳ８５）。
【００８１】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
コマンド受信手段が、情報処理装置から、記憶装置に対する情報の記録コマンドおよび前記記憶装置からの情報の再生コマンドのうちの少なくとも何れかのコマンドを受信する段階と、
コマンド実行時間予測手段が、前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求める段階と、
総予測実行時間算出手段が、前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める段階と、
判断手段が、前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する段階と、
エラー応答手段が、前記判断手段が総予測実行時間が一定の値以上であると判断した際、前記コマンド受信手段がエラーを応答する段階とを有する記憶装置の制御方法。
（付記２）
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める付記１に記載の記憶装置の制御方法。
（付記３）
前記記憶装置はディスク装置とされる付記１または２に記載の記憶装置の制御方法。
（付記４）
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段とを有する記憶装置。
（付記５）
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める付記４に記載の記憶装置。
（付記６）
ディスク装置とされる付記４または５に記載の記憶装置。
（付記７）
記憶装置の動作を制御するコンピュータを、
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段として機能させるための記憶装置制御プログラム。
（付記８）
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める付記７に記載の記憶装置制御プログラム。
（付記９）
前記記憶装置はディスク装置とされる付記７または８に記載の記憶装置制御プログラム。
【産業上の利用可能性】
【００８２】
なお上記実施例は磁気記憶装置、より具体的には磁気ディスク装置であったが、実施例はこれに限られない。光ディスク装置、光磁気ディスク装置、磁気テープ記憶装置、半導体記憶装置等、種々の記憶装置の実施例が可能である。
【符号の説明】
【００８３】
１  インタフェース制御部
２  ＭＰＵ（マイクロプロセッサユニット）
３  ドライブ制御部
４  ドライブ部
５  バッファ
６  ＲＡＭ
７  フラッシュＲＯＭ
１０  磁気記憶装置
１２  磁気ディスク
１３  磁気ヘッド
２０  ホスト装置
【図１】
2010211902.tif 000003
【図２】
2010211902.tif 000004
【図３】
2010211902.tif 000005
【図４】
2010211902.tif 000006
【図５】
2010211902.tif 000007
【図６】
2010211902.tif 000008
【図７】
2010211902.tif 000009
【図８】
2010211902.tif 000010
【図９】
2010211902.tif 000011
【図１０】
2010211902.tif 000012
【図１１】
2010211902.tif 000013
【図１２】
2010211902.tif 000014
【図１３】
2010211902.tif 000015
【図１４】
2010211902.tif 000016
【図１５】
2010211902.tif 000017
【図１６】
2010211902.tif 000018
【図１７】
2010211902.tif 000019
【図１８】
2010211902.tif 000020
【図１９】
2010211902.tif 000021
【図２０】
2010211902.tif 000022
【図２１】
2010211902.tif 000023
【図２２】
2010211902.tif 000024