(57)【要約】【課題】この発明は、ディスク状記録媒体に不揮発性メモリをキャッシュとしてデータの記録を行なう際、不揮発性メモリに記録されたデータをディスク状記録媒体に書き出す処理の効率化を図り、データエラーの発生を極力防止してデータの信頼性を高く保持し得るようにした情報記録装置及びその制御方法を提供することを目的としている。【解決手段】ディスク状記録媒体（１３）と不揮発性メモリ（１５）と外部との相互間でのデータ転送をそれぞれ制御する制御手段（１６）により、不揮発性メモリ（１５）に記録されているデータのうちディスク状記録媒体（１３）に記録されていない非同期データをディスク状記録媒体（１３）に書き出す際、不揮発性メモリ（１５）の非同期データが記録されている各記録領域の状態に応じて、非同期データに対してディスク状記録媒体（１３）に書き出す優先順位を設定する設定手段（１６ｌ）とを備える。【選択図】    図１
2009032305.tif 000002
【特許請求の範囲】
【請求項１】
ディスク状記録媒体と、
前記ディスク状記録媒体に対するキャッシュとなる不揮発性メモリと、
前記ディスク状記録媒体及び前記不揮発性メモリと外部との相互間でのデータ転送をそれぞれ制御するとともに、前記ディスク状記録媒体及び前記不揮発性メモリの相互間でのデータ転送を制御する制御手段と、
前記制御手段により前記不揮発性メモリに記録されているデータのうち前記ディスク状記録媒体に記録されていない非同期データを前記ディスク状記録媒体に書き出す際、前記不揮発性メモリの非同期データが記録されている各記録領域の状態に応じて、前記非同期データに対して前記ディスク状記録媒体に書き出す優先順位を設定する設定手段とを具備することを特徴とする情報記録装置。
【請求項２】
前記設定手段は、前記不揮発性メモリの非同期データが記録されている各記録領域におけるデータ読み出し時のエラー訂正の有無を判別し、エラー訂正の有った記録領域に記録されている非同期データを優先的に前記ディスク状記録媒体に書き出すように優先順位を設定することを特徴とする請求項１記載の情報記録装置。
【請求項３】
前記設定手段は、前記不揮発性メモリの非同期データが記録されている各記録領域におけるデータ読み出し時のエラー訂正数を判別し、エラー訂正数の多い記録領域に記録されている非同期データを優先的に前記ディスク状記録媒体に書き出すように優先順位を設定することを特徴とする請求項１記載の情報記録装置。
【請求項４】
前記設定手段は、前記不揮発性メモリの非同期データが記録されている各記録領域におけるデータ書き替え回数を判別し、データ書き替え回数の多い記録領域に記録されている非同期データを優先的に前記ディスク状記録媒体に書き出すように優先順位を設定することを特徴とする請求項１記載の情報記録装置。
【請求項５】
前記設定手段は、前記不揮発性メモリの非同期データが記録されている各記録領域におけるデータ読み出し時のエラー訂正数を予め設定された閾値とそれぞれ比較し、前記閾値よりもエラー訂正数の多い記録領域に記録されている非同期データを優先的に前記ディスク状記録媒体に書き出すように優先順位を設定することを特徴とする請求項１記載の情報記録装置。
【請求項６】
前記設定手段は、前記不揮発性メモリの非同期データが記録されている各記録領域におけるデータ書き替え回数を予め設定された閾値とそれぞれ比較し、前記閾値よりもデータ書き替え回数の多い記録領域に記録されている非同期データを優先的に前記ディスク状記録媒体に書き出すように優先順位を設定することを特徴とする請求項１記載の情報記録装置。
【請求項７】
前記制御手段は、前記不揮発性メモリに記録されている非同期データが前記ディスク状記録媒体に書き出された状態で、前記設定手段によって判別された前記不揮発性メモリの非同期データが記録されている記録領域の状態に応じて、当該非同期データを前記不揮発性メモリの異なる記録領域に書き込むように制御することを特徴とする請求項１記載の情報記録装置。
【請求項８】
ハードディスクと、
前記ハードディスクに対するキャッシュとなる不揮発性メモリと、
前記ハードディスク及び前記不揮発性メモリと外部との相互間でのデータ転送をそれぞれ制御するとともに、前記ハードディスク及び前記不揮発性メモリの相互間でのデータ転送を制御する制御手段と、
前記制御手段により前記不揮発性メモリに記録されているデータのうち前記ハードディスクに記録されていない非同期データを前記ハードディスクに書き出す際、前記不揮発性メモリの非同期データが記録されている各記録領域の状態に応じて、前記非同期データに対して前記ハードディスクに書き出す優先順位を設定する設定手段とを具備することを特徴とする磁気ディスク装置。
【請求項９】
ディスク状記録媒体と、前記ディスク状記録媒体に対するキャッシュとなる不揮発性メモリとを備えた情報記録装置を制御する方法であって、
前記ディスク状記録媒体及び前記不揮発性メモリと外部との相互間でのデータ転送をそれぞれ制御する工程と、
前記ディスク状記録媒体及び前記不揮発性メモリの相互間でのデータ転送を制御する工程と、
前記不揮発性メモリに記録されているデータのうち前記ディスク状記録媒体に記録されていない非同期データを前記ディスク状記録媒体に書き出す際、前記不揮発性メモリの非同期データが記録されている各記録領域の状態に応じて、前記非同期データに対して前記ディスク状記録媒体に書き出す優先順位を設定する工程とを具備することを特徴とする情報記録装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えばハードディスク等のような大容量のディスク状記録媒体に対し、不揮発性の半導体メモリをキャッシャとして情報の書き込み及び読み出しを行なう情報記録装置及びその制御方法に関する。
【背景技術】
【０００２】
周知のように、ハードディスクは、大容量で信頼性の高い情報記録媒体であり、近年、例えばコンピュータデータ、映像データ、音声データ等の記録用として多方面に普及している。また、ハードディスクは、その形状も携帯用電子機器に搭載されるほど小型化されてきている。
【０００３】
このため、ハードディスクを用いた小型化志向の情報記録装置においては、データの高速書き込み及び高速読み出しが可能な半導体メモリを、ハードディスクに対するキャッシュメモリとして使用することによって、データの書き込み及び読み出しに要する速度を高めるようにしている。
【０００４】
すなわち、この種の情報記録装置は、外部のホスト装置に対してのデータの書き込み及び読み出しを、キャッシュメモリを介して行なわせ、ハードディスクに対してはキャッシュメモリとの間でデータ転送を行なわせることにより、外部から見たデータの書き込み及び読み出し動作を高速化させるようにしている。
【０００５】
そして、現在では、上記キャッシュメモリに加えて、不揮発性メモリをハードディスクに対するキャッシュとして備えることにより、ハードディスクの駆動回数、つまり、ハードディスクに対するデータの書き込み及び読み出し回数を削減して、電池電力の節約を図ることも考えられている。このような情報記録装置は、ＮＶ（non volatile）−cache対応ＨＤＤ（hard disk drive）と称されて、規格化されている。
【０００６】
ここで、不揮発性メモリをハードディスクに対するキャッシュとして備えた情報記録装置にあっては、例えば不揮発性メモリの記録領域が満杯に近づいた場合、不揮発性メモリに記録されているデータを自動的にハードディスクに書き出して、不揮発性メモリに空き領域を形成する処理が行なわれる。
【０００７】
また、この種の情報記録装置においては、不揮発性メモリに記録されているデータのうち、ハードディスク上で非同期なデータ、つまり、ハードディスクに記録されているデータと一致していないデータを、所定のタイミングで自動的にハードディスクに書き出す処理も行なわれるようになっている。
【０００８】
ところで、現在、不揮発性メモリとして多用されているフラッシュ（flash）メモリは、ハードディスクに比べてデータ保持の性能が低く、規定回数以上のデータ書き替えや長時間の放置等を行なうとビットエラーが発生し易くなる傾向がある。このため、不揮発性メモリに記録されたデータは、可能な限りハードディスクに書き出して、その安全性を確保することが重要である。
【０００９】
しかしながら、上記した不揮発性メモリからハードディスクへのデータの書き出し処理は、ＨＤＤの内部で自発的に行なわれるものであるため、例えばホスト装置からデータの書き込みや読み出しを要求するコマンドが供給される等の外部要因によって、しばしば中断されることがあり、処理が全て完了するまでに長い時間を要する場合がある。
【００１０】
そして、この場合、不揮発性メモリの中のビットエラーの発生し易い領域に記録されているデータが、いつまでもハードディスクに書き出されず不揮発性メモリ内に残留することになると、そのデータにビットエラーが発生してしまう可能性が高くなり、データの信頼性の低下を招くことになる。
【００１１】
特許文献１には、ＦｌａｓｈＥＥＰＲＯＭカードをハードディスク装置のキャッシュとして用いるディスクキャッシュ装置において、システムがアイドル状態にあるとき、ＦｌａｓｈＥＥＰＲＯＭカードからハードディスク装置に書き戻していないデータを検出し、そのデータの書き戻し処理を実行するようにした構成が開示されている。
【特許文献１】特開平１１−４５２１０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
そこで、この発明は上記事情を考慮してなされたもので、ディスク状記録媒体に不揮発性メモリをキャッシュとしてデータの記録を行なう際、不揮発性メモリに記録されたデータをディスク状記録媒体に書き出す処理の効率化を図り、データエラーの発生を極力防止してデータの信頼性を高く保持し得るようにした情報記録装置及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
この発明に係る情報記録装置は、ディスク状記録媒体と、ディスク状記録媒体に対するキャッシュとなる不揮発性メモリと、ディスク状記録媒体及び不揮発性メモリと外部との相互間でのデータ転送をそれぞれ制御するとともに、ディスク状記録媒体及び不揮発性メモリの相互間でのデータ転送を制御する制御手段と、制御手段により不揮発性メモリに記録されているデータのうちディスク状記録媒体に記録されていない非同期データをディスク状記録媒体に書き出す際、不揮発性メモリの非同期データが記録されている各記録領域の状態に応じて、非同期データに対してディスク状記録媒体に書き出す優先順位を設定する設定手段とを備えるようにしたものである。
【００１４】
また、この発明に係る情報記録装置の制御方法は、ディスク状記録媒体と、ディスク状記録媒体に対するキャッシュとなる不揮発性メモリとを備えた情報記録装置を制御する方法を対象としている。そして、ディスク状記録媒体及び不揮発性メモリと外部との相互間でのデータ転送をそれぞれ制御する工程と、ディスク状記録媒体及び不揮発性メモリの相互間でのデータ転送を制御する工程と、不揮発性メモリに記録されているデータのうちディスク状記録媒体に記録されていない非同期データをディスク状記録媒体に書き出す際、不揮発性メモリの非同期データが記録されている各記録領域の状態に応じて、非同期データに対してディスク状記録媒体に書き出す優先順位を設定する工程とを備えるようにしたものである。
【発明の効果】
【００１５】
上記した発明によれば、不揮発性メモリに記録されているデータのうちディスク状記録媒体に記録されていない非同期データをディスク状記録媒体に書き出す際、不揮発性メモリの非同期データが記録されている各記録領域の状態に応じて、非同期データに対してディスク状記録媒体に書き出す優先順位を設定するようにしたので、ディスク状記録媒体に不揮発性メモリをキャッシュとしてデータの記録を行なう際、不揮発性メモリに記録されたデータをディスク状記録媒体に書き出す処理の効率化を図り、データエラーの発生を極力防止してデータの信頼性を高く保持することができるようになる。
【発明を実施するための最良の形態】
【００１６】
以下、この発明の実施の形態について図面を参照して詳細に説明する。図１は、この実施の形態で説明する情報記録装置１１の概略を示している。ここで説明する情報記録装置１１としては、Non Volatile Cache Command Proposal for ATA8等で規格化されたＮＶ−cache対応ＨＤＤ等の磁気ディスク装置を対象としている。
【００１７】
すなわち、この情報記録装置１１は、各種の回路ブロックが内蔵された１チップのＬＳＩ（large scale integrated）回路１２を備えている。そして、このＬＳＩ回路１２に対して、大容量のディスク状記録媒体であるハードディスク１３、ＳＤＲＡＭ（synchronous dynamic random access memory）１４、フラッシュメモリ１５等が接続されている。
【００１８】
このうち、ＳＤＲＡＭ１４は、バッファとして機能し、ハードディスク１３に対するキャッシュメモリとなっている。なお、ＳＤＲＡＭに限らず、例えばＳ（static）ＲＡＭ等を使用することも可能である。また、フラッシュメモリ１５は、ハードディスク１３に対するキャッシュとして機能する不揮発性メモリ（ＮＶ−cache）である。
【００１９】
ここで、上記ＬＳＩ回路１２には、情報記録装置１１が各種の処理動作を実行する場合に、その統括的な制御を行なうための制御部となるコントローラ１６が内蔵されている。そして、このＬＳＩ回路１２には、コントローラ１６とハードディスク１３とをデータ転送可能に接続するディスクＩ／Ｆ（interface）１７が内蔵されている。
【００２０】
また、このＬＳＩ回路１２には、コントローラ１６とＳＤＲＡＭ１４とをデータ転送可能に接続するＳＤＲＡＭ Ｉ／Ｆ１８、コントローラ１６とフラッシュメモリ１５とをデータ転送可能に接続するフラッシュメモリＩ／Ｆ１９、コントローラ１６と外部のホスト装置２０とをデータ転送可能に接続するホストＩ／Ｆ２１等が内蔵されている。
【００２１】
上記ホスト装置２０は、例えばＰＣ（personal computer）等である。このホスト装置２０は、例えば所定のアプリケーションソフトウエアを実行する際に、情報記録装置１１を利用してデータの書き込み及び読み出しを実行するとともに、最終的に得られたデータの保存先としても情報記録装置１１を利用することができる。
【００２２】
このように情報記録装置１１に対してデータの書き込みや読み出しを行なう場合、ホスト装置２０は、情報記録装置１１に対してデータの書き込みを要求するコマンドや、データの読み出しを要求するコマンドを発生する。これらのコマンドは、ホストＩ／Ｆ２１を介してコントローラ１６に供給され解析される。
【００２３】
これにより、コントローラ１６は、ハードディスク１３、ＳＤＲＡＭ１４及びフラッシュメモリ１５等に対して、ホスト装置２０から供給されたデータの書き込みや、ホスト装置２０に供給するデータの読み出しを行なうように制御を施すことができる。この場合、コントローラ１６は、ハードディスク１３、ＳＤＲＡＭ１４及びフラッシュメモリ１５の相互間におけるデータ転送も可能としている。
【００２４】
具体的に言えば、ホスト装置２０から供給されたデータをハードディスク１３に書き込む場合、コントローラ１６は、データの書き込み順序として、以下に示す５つの経路（Ｗ１）〜（Ｗ５）を選択することができる。
【００２５】
（Ｗ１）  ホストＩ／Ｆ２１→コントローラ１６→ディスクＩ／Ｆ１７→ハードディスク１３。
【００２６】
（Ｗ２）  ホストＩ／Ｆ２１→コントローラ１６→ＳＤＲＡＭ  Ｉ／Ｆ１８→ＳＤＲＡＭ１４→ＳＤＲＡＭ  Ｉ／Ｆ１８→コントローラ１６→ディスクＩ／Ｆ１７→ハードディスク１３。
【００２７】
（Ｗ３）  ホストＩ／Ｆ２１→コントローラ１６→フラッシュメモリＩ／Ｆ１９→フラッシュメモリ１５→フラッシュメモリＩ／Ｆ１９→コントローラ１６→ディスクＩ／Ｆ１７→ハードディスク１３。
【００２８】
（Ｗ４）  ホストＩ／Ｆ２１→コントローラ１６→ＳＤＲＡＭ  Ｉ／Ｆ１８→ＳＤＲＡＭ１４→ＳＤＲＡＭ  Ｉ／Ｆ１８→コントローラ１６→フラッシュメモリＩ／Ｆ１９→フラッシュメモリ１５→フラッシュメモリＩ／Ｆ１９→コントローラ１６→ディスクＩ／Ｆ１７→ハードディスク１３。
【００２９】
（Ｗ５）  ホストＩ／Ｆ２１→コントローラ１６→フラッシュメモリＩ／Ｆ１９→フラッシュメモリ１５→フラッシュメモリＩ／Ｆ１９→コントローラ１６→ＳＤＲＡＭ  Ｉ／Ｆ１８→ＳＤＲＡＭ１４→ＳＤＲＡＭ  Ｉ／Ｆ１８→コントローラ１６→ディスクＩ／Ｆ１７→ハードディスク１３。
【００３０】
また、ハードディスク１３からホスト装置２０にデータを読み出す場合、コントローラ１６は、データの読み出し順序として、以下に示す５つの経路（Ｒ１）〜（Ｒ５）を選択することができる。
【００３１】
（Ｒ１）  ディスクＩ／Ｆ１７→コントローラ１６→ホストＩ／Ｆ２１→ホスト装置２０。
【００３２】
（Ｒ２）  ディスクＩ／Ｆ１７→コントローラ１６→ＳＤＲＡＭ  Ｉ／Ｆ１８→ＳＤＲＡＭ１４→ＳＤＲＡＭ  Ｉ／Ｆ１８→コントローラ１６→ホストＩ／Ｆ２１→ホスト装置２０。
【００３３】
（Ｒ３）  ディスクＩ／Ｆ１７→コントローラ１６→フラッシュメモリＩ／Ｆ１９→フラッシュメモリ１５→フラッシュメモリＩ／Ｆ１９→コントローラ１６→ホストＩ／Ｆ２１→ホスト装置２０。
【００３４】
（Ｒ４）  ディスクＩ／Ｆ１７→コントローラ１６→ＳＤＲＡＭ  Ｉ／Ｆ１８→ＳＤＲＡＭ１４→ＳＤＲＡＭ  Ｉ／Ｆ１８→コントローラ１６→フラッシュメモリＩ／Ｆ１９→フラッシュメモリ１５→フラッシュメモリＩ／Ｆ１９→コントローラ１６→ホストＩ／Ｆ２１→ホスト装置２０。
【００３５】
（Ｒ５）  ディスクＩ／Ｆ１７→コントローラ１６→フラッシュメモリＩ／Ｆ１９→フラッシュメモリ１５→フラッシュメモリＩ／Ｆ１９→コントローラ１６→ＳＤＲＡＭ  Ｉ／Ｆ１８→ＳＤＲＡＭ１４→ＳＤＲＡＭ  Ｉ／Ｆ１８→コントローラ１６→ホストＩ／Ｆ２１→ホスト装置２０。
【００３６】
上記したデータの書き込み順序及び読み出し順序は、例えば、ホスト装置２０から供給された書き込み要求コマンドや読み出し要求コマンドにおける指示内容、データの格納場所、ＳＤＲＡＭ１４やフラッシュメモリ１５の空き容量等に応じて、コントローラ１６が判断して決定するものである。
【００３７】
なお、上記フラッシュメモリ１５としては、一般的に、ナンドフラッシュメモリが広く採用される傾向にある。そして、このナンドフラッシュメモリが採用された場合、フラッシュメモリ１５に対するデータの書き込み及び読み出し速度は、ＳＤＲＡＭ１４に対するデータの書き込み及び読み出し速度よりも遅くなることが多い。
【００３８】
ここで、上記した規格により設定されている、情報記録装置１１の実行可能な各種のコマンドのうち、この実施の形態を説明する上で必要となるものについて説明する。第１のコマンドは、ハードディスク１３上の論理ブロックアドレス（ＬＢＡ：logical block address）のうち、データをフラッシュメモリ１５に書き込むＬＢＡを指定するものである。
【００３９】
また、第２のコマンドは、第１のコマンドと同様に、フラッシュメモリ１５に書き込むＬＢＡを指定するものであるが、それと同時に、ハードディスク１３から当該ＬＢＡに記録されているデータを読み出し、その読み出したデータをフラッシュメモリ１５に書き込むことを要求するものである。
【００４０】
上記した第１及び第２のコマンドは、上記の規格ではAdd LBA(s) to NV Cache Pinned SetのＰＩ＝０及びＰＩ＝１に対応しており、フラッシュメモリ１５にデータを格納することをホスト装置２０から指示されたＬＢＡには、ピンド（pinned）と称される属性情報が付される。
【００４１】
第３のコマンドは、ハードディスク１３上のＬＢＡを指定してデータの書き込みを要求するものである。この第３のコマンドがホスト装置２０から発生された場合、コントローラ１６は、書き込み要求されたＬＢＡにピンドの属性情報が対応付けられているか否かを調べる。そして、対応付けられていた場合には、フラッシュメモリ１５の中の書き込み要求されたＬＢＡに対応する領域に書き込みを実行する。
【００４２】
これに対し、書き込み要求されたＬＢＡにピンドの属性情報が対応付けられていない場合、コントローラ１６は、ＳＤＲＡＭ１４またはフラッシュメモリ１５の中の指定されたＬＢＡに対応する領域にデータを書き込むか、ハードディスク１３の指定されたＬＢＡにデータを書き込むかを、自己の判断で決定し実行する。
【００４３】
第４のコマンドは、ハードディスク１３上のＬＢＡを指定してデータの読み出しを要求するものである。この第４のコマンドがホスト装置２０から発生された場合、コントローラ１６は、指定されたＬＢＡに対応する領域がフラッシュメモリ１５上に既に割り当てられており、その領域にハードディスク１３よりも新しいデータが保存されていると判断される場合、フラッシュメモリ１５から該当データを読み出す必要がある。
【００４４】
これに対し、ハードディスク１３とフラッシュメモリ１５とに同じデータがある場合、コントローラ１６は、フラッシュメモリ１５の中の読み出し要求されたＬＢＡに対応する領域から該当データを読み出しても良いし、ハードディスク１３の指定されたＬＢＡから該当データを読み出しても良いものである。
【００４５】
また、指定されたＬＢＡに対応する領域がフラッシュメモリ１５上に既に割り当てられているが、ハードディスク１３の方に最新のデータが存在している場合、コントローラ１６は、ハードディスク１３の指定されたＬＢＡから該当データを読み出す必要がある。そして、ハードディスク１３からデータを読み出した場合には、そのデータをＳＤＲＡＭ１４またはフラッシュメモリ１５にキャッシュするか否かもコントローラ１６が判断する。
【００４６】
上記した第３及び第４のコマンドのように、データの書き込みまたは読み出しが要求されたＬＢＡの中の、ピンドの属性情報が対応付けられていないＬＢＡのうち、フラッシュメモリ１５上に領域が割り当てられて、その割り当てられたフラッシュメモリ１５上の領域にデータが書き込まれたＬＢＡには、アンピンド（unpinned）と称される属性情報が付される。
【００４７】
そして、ピンドの属性情報が付されたＬＢＡはピンドＬＢＡと称され、そのピンドＬＢＡに対応するフラッシュメモリ１５上の領域はピンド領域と称される。また、アンピンドの属性情報が付されたＬＢＡはアンピンドＬＢＡと称され、そのアンピンドＬＢＡに対応するフラッシュメモリ１５上の領域はアンピンド領域と称される。このため、フラッシュメモリ１５上には、図２に示すように、ピンド領域１５ａとアンピンド領域１５ｂとその他の領域１５ｃとが形成されることになる。
【００４８】
ここにおいて、上記コントローラ１６は、フラッシュメモリ１５の記録領域が満杯に近づいた場合に、フラッシュメモリ１５に記録されているデータをハードディスク１３に書き出すことにより、フラッシュメモリ１５内に所定量の空き領域を自動的に形成する処理を実行する。
【００４９】
この処理は、フラッシュメモリ１５内の空き領域のサイズが予め設定された基準サイズよりも小さくなった場合、フラッシュメモリ１５の中のアンピンドの属性情報が付されたＬＢＡに対応する領域（アンピンド領域１５ｂ）の中から、所定量のデータをハードディスク１３に書き出し、そのハードディスク１３に書き出したデータをフラッシュメモリ１５から消去することにより実現される。
【００５０】
この場合、フラッシュメモリ１５の中の、アンピンドの属性情報が付されたＬＢＡに対応する領域（アンピンド領域１５ｂ）の中で、どの領域の情報がハードディスク１３に移動されるのか、すなわち、フラッシュメモリ１５のどの領域に空き領域が形成されるのかは、コントローラ１６の判断により決定される。
【００５１】
また、上記コントローラ１６は、フラッシュメモリ１５に記録されているデータのうちの、ハードディスク１３上で非同期となっているデータ、つまり、ハードディスク１３に記録されているデータと一致していないデータを、所定のタイミングで自動的にハードディスク１３に書き出す処理も実行する。
【００５２】
ところで、フラッシュメモリ１５は、ハードディスク１３に比べてデータ保持の性能が低く、規定回数（例えば１０万回）以上のデータ書き替えや長時間の放置等を行なうとビットエラーを生じ易くなることが知られている。
【００５３】
また、上記フラッシュメモリ１５に書き込まれるデータには、エラー訂正コードが付加され、フラッシュメモリ１５から読み出されるデータには、そのエラー訂正コードに基づいたエラー訂正処理が施される。さらに、ハードディスク１３に記録されるデータにも、エラー訂正コードが付加され、ハードディスク１３から読み出されるデータには、そのエラー訂正コードに基づいたエラー訂正処理が施される。そして、通常、ハードディスク１３に記録されるデータに施されるエラー訂正処理の方が、フラッシュメモリ１５に記録されるデータに施されるエラー訂正処理に比して、はるかにエラー訂正能力の高い方式が採用される。
【００５４】
すなわち、フラッシュメモリ１５に記録されるデータよりも、ハードディスク１３に記録されるデータの方が、格段に信頼性が高いものとなっている。このため、フラッシュメモリ１５に記録されたデータは、可能な限りハードディスク１３に書き出した方が、その安全性を確保する上で望ましいことになる。
【００５５】
しかしながら、上記したフラッシュメモリ１５からハードディスク１３へのデータの書き出し処理は、コントローラ１６が、外部からの処理要求のないときに自発的に行なうものである。このため、例えばホスト装置からデータの書き込みや読み出しを要求するコマンドが供給される等の外部要因によって、しばしば中断されることがあり、処理が全て完了するまでに長い時間を要する場合がある。
【００５６】
このような場合、フラッシュメモリ１５の中のビットエラーの発生し易い領域に記録されているデータが、いつまでもハードディスク１３に書き出されずにフラッシュメモリ１５内に残留することになると、そのデータにビットエラーが発生してしまう可能性が高くなり、データの信頼性を低下させてしまうことになる。
【００５７】
そこで、この実施の形態では、フラッシュメモリ１５からハードディスク１３へのデータの書き出し処理を行なう際、フラッシュメモリ１５からハードディスク１３に書き出されるデータについて、そのフラッシュメモリ１５上における記録領域の状態を判別し、状態の悪い記録領域に記録されたデータから先にハードディスク１３に書き出されるように優先順位をつけている。
【００５８】
この場合、フラッシュメモリ１５上における記録領域の状態とは、例えば、データの種別、エラー訂正数［ＥＣＣ（error checking and correction）訂正数］、消去／書き込み回数（書き替え回数）等を意味している。そして、エラー訂正回数や消去／書き込み回数の多い記録領域を状態の悪いものとし、状態の最も悪い記録領域に記録されたデータから順にハードディスク１３に書き出されるように優先順位をつけている。
【００５９】
これにより、フラッシュメモリ１５の状態の悪い記録領域に記録されたデータから優先的にハードディスク１３に書き出されるようになるので、フラッシュメモリ１５の中のビットエラーの発生し易い領域に記録されているデータが、いつまでもハードディスク１３に書き出されずにフラッシュメモリ１５内に残留することが防止され、フラッシュメモリ１５に記録されたデータをハードディスク１３に書き出す処理の効率化を図り、データエラーの発生を極力防止してデータの信頼性を高く保持することができるようになる。
【００６０】
図３は、上記コントローラ１６の一例を示している。このコントローラ１６は、ホスト装置２０から供給されたコマンドをデコード処理し解析するコマンド解析部１６ａを有する。このコマンド解析部１６ａの解析結果により、アーキテクチャメモリ１６ｂ内のソフトウエアが特定され、シーケンスコントローラ１６ｃに動作手順が設定される。
【００６１】
このシーケンスコントローラ１６ｃは、Ｉ／Ｆ及びバスコントローラ１６ｄを介して、情報の流れを制御する。例えば、情報の書き込みまたは読み出しが行なわれるときは、メディア選択部１６ｅがハードディスク１３、ＳＤＲＡＭ１４またはフラッシュメモリ１５を特定するとともに、アドレス制御部１６ｆが書き込みアドレスまたは読み出しアドレスを特定する。
【００６２】
そして、情報の書き込み時には、書き込み処理部１６ｇが書き込み情報の転送処理等を実行する。また、情報の読み出し時には、読み出し処理部１６ｈが読み出し情報の転送処理等を実行する。
【００６３】
さらに、コントローラ１６には、消去処理部１６ｉが設けられている。この消去処理部１６ｉは、ＳＤＲＡＭ１４やフラッシュメモリ１５に記録された情報の消去処理を実行する。なお、この消去処理部１６ｉは、ハードディスク１３に記録された情報の消去処理も実行することができる。
【００６４】
また、コントローラ１６には、アドレス管理部１６ｊが設けられている。このアドレス管理部１６ｊは、ＳＤＲＡＭ１４、フラッシュメモリ１５及びハードディスク１３の記録済み領域や未記録領域等のアドレスを一括して管理している。
【００６５】
さらに、コントローラ１６には、状態判定部１６ｋが設けられている。この状態判定部１６ｋは、ハードディスク１３の回転状態や、ハードディスク１３、ＳＤＲＡＭ１４及びフラッシュメモリ１５の残り容量の状態等を監視している。
【００６６】
また、コントローラ１６には、優先順位管理部１６ｌが設けられている。この優先順位管理部１６ｌは、フラッシュメモリ１５からハードディスク１３へのデータの書き出し処理を行なう際に、フラッシュメモリ１５上における状態の悪い記録領域に記録されたデータから優先的にハードディスク１３に書き出されるようにする処理を、統括的に管理するものである。
【００６７】
ここで、図４は、フラッシュメモリ１５に記録されたデータの中から、ハードディスク１３上で非同期（async）となっているデータ、つまり、ハードディスク１３に記録されているデータと一致していないデータに対して、優先順位を設定してハードディスク１３に書き出す処理の一例を示している。
【００６８】
すなわち、フラッシュメモリ１５には、ＬＢＡ１，ＬＢＡ２，ＬＢＡ３に対応する各記録領域に、ハードディスク１３と非同期（async）なデータがそれぞれ記録されている。また、上記ＳＤＲＡＭ１４またはフラッシュメモリ１５には、フラッシュメモリ１５に記録されているデータを管理するための管理テーブル２２が格納されている。
【００６９】
この管理テーブル２２には、フラッシュメモリ１５上に設定された各ＬＢＡに対応する記録領域毎に、現在ピンドの属性情報が付加されているかアンピンドの属性情報が付加されているかを示す項目、その領域に記録されているデータがハードディスク１３と非同期（async）であるか否かを示す項目、その領域からのデータ読み出し時にＥＣＣ訂正が発生した数を示す項目等が含まれている。
【００７０】
そして、上記コントローラ１６の優先順位管理部１６ｌは、フラッシュメモリ１５からハードディスク１３へのデータの書き出し処理を行なう場合、まず、管理テーブル２２を参照して、ハードディスク１３と非同期（async）のデータを検出する。ここでは、フラッシュメモリ１５のＬＢＡ１〜ＬＢＡ３に対応する各記録領域に記録された３つのデータが、非同期（async）データとしてリストアップされる。
【００７１】
その後、上記優先順位管理部１６ｌは、リストアップされた３つのデータの各記録領域について、管理テーブル２２を参照して、データ読み出し時にＥＣＣ訂正が発生した数を判別する。この場合、ＬＢＡ１に対応する領域は、データ読み出し時のＥＣＣ訂正数が０ビットであり、ＬＢＡ２に対応する領域は、データ読み出し時のＥＣＣ訂正数が３ビットであり、ＬＢＡ３に対応する領域は、データ読み出し時のＥＣＣ訂正数が１ビットとなっている。
【００７２】
このため、優先順位管理部１６ｌは、データ読み出し時のＥＣＣ訂正数が最も多いＬＢＡ２に対応する領域のデータを、状態の最も悪い記録領域に記録されたデータとして、最も優先度を高く設定し、以下、ＬＢＡ３に対応する領域のデータ、ＬＢＡ１に対応する領域のデータの順で優先順位を設定する。そして、優先順位管理部１６ｌは、設定した優先順位に基づいて、ＬＢＡ２に対応する領域のデータ、ＬＢＡ３に対応する領域のデータ、ＬＢＡ１に対応する領域のデータの順でハードディスク１３に書き出しを実行する。
【００７３】
図５は、上記優先順位管理部１６ｌが行なうフラッシュメモリ１５からハードディスク１３へのデータの書き出し処理動作の一例をまとめたフローチャートを示している。すなわち、処理が開始（ステップＳ５ａ）されると、優先順位管理部１６ｌは、ステップＳ５ｂで、管理テーブル２２を参照して、フラッシュメモリ１５に記録されているデータの中からハードディスク１３と非同期（async）のデータを検出する。
【００７４】
その後、優先順位管理部１６ｌは、ステップＳ５ｃで、先にフラッシュメモリ１５から検出した各非同期データの記録領域それぞれについて、管理テーブル２２を参照して、データ読み出し時のＥＣＣ訂正数を検出する。そして、優先順位管理部１６ｌは、ステップＳ５ｄで、先に検出したＥＣＣ訂正数に基づいて、フラッシュメモリ１５から検出した各非同期データに優先順位を設定する。さらに、優先順位管理部１６ｌは、ステップＳ５ｅで、先に設定した優先順位に基づいて、フラッシュメモリ１５の非同期データをハードディスク１３に書き出し、ステップＳ５ｆで、管理テーブル２２の内容を更新して、処理を終了（ステップＳ５ｇ）する。
【００７５】
なお、図４に示した処理動作では、フラッシュメモリ１５から検出した各非同期データに対して、そのＥＣＣ訂正数に基づいて優先順位を設定するようにしたが、これに限ることなく、例えば、ＥＣＣ訂正の有無によってのみ優先順位を設定するようにすることも考えられる。
【００７６】
この場合、図４において、ＬＢＡ２及びＬＢＡ３に対応する各領域のデータは同じ優先順位となり、ハードディスク１３への書き出し処理の可能な方から順次書き出される。このように、ＥＣＣ訂正の有無によってのみ優先順位を設定するようにすれば、ＥＣＣ訂正能力が１ビットの場合にも適用可能となる。
【００７７】
また、フラッシュメモリ１５の中で、所定の記録領域内に含まれる各非同期データに対してはＥＣＣ訂正数に基づいて優先順位の設定を行ない、他の記録領域に含まれる各非同期データに対してはＥＣＣ訂正の有無によって優先順位の設定を行なうというように、記録領域に応じて設定を変えることも可能である。
【００７８】
次に、図６は、フラッシュメモリ１５に記録されたデータの中から、ハードディスク１３上で非同期（async）となっているデータ、つまり、ハードディスク１３に記録されているデータと一致していないデータに対して、優先順位を設定してハードディスク１３に書き出す処理の他の例を示している。
【００７９】
すなわち、フラッシュメモリ１５には、ＬＢＡ１，ＬＢＡ２，ＬＢＡ３，ＬＢＡ４に対応する各記録領域に、ハードディスク１３と非同期（async）なデータがそれぞれ記録されている。また、上記ＳＤＲＡＭ１４またはフラッシュメモリ１５には、フラッシュメモリ１５に記録されているデータを管理するための管理テーブル２２が格納されている。
【００８０】
この管理テーブル２２には、フラッシュメモリ１５上に設定された各ＬＢＡに対応する記録領域毎に、現在ピンドの属性情報が付加されているかアンピンドの属性情報が付加されているかを示す項目、その領域に記録されているデータがハードディスク１３と非同期（async）であるか否かを示す項目、その領域からのデータ読み出し時にＥＣＣ訂正が発生した数を示す項目等が含まれている。
【００８１】
また、上記ＳＤＲＡＭ１４またはフラッシュメモリ１５には、フラッシュメモリ１５に記録されているデータの書き替え回数を示す書き替え回数管理テーブル２３が格納されている。この書き替え回数管理テーブル２３には、フラッシュメモリ１５上に設定された各ＬＢＡに対応する記録領域（物理ブロックアドレス）毎に、消去／書き込みを行なった回数がカウントされ記録されている。
【００８２】
そして、上記コントローラ１６の優先順位管理部１６ｌは、フラッシュメモリ１５からハードディスク１３へのデータの書き出し処理を行なう場合、まず、管理テーブル２２を参照して、ハードディスク１３と非同期（async）のデータを検出する。ここでは、フラッシュメモリ１５のＬＢＡ１〜ＬＢＡ４に対応する各記録領域に記録された４つのデータが、非同期（async）データとしてリストアップされる。
【００８３】
その後、上記優先順位管理部１６ｌは、リストアップされた４つのデータの各記録領域について、管理テーブル２２を参照して、データ読み出し時にＥＣＣ訂正が発生した数を判別する。この場合、ＬＢＡ１に対応する領域は、データ読み出し時のＥＣＣ訂正数が０ビットであり、ＬＢＡ２に対応する領域は、データ読み出し時のＥＣＣ訂正数が３ビットであり、ＬＢＡ３に対応する領域は、データ読み出し時のＥＣＣ訂正数が１ビットであり、ＬＢＡ４に対応する領域は、データ読み出し時のＥＣＣ訂正数が３ビットとなっている。
【００８４】
つまり、ＬＢＡ２及びＬＢＡ４に対応する各領域が、データ読み出し時のＥＣＣ訂正数が最も多い３ビットとなっている。このとき、優先順位管理部１６ｌは、ＬＢＡ２及びＬＢＡ４に対応する各領域について、書き替え回数管理テーブル２３を参照して、そのデータ書き替え回数を判別する。この場合、ＬＢＡ２に対応する領域は、データ書き替え回数が６万回であり、ＬＢＡ４に対応する領域は、データ書き替え回数が７万５千回となっている。
【００８５】
このため、優先順位管理部１６ｌは、データ読み出し時のＥＣＣ訂正数が最も多く、かつ、データ書き替え回数も最も多いＬＢＡ４に対応する領域のデータを、状態の最も悪い記録領域に記録されたデータとして、最も優先度を高く設定し、以下、ＬＢＡ２に対応する領域のデータ、ＬＢＡ３に対応する領域のデータ、ＬＢＡ１に対応する領域のデータの順で優先順位を設定する。そして、優先順位管理部１６ｌは、設定した優先順位に基づいて、ＬＢＡ４に対応する領域のデータ、ＬＢＡ２に対応する領域のデータ、ＬＢＡ３に対応する領域のデータ、ＬＢＡ１に対応する領域のデータの順でハードディスク１３に書き出しを実行する。
【００８６】
図７は、上記優先順位管理部１６ｌが行なうフラッシュメモリ１５からハードディスク１３へのデータの書き出し処理動作の他の例をまとめたフローチャートを示している。すなわち、処理が開始（ステップＳ７ａ）されると、優先順位管理部１６ｌは、ステップＳ７ｂで、管理テーブル２２を参照して、フラッシュメモリ１５に記録されているデータの中からハードディスク１３と非同期（async）のデータを検出する。
【００８７】
その後、優先順位管理部１６ｌは、ステップＳ７ｃで、先にフラッシュメモリ１５から検出した各非同期データの記録領域それぞれについて、管理テーブル２２を参照して、データ読み出し時のＥＣＣ訂正数を検出する。また、優先順位管理部１６ｌは、ステップＳ７ｄで、先にフラッシュメモリ１５から検出した各非同期データの記録領域それぞれについて、書き替え回数管理テーブル２３を参照して、データ書き替え回数を検出する。
【００８８】
そして、優先順位管理部１６ｌは、ステップＳ７ｅで、先に検出したＥＣＣ訂正数及びデータ書き替え回数に基づいて、フラッシュメモリ１５から検出した各非同期データに優先順位を設定する。さらに、優先順位管理部１６ｌは、ステップＳ７ｆで、先に設定した優先順位に基づいて、フラッシュメモリ１５の非同期データをハードディスク１３に書き出し、ステップＳ７ｇで、管理テーブル２２の内容を更新して、処理を終了（ステップＳ７ｈ）する。
【００８９】
なお、図６に示した処理動作では、先にＥＣＣ訂正数を検出し、ＥＣＣ訂正数の同じ記録領域について、データ書き替え回数の多い領域を高い優先順位に設定するようにしているが、これに限らず、例えば、先にデータ書き替え回数を検出し、データ書き替え回数の同じ記録領域について、ＥＣＣ訂正数の多い領域を高い優先順位に設定するようにしてもよいことはもちろんである。
【００９０】
次に、図８は、フラッシュメモリ１５に記録されたデータの中から、ハードディスク１３上で非同期（async）となっているデータに対して、優先順位を設定してハードディスク１３に書き出す処理のさらに他の例をまとめたフローチャートを示している。
【００９１】
図４及び図６に示した例では、フラッシュメモリ１５から全ての非同期データをリストアップして優先順位をつけるようにしているが、フラッシュメモリ１５へのデータ登録数が多くなり非同期データが増えた場合には、処理が煩雑になる。この例では、ＥＣＣ訂正数及びデータ書き替え回数に閾値を設け、閾値を超えた領域の非同期データから順次ハードディスク１３に書き出すようにしている。
【００９２】
すなわち、処理が開始（ステップＳ８ａ）されると、優先順位管理部１６ｌは、ステップＳ８ｂで、管理テーブル２２を参照して、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている１つのデータを検出する。
【００９３】
その後、優先順位管理部１６ｌは、ステップＳ８ｃで、その検出された非同期データの記録領域のＥＣＣ訂正数が予めＥＣＣ用に設定された閾値を超えるか否か、つまり、ＥＣＣ訂正数＞閾値（ＥＣＣ用）であるか否かを判別する。そして、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ８ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【００９４】
また、上記ステップＳ８ｃでＥＣＣ訂正数が閾値（ＥＣＣ用）を超えると判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ８ｄで、その検出された非同期データの記録領域の書き替え回数が予め書き替え回数用に設定された閾値を超えるか否か、つまり、書き替え回数＞閾値（書き替え回数用）であるか否かを判別する。そして、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ８ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【００９５】
一方、上記ステップＳ８ｄで書き替え回数が閾値（書き替え回数用）を超えると判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ８ｅで、その検出された非同期データをハードディスク１３に書き出す優先対象と判断して、ステップＳ８ｆで、その非同期データをハードディスク１３に書き出す処理を実行し、ステップＳ８ｇで、管理テーブル２２の内容を更新する。
【００９６】
その後、優先順位管理部１６ｌは、ステップＳ８ｈで、フラッシュメモリ１５に記録されている全ての非同期データについて、上記したチェックが完了したか否かを判別し、完了していると判断された場合（ＹＥＳ）、処理を終了（ステップＳ８ｉ）する。また、上記ステップＳ８ｈで完了していないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ８ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【００９７】
図８に示した例によれば、フラッシュメモリ１５から１つの非同期データを検出し、その検出された非同期データの記録領域のＥＣＣ訂正数及び書き替え回数が、共に予め設定された閾値を超えているとき、その非同期データを優先的にハードディスク１３に書き出す処理を繰り返すようにしたので、フラッシュメモリ１５へのデータ登録数が多くなり非同期データが増えた場合にも、容易に対応することができる。
【００９８】
また、図８に示した例において、ＥＣＣ訂正数及び書き替え回数が閾値を超えている記録領域の非同期データをハードディスク１３に書き出す処理が全て終了した後に、ＥＣＣ訂正数及び書き替え回数が閾値を超えていない記録領域の非同期データをハードディスク１３に書き出す処理を行なうようにすることができる。この場合、ＥＣＣ訂正数及び書き替え回数が閾値を超えていない記録領域については、図４及び図６で説明した優先順位をつける処理を適用することができる。
【００９９】
さらに、図８に示した例では、非同期データの記録領域のＥＣＣ訂正数及び書き替え回数が共に閾値を超えているとき、その非同期データを優先的にハードディスク１３に書き出すようにしたが、これに限らず、例えば、非同期データの記録領域のＥＣＣ訂正数及び書き替え回数のいずれか一方が閾値を超えたとき、その非同期データを優先的にハードディスク１３に書き出すようにしてもよいものである。
【０１００】
次に、図９は、フラッシュメモリ１５に記録されたデータの中から、ハードディスク１３上で非同期（async）となっているデータに対して、優先順位を設定してハードディスク１３に書き出す処理のさらに他の例をまとめたフローチャートを示している。
【０１０１】
すなわち、処理が開始（ステップＳ９ａ）されると、優先順位管理部１６ｌは、ステップＳ９ｂで、管理テーブル２２を参照して、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている１つのデータを検出する。
【０１０２】
その後、優先順位管理部１６ｌは、ステップＳ９ｃで、その検出された非同期データの記録領域のＥＣＣ訂正数が予めＥＣＣ用に設定された閾値Ａを超えるか否か、つまり、ＥＣＣ訂正数＞閾値Ａ（ＥＣＣ用）であるか否かを判別する。そして、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ９ｄで、その検出された非同期データの記録領域のＥＣＣ訂正数が、予めＥＣＣ用に設定された上記閾値Ａよりも小さい閾値Ｂを超えるか否か、つまり、ＥＣＣ訂正数＞閾値Ｂ（ＥＣＣ用）であるか否かを判別する。
【０１０３】
ここで、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ９ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【０１０４】
また、上記ステップＳ９ｄでＥＣＣ訂正数が閾値Ｂ（ＥＣＣ用）を超えると判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ９ｅで、その検出された非同期データの記録領域の書き替え回数が予め書き替え回数用に設定された閾値を超えるか否か、つまり、書き替え回数＞閾値（書き替え回数用）であるか否かを判別する。そして、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ９ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【０１０５】
一方、上記ステップＳ９ｅで書き替え回数が閾値（書き替え回数用）を超えると判断された場合（ＹＥＳ）、または、上記ステップＳ９ｃでＥＣＣ訂正数が閾値Ａを超えたと判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ９ｆで、その検出された非同期データをハードディスク１３に書き出す優先対象と判断して、ステップＳ９ｇで、その非同期データをハードディスク１３に書き出す処理を実行し、ステップＳ９ｈで、管理テーブル２２の内容を更新する。
【０１０６】
その後、優先順位管理部１６ｌは、ステップＳ９ｉで、管理テーブル２２を最後までチェックしたか否かを判別し、チェックしていないと判断された場合（ＮＯ）、ステップＳ９ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【０１０７】
また、上記ステップＳ９ｉで管理テーブル２２を最後までチェックしたと判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ９ｊで、フラッシュメモリ１５内に優先対象外と判断された非同期データが存在するか否かを判別し、存在しないと判断された場合（ＮＯ）、処理を終了（ステップＳ９ｌ）する。
【０１０８】
また、上記ステップＳ９ｊで存在していると判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ９ｋで、閾値Ａ（ＥＣＣ用），閾値Ｂ（ＥＣＣ用）及び閾値（書き替え用）を変更した後、ステップＳ９ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっているデータの再検出を実行する。
【０１０９】
図９に示した例によれば、ＥＣＣ訂正数を比較するための閾値Ａ，Ｂを２種類設定し、ＥＣＣ訂正数が大きい方の閾値Ａを超える記録領域の非同期データについては、書き替え回数の判別を行なうことなく無条件にハードディスク１３に書き出す優先対象と判断するようにしているため、処理の迅速化を図ることができる。
【０１１０】
例えば、ＥＣＣ訂正能力が５ビットである場合、閾値Ａを４ビット、閾値Ｂを２ビットと設定すれば、ＥＣＣ訂正数が４ビットを超える記録領域の非同期データは、書き替え回数の判別を行なうことなく無条件にハードディスク１３に書き出す優先対象と判断されるため、判定処理の迅速化を図ることができる。
【０１１１】
また、管理テーブル２２に対して非同期データを検出する処理が一巡されたとき、フラッシュメモリ１５内に優先対象外と判断された非同期データが存在する場合、閾値Ａ（ＥＣＣ用），閾値Ｂ（ＥＣＣ用）及び閾値（書き替え用）を変更して、フラッシュメモリ１５から非同期データの再検出を行なうようにしたので、非同期データに対してより細かく優先順位をつけることができるようになる。
【０１１２】
次に、図１０は、フラッシュメモリ１５に記録されたデータの中から、ハードディスク１３上で非同期（async）となっているデータに対して、優先順位を設定してハードディスク１３に書き出す処理のさらに他の例をまとめたフローチャートを示している。
【０１１３】
すなわち、処理が開始（ステップＳ１０ａ）されると、優先順位管理部１６ｌは、ステップＳ１０ｂで、管理テーブル２２を参照して、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている１つのデータを検出する。
【０１１４】
その後、優先順位管理部１６ｌは、ステップＳ１０ｃで、その検出された非同期データの記録領域のＥＣＣ訂正数が予めＥＣＣ用に設定された閾値Ａを超えるか否か、つまり、ＥＣＣ訂正数＞閾値Ａ（ＥＣＣ用）であるか否かを判別する。そして、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ１０ｄで、その検出された非同期データの記録領域のＥＣＣ訂正数が、予めＥＣＣ用に設定された上記閾値Ａよりも小さい閾値Ｂを超えるか否か、つまり、ＥＣＣ訂正数＞閾値Ｂ（ＥＣＣ用）であるか否かを判別する。
【０１１５】
ここで、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ１０ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【０１１６】
また、上記ステップＳ１０ｄでＥＣＣ訂正数が閾値Ｂ（ＥＣＣ用）を超えると判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ１０ｅで、その検出された非同期データの記録領域の書き替え回数が予め書き替え回数用に設定された閾値を超えるか否か、つまり、書き替え回数＞閾値（書き替え回数用）であるか否かを判別する。そして、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ１０ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【０１１７】
一方、上記ステップＳ１０ｅで書き替え回数が閾値（書き替え回数用）を超えると判断された場合（ＹＥＳ）、または、上記ステップＳ１０ｃでＥＣＣ訂正数が閾値Ａを超えたと判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ１０ｆで、その検出された非同期データをハードディスク１３に書き出す優先対象と判断して、ステップＳ１０ｇで、その非同期データをハードディスク１３に書き出す処理を実行し、ステップＳ１０ｈで、管理テーブル２２の内容を更新する。
【０１１８】
そして、優先順位管理部１６ｌは、ステップＳ１０ｉで、フラッシュメモリ１５からハードディスク１３に書き出されたデータについて、フラッシュメモリ１５内に保持しておく必要があると判断される場合、そのデータをフラッシュメモリ１５内の他の記録領域に移し替えて保護を図る。この場合、データの移動先となる記録領域としては、移動前の記録領域に比して、ＥＣＣ訂正数やデータ書き替え回数の少ない領域が選択される。
【０１１９】
その後、優先順位管理部１６ｌは、ステップＳ１０ｊで、管理テーブル２２を最後までチェックしたか否かを判別し、チェックしていないと判断された場合（ＮＯ）、ステップＳ１０ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【０１２０】
また、上記ステップＳ１０ｊで管理テーブル２２を最後までチェックしたと判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ１０ｋで、フラッシュメモリ１５内に優先対象外と判断された非同期データが存在するか否かを判別し、存在しないと判断された場合（ＮＯ）、処理を終了（ステップＳ１０ｍ）する。
【０１２１】
また、上記ステップＳ１０ｋで存在していると判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ１０ｌで、閾値Ａ（ＥＣＣ用），閾値Ｂ（ＥＣＣ用）及び閾値（書き替え用）を変更した後、ステップＳ１０ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっているデータの再検出を実行する。
【０１２２】
図１０に示した例によれば、フラッシュメモリ１５から非同期データをハードディスク１３に書き出した後、そのデータをフラッシュメモリ１５に保持する必要がある場合、そのデータをフラッシュメモリ１５内の他の記録領域に移し替えるようにしたので、フラッシュメモリ内１５で状態が悪いと判断された記録領域にデータが残留されることが防止され、データの保護を図ることができる。
【０１２３】
次に、図１１は、フラッシュメモリ１５に記録されたデータの中から、ハードディスク１３上で非同期（async）となっているデータに対して、優先順位を設定してハードディスク１３に書き出す処理のさらに他の例をまとめたフローチャートを示している。
【０１２４】
すなわち、処理が開始（ステップＳ１１ａ）されると、優先順位管理部１６ｌは、ステップＳ１１ｂで、管理テーブル２２を参照して、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている１つのデータを検出する。
【０１２５】
その後、優先順位管理部１６ｌは、ステップＳ１１ｃで、その検出された非同期データの記録領域のＥＣＣ訂正数が予めＥＣＣ用に設定された閾値Ａを超えるか否か、つまり、ＥＣＣ訂正数＞閾値Ａ（ＥＣＣ用）であるか否かを判別する。そして、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ１１ｄで、その検出された非同期データの記録領域のＥＣＣ訂正数が、予めＥＣＣ用に設定された上記閾値Ａよりも小さい閾値Ｂを超えるか否か、つまり、ＥＣＣ訂正数＞閾値Ｂ（ＥＣＣ用）であるか否かを判別する。
【０１２６】
ここで、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ１１ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【０１２７】
また、上記ステップＳ１１ｄでＥＣＣ訂正数が閾値Ｂ（ＥＣＣ用）を超えると判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ１１ｅで、その検出された非同期データの記録領域の書き替え回数が予め書き替え回数用に設定された閾値を超えるか否か、つまり、書き替え回数＞閾値（書き替え回数用）であるか否かを判別する。そして、超えないと判断された場合（ＮＯ）、優先順位管理部１６ｌは、ステップＳ１１ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【０１２８】
一方、上記ステップＳ１１ｅで書き替え回数が閾値（書き替え回数用）を超えると判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ１１ｆで、その検出された非同期データをハードディスク１３に書き出す優先対象と判断して、ステップＳ１１ｇで、その非同期データをハードディスク１３に書き出す処理を実行し、ステップＳ１１ｈで、管理テーブル２２の内容を更新する。
【０１２９】
その後、優先順位管理部１６ｌは、ステップＳ１１ｉで、管理テーブル２２を最後までチェックしたか否かを判別し、チェックしていないと判断された場合（ＮＯ）、ステップＳ１１ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっている他のデータの検出を実行する。
【０１３０】
また、上記ステップＳ１１ｉで管理テーブル２２を最後までチェックしたと判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ１１ｊで、フラッシュメモリ１５内に優先対象外と判断された非同期データが存在するか否かを判別し、存在しないと判断された場合（ＮＯ）、処理を終了（ステップＳ１１ｌ）する。
【０１３１】
また、上記ステップＳ１１ｊで存在していると判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ１１ｋで、閾値Ａ（ＥＣＣ用），閾値Ｂ（ＥＣＣ用）及び閾値（書き替え用）を変更した後、ステップＳ１１ｂの処理に戻され、フラッシュメモリ１５に記録されているデータの中から、ハードディスク１３と非同期（async）となっているデータの再検出を実行する。
【０１３２】
一方、上記ステップＳ１１ｃでＥＣＣ訂正数が閾値Ａを超えると判断された場合（ＹＥＳ）、優先順位管理部１６ｌは、ステップＳ１１ｍで、その検出された非同期データをハードディスク１３に書き出す優先対象と判断して、ステップＳ１１ｎで、その非同期データをハードディスク１３に書き出す処理を実行し、ステップＳ１１ｏで、管理テーブル２２の内容を更新する。
【０１３３】
そして、優先順位管理部１６ｌは、ステップＳ１１ｐで、フラッシュメモリ１５からハードディスク１３に書き出されたデータについて、フラッシュメモリ１５内に保持しておく必要があると判断される場合、そのデータをフラッシュメモリ１５内の他の記録領域に移し替えて保護を図り、ステップＳ１１ｉの処理に移行される。この場合、データの移動先となる記録領域としては、移動前の記録領域に比して、ＥＣＣ訂正数やデータ書き替え回数の少ない領域が選択される。
【０１３４】
なお、この発明は上記した実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を種々変形して具体化することができる。また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係る構成要素を適宜組み合わせても良いものである。
【図面の簡単な説明】
【０１３５】
【図１】この発明の実施の形態を示すもので、情報記録装置の概略を説明するために示すブロック構成図。
【図２】同実施の形態における情報記録装置に備えられたフラッシュメモリ内の記録領域を説明するために示す図。
【図３】同実施の形態における情報記録装置に備えられたコントローラの一例を説明するために示すブロック構成図。
【図４】同実施の形態における情報記録装置が行なう処理動作の一例を説明するために示す図。
【図５】同実施の形態における情報記録装置が行なう処理動作の一例を説明するために示すフローチャート。
【図６】同実施の形態における情報記録装置が行なう処理動作の他の例を説明するために示す図。
【図７】同実施の形態における情報記録装置が行なう処理動作の他の例を説明するために示すフローチャート。
【図８】同実施の形態における情報記録装置が行なう処理動作のさらに他の例を説明するために示すフローチャート。
【図９】同実施の形態における情報記録装置が行なう処理動作のさらに他の例を説明するために示すフローチャート。
【図１０】同実施の形態における情報記録装置が行なう処理動作のさらに他の例を説明するために示すフローチャート。
【図１１】同実施の形態における情報記録装置が行なう処理動作のさらに他の例を説明するために示すフローチャート。
【符号の説明】
【０１３６】
１１…情報記録装置、１２…ＬＳＩ回路、１３…ハードディスク、１４…ＳＤＲＡＭ、１５…フラッシュメモリ、１６…コントローラ、１６ａ…コマンド解析部、１６ｂ…アーキテクチャメモリ、１６ｃ…シーケンスコントローラ、１６ｄ…Ｉ／Ｆ及びバスコントローラ、１６ｅ…メディア選択部、１６ｆ…アドレスセ制御部、１６ｇ…書き込み処理部、１６ｈ…読み出し処理部、１６ｉ…消去処理部、１６ｊ…アドレス管理部、１６ｋ…状態判定部、１６ｌ…優先順位管理部、１７…ディスクＩ／Ｆ、１８…ＳＤＲＡＭ Ｉ／Ｆ、１９…フラッシュメモリＩ／Ｆ、２０…ホスト装置、２１…ホストＩ／Ｆ、２２…管理テーブル、２３…書き替え回数管理テーブル。
【図１】
2009032305.tif 000003
【図２】
2009032305.tif 000004
【図３】
2009032305.tif 000005
【図４】
2009032305.tif 000006
【図５】
2009032305.tif 000007
【図６】
2009032305.tif 000008
【図７】
2009032305.tif 000009
【図８】
2009032305.tif 000010
【図９】
2009032305.tif 000011
【図１０】
2009032305.tif 000012
【図１１】
2009032305.tif 000013