(57)【特許請求の範囲】
【請求項１】
不揮発性メモリを操作する方法であって、
前記不揮発性メモリが使用を通じて古くなる時に生じがちなエラーを訂正するためのエラー管理を提供するステップと、
前記不揮発性メモリが受けたプログラム／消去サイクルの数により前記不揮発性メモリの古さの尺度を提供するステップと、
前記不揮発性メモリが所定の古さに達した時に初めてエラー管理を開始するステップと、
前記不揮発性メモリを第１および第２の部分を成すように構成するステップであって、第１の部分が第２の部分と比べてより低いエラー率で動作するけれども記憶密度がより低いメモリセルを有するステップと、
入力データを第１の部分にプログラムするステップと、
その後に、第２の部分の中に１つのコピーを作るためにデータをコピーするステップと、を含み、
エラー管理には、
（ａ）エラーがあるかないかコピーを検査することと、
（ｂ）エラーが所定数のエラービットより少ないか否かによりコピーを有効なデータまたは無効なデータとして特定することと、
（ｃ）コピーが無効であると特定されたならば、第２の部分の中の他の位置にコピーすること、および（ａ）〜（ｃ）を所定回数まで反復することと、がさらに含まれる方法。
【請求項２】
請求項１記載の方法において、
前記不揮発性メモリはメモリセルのブロックを成すように編成され、前記メモリセルの各ブロックは一緒に消去可能であり、
前記不揮発性メモリの古さの尺度を提供するステップは、ブロックのうちの１つが受けたプログラム／消去サイクルの数を追跡することによる方法。
【請求項３】
請求項２記載の方法において、
前記不揮発性メモリの所定の古さは、ブロックのうちの１つが受けたプログラム／消去サイクルの所定の数により与えられる方法。
【請求項４】
請求項１記載の方法において、
前記エラーがあるかないかコピーを検査することは、コピーと関連付けられたＥＣＣによる方法。
【請求項５】
請求項１記載の方法において、
前記不揮発性メモリは複数の消去ブロックを成すようにさらに編成され、各ブロック内のメモリセルは一緒に消去可能であり、
前記コピーするステップおよび前記検査することは、１ブロックずつ実行される方法。
【請求項６】
請求項１記載の方法において、
第１の部分は、１ビットのデータをそれぞれ記憶するメモリセルを有し、
第２の部分は、ｎビットのデータをそれぞれ記憶するメモリセルを有し、ｎ＞１である  方法。
【請求項７】
請求項１記載の方法において、
エラー管理には、第２の部分の中のコピーに対応する第１の部分の中のデータを、コピーが無効であると特定された時に、有効であると特定することがさらに含まれる方法。
【請求項８】
請求項１記載の方法において、
エラー管理には、第２の部分の中のコピーに対応する第１の部分の中のデータを、コピーが有効であると特定された時に、無効であると特定することがさらに含まれる方法。
【請求項９】
請求項１〜８のいずれか記載の方法において、
前記不揮発性メモリは、フラッシュＥＥＰＲＯＭである方法。
【請求項１０】
不揮発性メモリであって、
前記不揮発性メモリが使用を通じて古くなる時に生じがちなエラーを訂正するためのエラー管理と、
前記不揮発性メモリが受けたプログラム／消去サイクルの数による前記不揮発性メモリの古さの尺度と、
メモリコントローラと、を備え、
エラー管理は、前記不揮発性メモリが所定の古さに達した後に初めて始まり、
前記不揮発性メモリは第１および第２の部分を成すように構成され、第１の部分が第２の部分と比べてより低いエラー率で動作するけれども記憶密度がより低いメモリセルを有し、
前記メモリコントローラは、
（ａ）入力データを第１の部分にプログラムすることと、
（ｂ）その後に、第２の部分の中に１つのコピーを作るためにデータをコピーすることと、
（ｃ）エラーがあるかないかコピーを検査することと、
（ｄ）エラーが所定数のエラービットより少ないか否かによりコピーを有効なデータまたは無効なデータとして特定することと、
（ｅ）コピーが無効であると特定されたならば、第２の部分の中の他の位置にコピーすること、および（ｃ）〜（ｅ）を所定回数まで反復することと、が含まれる動作を有するエラー管理と協同する不揮発性メモリ。
【請求項１１】
請求項１０記載の不揮発性メモリにおいて、
前記不揮発性メモリはメモリセルのブロックを成すように編成され、前記メモリセルの各ブロックは一緒に消去可能であり、
前記不揮発性メモリの古さの尺度は、ブロックのうちの１つが受けたプログラム／消去サイクルの数により与えられる不揮発性メモリ。
【請求項１２】
請求項１１記載の不揮発性メモリにおいて、
前記不揮発性メモリの所定の古さは、ブロックのうちの１つが受けたプログラム／消去サイクルの所定の数により与えられる不揮発性メモリ。
【請求項１３】
請求項１０記載の不揮発性メモリにおいて、
前記メモリコントローラがエラーがあるかないかコピーを検査することは、コピーと関連付けられたＥＣＣによる不揮発性メモリ。
【請求項１４】
請求項１０記載の不揮発性メモリにおいて、
前記不揮発性メモリは複数の消去ブロックを成すようにさらに編成され、各ブロック内のメモリセルは一緒に消去可能であり、
前記メモリコントローラがコピーすることおよび検査することは、１ブロックずつ実行される不揮発性メモリ。
【請求項１５】
請求項１０記載の不揮発性メモリにおいて、
第１の部分は、１ビットのデータをそれぞれ記憶するメモリセルを有し、
第２の部分は、ｎビットのデータをそれぞれ記憶するメモリセルを有し、ｎ＞１である  不揮発性メモリ。
【請求項１６】
請求項１０記載の不揮発性メモリにおいて、
エラー管理には、第２の部分の中のコピーに対応する第１の部分の中のデータを、コピーが無効であると特定された時に、有効であると特定することがさらに含まれる不揮発性メモリ。
【請求項１７】
請求項１０記載の不揮発性メモリにおいて、
エラー管理には、第２の部分の中のコピーに対応する第１の部分の中のデータを、コピーが有効であると特定された時に、無効であると特定することがさらに含まれる不揮発性メモリ。
【請求項１８】
請求項１０〜１７のいずれか記載の不揮発性メモリにおいて、
前記不揮発性メモリは、フラッシュＥＥＰＲＯＭである不揮発性メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体フラッシュメモリのような再プログラム可能な不揮発性メモリシステムの操作に関し、特にメモリ操作におけるエラー処理および効率的管理に関する。
【背景技術】
【０００２】
特に小型のフォームファクタカードとして実装されたＥＥＰＲＯＭおよびフラッシュＥＥＰＲＯＭの形の、電荷を不揮発性に蓄積することのできるソリッドステートメモリは、最近、いろいろなモバイルおよびハンドヘルドデバイス、特に情報装置および家電製品において一般的に好まれる記憶装置になっている。同じくソリッドステートメモリであるＲＡＭ（ランダムアクセスメモリ）とは違って、フラッシュメモリは不揮発性であり、そのメモリ自体に蓄積されたデータを電力がオフにされた後でも保持する。さらに、ＲＯＭ（読み出し専用メモリ）とは違って、フラッシュメモリはディスク記憶装置と同様に再書き込み可能である。コストが高いにもかかわらず、フラッシュメモリは大容量記憶用にますます使用されるようになっている。ハードドライブおよびフロッピー（登録商標）ディスクのような回転式磁気媒体に基づく従来の大容量記憶装置は、モバイルおよびハンドヘルド環境には不適である。というのは、ディスクドライブがかさばりがちであり、機械的故障を起こしやすく、待ち時間が長く、所要電力が大きいからである。これらの望ましくない属性があるために、ディスクベースの記憶装置は大抵のモバイルおよび携帯用途において実用的でない。一方、フラッシュメモリは、埋め込み式でも取り外し可能のカードの形でも、サイズが小さく、電力消費が少なく、高速で信頼性が高いという特徴があるために、モバイルおよびハンドヘルド環境に理想的に適している。
【０００３】
フラッシュＥＥＰＲＯＭは、消去可能であって、そのメモリセルに新しいデータを書き込める、すなわち「プログラムする」ことのできる不揮発性メモリという点で、ＥＥＰＲＯＭ（電気的に消去可能でプログラム可能な読み出し専用メモリ）に類似している。両方が、ソース領域およびドレイン領域の間で半導体基板内のチャネル領域の上に位置する、電界効果トランジスタ構造内のフローティング（非結合）伝導性ゲートを利用する。ここで、フローティングゲートの上にコントロールゲートが設けられる。トランジスタのしきい値電圧特性は、フローティングゲートに保持される電荷の量により制御される。すなわち、フローティングゲート上の所与のレベルの電荷に対して、トランジスタが「オン」に転換されてそのソース領域とドレイン領域の間の伝導を許すようになる前にコントロールゲートに印加されなければならない対応する電圧（しきい値）がある。特に、フラッシュＥＥＰＲＯＭのようなフラッシュメモリにおいて、メモリセルのブロックの全てが同時に消去され得る。
【０００４】
フローティングゲートは、１つの範囲の電荷を保持することができ、従って１つのしきい値電圧ウィンドウ内の任意のしきい値電圧レベルにプログラムすることができる。しきい値電圧ウィンドウのサイズはデバイスの最低しきい値レベルおよび最高しきい値レベルにより画定され、それはフローティングゲートにプログラムされ得る電荷の範囲に対応する。しきい値ウィンドウは、一般的に、メモリデバイスの特性、動作条件および履歴によって決まる。ウィンドウ内の各々の識別可能で、分解可能なしきい値電圧レベル範囲は、原則として、セルの一定のメモリ状態を指示するために使用され得る。
【０００５】
現在の市販製品ではフラッシュＥＥＰＲＯＭアレイの各記憶素子がバイナリモードで動作することによって単一ビットのデータを記憶することが普通であり、その場合、記憶素子トランジスタのしきい値レベルの２つの範囲が記憶レベルとして定義される。トランジスタのしきい値レベルは、それらの記憶素子に蓄積されている電荷レベルの範囲に対応する。メモリアレイのサイズを小さくする他に、各記憶素子トランジスタに１ビットより多いデータを格納することによってそのようなメモリアレイのデータ記憶密度をさらに高めることが趨勢となっている。これは、各記憶素子トランジスタについて２つより多いしきい値レベルを記憶状態として定義することによって成し遂げられ、今日では４つのそのような状態（記憶素子当たりに２ビットのデータ）が市販製品に含まれている。記憶素子当たりに１６状態など、より多くの記憶状態も実施されている。各々の記憶素子メモリトランジスタは、それがその中で実際的に操作され得るしきい値電圧の一定の総範囲（ウィンドウ）を有し、その範囲は、そのものについて定義された状態の数に加えて、それらを互いに明瞭に区別し得るようにするための状態間のマージンに分割される。明らかに、メモリセルがより多くのビットを記憶するように構成されるほど、それがその中で動作しなければならないエラーのマージンは小さくなる。
【０００６】
メモリセルの役割を果たす働くトランジスタは、通例、２つのメカニズムのうちの１つによって「プログラム済み」状態にプログラムされる。「ホットエレクトロン注入」では、ドレインに印加された高電圧が電子を基板チャネル領域にわたって加速させる。同時に、コントロールゲートに印加された高電圧がホットエレクトロンを薄いゲート誘電体を通してフローティングゲートに引き付ける。「トンネル注入」では、コントロールゲートに基板と比較して高い電圧が印加される。このようにして、電子が基板から、介在するフローティングゲートに引き付けられる。メモリ状態を変えるためにメモリセルの初めは消去されていた電荷蓄積ユニットに電子を注入することによるメモリへの書き込みを記述するために歴史的に「プログラムする」という用語が使われているけれども、今日では、「書き込む」または「記録する」というようなより一般的な用語と交換可能に使用されている。
【０００７】
メモリデバイスは、幾つかのメカニズムによって消去され得る。ＥＥＰＲＯＭでは、フローティングゲート内の電子を薄い酸化物を通して基板チャネル領域へトンネルさせるためにコントロールゲートと比較して高い電圧を基板に印加することにより、メモリセルは電気的に消去可能である（すなわち、ファウラー・ノルドハイムのトンネリング）。通例、ＥＥＰＲＯＭはバイト単位で消去可能である。フラッシュＥＥＰＲＯＭでは、メモリは全体が一度に、または一度に１つ以上の最小消去可能ブロックごとに、電気的に消去可能であり、ここで最小消去可能ブロックは１つ以上のセクタから成ることができ、各セクタは５１２バイト以上のデータを記憶することができる。
【０００８】
メモリデバイスは、通例、カードに搭載され得る１つ以上のメモリチップを含む。各メモリチップは、デコーダならびに消去回路、書き込み回路および読み出し回路のような周辺回路によりサポートされるメモリセルのアレイを含む。より高性能のメモリデバイスは、インテリジェントで高レベルのメモリ操作およびインターフェーシングを実行するコントローラをも伴っている。
【０００９】
今日では、多くの商業的に成功している不揮発性ソリッドステートメモリデバイスが使用されている。それらのメモリデバイスはフラッシュＥＥＰＲＯＭである場合があり、または他のタイプの不揮発性メモリセルを採用している場合がある。フラッシュメモリならびにそれらを製造するシステムおよび方法の例が、米国特許第５，０７０，０３２号（特許文献１）、第５，０９５，３４４号（特許文献２）、第５，３１５，５４１号（特許文献３）、第５，３４３，０６３号（特許文献４）、第５，６６１，０５３号（特許文献５）、第５，３１３，４２１号（特許文献６）、および第６，２２２，７６２号（特許文献７）において与えられている。特に、ＮＡＮＤストリング構造を有するフラッシュメモリデバイスが、米国特許第５，５７０，３１５号（特許文献８）、第５，９０３，４９５号（特許文献９）、第６，０４６，９３５号（特許文献１０）に記載されている。さらに、不揮発性メモリデバイスは、電荷を蓄積するための誘電体層を有するメモリセルからも製造される。前に記載された伝導性フローティングゲート素子の代わりに、誘電体層が使用される。そのような誘電体記憶素子を利用するメモリデバイスは、Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell", IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545（非特許文献１）に記載されている。ＯＮＯ誘電体層がソース拡散およびドレイン拡散の間のチャネルを横断して広がる。１つのデータビットのための電荷はドレインに隣接して誘電体層に局在させられ、もう１つのデータビットのための電荷はソースに隣接して誘電体層に局在させられる。例えば、米国特許第５，７６８，１９２号（特許文献１１）および第６，０１１，７２５号（特許文献１２）は、２つの二酸化ケイ素層に挟まれたトラッピング誘電体を有する不揮発性メモリセルを開示している。多状態データ蓄積は、誘電体の中の空間的に分けられている電荷蓄積領域のバイナリ状態を別々に読み出すことによって実現されている。
【００１０】
読み出しおよびプログラム性能を高めるために、アレイ内の複数の電荷蓄積素子またはメモリトランジスタが並行して読み出されるかあるいはプログラムされる。このように、１「ページ」の記憶素子が一緒に読み出されるかあるいはプログラムされる。既存のメモリアーキテクチャでは、１つの行は通例数個のインターリーブされたページを包含するか、あるいは１ページを構成することができる。１ページに属する全ての記憶素子が一緒に読み出されるかあるいはプログラムされる。
【００１１】
書き込まれたデータの中のエラー
ここに記載されたタイプのメモリシステムにおいても、磁気ディスク記憶システムを含む他のものにおいても、蓄積されているデータの完全性は、エラー訂正手法の使用により維持される。最も普通には、一度に格納されるデータの各セクタまたは他の単位についてエラー訂正符号（ＥＣＣ）が計算され、そのＥＣＣはデータと共に格納される。ＥＣＣは、最も一般的には、ＥＣＣがそこから計算されたユーザデータのユニットグループと共に格納される。ユーザデータのユニットグループは、１つのセクタまたは１つのマルチセクタページであり得る。このデータがメモリから読み出される時に、ＥＣＣは、読み出されるユーザデータの完全性を判定するために使用される。データのユニットグループの中のデータの誤っているビットは、しばしば、ＥＣＣの使用により訂正され得る。
【００１２】
より多くのメモリセルをシステム内に置けるようにメモリシステムのサイズを小さくし、より小さなホストデバイスに収まるようにシステムをなるべく小さくすることが趨勢となっている。回路をより高度に集積化することと、より多くのデータのビットを記憶するように各メモリセルを構成することとを組み合わせることによって記憶容量が増やされる。両方の技術が、ますます厳密なエラーのマージンでメモリが動作することを必要とする。そのために、エラーを訂正するＥＣＣに対してより大きな要求が課されることになる。
【００１３】
ＥＣＣは、所定数のエラービットを訂正するように設計され得る。訂正しなければならないビットが増えるほど、ＥＣＣはより複雑に、かつ計算集中的になる。品質保証のために、従来のＥＣＣは、メモリデバイスの寿命の終わりに予想される最悪の場合のセルエラー率に基づいて設計される。従って、エラー率の統計的母集団の遠末端に至るまでの最大数のエラービットを訂正しなければならない。
フラッシュメモリが古くなると、そのエラー率はデバイスの寿命の終わり近くで急に大きくなる。従って、最悪の場合のために設計された強力なＥＣＣは、その全能力をメモリデバイスの寿命の終わりに発揮するように要求されるだけである。
【００１４】
最悪の場合の数のエラービットを訂正するためにＥＣＣを使用すると、大量の処理時間が消費される。それが訂正しなければならないビットが増えるほど、より多くの計算時間が必要となる。メモリの性能は低下する。ＥＣＣを適度な時間内に実行するために追加の専用ハードウェアが実装され得る。そのような専用ハードウェアはコントローラＡＳＩＣチップ上の相当の量のスペースを占めることがある。さらに、デバイスの寿命の大部分の間、ＥＣＣはほんの僅かに利用されるだけであるので、その大きなオーバーヘッドは無駄にされ、現実の利益を実現しない。
従って、悪い場合のために過度に設計されたリソース集中的ＥＣＣを必要とすることなく大記憶容量の不揮発性メモリを提供する必要がある。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】米国特許第５，０７０，０３２号
【特許文献２】米国特許第５，０９５，３４４号
【特許文献３】米国特許第５，３１５，５４１号
【特許文献４】米国特許第５，３４３，０６３号
【特許文献５】米国特許第５，６６１，０５３号
【特許文献６】米国特許第５，３１３，４２１号
【特許文献７】米国特許第６，２２２，７６２号
【特許文献８】米国特許第５，５７０，３１５号
【特許文献９】米国特許第５，９０３，４９５号
【特許文献１０】米国特許第６，０４６，９３５号
【特許文献１１】米国特許第５，７６８，１９２号
【特許文献１２】米国特許第６，０１１，７２５号
【特許文献１３】米国特許出願公開第２０１０／０１７２１８０号
【特許文献１４】米国特許第５，５９５，９２４号
【特許文献１５】米国特許第５，３２１，６９９号
【特許文献１６】米国特許第５，３８６，４２２号
【特許文献１７】米国特許第５，４６９，４４４号
【特許文献１８】米国特許第５，６０２，７８９号
【特許文献１９】米国特許第６，１３４，１４０号
【特許文献２０】米国特許第６，９１４，８２３号
【特許文献２１】米国特許第６，９１７，５４２号
【特許文献２２】米国特許第５，８６７，４２９号
【特許文献２３】米国特許第６，４５６，５２８号
【特許文献２４】米国特許第７，００９，８８９号
【特許文献２５】米国特許第５，９３０，１６７号
【特許文献２６】米国特許出願第１２／６４２，５８４号
【非特許文献】
【００１６】
【非特許文献１】Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell", IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545
【発明の概要】
【００１７】
エラー率を制御するためにデータを高密度メモリ部分から低エラー率メモリ部分に適応的に再書き込みする
本発明の一般的な態様に従って、メモリセルのアレイを有するフラッシュメモリが第１の部分および第２の部分を有するように構成されるという点で、書き込み後読み出しエラー管理が提供される。第２の部分は、第１の部分と比べてより高い密度でデータを記憶するけれどもより小さなエラーマージンで動作する。データは、効率的記憶のために第２の部分に書き込まれる。その後、過多なエラービットがあるかないかを検査するためにデータは書き込み後読み出し操作で読み返される。エラービットが所定量を超えるならば、データはエラーがより生じにくい第１の部分において再書き込みされるかまたは維持される。これにより、データをメモリに書き込むことから生じるエラービットの最大数に限界が設けられることになる。エラー率の統計的分布において、この限界は、分布の遠末端（エラー率がより高い）が無視され得るように分布の標準偏差数の限界を表す。これにより、より少数のエラービットを訂正するためにより小さくてより効率的なエラー訂正符号（「ＥＣＣ」）を設計し、これによりメモリの性能を改善すると共にメモリのコストを低減することができる。
【００１８】
１つの好ましい実施形態では、第１の部分は各メモリセルに１ビットのデータを記憶させ、第２の部分は各メモリセルに１ビットより多いデータを記憶させる。
１つの代替の実施形態では、第１の部分は着信データのためのキャッシュとして動作し、入力データのキャッシュコピーがキャッシュにプログラムされる。その後、データの第１のコピーが第２の部分にプログラムされる。書き込み後読み出しが第１のコピー内に過多な量のエラーを検出していなければ、第１のコピーは有効であると見なされてその後のアクセスは第１のコピーにアクセスするように指示される。一方、書き込み後読み出しが第１のコピー内に過多な量のエラーを検出していれば、第１の部分の中のキャッシュされたコピーが有効なデータとして第２の部分の中の第１のコピーに取って代わる。第１のコピーは陳腐化し、その後のアクセスは、キャッシュされているコピーに向けられる。
【００１９】
好ましい実施形態では、第１の部分はさらに第１のセクションおよび第２のセクションを備える。着信データは第１の部分の第１のセクションにキャッシュされ、データの第１のコピーが第２の部分に書き込まれる。その後、第２の部分内の第１のコピーは、過多なエラービットがあるかどうかを検査するために読み返される。エラービットが所定量を超えるならば、着信データの第２のコピーが第１の部分の第２のセクションに書き込まれる。
【００２０】
別の好ましい実施形態に従って、メモリアレイは集積回路チップ上にデータラッチのセットを備え、第１のコピー内のエラービットの検査は、第１のコピーおよびキャッシュされたコピーをデータラッチのセットにロードすると共にデータラッチのセットにおいて比較を行うことによって成し遂げられる。
【００２１】
１つの代わりの実施形態では、書き込み後読み出しが第１のコピー内に過多な量のエラーを検出した後、第１の部分内のキャッシュされたコピーが有効なデータとして第２の部分内の第１のコピーに取って代わる。第１のコピーは陳腐化し、コントローラのファームウェアにおいて具体化されるブロック管理システム内のディレクトリ（図１を参照）は、その後のアクセスをキャッシュされたコピーに向けるように更新される。
【００２２】
従って、メモリの高密度記憶部分に書き込む時に、書き込み後読み出しは、エラー率が所定限界内にあるかどうかを検査する。そうであれば、データは、メモリの別の、エラーがより生じにくい部分において再書き込みされるかまたは維持される。そのエラーがより生じにくい部分は、通例、各メモリセルに、セル当たりに高密度記憶部分より少ないデータビットを記憶させる。高密度メモリへの書き込み後に生じるエラーを制御し制限するメカニズムを設けると共に、高密度メモリ内のコピーが過多なエラーを有するならばエラーのより少ないデータを再書き込みする第２のチャンスを提供することにより、ＥＣＣが訂正しなければならなくなるエラーの数が大幅に低減される。この利点は、追加の書き込み後読み出しおよびより低密度のメモリ部分への稀な追加再書き込みという僅かな犠牲を払って得られる。
【００２３】
例えば、メモリの高密度記憶部分は、各メモリセルに３ビットのデータを記憶させる。エラーがより生じにくい部分は、各メモリセルに１ビットのデータを記憶させる。エラー率を６σの従来の最悪の場合のアプローチの代わりに３標準偏差（３σ）以内に制限することによって、ＥＣＣは４２ビットの代わりに僅か４ビットを訂正しなければならないに過ぎないと推定される。３σに制限するということは、母集団の０．１３％が４ビットを超えるエラー率を有すると期待されるということである。課されるコストは、４より多いエラービットを有する高密度記憶装置に書き込まれたデータ（母集団の０．１３％）が、エラー率を超えないように単にデータを低密度記憶装置において再書き込みさせるかあるいは維持させるということである。比較すると、従来のアプローチでは、書き込みエラーのために４２ビットを訂正する最悪の場合のために設計されたＥＣＣは大きなオーバーヘッドを常時保持しているけれども、その時間の大部分の間、それは遥かに少数のビットを訂正しなければならないに過ぎない。
【００２４】
強化書き込み後読み出しエラー管理
本発明の別の態様において、強化書き込み後読み出しエラー管理が実行される。書き込み後読み出しエラー管理はメモリデバイスの寿命の始まりの時にはイネーブルされない。メモリデバイスのエラー率は寿命の始まりの時には非常に低く、書き込み後読み出しを操作する必要はない。これにより、書き込み後読み出しを行うために時間を浪費しなくてもよくなる。メモリデバイスは使用されると古くなるので、デバイスが所定の古さに達すると本発明の強化書き込み後読み出しおよびエラー管理がイネーブルされる。
【００２５】
１つの好ましい実施形態では、メモリデバイスの古さはメモリセルの各消去ブロックと共に維持されるホットカウントにより判定される。ホットカウントは、耐久性、すなわち消去およびプログラミング操作を通して消去ブロックがサイクルされた回数を追跡する。消去ブロックのホットカウントが所定のホットカウントしきい値を超えると、強化書き込み後読み出しエラー管理が始まって、メモリデバイスの寿命が終わるまで動作する。
【００２６】
本発明の別の態様の１つの好ましい実施形態において、メモリの高密度記憶部分（Ｄ３）は各メモリに３ビットのデータを記憶させる。メモリの、エラーがより生じにくい低密度記憶部分（Ｄ１）は、各メモリセルに１ビットのデータを記憶させる。入力データは、初めにＤ１にステージされ、後にＤ３に折り込まれる。強化書き込み後読み出しエラー管理がイネーブルされると、Ｄ３にある現在の充填済みブロックが読み返される。エラー率が所定のしきい値を超えていれば、その現在のＤ３ブロックは拒否され、再試行が行われてデータが新しいＤ３ブロックに再折り込みされる。その新しいＤ３ブロックは再び読み返されてエラー率が過多であるかどうかが検査される。その新しいＤ３ブロックが合格であれば、良好なデータを持つことになり、Ｄ１内のオリジナルデータは陳腐化される。その新しいＤ３ブロックが再び過多なエラー率を示せば、その新しいＤ３ブロックは再び廃棄される。再試行が所定回数行われた後に過多なエラー率がなお存続していれば、再試行はそれ以上は行われず、Ｄ１からＤ３への折り込み操作は断念され、オリジナルデータはＤ１において維持される。この時点で、メモリデバイスはそれ以上プログラム操作を行うには古すぎると見なされ、メモリデバイスに格納されている既存データの完全性を保つために読み出し専用にされる。
【図面の簡単な説明】
【００２７】
【図１】本発明の特徴が具体化されているメモリデバイスと通信するホストを示す。
【図２】不揮発性メモリセルを概略的に示す。
【図３】メモリセルのＮＯＲアレイの例を示す。
【図４】並行して感知あるいはプログラムされる、例えばＮＡＮＤ構成に編成されたメモリセルのページを示す。
【図５Ａ】メモリセルのアレイにわたってｐ個のセンスモジュールのバンクを包含するように図１に示されているセンスモジュールをより詳しく示す。
【図５Ｂ】センスアンプを含むセンスモジュールを示す。
【図６】複数の消去可能なブロックを成すように編成されたメモリアレイの例を概略的に示す。
【図７】各セルが２つの可能な状態のうちの１つとなっているセルの集団を有するバイナリメモリを示す。
【図８】各セルが８個の可能な状態のうちの１つとなっているセルの集団を有する多状態メモリを示す。
【図９】ＥＣＣフィールドを包含するデータページを概略的に示す。
【図１０Ａ】標準偏差σの種々の範囲における母集団のパーセンテージでエラー率の正規分布を示す。
【図１０Ｂ】図１０Ａの分布を表形式で示す。
【図１１】フラッシュメモリのエラーの主な発生源を記録した表である。
【図１２】一例であるメモリデバイスについて、その寿命の始まりの時および終わりの時において推定される総エラーを示す表である。
【図１３】従来のＥＣＣは最悪の場合の総エラーＥTOTを訂正するように設計されなければならないことを示す表である。
【図１４Ａ】本発明の好ましい実施形態に従って２部分に分割されたメモリアレイを示す。
【図１４Ｂ】図１４Ａのメモリアレイの第１の部分へのデータページの第２のコピーの再書き込みを示す。
【図１５】図１４Ａおよび図１４Ｂに記載されている実施形態に従う書き込み後読み出しおよび適応再書き込みのプロセスを示す流れ図である。
【図１６Ａ】本発明の好ましい実施形態に従う、２部分に分割されたメモリアレイを示し、第１の部分はキャッシュセクションおよび再書き込みセクションをさらに備えている。
【図１６Ｂ】書き込み後読み出しの好ましい実施形態に従うページ比較手法を示す。
【図１６Ｃ】書き込み後読み出しが第２の部分内のデータページにおける過多な量のエラーを判定した後の第１の部分への再書き込みを示す。
【図１７】図１６Ａ〜図１６Ｃに記載されている実施形態に従う書き込み後読み出しおよび適応再書き込みのプロセスを示す流れ図である。
【図１８】複数の消去ブロックを成すように編成されたメモリを示す。
【図１９】ホットカウントにより判定される所定の程度までメモリデバイスが古くなった時にエラー管理がイネーブルされることを示す流れ図である。
【図２０Ａ】本発明の好ましい実施形態に従って２部分に分割されているメモリアレイを示す。
【図２０Ｂ】図２０ＡのＤ３ブロックが書き込み後読み出しテストに不合格となる別の例を示す。
【図２０Ｃ】図２０Ｂの新しいＤ３ブロックが書き込み後読み出しテストに再び不合格となる別の例を示す。
【図２１】強化書き込み後読み出しエラー管理と関連する例としてのパラメータを示す表である。表は、好ましくは、メモリに格納されているファイルシステム構成ファイルにおいて維持される。
【図２２Ａ】Ｄ１からＤ３への折り込みを有するメモリに適用されたＥＰＷＲエラー管理の好ましい実現形態を示す流れ図である。
【図２２Ｂ】強化書き込み後読み出しエラー管理のデバイスの古さによって決まるイネーブル特徴をより詳しく示す。
【図２２Ｃ】強化書き込み後読み出しエラー管理の好ましい実現形態をより詳しく示す。
【発明を実施するための形態】
【００２８】
メモリシステム
図１は、本発明の特徴が具体化されているメモリデバイスと通信するホストを示す。ホスト８０は、通例、メモリデバイス９０に格納されるべきデータを送るか、あるいはメモリデバイス９０を読み出すことによりデータを取り出す。メモリデバイス９０は、コントローラ１０２により管理される１つ以上のメモリチップ１００を含む。メモリチップ１００はメモリセルのメモリアレイ２００を含み、各セルは、データの複数のビットを記憶するためのマルチレベルセル（「ＭＬＣ」）として構成され得る。メモリチップは、センスモジュール４８０、データラッチ４３０およびＩ／Ｏ回路４４０のような周辺回路も含む。オンチップ制御回路１１０は、各チップの低レベルメモリ動作を制御する。制御回路１１０は、周辺回路と協同してメモリアレイ２００に対してメモリ操作を実行するオンチップコントローラである。制御回路１１０は、通例、メモリ操作のチップレベル制御を提供するための状態マシン１１２を含む。
【００２９】
多くの実現形態において、ホスト８０はコントローラ１０２を介してメモリチップ１００と通信し相互作用する。コントローラ１０２は、メモリチップと協同し、より高いレベルのメモリ操作を制御し管理する。例えば、ホスト書込みでは、ホスト８０は、ホストのオペレーティングシステムのファイルシステムから割り当てられた論理セクタを成してメモリアレイ２００に書き込まれるデータを送る。コントローラに実装されたメモリブロック管理システムは、セクタをステージし、それらをメモリアレイの物理的構造にマッピングし格納する。
【００３０】
好ましいブロック管理システムが、その全体が本願明細書において参照により援用されている、２０１０年７月８日に公開された米国特許出願公開第２０１０／０１７２１８０号（特許文献１３）に開示されている。
ファームウェア６０は、コントローラ１０２の機能を実行するためのコードを提供する。エラー訂正符号（「ＥＣＣ」）プロセッサ６２は、メモリデバイスの動作中にＥＣＣを処理する。別の実施形態では、コントローラ１０２はホスト内に実装される。
【００３１】
物理的メモリ構造
図２は、不揮発性メモリセルを概略的に示す。メモリセル１０は、フローティングゲートまたは誘電体層のような電荷蓄積ユニット２０を有する電界効果トランジスタにより実現され得る。メモリセル１０はソース１４、ドレイン１６、およびコントロールゲート３０も含む。
【００３２】
今日使用されている商業的に成功した不揮発性ソリッドステートメモリデバイスが多くある。それらのメモリデバイスは種々のタイプのメモリセルを採用することができ、各々のタイプは１つ以上の電荷蓄積素子を有する。代表的な不揮発性メモリセルはＥＥＰＲＯＭおよびフラッシュＥＥＰＲＯＭを含む。ＥＥＰＲＯＭセルの例およびそれらを製造する方法が、米国特許第５，５９５，９２４号（特許文献１４）において与えられている。フラッシュＥＥＰＲＯＭセルの例、メモリシステムにおけるそれらの使用法およびそれらを製造する方法が、米国特許第５，０７０，０３２号（特許文献１）、第５，０９５，３４４号（特許文献２）、第５，３１５，５４１号（特許文献３）、第５，３４３，０６３号（特許文献４）、第５，６６１，０５３号（特許文献５）、第５，３１３，４２１号（特許文献６）、および第６，２２２，７６２号（特許文献７）において与えられている。特に、ＮＡＮＤセル構造を有するメモリデバイスの例が、米国特許第５，５７０，３１５号（特許文献８）、第５，９０３，４９５号（特許文献９）、第６，０４６，９３５号（特許文献１０）に記載されている。さらに、誘電体蓄積素子を利用するメモリデバイスの例が、Eitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell", IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545（非特許文献１）に記載され、さらに米国特許第５，７６８，１９２号（特許文献１１）および第６，０１１，７２５号（特許文献１２）に記載されている。
【００３３】
実際には、セルのメモリ状態は、普通、コントロールゲートに基準電圧が印加された時のセルのソース電極およびドレイン電極にわたる伝導電流を感知することによって読み出される。従って、セルのフローティングゲート上の各々の所与の電荷について、固定された基準コントロールゲート電圧に関して対応する伝導電流が検出され得る。逆に、しきい値電圧は、所与の電荷を有するセルをちょうどオンに転換させるコントロールゲートに掛かる電圧として定義される。同様に、フローティングゲートにプログラムすることのできる電荷の範囲は、対応するしきい値電圧ウィンドウまたは対応する伝導電流ウィンドウを画定する。
【００３４】
代替的に、分割された電流ウィンドウの中で伝導電流を検出する代わりに、試験される所与のメモリ状態についてしきい値電圧をコントロールゲートにセットし、伝導電流がしきい値電流より少ないかあるいは多いかを検出することが可能である。一実現形態では、しきい値電流と比較しての伝導電流の検出は、ビット線のキャパシタンスまたは既知のキャパシタを通して伝導電流が放電する速度を検査することによって成し遂げられる。
【００３５】
前の記述から分かるように、メモリセルが記憶させられる状態が増えれば、そのしきい値ウィンドウはより細かく分割される。例えば、メモリデバイスは、−１．５Ｖから５Ｖに及ぶしきい値ウィンドウを有するメモリセルを有することができる。これは６．５Ｖの最大幅を提供する。メモリセルが１６個の状態を記憶しなければならないとすると、各状態はしきい値ウィンドウの中で２００ｍＶから３００ｍＶまでを占めることができる。このことは、所要の分解能を達成し得るようにプログラミング操作および読み出し操作においてより高い精度を要求する。
メモリアレイ２００は、通例、行および列を成すように配列されてワード線およびビット線によりアドレス指定可能なメモリセルの２次元アレイとして編成される。アレイは、ＮＯＲタイプアーキテクチャまたはＮＡＮＤタイプアーキテクチャに従って形成され得る。
【００３６】
図３は、メモリセルのＮＯＲアレイの例を示す。メモリアレイ２００において、各行のメモリセルは、それらのソース１４およびドレイン１６によりデイジーチェーン方式で接続される。この設計は、時には仮想接地設計と称される。１つの行の中のセル１０のコントロールゲート３０は、ワード線４２のような１つのワード線に接続される。１つの列の中のセルのソースおよびドレインはビット線３４および３６のような選択されたビット線にそれぞれ接続される。
【００３７】
図４は、並行して感知またはプログラムされる、例えばＮＡＮＤ構成に編成されたメモリセルの１つのページを示す。図４は、本質的に、メモリアレイ２００内のＮＡＮＤストリング５０の１つのバンクを示す。ＮＡＮＤストリング５０は、それらのソースおよびドレインによりデイジーチェーン接続された一連のメモリトランジスタ（例えば、４個、８個、１６個またはそれ以上）から成る。１対の選択トランジスタＳ１、Ｓ２は、それぞれＮＡＮＤストリングのソース端子およびドレイン端子を介してメモリトランジスタチェーンの外部への接続を制御する。メモリアレイの中で、ソース選択トランジスタＳ１がオンに転換されると、ソース端子はソース線３４に結合される。同様に、ドレイン選択トランジスタＳ２がオンに転換されると、ＮＡＮＤストリングのドレイン端子はメモリアレイのビット線３６に結合される。チェーン内の各メモリトランジスタ１０はメモリセルとして機能する。それは、１つの意図されたメモリ状態を表すように１つの所与の量の電荷を蓄積する電荷蓄積素子２０を有する。各メモリトランジスタのコントロールゲートは、読み出し操作および書き込み操作の制御を可能にする。ＮＡＮＤストリングの１つの行の対応するメモリトランジスタのコントロールゲートは全て同じワード線（ＷＬ０、ＷＬ１・・・のような）に接続される。同様に、（それぞれ選択線ＳＧＳおよびＳＧＤを介してアクセスされる）選択トランジスタＳ１、Ｓ２の各々のコントロールゲートは、それぞれそれのソース端子およびドレイン端子を介してＮＡＮＤストリングへの制御アクセスを提供する。
【００３８】
ＮＡＮＤストリング内のアドレス指定されたメモリトランジスタ１０がプログラミング中に読み出されるかあるいはベリファイされる時に、そのコントロールゲートに共通のワード線を介して適切な電圧が供給される。同時に、ＮＡＮＤストリング５０内のアドレス指定されていないメモリトランジスタの残りは、それらのコントロールゲートへの充分な電圧の印加によって完全にオンに転換される。このようにして、個々のメモリトランジスタのソースからＮＡＮＤストリングのソース端子へ、さらに同様に個々のメモリトランジスタのドレインのためにセルのドレイン端子へ伝導経路が効果的に作成される。このようなＮＡＮＤストリング構造を有するメモリデバイスは、米国特許第５，５７０，３１５号（特許文献８）、第５、９０３，４９５号（特許文献９）、第６，０４６，９３５号（特許文献１０）に記載されている。
【００３９】
ページ７０のような「ページ」は、並行して感知またはプログラムされるべくイネーブルされるメモリセルのグループである。これは、センスアンプの対応するページによって成し遂げられる。例えば、ページ７０は１つの行に沿っていて、共通にワード線ＷＬ３に接続されているページのセルのコントロールゲートに印加された感知電圧によって感知される。各列に沿って、セル１０のような各セルは、ビット線３６を介してセンスアンプによりアクセス可能である。前に言及されたページは、物理的ページメモリセルであるかあるいはセンスアンプである。文脈次第で、各セルが蓄積する場合がある。
【００４０】
感知回路および手法
図５Ａは、メモリセルのアレイを横断するｐ個のセンスモジュールのバンクを包含する図１に示されているセンスモジュールをより詳しく示す。並行して動作するｐ個のセンスモジュール４８０のバンク全体により、１つの行に沿うｐ個のセル１０の１つのグループ（すなわち、物理的ページ）を並行して読み出すかあるいはプログラムすることができる。本質的に、センスモジュール１はセル１における電流Ｉ1 を感知し、センスモジュール２はセル２における電流Ｉ2 を感知し・・・センスモジュールｐはセルｐにおける電流Ｉp を感知する等である。ソース線３４から集合ノードＣＬＳＲＣに流入し、そこから接地へ流れるページの総セル電流ｉTOT は、ｐ個のセルの全電流の総和である。
【００４１】
従来のメモリアーキテクチャでは、１つの共通ワード線を有する１行のメモリセルは２つ以上のページを形成し、ここで１ページ中のメモリセルは並行して読み出されプログラムされる。２ページを有する行の場合、１ページは偶数ビット線によりアクセスされ、他方のページは奇数ビット線によりアクセスされる。いずれの一時点においても、１つの物理的ページの感知回路が偶数ビット線または奇数ビット線に結合されている。
現在生産されているチップでは、物理的ページは６４ｋまたはそれより大きいことがある。好ましい実施形態では、グループはセルの行全体のうちの一連なりである。これは、隣接するビット線にそれぞれ結合されている隣接するメモリセルの１つの行からページが構成されるいわゆる「全ビット線」アーキテクチャである。
【００４２】
図５Ｂは、センスアンプを含むセンスモジュールを示す。センスアンプ４９０は、１つのセルの伝導電流が基準レベルより高いか低いかを検出する。感知された結果は、ラッチ４３０の対応するセットの中にラッチされる（図１を参照）。
【００４３】
消去ブロック
フラッシュメモリと他のタイプのメモリとの１つの重要な違いは、セルが消去済みの状態からプログラムされなければならないことである。すなわち、フローティングゲートは初めに電荷を除去されて空にされなければならない。その後、プログラミングは、フローティングゲートに所望の量の電荷を加え直す。それは、より強くプログラムされた状態からより弱い状態になるようにフローティングから電荷の一部分を除去することをサポートしない。これは、更新データは既存のものを上書きすることができず、前に書き込まれていない位置に書き込まれなければならないということを意味する。
【００４４】
さらに、消去は、フローティングゲートから全ての電荷を除去して空にすることであって、一般にかなり時間がかかる。この理由から、１セルずつあるいは１ページずつでさえも、消去することは煩わしくて非常に低速である。実際には、メモリセルのアレイはメモリセルの多数のブロックに分割される。フラッシュＥＥＰＲＯＭシステムでは普通のことであるように、ブロックは消去の単位である。すなわち、各ブロックは、一緒に消去される最小数のメモリセルを包含する。
【００４５】
図６は、複数の消去可能なブロックを成すように編成されているメモリアレイの例を概略的に示す。電荷蓄積メモリデバイスをプログラムすることは、より多くの電荷をその電荷蓄積素子に加えるという結果をもたらすことができるだけである。従って、プログラム操作の前に、メモリセルの電荷蓄積素子内に存在する電荷は除去され（すなわち、消去され）なければならない。ＥＥＰＲＯＭのような不揮発性メモリは、セルのアレイ２００全体あるいはアレイのセルのかなりのグループが電気的に一緒に（すなわち、一瞬で）消去されるならば、「フラッシュ」ＥＥＰＲＯＭと称される。一旦消去されたならば、セルのグループは、以後、再プログラムされ得る。一緒に消去可能なセルのグループは、１つ以上のアドレス指定可能な消去ユニット３００から成ることができる。消去ユニットあるいはブロック３００は、通例、１ページ以上のデータを記憶し、ページはプログラミングおよび読み出しの最小単位であるが、単一の操作で１ページより多くがプログラムされるかあるいは読み出され得る。各ページは、通例、１セクタ以上のデータを記憶し、セクタのサイズはホストシステムにより定義される。一例は、磁気ディスクドライブに対して確立されている標準規格に従う、５１２バイトのユーザデータに加えて、ユーザデータおよび／またはそれが格納されるブロックに関する数バイトのオーバーヘッド情報のセクタである。
【００４６】
図６に示されている例では、メモリアレイ２００内の個々のメモリセルは、ＷＬ０〜ＷＬｙのようなワード線４２およびＢＬ０〜ＢＬｘのようなビット線３６によりアクセス可能である。メモリは、消去ブロック０、１・・・ｍのような消去ブロックを成すように編成されている。図５Ａおよび５Ｂも参照すると、ＮＡＮＤストリング５０が１６個のメモリセルを包含していれば、アレイ内のＮＡＮＤストリングの第１のバンクは選択線４４とＷＬ０〜ＷＬ１５のようなワード線４２とによりアクセス可能である。消去ブロック０は、一緒に消去されるＮＡＮＤストリングの第１のバンクの全メモリセルを有するように編成される。別のメモリアーキテクチャでは、ＮＡＮＤストリングの１つより多いバンクが一緒に消去され得る。
【００４７】
バイナリ（ＳＬＣ）および多状態（ＭＬＣ）メモリ分割の例
前に記載したように、不揮発性メモリの一例は、そのチャネル領域とそのコントロールゲートの間に電荷蓄積層をそれぞれ有する電界効果トランジスタのアレイから形成される。その電荷蓄積層あるいはユニットは、１つの範囲の電荷を蓄積して、各電界効果トランジスタにしきい値電圧の１つの範囲を生じさせることができる。その可能なしきい値電圧の範囲は１つのしきい値ウィンドウにわたる。しきい値ウィンドウがしきい値電圧の複数のサブレンジまたはゾーンに分割された時に、各々の分解可能なゾーンは１つのメモリセルについて異なる複数のメモリ状態を表すのに使用される。複数のメモリ状態は、１つ以上のバイナリビットによってコード化され得る。
【００４８】
図７は、セルの集団を有するバイナリメモリを示し、各セルは２つの可能な状態のうちの１つにある。各メモリセルのしきい値ウィンドウは、単一の区分レベルによって２つの識別可能なゾーンに分割される。図７（０）に示されているように、読み出し中、下側ゾーンおよび上側ゾーンの間の読み出し区分レベルｒＶ1 は、そのセルのしきい値レベルがどちらのゾーンにあるかを判定するために使用される。セルは、そのしきい値が下側ゾーンの中にあれば「消去済み」状態にあり、そのしきい値が上側ゾーンの中にあれば「プログラム済み」状態にある。図７（１）は、メモリの全セルが初めに「消去済み」状態にあることを示す。図７（２）は、セルのうちの幾つかが「プログラム済み」状態にプログラムされることを示す。メモリ状態をコード化するために１ビットあるいはバイナリコードが使用される。例えば、ビット値「１」は「消去済み」状態を表し、「０」は「プログラム済み」状態を表す。通例、プログラミングは、１つ以上のプログラミング電圧パルスの印加によって実行される。各パルス後、しきい値がベリファイ区分レベルｖＶ1を超えて移動したかどうかをベリファイするためにセルは感知される。このようなメモリセル分割を有するメモリは「バイナリ」メモリまたはシングルレベルセル（「ＳＬＣ」）メモリと称される。バイナリあるいはＳＬＣメモリは、しきい値ウィンドウ全体が２つのゾーンにより占められるだけであるので、広いエラーマージンで動作するということが理解される。
【００４９】
図８は、セルの集団を有する多状態メモリを示し、各セルは８個の可能な状態のうちの１つにある。各メモリセルのしきい値ウィンドウは、少なくとも７個の区分レベルにより８個の識別可能なゾーンに分割される。図８（０）に示されているように、読み出し中、セルのしきい値レベルがどのゾーンにあるかを判定するために読み出し区分レベルｒＶ1 〜ｒＶ7 が使用される。セルは、そのしきい値が最低のゾーンにあれば「消去済み」状態にあり、そのしきい値が上側のゾーンにあれば複数の「プログラム済み」状態のうちの１つにある。図８（１）は、メモリが初めはその全セルが「消去済み」状態にあることを示す。図８（２）は、セルのうちの幾つかが「プログラム済み」状態にプログラムされていることを示す。８個のメモリ状態の各々を表すために、下側、中央および上側ビットを有する３ビットコードが使用され得る。例えば、「０」、「１」、「２」、「３」、「４」、「５」、「６」および「７」状態はそれぞれ「１１１」、「０１１」、「００１」、「１０１」、「１００」、「０００」、「０１０」および「１１０」により表される。通例、プログラミングは１つ以上のプログラミング電圧パルスの印加により実行される。各パルス後、セルは、しきい値がベリファイ区分レベルｖＶ1 〜ｖＶ7 のうちの１つである基準を超えて移動したかどうかをベリファイするために感知される。このようなメモリセル分割を有するメモリは「多状態」メモリまたはマルチレベルセル（「ＭＬＣ」）メモリと称される。
【００５０】
同様に、４ビットコードを記憶するメモリは、１６個の状態の各々を表す下側、第１の中央、第２の中央および上側ビットを有する。しきい値ウィンドウは少なくとも１５個の区分レベルによって１６個の識別可能なゾーンに区分される。
メモリの有限のしきい値ウィンドウがより多くの領域に分割されるにつれて、プログラミングおよび読み出しのための分解能は必然的により細かくなってゆく。従って、多状態またはＭＬＣメモリは、必然的に、より少なく分割されたゾーンを有するメモリのものと比べてより狭いエラーマージンで動作する。換言すれば、エラー率は、各セルに格納されるビットの数と共に増大する。一般的に、エラー率は、しきい値ウィンドウ内の分割されたゾーンの数と共に増大する。
【００５１】
エラー訂正符号（「ＥＣＣ」）による訂正
フラッシュメモリはエラーを生じがちである。エラーのないデータを保証するために、エラーを訂正するべくエラー訂正符号（「ＥＣＣ」）が実施される。
図９は、ＥＣＣフィールドを包含するデータページを概略的に示す。図４および図６Ａに関して記述したように、メモリセルの物理的ページは、並行して動作するセンスモジュールの対応するページにより並行してプログラムされ読み出される。各メモリセルが複数ビットのデータを記憶する時には、各物理的ページに関連付けられた複数のデータページがある。データページ７０’はユーザ部分７２’およびシステム部分７４’を含む。ユーザ部分７２’はユーザデータの格納のためのものである。システム部分７４’は、一般的にメモリシステムによりシステムデータの格納のために使用される。システムデータにはＥＣＣが含まれる。ＥＣＣは、データページのために計算される。通例、ＥＣＣは、コントローラ１０２内のＥＣＣプロセッサ６２（図１を参照）により計算される。
【００５２】
ホストからデータが受け取られると、データの１つのページがコントローラ１０２にステージされ、そのＥＣＣ７６’がＥＣＣプロセッサ６２により計算される。ＥＣＣを組み入れたデータページは、その後、メモリアレイ２００に書き込まれる。通例、データページが読み出される時に、データページはデータラッチ４３０にラッチされ、Ｉ／Ｏ回路４４０からコントローラ１０２にシフトアウトされる。コントローラ１０２において、データページの既存のＥＣＣが、読み出されたデータに関して計算されたＥＣＣの第２のバージョンと比較される。ＥＣＣは、通例、データページ中の任意のエラーを迅速に検出するためのエラー検出符号（「ＥＤＣ」）を含む。ＥＤＣが読み出されたデータページ中のエラーの存在を示したならば、読み出されたデータページ中の誤っているビットを訂正するためにＥＣＣが呼び出される。
【００５３】
ＥＣＣは、任意の数のエラービットを訂正するように設計され得る。それが訂正しなければならないビットが多いほど、ＥＣＣはより複雑で計算集中的となる。品質保証のために、従来のＥＣＣは、メモリデバイスの寿命の終わりの時（「ＥＯＬ」）に予想される最悪の場合のセルエラー率（「ＣＥＲ」）に基づいて設計される。従って、それらは、統計的エラー母集団の遠末端に至るまでの最大数のエラービットを訂正しなければならない。
【００５４】
図１０Ａは、標準偏差σの種々の範囲における母集団のパーセンテージでエラー率の正規分布を示す。例えば、２σから３σまでの範囲の中には母集団の僅か２．１％があるだけである。３σから４σまでの範囲の中には母集団の僅か０．１％があるだけである。
【００５５】
図１０Ｂは、図１０Ａの分布を表形式で示す。母集団のＥ−０９あるいは１０億に１つだけが６σを超えて存在するということが理解され得る。表の最後の列は、最悪の場合におけるメモリデバイスの例についての推定エラー率を示す。例えば、母集団の５％は１個のエラービットを有し、母集団の０．１３５％は４個のエラービットを有し、母集団の１０億に１つは４２個のエラービットを有する。
【００５６】
１２５個のメモリカードから成るサンプルを考察する。各カードは、それぞれ２ＫＢのデータページを有する１６ＧＢの容量を有する。これは、それぞれ２ＫＢの１０億ページから成る母集団となる。１２５個のメモリカードのサンプルのうちに、カードの寿命の終わりの時にエラーのあるページが１つもないことを保証するためには、４２ビットまで訂正することのできるＥＣＣが必要とされる。
【００５７】
メモリの寿命の間のエラー
前に記載したように、ＥＣＣは、通例、メモリの実用寿命の間に予想される任意のエラーを訂正するように設計される。エラーは、幾つかの発生源から生じる。
図１１は、フラッシュメモリについてエラーの主な発生源を記録した表である。図１１（Ａ）は、ページが書き込まれた後に存在するビットエラーである書き込み後ＥPW（ＮCYC ）からのエラーの第１の発生源を示す。フラッシュメモリでは、「プログラミング」は、セルのしきい値を消去済み状態から大きくするプロセスを指す。この用語は、「書き込み」と交換可能に使用される。エラー率は、プログラム−消去サイクルの数ＮCYC と共に増大する。データがセルに書き込まれた後、ベリファイ操作に合格しても、データはなお２つの原因から誤っていることがある。
【００５８】
書き込み後エラーの第１の原因は、ベリファイ操作により検出されなかったオーバープログラミングによる。オーバープログラミングは、メモリセルのうちの幾つかが同時にプログラムされる時に生じ得る。その理由は、メモリセルを構成する半導体デバイスの構造および操作に僅かな変動があることに起因して各メモリセルの特性が異なり、従って、セルによりプログラミング速度が通例違うということにある。その結果として、メモリセルの中には他よりも速くプログラムされるものがあり、さらに幾つかのメモリセルが意図されたものとは異なる状態にプログラムされる可能性がある。複数のメモリセルを速くプログラムすれば、所望のしきい値電圧レベルを通り越して、格納されるデータにエラーを生じさせるという結果になる可能性がある。
【００５９】
通例、データがプログラムされる時に、デバイスについてのプログラム−ベリファイのプロセスは、メモリセルのプログラムされたしきい値電圧が、現在の状態を隣接するより少なくプログラムされた状態から区別する基準レベルより高いかどうかを検査する。しかし、プログラム−ベリファイは、プログラムされたしきい値電圧が基準電圧よりどれだけ高いかを知らない。従って、デバイスは、通例、しきい値電圧の上限を保証しない。或るデバイスは、確かに、ソフトプログラミングプロセス（後で記述する）がしきい値電圧を過度に高めたかどうかを検査するけれども、そのようなデバイスは正規のプログラミングプロセスがしきい値電圧を過度に高めたかどうかを検査しない。従って、所望の状態のための範囲を超えてしきい値電圧を高めるオーバープログラミングが、気づかれることなく生じる可能性がある。オーバープログラミングは、メモリセルに次のプログラム済み状態へ通り越させ、従って誤ったデータを記憶させる原因と成り得る。このエラーはその後の読み出し操作中に検出され、その時にセルのプログラムされたしきい値は、通例、所与のメモリ状態のためのしきい値範囲を区分する下限および上限の両方に関して検査される。オーバープログラミングに関するさらなる情報は、米国特許第５，３２１，６９９号（特許文献１５）、第５，３８６，４２２号（特許文献１６）、第５，４６９，４４４号（特許文献１７）、第５，６０２，７８９号（特許文献１８）、第６，１３４，１４０号（特許文献１９）、第６，９１４，８２３号（特許文献２０）、および第６，９１７，５４２号（特許文献２１）で見出され得る。
【００６０】
書き込み後エラーの第２の原因は、記憶素子間の場結合による、蓄積電荷レベルの見かけ上のシフトにある。この結合の程度は、メモリセルアレイのサイズが小さくされるに連れて必然的に大きくなるが、それは集積回路製造技術の改良の結果として生じる。問題は、異なる時点でプログラムされた隣接するセルの２グループの間で最も顕著に生じる。１グループのセルは、１セットのデータに対応するレベルの電荷をそれ自身の記憶素子に加えるようにプログラムされる。第２のグループのセルが第２のセットのデータでプログラムされた後、第２のグループの記憶素子上の電荷が第１のものと容量的に結合されることの効果の故に、しばしば、第１のグループのセルの記憶素子から読み出された電荷レベルはプログラムされたのとは異なるように見える。特に、感知された時のメモリセルは、より少なく乱された時より高い（あるいは、より大きくプログラムされた）しきい値レベルを有するように見える。これはユーピン効果としても知られていて、その全体が本願明細書において参照により援用されている、米国特許第５，８６７，４２９号（特許文献２２）に記載されている。特許文献２２は、その２グループの記憶素子を物理的に互いに分離させるか、あるいは第２のグループの記憶素子上の電荷の効果を第１のグループのものを読み出す時に考慮に入れることを記載している。
【００６１】
図１１（Ｂ）は、ＥＯＬにおけるデータ保持に起因するビットエラーであるエラーの第２の発生源ＥDR（Ｔ，ＮCYC ）を示す。エラー率は、温度Ｔ、およびプログラム−消去サイクルの数ＮCYC と共に増大する。データエラーは、デバイスの履歴に起因する。それは、通例、データ保持問題に関連し、それはメモリデバイスの、環境、例えば温度への暴露に依存する。時間が経つと、実際の蓄積されている電荷レベルはゆっくりリークし、プログラムされたしきい値を低下させる。
【００６２】
各メモリセルに格納される状態の数が増えると、記憶素子にプログラムされた電荷レベルの任意のシフトの許容範囲は小さくなる。各メモリセルの記憶素子で記憶される状態の数が増えると、各記憶状態のために指定される電荷の範囲は必然的に狭くされて互いにより近く置かれることになるから、プログラミングはより高い精度で行われなければならず、蓄積された電荷レベルの任意のプログラミング後のシフトの許容され得る大きさは、現実のシフトであっても見かけ上のシフトであっても、小さくなる。１つのセルに蓄積されている電荷に対する現実の外乱は、そのセルをプログラムしおよび読み出す時に、さらに、同じ列または行の中のものおよび線またはノードを共有するもののような、そのセルと或る程度の電気的結合を有する他のセルを読み出し、プログラムしおよび消去する時に、生じさせられ得る。
【００６３】
図１１（Ｃ）は、読み出し外乱に起因するビットエラーであるエラーの第３の発生源ＥRD（ＮR ，ＮCYC ）を示す。エラー率は、読み出しの回数とプログラム−消去サイクルの数ＮCYC と共に増大する。
フラッシュメモリについての１つの重要な考慮事項は、それが使用されれば古くなるので耐久性問題を有することである。セルが繰り返しプログラムされ消去される時に、誘電体にわたるトンネリングによって電荷がフローティングゲート２０（図２を参照）に出入りさせられる。そのたびに、或る程度の電荷が誘電体に捉えられてセルのしきい値を変化させる。セルが経験したプログラム−消去サイクルの数は、サイクルカウントＮCYC （「ホットカウント」としても知られている）により測られる。繰り返されるサイクルを通して、所与の消去ブロックについてＮCYC の値は大きくなり、ブロック内のセルのためのしきい値ウィンドウを漸次狭めてゆく。従って、プログラム−消去サイクルの効果は、図１１に記載されているエラーの全発生源に著しい影響を及ぼす。
【００６４】
図１２は、例としてのメモリデバイスについて、その寿命の始まりの時と終わりの時における推定総エラーを示す表である。図１２（Ａ）は、図１１（Ａ）〜図１１（Ｃ）に示されている３つの発生源からの総エラーがＥTOT （ＮCYC ，ＮR ）＝ＥPW（ＮCYC ）＋ＥDR（Ｔ，ＮCYC ）＋ＥRD（ＮR ，ＮCYC ）であることを示す。
【００６５】
図１２（Ｂ）は、メモリが比較的に新しい（ＮCYC が低い）けれども８５℃で５年間焼かれて１０6 回読み出された時の推定ＥTOT を示す。種々の成分エラーについての推定値は、ＥPW（１）〜３、ＥDR（８５℃，１）〜２、およびＥRD（１Ｍ，１）〜０である。これらは、総推定エラーＥTOT （１，１Ｍ）＝３＋２＋０＝５ビットをもたらす。
図１２（Ｃ）は、メモリがデバイスの寿命の終わりの時（「ＥＯＬ」）に近い時の推定ＥTOT を示す。それは、他のパラメータが図１２（Ｂ）のものと同様でプログラム−消去サイクルが大きいこと（ＮCYC ＝１０Ｋ）を特徴としている。種々の成分エラーについての推定値は、ＥPW（１０Ｋ）〜１０、ＥDR（８５℃，１０Ｋ）〜１０、およびＥRD（１Ｍ，１０Ｋ）〜１である。これらは、総推定エラーＥTOT （１０Ｋ，１Ｍ）＝１０＋１０＋１＝２１ビットをもたらす。
【００６６】
図１１および図１２に示されているエラーの３つの発生源のうち、一般的に読み出し外乱に起因するエラーＥRDは、書き込みに起因するエラーＥPWおよびデータ保持に起因するエラーＥDRほど重要ではない。データ保持エラーは、セルのしきい値レベルを「読み出しスクラブ」操作において定期的にリフレッシュすることによって緩和され得る。
【００６７】
メモリに生じることのある種々のエラー、特に書き込み後に生じるエラーを訂正するために、（前に図９に関して説明した）ＥＣＣが使用される。しかし、エラーを訂正するためにＥＣＣを使用すれば処理時間がかかり、それが訂正しなければならないビットが増えれば、より多くの計算時間が必要になる。多数のエラービットを訂正することのできる強力なＥＣＣを使用すればメモリ性能は低下する。適当な量の時間でＥＣＣを実行するために追加の専用ハードウェアが実装されることがある。そのような専用ハードウェアは、コントローラＡＳＩＣチップ上の相当の量のスペースを取る可能性がある。
【００６８】
図１３は、従来のＥＣＣが最悪の場合の総エラーＥTOT を訂正するように設計されなければならないことを示す表である。それは、大きなプログラム−消去サイクル総数およびデータ保持仕様を有する寿命の終わりの時における工夫である。図１２（Ｃ）において与えられている例では、ＥＣＣは少なくとも２１個のエラービットを訂正することができなければならない。
【００６９】
エラー率を制御するためにデータを高密度メモリ部分から低エラー率メモリ部分に適応的に再書き込みする
本発明の一般的な態様に従って、メモリセルのアレイを有するフラッシュメモリは第１の部分および第２の部分を有するように構成される。第１の部分と比べて第２の部分はより高い密度でデータを記憶するけれどもより小さなエラーマージンで動作する。データは、効率の良い記憶を目的として第２の部分に書き込まれる。その後、過多なエラービットがあるかないかを検査するためにデータは読み返される。エラービットが所定量を超えたならば、そのデータは、エラーがより生じにくい第１の部分に再書き込みされる。これにより、データをメモリに書き込むことから生じるエラービットの最大数に限界が設けられることになる。エラー率の統計的分布において、この限界は、分布の遠末端（エラー率がより高い）が無視され得るように分布の標準偏差数の限界を表す。これにより、より少数のエラービットを訂正するためにより小さくてより効率的なエラー訂正符号（「ＥＣＣ」）を設計し、これによりメモリの性能を改善すると共にメモリのコストを低減することができる。
【００７０】
図１４Ａは、本発明の１つの好ましい実施形態に従って２つの部分に分割されているメモリアレイを示す。メモリセルのアレイ２００は、第１の部分４１０および第２の部分４２０を成すように分割されている。第２の部分４２０のメモリセルは高密度記憶装置として構成され、各セルは複数ビットのデータを記憶する。第１の部分４１０のメモリセルはより低い密度の記憶装置として構成され、各セルは第２の部分のものより少ない数のビットを記憶する。例えば、第１の部分のメモリセルは、第２の部分における３ビットのデータと比べて１ビットのデータを記憶するように構成される。前の記載の見地から、第１の部分は、第２の部分のものと比べて遥かに広いエラーマージンで動作する。従って、第１の部分でのメモリ操作は、第２の部分におけるものより少ないエラーを有する。
【００７１】
その全体が本願明細書において参照により援用されている、「Selective Operation of a Multi-state Non-volatile Memory System in a Binary Mode」という米国特許第６，４５６，５２８号（特許文献２３）は、普通は２より多い状態で動作するメモリセルを有するけれども、選択されたメモリセルが２状態動作中に増大したマージンを提供するために僅か２状態で動作するフラッシュ不揮発性メモリを開示している。これにより、２状態で動作させられるメモリセルのより高速のプログラミングとより長い動作寿命とが、多状態動作が提供する大きなデータ記憶密度よりもこれらの利点のほうが望ましい時に、可能となる。
【００７２】
１ページの着信データがメモリアレイ２００に書き込まれる時に、好ましくは、効率および大容量のために高密度の第２の部分に格納される。従って、データページの第１のコピーが第２の部分に書き込まれる。
その後、データページの第１のコピーは、エラーがあるかどうかを判定するために「書き込み後読み出し」で読み返される。これは、キャッシュされ得るオリジナルコピーとの比較によるかまたはＥＣＣのＥＤＣ部分を検査することにより成し遂げられる。
読み出されたコピーの中のエラービットの数が所定量を超えるかどうかが判定される。エラービットの数が所定量を超えなければ、第１のコピーは第２の部分に格納されていると考えられ有効であると見なされる。データページのその後の読み出しは第２の部分の中の第１のコピーから行われ、エラーがあれば、コントローラにおいてＥＣＣにより訂正される。
【００７３】
図１１に関連して前に説明したように、プログラミング中のベリファイプロセスは、アンダープログラミングについて検査するだけであってオーバープログラミングについては検査しない。従って、データページがプログラム−ベリファイされた後にエラーがなお存在していることがある。データページ中のどんなエラーでも検出するためには全ての区分レベル（図７および図８を参照）に関して読み出し操作が必要である。さらに、隣接するセルのその後のプログラミングのユーピン効果が問題のデータページを乱し、見かけ上の感知結果をシフトさせる可能性がある。従って、読み返しは、少なくとも、現在のデータページに顕著なユーピン効果を及ぼす可能性のある全ての隣接セルのプログラミングの後に行われるべきである。別の実施形態では、読み返しは、問題のデータページを含むブロックの中の全てのセルがプログラムされ終わった後に行われる。
「書き込み後読み出し」は、その全体が本願明細書において参照により援用されている、米国特許第６，９１４，８２３号（特許文献２０）、第６，９１７，５４２号（特許文献２１）、および第７，００９，８８９号（特許文献２４）にも開示されている。
【００７４】
図１４Ｂは、データページの第２のコピーの、図１４Ａのメモリアレイの第１の部分への再書き込みを示す。データページ中のエラービットの数が所定量を超えていることを書き込み後読み出しが検出した後、データページの第２のコピーが第１の部分に再書き込みされる。第２のコピーは、キャッシュされ得るオリジナルデータのものであるか、あるいは別の実施形態では第１のコピーを取り出してエラーをＥＣＣで訂正することによる。
【００７５】
第２のコピーが第１の部分に書き込まれた後、有効なコピーとして第２の部分内の第１のコピーに取って代わる。第１のコピーは陳腐化し、コントローラのファームウェアにおいて具体化されるブロック管理システム内のディレクトリ（図１を参照）は、その後のアクセスを第２のコピーに向けるように更新される。
１つの好ましい実施形態では、第１の部分の各メモリセルは１ビットのデータを記憶し、第２の部分の各メモリセルは１ビットより多いデータを記憶する。
【００７６】
図１５は、図１４Ａおよび図１４Ｂに示されている実施形態に従う書き込み後読み出しおよび適応再書き込みのプロセスを示す流れ図である。
ステップ５００：メモリを第１および第２の部分を成すように構成する。第１の部分は第２の部分のものより大きなエラーマージンで動作するメモリセルを有する。
ステップ５１０：入力データのグループの第１のコピーを第２の部分にプログラムする。
ステップ５２０：所定時間後にエラーを検査するために第２の部分から第１のコピーを読み出す。
ステップ５３０：エラーはエラービットの所定数を超えるか？所定数を超えたならば、ステップ５４０に進む。そうでなければ、ステップ５５０に進む。
ステップ５４０：入力データのグループの第２のコピーを第１の部分にプログラムする。
ステップ５５０：最後に書き込まれたコピーをその後の読み出しのための有効なデータとして特定する。
ステップ５６０：入力データのグループは不揮発性メモリに格納され終えた。
【００７７】
１つの代替の実施形態では、第１の部分は着信データのためのキャッシュとして動作し、入力データのキャッシュコピーがキャッシュにプログラムされる。その後、データの第１のコピーが第２の部分にプログラムされる。
【００７８】
書き込み後読み出しが第１のコピーの中に過多な量のエラーを検出しなかったならば、第１のコピーは有効と見なされ、その後の読み出しは第１のコピーにアクセスするように管理される。
一方、書き込み後読み出しが第１のコピーの中に過多な量のエラーを検出したならば、第１の部分内のキャッシュされているコピーが有効なデータとして第２の部分内の第１のコピーに取って代わる。第１のコピーは陳腐化し、コントローラのファームウェアにおいて具体化されるブロック管理システム内のディレクトリ（図１を参照）は、その後のアクセスをキャッシュされたコピーに向けるように更新される。
【００７９】
その全体が本願明細書において参照により援用されている、「Multi-state Non-volatile Flash Memory Capable of Being its Own Two State Write Cache」という米国特許第５，９３０，１６７号（特許文献２５）は、２つの部分を有するフラッシュメモリアレイを開示している。第１の部分はセル当たりに１ビットを記憶するように構成され、第２の部分はセル当たりに１ビットより多くを記憶するように構成されている。第１の部分は低密度書き込みキャッシュとして動作する。着信データは、初めに第１の部分にキャッシュされる。後の時点で、バックグラウンドで、そのキャッシュされたデータは、より高い記憶密度を有する第２の部分に転送される。
【００８０】
好ましい実施形態では、第１の部分はさらに第１のセクションおよび第２のセクションを備える。着信データは第１の部分の第１のセクションにキャッシュされ、データの第１のコピーが第２の部分に書き込まれる。その後、第２の部分の中の第１のコピーは、過多なエラービットがあるかどうかを検査するために読み返される。エラービットが所定量を超えたならば、着信データの第２のコピーが第１の部分の第２のセクションに書き込まれる。
【００８１】
図１６Ａは、本発明の好ましい実施形態に従って、２つの部分に分割され、第１の部分がさらにキャッシュセクションおよび再書き込みセクションを備えているメモリアレイを示す。図１４Ａの場合と同じく、メモリセルのアレイ２００は第１の部分４１０および第２の部分４２０を成すように分割されている。第２の部分４２０のメモリセルは高密度記憶装置として構成され、各セルは複数ビットのデータを記憶する。第１の部分４１０のメモリセルは第２の部分のものより低い密度の記憶装置として構成され、各セルは第２の部分のものより少数のビットを記憶する。従って、第１の部分は、第２の部分のものより広いエラーマージンで動作する。
【００８２】
第１の部分４１０は、着信データをキャッシュするための第１のセクション４１１および第２の部分からの再書き込みを格納するための第２のセクション４１２をさらに備えている。
１ページの着信データがメモリアレイ２００に書き込まれる時に、キャッシュコピーが第１の部分４１０の第１のセクション４１１にキャッシュされる。第１のコピーは、好ましくは、効率および高密度のために高密度の第２の部分に格納される。従って、データページの第１のコピーが第２の部分に書き込まれる。
別の好ましい実施形態では、メモリアレイは集積回路チップ上にデータラッチのセットを備え、第１のコピー中のエラービットの検査は、第１のコピーおよびキャッシュコピーをそのデータラッチのセットにロードしてデータラッチのセットにおいて比較を行うことによって成し遂げられる。
比較をコントローラにおいて行わないことにより、データはコントローラへトグルアウトされなくてもよく、多くの時間が節約され得る。図１は、データラッチ４３０を示し、データ比較が行われるように、オンチップである。
【００８３】
図１６Ｂは、書き込み後読み出しの好ましい実施形態に従うページ比較手法を示す。第２の部分の中のデータページの第１のコピーは、エラーがあるかどうかを判定するために「書き込み後読み出し」で読み返される。これは、キャッシュコピーとの比較により成し遂げられる。
【００８４】
エラービットの数が所定量を超えなければ、第２の部分に格納されている第１のコピーは有効であると見なされる。キャッシュコピーは陳腐化し、コントローラのファームウェアにおいて具体化されるブロック管理システム内のディレクトリ（図１を参照）は、その後のアクセスを第１のコピーに向けるように更新される。データページのその後の読み出しは第２の部分内の第１のコピーからであり、エラーがあれば、コントローラにおいてＥＣＣにより訂正される。
【００８５】
図１６Ｃは、書き込み後読み出しが第２の部分内のデータページに過多な量のエラーを判定した後の第１の部分への再書き込みを示す。第１のコピーのデータページ内のエラービットの数が所定量を超えていることを書き込み後読み出しが検出した後、データページの第２のコピーが第１の部分４１０の第２のセクション４１２に再書き込みされる。第２のコピーは、キャッシュコピーから取られる。
【００８６】
第２のコピーは、第１の部分の第２のセクション４１２に書き込まれた後、第２の部分内の第１のコピーに取って代わる。第１のコピーおよびキャッシュコピーは陳腐化し、コントローラのファームウェアにおいて具体化されるブロック管理システム内のディレクトリ（図１を参照）は、その後のアクセスを第２のコピーに向けるように更新される。
【００８７】
図１７は、図１６Ａ〜図１６Ｃに示されている実施形態に従う書き込み後読み出しおよび適応再書き込みのプロセスを示す流れ図である。
ステップ６００：メモリを第１および第２の部分を成すように構成する。第１の部分は第２の部分より大きなエラーマージンで動作するメモリセルを有する。
ステップ６０２：入力データのグループのキャッシュコピーを第１の部分の第１のセクションにプログラムする。
ステップ６１０：入力データのグループの第１のコピーを第２の部分にプログラムする。
ステップ６２０：所定時間後にエラーを検査するために第２の部分から第１のコピーを読み出す。
ステップ６３０：エラーはエラービットの所定数を超えるか？所定数を超えたならば、ステップ６３２に進む。そうでなければステップ６５０に進む。
ステップ６３２：入力データのグループのキャッシュコピーを第１の部分の第１のセクションから読み出す。
ステップ６４２：キャッシュコピーを入力データのグループの第２のコピーとして第１の部分の第２のセクションにプログラムする。
ステップ６５０：最後に書き込まれたコピーをその後の読み出しのための有効なコピーとして特定する。
ステップ６６０：入力データのグループは不揮発性メモリに格納され終えた。
【００８８】
本発明の前の詳細な記述は、説明および記述の目的のために提示されている。網羅的であることも、発明を開示された形そのものに限定することも意図されていない。前の教示を考慮すれば多くの改変および変更が可能である。記述された実施形態は、本発明の原理およびその実際的応用を最善に説明し、それにより他の当業者が本発明を、意図された特定の用途に適する種々の実施形態で種々の改変を用いて最善に利用できるようにするために選択された。本発明の範囲は添付されている特許請求の範囲により定義されるべく意図されている。
【００８９】
強化書き込み後読み出しエラー管理
本発明の別の態様において、強化書き込み後読み出しエラー管理が実行される。書き込み後読み出しは、メモリデバイスの寿命の始まりの時にはイネーブルされない。メモリデバイスのエラー率は寿命の始まりの時には非常に低くて、書き込み後読み出しを動作させる必要はない。これにより、書き込み後読み出しを行うための時間の浪費が避けられる。メモリデバイスは使用すれば古くなるので、本発明の強化書き込み後読み出しおよびエラー管理は、デバイスの所定の古さでイネーブルされる。
【００９０】
１つの好ましい実施形態では、メモリデバイスの古さはメモリセルの各消去ブロックと共に維持されるホットカウントにより判定される。ホットカウントは、耐久性、すなわち消去およびプログラミング操作を通して消去ブロックがサイクルされた回数を追跡する。消去ブロックのホットカウントが所定のホットカウントしきい値を超えるといつでも、強化書き込み後読み出しエラー管理が始まって、メモリデバイスの寿命が終わるまで動作する。
【００９１】
図１８は、複数の消去ブロックを成すように編成されたメモリを示す。前に図６に関して説明したように、各消去ブロックは、一緒に消去されるメモリセルのグループである。さらに、セルが繰り返しプログラムされ消去されると、誘電体にわたるトンネリングによって電荷がフローティングゲート２０（図２を参照）に出入りさせられることも前に記載した。そのたびに、或る程度の電荷が誘電体に捉えられる場合があり、セルのしきい値を変化させる。セルが経験したプログラム−消去サイクルの数は、サイクルカウントＮCYC （「ホットカウント」としても知られている）により測られる。繰り返されるサイクルを通して、所与の消去ブロックについてＮCYC の値は大きくなり、ブロック内のセルのためのしきい値ウィンドウは漸次狭まる。図１８は、各消去ブロック（ｍ）においてホットカウントＮCYC （ｍ）３０２が維持される１つの好ましい実施形態を示す。プログラム可能な単位は１ページであるので、各ブロックのためのホットカウントは、図９に示されているデータページ７０’のシステムデータエリアに格納され得る。代替的に、ホットカウントは、メモリ内のマスターリストに格納され得る。ブロックが消去されるたびに、そのホットカウントは１つずつインクリメントされる。
【００９２】
図１９は、ホットカウントにより判定される所定の程度までメモリデバイスが古くなるとエラー管理がイネーブルされることを示す流れ図である。
ステップ７００：メモリセルの複数の消去ブロックを成すように編成された不揮発性メモリを設ける。各消去ブロックのメモリセルは、一緒に消去され、各ブロックの消去／プログラムのサイクルの数と共に古くなる。
ステップ７１０：古くなりつつあるメモリデバイスに関連付けられたエラーを訂正するためのエラー管理を提供する。好ましい実施形態では、エラー管理は、前に記載した書き込み後読み出しエラー管理である。
ステップ７２０：各ブロックが受けたプログラム−消去サイクルの数を記録するホットカウントを維持することによって各ブロックの古さを追跡する。
ステップ７３０：メモリブロックのホットカウント＞所定のホットカウントしきい値であるか？好ましい実施形態では、所定のホットカウントしきい値は、メモリに格納されているファイルシステム構成ファイル内のパラメータＨｏｔ＿ｃｏｕｎｔ＿ｔｈｒｅｓｈｏｌｄ＿ＥＰＷＲにより与えられる（図２１を参照）。より大きければ、ステップ７４０に行き、そうでなければステップ７５０に行く。
ステップ７４０：メモリの寿命の残りの間、エラー管理をイネーブルする。
ステップ７５０：エラー管理を未だイネーブルしない。
【００９３】
本発明のさらに別の態様の１つの好ましい実施形態では、メモリの高密度記憶部分（Ｄ３）の各メモリは３ビットのデータを記憶する。メモリの、エラーがより生じにくい、低密度記憶部分（Ｄ１）の各メモリセルは１ビットのデータを記憶する。入力データは初めにＤ１にステージされ、後にＤ３に折り込まれる。強化書き込み後読み出しエラー管理がイネーブルされると、Ｄ３内の現在の充填されているブロックが読み返され、エラー率が所定のしきい値を超えたならば、その現在のＤ３ブロックはリジェクトされ、再試行が行われてデータが新しいＤ３ブロックに再折り込みされる。その新しいＤ３ブロックは再び読み返され、過多なエラー率かどうかを検査される。その新しいＤ３ブロックが合格すれば、良好なデータを有し、Ｄ１内のオリジナルデータは陳腐化される。その新しいＤ３ブロックが再び過多なエラー率を示したならば、その新しいＤ３ブロックは再び廃棄される。過多なエラー率が所定数の再試行の後に持続しているならば、それ以上の再試行は試みられず、Ｄ１からＤ３への折り込み操作は断念されてオリジナルデータはＤ１で維持される。この時点で、そのメモリデバイスは、それ以上のプログラミング操作のためには古すぎると見なされて、メモリデバイスに格納されている現存するデータの完全性を維持するために読み出し専用にされる。
【００９４】
図２０Ａ〜図２０Ｃは、Ｄ１部分およびＤ３部分で構成されたメモリにおける書き込み後読み出しエラー管理を実行することの種々の例を示す。Ｄ１部分およびＤ３部分で構成されたメモリは、その全体が本願明細書において参照により援用されている、Gorobetsらによる２００９年１２月１８日に出願された「MAINTAINING UPDATES OF MULTI-LEVEL NON-VOLATILE MEMORY IN BINARY NON-VOLATILE MEMORY」という米国特許出願第１２／６４２，５８４号（特許文献２６）にも開示されている。
【００９５】
図２０Ａは、本発明の好ましい実施形態に従ってメモリアレイが２つの部分に分割されることを示す。メモリセルのアレイ２００（図１を参照）は第１の部分４１０および第２の部分４２０を成すように分割される。第２の部分４２０のメモリセルは高密度記憶装置として構成され、各セルは複数ビットのデータを記憶する。第１の部分４１０のメモリセルはより低い密度の記憶装置として構成され、各セルは、第２の部分のものより少ない数のビットを記憶する。例えば、第１の部分のメモリセルは、第２の部分で３ビットのデータであるのと比べて、１ビットのデータを記憶するように構成される。１セル当たりに１ビットのデータを記憶する第１の部分はＤ１とも称され、１セル当たりに３ビットのデータを記憶する第２の部分はＤ３とも称される。前の記載の見地から、第１の部分は第２の部分のものと比べて遥かに広いエラーマージンで動作する。従って、第１の部分におけるメモリ動作は、第２の部分におけるものよりエラーが少ない。
【００９６】
一実施形態では、第１の部分４１０すなわちＤ１はさらに第１のセクション４１１および第２のセクション４１２を成すように分割される。
ステップ（１）において、ホスト書き込み中、入力データは初めに第１のセクション４１１にキャッシュされるか、あるいは第２のセクション４１２に直接書き込まれる。入力データが断片化されていれば、初めに第１のセクションにキャッシュされる。入力データが連続するデータの相当大きな連なりであるならば、直接第２のセクション４１２に１ページずつ書き込まれる。
ステップ（２）において、いずれにせよ、入力データは結局終わりには第２のセクション４１２に存在することになり、ここに書き込まれたページは、ブロックｍ１、ｍ２およびｍ３のような仮想Ｄ１ブロックにステージされる。各ブロックが論理アドレスのよく画定された１つのグループからのデータを包含する方式では、仮想ブロックは物理的ブロックに対応しないことがあるけれども依然としてその論理アドレスのグループは数個の物理的Ｄ１ブロックに分散させられる。
【００９７】
ステップ（３）において、データが１ページずつＤ１に書き込まれてゆく時に、バイナリページのトリプレットがＤ１内にあると、Ｄ１からＤ３への折り込みとも称されることでＤ３内の単一の３ビットページにコピーされ得る。
強化書き込み後読み出しエラー管理（「ＥＰＷＲ」）を実行することにより、メモリの寿命の或る段階で書き込み後読み出しエラー管理が始まる。
ステップ（４）において、Ｄ３ブロックｍは、仮想Ｄ１ブロックｍ１、ｍ２およびｍ３のページ全体がそれに折り込まれた後に、完成する。その後、ＥＰＷＲにより処理することができ、その処理でＤ３ブロック内のデータが読み返されてＥＣＣエラーに関して検査される。ＥＣＣエラーの数が、ファイルシステム構成ファイルにおいてセットされているパラメータＥ＿ｐｗ＿ｃｈｅｃｋによりそれ自体に与えられる所定のしきい値より少なければ、Ｄ３ブロック内のデータは有効であると見なされる。対応するＤ１ページを、その時に安全に取り換えてリタイアさせることができる。
【００９８】
図２０Ｂは、図２０ＡのＤ３ブロックが書き込み後読み出しテストで不合格になる別の例を示す。ステップ（１）からステップ（３）までは図２０Ａのものと同じである。
ステップ（４’）において、Ｄ３ブロック内のデータが読み返される時に、ＥＣＣエラーの数はＥ＿ｐｗ＿ｃｈｅｃｋより大きいことが見出される。これは、Ｄ３内のデータがせいぜい限界的で、使用されることはできないということを意味する。
ステップ（５）において、現存するＤ３ブロックが書き込み後読み出しテストに不合格であった場合に、ＥＰＷＲは、データを新しいＤ３ブロックに折り込もうとする再試行を処方する。
ステップ（６）において、新しいＤ３ブロックの中のデータは別の書き込み後読み出しテストを受けさせられる。それがテストに合格すれば、その新しいＤ３ブロックの中のデータは有効であるとみなされる。その後、対応するＤ１ページを、安全に取って換えてリタイアさせることができる。
【００９９】
図２０Ｃは別の例を示し、この例では図２０Ｂの新しいＤ３ブロックは書き込み後読み出しテストに再び不合格となる。ステップ（１）からステップ（５）までは図２０Ｂのものと同じである。
ステップ（６’）において、新しいＤ３ブロック内のデータが読み返される時に、ＥＣＣエラーの数はＥ＿ｐｗ＿ｃｈｅｃｋより大きいことが見出される。これは、再試行されたＤ３ブロック内のデータが依然として不良で、使用され得ないということを意味する。
ＥＰＷＲプロセスは、別のＤ３ブロックへのさらなる再試行を処方することができる。再試行の回数は、ファイルシステム構成ファイルの中のパラメータＥＰＷＲ＿ｒｅｔｒｉｅｓによりセットされる。例えば、ＥＰＷＲ＿ｒｅｔｒｉｅｓが１であれば、プロセスは、その新しいブロックがテストに不合格になった後に終了する。
その場合、ステップ（７）において、新しいＤ３ブロックを使用することができず、ファイルシステムは、代わりにアクセスをＤ１内に存在している対応するデータに向ける。
【０１００】
図２１は、強化書き込み後読み出しエラー管理に関連付けられた例としてのパラメータを示す表である。この表は、好ましくは、メモリに格納されているファイルシステム構成ファイルにおいて維持される。
Ｅ＿ｐｗ＿ｃｈｅｃｋ：何個のＥＣＣビットのレベルでＤ３ブロックがハイリスクであると見なされて新しいＤ３ブロックへの、Ｄ１からＤ３への折り込みの再開が必要かを指定する、ファイルシステム構成ファイルにおいてセットされる変数。
ＥＣＣ＿ｔｈｒｅｓｈｏｌｄ＿ＳＬＣ：ＥＰＷＲで続行するか否かを決定するために比較するＳＬＣしきい値を維持するためにファイルシステム構成ファイルにおいて変数が必要とされる。
ＥＰＷＲ＿ｅｎａｂｌｅ＿ｆｌａｇ：ファイルシステム構成ファイルにおいて制御される。０＝セットされていない（デフォルト）。１＝ＥＰＷＲがイネーブルされている時にセットされている。
Ｈｏｔ＿ｃｏｕｎｔ＿ｅｎａｂｌｅ＿ｆｌａｇ：０＝イネーブルされていない。１＝イネーブルされている。
Ｈｏｔ＿ｃｏｕｎｔ＿ｔｈｒｅｓｈｏｌｄ＿ＥＰＷＲ：どんなホットカウントレベルでＥＰＷＲが必要とされるかを指定する、ファイルシステム構成ファイルにおいてセットされる変数。全てのＤ３ブロックのホットカウントが＜ホットカウントしきい値であれば、ＥＰＷＲイネーブルフラグがオンであっても、ＥＰＷＲプロセスはトリガされない。
ＥＰＷＲ＿ｖｅｒｉｆｙ＿ｐａｇｅ＿ｂｕｄｇｅｔ：ＥＰＷＲの１フェーズの間に何ページが読み出され得るかを指定する、ファイルシステム構成ファイルにおいてセットされる変数。
ＥＰＷＲ＿ｒｅｔｒｉｅｓ：再試行の回数を制限する、ファイルシステム構成ファイル内の変数。  Ｄ３＿Ｂｌｏｃｋ＿ｍａｘ＿ｒｅｔｒｉｅｓ：寿命時間が終わるまでの１つのＤ３ブロックに対する再試行の総数を制限する、ファイルシステム構成ファイル内の変数。
【０１０１】
図２２Ａは、Ｄ１からＤ３への折り込みを有するメモリに適用されたＥＰＷＲエラー管理の好ましい実現態様を示す流れ図である。
ステップ８００：開始する。
ステップ８１０：Ｄ１の３つのバイナリデータページからのデータが、図２０Ａに関連して説明したようにＤ３の１つの３次ページにプログラムされる、Ｄ１からＤ３への折り込みである。
ステップ８１２：１つのＤ３ブロックが完全に満たされたか？完全に満たされたならば、ステップ８２０に進み、そうでなければステップ８１０に戻る。
ステップ８２０：強化書き込み後読み出しエラー管理（「ＥＰＷＲ」）がイネーブルされたか？デバイスの古さに依存するイネーブルのさらなる詳細が図２２Ｂにおいて与えられる。ＥＰＷＲがイネーブルされると、ステップ８３０でＥＰＷＲを処理する。そうでなければ、書き込まれたＤ３ブロックの完全性は不明であるが、楽観的に良好であると仮定される。ステップ８５０に進む。
ステップ８３０：ＥＰＷＲを処理する。ＥＰＷＲのより詳細な実現形態が図２２Ｃにおいて与えられる。
ステップ８４０：より高いレベルで、本質的に、ＥＰＷＲはＤ３ブロックの書き込み後読み出しおよびＥＣＣエラー率のテストを行う。エラーがＥ＿ｐｗ＿ｃｈｅｃｋ（図２１を参照）を超えなければ、そのＤ３ブロックは良好である。ステップ８５０に進む。そうでなければ、そのＤ３ブロック内のデータを使用することができず、Ｄ１データを新しいＤ３ブロックに折り込もうとする再試行が考慮される。ステップ８６０に進む。
ステップ８５０：Ｄ３ブロックは良好であると見なされるので、Ｄ１に存在するデータのオリジナルコピーを陳腐化してリタイアさせることができる。
ステップ８６０：図２２Ｃにおいて詳しく述べられている幾つかの考慮事項に基づいて新しいＤ３ブロックで再試行を行うかどうかを決定する。再試行が許されなければ、ステップ８７０に進む。そうでなければ、ステップ８６２に進む（図２２Ｃに示す）。
ステップ８６２：Ｄ１からＤ３への折り込みが新しいＤ３ブロックで反復される。別のブロックを処理するために戻る。
ステップ８７０：Ｄ３ブロック内のデータは不良であると見なされるので、データはＤ１内のオリジナルコピーからアクセスされなければならない。
ステップ８７２：このステップには、Ｄ３ブロックを再書き込みしようとする再試行が幾度か失敗した後に到達するので、そのメモリは、その寿命の終わりに近いと見なされる。プログラミング操作によるデータの破壊を防止するために、読み出し専用状態にされる。ステップ８９０に進む。
ステップ８９０：終了する。
【０１０２】
図２２Ｂは、強化書き込み後読み出しエラー管理のデバイス古さに依存するイネーブル特徴をより詳しく示す。図２２Ａのステップ８２０は、図２２Ｂにおいて次のものをさらに含むように示されている。
ステップ８２２：ＥＰＷＲ＿ｅｎａｂｌｅ＿ｆｌａｇ（図２１を参照）がイネーブルされているかを検査する。イネーブルされていなければ、ＥＰＷＲはまったく実行されていない。デフォルトでステップ８５０に進み、そこでＤ３ブロックは良好と見なされる。イネーブルされていれば、メモリデバイスが或る古さになった後にＥＰＷＲが始まるかどうかを制御するためにステップ８２４に進む。
ステップ８２４：Ｈｏｔ＿ｃｏｕｎｔ＿ｅｎａｂｌｅ＿ｆｌａｇ（図２１を参照）がイネーブルされているかを検査する。イネーブルされていなければ、ＥＰＷＲはメモリデバイスの寿命の始まりの時から実行される。ＥＰＷＲを処理するためにステップ８３０に直接進む。フラグがイネーブルされていればステップ８２６に進み、ＥＰＷＲがいつ始まるべきかを制御する。
ステップ８２６：Ｄ３ブロックのうちのいずれか１つがＨｏｔ＿ｃｏｕｎｔ＿ｔｈｒｅｓｈｏｌｄ＿ＥＰＷＲの値を超えるホットカウントを有するかを検査する。超えていなければ、そのメモリデバイスは未だ若くて過多なエラーを生じにくく、ステップ８５０に進み、ＥＰＷＲは本質的に保留される。ホットカウントがしきい値を超えたならばそのメモリデバイスはエラーが顕著になる古さに達していて、ＥＰＷＲプロセスの利益を被る。ステップ８３０に進んでＥＰＷＲを処理する。
【０１０３】
図２２Ｃは、強化書き込み後読み出しエラー管理の好ましい実現形態をより詳しく示す。図２２Ａのステップ８３０は、図２２Ｃでは次のものをさらに含むように示されている。
ステップ８３２：Ｄ３ブロックの書き込み後読み出しおよびあり得る再試行を行うために利用可能な処理時間があるかどうかを検査する。その利用可能な時間は、好ましくは、フォアグラウンドでのホストコマンドの実行中の使用されていない時間から取られる。必要ならば、処理は、各ホストコマンド中の予備時間をより良く利用するように、複数のより小さなチャンクに分解され得る。処理を開始するために利用可能な時間があれば、ステップ８３４に進み、そうでなければステップ８３８に進む。
ステップ８３４：処理を開始するか、あるいは処理が既に開始されたけれども合間に中断されていたならば、処理を継続する。
ステップ８３６：ＥＤＣ（エラー検出コード）を検査するためにＤ３からデータのページを読み出してコントローラへ転送する。ステップ８３８に進む。
ステップ８４０：ＥＰＷＲはＤ３ブロックの書き込み後読み出しおよびＥＣＣエラー率のテストを行う。エラーがＥ＿ｐｗ＿ｃｈｅｃｋ（図２１を参照）を超えなければ、テストされているページはＤ３内にあり、良好である。ステップ８４２に進む。ページがテストで不良とされたならば、そのＤ３ブロック内のデータは使用され得ず、Ｄ１データを新しいＤ３ブロックに折り込もうとする再試行が考慮される。ステップ８６４に進む。
ステップ８４２：Ｄ３ブロック内の全ページがテストされたか？そうでなければ、次のページを処理するべくステップ８４４に進む。ブロック全体がテストで良好とされたならば、ステップ８５０に進む。
ステップ８４４：Ｄ３ブロック内の次のページを選択する。ステップ８３６に戻る。
ステップ８６２：再試行が試みられる前に、再試行の数がセットされている限界値ＥＰＷＲ＿ｒｅｔｒｉｅｓ（図２１を参照）を既に超えているかどうかを検査する。超えていなければ、ステップ８６６に進むことによって再試行が試みられる。再試行の数がセットされている限界値を超えていれば、そのメモリデバイスはその寿命の終わりの時にあると見なされ、コントロールはステップ８７０に進む。
ステップ８６６：再試行を試みる前の別の考慮事項は、過多なエラーがＤ１内のデータに固有のものであってＤ１からＤ３へのプログラミングエラーに起因するものではないのかどうかを検査することである。Ｄ１データは初めに過多なＥＣＣエラーがあるかどうかが検査される。エラーの数がＥＣＣ＿ｔｈｒｅｓｈｏｌｄ＿ＳＬＣ（図２１を参照）のような所定のしきい値を超えたならば、再試行は無益である。別のＤ３ブロックを処理するためにステップ８３４に戻る。
しかし、次の任意選択の特徴が実行されるならば、代わりに任意選択のステップ８６８に進む。一方、Ｄ１データが良好であれば、さらに進んでステップ８６９において別のＤ３ブロックの再試行を試みる。別の実施形態では、ステップ８６６はステップ８６２の前に実行される。
【０１０４】
図２２Ｃは、破線のボックスにより示される任意選択の特徴をも示している。１つの選択肢は、ブロックがその寿命の終わりの時までに過度に多くの再試行を受けたかどうかを検査するステップ８６４および８６５により示されている。そうならば、そのブロックの物理的完全性は問題であるかも知れず、そのブロックを、それが再び使用されないように、リタイアさせるのが最善である。この選択肢が実行される時には、ステップ８６２におけるＮＯからの流れはステップ８６４へ向けられる。
ステップ８６４：Ｄ３ブロックはパラメータＢｌｏｃｋ＿ｍａｘ−ｒｅｔｒｉｅｓ（図２１を参照）により定義されるしきい値より多い再試行を経験したか？そうならば、ステップ８６５に進んでそのブロックをリタイアさせ、そうでなければステップ８６６に進んでさらに再書き込み決定を行う。
ステップ８６５：Ｄ３ブロックは、その寿命の終わりの時までに、余りに多くの再試行を受けさせられ、堅固であるとは見なされ得ない。リタイアさせられて流通から回収される。その後、コントロールは、Ｄ３ブロックを再書き込みするステップ８６９に直接進む。
【０１０５】
他の選択肢は、Ｄ１データが余り良くない場合、初めにＥＣＣによって訂正されて、Ｄ３に折り込まれる前にＤ１に再ステージされることである。この選択肢が実行される時に、ステップ８６６におけるＹＥＳからの流れはステップ８３４の代わりにステップ８６８へ向けられる。
ステップ８６８：問題のあるＤ１データはＥＣＣにより訂正されてＤ１に再ステージされる。ステップ８６９に進む。
【０１０６】
各々１ビットデータを記憶するメモリセルを有する第１の部分と各々３ビットデータを記憶するメモリセルを有する第２の部分とに分割されているメモリについて１つの例が与えられているけれども、本発明はその例によって限定されない。
【０１０７】
本発明の前の詳細な記述は、説明および記述の目的のために提示されている。網羅的であることも、発明を開示された形そのものに限定することも意図されていない。前の教示を考慮すれば多くの改変および変更が可能である。記述された実施形態は、本発明の原理およびその実際的応用を最善に説明し、それにより他の当業者が本発明を、意図された特定の用途に適する種々の実施形態で種々の改変を用いて最善に利用できるようにするために選択された。本発明の範囲は添付されている特許請求の範囲により定義されるべく意図されている。
【図１】
0005596791.tif 000002
【図２】
0005596791.tif 000003
【図３】
0005596791.tif 000004
【図４】
0005596791.tif 000005
【図５Ａ】
0005596791.tif 000006
【図５Ｂ】
0005596791.tif 000007
【図６】
0005596791.tif 000008
【図７】
0005596791.tif 000009
【図８】
0005596791.tif 000010
【図９】
0005596791.tif 000011
【図１０Ａ】
0005596791.tif 000012
【図１０Ｂ】
0005596791.tif 000013
【図１１】
0005596791.tif 000014
【図１２】
0005596791.tif 000015
【図１３】
0005596791.tif 000016
【図１４Ａ】
0005596791.tif 000017
【図１４Ｂ】
0005596791.tif 000018
【図１５】
0005596791.tif 000019
【図１６Ａ】
0005596791.tif 000020
【図１６Ｂ】
0005596791.tif 000021
【図１６Ｃ】
0005596791.tif 000022
【図１７】
0005596791.tif 000023
【図１８】
0005596791.tif 000024
【図１９】
0005596791.tif 000025
【図２０Ａ】
0005596791.tif 000026
【図２０Ｂ】
0005596791.tif 000027
【図２０Ｃ】
0005596791.tif 000028
【図２１】
0005596791.tif 000029
【図２２Ａ】
0005596791.tif 000030
【図２２Ｂ】
0005596791.tif 000031
【図２２Ｃ】
0005596791.tif 000032