(57)【要約】【課題】フラッシュメモリのエラー箇所の累積を回避するフラッシュメモリ制御装置を提供する。【解決手段】フラッシュメモリ制御装置は、複数のブロックから構成される書き換え可能なＮＡＮＤフラッシュメモリ２１０と、所定のタイミングで、ＮＡＮＤフラッシュメモリ２１０の複数のブロックのうち全ブロック数より少ない任意の数のブロックをリフレッシュし、所定のタイミングの度に、前回とは異なるブロックをリフレッシュするＮＡＮＤフラッシュコントローラ１１０と、を備える。【選択図】図１
2010015477.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックから構成される書き換え可能なフラッシュメモリと、
所定のタイミングで、前記複数のブロックのうち全ブロック数より少ない任意の数のブロックをリフレッシュし、前記所定のタイミングの度に、前回とは異なるブロックをリフレッシュするコントローラと、を備えるフラッシュメモリ制御装置。
【請求項２】
前記フラッシュメモリは、前記任意の数と、リフレッシュを開始するブロック番号とを保持するリフレッシュ情報領域を有し、
前記コントローラは、所定のタイミングに、前記リフレッシュ情報領域から前記任意の数と前記リフレッシュを開始するブロック番号とを読み出し、リフレッシュ実行後、前記リフレッシュ情報領域へ前記任意の数と次回リフレッシュを開始するブロック番号とを書き込むリフレッシュ管理部を有することを特徴とする請求項１記載のフラッシュメモリ制御装置。
【請求項３】
前記コントローラは、
前記任意の数と、リフレッシュを開始するブロック番号とを保持する不揮発性のリフレッシュ情報領域と、
所定のタイミングに、前記リフレッシュ情報領域から前記任意の数と前記リフレッシュを開始するブロック番号とを読み出し、リフレッシュ実行後、前記リフレッシュ情報領域へ前記任意の数と次回リフレッシュを開始するブロック番号とを書き込むリフレッシュ管理部と、を有することを特徴とする請求項１記載のフラッシュメモリ制御装置。
【請求項４】
前記リフレッシュ情報領域は、前記任意の数と前記リフレッシュを開始するブロック番号との複数の組み合わせを保持し、
前記リフレッシュ管理部は、前記任意の数と前記先頭アドレスとの複数の組み合わせを読み出し、前記複数の組み合わせそれぞれの値が一致しない場合、多数となる値を用いてリフレッシュを実行させ、前記任意の数と前記次回リフレッシュを開始するブロック番号との複数の組み合わせを、前記リフレッシュ情報領域へ書き込むことを特徴とする請求項２または３記載のフラッシュメモリ制御装置。
【請求項５】
前記リフレッシュ情報領域は、さらに、リフレッシュした回数を保持し、
前記リフレッシュ管理部は、前記リフレッシュ実行後、前記回数を更新することを特徴とする請求項２乃至４のいずれか一項に記載のフラッシュメモリ制御装置。
【請求項６】
前記フラッシュメモリは、ＮＡＮＤフラッシュメモリであることを特徴とする請求項１乃至５のいずれか一項に記載のフラッシュメモリ制御装置。
【請求項７】
前記所定のタイミングは、電源投入時、外部からの命令を受け付けた場合、及び、所定の周期の場合のうちの少なくとも一つであることを特徴とする請求項１乃至６のいずれか一項に記載のフラッシュメモリ制御装置。
【請求項８】
複数のブロックから構成される書き換え可能なフラッシュメモリを制御するフラッシュメモリ制御方法であって、
所定のタイミングで、前記複数のブロックのうち全ブロック数より少ない任意の数のブロックについてリフレッシュし、
前記所定のタイミングの度に、前回とは異なるブロックをリフレッシュすることフラッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
フラッシュメモリを制御する装置及び装置に関し、特に、ＮＡＮＤ（Not AND）フラッシュメモリを制御する装置及び方法に関する。
【背景技術】
【０００２】
フラッシュメモリは、読み出しを繰り返す回数が多くなると、フローティングゲートに蓄積された電荷が徐々に放出される。このため、フラッシュメモリのデータエラー（リードディスターブ）が発生することが知られている。例えば、組み込みシステムのプログラムやイメージデータ等が格納されているＮＡＮＤフラッシュメモリを有するフラッシュメモリ制御装置がある。このようなフラッシュメモリ制御装置において、フラッシュメモリに格納されているデータの読み出しを頻繁に行うシステムの場合、時間経過と共に、データエラーの発生確率が増加する。
【０００３】
フラッシュメモリ制御装置は、発生したエラーをＥＣＣ（Error Check and Correct）により訂正して使用する機能を有する。発生したエラーがＥＣＣによる訂正で修復可能なものであれば、装置内の動作として支障は無い。しかし、ＮＡＮＤフラッシュメモリ内のデータを訂正した後書き換えしているわけではない。このため、そのままではエラーが累積して訂正可能な範囲を超えてしまい、エラーが訂正できなくなってしまうという問題があった。
【０００４】
図９は従来のＮＡＮＤフラッシュメモリ制御装置の構成例を示すブロック図である。図９に示すＮＡＮＤフラッシュメモリ制御装置は、ＮＡＮＤフラッシュコントローラ１９０とＮＡＮＤフラッシュメモリ２９０とを備える。ＮＡＮＤフラッシュコントローラ１９０は、ホストシステムインタフェース１９１を介してホストシステム３９０と接続し、ＮＡＮＤフラッシュメモリインタフェースを介してＮＡＮＤフラッシュメモリ２９０へアクセスする。また、ＮＡＮＤフラッシュコントローラ１９０は、ＮＡＮＤフラッシュコントローラ１９０の全体を制御する全体制御部（ＣＰＵ）１９３、全体制御部１９３が動作するためのプログラムを格納しておくＲＯＭ（Read Only Memory）１９４、ＮＡＮＤフラッシュメモリ２９０のデータのエラー検出と訂正を実行するＥＣＣ回路１９５、全体制御部１９３が処理する際に使用するメモリ（ＲＡＭ：Random Access Memory）１２６、及び、ＮＡＮＤフラッシュへの書き込みデータおよび読み出しデータを格納しておくデータバッファ１９７を備える。
【０００５】
ＮＡＮＤフラッシュメモリ２９０は、ブロック群２９１を備える。図９では、ブロック群２９１は、Ｂｌｏｃｋ＃０からＢｌｏｃｋ＃ｎで構成されている例を示している。
【０００６】
ホストシステム３９０は、ＮＡＮＤフラッシュメモリ２９０に書き込まれたデータを使って、各種処理を実行するシステムである。なお、図９において、通常用いられている論理アドレスと物理アドレスの対応を管理しているブロック対応管理表等のアドレス管理に関係する部分に関しては省略している。
【０００７】
次に動作を説明する。図１０は、読み出し処理を示すフローチャートである。図１１は、オートリカバリ時の読み出し処理を示すフローチャートである。図１０に示すように、ＮＡＮＤフラッシュコントローラ１９０は、ホストシステム３９０からＮＡＮＤフラッシュメモリ２９０へのアクセスコマンドを受け付け、ＮＡＮＤフラッシュメモリ２９０からデータを読み出す（Ｓ９１）。ＥＣＣ１９５は、読み出したデータをチェックし、エラーの有無を検出する（Ｓ９２）。エラーが無ければ（Ｓ９２でＮｏ）、読み出したデータは、ホストシステム３９０へ送られる（Ｓ９４）。エラーがある場合（Ｓ９２でＹｅｓ）、ＥＣＣ１９５は、エラーを訂正する（Ｓ９３）、訂正されたデータがホストシステムに転送される（Ｓ９４）。
【０００８】
ＮＡＮＤフラッシュメモリ２９０への読み出しを多数繰り返した場合、ＮＡＮＤフラッシュメモリ内のフローティングゲートの電荷のリークによりビットエラーが生じる。ＥＣＣ１９５は、このようにして生じたエラーを検出し、ホストシステム３９０へ渡す前に、エラーデータを訂正して正しいデータに戻す。
【０００９】
また、図１１を用いて、別のデータの流れを説明する。図１０と同じステップ番号の動作は同様である。図１１では、ＥＣＣ１９５がエラーを検出した場合（Ｓ９２でＹｅｓ）の処理が異なる。具体的には、ＥＣＣ１９５は、エラーデータを訂正して正しいデータに戻して（Ｓ９３）、ＮＡＮＤフラッシュメモリ２９０の該当Ｂｌｏｃｋをリカバリ（別のＢｌｏｃｋへコピー）する（Ｓ９５）。
【００１０】
図１０、図１１に示すように、ＮＡＮＤフラッシュメモリ２９０から読み出したデータにエラーを検出した場合、エラーを訂正して読み出したデータをホストシステム３９０に転送していた、あるいは、エラーを訂正し、エラーブロックを他のブロックにコピーしてホストシステム３９０に読み出したデータを転送していた。
【００１１】
ＮＡＮＤフラッシュメモリのコントローラについて、例えば、特許文献１には、シーケンシャルＲＯＭインタフェース対応ＮＡＮＤ型フラッシュメモリーデバイスおよびそのコントローラが開示されている。また、非特許文献１には、商品化されたＮＡＮＤ型フラッシュメモリコントローラＬＳＩが紹介されている。
【００１２】
さらに、関連する技術として、特許文献２には、消去ブロック毎にブロックを再構築した日付（年月）を格納する領域を有し、直近の再構築日付から一定の期間が経過したブロックを、再構築の対象とする技術が開示されている。この技術ではリフレッシュを日付で管理する必要があった。特許文献３には、ＮＡＮＤ型フラッシュメモリにおいて、ページ単位でデータ書き換え回数を管理し、１つのブロック内の各ページのデータ書き換え回数が所定の条件を満たした時に、その１つのブロックについてリフレッシュ動作を行うという技術が開示されている。この技術では、読み出しが多く書き込みが少ないシステムでは、読み出しにおいてエラーが発生しても所定の条件を満たさない場合、リフレッシュを行うことができなかった。
【００１３】
また、特許文献４には、マイクロコンピュータが起動する際、通常の制御動作を行っている際、固定周期の割り込みプログラムによって行われる際、の少なくとも一つの場合に、フラッシュＲＯＭ(フラッシュメモリ)データのサムチェックを行ってフラッシュＲＯＭデータの異常箇所を割り出し、異常箇所を正常データに書き換える技術が開示されている。この技術は、マイクロコンピュータ内蔵のフラッシュＲＯＭに関する技術であり、図９の示すＮＡＮＤフラッシュメモリとは、想定されるエラーの発生状況が異なり、リフレッシュの必要性が異なるものであった。特許文献５には、メモリトランジスタの閾値変化による保持データ状態遷移によってエラーが生じる前に再書込み（リフレッシュ）し、あるいはエラー訂正可能なエラーの発生範囲内で、保持データを正しいデータに復元した後再書込みを行う技術が開示されている。この技術では、不揮発性半導体メモリのデータ読み出し回数が基準値を超えた場合に保持データのエラー訂正及び再書込みを行うものであり、読み出し回数を計数する必要があった。
【特許文献１】特開２００７−０４８０９０号公報
【特許文献２】特開２００２−３１８７２９号公報
【特許文献３】特開２００４−２４０５７２号公報
【特許文献４】特開２００６−０７９２２９号公報
【特許文献５】特開平８−２７９２９５号公報
【非特許文献１】ＮＡＮＤ型フラッシュメモリコントローラＬＳＩを商品化、［ｏｎｌｉｎｅ］、［平成２０年６月１３日検索］、インターネット＜ＵＲＬ：http://www.tdk.co.jp/tjaah01/aah68200.htm＞
【発明の開示】
【発明が解決しようとする課題】
【００１４】
図９から図１１に示したフラッシュメモリ制御装置は、ＮＡＮＤフラッシュメモリ内のデータを読み出したとき、訂正可能なエラーを検出すると、ホストシステムへデータを渡す際に、該データに対するエラー訂正処理を行っていた（図１０）。このようなエラー訂正処理ではＮＡＮＤフラッシュメモリ内のデータ自体にはエラー訂正が行われず、その状態は変わらない。従って、該データの読み出しが数回重なると、フローティングゲートに対するストレス（電荷のリーク）が累積して行き、エラー箇所が増加することとなる。ひいてはエラー箇所の増加により、ＥＣＣのエラー訂正能力を超えてしまい、エラー訂正処理を正しく行えなくなってしまうという問題があった。
【００１５】
このような問題を回避すべく、フローティングゲートへのストレスの累積を解除することが望まれている。
【課題を解決するための手段】
【００１６】
本発明に係るフラッシュメモリ制御装置の一態様は、複数のブロックから構成される書き換え可能なフラッシュメモリと、所定のタイミングで、前記複数のブロックのうち全ブロック数より少ない任意の数のブロックをリフレッシュし、前記所定のタイミングの度に、前回とは異なるブロックをリフレッシュするコントローラと、を備える。コントローラが所定のタイミングでリフレッシュを繰り返すことにより、フラッシュメモリのブロックが順番にリフレッシュされる。これにより、フラッシュメモリのエラー箇所の累積を防止し、エラーの発生を抑制する。
【００１７】
また、本発明に係るフラッシュメモリ制御方法の一態様は、複数のブロックから構成される書き換え可能なフラッシュメモリを制御するフラッシュメモリ制御方法であって、所定のタイミングで、前記複数のブロックのうち全ブロック数より少ない任意の数のブロックについてリフレッシュし、前記所定のタイミングの度に、前回とは異なるブロックをリフレッシュする。
【発明の効果】
【００１８】
本発明によれば、フラッシュメモリの読み取りによるストレスの累積を解除することで、フラッシュメモリの保持内容をＥＣＣのエラー訂正範囲内に正しく保つことが出来る。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
【００２０】
本発明の実施形態の一態様は、所定のタイミングで、フラッシュメモリのブロックの一部分のブロックをリフレッシュすることを実現する。フラッシュメモリを制御するコントローラは、所定のタイミングで、フラッシュメモリを構成する複数のブロックのうち、任意の数のブロックについてリフレッシュ（再書き込み）する。任意のブロック数は、全ブロック数より小さい値である。コントローラは、所定のタイミングの度に前回とは異なるブロックをリフレッシュする。コントローラが所定のタイミングでリフレッシュを繰り返すことにより、フラッシュメモリのブロックが順番にリフレッシュされる。リフレッシュするために必要な情報（リフレッシュするブロックの数、リフレッシュを開始するブロックの情報など）は、コントローラあるいはフラッシュメモリのいずれかに保存されている。以下の説明において、リフレッシュとは、一つのブロックのデータを読み出し、エラーの有無を調べ、エラーがある場合は訂正し、訂正後のデータを別のブロックに書き込む処理をいう。また、フラッシュメモリの一例としてＮＡＮＤフラッシュメモリを用いて説明する。
【００２１】
（実施形態１）
図１は本発明の実施形態１に係るフラッシュメモリ制御装置の構成例を示すブロック図である。フラッシュメモリ制御装置は、ＮＡＮＤフラッシュコントローラ（コントローラ）１１０とＮＡＮＤフラッシュメモリ２１０とを備える。ＮＡＮＤフラッシュコントローラ１１０は、ホストシステム３１０と接続している。
【００２２】
ＮＡＮＤフラッシュコントローラ１１０は、ホストシステムインタフェース１１１、ＮＡＮＤフラッシュメモリインタフェース１１２、全体制御部（ＣＰＵ）１１３、ＲＯＭ１１４、ＥＣＣ回路１１５、メモリ（以降、ＲＡＭという）１１６、データバッファ１１７、及び、リフレッシュ管理情報領域１１８を備える。ＮＡＮＤフラッシュメモリ２１０は、ブロック群２１１とリフレッシュ管理情報領域（リフレッシュ情報領域）２１２とを備える。
【００２３】
ホストシステムインタフェース１１１は、ホストシステム３１０からのコマンドを受け付け、コマンドに基づいてＮＡＮＤフラッシュコントローラ１１０が処理した結果をホストシステム３１０へ転送する。ＮＡＮＤフラッシュメモリインタフェース１１２を介して、ＮＡＮＤフラッシュメモリ２１０への読み出し及び書き込み処理を制御する。全体制御部１１３は、ＮＡＮＤフラッシュコントローラ１１０の処理全体を制御する。具体的には、ＲＯＭ１１４に書き込まれたプログラムをＲＡＭ１１６にロードし、ＲＡＭ１１６にロードされた命令を実行する。もしくは、ＲＯＭ１１４から直接実行することも可能である。ＲＯＭ１１４は、全体制御部１１３に実行させる命令を記述したプログラムを格納する。ＥＣＣ回路１１５は、ＮＡＮＤフラッシュメモリ２１０に格納されたデータの誤りの検出と訂正を実行する。メモリＲＡＭ１１６は、全体制御部１１３が命令を処理する際に使用するメモリである。データバッファ１１７は、ＮＡＮＤフラッシュメモリ２１０への書き込みデータ及び読み出しデータを格納するバッファである。
【００２４】
リフレッシュ管理情報格納領域１１８は、リフレッシュ管理情報を格納する。リフレッシュ管理情報格納領域１１８は、本実施形態では、揮発性メモリ、不揮発性メモリのいずれであってもよい。リフレッシュ管理情報は、ＮＡＮＤフラッシュメモリの書き換えを実行するのに必要な情報である。具体的には、一度のリフレッシュにおいて実施するリフレッシュ実行ブロック数とリフレッシュを開始するブロック番号（以下、適宜、「開始ブロック番号」という）が格納されている。リフレッシュ管理情報は、電源投入時にＮＡＮＤフラッシュメモリから読み出される。この手順については、後述する。
【００２５】
ブロック群２１１は、ＮＡＮＤフラッシュメモリ内のブロック（Ｂｌｏｃｋ）を示している。図１では、Ｂｌｏｃｋ＃０からＢｌｏｃｋ＃ｎの（ｎ＋１）個で構成されている場合を示している。
【００２６】
リフレッシュ管理情報領域２１２は、１個もしくは複数の実行情報を格納する。実行情報は、ＮＡＮＤフラッシュメモリの書き換えを実行するのに必要な情報である。具体的には、上述したリフレッシュ管理情報と同様である。図１では、実行情報＃１、実行情報＃２、実行情報＃３の３つの実行情報を格納する例を示している。３つの実行情報はリフレッシュ管理情報領域２１２に書き込む際には同一の情報が書き込まれる。３つの実行情報は、ＮＡＮＤフラッシュコントローラ１１０のリフレッシュ管理情報格納領域１１８へ書き込まれるリフレッシュ管理情報のもとになる情報である。
【００２７】
ホストシステム３１０は、ＮＡＮＤフラッシュメモリ２１０に書き込まれたデータを使って、各種処理を実行するシステムである。なお、図１において、通常用いられている論理アドレスと物理アドレスの対応を管理しているブロック対応管理表等のアドレス管理に関係する部分に関しては省略している。
【００２８】
ここで、図２を用いて、ＮＡＮＤフラッシュコントローラ１１０のリフレッシュに関連する構成について説明する。図２では、リフレッシュを実現するプログラム（以下、「リフレッシュ管理部」という）をＲＯＭ１１４に格納する場合を示している。電源投入時、ＲＯＭ１１４に格納されているリフレッシュ管理部１１９は、ＲＡＭ１１６にロードされる。全体制御部１１３は、ＲＡＭ１１６にロードされた命令(リフレッシュを実現する命令群)を実行する。また、電源投入時、命令（リフレッシュを実現する命令群）をＲＡＭ１１６にロードしないで、ＲＯＭ１１４から直接実行することも可能である。
【００２９】
次に動作を説明する。図３は、実施形態１のリフレッシュの動作例を示すフローチャートである。ここでは、電源投入時にリフレッシュを実行する例を説明する。図３では、全体の流れを示す。まず、ＮＡＮＤフラッシュコントローラ１１０は、リフレッシュ管理部１１９が実現する機能によって、電源投入後の起動時に、ＮＡＮＤフラッシュメモリ２１０のリフレッシュ管理情報領域２１２に格納された少なくとも一つの実行情報（図１では、３つ）を読み出し、読み出した実行情報に基づいて、リフレッシュするブロックの数とリフレッシュを開始するブロック番号とを取得し、リフレッシュ管理情報としてリフレッシュ管理情報格納領域１１８に保持する（Ｓ１０）。次に、ＮＡＮＤフラッシュコントローラ１１０は、リフレッシュ管理情報に基づいてリフレッシュを実行する（Ｓ２０）。リフレッシュ実行後、ＮＡＮＤフラッシュコントローラ１１０は、リフレッシュ管理情報領域２１２へリフレッシュするブロック数と次回リフレッシュを開始するブロック番号とを書き込む（Ｓ３０）。
【００３０】
続いて、各処理の動作を図４〜図６を用いて詳細に説明する。図４は、実施形態１のリフレッシュ管理情報取得処理の動作例を示すフローチャートである。ＮＡＮＤフラッシュコントローラ１１０は、電源投入後の起動時に全体制御部１１３の制御プログラムが格納されているＲＯＭ１１４の内容にしたがって、ＮＡＮＤフラッシュメモリ２１０内のリフレッシュ管理情報領域２１２より実行情報＃１、実行情報＃２、実行情報＃３を読み出し（Ｓ１１）、読み出した実行情報をチェックする（Ｓ１２）。全体制御部１１３は、複数の実行情報の値が完全に一致するときに正常であるとし、一致しないときに（実行情報の値が不特定の場合を含む）異常であると判断する。
【００３１】
全体制御部１１３は、実行情報＃１、実行情報＃２、実行情報＃３の各情報が一致する場合、リフレッシュ実行ブロック数とリフレッシュを開始するブロック番号とをリフレッシュ管理情報としてリフレッシュ管理情報格納領域１１８へ格納し、リフレッシュの準備を行う（Ｓ１４）。一致しない場合、全体制御部１１３は、多数の値を用いるなど、所定の規則に基づいてリフレッシュ管理情報を決定する。また、全体制御部１１３は、リフレッシュ管理情報領域２１２に実行情報が正しく登録されていない場合、予め用意されている初期値を用いることを決定する。全体制御部１１３は、決定したリフレッシュ実行ブロック数とリフレッシュを開始するブロック番号とをリフレッシュ管理情報としてリフレッシュ管理情報格納領域１１８へ格納し、リフレッシュの準備を行う（Ｓ１４）。実行情報が正しく登録されていない場合には、複数の実行情報の値が異なり所定の規則に基づいてリフレッシュ管理情報を決定できない場合、リフレッシュ管理情報領域２１２に実行情報が格納されていない場合、リフレッシュ実行ブロック数または開始ブロック番号が存在しない値を示している場合などが含まれる。ＮＡＮＤフラッシュメモリ２１０に複数の実行情報を保存することにより、リフレッシュ管理情報領域２１２にエラーが発生した場合の不具合を抑制することができる。また、実行情報の信頼性がない場合、初期値を用いることにより、リフレッシュを実行することが可能になる。
【００３２】
次に、リフレッシュ処理について説明する。図５は、実施形態１のリフレッシュの動作例を示すフローチャートである。全体制御部１１３はリフレッシュ管理情報格納領域１１８に格納されているリフレッシュ管理情報に従って、ＮＡＮＤフラッシュメモリインタフェース１１２を介してＮＡＮＤフラッシュメモリ２１０へ開始ブロック番号を設定し（Ｓ２１）、設定したブロック番号のデータを読み出し、データバッファ１１７へ保存する（Ｓ２２）。ＥＣＣは、読み出したデータにエラーがあるかチェックし（Ｓ２３）。エラーを検出した場合、エラーを訂正する（Ｓ２４）。全体制御部１１３は、データバッファ１１７に保存したデータを読み出したブロックとは別のブロックへコピーする（Ｓ２５）。全体制御部１１３は、開始ブロック番号からリフレッシュ実行ブロック数分のブロックについてリフレッシュが終了したかをチェックする（Ｓ２６）。リフレッシュ終了していない場合（Ｓ２６でＮｏ）、次にリフレッシュするブロック番号をＮＡＮＤフラッシュメモリインタフェース１１２を介してＮＡＮＤフラッシュメモリ２１０に設定し（Ｓ２７）、リフレッシュが終了するまで（Ｓ２６でＹｅｓ）、ステップＳ２２から処理を繰り返す。このようにして、読み出したデータについて、エラーの有無を調査し、エラーを検出した場合、訂正したエラーの無い正しいデータをＮＡＮＤフラッシュメモリ２１０の新たなブロック（データを読み出したブロックとは異なるブロック）に書き込む。これにより、ＮＡＮＤフラッシュメモリ２１０のデータは蓄積されていたデータエラーの発生に対するポテンシャルをリセットすることができる。
【００３３】
次にリフレッシュ管理情報書き込み処理の動作例を説明する。図６は、実施形態１のリフレッシュ管理情報書き込み処理の動作例を示すフローチャートである。所定のリフレッシュを終えた後、全体制御部１１３は、リフレッシュ管理情報格納領域１１８に格納したリフレッシュ管理情報の開始ブロック番号を、次回リフレッシュを開始するブロック番号に更新して（Ｓ３１）、ＮＡＮＤフラッシュメモリ２１０内のリフレッシュ管理情報領域２１２の実行情報＃１、実行情報＃２、実行情報＃３へ書き込む（Ｓ３２）。本実施形態では、３つの実行情報に同じ値をコピーする。ＮＡＮＤフラッシュメモリ２１０のリフレッシュ管理情報領域２１２の実行情報を更新することにより、次のリフレッシュでは異なるブロックのリフレッシュを実行することができる。一連のリフレッシュ実行後、ＮＡＮＤフラッシュコントローラ１１０は、通常のＮＡＮＤフラッシュメモリ２１０の制御を実行する。
【００３４】
上述したように、フラッシュメモリ制御装置の起動時にＮＡＮＤフラッシュメモリを複数のブロックで構成される任意のグループに分割してリフレッシュすることにより、エラー箇所が累積することを防止する。これにより、ＮＡＮＤフラッシュメモリの読出しにおいて、読出しエラーの発生を押さえ、訂正不可能な状況を回避することが可能となる。具体的には、電源投入時の起動時にＮＡＮＤフラッシュメモリ２１０のデータを任意数のブロック単位で書き換える。この書き換えにより、リードディスターブの要因となっているＮＡＮＤフラッシュメモリ２１０のフローティングゲートの状態をリークが生じていない状態に戻すことができる。また、ＮＡＮＤフラッシュメモリを複数のブロックで構成される任意のグループに分割してリフレッシュするため、リフレッシュに費やす時間を所定の範囲内にすることが可能となる。
【００３５】
（実施形態２）
実施形態１では、ＮＡＮＤフラッシュメモリ２１０にリフレッシュ管理情報領域２１２を設け、リフレッシュ管理情報（実行情報）を格納していた。実施形態２では、ＮＡＮＤフラッシュコントローラ内にリフレッシュ管理情報を格納する構成例を説明する。図７は、実施形態２のフラッシュメモリ制御装置の構成例を示すブロック図である。図７に示すＮＡＮＤフラッシュメモリ制御装置は、ＮＡＮＤフラッシュコントローラ１２０とＮＡＮＤフラッシュメモリ２２０とを備える。ＮＡＮＤフラッシュコントローラ１２０は、不揮発性メモリで構成されたリフレッシュ管理情報格納領域（不揮発性のリフレッシュ情報領域）１２８を備える。
【００３６】
リフレッシュ管理情報格納領域１２８は、リフレッシュ管理情報を格納する。リフレッシュ管理情報の内容は、実施形態１と同様である。また、ＲＯＭ１２４は、実施形態１と同様に、リフレッシュを実行するプログラム（リフレッシュ管理部）をＲＯＭ１１４に格納する。ただし、リフレッシュ管理部が実現する機能、すなわち、リフレッシュ管理部が全体制御部１１３に実行させる命令群が異なる。具体的には動作の説明で述べる。
【００３７】
ＮＡＮＤフラッシュメモリは、リフレッシュ管理情報領域がない点で実施形態１と異なる。図１と同じ符号をつけた構成要素は同様であるため説明を省略する。
【００３８】
次に本実施形態の動作について、実施形態１と異なる点を中心に説明する。図３に示したリフレッシュ全体の動作は同様である。ＮＡＮＤフラッシュコントローラ１２０において、電源投入時、ＲＯＭ１２４に格納されているリフレッシュ管理部は、ＲＡＭ１１６にロードされる。全体制御部１１３は、ＲＡＭ１２６にロードされた命令(実施形態２のリフレッシュ管理部の機能を実現する命令群)を実行する。また、電源投入時、命令(リフレッシュを実現する命令群)をＲＡＭ１２６にロードしないで、ＲＯＭ１１６から直接実行することも可能である。
【００３９】
図８を用いて、本実施形態のリフレッシュ管理情報取得処理（図３のＳ１０）を説明する。図８は、実施形態２のリフレッシュ管理情報取得処理の動作例を示すフローチャートである。全体制御部１１３は、リフレッシュ管理情報をＮＡＮＤフラッシュコントローラ１２０内のリフレッシュ管理情報格納領域１２８から読み出す（Ｓ１５）。全体制御部１１３は、読み出したリフレッシュ管理情報をチェックし（Ｓ１６）、リフレッシュ管理情報が正しく登録されていない場合、予め用意されている初期値を用いることを決定し、リフレッシュ管理情報格納領域１２８へ書き込む（Ｓ１７）。全体制御部１１３は、リフレッシュの準備を行う（Ｓ１８）。
【００４０】
リフレッシュ処理（図３のＳ２０）については、実施形態１と同様である。リフレッシュ管理情報書き込み処理（図３のＳ３０）については、ステップＳ３１は同様である。ステップＳ３２において、開始ブロック番号の書き込み先がＮＡＮＤフラッシュコントローラ１２０内のリフレッシュ管理情報格納領域１２８である点が異なる。
【００４１】
このように、本実施形態では、ＮＡＮＤコントローラ１２０内に不揮発メモリを備えている場合は、ＮＡＮＤフラッシュメモリ２２０内にリフレッシュ管理情報領域を確保する必要がなくなるので、処理が軽減される。
【００４２】
また実施形態１と同様に、フラッシュメモリ制御装置の起動時にＮＡＮＤフラッシュメモリを複数のブロックで構成される任意のグループに分割してリフレッシュすることにより、エラー箇所が累積することを防止し、読出しによってエラーが発生することを回避することが可能となる。従って、通常のＮＡＮＤフラッシュメモリの読出しにおいて、読出しエラーの発生を押さえ、訂正不可能な状況を回避することが可能となる。
【００４３】
（その他の実施形態）
上記各実施形態では、リフレッシュ管理情報（あるいは実行情報）として、リフレッシュ実行ブロック数と開始ブロック番号とを格納する場合を説明したが、リフレッシュ回数をカウントし、保持するようにしてもよい。例えば、全体制御部１１３は、リフレッシュ管理情報取得時にリフレッシュ回数も読み出す（図３のＳ１１、図８のＳ１５）。また、全体制御部は、開始ブロック番号を更新するときに（図６のＳ３１）、リフレッシュ回数も更新し、ＮＡＮＤフラッシュメモリ２１０のリフレッシュ管理情報領域２１２の実行情報またはＮＡＮＤフラッシュコントローラ１２０のリフレッシュ管理情報格納領域１２８へ書き込む（図６のＳ３２）。
【００４４】
リフレッシュ回数を保持することにより、ＮＡＮＤフラッシュメモリの品質管理をすることが可能になる。例えば、リフレッシュ回数とリフレッシュ実行ブロック数とによって、ＮＡＮＤフラッシュメモリ全体のリフレッシュ回数を算出し、書き込み／消去の保証回数と比較する。これにより、部品の消耗時期を把握し、部品の信頼性の範囲であるかを確認することができる。あるいは、ＮＡＮＤフラッシュメモリ全体を新しいバージョンに書き換えて使用可能か否かを判断することができる。また、リフレッシュ回数をホストシステム３１０が読み出すことによって、部品の寿命をホストシステム３１０側で把握することが可能になり、ホストシステム３１０がこの情報を外部に出力することにより、利用者に通知することも可能になる。
【００４５】
また、上記各実施形態では、リフレッシュを行うタイミングとして電源投入時にリフレッシュを行う場合を説明した。このため、リフレッシュを実行するタイミングを管理することなく、フラッシュメモリのリフレッシュを実行することができる。
【００４６】
さらに、上記各実施形態では、ＮＡＮＤフラッシュメモリを用いて説明したが、上記各実施形態は、その他のフラッシュメモリを搭載するシステムに適用することも可能である。特に読み出し回数が多いシステムに適用すると、読出しの累積にともなって発生するエラーを回避することができる。
【００４７】
以上説明したように、上記各実施形態では、フラッシュメモリ制御装置は、所定のタイミングでＮＡＮＤフラッシュメモリを複数のブロックで構成される任意のグループに分割してリフレッシュする。これにより、フラッシュメモリにエラー箇所が累積することを防止する。具体的には、フラッシュメモリ内のデータの再書き込みを実施することにより、読み出しの累積により、フローティングゲートのリークを生じている状態をリークが生じていない状態に戻す。このため、フラッシュメモリの読出しにおいて、読出しエラーの発生を押さえ、訂正不可能な状況を回避することができる。また、このリフレッシュにより、読み出しエラーの発生を未然に防ぐことができる。さらに、リフレッシュ管理情報を使用して、ＮＡＮＤフラッシュメモリを複数のブロックで構成される任意のグループに分割してリフレッシュするため、リフレッシュに費やす時間を所定の範囲内にすることができる。
【００４８】
関連する技術として、ＮＡＮＤフラッシュメモリの読み出し時に訂正可能なエラーが発生した場合、ＮＡＮＤフラッシュメモリ内の該エラーが発生したブロックを訂正するリードリカバリ処理を備えるＮＡＮＤフラッシュコントローラが開示されている（図１１）。しかしながら、リカバリ処理実行時に待ち時間が発生し、その間ＮＡＮＤフラッシュメモリへのアクセスが出来なくなるため、リアルタイムを要求されるシステムにおいては、適用できないという問題がある。特に、プログラムの読み出しやイメージの表示や動画の再生等に於いては、非同期に発生するメモリアクセスを妨げ、ひいては正常動作を阻害する要因となる可能性があり、その結果、機器を使用しているユーザには違和感を与えることとなる。
【００４９】
この問題に対しても、上記各実施形態のいずれかを適用することにより、ＮＡＮＤフラッシュメモリのフローティングゲートのストレスの累積をある間隔でリセットすることで、解決することができる。
【００５０】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【図面の簡単な説明】
【００５１】
【図１】本発明の実施形態１に係るフラッシュメモリ制御装置の構成例を示すブロック図である。
【図２】実施形態１のＮＡＮＤフラッシュコントローラのリフレッシュに関連する構成例を示すブロック図である。
【図３】実施形態１のリフレッシュの動作例を示すフローチャートである。
【図４】実施形態１のリフレッシュ管理情報取得処理の動作例を示すフローチャートである。
【図５】実施形態１のリフレッシュ処理の動作例を示すフローチャートである。
【図６】実施形態１のリフレッシュ管理情報書き込み処理の動作例を示すフローチャートである。
【図７】本発明の実施形態２に係るフラッシュメモリ制御装置の構成例を示すブロック図である。
【図８】実施形態２のリフレッシュ管理情報取得処理の動作例を示すフローチャートである。
【図９】従来のＮＡＮＤフラッシュメモリ制御装置の構成例を示すブロック図である。
【図１０】従来のＮＡＮＤフラッシュメモリ制御装置の読み出し処理を示すフローチャートである。
【図１１】従来のＮＡＮＤフラッシュメモリ制御装置のオートリカバリ時の読み出し処理を示すフローチャートである。
【符号の説明】
【００５２】
１１０、１２０  ＮＡＮＤフラッシュコントローラ
１１１  ホストシステムインタフェース
１１２  ＮＡＮＤフラッシュメモリインタフェース
１１３  全体制御部（ＣＰＵ）
１１４、１２４  ＲＯＭ
１１５  ＥＣＣ回路
１１６  メモリ（ＲＡＭ）
１１７  データバッファ
１１８  リフレッシュ管理情報格納領域（メモリ領域）
１２８  リフレッシュ管理情報格納領域（不揮発メモリ）
２１０、２２０  ＮＡＮＤフラッシュメモリ２１０
２１１  ブロック群
２１２  リフレッシュ管理情報領域
３１０  ホストシステム
【図１】
2010015477.tif 000003
【図２】
2010015477.tif 000004
【図３】
2010015477.tif 000005
【図４】
2010015477.tif 000006
【図５】
2010015477.tif 000007
【図６】
2010015477.tif 000008
【図７】
2010015477.tif 000009
【図８】
2010015477.tif 000010
【図９】
2010015477.tif 000011
【図１０】
2010015477.tif 000012
【図１１】
2010015477.tif 000013