(57)【要約】【課題】より性能の良いコマンド実行順序に変更する機会を増やすことを可能とする。【解決手段】ＣＰＵ１０１は、ホストシステム２００から与えられてキューバッファ１０９ａに格納されているライトコマンドの群の中から最も早くディスクアクセスを開始可能なコマンドを選択し、当該選択されたコマンドを仮に実行した場合に発生する回転待ち時間を予測する。ＣＰＵ１０１は、予測された回転待ち時間が規定時間を超える場合、一定時間を待ってキューバッファ１０９ａからのコマンド選択を再度実行する。ＣＰＵ１０１は、予測された回転待ち時間が規定時間を超える場合、上記選択されたライトコマンドによって指定されたディスクアクセスのためのディスクアクセスパラメータをＨＤＣ１１０のレジスタ部１１０ａに設定して、当該ＨＤＣ１１０によるディスクアクセス制御を起動する。【選択図】      図１
2007272993.tif 000002
【特許請求の範囲】
【請求項１】
ディスクからのデータの読み出しと当該ディスクへのデータ書き込みとがヘッドにより行われるディスク記憶装置において、
前記ディスク記憶装置を利用するホストシステムから与えられるライトコマンドを一時格納するキューバッファと、
前記キーバッファに格納されているライトコマンドの群の中から最も早くディスクアクセスを開始可能なコマンドを選択する選択手段と、
前記選択されたライトコマンドを仮に実行した場合に発生する回転待ち時間を予測する予測手段と、
前記予測手段によって予測された回転待ち時間が規定時間を超えるかを判定する判定手段と、
前記予測された回転時間が前記規定時間を超える場合に、前記規定時間より短い一定時間を待って前記選択手段によるコマンド選択を再度行わせるコマンド実行待ち手段と、
前記ホストシステムから新たなライトコマンドが与えられた場合、当該新たなライトコマンドを前記キューバッファに格納するコマンド格納処理手段と、
ディスクアクセスのためのディスクアクセスパラメータが設定可能なレジスタ部を有し、当該レジスタ部に設定されたディスクアクセスパラメータに従って前記ディスクに対するアクセスを制御するディスクコントローラと、
前記予測された回転時間が前記規定時間を超えない場合に、前記選択されたライトコマンドによって指定されたディスクアクセスのためのディスクアクセスパラメータを前記ディスクコントローラのレジスタ部に設定して、前記ディスクコントローラによるディスクアクセス制御を起動することにより当該ライトコマンドを実行するコマンド実行手段と
を具備することを特徴とするディスク記憶装置。
【請求項２】
前記新たなライトコマンドが与えられた場合、当該新たなライトコマンドによって指定される第１のアクセス範囲と、その時点において前記キューバッファに格納されているライトコマンドによって指定される第２のアクセス範囲との重なりを調べる重なり判定手段を更に具備し、
前記コマンド格納処理手段は、前記第１のアクセス範囲と前記第２アクセスの範囲とが一部でも重なっている場合、前記第２のアクセス範囲を指定するライトコマンドを、当該重なっている部分のデータを非書き込みデータとするライトコマンドに変更すると共に、前記新たなライトコマンドを当該変更後のライトコマンドと関連付けて前記キューバッファに格納し、
前記コマンド実行手段は、前記選択されたライトコマンドが他のライトコマンドと関連付けられている場合、前記選択されたライトコマンド及び当該選択されたライトコマンドと関連付けられているライトコマンドを一括処理の対象として、当該一括処理の対象となるコマンドによって指定されるディスクアクセスのためのディスクアクセスパラメータを前記ディスクコントローラのレジスタ部に設定する
ことを特徴とする請求項１記載のディスク記憶装置。
【請求項３】
前記コマンド格納処理手段は、前記第１のアクセス範囲が前記第２アクセスの範囲を包含している場合、前記第２のアクセス範囲を指定するライトコマンドを前記キューバッファから削除することを特徴とする請求項２記載のディスク記憶装置。
【請求項４】
前記コマンド格納処理手段は、前記第１のアクセス範囲が前記第２アクセスの範囲に包含されている場合、前記第２のアクセス範囲を指定するライトコマンドを前記キューバッファから削除すると共に、前記第２のアクセス範囲のうちの前記第１のアクセス範囲と重ならない前部分と後部分とをそれぞれ新たなアクセス範囲として指定する２つのライトコマンドを生成して、前記新たなライトコマンド及び前記２つのライトコマンドを関連付けて前記キューバッファに格納することを特徴とする請求項２記載のディスク記憶装置。
【請求項５】
前記第１のアクセス範囲と前記第２のアクセス範囲とが重なっていない場合、前記第１のアクセス範囲と前記第２のアクセス範囲とが近接しているかを、前記第１のアクセス範囲と前記第２アクセスの範囲との間隔を表すブロック数が規定値より少ないかによって判定する近接判定手段を更に具備し、
前記コマンド格納処理手段は、前記第１のアクセス範囲と前記第２アクセスの範囲とが近接している場合、前記新たなライトコマンドを前記第２のアクセス範囲を指定するライトコマンドと関連付けて前記キューバッファに格納し、
前記コマンド実行手段は、前記選択されたライトコマンドが他のライトコマンドと関連付けられている場合、前記選択されたライトコマンド及び当該選択されたライトコマンドと関連付けられているライトコマンドを一括処理の対象として、当該一括処理の対象となるコマンドによって指定されるディスクアクセスのためのディスクアクセスパラメータを前記ディスクコントローラのレジスタ部に設定する
ことを特徴とする請求項２記載のディスク記憶装置。
【請求項６】
前記新たなライトコマンドが与えられた場合、当該新たなライトコマンドによって指定される第１のアクセス範囲と、その時点において前記キューバッファに格納されているライトコマンドによって指定される第２のアクセス範囲とが近接しているかを、前記第１のアクセス範囲と前記第２アクセスの範囲との間隔を表すブロック数が規定値より少ないかによって判定する近接判定手段を更に具備し、
前記コマンド格納処理手段は、前記第１のアクセス範囲と前記第２アクセスの範囲とが近接している場合、前記新たなライトコマンドを前記第２のアクセス範囲を指定するライトコマンドと関連付けて前記キューバッファに格納し、
前記コマンド実行手段は、前記選択されたライトコマンドが他のライトコマンドと関連付けられている場合、前記選択されたライトコマンド及び当該選択されたライトコマンドと関連付けられているライトコマンドを一括処理の対象として、当該一括処理の対象となるコマンドによって指定されるディスクアクセスのためのディスクアクセスパラメータを前記ディスクコントローラのレジスタ部に設定する
ことを特徴とする請求項１記載のディスク記憶装置。
【請求項７】
ディスクからのデータの読み出しと当該ディスクへのデータ書き込みとがヘッドにより行われるディスク記憶装置に適用されるライトコマンド処理方法において、
前記ディスク記憶装置を利用するホストシステムから与えられるライトコマンドを一時格納するキューバッファから、その時点において最も早くディスクアクセスを開始可能なコマンドを選択するステップと、
前記選択されたライトコマンドを仮に実行した場合に発生する回転待ち時間を予測するステップと、
前記予測された回転待ち時間が規定時間を超えるかを判定するステップと、
前記予測された回転時間が前記規定時間を超える場合に、前記規定時間より短い一定時間待って前記選択するステップを再度行わせるステップと、
前記ホストシステムから新たなライトコマンドが与えられた場合、当該新たなライトコマンドを前記キューバッファに格納するステップと、
前記予測された回転時間が前記規定時間を超えない場合に、前記選択されたライトコマンドによって指定されたディスクアクセスのためのディスクアクセスパラメータをディスクコントローラのレジスタ部に設定して、前記ディスクコントローラによるディスクアクセス制御を起動することにより当該ライトコマンドを実行するステップと
を具備することを特徴とするライトコマンド処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キーバッファに格納されたライトコマンドの群から最も早くディスクアクセスを開始可能なコマンドを選択して実行するのに好適なディスク記憶装置及びライトコマンド処理方法に関する。
【背景技術】
【０００２】
一般に、磁気ディスク装置（ハードディスクドライブ：ＨＤＤ）に代表されるディスク記憶装置は、当該ディスク記憶装置を利用するホストシステムから与えられるコマンドを当該コマンドが実行されるまで一時格納するためのキューバッファ（コマンドキュー）を有している。
【０００３】
通常、キューバッファに格納されている各コマンド、例えばライトコマンドは、ホストシステムから与えられた順に実行される。各ライトコマンドの指定するディスク（メディア）上の目標位置（書き込み先となるアドレス）が不連続な場合、つまりランダムアクセスの場合、当該コマンドを実行してディスク（メディア）上の目標位置にヘッドによりデータを書き込む際に待ち時間が発生する。
【０００４】
待ち時間は、シーク時間と回転待ち時間との和で表される。シーク時間とは、ディスク上のヘッドを、現在当該ヘッドが位置しているトラックから当該コマンドで指定される目標のトラックに移動するシーク動作に要する時間である。回転待ち時間とは、シーク動作完了後に、ヘッドにより実際にデータが書き込まれるべきディスク上の目標位置、つまり目標のトラック上の目標のセクタ（ブロック）位置がヘッドに対向する位置まで当該ディスクが回転するのに要する時間である。
【０００５】
上記の待ち時間を少なくすることは、ディスク記憶装置の処理性能の向上（高速化）のためには重要である。そこで特許文献１には、キューバッファに格納されているコマンド（ランダムアクセスコマンド）の実行順序を上記の待ち時間（シーク時間と回転待ち時間との和）が少なくなるように変更する技術が記載されている。また、特許文献１には、コマンドの実行順序を変更してもなお残る回転待ち時間を利用してデータの先読みを実行することが記載されている。
【特許文献１】特開２００１−１４１１１号公報（例えば段落０００９，００１０）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記特許文献１によれば、コマンド実行順序を変更することにより、ディスク記憶装置の処理性能を向上することができる。しかし特許文献１では、より性能の良いコマンド実行順序に変更する機会を増やすことについては考慮されていない。また特許文献１では、、ディスクアクセス回数を減らすためのコマンド実行順序の変更については考慮されていない。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、より性能の良いコマンド実行順序に変更する機会を増やすことが可能なディスク記憶装置及びライトコマンド処理方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の１つの態様によれば、ディスクからのデータの読み出しと当該ディスクへのデータ書き込みとがヘッドにより行われるディスク記憶装置が提供される。このディスク記憶装置は、前記ディスク記憶装置を利用するホストシステムから与えられるライトコマンドを一時格納するキューバッファと、前記キーバッファに格納されているライトコマンドの群の中から最も早くディスクアクセスを開始可能なコマンドを選択する選択手段と、前記選択されたライトコマンドを仮に実行した場合に発生する回転待ち時間を予測する予測手段と、前記予測手段によって予測された回転待ち時間が規定時間を超えるかを判定する判定手段と、前記予測された回転時間が前記規定時間を超える場合に、前記規定時間より短い一定時間を待って前記選択手段によるコマンド選択を再度行わせるコマンド実行待ち手段と、前記ホストシステムから新たなライトコマンドが与えられた場合、当該新たなライトコマンドを前記キューバッファに格納するコマンド格納処理手段と、ディスクアクセスのためのディスクアクセスパラメータが設定可能なレジスタ部を有し、当該レジスタ部に設定されたディスクアクセスパラメータに従って前記ディスクに対するアクセスを制御するディスクコントローラと、前記予測された回転時間が前記規定時間を超えない場合に、前記選択されたライトコマンドによって指定されたディスクアクセスのためのディスクアクセスパラメータを前記ディスクコントローラのレジスタ部に設定して、前記ディスクコントローラによるディスクアクセス制御を起動することにより当該ライトコマンドを実行するコマンド実行手段とを具備する
【発明の効果】
【０００９】
本発明によれば、キューバッファから、その時点において最も早くディスクアクセスを開始可能であるとして選択されたコマンドの実行前に回転待ち時間を予測し、その予測された回転待ち時間が規定時間を超えている場合には、当該コマンドを実行せずに一定時間待ってキューバッファからの再度のコマンド選択を行うことにより、この一定時間の間にホストシステムから新たなコマンドが与えられたならば、当該新たなコマンドと既にキーバッファに格納されているコマンドの中から、その時点において最も早くディスクアクセスを開始可能なコマンドを選択できるため、より性能の良いコマンド実行順序に変更する機会を増やすことが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明を磁気ディスク装置に適用した実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係る磁気ディスク装置（以下、ＨＤＤと称する）の構成を示すブロック図である。図１において、ＨＤＤ１００はＣＰＵ１０１を有する。ＣＰＵ１０１は、装置全体の制御及びモータドライバ（ＶＣＭ・ＳＰＭドライバ））１０２の制御を時分割で行う主コントローラとして機能するプロセッサである。モータドライバ１０２はＣＰＵ１０１からの制御により、磁気ディスク１０３を定常回転させるスピンドルモータ（ＳＰＭ）１０４と、磁気ヘッド１０６を目標位置に移動させるボイスコイルモータ（ＶＣＭ）１０５とを駆動するための電流を、ＳＰＭ１０４及びＶＣＭ１０５に供給する。
【００１１】
ＣＰＵバス１０７には、ＣＰＵ１０１が実行すべきプログラムが予め格納されているＲＯＭ（Read Only Memory）１０８と、ＣＰＵ１０１のワーク領域及び変数を格納する変数領域等を提供するＲＡＭ（Random Access Memory）１０９と、ディスクコントローラ（以下、ＨＤＣと称する）１１０と、ＨＤＤ１００内での制御に必要な諸信号の生成を行う制御信号生成回路としてのゲートアレイ１１１とが接続されている。なお、ＲＡＭ１０９をＣＰＵ１０１に内蔵させ、ＣＰＵ１０１がＣＰＵバス１０７から独立にＲＡＭ１０９を直接アクセスする構成とすることも可能である。
【００１２】
ＲＡＭ１０９の記憶領域の一部は、キューバッファ（コマンドキューバッファ、コマンドキューテーブル）１０９ａのための領域として用いられる。キューバッファ１０９ａは、ＨＤＤ１００を利用するホストシステム２００から転送される例えばライトコマンド（ＣＭＤ）を当該コマンドが実行されるまでの期間格納するのに用いられる。本実施形態において、キューバッファ１０９ａ内でのコマンドの並び順は、通常のキューバッファと異なり、必ずしも入力順（受付順）とならない点に注意されたい。
【００１３】
ＨＤＣ１１０は制御用レジスタの群から構成されるレジスタ部１１０ａを有する。ゲートアレイ１１１もＨＤＣ１１０と同様に制御用レジスタの群から構成されるレジスタ部（図示せず）を有している。各制御用レジスタは、ＣＰＵ１０１のアドレス空間の一部領域に割り当てられている。ＣＰＵ１０１は、制御用レジスタが割り当てられている領域に対して読み出し／書き込みを行うことで、対応するＨＤＣ１１０またはゲートアレイ１１１を制御する。
【００１４】
ＨＤＣ１１０は、ＣＰＵバス１０７以外に、ゲートアレイ１１１、バッファＲＡＭ１１２、及びリード／ライトＩＣ１１３に接続されている。ＨＤＣ１１０はまた、ホストシステム２００とインタフェースバス３００によって接続されている。
【００１５】
バッファＲＡＭ１１２は、ＲＡＭによって構成されるバッファメモリである。バッファＲＡＭ１１２の記憶領域の一部は、ホストシステム２００から転送される磁気ディスク１０３に書き込まれるべきデータ（ライトデータ）を一時格納するためのライトバッファ１１２ａのための領域として用いられる。バッファＲＡＭ１１２の記憶領域の他の一部は、磁気ディスク１０３から読み出されてホストシステム２００に転送されるべきデータ（リードデータ）を一時格納するためのリードバッファ（図示せず）のための領域として用いられる。ライトバッファ１１２ａ及びリードバッファは例えばリングバッファとして用いられる。
【００１６】
ＨＤＤ１００におけるデータの読み出し時には、磁気ディスク１０３に記録されているデータが磁気ヘッド１０６によって読み出される。磁気ヘッド１０６により読み出された信号（アナログのリード信号）は、ヘッドＩＣ１１４によって増幅され、しかる後にリード／ライトＩＣ１１３によってＡ／Ｄ（アナログ／ディジタル）変換されて符号化（復号化）されてＨＤＣ１１０に出力される。また、ヘッドＩＣ１１４によって増幅されたリード信号はリード／ライトＩＣ１１３によってパルス化され、ゲートアレイ１１１に出力される。ゲートアレイ１１１は、リード／ライトＩＣ１１３から出力されるパルス（リードパルス）から各種タイミング信号を生成する。ＨＤＣ１１０は、リード／ライトＩＣ１１３によって符号化されたリードデータをゲートアレイ１１１からの制御用の各信号に従って処理することにより、ホストシステム２００に転送すべきデータを生成する。このデータは一旦バッファＲＡＭ１１２に格納されてから、インタフェースバス３００を介してホストシステム２００に転送される。
【００１７】
一方、ＨＤＤ１００におけるデータの書き込み時には、ホストシステム２００からインタフェースバス３００を介してＨＤＤ１００に転送されたデータが、当該ＨＤＤ１００のＨＤＣ１１０で受け取られて、一旦バッファＲＡＭ１１２に格納される。このバッファＲＡＭ１１２に格納されたデータは、ゲートアレイ１１１からの制御用の各信号に従ってＨＤＣ１１０によって符号化され、リード／ライトＩＣ１１３によって書き込み用の信号に変換され、ヘッドＩＣ１１４を経由して磁気ヘッド１０６によって磁気ディスク１０３に書き込まれる。
【００１８】
図２はキューバッファ１０９ａのデータ構造例を示す。キューバッファ１０９ａは、ホストシステム２００から転送されたライトコマンドの群を格納するエントリ群を有する。本実施形態において、キューバッファ１０９ａに格納されるライトコマンドの群は、当該コマンドに含まれる書き込み開始論理ブロックアドレスＬＢＡの昇順にソートされる。
【００１９】
キューバッファ１０９ａに格納される各ライトコマンドは、書き込み開始論理ブロックアドレスＬＢＡと、書き込みサイズをブロック（セクタ）数で表すブロック数ＮＢとを含む。このライトコマンドには、当該コマンド中の論理ブロックアドレスＬＢＡで指定される磁気ディスク１０３上の位置を示す物理ブロックアドレスＰＢＡと、当該コマンドに従って磁気ディスク１０３に書き込まれるべきライトデータが一時格納されているライトバッファ１１２ａの領域の開始位置を示すバッファポインタＢＰと、フラグＦとが付加されている。物理ブロックアドレスＰＢＡは、シリンダ位置を表すシリンダ番号（シリンダアドレス）と、ディスク面（上のヘッド）を表すヘッド番号と、セクタ位置（ブロック位置）を表すセクタ番号とから構成される。周知のように、シリンダ番号とヘッド番号とによりトラック番号が表される。なお、物理ブロックアドレスＰＢＡは、論理ブロックアドレスＬＢＡから容易に算出されるために、ライトコマンドに必ずしも付加される必要はない。フラグＦは、第１の状態、例えばＦ＝１のとき、当該フラグＦが付加されているコマンドを、ライトバッファ１１２ａ内の次のエントリに格納されているコマンドと一括して処理すべきことを示す。フラグＦは、第２の状態、例えばＦ＝０のとき、当該フラグＦが付加されているコマンドを、ライトバッファ１１２ａ内の次のエントリに格納されているコマンドから独立して処理すべきことを示す。、
次に、図１の構成のＨＤＤ１００における動作について、キューバッファ１０９ａに格納されているコマンド（ライトコマンド）に従うディスクアクセス処理について、図３のフローチャートを参照して説明する。
【００２０】
まずＣＰＵ１０１は、ＲＡＭ１０９内のキューバッファ１０９ａを参照して、当該キューバッファ１０９ａにコマンド（ライトコマンド）が格納（登録）されているかを判定する（ステップＳ１）。もし、キューバッファ１０９ａに１つのコマンドも登録されていないならば、ＣＰＵ１０１はそのままディスクアクセス処理を終了する。
【００２１】
これに対し、キューバッファ１０９ａにコマンドが登録されているならば（ステップＳ１）、ＣＰＵ１０１は選択手段として機能して、当該キューバッファ１０９ａに登録されているコマンド群の中から、その時点で最も早くディスクアクセスを開始できるコマンドを選択する（ステップＳ２）。このコマンド選択は、磁気ヘッド１０６の現在の磁気ディスク１０３上の位置（ヘッド位置）と、キューバッファ１０９ａに登録されている各コマンドによって指定される物理ブロックアドレスＰＢＡの示す磁気ディスク１０３上の位置（目標位置）とを比較することで行われる。具体的にはＣＰＵ１０１は、上記コマンド毎に、現在のヘッド位置と当該コマンドによって指定される目標位置とに基づき、シーク時間と回転待ち時間とを予測し、その予測されたシーク時間と回転待ち時間との和が最小となるコマンドを、その時点で最も早くディスクアクセスを開始できるコマンドとして選択する。シーク時間及び回転待ち時間の詳細については後述する。
【００２２】
ＣＰＵ１０１は、磁気ヘッド１０６の現在の磁気ディスク１０３上の位置と、選択されたコマンドによって指定される物理ブロックアドレスＰＢＡの示す磁気ディスク１０３上の位置と、予測されたシーク時間（予測シーク時間）とをもとに、当該コマンドを実行したときの予測される回転待ち時間を計算（取得）する（ステップＳ３）。なお、上記ステップＳ２でコマンド毎に予測されたシーク時間と回転待ち時間との情報を例えばＲＡＭ１０９に格納しておくならば、ステップＳ３では、選択されたコマンドに関する予測された回転待ち時間の情報を当該ＲＡＭ１０９から読み出せば良い。
【００２３】
ＣＰＵ１０１はステップＳ３を実行すると判定手段として機能して、当該ステップＳ３で取得された回転待ち時間（予測回転待ち時間）を規定時間と比較して、回転待ち時間が規定時間よりも長いかを判定する（ステップＳ４）。もし、回転待ち時間が規定時間よりも長い場合、ＣＰＵ１０１は後述するように当該回転時間を有効に利用するためにコマンド実行待ち手段として機能して、選択されたコマンドの実行（つまり選択されたコマンドに従うディスクアクセスの開始）を見送る。そしてＣＰＵ１０１は、例えば上記規定時間よりも短い一定時間を待ってステップＳ１の処理に戻り、再度コマンドを選択する（ステップＳ２）。キューバッファ１０９ａの状態が変わらない場合、最初に選択されたコマンドと同じコマンドが再度選択される。また、上記一定時間の間にホストシステム２００からの新たなコマンドを受け付けた場合、後述するように、当該新たなコマンド及びその時点においてキューバッファ１０９ａに既に格納されているコマンド（コマンド群）の中から、最も早くディスクアクセスを開始できるコマンドが選択されることになる。ＣＰＵ１０１は、回転待ち時間が規定時間を下回るまで、上述の処理を上記一定時間間隔で繰り返す。
【００２４】
図４は、磁気ヘッド１０６の現在の磁気ディスク１０３上の位置（つまり現在のヘッド位置）４０１と、選択されたコマンドによって指定される物理ブロックアドレスＰＢＡの示す磁気ディスク１０３上の位置（つまり目標位置）４０２と、予測されたシーク時間（予測シーク時間）と、予測された回転待ち時間との関係を説明するための図である。図４において、現在のヘッド位置４０１はトラックＴＲ１上にあり、目標位置４０２はトラックＴＲ２上にある。磁気ヘッド１０６をトラックＴＲ１上のヘッド位置４０１からトラックＴＲ２に移動するのに要する時間がシーク時間である。磁気ヘッド１０６をトラックＴＲ１上のヘッド位置４０１からトラックＴＲ２に移動するシーク動作の後、磁気ディスク１０３上の目標位置４０２が磁気ヘッド１０６に対向する位置まで当該磁気ディスク１０３が回転するのに要する時間が回転待ち時間である。上記ステップＳ４では、この回転待ち時間が規定時間と比較される。図４は、回転待ち時間が規定時間よりも長い例が示されている。
【００２５】
さて、回転待ち時間が規定時間よりも長いために、ＣＰＵ１０１が一定時間を待ってステップＳ１に戻るまでの間に、ホストシステム２００からＨＤＤ１００にインタフェースバス３００を介してコマンド（ライトコマンド）が転送されたものとする。この場合、ＣＰＵ１０１は、ホストシステム２００からの新たなライトコマンドをＨＤＣ１１０を介して受け付ける。このとき、ホストシステム２００からの新たなライトコマンドによって指定される、磁気ディスク１０３に書き込まれるべきライトデータはライトバッファ１１２ａに一時格納される。
【００２６】
ＣＰＵ１０１は、ホストシステム２００からの新たなライトコマンドを受け付けるとコマンド格納処理手段として機能して、当該コマンドをキューバッファ１０９ａに登録（キューイング）するためのキューバッファ登録処理を実行する。このＣＰＵ１０１によるキューバッファ登録処理について、図５のフローチャートを参照して説明する。
【００２７】
まず、ＣＰＵ１０１は重なり判定手段として機能して、受け付けたライトコマンドの指定するアクセス範囲（第１のアクセス範囲と称する）と、キューバッファ１０９ａに格納（登録）されているライトコマンド（コマンド群）の指定するアクセス範囲（第２のアクセス範囲と称する）との重なりを調べる（ステップＳ１１）。ここで、アクセス範囲は、コマンドに含まれている論理ブロックアドレス（開始論理ブロックアドレス）ＬＢＡとブロック数ＮＢとにより特定される。
【００２８】
もし、第１のアクセス範囲と一部でも重なりのある第２のアクセス範囲を指定するライトコマンドがキューバッファ１０９ａに格納されていないならば、ＣＰＵ１０１はステップＳ１３に進む。ステップＳ１３において、ＣＰＵ１０１は近接判定手段として機能して、第１のアクセス範囲に近い（近接する）第２のアクセス範囲を指定するライトコマンドがキューバッファ１０９ａに格納されているかを判定する。ここでは、第１のアクセス範囲と第２のアクセス範囲との間隔を表すブロック数（セクタ数）が規定値よりも少ない場合に、ＣＰＵ１０１は、第１のアクセス範囲に近い第２のアクセス範囲を指定するライトコマンドがキューバッファ１０９ａに格納されていると判定する。
【００２９】
もし、第１のアクセス範囲に近い第２のアクセス範囲を指定するライトコマンドがキューバッファ１０９ａに格納されていないならば（ステップＳ１３）、ＣＰＵ１０１はステップＳ１４に進む。このステップＳ１４において、ＣＰＵ１０１はコマンド格納処理手段として機能して、受け付けたライトコマンドを単体でキューバッファ１０９ａに格納（登録）し、当該受け付けたライトコマンドを含むキューバッファ１０９ａ内のライトコマンド群を、例えば当該コマンドに含まれている論理ブロックアドレスＬＢＡの昇順にソートして再配置する。つまりＣＰＵ１０１は、キューバッファ１０９ａに格納されているライトコマンド群が論理ブロックアドレスＬＢＡの昇順になるように、上記受け付けたコマンドを当該キューバッファ１０９ａ内のライトコマンド群（ライトコマンドの待ち行列）中に挿入する。キューバッファ１０９ａに新たに格納されたコマンドには、当該コマンドに含まれている論理ブロックアドレスＬＢＡに対応する物理ブロックアドレスＰＢＡ、当該コマンドで指定されるライトデータが一時格納されているライトバッファ１１２ａの領域の開始位置を示すバッファポインタＢＰ及びＦ＝０のフラグＦとが付加される。
【００３０】
これに対し、第１のアクセス範囲に近い第２のアクセス範囲を指定するライトコマンドがキューバッファ１０９ａに格納されている場合（ステップＳ１３）、ＣＰＵ１０１はステップＳ１５に進む。このステップＳ１５において、ＣＰＵ１０１はコマンド格納処理手段として機能して、キューバッファ１０９ａに格納されているライトコマンド群が論理ブロックアドレスＬＢＡの昇順になるように、上記受け付けたライトコマンド（新たなライトコマンド）を当該キューバッファ１０９ａ内のライトコマンド群中に挿入する。そしてＣＰＵ１０１は、キューバッファ１０９ａに挿入された新たなライトコマンドと、キューバッファ１０内で当該新たなライトコマンドの直前または直後に格納されている、当該新たなコマンドの指定するアクセス範囲（第１のアクセス範囲）に近いと判定されたアクセス範囲（第２のアクセス範囲）を指定するライトコマンドとを一括処理対象として関連付ける。ここで、新たなライトコマンドと当該ライトコマンドの直後のライトコマンドとを関連付けるには、新たなライトコマンドに付加されるフラグＦをＦ＝１に設定すれば良い。これに対し、新たなライトコマンドと当該ライトコマンドの直前のライトコマンドとを関連付けるには、当該直前のライトコマンドに付加されるフラグＦをＦ＝１に設定すれば良い。
【００３１】
一方、第１のアクセス範囲と一部でも重なりのある第２のアクセス範囲を指定するライトコマンドがキューバッファ１０９ａに格納されているならば（ステップＳ１２）、ＣＰＵ１０１はステップＳ１６に進む。このステップＳ１６において、ＣＰＵ１０１はコマンド格納処理手段として機能して、重なる範囲の古いデータ、つまり第２のアクセス範囲に書き込まれるべきライトデータのうち、重なる範囲のデータを無効にする。ＣＰＵ１０１は、第２のアクセス範囲を指定するライトコマンドを、当該第２のアクセス範囲のうち、第１のアクセス範囲と重ならない部分のデータの書き込みを指定するライトコマンドに変更する。次にＣＰＵ１０１は、キューバッファ１０９ａに格納されているライトコマンド群が論理ブロックアドレスＬＢＡの昇順になるように、上記受け付けたライトコマンド（新たなライトコマンド）を当該キューバッファ１０９ａ内のライトコマンド群中に挿入する。そしてＣＰＵ１０１は、キューバッファ１０９ａに挿入された新たなライトコマンドと上記変更されたライトコマンドとを一括処理対象として関連付ける。ここでは、新たなライトコマンドがキューバッファ１０９ａ内で上記変更されたライトライトコマンドの直前に格納されているならば、当該新たなライトコマンドに付加されるフラグＦがＦ＝１に設定される。これに対し、新たなライトコマンドがキューバッファ１０９ａ内で上記変更されたライトライトコマンドの直後に格納されているならば、上記変更されたライトライトコマンドに付加されるフラグＦがＦ＝１に設定される。
【００３２】
但し、第２のアクセス範囲が全て第１のアクセス範囲に包含されている場合、ＣＰＵ１０１は上記ステップＳ１６において、当該第２のアクセス範囲を指定するライトコマンドをキューバッファ１０９ａから削除して、当該キューバッファ１０９ａに新たに格納されたライトコマンドに付加されるフラグＦをＦ＝０に設定する。逆に、第１のアクセス範囲の全てが第２のアクセス範囲に包含されている場合には、ＣＰＵ１０１は、当該第２のアクセス範囲を指定するライトコマンド及び第１のアクセス範囲を指定するライトコマンド（新たなライトコマンド）とに基づき、第２のアクセス範囲のうちの第１のアクセス範囲と重ならない前部分と後部分とをそれぞれ新たなアクセス範囲として指定する第１及び第２のライトコマンドを生成する。そしてＣＰＵ１０１は、上記第２のアクセス範囲を指定するライトコマンドをキューバッファ１０９ａから削除すると共に、上記新たなライトコマンド、上記第１のライトコマンド及び上記第２のライトコマンドを、キューバッファ１０９ａ内で当該第１及び第２のライトコマンドが上記新たなライトコマンドのそれぞれ直前及び直後に配置されるように、当該キューバッファ１０９ａ内のライトコマンド群中に挿入する。
【００３３】
以下、本実施形態における上述のキューバッファ登録処理及びディスクアクセス処理の具体例について説明する。  
図６は、３つのライトコマンドＣＭＤ１，ＣＭＤ２，ＣＭＤ３がキューバッファ１０９ａに格納されている場合における、当該ライトコマンドＣＭＤ１，ＣＭＤ２，ＣＭＤ３によって指定されるアクセス範囲の位置関係と、キューバッファ１０９ａの状態と、ライトバッファ１１２ａの状態との一例を示す。各ＣＭＤに付されている数字は、ホストシステム２００からライトコマンドが与えられた順序を示す。つまり、図６には、ライトコマンドがＣＭＤ１→ＣＭＤ２→ＣＭＤ３の順で与えられ、且つ当該ＣＭＤ１，ＣＭＤ２，ＣＭＤ３の実行前の状態が示されている。
【００３４】
図６の例では、ＣＭＤ１，ＣＭＤ２，ＣＭＤ３によって指定されるアクセス範囲の開始位置、つまり開始論理ブロックアドレスＬＢＡ１，ＬＢＡ２，ＬＢＡ３は、ＬＢＡ２＜ＬＢＡ１＜ＬＢＡ３である。この場合ＣＭＤ１，ＣＭＤ２，ＣＭＤ３はキューバッファ１０９に、開始論理ブロックアドレスの昇順にＣＭＤ２，ＣＭＤ１，ＣＭＤ３の順の並びで格納されている。
【００３５】
図６の状態で図３のフローチャートに従うディスクアクセス処理が行われ、ＣＭＤ１が選択されたものの、予測される回転待ち時間が規定時間を超えているために、当該ＣＭＤ１の実行が見送られた（つまりディスクアクセスの開始が待たされた）ものとする。この間、上記ステップＳ１が一定時間間隔で実行される。換言するならば、キューバッファ１０９ａからの新たなコマンド選択が一定時間待たされる。この一定時間の間に、ＣＰＵ１０１がホストシステム２００からの新たなライトコマンドＣＭＤ４を受け付けたものとする。
【００３６】
このＣＭＤ４によって指定されるアクセス範囲と、実行が見送られたＣＭＤ１によって指定されるアクセス範囲との関係が、以下に示すケース１乃至４の場合の各々について、図７乃至図１０を参照して説明する。
【００３７】
［ケース１］
図７は、ＣＭＤ４によって指定されるアクセス範囲が、ＣＭＤ２によって指定されるアクセス範囲とＣＭＤ１によって指定されるアクセス範囲との間に位置し、且つＣＭＤ１によって指定されるアクセス範囲に近い場合を示す。この場合、ＣＭＤ１，ＣＭＤ２，ＣＭＤ３，ＣＭＤ４はキューバッファ１０９に、ＣＭＤ２，ＣＭＤ４，ＣＭＤ１，ＣＭＤ３の順の並びで格納される。ＣＭＤ４に付加されるフラグＦは、図５のステップＳ１５において、図７に示されるようにＦ＝１に設定される。これにより、ＣＭＤ４と、キューバッファ１０９ａ内で当該ＣＭＤ４の次のエントリに格納されているＣＭＤ１とは、一括処理の対象であることが示される。
【００３８】
図７に示す状態で、図３のフローチャートに従うディスクアクセス処理が行われ、ステップＳ２でＣＭＤ４が選択されたものとする。また、このＣＭＤ４を仮に実行した場合の予測される回転待ち時間が規定時間より短いものとする。この場合、ＣＰＵ１０１はコマンド実行手段として機能し、ＣＭＤ４をキューバッファ１０９ａから削除して、当該ＣＭＤ４に従うディスクアクセスを実行する（ステップＳ５，Ｓ６）。
【００３９】
さて、図７の例のように、ＣＭＤ４に付されているフラグＦがＦ＝１の場合、ＣＰＵ１０１は上記ステップＳ５において、当該ＣＭＤ４と、キューバッファ１０９ａの次のエントリに格納されているＣＭＤ１とを一括処理の対象として、このＣＭＤ１もキューバッファ１０９ａから削除する。ここでは、ＣＭＤ４及びＣＭＤ１によって指定されるアクセス範囲が磁気ディスク１０３の同一トラック上に存在するものとする。この場合、ＣＰＵ１０１は上記ステップＳ６において、ＣＭＤ４及びＣＭＤ１を１回のディスクアクセス処理で一括して実行するために、キューバッファ１０９ａ内でＣＭＤ４及びＣＭＤ１にそれぞれ付されている物理ブロックアドレスＰＢＡ４、ブロック数ＮＢ４及びバッファポインタＢＰ４を含むディスクアクセスパラメータ、並びに物理ブロックアドレスＰＢＡ１、ブロック数ＮＢ１及びバッファポインタＢＰ１を含むディスクアクセスパラメータを、ＨＤＣ１１０内のレジスタ部１１０ａに設定して、当該ＨＤＣ１１０を起動する。
【００４０】
するとＨＤＣ１１０は、レジスタ部１１０ａに設定されたディスクアクセスパラメータの組に従って、ＣＰＵ１０１から独立にディスクライト動作を連続的に実行する。この動作をスキップライト動作と称する。このスキップライト動作により、ＣＭＤ４及びＣＭＤ１の指定するディスクアクセスが行われる。
【００４１】
この場合、図７の例では、まず矢印７１で示されるように、ＣＭＤ４で指定されるライトデータＤ４、つまりバッファポインタＢＰ４で示されるライトバッファ１１２ａの位置からブロック数ＮＢ４のデータＤ４が読み出されて、磁気ディスク１０３上の物理ブロックアドレスＰＢＡ４から始まるブロック数ＮＢ４の領域に磁気ヘッド１０６により書き込まれる。続いて、矢印７２で示されるように、ＣＭＤ１で指定されるライトデータＤ１、つまりバッファポインタＢＰ１で示されるライトバッファ１１２ａの位置からブロック数ＮＢ１のデータＤ１が読み出されて、磁気ディスク１０３上の物理ブロックアドレスＰＢＡ１から始まるブロック数ＮＢ１の領域に磁気ヘッド１０６により書き込まれる。
【００４２】
これにより、１コマンドの実行毎に、次に実行されるべき１コマンドの指定するディスクパラメータをＣＰＵ１０１がレジスタ部１１０ａに設定してディスクアクセスを起動するのに比較して、ＣＰＵ１０１によるディスクアクセス処理回数を減らすことができる。この結果、１コマンドの実行毎にＣＰＵ１０１が介在してＣＭＤ４及びＣＭＤ１を個々に実行する場合と比較して、ＣＭＤ４に従うディスクアクセス終了後、ＣＭＤ１に従うディスクアクセスを実行する際の回転待ち時間を減少することができる。よって、ＨＤＤ１００での消費電力を低減すると共に、ランダムアクセス時のライトコマンド実行時間を短縮することができる。
【００４３】
［ケース２］
次に、ＣＭＤ４によって指定されるアクセス範囲の後端部がＣＭＤ１によって指定されるアクセス範囲と一部重なる場合について図８を参照して説明する。  
この場合、ＣＭＤ１は図５のステップＳ１６において、重なる範囲の古い方のデータ、つまりＣＭＤ１によって指定されるライトデータＤ１のうち重なる範囲のデータが無効化される。また、ＣＭＤ１に代えて用いられるＣＭＤ１ａが生成される。キューバッファ１０９ａには、図８に示されるように、ＣＭＤ２，ＣＭＤ４，ＣＭＤ１ａ，ＣＭＤ３が、この表記の順の並びで格納される。
【００４４】
ＣＭＤ１ａは、ＣＭＤ４によって指定されるアクセス範囲と重ならない範囲のデータのライトを指定する。ここでは、ＣＭＤ１ａは図８に示すように、開始論理ブロックアドレスＬＢＡ１ａ及びブロック数ＮＢ１ａを含み、当該ＣＭＤ１ａには物理ブロックアドレスＰＢＡ１ａ、バッファポインタＢＰ１ａ及びフラグＦ（Ｆ＝０）が付される。また、ＣＭＤ４に付されるフラグＦはＦ＝１に設定され、ＣＭＤ４と次のＣＭＤ１ａとが一括処理の対象であることが示される。
【００４５】
図８に示す状態で、図３のフローチャートに従うディスクアクセス処理が行われ、ステップＳ２でＣＭＤ４が選択されたものとする。また、このＣＭＤ４を仮に実行した場合の予測される回転待ち時間が規定時間より短いものとする。この場合、ＣＰＵ１０１はＣＭＤ４をキューバッファ１０９ａから削除して、当該ＣＭＤ４に従うディスクアクセスを実行する（ステップＳ５，Ｓ６）。
【００４６】
さて、図８の例のように、ＣＭＤ４に付されているフラグＦがＦ＝１の場合、ＣＰＵ１０１は上記ステップＳ５において、当該ＣＭＤ４と次のＣＭＤ１ａとを一括処理の対象として、このＣＭＤ１ａもキューバッファ１０９ａから削除する。ここでは、ＣＭＤ４及びＣＭＤ１ａによって指定されるアクセス範囲が磁気ディスク１０３の同一トラック上に存在するものとする。この場合、ＣＰＵ１０１はステップＳ６において、ＣＭＤ４及びＣＭＤ１ａを１回のディスクアクセス処理で一括して実行するために、キューバッファ１０９ａ内でＣＭＤ４及びＣＭＤ１ａにそれぞれ付されている物理ブロックアドレスＰＢＡ４、ブロック数ＮＢ４及びバッファポインタＢＰ４を含むディスクアクセスパラメータ、並びに物理ブロックアドレスＰＢＡ１ａ、ブロック数ＮＢ１ａ及びバッファポインタＢＰ１ａを含むディスクアクセスパラメータを、ＨＤＣ１１０内のレジスタ部１１０ａに設定して、当該ＨＤＣ１１０を起動する。
【００４７】
するとＨＤＣ１１０は、レジスタ部１１０ａに設定されたディスクアクセスパラメータの組に従って、ＣＰＵ１０１から独立にスキップライト動作を実行する。このスキップライト動作により、ＣＭＤ４及びＣＭＤ１ａの指定するディスクアクセスが行われる。
【００４８】
この場合、図８の例では、まず矢印８１で示されるように、ＣＭＤ４で指定されるライトデータＤ４がライトバッファ１１２ａから読み出されて、磁気ディスク１０３上の物理ブロックアドレスＰＢＡ４から始まるブロック数ＮＢ４の領域に書き込まれる。続いて、矢印８２で示されるように、ＣＭＤ１ａで指定されるライトデータ、つまりＣＭＤ１で指定されるデータＤ１のうち、ＣＭＤ４で指定されるアクセス範囲と重ならない部分のブロック数ＮＢ１ａのデータが、バッファポインタＢＰ１ａで示されるライトバッファ１１２ａの位置から読み出されて、磁気ディスク１０３上の物理ブロックアドレスＰＢＡ１ａから始まるブロック数ＮＢ１ａの領域に、回転待ち時間なしで書き込まれる。
【００４９】
これにより、ＣＭＤ１の実行を見送ることなく、当該ＣＭＤ１及びＣＭＤ４を個々に実行する場合に比べて、ＣＰＵ１０１によるディスクアクセス処理回数を減らしてＨＤＤ１００での消費電力を低減すると共に、ランダムアクセス時のライトコマンド実行時間を短縮することができる。
【００５０】
［ケース３］
次に、ＣＭＤ４によって指定されるアクセス範囲がＣＭＤ１によって指定されるアクセス範囲を包含する場合について図９を参照して説明する。  
この場合、ＣＭＤ１は図５のステップＳ１６においてキューバッファ１０９ａから削除される。キューバッファ１０９ａには、図９に示されるように、ＣＭＤ２，ＣＭＤ４，ＣＭＤ３が、この表記の順の並びで格納される。
【００５１】
図９に示す状態で、図３のフローチャートに従うディスクアクセス処理が行われ、ステップＳ２でＣＭＤ４が選択されたものとする。また、このＣＭＤ４を仮に実行した場合の予測される回転待ち時間が規定時間より短いものとする。この場合、ＣＰＵ１０１はＣＭＤ４をキューバッファ１０９ａから削除して、当該ＣＭＤ４に従うディスクアクセスを実行する（ステップＳ５，Ｓ６）。ここでは、図９において矢印９０で示されるように、ＣＭＤ４で指定されるライトデータＤ４がライトバッファ１１２ａから読み出されて、磁気ディスク１０３上の物理ブロックアドレスＰＢＡ４から始まるブロック数ＮＢ４の領域に書き込まれる。
【００５２】
これにより、ＣＭＤ１の実行を見送ることなく、当該ＣＭＤ１及びＣＭＤ４を個々に実行する場合に比べて、ＣＰＵ１０１によるディスクアクセス処理回数を減らしてＨＤＤ１００での消費電力を低減すると共に、ランダムアクセス時のライトコマンド実行時間を短縮することができる。
【００５３】
［ケース４］
次に、ＣＭＤ４によって指定されるアクセス範囲が、ケース４とは逆に、ＣＭＤ１によって指定されるアクセス範囲に包含される場合について図１０を参照して説明する。  
この場合、ＣＭＤ１は図５のステップＳ１６において、重なる範囲の古い方のデータ、つまりＣＭＤ１によって指定されるライトデータＤ１のうち重なる範囲のデータ（ブロック数ＮＢ４のデータ）が無効化される。また、ＣＭＤ１に代えて用いられる２つのＣＭＤ１ａ及びＣＭＤ１ｂが生成され、ＣＭＤ１はキューバッファ１０９ａから削除される。キューバッファ１０９ａには、図１０に示されるように、ＣＭＤ２，ＣＭＤ１ａ，ＣＭＤ４，ＣＭＤ１ｂ，ＣＭＤ３が、この表記の順の並びで格納される。
【００５４】
ＣＭＤ１ａ及びＣＭＤ１ｂは、ＣＭＤ１によって指定されるアクセス範囲のうち、ＣＭＤ４によって指定されるアクセス範囲と重ならない、それぞれ前部分及び後部分のデータのライトを指定する。ここでは、ＣＭＤ１ａは図１０に示すように、開始論理ブロックアドレスＬＢＡ１ａ及びブロック数ＮＢ１ａを含み、当該ＣＭＤ１ａには物理ブロックアドレスＰＢＡ１、バッファポインタＢＰ１及びフラグＦ（Ｆ＝１）が付される。一方、ＣＭＤ１ｂは図１０に示すように、開始論理ブロックアドレスＬＢＡ１ｂ及びブロック数ＮＢ１ｂを含み、当該ＣＭＤ１ｂには物理ブロックアドレスＰＢＡ１ｂ、バッファポインタＢＰ１ｂ及びフラグＦ（Ｆ＝０）が付される。また、ＣＭＤ１ｂの前のＣＭＤ４に付されるフラグＦはＦ＝１に設定される。これにより、ＣＭＤ１ａとＣＭＤ４とＣＭＤ１ｂとが一括処理の対象であることが示される。
【００５５】
図１０に示す状態で、図３のフローチャートに従うディスクアクセス処理が行われ、ステップＳ２でＣＭＤ１ａが選択されたものとする。また、このＣＭＤ１ａを仮に実行した場合の予測される回転待ち時間が規定時間より短いものとする。この場合、ＣＰＵ１０１はＣＭＤ１ａをキューバッファ１０９ａから削除して、当該ＣＭＤ１ａに従うディスクアクセスを実行する（ステップＳ５，Ｓ６）。
【００５６】
さて、図１０の例のように、ＣＭＤ１ａ及び当該ＣＭＤ１ａの次のＣＭＤ４に付されているフラグＦがＦ＝１の場合、ＣＰＵ１０１は上記ステップＳ５において、当該ＣＭＤ１ａ及びＣＭＤ４と更に次のＣＭＤ１ｂとを一括処理の対象として、このＣＭＤ４及びＣＭＤ１ｂもキューバッファ１０９ａから削除する。ここでは、ＣＭＤ１ａ，ＣＭＤ４及びＣＭＤ１ｂによって指定されるアクセス範囲が磁気ディスク１０３の同一トラック上に存在するものとする。この場合、ＣＰＵ１０１はステップＳ６において、ＣＭＤ１ａ，ＣＭＤ４及びＣＭＤ１ｂを１回のディスクアクセス処理で一括して実行するために、キューバッファ１０９ａ内でＣＭＤ１ａ，ＣＭＤ４及びＣＭＤ１ｂにそれぞれ付されている物理ブロックアドレスＰＢＡ１、ブロック数ＮＢ１ａ及びバッファポインタＢＰ１を含むディスクアクセスパラメータ、物理ブロックアドレスＰＢＡ４、ブロック数ＮＢ４及びバッファポインタＢＰ４を含むディスクアクセスパラメータ、並びに物理ブロックアドレスＰＢＡ１ｂ、ブロック数ＮＢ１ｂ及びバッファポインタＢＰ１ｂを含むディスクアクセスパラメータを、ＨＤＣ１１０内のレジスタ部１１０ａに設定して、当該ＨＤＣ１１０を起動する。
【００５７】
するとＨＤＣ１１０は、レジスタ部１１０ａに設定されたディスクアクセスパラメータの組に従って、ＣＰＵ１０１から独立にスキップライト動作を実行する。このスキップライト動作により、ＣＭＤ１ａ，ＣＭＤ４及びＣＭＤ１ｂの指定するディスクアクセスが行われる。
【００５８】
この場合、図１０の例では、まず矢印１１で示されるように、ＣＭＤ１ａで指定されるライトデータ、つまりＣＭＤ１で指定されるデータＤ１のうち、ＣＭＤ４で指定されるアクセス範囲と重ならない前部分のブロック数ＮＢ１ａのデータが、バッファポインタＢＰ１で示されるライトバッファ１１２ａの位置から読み出されて、磁気ディスク１０３上の物理ブロックアドレスＰＢＡ１から始まるブロック数ＮＢ１ａの領域に書き込まれる。続いて、矢印１２で示されるように、ＣＭＤ４で指定されるライトデータＤ４がライトバッファ１１２ａから読み出されて、磁気ディスク１０３上の物理ブロックアドレスＰＢＡ４から始まるブロック数ＮＢ４の領域に、回転待ち時間なしで書き込まれる。続いて、矢印１３で示されるように、ＣＭＤ１ｂで指定されるライトデータ、つまりＣＭＤ１で指定されるデータＤ１のうち、ＣＭＤ４で指定されるアクセス範囲と重ならない後部分のブロック数ＮＢ１ｂのデータが、バッファポインタＢＰ１ｂで示されるライトバッファ１１２ａの位置から読み出されて、磁気ディスク１０３上の物理ブロックアドレスＰＢＡ１ｂから始まるブロック数ＮＢ１ｂの領域に、回転待ち時間なしで書き込まれる。
【００５９】
これにより、ＣＭＤ１の実行を見送ることなく、当該ＣＭＤ１及びＣＭＤ４を個々に実行する場合に比べて、ＣＰＵ１０１によるディスクアクセス処理回数を減らしてＨＤＤ１００での消費電力を低減すると共に、ランダムアクセス時のライトコマンド実行時間を短縮することができる。
【００６０】
このように本実施形態においては、予測される回転待ち時間が規定時間を超えている場合、ディスクアクセスの開始を待つことで、その間に受け付けたコマンドによって指定されるアクセス範囲とディスクアクセスを待たせたコマンドによって指定されるアクセス範囲が近い、もしくは重なる場合、当該受け付けたコマンドをキューバッファ１０９ａに登録する（キューイングの）ときに、それらを一括処理可能なコマンドとして関連付けることができる。これにより、ディスクアクセスの回数を減らして、その分の回転待ち時間を減らすことができる。この結果、ランダムアクセス時のコマンド実行時間を短縮することができる。また、ディスクアクセスの回数を減らすことでＨＤＤ１００での消費電力を抑えることもできる。
【００６１】
上記実施形態では、説明の簡略化のために、一括処理可能な複数のコマンドによってそれぞれ指定されるアクセス範囲が磁気ディスク１０３の同一トラック上に存在する場合を想定している。もし、一括処理可能な複数のコマンドの中に、複数のトラックにまたがるアクセス範囲を指定するコマンドが含まれている場合、ＣＰＵ１０１は、トラック単位で個々にディスクアクセスパラメータをＨＤＣ１１０のレジスタ部１１０ａに設定して、その都度ＨＤＣ１１０を起動すれば良い。この場合、複数のコマンドで指定されるアクセス範囲が存在するトラック数に一致する回数のディスクアクセスが実行されることになるものの、その回数は当該複数のコマンドの数以下となる。
【００６２】
上記実施形態では、ホストシステム２００からのライトコマンドを受け付けて当該コマンドをキューバッファ１０９ａに登録するためのキューバッファ登録処理において、受け付けたコマンドによって指定されるアクセス範囲（第１のアクセス範囲）と、キューバッファ１０９ａに既に登録されているライトコマンド（コマンド群）の指定するアクセス範囲との重なりが判定される。そして、一部でも重なっている場合、或いは両アクセス範囲が近い場合に、コマンド群の実行順序が単に変更されるだけではなく、該当する複数のコマンドが一括処理の対象として関連付けられてキューバッファ１０９ａに登録される。
【００６３】
しかし、新たなライトコマンドを他のコマンドと関連付けることなくキューバッファ１０９ａに登録しても構わない。この場合、キューバッファ１０９ａに登録されているコマンド群のうち、その時点において最も早くディスクアクセスを開始可能なコマンド（シーク時間と回転待ち時間との和が最小となるコマンド）が選択され、この選択されたコマンドの予測される回転待ち時間が規定時間より短いときは、当該選択されたコマンドが単独で実行される。つまり、前記特許文献１に記載されているように、単にコマンド群の実行順序がシーク時間と回転待ち時間との和が最小となるように変更される構成であっても構わない。このような構成では、上記実施形態とは異なって、ディスクアクセス処理回数は低減できない。しかし、予測された回転待ち時間が規定時間を超えている場合にコマンドの実行を待つことによって、その間にホストシステムからの新たなコマンドを受け付けたならば、当該新たなコマンドを含めてコマンド実行順序を変更することにより、より性能の良いコマンド実行順序に変更する機会を増やすことができる。
【００６４】
また上記実施形態では、本発明を磁気ディスク装置（ＨＤＤ）に実施した場合について説明した。しかし本発明は、ヘッドによりデータのリード／ライトが行われるディスク記憶装置であれば、光磁気ディスク装置など、磁気ディスク装置以外のディスク記憶装置にも実施可能である。
【００６５】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００６６】
【図１】本発明の一実施形態に係る磁気ディスク装置（以下、ＨＤＤと称する）の構成を示すブロック図。
【図２】図１に示されるキューバッファのデータ構造例を示す図。
【図３】同実施形態におけるディスクアクセス処理の手順を示すフローチャート。
【図４】磁気ディスク上のヘッド位置と、選択されたコマンドによって指定される磁気ディスク上の目標位置と、予測されたシーク時間と、予測された回転待ち時間との関係を説明するための図。
【図５】同実施形態におけるキーバッファ登録処理の手順を示すフローチャート。
【図６】同実施形態において、３つのライトコマンドがキューバッファに格納されている場合における、当該ライトコマンドによって指定されるアクセス範囲の位置関係と、キューバッファの状態と、ライトバッファの状態との一例を示す図。
【図７】図６の状態で新たなライトコマンドが受け付けられたケース１における、当該新たなライトコマンドを含む４つのライトコマンドによって指定されるアクセス範囲の位置関係と、キューバッファの状態と、ライトバッファの状態との一例を示す図。
【図８】図６の状態で新たなライトコマンドが受け付けられたケース２における、当該新たなライトコマンドを含む４つのライトコマンドによって指定されるアクセス範囲の位置関係と、キューバッファの状態と、ライトバッファの状態との一例を示す図。
【図９】図６の状態で新たなライトコマンドが受け付けられたケース３における、当該新たなライトコマンドを含む４つのライトコマンドによって指定されるアクセス範囲の位置関係と、キューバッファの状態と、ライトバッファの状態との一例を示す図。
【図１０】図６の状態で新たなライトコマンドが受け付けられたケース４における、当該新たなライトコマンドを含む４つのライトコマンドによって指定されるアクセス範囲の位置関係と、キューバッファの状態と、ライトバッファの状態との一例を示す図。
【符号の説明】
【００６７】
１００…ＨＤＤ（磁気ディスク装置、ディスク記憶装置）、１０１…ＣＰＵ、１０３…磁気ディスク、１０６…磁気ヘッド、１０９ａ…キューバッファ、１１０…ＨＤＣ（ディスクコントローラ）、１１０ａ…レジスタ部、１１２…バッファＲＡＭ、１１２ａ…ライトバッファ、２００…ホストシステム。
【図１】
2007272993.tif 000003
【図２】
2007272993.tif 000004
【図３】
2007272993.tif 000005
【図４】
2007272993.tif 000006
【図５】
2007272993.tif 000007
【図６】
2007272993.tif 000008
【図７】
2007272993.tif 000009
【図８】
2007272993.tif 000010
【図９】
2007272993.tif 000011
【図１０】
2007272993.tif 000012