(57)【要約】進歩したコーディング技術と、フラッシュ配列インタフェースの変更とを利用して、基本的なセルの大きさ、あるいはビット読み取り障害率を増加させることなく、公称ｍビット・セルのフラッシュ技術における情報容量を増加させるための方法。１を超える数ｎ個のメモリ・セルを用いることによって、情報容量の増加を得る。この場合、各セルは、各々調整可能なパラメータを持ち、これらのパラメータは、ｂがｎｍよりも大きいｂビットの２進数を集合的に表すように設定される。また、パラメータを測定して、これらの測定パラメータを集合的に解読することによって、その数を取り出すことができる。
2004517435.tif 000002
【特許請求の範囲】
【請求項１】
ｂデータ・ビットを含む２進数を保存及び検索するための方法であって、
ａ）各々が調整可能なパラメータを持つセルを、１を超える数ｎ個を含むメモリを提供するステップ、そして
ｂ）これらのパラメータを、集合的に数を表すように設定するステップからなる方法。
【請求項２】
さらに、
ｃ）前記パラメータを測定するステップ、そして
ｄ）前記測定パラメータを集合的に解読して前記数を取り戻すステップからなる、請求項１に記載の方法。
【請求項３】
前記メモリがソリッドステート・メモリであり、前記パラメータが電圧である、請求項２に記載の方法。
【請求項４】
前記ソリッドステート・メモリがフラッシュ・メモリである、請求項３に記載の方法。
【請求項５】
前記パラメータの各々が、１を超える数ｐの別個の帯域内で調整可能である、請求項４に記載の方法。
【請求項６】
前記メモリが単一ビット・セルのメモリであり、前記ｐが少なくとも３である、請求項５に記載の方法。
【請求項７】
前記メモリが、マルチ・ビット・セルのメモリであり、前記ｐが少なくとも５である、請求項５に記載の方法。
【請求項８】
前記設定が、さらに、
ｉ）Ｎ次元空間内に配置した中心点位置によって前記パラメータを表すステップ、なお、これらの中心点の各々は、前記Ｎ次元空間内の最も近くの隣点から、少なくとも２ｒに等しい距離だけ離れており、そして
ｉｉ）適当なコード化スキームを用いて前記中心点位置へ前記数をマッピングするステップを含む、請求項２に記載の方法。
【請求項９】
中心点位置の前記配置が誤り訂正コードに基づく、請求項８に記載の方法。
【請求項１０】
前記コードが拡張ハミング・コードである、請求項９に記載の方法。
【請求項１１】
公称ビット読み取り障害を持つ、ｍが少なくとも１の公称ｍビット・セル・メモリ技術において、ｂデータ・ビットを含む２進数を保存及び検索するための方法であって、
ａ）複数ｎ＜ｂ／ｍのセルを提供するステップ、
ｂ）これらのセルの各々に少なくとも２ｍ＋１の調節可能なパラメータ値を割り当てるステップ、そして
ｃ）前記パラメータ値を設定して集合的に前記数を表すことによって、前記公称ビット読み取り障害率が維持されるステップからなる方法。
【請求項１２】
さらに、
ｄ）前記パラメータ値を測定するステップ、そして
ｅ）前記測定パラメータ値を集合的に解読して前記数を取り戻すステップからなる、請求項１１に記載の方法。
【請求項１３】
前記メモリがソリッドステート・メモリであり、そして前記パラメータ値が電圧値である、請求項１２に記載の方法。
【請求項１４】
前記ソリッドステート・メモリがフラッシュ・メモリである、請求項１２に記載の方法。
【請求項１５】
前記集合的コード化が、さらに、
ｉ）前記パラメータ値を各々表す中心点位置をＮ次元空間内に配置するステップ、なお、前記中心点の各々は、前記Ｎ次元空間内で最も近い隣点から、少なくとも２ｒに等しい距離だけ離れており、そして
ｉｉ）適当なコード化スキームを用いて前記中心点位置に前記数をマッピングするステップを含む、請求項１２に記載の方法。
【請求項１６】
前記配置が誤り訂正コードに基づく、請求項１５に記載の方法。
【請求項１７】
前記コードが拡張ハミング・コードである、請求項１６に記載の方法。
【請求項１８】
ｂビットの２進数を保存するための記憶装置であって、
ａ）ｎがｂ／ｍよりも小さい公称ｍビット・セルの、複数ｎ個のセルを持つメモリ、
ｂ）前記ビットを表すために用いる複数の調整可能なパラメータ、
ｃ）前記数を前記メモリ内に保存するために前記調整可能なパラメータを集合的に設定する保存手段、そして
ｄ）前記パラメータを集合的に測定して前記メモリから前記数を検索する検索手段からなる装置。
【請求項１９】
前記メモリがソリッドステート・メモリであり、そして前記調整可能なパラメータが電圧である、請求項１８に記載の装置。
【請求項２０】
前記ソリッドステート・メモリがフラッシュ・メモリである、請求項１９に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の分野及び背景】
本発明は、コンピュータ・メモリ、特にフラッシュ・メモリ内に情報を保存するための方法に関する。フラッシュ・メモリは、デジタル情報を表すセルの大きなアレイからなる。通常、各セルは１ビットのデータを表す。マルチレベル・セル（ＭＬＣ）技術を用いるいくつかのタイプのフラッシュ・セルは、単一のセル内で一つ以上のビットに表すことが可能である。
【０００２】
物質学的には、各セルは、「電圧窓」と呼ぶ連続的なスペクトルから得る電圧レベルを持ち、電圧レベルは、各デジタル値を表す重なり合わない帯域に分かれている。単一ビットのセルのフラッシュでは、このような帯域は、二つだけである。一つが「０」ビット値を表し、もう一つが「１」ビット値を表す。セルにつきｍビットを持つＭＬＣフラッシュでは、ｍビットの各可能な値に対して一つずつ、２ｍの重なり合わない帯域がある。この既存のフラッシュ技術は、以下で「公称ｍビット・セルのフラッシュ技術」として言及する。
【０００３】
フラッシュ・セルの情報量を増加させることは、フラッシュ・メモリのデザインにおける重要な到達点である。このような増加によって、メモリのメガバイト単位でのコスト低減、そしてビット密度の増加が可能であり、より小さな領域、より小さな電力損、そしてより高い生産収率をもたらすことができる。
【０００４】
ＭＬＣ技術には、多くの投資が行われたため、現在、２ビット・セルのフラッシュ装置が市販されている。２ビットのセルが四つの帯域を、そして３ビットのセルが八つの帯域を必要とするため、電圧窓内に配置が可能な、重なり合わない電圧帯域の数が限定要因となる。電圧窓の大きさは、限度を越えて増加させることはできないし、また、電圧帯域の各々は、フラッシュ技術のいくつかの事実によって規定される有限幅を持つ。
・セル電圧レベルに関するリード回路及びプログラム回路の精度は、このようなすべての電気回路に固有のランダムなノイズによって制限される。
・プログラム／消去サイクル数は、損耗の影響で制限される。この影響には、電圧窓の縮小、そして各電圧帯域内へのバイアスの導入がある。その結果、フラッシュのＭＬＣ性能が減少する。
・フラッシュ・セルは、長い間プログラムを行わないと、ゆっくりとプログラム電圧を失う。したがって、不正値を持つセルの誤読を避けるためには、複数の電圧帯域は、間違った周波数帯内へのセル電圧の漂流を避けるために互いから十分に離れていなければならない。この影響は、フラッシュ・セルのデータ維持に時間制限を課す。
【０００５】
より高いＭＬＣ性能を達成するために、研究者らは、これらのノイズ及びバイアスの影響を抑制する方法を求めた。ハラリ（Ｈａｌａｒｉ）氏らは、米国特許第５１６３０４１号において、リファレンス・セルからなる装置を導入した。この装置では、フラッシュ・セルのグループに追加のフラッシュ・セルを取り付け、各ビット表示の電圧レベルでプログラムを行う。セル値は、固定値に比較するのではなく、リファレンス・セルのレベルに比較して読み取る。リファレンス・セルは、それらが取り付けられたデータ・セルと同じプログラミング経歴を持つため、損耗及び電圧損失から起こる組織的なバイアスの大部分を取り消すのに役立つ。しかし、これらの影響から起こる固有の信号対雑音減少を解決することはできない。
【０００６】
電圧帯域が明確な縁を持たないことに注意すべきである。実際、電圧は中心の周りに統計学的に分配され、そして帯域幅は、その分配の統計上の測定値である。したがって、帯域は、ある確立の範囲において重なり合わないというものであって、実際は、幾分重なり合い、ビット読み取り障害（ＢＲＦ）を起こす可能性もある。電圧帯域は、ある程度制約されて、すなわち、（例えば１００，０００の）プログラム／消去サイクリング耐性、そして（例えば１０年の）最少データ維持期間の目標に対して、ある特定な目標（例えば１０−１３）よりも低い公称ビット読み取り障害率（ＢＲＦＲ）になるようにデザインされる。以下で用いる「公称ＢＲＦ」そして／あるいは「公称ＢＲＦＲ」は、既存のフラッシュに関し、より一般的には、既存のソリッドステート・メモリのＢＲＦあるいはＢＲＦＲ特性に言及する。これらの任意の制約は、フラッシュ技術のＭＬＣ性能に対する限度を定めるものである。これらの目標仕様を緩める（すなわち、公称ＢＲＦＲを和らげる）ことによって、より大きなマルチ・ビット性能の達成が可能であるが、このような緩和は、本当にフラッシュ・セルの情報量を増加させるものではない。
【０００７】
したがって、単一ビット・セルの、そしてマルチレベル・セルのフラッシュ技術において、情報量を本当に増加させるための方法の必要性が広く認められる。このような方法を獲得することは、また非常に有利である。このような情報量の増加によって、多くの利点が得られるが、特に、メモリのメガバイト毎のコストを減少させる、あるいは択一的に、任意のメモリ・サイズに対する散逸性出力喪失及び製造コストを下げることが可能である。
【０００８】
【発明の要約】
本発明は、単一ビット・セルの、そしてマルチ・レベル・セルのフラッシュ技術において、また他のメモリにおいて、情報量を本当に増加させることが可能な方法を提示する。
【０００９】
本発明によれば、次のステップからなる、ｂデータ・ビットを含む２進数を保存して、そして検索するための方法が提供される。ａ）各セルが各々調整可能なパラメータを持つ、ｌを超える数ｎ個のセルを含むメモリを提供するステップ。そしてｂ）前記数を集合的に表すようにパラメータを設定するステップ。
【００１０】
本発明の方法の好適実施例によれば、この方法は、さらに次のステップからなる。ｃ）パラメータを測定するステップ。そしてｄ）これらの測定パラメータを集合的に解読して前記数を取り戻すステップ。
【００１１】
本発明によれば、公称ビット読み取り障害率を持つ、ｍが少なくとも１である公称ｍビット・セルのメモリ技術において、次のステップからなる、ｂデータ・ビットを含む２進数を保存及び検索するための方法が提供される。ａ）複数ｎ＜ｂ／ｍのセルを提供するステップ。ｂ）各セルに、少なくとも２ｍ＋１の調節可能なパラメータ値を割り当てるステップ。そしてｃ）これらのパラメータ値を設定して前記数を集合的に表すことによって、公称ビット読み取り障害率を維持するステップ。
【００１２】
本発明の方法の好適実施例によれば、この方法はさらに次のステップからなる。ｄ）パラメータ値を測定するステップ。そしてｅ）これらの測定パラメータ値を集合的に解読して前記数を取り戻すステップ。
【００１３】
本発明によれば、ｂビットの２進数を保存する、次のものからなる記憶装置が提供される。ａ）公称１セルにつきｍビットの、ｂ／ｍよりも少ない複数ｎ個のセルを持つメモリ。ｂ）ビットを表すために用いる複数の調整可能なパラメータ。ｃ）調整可能なパラメータを集合的に設定してメモリ内に数を保存する保存手段。そしてｄ）これらのパラメータを集合的に測定することによって、メモリから数を検索する検索手段。
【００１４】
【好適実施例の説明】
本発明は、コンピュータ・メモリの保存容量を増加させるための方法に関する。特に、公称ＢＲＦＲを増加させることなく、単一ビット・セルの、そしてマルチ・レベル・セルのフラッシュ技術によるメモリの情報量を本当に増加させるために用いることができる。以下の説明は、ほぼフラッシュ・メモリのみを扱うけれども、本発明は、この明細書にリストした基準を満たす他のメモリにも同様に適用できる。
【００１５】
本発明による単一ビット・セルの、そしてマルチレベル・セルのフラッシュ・メモリ内の情報量を増加させる方法の原理及び操作は、図面及びその説明文から明確に理解することができる。
【００１６】
本発明の基本は、単一セルの内容と言うよりも、隣接するセルのグループの集合的データ情報量の扱い及び使用にある。情報をデータ・ビットのグループとして処理する。各グループは、適当なコード化アルゴリズムを用いて、いくつかの隣接するフラッシュ・セルのグループの各々に対する電圧レベルへコード化し、これらの電圧レベルをフラッシュ・セル・グループ内へプログラムすることによって、情報を記録する。データを回収するには、フラッシュ・セルのグループの電圧レベルを読み、それらを適当な解読機構を介してデータ・ビットへ変換する。複数のセルを一緒にデータのコード化及び解読に用いることが、本発明の方法の不可欠な特徴である。
【００１７】
決まって、集合的コード化が変換する電圧レベルの数は、ＭＬＣ技術の通常の制約を用いた単一セル内へ入れられる電圧帯域数よりも大きい。例えば、単一ビット・セルの技術に対して、この方法は２レベル以上を保存することができる。一度に一つのセルのみを考えた場合、（より大きな公称ＢＲＦが許容されない限り）すべてのレベル間を実際に識別することは不可能であり、セル情報容量に負担がかかり過ぎる。一度にセルのグループを集合的に考慮し、コード化スキームを用いることによって、セル・グループの情報は、確実に検索することが可能であり、この情報量の純量も増加する。
【００１８】
【球体パッキング】
上記のように、単一フラッシュ・セルにおいては、大きさＶｍａｘの電圧窓内に、各々幅ｄのいくつかの重なり合わない電圧帯域が存在する。各電圧帯域の中心は、（単一ビット・セルにおいて）ビット値に対するプログラム電圧を、あるいは（マルチレベル・セルにおいて）いくつかのビット値を表す。二つの中心の間の最小電圧距離の半分を帯域半径ｒと定義すると、中心間電圧距離は少なくとも２ｒ＝ｄである。
【００１９】
さて、図面を参照する。図１は、二次元平面内における単一次元同等コード化を概略的に示す。さて、一度に二つの隣接するセルを考察すると、第一のセルの電圧１０をＸ軸上にポイントとして、次に第二のセルの電圧１２をＹ軸上にポイントとしてプロットすることができる。この場合、両セルの電圧窓は、ＸＹ平面内に電圧正方形を定義する。
【００２０】
両セルのすべての可能なデータ（電圧）値をプロットすると、それらが長方形の格子上に表れることが分かる。データ値あるいは「ポイント」、例えば、ポイント１４、１６、１８及び２０は、各々、Ｘ−Ｙ電圧帯域中心対によって表される。明らかに、このような二つのポイント間の最短平面距離は、少なくとも２ｒであり、これは、二つの座標の各々に沿う電圧帯域中心間の最小距離である。
【００２１】
さて、上記の分野及び背景の箇所で説明した要因のため、各々のセルの電圧値における歪みが、白色（ガウシアン）ノイズの特徴を持ち、さらに、二つのセル内の歪みには相関がないと推測する。これらの仮定の下では、ＸＹ平面内のポイントによって表されるレベルへプログラムされた一対のセルの電圧レベルの読み取り値が、そのポイントの周りの半径ｒの円、例えば、上記１４から２０のポイントに対応する円２２、２４、２６及び２８内に定まる。一般に、ノイズがあるために、一対のセルに対して読み取る電圧レベルは、それらの意図した真値に正確には一致せず、一つの円の中心によって表される。しかし、真値はほとんど常に、最も近い円の中心によって表され、間違った円の中心が最も近くなる確率は、単一セルの場合におけるビット誤り率に等しい。
【００２２】
個々のセルが、一つのセルにつき「ｍ」ビットを持つ場合、２ｍの電圧帯域が存在し、そしてＸＹ平面内には２２ｍの中心が存在する。これらは、二つのセルに対して期待されるように、「２ｍ」ビットの情報を表す。
【００２３】
図１から明らかであるが、これらの円は、電圧正方形全体Ｖｍａｘ２をカバーせず、実際には、僅かにπ／４（約７９％）をカバーしている。したがって、図１において、正方形３０内に位置する円２２、２４、２６及び２８の四つの１／４円は、正方形３０の約７９％をカバーしている。二次元平面内におけるこのような円配列は、平面をカバーするという点において、最も効率的なものではなく、例えば、円を六角形の格子内に配置することによって、電圧窓の正方形をより大きなパーセンテージでカバーすることができることは明らかである。
【００２４】
図２は、図１に示すものよりも高いパッキング密度を持つ、そのような円の六角形配列（電圧レベル読み取りポイント）を示す。円５２、５４及び５６の各々の１／６によってカバーされる三角形領域５０のパーセンテージは、約９０．６９％である。このより密度が高いパッキングによって、同じ電圧窓正方形内に、円を２２ｎよりも多く配置することができる。例えば、２２ｎ＋１の仮説の円パッキングでは、適当なコード化によって、一つのデータ・ビットの純益を得るために、二つのセルの組み合わせで「２ｍ＋１」ビットの情報を表すことが可能になる。さらに、円の半径がｒであるため、（幾何学的に）少しも重なり合わないように円を詰め込むことで、円中心間の距離が、少なくとも２ｒになることが保証される。したがって、このＢＲＦＲは、単一セルの場合の公称ＢＲＦＲに等しい、あるいはそれよりも良い。
【００２５】
図１及び図２に示す二次元的表現は、単に説明のためだけのものであることに注意して欲しい。二次元では、情報ゲインを得るのに十分なパッキング・ゲインが得られず、上記２２ｎ＋１の円のパッキングが追加の情報ビットをもたらすことも、二次元平面では実行の可能性がない。この追加の情報ゲインは、より高い次元においてのみ実行する価値が生まれる。しかし、これを幾何学的に図面に示すことは不可能である。
【００２６】
ｎセル値のこのｎ次元空間への表現を、２よりも多い数のセルが集合的にコード化されるケースへ一般化することは簡単である。三つのセルが一緒にコード化される場合、電圧窓は３次元空間内の電圧キューブで表され、電圧レベル読み取りポイントは球体の中心になる。これらの球体は、オレンジがスーパーマーケットで積み重ねられるように、効率良く詰め込まれる。四つの、あるいはもっと多くのセルが集合的にコード化される場合は、直接的な幾何学的表現はないが、ｎ次元キューブ内へのｎ次元球体の詰め込み問題は、容易に数学的に表すことができる。例えば、「球体パッキング、格子及びグループ 」（Ｊ． Ｈ． Ｃｏｎｗａｙ ａｎｄ Ｎ． Ｊ． Ａ． Ｓｌｏａｎｅ， ”Ｓｐｈｅｒｅ Ｐａｃｋｉｎｇｓ， Ｌａｔｔｉｃｅｓ ａｎｄ Ｇｒｏｕｐｓ”， Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ １９９９（３ｒｄ ｅｄｉｔｉｏｎ））内に説明がある。
【００２７】
次元を増加させることによって、情報パッキングの改善の可能性は急速に増大する。例えば、長方形の格子内の円は、平面のπ／４（約７９％）をカバーする。３次元空間内の球体は、その空間のπ／６（約５２％）だけをカバーする。４次元の超球は、４次元空間のπ２／３２（約３１％）をカバーする。
【００２８】
多次元空間内における球体パッキングの数学的な問題は、よく知られており、かなり研究されている。例えば、コンウェイ（Ｃｏｎｗａｙ）氏及びスローン（Ｓｌｏａｎｅ）氏が説明している。この球体イメージは、セル歪み反応（すなわち、ガウシアン、そしてセル間に相関がないこと）に関する仮定に基づいており、この仮定は本発明に不可欠ではないことに注意して欲しい。異なるノイズ反応は、球体以外の幾何学的イメージをもたらすかもしれないが、そのような形状もまた、長方形の格子においてよりも、より効率的な状態に詰め込める可能性があり、この場合も情報パッキング・ゲインが得られる。
【００２９】
要約すると、電圧レベル（セル値）は、ｎ次元の空間内に配置される中心点位置によって表され、各中心点は、最も近い隣点から、少なくとも２ｒに等しい距離だけ離れている。
【００３０】
【コードの構築】
本発明の実施例は、典型的に、データ・ビットのシーケンスを、フラッシュ・セルのグループの電圧レベルへ変換するコードのデザインを必要とする。
【００３１】
一つのセルにつきｍビットをコード化するフラッシュ技術を仮定すると、幅Ｖｍａｘの電圧窓内に、各々少なくとも２ｒ幅の、２ｍの電圧帯域が存在する。ｎ個のセルへ集合的に「２ｂ」ベクトル、すなわち「ｂ」ビットをマッピングするコードを考える。コーディングがなければ、これらのセルはｍｎビットの情報を持つ。サイドＶｍａｘのｎ次元キューブ内に、半径ｒのｎ次元の球体を詰める問題を考察する。
【００３２】
少なくとも２ｂのこのような球体を詰めることが可能であるなら、球体中心に少なくともｂビットの情報をマッピングするコードを構築することができる。パッキングがｂ＞ｎｘｍで存在するなら、純量でｂ−ｎｍ情報ビットの情報ゲイン が得られる。
【００３３】
要約すると、数字は、適当なコード（コード化スキーム）によって、上記の操作によってｎ次元空間で配置された中心点位置に集合的にマッピングされる電圧レベルへ変換される。
【００３４】
原理的には、任意の１対１マッピングでもよいが、実際は、計算が容易なマッピングを選択する。したがって、この方法は、システムの静的な特徴である球体パッキング配列を伴う。すなわち、処理中に一定で、目標データ・ゲインを達成するようにデザインされる。球体パッキングは、ｎ次元空間内におけるポイント（球体中心）の配置として表され、通常、基礎として誤り訂正コードを用いて構成される。配置と基礎コードとは同じものではないが、例えば、コンウェイ氏及びスローン氏が説明するように、数学的な要因を持つために相互に関係がある。球体パッキング構造を越え、そして、それからかなり分離して、データ（ビットのグループ）と、セル値のグループ、より正確には配置内のポイント（それらの座標がセル値と解釈される）との間には、１対１のマッピングがある。このマッピングは、読み取り（一方向）及び書き込み（逆方向）に際して調べられる、あるいは計算されるため、システムのダイナミックな特徴である。アルゴリズムを含む球体構築、そしてセル値へのデータ・ビットのグループ・マッピング、また、メモリ内へ数を書き込む他のすべての操作は、集合的に「保存手段」として言及する。
【００３５】
一つのセルにつき、通常のＭＬＣ技術では用いることができない分数ビットを利用することが可能であることに注目すべきである。例えば、目標仕様の条件下で、三つの電圧帯域が電圧窓内にフィットする場合、フラッシュ技術は、単一ビットのセルよりも良いが、（四つの電圧帯域を必要とする）２ビット・セルのＭＬＣに対しては十分ではない。しかしながら、マルチ・セル・コーディングを用いることによって、この３から２への冗長性をうまく利用し、情報ビット（セルにつき、漸近的にｌｏｇ２（３／２）が加えられたビット）を容易に得ることができる。
【００３６】
【フラッシュのデザイン】
本発明による方法は、あらゆる既存のフラッシュ・シリコン技術へ有利に適合性があり、上記のように、既存技術における容量の増加をもたらす。しかしながら、本方法の好適実施例は、典型的に、元来のフラッシュ・シリコンに存在するよりも、一つのセルにつきより多くのレベルの読み取り及び書き込みを可能にするために、フラッシュのデザイン変更を必要とする。
【００３７】
フラッシュへの書き込みでは、各セルは、元来のフラッシュ・シリコン内に通常プログラムが可能であるよりも、より多くのレベルへプログラム可能でなければならない。例えば、普通の単一ビット・セルのフラッシュ技術は、各セルを二つのレベル（０’Ｌ あるいは１’Ｌ）の一つへプログラムすることが可能な電気的なプログラミング・インタフェースを持つが、本発明の実施例は、３以上のレベルへ書き込む機能を必要とする。書き込み処理は、情報ビットのブロックを扱う。このようなブロックは、ビットの集合的コード化によって、フラッシュ・セルのグループの電圧レベルへコード化され、それから、これらのレベルは、通常のフラッシュ・プログラミング技術を用いて、フラッシュ・セルへプログラムされる（書き込まれる）ことが好ましい。
【００３８】
フラッシュの読み取りには、また、元来のフラッシュに通常存在するものよりも、より高い解像度を持つことが必要である。このことは、読み取り機構を説明することによって表すことができる。ｎ個の隣接するセルのグループの電圧は、読み取られるとき、ｎ次元のベクトルを構成する。このベクトルは、ｎ次元空間内におけるポイントであると仮定するなら、各次元はセル電圧レベルを表す。コードが依存する球体パッキングを考慮して、このポイントに幾何学的に最も近い球体中心を判定する。最も近い球体中心を判定した後、マッピング内のこの中心に対応する情報ビットのブロックを、デコーディングによって決定する。メモリからのビットの検索のために用いるアルゴリズム及び処理（例えば、下記に詳述する読み取り及び解読）は、「検索手段」として言及する。
【００３９】
各フラッシュ・セル電圧を読み取るときには、電圧値を計数値のセットの一つの値へ量子化する。したがって、ｎ次元空間内におけるセル・グループ値（あるいはそのｎ次元表現）の位置は、グループ値を表す各ｎ次元ポイントへの最も近い球体中心の判定における不確定性が増す量子化誤差を含んでいる。優れた結果を得るには、フラッシュの読み取り回路は、量子化誤差が、固有のフラッシュ・ノイズ及びディストーション・エラーと比較して小さく、公称ＢＲＦＲを増加させないように十分な解像度を持っていなければならない。
【００４０】
フラッシュ配列の読み取り書き込み回路の感度の増加は、概して、フラッシュ・セルの本質的な大きさに影響を与えない（増加させない）よう、チップ全体に役立つロジックによって行われる。
【００４１】
【拡張ハミング・コードを用いる実施例】
さて、本発明の方法の模範的な応用に関して説明する。この方法は、下記に「主要な方法」として言及する。単一ビット・セルのフラッシュを用いるこの例では、２５％の純量の情報ゲインを得るために、（既存のフラッシュにおける１６ビットの代わりに）２０ビットの情報を、公称ＢＲＦＲを増加させることなく、１６のセル内に保存する。
【００４２】
まず、一方が「０」、そして他方が「１」を意味する二つの電圧帯域（すなわち、セルにつき１ビット）を持つ元来のセルから始める。上記の定義によれば、帯域の中心は、互いから２ｒの距離にある。ここで、元の二つの間の中途に第三の電圧帯域を加え、このレベル「１」と呼び、元の二つのレベル「０」及び「２」とする。これで、一つのセルにつき、元の距離の２分の１、最小距離ｒで離れた三つのレベルが存在する。１６セルのブロックを考察すると、３１６のセル値の別個の組合せがあり、１６次元ハイパー・キューブ内に埋め込まれた１６次元の長方形格子上のポイントとして表してもよい。この場合、ハイパー・キューブの各次元における辺は、電圧窓の大きさになる。ハイパー・キューブ内には、（１６次元空間内における）少なくとも２２０の（幾何学的に）重なり合わない、各々が半径ｒの球体をパックすることができる。球体は重なり合わないため、中心間の幾何学的距離は少なくとも２ｒであり、これは、元の公称ＢＲＦＲを維持するのに必要な距離である。
【００４３】
球体パッキングの構成の基礎として、拡張ハミング・コードを用いる。ハミング・コードは、例えば、「誤り訂正コード」（Ｗ． Ｗｅｓｌｅｙ Ｐｅｔｅｒｓｏｎ ａｎｄ Ｅ． Ｊ． Ｗｅｌｄｏｎ， Ｊｒ．， ”Ｅｒｒｏｒ−Ｃｏｒｒｅｃｔｉｎｇ Ｃｏｄｅｓ”， Ｓｅｃｏｎｄ Ｅｄｉｔｉｏｎ １９７２， ＭＩＴ Ｐｒｅｓｓ）に表された誤り訂正コードの一つのタイプである。特に、ハミング・コードＨ（１５、１１、３）を用いる。このコードは、１１ビットの情報をコード化する全長１５のコード・ワードを持ち、ハミング最小距離が３である。これは、どの対のコード・ワードも、少なくとも三つの対応するビット位置において異なることを意味する。
【００４４】
さらに、各コード・ワードへ、もう一つのビット、すなわちそのパリティ・ビットを加えることによってハミング・コード・ワードを拡張し、拡張ハミング・コード（ＨＥＸ）、Ｈｅｘ（１６、１１、４）を得る。これで、コード・ワードは各々１６ビットであり、ハミング距離は、パリティ・ビットを加えることによって４に増加している。この見識は、元のハミング・コードでは、二つのコード・ワードが、正確に三つのビット位置で異なる場合に、それらのパリティも異なるという事実から説明できる。このため、パリティ・ビットの付加は距離を４へ増加させる。
【００４５】
さて、このコードによって、次のように球体を１６次元空間に配置する。拡張ハミング・コード内の各コード・ワードに対して、コード・ワード・ビット、すなわち対応するビットの値に沿う各次元内の「０」あるいは「１」で指定する座標に球体を配置する。さらに、「０」が「２」で置き換えるすべてのそのような位置に、中心を合わせて球体を配置する。換言すれば、すべての座標「２」を「０」に置き換えたなら、各球体中心の座標は、拡張ハミング・コードのコード・ワードである。次の理由により、どの二つの球体中心も、幾何学的距離２ｒで分離されている。
・二つの中心の一方が、他方が「０」を持つ一つの軸で「２」を持つ場合、この軸に沿って２ｒの距離がある。したがって、全体距離は２ｒ以上である。
・さもなければ、二つの中心の座標は、少なくとも四つの位置で、コードのハミング距離において異なる。したがって、中心間の幾何学的距離は、少なくとも√４ｒ２＝２ｒである。
【００４６】
拡張ハミング・コード・ワードを列挙し、コード・ワード内の０を２で置き換える順列を考えると、この構造が２２０以上の球体をもたらす（次のセクションの表１を参照）ことが容易に分かる。したがって、球体の位置によって２０ビットの情報をコード化することができる。
【００４７】
各球体位置へ２０ビットをコード化するこの計画を具現するためには、コード化スキーム（球体構成に対して用いる拡張ハミング・コードと混同しないこと）、すなわち、２０の情報ビットのブロックから球体中心（１６のセル値のブロックとして表現）への「マッピング」を設定することが必要である。このマッピングは、メモリに書き込むときに情報をコード化するために、そしてメモリから読み取るときにその情報を解読するために用いる。マッピングは、１対１で、書き込みのときは２０ビットを１６のセルへ、読み込みのときは１６セルから２０ビットへ、両方向に行われる。
【００４８】
メモリへ情報を書き込むとき、情報は、一度２０ビットにまとめることが好ましい。マッピングは、グループにした２０ビットを、値が「０」、「１」あるいは「２」である１６のセル値へ変換するために用いる。これらの値は、それから、従来のフラッシュ・プログラミング手段を介して、セルをプログラムするために用いることが好ましい。
【００４９】
メモリを読むときには、セル値を読み取り、従来のフラッシュ読み取り手段を介して、デジタル値へ量子化することが好ましい。上記の説明のように、読み取り値の解像度は、フラッシュ技術に固有のエラーに量子化誤差がほとんど影響を与えないように選択する。
【００５０】
１６のこのようなセル値のグループ、すなわち「ブロック」を読み込んで、集合的に考慮し、マッピング処理を介して、この「ブロック」に対応する球体中心を識別する。本質的に、これは、最も近い球体中心を決定する幾何学的な問題へ変換し、誤り訂正コードの理論に基づいてアルゴリズム的に処理する。それから、識別した球体中心は、プログラミングあるいは書き込みに用いるマッピングを反対に用いて、２０の情報ビットのブロックへ解読する。
【００５１】
原理的には、（１６のセル値を表す）球体中心への情報ビットのどのマッピングも適当であり、マッピング機構は、直接的な検索表（ＬＵＴ）のような単純なものでよい。しかし、この場合、このような表は２２０項目を必要とするため、マッピングは、ソフトウェアあるいはファームウェアでよりコンパクトに実施することが可能なように選択するのが好ましい。このような計画を次のセクションに詳述する。
【００５２】
【実用的なコード化及び解読方法】
このセクションでは、前のセクションで述べた、１６セルから２０ビットへのマッピングを具現するための、高速なファームウェアあるいはソフトウェアを用いる実用的な方法を説明する。
【００５３】
まず、コードＨｅｘ（１６、１１、４）のワードを列挙し、それらを、バイナリ・コード・ワードにおける１の数として定義するハミング重量でグループへ分類する。１６ビットのコード・ワードがハミング重量ｗである場合、その中の０の数は１６−ｗであり、０を２へ変更する異なる方法の数は２１６−ｗである。表１に、このコードの結果を要約する。表１から、２０の情報ビットをコード化するためには、最高で６のハミング重量のコード・ワードが必要であることが分かる。これらのコード・ワードだけを上記の構成に対して使用する。２０ビット、すなわち２２０の異なる球体を識別するためには、次の計算によれば、（合計２１１＝２０４８から）５４１のコード・ワードが必要である。１ｘ２１６＋１４０ｘ２１２＋４００ｘ２１０＝１，０４８，５７６＝２２０。ここで、コード・ワードの数は、５４１＝１＋１４０＋４００である。
【００５４】
【表１】
2004517435.tif 000003
【００５５】
二つの検索表を用いる。一つはコード化（書き込み）のためのもので、もう一つは解読（読み取り）のためのものである。コード化表は、重量が６までの５４１のコード・ワードを含み、これらは、ハミング重量によって分類する（等しい重量を持つコード・ワードの順序は任意）。コード化表の最初の１４０項目は、ハミング重量４を持つ拡張ハミング・コード内にコード・ワードを保持し、次の４００項目は、ハミング重量６を持つ拡張ハミング・コード内にコード・ワードを保持する。解読表は、各コード・ワードに対して一つずつ、２０４８の項目を含み、それらには、（１１ビットの）情報ビットの索引が付けられる。これは、ハミング・コード、そしてまた拡張ハミング・コードも系統的なコードであるため、達成が可能である。
【００５６】
表項目は、そのコード・ワードに対応する２２０の範囲の原点を含む。５４１のコード・ワードだけが用いられるので、僅かに５４１が意味のある情報を含む。残りは、「気にしない」か、あるいは解読エラーを示す。
【００５７】
コード化処理は、増加するハミング重量で表が分類されているという事実を用いて、コード化表における索引を計算することによって行う。この計算は、索引と、その項目に対する「残り」、すなわちオフセットをもたらす。オフセット・ビットは、それから、コード・ワード内のどの０が２へ変更されるのかを決定するために用いられる。これは、下記に疑似コードで説明する。
【００５８】
コード化処理は、２０ビットの数Ｎを入力として受ける。Ｎのバイナリ表現のビット「ｋ」をＮ（ｋ）として示す。
【００５９】
【数１】
2004517435.tif 000004
【００６０】
次に解読処理を説明する。解読は、各対応するセル電圧の１６の値のベクトルＣを入力として受ける。読み取ったセル「ｋ」電圧レベルをＣ（ｋ）として示す。
【００６１】
１．１６のセルの各々を読み取り、各セルに対するＣ（ｋ）、Ｄ（ｋ）、Ｅ（ｋ）を得る。
【００６２】
【数２】
2004517435.tif 000005
【００６３】
２．コード・ワードを得るために、ソフトな拡張ハミング入力Ｅ（ｋ）に対して最大公算デコーディングを行う。
【００６４】
３．Ｄ（ｋ）を数に変換することによって、情報コード・オフセットを計算する（これはコード化スキームの最後のステップの反対である）。
【００６５】
【数３】
2004517435.tif 000006
【００６６】
４．２０ビット情報値Ｎへの置き換えを行う。
ＩｎｆｏＩｄｘ ← Ｃｏｄｅ−ｗｏｒｄ ［ｂｉｔｓ ０：１０］； ／／コード・ワードの最初の１１ビットは情報ビットである。
Ｎ ← ＤｅｃＴａｂｌｅ ［ＩｎｆｏＩｄｘ］ ＋ ｏｆｆｓｅｔ； ／／ このコード・ワードに対する原点にオフセットを加えてＮを得る。
【００６７】
上記ステップ２の最大公算デコーディングは、読み取ったセル値のグループが表すポイントへの、球体パッキング配列内の幾何学的に最も近い中心点を見いだすためのアルゴリズムである。最大公算デコーディングを行う種々のアルゴリズムは、この技術における、例えば、「コードの格子状構造」（ｈｅ Ｖｉｔｅｒｂｉ ａｌｇｏｒｉｔｈｍ ａｓ ｄｅｓｃｒｉｂｅｄ ｉｎ Ａ． Ｖａｒｄｙ， ”Ｔｒｅｌｌｉｓ Ｓｔｒｕｃｔｕｒｅ ｏｆ Ｃｏｄｅｓ”， Ｃｏｏｒｄｉｎａｔｅｄ Ｓｃｉｅｎｃｅ Ｌｉｂｒａｒｙ， Ｕｎｉｖｅｒｓｉｔｙ ｏｆ Ｉｌｌｉｎｏｉｓ ａｔ Ｕｒｂａｎａ−Ｃｈａｍｐａｉｇｎ， １９９８）に説明されている。
【００６８】
【高次拡張ハミング・コード】
１６のセルに対するコードで明示して上記に詳述した、２５％の情報ゲインがある拡張ハミング・コードを用いる方法は、３２、６４、１２８等のセルに対する高次の拡張ハミング・コードへ直接的に適用できるものである。より高次なものに対して、比例的な情報ゲインは、規則的に増加し、約５８％の限度に到達することが分かる。
【００６９】
これを証明するために、全長が２の累乗であるブロックに対する拡張ハミング・コードがあることを考察する。Ｈｅｘ（２ｍ、２ｍ−ｍ−１、４）、そしてｎ＝２ｍである。このコードに対するチェック・マトリックスは、２ｍｘ（ｍ＋１）であるため、シンドロームは（ｍ＋１）ビットを持つ。コードの共通セットは、任意のシンドロームを持つワードのセットとして定義することができる。コード・ワードのセットは、すべてゼロからなるシンドロームを持つ共通セットであり、他の共通セットは、固定ビット・ベクトルによって設定されるコード・ワードの置き換えである（この置き換えとは、ビット付加モジュール２、あるいはビットＸＯＲ操作を意味する）。
【００７０】
「ｎ＝１６」の例で上記に得た球体配列の構成から、拡張ハミング・コードだけではなく、その共通セットのどれもが、球体パッキング構成に対する基礎として役立つことは明らかである。共通セットに基づく球体パッキング構成の配列は、異なる数の球体をもたらす可能性がある（共通セット・ワードにおける０の２への変更のやり方に違いがあるため）。しかしながら、
・ｎ次元電圧空間内のポイントの全数は３ｎである。
・別個の共通セットの数は、可能なシンドロームの数に等しく、それが２ｍ＋１である。
・各ポイントは、一つの、そしてたった一つの共通セットに対する球体構造の中心である。
・少なくとも一つの共通セットに対して、球体構造は、すべての共通セットに対する球体構造のための平均よりも、より多くの球体中心を持つ。
【００７１】
したがって、少なくとも３ｎ／２ｍ＋１球体を持つ球体構成がある。この構成が表すことが可能な情報ビット数は、ｌｏｇ２（３ｎ／２ｍ＋１）＝ｎｌｏｇ２３−ｍ−１の整数部分である。ｎ個のセルの元来の情報量は「ｎ」情報ビットであることを思い出して、比例的なゲインは、ｌｏｇ２３−（ｍ−１）／ｎであり、ｎ→∞で（ｎ＝２ｍとして）ｌｏｇ２３＝１．５８４９６の限度で単調に増加する。したがって、拡張ハミング・コード構成を介して５８％の情報を得ることができる。ｎ≧１２８に対しては５０％のゲインが達成可能である。
【００７２】
【単純化した実施例】
簡単な実施例では、上記の主要な方法の複雑さを避けるために単純化することができる。この場合、各セルに、信号対雑音が許容できる以上により多くのレベルを定義し、各グループが冗長セルを含むグループにおけるセルを考慮する。冗長セルを十分に加えるなら、誤り訂正コードで情報をコード化することによって、必要な公称ＢＲＦＲで情報を引き出すことが可能である。基本的に、この単純化した方法は、各セル内に情報を過剰に詰め込み、そして冗長性及び誤り訂正コードを用いて確実に情報を回収することからなる。この単純化した実施例の利点は、応用及び使用の容易さにある。しかしながら、得ることが可能な情報ゲインは、上記の主要な方法に比べ、かなり少ない。
【００７３】
【他の構成】
球体構成の基礎として他のコードを用いる、そして電圧窓を３以上の個別のレベルに小分割することによって、本発明の方法が提供する情報ゲインの向上のより良い結果を達成することができる。
【００７４】
上記の方法は、基本技術として単一ビット・セルのフラッシュを用いると見なした。真のマルチ・レベル・セル性能を持つフラッシュ技術を用いる場合、同様の技術が適用可能である。この場合、本発明の方法の好適実施例においては、電圧窓を、固有の（公称の）マルチ・レベル・セル性能の許容レベル以上の、より多くのレベルへ小分けして、一度に複数のセルをコード化することによって、全体的な情報量を向上させる。球体パッキング理論における既知の結果から、本発明の適用により達成可能な情報ゲインは、セル・グループの大きさの増加に伴って、ゆっくりと（対数的な率で）ではあるが、限度なく増加することが分かる。
【００７５】
【他の保存技術への応用】
上記の説明から、本発明の方法が、単にフラッシュ技術ばかりでなく、下記のような他のデジタル保存技術にも適用可能であることは明らかである。
・情報をアナログ量のユニットで保存する。
・これらのアナログ量を個別のデジタル値へ量子化する。
・区別可能なデジタル値の数は、信号対雑音比によって限定される。
【００７６】
この明細書内で述べたすべての公報、特許及び特許出願は、参照としてそれらの全体が、特に、そして個々に組み込むことを指示したと同様に、この明細書に組み込まれる。さらに、この出願書内に参照として述べた引用あるいは確認事項は、従来の技術として本発明へ利用可能であると解釈するべきではない。
【００７７】
本発明は、限られた実施例で説明したが、多くの変更及び改良、そして他の用途が可能であることは明らかである。
【図面の簡単な説明】
本発明を、次の添付図面を参照しながら実施例を用いて説明する。
【図１】
二次元平面内における単一次元同等コード化の概略的な説明図である。
【図２】
二次元最適コード化スキームの概略的な説明図である。
【図１】
2004517435.tif 000007
【図２】
2004517435.tif 000008
【国際公開パンフレット】
2004517435.tif 000009
2004517435.tif 000010
2004517435.tif 000011
2004517435.tif 000012
2004517435.tif 000013
2004517435.tif 000014
2004517435.tif 000015
2004517435.tif 000016
2004517435.tif 000017
2004517435.tif 000018
2004517435.tif 000019
2004517435.tif 000020
2004517435.tif 000021
2004517435.tif 000022
2004517435.tif 000023
2004517435.tif 000024
2004517435.tif 000025
2004517435.tif 000026
2004517435.tif 000027
2004517435.tif 000028
2004517435.tif 000029
2004517435.tif 000030
2004517435.tif 000031
2004517435.tif 000032
【国際調査報告】
2004517435.tif 000033
2004517435.tif 000034