(57)【要約】【課題】不揮発性メモリのビットエラーを簡易な仕組みで検出し、リフレッシュする手段を提供し、不揮発性記憶装置及び不揮発性記憶システムの信頼性を向上させることを目的とする。【解決手段】不揮発性メモリにデータを書き込む際、誤り訂正符号を付加し、不揮発性メモリから目的とするデータを読み出す際、ランダムに選択した別の領域も読み出し、誤りの数をカウントし、基準値を超えていれば、リフレッシュ情報を不揮発性メモリに保存し、初期化時にリフレッシュ情報が存在すれば、リフレッシュ処理を行う。【選択図】図１
2008090778.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラであって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正部と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択部とを具備し、前記ランダム選択部により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正部で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理をする、ことを特徴とするメモリコントローラ。
【請求項２】
不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラであって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正部と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択部とを具備し、前記ランダム選択部により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正部で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理を行うための情報を前記不揮発性メモリに記録し、前記メモリコントローラの初期化処理の際に、前記不揮発性メモリに記録した情報に基づいて前記不揮発性メモリの部分記憶領域内に記録されている全てのデータをリフレッシュ処理する、ことを特徴とするメモリコントローラ。
【請求項３】
不揮発性メモリは、フラッシュメモリとすることを特徴とする、請求項１乃至２記載のメモリコントローラ。
【請求項４】
不揮発性メモリの部分記憶領域は、フラッシュメモリのデータ消去単位であるブロックとすることを特徴とする、請求項３記載のメモリコントローラ。
【請求項５】
請求項１乃至２記載のいずれかのメモリコントローラと、不揮発性メモリと、を備えた不揮発性記憶装置。
【請求項６】
請求項３乃至４記載のいずれかのメモリコントローラと、フラッシュメモリと、を備えた不揮発性記憶装置。
【請求項７】
請求項５乃至６記載のいずれかの不揮発性記憶装置と、前記不揮発性記憶装置に対しデータの書き込み及び読み出しを指示するアクセス装置と、を備えた不揮発性記憶システム。
【請求項８】
不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリ制御方法であって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正手段と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択手段とを具備し、前記ランダム選択手段により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正手段で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理をする、ことを特徴とするメモリ制御方法。
【請求項９】
不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリ制御方法であって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正手段と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択手段とを具備し、前記ランダム選択手段により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正手段で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理を行うための情報を前記不揮発性メモリに記録し、前記メモリ制御方法の初期化処理の際に、前記不揮発性メモリに記録した情報に基づいて前記不揮発性メモリの部分記憶領域内に記録されている全てのデータをリフレッシュ処理する、ことを特徴とするメモリ制御方法。
【請求項１０】
不揮発性メモリは、フラッシュメモリとすることを特徴とする、請求項８乃至９記載のメモリ制御方法。
【請求項１１】
不揮発性メモリの部分記憶領域は、フラッシュメモリのデータ消去単位であるブロックとすることを特徴とする、請求項１０記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き換え可能な不揮発性メモリのメモリコントローラと、これらメモリとコントローラを含む不揮発性記憶装置と、当該不揮発性記憶装置とアクセス装置を備える不揮発性記憶システム、及び当該メモリコントローラにおけるメモリ制御方法とに関するものである。
【背景技術】
【０００２】
書き換え可能な不揮発性メモリは、デジタルカメラやパーソナルコンピュータ等のデジタル情報を扱う商品において、ＳＤカードやコンパクトフラッシュ（登録商標）又はＵＳＢメモリ等のデジタル情報の書き込み及び読み出しが可能な補助記憶装置に利用されている。
【０００３】
書き換え可能な不揮発性メモリに書き込まれたデータと読み出されたデータは、一致することが理想であるが、様々な理由により現実には異なる場合がある。書き込まれたデータと読み出されたデータが異なると、情報記憶装置としての信頼性を確保する目的を達成することができず問題となる。そこで、不揮発性メモリの信頼性を高めるため、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）等を利用してデータが誤っている場合にはそのデータを補正する技術がある。従来は、不揮発性半導体記憶装置におけるメモリから読み出されたデータはＥＣＣによって誤り訂正が行われているものの、読み出されないメモリセルのデータには誤りが蓄積されていき、やがてＥＣＣによる訂正が不可能になってしまうことがある。
【０００４】
このような不具合を解消する目的で、情報記憶部が保持するデータを再書き込みする技術が特許文献１に開示されている。
【０００５】
特許文献１には、情報記憶部からのデータ読み出し回数をカウンタで管理し、その読み出し回数が基準値を超えると、不揮発性メモリのデータをリフレッシュ（再書き込み）する方法、及び不揮発性メモリ上の特定領域の全てのデータに対して誤り検出処理を行い、その領域のデータに含まれる誤りの数が基準値を超えている場合にリフレッシュ処理を行う方法が開示されている。これらの方法によれば、不揮発性メモリに記録されたデータの信頼性を一定以上に保つことができる。
【特許文献１】特許第３１７６０１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１のデータエラー対処方法では、外部からのデータの読み出し要求によるデータの読み出し回数をカウンタでカウントし、その値が基準値以上の場合に、誤り検出処理又はリフレッシュ処理を行うものであり、誤り検出処理やリフレッシュ処理が実行されている間は、外部から記憶システムへの処理要求が保留される。そのため、誤り検出処理やリフレッシュ処理が頻繁に行われる場合、又は、誤り検出やリフレッシュ処理の対象となる記憶領域が大きい場合には、外部からの記憶システムへの要求処理が保留され、その要求に対応する処理速度が低下する課題を有する。また、読み出し回数をカウントするカウンタをＲＡＭに持たせると、大きな容量のＲＡＭが必要となり、記憶システムのコストが増大するという課題もある。
【０００７】
本発明は、外部からの記憶システムへの要求処理の処理速度を低下させること無く、且つ、大きな容量のＲＡＭを必要とせずに、記憶システムの信頼性を向上させると同時にシステムのコストダウンを可能とするメモリ制御方法を提供するものである。
【課題を解決するための手段】
【０００８】
上記目的を達成するための第１の発明は、不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラであって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正部と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択部とを具備し、前記ランダム選択部により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正部で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理をする、ことを特徴とするメモリコントローラ、である。
【０００９】
また、第２の発明は、不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラであって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正部と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択部とを具備し、前記ランダム選択部により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正部で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理を行うための情報を前記不揮発性メモリに記録し、前記メモリコントローラの初期化処理の際に、前記不揮発性メモリに記録した情報に基づいて前記不揮発性メモリの部分記憶領域内に記録されている全てのデータをリフレッシュ処理する、ことを特徴とするメモリコントローラ、である。
【００１０】
第８の発明は、不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリ制御方法であって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正手段と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択手段とを具備し、前記ランダム選択手段により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正手段で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理をする、ことを特徴とするメモリ制御方法、である。
【００１１】
第９の発明は、不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリ制御方法であって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正手段と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択手段とを具備し、前記ランダム選択手段により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正手段で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理を行うための情報を前記不揮発性メモリに記録し、前記メモリ制御方法の初期化処理の際に、前記不揮発性メモリに記録した情報に基づいて前記不揮発性メモリの部分記憶領域内に記録されている全てのデータをリフレッシュ処理する、ことを特徴とするメモリ制御方法、である。
【発明の効果】
【００１２】
本発明によれば、誤り検出処理が行われる頻度及びその処理量を極力少なくしてリフレッシュ処理を行い、また、リフレッシュ処理をメモリ制御の電源投入直後又はリセット直後にのみ行うこととしたため、アクセス装置からの書き込み又は読み出し要求処理が誤り検出処理又はリフレッシュ処理により妨げられることはなくなる。その結果、メモリ制御の処理速度を低下させることなく、システム等の信頼性を向上させることができる。また、読み出し回数等の回数管理用カウンタを必要としないため、大容量ＲＡＭが不要となり、システム等のコストを下げることができる。
【発明を実施するための最良の形態】
【００１３】
本発明の請求項１は、不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラであって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正部と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択部とを具備し、前記ランダム選択部により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正部で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理をする、ことを特徴とするメモリコントローラ、である。
【００１４】
請求項１に係る発明によれば、誤り検出処理は、不揮発性メモリのリフレッシュ対象となる領域からランダムに選択されたデータについてのみ行われる。選択されるデータは、毎回ランダムに抽出されるので各回に選択されるデータが少なくても、全回数を通じれば、リフレッシュ対象となる領域に記録されているデータの誤り発生状況を凡そ正確に掴むことができる。そのため、誤り検出処理の際に不揮発性メモリから読み出すデータ量が減り、外部からのデータ書き込み又は読み出し要求による処理速度が低下しない。
【００１５】
本発明の請求項２は、不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラであって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正部と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択部とを具備し、前記ランダム選択部により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正部で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理を行うための情報を前記不揮発性メモリに記録し、前記メモリコントローラの初期化処理の際に、前記不揮発性メモリに記録した情報に基づいて前記不揮発性メモリの部分記憶領域内に記録されている全てのデータをリフレッシュ処理する、ことを特徴とするメモリコントローラ、である。
【００１６】
請求項２に係る発明によれば、リフレッシュ処理の実行はメモリコントローラの初期化処理時のみに限定され、外部からのデータ書き込み又は読み出し要求処理がリフレッシュ処理によって妨げられることはなくなるので、外部からのデータ書き込み又は読み出し要求の処理速度が低下しない。
【００１７】
本発明の請求項３は、不揮発性メモリは、フラッシュメモリとすることを特徴とする、請求項１乃至２記載のメモリコントローラ、である。
【００１８】
本発明の請求項４は、不揮発性メモリの部分記憶領域は、フラッシュメモリのデータ消去単位であるブロックとすることを特徴とする、請求項３記載のメモリコントローラ、である。
【００１９】
本発明の請求項５は、請求項１乃至２記載のいずれかのメモリコントローラと、不揮発性メモリと、を備えた不揮発性記憶装置、である。
【００２０】
本発明の請求項６は、請求項３乃至４記載のいずれかのメモリコントローラと、フラッシュメモリと、を備えた不揮発性記憶装置、である。
【００２１】
本発明の請求項７は、請求項５乃至６記載のいずれかの不揮発性記憶装置と、前記不揮発性記憶装置に対しデータの書き込み及び読み出しを指示するアクセス装置と、を備えた不揮発性記憶システム、である。
【００２２】
本発明の請求項８は、不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリ制御方法であって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正手段と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択手段とを具備し、前記ランダム選択手段により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正手段で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理をする、ことを特徴とするメモリ制御方法、である。
【００２３】
本発明の請求項９は、不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリ制御方法であって、データに含まれる誤りの数を計測し、データに含まれる誤りを訂正する誤り訂正手段と、前記不揮発性メモリの部分記憶領域内からランダムにアドレスを選択するランダム選択手段とを具備し、前記ランダム選択手段により選択された前記不揮発性メモリの部分記憶領域内のアドレスからデータを取り出し、前記取り出したデータに含まれる誤りの数を前記誤り訂正手段で計測し、前記計測されたデータに含まれる誤りの数が基準値を超える場合に、前記不揮発性メモリの部分記憶領域内に記録されている全てのデータを取り出して訂正した後前記不揮発性メモリに再度記録するリフレッシュ処理を行うための情報を前記不揮発性メモリに記録し、前記メモリ制御方法の初期化処理の際に、前記不揮発性メモリに記録した情報に基づいて前記不揮発性メモリの部分記憶領域内に記録されている全てのデータをリフレッシュ処理する、ことを特徴とするメモリ制御方法、である。
【００２４】
本発明の請求項１０は、不揮発性メモリは、フラッシュメモリとすることを特徴とする、請求項８乃至９記載のメモリ制御方法、である。
【００２５】
本発明の請求項１１は、不揮発性メモリの部分記憶領域は、フラッシュメモリのデータ消去単位であるブロックとすることを特徴とする、請求項１０記載のメモリ制御方法、である。
【００２６】
（実施例１）
図１は、本発明の第１の実施例における不揮発性記憶システムを示したブロック図である。不揮発性記憶システム１００は、例えば、デジタルカメラやパーソナルコンピュータなどの製品等、データの書き込み及び読み出しを要求するアクセス装置１０１と、例えば、ＳＤカードやコンパクトフラッシュ（登録商標）などの不揮発性記憶メモリを有するメモリカード等で記憶装置に該当する不揮発性記憶装置１０２から構成される。
【００２７】
不揮発性記憶装置１０２は、不揮発性記憶装置全体を制御するメモリコントローラ１０３と、アクセス装置１０１から書き込み又は読み出し要求されるデータや制御上必要なデータを記録する書き換え可能な不揮発性メモリ１０４とから構成される。
【００２８】
不揮発性メモリ１０４には、書き換え可能な不揮発性の記憶媒体を使用することが可能である。例えば、書き換え可能な不揮発性メモリの一種であるフラッシュメモリがある。本実施例では以下に、不揮発性メモリ１０４にフラッシュメモリを用いた場合の説明をする。
【００２９】
メモリコントローラ１０３は、ホストインタフェース部１０５とメモリインタフェース部１０６とＣＰＵ部１０７と誤り訂正部１０８とランダム選択部１０９等から構成されている。
【００３０】
ホストインタフェース部１０５は、アクセス装置１０１から不揮発性記憶装置１０２へコマンドやデータ又はアドレス等を、また、不揮発性記憶装置１０２からアクセス装置１０１へ各種データ等を送受信する機能を有する。
【００３１】
メモリインタフェース部１０６は、メモリコントローラ１０３がフラッシュメモリ１０４に対して情報の記録や読み出し等の制御を行うための接続インタフェースである。
【００３２】
ＣＰＵ部１０７は、メモリコントローラ１０３全体の制御を行う。例えば、アクセス装置１０１から送信される読み出しコマンドを解析し、フラッシュメモリ１０４の指定されたアドレスに記録されたデータ及びＥＣＣを誤り訂正部１０８へ入力し、誤り訂正部１０８で訂正等されたデータをホストインタフェース部１０５を通じてアクセス装置１０１へ送信する。それ以外にも、誤り検出処理やリフレッシュ処理等もＣＰＵ部１０７が他の構成部を制御することで行う。誤り検出処理やリフレッシュ処理の詳細は以下に後述する。
【００３３】
ＣＰＵ部１０７は、ＣＰＵを使用して実現する方法の他に専用回路を設けて実現することもできる。
【００３４】
誤り訂正部１０８は、フラッシュメモリ１０４にデータを記録する際に、記録するデータからＥＣＣを算出する。反対に、フラッシュメモリ１０４からデータを取り出す際は、データとそのデータに対応するＥＣＣからデータの誤り検出及びデータに含まれる誤りの数を計測する。さらに必要があれば、データの誤りを訂正する。
【００３５】
誤り訂正部１０８は、データに付加するＥＣＣ算出及びデータとＥＣＣから誤り検出又は誤り訂正等を行うために必要なアルゴリズムを使用する。その代表例としてリードソロモン符号を用いたアルゴリズムがあるが、それ以外にもハミング符号等を利用したものもある。
【００３６】
本実施例では、誤り訂正部１０８を独立した構成要素として示しているが、同等の機能を上記に説明したＣＰＵ部１０７によりソフトウェア処理で実現することも可能である。
【００３７】
ランダム選択部１０９は、誤り検出処理においてフラッシュメモリ１０４上の指定された記憶領域から無作為に選択されたデータ及びＥＣＣを取り出すために用いられる。具体的には、ＣＰＵ部１０７によりフラッシュメモリ１０４の記憶領域の一部である部分記憶領域の範囲が指定されると、ランダム選択部１０９は指定された記憶領域の範囲内からデータ及びＥＣＣを読み出すアドレスをランダムに抽出しＣＰＵ部１０７へ出力する。ＣＰＵ部１０７は、ランダム選択部から出力されたフラッシュメモリ１０４上のアドレスから誤り検出の処理対象となるデータ及びＥＣＣを、誤り訂正部１０８へ取り出す。ランダム選択部１０９の機能により、誤り検出処理は処理対象となるデータ及びＥＣＣを毎回ランダムに得ることとなる。
【００３８】
本実施例では、ＣＰＵ部１０７によってランダム選択部１０９に入力する記憶領域の単位は、フラッシュメモリ１０４の消去単位であるブロックとする。その結果、ランダム選択部１０９はＣＰＵ部１０７によって特定されたブロック内からランダムにページを選択し、そのページのアドレスをＣＰＵ部１０７に出力することとなる。
【００３９】
アドレスをランダムに選択するために、ランダム選択部１０９では、乱数を基にアドレスを選択する。乱数の発生には一般的な擬似乱数生成のアルゴリズムの使用が可能である。本実施例で求めるランダム性は数学的に完全である必要はなく、実用的に目的を達成するものであれば十分である。
【００４０】
本実施例では、ランダム選択部１０９を独立した構成要素として示しているが、同等の機能を上記に説明したＣＰＵ部１０７によりソフトウェア処理で実現することもできる。
【００４１】
本実施例では、上述したように不揮発性メモリ１０４にフラッシュメモリを使用する。以下にフラッシュメモリの構成及び特徴等について説明する。
【００４２】
図２は、フラッシュメモリの内部構成を階層的に示した模式図である。フラッシュメモリは、その内部を複数のブロック２０１から構成される。フラッシュメモリにおけるブロック２０１は、データを消去する単位として扱われる。ブロック２０１はさらに複数のページ２０２から構成される。各ページ２０２はデータ部２０３と冗長部２０４から構成される。データ部２０３にはアクセス装置１０１から書き込み要求のあったデータやその他制御上必要なデータが記録される。一方、冗長部２０４にはデータ部２０３に対応するＥＣＣが記録される。ＥＣＣとはデータの誤り検出や誤り訂正を行うために用いられるデータに付加される冗長なデータである。
【００４３】
ブロック２０１及びページ２０２のサイズは使用するフラッシュメモリによって異なるが、代表的なものとして、ブロックが２５６Ｋバイト、ページのデータ部が２Ｋバイト、冗長部が６４バイトの構成がある。なお、１Ｋバイトは１０２４バイトである。
【００４４】
次に、不揮発性記憶装置１０２内部で行われる誤り検出処理及びリフレッシュ処理の動作を図３に示すフローチャートを用いて説明する。なお、誤り検出処理及びリフレッシュ処理は、アクセス装置１０１から不揮発性記憶装置１０２にデータの読み出し要求が送信された際にのみ実行される。そのため、データの読み出し要求以外の場合、例えばデータの書き込み要求が送信された場合には、誤り検出処理やリフレッシュ処理は行われない。
【００４５】
図３において、アクセス装置１０１からデータの読み出し要求があると、不揮発性記憶装置１０２はアクセス装置１０１からのデータ読み出し要求を処理するステップ（Ｓ３０１）を行う。ＣＰＵ部１０７は、ホストインタフェース部１０５を通じてアクセス装置１０１からのデータ読み出しコマンドやアドレスを受信すると、当該コマンドとアドレスが妥当であるか否かを判断する。データ読み出し要求コマンド等が妥当であれば、ＣＰＵ部１０７はフラッシュメモリ１０４の記憶領域の指定されたアドレスからデータとそのデータに付加するＥＣＣを誤り訂正部１０８に取り出す。誤り訂正部１０８では、取り出されたデータとＥＣＣからデータに誤りがある場合にはデータを訂正して出力する。データに誤りが無い場合は、そのままデータを出力する。ＣＰＵ部１０７は誤り訂正部１０８から出力されたデータをアクセス装置１０１へ送信する。以上で、アクセス装置１０１からのデータ読み出し要求処理が終了する。
【００４６】
上記、アクセス装置１０１からのデータ読み出し要求の処理が終了すると、次に誤り検出処理が行われる。ＣＰＵ部１０７は、アクセス装置１０１からデータ読み出し要求のあったアドレスを含むフラッシュメモリ１０４のブロック２０１を特定するステップ（Ｓ３０２）を経て、当該特定のブロック２０１をランダム選択部１０９へ入力する。ランダム選択部１０９では、入力されたフラッシュメモリ１０４の特定のブロック２０１内から、前記データ読み出し要求があったアドレスを含むページとは異なる１つのページ２０２をランダムに選択し出力するステップ（Ｓ３０３）を行う。ＣＰＵ部１０７は、ランダム選択部１０９により選択された前記１つのページ２０２のデータ部２０３と冗長部２０４からそれぞれデータとＥＣＣを誤り訂正部１０８へ取り出すステップ（Ｓ３０４）を行い、誤り訂正部１０８は、取り出されたデータに含まれる誤りの数を計測するステップ（Ｓ３０５）を行う。その後、ＣＰＵ部１０７は、前記特定のブロック２０１に対するリフレッシュ処理の実施可否を判断するステップ（Ｓ３０６）を行う。これは、ステップＳ３０５において誤り訂正部１０８により計測された誤りの数が基準値を超えている場合は、当該特定ブロック２０１に対してリフレッシュ処理を要求し、続いてリフレッシュ処理のステップ（Ｓ３０７）が行われる。反対に誤りの数が基準値以下の場合は、リフレッシュ処理が不要と判断され、誤り検出処理を終了する（Ｓ３０８）。
【００４７】
リフレッシュ処理の詳細を、図４のフローチャートを用いて説明する。リフレッシュ処理は、上記の誤り検出処理を行ったフラッシュメモリ１０４の前記特定のブロック２０１を対象として行われる。具体的には、ＣＰＵ部１０７は、リフレッシュ処理の対象となるフラッシュメモリ１０４の前記特定のブロック２０１から１つのページ２０２を選択するステップ（Ｓ４０１）の後、当該選択された１つのページ２０２のデータ部２０３と冗長部２０４からそれぞれデータとＥＣＣを誤り訂正部１０８へ取り出すステップ（Ｓ４０２）を行う。誤り訂正部１０８では、取り出されたデータとＥＣＣからデータに含まれる誤りを検出する。検出の結果、データに誤りが含まれる場合と含まれない場合の判断ステップ（Ｓ４０３）が行われる。データに誤りが含まれると、誤り訂正部１０８はデータとＥＣＣからデータに含まれる誤りを訂正し、訂正されたデータとＥＣＣを出力するステップ（Ｓ４０４）を行う。データに誤りが含まれない場合、誤り訂正部１０８はフラッシュメモリ１０４から取り出したデータとＥＣＣをそのまま出力する。ＣＰＵ部１０７は、誤り訂正部１０８から出力されたデータ及びそのデータに対応するＥＣＣをフラッシュメモリ１０４上の別のブロック２０１に記録するステップ（Ｓ４０５）を行う。この処理はリフレッシュ対象となる前記特定のブロック２０１上の全てのページ２０２について実行される。全てのページ２０２について、誤り訂正部１０８による誤り検出や誤り訂正処理等が行われたとステップ（Ｓ４０６）で判断されると、ＣＰＵ部１０７はリフレッシュ対象となるフラッシュメモリ１０４の前記特定のブロック２０１に記録されたデータ及びＥＣＣ等を消去するステップ（Ｓ４０７）を行う。以上でリフレッシュ処理を終了する（Ｓ４０８）。
【００４８】
本実施例において、リフレッシュ処理実施の可否を決定する基準値の設定は以下の方法から導き出される。
【００４９】
図５は、フラッシュメモリ１０４のデータの誤り数の増加の様子を示した概念図である。縦軸はデータ誤り数を示し、横軸は読み出し回数を示す。実際は、グラフはデータ誤り数や読み出し回数に対しては離散的である。また、グラフの形状は、フラッシュメモリ１０４の信頼性や個体差に依存するが、通常は単調非減少である。一般にフラッシュメモリ１０４は、読み出し回数の増加や時間の経過とともにデータの誤り数は増加していく。
【００５０】
データに含まれる誤りの数が誤り訂正部１０８の訂正能力以下の場合、誤り訂正可能であり、リフレッシュを行うことで誤りを含んだデータは正しく復元することが可能である。反対に、データの誤り数が誤り訂正部１０８の訂正能力を超えた場合、誤り訂正不可能であり、リフレッシュによりデータを正しく復元することは不可能となる。
【００５１】
本発明は、リフレッシュ処理の必要性を判断するため、データの誤り数に基準値を設ける。データを読み出してデータの誤り数が基準値以下の場合はリフレッシュ不要と判断し、反対に、データの誤り数が基準値を超える場合はリフレッシュ必要と判断する。データの誤り数が基準値を超えてから誤り訂正能力を超えるまでのリフレッシュ猶予期間内に読み出しが行われれば、リフレッシュ必要と判断され、リフレッシュ処理が行われ、誤りを含んだデータは正しく復元されることになる。
【００５２】
以上より、原則として基準値は誤り訂正部１０８が訂正できる能力の限界以下に設定することが必要である。基準値を誤り訂正部１０８の誤り訂正能力に対して十分に小さい値を設定すると、フラッシュメモリ１０４に少しのデータ誤りが含まれる場合でもリフレッシュ処理が行われることとなり、フラッシュメモリ１０４に記録されているデータの信頼性は高まる。反対に、基準値を誤り訂正能力の能力限界に近い値を設定すると、リフレッシュ処理が実行される頻度は下がり、データの書き込み又は読み出し処理の処理速度が低下しない。基準値は、不揮発性記憶装置１０２に求められるデータの信頼性と処理速度との関係によって決められるものである。
【００５３】
実際に本実施例で用いる基準値を決定する方法を示す。最初の基準値の候補となる候補値を誤り訂正部１０８の訂正能力限界に設定し、データの信頼性を検証する。その結果、データの信頼性が実用的に満たされる場合は、その候補値を決定値とする。反対にデータの信頼性が満たされない場合、候補値の値を下げて同様にデータの信頼性を検証する。この方法を繰り返すことで得られた値を基準値として決定とする。本実施例では、基準値はあらかじめ定められた値として扱うが、上記の決定方法をシステムに取り込んで基準値を動的に決定することも可能である。
【００５４】
本発明において、リフレッシュ処理は必ずしも単一ブロックに限定して実施される必要はなく、複数のブロックから構成される論理ブロックを単位として実施されることも可能である。
【００５５】
本発明において、リフレッシュ処理におけるフラッシュメモリからのデータ及びＥＣＣの取り出しと記録は、必ずしも１ページ単位で行う必要はなく、複数のページを単位として取り出しと記録を行うことも可能である。
【００５６】
本発明において、リフレッシュ処理におけるブロック内のページの選択は様々な方法が可能である。例えば、ブロック内の先頭からリフレッシュ対象となるページを選択する方法や、メモリの管理にアドレス変換アルゴリズムを使用している場合は、そのアルゴリズムに従った順序でページを選択する方法を利用することが可能である。
【００５７】
本発明において、誤り検出処理の直前に行われるアクセス装置からのデータ読み出し要求において、フラッシュメモリから取り出した記録情報のデータが既に基準値を超える誤りの数を有する場合は、当該誤り検出処理を省略して、リフレッシュ処理を行うことも可能である。
【００５８】
本発明において、アクセス装置からの読み出し要求が複数のページに及ぶ場合、誤り検出処理は以下のように対応することが可能である。すなわち、全てのページが同一ブロック内に含まれる場合は、誤り検出処理も当該ブロックに対して１度行えば十分である。一方、読み出し要求のあったページが複数のブロックに及ぶ場合は、それぞれのブロックに対して誤り検出処理を行うこととなる。
【００５９】
本実施例において、誤り検出処理はブロック内からランダムに選択した１つのページを対象としたが、これを複数のページを対象とすることも可能である。その複数ページの選択方法も、連続するページやランダムな複数のページを組み合わせる等が可能である。
【００６０】
本実施例において、アクセス装置からのデータ読み出し要求毎に誤り検出処理を行う方法を示したが、複数の読み出し要求に一度誤り検出処理を行う方法や、ランダム回数のデータ読み出し要求があった場合に一度誤り検出処理を行う方法も可能である。
【００６１】
本実施例において、誤り検出処理及びリフレッシュ処理はアクセス装置からのデータ読み出し要求処理後としたが、誤り検出処理及びリフレッシュ処理の後にアクセス装置からの読み出し要求を処理する順序にすることも可能である。
【００６２】
本発明において、誤りの数はデータに含まれるビットの誤りの数と解釈しても、複数のビットを単位としたシンボルの誤りの数と解釈しても可能である。
【００６３】
本実施例において、リフレッシュ処理はフラッシュメモリのデータ及びＥＣＣを取り出すブロックと、記録するブロックを異なるブロックとしたが、これらのブロックを同一のブロックとすることも可能である。
【００６４】
本実施例では、以下の効果が見られる。データの誤り検出処理は、アクセス装置からのデータ読み出し要求がある毎にリフレッシュ処理の対象となるブロックからランダムに選択されたページのデータについてのみ行われるので、誤り検出処理の処理量が低減すると同時に負荷が分散される。その結果、アクセス装置からの要求による不揮発性記憶装置の処理速度を低下させることがない。
【００６５】
誤り検出処理の各回に取り出されたデータにのみ含まれる誤りの数がリフレッシュ処理の実施可否の判断要素となるため、累積されたデータの読み出し回数を保持するためのカウンタをＲＡＭ等に設ける必要が無くなる。そのため、システム構成がシンプルになりコストダウンを実現できる。
【００６６】
（実施例２）
本発明の第２の実施例を説明する。本実施例における不揮発性記憶システム１００、不揮発性記憶装置１０２、メモリコントローラ１０３及び不揮発性メモリ１０４等の構成は実施例１における図１と同じである。実施例１と同じ記号については説明を省略する。実施例１と本実施例とでは、リフレッシュ処理を実際に行う時期が相違する。
【００６７】
図６のフローチャートにおいてリフレッシュ実行の可否判断ステップ（Ｓ６０６）までは、実施例１における図３のステップＳ３０６までの処理と同一であるため説明を省略する。本実施例において、前記ステップ（Ｓ６０６）においてリフレッシュ処理が必要と判断されると、リフレッシュ処理を行うため必要な情報（リフレッシュ情報）がＣＰＵ部１０７によりフラッシュメモリ１０４に記録されるステップ（Ｓ６０７）が行われる。
【００６８】
リフレッシュ情報が記録されるフラッシュメモリ１０４の記憶領域は、予めリフレッシュ情報記録用の専用のブロック２０１を設けておき、そこに記録する。この方法以外でも、各ブロック２０１の先頭又は最後尾のページ２０２等をリフレッシュ情報記録用に用いるなどで実現することも可能である。
【００６９】
リフレッシュ情報は、リフレッシュ処理が実際に実行される際に、フラッシュメモリ１０４上の当該処理の対象となる領域を十分に特定するために必要な情報等である。具体的には、リフレッシュ処理の対象となるフラッシュメモリ１０４の領域の開始位置及び終了位置、当該領域でリフレッシュ処理が必要であることを示すフラグ等がこれに該当する。
【００７０】
実際のリフレッシュ処理は、上記リフレッシュ情報がフラッシュメモリ１０４に記録された後の最初の不揮発性記憶装置１０２のメモリコントローラ１０３の初期化処理の際に実行される。この時、上記で記録されたリフレッシュ情報がフラッシュメモリ１０４から取り出され、当該情報から処理対象領域等が特定される。不揮発性記憶装置１０２のメモリコントローラ１０３の初期化処理とは、その電源投入又はリセット直後に、当該装置を正常動作させるため内部的に行われるパラメータ設定や起動手順等の処理である。
【００７１】
不揮発性記憶装置１０２の電源投入又はリセット直後の処理を図７に示す。電源投入又はリセット直後、メモリコントローラ１０３及びフラッシュメモリ１０４の初期化処理のステップ（Ｓ７０１）が行われる。具体的には、ＣＰＵ部１０７は自身の初期化処理を行い、その後、フラッシュメモリ１０４、ホストインタフェース部１０５、メモリインタフェース部１０６、誤り訂正部１０８、ランダム選択部１０９等の他の構成部にパラメータ設定や起動手順等の必要な処理を行う。メモリコントローラ１０３の初期化処理のステップ（Ｓ７０１）が終了すると、次に初期化時のリフレッシュ処理のステップ（Ｓ７０２）が行われる。
【００７２】
初期化時のリフレッシュ処理（図８）では、最初にＣＰＵ部１０７がフラッシュメモリ１０４からリフレッシュ情報を取り出すステップ（Ｓ８０１）が行われ、取り出したリフレッシュ情報が妥当であると次の判定ステップ（Ｓ８０２）で判断されれば、リフレッシュ情報が示すフラッシュメモリ１０４上のブロックに対してリフレッシュ処理のステップ（Ｓ８０３）が実行される。このリフレッシュ処理のステップ（Ｓ８０３）の詳細は実施例１の図４で示したリフレッシュ処理と同一である。リフレッシュ処理のステップ（Ｓ８０３）が終了すると、フラッシュメモリ１０４に記録されている上記のリフレッシュ情報をクリアするステップ（Ｓ８０４）が行われ、不揮発性記憶装置１０２の初期化処理を終了する（Ｓ８０５）。
【００７３】
本実施例では、リフレッシュ情報がフラッシュメモリ１０４に記録され、その後、不揮発性記憶装置１０２がリセット等の後の初期化処理を行うことで、リフレッシュ処理が実際に実行される。しかし、リフレッシュ情報がフラッシュメモリ１０４に記録された後、直ちに不揮発性装置１０２がリセット等されるとは限らない。そのため、リフレッシュ情報がフラッシュメモリ１０４に記録された後、不揮発性装置１０２がリセット等されるまでの間に、アクセス装置１０１からのデータ書き込み又は読み出し要求を継続して行うことが必要となる場合がある。この際、既に誤り検出処理でリフレッシュ処理が必要と判断されたフラッシュメモリ１０４のブロック２０１について、重複して誤り検出処理を行う必要は無い。
【００７４】
以上のように、本実施例により以下の効果が得られる。リフレッシュ処理が、不揮発性記憶装置の電源投入又はリセット直後の初期化処理中にのみ実行され、アクセス装置からのデータ書き込み要求や読み出し要求中に行われない。そのため、アクセス装置からのデータ書き込み又は読み出し要求処理がリフレッシュ処理により保留されることはないので、不揮発性記憶装置の処理速度が低下することはない。
【００７５】
リフレッシュ処理は不揮発性記憶装置の電源投入又はリセット直後に毎回行われるのではなく、必要と認められた時のみ行われるので、毎回リフレッシュ処理を行う場合と比較して、フラッシュメモリの書換え耐用回数を無駄に消費しないので長期間に渡って不揮発性メモリの信頼性を高く維持することができる。
【００７６】
リフレッシュ情報のフラッシュメモリへの記録は、誤り検出処理により必要と認められた直後に行なわれる。そのため、不揮発性記憶装置の電源遮断時にシャットダウン処理を行う必要は無く、シャットダウン処理を行わないアクセス装置に接続した場合でも本発明を利用することが可能となる。また、シャットダウン処理を行うアクセス装置に接続した場合でもフラッシュメモリへ情報を記録する必要が無いので、シャットダウン時の処理を高速化することができる。
【産業上の利用可能性】
【００７７】
本発明のメモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法は、不揮発性メモリのデータ誤りに対し、簡易な仕組みで信頼性を向上でき、さらに、コスト、性能、その他の信頼性、アクセス装置への制約等への影響は少ない。本発明は、静止画記録再生装置や動画記録再生装置等のポータブルＡＶ機器、あるいは携帯電話等のポータブル通信機器の記録再生用として有益である。
【図面の簡単な説明】
【００７８】
【図１】不揮発性記憶システムのブロック図
【図２】フラッシュメモリの内部構成を階層的に示した模式図
【図３】誤り検出処理及びリフレッシュ処理のフローチャート
【図４】リフレッシュ処理（詳細）のフローチャート
【図５】フラッシュメモリのデータの誤り数の増加の様子を示した概念図
【図６】誤り検出処理及びリフレッシュ情報記録処理のフローチャート
【図７】不揮発性記憶装置の電源投入又はリセット直後の処理のフローチャート
【図８】初期化時のリフレッシュ処理のフローチャート
【符号の説明】
【００７９】
１００  不揮発性記憶システム
１０１  アクセス装置
１０２  不揮発性記憶装置
１０３  メモリコントローラ
１０４  不揮発性メモリ
１０５  ホストインタフェース部
１０６  メモリインタフェース部
１０７  ＣＰＵ部
１０８  誤り訂正部
１０９  ランダム選択部
２０１  ブロック
２０２  ページ
２０３  データ部
２０４  冗長部
【図１】
2008090778.tif 000003
【図２】
2008090778.tif 000004
【図３】
2008090778.tif 000005
【図４】
2008090778.tif 000006
【図５】
2008090778.tif 000007
【図６】
2008090778.tif 000008
【図７】
2008090778.tif 000009
【図８】
2008090778.tif 000010