読み出し操作中にデータラッチでバックグラウンドキャッシングを行う不揮発性メモリとその方法
メモリの読み出しまたは書き込み操作の待ち時間の一部は、I/Oバスを通じてメモリのデータラッチで行われるデータの入出力によるものである。メモリコアが読み出し操作でビジー状態にあるときに、メモリがこれらのデータキャッシング操作と転送操作の一部をバックグラウンドで実行することにより不揮発性メモリ装置の性能を向上させる方法および回路がある。読み出しデータキャッシュ方式の実施にあたって、現在のワード線における現在のページの読み出しに先立ち前もって必要なデータ読み出しを近傍のワード線で実行しなければならない場合でも、前もって必要な読み出しとそれにともなうI/Oアクセスを前のページを読み出しサイクル中に先回りして実行すれば、読み出し済みのページでI/Oアクセスが行われている間に現在の読み出しを実行できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的に電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)やフラッシュEEPROMをはじめとする不揮発性半導体メモリに関し、具体的には重複メモリ操作を可能にする共有ラッチ構造に基づくキャッシュ操作に関する。
【背景技術】
【0002】
不揮発性電荷蓄積が可能な固体メモリ、特に形状因子が小さいカードにパッケージされたEEPROMやフラッシュEEPROMの形をとるものが最近、情報家電や家庭用電化製品を中心に様々なモバイルおよびハンドヘルド装置の記憶装置として盛んに選ばれている。同じく固体メモリであるRAM(ランダムアクセスメモリ)と違って、フラッシュメモリは不揮発性であって、電源を切った後にも蓄積されたデータを保持する。フラッシュメモリはコストが高くつくにもかかわらず、大容量記憶用途で使われることが多くなっている。ハードドライブやフロッピーディスク等、回転する磁気媒体を基礎とする従来の大容量記憶は、モバイル/ハンドヘルド環境に不向きである。なぜならば、ディスクドライブはかさばり、機械的な故障が起きやすく、待ち時間が長く、電力を食うからである。このような望ましくない属性を持つディスク方式の記憶装置は、ほとんどのモバイル/ポータブルな用途において実用的でない。他方、埋め込み形で着脱可能なカードの形をとるフラッシュメモリは、その小さなサイズと、低消費電力と、高速度と、高い信頼性ゆえにモバイル/ハンドヘルド環境に理想的にマッチする。
【0003】
EEPROMと電気的にプログラム可能な読み出し専用メモリ(EPROM)は、消去が可能で、そのメモリセルに新しいデータを書き込める、すなわち「プログラム」できる、不揮発性メモリである。いずれも半導体基板のソース領域とドレイン領域との間のチャネル領域上に配置された電界効果トランジスタ構造による導電性フローティング(非接続)ゲートを利用する。さらにこのフローティングゲートの上にコントロールゲートを設ける。トランジスタのしきい値電圧特性は、フローティングゲート上に保持される電荷量によって制御される。つまり、フローティングゲート上の所与のレベルの電荷に応じてコントロールゲートに印加すべき対応する電圧(しきい値)があり、これが印加されることによりトランジスタは「オン」に切り替わり、ソース領域とドレイン領域との導通が可能となる。
【0004】
フローティングゲートは一定範囲の電荷を保持でき、しきい値電圧ウィンドウ内の任意のしきい値電圧レベルまでプログラムできる。しきい値電圧ウィンドウのサイズは装置の最小しきい値レベルと最大しきい値レベルによって決まり、これはフローティングゲートにプログラムできる電荷の範囲に相当する。しきい値ウィンドウは通常、メモリ装置の特性と、動作条件と、履歴とに左右される。セルの記憶状態は、基本的にはウィンドウ内の個々の分解可能なしきい値電圧レベル範囲によって限定される。
【0005】
メモリセルとして機能するトランジスタは通常、2通りの方法のいずれか一方によって「プログラム済み」状態までプログラムされる。「ホットエレクトロン注入法」では、ドレインに印加される高電圧によって基板チャネル領域上の電子が加速する。同時に、コントロールゲートに印加される高電圧は、薄いゲート誘電体を通じてフローティングゲートまでホットエレクトロンを引き寄せる。「トンネル注入法」では、基板に比べて高い電圧をコントロールゲートに印加する。かくして、電子は基板から介在するフローティングゲートまで引き寄せられる。
【0006】
メモリ装置の消去にはいくつか方法がある。EPROMの場合、紫外線によってフローティングゲートから電荷を取り除くことによってメモリをまとめて消去できる。EEPROMの場合、コントロールゲートに比べて高い電圧を基板に印加し、フローティングゲートの電子を薄い酸化物を通じて基板チャネル領域まで誘導することによってメモリセルを電気的に消去できる(すなわち、ファウラ・ノルドハイム・トンネリング)。通常、EEPROMはバイト単位で消去可能である。フラッシュEEPROMの場合、メモリが一度にまるごと、または一度に1ブロック以上が電気的に消去され、ブロックは512バイト以上のメモリを構成することがある。
【0007】
不揮発性メモリセルの例
メモリ装置は通常、1つ以上のメモリチップをカード上に実装させる。それぞれのメモリチップは、復号器や消去、書き込み、および読み出し回路等の周辺回路によって支援されるメモリセルアレイを備える。より精緻なメモリ装置には、知的で高度なメモリ操作とインターフェイスを実行するコントローラも付属される。現在、商業的に成功を収めた不揮発性の固体メモリ装置が数多く使われている。これらのメモリ装置には様々なタイプのメモリセルが採用され、各種のメモリセルは1つ以上の電荷蓄積素子を持つ。
【0008】
図1A〜図1Eは、様々な不揮発性メモリセルの例を概略的に示すものである。
図1Aは、フローティングゲートで電荷を蓄積するEEPROMセルの形をとる不揮発性メモリを概略的に示す。電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)はEPROMに似た構造を持つほか、適度の電圧が印加されたときにフローティングゲートで電気的に電荷を装填し除去するメカニズムが用意され、紫外線に晒す必要はない。米国特許第5,595,924号(特許文献1)には、そのようなセルの例とこの製造方法が記載されている。
【0009】
図1Bは、選択ゲートとコントロールゲートまたはステアリングゲートの両方を具備するフラッシュEEPROMセルを概略的に示す。メモリセル10は、ソース14およびドレイン16拡散層間に「分割チャネル」12を具備する。セルは、2つの直列トランジスタT1およびT2によって事実上形成される。T1は、フローティングゲート20とコントロールゲート30とを具備するメモリトランジスタとして機能する。フローティングゲートで選択可能な電荷量を蓄積できる。チャネルのT1部分を流れる電流量は、コントロールゲート30の電圧と介在するフローティングゲート20に存在する電荷量とに左右される。T2は、選択ゲート40を具備する選択トランジスタとして機能する。選択ゲート40の電圧によってT2がオンに切り替わると、チャネルのT1部分の電流はソースおよびドレイン間を通過できる。選択トランジスタは、コントロールゲートの電圧から独立したスイッチをソース−ドレインチャネル沿いに提供する。1つの利点として、フローティングゲートにおける電荷空乏(正)のためにゼロコントロールゲート電圧でなお導通するセルをオフに切り替えるのにこれを役立てることができる。もう1つの利点として、ソース側の注入プログラミングの実施がより容易になる。
【0010】
分割チャネルメモリセルのシンプルな実施形態では、図1Bにて点線で概略的に示すように、選択ゲートとコントロールゲートを同じワード線へ接続する。それには、チャネルの一部分の上に電荷蓄積素子(フローティングゲート)を配置し、もう1つのチャネル部分と電荷蓄積素子の上にはコントロールゲート構造(ワード線の一部)を配置する。これにより2つの直列トランジスタを持つセルが事実上形成され、一方のトランジスタ(メモリトランジスタ)は、電荷蓄積素子上の電荷量とワード線上の電圧との組み合わせによりチャネルのこの部分を流れる電流量を制御し、他方のトランジスタ(選択トランジスタ)はゲートとして機能するワード線だけを持つ。米国特許第5,070,032号(特許文献2)、第5,095,344号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)、および第5,661,053号(特許文献6)には、そのようなセルの例と、メモリシステムにおけるその使用と、製造方法とが記載されている。
【0011】
図1Bに示された分割チャネルセルのより精緻な実施形態では、選択ゲートとコントロールゲートが独立し、点線で結ばれていない。一実施例では、ワード線に対し垂直の制御(またはステアリング)線へ接続されたセルアレイに1列のコントロールゲートを具備する。その効果として、選択されたセルの読み出しやプログラミングにあたってワード線が2つの機能を同時に果たさずにすむ。2つの機能とは(1)選択トランジスタのゲートとしての役割を果たすことであって、選択トランジスタをオンおよびオフに切り替えるにあたって適度の電圧を必要とし、(2)ワード線と電荷蓄積素子との電界(容量)結合を通じて電荷蓄積素子の電圧を所望のレベルまで持っていくことである。多くの場合、これらの機能の両方を1つの電圧で適切に遂行するのは困難である。コントロールゲートと選択ゲートの個別制御により、ワード線は機能(1)を果たすだけでよく、機能(2)は追加の制御線が果たす。この能力により、対象となるデータにプログラミング電圧を適合させる高性能プログラミング設計が可能となる。フラッシュEEPROMアレイにおける独立のコントロール(ステアリング)ゲートの使用は、例えば米国特許第5,313,421号(特許文献7)および第6,222,762号(特許文献8)に記載されている。
【0012】
図1Cは、二重フローティングゲートと独立の選択ゲートおよびコントロールゲートとを具備するもう1つのフラッシュEEPROMセルを概略的に示す。メモリセル10は図1Bのものに類似するが、3つの直列トランジスタを事実上具備する。この種のセルでは、ソースおよびドレイン拡散層間のチャネル上に2つの蓄積素子(すなわちT1−左とT1−右)があり、その間には選択トランジスタT1がある。メモリトランジスタはフローティングゲート20’および20”とコントロールゲート30’および30”をそれぞれ具備する。選択トランジスタT2は選択ゲート40によって制御される。読み出しや書き込みにあたって、一度に1対のメモリトランジスタのいずれか一方のみにアクセスする。蓄積単位T1−左にアクセスするときにはT2とT1−右の両方がオンになり、チャネルのT1−左部分の電流はソースおよびドレイン間を通過できる。同様に、蓄積単位T1−右にアクセスするときにはT2とT1−左がオンに転換される。消去は、選択ゲートポリシリコンの一部分をフローティングゲートに近づけ、十分な正電圧(例えば、20V)を選択ゲートに印加し、フローティングゲートの中に蓄積された電子を選択ゲートポリシリコンへ抜けさせることによって達成する。
【0013】
図1Dは、NANDセルの形に構成された一連のメモリセルを概略的に示す。NANDセル50は、ソースおよびドレインによってデイジーチェーン方式で接続された一連のメモリトランジスタM1,M2・・・Mn(n=4,8,16またはそれ以上)からなる。1対の選択トランジスタS1、S2は、NANDセルのソース端子54とドレイン端子56を通じて外部に至るメモリトランジスタチェーンの接続を制御する。メモリアレイにおいてソース選択トランジスタS1がオンに転換されると、ソース端子はソース線へ結合される。同様に、ドレイン選択トランジスタS2がオンに転換されると、NANDセルのドレイン端子はメモリアレイのビット線へ結合される。チェーンの中の各メモリトランジスタは、所与の電荷量を蓄積して目的の記憶状態を表現する電荷蓄積素子を具備する。各メモリトランジスタのコントロールゲートは読み出し操作と書き込み操作を制御する。選択トランジスタS1、S2のコントロールゲートは、それぞれのソース端子54とドレイン端子56を介したNANDセルへのアクセスを制御する。
【0014】
NANDセルの中でアドレス指定されたメモリトランジスタを読み出したりプログラミング中にベリファイしたりするときには、そのコントロールゲートに適切な電圧を供給する。同時に、NANDセル50の中でアドレス指定されていない残りのメモリトランジスタは、それぞれのコントロールゲートに印加される十分な電圧によって完全にオンに転換される。かくして、個々のメモリトランジスタのソースからNANDセルのソース端子54にかけて導電経路ができあがり、個々のメモリトランジスタのドレインからセルのドレイン端子56にかけても同様である。米国特許第5,570,315号(特許文献9)、第5,903,495号(特許文献10)、第6,046,935号(特許文献11)には、そのようなNANDセル構造を持つメモリ装置が記載されている。
【0015】
図1Eは、誘電体層で電荷を蓄積する不揮発性メモリを概略的に示す。前述した導電性フローティングゲート素子の代わりに誘電体層を使用している。エイタンらの「NROM:新しい局限トラッピング、2ビット不揮発性メモリセル」,IEEE電子デバイスレター,21巻,11号,2000年11月,543〜545ページ(Eitan et al., “NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," IEEE Electron Device Letters, vol. 21, no.11, November 2000, pp. 543-545) には、このような誘電性蓄積素子を利用するメモリ装置が記載されている。ソースおよびドレイン拡散層間のチャネルにまたがってONO誘電体層が延在する。1データビットのための電荷はドレインに近い誘電体層に局在し、他のデータビットのための電荷はソースに近い誘電体層に局在する。例えば、米国特許第5,768,192号(特許文献12)および第6,011,725号(特許文献13)は2つの二酸化ケイ素層間にトラッピング誘電体をはさむ不揮発性メモリを開示している。多状態データ記憶は、誘電体の中で空間的に隔てられた電荷蓄積領域のバイナリ状態を別々に読み出すことによって実現する。
【0016】
メモリアレイ
メモリ装置は通常、行列に配置されワード線とビット線によってアドレス指定できる二次元メモリセルアレイを含む。このアレイはNORタイプかNANDタイプのアーキテクチャに従って形成できる。
【0017】
NORアレイ
図2は、NORメモリセルアレイの一例を示す。これまでNORタイプのアーキテクチャを持つメモリ装置は、図1Bまたは図1Cに描かれたタイプのセルを用いて実装されてきた。各メモリセル行はそれぞれのソースとドレインによってデイジーチェーン方式で接続される。この設計は仮想接地設計と呼ばれることがある。各々のメモリセル10はソース14と、ドレイン16と、コントロールゲート30と、選択ゲート40とを具備する。行内のセルの選択ゲートはワード線42へ接続される。列内のセルのソースおよびドレインは選択されたビット線34および36へそれぞれ接続する。メモリセルのコントロールゲートと選択ゲートを別々に制御する実施例では、ステアリング線36によって列内のセルのコントロールゲートが接続される。
【0018】
多くのフラッシュEEPROM装置は、コントロールゲートと選択ゲートがともに接続されたメモリセルを用いて実装される。この場合、ステアリング線が必要なく、ワード線が各行の全セルのコントロールゲートと選択ゲートを単に接続する。米国特許第5,172,338号(特許文献14)および第5,418,752号(特許文献15)にはこれらの設計の例が開示されている。これらの設計ではワード線は基本的に2つの役割、すなわち行選択の役割と、読み出しやプログラミングにあたって行内の全セルにコントロールゲート電圧を供給する役割とを果たす。
【0019】
NANDアレイ
図3は、メモリセルの、例えば図1Dに示されたような、NANDアレイの一例を示す。ビット線は各NANDセル列に沿ってNANDセルのドレイン端子56へ結合する。ソース線はNANDセル行の全ソース端子54へ接続する。さらに、行沿いのNANDセルのコントロールゲートは一連の対応するワード線へ接続する。接続されたワード線を通じてコントロールゲートに適切な電圧をかけて1対の選択トランジスタ(図1D参照)をオンに転換することにより、1行のNANDセル全体をアドレス指定できる。NANDセルからなるチェーンの中である1つのメモリトランジスタを読み出すときには、チェーンの中の残りのメモリトランジスタがそれぞれの関連するワード線を通じて強くオンに転換されるため、チェーンの中を流れる電流は基本的に、読み出し対象セルに蓄積される電荷レベルに左右される。米国特許第5,570,315号(特許文献9)、第5,774,397号(特許文献16)、および第6,046,935号(特許文献11)には、NANDアーキテクチャアレイの例とメモリシステムの一部としてのこの動作が記載されている。
【0020】
ブロック消去
電荷蓄積メモリ装置のプログラミングではさらに電荷を電荷蓄積素子に加える。このためプログラミング操作にあたって、電荷蓄積素子に既に存在する電荷を事前に除去(または消去)しなければならない。1つ以上のメモリセルブロックを消去するために消去回路(図示せず)を設ける。セルアレイ全体あるいはかなりのアレイのセル群を電気的に一斉に(すなわち、瞬時に)消去するEEPROM等の不揮発性メモリは、「フラッシュ」EEPROMと呼ばれる。消去の後にはセル群をプログラムできる。一斉に消去できるセル群は1つ以上のアドレス指定可能な消去単位からなる。消去単位またはブロックは通常1ページ以上のデータを蓄積し、このページがプログラミングと読み出しの単位となるが、1回の操作で2ページ以上をプログラムしたり読み出したりする場合もある。各ページは通常1セクタ以上のデータを格納し、このセクタのサイズはホストシステムによって決まる。磁気ディスクドライブの規格に従い512バイトのユーザデータからなるセクタはその一例であり、さらにここにユーザデータに関する、および/またはこれを格納するブロックに関する、何バイトかのオーバーヘッド情報が加わる。
【0021】
読み出し/書き込み回路
通常の2状態EEPROMセルでは、1つ以上の電流区切りレベルを設定して伝導ウィンドウを2つの領域に分割する。予め決められた一定の電圧を印加することによってセルを読み出すときには、そのソース/ドレイン電流を区切りレベル(または基準電流IREF )に比較することによって記憶状態を決定する。読み出される電流が区切りレベルのものより高ければ、セルは1つの論理状態(例えば、「0」状態)にあると判断する。他方、電流が区切りレベルのものに満たなければ、セルはもう1つの論理状態(例えば、「1」状態)にあると判断する。そのような2状態セルは1ビットのデジタル情報を蓄積する。外部からプログラムできる基準電流源は多くの場合、メモリシステムの一部として用意され、区切りレベル電流を生成する。
【0022】
メモリ容量を増やすため、フラッシュEEPROM装置の実装密度は半導体技術の進歩にともないどんどん高くなっている。各メモリセルで3状態以上を蓄積することによって蓄積容量を増やす方法もある。
【0023】
多状態またはマルチレベルEEPROMメモリセルの場合、伝導ウィンドウを複数の区切り点で3つ以上の領域に分割し、各セルで2ビット以上のデータを蓄積できる。したがって、EEPROMアレイで蓄積できる情報は、各セルで蓄積できる状態数にともない増加する。米国特許第5,172,338号(特許文献14)には、多状態またはマルチレベルメモリセルを備えるEEPROMまたはフラッシュEEPROMが記載されている。
【0024】
実際には、コントロールゲートに基準電圧が印加されるときにセルのソース電極とドレイン電極にかけて伝導電流を感知することによってセルの記憶状態を読み出すのが普通である。セルのフローティングゲート上の各電荷につき、一定の基準コントロールゲート電圧に対応する伝導電流を検出できる。同様に、対応するしきい値電圧ウィンドウや伝導電流ウィンドウはフローティングゲートにプログラムできる電荷の範囲によって決まる。
【0025】
分割された電流ウィンドウの中で伝導電流を検出する代わりに、コントロールゲートで検査の対象となる所与の記憶状態に対してしきい値電圧を設定し、伝導電流がしきい値電流より低いかまたは高いかを検出することも可能である。一実施例において、ビット線の静電容量を通じて放電する伝導電流のレートを調べることによってしきい値電流に対する伝導電流の検出を果たす。
【0026】
図4は、フローティングゲートが一度に選択的に蓄積できる4通りの電荷Q1〜Q4でソース−ドレイン電流ID とコントロールゲート電圧VCGとの関係を示すものである。実線で描かれた4本のID 対VCG曲線はメモリセルのフローティングゲートにプログラムできる4通りの電荷レベルを表し、4通りの記憶状態にそれぞれ相当する。一例として、セル集団のしきい値電圧ウィンドウの範囲は0.5Vから3.5Vにおよぶ。しきい値ウィンドウをそれぞれ0.5Vの間隔で5つの領域に分割することにより、6通りの記憶状態に区切ることができる。例えば、図に示されたように、2μAの基準電流IREF を使用するなら、Q1でプログラムされるセルは、その曲線がVCG=0.5Vおよび1.0Vで区切られたしきい値ウィンドウの領域内でIREF と交差するため、記憶状態「1」にあるとみなされる。同様に、Q4は記憶状態「5」にある。
【0027】
前の説明から分かるように、メモリセルで蓄積する状態が多ければ多いほどしきい値ウィンドウは細かく分割される。この場合、所要の分解能を達成するためにプログラミング操作と読み出し操作の精度を上げる必要がある。
【0028】
米国特許第4,357,685号(特許文献17)には2状態EPROMをプログラムする方法が開示され、この方法ではセルが特定の状態までプログラムされるときに相継ぐプログラミング電圧パルスを受け、その都度フローティングゲートに電荷が加わる。パルスの合間にセルの読み返しまたはベリファイを行い、区切りレベルに対するソース−ドレイン電流を確認する。所望の状態に達した電流がベリファイされるとプログラミングは停止する。使用するプログラミングパルストレインの周期または振幅は上げることができる。
【0029】
従来技術のプログラミング回路は、単純に消去または接地状態から目標状態に達するまでプログラミングパルスを印加しながらしきい値ウィンドウを通過していく。実際、十分な分解能を実現するには、分割された、または区切られた、各領域につき少なくとも5ステップ程度のプログラミングステップを踏む必要がある。2状態メモリセルならこの性能で許容される。しかし、多状態セルの場合、必要なステップ数が分割数にともない増加するため、プログラミングの精度または分解能を上げなければならない。例えば、16状態セルで目標状態までプログラムするには少なくとも平均40のプログラミングパルスが必要となる。
【0030】
図5は、読み出し/書き込み回路170から行デコーダ130と列デコーダ160とを通じて典型的なメモリアレイ構成100にアクセスするメモリ装置を概略的に示す。図2および図3との関係で説明したように、メモリアレイ100にあるメモリセルのメモリトランジスタは、選択されたワード線とビット線との組を通じてアドレス指定できる。アドレス指定されたメモリトランジスタのそれぞれのゲートに適切な電圧を印加するにあたって、行デコーダ130は1つ以上のワード線を選択し、列デコーダ160は1つ以上のビット線を選択する。読み出し/書き込み回路170は、アドレス指定されたメモリトランジスタの記憶状態を読み出すため、または書き込むため(プログラムするため)にある。読み出し/書き込み回路170は、ビット線を通じてアレイ内の記憶素子へ接続するいくつかの読み出し/書き込みモジュールを備える。
【0031】
図6Aは、個々の読み出し/書き込みモジュール190の概略的ブロック図である。読み出しやベリファイのときには基本的に、選択されたビット線を通じて接続するアドレス指定されたメモリトランジスタのドレインを流れる電流をセンス増幅器で判定する。この電流は、メモリトランジスタに蓄積された電荷とそのコントロールゲート電圧に左右される。例えば、多状態EEPROMセルでは数通りのレベルの1つまでフローティングゲートを荷電できる。4レベルセルならこれを使って2ビットのデータを蓄積できる。センス増幅器によって検出されたレベルはレベル−ビット変換ロジックによって1組のデータビットに変換されて、データラッチに蓄積される。
【0032】
読み出し/書き込み性能および精度に影響する要因
読み出しとプログラミングの性能を上げるために、アレイの中にある複数の電荷蓄積素子またはメモリトランジスタが並行して読み出されるか、またはプログラムされる。したがって、記憶素子からなる論理「ページ」の読み出しまたはプログラミングは一斉に行われる。既存のメモリアーキテクチャでは通常、1行の中にいくつかの交互ページがある。1ページの全記憶素子の読み出しまたはプログラミングは一斉に行われる。列デコーダは交互ページの各々を対応する読み出し/書き込みモジュールへ選択的に接続する。例えば、一実施例において、532バイト(512バイトにオーバーヘッドの20バイトを加えたもの)のページサイズでメモリアレイを設計する。各列にドレインビット線があって各行につき2つの交互ページがあるなら列は8,512列になり、各ページには4,256列が関連している。全ての偶数ビット線か奇数ビット線のいずれかを並行して読み出すかまたは書き込むために、接続可能な4,256個のセンスモジュールがある。こうして、1ページ4,256ビット(すなわち、532バイト)のデータを並行して記憶素子のページから読み出すかまたはページへプログラムする。読み出し/書き込み回路170を形成する読み出し/書き込みモジュールは様々なアーキテクチャに組むことができる。
【0033】
図5を参照し、読み出し/書き込み回路170は列をなす読み出し/書き込みスタック180に編成されている。それぞれの読み出し/書き込みスタック180は読み出し/書き込みモジュール190を積み重ねたものである。メモリアレイにおける列の間隔は、これを占有する1つまたは2つのトランジスタのサイズによって決まる。しかし、図6Aから見てとれるように、読み出し/書き込みモジュールの回路はさらに多くのトランジスタと回路素子で実装され、多数の列にわたってスペースを占めることが見込まれる。占有された列の中で2つ以上の列を処理するため、多数のモジュールを互いに積み重ねる。
【0034】
図6Bは、読み出し/書き込みモジュール190の積み重ねによって従来どおりに実装された図5の読み出し/書き込みスタックを示す。例えば、読み出し/書き込みモジュールが16列にわたって延在するなら、1スタック8読み出し/書き込みモジュールの読み出し/書き込みスタック180を使って8列を並列処理できる。この読み出し/書き込みスタックは列デコーダを通じて一群に沿って8つの奇数(1,3,5,7,9,11,13,15)列か8つの偶数(2,4,6,8,10,12,14,16)列に結合できる。
【0035】
既に述べたように、従来のメモリ装置は一度に全ての偶数ビット線または全ての奇数ビット線に対して大掛かりな並列処理を行うことによって読み出し/書き込み操作を向上させる。この1行2交互ページのアーキテクチャは、読み出し/書き込み回路ブロックの整合問題の緩和に役立つ。これはビット線間の容量結合をいかにコントロールするかにも左右される。1組の読み出し/書き込みモジュールを偶数ページまたは奇数ページのいずれかに多重化するにはブロックデコーダを使用する。こうすれば1組のビット線で読み出しかプログラミングが行われているときに互い違いの組のビット線を接地でき、隣接する結合は最小限に抑えられる。
【0036】
しかし、交互ページアーキテクチャは少なくとも3つの点で不利である。第1に、追加の多重化回路を必要とする。第2に、性能は遅い。ワード線によって接続されたメモリセルまたは1行のメモリセルで読み出しまたはプログラミングを完了するには、2回の読み出し操作か2回のプログラミング操作が必要となる。第3に、2つの隣接する電荷蓄積素子が別々のときにプログラムされる、例えば奇数ページと偶数ページとで別々にプログラムされる場合のフローティングゲートレベルにおける隣接する電荷蓄積素子間の電界結合等、好ましくない影響に対処するにあたって最適ではない。
【0037】
隣接する電界結合の問題はメモリトランジスタの間隔が狭まるにつれて顕著となる。メモリトランジスタではチャネル領域とコントロールゲートとの間に電荷蓄積素子が挟まれている。チャネル領域を流れる電流は、電荷蓄積素子とコントロールゲートの電界がもたらす最終的な電界と相関関係にある。メモリトランジスタは密度の増加にともない互いに接近する。隣接する電荷素子からの電界は影響を受けるセルの最終的な電界に大きく影響する。隣接する電界は、隣接する電荷蓄積素子にプログラムされる電荷に左右される。この摂動を招く電界には、隣接する電荷蓄積素子のプログラミング状態に応じて変化する動的な性質がある。隣接する電荷蓄積素子の状態の変化によっては、影響を受けるセルの読み出しに時間によってばらつきが生じるおそれがある。
【0038】
従来の交互ページアーキテクチャでは、隣接するフローティングゲート結合によって生じるエラーが激化する。偶数ページと奇数ページのプログラミングと読み出しは別々に行われるため、介在するページの状況次第では、ページがプログラムされるときの条件とページの読み返しが行われるときの条件がまったく異なることがある。多状態の実施例では、密度の増加にともない読み出しエラーが深刻化し、読み出し操作の精度を上げてしきい値ウィンドウの分割を粗くする必要がある。性能は損なわれ、多状態の実施例の潜在的な容量は制限される。
【0039】
米国公開特許出願第2004−0060031号(特許文献18)では、大きな読み出し/書き込み回路ブロックで対応するメモリセルブロックを並行して読み書きする、高性能でありながらコンパクトな不揮発性メモリ装置が開示されている。特に、このメモリ装置のアーキテクチャは読み出し/書き込み回路ブロックにおける冗長性を最小限に抑える。時分割方式で実質的に少数の共通部分とやり取りしながら並行して動作するブロック読み出し/書き込みモジュールの中核部分に読み出し/書き込みモジュールブロックを再配分することにより、スペースと電力を大幅に節約する。特に、複数のセンス増幅器とデータラッチとの間にある読み出し/書き込み回路の中では共通のプロセッサによってデータ処理が行われる。
【0040】
このように高性能・高容量の不揮発性メモリが一般に求められている。特に、読み出しとプログラミングの性能が高く、コンパクトで効率的でありながら読み出し/書き込み回路におけるデータ処理に幅広く対応する改良されたプロセッサを備えるコンパクトな不揮発性メモリが求められている。
【特許文献1】米国特許第5,595,924号
【特許文献2】米国特許第5,070,032号
【特許文献3】米国特許第5,095,344号
【特許文献4】米国特許第5,315,541号
【特許文献5】米国特許第5,343,063号
【特許文献6】米国特許第5,661,053号
【特許文献7】米国特許第5,313,421号
【特許文献8】米国特許第6,222,762号
【特許文献9】米国特許第5,570,315号
【特許文献10】米国特許第5,903,495号
【特許文献11】米国特許第6,046,935号
【特許文献12】米国特許第5,768,192号
【特許文献13】米国特許第6,011,725号
【特許文献14】米国特許第5,172,338号
【特許文献15】米国特許第5,418,752号
【特許文献16】米国特許第5,774,397号
【特許文献17】米国特許第4,357,685号
【特許文献18】米国公開特許出願第2004−0060031号
【特許文献19】米国公開特許出願第2004−0109357号
【特許文献20】米国特許出願第11/026,536号
【特許文献21】“Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories" という米国特許出願
【特許文献22】2005年3月16日に出願された“Non-Volatile Memory and Method with Power-Saving Read and Program-Verify Operations" という米国特許出願
【特許文献23】米国特許出願第11/013,125号
【特許文献24】米国特許出願第10/846,289号
【特許文献25】米国特許出願第11/022,462号
【特許文献26】米国特許出願第10/915,039号
【特許文献27】米国特許第6,266,273号
【特許文献28】米国公開特許出願第2004−0109362号
【特許文献29】米国特許第6,657,891号
【特許文献30】米国特許出願第11/323,596号
【特許文献31】米国特許第7,012,835号
【特許文献32】米国特許出願第11/099,049号
【非特許文献1】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)
【発明の開示】
【0041】
本発明の一態様に従い、内部メモリが読み出し、プログラミング、消去といった別の操作に従事しているときにメモリでデータを出し入れできるキャッシュ操作を提示する。特に、そのようなキャッシュ操作を可能にするデータラッチの構成とその使用方法を説明する。
【0042】
データラッチをいくつかの物理ページで共用するアーキテクチャを説明する。例えば、読み出し/書き込みスタックはメモリのビット線と関連し、多数のワード線によって共用される。メモリである1つの操作が進行しているときに、これらのラッチのいずれかが空いているなら、それらのラッチを使って同じワード線か別のワード線における先々の操作に向けてデータをキャッシュでき、転送は別の操作の背後に潜在化し時間の節約になる。これは、異なる操作または操作段階をパイプラインする量を増やすことによって性能を上げることができる。一例において、キャッシュプログラミング操作で、ある1つのページデータをプログラムしているときに別のページデータをロードすることによって転送時間を節約できる。もう1つの例として、代表的な実施形態において、ある1つのワード線に対する読み出し操作を別のワード線に対する書き込み操作に挿し込むことにより、データの書き込みが継続しているときには読み出しデータをメモリから出すことができる。
【0043】
種々の態様によると、第1のページデータで書き込み等の操作が進行しているときには、(例えば、ECC操作を行うため)同じブロックでワード線が異なる別のページからデータをトグルアウトできる。この操作段階間パイプラインにより、データ転送に要する時間を第1のページデータに対する操作の背後に潜在化させることができる。より一般的に、ある1つの操作の一部分を、通常ならばこれよりも長い、別の操作の段階の合間に差し込むことが可能となる。もう1つの例として、例えば消去操作の段階の合間に、例えば消去パルスの前に、あるいは消去の後半部分として使われるソフトプログラミング段階の前に、感知操作を挿し込む。
【0044】
主要な態様において、様々な段階をともなう比較的長い操作を実行する場合、読み出し/書き込みスタックの共用ラッチが使用可能であれば、これを使って短い操作を割り込ませる。例えば、プログラミング操作や消去操作の中に読み出しを挿し込んだり、消去中にバイナリプログラミングを挿し込んだりすることができる。主要な代表的な実施形態において、同じ読み出し/書き込みスタックを共用するページのプログラミング操作のときに別のページデータをトグルイン/アウトし、例えばトグルアウトされ修正されるデータの読み出しは、データ書き込みのベリファイ段階に挿し込まれる。
【0045】
空きデータラッチを利用できる機会は数多くある。一般的に、1セル当たりnビットを蓄積するメモリの場合、各ビット線につきn個のデータラッチが必要となるが、これらのラッチの全てが常に必要となるわけではない。例えば、上位ページ/下位ページ形式でデータを蓄積する1セル当たり2ビットのメモリでは、下位ページをプログラムしているときに1つのデータラッチが必要となる(クイックパス書き込みを実施する場合、もう1つのラッチを使用する)。上位ページをプログラムしているときには2つのデータラッチが必要となる(クイックパス書き込みを実施する場合、第3のラッチを使用する)。より一般的に、多数のページを蓄積するメモリで全てのラッチが必要となるのは最上位ページをプログラムするときだけである。これにより、他のラッチはキャッシュ操作に利用できる。また、最上位ページの書き込み中でも、書き込み操作のベリファイ段階から種々の状態が排除されるにつれてラッチは解放される。具体的に、ベリファイすべき状態が最上位状態だけになると、ベリファイに必要なラッチは1つだけであり、他のラッチはキャッシュ操作に使うことができる。
【0046】
代表的な実施形態は、1セル当たり2ビットを蓄積し、各ビット線のデータにつき2つのラッチを具備し、さらにクイックパス書き込み用に1つのラッチを具備する4状態メモリに基づくものである。下位ページを書き込む操作、または消去する操作、または消去後にソフトプログラミングを行う操作は、基本的にはバイナリ操作であり、データラッチの一方は空いていてデータをキャッシュするために使うことができる。同様に、上位ページかフルシーケンスの書き込みを行う場合、最上位レベル以外はすべてベリファイ済みでベリファイすべき状態がただ1つになると、メモリはラッチを解放でき、解放されたラッチはデータのキャッシュに使うことができる。例えば、コピー操作等で1ページをプログラムする場合、例えば同じ組のビット線上の別のワード線で同じ組のデータラッチを共用する別のページの読み出しは、書き込みのプログラミングパルスとベリファイとの間に差し挟むことができる。アドレスは書き込み対象のページに切り替えることができ、書き込みプロセスは中断したところから再開でき、やり直しの必要はない。書き込みが継続しているときには、割り込ませた読み出しのときにキャッシュしたデータをトグルアウトし、チェックまたは修正し、元に戻し、先行する書き込み操作が完了した時点で書き戻すことができる。この種のキャッシュ操作では、最初のページのプログラミングの背後に2番目のページデータのトグルアウトと修正を潜在化させることができる。
【0047】
読み出し中のキャッシュ操作−バックグラウンド読み出し・書き込み操作
本発明の一態様に従い、多状態メモリセルでメモリセル間の摂動(ユーピン効果)を最小限に抑える必要がある場合、読み出しキャッシュ方式を提供する。読み出しデータのキャッシュ方式では、近接する物理ページまたはワード線からのデータに補正が左右される読み出し操作であっても、メモリコアから現在のページを感知しているときにデータラッチとI/Oバスを効率よく使用して、読み出し済みのページをトグルアウトする。
【0048】
好適な実施例において、「LM」符号化によって符号化され読み出しにあたってルックアヘッド(「LA」)補正を行うメモリに効率的な読み出しキャッシング方式を使用する。「LM」符号化と「LA」補正にはいずれも、読み出しデータの単なるトグル操作のほかに追加のラッチおよびバス活動が必要となる。現在のワード線における現在のページの読み出しに先立ち前もって必要なデータの読み出しを近傍のワード線で実行しなければならない場合でも、前もって必要な読み出しとそれにともなうI/Oアクセスを前のページを読み出すサイクル中に先回りして実行すれば、読み出し済みのページでI/Oアクセスが行われている間に現在の読み出しを実行できる。
【0049】
本発明のもうひとつの態様によると、複数のビットを一斉に感知するマルチビットのメモリセルページで読み出しキャッシング方式を実装する。好適な実施例において、全てのマルチビットを一斉に感知する。感知されたマルチビットのメモリセルページは各マルチビットにつき1つずつの複数のバイナリページに対応する。複数のサイクルでマルチビット感知が行われている間に各サイクルでバイナリページを出力する。この複数のページ数とマルチビットのビット数とは同じである。
【0050】
本発明のさらなる特徴と利点は、本発明の好適な実施形態に関する以降の説明を添付の図面と併せて解釈することによって理解される。
【発明を実施するための最良の形態】
【0051】
図7Aは、一群の分割読み出し/書き込みスタックを具備し本発明の改良されたプロセッサを実装するコンパクトなメモリ装置を概略的に示す。このメモリ装置は二次元のメモリセルアレイ300と、制御回路310と、読み出し/書き込み回路370とを含む。メモリアレイ300は、行デコーダ330を通じてワード線により、そして列デコーダ360を通じてビット線により、アドレス指定することができる。読み出し/書き込み回路370は一群の分割読み出し/書き込みスタック400として実装され、メモリセルからなるブロック(「ページ」とも呼ぶ)の読み出しまたはプログラミングを並行して行うことができる。ページは好適な実施形態において一連のメモリセル行から構成される。1行のメモリセルを多数のブロックまたはページに分割する別の実施形態において、個々のブロックに向けて読み出し/書き込み回路370を多重化するためのブロックマルチプレクサ350を設ける。
【0052】
制御回路310は読み出し/書き込み回路370と協働しながらメモリアレイ300でメモリ操作を遂行する。制御回路310は状態マシン312と、オンチップアドレスデコーダ314と、電力制御モジュール316とを含む。状態マシン312はメモリ操作のチップレベル制御を提供する。オンチップアドレスデコーダ314は、ホストまたはメモリコントローラで使われるアドレスとデコーダ330および360で使われるハードウェアアドレスとの間でアドレスインターフェイスを提供する。電力制御モジュール316は、メモリ操作中にワード線とビット線へ供給される電力と電圧を制御する。
【0053】
図7Bは、図7Aに示されたコンパクトなメモリ装置の好適な構成を示す。様々な周辺回路によるメモリアレイ300へのアクセスは、アレイの両側で対称的に行われるため、アクセス線と回路はそれぞれの側で半分に減る。行デコーダは行デコーダ330Aおよび330Bに分かれ、列デコーダは列デコーダ360Aおよび360Bに分かれる。メモリセル行を多数のブロックに分割する実施形態では、ブロックマルチプレクサ350がブロックマルチプレクサ350Aおよび350Bに分かれる。同様に、読み出し/書き込み回路は、下からビット線へ接続する読み出し/書き込み回路370Aと、アレイ300の上からビット線へ接続する読み出し/書き込み回路370Bとに分かれる。かくして、読み出し/書き込みモジュールの密度、したがって分割読み出し/書き込みスタック400の密度は、基本的には半減する。
【0054】
図8は、図7Aに示された読み出し/書き込みスタックにおける基本コンポーネントの一般的な構成を概略的に示す。本発明の一般的なアーキテクチャによると、読み出し/書き込みスタック400は、k本のビット線を感知するセンス増幅器212のスタックと、I/Oバス231を通じてデータを入出力するI/Oモジュール440と、入出力データを蓄積するデータラッチ430のスタックと、読み出し/書き込みスタック400でデータを処理し蓄積する共通プロセッサ500と、スタックコンポーネント間で通信を行うためのスタックバス421とを備える。読み出し/書き込み回路370間のスタックバスコントローラは、線411を通じて読み出し/書き込みスタック内の様々なコンポーネントを制御するための制御信号とタイミング信号とを提供する。
【0055】
図9は、図7Aおよび図7Bに示された読み出し/書き込み回路における読み出し/書き込みスタックの好適な構成を示す。各々の読み出し/書き込みスタック400はk本のビット線からなるグループに同時に働きかける。ページがp=r*k本のビット線を持つならば、r個の読み出し/書き込みスタック400−1・・・400−rがある。
【0056】
分割読み出し/書き込みスタック400からなる一群全体が並行して動作することにより、行に沿ってp個のセルからなるブロック(またはページ)の読み出しまたはプログラミングを並行して行うことができる。よって、セルの行全体に対してp個の読み出し/書き込みモジュールがある。各スタックでk個のメモリセルを処理するなら、バンク内の合計読み出し/書き込みスタックの数はr=p/kで求められる。例えば、バンク内のスタック数がrならp=r*kである。一例として、メモリアレイはp=512バイト(512×8ビット)、k=8を保持し、したがってr=512を保持する。好適な実施形態において、ブロックはセルの行全体である。別の実施形態において、ブロックは行内のセルの小集団である。セルの小集団は、例えば行全体の2分の1であったり、行全体の4分の1であったりする。セルの小集団は連続するセルであったり、1つおきのセルであったり、所定のセル数おきのセルであったりする。
【0057】
それぞれの読み出し/書き込みスタックには、例えば400−1の中には、基本的にk個のメモリセルからなるセグメントを並行して処理する212−1から212−kまでのセンス増幅器からなるスタックがある。米国公開特許出願第2004−0109357号(特許文献19)には好適なセンス増幅器が開示され、その全体が本願明細書において参照により援用されている。
【0058】
スタックバスコントローラ410は線411を通じて読み出し/書き込み回路370へ制御信号とタイミング信号を提供する。スタックバスコントローラそのものは線311を介してメモリコントローラ310に従属する。読み出し/書き込みスタック400内の通信は相互接続スタックバス431によって行われ、スタックバスコントローラ410によって制御される。制御線411は、スタックバスコントローラ410から読み出し/書き込みスタック400−1のコンポーネントにかけて制御信号とクロック信号を提供する。
【0059】
スタックバスは、好適な実施形態において、共通プロセッサ500とセンス増幅器のスタック212との間の通信のためのSABus422と、プロセッサとデータラッチのスタック430との間の通信のためのDBus423とに分かれる。
【0060】
データラッチのスタック430は、430−1から430−kまでのデータラッチを含み、各メモリセルにつき1つずつスタックに関連付けられている。I/Oモジュール440は、データラッチがI/Oバス231を通じて外部とデータをやり取りできるようにする。
【0061】
共通プロセッサは、エラー状態をはじめとするメモリ操作のステータスを伝えるステータス信号を出力する出力507をも含む。このステータス信号は、Wired−Or構成でFLAG BUS 509へ結合されたn−トランジスタ550のゲートを駆動するために使われる。FLAG BUSは好ましくは、コントローラ310によって予め荷電され、いずれかの読み出し/書き込みスタックによってステータス信号がアサートされるときにプルダウンされる。
【0062】
図10は、図9に示された共通プロセッサの改良された実施形態を示す。共通プロセッサ500は外部回路との通信のためのプロセッサバスPBUS 505と、入力ロジック510と、プロセッサラッチPLatch 520と、出力ロジック530とを備える。
【0063】
入力ロジック510はPBUSからデータを受信し、信号線411を通じてスタックバスコントローラ410から届く制御信号に応じて論理状態「1」、「0」、または「Z」(浮遊)のいずれか1つに変換されたデータをBSIノードへ出力する。セット/リセットラッチPLatch 520はBSIをラッチし、MTCHおよびMTCH* として一対の相補出力信号をもたらす。
【0064】
出力ロジック530はMTCH信号とMTCH* 信号を受信し、信号線411を通じてスタックバスコントローラ410から届く制御信号に応じて論理状態「1」、「0」、または「Z」(浮遊)のいずれか1つに変換されたデータをPBUS 505に出力する。
【0065】
共通プロセッサ500は所与のメモリセルに関係するデータを常に処理する。例えば、図10は、ビット線1へ結合されたメモリセルの場合を示している。対応するセンス増幅器212−1はノードを備え、ここにセンス増幅器データが現れる。このノードは好適な実施形態において、データを蓄積するSAラッチ214−1の形をとるものとする。同様に、対応する1組のデータラッチ430−1はビット線1へ結合されたメモリセルに関連する入力または出力データを蓄積する。好適な実施形態において、1組のデータラッチ430−1はnビットのデータを蓄積するにあたって十分なデータラッチ434−1・・・434−nを備える。
【0066】
共通プロセッサ500のPBUS 505は、一対の相補信号SAPおよびSANによって転送ゲート501がイネーブルになるとSBUS 422を通じてSAラッチ214−1にアクセスする。同様に、一対の相補信号DTPおよびDTNによって転送ゲート502がイネーブルになると、PBUS 505はDBUS 423を通じて1組のデータラッチ430−1にアクセスする。信号SAP、SAN、DTP、およびDTNは、スタックバスコントローラ410からの制御信号の一部として明示されている。
【0067】
図11Aは、図10に示された共通プロセッサの入力ロジックの好適な実施形態を示す。入力ロジック520はPBUS 505でデータを受信し、出力BSIは制御信号次第で同じになるか、反転するか、浮遊する。出力BSIノードは基本的に、転送ゲート522の出力か、Vddにかけて直列するpトランジスタ524および525を備えるプルアップ回路か、接地にかけて直列するnトランジスタ526および527を備えるプルダウン回路に左右される。プルアップ回路のゲートは、信号PBUSおよびONEによってそれぞれ制御されるpトランジスタ524および525へ至る。プルダウン回路のゲートは、信号ONEB<1>およびPBUSによってそれぞれ制御されるnトランジスタ526および527へ至る。
【0068】
図11Bは、図11Aの入力ロジックの真偽表を示す。ロジックは、PBUSと制御信号ONE、ONEB<0>、ONEB<1>とによって制御され、これらの制御信号はスタックバスコントローラ410からの制御信号の一部である。基本的には3つの転送モードPASSTHROUGH、INVERTED、およびFLOATEDをサポートする。
【0069】
BSIが入力データと同じになるPASSTHROUGHモードの場合、信号ONEは論理「1」、ONEB<0>は「0」、ONEB<1>は「0」となる。これによりプルアップまたはプルダウンはディスエーブルになるが転送ゲート522はイネーブルになり、データはPBUS 505のデータが出力523へ引き渡される。BSIが入力データの逆になるINVERTEDモードの場合、信号ONEは「0」、ONEB<0>は「1」、ONEB<1>は「1」となる。これにより転送ゲート522はディスエーブルになる。また、PBUSが「0」ならプルダウン回路はディスエーブルになり、プルアップ回路はイネーブルになり、結果的にBSIは「1」になる。同様に、PBUSが「1」なら、プルアップ回路はディスエーブルになり、プルダウン回路はイネーブルになり、結果的にBSIは「0」になる。最後に、FLOATEDモードの場合、信号ONEが「1」、ONEB<0>が「1」、ONEB<1>が「0」となって出力BSIを浮遊させることができる。FLOATEDモードは完全を期するために記載されているが、実際には使われない。
【0070】
図12Aは、図10に示された共通プロセッサの出力ロジックの好適な実施形態を示す。入力ロジック520からBSIノードに至る信号はプロセッサラッチPLatch 520でラッチする。出力ロジック530はPLatch 520の出力からデータMTCHおよびMTCH* を受信し、制御信号に応じてPASSTHROUGHモードか、INVERTEDモードか、FLOATEDモードのいずれかでPBUSに出力する。換言すると、4つのブランチはPBUS 505の駆動装置として機能し、これをHIGH、LOW、またはFLOATED状態まで能動的に引き上げる。これはPBUS 505の4つのブランチ回路によって、具体的には2つのプルアップ回路と2つのプルダウン回路とによって、達成する。第1のプルアップ回路はVddにかけて直列するpトランジスタ531および532を備え、MTCHが「0」のときにPBUSをプルアップできる。第2のプルアップ回路は接地にかけて直列するpトランジスタ533および534を備え、MTCHが「1」のときにPBUSをプルダウンできる。同様に、第1のプルダウン回路はVddにかけて直列するnトランジスタ535および536を備え、MTCHが「0」のときにPBUSをプルダウンできる。第2のプルアップ回路は接地にかけて直列するnトランジスタ537および538を備え、MTCHが「1」のときにPBUSをプルアップできる。
【0071】
本発明の一特徴として、プルアップ回路はPMOSトランジスタで構成し、プルダウン回路はNMOSトランジスタで構成する。NMOSによるプルはPMOSのものより遥かに強いため、どんな競合においてもプルダウンは常にプルアップに勝る。換言すると、ノードまたはバスはデフォルトとして常にプルアップまたは「1」状態にでき、必要とあらば、常にプルダウンにより「0」状態に反転させることができる。
【0072】
図12Bは、図12Aの出力ロジックの真偽表を示す。ロジックは、入力ロジックからラッチされるMTCH、MTCH* と、制御信号PDIR、PINV、NDIR、NINVとによって制御され、これらの制御信号はスタックバスコントローラ410からの制御信号の一部である。4つの動作モードPASSTHROUGH、INVERTED、FLOATED、およびPRECHARGEをサポートする。
【0073】
FLOATEDモードでは4つのブランチがすべてディスエーブルになる。これは信号PINV=1、NINV=0、PDIR=1、NDIR=0によって達成され、これらはデフォルト値でもある。PASSTHROUGHモードでMTCH=0ならば、PBUS=0が要求される。nトランジスタ535および536を備えるプルダウンブランチだけをイネーブルし、NDIR=1以外の制御信号はどれもデフォルト値とする。MTCH=1ならば、PBUS=1が要求される。pトランジスタ533および534を備えるプルアップブランチだけをイネーブルし、PINV=0以外の制御信号はどれもデフォルト値とする。INVERTEDモードでMTCH=0ならば、PBUS=1が要求される。pトランジスタ531および532を備えるプルアップブランチだけをイネーブルし、PDIR=0以外の制御信号はどれもデフォルト値とする。MTCH=1ならば、PBUS=0が要求される。nトランジスタ537および538を備えるプルダウンブランチだけをイネーブルし、NINV=1以外の制御信号はどれもデフォルト値とする。PRECHARGEモードでは、PDIR=0とPINV=0の制御信号設定でMTCH=1ならば、pトランジスタ531および532を備えるプルアップブランチをイネーブルするか、またはMTCH=0ならば、pトランジスタ533および534を備えるプルアップブランチをイネーブルする。
【0074】
2004年12月29日に出願された米国特許出願第11/026,536号(特許文献20)では共通プロセッサの動作がより詳しく説明されている。この特許出願は、その全体が本願明細書において参照により援用されている。
【0075】
キャッシュ操作におけるデータラッチの使用
本発明のいくつかの態様において、読み出し、書き込み、消去といった他の作業に内部メモリが従事しているときにデータを出し入れするキャッシュ操作にあたって、図10で前述した読み出し/書き込みスタックのデータラッチを利用する。前述したアーキテクチャではデータラッチを多数の物理ページで共用する。例えば、ビット線の読み出し/書き込みスタックを全てのワード線で共用すれば、ある1つの操作が進行しているときにこれらのラッチのいずれかが空いているなら、それらのラッチを使って同じワード線か別のワード線における先々の操作に向けてデータをキャッシュでき、転送は別の操作の背後に潜在化できるため時間の節約になる。異なる操作または操作段階をパイプラインする量を増すことによって性能を上げることができる。例えば、キャッシュプログラミング操作では、1ページデータをプログラムしているときに別のページデータをロードして転送時間を節約できる。もう1つの例として、代表的な実施形態において、ある1つのワード線における読み出し操作が別のワード線における書き込み操作に挿入され、データの書き込みを継続しながら読み出しデータをメモリから転送することができる。
【0076】
このため、第1のページデータで書き込み、または他の操作が進行しているときには、(例えば、ECC操作を行うため)同じブロックでワード線が異なる別のページからデータをトグルアウトできる。この操作段階間パイプラインにより、データ転送に要する時間は第1のページデータに対する操作の背後に潜在化させることができる。より一般的に、ある1つの操作の一部分を、通常ならばこれよりも長い、別の操作の段階の合間に差し込むことが可能となる。もう1つの例として、例えば消去操作の段階の合間に、例えば消去パルスの前に、あるいは消去の後半として使われるソフトプログラミング段階の前に、感知操作を挿し込む。
【0077】
一部の操作に要する相対的な時間を説明するため、前述したシステムにおける代表的な時間値のセットを、
データ書き込み:〜700μs(下位ページ〜600μs、上位ページ800μs)
バイナリデータ書き込み:〜200μs
消去:〜2,500μs
読み出し:〜20−40μs
読み出しとデータのトグルアウト:2KBデータ、〜80μs、
4KB〜160μs、8KB〜320μs
とする。
これ以降、タイミング図にかかわる相対的な時間を説明する際には、これらの値を基準として使うことができる。主要な態様において、様々な段階をともなう長い操作を実行する場合、読み出し/書き込みスタックの共用ラッチが使用可能であれば、これを使って短い操作を割り込ませる。例えば、プログラミング操作や消去操作の中に読み出しを挿し込んだり、消去中にバイナリプログラミングを挿し込んだりすることができる。主要な代表的な実施形態において、同じ読み出し/書き込みスタックを共用するページのプログラミング操作のときに別のページデータをトグルイン/アウトし、例えばトグルアウトされ修正されるデータの読み出しは、データ書き込みのベリファイ段階に挿し込む。
【0078】
空きデータラッチを利用できる機会は数多くある。一般的に、1セル当たりnビットを蓄積するメモリの場合、各ビット線につきn個のデータラッチが必要となるが、これらのラッチの全てが常に必要となるわけではない。例えば、上位ページ/下位ページ形式でデータを蓄積する1セル当たり2ビットのメモリでは、下位ページをプログラムしているときに2つのデータラッチが必要となる。より一般的に、多数のページを蓄積するメモリで全てのラッチが必要となるのは最上位ページをプログラムするときだけである。これにより、他のラッチはキャッシュ操作に利用できる。また、最上位ページの書き込み中でも、書き込み操作のベリファイ段階から種々の状態が排除されるにつれてラッチは解放される。具体的に、ベリファイすべき状態が最上位状態だけになると、ベリファイに必要なラッチは1つだけであり、他のラッチはキャッシュ操作のために使うことができる。
【0079】
以降の説明は、1セル当たり2ビットを蓄積し、各ビット線のデータにつき2つのラッチを具備し、さらにクイックパス書き込み用に1つのラッチを具備する4状態メモリに基づくものであり、このメモリは本願と同時に出願され、前に援用されている「不揮発性メモリの多段階プログラミングにおけるデータラッチの使用 (Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories)」という米国特許出願(特許文献21)で説明されている。下位ページを書き込む操作、または消去する操作、または消去後にソフトプログラミングを行う操作は、基本的にはバイナリ操作であり、データラッチの一方は空いていてデータをキャッシュするために使うことができる。同様に、上位ページかフルシーケンスの書き込みを行う場合、最上位レベル以外はすべてベリファイ済みでベリファイすべき状態がただ1つになると、メモリはラッチを解放でき、解放されたラッチはデータのキャッシュに使うことができる。例えば、コピー操作等で1ページをプログラムする場合、例えば同じ組のビット線上の別のワード線で同じ組のデータラッチを共用する別のページの読み出しは、書き込みのベリファイ段階に差し挟むことができる。アドレスは書き込み対象のページに切り替えることができ、書き込みプロセスは中断したところから再開でき、やり直しの必要はない。書き込みが継続しているときには、割り込ませた読み出しのときにキャッシュしたデータをトグルアウトし、チェックまたは修正し、元に戻して、先行する書き込み操作が完了した時点で書き戻すことができる。この種のキャッシュ操作では、最初のページのプログラミングの背後に2番目のページデータのトグルアウトと修正を潜在化させることができる。
【0080】
第1の例として、2ビットメモリのキャッシュプログラミング操作は単独ページ(下位ページ/上位ページ形式)プログラミングモードで行われる。図13は、図10を簡素化したものであって、2ビットの実施形態の説明にかかわるいくつかの特定の要素を示し、説明を簡潔にするためにその他の要素は省いてある。これはデータI/O線231へ接続されたデータラッチDL0 434−0と、線423によって共通プロセッサ500へ接続されたデータラッチDL1 434−1と、線435によって他のデータラッチとともに接続されたデータラッチDL2 434−2と、線422により共通プロセッサ500へ接続されたセンス増幅器データラッチDLS 214とを含む。図13の種々の要素には、下位ページをプログラムするときの処理に従ってラベル付けされている。ラッチDL2434−2は、本願と同時に出願された「不揮発性メモリの多段階プログラミングにおけるデータラッチの使用 (Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories)」という米国特許出願(特許文献21)で説明されているクイックパス書き込みモードにおける下位ベリファイ(VL)に使われ、レジスタの使用と、これを使用する場合のクイックパス書き込みの使用は任意であるが、この代表的な実施形態ではレジスタを使用する。
【0081】
下位ページのプログラミングは、以下のステップを含む。
(1)プロセスはデータラッチDL0 434−0をデフォルト値「1」にリセットすることから始まる。これは部分ページプログラミングを簡素化するための慣例であり、行の中で非プログラム対象セルとして選択されたセルのプログラミングは禁止される。
(2)I/O線231に沿ってDL0 434−0へプログラムデータを供給する。
(3)DL1 434−1とDL2 434−2へプログラムデータを転送する(このラッチを使用し、クイックパス書き込みを実施する場合)。
(4)DL1 434−1へプログラムデータを転送したら、データラッチDL0 434−0を「1」にリセットでき、プログラミング中はI/O線231に沿ってDL0 434−0へ次のデータページをロードでき、第1のページが書き込まれているときには第2のページをキャッシュできる。
(5)DL1 434−1に第1のページがロードされたらプログラミングを開始できる。DL1 434−1のデータはセルをロックアウトしてそれ以上プログラムできなくするために使用する。本願と同時に出願された「不揮発性メモリの多段階プログラミングにおけるデータラッチの使用 (Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories)」という米国特許出願(特許文献21)で説明されているように、DL2 434−2のデータは、クイックパス書き込みの第2段階への移行を左右する下位ベリファイロックアウトに使用する。
(6)プログラミングが始まると、プログラミングパルスの後に下位ベリファイの結果を使用してDL2 434−2を更新し、上位ベリファイの結果を使用してDL1 434−1を更新する。(これは、下位ページプログラミングがA状態に至る「従来の」符号化に基づく説明である。本願と同時に出願された「不揮発性メモリの多段階プログラミングにおけるデータラッチの使用 (Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories)」という米国特許出願(特許文献21)と2005年3月16日に出願された「節電読み出しおよびプログラム−ベリファイ操作を備える不揮発性メモリと方法 (Non-Volatile Memory and Method with Power-Saving Read and Program-Verify Operations)」という米国特許出願(特許文献22)では、この符号化とその他の符号化が詳しく説明されている。この説明を他の符号化へ敷衍することは容易い。)
(7)プログラミングが完了したか否かの判断にあたっては、セルの行(または適切な物理的プログラミング単位)のDL1 434−1レジスタだけをチェックする。
【0082】
下位ページを書き込んだら上位ページをプログラムできる。図14には図13と同じ要素が見られるが、下位ページデータの読み込みが行われる上位ページプログラミングのためのラッチ割り当てを示している。(この説明も従来の符号化に使用するもので、上位ページのプログラミングはBおよびC状態に至る。)上位ページのプログラミングは、以下のステップを含む。
(1)下位ページのプログラミングが終了したら、(実行されない)キャッシュプログラミングコマンドを保持する状態マシンコントローラからの信号により上位ページ(次のページ)の書き込みが始まる。
(2)DL0 434−0(下位ページ書き込みのステップ(3)でプログラムデータをロードしたところ)からDL1 434−1およびDL2 434−2へプログラムデータを転送する。
(3)アレイから下位ページデータを読み込み、DL0 434−0に入れる。
(4)DL1 434−1とDL2 434−2をそれぞれベリファイハイおよびベリファイローロックアウトデータとして再び使用する。プログラム基準データとしてラッチDL0 434−0(下位ページデータを保持)をチェックするが、ベリファイ結果によってこれを更新することはない。
(5)B状態のベリファイの一部として、下位ベリファイVBLでの感知の後にはDL2 434−2でデータが更新され、DL1 434−1のデータはハイベリファイVBH結果によって更新される。同様に、CベリファイにもVCL結果とVCH結果によりラッチDL2 434−2およびDL1 434−1を更新するための対応するコマンドがある。
(6)Bデータが完了したらC状態をベリファイするだけでよいので、下位ページデータ(基準としてDL0 434−0に保持されたもの)は必要ない。DL0 434−0を「1」にリセットし、I/O線231から別のページのプログラムデータをロードし、ラッチDL0 434−0にキャッシュできる。共通プロセッサ500はC状態のみのベリファイを指示できる。
(7)B状態について上位ページのプログラミングが完了したか否かを判断するにあたって、ラッチDL1 434−1およびDL0 434−0を両方ともチェックする。セルがB状態までプログラムされ、ベリファイするのがC状態だけになったら、ラッチDL1 434−1のデータだけをチェックし、プログラムされていないビットの有無を確認すればよい。
【0083】
このやり方のステップ6でラッチDL0 434−0がもはや必要でなく、次のプログラミング操作のためのデータをキャッシュするのに使えることに留意されたい。加えて、クイックパス書き込みを使用する実施形態で、第2の遅いプログラミング段階に入ったらラッチDL2 434−2もデータのキャッシュに使うことができるが、実際面でこれを使えるのはかなり短い時間に限られ、この特徴の実装にかかる追加のオーバーヘッドに見合わない。
【0084】
図15は、直前の数段落で説明した単一ページモードにおける数々のキャッシュプログラミングの態様を説明するのに使用することができる。図15は、メモリの内部で起こるイベント(下の「True Busy」線)とメモリの外側から見たもの(上の「Cache Busy」線)の相対的なタイミングを示している。
【0085】
時間t0 には、選択されたワード線(WLn)にプログラムする下位ページをメモリにロードする。ここでは第1の下位ページデータが予めキャッシュされていないと仮定するが、後続のページについてはキャッシュが行われる。下位ページのロードは時間t1 で完了し、メモリはこれの書き込みに着手する。この時点ではバイナリ操作と同じであり、ベリファイの必要があるのは状態Aだけであり(「pvfyA」)、データラッチDL0
434−0は次のページデータを受け付けることができ、これは時間t2 にWLnにプログラムする上位ページとして受け取られ、下位ページのプログラミング中にラッチDL0 434−0にキャッシュされる。時間t3 には上位ページのロードが完了し、t4 で下位ページのプログラミングが終わり次第直ちにこれをプログラムできる。このやり方では全てのデータ(下位および上位ページ)が物理的なプログラミング単位(ここではワード線WLn)に書き込まれるが、以下に説明するフルシーケンスの実施形態と違って、メモリは上位ページデータの書き込みに先立ち時間t3 から時間t4 まで待たなければならない。
【0086】
上位ページのプログラミングはt4 で始まり、当初B状態だけをベリファイし(「pvfyB」)、t5 にはC状態が加わる(「pvfyB/C」)。t6 でB状態のベリファイが終わるとベリファイはC状態だけとなり(「pvfyC」)、ラッチDL0 434−0は解放される。これにより、次のデータセットをキャッシュできるようになり、その一方で上位ページのプログラミングは完了する。
【0087】
指摘したように、図15に示されたキャッシュプログラミングをともなう単一ページアルゴリズムによると、たとえ時間t3 で上位ページデータが入手可能であっても、メモリは時間t4 まで待ったうえでこのデータの書き込みに着手しなければならない。例えば、米国特許出願第11/013,125号(特許文献23)で詳しく説明されているフルシーケンスのプログラミング動作に転換すれば、上位ページが入手可能となった時点で上位ページと下位ページデータを同時にプログラムできる。
【0088】
フルシーケンス(下位からフルへの転換)の書き込みにおけるキャッシュプログラミングアルゴリズムも前述したものと同様に、下位ページのプログラミングから始まる。したがって、ステップ(1)〜(4)は単一ページプログラミングモードにおける下位ページプロセスと同じになる。
(1)プロセスはデータラッチDL0 434−0をデフォルト値「1」にリセットすることから始まる。これは部分ページプログラミングを簡素化するための慣例であり、行の中で非プログラム対象セルとして選択されたセルのプログラミングは禁止される。
(2)I/O線231に沿ってDL0 434−0へプログラムデータを供給する。
(3)DL1 434−1とDL2 434−2へプログラムデータを転送する(このラッチを使用し、クイックパス書き込みを実施する場合)。
(4)DL1 434−1へプログラムデータを転送したら、データラッチDL0 434−0を「1」にリセットでき、プログラミング中はI/O線231に沿ってDL0 434−0へ次のデータページをロードでき、第1のページが書き込まれているときには第2のページをキャッシュできる。
第2のページデータがロードされた時点で、書き込みが行われている下位ページの上位に一致し、下位ページのプログラミングがまだ終わっていなければ、フルシーケンス書き込みへの転換を実施できる。ここでの説明はそのようなアルゴリズムにおけるデータラッチの使用に注目するものであり、詳細の多くは同一出願人による同時係属出願中の米国特許出願第11/013,125号(特許文献23)で詳しく説明されている。
(5)上位ページデータがラッチDL0 434−0にロードされた後にはアドレスブロックで判定を行い、2つのページが同じワード線と同じブロックにあって、一方のページが下位ページであり、他方のページが上位ページであるか否かをチェックする。そのとおりであり、下位ページプログラミングからフルシーケンスプログラミングへの転換が可能であれば、プログラミング状態マシンがこの転換をトリガする。移行は未決のベリファイが完了した後に行われる。
(6)プログラミングシーケンスが下位ページからフルシーケンスへ変化する場合、通常ならばいくつかの操作パラメータを変更する。代表的な実施形態において、以下のものを含む。
(i)下位ページデータがロックアウトされていなければ、パルスベリファイサイクル数の最大プログラムループが下位ページアルゴリズムのものからフルシーケンスのものに変更されるが、完了プログラムループ数は転換によりリセットされない。
(ii)図16に示されたように、プログラミング波形は下位ページプログラミングプロセスで使われる値VPGM_Lで始まる。プログラミング波形が進展して、フルシーケンスへの転換で上位ページプロセスで使う初期値VPGM_Uを超えると、階段はVPGM_Uまで戻り、そこから上昇を続ける。
(iii)プログラミングパルスの最大値とステップサイズを決定するパラメータは変更されない。
(7)マルチレベル符号化で正確なデータのプログラミングを保証するため、現在のメモリセル状態のフルシーケンス読み出しを行うべきである。こうすれば、フルシーケンスが始まるときに、下位ページのプログラミングで既にロックアウトされていて上位ページデータを考慮に入れるためさらなるプログラミングを必要とする状態のプログラミングが確保される。
(8)クイックパス書き込みを行う場合、上位ページのプログラムデータを反映させるため、A状態のみの下位ベリファイに前は基づいていたラッチDL2434−2のデータも更新する。
(9)マルチレベル、フルシーケンスのプログラミングアルゴリズムによるプログラミングが再開する。図16に示されたように、下位ページプロセスのプログラミング波形が上位ページの初期レベルを超えた場合、波形は転換時にこのレベルに戻される。
【0089】
図17は、下位ページからフルシーケンスへ転換する書き込みプロセスにかかわる相対的な時間を概略的に示す。そのプロセスは、時間t3 までは図15のプロセスで前述したとおりである。時間t3 で上位ページデータがロードされてフルシーケンスアルゴリズムへ移行するときにはベリファイプロセスが切り替わり、A状態にB状態が加わる。A状態がすべてロックアウトされると、ベリファイプロセスは時間t4 でB状態とC状態のチェックに切り替わる。t5 でB状態がベリファイ済みになるとチェックの必要があるのはC状態だけとなり、レジスタを解放することができて、プログラムする次のデータ、例えばCache Busy線に示すように次のワード線の下位ページ(WLn+1 )を、ロードできる。この次のデータセットは時間t6 でキャッシュ済みであり、t7 で前のセットのCデータのプログラミングが終わったら、この次のデータセットのプログラミングが始まる。また、ワード線WLn+1 上の下位ページ(ここでは下位ページ)をプログラムしているときには、空いているラッチDL0 434−0に次のデータ(対応する上位ページデータ等)をロードできる。
【0090】
フルシーケンス書き込みのときには、下位ページと上位ページの状態を個別に伝えるステータス報告を実施する。プログラミングシーケンスの終わりに未完了ビットがある場合、物理ページの走査を実行できる。第1の走査ではラッチDL0 434−0で未完了上位ページデータをチェックでき、第2の走査ではDL1 434−1で未完了下位ページデータをチェックできる。B状態のベリファイによってDL0 434−0とDL1 434−1のデータは両方とも変化するため、A状態のベリファイでビットのしきい値がAベリファイレベルより高い場合、DL1 434−1データ「0」は「1」に変更される。この事後ベリファイはプログラミングが不十分なBレベルがAレベルで合格するか否かをチェックするものであり、Aレベルで合格するならば、エラーは上位ページだけにあって下位ページにはなく、Aレベルで合格しないならば、下位ページと上位ページの両方にエラーがある。
【0091】
キャッシュプログラミングアルゴリズムを使用する場合、AおよびBデータがプログラムされた後にプログラミングを完了するためにラッチDL1 434−1へC状態が転送される。この場合、下位ページは既に合格したプログラミングを具備していて不良ビットはないため、下位ページについてラッチを走査する必要はない。
【0092】
本発明の別の代表的な実施形態は、ある1つの場所から別の場所へデータセットを移動するページコピー操作に関係する。2004年5月13日に出願された米国特許出願第10/846,289号(特許文献24)、2004年12月21日出願された米国特許出願第11/022,462号(特許文献25)、2004年8月9日に出願された米国特許出願第10/915,039号(特許文献26)、そして米国特許第6,266,273号(特許文献27)ではデータ再配置操作の様々な態様が説明されている。これらの特許出願および特許はいずれも、本願明細書において参照により援用されている。ある1つの場所から別の場所へコピーされるデータは多くの場合、チェックのため(例えば、エラーチェック)、更新のため(ヘッダ更新等)、または両方のため(検出されたエラーの訂正等)にトグルアウトされる。そのような転送によってガーベッジコレクション操作の日付も整理される。本発明の主要な態様において、空きレジスタへのデータの読み出しを書き込み操作のベリファイ段階に挿し込み、書き込み操作の継続中にこのキャッシュデータをメモリ装置の外に転送することにより、データをトグルアウトする時間を書き込み操作の背後に潜在化させることができる。
【0093】
これよりキャッシュページコピー操作の2つの代表的な実施形態を紹介する。いずれの場合でも、クイックパス書き込みを使用する実施例を説明する。図18は、プロセスの進行にともなうラッチの代表的な実施形態の処理を示す。
【0094】
下位ページに書き込みを行うキャッシュページコピーの第1のバージョンは以下のステップを含み、読み出しアドレスにはM,M+1・・・とラベル付けをし、書き込みアドレスにはN,N+1・・・とラベル付けをする。
(1)コピーするページ(「ページM」)をラッチDL1 434−1に読み込む。これは上位ページか下位ページのいずれかのデータとなる。
(2)次にページMをDL0 434−0へ転送する。
(3)次にDL0 434−0のデータをトグルアウトし、修正した上でラッチに戻す。
(4)ここでプログラミングシーケンスを開始できる。下位ページNに書き込むデータをDL1 434−1とDL2 434−2に転送した後、ラッチDL0 434−0はデータをキャッシュできる状態になる。この下位ページはプログラムされる。この実施形態の場合、プログラミング状態マシンはここで停止する。
(5)コピーする次のページをDL0 434−0に読み込む。ここでプログラミングを再開できる。ステップ(4)の終わりに停止した状態マシンはプログラミングシーケンスを最初から再開する。
(6)プログラミングは下位ページが完了するまで続く。
【0095】
下位ページに対する書き込みか上位ページに対する書き込みかは、コピー先ページアドレスによって決まる。プログラミングアドレスが上位ページアドレスなら、プログラミングシーケンスはプログラミングが完了するまで停止せず、ステップ(5)の読み出しは書き込みが完了した後に行われる。
【0096】
第2のキャッシュページコピー方法では、プログラム−ベリファイプロセスを中断して読み出し操作を挿し込み、その後書き込み操作は中断したところから再開できる。この交互感知操作の間に読み出されたデータは、再開した書き込み操作の継続中にトグルアウトできる。また、この第2のプロセスでベリファイの対象がC状態だけとなり、各ビット線で1つのラッチが解放されると、上位ページかフルシーケンスの書き込みプロセスでページコピーメカニズムを使用できる。第2のキャッシュページコピー操作の最初の3つのステップは第1の場合と同じだが、その後は異なる。これは以下のステップを含む。
(1)コピーするページ(「ページM」)をラッチDL1 434−1に読み込む。これは上位ページか下位ページのいずれかのデータとなる。
(2)次にページMのデータをDL0 434−0へ転送する。(前と同様、N等は書き込みアドレスを表し、M等は読み出しアドレスを表す。)
(3)次にDL0 434−0のデータをトグルアウトし、修正した上でラッチに戻す。
(4)状態マシンプログラミングは読み出しコマンドが入力されるまで無限待機状態に入り、その後には別のページ、例えば次のページM+1の、ラッチDL0 434−0への読み込みが始まる。
(5)ステップ(4)の読み込みが完了したら、アドレスはステップ(1−3)のデータをページN(ここでは下位ページ)にプログラムするためのワード線とブロックアドレスに戻り、プログラミングが再開する。
(6)ページM+1の読み出しが完了した後にはデータをトグルアウトし、修正し、元に戻すことができる。処理が完了し、2つのページが同じWL上の対応する上位および下位ページなら、フルシーケンス書き込み操作に転換できる。
(7)フルシーケンス書き込みでAレベルとBレベルが終了したら、前に説明した通常のキャッシュプログラミングと同様、DL0 434−0のデータをDL1 434−1へ転送し、別のページ(例えば、ページM+2)の読み出しコマンドを発行できる。単一ページからフルシーケンスへの転換がない場合、下位ページの書き込みが完了し、上位ページが始まる。Bレベル状態が完了した後にはDL0 434−0からDL1 434−1への同じデータ転送が行われ、状態マシンはページM+2の読み出しコマンドを待機する状態に入る。
(8)読み出しコマンドが届いたらアドレスが読み出しアドレスに切り替わり、次のページ(ページM+2)を読み出す。
(9)読み出しが完了したら、アドレスは書き込みが終了するまで以前の上位ページアドレス(プログラミングアドレスN+1)に戻される。
【0097】
前に指摘したように、代表的な実施形態ではそれぞれのメモリセルにプログラムされ得るデータ(ここでは2ビット)を保持するラッチDL0 434−0およびDL1 434−1に加えて、クイックパス書き込み手法の下位ベリファイにラッチDL2 434−2を使用する。下位ベリファイに合格したらラッチDL2 434−2も解放され、データのキャッシュに使うことができるが、代表的な実施形態では使わない。
【0098】
図19Aおよび図19Bは第2のキャッシュページコピー方法の相対的なタイミングを示すものであり、図19Bのアルゴリズムにはフルシーケンス書き込み転換があり、図19Aのアルゴリズムにはこれがない。(図19Aおよび図19Bはいずれも2つの部分からなり、第1の上部分はt0 に一致する縦の破線Aから始まってt5 に一致する縦の破線Bで終わり、第2の下部分は上部分の続きであって、t5 に一致する縦の破線Bから始まる。いずれにせよ、時間t5 のところにある線Bは上部分と下部分とで同じであって、2つの部分を2本の線で表示するための継ぎ目に過ぎない。)
【0099】
図19Aに示すプロセスは第1のページ(ページM)から始まり、これはこの例において下位ページとし、予めデータはキャッシュされていないものと仮定し、単一ページモードで動作し、下位ページの書き込みが終わるのを待ってから上位ページの書き込みが始まる。プロセスは時間t0 にページMの読み出しから始まり(ページM(L)感知)、これは、この符号化でAおよびCレベルの読み出しによって感知される下位である。時間t1 では読み出しが完了し、ページMをトグルアウトしてチェックまたは修正できる。時間t2 からはBレベルの読み出しによって次のページ(ここではページM+1、同じ物理下位ページMに対応する上位ページ)を感知し、プロセスは時間t3 で完了する。このとき、第1のページ(ページMからのもの)(下位)はメモリのページNに戻すことができ、ページM+1から読み出されたデータはラッチに保持され、外に転送して修正/チェックできる。これらのプロセスはいずれも同じ時間に、ここではt3 で、始めることができる。前述した典型的な時間値を使用すると、ページM+1のデータは時間t4 までにトグルアウトされ、修正されるが、フルシーケンス転換を実施しない実施形態の場合、メモリは時間t5 にページNが終了するのを待ってから、ページN+1への第2の読み出しページデータ(ページM+1からのもの)の書き込みを開始する。
【0100】
ページN+1は上位ページであり、この書き込みは当初Bレベルでのベリファイで始まるが、t6 にはCレベルが加わる。目標状態Bになった蓄積素子が時間t7 でロックアウトされると(または最大カウントに達すると)、B状態のベリファイはなくなる。前述したように、本発明のいくつかの主要な態様によると、このときデータラッチは解放され、進行中の書き込み操作は中断し、読み出し操作(中断したプログラム−ベリファイ操作とは異なるアドレスでの読み出し操作)を割り込ませ、その後書き込みは中断したところから再開し、再開した書き込み操作が進行しているときには割り込み書き込み操作を感知したデータをトグルアウトできる。
【0101】
時間t7 では割り込み書き込み操作を下位ページM+2のために実行する。この感知は時間t8 に終了し、ページN+1の書き込みは再開し、これと同時にページM+2のデータをトグルアウトし、修正する。この例ではページN+1のプログラミングが時間t9 に終了してから時間t10にページM+2が完了する。時間t10にはページM+2からのデータの書き込みを始めることもできるが、この実施形態では代わりにページM+3の読み出しを先に実行することにより、このページデータのトグルアウトと修正は、時間t11に始まるページN+2へのページM+2からのデータの書き込みの背後に潜在化させることができる。そして、プロセスは図の初期部分のとおりに継続するが、ページ番号はずれ、時間t11は時間t3 に相当し、時間t12は時間t4 に相当し、最後にコピープロセスは停止する。
【0102】
図19Bに示すプロセスも下位ページ、すなわち下位ページとして解釈するページMの読み出しから始まり、予めデータはキャッシュされていないものと仮定する。図19Bは、時間t4 にフルシーケンス書き込みへの転換を実施する点が図19Aと異なる。これによりプロセスはざっと図19Aの時間(t5 〜t4 )の分だけ速くなる。時間t4 (図19Aではt5 )には、前述したように、フルシーケンス転換にかかわる様々な変更を実施する。さもなくば、プロセスは図19Aのものに類似し、時間t7 およびt12間に見られる本発明の態様を含む。
【0103】
ページコピープロセスと、ここで説明するデータの書き込みをともなうその他の手法で、ある所与の時間にベリファイする状態を合理的に選ぶことができ、このことは米国公開特許出願第2004−0109362号(特許文献28)で説明されている。この公開特許出願は、本願明細書において参照により援用されている。例えばフルシーケンス書き込みで、書き込みプロセスはAレベルのみのベリファイから始めることができる。Aベリファイの後には、ビットをチェックして合格ビットの有無を確認する。合格したビットがあるなら、Bレベルをベリファイ段階に加えることができる。Aレベルベリファイは、これを目標値とする全蓄積単位のベリファイの後に解除される(または設定可能パラメータに基づく最大カウントを除く)。同様に、Bレベルベリファイの後にはCレベルのベリファイを加えることができ、Bレベルベリファイは、これを目標値とする全蓄積単位のベリファイの後に解除される(または設定可能パラメータに基づく最大カウントを除く)。
【0104】
プログラミング操作中のデータラッチにおけるキャッシュ操作
プログラミング操作とこれにともなう他の操作のためのバックグラウンドデータキャッシングを、好適な多状態の符号化との関係で説明する。
【0105】
4状態メモリのための好適な代表的「LM」符号化
図20A〜図20Eは、2ビット論理符号(「LM」符号)で符号化される4状態メモリのプログラミングと読み出しを示す。この符号は耐障害性を提供し、ユーピン効果による隣接するセル結合を緩和する。図20Aは、LM符号を使って各メモリセルで2ビットのデータを蓄積する場合の4状態メモリアレイのしきい値電圧分布を示す。LM符号化は、上位および下位ビットが状態「A」および「C」とで逆になる点が従来のグレイコードと異なる。米国特許第6,657,891号(特許文献29)に開示された「LM」符号は、電荷の大きな変化を要するプログラミング操作を回避することによって隣接するフローティングゲート間の電界効果結合を抑えるのに有利である。図20Bおよび図20Cに見られるように、それぞれのプログラミング操作は電荷蓄積ユニットの電荷に穏かな変化をもたらし、そのことはしきい値電圧VT の穏かな変化から明らかである。
【0106】
符号化は、下位および上位2ビットのプログラミングと読み出しを別々に行うようにする。下位ビットをプログラムするときのセルのしきい値レベルはプログラムされていない領域にとどまるか、またはしきい値ウィンドウの「下位中間」領域まで進む。上位ビットをプログラムするときには、これらの2領域のいずれかにあるしきい値レベルがさらにしきい値ウィンドウの4分の1に満たない若干高いレベルまで進む。
【0107】
図20Bは、LM符号を使用する既存の2ラウンドプログラミング方式における下位ページプログラミングを示す。耐障害性LM符号は基本的に、中間状態を通過するために上位ページプログラミングを回避する。したがって、第1ラウンドの下位ページプログラミングでは、広い分布の中でDA より高くDC より低いプログラムしきい値電圧により「プログラムされていない」記憶状態「U」を(x,0)で表される「中間」状態までプログラムすることによって論理状態(1,1)を中間状態(x,0)に推移させる。プログラミング中は境界DVA に対して中間状態をベリファイする。
【0108】
図20Cは、LM符号を使用する既存の2ラウンドプログラミング方式における上位ページプログラミングを示す。上位ページビットを「0」までプログラムする第2ラウンドで、下位ページビットが「1」ならば、「プログラムされていない」記憶状態「U」を「A」までプログラムすることにより論理状態(1,1)は(0,1)へ推移する。「A」までのプログラミング中のベリファイはDVA に対するベリファイである。下位ページビットが「0」なら、「中間」状態から「B」までプログラムすることによって論理状態(0,0)を得る。そのプログラム−ベリファイは境界DVB に対するベリファイである。同様に、下位ページが「0」までプログラムされるときに上位ページが「1」にとどまるならば、「中間」状態から「C」までプログラムすることによって「中間」状態から(1,0)へ推移する必要がある。そのプログラム−ベリファイは境界DVC に対するベリファイである。上位ページのプログラミングでは隣接する次の記憶状態までプログラムするだけなので、1つのラウンドから他のラウンドにかけて大量の電荷が変化することはない。「U」から大まかな「中間」状態に至る下位ページプログラミングは時間を節約するためのものである。
【0109】
好適な実施形態では前のセクションで言及されている「クイックパス書き込み」プログラミング手法を実施する。例えば、図20Cで当初のプログラム−ベリファイ(「pvfyAL 」)はDVA より低いマージンに設定されたDVALに対するプログラム−ベリファイである。DVALでセルのプログラム−ベリファイが終わると、以降のプログラミングのステップが細かくなり、プログラムベリファイ(pvfyA)はDVA に対するプログラム−ベリファイになる。そこで、セルがDALまでプログラム−ベリファイ済みであることを指示するため、さらなる遷移状態ALOW をプログラミング操作中にラッチしなければならない。同様に、「B」状態までのプログラミングでQPWを実施する場合、さらなる遷移状態BLOW をラッチする。BLOW のプログラム−ベリファイは境界DVBLに対するプログラム−ベリファイであり、「B」のプログラム−ベリファイは境界DVB に対するプログラム−ベリファイである。ALOW 状態かBLOW 状態にあるときに、対象となるメモリセルのプログラミングは、ビット線電圧の適切なバイアスにより、またはプログラミングパルスの修正により、より遅い(より細かい)モードに切り替わる。このように、最初は大きいプログラミングステップを使って速やかに収束でき、目標状態を通り越す危険はない。「QPW」プログラミングアルゴリズムは2005年12月29日に出願された「不揮発性メモリにおける改良されたプログラム−ベリファイ操作方法 (Methods for Improved Program-Verify Operations in Non-Volatile Memories)」という米国特許出願第11/323,596号(特許文献30)に開示されている。この特許出願は、その全体が本願明細書において参照により援用されている。
【0110】
図20Dは、LM符号によって符号化される4状態メモリの下位ビットを識別するにあたって必要となる読み出し操作を示す。復号化は上位ページがプログラムされたか否かに左右される。上位ページがプログラム済みなら、下位ページの読み出しにあたって境界しきい値電圧DB に対して1回の読み出し行程readBが必要になる。他方、上位ページがまだプログラムされていなければ、下位ページは「中間」状態(図20B)までプログラムされ、readBによってエラーが生じる。下位ページを読み出すには、境界しきい値電圧DA に対して1回の読み出し行程readAが必要になる。2通りの場合を区別するため、上位ページがプログラムされているときには上位ページ(通常はオーバーヘッドまたはシステム領域)にフラグ(「LM」フラグ)を書き込む。読み出しのときにはまず、上位ページがプログラム済みと仮定し、readB操作を実行する。LMフラグが読み出されるならこの仮定は正しく、読み出し操作は完了する。他方、最初の読み出しでフラグが生成されなかった場合、これは上位ページがプログラムされていないことを意味し、readA操作により下位ページを読み出されなければならない。
【0111】
図20Eは、LM符号によって符号化される4状態メモリの上位ビットを識別するにあたって必要となる読み出し操作を示す。この図から明らかなように、上位ページの読み出しにあたっては境界しきい値電圧DA およびDC に対して2行程の読み出しreadAおよびreadCがそれぞれ必要となる。同様に、上位ページの復号化も上位ページがまだプログラムされていなければ「中間」状態によって混乱する。ここでもLMフラグで上位ページがプログラム済みか否かを指示する。上位ページがプログラムされていなければ、上位ページデータがプログラムされていないことを意味する「1」に読み出しデータをリセットする。
【0112】
LM符号とQPWをともなうプログラミング操作中のラッチ使用
図10に示すように、読み出し/書き込みモジュールは各ビット線を通じて選択されたメモリアレイの行に沿って所与のメモリセルにアクセスする。p個の読み出し/書き込みモジュールが行内のメモリセルページに同時に働きかける。それぞれの読み出し/書き込みモジュールは、共通プロセッサ500に結合されたデータラッチ430−1とセンス増幅器212−1とを備える。センス増幅器212−1はビット線を通じてメモリセルの伝導電流を感知する。データは共通プロセッサ500によって処理され、データラッチ430−1に蓄積される。メモリアレイの外でのデータ交換はデータラッチに結合されたI/Oバス231によって行われる(図13および図14参照)。好適なアーキテクチャにおいて、行に沿って同じワード線を共有し、メモリアレイのp個の連続するビット線によってアクセスされる一連のp個のメモリセルによってページが形成される。代替のアーキテクチャでは、行沿いの偶数または奇数メモリセルのいずれかによってページが形成される。データラッチ430−1は、様々な必要なメモリ操作を実行するにあたって十分なDL1からDLnまでの最低n個のラッチを用いて実装する。図13および図14は、3つのラッチDL0〜DL2がある4状態メモリの好適な構成を示している。
【0113】
現在のページプログラミング中の次のページのプログラムデータのロード
図21は、下位ページプログラミングの概略的タイミング図であって、次のページのプログラムデータを未使用データラッチへロードするバックグラウンド操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。LM符号による下位ページプログラミングは図20Bに示され、消去済みまたはプログラムされていない状態(1,1)は「下位中間」または中間状態(X,0)までプログラムされる。この場合、中間「0」状態からプログラムされていない「1」状態を区別するにあたっては1つのビット、すなわち下位ビットで十分である。例えば、下位ビットはDL2(図13および図14参照)を使って蓄積できる。
【0114】
N番目のページデータを書き込む場合、ホストは最初にそのページデータを特定のアドレスに書き込むための書き込みコマンドをメモリに向けて発行する。その後には、メモリにプログラムするページデータを送信する。プログラムデータはI/Oバスを通じてトグルされ、各読み出し/書き込みモジュールのDL2にラッチされる。よって、I/Oバスはこのトグルイン期間中に一時的にビジー状態になり、これは例えば300μsの長さにおよぶ。
【0115】
下位ページプログラミングはバイナリであり、DVA しきい値レベルによって区切られる「中間状態」から「U状態」を区別するだけでよい(図20B参照)。ワード線へ印加される各プログラミングパルスの後には読み返しまたはプログラム−ベリファイが続き、プログラムデータを表す目標状態にセルが達しているか否かを判断する。この場合のプログラム−ベリファイはDVA に対する(「pvfyA」)である。したがって、各セルにつき1ビットを蓄積するにあたって必要となるのは各読み出し/書き込みモジュールの1ラッチだけである。
【0116】
データラッチについて、メモリアレイまたはメモリコアで行われている目下の下位ビットプログラミング操作で盛んに使われるのは、プログラムデータを収容するDL2である。したがって、コアによって使われているラッチの数は1つであり、残りの2つのラッチ、具体的にはDL0とDL1は、遊んだ状態になる。
【0117】
コアでプログラミングが続いている間は、2つの遊んでいるラッチと空いているI/Oバスを次のページのプログラムデータの準備に使用することができる。(N+1)番目のページデータを書き込むためにさらなるコマンドを発行するホストは、I/Oバスを通じてデータをトグルし、これを2つの空いているラッチの一方、例えばDL0に、ラッチできる。かくして、コアは、N番目のページのプログラミングを終えた後に300μsかけてデータがトグルインされるのを待たずとも(N+1)番目のページのプログラミングを開始できる。
【0118】
このとき使われているラッチは2つであり(例えば、DL2とDL0)、1つは現在進行しているN番目のページ(下位ページ)のプログラミングに使われ、もう1つは(N+1)番目のページのプログラムデータのキャッシュに使われている。そこで、もう1つのラッチは空いているわけだが、これの使い方は、既にキャッシュされている(N+1)番目のページが上位ページか下位ページかによって異なる。
【0119】
好適な実施形態において、(N+1)番目のページが同じページセルまたはワード線に通常属する上位ページならば、上位ページの以降のプログラミングを最適化するために最後の空きラッチを取っておかなければならない。なぜならば、(前のセクションで言及されている)「クイックパス書き込み」(「QPW」)プログラミングアルゴリズムの実施例では、セルが目標状態付近までプログラムされているか否かを指示するフラグを蓄積するためのラッチが追加で必要となるからである。
【0120】
(N+1)番目のページが別のページセルまたはワード線に属する下位ページならば、ホストから提示される場合、別の(N+2)番目の(下位または上位)ページデータを最後の空きラッチで任意にキャッシュすることもできる。
【0121】
図22の表は、QWPを使用する4状態上位ページまたはフルシーケンスプログラミングの様々な段階で追跡する必要のある状態の数を示している。LM符号における上位ページまたはフルシーケンスプログラミングを示す図20Cで、下位ページ状態「U」または(1,1)の一部と「中間」状態(X,0)はさらに、状態「A」または(0,1)、「B」または(0,0)、および「C」または(1,0)までそれぞれプログラムされる。具体的に、状態「A」は「U」からプログラムされ、状態「B」および「C」は「中間」からプログラムされる。「C」ではなく「A」および「B」状態で実施するQWP手法のプログラミングで当初識別の必要があるのは、基本状態「A」、「B」、および「C」に加えて「ALOW 」および「BLOW 」と、全部で5状態になる。3ラッチに3ビットで符号は23 または9通りあり、6つの状態を識別するにあたって十分である。
【0122】
プログラミングの進行と共に発生するプログラミング中のいくつかの段階
「A」完了−「A」状態を目標とするページ内の全セルがDA 境界についてプログラム−ベリファイ済みである。そのために、DAL境界についてプログラム−ベリファイ済みを先に完了する必要がある。4つの状態「L」(プログラムロックアウト)、「BL 」、「B」、および「C」を追跡する。そのために、符号表2ビット2CT(「A」)による所定の符号化で2ビットを蓄積する2つのラッチが必要となる。
【0123】
「B」完了−「B」状態を目標とするページ内の全セルがDB 境界についてプログラム−ベリファイ済みである。そのために、DBL境界についてプログラム−ベリファイ済みを先に完了する必要がある。4つの状態「L」、「AL 」、「A」、および「C」を追跡する。そのために、2ビット符号表2CT(「B」)による所定の符号化で2ビットを蓄積する2つのラッチが必要となる。
【0124】
「C」完了−「C」状態を目標とするページ内の全セルがDC 境界についてプログラム−ベリファイ済みである。5つの状態「L」、「AL 」、「A」、「BL 」および「B」を追跡する。そのために、3ビット符号表3CT(「C」)による所定の符号化で3ビットを蓄積する3つのラッチが必要となる。
【0125】
「A」+「B」完了−「A」状態と「B」状態を目標とするページ内の全セルがそれぞれDA 境界とDB 境界についてプログラム−ベリファイ済みである。2つの状態「L」および「C」を追跡する。そのために、1ビット符号表1CT(「A」+「B」)による所定の符号化で1ビットを蓄積する1つのラッチが必要となる。
【0126】
「A」+「C」完了−「A」状態と「C」状態を目標とするページ内の全セルがそれぞれDA 境界とDC 境界についてプログラム−ベリファイ済みである。3つの状態「L」、「BL 」、および「B」を追跡する。そのために、2ビット符号表2CT(「A」+「C」)による所定の符号化で2ビットを蓄積する2つのラッチが必要となる。
【0127】
「B」+「C」完了−「B」状態と「C」状態を目標とするページ内の全セルがそれぞれDB 境界とDC 境界についてプログラム−ベリファイ済みである。3つの状態「L」、「AL 」、および「A」を追跡する。そのために、2ビット符号表2CT(「B」+「C」)による所定の符号化で2ビットを蓄積する2つのラッチが必要となる。
【0128】
「A」+「B」+「C」完了−「A」状態と「B」状態と「C」状態を目標とするページ内の全セルがそれぞれDA 境界とDB 境界とDC 境界についてプログラム−ベリファイ済みである。ページの目標状態はどれもプログラム−ベリファイ済みであり、ページのプログラミングは完了している。ラッチは必要でなくなる。
【0129】
図23は、上位ページまたはフルシーケンスプログラミングの概略的タイミング図であって、次のページのプログラムデータを未使用データラッチにロードするバックグラウンド操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。
【0130】
N番目のページの上位ページデータを書き込むときには、既にプログラム済みの下位ページデータを参照しなければならない。この既にプログラム済みの下位ページは既に各読み出し/書き込みモジュールのDL2にラッチされている。ホストはN番目のページの上位ページデータにあたって、まずはページデータを特定のアドレスに書き込むための書き込みコマンドをメモリに向けて発行する。その後には、メモリにプログラムするページデータを送信する。プログラムデータはI/Oバスを通じてトグルされ、各読み出し/書き込みモジュールのDL0にラッチされる。よって、I/Oバスはこのトグルイン期間中に一時的にビジー状態になり、これは例えば300μsの長さにおよぶ。
【0131】
上位ページまたはフルシーケンスプログラミングはそれぞれ、DA 、DB 、およびDC によって状態「A」、「B」、および「C」が区切られる多状態である(図20C参照)。ワード線へ印加される各プログラミングパルスの後には読み返しまたはプログラム−ベリファイが続き、プログラムデータを表す目標状態にセルが達しているか否かを判断する。
【0132】
図22に示すように、プログラミング中の必要ラッチ数はプログラミングがどの段階まで進んだかによって異なる。例えば、最初は全3ラッチを使用する。「A」状態がすべてプログラム−ベリファイ済み(「A」完了)になると、メモリコアが以降のプログラミングで4つの状態を蓄積するにあたって必要となるラッチは2つだけである(例えば、DL2とDL1)。残りの1ラッチ(例えば、DL0)は空いているので、キャッシュ操作に使える。
【0133】
コアでプログラミングが続いている間は、空いているラッチと空いているI/Oバスを次のページのプログラムデータの準備に使用することができる。(N+1)番目のページデータ(下位ページデータ)を書き込むためのさらなるコマンドを発行するホストは、I/Oバスを通じてデータをトグルして、これを空いているラッチDL0にラッチできる。かくして、コアは、N番目のページのプログラミングを終えた後に300μsかけてデータがトグルインされるのを待たずとも(N+1)番目のページのプログラミングを開始できる。図22に示すように、他のプログラミング段階で少なくとも1つの空きラッチがある場合にも同じことが当てはまる。
【0134】
必要なラッチが1つだけで、2つの空きラッチをキャッシュ操作に使えるプログラミング段階に入ることもある。例えば、図22に示すように、「A」状態と「B」状態の両方がプログラム−ベリファイ済みになったときがこれにあたる。このとき2つのラッチを使用できる。(N+1)下位ページデータのロードのためにいずれか一方が既に使われているなら、残りのラッチを使って(N+2)上位または下位ページデータをロードできる。
【0135】
好適な実施形態において、(N+1)番目のページが同じページセルまたはワード線に通常属する上位ページならば、上位ページの以降のプログラミングを最適化するために最後の空きラッチを取っておかなければならない。なぜならば、前のセクションで言及されている「クイックパス書き込み」(「QPW」)プログラミングアルゴリズムの実施例では、セルが目標状態付近までプログラムされているか否かを指示する1つまたは2つのフラグを蓄積するためのラッチが追加で必要となるからである。
【0136】
(N+1)番目のページが別のページセルまたはワード線に属する別の下位ページならば、ホストから提示される場合、別の(N+2)番目の(下位または上位)ページデータを最後の空きラッチで任意にキャッシュすることもできる。
【0137】
本発明の一態様によると、追跡する状態の数に応じて多数の書き込み操作段階が変化する場合、段階依拠形符号化によって使用可能なデータラッチを効率的に利用し、余っているラッチはバックグラウンドキャッシュ操作に最大限役立てることができる。
【0138】
図24は、本発明の一般的な実施形態に従い目下の多段階メモリ操作と同時進行するラッチ操作を示すフローチャートである。
ステップ600:メモリセルからなるアドレス指定可能なページをメモリアレイに具備するメモリの操作を開始する。
ステップ610:一定数のビットをラッチする容量を持つ1組のデータラッチを、アドレス指定されたページの各メモリセルに提供する。
メモリアレイにおける目下の多段階メモリ操作
ステップ620:メモリアレイに対して目下のメモリ操作を実行し、メモリ操作には1つ以上の段階があり、各段階には所定の一連の動作状態が関連付けられている。
効率的な段階依拠形符号化によるラッチの解放
ステップ622:各段階に段階依拠形符号化を提供することにより、少なくともいくつかの段階では実質上最低限のビットによって一連の動作状態を符号化し、一連のデータラッチを有効利用し、空きデータラッチの一部を解放する。
同時進行ラッチ操作
ステップ624:目下のメモリ操作と同時進行で、メモリアレイに対する1つ以上の後続するメモリ操作に関係するデータを用いて空きデータラッチの一部に対して操作を実行する。
【0139】
現在のプログラミング中の読み出し割り込み
図25は、下位ページプログラミングの概略的タイミング図であって、使用可能なラッチを使った読み出し割り込み操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。
【0140】
N番目のページデータを書き込む場合、ホストは最初にそのページデータを特定のアドレスに書き込むための書き込みコマンドをメモリに向けて発行する。その後には、メモリにプログラムするページデータを送信する。プログラムデータはI/Oバスを通じてトグルされ、各読み出し/書き込みモジュールのDL2にラッチされる(図13および図14参照)。よって、I/Oバスはこのトグルイン期間中に一時的にビジー状態になり、これは例えば300μsの長さにおよぶ。
【0141】
下位ページプログラミングはバイナリであり、DA しきい値レベルによって区切られる「U」状態から「中間状態」を区別するだけでよい(図20A参照)。ワード線へ印加される各プログラミングパルスの後には読み返しまたはプログラム−ベリファイが続き、プログラムデータを表す目標状態にセルが達しているか否かを判断する。この場合のプログラム−ベリファイはDA に対する(「pvfyA」)である。したがって、各セルにつき1ビットを蓄積するにあたって必要となるのは各読み出し/書き込みモジュールの1ラッチだけである。
【0142】
データラッチについて、メモリアレイまたはメモリコアで行われている目下の下位ビットプログラミング操作で盛んに使われるのは、プログラムデータを収容するDL2である。したがって、コアによって使われているラッチの数は1つであり、残りの2つのラッチ、具体的にはDL0とDL1は、遊んだ状態になる。
【0143】
コアでプログラミングが続いている間、2つの遊んでいるラッチと空いているI/Oバスを読み出し操作に使用することができる。読み出し操作にあたっては、目下のプログラミング操作で既に埋まっているメモリコア(すなわち、メモリアレイ)そのもので感知を行う必要がある。しかし、実際の読み出し操作の感知段階は通常ならばプログラミング操作より遥かに短く(通常、プログラミング時間の10分の1)、プログラミング操作に割り込んで感知操作を差し込んでも性能が大きく損なわれることはない。感知の後には1つ以上の空きデータラッチに読み出しデータをラッチする。そして、ユーザはI/Oバスへ読み出しデータをトグルアウトできる。これはメモリアレイにおけるプログラミング操作と同時に行われるから、時間を節約できる。
【0144】
したがって、ホストは下位ページのプログラミング中に読み出しコマンドを発行してプログラミングに割り込むことができ、この中断のときにプログラミング状態がデータラッチに保存される。さらなるページデータが感知され、2つの空きラッチの一方、例えばDL0にラッチされる。そして、保存されたプログラミング状態でプログラミングを再開できる。再開したプログラミングによってメモリアレイが埋まっているときには、データラッチの中にある読み出しデータをI/Oバスへトグルアウトできる。
【0145】
前に述べたように、4状態(2ビット)メモリの例で好適なラッチ数はページの各メモリセルにつき3つである。下位ページプログラミングの場合、下位ページプログラムデータを蓄積するのに必要なラッチは1つだけである。そのため、2つの空きラッチが残る。典型的な読み出し操作で感知データビットをラッチするのに必要な空きラッチは1つだけである。好適なルックアヘッド(「LA」)読み出し操作では2つの空きラッチが必要となる。これは以降のセクションでさらに詳しく説明する。
【0146】
図26は、上位ページプログラミングの概略的タイミング図であって、使用可能なラッチを使った読み出し割り込み操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。多段階プログラミングについては図23との関係で説明済みであり、種々の段階にはいくつかの空きデータラッチを使用できる。例えば、状態「A」がプログラム−ベリファイ済みになった後には1つのデータラッチが空き、状態「A」と状態「B」の両方がプログラム−ベリファイ済みになった後には2つのデータラッチが空く。
【0147】
よって、状態「A」がプログラム−ベリファイ済みになった後には、従来の読み出しから1つの空きラッチを使って感知データをラッチできる。他方、状態「A」と状態「B」の両方がプログラム−ベリファイ済みになった後には、前述したLA読み出しを2つの使用可能なラッチでサポートできる。
【0148】
キャッシュされる複数コマンドの管理
メモリのコアである1つのメモリ操作が実行中のときに、保留になっている別のメモリ操作をデータラッチにキャッシュしたり、I/Oバスを通じて転送するキャッシュ操作をサポートしたりするには、同時メモリ操作を管理する必要がある。通常、従来のメモリ装置にはキャッシュ操作を実行するにあたって十分な数の空きデータラッチが用意されていない。たとえ十分な数の空きデータラッチが用意されていたとしても、キャッシュにデータがある保留のメモリ操作は目下のメモリ操作が完了した後でないと実行されない。
【0149】
図27は、典型的なメモリ操作に関連する情報一式を示す。メモリ操作の実行要請を受けるメモリは、指定されたメモリ操作の開始を告げるプリコマンドを受け取る。この後には、操作が行われるメモリアレイのアドレスが続く。消去操作の場合のアドレスは、消去するメモリセルブロックである。プログラミング操作または読み出し操作の場合のアドレスは、操作の対象となるメモリセルページである。指定された操作がプログラミング操作なら、プログラムデータが供給されてデータラッチにラッチされる。プログラムデータが用意されたら実行コマンドが発行されて、その使用可能なプログラムデータに対してプログラミング操作が実行される。指定された操作が読み出し操作なら、メモリにデータは送信されない。実行コマンドが発行されて、読み出し操作が実行される。アドレス指定されたメモリセルのページは感知され、感知されたデータはデータラッチにラッチされ、後ほどI/Oバスを通じてトグルアウトされる。
【0150】
図28は、シンプルなキャッシュ操作をサポートする従来のメモリシステムを示す。このメモリシステムは、メモリコントローラ8を介してメモリチップ301を制御するメモリコントローラ8を含む。メモリチップのメモリアレイ100は、オンチップホストインターフェイス/制御回路310によって制御される。この制御回路の状態マシンは、メモリアレイの基本的なメモリ動作を管理する。ホスト6は、マッピングやメンテナンスといった高度なメモリ機能を遂行するメモリコントローラ8を通じてメモリシステムと連動する。
【0151】
ホストまたはメモリコントローラは、メモリチップがビジーでないときにステータス信号Ready/Busy* をもとにメモリ操作を要請できる。要請されたメモリ操作はバッファ322に保持され、状態マシンが別のメモリ操作を実行していないときには状態マシン312へ放出されて、実行される。例えば、メモリアレイでは状態マシンによる制御のもとでメモリ操作MEM OP0が実行されている。使用できる空きデータラッチがあるならば、コントローラはその合図を受け、保留のメモリ操作MEM OP1はメモリチップへ送られ、バッファ322にバッファされる。同時に、MEM OP1に関係するデータはメモリチップへトグルインされ、データラッチにラッチされる。状態マシンは、MEM OP0の実行が完了すると直ちにバッファ内のMEM OP1を解放し、これの実行を開始する。このように、従来のメモリシステムでは目下のメモリ操作が完了した後に保留のメモリ操作を実行する。
【0152】
図28に示す例で、それぞれのコマンドは実行を開始する前に前回のコマンドが完了するまで待たなければならないが、そのデータは前回のコマンドの実行中にキャッシュされている。したがって、メモリコアでMEM OP0が実行している間はMEM OP1と関連するデータ1がラッチされる。MEM OP1は、MEM OP0が完了した後にキャッシュされたデータ1に働きかける。同様に、メモリコアでMEM OP1が実行している間は、MEM OP2と関連するデータ2がラッチされる。このやり方では、同じワード線の下位および上位論理ページの両方をロードして同じプログラミング操作でマルチビットを効率よくプログラムすることはできない。
【0153】
プログラミング操作の性能、特に逐次プログラミングの性能は、2つの要因に左右される。最初のものはプログラムデータをロードする時間に関係がある。フラッシュメモリの容量拡大にともない、そのページサイズも世代交代のたびに拡大している。プログラムするページデータが大きくなれば、データラッチにロードする時間が長くなる。プログラミング性能を高めるには、このデータロードの時間をどこかに潜在化させるのが望ましい。そのために、フォアグラウンドでメモリコアがプログラミング操作で忙しいので、データラッチとI/Oバスが遊んでいるときに、できるだけ多くのプログラムデータをバックグラウンドでキャッシュする。
【0154】
本発明の一特徴として、この第1の要因には、プログラミング中により多くのページをバックグラウンドでデータラッチにロードすることによって対処し、データラッチは使用可能になった時点で直ちに保留のプログラムデータのキャッシュに使われる。これは、同じフォアグラウンド操作のときには、2つ以上のコマンドに関連するデータをバックグラウンドでキャッシュできる。
【0155】
プログラミング性能を左右する第2の要因は、ページをプログラムする時間、特に同じワード線を持つマルチビットセルのページをプログラムする時間に関係する。既に述べたように、マルチビットセルのページは単独シングルビットページの集まりとして扱うことができる。例えば、2ビットページのプログラミングと読み出しは、ある程度独立した2つのシングルビットページとして、具体的には下位ビットページと上位ビットページとして、行うことができる。特に、下位ビットページは、下位ビットページのプログラムデータが使用可能となった時点で直ちにプログラムできる。上位ビットページは第2の行程で同じメモリセルページにプログラムされ、そのプログラミングは、セルにプログラム済みの下位ページの値に左右される。このように2つのビットを2つの異なる時間に2つの別々の行程でプログラムできる。しかし、「オールビット」または「フルシーケンス」プログラミングとして知られているやり方で2つのビットを1つの行程でプログラムしたほうがより効率的かつ正確である(プログラミングの混乱も少ない)。これは、プログラミング中に全てのデータビットが入手可能である場合に限り可能である。したがって、オールビットプログラミングは、実際には、全てのビットが入手可能である場合に実行するのが好ましい。一方、下位ページデータだけが入手可能なら、下位ページを先にプログラムする。同じワード線に属する上位ページデータが後ほど入手可能となる場合、そのページのセルを第2の行程でプログラムする。下位ページのプログラミングが完了する前に上位ページデータが入手可能となる場合、下位ページのプログラミングを止めて、オールビットプログラミングの実行に転換するのが望ましい。
【0156】
図28に示すやり方ではバックグラウンドで2つ以上のコマンドをキューに入れることはできないため、2ページ以上のページデータはキャッシュできない。さらに、これは、全てのビットが入手可能となったときに下位ページのプログラミングを途中で終了して異なる「オールビット」プログラミングの実行に転換する状況に対処できない。
【0157】
本発明のもう1つの特徴として、この第2の要因には、オールビットプログラミングに必要な全てのビットをキャッシュしてオールビットプログラミングを実行することによって対処する。さらに、多数の保留のコマンドを管理するコマンドキュー管理部は、コマンドに関係するデータの状態に応じて、特定のコマンドを、次の保留のコマンドを優先させて、完了する前に終了させる。
【0158】
本発明の2つの特徴を1つにまとめ、より多くのプログラムデータをキャッシュし、より効率的なプログラミングアルゴリズムの使用を可能にすることにより、プログラミング性能を向上させる。
【0159】
本発明の一態様によると、目下のメモリ操作が実行中のときに、それ以外の多数の保留のメモリ操作をキューに入れる。さらに、一定の条件が満たされる場合、個別のメモリ操作に対するコマンドのいくつかを併合して1つの合同操作にまとめることができる。一例において、目下のメモリ操作の実行中にキューの中にある1つ以上の多数の保留のメモリ操作を併合する条件が満たされる場合、目下のメモリ操作が終了し、併合された操作がこれに取って代わる。別の例において、キューの中にある2つ以上の多数の保留のメモリ操作を併合する条件が満たされる場合、現在実行中の操作が完了した後に併合操作を開始する。
【0160】
共通のワード線を共用するマルチビットページのメモリセルをプログラムする一例を挙げる。各々のマルチビットはバイナリ論理ページのビットを形成すると考えることができる。かくして、2ビットメモリセルからなるページには下位論理ページと上位論理ページがある。3ビットメモリセルからなるページには中間論理ページが加わる。バイナリ論理ページはそれぞれ別々にプログラムできる。よって、2ビットメモリセルの場合、第1の行程で下位論理ページをプログラムでき、上位論理ページは第2の行程でプログラムできる。さらに効率的に、2ビットのプログラムデータが入手可能なら、好ましくは1回の行程でマルチビットページをプログラムする。
【0161】
多重バイナリプログラミングや併合単一行程マルチビットプログラミングでは、何ビットのプログラムデータが入手可能かによって数通りのシナリオが考えられる。理想的には、プログラミングの前に全てのビットが入手可能なら、マルチビットのメモリセルページを1回の行程でプログラムする。前に述べたように、下位論理ページのプログラムデータだけが入手可能なら、下位論理ページのシングルビットプログラミングを開始できる。その後、上位論理ページのプログラムデータが入手可能になったら、第2の行程で同じメモリセルページをプログラムできる。このほかに、下位ページのプログラミングが完了する前に上位ページデータが入手可能になることもある。この場合、効率的な単一行程マルチビットプログラミングまたは「フルシーケンス」プログラミングを活かすため、下位ページのプログラミングを終了し、マルチビットプログラミングに差し替える。この場合、下位論理ページと上位ページのプログラミングがあたかも併合されたか、あるいは合同されたかのようになる。
【0162】
マルチビットセルを持つメモリで、ホストによって送信される論理プログラムデータページは下位論理ページ、上位論理ページ、または何らかの他の中間論理ページが入り混じったものになることがある。このため通常ならば、データラッチが許す範囲でできるだけ多くのプログラムデータページをキャッシュするのが望ましい。こうすれば、同じメモリセルページに属する論理ページを併合してマルチビットプログラミングを実行する見込みが高まる。
【0163】
図29は、複数メモリ操作のキュー操作と併合を示すフローチャートである。コアアレイと、アレイでアドレス指定されたページの関連するデータをラッチするデータラッチとを具備するメモリに、複数のメモリ操作を併合するアルゴリズムを適用する。
ステップ710:コアアレイで実行する着信メモリ操作を順序付けするために先入れ先出しキューを設ける。
ステップ720:データラッチを使って着信メモリ操作のデータをキャッシュできるときに、着信メモリ操作をキューに入れる。
ステップ730:コアアレイにおけるメモリ操作の実行とキューの中にあるメモリ操作に併合の見込みがあるか否かを判断する。併合の見込みがあるならステップ740へ進み、さもなくば、ステップ750へ進む。
(「併合の見込みがある」とは、同じメモリセルのページに関連する少なくとも2つの論理ページを1つの行程でまとめてプログラムできることを意味する。例えば、2ビットメモリセルを備えるメモリで、下位論理ページと上位論理ページにそれぞれプログラムする2つの操作には併合の見込みがある。同様に、3ビットメモリセルを備えるメモリで下位論理ページと中間ページにプログラムする操作には併合の見込みがある。下位、中間、および上位論理ページに対するプログラミング操作にも併合の見込みがある。2ビットセルの例に戻り、コアアレイで下位論理ページが実行中で、キューの中で保留になっている次のプログラミング操作が同じメモリセルのページに属する上位論理ページをプログラムするものならば、併合の見込みはある。他方、コアアレイで上位ページが実行中なら、次にプログラムする保留のページは異なるメモリセルのページに属することになるため、併合の見込みはない。メモリ操作が読み出し操作である場合も同様である。)
【0164】
ステップ740:キューの中にある1つ以上の次のメモリ操作がコアアレイにおけるメモリ操作に併合可能である場合、コアにおけるメモリ操作の実行を終了し、代わりに併合メモリ操作の実行を開始し、さもなくば、コアにおけるメモリ操作の完了を待ってからキューの中にある次のメモリ操作を実行する。ステップ720へ進む。
(「併合可能」とは、併合が可能な条件が満たされていることを意味する。この例では、データラッチにラッチされた下位論理ページと上位論理ページの両方のプログラムデータが使用可能である。同様に、「併合メモリ操作」とは、下位論理ページと上位論理ページの両方を一緒にプログラムすることまたは感知することに相当する。)
ステップ750:コアにおけるメモリ操作が完了するまで待ち、キューの中にある2つ以上の次のメモリ操作が併合可能なら、コアアレイで併合メモリ操作を実行し、さもなくば、キューの中にある次のメモリ操作をコアアレイで実行する。ステップ720へ進む。
【0165】
複数のコマンドの管理は、メモリ操作キュー管理部によって制御されるメモリ操作キューを用意することによって達成する。このメモリ操作キュー管理部は好ましくは、メモリアレイにおけるメモリ操作の実行を制御する状態マシンの1モジュールとして実装する。
【0166】
図30は、メモリ操作キューとメモリ操作キュー管理部が組み込まれた好適なオンチップ制御回路の概略的ブロック図を示す。オンチップ制御回路310’はメモリアレイ100の基本的動作を制御する働きをする有限状態マシン312’を含む。(図28も併せて参照)。メモリ操作キュー330は、着信メモリ操作要請を保持する先入れ先出しスタックメモリによって実装する。通常、メモリ操作要請はホストかメモリコントローラから発行される(図28参照)。
【0167】
複数の保留の操作と実行中のメモリ操作を管理するため、状態マシン312’の1モジュールとしてメモリ操作キュー管理部332を実装する。キュー管理部332は基本的に、状態マシン312’に向けて放出され実行されるキュー330内の保留のメモリ操作のスケジュールを組む。
【0168】
メモリ操作、例えばMEM OP0が、キューから状態マシンのプログラムレジスタ324へ放出されると、状態マシンによる制御のもとでMEM OP0がメモリアレイで実行される。状態マシンは使用可能な空きデータラッチ数を常に把握し、このステータスは信号Ready/Busy* によってホスト/メモリコントローラへ伝達される。ホストは、1つ以上の空きデータラッチが使用可能である場合、プログラミングや読み出し等、さらなるメモリ操作を要請できる。かくして、ホストによって送信されるMEM OP1、MEM OP2等がキュー330に入れられる。キュー内の最大メモリ操作数は、使用可能な空きデータラッチ数によって決まる。
【0169】
キュー管理部332は、キュー330から状態マシンのプログラムレジスタ324にかけて、キュー330の中で保留になっているメモリ操作の放出を制御する。さらに、これは、図29との関係で説明したように、いずれかのメモリ操作を併合して1つの合同操作にまとめることができるか否かを判断する。キュー管理部332は、キューの中にある2つ以上の操作が併合可能である場合、それらの併合可能な操作をキュー330から放出し、その合同操作は、状態マシンにおける現在の操作の実行が完了した後に状態マシン312’によって実行される。キュー管理部は、キューの中にある1つ以上の操作が状態マシンによって実行されている操作と併合可能である場合、状態マシンに現在実行中の操作を終了させ、代わりに合同操作を実行させる。このように、メモリ操作管理部332は状態マシン312’の残りの部分と協働しながら複数のメモリ操作のスケジュールを組み、場合によってはそれらを併合する。
【0170】
これまで2ビットメモリの例を挙げて本発明を説明してきた。目下のメモリ操作の最中にデータラッチが解放されるなら、それらを使ってどんな保留のメモリ操作のデータをもキャッシュできる。こうすることでより多くのデータビットを使用可能なデータラッチにロードできるばかりでなく、メモリ操作を併合する見込みも高くなる。当業者なら、2ビットより多くのデータをそれぞれ蓄積できるセルを備えるメモリ、例えば3ビットまたは4ビットメモリに、同じ原理を容易く応用できる。例えば、3ビットメモリのページには、3つの単独ビットページ、具体的には下位、中位、および上位ビットページが、あるとみなすことができる。これらのページは、同じメモリセルのページで異なる時間に別々にプログラムできる。あるいは、全ての3ビットが使用可能な場合、オールビットプログラミングモードで一斉にプログラムすることができる。そのために、多数のページに応じてキャッシュプログラミングコマンドをキューに入れる必要がある。2ビットメモリでフルシーケンス転換が可能なら、2つのプログラムコマンドを一斉に実行できる。同様に、3ビットメモリでオールビットまたはフルシーケンスモードへ転換する場合、3つの相継ぐプログラムコマンドを一斉に実行できる。ここでもコマンドキュー管理部は、完了または終了したコマンドがどれかを、そして次に実行するコマンドはどれかを、追跡する。そして、プログラミング中に特定の記憶状態マイルストーン (milestones) に達するといくつかのデータラッチが解放され、保留のプログラムデータのキャッシュに効率よく利用することができる。
【0171】
消去中のキャッシュ操作−バックグラウンド読み出し・書き込み操作
消去操作の待ち時間は、フラッシュ記憶システムの全体的な性能オーバーヘッドを大きく左右する要因の1つである。例えば、消去操作にかかる時間はプログラミング操作の4または5倍の長さになることがあり、読み出し操作の10倍の長さになることがある。フラッシュメモリの性能を向上させるには、消去操作の完了を待つ時間を利用するキャッシュ操作等のバックグラウンド操作が極めて重要となる。本発明は、メモリがメモリコアにおける消去操作で埋まり、ビジー状態のときにデータラッチとI/Oバスを利用するものである。例えば、次のプログラミング操作のデータまたは読み出し操作からの出力データは消去操作と同時進行で実行できる。このようにして、次のプログラミング操作または読み出し操作が行われないときに、当該操作のデータ入力または出力部分は既に完了しているため、プログラミングまたは読み出しの待ち時間は低下し、性能は上がる。
【0172】
消去操作の実施にあたっては数通りの方法がある。米国特許第5,172,338号(特許文献14)で開示されている一方法では、交互消去パルスとその後に続くベリファイによって消去を行う。ひとたび消去されベリファイされたセルに対するさらなる消去パルスは禁じられる。NANDメモリにとって好適なもう1つの消去操作には2つの段階がある。第1段階における消去では、所定の「消去済み」または「接地」状態を下回る程度のしきい値レベルになるまでメモリセルの電荷素子から電荷を除去する。第2段階では、所定の「消去済み」しきい値に対する一連のソフトプログラミング/ベリファイによって確立されたしきい値分布の中に消去済みセルのしきい値線を締め付ける。
【0173】
本発明の一般的な態様によると、消去操作が行われているときには空きデータラッチを使って別の保留のメモリ操作に関係するデータをキャッシュできる。
【0174】
図31は、消去操作中のバックグラウンドキャッシュ操作を示す概略的フローチャートである。
ステップ760:一定数のビットをラッチする容量を持つ1組のデータラッチを、アドレス指定されたページの各メモリセルに用意する。
ステップ770:指定されたページ群に対して消去操作を実行する。
ステップ780:消去操作と同時進行で、メモリアレイに対する1つ以上の後続するメモリ操作に関係するデータを用いて1組のデータラッチに対して操作を実行する。
【0175】
本発明の一態様によると、消去操作が行われているときには保留になっているプログラミング操作のプログラムデータをI/Oバスを通じてデータラッチにロードする。特に、電荷を除去する消去操作の第1段階では全てのデータラッチをプログラムデータのキャッシュに使うことができる。ソフトプログラミングのベリファイに合格した後にはプログラムロックアウト状態を蓄積するためにデータラッチのいずれか1つが必要となるため、ソフトプログラミングが行われる消去操作の第2段階では、この1つのデータラッチを除く全てのデータラッチをプログラムデータのキャッシュに使用することができる。1セル当たり2ビットをサポートするメモリアーキテクチャの場合、少なくとも各ビットにつき1つずつ、合わせて2つのデータラッチがある。好適な実施形態において、操作中に発生する特定の状態を蓄積するための追加のデータラッチを使用する。したがって、メモリのアーキテクチャにもよるが、2ビットセルの場合、少なくとも2つのデータラッチがあって、さらに好ましくは3つのデータラッチを各セルにつき用意する。消去の第1段階ではこれらのデータラッチの全てをキャッシュ用に使用でき、消去操作の第2段階では1つのデータラッチを除く全てのデータラッチをキャッシュ用に使用できる。したがって、消去段階とメモリアーキテクチャに応じて使用可能なデータラッチに1つ以上のページのプログラムデータをロードできる。
【0176】
図32は、メモリアレイに対する消去操作の概略的タイミング図であって、消去操作の第1の消去段階におけるプログラムデータのロード操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。この図に見られるように、メモリコアにおける消去操作には第1の消去段階とその後に続く第2のソフトプログラミング/ベリファイ段階とがある。
【0177】
消去操作の第1段階でメモリアレイまたはコアは既に埋まっているが、データラッチとI/Oバスは空いていてバックグラウンド操作に使える。このときI/Oバスを通じてデータラッチにプログラムデータをロードできる。例えば、各セルにつき3つのデータラッチがある好適な実施形態において、第1の消去段階のキャッシュ操作にこれらのラッチを全て使用することができる。
【0178】
例えば、N番目のページデータを書き込む場合、ホストは最初にそのページデータを指定のアドレスに書き込むための書き込みコマンドをメモリに向けて発行する。その後には、メモリにプログラムするページデータを送信する。プログラムデータはI/Oバスを通じてトグルされ、各読み出し/書き込みモジュールのDL2にラッチされる(図13および図14参照)。よって、I/Oバスはこのトグルイン期間中に一時的にビジー状態になり、これは例えば300μsの長さにおよぶ。使用可能なデータラッチが3つあるなら、原理上は最高3ページのプログラムデータをキャッシュできる。例えば、消去操作が進行中のときにはN番目のページの下位ページ部分を、またはN番目のページの下位ページ部分と上位ページ部分の両方を、順次ロードできる。
【0179】
図33は、メモリアレイに対する消去操作の概略的タイミング図であって、消去操作のソフトプログラミング/ベリファイ段階におけるプログラムデータのロード操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。
【0180】
消去操作の第2のソフトプログラミング/ベリファイ段階でもメモリアレイまたはコアは予め埋まっている。しかし、前述したように、1つのデータラッチを除く全てのデータラッチとI/Oバスは空いている。消去操作に使われていないデータラッチにはプログラムデータをロードできる。例えば、各セルにつき3つのデータラッチがある好適な実施形態でソフトプログラミング/ベリファイ操作に使われるラッチは1つだけである。したがって、空きラッチは2つ残っていてキャッシュ操作に使える。
【0181】
例えば、N番目のページデータを書き込む場合、ホストは最初にそのページデータを指定のアドレスに書き込むための書き込みコマンドをメモリに向けて発行する。その後には、メモリにプログラムするページデータを送信する。プログラムデータはI/Oバスを通じてトグルされ、各読み出し/書き込みモジュールのDL2にラッチされる(図13および図14参照)。よって、I/Oバスはこのトグルイン期間中に一時的にビジー状態になり、これは例えば300μsの長さにおよぶ。使用可能なデータラッチが2つあるなら、原理上は最高2ページのプログラムデータをキャッシュできる。例えば、消去操作が進行中のときにはN番目のページの下位ページ部分を、またはN番目のページの下位ページ部分と上位ページ部分の両方を、順次ロードできる。
【0182】
一般的に、データラッチにロードできる最大ページ数は、メモリアーキテクチャのほかに、並行してプログラムされているチップ/ダイの数とプレーン/バンクの数とデータ転送速度次第で決まる。
【0183】
本発明のもう1つの態様によると、消去操作が行われているときには読み出し操作を挿し込むことができ、データラッチの中にある得られた読み出しデータは消去操作中に出力できる。好ましくは、ソフトプログラミング/ベリファイ操作の合間に読み出し操作を挿し込み、ソフトプログラミングパルスそのものは中断させない。感知され未使用データラッチにラッチされたデータは、アレイ内で消去が進行しているときにI/Oバスを通じてホストシステムへ出力できる。これはシステムオーバーヘッドを潜在化させるにあたって、例えば読み出しスクラブ操作および他のシステムメンテナンスを実行するにあたって、理想的な特徴である。
【0184】
先行技術のシステムで消去操作が中断すると、サイクルの頭からやり直さなければならない。これは、特にNANDメモリで多大な時間を必要とする。
【0185】
読み出し操作は、ソフトプログラミングパルスと消去ベリファイパルスとの間に挿し込むことができる。消去操作には、ソフトプログラミングパルスの数だけ読み出しを挿し込むことができる。感知時間は追加時間ではあるが、ソフトプログラミング/ベリファイ操作全体の時間と比較すると短い。読み出しデータのトグルアウトは進行中のプログラミング/ベリファイ操作と並行して行われるので有利である。内部制御やデータ管理でバックグラウンド操作を実行する場合にも読み出し操作を利用することができる。
【0186】
フラッシュ記憶システムにおける消去中の読み出しは、蓄積データを良好な状態に保つために行われる読み出しスクラブ操作に役立てることができる。データが蓄積されたメモリ部分を定期的に読み出し、セルにプログラムされた電荷の時間の経過にともなうずれや周囲の変化をチェックする。ずれや周囲の変化がある場合、適切なマージによるセルの再プログラミングによって補正する。米国特許第7,012,835号(特許文献31)では様々な読み出しスクラブ方式が開示されている。この特許は、その全体が本願明細書において参照により援用されている。読み出しスクラブはホストの操作とは無関係のシステム操作であるため、メモリがビジー状態になるときには他の何らかの操作の背後にこれを潜在化させるのが最善である。この場合、消去操作の最中に読み出しスクラブ操作を挿し込むことにより、読み出しの待ち時間を潜在化させることができる。
【0187】
図34は、メモリアレイに対する消去操作の概略的タイミング図であって、読み出し操作の挿し込みと、使用可能なラッチを使う、得られたデータの出力操作とを示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。この図に見られるように、消去操作の第2段階における操作はソフトプログラミング/ベリファイである。好ましくはソフトプログラミングパルスの完了は中断させずに1つ以上の読み出し操作を挿し込む。
【0188】
チップが消去操作の第2段階に入っているときにはソフトプログラミング/ベリファイのアルゴリズムを実行する。ステータス信号、例えばBUSY/READY* は、メモリが内部消去操作のためにビジー状態にあることを知らせる。同時に、もう1つのステータス信号、例えばCACHEBUSY/CACHEREADY* (図示せず)は、読み出しコマンド入力を受け付けるためにビジーからレディに推移する。読み出しコマンドが入力されるとすぐにCACHEBUSY/CACHEREADY* はビジーに推移して、他のコマンドの入力は阻止される。そして、読み出しコマンドは、目下のソフトプログラミングパルスが内部で完了するのを待ってから、同一チップでアドレス指定された別のブロックで実行される。読み出しが終わるとアドレスは以前の操作の対象であった消去ブロックに戻される。消去ブロックではソフトプログラミング/ベリファイ操作を再開できる。
【0189】
その一方でデータラッチの中にある読み出しデータはトグルアウトできる。このトグルアウト時間は普通、読み出し時間よりも遥かに長い。例えば、読み出し時間が約25μsであるのに対しトグルアウト時間は約200μsである。したがって消去操作に読み出しを挿し込めば、消去の完了を待ちながら浪費する時間から約200μsが浮いて有利である。
【0190】
この消去中のキャッシュ読み出しは、消去の時間が許す限り何度でも挿し込むことができる。しかし、読み出しが多すぎると総消去時間が長くなり、読み出しが消去操作に招く時間的なペナルティと読み出しから浮かせるトグル時間との間でバランスをとらなければならない。消去中に1つ以上の読み出しを挿し込んだ後になお空いている時間が残っているなら、前のセクションで説明したように使用可能なデータラッチを使ってプログラムデータをキャッシュできる。プログラムデータがロードされても、プログラミング操作は消去操作全体が完了した後でないと開始できない。ほとんどの場合、プログラムデータがロードされた後には他のキャッシュ操作は不可能になるため、プログラミング操作の適正な実行のための十分な空きラッチを確保しなければならない。
【0191】
図35は、図31のステップ780における消去操作のときにバックグラウンドによる読み出しスクラブのための特定のキャッシュ操作を示す概略的フローチャートである。
図31に示すステップ780をさらに以下のとおりに説明する。
ステップ782:指定ページを感知するために消去操作を中断する。
ステップ784:指定ページのデータがデータラッチにラッチされた後に消去操作を再開する。
ステップ786:消去操作中に指定ページのデータを出力する。
ステップ788:出力データにエラーがある場合、再プログラミングのために指定ページのスケジュールを組む。
【0192】
これまでのキャッシュ読み出しの説明は大部分、好適な消去操作の第2段階に関するものだった。好適な消去操作の第1段階では、所定のしきい値を下回る程度のしきい値レベルまで全てのセルを消去し、第2段階ではセルを所定のしきい値までソフトプログラムする。この消去方式は、前述したように、かなり正確な接地状態を必要とし、Nウェルにバイアスをかけることによってメモリを消去するにあたって多大な時間を要するので、NAND構造を持つフラッシュメモリに好適である。したがって、消去はソフトプログラミングの前に一斉に行うのが好ましい。消去パルス/ベリファイ/禁止方式を採用する他のメモリアーキテクチャでもキャッシュ操作は企図される。例えば、サイクルのベリファイ部分のときに読み出し操作を挿し込むことができる。
【0193】
図36は、消去中の先行バックグラウンド読み出しを示す。これは、読み出しが消去操作の直前に行われ、消去操作に割り込ませる必要がない場合により好適なキャッシュ読み出しである。これは、消去操作が始まる前に読み出し操作が分かっている場合に可能である。例えば、ホストが読み出し要請を保留にしていた場合、または何らかの読み出し操作がメモリシステムで予定されている場合はあり得る。あるいは、インテリジェントアルゴリズムは次に見込まれる読み出しを予想し、そのような読み出しのスケジュールを組むことができる。たとえこれが外れても深刻なペナルティは被らない。当たる場合、消去時間を利用して読み出しデータをトグルアウトできる。
【0194】
消去操作中に読み出しデータをキャッシュする態様とプログラムデータをキャッシュする態様の2つを組み合わせればさらなる柔軟性が提供されて、システム全体またはメモリのオーバーヘッドを最小限に抑えることができる。複数のプレーンとマルチチップデータ入力操作をもってしても、消去操作にともなうビジー時間をデータ入力時間に十分に活かせないことはある。そのような場合、読み出し操作とプログラミング操作を加えれば、消去時間を最大限に活用できる。
【0195】
読み出し中のキャッシュ操作−バックグラウンド読み出し・書き込み操作
キャッシュ読み出しは普通、多数のページが順次読み出されるときの時間を節約するために実施する。ページの感知は、既に感知済みのページをトグルアウトする時間に潜在化さることができるため、ユーザにとって感知の時間に余計な待ち時間は発生しない。一般的なやり方では、現在のページをトグルアウトしているときに次のページを感知する。
【0196】
図37は、典型的な読み出しキャッシュ方式を概略的に示す。(n−1)番目のページは前のサイクルで感知され、データラッチにラッチされている。T(n−1)に示すように、時間t0にはデータラッチからI/Oバスを通じて(n−1)番目のページがトグルアウトされる。S(n)に示すように、トグルが行われているときにはn番目のページを感知し、ラッチできる。t2には(n−1)番目のページのトグルが終わっているため、T(n)に示すように、これに続けてn番目のページデータをデータラッチからトグルできる。同様に、n番目のページがトグルアウトされているときには、S(n+1)に示すように(n+1)番目のページデータを感知し、ラッチできる。この(n+1)番目のページは、n番目のページのトグルが終わった直後にトグルできる。理想的には読み出しキャッシングの全体を通じてデータラッチとI/Oバスをフルに従事させることによって、遊んでいる時間を最小限に抑える。
【0197】
本発明の一態様に従い、多状態メモリセルでメモリセル間の摂動(ユーピン効果)を最小限に抑える必要がある場合、読み出しキャッシュ方式を提供する。好適な実施例において、「LM」符号化によって符号化されるメモリとルックアヘッド(「LA」)補正をともなう読み出しに読み出しキャッシング方式を使用する。「LM」符号化と「LA」補正にはいずれも、読み出しデータの単なるトグル操作のほかに追加のラッチおよびバス活動が必要となる。図37との関係で説明した従来方式をそのまま応用すると、最適な読み出しキャッシングは得られない。
【0198】
半導体メモリで集積の度合いが高まるにつれ、蓄積電荷によるメモリセル間の電界効果摂動(ユーピン効果)はセル間の間隔が狭まるほど顕著になる。メモリの多状態メモリセルはLM符号化を使って符号化し、メモリでは最適な順序でページをプログラムし、プログラムされたページはLA補正を用いて読み出すのが好ましい。読み出し操作の改良によって最適なキャッシュ操作を実現する。
【0199】
LM符号のためのキャッシュ読み出しアルゴリズム
読み出すページが多状態なら、使用する多状態の符号化の所要条件を読み出しキャッシュの実施例で満たさなければならない。図20A〜図20Eとの関係で既に述べたように、多状態メモリのためのLM符号化は基本的に、プログラミングの様々な行程から行程にかけてメモリセルにプログラムされる電荷の変化を最小限に抑える。3通りの境界しきい値(例えば、DA 、DB 、DC )によって区切られる4通りの記憶状態(例えば、「U」、「A」、「B」、「C」)を各セルで符号化する2ビットメモリの例を紹介する。例えば、2ビットメモリセルで、下位論理ページに対するプログラミングによりしきい値レベルはセルのしきい値ウィンドウの中間を非常に僅かに下回るところまで進む。その後の上位論理ページのプログラミングにより、既存のしきい値レベルはさらに進路の4分の1程度進む。したがって、第1の下位プログラミング行程から第2の最終上位プログラミング行程にかけて、正味の変化は最大でしきい値ウィンドウの4分の1程度であり、これはセルがワード線沿いの隣接するセルから被る最大摂動量となる。
【0200】
LM符号化の一特徴として、2つのビットの各々、すなわち下位ビットと上位ビットは、分けて考えることができる。しかし、下位ビットページの復号化は上位ページがプログラムされたか否かに左右される。上位ページがプログラム済みなら、下位ページの読み出しにあたって境界しきい値電圧DB に対して1回の読み出し行程readBが必要になる。上位ページがプログラムされていなければ、下位ページの読み出しにあたって境界しきい値電圧DA に対して1回の読み出し行程readAが必要になる。2通りの場合を区別するため、上位ページがプログラムされているときには上位ページ(通常はオーバーヘッドまたはシステム領域)にフラグ(「LM」フラグ)を書き込む。下位ビットページの読み出しのときにはまず、上位ページがプログラム済みと仮定し、readB操作を実行する。LMフラグが読み出されるならこの仮定は正しく、読み出し操作は完了する。他方、最初の読み出しでフラグが生成されなかった場合、これは上位ページがプログラムされていないことを意味し、readA操作により下位ページを再度読み出されなければならない。
【0201】
上位ビットページ読み出しの復号化にあたっては、境界しきい値電圧DA およびDC に対して操作readAおよびreadCがそれぞれ必要となる。同様に、上位ページの復号化も上位ページがまだプログラムされていなければ混乱する。ここでもLMフラグで上位ページがプログラム済みか否かを指示する。上位ページがプログラムされていなければ、上位ページデータがプログラムされていないことを意味する「1」に読み出しデータをリセットする。
【0202】
LM符号を使用するメモリでキャッシュ読み出しを実施する場合、データと同じ領域に保存されるLMフラグのチェックの必要性も考慮する。状態マシンにLMフラグをチェックさせるには、これをデータラッチからI/Oバスを通じて出力しなければならない。そのために、キャッシングをともなう読み出し操作中の感知データのトグルに加えて、LMフラグを出力するためのI/Oバスを割り当てる必要がある。
【0203】
図38Aは、LM符号によって符号化される論理ページでキャッシュ読み出しを行う概略的タイミング図である。目下のページを感知しているときに前回のページデータをトグルする一般的な方法は、図37に示された従来の読み出しの方法とほぼ同じである。しかし、LM符号における感知は2つの感知行程とその間に行われるLMフラグのチェックを行う可能性によって込み入ったものとなる。
【0204】
時間t0には、前回のサイクルで感知した(n−1)番目の論理ページがT(n−1)に示すようにデータラッチからI/Oバスへトグルアウトされる。これと同時に、S1 (n)は次の論理ページ(n)を感知する。LM符号化では2通りの場合、すなわち下位ビット論理ページの読み出しと、上位ビット論理ページの読み出しとを区別する必要がある。
【0205】
下位ビット論理ページの読み出しの場合、好適な感知は上位論理ページがプログラム済みとする仮定から始まり、第1の感知S1 (n)は境界しきい値電圧DB に対するreadBになる。t1でS1 (n)は終わり、LMフラグが生成される。しかし、これは、I/Oバスが(n−1)番目のページのトグルを完了した後でないとt2で出力できない。LMフラグが状態マシンに伝達されたらこれをチェックして、上位ページの有無を判断する。LMフラグが設定されているなら仮定は正しく、下位ビットページは正常に読み出されたことになる。ラッチされているページ(n)データは次のサイクルでトグルアウトできる。
【0206】
上位ビット論理ページの読み出しの場合、S1 (n)はそれぞれ境界しきい値電圧DA およびDC に対してreadAおよびreadCを通過する。上位ビットページの感知データはDL2に蓄積され、データラッチDL0はデータのトグルアウトに使われる(図13および図14参照)。t2ではDL2の感知データがDL0へ転送される。ここでも、(n−1)番目のページのトグルの終わりに出力されたLMフラグをチェックする。上位ページがプログラムされているなら問題なく、ラッチの中にある感知データ(ページ(n))は次のサイクルでトグルアウトできる。
【0207】
上位ビット論理ページを読み出すときにLMフラグが設定されていないことが判明する場合、これは上位ページがプログラムされていないことを意味する。LM符号化にきっちり準拠するため、S1 (n)の感知データは「1」にリセットされる。続いて、感知データは出力できる状態になる。そして、第1のバイトがプリフェッチされ、次のサイクルが始まるときにはページ全体のトグルアウトが行われる。
【0208】
図38Bは、上位ビット論理ページがまだプログラムされていないときに下位ビット論理ページを読み出す特殊な場合でLM符号を用いるキャッシュ読み出しの概略的タイミング図である。ここでもt0で第1の感知S1 (n)が始まり、t1にはLMフラグが読み出される。t2にはLMフラグがチェックのために出力される。LMフラグが設定されていないことが判明する場合、S1 (n)はreadBで下位ビットページを誤って読み出されたことになる。t3で、第2の感知S2 (n)が始まって、readAで実行される。しかし、この追加の感知(t4で終了)は(n−1)番目のページをトグルする時間、例えばT(n−1)の背後に潜在化させることはできない。なぜならば、第2の感知に先立つS1 (n)からのフラグのチェックにあたってはI/Oバスにアクセスする必要があり、T(n−1)のトグルが終わるのを待たなければならないからである。
【0209】
オールビット感知をともなうキャッシュ読み出しアルゴリズム
代替方式で、読み出すワード線上のページがマルチビットで複数の論理ページが同じ物理ページ上にある場合、全てのマルチビットを1回の感知操作でまとめて感知して電力を節約できる。
【0210】
図39は、2ビットメモリでオールビット感知をともなうキャッシュ読み出しの概略的タイミング図を示す。2ビットの場合、4つの記憶状態を表す2つのビットを同じ操作で感知する。そのために、readAと、readBと、readCにおける感知で4つの状態を区別する必要がある。この場合の感知は1サイクルおきに行われる。例えば、感知は奇数サイクルだけで行い、偶数サイクルでは省略する。1回の感知で得た2つの論理ページは各サイクルで順次トグルアウトする。
【0211】
8つの状態、例えば「U」、「A」、「B」、「C」、「D」、「E」、「F」、および「G」がある3ビットの場合のオールビット感知では、8つの状態を区別するためにreadA、readB、readC、readD、readE、readF、およびreadGでの感知が必要となる。
【0212】
一般的に、オールビットに満たないマルチビットの感知は、ページの全てのビットの読み出しに必要な感知数を減らし、電力の節約に役立つ。図30との関係で説明したメモリ操作キューとキュー管理部を使えば、2つ以上のバイナリページ感知を併合しながらオールビット感知操作を管理できる。オールビット感知方式はLM符号を用いるメモリに応用できるほか、LA補正を用いるメモリにも応用でき、これは以降のセクションで説明する。
【0213】
LA補正をともなうLM符号のためのキャッシュ読み出しアルゴリズム
隣接するワード線上のメモリセル間の摂動は、好適なプログラミング方式を用いてプログラミング中に軽減できる。これにより摂動は事実上半分に減る。残りの半分も好適なLA読み出し方式を用いることによって読み出し中に補正できる。
【0214】
好適なプログラミング方式では、ワード線に関連するページを最適な順序でプログラムする。例えば、全ての物理ページでバイナリデータのページを保持するバイナリメモリの場合、好ましくは一定の方向に沿って、例えば下から上へ、順次ページをプログラムする。この場合、ある特定のページがプログラムされているときに、これの下側にあるページはプログラム済みである。現在のページに対する摂動影響は何であれ、摂動の観点から現在のページをプログラム−ベリファイするときに計上する。基本的には、プログラムされている現在のページがプログラムされた後にその周囲で遭遇する変化を最小限にとどめるような順序でページをプログラムしなければならない。こうすればプログラム済みのページに摂動を与えるページはそのページの上側にあるページだけとなり、ワード線からワード線にかけてのユーピン効果はこのプログラミング順序により事実上半減する。
【0215】
メモリセルの物理ページが多状態になるメモリの場合の順序はさほど単純ではなくなる。例えば、2ビットメモリで、ワード線に関連する各物理ページは、2ビットデータの単一ページとみなすか、下位および上位ビットでそれぞれ1ビットデータの2つの別々の論理ページとみなすことができる。したがって、物理ページは、2つのビットによる1回の行程でプログラムでき、さもなくば、下位ビットページによる最初の行程と、上位ビットページによるその後の行程の2回に分けてプログラムできる。それぞれの物理ページを2回の行程に分けてプログラムする場合、修正を加えた最適順序が可能である。
【0216】
図40は、2ビットメモリセルを具備し、ページを最適順序でプログラムすることにより隣接するワード線におけるメモリセル間のユーピン効果を最小限に抑えるメモリの一例を示す。表記にあたっては便宜上、物理ページP0,P1,P2・・・がそれぞれワード線W0,W1,W2・・・上に存在するものとする。2ビットメモリの場合、各物理ページには2つの論理ページ、具体的にはバイナリデータをそれぞれともなう下位ビット論理ページと上位ビット論理ページとが関連する。概して、ある特定の論理ページはLP(Wordline.logical_page)と記す。例えば、W0上のP0の下位ビットページと上位ビットページはそれぞれLP(0.0)とLP(0.1)とラベル付けし、対応するW2上のものはLP(2.0)とLP(2.1)とラベル付けする。
【0217】
基本的に、論理ページのプログラミングは順序nに従い、プログラムされている現在のページがプログラムされた後にその周囲で遭遇する変化を最小限に抑えるようにする。この場合でも下から上にかけて一定の方向で徐々に進むことにより片側からの摂動の解消を助長する。さらに、プログラミング行程は各物理ページにつき2回になることがあるため、物理ページのプログラミングが上に進むときに、現在の上位ビットページは隣接する下位ビットページがプログラムされた後にプログラムしたほうがよく、こうすれば現在の上位ビットページをプログラムするときに摂動効果が計上される。よって、プログラミングがLP(0.0)から始まるならば、その順序はページプログラミング順序0,1,2・・・n・・・によって指定され、LP(0.0),LP(1.0),LP(0.1),LP(2.0),LP(1.1),LP(3.0),LP(2.1)・・・となる。
【0218】
LA補正をともなうLM符号のためのキャッシュ読み出しアルゴリズム
本発明の一態様によると、読み出しデータのキャッシュ方式では、近接する物理ページまたはワード線からのデータに補正が左右される読み出し操作であっても、メモリコアから現在のページを感知しているときにデータラッチとI/Oバスを効率よく使用して、既に読み出し済みのページをトグルアウトする。特に、好適な読み出し操作は「ルックアヘッド」(「LA」)読み出しであり、好適な記憶状態の符号化は「下位中間」(「LM」)符号である。現在のワード線における現在のページの読み出しに先立ち、前もって必要なデータの読み出しを隣接するワード線で実行しなければならない場合でも、前もって必要な読み出しとそれにともなうI/Oアクセスを前のページの読み出しサイクルの中で先回りして実行すれば、既に読み出し済みのページでI/Oアクセスが行われている間に現在の読み出しを実行できる。
【0219】
LA読み出し方式は、2005年4月5日に出願された「結合補償を含む不揮発性記憶装置の読み出し操作 (Read Operations for Non-Volatile Storage that Includes Compensation for Coupling) 」という米国特許出願第11/099,049号(特許文献32)に開示されている。この特許出願は、その全体が本願明細書において参照により援用されている。LA(「ルックアヘッド」)補正をともなう読み出しでは基本的に、隣接するワード線上でセルにプログラムされた記憶状態を調べ、それらが現在のワード線で読み出されているメモリセルに与える摂動影響を補正する。ページが前述した好適なプログラミング方式でプログラムされていたならば、この隣接するワード線は現在のワード線のすぐ上のワード線となる。LA補正方式では、隣接するワード線のデータを現在のページより前に読み出す必要がある。
【0220】
図40を参照し、例えば読み出しの対象となる現在のページ(n)がWLm(例えば、WL1)にあるなら、SLA(n)と表示するLA読み出しは次のワード線WLm+1(例えば、WL2)を先に読み出し、そのデータ結果を1つのデータラッチに保存する。次に、SLA(n)の結果に照らして現在のページを感知するが、これはS1 ’(n)と表示される。
【0221】
図40との関係で前に述べたように、好適なプログラミング順序によるLM符号では下位ページ(例えば、LP(1.0))がDB まで、またはDB の近くまで(中間状態)、プログラムされる。上位ページ(例えば、LP(1.1))は、WLm+1の下位ページ(例えば、LP(2.0))がプログラムされた後に限りプログラムされる。かくして、下位ページのワード線間ユーピン効果は完全になくなる。したがって、データ依拠形補正は「A」状態と「C」状態だけで行われ、「U」状態や「B」状態については行われない。
【0222】
LA読み出しの好適な実施例では、LA読み出しで「A」または「C」状態、あるいは「U」または「B」状態が、確認されたか否かを指示するためにラッチを使用する。前者の場合は補正が必要であり、後者の場合は補正の必要はない。現在の読み出しS1 (n)における該当セルは、感知パラメータを適当に調整することによって、例えば感知中にワード線電圧を上げることによって、補正される。これは、調整がある感知を行い、調整がない感知をさらに行うことによって現在のページの全体で行う。ラッチが補正を指示するか否かに従って、これらの2つの感知からページの各セルについてデータが選択される。
【0223】
LM符号による読み出しでは、(第2行程の読み出しにより、または読み出しデータをリセットすることにより)読み出し結果がまとまる前にLMフラグをチェックする必要がある。LA補正では、現在のワード線を読み出す前に次のワード線の読み出しを先に行う必要がある。したがって、状態マシンは、次のワード線の読み出しからのLMフラグと現在のワード線からのLMフラグの両方をチェックする必要がある。2つのLMフラグは、読み出しデータのトグルに使われていないI/Oバスを通じて状態マシンへ出力する必要がある。
【0224】
図41は、図37に示された従来の方式に従いLA補正をともなうLM符号のための読み出しキャッシングの一実施例を示す。従来の方式では基本的に、前の感知済みページのデータトグルアウト時間の中に現在のページの感知を潜在化させる。しかし、この場合、WLmにおける現在のページ感知S1 ’(n)の前に、WLm+1における追加のルックアヘッド読み出しSLA(n)を行わなければならない。これらの感知のLMフラグは感知済みデータがアサートされる前にI/Oバスを通じて出力しなければならない。現在のページ感知S1 ’(n)はSLA(n)からのデータに照らして行われて、現在のページのための補正済みデータが生成される。nが下位ビットページであって、図38Bに示すように、上位ビットページがまだプログラムされていなければ、S1 ’(n)の後にさらなるS2 ’(n)が続くことが理解できる。
【0225】
t0に始まる次のサイクルでは、T(n)に示すようにページnの補正済み感知データをトグルアウトする。同時に、現在の感知はS1 ’(n+1)による次のページまで進み、これの前にはSLA(n+1)を実行しなければならない。しかし、これらの感知からのLMフラグの出力はページnのトグルT(n)が終わるまで待たなければならない。さらに、S1 (n+1)はSLA(n+1)の結果が確定した後でないと実行できない。したがって、S1 ’(n+1)はデータトグル期間外でしか実行されず、そのためデータトグル期間の背後に潜在化することができない。このためラッチとI/Oバスがフルに使われていない状態で感知時間が増し、時間の浪費は以降の全サイクルで繰り返される。この実施例でLA補正を使用するとユーザにとっての読み出し性能は低下する。
【0226】
LA補正をともなうLM符号における好適なキャッシュ読み出しの実施例では、次のワード線感知と現在のワード線感知をパイプラインすることによって全ての感知をデータトグルの中に潜在化させる。次のワード線感知は常に現在のワード線感知より前に実行する。データトグルの各群内では現在のワード線感知を実行し、次の次のワード線感知がその後に続く。データ群のトグルアウトが完了してI/Oバスが使える状態になると、次の次のワード線のLMフラグをまず取り出し、チェックする。上位ページがプログラムされていないことを伝える状態にLMフラグがなっている場合、次の次のワード線の感知データを「1」(補正なし)にリセットする。その後に現在のワード線のLMフラグをチェックする。現在のワード線のLMフラグ次第では、感知データを維持し、または別の感知を実行する必要があり(下位ページ読み出しの場合)、またはデータを全て「1」にリセットする(上位ページ読み出しの場合)。2ビットメモリセルを具備するメモリなら、これらの感知とデータのトグルアウトを3つのデータラッチで管理できる。
【0227】
図42は、LM符号とLA補正をともなう改良された読み出しキャッシング方式を示す。−t5からt0にかけての最初のサイクルではWLmで現在のページ(n)を読み出し、残りのサイクルとは異なっている。前と同じく、LA補正にはSLA(n)の先行読み出しが必要であり、readAと、readBと、readCはWLm+1でセル状態を感知する。この読み出しからのLMフラグFLA(n)は−t4に出力され、チェックされる。WLm+1で上位ページがプログラムされていないことをフラグが伝える場合、感知されているデータが全て「1」にリセットされ、補正がないことを指示する。上位ページがプログラムされていることをフラグが伝える場合、補正の有無を伝えるラッチされたデータが現状のまま保たれる。−t3では、前に説明したLM符号とLA補正に従い、WLm上の現在のページをS1 ’(n)により、さらにことによるとS2 ’(n)により、感知する。図41に示す方式とは対照的に、次のページ(n+1)でも先行ルックアヘッド読み出しが行われる。したがって、−t2にはSLA(n+1)を実行し、−t1にはこれのLMフラグを出力し、チェックする。
【0228】
最初のサイクルの後、次のサイクルが始まるt0には、S1 ’(n)で既に感知しLA補正が行われたデータがT(n)に示すようにトグルアウトされる。まずは、図38に示す順序によって決まるワード線上の(n+1)までページアドレスを増加させる。前もって必要なルックアヘッドSLA(n+1)は前のサイクルで完了しているため、時間t0にはT(n)の開始と併せて(n+1)番目のページの感知S1 ’(n+1)を直ちに着手できる。t1でS1 ’(n+1)が終わるとLMフラグF(n+1)を取り出し、これをチェックし、LMフラグ次第ではこの後に何らかの追加操作が続く。補正されたページ(n+1)データは次のサイクルでトグルできる。その一方で、ページ(n)のトグルアウトが行われているときには、次のページのルックアヘッド感知SLA(n+2)をT(n)のトグル期間内に前もって実行できる。
【0229】
T(n)、すなわちページ(n)のトグルが、完了すると直ちに次のサイクルが始まり、T(n+1)を実行し、LA補正済みのページ(n+1)データをトグルアウトする。ページ(n+1)のサイクルはページ(n)と同様に継続する。重要な特徴として、ある所与のページのルックアヘッド読み出しは先行サイクル中に先回りして実行される。
【0230】
図43は、改良された読み出しキャッシングを示す概略的フローチャートである。
ステップ810:メモリから一連のページを感知するそれぞれの読み出しサイクルで、前回のサイクルで感知した前のページを現在のサイクルで出力する。
ステップ830:前のページの出力中に現在のページを感知するが、現在のページの感知は現在のワード線で行われ、隣接するワード線のデータからの摂動効果を補正するために隣接するワード線の感知が前もって必要となる。
ステップ850:現在のページに関係する隣接するワード線の前もって必要な感知を、現在のサイクルに先行するサイクル中に先回りして実行する。
【0231】
図44は、図41のステップ850をより明確に示す概略的フローチャートである。
ステップ852:前もって必要な感知からのデータの一部として入手する第1のフラグを出力する。
ステップ854:第1の出力フラグに従って前もって必要な感知からのデータを調整する。
ステップ856:現在のページの感知にあたって補正の必要があるか否かを伝えるデータをラッチする。
【0232】
図45は、図41のステップ830をより明確に示す概略的フローチャートである。
ステップ832:前もって必要な感知からの補正をともなうかまたは補正をともなわず、現在のページの感知を実行する。
ステップ834:現在の感知からのデータの一部として入手する第2のフラグを出力する。
ステップ836:第2のフラグに応じて、現在の感知からのデータを変えずに残すことにより、またはデータを所定の値に調整することにより、または現在のページの感知を別の一連の感知条件下で繰り返して新たなデータを入手することにより、修正する。
ステップ838:前もって必要な感知からのデータが補正を指示するか否かに応じて補正が施されているかまたは施されていない修正データをラッチする。
これまで前述したアルゴリズムを2ビットLM符号を用いて説明してきた。このアルゴリズムは3ビット以上のLM符号にも等しく応用できる。
【0233】
これまで本発明の様々な態様を特定の実施形態との関係で説明してきたが、本発明が添付の特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
【図面の簡単な説明】
【0234】
【図1A】不揮発性メモリセルの例を概略的に示す。
【図1B】不揮発性メモリセルの他の例を概略的に示す。
【図1C】不揮発性メモリセルの他の例を概略的に示す。
【図1D】不揮発性メモリセルの他の例を概略的に示す。
【図1E】不揮発性メモリセルの他の例を概略的に示す。
【図2】NORメモリセルアレイの一例を示す。
【図3】図1Dに示されたメモリセル等のNANDアレイの一例を示す。
【図4】フローティングゲートが一度に蓄積できる4通りの電荷Q1〜Q4でソース−ドレイン電流とコントロールゲート電圧との関係を示す。
【図5】読み出し/書き込み回路から行デコーダと列デコーダとを通じてアクセスする典型的なメモリアレイ構成を概略的に示す。
【図6A】個々の読み出し/書き込みモジュールの概略的ブロック図である。
【図6B】読み出し/書き込みモジュールの積み重ねによって従来どおりに実装された図5の読み出し/書き込みスタックを示す。
【図7A】一群の分割読み出し/書き込みスタックを具備し本発明の改良されたプロセッサを実装するコンパクトなメモリ装置を概略的に示す。
【図7B】図7Aに示されたコンパクトなメモリ装置の好適な構成を示す。
【図8】図7Aに示された読み出し/書き込みスタックにおける基本コンポーネントの一般的な構成を概略的に示す。
【図9】図7Aおよび図7Bに示された読み出し/書き込み回路における読み出し/書き込みスタックの好適な構成を示す。
【図10】図9に示された共通プロセッサの改良された実施形態を示す。
【図11A】図10に示された共通プロセッサの入力ロジックの好適な実施形態を示す。
【図11B】図11Aの入力ロジックの真偽表を示す。
【図12A】図10に示された共通プロセッサの出力ロジックの好適な実施形態を示す。
【図12B】図12Aの出力ロジックの真偽表を示す。
【図13】図10を簡素化したものであって、本発明の2ビットの実施形態の説明にかかわるいくつかの特定の要素を示す。
【図14】下位ページデータの読み出しが行われる上位ページプログラミングで図13と同じ要素のラッチ割り当てを示す。
【図15】単一ページモードにおけるキャッシュプログラミングの態様を示す。
【図16】下位ページからフルシーケンスへの転換に使用できるプログラミング波形を示す。
【図17】フルシーケンス転換をともなうキャッシュプログラミング操作における相対的なタイミングを示す。
【図18】キャッシュページコピー操作におけるラッチの処理を示す。
【図19A】キャッシュページコピー操作における相対的なタイミングを示す。
【図19B】キャッシュページコピー操作における相対的なタイミングを示す。
【図20A】LM符号を使って各メモリセルで2ビットのデータを蓄積する場合の4状態メモリアレイのしきい値電圧分布を示す。
【図20B】LM符号を使用する既存の2ラウンドプログラミング方式における下位ページプログラミングを示す。
【図20C】LM符号を使用する既存の2ラウンドプログラミング方式における上位ページプログラミングを示す。
【図20D】LM符号によって符号化される4状態メモリの下位ビットを識別するにあたって必要となる読み出し操作を示す。
【図20E】LM符号によって符号化される4状態メモリの上位ビットを識別するにあたって必要となる読み出し操作を示す。
【図21】下位ページプログラミングの概略的タイミング図であって、次のページのプログラムデータを未使用データラッチへロードするバックグラウンド操作を示す。
【図22】QWPを使用する4状態上位ページまたはフルシーケンスプログラミングの様々な段階で追跡する必要のある状態の数を示す表である。
【図23】上位ページまたはフルシーケンスプログラミングの概略的タイミング図であって、次のページのプログラムデータを未使用データラッチにロードするバックグラウンド操作を示す。
【図24】本発明の一般的な実施形態に従い目下の多段階メモリ操作と同時進行するラッチ操作を示すフローチャートである。
【図25】下位ページプログラミングの概略的タイミング図であって、使用可能なラッチを使った読み出し割り込み操作を示す。
【図26】上位ページプログラミングの概略的タイミング図であって、使用可能なラッチを使った読み出し割り込み操作を示す。
【図27】典型的なメモリ操作に関連する情報一式を示す。
【図28】シンプルなキャッシュ操作をサポートする従来のメモリシステムを示す。
【図29】複数のメモリ操作のキュー操作と併合を示すフローチャートである。
【図30】メモリ操作キューとメモリ操作キュー管理部が組み込まれた好適なオンチップ制御回路の概略的ブロック図を示す。
【図31】消去操作中のバックグラウンドキャッシュ操作を示す概略的フローチャートである。
【図32】メモリアレイに対する消去操作の概略的タイミング図であって、消去操作の第1の消去段階におけるプログラムデータのロード操作を示す。
【図33】メモリアレイに対する消去操作の概略的タイミング図であって、消去操作のソフトプログラミング/ベリファイ段階におけるプログラムデータのロード操作を示す。
【図34】メモリアレイに対する消去操作の概略的タイミング図であって、読み出し操作の挿し込みと、使用可能なラッチを使って得られたデータの出力操作とを示す。
【図35】図31のステップ780における消去操作のときにバックグラウンドによる読み出しスクラブのための特定のキャッシュ操作を示す概略的フローチャートである。
【図36】消去中の先行バックグラウンド読み出しを示す。
【図37】典型的な読み出しキャッシュ方式を概略的に示す。
【図38A】LM符号によって符号化される論理ページでキャッシュ読み出しを行う概略的タイミング図である。
【図38B】上位ビット論理ページがまだプログラムされていないときに下位ビット論理ページを読み出す特殊なケースでLM符号を用いるキャッシュ読み出しの概略的タイミング図である。
【図39】2ビットメモリでオールビット感知をともなうキャッシュ読み出しの概略的タイミング図を示す。
【図40】2ビットメモリセルを具備し、ページを最適順序でプログラムすることにより隣接するワード線におけるメモリセル間のユーピン効果を最小限に抑えるメモリの一例を示す。
【図41】図37に示された従来の方式に従いLA補正をともなうLM符号のための読み出しキャッシングの一実施例を示す。
【図42】LM符号とLA補正をともなう改良された読み出しキャッシング方式を示す。
【図43】改良された読み出しキャッシングを示す概略的フローチャートである。
【図44】図43のステップ850をより明確に示す概略的フローチャートである。
【図45】図43のステップ830をより明確に示す概略的フローチャートである。
【技術分野】
【0001】
本発明は、一般的に電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)やフラッシュEEPROMをはじめとする不揮発性半導体メモリに関し、具体的には重複メモリ操作を可能にする共有ラッチ構造に基づくキャッシュ操作に関する。
【背景技術】
【0002】
不揮発性電荷蓄積が可能な固体メモリ、特に形状因子が小さいカードにパッケージされたEEPROMやフラッシュEEPROMの形をとるものが最近、情報家電や家庭用電化製品を中心に様々なモバイルおよびハンドヘルド装置の記憶装置として盛んに選ばれている。同じく固体メモリであるRAM(ランダムアクセスメモリ)と違って、フラッシュメモリは不揮発性であって、電源を切った後にも蓄積されたデータを保持する。フラッシュメモリはコストが高くつくにもかかわらず、大容量記憶用途で使われることが多くなっている。ハードドライブやフロッピーディスク等、回転する磁気媒体を基礎とする従来の大容量記憶は、モバイル/ハンドヘルド環境に不向きである。なぜならば、ディスクドライブはかさばり、機械的な故障が起きやすく、待ち時間が長く、電力を食うからである。このような望ましくない属性を持つディスク方式の記憶装置は、ほとんどのモバイル/ポータブルな用途において実用的でない。他方、埋め込み形で着脱可能なカードの形をとるフラッシュメモリは、その小さなサイズと、低消費電力と、高速度と、高い信頼性ゆえにモバイル/ハンドヘルド環境に理想的にマッチする。
【0003】
EEPROMと電気的にプログラム可能な読み出し専用メモリ(EPROM)は、消去が可能で、そのメモリセルに新しいデータを書き込める、すなわち「プログラム」できる、不揮発性メモリである。いずれも半導体基板のソース領域とドレイン領域との間のチャネル領域上に配置された電界効果トランジスタ構造による導電性フローティング(非接続)ゲートを利用する。さらにこのフローティングゲートの上にコントロールゲートを設ける。トランジスタのしきい値電圧特性は、フローティングゲート上に保持される電荷量によって制御される。つまり、フローティングゲート上の所与のレベルの電荷に応じてコントロールゲートに印加すべき対応する電圧(しきい値)があり、これが印加されることによりトランジスタは「オン」に切り替わり、ソース領域とドレイン領域との導通が可能となる。
【0004】
フローティングゲートは一定範囲の電荷を保持でき、しきい値電圧ウィンドウ内の任意のしきい値電圧レベルまでプログラムできる。しきい値電圧ウィンドウのサイズは装置の最小しきい値レベルと最大しきい値レベルによって決まり、これはフローティングゲートにプログラムできる電荷の範囲に相当する。しきい値ウィンドウは通常、メモリ装置の特性と、動作条件と、履歴とに左右される。セルの記憶状態は、基本的にはウィンドウ内の個々の分解可能なしきい値電圧レベル範囲によって限定される。
【0005】
メモリセルとして機能するトランジスタは通常、2通りの方法のいずれか一方によって「プログラム済み」状態までプログラムされる。「ホットエレクトロン注入法」では、ドレインに印加される高電圧によって基板チャネル領域上の電子が加速する。同時に、コントロールゲートに印加される高電圧は、薄いゲート誘電体を通じてフローティングゲートまでホットエレクトロンを引き寄せる。「トンネル注入法」では、基板に比べて高い電圧をコントロールゲートに印加する。かくして、電子は基板から介在するフローティングゲートまで引き寄せられる。
【0006】
メモリ装置の消去にはいくつか方法がある。EPROMの場合、紫外線によってフローティングゲートから電荷を取り除くことによってメモリをまとめて消去できる。EEPROMの場合、コントロールゲートに比べて高い電圧を基板に印加し、フローティングゲートの電子を薄い酸化物を通じて基板チャネル領域まで誘導することによってメモリセルを電気的に消去できる(すなわち、ファウラ・ノルドハイム・トンネリング)。通常、EEPROMはバイト単位で消去可能である。フラッシュEEPROMの場合、メモリが一度にまるごと、または一度に1ブロック以上が電気的に消去され、ブロックは512バイト以上のメモリを構成することがある。
【0007】
不揮発性メモリセルの例
メモリ装置は通常、1つ以上のメモリチップをカード上に実装させる。それぞれのメモリチップは、復号器や消去、書き込み、および読み出し回路等の周辺回路によって支援されるメモリセルアレイを備える。より精緻なメモリ装置には、知的で高度なメモリ操作とインターフェイスを実行するコントローラも付属される。現在、商業的に成功を収めた不揮発性の固体メモリ装置が数多く使われている。これらのメモリ装置には様々なタイプのメモリセルが採用され、各種のメモリセルは1つ以上の電荷蓄積素子を持つ。
【0008】
図1A〜図1Eは、様々な不揮発性メモリセルの例を概略的に示すものである。
図1Aは、フローティングゲートで電荷を蓄積するEEPROMセルの形をとる不揮発性メモリを概略的に示す。電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)はEPROMに似た構造を持つほか、適度の電圧が印加されたときにフローティングゲートで電気的に電荷を装填し除去するメカニズムが用意され、紫外線に晒す必要はない。米国特許第5,595,924号(特許文献1)には、そのようなセルの例とこの製造方法が記載されている。
【0009】
図1Bは、選択ゲートとコントロールゲートまたはステアリングゲートの両方を具備するフラッシュEEPROMセルを概略的に示す。メモリセル10は、ソース14およびドレイン16拡散層間に「分割チャネル」12を具備する。セルは、2つの直列トランジスタT1およびT2によって事実上形成される。T1は、フローティングゲート20とコントロールゲート30とを具備するメモリトランジスタとして機能する。フローティングゲートで選択可能な電荷量を蓄積できる。チャネルのT1部分を流れる電流量は、コントロールゲート30の電圧と介在するフローティングゲート20に存在する電荷量とに左右される。T2は、選択ゲート40を具備する選択トランジスタとして機能する。選択ゲート40の電圧によってT2がオンに切り替わると、チャネルのT1部分の電流はソースおよびドレイン間を通過できる。選択トランジスタは、コントロールゲートの電圧から独立したスイッチをソース−ドレインチャネル沿いに提供する。1つの利点として、フローティングゲートにおける電荷空乏(正)のためにゼロコントロールゲート電圧でなお導通するセルをオフに切り替えるのにこれを役立てることができる。もう1つの利点として、ソース側の注入プログラミングの実施がより容易になる。
【0010】
分割チャネルメモリセルのシンプルな実施形態では、図1Bにて点線で概略的に示すように、選択ゲートとコントロールゲートを同じワード線へ接続する。それには、チャネルの一部分の上に電荷蓄積素子(フローティングゲート)を配置し、もう1つのチャネル部分と電荷蓄積素子の上にはコントロールゲート構造(ワード線の一部)を配置する。これにより2つの直列トランジスタを持つセルが事実上形成され、一方のトランジスタ(メモリトランジスタ)は、電荷蓄積素子上の電荷量とワード線上の電圧との組み合わせによりチャネルのこの部分を流れる電流量を制御し、他方のトランジスタ(選択トランジスタ)はゲートとして機能するワード線だけを持つ。米国特許第5,070,032号(特許文献2)、第5,095,344号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)、および第5,661,053号(特許文献6)には、そのようなセルの例と、メモリシステムにおけるその使用と、製造方法とが記載されている。
【0011】
図1Bに示された分割チャネルセルのより精緻な実施形態では、選択ゲートとコントロールゲートが独立し、点線で結ばれていない。一実施例では、ワード線に対し垂直の制御(またはステアリング)線へ接続されたセルアレイに1列のコントロールゲートを具備する。その効果として、選択されたセルの読み出しやプログラミングにあたってワード線が2つの機能を同時に果たさずにすむ。2つの機能とは(1)選択トランジスタのゲートとしての役割を果たすことであって、選択トランジスタをオンおよびオフに切り替えるにあたって適度の電圧を必要とし、(2)ワード線と電荷蓄積素子との電界(容量)結合を通じて電荷蓄積素子の電圧を所望のレベルまで持っていくことである。多くの場合、これらの機能の両方を1つの電圧で適切に遂行するのは困難である。コントロールゲートと選択ゲートの個別制御により、ワード線は機能(1)を果たすだけでよく、機能(2)は追加の制御線が果たす。この能力により、対象となるデータにプログラミング電圧を適合させる高性能プログラミング設計が可能となる。フラッシュEEPROMアレイにおける独立のコントロール(ステアリング)ゲートの使用は、例えば米国特許第5,313,421号(特許文献7)および第6,222,762号(特許文献8)に記載されている。
【0012】
図1Cは、二重フローティングゲートと独立の選択ゲートおよびコントロールゲートとを具備するもう1つのフラッシュEEPROMセルを概略的に示す。メモリセル10は図1Bのものに類似するが、3つの直列トランジスタを事実上具備する。この種のセルでは、ソースおよびドレイン拡散層間のチャネル上に2つの蓄積素子(すなわちT1−左とT1−右)があり、その間には選択トランジスタT1がある。メモリトランジスタはフローティングゲート20’および20”とコントロールゲート30’および30”をそれぞれ具備する。選択トランジスタT2は選択ゲート40によって制御される。読み出しや書き込みにあたって、一度に1対のメモリトランジスタのいずれか一方のみにアクセスする。蓄積単位T1−左にアクセスするときにはT2とT1−右の両方がオンになり、チャネルのT1−左部分の電流はソースおよびドレイン間を通過できる。同様に、蓄積単位T1−右にアクセスするときにはT2とT1−左がオンに転換される。消去は、選択ゲートポリシリコンの一部分をフローティングゲートに近づけ、十分な正電圧(例えば、20V)を選択ゲートに印加し、フローティングゲートの中に蓄積された電子を選択ゲートポリシリコンへ抜けさせることによって達成する。
【0013】
図1Dは、NANDセルの形に構成された一連のメモリセルを概略的に示す。NANDセル50は、ソースおよびドレインによってデイジーチェーン方式で接続された一連のメモリトランジスタM1,M2・・・Mn(n=4,8,16またはそれ以上)からなる。1対の選択トランジスタS1、S2は、NANDセルのソース端子54とドレイン端子56を通じて外部に至るメモリトランジスタチェーンの接続を制御する。メモリアレイにおいてソース選択トランジスタS1がオンに転換されると、ソース端子はソース線へ結合される。同様に、ドレイン選択トランジスタS2がオンに転換されると、NANDセルのドレイン端子はメモリアレイのビット線へ結合される。チェーンの中の各メモリトランジスタは、所与の電荷量を蓄積して目的の記憶状態を表現する電荷蓄積素子を具備する。各メモリトランジスタのコントロールゲートは読み出し操作と書き込み操作を制御する。選択トランジスタS1、S2のコントロールゲートは、それぞれのソース端子54とドレイン端子56を介したNANDセルへのアクセスを制御する。
【0014】
NANDセルの中でアドレス指定されたメモリトランジスタを読み出したりプログラミング中にベリファイしたりするときには、そのコントロールゲートに適切な電圧を供給する。同時に、NANDセル50の中でアドレス指定されていない残りのメモリトランジスタは、それぞれのコントロールゲートに印加される十分な電圧によって完全にオンに転換される。かくして、個々のメモリトランジスタのソースからNANDセルのソース端子54にかけて導電経路ができあがり、個々のメモリトランジスタのドレインからセルのドレイン端子56にかけても同様である。米国特許第5,570,315号(特許文献9)、第5,903,495号(特許文献10)、第6,046,935号(特許文献11)には、そのようなNANDセル構造を持つメモリ装置が記載されている。
【0015】
図1Eは、誘電体層で電荷を蓄積する不揮発性メモリを概略的に示す。前述した導電性フローティングゲート素子の代わりに誘電体層を使用している。エイタンらの「NROM:新しい局限トラッピング、2ビット不揮発性メモリセル」,IEEE電子デバイスレター,21巻,11号,2000年11月,543〜545ページ(Eitan et al., “NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," IEEE Electron Device Letters, vol. 21, no.11, November 2000, pp. 543-545) には、このような誘電性蓄積素子を利用するメモリ装置が記載されている。ソースおよびドレイン拡散層間のチャネルにまたがってONO誘電体層が延在する。1データビットのための電荷はドレインに近い誘電体層に局在し、他のデータビットのための電荷はソースに近い誘電体層に局在する。例えば、米国特許第5,768,192号(特許文献12)および第6,011,725号(特許文献13)は2つの二酸化ケイ素層間にトラッピング誘電体をはさむ不揮発性メモリを開示している。多状態データ記憶は、誘電体の中で空間的に隔てられた電荷蓄積領域のバイナリ状態を別々に読み出すことによって実現する。
【0016】
メモリアレイ
メモリ装置は通常、行列に配置されワード線とビット線によってアドレス指定できる二次元メモリセルアレイを含む。このアレイはNORタイプかNANDタイプのアーキテクチャに従って形成できる。
【0017】
NORアレイ
図2は、NORメモリセルアレイの一例を示す。これまでNORタイプのアーキテクチャを持つメモリ装置は、図1Bまたは図1Cに描かれたタイプのセルを用いて実装されてきた。各メモリセル行はそれぞれのソースとドレインによってデイジーチェーン方式で接続される。この設計は仮想接地設計と呼ばれることがある。各々のメモリセル10はソース14と、ドレイン16と、コントロールゲート30と、選択ゲート40とを具備する。行内のセルの選択ゲートはワード線42へ接続される。列内のセルのソースおよびドレインは選択されたビット線34および36へそれぞれ接続する。メモリセルのコントロールゲートと選択ゲートを別々に制御する実施例では、ステアリング線36によって列内のセルのコントロールゲートが接続される。
【0018】
多くのフラッシュEEPROM装置は、コントロールゲートと選択ゲートがともに接続されたメモリセルを用いて実装される。この場合、ステアリング線が必要なく、ワード線が各行の全セルのコントロールゲートと選択ゲートを単に接続する。米国特許第5,172,338号(特許文献14)および第5,418,752号(特許文献15)にはこれらの設計の例が開示されている。これらの設計ではワード線は基本的に2つの役割、すなわち行選択の役割と、読み出しやプログラミングにあたって行内の全セルにコントロールゲート電圧を供給する役割とを果たす。
【0019】
NANDアレイ
図3は、メモリセルの、例えば図1Dに示されたような、NANDアレイの一例を示す。ビット線は各NANDセル列に沿ってNANDセルのドレイン端子56へ結合する。ソース線はNANDセル行の全ソース端子54へ接続する。さらに、行沿いのNANDセルのコントロールゲートは一連の対応するワード線へ接続する。接続されたワード線を通じてコントロールゲートに適切な電圧をかけて1対の選択トランジスタ(図1D参照)をオンに転換することにより、1行のNANDセル全体をアドレス指定できる。NANDセルからなるチェーンの中である1つのメモリトランジスタを読み出すときには、チェーンの中の残りのメモリトランジスタがそれぞれの関連するワード線を通じて強くオンに転換されるため、チェーンの中を流れる電流は基本的に、読み出し対象セルに蓄積される電荷レベルに左右される。米国特許第5,570,315号(特許文献9)、第5,774,397号(特許文献16)、および第6,046,935号(特許文献11)には、NANDアーキテクチャアレイの例とメモリシステムの一部としてのこの動作が記載されている。
【0020】
ブロック消去
電荷蓄積メモリ装置のプログラミングではさらに電荷を電荷蓄積素子に加える。このためプログラミング操作にあたって、電荷蓄積素子に既に存在する電荷を事前に除去(または消去)しなければならない。1つ以上のメモリセルブロックを消去するために消去回路(図示せず)を設ける。セルアレイ全体あるいはかなりのアレイのセル群を電気的に一斉に(すなわち、瞬時に)消去するEEPROM等の不揮発性メモリは、「フラッシュ」EEPROMと呼ばれる。消去の後にはセル群をプログラムできる。一斉に消去できるセル群は1つ以上のアドレス指定可能な消去単位からなる。消去単位またはブロックは通常1ページ以上のデータを蓄積し、このページがプログラミングと読み出しの単位となるが、1回の操作で2ページ以上をプログラムしたり読み出したりする場合もある。各ページは通常1セクタ以上のデータを格納し、このセクタのサイズはホストシステムによって決まる。磁気ディスクドライブの規格に従い512バイトのユーザデータからなるセクタはその一例であり、さらにここにユーザデータに関する、および/またはこれを格納するブロックに関する、何バイトかのオーバーヘッド情報が加わる。
【0021】
読み出し/書き込み回路
通常の2状態EEPROMセルでは、1つ以上の電流区切りレベルを設定して伝導ウィンドウを2つの領域に分割する。予め決められた一定の電圧を印加することによってセルを読み出すときには、そのソース/ドレイン電流を区切りレベル(または基準電流IREF )に比較することによって記憶状態を決定する。読み出される電流が区切りレベルのものより高ければ、セルは1つの論理状態(例えば、「0」状態)にあると判断する。他方、電流が区切りレベルのものに満たなければ、セルはもう1つの論理状態(例えば、「1」状態)にあると判断する。そのような2状態セルは1ビットのデジタル情報を蓄積する。外部からプログラムできる基準電流源は多くの場合、メモリシステムの一部として用意され、区切りレベル電流を生成する。
【0022】
メモリ容量を増やすため、フラッシュEEPROM装置の実装密度は半導体技術の進歩にともないどんどん高くなっている。各メモリセルで3状態以上を蓄積することによって蓄積容量を増やす方法もある。
【0023】
多状態またはマルチレベルEEPROMメモリセルの場合、伝導ウィンドウを複数の区切り点で3つ以上の領域に分割し、各セルで2ビット以上のデータを蓄積できる。したがって、EEPROMアレイで蓄積できる情報は、各セルで蓄積できる状態数にともない増加する。米国特許第5,172,338号(特許文献14)には、多状態またはマルチレベルメモリセルを備えるEEPROMまたはフラッシュEEPROMが記載されている。
【0024】
実際には、コントロールゲートに基準電圧が印加されるときにセルのソース電極とドレイン電極にかけて伝導電流を感知することによってセルの記憶状態を読み出すのが普通である。セルのフローティングゲート上の各電荷につき、一定の基準コントロールゲート電圧に対応する伝導電流を検出できる。同様に、対応するしきい値電圧ウィンドウや伝導電流ウィンドウはフローティングゲートにプログラムできる電荷の範囲によって決まる。
【0025】
分割された電流ウィンドウの中で伝導電流を検出する代わりに、コントロールゲートで検査の対象となる所与の記憶状態に対してしきい値電圧を設定し、伝導電流がしきい値電流より低いかまたは高いかを検出することも可能である。一実施例において、ビット線の静電容量を通じて放電する伝導電流のレートを調べることによってしきい値電流に対する伝導電流の検出を果たす。
【0026】
図4は、フローティングゲートが一度に選択的に蓄積できる4通りの電荷Q1〜Q4でソース−ドレイン電流ID とコントロールゲート電圧VCGとの関係を示すものである。実線で描かれた4本のID 対VCG曲線はメモリセルのフローティングゲートにプログラムできる4通りの電荷レベルを表し、4通りの記憶状態にそれぞれ相当する。一例として、セル集団のしきい値電圧ウィンドウの範囲は0.5Vから3.5Vにおよぶ。しきい値ウィンドウをそれぞれ0.5Vの間隔で5つの領域に分割することにより、6通りの記憶状態に区切ることができる。例えば、図に示されたように、2μAの基準電流IREF を使用するなら、Q1でプログラムされるセルは、その曲線がVCG=0.5Vおよび1.0Vで区切られたしきい値ウィンドウの領域内でIREF と交差するため、記憶状態「1」にあるとみなされる。同様に、Q4は記憶状態「5」にある。
【0027】
前の説明から分かるように、メモリセルで蓄積する状態が多ければ多いほどしきい値ウィンドウは細かく分割される。この場合、所要の分解能を達成するためにプログラミング操作と読み出し操作の精度を上げる必要がある。
【0028】
米国特許第4,357,685号(特許文献17)には2状態EPROMをプログラムする方法が開示され、この方法ではセルが特定の状態までプログラムされるときに相継ぐプログラミング電圧パルスを受け、その都度フローティングゲートに電荷が加わる。パルスの合間にセルの読み返しまたはベリファイを行い、区切りレベルに対するソース−ドレイン電流を確認する。所望の状態に達した電流がベリファイされるとプログラミングは停止する。使用するプログラミングパルストレインの周期または振幅は上げることができる。
【0029】
従来技術のプログラミング回路は、単純に消去または接地状態から目標状態に達するまでプログラミングパルスを印加しながらしきい値ウィンドウを通過していく。実際、十分な分解能を実現するには、分割された、または区切られた、各領域につき少なくとも5ステップ程度のプログラミングステップを踏む必要がある。2状態メモリセルならこの性能で許容される。しかし、多状態セルの場合、必要なステップ数が分割数にともない増加するため、プログラミングの精度または分解能を上げなければならない。例えば、16状態セルで目標状態までプログラムするには少なくとも平均40のプログラミングパルスが必要となる。
【0030】
図5は、読み出し/書き込み回路170から行デコーダ130と列デコーダ160とを通じて典型的なメモリアレイ構成100にアクセスするメモリ装置を概略的に示す。図2および図3との関係で説明したように、メモリアレイ100にあるメモリセルのメモリトランジスタは、選択されたワード線とビット線との組を通じてアドレス指定できる。アドレス指定されたメモリトランジスタのそれぞれのゲートに適切な電圧を印加するにあたって、行デコーダ130は1つ以上のワード線を選択し、列デコーダ160は1つ以上のビット線を選択する。読み出し/書き込み回路170は、アドレス指定されたメモリトランジスタの記憶状態を読み出すため、または書き込むため(プログラムするため)にある。読み出し/書き込み回路170は、ビット線を通じてアレイ内の記憶素子へ接続するいくつかの読み出し/書き込みモジュールを備える。
【0031】
図6Aは、個々の読み出し/書き込みモジュール190の概略的ブロック図である。読み出しやベリファイのときには基本的に、選択されたビット線を通じて接続するアドレス指定されたメモリトランジスタのドレインを流れる電流をセンス増幅器で判定する。この電流は、メモリトランジスタに蓄積された電荷とそのコントロールゲート電圧に左右される。例えば、多状態EEPROMセルでは数通りのレベルの1つまでフローティングゲートを荷電できる。4レベルセルならこれを使って2ビットのデータを蓄積できる。センス増幅器によって検出されたレベルはレベル−ビット変換ロジックによって1組のデータビットに変換されて、データラッチに蓄積される。
【0032】
読み出し/書き込み性能および精度に影響する要因
読み出しとプログラミングの性能を上げるために、アレイの中にある複数の電荷蓄積素子またはメモリトランジスタが並行して読み出されるか、またはプログラムされる。したがって、記憶素子からなる論理「ページ」の読み出しまたはプログラミングは一斉に行われる。既存のメモリアーキテクチャでは通常、1行の中にいくつかの交互ページがある。1ページの全記憶素子の読み出しまたはプログラミングは一斉に行われる。列デコーダは交互ページの各々を対応する読み出し/書き込みモジュールへ選択的に接続する。例えば、一実施例において、532バイト(512バイトにオーバーヘッドの20バイトを加えたもの)のページサイズでメモリアレイを設計する。各列にドレインビット線があって各行につき2つの交互ページがあるなら列は8,512列になり、各ページには4,256列が関連している。全ての偶数ビット線か奇数ビット線のいずれかを並行して読み出すかまたは書き込むために、接続可能な4,256個のセンスモジュールがある。こうして、1ページ4,256ビット(すなわち、532バイト)のデータを並行して記憶素子のページから読み出すかまたはページへプログラムする。読み出し/書き込み回路170を形成する読み出し/書き込みモジュールは様々なアーキテクチャに組むことができる。
【0033】
図5を参照し、読み出し/書き込み回路170は列をなす読み出し/書き込みスタック180に編成されている。それぞれの読み出し/書き込みスタック180は読み出し/書き込みモジュール190を積み重ねたものである。メモリアレイにおける列の間隔は、これを占有する1つまたは2つのトランジスタのサイズによって決まる。しかし、図6Aから見てとれるように、読み出し/書き込みモジュールの回路はさらに多くのトランジスタと回路素子で実装され、多数の列にわたってスペースを占めることが見込まれる。占有された列の中で2つ以上の列を処理するため、多数のモジュールを互いに積み重ねる。
【0034】
図6Bは、読み出し/書き込みモジュール190の積み重ねによって従来どおりに実装された図5の読み出し/書き込みスタックを示す。例えば、読み出し/書き込みモジュールが16列にわたって延在するなら、1スタック8読み出し/書き込みモジュールの読み出し/書き込みスタック180を使って8列を並列処理できる。この読み出し/書き込みスタックは列デコーダを通じて一群に沿って8つの奇数(1,3,5,7,9,11,13,15)列か8つの偶数(2,4,6,8,10,12,14,16)列に結合できる。
【0035】
既に述べたように、従来のメモリ装置は一度に全ての偶数ビット線または全ての奇数ビット線に対して大掛かりな並列処理を行うことによって読み出し/書き込み操作を向上させる。この1行2交互ページのアーキテクチャは、読み出し/書き込み回路ブロックの整合問題の緩和に役立つ。これはビット線間の容量結合をいかにコントロールするかにも左右される。1組の読み出し/書き込みモジュールを偶数ページまたは奇数ページのいずれかに多重化するにはブロックデコーダを使用する。こうすれば1組のビット線で読み出しかプログラミングが行われているときに互い違いの組のビット線を接地でき、隣接する結合は最小限に抑えられる。
【0036】
しかし、交互ページアーキテクチャは少なくとも3つの点で不利である。第1に、追加の多重化回路を必要とする。第2に、性能は遅い。ワード線によって接続されたメモリセルまたは1行のメモリセルで読み出しまたはプログラミングを完了するには、2回の読み出し操作か2回のプログラミング操作が必要となる。第3に、2つの隣接する電荷蓄積素子が別々のときにプログラムされる、例えば奇数ページと偶数ページとで別々にプログラムされる場合のフローティングゲートレベルにおける隣接する電荷蓄積素子間の電界結合等、好ましくない影響に対処するにあたって最適ではない。
【0037】
隣接する電界結合の問題はメモリトランジスタの間隔が狭まるにつれて顕著となる。メモリトランジスタではチャネル領域とコントロールゲートとの間に電荷蓄積素子が挟まれている。チャネル領域を流れる電流は、電荷蓄積素子とコントロールゲートの電界がもたらす最終的な電界と相関関係にある。メモリトランジスタは密度の増加にともない互いに接近する。隣接する電荷素子からの電界は影響を受けるセルの最終的な電界に大きく影響する。隣接する電界は、隣接する電荷蓄積素子にプログラムされる電荷に左右される。この摂動を招く電界には、隣接する電荷蓄積素子のプログラミング状態に応じて変化する動的な性質がある。隣接する電荷蓄積素子の状態の変化によっては、影響を受けるセルの読み出しに時間によってばらつきが生じるおそれがある。
【0038】
従来の交互ページアーキテクチャでは、隣接するフローティングゲート結合によって生じるエラーが激化する。偶数ページと奇数ページのプログラミングと読み出しは別々に行われるため、介在するページの状況次第では、ページがプログラムされるときの条件とページの読み返しが行われるときの条件がまったく異なることがある。多状態の実施例では、密度の増加にともない読み出しエラーが深刻化し、読み出し操作の精度を上げてしきい値ウィンドウの分割を粗くする必要がある。性能は損なわれ、多状態の実施例の潜在的な容量は制限される。
【0039】
米国公開特許出願第2004−0060031号(特許文献18)では、大きな読み出し/書き込み回路ブロックで対応するメモリセルブロックを並行して読み書きする、高性能でありながらコンパクトな不揮発性メモリ装置が開示されている。特に、このメモリ装置のアーキテクチャは読み出し/書き込み回路ブロックにおける冗長性を最小限に抑える。時分割方式で実質的に少数の共通部分とやり取りしながら並行して動作するブロック読み出し/書き込みモジュールの中核部分に読み出し/書き込みモジュールブロックを再配分することにより、スペースと電力を大幅に節約する。特に、複数のセンス増幅器とデータラッチとの間にある読み出し/書き込み回路の中では共通のプロセッサによってデータ処理が行われる。
【0040】
このように高性能・高容量の不揮発性メモリが一般に求められている。特に、読み出しとプログラミングの性能が高く、コンパクトで効率的でありながら読み出し/書き込み回路におけるデータ処理に幅広く対応する改良されたプロセッサを備えるコンパクトな不揮発性メモリが求められている。
【特許文献1】米国特許第5,595,924号
【特許文献2】米国特許第5,070,032号
【特許文献3】米国特許第5,095,344号
【特許文献4】米国特許第5,315,541号
【特許文献5】米国特許第5,343,063号
【特許文献6】米国特許第5,661,053号
【特許文献7】米国特許第5,313,421号
【特許文献8】米国特許第6,222,762号
【特許文献9】米国特許第5,570,315号
【特許文献10】米国特許第5,903,495号
【特許文献11】米国特許第6,046,935号
【特許文献12】米国特許第5,768,192号
【特許文献13】米国特許第6,011,725号
【特許文献14】米国特許第5,172,338号
【特許文献15】米国特許第5,418,752号
【特許文献16】米国特許第5,774,397号
【特許文献17】米国特許第4,357,685号
【特許文献18】米国公開特許出願第2004−0060031号
【特許文献19】米国公開特許出願第2004−0109357号
【特許文献20】米国特許出願第11/026,536号
【特許文献21】“Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories" という米国特許出願
【特許文献22】2005年3月16日に出願された“Non-Volatile Memory and Method with Power-Saving Read and Program-Verify Operations" という米国特許出願
【特許文献23】米国特許出願第11/013,125号
【特許文献24】米国特許出願第10/846,289号
【特許文献25】米国特許出願第11/022,462号
【特許文献26】米国特許出願第10/915,039号
【特許文献27】米国特許第6,266,273号
【特許文献28】米国公開特許出願第2004−0109362号
【特許文献29】米国特許第6,657,891号
【特許文献30】米国特許出願第11/323,596号
【特許文献31】米国特許第7,012,835号
【特許文献32】米国特許出願第11/099,049号
【非特許文献1】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)
【発明の開示】
【0041】
本発明の一態様に従い、内部メモリが読み出し、プログラミング、消去といった別の操作に従事しているときにメモリでデータを出し入れできるキャッシュ操作を提示する。特に、そのようなキャッシュ操作を可能にするデータラッチの構成とその使用方法を説明する。
【0042】
データラッチをいくつかの物理ページで共用するアーキテクチャを説明する。例えば、読み出し/書き込みスタックはメモリのビット線と関連し、多数のワード線によって共用される。メモリである1つの操作が進行しているときに、これらのラッチのいずれかが空いているなら、それらのラッチを使って同じワード線か別のワード線における先々の操作に向けてデータをキャッシュでき、転送は別の操作の背後に潜在化し時間の節約になる。これは、異なる操作または操作段階をパイプラインする量を増やすことによって性能を上げることができる。一例において、キャッシュプログラミング操作で、ある1つのページデータをプログラムしているときに別のページデータをロードすることによって転送時間を節約できる。もう1つの例として、代表的な実施形態において、ある1つのワード線に対する読み出し操作を別のワード線に対する書き込み操作に挿し込むことにより、データの書き込みが継続しているときには読み出しデータをメモリから出すことができる。
【0043】
種々の態様によると、第1のページデータで書き込み等の操作が進行しているときには、(例えば、ECC操作を行うため)同じブロックでワード線が異なる別のページからデータをトグルアウトできる。この操作段階間パイプラインにより、データ転送に要する時間を第1のページデータに対する操作の背後に潜在化させることができる。より一般的に、ある1つの操作の一部分を、通常ならばこれよりも長い、別の操作の段階の合間に差し込むことが可能となる。もう1つの例として、例えば消去操作の段階の合間に、例えば消去パルスの前に、あるいは消去の後半部分として使われるソフトプログラミング段階の前に、感知操作を挿し込む。
【0044】
主要な態様において、様々な段階をともなう比較的長い操作を実行する場合、読み出し/書き込みスタックの共用ラッチが使用可能であれば、これを使って短い操作を割り込ませる。例えば、プログラミング操作や消去操作の中に読み出しを挿し込んだり、消去中にバイナリプログラミングを挿し込んだりすることができる。主要な代表的な実施形態において、同じ読み出し/書き込みスタックを共用するページのプログラミング操作のときに別のページデータをトグルイン/アウトし、例えばトグルアウトされ修正されるデータの読み出しは、データ書き込みのベリファイ段階に挿し込まれる。
【0045】
空きデータラッチを利用できる機会は数多くある。一般的に、1セル当たりnビットを蓄積するメモリの場合、各ビット線につきn個のデータラッチが必要となるが、これらのラッチの全てが常に必要となるわけではない。例えば、上位ページ/下位ページ形式でデータを蓄積する1セル当たり2ビットのメモリでは、下位ページをプログラムしているときに1つのデータラッチが必要となる(クイックパス書き込みを実施する場合、もう1つのラッチを使用する)。上位ページをプログラムしているときには2つのデータラッチが必要となる(クイックパス書き込みを実施する場合、第3のラッチを使用する)。より一般的に、多数のページを蓄積するメモリで全てのラッチが必要となるのは最上位ページをプログラムするときだけである。これにより、他のラッチはキャッシュ操作に利用できる。また、最上位ページの書き込み中でも、書き込み操作のベリファイ段階から種々の状態が排除されるにつれてラッチは解放される。具体的に、ベリファイすべき状態が最上位状態だけになると、ベリファイに必要なラッチは1つだけであり、他のラッチはキャッシュ操作に使うことができる。
【0046】
代表的な実施形態は、1セル当たり2ビットを蓄積し、各ビット線のデータにつき2つのラッチを具備し、さらにクイックパス書き込み用に1つのラッチを具備する4状態メモリに基づくものである。下位ページを書き込む操作、または消去する操作、または消去後にソフトプログラミングを行う操作は、基本的にはバイナリ操作であり、データラッチの一方は空いていてデータをキャッシュするために使うことができる。同様に、上位ページかフルシーケンスの書き込みを行う場合、最上位レベル以外はすべてベリファイ済みでベリファイすべき状態がただ1つになると、メモリはラッチを解放でき、解放されたラッチはデータのキャッシュに使うことができる。例えば、コピー操作等で1ページをプログラムする場合、例えば同じ組のビット線上の別のワード線で同じ組のデータラッチを共用する別のページの読み出しは、書き込みのプログラミングパルスとベリファイとの間に差し挟むことができる。アドレスは書き込み対象のページに切り替えることができ、書き込みプロセスは中断したところから再開でき、やり直しの必要はない。書き込みが継続しているときには、割り込ませた読み出しのときにキャッシュしたデータをトグルアウトし、チェックまたは修正し、元に戻し、先行する書き込み操作が完了した時点で書き戻すことができる。この種のキャッシュ操作では、最初のページのプログラミングの背後に2番目のページデータのトグルアウトと修正を潜在化させることができる。
【0047】
読み出し中のキャッシュ操作−バックグラウンド読み出し・書き込み操作
本発明の一態様に従い、多状態メモリセルでメモリセル間の摂動(ユーピン効果)を最小限に抑える必要がある場合、読み出しキャッシュ方式を提供する。読み出しデータのキャッシュ方式では、近接する物理ページまたはワード線からのデータに補正が左右される読み出し操作であっても、メモリコアから現在のページを感知しているときにデータラッチとI/Oバスを効率よく使用して、読み出し済みのページをトグルアウトする。
【0048】
好適な実施例において、「LM」符号化によって符号化され読み出しにあたってルックアヘッド(「LA」)補正を行うメモリに効率的な読み出しキャッシング方式を使用する。「LM」符号化と「LA」補正にはいずれも、読み出しデータの単なるトグル操作のほかに追加のラッチおよびバス活動が必要となる。現在のワード線における現在のページの読み出しに先立ち前もって必要なデータの読み出しを近傍のワード線で実行しなければならない場合でも、前もって必要な読み出しとそれにともなうI/Oアクセスを前のページを読み出すサイクル中に先回りして実行すれば、読み出し済みのページでI/Oアクセスが行われている間に現在の読み出しを実行できる。
【0049】
本発明のもうひとつの態様によると、複数のビットを一斉に感知するマルチビットのメモリセルページで読み出しキャッシング方式を実装する。好適な実施例において、全てのマルチビットを一斉に感知する。感知されたマルチビットのメモリセルページは各マルチビットにつき1つずつの複数のバイナリページに対応する。複数のサイクルでマルチビット感知が行われている間に各サイクルでバイナリページを出力する。この複数のページ数とマルチビットのビット数とは同じである。
【0050】
本発明のさらなる特徴と利点は、本発明の好適な実施形態に関する以降の説明を添付の図面と併せて解釈することによって理解される。
【発明を実施するための最良の形態】
【0051】
図7Aは、一群の分割読み出し/書き込みスタックを具備し本発明の改良されたプロセッサを実装するコンパクトなメモリ装置を概略的に示す。このメモリ装置は二次元のメモリセルアレイ300と、制御回路310と、読み出し/書き込み回路370とを含む。メモリアレイ300は、行デコーダ330を通じてワード線により、そして列デコーダ360を通じてビット線により、アドレス指定することができる。読み出し/書き込み回路370は一群の分割読み出し/書き込みスタック400として実装され、メモリセルからなるブロック(「ページ」とも呼ぶ)の読み出しまたはプログラミングを並行して行うことができる。ページは好適な実施形態において一連のメモリセル行から構成される。1行のメモリセルを多数のブロックまたはページに分割する別の実施形態において、個々のブロックに向けて読み出し/書き込み回路370を多重化するためのブロックマルチプレクサ350を設ける。
【0052】
制御回路310は読み出し/書き込み回路370と協働しながらメモリアレイ300でメモリ操作を遂行する。制御回路310は状態マシン312と、オンチップアドレスデコーダ314と、電力制御モジュール316とを含む。状態マシン312はメモリ操作のチップレベル制御を提供する。オンチップアドレスデコーダ314は、ホストまたはメモリコントローラで使われるアドレスとデコーダ330および360で使われるハードウェアアドレスとの間でアドレスインターフェイスを提供する。電力制御モジュール316は、メモリ操作中にワード線とビット線へ供給される電力と電圧を制御する。
【0053】
図7Bは、図7Aに示されたコンパクトなメモリ装置の好適な構成を示す。様々な周辺回路によるメモリアレイ300へのアクセスは、アレイの両側で対称的に行われるため、アクセス線と回路はそれぞれの側で半分に減る。行デコーダは行デコーダ330Aおよび330Bに分かれ、列デコーダは列デコーダ360Aおよび360Bに分かれる。メモリセル行を多数のブロックに分割する実施形態では、ブロックマルチプレクサ350がブロックマルチプレクサ350Aおよび350Bに分かれる。同様に、読み出し/書き込み回路は、下からビット線へ接続する読み出し/書き込み回路370Aと、アレイ300の上からビット線へ接続する読み出し/書き込み回路370Bとに分かれる。かくして、読み出し/書き込みモジュールの密度、したがって分割読み出し/書き込みスタック400の密度は、基本的には半減する。
【0054】
図8は、図7Aに示された読み出し/書き込みスタックにおける基本コンポーネントの一般的な構成を概略的に示す。本発明の一般的なアーキテクチャによると、読み出し/書き込みスタック400は、k本のビット線を感知するセンス増幅器212のスタックと、I/Oバス231を通じてデータを入出力するI/Oモジュール440と、入出力データを蓄積するデータラッチ430のスタックと、読み出し/書き込みスタック400でデータを処理し蓄積する共通プロセッサ500と、スタックコンポーネント間で通信を行うためのスタックバス421とを備える。読み出し/書き込み回路370間のスタックバスコントローラは、線411を通じて読み出し/書き込みスタック内の様々なコンポーネントを制御するための制御信号とタイミング信号とを提供する。
【0055】
図9は、図7Aおよび図7Bに示された読み出し/書き込み回路における読み出し/書き込みスタックの好適な構成を示す。各々の読み出し/書き込みスタック400はk本のビット線からなるグループに同時に働きかける。ページがp=r*k本のビット線を持つならば、r個の読み出し/書き込みスタック400−1・・・400−rがある。
【0056】
分割読み出し/書き込みスタック400からなる一群全体が並行して動作することにより、行に沿ってp個のセルからなるブロック(またはページ)の読み出しまたはプログラミングを並行して行うことができる。よって、セルの行全体に対してp個の読み出し/書き込みモジュールがある。各スタックでk個のメモリセルを処理するなら、バンク内の合計読み出し/書き込みスタックの数はr=p/kで求められる。例えば、バンク内のスタック数がrならp=r*kである。一例として、メモリアレイはp=512バイト(512×8ビット)、k=8を保持し、したがってr=512を保持する。好適な実施形態において、ブロックはセルの行全体である。別の実施形態において、ブロックは行内のセルの小集団である。セルの小集団は、例えば行全体の2分の1であったり、行全体の4分の1であったりする。セルの小集団は連続するセルであったり、1つおきのセルであったり、所定のセル数おきのセルであったりする。
【0057】
それぞれの読み出し/書き込みスタックには、例えば400−1の中には、基本的にk個のメモリセルからなるセグメントを並行して処理する212−1から212−kまでのセンス増幅器からなるスタックがある。米国公開特許出願第2004−0109357号(特許文献19)には好適なセンス増幅器が開示され、その全体が本願明細書において参照により援用されている。
【0058】
スタックバスコントローラ410は線411を通じて読み出し/書き込み回路370へ制御信号とタイミング信号を提供する。スタックバスコントローラそのものは線311を介してメモリコントローラ310に従属する。読み出し/書き込みスタック400内の通信は相互接続スタックバス431によって行われ、スタックバスコントローラ410によって制御される。制御線411は、スタックバスコントローラ410から読み出し/書き込みスタック400−1のコンポーネントにかけて制御信号とクロック信号を提供する。
【0059】
スタックバスは、好適な実施形態において、共通プロセッサ500とセンス増幅器のスタック212との間の通信のためのSABus422と、プロセッサとデータラッチのスタック430との間の通信のためのDBus423とに分かれる。
【0060】
データラッチのスタック430は、430−1から430−kまでのデータラッチを含み、各メモリセルにつき1つずつスタックに関連付けられている。I/Oモジュール440は、データラッチがI/Oバス231を通じて外部とデータをやり取りできるようにする。
【0061】
共通プロセッサは、エラー状態をはじめとするメモリ操作のステータスを伝えるステータス信号を出力する出力507をも含む。このステータス信号は、Wired−Or構成でFLAG BUS 509へ結合されたn−トランジスタ550のゲートを駆動するために使われる。FLAG BUSは好ましくは、コントローラ310によって予め荷電され、いずれかの読み出し/書き込みスタックによってステータス信号がアサートされるときにプルダウンされる。
【0062】
図10は、図9に示された共通プロセッサの改良された実施形態を示す。共通プロセッサ500は外部回路との通信のためのプロセッサバスPBUS 505と、入力ロジック510と、プロセッサラッチPLatch 520と、出力ロジック530とを備える。
【0063】
入力ロジック510はPBUSからデータを受信し、信号線411を通じてスタックバスコントローラ410から届く制御信号に応じて論理状態「1」、「0」、または「Z」(浮遊)のいずれか1つに変換されたデータをBSIノードへ出力する。セット/リセットラッチPLatch 520はBSIをラッチし、MTCHおよびMTCH* として一対の相補出力信号をもたらす。
【0064】
出力ロジック530はMTCH信号とMTCH* 信号を受信し、信号線411を通じてスタックバスコントローラ410から届く制御信号に応じて論理状態「1」、「0」、または「Z」(浮遊)のいずれか1つに変換されたデータをPBUS 505に出力する。
【0065】
共通プロセッサ500は所与のメモリセルに関係するデータを常に処理する。例えば、図10は、ビット線1へ結合されたメモリセルの場合を示している。対応するセンス増幅器212−1はノードを備え、ここにセンス増幅器データが現れる。このノードは好適な実施形態において、データを蓄積するSAラッチ214−1の形をとるものとする。同様に、対応する1組のデータラッチ430−1はビット線1へ結合されたメモリセルに関連する入力または出力データを蓄積する。好適な実施形態において、1組のデータラッチ430−1はnビットのデータを蓄積するにあたって十分なデータラッチ434−1・・・434−nを備える。
【0066】
共通プロセッサ500のPBUS 505は、一対の相補信号SAPおよびSANによって転送ゲート501がイネーブルになるとSBUS 422を通じてSAラッチ214−1にアクセスする。同様に、一対の相補信号DTPおよびDTNによって転送ゲート502がイネーブルになると、PBUS 505はDBUS 423を通じて1組のデータラッチ430−1にアクセスする。信号SAP、SAN、DTP、およびDTNは、スタックバスコントローラ410からの制御信号の一部として明示されている。
【0067】
図11Aは、図10に示された共通プロセッサの入力ロジックの好適な実施形態を示す。入力ロジック520はPBUS 505でデータを受信し、出力BSIは制御信号次第で同じになるか、反転するか、浮遊する。出力BSIノードは基本的に、転送ゲート522の出力か、Vddにかけて直列するpトランジスタ524および525を備えるプルアップ回路か、接地にかけて直列するnトランジスタ526および527を備えるプルダウン回路に左右される。プルアップ回路のゲートは、信号PBUSおよびONEによってそれぞれ制御されるpトランジスタ524および525へ至る。プルダウン回路のゲートは、信号ONEB<1>およびPBUSによってそれぞれ制御されるnトランジスタ526および527へ至る。
【0068】
図11Bは、図11Aの入力ロジックの真偽表を示す。ロジックは、PBUSと制御信号ONE、ONEB<0>、ONEB<1>とによって制御され、これらの制御信号はスタックバスコントローラ410からの制御信号の一部である。基本的には3つの転送モードPASSTHROUGH、INVERTED、およびFLOATEDをサポートする。
【0069】
BSIが入力データと同じになるPASSTHROUGHモードの場合、信号ONEは論理「1」、ONEB<0>は「0」、ONEB<1>は「0」となる。これによりプルアップまたはプルダウンはディスエーブルになるが転送ゲート522はイネーブルになり、データはPBUS 505のデータが出力523へ引き渡される。BSIが入力データの逆になるINVERTEDモードの場合、信号ONEは「0」、ONEB<0>は「1」、ONEB<1>は「1」となる。これにより転送ゲート522はディスエーブルになる。また、PBUSが「0」ならプルダウン回路はディスエーブルになり、プルアップ回路はイネーブルになり、結果的にBSIは「1」になる。同様に、PBUSが「1」なら、プルアップ回路はディスエーブルになり、プルダウン回路はイネーブルになり、結果的にBSIは「0」になる。最後に、FLOATEDモードの場合、信号ONEが「1」、ONEB<0>が「1」、ONEB<1>が「0」となって出力BSIを浮遊させることができる。FLOATEDモードは完全を期するために記載されているが、実際には使われない。
【0070】
図12Aは、図10に示された共通プロセッサの出力ロジックの好適な実施形態を示す。入力ロジック520からBSIノードに至る信号はプロセッサラッチPLatch 520でラッチする。出力ロジック530はPLatch 520の出力からデータMTCHおよびMTCH* を受信し、制御信号に応じてPASSTHROUGHモードか、INVERTEDモードか、FLOATEDモードのいずれかでPBUSに出力する。換言すると、4つのブランチはPBUS 505の駆動装置として機能し、これをHIGH、LOW、またはFLOATED状態まで能動的に引き上げる。これはPBUS 505の4つのブランチ回路によって、具体的には2つのプルアップ回路と2つのプルダウン回路とによって、達成する。第1のプルアップ回路はVddにかけて直列するpトランジスタ531および532を備え、MTCHが「0」のときにPBUSをプルアップできる。第2のプルアップ回路は接地にかけて直列するpトランジスタ533および534を備え、MTCHが「1」のときにPBUSをプルダウンできる。同様に、第1のプルダウン回路はVddにかけて直列するnトランジスタ535および536を備え、MTCHが「0」のときにPBUSをプルダウンできる。第2のプルアップ回路は接地にかけて直列するnトランジスタ537および538を備え、MTCHが「1」のときにPBUSをプルアップできる。
【0071】
本発明の一特徴として、プルアップ回路はPMOSトランジスタで構成し、プルダウン回路はNMOSトランジスタで構成する。NMOSによるプルはPMOSのものより遥かに強いため、どんな競合においてもプルダウンは常にプルアップに勝る。換言すると、ノードまたはバスはデフォルトとして常にプルアップまたは「1」状態にでき、必要とあらば、常にプルダウンにより「0」状態に反転させることができる。
【0072】
図12Bは、図12Aの出力ロジックの真偽表を示す。ロジックは、入力ロジックからラッチされるMTCH、MTCH* と、制御信号PDIR、PINV、NDIR、NINVとによって制御され、これらの制御信号はスタックバスコントローラ410からの制御信号の一部である。4つの動作モードPASSTHROUGH、INVERTED、FLOATED、およびPRECHARGEをサポートする。
【0073】
FLOATEDモードでは4つのブランチがすべてディスエーブルになる。これは信号PINV=1、NINV=0、PDIR=1、NDIR=0によって達成され、これらはデフォルト値でもある。PASSTHROUGHモードでMTCH=0ならば、PBUS=0が要求される。nトランジスタ535および536を備えるプルダウンブランチだけをイネーブルし、NDIR=1以外の制御信号はどれもデフォルト値とする。MTCH=1ならば、PBUS=1が要求される。pトランジスタ533および534を備えるプルアップブランチだけをイネーブルし、PINV=0以外の制御信号はどれもデフォルト値とする。INVERTEDモードでMTCH=0ならば、PBUS=1が要求される。pトランジスタ531および532を備えるプルアップブランチだけをイネーブルし、PDIR=0以外の制御信号はどれもデフォルト値とする。MTCH=1ならば、PBUS=0が要求される。nトランジスタ537および538を備えるプルダウンブランチだけをイネーブルし、NINV=1以外の制御信号はどれもデフォルト値とする。PRECHARGEモードでは、PDIR=0とPINV=0の制御信号設定でMTCH=1ならば、pトランジスタ531および532を備えるプルアップブランチをイネーブルするか、またはMTCH=0ならば、pトランジスタ533および534を備えるプルアップブランチをイネーブルする。
【0074】
2004年12月29日に出願された米国特許出願第11/026,536号(特許文献20)では共通プロセッサの動作がより詳しく説明されている。この特許出願は、その全体が本願明細書において参照により援用されている。
【0075】
キャッシュ操作におけるデータラッチの使用
本発明のいくつかの態様において、読み出し、書き込み、消去といった他の作業に内部メモリが従事しているときにデータを出し入れするキャッシュ操作にあたって、図10で前述した読み出し/書き込みスタックのデータラッチを利用する。前述したアーキテクチャではデータラッチを多数の物理ページで共用する。例えば、ビット線の読み出し/書き込みスタックを全てのワード線で共用すれば、ある1つの操作が進行しているときにこれらのラッチのいずれかが空いているなら、それらのラッチを使って同じワード線か別のワード線における先々の操作に向けてデータをキャッシュでき、転送は別の操作の背後に潜在化できるため時間の節約になる。異なる操作または操作段階をパイプラインする量を増すことによって性能を上げることができる。例えば、キャッシュプログラミング操作では、1ページデータをプログラムしているときに別のページデータをロードして転送時間を節約できる。もう1つの例として、代表的な実施形態において、ある1つのワード線における読み出し操作が別のワード線における書き込み操作に挿入され、データの書き込みを継続しながら読み出しデータをメモリから転送することができる。
【0076】
このため、第1のページデータで書き込み、または他の操作が進行しているときには、(例えば、ECC操作を行うため)同じブロックでワード線が異なる別のページからデータをトグルアウトできる。この操作段階間パイプラインにより、データ転送に要する時間は第1のページデータに対する操作の背後に潜在化させることができる。より一般的に、ある1つの操作の一部分を、通常ならばこれよりも長い、別の操作の段階の合間に差し込むことが可能となる。もう1つの例として、例えば消去操作の段階の合間に、例えば消去パルスの前に、あるいは消去の後半として使われるソフトプログラミング段階の前に、感知操作を挿し込む。
【0077】
一部の操作に要する相対的な時間を説明するため、前述したシステムにおける代表的な時間値のセットを、
データ書き込み:〜700μs(下位ページ〜600μs、上位ページ800μs)
バイナリデータ書き込み:〜200μs
消去:〜2,500μs
読み出し:〜20−40μs
読み出しとデータのトグルアウト:2KBデータ、〜80μs、
4KB〜160μs、8KB〜320μs
とする。
これ以降、タイミング図にかかわる相対的な時間を説明する際には、これらの値を基準として使うことができる。主要な態様において、様々な段階をともなう長い操作を実行する場合、読み出し/書き込みスタックの共用ラッチが使用可能であれば、これを使って短い操作を割り込ませる。例えば、プログラミング操作や消去操作の中に読み出しを挿し込んだり、消去中にバイナリプログラミングを挿し込んだりすることができる。主要な代表的な実施形態において、同じ読み出し/書き込みスタックを共用するページのプログラミング操作のときに別のページデータをトグルイン/アウトし、例えばトグルアウトされ修正されるデータの読み出しは、データ書き込みのベリファイ段階に挿し込む。
【0078】
空きデータラッチを利用できる機会は数多くある。一般的に、1セル当たりnビットを蓄積するメモリの場合、各ビット線につきn個のデータラッチが必要となるが、これらのラッチの全てが常に必要となるわけではない。例えば、上位ページ/下位ページ形式でデータを蓄積する1セル当たり2ビットのメモリでは、下位ページをプログラムしているときに2つのデータラッチが必要となる。より一般的に、多数のページを蓄積するメモリで全てのラッチが必要となるのは最上位ページをプログラムするときだけである。これにより、他のラッチはキャッシュ操作に利用できる。また、最上位ページの書き込み中でも、書き込み操作のベリファイ段階から種々の状態が排除されるにつれてラッチは解放される。具体的に、ベリファイすべき状態が最上位状態だけになると、ベリファイに必要なラッチは1つだけであり、他のラッチはキャッシュ操作のために使うことができる。
【0079】
以降の説明は、1セル当たり2ビットを蓄積し、各ビット線のデータにつき2つのラッチを具備し、さらにクイックパス書き込み用に1つのラッチを具備する4状態メモリに基づくものであり、このメモリは本願と同時に出願され、前に援用されている「不揮発性メモリの多段階プログラミングにおけるデータラッチの使用 (Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories)」という米国特許出願(特許文献21)で説明されている。下位ページを書き込む操作、または消去する操作、または消去後にソフトプログラミングを行う操作は、基本的にはバイナリ操作であり、データラッチの一方は空いていてデータをキャッシュするために使うことができる。同様に、上位ページかフルシーケンスの書き込みを行う場合、最上位レベル以外はすべてベリファイ済みでベリファイすべき状態がただ1つになると、メモリはラッチを解放でき、解放されたラッチはデータのキャッシュに使うことができる。例えば、コピー操作等で1ページをプログラムする場合、例えば同じ組のビット線上の別のワード線で同じ組のデータラッチを共用する別のページの読み出しは、書き込みのベリファイ段階に差し挟むことができる。アドレスは書き込み対象のページに切り替えることができ、書き込みプロセスは中断したところから再開でき、やり直しの必要はない。書き込みが継続しているときには、割り込ませた読み出しのときにキャッシュしたデータをトグルアウトし、チェックまたは修正し、元に戻して、先行する書き込み操作が完了した時点で書き戻すことができる。この種のキャッシュ操作では、最初のページのプログラミングの背後に2番目のページデータのトグルアウトと修正を潜在化させることができる。
【0080】
第1の例として、2ビットメモリのキャッシュプログラミング操作は単独ページ(下位ページ/上位ページ形式)プログラミングモードで行われる。図13は、図10を簡素化したものであって、2ビットの実施形態の説明にかかわるいくつかの特定の要素を示し、説明を簡潔にするためにその他の要素は省いてある。これはデータI/O線231へ接続されたデータラッチDL0 434−0と、線423によって共通プロセッサ500へ接続されたデータラッチDL1 434−1と、線435によって他のデータラッチとともに接続されたデータラッチDL2 434−2と、線422により共通プロセッサ500へ接続されたセンス増幅器データラッチDLS 214とを含む。図13の種々の要素には、下位ページをプログラムするときの処理に従ってラベル付けされている。ラッチDL2434−2は、本願と同時に出願された「不揮発性メモリの多段階プログラミングにおけるデータラッチの使用 (Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories)」という米国特許出願(特許文献21)で説明されているクイックパス書き込みモードにおける下位ベリファイ(VL)に使われ、レジスタの使用と、これを使用する場合のクイックパス書き込みの使用は任意であるが、この代表的な実施形態ではレジスタを使用する。
【0081】
下位ページのプログラミングは、以下のステップを含む。
(1)プロセスはデータラッチDL0 434−0をデフォルト値「1」にリセットすることから始まる。これは部分ページプログラミングを簡素化するための慣例であり、行の中で非プログラム対象セルとして選択されたセルのプログラミングは禁止される。
(2)I/O線231に沿ってDL0 434−0へプログラムデータを供給する。
(3)DL1 434−1とDL2 434−2へプログラムデータを転送する(このラッチを使用し、クイックパス書き込みを実施する場合)。
(4)DL1 434−1へプログラムデータを転送したら、データラッチDL0 434−0を「1」にリセットでき、プログラミング中はI/O線231に沿ってDL0 434−0へ次のデータページをロードでき、第1のページが書き込まれているときには第2のページをキャッシュできる。
(5)DL1 434−1に第1のページがロードされたらプログラミングを開始できる。DL1 434−1のデータはセルをロックアウトしてそれ以上プログラムできなくするために使用する。本願と同時に出願された「不揮発性メモリの多段階プログラミングにおけるデータラッチの使用 (Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories)」という米国特許出願(特許文献21)で説明されているように、DL2 434−2のデータは、クイックパス書き込みの第2段階への移行を左右する下位ベリファイロックアウトに使用する。
(6)プログラミングが始まると、プログラミングパルスの後に下位ベリファイの結果を使用してDL2 434−2を更新し、上位ベリファイの結果を使用してDL1 434−1を更新する。(これは、下位ページプログラミングがA状態に至る「従来の」符号化に基づく説明である。本願と同時に出願された「不揮発性メモリの多段階プログラミングにおけるデータラッチの使用 (Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories)」という米国特許出願(特許文献21)と2005年3月16日に出願された「節電読み出しおよびプログラム−ベリファイ操作を備える不揮発性メモリと方法 (Non-Volatile Memory and Method with Power-Saving Read and Program-Verify Operations)」という米国特許出願(特許文献22)では、この符号化とその他の符号化が詳しく説明されている。この説明を他の符号化へ敷衍することは容易い。)
(7)プログラミングが完了したか否かの判断にあたっては、セルの行(または適切な物理的プログラミング単位)のDL1 434−1レジスタだけをチェックする。
【0082】
下位ページを書き込んだら上位ページをプログラムできる。図14には図13と同じ要素が見られるが、下位ページデータの読み込みが行われる上位ページプログラミングのためのラッチ割り当てを示している。(この説明も従来の符号化に使用するもので、上位ページのプログラミングはBおよびC状態に至る。)上位ページのプログラミングは、以下のステップを含む。
(1)下位ページのプログラミングが終了したら、(実行されない)キャッシュプログラミングコマンドを保持する状態マシンコントローラからの信号により上位ページ(次のページ)の書き込みが始まる。
(2)DL0 434−0(下位ページ書き込みのステップ(3)でプログラムデータをロードしたところ)からDL1 434−1およびDL2 434−2へプログラムデータを転送する。
(3)アレイから下位ページデータを読み込み、DL0 434−0に入れる。
(4)DL1 434−1とDL2 434−2をそれぞれベリファイハイおよびベリファイローロックアウトデータとして再び使用する。プログラム基準データとしてラッチDL0 434−0(下位ページデータを保持)をチェックするが、ベリファイ結果によってこれを更新することはない。
(5)B状態のベリファイの一部として、下位ベリファイVBLでの感知の後にはDL2 434−2でデータが更新され、DL1 434−1のデータはハイベリファイVBH結果によって更新される。同様に、CベリファイにもVCL結果とVCH結果によりラッチDL2 434−2およびDL1 434−1を更新するための対応するコマンドがある。
(6)Bデータが完了したらC状態をベリファイするだけでよいので、下位ページデータ(基準としてDL0 434−0に保持されたもの)は必要ない。DL0 434−0を「1」にリセットし、I/O線231から別のページのプログラムデータをロードし、ラッチDL0 434−0にキャッシュできる。共通プロセッサ500はC状態のみのベリファイを指示できる。
(7)B状態について上位ページのプログラミングが完了したか否かを判断するにあたって、ラッチDL1 434−1およびDL0 434−0を両方ともチェックする。セルがB状態までプログラムされ、ベリファイするのがC状態だけになったら、ラッチDL1 434−1のデータだけをチェックし、プログラムされていないビットの有無を確認すればよい。
【0083】
このやり方のステップ6でラッチDL0 434−0がもはや必要でなく、次のプログラミング操作のためのデータをキャッシュするのに使えることに留意されたい。加えて、クイックパス書き込みを使用する実施形態で、第2の遅いプログラミング段階に入ったらラッチDL2 434−2もデータのキャッシュに使うことができるが、実際面でこれを使えるのはかなり短い時間に限られ、この特徴の実装にかかる追加のオーバーヘッドに見合わない。
【0084】
図15は、直前の数段落で説明した単一ページモードにおける数々のキャッシュプログラミングの態様を説明するのに使用することができる。図15は、メモリの内部で起こるイベント(下の「True Busy」線)とメモリの外側から見たもの(上の「Cache Busy」線)の相対的なタイミングを示している。
【0085】
時間t0 には、選択されたワード線(WLn)にプログラムする下位ページをメモリにロードする。ここでは第1の下位ページデータが予めキャッシュされていないと仮定するが、後続のページについてはキャッシュが行われる。下位ページのロードは時間t1 で完了し、メモリはこれの書き込みに着手する。この時点ではバイナリ操作と同じであり、ベリファイの必要があるのは状態Aだけであり(「pvfyA」)、データラッチDL0
434−0は次のページデータを受け付けることができ、これは時間t2 にWLnにプログラムする上位ページとして受け取られ、下位ページのプログラミング中にラッチDL0 434−0にキャッシュされる。時間t3 には上位ページのロードが完了し、t4 で下位ページのプログラミングが終わり次第直ちにこれをプログラムできる。このやり方では全てのデータ(下位および上位ページ)が物理的なプログラミング単位(ここではワード線WLn)に書き込まれるが、以下に説明するフルシーケンスの実施形態と違って、メモリは上位ページデータの書き込みに先立ち時間t3 から時間t4 まで待たなければならない。
【0086】
上位ページのプログラミングはt4 で始まり、当初B状態だけをベリファイし(「pvfyB」)、t5 にはC状態が加わる(「pvfyB/C」)。t6 でB状態のベリファイが終わるとベリファイはC状態だけとなり(「pvfyC」)、ラッチDL0 434−0は解放される。これにより、次のデータセットをキャッシュできるようになり、その一方で上位ページのプログラミングは完了する。
【0087】
指摘したように、図15に示されたキャッシュプログラミングをともなう単一ページアルゴリズムによると、たとえ時間t3 で上位ページデータが入手可能であっても、メモリは時間t4 まで待ったうえでこのデータの書き込みに着手しなければならない。例えば、米国特許出願第11/013,125号(特許文献23)で詳しく説明されているフルシーケンスのプログラミング動作に転換すれば、上位ページが入手可能となった時点で上位ページと下位ページデータを同時にプログラムできる。
【0088】
フルシーケンス(下位からフルへの転換)の書き込みにおけるキャッシュプログラミングアルゴリズムも前述したものと同様に、下位ページのプログラミングから始まる。したがって、ステップ(1)〜(4)は単一ページプログラミングモードにおける下位ページプロセスと同じになる。
(1)プロセスはデータラッチDL0 434−0をデフォルト値「1」にリセットすることから始まる。これは部分ページプログラミングを簡素化するための慣例であり、行の中で非プログラム対象セルとして選択されたセルのプログラミングは禁止される。
(2)I/O線231に沿ってDL0 434−0へプログラムデータを供給する。
(3)DL1 434−1とDL2 434−2へプログラムデータを転送する(このラッチを使用し、クイックパス書き込みを実施する場合)。
(4)DL1 434−1へプログラムデータを転送したら、データラッチDL0 434−0を「1」にリセットでき、プログラミング中はI/O線231に沿ってDL0 434−0へ次のデータページをロードでき、第1のページが書き込まれているときには第2のページをキャッシュできる。
第2のページデータがロードされた時点で、書き込みが行われている下位ページの上位に一致し、下位ページのプログラミングがまだ終わっていなければ、フルシーケンス書き込みへの転換を実施できる。ここでの説明はそのようなアルゴリズムにおけるデータラッチの使用に注目するものであり、詳細の多くは同一出願人による同時係属出願中の米国特許出願第11/013,125号(特許文献23)で詳しく説明されている。
(5)上位ページデータがラッチDL0 434−0にロードされた後にはアドレスブロックで判定を行い、2つのページが同じワード線と同じブロックにあって、一方のページが下位ページであり、他方のページが上位ページであるか否かをチェックする。そのとおりであり、下位ページプログラミングからフルシーケンスプログラミングへの転換が可能であれば、プログラミング状態マシンがこの転換をトリガする。移行は未決のベリファイが完了した後に行われる。
(6)プログラミングシーケンスが下位ページからフルシーケンスへ変化する場合、通常ならばいくつかの操作パラメータを変更する。代表的な実施形態において、以下のものを含む。
(i)下位ページデータがロックアウトされていなければ、パルスベリファイサイクル数の最大プログラムループが下位ページアルゴリズムのものからフルシーケンスのものに変更されるが、完了プログラムループ数は転換によりリセットされない。
(ii)図16に示されたように、プログラミング波形は下位ページプログラミングプロセスで使われる値VPGM_Lで始まる。プログラミング波形が進展して、フルシーケンスへの転換で上位ページプロセスで使う初期値VPGM_Uを超えると、階段はVPGM_Uまで戻り、そこから上昇を続ける。
(iii)プログラミングパルスの最大値とステップサイズを決定するパラメータは変更されない。
(7)マルチレベル符号化で正確なデータのプログラミングを保証するため、現在のメモリセル状態のフルシーケンス読み出しを行うべきである。こうすれば、フルシーケンスが始まるときに、下位ページのプログラミングで既にロックアウトされていて上位ページデータを考慮に入れるためさらなるプログラミングを必要とする状態のプログラミングが確保される。
(8)クイックパス書き込みを行う場合、上位ページのプログラムデータを反映させるため、A状態のみの下位ベリファイに前は基づいていたラッチDL2434−2のデータも更新する。
(9)マルチレベル、フルシーケンスのプログラミングアルゴリズムによるプログラミングが再開する。図16に示されたように、下位ページプロセスのプログラミング波形が上位ページの初期レベルを超えた場合、波形は転換時にこのレベルに戻される。
【0089】
図17は、下位ページからフルシーケンスへ転換する書き込みプロセスにかかわる相対的な時間を概略的に示す。そのプロセスは、時間t3 までは図15のプロセスで前述したとおりである。時間t3 で上位ページデータがロードされてフルシーケンスアルゴリズムへ移行するときにはベリファイプロセスが切り替わり、A状態にB状態が加わる。A状態がすべてロックアウトされると、ベリファイプロセスは時間t4 でB状態とC状態のチェックに切り替わる。t5 でB状態がベリファイ済みになるとチェックの必要があるのはC状態だけとなり、レジスタを解放することができて、プログラムする次のデータ、例えばCache Busy線に示すように次のワード線の下位ページ(WLn+1 )を、ロードできる。この次のデータセットは時間t6 でキャッシュ済みであり、t7 で前のセットのCデータのプログラミングが終わったら、この次のデータセットのプログラミングが始まる。また、ワード線WLn+1 上の下位ページ(ここでは下位ページ)をプログラムしているときには、空いているラッチDL0 434−0に次のデータ(対応する上位ページデータ等)をロードできる。
【0090】
フルシーケンス書き込みのときには、下位ページと上位ページの状態を個別に伝えるステータス報告を実施する。プログラミングシーケンスの終わりに未完了ビットがある場合、物理ページの走査を実行できる。第1の走査ではラッチDL0 434−0で未完了上位ページデータをチェックでき、第2の走査ではDL1 434−1で未完了下位ページデータをチェックできる。B状態のベリファイによってDL0 434−0とDL1 434−1のデータは両方とも変化するため、A状態のベリファイでビットのしきい値がAベリファイレベルより高い場合、DL1 434−1データ「0」は「1」に変更される。この事後ベリファイはプログラミングが不十分なBレベルがAレベルで合格するか否かをチェックするものであり、Aレベルで合格するならば、エラーは上位ページだけにあって下位ページにはなく、Aレベルで合格しないならば、下位ページと上位ページの両方にエラーがある。
【0091】
キャッシュプログラミングアルゴリズムを使用する場合、AおよびBデータがプログラムされた後にプログラミングを完了するためにラッチDL1 434−1へC状態が転送される。この場合、下位ページは既に合格したプログラミングを具備していて不良ビットはないため、下位ページについてラッチを走査する必要はない。
【0092】
本発明の別の代表的な実施形態は、ある1つの場所から別の場所へデータセットを移動するページコピー操作に関係する。2004年5月13日に出願された米国特許出願第10/846,289号(特許文献24)、2004年12月21日出願された米国特許出願第11/022,462号(特許文献25)、2004年8月9日に出願された米国特許出願第10/915,039号(特許文献26)、そして米国特許第6,266,273号(特許文献27)ではデータ再配置操作の様々な態様が説明されている。これらの特許出願および特許はいずれも、本願明細書において参照により援用されている。ある1つの場所から別の場所へコピーされるデータは多くの場合、チェックのため(例えば、エラーチェック)、更新のため(ヘッダ更新等)、または両方のため(検出されたエラーの訂正等)にトグルアウトされる。そのような転送によってガーベッジコレクション操作の日付も整理される。本発明の主要な態様において、空きレジスタへのデータの読み出しを書き込み操作のベリファイ段階に挿し込み、書き込み操作の継続中にこのキャッシュデータをメモリ装置の外に転送することにより、データをトグルアウトする時間を書き込み操作の背後に潜在化させることができる。
【0093】
これよりキャッシュページコピー操作の2つの代表的な実施形態を紹介する。いずれの場合でも、クイックパス書き込みを使用する実施例を説明する。図18は、プロセスの進行にともなうラッチの代表的な実施形態の処理を示す。
【0094】
下位ページに書き込みを行うキャッシュページコピーの第1のバージョンは以下のステップを含み、読み出しアドレスにはM,M+1・・・とラベル付けをし、書き込みアドレスにはN,N+1・・・とラベル付けをする。
(1)コピーするページ(「ページM」)をラッチDL1 434−1に読み込む。これは上位ページか下位ページのいずれかのデータとなる。
(2)次にページMをDL0 434−0へ転送する。
(3)次にDL0 434−0のデータをトグルアウトし、修正した上でラッチに戻す。
(4)ここでプログラミングシーケンスを開始できる。下位ページNに書き込むデータをDL1 434−1とDL2 434−2に転送した後、ラッチDL0 434−0はデータをキャッシュできる状態になる。この下位ページはプログラムされる。この実施形態の場合、プログラミング状態マシンはここで停止する。
(5)コピーする次のページをDL0 434−0に読み込む。ここでプログラミングを再開できる。ステップ(4)の終わりに停止した状態マシンはプログラミングシーケンスを最初から再開する。
(6)プログラミングは下位ページが完了するまで続く。
【0095】
下位ページに対する書き込みか上位ページに対する書き込みかは、コピー先ページアドレスによって決まる。プログラミングアドレスが上位ページアドレスなら、プログラミングシーケンスはプログラミングが完了するまで停止せず、ステップ(5)の読み出しは書き込みが完了した後に行われる。
【0096】
第2のキャッシュページコピー方法では、プログラム−ベリファイプロセスを中断して読み出し操作を挿し込み、その後書き込み操作は中断したところから再開できる。この交互感知操作の間に読み出されたデータは、再開した書き込み操作の継続中にトグルアウトできる。また、この第2のプロセスでベリファイの対象がC状態だけとなり、各ビット線で1つのラッチが解放されると、上位ページかフルシーケンスの書き込みプロセスでページコピーメカニズムを使用できる。第2のキャッシュページコピー操作の最初の3つのステップは第1の場合と同じだが、その後は異なる。これは以下のステップを含む。
(1)コピーするページ(「ページM」)をラッチDL1 434−1に読み込む。これは上位ページか下位ページのいずれかのデータとなる。
(2)次にページMのデータをDL0 434−0へ転送する。(前と同様、N等は書き込みアドレスを表し、M等は読み出しアドレスを表す。)
(3)次にDL0 434−0のデータをトグルアウトし、修正した上でラッチに戻す。
(4)状態マシンプログラミングは読み出しコマンドが入力されるまで無限待機状態に入り、その後には別のページ、例えば次のページM+1の、ラッチDL0 434−0への読み込みが始まる。
(5)ステップ(4)の読み込みが完了したら、アドレスはステップ(1−3)のデータをページN(ここでは下位ページ)にプログラムするためのワード線とブロックアドレスに戻り、プログラミングが再開する。
(6)ページM+1の読み出しが完了した後にはデータをトグルアウトし、修正し、元に戻すことができる。処理が完了し、2つのページが同じWL上の対応する上位および下位ページなら、フルシーケンス書き込み操作に転換できる。
(7)フルシーケンス書き込みでAレベルとBレベルが終了したら、前に説明した通常のキャッシュプログラミングと同様、DL0 434−0のデータをDL1 434−1へ転送し、別のページ(例えば、ページM+2)の読み出しコマンドを発行できる。単一ページからフルシーケンスへの転換がない場合、下位ページの書き込みが完了し、上位ページが始まる。Bレベル状態が完了した後にはDL0 434−0からDL1 434−1への同じデータ転送が行われ、状態マシンはページM+2の読み出しコマンドを待機する状態に入る。
(8)読み出しコマンドが届いたらアドレスが読み出しアドレスに切り替わり、次のページ(ページM+2)を読み出す。
(9)読み出しが完了したら、アドレスは書き込みが終了するまで以前の上位ページアドレス(プログラミングアドレスN+1)に戻される。
【0097】
前に指摘したように、代表的な実施形態ではそれぞれのメモリセルにプログラムされ得るデータ(ここでは2ビット)を保持するラッチDL0 434−0およびDL1 434−1に加えて、クイックパス書き込み手法の下位ベリファイにラッチDL2 434−2を使用する。下位ベリファイに合格したらラッチDL2 434−2も解放され、データのキャッシュに使うことができるが、代表的な実施形態では使わない。
【0098】
図19Aおよび図19Bは第2のキャッシュページコピー方法の相対的なタイミングを示すものであり、図19Bのアルゴリズムにはフルシーケンス書き込み転換があり、図19Aのアルゴリズムにはこれがない。(図19Aおよび図19Bはいずれも2つの部分からなり、第1の上部分はt0 に一致する縦の破線Aから始まってt5 に一致する縦の破線Bで終わり、第2の下部分は上部分の続きであって、t5 に一致する縦の破線Bから始まる。いずれにせよ、時間t5 のところにある線Bは上部分と下部分とで同じであって、2つの部分を2本の線で表示するための継ぎ目に過ぎない。)
【0099】
図19Aに示すプロセスは第1のページ(ページM)から始まり、これはこの例において下位ページとし、予めデータはキャッシュされていないものと仮定し、単一ページモードで動作し、下位ページの書き込みが終わるのを待ってから上位ページの書き込みが始まる。プロセスは時間t0 にページMの読み出しから始まり(ページM(L)感知)、これは、この符号化でAおよびCレベルの読み出しによって感知される下位である。時間t1 では読み出しが完了し、ページMをトグルアウトしてチェックまたは修正できる。時間t2 からはBレベルの読み出しによって次のページ(ここではページM+1、同じ物理下位ページMに対応する上位ページ)を感知し、プロセスは時間t3 で完了する。このとき、第1のページ(ページMからのもの)(下位)はメモリのページNに戻すことができ、ページM+1から読み出されたデータはラッチに保持され、外に転送して修正/チェックできる。これらのプロセスはいずれも同じ時間に、ここではt3 で、始めることができる。前述した典型的な時間値を使用すると、ページM+1のデータは時間t4 までにトグルアウトされ、修正されるが、フルシーケンス転換を実施しない実施形態の場合、メモリは時間t5 にページNが終了するのを待ってから、ページN+1への第2の読み出しページデータ(ページM+1からのもの)の書き込みを開始する。
【0100】
ページN+1は上位ページであり、この書き込みは当初Bレベルでのベリファイで始まるが、t6 にはCレベルが加わる。目標状態Bになった蓄積素子が時間t7 でロックアウトされると(または最大カウントに達すると)、B状態のベリファイはなくなる。前述したように、本発明のいくつかの主要な態様によると、このときデータラッチは解放され、進行中の書き込み操作は中断し、読み出し操作(中断したプログラム−ベリファイ操作とは異なるアドレスでの読み出し操作)を割り込ませ、その後書き込みは中断したところから再開し、再開した書き込み操作が進行しているときには割り込み書き込み操作を感知したデータをトグルアウトできる。
【0101】
時間t7 では割り込み書き込み操作を下位ページM+2のために実行する。この感知は時間t8 に終了し、ページN+1の書き込みは再開し、これと同時にページM+2のデータをトグルアウトし、修正する。この例ではページN+1のプログラミングが時間t9 に終了してから時間t10にページM+2が完了する。時間t10にはページM+2からのデータの書き込みを始めることもできるが、この実施形態では代わりにページM+3の読み出しを先に実行することにより、このページデータのトグルアウトと修正は、時間t11に始まるページN+2へのページM+2からのデータの書き込みの背後に潜在化させることができる。そして、プロセスは図の初期部分のとおりに継続するが、ページ番号はずれ、時間t11は時間t3 に相当し、時間t12は時間t4 に相当し、最後にコピープロセスは停止する。
【0102】
図19Bに示すプロセスも下位ページ、すなわち下位ページとして解釈するページMの読み出しから始まり、予めデータはキャッシュされていないものと仮定する。図19Bは、時間t4 にフルシーケンス書き込みへの転換を実施する点が図19Aと異なる。これによりプロセスはざっと図19Aの時間(t5 〜t4 )の分だけ速くなる。時間t4 (図19Aではt5 )には、前述したように、フルシーケンス転換にかかわる様々な変更を実施する。さもなくば、プロセスは図19Aのものに類似し、時間t7 およびt12間に見られる本発明の態様を含む。
【0103】
ページコピープロセスと、ここで説明するデータの書き込みをともなうその他の手法で、ある所与の時間にベリファイする状態を合理的に選ぶことができ、このことは米国公開特許出願第2004−0109362号(特許文献28)で説明されている。この公開特許出願は、本願明細書において参照により援用されている。例えばフルシーケンス書き込みで、書き込みプロセスはAレベルのみのベリファイから始めることができる。Aベリファイの後には、ビットをチェックして合格ビットの有無を確認する。合格したビットがあるなら、Bレベルをベリファイ段階に加えることができる。Aレベルベリファイは、これを目標値とする全蓄積単位のベリファイの後に解除される(または設定可能パラメータに基づく最大カウントを除く)。同様に、Bレベルベリファイの後にはCレベルのベリファイを加えることができ、Bレベルベリファイは、これを目標値とする全蓄積単位のベリファイの後に解除される(または設定可能パラメータに基づく最大カウントを除く)。
【0104】
プログラミング操作中のデータラッチにおけるキャッシュ操作
プログラミング操作とこれにともなう他の操作のためのバックグラウンドデータキャッシングを、好適な多状態の符号化との関係で説明する。
【0105】
4状態メモリのための好適な代表的「LM」符号化
図20A〜図20Eは、2ビット論理符号(「LM」符号)で符号化される4状態メモリのプログラミングと読み出しを示す。この符号は耐障害性を提供し、ユーピン効果による隣接するセル結合を緩和する。図20Aは、LM符号を使って各メモリセルで2ビットのデータを蓄積する場合の4状態メモリアレイのしきい値電圧分布を示す。LM符号化は、上位および下位ビットが状態「A」および「C」とで逆になる点が従来のグレイコードと異なる。米国特許第6,657,891号(特許文献29)に開示された「LM」符号は、電荷の大きな変化を要するプログラミング操作を回避することによって隣接するフローティングゲート間の電界効果結合を抑えるのに有利である。図20Bおよび図20Cに見られるように、それぞれのプログラミング操作は電荷蓄積ユニットの電荷に穏かな変化をもたらし、そのことはしきい値電圧VT の穏かな変化から明らかである。
【0106】
符号化は、下位および上位2ビットのプログラミングと読み出しを別々に行うようにする。下位ビットをプログラムするときのセルのしきい値レベルはプログラムされていない領域にとどまるか、またはしきい値ウィンドウの「下位中間」領域まで進む。上位ビットをプログラムするときには、これらの2領域のいずれかにあるしきい値レベルがさらにしきい値ウィンドウの4分の1に満たない若干高いレベルまで進む。
【0107】
図20Bは、LM符号を使用する既存の2ラウンドプログラミング方式における下位ページプログラミングを示す。耐障害性LM符号は基本的に、中間状態を通過するために上位ページプログラミングを回避する。したがって、第1ラウンドの下位ページプログラミングでは、広い分布の中でDA より高くDC より低いプログラムしきい値電圧により「プログラムされていない」記憶状態「U」を(x,0)で表される「中間」状態までプログラムすることによって論理状態(1,1)を中間状態(x,0)に推移させる。プログラミング中は境界DVA に対して中間状態をベリファイする。
【0108】
図20Cは、LM符号を使用する既存の2ラウンドプログラミング方式における上位ページプログラミングを示す。上位ページビットを「0」までプログラムする第2ラウンドで、下位ページビットが「1」ならば、「プログラムされていない」記憶状態「U」を「A」までプログラムすることにより論理状態(1,1)は(0,1)へ推移する。「A」までのプログラミング中のベリファイはDVA に対するベリファイである。下位ページビットが「0」なら、「中間」状態から「B」までプログラムすることによって論理状態(0,0)を得る。そのプログラム−ベリファイは境界DVB に対するベリファイである。同様に、下位ページが「0」までプログラムされるときに上位ページが「1」にとどまるならば、「中間」状態から「C」までプログラムすることによって「中間」状態から(1,0)へ推移する必要がある。そのプログラム−ベリファイは境界DVC に対するベリファイである。上位ページのプログラミングでは隣接する次の記憶状態までプログラムするだけなので、1つのラウンドから他のラウンドにかけて大量の電荷が変化することはない。「U」から大まかな「中間」状態に至る下位ページプログラミングは時間を節約するためのものである。
【0109】
好適な実施形態では前のセクションで言及されている「クイックパス書き込み」プログラミング手法を実施する。例えば、図20Cで当初のプログラム−ベリファイ(「pvfyAL 」)はDVA より低いマージンに設定されたDVALに対するプログラム−ベリファイである。DVALでセルのプログラム−ベリファイが終わると、以降のプログラミングのステップが細かくなり、プログラムベリファイ(pvfyA)はDVA に対するプログラム−ベリファイになる。そこで、セルがDALまでプログラム−ベリファイ済みであることを指示するため、さらなる遷移状態ALOW をプログラミング操作中にラッチしなければならない。同様に、「B」状態までのプログラミングでQPWを実施する場合、さらなる遷移状態BLOW をラッチする。BLOW のプログラム−ベリファイは境界DVBLに対するプログラム−ベリファイであり、「B」のプログラム−ベリファイは境界DVB に対するプログラム−ベリファイである。ALOW 状態かBLOW 状態にあるときに、対象となるメモリセルのプログラミングは、ビット線電圧の適切なバイアスにより、またはプログラミングパルスの修正により、より遅い(より細かい)モードに切り替わる。このように、最初は大きいプログラミングステップを使って速やかに収束でき、目標状態を通り越す危険はない。「QPW」プログラミングアルゴリズムは2005年12月29日に出願された「不揮発性メモリにおける改良されたプログラム−ベリファイ操作方法 (Methods for Improved Program-Verify Operations in Non-Volatile Memories)」という米国特許出願第11/323,596号(特許文献30)に開示されている。この特許出願は、その全体が本願明細書において参照により援用されている。
【0110】
図20Dは、LM符号によって符号化される4状態メモリの下位ビットを識別するにあたって必要となる読み出し操作を示す。復号化は上位ページがプログラムされたか否かに左右される。上位ページがプログラム済みなら、下位ページの読み出しにあたって境界しきい値電圧DB に対して1回の読み出し行程readBが必要になる。他方、上位ページがまだプログラムされていなければ、下位ページは「中間」状態(図20B)までプログラムされ、readBによってエラーが生じる。下位ページを読み出すには、境界しきい値電圧DA に対して1回の読み出し行程readAが必要になる。2通りの場合を区別するため、上位ページがプログラムされているときには上位ページ(通常はオーバーヘッドまたはシステム領域)にフラグ(「LM」フラグ)を書き込む。読み出しのときにはまず、上位ページがプログラム済みと仮定し、readB操作を実行する。LMフラグが読み出されるならこの仮定は正しく、読み出し操作は完了する。他方、最初の読み出しでフラグが生成されなかった場合、これは上位ページがプログラムされていないことを意味し、readA操作により下位ページを読み出されなければならない。
【0111】
図20Eは、LM符号によって符号化される4状態メモリの上位ビットを識別するにあたって必要となる読み出し操作を示す。この図から明らかなように、上位ページの読み出しにあたっては境界しきい値電圧DA およびDC に対して2行程の読み出しreadAおよびreadCがそれぞれ必要となる。同様に、上位ページの復号化も上位ページがまだプログラムされていなければ「中間」状態によって混乱する。ここでもLMフラグで上位ページがプログラム済みか否かを指示する。上位ページがプログラムされていなければ、上位ページデータがプログラムされていないことを意味する「1」に読み出しデータをリセットする。
【0112】
LM符号とQPWをともなうプログラミング操作中のラッチ使用
図10に示すように、読み出し/書き込みモジュールは各ビット線を通じて選択されたメモリアレイの行に沿って所与のメモリセルにアクセスする。p個の読み出し/書き込みモジュールが行内のメモリセルページに同時に働きかける。それぞれの読み出し/書き込みモジュールは、共通プロセッサ500に結合されたデータラッチ430−1とセンス増幅器212−1とを備える。センス増幅器212−1はビット線を通じてメモリセルの伝導電流を感知する。データは共通プロセッサ500によって処理され、データラッチ430−1に蓄積される。メモリアレイの外でのデータ交換はデータラッチに結合されたI/Oバス231によって行われる(図13および図14参照)。好適なアーキテクチャにおいて、行に沿って同じワード線を共有し、メモリアレイのp個の連続するビット線によってアクセスされる一連のp個のメモリセルによってページが形成される。代替のアーキテクチャでは、行沿いの偶数または奇数メモリセルのいずれかによってページが形成される。データラッチ430−1は、様々な必要なメモリ操作を実行するにあたって十分なDL1からDLnまでの最低n個のラッチを用いて実装する。図13および図14は、3つのラッチDL0〜DL2がある4状態メモリの好適な構成を示している。
【0113】
現在のページプログラミング中の次のページのプログラムデータのロード
図21は、下位ページプログラミングの概略的タイミング図であって、次のページのプログラムデータを未使用データラッチへロードするバックグラウンド操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。LM符号による下位ページプログラミングは図20Bに示され、消去済みまたはプログラムされていない状態(1,1)は「下位中間」または中間状態(X,0)までプログラムされる。この場合、中間「0」状態からプログラムされていない「1」状態を区別するにあたっては1つのビット、すなわち下位ビットで十分である。例えば、下位ビットはDL2(図13および図14参照)を使って蓄積できる。
【0114】
N番目のページデータを書き込む場合、ホストは最初にそのページデータを特定のアドレスに書き込むための書き込みコマンドをメモリに向けて発行する。その後には、メモリにプログラムするページデータを送信する。プログラムデータはI/Oバスを通じてトグルされ、各読み出し/書き込みモジュールのDL2にラッチされる。よって、I/Oバスはこのトグルイン期間中に一時的にビジー状態になり、これは例えば300μsの長さにおよぶ。
【0115】
下位ページプログラミングはバイナリであり、DVA しきい値レベルによって区切られる「中間状態」から「U状態」を区別するだけでよい(図20B参照)。ワード線へ印加される各プログラミングパルスの後には読み返しまたはプログラム−ベリファイが続き、プログラムデータを表す目標状態にセルが達しているか否かを判断する。この場合のプログラム−ベリファイはDVA に対する(「pvfyA」)である。したがって、各セルにつき1ビットを蓄積するにあたって必要となるのは各読み出し/書き込みモジュールの1ラッチだけである。
【0116】
データラッチについて、メモリアレイまたはメモリコアで行われている目下の下位ビットプログラミング操作で盛んに使われるのは、プログラムデータを収容するDL2である。したがって、コアによって使われているラッチの数は1つであり、残りの2つのラッチ、具体的にはDL0とDL1は、遊んだ状態になる。
【0117】
コアでプログラミングが続いている間は、2つの遊んでいるラッチと空いているI/Oバスを次のページのプログラムデータの準備に使用することができる。(N+1)番目のページデータを書き込むためにさらなるコマンドを発行するホストは、I/Oバスを通じてデータをトグルし、これを2つの空いているラッチの一方、例えばDL0に、ラッチできる。かくして、コアは、N番目のページのプログラミングを終えた後に300μsかけてデータがトグルインされるのを待たずとも(N+1)番目のページのプログラミングを開始できる。
【0118】
このとき使われているラッチは2つであり(例えば、DL2とDL0)、1つは現在進行しているN番目のページ(下位ページ)のプログラミングに使われ、もう1つは(N+1)番目のページのプログラムデータのキャッシュに使われている。そこで、もう1つのラッチは空いているわけだが、これの使い方は、既にキャッシュされている(N+1)番目のページが上位ページか下位ページかによって異なる。
【0119】
好適な実施形態において、(N+1)番目のページが同じページセルまたはワード線に通常属する上位ページならば、上位ページの以降のプログラミングを最適化するために最後の空きラッチを取っておかなければならない。なぜならば、(前のセクションで言及されている)「クイックパス書き込み」(「QPW」)プログラミングアルゴリズムの実施例では、セルが目標状態付近までプログラムされているか否かを指示するフラグを蓄積するためのラッチが追加で必要となるからである。
【0120】
(N+1)番目のページが別のページセルまたはワード線に属する下位ページならば、ホストから提示される場合、別の(N+2)番目の(下位または上位)ページデータを最後の空きラッチで任意にキャッシュすることもできる。
【0121】
図22の表は、QWPを使用する4状態上位ページまたはフルシーケンスプログラミングの様々な段階で追跡する必要のある状態の数を示している。LM符号における上位ページまたはフルシーケンスプログラミングを示す図20Cで、下位ページ状態「U」または(1,1)の一部と「中間」状態(X,0)はさらに、状態「A」または(0,1)、「B」または(0,0)、および「C」または(1,0)までそれぞれプログラムされる。具体的に、状態「A」は「U」からプログラムされ、状態「B」および「C」は「中間」からプログラムされる。「C」ではなく「A」および「B」状態で実施するQWP手法のプログラミングで当初識別の必要があるのは、基本状態「A」、「B」、および「C」に加えて「ALOW 」および「BLOW 」と、全部で5状態になる。3ラッチに3ビットで符号は23 または9通りあり、6つの状態を識別するにあたって十分である。
【0122】
プログラミングの進行と共に発生するプログラミング中のいくつかの段階
「A」完了−「A」状態を目標とするページ内の全セルがDA 境界についてプログラム−ベリファイ済みである。そのために、DAL境界についてプログラム−ベリファイ済みを先に完了する必要がある。4つの状態「L」(プログラムロックアウト)、「BL 」、「B」、および「C」を追跡する。そのために、符号表2ビット2CT(「A」)による所定の符号化で2ビットを蓄積する2つのラッチが必要となる。
【0123】
「B」完了−「B」状態を目標とするページ内の全セルがDB 境界についてプログラム−ベリファイ済みである。そのために、DBL境界についてプログラム−ベリファイ済みを先に完了する必要がある。4つの状態「L」、「AL 」、「A」、および「C」を追跡する。そのために、2ビット符号表2CT(「B」)による所定の符号化で2ビットを蓄積する2つのラッチが必要となる。
【0124】
「C」完了−「C」状態を目標とするページ内の全セルがDC 境界についてプログラム−ベリファイ済みである。5つの状態「L」、「AL 」、「A」、「BL 」および「B」を追跡する。そのために、3ビット符号表3CT(「C」)による所定の符号化で3ビットを蓄積する3つのラッチが必要となる。
【0125】
「A」+「B」完了−「A」状態と「B」状態を目標とするページ内の全セルがそれぞれDA 境界とDB 境界についてプログラム−ベリファイ済みである。2つの状態「L」および「C」を追跡する。そのために、1ビット符号表1CT(「A」+「B」)による所定の符号化で1ビットを蓄積する1つのラッチが必要となる。
【0126】
「A」+「C」完了−「A」状態と「C」状態を目標とするページ内の全セルがそれぞれDA 境界とDC 境界についてプログラム−ベリファイ済みである。3つの状態「L」、「BL 」、および「B」を追跡する。そのために、2ビット符号表2CT(「A」+「C」)による所定の符号化で2ビットを蓄積する2つのラッチが必要となる。
【0127】
「B」+「C」完了−「B」状態と「C」状態を目標とするページ内の全セルがそれぞれDB 境界とDC 境界についてプログラム−ベリファイ済みである。3つの状態「L」、「AL 」、および「A」を追跡する。そのために、2ビット符号表2CT(「B」+「C」)による所定の符号化で2ビットを蓄積する2つのラッチが必要となる。
【0128】
「A」+「B」+「C」完了−「A」状態と「B」状態と「C」状態を目標とするページ内の全セルがそれぞれDA 境界とDB 境界とDC 境界についてプログラム−ベリファイ済みである。ページの目標状態はどれもプログラム−ベリファイ済みであり、ページのプログラミングは完了している。ラッチは必要でなくなる。
【0129】
図23は、上位ページまたはフルシーケンスプログラミングの概略的タイミング図であって、次のページのプログラムデータを未使用データラッチにロードするバックグラウンド操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。
【0130】
N番目のページの上位ページデータを書き込むときには、既にプログラム済みの下位ページデータを参照しなければならない。この既にプログラム済みの下位ページは既に各読み出し/書き込みモジュールのDL2にラッチされている。ホストはN番目のページの上位ページデータにあたって、まずはページデータを特定のアドレスに書き込むための書き込みコマンドをメモリに向けて発行する。その後には、メモリにプログラムするページデータを送信する。プログラムデータはI/Oバスを通じてトグルされ、各読み出し/書き込みモジュールのDL0にラッチされる。よって、I/Oバスはこのトグルイン期間中に一時的にビジー状態になり、これは例えば300μsの長さにおよぶ。
【0131】
上位ページまたはフルシーケンスプログラミングはそれぞれ、DA 、DB 、およびDC によって状態「A」、「B」、および「C」が区切られる多状態である(図20C参照)。ワード線へ印加される各プログラミングパルスの後には読み返しまたはプログラム−ベリファイが続き、プログラムデータを表す目標状態にセルが達しているか否かを判断する。
【0132】
図22に示すように、プログラミング中の必要ラッチ数はプログラミングがどの段階まで進んだかによって異なる。例えば、最初は全3ラッチを使用する。「A」状態がすべてプログラム−ベリファイ済み(「A」完了)になると、メモリコアが以降のプログラミングで4つの状態を蓄積するにあたって必要となるラッチは2つだけである(例えば、DL2とDL1)。残りの1ラッチ(例えば、DL0)は空いているので、キャッシュ操作に使える。
【0133】
コアでプログラミングが続いている間は、空いているラッチと空いているI/Oバスを次のページのプログラムデータの準備に使用することができる。(N+1)番目のページデータ(下位ページデータ)を書き込むためのさらなるコマンドを発行するホストは、I/Oバスを通じてデータをトグルして、これを空いているラッチDL0にラッチできる。かくして、コアは、N番目のページのプログラミングを終えた後に300μsかけてデータがトグルインされるのを待たずとも(N+1)番目のページのプログラミングを開始できる。図22に示すように、他のプログラミング段階で少なくとも1つの空きラッチがある場合にも同じことが当てはまる。
【0134】
必要なラッチが1つだけで、2つの空きラッチをキャッシュ操作に使えるプログラミング段階に入ることもある。例えば、図22に示すように、「A」状態と「B」状態の両方がプログラム−ベリファイ済みになったときがこれにあたる。このとき2つのラッチを使用できる。(N+1)下位ページデータのロードのためにいずれか一方が既に使われているなら、残りのラッチを使って(N+2)上位または下位ページデータをロードできる。
【0135】
好適な実施形態において、(N+1)番目のページが同じページセルまたはワード線に通常属する上位ページならば、上位ページの以降のプログラミングを最適化するために最後の空きラッチを取っておかなければならない。なぜならば、前のセクションで言及されている「クイックパス書き込み」(「QPW」)プログラミングアルゴリズムの実施例では、セルが目標状態付近までプログラムされているか否かを指示する1つまたは2つのフラグを蓄積するためのラッチが追加で必要となるからである。
【0136】
(N+1)番目のページが別のページセルまたはワード線に属する別の下位ページならば、ホストから提示される場合、別の(N+2)番目の(下位または上位)ページデータを最後の空きラッチで任意にキャッシュすることもできる。
【0137】
本発明の一態様によると、追跡する状態の数に応じて多数の書き込み操作段階が変化する場合、段階依拠形符号化によって使用可能なデータラッチを効率的に利用し、余っているラッチはバックグラウンドキャッシュ操作に最大限役立てることができる。
【0138】
図24は、本発明の一般的な実施形態に従い目下の多段階メモリ操作と同時進行するラッチ操作を示すフローチャートである。
ステップ600:メモリセルからなるアドレス指定可能なページをメモリアレイに具備するメモリの操作を開始する。
ステップ610:一定数のビットをラッチする容量を持つ1組のデータラッチを、アドレス指定されたページの各メモリセルに提供する。
メモリアレイにおける目下の多段階メモリ操作
ステップ620:メモリアレイに対して目下のメモリ操作を実行し、メモリ操作には1つ以上の段階があり、各段階には所定の一連の動作状態が関連付けられている。
効率的な段階依拠形符号化によるラッチの解放
ステップ622:各段階に段階依拠形符号化を提供することにより、少なくともいくつかの段階では実質上最低限のビットによって一連の動作状態を符号化し、一連のデータラッチを有効利用し、空きデータラッチの一部を解放する。
同時進行ラッチ操作
ステップ624:目下のメモリ操作と同時進行で、メモリアレイに対する1つ以上の後続するメモリ操作に関係するデータを用いて空きデータラッチの一部に対して操作を実行する。
【0139】
現在のプログラミング中の読み出し割り込み
図25は、下位ページプログラミングの概略的タイミング図であって、使用可能なラッチを使った読み出し割り込み操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。
【0140】
N番目のページデータを書き込む場合、ホストは最初にそのページデータを特定のアドレスに書き込むための書き込みコマンドをメモリに向けて発行する。その後には、メモリにプログラムするページデータを送信する。プログラムデータはI/Oバスを通じてトグルされ、各読み出し/書き込みモジュールのDL2にラッチされる(図13および図14参照)。よって、I/Oバスはこのトグルイン期間中に一時的にビジー状態になり、これは例えば300μsの長さにおよぶ。
【0141】
下位ページプログラミングはバイナリであり、DA しきい値レベルによって区切られる「U」状態から「中間状態」を区別するだけでよい(図20A参照)。ワード線へ印加される各プログラミングパルスの後には読み返しまたはプログラム−ベリファイが続き、プログラムデータを表す目標状態にセルが達しているか否かを判断する。この場合のプログラム−ベリファイはDA に対する(「pvfyA」)である。したがって、各セルにつき1ビットを蓄積するにあたって必要となるのは各読み出し/書き込みモジュールの1ラッチだけである。
【0142】
データラッチについて、メモリアレイまたはメモリコアで行われている目下の下位ビットプログラミング操作で盛んに使われるのは、プログラムデータを収容するDL2である。したがって、コアによって使われているラッチの数は1つであり、残りの2つのラッチ、具体的にはDL0とDL1は、遊んだ状態になる。
【0143】
コアでプログラミングが続いている間、2つの遊んでいるラッチと空いているI/Oバスを読み出し操作に使用することができる。読み出し操作にあたっては、目下のプログラミング操作で既に埋まっているメモリコア(すなわち、メモリアレイ)そのもので感知を行う必要がある。しかし、実際の読み出し操作の感知段階は通常ならばプログラミング操作より遥かに短く(通常、プログラミング時間の10分の1)、プログラミング操作に割り込んで感知操作を差し込んでも性能が大きく損なわれることはない。感知の後には1つ以上の空きデータラッチに読み出しデータをラッチする。そして、ユーザはI/Oバスへ読み出しデータをトグルアウトできる。これはメモリアレイにおけるプログラミング操作と同時に行われるから、時間を節約できる。
【0144】
したがって、ホストは下位ページのプログラミング中に読み出しコマンドを発行してプログラミングに割り込むことができ、この中断のときにプログラミング状態がデータラッチに保存される。さらなるページデータが感知され、2つの空きラッチの一方、例えばDL0にラッチされる。そして、保存されたプログラミング状態でプログラミングを再開できる。再開したプログラミングによってメモリアレイが埋まっているときには、データラッチの中にある読み出しデータをI/Oバスへトグルアウトできる。
【0145】
前に述べたように、4状態(2ビット)メモリの例で好適なラッチ数はページの各メモリセルにつき3つである。下位ページプログラミングの場合、下位ページプログラムデータを蓄積するのに必要なラッチは1つだけである。そのため、2つの空きラッチが残る。典型的な読み出し操作で感知データビットをラッチするのに必要な空きラッチは1つだけである。好適なルックアヘッド(「LA」)読み出し操作では2つの空きラッチが必要となる。これは以降のセクションでさらに詳しく説明する。
【0146】
図26は、上位ページプログラミングの概略的タイミング図であって、使用可能なラッチを使った読み出し割り込み操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。多段階プログラミングについては図23との関係で説明済みであり、種々の段階にはいくつかの空きデータラッチを使用できる。例えば、状態「A」がプログラム−ベリファイ済みになった後には1つのデータラッチが空き、状態「A」と状態「B」の両方がプログラム−ベリファイ済みになった後には2つのデータラッチが空く。
【0147】
よって、状態「A」がプログラム−ベリファイ済みになった後には、従来の読み出しから1つの空きラッチを使って感知データをラッチできる。他方、状態「A」と状態「B」の両方がプログラム−ベリファイ済みになった後には、前述したLA読み出しを2つの使用可能なラッチでサポートできる。
【0148】
キャッシュされる複数コマンドの管理
メモリのコアである1つのメモリ操作が実行中のときに、保留になっている別のメモリ操作をデータラッチにキャッシュしたり、I/Oバスを通じて転送するキャッシュ操作をサポートしたりするには、同時メモリ操作を管理する必要がある。通常、従来のメモリ装置にはキャッシュ操作を実行するにあたって十分な数の空きデータラッチが用意されていない。たとえ十分な数の空きデータラッチが用意されていたとしても、キャッシュにデータがある保留のメモリ操作は目下のメモリ操作が完了した後でないと実行されない。
【0149】
図27は、典型的なメモリ操作に関連する情報一式を示す。メモリ操作の実行要請を受けるメモリは、指定されたメモリ操作の開始を告げるプリコマンドを受け取る。この後には、操作が行われるメモリアレイのアドレスが続く。消去操作の場合のアドレスは、消去するメモリセルブロックである。プログラミング操作または読み出し操作の場合のアドレスは、操作の対象となるメモリセルページである。指定された操作がプログラミング操作なら、プログラムデータが供給されてデータラッチにラッチされる。プログラムデータが用意されたら実行コマンドが発行されて、その使用可能なプログラムデータに対してプログラミング操作が実行される。指定された操作が読み出し操作なら、メモリにデータは送信されない。実行コマンドが発行されて、読み出し操作が実行される。アドレス指定されたメモリセルのページは感知され、感知されたデータはデータラッチにラッチされ、後ほどI/Oバスを通じてトグルアウトされる。
【0150】
図28は、シンプルなキャッシュ操作をサポートする従来のメモリシステムを示す。このメモリシステムは、メモリコントローラ8を介してメモリチップ301を制御するメモリコントローラ8を含む。メモリチップのメモリアレイ100は、オンチップホストインターフェイス/制御回路310によって制御される。この制御回路の状態マシンは、メモリアレイの基本的なメモリ動作を管理する。ホスト6は、マッピングやメンテナンスといった高度なメモリ機能を遂行するメモリコントローラ8を通じてメモリシステムと連動する。
【0151】
ホストまたはメモリコントローラは、メモリチップがビジーでないときにステータス信号Ready/Busy* をもとにメモリ操作を要請できる。要請されたメモリ操作はバッファ322に保持され、状態マシンが別のメモリ操作を実行していないときには状態マシン312へ放出されて、実行される。例えば、メモリアレイでは状態マシンによる制御のもとでメモリ操作MEM OP0が実行されている。使用できる空きデータラッチがあるならば、コントローラはその合図を受け、保留のメモリ操作MEM OP1はメモリチップへ送られ、バッファ322にバッファされる。同時に、MEM OP1に関係するデータはメモリチップへトグルインされ、データラッチにラッチされる。状態マシンは、MEM OP0の実行が完了すると直ちにバッファ内のMEM OP1を解放し、これの実行を開始する。このように、従来のメモリシステムでは目下のメモリ操作が完了した後に保留のメモリ操作を実行する。
【0152】
図28に示す例で、それぞれのコマンドは実行を開始する前に前回のコマンドが完了するまで待たなければならないが、そのデータは前回のコマンドの実行中にキャッシュされている。したがって、メモリコアでMEM OP0が実行している間はMEM OP1と関連するデータ1がラッチされる。MEM OP1は、MEM OP0が完了した後にキャッシュされたデータ1に働きかける。同様に、メモリコアでMEM OP1が実行している間は、MEM OP2と関連するデータ2がラッチされる。このやり方では、同じワード線の下位および上位論理ページの両方をロードして同じプログラミング操作でマルチビットを効率よくプログラムすることはできない。
【0153】
プログラミング操作の性能、特に逐次プログラミングの性能は、2つの要因に左右される。最初のものはプログラムデータをロードする時間に関係がある。フラッシュメモリの容量拡大にともない、そのページサイズも世代交代のたびに拡大している。プログラムするページデータが大きくなれば、データラッチにロードする時間が長くなる。プログラミング性能を高めるには、このデータロードの時間をどこかに潜在化させるのが望ましい。そのために、フォアグラウンドでメモリコアがプログラミング操作で忙しいので、データラッチとI/Oバスが遊んでいるときに、できるだけ多くのプログラムデータをバックグラウンドでキャッシュする。
【0154】
本発明の一特徴として、この第1の要因には、プログラミング中により多くのページをバックグラウンドでデータラッチにロードすることによって対処し、データラッチは使用可能になった時点で直ちに保留のプログラムデータのキャッシュに使われる。これは、同じフォアグラウンド操作のときには、2つ以上のコマンドに関連するデータをバックグラウンドでキャッシュできる。
【0155】
プログラミング性能を左右する第2の要因は、ページをプログラムする時間、特に同じワード線を持つマルチビットセルのページをプログラムする時間に関係する。既に述べたように、マルチビットセルのページは単独シングルビットページの集まりとして扱うことができる。例えば、2ビットページのプログラミングと読み出しは、ある程度独立した2つのシングルビットページとして、具体的には下位ビットページと上位ビットページとして、行うことができる。特に、下位ビットページは、下位ビットページのプログラムデータが使用可能となった時点で直ちにプログラムできる。上位ビットページは第2の行程で同じメモリセルページにプログラムされ、そのプログラミングは、セルにプログラム済みの下位ページの値に左右される。このように2つのビットを2つの異なる時間に2つの別々の行程でプログラムできる。しかし、「オールビット」または「フルシーケンス」プログラミングとして知られているやり方で2つのビットを1つの行程でプログラムしたほうがより効率的かつ正確である(プログラミングの混乱も少ない)。これは、プログラミング中に全てのデータビットが入手可能である場合に限り可能である。したがって、オールビットプログラミングは、実際には、全てのビットが入手可能である場合に実行するのが好ましい。一方、下位ページデータだけが入手可能なら、下位ページを先にプログラムする。同じワード線に属する上位ページデータが後ほど入手可能となる場合、そのページのセルを第2の行程でプログラムする。下位ページのプログラミングが完了する前に上位ページデータが入手可能となる場合、下位ページのプログラミングを止めて、オールビットプログラミングの実行に転換するのが望ましい。
【0156】
図28に示すやり方ではバックグラウンドで2つ以上のコマンドをキューに入れることはできないため、2ページ以上のページデータはキャッシュできない。さらに、これは、全てのビットが入手可能となったときに下位ページのプログラミングを途中で終了して異なる「オールビット」プログラミングの実行に転換する状況に対処できない。
【0157】
本発明のもう1つの特徴として、この第2の要因には、オールビットプログラミングに必要な全てのビットをキャッシュしてオールビットプログラミングを実行することによって対処する。さらに、多数の保留のコマンドを管理するコマンドキュー管理部は、コマンドに関係するデータの状態に応じて、特定のコマンドを、次の保留のコマンドを優先させて、完了する前に終了させる。
【0158】
本発明の2つの特徴を1つにまとめ、より多くのプログラムデータをキャッシュし、より効率的なプログラミングアルゴリズムの使用を可能にすることにより、プログラミング性能を向上させる。
【0159】
本発明の一態様によると、目下のメモリ操作が実行中のときに、それ以外の多数の保留のメモリ操作をキューに入れる。さらに、一定の条件が満たされる場合、個別のメモリ操作に対するコマンドのいくつかを併合して1つの合同操作にまとめることができる。一例において、目下のメモリ操作の実行中にキューの中にある1つ以上の多数の保留のメモリ操作を併合する条件が満たされる場合、目下のメモリ操作が終了し、併合された操作がこれに取って代わる。別の例において、キューの中にある2つ以上の多数の保留のメモリ操作を併合する条件が満たされる場合、現在実行中の操作が完了した後に併合操作を開始する。
【0160】
共通のワード線を共用するマルチビットページのメモリセルをプログラムする一例を挙げる。各々のマルチビットはバイナリ論理ページのビットを形成すると考えることができる。かくして、2ビットメモリセルからなるページには下位論理ページと上位論理ページがある。3ビットメモリセルからなるページには中間論理ページが加わる。バイナリ論理ページはそれぞれ別々にプログラムできる。よって、2ビットメモリセルの場合、第1の行程で下位論理ページをプログラムでき、上位論理ページは第2の行程でプログラムできる。さらに効率的に、2ビットのプログラムデータが入手可能なら、好ましくは1回の行程でマルチビットページをプログラムする。
【0161】
多重バイナリプログラミングや併合単一行程マルチビットプログラミングでは、何ビットのプログラムデータが入手可能かによって数通りのシナリオが考えられる。理想的には、プログラミングの前に全てのビットが入手可能なら、マルチビットのメモリセルページを1回の行程でプログラムする。前に述べたように、下位論理ページのプログラムデータだけが入手可能なら、下位論理ページのシングルビットプログラミングを開始できる。その後、上位論理ページのプログラムデータが入手可能になったら、第2の行程で同じメモリセルページをプログラムできる。このほかに、下位ページのプログラミングが完了する前に上位ページデータが入手可能になることもある。この場合、効率的な単一行程マルチビットプログラミングまたは「フルシーケンス」プログラミングを活かすため、下位ページのプログラミングを終了し、マルチビットプログラミングに差し替える。この場合、下位論理ページと上位ページのプログラミングがあたかも併合されたか、あるいは合同されたかのようになる。
【0162】
マルチビットセルを持つメモリで、ホストによって送信される論理プログラムデータページは下位論理ページ、上位論理ページ、または何らかの他の中間論理ページが入り混じったものになることがある。このため通常ならば、データラッチが許す範囲でできるだけ多くのプログラムデータページをキャッシュするのが望ましい。こうすれば、同じメモリセルページに属する論理ページを併合してマルチビットプログラミングを実行する見込みが高まる。
【0163】
図29は、複数メモリ操作のキュー操作と併合を示すフローチャートである。コアアレイと、アレイでアドレス指定されたページの関連するデータをラッチするデータラッチとを具備するメモリに、複数のメモリ操作を併合するアルゴリズムを適用する。
ステップ710:コアアレイで実行する着信メモリ操作を順序付けするために先入れ先出しキューを設ける。
ステップ720:データラッチを使って着信メモリ操作のデータをキャッシュできるときに、着信メモリ操作をキューに入れる。
ステップ730:コアアレイにおけるメモリ操作の実行とキューの中にあるメモリ操作に併合の見込みがあるか否かを判断する。併合の見込みがあるならステップ740へ進み、さもなくば、ステップ750へ進む。
(「併合の見込みがある」とは、同じメモリセルのページに関連する少なくとも2つの論理ページを1つの行程でまとめてプログラムできることを意味する。例えば、2ビットメモリセルを備えるメモリで、下位論理ページと上位論理ページにそれぞれプログラムする2つの操作には併合の見込みがある。同様に、3ビットメモリセルを備えるメモリで下位論理ページと中間ページにプログラムする操作には併合の見込みがある。下位、中間、および上位論理ページに対するプログラミング操作にも併合の見込みがある。2ビットセルの例に戻り、コアアレイで下位論理ページが実行中で、キューの中で保留になっている次のプログラミング操作が同じメモリセルのページに属する上位論理ページをプログラムするものならば、併合の見込みはある。他方、コアアレイで上位ページが実行中なら、次にプログラムする保留のページは異なるメモリセルのページに属することになるため、併合の見込みはない。メモリ操作が読み出し操作である場合も同様である。)
【0164】
ステップ740:キューの中にある1つ以上の次のメモリ操作がコアアレイにおけるメモリ操作に併合可能である場合、コアにおけるメモリ操作の実行を終了し、代わりに併合メモリ操作の実行を開始し、さもなくば、コアにおけるメモリ操作の完了を待ってからキューの中にある次のメモリ操作を実行する。ステップ720へ進む。
(「併合可能」とは、併合が可能な条件が満たされていることを意味する。この例では、データラッチにラッチされた下位論理ページと上位論理ページの両方のプログラムデータが使用可能である。同様に、「併合メモリ操作」とは、下位論理ページと上位論理ページの両方を一緒にプログラムすることまたは感知することに相当する。)
ステップ750:コアにおけるメモリ操作が完了するまで待ち、キューの中にある2つ以上の次のメモリ操作が併合可能なら、コアアレイで併合メモリ操作を実行し、さもなくば、キューの中にある次のメモリ操作をコアアレイで実行する。ステップ720へ進む。
【0165】
複数のコマンドの管理は、メモリ操作キュー管理部によって制御されるメモリ操作キューを用意することによって達成する。このメモリ操作キュー管理部は好ましくは、メモリアレイにおけるメモリ操作の実行を制御する状態マシンの1モジュールとして実装する。
【0166】
図30は、メモリ操作キューとメモリ操作キュー管理部が組み込まれた好適なオンチップ制御回路の概略的ブロック図を示す。オンチップ制御回路310’はメモリアレイ100の基本的動作を制御する働きをする有限状態マシン312’を含む。(図28も併せて参照)。メモリ操作キュー330は、着信メモリ操作要請を保持する先入れ先出しスタックメモリによって実装する。通常、メモリ操作要請はホストかメモリコントローラから発行される(図28参照)。
【0167】
複数の保留の操作と実行中のメモリ操作を管理するため、状態マシン312’の1モジュールとしてメモリ操作キュー管理部332を実装する。キュー管理部332は基本的に、状態マシン312’に向けて放出され実行されるキュー330内の保留のメモリ操作のスケジュールを組む。
【0168】
メモリ操作、例えばMEM OP0が、キューから状態マシンのプログラムレジスタ324へ放出されると、状態マシンによる制御のもとでMEM OP0がメモリアレイで実行される。状態マシンは使用可能な空きデータラッチ数を常に把握し、このステータスは信号Ready/Busy* によってホスト/メモリコントローラへ伝達される。ホストは、1つ以上の空きデータラッチが使用可能である場合、プログラミングや読み出し等、さらなるメモリ操作を要請できる。かくして、ホストによって送信されるMEM OP1、MEM OP2等がキュー330に入れられる。キュー内の最大メモリ操作数は、使用可能な空きデータラッチ数によって決まる。
【0169】
キュー管理部332は、キュー330から状態マシンのプログラムレジスタ324にかけて、キュー330の中で保留になっているメモリ操作の放出を制御する。さらに、これは、図29との関係で説明したように、いずれかのメモリ操作を併合して1つの合同操作にまとめることができるか否かを判断する。キュー管理部332は、キューの中にある2つ以上の操作が併合可能である場合、それらの併合可能な操作をキュー330から放出し、その合同操作は、状態マシンにおける現在の操作の実行が完了した後に状態マシン312’によって実行される。キュー管理部は、キューの中にある1つ以上の操作が状態マシンによって実行されている操作と併合可能である場合、状態マシンに現在実行中の操作を終了させ、代わりに合同操作を実行させる。このように、メモリ操作管理部332は状態マシン312’の残りの部分と協働しながら複数のメモリ操作のスケジュールを組み、場合によってはそれらを併合する。
【0170】
これまで2ビットメモリの例を挙げて本発明を説明してきた。目下のメモリ操作の最中にデータラッチが解放されるなら、それらを使ってどんな保留のメモリ操作のデータをもキャッシュできる。こうすることでより多くのデータビットを使用可能なデータラッチにロードできるばかりでなく、メモリ操作を併合する見込みも高くなる。当業者なら、2ビットより多くのデータをそれぞれ蓄積できるセルを備えるメモリ、例えば3ビットまたは4ビットメモリに、同じ原理を容易く応用できる。例えば、3ビットメモリのページには、3つの単独ビットページ、具体的には下位、中位、および上位ビットページが、あるとみなすことができる。これらのページは、同じメモリセルのページで異なる時間に別々にプログラムできる。あるいは、全ての3ビットが使用可能な場合、オールビットプログラミングモードで一斉にプログラムすることができる。そのために、多数のページに応じてキャッシュプログラミングコマンドをキューに入れる必要がある。2ビットメモリでフルシーケンス転換が可能なら、2つのプログラムコマンドを一斉に実行できる。同様に、3ビットメモリでオールビットまたはフルシーケンスモードへ転換する場合、3つの相継ぐプログラムコマンドを一斉に実行できる。ここでもコマンドキュー管理部は、完了または終了したコマンドがどれかを、そして次に実行するコマンドはどれかを、追跡する。そして、プログラミング中に特定の記憶状態マイルストーン (milestones) に達するといくつかのデータラッチが解放され、保留のプログラムデータのキャッシュに効率よく利用することができる。
【0171】
消去中のキャッシュ操作−バックグラウンド読み出し・書き込み操作
消去操作の待ち時間は、フラッシュ記憶システムの全体的な性能オーバーヘッドを大きく左右する要因の1つである。例えば、消去操作にかかる時間はプログラミング操作の4または5倍の長さになることがあり、読み出し操作の10倍の長さになることがある。フラッシュメモリの性能を向上させるには、消去操作の完了を待つ時間を利用するキャッシュ操作等のバックグラウンド操作が極めて重要となる。本発明は、メモリがメモリコアにおける消去操作で埋まり、ビジー状態のときにデータラッチとI/Oバスを利用するものである。例えば、次のプログラミング操作のデータまたは読み出し操作からの出力データは消去操作と同時進行で実行できる。このようにして、次のプログラミング操作または読み出し操作が行われないときに、当該操作のデータ入力または出力部分は既に完了しているため、プログラミングまたは読み出しの待ち時間は低下し、性能は上がる。
【0172】
消去操作の実施にあたっては数通りの方法がある。米国特許第5,172,338号(特許文献14)で開示されている一方法では、交互消去パルスとその後に続くベリファイによって消去を行う。ひとたび消去されベリファイされたセルに対するさらなる消去パルスは禁じられる。NANDメモリにとって好適なもう1つの消去操作には2つの段階がある。第1段階における消去では、所定の「消去済み」または「接地」状態を下回る程度のしきい値レベルになるまでメモリセルの電荷素子から電荷を除去する。第2段階では、所定の「消去済み」しきい値に対する一連のソフトプログラミング/ベリファイによって確立されたしきい値分布の中に消去済みセルのしきい値線を締め付ける。
【0173】
本発明の一般的な態様によると、消去操作が行われているときには空きデータラッチを使って別の保留のメモリ操作に関係するデータをキャッシュできる。
【0174】
図31は、消去操作中のバックグラウンドキャッシュ操作を示す概略的フローチャートである。
ステップ760:一定数のビットをラッチする容量を持つ1組のデータラッチを、アドレス指定されたページの各メモリセルに用意する。
ステップ770:指定されたページ群に対して消去操作を実行する。
ステップ780:消去操作と同時進行で、メモリアレイに対する1つ以上の後続するメモリ操作に関係するデータを用いて1組のデータラッチに対して操作を実行する。
【0175】
本発明の一態様によると、消去操作が行われているときには保留になっているプログラミング操作のプログラムデータをI/Oバスを通じてデータラッチにロードする。特に、電荷を除去する消去操作の第1段階では全てのデータラッチをプログラムデータのキャッシュに使うことができる。ソフトプログラミングのベリファイに合格した後にはプログラムロックアウト状態を蓄積するためにデータラッチのいずれか1つが必要となるため、ソフトプログラミングが行われる消去操作の第2段階では、この1つのデータラッチを除く全てのデータラッチをプログラムデータのキャッシュに使用することができる。1セル当たり2ビットをサポートするメモリアーキテクチャの場合、少なくとも各ビットにつき1つずつ、合わせて2つのデータラッチがある。好適な実施形態において、操作中に発生する特定の状態を蓄積するための追加のデータラッチを使用する。したがって、メモリのアーキテクチャにもよるが、2ビットセルの場合、少なくとも2つのデータラッチがあって、さらに好ましくは3つのデータラッチを各セルにつき用意する。消去の第1段階ではこれらのデータラッチの全てをキャッシュ用に使用でき、消去操作の第2段階では1つのデータラッチを除く全てのデータラッチをキャッシュ用に使用できる。したがって、消去段階とメモリアーキテクチャに応じて使用可能なデータラッチに1つ以上のページのプログラムデータをロードできる。
【0176】
図32は、メモリアレイに対する消去操作の概略的タイミング図であって、消去操作の第1の消去段階におけるプログラムデータのロード操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。この図に見られるように、メモリコアにおける消去操作には第1の消去段階とその後に続く第2のソフトプログラミング/ベリファイ段階とがある。
【0177】
消去操作の第1段階でメモリアレイまたはコアは既に埋まっているが、データラッチとI/Oバスは空いていてバックグラウンド操作に使える。このときI/Oバスを通じてデータラッチにプログラムデータをロードできる。例えば、各セルにつき3つのデータラッチがある好適な実施形態において、第1の消去段階のキャッシュ操作にこれらのラッチを全て使用することができる。
【0178】
例えば、N番目のページデータを書き込む場合、ホストは最初にそのページデータを指定のアドレスに書き込むための書き込みコマンドをメモリに向けて発行する。その後には、メモリにプログラムするページデータを送信する。プログラムデータはI/Oバスを通じてトグルされ、各読み出し/書き込みモジュールのDL2にラッチされる(図13および図14参照)。よって、I/Oバスはこのトグルイン期間中に一時的にビジー状態になり、これは例えば300μsの長さにおよぶ。使用可能なデータラッチが3つあるなら、原理上は最高3ページのプログラムデータをキャッシュできる。例えば、消去操作が進行中のときにはN番目のページの下位ページ部分を、またはN番目のページの下位ページ部分と上位ページ部分の両方を、順次ロードできる。
【0179】
図33は、メモリアレイに対する消去操作の概略的タイミング図であって、消去操作のソフトプログラミング/ベリファイ段階におけるプログラムデータのロード操作を示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。
【0180】
消去操作の第2のソフトプログラミング/ベリファイ段階でもメモリアレイまたはコアは予め埋まっている。しかし、前述したように、1つのデータラッチを除く全てのデータラッチとI/Oバスは空いている。消去操作に使われていないデータラッチにはプログラムデータをロードできる。例えば、各セルにつき3つのデータラッチがある好適な実施形態でソフトプログラミング/ベリファイ操作に使われるラッチは1つだけである。したがって、空きラッチは2つ残っていてキャッシュ操作に使える。
【0181】
例えば、N番目のページデータを書き込む場合、ホストは最初にそのページデータを指定のアドレスに書き込むための書き込みコマンドをメモリに向けて発行する。その後には、メモリにプログラムするページデータを送信する。プログラムデータはI/Oバスを通じてトグルされ、各読み出し/書き込みモジュールのDL2にラッチされる(図13および図14参照)。よって、I/Oバスはこのトグルイン期間中に一時的にビジー状態になり、これは例えば300μsの長さにおよぶ。使用可能なデータラッチが2つあるなら、原理上は最高2ページのプログラムデータをキャッシュできる。例えば、消去操作が進行中のときにはN番目のページの下位ページ部分を、またはN番目のページの下位ページ部分と上位ページ部分の両方を、順次ロードできる。
【0182】
一般的に、データラッチにロードできる最大ページ数は、メモリアーキテクチャのほかに、並行してプログラムされているチップ/ダイの数とプレーン/バンクの数とデータ転送速度次第で決まる。
【0183】
本発明のもう1つの態様によると、消去操作が行われているときには読み出し操作を挿し込むことができ、データラッチの中にある得られた読み出しデータは消去操作中に出力できる。好ましくは、ソフトプログラミング/ベリファイ操作の合間に読み出し操作を挿し込み、ソフトプログラミングパルスそのものは中断させない。感知され未使用データラッチにラッチされたデータは、アレイ内で消去が進行しているときにI/Oバスを通じてホストシステムへ出力できる。これはシステムオーバーヘッドを潜在化させるにあたって、例えば読み出しスクラブ操作および他のシステムメンテナンスを実行するにあたって、理想的な特徴である。
【0184】
先行技術のシステムで消去操作が中断すると、サイクルの頭からやり直さなければならない。これは、特にNANDメモリで多大な時間を必要とする。
【0185】
読み出し操作は、ソフトプログラミングパルスと消去ベリファイパルスとの間に挿し込むことができる。消去操作には、ソフトプログラミングパルスの数だけ読み出しを挿し込むことができる。感知時間は追加時間ではあるが、ソフトプログラミング/ベリファイ操作全体の時間と比較すると短い。読み出しデータのトグルアウトは進行中のプログラミング/ベリファイ操作と並行して行われるので有利である。内部制御やデータ管理でバックグラウンド操作を実行する場合にも読み出し操作を利用することができる。
【0186】
フラッシュ記憶システムにおける消去中の読み出しは、蓄積データを良好な状態に保つために行われる読み出しスクラブ操作に役立てることができる。データが蓄積されたメモリ部分を定期的に読み出し、セルにプログラムされた電荷の時間の経過にともなうずれや周囲の変化をチェックする。ずれや周囲の変化がある場合、適切なマージによるセルの再プログラミングによって補正する。米国特許第7,012,835号(特許文献31)では様々な読み出しスクラブ方式が開示されている。この特許は、その全体が本願明細書において参照により援用されている。読み出しスクラブはホストの操作とは無関係のシステム操作であるため、メモリがビジー状態になるときには他の何らかの操作の背後にこれを潜在化させるのが最善である。この場合、消去操作の最中に読み出しスクラブ操作を挿し込むことにより、読み出しの待ち時間を潜在化させることができる。
【0187】
図34は、メモリアレイに対する消去操作の概略的タイミング図であって、読み出し操作の挿し込みと、使用可能なラッチを使う、得られたデータの出力操作とを示している。ホストと、I/Oバスと、データラッチと、メモリコアの活動は同時進行で描かれている。この図に見られるように、消去操作の第2段階における操作はソフトプログラミング/ベリファイである。好ましくはソフトプログラミングパルスの完了は中断させずに1つ以上の読み出し操作を挿し込む。
【0188】
チップが消去操作の第2段階に入っているときにはソフトプログラミング/ベリファイのアルゴリズムを実行する。ステータス信号、例えばBUSY/READY* は、メモリが内部消去操作のためにビジー状態にあることを知らせる。同時に、もう1つのステータス信号、例えばCACHEBUSY/CACHEREADY* (図示せず)は、読み出しコマンド入力を受け付けるためにビジーからレディに推移する。読み出しコマンドが入力されるとすぐにCACHEBUSY/CACHEREADY* はビジーに推移して、他のコマンドの入力は阻止される。そして、読み出しコマンドは、目下のソフトプログラミングパルスが内部で完了するのを待ってから、同一チップでアドレス指定された別のブロックで実行される。読み出しが終わるとアドレスは以前の操作の対象であった消去ブロックに戻される。消去ブロックではソフトプログラミング/ベリファイ操作を再開できる。
【0189】
その一方でデータラッチの中にある読み出しデータはトグルアウトできる。このトグルアウト時間は普通、読み出し時間よりも遥かに長い。例えば、読み出し時間が約25μsであるのに対しトグルアウト時間は約200μsである。したがって消去操作に読み出しを挿し込めば、消去の完了を待ちながら浪費する時間から約200μsが浮いて有利である。
【0190】
この消去中のキャッシュ読み出しは、消去の時間が許す限り何度でも挿し込むことができる。しかし、読み出しが多すぎると総消去時間が長くなり、読み出しが消去操作に招く時間的なペナルティと読み出しから浮かせるトグル時間との間でバランスをとらなければならない。消去中に1つ以上の読み出しを挿し込んだ後になお空いている時間が残っているなら、前のセクションで説明したように使用可能なデータラッチを使ってプログラムデータをキャッシュできる。プログラムデータがロードされても、プログラミング操作は消去操作全体が完了した後でないと開始できない。ほとんどの場合、プログラムデータがロードされた後には他のキャッシュ操作は不可能になるため、プログラミング操作の適正な実行のための十分な空きラッチを確保しなければならない。
【0191】
図35は、図31のステップ780における消去操作のときにバックグラウンドによる読み出しスクラブのための特定のキャッシュ操作を示す概略的フローチャートである。
図31に示すステップ780をさらに以下のとおりに説明する。
ステップ782:指定ページを感知するために消去操作を中断する。
ステップ784:指定ページのデータがデータラッチにラッチされた後に消去操作を再開する。
ステップ786:消去操作中に指定ページのデータを出力する。
ステップ788:出力データにエラーがある場合、再プログラミングのために指定ページのスケジュールを組む。
【0192】
これまでのキャッシュ読み出しの説明は大部分、好適な消去操作の第2段階に関するものだった。好適な消去操作の第1段階では、所定のしきい値を下回る程度のしきい値レベルまで全てのセルを消去し、第2段階ではセルを所定のしきい値までソフトプログラムする。この消去方式は、前述したように、かなり正確な接地状態を必要とし、Nウェルにバイアスをかけることによってメモリを消去するにあたって多大な時間を要するので、NAND構造を持つフラッシュメモリに好適である。したがって、消去はソフトプログラミングの前に一斉に行うのが好ましい。消去パルス/ベリファイ/禁止方式を採用する他のメモリアーキテクチャでもキャッシュ操作は企図される。例えば、サイクルのベリファイ部分のときに読み出し操作を挿し込むことができる。
【0193】
図36は、消去中の先行バックグラウンド読み出しを示す。これは、読み出しが消去操作の直前に行われ、消去操作に割り込ませる必要がない場合により好適なキャッシュ読み出しである。これは、消去操作が始まる前に読み出し操作が分かっている場合に可能である。例えば、ホストが読み出し要請を保留にしていた場合、または何らかの読み出し操作がメモリシステムで予定されている場合はあり得る。あるいは、インテリジェントアルゴリズムは次に見込まれる読み出しを予想し、そのような読み出しのスケジュールを組むことができる。たとえこれが外れても深刻なペナルティは被らない。当たる場合、消去時間を利用して読み出しデータをトグルアウトできる。
【0194】
消去操作中に読み出しデータをキャッシュする態様とプログラムデータをキャッシュする態様の2つを組み合わせればさらなる柔軟性が提供されて、システム全体またはメモリのオーバーヘッドを最小限に抑えることができる。複数のプレーンとマルチチップデータ入力操作をもってしても、消去操作にともなうビジー時間をデータ入力時間に十分に活かせないことはある。そのような場合、読み出し操作とプログラミング操作を加えれば、消去時間を最大限に活用できる。
【0195】
読み出し中のキャッシュ操作−バックグラウンド読み出し・書き込み操作
キャッシュ読み出しは普通、多数のページが順次読み出されるときの時間を節約するために実施する。ページの感知は、既に感知済みのページをトグルアウトする時間に潜在化さることができるため、ユーザにとって感知の時間に余計な待ち時間は発生しない。一般的なやり方では、現在のページをトグルアウトしているときに次のページを感知する。
【0196】
図37は、典型的な読み出しキャッシュ方式を概略的に示す。(n−1)番目のページは前のサイクルで感知され、データラッチにラッチされている。T(n−1)に示すように、時間t0にはデータラッチからI/Oバスを通じて(n−1)番目のページがトグルアウトされる。S(n)に示すように、トグルが行われているときにはn番目のページを感知し、ラッチできる。t2には(n−1)番目のページのトグルが終わっているため、T(n)に示すように、これに続けてn番目のページデータをデータラッチからトグルできる。同様に、n番目のページがトグルアウトされているときには、S(n+1)に示すように(n+1)番目のページデータを感知し、ラッチできる。この(n+1)番目のページは、n番目のページのトグルが終わった直後にトグルできる。理想的には読み出しキャッシングの全体を通じてデータラッチとI/Oバスをフルに従事させることによって、遊んでいる時間を最小限に抑える。
【0197】
本発明の一態様に従い、多状態メモリセルでメモリセル間の摂動(ユーピン効果)を最小限に抑える必要がある場合、読み出しキャッシュ方式を提供する。好適な実施例において、「LM」符号化によって符号化されるメモリとルックアヘッド(「LA」)補正をともなう読み出しに読み出しキャッシング方式を使用する。「LM」符号化と「LA」補正にはいずれも、読み出しデータの単なるトグル操作のほかに追加のラッチおよびバス活動が必要となる。図37との関係で説明した従来方式をそのまま応用すると、最適な読み出しキャッシングは得られない。
【0198】
半導体メモリで集積の度合いが高まるにつれ、蓄積電荷によるメモリセル間の電界効果摂動(ユーピン効果)はセル間の間隔が狭まるほど顕著になる。メモリの多状態メモリセルはLM符号化を使って符号化し、メモリでは最適な順序でページをプログラムし、プログラムされたページはLA補正を用いて読み出すのが好ましい。読み出し操作の改良によって最適なキャッシュ操作を実現する。
【0199】
LM符号のためのキャッシュ読み出しアルゴリズム
読み出すページが多状態なら、使用する多状態の符号化の所要条件を読み出しキャッシュの実施例で満たさなければならない。図20A〜図20Eとの関係で既に述べたように、多状態メモリのためのLM符号化は基本的に、プログラミングの様々な行程から行程にかけてメモリセルにプログラムされる電荷の変化を最小限に抑える。3通りの境界しきい値(例えば、DA 、DB 、DC )によって区切られる4通りの記憶状態(例えば、「U」、「A」、「B」、「C」)を各セルで符号化する2ビットメモリの例を紹介する。例えば、2ビットメモリセルで、下位論理ページに対するプログラミングによりしきい値レベルはセルのしきい値ウィンドウの中間を非常に僅かに下回るところまで進む。その後の上位論理ページのプログラミングにより、既存のしきい値レベルはさらに進路の4分の1程度進む。したがって、第1の下位プログラミング行程から第2の最終上位プログラミング行程にかけて、正味の変化は最大でしきい値ウィンドウの4分の1程度であり、これはセルがワード線沿いの隣接するセルから被る最大摂動量となる。
【0200】
LM符号化の一特徴として、2つのビットの各々、すなわち下位ビットと上位ビットは、分けて考えることができる。しかし、下位ビットページの復号化は上位ページがプログラムされたか否かに左右される。上位ページがプログラム済みなら、下位ページの読み出しにあたって境界しきい値電圧DB に対して1回の読み出し行程readBが必要になる。上位ページがプログラムされていなければ、下位ページの読み出しにあたって境界しきい値電圧DA に対して1回の読み出し行程readAが必要になる。2通りの場合を区別するため、上位ページがプログラムされているときには上位ページ(通常はオーバーヘッドまたはシステム領域)にフラグ(「LM」フラグ)を書き込む。下位ビットページの読み出しのときにはまず、上位ページがプログラム済みと仮定し、readB操作を実行する。LMフラグが読み出されるならこの仮定は正しく、読み出し操作は完了する。他方、最初の読み出しでフラグが生成されなかった場合、これは上位ページがプログラムされていないことを意味し、readA操作により下位ページを再度読み出されなければならない。
【0201】
上位ビットページ読み出しの復号化にあたっては、境界しきい値電圧DA およびDC に対して操作readAおよびreadCがそれぞれ必要となる。同様に、上位ページの復号化も上位ページがまだプログラムされていなければ混乱する。ここでもLMフラグで上位ページがプログラム済みか否かを指示する。上位ページがプログラムされていなければ、上位ページデータがプログラムされていないことを意味する「1」に読み出しデータをリセットする。
【0202】
LM符号を使用するメモリでキャッシュ読み出しを実施する場合、データと同じ領域に保存されるLMフラグのチェックの必要性も考慮する。状態マシンにLMフラグをチェックさせるには、これをデータラッチからI/Oバスを通じて出力しなければならない。そのために、キャッシングをともなう読み出し操作中の感知データのトグルに加えて、LMフラグを出力するためのI/Oバスを割り当てる必要がある。
【0203】
図38Aは、LM符号によって符号化される論理ページでキャッシュ読み出しを行う概略的タイミング図である。目下のページを感知しているときに前回のページデータをトグルする一般的な方法は、図37に示された従来の読み出しの方法とほぼ同じである。しかし、LM符号における感知は2つの感知行程とその間に行われるLMフラグのチェックを行う可能性によって込み入ったものとなる。
【0204】
時間t0には、前回のサイクルで感知した(n−1)番目の論理ページがT(n−1)に示すようにデータラッチからI/Oバスへトグルアウトされる。これと同時に、S1 (n)は次の論理ページ(n)を感知する。LM符号化では2通りの場合、すなわち下位ビット論理ページの読み出しと、上位ビット論理ページの読み出しとを区別する必要がある。
【0205】
下位ビット論理ページの読み出しの場合、好適な感知は上位論理ページがプログラム済みとする仮定から始まり、第1の感知S1 (n)は境界しきい値電圧DB に対するreadBになる。t1でS1 (n)は終わり、LMフラグが生成される。しかし、これは、I/Oバスが(n−1)番目のページのトグルを完了した後でないとt2で出力できない。LMフラグが状態マシンに伝達されたらこれをチェックして、上位ページの有無を判断する。LMフラグが設定されているなら仮定は正しく、下位ビットページは正常に読み出されたことになる。ラッチされているページ(n)データは次のサイクルでトグルアウトできる。
【0206】
上位ビット論理ページの読み出しの場合、S1 (n)はそれぞれ境界しきい値電圧DA およびDC に対してreadAおよびreadCを通過する。上位ビットページの感知データはDL2に蓄積され、データラッチDL0はデータのトグルアウトに使われる(図13および図14参照)。t2ではDL2の感知データがDL0へ転送される。ここでも、(n−1)番目のページのトグルの終わりに出力されたLMフラグをチェックする。上位ページがプログラムされているなら問題なく、ラッチの中にある感知データ(ページ(n))は次のサイクルでトグルアウトできる。
【0207】
上位ビット論理ページを読み出すときにLMフラグが設定されていないことが判明する場合、これは上位ページがプログラムされていないことを意味する。LM符号化にきっちり準拠するため、S1 (n)の感知データは「1」にリセットされる。続いて、感知データは出力できる状態になる。そして、第1のバイトがプリフェッチされ、次のサイクルが始まるときにはページ全体のトグルアウトが行われる。
【0208】
図38Bは、上位ビット論理ページがまだプログラムされていないときに下位ビット論理ページを読み出す特殊な場合でLM符号を用いるキャッシュ読み出しの概略的タイミング図である。ここでもt0で第1の感知S1 (n)が始まり、t1にはLMフラグが読み出される。t2にはLMフラグがチェックのために出力される。LMフラグが設定されていないことが判明する場合、S1 (n)はreadBで下位ビットページを誤って読み出されたことになる。t3で、第2の感知S2 (n)が始まって、readAで実行される。しかし、この追加の感知(t4で終了)は(n−1)番目のページをトグルする時間、例えばT(n−1)の背後に潜在化させることはできない。なぜならば、第2の感知に先立つS1 (n)からのフラグのチェックにあたってはI/Oバスにアクセスする必要があり、T(n−1)のトグルが終わるのを待たなければならないからである。
【0209】
オールビット感知をともなうキャッシュ読み出しアルゴリズム
代替方式で、読み出すワード線上のページがマルチビットで複数の論理ページが同じ物理ページ上にある場合、全てのマルチビットを1回の感知操作でまとめて感知して電力を節約できる。
【0210】
図39は、2ビットメモリでオールビット感知をともなうキャッシュ読み出しの概略的タイミング図を示す。2ビットの場合、4つの記憶状態を表す2つのビットを同じ操作で感知する。そのために、readAと、readBと、readCにおける感知で4つの状態を区別する必要がある。この場合の感知は1サイクルおきに行われる。例えば、感知は奇数サイクルだけで行い、偶数サイクルでは省略する。1回の感知で得た2つの論理ページは各サイクルで順次トグルアウトする。
【0211】
8つの状態、例えば「U」、「A」、「B」、「C」、「D」、「E」、「F」、および「G」がある3ビットの場合のオールビット感知では、8つの状態を区別するためにreadA、readB、readC、readD、readE、readF、およびreadGでの感知が必要となる。
【0212】
一般的に、オールビットに満たないマルチビットの感知は、ページの全てのビットの読み出しに必要な感知数を減らし、電力の節約に役立つ。図30との関係で説明したメモリ操作キューとキュー管理部を使えば、2つ以上のバイナリページ感知を併合しながらオールビット感知操作を管理できる。オールビット感知方式はLM符号を用いるメモリに応用できるほか、LA補正を用いるメモリにも応用でき、これは以降のセクションで説明する。
【0213】
LA補正をともなうLM符号のためのキャッシュ読み出しアルゴリズム
隣接するワード線上のメモリセル間の摂動は、好適なプログラミング方式を用いてプログラミング中に軽減できる。これにより摂動は事実上半分に減る。残りの半分も好適なLA読み出し方式を用いることによって読み出し中に補正できる。
【0214】
好適なプログラミング方式では、ワード線に関連するページを最適な順序でプログラムする。例えば、全ての物理ページでバイナリデータのページを保持するバイナリメモリの場合、好ましくは一定の方向に沿って、例えば下から上へ、順次ページをプログラムする。この場合、ある特定のページがプログラムされているときに、これの下側にあるページはプログラム済みである。現在のページに対する摂動影響は何であれ、摂動の観点から現在のページをプログラム−ベリファイするときに計上する。基本的には、プログラムされている現在のページがプログラムされた後にその周囲で遭遇する変化を最小限にとどめるような順序でページをプログラムしなければならない。こうすればプログラム済みのページに摂動を与えるページはそのページの上側にあるページだけとなり、ワード線からワード線にかけてのユーピン効果はこのプログラミング順序により事実上半減する。
【0215】
メモリセルの物理ページが多状態になるメモリの場合の順序はさほど単純ではなくなる。例えば、2ビットメモリで、ワード線に関連する各物理ページは、2ビットデータの単一ページとみなすか、下位および上位ビットでそれぞれ1ビットデータの2つの別々の論理ページとみなすことができる。したがって、物理ページは、2つのビットによる1回の行程でプログラムでき、さもなくば、下位ビットページによる最初の行程と、上位ビットページによるその後の行程の2回に分けてプログラムできる。それぞれの物理ページを2回の行程に分けてプログラムする場合、修正を加えた最適順序が可能である。
【0216】
図40は、2ビットメモリセルを具備し、ページを最適順序でプログラムすることにより隣接するワード線におけるメモリセル間のユーピン効果を最小限に抑えるメモリの一例を示す。表記にあたっては便宜上、物理ページP0,P1,P2・・・がそれぞれワード線W0,W1,W2・・・上に存在するものとする。2ビットメモリの場合、各物理ページには2つの論理ページ、具体的にはバイナリデータをそれぞれともなう下位ビット論理ページと上位ビット論理ページとが関連する。概して、ある特定の論理ページはLP(Wordline.logical_page)と記す。例えば、W0上のP0の下位ビットページと上位ビットページはそれぞれLP(0.0)とLP(0.1)とラベル付けし、対応するW2上のものはLP(2.0)とLP(2.1)とラベル付けする。
【0217】
基本的に、論理ページのプログラミングは順序nに従い、プログラムされている現在のページがプログラムされた後にその周囲で遭遇する変化を最小限に抑えるようにする。この場合でも下から上にかけて一定の方向で徐々に進むことにより片側からの摂動の解消を助長する。さらに、プログラミング行程は各物理ページにつき2回になることがあるため、物理ページのプログラミングが上に進むときに、現在の上位ビットページは隣接する下位ビットページがプログラムされた後にプログラムしたほうがよく、こうすれば現在の上位ビットページをプログラムするときに摂動効果が計上される。よって、プログラミングがLP(0.0)から始まるならば、その順序はページプログラミング順序0,1,2・・・n・・・によって指定され、LP(0.0),LP(1.0),LP(0.1),LP(2.0),LP(1.1),LP(3.0),LP(2.1)・・・となる。
【0218】
LA補正をともなうLM符号のためのキャッシュ読み出しアルゴリズム
本発明の一態様によると、読み出しデータのキャッシュ方式では、近接する物理ページまたはワード線からのデータに補正が左右される読み出し操作であっても、メモリコアから現在のページを感知しているときにデータラッチとI/Oバスを効率よく使用して、既に読み出し済みのページをトグルアウトする。特に、好適な読み出し操作は「ルックアヘッド」(「LA」)読み出しであり、好適な記憶状態の符号化は「下位中間」(「LM」)符号である。現在のワード線における現在のページの読み出しに先立ち、前もって必要なデータの読み出しを隣接するワード線で実行しなければならない場合でも、前もって必要な読み出しとそれにともなうI/Oアクセスを前のページの読み出しサイクルの中で先回りして実行すれば、既に読み出し済みのページでI/Oアクセスが行われている間に現在の読み出しを実行できる。
【0219】
LA読み出し方式は、2005年4月5日に出願された「結合補償を含む不揮発性記憶装置の読み出し操作 (Read Operations for Non-Volatile Storage that Includes Compensation for Coupling) 」という米国特許出願第11/099,049号(特許文献32)に開示されている。この特許出願は、その全体が本願明細書において参照により援用されている。LA(「ルックアヘッド」)補正をともなう読み出しでは基本的に、隣接するワード線上でセルにプログラムされた記憶状態を調べ、それらが現在のワード線で読み出されているメモリセルに与える摂動影響を補正する。ページが前述した好適なプログラミング方式でプログラムされていたならば、この隣接するワード線は現在のワード線のすぐ上のワード線となる。LA補正方式では、隣接するワード線のデータを現在のページより前に読み出す必要がある。
【0220】
図40を参照し、例えば読み出しの対象となる現在のページ(n)がWLm(例えば、WL1)にあるなら、SLA(n)と表示するLA読み出しは次のワード線WLm+1(例えば、WL2)を先に読み出し、そのデータ結果を1つのデータラッチに保存する。次に、SLA(n)の結果に照らして現在のページを感知するが、これはS1 ’(n)と表示される。
【0221】
図40との関係で前に述べたように、好適なプログラミング順序によるLM符号では下位ページ(例えば、LP(1.0))がDB まで、またはDB の近くまで(中間状態)、プログラムされる。上位ページ(例えば、LP(1.1))は、WLm+1の下位ページ(例えば、LP(2.0))がプログラムされた後に限りプログラムされる。かくして、下位ページのワード線間ユーピン効果は完全になくなる。したがって、データ依拠形補正は「A」状態と「C」状態だけで行われ、「U」状態や「B」状態については行われない。
【0222】
LA読み出しの好適な実施例では、LA読み出しで「A」または「C」状態、あるいは「U」または「B」状態が、確認されたか否かを指示するためにラッチを使用する。前者の場合は補正が必要であり、後者の場合は補正の必要はない。現在の読み出しS1 (n)における該当セルは、感知パラメータを適当に調整することによって、例えば感知中にワード線電圧を上げることによって、補正される。これは、調整がある感知を行い、調整がない感知をさらに行うことによって現在のページの全体で行う。ラッチが補正を指示するか否かに従って、これらの2つの感知からページの各セルについてデータが選択される。
【0223】
LM符号による読み出しでは、(第2行程の読み出しにより、または読み出しデータをリセットすることにより)読み出し結果がまとまる前にLMフラグをチェックする必要がある。LA補正では、現在のワード線を読み出す前に次のワード線の読み出しを先に行う必要がある。したがって、状態マシンは、次のワード線の読み出しからのLMフラグと現在のワード線からのLMフラグの両方をチェックする必要がある。2つのLMフラグは、読み出しデータのトグルに使われていないI/Oバスを通じて状態マシンへ出力する必要がある。
【0224】
図41は、図37に示された従来の方式に従いLA補正をともなうLM符号のための読み出しキャッシングの一実施例を示す。従来の方式では基本的に、前の感知済みページのデータトグルアウト時間の中に現在のページの感知を潜在化させる。しかし、この場合、WLmにおける現在のページ感知S1 ’(n)の前に、WLm+1における追加のルックアヘッド読み出しSLA(n)を行わなければならない。これらの感知のLMフラグは感知済みデータがアサートされる前にI/Oバスを通じて出力しなければならない。現在のページ感知S1 ’(n)はSLA(n)からのデータに照らして行われて、現在のページのための補正済みデータが生成される。nが下位ビットページであって、図38Bに示すように、上位ビットページがまだプログラムされていなければ、S1 ’(n)の後にさらなるS2 ’(n)が続くことが理解できる。
【0225】
t0に始まる次のサイクルでは、T(n)に示すようにページnの補正済み感知データをトグルアウトする。同時に、現在の感知はS1 ’(n+1)による次のページまで進み、これの前にはSLA(n+1)を実行しなければならない。しかし、これらの感知からのLMフラグの出力はページnのトグルT(n)が終わるまで待たなければならない。さらに、S1 (n+1)はSLA(n+1)の結果が確定した後でないと実行できない。したがって、S1 ’(n+1)はデータトグル期間外でしか実行されず、そのためデータトグル期間の背後に潜在化することができない。このためラッチとI/Oバスがフルに使われていない状態で感知時間が増し、時間の浪費は以降の全サイクルで繰り返される。この実施例でLA補正を使用するとユーザにとっての読み出し性能は低下する。
【0226】
LA補正をともなうLM符号における好適なキャッシュ読み出しの実施例では、次のワード線感知と現在のワード線感知をパイプラインすることによって全ての感知をデータトグルの中に潜在化させる。次のワード線感知は常に現在のワード線感知より前に実行する。データトグルの各群内では現在のワード線感知を実行し、次の次のワード線感知がその後に続く。データ群のトグルアウトが完了してI/Oバスが使える状態になると、次の次のワード線のLMフラグをまず取り出し、チェックする。上位ページがプログラムされていないことを伝える状態にLMフラグがなっている場合、次の次のワード線の感知データを「1」(補正なし)にリセットする。その後に現在のワード線のLMフラグをチェックする。現在のワード線のLMフラグ次第では、感知データを維持し、または別の感知を実行する必要があり(下位ページ読み出しの場合)、またはデータを全て「1」にリセットする(上位ページ読み出しの場合)。2ビットメモリセルを具備するメモリなら、これらの感知とデータのトグルアウトを3つのデータラッチで管理できる。
【0227】
図42は、LM符号とLA補正をともなう改良された読み出しキャッシング方式を示す。−t5からt0にかけての最初のサイクルではWLmで現在のページ(n)を読み出し、残りのサイクルとは異なっている。前と同じく、LA補正にはSLA(n)の先行読み出しが必要であり、readAと、readBと、readCはWLm+1でセル状態を感知する。この読み出しからのLMフラグFLA(n)は−t4に出力され、チェックされる。WLm+1で上位ページがプログラムされていないことをフラグが伝える場合、感知されているデータが全て「1」にリセットされ、補正がないことを指示する。上位ページがプログラムされていることをフラグが伝える場合、補正の有無を伝えるラッチされたデータが現状のまま保たれる。−t3では、前に説明したLM符号とLA補正に従い、WLm上の現在のページをS1 ’(n)により、さらにことによるとS2 ’(n)により、感知する。図41に示す方式とは対照的に、次のページ(n+1)でも先行ルックアヘッド読み出しが行われる。したがって、−t2にはSLA(n+1)を実行し、−t1にはこれのLMフラグを出力し、チェックする。
【0228】
最初のサイクルの後、次のサイクルが始まるt0には、S1 ’(n)で既に感知しLA補正が行われたデータがT(n)に示すようにトグルアウトされる。まずは、図38に示す順序によって決まるワード線上の(n+1)までページアドレスを増加させる。前もって必要なルックアヘッドSLA(n+1)は前のサイクルで完了しているため、時間t0にはT(n)の開始と併せて(n+1)番目のページの感知S1 ’(n+1)を直ちに着手できる。t1でS1 ’(n+1)が終わるとLMフラグF(n+1)を取り出し、これをチェックし、LMフラグ次第ではこの後に何らかの追加操作が続く。補正されたページ(n+1)データは次のサイクルでトグルできる。その一方で、ページ(n)のトグルアウトが行われているときには、次のページのルックアヘッド感知SLA(n+2)をT(n)のトグル期間内に前もって実行できる。
【0229】
T(n)、すなわちページ(n)のトグルが、完了すると直ちに次のサイクルが始まり、T(n+1)を実行し、LA補正済みのページ(n+1)データをトグルアウトする。ページ(n+1)のサイクルはページ(n)と同様に継続する。重要な特徴として、ある所与のページのルックアヘッド読み出しは先行サイクル中に先回りして実行される。
【0230】
図43は、改良された読み出しキャッシングを示す概略的フローチャートである。
ステップ810:メモリから一連のページを感知するそれぞれの読み出しサイクルで、前回のサイクルで感知した前のページを現在のサイクルで出力する。
ステップ830:前のページの出力中に現在のページを感知するが、現在のページの感知は現在のワード線で行われ、隣接するワード線のデータからの摂動効果を補正するために隣接するワード線の感知が前もって必要となる。
ステップ850:現在のページに関係する隣接するワード線の前もって必要な感知を、現在のサイクルに先行するサイクル中に先回りして実行する。
【0231】
図44は、図41のステップ850をより明確に示す概略的フローチャートである。
ステップ852:前もって必要な感知からのデータの一部として入手する第1のフラグを出力する。
ステップ854:第1の出力フラグに従って前もって必要な感知からのデータを調整する。
ステップ856:現在のページの感知にあたって補正の必要があるか否かを伝えるデータをラッチする。
【0232】
図45は、図41のステップ830をより明確に示す概略的フローチャートである。
ステップ832:前もって必要な感知からの補正をともなうかまたは補正をともなわず、現在のページの感知を実行する。
ステップ834:現在の感知からのデータの一部として入手する第2のフラグを出力する。
ステップ836:第2のフラグに応じて、現在の感知からのデータを変えずに残すことにより、またはデータを所定の値に調整することにより、または現在のページの感知を別の一連の感知条件下で繰り返して新たなデータを入手することにより、修正する。
ステップ838:前もって必要な感知からのデータが補正を指示するか否かに応じて補正が施されているかまたは施されていない修正データをラッチする。
これまで前述したアルゴリズムを2ビットLM符号を用いて説明してきた。このアルゴリズムは3ビット以上のLM符号にも等しく応用できる。
【0233】
これまで本発明の様々な態様を特定の実施形態との関係で説明してきたが、本発明が添付の特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
【図面の簡単な説明】
【0234】
【図1A】不揮発性メモリセルの例を概略的に示す。
【図1B】不揮発性メモリセルの他の例を概略的に示す。
【図1C】不揮発性メモリセルの他の例を概略的に示す。
【図1D】不揮発性メモリセルの他の例を概略的に示す。
【図1E】不揮発性メモリセルの他の例を概略的に示す。
【図2】NORメモリセルアレイの一例を示す。
【図3】図1Dに示されたメモリセル等のNANDアレイの一例を示す。
【図4】フローティングゲートが一度に蓄積できる4通りの電荷Q1〜Q4でソース−ドレイン電流とコントロールゲート電圧との関係を示す。
【図5】読み出し/書き込み回路から行デコーダと列デコーダとを通じてアクセスする典型的なメモリアレイ構成を概略的に示す。
【図6A】個々の読み出し/書き込みモジュールの概略的ブロック図である。
【図6B】読み出し/書き込みモジュールの積み重ねによって従来どおりに実装された図5の読み出し/書き込みスタックを示す。
【図7A】一群の分割読み出し/書き込みスタックを具備し本発明の改良されたプロセッサを実装するコンパクトなメモリ装置を概略的に示す。
【図7B】図7Aに示されたコンパクトなメモリ装置の好適な構成を示す。
【図8】図7Aに示された読み出し/書き込みスタックにおける基本コンポーネントの一般的な構成を概略的に示す。
【図9】図7Aおよび図7Bに示された読み出し/書き込み回路における読み出し/書き込みスタックの好適な構成を示す。
【図10】図9に示された共通プロセッサの改良された実施形態を示す。
【図11A】図10に示された共通プロセッサの入力ロジックの好適な実施形態を示す。
【図11B】図11Aの入力ロジックの真偽表を示す。
【図12A】図10に示された共通プロセッサの出力ロジックの好適な実施形態を示す。
【図12B】図12Aの出力ロジックの真偽表を示す。
【図13】図10を簡素化したものであって、本発明の2ビットの実施形態の説明にかかわるいくつかの特定の要素を示す。
【図14】下位ページデータの読み出しが行われる上位ページプログラミングで図13と同じ要素のラッチ割り当てを示す。
【図15】単一ページモードにおけるキャッシュプログラミングの態様を示す。
【図16】下位ページからフルシーケンスへの転換に使用できるプログラミング波形を示す。
【図17】フルシーケンス転換をともなうキャッシュプログラミング操作における相対的なタイミングを示す。
【図18】キャッシュページコピー操作におけるラッチの処理を示す。
【図19A】キャッシュページコピー操作における相対的なタイミングを示す。
【図19B】キャッシュページコピー操作における相対的なタイミングを示す。
【図20A】LM符号を使って各メモリセルで2ビットのデータを蓄積する場合の4状態メモリアレイのしきい値電圧分布を示す。
【図20B】LM符号を使用する既存の2ラウンドプログラミング方式における下位ページプログラミングを示す。
【図20C】LM符号を使用する既存の2ラウンドプログラミング方式における上位ページプログラミングを示す。
【図20D】LM符号によって符号化される4状態メモリの下位ビットを識別するにあたって必要となる読み出し操作を示す。
【図20E】LM符号によって符号化される4状態メモリの上位ビットを識別するにあたって必要となる読み出し操作を示す。
【図21】下位ページプログラミングの概略的タイミング図であって、次のページのプログラムデータを未使用データラッチへロードするバックグラウンド操作を示す。
【図22】QWPを使用する4状態上位ページまたはフルシーケンスプログラミングの様々な段階で追跡する必要のある状態の数を示す表である。
【図23】上位ページまたはフルシーケンスプログラミングの概略的タイミング図であって、次のページのプログラムデータを未使用データラッチにロードするバックグラウンド操作を示す。
【図24】本発明の一般的な実施形態に従い目下の多段階メモリ操作と同時進行するラッチ操作を示すフローチャートである。
【図25】下位ページプログラミングの概略的タイミング図であって、使用可能なラッチを使った読み出し割り込み操作を示す。
【図26】上位ページプログラミングの概略的タイミング図であって、使用可能なラッチを使った読み出し割り込み操作を示す。
【図27】典型的なメモリ操作に関連する情報一式を示す。
【図28】シンプルなキャッシュ操作をサポートする従来のメモリシステムを示す。
【図29】複数のメモリ操作のキュー操作と併合を示すフローチャートである。
【図30】メモリ操作キューとメモリ操作キュー管理部が組み込まれた好適なオンチップ制御回路の概略的ブロック図を示す。
【図31】消去操作中のバックグラウンドキャッシュ操作を示す概略的フローチャートである。
【図32】メモリアレイに対する消去操作の概略的タイミング図であって、消去操作の第1の消去段階におけるプログラムデータのロード操作を示す。
【図33】メモリアレイに対する消去操作の概略的タイミング図であって、消去操作のソフトプログラミング/ベリファイ段階におけるプログラムデータのロード操作を示す。
【図34】メモリアレイに対する消去操作の概略的タイミング図であって、読み出し操作の挿し込みと、使用可能なラッチを使って得られたデータの出力操作とを示す。
【図35】図31のステップ780における消去操作のときにバックグラウンドによる読み出しスクラブのための特定のキャッシュ操作を示す概略的フローチャートである。
【図36】消去中の先行バックグラウンド読み出しを示す。
【図37】典型的な読み出しキャッシュ方式を概略的に示す。
【図38A】LM符号によって符号化される論理ページでキャッシュ読み出しを行う概略的タイミング図である。
【図38B】上位ビット論理ページがまだプログラムされていないときに下位ビット論理ページを読み出す特殊なケースでLM符号を用いるキャッシュ読み出しの概略的タイミング図である。
【図39】2ビットメモリでオールビット感知をともなうキャッシュ読み出しの概略的タイミング図を示す。
【図40】2ビットメモリセルを具備し、ページを最適順序でプログラムすることにより隣接するワード線におけるメモリセル間のユーピン効果を最小限に抑えるメモリの一例を示す。
【図41】図37に示された従来の方式に従いLA補正をともなうLM符号のための読み出しキャッシングの一実施例を示す。
【図42】LM符号とLA補正をともなう改良された読み出しキャッシング方式を示す。
【図43】改良された読み出しキャッシングを示す概略的フローチャートである。
【図44】図43のステップ850をより明確に示す概略的フローチャートである。
【図45】図43のステップ830をより明確に示す概略的フローチャートである。
【特許請求の範囲】
【請求項1】
アドレス指定可能なメモリセルのページを関連するワード線上に具備する不揮発性メモリ装置であって、
アドレス指定可能なページの各メモリセルについて用意され、一定数のビットをラッチする容量を持つ1組のデータラッチと、
指定されたページ群に対する読み出し操作を制御する状態マシンと、を備え、
前記状態マシンは、一連の読み出しサイクルの各サイクルでページデータを感知しかつラッチし、現在の読み出しサイクルにおける感知とラッチは、現在のワード線上の現在のページデータを対象とし、近傍のワード線からの摂動を補正するために近傍のワード線からの前もって必要なデータに応じて実行され、
前記状態マシンは、現在の読み出しサイクルに先立ち現在のページのために前もって必要なデータを先制的に感知しかつラッチし、
前記状態マシンは、第1の読み出しサイクルとは別の現在の読み出しサイクルで現在のページの前記感知およびラッチを実行し、その間に直前の読み出しサイクルで感知しラッチした前のページを出力するメモリ装置。
【請求項2】
請求項1記載のメモリ装置において、
メモリセルは、1ビットのデータを各々蓄積するメモリ装置。
【請求項3】
請求項1記載のメモリ装置において、
メモリセルは、2ビット以上のデータを各々蓄積し、ワード線上の各メモリセルのページには、各メモリセルの個々のビットに対応する2ページ以上のバイナリデータが関連するメモリ装置。
【請求項4】
請求項3記載のメモリ装置において、
前記現在のページのために前もって必要なデータを感知しかつラッチする状態マシンは、
前記前もって必要な感知からの前もって必要なデータの一部として入手する第1のフラグを出力し、
第1のフラグに応じて前もって必要なデータを調整し、
現在のページについて補正が必要か否かを指示するために調整済みの前もって必要なデータをラッチするメモリ装置。
【請求項5】
請求項4記載のメモリ装置において、
第1のフラグは、近傍のワード線上の前もって必要なメモリセルのページが全てのビットでプログラム済みか否かを指示するメモリ装置。
【請求項6】
請求項5記載のメモリ装置において、
近傍のワード線が全てのビットでプログラムされていないことを第1のフラグが指示する場合、補正が不要であることを指示するために前もって必要なデータが調整されるメモリ装置。
【請求項7】
請求項5記載のメモリ装置において、
近傍のワード線が全てのビットでプログラムされていることを第1のフラグが指示する場合、補正が必要であることを指示するために前もって必要なデータが調整されるメモリ装置。
【請求項8】
請求項3記載のメモリ装置において、
前記現在のページを感知しかつラッチする状態マシンは、
前記調整済みの前もって必要なデータからの補正により現在のページの感知を実行し、
現在のページの一部として入手する第2のフラグを状態マシンのために出力し、
第2のフラグに応じ、状態マシンはページを変えずに残すことにより、またはページを所定の値まで調整することにより、または1組の別の感知条件下で現在のページの前記感知を繰り返して得た新たなページに置き換えることにより、現在のページをリフレッシュし、
リフレッシュされた現在のページを次の読み出しサイクルで出力するためにラッチするメモリ装置。
【請求項9】
請求項8記載のメモリ装置において、
前記調整済みの前もって必要なデータの指示により補正を必要とするメモリセルでの状態マシンによる現在のページの感知は、所定のブーストによるワード線電圧で実行されるメモリ装置。
【請求項10】
請求項8記載のメモリ装置において、
第2のフラグは、現在のワード線上の現在のメモリセルのページが全てのビットでプログラム済みか否かを指示するメモリ装置。
【請求項11】
請求項10記載のメモリ装置において、
前記状態マシンは、近傍のワード線が全てのビットでプログラムされていることを第2のフラグが指示する場合、現在のページを変えずに残すことにより現在のページをヌル操作でリフレッシュするメモリ装置。
【請求項12】
請求項10記載のメモリ装置において、
メモリセルは2ビットのデータを各々蓄積し、
メモリセルのページは下位ビットページと上位ビットページとから構成され、
近傍のワード線が全てのビットでプログラムされていないことを第2のフラグが指示し、かつ感知の対象となる現在のページが上位ビットページである場合、前記現在のページのリフレッシュは、上位ビットページがプログラムされていないことを指示する所定のビットに現在のページをすべてリセットすることによって行われるメモリ装置。
【請求項13】
請求項10記載のメモリ装置において、
メモリセルは2ビットのデータを各々蓄積し、
メモリセルのページは下位ビットページと上位ビットページとから構成され、
近傍のワード線が全てのビットでプログラムされていないことを第2のフラグが指示し、かつ感知の対象となる現在のページが下位ビットページである場合、前記現在のページのリフレッシュは、別の所定の基準に対して現在のページを感知することによって行われるメモリ装置。
【請求項14】
アドレス指定可能なメモリセルのページを関連するワード線上に具備する不揮発性メモリ装置であって、
アドレス指定可能なページの各メモリセルについて用意され、一定数のビットをラッチする容量を持つ1組のデータラッチと、
指定されたページ群に対する読み出し操作を制御する手段と、
一連の読み出しサイクルの各サイクルでページデータを感知しかつラッチする手段であって、現在の読み出しサイクルで感知しかつラッチする前記手段は、現在のワード線上の現在のページデータを対象とし、近傍のワード線からの摂動を補正するために近傍のワード線からの前もって必要なデータに応答する手段と、
現在の読み出しサイクルに先立ち現在のページのために前もって必要なデータを先制的に感知しかつラッチする手段と、を備え、
第1の読み出しサイクルとは別の現在の読み出しサイクルで感知しかつラッチする前記手段は、直前の読み出しサイクルで感知しラッチした前のページを出力しているときに現在のページを感知しかつラッチするメモリ装置。
【請求項15】
アドレス指定可能なメモリセルのページを関連するワード線上に具備する不揮発性メモリ装置であって、
2つのバイナリページ群を一斉に感知し、かつ2つのバイナリページを別々にラッチする手段と、
最初の2サイクルを除く全ての動作サイクルでラッチされたバイナリページのデータを出力する手段と、を備え、
感知しかつラッチする前記手段は2動作サイクルおきに作動し、その間にラッチされたバイナリページを出力する前記手段もまた作動するメモリ装置。
【請求項16】
アドレス指定可能なメモリセルのページを関連するワード線上に具備する不揮発性メモリ装置を読み出す方法であって、
一連の読み出しサイクルの各サイクルでページデータを感知しかつラッチするステップであって、現在の読み出しサイクルで感知しかつラッチする前記ステップは、現在のワード線上の現在のページデータを対象とし、近傍のワード線からの摂動を補正するために近傍のワード線からの前もって必要なデータに応じて実行されるステップと、
現在の読み出しサイクルに先立ち現在のページのために前もって必要なデータを先制的に感知しかつラッチするステップと、
第1の読み出しサイクルとは別の現在の読み出しサイクルで現在のページを感知しかつラッチする前記ステップを実行し、その間に直前の読み出しサイクルで感知しラッチした前のページを出力するステップと、
を含む方法。
【請求項17】
請求項16記載の方法において、
メモリセルは、1ビットのデータを各々蓄積する方法。
【請求項18】
請求項16記載の方法において、
メモリセルは、2ビット以上のデータを各々蓄積し、ワード線上の各メモリセルのページには、各メモリセルの個々のビットに対応する2ページ以上のバイナリデータが関連する方法。
【請求項19】
請求項18記載の方法において、
前記現在のページのために前もって必要なデータを感知しかつラッチするステップは、
前記前もって必要な感知からの前もって必要なデータの一部として入手する第1のフラグを出力するステップと、
第1のフラグに応じて前もって必要なデータを調整するステップと、
現在のページについて補正が必要か否かを指示するために調整済みの前もって必要なデータをラッチするステップと、
をさらに含む方法。
【請求項20】
請求項19記載の方法において、
第1のフラグは、近傍のワード線上の前もって必要なメモリセルのページが全てのビットでプログラム済みか否かを指示する方法。
【請求項21】
請求項20記載の方法において、
近傍のワード線が全てのビットでプログラムされていないことを第1のフラグが指示する場合、補正が不要であることを指示するために前もって必要なデータを調整する方法。
【請求項22】
請求項20記載の方法において、
近傍のワード線が全てのビットでプログラムされていることを第1のフラグが指示する場合、補正が必要であることを指示するために前もって必要なデータを調整する方法。
【請求項23】
請求項18記載の方法において、
前記現在のページを感知しかつラッチするステップは、
前記調整済みの前もって必要なデータからの補正により現在のページを感知するステップを実行するステップと、
現在のページの一部として入手する第2のフラグを出力するステップと、
第2のフラグに応じ、ページを変えずに残すことにより、またはページを所定の値まで調整することにより、または1組の別の感知条件下で現在のページを感知する前記ステップを繰り返して得た新たなページに置き換えることにより、現在のページをリフレッシュするステップと、
リフレッシュされた現在のページを次の読み出しサイクルで出力するためにラッチするステップと、
をさらに含む方法。
【請求項24】
請求項23記載の方法において、
前記調整済みの前もって必要なデータの指示により補正を必要とするメモリセルで現在のページを感知するステップは、所定のブーストによるワード線電圧で実行される方法。
【請求項25】
請求項23記載の方法において、
第2のフラグは、現在のワード線上の現在のメモリセルのページが全てのビットでプログラム済みか否かを指示する方法。
【請求項26】
請求項25記載の方法において、
近傍のワード線が全てのビットでプログラムされていることを第2のフラグが指示する場合、現在のページをリフレッシュする前記ステップは、現在のページを変えずに残すヌル操作である方法。
【請求項27】
請求項25記載の方法において、
メモリセルは2ビットのデータを各々蓄積し、
メモリセルのページは下位ビットページと上位ビットページとから構成され、
近傍のワード線が全てのビットでプログラムされていないことを第2のフラグが指示し、かつ感知の対象となる現在のページが上位ビットページである場合、現在のページをリフレッシュする前記ステップは、上位ビットページがプログラムされていないことを指示する所定のビットに現在のページをすべてリセットすることによって行われる方法。
【請求項28】
請求項25記載の方法において、
メモリセルは2ビットのデータを各々蓄積し、
メモリセルのページは下位ビットページと上位ビットページとから構成され、
近傍のワード線が全てのビットでプログラムされていないことを第2のフラグが指示し、かつ感知の対象となる現在のページが下位ビットページである場合、現在のページをリフレッシュする前記ステップは、別の所定の基準に対して現在のページを感知することによって行われる方法。
【請求項29】
アドレス指定可能なメモリセルのページを関連するワード線上に具備する不揮発性メモリ装置を読み出す方法であって、
2つのバイナリページ群を一斉に感知し、かつ2つのバイナリページを別々にラッチするステップと、
最初の2サイクルを除く全ての動作サイクルでラッチされたバイナリページのデータを出力するステップと、を含み、
感知しかつラッチする前記ステップは2動作サイクルおきに実行され、その間に前の動作サイクルからのラッチされたバイナリページを前記出力するステップもまた実行される方法。
【請求項1】
アドレス指定可能なメモリセルのページを関連するワード線上に具備する不揮発性メモリ装置であって、
アドレス指定可能なページの各メモリセルについて用意され、一定数のビットをラッチする容量を持つ1組のデータラッチと、
指定されたページ群に対する読み出し操作を制御する状態マシンと、を備え、
前記状態マシンは、一連の読み出しサイクルの各サイクルでページデータを感知しかつラッチし、現在の読み出しサイクルにおける感知とラッチは、現在のワード線上の現在のページデータを対象とし、近傍のワード線からの摂動を補正するために近傍のワード線からの前もって必要なデータに応じて実行され、
前記状態マシンは、現在の読み出しサイクルに先立ち現在のページのために前もって必要なデータを先制的に感知しかつラッチし、
前記状態マシンは、第1の読み出しサイクルとは別の現在の読み出しサイクルで現在のページの前記感知およびラッチを実行し、その間に直前の読み出しサイクルで感知しラッチした前のページを出力するメモリ装置。
【請求項2】
請求項1記載のメモリ装置において、
メモリセルは、1ビットのデータを各々蓄積するメモリ装置。
【請求項3】
請求項1記載のメモリ装置において、
メモリセルは、2ビット以上のデータを各々蓄積し、ワード線上の各メモリセルのページには、各メモリセルの個々のビットに対応する2ページ以上のバイナリデータが関連するメモリ装置。
【請求項4】
請求項3記載のメモリ装置において、
前記現在のページのために前もって必要なデータを感知しかつラッチする状態マシンは、
前記前もって必要な感知からの前もって必要なデータの一部として入手する第1のフラグを出力し、
第1のフラグに応じて前もって必要なデータを調整し、
現在のページについて補正が必要か否かを指示するために調整済みの前もって必要なデータをラッチするメモリ装置。
【請求項5】
請求項4記載のメモリ装置において、
第1のフラグは、近傍のワード線上の前もって必要なメモリセルのページが全てのビットでプログラム済みか否かを指示するメモリ装置。
【請求項6】
請求項5記載のメモリ装置において、
近傍のワード線が全てのビットでプログラムされていないことを第1のフラグが指示する場合、補正が不要であることを指示するために前もって必要なデータが調整されるメモリ装置。
【請求項7】
請求項5記載のメモリ装置において、
近傍のワード線が全てのビットでプログラムされていることを第1のフラグが指示する場合、補正が必要であることを指示するために前もって必要なデータが調整されるメモリ装置。
【請求項8】
請求項3記載のメモリ装置において、
前記現在のページを感知しかつラッチする状態マシンは、
前記調整済みの前もって必要なデータからの補正により現在のページの感知を実行し、
現在のページの一部として入手する第2のフラグを状態マシンのために出力し、
第2のフラグに応じ、状態マシンはページを変えずに残すことにより、またはページを所定の値まで調整することにより、または1組の別の感知条件下で現在のページの前記感知を繰り返して得た新たなページに置き換えることにより、現在のページをリフレッシュし、
リフレッシュされた現在のページを次の読み出しサイクルで出力するためにラッチするメモリ装置。
【請求項9】
請求項8記載のメモリ装置において、
前記調整済みの前もって必要なデータの指示により補正を必要とするメモリセルでの状態マシンによる現在のページの感知は、所定のブーストによるワード線電圧で実行されるメモリ装置。
【請求項10】
請求項8記載のメモリ装置において、
第2のフラグは、現在のワード線上の現在のメモリセルのページが全てのビットでプログラム済みか否かを指示するメモリ装置。
【請求項11】
請求項10記載のメモリ装置において、
前記状態マシンは、近傍のワード線が全てのビットでプログラムされていることを第2のフラグが指示する場合、現在のページを変えずに残すことにより現在のページをヌル操作でリフレッシュするメモリ装置。
【請求項12】
請求項10記載のメモリ装置において、
メモリセルは2ビットのデータを各々蓄積し、
メモリセルのページは下位ビットページと上位ビットページとから構成され、
近傍のワード線が全てのビットでプログラムされていないことを第2のフラグが指示し、かつ感知の対象となる現在のページが上位ビットページである場合、前記現在のページのリフレッシュは、上位ビットページがプログラムされていないことを指示する所定のビットに現在のページをすべてリセットすることによって行われるメモリ装置。
【請求項13】
請求項10記載のメモリ装置において、
メモリセルは2ビットのデータを各々蓄積し、
メモリセルのページは下位ビットページと上位ビットページとから構成され、
近傍のワード線が全てのビットでプログラムされていないことを第2のフラグが指示し、かつ感知の対象となる現在のページが下位ビットページである場合、前記現在のページのリフレッシュは、別の所定の基準に対して現在のページを感知することによって行われるメモリ装置。
【請求項14】
アドレス指定可能なメモリセルのページを関連するワード線上に具備する不揮発性メモリ装置であって、
アドレス指定可能なページの各メモリセルについて用意され、一定数のビットをラッチする容量を持つ1組のデータラッチと、
指定されたページ群に対する読み出し操作を制御する手段と、
一連の読み出しサイクルの各サイクルでページデータを感知しかつラッチする手段であって、現在の読み出しサイクルで感知しかつラッチする前記手段は、現在のワード線上の現在のページデータを対象とし、近傍のワード線からの摂動を補正するために近傍のワード線からの前もって必要なデータに応答する手段と、
現在の読み出しサイクルに先立ち現在のページのために前もって必要なデータを先制的に感知しかつラッチする手段と、を備え、
第1の読み出しサイクルとは別の現在の読み出しサイクルで感知しかつラッチする前記手段は、直前の読み出しサイクルで感知しラッチした前のページを出力しているときに現在のページを感知しかつラッチするメモリ装置。
【請求項15】
アドレス指定可能なメモリセルのページを関連するワード線上に具備する不揮発性メモリ装置であって、
2つのバイナリページ群を一斉に感知し、かつ2つのバイナリページを別々にラッチする手段と、
最初の2サイクルを除く全ての動作サイクルでラッチされたバイナリページのデータを出力する手段と、を備え、
感知しかつラッチする前記手段は2動作サイクルおきに作動し、その間にラッチされたバイナリページを出力する前記手段もまた作動するメモリ装置。
【請求項16】
アドレス指定可能なメモリセルのページを関連するワード線上に具備する不揮発性メモリ装置を読み出す方法であって、
一連の読み出しサイクルの各サイクルでページデータを感知しかつラッチするステップであって、現在の読み出しサイクルで感知しかつラッチする前記ステップは、現在のワード線上の現在のページデータを対象とし、近傍のワード線からの摂動を補正するために近傍のワード線からの前もって必要なデータに応じて実行されるステップと、
現在の読み出しサイクルに先立ち現在のページのために前もって必要なデータを先制的に感知しかつラッチするステップと、
第1の読み出しサイクルとは別の現在の読み出しサイクルで現在のページを感知しかつラッチする前記ステップを実行し、その間に直前の読み出しサイクルで感知しラッチした前のページを出力するステップと、
を含む方法。
【請求項17】
請求項16記載の方法において、
メモリセルは、1ビットのデータを各々蓄積する方法。
【請求項18】
請求項16記載の方法において、
メモリセルは、2ビット以上のデータを各々蓄積し、ワード線上の各メモリセルのページには、各メモリセルの個々のビットに対応する2ページ以上のバイナリデータが関連する方法。
【請求項19】
請求項18記載の方法において、
前記現在のページのために前もって必要なデータを感知しかつラッチするステップは、
前記前もって必要な感知からの前もって必要なデータの一部として入手する第1のフラグを出力するステップと、
第1のフラグに応じて前もって必要なデータを調整するステップと、
現在のページについて補正が必要か否かを指示するために調整済みの前もって必要なデータをラッチするステップと、
をさらに含む方法。
【請求項20】
請求項19記載の方法において、
第1のフラグは、近傍のワード線上の前もって必要なメモリセルのページが全てのビットでプログラム済みか否かを指示する方法。
【請求項21】
請求項20記載の方法において、
近傍のワード線が全てのビットでプログラムされていないことを第1のフラグが指示する場合、補正が不要であることを指示するために前もって必要なデータを調整する方法。
【請求項22】
請求項20記載の方法において、
近傍のワード線が全てのビットでプログラムされていることを第1のフラグが指示する場合、補正が必要であることを指示するために前もって必要なデータを調整する方法。
【請求項23】
請求項18記載の方法において、
前記現在のページを感知しかつラッチするステップは、
前記調整済みの前もって必要なデータからの補正により現在のページを感知するステップを実行するステップと、
現在のページの一部として入手する第2のフラグを出力するステップと、
第2のフラグに応じ、ページを変えずに残すことにより、またはページを所定の値まで調整することにより、または1組の別の感知条件下で現在のページを感知する前記ステップを繰り返して得た新たなページに置き換えることにより、現在のページをリフレッシュするステップと、
リフレッシュされた現在のページを次の読み出しサイクルで出力するためにラッチするステップと、
をさらに含む方法。
【請求項24】
請求項23記載の方法において、
前記調整済みの前もって必要なデータの指示により補正を必要とするメモリセルで現在のページを感知するステップは、所定のブーストによるワード線電圧で実行される方法。
【請求項25】
請求項23記載の方法において、
第2のフラグは、現在のワード線上の現在のメモリセルのページが全てのビットでプログラム済みか否かを指示する方法。
【請求項26】
請求項25記載の方法において、
近傍のワード線が全てのビットでプログラムされていることを第2のフラグが指示する場合、現在のページをリフレッシュする前記ステップは、現在のページを変えずに残すヌル操作である方法。
【請求項27】
請求項25記載の方法において、
メモリセルは2ビットのデータを各々蓄積し、
メモリセルのページは下位ビットページと上位ビットページとから構成され、
近傍のワード線が全てのビットでプログラムされていないことを第2のフラグが指示し、かつ感知の対象となる現在のページが上位ビットページである場合、現在のページをリフレッシュする前記ステップは、上位ビットページがプログラムされていないことを指示する所定のビットに現在のページをすべてリセットすることによって行われる方法。
【請求項28】
請求項25記載の方法において、
メモリセルは2ビットのデータを各々蓄積し、
メモリセルのページは下位ビットページと上位ビットページとから構成され、
近傍のワード線が全てのビットでプログラムされていないことを第2のフラグが指示し、かつ感知の対象となる現在のページが下位ビットページである場合、現在のページをリフレッシュする前記ステップは、別の所定の基準に対して現在のページを感知することによって行われる方法。
【請求項29】
アドレス指定可能なメモリセルのページを関連するワード線上に具備する不揮発性メモリ装置を読み出す方法であって、
2つのバイナリページ群を一斉に感知し、かつ2つのバイナリページを別々にラッチするステップと、
最初の2サイクルを除く全ての動作サイクルでラッチされたバイナリページのデータを出力するステップと、を含み、
感知しかつラッチする前記ステップは2動作サイクルおきに実行され、その間に前の動作サイクルからのラッチされたバイナリページを前記出力するステップもまた実行される方法。
【図1A】
【図1B】
【図1C】
【図1D】
【図1E】
【図2】
【図3】
【図4】
【図5】
【図6A】
【図6B】
【図7A】
【図7B】
【図8】
【図9】
【図10】
【図11A】
【図11B】
【図12A】
【図12B】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19A】
【図19B】
【図20A】
【図20B】
【図20C】
【図20D】
【図20E】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38A】
【図38B】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図1B】
【図1C】
【図1D】
【図1E】
【図2】
【図3】
【図4】
【図5】
【図6A】
【図6B】
【図7A】
【図7B】
【図8】
【図9】
【図10】
【図11A】
【図11B】
【図12A】
【図12B】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19A】
【図19B】
【図20A】
【図20B】
【図20C】
【図20D】
【図20E】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38A】
【図38B】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【公表番号】特表2009−536424(P2009−536424A)
【公表日】平成21年10月8日(2009.10.8)
【国際特許分類】
【出願番号】特願2009−510061(P2009−510061)
【出願日】平成19年5月2日(2007.5.2)
【国際出願番号】PCT/US2007/068069
【国際公開番号】WO2007/131062
【国際公開日】平成19年11月15日(2007.11.15)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.EEPROM
2.フロッピー
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
【公表日】平成21年10月8日(2009.10.8)
【国際特許分類】
【出願日】平成19年5月2日(2007.5.2)
【国際出願番号】PCT/US2007/068069
【国際公開番号】WO2007/131062
【国際公開日】平成19年11月15日(2007.11.15)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.EEPROM
2.フロッピー
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
[ Back to top ]