(57)【要約】【課題】追加の信頼性情報に基づくＥＣＣを、ＭＢＣフラッシュメモリのセルを読み取ることなく具現化する。【解決手段】体系的な、あるいは非体系的なＥＣＣに従って、マルチビット・パー・セル・メモリのセル内に記憶されているデータを読み出して、読み取りビットの一つ以上にエラーがあるという推定確率に従って、訂正する（体系的なＥＣＣ）、あるいは回復する（非体系的なＥＣＣ）。本発明の一つの方法では、推定値は演繹的なものである。本発明のもう一つの方法では、推定値は、読み取りビットの有効位またはビット・ページを含む読み取りビットの局面にのみ基づく。本発明の第三の方法では、推定値は、読み取りビットの値にのみ基づく。すべての推定値が等しいというわけではない。【選択図】図１Ａ
2009512112.tif 000002
【特許請求の範囲】
【請求項１】
複数のマルチビット・セルを含むメモリ内に記憶される複数のデータ・ビットを読み取る方法であって、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによって記憶が実行されて、記憶ビットの各複数がセルの各々に記憶されているとき、
（ａ）セルを読むことによって、各セルに対する各複数の読み取りビットを得るステップ、そして
（ｂ）パリティ・ビットに対応する前記読み取りビットに従って、データ・ビットに対応する前記読み取りビットを訂正するステップからなり、前記訂正が、少なくとも部分的に、前記読み取りビットの少なくとも二つにエラーがあるという各々の確率の演繹的な推定値に従って実行され、少なくとも一つの前記推定値が、少なくとも一つの他の前記推定値とは異なることを特徴とする、方法。
【請求項２】
前記演繹的な推定値の少なくとも二つが、セルのうちの一つの共通セルの前記読み取りビットのためのものである、請求項１の方法。
【請求項３】
前記演繹的な推定値の少なくとも二つが、異なるセルの前記読み取りビットのためのものである、請求項１の方法。
【請求項４】
前記演繹的な確率が、前記読み取りビットの各々の有効位に依存する、請求項１の方法。
【請求項５】
前記演繹的な確率が、前記読み取りビットの各々のビット・ページに依存する、請求項１の方法。
【請求項６】
複数のマルチビット・セルを含むメモリのための、メモリ内に記憶されたデータを、請求項１の方法を用いて読み取るコントローラ。
【請求項７】
（ａ）複数のマルチビット・セルを含むメモリ、そして
（ｂ）前記メモリを制御するための請求項６のコントローラからなる、メモリ・デバイス。
【請求項８】
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによってデータ・ビットを記憶するため、記憶ビットの各複数がセルの各々に記憶されているとき、コンピュータで読み取り可能なコードが、
（ａ）セルを読むことによって、各セルに対する各々の複数の読み取りビットを得るためのプログラム・コード、そして
（ｂ）パリティ・ビットに対応する前記読み取りビットに従って、データ・ビットに対応する前記読み取りビットを訂正するためのプログラム・コードからなり、前記訂正が、少なくとも部分的に、前記読み取りビットの少なくとも二つにエラーがあるという各々の確率の演繹的な推定値に従って実行され、そのとき、少なくとも一つの前記推定値が、少なくとも一つの他の前記推定値とは異なる、コンピュータで読み取り可能な記憶メディア。
【請求項９】
複数のマルチビット・セルを含むメモリ内に記憶される複数のデータ・ビットを読み取る方法であって、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによって記憶が実行されて、各複数の保護ビットがセルの各々に記憶されているとき、
（ａ）セルを読むことによって、各セルに対する各複数の読み取り保護ビットを得るステップ、そして
（ｂ）読み取り保護ビットからデータ・ビットを回復させるステップからなり、前記回復が、少なくとも部分的に、前記読み取り保護ビットの少なくとも二つにエラーがあるという各々の確率の演繹的な推定値に従って実行され、このとき、少なくとも一つの前記推定値が、少なくとも一つの他の前記推定値とは異なる、方法。
【請求項１０】
前記演繹的な推定値の少なくとも二つが、セルのうちの一つの共通セルの前記読み取り保護ビットのためのものである、請求項９の方法。
【請求項１１】
前記演繹的な推定値の少なくとも二つが、異なるセルの前記読み取り保護ビットのためのものである、請求項９の方法。
【請求項１２】
前記演繹的な確率が、前記読み取り保護ビットの各々の有効位に依存する、請求項９の方法。
【請求項１３】
前記演繹的な確率が、前記読み取り保護ビットの各々のビット・ページに依存する、請求項９の方法。
【請求項１４】
複数のマルチビット・セルを含むメモリのための、メモリ内に記憶されたデータを、請求項９の方法を用いて読み取るコントローラ。
【請求項１５】
（ａ）複数のマルチビット・セルを含むメモリ、そして
（ｂ）前記メモリを制御するための、請求項１４のコントローラからなる、メモリ・デバイス。
【請求項１６】
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによってデータ・ビットが記憶されて、各複数の保護ビットがセルの各々に記憶されているとき、コンピュータで読み取り可能なコードが、
（ａ）セルを読むことによって、各セルに対する各々の複数の読み取りビットを得るためのプログラム・コード、そして
（ｂ）読み取り保護ビットからデータ・ビットを回復させるためのプログラム・コードからなり、前記回復が、少なくとも部分的に、前記読み取り保護ビットの少なくとも二つにエラーがあるという各々の確率の演繹的な推定値に従って実行され、このとき、少なくとも一つの前記推定値が、少なくとも一つの他の前記推定値とは異なる、コンピュータで読み取り可能な記憶メディア。
【請求項１７】
複数のマルチビット・セルを含むメモリ内に記憶される複数のデータ・ビットを読み取る方法であって、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによって記憶が実行されて、記憶ビットの各複数がセルの各々に記憶されているとき、
（ａ）セルを読むことによって、各セルに対する各複数の読み取りビットを得るステップ、そして
（ｂ）パリティ・ビットに対応する前記読み取りビットに従って、データ・ビットに対応する前記読み取りビットを訂正するステップからなり、前記訂正が、前記読み取りビットの少なくとも二つにエラーがあるという、前記読み取りビットの少なくとも一つの局面にのみ基づく各々の確率に従って実行され、前記少なくとも一つの局面が、前記読み取りビットの各々の有効位と、前記読み取りビットの各々のビット・ページとからなるグループから選択される局面を含み、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、方法。
【請求項１８】
複数のマルチビット・セルを含むメモリのための、メモリ内に記憶されたデータを、請求項１７の方法を用いて読み取るコントローラ。
【請求項１９】
（ａ）複数のマルチビット・セルを含むメモリ、そして
（ｂ）前記メモリを制御するための、請求項１８のコントローラからなる、メモリ・デバイス。
【請求項２０】
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによってデータ・ビットを記憶するため、記憶ビットの各複数がセルの各々に記憶されているとき、コンピュータで読み取り可能なコードが、
（ａ）セルを読むことによって、各セルに対する各々の複数の読み取りビットを得るためのプログラム・コード、そして
（ｂ）パリティ・ビットに対応する前記読み取りビットに従って、データ・ビットに対応する前記読み取りビットを訂正するためのプログラム・コードからなり、前記訂正が、前記読み取りビットの少なくとも二つにエラーがあるという、前記読み取りビットの少なくとも一つの局面にのみ基づく各々の確率に従って実行され、前記少なくとも一つの局面が、前記読み取りビットの各々の有効位と、前記読み取りビットの各々のビット・ページとからなるグループから選択される局面を含み、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、コンピュータで読み取り可能な記憶メディア。
【請求項２１】
複数のマルチビット・セルを含むメモリ内に記憶される複数のデータ・ビットを読み取る方法であって、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによって記憶が実行されて、各複数の保護ビットがセルの各々に記憶されているとき、
（ａ）セルを読むことによって、各セルに対する各複数の読み取り保護ビットを得るステップ、そして
（ｂ）読み取り保護ビットからデータ・ビットを回復させるステップからなり、前記回復が、前記読み取り保護ビットの少なくとも二つにエラーがあるという、前記読み取り保護ビットの少なくとも一つの局面にのみ基づく各々の確率に従って実行され、前記少なくとも一つの局面が、前記読み取り保護ビットの各々の有効位と、前記読み取り保護ビットの各々のビット・ページとからなるグループから選択される局面を含み、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、方法。
【請求項２２】
複数のマルチビット・セルを含むメモリのための、メモリ内に記憶されたデータを、請求項２１の方法を用いて読み取るコントローラ。
【請求項２３】
（ａ）複数のマルチビット・セルを含むメモリ、そして
（ｂ）前記メモリを制御するための、請求項２２のコントローラからなる、メモリ・デバイス。
【請求項２４】
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによってデータ・ビットが記憶されて、各複数の保護ビットがセルの各々に記憶されているとき、コンピュータで読み取り可能なコードが、
（ａ）セルを読むことによって、各セルに対する各々の複数の読み取り保護ビットを得るためのプログラム・コード、そして
（ｄ）前記読み取り保護ビットからデータ・ビットを回復させるためのプログラム・コードからなり、前記回復が、前記読み取り保護ビットの少なくとも二つにエラーがあるという、前記読み取り保護ビットの少なくとも一つの局面にのみ基づく各々の確率に従って実行され、前記少なくとも一つの局面が、前記読み取り保護ビットの各々の有効位と、前記読み取り保護ビットの各々のビット・ページとからなるグループから選択される局面を含み、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、コンピュータで読み取り可能な記憶メディア。
【請求項２５】
複数のマルチビット・セルを含むメモリ内に記憶される複数のデータ・ビットを読み取る方法であって、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによって記憶が実行されて、記憶ビットの各複数がセルの各々に記憶されているとき、
（ａ）セルを読むことによって、各セルに対する各複数の読み取りビットを得るステップ、そして
（ｂ）パリティ・ビットに対応する前記読み取りビットに従って、データ・ビットに対応する前記読み取りビットを訂正するステップからなり、前記訂正が、前記読み取りビットの少なくとも二つにエラーがあるという、前記読み取りビットの各々の値にのみ基づく各々の確率に従って実行され、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、方法。
【請求項２６】
複数のマルチビット・セルを含むメモリのための、メモリ内に記憶されたデータを、請求項２５の方法を用いて読み取るコントローラ。
【請求項２７】
（ａ）複数のマルチビット・セルを含むメモリ、そして
（ｂ）前記メモリを制御するための、請求項２６のコントローラからなる、メモリ・デバイス。
【請求項２８】
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによってデータ・ビットを記憶するため、記憶ビットの各複数がセルの各々に記憶されているとき、コンピュータで読み取り可能なコードが、
（ａ）セルを読むことによって、各セルに対する各々の複数の読み取りビットを得るためのプログラム・コード、そして
（ｂ）パリティ・ビットに対応する前記読み取りビットに従って、データ・ビットに対応する前記読み取りビットを訂正するためのプログラム・コードからなり、前記訂正が、前記読み取りビットの少なくとも二つにエラーがあるという、前記読み取りビットの各々の値にのみ基づく各々の確率に従って実行され、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、コンピュータで読み取り可能な記憶メディア。
【請求項２９】
複数のマルチビット・セルを含むメモリ内に記憶される複数のデータ・ビットを読み取る方法であって、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによって記憶が実行されて、各複数の保護ビットがセルの各々に記憶されているとき、
（ａ）セルを読むことによって、各セルに対する各複数の読み取り保護ビットを得るステップ、そして
（ｂ）読み取り保護ビットからデータ・ビットを回復させるステップからなり、前記回復が、前記読み取り保護ビットの少なくとも二つにエラーがあるという、前記読み取り保護ビットの各々の値にのみ基づく各々の確率に従って実行され、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、方法。
【請求項３０】
複数のマルチビット・セルを含むメモリのための、メモリ内に記憶されたデータを、請求項２９の方法を用いて読み取るコントローラ。
【請求項３１】
（ａ）複数のマルチビット・セルを含むメモリ、そして
（ｂ）前記メモリを制御するための、請求項３０のコントローラからなる、メモリ・デバイス。
【請求項３２】
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによってデータ・ビットが記憶されて、各複数の保護ビットがセルの各々に記憶されているとき、コンピュータで読み取り可能なコードが、
（ａ）セルを読むことによって、各セルに対する各々の複数の読み取り保護ビットを得るためのプログラム・コード、そして
（ｄ）前記読み取り保護ビットからデータ・ビットを回復させるためのプログラム・コードからなり、前記回復が、前記読み取り保護ビットの少なくとも二つにエラーがあるという、前記読み取り保護ビットの各々の値にのみ基づく各々の確率に従って実行され、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、コンピュータで読み取り可能な記憶メディア。
【請求項３３】
複数のマルチビット・セルを含むメモリ内に記憶される複数のデータ・ビットを読み取る方法であって、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによって記憶が実行されて、記憶ビットの各複数がセルの各々に記憶されているとき、
（ａ）セルを読むことによって、各セルに対する各複数の読み取りビットを得るステップ、そして
（ｂ）パリティ・ビットに対応する前記読み取りビットに従って、データ・ビットに対応する前記読み取りビットを訂正するステップからなり、前記訂正が、前記読み取りビットの少なくとも二つにエラーがあるという、前記読み取りの結果として得られる情報に少なくとも部分的に基づく各々の確率に従って実行され、前記情報が前記読み取りビットの各々の値に制限されており、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、方法。
【請求項３４】
複数のマルチ・ビットセルを含むメモリのための、メモリ内に記憶されたデータを、請求項３３の方法を用いて読み取るコントローラ。
【請求項３５】
（ａ）複数のマルチビット・セルを含むメモリ、そして
（ｂ）前記メモリを制御するための、請求項３４のコントローラからなる、メモリ・デバイス。
【請求項３６】
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによってデータ・ビットを記憶するため、記憶ビットの各複数がセルの各々に記憶されているとき、コンピュータで読み取り可能なコードが、
（ａ）セルを読むことによって、各セルに対する各々の複数の読み取りビットを得るためのプログラム・コード、そして
（ｂ）パリティ・ビットに対応する前記読み取りビットに従って、データ・ビットに対応する前記読み取りビットを訂正するためのプログラム・コードからなり、前記訂正が、前記読み取りビットの少なくとも二つにエラーがあるという、前記読み取りの結果として得られる情報に少なくとも部分的に基づく各々の確率に従って実行され、前記情報が前記読み取りビットの各々の値に制限されており、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、コンピュータで読み取り可能な記憶メディア。
【請求項３７】
複数のマルチビット・セルを含むメモリ内に記憶される複数のデータ・ビットを読み取る方法であって、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによって記憶が実行されて、各複数の保護ビットがセルの各々に記憶されているとき、
（ａ）セルを読むことによって、各セルに対する各複数の読み取り保護ビットを得るステップ、そして
（ｂ）読み取り保護ビットからデータ・ビットを回復させるステップからなり、前記回復が、前記読み取り保護ビットの少なくとも二つにエラーがあるという、前記読み取りの結果として得られる情報に少なくとも部分的に基づく各々の確率に従って実行され、前記情報が前記読み取り保護ビットの各々の値に制限され、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、方法。
【請求項３８】
複数のマルチビット・セルを含むメモリのための、メモリ内に記憶されたデータを、請求項３７の方法を用いて読み取るコントローラ。
【請求項３９】
（ａ）複数のマルチビット・セルを含むメモリ、そして
（ｂ）前記メモリを制御するための、請求項３８のコントローラからなる、メモリ・デバイス。
【請求項４０】
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによってデータ・ビットが記憶されて、各複数の保護ビットがセルの各々に記憶されているとき、コンピュータで読み取り可能なコードが、
（ａ）セルを読むことによって、各セルに対する各々の複数の読み取り保護ビットを得るためのプログラム・コード、そして
（ｄ）前記読み取り保護ビットからデータ・ビットを回復させるためのプログラム・コードからなり、前記回復が、前記読み取り保護ビットの少なくとも二つにエラーがあるという、前記読み取りの結果として得られる情報に少なくとも部分的に基づく各々の確率に従って実行され、前記情報が前記読み取り保護ビットの各々の値に制限され、少なくとも一つの前記確率が、少なくとも一つの他の前記確率と異なる、コンピュータで読み取り可能な記憶メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルデータのエラー訂正に関し、より詳しくは、セルにつき複数のビットを記憶するフラッシュメモリ・デバイスのためのエラー訂正方法に関する。
【背景技術】
【０００２】
フラッシュメモリ・デバイスは、長年知られている。フラッシュメモリ内の各セルは、典型的に、一ビットの情報を記憶する。セルの二つの状態をサポートすることによってビットを記憶するのが、伝統的な方法であり、一方の状態が論理「０」を表し、他方の状態が論理「１」を表す。フラッシュメモリ・セル内の二つの状態は、セルのチャネル（セルのトランジスタのソースおよびドレイン素子を結合する領域）上方にフローティングゲートを設け、そしてフローティングゲート内に蓄えられる充電量に二つの有効な状態を設けることによって具現している。典型的に、一方の状態が、フローティングゲート内にゼロ電荷を持ち、消去後の、セルに書き込みがない初期状態を表す（一般的に、状態「１」を表すと定義する）。そして、他方の状態が、フローティングゲート内にいくらかの量の陰電荷を持つ（一般的に、状態「０」を表すと定義する）。ゲート内に陰電荷を持たせることによって、セルのトランジスタのスレショルド電圧（すなわち、トランジスタを導通状態にするためにトランジスタの制御ゲートへ適用しなければならない電圧）が上昇する。このため、セルのスレショルド電圧をチェックすることによって、記憶ビットを読み取ることが可能である。スレショルド電圧が高い状態であれば、ビット値は「０」であり、また、スレショルド電圧が低い状態であれば、ビット値は「１」である。実際には、セルのスレショルド電圧を正確に読み取る必要はない。必要なすべては、現在セルが二つの状態のいずれにあるのかを、正しく識別することである。この目的では、これら二つの状態の中央に位置する基準電圧値に対して比較し、セルのスレショルド電圧がこの基準値よりも低いか、あるいは高いかを判定するだけで十分である。
【０００３】
図１Ａは、これがどのように機能するのかを視覚的に示す。詳しくは、図１Ａは、かなりの数のセルにおけるスレショルド電圧の分布を表す。フラッシュメモリのセルは、（不純物濃度における小さな相違、または、けい素構造における欠陥から）それらの特徴および作用が必ずしも同一ではないため、すべてのセルに対して同じプログラミング・オペレーションを適用しても、セルのすべてが必ずしも同じスレショルド電圧を持つようになるわけではない。（なお、歴史的理由により、データをフラッシュメモリに書き込むことは、一般的に、フラッシュメモリを「プログラムする」と呼ぶ。）それよりも、スレショルド電圧は、図１Ａに示すように分布する。値「１」を記憶しているセルは、典型的に負のスレッショルド電圧を持ち、ほとんどのセルが、図１Ａの左側ピークで示す値の近くにスレショルド電圧を持つ。そして少数のセルが、より低い、あるいはより高いスレショルド電圧を持つ。同様に、値「０」を記憶しているセルは、典型的に正のスレッショルド電圧を持ち、ほとんどのセルが、図１Ａの右側のピークで示す値の近くにスレショルド電圧を持つ。そして少数のセルが、より低い、あるいはより高いスレショルド電圧を持つ。
【０００４】
近年、因習的に略して「マルチ・レベル・セル」またはＭＬＣと呼ぶ技術を用いた、新しい種類のフラッシュメモリが市場に出回ってきている。（以前の種類のフラッシュ・セルも、上述のように二つのレベル、すなわち複数レベルを持つので、この命名はまぎらわしいものである。したがって、本文では、これらフラッシュ・セルの二つの種類を、「シングルビット・セル」（ＳＢＣ）、そして「マルチビット・セル」（ＭＢＣ）と呼ぶ。）ＭＢＣフラッシュがもたらした改善は、各セルに２ビット以上を記憶できることである。単一セルが２ビットの情報を記憶するためには、セルは、四つの異なる状態のうちの一つになることが可能でなければならない。セルの「状態」を、そのスレショルド電圧によって表すことから、２ビットＭＢＣセルが、そのスレショルド電圧に対して、四つの異なる有効な範囲をサポートするべきであることは明らかである。図１Ｂは、典型的な２ビットＭＢＣセルに対するスレショルド電圧分布を示す。予想通り、図１Ｂには、各々が一つの状態に対応する四つのピークがある。ＳＢＣの場合と同様、各々の状態は、実際には範囲であり、単一数ではない。セルの内容を読み取るときに保証すべきすべては、セルのスレショルド電圧が位置する範囲を正しく識別することである。ＭＢＣフラッシュメモリの従来の技術による例については、ハラリ氏の米国特許第5,434,825号を参照する。
【０００５】
同様に、単一セルが３ビットの情報を記憶するためには、セルは、８つの異なる状態のうちの一つになることが可能でなければならない。したがって、３ビットＭＢＣセルは、そのスレショルド電圧に対して、８つの異なる有効な範囲をサポートすべきである。図１Ｃは、典型的な３ビットＭＢＣセルに対するスレショルド電圧分布を示す。予想通り、図１Ｃには、各々が一つの状態に対応する８つのピークがある。図１Ｄは、４ビットＭＢＣセルに対するスレショルド電圧分布を示す。この場合、１６の状態を、１６のスレショルド電圧範囲によって表す必要がある。
【０００６】
ＭＢＣセルに２ビットを、四つの状態を介してコード化するとき、図１Ｂの（典型的に、負のスレショルド電圧を持つ）左端の状態が、両ビットが値「１」であるケースを表すのが一般的である。（下記の考察において、以下の表記を用いる。セルの二つのビットを「下位ビット」および「上位ビット」と呼ぶ。ビットの明示値は、下位ビット値を右側にして、［「上位ビット」「下位ビット」］の形式で書き表す。したがって、下位ビットが「０」で、上位ビットが「１」であるケースは、「１０」と記述する。この用語および表記の選択は任意であり、他の名称や符号化も可能であることは理解すべきである。）この表記を用いると、左端の状態は、「１１」のケースを表す。他の三つの状態には、典型的に、左から右へ次のように割り当てる。「１０」、「００」、「０１」。この符号化を用いたＭＢＣ−ＮＡＮＤフラッシュメモリの実施例については、チェン氏の米国特許第6,522,580号を参照できる。この特許は、すべての目的において参照によって本文に完全に記述したように含むものとする。チェン特許の、特に  図８を参照のこと。タナカ氏の米国特許第6,643,188号にも、ＭＢＣ−ＮＡＮＤフラッシュメモリの類似実施例がある。しかし、図７を見ると、状態のビット・エンコーディングへの割り当てが、次のように異なることが分かる。「１１」、「１０」、「０１」、「００」。チェン・エンコーディングは、図１Ｂに図解したものである。
【０００７】
上記の用語および表記を、以下のように、１セルにつき２ビットを超えるケースへ拡張する。左端の書き込みのない状態は、「オール１」（「１．．．１」）を表し、ストリング「１．．．１０」は、セルの最下位ビットのみが「０」に書き込まれたケースを表し、そして、ストリング「０１．．．１」は、セルの最上位ビットのみが「０」に書き込まれたケースを表す。
【０００８】
ＭＢＣセルの内容を読み取るときは、セルのスレショルド電圧が位置する範囲を正しく識別しなければならない。しかし、この場合、単に一つの基準電圧に比較することによっては、必ずしもこのことを達成できるとは限らない。したがって、複数の比較が必要となる。例えば、図１Ｂに図解したケースでは、下位ビットを読み取るのに、セルのスレショルド電圧を、まず、参照比較電圧Ｖ1に比較し、その比較結果に応じて、次に、ゼロ参照比較電圧あるいは参照比較電圧Ｖ2に比較する。択一的に、スレショルド電圧を、ゼロ基準電圧および参照比較電圧Ｖ2に無条件に比較することによって、下位ビットを読み取ることもできるが、この場合も、２回の比較が必要である。１セルにつき２ビットを超えるケースでは、より多くの比較が必要となる。
【０００９】
単一のＭＢＣセルのビットのすべては、同じフラッシュ・ページに属する場合もあるし、あるいは、異なるページへ割り当てられることもある。その結果、例えば、４ビット・セルにおいて、最下位ビットが０ページにあり、次のビットが１ページにあり、その次のビットが２ページにあり、そして最上位ビットが３ページにある、ということも起こる。（ページは、フラッシュメモリ内に別々に書き込むことができるデータの最小塊である）。
【００１０】
ラッサー氏の米国特許出願第11/035,807号は、セルにつき複数ビットを記憶するフラッシュメモリ・セルのビットをエンコーディングする方法を扱っている。ラッサー氏の米国特許出願第11/061,634号およびムリン氏の米国特許出願第11/078,478号は、マルチビット・フラッシュ・セルの異なる論理ページに亘るエラー分布の問題に関して、それらビット・エンコーディング方法による影響を扱っている。詳しくは、ラッサー’６３４は、ビット・エンコーディングの、論理から物理へのマッピングを用いることによって、データのユーザから見たときに、また、エラー訂正コード（ＥＣＣ）回路で処理する際に、異なる論理ページに亘って均一なエラー分布を得るための方法を開示している。そして、ムリンは、物理ビット・ページ間での論理ページのインターリービングを用いることによって、データのユーザから見たときに、また、ＥＣＣ回路で処理する際に、異なる論理ページに亘って均一なエラー分布を達成するための方法を開示している。従来の技術によるこれら三つの特許出願は、すべての目的に対して、参照により本文に完全に記述したものとする。
【００１１】
ラッサー’６３４およびムリンの両方は、ＥＣＣ回路の設計目的であるエラー率の減少という同じゴールを目指している。両出願に示された例では、15,000の４ビットＭＢＣフラッシュ・メモリ・セルのグループが、各々15,000ビットの、４論理ページのデータを記憶するために使用されている。推定セル・エラー率は、1,000分の１である。その結果、ビット・エラーの最適数は１５であり、論理ページ内の最適平均ビット・エラーは、3.75である。この例は、提案の新考案を用いない限り、特定の論理ページが非常に高いビット・エラー率を持つ可能性があることを示す。この例では、６ビットエラーである。これは、セル内に記憶したすべてのビットに亘る全体的な平均ビット・エラーが、（60,000分の15、または4,000分の１と）比較的に低くても、特別な処置を取らない限り、論理ページ内のエラーを訂正する処理を行うＥＣＣ回路を、比較的高い平均ビット・エラー率（その例では、15,000分の６、または2,500分の１）を処理できるよう設計しなければならないことを意味する。
【００１２】
本出願の発明者による、「ＭＢＣフラッシュメモリにおけるエラー訂正の方法」という名称の、（本文において「リツィン氏ら」として言及する）最近の米国特許出願は、同じゴールに対して、異なるアプローチを開示している。この特許出願は、すべての目的に対して、参照により本文に完全に記述したものと見なす。エラー訂正の目的で論理ページの各々に対して別々に対処する代わりに、リツィン氏らは、同じグループのセルを共有するすべての論理ページに同時に対処し、それらすべての複数の論理ページのすべてのビットを一つのＥＣＣコード・ワードとして処理している。これは、ＥＣＣ回路が対処しなければならない平均ビット・エラー率を減少させる。上記の例では、僅か4,000分の１となる。
【００１３】
ほとんどのＥＣＣ実施例では、すべてのビットが同じに扱われ、どのビットも、平均よりも信頼性が高い、あるいは信頼性が低いと見なされることはない。しかし、上記から明白であるように、一グループのＭＢＣフラッシュ・メモリ・セルから複数の論理ページを読み取るとき、異なるビット・ページ内に記憶したビットは、異なるエラー確率を持つ。上記で考察した、エラー分布を平均化するための、従来の技術による方法のいくつか（ラッサー’６３４、ムリン）は、すべての論理ページに対して平均で同数のビット・エラーを持たせるという点では成功であるが、異なる個々のビットは、なお、異なる信頼性を持つ。
【００１４】
エラー訂正すべきコード・ワードの個々のビットのビット・エラー率に関する情報は、エラー訂正モジュールにとって非常に有用である。これを、非常に簡略化した例を用いて説明する。パリティ・ビットによって，４ビットの一グループがシングルエラーに対して保護されており、エラーが見つかれば、ＥＣＣが、反転すべきビットの一つを選んで、これを訂正結果として提供する、と仮定する。コード・ワードの全５ビット（四つのデータ・ビットと、一つのパリティ・ビット）に、同程度の確率でエラーが起こり得るなら、エラーを検出したときにどのビットを反転させるべきかの決定は、ランダムに行うのみである。これは、２０％の正しい決定に至る。しかし、ビットの一つが、コード・ワード内の他の４ビットのどれよりも、６倍信頼できないことが分かっているならば、エラーを検出したときにそのビットを反転するよう選択することは、６０％の正しい決定に至る。この例は、極度に単純化したものであり、現実のＥＣＣ実施例における計算および決定処理の方法はかなり複雑であるが、エラー訂正スキームの性能を改善するための、個々のビットに対する信頼性データの有用性を示すという目的を果たしている。
【００１５】
追加の信頼性情報が、ＥＣＣ回路の、異なるビットの処理方法に影響を及ぼす、従来の技術によるシステムがある。例えば、２００４年６月１６日出願の、「フラッシュメモリの信頼性を向上させる方法」と名称がある、バン氏の米国特許出願第10/867,645号を参照のこと。バン氏らは、フラッシュ・セル内に記憶したデータを、セルの状態をその可能な値へ分別するのに必要な能力よりも高い分解能を用いて読み取る。例えば、セルが、１６の状態の一つに書き込まれる（すなわち、セルが４ビットを記憶する）場合、あたかも５ビットを持つかのように、セルを読み取る。これを、バン氏らは「分別レベル」を用いる、と呼ぶが、他の人々は、「ソフト・ビット」等の、異なる用語を用いる。他の人々は、また、複数ビットの追加の読み取りを用いて、さらに高い分解能を提供する。その高分解能の読み取りが提供する追加のビットは、その状態を近隣の状態から分離する境界に比べた（実際に読み取った）セルの正確な状態に関する証拠を提供するため、他の「真の」データ・ビットの信頼性を推定するのに、ＥＣＣモジュールによって用いる。境界の近くに位置するセルは、帯域の中央に位置し、かつ境界から遠隔にあるセルよりも、エラーを発生しやすい。また、このアプローチを利用する従来の技術による通信システムも存在する。この場合、多くの追加の高分解能ビットは、ときどき、チャネルのエラー訂正性能を改善するために用いられる。
【００１６】
すべてのこれら従来の技術によるシステムでは、追加の信頼性情報は、記憶ビット自体にのみ固有な情報への、追加情報である。そのようなＥＣＣは、記憶ビット自体に固有なことのみに基づくなら、単純化が可能である。例えば、追加の信頼性情報に基づくＥＣＣは、セル内に記憶したビットを読み取るのに必要な分解能を超える高分解能でＭＢＣフラッシュメモリのセルを読み取ることなく、具現可能である。
【発明の開示】
【発明が解決しようとする課題】
【００１７】
本発明の範囲は、記憶データにのみ固有である追加の信頼性情報に基づいて、ＭＢＣメモリ内に記憶されたデータをエラー訂正して読み取る三つの方法を含む。第一の方法では、追加の信頼性情報は、明示的に、読み取りビットの信頼性の演繹的な推定値である。第二の方法では、追加の情報は、暗示的に、読み取りビットの信頼性の演繹的な推定値である。第三の方法では、読み取りビットの少なくともいくつかの信頼性は、読み取りビットの値から推論される。
【００１８】
本発明のＥＣＣは、体系的でも、あるいは非体系的でもよい。体系的なＥＣＣにおいては、エラー訂正は、本来のデータ・ビットを取り上げ、それらにいくつかのパリティ・ビットを追加し、本来のデータ・ビットとパリティ・ビットの両方を記憶する。したがって、本来のデータ・ビットは、エンコーディング・プロセスによって維持されるため、記憶ビット間で確認することができる。後に、記憶ビットを読み取るとき、データ・ビットとパリティ・ビットとの両方が読み出されるため、パリティ・ビットによって、読み出したデータ・ビットにおけるエラーの訂正が可能である。非体系的なＥＣＣにおいては、本来のデータ・ビットは維持されず、また、記憶されない。その代わり、エンコーディング・プロセスは、本来のデータ・ビットを、実際に記憶されるビットである（本文において「保護ビット」と呼ぶ）ビットのより大きなグループへ変換する。記憶ビットを読み取るときは、記憶ビットから本来のビットが再生される。特定な本来のデータ・ビットと特定な記憶ビットとの間には、直接的な一致は全くない。
【００１９】
本発明によれば、複数のマルチビット・セルを含むメモリ内に記憶された複数のデータ・ビットを読み取る方法が提供される。データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによって記憶が実行されて、記憶ビットの各複数がセルの各々に記憶されているとき、この方法は、以下のステップを含む。（ａ）セルを読むことによって、各セルに対する各複数の読み取りビットを得るステップ。そして（ｂ）パリティ・ビットに対応する読み取りビットに従って、データ・ビットに対応する読み取りビットを訂正するステップ。この場合、訂正は、読み取りビットの少なくとも二つにエラーがあるという各々の確率の演繹的な推定値に従って実行される。また、少なくとも一つの推定値は、少なくとも一つの他の推定値とは異なる。
【００２０】
本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによってデータ・ビットを記憶するため、記憶ビットの各複数がセルの各々に記憶されているとき、コンピュータで読み取り可能なコードは、以下を含む。（ａ）セルを読むことによって、各セルに対する各々の複数の読み取りビットを得るためのプログラム・コード。そして（ｂ）パリティ・ビットに対応する読み取りビットに従って、データ・ビットに対応する読み取りビットを訂正するためのプログラム・コード。この場合、訂正は、読み取りビットの少なくとも二つにエラーがあるという各々の確率の演繹的な推定値に従って実行される。また、少なくとも一つの推定値は、少なくとも一つの他の推定値とは異なる。
【００２１】
本発明によれば、複数のマルチビット・セルを含むメモリ内に記憶された複数のデータ・ビットを読み取る方法が提供される。データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによって記憶が実行されて、各複数の保護ビットがセルの各々に記憶されているとき、この方法は、以下のステップを含む。（ａ）セルを読むことによって、各セルに対する各複数の読み取り保護ビットを得るステップ。そして（ｂ）読み取り保護ビットからデータ・ビットを回復させるステップ。この場合、回復は、読み取り保護ビットの少なくとも二つにエラーがあるという各々の確率の演繹的な推定値に従って実行される。また、少なくとも一つの推定値は、少なくとも一つの他の推定値とは異なる。
【００２２】
本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによってデータ・ビットが記憶されて、各複数の保護ビットがセルの各々に記憶されているとき、コンピュータで読み取り可能なコードは、以下を含む。（ａ）セルを読むことによって、各セルに対する各々の複数の読み取りビットを得るためのプログラム・コード。そして（ｂ）読み取り保護ビットからデータ・ビットを回復させるためのプログラム・コード。この場合、回復は、読み取り保護ビットの少なくとも二つにエラーがあるという各々の確率の演繹的な推定値に従って実行される。また、少なくとも一つの推定値は、少なくとも一つの他の推定値とは異なる。
【００２３】
本発明によれば、複数のマルチビット・セルを含むメモリ内に記憶された複数のデータ・ビットを読み取る方法が提供される。データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによって記憶が実行されて、記憶ビットの各複数がセルの各々に記憶されているとき、この方法は、以下のステップを含む。（ａ）セルを読むことによって、各セルに対する各複数の読み取りビットを得るステップ。そして（ｂ）パリティ・ビットに対応する読み取りビットに従って、データ・ビットに対応する読み取りビットを訂正するステップ。この場合、訂正は、読み取りビットの少なくとも二つにエラーがあるという、読み取りビットの少なくとも一つの局面にのみ基づく各々の確率に従って実行される。この少なくとも一つの局面は、読み取りビットの各々の有効位、そして読み取りビットの各々のビット・ページからなるグループから選択される一つの局面を含む。この場合、少なくとも一つの確率は、少なくとも一つの他の確率と異なる。
【００２４】
本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによってデータ・ビットを記憶するため、記憶ビットの各複数がセルの各々に記憶されているとき、コンピュータで読み取り可能なコードは、以下を含む。（ａ）セルを読むことによって、各セルに対する各々の複数の読み取りビットを得るためのプログラム・コード。そして（ｂ）パリティ・ビットに対応する読み取りビットに従って、データ・ビットに対応する読み取りビットを訂正するためのプログラム・コード。この場合、訂正は、読み取りビットの少なくとも二つにエラーがあるという、読み取りビットの少なくとも一つの局面にのみ基づく各々の確率に従って実行される。この少なくとも一つの局面は、読み取りビットの各々の有効位、そして読み取りビットの各々のビット・ページからなるグループから選択される一つの局面を含む。この場合、少なくとも一つの確率は、少なくとも一つの他の確率と異なる。
【００２５】
本発明によれば、複数のマルチビット・セルを含むメモリ内に記憶された複数のデータ・ビットを読み取る方法が提供される。データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによって記憶が実行されて、各複数の保護ビットがセルの各々に記憶されているとき、この方法は、以下のステップを含む。（ａ）セルを読むことによって、各セルに対する各複数の読み取り保護ビットを得るステップ。そして（ｂ）読み取り保護ビットからデータ・ビットを回復させるステップ。この場合、回復は、読み取り保護ビットの少なくとも二つにエラーがあるという、読み取り保護ビットの少なくとも一つの局面にのみ基づく各々の確率に従って実行される。この少なくとも一つの局面は、読み取り保護ビットの各々の有効位、そして読み取り保護ビットの各々のビット・ページからなるグループから選択される一つの局面を含む。この場合、少なくとも一つの確率は、少なくとも一つの他の確率と異なる。
【００２６】
本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによってデータ・ビットが記憶されて、各複数の保護ビットがセルの各々に記憶されているとき、コンピュータで読み取り可能なコードは、以下を含む。（ａ）セルを読むことによって、各セルに対する各々の複数の読み取りビットを得るためのプログラム・コード。そして（ｂ）読み取り保護ビットからデータ・ビットを回復させるためのプログラム・コード。この場合、回復は、読み取り保護ビットの少なくとも二つにエラーがあるという、読み取り保護ビットの少なくとも一つの局面にのみ基づく各々の確率に従って実行される。この少なくとも一つの局面は、読み取り保護ビットの各々の有効位、そして読み取り保護ビットの各々のビット・ページからなるグループから選択される一つの局面を含む。この場合、少なくとも一つの確率は、少なくとも一つの他の確率と異なる。
【００２７】
本発明によれば、複数のマルチビット・セルを含むメモリ内に記憶された複数のデータ・ビットを読み取る方法が提供される。データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによって記憶が実行されて、記憶ビットの各複数がセルの各々に記憶されているとき、この方法は、以下のステップを含む。（ａ）セルを読むことによって、各セルに対する各複数の読み取りビットを得るステップ。そして（ｂ）パリティ・ビットに対応する読み取りビットに従って、データ・ビットに対応する読み取りビットを訂正するステップ。この場合、訂正は、読み取りビットの少なくとも二つにエラーがあるという、読み取りビットの各々の値にのみ基づく各々の確率に従って実行される。この場合、少なくとも一つの確率は、少なくとも一つの他の確率と異なる。
【００２８】
本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数のパリティ・ビットを計算し、それから、データ・ビットおよびパリティ・ビットをメモリのセル内の記憶ビットとして記憶することによってデータ・ビットを記憶するため、記憶ビットの各複数がセルの各々に記憶されているとき、コンピュータで読み取り可能なコードは、以下を含む。（ａ）セルを読むことによって、各セルに対する各々の複数の読み取りビットを得るためのプログラム・コード。そして（ｂ）パリティ・ビットに対応する読み取りビットに従って、データ・ビットに対応する読み取りビットを訂正するためのプログラム・コード。この場合、訂正は、読み取りビットの少なくとも二つにエラーがあるという、読み取りビットの各々の値にのみ基づく各々の確率に従って実行される。また、少なくとも一つの確率は、少なくとも一つの他の確率と異なる。
【００２９】
本発明によれば、複数のマルチビット・セルを含むメモリ内に記憶された複数のデータ・ビットを読み取る方法が提供される。データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによって記憶が実行されて、各複数の保護ビットがセルの各々に記憶されているとき、この方法は、以下のステップを含む。（ａ）セルを読むことによって、各セルに対する各複数の読み取り保護ビットを得るステップ。そして（ｂ）読み取り保護ビットからデータ・ビットを回復させるステップ。この場合、回復は、読み取り保護ビットの少なくとも二つにエラーがあるという、読み取り保護ビットの各々の値にのみ基づく各々の確率により実行される。また、少なくとも一つの確率は、少なくとも一つの他の確率と異なる。
【００３０】
本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、複数のマルチビット・セルを含んで複数のデータ・ビットを記憶するメモリを管理するためのものであり、データ・ビットに対応する複数の保護ビットを計算し、それから、メモリのセル内に保護ビットを記憶することによってデータ・ビットが記憶されて、各複数の保護ビットがセルの各々に記憶されているとき、コンピュータで読み取り可能なコードは、以下を含む。（ａ）セルを読むことによって、各セルに対する各々の複数の読み取り保護ビットを得るためのプログラム・コード。そして、（ｄ）読み取り保護ビットからデータ・ビットを回復させるためのプログラム・コード。この場合、回復は、読み取り保護ビットの少なくとも二つにエラーがあるという、読み取り保護ビットの各々の値にのみ基づく各々の確率により実行される。また、少なくとも一つの確率は、少なくとも一つの他の確率と異なる。
【００３１】
本発明の方法の第一の実施例は、ＭＢＣメモリ内に記憶したデータを、体系的なＥＣＣを用いて訂正することに向けられる。本発明の方法の第二の実施例は、ＭＢＣメモリ内に記憶したデータを、非体系的なＥＣＣを用いて訂正することに向けられる。両方の方法の両実施例における第一のステップは、記憶ビットを読み出すことによって、関連したビットが記憶された各セルに対する各々の複数の「読み取り」ビットを得る。セルを読み取る際のエラーにより、セルの「読み取り」ビットは、セル内に記憶したビットと同一ではない可能性がある。まさに、読み取りビットと記憶ビットとの間のこの相違の可能性こそが、ＥＣＣが克服すべきことである。
【００３２】
本発明による第一の方法の第一の実施例では、データ・ビットに対応する読み取りビットが、パリティ・ビットに対応する読み取りビットに従って訂正される。この訂正は、読み取りビットの二つ以上にエラーがあるという確率の演繹的な推定値を考慮する。この場合、すべての推定値が等しいというわけではない。
【００３３】
本発明による第一の方法の第二の実施例では、読み取り保護ビットからデータ・ビットを回復する。この回復は、読み取りビットの二つ以上にエラーがあるという確率の演繹的な推定値を考慮する。この場合、すべての推定値が等しいというわけではない。
【００３４】
本発明による第二の方法の第一の実施例では、データ・ビットに対応する読み取りビットが、パリティ・ビットに対応する読み取りビットに従って訂正される。この訂正は、読み取りビットの二つ以上にエラーがあるという、読み取りビットの少なくとも一つの局面にのみ基づく確率を考慮する。この場合、すべての確率が等しいというわけではない。これらの確率を推定するために用いる読み取りビットの局面は、読み取りビットの有効位、あるいは読み取りビットのビット・ページ、または両方を含まなければならない。
【００３５】
本発明による第二の方法の第二の実施例では、読み取り保護ビットからデータ・ビットを回復する。この回復は、読み取り保護ビットの二つ以上にエラーがあるという、読み取り保護ビットの少なくとも一つの局面にのみ基づく確率を考慮する。この場合、すべての確率が等しいというわけではない。これらの確率を推定するために用いる読み取り保護ビットの局面は、読み取りビットの有効位、あるいは読み取りビットのビット・ページ、または両方を含まなければならない。
【００３６】
本発明による第三の方法の第一の実施例では、データ・ビットに対応する読み取りビットが、パリティ・ビットに対応する読み取りビットに従って訂正される。この訂正は、読み取りビットの二つ以上にエラーがあるという、読み取りビットの値にのみ基づく確率を考慮する。この場合、すべての確率が等しいというわけではない。
【００３７】
本発明による第三の方法の第二の実施例では、読み取り保護ビットからデータ・ビットを回復する。この回復は、読み取り保護ビットの二つ以上にエラーがあるという、読み取り保護ビットの値にのみ基づく確率を考慮する。この場合、すべての確率が等しいというわけではない。
【００３８】
本発明による第一の方法では、演繹的な推定値の少なくとも二つが、複数のセルのうちの一つの共通セルの読み取りビットに対するもの、あるいは読み取り保護ビットに対するものであることが好ましい。代替的に、演繹的な推定値の少なくとも二つが、異なるセルの読み取りビットに対するもの、あるいは読み取り保護ビットに対するものである。
【００３９】
本発明による第一の方法においては、演繹的な確率が、関連ビットの有効位に依存することが好ましい。ＭＢＣセル内に記憶されたビットの「有効位」は、そのＭＢＣセル内に記憶された二進数におけるビットの位置である。例えば、４ビットを記憶するＭＢＣセルは、０から１５までの二進数を記憶する。すなわち、４ビット、最下位ビット、下位ビット、上位ビット、そして最上位ビットを持つ。代替的に、演繹的な確率は、関連ビットのビット・ページに依存する。ＭＢＣフラッシュメモリにおいては、共通有効位にあるすべてのビットを、同じ論理ビット・ページ内に集めるのが一般的である。この場合、演繹的な確率のこれらの二つの依存関係は同等である。
【００４０】
本発明の範囲は、また、メモリ内に記憶したデータを、本発明による方法の一つを用いて回復させる、ＭＢＣメモリのためのコントローラ、ＭＢＣメモリと本発明によるコントローラとを含むメモリ・デバイス、そして、本発明の方法の一つに従ってメモリを管理するための、コンピュータで読み取り可能なコードを実装させた、コンピュータで読み取り可能な記憶メディアを含む。
【発明を実施するための最良の形態】
【００４１】
本発明は、エラーが起こっている各セル内に記憶された種々のビットの確率についての知識を利用する、マルチビット・パー・セル・メモリのためのエラー訂正方法に関する。
【００４２】
本発明によるエラー訂正の原理および作用は、図面およびその説明を参照することによって、より良く理解することができる。
【００４３】
本発明の最初の二つの方法は、ＭＢＣフラッシュメモリ・デバイスから読み出したデータにおけるエラーを、個々のビットがデバイスのセル内に保存される位置に由来する信頼性情報（例えば、各セルのビットが、異なるページに属するＭＢＣフラッシュメモリ・デバイスの場合、個々のビットが、どのビット・ページ内に保存されるのか）を利用して訂正するための、改善された方法である。本発明の第三の方法は、ＭＢＣフラッシュメモリ・デバイスから読み出したデータにおけるエラーを、共通セルを共有する異なるビット間の相関に由来する信頼性情報を用いて訂正するための、改善された方法である。提案の方法は、訂正プロセスに用いられるＥＣＣコード・ワードが、共用セル内に存在する複数のビットを含むケースに適用できる。これは、リツィン氏らの方法が、ＭＢＣフラッシュ・デバイスから読み出したデータにおけるエラーを訂正するために採用されるときに、常に適用できる。
【００４４】
本発明の最初の二つの方法においては、各ビットの物理記憶位置が既知であり、その結果として、その予想エラー率も分かっているという事実を利用する。（本文では、用語「ビットのエラー率」および「ビットの信頼性」を、同じ特徴に関する二つの対向局面として用いる。したがって、同じ特性に言及するのに、これら用語が置換可能に用いられることに注意が必要である）。したがって、ＥＣＣモジュールは、ＥＣＣ計算および決定への出発点として機能するエラーの初期演繹的な確率を各々のビットに割り当てることによって、この情報を利用する。本発明は、特定なＥＣＣスキームまたはアルゴリズムに限定されることはない。そのような初期出発点を利用でき、成功確率、収束時間または他の成功要因に関して、より良いエラー訂正を提供できる、従来の技術による多くのＥＣＣアルゴリズムが存在する。
【００４５】
特に、本発明の最初の二つの方法は、「ソフト」デコーディング・アルゴリズムと共に用いることを意図している。そのようなアルゴリズムは、例えば、ジョージＣ．クラーク、Ｊｒ．およびＪ．ビブ・カインの、デジタル通信のためのエラー訂正コーディング（スプリンガー、1981）、Ｓ．リンおよびＤ．Ｊ．コステロの、エラー制御コーディング：基礎および応用（プレンティス・ホール、1983）、そしてブランカ・ヴセチックおよびジンホン・ユエンの、ターボ・コード：原理および応用（クリュウバー、2000）に記述がある。これらの参照は、通信でのソフトＥＣＣアルゴリズムの使用を目的としているが、当業者には、それらのアルゴリズムを、マルチビット・パー・セル・メモリのエラー訂正にどのように適応できるかは明らかである。
【００４６】
これらの方法は、セルを高分解能で読み取ることにより追加の情報を得る、上記の従来の技術による方法とは異なる。本発明においては、異なる信頼値が、データを読み取る前に決定されるが、これらは、読み取られるデータの実効値には依存しない。この点が、上記の従来の技術による方法とは異なる。別の言葉で言えば、本発明は、個々のビット位置に対するエラーの演繹的な確率を用いることが可能である。そのような確率を実際のデータから得ることができないとしても可能である。他方、従来の技術によるシステムは、そのような確率を実際データから抽出する機能に依存している。本発明は、例えば、フラッシュの販売業者が提供できる確率を利用する。この演繹的な確率の一つの利点は、本発明が、従来の技術による方法よりも簡単に実行できることである。それらの方法とは異なり、本発明は、記憶ビットに加えた追加ビットを抽出したり、操作したりする必要がない。
【００４７】
例えば、ラッサー’６３４およびムリンで議論されている、セルにつき４ビットのビット配列｛１５、１４、１２、１３、９、８、１０、１１、３、２、０、４、６、７、５、１｝を考察する。（これは、図１Ｄに図解したビット配列である。）それらの特許出願に示されているように、最下位ビットは、最高位ビットの６倍エラーを発生しやすい。第二下位ビットは、最高位ビットの５倍エラーを発生しやすい。そして第二高位ビットは、最高位ビットの３倍エラーを発生しやすい。４論理ページのデータを記憶するのに用いられる、1,000分の１の推定セル・エラー率を持つ、セルにつき４ビットの15,000ＭＢＣセルのグループにおいて、各セルの最下位ビットは、６／15,000＝２／5,000の演繹的エラー確率を持ち、各セルの第二下位ビットは、５／15,000＝１／3,000の演繹的エラー確率を持ち、各セルの第二高位ビットは、３／15,000＝１／5,000の演繹的エラー確率を持ち、そして各セルの最高位ビットは、１／15,000の演繹的エラー確率を持つ。
【００４８】
この例においては、ビットの演繹的エラー確率は、ビットの有効係数のみの関数である。同じビット・ページ内のすべてのビットは、エラー発生に関して同じ演繹的な確率を持つ。より一般的には、ビット・ページの若干のビットが、同じビット・ページの他のビットとは異なる演繹的エラー確率を持つことも可能である。
【００４９】
本発明の第三の方法では、ＭＢＣセルの物理ページ・ビット内のビットの位置に由来する信頼情報に加えて、ＥＣＣモジュールが利用可能なもう一つの情報源があるという事実を利用する。ＥＣＣコード・ワードの各ビットが異なるセルに由来するケースに反して、異なるビットのエラーの間に相関が全くなく、コード・ワード内に同じセルに由来する複数のビットが存在するケースでは（リツィン氏らの方法のケースように）、１ビットの値から、同じセル内の他のビットについて値を推測してもよい。フラッシュ・セル内でのすべての誤った状態遷移が、等しい確率で起こるわけではないため、一つのビットからもう一つのビットへと推測を行う。
【００５０】
例えば、セルにつき４ビットのビット配列｛１５，１４，１２，１３，９，８，１０，１１，３，２，０，４，６，７，５，１｝を考察する。セルのデコーディングを、最上位ビットから最下位ビットへ連続的に行うと仮定する。セルの三つの最上位ビットが「１００」として読み取られ、ＥＣＣアルゴリズムによって「１０１」へ訂正されたと仮定する。一つのスレショルド電圧範囲のみのシフトでこれが起こってしまう唯一の経路は、セルが１０（二進数１０１０）として書き込まれて、８（二進数１０００）として読み取られた場合である。他の可能な経路は、次のものである。
【００５１】
セルが１０（二進数１０１０）として書き込まれて、９（二進数１００１）として読み取られた（二つのスレショルド電圧範囲のシフト）。
【００５２】
セルが１１（二進数１０１１）として書き込まれて、８（二進数１０００）として読み取られた（二つのスレショルド電圧範囲のシフト）。
【００５３】
セルが１１（二進数１０１１）として書き込まれて、９（二進数１００１）として読み取られた（三つのスレショルド電圧範囲のシフト）。
【００５４】
これは、最下位ビットが「０」である可能性が、最下位ビットが「１」である可能性よりも非常に高いことを暗示する。
【００５５】
この方法は、また、セルを高分解能で読み取ることによって追加の情報を得る、上記の従来の技術による方法とは異なる。本発明においては、ＥＣＣモジュールに入力されるビットは、データ・ビットと、それらの対応パリティ・ビットのみである。ＥＣＣモジュールが訂正プロセスを実行するために、ＥＣＣモジュールへの（予め定めたデータ非依存入力とは対照的に）他データに依存する入力が提供されることは全くない。上記の従来の技術による方法では、そうではなく、高精度な追加ビットが、セルから算出されて、補助入力としてＥＣＣモジュールへ提供される。
【００５６】
本発明の範囲は、また、コード・ワード内のビットのすべてではないいくつかのみに、平均とは異なる初期確率を割り当てる、より一般的なケースを含む。また、セルを共有するビット間の相関効果のみを、セルのすべてではないいくつかに対して考慮する、より一般的なケースを含む。
【００５７】
これまで、本発明を、「体系的な」エラー訂正スキームに関連させて提示した。上記のように、体系的なエラー訂正コーディングにおいては、本来のデータ・ビットは、エンコーディング・プロセスによって維持されるため、記憶されたビット内に確認可能である。換言すれば、エラー訂正メカニズムは、本来のデータ・ビットを取り上げ、それらに若干のパリティ・ビットを付加して、データ・ビットおよびパリティ・ビットを記憶する。後に、記憶ビットを読み取るとき、データ・ビットおよびパリティ・ビットを読み取るが、パリティ・ビットによって、読み出したデータ・ビットにおけるエラーの訂正が可能であるため、本来のデータ・ビットを生成できる。
【００５８】
しかしながら、本発明は、非体系的なエラー訂正コードに対しても等しく適用できる。上述したように、そのようなコードにおいては、本来のデータ・ビットは維持されず、また記憶されることもない。その代わり、エンコーディング・プロセスは、本来のデータ・ビットを、実際に記憶されるビットである、より大きなグループのビットへ変換する。記憶された保護データ・ビットを読み取るときは、たとえ保護データ・ビットにエラーがあるとしても、本来のデータ・ビットを再生する。非体系的なコードを定義する特性は、特定な本来のデータ・ビットと特定な記憶ビットとの間に、直接的な一致が全くないということである。本来のデータ・ビットは、複数の記憶ビットに「点在する」ため、それら複数の記憶ビットを組み合わせることによってのみ、本来のビット値が明らかになる。
【００５９】
本発明の範囲は、上述のように、ＭＢＣフラッシュメモリ・デバイスからデータ・ビットを読み取るための方法を含む。本発明の範囲は、また、上記の方法に従って、ＭＢＣフラッシュ・メモリ・セルのアレイから読み取るフラッシュメモリ・コントローラを含む。発明の範囲は、また、ＭＢＣフラッシュ・メモリ・セルのアレイと、上記の方法に従ってアレイから読み取るフラッシュメモリ・コントローラとを結合するフラッシュメモリ・デバイスを含む。
【００６０】
再び図面を参照する。図２は、ホスト３０に接続した、本発明によるフラッシュメモリ・デバイス２０の高度なブロック図である。図２は、バン氏の米国特許第5,404,485号を示す図１を適応させたものである。なお、この特許は、すべての目的において、参照により本文に完全に記述したものとする。フラッシュメモリ・デバイス２０は、フラッシュメモリ２４、コントローラ２２およびランダムアクセスメモリ（ＲＡＭ）２６を含む。米国特許第5,404,485号に記述があるように、米国特許第5,404,485号の「フラッシュコントロール１４」に対応するコントローラ２２は、ＲＡＭ２６の助けを借りて、フラッシュメモリ２４を管理する。フラッシュメモリ２４は、米国特許第6,522,580号あるいは米国特許第6,643,188号に説明されているように、データを、フラッシュメモリ２４のセルにつき２ビット以上でエンコードする。データを読み取るときは、コントローラ２２が、上述のようにエラー訂正を適用する。
【００６１】
図３は、本発明による代替的なデータ記憶システム５０を表す、高度な部分ブロック図である。データ記憶システム５０は、プロセッサー５２と、四つのメモリ・デバイス、すなわちＲＡＭ５４、ブートＲＯＭ５６、大容量記憶デバイス（ハードディスク）５８およびフラッシュメモリ・デバイス４０を含む。これらは、すべて、共通バス６０を介して通信する。フラッシュメモリ・デバイス２０のように、フラッシュメモリ・デバイス４０は、フラッシュメモリ４２を含む。しかし、フラッシュメモリ・デバイス２０とは異なり、フラッシュメモリ・デバイス４０は、それ自身のコントローラおよびＲＡＭが欠けている。その代わり、プロセッサー５２は、例えば、イスラエル、クファル・サバにあるＭシステムズ・フラッシュディスク・パイオニア社のＴｒｕｅＦＦＳドライバの方式で、米国特許第5,404,485号の方法を具現するソフトウェア・ドライバを実行することによって、コントローラ２２をエミュレートする。フラッシュメモリ４２は、米国特許第6,522,580号あるいは米国特許第6,643,188号に説明があるように、データを、フラッシュメモリ４２のセルにつき２ビット以上でエンコードする。データを読み取るときは、プロセッサー５２が、上述のようにエラー訂正を適用する。フラッシュメモリ・デバイス４０は、また、プロセッサー５２がフラッシュメモリ４２と通信することを可能にするためのバス・インターフェイス４４を含む。
【００６２】
フラッシュメモリ４２を管理するためにプロセッサー５２が実行するソフトウェア・ドライバのコードは、大容量記憶デバイス５８内に記憶され、実行の際にＲＡＭ５４へ移される。このように大容量記憶デバイス５８は、本発明の原理に従ってフラッシュメモリ４２を管理するための、コンピュータで読み込み可能なコードが埋め込まれた、コンピュータで読み取り可能なコード記憶メディアの例である。
【００６３】
本発明を限られた数の実施例に関して説明したが、本発明の多くの変形、修正、そして他の応用が可能であることは明らかである。
【００６４】
本発明を、例としてのみ、添付の図面を参照して説明する。
【図面の簡単な説明】
【００６５】
【図１Ａ】１ビット・フラッシュ・セル、２ビット・フラッシュ・セル、３ビット・フラッシュ・セルおよび４ビット・フラッシュ・セルにおけるスレショルド電圧分布を示す。
【図１Ｂ】１ビット・フラッシュ・セル、２ビット・フラッシュ・セル、３ビット・フラッシュ・セルおよび４ビット・フラッシュ・セルにおけるスレショルド電圧分布を示す。
【図１Ｃ】１ビット・フラッシュ・セル、２ビット・フラッシュ・セル、３ビット・フラッシュ・セルおよび４ビット・フラッシュ・セルにおけるスレショルド電圧分布を示す。
【図１Ｄ】１ビット・フラッシュ・セル、２ビット・フラッシュ・セル、３ビット・フラッシュ・セルおよび４ビット・フラッシュ・セルにおけるスレショルド電圧分布を示す。
【図２】本発明によるフラッシュメモリ・デバイスの、高度なブロック図である。
【図３】本発明によるデータ記憶システムの、高度な部分ブロック図である。
【図１Ａ】
2009512112.tif 000003
【図１Ｂ】
2009512112.tif 000004
【図１Ｃ】
2009512112.tif 000005
【図１Ｄ】
2009512112.tif 000006
【図２】
2009512112.tif 000007
【図３】
2009512112.tif 000008