(57)【要約】【課題】不揮発性キャッシュの空き領域不足に起因する書き込み動作の遅れの発生を防止することが可能な情報記録装置を実現する。【解決手段】コントローラ１６は、バッファ１４に格納されたライトデータをハードディスク１３に書き込むことを指示するホスト装置２０からのコマンドを受信した場合、不揮発性メモリ１５の空き容量が所定のデータサイズよりも少ないか否かを判別し、空き容量が所定のデータサイズよりも少ない場合には、不揮発性メモリ１５に格納されている所定のデータの内で、ハードディスク１３上に同一のデータが存在する同期データを削除して空き容量を増加させ、バッファ１４に格納されたライトデータを不揮発性メモリ１５にライトする。【選択図】      図１
2009181314.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記録媒体と、
前記不揮発性記録媒体に対するキャッシュとして機能し、ホスト装置に対してリードすべき所定のデータと前記不揮発性記録媒体にライトすべきライトデータの格納に使用される不揮発性メモリと、
前記ホスト装置から送信されるライトデータを一時的に格納するバッファと、
前記ホスト装置からリード要求を受信した場合、前記リード要求に含まれるアドレスに応じて前記不揮発性記録媒体および前記不揮発性メモリから選択的にデータをリードし、前記バッファに格納されたライトデータを前記不揮発性記録媒体に書き込むことを指示する前記ホスト装置からの所定のコマンドを受信した場合、前記不揮発性メモリの空き容量が所定のデータサイズよりも少ないか否かを判別し、前記空き容量が前記所定のデータサイズよりも少ない場合には、前記不揮発性メモリに格納されている前記所定のデータの内で、前記不揮発性記録媒体上に同一のデータが存在する同期データを削除して前記空き容量を増加させ、前記バッファに格納されたライトデータを前記不揮発性メモリにライトする制御手段とを具備することを特徴とする情報記録装置。
【請求項２】
前記制御手段は、前記同期データそれぞれに対する前記ホスト装置によるアクセス頻度に基づいて、前記同期データの内でアクセス頻度が低い同期データを優先的に削除することを特徴とする請求項１記載の情報記録装置。
【請求項３】
前記制御手段は、前記同期データそれぞれに対する前記ホスト装置によるアクセス頻度に基づいて、前記同期データの内でアクセス頻度が低い同期データそれぞれを前記不揮発性メモリ内における所定の記憶領域に集めるためのデータ移動処理を、前記情報記録装置の通常動作期間中に実行することを特徴とする請求項２記載の情報記録装置。
【請求項４】
前記不揮発性メモリは複数の消去ブロックを含むフラッシュメモリから構成されており、前記制御手段は、前記同期データそれぞれに対する前記ホスト装置によるアクセス頻度に基づいて、前記同期データの内でアクセス頻度が低い同期データそれぞれを前記フラッシュメモリ内の所定の１以上の消去ブロックに集めるためのデータ移動処理を、前記情報記録装置の通常動作期間中に実行し、
前記制御手段は、前記同期データの内でアクセス頻度が低い同期データそれぞれを削除するために、前記所定の１以上の消去ブロック内のデータ全体を消去するブロックイレーズ処理を実行することを特徴とする請求項２記載の情報記録装置。
【請求項５】
前記データ移動処理は、前記アクセス頻度が低い同期データの中で、論理ブロックアドレスが互いに近接した同期データ同士を同一の消去ブロックに集めることを特徴とする請求項４記載の情報記録装置。
【請求項６】
前記制御手段は、前記所定の消去ブロック内から削除された同期データそれぞれを前記不揮発性記憶媒体からリードして前記不揮発性メモリに再書き込みする再書き込み手段を含むことを特徴とする請求項５記載の情報記録装置。
【請求項７】
前記不揮発性記録媒体は、回転媒体であるハードディスクを含み、
前記制御手段は、前記ハードディスクが回転停止されている状態で、前記バッファに格納されたライトデータを前記不揮発性メモリに書き込むことを特徴とする請求項１記載の情報記録装置。
【請求項８】
前記不揮発性記録媒体は、回転媒体であるハードディスクを含み、
前記制御手段は、前記バッファに格納されたライトデータの一部を前記ハードディスクに書き込む処理と、前記バッファに格納されたライトデータの残りを前記不揮発性メモリに書き込む処理とを並行して実行することを特徴とする請求項１記載の情報記録装置。
【請求項９】
不揮発性記録媒体と、前記不揮発性記録媒体に対するキャッシュとして機能し、ホスト装置に対してリードすべき所定のデータと前記不揮発性記録媒体にライトすべきライトデータの格納に使用される不揮発性メモリと、前記ホスト装置から送信されるライトデータを一時的に格納するバッファとを含む情報記録装置の動作を制御する制御方法であって、
前記ホスト装置からリード要求を受信した場合、前記リード要求に含まれるアドレスに応じて前記不揮発性記録媒体および前記不揮発性メモリから選択的にデータをリードするステップと、
前記バッファに格納されたライトデータを前記不揮発性記録媒体に書き込むことを指示する前記ホスト装置からの所定のコマンドを受信した場合、前記不揮発性メモリの空き容量が所定のデータサイズよりも少ないか否かを判別するステップと、
前記空き容量が前記所定のデータサイズよりも少ない場合には、前記不揮発性メモリに格納されている前記所定のデータの内で、前記不揮発性記録媒体上に同一のデータが存在する同期データを削除して前記空き容量を増加させるデータ削除ステップと、
前記前記空き容量を増加された後、前記バッファに格納されたライトデータを前記不揮発性メモリにライトするステップとを具備することを特徴とする制御方法。
【請求項１０】
前記データ削除ステップは、前記同期データそれぞれに対する前記ホスト装置によるアクセス頻度に基づいて、前記同期データの内でアクセス頻度が低い同期データを優先的に削除することを特徴とする請求項９記載の制御方法。
【請求項１１】
前記同期データそれぞれに対する前記ホスト装置によるアクセス頻度に基づいて、前記同期データの内でアクセス頻度が低い同期データそれぞれを前記不揮発性メモリ内における所定の記憶領域に集めるためのデータ移動処理を、前記情報記録装置の通常動作期間中に実行するステップをさらに具備することを特徴とする請求項１０記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は例えばキャッシュとして機能する不揮発性メモリを備えた情報記録装置およびその制御方法に関する。
【背景技術】
【０００２】
一般に、パーソナルコンピュータのような情報処理装置においては、ハードディスクドライブのような情報記録装置が用いられている。情報記録装置は、ハードディスクのような不揮発性記録媒体に情報を格納する。
【０００３】
最近では、不揮発性記録媒体に対するキャッシュとして機能する不揮発性メモリを備えた情報記録装置も開発されている。この不揮発性メモリは、通常、不揮発性キャッシュと称されている。不揮発性キャッシュを備えた情報記録装置は、ホストによって指定されたデータに対するリード／ライトアクセスを高速に実行することができる。またハードディスクを回転させることなくデータをアクセスできるので、情報記録装置の電力消費を削減できるという利点もある。
【０００４】
特許文献１には、ハードディスクと不揮発性メモリとを有した記録装置が開示されている。この記録装置は、外部からのアクセス要求に応じてハードディスクと不揮発性メモリの一方若しくは双方へのアクセスを実行する機能を有している。
【特許文献１】特開２００５−１９０１８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、不揮発性キャッシュの記憶領域のほとんどが使用されており空き領域が不足している場合は、ホストからのライトデータを不揮発性キャッシュに書き込むことができないので、ハードディスクにライトデータを書き込むことが必要になる。
【０００６】
この場合、もしハードディスクが回転停止状態であったならば、ハードディスクをスピンアップさせなければならず、ハードディスクへのライトデータの書き込みが完了するまでに非常に多くの時間が必要になる。また、たとえハードディスクが回転している状態であっても、シークによるレイテンシにより、ライトデータの書き込みが完了するまでには多くの時間がかかる。
【０００７】
よって、不揮発性キャッシュの空き領域不足が発生すると、情報記録装置の書き込み動作の遅れが生じることになる。もしライトデータの書き込みが完了する前に停電のような電源異常が発生すると、ライトデータがロストされてしまうことになる。
【０００８】
本発明は上述の事情を考慮してなされたものであり、不揮発性キャッシュの空き領域不足に起因する書き込み動作の遅れの発生を防止することが可能な情報記録装置および制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の課題を解決するため、本発明の情報記録装置は、不揮発性記録媒体と、前記不揮発性記録媒体に対するキャッシュとして機能し、ホスト装置に対してリードすべき所定のデータと前記不揮発性記録媒体にライトすべきライトデータの格納に使用される不揮発性メモリと、前記ホスト装置から送信されるライトデータを一時的に格納するバッファと、前記ホスト装置からリード要求を受信した場合、前記リード要求に含まれるアドレスに応じて前記不揮発性記録媒体および前記不揮発性メモリから選択的にデータをリードし、前記バッファに格納されたライトデータを前記不揮発性記録媒体に書き込むことを指示する前記ホスト装置からの所定のコマンドを受信した場合、前記不揮発性メモリの空き容量が所定のデータサイズよりも少ないか否かを判別し、前記空き容量が前記所定のデータサイズよりも少ない場合には、前記不揮発性メモリに格納されている前記所定のデータの内で、前記不揮発性記録媒体上に同一のデータが存在する同期データを削除して前記空き容量を増加させ、前記バッファに格納されたライトデータを前記不揮発性メモリにライトする制御手段とを具備することを特徴とする。
【００１０】
また、本発明は、不揮発性記録媒体と、前記不揮発性記録媒体に対するキャッシュとして機能し、ホスト装置に対してリードすべき所定のデータと前記不揮発性記録媒体にライトすべきライトデータの格納に使用される不揮発性メモリと、前記ホスト装置から送信されるライトデータを一時的に格納するバッファとを含む情報記録装置の動作を制御する制御方法であって、前記ホスト装置からリード要求を受信した場合、前記リード要求に含まれるアドレスに応じて前記不揮発性記録媒体および前記不揮発性メモリから選択的にデータをリードするステップと、前記バッファに格納されたライトデータを前記不揮発性記録媒体に書き込むことを指示する前記ホスト装置からの所定のコマンドを受信した場合、前記不揮発性メモリの空き容量が所定のデータサイズよりも少ないか否かを判別するステップと、前記空き容量が前記所定のデータサイズよりも少ない場合には、前記不揮発性メモリに格納されている前記所定のデータの内で、前記不揮発性記録媒体上に同一のデータが存在する同期データを削除して前記空き容量を増加させるデータ削除ステップと、前記前記空き容量を増加された後、前記バッファに格納されたライトデータを前記不揮発性メモリにライトするステップとを具備することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、不揮発性キャッシュの空き領域不足に起因する書き込み動作の遅れの発生を防止することが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して本発明の実施形態を説明する。
【００１３】
図１は、本発明の一実施形態に係る情報記録装置１１の構成を示している。この情報記録装置１１はホスト装置２０からのアクセス要求に応じて不揮発性記憶媒体に対するデータのライトおよびリードを実行する装置である。この情報記録装置１１は、不揮発性記憶媒体に加え、この不揮発性記憶媒体に対するキャッシュとして機能する不揮発性メモリを備えている。不揮発性メモリの記憶容量は不揮発性記憶媒体の記憶容量よりも少ないが、不揮発性メモリは、データのリードおよびライトのためのデータ転送を不揮発性記憶媒体よりも高速に実行することができる。以下では、情報記録装置１１が、不揮発性メモリを備えたハードディスクドライブ（ＨＤＤ）であるハイブリッドＨＤＤとして実現されている場合を想定する。この場合、不揮発性記憶媒体は、回転媒体であるハードディスクによって実現される。
【００１４】
即ち、情報記録装置１１は、各種の回路ブロックが内蔵されたＬＳＩ１２、ハードディスク１３、バッファ１４、および不揮発性メモリ１５、等を備えている。
【００１５】
不揮発性メモリ１５は、不揮発性記憶媒体（永久記憶媒体とも云う）であるハードディスク１３に対するキャッシュ（不揮発性キャッシュ）として機能する半導体メモリである。不揮発性メモリ１５は、例えば、フラッシュメモリ（フラッシュＥＥＰＲＯＭ）等によって実現されている。不揮発性メモリ１５は、情報記録装置１１からホスト装置２０に対して高速にリードすべき所定のデータの格納と、ハードディスク１３にライトすべきライトデータの格納とに使用される。
【００１６】
通常のＨＤＤにおいては、ソフトウェア（オペレーティングシステム内のカーネル、デバイスドライバ、アプリケーションプログラム、等）及びユーザデータの全てがハードディスク１３にのみ格納されるが、本実施形態の情報記録装置１１においては、それらソフトウェアの一部のコピー、またはハードディスク１３に格納されたユーザデータの一部のコピー等を、不揮発性メモリ１５に、ホスト装置２０に対して高速にリードすべきデータとして格納しておくことができる。これにより、各種データ（ソフトウェア、ユーザデータ）を情報記録装置１１からホスト装置２０に対して高速に転送することが可能となる。
【００１７】
不揮発性メモリ１５にハードディスク１３内のどのデータを保持すべきであるかは、ホスト装置２０が指定することができる。情報記録装置１１は、ホスト装置２０によって指定された各論理ブロックアドレス（ＬＢＡ）に対応するデータ（データブロックとも云う）をハードディスク１３から不揮発性メモリ１５にロードする。ロードされたデータは、不揮発性メモリ１５上に恒常的に保持され得る。
【００１８】
また、情報記録装置１１は、ホスト装置２０によって指定された各論理ブロックアドレス（ＬＢＡ）に対応するデータのみならず、例えば、ホスト装置２０がリード要求する可能性高い各論理ブロックアドレス（ＬＢＡ）を自ら推定し、その推定された各論理ブロックアドレス（ＬＢＡ）に対応するデータをハードディスク１３からロードして不揮発性メモリ１５に保持しておくこともできる。
【００１９】
また、情報記録装置１１においては、ホスト装置２０によってライト要求された、ハイバネーションファイルのようなデータを、不揮発性メモリ１５に保持することもできる。
【００２０】
さらに、不揮発性メモリ１５は、ハードディスク１３にライトすべきライトデータを一時的に格納するためのライトキャッシュとしても活用される。即ち、ホスト装置２０から送信されるライトデータは不揮発性メモリ１５に一時的に格納される。そして、例えば、不揮発性メモリ１５内のライトキャッシュ用の記憶領域がライトデータ（ライトされるべきデータブロック群）で満たされた時や情報記録装置がアイドル状態となりハードディスク１５に書き込みが可能な場合に、不揮発性メモリ１５内のライトデータそれぞれがハードディスク１３に書き込まれる。
【００２１】
バッファ１４は、通常のＨＤＤ内に設けられているＤＲＡＭキャッシュに相当するものであり、ホスト装置２０から送信されるライトデータを一時的に格納するライトバッファとして機能し得る。このバッファ１４は、ＤＲＡＭ、ＳＤＲＡＭといった揮発性メモリから構成されている。バッファ１４のリード／ライトアクセス速度は不揮発性メモリ１５よりも高速であるが、バッファ１４の記憶容量は不揮発性メモリ１５よりも少ない。ホスト装置２０によるライトサイクルは、ホスト装置２０から送信されるライトデータがバッファ１４に格納された時点で完了される。
【００２２】
例えばホスト装置２０からのキュッシュフラッシュコマンドを受信した時、情報記録装置１１は、バッファ１４に蓄積されているライトデータを、不揮発性メモリ１５にライトする。キュッシュフラッシュコマンドは、バッファ１４に格納されているライトデータをハードディスク１３に書き込むことを指示するコマンドである。
【００２３】
このように、バッファ１４に格納されたライトデータをハードディスク１３ではなく、不揮発性メモリ１５にライトすることにより、バッファ１４上のライトデータを安全な不揮発の安全な記憶場所に高速に保存することができる。
【００２４】
ＬＳＩ１２は情報記録装置１１の動作を制御する電子回路であり、コントローラ１６、ディスクインタフェース１７、バッファインタフェース１８、メモリインタフェース１９、ホストインタフェース２１等を備えている。コントローラ１６は、ホスト装置２０からの各種コマンドに応じて情報記録装置１１の動作を制御する。このコントローラ１６は、ホストインタフェース２１を介してホスト装置２０との通信を実行する。ホスト装置２０とコントローラ１６との間の通信は、例えばATA8-ACS規格で規定された各種コマンドを用いて実行される。
【００２５】
ディスクインタフェース１７はコントローラ１６とハードディスク１３との間のデータ転送を実行する。ハードディスク１３へのデータのライトおよびハードディスク１３からのデータのリードは、情報記録装置１１内に設けられた機械的な駆動機構を用いて実行される。この駆動機構は、ハードディスク１３を回転させるスピンドルモータ、ヘッド、およびこのヘッドをハードディスク１３の半径方向に移動するためのアクチュエータ等を含んでいる。
【００２６】
メモリインタフェース１９はコントローラ１６と不揮発性メモリ１５との間のデータ転送を実行する。このメモリインタフェース１９は不揮発性メモリ１５をアクセス制御するメモリコントローラから構成されている。
【００２７】
バッファインタフェース１８はコントローラ１６とバッファ１４との間のデータ転送を実行する。このバッファインタフェース１８は、例えばＤＲＡＭコントローラから構成されている。
【００２８】
コントローラ１６は管理テーブル１６１を備えており、この管理テーブル１６１を用いて、不揮発性メモリ１５の内容を管理する。具体的には、管理テーブル１６１においては、不揮発性メモリ１５に格納されている個々のデータブロック毎に、管理情報が格納されている。管理情報は、データブロックが格納されている不揮発性メモリ１５内の位置を示す物理アドレス、そのデータブロックの論理ブロックアドレス（ＬＢＡ）、そのデータブロックのデータサイズ、およびデータブロックの属性、等を示す。属性は、そのデータブロックが不揮発性メモリ１５内に保持すべきことが指定されたＬＢＡに対応するデータ（pinned data）であるか否かを示す。
【００２９】
ホスト装置２０からリード要求（リードコマンド）を受信した場合、コントローラ１６は、そのリードコマンドに含まれるアドレス（ＬＢＡ）に応じて、不揮発性メモリ１５およびハードディスク１３から選択的にデータをリードする。
【００３０】
具体的には、コントローラ１６は、管理テーブル１６１を参照して、リードコマンドによって指定されたＬＢＡに対応するデータが不揮発性メモリ１５上に存在するか否かを判別する。リードコマンドによって指定されたＬＢＡに対応するデータが不揮発性メモリ１５上に存在するならば、コントローラ１６は、そのデータを不揮発性メモリ１５からリードする。リードコマンドによって指定されたＬＢＡに対応するデータが不揮発性メモリ１５上に存在しないならば、コントローラ１６は、そのデータをハードディスク１３からリードする。
【００３１】
また、コントローラ１６は、不揮発性キャッシュである不揮発性メモリ１５の空き領域不足に起因する書き込み動作の遅れの発生を防止するために、不揮発性メモリ１５に保持されているデータ内の一部を一時的に削除して、不揮発性メモリ１５の空き領域を増やす機能を有している。
【００３２】
すなわち、不揮発性メモリ１５の記憶領域のほとんどが使用されており、不揮発性メモリ１５の空き容量が不足している場合は、バッファ１４に蓄積されたライトデータを不揮発性メモリ１５にライトすることができない。この場合、通常であれば、ハードディスク１３にライトデータを書き込むことが必要になり、これにより書き込み動作の遅れが発生する。もし、ハードディスク１３へのライトが完了する前に停電のような電源異常が発生すると、ライトデータはロストしてしまうことになる。
【００３３】
したがって、不揮発性メモリ１５の空き領域が不足している場合であっても、バッファ１４に蓄積されたライトデータを不揮発性メモリ１５に保存できるようにすることが重要である。これを実現するため、コントローラ１６は、例えば上述のキュッシュフラッシュコマンドを受信した時に、以下の処理を実行する。
【００３４】
すなわち、コントローラ１６は、不揮発性メモリ１５の空き容量が所定のデータサイズよりも少ないか否かを判別し、空き容量が所定のデータサイズよりも少ない場合には、不揮発性メモリ１５に保持されているデータ（例えば、pinned data等）の内で、ハードディスク１３上に同一のデータが存在するデータ（同期データ）を一時的に削除して不揮発性メモリ１５の空き容量を増加させる。そして、コントローラ１６は、バッファ１４に格納されたライトデータを、不揮発性メモリ１５にライトする。これにより、不揮発性メモリ１５の空き領域が不足している場合であっても、バッファ１４に蓄積されたライトデータを不揮発性メモリ１５に高速に保存することができ、ライトデータの安全性を高めることが出来る。
【００３５】
同期データ（メディア同期データとも云う）はその同期データと同一のデータがハードディスク１３上にも存在しているデータである。したがって、不揮発性メモリ１５から同期データを削除しても、その同期データを不揮発性メモリ１５上に復元することができる。
【００３６】
本実施形態においては、上述の同期データ削除処理は、バッファ１４のライトデータを不揮発性メモリ１５に高速に保存することが必要なイベントの発生に応答して実行される。このイベントの発生要因としては、上述のキャッシュフラッシュコマンドの受信のみならず、他の要因もある。例えば、ヘッドがランプに緊急退避されている状態でバッファ１４にライトデータが書き込まれた時にも、上述の同期データ削除処理が実行される。さらに、図４で後述する高速フラッシュ処理の実行を指示するコマンドをホスト装置２０から受信した時も、上述の同期データ削除処理が実行される。
【００３７】
図２には、コントローラ１６の構成例が示されている。
【００３８】
コントローラ１６は、上述の同期データ削除処理を実行するために、同期データ削除部２０１、再書き込み処理部２０２、アクセス頻度検出処理部２０３、およびデータ移動処理部２０４を備えている。
【００３９】
同期データ削除部２０１は、不揮発性メモリ１５の空き容量が所定のデータサイズ（例えば、不揮発性メモリ１５に書き込むべきライトデータのデータサイズ）よりも少ない場合、不揮発性メモリ１５に格納されているデータの中から同期データを選択し、その同期データを削除する処理を実行する。例えば、同期データ削除部２０１は、不揮発性メモリ１５に保持されている、ホスト装置２０によって指定されたＬＢＡそれぞれに対応するデータブロック群の内、ハードディスク１３からロードされたデータブロックの各々を同期データとして選択する。この場合、同期データ削除部２０１は、不揮発性メモリ１５に格納されている同期データそれぞれに対するホスト装置２０によるアクセス頻度に基づいて、不揮発性メモリ１５に格納されている同期データの内でアクセス頻度が低い同期データを優先的に削除する。すなわち、同期データであるデータブロックの内で、使用頻度の低いデータブロックが優先的に削除される。これにより、同期データの削除に起因するリードアクセス性能の低下を最小限に抑えることが出来る。
【００４０】
なお、上述したように、コントローラ１６は、ホスト装置２０がリード要求する可能性高い各論理ブロックアドレス（ＬＢＡ）を自ら推定し、その推定した各論理ブロックアドレス（ＬＢＡ）に対応するデータブロックをハードディスク１３から不揮発性メモリ１５にロードすることもできる。したがって、このようなデータブロックを同期データとして選択してもよい。
【００４１】
再書き込み処理部２０２は、削除された同期データを不揮発性メモリ１５上に復元するために、同期データ削除部２０１によって不揮発性メモリ１５から削除されたデータブロックそれぞれをハードディスク１３からリードして不揮発性メモリ１５にライトする。この再書き込み処理は、例えば、不揮発性メモリ１５に蓄積されたライトデータをハードディスク１３にライトした後に実行される。
【００４２】
アクセス頻度検出処理部２０３は、不揮発性メモリ１５に保持されているデータブロックそれぞれのアクセス頻度を管理する処理を実行する。具体的には、アクセス頻度検出処理部２０３は、不揮発性メモリ１５に保持されているデータブロック毎に、ホスト装置２０によるリードアクセス／ライトアクセスの回数等をカウントする。なお、必ずしも実際のアクセス回数そのものを厳密にカウントする必要はない。例えば、情報記録装置１１のパワーサイクル（情報記録装置１１がパワーオンされてからパワーオフされるまでの期間）中におけるアクセスの有無をデータブロック毎に管理してもよい。この場合、一回のパワーサイクルで１度以上アクセスされたデータブロックに対応するアクセス回数の値は１となる。一回のパワーサイクルで１度もアクセスされなかったデータブロックに対応するアクセス回数の零となる。また、不揮発性メモリ１５に格納されている同期データのみを対象にそのアクセス回数を管理してもよい。
【００４３】
データ移動処理部２０４は、不揮発性メモリ１５上の同期データそれぞれのアクセス頻度に基づいて、それら同期データの内でアクセス頻度が低い同期データそれぞれを不揮発性メモリ１５内における所定の記憶領域に集めるためのデータ移動処理を、情報記録装置１１の通常動作期間中に実行する。つまり、不揮発性メモリ１５に格納されているデータブロックの内で、同期データであり且つアクセス頻度が低いデータブロックは、事前に不揮発性メモリ１５内の所定の記憶領域に集められる。このように消去対象となるデータブロックそれぞれをまとめることにより、連続した記憶領域を空き領域に設定することができるので、その空き領域にライトデータを効率よく書き込むことが可能となる。
【００４４】
不揮発性メモリ１５が複数の消去ブロックを含むフラッシュメモリから構成されている場合には、データ移動処理においては、同期データの内でアクセス頻度が低い同期データそれぞれが特定の１以上の消去ブロックに集められる。フラッシュメモリからデータを削除する処理は消去ブロック単位で実行されるので、同期データであり且つアクセス頻度が低いデータブロックそれぞれを事前に特定の１以上の消去ブロックに集めておくことにより、同期データ削除部２０１はその特定の消去ブロックに対するブロックイレーズ処理を実行するだけで、アクセス頻度が低い同期データそれぞれをまとめて消去する事が出来る。よって、同期データ削除処理を高速に実行することが可能となり、必要な空き領域をより早く確保することが可能となる。
【００４５】
また、データ移動処理においては、アクセス頻度が低い同期データそれぞれのＬＢＡに基づき、アクセス頻度が低い同期データの中で、ＬＢＡが互いに近接した同期データ同士を同一の消去ブロックに集める処理が実行される。これにより、消去されたデータブロックそれぞれをハードディスク１３から不揮発性メモリ１５に書き戻すための再書き込み処理を高速化することができる。
【００４６】
図３は、キュッシュフラッシュコマンドの受信時に実行される、ライトデータを不揮発性メモリ１５にライトするための書き込み動作を示している。
【００４７】
上述したように、コントローラ１６は、ホスト装置２０からのキュッシュフラッシュコマンドの受信に応答して、バッファ１４上のライトデータを不揮発性メモリ１５にライトするための処理（フラッシュ処理）を実行する。このフラッシュ処理は、ハードディスク１３の回転を停止した状態で行うことができる。しかし、このフラッシュ処理を実行するためには、不揮発性メモリ１５上に十分な空き領域、すなわちデータを自由に書き込める領域が確保できている事が前提となる。
【００４８】
不揮発性メモリ１５上においては、ホスト装置２０によって指定されたＬＢＡそれぞれに対応するデータブロック群（pinned data）と、ハードディスク１３にライトすべきライトデータとが混在している。
【００４９】
不揮発性メモリ１５に格納されているライトデータはハードディスク１３に未書き込みの新しいデータである。よって、不揮発性メモリ１５に格納されているライトデータは、ハードディスク１３に同一のデータが存在しない非同期データ（メディア非同期データ）である。
【００５０】
一方、ホスト装置２０によって指定されたＬＢＡそれぞれに対応するデータブロック群の中には、同一のデータがハードディスク１３上に存在する同期データ（メディア同期データ）も含まれている。例えば、ハードディスク１３から不揮発性メモリ１５にロードされたデータブロックは同期データである。また、ホスト装置２０から送られてきたデータブロックであっても、同一のデータがハードディスク１３上に存在する場合もある。
【００５１】
そこで、本実施形態では、不揮発性メモリ１５の空き容量が不足している場合には、コントローラ１６は、不揮発性メモリ１５に保持されているデータ（例えば、pinned data等）の内、同期データを選択し、その同期データを一時的に削除して、不揮発性メモリ１５に空き容量を増大させる。この場合、コントローラ１６は、削除した同期データに対応する管理情報を管理テーブル１６１から削除するために、管理テーブル１６１を更新する処理も実行する。
【００５２】
そして、コントローラ１６は、ライトバッファ１４に蓄積されているライドデータそれぞれを、同期データの削除によって確保された不揮発性メモリ１５の空き領域にライトする。このように、同期データのみを削除対象とすることにより、データ削除に起因する不具合は生じない。
【００５３】
以上の処理により、本実施形態では、たとえ不揮発性メモリ１５の記憶領域のほとんどが使用されているような状態であっても、ライトデータを書き込むための領域を不揮発性メモリ１５上に確保することができ、ライトデータを不揮発性メモリ１５に保存することができる。したがって、キャッシュフラッシュコマンドに対するレスポンス性能を高めることが出来ると共に、電源異常等に起因してライトデータがロストする可能性も低減することができる。さらに、バッファ１４上のライトデータを不揮発性メモリ１５に書き込む処理は、ハードディスク１３の回転が停止されている状態で行うことが出来るので、ハードディスク１３の回転による電力消費の増大も防止することができる。
【００５４】
次に、図４を参照して、ライトデータの書き込み動作の他の例として、高速データフラッシュ処理の動作を説明する。
【００５５】
この高速データフラッシュ処理は、バッファ１４に蓄積されている全てのライトデータを不揮発性メモリ１５にライトするのではなく、バッファ１４に蓄積されているライトデータの一部をハードディスク１３にライトし、バッファ１４に蓄積されているライトデータの残りを不揮発性メモリ１５にライトする処理である。ハードディスク１３に対するライト動作と、不揮発性メモリ１５に対するライト動作は、並行して実行される。
【００５６】
すなわち、ホスト装置２０からのキュッシュフラッシュコマンドの受信に応答して、または高速データフラッシュ処理の実行を明示的に指示するコマンドをホスト装置２０から受信した時、コントローラ１６は、バッファ１４に蓄積されているライトデータ群（データブロック群）の中から、ハードディスク１３に高速にライトすることが可能なデータブロック群（例えば、ＬＢＡが連続するデータブロック群など）を選択し、それら選択したデータブロック群をハードディスク１３にライトする。この場合、選択されたデータブロック群をＬＢＡの順に並べ替えるリオーダリング処理も実行される。
【００５７】
ハードディスク１３へのライトと同時に、コントローラ１６は、バッファ１４に蓄積されているライトデータ群の内、選択されたデータブロック群以外の残りのデータブロック群を不揮発性メモリ１５にライトする。
【００５８】
もし、不揮発性メモリ１５の空き容量が、不揮発性メモリ１５にライトすべきデータブロック群のデータサイズよりも少ない場合には、コントローラ１６は、不揮発性メモリ１５に保持されているデータ（例えば、pinned data等）の内、同期データを選択し、その同期データを一時的に削除して、空き容量を確保する。これにより、不揮発性メモリ１５の空き容量が不足している状態においても、高速データフラッシュ処理を実行することができる。
【００５９】
次に、図５のフローチャートを参照して、情報記録装置１１の通常動作期間中にバックグラウンドで実行されるデータ移動処理について説明する。
【００６０】
本実施形態においては、同期データ削除処理を効率よく実行するために、以下の移動処理が実行される。
【００６１】
すなわち、コントローラ１６は、不揮発性メモリ１５に保持されている各データブロック毎にホスト装置２０によるリードアクセス回数をカウントする（ステップＳ１０１）。そして、コントローラ１６は、情報記録装置１１内部においてＧａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ処理またはＷｅａｒ  Ｌｅｖｅｌｉｎｇ処理を実行する時、または情報記録装置１１のアイドル時などに、不揮発性メモリ１５に保持されているデータブロックそれぞれに対応するアクセス回数に基づいて、不揮発性メモリ１５に保持されているデータブロックそれぞれを並べ替えるためのデータ移動処理を実行する（ステップＳ１０２，Ｓ１０３）。
【００６２】
ステップＳ１０２においては、コントローラ１６は、不揮発性メモリ１５に格納されているデータブロックの内で、同期データであり且つアクセス頻度が低いデータブロックそれぞれを選択する。そして、ステップＳ１０３において、コントローラ１６は、図６に示されているように、メディア同期データで且つアクセス頻度が低いデータブロックそれぞれが特定の消去ブロックに集められるように、不揮発性メモリ１５に保持されているデータブロックそれぞれを並べ替える。
【００６３】
さらに、ステップＳ１０３のデータ移動処理においては、コントローラ１６は、メディア同期データで且つアクセス頻度が低いデータブロックそれぞれのＬＢＡをも考慮して、ＬＢＡが互いに近接したデータブロック同士が同一の消去ブロックに集められるように、並べ替えを行う。この並べ替えの様子を図７に示す。図７においては、ＬＢＡ＝１００のデータブロック、ＬＢＡ＝２００００のデータブロック、ＬＢＡ＝１８０のデータブロック、ＬＢＡ＝２１０００のデータブロック、ＬＢＡ＝２０のデータブロック、ＬＢＡ＝１６０００のデータブロックが、メディア同期データで且つアクセス頻度が低いデータブロックである。ＬＢＡが互いに近接したデータブロック同士、つまりある一定のＬＢＡ範囲内に属するＬＢＡを有するデータブロック同士は同じ消去ブロックに移動される。図７においては、ＬＢＡ＝１００のデータブロック、ＬＢＡ＝１８０のデータブロック、ＬＢＡ＝２０のデータブロックは、消去ブロック１に集められている。また、ＬＢＡ＝２００００のデータブロック、ＬＢＡ＝２１０００のデータブロック、ＬＢＡ＝１６０００のデータブロックは、消去ブロック２に集められている。
【００６４】
同期データ削除処理においては、ライトデータのデータサイズに応じて、イレーズ対象とされる消去ブロックの数が変わる。もし同期データ削除処理において例えば消去ブロック１のみがイレーズされた場合には、再書き込み処理では、消去ブロック１に格納されていた、ＬＢＡ＝１００のデータブロック、ＬＢＡ＝１８０のデータブロック、ＬＢＡ＝２０のデータブロックをハードディスク１３から不揮発性メモリ１５に書き戻す処理を実行することが必要となる。この場合、ＬＢＡ＝１００のデータブロック、ＬＢＡ＝１８０のデータブロック、ＬＢＡ＝２０のデータブロックは互いにハードディスク１３上の隣接する記憶位置（例えば、同一トラック上、または隣接する２つのトラック上）に存在するので、これらデータブロックを効率よくハードディスク１３からリードすることができ、再書き込み処理の高速化を実現することが可能になる。
【００６５】
次に、図８のフローチャートを参照して、ライトデータを不揮発性メモリ１５にライトするための書き込み動作の手順を説明する。
【００６６】
バッファ１４のライトデータを不揮発性メモリ１５に高速に保存することが必要な要因が発生した時、例えば、ホスト装置２０からのキャッシュフラッシュコマンドを受信した時（ステップＳ２０１）、コントローラ１６は、不揮発性メモリ１５の空き容量をチェックする（ステップＳ２０２）。そして、コントローラ１６は、不揮発性メモリ１５の空き容量とバッファ１４に蓄積されているライトデータのデータサイズとを比較して、不揮発性メモリ１５の空き容量がライトデータのデータサイズよりも少ないか否かを判別する（ステップＳ２０３）。
【００６７】
不揮発性メモリ１５の空き容量がライトデータのデータサイズ以上であるならば（ステップＳ２０３のＮＯ）、コントローラ１６は、バッファ１４に蓄積されているライトデータを不揮発性メモリ１５にライトする（ステップＳ２０４）。
【００６８】
不揮発性メモリ１５の空き容量がライトデータのデータサイズよりも少ないならば（ステップＳ２０３のＹＥＳ）、コントローラ１６は、不足サイズ（不足サイズ＝ライトデータのデータサイズ−不揮発性メモリ１５の空き容量）を算出する（ステップＳ２０５）。そして、コントローラ１６は、不足サイズに基づいて、不揮発性メモリ１５に保持されているデータブロック群の中から、削除すべきデータブロック群を決定する（ステップＳ２０６）。ステップＳ２０６においては、不揮発性メモリ１５に保持されているデータブロック群（例えば、pinned data等）の内、同期データで且つアクセス頻度が低いデータブロック群が削除対象のデータブロック群として選択される。
【００６９】
同期データで且つアクセス頻度が低いデータブロック群を特定の幾つかの消去ブロックに集めるデータ移動処理が事前に行われているならば、ステップＳ２０６においては、コントローラ１６は、不足サイズに基づいて、特定の幾つかの消去ブロックの中からイレーズ対象とすべき消去ブロックを選択するだけでよい。そして、コントローラ１６は、選択した消去ブロック内に存在するデータブロックそれぞれに対応する管理情報を管理テーブル１６１から削除する（ステップＳ２０７）。
【００７０】
次いで、コントローラ１６は、選択した消去ブロックに対するイレーズ処理を実行して、選択した消去ブロック内のデータ全体を消去する（ステップＳ２０８）。このイレーズ処理により、不揮発性メモリ１５の空き容量が増加されるので、ライトデータのデータサイズ分の空き領域が不揮発性メモリ１５上に確保される。そして、コントローラ１６は、バッファ１４上のライトデータそれぞれを不揮発性メモリ１５の空き領域にライトする（ステップＳ２０９）。ステップＳ２０９においては、例えば、コントローラ１６は、ハードディスク１３の回転が停止されている状態でライトデータを不揮発性メモリ１５にライトすることができる。
【００７１】
以上の処理により、不揮発性メモリ１５の空き領域が不足している場合であっても、バッファ１４に蓄積されたライトデータを不揮発性メモリ１５に高速保存することができる。
【００７２】
なお、ステップＳ２０３においては、不揮発性メモリ１５の空き容量がライトデータのデータサイズよりも少ないか否かを判別するようにしたが、不揮発性メモリ１５の空き容量が予め決められた特定のデータサイズよりも少ないか否かを判別するようにしてもよい。
【００７３】
図９には、本実施形態の情報記録装置１１の他の構成例が示されている。
【００７４】
図９に示されている情報記録装置１１は、不揮発性キャッシュを含むＳＳＤによって実現されている。図９の情報記録装置１１においては、ハードディスク１３の代わりに、不揮発性メモリ３０１から構成される不揮発性記憶媒体３００が設けられている。また、不揮発性記憶媒体３００に対するキャッシュとして、不揮発性メモリ３０２が設けられている。この不揮発性メモリ３０２は、不揮発性記憶媒体３００内の不揮発性メモリ３０１よりも高速アクセス可能なメモリデバイスである。図９の構成においても、不揮発性記憶媒体３００内の不揮発性メモリ３０１に対するリード／ライトアクセスに比し、不揮発性メモリ３０２に対するリード／ライトアクセスは高速に実行される。よって、上述の同期データ削除処理は、図９の情報記録装置１１においても有用である。
【００７５】
以上説明したように、本実施形態によれば、たとえ不揮発性メモリ１５の記憶領域のほとんどが使用されているような状態であっても、不揮発性メモリ１５上の同期データを削除することによって、ライトデータを書き込むための領域を不揮発性メモリ１５上に確保することができ、ライトデータを不揮発性メモリ１５に保存することができる。また、通常処理中にデータ移動処理が事前に実行されるので、同期データを削除する処理を高速に実行することができる。
【００７６】
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００７７】
【図１】本発明の一実施形態に係る情報記録装置の構成を示すブロック図。
【図２】同実施形態の情報記録装置に設けられたコントローラの構成例を示すブロック図。
【図３】同実施形態の情報記録装置によって実行される、ライトデータを不揮発性メモリにライトする動作の例を説明するための図。
【図４】同実施形態の情報記録装置によって実行される、ライトデータを不揮発性メモリにライトする動作の他の例を説明するための図。
【図５】同実施形態の情報記録装置によって実行されるデータ移動処理の手順を説明するフローチャート。
【図６】同実施形態の情報記録装置によって実行されるデータ移動処理の例を説明するための図。
【図７】同実施形態の情報記録装置によって実行されるデータ移動処理の他の例を説明するための図。
【図８】同実施形態の情報記録装置によって実行される書き込み動作の手順を説明するためのフローチャート。
【図９】同実施形態の情報記録装置の他の構成例を示すブロック図。
【符号の説明】
【００７８】
１１…情報記録装置、１３…ハードディスク、１４…バッファ、１５…不揮発性メモリ、１６…コントローラ、２０…ホスト装置、２０１…同期データ削除部、２０２…再書き込み処理部、２０３…アクセス頻度検出処理、２０４…データ移動処理部。
【図１】
2009181314.tif 000003
【図２】
2009181314.tif 000004
【図３】
2009181314.tif 000005
【図４】
2009181314.tif 000006
【図５】
2009181314.tif 000007
【図６】
2009181314.tif 000008
【図７】
2009181314.tif 000009
【図８】
2009181314.tif 000010
【図９】
2009181314.tif 000011