(57)【特許請求の範囲】
【請求項１】
ホストから発行された書込コマンドを媒体への書込完了によって終了する情報記憶装置に於いて、
ホストから連続して発行された複数の書込コマンドを受信してコマンドキューに格納するコマンド受信部と、
前記コマンドキューの先頭位置からの書込コマンドによりホストからデータを受信してデータバッファに格納するデータ受信部と、
前記データ受信部によるデータの受信完了で受信データの媒体書込みを開始する媒体書込部と、
前記媒体書込部による書込完了でステータスをホストに報告して実行中の書込コマンドを終了させるステータス報告部と、
前記媒体書込部による受信データの媒体書込完了を待たずに、次の書込コマンドによりホストからデータを先取データとして受信して前記データバッファに格納する先取処理部と、
を備え、
前記データバッファを所定サイズの複数の領域に分割すると共に、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドと先取コマンドの各々に対応するデータのデータサイズに応じて特定のデータバッファ領域をサブ領域に分割して使用することを特徴とする情報記憶装置。
【請求項２】
請求項１記載の情報記憶装置に於いて、更に、前記コマンドキューに対し、次に受信するコマンド格納位置を示す次コマンド受信ポインタＰ１、ホストからのデータ受信開始または受信中のコマンドを示すデータ受信ポインタＰ２、前記データバッファから媒体へのデータ書込開始または書込中のコマンドを示す媒体書込ポインタＰ３、及び次にステータスを報告するコマンドを示すステータス報告ポインタＰ４を設け、
前記コマンド受信部によるコマンド受信完了で前記コマンド受信ポインタＰ１を歩進し、前記データ受信部によるデータ受信完了で前記データ受信ポインタＰ２を歩進し、前記媒体書込部による媒体書込完了で前記媒体書込ポインタＰ３を歩進し、更に前記ステータス応答部によるステータス報告完了で前記ステータス報告ポンイタＰ４を歩進し、
前記コマンド受信ポインタＰ１、データ受信ポインタＰ２、媒体書込ポインタＰ３及びステータス報告ポンイタＰ４の順番に配置し、各ポインタが歩進する毎に、歩進したポインタの示す処理を実行することを特徴とする情報記憶装置。
【請求項３】
請求項１記載の情報記憶装置に於いて、前記コマンドキューに複数の先取データ受信済みの先取書込コマンドがある場合、前記複数の先取書込コマンドに対応するデータを媒体に書込む実行順序をアクセス時間の短い順に並び替えて最適化する最適化部を設けたことを特徴とする情報記憶装置。
【請求項４】
請求項３記載の情報記憶装置に於いて、前記最適化部は、前記先取書込コマンドのアクセス時間を、先行するコマンドに対応するデータの媒体書込完了から次のコマンドに対応するデータの媒体書込み開始までの時間として求め、アクセス時間の短い順に媒体に書込む実行順序を変えて最適化することを特徴とする情報記憶装置。
【請求項５】
請求項１記載の情報記憶装置に於いて、前記データバッファを複数の領域に分割し、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドに対応するデータで使用するデータバッファ領域と、先取コマンドに対応するデータで使用するデータバッファ領域を同一としたことを特徴とする情報記憶装置。
【請求項６】
請求項５記載の情報記憶装置に於いて、前記データバッファを所定サイズの複数の領域に分割すると共に、各領域を最初に格納した書込コマンドのデータで決まる所定サイズで細分化したサブ領域に分割し、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドと先取コマンドの各々に対応するデータで特定のデータバッファ領域のサブ領域を使用することを特徴とする情報記憶装置。
【請求項７】
ホストから発行された書込コマンドを、ホストからのデータ受信完了によって終了する情報記憶装置に於いて、
ホストから連続して発行された複数の書込コマンドを受信してコマンドキューに格納するコマンド受信部と、
前記コマンドキューの先頭位置からの書込コマンドによりホストからデータを受信してデータバッファに格納するデータ受信部と、
前記データ受信部によるデータ受信完了でステータスをホストに報告して実行中の書込コマンドを終了させるステータス報告部と、
前記データ受信部によるデータの受信完了で受信データの媒体書込みを開始する媒体書込部と、
前記コマンドキューに複数の先取データ受信済みの先取書込コマンドがある場合、前記複数の先取書込コマンドに対応するデータを媒体に書込む実行順序をアクセス時間の短い順に並び替えて最適化する最適化部とを設け、
前記データバッファを所定サイズの複数の領域に分割すると共に、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドと先取コマンドの各々に対応するデータのデータサイズに応じて特定のデータバッファ領域をサブ領域に分割して使用することを特徴とする情報記憶装置。
【請求項８】
請求項７記載の情報記憶装置に於いて、前記最適化部は、前記先取書込コマンドのアクセス時間を、先行するコマンドに対応するデータの媒体書込完了から次のコマンドに対応するデータの媒体書込み開始までの時間として求め、アクセス時間の短い順に媒体に書込む実行順序を変えて最適化することを特徴とする情報記憶装置。
【請求項９】
請求項７記載の情報記憶装置に於いて、前記データバッファを複数の領域に分割し、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドに対応するデータで使用するデータバッファ領域と、先取コマンドに対応するデータで使用するデータバッファ領域を同一としたことを特徴とする情報記憶装置。
【請求項１０】
請求項９記載の情報記憶装置に於いて、前記データバッファを所定サイズの複数の領域に分割すると共に、各領域を最初に格納した書込コマンドのデータに基づく所定サイズで細分化したサブ領域に分割し、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドと先取コマンドの各々に対応するデータで特定のデータバッファ領域のサブ領域を使用することを特徴とする情報記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ホストからの書込コマンドで転送されたデータを媒体に書き込む磁気ディスクドライブ等の情報記憶装置に関し、特に、ホストから連続して発行された複数の書込コマンドに対し、媒体書込中に後続する書込コマンドのデータを先取データとして受信して処理する情報記憶装置に関する。
【０００２】
【従来技術】
従来、ハードディスクとして知られた情報記憶装置にあっては、ホストがハードディスクにデータを書き込む場合、ホストは書込コマンドを発行し、この書込コマンドによりハードディスクがホストにデータを要求してデータバッファに格納し、データ受信完了でディスク媒体にデータを書き込む。ディスク媒体に対するデータ書込完了をすると、ハードディスクは、書込コマンドの実行結果を示すステータスをホストに報告し、その書込コマンドが完了する。
【０００３】
ホストからの書込コマンドは、書込開始アドレスと書込ブロック数を示す情報が示されており、ハードディスクドライブはホストインタフェースを通してＭＣＵで書込コマンドを認識する。ホストからのデータはデータバッファに一時的に記憶され、ブロック単位でディスク媒体に書き込まれる。ステータス報告には次の２つの方式がある。
【０００４】
▲１▼データ受信が完了した時点でステータス報告を行ってコマンドを完了するデータ受信コマンド完了方式；
▲２▼ディスク書込みが完了した時点でステータス報告を行ってコマンドが完了する媒体書込コマンド完了方式；
データ受信コマンド完了方式は、ホストからのデータ受信の完了でコマンドを終了することにより、次のコマンドの処理の開始を容易にしている。つまり、データ先取りを目的として発行されるコマンド完了方式である。これに対し媒体書込コマンド完了方式は、データがディスク媒体に正常に書かれたかをホストが確認しながら書き込むコマンド完了方式である。
【０００５】
ハードディスクドライブは、複数の書込コマンドが連続して発行された場合、複数の書込コマンドの実行前にアクセス時間の短い順に並び替えて実行することによりコマンド処理能力を向上させる。一度実行が開始されれば、その後、実行順序は変えない。ここでの実行開始は、データ受信の開始を意味する。
【０００６】
データバッファは、セグメントと呼ばれるいくつかのブロックに分割され、データ書込みまたは読出コマンドで一つのセグメントを使用して実行する。データバッファを複数のブロックに分割する目的は、読出コマンドの実行時に、その読出コマンドのデータ又はそれ以降のデータをデータバッファに保持しておき、データバッファに保持されているデータの読出コマンドがそれ以降のコマンドで発行されたならば、ディスク媒体から読まずに直接データバッファからデータをホストに転送してコマンド処理を短縮することである。
【０００７】
【発明が解決しようとする課題】
ところで、データ受信コマンド完了方式においてデータの先取りを実施する目的は、発行された書込コマンドの先頭セクタまでの移動完了までに、書込データ全部または一部がデータバッファに受信されており、データバッファに書込データが無いことによるディスク媒体の回転待ちを少なくすることにある。
【０００８】
つまり、データ先取りしない場合は目的セクタまでの移動中に受信しなければならないが、データを先取りしている場合には前の書込コマンドによるディスク媒体の書込時間もホストからの先取データの受信時間に含むため、データ受信に余裕があり、データバッファに書込データが無いことによる回転待ちが発生しにくくなるからである。しかし、データの先取りを実施するには以下の問題がある。
【０００９】
１）コマンド発行方式に関する問題点
図１６は、書込データの受信が完了した時点でコマンドを完了するデータ受信コマンド完了方式について、ホストから２ブロックの書込コマンドが発行された際のデータの流れである。
【００１０】
図１６（Ａ）はホストインタフェースであり、２ブロックのデータを指定した２つの書込コマンドＣＭＤ１，ＣＭＤ２が連続して発行される。時刻ｔ１で書込コマンドＣＭＤ１，ＣＭＤ２の受信が完了すると、ハードディスクドライブは書込コマンドＣＭＤ１の実行によりホストから２ブロックのデータＤ１１，Ｄ１２を受信してデータバッファに格納し、データ受信完了でステータスＳＴＳ１をホストに報告し、書込コマンドＣＭＤ１を時刻ｔ２で完了させる。
【００１１】
このため次の書込コマンドＣＭＤ２のデータＤ２１，Ｄ２２の受信が開始され、データバッファに先取データとして格納され、データ受信完了でステータスＳＴＳ２を報告して書込コマンドＣＭＤ２を時刻ｔ４で完了させる。
【００１２】
図１６（Ｂ）は、ディスクインタフェースであり、ホストからの２ブロックのデータＤ１１，Ｄ１２の受信に並行して書込コマンドＣＭＤ１で指定される目的セクタへのヘッド移動を開始し、ディスク媒体へのデータ書込を時刻ｔ３で完了する。
【００１３】
このように書込データの受信が完了した時点でコマンドを完了するデータ受信コマンド完了方式は、ホストに対してディスク媒体に対するデータ書込結果を報告する必要がないため、次の書込コマンドの処理を開始することを容易にし、所謂データの先取りができる。
【００１４】
しかし、データ受信コマンド完了方式でディスク媒体への書込みに失敗した場合、その書込コマンドは既に終了しているため、最後に先取りした書込コマンドの次の書込コマンドを実行せずに先取コマンドで失敗したことをホストに報告する。
【００１５】
また、ホストから連続して発行した複数の先取コマンドのディスク書込みで失敗した場合、最後に失敗した先取コマンドの個所のみ報告される。このため、ホストは報告された個所以前の先取コマンドの全てに対して再書込みを実施しなければならないという問題がある。
【００１６】
この問題を解消するため、ホストはディスク媒体に正常に書かれたことを確認できるディスク書込コマンド完了方式を採用するのが一般的であった。
【００１７】
図１７は、ディスク書込みが完了した時点でコマンドを完了するディスク書込コマンド完了方式について、ホストから２ブロックの書込コマンドが発行された際のデータの流れである。
【００１８】
図１７（Ａ）はホストインタフェースであり、２ブロックのデータを指定した２つの書込コマンドＣＭＤ１，ＣＭＤ２が連続して発行される。時刻ｔ１で書込コマンドＣＭＤ１，ＣＭＤ２の受信が完了すると、ハードディスクドライブは書込コマンドＣＭＤ１の実行によりホストから２ブロックのデータＤ１１，Ｄ１２を受信してデータバッファに格納する。
【００１９】
図１７（Ｂ）は、ディスクインタフェースであり、ホストからの２ブロックのデータＤ１１，Ｄ１２の受信が時刻ｔ２で完了すると、書込コマンドＣＭＤ１で指定される目的セクタへのヘッド移動を開始し、ディスク媒体へのデータＤ１１，Ｄ１２の書込みを時刻ｔ３で完了する。
【００２０】
このディスク書込完了でホストインタフェースはステータスＳＴＳ１をホストに報告し、書込コマンドＣＭＤ１を完了させる。続いて書込コマンドセＣＭＤ２のデータＤ２１，Ｄ２２が受信され、ヘッド移動の後にディスク書込みが行われる。
【００２１】
しかし、近年、複数のホストや複数のターゲット（ハードディスクドライブ等）を接続したシステムが増加し、データの先取りを実施しない場合、他のターゲットとホストが交信中のためにデータ受信が遅れ、目的セクタへの移動完了までにデータを受信できないという短所が無視できなくなってきている。
【００２２】
２）実行順序の最適化に関する問題点
図１６のように、データ受信コマンド完了方式でデータの先取りを行う場合、コマンド受信からデータ受信を開始するまでの時間が短くなるため、ディスク書込みのための書込コマンドの実行順序が最適化されずにコマンドの実行が開始される可能性がある。もし、最適化されていなければ、先取りを実施しない場合よりも処理能力が低下する可能性がある。
【００２３】
３）先読みデータの破壊に関する問題点
図１７のように、媒体書込コマンド完了方式でデータの先取りを実施しない場合は、データバッファの１つのセグメントを使って連続した書込コマンドを処理するため、他のセグメントのデータを破壊することはない。しかし図１７のように、データ受信コマンド完了方式によってデータ先取りを実施する場合は、複数のセグメントを使用するため、既に各セグメントに保存されているリードデータが失われ、リード性能が低下する可能性がある。
【００２４】
本発明は、ディスク媒体への書込み完了によって書込コマンドを終了する場合にも、データの先取りを実施することにより、書込データをデータバッファに確保して処理能力を向上するようにした情報記憶装置を提供することを目的とする。
【００２５】
また本発明の他の目的は、複数の書込コマンドのデータを受信した場合のディスク書込み順序の最適化と、ディスク書込中のコマンドと先取コマンドで使用するバッファ領域を同一とすることにより、データの先取りによるコマンド処理能力を向上するようにした情報記憶装置を提供することを目的とする。
【００２６】
【課題を解決するための手段】
図１は本発明の原理説明図である。
【００２７】
本発明は、ホストから発行された書込コマンドを媒体への書込完了によって終了する情報記憶装置であり、図１（Ａ）ように、ホストから連続して発行された複数の書込コマンドを受信してコマンドキュー７６に格納するコマンド受信部６６と、コマンドキュー７６の先頭位置からの書込コマンドの実行によりホストからデータを受信してデータバッファ２４に格納するデータ受信部６８と、データ受信部６８によるデータの受信完了で受信データの媒体書込みを開始する媒体書込部７０と、媒体書込部７０による書込完了でステータスをホストに報告して実行中の書込コマンドを終了させるステータス報告部７２と、媒体書込部７０による受信データの媒体書込完了を待たずに、次の書込コマンドの実行によりホストからデータを先取データとして受信してデータバッファ２４に格納する先取処理部７４とを設けたことを特徴とする。
【００２８】
このように本発明の情報記憶装置は、書込コマンドをディスク媒体への書込完了によって終了する場合、図１（Ｂ）のように、ホストから連続して発行された複数の書込コマンドＣＭＤ１，ＣＭＤに対して実行中のコマンドＣＭＤ１のデータＤ１１，Ｄ１２の受信が完了したならば、ディスク媒体への書込完了を待たずに次のコマンドＣＭＤ２のデータＤ２１，Ｄ２２の受信を開始することにより、コマンド処理能力を向上できる。
【００２９】
即ち、書込コマンドをディスク媒体への書込完了によって終了する従来装置では、データバッファに書込データが無いことによるディスク書込処理の遅れが、アクセス時間が短い場合や複数接続で発生しやすく処理能力低下の要因であったが、本発明により、データバッファに先取データが確保されることで、処理性能低下を無くし安定した処理能力が得られる。
【００３０】
ここで、実行中の書込コマンド以降のコマンドのデータ受信をデータの先取りと定義し、データの先取りを実施しているコマンドを先取コマンドと定義する。
【００３１】
本発明の情報記憶装置は、更に、コマンドキュー７６に対し、図１（Ｃ）のように、次に受信するコマンド格納位置を示す次コマンド受信ポインタＰ１、ホストからのデータ受信開始又は受信中のコマンドを示すデータ受信ポインタＰ２、前記データバッファから媒体へのデータ書込開始又は書込中のコマンドを示す媒体書込ポインタＰ３、及び次にステータスを報告するコマンドを示すステータス報告ポインタＰ４を設ける。
【００３２】
コマンド受信部６６によるコマンド受信完了でコマンド受信ポインタＰ１を歩進し、データ受信部６８によるデータ受信完了でデータ受信ポインタＰ２を歩進し、媒体書込部７０による媒体書込完了で媒体書込ポインタＰ３を歩進し、更にステータス報告部７２によるステータス報告完了でステータス報告ポンイタＰ４を歩進する。
【００３３】
コマンド受信ポインタＰ１、データ受信ポインタＰ２、媒体書込ポインタＰ３及びステータス報告ポンイタＰ４の順番に配置し、各ポインタが歩進する毎に、歩進したポインタの示す処理を実行する。
【００３４】
本発明の情報記憶装置は、コマンドキュー７６に複数の先取データ受信済みの先取書込コマンドがある場合、複数の先取書込コマンドの実行順序をアクセス時間の短い順に並び替えて最適化する最適化部７５を設ける。
【００３５】
この最適化部７５は、先取書込コマンドのアクセス時間を、先行するコマンドの媒体書込み完了から次のコマンドの媒体書込開始までの時間として求め、アクセス時間の短い順に実行順序を変えて最適化する。
【００３６】
このようにコマンドキューに複数のデータ受信済みの先取コマンドがある場合、先取コマンドの実行順序をアクセス時間の短い順に順序を変えることにより、コマンド処理能力を向上できる。即ち、従来の先取データの処理では、実行順序の最適化が不十分なための処理能力低下や、先読みデータの破壊によるデータ読出コマンドの処理能力の低下を防止するために、高性能なＭＰＵをハードディスクドライブに設けて短時間で最適化を実施するようにしたり、大容量なデータバッファをもって先読みするデータの個数を増やすなどして対策したが、本発明は、高価なハードウェアを用いることなく、先取コマンドの実行順序の最適化によりコマンド処理能力を向上できる。
【００３７】
本発明の情報記憶装置は、データバッファ２４を複数の領域に分割し、ホストから連続して発行された複数の書込コマンドをコマンドキューに格納した際には、ディスク書込中のコマンドで使用するバッファ領域と、先取コマンドで使用するバッファ領域を同一としたことを特徴とする。
【００３８】
例えばデータバッファを所定サイズの複数の領域に分割すると共に、各領域を最初のコマンドで格納したデータに基づく所定サイズで細分化したサブ領域に分割し、ホストから連続して発行された複数の書込コマンドをコマンドキューに格納した際には、ディスク書込中のコマンドと先取コマンドの各々で特定のバッファ領域のサブ領域を使用する。
【００３９】
またデータバッファを所定サイズの複数の領域に分割すると共に、ホストから連続して発行された複数の書込コマンドをコマンドキューに格納した際には、ディスク書込中のコマンドと先取コマンドの各々のデータサイズに応じて特定のバッファ領域をサブ領域に分割して使用するようにしてもよい。
【００４０】
このようにディスク書込中のコマンドと先取コマンドで使用するバッファ領域を同一としたことで、複数の書込コマンドの最初のコマンドで使用したバッファ領域の空領域に先取データを受信することになり、他の領域にある先読データを破壊せずに、データの先取りを実現する。
【００４１】
本発明の別の形態にあっては、ホストから発行された書込コマンドをホストからのデータ受信完了によって終了する情報記憶装置を対象とする。このデータ受信コマンド完了方式の情報記憶装置は、ホストから連続して発行された複数の書込コマンドを受信してコマンドキューに格納するコマンド受信部と、コマンドキューの先頭位置からの書込コマンドの実行によりデータを受信してデータバッファに格納するデータ受信部と、データ受信部によるデータ受信完了でステータスをホストに報告して実行中の書込コマンドを終了させるステータス報告部と、データ受信部によるデータの受信完了で受信データの媒体書込みを開始する媒体書込部と、コマンドキューに複数の先取データ受信済みの先取書込コマンドがある場合、前記複数の先取書込コマンドの実行順序をアクセス時間の短い順に並び替えて最適化する最適化部とを設けたことを特徴とする。
【００４２】
ここで最適化部は、先取書込コマンドのアクセス時間を、先行するコマンドの媒体書込完了から次のコマンドの媒体書込み開始までの時間として求め、アクセス時間の短い順に実行順序を変えて最適化する。
【００４３】
このようにコマンドキューに複数のデータ受信済みの先取コマンドがある場合、先取コマンドの実行順序をアクセス時間の短い順に順序を変えることにより、コマンド処理能力を向上できる。
【００４４】
また、この情報記憶装置は、データバッファを複数の領域に分割し、ホストから連続して発行された複数の書込コマンドをコマンドキューに格納した際には、ディスク書込中のコマンドで使用するバッファ領域と、先取コマンドで使用するバッファ領域を同一としたことを特徴とする。
【００４５】
例えばデータバッファを所定サイズの複数の領域に分割すると共に、各領域を最初のコマンドの実行で格納したデータに基づく所定サイズで細分化したサブ領域に分割し、ホストから連続して発行された複数の書込コマンドをコマンドキューに格納した際には、ディスク書込中のコマンドと先取コマンドの各々で特定のバッファ領域のサブ領域を使用する。
【００４６】
またデータバッファを所定サイズの複数の領域に分割すると共に、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、ディスク書込中のコマンドと先取コマンドの各々のデータサイズに応じて特定のバッファ領域をサブ領域に分割して使用してもよい。
【００４７】
このようにディスク書込中のコマンドと先取コマンドで使用するバッファ領域を同一としたことで、複数の書込コマンドの最初のコマンドで使用したバッファ領域の空領域に先取データを受信することにより、他の領域にある先取データを破壊せずに、データの先取りを実現する。
【００４８】
【発明の実施の形態】
図２は、本発明が適用されるハードディスクドライブのブロック図である。図２において、ハードディスクドライブは、ＳＣＳＩコントローラ１０、ドライブコントローラ１２及びディスクエンクロージャ１４で構成される。
【００４９】
ＳＣＳＩコントローラ１０には、ＭＣＵ１６、制御記憶として使用されるフラッシュメモリ１８、制御プログラムを格納したプログラムメモリ２０、ハードディスクコントローラ２２及びデータバッファ２４が設けられる。ドライブコントローラ１２には、ドライブインタフェースロジック２６、ＤＳＰ２８、リード／ライトＬＳＩ３０、サーボ復調部３２及びサーボドライバ３４が設けられる。
【００５０】
ディスクエンクロージャ１４にはヘッドＩＣ３６が設けられ、ヘッドＩＣ３６をライトヘッドとリードヘッドを備えた複合ヘッド３８−１〜３８−６に接続している。複合ヘッド３８−１〜３８−６は、磁気ディスク４０−１〜４０−３の各記録面に対し設けられ、ＶＣＭ４４による駆動でディスク媒体４０−１〜４０−３と任意のセクタ位置に位置決めされる。磁気ディスク４０−１〜４０−３はスピンドルモータ４２により一定速度で回転される。
【００５１】
ホストから発行された書込コマンドは、ハードディスクコントローラ２２を介してフラッシュメモリ１８のコマンドキューに格納される。ＭＣＵ１６はフラッシュメモリ１８のコマンドキューの先頭位置から書込コマンドを取り出し、ハードディスクコントローラ２２を使用してホストに対し書込データの転送を要求する。
【００５２】
ホストから転送された書込データは、データバッファ２４に格納される。データバッファ２４に書込データの格納が終了すると、ＭＣＵ１６はハードディスクコントローラ２２を起動して、磁気ディスク４０−１〜４０−３側に対する書込みを行う。
【００５３】
即ち、データバッファ２４に格納された書込データは、ハードディスクコントローラ２２、ドライブインタフェースロジック２６、リード／ライトＬＳＩ３０のライト系ヘッドＩＣ３６を通って、例えば複合ヘッド３８−１から磁気ディスク４０−１の書込コマンドで指定されたセクタ位置に書き込まれる。
【００５４】
同時にＤＳＰ２８は、書込コマンドで与えられたセクタ位置に対するＶＣＭ４４によるヘッドの位置付けを、サーボドライバ３４とサーボ復調部３２を介して得られたサーボ復調信号により制御し、複合ヘッド３８−１が書込コマンドを指定された目的セクタに位置付けられたときに書込データのディスク書込みを実行する。
【００５５】
このようにデータバッファ２４からの書込データの磁気ディスクへの書込みが完了すると、ＭＣＵ１６はハードディスクコントローラ２２を介してホストに書込データが正常終了したことを示すステータスを報告する。
【００５６】
図３は、図２のハードディスクコントローラ２２の内部構成のブロック図である。ハードディスクコントローラ２２には、マイクロプロセッサインタフェースロジック４６、データフローコントローラ４８、バッファコントローラ５０、ＳＣＳＩシーケンサ５２、ディスクフォーマッタ５４、リード・ソロモンＥＣＣエンジン５６及びＳＣＳＩコントローラ５８が設けられる。
【００５７】
ＳＣＳＩコントローラ５８には、ホストと接続するためのＳＣＳＩポート６４が設けられる。またＳＣＳＩコントローラ５８及びディスクフォーマッタ５４に対しては、データバッファ２４と接続するためのデータバッファポート６２が設けられる。更にディスクフォーマッタ５４に対しては、図２のドライブインタフェースロジック２６と接続するためのディスクポート６０が設けられる。
【００５８】
ホストからの書込コマンドは、ＳＣＳＩポート６４からＳＣＳＩコントローラ５８に与えられ、バッファコントローラ５０、マイクロプロセッサ・インタフェース・ロジック４６を介してＭＣＵ１６側に送られ、フラッシュメモリ１８のコマンドキューに格納される。
【００５９】
書込コマンドの実行でホストから送られてくる書込データは、ＳＣＳＩポート６４からＳＣＳＩコントローラ５８を経由し、データバッファポート６２からデータバッファ２４に格納される。データバッファ２４に格納された書込データは、データバッファポート６２を介してディスクフォーマッタ５４に読み込まれ、磁気ディスクに書き込むためのフォーマッタを行うと同時に、リード・ソロモンＥＣＣエンジン５６によって多バイト訂正機能を持つリード・ソロモン符号によるＥＣＣエンコード処理を行い、ディスクポート６２から磁気ディスク側に送って磁気ディスクに書き込む。
【００６０】
ホストとの間のコマンド及びデータの転送はＳＣＳＩシーケンサ５２及びＳＣＳＩコントローラ５８により制御される。またデータバッファ２４に対するデータの書込み，読出しは、バッファコントローラ５０により制御される。更にデータバッファから読み出した書込データのディスクポートを経由したディスクへの書込制御は、データフローコントロール４８により行われる。
【００６１】
図４は本発明による情報記憶装置の実施形態の機能ブロック図であり、ホストから発行された書込コマンドを媒体への書込完了によって終了する媒体書込コマンド完了方式の装置であり、現在ディスク書込実行中の書込コマンドによる媒体書込完了を待たずに、次の書込コマンドの実行によりホストからデータを先取りデータとして受信するようにしたことを特徴とする。
【００６２】
図４において、この情報記憶装置は、コマンド受信部６６、データ受信部６８、媒体書込部７０、ステータス報告部７２及び先取処理部７４で構成される。またコマンド受信部６６、データ受信部６８媒体書込部７０及び先取処理部７４に対しては、図２のフラッシュメモリ１８で実現される制御記憶１８によってコマンドキュー７６とポインタテーブル７８が設けられている。
【００６３】
コマンド受信部６６は、ホストから連続して発行された複数の書込コマンドを受信してコマンドキュー７６に格納する。データ受信部６８は、コマンドキュー７６の先頭位置からの書込コマンドの実行によりホストからデータを受信してデータバッファ２４に格納する。
【００６４】
媒体書込部７０は、データ受信部６８によるホストからの書込データの受信完了で受信データの媒体書込みを完了する。ステータス報告部７２は、媒体書込部７０による書込完了でステータスをホストに報告して、実行中の書込コマンドを終了させる。更に先取処理部７４は、媒体書込部７０による受信データの媒体書込完了を待たずに次の書込コマンドの実行によりホストからデータを先取りデータとして受信し、データバッファ２４に格納する。
【００６５】
図５はホストから発行されるコマンドのフォーマット説明図であり、６バイト長のコマンドを例にとっている。このコマンドについて、コマンドコード８０として「２Ａ」を設定すると、「Ｗｒｉｔｅ  Ｅｘｔｅｎｄｅｄ」の書込コマンドとなり、１，２，３バイトで指定された指定論理ブロックから４バイト目で指定された転送データ長で示される任意のブロック数のデータ書込みを指定することができる。
【００６６】
図６はデータのディスク媒体書込完了でホストに報告するステータスのフォーマット説明図である。このステータスは１バイトのステータス情報であり、第１ビットから第５ビットの５ビットをステータスバイトコードに使用しており、コマンド実行が正常終了となるグッドステータス、エラー、実行不可、異常終了、センサ生成等の異常を示すチェックコンディションステータス、ハードディスクドライブがビジィ状態でコマンド受付不能を示すビジィステータス、リンク指示コマンドの正常終了を示すインターメディエード／グッドステータス、他のホストがリザーブ状態にあることを示すリザベーション／コンフリクトステータス、コマンドキューに空きがなくコマンドキューに登録不可を示すキューフルステータス等がある。
【００６７】
図７は、図４の制御記憶１８に設けたコマンドキュー７６とポインタテーブル７８の説明図である。図７（Ａ）はコマンドキュー７６であり、例えばホストから発行された図５のコマンドフォーマットを持つ４つの書込コマンドＣＭＤ１，ＣＭＤ２，ＣＭＤ３，ＣＭＤ４が格納された状態を示している。
【００６８】
このようなコマンドキュー７６に格納された書込コマンドＣＭＤ１〜ＣＭＤ４に対し、図７（Ｂ）のポインタテーブル７８が設けられる。ポインタテーブル７８はコマンドキュー７６に対し次に受信するコマンドの格納位置を示す次コマンド受信ポインタＰ１、ホストからのデータ受信開始または受信中のコマンドを示すデータ受信ポインタＰ２、データバッファ２４から媒体へのデータ書込開始または書込中のコマンドを示す媒体書込ポインタＰ３及び、次にステータスを報告するコマンドを示すステータス報告ポインタＰ４を設けている。
【００６９】
これら４種類のポインタＰ１〜Ｐ４には、各ポインタが示すコマンドキュー７６の書込コマンドＣＭＤ１〜ＣＭＤ４の先頭アドレスＡ００１，Ａ００２，Ａ００４，Ａ００５が格納されている。各ポインタＰ１〜Ｐ４は、それぞれに対応する処理が終了すると１つ歩進される。
【００７０】
即ち、コマンド受信部６６によるコマンド受信完了でコマンド受信ポインタＰ１が歩進する。またデータ受信部６８によるデータ受信完了でデータ受信ポインタＰ２が歩進する。また媒体書込部７０による媒体書込完了で媒体書込ポインタＰ３が歩進する。更にステータス報告部７２によるステータス報告完了でステータス報告ポインタＰ４が歩進する。
【００７１】
このポインタＰ１〜Ｐ４は、コマンド受信ポインタＰ１、データ受信ポインタＰ２、媒体書込ポインタＰ３及びステータス報告ポインタＰ４の順番に配置され、各ポインタが歩進するごとに、歩進したポインタの示す処理を実行することになる。
【００７２】
図７（Ａ）のコマンドキュー７６に対するポインタテーブル７８の関係は、図８のように表わすことができる。図８において、コマンドキュー７６に格納された４つの書込コマンドＣＭＤ１〜ＣＭＤ４及び最初の空領域に対し、図７（Ｂ）のようなポインタテーブル７８に対するコマンドキューのアドレスＡ００１〜Ａ００５の設定によりポインタＰ１，Ｐ２，Ｐ３，Ｐ４が図示のように設定されたことに相当し、データ書込みの場合には
▲１▼次コマンド受信ポインタＰ１
▲２▼データ受信ポインタＰ２
▲３▼媒体書込ポインタＰ３
▲４▼ステータス報告ポインタＰ４
の順に進むことができる。
【００７３】
したがって、前に位置するポインタが進んだことにより、そのポインタの示す処理を実施することが可能となる。図８の場合には、４つの書込コマンドＣＭＤ１〜ＣＭＤ４を受信しており、書込コマンドＣＭＤ１，ＣＭＤ２，ＣＭＤ３，ＣＭＤ４の順で実行される。ここでステータス報告ポインタＰ４が設定された書込コマンドＣＭＤ１は、データをディスクに書き終えてステータスを報告する状態を示している。
【００７４】
媒体書込ポインタＰ３が示された書込コマンドＣＭＤ２，ＣＭＤ３は、データをホストから受信済みで書込コマンドＣＭＤ２についてディスクに対する書込開始または書込実行中であることを示している。データ受信ポインタＰ２が示された書込コマンドＣＭＤ３は、ホストからデータを受信開始または受信実行中であることを示している。
【００７５】
本発明の情報処理装置にあっては、このようにコマンドキュー７６に対するポインタＰ１〜Ｐ４の設定制御によって、ホストから連続して発行された複数の書込コマンドを実行する際のデータ先取りを含む書込処理を実現する。
【００７６】
図９は、図４の機能ブロックに示した本発明の情報処理装置による書込処理のタイムチャートである。
【００７７】
図９（Ａ）はホストからデータバッファに対するホストインタフェースの状態であり、ホストから２ブロックを指定した２つの書込コマンドＣＭＤ１，ＣＭＤ２が連続して発行された場合を例にとっている。ホストから書込コマンドＣＭＤ１，ＣＭＤ２を受信し、時刻ｔ１でコマンド受信が完了すると、続いてホストに対し書込コマンドＣＭＤ１のデータＤ１１，Ｄ１２の転送を要求し、時刻ｔ２でデータＤ１１，Ｄ１２の受信を終了する。
【００７８】
一方、図９（Ｂ）のディスクインタフェースにあっては、時刻ｔ１でホストから書込コマンドＣＭＤ１，ＣＭＤ２を受信した後、書込コマンドＣＭＤ１の実行によるディスク書込みのためヘッド移動を開始し、ヘッド移動完了で、時刻ｔ２でデータバッファに受信完了で格納したデータＤ１１，Ｄ１２のディスク書込みを行う。
【００７９】
このデータＤ１１，Ｄ１２のディスク書込みに並行して、図４の先取処理部７４は、書込コマンドＣＭＤ２のデータＤ２１，Ｄ２２の転送をホストに要求し、データＤ１１，Ｄ１２のディスク書込みに並行してホストから次の書込コマンドＣＭＤ２のデータＤ２１，Ｄ２２が先取データとして受信され、データバッファ２４に格納される。
【００８０】
ディスクインタフェースにおけるデータＤ１１，Ｄ１２のディスク書込みが時刻ｔ３で終了し、続いて次の書込コマンドＣＭＤ２のデータＤ２１，Ｄ２２のホストからの受信が時刻ｔ４で完了すると、書込コマンドＣＭＤ１のディスク書込正常終了を示すステータスＳＴＳ１をホストに報告し、時刻ｔ５でステータス報告を完了する。
【００８１】
これと同時に次の書込コマンドＣＭＤ２の実行によるヘッド移動８４を開始し、ヘッド移動完了で先取りデータとして受信したデータＤ２１，Ｄ２２のディスク書込みを行ってステータスを報告することになる。  このように本発明の情報記憶装置にあっては、データのディスク書込完了でホストにステータスを報告して書込コマンドを終了させる方式であっても、現在実行中の書込コマンドによるデータのディスク書込みに並行して次に実行する書込コマンドのデータをホストから先取データとして受信でき、現在実行中のディスク書込完了に続いて次の書込コマンドのデータのディスク書込みが直ちにできる。このため、ディスク書込みの際にデータバッファにホストからのデータがないことによるディスク書込処理の遅れを防ぎ、書込処理の処理性能を大幅に向上することができる。
【００８２】
図１０は、図９の書込処理におけるコマンドキュー７６に対するポインタ設定とデータバッファ２４の状態を時系列的に示している。
【００８３】
図１０（Ａ）は、図９の時刻ｔ１であり、書込コマンドＣＭＤ２の受信完了で次コマンド受信ポインタＰ１が１つ進んで、次のコマンド格納位置を示している。このときデータバッファ２４にはデータは受信されていない。
【００８４】
図１０（Ｂ）は、図９の時刻ｔ２であり、書込コマンドＣＭＤ１のデータＤ１１，Ｄ１２の受信完了によりデータ受信ポインタＰ２が１つ進んで、次の書込コマンドＣＭＤ２についてデータ受信を示している。このときデータバッファ２４には現在実行中の書込コマンドＣＭＤ１についてホストから受信したデータＤ１１，Ｄ１２が格納されている。
【００８５】
図１０（Ｃ）は、図９の時刻ｔ３であり、データＤ１１，Ｄ１２のディスク書込みの完了により媒体書込ポインタＰ３が１つ進み、現在実行中の次の書込コマンドＣＭＤ２のデータＤ２１，Ｄ２２の受信を示すデータ受信ポインタＰ２と同じ位置にセットされている。このときデータバッファ２４には次の書込コマンドＣＭＤ２のデータＤ２１とデータＤ２２の途中までが格納されている。
【００８６】
図１０（Ｄ）は、図９の時刻ｔ４であり、次の書込コマンドＣＭＤ２のデータＤ２１，Ｄ２２の先取りが完了した時刻ｔ４の状態である。このとき次の書込コマンドＣＭＤ２のデータ受信が完了したことで、データ受信ポインタＰ２は１つ進んで次コマンド受信ポインタＰ１と同じ位置にセットされ、書込コマンドＣＭＤ１にはステータス報告ポインタＰ４がセットされ、次の書込コマンドＣＭＤ２には媒体書込ポインタＰ３がセットされる。
【００８７】
このため、ホストとのインタフェースがデータＤ２１，Ｄ２２の受信完了で空くことから、ステータス報告ポインタＰ４のセットにより書込コマンドＣＭＤ１についてステータスＳＴＳ１の報告が行われ、同時に媒体書込ポインタＰ３によって書込コマンドＣＭＤ２の実行によるデータＤ２１，Ｄ２２のディスク書込みが行われる。
【００８８】
図１０（Ｅ）は、図９の時刻ｔ５の書込コマンドＣＭＤ１のステータスＳＴＳ１の報告が完了した状態である。この場合には、ステータス報告ポインタＰ４が１つ進んで媒体書込ポインタＰ３と同じ書込コマンドＣＭＤ２の位置にセットされ、データＤ２１，データＤ２２の媒体書込完了を待ってステータス報告ポインタＰ４による書込コマンドＣＭＤ２のステータス報告が行われることになる。この時データバッファ２４は、書込コマンドＣＭＤ１のステータス報告終了でデータＤ１１，Ｄ１２は空き領域として扱われる。
【００８９】
図１１は、図４の実施形態におけるポインタテーブル７８のポインタＰ１〜Ｐ４を用いた書込処理のフローチャートである。
【００９０】
図１１において、この書込処理はステップＳ１のコマンド受信完了割込み、ステップＳ３のホストデータ受信完了割込み、ステップＳ５のデータ書込完了割込み、ステップＳ７のステータス報告完了割込みの各割込みにより起動する。
【００９１】
ステップＳ１，Ｓ３，Ｓ５，Ｓ７のいずれかで割込みがあると、ステップＳ２，Ｓ４，Ｓ６，Ｓ８に示すように、次コマンド受信ポインタＰ１、データ受信ポインタＰ２、媒体書込ポインタＰ３及びステータス報告ポインタＰ４のそれぞれが１つカウントアップされてコマンドキューに対する指定位置を進めるようになる。
【００９２】
この図１１のフローチャートによる処理を、図９に示した２つの書込コマンドＣＭＤ１，ＣＭＤ２をホストから連続して発行した場合について説明すると次のようになる。まず時刻ｔ１でホストからの書込コマンドＣＭＤ１，ＣＭＤ２の受信が完了すると、ステップＳ１でコマンド受信完了割込みが得られ、ステップＳ２に進み、次コマンドポインタＰ１を１つ進める。
【００９３】
続いてステップＳ９に進み、ステータス報告を行うコマンドがあるか否かチェックする。このときポインタは、図１０（Ａ）のように書込コマンドＣＭＤ１につきポインタＰ２，Ｐ３，Ｐ４がセットされており、ステータス報告有りの条件であるＰ３≠Ｐ４の条件が成立しないことから、ステップＳ１０に進み、データ受信可能か否かチェックする。
【００９４】
ステップＳ１０でデータ受信可能となるのは、ポインタＰ１，Ｐ２の間にＰ１≠Ｐ２の関係がある時である。このとき図１０（Ａ）のようにポインタＰ１とＰ２は異なった位置を示していることから、Ｐ１≠Ｐ２が成立し、書込コマンドＣＭＤ１についてデータ受信が可能である。続いてステップＳ１１に進み、ハードディスクドライブ自身がホストバスを使用中か否かチェックし、このときホストバスは使用していないことから、ステップＳ１２でデータ受信を起動する。
【００９５】
続いてステップＳ１３でディスクに対するデータ書込可能か否かをチェックする。ディスクに対するデータ書込可能はポインタＰ２，Ｐ３の間にＰ２≠Ｐ３の関係が成立するときである。このとき図１０（Ａ）のようにポインタＰ２，Ｐ３は同じ位置にあることから、データ書込可能とはならず、一連の処理を終了する。
【００９６】
次に図９の時刻ｔ２でデータＤ１１，Ｄ１２の受信が完了すると、図１１のステップＳ３のホストデータ受信完了割込みが得られ、ステップＳ４でデータ受信ポインタＰ２を１つ進める。これによって図１０（Ｂ）のコマンドキュー７６に対するポインタ設定状態となる。
【００９７】
続いてステップＳ９に進み、ステータス報告を行うコマンドがあるか否かチェックし、この場合にはステータス報告を行うコマンドはないことから、ステップＳ１０でデータ受信可能か否かチェックする。このとき図１０（Ｂ）のようにポインタＰ１，Ｐ２は異なる位置にあることからデータ受信可能であり、ステップＳ１１でハードディスクドライブ自身がホストバスを使用中でないことから、ステップＳ１２で次の書込コマンドＣＭＤ２のデータ受信を起動する。
【００９８】
続いてステップＳ１３でディスクに対するデータ書込可能か否かチェックし、このとき図１０（Ｂ）のようにポインタＰ２とＰ３は異なる位置にあることからデータ書込みは可能であり、ステップＳ１４で、既に受信したデータＤ１１，Ｄ１２のディスク書込みを起動する。
【００９９】
次に図９の時刻ｔ３でデータＤ１１，Ｄ１２のディスク書込みが完了すると、図１１のステップＳ５のデータ書込完了割込みが得られ、ステップＳ６で媒体書込ポインタＰ３を１つ進める。これによって図１０（Ｃ）のコマンドキュー７６に対するポインタ設定状態となる。
【０１００】
次にステップＳ９に進み、ステータス報告を行うコマンドがあるか否かチェックする。この場合には図１０（Ｃ）のようにステータス報告ポインタＰ４がコマンドＣＭＤ１に設定され且つポインタＰ３は異なる位置にあることから、ステータス報告有りが判別され、ステップＳ１５に進む。
【０１０１】
ステップＳ１５にあっては、ハードディスクドライブ自身がホストバスを使用中か否かチェックする。このとき図９の時刻ｔ３にあっては、ホストバスは書込コマンドＣＭＤ２のデータＤ２２の受信中にあり、ホストバスが使用中であることから、ステップＳ１６のステータス起動は行わず、ステップＳ１３に進む。
【０１０２】
ステップＳ１３にあってはデータ書込可能か否かをチェックするが、この場合には図１０（Ｃ）のようにポインタＰ２，Ｐ３は同じ書込コマンドＣＭＤ２の位置にあるためデータ書込みは可能ではなく、ステップＳ１４をスキップして一連の処理を終了する。
【０１０３】
次に図９の時刻ｔ４で書込コマンドＣＭＤ２のデータＤ２１，Ｄ２２の受信が完了したとすると、図１１のステップＳ３でホストデータ受信完了割込みが得られ、ステップＳ４でデータ受信ポインタＰ２を１つ進める。
【０１０４】
これによって図１０（Ｄ）のコマンドキュー７６に対するポインタ設定状態となる。続いてステップＳ９に進み、ステータス報告有りが判別され、ステップＳ１５に進み、このときホストからのデータ受信は完了していることからホストバスは使用中になく、したがってＳ１６でステータス報告を起動する。
【０１０５】
次にステップＳ１３に進み、データ書込可能か否かをチェックするが、このとき図１０（Ｄ）のようにポインタＰ２とＰ３は異なる位置にあるため、ポインタＰ３がセットされた書込コマンドＣＭＤ２についてデータ書込みが可能であり、ステップＳ１４でデータＤ２１，Ｄ２２のディスク書込みを起動する。
【０１０６】
次に図９の時刻ｔ５で書込コマンドＣＭＤ１についてステータスＳＴＳ１の報告が完了すると、図１１のステップＳ７のステータス報告完了割込みが得られ、ステータス報告ポインタＰ４がステップＳ８で１つ進められ、これによって図１０（Ｅ）のコマンドキュー７６に対するポインタ設定状態となる。
【０１０７】
続いてステップＳ９に進み、ステータス報告の有無をチェックするが、この場合にポインタＰ３，Ｐ４は同じ書込コマンドＣＭＤ２にセットされていることからステータス報告はなく、ステップＳ１０で現在受信可能か否かチェックするが、空位置にポインタＰ１，Ｐ２がセットされていることから、ステップＳ１２のデータ受信起動は行わず、ステップＳ１３でデータ書込可能か否かチェックする。
【０１０８】
ここでポインタＰ２，Ｐ３は異なる位置にあるが、既に書込コマンドＣＭＤ２についてはディスク書込みを起動していることから、ステップＳ１４のデータ書込みの起動は行わず、一連の処理を終了する。
【０１０９】
図１２は、先取コマンドの最適化処理の説明図である。図１２（Ａ）は、コマンドキュー７６の格納状態であり、この場合にはホストから７つの書込コマンドＣＭＤ１〜ＣＭＤ７が連続して発行された状態である。そしてデータ受信ポインタＰ２で示す書込コマンドＣＭＤ６がホストからデータ受信を開始または受信中であり、それより前の書込コマンドＣＭＤ２〜ＣＭＤ５の４つについてはホストから既にデータを先取り受信してディスク書込みを待っている状態にある。
【０１１０】
先頭の書込コマンドＣＭＤ１は、ポインタＰ３によってディスクにデータを書込中である。即ち、書込コマンドＣＭＤ１はディスクにデータを書込中、書込コマンドＣＭＤ２からＣＭＤ５がデータ先取り済み、書込コマンドＣＭＤ６がデータをホストから受信中、書込コマンドＣＭＤ７がホストからのデータ受信を待っている状態である。
【０１１１】
このとき書込コマンドＣＭＤ１の実行によりディスク書込みを行っている間に、データ先取り済みの書込コマンドＣＭＤ２からＣＭＤ５の実行順序を現在実行中の書込コマンドＣＭＤ１のディスク書込終了位置から一番アクセス時間の短い順に並び替える。
【０１１２】
例えば書込コマンドＣＭＤ４が一番アクセス時間が短かった場合、図１２（Ｂ）のように書込コマンドＣＭＤ２と書込コマンドＣＭＤ４の順序を入れ替え、書込コマンドＣＭＤ１のディスク書込終了後に書込コマンドＣＭＤ４のディスク書込みを終了する。
【０１１３】
図１３は、本発明の情報記憶装置における先取コマンド最適化処理のフローチャートである。まずステップＳ１で、現在ディスクにデータ書込中のセクタ最終位置と次にアクセスするセクタ開始位置との角度差θｔ［ｒａｄ］を算出する。この角度差θｔの算出は、セクタアドレスの差を角度に変換することで算出できる。
【０１１４】
次にステップＳ２で、現在実行中のセクタ最終位置から次の開始セクタまでのシーク予測時間ｔｓをトラックアドレスから算出する。次にステップＳ３で、シーク予測時間ｔｓの間に次のセクタ先頭位置が移動する回転角θｓ［ｒａｄ］を算出する。このセクタ回転角θｓは、ディスク媒体の角速度をω［ｒａｄ／ｓ］とすると、
θｓ＝ω×ｔｓ
で求まる。
【０１１５】
次にステップＳ４で、現在のセクタ終了位置と次のセクタ開始位置との角度差θｔとシーク予測時間ｔｓから算出した次セクタ先頭位置の回転角θｓの大小関係を比較する。即ち、セクタ終了位置と次のセクタ開始位置との角度差θｔに対し、シーク予測時間ｔｓから算出した次セクタ先頭位置の回転角θｓが等しいかそれ以下であれば、次セクタ先頭位置がヘッドに来るまでにシークが完了し、ディスク回転待ちが必要ない。
【０１１６】
これに対しセクタ終了位置と次のセクタ開始位置との角度差θｔをシーク予測時間ｔｓから求めた次セクタ先頭位置のθｓが超えた場合には、ディスクの回転待ちをすることになる。
【０１１７】
ステップＳ４でセクタ終了位置と次のセクタ開始位置との角度差θｔとシーク予測時間ｔｓから算出した次セクタ先頭位置の回転角θｓに等しいかそれより大きい場合には、ステップＳ５に進み、アクセス時間ｔをシーク予測時間ｔｓに角度差（θｔ−θｓ）を角速度ωで割った時間を加えた値として算出する。
【０１１８】
これに対し角度差θｔがシーク予測時間ｔｓから求めた回転角θｓより大きかった場合には、ステップＳ６に進み、シーク時間ｔｓに１回転を示す２πから角度差（θｔ−θｓ）を差し引いた角度を角速度ωで割った時間を加えた回転待ち時間を含むアクセス時間を算出する。
【０１１９】
次にステップＳ７で全ての先取コマンドについて処理したか否かチェックし、全ての処理が終了するまでステップＳ１〜Ｓ６の処理を繰り返す。ステップＳ７で全ての先取コマンドについてアクセス時間の算出処理が終了したならば、ステップＳ８で、最もアクセス時間の短い先取りコマンドを次に実行するコマンド位置に並び替える。
【０１２０】
このように、ある書込コマンドのディスク書込実行中にディスク書込待ち状態にあるデータ先取り済みの先取りコマンドについてアクセス時間を算出して最もアクセス時間の短い書込コマンドを次に実行する書込コマンドの位置に並び替えることで、処理性能を大幅に向上できる。
【０１２１】
図１４は、本発明の情報記憶装置で使用するデータバッファのセグメント分割の説明図である。図１４（Ａ）のデータバッファ２４にあっては、データバッファ２４を例えば８つのセグメント８２−１〜８２−８に分割している。これらのセグメント８２−１〜８２−８は、先頭のセグメント８２−１に示すように、８つのサブセグメント８４−１〜８４−８に更に分割されている。
【０１２２】
ホストから連続して複数の書込コマンドが発行された場合には、この連続して発行された複数の書込コマンドについて１つのセグメントを使用し、各書込コマンドについてサブセグメント８４−１〜８４−８を個別に使用する。サブセグメントのサイズは最初の書込コマンドの受信で決定し、例えば最初の書込コマンドで指定されたデータブロック数と同じサイズのサブセグメントに分割する。
【０１２３】
これによって、図１４（Ａ）の場合にはセグメント８２−１について最初の書込コマンドに加えて後続して７つの書込コマンドのデータを先取りすることができる。具体的には、データ先取りを実施する前に空いているサブセグメントをサーチし、コマンド情報に使用するサブセグメントをセットしておく。書き込むときにはサブセグメントの情報を基にデータを書き込む。
【０１２４】
図１４（Ｂ）は、データバッファ２４のデータ先取りのためのサブセグメントの分割の他の実施形態である。図１４（Ａ）にあっては、最初の書込コマンドのデータ受信でサブセグメントを等間隔に決めたため、サブセグメントの大きさ以上のブロックサイズの書込コマンドが発行された場合、データをバッファに格納することができないため、その時点でデータ先取りは終了してしまう。
【０１２５】
そこで図１４（Ｂ）にあっては、セグメント情報としてサブセグメントの先頭位置と大きさをセットできるようにすれば、ブロックサイズが一定でなくともサブセグメントを指定ブロックサイズに合わせてセットすることでデータ先取りを実施することができる。
【０１２６】
例えば図１４（Ｂ）のセグメント８２−１のように、サブセグメント８４−１〜８４−４のそれぞれは、それぞれの書込コマンドのブロックサイズに対応してサブセグメント先頭位置と大きさをセットすることでダイナミックにサブセグメントが確保できる。
【０１２７】
図１５は、本発明の情報記憶装置の他の実施形態の機能ブロック図であり、この実施形態にあっては、ホストから発行された書込コマンドをホストからのデータ受信完了によって終了するデータ受信コマンド完了方式の情報記憶装置に本発明による実行順序の最適化とデータバッファ分割を適用したことを特徴とする。
【０１２８】
図１５において、この実施形態の情報記憶装置は、コマンド受信部１００、データ受信部１０２、媒体書込部１０４、ステータス報告部１０６で構成され、制御記憶１８にはコマンドキュー７６とポインタテーブル７８が設けられている。
【０１２９】
コマンド受信部１００は、ホストから連続して発行された複数の書込コマンドを受信してコマンドキュー７６に格納する。データ受信部１０２は、コマンドキュー７６の先頭位置からの書込コマンドの実行によりデータを受信してデータバッファ２４に格納する。
【０１３０】
ステータス報告部１０６は、データ受信部１０２によるホストからのデータ受信完了でステータスをホストに報告して、実行中の書込コマンドを終了させる。媒体書込部１０４は、データ受信部によるホストからのデータ受信完了で受信データの媒体書込みを開始する。
【０１３１】
これに加えて図１５の実施形態にあっては最適化部１０８が設けられる。最適化部１０８は、コマンドキュー７６に複数の先取データ受信済みの先取書込コマンドがある場合、複数の先取書込コマンドの実行順序をアクセス時間の短い順に並び替えて最適化する。
【０１３２】
具体的には、図１２（Ａ）に示したように、データ先取済みの書込コマンドＣＭＤ２〜ＣＭＤ５について、現在ディスク書込中の書込コマンドＣＭＤ１の書込終了セクタ位置からのアクセス時間が最も短い書込コマンドを次に実行する書込コマンドとなるように順番を並び替え、例えば書込コマンドＣＭＤ４のアクセス時間が最も短かった場合には、図１２（Ｂ）のように次に実行する書込コマンドを書込コマンドＣＭＤ４に並び替える。この先取コマンドの最適化処理は図１３のフローチャートに従って行われる。
【０１３３】
更に図１５の実施形態にあっては、データバッファ２４のセグメント分割として、図１４（Ａ）に示した最初の書込コマンドのブロック数で固定的にサブセグメントを分割する構成、あるいは図１４（Ｂ）のように各書込コマンドごとにサブセグメントの先頭位置とブロック数を割り当てて動的にサブセグメントを分割する方式のいずれかを採用する。
【０１３４】
尚、図４のディスク書込完了でステータスを報告して書込コマンドを終了させる方式と、図１５のホストからのデータ受信完了でステータスを報告して書込コマンドを終了させる方式については、同じハードディスクにいずれかのコマンド終了方式のモードを切替設定するスイッチ等の手段を設けておき、必要に応じて図４の実施形態あるいは図１５の実施形態を選択的に使用できるようにしてもよい。もちろん、ハードディスクドライブごとに個別に図４の実施形態または図１５の実施形態としてもよい。
【０１３５】
また本発明は、その目的と利点を損なわない適宜の変形を含み、更に実施形態に示した数値による限定は受けない。
【０１３６】
【発明の効果】
以上説明してきたように本発明によれば、ディスクへの書込完了によってホストから発行した書込コマンドを終了させる装置について、ディスク書込みの完了を待たずに次の書込コマンドについてホストからデータを受信するデータ先取りを行うことにより、ディスク書込みの際にデータがデータバッファにないことによる書込処理の遅れを防止し、複数の書込コマンドを連続して発行した場合の各書込コマンドのアクセス時間が短い場合やホストに対し複数の情報記憶装置を接続した場合に発生し易い処理能力の低下を防ぎ、書込コマンドに対し処理性能の高い情報記憶装置を実現することができる。
【０１３７】
また、ホストからデータ先取りが済んだ複数の書込コマンドについて、次に実行するコマンドをアクセス時間の最も短いコマンドとなるように並び替えることで、先取書込コマンドの最適化ができ、データ先取りによる性能向上とコマンド実行順序の最適化による処理性能の向上の両方をもって、より高性能な書込処理が実現できる。
【０１３８】
更に、データ先取りを行った場合のバッファ領域の使用の仕方として、ディスク書込中の書込コマンドと先取コマンドで使用するバッファ領域を同一としたことにより、書込コマンドの先取処理によってデータバッファの他のセグメントのデータを破壊してしまうことを防止でき、リードバッファとしてのデータバッファの使用を最大限に生かすことでリード性能の低下を確実に防止できる。
【図面の簡単な説明】
【図１】本発明の原理説明図
【図２】本発明が適用されるハードディスクドライブのブロック図
【図３】図２のハードディスクコントローラのブロック図
【図４】ディスク書込完了でホストからのコマンドを終了させる本発明の実施形態の機能ブロック図
【図５】本発明で使用するコマンドのフォーマット説明図
【図６】本発明で使用するステータスのフォーマット説明図
【図７】図４の制御記憶に設けたコマンドキューのポインタテーブルの説明図
【図８】図７のコマンドキューに対するポインタのセット状態の説明図
【図９】図４の実施形態によるデータ先取処理のタイムチャート
【図１０】図９のタイムチャートの時刻ｔ１〜ｔ５におけるコマンドキューとデータバッファの説明図
【図１１】ポインタ制御による図４の書込処理のフローチャート
【図１２】データ先取済みの書込コマンドを最適化処理の説明図
【図１３】先取コマンド最適化処理のフローチャート
【図１４】先取データを格納するデータバッファ構成の説明図
【図１５】ホストからのデータ受信完了でコマンドを終了させる本発明の他の実施形態の機能ブロック図
【図１６】ホストからのデータ受信完了でコマンドを終了させる従来装置の書込状態のタイムチャート
【図１７】ディスク書込完了でコマンドを終了させる従来装置の書込状態のタイムチャート
【符号の説明】
１０：ＳＣＳＩコントローラ
１２：ドライブコントロール
１４：ディスクエンクロージャ
１６；ＭＣＵ
１８：フラッシュメモリ（制御記憶）
２０：プログラムメモリ
２２：ハードディスクコントローラ
２４：データバッファ
２６：ドライブインタフェースロジック
２８：ＤＳＰ
３０：リード／ライトＬＳＩ
３２：サーボ復調部
３４：サーボドライバ
３６：ヘッドＩＣ
３８−１〜３８−６：複合ヘッド
４０−１〜４０−３：磁気ディスク
４２：スピンドルモータ
４４：ボイスコイルモータ（ＶＣＭ）
４６：マイクロプロセッサ・インタフェース・ロジック
４８：データフローコントロール
５０：バッファコントローラ
５２：ＳＣＳＩシーケンサ
５４：ディスクフォーマッタ
５６：リード・ソロモンＥＣＣエンジン
５８：ＳＣＳＩコントローラ
６０：ディスクポート
６２：データバッファポート
６４：ＳＣＳＩポート
６６，１００：コマンド受信部
６８，１０２：データ受信部
７０，１０４：媒体書込部
７２，１０６：ステータス報告部
７４：先取処理部
７５，１０８：最適化処理部
７６：コマンドキュー
７８：ポイタンテーブル
【図１】
0003745552.tif 000002
【図２】
0003745552.tif 000003
【図３】
0003745552.tif 000004
【図４】
0003745552.tif 000005
【図５】
0003745552.tif 000006
【図６】
0003745552.tif 000007
【図７】
0003745552.tif 000008
【図８】
0003745552.tif 000009
【図９】
0003745552.tif 000010
【図１０】
0003745552.tif 000011
【図１１】
0003745552.tif 000012
【図１２】
0003745552.tif 000013
【図１３】
0003745552.tif 000014
【図１４】
0003745552.tif 000015
【図１５】
0003745552.tif 000016
【図１６】
0003745552.tif 000017
【図１７】
0003745552.tif 000018