(57)【要約】【課題】振動発生時の処理時間が最短となるコマンドを正確に決定すること。【解決手段】ヘッドごとに振動量とリトライ回数とを対応付けた振動対応情報を記憶し、実行予定ヘッドの振動量に対応する振動対応情報のリトライ回数と到達時間とから算出された処理完了予測時間が最小となる未実行コマンドを、次処理実行コマンドとして決定する。また、変更前後のヘッドにおける振動量の増減量を差分情報として記憶しておき、直前実行ヘッドから実行予定ヘッドが変更される場合、差分情報から取得したヘッド間の振動量の増減量と直前実行ヘッドの振動量とから実行予定ヘッドの振動量を導出し、導出した振動量に対応するリトライ回数と到達時間とから処理完了予測時間を算出する。【選択図】        図１
2010123162.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体に対してヘッドによる読み出し処理または書き込み処理が実行されるごとに、当該処理を実行したヘッドと、当該処理が実行されたときにおける当該ヘッドの振動量と、当該処理が完了するまでに試行された処理の回数を示す処理試行回数とを対応付けた振動対応情報を記憶する振動対応情報記憶部と、
前記記録媒体に対して未だ実行されていない読み出し命令または書き込み命令である複数の未実行命令の中から次に実行すべき命令である次処理実行命令を決定する際に、前記未実行命令ごとに、当該命令に対応する処理の実行が予定される実行予定ヘッドが前記記録媒体上の現在位置から当該処理の実行が予定される処理予定位置に到達するまでの到達時間と、前記振動対応情報記憶部が記憶する前記振動対応情報において前記実行予定ヘッドおよび当該ヘッドにおける現時点での振動量に対応する処理試行回数とから、当該未実行命令に対応する処理が完了するまでに要する時間と予測される処理完了予測時間を算出する処理完了予測時間算出部と、
前記処理完了予測時間算出部によって算出された各未実行命令の処理完了予測時間に基づいて、前記処理完了予測時間が最小となる未実行命令を、前記次処理実行命令として決定する次処理実行命令決定部と、
を有することを特徴とする記憶装置。
【請求項２】
前記振動対応情報記憶部は、処理の実行に用いられたヘッドが変更された場合、変更前後のヘッドにおける振動量の増減量を差分情報としてさらに記憶し、
前記処理完了予測時間算出部は、直前の処理に用いられたヘッドから前記実行予定ヘッドが変更される場合、前記振動対応情報記憶部が記憶する前記差分情報から取得した当該ヘッド間の振動量の増減量と前記直前の処理に用いられたヘッドの振動量とから当該実行予定ヘッドの現時点での振動量を導出し、当該導出した当該実行予定ヘッドの現時点の振動量に対応する処理試行回数と前記到達時間とから前記処理完了予測時間を算出することを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記振動対応情報記憶部は、処理実行時に用いられたヘッドの前記記録媒体における処理実行領域を前記振動対応情報にさらに対応付けて記憶し、
前記処理完了予測時間算出部は、前記振動対応情報において前記実行予定ヘッド、当該ヘッドの記録媒体における処理実行領域および当該処理実行領域における現時点での振動量に対応する処理試行回数と前記到達時間とから前記処理完了予測時間を算出することを特徴とする請求項１に記載の記憶装置。
【請求項４】
前記次処理実行命令決定部は、現時点での振動量が所定の閾値以下である場合、直前に処理を実行した際に用いられたヘッドと前記振動対応情報記憶部が記憶する前記差分情報とに基づいて、前記未実行命令の中から最も振動量が多いと予測される前記実行予定ヘッドを用いる命令群を抽出し、抽出した命令群を次に処理を実行する命令群として決定することを特徴とする請求項２または３に記載の記憶装置。
【請求項５】
記録媒体に対してヘッドによる読み出し処理または書き込み処理を実行する記憶装置を制御する制御装置であって、
読み出し処理または書き込み処理が実行されるごとに、当該処理を実行したヘッドと、当該処理が実行されたときにおける当該ヘッドの振動量と、当該処理が完了するまでに試行された処理の回数を示す処理試行回数とを対応付けた振動対応情報を記憶する振動対応情報記憶部と、
前記記録媒体に対して未だ実行されていない読み出し命令または書き込み命令である複数の未実行命令の中から次に実行すべき命令である次処理実行命令を決定する際に、前記未実行命令ごとに、当該命令に対応する処理の実行が予定される実行予定ヘッドが前記記録媒体上の現在位置から当該処理の実行が予定される処理予定位置に到達するまでの到達時間と、前記振動対応情報記憶部が記憶する前記振動対応情報において前記実行予定ヘッドおよび当該ヘッドにおける現時点での振動量に対応する処理試行回数とから、当該未実行命令に対応する処理が完了するまでに要する時間と予測される処理完了予測時間を算出する処理完了予測時間算出部と、
前記処理完了予測時間算出部によって算出された各未実行命令の処理完了予測時間に基づいて、前記処理完了予測時間が最小となる未実行命令を、前記次処理実行命令として決定する次処理実行命令決定部と、
を有することを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記憶装置および制御装置に関する。
【背景技術】
【０００２】
従来より、記録媒体を内蔵する記憶装置においては、ホストコンピュータからのリード／ライトコマンドを高速で実行するために、ホストコンピュータとの間で送受信するデータを一時的に蓄積するデータバッファを用いた制御が行われている。
【０００３】
例えば、ホストコンピュータからライトコマンドが発行された場合、記憶装置は、ホストコンピュータから転送されたライトデータを、一旦データバッファのコマンド待ち行列に登録する。そして、記憶装置は、コマンド待ち行列に登録されたライトデータの中から書き込み処理が最速となるライトデータを、記録媒体における物理的位置に基づいて決定し、決定したライトデータをデータバッファから読み出して記録媒体に書き込む。
【０００４】
具体的には、記憶装置は、記録媒体に対してデータのリード／ライトを行うヘッドの現在位置と各ライトデータの記録媒体における書き込み位置とに基づいて、現在位置から書き込み位置までヘッドが到達するための到達時間をライトデータごとに算出する。より具体的には、記憶装置は、書き込み位置があるトラックまでヘッドが移動するための時間（以下、シーク時間と記す）と、記録媒体上の書き込み位置がヘッドの位置まで回転するための回転待ち時間とから到達時間を算出する。
【０００５】
そして、記憶装置は、到達時間が最短となったライトデータに対して、書き込み処理を実行する。さらに、記憶装置は、書き込み処理が実行された後、コマンド待ち行列に残っているライトデータそれぞれについて、ヘッドの現在位置から到達時間を再度算出して、次に書き込み処理を実行するライトデータを決定する。
【０００６】
なお、ホストコンピュータからリードコマンドが発行された場合、記憶装置は、上述した書き込み処理と同様に、ヘッドの現在位置と各リードデータの記録媒体における読み込み位置とに基づいて、到達時間が最短となるリードコマンドを順次決定する。
【０００７】
このように、記憶装置は、ホストコンピュータからのコマンドに応じた処理を最短時間で実行するために、データバッファに蓄積されたデータに対して処理ごとに次に実行するコマンド（以下、次実行コマンドと記す）の決定を行う。
【０００８】
ここで、振動などの外的環境要因により、リード／ライトを実行するヘッドの位置が目標とするトラックから外れるオフトラックが発生すると、記憶装置は、リード／ライトのリトライを実行する場合がある。
【０００９】
そこで、リトライを考慮した次実行コマンドの決定方法として、リトライ回数をヘッドのシーク方向ごとに記憶しておき、リード／ライト実行時において、リトライ回数の少ないシーク方向のコマンドを優先させる方法がある（例えば、特許文献１参照）。
【００１０】
【特許文献１】特開２００２−３０４８２３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ところで、上記した従来の技術は、振動発生時におけるコマンドの処理を最短時間で実行できないという課題があった。すなわち、上記した従来の技術は、振動時の各コマンド実行において、何回リトライを行うか考慮していないために、正確な処理時間を予測できず、優先的に選択したコマンドの処理時間が必ずしも最短になるわけではなかった。
【００１２】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、振動発生時においても処理時間が最短となるコマンド（命令）を正確に決定することが可能となる記憶装置および制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するため、この装置は、振動対応情報記憶部が、記録媒体に対してヘッドによる読み出し／書き込み処理が実行されるごとに、当該処理を実行したヘッドと当該ヘッドにおける振動量および当該処理が完了するまでの処理試行回数とを対応付けた振動対応情報を記憶する。また、この装置は、処理完了予測時間算出部が、複数の未実行命令の中から次処理実行命令を決定する際に、前記未実行命令ごとに当該命令に対応する処理の実行予定ヘッドが前記記録媒体上の現在位置から処理予定位置に到達するまでの到達時間を算出する。さらに、この装置は、処理完了予測時間算出部が、前記振動対応情報において前記実行予定ヘッドおよび当該ヘッドにおける現時点での振動量に対応する処理試行回数とから、当該未実行命令に対応する処理が完了するまでに要する時間と予測される処理完了予測時間を算出する。そして、この装置は、次処理実行命令決定部が、前記処理完了予測時間算出部によって算出された各未実行命令の処理完了予測時間に基づいて、前記処理完了予測時間が最小となる未実行命令を、前記次処理実行命令として決定することを要件とする。
【発明の効果】
【００１４】
開示の装置は、振動発生時の処理時間が最短となる命令を正確に決定することが可能になる。
【発明を実施するための最良の形態】
【００１５】
以下に添付図面を参照して、この発明に係る記憶装置および制御装置の実施例を詳細に説明する。
【実施例１】
【００１６】
［実施例１における記憶装置の概要および特徴］
まず最初に、図１を用いて、本実施例における記憶装置の概要および特徴を説明する。図１は、本実施例における記憶装置の概要および特徴を説明するための図である。
【００１７】
実施例１における記憶装置は、ホストコンピュータから受信したライトコマンドに対応するライトデータをデータバッファに一時的に記憶し、記憶したライトデータを制御部により順次読み出してディスクに対してヘッドを用いた書き込み処理を実行することを概要とする。なお、本実施例では、図１に示すように、記憶装置に磁気ディスクが２枚内蔵され、各ディスクの表面および裏面にそれぞれ一つのヘッドが配置されている場合について説明する。
【００１８】
具体的には、実施例１における記憶装置は、ホストコンピュータから複数のライトコマンドを受信した場合、受信した複数のライトコマンドを、一旦データバッファのコマンド待ち行列に登録する。例えば、実施例１における記憶装置は、図１に示すように、「コマンド番号：１」のコマンド待ち行列として、「コマンド番号：１」の「コマンド実行位置：１、Ｐ１」と「コマンド番号：１」に対応するライトデータである「データ：Ｄ１」とを対応付けて登録する。なお、コマンド実行位置において、「１」は、「コマンド番号：１」の書き込み処理が予定される実行予定ヘッドを示し、「Ｐ１」は、「コマンド番号：１」のディスクにおける書き込み処理の実行が予定される処理予定位置を示す。そして、実施例１における記憶装置の制御部は、コマンド待ち行列に登録されたライトコマンドから次に実行するコマンド（以下、次実行コマンドと記す）を決定する。
【００１９】
ここで、本発明は、振動発生時の処理時間が最短となるコマンドを正確に決定することが可能になることに主たる特徴がある。この主たる特徴について簡単に説明すると、実施例１における記憶装置は、コマンド待ち行列から次実行コマンドを決定するために、以下に説明する振動対応情報および差分情報を、予め記憶する。すなわち、実施例１における記憶装置は、ディスクに対してヘッドによるライトコマンドの処理が実行されるごとに、処理を実行したヘッド、実行したヘッドにおける振動量および処理が完了するまでに試行されたリトライ回数とを対応付けた振動対応情報を記憶する。例えば、実施例１における記憶装置は、処理を実行したヘッドが「１」であり、ヘッド「１」の処理実行時の振動量が「３」であり、リトライ回数が「１」であった場合、図１に示すように、「ヘッド：１、振動量：３、リトライ回数：１」とする振動対応情報をデータバッファ内に記憶する。なお、実施例１における記憶装置は、ライトコマンド実行時のオフトラック量から振動量を判定する。
【００２０】
また、実施例１における記憶装置は、ライトコマンド処理の実行に用いられたヘッドが変更された場合、変更前後のヘッドにおける振動量の増減量を、その都度差分情報としてさらに記憶する。例えば、実施例１における記憶装置は、変更前のヘッドが「１」であり、変更後のヘッドが「３」であり、変更前後のヘッドにおける振動量の増減量が「＋１」であった場合、図１に示すように、「現ヘッド：１、シーク先ヘッド：３、増減量：＋１」とする差分情報をデータバッファ内に記憶する。なお、現ヘッドとは、変更前のヘッドを示し、シーク先ヘッドとは、変更後のヘッドを示す。
【００２１】
そして、実施例１における記憶装置の制御部は、ディスクに対して処理が未実行であるライトコマンドの中から、次実行コマンドを決定する。すなわち、実施例１における記憶装置の制御部は、ホストコンピュータから受信し、コマンド待ち行列に登録された複数の未実行コマンドの中から、次実行コマンドを決定する。具体的には、まず、実施例１における記憶装置の制御部は、コマンド待ち行列に登録されている未実行コマンドごとに実行予定ヘッドがディスク上の現在位置から処理予定位置に到達するまでに要する到達時間を算出する。なお、到達時間の算出は、処理予定位置があるトラックまでヘッドが移動するためのシーク時間とディスク上の処理予定位置が実行予定ヘッドの位置まで回転するための回転待ち時間とを加算することによって行われる。
【００２２】
さらに、実施例１における記憶装置の制御部は、算出した到達時間と、振動対応情報において実行予定ヘッドおよび実行予定ヘッドにおける現時点の振動量に対応するリトライ回数とから未実行コマンドに対応する処理が完了するまでに要する時間と予測される処理完了予測時間を算出する。
【００２３】
ここで、実施例１における記憶装置の制御部は、直前に処理が実行されたライトコマンド（以下、直前実行コマンドと記す）で用いられたヘッド（以下、直前実行ヘッドと記す）と未実行コマンドの実行予定ヘッドが同一である場合、振動対応情報のみを用いて処理完了予測時間を算出する。
【００２４】
例えば、実施例１における記憶装置の制御部は、直前実行ヘッドが「１」、ヘッド「１」における振動量が「３」であった場合、図１に示す「コマンド番号：２」の処理完了予測時間を以下のように算出する。まず、実施例１における記憶装置の制御部は、図１に示すように、「コマンド番号：１」の実行予定ヘッドが「１」であり、直前実行ヘッド「１」と同一であることから、実行予定ヘッド「１」の現時点の振動量を「３」とする。
【００２５】
そして、実施例１における記憶装置の制御部は、ヘッド「１」における振動量「３」に対応するリトライ回数「１」を振動対応情報から取得し、取得したリトライ回数「１」とディスクが１回転するために要する時間と到達時間とから処理完了予測時間を算出する。仮に、図１に示す「コマンド番号：１」の実行予定ヘッドが処理予定位置の「Ｐ１」に到達するまでに要する到達時間が「１０ｍｓ」であり、ディスク１回転に要する時間が「１１．１ｍｓ」である場合、実施例１における記憶装置の制御部は、処理完了予測時間を「１×１１．１＋１０＝２１．１ｍｓ」と算出する。
【００２６】
一方、実施例１における記憶装置の制御部は、直前実行ヘッドから実行予定ヘッドが変更される場合、振動対応情報とともに差分情報を用いて処理完了予測時間を算出する。すなわち、差分情報から取得した変更前後のヘッド間の振動量の増減量と直前実行ヘッドの振動量とから実行予定ヘッドの現時点での振動量を導出する。そして、実行予定ヘッドおよび導出した振動量に対応するリトライ回数を振動対応情報から取得し、取得したリトライ回数と到達時間とから処理完了予測時間を算出する。
【００２７】
例えば、実施例１における記憶装置の制御部は、直前実行ヘッドが「１」、ヘッド「１」における振動量が「３」であった場合、図１に示す「コマンド番号：２」の処理完了予測時間を以下のように算出する。まず、実施例１における記憶装置の制御部は、「コマンド番号：２」の実行予定ヘッド「３」が直前実行ヘッド「１」から変更されることから、実行予定ヘッドにおける現時点の振動量を、直前実行ヘッドの振動量と図１に示した差分情報とに基づいて導出する。すなわち、実施例１における記憶装置の制御部は、直前実行ヘッド「１」を現ヘッドとし、実行予定ヘッド「３」をシーク先ヘッド「３」として、対応する振動量の増減量「＋１」を差分情報から取得する。そして、実施例１における記憶装置の制御部は、直前実行ヘッドにおける振動量「３」に取得した増減量「＋１」を加算し、加算して得られた振動量「４」を「コマンド番号：２」の実行予定ヘッド「３」における現時点の振動量として導出する。
【００２８】
さらに、実施例１における記憶装置の制御部は、ヘッド「３」における振動量「４」に対応するリトライ回数「３」を振動対応情報から取得し、取得したリトライ回数「３」とディスクが１回転するために要する時間と到達時間とから処理完了予測時間を算出する。仮に、図１に示す「コマンド番号：２」の実行予定ヘッドが処理予定位置の「Ｐ２」に到達するまでに要する到達時間が「５ｍｓ」であり、ディスク１回転に要する時間が「１１．１ｍｓ」である場合、実施例１における記憶装置の制御部は、処理完了予測時間を「３×１１．１＋５＝３８．１ｍｓ」と算出する。
【００２９】
そして、実施例１における記憶装置の制御部は、すべての未実行コマンドについて処理完了予測時間を算出し、算出した各処理完了予測時間の中から、最短の処理完了予測時間を要するライトコマンドを次実行コマンドとして決定する。
【００３０】
なお、実施例１における記憶装置は、次実行コマンドを決定した後、コマンド待ち行列に残っている未実行コマンドについて、再度処理完了予測時間の算出を行い、常に処理時間が最短となる未実行コマンドを次実行コマンドとして決定する。
【００３１】
このようなことから、実施例１における記憶装置は、次実行コマンドを決定するために、振動発生時のリトライ回数を考慮して個々のコマンドの処理完了予測時間を算出することができ、上記した主たる特徴の通り、振動発生時の処理時間が最短となるコマンドを正確に決定することが可能になる。
【００３２】
なお、実施例１における記憶装置は、振動発生時に実行されたすべてのライトコマンドのヘッドにおける振動量とリトライ回数を取得し、取得したヘッドと振動量とリトライ回数を用いてデータバッファ内の振動対応情報および差分情報を更新する。
【００３３】
［実施例１における記憶装置の構成］
次に、図２〜図７を用いて、実施例１における記憶装置の構成を説明する。図２は、実施例１における記憶装置の構成を説明するためのブロック図であり、図３は、実施例１における振動対応情報を説明するための図であり、図４は、実施例１における差分情報を説明するための図である。また、図５は、処理完了予測時間算出部における到達時間算出処理を説明するための図であり、図６は、実施例１における処理完了予測時間算出部の処理完了予測時間算出処理を説明するための図である。また、図７は、実施例１における処理完了予測時間算出部の処理完了予測時間算出例を説明するための図である。
【００３４】
図２に示すように、実施例１における記憶装置１０は、Ｉ／Ｆ８０と、記憶部５０と、コマンド制御部２０と、第一ヘッド７０と、第二ヘッド７１と、第三ヘッド７２と、第四ヘッド７３と、第一ディスク６０と、第二ディスク６１と、リード／ライト制御部４０と、振動検知部３０とを有する。さらに、実施例１における記憶装置１０は、図２に示すように、ホストコンピュータ９０と接続される。
【００３５】
ホストコンピュータ９０は、ライトコマンドとともに、ライトコマンドに対応するライトデータを、記憶装置１０に送信する。
【００３６】
Ｉ／Ｆ８０は、ホストコンピュータ９０と記憶装置１０との間で送受信されるデータを中継するインターフェースである。
【００３７】
第一ディスク６０および第二ディスク６１は、記憶装置１０に内蔵される２つの磁気ディスクである。第一ヘッド７０は、第一ディスク６０の表面に配置される磁気ヘッドであり、第二ヘッド７１は、第一ディスク６０の裏面に配置される磁気ヘッドである。また、第三ヘッド７２は、第二ディスク６１の表面に配置される磁気ヘッドであり、第四ヘッド７３は、第二ディスク６１の裏面に配置される磁気ヘッドである。
【００３８】
振動検知部３０は、第一ヘッド７０、第二ヘッド７１、第三ヘッド７２および第四ヘッド７３それぞれのライトコマンド実行時における振動量を検知する。具体的には、振動検知部３０は、第一ヘッド７０、第二ヘッド７１、第三ヘッド７２および第四ヘッド７３それぞれのライトコマンド実行時におけるオフトラック量を、後述するリード／ライト制御部４０から取得し、取得したオフトラック量に応じて振動量を検知する。例えば、振動検知部３０は、オフトラック量の大きさに応じて、ヘッドにおける振動量を「０〜５」の６段階の数値で判定する。なお、「振動量：０」は、コマンド実行時において、ヘッドに振動が発生しなかったことを示す。
【００３９】
リード／ライト制御部４０は、後述するコマンド制御部２０から送信されたライトデータを、処理予定位置とともに、処理を実行するヘッドに送信する。さらに、リード／ライト制御部４０は、ライトコマンド実行時におけるオフトラック量をヘッドから取得して、振動検知部３０に通知する。
【００４０】
また、リード／ライト制御部４０は、振動検知部３０が判定した振動量を、後述するコマンド制御部２０に送信する。また、リード／ライト制御部４０は、第一ヘッド７０、第二ヘッド７１、第三ヘッド７２および第四ヘッド７３それぞれのライトコマンド実行時におけるリトライ回数を、後述するコマンド制御部２０に送信する。なお、リード／ライト制御部４０は、「０ｘ１００セクタごとの平均リトライ回数」を算出し、算出した平均リトライ回数を「リトライ回数」として、後述するコマンド制御部２０に送信する。
【００４１】
ここで、リード／ライト制御部４０は、第一ヘッド７０の振動量およびリトライ回数についてはヘッドを特定するための情報として「１」を送信する。同様に、リード／ライト制御部４０は、第二ヘッド７１の振動量およびリトライ回数については「２」を、第三ヘッド７２の振動量およびリトライ回数については「３」を、第四ヘッド７３の振動量およびリトライ回数については「４」を送信する。
【００４２】
記憶部５０は、後述するコマンド制御部２０による各種処理に必要なデータを記憶するデータバッファであり、特に本発明に密接に関係するものとして、命令記憶部５１と振動対応情報記憶部５２とを有する。
【００４３】
命令記憶部５１は、後述するコマンド制御部２０がＩ／Ｆ８０を介して受信したホストコンピュータ９０からのライトコマンドおよびライトデータをコマンド待ち行列として記憶する。例えば、命令記憶部５１は、コマンド番号とコマンド実行位置とライトデータとを対応付けて記憶する（図１のコマンド待ち行列参照）。
【００４４】
振動対応情報記憶部５２は、振動発生時におけるライトコマンド処理を最短時間にて実行するために、以下に説明する２つの情報を予め記憶する。まず、振動対応情報記憶部５２は、後述するコマンド制御部２０を介して、リード／ライト制御部４０から転送された「処理を実行したヘッド」と「実行したヘッドにおける振動量」と「リトライ回数」とを対応付けた振動対応情報を記憶する。
【００４５】
例えば、振動対応情報記憶部５２は、処理を実行したヘッドが「１」であり、ヘッド「１」の処理実行時の振動量が「３」であり、リトライ回数が「１」であった場合、図３に示すように、「ヘッド：１、振動量：３、リトライ回数：１」とする振動対応情報を記憶する。
【００４６】
また、振動対応情報記憶部５２は、ライトコマンド処理の実行に用いられたヘッドが変更された場合、変更前後のヘッドにおける振動量の増減量を、その都度、差分情報として記憶する。
【００４７】
具体的には、振動対応情報記憶部５２は、後述するコマンド制御部２０を介して、リード／ライト制御部４０から転送された変更前のヘッド（現ヘッド）の振動量と変更後のヘッド（シーク先ヘッド）の振動量との増減量を記憶する。なお、振動量の増減量は、後述するコマンド制御部２０によって算出される。
【００４８】
例えば、振動対応情報記憶部５２は、変更前のヘッドが「１」であり、変更後のヘッドが「３」であり、変更前後のヘッドにおける振動量の増減量が「＋１」であった場合、図４で示すように、「現ヘッド：１、シーク先ヘッド：３、増減量：＋１」とする差分情報を記憶する。
【００４９】
なお、振動対応情報および差分情報の取得処理については、後に詳述する。
【００５０】
コマンド制御部２０は、図示しないＲＯＭに記憶される各種の処理手順を規定した制御プログラムや制御データを使用して、種々の処理を実行する装置である。ここで、コマンド制御部２０は、特に本発明に密接に関連するものとして、図２に示すように、データ処理部２１と、処理完了予測時間算出部２２と、次処理実行命令決定部２３と、命令実行制御部２４とを有する。
【００５１】
データ処理部２１は、ホストコンピュータ９０からＩ／Ｆ８０を介して受信したライトコマンドおよび対応するライトデータを記憶部５０における命令記憶部５１に転送する。また、データ処理部２１は、ライトコマンドに対応するライトデータを命令記憶部５１から読み出して、リード／ライト制御部４０に送信する。また、データ処理部２１は、リード／ライト制御部４０から転送されたヘッドごとの振動量およびリトライ回数を受信して、振動対応情報記憶部５２に転送する。
【００５２】
また、データ処理部２１は、振動対応情報記憶部５２に振動対応情報および差分情報が格納されたのち、新たに命令記憶部５１にコマンド待ち行列として複数のライトコマンド（未実行コマンド）が格納された場合、以下の処理を実行する。すなわち、データ処理部２１は、振動発生時に対応した次実行コマンド決定処理を行なうために、命令記憶部５１からライトコマンドのコマンド番号、コマンド実行位置を読み出して、後述する処理完了予測時間算出部２２に転送する。また、データ処理部２１は、振動発生時に対応した次実行コマンド決定処理を行なうために、振動対応情報記憶部５２から振動対応情報や差分情報を読み出して、後述する処理完了予測時間算出部２２に転送する。
【００５３】
また、データ処理部２１は、後述する命令実行制御部２４の指示により振動発生時に対応して決定された次実行コマンドに対応するライトデータを読み出して、リード／ライト制御部４０に送信する。なお、データ処理部２１による処理の詳細な内容については、後に記憶装置１０による処理の手順を説明する際に、詳述する。
【００５４】
処理完了予測時間算出部２２は、未実行コマンドごとに実行予定ヘッドがディスク上の現在位置から処理予定位置に到達するまでに要する到達時間を算出する。
【００５５】
具体的には、処理完了予測時間算出部２２は、図５に示すように、処理予定位置があるトラックまでヘッドが移動するためのシーク時間（a）とディスク上の処理予定位置が実行予定ヘッドの位置まで回転するための回転待ち時間（b）とを加算することにより到達時間（Ｚ）を算出する。
【００５６】
そして、処理完了予測時間算出部２２は、算出した到達時間と、振動対応情報記憶部５２が記憶する振動対応情報において実行予定ヘッドおよび実行予定ヘッドにおける現時点の振動量に対応するリトライ回数とから未実行コマンドの処理完了予測時間を算出する。なお、振動対応情報記憶部５２が記憶する振動対応情報は、データ処理部２１により取り出され、転送される。
【００５７】
具体的には、まず、処理完了予測時間算出部２２は、図６で示すように、直前実行ヘッドと直前実行ヘッドにおける振動量（Ｘ）と振動量の増減量（Ｙ）とを用いて、実行予定ヘッドにおける現時点の振動量（Ｘ＋Ｙ）を導出する。ここで、処理完了予測時間算出部２２は、実行予定ヘッドが直前実行ヘッドと同一である場合、振動量の増減量（Ｙ）の値を「０」とし、実行予定ヘッドにおける現時点の振動量を導出する。
【００５８】
一方、処理完了予測時間算出部２２は、実行予定ヘッドが直前実行ヘッドから変更される場合、振動量の増減量（Ｙ）の値を振動対応情報記憶部５２が記憶する差分情報から取得し、実行予定ヘッドにおける現時点の振動量（Ｘ＋Ｙ）を導出する。なお、振動対応情報記憶部５２が記憶する差分情報は、データ処理部２１により取り出され、転送される。
【００５９】
そして、処理完了予測時間算出部２２は、振動対応情報記憶部５２が記憶する振動対応情報から実行予定ヘッドおよび実行予定ヘッドにおける現時点の振動量（Ｘ＋Ｙ）に対応するリトライ回数（ｎ）を取得する。さらに、処理完了予測時間算出部２２は、算出した到達時間（Ｚ）とリトライ回数（ｎ）とディスクが一回転する時間（定数）とから未実行コマンドの処理完了予測時間「リトライ回数（ｎ）×一回転時間（定数）＋到達時間（Ｚ）」を算出する。
【００６０】
例えば、処理完了予測時間算出部２２は、図７の（Ａ）に示すように、直前実行ヘッドが「１」、ヘッド「１」における振動量が「１」であった場合、図１に示す「コマンド番号：１」、「コマンド番号：２」、「コマンド番号：３」の処理完了予測時間を以下のように算出する。
【００６１】
まず、処理完了予測時間算出部２２は、図７の（Ｂ）に示すように、「コマンド番号：１」の実行予定ヘッドが「１」であり、直前実行ヘッド「１」と同一であることから、実行予定ヘッド「１」の現時点の振動量「（１＋０）＝１」を導出する。
【００６２】
そして、処理完了予測時間算出部２２は、ヘッド「１」における振動量「１」に対応するリトライ回数「０」を振動対応情報（図３参照）から取得する。さらに、処理完了予測時間算出部２２は、取得したリトライ回数「０」とディスクが１回転するために要する時間「１１．１ｍｓ」と到達時間「（９＋２）＝１１ｍｓ」とから処理完了予測時間「０×１１．１＋１１＝１１ｍｓ」を算出する。
【００６３】
また、処理完了予測時間算出部２２は、図７（Ｃ）に示すように、「コマンド番号：２」の実行予定ヘッドが「３」であり、直前実行ヘッド「１」から変更されることから、差分情報（図４参照）より、実行予定ヘッド「３」の現時点の振動量「（１＋１）＝２」を導出する。
【００６４】
そして、処理完了予測時間算出部２２は、ヘッド「３」における振動量「１」に対応するリトライ回数を図３で示す振動対応情報から取得する。さらに、処理完了予測時間算出部２２は、取得したリトライ回数「１」とディスクが１回転するために要する時間「１１．１ｍｓ」と到達時間「（１０＋３）＝１３ｍｓ」とから処理完了予測時間「１×１１．１＋１３＝２４．１ｍｓ」を算出する。
【００６５】
同様に、処理完了予測時間算出部２２は、図７（Ｃ）に示すように、「コマンド番号：３」の実行予定ヘッドが「４」であり、直前実行ヘッド「１」から変更されることから、差分情報（図４参照）より、実行予定ヘッド「４」の現時点の振動量「（１＋２）＝３」を導出する。
【００６６】
そして、処理完了予測時間算出部２２は、ヘッド「４」における振動量「３」に対応するリトライ回数を図３で示す振動対応情報から取得する。さらに、処理完了予測時間算出部２２は、取得したリトライ回数「２」とディスクが１回転するために要する時間「１１．１ｍｓ」と到達時間「（５＋２）＝７ｍｓ」とから処理完了予測時間「２×１１．１＋７＝２９．２ｍｓ」を算出する。
【００６７】
次処理実行決定部２３は、処理完了予測時間算出部２２から算出された各未実行コマンドの処理完了予測時間を取得し、取得した処理完了予測時間の中から、最短の処理完了予測時間を要するライトコマンドを次実行コマンドとして決定する。
【００６８】
例えば、次処理実行決定部２３は、上記算出した「コマンド番号：１」と「コマンド番号：２」と「コマンド番号：３」のそれぞれの処理完了予測時間の中から、最短の処理完了予測時間を要する「コマンド番号：１」を次実行コマンドとして決定する。
【００６９】
命令実行制御部２４は、次処理実行決定部２３により決定された次実行コマンドをデータ処理部２１に通知し、データ処理部２１は、通知された次実行コマンドのコマンド実行位置およびデータを、命令記憶部５１から読み出して、リード／ライト制御部４０に送信する。
【００７０】
なお、コマンド制御部２０は、上述した振動発生時に対応した次実行コマンドを決定した後、コマンド待ち行列に残っている未実行コマンドについて、再度処理完了予測時間の算出を行い、常に処理時間が最短となる未実行コマンドを次実行コマンドとして決定する。
【００７１】
［実施例１における記憶装置による処理の手順］
次に、図８および図９を用いて、実施例１における記憶装置による処理を説明する。図８は、実施例１における記憶装置の振動対応情報および差分情報の取得処理を説明するための図であり、図９は、実施例１における記憶装置の次実行コマンド決定処理を説明するための図である。
【００７２】
［実施例１における記憶装置による振動対応情報および差分情報の取得処理の手順］
図８に示すように、まず、実施例１における記憶装置１０は、命令記憶部５１にライトコマンドが登録されると（ステップＳ１０１肯定）、コマンド制御部２０によって次実行コマンドの決定が行われる。例えば、コマンド制御部２０は、処理完了予測時間算出部２２によって算出されたライトコマンドそれぞれの到達時間のみを用いて、次実行コマンドを決定する。コマンド制御部２０により次実行コマンドが決定されると（ステップＳ１０２肯定）、リード／ライト制御部４０を介したデータ処理部２１の制御により、第一ヘッド７０または第二ヘッド７１または第三ヘッド７２または第四ヘッド７３は、第一ディスク６０あるいは第二ディスク６１に対して書き込み処理を実行する（ステップＳ１０３）。
【００７３】
ここで、リード／ライト制御部４０は、処理を実行したヘッドと実行したヘッドにおける振動量とリトライ回数とを図示しないメモリに一時的に記憶させる（ステップＳ１０４）。
【００７４】
そして、データ処理部２１は、リード／ライト制御部４０のメモリが記憶する振動量が「０」でない場合、すなわち、振動が発生していた場合（ステップＳ１０５肯定）、処理を実行したヘッドと実行したヘッドにおける振動量とリトライ回数とを振動対応情報記憶部５２の振動対応情報に格納する（ステップＳ１０６）。
【００７５】
続いて、データ処理部２１は、処理を実行したヘッドが、直前実行ヘッドから変更されていた場合（ステップＳ１０７肯定）、変更前ヘッドと変更後ヘッドの振動量の増減量を算出し（ステップＳ１０８）、振動対応情報記憶部５２の差分情報に格納する（ステップＳ１０９）。
【００７６】
ここで、命令記憶部５１に未処理コマンドが残っている場合（ステップＳ１１０肯定）、実施例１における記憶装置１０は、ステップＳ１０２に戻って、同様の処理を実行する。
【００７７】
一方、命令記憶部５１に未処理コマンドが残っていない場合（ステップＳ１１０否定）、実施例１における記憶装置１０は、処理を終了する。すなわち、実施例１における記憶装置１０は、実行したコマンドにおいて振動が発生していた場合、振動対応情報を取得し、さらに、実行したコマンドにおいて、直前のコマンドからヘッドが変更された場合、差分情報を取得する。
【００７８】
［実施例１における記憶装置による次実行コマンド決定処理の手順］
図９に示すように、まず実施例１における記憶装置１０は、振動対応情報および差分情報が振動対応情報記憶部５２に格納されたのち、ホストコンピュータ９０からライトコマンドを受信した場合（ステップＳ２０１肯定）、データ処理部２１は、受信したライトコマンドを命令記憶部５１のコマンド待ち行列に登録する（ステップＳ２０２）。
【００７９】
そして、登録されたライトコマンドが一つであった場合（ステップＳ２０３否定）、次処理実行コマンド決定部２２は、登録されたライトコマンドを次実行コマンドとして決定する（ステップＳ２０５）。
【００８０】
これに反して、登録されたライトコマンドが複数であった場合（ステップＳ２０３肯定）、データ処理部２１は、複数のライトコマンドのコマンド実行位置を処理完了予測時間算出部２２に転送する。そして、処理完了予測時間算出部２２は、各ライトコマンドの到達時間を算出し（ステップＳ２０４）、次処理実行命令決定部２２は、処理完了予測時間算出部２２によって算出された各ライトコマンドの到達時間のみに基づいて次実行コマンドを決定する（ステップＳ２０５）。
【００８１】
そして、命令実行制御部２４、データ処理部２１およびリード／ライト制御部４０を介した制御により、第一ヘッド７０、第二ヘッド７１、第三ヘッド７２または第四ヘッド７３は、次実行コマンドに対応するライトデータの書き込み処理を実行する（ステップＳ２０６）。
【００８２】
書き込み処理終了後、リード／ライト制御部４０は、図示しないメモリに、処理を実行したヘッドと実行したヘッドにおける振動量とリトライ回数とを記憶させる（ステップＳ２０７）。
【００８３】
そして、命令記憶部５１に未処理コマンドがない場合（ステップＳ２０８否定）、実施例１における記憶装置１０は、処理を終了する。
【００８４】
これに反して、命令記憶部５１に未処理コマンドがある場合（ステップＳ２０８肯定）、データ処理部２１は、未処理コマンドが複数であるか否かを判定する（ステップＳ２０９）。
【００８５】
ここで、データ処理部２１は、未処理コマンドが一つである場合（ステップＳ２０９否定）、次処理実行コマンド決定部２２は、残っている一つのライトコマンドを次実行コマンドとして決定する（ステップＳ２１５）。そして、命令実行制御部２４、データ処理部２１およびリード／ライト制御部４０を介した制御により、第一ヘッド７０、第二ヘッド７１、第三ヘッド７２または第四ヘッド７３は、次実行コマンドに対応するライトデータの書き込み処理を実行する（ステップＳ２１６）。
【００８６】
書き込み処理終了後、リード／ライト制御部４０は、図示しないメモリに、処理を実行したヘッドと実行したヘッドにおける振動量とリトライ回数とを記憶させる（ステップＳ２１７）。そして、データ処理部２１は、未処理コマンドがあるか否かを判定する（ステップＳ２１８）。「ステップＳ２０９否定」の場合、ステップＳ２１８の判定は、「否定」となり、実施例１における記憶装置１０は、処理を終了する。
【００８７】
一方、データ処理部２１は、未処理コマンドが複数である場合（ステップＳ２０９肯定）、複数の未実行コマンドのコマンド実行位置を処理完了予測時間算出部２２に転送する。
【００８８】
そして、データ処理部２１は、リード／ライト制御部４０のメモリ内に記憶された振動量から、直前実行コマンドにおいて振動が発生しているか否かを判定する（ステップＳ２１０）。
【００８９】
ここで、データ処理部２１が直前実行コマンドにおいて振動が発生していないと判定した場合（ステップＳ２１０否定）、処理完了予測時間算出部２２は、未処理コマンドそれぞれの到達時間を算出する（ステップＳ２１３）。そして、処理完了予測時間算出部２２は、算出した到達時間をそのまま処理完了予測時間として算出し（ステップＳ２１４）、次処理実行コマンド決定部２２は、処理完了予測時間が最短となる未処理コマンドを次実行コマンドとして決定する（ステップＳ２１５）。こののち、実施例１における記憶装置１０は、ステップＳ２１６の次実行コマンド実行処理、ステップＳ２１７の各種情報記憶処理、およびステップＳ２１８の判定処理を行なう。
【００９０】
これに反して、直前実行コマンドにおいて振動が発生していると判定した場合（ステップＳ２１０肯定）、データ処理部２１は、リード／ライト制御部４０のメモリ内に記憶された直前実行ヘッドにおける振動量を取得し、処理完了予測時間算出部２２に転送する。
【００９１】
そして、処理完了予測時間算出部２２は、各未処理コマンドの実行予定ヘッドにおける振動量を導出する（ステップＳ２１１）。すなわち、処理完了予測時間算出部２２は、直前実行ヘッドと実行予定ヘッドとが同一である場合、直前実行ヘッドにおける振動量をそのまま実行予定ヘッドにおける振動量として導出する。また、処理完了予測時間算出部２２は、直前実行ヘッドと実行予定ヘッドとが異なる場合、直前実行ヘッドと実行予定ヘッドとに対応する増減量を差分情報からデータ処理部２１を介して取得して、直前実行ヘッドにおける振動量に加算することで、実行予定ヘッドにおける振動量を導出する。
【００９２】
そして、処理完了予測時間算出部２２は、導出した振動量と、データ処理部２１により転送された振動対応情報とに基づいて、各未処理コマンドの実行予定ヘッドにおけるリトライ回数を取得する（ステップＳ２１２）。続いて、処理完了予測時間算出部２２は、各未処理コマンドの到達時間を算出し（ステップＳ２１３）、算出した到達時間とステップＳ２１２にて取得したリトライ回数とから処理完了予測時間を算出する（ステップＳ２１４）。
【００９３】
そして、次処理実行コマンド決定部２３は、処理完了予測時間算出部２２によって算出された各ライトコマンドの処理完了予測時間に基づいて次実行コマンドを決定する（ステップＳ２１５）。
【００９４】
こののち、実施例１における記憶装置１０は、ステップＳ２１６の次実行コマンド実行処理、ステップＳ２１７の各種情報記憶処理、およびステップＳ２１８の判定処理を行なう。
【００９５】
なお、ステップＳ２１８の判定処理において、未処理コマンドがあると判定した場合（ステップＳ２１８肯定）、データ処理部２１は、ステップＳ２０９に戻って、未処理コマンドの数の判定処理を実行する。
【００９６】
一方、ステップＳ２１８の判定処理において、データ処理部２１により未処理コマンドがないと判定された場合（ステップＳ２１８否定）、実施例１における記憶装置１０は、処理を終了する。
【００９７】
なお、実施例１における記憶装置１０は、次実行コマンドの決定および実行処理を行なう際にも、振動量、リトライ回数および振動量の増減量を取得して、振動対応情報および差分情報を更新する。
【００９８】
[実施例１の効果]
上記したように、実施例１によれば、振動対応情報記憶部５２は、ディスクに対してヘッドによるライトコマンドの処理が実行されるごとに、処理を実行したヘッド、実行したヘッドにおける振動量および処理が完了するまでに試行されたリトライ回数を対応付けた振動対応情報を記憶する。そして、処理完了予測時間算出部２２は、コマンド待ち行列に登録されている未実行コマンドごとに実行予定ヘッドがディスク上の現在位置から処理予定位置に到達するまでに要する到達時間を算出する。
【００９９】
そして、処理完了予測時間算出部２２は、振動対応情報において実行予定ヘッドおよび実行予定ヘッドにおける現時点の振動量に対応するリトライ回数と到達時間から未実行コマンドに対応する処理が完了するまでに要する時間と予測される処理完了予測時間を算出する。そして、次処理実行命令決定部２３は、算出した各処理完了予測時間の中から、最短の処理完了予測時間を要するライトコマンドを次実行コマンドとして決定する。従って、個々のコマンドの振動発生時のリトライ回数を考慮して処理完了予測時間を算出することができ、振動発生時の処理時間が最短となるコマンドを正確に決定することが可能になる。
【０１００】
また、実施例１によれば、振動対応情報記憶部５２は、ライトコマンド処理の実行に用いられたヘッドが変更された場合、変更前後のヘッドにおける振動量の増減量を、その都度差分情報としてさらに記憶する。そして、処理完了予測時間算出部２２は、直前実行ヘッドから実行予定ヘッドが変更される場合、差分情報から取得した変更前後のヘッド間の振動量の増減量と直前実行ヘッドの振動量とから実行予定ヘッドの現時点での振動量を導出する。
【０１０１】
そして、処理完了予測時間算出部２２は、実行予定ヘッドおよび導出した振動量に対応するリトライ回数を振動対応情報から取得し、取得したリトライ回数と到達時間とから処理完了予測時間を算出する。従って、ヘッドチェンジが行なわれる場合でも、個々のコマンドの振動発生時のリトライ回数を考慮して処理完了予測時間を算出することができ、振動発生時の処理時間が最短となるコマンドをより正確に決定することが可能になる。
【実施例２】
【０１０２】
上述した実施例１では、振動対応情報をヘッドごとに記憶する場合について説明したが、実施例２では、振動対応情報をヘッドおよびヘッドの処理実行領域ごとに記憶する場合について説明する。
【０１０３】
［実施例２における記憶装置の概要および特徴］
まず最初に、図１０を用いて、実施例２における記憶装置の主たる特徴を具体的に説明する。図１０は、実施例２における記憶装置の概要および特徴を説明するための図である。
【０１０４】
実施例２における記憶装置は、ディスクに対してヘッドによるライトコマンドの処理が実行されるごとに、ヘッドのディスクにおける処理実行領域ごとの振動量とリトライ回数を取得し、振動対応情報にさらに対応付けて記憶する。例えば、実施例２における記憶装置は、図１０に示すように、ディスクを４つの処理実行領域（ゾーン１、ゾーン２、ゾーン３、ゾーン４）に区分し、処理を実行したヘッドの振動量およびリトライ回数を、ゾーンごとに対応付けてデータバッファの振動対応情報に記憶する。
【０１０５】
そして、実施例２における記憶装置は、実行予定ヘッド、実行予定ヘッドのディスクにおける実行予定領域および実行予定ヘッドの実行予定領域における現時点の振動量に対応するリトライ回数を、振動対応情報から取得して、処理完了予測時間を算出する。
【０１０６】
例えば、実施例２における記憶装置の制御部は、直前実行ヘッドが「１」、ヘッド「１」における振動量が「３」であり、未実行コマンドのコマンド実行位置が「ヘッド：１、ゾーン：２」である場合、処理完了予測時間を以下のように算出する。まず、実施例２における記憶装置の制御部は、実行予定ヘッドが「１」であり、直前実行ヘッド「１」と同一であることから、コマンド実行位置の現時点の振動量を「３」とする。
【０１０７】
そして、実施例２における記憶装置の制御部は、「ヘッド：１、ゾーン：２」における振動量「３」に対応するリトライ回数「１」を、図１０に示した振動対応情報から取得し、取得したリトライ回数「１」とディスク１回転の時間と到達時間とから処理完了予測時間を算出する。仮に、上記した未実行コマンドの実行予定ヘッドが処理予定位置に到達するまでに要する到達時間が「１２ｍｓ」であり、ディスク１回転の時間が「１１．１ｍｓ」である場合、実施例２における記憶装置の制御部は、処理完了予測時間を「１×１１．１＋１２＝２３．１ｍｓ」と算出する。
【０１０８】
また、実施例２における記憶装置の制御部は、実行予定ヘッドと直前実行ヘッドとが異なる場合には、実施例１と同様に、差分情報から増減量を取得することで、実行予定ヘッドの振動量を導出する。そして、実施例２における記憶装置の制御部は、導出した振動量と、実行予定ヘッドの実行予定領域とに対応するリトライ回数を振動対応情報から取得して、処理完了予測時間を算出する。
【０１０９】
そして、実施例２における記憶装置の制御部は、すべての未実行コマンドについて、上記処理完了予測時間を算出し、算出した各処理完了予測時間の中から、最短の処理完了予測時間を要するライトコマンドを次実行コマンドとして決定する。
【０１１０】
このようなことから、実施例２における記憶装置は、ヘッドの振動量が処理を実行するゾーンに依存して変動する場合にも対応して処理完了予測時間を算出することができ、振動発生時の処理時間が最短となるコマンドをさらに正確に決定することが可能になる。
【０１１１】
なお、本実施例では、振動対応情報において、ゾーン情報をさらに対応付ける場合について説明したが、本発明はこれに限定されるものではなく、差分情報においても、現ヘッドのゾーン情報およびシーク先ヘッドのゾーン情報をさらに対応付ける場合であってもよい。
【０１１２】
[実施例２における記憶装置の構成]
次に図２を用いて、実施例２における記憶装置の構成を説明する。図２は、実施例１における記憶装置の構成を示すブロック図である。
【０１１３】
実施例２における記憶装置１０は、図２に示すように、実施例１における記憶装置１０と同様の機能ブロックからなるが、振動対応情報記憶部５２が記憶する内容と、処理完了予測時間算出部２２が行なう処理の内容とが、実施例１と異なる。以下、これらを中心に説明する。
【０１１４】
実施例２における振動対応情報記憶部５２は、コマンド制御部２０を介して転送された「処理を実行したヘッドのディスクにおける処理実行領域」と「実行したヘッドのディスクにおける処理実行領域の振動量」と「リトライ回数」とを振動対応情報にさらに対応付けて記憶する。
【０１１５】
例えば、実施例２における振動対応情報記憶部５２は、処理実行領域が「ヘッド：１、ゾーン：１」であり、処理実行時の振動量が「４」であり、リトライ回数が「１」であった場合、「ヘッド：１、ゾーン：１、振動量：４、リトライ回数：１」とする振動対応情報を記憶する（図１０参照）。  
【０１１６】
なお、実施例２における振動対応情報記憶部５２は、実施例１と同様に、処理を実行したヘッドと直前実行ヘッドとが異なる場合には、変更前ヘッドの振動量と変更後ヘッドの振動量との増減量を差分情報にさらに対応付けて記憶する。
【０１１７】
そして、実施例２における処理完了予測時間算出部２２は、「実行予定ヘッドのディスクにおける実行予定領域」および「実行予定ヘッドの実行予定領域における現時点の振動量」に対応するリトライ回数を、振動対応情報から取得して、実施例１と同様に処理完了予測時間を算出する。
【０１１８】
なお、実施例２における処理完了予測時間算出部２２は、実施例１と同様に、直前実行ヘッドと実行予定ヘッドとが同一である場合、直前実行ヘッドの振動量を実行予定ヘッドの振動量として、リトライ回数を振動対応情報から取得する。
【０１１９】
また、実施例２における記憶装置の処理完了予測時間算出部２２は、実行予定ヘッドと直前実行ヘッドとが異なる場合には、実施例１と同様に、差分情報から増減量を取得することで、実行予定ヘッドの処理領域における振動量を導出する。そして、実施例２における記憶装置の処理完了予測時間算出部２３は、導出した振動量と、実行予定ヘッドの実行予定領域とに対応するリトライ回数を振動対応情報から取得して、処理完了予測時間を算出する。
【０１２０】
[実施例２における記憶装置による処理の手順]
次に、図１１および図１２を用いて、実施例２における記憶装置による処理を説明する。図１１は、実施例２における記憶装置の振動対応情報および差分情報の取得処理を説明するための図であり、図１２は、実施例２における記憶装置の次実行コマンド決定処理を説明するための図である。
【０１２１】
［実施例２における記憶装置による振動対応情報および差分情報の取得処理の手順］
図１１に示すように、実施例２における記憶装置による振動対応情報および差分情報の取得処理の手順は、図８で説明した実施例１における記憶装置による振動対応情報および差分情報の取得処理の手順と同様の手順となる。
【０１２２】
しかし、図１１に示す実施例２の手順において、図８のステップＳ１０４に対応するステップＳ３０４の処理と、図８のステップＳ１０６に対応するステップＳ３０６の処理とが実施例１と異なるので、以下、これについてのみ説明する。
【０１２３】
ステップＳ３０３における処理実行終了後、実施例２におけるリード／ライト制御部４０は、処理を実行したヘッドの処理実行領域と処理実行領域における振動量とリトライ回数とを図示しないメモリに一時的に記憶させる（ステップＳ３０４）。
【０１２４】
そして、実施例２におけるデータ処理部２１は、振動が発生していた場合（ステップＳ３０５肯定）、処理を実行したヘッドの処理実行領域と処理実行領域における振動量とリトライ回数とを対応付けて振動対応情報記憶部５２の振動対応情報に格納する（ステップＳ３０６）。
【０１２５】
［実施例２における記憶装置による次実行コマンド決定処理の手順］
図１２に示すように、実施例２における記憶装置による次実行コマンド決定処理の手順は、図９で説明した実施例１における記憶装置による次実行コマンド決定処理の手順と同様の手順となる。
【０１２６】
しかし、図１２に示す実施例２の手順において、図９のステップＳ２０７に対応するステップＳ４０７の処理と、図９のステップＳ２１２に対応するステップＳ４１２の処理と、図９のステップＳ２１７に対応するステップＳ４１７の処理とが実施例１と異なる。以下、これについてのみ説明する。
【０１２７】
ステップＳ４０６における書き込み処理終了後、実施例２におけるリード／ライト制御部４０は、処理を実行したヘッドの処理実行領域と処理実行領域における振動量とリトライ回数とを図示しないメモリに一時的に記憶させる（ステップＳ４０７）。
【０１２８】
ステップＳ４１０において、振動が発生した場合（ステップＳ４１０肯定）、実施例２における処理完了予測時間算出部２２は各未処理コマンドの処理実行領域における振動量を導出する。すなわち、処理完了予測時間算出部２２は、直前実行ヘッドと実行予定ヘッドとが同一である場合、直前実行ヘッドにおける振動量をそのまま実行予定ヘッドの処理実行領域における振動量として導出する。また、処理完了予測時間算出部２２は、直前実行ヘッドと実行予定ヘッドとが異なる場合、直前実行ヘッドの処理実行領域と実行予定ヘッドの処理実行領域とに対応する増減量を差分情報からデータ処理部２１を介して取得して、直前の処理実行領域における振動量に加算することで、実行予定ヘッドにおける振動量を導出する（ステップＳ４１１）。
【０１２９】
そして、実施例２における処理完了予測時間算出部２２は、導出した振動量と、データ処理部２１により転送された振動対応情報とに基づいて、各未処理コマンドの実行予定ヘッドの処理実行領域におけるリトライ回数を取得する（ステップＳ４１２）。
【０１３０】
ステップＳ４１６における次実行コマンドの書き込み処理終了後、実施例２におけるリード／ライト制御部４０は、処理を実行したヘッドの処理実行領域と処理実行領域における振動量とリトライ回数とを図示しないメモリに一時的に記憶させる（ステップＳ４１７）。
【０１３１】
[実施例２の効果]
上記したように、実施例２によれば、振動対応情報記憶部５２は、ディスクに対してヘッドによるライトコマンドの処理が実行されるごとに、ヘッドのディスクにおける処理実行領域ごとの振動量とリトライ回数を取得し、振動対応情報にさらに対応付けて記憶する。そして、処理完了予測時間算出部２２は、実行予定ヘッド、実行予定ヘッドのディスクにおける実行予定領域および実行予定領域における現時点の振動量に対応するリトライ回数と到達時間とから処理完了予測時間を算出する。従って、ヘッドの振動量が処理を実行するゾーンに依存して変動する場合にも対応して処理完了予測時間を算出することができ、振動発生時の処理時間が最短となるコマンドをさらに正確に決定することが可能になる。
【実施例３】
【０１３２】
上述した実施例１および２では、処理完了予測時間が最短となるコマンドを次実行コマンドとして決定する場合について説明したが、実施例３では、処理完了予測時間が長くなると予想されるコマンドを次実行コマンドとして決定する場合について説明する。
【０１３３】
［実施例３における記憶装置の概要および特徴］
まず、図１３を用いて、実施例３における記憶装置の主たる特徴を具体的に説明する。図１３は、実施例３における記憶装置の概要および特徴を説明するための図である。
【０１３４】
実施例３における記憶装置は、次実行コマンド決定処理を実行中に振動が消失した場合、直前実行ヘッドと差分情報とに基づいて、未実行コマンドの中から最も振動量が多いと予測される実行予定ヘッドを用いるコマンド群を抽出する。そして、実施例３における記憶装置は、抽出したコマンド群を次実行コマンド群として決定する。
【０１３５】
例えば、実施例３における記憶装置は、図１３に示すように、次実行コマンド決定処理を実行中に振動が消失した場合、差分情報に基づいて、直前実行ヘッド「１」に対応するシーク先ヘッドの振動量の増減量が最も多い「＋２」と予測されるシーク先ヘッド「４」を決定する。そして、実施例３における記憶装置は、図１３に示すように、コマンド待ち行列の中から予測されたシーク先ヘッドを用いるコマンド群「コマンド番号：４，６」を抽出し、抽出したコマンド群を次実行コマンド群として決定する。
【０１３６】
このようなことから、実施例３における記憶装置は、コマンド待ち行列に優先順位が低いとして未処理のまま残っているコマンドを振動消失時に一括して処理することができ、振動の増減に応じて処理時間を短縮することが可能になる。
【０１３７】
[実施例３における記憶装置の構成]
次に図２を用いて、実施例３における記憶装置の構成を説明する。図２は、実施例１における記憶装置の構成を示すブロック図である。
【０１３８】
実施例３における記憶装置１０は、図２に示すように、実施例１における記憶装置１０と同様の機能ブロックからなるが、次処理実行命令決定部２３の処理の内容が、実施例１と異なる。以下、これを中心に説明する。
【０１３９】
実施例３における次処理実行命令決定部２３は、次実行コマンド決定処理を実行中に振動が消失した場合、直前実行ヘッドと差分情報とに基づいて、未実行コマンドの中から最も振動量が多いと予測される実行予定ヘッドを用いるコマンド群を抽出する。そして、実施例３における次処理実行命令決定部２３は、抽出したコマンド群を次実行コマンド群として決定する（図１３参照）。
【０１４０】
[実施例３における記憶装置による次実行コマンド決定処理の手順]
次に、図１４を用いて、実施例３における記憶装置による次実行コマンド決定処理を説明する。図１４は、実施例３における記憶装置の次実行コマンド決定処理を説明するための図である。なお、実施例３における記憶装置による振動対応情報および差分情報の取得処理の手順は、図８を用いて説明した実施例１における記憶装置による振動対応情報および差分情報の取得処理の手順と同じであるので、説明を省略する。
【０１４１】
図１４に示すように、実施例３における記憶装置１０は、実施例１における記憶装置１０と同様に、図９におけるステップＳ２０１からステップＳ２１８の処理を実行する。
【０１４２】
しかし、図１４に示すように、実施例３における記憶装置１０は、ステップＳ２１０においてデータ処理部２１が、振動が発生していないと判定した場合（ステップＳ２１０否定）、以下で説明するステップＳ５０１〜ステップＳ５０３の処理を実行する。以下、これらについてのみ説明する。
【０１４３】
ステップＳ２１０において、データ処理部２１が直前実行コマンドにおける振動が発生していないと判定した場合（ステップＳ２１０否定）、実施例３における次処理実行命令決定部２３は、データ処理部２１を介して直前実行ヘッドを現ヘッドとする差分情報を記憶部５０より取得し、振動量が最も多いと予測される実行予定ヘッドを取得する（ステップＳ５０１）。
【０１４４】
そして、実施例３における次処理実行命令決定部２３は、データ処理部２１を介して取得した記憶部５０に登録されている未実行コマンドの中からステップＳ５０１において取得した実行予定ヘッドを用いる未実行コマンド群を抽出する（ステップＳ５０２）。
【０１４５】
そして、実施例３における次処理実行命令決定部２３は、抽出した未実行コマンド群を次実行コマンド群として決定し、データ処理部２３に通知することで、各ヘッドは、次実行コマンド群の処理を実行する（ステップＳ５０３）。
【０１４６】
なお、本実施例では、振動が発生していないと判定されるごとに、次実行コマンド群を決定する場合について説明した。しかし、本発明はこれに限定されるものではなく、ステップＳ２１０において、所定の回数（例えば、１０回）以上連続して、振動なしとする判定が行なわれた場合のみステップＳ５０１〜ステップＳ５０３の処理を実行する場合であってもよい。
【０１４７】
[実施例３の効果]
上記したように、実施例３によれば、次処理実行命令決定部２３は、次実行コマンド決定を実行中に振動が消失した場合、直前に処理を実行した際に用いられたヘッドと振動対応情報記憶部５２が記憶する差分情報に基づいて、未実行コマンドの中から最も振動量が多いと予測される実行予定ヘッドを用いるコマンド群を抽出する。そして、次処理実行命令決定部２３は、抽出した命令群を次に処理を実行する命令群として決定する。従って、コマンド待ち行列に優先順位が低いとして未処理のまま残っているコマンドを振動消失時に一括して処理することができ、振動の増減に応じて処理時間を短縮することが可能になる。
【実施例４】
【０１４８】
さて、これまで実施例１〜３における記憶装置について説明したが、本発明は上述した実施例以外にも、種々の形態にて実施されてもよいものである。そこで、以下では、種々の異なる実施例を（１）〜（４）に区分けして説明する。
【０１４９】
（１）コマンド
上記の実施例１〜３では、コマンド待ち行列にホストコンピュータ９０から受信したライトコマンドが登録される場合について説明した。しかし、本発明はこれに限定されるものではなく、コマンド待ち行列にホストコンピュータ９０から受信したリードコマンドが登録される場合であってもよい。
【０１５０】
例えば、記憶装置１０は、読込み処理を実行するヘッドの振動量とリトライ回数とを振動対応情報として記憶し、さらに、読込み処理を実行するヘッドが変更された場合の変更前後の振動量の増減量を差分情報として記憶する。そして、記憶装置１０は、新たにコマンド待ち行列に複数のリードコマンドが登録された場合、各未処理コマンドの処理完了予測時間を、振動対応情報や差分情報から導出したリトライ回数から算出する。
【０１５１】
これにより、ヘッドチェンジが行なわれる場合も含め、個々のリードコマンドの振動発生時のリトライ回数を考慮して処理完了予測時間を算出することができ、振動発生時の処理時間が最短となるリードコマンドを正確に決定することが可能になる。
【０１５２】
また、記憶装置１０は、次実行コマンド決定処理を実行中に振動が消失した場合、直前実行ヘッドと差分情報とに基づいて、未実行コマンドの中から最も振動量が多いと予測される実行予定ヘッドを用いるリードコマンド群を抽出する。
【０１５３】
これにより、コマンド待ち行列に優先順位が低いとして未処理のまま残っているリードコマンドを振動消失時に一括して処理することができ、振動の増減に応じて処理時間を短縮することが可能になる。
【０１５４】
（２）ディスクおよびヘッド
上記の実施例１〜３では、１枚のディスクの表面および裏面それぞれに、１つのヘッドが配置される場合について説明したが、本発明は、ディスクの同一面に、複数のヘッドが配置される場合あっても適用可能である。
【０１５５】
（３）記憶媒体
上記の実施例１〜３では、記憶装置１０が磁気ディスクを内蔵する場合について説明したが、本発明は、記憶装置１０が光ディスクを内蔵する場合であっても適用可能である。
【０１５６】
（４）システム構成等
また、上記の実施例において説明した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に更新することができる。例えば、実施例２における振動対応情報記憶部５２が記憶する振動対応情報での処理実行領域の区分は、任意に設定することができる。
【０１５７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示された構成要素と同一であることを要しない。すなわち、各処理部および各記憶部の分散・統合の具体的形態（例えば、図２の形態）は図示のものとは限られない。例えば、振動対応情報記憶部５２が設置される場所は、記憶部５０に限定されるものではなく、例えば、コマンド制御部２０内に設置される場合であってもよい。
【０１５８】
以上の本実施例を含む実施形態に関し、更に以下の付記を開示する。
【０１５９】
（付記１）記録媒体に対してヘッドによる読み出し処理または書き込み処理が実行されるごとに、当該処理を実行したヘッドと、当該処理が実行されたときにおける当該ヘッドの振動量と、当該処理が完了するまでに試行された処理の回数を示す処理試行回数とを対応付けた振動対応情報を記憶する振動対応情報記憶部と、
前記記録媒体に対して未だ実行されていない読み出し命令または書き込み命令である複数の未実行命令の中から次に実行すべき命令である次処理実行命令を決定する際に、前記未実行命令ごとに、当該命令に対応する処理の実行が予定される実行予定ヘッドが前記記録媒体上の現在位置から当該処理の実行が予定される処理予定位置に到達するまでの到達時間と、前記振動対応情報記憶部が記憶する前記振動対応情報において前記実行予定ヘッドおよび当該ヘッドにおける現時点での振動量に対応する処理試行回数とから、当該未実行命令に対応する処理が完了するまでに要する時間と予測される処理完了予測時間を算出する処理完了予測時間算出部と、
前記処理完了予測時間算出部によって算出された各未実行命令の処理完了予測時間に基づいて、前記処理完了予測時間が最小となる未実行命令を、前記次処理実行命令として決定する次処理実行命令決定部と、
を有することを特徴とする記憶装置。
【０１６０】
（付記２）前記振動対応情報記憶部は、処理の実行に用いられたヘッドが変更された場合、変更前後のヘッドにおける振動量の増減量を差分情報としてさらに記憶し、
前記処理完了予測時間算出部は、直前の処理に用いられたヘッドから前記実行予定ヘッドが変更される場合、前記振動対応情報記憶部が記憶する前記差分情報から取得した当該ヘッド間の振動量の増減量と前記直前の処理に用いられたヘッドの振動量とから当該実行予定ヘッドの現時点での振動量を導出し、当該導出した当該実行予定ヘッドの現時点の振動量に対応する処理試行回数と前記到達時間とから前記処理完了予測時間を算出することを特徴とする付記１に記載の記憶装置。
【０１６１】
（付記３）前記振動対応情報記憶部は、処理実行時に用いられたヘッドの前記記録媒体における処理実行領域を前記振動対応情報にさらに対応付けて記憶し、
前記処理完了予測時間算出部は、前記振動対応情報において前記実行予定ヘッド、当該ヘッドの記録媒体における処理実行領域および当該処理実行領域における現時点での振動量に対応する処理試行回数と前記到達時間とから前記処理完了予測時間を算出することを特徴とする付記１に記載の記憶装置。
【０１６２】
（付記４）前記次処理実行命令決定部は、現時点での振動量が所定の閾値以下である場合、直前に処理を実行した際に用いられたヘッドと前記振動対応情報記憶部が記憶する前記差分情報とに基づいて、前記未実行命令の中から最も振動量が多いと予測される前記実行予定ヘッドを用いる命令群を抽出し、抽出した命令群を次に処理を実行する命令群として決定することを特徴とする付記２または３に記載の記憶装置。
【０１６３】
（付記５）記録媒体に対してヘッドによる読み出し処理または書き込み処理を実行する記憶装置を制御する制御装置であって、
読み出し処理または書き込み処理が実行されるごとに、当該処理を実行したヘッドと、当該処理が実行されたときにおける当該ヘッドの振動量と、当該処理が完了するまでに試行された処理の回数を示す処理試行回数とを対応付けた振動対応情報を記憶する振動対応情報記憶部と、
前記記録媒体に対して未だ実行されていない読み出し命令または書き込み命令である複数の未実行命令の中から次に実行すべき命令である次処理実行命令を決定する際に、前記未実行命令ごとに、当該命令に対応する処理の実行が予定される実行予定ヘッドが前記記録媒体上の現在位置から当該処理の実行が予定される処理予定位置に到達するまでの到達時間と、前記振動対応情報記憶部が記憶する前記振動対応情報において前記実行予定ヘッドおよび当該ヘッドにおける現時点での振動量に対応する処理試行回数とから、当該未実行命令に対応する処理が完了するまでに要する時間と予測される処理完了予測時間を算出する処理完了予測時間算出部と、
前記処理完了予測時間算出部によって算出された各未実行命令の処理完了予測時間に基づいて、前記処理完了予測時間が最小となる未実行命令を、前記次処理実行命令として決定する次処理実行命令決定部と、
を有することを特徴とする制御装置。
【０１６４】
（付記６）前記振動対応情報記憶部は、処理の実行に用いられたヘッドが変更された場合、変更前後のヘッドにおける振動量の増減量を差分情報としてさらに記憶し、
前記処理完了予測時間算出部は、直前の処理に用いられたヘッドから前記実行予定ヘッドが変更される場合、前記振動対応情報記憶部が記憶する前記差分情報から取得した当該ヘッド間の振動量の増減量と前記直前の処理に用いられたヘッドの振動量とから当該実行予定ヘッドの現時点での振動量を導出し、当該導出した当該実行予定ヘッドの現時点の振動量に対応する処理試行回数と前記到達時間とから前記処理完了予測時間を算出することを特徴とする付記５に記載の制御装置。
【０１６５】
（付記７）前記振動対応情報記憶部は、処理実行時に用いられたヘッドの前記記録媒体における処理実行領域を前記振動対応情報にさらに対応付けて記憶し、
前記処理完了予測時間算出部は、前記振動対応情報において前記実行予定ヘッド、当該ヘッドの記録媒体における処理実行領域および当該処理実行領域における現時点での振動量に対応する処理試行回数と前記到達時間とから前記処理完了予測時間を算出することを特徴とする付記５に記載の制御装置。
【０１６６】
（付記８）前記次処理実行命令決定部は、現時点での振動量が所定の閾値以下である場合、直前に処理を実行した際に用いられたヘッドと前記振動対応情報記憶部が記憶する前記差分情報とに基づいて、前記未実行命令の中から最も振動量が多いと予測される前記実行予定ヘッドを用いる命令群を抽出し、抽出した命令群を次に処理を実行する命令群として決定することを特徴とする付記６または７に記載の制御装置。
【図面の簡単な説明】
【０１６７】
【図１】実施例１における記憶装置の概要および特徴を説明するための図である。
【図２】実施例１における記憶装置の構成を説明するためのブロック図である。
【図３】実施例１における振動対応情報を説明するための図である。
【図４】実施例１における差分情報を説明するための図である。
【図５】処理完了予測時間算出部における到達時間算出処理を説明するための図である。
【図６】実施例１における処理完了予測時間算出部の処理完了予測時間算出処理を説明するための図である。
【図７】実施例１における処理完了予測時間算出部の処理完了予測時間算出例を説明するための図である。
【図８】実施例１における記憶装置の振動対応情報および差分情報の取得処理を説明するための図である。
【図９】実施例１における記憶装置の次実行コマンド決定処理を説明するための図である。
【図１０】実施例２における記憶装置の概要および特徴を説明するための図である。
【図１１】実施例２における記憶装置の振動対応情報および差分情報の取得処理を説明するための図である。
【図１２】実施例２における記憶装置の次実行コマンド決定処理を説明するための図である。
【図１３】実施例３における記憶装置の概要および特徴を説明するための図である。
【図１４】実施例３における記憶装置の次実行コマンド決定処理を説明するための図である。
【符号の説明】
【０１６８】
１０  記憶装置
２０  コマンド制御部
２１  データ処理部
２２  処理完了予測時間算出部
２３  次処理実行命令決定部
２４  命令実行制御部
３０  振動検知部
４０  リード／ライト制御部
５０  記憶部
５１  命令記憶部
５２  振動対応情報記憶部
６０  第一ディスク
６１  第二ディスク
７０  第一ヘッド
７１  第二ヘッド
７２  第三ヘッド
７３  第四ヘッド
８０  Ｉ／Ｆ
９０  ホストコンピュータ
【図１】
2010123162.tif 000003
【図２】
2010123162.tif 000004
【図３】
2010123162.tif 000005
【図４】
2010123162.tif 000006
【図５】
2010123162.tif 000007
【図６】
2010123162.tif 000008
【図７】
2010123162.tif 000009
【図８】
2010123162.tif 000010
【図９】
2010123162.tif 000011
【図１０】
2010123162.tif 000012
【図１１】
2010123162.tif 000013
【図１２】
2010123162.tif 000014
【図１３】
2010123162.tif 000015
【図１４】
2010123162.tif 000016