(57)【要約】【課題】ＮＡＮＤ型フラッシュメモリを備えた機器において、専用ハードウェアを追加することなく、エラーの起こりにくいＮＡＮＤ型フラッシュメモリを提供する。【解決手段】読込回数管理部２３はＮＡＮＤ型フラッシュメモリ装置１３０のブロックに含まれるいずれかのページが読み出されるたびに読出回数を各ブロック毎にカウントし、所定のブロックに書き込む。書込回数管理部２４は、いずれかのブロックのいずれかのページにデータが書き込まれるたびに書き込み回数をカウントし、書き込み回数を所定のブロックに書き込む。診断部２８は、読込回数管理部２３によりカウントされた読出回数に基づいて、保守対象ブロックを選択する。保守部２９は書込回数管理部２４によりカウントされた書込回数に基づいて保守対象ブロックのすべてのデータを書き込む書込先ブロックを選択し、書込先ブロックに保守対象ブロックのデータを書き込む。【選択図】図２
2010256944.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリからなるＮＡＮＤ型フラッシュメモリ装置と、
前記ＮＡＮＤ型フラッシュメモリ装置におけるデータの消去単位であるブロックに含まれるいずれかのページが読み出されるたびに読み出し回数を各ブロック毎にカウントし、ブロックごとの読み出し回数を前記ＮＡＮＤ型フラッシュメモリ装置の所定のブロックに書き込む読出回数管理部と、
前記ＮＡＮＤ型フラッシュメモリ装置のブロックのいずれかのページにデータが書き込まれるたびに書き込み回数をブロックごとにカウントし、ブロックごとの書き込み回数を前記ＮＡＮＤ型フラッシュメモリ装置の所定のブロックに書き込む書込回数管理部と、
前記読出回数管理部によりカウントされたブロックごとの前記読み出し回数に基づいて、保守するべき保守対象ブロックを選択する保守対象ブロック選択部と、
前記書込回数管理部によりカウントされたブロックごとの前記書き込み回数に基づいて前記保守対象ブロックのすべてのデータを書き込む書込先ブロックを選択し、選択された書込先ブロックに保守対象ブロックのデータを書き込む保守部と
を備えたことを特徴とするＮＡＮＤ型フラッシュメモリ保守装置。
【請求項２】
前記ＮＡＮＤ型フラッシュメモリ保守装置は、さらに、
前記ＮＡＮＤ型フラッシュメモリ装置のブロックを対象として、ブロックが消去されたに日時を示すブロック消去日時を各ブロックごとに管理し、前記ブロック消去日時を前記ＮＡＮＤ型フラッシュメモリ保守装置に書き込む書込日時管理部
を備え、
前記保守対象ブロック選択部は、
前記書込日時管理部によって書き込まれたブロックごとの最新のブロック消去日時と、前記書込回数管理部によりカウントされたブロックごとの前記書き込み回数とに基づいて、前記保守対象ブロックを選択することを特徴とする請求項１記載のＮＡＮＤ型フラッシュメモリ保守装置。
【請求項３】
前記ＮＡＮＤ型フラッシュメモリ保守装置は、さらに、
ページ読み込み時にエラーが生じた場合にブロックごとのエラー回数をブロックごとにカウントし、ブロックごとのエラー回数を前記ＮＡＮＤ型フラッシュメモリ装置の所定のブロックに書き込むエラー管理部を備え、
前記保守対象ブロック選択部は、
前記書込日時管理部によって書き込まれたブロックごとの最新のブロック消去日時と、前記書込回数管理部によりカウントされたブロックごとの前記書き込み回数と、前記エラー管理部によってカウントされたエラー回数とに基づいて、前記保守対象ブロックを選択することを特徴とする請求項２記載のＮＡＮＤ型フラッシュメモリ保守装置。
【請求項４】
前記保守対象ブロック選択部は、
前記書込日時管理部によって書き込まれた最新のブロック消去日時と、前記書込回数管理部によりカウントされたブロックごとの前記書き込み回数と、前記エラー管理部によってカウントされたエラー回数とのそれぞれからブロックごとに優先度を生成し、生成した優先度に基づいて、前記保守対象ブロックを選択することを特徴とする請求項３記載のＮＡＮＤ型フラッシュメモリ保守装置。
【請求項５】
前記読出回数管理部は、
読み出し回数を前記所定のブロックに書き込むときには、カウントするごとに隣接するビットを変化させ、
前記書込回数管理部は、
書き込み回数を前記所定のブロックに書き込むときには、カウントするごとに隣接するビットを変化させることを特徴とする請求項１〜４のいずれかに記載のＮＡＮＤ型フラッシュメモリ保守装置。
【請求項６】
前記書込日時管理部は、
ブロック消去日時を前記ＮＡＮＤ型フラッシュメモリ装置に書き込むときには、所定のブロックに順次追加して書き込むことを特徴とする請求項２〜５のいずれかに記載のＮＡＮＤ型フラッシュメモリ保守装置。
【請求項７】
前記ＮＡＮＤ型フラッシュメモリ保守装置は、さらに、
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を備え、
前記書込日時管理部は、
ブロック消去日時を前記ＮＡＮＤ型フラッシュメモリ装置に書き込むときには、前記ＮＡＮＤ型フラッシュメモリ装置に書き込む前に所定の時間だけ前記ＲＡＭに格納しておき、前記所定の時間が経過後に前記ＮＡＮＤ型フラッシュメモリ装置にまとめて書き込むことを特徴とする請求項６記載のＮＡＮＤ型フラッシュメモリ保守装置。
【請求項８】
前記保守対象ブロック選択部は、
前記ＮＡＮＤ型フラッシュメモリ装置のすべてのブロックを対象して、前記保守対象ブロックを選択することを特徴とする請求項１〜７のいずれかに記載のＮＡＮＤ型フラッシュメモリ保守装置。
【請求項９】
ＮＡＮＤ型フラッシュメモリからなるＮＡＮＤ型フラッシュメモリ装置を備えたコンピュータを、
前記ＮＡＮＤ型フラッシュメモリ装置におけるデータの消去単位であるブロックに含まれるいずれかのページが読み出されるたびに読み出し回数を各ブロック毎にカウントし、ブロックごとの読み出し回数を前記ＮＡＮＤ型フラッシュメモリ装置の所定のブロックに書き込む読出回数管理部、
前記ＮＡＮＤ型フラッシュメモリ装置のブロックのいずれかのページにデータが書き込まれるたびに書き込み回数をブロックごとにカウントし、ブロックごとの書き込み回数を前記ＮＡＮＤ型フラッシュメモリ装置の所定のブロックに書き込む書込回数管理部、
前記読出回数管理部によりカウントされたブロックごとの前記読み出し回数に基づいて、保守するべき保守対象ブロックを選択する保守対象ブロック選択部、
前記書込回数管理部によりカウントされたブロックごとの前記書き込み回数に基づいて前記保守対象ブロックのすべてのデータを書き込む書込先ブロックを選択し、選択された書込先ブロックに保守対象ブロックのデータを書き込む保守部、
として機能させることを特徴とするＮＡＮＤ型フラッシュメモリ保守プログラム。
【請求項１０】
ＮＡＮＤ型フラッシュメモリからなるＮＡＮＤ型フラッシュメモリ装置を備えたコンピュータが行うＮＡＮＤ型フラッシュメモリ保守方法において、
（１）読出回数管理部が、
前記ＮＡＮＤ型フラッシュメモリ装置におけるデータの消去単位であるブロックに含まれるいずれかのページが読み出されるたびに読み出し回数を各ブロック毎にカウントし、ブロックごとの読み出し回数を前記ＮＡＮＤ型フラッシュメモリ装置の所定のブロックに書き込み、
（２）書込回数管理部が、
前記ＮＡＮＤ型フラッシュメモリ装置のブロックのいずれかのページにデータが書き込まれるたびに書き込み回数をブロックごとにカウントし、ブロックごとの書き込み回数を前記ＮＡＮＤ型フラッシュメモリ装置の所定のブロックに書き込み、
（３）保守対象ブロック選択部が、
前記読出回数管理部によりカウントされたブロックごとの前記読み出し回数に基づいて、保守するべき保守対象ブロックを選択し、
（４）保守部が、
前記書込回数管理部によりカウントされたブロックごとの前記書き込み回数に基づいて前記保守対象ブロックのすべてのデータを書き込む書込先ブロックを選択し、選択された書込先ブロックに保守対象ブロックのデータを書き込む
ことを特徴とするＮＡＮＤ型フラッシュメモリ保守方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カーナビゲーション端末、ポータブルナビゲーション端末、携帯電話、ライフログ端末、デジタルカメラ、ビデオレコーダなどの組み込み型の小型のコストを抑えた情報処理機器や、ウエアラブル端末でＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）に代表されるＮＡＮＤ型メモリを備えた機器のＮＡＮＤ型メモリ部の故障を防ぐための診断保守に関する。
【背景技術】
【０００２】
カーナビゲーションシステムや携帯端末では従来はＨＤＤ（ハードディスクドライブ）装置やＮＯＲ型のメモリ装置を利用してデータを保持していた。ＨＤＤでは駆動部があるため故障の可能性があり、その診断や保守が中心に行われていた。ＮＯＲ型メモリでも一定の回数以上の書込みができないため、書込みエリアを分散するなど工夫を行い、故障が置きにくいような工夫がなされていた。また、万が一故障がおきて、１ビットが化けるようなケースにおいてもＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）技術により訂正し、正しいデータを復元する技術が開発されてきた。
【０００３】
一方、ＮＡＮＤ型メモリでは一定の領域の一部の読み込み（「読み出し」と言う場合もある）を繰り返すと、読み込んだことのない部分も含めて読み込み破壊（「読み出し破壊」という場合もある）を起こすことが知られている。ＮＡＮＤフラッシュメモリの特性として、ページ単位で読む際には、ページより大きな単位であるブロック全体に電荷をかけて読む。これを繰り返すことにより、読んでいないページの０、１が反転する場合がある。これを読み込み破壊という。これがおきると、再度書込み処理をしなければ修正されない。多くの場合はＨ／Ｗ（ＨａｒｄＷａｒｅ）的にＥＣＣを組み込むことで、ある程度まではリカバリが可能になる。一方、書込み回数にも制限があるためアイドル時間に書き直す処理を繰り返すのも問題となる。
【０００４】
とくに、ＳＳＤ（ＮＡＮＤフラッシュメモリ）ベースのカーナビゲーションシステムなどでは、地図の特定の一部は何度も読むが、他はめったに読まないということがある。例えば、カーナビゲーションシステムの地図データのように自宅周辺はよく使うが、あまり行かない部分は読んだこともないので、破壊されていることにも気づかないというケースが考えられる。車は１０年程度使うことがあり、購入してから１０年目に初めて新しい場所に行ったり、倍率を変更して出そうとすると地図データが破壊されていて使用できない場合がある。また、地図データは更新しない限り書込みも行わないので、気づいたときには復元できないようなケースも想定される。車への組込み型のシステムでは１０年程度の保守期間が要請されるとすると、大きな課題となる。
【０００５】
例えば特開２００８−１８１３８０号公報（特許文献１）に開示する技術では、ＮＡＮＤ型フラッシュメモリの読み出し回数を不揮発性の別のメモリに管理することにより課題の解決を実現している。この手法では、Ｈ／Ｗ的に不揮発の別のＮＯＲ型メモリなどを用意する必要があり、コスト的な課題がある。
【０００６】
また、特開２００８−１９２２６７号公報（特許文献２）に開示する技術では、読み出し回数が規定値を超えているかどうかを判定し、超えていたら書き直しをする。判定は起動時などの特定のときに行う手法である。ここに開示された手法では「経年劣化」が考慮されていない。また、読み出し回数をどのように保存するのかも開示されておらず、不揮発性の別のメモリに保存することになれば、コスト的な課題がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１８１３８０号公報
【特許文献２】特開２００８−１９２２６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
この発明は、専用のハードウェアを追加することなくエラーの起こりにくいＮＡＮＤ型フラッシュメモリを提供することを目的とする。
【課題を解決するための手段】
【０００９】
この発明のＮＡＮＤ型フラッシュメモリ保守装置は、
ＮＡＮＤ型フラッシュメモリからなるＮＡＮＤ型フラッシュメモリ装置と、
前記ＮＡＮＤ型フラッシュメモリ装置におけるデータの消去単位であるブロックに含まれるいずれかのページが読み出されるたびに読み出し回数を各ブロック毎にカウントし、ブロックごとの読み出し回数を前記ＮＡＮＤ型フラッシュメモリ装置の所定のブロックに書き込む読出回数管理部と、
前記ＮＡＮＤ型フラッシュメモリ装置のブロックのいずれかのページにデータが書き込まれるたびに書き込み回数をブロックごとにカウントし、ブロックごとの書き込み回数を前記ＮＡＮＤ型フラッシュメモリ装置の所定のブロックに書き込む書込回数管理部と、
前記読出回数管理部によりカウントされたブロックごとの前記読み出し回数に基づいて、保守するべき保守対象ブロックを選択する保守対象ブロック選択部と、
前記書込回数管理部によりカウントされたブロックごとの前記書き込み回数に基づいて前記保守対象ブロックのすべてのデータを書き込む書込先ブロックを選択し、選択された書込先ブロックに保守対象ブロックのデータを書き込む保守部と
を備えたことを特徴とするＮＡＮＤ型フラッシュメモリ保守装置。
【発明の効果】
【００１０】
この発明により、専用のハードウェアを追加することなくエラーの起こりにくいＮＡＮＤ型フラッシュメモリを提供できる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１におけるＮＡＮＤ型フラッシュメモリ保守装置１００のハードウェア構成。
【図２】実施の形態１におけるＮＡＮＤ型フラッシュメモリ保守装置１００の構成図。
【図３】実施の形態１におけるＮＡＮＤ型フラッシュメモリからの読込み動作のフローチャート。
【図４】実施の形態１におけるＮＡＮＤ型フラッシュメモリへの書込み動作のフローチャート。
【図５】実施の形態１における診断部２８の動作のフローチャート。
【図６】実施の形態１における保守部２９の動作のフローチャート。
【図７】実施の形態１におけるデータ格納方式を示す図。
【図８】実施の形態１における書込み日時のデータ格納方式を示す図。
【発明を実施するための形態】
【００１２】
実施の形態１．
図１〜図８参照して実施の形態を説明する。図１は、ＮＡＮＤ型フラッシュメモリ保守装置１００のハードウェア構成図である。ＮＡＮＤ型フラッシュメモリ保守装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２０、ＮＡＮＤ型フラッシュメモリ装置１３０を備える。
【００１３】
（ＮＡＮＤ型フラッシュメモリ装置１３０）
ＮＡＮＤ型フラッシュメモリ装置１３０は、ＮＡＮＤフラッシュメモリで構成され、ファイルシステムなどを配置可能であるが、データの読込み、消去及び書込みについて以下の特性がある。
（１）読込み：
ソフトウェア的にはＲＡＭ１２０にページ単位で読み込むことができるが、ハードウェアの面からはそのページを含むブロック全体に電荷をかけて該当ページを読む。
（２）消去：
複数のページからなり、消去の単位である「ブロック」単位で消去を行う。以下ではブロックが消去単位であることを明確にするために、ブロックを「消去ブロック」と呼ぶ場合がある。
なお、消去とはデータを消去することであるが、ブロック単位でそのブロックのデータを消去することを、「ブロックを消去する」という場合もある。
（３）書込み：
書き込みはページ単位で可能であるが、ブロックを消去すると、そのブロックはすべてのビットが立った状態、即ち１となる。あるページに書込みを行うと、該当するビットのみが落ちた状態「０」となる。フラッシュメモリでは１の状態から０の状態への一方向のみ可能である。「０」→「１」の状態に戻すためにはブロック消去を行う。
【００１４】
（ＮＡＮＤ型フラッシュメモリ装置１３０に格納されるプログラム）
ＮＡＮＤ型フラッシュメモリ装置１３０に保存されてＲＡＭ１２０にロードされＣＰＵ１１０で実行されるプログラムには、ＮＡＮＤフラッシュ上のファイルシステムなども含まれ、ＮＡＮＤ型フラッシュメモリ診断保守プログラム（このプログラムは、コンピュータをＮＡＮＤ型フラッシュメモリ保守装置１００として機能させる）も含まれる。
【００１５】
図２は、ＮＡＮＤ型フラッシュメモリ保守装置１００の構成を示す。コンピュータを、読込破壊率管理部２０〜保守部２９からなるＮＡＮＤ型フラッシュメモリ保守装置１００として機能させるプログラムはＮＡＮＤ型フラッシュメモリ装置１３０に保存されており、実行時にＣＰＵ１１０によってＲＡＭ１２０にロードされる。
【００１６】
図２に示すように、ＮＡＮＤ型フラッシュメモリ保守装置１００は、読込破壊率管理部２０、書込破壊率管理部２１、経年劣化管理部２２、読込回数管理部２３（読出回数管理部）、書込回数管理部２４、書込日時管理部２５、エラー管理部２６、診断情報管理部２７、診断部２８（保守対象ブロック選択部）、保守部２９、及びＮＡＮＤ型フラッシュメモリ装置１３０を備えている。
【００１７】
（読込破壊率管理部２０〜経年劣化管理部２２）
（１）読込破壊率管理部２０は、読込破壊率を記憶しており、この読込破壊率を管理する。
（２）書込破壊率管理部２１は、書込破壊率を記憶しており、この書込破壊率を管理する。
（３）経年劣化管理部２２は、書込経年劣化率を記憶しており、この書込経年劣化率を管理する。
【００１８】
（１）「読込破壊率」とは、何回ブロック内のページを読み込むとそのブロック内のページの一部に破壊が起こるかを示す数値である。
（２）「書込破壊率」とは、何回ブロックを消去すると、そのブロックに破壊が起こるかを示す数値である。
（３）「経年劣化率」とは、ブロックを消去してからどの程度の時間がたつと、そのブロックに破壊が起こるかを示す数値である。
（４）これらの数値は通常半導体メーカなどによって示されるか、あるいは、その数値から計算可能な値であり、ＮＡＮＤフラッシュメモリの集積度や構成方法などメーカ、機種によって変わる数値である。
【００１９】
読込破壊率管理部２０、書込破壊率管理部２１、経年劣化管理部２２は、それぞれ上記の数値をＮＡＮＤ型フラッシュメモリ装置１３０上で管理する。不揮発性のメモリがＮＡＮＤ型フラッシュメモリとは別にあるのであればそこに上記の数値を格納して管理することもできるし、ＮＡＮＤ型フラッシュメモリ保守装置１００においてＮＡＮＤ型フラッシュメモリ装置１３０を付け替えることがないのであれば、消すことのできないＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）上で管理することもできる。
【００２０】
（読込回数管理部２３〜書込日時管理部２５）
（１）読込回数管理部２３は、ＮＡＮＤ型フラッシュメモリ装置１３０における「データ消去の単位」あるいは「データ読込時における電荷をかける単位」であるブロックについて、読み込み回数をカウントして記録し、管理する。
（２）書込回数管理部２４は、消去単位であるブロックの消去回数をカウントして記録し、管理する。
（３）書込日時管理部２５は、ブロックの消去日時を記録し管理する。ＮＡＮＤ型フラッシュメモリ保守装置１００は、日時を計測するカレンダ機能を有する。
【００２１】
（ＮＡＮＤ型フラッシュメモリ装置１３０に書き込みされる管理情報）
読込回数管理部２３、書込回数管理部２４、書込日時情報管理部２５、エラー管理部２６、診断情報管理部２７は、各ブロックに対応する領域をＮＡＮＤ型フラッシュメモリ上に用意し、各自の管理情報を管理する。後述のように、読込回数管理部２３、書込回数管理部２４、エラー管理部２６は図７の方式で管理し、書込日時情報管理部２５及び診断情報管理部２７は、図８のような方式で日時を管理する。たとえば読込回数管理部２３、書込回数管理部２４につては以下の（１）、（２）の様である。
（１）読込回数管理部２３は、ＮＡＮＤ型フラッシュメモリ装置１３０のブロックに含まれるいずれかのページが読み出されるたびに読み出し回数を各ブロック毎にカウントし、ブロックごとの読み出し回数をＮＡＮＤ型フラッシュメモリ装置１３０の所定のブロックに書き込む。
（２）書込回数管理部２４は、ＮＡＮＤ型フラッシュメモリ装置１３０のブロックのいずれかのページにデータが書き込まれるたびに書き込み回数をブロックごとにカウントし、ブロックごとの書き込み回数をＮＡＮＤ型フラッシュメモリ装置１３０の所定のブロックに書き込む。
（３）例えば、典型的なＮＡＮＤ型フラッシュメモリであれば４ＫＢ単位のページでＮＡＮＤフラッシュメモリに対して、読み込みと書込みを行うことができる。１２８ＫＢ単位のブロック単位で消去を行うことができる。これらの単位はメーカや種類によって異なるものである。
【００２２】
また書込みはページ単位であるが、通常消去するとすべてのビットが立った状態即ち「１」となり、書込みを行うと該当するビットのみが落ちた状態「０」となる。ＮＡＮＤ型フラッシュメモリではこの１の状態から０の状態への一方向のみが変化する。逆に１の状態に戻すためには消去を行う。このような特性を利用し、読込回数管理部２３や書込回数管理部２４やエラー管理部２６は、後述する図７のように、対象とする消去ブロック単位に、一定以上を超えたら保守をしなければならないというビット数ぶんの領域を保持し、１回アクセスするごとに（あるブロックのいずれかのページを対象としたデータの読み込み、あるいは書込みがあるたびに）、１ビットずつ変化させていくことにより、ＮＡＮＤ型フラッシュメモリ装置１３０で各ブロックの読み込み回数や書込み回数を管理する。図７に示すように、読込回数管理部２３は、読み出し回数を所定のブロックに書き込むときには、カウントするごとに隣接するビットを変化させる。図７は、読込回数管理部２３が読み込みをカウントするたびに左から順次「１」を立てていく状態を示している。書込回数管理部２４も同様に、書き込み回数を所定のブロックに書き込むときには、カウントするごとに隣接するビットを変化させる。図７は、書込回数管理部２４が書込みをカウントするたびに左から順次「１」を立てていく状態をも示している。例えば１２８ＭバイトのＮＡＮＤ型フラッシュＲＯＭでは、１２８Ｋバイトのブロックは高々１Ｋ個ほどであり、１２８回を閾としても１消去ブロック分のデータの保持でこのような方式を実現することができる。
【００２３】
（書込日時管理部２５による書込み日時の記録）
１ビットでは表せない書込み日時（ブロック消去日時）に関しても同様であり、書込日時管理部２５は、ブロック消去を実施した日時情報を数ビットであらわしておく。後述する図８は、書込日時管理部２５によって記録される書込日時を概念的に示した図である。書込日時管理部２５は、いずれかのブロックの消去があるたびに、図８のようにブロック消去の日時を示す日付情報の付加を行う手法で管理し、この日付情報を保持する領域の消去は行わない。オーバーフローすればその時点で全体を消去するという方法でかまわない。例えば、図８の「消去ブロックＡ」は、２００９年１２月５日、２００９年１２月１０日、２００９年１２月１６日にブロックＡが消去処理されたことを示している。なお毎回書込みを行わずに一定分はＲＡＭ上で管理し、まとめて書き込むことで日時情報を書き込むための領域の消去回数を減らすことができる。また、突然の電源断などでその情報を書き込めない場合も想定した安全を見た閾値を設定にすることにより、頻繁な消去を行わずにすませることができる。
【００２４】
（エラー管理部２６）
エラー管理部２６は、実際に読込時に生じたビットエラーの履歴（例えばエラーの発生回数）を管理する。エラー管理部２６は、ページ読み込み時にエラーが生じた場合にブロックごとのエラー回数をブロックごとにカウントし、ブロックごとのエラー回数をＮＡＮＤ型フラッシュメモリ装置１３０の所定のブロックに書き込む。エラーはＥＣＣというＨ／Ｗあるいはソフトウェア的なリカバリ手段で訂正することができるが、エラーが起こったということは既に破壊が始まっていることを意味しているために，直ちに後述する診断，保守の適用対象となる。エラー管理部２６は、このようなＥＣＣを適用したという履歴を各消去ブロック単位に読込み回数や書込み回数と同様に、図７のようにビットデータとして管理する。
【００２５】
（読込み動作）
図３は、ＮＡＮＤ型フラッシュメモリからデータを読み込む際のフローチャートである。次に、図３を用いてＮＡＮＤ型フラッシュメモリ装置１３０から、データやプログラムを読み込む動作を説明する。読み込み動作は、ＮＡＮＤ型フラッシュメモリ装置１３０に格納された読込みプログラムが実行する。
【００２６】
ステップ３０から読み出しのフローが開始し、ステップ３１で読み出し要求待ちとなる。一連の処理を終了後もステップ３０に戻り、常にステップ３１で読み出し要求待ちとなる。
【００２７】
ステップ３１の読込要求待ち状態でアクセス要求がくれば、要求のあったアドレスとデータの量を解析し（ステップ３２）、該当する消去ブロック、その消去ブロック中の該当ページを特定する。ページが複数ある場合は、最初のページを読む処理のみ行い、残りのページは次の要求として処理を行い、このフローを繰り返す中で残りのページを読むことを繰り返す。
【００２８】
ステップ３２のアドレス解析によって特定したページを、読み出し要求されたＲＡＭ１２０に転送する（ステップ３３）。
【００２９】
（エラー管理部２６によるエラー処理）
ステップ３４では読出処理（ステップ３３）の中で、エラー管理部２６は、所謂ＥＣＣ（エラー訂正処理）によりエラー検出を行い訂正処理をしたかどうかを確認する。Ｈ／Ｗ的なものであればその情報を示す部分のログを確認するし、Ｓ／Ｗ的なものであればその処理が動作した履歴を確認することによりわかる。エラー処理が動作していた場合は、当該消去ブロックにエラーがあった情報を管理する。
【００３０】
（読込回数管理部２３による処理）
ステップ３５では、読込回数管理部２３が、当該消去ブロック（ステップ３２において特定されたブロック）に読み出しがあったことをカウントし図７に示した方式で記録する。この後、ステップ３０へ戻り、ステップ３１で残りのページの読み込み要求があればその動作を行い、要求がなければ動作を行わない。
【００３１】
（書き込みの動作）
図４は、ＮＡＮＤ型フラッシュメモリ装置１３０への書込み動作を示すフローチャートである。次に図４を用いて、フラッシュメモリへの書込み要求があった場合の処理を説明する。書き込み動作は、ＮＡＮＤ型フラッシュメモリ装置１３０に格納されている書込み処理のプログラムが行う。
【００３２】
読み込み時と同様に、書込み処理のプログラムはステップ４０で開始し、ステップ４１で書込み要求待ちとなる。
【００３３】
書込み要求が来ると、ステップ４２でアドレス解析及びデータの大きさなどを確認し、該当する消去ブロック、ページを特定する。特定された一つ以上ページに対して一つ以上の消去ブロックが対応する。特定されたページごとに使用済みかどうかをステップ４３で確認する。
【００３４】
使用済みのページの場合（ステップ４３：ＹＥＳ）は、そのページを消去しなければ正しく利用できないため、消去プロセスであるステップ４４以下に移る。ただし、管理情報を書込むなどの上書きで良いことがわかっている場合には、ステップ４３を経由せず、ステップ４２から直接ステップ４８へ移動する。これらは更新書込みか、上書きかといった呼び出し方の違いによって区別することができる。
【００３５】
使用済みページであった場合（ステップ４３：ＹＥＳ）は、ブロック内の他のページの使用状況をステップ４４で確認する。もし、他のページが全く使用されていない状態であれば（ステップ４４ａ：ＮＯ）、直接ステップ４６に移動してブロックを消去する。使用されているページがある場合（ステップ４４ａ：ＹＥＳ）は、そのページをステップ４５でＲＡＭ１２０に読み込んでからステップ４６でブロックを消去する。
【００３６】
ステップ４７では、ステップ４５で退避のためＲＡＭ１２０に読み込んだページがあればそのまま書き戻す。ステップ４８で当初の目的であったページに書込み、書込回数管理部２４は、当該消去ブロックの書込み回数情報をステップ４９で図７に示した方式で更新し、処理は終了する。
【００３７】
次に、図５、図６を参照して診断部２８、保守部２９の動作を説明する。図５で説明する診断部２８、図６で説明する保守部２９は、特定のタイミングで呼び出される。例えば起動時や例えば終了時である。一定時間に終えるようなパラメター設定をしておいてもかまわない。この場合は、一定時間を保守、診断で越えた時点で作業を停止するでかまわない。
【００３８】
（診断の動作）
図５は診断部２８（保守対象ブロック選択部）の動作を示すフローチャートである。図５を参照して診断部２８の動作を説明する。診断部２８は、読込回数管理部２３によりカウントされたブロックごとの読み込み回数に基づいて、保守するべき保守対象ブロックを選択する。ここで「保守」とは、後述するが、保守対象ブロックのデータを未使用状態、かつ、書き込み回数の少ない別のブロックに書き込む処理である。
【００３９】
ステップ５１において、診断部２８は、「第１の診断状況」を読みこむ。「診断状況１」とは診断対象として選定し、ＮＡＮＤ型フラッシュメモリ装置１３０を保守した日時情報である。この保守は、後述する保守部２９の実施する保守であり、「保守した日時情報」とは、保守部２９による保守の実施日時を示す情報である。
【００４０】
診断部２８は、エラー管理部２６の管理するエラー管理情報を読み込み（ステップ５２）、読込回数管理部２３の管理する読み込み回数情報（図７）を読み込み（ステップ５３）、ブロック消去した日時を示す時間情報（図８）を「第２の診断状況」として読み込む（ステップ５４）。
【００４１】
ステップ５５において、診断部２８は、以下のような「優先度」（以下、保守優先度という）によって辞書的にブロックをソーティングし、診断対象（保守対象となる保守対象ブロック）を特定する。
【００４２】
（保守優先度によるソーティング）
ソーティングの第１の要素は、エラーが起こったか起こっていないか（ステップ５２で取得）である。
すなわち、
第１に、エラーの起こったページを含む消去ブロックの保守優先度を高くする。
第２に、読み込み回数（ステップ５３で取得）において、一定の閾値を超えたもので回数の多い消去ブロック順に保守優先度を高くする。
第３に、「第２の診断状況」（経時劣化）の情報（ステップ５４で取得）から、前回のブロック全体の消去からの経過時間の閾値を越えたものを保守優先度を高くする。診断部２８により、最終的に一定以上の保守優先度のブロックが保守対象ブロックとして選択される。保守優先度が高くならなかった消去ブロックに関しては診断保守の対象外とする。
【００４３】
以上が診断部２８のフローである。ステップ５６で保守フローへ移行する。
【００４４】
（保守の動作）
図６は、保守部２９の動作を示すフローチャートである。保守部２９は、診断部２８によって候補として選ばれた保守対象ブロックに対して、保守優先度順に保守を行う。
【００４５】
ステップ６１において、保守部２９は、書込回数管理部２４によって管理されている各消去ブロックの書込み回数を読み込み、使われていない消去ブロックに関して例えば書込み回数の少ない順に優先度（保守優先度とは異なる）を決めておく。後述するステップ６４のように、使われていない消去ブロックに保護対象ブロックのデータが書き込まれるが、この優先度（書込先優先度ともいう）は、その書き込み対象の未使用ブロックを選択するための優先度である。各ブロックが使用されているか未使用かの管理は、使用管理部として機能する使用管理プログラムが実行する。使用／未使用の情報は、やはりＮＡＮＤ型フラッシュメモリ装置１３０に格納される。
【００４６】
ステップ６２において、保守部２９は、保守対象ブロックの中から保守優先度の順に１ブロックを選択する。
【００４７】
ステップ６３において、保守部２９は、未使用のブロックから書込先優先度に従って１ブロックを選択する。
【００４８】
ステップ６４において、保守部２９は、選択した保守対象ブロックの内容をＲＡＭ１２０に一旦読み込むなどして、内容をコピー先のブロックにコピー（書き込む）する。この際、保守部２９は、未使用ブロックである書き込み候補と、保守対象ブロックとの書込み回数とを比較する。保守部２９は、保守対象のブロックの書込み回数が小さいか、大きくても一定の閾値以内であれば、コピーするのではなく、自分自身のブロック（すなわち選択された保護対象ブロック）に再書込み（その保護対象ブロックをデータ削除して再度書き込む処理）を行う。
【００４９】
ステップ６５において、コピー先を有効にする。そのためには、そのデータを参照しているデータのアドレス情報を修正するか、論理と物理のアドレスの変換テーブルを変更することにより実現できる。論理と物理のアドレス変換テーブルもまた、ＮＡＮＤフラッシュ上にあることを想定すると、このテーブルも逐次上書きできる形式にするのが好ましい。
【００５０】
このアドレス変換のテーブルの頻繁なる書き換え防ぐことは、一定の書き換え回数の偏りは許すことで対応できる。ステップ６６でコピー元のブロックを未使用にする。このときコピー元のブロックを消去してもよい。
【００５１】
（読み込み回数、書き込み回数、エラー発生回数等の保持方式）
図７は、読込回数管理部２３による読込回数の記録、書込回数管理部２２４による書込回数の記録、あるいはエラー管理部２６によるエラー発生回数の記録方式をＮＡＮＤ型フラッシュメモリ装置１３０での保持方法を示す図である。
【００５２】
読み込み動作を例にとれば、図７は、読み込みがあるたびに、ＮＡＮＤ型フラッシュメモリ装置１３０に予め確保された所定の領域において、読み込み回数を示す位置のビットを立てた例を示している。消去ブロックＡでは１回の読み込みがあったことを示しており、消去ブロックＢでは５回の読み込みがあったことを示す。
【００５３】
一般にＮＡＮＤフラッシュＲＯＭ（ＮＡＮＤ型フラッシュメモリ装置）では、ブロックを消去した場合にはビットがすべてたち（消去するとすべてのビットが「１」になる）、書き込みではビットごとにビットを落とす（１を０にする）ことができる。そのため、図７の表現に対して実際には０と１が反対となるケースが多いがどちらでも回数がわかることには変わりがない。この情報のブロックが消去され、コピーする際には、このテーブルは初期化する。
【００５４】
図８は、経年変化の情報のための書込日時情報の管理方式を示す図である。書込日時管理部２５によって記録され管理される日時情報は、そのブロックが消去された日時を示す情報である。診断情報管理部２７によって管理される日時情報も同様である。この日時情報は１ビットで表現することはできない。このため、日時情報は、一定のビット数で表す。この例では日時を示しており、消去ブロックＡは年１２月１６日にブロック消去されたことを示し、消去ブロックＢでは０９年１０月５にブロック消去されたことを示している。
【００５５】
このテーブルも保守される場合には初期化され、領域をあけることができる。また日時情報は一定の整数で表す方式で問題がない。
【００５６】
以上のように構成されているため、専用のハードウェアを必要とすることなくエラーの起こりにくいＮＡＮＤ型フラッシュメモリを構成でき、長期間の使用に耐えうるという効果がある。
【００５７】
なお、以上では、ＮＡＮＤ型フラッシュメモリ保守装置１００を説明したが、ＮＡＮＤ型フラッシュメモリ保守装置１００の各構成要素の処理をプログラムに実行させることでＮＡＮＤ型フラッシュメモリ保守装置１００をＮＡＮＤ型フラッシュメモリ保守プログラムとして把握できる。また、ＮＡＮＤ型フラッシュメモリ保守装置１００の動作を、ＮＡＮＤ型フラッシュメモリ保守装置１００が行うＮＡＮＤ型フラッシュメモリ保守方法としても把握できる。
【符号の説明】
【００５８】
２０  読込破壊率管理部、２１  書込破壊率管理部、２２  経年劣化管理部、２３  読込回数管理部、２４  書込回数管理部、２５  書込日時管理部、２６  エラー管理部、２７  診断情報管理部、２８  診断部、２９  保守部、１００  ＮＡＮＤ型フラッシュメモリ保守装置、１１０  ＣＰＵ、１２０  ＲＡＭ、１３０  ＮＡＮＤ型フラッシュメモリ装置。
【図１】
2010256944.tif 000003
【図２】
2010256944.tif 000004
【図３】
2010256944.tif 000005
【図４】
2010256944.tif 000006
【図５】
2010256944.tif 000007
【図６】
2010256944.tif 000008
【図７】
2010256944.tif 000009
【図８】
2010256944.tif 000010