記憶装置の制御方法、記憶装置および記憶装置制御プログラム
【課題】 記憶装置に対するリード/ライトコマンドについてタイムアウトの発生を防止することを目的とする。
【解決手段】 コマンドの実行の開始から完了までに要されるコマンド実行時間を予測し、全ての未処理のコマンドについて合計した総予測実行時間を得、総予測実行時間が一定の値以上か否かを判断し、総予測実行時間が一定の値以上であると判断した際、エラーを応答する構成を有する。
【解決手段】 コマンドの実行の開始から完了までに要されるコマンド実行時間を予測し、全ての未処理のコマンドについて合計した総予測実行時間を得、総予測実行時間が一定の値以上か否かを判断し、総予測実行時間が一定の値以上であると判断した際、エラーを応答する構成を有する。
【発明の詳細な説明】
【技術分野】
【0001】
実施例は記憶装置の制御方法、記憶装置および記憶装置制御プログラムに関する。
【背景技術】
【0002】
記憶装置の制御方法として以下の構成が知られている。すなわちアクセス時間が最小となるようにコマンド実行順を変更するものであって、特に高速に各コマンド間のアクセス時間を予測計算する。ここではコマンドキューバッファに格納された各コマンドと実行中のコマンドとのアクセス時間をシーク時間テーブルとセクタ位置テーブルを用いて計算する。
【0003】
また以下の構成も知られている。すなわちホスト装置は磁気記憶装置から受信したパラメータ情報に基づいてハードディスク装置に対するコマンドの実行時間を予測し、この予測結果に基づいてコマンドの並び替えを行う。
【0004】
また以下の構成も知られている。すなわち複数のディスク状記録媒体を有するデータ記憶装置に対して、複数のアクセス要求順序を並び替えたアクセス要求群単位によるアクセスを行う。そして既にアクセスを終了したアクセス要求群の最終ディスクヘッド位置と次に実行するアクセス要求群のディスクヘッド位置との関係に基づいてディスクヘッドの移動方向を選択する。
【0005】
また以下の構成も知られている。すなわちデータ転送の中断を最小限に抑えつつ最も有効なリトライを行うという課題の解決のため、リトライが必要なときは負荷検出手段によって検出された負荷レベルに応じてリトライ処理の内容をリトライテーブルより取得する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2001−154809号公報
【特許文献2】特開2001−222380号公報
【特許文献3】特開平11−345094号公報
【特許文献4】特開2000−148410号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
記憶装置が情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信した際に当該コマンドについてのタイムアウトの発生を防止することを目的とする。
【課題を解決するための手段】
【0008】
実施例によればコマンドの実行に着手してから当該実行が完了するまでに要されるコマンド実行時間を予測し、全ての未処理のコマンドについて合計した総予測実行時間を得、総予測実行時間が一定の値以上か否かを判断し、総予測実行時間が一定の値以上であると判断した際、エラーを応答する。
【発明の効果】
【0009】
予測したコマンド実行時間を全ての未処理のコマンドについて合計して得た総予測実行時間が一定の値以上か否かを判断し判断結果に応じてエラーを応答するため、確実にタイムアウトの発生を防止し得る。
【図面の簡単な説明】
【0010】
【図1】コマンドキューテーブルによる制御について説明するための図である。
【図2】参考例におけるキューフル状態について説明するための図である。
【図3】参考例においてタイムアウトが検出される場合について説明するための図である。
【図4】実施例の記憶装置としての磁気記憶装置のハードウェア構成例を説明するためのブロック図である。
【図5】図4に示す磁気記憶装置のディスク駆動機構の構成例を説明するための平面図である。
【図6】基本時間テーブルについて説明するための図である。
【図7】シーク時間テーブルについて説明するための図である。
【図8】予測基本実行時間を算出する動作の流れを説明するためのフローチャート(その1)である。
【図9】リトライテーブルについて説明するための図である。
【図10】エラー発生箇所テーブルについて説明するための図である。
【図11】予測リトライ時間を算出する動作の流れを説明するためのフローチャートである。
【図12】交代管理テーブルについて説明するための図である。
【図13】交代割り付け処理について説明するための図である。
【図14】交代割り付けがなされなかった場合のアクセス手順について説明するための図である。
【図15】交代割り付けがなされた場合のアクセス手順について説明するための図である。
【図16】予測交代時間を算出する動作の流れを説明するためのフローチャートである。
【図17】キャッシュテーブルについて説明するための図である。
【図18】キャッシュ制御を考慮して予測基本実行時間を算出する動作の流れを説明するためのフローチャート(その2)である。
【図19】コマンドキューテーブルについて説明するための図である。
【図20】タイムアウト判定動作の流れを説明するためのフローチャートである。
【図21】タイムアウト判定動作を数値例を用いて説明するための図(その1)である。
【図22】タイムアウト判定動作を数値例を用いて説明するための図(その2)である。
【発明を実施するための形態】
【0011】
以下に実施例について詳細に説明する。
【0012】
実施例によれば、ホスト装置からのコマンド受信時、リトライ発生状況録、交代情報、キャッシュヒット予測、転送ブロック数等の情報を考慮してコマンド実行時間を予測する。ここでコマンド実行時間とは、当該コマンドの実行が開始されてから当該実行が完了するまでに要される時間を言う。またコマンド実行時間の予測値を予測コマンド実行時間と称する。
【0013】
また実施例によれば、当該予測した個々のコマンドの予測コマンド実行時間の合計により、現在コマンドキューテーブルに登録されている総コマンドの実行時間(総予測実行時間)を算出する。
【0014】
また実施例によれば、当該算出した総予測実行時間が一定の値以上となった場合、受信した未処理コマンドが限界を超えた旨を、キューフルステータスや特定のセンスコード等により報告する。
【0015】
ここで実施例はコマンドキューテーブルによるコマンド管理機能を有する磁気記憶装置の制御に係る。
【0016】
近年磁気記憶装置に対してコマンドを発行するホスト装置としての情報処理装置の性能が向上し、磁気記憶装置に対する時間的な要求が厳しくなっている。磁気記憶装置においてはホスト装置から発行されるコマンドをコマンドキューテーブルで管理し処理の高速化を図ってきた。実施例では上記コマンドキューテーブルでコマンドを管理するに当たり、個々のコマンドのコマンド実行時間の増減の影響を考慮する。これはコマンドキューテーブルで管理しているコマンドを実行する際、たとえばリトライが多発したりすると実行時間の増大が生じ、他のコマンドの実行開始時間が遅延し、結果的に要求元のホスト装置においてタイムアウトが生ずるおそれがあるからである。
【0017】
図1は従来のコマンドキューテーブルを利用した制御について説明するための図である。図1中、ホスト装置からコマンドが発行されると磁気記憶装置は当該コマンドを受信し、当該コマンドを自己が有するコマンドキューテーブルに順番に登録する。図1の左側に示す如く、ホスト装置からコマンド−1、コマンド−2が順に発行されると、磁気記憶装置は当該コマンド−1,コマンド−2を上記の順で受信し、自己が有するコマンドキューテーブルに登録する。当該コマンドキューテーブルはキュー1〜5の5コマンド分のサイズを有する。当該コマンドキューテーブル中、キュー1,キュー2にそれぞれ上記コマンド−1、コマンド−2の2個のコマンドが、上記受信した順で登録され、他のキュー3〜キュー5は空いている。磁気記憶装置は当該コマンド−1、コマンド−2を、上記登録した順、すなわちコマンド−1、コマンド−2の順で順次実行する。磁気記憶装置がコマンド−1を実行すると、図1の右側にしめす如く、コマンドキューテーブル中、処理済みのコマンド−1が削除され、キュー1には次に実行されるコマンドとして、コマンド−2が登録された状態となる。
【0018】
このようなコマンドキューテーブルによる制御においては、たとえば以下に説明する参考例の制御方法を採ることができる。すなわち上記コマンドキューテーブルのキュー1〜キュー5により、無条件でホスト装置からのコマンドを登録する。図2はキュー1〜キュー5のコマンドキューテーブル中、コマンド−1〜コマンド−5の計5個のコマンドが登録された状態を示す。図2の状態において更にホスト装置から次のコマンド−6が発行されると、コマンドキューテーブルにおいて更に登録する余地がないため、たとえば周知のSCSI等の制御においては、磁気記憶装置がホスト装置に対しキューフルステータスを応答する。磁気記憶装置は上記キューフルステータスの応答を行うことにより、受信済み未処理のコマンドが限界を超えた旨を示し、最後に受信したコマンドを実行しない旨を示す。
【0019】
図3は、図2の状態、すなわち5個のコマンドを管理可能なコマンドキューテーブルに既に5個のコマンドが格納された状態で、実際に磁気記憶装置が当該5個のコマンドを順次実行した場合の例を示す。図3の例の場合、磁気記憶装置がコマンド−2の実行時リトライが多発し、またコマンド−4の実行時にはリトライの多発に加えて交代処理が発生した。なおリトライ、交代処理については後述する。その結果ホスト装置から見た場合、コマンド−2以降、徐々にコマンド応答が遅延し、その結果コマンド−5に対するコマンド応答が相当遅延し、ホスト装置でタイムアウトが発生した。実施例は当該問題を解決し、ホスト装置においてタイムアウトが生ずることを防止する。
【0020】
実施例によれば、磁気記憶装置がホスト装置からコマンドを受信した際、当該コマンドにつき、コマンド実行時間を予測する。そしてコマンド実行時間を予測する際、過去にリトライが発生した磁気ディスク上の位置に関する記録、交代情報、キャッシュヒットに対する予測、コマンドの実行に必要な転送ブロック数等を考慮して行う。
【0021】
次に当該予測された各コマンド実行時間(すなわち予測コマンド実行時間)を、現在コマンドキューテーブルに登録されている全コマンド、すなわち未処理の全コマンドについて合計する。当該合計を総予測実行時間と称する。
【0022】
次に総予測実行時間が一定の値以上となったか否かを判定し、総予測実行時間が一定の値以上となった場合、磁気記憶装置はホスト装置に対し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。具体的にはホスト装置に対しキューフルステータス、特定のセンスコード等を応答する。
【0023】
実施例によればこのように、ホスト装置からコマンドを受信した際に当該コマンドの実行時間を予測し、コマンドキューテーブルに登録されている全コマンド、すなわち未処理の全コマンドの実行時間の予測(すなわち予測コマンド実行時間)の合計である総予測実行時間を算出する。そして当該総予測実行時間がホスト装置においてタイムアウトが発生する時間以上か否かを判断する。総予測実行時間がホスト装置においてタイムアウトが発生する時間以上の場合、ホスト装置に対し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。ホスト装置は当該報告を受け、最後に送信したコマンドが実行されないことを認識する。このような制御を行うことにより、ホスト装置から受信したコマンドの実行中にホスト装置においてタイムアウトが生ずる事態が防止される。タイムアウトは当該コマンドが実行されるとの認識に基づいて発生されるものだからである。
【0024】
実施例の磁気記憶装置の制御方法によれば、受信したコマンドの各々についての実行時間を予測するとともに、当該各コマンドの予測コマンド実行時間の合計である総予測実行時間を使用してコマンドキューテーブルによる制御を行う。その結果ホスト装置におけるタイムアウトの発生を低減することが可能である。以下に実施例の磁気記憶装置の制御方法の詳細を示す。
【0025】
実施例の磁気記憶装置の制御方法では、磁気記憶装置がホスト装置からのコマンド受信時、当該コマンドについて予測コマンド実行時間を算出する。より具体的には、各コマンドについての基本的な実行時間である予測基本実行時間を求め、当該コマンドの実行において変動する可能性がある時間の項目について考慮した上で、当該コマンドについての予測コマンド実行時間を求める。
【0026】
図4は、本発明の一実施例における磁気記憶装置のハードウェア構成例を示すブロック図である。実施例における磁気記憶装置10は、より具体的には図5とともに後述するように磁気ディスク装置である。
【0027】
磁気記憶装置10は、図4に示す如くに相互に接続されたインタフェース制御部1、MPU(マイクロプロセッサユニット、以下同様)2、ドライブ制御部3、ドライブ部4、バッファ5、RAM6および、フラッシュROM7を有する。
【0028】
インタフェース制御部1はホスト装置20と磁気記憶装置10との間のデータやコマンドのやり取りを制御する。MPU2は磁気記憶装置10全体の制御を行う制御部(または、制御手段)として機能する。またMPU2は図19とともに後述するコマンドキューテーブルを使用してホスト装置20から受信したコマンドの管理を行う。ドライブ制御部3は、MPU2の制御下でドライブ部4の制御を行う。バッファ5は、ホスト装置20と磁気記憶装置10との間でやり取りされる各種データやコマンドを一時的に格納する。RAM6は、MPU2による演算処理の中間結果等の各種データを格納する。RAM6に格納されるデータには、後述するリトライテーブル、エラー発生箇所テーブル、交代管理テーブル、キャッシュテーブル等の各種データが含まれる。フラッシュROM7は、MPU2が実行するプログラムやデータを格納する。
【0029】
次に図5とともに、磁気ディスク装置である磁気記憶装置10のディスク駆動機構の構成例について説明する。当該ディスク駆動機構は図4に示されているドライブ部4に含まれる。
【0030】
図5に示される如く、磁気ディスク装置である磁気記憶装置10はスピンドルモータ(図示を省略)、スピンドルモータによって回転される回転軸11、回転軸11に装着される磁気記憶媒体としての磁気ディスク12を有する。磁気記憶装置10は更に、磁気ディスク12に対向して配置され、先端に磁気ヘッド13を備えたヘッドスライダ14、アーム軸16、ヘッドスライダ14を先端に固着してアーム軸16を中心に磁気ディスク12上を水平に移動するアーム15を有する。磁気記憶装置10は更にアーム15を駆動して水平移動させるためのアクチュエータ17を有する。ヘッドスライダ14、アーム軸16、アーム15、およびアクチュエータ17は、磁気ディスク12上で磁気ヘッド13を移動させるヘッド移動機構として機能する。
【0031】
図5の構成において磁気ディスク12に対して情報の記録または再生を行う場合には、磁気回路で構成されたアクチュエータ17によりアーム15が駆動される。そしてヘッドスライダ14の先端に設けられた磁気ヘッド13が回転状態にある磁気ディスク12上の所望のトラックに位置決めされる。磁気ヘッド13には、記録素子とリード素子とが形成されている。磁気ディスク12上の所望のトラックに位置決めされた磁気ヘッド13により、当該トラック上の所望のブロック(セクタとも称する)に対し、情報の記録または再生が行われる。所望のブロックに情報が記録される場合、情報は図4に示されるホスト装置20からインタフェース制御部1、MPU2,ドライブ制御部3を介しドライブ部4に転送され、磁気ヘッド13の記録素子により磁気ディスク12上の所望のブロックに記録される。尚情報がホスト装置20から上記の経路で磁気ヘッド13の記録素子に送られる間にドライブ制御部3等において適宜行われる信号変換の具体的な内容については周知の技術を適用可能であり、ここでの説明を省略する。
【0032】
また磁気ディスク12の所望のブロックから情報が再生される場合、情報が磁気ヘッド13のリード素子で所望のブロックから取り出され、ドライブ部4からドライブ制御部3、MPU2,インタフェース制御部1を介しホスト装置20へと転送される。尚情報が磁気ヘッド13のリード素子で取り出され上記の経路でホスト装置20に送信される間ドライブ制御部3等において適宜行われる信号変換の具体的な内容については周知の技術を適用可能であり、ここでの説明を省略する。尚、磁気記憶装置10のハードウェア構成は図4、図5に示す構成に限定されるものではなく、後述する動作の実施が可能であれば他の構成でもよい。
【0033】
以下に磁気記憶装置10がホスト装置20から受信したコマンドを実行する際の基本的な動作の流れについて説明する。
【0034】
図4のホスト装置20から、磁気記憶装置10がコマンドを受信した場合、インタフェース制御部1を経由してコマンドがバッファ5に格納される。次にMPU2がコマンドを解析し、コマンドの内容に応じた制御を実施する。例えば、受信したコマンドがReadコマンド、Writeコマンド等の媒体アクセス系のコマンドの場合、MPU2が当該コマンドに係るアクセス開始ブロックアドレスと転送ブロック数とを認識する。そしてMPU2はドライブ制御部3経由でドライブ部4に対し、上記アクセス開始ブロックアドレスのブロックに対するシーク命令を発行し、前記転送ブロック数分のブロックのReadあるいはWriteを指示する。たとえばReadコマンドの場合、当該指示に応じてドライブ部4から読み出されたブロックのデータは一旦バッファ5へ格納され、その後インタフェース制御部1を経由してホスト装置20へと転送される。
【0035】
次に、実施例において、各コマンドについての実行時間、すなわち当該コマンドの実行が開始されてから完了する迄に要される時間の予測値である予測コマンド実行時間を算出する際に考慮する各種時間情報および、キャッシュ制御について説明する。上記各種時間情報とは、後述する予測基本実行時間、予測リトライ時間、および予測交代時間を含む。以下に個々に説明する。
【0036】
上記予測基本実行時間は、各コマンドが通常の状態で実行された場合に要される時間である。非媒体アクセス系のほとんどのコマンドの実行時間は一定である。非媒体アクセス系のコマンドとは、特に磁気記憶媒体、すなわち実施例の場合磁気ディスク12に対するアクセス動作を伴わない動作に対するコマンドを言う。上記の如く非媒体アクセス系のほとんどのコマンドの実行時間は一定であるため、予測基本実行時間は一定である。非媒体アクセス系のコマンドの予測基本実行時間を予測実行時間として図6に示される如くの基本時間テーブルに格納する。基本時間テーブルは予め対応する実績データ等を利用して作成しフラッシュROM7に登録しておく。他方後述する如く、媒体アクセス系のコマンドについては変動要素があるため、基本予測実行時間は変動する。
【0037】
次に実施例における、媒体アクセス系のコマンド、すなわちRead(すなわち再生)コマンドおよびWrite(すなわち記録)コマンドについての予測基本実行時間の求め方について述べる。媒体アクセス系のコマンドに係る予測基本実行時間は以下の演算式(1)で求める。
予測基本実行時間=予測シーク時間+予測実行時間×転送ブロック数 ・・・(1)
ここで
予測実行時間=予測媒体アクセス時間+予測データ転送時間 ・・・(2)
である。
【0038】
すなわち、図5の構成において、スピンドルモータで駆動され回転する磁気ディスク12上、アーム15がアクチュエータ17により駆動され磁気ヘッド13が磁気ディスク12の半径方向に沿って移動する。その結果磁気ヘッド13は磁気ディスク12のシリンダを横切り、すなわちトラックを横切ることでシーク動作を行い、所望のトラックに到達する。媒体アクセス系のコマンドの実行時、コマンドに含まれるアクセス開始ブロックアドレスと転送ブロック数とのうち、アクセス開始ブロックを有するトラックへシーク動作により磁気ヘッド13が移動される。当該シーク動作による磁気ヘッド13の移動に要される時間の予測値が予測シーク時間である。上記シーク動作により磁気ヘッド13が磁気ディスク12上の所望のトラックに到達した後、コマンドに含まれるアクセス開始ブロックアドレスと転送ブロック数とのうち、転送ブロック数分のブロックに磁気ヘッド13がアクセスする。当該磁気ヘッド13のアクセスにより、磁気ディスク12上のブロックに対する情報の取り出し或いは記録がなされる。磁気ヘッド13の磁気ディスク12上の所望のトラックへの到達以降、ブロックごとに媒体アクセスおよびデータ転送を行うのに要する時間の予測値が、媒体アクセス系のコマンドについての予測実行時間である。
【0039】
予測シーク時間については、図7に示す如くの、シーク距離に応じた所要シーク時間を登録したテーブルを予め作成してフラッシュROM7に登録しておく。尚予測シーク時間として、簡易的には、当該磁気記憶装置10の平均シーク時間を一律に使用する方法も可能である。
【0040】
実施例では、以下の演算式(1)、(2)
予測基本実行時間=予測シーク時間+予測実行時間×転送ブロック数 ・・・(1)
予測実行時間=予測媒体アクセス時間+予測データ転送時間 ・・・(2)
の演算における予測実行時間、すなわち(予測媒体アクセス時間+予測データ転送時間)の値として「1セクタ処理」に要する時間を登録しておく。すなわち当該予測実行時間を、図6のテーブル中、Read、Writeのそれぞれのコマンドについての予測実行時間として登録しておく。「1セクタ処理」とは1セクタ分の媒体アクセスおよびデータ転送の処理を言う。
【0041】
より具体的には、磁気記憶装置10がホスト装置20からコマンドを受信した際、MPU2が当該コマンドを解析する。MPU2はコマンドに含まれるアクセス開始ブロックアドレスとしての論理アドレスからシーク距離を求める。論理アドレスからシーク距離を求める場合、以下に示す方法で求める。まず以下の演算式により「目的シリンダ」を得る。
論理アドレス ÷(セクタ数/シリンダ)= 目的シリンダ
ここで(セクタ数/シリンダ)は1シリンダに含まれ得るセクタ数を意味する。次にMPU2はドライブ制御部3から、現在磁気ヘッド13が磁気ディスク12上、どのシリンダ上に位置するかの情報、すなわち現在のシリンダの情報を得る。MPU2は上記演算式により算出した目的シリンダと現在のシリンダとの差分を算出する。得られた差分が求めるシーク距離である。
【0042】
次にシーク距離に応じた所要時間を予測シーク時間として図7のテーブルから得、上記演算式(1)、(2)
予測基本実行時間=予測シーク時間+予測実行時間×転送ブロック数 ・・・(1)
予測実行時間=予測媒体アクセス時間+予測データ転送時間 ・・・(2)
を適用する。そして図6のテーブルで得られる予測実行時間(すなわち1セクタ分についての(予測媒体アクセス時間+予測データ転送時間))に処理セクタ数、すなわち転送ブロック数を乗じた値を加算して予測基本実行時間を得る。尚上記図7のテーブルはシーク時間テーブルであり、予め対応する実績データ等を利用して作成し、フラッシュROM7に登録しておく。
【0043】
図8は予測基本実行時間を算出する動作の流れを示す。図8中、MPU2はステップS1で受信したコマンドを解析し、ステップS2で図6の基本時間テーブルからコマンドに係る予測実行時間を求める。ステップS3で当該コマンドが媒体アクセス系のコマンドか否かを判断する。非媒体アクセス系のコマンドの場合、ステップS4で、予測基本実行時間として、図6の基本時間テーブルで得られた予測実行時間をそのまま採用する。他方媒体アクセス系のコマンドの場合、ステップS5でまず、上記演算式(1)の演算中、予測実行時間×転送ブロック数の演算を行う。次にステップS6にて、図7のシーク時間テーブルから予測シーク時間を得、演算式(1)を適用して予測基本実行時間を得る。MPU2はステップS4またはS7にて得られた予測基本実行時間をステップS7にて確定する。
【0044】
次に前記予測コマンド実行時間を算出する際に考慮する各種時間情報のうちの、予測リトライ時間について説明する。受信したコマンドが上記媒体アクセス系のコマンドの場合、図4のホスト装置20から受けたコマンドはインタフェース制御部1を経由してバッファ5に格納される。その後上記の如く、MPU2がコマンドを解析し、アクセス開始ブロックアドレスおよび転送ブロック数等の情報を得る。次にMPU2はドライブ制御部3を介しドライブ部4を使用して当該コマンドを実行する。ここで上記コマンド実行中にエラーが発生した場合、MPU2は、予め図4のRAM6に格納された図9に示される如くのリトライテーブルを参照し、いわゆるエラー回復処理、すなわちリトライ処理を実行する。
【0045】
ここで図9に示す如くのリトライテーブルとは、リトライ処理の実行順を示したものである。MPU2は各ステップのリトライ処理後に再度コマンドを実行し、その際エラーが生じなければリトライ処理を終了する。他方上記リトライ処理後の再度のコマンドの実行中に再びエラーが生じた場合、MPU2はリトライテーブル上、次のステップのリトライ処理を実行し、実行後再度コマンドを実行する。このようにリトライ処理後のコマンド実行中にエラーが生ずることが繰り返された場合、MPU2はリトライテーブルに示される実行順に順次各ステップのリトライ処理を実行する。たとえばステップ01の「オフセット−方向」は、磁気ヘッド13が位置する磁気ディスク12のトラック位置を所定方向に所定量移動した上で再度コマンドの実行を行う動作を示す。なおMPU2は、上記リトライテーブルに従ったリトライ処理を当該コマンドが正常に終了するか、或いは規定回数分のリトライ処理を実施するまで繰り返す。
【0046】
MPU2はリトライ処理を実行した際、該当するエラーが発生したブロックのアドレスおよび実施した一連のリトライ処理のステップ数の情報を、図10に示される如くのエラー発生箇所テーブルとして図4のRAM6やフラッシュROM7に記録する。図10のエラー発生箇所テーブル中、「エラー発生ブロック」の欄には、MPU2が実施したリトライ処理の対象ブロックのアドレスが格納される。図10のエラー発生箇所テーブル中、「リトライステップ」の欄には、上記リトライ処理の対象ブロックに対し実施した一連のリトライ処理のステップ数が格納される。
【0047】
また、実施例の如くの、磁気記憶装置10の媒体アクセス系のコマンドのリトライ処理においては「回転待ち時間」が生ずる。すなわち、コマンドの実行中にエラーが生じリトライ処理を行う場合、磁気ディスク12の回転により、磁気ディスク12上の処理対象ブロックが磁気13ヘッド下に次に到達するまでに時間が要され、当該所要の時間を「回転待ち時間」と称する。リトライ処理では当該回転待ち時間内にコマンドの実行に係る各種の設定等を変更して再度磁気ディスク12にアクセスを行う。当該回転待ち時間はリトライ処理のステップ毎に生じる。このためリトライ処理に要すると予測される予測リトライ時間は以下の演算式(3)で求める。
予測リトライ時間=リトライステップ数×予測回転待ち時間 ・・・(3)
ここでリトライステップ数とは、MPU2が実施した一連のリトライ処理のステップ数を意味する。また予測回転待ち時間とは、上記回転待ち時間の予測値である。
【0048】
予測回転待ち時間は磁気記憶装置に固有の値であり、磁気記憶装置の回転数から算出し得る。例えば、磁気記憶装置10の磁気ディスク12の回転数が1万回転の場合、以下の演算式
60÷10000=6[ms]
で求まる値6[ms]が磁気ディスク13の1回転に要する時間であり、予測回転待ち時間である。予測リトライ時間を算出する動作の流れを図11に示す。
【0049】
図11中、ステップS11でMPU2は受信したコマンドを解析する。MPU2は解析により、アクセス開始ブロックアドレスおよび転送ブロック数を求め、アクセス開始ブロックアドレスおよび転送ブロック数の情報から、当該コマンドの実行時にアクセスする磁気ディスク12上のブロックのアドレスの範囲を得る。次にステップS12でMPU2は図10のエラー発生箇所テーブルを参照し、上記当該コマンドの実行時にアクセスする磁気ディスク12上のブロックのアドレスの範囲に、エラー発生箇所テーブルに含まれるエラー発生ブロックが含まれるか否かを判定する。判定の結果がNOの場合、MPU2は当該コマンドの実行においてリトライ処理が生ずることはないものと判断し、予測リトライ時間として「0」を得る(ステップS16)。
【0050】
他方、ステップS12の判定の結果がYESの場合、MPU2はステップS13にて、上記エラー発生箇所テーブルから、該当するエラー発生ブロックに係るリトライステップ数を得る。次にステップS14でMPU2は、上記演算式(3)
予測リトライ時間=リトライステップ数×予測回転待ち時間 ・・・(3)
により当該エラー発生ブロックについての予測リトライ時間を算出する。
【0051】
MPU2は次にステップS15にて、当該コマンドの実行時にアクセスする磁気ディスク12上のブロックのアドレスの範囲にエラー発生箇所テーブルに含まれる他のエラー発生ブロックが含まれるか否かを判定する。判定の結果がYESの場合、MPU2はステップS13に戻り、ステップS13,S14にて上記同様にして、当該エラー発生ブロックにつき、予測リトライ時間を得る。
【0052】
他方ステップS15の判定の結果がNOの場合、MPU2は、ステップS13、S14,S15のループによってエラー発生ブロックごとに得られた予測リトライ時間を全エラー発生ブロックについて合計する。MPU2は得られた合計を当該コマンドに係る予測リトライ時間として得る(ステップS16)。尚上記リトライ処理としては公知の技術を適用可能であり、更に詳細な説明は省略する。
【0053】
次に前記予測コマンド実行時間を算出する際に考慮する各種時間情報のうちの、予測交代時間について説明する。磁気記録媒体としての磁気ディスク12には、媒体傷などによる不良ブロックが存在し得る。当該不良ブロックを回避する為に交代処理を実施することができる。すなわちユーザ領域に不良ブロックが生じた場合、当該不良ブロックのデータに対し、磁気ディスク12上、ユーザ領域とは別に設けられた交代領域に、代替のブロック(以下交代ブロックと称する)を割り当てる。当該交代処理後、媒体アクセス系のコマンドの実行の際、アクセス対象の範囲に当該不良ブロックのデータが含まれる場合、前記交代ブロックに対するアクセスを行うことになる。
【0054】
不良ブロックおよび交代ブロックの管理を行うため、たとえばMPU2は図12示す如くの交代管理テーブルを使用する。図12の交代管理テーブル中、「不良ブロック」の欄には上記不良ブロックのアドレスが格納され、「交代ブロック」の欄には、当該不良ブロックのデータが割り付けられた交代ブロックのアドレスが格納される。
【0055】
図13,図14,図15は交代処理の例を説明するための図である。図13は、ユーザ領域の00000012および00000014のアドレスの2個のブロックに交代処理を実施した場合の例を示す。当該交代処理の結果、交代領域のxxxxxxxxおよびyyyyyyyyのアドレスのブロックがそれぞれ交代ブロックとして割り付けられている。この状態でアドレス00000010〜00000015のブロックに対しReadコマンドを実行する場合について説明する。比較のため、図14に、不良ブロックが生じず、交代処理を行わない場合について示す。図14の場合、アドレス00000010〜00000015の6個のブロックに対し、一回のシーク動作でRead動作を行うことができる。これに対し交代処理を行った場合の例を図15に示す。図15の例の場合、まずアドレス00000010〜00000011の2個のブロックに対し、シーク動作およびRead動作を行う(ステップR1)。次にアドレスxxxxxxxxのブロックに対し、シーク動作およびRead動作を行う(ステップR2)。次にアドレス00000013のブロックに対し、シーク動作およびRead動作を行う(ステップR3)。次にアドレスyyyyyyyyのブロックに対し、シーク動作およびRead動作を行う(ステップR4)。次にアドレス00000015のブロックに対し、シーク動作およびRead動作を行う(ステップR5)。上記の如く、図14に示す不良ブロックが無い場合と比較すると、通常は1回のシーケンシャルなRead動作で済む処理が、ステップR1〜R5の計5回に分割してRead動作を行うことになる。更に、コマンド毎にシーク時間と回転待ち時間とが発生する。
【0056】
図16は予測交代時間の算出の動作の流れを示す。図16中、ステップS21にて、MPU2は受信したコマンドを解析する。次にステップS22にてMPU2は図12の交代管理テーブルを参照し、当該コマンドの実行に伴うアクセスの範囲内に交代処理済のブロックが含まれるか否かを判断する。交代処理済みのブロックとは、既に不良ブロックとして判断され交代ブロックに対するデータの割付がなされたブロックを言う。ステップS22の判断結果がNOの場合、アクセス範囲に交代処理済みのブロックは含まれないため、予測交代時間として「0」を得る(ステップS29)。
【0057】
他方ステップS22の結果がYESの場合、アクセス範囲に交代処理済みのブロックは含まれるため、MPU2はステップS23にて、当該コマンドの実行に伴うアクセス範囲内に含まれる交代処理済みのブロックが複数個か否かを判断する。判断結果がYESの場合、MPU2はステップS24にて、当該コマンドの実行に伴うアクセス範囲内に含まれる交代処理済みのブロックに対し、連続で交代ブロックに割り付けられているか否かを判断する。ステップS23の判断結果がNOの場合、MPU2はステップS25に移行する。またステップS24の判断結果がNOの場合にもMPU2はステップS25に移行する。ステップS25でMPU2は、交代処理済みのブロックが上記アクセス範囲の最初のブロックおよび最後のブロックのうちのいずれかのブロックであるか否かを判断する。
【0058】
ステップS25の判断結果がNOの場合、ステップS26でMPU2は、以下の演算式(4)で予測交代時間を求める。
予測交代時間=予測シーク時間×2+予測回転待ち時間 ・・・(4)
すなわち、たとえば図13の例においてコマンドの実行によりアドレス00000010〜00000015の6個のブロックにアクセスする場合を想定する。当該場合、アドレス00000012の不良ブロックに対し割り付けられた交代ブロックxxxxxxxxへのアクセスの際、ユーザ領域から交代領域へのシーク動作と、交代領域からユーザ領域へ戻るシーク動作とが要される。すなわちシーク動作が2回要される。したがって当該例の如く交代処理済みのブロックがアクセス範囲の最初や最後のブロックでない場合(ステップS25のNO)、当該交代処理済みのブロックについての予測交代時間には、上記演算式(4)に示すように、予測シーク時間に2を乗ずる必要がある(ステップS26)。
【0059】
他方、交代処理済みのブロックがアクセス範囲の最初や最後のブロックの場合(ステップS25のYES)、最初のブロックであれば、交代領域からユーザ領域へ戻るシーク動作のみが要される。また最後のブロックであれば、ユーザ領域から交代領域へのシーク動作のみが要される。すなわちシーク動作は一回のみ要される。したがって当該場合についての予測交代時間には、以下の演算式(5)に示すように、予測シーク時間に2を乗ずる必要がない(ステップS27)。
予測交代時間=予測シーク時間+予測回転待ち時間 ・・・(5)
また連続で交代ブロックに割り付けられている場合(ステップS24のYES)、複数の連続する交代ブロックの最初と最後の2回のシーク動作のみが要される。従って当該場合も交代処理済みのブロックごとに2回のシーク動作は要されず、上記演算式(5)が適用される(ステップS27)。
【0060】
ステップS28でMPU2は、当該コマンドのアクセス範囲内に他の交代処理済みのブロックが存在するか否かを判断する。判断結果がYESの場合、MPU2はステップS23に戻り、当該交代処理済みのブロックにつき、ステップS23,S24,S25,S26,S27にて上記同様にして予測交代時間を求める。ステップS29でMPU2は、当該ステップS29に至るまでの間に、交代処理済みのブロックごとに、ステップS26またはステップS27にて得られた予測交代時間を、上記交代処理済みのブロック全部について合計する。そしてMPU2は当該合計値を当該コマンドについての予測交代時間として得る(ステップS29)。尚ステップS26,S27において行う上記演算式(4)、(5)中の予測シーク時間については、図6,図7,図8とともに上述の予測基本実行時間の算出の際に求めた方法と同様の方法で図7のシーク時間テーブルを参照して求める。
【0061】
次に上記予測コマンド実行時間を算出する際に考慮するキャッシュ制御について説明する。図4のバッファ5にはキャッシュデータが格納され、当該キャッシュデータは、たとえば図17に示す如くのキャッシュテーブルに登録されている。当該キャッシュテーブルはRAM6に格納されている。当該キャッシュテーブル中、「先頭ブロック」、「最終ブロック」の各欄には、有効なキャッシュデータが対応する、磁気ディスク12上のブロックの先頭ブロックおよび最終ブロックのそれぞれのアドレスが格納される。また当該キャッシュテーブル中の「バッファアドレス」の欄には、当該キャッシュデータが格納されているバッファ5内のアドレスが格納されている。
【0062】
コマンドの実行に伴うアクセス範囲がキャッシュにヒットする場合該当するデータについては実際に磁気ディスク12にアクセスする必要がない。すなわち図17のキャッシュテーブル中に、当該アクセス範囲に含まれるデータに対応するキャッシュデータが登録されている場合、当該キャッシュデータに対応するデータについては実際に磁気ディスク12にアクセスする必要がない。たとえば前記コマンドがReadコマンドであれば、バッファ5から直接ホスト装置20へ対象のデータを転送することができる。更に、コマンドに伴うアクセス範囲のデータの全てに対応するキャッシュデータがキャッシュテーブルに登録されていた場合、すなわちフルヒットの場合、当該コマンドについての予測基本実行時間には予測シーク時間を含める必要がない。図18は、キャッシュ制御を考慮した場合の予測基本実行時間の算出の流れを示す。
【0063】
図18中、ステップS41,S42,S43,S45,S46,S48,S49は、それぞれ上述した図8中、ステップS1,S2,S3,S4、S5、S6,S7と同様の内容を有し、重複する説明を省略する。
【0064】
図18中、ステップS46にてMPU2は、図17のキャッシュテーブル中、コマンドの実行に伴うアクセス範囲と一部でも合致するキャッシュデータが登録されているかを判断する。判断の結果がNOの場合、MPU2はステップS48に移行する。この場合、予測基本実行時間の算出においてキャッシュ制御は考慮されず、図8の動作と結果的に同様となる。
【0065】
他方、図17のキャッシュテーブル中、コマンドの実行に伴うアクセス範囲と一部でも合致するキャッシュデータが登録されていた場合(ステップS46のYES、すなわち、いわゆるキャッシュヒットの場合),MPU2はステップS47に移行する。ステップS47でMPU2は、図17のキャッシュテーブル中、コマンドの実行に伴うアクセス範囲の全てを含むキャッシュデータが登録されている(すなわち、いわゆるフルヒットの場合)か否かを判断する。上記フルヒットの場合とは、図17のキャッシュテーブル中、あるキャッシュデータの先頭ブロックと最終ブロックとの間の範囲が、コマンドの実行に伴うアクセス範囲を全て含む場合である。上気フルヒットの場合、既にバッファ5上にあるデータをホスト装置20に転送するだけで当該コマンドを実行したことになる。したがって予測シーク時間を予測基本実行時間に含める必要がない。ここでフルヒットの場合にのみキャッシュ制御を考慮して予測シーク時間を不含とする理由は以下の通りである。すなわちフルヒットでなく、アクセス範囲の一部のみがヒットの場合には、アクセス範囲中、キャッシュデータが存在しない部分について実際に磁気ディスクへアクセスする必要があるため、結果的に全くヒットしない場合の実行時間と変わらなくなるからである。
【0066】
したがってステップS47の判断結果がNOの場合、MPU2はステップS48に移行する。この場合も、予測基本実行時間の算出においてキャッシュ制御は考慮されず、図8の動作と結果的に同様となる。
【0067】
他方、ステップS47の判断結果がYESの場合(すなわちフルヒットの場合)、MPU2はステップS48をスキップし、予測シーク時間を加算しない以下の演算式(6)で予測基本実行時間を算出する。
予測基本実行時間=予測実行時間×転送ブロック数 ・・・(6)
但し
予測実行時間=予測媒体アクセス時間+予測データ転送時間 ・・・(2)
実施例では上記した予測基本実行時間、予測リトライ時間、予測交代時間およびキャッシュ制御を考慮して現在コマンドキューテーブルに登録されている個々のコマンド、すなわち未処理のコマンドについて予測コマンド実行時間を求める。更にコマンド毎の予測コマンド実行時間を現在コマンドキューテーブルに登録されている全ての未処理のコマンド、すなわち未処理の全コマンドについて合計した総予測実行時間を求める。そして求めた総予測実行時間をホスト装置においてタイムアウトが発生するタイムアウト値と比較し、総予測実行時間がタイムアウト値以上の場合、ホスト装置20においてタイムアウトが発生するおそれがあると判定する。当該判定に至る一連の動作をタイムアウト判定動作と称する。タイムアウト判定動作において、ホスト装置20にてタイムアウトが生ずると判定した場合、MPU2はホスト装置20に対し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。具体的にはホスト装置20に対しキューフルステータス等を応答する。その結果ホスト装置では最後に送信したコマンドが磁気記憶装置20により実行されないことを認識する。その結果ホスト装置におけるタイムアウトの発生が効果的に防止される。タイムアウトは当該コマンドが実行されるとの認識に基づいてホスト装置20において発生されるものだからである。タイムアウト判定動作の詳細について図20とともに後述する。
【0068】
図19はコマンドキューテーブルにおけるコマンドの登録状況の一例について示す。図19の場合、現在コマンドキューテーブルにはキュー1〜キュー5に対し、それぞれ計5個のコマンドが登録されている。これら5個のコマンドのうち、キュー1に登録されているコマンドは1ブロック分の情報をWriteするコマンドであり、予測コマンド実行時間が6.5msとして求められる。同様にキュー2に登録されているコマンドはFFFFブロック分の情報をReadするコマンドであり、予測コマンド実行時間が370.5msとして求められる。キュー3に登録されているコマンドは1ブロック分の情報をReadするコマンドであり、予測コマンド実行時間が6.5msとして求められる。キュー4に登録されているコマンドはFFFFブロック分の情報をWriteするコマンドであり、予測コマンド実行時間が375.5msとして求めらいる。キュー5に登録されているコマンドは1ブロック分の情報をWriteするコマンドであり、予測コマンド実行時間が6.5msとして求められる。上記キュー1〜キュー5のそれぞれの登録されている計5個のコマンドは、ホスト装置20から磁気記憶装置10が受信した順に、キュー1、キュー2、キュー3,キュー4,キュー5の順に、登録されたものである。当該5個のコマンドは、受信した順で磁気記憶装置10が実行する。コマンドキューテーブル中、磁気記憶装置10が実行し処理済みとなったコマンドは順次削除される。
【0069】
図20は実施例におけるタイムアウト判定動作の流れを示す。MPU2はステップS61でホスト装置20からのコマンドを受信すると、当該受信したコマンドについて予測コマンド実行時間を算出する(ステップS62,S63,S64、S65)。より具体的には、MPU2は当該コマンドについて予測基本実行時間を求める(ステップS62)。予測基本実行時間の求め方は上記の如く、キャッシュ制御を考慮しない図8の方法と、キャッシュ制御を考慮する図18の方法とがある。図20の場合、図18の方法を採る。図18の方法を採る場合、MPU2は図6,図7,図8,図17,図18とともに上述した方法で予測基本実行時間を求める。
【0070】
次にMPU2は当該コマンドについて予測リトライ時間を求める(ステップS63)。予測リトライ時間は図9,図10,図11とともに上述した方法で求める。
【0071】
次にMPU2は当該コマンドについて予測交代時間を求める(ステップS64)。予測交代時間は図12,図16とともに上述した方法で求める。
【0072】
次にMPU2はステップS65にて、以下の演算式により、上記の如くに求めた予測基本実行時間、予測リトライ時間および予測交代時間を合計し、当該コマンドについて予測コマンド実行時間を求める。
予測コマンド実行時間=予測基本実行時間+予測リトライ時間+予測交代時間
そしてMPU2は、以下の演算式により、既に今回受信した当該コマンド以前に受信したコマンドについての総予測実行時間に、今回受信した当該コマンドについて上記の如く求めた予測コマンド実行時間を加算して総予測実行時間を更新する。上記総予測実行時間は、MPU2が既に今回受信した当該コマンド以前に受信したコマンドの各々について上記同様にして求めた予測コマンド実行時間を、コマンドを受信するたびに加算して求めたものである。MPU2はコマンドを受信するたびに総予測実行時間を更新し、その都度コマンドキューテーブルに格納する(図19参照)。
総予測実行時間=総予測実行時間+予測コマンド実行時間
次にMPU2はステップS66にて、上記更新した総予測実行時間をタイムアウト値と比較する。比較の結果総予測実行時間がタイムアウト値より小さい場合(ステップS66のNO),MPU2は今回受信したコマンドをコマンドキューテーブルに追加して登録する。
【0073】
たとえば図19の例の場合、キュー1〜キュー5の計5個のコマンドのそれぞれの予測コマンド実行時間を合計すると、総予測実行時間として765.5[ms]が得られる。たとえばタイムアウト値を1000[ms]とすると、当該総予測実行時間はタイムアウト値より小さい。このため、5番目のコマンドを受信した際の、図20のステップS66の判定結果はNOとなる。
【0074】
他方ステップS66の判定結果がYESの場合、すなわち総予測実行時間がタイムアウト値以上の場合、MPU2はステップS68にて、ホスト装置20に対しキューフルステータス等のエラーを報告し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。したがってMPU2は今回受信したコマンドをコマンドキューテーブルに追加せず、今回受信したコマンドを実行することはない。
【0075】
すなわち仮に今回受信したコマンドを受信したままにしておくと、上記の如く総予測実行時間がタイムアウト値以上となる(ステップS66のYES)。すなわち今回受信したコマンドを受信した時点から今回受信したコマンドの実行が完了する時点までの経過時間がタイムアウト値以上となり、ホスト装置20で今回受信したコマンドについてタイムアウトが生ずる可能性が高い。ここで今回受信したコマンドが受信された時点から今回受信されたコマンドの実行が完了する時点までの経過時間には、今回受信されたコマンド以前に受信された未処理の全てのコマンドの実行に要する時間が含まれる。
【0076】
実施例では上記の如く総予測実行時間がタイムアウト値以上となる場合には、受信した未処理のコマンドが限界を超えた旨を報告する。その結果ホスト装置は最後に送信したコマンドが実行されないことを認識し、よってホスト装置20においてタイムアウトが生ずることが効果的に防止され得る。タイムアウトは当該コマンドが実行されるとの認識に基づいてホスト装置20において発生されるものだからである。
【0077】
他方、総予測実行時間がタイムアウト値未満の場合(ステップS66のYES)、今回受信したコマンドを受信した時点から今回受信したコマンドの実行が完了する時点までの経過時間がタイムアウト値内に収まる可能性が高い。したがってホスト装置20で今回受信したコマンドについてタイムアウトが生ずる可能性は低い。したがって総予測実行時間がタイムアウト値未満の場合(ステップS66のYES)、そのままコマンドキューテーブルに追加して登録する(ステップS67)。
【0078】
ここでコマンドキューテーブルにて登録可能なコマンドの数の上限を設けることが可能である。その場合、ステップS66における判断とは別に、上記上限を超える場合には新たにコマンドはコマンドキューテーブルにて登録されない。この場合もキューフルステータスがホスト装置20に応答されるため、ホスト装置20は最後に送信したコマンドは実行されないことを認識する。他方、上記上限以内の場合であっても、ステップS66における判断結果がYESの場合には、受信した未処理のコマンドが限界を超えた旨がキューフルステータス等によりホスト装置20に応答される。従ってこの場合もホスト装置20は最後に送信したコマンドは実行されないことを認識する。
【0079】
次に図21,22とともに、図20とともに上述したタイムアウト判定動作につき、実際の数値例を使用して再度説明する。ここではホスト装置20においてタイムアウトするタイムアウト値を1000msと想定する。図22に示される如く、現在、コマンド-1、2、3と受信しており、総予測実行時間は956msでタイムアウト値以内である。したがって全ての未処理のコマンドがコマンドキューテーブルのキュー1〜3に登録されている。
【0080】
次にMPU2がホスト装置20からコマンド-4を受信してコマンド解析を行う(図21のステップS81、図20のステップS61)。そして当該コマンドの予測基本実行時間が130msと得られ、アクセス範囲中にエラー発生ブロックが存在した為、予測リトライ時間が20msと得られた。またアクセス範囲中に交代処理済みのブロックは存在しなかったので予測交代時間は0msと得られた(図21のステップS82、図20のステップS62、S63,S64)。したがてコマンド-4の予測実行時間は、130ms+20ms+0ms=150msとなる(図21のステップS83,図20のステップS65)。次にコマンドキューテーブルから現在の総予測実行時間を参照し、コマンド-4を含んだ場合の総予測実行時間を計算すると956ms+150ms=1106msとなる(図21のステップS83,図20のステップS65)。 したがってタイムアウト値1000ms以上となっている(図21のステップS84,図20のステップS66のYES)。この為、受信した未処理のコマンドが限界を超えた旨をホスト装置20に報告する。具体的にはホスト装置20に対しキューフルステータスを報告する。その結果ホスト装置は最後に送信したコマンドが実行されないことを認識し、タイムアウトが防止される。尚図22の例の場合、コマンドキューテーブルにて登録可能なコマンドの数の上限が5であり、現在登録されているコマンドは3個であるため、上記コマンド-4を含めても当該上限以内に収まる。しかしながら図21のステップS84,図20のステップS66のYESの判定により、キューフルステータスが応答され、受信した未処理コマンドが限界を超えた旨がホスト装置20に報告される(図21のステップS85)。
【0081】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
コマンド受信手段が、情報処理装置から、記憶装置に対する情報の記録コマンドおよび前記記憶装置からの情報の再生コマンドのうちの少なくとも何れかのコマンドを受信する段階と、
コマンド実行時間予測手段が、前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求める段階と、
総予測実行時間算出手段が、前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める段階と、
判断手段が、前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する段階と、
エラー応答手段が、前記判断手段が総予測実行時間が一定の値以上であると判断した際、前記コマンド受信手段がエラーを応答する段階とを有する記憶装置の制御方法。
(付記2)
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める付記1に記載の記憶装置の制御方法。
(付記3)
前記記憶装置はディスク装置とされる付記1または2に記載の記憶装置の制御方法。
(付記4)
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段とを有する記憶装置。
(付記5)
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める付記4に記載の記憶装置。
(付記6)
ディスク装置とされる付記4または5に記載の記憶装置。
(付記7)
記憶装置の動作を制御するコンピュータを、
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段として機能させるための記憶装置制御プログラム。
(付記8)
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める付記7に記載の記憶装置制御プログラム。
(付記9)
前記記憶装置はディスク装置とされる付記7または8に記載の記憶装置制御プログラム。
【産業上の利用可能性】
【0082】
なお上記実施例は磁気記憶装置、より具体的には磁気ディスク装置であったが、実施例はこれに限られない。光ディスク装置、光磁気ディスク装置、磁気テープ記憶装置、半導体記憶装置等、種々の記憶装置の実施例が可能である。
【符号の説明】
【0083】
1 インタフェース制御部
2 MPU(マイクロプロセッサユニット)
3 ドライブ制御部
4 ドライブ部
5 バッファ
6 RAM
7 フラッシュROM
10 磁気記憶装置
12 磁気ディスク
13 磁気ヘッド
20 ホスト装置
【技術分野】
【0001】
実施例は記憶装置の制御方法、記憶装置および記憶装置制御プログラムに関する。
【背景技術】
【0002】
記憶装置の制御方法として以下の構成が知られている。すなわちアクセス時間が最小となるようにコマンド実行順を変更するものであって、特に高速に各コマンド間のアクセス時間を予測計算する。ここではコマンドキューバッファに格納された各コマンドと実行中のコマンドとのアクセス時間をシーク時間テーブルとセクタ位置テーブルを用いて計算する。
【0003】
また以下の構成も知られている。すなわちホスト装置は磁気記憶装置から受信したパラメータ情報に基づいてハードディスク装置に対するコマンドの実行時間を予測し、この予測結果に基づいてコマンドの並び替えを行う。
【0004】
また以下の構成も知られている。すなわち複数のディスク状記録媒体を有するデータ記憶装置に対して、複数のアクセス要求順序を並び替えたアクセス要求群単位によるアクセスを行う。そして既にアクセスを終了したアクセス要求群の最終ディスクヘッド位置と次に実行するアクセス要求群のディスクヘッド位置との関係に基づいてディスクヘッドの移動方向を選択する。
【0005】
また以下の構成も知られている。すなわちデータ転送の中断を最小限に抑えつつ最も有効なリトライを行うという課題の解決のため、リトライが必要なときは負荷検出手段によって検出された負荷レベルに応じてリトライ処理の内容をリトライテーブルより取得する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2001−154809号公報
【特許文献2】特開2001−222380号公報
【特許文献3】特開平11−345094号公報
【特許文献4】特開2000−148410号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
記憶装置が情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信した際に当該コマンドについてのタイムアウトの発生を防止することを目的とする。
【課題を解決するための手段】
【0008】
実施例によればコマンドの実行に着手してから当該実行が完了するまでに要されるコマンド実行時間を予測し、全ての未処理のコマンドについて合計した総予測実行時間を得、総予測実行時間が一定の値以上か否かを判断し、総予測実行時間が一定の値以上であると判断した際、エラーを応答する。
【発明の効果】
【0009】
予測したコマンド実行時間を全ての未処理のコマンドについて合計して得た総予測実行時間が一定の値以上か否かを判断し判断結果に応じてエラーを応答するため、確実にタイムアウトの発生を防止し得る。
【図面の簡単な説明】
【0010】
【図1】コマンドキューテーブルによる制御について説明するための図である。
【図2】参考例におけるキューフル状態について説明するための図である。
【図3】参考例においてタイムアウトが検出される場合について説明するための図である。
【図4】実施例の記憶装置としての磁気記憶装置のハードウェア構成例を説明するためのブロック図である。
【図5】図4に示す磁気記憶装置のディスク駆動機構の構成例を説明するための平面図である。
【図6】基本時間テーブルについて説明するための図である。
【図7】シーク時間テーブルについて説明するための図である。
【図8】予測基本実行時間を算出する動作の流れを説明するためのフローチャート(その1)である。
【図9】リトライテーブルについて説明するための図である。
【図10】エラー発生箇所テーブルについて説明するための図である。
【図11】予測リトライ時間を算出する動作の流れを説明するためのフローチャートである。
【図12】交代管理テーブルについて説明するための図である。
【図13】交代割り付け処理について説明するための図である。
【図14】交代割り付けがなされなかった場合のアクセス手順について説明するための図である。
【図15】交代割り付けがなされた場合のアクセス手順について説明するための図である。
【図16】予測交代時間を算出する動作の流れを説明するためのフローチャートである。
【図17】キャッシュテーブルについて説明するための図である。
【図18】キャッシュ制御を考慮して予測基本実行時間を算出する動作の流れを説明するためのフローチャート(その2)である。
【図19】コマンドキューテーブルについて説明するための図である。
【図20】タイムアウト判定動作の流れを説明するためのフローチャートである。
【図21】タイムアウト判定動作を数値例を用いて説明するための図(その1)である。
【図22】タイムアウト判定動作を数値例を用いて説明するための図(その2)である。
【発明を実施するための形態】
【0011】
以下に実施例について詳細に説明する。
【0012】
実施例によれば、ホスト装置からのコマンド受信時、リトライ発生状況録、交代情報、キャッシュヒット予測、転送ブロック数等の情報を考慮してコマンド実行時間を予測する。ここでコマンド実行時間とは、当該コマンドの実行が開始されてから当該実行が完了するまでに要される時間を言う。またコマンド実行時間の予測値を予測コマンド実行時間と称する。
【0013】
また実施例によれば、当該予測した個々のコマンドの予測コマンド実行時間の合計により、現在コマンドキューテーブルに登録されている総コマンドの実行時間(総予測実行時間)を算出する。
【0014】
また実施例によれば、当該算出した総予測実行時間が一定の値以上となった場合、受信した未処理コマンドが限界を超えた旨を、キューフルステータスや特定のセンスコード等により報告する。
【0015】
ここで実施例はコマンドキューテーブルによるコマンド管理機能を有する磁気記憶装置の制御に係る。
【0016】
近年磁気記憶装置に対してコマンドを発行するホスト装置としての情報処理装置の性能が向上し、磁気記憶装置に対する時間的な要求が厳しくなっている。磁気記憶装置においてはホスト装置から発行されるコマンドをコマンドキューテーブルで管理し処理の高速化を図ってきた。実施例では上記コマンドキューテーブルでコマンドを管理するに当たり、個々のコマンドのコマンド実行時間の増減の影響を考慮する。これはコマンドキューテーブルで管理しているコマンドを実行する際、たとえばリトライが多発したりすると実行時間の増大が生じ、他のコマンドの実行開始時間が遅延し、結果的に要求元のホスト装置においてタイムアウトが生ずるおそれがあるからである。
【0017】
図1は従来のコマンドキューテーブルを利用した制御について説明するための図である。図1中、ホスト装置からコマンドが発行されると磁気記憶装置は当該コマンドを受信し、当該コマンドを自己が有するコマンドキューテーブルに順番に登録する。図1の左側に示す如く、ホスト装置からコマンド−1、コマンド−2が順に発行されると、磁気記憶装置は当該コマンド−1,コマンド−2を上記の順で受信し、自己が有するコマンドキューテーブルに登録する。当該コマンドキューテーブルはキュー1〜5の5コマンド分のサイズを有する。当該コマンドキューテーブル中、キュー1,キュー2にそれぞれ上記コマンド−1、コマンド−2の2個のコマンドが、上記受信した順で登録され、他のキュー3〜キュー5は空いている。磁気記憶装置は当該コマンド−1、コマンド−2を、上記登録した順、すなわちコマンド−1、コマンド−2の順で順次実行する。磁気記憶装置がコマンド−1を実行すると、図1の右側にしめす如く、コマンドキューテーブル中、処理済みのコマンド−1が削除され、キュー1には次に実行されるコマンドとして、コマンド−2が登録された状態となる。
【0018】
このようなコマンドキューテーブルによる制御においては、たとえば以下に説明する参考例の制御方法を採ることができる。すなわち上記コマンドキューテーブルのキュー1〜キュー5により、無条件でホスト装置からのコマンドを登録する。図2はキュー1〜キュー5のコマンドキューテーブル中、コマンド−1〜コマンド−5の計5個のコマンドが登録された状態を示す。図2の状態において更にホスト装置から次のコマンド−6が発行されると、コマンドキューテーブルにおいて更に登録する余地がないため、たとえば周知のSCSI等の制御においては、磁気記憶装置がホスト装置に対しキューフルステータスを応答する。磁気記憶装置は上記キューフルステータスの応答を行うことにより、受信済み未処理のコマンドが限界を超えた旨を示し、最後に受信したコマンドを実行しない旨を示す。
【0019】
図3は、図2の状態、すなわち5個のコマンドを管理可能なコマンドキューテーブルに既に5個のコマンドが格納された状態で、実際に磁気記憶装置が当該5個のコマンドを順次実行した場合の例を示す。図3の例の場合、磁気記憶装置がコマンド−2の実行時リトライが多発し、またコマンド−4の実行時にはリトライの多発に加えて交代処理が発生した。なおリトライ、交代処理については後述する。その結果ホスト装置から見た場合、コマンド−2以降、徐々にコマンド応答が遅延し、その結果コマンド−5に対するコマンド応答が相当遅延し、ホスト装置でタイムアウトが発生した。実施例は当該問題を解決し、ホスト装置においてタイムアウトが生ずることを防止する。
【0020】
実施例によれば、磁気記憶装置がホスト装置からコマンドを受信した際、当該コマンドにつき、コマンド実行時間を予測する。そしてコマンド実行時間を予測する際、過去にリトライが発生した磁気ディスク上の位置に関する記録、交代情報、キャッシュヒットに対する予測、コマンドの実行に必要な転送ブロック数等を考慮して行う。
【0021】
次に当該予測された各コマンド実行時間(すなわち予測コマンド実行時間)を、現在コマンドキューテーブルに登録されている全コマンド、すなわち未処理の全コマンドについて合計する。当該合計を総予測実行時間と称する。
【0022】
次に総予測実行時間が一定の値以上となったか否かを判定し、総予測実行時間が一定の値以上となった場合、磁気記憶装置はホスト装置に対し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。具体的にはホスト装置に対しキューフルステータス、特定のセンスコード等を応答する。
【0023】
実施例によればこのように、ホスト装置からコマンドを受信した際に当該コマンドの実行時間を予測し、コマンドキューテーブルに登録されている全コマンド、すなわち未処理の全コマンドの実行時間の予測(すなわち予測コマンド実行時間)の合計である総予測実行時間を算出する。そして当該総予測実行時間がホスト装置においてタイムアウトが発生する時間以上か否かを判断する。総予測実行時間がホスト装置においてタイムアウトが発生する時間以上の場合、ホスト装置に対し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。ホスト装置は当該報告を受け、最後に送信したコマンドが実行されないことを認識する。このような制御を行うことにより、ホスト装置から受信したコマンドの実行中にホスト装置においてタイムアウトが生ずる事態が防止される。タイムアウトは当該コマンドが実行されるとの認識に基づいて発生されるものだからである。
【0024】
実施例の磁気記憶装置の制御方法によれば、受信したコマンドの各々についての実行時間を予測するとともに、当該各コマンドの予測コマンド実行時間の合計である総予測実行時間を使用してコマンドキューテーブルによる制御を行う。その結果ホスト装置におけるタイムアウトの発生を低減することが可能である。以下に実施例の磁気記憶装置の制御方法の詳細を示す。
【0025】
実施例の磁気記憶装置の制御方法では、磁気記憶装置がホスト装置からのコマンド受信時、当該コマンドについて予測コマンド実行時間を算出する。より具体的には、各コマンドについての基本的な実行時間である予測基本実行時間を求め、当該コマンドの実行において変動する可能性がある時間の項目について考慮した上で、当該コマンドについての予測コマンド実行時間を求める。
【0026】
図4は、本発明の一実施例における磁気記憶装置のハードウェア構成例を示すブロック図である。実施例における磁気記憶装置10は、より具体的には図5とともに後述するように磁気ディスク装置である。
【0027】
磁気記憶装置10は、図4に示す如くに相互に接続されたインタフェース制御部1、MPU(マイクロプロセッサユニット、以下同様)2、ドライブ制御部3、ドライブ部4、バッファ5、RAM6および、フラッシュROM7を有する。
【0028】
インタフェース制御部1はホスト装置20と磁気記憶装置10との間のデータやコマンドのやり取りを制御する。MPU2は磁気記憶装置10全体の制御を行う制御部(または、制御手段)として機能する。またMPU2は図19とともに後述するコマンドキューテーブルを使用してホスト装置20から受信したコマンドの管理を行う。ドライブ制御部3は、MPU2の制御下でドライブ部4の制御を行う。バッファ5は、ホスト装置20と磁気記憶装置10との間でやり取りされる各種データやコマンドを一時的に格納する。RAM6は、MPU2による演算処理の中間結果等の各種データを格納する。RAM6に格納されるデータには、後述するリトライテーブル、エラー発生箇所テーブル、交代管理テーブル、キャッシュテーブル等の各種データが含まれる。フラッシュROM7は、MPU2が実行するプログラムやデータを格納する。
【0029】
次に図5とともに、磁気ディスク装置である磁気記憶装置10のディスク駆動機構の構成例について説明する。当該ディスク駆動機構は図4に示されているドライブ部4に含まれる。
【0030】
図5に示される如く、磁気ディスク装置である磁気記憶装置10はスピンドルモータ(図示を省略)、スピンドルモータによって回転される回転軸11、回転軸11に装着される磁気記憶媒体としての磁気ディスク12を有する。磁気記憶装置10は更に、磁気ディスク12に対向して配置され、先端に磁気ヘッド13を備えたヘッドスライダ14、アーム軸16、ヘッドスライダ14を先端に固着してアーム軸16を中心に磁気ディスク12上を水平に移動するアーム15を有する。磁気記憶装置10は更にアーム15を駆動して水平移動させるためのアクチュエータ17を有する。ヘッドスライダ14、アーム軸16、アーム15、およびアクチュエータ17は、磁気ディスク12上で磁気ヘッド13を移動させるヘッド移動機構として機能する。
【0031】
図5の構成において磁気ディスク12に対して情報の記録または再生を行う場合には、磁気回路で構成されたアクチュエータ17によりアーム15が駆動される。そしてヘッドスライダ14の先端に設けられた磁気ヘッド13が回転状態にある磁気ディスク12上の所望のトラックに位置決めされる。磁気ヘッド13には、記録素子とリード素子とが形成されている。磁気ディスク12上の所望のトラックに位置決めされた磁気ヘッド13により、当該トラック上の所望のブロック(セクタとも称する)に対し、情報の記録または再生が行われる。所望のブロックに情報が記録される場合、情報は図4に示されるホスト装置20からインタフェース制御部1、MPU2,ドライブ制御部3を介しドライブ部4に転送され、磁気ヘッド13の記録素子により磁気ディスク12上の所望のブロックに記録される。尚情報がホスト装置20から上記の経路で磁気ヘッド13の記録素子に送られる間にドライブ制御部3等において適宜行われる信号変換の具体的な内容については周知の技術を適用可能であり、ここでの説明を省略する。
【0032】
また磁気ディスク12の所望のブロックから情報が再生される場合、情報が磁気ヘッド13のリード素子で所望のブロックから取り出され、ドライブ部4からドライブ制御部3、MPU2,インタフェース制御部1を介しホスト装置20へと転送される。尚情報が磁気ヘッド13のリード素子で取り出され上記の経路でホスト装置20に送信される間ドライブ制御部3等において適宜行われる信号変換の具体的な内容については周知の技術を適用可能であり、ここでの説明を省略する。尚、磁気記憶装置10のハードウェア構成は図4、図5に示す構成に限定されるものではなく、後述する動作の実施が可能であれば他の構成でもよい。
【0033】
以下に磁気記憶装置10がホスト装置20から受信したコマンドを実行する際の基本的な動作の流れについて説明する。
【0034】
図4のホスト装置20から、磁気記憶装置10がコマンドを受信した場合、インタフェース制御部1を経由してコマンドがバッファ5に格納される。次にMPU2がコマンドを解析し、コマンドの内容に応じた制御を実施する。例えば、受信したコマンドがReadコマンド、Writeコマンド等の媒体アクセス系のコマンドの場合、MPU2が当該コマンドに係るアクセス開始ブロックアドレスと転送ブロック数とを認識する。そしてMPU2はドライブ制御部3経由でドライブ部4に対し、上記アクセス開始ブロックアドレスのブロックに対するシーク命令を発行し、前記転送ブロック数分のブロックのReadあるいはWriteを指示する。たとえばReadコマンドの場合、当該指示に応じてドライブ部4から読み出されたブロックのデータは一旦バッファ5へ格納され、その後インタフェース制御部1を経由してホスト装置20へと転送される。
【0035】
次に、実施例において、各コマンドについての実行時間、すなわち当該コマンドの実行が開始されてから完了する迄に要される時間の予測値である予測コマンド実行時間を算出する際に考慮する各種時間情報および、キャッシュ制御について説明する。上記各種時間情報とは、後述する予測基本実行時間、予測リトライ時間、および予測交代時間を含む。以下に個々に説明する。
【0036】
上記予測基本実行時間は、各コマンドが通常の状態で実行された場合に要される時間である。非媒体アクセス系のほとんどのコマンドの実行時間は一定である。非媒体アクセス系のコマンドとは、特に磁気記憶媒体、すなわち実施例の場合磁気ディスク12に対するアクセス動作を伴わない動作に対するコマンドを言う。上記の如く非媒体アクセス系のほとんどのコマンドの実行時間は一定であるため、予測基本実行時間は一定である。非媒体アクセス系のコマンドの予測基本実行時間を予測実行時間として図6に示される如くの基本時間テーブルに格納する。基本時間テーブルは予め対応する実績データ等を利用して作成しフラッシュROM7に登録しておく。他方後述する如く、媒体アクセス系のコマンドについては変動要素があるため、基本予測実行時間は変動する。
【0037】
次に実施例における、媒体アクセス系のコマンド、すなわちRead(すなわち再生)コマンドおよびWrite(すなわち記録)コマンドについての予測基本実行時間の求め方について述べる。媒体アクセス系のコマンドに係る予測基本実行時間は以下の演算式(1)で求める。
予測基本実行時間=予測シーク時間+予測実行時間×転送ブロック数 ・・・(1)
ここで
予測実行時間=予測媒体アクセス時間+予測データ転送時間 ・・・(2)
である。
【0038】
すなわち、図5の構成において、スピンドルモータで駆動され回転する磁気ディスク12上、アーム15がアクチュエータ17により駆動され磁気ヘッド13が磁気ディスク12の半径方向に沿って移動する。その結果磁気ヘッド13は磁気ディスク12のシリンダを横切り、すなわちトラックを横切ることでシーク動作を行い、所望のトラックに到達する。媒体アクセス系のコマンドの実行時、コマンドに含まれるアクセス開始ブロックアドレスと転送ブロック数とのうち、アクセス開始ブロックを有するトラックへシーク動作により磁気ヘッド13が移動される。当該シーク動作による磁気ヘッド13の移動に要される時間の予測値が予測シーク時間である。上記シーク動作により磁気ヘッド13が磁気ディスク12上の所望のトラックに到達した後、コマンドに含まれるアクセス開始ブロックアドレスと転送ブロック数とのうち、転送ブロック数分のブロックに磁気ヘッド13がアクセスする。当該磁気ヘッド13のアクセスにより、磁気ディスク12上のブロックに対する情報の取り出し或いは記録がなされる。磁気ヘッド13の磁気ディスク12上の所望のトラックへの到達以降、ブロックごとに媒体アクセスおよびデータ転送を行うのに要する時間の予測値が、媒体アクセス系のコマンドについての予測実行時間である。
【0039】
予測シーク時間については、図7に示す如くの、シーク距離に応じた所要シーク時間を登録したテーブルを予め作成してフラッシュROM7に登録しておく。尚予測シーク時間として、簡易的には、当該磁気記憶装置10の平均シーク時間を一律に使用する方法も可能である。
【0040】
実施例では、以下の演算式(1)、(2)
予測基本実行時間=予測シーク時間+予測実行時間×転送ブロック数 ・・・(1)
予測実行時間=予測媒体アクセス時間+予測データ転送時間 ・・・(2)
の演算における予測実行時間、すなわち(予測媒体アクセス時間+予測データ転送時間)の値として「1セクタ処理」に要する時間を登録しておく。すなわち当該予測実行時間を、図6のテーブル中、Read、Writeのそれぞれのコマンドについての予測実行時間として登録しておく。「1セクタ処理」とは1セクタ分の媒体アクセスおよびデータ転送の処理を言う。
【0041】
より具体的には、磁気記憶装置10がホスト装置20からコマンドを受信した際、MPU2が当該コマンドを解析する。MPU2はコマンドに含まれるアクセス開始ブロックアドレスとしての論理アドレスからシーク距離を求める。論理アドレスからシーク距離を求める場合、以下に示す方法で求める。まず以下の演算式により「目的シリンダ」を得る。
論理アドレス ÷(セクタ数/シリンダ)= 目的シリンダ
ここで(セクタ数/シリンダ)は1シリンダに含まれ得るセクタ数を意味する。次にMPU2はドライブ制御部3から、現在磁気ヘッド13が磁気ディスク12上、どのシリンダ上に位置するかの情報、すなわち現在のシリンダの情報を得る。MPU2は上記演算式により算出した目的シリンダと現在のシリンダとの差分を算出する。得られた差分が求めるシーク距離である。
【0042】
次にシーク距離に応じた所要時間を予測シーク時間として図7のテーブルから得、上記演算式(1)、(2)
予測基本実行時間=予測シーク時間+予測実行時間×転送ブロック数 ・・・(1)
予測実行時間=予測媒体アクセス時間+予測データ転送時間 ・・・(2)
を適用する。そして図6のテーブルで得られる予測実行時間(すなわち1セクタ分についての(予測媒体アクセス時間+予測データ転送時間))に処理セクタ数、すなわち転送ブロック数を乗じた値を加算して予測基本実行時間を得る。尚上記図7のテーブルはシーク時間テーブルであり、予め対応する実績データ等を利用して作成し、フラッシュROM7に登録しておく。
【0043】
図8は予測基本実行時間を算出する動作の流れを示す。図8中、MPU2はステップS1で受信したコマンドを解析し、ステップS2で図6の基本時間テーブルからコマンドに係る予測実行時間を求める。ステップS3で当該コマンドが媒体アクセス系のコマンドか否かを判断する。非媒体アクセス系のコマンドの場合、ステップS4で、予測基本実行時間として、図6の基本時間テーブルで得られた予測実行時間をそのまま採用する。他方媒体アクセス系のコマンドの場合、ステップS5でまず、上記演算式(1)の演算中、予測実行時間×転送ブロック数の演算を行う。次にステップS6にて、図7のシーク時間テーブルから予測シーク時間を得、演算式(1)を適用して予測基本実行時間を得る。MPU2はステップS4またはS7にて得られた予測基本実行時間をステップS7にて確定する。
【0044】
次に前記予測コマンド実行時間を算出する際に考慮する各種時間情報のうちの、予測リトライ時間について説明する。受信したコマンドが上記媒体アクセス系のコマンドの場合、図4のホスト装置20から受けたコマンドはインタフェース制御部1を経由してバッファ5に格納される。その後上記の如く、MPU2がコマンドを解析し、アクセス開始ブロックアドレスおよび転送ブロック数等の情報を得る。次にMPU2はドライブ制御部3を介しドライブ部4を使用して当該コマンドを実行する。ここで上記コマンド実行中にエラーが発生した場合、MPU2は、予め図4のRAM6に格納された図9に示される如くのリトライテーブルを参照し、いわゆるエラー回復処理、すなわちリトライ処理を実行する。
【0045】
ここで図9に示す如くのリトライテーブルとは、リトライ処理の実行順を示したものである。MPU2は各ステップのリトライ処理後に再度コマンドを実行し、その際エラーが生じなければリトライ処理を終了する。他方上記リトライ処理後の再度のコマンドの実行中に再びエラーが生じた場合、MPU2はリトライテーブル上、次のステップのリトライ処理を実行し、実行後再度コマンドを実行する。このようにリトライ処理後のコマンド実行中にエラーが生ずることが繰り返された場合、MPU2はリトライテーブルに示される実行順に順次各ステップのリトライ処理を実行する。たとえばステップ01の「オフセット−方向」は、磁気ヘッド13が位置する磁気ディスク12のトラック位置を所定方向に所定量移動した上で再度コマンドの実行を行う動作を示す。なおMPU2は、上記リトライテーブルに従ったリトライ処理を当該コマンドが正常に終了するか、或いは規定回数分のリトライ処理を実施するまで繰り返す。
【0046】
MPU2はリトライ処理を実行した際、該当するエラーが発生したブロックのアドレスおよび実施した一連のリトライ処理のステップ数の情報を、図10に示される如くのエラー発生箇所テーブルとして図4のRAM6やフラッシュROM7に記録する。図10のエラー発生箇所テーブル中、「エラー発生ブロック」の欄には、MPU2が実施したリトライ処理の対象ブロックのアドレスが格納される。図10のエラー発生箇所テーブル中、「リトライステップ」の欄には、上記リトライ処理の対象ブロックに対し実施した一連のリトライ処理のステップ数が格納される。
【0047】
また、実施例の如くの、磁気記憶装置10の媒体アクセス系のコマンドのリトライ処理においては「回転待ち時間」が生ずる。すなわち、コマンドの実行中にエラーが生じリトライ処理を行う場合、磁気ディスク12の回転により、磁気ディスク12上の処理対象ブロックが磁気13ヘッド下に次に到達するまでに時間が要され、当該所要の時間を「回転待ち時間」と称する。リトライ処理では当該回転待ち時間内にコマンドの実行に係る各種の設定等を変更して再度磁気ディスク12にアクセスを行う。当該回転待ち時間はリトライ処理のステップ毎に生じる。このためリトライ処理に要すると予測される予測リトライ時間は以下の演算式(3)で求める。
予測リトライ時間=リトライステップ数×予測回転待ち時間 ・・・(3)
ここでリトライステップ数とは、MPU2が実施した一連のリトライ処理のステップ数を意味する。また予測回転待ち時間とは、上記回転待ち時間の予測値である。
【0048】
予測回転待ち時間は磁気記憶装置に固有の値であり、磁気記憶装置の回転数から算出し得る。例えば、磁気記憶装置10の磁気ディスク12の回転数が1万回転の場合、以下の演算式
60÷10000=6[ms]
で求まる値6[ms]が磁気ディスク13の1回転に要する時間であり、予測回転待ち時間である。予測リトライ時間を算出する動作の流れを図11に示す。
【0049】
図11中、ステップS11でMPU2は受信したコマンドを解析する。MPU2は解析により、アクセス開始ブロックアドレスおよび転送ブロック数を求め、アクセス開始ブロックアドレスおよび転送ブロック数の情報から、当該コマンドの実行時にアクセスする磁気ディスク12上のブロックのアドレスの範囲を得る。次にステップS12でMPU2は図10のエラー発生箇所テーブルを参照し、上記当該コマンドの実行時にアクセスする磁気ディスク12上のブロックのアドレスの範囲に、エラー発生箇所テーブルに含まれるエラー発生ブロックが含まれるか否かを判定する。判定の結果がNOの場合、MPU2は当該コマンドの実行においてリトライ処理が生ずることはないものと判断し、予測リトライ時間として「0」を得る(ステップS16)。
【0050】
他方、ステップS12の判定の結果がYESの場合、MPU2はステップS13にて、上記エラー発生箇所テーブルから、該当するエラー発生ブロックに係るリトライステップ数を得る。次にステップS14でMPU2は、上記演算式(3)
予測リトライ時間=リトライステップ数×予測回転待ち時間 ・・・(3)
により当該エラー発生ブロックについての予測リトライ時間を算出する。
【0051】
MPU2は次にステップS15にて、当該コマンドの実行時にアクセスする磁気ディスク12上のブロックのアドレスの範囲にエラー発生箇所テーブルに含まれる他のエラー発生ブロックが含まれるか否かを判定する。判定の結果がYESの場合、MPU2はステップS13に戻り、ステップS13,S14にて上記同様にして、当該エラー発生ブロックにつき、予測リトライ時間を得る。
【0052】
他方ステップS15の判定の結果がNOの場合、MPU2は、ステップS13、S14,S15のループによってエラー発生ブロックごとに得られた予測リトライ時間を全エラー発生ブロックについて合計する。MPU2は得られた合計を当該コマンドに係る予測リトライ時間として得る(ステップS16)。尚上記リトライ処理としては公知の技術を適用可能であり、更に詳細な説明は省略する。
【0053】
次に前記予測コマンド実行時間を算出する際に考慮する各種時間情報のうちの、予測交代時間について説明する。磁気記録媒体としての磁気ディスク12には、媒体傷などによる不良ブロックが存在し得る。当該不良ブロックを回避する為に交代処理を実施することができる。すなわちユーザ領域に不良ブロックが生じた場合、当該不良ブロックのデータに対し、磁気ディスク12上、ユーザ領域とは別に設けられた交代領域に、代替のブロック(以下交代ブロックと称する)を割り当てる。当該交代処理後、媒体アクセス系のコマンドの実行の際、アクセス対象の範囲に当該不良ブロックのデータが含まれる場合、前記交代ブロックに対するアクセスを行うことになる。
【0054】
不良ブロックおよび交代ブロックの管理を行うため、たとえばMPU2は図12示す如くの交代管理テーブルを使用する。図12の交代管理テーブル中、「不良ブロック」の欄には上記不良ブロックのアドレスが格納され、「交代ブロック」の欄には、当該不良ブロックのデータが割り付けられた交代ブロックのアドレスが格納される。
【0055】
図13,図14,図15は交代処理の例を説明するための図である。図13は、ユーザ領域の00000012および00000014のアドレスの2個のブロックに交代処理を実施した場合の例を示す。当該交代処理の結果、交代領域のxxxxxxxxおよびyyyyyyyyのアドレスのブロックがそれぞれ交代ブロックとして割り付けられている。この状態でアドレス00000010〜00000015のブロックに対しReadコマンドを実行する場合について説明する。比較のため、図14に、不良ブロックが生じず、交代処理を行わない場合について示す。図14の場合、アドレス00000010〜00000015の6個のブロックに対し、一回のシーク動作でRead動作を行うことができる。これに対し交代処理を行った場合の例を図15に示す。図15の例の場合、まずアドレス00000010〜00000011の2個のブロックに対し、シーク動作およびRead動作を行う(ステップR1)。次にアドレスxxxxxxxxのブロックに対し、シーク動作およびRead動作を行う(ステップR2)。次にアドレス00000013のブロックに対し、シーク動作およびRead動作を行う(ステップR3)。次にアドレスyyyyyyyyのブロックに対し、シーク動作およびRead動作を行う(ステップR4)。次にアドレス00000015のブロックに対し、シーク動作およびRead動作を行う(ステップR5)。上記の如く、図14に示す不良ブロックが無い場合と比較すると、通常は1回のシーケンシャルなRead動作で済む処理が、ステップR1〜R5の計5回に分割してRead動作を行うことになる。更に、コマンド毎にシーク時間と回転待ち時間とが発生する。
【0056】
図16は予測交代時間の算出の動作の流れを示す。図16中、ステップS21にて、MPU2は受信したコマンドを解析する。次にステップS22にてMPU2は図12の交代管理テーブルを参照し、当該コマンドの実行に伴うアクセスの範囲内に交代処理済のブロックが含まれるか否かを判断する。交代処理済みのブロックとは、既に不良ブロックとして判断され交代ブロックに対するデータの割付がなされたブロックを言う。ステップS22の判断結果がNOの場合、アクセス範囲に交代処理済みのブロックは含まれないため、予測交代時間として「0」を得る(ステップS29)。
【0057】
他方ステップS22の結果がYESの場合、アクセス範囲に交代処理済みのブロックは含まれるため、MPU2はステップS23にて、当該コマンドの実行に伴うアクセス範囲内に含まれる交代処理済みのブロックが複数個か否かを判断する。判断結果がYESの場合、MPU2はステップS24にて、当該コマンドの実行に伴うアクセス範囲内に含まれる交代処理済みのブロックに対し、連続で交代ブロックに割り付けられているか否かを判断する。ステップS23の判断結果がNOの場合、MPU2はステップS25に移行する。またステップS24の判断結果がNOの場合にもMPU2はステップS25に移行する。ステップS25でMPU2は、交代処理済みのブロックが上記アクセス範囲の最初のブロックおよび最後のブロックのうちのいずれかのブロックであるか否かを判断する。
【0058】
ステップS25の判断結果がNOの場合、ステップS26でMPU2は、以下の演算式(4)で予測交代時間を求める。
予測交代時間=予測シーク時間×2+予測回転待ち時間 ・・・(4)
すなわち、たとえば図13の例においてコマンドの実行によりアドレス00000010〜00000015の6個のブロックにアクセスする場合を想定する。当該場合、アドレス00000012の不良ブロックに対し割り付けられた交代ブロックxxxxxxxxへのアクセスの際、ユーザ領域から交代領域へのシーク動作と、交代領域からユーザ領域へ戻るシーク動作とが要される。すなわちシーク動作が2回要される。したがって当該例の如く交代処理済みのブロックがアクセス範囲の最初や最後のブロックでない場合(ステップS25のNO)、当該交代処理済みのブロックについての予測交代時間には、上記演算式(4)に示すように、予測シーク時間に2を乗ずる必要がある(ステップS26)。
【0059】
他方、交代処理済みのブロックがアクセス範囲の最初や最後のブロックの場合(ステップS25のYES)、最初のブロックであれば、交代領域からユーザ領域へ戻るシーク動作のみが要される。また最後のブロックであれば、ユーザ領域から交代領域へのシーク動作のみが要される。すなわちシーク動作は一回のみ要される。したがって当該場合についての予測交代時間には、以下の演算式(5)に示すように、予測シーク時間に2を乗ずる必要がない(ステップS27)。
予測交代時間=予測シーク時間+予測回転待ち時間 ・・・(5)
また連続で交代ブロックに割り付けられている場合(ステップS24のYES)、複数の連続する交代ブロックの最初と最後の2回のシーク動作のみが要される。従って当該場合も交代処理済みのブロックごとに2回のシーク動作は要されず、上記演算式(5)が適用される(ステップS27)。
【0060】
ステップS28でMPU2は、当該コマンドのアクセス範囲内に他の交代処理済みのブロックが存在するか否かを判断する。判断結果がYESの場合、MPU2はステップS23に戻り、当該交代処理済みのブロックにつき、ステップS23,S24,S25,S26,S27にて上記同様にして予測交代時間を求める。ステップS29でMPU2は、当該ステップS29に至るまでの間に、交代処理済みのブロックごとに、ステップS26またはステップS27にて得られた予測交代時間を、上記交代処理済みのブロック全部について合計する。そしてMPU2は当該合計値を当該コマンドについての予測交代時間として得る(ステップS29)。尚ステップS26,S27において行う上記演算式(4)、(5)中の予測シーク時間については、図6,図7,図8とともに上述の予測基本実行時間の算出の際に求めた方法と同様の方法で図7のシーク時間テーブルを参照して求める。
【0061】
次に上記予測コマンド実行時間を算出する際に考慮するキャッシュ制御について説明する。図4のバッファ5にはキャッシュデータが格納され、当該キャッシュデータは、たとえば図17に示す如くのキャッシュテーブルに登録されている。当該キャッシュテーブルはRAM6に格納されている。当該キャッシュテーブル中、「先頭ブロック」、「最終ブロック」の各欄には、有効なキャッシュデータが対応する、磁気ディスク12上のブロックの先頭ブロックおよび最終ブロックのそれぞれのアドレスが格納される。また当該キャッシュテーブル中の「バッファアドレス」の欄には、当該キャッシュデータが格納されているバッファ5内のアドレスが格納されている。
【0062】
コマンドの実行に伴うアクセス範囲がキャッシュにヒットする場合該当するデータについては実際に磁気ディスク12にアクセスする必要がない。すなわち図17のキャッシュテーブル中に、当該アクセス範囲に含まれるデータに対応するキャッシュデータが登録されている場合、当該キャッシュデータに対応するデータについては実際に磁気ディスク12にアクセスする必要がない。たとえば前記コマンドがReadコマンドであれば、バッファ5から直接ホスト装置20へ対象のデータを転送することができる。更に、コマンドに伴うアクセス範囲のデータの全てに対応するキャッシュデータがキャッシュテーブルに登録されていた場合、すなわちフルヒットの場合、当該コマンドについての予測基本実行時間には予測シーク時間を含める必要がない。図18は、キャッシュ制御を考慮した場合の予測基本実行時間の算出の流れを示す。
【0063】
図18中、ステップS41,S42,S43,S45,S46,S48,S49は、それぞれ上述した図8中、ステップS1,S2,S3,S4、S5、S6,S7と同様の内容を有し、重複する説明を省略する。
【0064】
図18中、ステップS46にてMPU2は、図17のキャッシュテーブル中、コマンドの実行に伴うアクセス範囲と一部でも合致するキャッシュデータが登録されているかを判断する。判断の結果がNOの場合、MPU2はステップS48に移行する。この場合、予測基本実行時間の算出においてキャッシュ制御は考慮されず、図8の動作と結果的に同様となる。
【0065】
他方、図17のキャッシュテーブル中、コマンドの実行に伴うアクセス範囲と一部でも合致するキャッシュデータが登録されていた場合(ステップS46のYES、すなわち、いわゆるキャッシュヒットの場合),MPU2はステップS47に移行する。ステップS47でMPU2は、図17のキャッシュテーブル中、コマンドの実行に伴うアクセス範囲の全てを含むキャッシュデータが登録されている(すなわち、いわゆるフルヒットの場合)か否かを判断する。上記フルヒットの場合とは、図17のキャッシュテーブル中、あるキャッシュデータの先頭ブロックと最終ブロックとの間の範囲が、コマンドの実行に伴うアクセス範囲を全て含む場合である。上気フルヒットの場合、既にバッファ5上にあるデータをホスト装置20に転送するだけで当該コマンドを実行したことになる。したがって予測シーク時間を予測基本実行時間に含める必要がない。ここでフルヒットの場合にのみキャッシュ制御を考慮して予測シーク時間を不含とする理由は以下の通りである。すなわちフルヒットでなく、アクセス範囲の一部のみがヒットの場合には、アクセス範囲中、キャッシュデータが存在しない部分について実際に磁気ディスクへアクセスする必要があるため、結果的に全くヒットしない場合の実行時間と変わらなくなるからである。
【0066】
したがってステップS47の判断結果がNOの場合、MPU2はステップS48に移行する。この場合も、予測基本実行時間の算出においてキャッシュ制御は考慮されず、図8の動作と結果的に同様となる。
【0067】
他方、ステップS47の判断結果がYESの場合(すなわちフルヒットの場合)、MPU2はステップS48をスキップし、予測シーク時間を加算しない以下の演算式(6)で予測基本実行時間を算出する。
予測基本実行時間=予測実行時間×転送ブロック数 ・・・(6)
但し
予測実行時間=予測媒体アクセス時間+予測データ転送時間 ・・・(2)
実施例では上記した予測基本実行時間、予測リトライ時間、予測交代時間およびキャッシュ制御を考慮して現在コマンドキューテーブルに登録されている個々のコマンド、すなわち未処理のコマンドについて予測コマンド実行時間を求める。更にコマンド毎の予測コマンド実行時間を現在コマンドキューテーブルに登録されている全ての未処理のコマンド、すなわち未処理の全コマンドについて合計した総予測実行時間を求める。そして求めた総予測実行時間をホスト装置においてタイムアウトが発生するタイムアウト値と比較し、総予測実行時間がタイムアウト値以上の場合、ホスト装置20においてタイムアウトが発生するおそれがあると判定する。当該判定に至る一連の動作をタイムアウト判定動作と称する。タイムアウト判定動作において、ホスト装置20にてタイムアウトが生ずると判定した場合、MPU2はホスト装置20に対し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。具体的にはホスト装置20に対しキューフルステータス等を応答する。その結果ホスト装置では最後に送信したコマンドが磁気記憶装置20により実行されないことを認識する。その結果ホスト装置におけるタイムアウトの発生が効果的に防止される。タイムアウトは当該コマンドが実行されるとの認識に基づいてホスト装置20において発生されるものだからである。タイムアウト判定動作の詳細について図20とともに後述する。
【0068】
図19はコマンドキューテーブルにおけるコマンドの登録状況の一例について示す。図19の場合、現在コマンドキューテーブルにはキュー1〜キュー5に対し、それぞれ計5個のコマンドが登録されている。これら5個のコマンドのうち、キュー1に登録されているコマンドは1ブロック分の情報をWriteするコマンドであり、予測コマンド実行時間が6.5msとして求められる。同様にキュー2に登録されているコマンドはFFFFブロック分の情報をReadするコマンドであり、予測コマンド実行時間が370.5msとして求められる。キュー3に登録されているコマンドは1ブロック分の情報をReadするコマンドであり、予測コマンド実行時間が6.5msとして求められる。キュー4に登録されているコマンドはFFFFブロック分の情報をWriteするコマンドであり、予測コマンド実行時間が375.5msとして求めらいる。キュー5に登録されているコマンドは1ブロック分の情報をWriteするコマンドであり、予測コマンド実行時間が6.5msとして求められる。上記キュー1〜キュー5のそれぞれの登録されている計5個のコマンドは、ホスト装置20から磁気記憶装置10が受信した順に、キュー1、キュー2、キュー3,キュー4,キュー5の順に、登録されたものである。当該5個のコマンドは、受信した順で磁気記憶装置10が実行する。コマンドキューテーブル中、磁気記憶装置10が実行し処理済みとなったコマンドは順次削除される。
【0069】
図20は実施例におけるタイムアウト判定動作の流れを示す。MPU2はステップS61でホスト装置20からのコマンドを受信すると、当該受信したコマンドについて予測コマンド実行時間を算出する(ステップS62,S63,S64、S65)。より具体的には、MPU2は当該コマンドについて予測基本実行時間を求める(ステップS62)。予測基本実行時間の求め方は上記の如く、キャッシュ制御を考慮しない図8の方法と、キャッシュ制御を考慮する図18の方法とがある。図20の場合、図18の方法を採る。図18の方法を採る場合、MPU2は図6,図7,図8,図17,図18とともに上述した方法で予測基本実行時間を求める。
【0070】
次にMPU2は当該コマンドについて予測リトライ時間を求める(ステップS63)。予測リトライ時間は図9,図10,図11とともに上述した方法で求める。
【0071】
次にMPU2は当該コマンドについて予測交代時間を求める(ステップS64)。予測交代時間は図12,図16とともに上述した方法で求める。
【0072】
次にMPU2はステップS65にて、以下の演算式により、上記の如くに求めた予測基本実行時間、予測リトライ時間および予測交代時間を合計し、当該コマンドについて予測コマンド実行時間を求める。
予測コマンド実行時間=予測基本実行時間+予測リトライ時間+予測交代時間
そしてMPU2は、以下の演算式により、既に今回受信した当該コマンド以前に受信したコマンドについての総予測実行時間に、今回受信した当該コマンドについて上記の如く求めた予測コマンド実行時間を加算して総予測実行時間を更新する。上記総予測実行時間は、MPU2が既に今回受信した当該コマンド以前に受信したコマンドの各々について上記同様にして求めた予測コマンド実行時間を、コマンドを受信するたびに加算して求めたものである。MPU2はコマンドを受信するたびに総予測実行時間を更新し、その都度コマンドキューテーブルに格納する(図19参照)。
総予測実行時間=総予測実行時間+予測コマンド実行時間
次にMPU2はステップS66にて、上記更新した総予測実行時間をタイムアウト値と比較する。比較の結果総予測実行時間がタイムアウト値より小さい場合(ステップS66のNO),MPU2は今回受信したコマンドをコマンドキューテーブルに追加して登録する。
【0073】
たとえば図19の例の場合、キュー1〜キュー5の計5個のコマンドのそれぞれの予測コマンド実行時間を合計すると、総予測実行時間として765.5[ms]が得られる。たとえばタイムアウト値を1000[ms]とすると、当該総予測実行時間はタイムアウト値より小さい。このため、5番目のコマンドを受信した際の、図20のステップS66の判定結果はNOとなる。
【0074】
他方ステップS66の判定結果がYESの場合、すなわち総予測実行時間がタイムアウト値以上の場合、MPU2はステップS68にて、ホスト装置20に対しキューフルステータス等のエラーを報告し、既に受信済みの未処理コマンドが限界を超えた旨を報告する。したがってMPU2は今回受信したコマンドをコマンドキューテーブルに追加せず、今回受信したコマンドを実行することはない。
【0075】
すなわち仮に今回受信したコマンドを受信したままにしておくと、上記の如く総予測実行時間がタイムアウト値以上となる(ステップS66のYES)。すなわち今回受信したコマンドを受信した時点から今回受信したコマンドの実行が完了する時点までの経過時間がタイムアウト値以上となり、ホスト装置20で今回受信したコマンドについてタイムアウトが生ずる可能性が高い。ここで今回受信したコマンドが受信された時点から今回受信されたコマンドの実行が完了する時点までの経過時間には、今回受信されたコマンド以前に受信された未処理の全てのコマンドの実行に要する時間が含まれる。
【0076】
実施例では上記の如く総予測実行時間がタイムアウト値以上となる場合には、受信した未処理のコマンドが限界を超えた旨を報告する。その結果ホスト装置は最後に送信したコマンドが実行されないことを認識し、よってホスト装置20においてタイムアウトが生ずることが効果的に防止され得る。タイムアウトは当該コマンドが実行されるとの認識に基づいてホスト装置20において発生されるものだからである。
【0077】
他方、総予測実行時間がタイムアウト値未満の場合(ステップS66のYES)、今回受信したコマンドを受信した時点から今回受信したコマンドの実行が完了する時点までの経過時間がタイムアウト値内に収まる可能性が高い。したがってホスト装置20で今回受信したコマンドについてタイムアウトが生ずる可能性は低い。したがって総予測実行時間がタイムアウト値未満の場合(ステップS66のYES)、そのままコマンドキューテーブルに追加して登録する(ステップS67)。
【0078】
ここでコマンドキューテーブルにて登録可能なコマンドの数の上限を設けることが可能である。その場合、ステップS66における判断とは別に、上記上限を超える場合には新たにコマンドはコマンドキューテーブルにて登録されない。この場合もキューフルステータスがホスト装置20に応答されるため、ホスト装置20は最後に送信したコマンドは実行されないことを認識する。他方、上記上限以内の場合であっても、ステップS66における判断結果がYESの場合には、受信した未処理のコマンドが限界を超えた旨がキューフルステータス等によりホスト装置20に応答される。従ってこの場合もホスト装置20は最後に送信したコマンドは実行されないことを認識する。
【0079】
次に図21,22とともに、図20とともに上述したタイムアウト判定動作につき、実際の数値例を使用して再度説明する。ここではホスト装置20においてタイムアウトするタイムアウト値を1000msと想定する。図22に示される如く、現在、コマンド-1、2、3と受信しており、総予測実行時間は956msでタイムアウト値以内である。したがって全ての未処理のコマンドがコマンドキューテーブルのキュー1〜3に登録されている。
【0080】
次にMPU2がホスト装置20からコマンド-4を受信してコマンド解析を行う(図21のステップS81、図20のステップS61)。そして当該コマンドの予測基本実行時間が130msと得られ、アクセス範囲中にエラー発生ブロックが存在した為、予測リトライ時間が20msと得られた。またアクセス範囲中に交代処理済みのブロックは存在しなかったので予測交代時間は0msと得られた(図21のステップS82、図20のステップS62、S63,S64)。したがてコマンド-4の予測実行時間は、130ms+20ms+0ms=150msとなる(図21のステップS83,図20のステップS65)。次にコマンドキューテーブルから現在の総予測実行時間を参照し、コマンド-4を含んだ場合の総予測実行時間を計算すると956ms+150ms=1106msとなる(図21のステップS83,図20のステップS65)。 したがってタイムアウト値1000ms以上となっている(図21のステップS84,図20のステップS66のYES)。この為、受信した未処理のコマンドが限界を超えた旨をホスト装置20に報告する。具体的にはホスト装置20に対しキューフルステータスを報告する。その結果ホスト装置は最後に送信したコマンドが実行されないことを認識し、タイムアウトが防止される。尚図22の例の場合、コマンドキューテーブルにて登録可能なコマンドの数の上限が5であり、現在登録されているコマンドは3個であるため、上記コマンド-4を含めても当該上限以内に収まる。しかしながら図21のステップS84,図20のステップS66のYESの判定により、キューフルステータスが応答され、受信した未処理コマンドが限界を超えた旨がホスト装置20に報告される(図21のステップS85)。
【0081】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
コマンド受信手段が、情報処理装置から、記憶装置に対する情報の記録コマンドおよび前記記憶装置からの情報の再生コマンドのうちの少なくとも何れかのコマンドを受信する段階と、
コマンド実行時間予測手段が、前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求める段階と、
総予測実行時間算出手段が、前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める段階と、
判断手段が、前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する段階と、
エラー応答手段が、前記判断手段が総予測実行時間が一定の値以上であると判断した際、前記コマンド受信手段がエラーを応答する段階とを有する記憶装置の制御方法。
(付記2)
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める付記1に記載の記憶装置の制御方法。
(付記3)
前記記憶装置はディスク装置とされる付記1または2に記載の記憶装置の制御方法。
(付記4)
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段とを有する記憶装置。
(付記5)
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める付記4に記載の記憶装置。
(付記6)
ディスク装置とされる付記4または5に記載の記憶装置。
(付記7)
記憶装置の動作を制御するコンピュータを、
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段として機能させるための記憶装置制御プログラム。
(付記8)
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める付記7に記載の記憶装置制御プログラム。
(付記9)
前記記憶装置はディスク装置とされる付記7または8に記載の記憶装置制御プログラム。
【産業上の利用可能性】
【0082】
なお上記実施例は磁気記憶装置、より具体的には磁気ディスク装置であったが、実施例はこれに限られない。光ディスク装置、光磁気ディスク装置、磁気テープ記憶装置、半導体記憶装置等、種々の記憶装置の実施例が可能である。
【符号の説明】
【0083】
1 インタフェース制御部
2 MPU(マイクロプロセッサユニット)
3 ドライブ制御部
4 ドライブ部
5 バッファ
6 RAM
7 フラッシュROM
10 磁気記憶装置
12 磁気ディスク
13 磁気ヘッド
20 ホスト装置
【特許請求の範囲】
【請求項1】
コマンド受信手段が、情報処理装置から、記憶装置に対する情報の記録コマンドおよび前記記憶装置からの情報の再生コマンドのうちの少なくとも何れかのコマンドを受信する段階と、
コマンド実行時間予測手段が、前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求める段階と、
総予測実行時間算出手段が、前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める段階と、
判断手段が、前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する段階と、
エラー応答手段が、前記判断手段が総予測実行時間が一定の値以上であると判断した際、前記コマンド受信手段がエラーを応答する段階とを有する記憶装置の制御方法。
【請求項2】
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める請求項1に記載の記憶装置の制御方法。
【請求項3】
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段とを有する記憶装置。
【請求項4】
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める請求項3に記載の記憶装置。
【請求項5】
ディスク装置とされる請求項3または4に記載の記憶装置。
【請求項6】
記憶装置の動作を制御するコンピュータを、
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段として機能させるための記憶装置制御プログラム。
【請求項7】
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める請求項6に記載の記憶装置制御プログラム。
【請求項1】
コマンド受信手段が、情報処理装置から、記憶装置に対する情報の記録コマンドおよび前記記憶装置からの情報の再生コマンドのうちの少なくとも何れかのコマンドを受信する段階と、
コマンド実行時間予測手段が、前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求める段階と、
総予測実行時間算出手段が、前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める段階と、
判断手段が、前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する段階と、
エラー応答手段が、前記判断手段が総予測実行時間が一定の値以上であると判断した際、前記コマンド受信手段がエラーを応答する段階とを有する記憶装置の制御方法。
【請求項2】
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める請求項1に記載の記憶装置の制御方法。
【請求項3】
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段とを有する記憶装置。
【請求項4】
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める請求項3に記載の記憶装置。
【請求項5】
ディスク装置とされる請求項3または4に記載の記憶装置。
【請求項6】
記憶装置の動作を制御するコンピュータを、
情報処理装置から情報の記録コマンドおよび情報の再生コマンドのうちの少なくとも何れかのコマンドを受信するコマンド受信手段と、
前記コマンド受信手段が受信したコマンドごとに、当該コマンドの実行に要される時間を予測して予測コマンド実行時間を求めるコマンド実行時間予測手段と、
前記コマンド実行時間予測手段が求めたコマンドごとの予測コマンド実行時間を全ての未処理のコマンドについて合計して総予測実行時間を求める総予測実行時間算出手段と、
前記総予測実行時間算出手段が得た総予測実行時間が一定の値以上か否かを判断する判断手段と、
前記判断手段が総予測実行時間が一定の値以上であると判断した際、エラーを応答するエラー応答手段として機能させるための記憶装置制御プログラム。
【請求項7】
前記コマンド実行時間予測手段は、過去のコマンドの実行において生じたリトライの履歴、前記記憶装置の記憶媒体の不良ブロックに対する代替ブロックの割り付けに係る交代情報およびキャッシュデータを考慮して予測コマンド実行時間を求める請求項6に記載の記憶装置制御プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2010−211902(P2010−211902A)
【公開日】平成22年9月24日(2010.9.24)
【国際特許分類】
【出願番号】特願2009−59985(P2009−59985)
【出願日】平成21年3月12日(2009.3.12)
【出願人】(309033264)東芝ストレージデバイス株式会社 (255)
【Fターム(参考)】
【公開日】平成22年9月24日(2010.9.24)
【国際特許分類】
【出願日】平成21年3月12日(2009.3.12)
【出願人】(309033264)東芝ストレージデバイス株式会社 (255)
【Fターム(参考)】
[ Back to top ]