フラッシュメモリにおけるサイクル効果の擬似ランダムおよびコマンド主導型ビット補償とその方法
フラッシュメモリEEPROMの中で容易に実装されるランダム化により、特定のデータパターンの反復・長期蓄積に起因するNANDストリング抵抗効果、プログラム妨害、ユーザ読み出し妨害、フローティングゲート間結合を軽減する。このランダム化は、実施形態によってはコード生成型擬似ランダム化であったり、あるいはユーザ主導型ランダム化であったりする。タイミングを予測できないユーザ主導型コマンドをトリガとして使用すれば、高度なランダム化を達成できる。データの符号化方式をランダムに変更することで特定のデータパターンの反復・長期蓄積を防ぐ。たとえユーザが同じ情報を長期間にわたって蓄積することあるいはこれを繰り返し蓄積することを望む場合でも、その情報は異なる符号化方式によってランダムに符号化されるため、データパターンは変化する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的にはデジタル装置との間で大容量ファイルをやり取りしたり蓄積したりするのに用いるメモリカードや可搬型ユニバーサル・シリアル・バス(「USB」)フラッシュメモリドライブ等の可搬型大容量記憶装置に関し、より具体的にはそれらのドライブに繰り返し蓄積されるビットパターンの影響を最小限に抑えることに関する。
【背景技術】
【0002】
フラッシュメモリカードおよびドライブの容量増加にともない、メモリアレイの中にあるメモリセルの規模は縮小し続けている。特にNAND系の高密度アレイの中で1つのセルまたはアレイの一部分に蓄積される電荷は、隣接するセルの読み出し操作やプログラム操作に影響を及ぼすことがある。これは、読み出しまたはプログラム妨害やセル結合として知られている。
【0003】
NANDフラッシュのセル結合、妨害、動作・構造全般の詳細については、あらゆる目的のためにその全体が本願明細書において参照により援用されている、「Method for Non-Volatile Memory With Background Data Latch Caching During Program Operations 」という米国特許出願第11/381,995号(特許文献1)、「Method for Non-Volatile Memory With Background Data Latch Caching During Erase Operations 」という米国特許出願第11/382,001号(特許文献2)、「Method for Non-Volatile Memory With Background Data Latch Caching During Read Operations」という米国特許出願第11/381,994号(特許文献3)、「Techniques for Reducing Effects of Coupling Between Storage Elements of Adjacent Rows of Memory Cells 」という米国特許出願第10/923,320号(特許文献4)、米国特許第6,870,768号(特許文献5)、ならびに「Reducing Floating Gate to Floating Gate Coupling Effect 」という米国特許出願第11/021,872号(特許文献6)を参照されたい。
【0004】
一部のユーザは恒常的にフラッシュメモリのいくつかのブロックに同じデータパターンを何度も繰り返し蓄積するためにフラッシュメモリをしばしば使用する。その結果、消去はされても決してプログラムされないビットが発生する。また、常にプログラムされ滅多に消去されないビットも発生する。このように執拗に繰り返されるデータパターンには、妨害やフローティングゲート間効果、NANDストリング抵抗効果、メモリ耐久性・信頼性の低下といった障害を招くという問題がある。
【0005】
不揮発性電荷蓄積が可能な固体メモリ、特に形状因子が小さいカードにパッケージされたEEPROMやフラッシュEEPROMの形をとるものが最近、情報家電や家庭用電化製品を中心に様々なモバイルおよびハンドヘルド装置の記憶装置として盛んに選ばれている。同じく固体メモリであるRAM(ランダムアクセスメモリ)と違って、フラッシュメモリは不揮発性であって、電源を切った後にも蓄積されたデータを保持する。フラッシュメモリはコストが高くつくにもかかわらず、大容量記憶用途で使われることが多くなっている。ハードドライブやフロッピーディスク等、回転する磁気媒体を基礎とする従来の大容量記憶は、モバイル/ハンドヘルド環境に不向きである。なぜならば、ディスクドライブはかさばり、機械的な故障が起きやすく、待ち時間が長く、電力を食うからである。このような望ましくない属性を持つディスク方式の記憶装置は、ほとんどのモバイル/ポータブルな用途において実用的でない。他方、埋め込み形で着脱可能なカードの形をとるフラッシュメモリは、その小さなサイズと、低消費電力と、高速度と、高い信頼性ゆえにモバイル/ハンドヘルド環境に理想的にマッチする。
【0006】
EEPROMと電気的にプログラム可能な読み出し専用メモリ(EPROM)は、消去が可能で、そのメモリセルに新しいデータを書き込める、すなわち「プログラム」できる、不揮発性メモリである。いずれも半導体基板のソース領域とドレイン領域との間のチャネル領域上に配置された電界効果トランジスタ構造による導電性フローティング(非接続)ゲートを利用する。さらにこのフローティングゲートの上にコントロールゲートを設ける。トランジスタのしきい値電圧特性は、フローティングゲート上に保持される電荷量によって制御される。つまり、フローティングゲート上の所与のレベルの電荷に応じてコントロールゲートに印加すべき対応する電圧(しきい値)があり、これが印加されることによりトランジスタは「オン」に切り替わり、ソース領域とドレイン領域との導通が可能となる。
【0007】
フローティングゲートは一定範囲の電荷を保持でき、しきい値電圧ウィンドウ内の任意のしきい値電圧レベルまでプログラムできる。しきい値電圧ウィンドウのサイズは装置の最小しきい値レベルと最大しきい値レベルによって決まり、これはフローティングゲートにプログラムできる電荷の範囲に相当する。しきい値ウィンドウは通常、メモリ装置の特性と、動作条件と、履歴とに左右される。セルの記憶状態は、基本的にはウィンドウ内の個々の分解可能なしきい値電圧レベル範囲によって限定される。
【0008】
メモリセルとして機能するトランジスタは通常、2通りの方法のいずれか一方によって「プログラム済み」状態までプログラムされる。「ホットエレクトロン注入法」では、ドレインに印加される高電圧によって基板チャネル領域上の電子が加速する。同時に、コントロールゲートに印加される高電圧は、薄いゲート誘電体を通じてフローティングゲートまでホットエレクトロンを引き寄せる。「トンネル注入法」では、基板に比べて高い電圧をコントロールゲートに印加する。かくして、電子は基板から介在するフローティングゲートまで引き寄せられる。
【0009】
メモリ装置の消去にはいくつか方法がある。EPROMの場合、紫外線によってフローティングゲートから電荷を取り除くことによってメモリをまとめて消去できる。EEPROMの場合、コントロールゲートに比べて高い電圧を基板に印加し、フローティングゲートの電子を薄い酸化物を通じて基板チャネル領域まで誘導することによってメモリセルを電気的に消去できる(すなわち、ファウラ・ノルドハイム・トンネリング)。通常、EEPROMはバイト単位で消去可能である。フラッシュEEPROMの場合、メモリが一度にまるごと、または一度に1ブロック以上が電気的に消去され、ブロックは512バイト以上のメモリを構成することがある。
【0010】
不揮発性メモリセルの例
メモリ装置は通常、1つ以上のメモリチップをカード上に実装させる。それぞれのメモリチップは、復号器や消去、書き込み、および読み出し回路等の周辺回路によって支援されるメモリセルアレイを備える。より精緻なメモリ装置には、知的で高度なメモリ操作とインターフェイスを実行するコントローラも付属される。現在、商業的に成功を収めた不揮発性の固体メモリ装置が数多く使われている。これらのメモリ装置には様々なタイプのメモリセルが採用され、各種のメモリセルは1つ以上の電荷蓄積素子を持つ。
【0011】
図1A〜図1Eは、様々な不揮発性メモリセルの例を概略的に示すものである。
図1Aは、フローティングゲートで電荷を蓄積するEEPROMセルの形をとる不揮発性メモリを概略的に示す。電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)はEPROMに似た構造を持つほか、適度の電圧が印加されたときにフローティングゲートで電気的に電荷を装填し除去するメカニズムが用意され、紫外線に晒す必要はない。米国特許第5,595,924号(特許文献7)には、そのようなセルの例とこの製造方法が記載されている。
【0012】
図1Bは、選択ゲートとコントロールゲートまたはステアリングゲートの両方を具備するフラッシュEEPROMセルを概略的に示す。メモリセル10は、ソース14およびドレイン16拡散層間に「分割チャネル」12を具備する。セルは、2つの直列トランジスタT1およびT2によって事実上形成される。T1は、フローティングゲート20とコントロールゲート30とを具備するメモリトランジスタとして機能する。フローティングゲートで選択可能な電荷量を蓄積できる。チャネルのT1部分を流れる電流量は、コントロールゲート30の電圧と介在するフローティングゲート20に存在する電荷量とに左右される。T2は、選択ゲート40を具備する選択トランジスタとして機能する。選択ゲート40の電圧によってT2がオンに切り替わると、チャネルのT1部分の電流はソースおよびドレイン間を通過できる。選択トランジスタは、コントロールゲートの電圧から独立したスイッチをソース−ドレインチャネル沿いに提供する。1つの利点として、フローティングゲートにおける電荷空乏(正)のためにゼロコントロールゲート電圧でなお導通するセルをオフに切り替えるのにこれを役立てることができる。もう1つの利点として、ソース側の注入プログラミングの実施がより容易になる。
【0013】
分割チャネルメモリセルのシンプルな実施形態では、図1Bにて点線で概略的に示すように、選択ゲートとコントロールゲートを同じワード線へ接続する。それには、チャネルの一部分の上に電荷蓄積素子(フローティングゲート)を配置し、もう1つのチャネル部分と電荷蓄積素子の上にはコントロールゲート構造(ワード線の一部)を配置する。これにより2つの直列トランジスタを持つセルが事実上形成され、一方のトランジスタ(メモリトランジスタ)は、電荷蓄積素子上の電荷量とワード線上の電圧との組み合わせによりチャネルのこの部分を流れる電流量を制御し、他方のトランジスタ(選択トランジスタ)はゲートとして機能するワード線だけを持つ。米国特許第5,070,032号(特許文献8)、第5,095,344号(特許文献9)、第5,315,541号(特許文献10)、第5,343,063号(特許文献11)、および第5,661,053号(特許文献12)には、そのようなセルの例と、メモリシステムにおけるその使用と、製造方法とが記載されている。
【0014】
図1Bに示された分割チャネルセルのより精緻な実施形態では、選択ゲートとコントロールゲートが独立し、点線で結ばれていない。一実施例では、ワード線に対し垂直の制御(またはステアリング)線へ接続されたセルアレイに1列のコントロールゲートを具備する。その効果として、選択されたセルの読み出しやプログラミングにあたってワード線が2つの機能を同時に果たさずにすむ。2つの機能とは(1)選択トランジスタのゲートとしての役割を果たすことであって、選択トランジスタをオンおよびオフに切り替えるにあたって適度の電圧を必要とし、(2)ワード線と電荷蓄積素子との電界(容量)結合を通じて電荷蓄積素子の電圧を所望のレベルまで持っていくことである。多くの場合、これらの機能の両方を1つの電圧で適切に遂行するのは困難である。コントロールゲートと選択ゲートの個別制御により、ワード線は機能(1)を果たすだけでよく、機能(2)は追加の制御線が果たす。この能力により、対象となるデータにプログラミング電圧を適合させる高性能プログラミング設計が可能となる。フラッシュEEPROMアレイにおける独立のコントロール(ステアリング)ゲートの使用は、例えば米国特許第5,313,421号(特許文献13)および第6,222,762号(特許文献14)に記載されている。
【0015】
図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)を選択ゲートに印加し、フローティングゲートの中に蓄積された電子を選択ゲートポリシリコンへ抜けさせることによって達成する。
【0016】
図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セルへのアクセスを制御する。
【0017】
NANDセルの中でアドレス指定されたメモリトランジスタを読み出したりプログラミング中にベリファイしたりするときには、そのコントロールゲートに適切な電圧を供給する。同時に、NANDセル50の中でアドレス指定されていない残りのメモリトランジスタは、それぞれのコントロールゲートに印加される十分な電圧によって完全にオンに転換される。かくして、個々のメモリトランジスタのソースからNANDセルのソース端子54にかけて導電経路ができあがり、個々のメモリトランジスタのドレインからセルのドレイン端子56にかけても同様である。米国特許第5,570,315号(特許文献15)、第5,903,495号(特許文献16)、第6,046,935号(特許文献17)には、そのようなNANDセル構造を持つメモリ装置が記載されている。
【0018】
図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)(非特許文献1)には、このような誘電性蓄積素子を利用するメモリ装置が記載されている。ソースおよびドレイン拡散層間のチャネルにまたがってONO誘電体層が延在する。1データビットのための電荷はドレインに近い誘電体層に局在し、他のデータビットのための電荷はソースに近い誘電体層に局在する。例えば、米国特許第5,768,192号(特許文献18)および第6,011,725号(特許文献19)は2つの二酸化ケイ素層間にトラッピング誘電体をはさむ不揮発性メモリを開示している。多状態データ記憶は、誘電体の中で空間的に隔てられた電荷蓄積領域のバイナリ状態を別々に読み出すことによって実現する。
【0019】
メモリアレイ
メモリ装置は通常、行列に配置されワード線とビット線によってアドレス指定できる二次元メモリセルアレイを含む。このアレイはNORタイプかNANDタイプのアーキテクチャに従って形成できる。
【0020】
NORアレイ
図2は、NORメモリセルアレイの一例を示す。これまでNORタイプのアーキテクチャを持つメモリ装置は、図1Bまたは図1Cに描かれたタイプのセルを用いて実装されてきた。各メモリセル行はそれぞれのソースとドレインによってデイジーチェーン方式で接続される。この設計は仮想接地設計と呼ばれることがある。各々のメモリセル10はソース14と、ドレイン16と、コントロールゲート30と、選択ゲート40とを具備する。行内のセルの選択ゲートはワード線42へ接続される。列内のセルのソースおよびドレインは選択されたビット線34および36へそれぞれ接続する。メモリセルのコントロールゲートと選択ゲートを別々に制御する実施例では、ステアリング線36によって列内のセルのコントロールゲートが接続される。
【0021】
多くのフラッシュEEPROM装置は、コントロールゲートと選択ゲートがともに接続されたメモリセルを用いて実装される。この場合、ステアリング線が必要なく、ワード線が各行の全セルのコントロールゲートと選択ゲートを単に接続する。米国特許第5,172,338号(特許文献20)および第5,418,752号(特許文献21)にはこれらの設計の例が開示されている。これらの設計ではワード線は基本的に2つの役割、すなわち行選択の役割と、読み出しやプログラミングにあたって行内の全セルにコントロールゲート電圧を供給する役割とを果たす。
【0022】
NANDアレイ
図3は、メモリセルの、例えば図1Dに示されたような、NANDアレイの一例を示す。ビット線は各NANDセル列に沿ってNANDセルのドレイン端子56へ結合する。ソース線はNANDセル行の全ソース端子54へ接続する。さらに、行沿いのNANDセルのコントロールゲートは一連の対応するワード線へ接続する。接続されたワード線を通じてコントロールゲートに適切な電圧をかけて1対の選択トランジスタ(図1D参照)をオンに転換することにより、1行のNANDセル全体をアドレス指定できる。NANDセルからなるチェーンの中である1つのメモリトランジスタを読み出すときには、チェーンの中の残りのメモリトランジスタがそれぞれの関連するワード線を通じて強くオンに転換されるため、チェーンの中を流れる電流は基本的に、読み出し対象セルに蓄積される電荷レベルに左右される。米国特許第5,570,315号(特許文献15)、第5,774,397号(特許文献22)、および第6,046,935号(特許文献17)には、NANDアーキテクチャアレイの例とメモリシステムの一部としてのこの動作が記載されている。
【0023】
ブロック消去
電荷蓄積メモリ装置のプログラミングではさらに電荷を電荷蓄積素子に加える。このためプログラミング操作にあたって、電荷蓄積素子に既に存在する電荷を事前に除去(または消去)しなければならない。1つ以上のメモリセルブロックを消去するために消去回路(図示せず)を設ける。セルアレイ全体あるいはかなりのアレイのセル群を電気的に一斉に(すなわち、瞬時に)消去するEEPROM等の不揮発性メモリは、「フラッシュ」EEPROMと呼ばれる。消去の後にはセル群をプログラムできる。一斉に消去できるセル群は1つ以上のアドレス指定可能な消去単位からなる。消去単位またはブロックは通常1ページ以上のデータを蓄積し、このページがプログラミングと読み出しの単位となるが、1回の操作で2ページ以上をプログラムしたり読み出したりする場合もある。各ページは通常1セクタ以上のデータを格納し、このセクタのサイズはホストシステムによって決まる。磁気ディスクドライブの規格に従い512バイトのユーザデータからなるセクタはその一例であり、さらにここにユーザデータに関する、および/またはこれを格納するブロックに関する、何バイトかのオーバーヘッド情報が加わる。
【0024】
読み出し/書き込み回路
通常の2状態EEPROMセルでは、1つ以上の電流区切りレベルを設定して伝導ウィンドウを2つの領域に分割する。予め決められた一定の電圧を印加することによってセルを読み出すときには、そのソース/ドレイン電流を区切りレベル(または基準電流IREF )に比較することによって記憶状態を決定する。読み出される電流が区切りレベルのものより高ければ、セルは1つの論理状態(例えば、「0」状態)にあると判断する。他方、電流が区切りレベルのものに満たなければ、セルはもう1つの論理状態(例えば、「1」状態)にあると判断する。そのような2状態セルは1ビットのデジタル情報を蓄積する。外部からプログラムできる基準電流源は多くの場合、メモリシステムの一部として用意され、区切りレベル電流を生成する。
【0025】
メモリ容量を増やすため、フラッシュEEPROM装置の実装密度は半導体技術の進歩にともないどんどん高くなっている。各メモリセルで3状態以上を蓄積することによって蓄積容量を増やす方法もある。
【0026】
多状態またはマルチレベルEEPROMメモリセルの場合、伝導ウィンドウを複数の区切り点で3つ以上の領域に分割し、各セルで2ビット以上のデータを蓄積できる。したがって、EEPROMアレイで蓄積できる情報は、各セルで蓄積できる状態数にともない増加する。米国特許第5,172,338号(特許文献20)には、多状態またはマルチレベルメモリセルを備えるEEPROMまたはフラッシュEEPROMが記載されている。
【0027】
実際には、コントロールゲートに基準電圧が印加されるときにセルのソース電極とドレイン電極にかけて伝導電流を感知することによってセルの記憶状態を読み出すのが普通である。セルのフローティングゲート上の各電荷につき、一定の基準コントロールゲート電圧に対応する伝導電流を検出できる。同様に、対応するしきい値電圧ウィンドウや伝導電流ウィンドウはフローティングゲートにプログラムできる電荷の範囲によって決まる。
【0028】
分割された電流ウィンドウの中で伝導電流を検出する代わりに、コントロールゲートで検査の対象となる所与の記憶状態に対してしきい値電圧を設定し、伝導電流がしきい値電流より低いかまたは高いかを検出することも可能である。一実施例において、ビット線の静電容量を通じて放電する伝導電流のレートを調べることによってしきい値電流に対する伝導電流の検出を果たす。
【0029】
図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」にある。
【0030】
前の説明から分かるように、メモリセルで蓄積する状態が多ければ多いほどしきい値ウィンドウは細かく分割される。この場合、所要の分解能を達成するためにプログラミング操作と読み出し操作の精度を上げる必要がある。
【0031】
米国特許第4,357,685号(特許文献23)には2状態EPROMをプログラムする方法が開示され、この方法ではセルが特定の状態までプログラムされるときに相継ぐプログラミング電圧パルスを受け、その都度フローティングゲートに電荷が加わる。パルスの合間にセルの読み返しまたはベリファイを行い、区切りレベルに対するソース−ドレイン電流を確認する。所望の状態に達した電流がベリファイされるとプログラミングは停止する。使用するプログラミングパルストレインの周期または振幅は上げることができる。
【0032】
従来技術のプログラミング回路は、単純に消去または接地状態から目標状態に達するまでプログラミングパルスを印加しながらしきい値ウィンドウを通過していく。実際、十分な分解能を実現するには、分割された、または区切られた、各領域につき少なくとも5ステップ程度のプログラミングステップを踏む必要がある。2状態メモリセルならこの性能で許容される。しかし、多状態セルの場合、必要なステップ数が分割数にともない増加するため、プログラミングの精度または分解能を上げなければならない。例えば、16状態セルで目標状態までプログラムするには少なくとも平均40のプログラミングパルスが必要となる。
【0033】
図5は、読み出し/書き込み回路170から行デコーダ130と列デコーダ160とを通じて典型的なメモリアレイ構成100にアクセスするメモリ装置を概略的に示す。図2および図3との関係で説明したように、メモリアレイ100にあるメモリセルのメモリトランジスタは、選択されたワード線とビット線との組を通じてアドレス指定できる。アドレス指定されたメモリトランジスタのそれぞれのゲートに適切な電圧を印加するにあたって、行デコーダ130は1つ以上のワード線を選択し、列デコーダ160は1つ以上のビット線を選択する。読み出し/書き込み回路170は、アドレス指定されたメモリトランジスタの記憶状態を読み出すため、または書き込むため(プログラムするため)にある。読み出し/書き込み回路170は、ビット線を通じてアレイ内の記憶素子へ接続するいくつかの読み出し/書き込みモジュールを備える。
【0034】
図6Aは、個々の読み出し/書き込みモジュール190の概略的ブロック図である。読み出しやベリファイのときには基本的に、選択されたビット線を通じて接続するアドレス指定されたメモリトランジスタのドレインを流れる電流をセンス増幅器で判定する。この電流は、メモリトランジスタに蓄積された電荷とそのコントロールゲート電圧に左右される。例えば、多状態EEPROMセルでは数通りのレベルの1つまでフローティングゲートを荷電できる。4レベルセルならこれを使って2ビットのデータを蓄積できる。センス増幅器によって検出されたレベルはレベル−ビット変換ロジックによって1組のデータビットに変換されて、データラッチに蓄積される。
【0035】
読み出し/書き込み性能および精度に影響する要因
読み出しとプログラミングの性能を上げるために、アレイの中にある複数の電荷蓄積素子またはメモリトランジスタが並行して読み出されるか、またはプログラムされる。したがって、記憶素子からなる論理「ページ」の読み出しまたはプログラミングは一斉に行われる。既存のメモリアーキテクチャでは通常、1行の中にいくつかの交互ページがある。1ページの全記憶素子の読み出しまたはプログラミングは一斉に行われる。列デコーダは交互ページの各々を対応する読み出し/書き込みモジュールへ選択的に接続する。例えば、一実施例において、532バイト(512バイトにオーバーヘッドの20バイトを加えたもの)のページサイズでメモリアレイを設計する。各列にドレインビット線があって各行につき2つの交互ページがあるなら列は8,512列になり、各ページには4,256列が関連している。全ての偶数ビット線か奇数ビット線のいずれかを並行して読み出すかまたは書き込むために、接続可能な4,256個のセンスモジュールがある。こうして、1ページ4,256ビット(すなわち、532バイト)のデータを並行して記憶素子のページから読み出すかまたはページへプログラムする。読み出し/書き込み回路170を形成する読み出し/書き込みモジュールは様々なアーキテクチャに組むことができる。
【0036】
図5を参照し、読み出し/書き込み回路170は列をなす読み出し/書き込みスタック180に編成されている。それぞれの読み出し/書き込みスタック180は読み出し/書き込みモジュール190を積み重ねたものである。メモリアレイにおける列の間隔は、これを占有する1つまたは2つのトランジスタのサイズによって決まる。しかし、図6Aから見てとれるように、読み出し/書き込みモジュールの回路はさらに多くのトランジスタと回路素子で実装され、多数の列にわたってスペースを占めることが見込まれる。占有された列の中で2つ以上の列を処理するため、多数のモジュールを互いに積み重ねる。
【0037】
図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)列に結合できる。
【0038】
既に述べたように、従来のメモリ装置は一度に全ての偶数ビット線または全ての奇数ビット線に対して大掛かりな並列処理を行うことによって読み出し/書き込み操作を向上させる。この1行2交互ページのアーキテクチャは、読み出し/書き込み回路ブロックの整合問題の緩和に役立つ。これはビット線間の容量結合をいかにコントロールするかにも左右される。1組の読み出し/書き込みモジュールを偶数ページまたは奇数ページのいずれかに多重化するにはブロックデコーダを使用する。こうすれば1組のビット線で読み出しかプログラミングが行われているときに互い違いの組のビット線を接地でき、隣接する結合は最小限に抑えられる。
【0039】
しかし、交互ページアーキテクチャは少なくとも3つの点で不利である。第1に、追加の多重化回路を必要とする。第2に、性能は遅い。ワード線によって接続されたメモリセルまたは1行のメモリセルで読み出しまたはプログラミングを完了するには、2回の読み出し操作か2回のプログラミング操作が必要となる。第3に、2つの隣接する電荷蓄積素子が別々のときにプログラムされる、例えば奇数ページと偶数ページとで別々にプログラムされる場合のフローティングゲートレベルにおける隣接する電荷蓄積素子間の電界結合等、好ましくない影響に対処するにあたって最適ではない。
【0040】
隣接する電界結合の問題はメモリトランジスタの間隔が狭まるにつれて顕著となる。メモリトランジスタではチャネル領域とコントロールゲートとの間に電荷蓄積素子が挟まれている。チャネル領域を流れる電流は、電荷蓄積素子とコントロールゲートの電界がもたらす最終的な電界と相関関係にある。メモリトランジスタは密度の増加にともない互いに接近する。隣接する電荷素子からの電界は影響を受けるセルの最終的な電界に大きく影響する。隣接する電界は、隣接する電荷蓄積素子にプログラムされる電荷に左右される。この摂動を招く電界には、隣接する電荷蓄積素子のプログラミング状態に応じて変化する動的な性質がある。隣接する電荷蓄積素子の状態の変化によっては、影響を受けるセルの読み出しに時間によってばらつきが生じるおそれがある。
【0041】
従来の交互ページアーキテクチャでは、隣接するフローティングゲート結合によって生じるエラーが激化する。偶数ページと奇数ページのプログラミングと読み出しは別々に行われるため、介在するページの状況次第では、ページがプログラムされるときの条件とページの読み返しが行われるときの条件がまったく異なることがある。多状態の実施例では、密度の増加にともない読み出しエラーが深刻化し、読み出し操作の精度を上げてしきい値ウィンドウの分割を粗くする必要がある。性能は損なわれ、多状態の実施例の潜在的な容量は制限される。
【0042】
米国公開特許出願第2004−0060031号(特許文献24)では、大きな読み出し/書き込み回路ブロックで対応するメモリセルブロックを並行して読み書きする、高性能でありながらコンパクトな不揮発性メモリ装置が開示されている。特に、このメモリ装置のアーキテクチャは読み出し/書き込み回路ブロックにおける冗長性を最小限に抑える。時分割方式で実質的に少数の共通部分とやり取りしながら並行して動作するブロック読み出し/書き込みモジュールの中核部分に読み出し/書き込みモジュールブロックを再配分することにより、スペースと電力を大幅に節約する。特に、複数のセンス増幅器とデータラッチとの間にある読み出し/書き込み回路の中では共通のプロセッサによってデータ処理が行われる。
【0043】
このように高性能・高容量の不揮発性メモリが一般に求められている。特に、読み出しとプログラミングの性能が高く、コンパクトで効率的でありながら読み出し/書き込み回路におけるデータ処理に幅広く対応する改良されたプロセッサを備えるコンパクトな不揮発性メモリが求められている。
【先行技術文献】
【特許文献】
【0044】
【特許文献1】米国特許出願第11/381,995号
【特許文献2】米国特許出願第11/382,001号
【特許文献3】米国特許出願第11/381,994号
【特許文献4】米国特許出願第10/923,320号
【特許文献5】米国特許第6,870,768号
【特許文献6】米国特許出願第11/021,872号
【特許文献7】米国特許第5,595,924号
【特許文献8】米国特許第5,070,032号
【特許文献9】米国特許第5,095,344号
【特許文献10】米国特許第5,315,541号
【特許文献11】米国特許第5,343,063号
【特許文献12】米国特許第5,661,053号
【特許文献13】米国特許第5,313,421号
【特許文献14】米国特許第6,222,762号
【特許文献15】米国特許第5,570,315号
【特許文献16】米国特許第5,903,495号
【特許文献17】米国特許第6,046,935号
【特許文献18】米国特許第5,768,192号
【特許文献19】米国特許第6,011,725号
【特許文献20】米国特許第5,172,338号
【特許文献21】米国特許第5,418,752号
【特許文献22】米国特許第5,774,397号
【特許文献23】米国特許第4,357,685号
【特許文献24】米国公開特許出願第2004−0060031号
【特許文献25】米国公開特許出願第2004−0109357号
【特許文献26】米国特許出願第11/026,536号
【特許文献27】「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願
【特許文献28】2005年3月16日に出願された「Non-Volatile Memory and Method with Power-Saving Read and Program-Verify Operations 」という米国特許出願
【特許文献29】米国特許出願第11/013,125号
【特許文献30】米国特許出願第10/846,289号
【特許文献31】米国特許出願第11/022,462号
【特許文献32】米国特許出願第10/915,039号
【特許文献33】米国特許第6,266,273号
【特許文献34】米国公開特許出願第2004−0109362号
【特許文献35】米国特許第6,657,891号
【非特許文献】
【0045】
【非特許文献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)
【発明の概要】
【0046】
本発明は、プログラム妨害またはやユーザ読み出し妨害の原因となる特定のデータパターンを軽減または解消するほか、NANDストリング抵抗効果を軽減し、メモリの耐久性と信頼性を向上させる。フローティングゲート間結合の問題も緩和する。
【0047】
本発明の一態様は、フラッシュメモリチップまたはアレイで蓄積データの擬似ランダム化を実装する方法を含む。この方法はフラッシュメモリ回路に対するごく僅かな修正でデータ蓄積のランダム性を大幅に向上させ、ひいてはアレイの性能を高める。データのランダム化はメモリの中で容易く有効または無効にできる。しかも、擬似ランダム化を駆動するシーケンスは絶えず変化し、システムの柔軟性はさらに向上する。
【0048】
いくつかの実施形態において、ユーザアクションによってデータ符号化の変更がトリガされる。ユーザアクションのタイミングは完全に予測不能なため、ユーザ主導トリガの結果として使われる符号化方式もまた予測不能であり、基本的には完全にランダムである。
【0049】
種々のランダム化手法および実施形態はメモリチップ(EEPROM)で実装する。つまり、これらは、メモリチップと通信するメモリコントローラによって生起するのではなく、メモリチップそのものの中で生起する。これは、しばしばシステムレベルで実装されメモリチップにおけるデータ蓄積のあり方をコントローラを使って変更することによって損耗均等化(wear leveling) と呼ばれる問題に対処する手法とは異なる点である。
【0050】
本発明のもうひとつの態様は、複数のユーザデータページを備える不揮発性NANDフラッシュメモリチップである。このチップは、メモリアレイと、有限の状態マシンクロック信号と、コマンドクロック信号と、有限の状態マシンクロック信号とコマンドクロック信号とを参照することによって生成される極性ビットとを備える。極性ビットの第1の値には第1の符号化タイプを使用し、極性ビットの第2の値には第2の符号化タイプを使用する。異なる符号化タイプの使用により、実際にはアレイの中で同じデータを繰り返し蓄積する場合でも、あるいは長期間にわたって蓄積する場合でも、アレイで同じデータパターンを蓄積する時間は減少する。
【0051】
本発明のもうひとつの態様は、複数のデータページを備える不揮発性NANDフラッシュメモリにおける方法に関する。この方法は、複数のビットを備えるコードを不揮発性メモリに蓄積することを備え、複数ビットの各ビットは複数ページの1ページのデータの符号化を反転させるかあるいは現状のまま残すかを指定する。また、これは、不揮発性メモリからコードを読み出すことと、不揮発性メモリからコードの複数のビットを蓄積するために割り当てられたレジスタにコードを転送することと、コードをレジスタに蓄積することと、コードの各ビットにつき複数のページの1ページのページアドレスをコードのビットに比較することによって極性信号を生成することと、生成された極性信号に基づき複数ページの一部分のページの符号化を変更することとを備える。
【図面の簡単な説明】
【0052】
【図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】キャッシュページコピー操作における相対的なタイミングを示す。
【図20】LM符号を使って各メモリセルで2ビットのデータを蓄積する場合の4状態メモリアレイのしきい値電圧分布を示す。
【図21】EEPROMまたはメモリチップ600の特定コンポーネントの概略的ブロック図である。
【図22A】ページアドレスによる各種データページの符号化方式と極性ビットの図である。
【図22B】ユーザデータ符号化の変換に用いる17ビットコード例の適用を示す表である。
【図22C】代表的なNANDチェーン/ストリングのメモリセルに蓄積される上位・下位ビットへの極性ビットの適用を示す。
【図23A】コマンドクロック信号に応じた符号化方式決定の図である。
【図23B】コマンドのクロック信号である。
【図23C】データ符号化決定・反転用制御回路の一実施形態を示す。
【図23D】極性ビットを蓄積するユーザデータページを示す。
【図23E】読み出し操作にあたって潜在的に反転されたデータの符号化を元に戻す制御回路の一実施形態を示す。
【図24A】コマンドクロック信号の立ち上がりにFSMクロックの値を示す、コマンドクロック信号と有限の状態マシンクロック信号の時系列である。
【図24B】図24Aに示すコマンドクロック信号に応じて極性ビットを決定する代表的な回路を示す。
【発明を実施するための形態】
【0053】
図7Aは、一群の分割読み出し/書き込みスタックを具備し本発明の改良されたプロセッサを実装するコンパクトなメモリ装置を概略的に示す。このメモリ装置は二次元のメモリセルアレイ300と、制御回路310と、読み出し/書き込み回路370とを含む。メモリアレイ300は、行デコーダ330を通じてワード線により、そして列デコーダ360を通じてビット線により、アドレス指定することができる。読み出し/書き込み回路370は一群の分割読み出し/書き込みスタック400として実装され、メモリセルからなるブロック(「ページ」とも呼ぶ)の読み出しまたはプログラミングを並行して行うことができる。ページは好適な実施形態において一連のメモリセル行から構成される。1行のメモリセルを多数のブロックまたはページに分割する別の実施形態において、個々のブロックに向けて読み出し/書き込み回路370を多重化するためのブロックマルチプレクサ350を設ける。
【0054】
制御回路310は読み出し/書き込み回路370と協働しながらメモリアレイ300でメモリ操作を遂行する。制御回路310は状態マシン312と、オンチップアドレスデコーダ314と、電力制御モジュール316とを含む。状態マシン312はメモリ操作のチップレベル制御を提供する。オンチップアドレスデコーダ314は、ホストまたはメモリコントローラで使われるアドレスとデコーダ330および360で使われるハードウェアアドレスとの間でアドレスインターフェイスを提供する。電力制御モジュール316は、メモリ操作中にワード線とビット線へ供給される電力と電圧を制御する。
【0055】
図7Bは、図7Aに示されたコンパクトなメモリ装置の好適な構成を示す。様々な周辺回路によるメモリアレイ300へのアクセスは、アレイの両側で対称的に行われるため、アクセス線と回路はそれぞれの側で半分に減る。行デコーダは行デコーダ330Aおよび330Bに分かれ、列デコーダは列デコーダ360Aおよび360Bに分かれる。メモリセル行を多数のブロックに分割する実施形態では、ブロックマルチプレクサ350がブロックマルチプレクサ350Aおよび350Bに分かれる。同様に、読み出し/書き込み回路は、下からビット線へ接続する読み出し/書き込み回路370Aと、アレイ300の上からビット線へ接続する読み出し/書き込み回路370Bとに分かれる。かくして、読み出し/書き込みモジュールの密度、したがって分割読み出し/書き込みスタック400の密度は、基本的には半減する。
【0056】
図8は、図7Aに示された読み出し/書き込みスタックにおける基本コンポーネントの一般的な構成を概略的に示す。本発明の一般的なアーキテクチャによると、読み出し/書き込みスタック400は、k本のビット線を感知するセンス増幅器212のスタックと、I/Oバス231を通じてデータを入出力するI/Oモジュール440と、入出力データを蓄積するデータラッチ430のスタックと、読み出し/書き込みスタック400でデータを処理し蓄積する共通プロセッサ500と、スタックコンポーネント間で通信を行うためのスタックバス421とを備える。読み出し/書き込み回路370間のスタックバスコントローラは、線411を通じて読み出し/書き込みスタック内の様々なコンポーネントを制御するための制御信号とタイミング信号とを提供する。
【0057】
図9は、図7Aおよび図7Bに示された読み出し/書き込み回路における読み出し/書き込みスタックの好適な構成を示す。各々の読み出し/書き込みスタック400はk本のビット線からなるグループに同時に働きかける。ページがp=r*k本のビット線を持つならば、r個の読み出し/書き込みスタック400−1・・・400−rがある。
【0058】
分割読み出し/書き込みスタック400からなる一群全体が並行して動作することにより、行に沿ってp個のセルからなるブロック(またはページ)の読み出しまたはプログラミングを並行して行うことができる。よって、セルの行全体に対してp個の読み出し/書き込みモジュールがある。各スタックでk個のメモリセルを処理するなら、バンク内の合計読み出し/書き込みスタックの数はr=p/kで求められる。例えば、バンク内のスタック数がrならp=r*kである。一例として、メモリアレイはp=512バイト(512×8ビット)、k=8を保持し、したがってr=512を保持する。好適な実施形態において、ブロックはセルの行全体である。別の実施形態において、ブロックは行内のセルの小集団である。セルの小集団は、例えば行全体の2分の1であったり、行全体の4分の1であったりする。セルの小集団は連続するセルであったり、1つおきのセルであったり、所定のセル数おきのセルであったりする。
【0059】
それぞれの読み出し/書き込みスタックには、例えば400−1の中には、基本的にk個のメモリセルからなるセグメントを並行して処理する212−1から212−kまでのセンス増幅器からなるスタックがある。米国公開特許出願第2004−0109357号(特許文献25)には好適なセンス増幅器が開示され、その全体が本願明細書において参照により援用されている。
【0060】
スタックバスコントローラ410は線411を通じて読み出し/書き込み回路370へ制御信号とタイミング信号を提供する。スタックバスコントローラそのものは線311を介してメモリコントローラ310に従属する。読み出し/書き込みスタック400内の通信はSABus422とDBus423を含むスタックバスによって行われ、スタックバスコントローラ410によって制御される。制御線411は、スタックバスコントローラ410から読み出し/書き込みスタック400−1のコンポーネントにかけて制御信号とクロック信号を提供する。
【0061】
スタックバスは、好適な実施形態において、共通プロセッサ500とセンス増幅器のスタック212との間の通信のためのSABus422と、プロセッサとデータラッチのスタック430との間の通信のためのDBus423とに分かれる。
データラッチのスタック430は、430−1から430−kまでのデータラッチを含み、各メモリセルにつき1つずつスタックに関連付けられている。I/Oモジュール440は、データラッチがI/Oバス231を通じて外部とデータをやり取りできるようにする。
【0062】
共通プロセッサは、エラー状態をはじめとするメモリ操作のステータスを伝えるステータス信号を出力する出力507をも含む。このステータス信号は、Wired−Or構成でFLAG BUS 509へ結合されたn−トランジスタ550のゲートを駆動するために使われる。FLAG BUSは好ましくは、コントローラ310によって予め荷電され、いずれかの読み出し/書き込みスタックによってステータス信号がアサートされるときにプルダウンされる。
【0063】
図10は、図9に示された共通プロセッサの改良された実施形態を示す。共通プロセッサ500は外部回路との通信のためのプロセッサバスPBUS 505と、入力ロジック510と、プロセッサラッチPLatch 520と、出力ロジック530とを備える。
入力ロジック510はPBUSからデータを受信し、信号線411を通じてスタックバスコントローラ410から届く制御信号に応じて論理状態「1」、「0」、または「Z」(浮遊)のいずれか1つに変換されたデータをBSIノードへ出力する。セット/リセットラッチPLatch 520はBSIをラッチし、MTCHおよびMTCH* として一対の相補出力信号をもたらす。
出力ロジック530はMTCH信号とMTCH* 信号を受信し、信号線411を通じてスタックバスコントローラ410から届く制御信号に応じて論理状態「1」、「0」、または「Z」(浮遊)のいずれか1つに変換されたデータをPBUS 505に出力する。
【0064】
共通プロセッサ500は所与のメモリセルに関係するデータを常に処理する。例えば、図10は、ビット線1へ結合されたメモリセルの場合を示している。対応するセンス増幅器212−1はノードを備え、ここにセンス増幅器データが現れる。このノードは好適な実施形態において、データを蓄積するSAラッチ214−1の形をとるものとする。同様に、対応する1組のデータラッチ430−1はビット線1へ結合されたメモリセルに関連する入力または出力データを蓄積する。好適な実施形態において、1組のデータラッチ430−1はnビットのデータを蓄積するにあたって十分なデータラッチ434−1・・・434−nを備える。
【0065】
共通プロセッサ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からの制御信号の一部として明示されている。
【0066】
図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へ至る。
【0067】
図11Bは、図11Aの入力ロジックの真偽表を示す。ロジックは、PBUSと制御信号ONE、ONEB<0>、ONEB<1>とによって制御され、これらの制御信号はスタックバスコントローラ410からの制御信号の一部である。基本的には3つの転送モードPASSTHROUGH、INVERTED、およびFLOATEDをサポートする。
【0068】
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モードは完全を期するために記載されているが、実際には使われない。
【0069】
図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をプルダウンできる。
【0070】
本発明の一特徴として、プルアップ回路はPMOSトランジスタで構成し、プルダウン回路はNMOSトランジスタで構成する。NMOSによるプルはPMOSのものより遥かに強いため、どんな競合においてもプルダウンは常にプルアップに勝る。換言すると、ノードまたはバスはデフォルトとして常にプルアップまたは「1」状態にでき、必要とあらば、常にプルダウンにより「0」状態に反転させることができる。
【0071】
図12Bは、図12Aの出力ロジックの真偽表を示す。ロジックは、入力ロジックからラッチされるMTCH、MTCH* と、制御信号PDIR、PINV、NDIR、NINVとによって制御され、これらの制御信号はスタックバスコントローラ410からの制御信号の一部である。4つの動作モードPASSTHROUGH、INVERTED、FLOATED、およびPRECHARGEをサポートする。
【0072】
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=0ならば、pトランジスタ531および532を備えるプルアップブランチをイネーブルするか、またはMTCH=1ならば、pトランジスタ533および534を備えるプルアップブランチをイネーブルする。
2004年12月29日に出願された米国特許出願第11/026,536号(特許文献26)では共通プロセッサの動作がより詳しく説明されている。この特許出願は、その全体が本願明細書において参照により援用されている。
【0073】
キャッシュ操作におけるデータラッチの使用
本発明のいくつかの態様において、読み出し、書き込み、消去といった他の作業に内部メモリが従事しているときにデータを出し入れするキャッシュ操作にあたって、図10で前述した読み出し/書き込みスタックのデータラッチを利用する。前述したアーキテクチャではデータラッチを多数の物理ページで共用する。例えば、ビット線の読み出し/書き込みスタックを全てのワード線で共用すれば、ある1つの操作が進行しているときにこれらのラッチのいずれかが空いているなら、それらのラッチを使って同じワード線か別のワード線における先々の操作に向けてデータをキャッシュでき、転送は別の操作の背後に潜在化できるため時間の節約になる。異なる操作または操作段階をパイプラインする量を増すことによって性能を上げることができる。例えば、キャッシュプログラミング操作では、1ページデータをプログラムしているときに別のページデータをロードして転送時間を節約できる。もう1つの例として、代表的な実施形態において、ある1つのワード線における読み出し操作が別のワード線における書き込み操作に挿入され、データの書き込みを継続しながら読み出しデータをメモリから転送することができる。
【0074】
このため、第1のページデータで書き込み、または他の操作が進行しているときには、(例えば、ECC操作を行うため)同じブロックでワード線が異なる別のページからデータをトグルアウトできる。この操作段階間パイプラインにより、データ転送に要する時間は第1のページデータに対する操作の背後に潜在化させることができる。より一般的に、ある1つの操作の一部分を、通常ならばこれよりも長い、別の操作の段階の合間に差し込むことが可能となる。もう1つの例として、例えば消去操作の段階の合間に、例えば消去パルスの前に、あるいは消去の後半として使われるソフトプログラミング段階の前に、感知操作を挿し込む。
【0075】
一部の操作に要する相対的な時間を説明するため、前述したシステムにおける代表的な時間値のセットを、
データ書き込み:〜700μs(下位ページ〜600μs、上位ページ800μs)
バイナリデータ書き込み:〜200μs
消去:〜2,500μs
読み出し:〜20−40μs
読み出しとデータのトグルアウト:2KBデータ、〜80μs、
4KB〜160μs、8KB〜320μs
とする。
これ以降、タイミング図にかかわる相対的な時間を説明する際には、これらの値を基準として使うことができる。主要な態様において、様々な段階をともなう長い操作を実行する場合、読み出し/書き込みスタックの共用ラッチが使用可能であれば、これを使って短い操作を割り込ませる。例えば、プログラミング操作や消去操作の中に読み出しを挿し込んだり、消去中にバイナリプログラミングを挿し込んだりすることができる。主要な代表的な実施形態において、同じ読み出し/書き込みスタックを共用するページのプログラミング操作のときに別のページデータをトグルイン/アウトし、例えばトグルアウトされ修正されるデータの読み出しは、データ書き込みのベリファイ段階に挿し込む。
【0076】
空きデータラッチを利用できる機会は数多くある。一般的に、1セル当たりnビットを蓄積するメモリの場合、各ビット線につきn個のデータラッチが必要となるが、これらのラッチの全てが常に必要となるわけではない。例えば、上位ページ/下位ページ形式でデータを蓄積する1セル当たり2ビットのメモリでは、下位ページをプログラムしているときに2つのデータラッチが必要となる。より一般的に、多数のページを蓄積するメモリで全てのラッチが必要となるのは最上位ページをプログラムするときだけである。これにより、他のラッチはキャッシュ操作に利用できる。また、最上位ページの書き込み中でも、書き込み操作のベリファイ段階から種々の状態が排除されるにつれてラッチは解放される。具体的に、ベリファイすべき状態が最上位状態だけになると、ベリファイに必要なラッチは1つだけであり、他のラッチはキャッシュ操作のために使うことができる。
【0077】
以降の説明は、1セル当たり2ビットを蓄積し、各ビット線のデータにつき2つのラッチを具備し、さらにクイックパス書き込み用に1つのラッチを具備する4状態メモリに基づくものであり、このメモリは本願と同時に出願され、前に援用されている「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願(特許文献27)で説明されている。下位ページを書き込む操作、または消去する操作、または消去後にソフトプログラミングを行う操作は、基本的にはバイナリ操作であり、データラッチの一方は空いていてデータをキャッシュするために使うことができる。同様に、上位ページかフルシーケンスの書き込みを行う場合、最上位レベル以外はすべてベリファイ済みでベリファイすべき状態がただ1つになると、メモリはラッチを解放でき、解放されたラッチはデータのキャッシュに使うことができる。例えば、コピー操作等で1ページをプログラムする場合、例えば同じ組のビット線上の別のワード線で同じ組のデータラッチを共用する別のページの読み出しは、書き込みのベリファイ段階に差し挟むことができる。アドレスは書き込み対象のページに切り替えることができ、書き込みプロセスは中断したところから再開でき、やり直しの必要はない。書き込みが継続しているときには、割り込ませた読み出しのときにキャッシュしたデータをトグルアウトし、チェックまたは修正し、元に戻して、先行する書き込み操作が完了した時点で書き戻すことができる。この種のキャッシュ操作では、最初のページのプログラミングの背後に2番目のページデータのトグルアウトと修正を潜在化させることができる。
【0078】
第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 」という米国特許出願(特許文献27)で説明されているクイックパス書き込みモードにおける下位ベリファイ(VL)に使われ、レジスタの使用と、これを使用する場合のクイックパス書き込みの使用は任意であるが、この代表的な実施形態ではレジスタを使用する。
【0079】
下位ページのプログラミングは、以下のステップを含む。
(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 」という米国特許出願(特許文献27)で説明されているように、DL2 434−2のデータは、クイックパス書き込みの第2段階への移行を左右する下位ベリファイロックアウトに使用する。
(6)プログラミングが始まると、プログラミングパルスの後に下位ベリファイの結果を使用してDL2 434−2を更新し、上位ベリファイの結果を使用してDL1 434−1を更新する。(これは、下位ページプログラミングがA状態に至る「従来の」符号化に基づく説明である。本願と同時に出願された「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願(特許文献27)と2005年3月16日に出願された「Non-Volatile Memory and Method with Power-Saving Read and Program-Verify Operations 」という米国特許出願(特許文献28)では、この符号化とその他の符号化が詳しく説明されている。この説明を他の符号化へ敷衍することは容易い。)
(7)プログラミングが完了したか否かの判断にあたっては、セルの行(または適切な物理的プログラミング単位)のDL1 434−1レジスタだけをチェックする。
【0080】
下位ページを書き込んだら上位ページをプログラムできる。図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のデータだけをチェックし、プログラムされていないビットの有無を確認すればよい。
【0081】
このやり方のステップ6でラッチDL0 434−0がもはや必要でなく、次のプログラミング操作のためのデータをキャッシュするのに使えることに留意されたい。加えて、クイックパス書き込みを使用する実施形態で、第2の遅いプログラミング段階に入ったらラッチDL2 434−2もデータのキャッシュに使うことができるが、実際面でこれを使えるのはかなり短い時間に限られ、この特徴の実装にかかる追加のオーバーヘッドに見合わない。
【0082】
図15は、直前の数段落で説明した単一ページモードにおける数々のキャッシュプログラミングの態様を説明するのに使用することができる。図15は、メモリの内部で起こるイベント(下の「True Busy」線)とメモリの外側から見たもの(上の「Cache Busy」線)の相対的なタイミングを示している。
【0083】
時間t0 には、選択されたワード線(WLn)にプログラムする下位ページをメモリにロードする。ここでは第1の下位ページデータが予めキャッシュされていないと仮定するが、後続のページについてはキャッシュが行われる。下位ページのロードは時間t1 で完了し、メモリはこれの書き込みに着手する。この時点ではバイナリ操作と同じであり、ベリファイの必要があるのは状態Aだけであり(「pvfyA」)、データラッチDL0
434−0は次のページデータを受け付けることができ、これは時間t2 にWLnにプログラムする上位ページとして受け取られ、下位ページのプログラミング中にラッチDL0 434−0にキャッシュされる。時間t3 には上位ページのロードが完了し、t4 で下位ページのプログラミングが終わり次第直ちにこれをプログラムできる。このやり方では全てのデータ(下位および上位ページ)が物理的なプログラミング単位(ここではワード線WLn)に書き込まれるが、以下に説明するフルシーケンスの実施形態と違って、メモリは上位ページデータの書き込みに先立ち時間t3 から時間t4 まで待たなければならない。
【0084】
上位ページのプログラミングはt4 で始まり、当初B状態だけをベリファイし(「pvfyB」)、t5 にはC状態が加わる(「pvfyB/C」)。t6 でB状態のベリファイが終わるとベリファイはC状態だけとなり(「pvfyC」)、ラッチDL0 434−0は解放される。これにより、次のデータセットをキャッシュできるようになり、その一方で上位ページのプログラミングは完了する。
【0085】
指摘したように、図15に示されたキャッシュプログラミングをともなう単一ページアルゴリズムによると、たとえ時間t3 で上位ページデータが入手可能であっても、メモリは時間t4 まで待ったうえでこのデータの書き込みに着手しなければならない。例えば、米国特許出願第11/013,125号(特許文献29)で詳しく説明されているフルシーケンスのプログラミング動作に転換すれば、上位ページが入手可能となった時点で上位ページと下位ページデータを同時にプログラムできる。
【0086】
フルシーケンス(下位からフルへの転換)の書き込みにおけるキャッシュプログラミングアルゴリズムも前述したものと同様に、下位ページのプログラミングから始まる。したがって、ステップ(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号(特許文献29)で詳しく説明されている。
(5)上位ページデータがラッチDL0 434−0にロードされた後にはアドレスブロックで判定を行い、2つのページが同じワード線と同じブロックにあって、一方のページが下位ページであり、他方のページが上位ページであるか否かをチェックする。そのとおりであり、下位ページプログラミングからフルシーケンスプログラミングへの転換が可能であれば、プログラミング状態マシンがこの転換をトリガする。移行は未決のベリファイが完了した後に行われる。
(6)プログラミングシーケンスが下位ページからフルシーケンスへ変化する場合、通常ならばいくつかの操作パラメータを変更する。代表的な実施形態において、以下のものを含む。
(i)下位ページデータがロックアウトされていなければ、パルスベリファイサイクル数の最大プログラムループが下位ページアルゴリズムのものからフルシーケンスのものに変更されるが、完了プログラムループ数は転換によりリセットされない。
(ii)図16に示されたように、プログラミング波形は下位ページプログラミングプロセスで使われる値VPGM_Lで始まる。プログラミング波形が進展して、フルシーケンスへの転換で上位ページプロセスで使う初期値VPGM_Uを超えると、階段はVPGM_Uまで戻り、そこから上昇を続ける。
(iii)プログラミングパルスの最大値とステップサイズを決定するパラメータは変更されない。
(7)マルチレベル符号化で正確なデータのプログラミングを保証するため、現在のメモリセル状態のフルシーケンス読み出しを行うべきである。こうすれば、フルシーケンスが始まるときに、下位ページのプログラミングで既にロックアウトされていて上位ページデータを考慮に入れるためさらなるプログラミングを必要とする状態のプログラミングが確保される。
(8)クイックパス書き込みを行う場合、上位ページのプログラムデータを反映させるため、A状態のみの下位ベリファイに前は基づいていたラッチDL2434−2のデータも更新する。
(9)マルチレベル、フルシーケンスのプログラミングアルゴリズムによるプログラミングが再開する。図16に示されたように、下位ページプロセスのプログラミング波形が上位ページの初期レベルを超えた場合、波形は転換時にこのレベルに戻される。
【0087】
図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に次のデータ(対応する上位ページデータ等)をロードできる。
【0088】
フルシーケンス書き込みのときには、下位ページと上位ページの状態を個別に伝えるステータス報告を実施する。プログラミングシーケンスの終わりに未完了ビットがある場合、物理ページの走査を実行できる。第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レベルで合格しないならば、下位ページと上位ページの両方にエラーがある。
【0089】
キャッシュプログラミングアルゴリズムを使用する場合、AおよびBデータがプログラムされた後にプログラミングを完了するためにラッチDL1 434−1へC状態が転送される。この場合、下位ページは既に合格したプログラミングを具備していて不良ビットはないため、下位ページについてラッチを走査する必要はない。
【0090】
本発明の別の代表的な実施形態は、ある1つの場所から別の場所へデータセットを移動するページコピー操作に関係する。2004年5月13日に出願された米国特許出願第10/846,289号(特許文献30)、2004年12月21日出願された米国特許出願第11/022,462号(特許文献31)、2004年8月9日に出願された米国特許出願第10/915,039号(特許文献32)、そして米国特許第6,266,273号(特許文献33)ではデータ再配置操作の様々な態様が説明されている。これらの特許出願および特許はいずれも、本願明細書において参照により援用されている。ある1つの場所から別の場所へコピーされるデータは多くの場合、チェックのため(例えば、エラーチェック)、更新のため(ヘッダ更新等)、または両方のため(検出されたエラーの訂正等)にトグルアウトされる。そのような転送によってガーベッジコレクション操作の日付も整理される。本発明の主要な態様において、空きレジスタへのデータの読み出しを書き込み操作のベリファイ段階に挿し込み、書き込み操作の継続中にこのキャッシュデータをメモリ装置の外に転送することにより、データをトグルアウトする時間を書き込み操作の背後に潜在化させることができる。
【0091】
これよりキャッシュページコピー操作の2つの代表的な実施形態を紹介する。いずれの場合でも、クイックパス書き込みを使用する実施例を説明する。図18は、プロセスの進行にともなうラッチの代表的な実施形態の処理を示す。
【0092】
下位ページに書き込みを行うキャッシュページコピーの第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)プログラミングは下位ページが完了するまで続く。
【0093】
下位ページに対する書き込みか上位ページに対する書き込みかは、コピー先ページアドレスによって決まる。プログラミングアドレスが上位ページアドレスなら、プログラミングシーケンスはプログラミングが完了するまで停止せず、ステップ(5)の読み出しは書き込みが完了した後に行われる。
【0094】
第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)に戻される。
【0095】
前に指摘したように、代表的な実施形態ではそれぞれのメモリセルにプログラムされ得るデータ(ここでは2ビット)を保持するラッチDL0 434−0およびDL1 434−1に加えて、クイックパス書き込み手法の下位ベリファイにラッチDL2 434−2を使用する。下位ベリファイに合格したらラッチDL2 434−2も解放され、データのキャッシュに使うことができるが、代表的な実施形態では使わない。
【0096】
図19Aおよび図19Bは第2のキャッシュページコピー方法の相対的なタイミングを示すものであり、図19Bのアルゴリズムにはフルシーケンス書き込み転換があり、図19Aのアルゴリズムにはこれがない。(図19Aおよび図19Bはいずれも2つの部分からなり、第1の上部分はt0 に一致する縦の破線Aから始まってt5 に一致する縦の破線Bで終わり、第2の下部分は上部分の続きであって、t5 に一致する縦の破線Bから始まる。いずれにせよ、時間t5 のところにある線Bは上部分と下部分とで同じであって、2つの部分を2本の線で表示するための継ぎ目に過ぎない。)
【0097】
図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からのもの)の書き込みを開始する。
【0098】
ページN+1は上位ページであり、この書き込みは当初Bレベルでのベリファイで始まるが、t6 にはCレベルが加わる。目標状態Bになった蓄積素子が時間t7 でロックアウトされると(または最大カウントに達すると)、B状態のベリファイはなくなる。前述したように、本発明のいくつかの主要な態様によると、このときデータラッチは解放され、進行中の書き込み操作は中断し、読み出し操作(中断したプログラム−ベリファイ操作とは異なるアドレスでの読み出し操作)を割り込ませ、その後書き込みは中断したところから再開し、再開した書き込み操作が進行しているときには割り込み書き込み操作を感知したデータをトグルアウトできる。
【0099】
時間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 に相当し、最後にコピープロセスは停止する。
【0100】
図19Bに示すプロセスも下位ページ、すなわち下位ページとして解釈するページMの読み出しから始まり、予めデータはキャッシュされていないものと仮定する。図19Bは、時間t4 にフルシーケンス書き込みへの転換を実施する点が図19Aと異なる。これによりプロセスはざっと図19Aの時間(t5 〜t4 )の分だけ速くなる。時間t4 (図19Aではt5 )には、前述したように、フルシーケンス転換にかかわる様々な変更を実施する。さもなくば、プロセスは図19Aのものに類似し、時間t7 およびt12間に見られる本発明の態様を含む。
【0101】
ページコピープロセスと、ここで説明するデータの書き込みをともなうその他の手法で、ある所与の時間にベリファイする状態を合理的に選ぶことができ、このことは米国公開特許出願第2004−0109362号(特許文献34)で説明されている。この公開特許出願は、本願明細書において参照により援用されている。例えばフルシーケンス書き込みで、書き込みプロセスはAレベルのみのベリファイから始めることができる。Aベリファイの後には、ビットをチェックして合格ビットの有無を確認する。合格したビットがあるなら、Bレベルをベリファイ段階に加えることができる。Aレベルベリファイは、これを目標値とする全蓄積単位のベリファイの後に解除される(または設定可能パラメータに基づく最大カウントを除く)。同様に、Bレベルベリファイの後にはCレベルのベリファイを加えることができ、Bレベルベリファイは、これを目標値とする全蓄積単位のベリファイの後に解除される(または設定可能パラメータに基づく最大カウントを除く)。
プログラミング操作とこれにともなう他の操作のためのバックグラウンドデータキャッシングを、好適な多状態の符号化との関係で説明する。
【0102】
4状態メモリのための好適な代表的「LM」符号化
図20は、2ビット論理符号(「LM」符号)で符号化される4状態メモリのプログラミングと読み出しを示す。この符号は耐障害性を提供し、ユーピン効果による隣接するセル結合を緩和する。図20Aは、LM符号を使って各メモリセルで2ビットのデータを蓄積する場合の4状態メモリアレイのしきい値電圧分布を示す。LM符号化は、上位および下位ビットが状態「A」および「C」とで逆になる点が従来のグレイコードと異なる。米国特許第6,657,891号(特許文献35)に開示された「LM」符号は、電荷の大きな変化を要するプログラミング操作を回避することによって隣接するフローティングゲート間の電界効果結合を抑えるのに有利である。
【0103】
符号化は、下位および上位2ビットのプログラミングと読み出しを別々に行うようにする。下位ビットをプログラムするときのセルのしきい値レベルはプログラムされていない領域にとどまるか、またはしきい値ウィンドウの「下位中間」領域まで進む。上位ビットをプログラムするときには、これらの2領域のいずれかにあるしきい値レベルがさらにしきい値ウィンドウの4分の1に満たない若干高いレベルまで進む。
【0104】
データパターンの擬似・ユーザ主導型ランダム化
メモリEEPROMまたはチップの各種の実施形態とランダム化の方法により、NANDストリング抵抗の増加、耐久性と信頼性の低下、好ましくない結合等、反復データ蓄積パターンに起因する問題を最小限に抑えることを目指す。本発明の擬似ランダム化手法は実用的で、データ処理容量の点で実装コストは高くつかない。
【0105】
本発明は、フラッシュメモリチップに蓄積するデータの擬似ランダム化と真にユーザ本位のランダム化を実装する様々な実施形態および方法を含む。これらの実施形態にはいずれも、単純で僅かな回路修正をフラッシュEEPROMで実施するだけでよいという利点がある。ランダム化の手法と回路は計算集約的でなく、実装にともなう性能上のペナルティは、たとえあったとしてごく僅かですむため、注目に価する。本発明の解決手段は、ランダム化を随時容易く有効または無効にできるという点で柔軟性にも優れている。また、一部の実施形態で使用する擬似ランダム化パターンは様々で、随時簡単に変更できる。
【0106】
図21は、ランダム化プロセスに関係するEEPROMまたはメモリチップ600の主要コンポーネントを示す。チップ600はメモリアレイ602と、周辺回路内のレジスタ610と、マルチプレクサ614とを備える。さらなる図への参照にあたってはこれとは別のチップ600のコンポーネントを示し、説明する。レジスタ610は多数のビットを保持でき、多数のレジスタからなる。実施形態によってはこれがシフトレジスタとして機能する。メモリアレイ602は隠しエリア604とユーザデータエリア606とを備える。隠しエリアはファームウェアを蓄積するほか、メモリ動作制御コード等のオーバーヘッドデータを蓄積するために使用される。前に述べたように、NANDアーキテクチャではデータがブロックに整理され、それぞれのブロックは多数のデータページを備える。実施形態によってはレジスタ610もマルチプレクサ614も存在しない。
【0107】
本発明の各種の実施形態は、プログラム妨害またはユーザ読み出し妨害の原因となる特定のデータパターンの長期・反復蓄積を軽減または解消する。それには、擬似ランダム機構あるいはユーザトリガ型ランダム化によってデータの符号化を変更する。ユーザ活動のタイミングは完全に予測不能だから、その活動をトリガとして使用すれば真にランダムな符号化方式シーケンスになる。これらの実施形態も、NANDストリング抵抗効果を軽減し、メモリの耐久性と信頼性を向上させ、フローティングゲート間結合の問題を緩和する。
【0108】
これらの実施形態は、フラッシュEEPROM回路に対するごく僅かな修正でデータ蓄積のランダム性を大幅に向上させ、ひいてはEEPROMの性能を高める。データのランダム化はアレイの中で容易く有効または無効にできる。しかも、絶えず変化する擬似ランダム化シーケンスがシステムに柔軟性を与える。
【0109】
一実施形態において、0または1のコードまたは一連のビットを、アレイ602の隠しエリア604に蓄積する。隠しエリア604でコードを蓄積する部分は「ROMブロック」と呼ぶこともある。コードは2ビット以上からなり、好ましくは17ビット以上からなる。ビットが多いほどランダム化は向上する。チップ600に電源が入るとレジスタ610に値がロードされる。レジスタでは、それぞれのビットが特定のページアドレスに割り当てられる。各ビットをページのページアドレスに比較し、その比較に基づきページのデータ符号化は反転するか、さもなくば同じ状態を保つ(通過)。例えば、データの符号化方式を同じ状態に保つことを指示するために0のビット値を使用し、レジスタにおける値1はページ内のデータの符号化が反転することを指示する。コードのビット数がブロック内のページ数に満たない場合、1つ以上のページからなる2つ以上のグループにコードを適用できる。換言すると、全てのページを比較するまでは順次コードを繰り返し使用できる。サイクルからサイクルにかけてコードを変更することもできる。これとは別に、マルチプレクサ614を通じてコードを多重化することもでき、この場合、ユーザデータエリア602に蓄積された複数のデータページの符号化が1コードの1ビットによって決定される。コードの各ビットは、ユーザデータの一部に使用する符号化の極性を変更する役割を果たすことから、極性ビットと呼ぶことができる。これは図22Aに描かれている。この場合の符号化はページアドレスに基づき、この場合、ページ0,Nの極性は1、ページ1,n+1の極性は0、ページ2,n+2の極性は1等であることが分かる。したがって、符号化がページアドレスに基づく実施形態では極性ビットをページとともに蓄積する必要はないが、冗長性の目的で蓄積してもよい。
【0110】
図22Bに複製された次の表1は、ユーザデータ部分に対するレジスタ610内のコードの極性ビットの適用を示す。どんなユーザデータ部分でも特定の極性ビットに比較し、かつ対応付けることができるが、説明する好適な実施形態ではページを基本単位として例示する。
【表1】
【0111】
この表に見られるように、ビットの当初符号化(データ)が同じ状態を保つかあるいは変化するかはコードの各(極性)ビットによって決まる。例えばレジスタ位置1を見ると、その位置の極性コードの値は1になっている。したがって、1がデータの反転を指示する実施形態の場合には、0として蓄積されたユーザデータの当初のビットは値1に反転される。この表は、2ビットを使って状態を指定する多状態セルを例示するものである。状態を示す図20から分かるように、状態は上位ビットと下位ビットによって指定される。図20に見られるタイプの2ビットまたは4状態メモリセルで、(1:1)は消去(「ER」)またはプログラムされていない(「U」)状態を指定し、(0:1)は状態Aを指定し、(0:0)は状態Bを指定し、(1:0)は状態Cを指定する。上位ビットと下位ビットは単一のメモリセルに物理的に位置することがある。別のデータグループには同じコードまたは異なるコードを適用できるので、ビット17に対応するデータグループは次の適用コードのビット1に対応するデータと併せて使用し、状態を決定する。それぞれの極性レジスタは該当するページ上の全てのデータの極性を制御する。下位ビットと上位ビットは、好ましくは同じ物理ワード線上に位置する。表1の例は、多数のワード線にわたってシンプルなパターンをランダムパターンに変換する極性ビットの働きを例示するものである。ランダム化は同じNANDチェーン構造に位置するデータで行われ、図22Cに提示する例はこのコンセプトを例示する。
【0112】
図22Cには、NANDストリングまたはチェーンの例示されたセルの各々に特定のセルの各下位ビットと上位ビットが描かれている。図に示されたNANDストリングは単なる例であって、当然ながらストリングのセルはこれよりも多いこともあれば少ないこともあり、図に示されたものとは異なる構造でも本発明に使用できる。例えば3ビット、4ビット、4ビット以上を蓄積するセルを使うこともできる。また、特に多状態メモリの場合にビット反転のコンセプトを例示するためにビットレベルの適用が図に示されているが、好ましくは1ページ以上のデータに極性ビットを適用する。図22Cではユーザデータの各ビットに極性ビットが適用され、極性ビットによって反転または通過したユーザデータは保存データと標示されている。保存データとは、ランダム化操作の結果として後ほどメモリアレイに書き込まれ、蓄積されるデータである。見てとれるように、図の右側に表示された状態はセルの上位ビットと下位ビットとによって決まる。図22Cで使われている用語「保存データ」は、表1と図22Bで「ユーザデータ(UD)後続符号化」と呼ばれているものに相当する。
【0113】
もうひとつの実施形態において、レジスタ610をシフトレジスタとして構成する。一度にコードの全てのビットを使用する実施形態とは対照的に、そのような実施形態では一度にレジスタの1ビットだけを使用する。ユーザによってコマンドが発行されると、シフトレジスタは次のビットへシフトする。着信ユーザページには最後のレジスタ出力からの極性ビットが使われる。これは好ましくはコマンドの立ち上がりで行われる。トリガコマンドは、プログラムコマンド、キャッシュプログラムコマンド、読み出しコマンド、消去コマンド、その他のユーザ発行コマンドであってよい。図23Bにはプログラムコマンド信号の例が示されている。コマンドに対応するクロック信号が図に示され、コマンドのインスタンス化はユーザリクエストによってトリガされ、そのタイミングとタイプは予測不能であって、基本的にランダムである。図23Aは、極性ビットを決定する入力のひとつとしてユーザコマンドに対応するクロック信号を示す。図の中のその他の入力はユーザデータである。既に述べたように、データの符号化は極性ビットの適用によって反転するかあるいは現状のまま残る。
【0114】
図23Cは、データ反転用制御回路の一例を示す。インバータが1つのデータ経路によって符号化は反転し、2つのインバータが直列する経路ではデータ符号化方式は変わらない。この場合、データグループに対応する極性ビットはそのデータグループとともに蓄積される。例えば、図23Dに見られるように、データページ630の場合にユーザエリア636にあるデータの極性ビット632は、ページ630の隠しエリア634にプログラムされる。ページ630を読み出すときには極性ビット632が取り出され、出力データを制御するためにラッチされ、符号化方式が反転されている場合は、図23Eに見られる代表的な回路によって元に戻される。このようにしてページの極性は当初の符号化に戻る。
【0115】
シフトレジスタで使用するコードのパターンは変えることができ、種々の用途に応じて修正できる。(0が変更なしを指示する場合に)全てのビットが0に設定されるとランダム化が無効になる。レジスタにおけるビットのパターンは擬似ランダムだが、ユーザの挙動は予測不能であり、得られた極性もそのつど予測不能でランダムである。2つの次のようなユーザ挙動の例を挙げる。1)ユーザはいくつかのページをプログラムし、さらにいくつかのページを読み出すため、またはプログラムするため、あるいはいくつかのブロックを消去するため、別のアドレスへジャンプし、最後のプログラムが行われたブロックまで戻り、さらなるページのプログラムを続ける。2)ユーザは全てのページを順次プログラムし、別のアドレスにジャンプしない。1のケースでは各ユーザコマンドにつき新たな極性ビットをトリガでき、2のケースでは順次プログラミングは1つの極性ビットを使用しこれに依拠する。ユーザが蓄積を望む当初のデータが両方のケースで同じであっても、メモリに最終的にプログラムされるデータは、これら2つのケースにおける個々のページやページのグループの少なくとも一部で異なる可能性がある。EEPROMは、通常ならばコントローラチップによって制御され、「ユーザ」アクションの一部はコントローラチップのものであることに留意されたい。
【0116】
もうひとつの実施形態において、極性ビットもまた、既に述べたキャッシュプログラム操作をはじめとするユーザコマンドの結果としてランダムに生成される。この実施形態では同期しない2つの入力を使用する。最初のものはユーザコマンドのタイミングであって、これは前述したように予測不能である。2番目のものは有限の状態マシンクロックである。メモリシステムによっては特定の時間(例えば、キャッシュ操作中)に限り有限の状態マシンクロックがアクティブになることもあれば、他のシステムでは常にアクティブになることもある。この実施形態のこの手法は、メモリシステムの有限の状態マシンクロックがアクティブになっているときに使える。
【0117】
有限の状態マシン(「FSM」)クロックのレベルまたは状態は、ユーザコマンドクロック信号の立ち上りで参照される。図24Aに見られるように、その状態はハイまたはローである。ロー状態は0の極性ビットに対応する(が、反対の対応も可能である)。時間t=0でFSMはローなので、極性ビットは0になり、前述したようにデータ符号化の変更なしを指示する。時間t=1でFSMはハイになり、極性ビットは1になり、時間t=3ではFSMが再びロー状態になる。実施形態によっては、実行コマンドが発行され感知されると直ちに極性ビット632が隠しエリア634にロードされる。他の実施形態によっては、システムの別のメモリに極性ビットを一時的に格納する。図24Bは前述したように極性ビットを決定する代表的な回路を示す。ここでもインバータは、好ましくは立ち上がりでトリガされる。
【0118】
これまで本発明の実施形態を説明してきたが、本発明がこれらの例示的な実施形態に制限されず、添付の特許請求の範囲によって規定されることが理解できよう。
【技術分野】
【0001】
本発明は、一般的にはデジタル装置との間で大容量ファイルをやり取りしたり蓄積したりするのに用いるメモリカードや可搬型ユニバーサル・シリアル・バス(「USB」)フラッシュメモリドライブ等の可搬型大容量記憶装置に関し、より具体的にはそれらのドライブに繰り返し蓄積されるビットパターンの影響を最小限に抑えることに関する。
【背景技術】
【0002】
フラッシュメモリカードおよびドライブの容量増加にともない、メモリアレイの中にあるメモリセルの規模は縮小し続けている。特にNAND系の高密度アレイの中で1つのセルまたはアレイの一部分に蓄積される電荷は、隣接するセルの読み出し操作やプログラム操作に影響を及ぼすことがある。これは、読み出しまたはプログラム妨害やセル結合として知られている。
【0003】
NANDフラッシュのセル結合、妨害、動作・構造全般の詳細については、あらゆる目的のためにその全体が本願明細書において参照により援用されている、「Method for Non-Volatile Memory With Background Data Latch Caching During Program Operations 」という米国特許出願第11/381,995号(特許文献1)、「Method for Non-Volatile Memory With Background Data Latch Caching During Erase Operations 」という米国特許出願第11/382,001号(特許文献2)、「Method for Non-Volatile Memory With Background Data Latch Caching During Read Operations」という米国特許出願第11/381,994号(特許文献3)、「Techniques for Reducing Effects of Coupling Between Storage Elements of Adjacent Rows of Memory Cells 」という米国特許出願第10/923,320号(特許文献4)、米国特許第6,870,768号(特許文献5)、ならびに「Reducing Floating Gate to Floating Gate Coupling Effect 」という米国特許出願第11/021,872号(特許文献6)を参照されたい。
【0004】
一部のユーザは恒常的にフラッシュメモリのいくつかのブロックに同じデータパターンを何度も繰り返し蓄積するためにフラッシュメモリをしばしば使用する。その結果、消去はされても決してプログラムされないビットが発生する。また、常にプログラムされ滅多に消去されないビットも発生する。このように執拗に繰り返されるデータパターンには、妨害やフローティングゲート間効果、NANDストリング抵抗効果、メモリ耐久性・信頼性の低下といった障害を招くという問題がある。
【0005】
不揮発性電荷蓄積が可能な固体メモリ、特に形状因子が小さいカードにパッケージされたEEPROMやフラッシュEEPROMの形をとるものが最近、情報家電や家庭用電化製品を中心に様々なモバイルおよびハンドヘルド装置の記憶装置として盛んに選ばれている。同じく固体メモリであるRAM(ランダムアクセスメモリ)と違って、フラッシュメモリは不揮発性であって、電源を切った後にも蓄積されたデータを保持する。フラッシュメモリはコストが高くつくにもかかわらず、大容量記憶用途で使われることが多くなっている。ハードドライブやフロッピーディスク等、回転する磁気媒体を基礎とする従来の大容量記憶は、モバイル/ハンドヘルド環境に不向きである。なぜならば、ディスクドライブはかさばり、機械的な故障が起きやすく、待ち時間が長く、電力を食うからである。このような望ましくない属性を持つディスク方式の記憶装置は、ほとんどのモバイル/ポータブルな用途において実用的でない。他方、埋め込み形で着脱可能なカードの形をとるフラッシュメモリは、その小さなサイズと、低消費電力と、高速度と、高い信頼性ゆえにモバイル/ハンドヘルド環境に理想的にマッチする。
【0006】
EEPROMと電気的にプログラム可能な読み出し専用メモリ(EPROM)は、消去が可能で、そのメモリセルに新しいデータを書き込める、すなわち「プログラム」できる、不揮発性メモリである。いずれも半導体基板のソース領域とドレイン領域との間のチャネル領域上に配置された電界効果トランジスタ構造による導電性フローティング(非接続)ゲートを利用する。さらにこのフローティングゲートの上にコントロールゲートを設ける。トランジスタのしきい値電圧特性は、フローティングゲート上に保持される電荷量によって制御される。つまり、フローティングゲート上の所与のレベルの電荷に応じてコントロールゲートに印加すべき対応する電圧(しきい値)があり、これが印加されることによりトランジスタは「オン」に切り替わり、ソース領域とドレイン領域との導通が可能となる。
【0007】
フローティングゲートは一定範囲の電荷を保持でき、しきい値電圧ウィンドウ内の任意のしきい値電圧レベルまでプログラムできる。しきい値電圧ウィンドウのサイズは装置の最小しきい値レベルと最大しきい値レベルによって決まり、これはフローティングゲートにプログラムできる電荷の範囲に相当する。しきい値ウィンドウは通常、メモリ装置の特性と、動作条件と、履歴とに左右される。セルの記憶状態は、基本的にはウィンドウ内の個々の分解可能なしきい値電圧レベル範囲によって限定される。
【0008】
メモリセルとして機能するトランジスタは通常、2通りの方法のいずれか一方によって「プログラム済み」状態までプログラムされる。「ホットエレクトロン注入法」では、ドレインに印加される高電圧によって基板チャネル領域上の電子が加速する。同時に、コントロールゲートに印加される高電圧は、薄いゲート誘電体を通じてフローティングゲートまでホットエレクトロンを引き寄せる。「トンネル注入法」では、基板に比べて高い電圧をコントロールゲートに印加する。かくして、電子は基板から介在するフローティングゲートまで引き寄せられる。
【0009】
メモリ装置の消去にはいくつか方法がある。EPROMの場合、紫外線によってフローティングゲートから電荷を取り除くことによってメモリをまとめて消去できる。EEPROMの場合、コントロールゲートに比べて高い電圧を基板に印加し、フローティングゲートの電子を薄い酸化物を通じて基板チャネル領域まで誘導することによってメモリセルを電気的に消去できる(すなわち、ファウラ・ノルドハイム・トンネリング)。通常、EEPROMはバイト単位で消去可能である。フラッシュEEPROMの場合、メモリが一度にまるごと、または一度に1ブロック以上が電気的に消去され、ブロックは512バイト以上のメモリを構成することがある。
【0010】
不揮発性メモリセルの例
メモリ装置は通常、1つ以上のメモリチップをカード上に実装させる。それぞれのメモリチップは、復号器や消去、書き込み、および読み出し回路等の周辺回路によって支援されるメモリセルアレイを備える。より精緻なメモリ装置には、知的で高度なメモリ操作とインターフェイスを実行するコントローラも付属される。現在、商業的に成功を収めた不揮発性の固体メモリ装置が数多く使われている。これらのメモリ装置には様々なタイプのメモリセルが採用され、各種のメモリセルは1つ以上の電荷蓄積素子を持つ。
【0011】
図1A〜図1Eは、様々な不揮発性メモリセルの例を概略的に示すものである。
図1Aは、フローティングゲートで電荷を蓄積するEEPROMセルの形をとる不揮発性メモリを概略的に示す。電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)はEPROMに似た構造を持つほか、適度の電圧が印加されたときにフローティングゲートで電気的に電荷を装填し除去するメカニズムが用意され、紫外線に晒す必要はない。米国特許第5,595,924号(特許文献7)には、そのようなセルの例とこの製造方法が記載されている。
【0012】
図1Bは、選択ゲートとコントロールゲートまたはステアリングゲートの両方を具備するフラッシュEEPROMセルを概略的に示す。メモリセル10は、ソース14およびドレイン16拡散層間に「分割チャネル」12を具備する。セルは、2つの直列トランジスタT1およびT2によって事実上形成される。T1は、フローティングゲート20とコントロールゲート30とを具備するメモリトランジスタとして機能する。フローティングゲートで選択可能な電荷量を蓄積できる。チャネルのT1部分を流れる電流量は、コントロールゲート30の電圧と介在するフローティングゲート20に存在する電荷量とに左右される。T2は、選択ゲート40を具備する選択トランジスタとして機能する。選択ゲート40の電圧によってT2がオンに切り替わると、チャネルのT1部分の電流はソースおよびドレイン間を通過できる。選択トランジスタは、コントロールゲートの電圧から独立したスイッチをソース−ドレインチャネル沿いに提供する。1つの利点として、フローティングゲートにおける電荷空乏(正)のためにゼロコントロールゲート電圧でなお導通するセルをオフに切り替えるのにこれを役立てることができる。もう1つの利点として、ソース側の注入プログラミングの実施がより容易になる。
【0013】
分割チャネルメモリセルのシンプルな実施形態では、図1Bにて点線で概略的に示すように、選択ゲートとコントロールゲートを同じワード線へ接続する。それには、チャネルの一部分の上に電荷蓄積素子(フローティングゲート)を配置し、もう1つのチャネル部分と電荷蓄積素子の上にはコントロールゲート構造(ワード線の一部)を配置する。これにより2つの直列トランジスタを持つセルが事実上形成され、一方のトランジスタ(メモリトランジスタ)は、電荷蓄積素子上の電荷量とワード線上の電圧との組み合わせによりチャネルのこの部分を流れる電流量を制御し、他方のトランジスタ(選択トランジスタ)はゲートとして機能するワード線だけを持つ。米国特許第5,070,032号(特許文献8)、第5,095,344号(特許文献9)、第5,315,541号(特許文献10)、第5,343,063号(特許文献11)、および第5,661,053号(特許文献12)には、そのようなセルの例と、メモリシステムにおけるその使用と、製造方法とが記載されている。
【0014】
図1Bに示された分割チャネルセルのより精緻な実施形態では、選択ゲートとコントロールゲートが独立し、点線で結ばれていない。一実施例では、ワード線に対し垂直の制御(またはステアリング)線へ接続されたセルアレイに1列のコントロールゲートを具備する。その効果として、選択されたセルの読み出しやプログラミングにあたってワード線が2つの機能を同時に果たさずにすむ。2つの機能とは(1)選択トランジスタのゲートとしての役割を果たすことであって、選択トランジスタをオンおよびオフに切り替えるにあたって適度の電圧を必要とし、(2)ワード線と電荷蓄積素子との電界(容量)結合を通じて電荷蓄積素子の電圧を所望のレベルまで持っていくことである。多くの場合、これらの機能の両方を1つの電圧で適切に遂行するのは困難である。コントロールゲートと選択ゲートの個別制御により、ワード線は機能(1)を果たすだけでよく、機能(2)は追加の制御線が果たす。この能力により、対象となるデータにプログラミング電圧を適合させる高性能プログラミング設計が可能となる。フラッシュEEPROMアレイにおける独立のコントロール(ステアリング)ゲートの使用は、例えば米国特許第5,313,421号(特許文献13)および第6,222,762号(特許文献14)に記載されている。
【0015】
図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)を選択ゲートに印加し、フローティングゲートの中に蓄積された電子を選択ゲートポリシリコンへ抜けさせることによって達成する。
【0016】
図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セルへのアクセスを制御する。
【0017】
NANDセルの中でアドレス指定されたメモリトランジスタを読み出したりプログラミング中にベリファイしたりするときには、そのコントロールゲートに適切な電圧を供給する。同時に、NANDセル50の中でアドレス指定されていない残りのメモリトランジスタは、それぞれのコントロールゲートに印加される十分な電圧によって完全にオンに転換される。かくして、個々のメモリトランジスタのソースからNANDセルのソース端子54にかけて導電経路ができあがり、個々のメモリトランジスタのドレインからセルのドレイン端子56にかけても同様である。米国特許第5,570,315号(特許文献15)、第5,903,495号(特許文献16)、第6,046,935号(特許文献17)には、そのようなNANDセル構造を持つメモリ装置が記載されている。
【0018】
図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)(非特許文献1)には、このような誘電性蓄積素子を利用するメモリ装置が記載されている。ソースおよびドレイン拡散層間のチャネルにまたがってONO誘電体層が延在する。1データビットのための電荷はドレインに近い誘電体層に局在し、他のデータビットのための電荷はソースに近い誘電体層に局在する。例えば、米国特許第5,768,192号(特許文献18)および第6,011,725号(特許文献19)は2つの二酸化ケイ素層間にトラッピング誘電体をはさむ不揮発性メモリを開示している。多状態データ記憶は、誘電体の中で空間的に隔てられた電荷蓄積領域のバイナリ状態を別々に読み出すことによって実現する。
【0019】
メモリアレイ
メモリ装置は通常、行列に配置されワード線とビット線によってアドレス指定できる二次元メモリセルアレイを含む。このアレイはNORタイプかNANDタイプのアーキテクチャに従って形成できる。
【0020】
NORアレイ
図2は、NORメモリセルアレイの一例を示す。これまでNORタイプのアーキテクチャを持つメモリ装置は、図1Bまたは図1Cに描かれたタイプのセルを用いて実装されてきた。各メモリセル行はそれぞれのソースとドレインによってデイジーチェーン方式で接続される。この設計は仮想接地設計と呼ばれることがある。各々のメモリセル10はソース14と、ドレイン16と、コントロールゲート30と、選択ゲート40とを具備する。行内のセルの選択ゲートはワード線42へ接続される。列内のセルのソースおよびドレインは選択されたビット線34および36へそれぞれ接続する。メモリセルのコントロールゲートと選択ゲートを別々に制御する実施例では、ステアリング線36によって列内のセルのコントロールゲートが接続される。
【0021】
多くのフラッシュEEPROM装置は、コントロールゲートと選択ゲートがともに接続されたメモリセルを用いて実装される。この場合、ステアリング線が必要なく、ワード線が各行の全セルのコントロールゲートと選択ゲートを単に接続する。米国特許第5,172,338号(特許文献20)および第5,418,752号(特許文献21)にはこれらの設計の例が開示されている。これらの設計ではワード線は基本的に2つの役割、すなわち行選択の役割と、読み出しやプログラミングにあたって行内の全セルにコントロールゲート電圧を供給する役割とを果たす。
【0022】
NANDアレイ
図3は、メモリセルの、例えば図1Dに示されたような、NANDアレイの一例を示す。ビット線は各NANDセル列に沿ってNANDセルのドレイン端子56へ結合する。ソース線はNANDセル行の全ソース端子54へ接続する。さらに、行沿いのNANDセルのコントロールゲートは一連の対応するワード線へ接続する。接続されたワード線を通じてコントロールゲートに適切な電圧をかけて1対の選択トランジスタ(図1D参照)をオンに転換することにより、1行のNANDセル全体をアドレス指定できる。NANDセルからなるチェーンの中である1つのメモリトランジスタを読み出すときには、チェーンの中の残りのメモリトランジスタがそれぞれの関連するワード線を通じて強くオンに転換されるため、チェーンの中を流れる電流は基本的に、読み出し対象セルに蓄積される電荷レベルに左右される。米国特許第5,570,315号(特許文献15)、第5,774,397号(特許文献22)、および第6,046,935号(特許文献17)には、NANDアーキテクチャアレイの例とメモリシステムの一部としてのこの動作が記載されている。
【0023】
ブロック消去
電荷蓄積メモリ装置のプログラミングではさらに電荷を電荷蓄積素子に加える。このためプログラミング操作にあたって、電荷蓄積素子に既に存在する電荷を事前に除去(または消去)しなければならない。1つ以上のメモリセルブロックを消去するために消去回路(図示せず)を設ける。セルアレイ全体あるいはかなりのアレイのセル群を電気的に一斉に(すなわち、瞬時に)消去するEEPROM等の不揮発性メモリは、「フラッシュ」EEPROMと呼ばれる。消去の後にはセル群をプログラムできる。一斉に消去できるセル群は1つ以上のアドレス指定可能な消去単位からなる。消去単位またはブロックは通常1ページ以上のデータを蓄積し、このページがプログラミングと読み出しの単位となるが、1回の操作で2ページ以上をプログラムしたり読み出したりする場合もある。各ページは通常1セクタ以上のデータを格納し、このセクタのサイズはホストシステムによって決まる。磁気ディスクドライブの規格に従い512バイトのユーザデータからなるセクタはその一例であり、さらにここにユーザデータに関する、および/またはこれを格納するブロックに関する、何バイトかのオーバーヘッド情報が加わる。
【0024】
読み出し/書き込み回路
通常の2状態EEPROMセルでは、1つ以上の電流区切りレベルを設定して伝導ウィンドウを2つの領域に分割する。予め決められた一定の電圧を印加することによってセルを読み出すときには、そのソース/ドレイン電流を区切りレベル(または基準電流IREF )に比較することによって記憶状態を決定する。読み出される電流が区切りレベルのものより高ければ、セルは1つの論理状態(例えば、「0」状態)にあると判断する。他方、電流が区切りレベルのものに満たなければ、セルはもう1つの論理状態(例えば、「1」状態)にあると判断する。そのような2状態セルは1ビットのデジタル情報を蓄積する。外部からプログラムできる基準電流源は多くの場合、メモリシステムの一部として用意され、区切りレベル電流を生成する。
【0025】
メモリ容量を増やすため、フラッシュEEPROM装置の実装密度は半導体技術の進歩にともないどんどん高くなっている。各メモリセルで3状態以上を蓄積することによって蓄積容量を増やす方法もある。
【0026】
多状態またはマルチレベルEEPROMメモリセルの場合、伝導ウィンドウを複数の区切り点で3つ以上の領域に分割し、各セルで2ビット以上のデータを蓄積できる。したがって、EEPROMアレイで蓄積できる情報は、各セルで蓄積できる状態数にともない増加する。米国特許第5,172,338号(特許文献20)には、多状態またはマルチレベルメモリセルを備えるEEPROMまたはフラッシュEEPROMが記載されている。
【0027】
実際には、コントロールゲートに基準電圧が印加されるときにセルのソース電極とドレイン電極にかけて伝導電流を感知することによってセルの記憶状態を読み出すのが普通である。セルのフローティングゲート上の各電荷につき、一定の基準コントロールゲート電圧に対応する伝導電流を検出できる。同様に、対応するしきい値電圧ウィンドウや伝導電流ウィンドウはフローティングゲートにプログラムできる電荷の範囲によって決まる。
【0028】
分割された電流ウィンドウの中で伝導電流を検出する代わりに、コントロールゲートで検査の対象となる所与の記憶状態に対してしきい値電圧を設定し、伝導電流がしきい値電流より低いかまたは高いかを検出することも可能である。一実施例において、ビット線の静電容量を通じて放電する伝導電流のレートを調べることによってしきい値電流に対する伝導電流の検出を果たす。
【0029】
図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」にある。
【0030】
前の説明から分かるように、メモリセルで蓄積する状態が多ければ多いほどしきい値ウィンドウは細かく分割される。この場合、所要の分解能を達成するためにプログラミング操作と読み出し操作の精度を上げる必要がある。
【0031】
米国特許第4,357,685号(特許文献23)には2状態EPROMをプログラムする方法が開示され、この方法ではセルが特定の状態までプログラムされるときに相継ぐプログラミング電圧パルスを受け、その都度フローティングゲートに電荷が加わる。パルスの合間にセルの読み返しまたはベリファイを行い、区切りレベルに対するソース−ドレイン電流を確認する。所望の状態に達した電流がベリファイされるとプログラミングは停止する。使用するプログラミングパルストレインの周期または振幅は上げることができる。
【0032】
従来技術のプログラミング回路は、単純に消去または接地状態から目標状態に達するまでプログラミングパルスを印加しながらしきい値ウィンドウを通過していく。実際、十分な分解能を実現するには、分割された、または区切られた、各領域につき少なくとも5ステップ程度のプログラミングステップを踏む必要がある。2状態メモリセルならこの性能で許容される。しかし、多状態セルの場合、必要なステップ数が分割数にともない増加するため、プログラミングの精度または分解能を上げなければならない。例えば、16状態セルで目標状態までプログラムするには少なくとも平均40のプログラミングパルスが必要となる。
【0033】
図5は、読み出し/書き込み回路170から行デコーダ130と列デコーダ160とを通じて典型的なメモリアレイ構成100にアクセスするメモリ装置を概略的に示す。図2および図3との関係で説明したように、メモリアレイ100にあるメモリセルのメモリトランジスタは、選択されたワード線とビット線との組を通じてアドレス指定できる。アドレス指定されたメモリトランジスタのそれぞれのゲートに適切な電圧を印加するにあたって、行デコーダ130は1つ以上のワード線を選択し、列デコーダ160は1つ以上のビット線を選択する。読み出し/書き込み回路170は、アドレス指定されたメモリトランジスタの記憶状態を読み出すため、または書き込むため(プログラムするため)にある。読み出し/書き込み回路170は、ビット線を通じてアレイ内の記憶素子へ接続するいくつかの読み出し/書き込みモジュールを備える。
【0034】
図6Aは、個々の読み出し/書き込みモジュール190の概略的ブロック図である。読み出しやベリファイのときには基本的に、選択されたビット線を通じて接続するアドレス指定されたメモリトランジスタのドレインを流れる電流をセンス増幅器で判定する。この電流は、メモリトランジスタに蓄積された電荷とそのコントロールゲート電圧に左右される。例えば、多状態EEPROMセルでは数通りのレベルの1つまでフローティングゲートを荷電できる。4レベルセルならこれを使って2ビットのデータを蓄積できる。センス増幅器によって検出されたレベルはレベル−ビット変換ロジックによって1組のデータビットに変換されて、データラッチに蓄積される。
【0035】
読み出し/書き込み性能および精度に影響する要因
読み出しとプログラミングの性能を上げるために、アレイの中にある複数の電荷蓄積素子またはメモリトランジスタが並行して読み出されるか、またはプログラムされる。したがって、記憶素子からなる論理「ページ」の読み出しまたはプログラミングは一斉に行われる。既存のメモリアーキテクチャでは通常、1行の中にいくつかの交互ページがある。1ページの全記憶素子の読み出しまたはプログラミングは一斉に行われる。列デコーダは交互ページの各々を対応する読み出し/書き込みモジュールへ選択的に接続する。例えば、一実施例において、532バイト(512バイトにオーバーヘッドの20バイトを加えたもの)のページサイズでメモリアレイを設計する。各列にドレインビット線があって各行につき2つの交互ページがあるなら列は8,512列になり、各ページには4,256列が関連している。全ての偶数ビット線か奇数ビット線のいずれかを並行して読み出すかまたは書き込むために、接続可能な4,256個のセンスモジュールがある。こうして、1ページ4,256ビット(すなわち、532バイト)のデータを並行して記憶素子のページから読み出すかまたはページへプログラムする。読み出し/書き込み回路170を形成する読み出し/書き込みモジュールは様々なアーキテクチャに組むことができる。
【0036】
図5を参照し、読み出し/書き込み回路170は列をなす読み出し/書き込みスタック180に編成されている。それぞれの読み出し/書き込みスタック180は読み出し/書き込みモジュール190を積み重ねたものである。メモリアレイにおける列の間隔は、これを占有する1つまたは2つのトランジスタのサイズによって決まる。しかし、図6Aから見てとれるように、読み出し/書き込みモジュールの回路はさらに多くのトランジスタと回路素子で実装され、多数の列にわたってスペースを占めることが見込まれる。占有された列の中で2つ以上の列を処理するため、多数のモジュールを互いに積み重ねる。
【0037】
図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)列に結合できる。
【0038】
既に述べたように、従来のメモリ装置は一度に全ての偶数ビット線または全ての奇数ビット線に対して大掛かりな並列処理を行うことによって読み出し/書き込み操作を向上させる。この1行2交互ページのアーキテクチャは、読み出し/書き込み回路ブロックの整合問題の緩和に役立つ。これはビット線間の容量結合をいかにコントロールするかにも左右される。1組の読み出し/書き込みモジュールを偶数ページまたは奇数ページのいずれかに多重化するにはブロックデコーダを使用する。こうすれば1組のビット線で読み出しかプログラミングが行われているときに互い違いの組のビット線を接地でき、隣接する結合は最小限に抑えられる。
【0039】
しかし、交互ページアーキテクチャは少なくとも3つの点で不利である。第1に、追加の多重化回路を必要とする。第2に、性能は遅い。ワード線によって接続されたメモリセルまたは1行のメモリセルで読み出しまたはプログラミングを完了するには、2回の読み出し操作か2回のプログラミング操作が必要となる。第3に、2つの隣接する電荷蓄積素子が別々のときにプログラムされる、例えば奇数ページと偶数ページとで別々にプログラムされる場合のフローティングゲートレベルにおける隣接する電荷蓄積素子間の電界結合等、好ましくない影響に対処するにあたって最適ではない。
【0040】
隣接する電界結合の問題はメモリトランジスタの間隔が狭まるにつれて顕著となる。メモリトランジスタではチャネル領域とコントロールゲートとの間に電荷蓄積素子が挟まれている。チャネル領域を流れる電流は、電荷蓄積素子とコントロールゲートの電界がもたらす最終的な電界と相関関係にある。メモリトランジスタは密度の増加にともない互いに接近する。隣接する電荷素子からの電界は影響を受けるセルの最終的な電界に大きく影響する。隣接する電界は、隣接する電荷蓄積素子にプログラムされる電荷に左右される。この摂動を招く電界には、隣接する電荷蓄積素子のプログラミング状態に応じて変化する動的な性質がある。隣接する電荷蓄積素子の状態の変化によっては、影響を受けるセルの読み出しに時間によってばらつきが生じるおそれがある。
【0041】
従来の交互ページアーキテクチャでは、隣接するフローティングゲート結合によって生じるエラーが激化する。偶数ページと奇数ページのプログラミングと読み出しは別々に行われるため、介在するページの状況次第では、ページがプログラムされるときの条件とページの読み返しが行われるときの条件がまったく異なることがある。多状態の実施例では、密度の増加にともない読み出しエラーが深刻化し、読み出し操作の精度を上げてしきい値ウィンドウの分割を粗くする必要がある。性能は損なわれ、多状態の実施例の潜在的な容量は制限される。
【0042】
米国公開特許出願第2004−0060031号(特許文献24)では、大きな読み出し/書き込み回路ブロックで対応するメモリセルブロックを並行して読み書きする、高性能でありながらコンパクトな不揮発性メモリ装置が開示されている。特に、このメモリ装置のアーキテクチャは読み出し/書き込み回路ブロックにおける冗長性を最小限に抑える。時分割方式で実質的に少数の共通部分とやり取りしながら並行して動作するブロック読み出し/書き込みモジュールの中核部分に読み出し/書き込みモジュールブロックを再配分することにより、スペースと電力を大幅に節約する。特に、複数のセンス増幅器とデータラッチとの間にある読み出し/書き込み回路の中では共通のプロセッサによってデータ処理が行われる。
【0043】
このように高性能・高容量の不揮発性メモリが一般に求められている。特に、読み出しとプログラミングの性能が高く、コンパクトで効率的でありながら読み出し/書き込み回路におけるデータ処理に幅広く対応する改良されたプロセッサを備えるコンパクトな不揮発性メモリが求められている。
【先行技術文献】
【特許文献】
【0044】
【特許文献1】米国特許出願第11/381,995号
【特許文献2】米国特許出願第11/382,001号
【特許文献3】米国特許出願第11/381,994号
【特許文献4】米国特許出願第10/923,320号
【特許文献5】米国特許第6,870,768号
【特許文献6】米国特許出願第11/021,872号
【特許文献7】米国特許第5,595,924号
【特許文献8】米国特許第5,070,032号
【特許文献9】米国特許第5,095,344号
【特許文献10】米国特許第5,315,541号
【特許文献11】米国特許第5,343,063号
【特許文献12】米国特許第5,661,053号
【特許文献13】米国特許第5,313,421号
【特許文献14】米国特許第6,222,762号
【特許文献15】米国特許第5,570,315号
【特許文献16】米国特許第5,903,495号
【特許文献17】米国特許第6,046,935号
【特許文献18】米国特許第5,768,192号
【特許文献19】米国特許第6,011,725号
【特許文献20】米国特許第5,172,338号
【特許文献21】米国特許第5,418,752号
【特許文献22】米国特許第5,774,397号
【特許文献23】米国特許第4,357,685号
【特許文献24】米国公開特許出願第2004−0060031号
【特許文献25】米国公開特許出願第2004−0109357号
【特許文献26】米国特許出願第11/026,536号
【特許文献27】「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願
【特許文献28】2005年3月16日に出願された「Non-Volatile Memory and Method with Power-Saving Read and Program-Verify Operations 」という米国特許出願
【特許文献29】米国特許出願第11/013,125号
【特許文献30】米国特許出願第10/846,289号
【特許文献31】米国特許出願第11/022,462号
【特許文献32】米国特許出願第10/915,039号
【特許文献33】米国特許第6,266,273号
【特許文献34】米国公開特許出願第2004−0109362号
【特許文献35】米国特許第6,657,891号
【非特許文献】
【0045】
【非特許文献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)
【発明の概要】
【0046】
本発明は、プログラム妨害またはやユーザ読み出し妨害の原因となる特定のデータパターンを軽減または解消するほか、NANDストリング抵抗効果を軽減し、メモリの耐久性と信頼性を向上させる。フローティングゲート間結合の問題も緩和する。
【0047】
本発明の一態様は、フラッシュメモリチップまたはアレイで蓄積データの擬似ランダム化を実装する方法を含む。この方法はフラッシュメモリ回路に対するごく僅かな修正でデータ蓄積のランダム性を大幅に向上させ、ひいてはアレイの性能を高める。データのランダム化はメモリの中で容易く有効または無効にできる。しかも、擬似ランダム化を駆動するシーケンスは絶えず変化し、システムの柔軟性はさらに向上する。
【0048】
いくつかの実施形態において、ユーザアクションによってデータ符号化の変更がトリガされる。ユーザアクションのタイミングは完全に予測不能なため、ユーザ主導トリガの結果として使われる符号化方式もまた予測不能であり、基本的には完全にランダムである。
【0049】
種々のランダム化手法および実施形態はメモリチップ(EEPROM)で実装する。つまり、これらは、メモリチップと通信するメモリコントローラによって生起するのではなく、メモリチップそのものの中で生起する。これは、しばしばシステムレベルで実装されメモリチップにおけるデータ蓄積のあり方をコントローラを使って変更することによって損耗均等化(wear leveling) と呼ばれる問題に対処する手法とは異なる点である。
【0050】
本発明のもうひとつの態様は、複数のユーザデータページを備える不揮発性NANDフラッシュメモリチップである。このチップは、メモリアレイと、有限の状態マシンクロック信号と、コマンドクロック信号と、有限の状態マシンクロック信号とコマンドクロック信号とを参照することによって生成される極性ビットとを備える。極性ビットの第1の値には第1の符号化タイプを使用し、極性ビットの第2の値には第2の符号化タイプを使用する。異なる符号化タイプの使用により、実際にはアレイの中で同じデータを繰り返し蓄積する場合でも、あるいは長期間にわたって蓄積する場合でも、アレイで同じデータパターンを蓄積する時間は減少する。
【0051】
本発明のもうひとつの態様は、複数のデータページを備える不揮発性NANDフラッシュメモリにおける方法に関する。この方法は、複数のビットを備えるコードを不揮発性メモリに蓄積することを備え、複数ビットの各ビットは複数ページの1ページのデータの符号化を反転させるかあるいは現状のまま残すかを指定する。また、これは、不揮発性メモリからコードを読み出すことと、不揮発性メモリからコードの複数のビットを蓄積するために割り当てられたレジスタにコードを転送することと、コードをレジスタに蓄積することと、コードの各ビットにつき複数のページの1ページのページアドレスをコードのビットに比較することによって極性信号を生成することと、生成された極性信号に基づき複数ページの一部分のページの符号化を変更することとを備える。
【図面の簡単な説明】
【0052】
【図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】キャッシュページコピー操作における相対的なタイミングを示す。
【図20】LM符号を使って各メモリセルで2ビットのデータを蓄積する場合の4状態メモリアレイのしきい値電圧分布を示す。
【図21】EEPROMまたはメモリチップ600の特定コンポーネントの概略的ブロック図である。
【図22A】ページアドレスによる各種データページの符号化方式と極性ビットの図である。
【図22B】ユーザデータ符号化の変換に用いる17ビットコード例の適用を示す表である。
【図22C】代表的なNANDチェーン/ストリングのメモリセルに蓄積される上位・下位ビットへの極性ビットの適用を示す。
【図23A】コマンドクロック信号に応じた符号化方式決定の図である。
【図23B】コマンドのクロック信号である。
【図23C】データ符号化決定・反転用制御回路の一実施形態を示す。
【図23D】極性ビットを蓄積するユーザデータページを示す。
【図23E】読み出し操作にあたって潜在的に反転されたデータの符号化を元に戻す制御回路の一実施形態を示す。
【図24A】コマンドクロック信号の立ち上がりにFSMクロックの値を示す、コマンドクロック信号と有限の状態マシンクロック信号の時系列である。
【図24B】図24Aに示すコマンドクロック信号に応じて極性ビットを決定する代表的な回路を示す。
【発明を実施するための形態】
【0053】
図7Aは、一群の分割読み出し/書き込みスタックを具備し本発明の改良されたプロセッサを実装するコンパクトなメモリ装置を概略的に示す。このメモリ装置は二次元のメモリセルアレイ300と、制御回路310と、読み出し/書き込み回路370とを含む。メモリアレイ300は、行デコーダ330を通じてワード線により、そして列デコーダ360を通じてビット線により、アドレス指定することができる。読み出し/書き込み回路370は一群の分割読み出し/書き込みスタック400として実装され、メモリセルからなるブロック(「ページ」とも呼ぶ)の読み出しまたはプログラミングを並行して行うことができる。ページは好適な実施形態において一連のメモリセル行から構成される。1行のメモリセルを多数のブロックまたはページに分割する別の実施形態において、個々のブロックに向けて読み出し/書き込み回路370を多重化するためのブロックマルチプレクサ350を設ける。
【0054】
制御回路310は読み出し/書き込み回路370と協働しながらメモリアレイ300でメモリ操作を遂行する。制御回路310は状態マシン312と、オンチップアドレスデコーダ314と、電力制御モジュール316とを含む。状態マシン312はメモリ操作のチップレベル制御を提供する。オンチップアドレスデコーダ314は、ホストまたはメモリコントローラで使われるアドレスとデコーダ330および360で使われるハードウェアアドレスとの間でアドレスインターフェイスを提供する。電力制御モジュール316は、メモリ操作中にワード線とビット線へ供給される電力と電圧を制御する。
【0055】
図7Bは、図7Aに示されたコンパクトなメモリ装置の好適な構成を示す。様々な周辺回路によるメモリアレイ300へのアクセスは、アレイの両側で対称的に行われるため、アクセス線と回路はそれぞれの側で半分に減る。行デコーダは行デコーダ330Aおよび330Bに分かれ、列デコーダは列デコーダ360Aおよび360Bに分かれる。メモリセル行を多数のブロックに分割する実施形態では、ブロックマルチプレクサ350がブロックマルチプレクサ350Aおよび350Bに分かれる。同様に、読み出し/書き込み回路は、下からビット線へ接続する読み出し/書き込み回路370Aと、アレイ300の上からビット線へ接続する読み出し/書き込み回路370Bとに分かれる。かくして、読み出し/書き込みモジュールの密度、したがって分割読み出し/書き込みスタック400の密度は、基本的には半減する。
【0056】
図8は、図7Aに示された読み出し/書き込みスタックにおける基本コンポーネントの一般的な構成を概略的に示す。本発明の一般的なアーキテクチャによると、読み出し/書き込みスタック400は、k本のビット線を感知するセンス増幅器212のスタックと、I/Oバス231を通じてデータを入出力するI/Oモジュール440と、入出力データを蓄積するデータラッチ430のスタックと、読み出し/書き込みスタック400でデータを処理し蓄積する共通プロセッサ500と、スタックコンポーネント間で通信を行うためのスタックバス421とを備える。読み出し/書き込み回路370間のスタックバスコントローラは、線411を通じて読み出し/書き込みスタック内の様々なコンポーネントを制御するための制御信号とタイミング信号とを提供する。
【0057】
図9は、図7Aおよび図7Bに示された読み出し/書き込み回路における読み出し/書き込みスタックの好適な構成を示す。各々の読み出し/書き込みスタック400はk本のビット線からなるグループに同時に働きかける。ページがp=r*k本のビット線を持つならば、r個の読み出し/書き込みスタック400−1・・・400−rがある。
【0058】
分割読み出し/書き込みスタック400からなる一群全体が並行して動作することにより、行に沿ってp個のセルからなるブロック(またはページ)の読み出しまたはプログラミングを並行して行うことができる。よって、セルの行全体に対してp個の読み出し/書き込みモジュールがある。各スタックでk個のメモリセルを処理するなら、バンク内の合計読み出し/書き込みスタックの数はr=p/kで求められる。例えば、バンク内のスタック数がrならp=r*kである。一例として、メモリアレイはp=512バイト(512×8ビット)、k=8を保持し、したがってr=512を保持する。好適な実施形態において、ブロックはセルの行全体である。別の実施形態において、ブロックは行内のセルの小集団である。セルの小集団は、例えば行全体の2分の1であったり、行全体の4分の1であったりする。セルの小集団は連続するセルであったり、1つおきのセルであったり、所定のセル数おきのセルであったりする。
【0059】
それぞれの読み出し/書き込みスタックには、例えば400−1の中には、基本的にk個のメモリセルからなるセグメントを並行して処理する212−1から212−kまでのセンス増幅器からなるスタックがある。米国公開特許出願第2004−0109357号(特許文献25)には好適なセンス増幅器が開示され、その全体が本願明細書において参照により援用されている。
【0060】
スタックバスコントローラ410は線411を通じて読み出し/書き込み回路370へ制御信号とタイミング信号を提供する。スタックバスコントローラそのものは線311を介してメモリコントローラ310に従属する。読み出し/書き込みスタック400内の通信はSABus422とDBus423を含むスタックバスによって行われ、スタックバスコントローラ410によって制御される。制御線411は、スタックバスコントローラ410から読み出し/書き込みスタック400−1のコンポーネントにかけて制御信号とクロック信号を提供する。
【0061】
スタックバスは、好適な実施形態において、共通プロセッサ500とセンス増幅器のスタック212との間の通信のためのSABus422と、プロセッサとデータラッチのスタック430との間の通信のためのDBus423とに分かれる。
データラッチのスタック430は、430−1から430−kまでのデータラッチを含み、各メモリセルにつき1つずつスタックに関連付けられている。I/Oモジュール440は、データラッチがI/Oバス231を通じて外部とデータをやり取りできるようにする。
【0062】
共通プロセッサは、エラー状態をはじめとするメモリ操作のステータスを伝えるステータス信号を出力する出力507をも含む。このステータス信号は、Wired−Or構成でFLAG BUS 509へ結合されたn−トランジスタ550のゲートを駆動するために使われる。FLAG BUSは好ましくは、コントローラ310によって予め荷電され、いずれかの読み出し/書き込みスタックによってステータス信号がアサートされるときにプルダウンされる。
【0063】
図10は、図9に示された共通プロセッサの改良された実施形態を示す。共通プロセッサ500は外部回路との通信のためのプロセッサバスPBUS 505と、入力ロジック510と、プロセッサラッチPLatch 520と、出力ロジック530とを備える。
入力ロジック510はPBUSからデータを受信し、信号線411を通じてスタックバスコントローラ410から届く制御信号に応じて論理状態「1」、「0」、または「Z」(浮遊)のいずれか1つに変換されたデータをBSIノードへ出力する。セット/リセットラッチPLatch 520はBSIをラッチし、MTCHおよびMTCH* として一対の相補出力信号をもたらす。
出力ロジック530はMTCH信号とMTCH* 信号を受信し、信号線411を通じてスタックバスコントローラ410から届く制御信号に応じて論理状態「1」、「0」、または「Z」(浮遊)のいずれか1つに変換されたデータをPBUS 505に出力する。
【0064】
共通プロセッサ500は所与のメモリセルに関係するデータを常に処理する。例えば、図10は、ビット線1へ結合されたメモリセルの場合を示している。対応するセンス増幅器212−1はノードを備え、ここにセンス増幅器データが現れる。このノードは好適な実施形態において、データを蓄積するSAラッチ214−1の形をとるものとする。同様に、対応する1組のデータラッチ430−1はビット線1へ結合されたメモリセルに関連する入力または出力データを蓄積する。好適な実施形態において、1組のデータラッチ430−1はnビットのデータを蓄積するにあたって十分なデータラッチ434−1・・・434−nを備える。
【0065】
共通プロセッサ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からの制御信号の一部として明示されている。
【0066】
図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へ至る。
【0067】
図11Bは、図11Aの入力ロジックの真偽表を示す。ロジックは、PBUSと制御信号ONE、ONEB<0>、ONEB<1>とによって制御され、これらの制御信号はスタックバスコントローラ410からの制御信号の一部である。基本的には3つの転送モードPASSTHROUGH、INVERTED、およびFLOATEDをサポートする。
【0068】
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モードは完全を期するために記載されているが、実際には使われない。
【0069】
図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をプルダウンできる。
【0070】
本発明の一特徴として、プルアップ回路はPMOSトランジスタで構成し、プルダウン回路はNMOSトランジスタで構成する。NMOSによるプルはPMOSのものより遥かに強いため、どんな競合においてもプルダウンは常にプルアップに勝る。換言すると、ノードまたはバスはデフォルトとして常にプルアップまたは「1」状態にでき、必要とあらば、常にプルダウンにより「0」状態に反転させることができる。
【0071】
図12Bは、図12Aの出力ロジックの真偽表を示す。ロジックは、入力ロジックからラッチされるMTCH、MTCH* と、制御信号PDIR、PINV、NDIR、NINVとによって制御され、これらの制御信号はスタックバスコントローラ410からの制御信号の一部である。4つの動作モードPASSTHROUGH、INVERTED、FLOATED、およびPRECHARGEをサポートする。
【0072】
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=0ならば、pトランジスタ531および532を備えるプルアップブランチをイネーブルするか、またはMTCH=1ならば、pトランジスタ533および534を備えるプルアップブランチをイネーブルする。
2004年12月29日に出願された米国特許出願第11/026,536号(特許文献26)では共通プロセッサの動作がより詳しく説明されている。この特許出願は、その全体が本願明細書において参照により援用されている。
【0073】
キャッシュ操作におけるデータラッチの使用
本発明のいくつかの態様において、読み出し、書き込み、消去といった他の作業に内部メモリが従事しているときにデータを出し入れするキャッシュ操作にあたって、図10で前述した読み出し/書き込みスタックのデータラッチを利用する。前述したアーキテクチャではデータラッチを多数の物理ページで共用する。例えば、ビット線の読み出し/書き込みスタックを全てのワード線で共用すれば、ある1つの操作が進行しているときにこれらのラッチのいずれかが空いているなら、それらのラッチを使って同じワード線か別のワード線における先々の操作に向けてデータをキャッシュでき、転送は別の操作の背後に潜在化できるため時間の節約になる。異なる操作または操作段階をパイプラインする量を増すことによって性能を上げることができる。例えば、キャッシュプログラミング操作では、1ページデータをプログラムしているときに別のページデータをロードして転送時間を節約できる。もう1つの例として、代表的な実施形態において、ある1つのワード線における読み出し操作が別のワード線における書き込み操作に挿入され、データの書き込みを継続しながら読み出しデータをメモリから転送することができる。
【0074】
このため、第1のページデータで書き込み、または他の操作が進行しているときには、(例えば、ECC操作を行うため)同じブロックでワード線が異なる別のページからデータをトグルアウトできる。この操作段階間パイプラインにより、データ転送に要する時間は第1のページデータに対する操作の背後に潜在化させることができる。より一般的に、ある1つの操作の一部分を、通常ならばこれよりも長い、別の操作の段階の合間に差し込むことが可能となる。もう1つの例として、例えば消去操作の段階の合間に、例えば消去パルスの前に、あるいは消去の後半として使われるソフトプログラミング段階の前に、感知操作を挿し込む。
【0075】
一部の操作に要する相対的な時間を説明するため、前述したシステムにおける代表的な時間値のセットを、
データ書き込み:〜700μs(下位ページ〜600μs、上位ページ800μs)
バイナリデータ書き込み:〜200μs
消去:〜2,500μs
読み出し:〜20−40μs
読み出しとデータのトグルアウト:2KBデータ、〜80μs、
4KB〜160μs、8KB〜320μs
とする。
これ以降、タイミング図にかかわる相対的な時間を説明する際には、これらの値を基準として使うことができる。主要な態様において、様々な段階をともなう長い操作を実行する場合、読み出し/書き込みスタックの共用ラッチが使用可能であれば、これを使って短い操作を割り込ませる。例えば、プログラミング操作や消去操作の中に読み出しを挿し込んだり、消去中にバイナリプログラミングを挿し込んだりすることができる。主要な代表的な実施形態において、同じ読み出し/書き込みスタックを共用するページのプログラミング操作のときに別のページデータをトグルイン/アウトし、例えばトグルアウトされ修正されるデータの読み出しは、データ書き込みのベリファイ段階に挿し込む。
【0076】
空きデータラッチを利用できる機会は数多くある。一般的に、1セル当たりnビットを蓄積するメモリの場合、各ビット線につきn個のデータラッチが必要となるが、これらのラッチの全てが常に必要となるわけではない。例えば、上位ページ/下位ページ形式でデータを蓄積する1セル当たり2ビットのメモリでは、下位ページをプログラムしているときに2つのデータラッチが必要となる。より一般的に、多数のページを蓄積するメモリで全てのラッチが必要となるのは最上位ページをプログラムするときだけである。これにより、他のラッチはキャッシュ操作に利用できる。また、最上位ページの書き込み中でも、書き込み操作のベリファイ段階から種々の状態が排除されるにつれてラッチは解放される。具体的に、ベリファイすべき状態が最上位状態だけになると、ベリファイに必要なラッチは1つだけであり、他のラッチはキャッシュ操作のために使うことができる。
【0077】
以降の説明は、1セル当たり2ビットを蓄積し、各ビット線のデータにつき2つのラッチを具備し、さらにクイックパス書き込み用に1つのラッチを具備する4状態メモリに基づくものであり、このメモリは本願と同時に出願され、前に援用されている「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願(特許文献27)で説明されている。下位ページを書き込む操作、または消去する操作、または消去後にソフトプログラミングを行う操作は、基本的にはバイナリ操作であり、データラッチの一方は空いていてデータをキャッシュするために使うことができる。同様に、上位ページかフルシーケンスの書き込みを行う場合、最上位レベル以外はすべてベリファイ済みでベリファイすべき状態がただ1つになると、メモリはラッチを解放でき、解放されたラッチはデータのキャッシュに使うことができる。例えば、コピー操作等で1ページをプログラムする場合、例えば同じ組のビット線上の別のワード線で同じ組のデータラッチを共用する別のページの読み出しは、書き込みのベリファイ段階に差し挟むことができる。アドレスは書き込み対象のページに切り替えることができ、書き込みプロセスは中断したところから再開でき、やり直しの必要はない。書き込みが継続しているときには、割り込ませた読み出しのときにキャッシュしたデータをトグルアウトし、チェックまたは修正し、元に戻して、先行する書き込み操作が完了した時点で書き戻すことができる。この種のキャッシュ操作では、最初のページのプログラミングの背後に2番目のページデータのトグルアウトと修正を潜在化させることができる。
【0078】
第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 」という米国特許出願(特許文献27)で説明されているクイックパス書き込みモードにおける下位ベリファイ(VL)に使われ、レジスタの使用と、これを使用する場合のクイックパス書き込みの使用は任意であるが、この代表的な実施形態ではレジスタを使用する。
【0079】
下位ページのプログラミングは、以下のステップを含む。
(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 」という米国特許出願(特許文献27)で説明されているように、DL2 434−2のデータは、クイックパス書き込みの第2段階への移行を左右する下位ベリファイロックアウトに使用する。
(6)プログラミングが始まると、プログラミングパルスの後に下位ベリファイの結果を使用してDL2 434−2を更新し、上位ベリファイの結果を使用してDL1 434−1を更新する。(これは、下位ページプログラミングがA状態に至る「従来の」符号化に基づく説明である。本願と同時に出願された「Use of Data Latches in Multi-Phase Programming of Non-Volatile Memories 」という米国特許出願(特許文献27)と2005年3月16日に出願された「Non-Volatile Memory and Method with Power-Saving Read and Program-Verify Operations 」という米国特許出願(特許文献28)では、この符号化とその他の符号化が詳しく説明されている。この説明を他の符号化へ敷衍することは容易い。)
(7)プログラミングが完了したか否かの判断にあたっては、セルの行(または適切な物理的プログラミング単位)のDL1 434−1レジスタだけをチェックする。
【0080】
下位ページを書き込んだら上位ページをプログラムできる。図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のデータだけをチェックし、プログラムされていないビットの有無を確認すればよい。
【0081】
このやり方のステップ6でラッチDL0 434−0がもはや必要でなく、次のプログラミング操作のためのデータをキャッシュするのに使えることに留意されたい。加えて、クイックパス書き込みを使用する実施形態で、第2の遅いプログラミング段階に入ったらラッチDL2 434−2もデータのキャッシュに使うことができるが、実際面でこれを使えるのはかなり短い時間に限られ、この特徴の実装にかかる追加のオーバーヘッドに見合わない。
【0082】
図15は、直前の数段落で説明した単一ページモードにおける数々のキャッシュプログラミングの態様を説明するのに使用することができる。図15は、メモリの内部で起こるイベント(下の「True Busy」線)とメモリの外側から見たもの(上の「Cache Busy」線)の相対的なタイミングを示している。
【0083】
時間t0 には、選択されたワード線(WLn)にプログラムする下位ページをメモリにロードする。ここでは第1の下位ページデータが予めキャッシュされていないと仮定するが、後続のページについてはキャッシュが行われる。下位ページのロードは時間t1 で完了し、メモリはこれの書き込みに着手する。この時点ではバイナリ操作と同じであり、ベリファイの必要があるのは状態Aだけであり(「pvfyA」)、データラッチDL0
434−0は次のページデータを受け付けることができ、これは時間t2 にWLnにプログラムする上位ページとして受け取られ、下位ページのプログラミング中にラッチDL0 434−0にキャッシュされる。時間t3 には上位ページのロードが完了し、t4 で下位ページのプログラミングが終わり次第直ちにこれをプログラムできる。このやり方では全てのデータ(下位および上位ページ)が物理的なプログラミング単位(ここではワード線WLn)に書き込まれるが、以下に説明するフルシーケンスの実施形態と違って、メモリは上位ページデータの書き込みに先立ち時間t3 から時間t4 まで待たなければならない。
【0084】
上位ページのプログラミングはt4 で始まり、当初B状態だけをベリファイし(「pvfyB」)、t5 にはC状態が加わる(「pvfyB/C」)。t6 でB状態のベリファイが終わるとベリファイはC状態だけとなり(「pvfyC」)、ラッチDL0 434−0は解放される。これにより、次のデータセットをキャッシュできるようになり、その一方で上位ページのプログラミングは完了する。
【0085】
指摘したように、図15に示されたキャッシュプログラミングをともなう単一ページアルゴリズムによると、たとえ時間t3 で上位ページデータが入手可能であっても、メモリは時間t4 まで待ったうえでこのデータの書き込みに着手しなければならない。例えば、米国特許出願第11/013,125号(特許文献29)で詳しく説明されているフルシーケンスのプログラミング動作に転換すれば、上位ページが入手可能となった時点で上位ページと下位ページデータを同時にプログラムできる。
【0086】
フルシーケンス(下位からフルへの転換)の書き込みにおけるキャッシュプログラミングアルゴリズムも前述したものと同様に、下位ページのプログラミングから始まる。したがって、ステップ(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号(特許文献29)で詳しく説明されている。
(5)上位ページデータがラッチDL0 434−0にロードされた後にはアドレスブロックで判定を行い、2つのページが同じワード線と同じブロックにあって、一方のページが下位ページであり、他方のページが上位ページであるか否かをチェックする。そのとおりであり、下位ページプログラミングからフルシーケンスプログラミングへの転換が可能であれば、プログラミング状態マシンがこの転換をトリガする。移行は未決のベリファイが完了した後に行われる。
(6)プログラミングシーケンスが下位ページからフルシーケンスへ変化する場合、通常ならばいくつかの操作パラメータを変更する。代表的な実施形態において、以下のものを含む。
(i)下位ページデータがロックアウトされていなければ、パルスベリファイサイクル数の最大プログラムループが下位ページアルゴリズムのものからフルシーケンスのものに変更されるが、完了プログラムループ数は転換によりリセットされない。
(ii)図16に示されたように、プログラミング波形は下位ページプログラミングプロセスで使われる値VPGM_Lで始まる。プログラミング波形が進展して、フルシーケンスへの転換で上位ページプロセスで使う初期値VPGM_Uを超えると、階段はVPGM_Uまで戻り、そこから上昇を続ける。
(iii)プログラミングパルスの最大値とステップサイズを決定するパラメータは変更されない。
(7)マルチレベル符号化で正確なデータのプログラミングを保証するため、現在のメモリセル状態のフルシーケンス読み出しを行うべきである。こうすれば、フルシーケンスが始まるときに、下位ページのプログラミングで既にロックアウトされていて上位ページデータを考慮に入れるためさらなるプログラミングを必要とする状態のプログラミングが確保される。
(8)クイックパス書き込みを行う場合、上位ページのプログラムデータを反映させるため、A状態のみの下位ベリファイに前は基づいていたラッチDL2434−2のデータも更新する。
(9)マルチレベル、フルシーケンスのプログラミングアルゴリズムによるプログラミングが再開する。図16に示されたように、下位ページプロセスのプログラミング波形が上位ページの初期レベルを超えた場合、波形は転換時にこのレベルに戻される。
【0087】
図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に次のデータ(対応する上位ページデータ等)をロードできる。
【0088】
フルシーケンス書き込みのときには、下位ページと上位ページの状態を個別に伝えるステータス報告を実施する。プログラミングシーケンスの終わりに未完了ビットがある場合、物理ページの走査を実行できる。第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レベルで合格しないならば、下位ページと上位ページの両方にエラーがある。
【0089】
キャッシュプログラミングアルゴリズムを使用する場合、AおよびBデータがプログラムされた後にプログラミングを完了するためにラッチDL1 434−1へC状態が転送される。この場合、下位ページは既に合格したプログラミングを具備していて不良ビットはないため、下位ページについてラッチを走査する必要はない。
【0090】
本発明の別の代表的な実施形態は、ある1つの場所から別の場所へデータセットを移動するページコピー操作に関係する。2004年5月13日に出願された米国特許出願第10/846,289号(特許文献30)、2004年12月21日出願された米国特許出願第11/022,462号(特許文献31)、2004年8月9日に出願された米国特許出願第10/915,039号(特許文献32)、そして米国特許第6,266,273号(特許文献33)ではデータ再配置操作の様々な態様が説明されている。これらの特許出願および特許はいずれも、本願明細書において参照により援用されている。ある1つの場所から別の場所へコピーされるデータは多くの場合、チェックのため(例えば、エラーチェック)、更新のため(ヘッダ更新等)、または両方のため(検出されたエラーの訂正等)にトグルアウトされる。そのような転送によってガーベッジコレクション操作の日付も整理される。本発明の主要な態様において、空きレジスタへのデータの読み出しを書き込み操作のベリファイ段階に挿し込み、書き込み操作の継続中にこのキャッシュデータをメモリ装置の外に転送することにより、データをトグルアウトする時間を書き込み操作の背後に潜在化させることができる。
【0091】
これよりキャッシュページコピー操作の2つの代表的な実施形態を紹介する。いずれの場合でも、クイックパス書き込みを使用する実施例を説明する。図18は、プロセスの進行にともなうラッチの代表的な実施形態の処理を示す。
【0092】
下位ページに書き込みを行うキャッシュページコピーの第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)プログラミングは下位ページが完了するまで続く。
【0093】
下位ページに対する書き込みか上位ページに対する書き込みかは、コピー先ページアドレスによって決まる。プログラミングアドレスが上位ページアドレスなら、プログラミングシーケンスはプログラミングが完了するまで停止せず、ステップ(5)の読み出しは書き込みが完了した後に行われる。
【0094】
第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)に戻される。
【0095】
前に指摘したように、代表的な実施形態ではそれぞれのメモリセルにプログラムされ得るデータ(ここでは2ビット)を保持するラッチDL0 434−0およびDL1 434−1に加えて、クイックパス書き込み手法の下位ベリファイにラッチDL2 434−2を使用する。下位ベリファイに合格したらラッチDL2 434−2も解放され、データのキャッシュに使うことができるが、代表的な実施形態では使わない。
【0096】
図19Aおよび図19Bは第2のキャッシュページコピー方法の相対的なタイミングを示すものであり、図19Bのアルゴリズムにはフルシーケンス書き込み転換があり、図19Aのアルゴリズムにはこれがない。(図19Aおよび図19Bはいずれも2つの部分からなり、第1の上部分はt0 に一致する縦の破線Aから始まってt5 に一致する縦の破線Bで終わり、第2の下部分は上部分の続きであって、t5 に一致する縦の破線Bから始まる。いずれにせよ、時間t5 のところにある線Bは上部分と下部分とで同じであって、2つの部分を2本の線で表示するための継ぎ目に過ぎない。)
【0097】
図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からのもの)の書き込みを開始する。
【0098】
ページN+1は上位ページであり、この書き込みは当初Bレベルでのベリファイで始まるが、t6 にはCレベルが加わる。目標状態Bになった蓄積素子が時間t7 でロックアウトされると(または最大カウントに達すると)、B状態のベリファイはなくなる。前述したように、本発明のいくつかの主要な態様によると、このときデータラッチは解放され、進行中の書き込み操作は中断し、読み出し操作(中断したプログラム−ベリファイ操作とは異なるアドレスでの読み出し操作)を割り込ませ、その後書き込みは中断したところから再開し、再開した書き込み操作が進行しているときには割り込み書き込み操作を感知したデータをトグルアウトできる。
【0099】
時間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 に相当し、最後にコピープロセスは停止する。
【0100】
図19Bに示すプロセスも下位ページ、すなわち下位ページとして解釈するページMの読み出しから始まり、予めデータはキャッシュされていないものと仮定する。図19Bは、時間t4 にフルシーケンス書き込みへの転換を実施する点が図19Aと異なる。これによりプロセスはざっと図19Aの時間(t5 〜t4 )の分だけ速くなる。時間t4 (図19Aではt5 )には、前述したように、フルシーケンス転換にかかわる様々な変更を実施する。さもなくば、プロセスは図19Aのものに類似し、時間t7 およびt12間に見られる本発明の態様を含む。
【0101】
ページコピープロセスと、ここで説明するデータの書き込みをともなうその他の手法で、ある所与の時間にベリファイする状態を合理的に選ぶことができ、このことは米国公開特許出願第2004−0109362号(特許文献34)で説明されている。この公開特許出願は、本願明細書において参照により援用されている。例えばフルシーケンス書き込みで、書き込みプロセスはAレベルのみのベリファイから始めることができる。Aベリファイの後には、ビットをチェックして合格ビットの有無を確認する。合格したビットがあるなら、Bレベルをベリファイ段階に加えることができる。Aレベルベリファイは、これを目標値とする全蓄積単位のベリファイの後に解除される(または設定可能パラメータに基づく最大カウントを除く)。同様に、Bレベルベリファイの後にはCレベルのベリファイを加えることができ、Bレベルベリファイは、これを目標値とする全蓄積単位のベリファイの後に解除される(または設定可能パラメータに基づく最大カウントを除く)。
プログラミング操作とこれにともなう他の操作のためのバックグラウンドデータキャッシングを、好適な多状態の符号化との関係で説明する。
【0102】
4状態メモリのための好適な代表的「LM」符号化
図20は、2ビット論理符号(「LM」符号)で符号化される4状態メモリのプログラミングと読み出しを示す。この符号は耐障害性を提供し、ユーピン効果による隣接するセル結合を緩和する。図20Aは、LM符号を使って各メモリセルで2ビットのデータを蓄積する場合の4状態メモリアレイのしきい値電圧分布を示す。LM符号化は、上位および下位ビットが状態「A」および「C」とで逆になる点が従来のグレイコードと異なる。米国特許第6,657,891号(特許文献35)に開示された「LM」符号は、電荷の大きな変化を要するプログラミング操作を回避することによって隣接するフローティングゲート間の電界効果結合を抑えるのに有利である。
【0103】
符号化は、下位および上位2ビットのプログラミングと読み出しを別々に行うようにする。下位ビットをプログラムするときのセルのしきい値レベルはプログラムされていない領域にとどまるか、またはしきい値ウィンドウの「下位中間」領域まで進む。上位ビットをプログラムするときには、これらの2領域のいずれかにあるしきい値レベルがさらにしきい値ウィンドウの4分の1に満たない若干高いレベルまで進む。
【0104】
データパターンの擬似・ユーザ主導型ランダム化
メモリEEPROMまたはチップの各種の実施形態とランダム化の方法により、NANDストリング抵抗の増加、耐久性と信頼性の低下、好ましくない結合等、反復データ蓄積パターンに起因する問題を最小限に抑えることを目指す。本発明の擬似ランダム化手法は実用的で、データ処理容量の点で実装コストは高くつかない。
【0105】
本発明は、フラッシュメモリチップに蓄積するデータの擬似ランダム化と真にユーザ本位のランダム化を実装する様々な実施形態および方法を含む。これらの実施形態にはいずれも、単純で僅かな回路修正をフラッシュEEPROMで実施するだけでよいという利点がある。ランダム化の手法と回路は計算集約的でなく、実装にともなう性能上のペナルティは、たとえあったとしてごく僅かですむため、注目に価する。本発明の解決手段は、ランダム化を随時容易く有効または無効にできるという点で柔軟性にも優れている。また、一部の実施形態で使用する擬似ランダム化パターンは様々で、随時簡単に変更できる。
【0106】
図21は、ランダム化プロセスに関係するEEPROMまたはメモリチップ600の主要コンポーネントを示す。チップ600はメモリアレイ602と、周辺回路内のレジスタ610と、マルチプレクサ614とを備える。さらなる図への参照にあたってはこれとは別のチップ600のコンポーネントを示し、説明する。レジスタ610は多数のビットを保持でき、多数のレジスタからなる。実施形態によってはこれがシフトレジスタとして機能する。メモリアレイ602は隠しエリア604とユーザデータエリア606とを備える。隠しエリアはファームウェアを蓄積するほか、メモリ動作制御コード等のオーバーヘッドデータを蓄積するために使用される。前に述べたように、NANDアーキテクチャではデータがブロックに整理され、それぞれのブロックは多数のデータページを備える。実施形態によってはレジスタ610もマルチプレクサ614も存在しない。
【0107】
本発明の各種の実施形態は、プログラム妨害またはユーザ読み出し妨害の原因となる特定のデータパターンの長期・反復蓄積を軽減または解消する。それには、擬似ランダム機構あるいはユーザトリガ型ランダム化によってデータの符号化を変更する。ユーザ活動のタイミングは完全に予測不能だから、その活動をトリガとして使用すれば真にランダムな符号化方式シーケンスになる。これらの実施形態も、NANDストリング抵抗効果を軽減し、メモリの耐久性と信頼性を向上させ、フローティングゲート間結合の問題を緩和する。
【0108】
これらの実施形態は、フラッシュEEPROM回路に対するごく僅かな修正でデータ蓄積のランダム性を大幅に向上させ、ひいてはEEPROMの性能を高める。データのランダム化はアレイの中で容易く有効または無効にできる。しかも、絶えず変化する擬似ランダム化シーケンスがシステムに柔軟性を与える。
【0109】
一実施形態において、0または1のコードまたは一連のビットを、アレイ602の隠しエリア604に蓄積する。隠しエリア604でコードを蓄積する部分は「ROMブロック」と呼ぶこともある。コードは2ビット以上からなり、好ましくは17ビット以上からなる。ビットが多いほどランダム化は向上する。チップ600に電源が入るとレジスタ610に値がロードされる。レジスタでは、それぞれのビットが特定のページアドレスに割り当てられる。各ビットをページのページアドレスに比較し、その比較に基づきページのデータ符号化は反転するか、さもなくば同じ状態を保つ(通過)。例えば、データの符号化方式を同じ状態に保つことを指示するために0のビット値を使用し、レジスタにおける値1はページ内のデータの符号化が反転することを指示する。コードのビット数がブロック内のページ数に満たない場合、1つ以上のページからなる2つ以上のグループにコードを適用できる。換言すると、全てのページを比較するまでは順次コードを繰り返し使用できる。サイクルからサイクルにかけてコードを変更することもできる。これとは別に、マルチプレクサ614を通じてコードを多重化することもでき、この場合、ユーザデータエリア602に蓄積された複数のデータページの符号化が1コードの1ビットによって決定される。コードの各ビットは、ユーザデータの一部に使用する符号化の極性を変更する役割を果たすことから、極性ビットと呼ぶことができる。これは図22Aに描かれている。この場合の符号化はページアドレスに基づき、この場合、ページ0,Nの極性は1、ページ1,n+1の極性は0、ページ2,n+2の極性は1等であることが分かる。したがって、符号化がページアドレスに基づく実施形態では極性ビットをページとともに蓄積する必要はないが、冗長性の目的で蓄積してもよい。
【0110】
図22Bに複製された次の表1は、ユーザデータ部分に対するレジスタ610内のコードの極性ビットの適用を示す。どんなユーザデータ部分でも特定の極性ビットに比較し、かつ対応付けることができるが、説明する好適な実施形態ではページを基本単位として例示する。
【表1】
【0111】
この表に見られるように、ビットの当初符号化(データ)が同じ状態を保つかあるいは変化するかはコードの各(極性)ビットによって決まる。例えばレジスタ位置1を見ると、その位置の極性コードの値は1になっている。したがって、1がデータの反転を指示する実施形態の場合には、0として蓄積されたユーザデータの当初のビットは値1に反転される。この表は、2ビットを使って状態を指定する多状態セルを例示するものである。状態を示す図20から分かるように、状態は上位ビットと下位ビットによって指定される。図20に見られるタイプの2ビットまたは4状態メモリセルで、(1:1)は消去(「ER」)またはプログラムされていない(「U」)状態を指定し、(0:1)は状態Aを指定し、(0:0)は状態Bを指定し、(1:0)は状態Cを指定する。上位ビットと下位ビットは単一のメモリセルに物理的に位置することがある。別のデータグループには同じコードまたは異なるコードを適用できるので、ビット17に対応するデータグループは次の適用コードのビット1に対応するデータと併せて使用し、状態を決定する。それぞれの極性レジスタは該当するページ上の全てのデータの極性を制御する。下位ビットと上位ビットは、好ましくは同じ物理ワード線上に位置する。表1の例は、多数のワード線にわたってシンプルなパターンをランダムパターンに変換する極性ビットの働きを例示するものである。ランダム化は同じNANDチェーン構造に位置するデータで行われ、図22Cに提示する例はこのコンセプトを例示する。
【0112】
図22Cには、NANDストリングまたはチェーンの例示されたセルの各々に特定のセルの各下位ビットと上位ビットが描かれている。図に示されたNANDストリングは単なる例であって、当然ながらストリングのセルはこれよりも多いこともあれば少ないこともあり、図に示されたものとは異なる構造でも本発明に使用できる。例えば3ビット、4ビット、4ビット以上を蓄積するセルを使うこともできる。また、特に多状態メモリの場合にビット反転のコンセプトを例示するためにビットレベルの適用が図に示されているが、好ましくは1ページ以上のデータに極性ビットを適用する。図22Cではユーザデータの各ビットに極性ビットが適用され、極性ビットによって反転または通過したユーザデータは保存データと標示されている。保存データとは、ランダム化操作の結果として後ほどメモリアレイに書き込まれ、蓄積されるデータである。見てとれるように、図の右側に表示された状態はセルの上位ビットと下位ビットとによって決まる。図22Cで使われている用語「保存データ」は、表1と図22Bで「ユーザデータ(UD)後続符号化」と呼ばれているものに相当する。
【0113】
もうひとつの実施形態において、レジスタ610をシフトレジスタとして構成する。一度にコードの全てのビットを使用する実施形態とは対照的に、そのような実施形態では一度にレジスタの1ビットだけを使用する。ユーザによってコマンドが発行されると、シフトレジスタは次のビットへシフトする。着信ユーザページには最後のレジスタ出力からの極性ビットが使われる。これは好ましくはコマンドの立ち上がりで行われる。トリガコマンドは、プログラムコマンド、キャッシュプログラムコマンド、読み出しコマンド、消去コマンド、その他のユーザ発行コマンドであってよい。図23Bにはプログラムコマンド信号の例が示されている。コマンドに対応するクロック信号が図に示され、コマンドのインスタンス化はユーザリクエストによってトリガされ、そのタイミングとタイプは予測不能であって、基本的にランダムである。図23Aは、極性ビットを決定する入力のひとつとしてユーザコマンドに対応するクロック信号を示す。図の中のその他の入力はユーザデータである。既に述べたように、データの符号化は極性ビットの適用によって反転するかあるいは現状のまま残る。
【0114】
図23Cは、データ反転用制御回路の一例を示す。インバータが1つのデータ経路によって符号化は反転し、2つのインバータが直列する経路ではデータ符号化方式は変わらない。この場合、データグループに対応する極性ビットはそのデータグループとともに蓄積される。例えば、図23Dに見られるように、データページ630の場合にユーザエリア636にあるデータの極性ビット632は、ページ630の隠しエリア634にプログラムされる。ページ630を読み出すときには極性ビット632が取り出され、出力データを制御するためにラッチされ、符号化方式が反転されている場合は、図23Eに見られる代表的な回路によって元に戻される。このようにしてページの極性は当初の符号化に戻る。
【0115】
シフトレジスタで使用するコードのパターンは変えることができ、種々の用途に応じて修正できる。(0が変更なしを指示する場合に)全てのビットが0に設定されるとランダム化が無効になる。レジスタにおけるビットのパターンは擬似ランダムだが、ユーザの挙動は予測不能であり、得られた極性もそのつど予測不能でランダムである。2つの次のようなユーザ挙動の例を挙げる。1)ユーザはいくつかのページをプログラムし、さらにいくつかのページを読み出すため、またはプログラムするため、あるいはいくつかのブロックを消去するため、別のアドレスへジャンプし、最後のプログラムが行われたブロックまで戻り、さらなるページのプログラムを続ける。2)ユーザは全てのページを順次プログラムし、別のアドレスにジャンプしない。1のケースでは各ユーザコマンドにつき新たな極性ビットをトリガでき、2のケースでは順次プログラミングは1つの極性ビットを使用しこれに依拠する。ユーザが蓄積を望む当初のデータが両方のケースで同じであっても、メモリに最終的にプログラムされるデータは、これら2つのケースにおける個々のページやページのグループの少なくとも一部で異なる可能性がある。EEPROMは、通常ならばコントローラチップによって制御され、「ユーザ」アクションの一部はコントローラチップのものであることに留意されたい。
【0116】
もうひとつの実施形態において、極性ビットもまた、既に述べたキャッシュプログラム操作をはじめとするユーザコマンドの結果としてランダムに生成される。この実施形態では同期しない2つの入力を使用する。最初のものはユーザコマンドのタイミングであって、これは前述したように予測不能である。2番目のものは有限の状態マシンクロックである。メモリシステムによっては特定の時間(例えば、キャッシュ操作中)に限り有限の状態マシンクロックがアクティブになることもあれば、他のシステムでは常にアクティブになることもある。この実施形態のこの手法は、メモリシステムの有限の状態マシンクロックがアクティブになっているときに使える。
【0117】
有限の状態マシン(「FSM」)クロックのレベルまたは状態は、ユーザコマンドクロック信号の立ち上りで参照される。図24Aに見られるように、その状態はハイまたはローである。ロー状態は0の極性ビットに対応する(が、反対の対応も可能である)。時間t=0でFSMはローなので、極性ビットは0になり、前述したようにデータ符号化の変更なしを指示する。時間t=1でFSMはハイになり、極性ビットは1になり、時間t=3ではFSMが再びロー状態になる。実施形態によっては、実行コマンドが発行され感知されると直ちに極性ビット632が隠しエリア634にロードされる。他の実施形態によっては、システムの別のメモリに極性ビットを一時的に格納する。図24Bは前述したように極性ビットを決定する代表的な回路を示す。ここでもインバータは、好ましくは立ち上がりでトリガされる。
【0118】
これまで本発明の実施形態を説明してきたが、本発明がこれらの例示的な実施形態に制限されず、添付の特許請求の範囲によって規定されることが理解できよう。
【特許請求の範囲】
【請求項1】
フラッシュメモリEEPROMを備える記憶装置であって、
隠しエリアとユーザデータエリアとを備えるフラッシュメモリアレイと、
マルチビットレジスタを備える周辺回路と、を備え、
マルチビットコードは前記レジスタに蓄積され、前記コードの各ビットは、データページのページアドレスに比較されるときに、前記ページの符号化方式を反転させるか、さもなくば符号化方式を現状のまま残す働きをする記憶装置。
【請求項2】
請求項1記載の記憶装置において、
前記コードは、最初に前記アレイの前記隠しエリアに蓄積され、次に前記レジスタへ転送される記憶装置。
【請求項3】
請求項2記載の記憶装置において、
前記転送は、前記EEPROMの電源投入時に行われる記憶装置。
【請求項4】
請求項1記載の記憶装置において、
前記EEPROMはマルチプレクサをさらに備え、前記比較は極性ビットを生成し、前記極性ビットは前記マルチプレクサを通じていくつかのページに適用される記憶装置。
【請求項5】
複数のユーザデータページを備える不揮発性NANDフラッシュメモリチップであって、
メモリアレイと、
有限の状態マシンクロック信号と、
コマンドクロック信号と、
前記有限の状態マシンクロック信号と前記コマンドクロック信号とを参照することによって生成される極性ビットと、
前記極性ビットの第1の値の第1の符号化タイプと、
前記極性ビットの第2の値の第2の符号化タイプと、
を備えるチップ。
【請求項6】
請求項5記載のチップにおいて、
前記極性ビットは、前記コマンドクロック信号の立ち上がりに前記有限の状態マシンクロック信号を参照することによって生成されるチップ。
【請求項7】
不揮発性NANDフラッシュメモリチップであって、
ユーザデータ区画と操作エリア区画とを有するメモリアレイと、
メモリレジスタを含む周辺回路と、
メモリアレイでデータの読み出しまたは書き込みを行うタイミングが予測不能なユーザコマンドによってトリガされ、マルチビット値を生成する手段と、
前記レジスタに蓄積される前記マルチビット値と、
極性ビットを生成する手段と、を備え、
前記極性ビットの第1の値の場合はユーザデータページの符号化が反転する一方で、前記極性ビットの第2の値の場合はユーザデータページの符号化が現状のまま残るチップ。
【請求項8】
複数のデータページを備える不揮発性NANDフラッシュメモリにおける方法であって、
複数ページの1ページのデータの符号化を反転させるか、さもなくば現状のまま残すかを各々指定する複数のビットを備えるコードを前記不揮発性メモリに蓄積するステップと、
前記不揮発性メモリから前記コードを読み出すステップと、
前記不揮発性メモリから前記コードの前記複数のビットを蓄積するために割り当てられたレジスタに前記コードを転送するステップと、
前記レジスタに前記コードを蓄積するステップと、
前記コードの各ビットにつき、前記複数ページの1ページのページアドレスを前記コードのビットに比較することにより極性信号を生成するステップと、
前記生成された極性信号に基づき前記複数ページの一部分のページの前記符号化を変更するステップと、
を含む方法。
【請求項9】
請求項8記載の方法において、
前記極性信号を多重化するステップをさらに含み、かくして極性信号は前記複数のページからなる1グループに適用され、前記グループの符号化は前記コードの単一ビットによって決定される方法。
【請求項10】
請求項8記載の方法において、
前記コードは、17ビット以上を備える方法。
【請求項11】
請求項8記載の方法において、
前記不揮発性メモリに前記コードを蓄積するステップは、前記不揮発性メモリの隠し区画に前記コードを蓄積するステップを含む方法。
【請求項12】
請求項8記載の方法において、
前記不揮発性メモリから前記コードを読み出すステップは、前記メモリの電源投入中に行われる方法。
【請求項13】
請求項8記載の方法において、
1つ以上のユーザデータページを読み出すステップであって、読み出される各ページの極性を前記ページアドレスによって決定するステップをさらに含む方法。
【請求項14】
メモリコントローラとフラッシュメモリアレイとを備えるフラッシュ記憶装置において、ユーザデータとその他のデータとを蓄積するために使われる前記アレイで実装される方法であって、
前記アレイで前記ユーザデータをプログラムするかまたは読み出すためにユーザコマンドを受信するステップと、
前記ユーザコマンドを受信するステップに際し、前記ユーザデータの符号化をランダム化するために1ブロックの前記ユーザデータに対して複数のビットを備えるコードの適用をトリガするステップであって、前記コードの前記ビットの各々は、前記ブロックの1つ以上のページからなるグループが現状のまま蓄積されるか、さもなくば蓄積に先立ち反転されるかを決定するステップと、
を含む方法。
【請求項15】
請求項14記載の方法において、
前記コードによって操作された前記ユーザデータとともに、前記コードを蓄積するステップをさらに含む方法。
【請求項16】
請求項14記載の方法において、
前記コードは、17ビット以上を備える方法。
【請求項17】
請求項14記載の方法において、
前記コードは、ユーザコマンドの合間に更新される方法。
【請求項18】
請求項14記載の方法において、
前記コードのビット数が1ブロック内のページ数に満たない場合、前記コードは1つ以上のページからなる2つ以上のグループに適用される方法。
【請求項19】
請求項15記載の方法において、
各セグメントにつき蓄積された前記コードを読み出すステップと、各セグメントにつき、前記コードが適用される前の符号化方式に前記ユーザデータをビットごとに戻すステップとをさらに含む方法。
【請求項20】
不揮発性NANDフラッシュメモリにおける方法であって、
ユーザ生成コマンド信号の立ち上がりでシフトレジスタを次のビットへシフトさせるステップと、
前記シフトレジスタの位置に蓄積された値を監視するステップと、
前記シフトレジスタの前記監視対象位置に第1の値がある場合、ユーザデータの一部分の符号化方式を反転させるステップと、
前記シフトレジスタの前記監視対象位置に第2の値がある場合、前記ユーザデータの一部分の符号化方式を現状のまま残すステップと、
を含む方法。
【請求項21】
請求項20記載の方法において、
前記一部分は、1つ以上のページを備える方法。
【請求項22】
請求項20記載の方法において、
前記ユーザ生成コマンド信号は、プログラムコマンドのものである方法。
【請求項23】
請求項20記載の方法において、
前記ユーザ生成コマンド信号は、読み出しコマンドのものである方法。
【請求項24】
請求項20記載の方法において、
前記ユーザ生成コマンド信号は、消去コマンドのものである方法。
【請求項25】
請求項20記載の方法において、
ユーザデータの各部分につき前記監視対象値を前記不揮発性メモリに蓄積するステップをさらに含む方法。
【請求項26】
請求項25記載の方法において、
特定のデータ部分のために前記不揮発性メモリから前記蓄積値を読み出すステップと、
前記蓄積値が前記第1の値の場合、前記データ部分の符号化方式を前記部分の読み出しに先立ち当初の状態に戻すために反転させるステップと、あるいは
前記蓄積値が前記第2の値の場合、前記部分の読み出しに先立ち前記部分の符号化方式を現状のまま残すステップと、
をさらに含む方法。
【請求項27】
複数のユーザデータページを備える不揮発性NANDフラッシュメモリチップにおける方法であって、
前記チップでユーザコマンドを受信する際に、第1および第2の状態を有する、前記フラッシュメモリチップの、有限の状態マシンクロックを参照するステップと、
前記有限の状態マシンクロックが参照時に前記第1の状態にある場合、ユーザデータの一部分の符号化方式を反転させるステップと、あるいは
前記有限の状態マシンクロックが参照時に前記第2の状態にある場合、前記ユーザデータの一部分の符号化方式を現状のまま残すステップと、
を含む方法。
【請求項28】
請求項27記載の方法において、
前記有限の状態マシンクロックは、ユーザコマンドによって生成される信号の立ち上がりで参照される方法。
【請求項29】
請求項27記載の方法において、
前記ユーザコマンドは、キャッシュプログラムコマンドである方法。
【請求項30】
請求項27記載の方法において、
前記一部分は、1つ以上のユーザデータページを備える方法。
【請求項31】
請求項27記載の方法において、
前記有限の状態マシンクロックの状態の指示はシフトレジスタの位置に蓄積され、前記位置に収容される前記値は前記ユーザデータの一部分に対応付けられる方法。
【請求項1】
フラッシュメモリEEPROMを備える記憶装置であって、
隠しエリアとユーザデータエリアとを備えるフラッシュメモリアレイと、
マルチビットレジスタを備える周辺回路と、を備え、
マルチビットコードは前記レジスタに蓄積され、前記コードの各ビットは、データページのページアドレスに比較されるときに、前記ページの符号化方式を反転させるか、さもなくば符号化方式を現状のまま残す働きをする記憶装置。
【請求項2】
請求項1記載の記憶装置において、
前記コードは、最初に前記アレイの前記隠しエリアに蓄積され、次に前記レジスタへ転送される記憶装置。
【請求項3】
請求項2記載の記憶装置において、
前記転送は、前記EEPROMの電源投入時に行われる記憶装置。
【請求項4】
請求項1記載の記憶装置において、
前記EEPROMはマルチプレクサをさらに備え、前記比較は極性ビットを生成し、前記極性ビットは前記マルチプレクサを通じていくつかのページに適用される記憶装置。
【請求項5】
複数のユーザデータページを備える不揮発性NANDフラッシュメモリチップであって、
メモリアレイと、
有限の状態マシンクロック信号と、
コマンドクロック信号と、
前記有限の状態マシンクロック信号と前記コマンドクロック信号とを参照することによって生成される極性ビットと、
前記極性ビットの第1の値の第1の符号化タイプと、
前記極性ビットの第2の値の第2の符号化タイプと、
を備えるチップ。
【請求項6】
請求項5記載のチップにおいて、
前記極性ビットは、前記コマンドクロック信号の立ち上がりに前記有限の状態マシンクロック信号を参照することによって生成されるチップ。
【請求項7】
不揮発性NANDフラッシュメモリチップであって、
ユーザデータ区画と操作エリア区画とを有するメモリアレイと、
メモリレジスタを含む周辺回路と、
メモリアレイでデータの読み出しまたは書き込みを行うタイミングが予測不能なユーザコマンドによってトリガされ、マルチビット値を生成する手段と、
前記レジスタに蓄積される前記マルチビット値と、
極性ビットを生成する手段と、を備え、
前記極性ビットの第1の値の場合はユーザデータページの符号化が反転する一方で、前記極性ビットの第2の値の場合はユーザデータページの符号化が現状のまま残るチップ。
【請求項8】
複数のデータページを備える不揮発性NANDフラッシュメモリにおける方法であって、
複数ページの1ページのデータの符号化を反転させるか、さもなくば現状のまま残すかを各々指定する複数のビットを備えるコードを前記不揮発性メモリに蓄積するステップと、
前記不揮発性メモリから前記コードを読み出すステップと、
前記不揮発性メモリから前記コードの前記複数のビットを蓄積するために割り当てられたレジスタに前記コードを転送するステップと、
前記レジスタに前記コードを蓄積するステップと、
前記コードの各ビットにつき、前記複数ページの1ページのページアドレスを前記コードのビットに比較することにより極性信号を生成するステップと、
前記生成された極性信号に基づき前記複数ページの一部分のページの前記符号化を変更するステップと、
を含む方法。
【請求項9】
請求項8記載の方法において、
前記極性信号を多重化するステップをさらに含み、かくして極性信号は前記複数のページからなる1グループに適用され、前記グループの符号化は前記コードの単一ビットによって決定される方法。
【請求項10】
請求項8記載の方法において、
前記コードは、17ビット以上を備える方法。
【請求項11】
請求項8記載の方法において、
前記不揮発性メモリに前記コードを蓄積するステップは、前記不揮発性メモリの隠し区画に前記コードを蓄積するステップを含む方法。
【請求項12】
請求項8記載の方法において、
前記不揮発性メモリから前記コードを読み出すステップは、前記メモリの電源投入中に行われる方法。
【請求項13】
請求項8記載の方法において、
1つ以上のユーザデータページを読み出すステップであって、読み出される各ページの極性を前記ページアドレスによって決定するステップをさらに含む方法。
【請求項14】
メモリコントローラとフラッシュメモリアレイとを備えるフラッシュ記憶装置において、ユーザデータとその他のデータとを蓄積するために使われる前記アレイで実装される方法であって、
前記アレイで前記ユーザデータをプログラムするかまたは読み出すためにユーザコマンドを受信するステップと、
前記ユーザコマンドを受信するステップに際し、前記ユーザデータの符号化をランダム化するために1ブロックの前記ユーザデータに対して複数のビットを備えるコードの適用をトリガするステップであって、前記コードの前記ビットの各々は、前記ブロックの1つ以上のページからなるグループが現状のまま蓄積されるか、さもなくば蓄積に先立ち反転されるかを決定するステップと、
を含む方法。
【請求項15】
請求項14記載の方法において、
前記コードによって操作された前記ユーザデータとともに、前記コードを蓄積するステップをさらに含む方法。
【請求項16】
請求項14記載の方法において、
前記コードは、17ビット以上を備える方法。
【請求項17】
請求項14記載の方法において、
前記コードは、ユーザコマンドの合間に更新される方法。
【請求項18】
請求項14記載の方法において、
前記コードのビット数が1ブロック内のページ数に満たない場合、前記コードは1つ以上のページからなる2つ以上のグループに適用される方法。
【請求項19】
請求項15記載の方法において、
各セグメントにつき蓄積された前記コードを読み出すステップと、各セグメントにつき、前記コードが適用される前の符号化方式に前記ユーザデータをビットごとに戻すステップとをさらに含む方法。
【請求項20】
不揮発性NANDフラッシュメモリにおける方法であって、
ユーザ生成コマンド信号の立ち上がりでシフトレジスタを次のビットへシフトさせるステップと、
前記シフトレジスタの位置に蓄積された値を監視するステップと、
前記シフトレジスタの前記監視対象位置に第1の値がある場合、ユーザデータの一部分の符号化方式を反転させるステップと、
前記シフトレジスタの前記監視対象位置に第2の値がある場合、前記ユーザデータの一部分の符号化方式を現状のまま残すステップと、
を含む方法。
【請求項21】
請求項20記載の方法において、
前記一部分は、1つ以上のページを備える方法。
【請求項22】
請求項20記載の方法において、
前記ユーザ生成コマンド信号は、プログラムコマンドのものである方法。
【請求項23】
請求項20記載の方法において、
前記ユーザ生成コマンド信号は、読み出しコマンドのものである方法。
【請求項24】
請求項20記載の方法において、
前記ユーザ生成コマンド信号は、消去コマンドのものである方法。
【請求項25】
請求項20記載の方法において、
ユーザデータの各部分につき前記監視対象値を前記不揮発性メモリに蓄積するステップをさらに含む方法。
【請求項26】
請求項25記載の方法において、
特定のデータ部分のために前記不揮発性メモリから前記蓄積値を読み出すステップと、
前記蓄積値が前記第1の値の場合、前記データ部分の符号化方式を前記部分の読み出しに先立ち当初の状態に戻すために反転させるステップと、あるいは
前記蓄積値が前記第2の値の場合、前記部分の読み出しに先立ち前記部分の符号化方式を現状のまま残すステップと、
をさらに含む方法。
【請求項27】
複数のユーザデータページを備える不揮発性NANDフラッシュメモリチップにおける方法であって、
前記チップでユーザコマンドを受信する際に、第1および第2の状態を有する、前記フラッシュメモリチップの、有限の状態マシンクロックを参照するステップと、
前記有限の状態マシンクロックが参照時に前記第1の状態にある場合、ユーザデータの一部分の符号化方式を反転させるステップと、あるいは
前記有限の状態マシンクロックが参照時に前記第2の状態にある場合、前記ユーザデータの一部分の符号化方式を現状のまま残すステップと、
を含む方法。
【請求項28】
請求項27記載の方法において、
前記有限の状態マシンクロックは、ユーザコマンドによって生成される信号の立ち上がりで参照される方法。
【請求項29】
請求項27記載の方法において、
前記ユーザコマンドは、キャッシュプログラムコマンドである方法。
【請求項30】
請求項27記載の方法において、
前記一部分は、1つ以上のユーザデータページを備える方法。
【請求項31】
請求項27記載の方法において、
前記有限の状態マシンクロックの状態の指示はシフトレジスタの位置に蓄積され、前記位置に収容される前記値は前記ユーザデータの一部分に対応付けられる方法。
【図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】
【図20】
【図21】
【図22A】
【図22B】
【図22C】
【図23A】
【図23B】
【図23C】
【図23D】
【図23E】
【図24A】
【図24B】
【図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】
【図20】
【図21】
【図22A】
【図22B】
【図22C】
【図23A】
【図23B】
【図23C】
【図23D】
【図23E】
【図24A】
【図24B】
【公表番号】特表2010−503142(P2010−503142A)
【公表日】平成22年1月28日(2010.1.28)
【国際特許分類】
【出願番号】特願2009−527598(P2009−527598)
【出願日】平成19年9月7日(2007.9.7)
【国際出願番号】PCT/US2007/077940
【国際公開番号】WO2008/031074
【国際公開日】平成20年3月13日(2008.3.13)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
【公表日】平成22年1月28日(2010.1.28)
【国際特許分類】
【出願日】平成19年9月7日(2007.9.7)
【国際出願番号】PCT/US2007/077940
【国際公開番号】WO2008/031074
【国際公開日】平成20年3月13日(2008.3.13)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
[ Back to top ]