ホストとHDDとの間のインターフェース仕様として、SCSIやATA規格が知られているが、次期規格であるATA standard 7において、新たにFUA(Forced Unit Access)シリーズのコマンドがサポートされる。ホストからFUAコマンドを取得したHDDは、ライト・キャッシュがONの状態にあっても、そのライト・データを磁気ディスクに書き込んだ後に、ホストに対してコマンド完了通知を送らなければならない。
ライト・キャッシュがONの場合、キャッシュされたライト・データは、電源ダウンなどなんらかの理由によって磁気ディスクに書き込まれない場合が考えられる。ホストは、FUAコマンドを発行することによって、ライト・データが磁気ディスクに確実に書き込まれたことを確認することができるので、クリティカルなデータが磁気ディスクに書き込まれずに消失することを防止することができる。
一方、重要度の低いデータについては、ホストは通常のコマンド(非FUAコマンド)を発行してライトを指示する。これによってライト・キャッシュ機能を利用し、ホストとHDDのパフォーマンスの向上を図ることができる。このように、FUAコマンドは、データ書き込みの安全性とパフォーマンスの両立を図る技術であるといえる。
しかしながら、ライト・キャッシュがONである場合、FUAコマンドを取得したタイミングにおいて、HDDがすでに複数のライト・コマンドをキャッシュしているケースが頻繁に起こる。例えば、既に5つのライト・コマンドがキャッシュされているとすると、新たに取得されたFUAコマンドは、その5つのライト・コマンドの終了を待って実行されることも考えられる。HDDは、FUAコマンドの完了通知を、対応データが磁気ディスクに書き込まれるまでホストに送信しない。このため、ホストは、次のコマンド発行のために、FUAコマンド完了の他に、5つの他のライト・コマンドの実行完了を待たなければならない。
従って、FUAコマンドを含むライト・コマンドの実行順序を決定する新たな手法が必要とされる。また、FUAコマンドの実行順序決定において、ホストの待ち時間減少の観点の他に、HDDのスループット等を考慮することも重要な点の一つである。
本発明は上述のような事情を背景としてなされたものであって、データ記憶装置におけるライト・コマンド実行順序の決定手法を改善し、データの安全性とホストとデータ記憶装置のデータ処理効率の向上を図ることを目的とする。
本発明の第1の態様に係るデータ記憶装置は、メディアに書き込むべきライト・データを一時的に記憶するライト・バッファと、前記メディアに書き込むべきライト・データのそれぞれと対応するライト・コマンドに関する情報を登録するテーブルと、前記テーブルに登録されているライト・コマンドの実行順序を決定するキャッシュ・マネージャと、を備え、前記キャッシュ・マネージャは、前記メディアへの書き込み完了後にコマンド完了通知をホストへ送信するメディア書き込み強制コマンドを取得した場合、非メディア書き込み強制コマンドを取得した場合よりも高い優先度においてその実行順序を決定するものである。メディア書き込み強制コマンドを取得した場合に、非メディア書き込み強制コマンドを取得した場合よりも高い優先度においてその実行順序を決定するので、ホストへコマンド完了通知の送信タイミングを早めることができ、ホストの処理効率を向上することができる。
本発明の第2の態様は、上記第1の態様において、前記キャッシュ・マネージャは、キャッシュされており、前記メディア書き込み強制コマンドの後に実行されるライト・コマンドについて、リオーダリングを再実行する。これによって、メディア書き込み強制コマンド後のコマンド実行を効率化することができる。
本発明の第3の態様は、上記第1の態様において、前記キャッシュ・マネージャは、ホストからメディア書き込み強制コマンドを取得した場合、そのメディア書き込み強制コマンド、もしくは、そのメディア書き込み強制コマンドを含み互いに関連づけられた一連のライト・コマンドを、最初の実行順序に設定する。最初の実行順序とすることによって、メディア書き込み強制コマンドの完了通知を早く返すことができる。
本発明の第4の態様は、上記第3の態様において、前記互いに関連付けられた一連のライト・コマンドは、そのアドレスが予め定められた範囲にあり、対応するライト・データが1回の書き込み処理で前記メディアへ書き込まれる。これによって、メディアへのデータ書き込みを効率的に実施することができる。
本発明の第5の態様は、上記第1の態様において、前記ライト・バッファはリング・バッファ方式のバッファであり、前記キャッシュ・マネージャは、キャッシュされているライト・コマンドの中で、最古のライト・コマンドよりも後に前記メディア書き込み強制コマンドの実行順序を設定する。これによって、リング・バッファを使用する場合において、バッファ利用効率とメディア書き込み強制コマンドの完了通知の遅れによる処理効率の低下の抑制の両立を図ることができる。
本発明の第6の態様は、上記第5の態様において、前記キャッシュ・マネージャは、キャッシュされているライト・コマンドの中で、最古のライト・コマンドを最初の実行順序に設定し、前記メディア書き込み強制コマンドの実行順序を前記最古のライト・コマンドの次に設定する。これによって、バッファ利用効率を高め、メディア書き込み強制コマンドの完了通知の早期返信を実現する。
本発明の第7の態様に係るデータ記憶装置は、メディアに書き込むべきライト・データを一時的に記憶するライト・バッファと、前記ライト・バッファに記憶されているライト・データのそれぞれと対応するライト・コマンドに関する情報を登録するテーブルと、前記テーブルに登録されているライト・コマンドの実行順序を決定するキャッシュ・マネージャと、を備え、前記キャッシュ・マネージャは、前記メディアへの書き込み完了後にコマンド完了通知をホストへ送信するメディア書き込み強制コマンドを取得した場合、その実行順序の決定のために、すでに前記テーブルに登録されているライト・コマンドを参照して、複数の決定方法の中から前記メディア書き込み強制コマンドの実行順序決定方法を選択するものである。メディア書き込み強制コマンドを取得した場合に、データ記憶装置における適切な実行順序決定方法を選択することができる。
本発明の第8の態様は、上記第7の態様において、前記キャッシュ・マネージャは、前記ライト・バッファの空き領域に基づいて、前記メディア書き込み強制コマンドの実行順序決定方法を選択する。メディア書き込み強制コマンドの実行を優先し、メディア書き込み強制コマンドの完了通知の遅れを防いだとしても、バッファに空き容量がないと、次のライト・コマンドは待たされることになり、処理効率が低下する。バッファ空き領域に基づいて、キャッシュされているライト・コマンドを効率的に実行して領域確保を優先するか、メディア書き込み強制コマンドの処理を優先するかを判定することで、バッファ利用効率とメディア書き込み強制コマンドの完了通知の遅れによる処理効率の低下の抑制の両立を図る。
本発明の第9の態様は、上記第7の態様において、前記キャッシュ・マネージャは、キャッシュされているライト・コマンド数に基づいて、前記メディア書き込み強制コマンドの実行順序決定方法を選択する。キャシュされているライト・コマンドの数に基づいて、キャッシュされているライト・コマンドを効率的に実行して領域確保を優先するか、メディア書き込み強制コマンドの処理を優先するかを判定することで、バッファ利用効率とメディア書き込み強制コマンドの完了通知の遅れによる処理効率の低下の抑制の両立を図る。
本発明の第10の態様は、上記第7の態様において、前記キャッシュ・マネージャは、キャッシュされているライト・コマンドが対応するライト・データ量に基づいて、前記メディア書き込み強制コマンドの実行順序決定方法を選択する。キャシュされているライト・コマンドのセクター数、すなわちデータ量に基づいて、キャッシュされているライト・コマンドを効率的に実行して領域確保を優先するか、メディア書き込み強制コマンドの処理を優先するかを判定することで、バッファ利用効率とメディア書き込み強制コマンドの完了通知の遅れによる処理効率の低下の抑制の両立を図る。
本発明の第11の態様は、上記第7の態様において、前記キャッシュ・マネージャは、キャッシュされているライト・コマンドの予想される実行時間に基づいて、前記メディア書き込み強制コマンドの実行順序決定方法を選択する。メディアへの書き込みにおいて、効率的な順序が選ばれたことにより、メディア書き込み強制コマンドの処理が後回しになり、完了通知が許容範囲を超えて遅れることを防ぐことができる。
本発明の第12の態様は、上記第7の態様において、前記複数の決定方法は、非メディア書き込み強制コマンドを取得した場合よりも高い優先度においてメディア書き込み強制コマンドの実行順序を決定する第1の決定方法と、メディア書き込み強制コマンドと非メディア書き込み強制コマンドとを区別することなく実行順序を決定する第2の決定方法とを含む。これにより、メディア書き込み強制コマンドのコマンド完了通知の返信タイミングを、データ記憶装置に適切なものとすることができる。
本発明の第13の態様は、上記第12の態様において、前記キャッシュ・マネージャは、前記ライト・バッファの空き領域が基準値以上であることを条件として、前記第1の決定方法を選択する。これにより、キャッシュされているライト・コマンドの書き込み効率の向上とメディア書き込み強制コマンドの完了通知の遅れによる処理効率の低下の抑制の両立を図る
本発明の第14の態様は、上記第12の態様において、前記キャッシュ・マネージャは、キャッシュされているライト・コマンド数が基準値よりも小さいことを条件として、前記第1の決定方法を選択する。これにより、キャッシュされているライト・コマンドの書き込み効率の向上とメディア書き込み強制コマンドの完了通知の遅れによる処理効率の低下の抑制の両立を図ることができる。
本発明の第15の態様は、上記第12の態様において、前記キャッシュ・マネージャは、既にキャッシュされているライト・コマンドが対応するライト・データ量が基準値よりも小さいことを条件として、前記第1の決定方法を選択する。これにより、キャッシュされているライト・コマンドの書き込み効率の向上とメディア書き込み強制コマンドの完了通知の遅れによる処理効率の低下の抑制の両立を図ることができる。
本発明の第16の態様は、上記第12の態様において、前記キャッシュ・マネージャは、既にキャッシュされているライト・コマンドと前記メディア書き込み強制コマンドとが対応するライト・データ量が基準値よりも小さいことを条件として、前記第1の決定方法を選択する。これにより、キャッシュされているライト・コマンドの書き込み効率の向上とメディア書き込み強制コマンドの完了通知の遅れによる処理効率の低下の抑制の両立を図ることができる。
本発明の第17の態様は、上記第12の態様において、前記キャッシュ・マネージャは、メディア書き込み強制コマンドの実行までに予想されるライト・コマンド実行時間が基準値よりも小さいことを条件として、前記第2の決定方法を選択する。これにより、キャッシュされているライト・コマンドの書き込み効率の向上とメディア書き込み強制コマンドの完了通知の遅れによる処理効率の低下の抑制の両立を図ることができる。
本発明の第18の態様は、データ記憶装置におけるライト・キャッシュ制御方法であって、取得したライト・コマンドに関する情報を登録し、前記ライト・コマンドに対応し、メディアに書き込むべきライト・データをライト・バッファに記憶し、登録された複数のライト・コマンドの実行順序の決定において、前記メディアへの書き込み完了後にコマンド完了通知を送信するメディア書き込み強制コマンドを受信した場合、非メディア書き込み強制コマンドを取得した場合よりも高い優先度においてその実行順序を決定する。
本発明の第19の態様は、データ記憶装置におけるライト・キャッシュ制御方法であって、取得したライト・コマンドに関する情報を登録し、前記ライト・コマンドに対応し、メディアに書き込むべきライト・データをライト・バッファに記憶し、前記メディアへの書き込み完了後にコマンド完了通知を送信するメディア書き込み強制コマンドを受信した場合、実行すべきライト・コマンドの実行順序を決定するために、すでに登録されているライト・コマンドを参照して、複数の決定方法の中から実行順序決定方法を選択する。
本発明によれは、ライト・コマンド実行順序の決定手法を改善し、データの安全性とホストとデータ記憶装置のデータ処理効率の向上を図ることができる。
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。
本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本実施形態は、データ記憶装置のライト・キャッシュONの状態において、ライト・コマンドの実行順序(メディアへの書き込み順序)の決定手法に特徴を備え、特に、ホストへのコマンド完了通知をメディアへの書き込み完了後に行うライト・コマンドの実行順序の決定手法に特徴を備える。本発明の理解の容易のため、最初に、データ記憶装置の一例であるハードディスク・ドライブ(HDD)の全体構成の概略を説明する。
図1は、本実施の形態に係るHDD1の構成を模式的に示すブロック図である。図1に示すように、HDD1は、密閉されたエンクロージャ10内に、メディア(記録媒体)の一例である磁気ディスク11、ヘッド素子部12、アーム電子回路(アームエレクトロニクス:AE)13、スピンドル・モータ(SPM)14、ボイス・コイル・モータ(VCM)15、そしてアクチュエータ16を備えている。
HDD1は、エンクロージャ10の外側に固定された回路基板20を備えている。回路基板20上には、リード・ライト・チャネル(R/Wチャネル)21、モータ・ドライバ・ユニット22、ハードディスク・コントローラ(HDC)とMPUの集積回路(以下、HDC/MPU)23、及びメモリの一例であるRAM24などの各ICを備えている。尚、各回路構成は一つのICに集積すること、あるいは、複数のICに分けて実装することができる。
外部ホスト51からのライト・データは、HDC/MPU23によって受信され、R/Wチャネル21、AE13を介して、ヘッド素子部12によって磁気ディスク11に書き込まれる。また、磁気ディスク11に記憶されているリード・データはヘッド素子部12によって読み出され、そのリード・データは、AE13、R/Wチャネル21を介して、HDC/MPU23から外部ホスト51に出力される。
次に、HDD1の各構成要素について説明する。磁気ディスク11は、SPM14に固定されている。SPM14は所定の速度で磁気ディスク11を回転する。HDC/MPU23からの制御データに従って、モータ・ドライバ・ユニット22がSPM14を駆動する。本例の磁気ディスク11は、データを記録する記録面を両面に備え、各記録面に対応するヘッド素子部12が設けられている。
各ヘッド素子部12はスライダ(不図示)に固定されている。また、スライダはアクチュエータ16に固定されている。アクチュエータ16はVCM15に連結され、回転軸を中心に揺動することによって、ヘッド素子部12(及びスライダ)を磁気ディスク11上において半径方向に移動する。モータ・ドライバ・ユニット22は、HDC/MPU23からの制御データに従ってVCM15を駆動する。
ヘッド素子部12には、典型的には、磁気ディスク11への記録データに応じて電気信号を磁界に変換する記録ヘッド、及び磁気ディスク11からの磁界を電気信号に変換する再生ヘッドを備えている。なお、磁気ディスク11は、1枚以上あればよく、記録面は磁気ディスク11の片面あるいは両面に形成することができる。
続いて各回路部の説明を行う。AE13は、複数のヘッド素子部12の中からデータ・アクセスが行われる1つのヘッド素子部12を選択し、選択されたヘッド素子部12により再生される再生信号を一定のゲインで増幅(プリアンプ)し、R/Wチャネル21に送る。また、R/Wチャネル21からの記録信号を選択されたヘッド素子部12に送る。
R/Wチャネル21は、ホスト51から転送されたデータについて、ライト処理を実行する。ライト処理において、R/Wチャネル21はHDC/MPU23から供給されたライト・データをコード変調し、更にコード変調されたライト・データをライト信号に変換してAE13に供給する。また、ホスト51にデータを供給する際にはリード処理を行う。リード処理において、R/Wチャネル21はAE13から供給されたリード信号を一定の振幅となるように増幅し、取得したリード信号からデータを抽出し、デコード処理を行う。読み出されるデータは、ユーザ・データとサーボ・データを含む。デコード処理されたリード・データは、HDC/MPU23に供給される。
HDC/MPU23において、MPUはRAM24にロードされたマイクロ・コードに従って動作する。HDD1の起動に伴い、RAM24には、MPU上で動作するマイクロ・コードの他、制御及びデータ処理に必要とされるデータが磁気ディスク11あるいはROM(不図示)からロードされる。HDC/MPU23は、コマンド実行順序の管理、ヘッド素子部12のポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、HDD1の全体制御を実行する。
HDC/MPU23は、R/Wチャネル21から取得した磁気ディスク11からのリード・データを、ホスト51に伝送する。磁気ディスク11からのリード・データは、RAM24内のリード・バッファに一旦格納された後、HDC/MPU23を介してホスト51に転送される。また、ホスト51からのライト・データは、HDC/MPU23を介して、RAM24内のライト・バッファに一旦格納され、その後、所定のタイミングでHDC/MPU23を介して磁気ディスク11に転送される。
続いて、本実施形態に係るHDD1のライト・キャッシュ処理について説明する。本形態のHDD1はライト・キャッシュがオンの状態であり、ライト・データのライト・バッファへの格納が完了したタイミングで、対応するライト・コマンドの完了通知をホスト51に送信することができる。ホスト51は、HDD1からコマンド完了通知を受信した段階で、HDD1に対して新たなコマンドを発行することができる。
また、本形態のHDD1は及びホスト51は、HDD1からホスト51へのコマンド完了通知を、記録ディスク11への書き込み完了後に行うライト・コマンドをサポートする。このようなライト・コマンドの最も典型的な一例は、ATA Standard 7で標準化されているFUA(Forced Unit Access)シリーズのコマンドである。ホスト51からFUAコマンドを取得したHDD1は、ライト・キャッシュがONの状態にあっても、そのライト・データを磁気ディスク11に書き込んだ後に、ホスト51に対してコマンド完了通知を送信する。
ATA Standard 7において、FUAコマンドはWRITE DMA EXTEND FUAやWRITE DMA MULTIPLE EXTEND FUAなどを備えている。以下の説明においてはFUAコマンドを例として本形態の説明を行う。また、以下において、特に明示のないライト・コマンドはFUA以外のコマンド(非FUAコマンド)であり、ライト・データがライト・バッファに格納された後、磁気ディスク11に書き込む前に、コマンド完了通知がホスト51に送られる。
以下において、未実行(磁気ディスク11へのデータ書き込みが未完了)のライト・コマンドがキューされているタイミングで、HDD1がホスト51からFUAコマンドを取得した場合における、コマンド実行順序の決定について説明する。HDD1は、非FUAコマンドだけをキャッシュしている場合、効率的な内部処理を行うため、RPO(Rotational Positioning Optimization)等のアルゴリズムを使用して、ライト・データの磁気ディスク11への書き出し順序を最適化する。
FUAコマンドが発行された場合、HDD1はそのコマンドの実行が完了するまで、つまりライト・データの磁気ディスク11への書き込みが完了するまで、コマンド完了通知を返すことができず、HDD1とホスト51との間のインターフェースがビジー状態となる。このため、FUAコマンドをホスト51から取得した場合、取得したライト・コマンドが非FUAコマンドである場合よりも、高い優先度においてライト・コマンドの実行順序を再決定(リオーダリング)することが好ましい。
好ましい例の一つにおいて、HDD1は、ホスト51からFUAコマンドを受信すると、既にキャッシュされている他のライト・コマンドに対して最優先で、そのFUAコマンドを実行する。つまり、キャッシュされている全てのライト・コマンドよりも前に、最初に新たに発行されたFUAコマンドを実行する。
図2は、FUAコマンドを最初の順序で実行する例を示している。図2(a)に示すように、HDD1は、5つのライト・コマンドWRを、WR1−WR2−WR3−WR4−WR5の順序で、ホスト51から取得している。その後、図2(b)に示すように、ライト・コマンドのリオーダリングを実行する。各ライト・コマンドは、非FUAコマンドであるので、RPOなどの従来のアルゴリズムに従って、リオーダリングを実行する。図2(b)の例においては、実行順序は、WR2−WR3−WR1−WR5−WR4の順に設定されている。
図2(c)に示すように、これらのライト・コマンドRWを実行する前に、HDD1はホスト51からFUAコマンドを受信する。すると、HDD1は、図2(d)に示すように、FUAコマンドを最優先としてコマンドの実行順序を並べ替える。つまり、新たに取得したFUAコマンドの実行順序を最初とする。このように、FUAコマンドの実行順序を未実行ライト・コマンドの内の最初の順序に設定することにとって、コマンド完了通知の返信遅れによるホスト51の処理効率低下を抑制することができる。
ここで、好ましくは、FUAコマンドを実行順序の先頭に設定すると共に、その後に実行される他のライト・コマンドWRについて、その実行順序のリオーダリングを再実行する。図2(e)の例において、FUAコマンドの実行順序を最初(1番目)に設定したことに応じて、ライト・コマンドWR2の実行順序が、2番目から5番目に変更されている。
FUAコマンドを実行した後のヘッド素子部12と磁気ディスク11の位置関係を考慮すると、元の事項順序(WR2−WR3−WR1−WR5−WR4)が最も効率的な実行順序であるとは限らない。そこで、FUAコマンドの最後のLBA(Logical Block Address)を基準として、再度、リオーダリング処理を実行して、実行順序の並べ替えを行う。これによって、より効率的なライト・コマンド実行処理を実現することができる。
図3及び図4は、取得したFUAコマンドの実行順序を、非FUAコマンドを取得した場合よりも高い優先度において決定する他の好ましい例を示している。本例において、FUAコマンドが互いに関連づけられた一連のコマンドに含まれる場合、その一連のコマンドをセットとして、最優先で実行順序を設定する。具体的には、HDD1は、シーケンシャルライトと呼ぶライト・オペレーションをサポートしている。
シーケンシャルライトは、キャッシュされているライト・コマンドの中で、そのLBA(ライト・データ書き込むLBA)が予め定められた範囲内にある場合、それらライト・コマンドに対応するライト・データを、1回の書き込み処理で磁気ディスク11へ書き込む。近接するライト・データの磁気ディスク11への書き込みを、1回の書き込み処理として実行することによって、書き込み処理のオーバーヘッドを低減し、書き込み時間の短縮を図ることができる。
まず、図3を参照して、シーケンシャルライトが実行されるライト・コマンドの関係について説明する。2つのライト・コマンドの間において、第1のライト・コマンドの最終LBと第2のライト・コマンドの先頭LABとの差が、基準値以下の場合にシーケンシャルライトが実行される。例えば、図3(a)に示すように、2つのライト・コマンドのLBAが連続している場合、HDD1はこれら2つのライト・コマンドのシーケンシャルライトを実行する。図3(a)の例において、第1のライト・コマンドWR1の先頭LBAが200h、その最終LBAは27Fhである。一方、第2のライト・コマンドWR2の先頭LBAが280h、その最終LBAは2FFhである。この場合、HDD1は、LBA200hから2FFhまでのセクタに、ライト・データを1回の書き込み処理で磁気ディスク11に書き込む。
あるいは、図3(b)に示すように、2つのライト・コマンドのLBAが重なっている場合に、HDD1はシーケンシャルライトを実行する。つまり、第2のライト・コマンドWR2の先頭LBAが、第1のライト・コマンドWR1のLBA領域(先頭LBAから最終LBAまでの間の領域)に含まれている場合である。図3(b)の例においては、第1のライト・コマンドWR1の先頭LBAが200h、その最終LBAは2BFhである。一方、第2のライト・コマンドWR2の先頭LBAが280h、その最終LBAは2FFhである。この場合、HDD1は、LABが重なっているアドレス部分(280h〜2BFh)において、古いデータ(第1ライト・コマンドのライト・データ)を消去するDiscard処理を実行した後、LBA200hから2FFhまでのライト・データを1回の書き込み処理で磁気ディスク11に書き込む。
あるいは、図3(c)に示すように、2つのライト・コマンドのLBAが連続していない、あるいは重なっていない場合であっても、その間隔が予め定められた基準値以下の場合には、HDD1はシーケンシャルライトを実行する。図3(c)の例において、第1のライト・コマンドWR1の先頭LBAが200h、その最終LBAは27Fhである。一方、第2のライト・コマンドWR2の先頭LBAが290h、その最終LBAは2FFhである。例えば、基準値が40hである場合、これら2つのライト・コマンドをシーケンシャルライトで一括に書き込む。この場合、HDD1は、LBA280hから28Fhまでは、磁気ディスク11にデータを書き込むことなくスキップする。
図4は、シーケンシャルライトをサポートするHDD1において、FUAコマンドをホスト51から受信した場合の実行順序決定処理を示している。本例において、HDD1は、取得したFUAコマンドとシーケンシャルライトを実行するライト・コマンドがキューされている場合、その一連のシーケンシャルライトを最優先として実行順序を決定する。
具体的には、図4(a)に示すように、HDD1は、5つのライト・コマンドWRを、WR1−WR2−WR3−WR4−WR5の順序で、ホスト51から取得している。続いて、図4(b)に示すように、ライト・コマンドのリオーダリングを実行して、実行順序をWR2−WR3−WR1−WR5−WR4の順に設定する。図4(c)に示すように、これらのライト・コマンドWRを実行する前に、HDD1はホスト51からFUAコマンドを受信する。すると、HDD1は、図4(d)に示すように、FUAコマンドとシーケンシャルライトの関係にあるライト・コマンドを探す。本例においては、ライト・コマンドWR3がFUAコマンドとシーケンシャルライトの関係にあるため、これらが関連付けられる。
さらに、図4(e)に示すように、FUAコマンド及びそれとシーケンシャルライトの関係にあるコマンド群が最優先として、その実行順序が最初に設定される。コマンド群の間においては、シーケンシャルライトの書き込み順序に従って順序決定される。本例においては、ライト・コマンドWR3のライト・データがFUAコマンドの前に書き込まれる。このように、FUAコマンドを受信した場合、それとシーケンシャルライトの関係にあるコマンド群をまとめて優先することによって、ホスト51対するコマンド完了通知遅延の抑制と、HDD1内における処理効率化を同時に図ることができる。なお、図2を参照して説明したように、互いに関連づけられたコマンド群を最優先で実行順序決定した後、これらの最終LBAを基準として、その後のライト・コマンドの実行順序を再設定することが好ましい。
図5は、取得したFUAコマンドの実行順序を、非FUAコマンドを取得した場合よりも高い優先度において決定する他の好ましい例を示している。本例において、ライト・データを一時的に記憶するライト・バッファとして、リング・バッファ方式を使用する。リング・バッファ方式は、ホストからのライト・データを、前のアドレスから後ろのアドレスに時系列的に格納していく。ライト・バッファをその終端位置まで使い切った時には、ライト・バッファの先端位置に戻る。このとき、先端位置に記憶されているライト・データがまだ磁気ディスク11に書き出されていない場合、ライト・バッファは新たなライト・データを格納することができないため、次のライト・データをホストから受信することができない。
このため、リング・バッファ方式においては、磁気ディスク11への書き出し未完了のデータの内、最古のライト・データを早く磁気ディスク11に書き出すことが好ましい。つまり、最も古い未実行コマンドを優先的に実行することが好ましい。本例において、HDD1は、FUAコマンドを、未実行の最古のライト・コマンドよりも後の順序で実行する。
具体的に説明する。図5(a)に示すように、HDD1は、ホストからWR1−WR2−WR3−WR4−WR5の順序で、ライト・コマンドを受信したとする。図5(b)は、RPOに従ってリオーダリングした場合の各コマンドの実行順序を示している。本例では、WR2−WR3−WR1−WR5−WR4の順に設定される。ここで、図5(c)に示すように、HDD1がホスト51からFUAコマンドを受信する。図2の例に従えば、FUAコマンドは、図5(d)に示すように、最初の実行順序に設定される。
しかし、上述のように、リング・バッファ方式のライト・バッファにおいては、最古のコマンドを優先して実行することがバッファの空き領域を確保することにつながる。そこで、本例において、図5(e)に示すように、最初にホスト51から取得したライト・コマンドWR1の実行順序を最初に設定する。さらに、FUAコマンドをライト・コマンドWR1の次の実行順序に設定する。これによって、リング・バッファ方式において空き領域を確保しつつ、FUAコマンドの実行遅延によるホスト51の待ち時間の増加を抑制することができる。なお、FUAコマンドの早期実行の点からは、FUAコマンド実行順序を2番目に設定することが好ましいが、FUAコマンドを優先する限り、これに限定されるものではない。
上述のように、ホスト51の待ち時間を短縮する観点からはFUAコマンドを優先的に実行することが好ましい。しかし、HDD1の処理制御においては、HDD1のスループットなど、他の特性を優先することが好ましい場合がある。従って、HDD1は、複数の異なる実行順序決定方法を備え、FUAコマンドを受信した場合、予め定められた基準に従って、複数の決定方法の中から最適な決定方法を選択することが好ましい。実行順序決定方法は、図2−4を参照して説明したように、FUAコマンドを最優先として実行順序を決定する決定方法など、FUAコマンドを受信した場合に非FUAコマンドよりも高い優先度で実行順序を決定する方法の他、FUAコマンドを考慮しないRPOなど、FUAコマンドを非FUAコマンドと区別することなく実行順序を決定する方法を含む。
例えば、HDD1は、図6(a)に示すよう、5つのライト・コマンドWRを、WR1−WR2−WR3−WR4−WR5の順序で、ホスト51から取得する。続いて、図6(b)に示すように、RPOなどのリオーダリングを実行して、実行順序をWR2−WR3−WR1−WR5−WR4の順に設定する。さらに、図6(c)に示すように、これらのライト・コマンドWRを実行する前に、HDD1はホスト51からFUAコマンドを受信する。
ここで、HDD1は、予め定められている条件に従って実行順序決定方法を選択する。例えば、図6(d)に示すように、HDD1は、FUAコマンドに係わりなく、RPOに従ってライト・コマンドの実行順序が決定される。図6(d)の例においては、FUAコマンドは6つのライト・コマンドの最後に設定されている。あるいは、図6(e)に示すように、FUAコマンドを優先してリオーダリングを実行する。図6(e)の例においては、新たに取得したFUAコマンドを最初の実行順序に設定している。
以下においては、FUAを優先するFUA優先決定方法と、FUAコマンドに係わらずHDD1のスループット優先で(書き込み効率優先で)リオーダリングする方法(スループット優先決定方法)の2つを備える例を説明する。HDD1が実行順序の決定方法を選択するいくつかの基準について説明を行う。
一つの好ましい例において、HDD1は、ライト・バッファの空き容量に基づいて実行順序決定方法を選択する。具体的には、ライト・バッファの空き容量が多い場合、HDD1はFUA優先決定方法を選択する。一方、少ない場合は、スループット優先決定方法を選択する。
図7のフロー・チャートを参照して、具体的に説明する。HDD1は、FUAコマンドを含まない複数の未実行ライト・コマンドを、スループット優先決定方法に従って、リオーダリングする(S11)。その後、HDD1は、FUAコマンドを取得すると(S12)、ライト・バッファの空き容量を計算し、その空き容量が予め定められた基準値未満であるかを判定する(S13)。基準値未満である場合、HDD1はFUAコマンドを優先することなく、HDD1のスループットを優先して、スループット優先決定方法を選択する(S14)。
一方、ライト・バッファの空き容量が基準値以上である場合、HDD1はFUAコマンドを優先してコマンド実行順序を決定する(S15)。つまり、HDD1はFUA優先決定方法を選択してライト・コマンドの実行順序を決定する。このように、FUAコマンドを取得した場合、ライト・バッファの空き容量に従って実行順序決定方法を変化させることによって、ライト・バッファの空きが十分にあるときには、早くホスト51とのインターフェースをレディにし、後続コマンドを受信するようにする。一方、ライト・バッファの空きに余裕がないときは、磁気ディスク11への書き込みを優先してライト・バッファが早く空くように処理することができる。
他の好ましい例において、HDD1は、既にキャッシュされているライト・コマンドのコマンド数(図6の例では5つ)に基づいて実行順序決定方法を選択する。具体的には、キャッシュ・されているライト・コマンド数が多い場合、HDD1はスループット優先決定方法を選択する。一方、少ない場合は、FUA優先決定方法を選択する。
図8のフロー・チャートを参照して、具体的に説明する。HDD1は、FUAコマンドを含まない複数の未実行ライト・コマンドを、スループット優先決定方法に従って、リオーダリングする(S21)。その後、HDD1は、FUAコマンドを所得すると(S22)、キャッシュされているライト・コマンド数を計算し、その数が予め定められた基準値未満であるかを判定する(S23)。図6の例においては、ライト・コマンド数は5である。ライト・コマンド数が基準値以上である場合、HDD1はFUAコマンドを優先することなく、HDD1のスループットを優先して、スループット優先決定方法を選択する(S24)。
一方、キャッシュされているライト・コマンド数が基準値未満である場合、HDD1はFUAコマンドを優先してコマンド実行順序を決定する(S25)。つまり、HDD1はFUA優先決定方法を選択してライト・コマンドの実行順序を決定する。このように、FUAコマンドを取得した場合、ライト・コマンド数に従って実行順序決定方法を変化させることによってライト・バッファにキャッシュしているライト・コマンドが少ないときは、早くインターフェースをレディにし、後続コマンドを受信するようにし、キャッシュしているライト・コマンドが多いときには、磁気ディスク11への書き込みを優先してライト・バッファが早く空くように処理する。
キャッシュされているライト・コマンド数の他に、キャッシュされているライト・コマンドに対応するライト・データのセクタ数に基づいて実行順序決定方法を選択することは、他の好ましい例である。セクタ数が多い場合、HDD1はスループット優先決定方法を選択する。一方、少ない場合は、FUA優先決定方法を選択する。HDD1は、FUAコマンドを取得すると、キャッシュされているライト・コマンドのデータ・セクタ数(ライト・データ量)を合計し、それが基準値以上であるか判定する。基準値以上である場合、HDD1はスループット優先決定方法を選択し、基準値未満である場合、FUA優先決定方法を選択する。なお、セクタ数の算出に、新たに取得したFUAコマンドのライト・データを含むことができる。このように、書き込むデータ・セクタ数に従って実行順序決定方法を変化させることによって、ライト・バッファにキャッシュしているライトデータが少ないときは、早くインターフェースをレディにして後続コマンドを受信するようにし、キャッシュしているライト・データが多いときには、磁気ディスク11の書き込みを優先してライト・バッファが早く空くように処理する。
あるいは、キャッシュされているライト・コマンドの実行時間に基づいて実行順序決定方法を選択することは、他の好ましい例である。実行時間が基準値より短い場合、HDD1はスループット優先決定方法を選択する。一方、実行時間が基準値より長い場合は、FUA優先決定方法を選択する。HDD1は、FUAコマンドを取得すると、スループット優先でリオーダリングしたのち、FUAの実行までに実行される各ライト・コマンドの実行時間を計算する。実行時間は、シーク時間、回転待ち時間、そして書き込み時間を含む。これらの実行時間を合計し、その値が基準値以上であるか判定する。基準値以上である場合、HDD1はFUA優先決定方式を選択し、基準値未満である場合、スループット優先決定方式を選択する。
なお、実行時間の計算において、シーク時間と書き込み時間に対して、エラーによるリトライ処理と実行時のバラツキを考慮した係数をかけることが好ましい。このように、書き込みの実行時間に従って実行順序決定方法を変化させることによってFUAコマンドの完了通知があまりにも遅くなることを防ぐことができる。つまり、メディアへの書き込みにおいて効率的な順序が選ばれたことにより、FUAコマンドの処理が後回しになると、場合によっては、FUAコマンドがタイムアウトになる可能性がある。実行時間を予測して、規定時間内にFUAコマンドの完了通知をすることで、FUAコマンドのタイムアウトを防ぐことができる。なお、FUAコマンドを取得したとき、FUAコマンドを含まず、キャッシュされているライト・コマンドの実行時間のみを使用して、実行時間の基準値に対する判定をしてもよい。
本形態においては、HDC/MPU23が上述のライト・キャッシュ制御を行う。そこで、HDC/MPU23のライト・キャッシュ制御処理の詳細について説明する。図9は、HDD1において、ライト・キャッシュ制御に関する構成を示すブロック図である。HDC/MPU23は、ハード・ウェア構成として、ホスト・インターフェース231、ドライブ・インターフェース232及びメモリ・マネージャ233を備えている。マイクロ・コードがMPU上で動作することによって、MPUは、ホスト・インターフェース・マネージャ234、コマンド実行マネージャ235及びキャッシュ・マネージャ236として機能することができる。メモリRAM24はコマンド及びデータを一時的に記憶し、ライト・バッファ241及びライト・キャッシュ・テーブル247として機能する。
ホスト・インターフェース231は、ホスト51との間における実際のデータ伝送処理を実行し、データ伝送部として機能する。ドライブ・インターフェース232は、磁気ディスク11との間(あるいはリード・ライト・チャネル21との間)における実際のデータ入出力処理を行う。メモリ・マネージャ233はRAM(メモリ)24のデータ記憶を制御し、HDC/MPU23内の他の機能ブロックとRAM24との間におけるコマンド及びユーザ・データ(ライト/リード・データ)の仲介処理を行う。
ホスト・インターフェース・マネージャ234はホスト・インターフェース231を管理するデータ伝送制御部として機能し、ホスト・インターフェース231との間において所定の通知あるいは命令の授受を行う。キャッシュ・マネージャ236は、キューされているライト・コマンドの再スケジューリングを実行し、適切なコマンド実行順序を決定する。コマンド実行マネージャ235は、キャッシュ・マネージャ236によって決定された順序に従って、コマンドの実行を制御する。さらに、ドライブ・インターフェース232を制御することによって、磁気ディスク11との間のデータ書き込み及びデータ読み出しを制御する。
図10は、ライト・キャッシュ・テーブル247の一例を示している。図10において、コマンド番号は、ライト・キャッシュ・テーブル247における各コマンドの識別子である。コマンド・タイプは、各ライト・コマンドがFUAコマンドであるか否かを示す。データ長は、ライト・コマンドに対応するライト・データのデータ長、バッファ内開始位置はライト・バッファ内におけるライト・データの記憶開始位置である。磁気ディスクへの書き込み順序は、各ライト・データの磁気ディスク11への書き出し順序であり、図の例では、Wr1から順に磁気ディスク11に書き出される。
ライト・コマンドのリオーダリング処理の動作について説明する。ホスト51からライト・コマンド及びライト・データをホスト・インターフェース231が受信すると、メモリ・マネージャ233は、ライト・バッファ241にライト・データを格納する。キャッシュ・マネージャ236は、ライト・コマンドをライト・キャッシュ・テーブル247に記録する。つまり、ホスト・インターフェース231は、ホスト・インターフェース・マネージャ234、を介して、キャッシュ・マネージャ236にライト・コマンドの受信、そのコマンド・タイプ、LBA(Logical Block Address)、データ長を通知する。
キャッシュ・マネージャ236は、ライト・コマンドを受信すると、ライト・キャッシュ・テーブル247の空いているレコードの各エントリに、ライト・コマンドに関するデータを記録する。ライト・キャッシュ・テーブル247への登録タイミングにおいて、このライト・コマンドの実行順序は、例えば、最後の順序とすることができる。
受信したライト・コマンドが非FUAコマンドの場合、キャッシュ・マネージャ236は、ホスト・インターフェース・マネージャ234に、コマンド完了通知をホスト51に返すように要求する。ホスト・インターフェース・マネージャ234は、ホスト・インターフェース231を介して、ホスト51にコマンド完了通知を返す。さらに、キャッシュ・マネージャ236は、各ライト・コマンドの実行順序、つまり、ライト・データの磁気ディスク11への書き出し順序のリオーダリングを実行する。このとき、キャッシュ・マネージャ236は、上述の実行順序決定方法に従って実行順序を決定する。
一方、受信したライト・コマンドがFUAコマンドの場合、コマンド完了通知をホスト51に返すことなく、キャッシュ・マネージャ236は、各ライト・コマンドの実行順序を決定する。この際、キャッシュ・マネージャ236は、上述のように、所定の条件に依存する実行順序決定方法に従って、ライト・コマンドのリオーダリングを実行する。
その後、キャッシュ・マネージャ236は、コマンド実行マネージャ235に実行すべきライト・コマンドを通知する。コマンド実行マネージャ235は、ドライブ・インターフェース232に、実行ライト・コマンドのライト・データを磁気ディスク11に書き込むことを指示する。ドライブ・インターフェース232は、メモリ・マネージャ233を介して、ライト・バッファ241からライト・データを取得し、磁気ディスク11に書き込むためにそのライト・データを転送する。
磁気ディスク11への書き込みが完了すると、ドライブ・インターフェース232からコマンド実行マネージャ235に、書き込みが完了したことが通知される。FUAコマンドの実行が完了した場合、コマンド実行マネージャ235は、ホスト・インターフェース・マネージャ234に、FUAコマンドの完了通知をホスト51に送信することを要求する。ホスト・インターフェース・マネージャ234は、その要求に応答して、ホスト51にFUAコマンドの完了通知を返す。
尚、上記の説明は、本発明の実施形態を説明するものであり、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。例えば、本形態のライト・バッファ制御を、磁気ディスク以外のメディアを利用するデータ記憶装置に適用することができる。