(57)【要約】【課題】  ホストの待ち時間を短縮する。【解決手段】  本形態のＨＤＤ１は、ホスト５１からのライト・データをライト・バッファ２４１に書き込んだ後に、そのライト・データの書き込み終了位置から先の連続空き領域の容量を検出する。その容量が基準値未満で、次のライト・コマンドのデータを記憶するために十分ではない場合、基準値以上の連続空き領域をライト・バッファ内において検索する。基準値以上の連続空き領域を検出した場合、ＨＤＤ１は、その連続空き領域にライト・ポインタ２４４をセットする。これによって、ホスト５１から次のライト・データを受信することができ、ホストの待ち時間を短縮することができる。【選択図】  図３
2006172032.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体にホストからのライト・データを書き込むデータ記憶装置であって、
その先端と終端が連結され、ポインタで指定される書き込み開始位置からデータを記録する、ホストからのライト・データを一時的に保存するライト・バッファと、
前記ライト・バッファのデータ記録を制御するコントローラと、を備え、
前記コントローラは、
前記ライト・バッファに前記ホストからのライト・データが書き込まれた後、そのライト・データの書き込み終了位置から先の連続空き領域の容量を検出し、
前記連続空き領域の容量が基準値未満である場合、その基準値以上の連続空き領域を前記ライト・バッファにおいて検索し、
検索によって前記基準値以上の連続空き領域を検出した場合、その連続空き領域に前記ポインタをセットする、
データ記憶装置。
【請求項２】
前記コントローラは、前記終了位置から先の連続空き領域が基準値以上である場合、前記探索を行うことなく前記ポインタは前記終了位置にセットする、請求項１に記載のデータ記憶装置。
【請求項３】
前記コントローラは、前記検索によって前記基準値以上の連続空き領域を検出した後に、前記ライト・データに対応するコマンド完了通知を前記ホストに送信する、請求項１に記載のデータ記憶装置。
【請求項４】
前記コントローラは、前記検索によって検出された前記連続空き領域の開始位置に前記ライト・ポインタをセットする、請求項１に記載のデータ記憶装置。
【請求項５】
前記コントローラは、前記ポインタを、前記ライト・バッファにおける最も広い連続空き領域にセットする、請求項１に記載のデータ記憶装置。
【請求項６】
前記コントローラは、前記検索によって前記基準値以上の連続空き領域を検出しなかった場合、前記基準値以上の連続空き領域を検出するまで、前記ライト・データに対応する完了通知の前記ホストへの送信を延期する、請求項１に記載のデータ記憶装置。
【請求項７】
前記コントローラは、前記ライト・バッファから前記記録媒体へのデータ書き出しに応答して、前記基準値以上の連続空き領域を前記ライト・バッファにおいて検索する、請求項６に記載のデータ記憶装置。
【請求項８】
前記コントローラは、前記探索において前記基準値以上の連続空き領域を検出しなかった場合、前記終了位置から先の連続空き領域の先に隣接するライト・データの前記記録媒体への書き出しの優先度を上げる、請求項１に記載のデータ記憶装置。
【請求項９】
前記ライト・バッファは一つの連続セクションとして機能し、ライト・データを任意のアドレスから開始する連続空き領域に記録することができる、請求項１に記載のデータ記憶装置。
【請求項１０】
記録媒体にホストからのライト・データを書き込むデータ記憶装置におけるバッファ制御方法であって、
先端と終端が連結され、ポインタで指定される書き込み開始位置からデータを記録するバッファに、ホストからのライト・データを記録し、
前記バッファに前記ホストからのライト・データが書き込まれた後、そのライト・データの書き込み終了位置から先の連続空き領域の容量を検出し、
前記連続空き領域の容量が基準値未満である場合、その基準値以上の連続空き領域を前記ライト・バッファにおいて検索し、その検索によって前記基準値以上の連続空き領域を検出した場合、その連続空き領域に前記ポインタを移動する、
データ記憶装置におけるバッファ制御方法。
【請求項１１】
前記連続空き領域の容量が基準値以上である場合、前記ポインタを前記終了位置にセットする、請求項１０に記載のデータ記憶装置におけるバッファ制御方法。
【請求項１２】
前記検索によって前記連続空き領域が検出されなかった場合、ホストが次のライト・コマンドを送信することを許可する通知の送信を延期する、請求項１０に記載のデータ記憶装置におけるバッファ制御方法。
【請求項１３】
前記検索によって前記連続空き領域が検出されなかった場合、前記ライト・バッファから前記記録媒体へのデータ書き出し毎に、前記基準値以上の連続空き領域を前記ライト・バッファにおいて検索する、請求項１２に記載のデータ記憶装置におけるバッファ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ記憶装置に関し、特に、データ記憶装置におけるバッファ制御に関する。
【背景技術】
【０００２】
データ記憶装置として、光ディスクや磁気テープあるいは半導体メモリなどの様々な態様のメディアを使用する装置が知られている。その中で、ハードディスク・ドライブ（以下、ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、あるいはデジタル・カメラなどで使用されるリムーバブルメモリなど、ＨＤＤの用途はその優れた特性により益々拡大している。
【０００３】
ＨＤＤで使用される磁気ディスクは、同心円状に形成された複数のトラックを有しており、各トラックは複数のセクタに区分されている。各セクタにはサーボ・データと、ユーザ・データが記憶される。ヘッド素子部がセクタのサーボ・データに従って所望のセクタにアクセスすることによって、所望アドレスへのデータ書き込みあるいは所望アドレスからのデータ読み出しを行うことができる。データ読み出し処理において、ヘッド素子部が磁気ディスクから読み出した信号は信号処理回路によって波形整形や復号処理などの所定の信号処理が施され、ホストに送信される。ホストからの転送データは、信号処理回路によって同様に所定処理された後に、磁気ディスクに書き込まれる。
【０００４】
ＨＤＤのパフォーマンス向上手法の１つとして、ライト・キャッシュが知られている。この手法において、ＨＤＤは、ホストからのライト・コマンドをキャッシュし、また、そのライト・データをライト・バッファに記憶する。ライト・バッファへのライト・データの格納が完了した段階で、ホストにコマンドの完了通知を送信する。ＨＤＤは、ホストとの間の通信と並行して、ライト・バッファに格納してあるライト・データを磁気ディスクに書き出していく。このときの、ライト・バッファのハンドリングの一つとして、シングル・リング・バッファ方式が知られている。
【０００５】
シングル・リング・バッファ方式は、ホストからのライト・データを一つのリング・バッファに時系列的に格納していく。典型的なシングル・リング・バッファ方式は、最古のライト・データからディスクに書き出していく。ライト・バッファをその終端位置まで使い切った時には、ライト・バッファの先端位置に戻る。このとき、先端位置に記憶されているライト・データがまだ磁気ディスクに書き出されていない場合、ライト・バッファは新たなライト・データを格納することができないため、次のライト・データをホストから受信することができない。
【０００６】
一方、ＨＤＤ内の処理を効率化し、最短時間で全てのライト・データを磁気ディスクに書き込めるよう、ＲＰＯ（Rotational Positioning Optimization）等のアルゴリズムを使用して、ライト・データのディスク書き込み順序を最適化する技術が知られている（例えば、特許文献１を参照）。ＲＰＯは、例えば、実行待ちのコマンドを実行したときに、磁気ディスク上のターゲット・トラックへのシークを開始してから到達するまでのシーク時間と、到達後にターゲット・セクタにアクセスを開始するまでのディスク回転待ち時間とを予想する。シーク時間および回転待ち時間の合計が最短となる実行待ちコマンドを、次に実行するコマンドとして選択する。
【０００７】
【特許文献１】特開２００３−１２２６３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ＲＰＯはライト・データの受信順序と独立してディスク書き込み順序を決定する。このため、ライト・バッファに記憶されているライト・データのディスク書き込み順序は時系列ではなくなり、最古のライト・データが実際に磁気ディスクに書き出されるのは、最後になることもある。上述のように、シングル・リング・バッファ方式において、最古のライト・データが磁気ディスクに書き出されるまでは、最古のライト・データの開始位置から先の領域にライト・データを記録することができない。このため、最古のライト・データをライト・バッファから磁気ディスクに書き出すまでは、ホストからの次のライト・データを受信することができない。従って、ホストは次のライト・コマンドをＨＤＤに発行することができず、多大な時間を待つことになる。
【０００９】
本発明は上述のような事情を背景としてなされたものであって、データ記憶装置におけるライト・バッファ制御を改善してホストの待ち時間を短縮することである。
【課題を解決するための手段】
【００１０】
本発明の第１の態様は、記録媒体にホストからのライト・データを書き込むデータ記憶装置であって、その先端と終端が連結され、ポインタで指定される書き込み開始位置からデータを記録する、ホストからのライト・データを一時的に保存するライト・バッファと、前記ライト・バッファのデータ記録を制御するコントローラと、を備え、前記コントローラは、前記ライト・バッファに前記ホストからのライト・データが書き込まれた後、そのライト・データの書き込み終了位置から先の連続空き領域の容量を検出し、前記連続空き領域の容量が基準値未満である場合、その基準値以上の連続空き領域を前記ライト・バッファにおいて検索し、検索によって前記基準値以上の連続空き領域を検出した場合、その連続空き領域に前記ポインタをセットする。連続空き領域を検索することによって、データ記憶装置におけるライト・バッファの利用効率を高め、ホストの待ち時間を低減することができる。
【００１１】
本発明の第２の態様において、前記コントローラは、前記終了位置から先の連続空き領域が基準値以上である場合、前記探索を行うことなく前記ポインタは前記終了位置にセットする。これによって、処理の効率化を図る。
【００１２】
本発明の第３の態様において、前記コントローラは、前記検索によって前記基準値以上の連続空き領域を検出した後に、前記ライト・データに対応するコマンド完了通知を前記ホストに送信する。これによって、ライト・データの上書きを確実に防止することができる。
【００１３】
本発明の第４の態様において、前記コントローラは、前記検索によって検出された前記連続空き領域の開始位置に前記ライト・ポインタをセットする。これによって広い領域を確保することができる。
【００１４】
本発明の第５の態様において、前記コントローラは、前記ポインタを、前記ライト・バッファにおける最も広い連続空き領域にセットする。これによって、最も広い領域を確保することができる。
【００１５】
本発明の第６の態様において、前記コントローラは、前記検索によって前記基準値以上の連続空き領域を検出しなかった場合、前記基準値以上の連続空き領域を検出するまで、前記ライト・データに対応する完了通知の前記ホストへの送信を延期する。これによって、ライト・データの上書きを確実の防止することができる。本発明の第７の態様において、さらに、前記コントローラは、前記ライト・バッファから前記記録媒体へのデータ書き出しに応答して、前記基準値以上の連続空き領域を前記ライト・バッファにおいて検索する。これによって、必要な空き領域の検出を迅速に行うことができる。
【００１６】
本発明の第８の態様において、前記コントローラは、前記探索において前記基準値以上の連続空き領域を検出しなかった場合、前記終了位置から先の連続空き領域の先の隣接するライト・データの前記記録媒体への書き出しの優先度を上げる。これによって、必要な連続空き領域を確保することができる。
【００１７】
本発明の第９の態様において、前記ライト・バッファは一つの連続セクションとして機能し、ライト・データを任意のアドレスから開始する連続空き領域に記録する。これによって、ライト・バッファの利用効率を上げることができる。
【００１８】
本発明の第１０の態様は、記録媒体にホストからのライト・データを書き込むデータ記憶装置におけるバッファ制御方法であって、先端と終端が連結され、ポインタで指定される書き込み開始位置からデータを記録するバッファに、ホストからのライト・データを記録し、前記バッファに前記ホストからのライト・データが書き込まれた後、そのライト・データの書き込み終了位置から先の連続空き領域の容量を検出し、前記連続空き領域の容量が基準値未満である場合、その基準値以上の連続空き領域を前記ライト・バッファにおいて検索し、その検索によって前記基準値以上の連続空き領域を検出した場合、その連続空き領域に前記ポインタを移動する。
【００１９】
本発明の第１１の態様において、前記連続空き領域の容量が基準値以上である場合、前記ポインタを前記終了位置にセットする。
【００２０】
本発明の第１２の態様において、前記検索によって前記連続空き領域が検出されなかった場合、ホストが次のライト・コマンドを送信することを許可する通知の送信を延期する。さらに、本発明の第１３の態様において、前記検索によって前記連続空き領域が検出されなかった場合、前記ライト・バッファから前記記録媒体へのデータ書き出し毎に、前記基準値以上の連続空き領域を前記ライト・バッファにおいて検索する。
【発明の効果】
【００２１】
本発明によれは、データ記憶装置におけるライト・バッファの利用効率を高め、ホストの待ち時間を低減することができる。
【発明を実施するための最良の形態】
【００２２】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。
【００２３】
本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本発明の理解の容易のため、最初に、データ記憶装置の一例であるハードディスク・ドライブ（ＨＤＤ）の全体構成の概略を説明する。図１は、本実施の形態に係るＨＤＤ１の構成を模式的に示すブロック図である。図１に示すように、ＨＤＤ１は、密閉されたエンクロージャ１０内に、記録メディア（記録媒体）の一例である磁気ディスク１１、ヘッド素子部１２、アーム電子回路（アームエレクトロニクス：ＡＥ）１３、スピンドル・モータ（ＳＰＭ）１４、ボイス・コイル・モータ（ＶＣＭ）１５を備えている。
【００２４】
ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（Ｒ／Ｗチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（以下、ＨＤＣ／ＭＰＵ）２３、及びメモリの一例であるＲＡＭ２４などの各ＩＣを備えている。尚、各回路構成は一つのＩＣに集積すること、あるいは、複数のＩＣに分けて実装することができる。
【００２５】
外部ホスト５１からのライト・データは、ＨＤＣ／ＭＰＵ２３によって受信され、Ｒ／Ｗチャネル２１、ＡＥ１３を介して、ヘッド素子部１２によって磁気ディスク１１に書き込まれる。また、磁気ディスク１１に記憶されているリード・データはヘッド素子部１２によって読み出され、そのリード・データは、ＡＥ１３、Ｒ／Ｗチャネル２１を介して、ＨＤＣ／ＭＰＵ２３から外部ホスト５１に出力される。
【００２６】
次に、ＨＤＤ１の各構成要素について説明する。磁気ディスク１１は、ＳＰＭ１４に固定されている。ＳＰＭ１４は所定の速度で磁気ディスク１１を回転する。ＨＤＣ／ＭＰＵ２３からの制御データに従って、モータ・ドライバ・ユニット２２がＳＰＭ１４を駆動する。本例の磁気ディスク１１は、データを記録する記録面を両面に備え、各記録面に対応するヘッド素子部１２が設けられている。
【００２７】
各ヘッド素子部１２はスライダ（不図示）に固定されている。また、スライダはアクチュエータ（不図示）に固定されている。アクチュエータはＶＣＭ１５に連結され、回転軸を中心に揺動することによって、ヘッド素子部１２を磁気ディスク１１上において半径方向に移動する。モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従ってＶＣＭ１５を駆動する。
【００２８】
ヘッド素子部１２には、典型的には、磁気ディスク１１への記録データに応じて電気信号を磁界に変換する記録ヘッド、及び磁気ディスク１１からの磁界を電気信号に変換する再生ヘッドが一体的に形成されている。なお、磁気ディスク１１は、１枚以上あればよく、記録面は磁気ディスク１１の片面あるいは両面に形成することができる。
【００２９】
続いて各回路部の説明を行う。ＡＥ１３は、複数のヘッド素子部１２の中からデータ・アクセスが行われる１つのヘッド素子部１２を選択し、選択されたヘッド素子部１２により再生される再生信号を一定のゲインで増幅（プリアンプ）し、Ｒ／Ｗチャネル２１に送る。また、Ｒ／Ｗチャネル２１からの記録信号を選択されたヘッド素子部１２に送る。
【００３０】
Ｒ／Ｗチャネル２１は、ホスト５１から転送されたデータについて、ライト処理を実行する。ライト処理において、Ｒ／Ｗチャネル２１はＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、更にコード変調されたライト・データをライト信号（電流）に変換してＡＥ１３に供給する。また、ホスト５１にデータを供給する際にはリード処理を行う。リード処理において、Ｒ／Ｗチャネル２１はＡＥ１３から供給されたリード信号を一定の振幅となるように増幅し、取得したリード信号からデータを抽出し、デコード処理を行う。読み出されるデータは、ユーザ・データとサーボ・データを含む。デコード処理されたリード・データは、ＨＤＣ／ＭＰＵ２３に供給される。
【００３１】
ＨＤＣ／ＭＰＵ２３は、ＭＰＵとＨＤＣが一つのチップに集積された回路である。ＭＰＵは、ＲＡＭ２４にロードされたマイクロ・コードに従って動作する。ＨＤＤ１の起動に伴い、ＲＡＭ２４には、ＭＰＵ上で動作するマイクロ・コードの他、制御及びデータ処理に必要とされるデータが磁気ディスク１１あるいはＲＯＭ（不図示）からロードされる。ＨＤＣ／ＭＰＵ２３は、ヘッド素子部１２のポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、ＨＤＤ１の全体制御を実行する。
【００３２】
ＨＤＣ／ＭＰＵ２３は、Ｒ／Ｗチャネル２１から取得した磁気ディスク１１からのリード・データを、ホスト５１に伝送する。磁気ディスク１１からのリード・データは、ＲＡＭ２４内のリード・バッファに一端格納された後、ＨＤＣ／ＭＰＵ２３を介してホスト５１に転送される。また、ホスト５１からのライト・データは、ＨＤＣ／ＭＰＵ２３を介して、ＲＡＭ２４内のライト・バッファに一端格納され、その後、所定のタイミングでＨＤＣ／ＭＰＵ２３を介して磁気ディスク１１に転送される。
【００３３】
続いて、本実施形態に係るＨＤＤ１のライト・バッファ制御について説明する。本形態のＨＤＤ１はライト・キャッシュがオンの状態であり、ライト・データのライト・バッファへの格納が完了したタイミングで、対応するライト・コマンドの完了通知をホスト５１に送信することができる。ホスト５１は、ＨＤＤ１からコマンド完了通知を受信した段階で、ＨＤＤ１に対して新たなコマンドを発行することができる。また、効率的な内部処理を行うため、ＨＤＤ１は、ＲＰＯ（Rotational Positioning Optimization）等のアルゴリズムを使用して、ライト・データの磁気ディスク１１への書き出し順序を最適化する。このため、ライト・バッファから磁気ディスク１１へのライト・データの書き出し順序は、ライト・データのホスト５１から受信順序（ライト・バッファへの記録順序）とは別に設定される。
【００３４】
本形態のライト・バッファは、その先端アドレスと終端アドレスが連結されたバッファ構成を備えている。ライト・バッファは、ライト・データをその終端アドレスまで記憶すすると、終端アドレスから連続的に先端アドレスに続けて、ライト・データを記憶する。つまり、ライト・バッファは、一つのライト・コマンドに対応するライト・データを、終端アドレスと先端アドレスにまたがって格納することができる。ライト・バッファの先端と終端が連結されることで、ライト・バッファを効率的に利用することができる。
【００３５】
また、ライト・バッファはＨＤＤ１のデータ処理単位であるセクタ単位でアドレスし、一つのライト・コマンドに対応するライト・データを一つの連続アドレスに記憶する。本形態のライト・バッファは複数のセグメントに分割されておらず、一つの連続セクションとして構成されている。このため、ライト・バッファは、任意のアドレスから開始する連続空き領域に、一つのライト・コマンドに対応するライト・データ記憶することができる。複数のセグメントによって区切られず、一つの連続セクションとして構成することで、バッファ内領域の利用効率が上がる。
【００３６】
ライト・バッファへのライト・データの書き込みは、ライト・ポインタによって指示されるアドレス（位置）から開始される。同様に、磁気ディスク１１へのライト・データの書き出しは、リード・ポインタによって指示されたアドレス（位置）から開始される。ここで、上述のように、従来のシングル・リング・バッファを用いたバッファ制御は、最古のライト・データを磁気ディスク１１に書き出すまでは、ライト・バッファに次のライト・データを書き込むことができない。これに対し、本形態のＨＤＤ１は、連続空き領域をライト・バッファ内において検索することによって、次のライト・データの書き込みを可能とする。
【００３７】
より具体的には、本形態のＨＤＤ１は、ホスト５１からのライト・データをライト・バッファに書き込んだ後に、そのライト・データの書き込み終了位置から先の連続空き領域の容量を検出する。その容量が基準値未満で、次のライト・コマンドのデータを記憶するために十分ではない場合、基準値以上の連続空き領域をライト・バッファ内において検索する。上述のように、本形態のＨＤＤ１は、磁気ディスク１１へのライト・データの書き出し順序を最適化するため、ライト・バッファへの書き込み順序と異なる順序で、データがライト・バッファから読み出される。このため、書き込まれたライト・データの終了位置と異なるアドレス位置に、広い連続空き領域が存在しうる。ライト・バッファイ内を検索し、上記基準値以上の連続空き領域を検出した場合、ＨＤＤ１は、その連続空き領域にライト・ポインタをセットする。これによって、ホスト５１から次のライト・データを受信することができ、ホストの待ち時間を短縮することができる。
【００３８】
本形態のライト・バッファのポインタ制御について、図２及び図３を参照して具体的に説明する。図２及び図３は、本形態のライト・バッファを概念的に示している。図２は、新たなライト・データを書き込んだ後、そのライト・データの書き込み終了位置から先に、基準値以上の連続空き領域が存在するケースを示している。一方、図３は、新たなライト・データの書き込み終了位置から先に、基準値以上の連続空き領域が存在しない（連続空き領域が基準値未満）ケースを示している。なお、図２及び３は本形態のバッファ制御を説明するための模式図であり、実際の装置においては、典型的には、数十のライト・コマンドに対応するライト・データを記憶する容量のライト・バッファが用意される。
【００３９】
まず、図２を参照して、ライト・データを書き込んだ後、そのライト・データの書き込み終了位置から先に、基準値以上の連続空き領域が存在する例を説明する。図２（ａ）において、ライト・バッファ２４１は、まだ磁気ディスク１１に書き出していないライト・データを記憶するデータ記憶領域２４２ａ、２４２ｂと、新たなライト・データを格納することができる連続空き領域２４３ａ、２４３ｂを備えている。データ記憶領域２４２ａ、２４２ｂは、それぞれ、一つのライト・コマンドに対するライト・データを記憶している。図２において、ライト・データは、右回りでライト・バッファ２４１に記録されていく。
【００４０】
データ記憶領域２４２ａ、２４２ｂにおいて、Wrk（kは自然数）は磁気ディスク１１への書き出し順序を示しており、Wr1のライト・データ２４２ａから順に磁気ディスク１１に書き出す。Bk（kは自然数）は基準位置（基準アドレス）に対するバッファ内における位置順序を示している。本例においては、１２時の位置基準位置として、右に向かって順序付けされている。ライト・ポインタ２４４は、連続空き領域２４３ｂの開始位置（開始アドレス）（データ記憶領域２４２ａの終了位置）を指示している。リード・ポインタ２４５は、Wr1と指示されたデータ記憶領域２４２ａの開始位置を指示している。
【００４１】
ホスト５１から新たなライト・データを受信すると、ライト・ポインタ２４４によって指示されている位置から、そのライト・データがライト・バッファ２４１に格納される。図２（ｂ）は、新たなライト・データが格納された状態のライト・バッファ２４１を示しており、ライト・バッファ２４１は新たなライト・データが書き込まれたデータ記憶領域２４２ｃを備えている。図２（ｂ）の例において、新たに書き込まれたライト・データ（データ記憶領域２４２ｃ）の終了位置から先に、基準値以上の連続空き領域２４３ｃが存在する。そのため、ＨＤＤ１は、別の連続空き領域を検索することなく、連続空き領域２４３ｃの開始位置（新たなライト・データの書き込み終了位置）にライト・ポインタをセットする。
【００４２】
また、新たなライト・データに対して磁気ディスク１１への書き出し順序Wkとバッファ内順序Bkがセットされると同時に、既に格納されているライト・データの磁気ディスク１１への書き出し順序Wkとバッファ内順序Bkについて、必要な変更がなされる。図２（ｂ）の例においては、新たに書き込まれたライト・データの書き込み順序はW3に設定され、バッファ内順序としてB1がセットされている。データ記憶領域２４２ａ、２４２ｂの各ライト・データについては、磁気ディスク１１への書き出し順序は変更されず、バッファ内順序がそれぞれB3、B２に変更されている。
【００４３】
続いて、ライト・データの書き込み終了位置から先に、基準値以上の連続空き領域が存在しないケースについて、図３を参照して説明する。図３（ａ）に示すように、ライト・バッファ２４１は、まだ磁気ディスク１１に書き出していないライト・データを記憶するデータ記憶領域２４２ｄ、２４２ｅ、２４２ｆと、新たなライト・データを格納することができる連続空き領域２４３ｄ、２４３ｅ、２４３ｆをそれぞれ備えている。磁気ディスク１１への書き出し順序Wkとバッファ内順序Bkについては、図２と同様の基準で設定されている。ライト・ポインタ２４４は、連続空き領域２４３ｄの開始位置（データ記憶領域２４２ｄの終了位置）を指示している。リード・ポインタ２４５は、Wr1に設定されたデータ記憶領域２４２ｄの開始位置を指示している。
【００４４】
ホスト５１から新たなライト・データを受信すると、ライト・ポインタ２４４によって指示されている位置から、そのライト・データがライト・バッファ２４１に格納される。図３（ｂ）は、新たなライト・データが格納された状態のライト・バッファ２４１を示しており、ライト・バッファ２４１は新たなライト・データを記憶するデータ記憶領域２４２ｇを備えている。書き込まれたライト・データ（データ記憶領域２４２ｇ）の終了位置から先に連続空き領域２４３ｇが存在するが、その容量は基準値未満である。このため、ＨＤＤ１は、ライト・バッファ２４１内に、基準値以上の連続空き領域を検索する。本例において、連続空き領域２４３ｅが基準値以上の領域を占めている。そのため、ＨＤＤ１は、ライト・ポインタ２４４を連続空き領域２４３ｅの開始位置にセットする。また、図２を参照して説明したように、各ライト・データについて、磁気ディスク１１への書き出し順序Wkとバッファ内順序Bkの再設定が実行される。
【００４５】
以上のように、本形態のＨＤＤ１は、ライト・バッファに新たなライト・データを書き込んだ後、その書き込み終了位置から先の連続空き領域の容量を検出する。新たなライト・データの書き込み終了位置から先に、基準値以上の連続空き領域が存在しない場合は、ライト・バッファ内において他の連続空き領域を検索する。検索の結果、基準値以上の連続空き領域を検出すると、ＨＤＤ１は、その連続空き領域にライト・ポインタを移動する。このとき、空き領域を効率的に使用するため、ＨＤＤ１は、好ましくはその連続空き領域の開始位置にライト・ポインタを移動する。また、ライト・データの可変なデータ長に対応するため、好ましくは、最も広い（容量の大きい）連続空き領域にライト・ポインタをセットする。
【００４６】
これにより、古いライト・データがライト・バッファに残っている場合であっても、次のライト・データをライト・バッファ内の離散配置された空き領域に格納することができる。つまり、ホスト５１は次のライト・コマンドを発行することができ、ホスト５１の待ち時間を短縮することができる。また、ライト・データ格納後、その書き込み終了位置から先に基準値以上の連続空き領域が存在する場合、他の連続空き領域の検索することなく、そのライト・データの書き込み終了位置（隣接する次の連続空き領域の開始位置）にライト・ポインタをセットする。これによって、無駄な処理を行うことなく、迅速なバッファ制御処理を実現する。
【００４７】
一方、ライト・データの書き込み終了位置から先に基準値以上の連続空き領域が存在せず、さらに、ライト・バッファ２４１を検索の結果、基準値以上の連続空き領域を検出しなかった場合、ＨＤＤ１は、ホスト５１にコマンドの完了通知の送信を延期する。完了通知は、ホスト５１に対して新しいコマンドの発行を許可することの通知に相当する。ホスト５１は、コマンド完了通知を受信するまで、コマンド発行を待つことになる。
【００４８】
そのため、ライト・バッファ内に必要な連続空き領域が存在しない場合、ホスト５１の待ち時間を短縮するため、ライト・バッファ内に記憶されているライト・データの磁気ディスク１１への書き込み順序の優先度を再設定することが好ましい。ここで、優先度とは磁気ディスク１１への書き出し順序を決定する値であり、優先度が大きいものが先に磁気ディスク１１に書き出される。このため、優先度を上げても書き出し順序が変化しない場合もある。もちろん、常に、優先度を上げることによって書き出しの順番を上げるように設計することも可能である。このとき、最初の順番に設定すれば（図２におけるWr1に相当）、ホスト５１の待ち時間短縮に大きく寄与する。
【００４９】
例えば、新たに書き込まれたライト・データの書き込み終了位置から先の連続空き領域に隣接する（連続空き領域の終了位置から先の）ライト・データの優先度を上げることは、好ましい一例である。あるいは、最も容量の大きいライト・データの優先度を上げることができる。この他、離間した２つの連続空き領域に隣接して記憶されているライト・データの優先度を上げることができる。これによって、広い連続空き領域を確保することができる。このとき、ライト・データを書き出すことによって確保される連続空き領域が最も広くなるように、優先度を上げるライト・データを選択することができる。磁気ディスク１１へのデータ書き出しに応答して、ＨＤＤ１は連続空き領域の検索を再度、実行する。好ましくは、必要な連続空き領域が見つかるまで、書き出し処理毎に探索を実行する。これによって、連続空き領域が形成された後の遅延なく、ホスト５１に完了通知を送信することができる。
【００５０】
ここで、上述の基準値として一定の値を使用すること、あるいは、その値を変化させることができる。例えば、ホスト５１から転送されるライト・データのデータ長の最大値が決まっている場合、基準値をその値と等しく設定することができる。これによって、既存データの上書きなく、全てのライト・コマンドに対応することができる。あるいは、ＳＡＴＡ（Serial ATA）におけるＮＣＱ（Native Command Queuing）のように、ＨＤＤ１がホスト５１からのライト・データの転送順序を制御することができる場合、ＨＤＤ１は、次に転送されるライト・データのデータ長を知っている。このため、次に転送されることが予定されているライト・データのデータ長と等しい値に基準値を設定する。この場合、基準値は、次のライト・データにあわせて変化する。これによって、連続空き領域が小さい場合であっても、次のライト・データを受信することができる頻度が増加し、ホスト５１の待ち時間をより短縮することができる。
【００５１】
本形態においては、ＨＤＣ／ＭＰＵ２３が上述のライト・バッファ２４１のデータ記録制御を行う。そこで、ＨＤＣ／ＭＰＵ２３のライト・バッファ制御処理の詳細について説明する。図４は、ＨＤＤ１において、ライト・バッファ２４１制御に関する構成を示すブロック図である。ＨＤＣ／ＭＰＵ２３は、ハード・ウェア構成として、ホスト・インターフェース２３１、ドライブ・インターフェース２３２及びメモリ・マネージャ２３３を備えている。マイクロ・コードがＭＰＵ上で動作することによって、ＭＰＵは、ホスト・インターフェース・マネージャ２３４、コマンド実行マネージャ２３５及びキャッシュ・マネージャ２３６として機能することができる。メモリＲＡＭ２４はコマンド及びデータを一時的に記憶し、ライト・バッファ２４１及びライト・キャッシュ・テーブル２４７として機能することができる。
【００５２】
ホスト・インターフェース２３１は、ホスト５１との間における実際のデータ伝送処理を実行し、データ伝送部として機能する。ドライブ・インターフェース２３２は、磁気ディスク１１との間（あるいはリード・ライト・チャネル２１との間）における実際のデータ入出力処理を行う。メモリ・マネージャ２３３はＲＡＭ（メモリ）２４のデータ記憶を制御し、ＨＤＣ／ＭＰＵ２３内の他の機能ブロックとＲＡＭ２４との間におけるコマンド及びユーザ・データ（ライト／リード・データ）の仲介処理を行う。
【００５３】
ホスト・インターフェース・マネージャ２３４はホスト・インターフェース２３１を管理するデータ伝送制御部として機能し、ホスト・インターフェース２３１との間において所定の通知あるいは命令の授受を行う。キャッシュ・マネージャ２３６は、ライト・キャッシュ・テーブル２４７を参照して、ライト・バッファ２４１のライト・ポインタ２４４及びリード・ポインタ２４５の設定を行う他、キューされている・ライト・コマンドの再スケジューリングを実行し、パフォーマンス最適化の観点から適切なコマンド実行順序を決定する。コマンド実行マネージャ２３５は、キャッシュ・マネージャ２３６によって決定された順序に従って、コマンドの実行を制御する。さらに、ドライブ・インターフェース２３２を制御することによって、磁気ディスク１１との間のデータ書き込み及びデータ読み出しを制御する。
【００５４】
図５は、ライト・キャッシュ・テーブル２４７の一例を示している。図５において、コマンド番号は、ライト・キャッシュ・テーブル２４７における各コマンドの識別子である。データ長は、ライト・コマンドに対応するライト・データのデータ長、バッファ内開始位置はライト・バッファ内におけるライト・データの記憶開始位置である。磁気ディスクへの書き込み順序は、各ライト・データの磁気ディスク１１への書き出し順序であり、図の例では、Wr1から順に磁気ディスク１１に書き出される。バッファ内順序は、各ライト・データのライト・バッファ２４１における順序であり、特定のベース・アドレス（例えばライト・バッファの先端位置）からの順序を示している。
【００５５】
続いて、ライト・バッファ２４１の制御シーケンスについて、図６及び図７のフロー・チャートを参照して説明する。図６のＳ１１において、ホスト５１からライト・コマンド及びライト・データをホスト・インターフェース２３１が受信すると、メモリ・マネージャ２３３は、ライト・バッファ２４１にライト・データを格納する（Ｓ１２）。メモリ・マネージャ２３３は、レジスタ（不図示）を備えており、そこにセットされているライト・ポインタ２４４が指示する位置にライト・データを格納し、また、そこにセットされるリード・ポインタ２４５に従って、ライト・バッファ２４１からライト・データを読み出す。
【００５６】
キャッシュ・マネージャ２３６は、ライト・コマンドをライト・キャッシュ・テーブル２４７に記録する。つまり、ホスト・インターフェース２３１は、ホスト・インターフェース・マネージャ２３４、を介して、キャッシュ・マネージャ２３６にライト・コマンドの受信、そのＬＢＡ（Logical Block Address）及びそのデータ長を通知する。キャッシュ・マネージャ２３６は、ライト・コマンドを受信すると、ライト・キャッシュ・テーブル２４７の空いているレコードの各エントリにデータを記録する。ここで、このライト・データの磁気ディスクへの書き込み順序は、例えば、ライト・キャッシュ・テーブル２４７における最後の順序とすることができる。
【００５７】
キャッシュ・マネージャ２３６は、ライト・キャッシュ・テーブル２４７を参照して、新たにライト・バッファ２４１に書き込まれたライト・データの書き込み終了位置から先の連続空き領域の容量を演算する（Ｓ１３）。キャッシュ・マネージャ２３６は、新たに書き込まれたライト・データのバッファ内開始位置、データ長、及びライト・バッファ２４１内の次のライト・データのバッファ内開始位置から、連続空き領域の容量を算出することができる。次のライト・データは、バッファ内順序を参照することで特定することができる。
【００５８】
キャッシュ・マネージャ２３６は、算出した連続空き領域が基準値以上であるかを判定する。基準値は、上述のように、ＨＤＤ１の設計によって適切な値が設定されている。Ｓ１４において連続空き領域が基準値以上である場合、キャッシュ・マネージャ２３６は、ライト・ポインタ２４４を、新たに書き込まれたライト・データの終端位置（次の隣接空き領域の開始位置）に決定し、それを、メモリ・マネージャ２３３のレジスタにセットする（Ｓ１５）。さらに、キャッシュ・マネージャ２３６は、ホスト・インターフェース・マネージャ２３４に、コマンド完了通知をホスト５１に返すように要求する。ホスト・インターフェース・マネージャ２３４は、ホスト・インターフェース２３１を介して、ホスト５１にコマンド完了通知を返す（Ｓ１６）。さらに、キャッシュ・マネージャ２３６は、ホスト・インターフェース・マネージャ２３４から取得したＬＢＡに基づき、各ライト・コマンドの実行順序、つまり、ライト・データの磁気ディスク１１への書き出し順序の再スケジューリングを実行する（Ｓ１７）。
【００５９】
Ｓ１４において、連続空き領域が基準値未満である場合、キャッシュ・マネージャ２３６は、ライト・バッファ２４１において、基準値以上の連続空き領域を検索する（Ｓ１８）。キャッシュ・マネージャ２３６は、ライト・キャッシュ・テーブル２４７を参照することで、空き領域の存在及びその容量を検出することができる。Ｓ１９において基準値以上の連続空き領域を検出すると、キャッシュ・マネージャ２３６はライト・ポインタをその領域の開始位置（先端位置）にセットすることを決定し、それをメモリ・マネージャ２３３のレジスタにセットする（Ｓ２０）。その後、上述のように、Ｓ１６においてホスト５１にコマンド完了通知が返され、さらに、ライト・コマンドの実行順序の再スケジューリングを実行する（Ｓ１７）。Ｓ１９において、基準値以上の連続空き領域が見つからなかった場合、キャッシュ・マネージャ２３６は、ホスト５１へのコマンド完了通知の送信を延期することを決定し（Ｓ２１）、各ライト・データの磁気ディスク１１への書き出し順序の再スケジューリングを実行する（Ｓ２２）。
【００６０】
その後、図７に示すように、キャッシュ・マネージャ２３６は、コマンド実行マネージャ２３５に実行すべきライト・コマンドを通知する。コマンド実行マネージャ２３５は、ドライブ・インターフェース２３２に実行ライト・コマンドのライト・データを磁気ディスク１１に書き込むことを指示する。ドライブ・インターフェース２３２は、メモリ・マネージャ２３３を介して、ライト・バッファ２４１からライト・データを取得し、磁気ディスク１１に書き込むためにライト・データを転送する（Ｓ３１）。
【００６１】
ライト・バッファ２４１から磁気ディスク１１へのライト・データ書き出しに応答して、キャッシュ・マネージャ２３６は、ライト・バッファ２４１において、基準値以上の連続空き領域を検索する（Ｓ３２）。Ｓ３３において、基準値以上の連続空き領域が見つかった場合、キャッシュ・マネージャ２３６はライト・ポインタをその領域の開始位置にセットすることを決定し、それをメモリ・マネージャ２３３のレジスタにセットする（Ｓ３４）。その後、上述と同様に、ホスト５１にコマンド完了通知が返される（Ｓ３５）。Ｓ３３において、基準値以上の連続空き領域が見つからなかった場合、キャッシュ・マネージャ２３６は完了通知の送信延期を決定し、上記処理を繰り返す（Ｓ３６）。
【００６２】
図８は、ＩＯＰＳ（Input Output Per Second）とMax Response Time（ホストへのコマンド完了通知送信までの最大時間）について、本形態のライト・バッファ制御を実装したＨＤＤと、連続空き領域の検索を行わない比較例としてのＨＤＤとの比較結果を示している。図７において、Ｘ軸はホストとの間で伝送されるユーザ・データ・ブロックサイズを示している。左Ｙ軸と右Ｙ軸とは、それぞれ、ＩＯＰＳとMax Response Timeとを示している。図７から理解されるように、本形態のライト・バッファ制御を実装したＨＤＤは、比較例のＨＤＤと比較して、ＩＯＰＳを低下することなくMax Response Timeの大きな改善が認められた。
【００６３】
尚、上記の説明は、本発明の実施形態を説明するものであり、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。例えば、本形態のライト・バッファ制御を、磁気ディスク以外の記録媒体を利用するデータ記憶装置に適用することができる。
【図面の簡単な説明】
【００６４】
【図１】本実施形態に係るＨＤＤの全体構成を模式的に示すブロック図である。
【図２】本実施形態に係るライト・バッファの制御方法を説明する模式図である。
【図３】本実施形態に係るライト・バッファの制御方法を説明する模式図である。
【図４】本実施形態に係るＨＤＤにおいて、ライト・バッファ制御に関する論理構成を示すブロック図である。
【図５】本実施形態に係るＨＤＤにおいて、ライト・バッファ制御のためのライト・キャッシュ・テーブルの一例を示す図である。
【図６】本実施形態に係るライト・バッファの制御シーケンスを示すフロー・チャートである。
【図７】本実施形態に係るライト・バッファの制御シーケンスを示すフロー・チャートである。
【図８】ＩＯＰＳ（Input Output Per Second）とMax Response Timeについて、本形態のライト・バッファ制御を実装したＨＤＤと、連続空き領域の検索を行わない比較例としてのＨＤＤとの計測結果を示すグラフである。
【符号の説明】
【００６５】
１０  エンクロージャ、１１  磁気ディスク、１２  ヘッド素子部、２０  回路基板
２１  リード・ライト・チャネル、２２  モータ・ドライバ・ユニット、５１  ホスト
２３１  ホスト・インターフェース、２３２  ドライブ・インターフェース、
２３３  メモリ・マネージャ、２３４  ホスト・インターフェース・マネージャ
２３５  コマンド実行マネージャ、２３６  キャッシュ・マネージャ
２４１  ライト・バッファ、２４２  データ記憶領域、２４３  連続空き領域、
２４７  ライト・キャッシュ・テーブル、２４４  ライト・ポインタ、
２４５  リード・ポインタ
【図１】
2006172032.tif 000003
【図２】
2006172032.tif 000004
【図３】
2006172032.tif 000005
【図４】
2006172032.tif 000006
【図５】
2006172032.tif 000007
【図６】
2006172032.tif 000008
【図７】
2006172032.tif 000009
【図８】
2006172032.tif 000010