JP2007272993A - ディスク記憶装置及び同装置に適用されるライトコマンド処理方法 - Google Patents
ディスク記憶装置及び同装置に適用されるライトコマンド処理方法 Download PDFInfo
- Publication number
- JP2007272993A JP2007272993A JP2006097539A JP2006097539A JP2007272993A JP 2007272993 A JP2007272993 A JP 2007272993A JP 2006097539 A JP2006097539 A JP 2006097539A JP 2006097539 A JP2006097539 A JP 2006097539A JP 2007272993 A JP2007272993 A JP 2007272993A
- Authority
- JP
- Japan
- Prior art keywords
- write command
- command
- disk
- access
- specified
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
【課題】より性能の良いコマンド実行順序に変更する機会を増やすことを可能とする。
【解決手段】CPU101は、ホストシステム200から与えられてキューバッファ109aに格納されているライトコマンドの群の中から最も早くディスクアクセスを開始可能なコマンドを選択し、当該選択されたコマンドを仮に実行した場合に発生する回転待ち時間を予測する。CPU101は、予測された回転待ち時間が規定時間を超える場合、一定時間を待ってキューバッファ109aからのコマンド選択を再度実行する。CPU101は、予測された回転待ち時間が規定時間を超える場合、上記選択されたライトコマンドによって指定されたディスクアクセスのためのディスクアクセスパラメータをHDC110のレジスタ部110aに設定して、当該HDC110によるディスクアクセス制御を起動する。
【選択図】 図1
【解決手段】CPU101は、ホストシステム200から与えられてキューバッファ109aに格納されているライトコマンドの群の中から最も早くディスクアクセスを開始可能なコマンドを選択し、当該選択されたコマンドを仮に実行した場合に発生する回転待ち時間を予測する。CPU101は、予測された回転待ち時間が規定時間を超える場合、一定時間を待ってキューバッファ109aからのコマンド選択を再度実行する。CPU101は、予測された回転待ち時間が規定時間を超える場合、上記選択されたライトコマンドによって指定されたディスクアクセスのためのディスクアクセスパラメータをHDC110のレジスタ部110aに設定して、当該HDC110によるディスクアクセス制御を起動する。
【選択図】 図1
Description
本発明は、キーバッファに格納されたライトコマンドの群から最も早くディスクアクセスを開始可能なコマンドを選択して実行するのに好適なディスク記憶装置及びライトコマンド処理方法に関する。
一般に、磁気ディスク装置(ハードディスクドライブ:HDD)に代表されるディスク記憶装置は、当該ディスク記憶装置を利用するホストシステムから与えられるコマンドを当該コマンドが実行されるまで一時格納するためのキューバッファ(コマンドキュー)を有している。
通常、キューバッファに格納されている各コマンド、例えばライトコマンドは、ホストシステムから与えられた順に実行される。各ライトコマンドの指定するディスク(メディア)上の目標位置(書き込み先となるアドレス)が不連続な場合、つまりランダムアクセスの場合、当該コマンドを実行してディスク(メディア)上の目標位置にヘッドによりデータを書き込む際に待ち時間が発生する。
待ち時間は、シーク時間と回転待ち時間との和で表される。シーク時間とは、ディスク上のヘッドを、現在当該ヘッドが位置しているトラックから当該コマンドで指定される目標のトラックに移動するシーク動作に要する時間である。回転待ち時間とは、シーク動作完了後に、ヘッドにより実際にデータが書き込まれるべきディスク上の目標位置、つまり目標のトラック上の目標のセクタ(ブロック)位置がヘッドに対向する位置まで当該ディスクが回転するのに要する時間である。
上記の待ち時間を少なくすることは、ディスク記憶装置の処理性能の向上(高速化)のためには重要である。そこで特許文献1には、キューバッファに格納されているコマンド(ランダムアクセスコマンド)の実行順序を上記の待ち時間(シーク時間と回転待ち時間との和)が少なくなるように変更する技術が記載されている。また、特許文献1には、コマンドの実行順序を変更してもなお残る回転待ち時間を利用してデータの先読みを実行することが記載されている。
特開2001−14111号公報(例えば段落0009,0010)
上記特許文献1によれば、コマンド実行順序を変更することにより、ディスク記憶装置の処理性能を向上することができる。しかし特許文献1では、より性能の良いコマンド実行順序に変更する機会を増やすことについては考慮されていない。また特許文献1では、、ディスクアクセス回数を減らすためのコマンド実行順序の変更については考慮されていない。
本発明は上記事情を考慮してなされたものでその目的は、より性能の良いコマンド実行順序に変更する機会を増やすことが可能なディスク記憶装置及びライトコマンド処理方法を提供することにある。
本発明の1つの態様によれば、ディスクからのデータの読み出しと当該ディスクへのデータ書き込みとがヘッドにより行われるディスク記憶装置が提供される。このディスク記憶装置は、前記ディスク記憶装置を利用するホストシステムから与えられるライトコマンドを一時格納するキューバッファと、前記キーバッファに格納されているライトコマンドの群の中から最も早くディスクアクセスを開始可能なコマンドを選択する選択手段と、前記選択されたライトコマンドを仮に実行した場合に発生する回転待ち時間を予測する予測手段と、前記予測手段によって予測された回転待ち時間が規定時間を超えるかを判定する判定手段と、前記予測された回転時間が前記規定時間を超える場合に、前記規定時間より短い一定時間を待って前記選択手段によるコマンド選択を再度行わせるコマンド実行待ち手段と、前記ホストシステムから新たなライトコマンドが与えられた場合、当該新たなライトコマンドを前記キューバッファに格納するコマンド格納処理手段と、ディスクアクセスのためのディスクアクセスパラメータが設定可能なレジスタ部を有し、当該レジスタ部に設定されたディスクアクセスパラメータに従って前記ディスクに対するアクセスを制御するディスクコントローラと、前記予測された回転時間が前記規定時間を超えない場合に、前記選択されたライトコマンドによって指定されたディスクアクセスのためのディスクアクセスパラメータを前記ディスクコントローラのレジスタ部に設定して、前記ディスクコントローラによるディスクアクセス制御を起動することにより当該ライトコマンドを実行するコマンド実行手段とを具備する
本発明によれば、キューバッファから、その時点において最も早くディスクアクセスを開始可能であるとして選択されたコマンドの実行前に回転待ち時間を予測し、その予測された回転待ち時間が規定時間を超えている場合には、当該コマンドを実行せずに一定時間待ってキューバッファからの再度のコマンド選択を行うことにより、この一定時間の間にホストシステムから新たなコマンドが与えられたならば、当該新たなコマンドと既にキーバッファに格納されているコマンドの中から、その時点において最も早くディスクアクセスを開始可能なコマンドを選択できるため、より性能の良いコマンド実行順序に変更する機会を増やすことが可能となる。
以下、本発明を磁気ディスク装置に適用した実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る磁気ディスク装置(以下、HDDと称する)の構成を示すブロック図である。図1において、HDD100はCPU101を有する。CPU101は、装置全体の制御及びモータドライバ(VCM・SPMドライバ))102の制御を時分割で行う主コントローラとして機能するプロセッサである。モータドライバ102はCPU101からの制御により、磁気ディスク103を定常回転させるスピンドルモータ(SPM)104と、磁気ヘッド106を目標位置に移動させるボイスコイルモータ(VCM)105とを駆動するための電流を、SPM104及びVCM105に供給する。
図1は本発明の一実施形態に係る磁気ディスク装置(以下、HDDと称する)の構成を示すブロック図である。図1において、HDD100はCPU101を有する。CPU101は、装置全体の制御及びモータドライバ(VCM・SPMドライバ))102の制御を時分割で行う主コントローラとして機能するプロセッサである。モータドライバ102はCPU101からの制御により、磁気ディスク103を定常回転させるスピンドルモータ(SPM)104と、磁気ヘッド106を目標位置に移動させるボイスコイルモータ(VCM)105とを駆動するための電流を、SPM104及びVCM105に供給する。
CPUバス107には、CPU101が実行すべきプログラムが予め格納されているROM(Read Only Memory)108と、CPU101のワーク領域及び変数を格納する変数領域等を提供するRAM(Random Access Memory)109と、ディスクコントローラ(以下、HDCと称する)110と、HDD100内での制御に必要な諸信号の生成を行う制御信号生成回路としてのゲートアレイ111とが接続されている。なお、RAM109をCPU101に内蔵させ、CPU101がCPUバス107から独立にRAM109を直接アクセスする構成とすることも可能である。
RAM109の記憶領域の一部は、キューバッファ(コマンドキューバッファ、コマンドキューテーブル)109aのための領域として用いられる。キューバッファ109aは、HDD100を利用するホストシステム200から転送される例えばライトコマンド(CMD)を当該コマンドが実行されるまでの期間格納するのに用いられる。本実施形態において、キューバッファ109a内でのコマンドの並び順は、通常のキューバッファと異なり、必ずしも入力順(受付順)とならない点に注意されたい。
HDC110は制御用レジスタの群から構成されるレジスタ部110aを有する。ゲートアレイ111もHDC110と同様に制御用レジスタの群から構成されるレジスタ部(図示せず)を有している。各制御用レジスタは、CPU101のアドレス空間の一部領域に割り当てられている。CPU101は、制御用レジスタが割り当てられている領域に対して読み出し/書き込みを行うことで、対応するHDC110またはゲートアレイ111を制御する。
HDC110は、CPUバス107以外に、ゲートアレイ111、バッファRAM112、及びリード/ライトIC113に接続されている。HDC110はまた、ホストシステム200とインタフェースバス300によって接続されている。
バッファRAM112は、RAMによって構成されるバッファメモリである。バッファRAM112の記憶領域の一部は、ホストシステム200から転送される磁気ディスク103に書き込まれるべきデータ(ライトデータ)を一時格納するためのライトバッファ112aのための領域として用いられる。バッファRAM112の記憶領域の他の一部は、磁気ディスク103から読み出されてホストシステム200に転送されるべきデータ(リードデータ)を一時格納するためのリードバッファ(図示せず)のための領域として用いられる。ライトバッファ112a及びリードバッファは例えばリングバッファとして用いられる。
HDD100におけるデータの読み出し時には、磁気ディスク103に記録されているデータが磁気ヘッド106によって読み出される。磁気ヘッド106により読み出された信号(アナログのリード信号)は、ヘッドIC114によって増幅され、しかる後にリード/ライトIC113によってA/D(アナログ/ディジタル)変換されて符号化(復号化)されてHDC110に出力される。また、ヘッドIC114によって増幅されたリード信号はリード/ライトIC113によってパルス化され、ゲートアレイ111に出力される。ゲートアレイ111は、リード/ライトIC113から出力されるパルス(リードパルス)から各種タイミング信号を生成する。HDC110は、リード/ライトIC113によって符号化されたリードデータをゲートアレイ111からの制御用の各信号に従って処理することにより、ホストシステム200に転送すべきデータを生成する。このデータは一旦バッファRAM112に格納されてから、インタフェースバス300を介してホストシステム200に転送される。
一方、HDD100におけるデータの書き込み時には、ホストシステム200からインタフェースバス300を介してHDD100に転送されたデータが、当該HDD100のHDC110で受け取られて、一旦バッファRAM112に格納される。このバッファRAM112に格納されたデータは、ゲートアレイ111からの制御用の各信号に従ってHDC110によって符号化され、リード/ライトIC113によって書き込み用の信号に変換され、ヘッドIC114を経由して磁気ヘッド106によって磁気ディスク103に書き込まれる。
図2はキューバッファ109aのデータ構造例を示す。キューバッファ109aは、ホストシステム200から転送されたライトコマンドの群を格納するエントリ群を有する。本実施形態において、キューバッファ109aに格納されるライトコマンドの群は、当該コマンドに含まれる書き込み開始論理ブロックアドレスLBAの昇順にソートされる。
キューバッファ109aに格納される各ライトコマンドは、書き込み開始論理ブロックアドレスLBAと、書き込みサイズをブロック(セクタ)数で表すブロック数NBとを含む。このライトコマンドには、当該コマンド中の論理ブロックアドレスLBAで指定される磁気ディスク103上の位置を示す物理ブロックアドレスPBAと、当該コマンドに従って磁気ディスク103に書き込まれるべきライトデータが一時格納されているライトバッファ112aの領域の開始位置を示すバッファポインタBPと、フラグFとが付加されている。物理ブロックアドレスPBAは、シリンダ位置を表すシリンダ番号(シリンダアドレス)と、ディスク面(上のヘッド)を表すヘッド番号と、セクタ位置(ブロック位置)を表すセクタ番号とから構成される。周知のように、シリンダ番号とヘッド番号とによりトラック番号が表される。なお、物理ブロックアドレスPBAは、論理ブロックアドレスLBAから容易に算出されるために、ライトコマンドに必ずしも付加される必要はない。フラグFは、第1の状態、例えばF=1のとき、当該フラグFが付加されているコマンドを、ライトバッファ112a内の次のエントリに格納されているコマンドと一括して処理すべきことを示す。フラグFは、第2の状態、例えばF=0のとき、当該フラグFが付加されているコマンドを、ライトバッファ112a内の次のエントリに格納されているコマンドから独立して処理すべきことを示す。、
次に、図1の構成のHDD100における動作について、キューバッファ109aに格納されているコマンド(ライトコマンド)に従うディスクアクセス処理について、図3のフローチャートを参照して説明する。
次に、図1の構成のHDD100における動作について、キューバッファ109aに格納されているコマンド(ライトコマンド)に従うディスクアクセス処理について、図3のフローチャートを参照して説明する。
まずCPU101は、RAM109内のキューバッファ109aを参照して、当該キューバッファ109aにコマンド(ライトコマンド)が格納(登録)されているかを判定する(ステップS1)。もし、キューバッファ109aに1つのコマンドも登録されていないならば、CPU101はそのままディスクアクセス処理を終了する。
これに対し、キューバッファ109aにコマンドが登録されているならば(ステップS1)、CPU101は選択手段として機能して、当該キューバッファ109aに登録されているコマンド群の中から、その時点で最も早くディスクアクセスを開始できるコマンドを選択する(ステップS2)。このコマンド選択は、磁気ヘッド106の現在の磁気ディスク103上の位置(ヘッド位置)と、キューバッファ109aに登録されている各コマンドによって指定される物理ブロックアドレスPBAの示す磁気ディスク103上の位置(目標位置)とを比較することで行われる。具体的にはCPU101は、上記コマンド毎に、現在のヘッド位置と当該コマンドによって指定される目標位置とに基づき、シーク時間と回転待ち時間とを予測し、その予測されたシーク時間と回転待ち時間との和が最小となるコマンドを、その時点で最も早くディスクアクセスを開始できるコマンドとして選択する。シーク時間及び回転待ち時間の詳細については後述する。
CPU101は、磁気ヘッド106の現在の磁気ディスク103上の位置と、選択されたコマンドによって指定される物理ブロックアドレスPBAの示す磁気ディスク103上の位置と、予測されたシーク時間(予測シーク時間)とをもとに、当該コマンドを実行したときの予測される回転待ち時間を計算(取得)する(ステップS3)。なお、上記ステップS2でコマンド毎に予測されたシーク時間と回転待ち時間との情報を例えばRAM109に格納しておくならば、ステップS3では、選択されたコマンドに関する予測された回転待ち時間の情報を当該RAM109から読み出せば良い。
CPU101はステップS3を実行すると判定手段として機能して、当該ステップS3で取得された回転待ち時間(予測回転待ち時間)を規定時間と比較して、回転待ち時間が規定時間よりも長いかを判定する(ステップS4)。もし、回転待ち時間が規定時間よりも長い場合、CPU101は後述するように当該回転時間を有効に利用するためにコマンド実行待ち手段として機能して、選択されたコマンドの実行(つまり選択されたコマンドに従うディスクアクセスの開始)を見送る。そしてCPU101は、例えば上記規定時間よりも短い一定時間を待ってステップS1の処理に戻り、再度コマンドを選択する(ステップS2)。キューバッファ109aの状態が変わらない場合、最初に選択されたコマンドと同じコマンドが再度選択される。また、上記一定時間の間にホストシステム200からの新たなコマンドを受け付けた場合、後述するように、当該新たなコマンド及びその時点においてキューバッファ109aに既に格納されているコマンド(コマンド群)の中から、最も早くディスクアクセスを開始できるコマンドが選択されることになる。CPU101は、回転待ち時間が規定時間を下回るまで、上述の処理を上記一定時間間隔で繰り返す。
図4は、磁気ヘッド106の現在の磁気ディスク103上の位置(つまり現在のヘッド位置)401と、選択されたコマンドによって指定される物理ブロックアドレスPBAの示す磁気ディスク103上の位置(つまり目標位置)402と、予測されたシーク時間(予測シーク時間)と、予測された回転待ち時間との関係を説明するための図である。図4において、現在のヘッド位置401はトラックTR1上にあり、目標位置402はトラックTR2上にある。磁気ヘッド106をトラックTR1上のヘッド位置401からトラックTR2に移動するのに要する時間がシーク時間である。磁気ヘッド106をトラックTR1上のヘッド位置401からトラックTR2に移動するシーク動作の後、磁気ディスク103上の目標位置402が磁気ヘッド106に対向する位置まで当該磁気ディスク103が回転するのに要する時間が回転待ち時間である。上記ステップS4では、この回転待ち時間が規定時間と比較される。図4は、回転待ち時間が規定時間よりも長い例が示されている。
さて、回転待ち時間が規定時間よりも長いために、CPU101が一定時間を待ってステップS1に戻るまでの間に、ホストシステム200からHDD100にインタフェースバス300を介してコマンド(ライトコマンド)が転送されたものとする。この場合、CPU101は、ホストシステム200からの新たなライトコマンドをHDC110を介して受け付ける。このとき、ホストシステム200からの新たなライトコマンドによって指定される、磁気ディスク103に書き込まれるべきライトデータはライトバッファ112aに一時格納される。
CPU101は、ホストシステム200からの新たなライトコマンドを受け付けるとコマンド格納処理手段として機能して、当該コマンドをキューバッファ109aに登録(キューイング)するためのキューバッファ登録処理を実行する。このCPU101によるキューバッファ登録処理について、図5のフローチャートを参照して説明する。
まず、CPU101は重なり判定手段として機能して、受け付けたライトコマンドの指定するアクセス範囲(第1のアクセス範囲と称する)と、キューバッファ109aに格納(登録)されているライトコマンド(コマンド群)の指定するアクセス範囲(第2のアクセス範囲と称する)との重なりを調べる(ステップS11)。ここで、アクセス範囲は、コマンドに含まれている論理ブロックアドレス(開始論理ブロックアドレス)LBAとブロック数NBとにより特定される。
もし、第1のアクセス範囲と一部でも重なりのある第2のアクセス範囲を指定するライトコマンドがキューバッファ109aに格納されていないならば、CPU101はステップS13に進む。ステップS13において、CPU101は近接判定手段として機能して、第1のアクセス範囲に近い(近接する)第2のアクセス範囲を指定するライトコマンドがキューバッファ109aに格納されているかを判定する。ここでは、第1のアクセス範囲と第2のアクセス範囲との間隔を表すブロック数(セクタ数)が規定値よりも少ない場合に、CPU101は、第1のアクセス範囲に近い第2のアクセス範囲を指定するライトコマンドがキューバッファ109aに格納されていると判定する。
もし、第1のアクセス範囲に近い第2のアクセス範囲を指定するライトコマンドがキューバッファ109aに格納されていないならば(ステップS13)、CPU101はステップS14に進む。このステップS14において、CPU101はコマンド格納処理手段として機能して、受け付けたライトコマンドを単体でキューバッファ109aに格納(登録)し、当該受け付けたライトコマンドを含むキューバッファ109a内のライトコマンド群を、例えば当該コマンドに含まれている論理ブロックアドレスLBAの昇順にソートして再配置する。つまりCPU101は、キューバッファ109aに格納されているライトコマンド群が論理ブロックアドレスLBAの昇順になるように、上記受け付けたコマンドを当該キューバッファ109a内のライトコマンド群(ライトコマンドの待ち行列)中に挿入する。キューバッファ109aに新たに格納されたコマンドには、当該コマンドに含まれている論理ブロックアドレスLBAに対応する物理ブロックアドレスPBA、当該コマンドで指定されるライトデータが一時格納されているライトバッファ112aの領域の開始位置を示すバッファポインタBP及びF=0のフラグFとが付加される。
これに対し、第1のアクセス範囲に近い第2のアクセス範囲を指定するライトコマンドがキューバッファ109aに格納されている場合(ステップS13)、CPU101はステップS15に進む。このステップS15において、CPU101はコマンド格納処理手段として機能して、キューバッファ109aに格納されているライトコマンド群が論理ブロックアドレスLBAの昇順になるように、上記受け付けたライトコマンド(新たなライトコマンド)を当該キューバッファ109a内のライトコマンド群中に挿入する。そしてCPU101は、キューバッファ109aに挿入された新たなライトコマンドと、キューバッファ10内で当該新たなライトコマンドの直前または直後に格納されている、当該新たなコマンドの指定するアクセス範囲(第1のアクセス範囲)に近いと判定されたアクセス範囲(第2のアクセス範囲)を指定するライトコマンドとを一括処理対象として関連付ける。ここで、新たなライトコマンドと当該ライトコマンドの直後のライトコマンドとを関連付けるには、新たなライトコマンドに付加されるフラグFをF=1に設定すれば良い。これに対し、新たなライトコマンドと当該ライトコマンドの直前のライトコマンドとを関連付けるには、当該直前のライトコマンドに付加されるフラグFをF=1に設定すれば良い。
一方、第1のアクセス範囲と一部でも重なりのある第2のアクセス範囲を指定するライトコマンドがキューバッファ109aに格納されているならば(ステップS12)、CPU101はステップS16に進む。このステップS16において、CPU101はコマンド格納処理手段として機能して、重なる範囲の古いデータ、つまり第2のアクセス範囲に書き込まれるべきライトデータのうち、重なる範囲のデータを無効にする。CPU101は、第2のアクセス範囲を指定するライトコマンドを、当該第2のアクセス範囲のうち、第1のアクセス範囲と重ならない部分のデータの書き込みを指定するライトコマンドに変更する。次にCPU101は、キューバッファ109aに格納されているライトコマンド群が論理ブロックアドレスLBAの昇順になるように、上記受け付けたライトコマンド(新たなライトコマンド)を当該キューバッファ109a内のライトコマンド群中に挿入する。そしてCPU101は、キューバッファ109aに挿入された新たなライトコマンドと上記変更されたライトコマンドとを一括処理対象として関連付ける。ここでは、新たなライトコマンドがキューバッファ109a内で上記変更されたライトライトコマンドの直前に格納されているならば、当該新たなライトコマンドに付加されるフラグFがF=1に設定される。これに対し、新たなライトコマンドがキューバッファ109a内で上記変更されたライトライトコマンドの直後に格納されているならば、上記変更されたライトライトコマンドに付加されるフラグFがF=1に設定される。
但し、第2のアクセス範囲が全て第1のアクセス範囲に包含されている場合、CPU101は上記ステップS16において、当該第2のアクセス範囲を指定するライトコマンドをキューバッファ109aから削除して、当該キューバッファ109aに新たに格納されたライトコマンドに付加されるフラグFをF=0に設定する。逆に、第1のアクセス範囲の全てが第2のアクセス範囲に包含されている場合には、CPU101は、当該第2のアクセス範囲を指定するライトコマンド及び第1のアクセス範囲を指定するライトコマンド(新たなライトコマンド)とに基づき、第2のアクセス範囲のうちの第1のアクセス範囲と重ならない前部分と後部分とをそれぞれ新たなアクセス範囲として指定する第1及び第2のライトコマンドを生成する。そしてCPU101は、上記第2のアクセス範囲を指定するライトコマンドをキューバッファ109aから削除すると共に、上記新たなライトコマンド、上記第1のライトコマンド及び上記第2のライトコマンドを、キューバッファ109a内で当該第1及び第2のライトコマンドが上記新たなライトコマンドのそれぞれ直前及び直後に配置されるように、当該キューバッファ109a内のライトコマンド群中に挿入する。
以下、本実施形態における上述のキューバッファ登録処理及びディスクアクセス処理の具体例について説明する。
図6は、3つのライトコマンドCMD1,CMD2,CMD3がキューバッファ109aに格納されている場合における、当該ライトコマンドCMD1,CMD2,CMD3によって指定されるアクセス範囲の位置関係と、キューバッファ109aの状態と、ライトバッファ112aの状態との一例を示す。各CMDに付されている数字は、ホストシステム200からライトコマンドが与えられた順序を示す。つまり、図6には、ライトコマンドがCMD1→CMD2→CMD3の順で与えられ、且つ当該CMD1,CMD2,CMD3の実行前の状態が示されている。
図6は、3つのライトコマンドCMD1,CMD2,CMD3がキューバッファ109aに格納されている場合における、当該ライトコマンドCMD1,CMD2,CMD3によって指定されるアクセス範囲の位置関係と、キューバッファ109aの状態と、ライトバッファ112aの状態との一例を示す。各CMDに付されている数字は、ホストシステム200からライトコマンドが与えられた順序を示す。つまり、図6には、ライトコマンドがCMD1→CMD2→CMD3の順で与えられ、且つ当該CMD1,CMD2,CMD3の実行前の状態が示されている。
図6の例では、CMD1,CMD2,CMD3によって指定されるアクセス範囲の開始位置、つまり開始論理ブロックアドレスLBA1,LBA2,LBA3は、LBA2<LBA1<LBA3である。この場合CMD1,CMD2,CMD3はキューバッファ109に、開始論理ブロックアドレスの昇順にCMD2,CMD1,CMD3の順の並びで格納されている。
図6の状態で図3のフローチャートに従うディスクアクセス処理が行われ、CMD1が選択されたものの、予測される回転待ち時間が規定時間を超えているために、当該CMD1の実行が見送られた(つまりディスクアクセスの開始が待たされた)ものとする。この間、上記ステップS1が一定時間間隔で実行される。換言するならば、キューバッファ109aからの新たなコマンド選択が一定時間待たされる。この一定時間の間に、CPU101がホストシステム200からの新たなライトコマンドCMD4を受け付けたものとする。
このCMD4によって指定されるアクセス範囲と、実行が見送られたCMD1によって指定されるアクセス範囲との関係が、以下に示すケース1乃至4の場合の各々について、図7乃至図10を参照して説明する。
[ケース1]
図7は、CMD4によって指定されるアクセス範囲が、CMD2によって指定されるアクセス範囲とCMD1によって指定されるアクセス範囲との間に位置し、且つCMD1によって指定されるアクセス範囲に近い場合を示す。この場合、CMD1,CMD2,CMD3,CMD4はキューバッファ109に、CMD2,CMD4,CMD1,CMD3の順の並びで格納される。CMD4に付加されるフラグFは、図5のステップS15において、図7に示されるようにF=1に設定される。これにより、CMD4と、キューバッファ109a内で当該CMD4の次のエントリに格納されているCMD1とは、一括処理の対象であることが示される。
図7は、CMD4によって指定されるアクセス範囲が、CMD2によって指定されるアクセス範囲とCMD1によって指定されるアクセス範囲との間に位置し、且つCMD1によって指定されるアクセス範囲に近い場合を示す。この場合、CMD1,CMD2,CMD3,CMD4はキューバッファ109に、CMD2,CMD4,CMD1,CMD3の順の並びで格納される。CMD4に付加されるフラグFは、図5のステップS15において、図7に示されるようにF=1に設定される。これにより、CMD4と、キューバッファ109a内で当該CMD4の次のエントリに格納されているCMD1とは、一括処理の対象であることが示される。
図7に示す状態で、図3のフローチャートに従うディスクアクセス処理が行われ、ステップS2でCMD4が選択されたものとする。また、このCMD4を仮に実行した場合の予測される回転待ち時間が規定時間より短いものとする。この場合、CPU101はコマンド実行手段として機能し、CMD4をキューバッファ109aから削除して、当該CMD4に従うディスクアクセスを実行する(ステップS5,S6)。
さて、図7の例のように、CMD4に付されているフラグFがF=1の場合、CPU101は上記ステップS5において、当該CMD4と、キューバッファ109aの次のエントリに格納されているCMD1とを一括処理の対象として、このCMD1もキューバッファ109aから削除する。ここでは、CMD4及びCMD1によって指定されるアクセス範囲が磁気ディスク103の同一トラック上に存在するものとする。この場合、CPU101は上記ステップS6において、CMD4及びCMD1を1回のディスクアクセス処理で一括して実行するために、キューバッファ109a内でCMD4及びCMD1にそれぞれ付されている物理ブロックアドレスPBA4、ブロック数NB4及びバッファポインタBP4を含むディスクアクセスパラメータ、並びに物理ブロックアドレスPBA1、ブロック数NB1及びバッファポインタBP1を含むディスクアクセスパラメータを、HDC110内のレジスタ部110aに設定して、当該HDC110を起動する。
するとHDC110は、レジスタ部110aに設定されたディスクアクセスパラメータの組に従って、CPU101から独立にディスクライト動作を連続的に実行する。この動作をスキップライト動作と称する。このスキップライト動作により、CMD4及びCMD1の指定するディスクアクセスが行われる。
この場合、図7の例では、まず矢印71で示されるように、CMD4で指定されるライトデータD4、つまりバッファポインタBP4で示されるライトバッファ112aの位置からブロック数NB4のデータD4が読み出されて、磁気ディスク103上の物理ブロックアドレスPBA4から始まるブロック数NB4の領域に磁気ヘッド106により書き込まれる。続いて、矢印72で示されるように、CMD1で指定されるライトデータD1、つまりバッファポインタBP1で示されるライトバッファ112aの位置からブロック数NB1のデータD1が読み出されて、磁気ディスク103上の物理ブロックアドレスPBA1から始まるブロック数NB1の領域に磁気ヘッド106により書き込まれる。
これにより、1コマンドの実行毎に、次に実行されるべき1コマンドの指定するディスクパラメータをCPU101がレジスタ部110aに設定してディスクアクセスを起動するのに比較して、CPU101によるディスクアクセス処理回数を減らすことができる。この結果、1コマンドの実行毎にCPU101が介在してCMD4及びCMD1を個々に実行する場合と比較して、CMD4に従うディスクアクセス終了後、CMD1に従うディスクアクセスを実行する際の回転待ち時間を減少することができる。よって、HDD100での消費電力を低減すると共に、ランダムアクセス時のライトコマンド実行時間を短縮することができる。
[ケース2]
次に、CMD4によって指定されるアクセス範囲の後端部がCMD1によって指定されるアクセス範囲と一部重なる場合について図8を参照して説明する。
この場合、CMD1は図5のステップS16において、重なる範囲の古い方のデータ、つまりCMD1によって指定されるライトデータD1のうち重なる範囲のデータが無効化される。また、CMD1に代えて用いられるCMD1aが生成される。キューバッファ109aには、図8に示されるように、CMD2,CMD4,CMD1a,CMD3が、この表記の順の並びで格納される。
次に、CMD4によって指定されるアクセス範囲の後端部がCMD1によって指定されるアクセス範囲と一部重なる場合について図8を参照して説明する。
この場合、CMD1は図5のステップS16において、重なる範囲の古い方のデータ、つまりCMD1によって指定されるライトデータD1のうち重なる範囲のデータが無効化される。また、CMD1に代えて用いられるCMD1aが生成される。キューバッファ109aには、図8に示されるように、CMD2,CMD4,CMD1a,CMD3が、この表記の順の並びで格納される。
CMD1aは、CMD4によって指定されるアクセス範囲と重ならない範囲のデータのライトを指定する。ここでは、CMD1aは図8に示すように、開始論理ブロックアドレスLBA1a及びブロック数NB1aを含み、当該CMD1aには物理ブロックアドレスPBA1a、バッファポインタBP1a及びフラグF(F=0)が付される。また、CMD4に付されるフラグFはF=1に設定され、CMD4と次のCMD1aとが一括処理の対象であることが示される。
図8に示す状態で、図3のフローチャートに従うディスクアクセス処理が行われ、ステップS2でCMD4が選択されたものとする。また、このCMD4を仮に実行した場合の予測される回転待ち時間が規定時間より短いものとする。この場合、CPU101はCMD4をキューバッファ109aから削除して、当該CMD4に従うディスクアクセスを実行する(ステップS5,S6)。
さて、図8の例のように、CMD4に付されているフラグFがF=1の場合、CPU101は上記ステップS5において、当該CMD4と次のCMD1aとを一括処理の対象として、このCMD1aもキューバッファ109aから削除する。ここでは、CMD4及びCMD1aによって指定されるアクセス範囲が磁気ディスク103の同一トラック上に存在するものとする。この場合、CPU101はステップS6において、CMD4及びCMD1aを1回のディスクアクセス処理で一括して実行するために、キューバッファ109a内でCMD4及びCMD1aにそれぞれ付されている物理ブロックアドレスPBA4、ブロック数NB4及びバッファポインタBP4を含むディスクアクセスパラメータ、並びに物理ブロックアドレスPBA1a、ブロック数NB1a及びバッファポインタBP1aを含むディスクアクセスパラメータを、HDC110内のレジスタ部110aに設定して、当該HDC110を起動する。
するとHDC110は、レジスタ部110aに設定されたディスクアクセスパラメータの組に従って、CPU101から独立にスキップライト動作を実行する。このスキップライト動作により、CMD4及びCMD1aの指定するディスクアクセスが行われる。
この場合、図8の例では、まず矢印81で示されるように、CMD4で指定されるライトデータD4がライトバッファ112aから読み出されて、磁気ディスク103上の物理ブロックアドレスPBA4から始まるブロック数NB4の領域に書き込まれる。続いて、矢印82で示されるように、CMD1aで指定されるライトデータ、つまりCMD1で指定されるデータD1のうち、CMD4で指定されるアクセス範囲と重ならない部分のブロック数NB1aのデータが、バッファポインタBP1aで示されるライトバッファ112aの位置から読み出されて、磁気ディスク103上の物理ブロックアドレスPBA1aから始まるブロック数NB1aの領域に、回転待ち時間なしで書き込まれる。
これにより、CMD1の実行を見送ることなく、当該CMD1及びCMD4を個々に実行する場合に比べて、CPU101によるディスクアクセス処理回数を減らしてHDD100での消費電力を低減すると共に、ランダムアクセス時のライトコマンド実行時間を短縮することができる。
[ケース3]
次に、CMD4によって指定されるアクセス範囲がCMD1によって指定されるアクセス範囲を包含する場合について図9を参照して説明する。
この場合、CMD1は図5のステップS16においてキューバッファ109aから削除される。キューバッファ109aには、図9に示されるように、CMD2,CMD4,CMD3が、この表記の順の並びで格納される。
次に、CMD4によって指定されるアクセス範囲がCMD1によって指定されるアクセス範囲を包含する場合について図9を参照して説明する。
この場合、CMD1は図5のステップS16においてキューバッファ109aから削除される。キューバッファ109aには、図9に示されるように、CMD2,CMD4,CMD3が、この表記の順の並びで格納される。
図9に示す状態で、図3のフローチャートに従うディスクアクセス処理が行われ、ステップS2でCMD4が選択されたものとする。また、このCMD4を仮に実行した場合の予測される回転待ち時間が規定時間より短いものとする。この場合、CPU101はCMD4をキューバッファ109aから削除して、当該CMD4に従うディスクアクセスを実行する(ステップS5,S6)。ここでは、図9において矢印90で示されるように、CMD4で指定されるライトデータD4がライトバッファ112aから読み出されて、磁気ディスク103上の物理ブロックアドレスPBA4から始まるブロック数NB4の領域に書き込まれる。
これにより、CMD1の実行を見送ることなく、当該CMD1及びCMD4を個々に実行する場合に比べて、CPU101によるディスクアクセス処理回数を減らしてHDD100での消費電力を低減すると共に、ランダムアクセス時のライトコマンド実行時間を短縮することができる。
[ケース4]
次に、CMD4によって指定されるアクセス範囲が、ケース4とは逆に、CMD1によって指定されるアクセス範囲に包含される場合について図10を参照して説明する。
この場合、CMD1は図5のステップS16において、重なる範囲の古い方のデータ、つまりCMD1によって指定されるライトデータD1のうち重なる範囲のデータ(ブロック数NB4のデータ)が無効化される。また、CMD1に代えて用いられる2つのCMD1a及びCMD1bが生成され、CMD1はキューバッファ109aから削除される。キューバッファ109aには、図10に示されるように、CMD2,CMD1a,CMD4,CMD1b,CMD3が、この表記の順の並びで格納される。
次に、CMD4によって指定されるアクセス範囲が、ケース4とは逆に、CMD1によって指定されるアクセス範囲に包含される場合について図10を参照して説明する。
この場合、CMD1は図5のステップS16において、重なる範囲の古い方のデータ、つまりCMD1によって指定されるライトデータD1のうち重なる範囲のデータ(ブロック数NB4のデータ)が無効化される。また、CMD1に代えて用いられる2つのCMD1a及びCMD1bが生成され、CMD1はキューバッファ109aから削除される。キューバッファ109aには、図10に示されるように、CMD2,CMD1a,CMD4,CMD1b,CMD3が、この表記の順の並びで格納される。
CMD1a及びCMD1bは、CMD1によって指定されるアクセス範囲のうち、CMD4によって指定されるアクセス範囲と重ならない、それぞれ前部分及び後部分のデータのライトを指定する。ここでは、CMD1aは図10に示すように、開始論理ブロックアドレスLBA1a及びブロック数NB1aを含み、当該CMD1aには物理ブロックアドレスPBA1、バッファポインタBP1及びフラグF(F=1)が付される。一方、CMD1bは図10に示すように、開始論理ブロックアドレスLBA1b及びブロック数NB1bを含み、当該CMD1bには物理ブロックアドレスPBA1b、バッファポインタBP1b及びフラグF(F=0)が付される。また、CMD1bの前のCMD4に付されるフラグFはF=1に設定される。これにより、CMD1aとCMD4とCMD1bとが一括処理の対象であることが示される。
図10に示す状態で、図3のフローチャートに従うディスクアクセス処理が行われ、ステップS2でCMD1aが選択されたものとする。また、このCMD1aを仮に実行した場合の予測される回転待ち時間が規定時間より短いものとする。この場合、CPU101はCMD1aをキューバッファ109aから削除して、当該CMD1aに従うディスクアクセスを実行する(ステップS5,S6)。
さて、図10の例のように、CMD1a及び当該CMD1aの次のCMD4に付されているフラグFがF=1の場合、CPU101は上記ステップS5において、当該CMD1a及びCMD4と更に次のCMD1bとを一括処理の対象として、このCMD4及びCMD1bもキューバッファ109aから削除する。ここでは、CMD1a,CMD4及びCMD1bによって指定されるアクセス範囲が磁気ディスク103の同一トラック上に存在するものとする。この場合、CPU101はステップS6において、CMD1a,CMD4及びCMD1bを1回のディスクアクセス処理で一括して実行するために、キューバッファ109a内でCMD1a,CMD4及びCMD1bにそれぞれ付されている物理ブロックアドレスPBA1、ブロック数NB1a及びバッファポインタBP1を含むディスクアクセスパラメータ、物理ブロックアドレスPBA4、ブロック数NB4及びバッファポインタBP4を含むディスクアクセスパラメータ、並びに物理ブロックアドレスPBA1b、ブロック数NB1b及びバッファポインタBP1bを含むディスクアクセスパラメータを、HDC110内のレジスタ部110aに設定して、当該HDC110を起動する。
するとHDC110は、レジスタ部110aに設定されたディスクアクセスパラメータの組に従って、CPU101から独立にスキップライト動作を実行する。このスキップライト動作により、CMD1a,CMD4及びCMD1bの指定するディスクアクセスが行われる。
この場合、図10の例では、まず矢印11で示されるように、CMD1aで指定されるライトデータ、つまりCMD1で指定されるデータD1のうち、CMD4で指定されるアクセス範囲と重ならない前部分のブロック数NB1aのデータが、バッファポインタBP1で示されるライトバッファ112aの位置から読み出されて、磁気ディスク103上の物理ブロックアドレスPBA1から始まるブロック数NB1aの領域に書き込まれる。続いて、矢印12で示されるように、CMD4で指定されるライトデータD4がライトバッファ112aから読み出されて、磁気ディスク103上の物理ブロックアドレスPBA4から始まるブロック数NB4の領域に、回転待ち時間なしで書き込まれる。続いて、矢印13で示されるように、CMD1bで指定されるライトデータ、つまりCMD1で指定されるデータD1のうち、CMD4で指定されるアクセス範囲と重ならない後部分のブロック数NB1bのデータが、バッファポインタBP1bで示されるライトバッファ112aの位置から読み出されて、磁気ディスク103上の物理ブロックアドレスPBA1bから始まるブロック数NB1bの領域に、回転待ち時間なしで書き込まれる。
これにより、CMD1の実行を見送ることなく、当該CMD1及びCMD4を個々に実行する場合に比べて、CPU101によるディスクアクセス処理回数を減らしてHDD100での消費電力を低減すると共に、ランダムアクセス時のライトコマンド実行時間を短縮することができる。
このように本実施形態においては、予測される回転待ち時間が規定時間を超えている場合、ディスクアクセスの開始を待つことで、その間に受け付けたコマンドによって指定されるアクセス範囲とディスクアクセスを待たせたコマンドによって指定されるアクセス範囲が近い、もしくは重なる場合、当該受け付けたコマンドをキューバッファ109aに登録する(キューイングの)ときに、それらを一括処理可能なコマンドとして関連付けることができる。これにより、ディスクアクセスの回数を減らして、その分の回転待ち時間を減らすことができる。この結果、ランダムアクセス時のコマンド実行時間を短縮することができる。また、ディスクアクセスの回数を減らすことでHDD100での消費電力を抑えることもできる。
上記実施形態では、説明の簡略化のために、一括処理可能な複数のコマンドによってそれぞれ指定されるアクセス範囲が磁気ディスク103の同一トラック上に存在する場合を想定している。もし、一括処理可能な複数のコマンドの中に、複数のトラックにまたがるアクセス範囲を指定するコマンドが含まれている場合、CPU101は、トラック単位で個々にディスクアクセスパラメータをHDC110のレジスタ部110aに設定して、その都度HDC110を起動すれば良い。この場合、複数のコマンドで指定されるアクセス範囲が存在するトラック数に一致する回数のディスクアクセスが実行されることになるものの、その回数は当該複数のコマンドの数以下となる。
上記実施形態では、ホストシステム200からのライトコマンドを受け付けて当該コマンドをキューバッファ109aに登録するためのキューバッファ登録処理において、受け付けたコマンドによって指定されるアクセス範囲(第1のアクセス範囲)と、キューバッファ109aに既に登録されているライトコマンド(コマンド群)の指定するアクセス範囲との重なりが判定される。そして、一部でも重なっている場合、或いは両アクセス範囲が近い場合に、コマンド群の実行順序が単に変更されるだけではなく、該当する複数のコマンドが一括処理の対象として関連付けられてキューバッファ109aに登録される。
しかし、新たなライトコマンドを他のコマンドと関連付けることなくキューバッファ109aに登録しても構わない。この場合、キューバッファ109aに登録されているコマンド群のうち、その時点において最も早くディスクアクセスを開始可能なコマンド(シーク時間と回転待ち時間との和が最小となるコマンド)が選択され、この選択されたコマンドの予測される回転待ち時間が規定時間より短いときは、当該選択されたコマンドが単独で実行される。つまり、前記特許文献1に記載されているように、単にコマンド群の実行順序がシーク時間と回転待ち時間との和が最小となるように変更される構成であっても構わない。このような構成では、上記実施形態とは異なって、ディスクアクセス処理回数は低減できない。しかし、予測された回転待ち時間が規定時間を超えている場合にコマンドの実行を待つことによって、その間にホストシステムからの新たなコマンドを受け付けたならば、当該新たなコマンドを含めてコマンド実行順序を変更することにより、より性能の良いコマンド実行順序に変更する機会を増やすことができる。
また上記実施形態では、本発明を磁気ディスク装置(HDD)に実施した場合について説明した。しかし本発明は、ヘッドによりデータのリード/ライトが行われるディスク記憶装置であれば、光磁気ディスク装置など、磁気ディスク装置以外のディスク記憶装置にも実施可能である。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
100…HDD(磁気ディスク装置、ディスク記憶装置)、101…CPU、103…磁気ディスク、106…磁気ヘッド、109a…キューバッファ、110…HDC(ディスクコントローラ)、110a…レジスタ部、112…バッファRAM、112a…ライトバッファ、200…ホストシステム。
Claims (7)
- ディスクからのデータの読み出しと当該ディスクへのデータ書き込みとがヘッドにより行われるディスク記憶装置において、
前記ディスク記憶装置を利用するホストシステムから与えられるライトコマンドを一時格納するキューバッファと、
前記キーバッファに格納されているライトコマンドの群の中から最も早くディスクアクセスを開始可能なコマンドを選択する選択手段と、
前記選択されたライトコマンドを仮に実行した場合に発生する回転待ち時間を予測する予測手段と、
前記予測手段によって予測された回転待ち時間が規定時間を超えるかを判定する判定手段と、
前記予測された回転時間が前記規定時間を超える場合に、前記規定時間より短い一定時間を待って前記選択手段によるコマンド選択を再度行わせるコマンド実行待ち手段と、
前記ホストシステムから新たなライトコマンドが与えられた場合、当該新たなライトコマンドを前記キューバッファに格納するコマンド格納処理手段と、
ディスクアクセスのためのディスクアクセスパラメータが設定可能なレジスタ部を有し、当該レジスタ部に設定されたディスクアクセスパラメータに従って前記ディスクに対するアクセスを制御するディスクコントローラと、
前記予測された回転時間が前記規定時間を超えない場合に、前記選択されたライトコマンドによって指定されたディスクアクセスのためのディスクアクセスパラメータを前記ディスクコントローラのレジスタ部に設定して、前記ディスクコントローラによるディスクアクセス制御を起動することにより当該ライトコマンドを実行するコマンド実行手段と
を具備することを特徴とするディスク記憶装置。 - 前記新たなライトコマンドが与えられた場合、当該新たなライトコマンドによって指定される第1のアクセス範囲と、その時点において前記キューバッファに格納されているライトコマンドによって指定される第2のアクセス範囲との重なりを調べる重なり判定手段を更に具備し、
前記コマンド格納処理手段は、前記第1のアクセス範囲と前記第2アクセスの範囲とが一部でも重なっている場合、前記第2のアクセス範囲を指定するライトコマンドを、当該重なっている部分のデータを非書き込みデータとするライトコマンドに変更すると共に、前記新たなライトコマンドを当該変更後のライトコマンドと関連付けて前記キューバッファに格納し、
前記コマンド実行手段は、前記選択されたライトコマンドが他のライトコマンドと関連付けられている場合、前記選択されたライトコマンド及び当該選択されたライトコマンドと関連付けられているライトコマンドを一括処理の対象として、当該一括処理の対象となるコマンドによって指定されるディスクアクセスのためのディスクアクセスパラメータを前記ディスクコントローラのレジスタ部に設定する
ことを特徴とする請求項1記載のディスク記憶装置。 - 前記コマンド格納処理手段は、前記第1のアクセス範囲が前記第2アクセスの範囲を包含している場合、前記第2のアクセス範囲を指定するライトコマンドを前記キューバッファから削除することを特徴とする請求項2記載のディスク記憶装置。
- 前記コマンド格納処理手段は、前記第1のアクセス範囲が前記第2アクセスの範囲に包含されている場合、前記第2のアクセス範囲を指定するライトコマンドを前記キューバッファから削除すると共に、前記第2のアクセス範囲のうちの前記第1のアクセス範囲と重ならない前部分と後部分とをそれぞれ新たなアクセス範囲として指定する2つのライトコマンドを生成して、前記新たなライトコマンド及び前記2つのライトコマンドを関連付けて前記キューバッファに格納することを特徴とする請求項2記載のディスク記憶装置。
- 前記第1のアクセス範囲と前記第2のアクセス範囲とが重なっていない場合、前記第1のアクセス範囲と前記第2のアクセス範囲とが近接しているかを、前記第1のアクセス範囲と前記第2アクセスの範囲との間隔を表すブロック数が規定値より少ないかによって判定する近接判定手段を更に具備し、
前記コマンド格納処理手段は、前記第1のアクセス範囲と前記第2アクセスの範囲とが近接している場合、前記新たなライトコマンドを前記第2のアクセス範囲を指定するライトコマンドと関連付けて前記キューバッファに格納し、
前記コマンド実行手段は、前記選択されたライトコマンドが他のライトコマンドと関連付けられている場合、前記選択されたライトコマンド及び当該選択されたライトコマンドと関連付けられているライトコマンドを一括処理の対象として、当該一括処理の対象となるコマンドによって指定されるディスクアクセスのためのディスクアクセスパラメータを前記ディスクコントローラのレジスタ部に設定する
ことを特徴とする請求項2記載のディスク記憶装置。 - 前記新たなライトコマンドが与えられた場合、当該新たなライトコマンドによって指定される第1のアクセス範囲と、その時点において前記キューバッファに格納されているライトコマンドによって指定される第2のアクセス範囲とが近接しているかを、前記第1のアクセス範囲と前記第2アクセスの範囲との間隔を表すブロック数が規定値より少ないかによって判定する近接判定手段を更に具備し、
前記コマンド格納処理手段は、前記第1のアクセス範囲と前記第2アクセスの範囲とが近接している場合、前記新たなライトコマンドを前記第2のアクセス範囲を指定するライトコマンドと関連付けて前記キューバッファに格納し、
前記コマンド実行手段は、前記選択されたライトコマンドが他のライトコマンドと関連付けられている場合、前記選択されたライトコマンド及び当該選択されたライトコマンドと関連付けられているライトコマンドを一括処理の対象として、当該一括処理の対象となるコマンドによって指定されるディスクアクセスのためのディスクアクセスパラメータを前記ディスクコントローラのレジスタ部に設定する
ことを特徴とする請求項1記載のディスク記憶装置。 - ディスクからのデータの読み出しと当該ディスクへのデータ書き込みとがヘッドにより行われるディスク記憶装置に適用されるライトコマンド処理方法において、
前記ディスク記憶装置を利用するホストシステムから与えられるライトコマンドを一時格納するキューバッファから、その時点において最も早くディスクアクセスを開始可能なコマンドを選択するステップと、
前記選択されたライトコマンドを仮に実行した場合に発生する回転待ち時間を予測するステップと、
前記予測された回転待ち時間が規定時間を超えるかを判定するステップと、
前記予測された回転時間が前記規定時間を超える場合に、前記規定時間より短い一定時間待って前記選択するステップを再度行わせるステップと、
前記ホストシステムから新たなライトコマンドが与えられた場合、当該新たなライトコマンドを前記キューバッファに格納するステップと、
前記予測された回転時間が前記規定時間を超えない場合に、前記選択されたライトコマンドによって指定されたディスクアクセスのためのディスクアクセスパラメータをディスクコントローラのレジスタ部に設定して、前記ディスクコントローラによるディスクアクセス制御を起動することにより当該ライトコマンドを実行するステップと
を具備することを特徴とするライトコマンド処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006097539A JP2007272993A (ja) | 2006-03-31 | 2006-03-31 | ディスク記憶装置及び同装置に適用されるライトコマンド処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006097539A JP2007272993A (ja) | 2006-03-31 | 2006-03-31 | ディスク記憶装置及び同装置に適用されるライトコマンド処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007272993A true JP2007272993A (ja) | 2007-10-18 |
Family
ID=38675642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006097539A Withdrawn JP2007272993A (ja) | 2006-03-31 | 2006-03-31 | ディスク記憶装置及び同装置に適用されるライトコマンド処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007272993A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501904A (zh) * | 2023-06-28 | 2023-07-28 | 中国人民解放军总医院 | 分布式存储方法、装置、设备及介质 |
-
2006
- 2006-03-31 JP JP2006097539A patent/JP2007272993A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501904A (zh) * | 2023-06-28 | 2023-07-28 | 中国人民解放军总医院 | 分布式存储方法、装置、设备及介质 |
CN116501904B (zh) * | 2023-06-28 | 2023-09-22 | 中国人民解放军总医院 | 分布式存储方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4675881B2 (ja) | 磁気ディスク装置およびその制御方法 | |
KR101474344B1 (ko) | 캐시 플러시 제어 방법 및 이를 이용한 데이터 저장 시스템 | |
US8560759B1 (en) | Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency | |
JP4182993B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US8307156B1 (en) | Adaptively modifying pre-read operations within a rotating media storage device | |
US7320050B2 (en) | Data transmission control method and storage device | |
US7539820B2 (en) | Disk device and control method for cache | |
JP2007304691A (ja) | ディスク装置及び回転型記憶装置の先読み制御方法 | |
US20080046660A1 (en) | Information recording apparatus and control method thereof | |
JP2010080021A (ja) | 記録制御方法及び記録制御部、並びに記憶装置 | |
US6957311B2 (en) | Data storage apparatus, computer apparatus, data processing apparatus, and data processing method | |
JP2010178140A (ja) | 磁気ディスク装置及び同装置における暗号鍵更新方法 | |
EP1134648A2 (en) | Host-based virtual disk drive for improving the performance of a hard disk drive's input/output | |
US20100118434A1 (en) | Storage apparatus and control method of storage apparatus | |
JP2012508921A (ja) | メモリバンクにおけるアクセスを制御するssdコントローラ | |
JP2009205753A (ja) | 磁気ディスク装置及びデータ記憶方法 | |
US20040015878A1 (en) | Reordering controller, reordering method and storage apparatus | |
JP2012138154A (ja) | 磁気ディスク装置及び同装置におけるディスクアクセス方法 | |
JP2007272993A (ja) | ディスク記憶装置及び同装置に適用されるライトコマンド処理方法 | |
JP2003316523A (ja) | データ記憶装置、実行コマンドの選択方法およびデータ処理方法 | |
JP5030387B2 (ja) | データ記憶装置 | |
US7624228B2 (en) | Disk drive and method of controlling cache memory therein | |
JP2009087460A (ja) | ディスク記憶装置のコマンド処理方法 | |
JP2009032323A (ja) | ディスク記憶装置 | |
JP6178287B2 (ja) | 記憶装置、及び制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080530 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100219 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20100301 |