(57)【特許請求の範囲】
【請求項１】
複数のデータ・ビットを記憶しているマルチレベルセルを有するメモリからデータを読み取る方法であって、
（ａ）１組のマルチレベルセルに記憶されたデータ・ビットを読み取り、当該データ・ビットに関連するエラー・コード・ビットを読み取るステップを備え；
（ｂ）前記エラー・コード・ビットを用いて、前記１組のマルチレベルセルから読み取られたデータビット中に、誤っていると特定されるビットが含まれていることの判定をするステップを備え、前記特定されるビットに関連する特定のマルチレベルセルが識別され、前記特定されるビットはそれに関連する特定のマルチレベルセルが或る電荷状態にあることを示し；
（ｃ）前記特定されるビットの変更にして、前記特定のマルチレベルセルについて、前記或る電荷状態と比べてより多い電荷の保持に相当する次に高い電荷状態が示されるように、変更をするステップを備え、その変更前の前記或る電荷状態というのは、前記特定のマルチレベルセルにおける、前記次に高い電荷状態からの電荷の一部喪失に由来するものであり；
（ｄ）前記ステップ（ｃ）での変更を受けた前記特定されるビットが依然として誤っているかどうか判定し、前記特定されるビットが依然として誤っている場合、その特定されるビットを、前記次に高い電荷状態よりも多い電荷の保持に相当するさらに高い電荷状態が示されように変更可能か否か、を判定するステップを備え、
（ｅ） 変更可能であればステップ（ｃ）および（ｄ）を繰り返し、変更可能でなければエラーのフラグを立てるステップを備える
ことを特徴とする方法。
【請求項２】
請求項１に記載の方法において、前記エラー・コード・ビットがエラー位置指定ビットである、ことを特徴とする方法。
【発明の詳細な説明】
発明の分野
本発明はメモリ装置の分野に関する。より詳細には、本発明は複数レベルセルメモリから読み取られたデータ中のエラーを訂正することに関する。
発明の背景
複数レベルセルメモリは、それぞれ複数の電荷状態すなわちレベルを記憶することのできる複数レベル・セルからなる。各電荷状態は、それぞれ１つのメモリ要素のビットパターンに関連する。
第１図に、４つの電荷状態：レベル０〜３を記憶する従来技術のマルチレベルセルの表現を示す。レベル３はレベル２より高い電荷を維持し、レベル２はレベル１より高い電荷を維持し、レベル１はレベル０より高い電荷を維持する。基準電圧によって異なる電荷状態を分離する。Ｖｒｅｆ２はレベル３とレベル２を分離する。Ｖｒｅｆ１はレベル２とレベル１を分離する。Ｖｒｅｆ０はレベル１とレベル０を分離する。
各電荷状態には、それぞれ１つのメモリ要素のビットパターンが関連付けられている。一例では、メモリ要素のビットパターン「００」はレベル３と関連付けられ、メモリ要素のビットパターン「１０」はレベル２と関連付けられ、メモリ要素のビットパターン「０１」はレベル１と関連付けられ、メモリ要素のビットパターン「１１」はレベル０と関連付けられる。
マルチレベルセルメモリは、それが記憶できる電荷状態の数に基づいて複数のデータ・ビットを記憶することができる。例えば、４つの電荷状態を記憶できるマルチレベルセルメモリは、２データ・ビットを記憶することができ、８つの電荷状態を記憶できるマルチレベルセルメモリは３データ・ビットを記憶することができ、１６個の電荷状態を記憶できるマルチレベルセルメモリは４データ・ビットを記憶することができる。ｎビットのマルチレベルセルメモリのそれぞれについて、様々なメモリ要素のビットパターンを異なる各電荷状態に関連させることができる。
しかし、マルチレベルセルに記憶可能な電荷状態の数は２の累乗に限られるものではない。例えば、３つの電荷状態をもつマルチレベルセルは１．５データ・ビットを記憶する。このマルチレベルセルを追加の復号論理と組み合わせ、同様の第２のマルチレベルセルに結合すると、この２個のセルの組合せの出力として３データ・ビットが生成される。他の様々なマルチセルの組合せも可能である。
マルチレベルセルメモリの一例が、本願と同じ譲受人に発行されたＣｈｒｉｓｔｏｐｈｅｒｓｏｎ他の「Ｇｒａｙ  Ｃｏｄｉｎｇ  ｆｏｒ  ａ  Ｍｕｌｔｉｌｅｖｅｌ  Ｃｅｌｌ  Ｍｅｍｏｒｙ  Ｓｙｓｔｅｍ」という名称の米国特許第５，４５０，３６３号に記載されている。’３６３号特許はマルチレベルセルメモリの一例を記載している。マルチレベルセルメモリはダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）や、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気式消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュ消去可能プログラマブル読取り専用メモリ（フラッシュＥＰＲＯＭ）など様々のタイプの読取り専用メモリ（ＲＯＭ）に使用することができる。
第２図に、従来技術によるプロセッサ１００とマルチレベルセルメモリ１０４の図を示す。プロセッサ１００はバス１０２およびメモリ１０４に結合されている。メモリ１０４はインターフェース制御装置１０５およびマルチレベルセルメモリ・アレイ１５０を含んでいる。プロセッサ１００はバス１０２を介してインターフェース制御装置１０５に結合されている。プロセッサ１００はまたバス１０２を介してマルチレベルセルメモリ・アレイ１５０にも結合されている。インターフェース制御装置１０５はマルチレベルセルメモリ・アレイ１５０の制御に必要な動作を行う。一実施形態では、インターフェース制御装置１０５とマルチレベルセルメモリ・アレイ１５０が単一の集積回路ダイ上にある。
エラー・コード
データは通常、本明細書では「データワード」と呼ぶ所定数のビットを含むユニットとして、特定のメモリ・アレイに供給され、そのメモリ・アレイから取り出される。データがメモリ・アレイに記憶されるとき、エンコーダでエラー・コードを生成することがある。このエラー・コードをそれに関連するデータワードと一緒に取り出せるように記憶することができる。データワードがメモリ・アレイから取り出されるとき、従来技術で周知の通り、エラー復号回路はそのデータワードに関連する以前にセーブされたエラー・コードを使用して、メモリ・アレイから読み取られたデータワード中で見つかったエラーを検出、位置指定、および／または訂正する。
エラー・コードには、エラー検出コード、エラー位置指定（error location）コード、エラー訂正コードを含めて様々なタイプのものがある。エラー検出コードは、エラーが発生したかどうかを検出するが、エラーを訂正することはできない。エラー位置指定コードは、エラーを検出し、そのエラーをあるビットのブロックに局限することができるが、そのビットのブロック内の誤ったビットの正確な位置を決定することはできない。エラー訂正コードは、あるデータワード中の単一ビット・エラーを検出し、そのエラーを訂正することができる。ハミング・コードと呼ばれるあるタイプのエラー訂正コードは、単一ビット・エラーを訂正できる他、さらにあるデータワード中のダブル・ビット・エラーを検出することができる（ただし、それを訂正することはできない）。
エラー位置指定コードの１グループは、Ｅ．フジワラとＭ．キタカミの論文「Ａ  ｃｌａｓｓ  ｏｆ  Ｅｒｒｏｒ−Ｌｏｃａｔｉｎｇ  Ｃｏｄｅｓ  ｆｏｒ  Ｂｙｔｅ−Ｏｒｇａｎｉｚｅｄ  Ｍｅｍｏｒｙ  Ｓｙｓｔｅｍｓ」，ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ，Ｖｏｌ．４０，Ｎｏ．６，１９９４年１１月（「フジワラ論文」）に記載されている。フジワラ論文は、フォールト・トレラント・メモリ・システムで使用されるエラー位置指定コードを記載している。あるメモリ・ブロック中でエラーが検出されたとき、誤りのあるメモリ・カードが突き止められ、予備のカードに切り換えられる。
Ｊ．Ｋ．ＷｏｌｆとＢ．Ｅｌｓｐａｓの論文「Ｅｒｒｏｒ−Ｌｏｃａｔｉｎｇ  Ｃｏｄｅｓ：Ａ  Ｎｅｗ  ｉｎ  Ｅｒｒｏｒ  Ｃｏｎｔｒｏｌ」，ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ，１９６３年４月にもエラー位置指定コードが記載されている。
発明の概要
方法および装置は、メモリのマルチレベルセルから読み取られたデータを訂正する。このマルチレベルセルは３個以上の電荷状態を記憶することができる。マルチレベルセルから読み取られた第１の電荷状態は誤っていると推定される。マルチレベルセルが第２の電荷状態を維持しており、その第２の電荷状態が第１の電荷状態よりも多くの電荷を有する場合に生成されるはずの出力に対応する出力が生成される。
本発明の他の特徴および利点は、添付の図面および以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
第１図は、４個の電荷状態を記憶する従来技術のマルチレベルセルを示す図である。
第２図は、従来技術によるプロセッサとマルチレベルセルメモリを示す図である。
第３図は、本発明を用いたプロセッサとマルチレベルセルメモリを示す図である。
第４図は、データをメモリ・アレイにプログラムする（すなわち書き込む）のに使用されるエラー訂正回路の一実施形態を示す図である。
第５図は、メモリ・アレイ２５０からデータを読み取るのに使用されるエラー訂正回路の一実施形態を示す図である。
第６図は、メモリ・アレイへの書込みとメモリ・アレイからの読取りの両方に使用できる、データ・バッファとエラー・エンコーダ／デコーダ（ＥＥＤ）を含むエラー訂正回路の一実施形態を示す図である。
第７図は、メモリ・アレイにデータを書き込むためのエラー訂正回路の別の実施形態を示す図である。
第８図は、メモリ・アレイからデータを読み取るためのエラー訂正回路の別の実施形態を示す図である。
第９図は、データワードがマルチレベルセルメモリに書き込まれるときにエラー訂正コードを生成するプロセスの流れ図である。
第１０図は、データワードとそれに関連するエラー位置指定コードを示す図である。
第１１図は、６４ビットのデータワードとそれに関連する８ビットのエラー位置指定コードの一例を示す図である。
第１２図は、マルチレベルセルメモリからデータワードを読み取る際にエラー位置指定コードによって検出されたエラーを訂正するプロセスの流れ図である。
詳細な説明
マルチレベルセルメモリにおけるエラーを訂正するための方法および装置を記述する。この方法は、エラー位置指定コードを利用して、１つまたは複数のマルチレベルセルから読み取られたデータワード中のエラーを訂正するものである。エラー位置指定コードは、データワード中の、エラーを含むビットのブロックを示すが、どのビットが誤っているかを識別することはしない。ビットのブロックは１つまたは複数のマルチレベルセルに対応するので、エラー位置指定コードはエラー・マルチレベルセルを識別する。本発明は、エラー・マルチレベルセルの識別を、マルチレベルセルの主な障害メカニズムが電荷損失であるとの認識と組み合わせて利用する。特定のマルチレベルセルが不正確に読み取られたものと識別されると、マルチレベルセルの正しい状態を、マルチレベルセルから読み取られた電荷状態よりも高い電荷をもつ電荷状態であると予見することができる。
フジワラ論文（「背景」内で引用）のエラー位置指定コードは、誤りのあったメモリ・ブロックを検出するのに使用され、したがってそのメモリ・ブロックを格納するメモリ・カードを使用不能にすることができたが、本発明では障害を訂正するためにマルチレベルセルの障害メカニズムを利用する。マルチレベルセルの正常障害モードは電荷損失に基づく単方向性のものなので、フジワラ論文に記載されているようにランダムではなく、本発明はエラー・マルチレベルセルの正しい状態を予見するのが可能なことを発見した。
エラー・マルチレベルセルの訂正は、エラー・マルチレベルセルから読み取られたデータを、そのエラー・マルチレベルセルが、すぐ上の電荷状態にある場合に取るはずの値を反映するように修正することによって実施される。エラー位置指定コードが、この修正によってエラーが訂正されたかどうか検査するのに使用される。エラー・マルチレベルセルからの修正済みデータが依然として正しくない場合は、この修正プロセスを繰り返すことができる。多数のマルチレベルセルが誤っている場合は、誤りが訂正されるまで、あるマルチレベルセルからのデータを一定に保って他方のデータを修正し、あるいはその逆を行う。
本発明の説明全体を通じて、フジワラ論文に記載されているエラー位置指定コードを実施例の一例として引用する。ただし、他のアルゴリズムおよび他のタイプの実施例を用いてエラー・マルチレベルセルを識別することも可能である。
第３図から第９図に、本発明の例を示す。第３図には、プロセッサ２００と、マルチレベルセルメモリ２０４を示す。プロセッサ２００はバス２０２に結合されている。マルチレベルセルメモリ２０４は、インターフェース制御装置２０５、マルチレベルセルメモリ・アレイ２５０、およびエラー訂正回路２６０を含んでいる。インターフェース制御装置２０５は、マルチレベルセルメモリ・アレイ２５０とエラー訂正回路２６０を制御するのに必要な動作を行うように結合されている。インタフェース制御装置２０５とエラー訂正回路２６０は共にバス２０２に結合されている。マルチレベルセルメモリ・アレイ２５０はエラー訂正回路２６０に結合されている。プロセッサ２００はメモリ２０４にデータを書き込み、メモリ２０４からデータを読み取る。
一実施形態では、インターフェース制御装置２０５、マルチレベルセルメモリ・アレイ２５０およびエラー訂正回路２６０は単一の集積回路ダイ上にある。別の実施形態では、エラー訂正回路２６０はメモリ・アレイ２５０およびインターフェース制御装置２０５とは別である。たとえばエラー訂正回路を別のチップ上に配置することもできる。
第４図に、メモリ・アレイ２５０にデータをプログラムする（すなわち書き込む）のに使用されるエラー訂正回路２６０の実施形態を示す。エラー訂正回路２６０は、データ・バッファ３０２、エラー・バッファ３０４、およびエラー・エンコーダ３００を含む。
バス２０２はデータ・バッファ・バス３０８を介してデータ・バッファ３０２に結合されている。データ・バッファ３０２はメモリ・バス３１２を介してメモリ・アレイ２５０に結合されている。データ・バッファはバス３１４を介してエラー・エンコーダ３００に結合される。エラー・エンコーダ３００はバス３１６を介してエラー・バッファ３０４に結合され、エラー・バッファ３０４はエラー・バス３１８を介してメモリ・アレイ２５０に結合される。
データはデータ・バッファ・バス３０８を介してデータ・バッファ３０２に書き込まれる。データ・バッファ・バス３０８を介するデータの各転送の幅は、通常データ・バッファ３０２の幅の数分の一である。例えば、データ・バッファ・バス３０８は幅８ビットまたは１６ビットであり、データ・バッファ３０２は幅６４ビットである。
データ・バッファ３０２の幅全体がバス２０２からのデータで書き込まれたとき、データ・バッファ３０２内の６４ビット・データワードがメモリ・バス３１２を介してメモリ・アレイ２５０に転送される。エラー・エンコーダ３００は、データ・バッファ３０２からバス３１４を介して入力されたデータを用いて、エラー訂正コードを生成し、それがエラー・バッファ３０４に供給される。エラー・バッファ３０４はエラー訂正コードをバス３１８を介してメモリ・アレイ２５０に供給する。
本発明の一実施形態では、エラー・エンコーダ３００はエラー位置指定コードを生成するが、これはＥ．フジワラとＭ．キタカミがＩＥＥＥｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｍａｔｉｏｎ  Ｔｈｅｏｒｙ，Ｖｏｌ．４０，Ｎｏ．６，１９９４年１１月刊の「Ａ  ｃｌａｓｓ  ｏｆ  ｅｒｒｏｒ  Ｌｏｃａｔｉｎｇ  Ｃｏｄｅｓ  ｆｏｒ  Ｂｙｔｅ−Ｏｒｇａｎｉｚｅｄ  Ｍｅｍｏｒｙ  Ｓｙｓｔｅｍ」に記載したようなクラスのエラー位置指定コードである。エラー位置指定コードは、データワード内の１つまたは複数のエラー・データ・ブロックを検出するが、そのブロックのうちで誤っている厳密なビットを示すことはない。その上、このエラー位置指定コードは単一ビット・エラーを検出することができる。
本発明の一態様では、データ・バッファ３０２から供給されるデータワードと、エラー・バッファ３０４から供給されるエラー・コードがメモリ・アレイ２５０に連結して記憶される。別の態様では、データワードがメモリ・アレイ２５０内にエラー・コードと別々に記憶される。さらに別の態様では、エラー・コードがそれに関連するデータワードとは別の記憶域に記憶される。
第５図に、メモリ・アレイ２５０からデータを読み取るのに使用されるエラー訂正回路２６０の一実施形態を示す。エラー訂正回路２６０は、データ・バッファ３２０、エラー・バッファ３２２、およびエラー・エンコーダ／デコーダ（ＥＥＤ）３２４を含む。
読み取り動作中、データワードはメモリ・アレ２５０からバス３３０を経てデータ・バッファ３２０に供給される。同様に、そのデータワードに関連するエラー訂正コードはエラー・バッファ３２２に供給される。一実施形態では、エラー訂正コードはメモリ・アレイ２５０からバス３３２を経て供給される。
データ・バッファ３２０はバス３３４を介してＥＥＤ３２４にそのデータを供給するように結合されている。エラー・バッファ３２２はバス３３６を介してＥＥＤ３２４にそのエラー訂正コードを供給するように結合されている。ＥＥＤ３２４は、データ・バッファ３２０とエラー・バッファ３２２の両方から入力を受け取ると、メモリ・アレイから読み取られたデータワード中に誤ったビットがあるかどうか判定する。そのデータワード中に誤ったビットがある場合、ＥＥＤ２２４は、後で第１１図および第１２図に関して述べるように、その誤ったビットを訂正するために適切な信号３４０をアサートする。信号３４０はデータ・バッファ３２０の所定のデータ・ビットを個別に変更することができる。誤ったビットを有さない最終データ値を決定するまでに、ＥＥＤ３２４がデータ・バッファ３２０内の様々な値を繰り返しテストする必要のあることもある。データ・バッファ３２０はバス３３８を介してバス２０２に結合される。
第６図に、データ・バッファ３５０とエラー・エンコーダ／デコーダ（ＥＥＤ）３５４とを含むエラー訂正回路２６０の一実施形態を示す。ＥＥＤ３５４は、メモリ・アレイ２５０への書込みとメモリ・アレイ２５０からの読取りの両方に使用することができる。ＥＥＤ３５４は、データワードからエラー位置指定コードを生成するためのエンコーダと、メモリ・アレイから読み取る際にデータワードを訂正するのに使用するデコーダとを含む。
第７図に、メモリ・アレイ２５０にデータを書き込むためのエラー訂正回路２６０の別の実施形態を示す。ただし、第７図のエラー訂正回路２６０は第４図のデータ・バッファまたはエラー・バッファを含んでいない。データワードはバス２０２からバス３８０を経てメモリ・アレイ２５０に供給される。データワードはまたバス３８２を介してエンコーダ３８４に入力として供給される。エンコーダ３８４はエラー位置指定コードを生成し、それをバス３８６を介してメモリ・アレイ２５０に供給する。この実施形態は、エンコーダ３８４への入力データが変更されるまでにエラー訂正コードを生成するのに十分な時間をエンコーダ２８４が持っているときに使用できる。
第８図に、メモリ・アレイ２５０からデータを読み取るためのエラー訂正回路２６０の別の実施形態を示す。第８図のエラー訂正回路２６０は第５図のデータ・バッファまたはエラー・バッファを含んでいない。
データワードはメモリ・アレイ２５０から信号線３８８ａ−ｚを経てエラー訂正回路２６０に供給される。データワードは信号線３８９ａ−ｚを経てエンコーダ３９０に供給される。エンコーダはデータワードを再コード化し、信号線３９３ａ−ｍ上にエラー訂正コードを供給する。再コード化されたエラー訂正コードは、以前にセーブされた信号線３９２ａ−ｍ上に供給されるエラー訂正コードと比較される。この比較は例えばＸＯＲ回路で行われる。この比較の出力はデコーダ３９４ｍに供給される。デコーダは、データワード中で検出されたエラーを訂正するために元の信号３８８ａ−ｚを修正することのできる信号３９６ａ−ｚを供給する。訂正されたデータワードは信号線３９８を介して２０２に供給される。
代替実施形態では、第７図のプログラミング回路と第８図の読取り回路を組み合わせて、エンコーダを共用することができる。
第９図に、マルチレベルセルメモリにデータワードが書き込まれるときにエラー訂正コードを生成する際に取られるステップを示す流れ図を示す。以下の説明は第４図のプログラミング回路に関して行う。流れ図はブロック４００からスタートし、そこから動作はブロック４０２に進む。ブロック４０２で、データ・バッファ３０２が、あるデータワードを構成するデータで満たされる。データ・バッファ３０２への書込みには、数バス・サイクルを要することがある。データ・バス・バッファ３０８は通常、データ・バッファ３０２ほど幅が広くないからである。
動作はブロック４０４に進み、そこでデータワードの各ビットがエンコーダ３００で処理されて、エラー位置指定コードが生成される。ブロック４０６でデータワードとエラー位置指定コードがマルチレベルセルメモリ２０４に記憶される。動作はブロック４１０で終了する。
第１０図に、データワード４２０とそれに関連するエラー位置指定コード４３０の図を示す。データワード４２０中のエラー・ビット・グループすなわち誤りがある「バイト」を指定するためにエラー位置指定コード４３０が復号される。
一実施形態では、各バイトが厳密に単一のマルチレベルセルに対応する。すなわち各バイトは特定のマルチレベルセルに記憶されている数のビットからなり、かつ各バイトがそのマルチレベルセル境界と整列している。この場合、エラー位置指定コードがエラー・バイトを識別するとき、エラー・マルチレベルセルをも識別する。マルチレベルセルの障害メカニズムは、電荷損失に基づいて予見できるので、エラー・マルチレベルセルの正しい状態はエラー・マルチレベルセルから読み出される電荷状態よりも電荷の多い電荷状態であると予見される。
別の実施形態では、エラー・バイトが２つのマルチレベルセルとオーバーラップする。すなわちそのエラー・バイトの一部があるマルチレベルセルに記憶され、他の一部が別のマルチレベルセルに記憶される。バイト中のビット数がマルチレベルセルに記憶されるビット数と同じでないとき、あるいはバイトがマルチレベルセル境界に対して整列していないときにこのことが起こり得る。２つのマルチレベルセルのオーバーラップが生じる場合、２つのマルチレベルセルの一方または両方の高い方の電荷状態を予見することにより、誤ったバイトに関連する一方または両方のセルを訂正することができる。同様に３個以上のマルチレベルセルのオーバーラップは、１個または複数のエラー・マルチレベルセルの高い方の電荷状態を予見することによって訂正できる。
第１１図に、６４ビットのデータワード４５０の例をそれに関連する８ビットのエラー位置指定コード４６０と共に示す。エラー位置指定コード４６０はフジワラ論文に記載されているタイプのエラー位置指定コードである。これは誤りのあるｎビット・バイトを検出することができる。また、単一ビット・エラーを検出することもできる。第１１図には、ｎ＝４の場合の例を示す。データワードはまた２つの３２ビットのブロックに分割されている。８ビットのエラー位置指定コード４６０が各３２ビットのブロック中の１つの４ビット・バイトのエラーを検出することができる。
したがって、４ビットのマルチレベルセルメモリ（各セルが１６の電荷状態をもつ）にデータワードが記憶された場合、その４ビット・バイトのそれぞれが特定のマルチレベルセルに対応する。４ビット・バイトの１つでエラーが検出された場合、その４ビット・バイトに関連するマルチレベルセルから読み取られたデータに誤りがある。エラー位置指定コードを使って、各ブロック内でエラー・マルチレベルセルを決定することができる。
第１１図に示すように、データワード４５０の分離された２つの誤りのある４ビット・バイトを指すエラー位置指定コード４６０によって、同じデータワード内で複数のエラー・マルチレベルセルを決定することができる。エラー訂正の正確さは、先に引用したＥ．フジワラとＭ．キタカミのＩＥＥＥ論文に記載されている通り、誤ったビットおよびビット・バイトの数に応じて変わる。所望のレベルのエラー位置指定および訂正性能を達成するために、ｎビット・バイトおよびｍビットのブロックの様々な構成を実現することができる。
エラー位置指定コードは、実現するのに必要なビット数が少なくてよいため、エラー訂正コードに勝る利点を有する。これを使うと、メモリ・アレイのコストとサイズが減少する。比較のために示すと、エラー位置指定コード４６０の代りに８ビットのハミング・コード（エラー訂正コードの１種）を使用した場合、データワード４５０中の単一ビット・エラーしか訂正できない。データワード４５０中に二重ビット・エラーが発生した場合、その二重ビット・エラーはハミング・コードによって検出されるが、訂正はできない。すなわち、エラー位置指定コード４６０は、ハミング・エラー訂正コードよりもデータワード中のエラーを訂正するより優れた方法をもたらす。
マルチレベルセルの主な障害メカニズムはマルチレベルセルが電荷を失うことなので、エラー・マルチレベルセルが決定されると、そのエラー・マルチレベルセルが現行状態よりも高い電荷状態を持っていると予見することが可能である。
第１２図に、マルチレベルセルメモリからデータワードを読み取る際にエラー位置指定コードによって検出されたエラーを訂正するプロセスの流れ図を示す。以下の説明は第５図の読取り回路に関して行う。流れ図はブロック５００から始まり、ブロック５０２に進む。ブロック５０２で、データワードおよびそれに関連するエラー位置指定コードがマルチレベルセルメモリ内から読み出される。データワードはデータ・バッファ３２０に保持され、エラー位置指定コードはエラー・バッファ３２２に保持される。
ブロック５０４で、ＥＥＤ３２４を介してデータ・ビットとエラー位置指定ビットを処理して、そのデータワード中にエラーがあるかどうか判定する。ＥＥＤ３２４によって実施されるデータ・ビットとエラー位置指定コードの処理は周知の回路によって実現することができる。
ブロック５０６で、エラーが検出されなかった場合、動作はブロック５６０に進み、そこで動作が終了する。しかしエラーが検出された場合は、動作はブロック５１０に進む。
ブロック５１０で、ＥＥＤ３２４が単一ビット・エラーを検出した場合、動作はブロック５１２に進み、そこでＥＥＤ３２４が、データ・バッファ３２０の適切なビット値を変更するために信号線３４０のうちの１本をアサートすることにより、データ・バッファ３２０内の単一ビット・エラーを訂正する。ブロック５１２から動作はブロック５６０に進み、そこで動作が終了する。
しかし、ブロック５１０でデコーダが、第１１図に関して述べた４ビット・バイト・エラーのようなマルチビット・バイト・エラーを検出した場合は、動作はブロック５２０に進む。ブロック５２０で、そのデータワードの一部を記憶する１つまたは複数のエラー・マルチレベルセルが決定される。これらのエラー・マルチレベルセルはＥＥＤ３２４によって指示される。ブロック５２２で、エラー・セルの現在の電荷状態が、マルチレベルセルの従来技術で周知の回路によって検出される。ブロック５２４で、エラー・セルに対応するメモリ素子ビット・パターンが、すぐ上の電荷状態のそれに変更される。一例では、現在の電荷状態のすぐ上の電荷状態が、最も可能性の高い訂正措置であると予見される。別の例では、すぐ上の電荷状態と異なる電荷状態が、エラーを訂正する可能性が高い。例えば、主要なエラー・モードは、マルチレベルセルの特定の電荷状態が２つの状態をスキップ・ダウンするものであることが実験的に判明しているとする。この場合、読み取られた電荷状態の２つの電荷状態が最も可能性の高い訂正措置であると予見することによって、そのエラーを訂正することができる。同様に、特定の障害モードがマルチレベルセルの唯一の障害モードであることが判明している場合、訂正アルゴリズムは、必要とされる訂正措置だけを講じるように適切に実現することができる。
ブロック５２６で、変更されたデータワードとエラー位置指定コードがＥＥＤ３２４によって処理され、ブロック５２４で行われたデータワードの変更によってエラーが訂正されたかどうかが調べられる。
依然としてエラーがあり、エラー・マルチレベルセルに関連するビットが再度より高い電荷状態に変更できる場合、動作は、ブロック５３０から５２４に戻る。しかし、依然としてエラーがあり、かつエラー・マルチレベルセルに関連するメモリ文字ビット・パターンがより高い電荷状態に変更できないという条件が満たされる場合、動作はブロック５４０に進む。
ブロック５４０で、データワード中に依然としてエラーがある場合は、動作はブロック５５０に進み、そこでエラーにフラグが立てられる。そのデータワードを要求しているプロセッサ２００またはその他の装置に、エラーが発生したことが通知される。
しかし、ブロック５４０でエラーがもはや検出されない場合、動作はブロック５６０に進む。
ブロック５６０で流れ図は終了する。データ・バッファ３２０はエラーが訂正されたデータワードを保持する。マルチレベルセルメモリの一実施形態では、エラー・マルチレベルセルは、データ・バッファ３２０に保存されている訂正されたデータワードで再書込みされる。これは、メモリ・アレイに書き戻すための追加回路を追加するのが複雑だからである。さらに、フラッシュ・メモリの実施形態では一般に、既にフラッシュ・メモリに書き込まれたデータワードを再書き込みするには、ブロック全体を消去しなければならない。
以上、本発明をその特定の例示的実施形態に関して説明してきた。しかし、添付の請求の範囲に記載の本発明のより広義な趣旨および範囲から逸脱せずに、それに様々な修正や変更を加えることができるのは明らかであろう。したがって、この明細書および図面は限定的ではなく例示的なものと見なすべきである。
【図１】
0003982639.tif 000002
【図２】
0003982639.tif 000003
【図３】
0003982639.tif 000004
【図４】
0003982639.tif 000005
【図５】
0003982639.tif 000006
【図６】
0003982639.tif 000007
【図７】
0003982639.tif 000008
【図８】
0003982639.tif 000009
【図９】
0003982639.tif 000010
【図１０】
0003982639.tif 000011
【図１１】
0003982639.tif 000012
【図１２】
0003982639.tif 000013