(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)
【発明の概要】
【００４６】
本発明は、プログラム妨害またはやユーザ読み出し妨害の原因となる特定のデータパターンを軽減または解消するほか、ＮＡＮＤストリング抵抗効果を軽減し、メモリの耐久性と信頼性を向上させる。フローティングゲート間結合の問題も緩和する。
【００４７】
本発明の一態様は、フラッシュメモリチップまたはアレイで蓄積データの擬似ランダム化を実装する方法を含む。この方法はフラッシュメモリ回路に対するごく僅かな修正でデータ蓄積のランダム性を大幅に向上させ、ひいてはアレイの性能を高める。データのランダム化はメモリの中で容易く有効または無効にできる。しかも、擬似ランダム化を駆動するシーケンスは絶えず変化し、システムの柔軟性はさらに向上する。
【００４８】
いくつかの実施形態において、ユーザアクションによってデータ符号化の変更がトリガされる。ユーザアクションのタイミングは完全に予測不能なため、ユーザ主導トリガの結果として使われる符号化方式もまた予測不能であり、基本的には完全にランダムである。
【００４９】
種々のランダム化手法および実施形態はメモリチップ（ＥＥＰＲＯＭ）で実装する。つまり、これらは、メモリチップと通信するメモリコントローラによって生起するのではなく、メモリチップそのものの中で生起する。これは、しばしばシステムレベルで実装されメモリチップにおけるデータ蓄積のあり方をコントローラを使って変更することによって損耗均等化(wear leveling) と呼ばれる問題に対処する手法とは異なる点である。
【００５０】
本発明のもうひとつの態様は、複数のユーザデータページを備える不揮発性ＮＡＮＤフラッシュメモリチップである。このチップは、メモリアレイと、有限の状態マシンクロック信号と、コマンドクロック信号と、有限の状態マシンクロック信号とコマンドクロック信号とを参照することによって生成される極性ビットとを備える。極性ビットの第１の値には第１の符号化タイプを使用し、極性ビットの第２の値には第２の符号化タイプを使用する。異なる符号化タイプの使用により、実際にはアレイの中で同じデータを繰り返し蓄積する場合でも、あるいは長期間にわたって蓄積する場合でも、アレイで同じデータパターンを蓄積する時間は減少する。
【００５１】
本発明のもうひとつの態様は、複数のデータページを備える不揮発性ＮＡＮＤフラッシュメモリにおける方法に関する。この方法は、複数のビットを備えるコードを不揮発性メモリに蓄積することを備え、複数ビットの各ビットは複数ページの１ページのデータの符号化を反転させるかあるいは現状のまま残すかを指定する。また、これは、不揮発性メモリからコードを読み出すことと、不揮発性メモリからコードの複数のビットを蓄積するために割り当てられたレジスタにコードを転送することと、コードをレジスタに蓄積することと、コードの各ビットにつき複数のページの１ページのページアドレスをコードのビットに比較することによって極性信号を生成することと、生成された極性信号に基づき複数ページの一部分のページの符号化を変更することとを備える。
【図面の簡単な説明】
【００５２】
【図１Ａ】不揮発性メモリセルの例を概略的に示す。
【図１Ｂ】不揮発性メモリセルの他の例を概略的に示す。
【図１Ｃ】不揮発性メモリセルの他の例を概略的に示す。
【図１Ｄ】不揮発性メモリセルの他の例を概略的に示す。
【図１Ｅ】不揮発性メモリセルの他の例を概略的に示す。
【図２】ＮＯＲメモリセルアレイの一例を示す。
【図３】図１Ｄに示されたメモリセル等のＮＡＮＤアレイの一例を示す。
【図４】フローティングゲートが一度に蓄積できる４通りの電荷Ｑ１〜Ｑ４でソース−ドレイン電流とコントロールゲート電圧との関係を示す。
【図５】読み出し／書き込み回路から行デコーダと列デコーダとを通じてアクセスする典型的なメモリアレイ構成を概略的に示す。
【図６Ａ】個々の読み出し／書き込みモジュールの概略的ブロック図である。
【図６Ｂ】読み出し／書き込みモジュールの積み重ねによって従来どおりに実装された図５の読み出し／書き込みスタックを示す。
【図７Ａ】一群の分割読み出し／書き込みスタックを具備し本発明の改良されたプロセッサを実装するコンパクトなメモリ装置を概略的に示す。
【図７Ｂ】図７Ａに示されたコンパクトなメモリ装置の好適な構成を示す。
【図８】図７Ａに示された読み出し／書き込みスタックにおける基本コンポーネントの一般的な構成を概略的に示す。
【図９】図７Ａおよび図７Ｂに示された読み出し／書き込み回路における読み出し／書き込みスタックの好適な構成を示す。
【図１０】図９に示された共通プロセッサの改良された実施形態を示す。
【図１１Ａ】図１０に示された共通プロセッサの入力ロジックの好適な実施形態を示す。
【図１１Ｂ】図１１Ａの入力ロジックの真偽表を示す。
【図１２Ａ】図１０に示された共通プロセッサの出力ロジックの好適な実施形態を示す。
【図１２Ｂ】図１２Ａの出力ロジックの真偽表を示す。
【図１３】図１０を簡素化したものであって、本発明の２ビットの実施形態の説明にかかわるいくつかの特定の要素を示す。
【図１４】下位ページデータの読み出しが行われる上位ページプログラミングで図１３と同じ要素のラッチ割り当てを示す。
【図１５】単一ページモードにおけるキャッシュプログラミングの態様を示す。
【図１６】下位ページからフルシーケンスへの転換に使用できるプログラミング波形を示す。
【図１７】フルシーケンス転換をともなうキャッシュプログラミング操作における相対的なタイミングを示す。
【図１８】キャッシュページコピー操作におけるラッチの処理を示す。
【図１９Ａ】キャッシュページコピー操作における相対的なタイミングを示す。
【図１９Ｂ】キャッシュページコピー操作における相対的なタイミングを示す。
【図２０】ＬＭ符号を使って各メモリセルで２ビットのデータを蓄積する場合の４状態メモリアレイのしきい値電圧分布を示す。
【図２１】ＥＥＰＲＯＭまたはメモリチップ６００の特定コンポーネントの概略的ブロック図である。
【図２２Ａ】ページアドレスによる各種データページの符号化方式と極性ビットの図である。
【図２２Ｂ】ユーザデータ符号化の変換に用いる１７ビットコード例の適用を示す表である。
【図２２Ｃ】代表的なＮＡＮＤチェーン／ストリングのメモリセルに蓄積される上位・下位ビットへの極性ビットの適用を示す。
【図２３Ａ】コマンドクロック信号に応じた符号化方式決定の図である。
【図２３Ｂ】コマンドのクロック信号である。
【図２３Ｃ】データ符号化決定・反転用制御回路の一実施形態を示す。
【図２３Ｄ】極性ビットを蓄積するユーザデータページを示す。
【図２３Ｅ】読み出し操作にあたって潜在的に反転されたデータの符号化を元に戻す制御回路の一実施形態を示す。
【図２４Ａ】コマンドクロック信号の立ち上がりにＦＳＭクロックの値を示す、コマンドクロック信号と有限の状態マシンクロック信号の時系列である。
【図２４Ｂ】図２４Ａに示すコマンドクロック信号に応じて極性ビットを決定する代表的な回路を示す。
【発明を実施するための形態】
【００５３】
図７Ａは、一群の分割読み出し／書き込みスタックを具備し本発明の改良されたプロセッサを実装するコンパクトなメモリ装置を概略的に示す。このメモリ装置は二次元のメモリセルアレイ３００と、制御回路３１０と、読み出し／書き込み回路３７０とを含む。メモリアレイ３００は、行デコーダ３３０を通じてワード線により、そして列デコーダ３６０を通じてビット線により、アドレス指定することができる。読み出し／書き込み回路３７０は一群の分割読み出し／書き込みスタック４００として実装され、メモリセルからなるブロック（「ページ」とも呼ぶ）の読み出しまたはプログラミングを並行して行うことができる。ページは好適な実施形態において一連のメモリセル行から構成される。１行のメモリセルを多数のブロックまたはページに分割する別の実施形態において、個々のブロックに向けて読み出し／書き込み回路３７０を多重化するためのブロックマルチプレクサ３５０を設ける。
【００５４】
制御回路３１０は読み出し／書き込み回路３７０と協働しながらメモリアレイ３００でメモリ操作を遂行する。制御回路３１０は状態マシン３１２と、オンチップアドレスデコーダ３１４と、電力制御モジュール３１６とを含む。状態マシン３１２はメモリ操作のチップレベル制御を提供する。オンチップアドレスデコーダ３１４は、ホストまたはメモリコントローラで使われるアドレスとデコーダ３３０および３６０で使われるハードウェアアドレスとの間でアドレスインターフェイスを提供する。電力制御モジュール３１６は、メモリ操作中にワード線とビット線へ供給される電力と電圧を制御する。
【００５５】
図７Ｂは、図７Ａに示されたコンパクトなメモリ装置の好適な構成を示す。様々な周辺回路によるメモリアレイ３００へのアクセスは、アレイの両側で対称的に行われるため、アクセス線と回路はそれぞれの側で半分に減る。行デコーダは行デコーダ３３０Ａおよび３３０Ｂに分かれ、列デコーダは列デコーダ３６０Ａおよび３６０Ｂに分かれる。メモリセル行を多数のブロックに分割する実施形態では、ブロックマルチプレクサ３５０がブロックマルチプレクサ３５０Ａおよび３５０Ｂに分かれる。同様に、読み出し／書き込み回路は、下からビット線へ接続する読み出し／書き込み回路３７０Ａと、アレイ３００の上からビット線へ接続する読み出し／書き込み回路３７０Ｂとに分かれる。かくして、読み出し／書き込みモジュールの密度、したがって分割読み出し／書き込みスタック４００の密度は、基本的には半減する。
【００５６】
図８は、図７Ａに示された読み出し／書き込みスタックにおける基本コンポーネントの一般的な構成を概略的に示す。本発明の一般的なアーキテクチャによると、読み出し／書き込みスタック４００は、ｋ本のビット線を感知するセンス増幅器２１２のスタックと、Ｉ／Ｏバス２３１を通じてデータを入出力するＩ／Ｏモジュール４４０と、入出力データを蓄積するデータラッチ４３０のスタックと、読み出し／書き込みスタック４００でデータを処理し蓄積する共通プロセッサ５００と、スタックコンポーネント間で通信を行うためのスタックバス４２１とを備える。読み出し／書き込み回路３７０間のスタックバスコントローラは、線４１１を通じて読み出し／書き込みスタック内の様々なコンポーネントを制御するための制御信号とタイミング信号とを提供する。
【００５７】
図９は、図７Ａおよび図７Ｂに示された読み出し／書き込み回路における読み出し／書き込みスタックの好適な構成を示す。各々の読み出し／書き込みスタック４００はｋ本のビット線からなるグループに同時に働きかける。ページがｐ＝ｒ＊ｋ本のビット線を持つならば、ｒ個の読み出し／書き込みスタック４００−１・・・４００−ｒがある。
【００５８】
分割読み出し／書き込みスタック４００からなる一群全体が並行して動作することにより、行に沿ってｐ個のセルからなるブロック（またはページ）の読み出しまたはプログラミングを並行して行うことができる。よって、セルの行全体に対してｐ個の読み出し／書き込みモジュールがある。各スタックでｋ個のメモリセルを処理するなら、バンク内の合計読み出し／書き込みスタックの数はｒ＝ｐ／ｋで求められる。例えば、バンク内のスタック数がｒならｐ＝ｒ＊ｋである。一例として、メモリアレイはｐ＝５１２バイト（５１２×８ビット）、ｋ＝８を保持し、したがってｒ＝５１２を保持する。好適な実施形態において、ブロックはセルの行全体である。別の実施形態において、ブロックは行内のセルの小集団である。セルの小集団は、例えば行全体の２分の１であったり、行全体の４分の１であったりする。セルの小集団は連続するセルであったり、１つおきのセルであったり、所定のセル数おきのセルであったりする。
【００５９】
それぞれの読み出し／書き込みスタックには、例えば４００−１の中には、基本的にｋ個のメモリセルからなるセグメントを並行して処理する２１２−１から２１２−ｋまでのセンス増幅器からなるスタックがある。米国公開特許出願第２００４−０１０９３５７号（特許文献２５）には好適なセンス増幅器が開示され、その全体が本願明細書において参照により援用されている。
【００６０】
スタックバスコントローラ４１０は線４１１を通じて読み出し／書き込み回路３７０へ制御信号とタイミング信号を提供する。スタックバスコントローラそのものは線３１１を介してメモリコントローラ３１０に従属する。読み出し／書き込みスタック４００内の通信はＳＡＢｕｓ４２２とＤＢｕｓ４２３を含むスタックバスによって行われ、スタックバスコントローラ４１０によって制御される。制御線４１１は、スタックバスコントローラ４１０から読み出し／書き込みスタック４００−１のコンポーネントにかけて制御信号とクロック信号を提供する。
【００６１】
スタックバスは、好適な実施形態において、共通プロセッサ５００とセンス増幅器のスタック２１２との間の通信のためのＳＡＢｕｓ４２２と、プロセッサとデータラッチのスタック４３０との間の通信のためのＤＢｕｓ４２３とに分かれる。
データラッチのスタック４３０は、４３０−１から４３０−ｋまでのデータラッチを含み、各メモリセルにつき１つずつスタックに関連付けられている。Ｉ／Ｏモジュール４４０は、データラッチがＩ／Ｏバス２３１を通じて外部とデータをやり取りできるようにする。
【００６２】
共通プロセッサは、エラー状態をはじめとするメモリ操作のステータスを伝えるステータス信号を出力する出力５０７をも含む。このステータス信号は、Ｗｉｒｅｄ−Ｏｒ構成でＦＬＡＧ  ＢＵＳ  ５０９へ結合されたｎ−トランジスタ５５０のゲートを駆動するために使われる。ＦＬＡＧ  ＢＵＳは好ましくは、コントローラ３１０によって予め荷電され、いずれかの読み出し／書き込みスタックによってステータス信号がアサートされるときにプルダウンされる。
【００６３】
図１０は、図９に示された共通プロセッサの改良された実施形態を示す。共通プロセッサ５００は外部回路との通信のためのプロセッサバスＰＢＵＳ  ５０５と、入力ロジック５１０と、プロセッサラッチＰＬａｔｃｈ  ５２０と、出力ロジック５３０とを備える。
入力ロジック５１０はＰＢＵＳからデータを受信し、信号線４１１を通じてスタックバスコントローラ４１０から届く制御信号に応じて論理状態「１」、「０」、または「Ｚ」（浮遊）のいずれか１つに変換されたデータをＢＳＩノードへ出力する。セット／リセットラッチＰＬａｔｃｈ  ５２０はＢＳＩをラッチし、ＭＴＣＨおよびＭＴＣＨ* として一対の相補出力信号をもたらす。
出力ロジック５３０はＭＴＣＨ信号とＭＴＣＨ* 信号を受信し、信号線４１１を通じてスタックバスコントローラ４１０から届く制御信号に応じて論理状態「１」、「０」、または「Ｚ」（浮遊）のいずれか１つに変換されたデータをＰＢＵＳ  ５０５に出力する。
【００６４】
共通プロセッサ５００は所与のメモリセルに関係するデータを常に処理する。例えば、図１０は、ビット線１へ結合されたメモリセルの場合を示している。対応するセンス増幅器２１２−１はノードを備え、ここにセンス増幅器データが現れる。このノードは好適な実施形態において、データを蓄積するＳＡラッチ２１４−１の形をとるものとする。同様に、対応する１組のデータラッチ４３０−１はビット線１へ結合されたメモリセルに関連する入力または出力データを蓄積する。好適な実施形態において、１組のデータラッチ４３０−１はｎビットのデータを蓄積するにあたって十分なデータラッチ４３４−１・・・４３４−ｎを備える。
【００６５】
共通プロセッサ５００のＰＢＵＳ  ５０５は、一対の相補信号ＳＡＰおよびＳＡＮによって転送ゲート５０１がイネーブルになるとＳＢＵＳ  ４２２を通じてＳＡラッチ２１４−１にアクセスする。同様に、一対の相補信号ＤＴＰおよびＤＴＮによって転送ゲート５０２がイネーブルになると、ＰＢＵＳ  ５０５はＤＢＵＳ  ４２３を通じて１組のデータラッチ４３０−１にアクセスする。信号ＳＡＰ、ＳＡＮ、ＤＴＰ、およびＤＴＮは、スタックバスコントローラ４１０からの制御信号の一部として明示されている。
【００６６】
図１１Ａは、図１０に示された共通プロセッサの入力ロジックの好適な実施形態を示す。入力ロジック５２０はＰＢＵＳ  ５０５でデータを受信し、出力ＢＳＩは制御信号次第で同じになるか、反転するか、浮遊する。出力ＢＳＩノードは基本的に、転送ゲート５２２の出力か、Ｖｄｄにかけて直列するｐトランジスタ５２４および５２５を備えるプルアップ回路か、接地にかけて直列するｎトランジスタ５２６および５２７を備えるプルダウン回路に左右される。プルアップ回路のゲートは、信号ＰＢＵＳおよびＯＮＥによってそれぞれ制御されるｐトランジスタ５２４および５２５へ至る。プルダウン回路のゲートは、信号ＯＮＥＢ＜１＞およびＰＢＵＳによってそれぞれ制御されるｎトランジスタ５２６および５２７へ至る。
【００６７】
図１１Ｂは、図１１Ａの入力ロジックの真偽表を示す。ロジックは、ＰＢＵＳと制御信号ＯＮＥ、ＯＮＥＢ＜０＞、ＯＮＥＢ＜１＞とによって制御され、これらの制御信号はスタックバスコントローラ４１０からの制御信号の一部である。基本的には３つの転送モードＰＡＳＳＴＨＲＯＵＧＨ、ＩＮＶＥＲＴＥＤ、およびＦＬＯＡＴＥＤをサポートする。
【００６８】
ＢＳＩが入力データと同じになるＰＡＳＳＴＨＲＯＵＧＨモードの場合、信号ＯＮＥは論理「１」、ＯＮＥＢ＜０＞は「０」、ＯＮＥＢ＜１＞は「０」となる。これによりプルアップまたはプルダウンはディスエーブルになるが転送ゲート５２２はイネーブルになり、データはＰＢＵＳ  ５０５のデータが出力５２３へ引き渡される。ＢＳＩが入力データの逆になるＩＮＶＥＲＴＥＤモードの場合、信号ＯＮＥは「０」、ＯＮＥＢ＜０＞は「１」、ＯＮＥＢ＜１＞は「１」となる。これにより転送ゲート５２２はディスエーブルになる。また、ＰＢＵＳが「０」ならプルダウン回路はディスエーブルになり、プルアップ回路はイネーブルになり、結果的にＢＳＩは「１」になる。同様に、ＰＢＵＳが「１」なら、プルアップ回路はディスエーブルになり、プルダウン回路はイネーブルになり、結果的にＢＳＩは「０」になる。最後に、ＦＬＯＡＴＥＤモードの場合、信号ＯＮＥが「１」、ＯＮＥＢ＜０＞が「１」、ＯＮＥＢ＜１＞が「０」となって出力ＢＳＩを浮遊させることができる。ＦＬＯＡＴＥＤモードは完全を期するために記載されているが、実際には使われない。
【００６９】
図１２Ａは、図１０に示された共通プロセッサの出力ロジックの好適な実施形態を示す。入力ロジック５２０からＢＳＩノードに至る信号はプロセッサラッチＰＬａｔｃｈ  ５２０でラッチする。出力ロジック５３０はＰＬａｔｃｈ  ５２０の出力からデータＭＴＣＨおよびＭＴＣＨ* を受信し、制御信号に応じてＰＡＳＳＴＨＲＯＵＧＨモードか、ＩＮＶＥＲＴＥＤモードか、ＦＬＯＡＴＥＤモードのいずれかでＰＢＵＳに出力する。換言すると、４つのブランチはＰＢＵＳ  ５０５の駆動装置として機能し、これをＨＩＧＨ、ＬＯＷ、またはＦＬＯＡＴＥＤ状態まで能動的に引き上げる。これはＰＢＵＳ  ５０５の４つのブランチ回路によって、具体的には２つのプルアップ回路と２つのプルダウン回路とによって、達成する。第１のプルアップ回路はＶｄｄにかけて直列するｐトランジスタ５３１および５３２を備え、ＭＴＣＨが「０」のときにＰＢＵＳをプルアップできる。第２のプルアップ回路は接地にかけて直列するｐトランジスタ５３３および５３４を備え、ＭＴＣＨが「１」のときにＰＢＵＳをプルアップできる。同様に、第１のプルダウン回路はＶｄｄにかけて直列するｎトランジスタ５３５および５３６を備え、ＭＴＣＨが「０」のときにＰＢＵＳをプルダウンできる。第２のプルダウン回路は接地にかけて直列するｎトランジスタ５３７および５３８を備え、ＭＴＣＨが「１」のときにＰＢＵＳをプルダウンできる。
【００７０】
本発明の一特徴として、プルアップ回路はＰＭＯＳトランジスタで構成し、プルダウン回路はＮＭＯＳトランジスタで構成する。ＮＭＯＳによるプルはＰＭＯＳのものより遥かに強いため、どんな競合においてもプルダウンは常にプルアップに勝る。換言すると、ノードまたはバスはデフォルトとして常にプルアップまたは「１」状態にでき、必要とあらば、常にプルダウンにより「０」状態に反転させることができる。
【００７１】
図１２Ｂは、図１２Ａの出力ロジックの真偽表を示す。ロジックは、入力ロジックからラッチされるＭＴＣＨ、ＭＴＣＨ* と、制御信号ＰＤＩＲ、ＰＩＮＶ、ＮＤＩＲ、ＮＩＮＶとによって制御され、これらの制御信号はスタックバスコントローラ４１０からの制御信号の一部である。４つの動作モードＰＡＳＳＴＨＲＯＵＧＨ、ＩＮＶＥＲＴＥＤ、ＦＬＯＡＴＥＤ、およびＰＲＥＣＨＡＲＧＥをサポートする。
【００７２】
ＦＬＯＡＴＥＤモードでは４つのブランチがすべてディスエーブルになる。これは信号ＰＩＮＶ＝１、ＮＩＮＶ＝０、ＰＤＩＲ＝１、ＮＤＩＲ＝０によって達成され、これらはデフォルト値でもある。ＰＡＳＳＴＨＲＯＵＧＨモードでＭＴＣＨ＝０ならば、ＰＢＵＳ＝０が要求される。ｎトランジスタ５３５および５３６を備えるプルダウンブランチだけをイネーブルし、ＮＤＩＲ＝１以外の制御信号はどれもデフォルト値とする。ＭＴＣＨ＝１ならば、ＰＢＵＳ＝１が要求される。ｐトランジスタ５３３および５３４を備えるプルアップブランチだけをイネーブルし、ＰＩＮＶ＝０以外の制御信号はどれもデフォルト値とする。ＩＮＶＥＲＴＥＤモードでＭＴＣＨ＝０ならば、ＰＢＵＳ＝１が要求される。ｐトランジスタ５３１および５３２を備えるプルアップブランチだけをイネーブルし、ＰＤＩＲ＝０以外の制御信号はどれもデフォルト値とする。ＭＴＣＨ＝１ならば、ＰＢＵＳ＝０が要求される。ｎトランジスタ５３７および５３８を備えるプルダウンブランチだけをイネーブルし、ＮＩＮＶ＝１以外の制御信号はどれもデフォルト値とする。ＰＲＥＣＨＡＲＧＥモードでは、ＰＤＩＲ＝０とＰＩＮＶ＝０の制御信号設定でＭＴＣＨ＝０ならば、ｐトランジスタ５３１および５３２を備えるプルアップブランチをイネーブルするか、またはＭＴＣＨ＝１ならば、ｐトランジスタ５３３および５３４を備えるプルアップブランチをイネーブルする。
２００４年１２月２９日に出願された米国特許出願第１１／０２６，５３６号（特許文献２６）では共通プロセッサの動作がより詳しく説明されている。この特許出願は、その全体が本願明細書において参照により援用されている。
【００７３】
キャッシュ操作におけるデータラッチの使用
本発明のいくつかの態様において、読み出し、書き込み、消去といった他の作業に内部メモリが従事しているときにデータを出し入れするキャッシュ操作にあたって、図１０で前述した読み出し／書き込みスタックのデータラッチを利用する。前述したアーキテクチャではデータラッチを多数の物理ページで共用する。例えば、ビット線の読み出し／書き込みスタックを全てのワード線で共用すれば、ある１つの操作が進行しているときにこれらのラッチのいずれかが空いているなら、それらのラッチを使って同じワード線か別のワード線における先々の操作に向けてデータをキャッシュでき、転送は別の操作の背後に潜在化できるため時間の節約になる。異なる操作または操作段階をパイプラインする量を増すことによって性能を上げることができる。例えば、キャッシュプログラミング操作では、１ページデータをプログラムしているときに別のページデータをロードして転送時間を節約できる。もう１つの例として、代表的な実施形態において、ある１つのワード線における読み出し操作が別のワード線における書き込み操作に挿入され、データの書き込みを継続しながら読み出しデータをメモリから転送することができる。
【００７４】
このため、第１のページデータで書き込み、または他の操作が進行しているときには、（例えば、ＥＣＣ操作を行うため）同じブロックでワード線が異なる別のページからデータをトグルアウトできる。この操作段階間パイプラインにより、データ転送に要する時間は第１のページデータに対する操作の背後に潜在化させることができる。より一般的に、ある１つの操作の一部分を、通常ならばこれよりも長い、別の操作の段階の合間に差し込むことが可能となる。もう１つの例として、例えば消去操作の段階の合間に、例えば消去パルスの前に、あるいは消去の後半として使われるソフトプログラミング段階の前に、感知操作を挿し込む。
【００７５】
一部の操作に要する相対的な時間を説明するため、前述したシステムにおける代表的な時間値のセットを、
データ書き込み：〜７００μｓ（下位ページ〜６００μｓ、上位ページ８００μｓ）
バイナリデータ書き込み：〜２００μｓ
消去：〜２，５００μｓ
読み出し：〜２０−４０μｓ
読み出しとデータのトグルアウト：２ＫＢデータ、〜８０μｓ、
４ＫＢ〜１６０μｓ、８ＫＢ〜３２０μｓ
とする。
これ以降、タイミング図にかかわる相対的な時間を説明する際には、これらの値を基準として使うことができる。主要な態様において、様々な段階をともなう長い操作を実行する場合、読み出し／書き込みスタックの共用ラッチが使用可能であれば、これを使って短い操作を割り込ませる。例えば、プログラミング操作や消去操作の中に読み出しを挿し込んだり、消去中にバイナリプログラミングを挿し込んだりすることができる。主要な代表的な実施形態において、同じ読み出し／書き込みスタックを共用するページのプログラミング操作のときに別のページデータをトグルイン／アウトし、例えばトグルアウトされ修正されるデータの読み出しは、データ書き込みのベリファイ段階に挿し込む。
【００７６】
空きデータラッチを利用できる機会は数多くある。一般的に、１セル当たりｎビットを蓄積するメモリの場合、各ビット線につきｎ個のデータラッチが必要となるが、これらのラッチの全てが常に必要となるわけではない。例えば、上位ページ／下位ページ形式でデータを蓄積する１セル当たり２ビットのメモリでは、下位ページをプログラムしているときに２つのデータラッチが必要となる。より一般的に、多数のページを蓄積するメモリで全てのラッチが必要となるのは最上位ページをプログラムするときだけである。これにより、他のラッチはキャッシュ操作に利用できる。また、最上位ページの書き込み中でも、書き込み操作のベリファイ段階から種々の状態が排除されるにつれてラッチは解放される。具体的に、ベリファイすべき状態が最上位状態だけになると、ベリファイに必要なラッチは１つだけであり、他のラッチはキャッシュ操作のために使うことができる。
【００７７】
以降の説明は、１セル当たり２ビットを蓄積し、各ビット線のデータにつき２つのラッチを具備し、さらにクイックパス書き込み用に１つのラッチを具備する４状態メモリに基づくものであり、このメモリは本願と同時に出願され、前に援用されている「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間に見られる本発明の態様を含む。
【０１０１】
ページコピープロセスと、ここで説明するデータの書き込みをともなうその他の手法で、ある所与の時間にベリファイする状態を合理的に選ぶことができ、このことは米国公開特許出願第２００４−０１０９３６２号（特許文献３４）で説明されている。この公開特許出願は、本願明細書において参照により援用されている。例えばフルシーケンス書き込みで、書き込みプロセスはＡレベルのみのベリファイから始めることができる。Ａベリファイの後には、ビットをチェックして合格ビットの有無を確認する。合格したビットがあるなら、Ｂレベルをベリファイ段階に加えることができる。Ａレベルベリファイは、これを目標値とする全蓄積単位のベリファイの後に解除される（または設定可能パラメータに基づく最大カウントを除く）。同様に、Ｂレベルベリファイの後にはＣレベルのベリファイを加えることができ、Ｂレベルベリファイは、これを目標値とする全蓄積単位のベリファイの後に解除される（または設定可能パラメータに基づく最大カウントを除く）。
プログラミング操作とこれにともなう他の操作のためのバックグラウンドデータキャッシングを、好適な多状態の符号化との関係で説明する。
【０１０２】
４状態メモリのための好適な代表的「ＬＭ」符号化
図２０は、２ビット論理符号（「ＬＭ」符号）で符号化される４状態メモリのプログラミングと読み出しを示す。この符号は耐障害性を提供し、ユーピン効果による隣接するセル結合を緩和する。図２０Ａは、ＬＭ符号を使って各メモリセルで２ビットのデータを蓄積する場合の４状態メモリアレイのしきい値電圧分布を示す。ＬＭ符号化は、上位および下位ビットが状態「Ａ」および「Ｃ」とで逆になる点が従来のグレイコードと異なる。米国特許第６，６５７，８９１号（特許文献３５）に開示された「ＬＭ」符号は、電荷の大きな変化を要するプログラミング操作を回避することによって隣接するフローティングゲート間の電界効果結合を抑えるのに有利である。
【０１０３】
符号化は、下位および上位２ビットのプログラミングと読み出しを別々に行うようにする。下位ビットをプログラムするときのセルのしきい値レベルはプログラムされていない領域にとどまるか、またはしきい値ウィンドウの「下位中間」領域まで進む。上位ビットをプログラムするときには、これらの２領域のいずれかにあるしきい値レベルがさらにしきい値ウィンドウの４分の１に満たない若干高いレベルまで進む。
【０１０４】
データパターンの擬似・ユーザ主導型ランダム化
メモリＥＥＰＲＯＭまたはチップの各種の実施形態とランダム化の方法により、ＮＡＮＤストリング抵抗の増加、耐久性と信頼性の低下、好ましくない結合等、反復データ蓄積パターンに起因する問題を最小限に抑えることを目指す。本発明の擬似ランダム化手法は実用的で、データ処理容量の点で実装コストは高くつかない。
【０１０５】
本発明は、フラッシュメモリチップに蓄積するデータの擬似ランダム化と真にユーザ本位のランダム化を実装する様々な実施形態および方法を含む。これらの実施形態にはいずれも、単純で僅かな回路修正をフラッシュＥＥＰＲＯＭで実施するだけでよいという利点がある。ランダム化の手法と回路は計算集約的でなく、実装にともなう性能上のペナルティは、たとえあったとしてごく僅かですむため、注目に価する。本発明の解決手段は、ランダム化を随時容易く有効または無効にできるという点で柔軟性にも優れている。また、一部の実施形態で使用する擬似ランダム化パターンは様々で、随時簡単に変更できる。
【０１０６】
図２１は、ランダム化プロセスに関係するＥＥＰＲＯＭまたはメモリチップ６００の主要コンポーネントを示す。チップ６００はメモリアレイ６０２と、周辺回路内のレジスタ６１０と、マルチプレクサ６１４とを備える。さらなる図への参照にあたってはこれとは別のチップ６００のコンポーネントを示し、説明する。レジスタ６１０は多数のビットを保持でき、多数のレジスタからなる。実施形態によってはこれがシフトレジスタとして機能する。メモリアレイ６０２は隠しエリア６０４とユーザデータエリア６０６とを備える。隠しエリアはファームウェアを蓄積するほか、メモリ動作制御コード等のオーバーヘッドデータを蓄積するために使用される。前に述べたように、ＮＡＮＤアーキテクチャではデータがブロックに整理され、それぞれのブロックは多数のデータページを備える。実施形態によってはレジスタ６１０もマルチプレクサ６１４も存在しない。
【０１０７】
本発明の各種の実施形態は、プログラム妨害またはユーザ読み出し妨害の原因となる特定のデータパターンの長期・反復蓄積を軽減または解消する。それには、擬似ランダム機構あるいはユーザトリガ型ランダム化によってデータの符号化を変更する。ユーザ活動のタイミングは完全に予測不能だから、その活動をトリガとして使用すれば真にランダムな符号化方式シーケンスになる。これらの実施形態も、ＮＡＮＤストリング抵抗効果を軽減し、メモリの耐久性と信頼性を向上させ、フローティングゲート間結合の問題を緩和する。
【０１０８】
これらの実施形態は、フラッシュＥＥＰＲＯＭ回路に対するごく僅かな修正でデータ蓄積のランダム性を大幅に向上させ、ひいてはＥＥＰＲＯＭの性能を高める。データのランダム化はアレイの中で容易く有効または無効にできる。しかも、絶えず変化する擬似ランダム化シーケンスがシステムに柔軟性を与える。
【０１０９】
一実施形態において、０または１のコードまたは一連のビットを、アレイ６０２の隠しエリア６０４に蓄積する。隠しエリア６０４でコードを蓄積する部分は「ＲＯＭブロック」と呼ぶこともある。コードは２ビット以上からなり、好ましくは１７ビット以上からなる。ビットが多いほどランダム化は向上する。チップ６００に電源が入るとレジスタ６１０に値がロードされる。レジスタでは、それぞれのビットが特定のページアドレスに割り当てられる。各ビットをページのページアドレスに比較し、その比較に基づきページのデータ符号化は反転するか、さもなくば同じ状態を保つ（通過）。例えば、データの符号化方式を同じ状態に保つことを指示するために０のビット値を使用し、レジスタにおける値１はページ内のデータの符号化が反転することを指示する。コードのビット数がブロック内のページ数に満たない場合、１つ以上のページからなる２つ以上のグループにコードを適用できる。換言すると、全てのページを比較するまでは順次コードを繰り返し使用できる。サイクルからサイクルにかけてコードを変更することもできる。これとは別に、マルチプレクサ６１４を通じてコードを多重化することもでき、この場合、ユーザデータエリア６０２に蓄積された複数のデータページの符号化が１コードの１ビットによって決定される。コードの各ビットは、ユーザデータの一部に使用する符号化の極性を変更する役割を果たすことから、極性ビットと呼ぶことができる。これは図２２Ａに描かれている。この場合の符号化はページアドレスに基づき、この場合、ページ０，Ｎの極性は１、ページ１，ｎ＋１の極性は０、ページ２，ｎ＋２の極性は１等であることが分かる。したがって、符号化がページアドレスに基づく実施形態では極性ビットをページとともに蓄積する必要はないが、冗長性の目的で蓄積してもよい。
【０１１０】
図２２Ｂに複製された次の表１は、ユーザデータ部分に対するレジスタ６１０内のコードの極性ビットの適用を示す。どんなユーザデータ部分でも特定の極性ビットに比較し、かつ対応付けることができるが、説明する好適な実施形態ではページを基本単位として例示する。
【表１】
0004778585.tif 000002
【０１１１】
この表に見られるように、ビットの当初符号化（データ）が同じ状態を保つかあるいは変化するかはコードの各（極性）ビットによって決まる。例えばレジスタ位置１を見ると、その位置の極性コードの値は１になっている。したがって、１がデータの反転を指示する実施形態の場合には、０として蓄積されたユーザデータの当初のビットは値１に反転される。この表は、２ビットを使って状態を指定する多状態セルを例示するものである。状態を示す図２０から分かるように、状態は上位ビットと下位ビットによって指定される。図２０に見られるタイプの２ビットまたは４状態メモリセルで、（１：１）は消去（「ＥＲ」）またはプログラムされていない（「Ｕ」）状態を指定し、（０：１）は状態Ａを指定し、（０：０）は状態Ｂを指定し、（１：０）は状態Ｃを指定する。上位ビットと下位ビットは単一のメモリセルに物理的に位置することがある。別のデータグループには同じコードまたは異なるコードを適用できるので、ビット１７に対応するデータグループは次の適用コードのビット１に対応するデータと併せて使用し、状態を決定する。それぞれの極性レジスタは該当するページ上の全てのデータの極性を制御する。下位ビットと上位ビットは、好ましくは同じ物理ワード線上に位置する。表１の例は、多数のワード線にわたってシンプルなパターンをランダムパターンに変換する極性ビットの働きを例示するものである。ランダム化は同じＮＡＮＤチェーン構造に位置するデータで行われ、図２２Ｃに提示する例はこのコンセプトを例示する。
【０１１２】
図２２Ｃには、ＮＡＮＤストリングまたはチェーンの例示されたセルの各々に特定のセルの各下位ビットと上位ビットが描かれている。図に示されたＮＡＮＤストリングは単なる例であって、当然ながらストリングのセルはこれよりも多いこともあれば少ないこともあり、図に示されたものとは異なる構造でも本発明に使用できる。例えば３ビット、４ビット、４ビット以上を蓄積するセルを使うこともできる。また、特に多状態メモリの場合にビット反転のコンセプトを例示するためにビットレベルの適用が図に示されているが、好ましくは１ページ以上のデータに極性ビットを適用する。図２２Ｃではユーザデータの各ビットに極性ビットが適用され、極性ビットによって反転または通過したユーザデータは保存データと標示されている。保存データとは、ランダム化操作の結果として後ほどメモリアレイに書き込まれ、蓄積されるデータである。見てとれるように、図の右側に表示された状態はセルの上位ビットと下位ビットとによって決まる。図２２Ｃで使われている用語「保存データ」は、表１と図２２Ｂで「ユーザデータ（ＵＤ）後続符号化」と呼ばれているものに相当する。
【０１１３】
もうひとつの実施形態において、レジスタ６１０をシフトレジスタとして構成する。一度にコードの全てのビットを使用する実施形態とは対照的に、そのような実施形態では一度にレジスタの１ビットだけを使用する。ユーザによってコマンドが発行されると、シフトレジスタは次のビットへシフトする。着信ユーザページには最後のレジスタ出力からの極性ビットが使われる。これは好ましくはコマンドの立ち上がりで行われる。トリガコマンドは、プログラムコマンド、キャッシュプログラムコマンド、読み出しコマンド、消去コマンド、その他のユーザ発行コマンドであってよい。図２３Ｂにはプログラムコマンド信号の例が示されている。コマンドに対応するクロック信号が図に示され、コマンドのインスタンス化はユーザリクエストによってトリガされ、そのタイミングとタイプは予測不能であって、基本的にランダムである。図２３Ａは、極性ビットを決定する入力のひとつとしてユーザコマンドに対応するクロック信号を示す。図の中のその他の入力はユーザデータである。既に述べたように、データの符号化は極性ビットの適用によって反転するかあるいは現状のまま残る。
【０１１４】
図２３Ｃは、データ反転用制御回路の一例を示す。インバータが１つのデータ経路によって符号化は反転し、２つのインバータが直列する経路ではデータ符号化方式は変わらない。この場合、データグループに対応する極性ビットはそのデータグループとともに蓄積される。例えば、図２３Ｄに見られるように、データページ６３０の場合にユーザエリア６３６にあるデータの極性ビット６３２は、ページ６３０の隠しエリア６３４にプログラムされる。ページ６３０を読み出すときには極性ビット６３２が取り出され、出力データを制御するためにラッチされ、符号化方式が反転されている場合は、図２３Ｅに見られる代表的な回路によって元に戻される。このようにしてページの極性は当初の符号化に戻る。
【０１１５】
シフトレジスタで使用するコードのパターンは変えることができ、種々の用途に応じて修正できる。（０が変更なしを指示する場合に）全てのビットが０に設定されるとランダム化が無効になる。レジスタにおけるビットのパターンは擬似ランダムだが、ユーザの挙動は予測不能であり、得られた極性もそのつど予測不能でランダムである。２つの次のようなユーザ挙動の例を挙げる。１）ユーザはいくつかのページをプログラムし、さらにいくつかのページを読み出すため、またはプログラムするため、あるいはいくつかのブロックを消去するため、別のアドレスへジャンプし、最後のプログラムが行われたブロックまで戻り、さらなるページのプログラムを続ける。２）ユーザは全てのページを順次プログラムし、別のアドレスにジャンプしない。１のケースでは各ユーザコマンドにつき新たな極性ビットをトリガでき、２のケースでは順次プログラミングは１つの極性ビットを使用しこれに依拠する。ユーザが蓄積を望む当初のデータが両方のケースで同じであっても、メモリに最終的にプログラムされるデータは、これら２つのケースにおける個々のページやページのグループの少なくとも一部で異なる可能性がある。ＥＥＰＲＯＭは、通常ならばコントローラチップによって制御され、「ユーザ」アクションの一部はコントローラチップのものであることに留意されたい。
【０１１６】
もうひとつの実施形態において、極性ビットもまた、既に述べたキャッシュプログラム操作をはじめとするユーザコマンドの結果としてランダムに生成される。この実施形態では同期しない２つの入力を使用する。最初のものはユーザコマンドのタイミングであって、これは前述したように予測不能である。２番目のものは有限の状態マシンクロックである。メモリシステムによっては特定の時間（例えば、キャッシュ操作中）に限り有限の状態マシンクロックがアクティブになることもあれば、他のシステムでは常にアクティブになることもある。この実施形態のこの手法は、メモリシステムの有限の状態マシンクロックがアクティブになっているときに使える。
【０１１７】
有限の状態マシン（「ＦＳＭ」）クロックのレベルまたは状態は、ユーザコマンドクロック信号の立ち上りで参照される。図２４Ａに見られるように、その状態はハイまたはローである。ロー状態は０の極性ビットに対応する（が、反対の対応も可能である）。時間ｔ＝０でＦＳＭはローなので、極性ビットは０になり、前述したようにデータ符号化の変更なしを指示する。時間ｔ＝１でＦＳＭはハイになり、極性ビットは１になり、時間ｔ＝３ではＦＳＭが再びロー状態になる。実施形態によっては、実行コマンドが発行され感知されると直ちに極性ビット６３２が隠しエリア６３４にロードされる。他の実施形態によっては、システムの別のメモリに極性ビットを一時的に格納する。図２４Ｂは前述したように極性ビットを決定する代表的な回路を示す。ここでもインバータは、好ましくは立ち上がりでトリガされる。
【０１１８】
これまで本発明の実施形態を説明してきたが、本発明がこれらの例示的な実施形態に制限されず、添付の特許請求の範囲によって規定されることが理解できよう。
【図１Ａ】
0004778585.tif 000003
【図１Ｂ】
0004778585.tif 000004
【図１Ｃ】
0004778585.tif 000005
【図１Ｄ】
0004778585.tif 000006
【図１Ｅ】
0004778585.tif 000007
【図２】
0004778585.tif 000008
【図３】
0004778585.tif 000009
【図４】
0004778585.tif 000010
【図５】
0004778585.tif 000011
【図６Ａ】
0004778585.tif 000012
【図６Ｂ】
0004778585.tif 000013
【図７Ａ】
0004778585.tif 000014
【図７Ｂ】
0004778585.tif 000015
【図８】
0004778585.tif 000016
【図９】
0004778585.tif 000017
【図１０】
0004778585.tif 000018
【図１１Ａ】
0004778585.tif 000019
【図１１Ｂ】
0004778585.tif 000020
【図１２Ａ】
0004778585.tif 000021
【図１２Ｂ】
0004778585.tif 000022
【図１３】
0004778585.tif 000023
【図１４】
0004778585.tif 000024
【図１５】
0004778585.tif 000025
【図１６】
0004778585.tif 000026
【図１７】
0004778585.tif 000027
【図１８】
0004778585.tif 000028
【図１９Ａ】
0004778585.tif 000029
【図１９Ｂ】
0004778585.tif 000030
【図２０】
0004778585.tif 000031
【図２１】
0004778585.tif 000032
【図２２Ａ】
0004778585.tif 000033
【図２２Ｂ】
0004778585.tif 000034
【図２２Ｃ】
0004778585.tif 000035
【図２３Ａ】
0004778585.tif 000036
【図２３Ｂ】
0004778585.tif 000037
【図２３Ｃ】
0004778585.tif 000038
【図２３Ｄ】
0004778585.tif 000039
【図２３Ｅ】
0004778585.tif 000040
【図２４Ａ】
0004778585.tif 000041
【図２４Ｂ】
0004778585.tif 000042