(57)【要約】【課題】ＭＢＣフラッシュメモリのためのエラー訂正方法を得る。【解決手段】複数の論理ページを、対応するＥＣＣビットと共にＭＢＣフラッシュメモリに記憶する。この場合、ＭＢＣセルの少なくとも一つは、複数の論理ページからのビットを記憶する。また、ＥＣＣビットの少なくとも一つは、論理ページの二つ以上に適用する。メモリからページを読み取るとき、読み出したＥＣＣビットを用いて、読み取るべきデータ・ビットを訂正する。代替的に、論理ページの二つ以上に対して、連帯的な、体系的な、あるいは非体系的なＥＣＣコード・ワードを計算して、論理ページの代わりにそれらを記憶する。連帯コード・ワードを読み出すとき、読み出したコード・ワードから論理ビットを復旧する。本発明の範囲は、対応するメモリ・デバイス、そのようなメモリ・デバイスのコントローラ、そしてまた、上記方法を実現するための、コンピュータで読み取り可能なコードを備えたコンピュータで読み取り可能な記憶メディアを含む。【選択図】図１Ａ
2009512055.tif 000002
【特許請求の範囲】
【請求項１】
マルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリ内にデータを記憶するための方法であって、
（ａ）データ・ビットの複数の論理ページに対してエラー訂正パリティ・ビットを計算するステップ、この場合、前記エラー訂正パリティ・ビットの少なくとも一つが、前記論理ページの少なくとも二つに連帯的に適用され、そして
（ｂ）前記データ・ビットおよび前記エラー訂正パリティ・ビットでＭＢＣフラッシュメモリをプログラムするステップからなり、ＭＢＣフラッシュメモリの少なくとも一つのセルが、前記少なくとも一つの連帯エラー訂正パリティ・ビットが適用される前記少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされる、方法。
【請求項２】
すべての前記エラー訂正パリティ・ビットが、すべての前記論理ページに適用される、請求項１の方法。
【請求項３】
前記複数が、二つより多い前記論理ページを含み、そして前記計算が、少なくとも二つの前記論理ページに対して、しかし、すべてよりも少ない個数の前記論理ページに対して前記エラー訂正パリティ・ビットを連帯的に計算することを含む、請求項１の方法。
【請求項４】
前記ビットでプログラムされる前記フラッシュメモリの各セルが、前記複数の論理ページ内に論理ページが存在すると同じだけ多くの前記ビットでプログラムされる、請求項１の方法。
【請求項５】
複数の論理ページのデータ・ビット、そしてデータ・ビットに対して計算されるエラー訂正パリティ・ビットでプログラムされるマルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリであって、少なくとも一つのエラー訂正パリティ・ビットが、少なくとも二つの論理ページに連帯的に適用され、そしてＭＢＣフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされるＭＢＣフラッシュメモリにおいて、
データ・ビットを復旧させる方法であって、
（ａ）ＭＢＣフラッシュメモリから、
（ｉ）少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのデータ・ビット、そして
（ii）少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのいずれかに適用されるエラー訂正パリティ・ビットを読み出すステップ、そして
（ｂ）ＭＢＣフラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って、ＭＢＣフラッシュメモリから読み出されるデータ・ビットを訂正するステップからなる、方法。
【請求項６】
マルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリのためのコントローラであって、ＭＢＣフラッシュメモリ内に、複数の論理ページのデータ・ビットを、それらデータ・ビットに対してエラー訂正パリティ・ビットを計算することを含むステップによって記憶するよう作動可能であり、少なくとも一つのエラー訂正パリティ・ビットが、少なくとも二つの論理ページに連帯的に適用され、そして、少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットが、ＭＢＣフラッシュメモリの少なくとも一つのセルの各々に一緒に記憶される、コントローラ。
【請求項７】
コントローラが、コントローラおよびＭＢＣフラッシュメモリを含むメモリ・デバイスのホストへ、
（ａ）ＭＢＣフラッシュメモリから、
（ｉ）少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのデータ・ビット、そして
（ii）少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのいずれかに適用されるエラー訂正パリティ・ビットを読み出すこと、そして
（ｂ）ＭＢＣフラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って、ＭＢＣフラッシュメモリから読み出されるデータ・ビットを訂正することを含むステップによって、データ・ビットを提供するよう作動可能である、請求項６のコントローラ。
【請求項８】
（ａ）請求項６のコントローラ、そして
（ｂ）請求項６のコントローラによって制御されるＭＢＣフラッシュメモリからなる、メモリ・デバイス。
【請求項９】
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化されて、マルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリを管理するためのものであり、
（ａ）ＭＢＣフラッシュメモリ内に記憶すべきデータ・ビットの複数の論理ページに対して、エラー訂正パリティ・ビットを計算するためのプログラム・コード、この場合、前記エラー訂正パリティ・ビットの少なくとも一つは、前記論理ページの少なくとも二つへ連帯的に適用される、そして
（ｂ）前記データ・ビットおよび前記エラー訂正パリティ・ビットでＭＢＣフラッシュメモリをプログラムするためのプログラム・コードからなり、ＭＢＣフラッシュメモリの少なくとも一つのセルが、前記少なくとも一つの連帯エラー訂正パリティ・ビットが適用される前記少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされる、コンピュータで読み取り可能な記憶メディア。
【請求項１０】
複数の論理ページのデータ・ビットで、そして前記データ・ビットに対して計算されるエラー訂正パリティ・ビットでプログラムされるマルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリであって、少なくとも一つのエラー訂正パリティ・ビットが、少なくとも二つの論理ページに連帯的に適用され、そしてＭＢＣフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされるＭＢＣフラッシュメモリにおいて、
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、
（ａ）ＭＢＣフラッシュメモリから、
（ｉ）少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのデータ・ビット、そして
（ii）少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのいずれかに適用されるエラー訂正パリティ・ビットを読み出すためのプログラム・コード、そして
（ｂ）ＭＢＣフラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って、ＭＢＣフラッシュメモリから読み出されるデータ・ビットを訂正するためのプログラム・コードからなる、コンピュータで読み取り可能な記憶メディア。
【請求項１１】
マルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリにデータを記憶する方法であって、
（ａ）データ・ビットの複数の論理ページの少なくとも二つに対して、連帯エラー訂正コード（ＥＣＣ）コード・ワードを計算するステップ、そして
（ｂ）前記連帯ＥＣＣコード・ワードでＭＢＣフラッシュメモリをプログラムするステップからなる、方法。
【請求項１２】
前記ＥＣＣが体系的である、請求項１１の方法。
【請求項１３】
前記ＥＣＣが非体系的である、請求項１１の方法。
【請求項１４】
前記複数が、二つより多い前記論理ページを含み、前記計算が、すべてよりも少ない個数の前記論理ページに対するものである、請求項１１の方法。
【請求項１５】
前記連帯ＥＣＣコード・ワードでプログラムされるＭＢＣフラッシュメモリの各セルが、前記連帯ＥＣＣコード・ワードが計算された前記論理ページと同じくらい多くの、前記連帯ＥＣＣコード・ワードのビットでプログラムされる、請求項１１の方法。
【請求項１６】
前記連帯ＥＣＣコード・ワードでプログラムされる前記フラッシュメモリの各セルが、前記複数の論理ページと同じくらい多くのビットでプログラムされる、請求項１１の方法。
【請求項１７】
データ・ビットの複数の論理ページの少なくとも二つに対して計算した連帯エラー訂正コード（ＥＣＣ）コード・ワードでプログラムされるマルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリにおいて、
データ・ビットを復旧させる方法であって、
（ａ）フラッシュメモリから連帯ＥＣＣコード・ワードを読み出すステップ、そして
（ｂ）フラッシュメモリから読み取った連帯ＥＣＣコード・ワードから、連帯ＥＣＣコード・ワードを計算した少なくとも二つの論理ページのデータ・ビットを復旧するステップからなる、方法。
【請求項１８】
マルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリのためのコントローラであって、前記論理ページの少なくとも二つに対して連帯エラー訂正コード（ＥＣＣ）コード・ワードを計算することを含むステップによって、ＭＢＣフラッシュメモリ内に、複数の論理ページのデータ・ビットを記憶するよう作動可能である、コントローラ。
【請求項１９】
コントローラが、コントローラおよびＭＢＣフラッシュメモリを含むメモリ・デバイスのホストへ、
（ｉ）ＭＢＣフラッシュメモリから連帯ＥＣＣコード・ワードを読み出すこと、そして
（ii）ＭＢＣフラッシュメモリから読み取った連帯ＥＣＣコード・ワードから、連帯ＥＣＣコード・ワードが計算された少なくとも二つの論理ページのデータ・ビットを復旧することを含むステップによって、データ・ビットを提供するよう作動可能である、請求項１８のコントローラ。
【請求項２０】
（ａ）請求項１８のコントローラ、そして
（ｂ）請求項１８のコントローラによって制御されるＭＢＣフラッシュメモリからなる、メモリ・デバイス。
【請求項２１】
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、マルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリを管理するためのものであり、
（ａ）ＭＢＣフラッシュメモリ内に記憶すべきデータ・ビットの複数の論理ページの少なくとも二つに対して、連帯エラー訂正コード（ＥＣＣ）コード・ワードを計算するためのプログラム・コード、そして
（ｂ）前記連帯ＥＣＣコード・ワードでＭＢＣフラッシュメモリをプログラムするためのプログラム・コードからなる、コンピュータで読み取り可能な記憶メディア。
【請求項２２】
データ・ビットの複数の論理ページの少なくとも二つに対して計算した連帯エラー訂正コード（ＥＣＣ）コード・ワードでプログラムされるマルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリにおいて、
コンピュータで読み取り可能なコードを持つコンピュータで読み取り可能な記憶メディアであって、コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、
（ａ）フラッシュメモリから連帯ＥＣＣコード・ワードを読み出すためのプログラム・コード、そして
（ｂ）フラッシュメモリから読み取った連帯ＥＣＣコード・ワードから、連帯ＥＣＣコード・ワードが計算された少なくとも二つの論理ページのデータ・ビットを復旧するためのプログラム・コードからなる、コンピュータで読み取り可能な記憶メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルデータのエラー訂正に関し、より詳しくは、セルにつき複数のビットを記憶するフラッシュメモリ・デバイスのためのエラー訂正方法に関する。
【背景技術】
【０００２】
フラッシュメモリ・デバイスは、長年知られている。典型的に、フラッシュメモリ内の各セルは、１ビットの情報を記憶する。伝統的に、ビットを記憶する方法は、セルの二つの状態をサポートすることであった。一方の状態が論理「０」を表し、他方の状態が論理「１」を表す。フラッシュメモリ・セルにおいては、セルのチャネル（セルのトランジスタのソースおよびドレイン素子を結合する領域）上方にフローティングゲートを設け、このフローティングゲート内に蓄えられる充電量に対して二つの有効な状態を得ることによって、二つの状態を実現している。典型的に、一方の状態は、フローティングゲートがゼロ電荷であり、消去後のセルの、書き込まれていない初期状態である（一般的に、「１」状態を表す、と定義する）。他方の状態は、フローティングゲートがいくらかの量の陰電荷を持つ（一般的に、状態「０」を表すと定義する）。ゲート内に陰電荷があることによって、セルのトランジスタのスレショルド電圧（すなわち、トランジスタを導通状態にするためにトランジスタの制御ゲートへ印加しなければならない電圧）が高くなる。さて、記憶ビットを読み出すことは、セルのスレショルド電圧をチェックすることによって可能である。スレショルド電圧が高い状態にあるなら、ビット値は「０」であり、スレショルド電圧が低い状態にあるなら、ビット値は「１」である。実は、セルのスレショルド電圧を正確に読み取る必要は全くない。必要なすべては、セルが現在、二つの状態のいずれにあるのかを、正しく識別することである。その目的では、二つの状態の中央にある基準電圧値に対して比較し、セルのスレショルド電圧がこの基準値よりも低いか、あるいは高いかを判定するだけで十分である。
【０００３】
図１Ａは、これがどのように作用するのかを視覚的に示す。詳細には、図１Ａは、かなりの個体数のセルのスレショルド電圧の分布を示す。フラッシュメモリのセルは、それらの特性および作用が、（例えば、不純物濃度の小さな差異、または、けい素構造の欠陥等が原因となって）必ずしも同一ではないため、すべてのセルに対して同じプログラミング・オペレーションを適用しても、セルの全てが、必ずしも同じスレショルド電圧を持つようになるというわけではない。（なお、歴史的理由により、データをフラッシュメモリに書き込むことは、一般的に、フラッシュメモリを「プログラムする」と呼ぶ。）であるから、スレショルド電圧は、図１Ａに示す状態に類似して分散する。値「１」を記憶しているセルは、典型的に、負のスレッショルド電圧を持つため、大部分のセルは、図１Ａの左側のピークで示す値の近くのスレショルド電圧を持ち、少数のセルが、より低い、あるいは高いスレショルド電圧を持つ。同様に、値「０」を記憶しているセルは、典型的に、正のスレッショルド電圧を持つため、大部分のセルは、図１Ａの右側のピークで示す値の近くのスレショルド電圧を持ち、少数のセルが、より低い、あるいは高いスレショルド電圧を持つ。
【０００４】
近年、因習的に「マルチ・レベル・セル」または略してＭＬＣと呼ぶ技術を用いる新しい種類のフラッシュメモリが市場に出ている。（この名称は、以前の種類のフラッシュ・セルも複数レベルを持つので、まぎらわしい。上述のように、それらは二つのレベルを持つ。したがって、フラッシュ・セルの二つの種類を、本文では「シングル・ビット・セル」（ＳＢＣ）および「マルチ・ビット・セル」（ＭＢＣ）と称する。）ＭＢＣフラッシュがもたらした改善は、各セルに２ビット以上を記憶することである。単一セルが２ビットの情報を記憶するためには、セルが、四つの異なる状態の一つであらねばならない。セルの「状態」は、そのスレショルド電圧が表すため、２ビットのＭＢＣセルは、そのスレショルド電圧に対して、四つの異なる有効な範囲をサポートすべきであることは明らかである。  図１Ｂは、典型的な２ビットＭＢＣセルにおけるスレショルド電圧の分布を示す。予想通り、図１Ｂには、各々が一つの状態に対応する四つのピークがある。ＳＢＣケースに関しては、各状態は、実は一つの範囲であり、単一数ではない。セルの内容を読み出すときに保証すべきすべては、セルのスレショルド電圧がある範囲を正しく識別することである。ＭＢＣフラッシュメモリの従来の技術による例としては、ハラリ氏の米国特許第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分の１）を処理できるように設計しなければならないことを意味する。
【００１２】
したがって、現在既知である方法の、上述のような欠点を克服する、ＭＢＣフラッシュメモリのためのエラー訂正方法の必要性が広く認識される、また、そのような方法を得ることは非常に有利である。
【００１３】
［定義］
「論理ページ」は、単一のコマンドによって記憶される、外部から記憶システムへの最小データ塊である。例えば、同じセルの複数のビットが、異なるページに属する、１セルにつき２ビットのＭＢＣ・ＮＡＮＤフラッシュ・デバイスでは、一グループのセルの書き込みは、まず、そのグループ内のセルの第一ビットに対して最初の「ページ書き込み」コマンドを送信し、それからそのグループ内のセルの第二のビットに対して第二の「ページ書き込み」コマンドを送信することによって行う。第一のコマンドで設けるデータ・ビットは、第一の論理ページを構成し、第二のコマンドで設けるデータ・ビットは、第二の論理ページを構成する。
【００１４】
ムリン氏のように、一つの「ビット・ページ」は、それらのグループのセルにおける同じビット位置を占有するすべてのビットの集合であり、その集合は、一つのコマンドで一緒に書き込まれる。例えば、論理ページにおけるビット数が、物理ページにおけるセル数と同じであるならば、物理ページにおけるすべてのセルの最上位（あるいは最下位）ビットの集合は、一つのビット・ページを構成する。前の例では、セルの第一のビットとして記憶したすべてのビットは、単一ビット・ページを構成する。ほとんどのシステムにおいては、論理ページと、論理ページを記憶するビット・ページとの間には、一対一の対応がある。しかし、ムリン氏においては、そのような対応が必須ではないことが分かる。ムリン氏の方法では、論理ページは、複数のビット・ページに渡ってインターリーブされる。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明は、ＥＣＣ回路の設計目的であるビット・エラー率を最小にするという同じ問題に対して、異なるアプローチを用いる。ラッサー’６３４およびムリンの両方は、この問題を解決するために、同じ基本的なアプローチを共有している。両方とも、一度に単一の論理ページに関して処理を行うＥＣＣ回路に依存している。上記の例の条件では、ＥＣＣは、一度に、15,000ビットのデータ塊を訂正する。そのようなデータ塊の各々は、それ自身のＥＣＣパリティ・ビットが付随している。データ・ビットと、それらの関連ＥＣＣパリティ・ビットとの結合を、ＥＣＣ技術の用語では「コード・ワード」と呼ぶ。コード・ワードにおけるビットの総数に対するデータ・ビット数の比率は、ＥＣＣスキームの「率」と呼ぶ。高率であればあるほど、データ・ビットを保護するために「無駄になる」記憶ビットが少ないので、最適である。もちろん、データの予想ビット・エラー率が高ければ高いほど、ＥＣＣパリティ・ビットには、より多くのビットを割り当てるべきであり、ＥＣＣ率は低くなる。
【００１６】
本発明の革新性は、ＥＣＣ回路が、一度に単一論理ページに対してではなく、セル内に記憶したすべてのビットに対して、または少なくとも複数の論理ページのビットに対して、一つの大きな塊として処理を行うことにある。上記の例の条件では、ＥＣＣは、各々60,000ビットのデータ塊を訂正する。これらの60,000のデータ・ビットには、より大きなデータ塊の訂正を可能とする対応ＥＣＣパリティ・ビットが付随する。
【００１７】
上記の例において同じセルを共有するすべての論理ページのデータ・ビットを含む大塊データ・ビットの予想ビット・エラー率は、60,000分の15または4,000分の１である。これは、ラッサー’６３４およびムリンの方法によって達成できる最適平均に等しいが、コード・マッピングあるいはインターリービングの余分な複雑さがない。これが、偶然の一致ではなく、方法の普遍的な特性であることは容易に理解できる。ページサイズやエラー分布プロフィールに関わらず、セル内のすべてのビットを、それらすべてを一つのコード・ワードとして扱って、一つの塊として処理するＥＣＣスキームを用いると、予想平均ビット・エラー率は、常に、ラッサー’６３４およびムリンによって達成可能な最適値である。
【００１８】
より大きなコード・ワードを処理するＥＣＣスキームは、より複雑な回路を必要とすることは事実である。しかし、これは、エラー訂正論における周知の結果で補償できる。それによれば、処理するコード・ワードが大きければ大きいほど、同じビット・エラー率に対して達成可能なコード率は、より高い。換言すれば、より長いＥＣＣコード・ワードを用いることによって、フラッシュメモリ内に記憶しなければならないＥＣＣパリティ・ビットの数、そしてそれゆえにエラー訂正のために「浪費される」記憶スペースの量は、より小さくなる。これは、通常、余分なＥＣＣ回路を補償する以上のものである。
【００１９】
論理ページの各々を、単独で、異なるコード率を用いて異なるＥＣＣスキームによって処理するならば、すべての論理ページに対するパリティ・ビットの全数は、本発明の大きなコード・ワードを用いる場合よりも、パリティ・ビットの数をより小さくできる、との議論もあるであろう。そのとおりである。エラー率が低い論理ページのいくつかは、必要なパリティ・ビットが少数でよいことは知られている。しかし、その議論は、コスト高な、論理ページ毎に一つの、複数のＥＣＣモジュールを実行する必要性を無視している。代替的に、一つのＥＣＣモジュールを、すべての論理ページに対して用いて、一つずつ訂正することもできるが、その場合、実行されるモジュールは、最高エラー率で論理ページを訂正することが可能な、低いコード率を用いるものでなければならない。であるから、今回も、本発明の方法の方が優れている。
【００２０】
したがって、本発明によれば、マルチ・ビット・パー・セル・フラッシュメモリ内にデータを記憶するための、次のステップを含む方法が提供される。（ａ）データ・ビットの複数の論理ページに対して、エラー訂正パリティ・ビットを計算するステップ。この場合、エラー訂正パリティ・ビットの少なくとも一つが、論理ページの少なくとも二つに連帯的に適用される。そして（ｂ）データ・ビットおよびエラー訂正パリティ・ビットでＭＢＣフラッシュメモリをプログラムするステップ。この場合、ＭＢＣフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされる。
【００２１】
さらに、複数の論理ページのデータ・ビットで、そしてデータ・ビットに対して計算されるエラー訂正パリティ・ビットでプログラムされるＭＢＣフラッシュメモリであって、かつ、少なくとも一つのエラー訂正パリティ・ビットが、少なくとも二つの論理ページに連帯的に適用され、そしてＭＢＣフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされるＭＢＣフラッシュメモリにおいて、本発明によれば、データ・ビットを復旧するための、次のステップを含む方法が提供される。（ａ）ＭＢＣフラッシュメモリから、（ｉ）少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのデータ・ビット、そして（ii）少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのいずれかに適用されるエラー訂正パリティ・ビットを読み出すステップ。そして（ｂ）ＭＢＣフラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って、ＭＢＣフラッシュメモリから読み出されるデータ・ビットを訂正するステップ。
【００２２】
さらに、本発明によれば、ＭＢＣフラッシュメモリのためのコントローラが提供される。このコントローラは、データ・ビットに対してエラー訂正パリティ・ビットを計算することを含むステップによって、ＭＢＣフラッシュメモリ内に複数の論理ページのデータ・ビットを記憶するよう作動可能である。この場合、少なくとも一つのエラー訂正パリティ・ビットが、論理ページの少なくとも二つに連帯的に適用され、そして、少なくとも一つの連帯エラー訂正パリティ・ビットは、適用される少なくとも二つの論理ページの複数からのデータ・ビットが、ＭＢＣフラッシュメモリの少なくとも一つのセルの各々に一緒に記憶される。
【００２３】
さらに、本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化されて、ＭＢＣフラッシュメモリを管理するためのものである。コンピュータで読み取り可能なコードは、以下を含む。（ａ）ＭＢＣフラッシュメモリ内に記憶すべきデータ・ビットの複数の論理ページに対して、エラー訂正パリティ・ビットを計算するためのプログラム・コード。この場合、エラー訂正パリティ・ビットの少なくとも一つが、論理ページの少なくとも二つに連帯的に適用される。そして（ｂ）データ・ビットおよびエラー訂正パリティ・ビットでＭＢＣフラッシュメモリをプログラムするためのプログラム・コード。この場合、ＭＢＣフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされる。
【００２４】
さらに、複数の論理ページのデータ・ビットで、そして前記データ・ビットに対して計算されるエラー訂正パリティ・ビットでプログラムされるマルチ・ビット・パー・セル（ＭＢＣ）フラッシュメモリであって、かつ、少なくとも一つのエラー訂正パリティ・ビットが、少なくとも二つの論理ページに連帯的に適用され、そしてＭＢＣフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされるＭＢＣフラッシュメモリにおいて、本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、以下のものを含む。（ａ）ＭＢＣフラッシュメモリから、（ｉ）少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのデータ・ビット、そして（ii）少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのいずれかに適用されるエラー訂正パリティ・ビットを読み出すためのプログラム・コード。そして（ｂ）ＭＢＣフラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って、ＭＢＣフラッシュメモリから読み出されるデータ・ビットを訂正するためのプログラム・コード。
【００２５】
さらに、本発明によれば、ＭＢＣフラッシュメモリにデータを記憶するための、次のステップを含む方法が提供される。（ａ）データ・ビットの複数の論理ページの少なくとも二つに対して、連帯ＥＣＣコード・ワードを計算するステップ。そして（ｂ）連帯ＥＣＣコード・ワードでＭＢＣフラッシュメモリをプログラムするステップ。
【００２６】
さらに、データ・ビットの複数の論理ページの少なくとも二つに対して計算される連帯ＥＣＣコード・ワードでプログラムされるＭＢＣフラッシュメモリにおいて、本発明によれば、データ・ビットを復旧するための、次のステップを含む方法が提供される。（ａ）フラッシュメモリから連帯ＥＣＣコード・ワードを読み出すステップ、そして（ｂ）フラッシュメモリから読み出される連帯ＥＣＣコード・ワードから、連帯ＥＣＣコード・ワードが計算された少なくとも二つの論理ページのデータ・ビットを復旧するステップ。
【００２７】
さらに、本発明によれば、ＭＢＣフラッシュメモリのためのコントローラが提供される。このコントローラは、論理ページの少なくとも二つに対して連帯ＥＣＣコード・ワードを計算することを含むステップによって、ＭＢＣフラッシュメモリ内に複数の論理ページのデータ・ビットを記憶するよう作動可能である。
【００２８】
さらに、本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、ＭＢＣフラッシュメモリを管理するためのものであり、以下のものを含む。（ａ）ＭＢＣフラッシュメモリ内に記憶すべきデータ・ビットの複数の論理ページの少なくとも二つに対して連帯ＥＣＣコード・ワードを計算するためのプログラム・コード。そして（ｂ）連帯ＥＣＣコード・ワードでＭＢＣフラッシュメモリをプログラムするためのプログラム・コード。
【００２９】
さらに、データ・ビットの複数の論理ページの少なくとも二つに対して計算される連帯ＥＣＣコード・ワードでプログラムされるＭＢＣフラッシュメモリにおいて、本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、以下のものを含む。（ａ）フラッシュメモリから連帯ＥＣＣコード・ワードを読み出すためのプログラム・コード。そして（ｂ）フラッシュメモリから読み出される連帯ＥＣＣコード・ワードから、連帯ＥＣＣコード・ワードが計算された少なくとも二つの論理ページのデータ・ビットを復旧するためのプログラム・コード。
【００３０】
本発明の第一の基本的な方法によれば、ＭＢＣフラッシュメモリ内にデータ・ビットの複数の論理ページが記憶されるとき、データ・ビットに対してエラー訂正パリティ・ビットが計算されるが、このとき、エラー訂正パリティ・ビットの少なくとも一つが、論理ページの少なくとも二つに適用される。エラー訂正パリティ・ビットが論理ページ「に適用される」は、エラー訂正パリティ・ビットが、その論理ページのデータから計算され、そして、その論理ページのデータ訂正に用いられなければならないということを意味する。添付の請求項においては、二つ以上の論理ページに適用されるそのようなエラー訂正パリティ・ビットを、「連帯」エラー訂正パリティ・ビットと呼ぶ。それから、ＭＢＣフラッシュメモリが、データ・ビットで、そしてエラー訂正パリティ・ビットでプログラムされる。このとき、ＭＢＣフラッシュメモリの少なくとも一つのセルが、単数あるいは複数の連帯エラー訂正パリティ・ビットが適用される論理ページの複数からのデータ・ビットでプログラムされる。換言すれば、データ・ビットでプログラムされるＭＢＣフラッシュメモリのすべてのセルが、一つの論理ページのみからのデータ・ビットでプログラムされるというわけではない。
【００３１】
すべてのエラー訂正パリティ・ビットが、すべての論理ページに適用されることが好ましい。択一的に、三つ以上の論理ページがある場合、エラー訂正ビットは、論理ページのすべてに対してではなく、論理ページの少なくとも二つに対して連帯的に計算される。また、択一的に、いくつかのエラー訂正パリティ・ビットのみが、複数の論理ページに適用され、他のエラー訂正パリティ・ビットが、単一の論理ページにのみ適用される。
【００３２】
データ・ビットおよびエラー訂正パリティ・ビットでプログラムされるフラッシュメモリの各セルが、複数の論理ページ内に存在する論理ページと同じくらい多くのビットでプログラムされることが好ましい。また、プログラミングの後、フラッシュメモリから、単数あるいは複数のエラー訂正パリティ・ビットが適用される二つ以上の論理ページのデータ・ビットを、もしそれらの二つ以上の論理ページに適用される連帯エラー訂正パリティ・ビットや他のエラー訂正パリティ・ビットがあるならば、それらと共に読み出すことが好ましい。通常、すべてのエラー訂正ビットは、それらの二つ以上の論理ページに適用されるが、エラー訂正パリティ・ビットのいくつか、あるいはほとんどが、（三つ以上の論理ページが存在するとき）それらの論理ページのいくつかのみに、または、それらの論理ページの一つだけに適用されることもあり得る。それから、フラッシュメモリから読み出されるデータ・ビットが、フラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って訂正される。
【００３３】
本発明の第二の基本的な方法によれば、データ・ビットの複数の論理ページがＭＢＣフラッシュメモリ内に記憶されるとき、論理ページの少なくとも二つに対して連帯ＥＣＣコード・ワードが計算される。ＥＣＣは、体系的でも、あるいは非体系的でもよい。この場合、ＭＢＣフラッシュメモリは、連帯ＥＣＣコード・ワードでプログラムされる。
【００３４】
本方法のいくつかの実施例では、複数の論理ページは、三つ以上の論理ページを含み、そしてコード・ワードは、論理ページのすべてよりも少数の論理ページに対して計算される。
【００３５】
連帯ＥＣＣコード・ワードのビットでプログラムされるフラッシュメモリの各セルが、連帯ＥＣＣコード・ワードが計算された論理ページが存在すると同じくらい多くの、連帯ＥＣＣコード・ワードのビットでプログラムされることが好ましい。択一的に、連帯ＥＣＣコード・ワードのビットでプログラムされるフラッシュメモリの各セルは、複数の論理ページ内に存在する論理ページと同数の、連帯ＥＣＣコード・ワードのビットでプログラムされる。
【００３６】
プログラミングの後、フラッシュメモリから連帯ＥＣＣコード・ワードを読み出し、それから、フラッシュメモリから読み出される連帯ＥＣＣコード・ワードから、連帯ＥＣＣコード・ワードが計算された論理ページのデータ・ビットを復旧することが好ましい。
【００３７】
また、本発明の範囲は、本発明の方法の一つに従ってＭＢＣメモリを管理するコントローラ、コントローラおよびＭＢＣメモリを含むメモリ・デバイス、そして本発明の方法の一つに従ってメモリを管理するためのコンピュータで読み取り可能なコードを具象化したコンピュータで読み取り可能な記憶メディアを含む。コントローラは、コントローラによって実行される本発明の方法に従って、メモリ・デバイスのホストへ、ＭＢＣメモリ内に記憶されたデータ・ビットを提供するよう作動可能であることが好ましい。
【発明を実施するための最良の形態】
【００３８】
本発明は、マルチビット・パー・セル・メモリにおけるエラー訂正の方法に関する。
【００３９】
本発明によるＭＢＣエラー訂正の原理および作用は、図面とその説明文を参照することによって、よりよく理解できる。
【００４０】
（ラッサー氏の’６３４およびムリン氏の方法等の）すべての従来の技術による方法においては、一グループのＭＢＣセル内に記憶すべきデータは、外部から複数の論理ページとして記憶システムへ提供され、それから、ＥＣＣパリティ・ビットが論理ページごとに別々に計算される。さらに、そのようなほとんどのシステムでは、論理ページのすべてのデータ・ビットおよびその同じページの対応するパリティ・ビットが、同じビット・ページ内に記憶される。ムリン氏の方法は、インターリービング・スキームによって、論理ページのビットが複数のビット・ページ内に点在することになるので、この第二の観察に関しては例外である。しかし、ムリンでさえも、論理ページのパリティ・ビットが、その論理ページのデータ・ビットのみに依存するという第一の観察には従っている。本発明の方法によれば、こんなことは、もはやない。いくつかの、またはすべてのパリティ・ビットは、複数の論理ページからのデータ・ビットの機能であり、単一ページからのものではない。これは、すべてのビットを一つの長いコード・ワードとして扱うことの結果である。
【００４１】
書き込みプロセスのこの特徴の帰結（すなわち、いくつかの、またはすべてのパリティ・ビットが、複数の論理ページからのデータ・ビットの機能であるということ）は、読み取りおよびエラー訂正プロセスにおけるパリティ・ビットの使い方である。（ラッサー’６３４およびムリンを含む）すべての従来の技術によるシステムでは、特定なパリティ・ビットは、一つの論理ページを訂正するのみに用いられる。これは、合理的な予測である。各パリティ・ビットは、当初、単一の論理ページのデータ・ビットのみを用いて計算しているので、そのパリティ・ビットは、他の論理ページ内のデータ・ビットに関する情報を全く表さないから、それを計算した基礎の単一論理ページを訂正することにのみ使用すべきである。本発明の方法の場合は、このようなことはない。いくつかのパリティ・ビットは、複数の論理ページからのデータに基づいて計算される、その結果、それらのビットは、それらの複数の論理ページの訂正を行う際に直接的に用いてもよい。
【００４２】
バン氏らの米国特許出願第10/867,645号は、これに関連した問題を扱っている。バン氏らの方法によれば、他のすべての従来の技術の場合のように、各論理ページは、対応する論理ページのデータ・ビットのみに基づいて計算された、それ自身のＥＣＣパリティ・ビットを持つ。しかし、バン氏らは、同じグループのセルからなる訂正された論理ページが、限られた様式で互いに影響を及ぼすことを可能としたことで、他の従来の技術とは異なっている。特定なビット・ページのビットにエラーが検出されて、それが訂正された場合、同じセルのより有効なビット・ページの対応するビットに対して、いくらかの訂正を適用してもよい。しかし、これは、本発明による方法の開示には達していない。バン氏らの方法では、パリティ・ビットは、複数の論理ページのＥＣＣ計算に全く直接的に影響しない。もう一つの論理ページへの唯一の限られた影響は、ＥＣＣ計算の範囲外にある高度な物理的な配慮を介した間接的なものである。
【００４３】
本発明の方法のもう一つの含意は、データ・ビットおよびパリティ・ビットを含むセル・グループ内に記憶したビットのすべてが、採用のＥＣＣスキームの一つの長いコード・ワードとして処理されることである。どの特定なＥＣＣスキームを用いるかは重要ではない。問題となるのは、同じグループのセルに存在するすべての論理ページは、ＥＣＣの観点から、一つの実体として一緒に処理されることである。上記に説明したように、最適ビット・エラー率を提供することに加えて、このアプローチは、また、データ・ビットに対するパリティ・ビットの割合が減少した、より効率的なエラー訂正を提供する。
【００４４】
本発明の方法の範囲は、また、同じグループのセル内に存在する論理ページのサブセットのみが、連帯コード・ワードとして処理される、より一般化したケースを含む。例えば、セルにつき４ビットのＭＢＣフラッシュメモリにおいては、論理ページを、各々二つの論理ページの二つのグループとして、または三つの論理ページに一つの単一論理ページを加えた一つのグループとして、または、さらに、二つの論理ページに二つの単一論理ページを加えた一つのグループとしてグループ化してもよい。本発明の方法は、同じセルを共有する少なくとも二つの論理ページが、同じセルを共有する他の論理ページが如何に処理されるかに関わらず、ＥＣＣスキームによって一つのコード・ワードとして一緒に処理されるどのケースをも含むと理解すべきである。
【００４５】
さて、図面を参照する。図２Ａおよび２Ｂは、本発明の方法の適用前後における、ＭＢＣフラッシュメモリの（説明の目的で、非常に小さな）ブロックを、表として示す。図２Ａおよび２Ｂの各々における表の各列は、ブロックの一つのセルを表す、そして各行は、ビット・エンコーディングの有効係数を表す。一番上の行は最上位ビットを表し、第二の行は次に有効なビットを表し、第三の行は、最下位のすぐ上の有効ビットを表し、そして最後の行は、最下位ビットを表す。各表の各エントリは、対応するメモリ・セル内の対応する有効係数のビットが表す、ビットのソース論理ページを示す。データ・ビットを記憶するメモリ・セルには、陰影が施されていない。ＥＣＣビットを記憶するメモリ・セルには、陰影がついている。
【００４６】
初期状態で、各々が１０ビットを持つ、データのための四つの論理ページが、メモリ・ブロック内に記憶されている。第一の論理ページのビットは、データ・セルの最下位ビットとしてコード化されている。第二の論理ページのビットは、データ・セルの下から二番目のビットとしてコード化されている。第三の論理ページのビットは、データ・セルの上から二番目のビットとしてコード化されている。第四の論理ページのビットは、データ・セルの最上位ビットとしてコード化されている。例えば、第一の論理ページの第一のビットが「１」で、第二の論理ページの第一のビットが「０」で、第三の論理ページの第一のビットが「０」で、そして第四の論理ページの最初のビットが「１」であるならば、図１Ｄに示すビット・エンコーディング・スキームを用いて、第一の（左端の）セルは、左から五番目の電圧帯域へプログラムする。この時点で、ＥＣＣセルは、まだプログラムされていない。
【００４７】
それから、本発明の方法を用いて、これらのデータ・ビットを、第一および第二の論理ページに対する一つのコード・ワード、そして第三および第四の論理ページに対するもう一つのコード・ワードの、二つの２８ビット・コード・ワードへ変換する。  図２Ｂで示すように、第一のコード・ワードのＥＣＣビットは、ＥＣＣセルの最下位ビット、そして下から二番目のビット内にコード化し、第二のコード・ワードのＥＣＣビットは、ＥＣＣセルの上から二番目のビット、そして最上位ビット内にコード化する。
【００４８】
ここまで、本発明を、「体系的」な、エラー訂正スキームに関連させて提示してきた。体系的なエラー訂正コーディングは、元のデータ・ビットがエンコーディング・プロセスで維持され、記憶ビット内で識別可能であるという事実を特徴とする。換言すれば、エラー訂正メカニズムは、元のデータ・ビットを取り、それらにいくつかのパリティ・ビットを付加し、データ・ビットおよびパリティ・ビットの両方を記憶する。後に記憶ビットを読み取るとき、データ・ビットおよびパリティ・ビットの両方を読み出すが、パリティ・ビットは、読み取ったデータ・ビットでのエラーの訂正を可能にするため、元のデータ・ビットを生成できる。
【００４９】
しかし、本発明は、非体系的なエラー訂正コードにも等しく適用できる。そのようなコードでは、元のデータ・ビットは維持されず、また記憶されることもない。その代わり、エンコーディング・プロセスは、元のデータ・ビットを、より大きなグループのビット（本文では「保護データ・ビット」と呼ぶ）へ変換し、この変換後のものを記憶する。体系的なエラー・コードにおけるデータ・ビットと関連ＥＣＣパリティ・ビットとの結合のように、非体系的なエラー・コードの保護データ・ビットも、本文では、元のデータ・ビットに対応するコード・ワードであると考える。記憶された保護データ・ビットを読み出すとき、保護データ・ビットにエラーがあるとしても、元のデータ・ビットを再生する。非体系的なコードの特徴を定義するものは、特定な元データ・ビットと特定な記憶ビットとの間に直接的な対応がない、ということである。元データ・ビットは、複数の記憶ビット内に「点在する」。そして、それらの複数の記憶ビットの組み合わせのみが、元のビット値を表す。
【００５０】
図３Ａおよび３Ｂは、図２Ａおよび２Ｂに対応するが、体系的なＥＣＣの代わりに非体系的なＥＣＣを用いる。図３Ａは、図２Ａと同一である。図３Ｂは、本発明の非体系的なＥＣＣエンコーディング後、データ・ビットとＥＣＣビットとの間で有意義な識別が不可能であることを示す。第一のコード・ワードのすべてのビットは、データ・セルおよびＥＣＣセルの両方の、最下位ビットおよび下から二番目のビット内にコード化され、そして第二のコード・ワードのすべてのビットは、データ・セルおよびＥＣＣセルの両方の、上から二番目のビットおよび最上位ビットでコード化される。
【００５１】
図４は、ホスト３０に接続した、本発明によるフラッシュメモリ・デバイス２０の高度なブロック図である。図４は、バン氏の米国特許第5,404,485号を示す図１を適応させたものである。なお、この特許は、すべての目的において参照によって本文に完全に記述したように含むものとする。フラッシュメモリ・デバイス２０は、フラッシュメモリ２４、コントローラ２２およびランダムアクセスメモリ（ＲＡＭ）２６を含む。米国特許第5,404,485号の「フラッシュコントロール１４」に対応するコントローラ２２は、米国特許第5,404,485号で説明されているように、ＲＡＭ２６の助けを借りてフラッシュメモリ２４を管理する。コントローラ２２は、また、上述のエラー訂正で、データを、フラッシュメモリ２４の１セルにつき２ビット以上でコード化する。
【００５２】
図５は、本発明による、択一的なデータ記憶システム５０を表す高度な部分ブロック図である。データ記憶システム５０は、プロセッサ５２と、四つのメモリ・デバイス、すなわちＲＡＭ５４、ブートＲＯＭ５６、大容量記憶デバイス（ハードディスク）５８およびフラッシュメモリ・デバイス４０を含む。これらすべては、共通バス６０を介して通信する。フラッシュメモリ・デバイス２０のように、フラッシュメモリ・デバイス４０は、フラッシュメモリ４２を含むが、フラッシュメモリ・デバイス２０とは異なり、フラッシュメモリ・デバイス４０は、それ自身のコントローラやＲＡＭを持たない。その代わり、プロセッサ５２は、ソフトウェア・ドライバを実行することによって、コントローラ２２をエミュレートする。このドライバは、例えば、イスラエル、クファル・サバのＭシステムズ・フラッシュディスク・パイオニア社のＴｒｕｅＦＦＳドライバ等の方式で、米国特許第５，４０４，４８５号の方法を実現し、また、上述のようにデータを、フラッシュメモリ４２の１セルにつき２ビット以上でコード化する。フラッシュメモリ・デバイス４０は、また、プロセッサ５２がフラッシュメモリ４２と通信することを可能にするバス・インターフェイス４４を含む。
【００５３】
プロセッサ５２が、フラッシュメモリ４２を管理するために実行するソフトウェア・ドライバのコードは、大容量記憶デバイス５８内に記憶されており、実行の際にＲＡＭ５４へ移される。このように、大容量記憶デバイス５８は、本発明の原理によるフラッシュメモリ４２を管理するための、コンピュータで読み込み可能なコードを埋め込んだ、コンピュータで読み取り可能なコード記憶メディアの例である。
【００５４】
本発明を限られた数の実施例に関して説明したが、本発明の多くの変形、修正、そして他の応用が可能であることは明らかである。
【００５５】
本発明を、例としてのみ、添付の図面を参照して説明する。
【図面の簡単な説明】
【００５６】
【図１Ａ】１ビット・フラッシュ・セル、２ビット・フラッシュ・セル、３ビット・フラッシュ・セルおよび４ビット・フラッシュ・セルのスレショルド電圧分布を示す。
【図１Ｂ】１ビット・フラッシュ・セル、２ビット・フラッシュ・セル、３ビット・フラッシュ・セルおよび４ビット・フラッシュ・セルのスレショルド電圧分布を示す。
【図１Ｃ】１ビット・フラッシュ・セル、２ビット・フラッシュ・セル、３ビット・フラッシュ・セルおよび４ビット・フラッシュ・セルのスレショルド電圧分布を示す。
【図１Ｄ】１ビット・フラッシュ・セル、２ビット・フラッシュ・セル、３ビット・フラッシュ・セルおよび４ビット・フラッシュ・セルのスレショルド電圧分布を示す。
【図２Ａ】２論理ページに及ぶ、体系的なＥＣＣコード・ワードを例示する。
【図２Ｂ】２論理ページに及ぶ、体系的なＥＣＣコード・ワードを例示する。
【図３Ａ】２論理ページに及ぶ、非体系的なＥＣＣコード・ワードを例示する。
【図３Ｂ】２論理ページに及ぶ、非体系的なＥＣＣコード・ワードを例示する。
【図４】本発明におけるフラッシュメモリ・デバイスの高度なブロック図である。
【図５】本発明におけるデータ記憶システムの、高度な部分ブロック図である。
【図１Ａ】
2009512055.tif 000003
【図１Ｂ】
2009512055.tif 000004
【図１Ｃ】
2009512055.tif 000005
【図１Ｄ】
2009512055.tif 000006
【図２Ａ】
2009512055.tif 000007
【図２Ｂ】
2009512055.tif 000008
【図３Ａ】
2009512055.tif 000009
【図３Ｂ】
2009512055.tif 000010
【図４】
2009512055.tif 000011
【図５】
2009512055.tif 000012