(57)【特許請求の範囲】
【請求項１】
複数のメモリセルを含むメモリアレイを有する多重レベル不揮発性メモリ装置におけるデータ管理方法であって、
前記メモリセルの各々がビットの非バイナリの数を、記憶し、
ビットの非バイナリの数が三つの隣接するバイトに関連し、三つの隣接するバイトにわたって分布し、
一つまたは二つのバイトへの書き込みが、
ａ）三つのバイト（Ｂ０〜Ｂ２）を読み出し（２５）、
ｂ）隣接するバイト（Ｃ２，Ｃ５）のセル共有ビットの内容を記憶し（２６）、
ｃ）三つのバイトの第１（Ｂ１）が書き込まれるべきかチェックし（２７）、
ｄ）そうである場合、三つのバイトの第２（Ｂ０）が書き込まれるべきかチェックし（２８）、
ｅ）ステップｄ）におけるチェックが肯定の場合、ユーザデータおよびセルの記憶された内容に基づいて、ユーザデータに基づいて書き込まれるべき第１および第２のバイトにのみ関連するセル（Ｃ４〜Ｃ０）と、書き込まれるべきでない第３のバイトとともにビットを共有するセル（Ｃ５）とを書き込み（２９）、
ｆ）ステップｄ）におけるチェックが否定の場合、三つのバイトの第３（Ｂ２）が書き込まれるべきかチェックし（４０）、
ｇ）ステップｆ）におけるチェックが肯定の場合、ユーザデータおよびセルの記憶された内容に基づいて、ユーザデータに基づいて書き込まれるべき第１および第３のバイトにのみ関連するセル（Ｃ７〜Ｃ３）と、書き込まれるべきでない第２のバイトとともにビットを共有するセル（Ｃ２）とを書き込み（３０）、
ｈ）ステップｆ）におけるチェックが否定の場合、ユーザデータおよびセルの記憶された内容に基づいて、ユーザデータに基づいて書き込まれるべき第１のバイトにのみ関連するセル（Ｃ３，Ｃ４）と、書き込まれるべきでない第２および／または第３のバイトとともにビットを共有する一つ以上のセル（Ｃ２，Ｃ５）とを書き込み（４１）、
ｉ）ステップｃ）におけるチェックが否定の場合、第２（Ｂ０）または第３のバイトが書き込まれるべきかチェックし（３５）、
ｊ）ユーザデータおよびセルの記憶された内容に基づいて、ユーザデータに基づいたステップｉ）に基づいて書き込まれるべきバイトにのみ関連するセル（Ｃ０，Ｃ１；Ｃ６，Ｃ７）と、書き込まれるべきでない隣接するバイトとともにそのビットを共有するセル（Ｃ２；Ｃ５）とを書き込む（３６；３８）、
ことを有することを特徴とするデータ管理方法。
【請求項２】
請求項１に記載のデータ管理方法において、
前記ビットの数が３であることを特徴とするデータ管理方法。
【請求項３】
請求項１に記載のデータ管理方法において、
同じクロックサイクル内に、前記複数のバイトを含んだデータワードを読み込むステップを有することを特徴とするデータ管理方法。
【請求項４】
請求項１に記載のデータ管理方法において、
外部アドレスに従って前記複数のバイトから一つのバイトを選択するステップを有することを特徴とするデータ管理方法。
【請求項５】
請求項１に記載のデータ管理方法において、
同じクロックサイクル内に、前記隣接するメモリセルの予め決められた数と、前記ビットの非バイナリ数との積に等しいビットの数を読み出し、そして、前記読み出されたビットの数と記憶されたビットの数との差に等しいビットの数を削除するステップを有し、
前記記憶されたビットの数がパケット内におけるビットの数に等しいことを特徴とするデータ管理方法。
【請求項６】
請求項１に記載のデータ管理方法において、
前記記憶するステップが、前記データワードと付加情報とを同時に記憶することを含み、
前記付加情報が、前記データワードのビットを含んだメモリセル内に、少なくとも部分的に記憶されていることを特徴とするデータ管理方法。
【請求項７】
請求項６に記載のデータ管理方法において、
付加情報を記憶する前記ステップが、利用可能なビットの数とワードビットの数との差に等しいビットの数を記憶することを含み、
前記利用可能なビットの数が、メモリセルの予め決められた数と前記ビットの予め決められた数との積に等しく、
前記ワードビットの数が、前記複数のバイト内におけるバイトの数と前記ビットの予め決められた数との積に等しいことを特徴とするデータ管理方法。
【請求項８】
請求項１に記載のステップの前に、
ｋ）三つのバイト全てが書き込まれるべきかチェックし（２１）、
ｌ）そうでない場合、ステップａ）〜ｊ）を行い、
ｍ）ステップｋ）におけるチェックが肯定の場合、三つのバイトに関連する全てのセルを並列して書き込む（２２）、
ことが行われることを特徴とする、請求項１に記載のデータ管理方法。
【請求項９】
複数のメモリセル（１１）を含むメモリアレイ（１０）を有する不揮発性メモリ装置（１０）であって、
前記メモリセルの各々がビットの非バイナリの数を記憶し、
本装置はさらに、
ａ）三つのバイト（Ｂ０〜Ｂ２）を読み出す（２５）手段と、
ｂ）隣接するバイト（Ｃ２，Ｃ５）のセル共有ビットの内容を記憶する（２６）手段と、
ｃ）三つのバイトの第１（Ｂ１）が書き込まれるべきかチェックする（２７）第１の手段と、
ｄ）チェックする（２７）第１の手段で行われるチェックの肯定結果によって可能になる、三つのバイトの第２（Ｂ０）が書き込まれるべきかチェックする（２８）第２の手段と、
ｅ）チェックする（２８）第２の手段で行われるチェックの肯定結果によって可能になる、ユーザデータおよびセルの記憶された内容に基づいて、ユーザデータに基づいて書き込まれるべき第１および第２のバイトにのみ関連するセル（Ｃ４〜Ｃ０）と、書き込まれるべきでない第３のバイトとともにビットを共有するセル（Ｃ５）とを書き込む（２９）第１の手段と、
ｆ）チェックする（２８）第２の手段で行われるチェックの否定結果によって可能になる、三つのバイトの第３（Ｂ２）が書き込まれるべきかチェックする（４０）第３の手段と、
ｇ）チェックする（４０）第３の手段で行われるチェックの肯定結果によって可能になる、ユーザデータおよびセルの記憶された内容に基づいて、ユーザデータに基づいて書き込まれるべき第１および第３のバイトにのみ関連するセル（Ｃ７〜Ｃ３）と、書き込まれるべきでない第２のバイトとともにビットを共有するセル（Ｃ２）とを書き込む（３０）第２の手段と、
ｈ）チェックする（４０）第３の手段で行われるチェックの否定結果によって可能になる、ユーザデータおよびセルの記憶された内容に基づいて、ユーザデータに基づいて書き込まれるべき第１のバイトにのみ関連するセル（Ｃ３，Ｃ４）と、書き込まれるべきでない第２および／または第３のバイトとともにビットを共有する一つ以上のセル（Ｃ２，Ｃ５）とを書き込む（４１）第３の手段と、
ｉ）チェックする（２７）第１の手段で行われるチェックの否定結果によって可能になる、第２（Ｂ０）または第３のバイトが書き込まれるべきかチェックする（３５）第４の手段と、
ｊ）ユーザデータおよびセルの記憶された内容に基づいて、ユーザデータに基づいてチェックする（３５）第４の手段によって特定される書き込まれるべきバイトにのみ関連するセル（Ｃ０，Ｃ１；Ｃ６，Ｃ７）と、書き込まれるべきでない隣接するバイトとともにそのビットを共有するセル（Ｃ２；Ｃ５）とを書き込む（３６；３８）第４の手段と、
を有することを特徴とする不揮発性メモリ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、多重レベル不揮発性メモリ内にデータを格納（記憶）すると共に読み出す方法に関する。
【０００２】
【従来の技術】
良く知られているように、制御ゲート領域を介してバイアスを掛けられ得る浮遊ゲート領域を有するＭＯＳトランジスタを、基本セルとして利用するメモリ装置では、２つの論理状態を識別するために、そのセルのしきい電圧を調整する可能性が開発されている。その論理状態のうち１つの状態では、浮遊ゲート領域が消去されたセルの何らの電荷や特性を含まず（論理「１」）、そして別の状態では、浮遊ゲート領域が、しきい電圧のかなりの増加を決定するために十分な多数の電子を記憶しているので、プログラムされたセルの状態を識別する（論理「０」）。
【０００３】
従来の２レベルのメモリ内にメモリセルを読み出すために、制御ゲート領域を読み出し電圧Ｖｒｅａｄに持って来て、そしてセル内を流れる電流を読み取る（図１Ａ）。セルが書き込まれると、そのしきい電圧が読み込み電圧より高くなり、それによって電流が流れなくなる。セルが消去されると、そのしきい電圧が読み込み電圧より高くなり、セルが電流を通す。
【０００４】
メモリセル内に含まれている情報は、読み出し電流又は「センス増幅器」を介して読み込まれる。読み出し電流又は「センス増幅器」はセルの電流と基準電流とを比較し、デジタル形式で記憶された情報を出力する。
【０００５】
多重レベル不揮発性メモリ、即ち、１セル当たり１ビット以上が記憶されているメモリが、最近、市場に出現している。この種のメモリでは、浮遊ゲート領域内に記憶された電荷が更にばらばらに砕かれて２n に対応する多数の分布を発生させる。ここに、ｎは各セル内に記憶され得るビット数である。例えば、１セル当たり２ビットの場合には、読み出し回路は４つのしきい電圧分布で作られなければならない（図１Ｂ）が、２レベルメモリの場合のように２つのしきい電圧分布でもはや作られない（図１Ａ）。図１Ａ及び図１Ｂは、しきい電圧の典型的な値を示している。
【０００６】
２レベルメモリの場合、及び、多重レベルメモリの場合では、電気的に消去した後のセルのしきい電圧分布は、通常、約１〜２．５Ｖである。この分布の下限は、使い尽くされたセル（即ち、バイアス電圧がその制御ゲート領域に印加されていない時でさえ、電流を流すセル）の不足を保証するための、そして、浮遊ゲート領域の下方の薄い酸化物領域が書き込み段階で損傷されるのを防止するための要求によって、与えられる。その上限は、それよりむしろ、その分布の固有の増幅による。加えて、プログラムされるレベルは、信頼性のために６．５Ｖより上にシフトされ得ない。
【０００７】
図１Ａと図１Ｂとの間の比較から明らかに推定され得るように、多重レベルプログラミングは分布間の間隔の減少と、それによって、読み出し段階で検出され得る電流差の減少とを引き起こす。
【０００８】
特に、２０μＡ／Ｖのセル利得を想定すると、２レベルメモリの場合には、２つの分布間に５０μＡの間隔が存在するのに対して、４レベルメモリの場合には、たとえ（ビット「００」に対応する）高い分布が、２レベルメモリの場合と比べて高い電圧で設定されたとしても、分布間に２０μＡの間隔が存在する。
【０００９】
異なるしきい電圧値用のセル内を流れる電流間の間隔の減少によって、ますます複雑にされ、ノイズに更に影響され易い等の読み出し回路を設計することが必要とされる。
【００１０】
二進法について論じれば、単一セル内に記憶されるビット数を更に増加させるために、１セル当たり４ビットを記憶することが必要であり、これは同一しきい電圧間隔の全体の中で１６個のしきい電圧分布に対応する。２００ｍＶの分布増幅と、１００ｍＶの異なったしきい電圧レベル間の間隔とを想定すれば、２μＡの電流差に直面させられる。
【００１１】
加えて、集積化密度が増大するにつれ（現在０．１３μｍの技術が用いられている）、セル利得は減少する傾向がある。その結果、１０μＡ／Ｖのゲインに関して、２つの隣接するレベルに対応する電流間の間隔は１μＡまで落ちる。即ち、それは、１セル当たり２ビットの場合と比べて２０倍の割合で、減少する。その結果、１セル当たり２ビットから１セル当たり４ビットまで通過するのに要する精度は、１セル当たり１ビットから１セル当たり２ビットまで通過するのに要する精度より更に高い。
【００１２】
【発明が解決しよとする課題】
従って、本発明の目的は、読み出し精度、複雑性、及び危険度評価（criticality）の必要条件を過度に圧迫することなく、不揮発性メモリの記憶容量の増大を可能とする記憶方法を提供することにある。
【００１３】
【課題を解決するための手段】
本発明によれば、請求項１及び１５で各々明確にされるように、記憶方法及び多重レベル不揮発性メモリ装置が提供される。
【００１４】
本発明を理解できるように、添付図面を参照して、非限定的な実施の形態を純粋に与えるために、その好適な実施の形態が以下説明される。
【００１５】
【発明の実施の形態】
本発明によれば、多重レベルメモリでは、各セルがビットの非バイナリを記憶（格納）している。このビットの非バイナリ数は２の整数べき（累乗）、例えば（８レベルに対応する）３ビットではない。２の整数べきは、上述によれば、（1セル当たり１６個の異なるレベルに対応する）４ビットに要する増大よりも更に低い読み出し及び書き込み精度の増大を必要としている。本明細書中では、表現「ビットの非バイナリべき数」は、２の整数べきでないビットの数を言う。
【００１６】
ビットの非バイナリべき数を記憶することは、従来のメモリの処理方法とデジタル社会全体とに対立させられる。メモリの現実の容量は、現在、２進法で定義されている：１メガビット（１Ｍｂｉｔ）メモリ方法と言われ、実際には、１０２４×１０２４（２20）ビットと言われる。
【００１７】
従って、１セル当たりのビットの非バイナリべき数を採用することにより、セル内に記憶されたビットを管理（読み出しやプログラミング）する方法を再検討する必要性を伴う。例えば、単一のメモリセルが２ビットを記憶すると、１メガビットメモリは５１２キロセル（５１２  Ｋｃｅｌｌ）を含む必要がある：１セル当たり４ビットの場合には、メモリはちょうど２５６キロセルまで減らされる。後者の場合には、２５６キロセルは、純粋なバイナリ復号（バイナリデコーディング）と一緒にアドレス指定され、且つ、バイナリワード（例えば、バイト、ワード、ダブルワード等）に分割され得るバイナリアレイ（配列）を順に形成する。
【００１８】
単一のセル内で３ビットを使用することにより、アレイ（配列、列）を形成したセルの個数がもはやバイナリ（二進法）でなくならされるので、存在状況が変更される。実際には、８ビット、即ち、１バイトのワードで動く装置を設計する必要があると、各バイトに対して３つのセルをまとめる必要がある。これは、配列内で利用可能な８ビット毎に１ビットを使用できないことを意味する。実際に、１セル当たり３ビットで８ビットを分割すると、
（８ビット）／（３ビット／セル）＝２．６７セル
が得られ、これは、使用されないが利用可能なセルの
（３−２．６７）／３＝１１％
に相当する。
【００１９】
上記した問題を解決するために、３つの解決法が以下に説明される。以下の説明では、明確且つ簡単のために、１セル当たり３ビットで説明するが、同じ論法が、ビットの任意の非２バイナリべき数を含んだ多重レベルセルの更に一般的な状況に範囲を広げられる。
【００２０】
第１の解決法によれば、メモリ内で管理されているワード（以下、「内部ワード」と言う）の長さは、（通常、外部世界、例えば、メモリを内蔵した電子装置との連絡に用いられている）１６又は３２ビットより高く選択される。実際に、バイナリワードにおけるビット数を三分割すると、そのワードを記憶するのに必要なセル数が得られる。明らかに、この分割により得られる数は、整数ではなく、四捨五入以上にされなけらばならない。過剰のビットは復号レベルで削除される。
【００２１】
例えば、２５６ビットワードの場合には、
（２５６ビット）／（３ビット／セル）＝８５．３３セル
が得られ、これによって、８６セルを満たす。このため、
（８６−８５．３３）／８６＝０．８％
に等しい未使用なセルの割合が得られる。
【００２２】
５１２ビットワードの場合には、０．１９％の未利用の割合が得られる。両者の場合、１セル当たり３ビットを記憶することから得られる利点に比べられたら、セルの未利用のため領域の浪費は無視して良い。
【００２３】
ＮＡＮＤアーキテクチャを有するフラッシュメモリの場合には、ワード（即ち、同じ行に配列されたセルの数）が５１２バイトを持つ。即ち、２ビットのみが、実際に用いられている４０９６ビット毎に使用されず、それによって、０．０５％の浪費の割合を引き起こしている。
【００２４】
以下に、１例として、２５６ビットワードに対する第１の解決法の手段が説明される。１セル当たり３ビットが記憶されている時、図２に示すようにワードは８６メモリセル内に記憶され得る。８６メモリセル内には、メモリ配列１０に属するメモリセルＣ０，Ｃ１，Ｃ２，…，Ｃ８５が各々ビット＜０＞−＜２＞，＜３＞−＜５＞，＜６＞−＜８＞，…，＜２５５＞−＜２５７＞を記憶（格納）している。これらのビットのうち、ビット＜０＞−＜２５５＞は一つのワードを形成し、ビット＜２５６＞及び＜２５７＞は意味を持たない。それぞれのセンス増幅器ＳＡ０，ＳＡ１，ＳＡ２，…，ＳＡ８５は各セルＣ０，Ｃ１，Ｃ２，…，Ｃ８５に接続されている。こうして、センス増幅器は２５８ビットを出力する。メモリセルを読み出す時に、センス増幅器ＳＡ８５の出力で最後の二つのビットは、（例えば、センス増幅器ＳＡ８５の不適切な二つの出力を接続しないことによって、ハードウェア的な方法で）除去されて、従来の方法で使用可能な記憶されたバイナリワードを得る。勿論、除去される二つのビットは、センス増幅器からの出力時にビット列の任意の点で、いずれにしても任意の二つである。
【００２５】
図３は不揮発性メモリ１のアーキテクチャを示す。その不揮発性メモリ１は、複数のメモリセル１１によって形成され、バイナリ行デコーダ１２を通してアドレス指定されるメモリアレイ１０を有する。バイナリ行デコーダ１２は、外部から、９ビット行アドレスＲＡと、５１２ワードラインＷＬ０，ＷＬ１，…，ＷＬ５１１のうち各時間アドレス指定ワードとを受信する。この場合には、メモリアレイ１０は８６列（ＣＯＬ０，ＣＯＬ１，…，ＣＯＬ８５）を有し、そのメモリアレイ１０の各々がそれぞれのセンス増幅器ＳＡ０，ＳＡ１，ＳＡ２，…，ＳＡ８５に接続されている。センス増幅器ＳＡ０，ＳＡ１，ＳＡ２，…，ＳＡ８５の出力は、バイナリ列デコーダ１６によって制御される多重通信用装置（マルチプレクサ）１５に接続されている。そのバイナリ列デコーダ１６は、外部から、５ビット列アドレスＣＡを受信する。多重通信用装置１５は１バイトを出力する。
【００２６】
理解されるように、行（ワードライン）数は二進法（バイナリ）であり、これらの行は標準的な方法で行アドレスＲＡから復号される。内部ワードは２５６ビットを有し、３２バイト（２5 バイト）に対応する。列アドレスＣＡに従って、バイナリ列デコーダ１６が、多重通信用装置１５によって供給された３２バイトのうち１バイトを選択し、その結果、外部に利用できる。
【００２７】
明らかに、メモリアレイ１０は、８６の整数倍である多数の列を含み、同一ワードライン上で読み込まれる２５６ビットワードの数に対応している。
【００２８】
たとえ、図３のアーキテクチャが、並列に働かなければならないセンス増幅器の数の増加を伴い、その結果、占有領域、消費量及びノイズの増加を伴っても、１セル当たりビットの非バイナリべき数を記憶することは、特に、後述の場合に大きな利点である。
【００２９】
現在、「バースト読み出し」と呼ばれる同期式読み出し方法がますます普及し、その同期式読み出し方法は、メモリとそれを使用する装置との間のデータ転送を向上させる。この読み出し方法を使って、データは、外部クロックに同期してメモリの出力に供給される。クロック周波数は、通常、非同期アクセス時間に対応する周波数より高い。例えば、クロック周波数が５０ＭＨｚ（周期Ｔ＝２０ｎｓ）であり、そして一方、アクセス時間は（１０ＭＨｚに対応する）約１００ｎｓである。従って、各クロックパルスで利用可能な外部ワードを持つように、出力へ供給される（外部）ワードよりも長い（内部）ワードを、メモリ内に、読み出す必要がある。
【００３０】
更に、多重レベルメモリ装置は、セルの異なるしきい電圧を記憶するのに要する高い精度のため、プログラミング時間が２レベルメモリより長いという問題を持っている。このような状況を補うため、低減され、そして２レベルセルをプログラミングするのに必要なプログラミング時間に匹敵する（１バイト当たり）効果的なプログラミング時間を得るように、非常に多くのセルが並列的にプログラムされる。
【００３１】
加えて、パリティビットを使用するエラー修復方法、即ち誤り訂正符号(EEC)が最近利用されている。必要なパリティビットの数、それ故、その配列のサイズを含むために、訂正は非常に長いワードで行わなければならない。
【００３２】
パリティビットを備えたエラー修復を使用すると、訂正が行われたワード全体が、パリティビットと並列に書き込まれなければならない。不揮発性メモリ内では、一般的に、論理値「１」を持つビットがあった場所に、論理値「０」を持つビットを書き込むことが可能となるが、その逆は許容されない。実際に、従来の方法によって、論理値「１」は、メモリアレイ全体上で、又は、後者の予めセットされた部分上で実行される累積動作に由来している。フラッシュメモリの場合には、例えば、メモリの全領域におけるセルを消し、そして、そのセルを選択的に書き込むことだけできる。これが意味していることは、与えられたメモリセルの論理値「０」を論理値「１」に変更することが、メモリセルを含んだ全領域を消すことと等価であることである。情報ワード（datum word）の単一ビットさえ変更することは、パリティビットのうち論理値「０」の上に論理値「１」を書き込むことを必要とする。従って、パリティビットを用いたエラー修復方法が用いられる時に、パリティが計算された部分より小さな基準の部分を変更することは許されない。
【００３３】
こうして、パリティビットを用いたエラー修復を有する多重レベルメモリは、上述された解決法を実行するのに特に適している。なぜならば、そのようなメモリは、とにかく、内部ワードのサブセットを変更する可能性がなくても、ビットの非常に長い列と一緒に動作しなければならないからである。
【００３４】
更に、提案された解決法もまた、エラー修復用のパリティビットを記憶したメモリアレイの部分に、又は、列冗長に向かう部分に広げられることは明らかである。
【００３５】
パリティビットを介してエラーを修復しない時、そして、内部ワードの長さより短い情報部分を変更する可能性を維持することが望まれる時には、ちょうど１バイトが変更され得る２５６ビット内部ワードを例証する場合には、後述される方法で動作できる。
【００３６】
これに関して、図４が参照される。図４は、バイトに分割した図２のメモリアレイ構造を示している。
【００３７】
理解されるように、メモリセルＣ２及びＣ５は、異なるバイトに属するビットを含んでいる。言い換えれば、バイトＢ１の内容を変更することは、バイトＢ０及びＢ２上でも干渉することを意味している。
【００３８】
図５は、３ビットを含む一般的なメモリセルＣｉ内に記憶可能な８レベルを、それぞれのしきい電圧分布と共に示している。各レベルの二進符号化（バイナリ符号化）とメモリセルのしきい電圧値との間の関係は完全に任意である。熟慮された例では、順番は下降し、最低レベル（及びそれぞれのしきい電圧分布）は、最高値を有する３ビットに対応している。
【００３９】
実際には、最も高い桁のビットＭＳＢが「１」の時に、４つの左側の分布が作動される；最も高い桁のビットＭＳＢが「０」の時に、４つの右側の分布が作動される。
【００４０】
バイトＢ０をプログラムしたい時に、始めの６ビットに関して、それらが完全にメモリセルＣ０及びＣ１内に含まれるので、問題がない。しかしながら、メモリセルＣ２の内容を明確にするために、ビット＜８＞の値もまた知ることが必要である；従って、それをプログラムする前に、メモリセルＣ２を読み出すことが必要である。
【００４１】
バイトＢ１がプログラムされるべき時に、ビット＜８＞が依然として変更されないままであるか、又は、変更され得るかを評価する必要がある。前者の場合には、メモリセルＣ２は変更されてはいけない；後者の場合には、メモリセルＣ２の内容を変更する必要がある。しかしながら、不揮発性メモリ上で許容される変更動作が、理論値「１」を理論値「０」へ変更することだけであることを思い出すべきである。従って、ビット＜８＞が変更されると、それは「１」から「０」に変更されることを意味する。
【００４２】
図示された例では、ビット＜６＞はメモリセルＣ２の最も高い桁のビットであるが、ビット＜８＞が最も高い桁のビットと考えられたとしても、同じ論法が当てはまる。
【００４３】
この点で、ビット＜６＞の値によれば、二つのケースを区別することが必要である。
【００４４】
ケースＩ：初めに、ビット＜６＞＝１、及び、ビット＜８＞＝１である。可能性のある分布はＤ０及びＤ２である。目的は次の状態に達することである：ビット＜６＞＝１、及び、ビット＜８＞＝０。メモリセルが分布Ｄ０内にあれば、それはＤ１に移さなければならない；メモリセルが分布Ｄ２内にあれば、それはＤ３に移さなければならない。両方の状態、メモリセルはプログラムされなければならない。
【００４５】
ケースＩＩ：初めに、ビット＜６＞＝０、及び、ビット＜８＞＝１である。可能性のある分布はＤ４及びＤ６である。目的は次の状態に達することである：ビット＜６＞＝０、及び、ビット＜８＞＝０。メモリセルが分布Ｄ４内にあれば、それはＤ５に移さなければならない；メモリセルが分布Ｄ６内にあれば、それはＤ７に移さなけらばならない。この場合にも、メモリセルはプログラムされなければならない。
【００４６】
セルＣ５と一緒に動作させる方法を決めるために、ビット＜１５＞の所望の値とビット＜１６＞及び＜１７＞の値とを考慮しながら、次にセルの読み出しとそれのプログラミングとを始める。
【００４７】
この方法では、バイトＢ０及びＢ１は独立してプログラムされている。バイトＢ０をプログラムするために、３つのセルを並列でプログラムしなければならないが、バイトＢ１をプログラムするために、４つのセルに従って実行しなければならない。
【００４８】
バイトＢ２をプログラムする間に、セルＣ６及びセルＣ７に関して、問題はない。しかしながら、この場合でも、メモリセルＣ５は二つのバイトを伴う。メモリセルＣ５の最も高い桁のビットがバイトＢ１によって固定されている。そのバイトＢ１は、既にプログラムされたバイトＢ１と、今もなお削除されているバイトＢ１と一緒に、図５における４つの左側の分布、又は、４つの右側の分布の上で作動することが必要か否かを確定する。どちらにしても、ビット＜１６＞及びビット＜１７＞は、単にプログラムすることによって任意の組み合わせを取り得る。
【００４９】
また、バイトＢ３はバイトＢ０と同じ条件である。その結果、上述の説明が再び当てはまる。
【００５０】
従って、提案された解決法は、装置内部のバイナリワードを（１バイト内に含まれるビット数を乗じられた１セル当たりのビット数に対応する）２４ビットパケットに分割し、それらを、適当な制御論理を通して管理することを含んでいる。適当な制御論理は、明瞭にするために図６のフローチャート内で示されているように、上述の方法をハードウェアレベルで実行する。
【００５１】
詳細には、始めに（ステップ２０）、バイトＢ０，Ｂ１又はＢ２がプログラムされるべきか否かが質問される。
【００５２】
その返答が否定（ステップ２０から出力ＮＯ）の場合には、その処理は終了する。そうでない場合（ステップ２１）には、三つのバイト全てを同時にプログラムするか否かが質問される。
【００５３】
その返答が肯定（ステップ２１から出力ＹＥＳ）の場合には、全ての２４ビットを並列してプログラムすることが、ユーザによって入力されたデータに基づいて実行され（ステップ２２）、その処理が終了する。
【００５４】
その返答が否定（ステップ２１から出力ＮＯ）の場合には、バイトＢ０，Ｂ１及びＢ２が読み出される（ステップ２５）。次に、セルＣ２及びＣ５の内容が記憶される。加えて、補助変数(service variable) α，β，γ，δ，ε及びζが、各々、ビット＜６＞， ＜７＞，＜８＞，＜１５＞，＜１６＞及び＜１７＞の値と同じ値に設定される（ステップ２６）。
【００５５】
次いで、バイトＢ１をプログラムするべきか否かが質問される（ステップ２７）。その返答が肯定（出力ＹＥＳ）の場合には、バイトＢ０もプログラムされるべきか否かの質問がなされる（ステップ２８）。肯定（ステップ２８から出力ＹＥＳ）の場合には、ステップ２９が実行され、セルＣ４〜Ｃ０が、ユーザによって与えられたデータに基づいてプログラムされる。セルＣ５は、上述したように、ユーザと、予め記憶された補助変数ε及びζの値とに従って、プログラムされる。それから、その処理は終了する。
【００５６】
否定（ステップ２８から出力ＮＯ）の場合には、バイトＢ２もまたプログラムされるべきか否かの質問がなされる（ステップ４０）。その返答が肯定（出力ＹＥＳ）の場合には、ステップ３０が実行され、セルＣ７〜Ｃ３が、ユーザによって与えられたデータに基づいて、プログラムされる。セルＣ２は、上述のように、ユーザと、予め記憶された補助変数α及びβの値とに従って、プログラムされる。それから、その処理は終了する。否定（ステップ４０から出力ＮＯ）の場合には、ステップ４１が実行され、セルＣ３及びＣ４が、ユーザによって与えられたデータに基づいて、プログラムされる。セルＣ２及びＣ５は、上述のように、ユーザと、予め記憶された補助変数β，ε及びζの値とに従って、プログラムされる。それから、その処理は終了する。
【００５７】
バイトＢ１がプログラムされるべきでない（ステップ２７から出力ＮＯの）場合には、バイトＢ０がプログラムされるべきか否かが質問される（ステップ３５）。肯定（出力ＹＥＳ）の場合には、ステップ３６が実行され、セルＣ０及びＣ１が、ユーザによって与えられたデータに基づいて、プログラムされる。セルＣ２は、上述のように、ユーザと、予め記憶された補助変数γの値とに従って、プログラムされる。ステップ３６の終りで、且つ、ステップ３５から出力ＮＯの場合には、バイトＢ２がプログラムされるべきか否かが質問される（ステップ３７）。その返答が否定（出力ＮＯ）の場合には、その処理は終了する。その返答が肯定（出力ＹＥＳ）の場合には、ステップ３８が実行され、セルＣ６及びＣ７が、ユーザによって与えられたデータに基づいて、プログラムされる。セルＣ５は、上述のように、ユーザと、予め記憶された補助変数δの値とに従って、プログラムされる。それから、その処理は終了する。
【００５８】
上述の全ての処理は、各２４ビットパケット用に実行されなければならない。ワードはその各２４ビットパケットに分割されている。一般的には、バイトＢ０，Ｂ１及びＢ２は、バイトＢ３ｎ，Ｂ（３ｎ＋１）及びＢ（３ｎ＋２）に置き換えら、ｎ＝０，…，（Ｋ／３−１）であり、Ｋは内部ワードを形成するバイト数である。
【００５９】
実際には、２４ビットはメモリセルの整数に対応している。これにより、メモリセルを完全に使い切ることができる。
【００６０】
図６の処理では、順序のプログラミングをより簡潔に説明可能となる。実際には、情報は各バイトに対して変更され、そしてランダムな方法で変更され得る。要するに、何らかの変更処理を行う前に、二つの異なるバイトに属するビットを記憶しているメモリセルの内容を正確に認識するために、２４ビットの全パケットを読み出す必要がある。２４ビットパケットについて判断することによって、及び、図５に示されたようなレベルのナンバリングを用いることによって、より高いしきい電圧に向けてプログラムすることが単に必要となるという事実により、「１」から「０」までの全ての変更が可能になる。
【００６１】
２５６ビット内部ワードの場合には、１０個の２４ビットパケットが存在し、そして、切捨て（truncation）技術を用いて記憶され得る、過剰に残った１６ビットが存在する：１６ビットは６個のメモリセル内に記憶され、二つの過剰なビットは削除される。この方法では、各バイトに対して３つのメモリセルが用いられ、そして、一つのビットが最後の二つのバイト内で削除されるので、それらは独立して変更され得る。
【００６２】
上述の切捨て解決法を実行するアレイのアーキテクチャは、図３に示したアーキテクチャと同じである。しかしながら、今の場合には、二つの過剰なビットをメモリセル８５から除くことはできない。最後の二つのバイトを独立して変更する可能性を保管するために、二つの異なるメモリセルから、例えば、メモリセルＣ８２及びＣ８５から、一つのビットを削除することが必要である。それから、最初の２４０ビットをプログラムすることが２４ビットパケット内で起こり、そして、並列又は直列の何れかで図６の処理を１０回実行するロジックによって管理される。
【００６３】
単一バイトを変更するために提案された技術は、長いバイナリワードをも変更するために利用され得る。その目的が１６ビットワードレベルで干渉することである時、上述の処理が１６×３ビットパケット上で繰り返される。基本的には、長さｙのバイナリワードを変更するために、１セル当たり３ビットの場合、並列にｙ×３ビットと考えるプログラミングアルゴリズムが必要とされる。
【００６４】
同じ考えが、列パリティ及び列冗長セルに適用される。
【００６５】
別の解決法によれば、２５６ビット内部ワードに結合された二つの過剰なビットは付加的な記憶空間として用いられ得る。
【００６６】
例えば、ＮＡＮＤ形式のフラッシュメモリは、通常、標準アドレス指定空間に対応するビットと並んで、付加的な記憶空間を備えている。この付加的な記憶空間は、パリティビットを備えたエラー修正のため、カウンタのため、又は、使用者が手段と考える何らかの他の目的のため、使用者によって利用され得る。一般的には、１６付加バイトが、５１２バイト毎に設けられ、並列に読み出される頁の大きさに対応している。
【００６７】
各々三つのビットを記憶したメモリセルと一緒に得られる２５６ビットの場合には、通常のアドレス指定空間に８ビットを付加することは容易である：二つのビットは切捨てから得られ、他の六つのビットは二つの付加セルと一緒に実行され得る。付加ビットは、外部のユーザに分かり易い方法で用いられ、又は、ユーザによって管理されるように全体的に又は部分的に残され得る。
【００６８】
本発明による方法の利点は、上述の説明から明らかである。
【００６９】
最後に、多くの変更又は変形が、ここで記述され且つ例示された方法に対してなされ、添付された請求項で明確にされるように、発明の範囲内に全て収まることは明らかである。特に、各セル内に記憶されたビットの（非バイナリ）数に独立して適用され得ることは強調される。
【図面の簡単な説明】
【図１Ａ】２レベルメモリに対するしきい電圧の分布を示す図である。
【図１Ｂ】１セル当たり２ビットを備えた多重レベルメモリのしきい電圧の分布を示す図である。
【図２】本発明における第１の実施の形態による多重レベルメモリ内でビットの分布の図である。
【図３】図２を実行するメモリアレイのブロック図である。
【図４】本発明における第２の実施の形態による多重レベルメモリ内でビットの分布の図である。
【図５】１セル当たり３ビットの多重レベルメモリの場合におけるしきい電圧の分布を示す図である。
【図６】図４に示されたビットの分布の場合におけるプログラミング動作のフローチャートを示す図である。
【符号の説明】
１        不揮発性メモリ
１０      メモリアレイ
１１      メモリセル
１２      バイナリ行デコーダ
１５      多重通信用装置
１６      バイナリ列デコーダ
Ｃ０，Ｃ１，…，Ｃ８５      セル
Ｃ０Ｌ０，Ｃ０Ｌ１，…，Ｃ０Ｌ８５      列
ＣＡ      ５ビット列アドレス
ＲＡ      ９ビット行アドレス
ＳＡ０，ＳＡ１，…，ＳＡ８５      センス増幅器
ＷＬ０，ＷＬ１，…，ＷＬ５１１      行
【図１Ａ】
0004237958.tif 000002
【図１Ｂ】
0004237958.tif 000003
【図２】
0004237958.tif 000004
【図３】
0004237958.tif 000005
【図４】
0004237958.tif 000006
【図５】
0004237958.tif 000007
【図６】
0004237958.tif 000008