(57)【要約】【課題】不揮発性メモリを用いることの弱点を補って、データの信頼性を高める。【解決手段】ヘッド１２によりデータがリード／ライトされるディスク１１には、ホストから指定されるデータがライトされるべき領域とは別の特定領域（バックアップ領域１１）が予め確保されている。ＣＰＵ２０は、ディスク１１にライトされるべきデータを当該ディスク１１に対するよりも優先してライトするのに用いられる不揮発性メモリ２２に記憶されているデータを、ディスク１１のバックアップ領域１１１にライトする。【選択図】      図１
2008140459.tif 000002
【特許請求の範囲】
【請求項１】
書き換えが可能な不揮発性メモリと、
ヘッドによりデータがリード／ライトされるディスクであって、前記不揮発性メモリに記憶されているデータを記憶するための、当該データがライトされるべき領域とは別の特定領域が予め確保されたディスクと、
ホストから要求された前記ディスクにライトされるべきデータを、前記ディスクに対するよりも優先して前記不揮発性メモリにライトするデータライト手段と、
前記不揮発性メモリに記憶されているデータを前記ディスクの前記特定領域にライトする特定領域操作手段と
を具備することを特徴とするハイブリッドディスク記憶装置。
【請求項２】
前記特定領域操作手段は、前記不揮発性メモリに記憶されているデータを前記ディスクの前記特定領域内に連続的に配置することを特徴とする請求項１記載のハイブリッドディスク記憶装置。
【請求項３】
前記特定領域操作手段は、前記不揮発性メモリに記憶されているデータを前記ディスクの前記特定領域にライトする際に、当該データが前記ディスクにライトされるべきアドレスの順に当該データを並び替えて前記特定領域にライトすることを特徴とする請求項２記載のハイブリッドディスク記憶装置。
【請求項４】
前記ディスクの前記特定領域は、前記不揮発性メモリに記憶されているデータをバックアップするためのバックアップ領域として用いられ、
前記特定領域操作手段は、前記不揮発性メモリに記憶されているデータのうち前記ディスクに記憶されていないデータを少なくとも含むデータをバックアップ対象データとして前記ディスクの前記特定領域にコピーするための、当該特定領域に対する当該バックアップ対象データのライトを含む操作によって、当該バックアップ対象データを前記ディスクの前記特定領域にバックアップする
ことを特徴とする請求項１記載のハイブリッドディスク記憶装置。
【請求項５】
ホストから要求された前記ディスクからリードされるべきデータが前記不揮発性メモリに記憶されている場合、当該不揮発性メモリから目的とするデータをリードする第１のリード手段と、
前記不揮発性メモリからリードされたデータが正常でなく、且つ当該リードされたデータが前記ディスクの前記特定領域にバックアップされている場合に、前記正常でないデータに代えて前記特定領域にバックアップされているデータをリードする第２のリード手段と
を更に具備することを特徴とする請求項４記載のハイブリッドディスク記憶装置。
【請求項６】
前記正常でない前記不揮発性メモリのデータを、当該データに代えて前記特定領域からリードされたデータで上書きすることにより正常なデータに復旧する復旧手段を更に具備することを特徴とする請求項５記載のハイブリッドディスク記憶装置。
【請求項７】
前記ディスクの前記特定領域は、前記不揮発性メモリの容量を拡張するための拡張領域として用いられ、
前記特定領域操作手段は、前記不揮発性メモリに記憶されているデータを前記ディスクの前記特定領域に移動するための、当該特定領域に対する当該データのライトを含む操作によって、前記不揮発性メモリ内に空き領域を確保する
ことを特徴とする請求項１記載のハイブリッドディスク記憶装置。
【請求項８】
ホストから要求された前記ディスクからリードされるべきデータが、前記不揮発性メモリには存在しないが前記ディスクの前記拡張領域に存在する場合、前記拡張領域に存在するデータを前記不揮発性メモリにコピーするコピー手段と、
前記不揮発性メモリにコピーされたデータを目的とするデータとしてリードするリード手段と
を更に具備することを特徴とする請求項７記載のハイブリッドディスク記憶装置。
【請求項９】
書き換えが可能な不揮発性メモリと、ヘッドによりデータがリード／ライトされるディスクとを含むハイブリッドディスク記憶装置に適用されるディスクライト方法であって、
ホストから要求された前記ディスクにライトされるべきデータを、前記ディスクに対するよりも優先して前記不揮発性メモリにライトするステップと、
前記不揮発性メモリに記憶されているデータを、当該データがライトされるべき前記ディスク上の領域とは別の、当該ディスク上に予め確保された特定領域にライトする特定領域操作ステップと
を具備することを特徴とするディスクライト方法。
【請求項１０】
前記ディスクの前記特定領域は、前記不揮発性メモリに記憶されているデータをバックアップするためのバックアップ領域として用いられ、
前記特定領域操作ステップにおいて、前記不揮発性メモリに記憶されているデータのうち前記ディスクに記憶されていないデータを少なくとも含むデータをバックアップ対象データとして前記ディスクの前記特定領域にコピーするための、当該特定領域に対する当該バックアップ対象データのライトを含む操作によって、当該バックアップ対象データが前記ディスクの前記特定領域にバックアップされる
ことを特徴とする請求項９記載のディスクライト方法。
【請求項１１】
前記ディスクの前記特定領域は、前記不揮発性メモリの容量を拡張するための拡張領域として用いられ、
前記特定領域操作ステップにおいて、前記不揮発性メモリに記憶されているデータを前記ディスクの前記特定領域に移動するための、当該特定領域に対する当該データのライトを含む操作によって、前記不揮発性メモリ内に空き領域が確保される
ことを特徴とする請求項９記載のディスクライト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを有するハイブリッドディスク記憶装置に係り、特に不揮発性メモリのデータを、当該データが本来ライトされるべきディスク上の領域とは別の、当該ディスク上に予め確保された特定領域にライトするための、ハイブリッドディスク記憶装置及び同装置に適用されるディスクライト方法に関する。
【背景技術】
【０００２】
磁気ディスク装置（ハードディスクドライブ）のようなディスク記憶装置は、記憶媒体にディスクを用いている。ディスクへのアクセスには機械的な操作を伴う。このため、ディスクへのアクセスは、メモリ（例えば半導体メモリ）へのアクセスに比べて低速である。そこで、ディスク記憶装置は、当該ディスク記憶装置を利用するパーソナルコンピュータのようなホストからの当該ディスク記憶装置へのアクセスの高速化のために、ディスクキャッシュと呼ばれるキャッシュメモリを有しているのが一般的である。
【０００３】
また近年は、書き換え可能な不揮発性メモリの一部もしくは全部をキャッシュメモリとして用いるディスク記憶装置が提案されている（例えば特許文献１及び２参照）。このように、不揮発性メモリの一部もしくは全部をキャッシュメモリとして用いることにより、例えば装置の使用中に電源が遮断された場合でも、キャッシュメモリのみに存在するデータが消失することが防止される。
【０００４】
特に特許文献２には、装置の電源遮断後、次の電源投入時に、キャッシュメモリ（不揮発性メモリ）のデータを、当該データが書き込まれるべきディスク（実デバイス）上の領域に書き戻すことが記載されている。また特許文献２には、この書き戻しを、キャッシュメモリ内のデータを読み出すために参照するキャッシュ管理テーブル内のデータが、ディスクにおけるトラックのアドレス順に読み出されるようにスケジューリングすることが記載されている。このスケジューリングにより、書き戻しに伴うシーク動作に要する時間が短縮される。
【特許文献１】特開２００６−４４０７号公報
【特許文献２】特許第３１８３６６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら不揮発性メモリは、磁気ディスクのようなディスク記憶媒体に比べて安定してデータ記憶を保持することができず、比較的短期間（極端な例では数ヶ月程度）でその記憶データが変化することが知られている。つまり、不揮発性メモリは、データを長期間安定して保持するという点において、ディスク記憶媒体に比べて信頼性が低い。そのために、例えば不揮発性メモリの記憶データをリフレッシュさせる機能が当該不揮発性メモリ自身のコントローラに組み込まれている。
【０００６】
上記特許文献２に記載されたディスク記憶装置では、装置の電源遮断後、次の電源投入時に、不揮発性メモリ（キャッシュメモリ）のデータは、当該データが書き込まれるべきディスク上の領域に書き戻される。したがって、装置の電源の遮断／投入が比較的短期間で繰り返されるならば、上述の不揮発性メモリの弱点を補うことが可能となる。しかし、装置が長期間連続して稼働される場合には、不揮発性メモリの弱点を補うことは難しい。
【０００７】
また、不揮発性メモリ（キャッシュメモリ）のデータが書き込まれるべきディスク（実デバイス）上の領域が当該ディスク上で分散している場合には、たとえディスクにおけるトラックのアドレス順に読み出されるようにスケジューリングしたとしても、書き戻しに伴うシーク動作に要する時間を短縮することは難しい。
【０００８】
本発明は上記事情を考慮してなされたものでその目的は、不揮発性メモリに記憶されているデータを当該データが本来書き込まれるべきディスク上の領域とは別の当該ディスク上に予め確保されている特定領域にライトすることにより、高速アクセスが可能であるものの、データを長期間安定して保持するという点ではディスク記憶媒体に比べて劣る不揮発性メモリを用いることの弱点を補って、データの信頼性を高めることができるハイブリッドディスク記憶装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の１つの態様によれば、書き換えが可能な不揮発性メモリを含むハイブリッドディスク記憶装置が提供される。このハイブリッドディスク記憶装置は、前記不揮発性メモリに記憶されているデータを記憶するための、当該データがライトされるべき領域とは別の特定領域が予め確保されたディスクと、ホストから要求された前記ディスクにライトされるべきデータを、前記ディスクに対するよりも優先して前記不揮発性メモリにライトするデータライト手段と、前記不揮発性メモリに記憶されているデータを前記ディスクの前記特定領域にライトする特定領域操作手段とを具備する。
【発明の効果】
【００１０】
本発明によれば、不揮発性メモリに記憶されているデータが、当該データがライトされるべきディスク上の領域（本来の領域）とは別の当該ディスク上に確保された特定領域（つまりデータを長期間安定して保持するという点において信頼性の高いディスク上の特定領域）にライトされる。これにより、データを長期間安定して保持するという点ではディスク記憶媒体に比べて劣る不揮発性メモリを用いることの弱点を補って、データの信頼性を高めることができる。また、不揮発性メモリに記憶されているデータが、ディスク上の本来の領域とは別の限られた領域（特定領域）にライトされることにより、この特定領域にライトされたデータをリードする必要が発生した場合、本来の領域に分散してライトされたデータをリードするのに比べて高速アクセスが可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明をハイブリッド磁気ディスク装置に適用した実施の形態につき図面を参照して説明する。図１は本発明の一実施形態に係るハイブリッド磁気ディスク装置（ＨＤＤ）の構成を示すブロック図である。図１において、ディスク（磁気ディスク媒体）１１の例えば上側のディスク面はデータが磁気記録される記録面をなしている。このディスク１１の記録面に対応してヘッド（磁気ヘッド）１２が配置されている。ヘッド１２は、ディスク１１へのデータ書き込み（データ記録）及びディスク１１からのデータ読み出し（データ再生）に用いられる。なお、ディスク１１の下側のディスク面も記録面をなし、その記録面に対応してヘッド１２と同様のヘッドが配置されているものとする。図１の構成では、単一枚のディスク１１を備えたＨＤＤを想定している。しかし、ディスク１１が複数枚積層配置されたＨＤＤであっても構わない。
【００１２】
ディスク１１の各記録面には、同心円状の複数のトラック（図示せず）が配置されている。各トラックには、サーボ情報が記録されたサーボ領域が等間隔で且つ離散的に予め配置されている。サーボ情報は、ヘッド１２を目標トラックに位置付ける制御に必要な位置情報を含む。この位置情報は、サーボ情報が書き込まれているディスク１１上のシリンダ（トラック）位置を示すシリンダコード（シリンダ番号）と、ヘッド１２のシリンダ位置からのずれを検出するための位置誤差信号とを含む。隣接するサーボ領域で挟まれた領域はユーザデータ領域と呼ばれる。ユーザデータ領域には、ユーザデータを記録再生するのに用いられる複数のデータセクタが配置される。また、ディスク１１上の特定の領域（第１の特定領域）には、後述する不揮発性メモリ２２に記憶されているデータをバックアップするためのバックアップ領域１１１が確保されている。このバックアップ領域１１１、つまりディスク１１上の第１の特定領域は、不揮発性メモリ２２と同容量である。
【００１３】
ディスク１１はスピンドルモータ（ＳＰＭ）１３により高速に回転させられる。ヘッド１２はアクチュエータ（キャリッジ）１４の先端に取り付けられている。アクチュエータ１４は、当該アクチュエータ１４の駆動源となるボイスコイルモータ（ＶＣＭ）１５を有している。アクチュエータ１４は、このＶＣＭ１５により駆動されて、ヘッド１２をディスク１１の半径方向に移動する。これにより、ヘッド１２は、目標トラック上に位置付けられる。
【００１４】
ＳＰＭ１３及びＶＣＭ１５は、モータドライバ（モータドライバＩＣ）１６からそれぞれ供給される駆動電流（ＳＰＭ電流及びＶＣＭ電流）により駆動される。つまりモータドライバ１６は、ＳＰＭ１３及びＶＣＭ１５をそれぞれ駆動するＳＰＭドライバ及びＶＣＭドライバ（図示せず）を含む。
【００１５】
ヘッド１２は図示せぬヘッドアンプ回路（ヘッドＩＣ）を介してリード／ライトチャネル（リード／ライトＩＣ）１７と接続されている。リード／ライトチャネル１７はリード／ライトに関連する信号処理を行うデバイスであり、ヘッドアンプ回路により増幅されたリード信号をアナログ／ディジタル変換（Ａ／Ｄ変換）する処理、リードデータを復号化する処理、Ａ／Ｄ変換後のデータからサーボ情報を抽出する処理等を実行する。
【００１６】
モータドライバ１６及びリード／ライトチャネル１７はシステムＬＳＩ１８と接続されている。システムＬＳＩ１８は、ディスクコントローラ（ＨＤＣ）１９及びＣＰＵ２０が単一チップに集積されたＬＳＩである。システムＬＳＩ１８は、ＲＯＭ２１及び不揮発性メモリ２２と接続されている。このシステムＬＳＩ１８が、リード／ライトチャネル１７、ＲＯＭ２１及び不揮発性メモリ２２の少なくとも１つを更に含んでいても構わない。ＲＯＭ２１は、制御プログラム（ファームウェアプログラム）を予め格納する。
【００１７】
不揮発性メモリ２２は例えば電気的に書き換えが可能なフラッシュメモリである。不揮発性メモリ２２は、電源の供給がなくても記憶データを維持できる。これに対し、従来から適用されている、例えばＤＲＡＭ（Dynamic RAM）を用いて構成されるキャッシュメモリの記憶データは当該キャッシュメモリの電源の供給が断たれると失われる。つまり不揮発性メモリ２２は、キャッシュメモリと違いデータを長時間記憶させておくのに適している。そこで本実施形態では、不揮発性メモリ２２は、ディスク１１上に存在しないデータを記憶するのに用いられる。また不揮発性メモリ２２は、アクセス速度の向上のために、キャッシュメモリと同様にディスク１１上に存在するデータの一部を記憶するのにも使用される。
【００１８】
ＨＤＣ１９は、ＨＤＤと当該ＨＤＤを利用するパーソナルコンピュータのようなホストとのインターフェースを構成する。ＨＤＣ１９は、ホストから転送されたユーザデータをデータセクタに対応する一定サイズに分割し、分割されたユーザデータを符号化してライトチャネル１７に送出する機能を有する。ＨＤＣ１９はまた、不揮発性メモリ２２へのアクセスを実行する。このアクセスの制御、特に不揮発性メモリ２２にどのようにデータを記憶させるかの制御は、ＲＯＭ２１に格納されている制御プログラムに従いＣＰＵ２０によって実行される。
【００１９】
ＣＰＵ２０は、ＲＯＭ２１に格納されている制御プログラムを実行することにより、ＨＤＤの主コントローラとして機能する。例えばＣＰＵ２０は、リード／ライトチャネル１７によって検出されたサーボ情報に基づき、ヘッド１２を目標トラックに移動するためのシーク制御と当該ヘッド１２を目標トラックの目標位置に位置付ける位置決め制御とを行う。ＣＰＵ２０はまた、ＨＤＣ１９による不揮発性メモリ２２へのアクセス、例えば不揮発性メモリ２２にＨＤＣ１９によりどのようにデータを記憶させるかを制御する。
【００２０】
不揮発性メモリ２２は、データを長期間安定して保持するという点において、ディスク１１に比べて信頼性が低い。そこで本実施形態では、少なくとも不揮発性メモリ２２のみに記憶されているデータを適宜ディスク１１のバックアップ領域１１１にバックアップすることによって、当該不揮発性メモリ２２の弱点を補うようにしている。このバックアップ処理は、ＲＯＭ２１に格納されている制御プログラムに基づき、ＣＰＵ２０によって実行される。以下、このバックアップ処理について、図２のフローチャートを参照して説明する。
【００２１】
ＣＰＵ２０は、ホストからＨＤＤに与えられるアクセスコマンドを監視することによりアクセスの頻度を監視して、当該アクセス頻度が一定レベルより低くなった時点で（ステップＳ１）、バックアップ動作を開始する。ここでは、ホストから最も最近にアクセスコマンドが送出されてから一定時間を経過しても次のアクセスコマンドが送出されない場合に、アクセス頻度が低いと判定される。
【００２２】
本実施形態において、バックアップ動作を開始する条件は、従来から知られているセルフテスト動作（自己診断動作）を開始する条件と同一であるものとする。ここでは、上述のようにアクセス頻度が低いと判定された時点、つまりＨＤＤが、ホストから当該ＨＤＤへのアクセスに悪影響が及ばないような状態となった時点で、バックアップ動作が開始される。このバックアップ動作を、セルフテスト動作の一部としても良い。
【００２３】
さて、バックアップ動作は次のように行われる。まずＣＰＵ２０は、不揮発性メモリ２２にのみ記憶されているデータをＨＤＣ１９を用いて抽出する（ステップＳ２）。本実施形態では、不揮発性メモリ２２に記憶されているデータを管理するのに、詳細を後述する不揮発性メモリ管理テーブル１３０（図１３参照）が用いられる。この管理テーブル１３０には、不揮発性メモリ２２にのみ記憶されているデータ（状態（１）のデータ）であるか、或いは不揮発性メモリ２２だけでなくディスク１１にも記憶されているデータ（状態（２）〜（４）のいずれかのデータ）であるかを少なくとも示す管理情報（エントリ情報）が保持されている。状態（１）〜（４）については後述する。
【００２４】
不揮発性メモリ２２に記憶されているデータがディスク１１にも記憶されている場合、当該不揮発性メモリ２２に記憶されているデータは、当該不揮発性メモリ２２の領域を有効に使用するために、必要に応じて新しいデータで上書きされても構わない。これに対し、不揮発性メモリ２２にのみ記憶されているデータは、他のデータで上書きされないように管理される必要がある。そこで、不揮発性メモリ２２にのみ記憶されているデータは、後述するように不揮発性メモリ管理テーブル１３０によって他のデータと識別される。したがって、この不揮発性メモリ管理テーブル１３０を参照することにより、不揮発性メモリ２２にのみ記憶されているデータを抽出できる。不揮発性メモリ管理テーブル１３０は、不揮発性メモリ２２内の特定領域または当該不揮発性メモリ２２から独立して設けられた別の不揮発性メモリに格納されるものとする。
【００２５】
ＣＰＵ２０は、バックアップ領域（特定領域）操作手段として機能して、抽出されたデータを（バックアップ対象データとして）ＨＤＣ１９を用いてディスク１１上のバックアップ領域１１１にコピーするための、当該バックアップ領域１１１に対するデータのライトを含む操作を制御する（ステップＳ３）。これにより、不揮発性メモリ２２からバックアップ領域１１１へのデータのバックアップが完了する。
【００２６】
するとＣＰＵ２０は、不揮発性メモリ２２からバックアップ領域１１１へのデータのバックアップ完了を当該データに対応付けて不揮発性メモリ管理テーブル１３０に登録する（ステップＳ４）。このバックアップ完了が、ディスク１１（ディスク１１のバックアップ領域１１１）に記憶されているデータを管理する管理テーブルに登録されても構わない。つまり、バックアップ完了（バックアップ済み）を示す印（マーク）が、不揮発性メモリ２２またはディスク１１のどちらか一方のデータに対応付けて付されていれば良い。この印が、不揮発性メモリ２２またはディスク１１のどちらか一方のデータ自体に付されていても良い。しかし、上記印が、不揮発性メモリ２２及びディスク１１の両方のデータに対応付けて付される構成を適用する方が安全である。但し本実施形態では説明の簡略化のために、上記印は揮発性メモリ２２のデータに対応付けて付加される。
【００２７】
また、バックアップ動作を開始する条件（バックアップ動作の開始タイミング）は、上述の例に限らない。例えば、一定時間間隔で定期的にバックアップ動作が開始されても良い。また、ＣＰＵ２０がホストからのアクセスコマンドを監視して、不揮発性メモリ２２にライトされたデータの量が一定の値を超えたことが判定されたなら、バックアップ動作が開始されても良い。また、ホストからバックアップを指定するコマンドが与えられたならば、バックアップ動作が開始されても良い。更に、「Ｐｉｎｎｅｄ  Ｓｅｔ  Ｄａｔａ」と呼ばれるデータ（第１のデータ）が不揮発性メモリ２２にライトされたならば、当該データのバックアップ動作が開始されても良い。その理由は、「Ｐｉｎｎｅｄ  Ｓｅｔ  Ｄａｔａ」は、後述するように基本的にディスク１１にフラッシュされないデータであるためである。
【００２８】
次に、本実施形態におけるデータリード動作について、図３のフローチャートを参照して説明する。今、ホストからＨＤＤに対してリードコマンドによってデータリードが要求されたものとする。ＣＰＵ２０は、要求されたデータが不揮発性メモリ２２に存在するかを判定する（ステップＳ１１）。
【００２９】
もし、要求されたデータが不揮発性メモリ２２に存在するならば、つまり不揮発性メモリ２２にヒットしたならば、ＣＰＵ２０は当該データを不揮発性メモリ２２からリードするリード処理を実行する（ステップＳ１２）。このようにヒット時には、要求されたデータをディスク１１からリードする場合に比べて、当該データを高速にリードすることができる。リードされたデータは、ＨＤＣ１９によってホストに転送される。
【００３０】
これに対し、要求されたデータが不揮発性メモリ２２に存在しないミスヒット時には（ステップＳ１１）、ＣＰＵ２０は当該要求されたデータを、ホストからの要求で指定されたディスク１１上の本来の領域（データセクタ）からリードする（ステップＳ１３）。このデータリードは、周知のように、ＣＰＵ２０がモータドライバ１６、リード／ライトチャネル１７及びＨＤＣ１９を制御することによって実行される。
【００３１】
次に、不揮発性メモリ２２からデータをリードするリード処理（ステップＳ１２）の詳細について、図４のフローチャートを参照して説明する。まず、ＣＰＵ２０は第１のリード手段として機能して、不揮発性メモリ２２からデータをリードする（ステップＳ２１）。次にＣＰＵ２０は、リードされたデータが正常であるかを判定する（ステップＳ２２）。不揮発性メモリ２２に記憶されるデータには、例えばエラー検出コードが付されるのが一般的である。そこで、データ及びエラー検出コードに基づき、当該データが正常であるかが判定される。
【００３２】
ＣＰＵ２０は、リードされたデータが正常であるならば（ステップＳ２２）、当該データをＨＤＣ１９によってホストに転送させてリード処理を終了する。これに対し、リードされたデータが正常でないならば、ＣＰＵ２０は、不揮発性メモリ管理テーブル１３０（図１３参照）を参照することにより、当該データに対応付けてバックアップ完了（を示す印）が登録されているかをチェックする（ステップＳ２３）。そしてＣＰＵ２０は、このチェックの結果、要求されたデータがディスク１１上にバックアップ済みであるかにより、バックアップされたデータを利用できるかを判定する（ステップＳ２４）。
【００３３】
もし、バックアップ済みならば、不揮発性メモリ２２からリードされた正常でないデータに代えて、バックアップデータを利用することができる。この場合、ＣＰＵ２０は第２のリード手段として機能して、不揮発性メモリ２２からリードされた正常でないデータに対応するバックアップデータを、ディスク１１のバックアップ領域１１１からリードする（ステップＳ２５）。リードされたバックアップデータは、不揮発性メモリ２２からリードされたデータに代えて、ＨＤＣ１９によってホストに転送される。
【００３４】
するとＣＰＵ２０は、先にデータがリードされた不揮発性メモリ２２の領域（該当領域）が正常にライト／リードできるかをテストする（ステップＳ２６）。もし、不揮発性メモリ２２の該当領域が正常にライト／リードできるならば、つまり不揮発性メモリ２２が正常ならば（ステップＳ２７）、ステップＳ２８に進む。このステップＳ２８において、ＣＰＵ２０は復旧手段として機能して、リードされたバックアップデータを不揮発性メモリ２２の該当領域に上書きすることにより、その領域の正常でないデータを正常なデータに復旧する（ステップＳ２８）。これによりＣＰＵ２０はリード処理を終了する。これに対し、不揮発性メモリ２２が正常でないならば、ＣＰＵ２０は、今後不揮発性メモリ２２の該当領域を使わないように、当該領域をディフェクトとして登録して（ステップＳ２９）、リード処理を終了する。
【００３５】
一方、要求されたデータがディスク１１上にバックアップ済みでなく、したがってリードされた正常でないデータに代えてバックアップデータが利用できないならば（ステップＳ２４）、ＣＰＵ２０は当該要求されたデータ（つまりリードされるべきデータ）が不揮発性メモリ２２のみに存在するデータであるかを判定する（ステップＳ３０）。もし、要求されたデータが、当該データが記憶されているべきディスク１１上の領域にも存在するならば、ＣＰＵ２０は、当該ディスク１１上の当該領域に記憶されているデータをリードし（ステップＳ３１）、しかる後に上記ステップＳ２６に進む。これに対し、要求されたデータが、当該データが記憶されているべきディスク１１上の領域に存在しないならば、つまり不揮発性メモリ２２のみに存在するデータであるならば（ステップＳ３０）、ＣＰＵ２０はリードに失敗したとして、ホストに対してＨＤＣ１９からエラーを通知させて（ステップＳ３２）、リード処理を終了する。
【００３６】
次に、本実施形態におけるデータライト動作について、図５のフローチャートを参照して説明する。今、ホストからＨＤＤに対してライトコマンドによってデータライトが要求されたものとする。ＣＰＵ２０はまず、ライトコマンドで指定されたライトされるべきデータと論理ブロックアドレスＬＢＡ及びサイズが同一のデータが不揮発性メモリ２２に存在するか、つまりライトされるべきデータが不揮発性メモリ２２にヒットするかを判定する（ステップＳ４１）。
【００３７】
もし、不揮発性メモリ２２にヒットしなかったなら、ＣＰＵ２０は、不揮発性メモリ２２内にデータをライトするのに必要な空きがあるかを判定する（ステップＳ４２）。もし、不揮発性メモリ２２内に空き（空き領域）があるならば、ＣＰＵ２０はステップＳ４３に進む。一方、不揮発性メモリ２２にヒットしたならば（ステップＳ４１）、ＣＰＵ２０はステップＳ４２をスキップしてステップＳ４３に進む。
【００３８】
ステップＳ４３においてＣＰＵ２０は、不揮発性メモリ２２の空き領域またはヒットした領域にデータをライトするに際し、不揮発性メモリ管理テーブル１３０上で当該領域のデータに対応付けられているバックアップ完了の登録をクリア（解除）する。このクリア処理（ステップＳ４３）の後に、ＣＰＵ２０は要求されたデータを不揮発性メモリ２２にライトして（ステップＳ４４）、データライト動作を終了する。クリア処理（ステップＳ４３）は、不揮発性メモリ２２内のデータが更新されると、そのデータに対応するディスク１１上のバックアップの内容が無効になることを考慮して行われる。
【００３９】
一方、不揮発性メモリ２２内に空き（空き領域）がないならば（ステップＳ４２）、ＣＰＵ２０は、ホストから要求されたデータを、当該データが本来ライトされるべきディスク１１上の領域（データセクタ）にライトして（ステップＳ４５）、データライト動作を終了する。以下の説明では、簡略化のために、データが本来ライトされるべきディスク１１上の領域（データセクタ）を、ディスク１１上の本来の領域またはディスク１１上の本来のセクタと表現する。なお、不揮発性メモリ２２内に空きがない場合に、例えばホストから要求されたデータをライトするのに十分なサイズの不揮発性メモリ２２内の領域のデータ（古いデータ）をディスク１１上の本来の領域（セクタ）に書き戻して（フラッシュして）、当該不揮発性メモリ２２内に空き領域を確保しても良い。また、不揮発性メモリ２２内に空き領域を確保するための動作が、後述するように、ホストからの明示的なコマンドに応じて、或いはリード／ライトコマンドの実行とは独立して例えば定期的に、ＣＰＵ２０（の制御）によって行われても良い。
【００４０】
［第１の変形例］
次に上記実施形態の第１の変形例について説明する。  
上記実施形態では、不揮発性メモリ２２にのみ記憶されているデータがディスク１１のバックアップ領域１１１にバックアップ（コピー）される。第１の変形例の特徴は、不揮発性メモリ２２に記憶されている全てのデータをバックアップする点にある。
【００４１】
図６は第１の変形例で適用されるバックアップ処理の手順を示すフローチャートである。この図６のフローチャートから明らかなように、第１の変形例では、ホストからＨＤＤへのアクセスの頻度が低くなると（ステップＳ５１）、不揮発性メモリ２２に記憶されている全てのデータがディスク１１上のバックアップ領域１１１にバックアップ（コピー）される（ステップＳ５２）。
【００４２】
するとＣＰＵ２０は、上記実施形態と同様に、不揮発性メモリ２２からバックアップ領域１１１へのデータのバックアップ完了を当該データに対応付けて不揮発性メモリ管理テーブル１３０に登録する（ステップＳ５３）。この第１の変形例では、不揮発性メモリ２２からのバックアップされるべきデータの抽出（図２のステップＳ２）が不要となるものの、データコピーにかかる時間は増大する。
【００４３】
［第２の変形例］
次に上記実施形態の第２の変形例について説明する。  
データバックアップ動作、つまりデータコピー動作は、バックアップ（コピー）されるべきデータを不揮発性メモリ２２から読み出すためのデータ読み出しと、読み出されたデータをディスク１１のバックアップ領域１１１に書き込むデータ書き込みとを伴う。このため、バックアップ処理に時間がかかる。特に、上記第１の変形例では、不揮発性メモリ２２に記憶されている全てのデータがバックアップされるため、バックアップ（コピー）完了までに多大な時間を要する。また、バックアップ処理の期間にホストからディスクアクセスが要求された場合、当該要求されたアクセスの実行が長時間待たされる。そこで第２の変形例の特徴は、不揮発性メモリ２２に記憶されている全てのデータを連続してコピーするのではなく、複数回に分けてコピーする点にある。このように複数回に分けてコピー動作を行って、１回のコピー動作に要する時間を短くすることにより、ホストに対するレスポンスが損なわれるのを防止することが可能となる。
【００４４】
図７は第２の変形例で適用されるバックアップ処理の手順を示すフローチャートである。この図７のフローチャートから明らかなように、第２の変形例では、不揮発性メモリ２２に記憶されているデータを複数回のコピー動作に分けてディスク１１のバックアップ領域１１１にバックアップするために、１回のコピー動作の対象となる不揮発性メモリ２２の領域は、当該不揮発性メモリ２２の比較的小さな一部の領域に限定される。そこで第２の変形例では、ホストからＨＤＤへのアクセスの頻度が低くなると（ステップＳ６１）、不揮発性メモリ２２に記憶されているデータの一部だけをディスク１１上のバックアップ領域１１１にコピーするコピー動作が行われる（ステップＳ６２）。するとＣＰＵ２０は、不揮発性メモリ２２からバックアップ領域１１１へのデータのバックアップ完了を当該データに対応付けて不揮発性メモリ管理テーブル１３０に登録する（ステップＳ６３）。
【００４５】
次にＣＰＵ２０は、１回のコピー動作の期間にホストからＨＤＤへのアクセスが要求されたかを判定する（ステップＳ６４）。もし、ホストからアクセスが要求されていたならば（ステップＳ６４）、ＣＰＵ２０は当該要求の実行を優先させるためにバックアップ動作を即座に終了する。これにより、コピー動作のためにホストからのアクセスが長時間待たされるのを防止できる。
【００４６】
一方、ホストからアクセスが要求されておらず（ステップＳ６４）、且つ不揮発性メモリ２２のバックアップが完了していないならば、ＣＰＵ２０は、不揮発性メモリ２２に記憶されているデータの別の一部をディスク１１上のバックアップ領域１１１にコピーするコピー動作を行う（ステップＳ６２）。このようにＣＰＵ２０は、不揮発性メモリ２２に記憶されているデータを幾つかのデータに分けて、少量のデータを単位にコピー動作を実行する。これにより第２の変形例においては、バックアップ処理のために、ホストに対するレスポンスが損なわれるのを防止することができる。
【００４７】
［第３の変形例］
次に上記実施形態の第３の変形例について説明する。  
不揮発性メモリ２２の容量は限られている。このため不揮発性メモリ２２に記憶されている古いデータをディスク１１上の本来の領域に書き出して、当該データが記憶されていた不揮発性メモリ２２を空き領域として開放することが好ましい。これにより、開放された領域に別のデータをライトすることが可能となる。このように不揮発性メモリ２２を使用する場合、不揮発性メモリ２２に記憶されている古いデータは常に別のデータで上書きされる。もし一時的に不揮発性メモリ２２にサイズの大きいデータをライトする必要がある場合、当該不揮発性メモリ２２上の古いデータは、ディスク１１上の本来の領域に分散して書き出されることになる。
【００４８】
図８は、不揮発性メモリ２２上の古いデータがデータＡ，Ｂ及びＣである場合に、当該データＡ，Ｂ及びＣがディスク１１上の本来の領域に分散して書き出されている（配置されている）状態の一例を示す。このような状態では、データＡ，Ｂ及びＣが再度必要になって不揮発性メモリ２２に戻そうとした場合、当該データＡ，Ｂ及びＣをディスク１１からリードする動作に多大な時間を要する。
【００４９】
そこで、第３の変形例の特徴は、不揮発性メモリ２２内の古いデータをディスク１１上の本来の領域に書き出す代わりに、当該データをディスク１１上の特定の領域（第２の特定領域）内にまとめて書き出すことにより、当該データをディスク１１からリードして不揮発性メモリ２２に戻す際の動作の高速化を図るようにした点にある。このディスク１１上の第２の特定領域へのデータの書き出しは、例えば、当該データが記憶されていた不揮発性メモリ２２内の領域を一時的に空き状態とするために行われる。この点で、ディスク１１上の第２の特定領域へデータを書き出す（移動する）動作は、上記実施形態におけるバックアップ動作、即ち不揮発性メモリ２２のデータをディスク１１上のバックアップ領域（第１の特定領域）１１１に書き出すバックアップ動作とは異なる。
【００５０】
また、上記実施形態におけるバックアップ動作は自動的に行われる。これに対し、第３の変形例では、例えばホストからの何らかの要求により、不揮発性メモリ２２内に空き領域を確保する必要が生じた場合に、それを「トリガ」として当該不揮発性メモリ２２の古いデータをディスク１に書き出す（移動する）動作が行われる。この第３の変形例で適用される、不揮発性メモリ２２のデータをディスク１１（上の第２の特定領域）に書き出す動作は、広義にはバックアップ動作であるが、上記実施形態におけるバックアップ動作と異なる。そこで、第２の変形例では、上記実施形態における「バックアップ動作」と区別するため、不揮発性メモリ２２のデータをディスク１１に移動する動作を「拡張領域動作」と呼び、また不揮発性メモリ２２のデータが書き出されるディスク１１上の「第２の特定領域」を「拡張領域」と呼ぶ。拡張領域動作のトリガとなる条件の詳細については後述する。
【００５１】
バックアップ領域（１１１）と拡張領域とは、時間によって切り替えることで兼用することも可能である。しかし、バックアップ領域と拡張領域とは独立して別々に配置される方が制御も簡単であり、より効果的に運用することが可能である。
【００５２】
図９は、第３の変形例において、上述のデータＡ，Ｂ及びＣがディスク１１上の拡張領域（第２の特定領域）１１２内にまとめて書き出されている状態の一例を示す。なお図９には、バックアップ領域１１１は省略されている。図９の例では、拡張領域１１２がディスク１１の外周に配置されているが、これに限るものではない。図９の例では、図８と異なって、データＡ，Ｂ及びＣがディスク１１の拡張領域１１２内にまとまって存在する。このため、データＡ，Ｂ及びＣを不揮発性メモリ２２に戻すために当該データＡ，Ｂ及びＣをディスク１１からリードする必要性が生じた場合、図８とは異なり、シーク時間を短縮できる。つまり、データＡ，Ｂ及びＣをディスク１１から高速でリードして不揮発性メモリ２２に戻すことができる。
【００５３】
次に、上述のような「トリガ」が発生した場合に実行される、不揮発性メモリ２２から拡張領域１１２へのデータ書き出し動作（拡張領域動作）について、図１０のフローチャートを参照して説明する。
【００５４】
まず、ＣＰＵ２０は、不揮発性メモリ２２からディスク１１上の拡張領域１１２への書き出し（移動）の対象となるデータが、当該拡張領域１１２に既に書き出されているデータであるかを判定する（ステップＳ７１）。もし、書き出しの対象となるデータが、既に拡張領域１１２に書き出されている場合には、ＣＰＵ２０は処理を終了する。
【００５５】
これに対し、書き出しの対象となるデータがディスク１１上の拡張領域１１２に書き出されていない場合には、ＣＰＵ２０は当該データを不揮発性メモリ２２から拡張領域１１２に書き出すのに必要な空き（空き領域）が当該拡張領域１１２内にあるかを判定する（ステップＳ７２）。もし、拡張領域１１２に必要な空き領域がないならば、ＣＰＵ２０は当該拡張領域１１２内のデータ（空き領域が確保されるべき領域のデータ）を、ディスク１１上の本来の領域（セクタ）にコピーする（ステップＳ７３）。これにより、コピーされたデータが記憶されていた、拡張領域１１２内の領域を、当該拡張領域１１２にデータを書き出すのに必要な空き領域として確保することができる。
【００５６】
ＣＰＵ２０は、拡張領域１１２内に必要な空きが確保されると、不揮発性メモリ２２に記憶されているデータを、当該データのアドレス（論理ブロックアドレスＬＢＡ）順に並び替えながら当該拡張領域１１２に書き出す（ステップＳ７４）。第３の変形例において、不揮発性メモリ２２から拡張領域１１２へのデータの書き出しはデータの移動である。つまりＣＰＵ２０は、拡張領域（特定領域）操作手段として機能して、不揮発性メモリ２２に記憶されているデータを拡張領域１１２に移動するための、当該拡張領域１１２に対する当該データのライトを含む操作を行う。これにより、拡張領域１１２に書き出された（移動された）データが記憶されていた不揮発性メモリ２２の領域は開放される。つまり不揮発性メモリ２２内に空き領域が確保される。
【００５７】
一方、拡張領域１１２に空き領域があるならば（ステップＳ７２）、ＣＰＵ２０はステップＳ７３をスキップしてステップＳ７４に進む。ステップＳ７４においてＣＰＵ２０は、上述したように、不揮発性メモリ２２のデータを当該データのアドレス（論理ブロックアドレスＬＢＡ）順に並び替えながら拡張領域１１２の空き領域に書き出す。
【００５８】
ここで、アドレス順の並び替えは必ずしも必要でない。しかし、データリード時に、目的データが、不揮発性メモリ２２に存在しないものの拡張領域１１２には存在し、且つ不揮発性メモリ２２に空きがない場合には、後述するように当該拡張領域１１２のデータが直接リードされる。このため、拡張領域１１２からのデータリードを考慮すると、並び替えておいた方が処理速度の点で有利である。
【００５９】
ＣＰＵ２０は不揮発性メモリ２２から拡張領域１１２へのデータの書き出し（移動）を実行すると（ステップＳ７４）、そのデータを管理するための管理情報を拡張領域１１２へのデータ書き出し後の状態を表すように更新する（ステップＳ７５）。この管理情報は、上記実施形態と異なって、後述するように、不揮発性メモリ管理テーブル１５０（図１５参照）に保持されている。
【００６０】
次に、第３の変形例におけるデータリード動作について、図１１のフローチャートを参照して説明する。今、ホストからＨＤＤに対してデータリードが要求されたものとする。ＣＰＵ２０は、要求されたデータが不揮発性メモリ２２に存在するか（つまりヒットするか）を判定する（ステップＳ８１）。
【００６１】
要求されたデータが不揮発性メモリ２２に存在するヒット時には（ステップＳ８１）、ＣＰＵ２０は上記実施形態におけるステップＳ１２と同様に、当該データを不揮発性メモリ２２からリードするリード処理を実行して（ステップＳ８２）、データリード動作を終了する。リードされたデータはＨＤＣ１９によってホストに転送される。
【００６２】
これに対し、要求されたデータが不揮発性メモリ２２に存在しないならば（ステップＳ８１）、ＣＰＵ２０は当該データがディスク１１上の拡張領域１１２に存在するかを判定する（ステップＳ８３）。もし、要求されたデータがディスク１１上の拡張領域１１２に存在するならば、つまり拡張領域１１２にヒットしたならば、ＣＰＵ２０はステップＳ８４に進む。ここで、要求されたデータが不揮発性メモリ２２に存在しないものの拡張領域１１２には存在する状態（特定状態）は、次のことを意味する。つまり、この特定状態は、例えば前記ステップＳ７４で不揮発性メモリ２２から拡張領域１１２へのデータ移動が行われたために、要求されたデータも拡張領域１１２に移動されていて当該不揮発性メモリ２２に残っていないことを意味する。
【００６３】
さて、ステップＳ８４においてＣＰＵ２０は、要求されたデータを仮に拡張領域１１２からリードした場合に、当該リードデータを不揮発性メモリ２２にコピーするのに必要な空きが当該不揮発性メモリ２２内にあるかを判定する。もし、不揮発性メモリ２２内に必要な空きがないならば、ＣＰＵ２０は要求されたデータをディスク１１上の拡張領域１１２からリードして（ステップＳ８５）、データリード動作を終了する。拡張領域１１２からリードされたデータはＨＤＣ１９によってホストに転送される。
【００６４】
これに対し、不揮発性メモリ２２内に必要な空きがあるならば（ステップＳ８４）、ＣＰＵ２０はコピー手段として機能して、拡張領域１１２のデータを当該不揮発性メモリ２２内の空き領域にコピーする（ステップＳ８６）。そして、ＣＰＵ２０はリード手段として機能して、不揮発性メモリ２２にコピーされたデータを当該不揮発性メモリ２２からリードして（ステップＳ８２）、データリード動作を終了する。不揮発性メモリ２２からリードされたデータはＨＤＣ１９によってホストに転送される。
【００６５】
一方、要求されたデータがディスク１１上の拡張領域１１２に存在しないミスヒット時には（ステップＳ８３）、ＣＰＵ２０は当該要求されたデータを、ホストからの要求で指定されたディスク１１上の本来の領域（セクタ）からリードして（ステップＳ８７）、データリード動作を終了する。リードされたデータはＨＤＣ１９によってホストに転送される。
【００６６】
次に、第３の変形例で適用される、不揮発性メモリ２２から拡張領域１１２にデータを移動する動作（拡張領域動作）を含むデータライト動作について、図１２のフローチャートを参照して説明する。
【００６７】
今、ホストからＨＤＤに対してライトコマンドによってデータライトが要求されたものとする。ＣＰＵ２０はまず、ライトコマンドで指定されたライトされるべきデータと論理ブロックアドレスＬＢＡ及びサイズが同一のデータが不揮発性メモリ２２に存在するか、つまりライトされるべきデータが不揮発性メモリ２２にヒットするかを判定する（ステップＳ９１）。
【００６８】
もし、不揮発性メモリ２２にヒットしなかったなら、ＣＰＵ２０は、上記ライトされるべきデータと論理ブロックアドレスＬＢＡ及びサイズが同一のデータがディスク１１上の拡張領域１１２に存在するか、つまりライトされるべきデータが拡張領域１１２にヒットするかを判定する（ステップＳ９２）。もし、拡張領域１１２にヒットしなかったなら、つまり不揮発性メモリ２２及び拡張領域１１２のいずれにもヒットしなかったなら、ＣＰＵ２０は、不揮発性メモリ２２内にデータをライトするのに必要な空きがあるかを判定する（ステップＳ９３）。
【００６９】
ここで、不揮発性メモリ２２内に必要な空き（空き領域）があるならば（ステップＳ９３）、ＣＰＵ２０は上記実施形態と同様の処理、即ち図５のステップＳ４３及びＳ４４に相当する処理（ステップＳ９４及びＳ９５）を実行する。また不揮発性メモリ２２にヒットした場合にも（ステップＳ９１）、ＣＰＵ２０は図５のステップＳ４３及びＳ４４に相当する処理（ステップＳ９４及びＳ９５）を実行する。
【００７０】
一方、拡張領域１１２にヒットしたならば、ＣＰＵ２０は要求されたデータ（新しいデータ）を拡張領域１１２にライトする動作、つまり拡張領域１１２の古いデータを当該新しいデータに更新する動作を行う（ステップＳ９６）。
【００７１】
また、不揮発性メモリ２２に空き（要求されたデータを不揮発性メモリ２２にライトするのに必要な空き）がないならば（ステップＳ９３）、ＣＰＵ２０は拡張領域１１２に空きがあるかを判定する（ステップＳ９７）。拡張領域１１２の「空き」とは、不揮発性メモリ２２内に上記必要な空きを確保するために、当該必要な空きに相当するサイズのデータを不揮発性メモリ２２から拡張領域１１２に移動するために必要となる空きのことである。
【００７２】
もし、拡張領域１１２に空きがないならば（ステップＳ９７）、ＣＰＵ２０は当該拡張領域１１２内に空きを確保するのに必要な、当該拡張領域１１２の一部のデータ（古いデータ）をディスク１１上の本来の領域（セクタ）にコピーする（ステップＳ９８）。これにより、不揮発性メモリ２２から拡張領域１１２にデータを移動する（書き出す）のに必要な空きが当該拡張領域１１２内に確保される。
【００７３】
ＣＰＵ２０は、拡張領域１１２内に必要な空き（空き領域）が確保されると、不揮発性メモリ２２の一部のデータ（古いデータ）を、当該データのアドレス（論理ブロックアドレスＬＢＡ）順に並び替えながら当該拡張領域１１２の空き領域に移動する（ステップＳ９９）。このデータ移動により、拡張領域１１２に移動されたデータが記憶されていた不揮発性メモリ２２の領域は開放される。つまり不揮発性メモリ２２内に空き領域が確保される。
【００７４】
一方、拡張領域１１２に空き（空き領域）があるならば（ステップＳ９７）、ＣＰＵ２０はステップＳ９８をスキップしてステップＳ９９に進んで、不揮発性メモリ２２の一部の古いデータを当該拡張領域１１２の空き領域に移動する。
【００７５】
このように第３の変形例では、不揮発性メモリ２２から拡張領域１１２へのデータの移動（ステップＳ９９）は、ホストからのライトコマンドで要求されたライトされるべきデータが不揮発性メモリ２２及び拡張領域１１２のいずれにもヒットしなかった場合を「トリガ」として実行される。しかし、拡張領域１１２へのデータ移動（データ保存）が、後述するように他の条件を「トリガ」として実行されても構わない。
【００７６】
ここで、不揮発性メモリ２２から拡張領域１１２へのデータの移動時に行われる、当該データのアドレス順の並び替えは必ずしも必要でない。しかし前述したように、データリード時に、目的データが、不揮発性メモリ２２に存在しないものの拡張領域１１２には存在し（図１１ステップＳ８１）、且つ不揮発性メモリ２２に空きがない場合には（図１１ステップＳ８２）、当該拡張領域１１２のデータが直接リードされる（図１１ステップＳ８５）。このため、拡張領域１１２からのデータリードを考慮すると、並び替えておいた方が処理速度の点で有利である。
【００７７】
ＣＰＵ２０は不揮発性メモリ２２から拡張領域１１２へのデータの移動を実行すると（ステップＳ９９）、そのデータを管理するための、不揮発性メモリ管理テーブル１５０（図１５参照）に保持されている管理情報を移動後の状態を表すように更新する（ステップＳ１００）。次にＣＰＵ２０はステップＳ９５に進み、不揮発性メモリ２２内の上記確保された空き領域に要求されたデータ（新しいデータ）をライトする。
【００７８】
［不揮発性メモリ２２に記憶されるデータの管理］
次に、上記実施形態で適用される不揮発性メモリ２２に記憶されるデータの管理の詳細について説明する。不揮発性メモリ２２に記憶されるデータは、第１のデータ及び第２のデータの２種類に分類される。
【００７９】
第１のデータは「Ｐｉｎｎｅｄ  Ｓｅｔ  Ｄａｔａ」と呼ばれる。第１のデータのリード／ライトは、不揮発性メモリ２２内に確保された予め予約された領域に対して行われる。第１のデータは、ディスク１１上の本来の領域（セクタ）を示す論理ブロックアドレスＬＢＡを用いて管理される。しかし、この第１のデータに対応する論理ブロックアドレスＬＢＡへのアクセスは全て不揮発性メモリ２２へのアクセスに置き換えられる。
【００８０】
本実施形態では、第１のデータに関し、対応する論理ブロックアドレスＬＢＡとデータサイズとを指定して不揮発性メモリ２２内に当該第１のデータのための領域を予約するコマンド、その領域（予約領域）に予めディスク１１からデータを第１のデータとして読み込んでおくコマンド、予約領域を解除して当該予約領域のデータをディスク１１に書き出すコマンドなどが用意される。第１のデータに関しては、これらのコマンドがホストから与えられることなしにディスクアクセスが発生することはない。
【００８１】
一方、第２のデータは「Ｕｎｐｉｎｎｅｄ  Ｄａｔａ」と呼ばれる。第２のデータは、不揮発性メモリ２２が従来のキャッシュメモリに置き換えられたかのように扱われるデータである。不揮発性メモリ２２はキャッシュメモリと同様にディスク１１よりも優先的にアクセスされる。しかし、不揮発性メモリ２２内に第２のデータのための予約された領域が確保されているわけではない。このため第２のデータに関しては、不揮発性メモリ２２内に、リードされるべきデータがない、またはライトされるべき空き領域がない場合が発生する。このような場合、ディスクアクセスが発生する。
【００８２】
本実施形態では、不揮発性メモリ２２を上述の第１及び第２のデータを記憶するメモリとして管理すると共にディスク１１上のバックアップ領域１１１を利用したバックアップ動作を管理するために、図１３に示す不揮発性メモリ管理テーブル１３０が用いられる。この管理テーブル１３０は、キャッシュテーブル１３１及びメモリリンクテーブル１３２から構成される。
【００８３】
キャッシュテーブル１３１の各エントリの情報（管理情報）は、当該情報によって管理される不揮発性メモリ２２の記憶データに関し、識別マーク、バックアップ済みマーク、ディスクフラッシュ済みマーク、開始ＬＢＡ（論理ブロックアドレス）、データサイズ及び不揮発性メモリ２２の開始アドレスを含む。識別マークは、対応するデータが第１のデータ（Ｐｉｎｎｅｄ  Ｓｅｔ  Ｄａｔａ）及び第２のデータ（Ｕｎｐｉｎｎｅｄ  Ｄａｔａ）のいずれであるかを示すフラグ情報である。図１３では、第１のデータを示す識別マークが記号Ｐで、第２のデータを示す識別マークが記号Ｕで、それぞれ表わされている。開始アドレスは、対応するデータが記憶されている不揮発性メモリ２２内の領域の開始位置のアドレスを示す。バックアップ済みマーク及びディスクフラッシュ済みマークについては後述する。
【００８４】
ここで、開始アドレス（不揮発性メモリ２２の開始アドレス）をキャッシュメモリの開始アドレスに置き換えるならば、キャッシュテーブル１３１のエントリ情報からバックアップ済みマーク及びディスクフラッシュ済みマークを除いた情報、即ち、識別マーク、開始ＬＢＡ、データサイズ及び開始アドレスは、従来から知られているキャッシュメモリを管理する管理テーブル（キャッシュテーブル）のエントリ情報と同様である。図１３に示すキャッシュテーブル１３１のエントリ情報の特徴は、上述したような従来から知られているキャッシュテーブルのエントリ情報（管理情報）に、バックアップ済みマーク及びディスクフラッシュ済みマークが追加された点である。
【００８５】
メモリリンクテーブル１３２は、不揮発性メモリ２２の消去可能な単位領域毎に用意されるエントリを有する。このエントリの情報（管理情報）は、当該情報によって管理される不揮発性メモリ２２の消去可能な単位領域に関し、当該単位領域の先頭アドレス、及び当該単位領域にリンクされる次の単位領域のアドレス（次アドレス）を含む。なお、メモリリンクテーブル１３２のエントリの情報は、当該情報によって管理される単位領域にリンクされる次の単位領域が存在しない場合、つまり最終の単位領域の場合には、次アドレスに代えて最終を示すマーク（ＥＮＤ）を含み、当該情報によって管理される単位領域が非使用（空き）の場合には、次アドレスに代えて非使用マーク（ＵＮＵＳＥＤ）を含む。
【００８６】
前述したように、ディスク１１上のバックアップ領域１１１は、不揮発性メモリ２２と同容量である。そこで、このバックアップ領域１１１の先頭論理ブロックアドレスＬＢＡから順に、不揮発性メモリ２２のアドレスに合わせて、バックアップ先のアドレスが割り当てられる。これにより不揮発性メモリ２２のアドレスとバックアップ先のアドレスが１：１に対応付けられることから、つまり不揮発性メモリ２２と同じイメージでバックアップ領域１１１にデータが記憶されることから、メモリリンクテーブル１３２が共通に使用できる。但し、バックアップ先アドレスは通常１セクタ当たり５１２バイトの論理ブロックアドレスＬＢＡで指定される。このため、不揮発性メモリ２２のアドレス（バイトアドレス）を５１２で除して、その結果の整数部で表されるＬＢＡに変換する必要がある。
【００８７】
ホストから例えばデータリードを指定するコマンド（リードコマンド）が図１のＨＤＤに与えられた場合、当該ＨＤＤ内のＣＰＵ２０は、前述したように当該コマンドで要求されたデータが不揮発性メモリ２２に存在するかを判定する（図３ステップＳ１１）。この判定は、不揮発性メモリ管理テーブル１３０のキャッシュテーブル１３１を用いて、次のように行われる。
【００８８】
まず、ホストからのリードコマンドは、リードされるべきデータの論理空間上の領域の開始位置を示す開始論理ブロックアドレスＬＢＡ及びデータサイズを指定する。そこでＣＰＵ２０は、この開始論理ブロックアドレスＬＢＡ及びデータサイズのデータが不揮発性メモリ２２に存在するかを（つまり不揮発性メモリ２２にヒットするかを）、キャッシュテーブル１３１を検索することで判定する。
【００８９】
もし、ヒットした場合、ＣＰＵ２０はキャッシュテーブル１３１に登録されている開始アドレス（不揮発性メモリ２２の開始アドレス）からメモリリンクテーブル１３２のリンクをたどって、不揮発性メモリ２２の該当するアドレスを検索することで、そのアドレスからデータをリードする（図３ステップＳ１２）。これに対し、ヒットしなかった場合には、ＣＰＵ２０はディスク１１にアクセスする（図３ステップＳ１３）。
【００９０】
また、不揮発性メモリ２２内に、ホストからのライトコマンドによって要求されたデータをライトするのに必要な空き領域がない場合（図５ステップＳ４１）、前記したように、当該不揮発性メモリ２２のデータ（例えば第２のデータ）をディスク１１上の本来の領域（セクタ）に書き戻して（フラッシュして）、その領域を（空き領域として）開放しても良い。この場合、ＣＰＵ２０は、不揮発性メモリ２２内の開放された領域にホストから要求されたデータをライトして、不揮発性メモリ管理テーブル１３０（キャッシュテーブル１３１及びメモリリンクテーブル１３２）を書き換えれば良い。但し、不揮発性メモリ２２内の第１のデータが記憶されている領域（予約領域）を勝手に開放することは許されない。
【００９１】
ここで、バックアップ済みマーク及びディスクフラッシュ済みマークについて説明する。図１３のキャッシュテーブル１３１の例では、キャッシュテーブル１３１のエントリ情報に含まれているバックアップ済みマーク及びディスクフラッシュ済みマークは、いずれも記号○または×で示されている。
【００９２】
バックアップ済みマークは、記号○のとき、対応するエントリ情報で指定される不揮発性メモリ２２のデータ（対応するデータ）がディスク１１のバックアップ領域１１１にバックアップされていること（バックアップ済み）を示し、記号×のとき、当該データがバックアップされていないことを示す。ディスクフラッシュ済みマークは、記号○のとき、対応するデータがディスク１１上の本来の領域（セクタ）に書き出されている（フラッシュされている）こと（ディスクフラッシュ済み）を示し、記号×のとき、当該データがディスク１１にフラッシュされていないことを示す。
【００９３】
図１４はバックアップ済みマーク及びディスクフラッシュ済みマークの全ての組み合わせと、各組み合わせに対応した状態相互間の状態遷移とを示す。バックアップ済みマーク及びディスクフラッシュ済みマークの組み合わせは、図１４（ａ）に示すように、「×，×」，「×，○」，「○，×」及び「○，×」の４通りである。
【００９４】
「×，×」は、対応するデータが「バックアップされておらず、且つディスク１１上の本来の領域（セクタ）にフラッシュされていない」状態（状態（１））を示す。この状態（１）は、対応するデータが不揮発性メモリ２２のみに記憶されている状態であり、優先的にバックアップされるべき状態であることをも示す。キャッシュテーブル１３１を参照して状態（１）を示すエントリ情報を検索することで、不揮発性メモリ２２にのみ記憶されているデータを抽出して（図２ステップＳ２）、当該データをディスク１１上のバックアップ領域１１１にバックアップすることができる（図２ステップＳ３）。データのバックアップ後は、当該データに対応付けてキャッシュテーブル１３１上でバックアップ済みマーク「○」が付される（図２ステップＳ４）。これにより、図１４（ｂ）に示すように状態（１）から状態（３）に遷移する。
【００９５】
「×，○」は、対応するデータが「バックアップされていないが、ディスク１１上の本来の領域（セクタ）にフラッシュされている」状態（状態（２））を示す。状態（２）は、基本的にはバックアップが不要な状態である。但し、第１の変形例のように、不揮発性メモリ２２全体をバックアップする場合には、状態（２）に対応するデータもバックアップされる（図６ステップＳ５２）。バックアップ後はバックアップ済みマーク「○」が付くことで（図６ステップＳ５３）、図１４（ｂ）に示すように、状態（２）から状態（４）に遷移する。状態（２）に対応するデータが既にディスク１１上の本来の領域にフラッシュされているのに、当該データを不揮発性メモリ２２に保持しておくのは、次に当該データをリードすること（つまり当該データと同じＬＢＡと同じサイズを持つデータのリード）が要求された場合に、ディスク１１からではなくて不揮発性メモリ２２からリードすることでアクセスが高速になるからである。
【００９６】
「○，×」は、対応するデータが「バックアップされているが、ディスク１１上の本来の領域にフラッシュされていない」状態（状態（３））を示す。状態（３）は、対応するデータが第１のデータであれば、フラッシュする必要がない状態である。状態（３）は、対応するデータが第２のデータである場合も、基本的にはフラッシュする必要がない状態である。しかし、状態（３）の場合、対応するデータ（第２のデータ）をＣＰＵ２０が積極的にフラッシュしても良い。ＨＤＤへのアクセス頻度が低くなった時点を狙ってフラッシュするならば、フラッシュに伴うパフォーマンス低下も抑えられる。状態（３）の第２のデータを積極的にフラッシュするか、なるべく不揮発性メモリ２２内に留めておくかは、必要に応じて適宜使い分ければ良い。
【００９７】
「○，○」は、対応するデータが「バックアップされていて、且つディスク１１上の本来の領域にフラッシュされている」、最も安全な状態（状態（４））を示す。但し、データの安全という観点からは、状態（２）または状態（３）であれば十分である。
【００９８】
状態（２）〜（４）のいずれかの状態にある不揮発性メモリ２２のデータと同じＬＢＡと同じサイズを持つデータのライトが要求された場合、要求されたデータは不揮発性メモリ２２にライトされる（図５ステップＳ４１〜Ｓ４４）。この場合、いずれの状態も、図１４（ｂ）に示すように、「バックアップされておらず、且つディスク１１上の本来の領域（セクタ）にフラッシュされていない」状態（１）に遷移する。一方、状態（１）にある不揮発性メモリ２２のデータと同じＬＢＡと同じサイズを持つデータのライトが要求された場合、要求されたデータは不揮発性メモリ２２にライトされるが（図５ステップＳ４１〜Ｓ４４）、図１４（ｂ）に示すように状態の遷移は発生しない。また、リード動作の場合には、状態（１）〜（４）のいずれの状態も、状態の遷移は発生しない。
【００９９】
不揮発性メモリ２２の空き領域が足りなくなったという要因で、当該不揮発性メモリ２２に記憶されている第２のデータがディスク１１にフラッシュされる場合、当該データが記憶されていた不揮発性メモリ２２内の領域は開放される。このため、このデータを管理している不揮発性メモリ管理テーブル１３０（に含まれているキャッシュテーブル１３１及びメモリリンクテーブル１３２）内の情報は消去される。ここで、キャッシュテーブル１３１内の対応する情報に既にディスクフラッシュ済みマーク「○」が付いているならば、ディスク１１へのデータライト（フラッシュ）は不要である。この場合、不揮発性メモリ管理テーブル１３０（に含まれているキャッシュテーブル１３１及びメモリリンクテーブル１３２）内の該当する情報を消去すれば良い。
【０１００】
次に、バックアップされているデータの利用について、状態（１）〜（４）と関連付けて説明する。まず、不揮発性メモリ管理テーブル１３０（のキャッシュテーブル１３１）に、ある管理情報が登録されているものとする。このことは、この管理情報で指定（管理）されるデータが、状態（１）〜（４）のどの状態であっても、不揮発性メモリ２２に存在することを表す。したがってデータリード動作では、通常は管理情報で指定されるデータを状態（１）〜（４）のいずれであるかに無関係に不揮発性メモリ２２からリードするリード処理（図３ステップＳ１２）を実行すれば良い。
【０１０１】
さて、上記リード処理で、不揮発性メモリ２２からデータがリードされた場合（図４ステップＳ２１）、当該データが正常であるかが判定される（図４ステップＳ２２）。この、リードされたデータの判定は、当該データに付加されているエラー検出コードを照合することにより行われる。もし、不揮発性メモリ２２からリードされたデータが正常でなかった場合には次のような動作が行われる。
【０１０２】
まず、リードされたデータが状態（１）なら、当該データは不揮発性メモリ２２にのみ存在することから（図４ステップＳ３０）、リードエラーとなる（図４ステップＳ３２）。次に状態（２）なら、バックアップデータは利用できないものの（図４ステップＳ２４）、ディスク１１上の本来の領域（セクタ）に対応するデータが存在することから（図４ステップＳ３０）、そのデータをリードすれば良い（図４ステップＳ３１）。
【０１０３】
状態（３）なら、不揮発性メモリ２２のデータがディスク１１上のバックアップ領域１１１にバックアップされていることから（図４ステップＳ２４）、そのバックアップされているデータをリードすれば良い（図４ステップＳ２５）。次に状態（４）なら、不揮発性メモリ２２のデータがディスク１１上のバックアップ領域１１１にバックアップされると共に、ディスク１１上の本来の領域（セクタ）にフラッシュされている。この場合、バックアップ領域１１１及び本来の領域（セクタ）のどちらのデータをリードしても良い。しかし、バックアップ領域１１１のデータ（バックアップデータ）をリードした方が（図４ステップＳ２５）、アクセス速度の点で有利である。その理由は、バックアップ領域１１１のデータの方が、連続した領域に配置されていると期待できるためである。
【０１０４】
このように、不揮発性メモリ２２からリードされたデータが正常でなかった場合でも、状態（２）〜（４）のいずれかであるならば、ディスク１１（の本来のセクタまたはバックアップ領域１１１）から正常なデータをリードすることが可能である。このディスク１１からリードされたデータを用いて、不揮発性メモリ２２上の対応するデータの修復を試みると良い。その理由は、不揮発性メモリ２２の一時的なエラー（ソフトエラー）の場合、ディスク１１からリードされたデータを当該不揮発性メモリ２２に再ライトすることで、以降は問題なく使用できる場合があるためである。
【０１０５】
そこでＣＰＵ２０は、エラーとなったデータが記憶されていた不揮発性メモリ２２の領域にテストデータをライトし、そのライトされたデータをリードするライト／リードテストを行う（図４ステップＳ２６）。もし、ライト／リードテストでエラーが発生しなかったならば（図４ステップＳ２７）、ＣＰＵ２０は、不揮発性メモリ２２の上記領域にディスク１１からリードされた正常なデータをライトする（図４ステップＳ２８）。
【０１０６】
本実施形態において不揮発性メモリ管理テーブル１３０は、データの整合性を考慮して、不揮発性メモリ２２内の特定領域または当該不揮発性メモリ２２から独立して設けられた別の不揮発性メモリに格納される。この場合、不揮発性メモリの異常により、不揮発性メモリ管理テーブル１３０自体を正しく読むことができない状況も発生し得る。
【０１０７】
そこで本実施形態では、不揮発性メモリ管理テーブル１３０自体もディスク１１にバックアップされる。また本実施形態では、不揮発性メモリ管理テーブル１３０自体の異常をチェック可能とするために、図１４に示されるように、不揮発性メモリ管理テーブル１３０を構成するキャッシュテーブル１３１及びメモリリンクテーブル１３２に、それぞれエラー検出コード（テーブルエラー検出コード）１３１ａ及び１３２ａが付加される。
【０１０８】
ＣＰＵ２０は、不揮発性メモリ管理テーブル１３０を利用する必要のある動作に際して、当該管理テーブル１３０を構成するキャッシュテーブル１３１及びメモリリンクテーブル１３２自体が正常であるかを、それぞれ、エラー検出コード１３１ａ及び１３２ａを照合して判定する。なお、不揮発性メモリを用いずに、ディスク１１にバックアップされている不揮発性メモリ管理テーブルを、動作時にＲＡＭにコピーして使用することも可能である。
【０１０９】
図１３に示すデータ構造の不揮発性メモリ管理テーブル１３０（キャッシュテーブル１３１及びメモリリンクテーブル１３２）は、上記実施形態に限らず、上記第１及び第２の変形例でも適用可能である。
【０１１０】
次に、第３の変形例で適用される不揮発性メモリ２２に記憶されるデータの管理の詳細について説明する。まず、第３の変形例の特徴について整理する。
【０１１１】
上記実施形態（並びに第１及び第２の変形例）では、ディスク１１上のバックアップ領域１１１にバックアップされたデータは不揮発性メモリ２２のデータに異常が生じない限り利用されることはない。しかし、ディスク１１上のバックアップ領域１１１にバックアップされたデータは、先に述べたように当該ディスク１１上で連続した領域に配置されていると期待できる。このため、ディスク１１上のバックアップ領域１１１にアクセスした方が、ディスク１１上の本来のセクタにアクセスするよりも高速にアクセスできる。また通常不揮発性メモリ２２の容量は、ディスク１１に比べて非常に小さい。この点を考慮して第３の変形例では、バックアップ領域（第１のバックアップ領域）１１１に対応するバックアップ領域（第２のバックアップ領域）としての拡張領域１１２が、ディスク１１上の特定の領域に割り当てられる。この拡張領域１１２は、不揮発性メモリ２２の実質的な容量を拡張するための領域として使用される。
【０１１２】
第３の変形例では、上記実施形態と異なって、不揮発性メモリ２２及びバックアップ動作を管理するだけでなく、ディスク１１上の拡張領域１１２を利用した動作（拡張領域動作）を管理するために、図１５に示す不揮発性メモリ管理テーブル１５０が用いられる。この管理テーブル１５０は、キャッシュテーブル１５１、メモリリンクテーブル１５２及び拡張領域リンクテーブル１５３から構成される。
【０１１３】
キャッシュテーブル１５１のエントリ情報（管理情報）の特徴は、図１３に示したバックアップ済みマーク及びディスクフラッシュ済みマークを含むキャッシュテーブル１３１のエントリ情報（管理情報）に、拡張領域使用マークが追加されている点である。図１５のキャッシュテーブル１５１の例では、当該テーブル１５１のエントリ情報中の拡張領域使用マークは、バックアップ済みマーク及びディスクフラッシュ済みマークと同様に記号○または×で示されている。拡張領域使用マークは、記号○のとき、対応するエントリ情報で指定される不揮発性メモリ２２のデータ（対応するデータ）がディスク１１の拡張領域１１２に存在することを示し、記号×のとき、当該データ拡張領域１１２に存在しないことを示す。
【０１１４】
拡張領域リンクテーブル１５３は、拡張領域動作用のリンクテーブルである。バックアップ動作では、ディスク１１上のバックアップ領域１１１には、前述したように不揮発性メモリ２２と同じイメージでデータが記憶される。これに対して拡張領域動作では、不揮発性メモリ２２に記憶されているデータが論理ブロックアドレスＬＢＡ順に並び替えられながらディスク１１上の拡張領域１１２に書き出される。つまり拡張領域動作では、ディスク１１上の拡張領域１１２には、不揮発性メモリ２２とは異なるイメージでデータが記憶される。このため第３の変形例では、メモリリンクテーブル１５２とは別に拡張領域リンクテーブル１５３が設けられている。
【０１１５】
図１６は拡張領域使用マーク、バックアップ済みマーク及びディスクフラッシュ済みマークの取り得る全ての組み合わせと、各組み合わせに対応した状態相互間の状態遷移とを示す。拡張領域使用マーク「○」が付いたデータは不揮発性メモリ２２上に存在しないため、当該データにバックアップ済みマーク「○」が付けられることはない。このため、拡張領域使用マーク、バックアップ済みマーク及びディスクフラッシュ済みマークの組み合わせは、図１６（ａ）に示すように、「×，×，×」，「×，×，○」，「×，○，×」，「×，○，○」，「○，×，×」及び「○，×，○」の６通りである。
【０１１６】
「×，×，×」は、対応するデータが「拡張領域１１２になく、バックアップされておらず、且つディスク１１上の本来の領域（セクタ）にフラッシュされていない」状態（状態（１））を示す。
【０１１７】
「×，×，○」は、対応するデータが「拡張領域１１２になく、且つバックアップされていないが、ディスク１１上の本来の領域（セクタ）にフラッシュされている」状態（状態（２））を示す。
【０１１８】
「×，○，×」は、対応するデータが「拡張領域１１２になく、バックアップされており、ディスク１１上の本来の領域にフラッシュされていない」状態（状態（３））を示す。
【０１１９】
「×，○，○」は、対応するデータが「拡張領域１１２にないが、バックアップされており、且つディスク１１上の本来の領域にフラッシュされている」状態（状態（４））を示す。
【０１２０】
「○，×，×」は、対応するデータが「拡張領域１１２にあるが、バックアップされておらず、且つディスク１１上の本来の領域（セクタ）にフラッシュされていない」状態（状態（５））を示す。
【０１２１】
「○，×，○」は、対応するデータが「拡張領域１１２にあり、バックアップされておらず、ディスク１１上の本来の領域（セクタ）にフラッシュされている」状態（状態（６））を示す。
【０１２２】
状態（１）〜（４）においてリード／ライト動作、バックアップ動作及びフラッシュ動作が行われた場合の状態遷移は、図１６（ｂ）に示すように上記実施形態（図１４）と同様である。また、リード動作の場合には、状態（１）〜（６）のいずれの状態も、状態の遷移は発生しない。また、状態（５）と状態（６）とは、対応するデータがディスク１１上の本来の領域にフラッシュされているか否かを除いて同一の状態である。このため、状態（５）においてフラッシュ動作が行われた場合、当該状態（５）は図１６（ｂ）に示すように状態（６）に遷移する。
【０１２３】
次に、不揮発性メモリ２２からディスク１１上の拡張領域１１２にデータを書き出す（移動する）拡張領域動作の場合の状態遷移について説明する。ここで、拡張領域動作には、不揮発性メモリ２２からディスク１１上の拡張領域１１２にデータを書き出す（移動する）動作の他に、後述するように、拡張領域１１２のデータを不揮発性メモリ２２に書き戻す（復帰する）動作がある。
【０１２４】
まず、状態（５）及び（６）では、不揮発性メモリ２２のデータが既に拡張領域１１２に存在する。したがって、状態（５）及び（６）では、不揮発性メモリ２２のデータを拡張領域１１２へ移動することは不要である。
【０１２５】
次に状態（５）と状態（１）とは、対応するデータが拡張領域１１２に存在するか否かを除いて、同一の状態である。したがって、状態（１）において不揮発性メモリ２２のデータが拡張領域１１２へ移動された場合には、図１６（ｂ）に示すように状態（５）に遷移する。逆に、状態（５）において拡張領域１１２のデータが不揮発性メモリ２２に復帰された場合には、図１６（ｂ）に示すように状態（１）に遷移する。次に、状態（３）において、不揮発性メモリ２２のデータが拡張領域１１２へ移動された場合、当該データは不揮発性メモリ２２に存在しなくなるため、バックアップ済みマーク「○」は外される（○から×に更新される）。これにより状態（３）は、図１６（ｂ）に示すように状態（５）に遷移する。
【０１２６】
同様に、状態（２）において不揮発性メモリ２２のデータが拡張領域１１２へ移動された場合には、図１６（ｂ）に示すように状態（６）に遷移する。逆に、状態（６）において拡張領域１１２のデータが不揮発性メモリ２２に復帰された場合には、図１６（ｂ）に示すように状態（２）に遷移する。また状態（４）において不揮発性メモリ２２のデータが拡張領域１１２へ移動された場合には、図１６（ｂ）に示すように状態（６）に遷移する。
【０１２７】
ここで、拡張領域動作が開始されるタイミングについて説明する。第３の変形例では、ホストからの何らかの要求を「トリガ」として拡張領域動作が開始される。このトリガとは、例えば、不揮発性メモリ２２内に指定の空き領域を確保することを指示するコマンド（Ｆｌｕｓｈ  ＮＶ  Ｃａｃｈｅ  Ｃｏｍｍａｎｄ）のように、ホストからの明示的なコマンドによるものである。このコマンドで要求された容量の空き領域が不揮発性メモリ２２内に確保できない場合に拡張領域動作が開始され、当該不揮発性メモリ２２に記憶されている一部の古い第２のデータがディスク１１上の拡張領域に移動される。これにより、要求された容量の空き領域が不揮発性メモリ２２内に確保される。
【０１２８】
また、ホストから与えられた第２のデータをライトするためのライトコマンドの実行時に、不揮発性メモリ２２内に、当該コマンドで要求された第２のデータをライトするのに必要な空き領域が不足しているとＨＤＤ側（ＣＰＵ２０）で判断した場合に、それをトリガとして拡張領域動作が開始されても良い。この場合、ホストからのライトコマンドは、不揮発性メモリ２２からディスク１１の拡張領域へのデータ書き出し動作（拡張領域動作）を暗黙的に指示するコマンドであると見なすことができる。この拡張領域動作により、不揮発性メモリ２２に記憶されている一部の古い第２のデータがディスク１１上の拡張領域１１２に移動される（図１２ステップＳ９９）。すると、拡張領域１１２に移動されたデータが記憶されていた不揮発性メモリ２２の領域が空き領域として確保される。このデータ移動の状態を反映するために、不揮発性メモリ管理テーブル１５０（キャッシュテーブル１５１、メモリリンクテーブル１５２及び拡張領域リンクテーブル１５３が更新される（図１２ステップＳ１００）。そして、不揮発性メモリ２２内に確保された空き領域に、ライトコマンドで要求されたデータがライトされる（図１２ステップＳ９５）。
【０１２９】
また、不揮発性メモリ２２の予約領域に記憶されている特定の第１のデータをディスク１１上の拡張領域１１２に一時的に退避（移動）させるための第１のコマンド、及び拡張領域１１２に退避されている第１のデータを不揮発性メモリ２２に復帰させるための第２のコマンドを新設しても良い。ＣＰＵ２０は、この第１／第２のコマンドがホストからＨＤＤに与えられた場合に、第１のデータの退避／復帰を行う。
【０１３０】
ところで、不揮発性メモリ２２に記憶されているデータの中に、キャッシュテーブル１５１によってＬＢＡが不連続でサイズが比較的小さいことが示されているデータ（ランダムデータ）が含まれていることがある。このようなランダムデータを、不揮発性メモリ２２からディスク１１の本来のセクタにフラッシュすると、再アクセスの際にアクセス位置がランダムアクセス的に分散してしまうのでパフォーマンス的に不利である。そこで、例えば先に述べたように不揮発性メモリ２２内に空き領域を確保するために拡張領域動作を実行する際に、このようなランダムデータを優先的に拡張領域１１２に書き出す（移動する）と良い。このようにすると、本来はランダムデータでありながら、再アクセスの際にまとめてアクセスしてパフォーマンス低下を抑えることが可能となる。
【０１３１】
データのリード時、ＣＰＵ２０はキャッシュテーブル１５１を参照する。これによりＣＰＵ２０は、対象となるデータが不揮発性メモリ２２に存在するか（図１１ステップＳ８１）、或いはディスク１１上の拡張領域１１２に存在するか（図１１ステップＳ８３）を判定することができる。第３の変形例では、拡張領域１１２に存在するデータをリードする場合に、不揮発性メモリ２２内に当該データに相当するサイズ以上の空き領域があるならば（図１１ステップＳ８４）、当該データが不揮発性メモリ２２の空き領域に書き戻される（図１１ステップＳ８６）。これにより、同じデータを次回にリードする際のアクセス速度が高速になる。
【０１３２】
不揮発性メモリ２２からディスク１１上の拡張領域１１２にデータを移動する（書き出す）際に、当該拡張領域１１２内に十分な空き領域が確保できない場合（図１０ステップＳ７２）には、既に当該拡張領域１１２に存在する古いデータがディスク１１上の本来の領域（セクタ）にコピーされる（図１０ステップＳ７３）。ここでは、ディスク１１上の本来の領域（セクタ）へのデータライト（図１０ステップＳ７３）と当該ディスク１１上の拡張領域１１２へのデータライト（図１０ステップＳ７４）とが連続して行われるためＨＤＤのパフォーマンスが低下する。
【０１３３】
そこで、できる限り拡張領域１１２内に空き領域を確保しておくことが好ましい。そのためには、例えば、拡張領域１１２のデータが不揮発性メモリ２２に書き戻せるなら書き戻し（図１１ステップＳ８６）、当該データが格納されていた拡張領域１１２内の領域を速やかに開放すると良い。また前述の、空き領域を確保することを指示するコマンド、或いは第１のデータを拡張領域１１２に退避させるコマンドを、ホストからＨＤＤに与えることによって、フラッシュ動作が集中しないように制御しても良い。
【０１３４】
第３の変形例では、不揮発性メモリ２２のデータを拡張領域１１２に移動する動作は、当該データを不揮発性メモリ２２上で当該データのＬＢＡ順に並び替えながら行われる（図１０ステップＳ７４）。この場合、拡張領域１１２内でのデータの配置がＬＢＡ順となるため、以降のリードが高速に行える。
【０１３５】
ここで、不揮発性メモリ２２に記憶されている移動対象となるデータを管理するための、図１５に示すキャッシュテーブル１５１の管理情報を符号１５１ａで示す。この管理情報１５１ａで管理されるデータは、図１５に示されるメモリリンクテーブル１５２の内容から明らかなように、不揮発性メモリ２２内でＬＢＡ順（アクセス順）に並んでいないものとする。不揮発性メモリ２２はランダムアクセス性が高いので、不揮発性メモリ２２内でのデータの並びを変えなくても大きな問題はない。しかし、不揮発性メモリ２２からディスク１１上の拡張領域１１２にデータが移動された場合、当該ディスク１１上では当該データがアクセス順に配置されていた方がアクセス速度の点で有利である。
【０１３６】
そこで第３の変形例においてＣＰＵ２０は、管理情報１５１ａで管理されるデータを不揮発性メモリ２２からディスク１１上の拡張領域１１２に移動するのに、当該不揮発性メモリ２２に対するアクセス順にデータを拡張領域１１２にライトする。このアクセス順は、管理情報１５１ａ中の開始アドレスで指定されるアドレスを先頭とする、図１５のメモリリンクテーブル１５２によってリンクされるアドレスの順番である。ここでは、図１５から明らかなように、０００Ａ００００ｈ→０００８００００ｈ→００１０００００ｈの順番で対応するデータが拡張領域１１２にライトされる。これにより、上記の順番で対応するデータが拡張領域１１２に連続的に配置される。
【０１３７】
上記の順で不揮発性メモリ２２から拡張領域１１２にデータが移動された後の、当該データを管理するための管理情報を、上記管理情報１５１ａと比較するために、当該管理情報１５１ａが保持されているエントリとは別のエントリを便宜的に用いて符号１５１ｂで示す。第３の変形例では、拡張領域１１２に移動されたデータを管理するための拡張領域リンクテーブル１５３の内容も、図１５に示すように、当該拡張領域１１２におけるデータの配置順を反映したものとなる。
【０１３８】
但し、データリード時の高速化だけを目的とするなら、不揮発性メモリ２２のデータを拡張領域１１２に移動する動作は、例えばアドレス順に無関係に（０００８００００ｈ、０００Ａ００００ｈ、００１０００００ｈのように）１つずつ別々に行っても良い。要するに、拡張領域１１２内のデータの配置が連続的になっていれば良い。つまり、拡張領域１１２においてデータが連続的な配置となっていることが、拡張領域リンクテーブル１５３によって示されていればよい。「連続的な配置」についての詳細は後述する。
【０１３９】
上述したように第３の変形例においては、不揮発性メモリ２２のデータが、拡張領域１１２と呼ばれるディスク１１上の限られた特定領域にライトされて連続的に配置される。このためディスク１１上の拡張領域１１２は、「（広義の）バックアップ」のための領域という側面以外に、データの連続的な配置によりアクセス速度の点で不揮発性メモリ２２に準じる側面を持つ。不揮発性メモリ２２はアクセス速度は速いが容量が限られている。一方、ディスク１１は容量的には十分な余裕があるものの、データが当該ディスク１１上に分散して配置されると、当該データに対するアクセス速度は遅くなる。第３の変形例によれば、この両者を互いに補うような動作が可能となり、不揮発性メモリ２２を用いることの利点を更に生かせるようになる。このことは、ディスク１１上のバックアップ領域１１１についても同様である。
【０１４０】
以下、拡張領域１１２及び当該拡張領域１１２におけるデータ配置例について図１７を参照して説明する。図１７の例では、同図（ａ）乃至（ｃ）に示されるように、ディスク１１上のシリンダ番号が連続する複数のトラックが拡張領域１１２として割り当てられている。図において、網掛けが施された領域が、拡張領域１１２内で実際にデータが配置（記録）されている領域である。図１７（ａ）は、拡張領域１１２内でデータが完全に連続して配置されている例を示す。図１７（ｂ），（ｃ）の例は、拡張領域１１２内でデータが完全には連続してはいないものの連続的に配置されている例を示す。連続的な配置とは、データ間に数セクタまたは数シリンダの間隙があっても、シーク時間を含むアクセス時間についての効果が、完全に連続する配置の場合と同等となる配置を指す。具体的には、シーク時間を含むアクセス時間が、完全に連続する配置の場合のアクセス時間に対して、一定時間または一定比率（つまり閾値）を超えない配置を、連続的な配置と呼ぶ。このような配置及び完全に連続する配置を含めて、連続的な配置と定義する。
【０１４１】
これに対して、図１７（ｄ），（ｅ）は、拡張領域１１２内でデータが連続せずに配置されている例（連続的でない配置の例）を示す。この配置では、シーク時間を含むアクセス時間が、完全に連続する配置の場合のアクセス時間に対して、閾値を超える。
【０１４２】
さて、シリンダ番号が連続する複数のトラックが拡張領域１１２として割り当てられたとしても、当該拡張領域１１２に記憶されるデータ自体はライト／リードを繰り返すうちに分断化して、図１７（ｂ），（ｃ）の例のように、データ間に間隙が生じてくることが予測される。しかし、この分断化（間隙）は、拡張領域１１２の範囲内に限られ、図１７（ｄ），（ｅ）のようにディスク１１のほぼ全面にまたがることはない。このため、アクセス時間についての効果は、データ間に間隙がない場合とほぼ同等となる。
【０１４３】
上述の拡張領域１１２における連続的な配置／連続的でない配置についての記載はバックアップ領域１１１においても同様である。必要ならば、この記載における拡張領域１１２をバックアップ領域１１１に読み替えられたい。
【０１４４】
上記実施形態及びその変形例（第１乃至第３の変形例）においては、本発明を磁気ディスク装置（ＨＤＤ）に適用した場合について説明した。しかし本発明は、不揮発性メモリを備えたディスク記憶装置（ハイブリッドディスク記憶装置）であれば、光磁気ディスク装置など、磁気ディスク装置以外のディスク記憶装置にも適用することができる。
【０１４５】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【０１４６】
【図１】図１は本発明の一実施形態に係るハイブリッド磁気ディスク装置の構成を示すブロック図。
【図２】同実施形態で適用されるバックアップ処理の手順を示すフローチャート。
【図３】同実施形態で適用されるデータリード動作の手順を示すフローチャート。
【図４】同実施形態で適用される不揮発性メモリからデータをリードするリード処理の手順を示すフローチャート。
【図５】同実施形態で適用されるデータライト動作の手順を示すフローチャート。
【図６】同実施形態の第１の変形例で適用されるバックアップ処理の手順を示すフローチャート。
【図７】同実施形態の第２の変形例で適用されるバックアップ処理の手順を示すフローチャート。
【図８】同実施形態の第３の変形例を説明するために、不揮発性メモリのデータがディスク上の本来の領域に分散して書き出されている状態を示す図。
【図９】同実施形態の第３の変形例を説明するために、不揮発性メモリのデータがディスク上の特定の領域ににまとめて書き出されている状態を示す図。
【図１０】上記第３の変形例で適用される不揮発性メモリから拡張領域へのデータ書き出し動作の手順を示すフローチャート。
【図１１】上記第３の変形例で適用されるデータリード動作の手順を示すフローチャート。
【図１２】上記第３の変形例で適用されるデータライト動作の手順を示すフローチャート。
【図１３】同実施形態で適用される不揮発性メモリ管理テーブルのデータ構造例を示す図。
【図１４】図１３に示す不揮発性メモリ管理テーブルに含まれるキャッシュテーブルによって示されるバックアップ済みマーク及びディスクフラッシュ済みマークの全ての組み合わせと、各組み合わせに対応した状態相互間の状態遷移とを示す図。
【図１５】上記第３の変形例で適用される不揮発性メモリ管理テーブルのデータ構造例を示す図。
【図１６】図１５に示す不揮発性メモリ管理テーブルに含まれるキャッシュテーブルによって示される拡張領域使用マーク、バックアップ済みマーク及びディスクフラッシュ済みマークの全ての組み合わせと、各組み合わせに対応した状態相互間の状態遷移とを示す図。
【図１７】拡張領域１１２における連続的な配置／連続的でない配置の例を示す図。
【符号の説明】
【０１４７】
１１…ディスク、１２…ヘッド、１９…ＨＤＣ（ディスクコントローラ）、２０…ＣＰＵ、２１…ＲＯＭ、２２…不揮発性メモリ、１１１…バックアップ領域（特定領域）、１１２…拡張領域（特定領域）、１３０，１５０…不揮発性メモリ管理テーブル、１３１，１５１…キャッシュテーブル、１３２，１５２…メモリリンクテーブル、１１５３…拡張領域リンクテーブル。
【図１】
2008140459.tif 000003
【図２】
2008140459.tif 000004
【図３】
2008140459.tif 000005
【図４】
2008140459.tif 000006
【図５】
2008140459.tif 000007
【図６】
2008140459.tif 000008
【図７】
2008140459.tif 000009
【図８】
2008140459.tif 000010
【図９】
2008140459.tif 000011
【図１０】
2008140459.tif 000012
【図１１】
2008140459.tif 000013
【図１２】
2008140459.tif 000014
【図１３】
2008140459.tif 000015
【図１４】
2008140459.tif 000016
【図１５】
2008140459.tif 000017
【図１６】
2008140459.tif 000018
【図１７】
2008140459.tif 000019