(57)【特許請求の範囲】
【請求項１】
集積回路メモリチップであって、
ページ単位でアクセス可能な不揮発性メモリセルアレイであって、各ページが１グループのメモリセルからなり、前記１グループの各メモリセルが前記アレイの列内にあり、かつ共通ワード線によりアクセス可能な行沿いに並ぶ不揮発性メモリセルアレイと、
データがプログラムされる各列セットにつき第１および第２の符号化法と、
１または８であるページの各列セットにつき１つの一連の擬似ランダム極性ビットと、
各列セットに対応するデータビットを、各列セットの前記擬似ランダム極性ビットが第１の状態にあるか、それとも第２の状態にあるかに応じて、第１または第２の符号化法により、符号化するエンコーダと、
前記符号化されたデータを各ページに並行してプログラムするプログラミング回路と、
を備えるメモリチップ。
【請求項２】
請求項１記載のメモリチップにおいて、
前記第１の符号化法は各列セットに対応する前記データビットを変えずに残し、前記第２の符号化法は前記データビットを反転させるメモリチップ。
【請求項３】
請求項１記載のメモリチップにおいて、
擬似ランダムジェネレータをさらに備え、
前記一連の擬似ランダム極性ビットは、前記擬似ランダムジェネレータによって生成されるメモリチップ。
【請求項４】
ページ単位でアクセス可能な不揮発性メモリセルアレイを有し、各ページが１グループのメモリセルからなり、前記１グループの各メモリセルが前記アレイの列内にあり、かつ共通ワード線によりアクセス可能な行沿いに並ぶ集積回路メモリチップで、前記アレイにデータをプログラムする方法であって、
データがプログラムされる各列セットにつき第１および第２の符号化法を提供するステップと、
一連の擬似ランダム極性ビットを、１または８であるページの各列セットにつき１つずつ、オンチップで生成するステップと、
各列セットに対応するデータビットを、各列セットの前記擬似ランダム極性ビットが第１の状態にあるか、それとも第２の状態にあるかに応じて、第１または第２の符号化法により、符号化するステップと、
前記符号化されたデータを各ページに並行してプログラムするステップと、
を含む方法。
【請求項５】
請求項４記載の方法において、
前記第１の符号化法は各列セットに対応する前記データビットを変えずに残し、前記第２の符号化法は前記データビットを反転させる方法。
【請求項６】
請求項４記載の方法において、
前記一連の擬似ランダム極性ビットは、擬似ランダムジェネレータによりオンチップで生成される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には電荷蓄積素子を備えるフラッシュメモリ等の不揮発性メモリに関し、より具体的にはメモリ誤作動の原因となる可能性のある望ましくないデータパターンを回避するためにデータを擬似ランダム的にメモリに蓄積することに関する。
【背景技術】
【０００２】
フラッシュメモリカードおよびドライブの大容量化にともない、メモリアレイの中にあるメモリセルの規模は縮小し続けている。特にＮＡＮＤ系の高密度アレイの中では、アレイの１セルまたは一部分に蓄積される電荷が近傍セルの読み出しまたはプログラム操作に影響をおよぼすことがある。いわゆるリードディスターブ、プログラムディスターブ、セル結合等のことである。
【０００３】
ＮＡＮＤフラッシュのセル結合、妨害、動作および構造上の一般的なさらなる情報については、その全体があらゆる目的のために本願明細書において参照により援用されている「Method for Non-Volatile Memory With Background Data Latch Caching During Program Operations 」という米国公開特許出願第２００６−０２３３０２６号（特許文献１）、「Method for Non-Volatile Memory With Background Data Latch Caching During Erase Operations 」という米国公開特許出願第２００６−０２３３０２３号（特許文献２）、「Method for Non-Volatile Memory With Background Data Latch Caching During Read Operations」という米国公開特許出願第２００６−０２２１６９６号（特許文献３）、「Techniques for Reducing Effects of Coupling Between Storage Elements of Adjacent Rows of Memory Cells 」という米国特許第６，８７０，７６８号（特許文献４）、ならびに「Reducing Floating Gate to Floating Gate Coupling Effect 」という米国公開特許出願第２００６−０１４００１１号（特許文献５）を参照されたい。
【０００４】
一部のユーザは恒常的にフラッシュメモリのいくつかのブロックに同じデータパターンを何度も繰り返し蓄積する。その結果、消去はされても決してプログラムされないビットが発生する。また、絶えずプログラムされ滅多に消去されないビットも発生する。このように執拗に繰り返されるデータパターンには、フローティングゲート間効果、ＮＡＮＤストリング抵抗効果、メモリ耐久性・信頼性低下といった妨害、障害を招くという問題がある。
【０００５】
不揮発性電荷蓄積が可能なソリッドステートメモリ、特に形状因子が小さいカードにパッケージされたＥＥＰＲＯＭやフラッシュＥＥＰＲＯＭの形をとるものは、近年、情報家電や家庭用電化製品を中心に、様々なモバイルおよびハンドヘルド装置のストレージとして盛んに選ばれている。同じくソリッドステートメモリであるＲＡＭ（ランダムアクセスメモリ）と違って、フラッシュメモリは不揮発性であって、蓄積されたデータは電源を切った後にも残る。フラッシュメモリはコストが高くつくにもかかわらず、大容量ストレージ用途に使われることが多くなっている。ハードドライブやフロッピー（登録商標）ディスク等、回転する磁気媒体を基礎とする従来の大容量ストレージは、モバイル／ハンドヘルド環境に不向きである。なぜならば、ディスクドライブは多くの場合かさばり、機械的な故障が起きやすく、待ち時間が長く、電力を食うためである。このような望ましくない性質を持つディスク方式のストレージは、ほとんどのモバイル／ポータブル用途にとって実用的でない。その一方で、埋め込み型や取り外し可能なカードの形をとるフラッシュメモリは、その小さなサイズと、低消費電力と、高速度と、高信頼性ゆえにモバイル／ハンドヘルド環境に理想的にマッチする。
【０００６】
ＥＥＰＲＯＭと電気的にプログラム可能な読み出し専用メモリ（ＥＰＲＯＭ）は、消去可能で、そのメモリセルに新しいデータを書き込める、すなわち「プログラム」できる不揮発性メモリである。いずれも、半導体基板のソース領域とドレイン領域との間のチャネル領域上に配置された電界効果トランジスタ構造によるフローティング（非接続）導電性ゲートを利用する。さらに、このフローティングゲートの上にコントロールゲートを設ける。トランジスタのしきい値電圧特性はフローティングゲート上に保持される電荷の量によって制御される。つまり、フローティングゲート上の一定レベルの電荷に応じてコントロールゲートに電圧（しきい値）が印加され、トランジスタが「オン」に切り替わることにより、ソース領域とドレイン領域との導通が可能となる。
【０００７】
フローティングゲートは一定範囲の電荷を保持でき、しきい値電圧ウィンドウ内のいずれかのしきい値電圧レベルまでプログラムできる。しきい値電圧ウィンドウのサイズは装置の最小しきい値レベルと最大しきい値レベルによって決まり、これはフローティングゲートにプログラムできる電荷の範囲に相当する。しきい値ウィンドウは普通、メモリ装置の特性と、作動条件と、来歴とに左右される。基本的には、ウィンドウ内の個々の分解可能なしきい値電圧レベル範囲によってセルの明確な記憶状態が決まり得る。
【０００８】
メモリセルとして機能するトランジスタは通常、２通りの方法のいずれか一方によって「プログラム済み」状態までプログラムされる。「ホットエレクトロン注入法」では、ドレインに印加される高電圧によって基板チャネル領域上で電子が加速する。同時に、コントロールゲートに印加される高電圧が、薄いゲート誘電体を通じてフローティングゲートまでホットエレクトロンを引き寄せる。「トンネル注入法」では、基板に比べて高い電圧をコントロールゲートに印加する。これにより電子は基板から介在するフローティングゲートへ引き寄せられる。
【０００９】
メモリ装置の消去にはいくつかの方法がある。ＥＰＲＯＭの場合は、紫外線によりフローティングゲートから電荷を除去することによってメモリをまとめて消去できる。ＥＥＰＲＯＭのメモリセルは電気的に消去され得る。つまりコントロールゲートに比べて高い電圧を基板に印加し、フローティングゲートの電子を薄い酸化物を通じて基板チャネル領域まで誘導する（すなわち、ファウラーノルドハイムトンネリング）。通常、ＥＥＰＲＯＭはバイト単位で消去可能である。フラッシュＥＥＰＲＯＭの場合は、メモリが一度にまとめて電気的に消去され得るか、一度に１ブロック以上が電気的に消去され、このブロックは、５１２バイト以上のメモリを構成することがある。
【００１０】
不揮発性メモリセルの例
メモリ装置は通常、１つ以上のメモリチップをカード上に実装する。それぞれのメモリチップは、デコーダや消去回路、書き込み回路、および読み出し回路等の周辺回路によって支援されるメモリセルアレイを備える。より精緻なメモリ装置にはコントローラも搭載され、これは知的で高度なメモリ操作とインターフェイスを実行する。今日、商業的に成功を収めた不揮発性ソリッドステートメモリ装置が数多く使われている。これらのメモリ装置には様々なタイプのメモリセルが採用されてよく、各種のメモリセルは１つ以上の電荷蓄積素子を具備する。
【００１１】
図１Ａ〜１Ｅは、不揮発性メモリセルの様々な例を概略的に示すものである。
【００１２】
図１Ａは、フローティングゲートに電荷を蓄積するＥＥＰＲＯＭセルの形をとる不揮発性メモリを概略的に示す。電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）はＥＰＲＯＭに似た構造を持つほか、適度の電圧印加によりフローティングゲートに電荷を電気的に導入、除去するメカニズムを備え、紫外線に晒す必要はない。米国特許第５，５９５，９２４号（特許文献６）には、かかるセルの例とその製造方法が記載されている。
【００１３】
図１Ｂは、選択ゲートとコントロールゲートまたはステアリングゲートの両方を具備するフラッシュＥＥＰＲＯＭセルを概略的に示す。メモリセル１０は、ソース１４およびドレイン１６拡散層間に「スプリットチャネル」１２を具備する。セルは、２つの直列トランジスタＴ１およびＴ２によって事実上形成される。Ｔ１は、フローティングゲート２０とコントロールゲート３０とを具備するメモリトランジスタとして機能する。フローティングゲートは選択可能な量の電荷を蓄積できる。チャネルのＴ１部分を流れ得る電流の量は、コントロールゲート３０の電圧と、介在するフローティングゲート２０に存在する電荷の量とに左右される。Ｔ２は、選択ゲート４０を具備する選択トランジスタとして機能する。選択ゲート４０の電圧によってＴ２がオンに切り替わると、チャネルのＴ１部分の電流がソースおよびドレイン間を通過できるようになる。選択トランジスタは、コントロールゲートの電圧から独立したスイッチをソース−ドレインチャネル沿いに提供する。この利点として、フローティングゲートにおける電荷空乏（正）のためにゼロコントロールゲート電圧でなお導通するセルをオフに切り替えることができる。もうひとつの利点として、ソース側の注入プログラミングをより容易に実施できる。
【００１４】
図１Ｂの点線で概略的に示されているように、シンプルなスプリットチャネルメモリセルの実施形態では、選択ゲートとコントロールゲートが同じワード線へ接続される。この場合は、チャネルの一部分に電荷蓄積素子（フローティングゲート）を重ね、他のチャネル部分と電荷蓄積素子にはコントロールゲート構造（ワード線の一部）を重ねる。これにより２つのトランジスタが直列するセルが事実上形成され、一方のトランジスタ（メモリトランジスタ）では、電荷蓄積素子上の電荷量とワード線上の電圧とによりチャネルの当該部分を流れ得る電流の量が制御され、他方のトランジスタ（選択トランジスタ）はゲートとして機能するワード線のみとなる。米国特許第５，０７０，０３２号（特許文献７）、第５，０９５，３４４号（特許文献８）、第５，３１５，５４１号（特許文献９）、第５，３４３，０６３号（特許文献１０）、および第５，６６１，０５３号（特許文献１１）には、かかるセルの例と、メモリシステムにおけるその使用と、製造方法とが記載されている。
【００１５】
図１Ｂに示されたスプリットチャネルセルのより精緻な実施形態では、選択ゲートとコントロールゲートが独立し、点線で結ばれない。一実施例では、ワード線に対して垂直の制御（または、ステアリング）線へ接続されたセルアレイの１列にコントロールゲートを具備する。この場合は、選択されたセルの読み出しやプログラミングにあたって、ワード線が２つの機能を同時に果たさずにすむ。２つの機能とは、（１）選択トランジスタのゲートとして機能すること（そのため、選択トランジスタのオン／オフにあたっては適度の電圧が必要となる）、（２）ワード線と電荷蓄積素子との電界（容量）結合により電荷蓄積素子の電圧を所望のレベルに到達させることである。多くの場合、これらの機能の両方をひとつの電圧で最適に果たすのは困難である。コントロールゲートと選択ゲートの個別制御により、ワード線は機能（１）を果たすだけでよく、機能（２）は追加の制御線が担当する。その結果、対象となるデータにプログラミング電圧を適合させるより高性能なプログラミング設計が可能となる。フラッシュＥＥＰＲＯＭアレイにおける独立したコントロール（または、ステアリング）ゲートの使用は、例えば、米国特許第５，３１３，４２１号（特許文献１２）および第６，２２２，７６２号（特許文献１３）に記載されている。
【００１６】
図１ＣはもうひとつのフラッシュＥＥＰＲＯＭセルを概略的に示すものであり、二重フローティングゲートと、独立した選択ゲートおよびコントロールゲートとを具備する。メモリセル１０’は図１Ｂのメモリセルに類似するが、３つの直列トランジスタを事実上具備する。この種のセルでは、ソースおよびドレイン拡散層間のチャネル上に２つの蓄積素子（すなわち、Ｔ１−左とＴ１−右のもの）があり、その間には選択トランジスタＴ２がある。このメモリトランジスタはフローティングゲート２０’および２０’’とコントロールゲート３０’および３０’’をそれぞれ具備する。選択トランジスタＴ２は選択ゲート４０’によって制御される。読み出しや書き込みにあたっては、常にメモリトランジスタ対のいずれか一方のみにアクセスする。蓄積単位Ｔ１−左にアクセスするときにはＴ２とＴ１−右の両方がオンになり、チャネルのＴ１−左部分の電流がソースおよびドレイン間を通過できるようになる。同様に、蓄積単位Ｔ１−右にアクセスするときにはＴ２とＴ１−左がオンになる。消去にあたっては、選択ゲートポリシリコンの一部分をフローティングゲートに近づけ、選択ゲートに十分な正電圧（例えば、２０Ｖ）を印加し、フローティングゲートの中に蓄積された電子を選択ゲートポリシリコンへ抜けさせる。
【００１７】
図１Ｄは、ＮＡＮＤセルの形に構成された一連のメモリセルを概略的に示す。ＮＡＮＤセル５０は、ソースおよびドレインによりデイジーチェーン接続された一連のメモリトランジスタＭ１、Ｍ２・・・Ｍｎ（ｎ＝４，８，１６以上）からなる。１対の選択トランジスタＳ１、Ｓ２は、ＮＡＮＤセルのソース端子５４とドレイン端子５６を通じて外部に至るメモリトランジスタチェーンの接続を制御する。メモリアレイでソース選択トランジスタＳ１がオンになると、ソース端子がソース線へ結合される。同様に、ドレイン選択トランジスタＳ２がオンになると、ＮＡＮＤセルのドレイン端子はメモリアレイのビット線へ結合される。チェーンの中の各メモリトランジスタは、一定量の電荷を蓄積して目的の記憶状態を表現する電荷蓄積素子を具備する。読み出し操作と書き込み操作は各メモリトランジスタのコントロールゲートによって制御される。選択トランジスタＳ１、Ｓ２のコントロールゲートはそれぞれ、ソース端子５４とドレイン端子５６を介したＮＡＮＤセルへのアクセスを制御する。
【００１８】
ＮＡＮＤセルの中でアドレスされたメモリトランジスタを読み出したりプログラミング中にベリファイしたりするときには、そのコントロールゲートにしかるべき電圧が供給される。同時に、ＮＡＮＤセル５０の中でアドレスされない残りのメモリトランジスタは、それぞれのコントロールゲートに印加される十分な電圧により完全にオンになる。こうして個々のメモリトランジスタのソースからＮＡＮＤセルのソース端子５４にかけて導電経路ができあがる。個々のメモリトランジスタのドレインからセルのドレイン端子５６についても同様である。米国特許第５，５７０，３１５号（特許文献１４）、第５，９０３，４９５号（特許文献１５）、第６，０４６，９３５号（特許文献１６）には、そのようなＮＡＮＤセル構造を持つメモリ装置が記載されている。
【００１９】
図１Ｅは、誘電体層に電荷を蓄積する不揮発性メモリを概略的に示す。前述した導電性フローティングゲート素子の代わりに誘電体層が使われている。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（非特許文献１）には、このような誘電性蓄積素子を利用するメモリ装置が記載されている。ソースおよびドレイン拡散層間のチャネルにまたがってＯＮＯ誘電体層が延在する。１データビットのための電荷はドレインに近い誘電体層に局在し、他のデータビットのための電荷はソースに近い誘電体層に局在する。例えば、米国特許第５，７６８，１９２号（特許文献１７）および第６，０１１，７２５号（特許文献１８）には、２つの二酸化ケイ素層にトラッピング誘電体をはさむ不揮発性メモリセルが開示されている。多状態データストレージは、誘電体の中で空間的に隔てられた電荷蓄積領域のバイナリ状態を別々に読み出すことによって実現する。
【００２０】
メモリアレイ
メモリ装置は通常、行列に配置され、ワード線とビット線によりアドレス可能である二次元メモリセルアレイを備える。アレイはＮＯＲタイプかＮＡＮＤタイプのアーキテクチャに従って形成できる。
【００２１】
ＮＯＲアレイ
図２は、ＮＯＲメモリセルアレイの一例を示す。これまでＮＯＲタイプのアーキテクチャを持つメモリ装置は、図１Ｂまたは図１Ｃに描かれたタイプのセルを用いて実装されてきた。メモリセル行は、それぞれのソースとドレインによりデイジーチェーン接続される。この設計は仮想接地設計と呼ばれることがある。各々のメモリセル１０はソース１４と、ドレイン１６と、コントロールゲート３０と、選択ゲート４０とを具備する。行内のセルの選択ゲートはワード線４２へ接続する。列内のセルのソースおよびドレインは選択されたビット線３４および３６へ接続する。メモリセルのコントロールゲートと選択ゲートを別々に制御する一部の実施形態では、ステアリング線３６によって列内のセルのコントロールゲートが接続される。
【００２２】
多くのフラッシュＥＥＰＲＯＭ装置は、コントロールゲートと選択ゲートがともに接続されたメモリセルによって実装される。この場合、ステアリング線は必要なく、行沿いのセルのコントロールゲートと選択ゲートは全て、ワード線によって単に接続される。米国特許第５，１７２，３３８号（特許文献１９）および第５，４１８，７５２号（特許文献２０）には、その設計例が開示されている。この設計で、ワード線は基本的に２つの役割を果たす。つまり、行選択の役割と、読み出しやプログラミングにあたって行内の全セルにコントロールゲート電圧を供給する役割とを果たす。
【００２３】
ＮＡＮＤアレイ
図３は、図１Ｄに見られるメモリセル等からなるＮＡＮＤアレイの一例を示す。ビット線は各ＮＡＮＤセル列に沿って各ＮＡＮＤセルのドレイン端子５６へ結合する。ソース線はＮＡＮＤセル行に沿って、全ソース端子５４へ接続し得る。さらに、行沿いのＮＡＮＤセルのコントロールゲートは一連の対応するワード線へ接続する。接続されたワード線を通じてコントロールゲートにしかるべき電圧をかけて１対の選択トランジスタ（図１Ｄ参照）をオンにすることにより、行全体のＮＡＮＤセルをアドレスできる。ＮＡＮＤセルのチェーンの中のひとつのメモリトランジスタを読み出すときには、チェーンの中の残りのメモリトランジスタがそれぞれの関連するワード線を通じてハードオンになるため、チェーンの中を流れる電流は、基本的には読み出しの対象となるセルに蓄積される電荷レベルに左右される。米国特許第５，５７０，３１５号（特許文献１４）、第５，７７４，３９７号（特許文献２１）、および第６，０４６，９３５号（特許文献１６）には、ＮＡＮＤアーキテクチャアレイの例とメモリシステムの一部としてのこの動作が記載されている。
【００２４】
ブロック消去
電荷蓄積メモリ装置のプログラミングではひたすら電荷蓄積素子に電荷が加えられる。このためプログラミング操作にあたっては、電荷蓄積素子に既に存在する電荷を事前に除去（または、消去）しなければならない。１つ以上のメモリセルブロックを消去するため、消去回路（図示せず）を設ける。セルアレイ全体あるいはアレイのかなりのセル群を、電気的に一斉に（すなわち、瞬時に）消去するＥＥＰＲＯＭ等の不揮発性メモリは「フラッシュ」ＥＥＰＲＯＭと呼ばれる。消去の後にはセル群を再プログラムできる。一斉に消去できるセル群は１つ以上のアドレス可能な消去単位からなってよい。消去単位またはブロックは通常１ページ以上のデータを蓄積し、このページがプログラミングと読み出しの単位となるが、１回の操作で２ページ以上をプログラムしたり読み出したりする場合もある。各ページには通常１セクタ以上のデータが蓄積され、このセクタのサイズはホストシステムによって決まる。例えば、磁気ディスクドライブの場合は５１２バイトのユーザデータからなるセクタが標準となり、さらにここにユーザデータおよび／またはこれを蓄積するブロックに関する何バイトかのオーバーヘッド情報が加わる。
【００２５】
読み出し／書き込み回路
通常の２状態ＥＥＰＲＯＭセルでは、１つ以上の電流区切りレベルを設定して伝導ウィンドウを２つの領域に分割する。予め決められた一定の電圧を印加することによってセルを読み出すときには、そのソース／ドレイン電流を区切りレベル（または基準電流ＩREF ）と比較することによって記憶状態を決定する。読み出される電流が区切りレベルの電流より高ければ、セルはひとつの論理状態（例えば「０」状態）にあると判断される。その一方で、電流が区切りレベルの電流に満たなければ、セルはもうひとつの論理状態（例えば、「１」状態）にあると判断される。かかる２状態セルは１ビットのデジタル情報を蓄積する。基準電流源は外部からプログラムでき、通常はメモリシステムの一部として用意され、区切りレベル電流を生成する。
【００２６】
メモリ容量を増やすため、フラッシュＥＥＰＲＯＭ装置の実装密度は半導体技術の進歩にともないどんどん高くなっている。各メモリセルで３状態以上を蓄積することによって蓄積容量を増やす方法もある。
【００２７】
多状態またはマルチレベルのＥＥＰＲＯＭメモリセルの場合は、伝導ウィンドウを複数の区切り点で３つ以上の領域に分割し、各セルに２ビット以上のデータを蓄積することができる。つまり所与のＥＥＰＲＯＭアレイで蓄積できる情報は、各セルで蓄積できる状態数にともない増加する。米国特許第５，１７２，３３８号（特許文献１９）には、多状態またはマルチレベルのメモリセルを備えるＥＥＰＲＯＭまたはフラッシュＥＥＰＲＯＭが記載されている。
【００２８】
実際には、コントロールゲートに基準電圧が印加されるときに、セルのソース電極とドレイン電極にかけて伝導電流を検知することによってセルの記憶状態を読み出すのが普通である。つまりセルのフローティングゲート上の所与の各電荷につき、一定の基準コントロールゲート電圧に対して相応の伝導電流を検出できる。同様に、対応するしきい値電圧ウィンドウや対応する伝導電流ウィンドウは、フローティングゲートにプログラムできる電荷の範囲によって決まる。
【００２９】
あるいは、分割された電流ウィンドウの中で伝導電流を検出する代わりに、コントロールゲートで検査の対象となる所与の記憶状態に対してしきい値電圧を設定し、伝導電流がしきい値電流より低いか高いかを検出することも可能である。一実施例において、ビット線のキャパシタンスを通じて放電する伝導電流のレートを調べることによって、しきい値電流に対する伝導電流の検出を果たす。
【００３０】
図４は、フローティングゲートが常に選択的に蓄積できる４通りの電荷Ｑ１〜Ｑ４におけるソース−ドレイン電流ＩD とコントロールゲート電圧ＶCGとの関係を示すものである。実線で描かれた４本のＩD 対ＶCG曲線はメモリセルのフローティングゲートにプログラムできる４通りの可能な電荷レベルを表し、４通りの可能な記憶状態にそれぞれ相当する。一例として、セル集団のしきい値電圧ウィンドウは０．５Ｖから３．５Ｖにおよび得る。しきい値ウィンドウをそれぞれ０．５Ｖの間隔で５つの領域に分割することにより、６通りの記憶状態に区切られてよい。例えば、図に示されているように、２μＡの基準電流ＩREF を使用するならば、Ｑ１でプログラムされるセルは、その曲線がＶCG＝０．５Ｖおよび１．０Ｖで区切られたしきい値ウィンドウの領域内でＩREF と交差するため、記憶状態「１」にあるとみなされてよい。同様に、Ｑ４は記憶状態「５」にある。
【００３１】
前の説明から分かるように、メモリセルで蓄積する状態が多ければ多いほどしきい値ウィンドウは細かく分割される。そこで所要の分解能を達成するには、プログラミング操作と読み出し操作の精度を上げる必要がある。
【００３２】
米国特許第４，３５７，６８５号（特許文献２２）には２状態ＥＰＲＯＭをプログラムする方法が開示され、この方法では、所与の状態までセルがプログラムされると、セルが相継ぐプログラミング電圧パルスに晒され、そのつどフローティングゲートに電荷が加わる。パルスの合間にはセルのリードバックまたはベリファイを行い、区切りレベルに対するソース−ドレイン電流を確認する。所望の状態に達した電流が確認されるとプログラミングは停止する。使用するプログラミングパルストレインの周期または振幅は上げることができる。
【００３３】
先行技術のプログラミング回路では、消去または接地状態から目標状態に達するまでプログラミングパルスを単に印加しながらしきい値ウィンドウを通過していく。実際面で十分な分解能を実現するには、分割されたかあるいは区切られた各領域につき、最低でも５ステップ程度のプログラミングステップを踏む必要がある。２状態メモリセルならば、性能は許容される。しかし、多状態セルの場合は、必要ステップ数が分割数にともない増加するため、プログラミングの精度または分解能を上げなければならない。例えば、１６状態セルで目標状態までプログラムするには、最低でも平均４０のプログラミングパルスが必要となる。
【００３４】
図５は、読み出し／書き込み回路１７０から行デコーダ１３０と列デコーダ１６０とを通じて典型的なメモリアレイ構成１００にアクセスするメモリ装置を概略的に示す。図２および図３に関連して説明したように、メモリアレイ１００の中にあるメモリセルのメモリトランジスタは、１組の選択されたワード線とビット線を通じてアドレスできる。アドレスされたメモリトランジスタのそれぞれのゲートにしかるべき電圧を印加するため、行デコーダ１３０は１つ以上のワード線を選択し、列デコーダ１６０は１つ以上のビット線を選択する。読み出し／書き込み回路１７０は、アドレスされたメモリトランジスタの記憶状態を読み出すかまたは書き込む（プログラムする）ためにある。読み出し／書き込み回路１７０は、ビット線を通じてアレイ内の記憶素子へ接続可能ないくつかの読み出し／書き込みモジュールを備える。
【００３５】
図６Ａは、個々の読み出し／書き込みモジュール１９０の概略的ブロック図である。読み出しやベリファイのときには基本的に、選択されたビット線を通じて接続するアドレスされたメモリトランジスタのドレインを流れる電流をセンスアンプで判定する。この電流は、メモリトランジスタに蓄積された電荷とそのコントロールゲート電圧に左右される。例えば、多状態ＥＥＰＲＯＭセルでは、数通りのレベルのいずれかまでフローティングゲートを荷電できる。これにより、４レベルセルならば、２ビットのデータを蓄積できる。センスアンプによって検出されたレベルはレベル−ビット変換ロジックによって１組のデータビットに変換され、データラッチに蓄積される。
【００３６】
読み出し／書き込み性能・精度に影響する要因
読み出しとプログラミングの性能を上げるには、アレイの中にある複数の電荷蓄積素子またはメモリトランジスタを並行して読み出すかまたはプログラムする。つまり、記憶素子からなる論理「ページ」の読み出しまたはプログラミングは一斉に行われる。既存のメモリアーキテクチャでは通常、１行の中にいくつかの交互ページがある。読み出しまたはプログラミングは１ページの全記憶素子で一斉に行われる。列デコーダは交互ページの各々を対応する数の読み出し／書き込みモジュールへ選択的に接続する。例えば、一実施例において、５３２バイト（５１２バイトにオーバーヘッドの２０バイトを加えたもの）のページサイズでメモリアレイを設計する。各列にドレインビット線があって各行につき２つの交互ページがあるならば、列は８，５１２列になり、各ページに４，２５６列が対応する。全ての偶数ビット線か奇数ビット線を並行して読み書きするには、４，２５６個のセンスモジュールを接続することになる。こうして、記憶素子のページには１ページ４，２５６ビット（すなわち、５３２バイト）のデータを並行して読み出すかまたはプログラムする。読み出し／書き込み回路１７０を形成する読み出し／書き込みモジュールは、様々なアーキテクチャに組むことができる。
【００３７】
図５を参照すると、読み出し／書き込み回路１７０は、数バンクの読み出し／書き込みスタック１８０に編制されている。それぞれの読み出し／書き込みスタック１８０は読み出し／書き込みモジュール１９０を積み重ねたものである。メモリアレイにおける列の間隔は、これを占有する１つまたは２つのトランジスタのサイズによって決まる。しかし、図６Ａから見てとれるように、読み出し／書き込みモジュールの回路はさらに多くのトランジスタと回路素子により実装され、多数の列にわたってスペースを占めることが見込まれる。占有された列の中で２つ以上の列を処理するため、多数のモジュールを互いに積み重ねる。
【００３８】
図６Ｂは、読み出し／書き込みモジュール１９０の積み重ねにより従来どおりに実装された図５の読み出し／書き込みスタックを示す。例えば、読み出し／書き込みモジュールが１６列にわたって延在するならば、１スタックに８読み出し／書き込みモジュールの読み出し／書き込みスタック１８０により８列を並列処理できる。この読み出し／書き込みスタックは列デコーダを通じて、バンク中の８つの奇数（１，３，５，７，９，１１，１３，１５）列か８つの偶数（２，４，６，８，１０，１２，１４，１６）列に結合できる。
【００３９】
既に述べたように、従来のメモリ装置は一度に全ての偶数ビット線か全ての奇数ビット線に対して大規模な並列処理を行うことによって、読み出し／書き込み操作を向上させる。この１行２交互ページのアーキテクチャは、読み出し／書き込み回路ブロックの整合問題の緩和に役立つ。これはビット線間容量結合をいかにコントロールするかにも左右される。１組の読み出し／書き込みモジュールを偶数ページか奇数ページに多重化するには、ブロックデコーダを使用する。こうすることで、１組のビット線で読み出しかプログラミングが行われているときには常に、互い違いのビット線を接地でき、近傍結合は最小限に抑えられる。
【００４０】
しかし、交互ページアーキテクチャは少なくとも３つの点で不利である。第１に、追加の多重化回路が必要となる。第２に、動作が遅い。ワード線によって接続されたメモリセルあるいは１行のメモリセルで、読み出しまたはプログラミングを完了するには、２回の読み出し操作か２回のプログラミング操作が必要となる。第３に、２つの近傍電荷蓄積素子が別々のときにプログラムされる、例えば奇数ページと偶数ページとで別々にプログラムされる場合のフローティングゲートレベルにおける近傍電荷蓄積素子間の電界結合等、他の好ましくない影響に対処するにあたって最適ではない。
【００４１】
近傍電界結合の問題はメモリトランジスタの間隔が狭まるにつれて顕著となる。メモリトランジスタでは、チャネル領域とコントロールゲートの間に電荷蓄積素子が挟まれている。チャネル領域を流れる電流は、電荷蓄積素子とコントロールゲートの電界によって生じる最終的な電界に相関する。メモリトランジスタは密度の増加にともない互いに接近する。近傍電荷素子からの電界は、影響を受けるセルの最終的な電界に大きく寄与する。近傍の電界は、近傍の電荷蓄積素子にプログラムされる電荷に左右される。この摂動を招く電界には、近傍電荷蓄積素子のプログラム状態に応じて変化する動的な性質がある。近傍電荷蓄積素子の状態の変化によっては、影響を受けるセルの読み出しに時間によってばらつきが生じるおそれがある。
【００４２】
従来の交互ページアーキテクチャでは、近傍フローティングゲート結合によって生じるエラーが激化する。プログラミングと読み出しは偶数ページと奇数ページで別々に行われるため、介在するページの状況次第では、ページがプログラムされるときの１組の条件とページの読み返しが行われるときの１組の条件がまったく異なることがある。読み出しエラーは密度の増加にともない深刻化するため、多状態の実施例では、読み出し操作の精度を上げてしきい値ウィンドウの分割を粗くする必要がある。性能は損なわれ、多状態の実施例での潜在的キャパシティは制限される。
【００４３】
米国公開特許出願第２００４−００６００３１号（特許文献２３）には、大きな読み出し／書き込み回路ブロックで相応のメモリセルブロックを並行して読み書きする、高性能でありながらコンパクトな不揮発性メモリ装置が開示されている。特にこのメモリ装置のアーキテクチャは、読み出し／書き込み回路ブロックの無駄を最小限に抑える。時分割方式で少数の共通部分とやり取りしながら並行して作動するブロック読み出し／書き込みモジュールの中核部分に読み出し／書き込みモジュールブロックを再配分することにより、スペースと電力を大幅に節約する。特に、読み出し／書き込み回路の複数のセンスアンプおよびデータラッチ間のデータ処理は共通のプロセッサによって実行される。
【００４４】
このように高性能・大容量不揮発性メモリが一般に求められている。特に、読み出しとプログラミングの性能が高く、コンパクトで効率的でありながら読み出し／書き込み回路におけるデータ処理に幅広く対応する改良されたプロセッサを備えるコンパクトな不揮発性メモリが求められている。
【先行技術文献】
【特許文献】
【００４５】
【特許文献１】米国公開特許出願第２００６−０２３３０２６号
【特許文献２】米国公開特許出願第２００６−０２３３０２３号
【特許文献３】米国公開特許出願第２００６−０２２１６９６号
【特許文献４】米国特許第６，８７０，７６８号
【特許文献５】米国公開特許出願第２００６−０１４００１１号
【特許文献６】米国特許第５，５９５，９２４号
【特許文献７】米国特許第５，０７０，０３２号
【特許文献８】米国特許第５，０９５，３４４号
【特許文献９】米国特許第５，３１５，５４１号
【特許文献１０】米国特許第５，３４３，０６３号
【特許文献１１】米国特許第５，６６１，０５３号
【特許文献１２】米国特許第５，３１３，４２１号
【特許文献１３】米国特許第６，２２２，７６２号
【特許文献１４】米国特許第５，５７０，３１５号
【特許文献１５】米国特許第５，９０３，４９５号
【特許文献１６】米国特許第６，０４６，９３５号
【特許文献１７】米国特許第５，７６８，１９２号
【特許文献１８】米国特許第６，０１１，７２５号
【特許文献１９】米国特許第５，１７２，３３８号
【特許文献２０】米国特許第５，４１８，７５２号
【特許文献２１】米国特許第５，７７４，３９７号
【特許文献２２】米国特許第４，３５７，６８５号
【特許文献２３】米国公開特許出願第２００４−００６００３１号
【特許文献２４】米国公開特許出願第２００４−０１０９３５７号
【特許文献２５】米国公開特許出願第２００６−０１４０００７号
【特許文献２６】「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願
【特許文献２７】「Non-Volatile Memory and Method with Power-Saving Read and Program-Verify Operations 」という米国特許出願
【特許文献２８】米国特許出願第１１／０１３，１２５号
【特許文献２９】米国特許第７，１２０，０５１号
【特許文献３０】米国公開特許出願第２００５−０２５７１２０号
【特許文献３１】米国公開特許出願第２００６−０１３６６８７号
【特許文献３２】米国公開特許出願第２００６−００３１５９３号
【特許文献３３】米国特許第６，２６６，２７３号
【特許文献３４】米国公開特許出願第２００４−０１０９３６２号
【特許文献３５】米国特許第６，６５７，８９１号
【特許文献３６】米国特許出願第１１／５３０，３９２号
【特許文献３７】米国公開特許出願第２００６−０１９８１９５号
【特許文献３８】米国特許出願第１１／６１８，４８２号
【非特許文献】
【００４６】
【非特許文献１】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
【発明の概要】
【００４７】
本発明の一態様によると、メモリページ内データのランダム化により、複数のページでデータが並ぶ場合でも、プログラミング中に問題となるデータパターンは回避される。
好適な実施形態において、ページ上でデータをスクランブルするシンプルな方法により、データはページごとに独立しているかまたは異なる開始アドレスに書き込まれる。メモリセルの各ページには、ページごとに異なる開始位置に対応するデータページが書き込まれる。ページの終わりまでデータで埋め尽くされると、ページの最初のアドレスからラップアラウンドし、開始位置の手前まで書き込みを継続する。
別の好適な実施形態では、擬似ランダムジェネレータによって一連の開始物理列アドレスが各ページにつき１つずつ提供される。
【００４８】
本発明の別の態様によると、ページに含まれる消去済み状態とプログラム済み状態のセルの割合が平均して等しくなるように、ページ内のデータビットがランダム化される。これによりソース線バイアスまたは負荷の大きなばらつきを抑え、検知操作中のしかるべき調整により許容できるようにする。
それには、ページ内の個々のビットをランダム化する。好ましくは、それぞれ特定の極性を指定する一連の擬似ランダムビットを使ってページ内のビットを符号化する。一実施形態において、ページ内の各データビットにつき極性ビットがある。別の実施形態では、ページ内の各データバイトにつき極性ビットがある。この実施形態で、極性ビットによってビットの反転が指定される場合は、データバイト内の全ビットが反転される。
【００４９】
本発明のもうひとつの態様によると、ページ内ランダム化にページ単位のランダム化を組み合わせる。具体的にはオンチップ回路の限りあるリソースを踏まえ、ページ内ランダム化にあたっては各ページに個別の開始位置を用意するのが望ましく、ページ単位ランダム化にあたっては各ページに個別の符号化極性を用意するのが望ましい。
別の実施形態では、各ページに個別の開始位置を用意するページ内ランダム化に加えて、ページ内の各データビットセットに個別の符号化極性を用意する。
【００５０】
種々のランダム化手法と実施形態はメモリチップ（ＥＥＰＲＯＭ）で実施される。つまり、チップと通信するメモリコントローラによって実施されるのではなく、メモリチップ自体の中で実施される。これはウェアレベリングと呼ばれる問題対処法とは異なる。この手法は主にシステムレベルで実施され、コントローラを使ってメモリチップにおけるデータ蓄積のあり方を変更する。
本発明は、プログラムディスターブやユーザリードディスターブの原因となる特定のデータパターンを軽減もしくは解消するほか、ＮＡＮＤストリング抵抗効果を抑え、メモリの耐久性と信頼性を高める。フローティングゲート間結合の問題も緩和する。
【図面の簡単な説明】
【００５１】
【図１Ａ】不揮発性メモリセルの例を概略的に示す。
【図１Ｂ】不揮発性メモリセルの例を概略的に示す。
【図１Ｃ】不揮発性メモリセルの例を概略的に示す。
【図１Ｄ】不揮発性メモリセルの例を概略的に示す。
【図１Ｅ】不揮発性メモリセルの例を概略的に示す。
【図２】ＮＯＲメモリセルアレイの一例を示す。
【図３】図１Ｄに示されたメモリセル等のＮＡＮＤアレイの一例を示す。
【図４】フローティングゲートが常に蓄積できる４通りの電荷Ｑ１〜Ｑ４におけるソース−ドレイン電流とコントロールゲート電圧との関係を示す。
【図５】読み出し／書き込み回路から行デコーダと列デコーダとを通じてアクセスする典型的なメモリアレイ構成を概略的に示す。
【図６Ａ】単一の読み出し／書き込みモジュールの概略的ブロック図である。
【図６Ｂ】読み出し／書き込みモジュールの積み重ねにより従来どおりに実装された図５の読み出し／書き込みスタックを示す。
【図７Ａ】本発明の改良されたプロセッサが実装される、１バンクの分割読み出し／書き込みスタックを有するコンパクトなメモリ装置を概略的に示す。
【図７Ｂ】図７Ａに示されたコンパクトなメモリ装置の好適な構成を示す。
【図８】図７Ａに示された読み出し／書き込みスタックにおける基本コンポーネントの一般的な構成を概略的に示す。
【図９】図７Ａおよび図７Ｂに示された読み出し／書き込み回路における読み出し／書き込みスタックの好適な一構成を示す。
【図１０】図９に示された共通プロセッサの改良された実施形態を示す。
【図１１Ａ】図１０に示された共通プロセッサの入力ロジックの好適な実施形態を示す。
【図１１Ｂ】図１１Ａの入力ロジックの真理値表を示す。
【図１２Ａ】図１０に示された共通プロセッサの出力ロジックの好適な実施形態を示す。
【図１２Ｂ】図１２Ａの出力ロジックの真理値表を示す。
【図１３】図１０を簡素化したものであって、本発明の２ビット実施形態の説明にかかわるいくつかの特定の素子を示す。
【図１４】下位ページデータが読み込まれる、図１３と同じ素子で上位ページプログラミングの場合のラッチ機能を示す。
【図１５】シングルページモードにおけるキャッシュプログラミング態様を示す。
【図１６】下位ページからフルシーケンスへの転換に使用できるプログラミング波形を示す。
【図１７】フルシーケンス転換をともなうキャッシュプログラミング操作の相対的タイミングを示す。
【図１８】キャッシュページコピー操作におけるラッチ処理を示す。
【図１９Ａ】キャッシュページコピー操作の相対的タイミングを示す。
【図１９Ｂ】キャッシュページコピー操作の相対的タイミングを示す。
【図２０】ＬＭ符号を使って各メモリセルに２ビットのデータを蓄積する場合の４状態メモリアレイのしきい値電圧分布を示す。
【図２１】ＥＥＰＲＯＭまたはメモリチップ６００の特定のコンポーネントの概略ブロック図である。
【図２２Ａ】ページアドレスによる様々なデータページの符号化方式および極性ビットの図解である。
【図２２Ｂ】ユーザデータの符号化を変換するために使用する１７ビット符号例の適用を示す表である。
【図２２Ｃ】例示的なＮＡＮＤチェーン／ストリングのメモリセルに蓄積される上位および下位ビットに対する極性ビットの適用を示す。
【図２３Ａ】コマンドクロック信号の関数としての符号化方式決定の図解である。
【図２３Ｂ】コマンドのクロック信号である。
【図２３Ｃ】データ符号化決定および反転用制御回路の一実施形態を示す。
【図２３Ｄ】極性ビットが蓄積されたユーザデータページを示す。
【図２３Ｅ】読み出し操作で場合により反転されたデータの符号化を復帰させる制御回路の一実施形態を示す。
【図２４Ａ】コマンドクロック信号と有限状態マシンクロック信号の時系列であって、コマンドクロック信号の立ち上がりにＦＳＭクロックの値を示す。
【図２４Ｂ】図２４Ａに示されたコマンドクロック信号の関数として極性ビットを決定する例示的な回路を示す。
【図２５】図７Ａおよび図９に示されたオンチップ制御回路をより詳細に示す。
【図２６】ページごとに異なる開始位置から書き込む好適な実施形態に従い、メモリページ上でデータをスクランブリングする方法を示す。
【図２７】データの書き込みにあたってそれぞれ異なる開始位置を持つページの一例を示す表である。
【図２８Ａ】接地にかけて有限抵抗を有するソース線の電流に起因するソース電圧誤差問題を示す。
【図２８Ｂ】ソース線電圧降下によって生じるメモリセルのしきい値電圧レベル誤差を示す。
【図２９】ページ内でビットをランダム化する方法を示す。
【図３０】本発明の別の態様に従い、ページ単位と各ページ内でデータをランダム化する方法を示す。
【発明を実施するための形態】
【００５２】
図７Ａ〜図２０は、本発明を実装する好適なメモリシステムを示す。
図７Ａは、１バンクの分割読み出し／書き込みスタックを有するコンパクトなメモリ装置を概略的に示すものであり、ここに本発明の改良されたプロセッサが実装される。このメモリ装置は、二次元のメモリセルアレイ３００と、制御回路３１０と、読み出し／書き込み回路３７０とを備える。メモリアレイ３００は、行デコーダ３３０によりワード線ごとにアドレスでき、列デコーダ３６０によりビット線ごとにアドレスできる。読み出し／書き込み回路３７０は１バンクの分割読み出し／書き込みスタック４００として実装され、メモリセルからなるブロック（「ページ」とも呼ばれる）の読み出しまたはプログラミングを並行して行うことができる。好適な実施形態において、ページは一連のメモリセル行から構成される。１行のメモリセルを多数のブロックまたはページに分割する別の実施形態において、個々のブロックに向けて読み出し／書き込み回路３７０を多重化するためにブロックマルチプレクサ３５０を設ける。
【００５３】
制御回路３１０は、読み出し／書き込み回路３７０と協働しながらメモリアレイ３００でメモリ操作を遂行する。制御回路３１０は、状態マシン３１２と、オンチップアドレスデコーダ３１４と、電力制御モジュール３１６とを備える。状態マシン３１２はチップレベルのメモリ動作制御を行う。オンチップアドレスデコーダ３１４は、ホストまたはメモリコントローラで使われるアドレスからデコーダ３３０および３７０で使われるハードウェアアドレスへのアドレスインターフェイスを提供する。電力制御モジュール３１６は、メモリ操作中にワード線とビット線へ供給される電力と電圧を制御する。
【００５４】
図７Ｂは、図７Ａに示されたコンパクトなメモリ装置の好適な構成を示す。様々な周辺回路によるメモリアレイ３００へのアクセスは、アレイの両側で相称的に行われるため、アクセス線と回路はそれぞれの側で半々になる。つまり、行デコーダは行デコーダ３３０Ａおよび３３０Ｂに分かれ、列デコーダは列デコーダ３６０Ａおよび３６０Ｂに分かれる。メモリセル行を多数のブロックに分割する実施形態では、ブロックマルチプレクサ３５０がブロックマルチプレクサ３５０Ａおよび３５０Ｂに分かれる。同様に、読み出し／書き込み回路は、アレイ３００の下からビット線へ接続する読み出し／書き込み回路３７０Ａと、アレイ３００の上からビット線へ接続する読み出し／書き込み回路３７０Ｂとに分かれる。このように、読み出し／書き込みモジュールの密度と分割読み出し／書き込みスタック４００の密度は、基本的に２分の１になる。
【００５５】
図８は、図７Ａに示された読み出し／書き込みスタックにおける基本コンポーネントの一般的な構成を概略的に示す。本発明の一般的なアーキテクチャによると、読み出し／書き込みスタック４００は、ｋ本のビット線を検知する１スタックのセンスアンプ２１２と、Ｉ／Ｏバス２３１経由でデータを入出力するＩ／Ｏモジュール４４０と、入出力データを蓄積する１スタックのデータラッチ４３０と、読み出し／書き込みスタック４００でデータを処理し蓄積する共通プロセッサ５００と、スタックコンポーネントの通信用スタックバス４２１とを備える。読み出し／書き込みスタック３７０内の種々のコンポーネントを制御するため、読み出し／書き込みスタックのスタックバスコントローラから線４１１を通じて制御信号とタイミング信号が提供される。
【００５６】
図９は、図７Ａおよび図７Ｂに示された読み出し／書き込み回路における読み出し／書き込みスタックの好適な一構成を示す。各々の読み出し／書き込みスタック４００は、ｋ本のビット線群に同時に働きかける。１ページのビット線がｐ＝ｒ＊ｋなら、ｒ個の読み出し／書き込みスタック４００−１，・・・，４００−ｒがある。
分割読み出し／書き込みスタック４００からなるバンク全体が並行して作動することにより、行沿いにｐ個のセルからなるブロック（またはページ）の読み出しまたはプログラミングを並行して行うことができる。この場合は、セル行全体に対してｐ個の読み出し／書き込みモジュールが存在することになる。各スタックでｋ個のメモリセルを処理するならば、バンク内の合計読み出し／書き込みスタック数はｒ＝ｐ／ｋで求められる。例えば、バンク内のスタック数がｒならば、ｐ＝ｒ＊ｋである。例えば、メモリアレイにおいてｋ＝８、ｒ＝５１２ならば、ｐ＝５１２バイト（５１２×８ビット）となる。ブロックは、好適な実施形態において、セル行全体である。ブロックは、別の実施形態において、行内のセルの小集団である。セルの小集団とは、例えば行全体の２分の１であったり、行全体の４分の１であったりする。セルの小集団は連続するセルであったり、１つおきのセルであったり、一定セル数おきのセルである。
【００５７】
それぞれの読み出し／書き込みスタック、例えば４００−１の中には、基本的にｋ個のメモリセルからなるセグメントを並行して処理する１スタックのセンスアンプ２１２−１から２１２−ｋがある。その全体が本願明細書において参照により援用されている米国公開特許出願第２００４−０１０９３５７号（特許文献２４）には、好適なセンスアンプが開示されている。
スタックバスコントローラ４１０は、線４１１を通じて読み出し／書き込み回路３７０へ制御信号とタイミング信号を提供する。スタックバスコントローラ自体は、線３１１を通じてメモリコントローラ３１０に従属する。各読み出し／書き込みスタック４００内の通信は相互接続スタックバス４２１（図８参照）によって行われ、スタックバスコントローラ４１０によって制御される。制御線４１１は、スタックバスコントローラ４１０から読み出し／書き込みスタック４００−１のコンポーネントへ制御信号とクロック信号を提供する。
【００５８】
スタックバスは、好適な構成において、共通プロセッサ５００とセンスアンプ２１２のスタックとの通信のためのＳＡバス４２２と、プロセッサとデータラッチ４３０のスタックとの通信のためのＤバス４２３とに分かれる。
データラッチ４３０のスタックには、当該スタックに対応する各メモリセルにつき１つずつ、４３０−１から４３０−ｋまでのデータラッチがある。Ｉ／Ｏモジュール４４０は、データラッチがＩ／Ｏバス２３１を通じて外部とデータをやり取りできるようにする。  共通プロセッサはまた、エラー状態等、メモリの動作状態を伝えるステータス信号を出力する出力５０７を含む。このステータス信号は、Ｗｉｒｅｄ−ＯＲ構成でフラグバス５０９へ結合されたｎ−トランジスタ５５０のゲートを駆動するために使われる。フラグバスは、好ましくはコントローラ３１０によって予め荷電され、いずれかの読み出し／書き込みスタックによってステータス信号がアサートされるとプルダウンされる。
【００５９】
図１０は、図９に示された共通プロセッサの改良された実施形態を示す。共通プロセッサ５００は、外部回路との通信のためのプロセッサバスＰバス５０５と、入力ロジック５１０と、プロセッサラッチＰラッチ５２０と、出力ロジック５３０とを備える。
入力ロジック５１０はＰバスからデータを受信し、スタックバスコントローラ４１０から信号線４１１経由で届く制御信号に応じて論理状態「１」、「０」、または「Ｚ」（フローティング）のいずれかひとつに変換されるデータとして、ＢＳＩノードへ出力する。次に、セット／リセットラッチであるＰラッチ５２０がＢＳＩをラッチすることで、ＭＴＣＨおよびＭＴＣＨ＊として一対の相補出力信号が用意される。
出力ロジック５３０はＭＴＣＨ信号とＭＴＣＨ＊信号を受信し、スタックバスコントローラ４１０から信号線４１１経由で届く制御信号に応じて論理状態「１」、「０」、または「Ｚ」（フローティング）のいずれかひとつに変換されるデータを、Ｐバス５０５沿いに出力する。
【００６０】
共通プロセッサ５００は特定のメモリセルに関係するデータを常に処理する。例えば、図１０は、メモリセルがビット線１へ結合される場合を示している。対応するセンスアンプ２１２−１のノードにはセンスアンプデータが出現する。このノードは好適な実施形態において、ＳＡラッチ２１４−１の形をとり、データを蓄積する。同様に、ビット線１へ結合されたメモリセルに関連する入力または出力データは、対応する１セットのデータラッチ４３０−１に蓄積される。１セットのデータラッチ４３０−１は、好適な実施形態において、ｎビットのデータを蓄積するにあたって十分なデータラッチ４３４−１・・・４３４−ｎを備える。
【００６１】
共通プロセッサ５００のＰバス５０５は、一対の相補信号ＳＡＰおよびＳＡＮによって転送ゲート５０１がイネーブルされると、Ｓバス４２２経由でＳＡラッチ２１４−１に到達する。同様に、一対の相補信号ＤＴＰおよびＤＴＮによって転送ゲート５０２がイネーブルされると、Ｐバス５０５からＤバス４２３経由で１セットのデータラッチ４３０−１に到達する。信号ＳＡＰ、ＳＡＮ、ＤＴＰ、およびＤＴＮは、スタックバスコントローラ４１０からの制御信号の一部として明示されている。
【００６２】
図１１Ａは、図１０に示された共通プロセッサの入力ロジックの好適な実施形態を示す。入力ロジック５２０はＰバス５０５沿いにデータを受信し、制御信号に応じて出力ＢＳＩは同じになるか、反転するか、フローティングする。出力ＢＳＩノードは基本的に、Ｖｄｄにかけて直列するｐトランジスタ５２４および５２５を備えるプルアップ回路か、接地にかけて直列するｎトランジスタ５２６および５２７を備えるプルダウン回路か、転送ゲート５２２の出力に左右される。プルアップ回路のｐトランジスタ５２４および５２５へ至るゲートは、信号ＰＢＵＳおよびＯＮＥによってそれぞれ制御される。プルダウン回路のｎトランジスタ５２６および５２７へ至るゲートは、信号ＯＮＥＢ＜１＞およびＰＢＵＳによってそれぞれ制御される。
【００６３】
図１１Ｂは、図１１Ａの入力ロジックの真理値表を示す。このロジックは、ＰＢＵＳと制御信号ＯＮＥ、ＯＮＥＢ＜０＞、ＯＮＥＢ＜１＞とによって制御される。これらの制御信号はスタックバスコントローラ４１０からの制御信号の一部である。基本的には３つの転送モードＰＡＳＳＴＨＲＯＵＧＨ、ＩＮＶＥＲＴＥＤ、およびＦＬＯＡＴＥＤをサポートする。
ＢＳＩが入力データと同じになるＰＡＳＳＴＨＲＯＵＧＨモードの場合、信号ＯＮＥは論理「１」、ＯＮＥＢ＜０＞は「０」、ＯＮＥＢ＜１＞は「０」となる。これによりプルアップまたはプルダウンはディスエーブルされるが、転送ゲート５２２はイネーブルされ、データはＰバス５０５に沿って出力５２３へ引き渡される。ＢＳＩが入力データの逆になるＩＮＶＥＲＴＥＤモードの場合、信号ＯＮＥは「０」、ＯＮＥＢ＜０＞は「１」、ＯＮＥＢ＜１＞は「１」となる。これにより、転送ゲート５２２はディスエーブルされる。また、ＰＢＵＳが「０」ならプルダウン回路はディスエーブルされ、プルアップ回路はイネーブルされ、結果的にＢＳＩは「１」になる。同様に、ＰＢＵＳが「１」ならば、プルアップ回路はディスエーブルされ、プルダウン回路はイネーブルされ、結果的にＢＳＩは「０」になる。最後に、ＦＬＯＡＴＥＤモードの場合は、信号ＯＮＥが「１」、ＯＮＥＢ＜０＞が「１」、ＯＮＥＢ＜１＞が「０」となり、出力ＢＳＩをフローティングさせることができる。ＦＬＯＡＴＥＤモードは完全を期するために記載されているが、実際には使われない。
【００６４】
図１２Ａは、図１０に示された共通プロセッサの出力ロジックの好適な実施形態を示す。入力ロジック５２０からＢＳＩノードに至る信号はプロセッサラッチ、Ｐラッチ５２０でラッチされる。出力ロジック５３０はＰラッチ５２０の出力からデータＭＴＣＨおよびＭＴＣＨ＊を受信し、制御信号に応じてＰＡＳＳＴＨＲＯＵＧＨモードか、ＩＮＶＥＲＴＥＤモードか、ＦＬＯＡＴＥＤモードでＰバス沿いに出力する。換言すると、４本のブランチはＰバス５０５の駆動部として機能し、これをＨＩＧＨ、ＬＯＷ、またはＦＬＯＡＴＥＤ状態まで能動的に引き上げる。これは、Ｐバス５０５の４つのブランチ回路、具体的には２つのプルアップ回路と２つのプルダウン回路とによって果たされる。第１のプルアップ回路はＶｄｄにかけて直列するｐトランジスタ５３１および５３２を備え、ＭＴＣＨが「０」のときにＰバスをプルアップできる。第２のプルアップ回路は接地にかけて直列するｐトランジスタ５３３および５３４を備え、ＭＴＣＨが「１」のときにＰバスをプルアップできる。同様に、第１のプルダウン回路はＶｄｄにかけて直列するｎトランジスタ５３５および５３６を備え、ＭＴＣＨが「０」のときにＰバスをプルダウンできる。第２のプルアップ回路は接地にかけて直列するｎトランジスタ５３７および５３８を備え、ＭＴＣＨが「１」のときにＰバスをプルアップできる。
【００６５】
本発明の一特徴として、プルアップ回路はＰＭＯＳトランジスタで構成され、プルダウン回路はＮＭＯＳトランジスタで構成される。ＮＭＯＳによるプルはＰＭＯＳのプルより遥かに強いため、競合する場合は常にプルダウンがプルアップに勝る。換言すると、ノードまたはバスはデフォルトとして常にプルアップまたは「１」状態にでき、必要とあらば常にプルダウンにより「０」状態に反転させることができる。
【００６６】
図１２Ｂは、図１２Ａの出力ロジックの真理値表を示す。このロジックは、入力ロジックからラッチされるＭＴＣＨ、ＭＴＣＨ＊と、制御信号ＰＤＩＲ、ＰＩＮＶ、ＮＤＩＲ、ＮＩＮＶとによって制御される。これらの制御信号はスタックバスコントローラ４１０からの制御信号の一部である。４つの動作モード、ＰＡＳＳＴＨＲＯＵＧＨ、ＩＮＶＥＲＴＥＤ、ＦＬＯＡＴＥＤ、およびＰＲＥＣＨＡＲＧＥをサポートする。
【００６７】
ＦＬＯＡＴＥＤモードでは４本のブランチがすべてディスエーブルになる。これは信号、ＰＩＮＶ＝１、ＮＩＮＶ＝０、ＰＤＩＲ＝１、ＮＤＩＲ＝０によって達成される。これらはデフォルト値でもある。ＰＡＳＳＴＨＲＯＵＧＨモードでＭＴＣＨ＝０ならば、ＰＢＵＳ＝０が要求される。それにはｎトランジスタ５３５および５３６を備えるプルダウンブランチだけをイネーブルし、ＮＤＩＲ＝１を除き、制御信号はどれもデフォルト値とする。ＭＴＣＨ＝１ならば、ＰＢＵＳ＝１が要求される。それにはｐトランジスタ５３３および５３４を備えるプルアップブランチだけをイネーブルし、ＰＩＮＶ＝０を除き、制御信号はどれもデフォルト値とする。ＩＮＶＥＲＴＥＤモードでＭＴＣＨ＝０ならば、ＰＢＵＳ＝１が要求される。それにはｐトランジスタ５３１および５３２を備えるプルアップブランチだけをイネーブルし、ＰＤＩＲ＝０を除き、制御信号はどれもデフォルト値とする。ＭＴＣＨ＝１ならば、ＰＢＵＳ＝０が要求される。それにはｎトランジスタ５３７および５３８を備えるプルダウンブランチだけをイネーブルし、ＮＩＮＶ＝１を除き、制御信号はどれもデフォルト値とする。ＰＲＥＣＨＡＲＧＥモードでは、ＰＤＩＲ＝０とＰＩＮＶ＝０の制御信号設定でＭＴＣＨ＝１ならば、ｐトランジスタ５３１および５３１を備えるプルアップブランチがイネーブルされ、ＭＴＣＨ＝０ならば、ｐトランジスタ５３３および５３４を備えるプルアップブランチがイネーブルされる。
その全体が本願明細書において参照により援用されている米国公開特許出願第２００６−０１４０００７号（特許文献２５）では、共通プロセッサの動作がより詳しく説明されている。
【００６８】
キャッシュ操作におけるデータラッチの使用
本発明のいくつかの態様において、読み出し、書き込み、消去といったほかの作業に内部メモリが従事しているときにデータを出し入れするキャッシュ操作にあたって、図１０で前述した読み出し／書き込みスタックのデータラッチを利用する。前述したアーキテクチャでは、多数の物理ページによってデータラッチが共用される。例えば、ビット線の読み出し／書き込みスタックを全てのワード線で共用すれば、あるひとつの操作が進行しているときに空いているラッチがあれば、同じワード線か別のワード線における先々の操作に向けて空いているラッチにデータをキャッシュできるため、転送時間は他の操作の背後に潜在化され、時間の節約になる。この場合は異なる操作または操作段階のパイプライン処理の拡大により性能を上げることができる。例えば、キャッシュプログラミング操作で１ページのデータをプログラムしているときに別のページのデータを読み込めば、転送時間を節約できる。他の例として、例示的な実施形態において、あるひとつのワード線における読み出し操作を別のワード線における書き込み操作に挿入することにより、データの書き込みを継続しながら読み出しデータをメモリから出すことができる。
【００６９】
第１のデータページで書き込み等の操作が進行しているときには、（例えば、ＥＣＣ操作のため）同じブロックでワード線が異なる別のページからデータをトグルアウトできることに留意するべきである。この操作段階パイプラインにより、データ転送に要する時間は第１のデータページに対する操作の背後に潜在化される。より一般的には、あるひとつの操作の一部分を、通常ならばこれよりも長い、別の操作の段階の合間に差しはさむことができる。他の例として、消去操作の段階の合間に、例えば消去パルスの前あるいは消去の後半部分にあたるソフトプログラミング段階の前に、検知操作を挿し込むこともできる。
【００７０】
操作に要する相対的時間を説明するため、前述したシステムの例示的な時間値のセットを次のとおりとする。
データ書き込み：〜７００μｓ（下位ページ〜６００μｓ、上位ページ８００μｓ）
バイナリデータ書き込み：〜２００μｓ
消去：〜２，５００μｓ
読み出し：〜２０−４０μｓ
読み出しとトグルアウトデータ：２ＫＢデータ、〜８０μｓ；４ＫＢ〜１６０μｓ；８ＫＢ〜３２０μｓ
これ以降、タイミング図との関係で相対的時間を説明する際には、これらの値を基準として使用し得る。主要な態様において、読み出し／書き込みスタックの共用ラッチが使用可能であれば、複数の段階をともなう長い操作の合間に短い操作を差しはさむ。例えば、プログラミング操作や消去操作の中に読み出しを挿し込んだり、消去中にバイナリプログラミングを挿し込んだりすることができる。主要な例示的な実施形態において、同じ読み出し／書き込みスタックを共用するページのプログラミング操作のときに別のページのデータをトグルイン／アウトする。例えば、データ書き込みのベリファイ段階に、トグルアウトされ修正されるデータの読み出しを挿し込む。
【００７１】
空きデータラッチを利用できる機会はいくつかある。一般的に、１セル当たりｎビットを蓄積するメモリの場合は各ビット線につきｎ個のデータラッチが必要となるが、これらのラッチの全てが常に必要となるわけではない。例えば、上位ページ／下位ページ形式でデータを蓄積する１セル当たり２ビットのメモリで、下位ページをプログラムしているときには２つのデータラッチが必要となる。より一般的には、複数のページを蓄積するメモリで全てのラッチが必要となるのは最上位ページをプログラムするときだけである。ほかのラッチはキャッシュ操作に利用できる。また、最上位ページの書き込み中でも、書き込み操作のベリファイ段階から種々の状態が排除されるにつれてラッチは解放される。具体的に、ベリファイすべき状態が最上位状態だけになると、ベリファイに必要なラッチは１つだけになり、ほかのラッチはキャッシュ操作に使うことができる。
【００７２】
以降の説明は、１セル当たり２ビットを蓄積し、各ビット線につき２つのデータラッチを具備し、さらにクイックパス書き込み用に１つのラッチを具備する４状態メモリに基づくものである。このメモリは、本願と同時に出願され、参照により援用されている「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願（特許文献２６）で説明されている。下位ページ書き込み操作、消去操作、消去後ソフトプログラミング操作は、基本的にはバイナリ操作であり、データラッチの一方は空いていて、データをキャッシュするのに使うことができる。同様に、上位ページかフルシーケンスの書き込みを行う場合に、最上位レベル以外はすべてベリファイ済みでベリファイすべき状態がただひとつになると、メモリはラッチを解放でき、解放されたラッチはデータのキャッシュに使うことができる。例えばコピー操作等で１ページをプログラムする場合に、例えば同じビット線のセット上の別のワード線で同じデータラッチのセットを共用する別のページの読み出しは、書き込みのベリファイ段階に差しはさむことができる。その後、書き込み対象のページにアドレスを切り替えることにより、書き込みプロセスは中断したところから再開でき、やり直しの必要はない。書き込みが継続しているときには、割り込ませた読み出しのときにキャッシュしたデータをトグルアウト、チェック、または修正し、元に戻すことができ、書き込み操作が完了した時点でライトバックできる。この種のキャッシュ操作では、最初のページのプログラミングの背後に２番目のページのデータのトグルアウトと修正を潜在化させることができる。
【００７３】
第１の例として、２ビットメモリのキャッシュプログラミング操作をシングルページ（下位ページ／上位ページ形式）プログラムモードで行う。図１０を簡素化した図１３には、２ビット実施形態の説明にかかわるいくつかの特定の素子が見られるが、説明を簡潔にするため、その他の素子は省いてある。これはデータＩ／Ｏ線２３１へ接続されたデータラッチＤＬ０  ４３４−０と、線４２３により共通プロセッサ５００へ接続されたデータラッチＤＬ１  ４３４−１と、線４３５により他のデータラッチとともに接続されたデータラッチＤＬ２  ４３４−２と、線４２２により共通プロセッサ５００へ接続されたセンスアンプデータラッチＤＬＳ  ２１４とを含む。図１３の種々の素子には、下位ページをプログラムするときの処理に従って標識が付されている。ラッチＤＬ２  ４３４−２は、本願と同時に出願された「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願（特許文献２６）に記載されたクイックパス書き込みモードの下位ベリファイ（ＶＬ）に使われるものである。このレジスタの使用と、これを使用する場合のクイックパス書き込みは任意であるが、この例示的な実施形態ではこのレジスタを使用する。
【００７４】
下位ページのプログラミングは次のステップを含み得る。
（１）このプロセスは、データラッチＤＬ０  ４３４−０をデフォルト値「１」にリセットすることから始まる。この変換は部分ページプログラミングを簡素化するためのものであり、選択された行の中でプログラミングの対象とならないセルはプログラム禁止になる。
（２）Ｉ／Ｏ線２３１に沿ってＤＬ０  ４３４−０にプログラムデータが供給される。
（３）ＤＬ１  ４３４−１とＤＬ２  ４３４−２（このラッチを使用し、クイックパス書き込みを実施する場合）へプログラムデータが転送される。
（４）ＤＬ１  ４３４−１へプログラムデータが転送されたら、データラッチＤＬ０
４３４−０を「１」にリセットでき、プログラミング中はＩ／Ｏ線２３１に沿って次のデータページをＤＬ０  ４３４−０に読み込むことができ、第１のページが書き込まれているときには第２のページをキャッシュできる。
（５）ＤＬ１  ４３４−１に第１のページが読み込まれたら、プログラミングを開始できる。ＤＬ１  ４３４−１のデータによりセルはロックアウトされ、それ以上プログラムできなくなる。本願と同時に出願された「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願（特許文献２６）で説明されているように、ＤＬ２  ４３４−２のデータは、クイックパス書き込みの第２段階への移行を決定づける下位ベリファイロックアウトに使われる。
（６）プログラミングが始まると、プログラミングパルスの後に下位ベリファイ結果をもとにＤＬ２  ４３４−２を更新し、上位ベリファイ結果をもとにＤＬ１  ４３４−１を更新する。（これは、下位ページプログラミングがＡ状態に至る「従来の」符号化に基づく説明である。本願と同時に出願された「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願（特許文献２６）と、２００５年３月１６日に出願された「Non-Volatile Memory and Method with Power-Saving Read and Program-Verify Operations 」という米国特許出願（特許文献２７）では、この符号化とその他の符号化が説明されている。ここでの説明は他の符号化にも容易く敷衍できる。）
（７）プログラミングが完了したか否かの判断にあたっては、セル行（またはしかるべき物理的プログラミング単位）のＤＬ１  ４３４−１レジスタだけをチェックする。
【００７５】
下位ページが書き込まれたら上位ページをプログラムできる。図１４にも図１３と同じ素子が見られるが、これは下位ページデータが読み込まれた状態で上位ページをプログラムする場合のラッチの働きを示している。（この説明も従来の符号化に基づくもので、上位ページのプログラミングはＢおよびＣ状態に至る。）上位ページのプログラミングは次のステップを含む。
（１）下位ページのプログラミングが終了したら、（未実行）キャッシュプログラミングコマンドを保持する状態マシンのコントローラからの信号により上位ページ（または次のページ）の書き込みが始まる。
（２）ＤＬ０  ４３４−０（下位ページ書き込みのステップ（３）でプログラムデータが読み込まれたところ）からＤＬ１  ４３４−１とＤＬ２  ４３４−２へプログラムデータが転送される。
（３）アレイから下位ページが読み出され、ＤＬ０  ４３４−０の中に置かれる。
（４）ベリファイハイおよびベリファイローロックアウトデータのためにＤＬ１  ４３４−１とＤＬ２  ４３４−２が再び使用される。ラッチＤＬ０  ４３４−０（下位ページデータを保持）はプログラム基準データとしてチェックされるが、ベリファイ結果によりこれが更新されることはない。
（５）Ｂ状態ベリファイの一部として、下位ベリファイＶＢＬでの検知の後にはＤＬ２  ４３４−２でデータが更新され、ＤＬ１  ４３４−１データは上位ベリファイＶＢＨ結果によって更新される。同様に、ＣベリファイにもＶＣＬ結果とＶＣＨ結果によりラッチＤＬ２  ４３４−２およびＤＬ１  ４３４−１を更新するための対応するコマンドがある。
（６）Ｂデータが完了したらＣ状態をベリファイするだけでよいので、下位ページデータ（基準としてＤＬ０  ４３４−０に保持されたもの）は必要ない。ＤＬ０  ４３４−０を「１」にリセットし、Ｉ／Ｏ線２３１から別のページのプログラムデータを読み込み、ラッチＤＬ０  ４３４−０にキャッシュできる。共通プロセッサ５００はＣ状態のみのベリファイを指示できる。
（７）Ｂ状態について上位ページのプログラミングが完了したか否かを判断するにあたっては、ラッチＤＬ１  ４３４−１とＤＬ０  ４３４−０の両方をチェックする。セルがＢ状態までプログラムされ、ベリファイするのがＣ状態だけになったら、ラッチＤＬ１
４３４−１のデータだけをチェックし、プログラムされていないビットの有無を確認すればよい。
【００７６】
このやり方のステップ６でラッチＤＬ０  ４３４−０が必要でなくなると、このラッチを使って次のプログラミング操作のためにデータをキャッシュできることに留意するべきである。加えて、クイックパス書き込みを使用する実施形態で、２番目の遅いプログラミング段階に入ったら、ラッチＤＬ２  ４３４−２もデータのキャッシュに使うことができる。しかし、実際にこれを使えるのはかなり短い時間に限られているため、これを実装した場合のオーバーヘッドに見合うほどの価値はない。
【００７７】
図１５は、直前の数段落で説明したシングルページモードによる数々のキャッシュプログラミングの態様を説明するのに役立つ。図１５は、メモリの内部で起こるイベント（下の「Ｔｒｕｅ  Ｂｕｓｙ」線）とメモリの外側から見たイベント（上の「Ｃａｃｈｅ  Ｂｕｓｙ」線）の相対的タイミングを示すものである。
【００７８】
時間ｔ0 には、選択されたワード線（ＷＬｎ）にプログラムする下位ページがメモリに読み込まれる。ここでは第１の下位ページデータが予めキャッシュされていないと仮定するが、それ以降のページについてはキャッシュが行われる。時間ｔ1 には下位ページの読み込みが完了し、メモリはこの書き込みに着手する。この時点ではバイナリ操作と同じであり、ベリファイの必要があるのは状態Ａだけであり（「ｐｖｆｙＡ」）、データラッチＤＬ０  ４３４−０は次のページのデータを受け付けることができる。これは時間ｔ2 にＷＬｎにプログラムされる上位ページであり、下位ページのプログラミング中にラッチＤＬ０  ４３４−０にキャッシュされる。時間ｔ3 には上位ページの読み込みが完了し、ｔ4 で下位ページのプログラミングが終わり次第直ちにこれをプログラムできる。このやり方では全てのデータ（下位および上位ページ）が物理的なプログラミング単位（ここではワード線ＷＬｎ）に書き込まれるが、後述するフルシーケンス実施形態と違って、メモリは上位ページデータの書き込みに先立ち時間ｔ3 から時間ｔ4 まで待たなければならない。
【００７９】
上位ページのプログラミングは時間ｔ4 で始まり、ここでは当初Ｂ状態だけをベリファイし（「ｐｖｆｙＢ」）、ｔ5 にはＣ状態が加わる（「ｐｖｆｙＢ／Ｃ」）。ｔ6 でＢ状態のベリファイが終わるとベリファイが必要なのはＣ状態だけとなり（「ｐｖｆｙＣ」）、ラッチＤＬ０  ４３４−０は解放される。これにより次のデータセットをキャッシュできるようになり、上位ページのプログラミングは終了する。
前述したように、図１５に示されたキャッシュプログラミングをともなうシングルページアルゴリズムの場合は、たとえ時間ｔ3 で上位ページデータが用意されても、メモリはこのデータの書き込みに着手する前に時間ｔ4 まで待つことになる。米国特許出願第１１／０１３，１２５号（特許文献２８）等に詳述されているフルシーケンスプログラム動作に転換すれば、上位ページが用意された時点で上位ページと下位ページのデータを同時にプログラムできる。
【００８０】
フルシーケンス（下位からフルへの転換）書き込みにおけるキャッシュプログラミングアルゴリズムも前述したのと同様に、下位ページのプログラミングから始まる。したがって、ステップ（１）〜（４）はシングルページプログラムモードにおける下位ページプロセスと同じになる。
（１）このプロセスは、データラッチＤＬ０  ４３４−０をデフォルト値「１」にリセットすることから始まる。この変換は部分ページプログラミングを簡素化するためのものであり、選択された行の中でプログラミングの対象とならないセルはプログラム禁止になる。
（２）Ｉ／Ｏ線２３１に沿ってＤＬ０  ４３４−０にプログラムデータが供給される。
（３）ＤＬ１  ４３４−１とＤＬ２  ４３４−２（このラッチを使用し、クイックパス書き込みを実施する場合）へプログラムデータが転送される。
（４）ＤＬ１  ４３４−１へプログラムデータが転送されたら、データラッチＤＬ０
４３４−０を「１」にリセットでき、プログラミング中はＩ／Ｏ線２３１に沿って次のデータページをＤＬ０  ４３４−０に読み込むことができ、第１のページが書き込まれているときには第２のページをキャッシュできる。
第２のページのデータが読み込まれた時点で、これが書き込み中の下位ページの上位に相当し、下位ページのプログラミングがまだ終わっていなければ、フルシーケンス書き込みへの転換を実施できる。ここでの説明はかかるアルゴリズムにおけるデータラッチの使用に注目するものであり、詳細は同一出願人による同時係属の米国特許第７，１２０，０５１号（特許文献２９）で詳述されている。
（５）上位ページデータがラッチＤＬ０  ４３４−０に読み込まれた後にはアドレスブロックで判断を下す。つまり、２つのページが同じワード線と同じブロックにあって、一方のページが下位ページであり、他方のページが上位ページであることをチェックする。そのとおりに下位ページプログラミングからフルシーケンスプログラミングへの転換が可能であれば、プログラム状態マシンがこの転換をトリガする。移行は未完了のベリファイが完了した後に行われる。
（６）プログラミングシーケンスが下位ページからフルシーケンスへ変化する場合は、通常ならばいくつかの操作パラメータが変更される。これは例示的な実施形態において次のものを含む。
（ｉ）下位ページデータがロックアウトされていなければ、パルスベリファイサイクル数の最大プログラムループが下位ページアルゴリズムの最大プログラムループからフルシーケンスの最大プログラムループに変更される。しかし、完了プログラムループ数は転換によりリセットされない。
（ｉｉ）図１６に見られるように、プログラミング波形は下位ページプログラミングプロセスで使われる値ＶＰＧＭ＿Ｌで始まる。プログラミング波形が進展し、上位ページプロセスで使う初期値ＶＰＧＭ＿Ｕを超えると、フルシーケンスへの転換にあたって階段はＶＰＧＭ＿Ｕまで戻り、そこから上昇を続ける。
（ｉｉｉ）プログラムパルスの最大値とステップサイズを決定するパラメータは変更されない。
（７）マルチレベル符号化で適切なデータのプログラミングを保証するため、メモリセルの現在状態のフルシーケンス読み出しを行わねばならない。こうすれば、フルシーケンスが始まるときに、下位ページのプログラミングでロックアウトされていて上位ページのデータを考慮に入れるためにさらなるプログラミングを必要とする状態はプログラム禁止にならない。
（８）クイックパス書き込みが行われる場合は、上位ページのプログラムデータを反映させるため、Ａ状態のみの下位ベリファイに基づくラッチＤＬ２  ４３４−２のデータも更新される。
（９）マルチレベル、フルシーケンスのプログラムアルゴリズムによるプログラミングが再開する。図１６に見られるように、下位ページプロセスのプログラミング波形が上位ページの初期レベルを超えると、波形は転換時にこのレベルに戻される。
【００８１】
図１７は、下位ページからフルシーケンスへ転換する書き込みプロセスにかかわる相対的時間を概略的に示す。時間ｔ3 までは図１５のプロセスで前述したとおりである。時間ｔ3 で上位ページのデータは読み込み済みで、フルシーケンスアルゴリズムへ移行し、Ａ状態のベリファイプロセスにＢ状態が加わる。Ａ状態が全てロックアウトされると、ベリファイプロセスは時間ｔ4 でＢ状態とＣ状態のチェックに切り替わる。ｔ5 でＢ状態がベリファイ済みになるとチェックの必要があるのはＣ状態だけとなり、レジスタを解放して次のプログラムすべきデータを読み込むことができる。例えば、Ｃａｃｈｅ  Ｂｕｓｙ線に見られるように、下位ページを次のワード線（ＷＬn+1 ）に読み込むことができる。次のデータセットは時間ｔ6 でキャッシュ済みとなり、ｔ7 で前のデータセットのＣデータのプログラミングが終わると、次のデータセットのプログラミングが始まる。また、ワード線ＷＬn+1 上で（ここでは）下位ページがプログラムされているときには、空いているラッチＤＬ０  ４３４−０に次のデータ（対応する上位ページデータ等）を読み込むことができる。
【００８２】
フルシーケンス書き込みのときには、下位ページと上位ページの状態を別々に伝えるステータス報告が実施される。プログラミングシーケンスの終わりに未完了ビットがある場合は、物理ページのスキャンを実行できる。第１のスキャンではラッチＤＬ０  ４３４−０で未完了上位ページデータをチェックでき、第２のスキャンではＤＬ１  ４３４−１で未完了下位ページデータをチェックできる。Ｂ状態のベリファイによってＤＬ０  ４３４−０とＤＬ１  ４３４−１のデータは両方とも変化するから、ビットのしきい値がＡベリファイレベルより高ければ、Ａ状態のベリファイでＤＬ１  ４３４−１データ「０」は「１」に変更される。この事後ベリファイはプログラムが不十分なＢレベルがＡレベルで合格するか否かをチェックするものであり、Ａレベルで合格するならば、エラーは上位ページのみで下位ページにはなく、Ａレベルで合格しないならば、下位ページと上位ページの両方にエラーがある。
キャッシュプログラミングアルゴリズムを使用する場合は、ＡおよびＢデータがプログラムされた後に、プログラミングを完了するためにラッチＤＬ１  ４３４−１へＣ状態が転送される。この場合、下位ページは既にプログラムを通過していて不良ビットはないから、下位ページについてラッチをスキャンする必要はない。
【００８３】
本発明の別の例示的な実施形態は、あるひとつの場所から別の場所へデータセットを再配置するページコピー操作に関係する。本願明細書において参照により援用されている米国公開特許出願第２００５−０２５７１２０号（特許文献３０）、第２００６−０１３６６８７号（特許文献３１）、第２００６−００３１５９３号（特許文献３２）、ならびに米国特許第６，２６６，２７３号（特許文献３３）には、データ再配置操作の種々態様が記載されている。あるひとつの場所から別の場所へコピーされるデータは多くの場合、チェックのため（エラーチェック等）、更新のため（ヘッダ更新等）、あるいはチェックと更新のため（検出されたエラーの訂正等）にトグルアウトされる。かかる転送によってガーベッジコレクション操作の日付も整理される。本発明の主要な態様において、空きレジスタへのデータ読み込みを書き込み操作のベリファイ段階に挿し込み、書き込み操作の継続中にこのキャッシュデータをメモリ装置の外に出すことにより、データをトグルアウトする時間を書き込み操作の背後に潜在化させることができる。
【００８４】
これよりキャッシュページコピー操作の２つの例示的な実施形態を紹介する。いずれの場合でも、クイックパス書き込みを使用する実施例を説明する。図１８は、プロセスの進行にともなう例示的なラッチ構成の処理を示す。
【００８５】
下位ページに書き込みを行う最初のキャッシュページコピーは次のステップを含む。ここで読み出しアドレスには標識Ｍ、Ｍ＋１・・・が付き、書き込みアドレスには標識Ｎ、Ｎ＋１・・・が付く。
（１）コピーするページ（「ページＭ」）がラッチＤＬ１  ４３４−１に読み込まれる。これは上位ページか下位ページのデータであり得る。
（２）次にページＭがＤＬ０  ４３４−０へ移される。
（３）次にＤＬ０  ４３４−０のデータがトグルアウトされ、修正され、ラッチに戻される。
（４）ここでプログラミングシーケンスを開始できる。下位ページＮに書き込むデータがＤＬ１  ４３４−１とＤＬ２  ４３４−２に移されたら、ラッチＤＬ０  ４３４−０はデータをキャッシュできる状態になる。この下位ページはプログラムされる。この実施形態の場合、プログラム状態マシンはここで停止する。
（５）コピーする次のページがＤＬ０  ４３４−０に読み込まれる。ここでプログラミングを再開できる。ステップ（４）の終わりに停止した状態マシンは、プログラミングシーケンスを最初から再開する。
（６）プログラミングは下位ページが完了するまで続く。
下位ページに対する書き込みか上位ページに対する書き込みかは、コピー先ページアドレスによって決まる。プログラムアドレスが上位ページアドレスなら、プログラミングシーケンスはプログラミングが完了するまで停止せず、ステップ（５）の読み出しは書き込みが完了した後に行われる。
【００８６】
第２のキャッシュページコピー法では、プログラム／ベリファイプロセスを中断して読み出し操作を挿し込み、書き込み操作は中断したところから再開できる。この交互検知操作の間に読み出されたデータは、再開した書き込み操作の継続中にトグルアウトできる。また、この第２のプロセスでベリファイの対象がＣ状態だけとなり、各ビット線で１つのラッチが解放されると、上位ページかフルシーケンスの書き込みプロセスでページコピーメカニズムを使用できる。第２のキャッシュページコピー操作の最初の３ステップは第１のものと同じだが、その後は異なる。これは以下のステップを含む。
（１）コピーするページ（「ページＭ」）がラッチＤＬ１  ４３４−１に読み込まれる。これは上位ページか下位ページであり得る。
（２）次にページＭのデータがＤＬ０  ４３４−０へ移される。（前と同様に、Ｎ等は書き込みアドレスを表し、Ｍ等は読み出しアドレスを表す。）
（３）次にＤＬ０  ４３４−０のデータがトグルアウトされ、修正され、ラッチに戻される。
（４）状態マシンプログラミングは読み出しコマンドが届くまで無限待機状態に入り、その後には別のページ、例えば次のページＭ＋１のラッチＤＬ０  ４３４−０への読み込みが始まる。
（５）ステップ（４）の読み込みが完了したら、ステップ（１〜３）のデータをページＮ（ここでは、下位ページ）にプログラムするためのワード線とブロックアドレスにアドレスが戻され、プログラミングが再開する。
（６）ページＭ＋１の読み込みが完了したらデータをトグルアウトし、修正し、元に戻すことができる。処理が完了し、２つのページが同一ＷＬ上の対応する上位および下位ページなら、フルシーケンス書き込み操作に転換できる。
（７）フルシーケンス書き込みでＡレベルとＢレベルが終了したら、前に説明した通常のキャッシュプログラミングと同様に、ＤＬ０  ４３４−０のデータがＤＬ１  ４３４−１へ移され、別のページ（例えば、Ｍ＋２）の読み出しコマンドを発行できる。シングルページからフルシーケンスへの転換がない場合は、下位ページの書き込みが完了し、上位ページが始まる。Ｂレベル状態が完了すると再びＤＬ０  ４３４−０からＤＬ１  ４３４−１へデータが移され、状態マシンはページＭ＋２の読み出しコマンドを待機する。
（８）読み出しコマンドが届くとアドレスは読み出しアドレスに切り替えられ、次のページ（ページＭ＋２）が読み出される。
（９）読み出しが完了したら、アドレスは書き込みが終了するまで以前の上位ページアドレス（プログラムアドレスＮ＋１）に戻される。
【００８７】
前述したように、例示的な実施形態では各メモリセルにプログラムされ得るデータ（ここでは２ビット）をラッチＤＬ０  ４３４−０およびＤＬ１  ４３４−１で保持するほか、クイックパス書き込み手法の下位ベリファイにラッチＤＬ２  ４３４−２を使用する。下位ベリファイに合格したらラッチＤＬ２  ４３４−２も解放され、データのキャッシュに使うことができるが、例示的な実施形態では使わない。
【００８８】
図１９Ａおよび図１９Ｂは第２のキャッシュページコピー法の相対的タイミングを示すものであり、図１９Ｂのアルゴリズムにはフルシーケンス書き込み転換があるが、図１９Ａのアルゴリズムにはそれがない。（図１９Ａおよび図１９Ｂはいずれも２つの部分から構成され、第１の上部分はｔ0 に一致する縦の破線Ａから始まってｔ5 に一致する縦の破線Ｂで終わり、第２の下部分は上部分の続きであって、ｔ5 に一致する縦の破線Ｂから始まる。いずれにせよ、時間ｔ5 のところに位置する線Ｂは上部分と下部分とで同じであって、２つの部分を２本の線で表示するための継ぎ目に過ぎない。）
【００８９】
図１９Ａのプロセスは第１のページ（ページＭ）の読み出しから始まり、この例において下位ページであり、予めデータはキャッシュされていないものと仮定し、シングルページモードで作動し、下位ページの書き込みが終わるのを待ってから上位ページの書き込みが始まる。プロセスは、時間ｔ0 にページＭの読み出しから始まり（ページＭ（Ｌ）検知）、この符号化でＡおよびＣレベルの読み出しによって検知される下位である。時間ｔ1 では読み出しが完了し、ページＭをトグルアウトしてチェックまたは修正できる。時間ｔ2 からＢレベルの読み出しによって次のページ（ここではＭ＋１、下位ページＭと同じ物理ページに対応する上位ページ）が検知され、時間ｔ3 でプロセスが終了する。このとき、第１のページ（ページＭからのもの）（下位）はメモリのページＮにプログラムでき、Ｍ＋１から読み出されたデータはラッチに保持され、外に出して修正／チェックできる。これらのプロセスはいずれも同じ時間、ここではｔ3 に始めることができる。前述した例示的な時間値を使用すると、ページＭ＋１のデータは時間ｔ4 までにトグルアウトされ、修正されるが、フルシーケンス転換を実施しない実施形態の場合、メモリは時間ｔ5 にページＮが終了するのを待ってから、ページＮ＋１への第２の読み出しページデータ（ページＭ＋１からのもの）の書き込みを開始する。
【００９０】
ページＮ＋１は上位ページであり、この書き込みは当初Ｂレベルのベリファイで始まるが、ｔ6 にはＣレベルが加わる。目標状態Ｂになった蓄積素子が時間ｔ7 で全てロックアウトされると（あるいは最大カウントに達すると）、Ｂ状態のベリファイはなくなる。前述したように、本発明のいくつかの主要な態様によるとこのときデータラッチは解放され、進行中の書き込み操作は中断し、読み出し操作（中断したプログラム／ベリファイ操作とは異なるアドレスでの読み出し操作）が割り込み、その後書き込みは中断したところから再開し、再開した書き込み操作が進行しているときには割り込み書き込み操作の検知データをトグルアウトできる。
【００９１】
時間ｔ7 には割り込み書き込み操作を実行する。ここでのものは下位ページＭ＋２である。この検知は時間ｔ8 に終了し、ページＮ＋１の書き込みは再開し、これと同時にページＭ＋２のデータがトグルアウトされ、修正される。この例ではページＮ＋１のプログラミングが時間ｔ9 に終了してから時間ｔ10にページＭ＋２が終了する。時間ｔ10にはページＭ＋２からのデータの書き込みを始めることもできるが、この実施形態では代わりにページＭ＋３の読み出しを先に実行する。こうすることで、このページデータをトグルアウトし、時間ｔ11に始まるページＮ＋２へのページＭ＋２データの書き込みの背後に修正を潜在化させることができる。そこからプロセスは図の以前の部分のように継続する。しかし、ページ番号はずれ、時間ｔ11は時間ｔ3 に相当し、時間ｔ12は時間ｔ4 に相当する。最後にコピープロセスは停止する。
【００９２】
図１９Ｂに示すプロセスもページＭを下位ページとして読み出すことから始まり、データは予めキャッシュされていないものと仮定する。図１９Ｂは、時間ｔ4 にフルシーケンス書き込みに転換する点が図１９Ａと異なる。これにより、プロセスはざっと図１９Ａの時間（ｔ5 〜ｔ4 ）だけ速くなる。時間ｔ4 （＝図１９Ａのｔ5 ）には、前述したフルシーケンス転換にかかわる様々な変更が実施される。時間ｔ7 およびｔ12間に見られる本発明の態様等、その他の点は図１９Ａに類似する。
【００９３】
本願明細書において参照により援用されている米国公開特許出願第２００４−０１０９３６２号（特許文献３４）に記載されているように、ページコピープロセスと、ここで説明するデータ書き込みをともなうその他の手法で、ある特定の時間にベリファイする状態は適切に選ぶことができる。例えばフルシーケンス書き込みの書き込みプロセスはＡレベルのみのベリファイから始めることができる。Ａベリファイの後には、ビットをチェックし合格ビットの有無を確認する。合格ビットがあるならば、Ｂレベルをベリファイ段階に加えることができる。Ａレベルのベリファイは、これを目標値とする全蓄積単位のベリファイ後に外される（または設定可能なパラメータに基づく最大カウントを除く）。同様に、Ｂレベルのベリファイ後にはＣレベルのベリファイを加えることができ、Ｂレベルのベリファイは、これを目標値とする全蓄積単位のベリファイ後に外される（または設定可能なパラメータに基づく最大カウントを除く）。
プログラミング操作とこれにともなうバックグラウンドデータキャッシングを、好適な多状態符号化との関係で説明する。
【００９４】
４状態メモリのための好適な例示的な「ＬＭ」符号化
図２０は、２ビット論理符号（「ＬＭ」符号）で符号化される４状態メモリのプログラミングと読み出しを示す。この符号は耐障害性を提供し、ユーピン効果による隣接セル結合を緩和する。図２０は、ＬＭ符号を使用して各メモリセルに２ビットのデータを蓄積する場合の４状態メモリアレイのしきい値電圧分布を示す。ＬＭ符号化は、上位および下位ビットが状態「Ａ」および「Ｃ」とで逆になる点が従来のグレイコードと異なる。米国特許第６，６５７，８９１号（特許文献３５）に開示された「ＬＭ」符号は、電荷の大きな変化を要するプログラム操作を回避することによって隣接フローティングゲート間の電界効果結合を抑えるのに有利である。
【００９５】
この符号化では、下位および上位２ビットのプログラミングと読み出しを別々に行う。下位ビットをプログラムするときのセルのしきい値レベルは未プログラム領域にとどまるか、しきい値ウィンドウの「下位中間」領域まで進む。上位ビットをプログラムするときには、これら２領域のいずれかにあるしきい値レベルがさらにしきい値ウィンドウの４分の１以下である若干高いレベルまで進む。
【００９６】
データパターンの擬似・ユーザ主導形ランダム化
メモリＥＥＰＲＯＭまたはチップとランダム化手法の種々の実施形態は、ＮＡＮＤストリング抵抗の増加、耐久性と信頼性の低下、好ましくない結合等、反復データ蓄積パターンに起因する問題を最小限に抑えることを目指す。本発明の擬似ランダム化手法は実用的で、データ処理能力の点で実装コストは高くつかない。
【００９７】
本発明は、フラッシュメモリチップに蓄積されるデータで擬似ランダム化と真にユーザ本位のランダム化を実装する様々な実施形態および方法を含む。これらの実施形態には、フラッシュＥＥＰＲＯＭに単純で僅かな回路修正を施すだけでよいという利点がある。ランダム化の手法と回路は計算集約的でなく、実装にともなう性能上のペナルティは、たとえあったとしてごく僅かですむため、注目に価する。本発明の解決策は、ランダム化を随時容易く有効または無効にできるという点で柔軟性にも優れている。また、一部の実施形態で使用する擬似ランダム化パターンは変化に富み、随時簡単に変更できる。
【００９８】
図２１は、ランダム化プロセスに関係するＥＥＰＲＯＭまたはメモリチップ６００の主要コンポーネントを示す。チップ６００は、メモリアレイ６０２と、周辺回路内のレジスタ６１０と、マルチプレクサ６１４とを備える。チップ６００の他のコンポーネントについては別の図を参照しながら説明する。レジスタ６１０は多数のビットを保持でき、多数のレジスタを備えることがある。実施形態によってはこれがシフトレジスタとして機能する。メモリアレイ６０２は、隠しエリア６０４と、ユーザデータエリア６０６とを備える。隠しエリアはファームウェアを蓄積するほか、メモリ動作制御符号等のオーバーヘッドデータを蓄積する。前に述べたように、ＮＡＮＤアーキテクチャではデータがブロックに整理され、それぞれのブロックは多数のデータページを備え得る。実施形態によってはレジスタ６１０もマルチプレクサ６１４も存在しない。
【００９９】
本発明の各種の実施形態は、プログラムディスターブやユーザリードディスターブの原因となる特定データパターンの長期・反復蓄積を軽減もしくは解消する。それには、擬似ランダム機構かユーザトリガ形ランダム化によってデータの符号化を変更する。ユーザ活動のタイミングは完全に予測不能だから、この活動をトリガとして利用すれば真にランダムな符号化方式のシーケンスになる。これらの実施形態はまた、ＮＡＮＤストリング抵抗効果を軽減し、メモリの耐久性と信頼性を向上させ、フローティングゲート間結合の問題を緩和する。
【０１００】
これらの実施形態はフラッシュＥＥＰＲＯＭ回路に対するごく僅かな修正でデータ蓄積のランダム性を大幅に向上させ、ＥＥＰＲＯＭの性能を高める。データのランダム化はアレイの中で容易く有効または無効にできる。しかも、絶えず変化する擬似ランダム化を担うシーケンスがシステムに柔軟性を与える。
【０１０１】
一実施形態において、０または１の符号または一連のビットを、アレイ６０２の隠しエリア６０４に蓄積する。隠しエリア６０４で符号を蓄積する部分は「ＲＯＭブロック」と呼ぶこともある。符号は２ビット以上を含んでよく、望ましくは１７ビット以上を含む。ビットが多いほどランダム化は向上する。チップ６００に電源が入るとレジスタ６１０に値が読み込まれる。レジスタでは、それぞれのビットが特定のページアドレスに割り当てられる。各ビットはページのページアドレスと比較され、その比較に基づきページデータの符号化は反転され、さもなくば同じページ状態を保つ（パスする）。例えば、ビット値０はデータの符号化方式が同じ状態に保つことを意味し、レジスタの値１はページ内のデータの符号化が反転することを意味する。符号のビット数がブロック内のページ数に満たない場合は、１つ以上のページからなる複数のグループに符号を適用できる。換言すると、全てのページを比較するまでは符号を順次繰り返し使用できる。サイクルごとに符号を変更することもできる。あるいはマルチプレクサ６１４により符号を多重化することもでき、この場合は、ユーザデータエリア６０６に蓄積された複数のデータページの符号化が１符号の１ビットによって決まる。符号の各ビットは、ユーザデータの一部に用いる符号化の極性を変更することから、極性ビットと呼ぶことができる。これは図２２Ａに描かれている。この場合の符号化はページアドレスに基づき、ページ０，Ｎの極性は１であり、ページ１、ｎ＋１の極性は０であり、ページ２、ｎ＋２の極性は１であることが分かる。したがって、符号化がページアドレスに基づく実施形態では極性ビットをページとともに蓄積する必要はないが、冗長性の目的で蓄積してもよい。
【０１０２】
図２２Ｂの複製にあたる下の表１は、ユーザデータ部分に適用されるレジスタ６１０の符号極性ビットを示す。どのユーザデータ部分でも特定の極性ビットに比較し、対応付けることができるが、説明する好適な実施形態ではページを基本単位とする。
【表１】
0005537590.tif 000002
【０１０３】
この表に見られるように、ビットの当初符号化（データ）が同じ状態を保つか変化するかは符号の各（極性）ビットによって決まる。例えば、レジスタ位置１を見ると、極性符号の値が１になっている。したがって、１がデータの反転を意味する実施形態の場合には、０として蓄積されたユーザデータの当初ビットが値１に反転されることになる。この表は、２ビットを使って状態を指定する多状態セルを例示するものである。状態を示す図２０から分かるように、状態は上位ビットと下位ビットによって指定される。図２０に見られるタイプの２ビットまたは４状態メモリセルで、（１：１）は消去（「ＥＲ」）または未プログラム（「Ｕ」）状態を指定し、（０：１）は状態Ａを指定し、（０：０）は状態Ｂを指定し、（１：０）は状態Ｃを指定する。上位ビットと下位ビットは単一のメモリセルに物理的に位置することがある。別のデータグループには同じ符号か異なる符号を適用できる。この場合はビット１７に対応するデータグループと、次の符号のビット１に対応するデータによって状態が決まる。それぞれの極性レジスタによって該当するページ上の全データの極性が制御される。下位ビットと上位ビットは、好ましくは同じ物理ワード線上に位置する。表１の例は、多数のワード線にわたってシンプルなパターンをランダムパターンに変換する極性ビットの働きを例示するものである。ランダム化は同じＮＡＮＤチェーン構造に位置するデータで行われる。図２２Ｃの例はこのコンセプトを例示するものである。
【０１０４】
図２２Ｃには、ＮＡＮＤストリングまたはチェーンの各セルに下位ビットと上位ビットが描かれている。図に示されたＮＡＮＤストリングは単なる例であって、当然ながらストリングのセルはこれよりも多いこともあれば少ないこともあり、図に示されたものとは異なる構造でも本発明に使用できる。例えば、３ビット、４ビット、４ビット以上を蓄積するセルを使うこともできる。また、ビット反転のコンセプトを例示するためにビットレベルの適用が図に示されているが、特に多状態メモリの場合には、１ページ以上のデータに極性ビットを適用するのが好ましいことを考慮するべきである。図２２Ｃではユーザデータの各ビットに極性ビットが適用される。極性ビットによって反転またはパスするユーザデータは保存データと標示されている。保存データとは、ランダム化操作の結果としてメモリアレイに書き込まれ、蓄積されるデータである。見て分かるように、図の右側に表示された状態はセルの上位ビットと下位ビットによって決まる。図２２Ｃで使われている用語「保存データ」は、表１と図２２Ｂで「適用後ユーザデータ（ＵＤ）符号化」と呼ばれているものに相当する。
【０１０５】
図２３Ａに示す別の実施形態では、図２１に見られるレジスタがフィードバック機能を備えるシフトレジスタとなる。かかる実施形態において、レジスタ６１０が擬似ランダムジェネレータとして構成される。一連の擬似乱数を生成するため、その内容は周期的にフィードバックされる。符号の全ビットを一度に使用する実施形態とは対照的に、この場合は一度に１ビットを使用する。ユーザによってコマンドが発行されると、シフトレジスタは次のビットへシフトする。着信ユーザページで使用される極性ビットは最後のレジスタ出力からのものである。これは好ましくはコマンドの立ち上がりで行われる。トリガコマンドは、プログラムコマンド、キャッシュプログラムコマンド、読み出しコマンド、消去コマンド、その他のユーザ発行コマンドであってよい。図２３Ｂにはプログラムコマンド信号の例が見られる。コマンドに対応するクロック信号が図に示され、コマンドのインスタンス化はユーザリクエストによってトリガされ、そのタイミングとタイプは予測不能であって、基本的にランダムである。図２３Ａには、ユーザコマンドに対応するクロック信号が極性ビットを決定する入力として図に示されている。図に示されたその他の入力はユーザデータである。既に述べたように、データの符号化は極性ビットの適用によって反転するか現状をとどめる。
【０１０６】
図２３Ｃは、データ反転用制御回路の一例を示す。インバータが１つのデータ経路では符号化は反転し、２つのインバータが直列する経路ではデータ符号化方式は変わらない。この場合、データグループに対応する極性ビットはそのデータグループとともに蓄積される。例えば、図２３Ｄに見られるデータページ６３０では、ユーザエリア６３６にあるデータの極性ビット６３２がページ６３０の隠しエリア６３４にプログラムされる。ページ６３０を読み出す場合には極性ビット６３２が取り出され、出力データを制御するためにラッチされ、符号化方式が反転されている場合には図２３Ｅに見られる例示的な回路により元に戻される。こうしてページの極性は当初の符号化に戻される。
【０１０７】
シフトレジスタで使用する符号のパターンは変えることができ、種々の用途に応じて修正できる。全てのビットが０に設定されるとランダム化は無効になる（０が無変更を意味する場合）。レジスタにおけるビットのパターンは擬似ランダムだが、ユーザの挙動は予測不能であるため、極性も予測不能でランダムである。例えば、ユーザ挙動には次の２つがある。（１）ユーザはいくつかのページをプログラムし、さらにいくつかのページを読み出すかまたはプログラムするため、あるいはいくつかのブロックを消去するため、別のアドレスへジャンプし、次に最後のプログラムが行われたブロックまで戻り、ページのプログラミングを継続する。（２）ユーザは全てのページを順次プログラムし、別のアドレスにジャンプしない。（１）の場合では各ユーザコマンドにつき新たな極性ビットをトリガでき、２のケースの順次プログラミングでは１つの極性ビットを使用しこれに依拠する。ユーザが蓄積を望む当初のデータが両方の場合で同じであっても、メモリに最終的にプログラムされるデータは、２つの場合において個々のページや複数のページで少なくとも部分的には異なる可能性がある。ＥＥＰＲＯＭは、通常ならばコントローラチップによって制御され、「ユーザ」による行為の一部はコントローラチップの行為であることに留意するべきである。
【０１０８】
別の実施形態において、極性ビットもまた、既に述べたキャッシュプログラム操作等のユーザコマンドの結果としてランダムに生成される。この実施形態では同期しない２つの入力を使用する。最初のものはユーザコマンドのタイミングであって、これは前述したように予測不能である。２番目のものは有限状態マシンクロックである。メモリシステムによっては特定の時間（例えば、キャッシュ操作中等）に限り有限状態マシンクロックがアクティブになることもあれば、他のシステムでは常にアクティブになることもある。この実施形態のこの手法は、メモリシステムの有限状態マシンクロックがアクティブになっているときに使える。
【０１０９】
有限状態マシン（「ＦＳＭ」）クロックのレベルまたは状態は、ユーザコマンドクロック信号の立ち上がりで参照する。図２４Ａに見られるように、状態はハイまたはローであり得る。ロー状態は０の極性ビットに対応し得る（しかし、反対の対応も可能）。時間ｔ＝０においてＦＳＭはローであるために極性ビットは０になり、前述したようにデータ符号化は変化しない。時間ｔ＝１においてＦＳＭはハイになり、極性ビットは１になり、時間ｔ＝３にはＦＳＭが再びロー状態になる。実施形態によっては、実行コマンドが発行され検知されると直ちに極性ビット６３２が隠しエリア６３４に読み込まれる。実施形態によっては、システムの別のメモリに極性ビットを一時的に格納する。図２４Ｂは、前述したように、極性ビットを決定する例示的な回路を示すものである。ここでもインバータは、好ましくは立ち上がりでトリガされる。
【０１１０】
図２５は、図７Ａおよび図９のオンチップ制御回路をより詳細に示すものである。これは、状態マシン３１２とアドレスデコーダまたはジェネレータ３１４のほかにデータスクランブラ３１８を含む。好適な実施形態では、図２１および図２３Ａのレジスタ６１０とマルチプレクサ６１４を含む。別の好適な実施形態では、図２３Ｃのデータ反転回路と図２３Ｅのデータ復帰回路も含む。
図２１〜図２５とこれらの図に対応する本願明細書での説明のように、共通のワード線によってアクセスされる各データページのプログラミングまたは読み出しは並行して行われる。ページ単位のランダム化にあたっては、ビットの極性を反転させるページを擬似ランダム的に選択する。
その全体が本願明細書において参照により援用されている２００６年９月８日に出願されたYan Liらによる「Methods in a Pseudo Random and Command Driven Bit Compensation for the Cycling Effects in Flash Memory」という米国特許出願第１１／５３０，３９２号（特許文献３６）には、ページ単位のオンチップデータランダム化が開示されている。
【０１１１】
ページ内データオンチップ擬似ランダム化
ページ内データスクランブリングも望ましい。これは、プログラミング中に問題となる規則性の高いデータパターンを回避したり、ページデータを並行して検知する際のソース負荷誤差を制御したりするうえで有利である。
ユーザかコントローラによって反復するデータパターンが特定のページに蓄積されると、データが一定のパターンに並ぶことがあり、一部のＮＡＮＤチェーンのプログラミングでブーストモードに悪影響がおよぶ。プログラミングのときに複数のＮＡＮＤチェーン（図１Ｄおよび図３参照）に共通のワード線が選択される場合、プログラミングの対象とはならないチェーンはプログラム禁止にする。プログラム禁止にするにはチャネル領域をブーストし、選択されたワード線に印加される有効プログラミング電圧を減らす。例えば、ＮＡＮＤタイプのメモリでは通常、ソース側からドレイン側にかけてＮＡＮＤチェーンがプログラムされる。消去済み状態の多数のメモリセルがソース側にあると、プログラム禁止のときにブーストされるドレイン側のチャネルから消去済みセルによって形成される高伝導性チャネルを通じてソースへ電荷が漏れ、効率が悪くなる。効果的でないチャネルブーストとプログラム禁止によってプログラムディスターブが起こり、結果に誤りが生じるおそれがある。その全体が本願明細書において参照により援用されている米国公開特許出願第２００６−０１９８１９５号（特許文献３７）および２００６年１２月２９日に出願されたFarookh Moogatらによる「Method of NAND Flash Memory Cell Array with Adaptive Memory State Partitioning」というおよび米国特許出願第１１／６１８，４８２号（特許文献３８）には、ブースト効率の問題が記載されている。
本発明の一態様によると、ページ内データのランダム化により、複数のページでデータが並ぶ場合でも、プログラミング中に問題となるデータパターンは回避される。
【０１１２】
ページ開始位置シフトによるスクランブリング
好適な実施形態において、ページ上でデータをスクランブルするシンプルな方法により、データはページごとに独立しているかまたは異なる開始アドレスに書き込まれる。メモリセルの各ページには、ページごとに異なる開始位置に対応するデータページが書き込まれる。ページの終わりまでデータで埋め尽くされると、ページの最初のアドレスからラップアラウンドし、開始位置の手前まで書き込みを継続する。
【０１１３】
ページごとに異なる開始位置から書き込む好適な実施形態に従い、メモリページ上でデータをスクランブリングする方法を図２６に示す。
ステップ７００：集積回路メモリチップを提供する。このメモリチップは、ページ単位でアクセス可能な不揮発性メモリセルアレイを有し、各ページは１グループのメモリセルからなり、１グループの各メモリセルはアレイの列内にあり、かつ共通ワード線によりアクセス可能な行沿いに並ぶ。
ステップ７１０：プログラムされる各ページに対応する開始列位置からなる一連の開始列位置をオンチップで生成する。
ステップ７２０：各ページにプログラムされるデータを、対応する開始列位置から始めてページが埋め尽くされるまでラップアラウンドする。
ステップ７３０：配列されたデータを各ページに並行してプログラムする。
【０１１４】
データの書き込みにあたってそれぞれ異なる開始位置を持つページの一例を、図２７の表に示す。例えば、ページ０には列０から始まってバイト０が読み込まれる。ページ１には列１から始まってバイト０が読み込まれる。データの読み込みは列ｎ−１まで続き、ラップアラウンドして列０に戻る。この例では、ページからページにかけてデータの反復パターンをずらすためのシフトがページごとに指定されている。通常、開始列アドレスはページ番号の関数として与えられる。物理列の終わりに達すると、データは物理列の先頭までラップアラウンドする。例えば、Ｓｔａｒｔｉｎｇ＿Ｃｏｌｕｍｎ＿Ａｄｄｒｅｓｓ（Ｐａｇｅ＿Ｎｕｍｂｅｒ）＝Ｐａｇｅ＿Ｎｕｍｂｅｒ（ＭＯＤ（ｎ−１））＋ｋで、ｋは所定数、（ｎ−１）は並行してプログラムされる合計メモリセル数である。例えば、ｋ＝０ならば、各ページは前のページから１列ずつシフトされる。
【０１１５】
好適な実施形態では、図９のＩ／Ｏ回路４４０を制御することによって所与のページに対する開始列位置シフトを実施する。データ読み込み操作では通常、アドレスデコーダ３１４がＩ／Ｏ回路へ物理ページの開始アドレスを発行する。開始アドレスに従いデータはクロック制御により列ごとにＩ／Ｏ回路に入力される。ラップアラウンドする場合は、物理列の最後に達した時点で第２の開始アドレスが発行される。
【０１１６】
図２３Ｄでは、システム専用のページ部分に各ページの開始列アドレスを蓄積できる。例えば、ページ６３０の開始列アドレスはメモリアレイの一部６３４に蓄積される。
別の好適な実施形態において、図２３Ａに見られる擬似ランダムジェネレータ等によって、一連の開始物理列アドレスが、各ページにつき１つずつ、提供される。
各ページの開始位置シフトにより、ＮＡＮＤチェーンの中で望ましくないデータパターンの並びを回避できるほか、プログラミング中のブースト問題の緩和に役立つ。
プログラミング中のチャネルブースト問題の緩和に加え、ページの中でデータをスクランブリングすれば、検知中のソース負荷誤差制御に役立つ。
ソース負荷誤差は、ソース線とチップの接地パッドとの間の有限抵抗によって生じる。メモリセルの検知にあたっては、有限抵抗にまたがるソース負荷によってソース線バイアスが生じることがある。多数のメモリセルを並行して検知すると、メモリセルの総電流のため、有限抵抗により接地ループで著しい電圧降下が生じることがある。その結果、ソース線バイアスが生じ、しきい値電圧検知による読み出し操作に誤りが生じる。
【０１１７】
図２８Ａは、接地にかけて有限抵抗を有するソース線の電流に起因するソース電圧誤差問題を示す。読み出し／書き込み回路３７０Ａおよび３７０Ｂは、１ページのメモリセルに同時に働きかける。読み出し／書き込み回路の中の各センスモジュール４８０は、ビット線３６を通じて対応するセルへ結合される。図８の読み出し／書き込みスタック４００によると、それぞれのセンスモジュール４８０は、ビット線のいずれか１本に接続されるセンスアンプ２１２と、１セットのデータラッチ４３０と、共通プロセッサ５００とＩ／Ｏ回路４４０の共有とを含む。並列操作のため、ページ内の各メモリセルにつき１個のセンスモジュールがある。
【０１１８】
例えば、センスモジュール４８０はメモリセル１０の伝導電流ｉ1 （ソース−ドレイン電流）を検知する。伝導電流はセンスモジュールからビット線３６を通じてメモリセル１０のドレインに流れ込み、さらにソース１４からソース線３４を通じて接地に至る。集積回路チップのメモリアレイでは、メモリチップの一部の外部接地パッド（例えば、Ｖｓｓパッド等）へ接続するソース線３４の複数分岐としてセルのソースがともに結ばれる。ソース線の抵抗を減らすためにメタルストラッピングを使用する場合でも、メモリセルのソース電極と接地パッドとの間には有限抵抗Ｒが残る。通常、接地ループ抵抗Ｒは約１０オームである。
【０１１９】
並行して検知するメモリページ全体で、ソース線３４を流れる合計電流は全伝導電流の和、すなわちｉTOT ＝ｉ1 ＋ｉ2 ＋・・・＋ｉp になる。通常、各メモリセルの伝導電流はその電荷蓄積素子にプログラムされる電荷の量に左右される。メモリセルのある一定のコントロールゲート電圧で、電荷が少量ならば、伝導電流は比較的高くなる（図４参照）。メモリセルのソース電極と接地パッドとの間に有限抵抗が存在する場合、その抵抗にまたがる電圧降下はＶdrop＝ｉTOT Ｒになる。
【０１２０】
例えば、各ビット線につき１μＡで６４，０００本のビット線が同時に放電するならば、ソース線電圧降下は６４，０００線ｘ１μＡ／線ｘ１０オーム〜０．６４ボルトに等しくなる。０．６４Ｖのソース電圧上昇によってしきい値電圧が０．９６Ｖ上昇すると仮定すると、メモリセルのしきい値電圧を検知するときには、このソース線バイアスから０．９６ボルトの検知誤差が生じる。
【０１２１】
図２８Ｂは、ソース線電圧降下によって生じるメモリセルのしきい値電圧レベル誤差を示す。メモリセル１０のコントロールゲート３０に供給されるしきい値電圧ＶT はＧＮＤを基準とする。しかし、メモリセルから見た実効ＶT は、そのコントロールゲート３０とソース１４との電圧差である。供給ＶT と実効ＶT には約１．５ｘＶdropの差がある（ソース１４からソース線までの細かな電圧降下は無視する）。メモリセルのしきい値電圧を検知するときには、このＶdropまたはソース線バイアスが、例えば０．９６ボルトの検知誤差に寄与する。
【０１２２】
このバイアスはデータに左右されるため、すなわちページのメモリセルの記憶状態に左右されるため、容易く解消できない。極端な場合、ページの全メモリセルが消去済み状態になっているときにはバイアスが最も高くなる。この場合の各セルは導電性が高く、大きなＶdropと高いソース線バイアスに寄与する。もうひとつの極端な場合として、ページの全メモリセルが完全にプログラム済み状態になっているときの各セルは非導電性であり、ソース線バイアスは皆無かごく僅かになる。
【０１２３】
本発明の別の態様によると、ページに含まれる消去済み状態とプログラム済み状態のセルの割合が平均して等しくなるようにページ内のデータビットがランダム化される。これによりソース線バイアスまたは負荷の大きなばらつきを抑え、検知操作中のしかるべき調整により許容できるようにする。
それには、ページ内の個々のビットをランダム化する。好ましくは、ある極性を指定する一連の擬似ランダムビットを使ってページ内のビットを符号化する。一実施形態において、ページ内の各データビットにつき極性ビットがある。別の実施形態では、ページ内の各データバイトにつき極性ビットがある。この実施形態で、極性ビットによってビットの反転が指定される場合は、データバイト内の全ビットが反転される。
【０１２４】
図２９は、ページの中でビットをランダム化する方法を示す。
ステップ７５０：集積回路メモリチップを提供する。このメモリチップは、ページ単位でアクセス可能な不揮発性メモリセルアレイを有し、各ページは１グループのメモリセルからなり、１グループの各メモリセルはアレイの列内にあり、かつ共通ワード線によりアクセス可能な行沿いに並ぶ。
ステップ７６０：プログラムされるページの各データビットセットにつき第１および第２の符号化法を提供する。
ステップ７６２：一連の極性ビットを、各データビットセットにつき１つずつ、オンチップで生成する。
ステップ７６４：各データビットセットの極性ビットが第１の状態にあるか、それとも第２の状態にあるかに応じて、第１または第２の符号化法により各データビットセットを符号化する。
ステップ７７０：符号化された全データビットセットをページに並行してプログラムする。
【０１２５】
一連の極性ビットは、図２３Ａに見られる擬似ランダムジェネレータ等により、各データビットセットにつき１つずつ、提供される。それぞれのデータビットセットは一定数のビットを含む。例えば、この一定数のビットは、一実施形態において、１である。一定数のビットは、別の実施形態において、８ビットである。
【０１２６】
ページ内・ページ間オンチップデータ擬似ランダム化
全面的に消去済み状態になっているページ等、極端に規則性のあるデータパターンの場合は、ページ内スクランブリング方式では不十分である。
本発明のもうひとつの態様によると、ページ内ランダム化にページ単位のランダム化を組み合わせる。具体的にはオンチップ回路の限りあるリソースを踏まえ、ページ内ランダム化にあたっては各ページに個別の開始位置を用意するのが望ましく、ページ単位ランダム化にあたっては各ページに個別の符号化極性を用意するのが望ましい。
【０１２７】
本発明の別の態様に従い、ページ単位とページ内でデータをランダム化する方法を図３０に示す。
ステップ７５０：集積回路メモリチップを提供する。このメモリチップは、ページ単位でアクセス可能な不揮発性メモリセルアレイを有し、各ページは１グループのメモリセルからなり、１グループの各メモリセルはアレイの列内にあり、かつ共通ワード線によりアクセス可能な行沿いに並ぶ。
ステップ７６０：プログラムされる各データページにつき第１および第２の符号化法を提供する。
ステップ７６２：一連の極性ビットを、各ページにつき１つずつ、オンチップで生成する。
ステップ７６４：ページの極性ビットが第１の状態にあるか、それとも第２の状態にあるかに応じて、第１または第２の符号化法によりデータページを符号化する。
ステップ７７０：プログラムされる各ページに対応する開始列位置からなる一連の開始列位置をオンチップで生成する。
ステップ７７２：各ページにプログラムされるデータを、対応する開始列位置から始めてページが埋め尽くされるまでラップアラウンドする。
ステップ７８０：配列されたデータを各ページに並行してプログラムする。
【０１２８】
さらに別の実施形態ではステップ７６０からステップ７７２の間に図２９のステップ７６０、ステップ７６２、およびステップ７６４を挿入してデータビットのランダム化も実施する。この実施形態ではワード線方向と列方向でビットがランダム化される。
【０１２９】
ここで参照する特許、特許出願、記事、書籍、仕様書、その他の出版物、文書、事物はどれも、その全体があらゆる目的のために本願明細書において参照により援用されている。援用する出版物、文書、または事物のいずれかと本願明細書の文面との間で用語の定義または使用に矛盾や食い違いがある場合は、本願明細書における用語の定義または使用が優先するものとする。
これまで本発明の実施形態を説明してきたが、本発明はこれらの例示的な実施形態に限定されず、添付の特許請求の範囲によって規定されることを理解すべきである。
【図１Ａ】
0005537590.tif 000003
【図１Ｂ】
0005537590.tif 000004
【図１Ｃ】
0005537590.tif 000005
【図１Ｄ】
0005537590.tif 000006
【図１Ｅ】
0005537590.tif 000007
【図２】
0005537590.tif 000008
【図３】
0005537590.tif 000009
【図４】
0005537590.tif 000010
【図５】
0005537590.tif 000011
【図６Ａ】
0005537590.tif 000012
【図６Ｂ】
0005537590.tif 000013
【図７Ａ】
0005537590.tif 000014
【図７Ｂ】
0005537590.tif 000015
【図８】
0005537590.tif 000016
【図９】
0005537590.tif 000017
【図１０】
0005537590.tif 000018
【図１１Ａ】
0005537590.tif 000019
【図１１Ｂ】
0005537590.tif 000020
【図１２Ａ】
0005537590.tif 000021
【図１２Ｂ】
0005537590.tif 000022
【図１３】
0005537590.tif 000023
【図１４】
0005537590.tif 000024
【図１５】
0005537590.tif 000025
【図１６】
0005537590.tif 000026
【図１７】
0005537590.tif 000027
【図１８】
0005537590.tif 000028
【図１９Ａ】
0005537590.tif 000029
【図１９Ｂ】
0005537590.tif 000030
【図２０】
0005537590.tif 000031
【図２１】
0005537590.tif 000032
【図２２Ａ】
0005537590.tif 000033
【図２２Ｂ】
0005537590.tif 000034
【図２２Ｃ】
0005537590.tif 000035
【図２３Ａ】
0005537590.tif 000036
【図２３Ｂ】
0005537590.tif 000037
【図２３Ｃ】
0005537590.tif 000038
【図２３Ｄ】
0005537590.tif 000039
【図２３Ｅ】
0005537590.tif 000040
【図２４Ａ】
0005537590.tif 000041
【図２４Ｂ】
0005537590.tif 000042
【図２５】
0005537590.tif 000043
【図２６】
0005537590.tif 000044
【図２７】
0005537590.tif 000045
【図２８Ａ】
0005537590.tif 000046
【図２８Ｂ】
0005537590.tif 000047
【図２９】
0005537590.tif 000048
【図３０】
0005537590.tif 000049