(57)【要約】【課題】リード・パフォーマンスを向上する。【解決手段】本発明の一形態において、ＨＤＤは、データをホストが指定したアドレスに格納すると共に、ＡＶデータのように連続して読み出される可能性が高い複数データを一つにまとめて連続領域に格納する。磁気ディスク１１上には、通常領域１１１と再配置領域１１２が存在する。ＨＤＤは、通常領域１１１において、複数のデータＤＢ＿０＿０〜ＤＢ＿０＿３をホストの指定アドレスに格納する。さらに、ＨＤＤは、再配置領域１１２において、複数のデータＤＢ＿０＿０〜ＤＢ＿０＿３を塊ＣＨ＿０として、連続するアドレス領域に格納する。塊データとして連続アドレス領域に格納することでリード・パフォーマンスを向上する。また、データがホストの指定アドレスに維持されているため、再配置領域内で使用されていた領域の開放処理をよりシンプルなものとすることができる。【選択図】図１
2009070430.tif 000002
【特許請求の範囲】
【請求項１】
ディスクにデータを書き込むヘッドと、
複数のライト・コマンドに対応する複数データを、前記ライト・コマンドのそれぞれが指定するディスク上のアドレスに前記ヘッドにより書き込むコントローラと、
を有し、
前記コントローラは、前記複数のライト・コマンドが指定するアドレスが設定条件を満たす場合に、前記複数のデータを一つの塊データとして連続領域に前記ヘッドにより書き込み、
前記複数のデータは前記指定アドレス及び前記連続領域の双方においてアクセス可能な状態にある、
ディスク・ドライブ装置。
【請求項２】
前記設定条件は、前記複数のライト・コマンドの指定アドレス領域が互いに離間していることを含む、
請求項１に記載のディスク・ドライブ装置。
【請求項３】
前記複数データを一時的に格納するバッファをさらに有し、
前記コントローラは、前記バッファ内において前記塊データの総データ長が基準を超えた後に、前記塊データを前記連続領域に前記ヘッドにより書き込む、
請求項１に記載のディスク・ドライブ装置。
【請求項４】
前記コントローラは、ライト・コマンドを受信する毎に、前記設定条件について判定する、
請求項１に記載のディスク・ドライブ装置。
【請求項５】
一つのライト・コマンドが指定するアドレス領域が基準を超える場合、そのライト・コマンドに対応するデータを前記指定アドレス領域のみに書きこむ、
請求項１に記載のディスク・ドライブ装置。
【請求項６】
前記コントローラは、前記連続領域を、予め設定された領域内から選択し、前記予め設定された領域の空き領域が基準に及ばない場合、前記複数データを前記指定アドレスにのみ前記ヘッドにより書き込む、
請求項１に記載のディスク・ドライブ装置。
【請求項７】
前記複数データを一時的に格納するバッファをさらに有し、
前記コントローラは、前記バッファ内で前記設定条件の判定を行う塊データの数が基準を越えた場合、前記バッファ内の複数塊データの少なくとも一部の塊データの領域を開放する、
請求項１に記載のディスク・ドライブ装置。
【請求項８】
前記コントローラは、前記連続領域に記録されている塊データが、リード・コマンドが指定するアドレス領域の一部のみを含む場合、その塊データのディスク領域を開放する、
請求項１に記載のディスク・ドライブ装置。
【請求項９】
前記コントローラは、前記連続領域を予め設定された領域内から選択し、前記予め設定された領域の空き領域が基準より少ないある場合、少なくとも一部の塊データのディスク領域を開放する、
請求項１に記載のディスク・ドライブ装置。
【請求項１０】
前記コントローラは、ライト・コマンドが指定するアドレス領域の少なくとも一部が、前記ディスク上に塊データとして記録されているデータのコマンド指定アドレスに一致する場合、その塊データのディスク領域を開放する、
請求項１に記載のディスク・ドライブ装置。
【請求項１１】
データをディスクに書き込む方法であって、
複数のライト・コマンドを受信し、
前記複数のライト・コマンドに対応する複数データを、前記ライト・コマンドのそれぞれが指定するディスク上のアドレスに書き込み、
前記複数のライト・コマンドが指定するアドレスが設定条件を満たす場合に、前記複数のデータを一つの塊データとして連続領域に書き込み、前記複数のデータは前記指定アドレス及び前記連続領域の双方においてアクセス可能な状態にある、
方法。
【請求項１２】
前記設定条件は、前記複数のライト・コマンドの指定アドレス領域が互いに離間していることを含む、
請求項１１に記載の方法。
【請求項１３】
前記複数データをバッファに一時的に格納し、
前記バッファ内において前記塊データの総データ長が基準を超えた後に、前記塊データを前記連続領域に書き込む、
請求項１１に記載の方法。
【請求項１４】
ライト・コマンドを受信する毎に、前記設定条件について判定する、
請求項１１に記載の方法。
【請求項１５】
一つのライト・コマンドが指定するアドレス領域が基準を超える場合、そのライト・コマンドに対応するデータを前記指定アドレス領域のみに書きこむ、
請求項１１に記載の方法。
【請求項１６】
前記連続領域を、予め設定された領域内から選択し、
前記予め設定された領域の空き領域が基準より少ない場合、前記複数データを前記指定アドレスのみに書き込む、
請求項１１に記載の方法。
【請求項１７】
前記複数データをバッファに一時的に格納し、
前記設定条件の判定を行う塊データの数が基準を越えている場合、前記バッファ内の複数塊データの少なくとも一部の塊データの領域を開放する、
請求項１１に記載の方法。
【請求項１８】
前記連続領域に記録されている塊データが、リード・コマンドが指定するアドレス領域の一部のみを含む場合、その塊データのディスク領域を開放する、
請求項１１に記載の方法。
【請求項１９】
前記連続領域を、予め設定された領域内から選択し、
前記予め設定された領域の空き領域が基準より少ない場合、少なくとも一部の塊データのディスク領域を開放する、
請求項１１に記載の方法。
【請求項２０】
ライト・コマンドが指定するアドレス領域の少なくとも一部が、前記ディスク上に塊データとして記録されているデータのコマンド指定アドレスに一致する場合、その塊データのディスク領域を開放する、
請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスク・ドライブ装置及びディスクへのデータ書き込み方法に関し、特に、複数データを塊データとしてまとめてディスクに書き込む装置及びデータ書き込み方法に関する。
【背景技術】
【０００２】
ディスク・ドライブ装置として、光ディスク、光磁気ディスク、あるいはフレキシブル磁気ディスクなどの様々な態様のメディアを使用する装置が知られているが、その中で、ハードディスク・ドライブ（ＨＤＤ）は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、あるいは携帯電話など、ＨＤＤの用途は、その優れた特性により益々拡大している。
【０００３】
一般に、ＨＤＤは、ホストから指定されたアドレスにデータを格納する。ＡＶ機器において使用される場合、ＨＤＤは、連続した大きな塊データを頻繁に記録し、また、それを読み出す。塊データは、コマンド毎に長さが変化するため、磁気ディスク上の一つの連続する空き領域が分断され、離間した複数の小さい空き領域が形成される。このような状態においては、本来連続するデータとして記録されるべき複数データが、磁気ディスク上において離間したアドレス位置（領域）に記録されることになる。
【０００４】
ＨＤＤは、ホストからのリード・コマンドに応答して、規定時間内にデータをホストに転送することが要求される。特に、ＡＶ機器向けのＨＤＤは、短い規定時間内にデータを読み出す必要がある。しかし、上述のように、連続して読み出されるデータが離散して磁気ディスク上で格納されている場合、これらのデータの読み出しにより多くの時間が必要される。このため、ＨＤＤのリードにおけるパフォーマンスが低下する、あるいはリード・コマンドに対するタイム・オーバーが起こる可能性が増加する。
【０００５】
このような問題を解決する方法として、複数のデータ・ストリームをディスク上の連続する領域に格納することが提案されている（例えば特許文献１を参照）。連続して読み出される可能性が高い複数データを連続領域に格納しておくことによって、読み出し時間を短縮し、リード・パフォーマンスを向上させることができる。
【特許文献１】特開２００６−４８８７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述のように、ホストは、データを格納するアドレスを指定する。また、データ・リードにおいては、データ・ライトにおいて指定したアドレスを使用して、読み出すべきデータを指定する。このため、ＨＤＤが離散したアドレスのデータを一つにまとめて連続領域に格納する場合、その再配置先のアドレスとホストが指定したアドレスとを管理することが必要となる。ＨＤＤは、この管理のためのデータを磁気ディスクあるいはＥＰＰＲＯＭなどの不揮発性メモリに保存するが、ＨＤＤは、この管理データが破損した場合に対応することができることが要求される。
【０００７】
また、データを連続領域に再配置する場合、その連続領域はホストが指定することができない領域であることが好ましい。ホストが指定できる領域であると、磁気ディスク上のアドレスの管理が複雑化するからである。しかし、この再配置領域をいたずらに増加させることは、ホストの使用領域を減少させ、ＨＤＤの容量を低下させることになる。従って、限られた再配置領域を有効に利用すると共に、再配置領域の管理を複雑化させないことが重要である。
【課題を解決するための手段】
【０００８】
本発明の一態様に係るディスク・ドライブ装置は、ディスクにデータを書き込むヘッドと、複数のライト・コマンドに対応する複数データを、前記ライト・コマンドのそれぞれが指定するディスク上のアドレスに前記ヘッドにより書き込むコントローラとを有する。前記コントローラは、前記複数のライト・コマンドが指定するアドレスが設定条件を満たす場合に、前記複数のデータを一つの塊データとして連続領域に前記ヘッドにより書き込む。前記複数のデータは前記指定アドレス及び前記連続領域の双方においてアクセス可能な状態にある。これによって、リード・パフォーマンスを向上すると共に、データの保全性を高める、あるいはデータ管理を簡便化することができる。
【０００９】
前記設定条件は、前記複数のライト・コマンドの指定アドレス領域が互いに離間していることを含むことが好ましい。これによって、より効率性を高めることができる。あるいは、前記複数データを一時的に格納するバッファをさらに有し、前記コントローラは、前記バッファ内において前記塊データの総データ長が基準を超えた後に、前記塊データを前記連続領域に前記ヘッドにより書き込むことが好ましい。これによって、パフォーマンスの向上とデータ容量の低下抑制を実現できる。
【００１０】
前記コントローラは、ライト・コマンドを受信する毎に、前記設定条件について判定することが好ましい。これによって、処理を効率化することができる。あるいは、一つのライト・コマンドが指定するアドレス領域が基準を超える場合、そのライト・コマンドに対応するデータを前記指定アドレス領域のみに書きこむことが好ましい。これによって、記録領域の使用を効率化することができる。
【００１１】
前記コントローラは、前記連続領域を、予め設定された領域内から選択し、前記予め設定された領域の空き領域が基準に及ばない場合、前記複数データを前記指定アドレスにのみ前記ヘッドにより書き込む。これによってホストが使用可能な容量を確保しつつ、リード・パフォーマンスの向上を図ることができる。
【００１２】
前記複数データを一時的に格納するバッファをさらに有し、前記コントローラは、前記バッファ内で前記設定条件の判定を行う塊データの数が基準を越えた場合、前記バッファ内の複数塊データの少なくとも一部の塊データの領域を開放することが好ましい。これによって、塊データとすべきでないデータを塊データとすることを避けることができる。
【００１３】
前記コントローラは、前記連続領域に記録されている塊データが、リード・コマンドが指定するアドレス領域の一部のみを含む場合、その塊データのディスク領域を開放することが好ましい。これによって、リード・パフォーマンスを向上させつつ、ディスクの記録容量を効率的に使用することができる。
【００１４】
前記コントローラは、前記連続領域を予め設定された領域内から選択し、前記予め設定された領域の空き領域が基準より少ないある場合、少なくとも一部の塊データのディスク領域を開放することが好ましい。これによって、ホストの使用可能容量を確保しつつ、リード・パフォーマンスをさらに向上させることができる。
【００１５】
前記コントローラは、ライト・コマンドが指定するアドレス領域の少なくとも一部が、前記ディスク上に塊データとして記録されているデータのコマンド指定アドレスに一致する場合、その塊データのディスク領域を開放することが好ましい。これによって、リード・パフォーマンスを向上させつつ、ディスクの記録容量を効率的に使用することができる。
【００１６】
本発明の他の態様は、データをディスクに書き込む方法である。この方法は、複数のライト・コマンドを受信する。前記複数のライト・コマンドに対応する複数データを、前記ライト・コマンドのそれぞれが指定するディスク上のアドレスに書き込む。前記複数のライト・コマンドが指定するアドレスが設定条件を満たす場合に、前記複数のデータを一つの塊データとして連続領域に書き込む。前記複数のデータは前記指定アドレス及び前記連続領域の双方においてアクセス可能な状態にある。これによって、リード・パフォーマンスを向上すると共に、データの保全性を高める、あるいはデータ管理を簡便化することができる。
【発明の効果】
【００１７】
本発明によれば、データ保全性を維持しつつディスク・ドライブ装置のリード・パフォーマンスを向上することができ、リード・パフォーマンス向上のためのデータ管理処理の効率性を高めることができる。
【発明を実施するための最良の形態】
【００１８】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、必要に応じて重複説明は省略されている。以下においては、ディスク・ドライブ装置の一例であるハードディスク・ドライブ（ＨＤＤ）について説明する。
【００１９】
本形態のＨＤＤは、ホストからのデータを、ホストが指定したアドレスに格納すると共に、ＡＶデータのように連続して読み出される可能性が高い複数データを一つにまとめ、連続領域に格納する。例えば、図１に示すように、磁気ディスク１１上には、ホストがアドレス指定することにより使用する通常領域１１１と、データを再配置するための再配置領域１１２が存在する。ＨＤＤは、ホストから複数のデータ（データ・ブロック）ＤＢ＿０＿０〜ＤＢ＿０＿３を受信する。
【００２０】
ＨＤＤは、通常領域１１１において、複数のデータＤＢ＿０＿０〜ＤＢ＿０＿３をホストの指定アドレスに格納する。各データは、それぞれ異なるライト・コマンドに対応する。図１において、データＤＢ＿０＿１とデータＤＢ＿０＿２のアドレスは連続しているが、データＤＢ＿０＿０とデータＤＢ＿０＿１のアドレスは離れている。同様に、データＤＢ＿０＿０とデータＤＢ＿０＿１のアドレスは離れている。さらに、ＨＤＤは、再配置領域１１２において、複数のデータＤＢ＿０＿０〜ＤＢ＿０＿３を塊ＣＨ＿０として、連続するアドレス領域に格納する。
【００２１】
所定の複数データを塊データとして連続アドレス領域に格納することで、それらのデータのリード・パフォーマンスを向上することができる。また、連続領域に再配置された複数データは、ホストの指定アドレスに維持される。このため、ＨＤＤが再配置アドレスについての情報を失った場合であっても、ホストからのリード・コマンドに応じたデータを送信することができる。また、データがホストの指定アドレスに維持されているため、再配置領域内で使用されていた領域の開放処理をよりシンプルなものとすることができる。
【００２２】
ＨＤＤは、再配置領域１１２にデータを格納するために、格納すべき複数データの判定、再配置領域１１２へのデータの格納、あるいは再配置領域１１２の管理などを行うことが必要となる。これらの処理について詳細に説明する前に、まず、ＨＤＤの全体構成を説明する。図２は、ＨＤＤ１の全体構成を模式的に示すブロック図である。ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を備えている。回路基板２０上には、リード・ライト・チャネル（ＲＷチャネル）２１、モータ・ドライバ・ユニット２２、ハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（ＨＤＣ／ＭＰＵ）２３及び半導体メモリのＲＡＭ２４などの各回路を有している。エンクロージャ１０内において、スピンドル・モータ（ＳＰＭ）１４は所定の角速度で磁気ディスク１１を回転する。磁気ディスク１１は、データを記憶するディスクである。ＨＤＣ／ＭＰＵ２３からの制御データに従って、モータ・ドライバ・ユニット２２がＳＰＭ１４を駆動する。
【００２３】
各ヘッド・スライダ１２は、磁気ディスク上を浮上するスライダと、スライダに固定され磁気信号と電気信号との間の変換（データの読み書き）を行うヘッド素子部とを備えている。各ヘッド・スライダ１２はアクチュエータ１６の先端部に固定されている。アクチュエータ１６はボイス・コイル・モータ（ＶＣＭ）１５に連結され、回動軸を中心に回動することによって、ヘッド・スライダ１２を回転する磁気ディスク１１上においてその半径方向に移動する。モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従ってＶＣＭ１５を駆動する。アーム電子回路（ＡＥ：Arm Electronics）１３は、ＨＤＣ／ＭＰＵ２３からの制御データに従って複数のヘッド素子部１２の中から磁気ディスク１１にアクセス（リードもしくはライト）するヘッド・スライダ１２を選択し、リード／ライト信号の増幅を行う。
【００２４】
ＲＷチャネル２１は、リード処理において、ＡＥ１３から取得したリード信号からサーボ・データ及びユーザ・データを抽出し、デコード処理を行う。デコード処理されたデータは、ＨＤＣ／ＭＰＵ２３に供給される。また、ＲＷチャネル２１は、ライト処理において、ＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、さらに、コード変調されたデータをライト信号に変換してＡＥ１３に供給する。ＨＤＣ／ＭＰＵ２３において、ＨＤＣはロジック回路であり、ＭＰＵはＲＡＭ２４にロードされたファームウェアに従って動作する。ＨＤＣ／ＭＰＵ２３はコントローラの一例であり、ヘッド・ポジショニング制御、インターフェース制御、ディフェクト管理などのデータ処理に関する必要な処理の他、ＨＤＤ１の全体制御を実行する。
【００２５】
図３に示すように、本形態のＨＤＤ１は、データ書き込み処理Ｐ１において、所定の複数データをホストの指定アドレスに格納する（Ｐ１１）と共に、再配置領域も格納する（再配置処理Ｐ１５）。なお、一つのデータは、一つのライト・コマンドが特定するデータである。ＨＤＤ１は、連続して読み出される可能性が高い複数データを塊データと判定し（塊判定処理Ｐ１２）、その複数のデータからなる塊データを再配置領域１１２に格納する。また、ＨＤＤ１は、再配置領域１１２内において不要と判定したデータの領域を開放する（再配置領域開放処理Ｐ１４）。開放された領域には、新たな塊データを格納することができる。本形態のＨＤＤ１は、塊データについての判定をバッファ内で行う。このため、判定が終了した後は、ＨＤＤ１は、新たなデータを格納することができように、再配置のためにデータを格納していたバッファ領域を開放する（バッファ開放処理Ｐ１３）。
【００２６】
図３に示すように、データの読み出し処理Ｐ２において、コマンドが指定したデータが通常領域１１１のみにある場合、ＨＤＤ１は、指定されたアドレスからデータを読み出す（Ｐ２１）。指定されたデータが再配置領域１１２内にある場合、ＨＤＤ１は、再配置領域１１２からデータを読み出す（Ｐ２２）。このとき、ＨＤＤ１は、再配置領域１１２内において不要と判定したデータの領域を開放する（再配置領域開放処理Ｐ２３）。
【００２７】
塊データの再配置に関する上述の各処理において、ＨＤＣ／ＭＰＵ２３は所定のテーブルを参照する。具体的には、図４（ａ）に示すように、ＨＤＣ／ＭＰＵ２３は、再配置テーブル２４１、空き領域テーブル２４２、塊判定テーブル２４３を使用する。これらテーブルは、磁気ディスク１１あるいはＲＯＭ（不図示）などの保存されており、ＨＤＤ１の動作中はＲＡＭ２４内に展開される。ＨＤＣ／ＭＰＵ２３は、ホスト５１から転送されたデータを一時的にバッファ２４５に格納する。ＨＤＣ／ＭＰＵ２３は、磁気ディスク１１に書き込むために、バッファ２４５に格納されているデータをＲＷチャネル２１に転送する。
【００２８】
また、ＨＤＣ／ＭＰＵ２３は、ライト・コマンドの指定アドレスへデータを書き込んだ後、塊判別を行う一連の複数データをバッファ２４５内に保持する。塊と判定された複数データは、再配置領域１１２に書き込まれる。図４（ｂ）に示すように、ライト・コマンドは、コマンドの種類を示すコマンド・タイプ、ストリームＩＤ、データを書き込む開始アドレスであるスタートＬＢＡ（Logical Block Address）、そしてデータ長を示す各フィールドを有している。ＨＤＣ／ＭＰＵ２３は、ストリームＩＤを参照することで、各コマンドのデータが同一の塊に属するか否かを判定することができる。なお、ストリームＩＤを有するのはストリーム・コマンドのみで、他のタイプのコマンドはそれを有していない。
【００２９】
次に、図５のフローチャート及び図４のブロック図を参照しつつ、塊判定処理Ｐ１２及びそれに付随するバッファ開放処理Ｐ１３について説明する。ＨＤＣ／ＭＰＵ２３は、ホスト５１からライト・コマンドを受信し、さらに受信したデータをバッファ２４５に格納する（Ｓ１０１）。ＨＤＣ／ＭＰＵ２３は、再配置テーブル２４１を参照し、ライト・コマンドの指定するＬＢＡの一部もしくは全部が、再配置テーブル２４１に登録されているかを特定する（Ｓ１０２）。
【００３０】
図６に示すように、再配置テーブル２４１は、再配置領域１１２に記録されているデータに関する情報を格納している。具体的には、再配置テーブル２４１は、塊データについての情報を、一つのコマンドに対応したデータ（データ・ブロック）毎に保存している。つまり、各エントリが、一つのライト・コマンドのデータの情報を有している。各エントリは、複数のデータからなる塊データを特定するＩＤ、対応するライト・コマンドの指定スタート・アドレスであるソース・スタートＬＢＡ、再配置先のスタートＬＢＡ、そしてデータ長を示す。また、各塊ＩＤに対して、ライト・タイムとリード回数が登録されている。これらについては、後に説明する。
【００３１】
ＨＤＣ／ＭＰＵ２３は、受信したライト・コマンドのスタートＬＢＡとデータ長で特定される範囲内のＬＢＡが、再配置テーブル２４１内のいずれかのエントリに含まれるか判定する。指定されたＬＡＢのいずれかが再配置テーブル２４１に登録されている場合（Ｓ１０２におけるＹ）、ＨＤＣ／ＭＰＵ２３は、該当する塊ＩＤの全エントリを開放する（Ｓ１０３）。指定ＬＢＡが再配置テーブル２４１に登録されている場合、その塊データに変更が生じる。ＨＤＣ／ＭＰＵ２３は、変更のあった塊データは今後連続して読み出されることはなく、もはや塊データではないと判定し、そのデータを格納している再配置領域を開放する。具体的には、ＨＤＣ／ＭＰＵ２３は、再配置テーブル２４１においてそのエントリを削除、あるいは、有効フラグ（不図示）を無効設定する。
【００３２】
ＨＤＣ／ＭＰＵ２３は、通常領域１１１内のライト・コマンドが指定するアドレス（ＬＢＡ）にデータを書き込む（Ｓ１０４）。ＨＤＣ／ＭＰＵ２３は、ライト・コマンドを参照して、ストリーム・コマンドであるか判定し、さらに、そのストリームＩＤを確認する（Ｓ１０５）。受信したライト・コマンドがストリーム・コマンドでない場合（Ｓ１０５におけるＮ）、ＨＤＣ／ＭＰＵ２３は、バッファ２４５において判定中のデータを格納している領域を開放する（Ｓ１０６）。これにより、受信したコマンドに対応した処理は終了する（Ｓ１０７）。
【００３３】
受信したライト・コマンドがストリーム・コマンドである場合（Ｓ１０５におけるＹ）、ＨＤＣ／ＭＰＵ２３は、空き領域テーブル２４２を参照して、再配置領域１１２に新たな塊データを格納するための領域が空いているかを判定する（Ｓ１０８）。図７に示すように、空き領域テーブル２４２は、再配置領域１１２内における空き領域を特定する情報を有している。具体的には、各空き領域のスタートＬＢＡとエンドＬＢＡとを格納している。好ましくは、ＨＤＣ／ＭＰＵ２３は、バッファ・サイズと空き領域とを比較する（Ｓ１０８）。
【００３４】
本形態のＨＤＤ１は、バッファ２４５内にデータを保持した状態で塊判定を行い、塊データをバッファ２４５から磁気ディスク１１に書き込む。従って、塊データの最大サイズはバッファ２４５の容量以下であり、バッファ・サイズを基準として空き領域の判定を行うことができる。基準値としてバッファ・サイズを使用することは、判定処理をよりシンプルなものとする。なお、バッファ・サイズではなく、他の予め設定された基準値を使用してもよい。また、基準値を使用した判定において、基準値を含む場合（基準値以上もしくは以下）と基準値を含まない場合（基準値より大きいもしくは小さい）との間には、単に基準値の取り方の違いがあるに過ぎず、それらは判定としては同一である。
【００３５】
所定容量以上の空き領域が存在しない場合（Ｓ１０８におけるＮ）、ＨＤＣ／ＭＰＵ２３は、そのコマンドのデータのバッファ領域を開放し（Ｓ１０６）、受信したコマンドに対応した処理を終了する（Ｓ１０７）。所定容量以上の空き領域が存在する場合（Ｓ１０８におけるＹ）、ＨＤＣ／ＭＰＵ２３は、さらに、コマンド指定のアドレスが直前のコマンド指定のアドレスと連続しているか判定する（Ｓ１０９）。
【００３６】
コマンド指定アドレスが連続している場合（Ｓ１０９におけるＹ）、通量領域１１１内でも連続して書き込まれるため、ＨＤＣ／ＭＰＵ２３は、再配置することなくバッファを開放して（Ｓ１０６）、処理を終了する（Ｓ１０７）。開放するバッファ領域は、今回及び直前のデータに加え、これらと同一のストリームＩＤを有し塊判定の途中にあった複数データも含むことが好ましい。ここで、処理効率化の点からは、データの連続性をコマンド毎に判定する、つまり、塊データを構成する全てのデータのＬＢＡが離間していることが好ましい。しかし、図１の例に示したように、塊データを構成する一部のデータ・ブロックのＬＢＡが連続することを許容してもよい。
【００３７】
受信したコマンドの指定アドレスが直前のコマンドと連続してない場合（Ｓ１０９におけるＮ）、ＨＤＣ／ＭＰＵ２３は、さらにコマンド指定アドレスのデータ長と基準値Ｙを比較する（Ｓ１１０）。基準値は設計により適切な値を選択する。データ長がＹセクタ（セクタは磁気ディスク１１のアドレス単位）以上である場合（Ｓ１１０におけるＹ）は、再配置処理せずとも、パフォーマンスの低下は小さい。また、再配置領域１１２を有効に利用するため、データ長が大きい場合は、ＨＤＣ／ＭＰＵ２３は、再配置することなくそのコマンドのバッファを開放して（Ｓ１０６）、処理を終了する（Ｓ１０７）。このときのバッファ開放（Ｓ１０６）においては、Ｙセクタ以上のライト・コマンドと同じストリームＩＤを有するコマンドのデータのバッファ領域も開放することが好ましい。
【００３８】
データ長がＹセクタより小さい場合（Ｓ１１０におけるＮ）、ＨＤＣ／ＭＰＵ２３は、このコマンドのストリームＩＤが判別中の値であるかを、塊判定テーブル２４３を参照して特定する（Ｓ１１１）。上述のように、ＨＤＣ／ＭＰＵ２３は、同一の塊データを構成するデータをストリームＩＤにより特定する。例えば、ストリームＩＤ０〜７が定義されており、同一の塊データに対応するライト・コマンドは同一のストリームＩＤを有する。
【００３９】
図８に示すように、塊判定テーブル２３４は、各ストリームＩＤに対応して総データ長とライト・タイムを格納している。総データ長は、バッファ２４５に保持されている同一ストリームＩＤのデータの長である。また、ライト・タイムは、対応ストリームＩＤの最後のライト・コマンドを受信したタイミングである。総データ長が０ではないエントリが判定中のストリームＩＤである。
【００４０】
受信したライト・コマンドのストリームＩＤが塊判定中である場合（Ｓ１１１におけるＹ）、ＨＤＣ／ＭＰＵ２３は、塊判定テーブル２３４内の対応エントリにおいて、総データ長にデータ長を加算し、さらに、ライト・タイムを更新する（Ｓ１１２）。ＨＤＣ／ＭＰＵ２３は、さらに、加算された総データ長（セクタ数）と基準値Ｙとを比較する（Ｓ１１３）。この基準値Ｙは、工程１１０で使用したＹと同一の値であることが好ましい。一つの塊データの最低データ長を特定するものであるからである。しかし、これらは異なる値であってもよい。なお、典型的にＹは自然数である。
【００４１】
総データ長がＹセクタ以上である場合（Ｓ１１３におけるＹ）、ＨＤＣ／ＭＰＵ２３は、塊判定テーブル２３４におけるその塊データに関する情報をクリアし（Ｓ１１４）、再配置処理を行う（Ｓ１１５）。再配置処理については後に詳述する。再配置処理の後、ＨＤＣ／ＭＰＵ２３は、その塊データを格納しているバッファ２４５の領域を開放する。
【００４２】
工程Ｓ１１１において、塊判定テーブル２３４が受信したライト・コマンドのストリームＩＤが判定中ではないことを示している場合（Ｓ１１１におけるＮ）、ＨＤＣ／ＭＰＵ２３は、新規のエントリを塊判定テーブル２３４に登録する。ストリームＩＤの数は限られており、それらは巡回的に使用されるため、異なる塊データを構成するデータ（ライト・コマンド）に、同一のストリームＩＤが対応付けられることを回避することが必要となる。
【００４３】
そこで、ＨＤＣ／ＭＰＵ２３は、塊判定テーブル２３４を参照して、判定中のストリームＩＤの数を特定する（Ｓ１１７）。判定中のストリームＩＤがＸ＋１以上ある場合（Ｓ１１７におけるＹ）、ＨＤＣ／ＭＰＵ２３は、塊判定テーブル２３４において最もライト・タイムの古いストリームＩＤのエントリをクリアし（Ｓ１１８）、今回のストリームＩＤを塊判定テーブル２３４に新たに追加する（Ｓ１１９）。Ｘは使用するストリームＩＤの数よりも小さい自然数であり、設計により適切な値が設定される。バッファ２４５内に格納されているデータは維持され、受信したライト・コマンドの処理が終了する（Ｓ１２０）。工程Ｓ１１７において、判定中のストリームＩＤがＸ以下である場合（Ｓ１１７におけるＮ）、ＨＤＣ／ＭＰＵ２３は、工程Ｓ１１２以下の各工程を実行する。
【００４４】
次に、再配置処理（Ｓ１１５）について、図９のフローチャートを参照して説明する。ＨＤＣ／ＭＰＵ２３は、複数コマンドのデータからなる塊データのデータ長が所定データ長を越えると、その塊データを再配置領域１１２に書き込む。まず、ＨＤＣ／ＭＰＵ２３は、空き領域テーブル２４２を参照して、磁気ディスク１１に書き込む塊データ長の領域を選択する（Ｓ２０１）。ＨＤＣ／ＭＰＵ２３は、塊データに新しい塊ＩＤを割り当て（Ｓ２０２）、再配置テーブル２４１に新しい塊データの情報を追加する（Ｓ２０３）。
【００４５】
ＨＤＣ／ＭＰＵ２３は再配置処理中フラグをＴＲＵＥにセットして磁気ディスク１１に保存する（Ｓ２０４）。保存先は、他の不揮発性メモリでもよい。この点は、以下の処理において同様である。再配置処理中フラグがＴＲＵＥである場合、再配置テーブル２４１が更新途中であることを示す。このフラグによって、予期しない電源遮断が起きた場合でも、誤った内容の再配置テーブル２４１を使用することがなくなる。
【００４６】
ＨＤＣ／ＭＰＵ２３は、再配置領域１１２内の再配置先に塊データを書き込む（Ｓ２０５）。書き込まれる領域は連続領域である。なお、欠陥セクタが存在する場合は、それらをスキップして連続する領域とすればよい。ＨＤＣ／ＭＰＵ２３は、さらに、更新した空き領域テーブル２４２と再配置テーブル２４１とを磁気ディスク１１に保存する。最後に、ＨＤＣ／ＭＰＵ２３は、ＦＵＬＳＥを示す再配置処理中フラグを保存する（Ｓ２０７）。この再配置処理中フラグは、各テーブルの更新が完了していることを示す。
【００４７】
なお、再配置領域１１２として、磁気ディスク１１上のいずれの領域を使用してもよい。また、複数の分散した領域を再配置領域として使用することができる。しかし、再配置領域１１２が連続領域として使用されることから、再配置領域１１２は連続する一つの領域で構成されていることが好ましい。図１のように、再配置領域１１２を記録面の再内周に形成する他、最外周、あるいは記録面中央に形成することができる。
【００４８】
次に、再配置領域１１２内の一部もしくは全部の領域を開放する処理について説明する。本形態のＨＤＤ１は、再配置する場合においても、ライト・コマンドが指定するアドレスにデータを書き込む。そのため、再配置領域１１２を開放しても、ホスト５１から受信したデータが消失することがない。そのため、再配置領域１１２の開放処理を簡便な方法により行うことができる。
【００４９】
まず、リード・コマンドの指定アドレスに応じて再配置領域１１２を開放する処理を説明する。図１０（ａ）のフローチャートに示すように、ＨＤＣ／ＭＰＵ２３は、ホスト５１からリード・コマンドを受信する（Ｓ３０１）。ＨＤＣ／ＭＰＵ２３は、再配置テーブル２４１を参照して、リード・コマンドの指定ＬＢＡ領域の全てが、同一の塊データ内に含まれるかを判定する（Ｓ３０２）。図１０（ｂ）に示すように、指定ＬＢＡ領域の全てが同一の塊データ内に含まれる場合（Ｓ３０２におけるＹ）、ＨＤＣ／ＭＰＵ２３は、再配置先からデータを読み出す（Ｓ３０５）。図１０（ｂ）〜（ｄ）において、ＣＨは塊データのソースＬＢＡ領域を、ＤＢはコマンド指定のＬＢＡ領域を示している。
【００５０】
一方、指定ＬＢＡ領域の一部が同一の塊データ内に含まれていない場合（Ｓ３０２におけるＮ）、ＨＤＣ／ＭＰＵ２３は、再配置領域１１２において、その指定ＬＢＡ領域の一部を含む塊データの領域を開放する（Ｓ３０３）。具体的には、ＨＤＣ／ＭＰＵ２３は、再配置テーブル２４１の該当エントリをクリアし、さらに、空き領域テーブル２４２を更新する。なお、テーブル更新においては、上述のようにテーブル更新中フラグを使用することで、電源遮断による更新途中における処理の中断に対応することができる。さらに、ＨＤＣ／ＭＰＵ２３は、通常領域１１１内におけるリード・コマンドが指定するアドレスからデータを読み出す（Ｓ３０４）。
【００５１】
再配置先からデータを読み出す場合、データを連続して読み出すことができるので、パフォーマンスが向上する。また、上述のように、リード・コマンドが指定するアドレスの一部が同一の塊データ内に含まれない場合、つまり、一部の領域が他の塊データ内に含まれる（図１０（ｂ））、あるいはいずれの塊データにも含まれない場合（図１０（ｃ））、指定アドレス領域を含む全ての塊データのディスク領域が開放される。このような場合、これら塊データは、ホスト５１において塊データとして使用されていないと考えられる。このため、対応する領域を開放することで、再配置領域１１２をより有効に利用することができる。
【００５２】
次に、再配置領域１１２の空き領域が少ない場合における、再配置領域１１２の開放処理を説明する。図１１のフローチャートに示すように、Ｔ秒以上ホスト５１からコマンドを受信していない場合（Ｓ４０１）、ＨＤＣ／ＭＰＵ２３は、空き領域テーブル２４２を参照して、再配置領域１１２の空き領域について判定を行う（Ｓ４０２）。工程Ｓ４０１は、開放処理がホスト５１への対応を阻害しないようにするための工程であり、省略してもよい。空き領域が規定のＳセクタ以上ある場合（Ｓ４０２におけるＹ）、ＨＤＣ／ＭＰＵ２３は開放処理を行うことなくこのフローを終了する（Ｓ４０３）。
【００５３】
空き領域が規定のＳセクタ未満（Ｓは典型的には自然数）である場合（Ｓ４０２におけるＮ）、最近のＮ個の塊データを除いた塊データの内、最もリード頻度の最も低い塊データの領域を開放する（Ｓ４０４）。開放方法は、図１０の工程Ｓ３０３と同様である。Ｎとしては、設計により適切な値が選択される。ＨＤＣ／ＭＰＵ２３は、再配置テーブル２４１のリード回数を参照することで、各塊データのリード頻度を特定することができる。
【００５４】
このように、より古い塊データからリード頻度の低い塊データの領域を開放することで、今後アクセスされる可能性が低い塊データに代えて、新たな塊データを再配置領域１１２に書き込むことができる。これにより、再配置領域１１２がより有効に利用され、リード・パフォーマンスを向上させることができる。なお、Ｎを０と設定する、あるいは、リード頻度が最低ではなく、設定された基準に及ばない塊データのディスク領域を開放するようにしてもよい。
【００５５】
次に、上記テーブルのロード及び保存処理について説明する。図１２に示すように、ＨＤＤ１の電源が投入されると、ＨＤＣ／ＭＰＵ２３は、通常の初期化処理を開始する（Ｓ５０１）。ＨＤＣ／ＭＰＵ２３は、さらに、磁気ディスク１１から再配置処理フラグ、空き領域テーブル２４２、再配置テーブル２４１をＲＡＭ２４にロードする。塊判定テーブル２４３はバッファ２４５管理に使用されるため、磁気ディスク１１には保存されない。
【００５６】
ＨＤＣ／ＭＰＵ２３は、再配置処理フラグの設定を確認する（Ｓ５０２）。再配置処理フラグがＦＡＵＬＳＥである場合（Ｓ５０２におけるＮ）、再配置処理及び空き領域設定が完了していることを示しているため、ＨＤＣ／ＭＰＵ２３はコマンド受付を開始する（Ｓ５０４）。
【００５７】
再配置処理フラグがＴＲＵＥである場合（Ｓ５０２におけるＹ）、再配置処理あるいは空き領域設定処理が中断したことを意味するので、ＨＤＣ／ＭＰＵ２３は、空き領域テーブル２４２、再配置テーブル２４１をＲＡＭ２４上で初期化してクリアする（Ｓ５０５）。そして、ＨＤＣ／ＭＰＵ２３はこれらのテーブルを磁気ディスク１１に保存する（Ｓ５０６）して、コマンド受付を開始する（Ｓ５０４）。
【００５８】
テーブルの磁気ディスク１１への保存（Ｓ５０６）は、以下のフローに従う。図１３に示すように、ＨＤＣ／ＭＰＵ２３は、ＴＲＵＥを示す再配置処理フラグを磁気ディスク１１に保存する（Ｓ６０１）。その後、新しい空き領域テーブル２４２、再配置テーブル２４１を磁気ディスク１１に保存する（Ｓ６０２）。最後に、ＨＤＣ／ＭＰＵ２３は、保存されている再配置処理フラグをＦＡＵＬＳＥに設定する（Ｓ６０３）。
【００５９】
以上、本発明について好ましい態様を使用して説明したが、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態においては、ＨＤＤを例にとって説明したが、光ディスクや光磁気ディスクなど他のディスクを使用するディスク・ドライブ装置、あるいはそのディスクを着脱可能なディスク・ドライブ装置に本発明を適用することができる。
【図面の簡単な説明】
【００６０】
【図１】本実施形態において、複数のデータを塊データとして記録する様子を模式的に示す図である。
【図２】本実施の形態にかかるハードディスク・ドライブの全体構成を模式的に示すブロック図である。
【図３】本実施の形態において、塊データの再配置処理に関連する処理を示す図である。
【図４】本実施の形態において、塊データの再配置処理を実行する機能構成要素を模式的に示すブロック図である。
【図５】本実施の形態において、塊データの判定処理の流れを示すフローチャートである。
【図６】本実施の形態に係る再配置テーブルのテーブル構成の一例を示す図である。
【図７】本実施の形態に係る空き領域テーブルのテーブル構成の一例を示す図である。
【図８】本実施の形態に係る塊判定テーブルのテーブル構成の一例を示す図である。
【図９】本実施の形態において、塊データの再配置処理の流れを示すフローチャートである。
【図１０】本実施の形態において、リード・コマンドの指定アドレスに応じて再配置領域を開放する処理の流れを示すフローチャートである。
【図１１】本実施の形態において、再配置領域を開放する他の処理の流れを示すフローチャートである。
【図１２】本実施の形態において、電源投入時における再配置処理のためのテーブルをロードする処理の流れを示すフローチャートである。
【図１３】本実施の形態において、再配置処理のためのテーブルを保存する処理の流れを示すフローチャートである。
【符号の説明】
【００６１】
１  ハードディスク・ドライブ、１０  筺体、１１  磁気ディスク
１２  ヘッド・スライダ、１３  アーム・エレクトロニクス、１４  スピンドル・モータ
１５  ボイス・コイル・モータ、１６  アクチュエータ、２０  回路基板
２１  ＲＷチャネル、２２  モータ・ドライバ・ユニット
２３  ハードディスク・コントローラ／ＭＰＵ、２４  ＲＡＭ、２４１  再配置テーブル
２４２  空き領域テーブル、２４３  塊判定テーブル、２４５  バッファ
【図１】
2009070430.tif 000003
【図２】
2009070430.tif 000004
【図３】
2009070430.tif 000005
【図４】
2009070430.tif 000006
【図５】
2009070430.tif 000007
【図６】
2009070430.tif 000008
【図７】
2009070430.tif 000009
【図８】
2009070430.tif 000010
【図９】
2009070430.tif 000011
【図１０】
2009070430.tif 000012
【図１１】
2009070430.tif 000013
【図１２】
2009070430.tif 000014
【図１３】
2009070430.tif 000015