インデックスプログラミングおよび削減されたベリファイを有する不揮発性メモリおよび方法
不揮発性メモリでは、ベリファイステップの数を削減するマルチパスインデックスプログラミング方法を使用して、メモリセルのグループがそのそれぞれの目標状態に並列にプログラムされる。各セルについて、セルに印加される最後のプログラミング電圧を記憶するプログラムインデックスが維持される。最初のプログラミングパスの間に一連の増加するプログラミングパルスが印加されると、各セルはインデックスを作成する。最初のプログラミングパスの後にベリファイおよび1つ以上の次のプログラミングパスが続き、それぞれの目標状態に対するいかなる不足分もトリミングする。セルがその目標状態に対するベリファイに失敗した場合には、そのプログラムインデックスは増加され、最後に受信されたパルスから次のパルスによってセルをプログラムすることができる。グループ内のすべてのセルがそのそれぞれの目標状態とベリファイされるまで、ベルファイおよびプログラミングパスは繰り返される。パルス間のベリファイ動作は必要ない。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)およびフラッシュEEPROMなどの不揮発性半導体メモリに関し、特に、プログラムベリファイ動作の回数を最小限にしたメモリおよびプログラミング動作に関する。
【背景技術】
【0002】
近年、様々な携帯型およびハンドヘルド型装置、とりわけ情報機器および家庭用電化製品において、特に、小形のフォームファクタカードとしてパッケージ化されたEEPROMおよびフラッシュEEPROMの形態をとる電荷の不揮発性記憶が可能なソリッドステートメモリが好んで用いられる記憶装置となっている。同じくソリッドステートメモリであるRAM(ランダムアクセスメモリ)とは異なり、フラッシュメモリは不揮発性であり、電源を切った後でもその記憶データを保持している。コストが上昇するにもかかわらず、フラッシュメモリは、大容量記憶用途でますます使用されつつある。ハードドライブやフロッピーディスクなどの回転式磁気媒体に基づく従来の大容量記憶装置は、携帯型およびハンドヘルド型の環境には適していない。その理由は、ハードドライブは大型になりがちで機械的不良を起こしやすく、長い待ち時間および大電力要件を有するためである。このような望ましくない属性により、ディスクに基づく記憶装置は大部分の携帯型および移動式用途において実用的でなくなっている。一方、フラッシュメモリは内蔵型でも取り外し可能なカードの形態をとるものでも、小型、低消費電力、高速および高信頼性というその特徴によって携帯型およびハンドヘルド型の環境に理想的に適している。
【0003】
EEPROMおよび電気的にプログラム可能な読み出し専用メモリ(EPROM)は、消去するとともにそのメモリセル内に新しいデータを書き込むかまたは「プログラムする」ことができる不揮発性メモリである。両方とも半導体基板内のソース領域とドレイン領域との間のチャネル領域上に位置する電界効果トランジスタ構造のフローティング(接続されていない)導電ゲートを使用している。次に、フローティングゲート上にはコントロールゲートが設けられる。トランジスタのしきい値電圧特性は、フローティングゲート上に保持される電荷量によって制御される。すなわち、フローティングゲート上の所与の電荷レベルに対して対応する電圧(しきい値)が存在し、トランジスタが「オン」に転換されてそのソース領域とドレイン領域との間で導通が可能になる前にこの対応する電圧をコントロールゲートに印加する必要がある。
【0004】
フローティングゲートは、様々な範囲の電荷を保持することができるので、しきい値電圧ウィンドウ内の任意のしきい値電圧レベルにプログラムすることができる。しきい値電圧ウィンドウの大きさは、デバイスの最小および最大しきい値レベルであり、フローティングゲート上にプログラムすることができる電荷の範囲に対応するレベルによって画定されている。しきい値ウィンドウは、一般に、メモリデバイスの特性、動作条件および動作履歴に依存している。原則として、ウィンドウ内のそれぞれ特異的で分解可能なしきい値電圧レベルの範囲を用いて、セルの明確なメモリ状態を指定することもできる。しきい値電圧ウィンドウが2つの個別領域に区分されている場合には、各メモリセルは、1ビットのデータを記憶することができることになる。同様に、しきい値電圧ウィンドウが3つ以上の個別領域に区分されている場合には、各メモリセルは、2ビット以上のデータを記憶することができることになる。
【0005】
通常の2状態EEPROMセルでは、導通ウィンドウを2つの領域に区分するように、少なくとも1つの電流ブレークポイントレベルが設定される。セルが所定の固定電圧を印加することによって読み出される場合、セルのソース/ドレイン電流は、ブレークポイントレベル(または基準電流IREF)と比較することによってメモリ状態が決定される。読み出された電流がブレークポイントレベルの電流よりも高い場合には、セルは一方の論理状態(例えば、「0」状態)にあると判断される。一方、電流がブレークポイントレベルの電流よりも低い場合には、セルは他方の論理状態(例えば、「1」状態)にあると判断される。したがって、このような2状態セルは、1ビットのデジタル情報を記憶している。外部からプログラム可能であってもよい基準電流源をメモリシステムの一部として設けることでブレークポイントレベル電流を発生させることが多い。
【0006】
メモリ容量を増やすために、フラッシュEEPROMデバイスは、半導体技術の状態が進歩するに従いますます高密度で製造されるようになっている。記憶容量を増やす別の方法は、各メモリセルに3状態以上を記憶させることである。
多状態またはマルチレベルEEPROMメモリセルの場合、導通ウィンドウは2つ以上のブレークポイントによって3つ以上の領域に区分され、各セルが2ビット以上のデータを記憶することができるようになっている。したがって、所与のEEPROMアレイが記憶することができる情報は、各セルが記憶することができる状態の数とともに増加する。多状態またはマルチレベルメモリセルを有するEEPROMまたはフラッシュEEPROMは、米国特許第5,172,338号(特許文献1)に記載されている。
メモリセルとして働くトランジスタは、一般に、2つのメカニズムのうちの1つによって「プログラムされた」状態にプログラムされる。「ホットエレクトロン注入」では、ドレインに印加される高い電圧によって、基板のチャネル領域にわたって電子が加速される。同時に、コントロールゲートに印加される高い電圧によって、ホットエレクトロンは薄いゲート誘電体を介してフローティングゲート上に引き込まれる。「トンネル注入」では、基板に対して高い電圧がコントロールゲートに印加される。このようにして、基板から介在するフローティングゲートに電子が引き込まれる。
【0007】
メモリデバイスは、多くのメカニズムによって消去され得る。EPROMの場合、紫外線照射によりフローティングゲートから電荷を取り除くことによってメモリは一括消去可能である。EEPROMの場合、コントロールゲートに対して高い電圧を基板に印加することでフローティングゲート内の電子を誘導して薄い酸化物を介して基板のチャネル領域にトンネルさせるようにすること(すなわち、ファウラー−ノルドハイムトンネル現象)によって、メモリセルが電気的に消去可能である。一般に、EEPROMは、1バイト毎に消去可能である。フラッシュEEPROMの場合、メモリは一度に全てのブロックあるいは一度に1つ以上のブロックを電気的に消去可能であり、ブロックは、512バイト以上のメモリから構成されてもよい。
メモリデバイスは、一般に、カード上に搭載されることもある1つ以上のメモリチップを含む。各メモリチップは、デコーダならびに消去、書き込みおよび読み出し回路などの周辺回路によってサポートされるメモリセルのアレイを含む。さらに高度なメモリデバイスは、インテリジェントでかつ高水準のメモリ動作およびインターフェイスを実行する外部メモリコントローラで動作する。
【0008】
今日使用されている不揮発性ソリッドステートメモリデバイスで商業的に成功しているものが多い。このようなメモリデバイスは、フラッシュEEPROMである場合もあれば他の種類の不揮発性メモリセルを使用している場合もある。フラッシュメモリならびにこれらを製造するシステムおよび方法の例は、米国特許第5,070,032号(特許文献2)、第5,095,344号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)および第5,661,053号(特許文献6)、第5,313,421号(特許文献7)ならびに第6,222,762号(特許文献8)に与えられている。特に、NANDストリング構造を有するフラッシュメモリデバイスは、米国特許第5,570,315号(特許文献9)、第5,903,495号(特許文献10)、第6,046,935号(特許文献11)に記載されている。さらに、不揮発性メモリデバイスは、電荷を蓄積する誘電層を有するメモリセルからも製造される。前に説明した導電性フローティングゲート素子の代わりに、誘電層が使用される。このような誘電体記憶素子を使用するメモリデバイスは、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誘電層は、ソース拡散とドレイン拡散との間のチャネルにわたって延在する。一方のデータビットに対する電荷はドレインに隣接する誘電層に局在し、他方のデータビットに対する電荷はソースに隣接する誘電層に局在する。例えば、米国特許第5,768,192号(特許文献12)および第6,011,725号(特許文献13)には、2つの二酸化シリコン層の間に挟まれたトラッピング誘電体を有する不揮発性メモリセルが開示されている。誘電体内の空間的に分離される電荷記憶領域のバイナリ状態を別々に読み出すことによって、多状態データ記憶が実施される。
【0009】
読み出しおよびプログラミング性能を改善するために、アレイ内の複数の電荷蓄積素子またはメモリトランジスタは、並列に読み出されたりプログラムされたりする。したがって、メモリ素子の「ページ」は、同時に読み出されたりプログラムされたりする。既存のメモリアーキテクチャでは、1つの行は、一般に、インターリーブされた幾つかのページを含むか、1つのページを構成する場合もある。1つのページのすべてのメモリ素子は、同時に読み出されたりプログラムされたりすることになる。
一連の交互に実施されるプログラム/ベリファイサイクルを使用している従来のプログラミング技術は、相対的に大きなVPGM の変化に応答してセルのしきい値電圧が最初に急速に増大するというプログラミングプロセスにおける不確実性に対処することである。しかし、フローティングゲートにプログラムされる電荷がシールドとして働いて電子をフローティングゲート内にさらにトンネルさせる有効電界を減少させるにつれて、この増大は衰えていき最終的に止まる。このプロセスは極めて非線形に見えるので、試行錯誤しながら進められる。
【0010】
プログラム/ベリファイプログラミング技術の欠点は、ベリファイサイクルは時間がかかる上に性能に影響を与えることである。この問題は、複数のビットを記憶可能なメモリセルの実施によって深刻化する。本質的に、ベリファイは、メモリセルの可能な複数の状態のそれぞれに対して実施される必要がある。16の可能なメモリ状態を有するメモリの場合、各ベリファイサイクルが最大16検知動作まで担うこともあることを意味する。したがって、マルチレベルメモリセル(MLC)の識別可能な状態レベルの数が増加するに伴い、プログラム/ベリファイ方式のベリファイサイクルはますます時間がかかるようになる。
【0011】
2006年9月12日にLoc Tuらによって出願された「METHOD FOR NON-VOLATILE MEMORY WITH LINEAR ESTIMATION OF INITIAL PROGRAMMING VOLTAGE」という米国特許出願第11/531,227号(特許文献14)には、線形予測によって最初のプログラミング電圧を推定する方法が開示されている。不揮発性メモリの良好なプログラミング性能を達成するために、最初のプログラミング電圧VPGM0およびステップサイズを工場で最適に選択する必要がある。メモリセルの各ページをテストすることによってこれは実現される。選択されたページに接続されるワード線は、パルス間にベリファイを有する一連の階段波形の電圧パルスによって、そのページが指定されたパターンとベリファイされるまで連続的にプログラムされる。ページがプログラムベリファイされた時点のプログラミング電圧を使用して、ページの開始プログラミング電圧の初期値までこれを線形的に縮小することによって推定することになる。この推定は、最初のパスからの推定を第2のパスで使用することによってさらに正確になる。したがって、従来の交互のプログラミングおよびベリファイを使用して、ページをうまくプログラムするための最終プログラミング電圧を設定する。次いで、最終プログラミング電圧を線形的に縮小してページの推定される最初のプログラミング電圧に至る。この種のスケーリングはページレベルでは粗いスケールに基づき、この分野のメモリに対する従来のセル単位のプログラミングおよびベリファイの欠点に対処するものではない。
【0012】
特に、従来のプログラミングには、すべてのパルス間でベリファイ動作が必要である。メモリが多くのメモリ状態に区分されている場合、ベリファイ動作は、すべてのパルス間で多くの状態をチェックする必要がある。ベリファイ動作の数は、状態区分の数の2乗で増加する。したがって、セル当たり3ビット以上のデータを保持するメモリの場合、ベリファイ動作の数は極端に大きくなる。
従来の方法は、プログラム分解能を改善するためにプログラムパルスステップサイズをより細かくすることである。しかし、このことはプログラムするのに必要なパルスの数を比例的に増加させる効果があり、これによってプログラミング時間が増大する。さらに、従来の方法では、プログラミングパルスの増加は、インターリーブするベリファイの数と組み合わされることになる。
したがって、大容量で高性能な不揮発性メモリが一般的に必要である。特に、前述した欠点が最小限に抑えられた改善されたプログラミング性能を有する大容量不揮発性メモリを有する必要がある。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】米国特許第5,172,338号
【特許文献2】米国特許第5,070,032号
【特許文献3】米国特許第5,095,344号
【特許文献4】米国特許第5,315,541号
【特許文献5】米国特許第5,343,063号
【特許文献6】米国特許第5,661,053号
【特許文献7】米国特許第5,313,421号
【特許文献8】米国特許第6,222,762号
【特許文献9】米国特許第5,570,315号
【特許文献10】米国特許第5,903,495号
【特許文献11】米国特許第6,046,935号
【特許文献12】米国特許第5,768,192号
【特許文献13】米国特許第6,011,725号
【特許文献14】米国特許出願第11/531,227号
【特許文献15】米国特許第5,595,924号
【特許文献16】米国公開特許出願第2006/0140007号
【特許文献17】米国特許出願第11/733,694号
【特許文献18】米国特許出願第11/733,706号
【非特許文献】
【0014】
【非特許文献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
【発明の概要】
【0015】
インデックスプログラミング
本発明の1つの一般的な態様によれば、メモリセルのグループに対して並列に動作するマルチパスインデックスプログラミング方法は、後のプログラミングパスにおいて、プログラムインデックスに応じてセルのプログラミングを実施したりあるいはプログラミングを禁止したりすることができるように、セルが受け取った最後のプログラミング電圧レベルなどの情報を提供するために、各セルについてプログラムインデックスを維持するステップを含む。
各プログラミングパスにおいて、階段パルストレインの形態をとる一連の増加するパルスとしてプログラミング電圧をメモリセルのグループに印加して、パルスカウントが増加するに伴ってメモリセルが増加するプログラミング電圧を受けるようにするのが好ましい。好適な実施形態では、それぞれ別々のプログラミング電圧レベルは、パルスカウントまたはパルス数として表現するのが便利である。同様に、プログラムインデックスもパルス数によって表現される。
メモリセルのグループのプログラミングパスでは、そのグループのセルのプログラムインデックスを使用して、それぞれの増加するパルスに応じてプログラミングを許可するか禁止するかを制御する。
【0016】
第1の実施例では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から得られる。プログラムインデックスは、プログラムパスの間にプログラムが禁止される前にセルに印加される最後のプログラミング電圧レベルまたはパルス数を記憶する。各セルのプログラムインデックスは、従来のインターリーブプログラム/ベリファイ方法でプログラミングおよびベリファイステップをインターリーブすることによって設定される。グループ内のセルのプログラミングは、セルがプログラムベリファイされて最後のパルス数がそのプログラムインデックスとして記録されると禁止される。この実施例がさらに多くのベリファイステップを担うこともあるが、どのセルも過剰にプログラムする可能性は低い。その結果、各セルについて設定されたプログラムインデックスを後のプログラミングパスでうまく利用してベリファイステップを省くことができる。
【0017】
第2の実施例では、セルのプログラムインデックスは、そのセルの推定最大プログラミング電圧レベルに最初に設定され、その目標状態に接近しても超えないようにプログラムする。階段パルストレインがグループの各セルに印加されると、そのプログラムインデックスによって示される推定最大プログラミング電圧レベルに達した時点でセルはそれ以上プログラムされるのを禁止される。階段パルストレインのその後のパルスは、禁止されたセルに影響を及ぼさないことになる。プログラミングパスの最後で、グループ内の各セルは、それぞれの目標状態付近にプログラムされることになり、各プログラムインデックスは、各セルが受け取った最後のプログラミング電圧レベルを反映することになる。
【0018】
第3の実施例では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から推定される。特に、メモリセルは、それぞれパルスの後にベリファイが続く一連のプログラミングパルスによって、消去状態から所与のしきい値電圧レベルにプログラムされる。所与のしきい値電圧レベルはチェックポイントとして働き、所与の目標しきい値電圧レベルのプログラムインデックスまたはプログラミング電圧レベルが得られる予測関数を較正する。プログラムインデックスは、1つ以上のチェックポイントによって較正される予測方法によって得られる。
【0019】
1つの実施形態では、所与の目標しきい値電圧レベルのプログラミング電圧レベルを比例的に生成する線形関数によって所定の関数が近似される。線形関数は、メモリアレイのセルの集団に適用可能な所定の平均値によって与えられる傾きを有する。線形関数は、所与のメモリセルの線形関数上にチェックポイントを予め定めることによって所与のメモリについて一意的に決定される。チェックポイントは、メモリセルを指定されたしきい値電圧レベルにプログラムする実際のプログラミング電圧に基づいている。チェックポイントは、メモリセルの最も低いプログラム状態の1つに対応するのが好ましい。メモリセルは、例えば、従来のプログラム/ベリファイプログラミング技術を使用することによって、まずチェックポイントにプログラムされる。このようにして、メモリセルを指定されたメモリ状態にプログラムするのに必要な実際のプログラミング電圧のチェックポイント値が決定される。したがって、所定の関数は、メモリセルを目標しきい値電圧レベルにプログラムするプログラミング電圧値を決定するのに使用される前にチェックポイントしきい値電圧レベルで評価されたときに、較正されてチェックポイントプログラミング電圧値を生成する。
【0020】
予測プログラミング技術は、目標状態へのプログラミングがベリファイ動作を必要としない点で有利である。ベリファイ動作は、メモリの可能な状態すべてではなくチェックポイント状態をベリファイする必要があるだけである。
プログラミング精度を向上させ、多状態メモリの各メモリ状態の分布を絞り込むために、追加のプログラミングパスが実施される。
インデックスプログラミングの利点は、プログラミングパスの各プログラミングパルス間においてベリファイステップを必要としないでセルのグループをプログラムすることができることである。このことは、プログラミング動作の性能を大幅に改善することになる。
【0021】
本発明の別の一般的な態様によれば、メモリセルのグループに対して並列で動作するマルチパスインデックスプログラミング方法は、最初のプログラミングパスと、各セルのプログラムインデックスの構築とを含む。最初のプログラミングパスの後にベリファイステップおよび追加のプログラミングパスが続き、最初のパスによるいかなる不足もトリミング(trim)する。インデックスプログラミングを使用することによって、大幅に削減された数のベリファイ動作でマルチパスプログラミングが実施される。
次のプログラミングパスの間に、ベリファイ後のセルはそれ以上プログラムされるのを禁止される。ベリファイ前のセルは、そのパスを越えて最後のプログラミングパスで1つのパルスによってプログラムすることができる。ベリファイステップおよびプログラミングパスは、グループ内のすべてのセルがそのそれぞれの目標状態とベリファイされるまで繰り返される。このように、ベリファイステップを実施する前にパルストレインの全行程を印加することによって、メモリセルのページをそのそれぞれの目標状態に並列に正しくプログラムすることが可能である。
インデックスプログラミングの利点は、プログラミングパスの各プログラミングパルスの間にベリファイステップを必要としないでセルのグループをプログラムすることができることである。インデックスプログラミングは、プログラミング動作の性能を大幅に向上させることになる。
【図面の簡単な説明】
【0022】
【図1】本発明が実施され得る不揮発性メモリチップの機能ブロックを示す概略図である。
【図2】不揮発性メモリセルを示す概略図である。
【図3】フローティングゲートが一度に選択的に蓄積してもよい4つの異なる電荷Q1〜Q4についてのソース−ドレイン電流ID とコントロールゲート電圧VCGとの間の関係を示す図である。
【図4】メモリセルのNORアレイの例を示す図である。
【図5A】NANDストリングに編成されるメモリセルのストリングを示す概略図である。
【図5B】図5Aに示されるようなNANDストリング50から構成されるメモリセルのNANDアレイ200の例を示す図である。
【図6】メモリセルのアレイにわたってp個のセンスモジュールのバンクを含む、図1に示される読み出し/書き込み回路270Aおよび270Bを示す図である。
【図7】図6に示されるセンスモジュールの好ましい編成を示す概略図である。
【図8】図7に示される読み出し/書き込みスタックをさらに詳細に示す図である。
【図9】(0)〜(2)は4状態メモリセルの集団をプログラムする例を示す図である。
【図10】(0)〜(2)は8状態メモリセルの集団をプログラムする例を示す図である。
【図11】4状態メモリセルを目標メモリ状態にプログラムするための従来の方法を示す図である。
【図12】従来の交互プログラム/ベリファイアルゴリズムを使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。
【図13】インデックスプログラミング方法の一般的な方式を示す流れ図である。
【図14A】第1の実施例によるメモリセルのプログラムインデックスを提供することを示す流れ図である。
【図14B】メモリセルのプログラムインデックスを得ることの第2の実施例を示す流れ図である。
【図14C】1つ以上のチェックポイントによって較正される予測関数を使用してメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。
【図14D】1つの実施形態によるメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。
【図14E】別の実施形態によるメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。
【図15】メモリセルを目標しきい値電圧レベルにプログラムするのに必要なプログラミング電圧を供給するために使用される所定の関数の好適な実施形態を示す図である。
【図16】消去状態の上の第1のプログラム状態に対応するチェックポイントの好ましい指定を示す図である。
【図17】最初のプログラミングパスで使用され各セルのプログラムインデックスを構築する予測プログラミングを示す図である。
【図18A】各追加のパルスがメモリセルを次のメモリ状態にプログラムするようなステップサイズを有するプログラミング電圧を設定することを示す流れ図である。
【図18B】最初のプログラミングパスを受けるメモリセルのしきい値電圧を示す概略図である。
【図19】メモリセルのプログラムインデックスを設定することの好適な実施例を示す流れ図である。
【図20】(A)は図18Bに示される「通常」セルの図19のラッチ動作を示し、(B)は図18Bに示される「遅い」セルの図19のラッチ動作を示し、(C)は図18Bに示される「非常に遅い」セルの図19のラッチ動作を示す図である。
【図21】インデックスプログラミング方法の好適な実施形態を示す流れ図である。
【図22】最初のパスの後でプログラム結果をトリミングするための、図21のステップ820に示される追加のベリファイおよびプログラミングパスを示す図である。
【図23】ベリファイ状態フラグを記憶するラッチを示す概略図である。
【図24A】ベリファイ状態フラグの使用によってベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。
【図24B】メモリセルのプログラムインデックスをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。
【図24C】パルスカウントをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。
【図25】インデックスプログラミング技術を使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。
【図26】図21に示されるインデックスプログラミングパスへの相関マルチパスプログラミングの適用を示す図である。
【図27】マルチパスプログラミングを使用することによるメモリ状態のしきい値電圧分布の絞り込みを示す図である。
【図28A】メモリ状態の様々な区分化のために従来のマルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。
【図28B】メモリ状態の様々な区分化のために相関マルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。
【図29】パス間で相関プログラミングレベルを使用するマルチパスプログラミング方法を示す流れ図である。
【発明を実施するための形態】
【0023】
メモリシステム
図1〜図10は、本発明の様々な態様が実施され得る例示的なメモリシステムを示す。
図11および図12は、従来のプログラミング技術を示す。
図13〜図29は、本発明の様々な態様および実施形態を示す。
【0024】
図1は、本発明が実施され得る不揮発性メモリチップの機能ブロックを概略的に示す。メモリチップ100は、メモリセルの二次元アレイ200と、制御回路210と、デコーダ、読み出し/書き込み回路およびマルチプレクサなどの周辺回路とを含む。
メモリアレイ200は、行デコーダ230(230Aと230Bとに分割)を介してワード線によって、および列デコーダ260(260Aと260Bとに分割)を介してビット線によってアドレス指定可能である(図4および図5も参照)。読み出し/書き込み回路270(270Aと270Bとに分割)は、メモリセルのページを並列に読み出すかまたはプログラムできるようにする。データI/Oバス231は、読み出し/書き込み回路270に接続されている。
好適な実施形態では、ページは、同一ワード線を共有するメモリセルの隣接する行から構成される。別の実施形態では、メモリセルの行が複数のページに区分されるが、読み出し/書き込み回路270を個々のページに多重化するためにブロックマルチプレクサ250(250Aと250Bとに分割)が設けられる。例えば、メモリセルの奇数列および偶数列によってそれぞれ形成される2つのページが読み出し/書き込み回路に多重化される。
【0025】
図1は、様々な周辺回路によるメモリアレイ200へのアクセスがアレイの両側で対称的に実施され、それぞれの側のアクセス線および回路の密度を半分に減らすようにしている好適な配置を示す。したがって、行デコーダは行デコーダ230Aと230Bとに分割され、列デコーダは列デコーダ260Aと260Bとに分割されている。メモリセルの行が複数のページに区分されている実施形態では、ページマルチプレクサ250は、ページマルチプレクサ250Aと250Bとに分割されている。同様に、読み出し/書き込み回路270は、アレイ200の下部からビット線に接続する読み出し/書き込み回路270Aと、アレイ200の上部からビット線に接続する読み出し/書き込み回路270Bとに分割されている。このようにして、読み出し/書き込みモジュールの密度、したがってセンスモジュール380の密度は、本質的に2分の1に削減される。
【0026】
制御回路110は、読み出し/書き込み回路270と協働してメモリアレイ200でメモリ動作を実施するオンチップコントローラである。制御回路110は、一般に、状態マシン112と、オンチップアドレスデコーダおよび出力制御モジュール(明確に図示せず)などの他の回路とを含む。状態マシン112は、メモリ動作のチップレベル制御を提供する。制御回路は、外部メモリコントローラを介してホストと通信している。
メモリアレイ200は、一般に、行および列に配置されるメモリセルの2次元アレイとして編成され、ワード線およびビット線によってアドレス指定可能である。NOR型またはNAND型アーキテクチャに従ってアレイを形成することができる。
【0027】
図2は、不揮発性メモリセルを概略的に示す。メモリセル10は、フローティングゲートまたは誘電層などの電荷蓄積ユニット20を有する電界効果トランジスタによって実施することができる。メモリセル10は、ソース14、ドレイン16およびコントロールゲート30も含む。
今日使用されている不揮発性ソリッドステートメモリデバイスで商業的に成功しているものが多い。このようなメモリデバイスは、異なる種類のメモリセルを使用してもよく、それぞれの種類は1つ以上の電荷蓄積素子を有している。
一般的な不揮発性メモリセルは、EEPROMおよびフラッシュEEPROMを含む。EEPROMセルおよびそれを製造する方法の例は、米国特許第5,595,924号(特許文献15)に与えられている。フラッシュEEPROMセル、メモリシステムにおけるその使用およびそれを製造する方法の例は、米国特許第5,070,032号(特許文献2)、第5,095,344号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)、第5,661,053号(特許文献6)、第5,313,421号(特許文献7)および第6,222,762号(特許文献8)に与えられている。特に、NANDセル構造を有するメモリデバイスの例は、米国特許第5,570,315号(特許文献9)、第5,903,495号(特許文献10)、第6,046,935号(特許文献11)に記載されている。さらに、誘電体記憶素子を利用するメモリデバイスの例は、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 、ならびに米国特許第5,768,192号(特許文献12)および第6,011,725号(特許文献13)に記載されている。
【0028】
実際には、セルのメモリ状態は、通常、基準電圧がコントロールゲートに印加されている場合にセルのソース電極とドレイン電極との間の伝導電流を検知することによって読み出される。したがって、セルのフローティングゲートの所与の各電荷について、固定基準コントロールゲート電圧に対して対応する伝導電流を検出することもできる。同様に、フローティングゲート上にプログラム可能な電荷の範囲は、対応するしきい値電圧ウィンドウまたは対応する伝導電流ウィンドウを定義する。
あるいは、区分された電流ウィンドウの中で伝導電流を検出する代わりに、テスト中に所与のメモリ状態に対するしきい値電圧をコントロールゲートで設定し、伝導電流がしきい値電流より小さいか大きいかを検出することも可能である。1つの実施例では、しきい値電流に対する伝導電流の検出は、伝導電流がビット線の容量を介して放電する速度を評価することによって達成される。
【0029】
図3は、フローティングゲートが一度に選択的に蓄積してもよい4つの異なる電荷Q1〜Q4についてのソース−ドレイン電流ID とコントロールゲート電圧VCGとの間の関係を示す。4つの実線のID 対VCG曲線は、メモリセルのフローティングゲート上にプログラム可能な4つの可能な電荷レベルを表し、それぞれ4つの可能なメモリ状態に対応する。例として、セルの集団のしきい値電圧ウィンドウは、0.5V〜3.5Vの範囲であってもよい。7つの可能なメモリ状態「0」、「1」、「2」、「3」、「4」、「5」、「6」はそれぞれ1つの消去状態および6つのプログラム状態を表し、しきい値ウィンドウをそれぞれ0.5Vの間隔で5つの領域に区分することによって画定すればよい。例えば、2μAの基準電流IREFを図に示すように使用する場合、Q1でプログラムされたセルは、メモリ状態「1」と見なされてもよい。これはその曲線がVCG=0.5Vおよび1.0Vによって画定されるしきい値ウィンドウの領域でIREF と交わるためである。同様に、Q4はメモリ状態「5」にある。
【0030】
前の説明から分かるように、メモリセルが多くの状態を記憶するように作製されるほど、そのしきい値ウィンドウは細かく分割される。例えば、メモリデバイスは、−1.5V〜5Vの範囲のしきい値ウィンドウを有するメモリセルを有してもよい。これは6.5Vの最大幅を供給する。メモリセルが16状態を記憶することになっている場合、各状態は、しきい値ウィンドウ内で200mVから300mVを占めてもよい。これには必要な分解能を達成可能にするために、プログラミングおよび読み出し動作でより高い精度が必要となる。
【0031】
図4は、メモリセルのNORアレイの例を示す。メモリアレイ200では、メモリセルの各行は、そのソース14およびドレイン16によってデイジーチェーン方式で接続されている。このような設計は、仮想接地設計と称されることがある。行におけるセル10は、ワード線42のようなワード線に接続されるコントロールゲート30を有する。列におけるセルは、ビット線34および36のような選択されたビット線にそれぞれ接続されるソースおよびドレインを有する。
【0032】
図5Aは、NANDストリングに編成されるメモリセルのストリングを概略的に示す。NANDストリング50は、そのソースおよびドレインによってデイジーチェーン接続される一連のメモリトランジスタM1、M2・・・Mn(例えば、n=4、8、16あるいはそれ以上)から構成される。1対の選択トランジスタS1、S2は、それぞれNANDストリングのソース端子54およびドレイン端子56を介してメモリトランジスタチェーンの外部への接続を制御する。メモリアレイでは、ソース選択トランジスタS1がオンに転換すると、ソース端子がソース線に接続される(図5B参照)。同様に、ドレイン選択トランジスタS2がオンに転換すると、NANDストリングのドレイン端子がメモリアレイのビット線に接続される。チェーン内の各メモリトランジスタ10はメモリセルとして機能し、所定の電荷量を蓄積して意図されるメモリ状態を表すようにするための電荷蓄積素子20を有する。各メモリトランジスタのコントロールゲート30は、読み出しおよび書き込み動作の制御を可能にする。図5Bに示されるように、NANDストリングの行の対応するメモリトランジスタのコントロールゲート30は、同一ワード線にすべて接続されている。同様に、選択トランジスタS1、S2のそれぞれのコントロールゲート32は、それぞれそのソース端子54およびドレイン端子56を介するNANDストリングへのアクセスを制御することができる。同様に、NANDストリングの行の対応する選択トランジスタのコントロールゲート32は、同一選択線にすべて接続されている。
【0033】
NANDストリング内のアドレス指定されたメモリトランジスタ10が、プログラム中に読み出されたりベリファイされたりする場合には、そのコントロールゲート30に適切な電圧が供給される。同時に、NANDストリング50のアドレス指定されていない残りのメモリトランジスタは、そのコントロールゲートに充分な電圧を印加することによって完全にオンに転換される。このようにして、NANDストリングの個々のメモリトランジスタのソースからそのソース端子54まで、同じく個々のメモリトランジスタのドレインについてはセルのドレイン端子56まで伝導経路が効果的に形成される。このようなNANDストリング構造を有するメモリデバイスは、米国特許第5,570,315号(特許文献9)、第5,903,495号(特許文献10)、第6,046,935号(特許文献11)に記載されている。
【0034】
図5Bは、図5Aに示されるようなNANDストリング50から構成されるメモリセルのNANDアレイ200の例を示す。NANDストリングの各列に沿って、ビット線36などのビット線は、各NANDストリングのドレイン端子56に接続される。NANDストリングの各バンクに沿って、ソース線34などのソース線は、各NANDストリングのソース端子54に接続される。さらに、NANDストリングのバンク内のメモリセルの行に沿ったコントロールゲートは、ワード線42などのワード線に接続される。NANDストリングのバンク内の選択トランジスタの行に沿ったコントロールゲートは、選択線44などの選択線に接続される。NANDストリングのバンク内のメモリセルの行全体は、NANDストリングのバンクのワード線および選択線にかかる適切な電圧によってアドレス指定することができる。NANDストリング内のメモリトランジスタが読み出される場合、ストリング内の残りのメモリトランジスタは、その関連するワード線を介して確実にオンに転換され、ストリングを通って流れる電流は、本質的に、読み出されるセルに蓄積される電荷のレベルに依存するようになっている。
【0035】
検知回路および技術
図6は、メモリセルのアレイにわたってp個のセンスモジュールのバンクを含む、図1に示される読み出し/書き込み回路270Aおよび270Bを示す。並列に動作するp個のセンスモジュール480のバンク全体によって、行に沿ったp個のセル10のブロック(またはページ)を並列に読み出したりプログラムしたりすることが可能になる。本質的に、センスモジュール1はセル1の電流I1 を検知し、センスモジュール2はセル2の電流I2 を検知し・・・センスモジュールpはセルpの電流Ip を検知することになるなど、以下同様である。ソース線34から集約ノードCLSRCに、さらにそこから接地に流れるそのページのすべてのセル電流iTOT は、p個のセルのすべての電流の総和となる。従来のメモリアーキテクチャでは、共通ワード線を有するメモリセルの行は2つ以上のページを形成し、ページ内のメモリセルは並列に読み出しおよびプログラムされる。2つのページを有する行の場合、一方のページは偶数ビット線によってアクセスされ、他方のページは奇数ビット線によってアクセスされる。検知回路のページは、偶数ビット線か奇数ビット線かに一度に接続される。その場合、読み出し/書き込み回路270Aおよび270Bを個々のページにそれぞれ多重化するように、ページマルチプレクサ250Aおよび250Bが設けられる。
【0036】
現在製造されている56nm技術に基づくチップではp>64,000であり、43nm32Gbit×4のチップではp>150,000である。好適な実施形態では、ブロックはセルの一連の行全体である。これはいわゆる「全ビット線」アーキテクチャであり、ページは隣接するビット線にそれぞれ接続される隣接するメモリセルの行から構成されている。別の実施形態では、ブロックは、行の中のセルのサブセットである。例えば、セルのサブセットは、行全体の2分の1または行全体の4分の1であってもよい。セルのサブセットは、一連の隣接するセルまたは1つおきのセルあるいは所定数おきのセルであってもよい。各センスモジュールは、ビット線を介してメモリセルに接続され、メモリセルの伝導電流を検知する検知増幅器を含む。一般に、読み出し/書き込み回路がメモリアレイの両側に分配されている場合、p個のセンスモジュールのバンクは、2セットの読み出し/書き込み回路270Aと270Bとの間に分配されることになる。
【0037】
図7は、図6に示されるセンスモジュールの好ましい編成を概略的に示す。p個のセンスモジュールを含む読み出し/書き込み回路270Aおよび270Bは、読み出し/書き込みスタック400のバンクに分けられる。
【0038】
図8は、図7に示される読み出し/書き込みスタックをさらに詳細に示す。各読み出し/書き込みスタック400は、k本のビット線のグループ上で並列に動作する。1つのページがp=r*k本のビット線を有する場合、r個の読み出し/書き込みスタック400−1・・・400−rが存在することになる。本質的に、このアーキテクチャは、スペースを節約するためにk個のセンスモジュールの各スタックが共通プロセッサ500によって操作されるようになっている。共通プロセッサ500は、センスモジュール480およびデータラッチ430に配置されるラッチに記憶される更新データをラッチの電流値および状態マシン112からの制御に基づいて計算する。共通プロセッサの詳細な説明は、その全体が本願明細書において参照により援用されている、2006年6月29日付の米国公開特許出願第2006/0140007号(特許文献16)に開示されている。
【0039】
並列に動作する区分された読み出し/書き込みスタック400のバンク全体は、行に沿ったp個のセルのブロック(またはページ)を並列に読み出したりプログラムしたりできるようにする。したがって、セルの行全体についてp個の読み出し/書き込みモジュールが存在することになる。各スタックはk個のメモリセルを操作しているので、バンク内の読み出し/書き込みスタックの総数は、r=p/kで与えられる。例えば、rがバンク内のスタック数である場合、p=r*kである。1つの例示的なメモリアレイは、p=150,000、k=8を有してもよく、したがってr=18,750である。
【0040】
400−1などの各読み出し/書き込みスタックは、本質的に、k個のメモリセルのセグメントを並列に操作するセンスモジュール480−1〜480−kのスタックを含む。ページコントローラ410は、配線411を介して読み出し/書き込み回路370に制御およびタイミング信号を提供する。ページコントローラは、配線311を介してメモリコントローラ310にそれ自体依存している。各読み出し/書き込みスタック400間の通信は、相互接続スタックバス431によって達成され、ページコントローラ410によって制御される。制御線411は、ページコントローラ410から読み出し/書き込みスタック400−1の部品に制御およびクロック信号を提供する。
【0041】
好適な配置では、スタックバスは、共通プロセッサ500とセンスモジュールのスタック480との間の通信のためのSAバス422と、プロセッサとデータラッチのスタック430との間の通信のためのDバス423とに区分されている。
データラッチのスタック430は、そのスタックに関連する各メモリセルについて1つのデータラッチ430−1〜430−kから構成されている。I/Oモジュール440は、データラッチがI/Oバス231を介して外部とデータを交換することができるようにする。
さらに、共通プロセッサは、エラー状態などのメモリ動作の状態を示す状態信号を出力する出力507も含む。状態信号を使用して、ワイヤードOR構成でフラグバス509に接続されるn形トランジスタ550のゲートを駆動する。フラグバスは、コントローラ310によってプリチャージされるのが好ましく、状態信号が読み出し/書き込みスタックのいずれかでアサートされるとプルダウンされることになる。
【0042】
多状態メモリ区分化の例
メモリセルがそれぞれ複数ビットのデータを記憶する不揮発性メモリを、図3に関連してこれまで説明した。特定の例は、電界効果トランジスタのアレイから形成されるメモリであって、各電界効果トランジスタはそのチャネル領域とそのコントロールゲートとの間に電荷蓄積層を有する。電荷蓄積層またはユニットは、各電界効果トランジスタのしきい値電圧の範囲のもとになる電荷の範囲を蓄積することができる。可能なしきい値電圧の範囲は、しきい値ウィンドウの範囲にわたる。しきい値ウィンドウが複数の小領域またはゾーンのしきい値電圧に区分される場合、それぞれの分解可能なゾーンを使用してメモリセルの異なるメモリ状態を表す。1つ以上のバイナリビットによって複数のメモリ状態を符号化することができる。例えば、4つのゾーンに区分されるメモリセルは、2ビットのデータとして符号化することができる4つの状態をサポートすることができる。同様に、8つのゾーンに区分されるメモリセルは、3ビットのデータとして符号化することができる8つのメモリ状態をサポートすることができるなど、以下同様である。
【0043】
図9(0)〜(2)は、4状態メモリセルの集団をプログラムする例を示す。図9(0)は、それぞれメモリ状態「0」、「1」、「2」および「3」を表すしきい値電圧の4つの特異的な分布にプログラム可能なメモリセルの集団を示す。図9(1)は、消去されたメモリの「消去」しきい値電圧の最初の分布を示す。図9(2)は、メモリセルの多くがプログラムされた後のメモリの例を示す。本質的に、セルは、最初に「消去」しきい値電圧を有し、プログラミングによってさらに高い値となってDV1 、DV2 およびDV3 によって画定される3つのゾーンのうちの1つに変化することになる。このようにして、各メモリセルは、3つのプログラム状態「1」、「2」および「3」のうちの1つにプログラムするか、あるいは「消去」状態でプログラムされないままにすることができる。メモリがさらにプログラムされるにつれて、図9(1)に示される「消去」状態の最初の分布は狭くなっていき、消去状態は「0」状態によって表される。
【0044】
下位ビットおよび上位ビットを有する2ビット符号を使用して、4つの各メモリ状態を表すことができる。例えば、「0」、「1」、「2」および「3」状態は、それぞれ「11」、「01」、「00」および「10」によって表される。2ビットデータは、「フルシーケンス」モードで検知することによってメモリから読み出されてもよい。このモードでは、3つのサブパスでそれぞれ読み出し境界しきい値DV1 、DV2 およびDV3 に対して検知することによって2ビットがまとめて検知される。
【0045】
図10(0)〜(2)は、8状態メモリセルの集団をプログラムする例を示す。図10(1)は、それぞれメモリ状態「0」〜「7」を表すしきい値電圧の8つの特異的な分布にプログラム可能なメモリセルの集団を示す。図10(1)は、消去されたメモリの「消去」しきい値電圧の最初の分布を示す。図10(2)は、メモリセルの多くがプログラムされた後のメモリの例を示す。本質的に、セルは、最初に「消去」しきい値電圧を有し、プログラミングによってさらに高い値となってDV1 〜DV7 によって画定される7つのゾーンのうちの1つに変化することになる。このようにして、各メモリセルは、7つのプログラム状態「1」〜「7」のうちの1つにプログラムするか、あるいは「消去」状態でプログラムされないままにすることができる。メモリがさらにプログラムされるにつれて、図10(1)に示される「消去」状態の最初の分布は狭くなっていき、消去状態は「0」状態によって表される。
【0046】
下位ビット、中位ビット、および上位ビットを有する3ビット符号を使用して、8つの各メモリ状態を表すことができる。例えば、「0」、「1」、「2」、「3」、「4」、「5」、「6」および「7」状態は、それぞれ「111」、「011」、「001」、「101」、「100」、「000」、「010」、および「110」によって表される。3ビットデータは、「フルシーケンス」モードで検知することによってメモリから読み出されてもよい。このモードでは、7つのサブパスでそれぞれ読み出し境界しきい値DV1 〜DV7 に対して検知することによって3ビットがまとめて検知される。
【0047】
ページまたはワード線プログラミングおよびベリファイ
ページをプログラムする1つの方法は、フルシーケンスプログラミングである。ページのすべてのセルは、最初消去状態にある。したがって、ページのすべてのセルは消去状態からその目標状態へと並列にプログラムされる。目標状態として「1」状態を有するこれらのメモリセルは、一度「1」状態にプログラムされるとそれ以上プログラムされるのを禁止されることになるが、目標状態「2」あるいはそれ以上を有する他のメモリセルは、さらにプログラムされることになる。最終的に、目標状態として「2」を有するメモリセルについてもそれ以上プログラムされるのをロックされることになる。同様に、進行するプログラミングパルスによって、目標状態「3」〜「7」を有するセルが実現されてロックされる。
【0048】
図11は、4状態メモリセルを目標メモリ状態にプログラムするための従来の方法を示す。プログラミング回路は、一般に、一連のプログラミングパルスを選択されたワード線に印加する。このようにして、コントロールゲートがワード線に接続されるメモリセルのページをまとめてプログラムすることができる。使用されるプログラミングパルストレインは、メモリセルの電荷蓄積ユニット内にプログラムされる蓄積する電子に対抗するために、増加する周期または振幅を有してもよい。プログラム中、プログラミング電圧VPGM がページのワード線に印加される。プログラミング電圧VPGM は、初期電圧レベルVPGM0から開始される階段波形の形態をとる一連のプログラミング電圧パルスである。プログラム中のページの各セルは、この一連のプログラミング電圧パルスを受け、各パルスではセルの電荷蓄積素子に増加する電荷を加えようとする。プログラミングパルスの間で、セルは読み直されてそのしきい値電圧を決定する。この読み直しプロセスは、1つ以上の検知動作を含んでもよい。そのしきい値電圧がベリファイされて目標状態に対応するしきい値電圧ゾーン内にあった場合には、そのセルに対してプログラミングが停止する。ページのメモリセルがその目標状態にプログラムされるとそのセルはプログラムが禁止されるが、他のセルはページのセルがすべてプログラムベリファイされるまでプログラムされ続ける。
【0049】
一連の交互に実施されるプログラム/ベリファイサイクルを使用している従来のプログラミング技術は、相対的に大きなVPGM の変化に応答してセルのしきい値電圧が最初に急速に増加するというプログラミングプロセスにおける不確実性に対処することである。しかし、フローティングゲートにプログラムされる電荷がシールドとして働いて電子をフローティングゲート内にさらにトンネルさせる有効電界を減少させるにつれて、この増加は衰えて行き最終的に止まる。
プログラム/ベリファイプログラミング技術の欠点は、ベリファイサイクルは時間がかかる上に性能に影響を与えることである。この問題は、複数のビットを記憶可能なメモリセルの実施例によって深刻化する。本質的に、ベリファイは、メモリセルの可能な複数の状態のそれぞれに対して実施される必要がある。16の可能なメモリ状態を有するメモリの場合、これは各ベリファイステップが少なくとも16検知動作まで担うことになることを意味する。他の一部の方式では、これが数倍にもなり得る。したがって、メモリがますます多くの状態数に区分化されると、プログラム/ベリファイ方式のベリファイサイクルはますます時間がかかるようになる。
【0050】
図12は、従来の交互のプログラム/ベリファイアルゴリズムを使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。例えば、Nビットメモリでは、区分化は、NS =2N 状態になる。プログラムパルスの数は、少なくとも状態の数NS と同じである。一部のアルゴリズムでは、k個のプログラミングパスが必要なこともあり、ここでkは1〜4であってもよい。多状態メモリの場合、各ベリファイ動作は各メモリ状態に1つの2N −1を乗じる。したがって、ベリファイの推定数は、状態の数の2乗である22Nに比例する。表から分かるように、3ビットセルの場合、公称ベリファイサイクル数はすでに非常に多く、これは他の方式で必要な追加の検知を含んでいない。4ビットセルの場合、ベリファイサイクル数は許容できないほどとなる。
したがって、ベリファイサイクル数の少ない改善されたプログラミング性能を有するメモリデバイスが必要である。
【0051】
インデックスプログラミング技術
本発明の1つの一般的な態様によれば、メモリセルのグループに対して並列に動作するマルチパスインデックスプログラミング方法は、後のプログラミングパスにおいて、プログラムインデックスに応じてセルのプログラミングを実施したりあるいはプログラミングを禁止したりすることができるように、セルが受け取った最後のプログラミング電圧レベルなどの情報を提供するために、各セルについてプログラムインデックスを維持するステップを含む。
各プログラミングパスにおいて、階段パルストレインの形態をとる一連の増加するパルスとしてプログラミング電圧をメモリセルのグループに印加して、パルスカウントが増加するに伴ってメモリセルが増加するプログラミング電圧を受けるようにするのが好ましい。好適な実施形態では、それぞれ別々のプログラミング電圧レベルは、パルスカウントまたはパルス数として表現するのが便利である。同様に、プログラムインデックスもパルス数によって表現される。
メモリセルのグループのプログラミングパスでは、そのグループのセルのプログラムインデックスを使用して、増加するそれぞれのパルスに応じてプログラミングを許可するか禁止するかを制御する。
【0052】
図13は、インデックスプログラミング方法の一般的な方式を示す流れ図である。
ステップ700:並列にプログラムされるメモリセルのグループを提供する。各メモリセルは個別の目標しきい値電圧レベルにプログラム可能である。
ステップ710は、ステップ720、ステップ730およびステップ732をさらに含むインデックスプログラミングである。
ステップ720:プログラム中にグループの各メモリセルのプログラムインデックスを提供する。メモリセルのプログラムインデックスは、メモリセルをプログラムするのに最後に使用されたプログラミング電圧レベル、または次のプログラミングでメモリセルが受け取ることを許される最大プログラミング電圧レベルを示す。プログラムインデックスは、読み出し/書き込み回路と協働する追加のラッチ回路によって実施されるのが好ましい。
ステップ730:プログラミングパスで一連の増加する電圧パルスとして増加するプログラミング電圧をメモリセルのグループに印加する。
ステップ740:メモリセルのプログラムインデックスに応じて、増加するプログラミング電圧レベルに基づいてプログラミングパスの間にプログラムされるメモリセルのプログラミングを禁止あるいは許可する。
プログラミング電圧が増加してプログラミング電圧がセルのプログラムインデックスによって示されるレベルに到達したら、並列にプログラムされているグループの各メモリセルを過剰にプログラムしないようすることが分かる。このようにして、従来のプログラミング方法とは異なり、それぞれすべてのプログラミングパルス間でベリファイステップを有する必要がない。
【0053】
第1の実施例では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から得られる。プログラムインデックスは、プログラムパスの間にプログラムが禁止される前にセルに印加される最後のプログラミング電圧レベルまたはパルス数を記憶する。各セルのプログラムインデックスは、従来のインターリーブプログラム/ベリファイ方法でプログラミングおよびベリファイステップをインターリーブすることによって設定される。グループ内のセルのプログラミングは、セルがプログラムベリファイされて最後のパルス数がそのプログラムインデックスとして記録されたら禁止される。この実施例がさらに多くのベリファイステップを担うこともあるが、どのセルも過剰にプログラムする可能性は低い。その結果、各セルについて設定されたプログラムインデックスを後のプログラミングパスでうまく利用してベリファイステップを省くことができる。
メモリセルのプログラムインデックスを提供することの第1の実施例では、メモリセルが目標のしきい値電圧レベルとプログラムベリファイされるまで、メモリセルは各パルスの後にベリファイが続く一連のプログラミングパルスによってプログラムされる。メモリセルがプログラムベリファイされると、メモリセルのプログラムインデックスは最後のプログラミング電圧と同じになるように設定される。
【0054】
図14Aは、第1の実施例によるメモリセルのプログラムインデックスを提供することを示す流れ図である。したがって、図13に示されるステップ720に対応するステップ720’は、ステップ721とステップ722とをさらに含む。
ステップ721:目標しきい値電圧レベルがプログラムベリファイされるまでメモリセルを交互にプログラムおよびベリファイする。
ステップ722:メモリセルが目標しきい値電圧レベルとプログラムベリファイされるプログラミング電圧レベルと同じ値にプログラムインデックスを設定する。
第1の実施例は、メモリセルが各プログラミングパルスの後にベリファイされる従来のプログラミング技術によってプログラムインデックスを得ることであると分かる。この方法はその目標に近いセルの最も正確なプログラミングを提供するが、ベリファイ動作がかなり多くなるという犠牲を払うことになる。
【0055】
第2の実施例では、セルのプログラムインデックスは、最初にセルの推定最大プログラミング電圧レベルに設定され、目標状態から所定の不足分の範囲内にあるような目標状態に近いがそれを超えない状態にプログラムする。階段パルストレインがグループの各セルに印加され、セルのプログラムインデックスによって示される予測最大プログラミング電圧レベルに達すると、セルはそれ以上プログラムされるのを禁止される。階段パルストレインのその後のパルスは、禁止されたセルに影響を及ぼさないことになる。プログラミングパスの最後で、グループの各セルはそれぞれの目標状態付近にプログラムされ、各プログラムインデックスは、各セルが受け取った最後のプログラミング電圧レベルを反映することになる。
【0056】
図14Bは、メモリセルのプログラムインデックスを得ることの第2の実施例を示す流れ図である。したがって、図13に示されるステップ720に対応するステップ720’’は以下を含む。
ステップ720’’:セルの目標状態に近いがそれを超えないようにセルをプログラムすると推定されるプログラミング電圧レベルまたは等価なパルス数にメモリセルのプログラムインデックスを設定する。
第3の実施形態では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から推定される。特に、メモリセルは、それぞれパルスの後にベリファイが続く一連のプログラミングパルスによって、消去状態から所与のしきい値電圧レベルにプログラムされ、所与のしきい値電圧レベルはチェックポイントとして働き、所与の目標しきい値電圧レベルのプログラムインデックスまたはプログラミング電圧レベルが得られる予測関数を較正する。
【0057】
図14Cは、1つ以上のチェックポイントによって較正される予測関数を使用してメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。したがって、図13に示されるステップ720に対応するステップ720’’’は以下を含む。
ステップ720’’’:1つ以上のチェックポイントによって較正される予測関数によってメモリセルのプログラムインデックスを設定する。
予測技術によってセルのプログラムインデックスを得ることの第3の実施例を、図14D〜図21に関連してさらに詳細に説明する。
【0058】
図14Dは、1つの実施形態によるメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。したがって、図13に示されるステップ720に対応するステップ720’’’は、ステップ723〜ステップ727をさらに含む。
ステップ723:メモリセルを目標しきい値電圧レベルにプログラムすると予測されるプログラミング電圧レベルを生成するメモリセルの所定の予測関数を提供する。
ステップ724:対応するチェックポイントプログラミング電圧レベルによってプログラム可能な指定のチェックポイントしきい値電圧レベルで、メモリセルの所定の関数のチェックポイントを指定する。
ステップ725:チェックポイントしきい値電圧レベルがプログラムベリファイされるまでメモリセルを交互にプログラムおよびベリファイすることによって、対応するチェックポイントプログラミング電圧値を決定する。
ステップ726:チェックポイントしきい値電圧レベルで評価される場合に、所定の関数を較正して決定された対応するチェックポイントプログラミング電圧レベルを生成する。
ステップ727:メモリセルの目標しきい値電圧レベルで所定の関数を評価することによってプログラムインデックスを推定する。
メモリセルのプログラムインデックスを提供することの第2の実施形態は、複数のチェックポイントを使用してプログラムインデックスの精度を向上させる。
【0059】
図14Eは、別の実施形態によるメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。
したがって、図13に示されるステップ720に対応するステップ720’’’は、ステップ728をさらに含む。
ステップ728:より多くのチェックポイントを使用してさらに精度の高いプログラミングを得ること以外は、図14Dのステップ723〜727と同様である。
【0060】
チェックポイントからの予測プログラミング
図15、図16および図17は、図14Aのステップ720’’’に示される予測プログラミングをさらに詳細に説明する。
メモリセルがしきい値電圧レベルの範囲のうちの1つに個別にプログラム可能であるメモリセルのアレイを有する不揮発性メモリでは、所与のメモリセルを所与の目標しきい値電圧レベルにプログラムするためにどんなプログラミング電圧レベルを印加する必要があるかを予測する所定の関数が提供される。このようにして、ベリファイ動作を実施する必要がなくなることによってプログラミング動作の性能が大幅に向上する。
【0061】
1つの実施形態では、所与の目標しきい値電圧レベルのプログラミング電圧レベルを比例的に生成する線形関数によって所定の関数が近似される。線形関数は、メモリアレイのセルの集団に適用可能な所定の平均値によって与えられる傾きを有する。線形関数は、所与のメモリセルの線形関数上にチェックポイントを予め定めることによって所与のメモリについて一意的に決定される。チェックポイントは、メモリセルを指定されたしきい値電圧レベルにプログラムする実際のプログラミング電圧に基づいている。チェックポイントは、メモリセルの最も低いプログラム状態の1つに対応するのが好ましい。メモリセルは、例えば、従来のプログラム/ベリファイプログラミング技術を使用することによって、まずチェックポイントにプログラムされる。このようにして、メモリセルを指定されたメモリ状態にプログラムするのに必要な実際のプログラミング電圧のチェックポイント値が決定される。したがって、所定の関数は、メモリセルを目標しきい値電圧レベルにプログラムするプログラミング電圧値を決定するのに使用される前にチェックポイントしきい値電圧レベルで評価されたときに、較正されてチェックポイントプログラミング電圧値を生成する。
予測プログラミング技術は、目標状態へのプログラミングがベリファイ動作を必要としない点で有利である。ベリファイ動作は、メモリの可能な状態すべてではなくチェックポイント状態をベリファイする必要があるだけである。
【0062】
図15は、メモリセルを目標しきい値電圧レベルにプログラムするのに必要なプログラミング電圧を供給するために使用される所定の関数の好適な実施形態を示す。所定の関数は線形関数によって近似され、この線形関数では、目標しきい値レベルVT がプログラミング電圧VPGM の関数として以下の関係によって与えられる。
VT (VPGM )=<Slope>VPGM +VT (0) 数式(1)
(ここで、<Slope>=ΔVT /ΔVPGM )
逆に、
VPGM (VT )=1/<Slope>[VT −VT (0)] 数式(2)
【0063】
好適な実施形態では、平均の<Slope>は、類似する製造バッチ(製造ロット)からの工場サンプルでテストすることによって予め決定することができる。例えば、テストすることによって約0.1の標準偏差で平均が0.9の<Slope>が生成されてもよい。VT (0)はセルに依存し、各セルの予測プログラミングの前に各メモリセルからのチェックポイントによって予め決定される。<Slope>およびVT (0)が分かると、メモリセルの所定の関数が定義され、数式(2)を使用して目標しきい値電圧レベルにプログラムするのに必要なプログラミング電圧レベルを得ることができる。
一般に、所定の関数は、線形関数によって近似される必要はない。所定の関数がしきい値電圧レベルの広範囲を正確にカバーするようになっている場合には、所定の関数は、工場で製造バッチをテストすることによって決定し、任意の適切な関数によってモデル化することができる。
【0064】
各メモリセルの予測関数のチェックポイント較正
数式(1)または(2)のVT (0)はセルに依存し、消去状態のしきい値電圧レベルよりもわずかに高いチェックポイントしきい値電圧を指定し、パルス間で所与のセルをチェックポイントに対して交互に実際にプログラムおよびベリファイすることによって予め決定される。このようにして、所与のセルをチェックポイントしきい値電圧にプログラムするのに必要な実際のプログラミング電圧が分かる。次に、この実際の座標を使用して数式(2)のVT (0)の値を求める。
図14A、ステップ722、ステップ723およびステップ724は、所定の関数のチェックポイントを使用してメモリセルの所定の関数を較正する一般的な原理を示す。
【0065】
図16は、消去状態の上の第1のプログラム状態に対応するチェックポイントの好ましい指定を示す。次の項の説明で分かるように、各パルスがセルを次のメモリ状態にプログラムすることができるステップサイズをプログラミングパルストレインが有する場合、チェックポイントは較正された基本状態として働くことになる。当然ながら、セルのプログラムデータがセルに消去状態のままであることを求める場合、チェックポイントは必要ないことになる。
ステップ724’:第1のプログラムされたメモリ状態のしきい値電圧レベルをメモリセルの所定の関数のチェックポイントとして指定する。
【0066】
したがって、メモリセルのチェックポイント(0)は、消去状態に関連すると見なされるしきい値電圧レベルよりもわずかに高いしきい値電圧レベル(チェックポイントしきい値電圧レベル)にあるように指定される。最初のプログラミングパスの第1の段階で、一連の増加するプログラミング電圧パルスが印加されて、チェックポイントしきい値電圧レベルに向けてメモリセルをプログラムする。チェックポイントしきい値電圧レベルがプログラムベリファイされるまで、プログラミングモードは、交互にプログラムおよびベリファイを行う従来のモードにすることができる。チェックポイント(0)の座標[VPGM 、VT ]チェックポイント(0) のセットが分かると、数式(2)の形態をとる所定の関数(図15参照)をVT (0)について解き、完全に指定することができる。
【0067】
数式(2)の形態をとる所定の関数が指定された後、続いて第2段階で所定の関数を使用する予測モードでメモリセルをプログラムして、目標しきい値電圧レベルまたは目標メモリ状態の推定プログラミング電圧レベルを供給することができる。
1つ以上のチェックポイントによって較正される予測プログラミングは、本願明細書において参照により援用されている、本願と同じ発明者によって2007年4月10日に出願された同時係属中の「PREDICTIVE PROGRAMMING IN NON-VOLATILE MEMORY 」という米国特許出願第11/733,694号(特許文献17)、および本願と同じ発明者によって2007年4月10日に出願された同時係属中の「NON-VOLATILE MEMORY WITH PREDICTIVE PROGRAMMING 」という米国特許出願第11/733,706号(特許文献18)にも開示されている。
【0068】
図17は、最初のプログラミングパスで使用され各セルのプログラムインデックスを構築する予測プログラミングを示す。最初のプログラミングパスは2つの段階にある。示される例では、第1の段階はメモリセルをプログラムし、第3の実施例(図14C参照)の予測プログラミング方法を使用してプログラムインデックスを維持する。予測プログラミングは、所与のセルを所与の目標状態にプログラムするのに必要な推定プログラミング電圧を供給する各セルの所定の関数を使用する。
【0069】
最初のプログラミングパスの第1の段階は、各セルのプログラミング特性に従って各セルの所定の関数を較正することである。指定されるしきい値電圧またはチェックポイントに対して各セルを交互にプログラム/ベリファイすることによってこれは達成される。チェックポイントは、消去状態のしきい値電圧近くのしきい値電圧にあることが好ましいので、一般に、交互にプログラムおよびベリファイをすることは相対的にあまりパルスを含まない。パルス間の各ベリファイステップは、チェックポイントの1つの境界値を検知するだけである。
【0070】
第2の段階では、各セルは、次のメモリ状態から周知の位置にあるチェックポイントからプログラムされ続けることになる。したがって、所定の関数は、従来の追跡および誤差方法でパルス間においてベリファイする必要なしに、所与の目標状態にセルをプログラムすると見込まれるプログラミング電圧を予測することができることになる。各セルのプログラムインデックスは、最初のプログラミングパスでセルをプログラムするのに使用される最後のプログラミング電圧レベルまたはパルス数となる。
【0071】
所定のステップサイズを有するパルストレインとしてのプログラミング電圧
好適な実施形態では、プログラミング電圧ステップサイズは、追加の各パルスがメモリセルを次のメモリ状態にプログラムすることになるように調整される。16の可能なメモリ状態を有するメモリセルの例の場合、パルスサイズは300mVであってもよい。このようにして、一方の追加パルスがメモリを状態(1)にプログラムし、他方の追加パルスがメモリを状態(2)にプログラムすることになるなど、以下同様である。したがって、所与のメモリ状態にプログラムすることは、状態(0)からの状態の数をカウントすることと、同じ数のパルスを供給することとに短縮することができる。例えば、状態(0)でフラグが一度設定されてもよく、その後、目標状態が状態(0)から離れている状態の数と同じパルスの数によってプログラムすることができる。
他のプログラミングパルスサイズも可能である。例えば、16の可能なメモリ状態を有するメモリセルの場合、パルスサイズは150mVであってもよい。その場合、1つのメモリ状態から次の隣接するメモリ状態までプログラムするのに2パルスかかることになる。これによって、プログラミングにおいてより細かい分解能が提供されることになり、目標しきい値からのマージンが使用される一部の実施例で役立つ。
【0072】
図18Aは、各追加のパルスがメモリセルを次のメモリ状態にプログラムするようなステップサイズを有するプログラミング電圧を設定することを示す流れ図である。図13に示されるステップ710は、以下をさらに含む。
ステップ712:振幅が増加するパルストレインの形態で時間とともに増加する振幅を有するプログラミング電圧を供給する。
ステップ714:メモリセルが1つのプログラムされたメモリ状態から次のプログラムされたメモリ状態まで連続するパルスによってプログラムされるようにパルス間の振幅増加を調整する。
【0073】
図18Bは、最初のプログラミングパスを受けるメモリセルのしきい値電圧を概略的に示す。メモリセルは、低いしきい値電圧レベルのうちのいずれか1つでもよい消去状態から開始する。最初のプログラミング段階の間に、一連のプログラム/ベリファイサイクル(例えば、x個のプログラムパルスとn*x個のベリファイステップとの合計)によって、メモリセルが消去状態から状態(0)にプログラムされることになる。一般に、各メモリセルのxは、互いに独立している。個々のセルをどれ程完全に消去したかおよび他の要因のために、個々のセルは指定されたチェックポイントに到達するためのプログラミングパルスの数によって異なる場合もある。例えば、しきい値電圧が低い「遅い」セルは、高いしきい値電圧を有する「通常」セルよりも状態(0)に到達するのに多くのパルスをかけることになる。完全に消去される「非常に遅い」セルはしきい値電圧がさらに低くなり、状態(0)にするのにさらに多くのプログラミングパルスをかけることになる。メモリセルが状態(0)になると、予測プログラミングモードが始まり、追加の各パルスはメモリセルを次のメモリ状態にプログラムすることになる。
【0074】
図19は、メモリセルのプログラムインデックスを設定することの好適な実施例を示す流れ図を示す。プログラムインデックスは、図8に示されるメモリセルに関連するデータラッチ430のうちの1つに維持される。図13に示されるステップ720は、以下をさらに含む。
ステップ752:メモリセルのプログラムインデックスを記憶するラッチを提供する。
ステップ754:チェックポイント状態から目標状態にメモリセルをプログラムすると見込まれるパルスの数の形態で最初に目標状態をラッチに記憶する。例えば、目標状態が状態(5)である場合、状態(5)がラッチに記憶されることになる(バイナリ値0101)。
ステップ756:メモリセルを消去状態からチェックポイント状態にプログラムするのに必要なパルスの数をラッチに累積することによってメモリセルのプログラムインデックスを計算する。プログラムインデックスは、メモリセルを目標状態にプログラムすることが見込まれるパルスの数を示す。例えば、メモリセルを消去状態からチェックポイントにプログラムする際にメモリセルにパルスが印加される毎に、ラッチ内のプログラムインデックスは1だけ増加される。
【0075】
図20(A)、(B)および(C)は、それぞれ図18Bに示される「通常」セル、「遅い」セルおよび「非常に遅い」セルについて図19のラッチ動作を示す。
図20(A)は、図18Bに示される例示的な「通常」メモリセルのプログラムインデックスを計算するラッチ動作を示す。「通常」メモリセルは、消去された集団のしきい値電圧の範囲の中央付近にあるしきい値電圧まで消去される。メモリセルは、目標状態ラッチのデータによって示される状態(3)にプログラムされることになる。したがって、プログラムインデックスを維持するデータラッチは、最初に「3」に設定される。メモリセルを消去状態からチェックポイント状態(0)にするためのすべてのプログラミングパルスで、データラッチ内の値は1だけ増加される。チェックポイントがプログラムベリファイされると増加は止まる。この例では、1パルス後にこれが発生し、ラッチ内のプログラムインデックスが「4」に増加される。これは、このセルが4つのパルスで状態(3)にプログラムされると見込んでいることを意味する。このセルをチェックポイントから状態(3)にプログラムするために、合計が4パルスとなる追加の3つのパルスが印加される。セルがプログラムインデックスと等しいパルス数を受けたらそのセルはプログラムすることを禁止されるが、ページ内の他のセルはプログラムされ続けることもできる。これは「P」から「I」に進んで行くプログラム/禁止状況によって示される。
【0076】
図20(B)は、図18Bに示される例示的な「遅い」メモリセルのプログラムインデックスを計算するラッチ動作を示す。「遅い」メモリセルは、消去された集団のしきい値電圧の範囲の中央よりも低い位置にあるしきい値電圧まで消去された。メモリセルは、同様に、目標状態ラッチのデータによって示される状態(3)にプログラムされることになる。したがって、プログラムインデックスを維持するデータラッチは、最初に「3」に設定される。メモリセルを消去状態からチェックポイント状態(0)にするためのすべてのプログラミングパルスで、データラッチ内の値は1だけ増加される。チェックポイントがプログラムベリファイされると増加は止まる。この例では、2パルス後にこれが発生し、ラッチ内のプログラムインデックスが「5」に増加される。これは、このセルが5つのパルスで状態(3)にプログラムされると見込んでいることを意味する。このセルをチェックポイントから状態(3)にプログラムするために、合計が5パルスとなる追加の3つのパルスが印加される。セルがプログラムインデックスと等しいパルス数を受けたらそのセルはプログラムすることを禁止されるが、ページ内の他のセルはプログラムされ続けることもできる。これは「P」から「I」に進んで行くプログラム/禁止状況によって示される。
【0077】
図20(C)は、図18Bに示される例示的な「非常に遅い」メモリセルのプログラムインデックスを計算するラッチ動作を示す。「非常に遅い」メモリセルは、消去された集団のしきい値電圧の範囲の低いほうの末端部にあるしきい値電圧まで消去される。メモリセルは、同様に、目標状態ラッチのデータによって示される状態(3)にプログラムされることになる。したがって、プログラムインデックスを維持するデータラッチは、最初に「3」に設定される。メモリセルを消去状態からチェックポイント状態(0)にするためのすべてのプログラミングパルスで、データラッチ内の値は1だけ増加される。チェックポイントがプログラムベリファイされると増加は止まる。この例では、4パルス後にこれが発生し、ラッチ内のプログラムインデックスが「7」に増加される。これは、このセルが7つのパルスで状態(3)にプログラムされると見込んでいることを意味する。このセルをチェックポイントから状態(3)にプログラムするために、合計が7パルスとなる追加の3つのパルスが印加される。セルがプログラムインデックスと等しいパルス数を受けたらそのセルはプログラムされることを禁止されるが、ページ内の他のセルはプログラムされ続けてもよい。
【0078】
プログラム精度を向上させるとともにしきい値分布を絞り込むためのインデックスプログラミングを有する後続のプログラミングパス
本発明の別の一般的な態様によれば、メモリセルのグループに対して並列で動作するマルチパスインデックスプログラミング方法は、最初のプログラミングパスと、各セルのプログラムインデックスの構築とを含む。最初のプログラミングパスの後にベリファイステップおよび追加のプログラミングステップが続き、最初のパスによるいかなる不足もトリミングする。インデックスプログラミングを使用することによって、大幅に削減された数のベリファイ動作でマルチパスプログラミングが実施される。
【0079】
最初のプログラミングパスは、各セルのプログラムインデックスを構築しながら、セルのそれぞれの目標状態に近い不足分の範囲内にグループの各セルをプログラムもするのが好ましい。次に、1つ以上のその後のプログラミングパスにおいて、各セルはその不足分からその目標状態にさらにプログラムされる。パス内の各パルスの間ではないもののそれぞれの後続のプログラミングパスの前に、ベリファイステップによって完了されるのが好ましい。セルがまだベリファイされていない場合には、次のプログラミングパスで追加のプログラミングが可能になる。プログラミングパスの最後でセルのプログラムインデックスは、セルが受け取った最後のプログラミング電圧レベルを示す。ベリファイステップによってセルがその目標状態とベリファイされていないことが分かった場合、セルをその目標状態に向けてプログラムするために、プログラムインデックスは所定の量だけ増加されて、次のプログラミングパスで許容される予測最大プログラミング電圧を供給することになる。好適な実施形態では、プログラムインデックスはパルス数によって表現され、1つだけ増加される。次のプログラミングパスでは、メモリセルは、次にその更新されたプログラムインデックスに基づいて次のパルスを受けることになる。
【0080】
次のプログラミングパスの間に、ベリファイ後のセルはそれ以上プログラムされるのを禁止される。ベリファイ前のセルは、そのパスを越えて最後のプログラミングパスで1つのパルスによってプログラムすることができる。ベリファイステップおよびプログラミングパスは、グループ内のすべてのセルがそのそれぞれの目標状態とベリファイされるまで繰り返される。このように、ベリファイステップを実施する前にパルストレインの全行程を印加することによって、メモリセルのページをそのそれぞれの目標状態に並列に正しくプログラムすることが可能である。
インデックスプログラミングの利点は、プログラミングパスの各プログラミングパルスの間にベリファイステップを必要としないでセルのグループをプログラムすることができることである。インデックスプログラミングは、プログラミング動作の性能を大幅に向上させることになる。
【0081】
図21は、インデックスプログラミング方法の好適な実施形態を示す流れ図である。この方法は、各セルのプログラムインデックスを設定する最初のプログラミングパスのステップ810と、その後に、セルをそのそれぞれの目標状態にプログラムするためにベリファイおよびインデックスプログラムを行う追加のパスのステップ820とを含む。
ステップ800:並列にプログラムされるメモリセルのグループを提供する。各メモリセルは、一連の増加するプログラミング電圧パルスによってそれぞれの目標状態にプログラム可能である。
ステップ810:最初のプログラミングパスの間にグループの各セルのプログラムインデックスを構築する。プログラムインデックスは、各セルによって経験された最後のプログラミング電圧レベルをパルス数によって記憶している。
ステップ820は、プログラミングパスの後でベリファイし、次のプログラミングパスのプログラムインデックスを更新することである。ステップ820は、ステップ822、ステップ824、ステップ826およびステップ828をさらに含む。
ステップ830:グループ内のメモリセルをベリファイする。
ステップ840:グループ内の各メモリセルはそのそれぞれの目標状態とベリファイされるか? ベリファイされる場合はステップ870に進み、そうでない場合はステップ850に進む。
ステップ850:ベリファイ前の各メモリセルのプログラムインデックスを1だけ増加させる。
ステップ860:ベリファイ前の各メモリセルを各プログラムインデックスによって選択されたプログラミングパルスでプログラムする。好適な実施形態では、選択されたプログラミングパルスは、プログラムインデックスによって示されるものと同じパルス数を有する。別のプログラミングパスについてステップ830に進む。
ステップ870:グループ内のすべてのメモリセルがベリファイされ、そのそれぞれの目標状態にプログラムされる。
図13および図21に示されるインデックスプログラミング方法は、メモリアレイ200のメモリ動作を制御する制御回路110の状態マシン112(図1参照)で実施されるのが好ましい。
【0082】
図22は、最初のパスの後でプログラム結果をトリミングするための、図21のステップ820に示される追加のベリファイおよびプログラミングパスを示す。最初のプログラミングパスの目標状態への第1の試みの後で、各メモリセルはベリファイによってチェックされる。最初のプログラミングパスは目標状態を達成しないことが多い。たとえセルがその目標状態とのベリファイに失敗しても、第2のプログラミングパスで増加プログラミングをすることができる。ページ内のすべてのセルがそのそれぞれの目標状態とベリファイされるまで、ベリファイおよびプログラムプロセスは繰り返される。このようにして、以前のパスのプログラム結果をトリミングすることによって、セルはその目標状態に正確に収束していくことができる。一般に、1つまたは2つのトリミングパスが必要である。
【0083】
図23は、ベリファイ状態フラグを記憶するラッチを概略的に示す。好適な実施形態では、図8に示されるデータラッチ430の一部であるラッチ432を使用して、ベリファイ状態ビットを記憶する。例えば、セルがベリファイされると、ラッチ432のベリファイ状態ビットは「0」に設定される。このフラグによって、制御ロジックはこのセルにさらにプログラム/ベリファイ動作を行うことを禁止する。一方、セルがベリファイに失敗した場合は、このフラグによって制御ロジックは次のプログラミングパスでセルに追加のプログラミングを許可することになる。ベリファイ状態フラグの従来の実施例は、目標変更を通してのプログラム禁止を示すことである。その場合、セルがベリファイすると、目標データがセルにプログラムされてもう必要なくなる。したがって、目標データを示すデータラッチのデータ値は、「目標符号」から「消去符号」にリセットされ、セルがベリファイされた状態を指定する。本発明では、その後のプログラミングパスで目標データが必要なため、これがデータラッチに保持される。その代わりに、ベリファイ状態がベリファイ状態フラグに記憶される。
【0084】
図24Aは、ベリファイ状態フラグの使用によってベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。以下のステップ842およびステップ844は、図21のステップ840を実施する間に実施される。
ステップ842:ベリファイ結果に従ってラッチ内のベリファイ状態フラグを設定する。
ステップ844:メモリセルがベリファイされていないことを示すベリファイ状態フラグに応答してステップ850に進み、そうでない場合は図21のステップ870に進む。
第2の好適な実施形態では、ベリファイ前のメモリセルは、メモリセルのプログラムインデックスを所定の数だけ高くオフセットさせることによってプログラミングをさらにトリミングすることが可能になる。ほとんどの場合、オフセットの所定の数は1である。このようにして、次のプログラミングパスで、メモリセルは、追加の所定のパルス数によってプログラムされることになる。
【0085】
図24Bは、メモリセルのプログラムインデックスをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。図21のステップ850はステップ850’で置き換えられる。
ステップ850’:メモリセルがベリファイされていない場合、所定の数だけメモリセルのプログラムインデックスを増加して、その後のプログラミングパスでメモリセルが追加の所定のパルス数を受けることができるようにする。
第3の好適な実施形態では、ベリファイ前のメモリセルは、次のプログラミングパルスでパルスカウントを所定の数だけ低くオフセットさせることによってプログラミングをさらにトリミングすることが可能になる。このようにして、メモリセルは、追加の所定のパルス数によってプログラムされることになる。
【0086】
図24Cは、パルスカウントをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。図21のステップ850はステップ852で置き換えられる。
ステップ852:メモリセルがベリファイされていない場合、所定の数だけプログラミングパルスカウントを減少させて、その後のプログラミングパスでメモリセルが追加の所定のパルス数を受けることができるようにする。
【0087】
図25は、インデックスプログラミング技術を使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。例えば、Nビットメモリでは、区分化は、NS =2N 状態になる。プログラムパルスの数は、少なくとも状態の数NS と同じである。1.1)チェックポイントとのプログラムベリファイ、1.2)チェックポイントから目標状態への予測プログラミング、および2)1つ以上のトリミングパスについてのパルスおよびベリファイの数に対して推定値が与えられる。図12の最後の列は、ベリファイの総数の推定値を示す。本質的に、推定値はメモリ状態の数に比例することが分かる。この属性は、ベリファイの総数が状態の数の2乗に比例する図12に示される従来の方法を使用することからの属性と比較することができる。例えば、3ビットメモリセルの場合、ベリファイの総数は、従来の56と比較して約18であると推定される。ベリファイの総数が240と比較して34となる4ビットメモリの場合、この削減は一層劇的である。
【0088】
相関マルチパスプログラミング
図13に示されるインデックスプログラミング方法には、複数のプログラミングパスが必要である。インデックス作成および予測プログラミングのための最初のパスの後には、プログラムされたしきい値を目標状態付近にトリミングするために1つまたは2つのインデックスプログラミングパスが続く可能性が非常に高い。各プログラミングパスのパルスの数は、メモリ状態の数に少なくとも等しい。これは、各パルスが2つの状態間の距離に等しい量だけセルのしきい値電圧を増加させる粗い粒度を与えることになる。その結果、各メモリ状態のしきい値分布(例えば、図10を参照)は広がることになる。
【0089】
現在のアルゴリズムでは、より絞り込まれた各メモリ状態のしきい値電圧分布を得るために、各パスで一層細かいステップサイズを使用することが可能である。例えば、第1のトリミングで、パルスステップサイズを予測プログラミングで使用されるステップサイズと比較して2倍細かくすることができる。同様に、第2のトリミングで、パルスステップサイズを第1のトリミングで使用されるステップサイズと比較して2倍細かくすることができるなど、以下同様である。しかし、ステップサイズが半分に削減される度に、パルスの数、したがってプログラミング時間は2倍になることになる。
【0090】
本発明の別の態様によれば、メモリセルのグループは、複数のプログラミングパスで並列にプログラムされ、複数のパスではプログラミング電圧の相関が取られている。各プログラミングパスは、共通のステップサイズを有する階段パルストレインの形態をとるプログラミング電圧を使用し、連続するそれぞれのパスは、その前のパスの階段パルストレインから所定のオフセットレベルだけオフセットしている階段パルストレインを有する。所定のオフセットレベルは、共通ステップサイズよりも小さく、前のパスの所定のオフセットレベル以下であってもよい。
【0091】
1つの好適な実施形態では、所定のオフセットは、前のパスの所定のオフセットの半分である。例えば、2番目のパスの階段パルストレインは、最初のパスからステップサイズの半分だけオフセットし、3番目のパスの階段パルストレインは、2番目のパスから4分の1ステップサイズだけオフセットしている。このようにして、それぞれのパスでさらに細かいステップサイズを有するプログラミング階段パルストレインを使用する複数のパスを用いる従来の方法よりも少ないプログラミングパルスを使用して、複数のパスにわたり同じプログラム分解能を達成することができる。
【0092】
図26は、図21に示されるインデックスプログラミングパスへの相関マルチパスプログラミングの適用を示す。その関連で、図26は、図17および図22に示されるような最初のプログラミングパスに続くトリミングプログラミングパス2)および3)についても示す。3つのパスで使用される階段パルストレインはすべて同一ステップサイズを有する。最初のプログラミングパス1)で使用される階段パルストレインは、VPGM0の最初のプログラミング電圧を有する。一方、第2のプログラミングパス2)で使用される階段パルストレインは、VPGM1の最初のプログラミング電圧を有し、VPGM1はVPGM1=VPGM0+ΔVPGM1となるようにVPGM0と相関が取られている。好適な実施形態では、ΔVPGM1=1/2ステップサイズである。
【0093】
同様に、第3のプログラミングパス3)で使用される階段パルストレインは、VPGM2の最初のプログラミング電圧を有し、VPGM2はVPGM2=VPGM0+ΔVPGM2=VPGM1+ΔVPGM12 となるようにVPGM1およびVPGM0と相関が取られている。好適な実施形態では、ΔVPGM2=3/4ステップサイズ、またはΔVPGM12 =1/4ステップサイズである。
したがって、相関マルチパスプログラミングは、各プログラミングパスで同じ階段パルストレインを使用する。ただし、階段パルス全体のDCレベルが各パスについて所定の量だけ高くシフトされている点は除く。好適な実施形態では、第2のパスは、その前のパスに対して1/2ステップサイズだけシフトされ、第3のパスは1/4ステップサイズだけシフトされている。これらの3つの相関プログラミング電圧波形を使用するプログラミングは、各パスがその前のステップサイズの1/2ステップサイズの階段波形を使用する3つの従来の単一パスプログラミングと同じ分解能が得られる。
【0094】
図27は、マルチパスプログラミングを使用することによるメモリ状態のしきい値電圧分布の絞り込みを示す。それぞれの分布の下部端はすべてのパスについて絞られる。
【0095】
図28Aは、メモリ状態の様々な区分化のために従来のマルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。Pがプログラミングパス数のとき、パルスの数は(20 +21 +・・・+2P-1 )×2N となることが分かる。例えば、3パスプログラミングの場合、3ビットセルには56パルスが必要なことになり、4ビットセルには112パルスが必要なことになる。
【0096】
図28Bは、メモリ状態の様々な区分化のために相関マルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。パルスの数はちょうどP×2N であることが分かる。例えば、3パスプログラミングの場合、3ビットセルには24パルスが必要なことになり、4ビットセルには48パルスが必要なことになる。これは図28Aに示される従来のマルチパスプログラミングで必要となるパルス数より大幅に少ない。
【0097】
図29は、パス間で相関プログラミングレベルを使用するマルチパスプログラミング方法を示す流れ図である。
ステップ960:所定のステップサイズを有する階段パルストレインの形態で限られた期間経時的に増加するプログラミング電圧を供給する。
ステップ970:所定の数の複数のプログラミングパスでメモリセルのグループをプログラムする。各連続するプログラミングパスは、メモリセルのグループをプログラムするために印加される階段パルストレインを有し、各連続するプログラミングパスは、その前のプログラミングパスの階段パルストレインから所定のオフセットレベルだけオフセットしている階段パルストレインを有する。
ステップ980:グループに対するプログラミングが完了する。
【0098】
マルチパスインデックスプログラミング技術によってベリファイ動作の数を大幅に削減することができる。同様に、マルチパス相関プログラミング技術によって、必要なプログラミングパルスの数を大幅に削減することができる。2つの技術をまとめて高性能マルチパスインデックスおよび相関プログラミングに統合することができる。セル当たり3ビット以上のデータを記憶するように構成されるメモリの場合、この恩恵はなおさら大きい。
【0099】
本願明細書で言及されるすべての特許、特許出願、論文、書籍、仕様書、他の刊行物、文書および事柄は、あらゆる目的でその全体が本願明細書において参照により援用されている。援用されている刊行物、文書またはこの文書の事柄および文章のいずれかの間で用語の定義または使用が矛盾または衝突する場合には、本願明細書中の用語の定義または使用が優先するものとする。
本発明の様々な態様を特定の実施形態を参照しながら説明してきたが、当然のことながら、本発明は、添付の特許請求の範囲の全範囲内においてその権利が保護される権利を有する。
【技術分野】
【0001】
本発明は、一般に、電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)およびフラッシュEEPROMなどの不揮発性半導体メモリに関し、特に、プログラムベリファイ動作の回数を最小限にしたメモリおよびプログラミング動作に関する。
【背景技術】
【0002】
近年、様々な携帯型およびハンドヘルド型装置、とりわけ情報機器および家庭用電化製品において、特に、小形のフォームファクタカードとしてパッケージ化されたEEPROMおよびフラッシュEEPROMの形態をとる電荷の不揮発性記憶が可能なソリッドステートメモリが好んで用いられる記憶装置となっている。同じくソリッドステートメモリであるRAM(ランダムアクセスメモリ)とは異なり、フラッシュメモリは不揮発性であり、電源を切った後でもその記憶データを保持している。コストが上昇するにもかかわらず、フラッシュメモリは、大容量記憶用途でますます使用されつつある。ハードドライブやフロッピーディスクなどの回転式磁気媒体に基づく従来の大容量記憶装置は、携帯型およびハンドヘルド型の環境には適していない。その理由は、ハードドライブは大型になりがちで機械的不良を起こしやすく、長い待ち時間および大電力要件を有するためである。このような望ましくない属性により、ディスクに基づく記憶装置は大部分の携帯型および移動式用途において実用的でなくなっている。一方、フラッシュメモリは内蔵型でも取り外し可能なカードの形態をとるものでも、小型、低消費電力、高速および高信頼性というその特徴によって携帯型およびハンドヘルド型の環境に理想的に適している。
【0003】
EEPROMおよび電気的にプログラム可能な読み出し専用メモリ(EPROM)は、消去するとともにそのメモリセル内に新しいデータを書き込むかまたは「プログラムする」ことができる不揮発性メモリである。両方とも半導体基板内のソース領域とドレイン領域との間のチャネル領域上に位置する電界効果トランジスタ構造のフローティング(接続されていない)導電ゲートを使用している。次に、フローティングゲート上にはコントロールゲートが設けられる。トランジスタのしきい値電圧特性は、フローティングゲート上に保持される電荷量によって制御される。すなわち、フローティングゲート上の所与の電荷レベルに対して対応する電圧(しきい値)が存在し、トランジスタが「オン」に転換されてそのソース領域とドレイン領域との間で導通が可能になる前にこの対応する電圧をコントロールゲートに印加する必要がある。
【0004】
フローティングゲートは、様々な範囲の電荷を保持することができるので、しきい値電圧ウィンドウ内の任意のしきい値電圧レベルにプログラムすることができる。しきい値電圧ウィンドウの大きさは、デバイスの最小および最大しきい値レベルであり、フローティングゲート上にプログラムすることができる電荷の範囲に対応するレベルによって画定されている。しきい値ウィンドウは、一般に、メモリデバイスの特性、動作条件および動作履歴に依存している。原則として、ウィンドウ内のそれぞれ特異的で分解可能なしきい値電圧レベルの範囲を用いて、セルの明確なメモリ状態を指定することもできる。しきい値電圧ウィンドウが2つの個別領域に区分されている場合には、各メモリセルは、1ビットのデータを記憶することができることになる。同様に、しきい値電圧ウィンドウが3つ以上の個別領域に区分されている場合には、各メモリセルは、2ビット以上のデータを記憶することができることになる。
【0005】
通常の2状態EEPROMセルでは、導通ウィンドウを2つの領域に区分するように、少なくとも1つの電流ブレークポイントレベルが設定される。セルが所定の固定電圧を印加することによって読み出される場合、セルのソース/ドレイン電流は、ブレークポイントレベル(または基準電流IREF)と比較することによってメモリ状態が決定される。読み出された電流がブレークポイントレベルの電流よりも高い場合には、セルは一方の論理状態(例えば、「0」状態)にあると判断される。一方、電流がブレークポイントレベルの電流よりも低い場合には、セルは他方の論理状態(例えば、「1」状態)にあると判断される。したがって、このような2状態セルは、1ビットのデジタル情報を記憶している。外部からプログラム可能であってもよい基準電流源をメモリシステムの一部として設けることでブレークポイントレベル電流を発生させることが多い。
【0006】
メモリ容量を増やすために、フラッシュEEPROMデバイスは、半導体技術の状態が進歩するに従いますます高密度で製造されるようになっている。記憶容量を増やす別の方法は、各メモリセルに3状態以上を記憶させることである。
多状態またはマルチレベルEEPROMメモリセルの場合、導通ウィンドウは2つ以上のブレークポイントによって3つ以上の領域に区分され、各セルが2ビット以上のデータを記憶することができるようになっている。したがって、所与のEEPROMアレイが記憶することができる情報は、各セルが記憶することができる状態の数とともに増加する。多状態またはマルチレベルメモリセルを有するEEPROMまたはフラッシュEEPROMは、米国特許第5,172,338号(特許文献1)に記載されている。
メモリセルとして働くトランジスタは、一般に、2つのメカニズムのうちの1つによって「プログラムされた」状態にプログラムされる。「ホットエレクトロン注入」では、ドレインに印加される高い電圧によって、基板のチャネル領域にわたって電子が加速される。同時に、コントロールゲートに印加される高い電圧によって、ホットエレクトロンは薄いゲート誘電体を介してフローティングゲート上に引き込まれる。「トンネル注入」では、基板に対して高い電圧がコントロールゲートに印加される。このようにして、基板から介在するフローティングゲートに電子が引き込まれる。
【0007】
メモリデバイスは、多くのメカニズムによって消去され得る。EPROMの場合、紫外線照射によりフローティングゲートから電荷を取り除くことによってメモリは一括消去可能である。EEPROMの場合、コントロールゲートに対して高い電圧を基板に印加することでフローティングゲート内の電子を誘導して薄い酸化物を介して基板のチャネル領域にトンネルさせるようにすること(すなわち、ファウラー−ノルドハイムトンネル現象)によって、メモリセルが電気的に消去可能である。一般に、EEPROMは、1バイト毎に消去可能である。フラッシュEEPROMの場合、メモリは一度に全てのブロックあるいは一度に1つ以上のブロックを電気的に消去可能であり、ブロックは、512バイト以上のメモリから構成されてもよい。
メモリデバイスは、一般に、カード上に搭載されることもある1つ以上のメモリチップを含む。各メモリチップは、デコーダならびに消去、書き込みおよび読み出し回路などの周辺回路によってサポートされるメモリセルのアレイを含む。さらに高度なメモリデバイスは、インテリジェントでかつ高水準のメモリ動作およびインターフェイスを実行する外部メモリコントローラで動作する。
【0008】
今日使用されている不揮発性ソリッドステートメモリデバイスで商業的に成功しているものが多い。このようなメモリデバイスは、フラッシュEEPROMである場合もあれば他の種類の不揮発性メモリセルを使用している場合もある。フラッシュメモリならびにこれらを製造するシステムおよび方法の例は、米国特許第5,070,032号(特許文献2)、第5,095,344号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)および第5,661,053号(特許文献6)、第5,313,421号(特許文献7)ならびに第6,222,762号(特許文献8)に与えられている。特に、NANDストリング構造を有するフラッシュメモリデバイスは、米国特許第5,570,315号(特許文献9)、第5,903,495号(特許文献10)、第6,046,935号(特許文献11)に記載されている。さらに、不揮発性メモリデバイスは、電荷を蓄積する誘電層を有するメモリセルからも製造される。前に説明した導電性フローティングゲート素子の代わりに、誘電層が使用される。このような誘電体記憶素子を使用するメモリデバイスは、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誘電層は、ソース拡散とドレイン拡散との間のチャネルにわたって延在する。一方のデータビットに対する電荷はドレインに隣接する誘電層に局在し、他方のデータビットに対する電荷はソースに隣接する誘電層に局在する。例えば、米国特許第5,768,192号(特許文献12)および第6,011,725号(特許文献13)には、2つの二酸化シリコン層の間に挟まれたトラッピング誘電体を有する不揮発性メモリセルが開示されている。誘電体内の空間的に分離される電荷記憶領域のバイナリ状態を別々に読み出すことによって、多状態データ記憶が実施される。
【0009】
読み出しおよびプログラミング性能を改善するために、アレイ内の複数の電荷蓄積素子またはメモリトランジスタは、並列に読み出されたりプログラムされたりする。したがって、メモリ素子の「ページ」は、同時に読み出されたりプログラムされたりする。既存のメモリアーキテクチャでは、1つの行は、一般に、インターリーブされた幾つかのページを含むか、1つのページを構成する場合もある。1つのページのすべてのメモリ素子は、同時に読み出されたりプログラムされたりすることになる。
一連の交互に実施されるプログラム/ベリファイサイクルを使用している従来のプログラミング技術は、相対的に大きなVPGM の変化に応答してセルのしきい値電圧が最初に急速に増大するというプログラミングプロセスにおける不確実性に対処することである。しかし、フローティングゲートにプログラムされる電荷がシールドとして働いて電子をフローティングゲート内にさらにトンネルさせる有効電界を減少させるにつれて、この増大は衰えていき最終的に止まる。このプロセスは極めて非線形に見えるので、試行錯誤しながら進められる。
【0010】
プログラム/ベリファイプログラミング技術の欠点は、ベリファイサイクルは時間がかかる上に性能に影響を与えることである。この問題は、複数のビットを記憶可能なメモリセルの実施によって深刻化する。本質的に、ベリファイは、メモリセルの可能な複数の状態のそれぞれに対して実施される必要がある。16の可能なメモリ状態を有するメモリの場合、各ベリファイサイクルが最大16検知動作まで担うこともあることを意味する。したがって、マルチレベルメモリセル(MLC)の識別可能な状態レベルの数が増加するに伴い、プログラム/ベリファイ方式のベリファイサイクルはますます時間がかかるようになる。
【0011】
2006年9月12日にLoc Tuらによって出願された「METHOD FOR NON-VOLATILE MEMORY WITH LINEAR ESTIMATION OF INITIAL PROGRAMMING VOLTAGE」という米国特許出願第11/531,227号(特許文献14)には、線形予測によって最初のプログラミング電圧を推定する方法が開示されている。不揮発性メモリの良好なプログラミング性能を達成するために、最初のプログラミング電圧VPGM0およびステップサイズを工場で最適に選択する必要がある。メモリセルの各ページをテストすることによってこれは実現される。選択されたページに接続されるワード線は、パルス間にベリファイを有する一連の階段波形の電圧パルスによって、そのページが指定されたパターンとベリファイされるまで連続的にプログラムされる。ページがプログラムベリファイされた時点のプログラミング電圧を使用して、ページの開始プログラミング電圧の初期値までこれを線形的に縮小することによって推定することになる。この推定は、最初のパスからの推定を第2のパスで使用することによってさらに正確になる。したがって、従来の交互のプログラミングおよびベリファイを使用して、ページをうまくプログラムするための最終プログラミング電圧を設定する。次いで、最終プログラミング電圧を線形的に縮小してページの推定される最初のプログラミング電圧に至る。この種のスケーリングはページレベルでは粗いスケールに基づき、この分野のメモリに対する従来のセル単位のプログラミングおよびベリファイの欠点に対処するものではない。
【0012】
特に、従来のプログラミングには、すべてのパルス間でベリファイ動作が必要である。メモリが多くのメモリ状態に区分されている場合、ベリファイ動作は、すべてのパルス間で多くの状態をチェックする必要がある。ベリファイ動作の数は、状態区分の数の2乗で増加する。したがって、セル当たり3ビット以上のデータを保持するメモリの場合、ベリファイ動作の数は極端に大きくなる。
従来の方法は、プログラム分解能を改善するためにプログラムパルスステップサイズをより細かくすることである。しかし、このことはプログラムするのに必要なパルスの数を比例的に増加させる効果があり、これによってプログラミング時間が増大する。さらに、従来の方法では、プログラミングパルスの増加は、インターリーブするベリファイの数と組み合わされることになる。
したがって、大容量で高性能な不揮発性メモリが一般的に必要である。特に、前述した欠点が最小限に抑えられた改善されたプログラミング性能を有する大容量不揮発性メモリを有する必要がある。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】米国特許第5,172,338号
【特許文献2】米国特許第5,070,032号
【特許文献3】米国特許第5,095,344号
【特許文献4】米国特許第5,315,541号
【特許文献5】米国特許第5,343,063号
【特許文献6】米国特許第5,661,053号
【特許文献7】米国特許第5,313,421号
【特許文献8】米国特許第6,222,762号
【特許文献9】米国特許第5,570,315号
【特許文献10】米国特許第5,903,495号
【特許文献11】米国特許第6,046,935号
【特許文献12】米国特許第5,768,192号
【特許文献13】米国特許第6,011,725号
【特許文献14】米国特許出願第11/531,227号
【特許文献15】米国特許第5,595,924号
【特許文献16】米国公開特許出願第2006/0140007号
【特許文献17】米国特許出願第11/733,694号
【特許文献18】米国特許出願第11/733,706号
【非特許文献】
【0014】
【非特許文献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
【発明の概要】
【0015】
インデックスプログラミング
本発明の1つの一般的な態様によれば、メモリセルのグループに対して並列に動作するマルチパスインデックスプログラミング方法は、後のプログラミングパスにおいて、プログラムインデックスに応じてセルのプログラミングを実施したりあるいはプログラミングを禁止したりすることができるように、セルが受け取った最後のプログラミング電圧レベルなどの情報を提供するために、各セルについてプログラムインデックスを維持するステップを含む。
各プログラミングパスにおいて、階段パルストレインの形態をとる一連の増加するパルスとしてプログラミング電圧をメモリセルのグループに印加して、パルスカウントが増加するに伴ってメモリセルが増加するプログラミング電圧を受けるようにするのが好ましい。好適な実施形態では、それぞれ別々のプログラミング電圧レベルは、パルスカウントまたはパルス数として表現するのが便利である。同様に、プログラムインデックスもパルス数によって表現される。
メモリセルのグループのプログラミングパスでは、そのグループのセルのプログラムインデックスを使用して、それぞれの増加するパルスに応じてプログラミングを許可するか禁止するかを制御する。
【0016】
第1の実施例では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から得られる。プログラムインデックスは、プログラムパスの間にプログラムが禁止される前にセルに印加される最後のプログラミング電圧レベルまたはパルス数を記憶する。各セルのプログラムインデックスは、従来のインターリーブプログラム/ベリファイ方法でプログラミングおよびベリファイステップをインターリーブすることによって設定される。グループ内のセルのプログラミングは、セルがプログラムベリファイされて最後のパルス数がそのプログラムインデックスとして記録されると禁止される。この実施例がさらに多くのベリファイステップを担うこともあるが、どのセルも過剰にプログラムする可能性は低い。その結果、各セルについて設定されたプログラムインデックスを後のプログラミングパスでうまく利用してベリファイステップを省くことができる。
【0017】
第2の実施例では、セルのプログラムインデックスは、そのセルの推定最大プログラミング電圧レベルに最初に設定され、その目標状態に接近しても超えないようにプログラムする。階段パルストレインがグループの各セルに印加されると、そのプログラムインデックスによって示される推定最大プログラミング電圧レベルに達した時点でセルはそれ以上プログラムされるのを禁止される。階段パルストレインのその後のパルスは、禁止されたセルに影響を及ぼさないことになる。プログラミングパスの最後で、グループ内の各セルは、それぞれの目標状態付近にプログラムされることになり、各プログラムインデックスは、各セルが受け取った最後のプログラミング電圧レベルを反映することになる。
【0018】
第3の実施例では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から推定される。特に、メモリセルは、それぞれパルスの後にベリファイが続く一連のプログラミングパルスによって、消去状態から所与のしきい値電圧レベルにプログラムされる。所与のしきい値電圧レベルはチェックポイントとして働き、所与の目標しきい値電圧レベルのプログラムインデックスまたはプログラミング電圧レベルが得られる予測関数を較正する。プログラムインデックスは、1つ以上のチェックポイントによって較正される予測方法によって得られる。
【0019】
1つの実施形態では、所与の目標しきい値電圧レベルのプログラミング電圧レベルを比例的に生成する線形関数によって所定の関数が近似される。線形関数は、メモリアレイのセルの集団に適用可能な所定の平均値によって与えられる傾きを有する。線形関数は、所与のメモリセルの線形関数上にチェックポイントを予め定めることによって所与のメモリについて一意的に決定される。チェックポイントは、メモリセルを指定されたしきい値電圧レベルにプログラムする実際のプログラミング電圧に基づいている。チェックポイントは、メモリセルの最も低いプログラム状態の1つに対応するのが好ましい。メモリセルは、例えば、従来のプログラム/ベリファイプログラミング技術を使用することによって、まずチェックポイントにプログラムされる。このようにして、メモリセルを指定されたメモリ状態にプログラムするのに必要な実際のプログラミング電圧のチェックポイント値が決定される。したがって、所定の関数は、メモリセルを目標しきい値電圧レベルにプログラムするプログラミング電圧値を決定するのに使用される前にチェックポイントしきい値電圧レベルで評価されたときに、較正されてチェックポイントプログラミング電圧値を生成する。
【0020】
予測プログラミング技術は、目標状態へのプログラミングがベリファイ動作を必要としない点で有利である。ベリファイ動作は、メモリの可能な状態すべてではなくチェックポイント状態をベリファイする必要があるだけである。
プログラミング精度を向上させ、多状態メモリの各メモリ状態の分布を絞り込むために、追加のプログラミングパスが実施される。
インデックスプログラミングの利点は、プログラミングパスの各プログラミングパルス間においてベリファイステップを必要としないでセルのグループをプログラムすることができることである。このことは、プログラミング動作の性能を大幅に改善することになる。
【0021】
本発明の別の一般的な態様によれば、メモリセルのグループに対して並列で動作するマルチパスインデックスプログラミング方法は、最初のプログラミングパスと、各セルのプログラムインデックスの構築とを含む。最初のプログラミングパスの後にベリファイステップおよび追加のプログラミングパスが続き、最初のパスによるいかなる不足もトリミング(trim)する。インデックスプログラミングを使用することによって、大幅に削減された数のベリファイ動作でマルチパスプログラミングが実施される。
次のプログラミングパスの間に、ベリファイ後のセルはそれ以上プログラムされるのを禁止される。ベリファイ前のセルは、そのパスを越えて最後のプログラミングパスで1つのパルスによってプログラムすることができる。ベリファイステップおよびプログラミングパスは、グループ内のすべてのセルがそのそれぞれの目標状態とベリファイされるまで繰り返される。このように、ベリファイステップを実施する前にパルストレインの全行程を印加することによって、メモリセルのページをそのそれぞれの目標状態に並列に正しくプログラムすることが可能である。
インデックスプログラミングの利点は、プログラミングパスの各プログラミングパルスの間にベリファイステップを必要としないでセルのグループをプログラムすることができることである。インデックスプログラミングは、プログラミング動作の性能を大幅に向上させることになる。
【図面の簡単な説明】
【0022】
【図1】本発明が実施され得る不揮発性メモリチップの機能ブロックを示す概略図である。
【図2】不揮発性メモリセルを示す概略図である。
【図3】フローティングゲートが一度に選択的に蓄積してもよい4つの異なる電荷Q1〜Q4についてのソース−ドレイン電流ID とコントロールゲート電圧VCGとの間の関係を示す図である。
【図4】メモリセルのNORアレイの例を示す図である。
【図5A】NANDストリングに編成されるメモリセルのストリングを示す概略図である。
【図5B】図5Aに示されるようなNANDストリング50から構成されるメモリセルのNANDアレイ200の例を示す図である。
【図6】メモリセルのアレイにわたってp個のセンスモジュールのバンクを含む、図1に示される読み出し/書き込み回路270Aおよび270Bを示す図である。
【図7】図6に示されるセンスモジュールの好ましい編成を示す概略図である。
【図8】図7に示される読み出し/書き込みスタックをさらに詳細に示す図である。
【図9】(0)〜(2)は4状態メモリセルの集団をプログラムする例を示す図である。
【図10】(0)〜(2)は8状態メモリセルの集団をプログラムする例を示す図である。
【図11】4状態メモリセルを目標メモリ状態にプログラムするための従来の方法を示す図である。
【図12】従来の交互プログラム/ベリファイアルゴリズムを使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。
【図13】インデックスプログラミング方法の一般的な方式を示す流れ図である。
【図14A】第1の実施例によるメモリセルのプログラムインデックスを提供することを示す流れ図である。
【図14B】メモリセルのプログラムインデックスを得ることの第2の実施例を示す流れ図である。
【図14C】1つ以上のチェックポイントによって較正される予測関数を使用してメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。
【図14D】1つの実施形態によるメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。
【図14E】別の実施形態によるメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。
【図15】メモリセルを目標しきい値電圧レベルにプログラムするのに必要なプログラミング電圧を供給するために使用される所定の関数の好適な実施形態を示す図である。
【図16】消去状態の上の第1のプログラム状態に対応するチェックポイントの好ましい指定を示す図である。
【図17】最初のプログラミングパスで使用され各セルのプログラムインデックスを構築する予測プログラミングを示す図である。
【図18A】各追加のパルスがメモリセルを次のメモリ状態にプログラムするようなステップサイズを有するプログラミング電圧を設定することを示す流れ図である。
【図18B】最初のプログラミングパスを受けるメモリセルのしきい値電圧を示す概略図である。
【図19】メモリセルのプログラムインデックスを設定することの好適な実施例を示す流れ図である。
【図20】(A)は図18Bに示される「通常」セルの図19のラッチ動作を示し、(B)は図18Bに示される「遅い」セルの図19のラッチ動作を示し、(C)は図18Bに示される「非常に遅い」セルの図19のラッチ動作を示す図である。
【図21】インデックスプログラミング方法の好適な実施形態を示す流れ図である。
【図22】最初のパスの後でプログラム結果をトリミングするための、図21のステップ820に示される追加のベリファイおよびプログラミングパスを示す図である。
【図23】ベリファイ状態フラグを記憶するラッチを示す概略図である。
【図24A】ベリファイ状態フラグの使用によってベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。
【図24B】メモリセルのプログラムインデックスをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。
【図24C】パルスカウントをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。
【図25】インデックスプログラミング技術を使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。
【図26】図21に示されるインデックスプログラミングパスへの相関マルチパスプログラミングの適用を示す図である。
【図27】マルチパスプログラミングを使用することによるメモリ状態のしきい値電圧分布の絞り込みを示す図である。
【図28A】メモリ状態の様々な区分化のために従来のマルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。
【図28B】メモリ状態の様々な区分化のために相関マルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。
【図29】パス間で相関プログラミングレベルを使用するマルチパスプログラミング方法を示す流れ図である。
【発明を実施するための形態】
【0023】
メモリシステム
図1〜図10は、本発明の様々な態様が実施され得る例示的なメモリシステムを示す。
図11および図12は、従来のプログラミング技術を示す。
図13〜図29は、本発明の様々な態様および実施形態を示す。
【0024】
図1は、本発明が実施され得る不揮発性メモリチップの機能ブロックを概略的に示す。メモリチップ100は、メモリセルの二次元アレイ200と、制御回路210と、デコーダ、読み出し/書き込み回路およびマルチプレクサなどの周辺回路とを含む。
メモリアレイ200は、行デコーダ230(230Aと230Bとに分割)を介してワード線によって、および列デコーダ260(260Aと260Bとに分割)を介してビット線によってアドレス指定可能である(図4および図5も参照)。読み出し/書き込み回路270(270Aと270Bとに分割)は、メモリセルのページを並列に読み出すかまたはプログラムできるようにする。データI/Oバス231は、読み出し/書き込み回路270に接続されている。
好適な実施形態では、ページは、同一ワード線を共有するメモリセルの隣接する行から構成される。別の実施形態では、メモリセルの行が複数のページに区分されるが、読み出し/書き込み回路270を個々のページに多重化するためにブロックマルチプレクサ250(250Aと250Bとに分割)が設けられる。例えば、メモリセルの奇数列および偶数列によってそれぞれ形成される2つのページが読み出し/書き込み回路に多重化される。
【0025】
図1は、様々な周辺回路によるメモリアレイ200へのアクセスがアレイの両側で対称的に実施され、それぞれの側のアクセス線および回路の密度を半分に減らすようにしている好適な配置を示す。したがって、行デコーダは行デコーダ230Aと230Bとに分割され、列デコーダは列デコーダ260Aと260Bとに分割されている。メモリセルの行が複数のページに区分されている実施形態では、ページマルチプレクサ250は、ページマルチプレクサ250Aと250Bとに分割されている。同様に、読み出し/書き込み回路270は、アレイ200の下部からビット線に接続する読み出し/書き込み回路270Aと、アレイ200の上部からビット線に接続する読み出し/書き込み回路270Bとに分割されている。このようにして、読み出し/書き込みモジュールの密度、したがってセンスモジュール380の密度は、本質的に2分の1に削減される。
【0026】
制御回路110は、読み出し/書き込み回路270と協働してメモリアレイ200でメモリ動作を実施するオンチップコントローラである。制御回路110は、一般に、状態マシン112と、オンチップアドレスデコーダおよび出力制御モジュール(明確に図示せず)などの他の回路とを含む。状態マシン112は、メモリ動作のチップレベル制御を提供する。制御回路は、外部メモリコントローラを介してホストと通信している。
メモリアレイ200は、一般に、行および列に配置されるメモリセルの2次元アレイとして編成され、ワード線およびビット線によってアドレス指定可能である。NOR型またはNAND型アーキテクチャに従ってアレイを形成することができる。
【0027】
図2は、不揮発性メモリセルを概略的に示す。メモリセル10は、フローティングゲートまたは誘電層などの電荷蓄積ユニット20を有する電界効果トランジスタによって実施することができる。メモリセル10は、ソース14、ドレイン16およびコントロールゲート30も含む。
今日使用されている不揮発性ソリッドステートメモリデバイスで商業的に成功しているものが多い。このようなメモリデバイスは、異なる種類のメモリセルを使用してもよく、それぞれの種類は1つ以上の電荷蓄積素子を有している。
一般的な不揮発性メモリセルは、EEPROMおよびフラッシュEEPROMを含む。EEPROMセルおよびそれを製造する方法の例は、米国特許第5,595,924号(特許文献15)に与えられている。フラッシュEEPROMセル、メモリシステムにおけるその使用およびそれを製造する方法の例は、米国特許第5,070,032号(特許文献2)、第5,095,344号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)、第5,661,053号(特許文献6)、第5,313,421号(特許文献7)および第6,222,762号(特許文献8)に与えられている。特に、NANDセル構造を有するメモリデバイスの例は、米国特許第5,570,315号(特許文献9)、第5,903,495号(特許文献10)、第6,046,935号(特許文献11)に記載されている。さらに、誘電体記憶素子を利用するメモリデバイスの例は、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 、ならびに米国特許第5,768,192号(特許文献12)および第6,011,725号(特許文献13)に記載されている。
【0028】
実際には、セルのメモリ状態は、通常、基準電圧がコントロールゲートに印加されている場合にセルのソース電極とドレイン電極との間の伝導電流を検知することによって読み出される。したがって、セルのフローティングゲートの所与の各電荷について、固定基準コントロールゲート電圧に対して対応する伝導電流を検出することもできる。同様に、フローティングゲート上にプログラム可能な電荷の範囲は、対応するしきい値電圧ウィンドウまたは対応する伝導電流ウィンドウを定義する。
あるいは、区分された電流ウィンドウの中で伝導電流を検出する代わりに、テスト中に所与のメモリ状態に対するしきい値電圧をコントロールゲートで設定し、伝導電流がしきい値電流より小さいか大きいかを検出することも可能である。1つの実施例では、しきい値電流に対する伝導電流の検出は、伝導電流がビット線の容量を介して放電する速度を評価することによって達成される。
【0029】
図3は、フローティングゲートが一度に選択的に蓄積してもよい4つの異なる電荷Q1〜Q4についてのソース−ドレイン電流ID とコントロールゲート電圧VCGとの間の関係を示す。4つの実線のID 対VCG曲線は、メモリセルのフローティングゲート上にプログラム可能な4つの可能な電荷レベルを表し、それぞれ4つの可能なメモリ状態に対応する。例として、セルの集団のしきい値電圧ウィンドウは、0.5V〜3.5Vの範囲であってもよい。7つの可能なメモリ状態「0」、「1」、「2」、「3」、「4」、「5」、「6」はそれぞれ1つの消去状態および6つのプログラム状態を表し、しきい値ウィンドウをそれぞれ0.5Vの間隔で5つの領域に区分することによって画定すればよい。例えば、2μAの基準電流IREFを図に示すように使用する場合、Q1でプログラムされたセルは、メモリ状態「1」と見なされてもよい。これはその曲線がVCG=0.5Vおよび1.0Vによって画定されるしきい値ウィンドウの領域でIREF と交わるためである。同様に、Q4はメモリ状態「5」にある。
【0030】
前の説明から分かるように、メモリセルが多くの状態を記憶するように作製されるほど、そのしきい値ウィンドウは細かく分割される。例えば、メモリデバイスは、−1.5V〜5Vの範囲のしきい値ウィンドウを有するメモリセルを有してもよい。これは6.5Vの最大幅を供給する。メモリセルが16状態を記憶することになっている場合、各状態は、しきい値ウィンドウ内で200mVから300mVを占めてもよい。これには必要な分解能を達成可能にするために、プログラミングおよび読み出し動作でより高い精度が必要となる。
【0031】
図4は、メモリセルのNORアレイの例を示す。メモリアレイ200では、メモリセルの各行は、そのソース14およびドレイン16によってデイジーチェーン方式で接続されている。このような設計は、仮想接地設計と称されることがある。行におけるセル10は、ワード線42のようなワード線に接続されるコントロールゲート30を有する。列におけるセルは、ビット線34および36のような選択されたビット線にそれぞれ接続されるソースおよびドレインを有する。
【0032】
図5Aは、NANDストリングに編成されるメモリセルのストリングを概略的に示す。NANDストリング50は、そのソースおよびドレインによってデイジーチェーン接続される一連のメモリトランジスタM1、M2・・・Mn(例えば、n=4、8、16あるいはそれ以上)から構成される。1対の選択トランジスタS1、S2は、それぞれNANDストリングのソース端子54およびドレイン端子56を介してメモリトランジスタチェーンの外部への接続を制御する。メモリアレイでは、ソース選択トランジスタS1がオンに転換すると、ソース端子がソース線に接続される(図5B参照)。同様に、ドレイン選択トランジスタS2がオンに転換すると、NANDストリングのドレイン端子がメモリアレイのビット線に接続される。チェーン内の各メモリトランジスタ10はメモリセルとして機能し、所定の電荷量を蓄積して意図されるメモリ状態を表すようにするための電荷蓄積素子20を有する。各メモリトランジスタのコントロールゲート30は、読み出しおよび書き込み動作の制御を可能にする。図5Bに示されるように、NANDストリングの行の対応するメモリトランジスタのコントロールゲート30は、同一ワード線にすべて接続されている。同様に、選択トランジスタS1、S2のそれぞれのコントロールゲート32は、それぞれそのソース端子54およびドレイン端子56を介するNANDストリングへのアクセスを制御することができる。同様に、NANDストリングの行の対応する選択トランジスタのコントロールゲート32は、同一選択線にすべて接続されている。
【0033】
NANDストリング内のアドレス指定されたメモリトランジスタ10が、プログラム中に読み出されたりベリファイされたりする場合には、そのコントロールゲート30に適切な電圧が供給される。同時に、NANDストリング50のアドレス指定されていない残りのメモリトランジスタは、そのコントロールゲートに充分な電圧を印加することによって完全にオンに転換される。このようにして、NANDストリングの個々のメモリトランジスタのソースからそのソース端子54まで、同じく個々のメモリトランジスタのドレインについてはセルのドレイン端子56まで伝導経路が効果的に形成される。このようなNANDストリング構造を有するメモリデバイスは、米国特許第5,570,315号(特許文献9)、第5,903,495号(特許文献10)、第6,046,935号(特許文献11)に記載されている。
【0034】
図5Bは、図5Aに示されるようなNANDストリング50から構成されるメモリセルのNANDアレイ200の例を示す。NANDストリングの各列に沿って、ビット線36などのビット線は、各NANDストリングのドレイン端子56に接続される。NANDストリングの各バンクに沿って、ソース線34などのソース線は、各NANDストリングのソース端子54に接続される。さらに、NANDストリングのバンク内のメモリセルの行に沿ったコントロールゲートは、ワード線42などのワード線に接続される。NANDストリングのバンク内の選択トランジスタの行に沿ったコントロールゲートは、選択線44などの選択線に接続される。NANDストリングのバンク内のメモリセルの行全体は、NANDストリングのバンクのワード線および選択線にかかる適切な電圧によってアドレス指定することができる。NANDストリング内のメモリトランジスタが読み出される場合、ストリング内の残りのメモリトランジスタは、その関連するワード線を介して確実にオンに転換され、ストリングを通って流れる電流は、本質的に、読み出されるセルに蓄積される電荷のレベルに依存するようになっている。
【0035】
検知回路および技術
図6は、メモリセルのアレイにわたってp個のセンスモジュールのバンクを含む、図1に示される読み出し/書き込み回路270Aおよび270Bを示す。並列に動作するp個のセンスモジュール480のバンク全体によって、行に沿ったp個のセル10のブロック(またはページ)を並列に読み出したりプログラムしたりすることが可能になる。本質的に、センスモジュール1はセル1の電流I1 を検知し、センスモジュール2はセル2の電流I2 を検知し・・・センスモジュールpはセルpの電流Ip を検知することになるなど、以下同様である。ソース線34から集約ノードCLSRCに、さらにそこから接地に流れるそのページのすべてのセル電流iTOT は、p個のセルのすべての電流の総和となる。従来のメモリアーキテクチャでは、共通ワード線を有するメモリセルの行は2つ以上のページを形成し、ページ内のメモリセルは並列に読み出しおよびプログラムされる。2つのページを有する行の場合、一方のページは偶数ビット線によってアクセスされ、他方のページは奇数ビット線によってアクセスされる。検知回路のページは、偶数ビット線か奇数ビット線かに一度に接続される。その場合、読み出し/書き込み回路270Aおよび270Bを個々のページにそれぞれ多重化するように、ページマルチプレクサ250Aおよび250Bが設けられる。
【0036】
現在製造されている56nm技術に基づくチップではp>64,000であり、43nm32Gbit×4のチップではp>150,000である。好適な実施形態では、ブロックはセルの一連の行全体である。これはいわゆる「全ビット線」アーキテクチャであり、ページは隣接するビット線にそれぞれ接続される隣接するメモリセルの行から構成されている。別の実施形態では、ブロックは、行の中のセルのサブセットである。例えば、セルのサブセットは、行全体の2分の1または行全体の4分の1であってもよい。セルのサブセットは、一連の隣接するセルまたは1つおきのセルあるいは所定数おきのセルであってもよい。各センスモジュールは、ビット線を介してメモリセルに接続され、メモリセルの伝導電流を検知する検知増幅器を含む。一般に、読み出し/書き込み回路がメモリアレイの両側に分配されている場合、p個のセンスモジュールのバンクは、2セットの読み出し/書き込み回路270Aと270Bとの間に分配されることになる。
【0037】
図7は、図6に示されるセンスモジュールの好ましい編成を概略的に示す。p個のセンスモジュールを含む読み出し/書き込み回路270Aおよび270Bは、読み出し/書き込みスタック400のバンクに分けられる。
【0038】
図8は、図7に示される読み出し/書き込みスタックをさらに詳細に示す。各読み出し/書き込みスタック400は、k本のビット線のグループ上で並列に動作する。1つのページがp=r*k本のビット線を有する場合、r個の読み出し/書き込みスタック400−1・・・400−rが存在することになる。本質的に、このアーキテクチャは、スペースを節約するためにk個のセンスモジュールの各スタックが共通プロセッサ500によって操作されるようになっている。共通プロセッサ500は、センスモジュール480およびデータラッチ430に配置されるラッチに記憶される更新データをラッチの電流値および状態マシン112からの制御に基づいて計算する。共通プロセッサの詳細な説明は、その全体が本願明細書において参照により援用されている、2006年6月29日付の米国公開特許出願第2006/0140007号(特許文献16)に開示されている。
【0039】
並列に動作する区分された読み出し/書き込みスタック400のバンク全体は、行に沿ったp個のセルのブロック(またはページ)を並列に読み出したりプログラムしたりできるようにする。したがって、セルの行全体についてp個の読み出し/書き込みモジュールが存在することになる。各スタックはk個のメモリセルを操作しているので、バンク内の読み出し/書き込みスタックの総数は、r=p/kで与えられる。例えば、rがバンク内のスタック数である場合、p=r*kである。1つの例示的なメモリアレイは、p=150,000、k=8を有してもよく、したがってr=18,750である。
【0040】
400−1などの各読み出し/書き込みスタックは、本質的に、k個のメモリセルのセグメントを並列に操作するセンスモジュール480−1〜480−kのスタックを含む。ページコントローラ410は、配線411を介して読み出し/書き込み回路370に制御およびタイミング信号を提供する。ページコントローラは、配線311を介してメモリコントローラ310にそれ自体依存している。各読み出し/書き込みスタック400間の通信は、相互接続スタックバス431によって達成され、ページコントローラ410によって制御される。制御線411は、ページコントローラ410から読み出し/書き込みスタック400−1の部品に制御およびクロック信号を提供する。
【0041】
好適な配置では、スタックバスは、共通プロセッサ500とセンスモジュールのスタック480との間の通信のためのSAバス422と、プロセッサとデータラッチのスタック430との間の通信のためのDバス423とに区分されている。
データラッチのスタック430は、そのスタックに関連する各メモリセルについて1つのデータラッチ430−1〜430−kから構成されている。I/Oモジュール440は、データラッチがI/Oバス231を介して外部とデータを交換することができるようにする。
さらに、共通プロセッサは、エラー状態などのメモリ動作の状態を示す状態信号を出力する出力507も含む。状態信号を使用して、ワイヤードOR構成でフラグバス509に接続されるn形トランジスタ550のゲートを駆動する。フラグバスは、コントローラ310によってプリチャージされるのが好ましく、状態信号が読み出し/書き込みスタックのいずれかでアサートされるとプルダウンされることになる。
【0042】
多状態メモリ区分化の例
メモリセルがそれぞれ複数ビットのデータを記憶する不揮発性メモリを、図3に関連してこれまで説明した。特定の例は、電界効果トランジスタのアレイから形成されるメモリであって、各電界効果トランジスタはそのチャネル領域とそのコントロールゲートとの間に電荷蓄積層を有する。電荷蓄積層またはユニットは、各電界効果トランジスタのしきい値電圧の範囲のもとになる電荷の範囲を蓄積することができる。可能なしきい値電圧の範囲は、しきい値ウィンドウの範囲にわたる。しきい値ウィンドウが複数の小領域またはゾーンのしきい値電圧に区分される場合、それぞれの分解可能なゾーンを使用してメモリセルの異なるメモリ状態を表す。1つ以上のバイナリビットによって複数のメモリ状態を符号化することができる。例えば、4つのゾーンに区分されるメモリセルは、2ビットのデータとして符号化することができる4つの状態をサポートすることができる。同様に、8つのゾーンに区分されるメモリセルは、3ビットのデータとして符号化することができる8つのメモリ状態をサポートすることができるなど、以下同様である。
【0043】
図9(0)〜(2)は、4状態メモリセルの集団をプログラムする例を示す。図9(0)は、それぞれメモリ状態「0」、「1」、「2」および「3」を表すしきい値電圧の4つの特異的な分布にプログラム可能なメモリセルの集団を示す。図9(1)は、消去されたメモリの「消去」しきい値電圧の最初の分布を示す。図9(2)は、メモリセルの多くがプログラムされた後のメモリの例を示す。本質的に、セルは、最初に「消去」しきい値電圧を有し、プログラミングによってさらに高い値となってDV1 、DV2 およびDV3 によって画定される3つのゾーンのうちの1つに変化することになる。このようにして、各メモリセルは、3つのプログラム状態「1」、「2」および「3」のうちの1つにプログラムするか、あるいは「消去」状態でプログラムされないままにすることができる。メモリがさらにプログラムされるにつれて、図9(1)に示される「消去」状態の最初の分布は狭くなっていき、消去状態は「0」状態によって表される。
【0044】
下位ビットおよび上位ビットを有する2ビット符号を使用して、4つの各メモリ状態を表すことができる。例えば、「0」、「1」、「2」および「3」状態は、それぞれ「11」、「01」、「00」および「10」によって表される。2ビットデータは、「フルシーケンス」モードで検知することによってメモリから読み出されてもよい。このモードでは、3つのサブパスでそれぞれ読み出し境界しきい値DV1 、DV2 およびDV3 に対して検知することによって2ビットがまとめて検知される。
【0045】
図10(0)〜(2)は、8状態メモリセルの集団をプログラムする例を示す。図10(1)は、それぞれメモリ状態「0」〜「7」を表すしきい値電圧の8つの特異的な分布にプログラム可能なメモリセルの集団を示す。図10(1)は、消去されたメモリの「消去」しきい値電圧の最初の分布を示す。図10(2)は、メモリセルの多くがプログラムされた後のメモリの例を示す。本質的に、セルは、最初に「消去」しきい値電圧を有し、プログラミングによってさらに高い値となってDV1 〜DV7 によって画定される7つのゾーンのうちの1つに変化することになる。このようにして、各メモリセルは、7つのプログラム状態「1」〜「7」のうちの1つにプログラムするか、あるいは「消去」状態でプログラムされないままにすることができる。メモリがさらにプログラムされるにつれて、図10(1)に示される「消去」状態の最初の分布は狭くなっていき、消去状態は「0」状態によって表される。
【0046】
下位ビット、中位ビット、および上位ビットを有する3ビット符号を使用して、8つの各メモリ状態を表すことができる。例えば、「0」、「1」、「2」、「3」、「4」、「5」、「6」および「7」状態は、それぞれ「111」、「011」、「001」、「101」、「100」、「000」、「010」、および「110」によって表される。3ビットデータは、「フルシーケンス」モードで検知することによってメモリから読み出されてもよい。このモードでは、7つのサブパスでそれぞれ読み出し境界しきい値DV1 〜DV7 に対して検知することによって3ビットがまとめて検知される。
【0047】
ページまたはワード線プログラミングおよびベリファイ
ページをプログラムする1つの方法は、フルシーケンスプログラミングである。ページのすべてのセルは、最初消去状態にある。したがって、ページのすべてのセルは消去状態からその目標状態へと並列にプログラムされる。目標状態として「1」状態を有するこれらのメモリセルは、一度「1」状態にプログラムされるとそれ以上プログラムされるのを禁止されることになるが、目標状態「2」あるいはそれ以上を有する他のメモリセルは、さらにプログラムされることになる。最終的に、目標状態として「2」を有するメモリセルについてもそれ以上プログラムされるのをロックされることになる。同様に、進行するプログラミングパルスによって、目標状態「3」〜「7」を有するセルが実現されてロックされる。
【0048】
図11は、4状態メモリセルを目標メモリ状態にプログラムするための従来の方法を示す。プログラミング回路は、一般に、一連のプログラミングパルスを選択されたワード線に印加する。このようにして、コントロールゲートがワード線に接続されるメモリセルのページをまとめてプログラムすることができる。使用されるプログラミングパルストレインは、メモリセルの電荷蓄積ユニット内にプログラムされる蓄積する電子に対抗するために、増加する周期または振幅を有してもよい。プログラム中、プログラミング電圧VPGM がページのワード線に印加される。プログラミング電圧VPGM は、初期電圧レベルVPGM0から開始される階段波形の形態をとる一連のプログラミング電圧パルスである。プログラム中のページの各セルは、この一連のプログラミング電圧パルスを受け、各パルスではセルの電荷蓄積素子に増加する電荷を加えようとする。プログラミングパルスの間で、セルは読み直されてそのしきい値電圧を決定する。この読み直しプロセスは、1つ以上の検知動作を含んでもよい。そのしきい値電圧がベリファイされて目標状態に対応するしきい値電圧ゾーン内にあった場合には、そのセルに対してプログラミングが停止する。ページのメモリセルがその目標状態にプログラムされるとそのセルはプログラムが禁止されるが、他のセルはページのセルがすべてプログラムベリファイされるまでプログラムされ続ける。
【0049】
一連の交互に実施されるプログラム/ベリファイサイクルを使用している従来のプログラミング技術は、相対的に大きなVPGM の変化に応答してセルのしきい値電圧が最初に急速に増加するというプログラミングプロセスにおける不確実性に対処することである。しかし、フローティングゲートにプログラムされる電荷がシールドとして働いて電子をフローティングゲート内にさらにトンネルさせる有効電界を減少させるにつれて、この増加は衰えて行き最終的に止まる。
プログラム/ベリファイプログラミング技術の欠点は、ベリファイサイクルは時間がかかる上に性能に影響を与えることである。この問題は、複数のビットを記憶可能なメモリセルの実施例によって深刻化する。本質的に、ベリファイは、メモリセルの可能な複数の状態のそれぞれに対して実施される必要がある。16の可能なメモリ状態を有するメモリの場合、これは各ベリファイステップが少なくとも16検知動作まで担うことになることを意味する。他の一部の方式では、これが数倍にもなり得る。したがって、メモリがますます多くの状態数に区分化されると、プログラム/ベリファイ方式のベリファイサイクルはますます時間がかかるようになる。
【0050】
図12は、従来の交互のプログラム/ベリファイアルゴリズムを使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。例えば、Nビットメモリでは、区分化は、NS =2N 状態になる。プログラムパルスの数は、少なくとも状態の数NS と同じである。一部のアルゴリズムでは、k個のプログラミングパスが必要なこともあり、ここでkは1〜4であってもよい。多状態メモリの場合、各ベリファイ動作は各メモリ状態に1つの2N −1を乗じる。したがって、ベリファイの推定数は、状態の数の2乗である22Nに比例する。表から分かるように、3ビットセルの場合、公称ベリファイサイクル数はすでに非常に多く、これは他の方式で必要な追加の検知を含んでいない。4ビットセルの場合、ベリファイサイクル数は許容できないほどとなる。
したがって、ベリファイサイクル数の少ない改善されたプログラミング性能を有するメモリデバイスが必要である。
【0051】
インデックスプログラミング技術
本発明の1つの一般的な態様によれば、メモリセルのグループに対して並列に動作するマルチパスインデックスプログラミング方法は、後のプログラミングパスにおいて、プログラムインデックスに応じてセルのプログラミングを実施したりあるいはプログラミングを禁止したりすることができるように、セルが受け取った最後のプログラミング電圧レベルなどの情報を提供するために、各セルについてプログラムインデックスを維持するステップを含む。
各プログラミングパスにおいて、階段パルストレインの形態をとる一連の増加するパルスとしてプログラミング電圧をメモリセルのグループに印加して、パルスカウントが増加するに伴ってメモリセルが増加するプログラミング電圧を受けるようにするのが好ましい。好適な実施形態では、それぞれ別々のプログラミング電圧レベルは、パルスカウントまたはパルス数として表現するのが便利である。同様に、プログラムインデックスもパルス数によって表現される。
メモリセルのグループのプログラミングパスでは、そのグループのセルのプログラムインデックスを使用して、増加するそれぞれのパルスに応じてプログラミングを許可するか禁止するかを制御する。
【0052】
図13は、インデックスプログラミング方法の一般的な方式を示す流れ図である。
ステップ700:並列にプログラムされるメモリセルのグループを提供する。各メモリセルは個別の目標しきい値電圧レベルにプログラム可能である。
ステップ710は、ステップ720、ステップ730およびステップ732をさらに含むインデックスプログラミングである。
ステップ720:プログラム中にグループの各メモリセルのプログラムインデックスを提供する。メモリセルのプログラムインデックスは、メモリセルをプログラムするのに最後に使用されたプログラミング電圧レベル、または次のプログラミングでメモリセルが受け取ることを許される最大プログラミング電圧レベルを示す。プログラムインデックスは、読み出し/書き込み回路と協働する追加のラッチ回路によって実施されるのが好ましい。
ステップ730:プログラミングパスで一連の増加する電圧パルスとして増加するプログラミング電圧をメモリセルのグループに印加する。
ステップ740:メモリセルのプログラムインデックスに応じて、増加するプログラミング電圧レベルに基づいてプログラミングパスの間にプログラムされるメモリセルのプログラミングを禁止あるいは許可する。
プログラミング電圧が増加してプログラミング電圧がセルのプログラムインデックスによって示されるレベルに到達したら、並列にプログラムされているグループの各メモリセルを過剰にプログラムしないようすることが分かる。このようにして、従来のプログラミング方法とは異なり、それぞれすべてのプログラミングパルス間でベリファイステップを有する必要がない。
【0053】
第1の実施例では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から得られる。プログラムインデックスは、プログラムパスの間にプログラムが禁止される前にセルに印加される最後のプログラミング電圧レベルまたはパルス数を記憶する。各セルのプログラムインデックスは、従来のインターリーブプログラム/ベリファイ方法でプログラミングおよびベリファイステップをインターリーブすることによって設定される。グループ内のセルのプログラミングは、セルがプログラムベリファイされて最後のパルス数がそのプログラムインデックスとして記録されたら禁止される。この実施例がさらに多くのベリファイステップを担うこともあるが、どのセルも過剰にプログラムする可能性は低い。その結果、各セルについて設定されたプログラムインデックスを後のプログラミングパスでうまく利用してベリファイステップを省くことができる。
メモリセルのプログラムインデックスを提供することの第1の実施例では、メモリセルが目標のしきい値電圧レベルとプログラムベリファイされるまで、メモリセルは各パルスの後にベリファイが続く一連のプログラミングパルスによってプログラムされる。メモリセルがプログラムベリファイされると、メモリセルのプログラムインデックスは最後のプログラミング電圧と同じになるように設定される。
【0054】
図14Aは、第1の実施例によるメモリセルのプログラムインデックスを提供することを示す流れ図である。したがって、図13に示されるステップ720に対応するステップ720’は、ステップ721とステップ722とをさらに含む。
ステップ721:目標しきい値電圧レベルがプログラムベリファイされるまでメモリセルを交互にプログラムおよびベリファイする。
ステップ722:メモリセルが目標しきい値電圧レベルとプログラムベリファイされるプログラミング電圧レベルと同じ値にプログラムインデックスを設定する。
第1の実施例は、メモリセルが各プログラミングパルスの後にベリファイされる従来のプログラミング技術によってプログラムインデックスを得ることであると分かる。この方法はその目標に近いセルの最も正確なプログラミングを提供するが、ベリファイ動作がかなり多くなるという犠牲を払うことになる。
【0055】
第2の実施例では、セルのプログラムインデックスは、最初にセルの推定最大プログラミング電圧レベルに設定され、目標状態から所定の不足分の範囲内にあるような目標状態に近いがそれを超えない状態にプログラムする。階段パルストレインがグループの各セルに印加され、セルのプログラムインデックスによって示される予測最大プログラミング電圧レベルに達すると、セルはそれ以上プログラムされるのを禁止される。階段パルストレインのその後のパルスは、禁止されたセルに影響を及ぼさないことになる。プログラミングパスの最後で、グループの各セルはそれぞれの目標状態付近にプログラムされ、各プログラムインデックスは、各セルが受け取った最後のプログラミング電圧レベルを反映することになる。
【0056】
図14Bは、メモリセルのプログラムインデックスを得ることの第2の実施例を示す流れ図である。したがって、図13に示されるステップ720に対応するステップ720’’は以下を含む。
ステップ720’’:セルの目標状態に近いがそれを超えないようにセルをプログラムすると推定されるプログラミング電圧レベルまたは等価なパルス数にメモリセルのプログラムインデックスを設定する。
第3の実施形態では、セルのプログラムインデックスは、メモリセルの最初のプログラミング経験から推定される。特に、メモリセルは、それぞれパルスの後にベリファイが続く一連のプログラミングパルスによって、消去状態から所与のしきい値電圧レベルにプログラムされ、所与のしきい値電圧レベルはチェックポイントとして働き、所与の目標しきい値電圧レベルのプログラムインデックスまたはプログラミング電圧レベルが得られる予測関数を較正する。
【0057】
図14Cは、1つ以上のチェックポイントによって較正される予測関数を使用してメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。したがって、図13に示されるステップ720に対応するステップ720’’’は以下を含む。
ステップ720’’’:1つ以上のチェックポイントによって較正される予測関数によってメモリセルのプログラムインデックスを設定する。
予測技術によってセルのプログラムインデックスを得ることの第3の実施例を、図14D〜図21に関連してさらに詳細に説明する。
【0058】
図14Dは、1つの実施形態によるメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。したがって、図13に示されるステップ720に対応するステップ720’’’は、ステップ723〜ステップ727をさらに含む。
ステップ723:メモリセルを目標しきい値電圧レベルにプログラムすると予測されるプログラミング電圧レベルを生成するメモリセルの所定の予測関数を提供する。
ステップ724:対応するチェックポイントプログラミング電圧レベルによってプログラム可能な指定のチェックポイントしきい値電圧レベルで、メモリセルの所定の関数のチェックポイントを指定する。
ステップ725:チェックポイントしきい値電圧レベルがプログラムベリファイされるまでメモリセルを交互にプログラムおよびベリファイすることによって、対応するチェックポイントプログラミング電圧値を決定する。
ステップ726:チェックポイントしきい値電圧レベルで評価される場合に、所定の関数を較正して決定された対応するチェックポイントプログラミング電圧レベルを生成する。
ステップ727:メモリセルの目標しきい値電圧レベルで所定の関数を評価することによってプログラムインデックスを推定する。
メモリセルのプログラムインデックスを提供することの第2の実施形態は、複数のチェックポイントを使用してプログラムインデックスの精度を向上させる。
【0059】
図14Eは、別の実施形態によるメモリセルのプログラムインデックスを得ることの第3の実施例を示す流れ図である。
したがって、図13に示されるステップ720に対応するステップ720’’’は、ステップ728をさらに含む。
ステップ728:より多くのチェックポイントを使用してさらに精度の高いプログラミングを得ること以外は、図14Dのステップ723〜727と同様である。
【0060】
チェックポイントからの予測プログラミング
図15、図16および図17は、図14Aのステップ720’’’に示される予測プログラミングをさらに詳細に説明する。
メモリセルがしきい値電圧レベルの範囲のうちの1つに個別にプログラム可能であるメモリセルのアレイを有する不揮発性メモリでは、所与のメモリセルを所与の目標しきい値電圧レベルにプログラムするためにどんなプログラミング電圧レベルを印加する必要があるかを予測する所定の関数が提供される。このようにして、ベリファイ動作を実施する必要がなくなることによってプログラミング動作の性能が大幅に向上する。
【0061】
1つの実施形態では、所与の目標しきい値電圧レベルのプログラミング電圧レベルを比例的に生成する線形関数によって所定の関数が近似される。線形関数は、メモリアレイのセルの集団に適用可能な所定の平均値によって与えられる傾きを有する。線形関数は、所与のメモリセルの線形関数上にチェックポイントを予め定めることによって所与のメモリについて一意的に決定される。チェックポイントは、メモリセルを指定されたしきい値電圧レベルにプログラムする実際のプログラミング電圧に基づいている。チェックポイントは、メモリセルの最も低いプログラム状態の1つに対応するのが好ましい。メモリセルは、例えば、従来のプログラム/ベリファイプログラミング技術を使用することによって、まずチェックポイントにプログラムされる。このようにして、メモリセルを指定されたメモリ状態にプログラムするのに必要な実際のプログラミング電圧のチェックポイント値が決定される。したがって、所定の関数は、メモリセルを目標しきい値電圧レベルにプログラムするプログラミング電圧値を決定するのに使用される前にチェックポイントしきい値電圧レベルで評価されたときに、較正されてチェックポイントプログラミング電圧値を生成する。
予測プログラミング技術は、目標状態へのプログラミングがベリファイ動作を必要としない点で有利である。ベリファイ動作は、メモリの可能な状態すべてではなくチェックポイント状態をベリファイする必要があるだけである。
【0062】
図15は、メモリセルを目標しきい値電圧レベルにプログラムするのに必要なプログラミング電圧を供給するために使用される所定の関数の好適な実施形態を示す。所定の関数は線形関数によって近似され、この線形関数では、目標しきい値レベルVT がプログラミング電圧VPGM の関数として以下の関係によって与えられる。
VT (VPGM )=<Slope>VPGM +VT (0) 数式(1)
(ここで、<Slope>=ΔVT /ΔVPGM )
逆に、
VPGM (VT )=1/<Slope>[VT −VT (0)] 数式(2)
【0063】
好適な実施形態では、平均の<Slope>は、類似する製造バッチ(製造ロット)からの工場サンプルでテストすることによって予め決定することができる。例えば、テストすることによって約0.1の標準偏差で平均が0.9の<Slope>が生成されてもよい。VT (0)はセルに依存し、各セルの予測プログラミングの前に各メモリセルからのチェックポイントによって予め決定される。<Slope>およびVT (0)が分かると、メモリセルの所定の関数が定義され、数式(2)を使用して目標しきい値電圧レベルにプログラムするのに必要なプログラミング電圧レベルを得ることができる。
一般に、所定の関数は、線形関数によって近似される必要はない。所定の関数がしきい値電圧レベルの広範囲を正確にカバーするようになっている場合には、所定の関数は、工場で製造バッチをテストすることによって決定し、任意の適切な関数によってモデル化することができる。
【0064】
各メモリセルの予測関数のチェックポイント較正
数式(1)または(2)のVT (0)はセルに依存し、消去状態のしきい値電圧レベルよりもわずかに高いチェックポイントしきい値電圧を指定し、パルス間で所与のセルをチェックポイントに対して交互に実際にプログラムおよびベリファイすることによって予め決定される。このようにして、所与のセルをチェックポイントしきい値電圧にプログラムするのに必要な実際のプログラミング電圧が分かる。次に、この実際の座標を使用して数式(2)のVT (0)の値を求める。
図14A、ステップ722、ステップ723およびステップ724は、所定の関数のチェックポイントを使用してメモリセルの所定の関数を較正する一般的な原理を示す。
【0065】
図16は、消去状態の上の第1のプログラム状態に対応するチェックポイントの好ましい指定を示す。次の項の説明で分かるように、各パルスがセルを次のメモリ状態にプログラムすることができるステップサイズをプログラミングパルストレインが有する場合、チェックポイントは較正された基本状態として働くことになる。当然ながら、セルのプログラムデータがセルに消去状態のままであることを求める場合、チェックポイントは必要ないことになる。
ステップ724’:第1のプログラムされたメモリ状態のしきい値電圧レベルをメモリセルの所定の関数のチェックポイントとして指定する。
【0066】
したがって、メモリセルのチェックポイント(0)は、消去状態に関連すると見なされるしきい値電圧レベルよりもわずかに高いしきい値電圧レベル(チェックポイントしきい値電圧レベル)にあるように指定される。最初のプログラミングパスの第1の段階で、一連の増加するプログラミング電圧パルスが印加されて、チェックポイントしきい値電圧レベルに向けてメモリセルをプログラムする。チェックポイントしきい値電圧レベルがプログラムベリファイされるまで、プログラミングモードは、交互にプログラムおよびベリファイを行う従来のモードにすることができる。チェックポイント(0)の座標[VPGM 、VT ]チェックポイント(0) のセットが分かると、数式(2)の形態をとる所定の関数(図15参照)をVT (0)について解き、完全に指定することができる。
【0067】
数式(2)の形態をとる所定の関数が指定された後、続いて第2段階で所定の関数を使用する予測モードでメモリセルをプログラムして、目標しきい値電圧レベルまたは目標メモリ状態の推定プログラミング電圧レベルを供給することができる。
1つ以上のチェックポイントによって較正される予測プログラミングは、本願明細書において参照により援用されている、本願と同じ発明者によって2007年4月10日に出願された同時係属中の「PREDICTIVE PROGRAMMING IN NON-VOLATILE MEMORY 」という米国特許出願第11/733,694号(特許文献17)、および本願と同じ発明者によって2007年4月10日に出願された同時係属中の「NON-VOLATILE MEMORY WITH PREDICTIVE PROGRAMMING 」という米国特許出願第11/733,706号(特許文献18)にも開示されている。
【0068】
図17は、最初のプログラミングパスで使用され各セルのプログラムインデックスを構築する予測プログラミングを示す。最初のプログラミングパスは2つの段階にある。示される例では、第1の段階はメモリセルをプログラムし、第3の実施例(図14C参照)の予測プログラミング方法を使用してプログラムインデックスを維持する。予測プログラミングは、所与のセルを所与の目標状態にプログラムするのに必要な推定プログラミング電圧を供給する各セルの所定の関数を使用する。
【0069】
最初のプログラミングパスの第1の段階は、各セルのプログラミング特性に従って各セルの所定の関数を較正することである。指定されるしきい値電圧またはチェックポイントに対して各セルを交互にプログラム/ベリファイすることによってこれは達成される。チェックポイントは、消去状態のしきい値電圧近くのしきい値電圧にあることが好ましいので、一般に、交互にプログラムおよびベリファイをすることは相対的にあまりパルスを含まない。パルス間の各ベリファイステップは、チェックポイントの1つの境界値を検知するだけである。
【0070】
第2の段階では、各セルは、次のメモリ状態から周知の位置にあるチェックポイントからプログラムされ続けることになる。したがって、所定の関数は、従来の追跡および誤差方法でパルス間においてベリファイする必要なしに、所与の目標状態にセルをプログラムすると見込まれるプログラミング電圧を予測することができることになる。各セルのプログラムインデックスは、最初のプログラミングパスでセルをプログラムするのに使用される最後のプログラミング電圧レベルまたはパルス数となる。
【0071】
所定のステップサイズを有するパルストレインとしてのプログラミング電圧
好適な実施形態では、プログラミング電圧ステップサイズは、追加の各パルスがメモリセルを次のメモリ状態にプログラムすることになるように調整される。16の可能なメモリ状態を有するメモリセルの例の場合、パルスサイズは300mVであってもよい。このようにして、一方の追加パルスがメモリを状態(1)にプログラムし、他方の追加パルスがメモリを状態(2)にプログラムすることになるなど、以下同様である。したがって、所与のメモリ状態にプログラムすることは、状態(0)からの状態の数をカウントすることと、同じ数のパルスを供給することとに短縮することができる。例えば、状態(0)でフラグが一度設定されてもよく、その後、目標状態が状態(0)から離れている状態の数と同じパルスの数によってプログラムすることができる。
他のプログラミングパルスサイズも可能である。例えば、16の可能なメモリ状態を有するメモリセルの場合、パルスサイズは150mVであってもよい。その場合、1つのメモリ状態から次の隣接するメモリ状態までプログラムするのに2パルスかかることになる。これによって、プログラミングにおいてより細かい分解能が提供されることになり、目標しきい値からのマージンが使用される一部の実施例で役立つ。
【0072】
図18Aは、各追加のパルスがメモリセルを次のメモリ状態にプログラムするようなステップサイズを有するプログラミング電圧を設定することを示す流れ図である。図13に示されるステップ710は、以下をさらに含む。
ステップ712:振幅が増加するパルストレインの形態で時間とともに増加する振幅を有するプログラミング電圧を供給する。
ステップ714:メモリセルが1つのプログラムされたメモリ状態から次のプログラムされたメモリ状態まで連続するパルスによってプログラムされるようにパルス間の振幅増加を調整する。
【0073】
図18Bは、最初のプログラミングパスを受けるメモリセルのしきい値電圧を概略的に示す。メモリセルは、低いしきい値電圧レベルのうちのいずれか1つでもよい消去状態から開始する。最初のプログラミング段階の間に、一連のプログラム/ベリファイサイクル(例えば、x個のプログラムパルスとn*x個のベリファイステップとの合計)によって、メモリセルが消去状態から状態(0)にプログラムされることになる。一般に、各メモリセルのxは、互いに独立している。個々のセルをどれ程完全に消去したかおよび他の要因のために、個々のセルは指定されたチェックポイントに到達するためのプログラミングパルスの数によって異なる場合もある。例えば、しきい値電圧が低い「遅い」セルは、高いしきい値電圧を有する「通常」セルよりも状態(0)に到達するのに多くのパルスをかけることになる。完全に消去される「非常に遅い」セルはしきい値電圧がさらに低くなり、状態(0)にするのにさらに多くのプログラミングパルスをかけることになる。メモリセルが状態(0)になると、予測プログラミングモードが始まり、追加の各パルスはメモリセルを次のメモリ状態にプログラムすることになる。
【0074】
図19は、メモリセルのプログラムインデックスを設定することの好適な実施例を示す流れ図を示す。プログラムインデックスは、図8に示されるメモリセルに関連するデータラッチ430のうちの1つに維持される。図13に示されるステップ720は、以下をさらに含む。
ステップ752:メモリセルのプログラムインデックスを記憶するラッチを提供する。
ステップ754:チェックポイント状態から目標状態にメモリセルをプログラムすると見込まれるパルスの数の形態で最初に目標状態をラッチに記憶する。例えば、目標状態が状態(5)である場合、状態(5)がラッチに記憶されることになる(バイナリ値0101)。
ステップ756:メモリセルを消去状態からチェックポイント状態にプログラムするのに必要なパルスの数をラッチに累積することによってメモリセルのプログラムインデックスを計算する。プログラムインデックスは、メモリセルを目標状態にプログラムすることが見込まれるパルスの数を示す。例えば、メモリセルを消去状態からチェックポイントにプログラムする際にメモリセルにパルスが印加される毎に、ラッチ内のプログラムインデックスは1だけ増加される。
【0075】
図20(A)、(B)および(C)は、それぞれ図18Bに示される「通常」セル、「遅い」セルおよび「非常に遅い」セルについて図19のラッチ動作を示す。
図20(A)は、図18Bに示される例示的な「通常」メモリセルのプログラムインデックスを計算するラッチ動作を示す。「通常」メモリセルは、消去された集団のしきい値電圧の範囲の中央付近にあるしきい値電圧まで消去される。メモリセルは、目標状態ラッチのデータによって示される状態(3)にプログラムされることになる。したがって、プログラムインデックスを維持するデータラッチは、最初に「3」に設定される。メモリセルを消去状態からチェックポイント状態(0)にするためのすべてのプログラミングパルスで、データラッチ内の値は1だけ増加される。チェックポイントがプログラムベリファイされると増加は止まる。この例では、1パルス後にこれが発生し、ラッチ内のプログラムインデックスが「4」に増加される。これは、このセルが4つのパルスで状態(3)にプログラムされると見込んでいることを意味する。このセルをチェックポイントから状態(3)にプログラムするために、合計が4パルスとなる追加の3つのパルスが印加される。セルがプログラムインデックスと等しいパルス数を受けたらそのセルはプログラムすることを禁止されるが、ページ内の他のセルはプログラムされ続けることもできる。これは「P」から「I」に進んで行くプログラム/禁止状況によって示される。
【0076】
図20(B)は、図18Bに示される例示的な「遅い」メモリセルのプログラムインデックスを計算するラッチ動作を示す。「遅い」メモリセルは、消去された集団のしきい値電圧の範囲の中央よりも低い位置にあるしきい値電圧まで消去された。メモリセルは、同様に、目標状態ラッチのデータによって示される状態(3)にプログラムされることになる。したがって、プログラムインデックスを維持するデータラッチは、最初に「3」に設定される。メモリセルを消去状態からチェックポイント状態(0)にするためのすべてのプログラミングパルスで、データラッチ内の値は1だけ増加される。チェックポイントがプログラムベリファイされると増加は止まる。この例では、2パルス後にこれが発生し、ラッチ内のプログラムインデックスが「5」に増加される。これは、このセルが5つのパルスで状態(3)にプログラムされると見込んでいることを意味する。このセルをチェックポイントから状態(3)にプログラムするために、合計が5パルスとなる追加の3つのパルスが印加される。セルがプログラムインデックスと等しいパルス数を受けたらそのセルはプログラムすることを禁止されるが、ページ内の他のセルはプログラムされ続けることもできる。これは「P」から「I」に進んで行くプログラム/禁止状況によって示される。
【0077】
図20(C)は、図18Bに示される例示的な「非常に遅い」メモリセルのプログラムインデックスを計算するラッチ動作を示す。「非常に遅い」メモリセルは、消去された集団のしきい値電圧の範囲の低いほうの末端部にあるしきい値電圧まで消去される。メモリセルは、同様に、目標状態ラッチのデータによって示される状態(3)にプログラムされることになる。したがって、プログラムインデックスを維持するデータラッチは、最初に「3」に設定される。メモリセルを消去状態からチェックポイント状態(0)にするためのすべてのプログラミングパルスで、データラッチ内の値は1だけ増加される。チェックポイントがプログラムベリファイされると増加は止まる。この例では、4パルス後にこれが発生し、ラッチ内のプログラムインデックスが「7」に増加される。これは、このセルが7つのパルスで状態(3)にプログラムされると見込んでいることを意味する。このセルをチェックポイントから状態(3)にプログラムするために、合計が7パルスとなる追加の3つのパルスが印加される。セルがプログラムインデックスと等しいパルス数を受けたらそのセルはプログラムされることを禁止されるが、ページ内の他のセルはプログラムされ続けてもよい。
【0078】
プログラム精度を向上させるとともにしきい値分布を絞り込むためのインデックスプログラミングを有する後続のプログラミングパス
本発明の別の一般的な態様によれば、メモリセルのグループに対して並列で動作するマルチパスインデックスプログラミング方法は、最初のプログラミングパスと、各セルのプログラムインデックスの構築とを含む。最初のプログラミングパスの後にベリファイステップおよび追加のプログラミングステップが続き、最初のパスによるいかなる不足もトリミングする。インデックスプログラミングを使用することによって、大幅に削減された数のベリファイ動作でマルチパスプログラミングが実施される。
【0079】
最初のプログラミングパスは、各セルのプログラムインデックスを構築しながら、セルのそれぞれの目標状態に近い不足分の範囲内にグループの各セルをプログラムもするのが好ましい。次に、1つ以上のその後のプログラミングパスにおいて、各セルはその不足分からその目標状態にさらにプログラムされる。パス内の各パルスの間ではないもののそれぞれの後続のプログラミングパスの前に、ベリファイステップによって完了されるのが好ましい。セルがまだベリファイされていない場合には、次のプログラミングパスで追加のプログラミングが可能になる。プログラミングパスの最後でセルのプログラムインデックスは、セルが受け取った最後のプログラミング電圧レベルを示す。ベリファイステップによってセルがその目標状態とベリファイされていないことが分かった場合、セルをその目標状態に向けてプログラムするために、プログラムインデックスは所定の量だけ増加されて、次のプログラミングパスで許容される予測最大プログラミング電圧を供給することになる。好適な実施形態では、プログラムインデックスはパルス数によって表現され、1つだけ増加される。次のプログラミングパスでは、メモリセルは、次にその更新されたプログラムインデックスに基づいて次のパルスを受けることになる。
【0080】
次のプログラミングパスの間に、ベリファイ後のセルはそれ以上プログラムされるのを禁止される。ベリファイ前のセルは、そのパスを越えて最後のプログラミングパスで1つのパルスによってプログラムすることができる。ベリファイステップおよびプログラミングパスは、グループ内のすべてのセルがそのそれぞれの目標状態とベリファイされるまで繰り返される。このように、ベリファイステップを実施する前にパルストレインの全行程を印加することによって、メモリセルのページをそのそれぞれの目標状態に並列に正しくプログラムすることが可能である。
インデックスプログラミングの利点は、プログラミングパスの各プログラミングパルスの間にベリファイステップを必要としないでセルのグループをプログラムすることができることである。インデックスプログラミングは、プログラミング動作の性能を大幅に向上させることになる。
【0081】
図21は、インデックスプログラミング方法の好適な実施形態を示す流れ図である。この方法は、各セルのプログラムインデックスを設定する最初のプログラミングパスのステップ810と、その後に、セルをそのそれぞれの目標状態にプログラムするためにベリファイおよびインデックスプログラムを行う追加のパスのステップ820とを含む。
ステップ800:並列にプログラムされるメモリセルのグループを提供する。各メモリセルは、一連の増加するプログラミング電圧パルスによってそれぞれの目標状態にプログラム可能である。
ステップ810:最初のプログラミングパスの間にグループの各セルのプログラムインデックスを構築する。プログラムインデックスは、各セルによって経験された最後のプログラミング電圧レベルをパルス数によって記憶している。
ステップ820は、プログラミングパスの後でベリファイし、次のプログラミングパスのプログラムインデックスを更新することである。ステップ820は、ステップ822、ステップ824、ステップ826およびステップ828をさらに含む。
ステップ830:グループ内のメモリセルをベリファイする。
ステップ840:グループ内の各メモリセルはそのそれぞれの目標状態とベリファイされるか? ベリファイされる場合はステップ870に進み、そうでない場合はステップ850に進む。
ステップ850:ベリファイ前の各メモリセルのプログラムインデックスを1だけ増加させる。
ステップ860:ベリファイ前の各メモリセルを各プログラムインデックスによって選択されたプログラミングパルスでプログラムする。好適な実施形態では、選択されたプログラミングパルスは、プログラムインデックスによって示されるものと同じパルス数を有する。別のプログラミングパスについてステップ830に進む。
ステップ870:グループ内のすべてのメモリセルがベリファイされ、そのそれぞれの目標状態にプログラムされる。
図13および図21に示されるインデックスプログラミング方法は、メモリアレイ200のメモリ動作を制御する制御回路110の状態マシン112(図1参照)で実施されるのが好ましい。
【0082】
図22は、最初のパスの後でプログラム結果をトリミングするための、図21のステップ820に示される追加のベリファイおよびプログラミングパスを示す。最初のプログラミングパスの目標状態への第1の試みの後で、各メモリセルはベリファイによってチェックされる。最初のプログラミングパスは目標状態を達成しないことが多い。たとえセルがその目標状態とのベリファイに失敗しても、第2のプログラミングパスで増加プログラミングをすることができる。ページ内のすべてのセルがそのそれぞれの目標状態とベリファイされるまで、ベリファイおよびプログラムプロセスは繰り返される。このようにして、以前のパスのプログラム結果をトリミングすることによって、セルはその目標状態に正確に収束していくことができる。一般に、1つまたは2つのトリミングパスが必要である。
【0083】
図23は、ベリファイ状態フラグを記憶するラッチを概略的に示す。好適な実施形態では、図8に示されるデータラッチ430の一部であるラッチ432を使用して、ベリファイ状態ビットを記憶する。例えば、セルがベリファイされると、ラッチ432のベリファイ状態ビットは「0」に設定される。このフラグによって、制御ロジックはこのセルにさらにプログラム/ベリファイ動作を行うことを禁止する。一方、セルがベリファイに失敗した場合は、このフラグによって制御ロジックは次のプログラミングパスでセルに追加のプログラミングを許可することになる。ベリファイ状態フラグの従来の実施例は、目標変更を通してのプログラム禁止を示すことである。その場合、セルがベリファイすると、目標データがセルにプログラムされてもう必要なくなる。したがって、目標データを示すデータラッチのデータ値は、「目標符号」から「消去符号」にリセットされ、セルがベリファイされた状態を指定する。本発明では、その後のプログラミングパスで目標データが必要なため、これがデータラッチに保持される。その代わりに、ベリファイ状態がベリファイ状態フラグに記憶される。
【0084】
図24Aは、ベリファイ状態フラグの使用によってベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。以下のステップ842およびステップ844は、図21のステップ840を実施する間に実施される。
ステップ842:ベリファイ結果に従ってラッチ内のベリファイ状態フラグを設定する。
ステップ844:メモリセルがベリファイされていないことを示すベリファイ状態フラグに応答してステップ850に進み、そうでない場合は図21のステップ870に進む。
第2の好適な実施形態では、ベリファイ前のメモリセルは、メモリセルのプログラムインデックスを所定の数だけ高くオフセットさせることによってプログラミングをさらにトリミングすることが可能になる。ほとんどの場合、オフセットの所定の数は1である。このようにして、次のプログラミングパスで、メモリセルは、追加の所定のパルス数によってプログラムされることになる。
【0085】
図24Bは、メモリセルのプログラムインデックスをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。図21のステップ850はステップ850’で置き換えられる。
ステップ850’:メモリセルがベリファイされていない場合、所定の数だけメモリセルのプログラムインデックスを増加して、その後のプログラミングパスでメモリセルが追加の所定のパルス数を受けることができるようにする。
第3の好適な実施形態では、ベリファイ前のメモリセルは、次のプログラミングパルスでパルスカウントを所定の数だけ低くオフセットさせることによってプログラミングをさらにトリミングすることが可能になる。このようにして、メモリセルは、追加の所定のパルス数によってプログラムされることになる。
【0086】
図24Cは、パルスカウントをオフセットさせることによって、ベリファイされていないメモリセルをさらにプログラムできるようにする方法を示す流れ図である。図21のステップ850はステップ852で置き換えられる。
ステップ852:メモリセルがベリファイされていない場合、所定の数だけプログラミングパルスカウントを減少させて、その後のプログラミングパスでメモリセルが追加の所定のパルス数を受けることができるようにする。
【0087】
図25は、インデックスプログラミング技術を使用してページをプログラムするためのプログラミングパルスおよびベリファイサイクルの推定数を示す表である。例えば、Nビットメモリでは、区分化は、NS =2N 状態になる。プログラムパルスの数は、少なくとも状態の数NS と同じである。1.1)チェックポイントとのプログラムベリファイ、1.2)チェックポイントから目標状態への予測プログラミング、および2)1つ以上のトリミングパスについてのパルスおよびベリファイの数に対して推定値が与えられる。図12の最後の列は、ベリファイの総数の推定値を示す。本質的に、推定値はメモリ状態の数に比例することが分かる。この属性は、ベリファイの総数が状態の数の2乗に比例する図12に示される従来の方法を使用することからの属性と比較することができる。例えば、3ビットメモリセルの場合、ベリファイの総数は、従来の56と比較して約18であると推定される。ベリファイの総数が240と比較して34となる4ビットメモリの場合、この削減は一層劇的である。
【0088】
相関マルチパスプログラミング
図13に示されるインデックスプログラミング方法には、複数のプログラミングパスが必要である。インデックス作成および予測プログラミングのための最初のパスの後には、プログラムされたしきい値を目標状態付近にトリミングするために1つまたは2つのインデックスプログラミングパスが続く可能性が非常に高い。各プログラミングパスのパルスの数は、メモリ状態の数に少なくとも等しい。これは、各パルスが2つの状態間の距離に等しい量だけセルのしきい値電圧を増加させる粗い粒度を与えることになる。その結果、各メモリ状態のしきい値分布(例えば、図10を参照)は広がることになる。
【0089】
現在のアルゴリズムでは、より絞り込まれた各メモリ状態のしきい値電圧分布を得るために、各パスで一層細かいステップサイズを使用することが可能である。例えば、第1のトリミングで、パルスステップサイズを予測プログラミングで使用されるステップサイズと比較して2倍細かくすることができる。同様に、第2のトリミングで、パルスステップサイズを第1のトリミングで使用されるステップサイズと比較して2倍細かくすることができるなど、以下同様である。しかし、ステップサイズが半分に削減される度に、パルスの数、したがってプログラミング時間は2倍になることになる。
【0090】
本発明の別の態様によれば、メモリセルのグループは、複数のプログラミングパスで並列にプログラムされ、複数のパスではプログラミング電圧の相関が取られている。各プログラミングパスは、共通のステップサイズを有する階段パルストレインの形態をとるプログラミング電圧を使用し、連続するそれぞれのパスは、その前のパスの階段パルストレインから所定のオフセットレベルだけオフセットしている階段パルストレインを有する。所定のオフセットレベルは、共通ステップサイズよりも小さく、前のパスの所定のオフセットレベル以下であってもよい。
【0091】
1つの好適な実施形態では、所定のオフセットは、前のパスの所定のオフセットの半分である。例えば、2番目のパスの階段パルストレインは、最初のパスからステップサイズの半分だけオフセットし、3番目のパスの階段パルストレインは、2番目のパスから4分の1ステップサイズだけオフセットしている。このようにして、それぞれのパスでさらに細かいステップサイズを有するプログラミング階段パルストレインを使用する複数のパスを用いる従来の方法よりも少ないプログラミングパルスを使用して、複数のパスにわたり同じプログラム分解能を達成することができる。
【0092】
図26は、図21に示されるインデックスプログラミングパスへの相関マルチパスプログラミングの適用を示す。その関連で、図26は、図17および図22に示されるような最初のプログラミングパスに続くトリミングプログラミングパス2)および3)についても示す。3つのパスで使用される階段パルストレインはすべて同一ステップサイズを有する。最初のプログラミングパス1)で使用される階段パルストレインは、VPGM0の最初のプログラミング電圧を有する。一方、第2のプログラミングパス2)で使用される階段パルストレインは、VPGM1の最初のプログラミング電圧を有し、VPGM1はVPGM1=VPGM0+ΔVPGM1となるようにVPGM0と相関が取られている。好適な実施形態では、ΔVPGM1=1/2ステップサイズである。
【0093】
同様に、第3のプログラミングパス3)で使用される階段パルストレインは、VPGM2の最初のプログラミング電圧を有し、VPGM2はVPGM2=VPGM0+ΔVPGM2=VPGM1+ΔVPGM12 となるようにVPGM1およびVPGM0と相関が取られている。好適な実施形態では、ΔVPGM2=3/4ステップサイズ、またはΔVPGM12 =1/4ステップサイズである。
したがって、相関マルチパスプログラミングは、各プログラミングパスで同じ階段パルストレインを使用する。ただし、階段パルス全体のDCレベルが各パスについて所定の量だけ高くシフトされている点は除く。好適な実施形態では、第2のパスは、その前のパスに対して1/2ステップサイズだけシフトされ、第3のパスは1/4ステップサイズだけシフトされている。これらの3つの相関プログラミング電圧波形を使用するプログラミングは、各パスがその前のステップサイズの1/2ステップサイズの階段波形を使用する3つの従来の単一パスプログラミングと同じ分解能が得られる。
【0094】
図27は、マルチパスプログラミングを使用することによるメモリ状態のしきい値電圧分布の絞り込みを示す。それぞれの分布の下部端はすべてのパスについて絞られる。
【0095】
図28Aは、メモリ状態の様々な区分化のために従来のマルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。Pがプログラミングパス数のとき、パルスの数は(20 +21 +・・・+2P-1 )×2N となることが分かる。例えば、3パスプログラミングの場合、3ビットセルには56パルスが必要なことになり、4ビットセルには112パルスが必要なことになる。
【0096】
図28Bは、メモリ状態の様々な区分化のために相関マルチパスプログラミングで使用されるプログラミングパルスの数を示す表である。パルスの数はちょうどP×2N であることが分かる。例えば、3パスプログラミングの場合、3ビットセルには24パルスが必要なことになり、4ビットセルには48パルスが必要なことになる。これは図28Aに示される従来のマルチパスプログラミングで必要となるパルス数より大幅に少ない。
【0097】
図29は、パス間で相関プログラミングレベルを使用するマルチパスプログラミング方法を示す流れ図である。
ステップ960:所定のステップサイズを有する階段パルストレインの形態で限られた期間経時的に増加するプログラミング電圧を供給する。
ステップ970:所定の数の複数のプログラミングパスでメモリセルのグループをプログラムする。各連続するプログラミングパスは、メモリセルのグループをプログラムするために印加される階段パルストレインを有し、各連続するプログラミングパスは、その前のプログラミングパスの階段パルストレインから所定のオフセットレベルだけオフセットしている階段パルストレインを有する。
ステップ980:グループに対するプログラミングが完了する。
【0098】
マルチパスインデックスプログラミング技術によってベリファイ動作の数を大幅に削減することができる。同様に、マルチパス相関プログラミング技術によって、必要なプログラミングパルスの数を大幅に削減することができる。2つの技術をまとめて高性能マルチパスインデックスおよび相関プログラミングに統合することができる。セル当たり3ビット以上のデータを記憶するように構成されるメモリの場合、この恩恵はなおさら大きい。
【0099】
本願明細書で言及されるすべての特許、特許出願、論文、書籍、仕様書、他の刊行物、文書および事柄は、あらゆる目的でその全体が本願明細書において参照により援用されている。援用されている刊行物、文書またはこの文書の事柄および文章のいずれかの間で用語の定義または使用が矛盾または衝突する場合には、本願明細書中の用語の定義または使用が優先するものとする。
本発明の様々な態様を特定の実施形態を参照しながら説明してきたが、当然のことながら、本発明は、添付の特許請求の範囲の全範囲内においてその権利が保護される権利を有する。
【特許請求の範囲】
【請求項1】
各メモリセルがそれぞれの目標状態にプログラム可能であるメモリセルのアレイを有する不揮発性メモリにおいて、前記メモリセルのグループを並列にプログラムする方法であって、
(a)プログラム中に前記グループの各メモリセルにプログラムインデックスを提供するスッテプであって、メモリセルの前記プログラムインデックスは前記メモリセルをプログラムするのに使用される最後のプログラミング電圧レベルを示す、前記プログラムインデックスを提供するステップと、
(b)プログラミング電圧をプログラミングパスの一連の増加する電圧パルスとして前記メモリセルのグループに印加するステップと、
(c)前記メモリセルのプログラムインデックスに従って前記プログラミングパスの間にメモリセルのプログラミングを可能にするかあるいはプログラミングを禁止するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記プログラミング電圧を一連の増加する電圧パルスとして印加するステップが、前記プログラミングパスの間の電圧パルス間に前記メモリセルのグループに対してベリファイステップなしに実施される方法。
【請求項3】
請求項1記載の方法において、
(d)前記グループのメモリセルをそのそれぞれの目標状態に対してベリファイするステップと、
(e)次のプログラミングパスで使用される最後のプログラミング電圧レベルを反映するための所定の増加によってベリファイされていないメモリセルの前記プログラムインデックスを更新し、かつ次のプログラミングパスでベリファイされていない前記メモリセルをさらにプログラミングできるようにするステップと、
(f)前記グループのメモリセルがそのそれぞれの目標しきい値電圧レベルに対してベリファイされるまで(b)〜(e)を繰り返すステップと、
をさらに含む方法。
【請求項4】
請求項3記載の方法において、
前記プログラミング電圧を一連の増加する電圧パルスとして印加するステップが、前記プログラミングパスの間の電圧パルス間に前記メモリセルのグループに対してベリファイステップなしに実施される方法。
【請求項5】
請求項1記載の方法において、
前記プログラムインデックスによって示される最後のプログラミング電圧レベルが、前記メモリセルをプログラムするのに使用される最後の電圧パルスを特定するパルス数によって表される方法。
【請求項6】
請求項1記載の方法において、
最初のプログラミングパスの間に、各プログラミング電圧パルスの後にベリファイステップが続き、
前記メモリセルのプログラムインデックスが、前記メモリセルが目標状態とベリファイされるまで各プログラミング電圧パルスの電圧レベルで更新することによって得られる方法。
【請求項7】
請求項1記載の方法において、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、前記セルの目標状態から所定の不足分の範囲内に前記メモリセルをプログラムすると推定されるプログラミング電圧レベルに最初に設定される方法。
【請求項8】
請求項7記載の方法において、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、所定の関数によって最初に設定され、
前記所定の関数が、計算されたプログラミング電圧値を前記メモリセルの目標状態の関数として生成する方法。
【請求項9】
請求項8記載の方法において、
前記所定の関数は、実質的に線形関数である方法。
【請求項10】
請求項8記載の方法において、
前記所定の関数は線形であり、推定された傾きおよびチェックポイントによって定義される方法。
【請求項11】
請求項10記載の方法において、
指定されたしきい値電圧レベルで所定の関数のチェックポイントを指定するステップと、
前記メモリセルが指定されたしきい値電圧レベルでプログラムベリファイされるまで、前記メモリセルを交互にプログラムおよびベリファイすることによって対応するチェックポイントプログラミング電圧値を決定するステップと、
前記チェックポイントに従って所定の関数を較正するステップと、
をさらに含む方法。
【請求項12】
請求項1記載の方法において、
前記メモリセルにプログラムされるプログラムデータを記憶する一連のデータラッチを提供するステップと、
前記一連のデータラッチに加えて、前記メモリセルがプログラムベリファイされているか否かを示す状態を記憶するラッチを提供するステップと、
をさらに含む方法。
【請求項13】
請求項1記載の方法において、
各増加する電圧パルスが、前記メモリセルを1つのメモリ状態から隣接するメモリ状態へ実質的にプログラムする電圧レベルを有する方法。
【請求項14】
請求項1記載の方法において、
各メモリセルが、電界効果トランジスタのフローティングゲートである電荷蓄積素子を有する方法。
【請求項15】
請求項1記載の方法において、
各メモリセルが、電界効果トランジスタの誘電層である電荷蓄積素子を有する方法。
【請求項16】
請求項1記載の方法において、
前記不揮発性メモリが、NAND構造を有するメモリセルを有する方法。
【請求項17】
請求項1記載の方法において、
前記不揮発性メモリは、フラッシュEEPROMである方法。
【請求項18】
請求項1記載の方法において、
前記不揮発性メモリが、メモリカードに具現化される方法。
【請求項19】
請求項1記載の方法において、
プログラム中の前記メモリセルが、それぞれ2ビット以上のデータを記憶する方法。
【請求項20】
不揮発性メモリであって、
各メモリセルがそれぞれの目標状態にプログラム可能であるメモリセルのアレイと、
メモリセルのグループを並列に読み出すとともにプログラムする読み出し/書き込み回路と、
プログラム中の前記グループの各メモリセルのプログラムインデックスであって、前記メモリセルをプログラムするのに使用される最後のプログラミング電圧レベルを示すメモリセルのプログラムインデックスと、を備え、
プログラミングを実施する前記読み出し/書き込み回路が、
(a)プログラミング電圧をプログラミングパスの一連の増加する電圧パルスとして前記メモリセルのグループに印加することと、
(b)前記メモリセルのプログラムインデックスに従って前記プログラミングパスの間にメモリセルのプログラミングを可能にするかあるいはプログラミングを禁止することができることと、
を含む不揮発性メモリ。
【請求項21】
請求項20記載の不揮発性メモリにおいて、
プログラミング電圧を一連の増加する電圧パルスとして印加する前記読み出し/書き込み回路が、前記プログラミングパスの間の電圧パルス間に前記メモリセルのグループに対してベリファイステップなしに実施される不揮発性メモリ。
【請求項22】
請求項20記載の不揮発性メモリにおいて、
プログラミングを実施する前記読み出し/書き込み回路が、
(c)前記グループのメモリセルをそのそれぞれの目標状態に対してベリファイすることと、
(d)次のプログラミングパスで使用される最後のプログラミング電圧レベルを反映するための所定の増加によってベリファイされていないメモリセルの前記プログラムインデックスを更新し、かつ次のプログラミングパスでベリファイされていない前記メモリセルをさらにプログラミングできるようにすることと、
(e)前記グループのメモリセルがそのそれぞれの目標しきい値電圧レベルに対してベリファイされるまで(a)〜(d)を繰り返すことと、
をさらに含む不揮発性メモリ。
【請求項23】
請求項22記載の不揮発性メモリにおいて、
プログラミング電圧を一連の増加する電圧パルスとして印加する前記読み出し/書き込み回路が、プログラミングパスの間の電圧パルス間に前記メモリセルのグループに対してベリファイステップなしに実施される不揮発性メモリ。
【請求項24】
請求項20記載の不揮発性メモリにおいて、
前記プログラムインデックスによって示される最後のプログラミング電圧レベルが、前記メモリセルをプログラムするのに使用される最後の電圧パルスを特定するパルス数によって表される不揮発性メモリ。
【請求項25】
請求項20記載の不揮発性メモリにおいて、
最初のプログラミングパスの間に、前記読み出し/書き込み回路が、各プログラミング電圧パルスの後に続くベリファイステップを実施し、
前記メモリセルのプログラムインデックスが、前記メモリセルが目標状態とベリファイされるまで各プログラミング電圧パルスの電圧レベルで更新することによって得られる不揮発性メモリ。
【請求項26】
請求項20記載の不揮発性メモリにおいて、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、前記メモリセルの目標状態から所定の不足分の範囲内に前記メモリセルをプログラムすると推定されるプログラミング電圧レベルに最初に設定される不揮発性メモリ。
【請求項27】
請求項26記載の不揮発性メモリにおいて、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、所定の関数によって最初に設定され、
前記所定の関数が、計算されたプログラミング電圧値を前記メモリセルの目標状態の関数として生成する不揮発性メモリ。
【請求項28】
請求項27記載の不揮発性メモリにおいて、
前記所定の関数は、実質的に線形関数である不揮発性メモリ。
【請求項29】
請求項27記載の不揮発性メモリにおいて、
前記所定の関数は線形であり、推定された傾きおよびチェックポイントによって定義される不揮発性メモリ。
【請求項30】
請求項29記載の不揮発性メモリにおいて、
前記所定の関数を較正する前記読み出し/書き込み回路が、
指定されたしきい値電圧レベルで前記所定の関数のチェックポイントを指定することと、
前記メモリセルが指定されたしきい値電圧レベルでプログラムベリファイされるまで、前記メモリセルを交互にプログラムおよびベリファイすることによって対応するチェックポイントプログラミング電圧値を決定することと、
前記チェックポイントに従って前記所定の関数を較正することと、
を含む不揮発性メモリ。
【請求項31】
請求項20記載の不揮発性メモリにおいて、
前記メモリセルにプログラムされるプログラムデータを記憶する一連のデータラッチと、
前記一連のデータラッチに加えて、前記メモリセルがプログラムベリファイされているか否かを示す状態を記憶するラッチと、
をさらに備える不揮発性メモリ。
【請求項32】
請求項20記載の不揮発性メモリにおいて、
各増加する電圧パルスが、前記メモリセルを1つのメモリ状態から隣接するメモリ状態へ実質的にプログラムする電圧レベルを有する不揮発性メモリ。
【請求項33】
請求項20記載の不揮発性メモリにおいて、
各メモリセルが、電界効果トランジスタのフローティングゲートである電荷蓄積素子を有する不揮発性メモリ。
【請求項34】
請求項20記載の不揮発性メモリにおいて、
各メモリセルが、電界効果トランジスタの誘電層である電荷蓄積素子を有する不揮発性メモリ。
【請求項35】
請求項20記載の不揮発性メモリにおいて、
前記不揮発性メモリが、NAND構造を有するメモリセルを有する不揮発性メモリ。
【請求項36】
請求項20記載の不揮発性メモリにおいて、
前記不揮発性メモリは、フラッシュEEPROMである不揮発性メモリ。
【請求項37】
請求項20記載の不揮発性メモリにおいて、
前記不揮発性メモリが、メモリカードに具現化される不揮発性メモリ。
【請求項38】
請求項20記載の不揮発性メモリにおいて、
プログラム中の前記メモリセルが、それぞれ2ビット以上のデータを記憶する不揮発性メモリ。
【請求項1】
各メモリセルがそれぞれの目標状態にプログラム可能であるメモリセルのアレイを有する不揮発性メモリにおいて、前記メモリセルのグループを並列にプログラムする方法であって、
(a)プログラム中に前記グループの各メモリセルにプログラムインデックスを提供するスッテプであって、メモリセルの前記プログラムインデックスは前記メモリセルをプログラムするのに使用される最後のプログラミング電圧レベルを示す、前記プログラムインデックスを提供するステップと、
(b)プログラミング電圧をプログラミングパスの一連の増加する電圧パルスとして前記メモリセルのグループに印加するステップと、
(c)前記メモリセルのプログラムインデックスに従って前記プログラミングパスの間にメモリセルのプログラミングを可能にするかあるいはプログラミングを禁止するステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記プログラミング電圧を一連の増加する電圧パルスとして印加するステップが、前記プログラミングパスの間の電圧パルス間に前記メモリセルのグループに対してベリファイステップなしに実施される方法。
【請求項3】
請求項1記載の方法において、
(d)前記グループのメモリセルをそのそれぞれの目標状態に対してベリファイするステップと、
(e)次のプログラミングパスで使用される最後のプログラミング電圧レベルを反映するための所定の増加によってベリファイされていないメモリセルの前記プログラムインデックスを更新し、かつ次のプログラミングパスでベリファイされていない前記メモリセルをさらにプログラミングできるようにするステップと、
(f)前記グループのメモリセルがそのそれぞれの目標しきい値電圧レベルに対してベリファイされるまで(b)〜(e)を繰り返すステップと、
をさらに含む方法。
【請求項4】
請求項3記載の方法において、
前記プログラミング電圧を一連の増加する電圧パルスとして印加するステップが、前記プログラミングパスの間の電圧パルス間に前記メモリセルのグループに対してベリファイステップなしに実施される方法。
【請求項5】
請求項1記載の方法において、
前記プログラムインデックスによって示される最後のプログラミング電圧レベルが、前記メモリセルをプログラムするのに使用される最後の電圧パルスを特定するパルス数によって表される方法。
【請求項6】
請求項1記載の方法において、
最初のプログラミングパスの間に、各プログラミング電圧パルスの後にベリファイステップが続き、
前記メモリセルのプログラムインデックスが、前記メモリセルが目標状態とベリファイされるまで各プログラミング電圧パルスの電圧レベルで更新することによって得られる方法。
【請求項7】
請求項1記載の方法において、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、前記セルの目標状態から所定の不足分の範囲内に前記メモリセルをプログラムすると推定されるプログラミング電圧レベルに最初に設定される方法。
【請求項8】
請求項7記載の方法において、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、所定の関数によって最初に設定され、
前記所定の関数が、計算されたプログラミング電圧値を前記メモリセルの目標状態の関数として生成する方法。
【請求項9】
請求項8記載の方法において、
前記所定の関数は、実質的に線形関数である方法。
【請求項10】
請求項8記載の方法において、
前記所定の関数は線形であり、推定された傾きおよびチェックポイントによって定義される方法。
【請求項11】
請求項10記載の方法において、
指定されたしきい値電圧レベルで所定の関数のチェックポイントを指定するステップと、
前記メモリセルが指定されたしきい値電圧レベルでプログラムベリファイされるまで、前記メモリセルを交互にプログラムおよびベリファイすることによって対応するチェックポイントプログラミング電圧値を決定するステップと、
前記チェックポイントに従って所定の関数を較正するステップと、
をさらに含む方法。
【請求項12】
請求項1記載の方法において、
前記メモリセルにプログラムされるプログラムデータを記憶する一連のデータラッチを提供するステップと、
前記一連のデータラッチに加えて、前記メモリセルがプログラムベリファイされているか否かを示す状態を記憶するラッチを提供するステップと、
をさらに含む方法。
【請求項13】
請求項1記載の方法において、
各増加する電圧パルスが、前記メモリセルを1つのメモリ状態から隣接するメモリ状態へ実質的にプログラムする電圧レベルを有する方法。
【請求項14】
請求項1記載の方法において、
各メモリセルが、電界効果トランジスタのフローティングゲートである電荷蓄積素子を有する方法。
【請求項15】
請求項1記載の方法において、
各メモリセルが、電界効果トランジスタの誘電層である電荷蓄積素子を有する方法。
【請求項16】
請求項1記載の方法において、
前記不揮発性メモリが、NAND構造を有するメモリセルを有する方法。
【請求項17】
請求項1記載の方法において、
前記不揮発性メモリは、フラッシュEEPROMである方法。
【請求項18】
請求項1記載の方法において、
前記不揮発性メモリが、メモリカードに具現化される方法。
【請求項19】
請求項1記載の方法において、
プログラム中の前記メモリセルが、それぞれ2ビット以上のデータを記憶する方法。
【請求項20】
不揮発性メモリであって、
各メモリセルがそれぞれの目標状態にプログラム可能であるメモリセルのアレイと、
メモリセルのグループを並列に読み出すとともにプログラムする読み出し/書き込み回路と、
プログラム中の前記グループの各メモリセルのプログラムインデックスであって、前記メモリセルをプログラムするのに使用される最後のプログラミング電圧レベルを示すメモリセルのプログラムインデックスと、を備え、
プログラミングを実施する前記読み出し/書き込み回路が、
(a)プログラミング電圧をプログラミングパスの一連の増加する電圧パルスとして前記メモリセルのグループに印加することと、
(b)前記メモリセルのプログラムインデックスに従って前記プログラミングパスの間にメモリセルのプログラミングを可能にするかあるいはプログラミングを禁止することができることと、
を含む不揮発性メモリ。
【請求項21】
請求項20記載の不揮発性メモリにおいて、
プログラミング電圧を一連の増加する電圧パルスとして印加する前記読み出し/書き込み回路が、前記プログラミングパスの間の電圧パルス間に前記メモリセルのグループに対してベリファイステップなしに実施される不揮発性メモリ。
【請求項22】
請求項20記載の不揮発性メモリにおいて、
プログラミングを実施する前記読み出し/書き込み回路が、
(c)前記グループのメモリセルをそのそれぞれの目標状態に対してベリファイすることと、
(d)次のプログラミングパスで使用される最後のプログラミング電圧レベルを反映するための所定の増加によってベリファイされていないメモリセルの前記プログラムインデックスを更新し、かつ次のプログラミングパスでベリファイされていない前記メモリセルをさらにプログラミングできるようにすることと、
(e)前記グループのメモリセルがそのそれぞれの目標しきい値電圧レベルに対してベリファイされるまで(a)〜(d)を繰り返すことと、
をさらに含む不揮発性メモリ。
【請求項23】
請求項22記載の不揮発性メモリにおいて、
プログラミング電圧を一連の増加する電圧パルスとして印加する前記読み出し/書き込み回路が、プログラミングパスの間の電圧パルス間に前記メモリセルのグループに対してベリファイステップなしに実施される不揮発性メモリ。
【請求項24】
請求項20記載の不揮発性メモリにおいて、
前記プログラムインデックスによって示される最後のプログラミング電圧レベルが、前記メモリセルをプログラムするのに使用される最後の電圧パルスを特定するパルス数によって表される不揮発性メモリ。
【請求項25】
請求項20記載の不揮発性メモリにおいて、
最初のプログラミングパスの間に、前記読み出し/書き込み回路が、各プログラミング電圧パルスの後に続くベリファイステップを実施し、
前記メモリセルのプログラムインデックスが、前記メモリセルが目標状態とベリファイされるまで各プログラミング電圧パルスの電圧レベルで更新することによって得られる不揮発性メモリ。
【請求項26】
請求項20記載の不揮発性メモリにおいて、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、前記メモリセルの目標状態から所定の不足分の範囲内に前記メモリセルをプログラムすると推定されるプログラミング電圧レベルに最初に設定される不揮発性メモリ。
【請求項27】
請求項26記載の不揮発性メモリにおいて、
最初のプログラミングパスの間に、前記メモリセルのプログラムインデックスが、所定の関数によって最初に設定され、
前記所定の関数が、計算されたプログラミング電圧値を前記メモリセルの目標状態の関数として生成する不揮発性メモリ。
【請求項28】
請求項27記載の不揮発性メモリにおいて、
前記所定の関数は、実質的に線形関数である不揮発性メモリ。
【請求項29】
請求項27記載の不揮発性メモリにおいて、
前記所定の関数は線形であり、推定された傾きおよびチェックポイントによって定義される不揮発性メモリ。
【請求項30】
請求項29記載の不揮発性メモリにおいて、
前記所定の関数を較正する前記読み出し/書き込み回路が、
指定されたしきい値電圧レベルで前記所定の関数のチェックポイントを指定することと、
前記メモリセルが指定されたしきい値電圧レベルでプログラムベリファイされるまで、前記メモリセルを交互にプログラムおよびベリファイすることによって対応するチェックポイントプログラミング電圧値を決定することと、
前記チェックポイントに従って前記所定の関数を較正することと、
を含む不揮発性メモリ。
【請求項31】
請求項20記載の不揮発性メモリにおいて、
前記メモリセルにプログラムされるプログラムデータを記憶する一連のデータラッチと、
前記一連のデータラッチに加えて、前記メモリセルがプログラムベリファイされているか否かを示す状態を記憶するラッチと、
をさらに備える不揮発性メモリ。
【請求項32】
請求項20記載の不揮発性メモリにおいて、
各増加する電圧パルスが、前記メモリセルを1つのメモリ状態から隣接するメモリ状態へ実質的にプログラムする電圧レベルを有する不揮発性メモリ。
【請求項33】
請求項20記載の不揮発性メモリにおいて、
各メモリセルが、電界効果トランジスタのフローティングゲートである電荷蓄積素子を有する不揮発性メモリ。
【請求項34】
請求項20記載の不揮発性メモリにおいて、
各メモリセルが、電界効果トランジスタの誘電層である電荷蓄積素子を有する不揮発性メモリ。
【請求項35】
請求項20記載の不揮発性メモリにおいて、
前記不揮発性メモリが、NAND構造を有するメモリセルを有する不揮発性メモリ。
【請求項36】
請求項20記載の不揮発性メモリにおいて、
前記不揮発性メモリは、フラッシュEEPROMである不揮発性メモリ。
【請求項37】
請求項20記載の不揮発性メモリにおいて、
前記不揮発性メモリが、メモリカードに具現化される不揮発性メモリ。
【請求項38】
請求項20記載の不揮発性メモリにおいて、
プログラム中の前記メモリセルが、それぞれ2ビット以上のデータを記憶する不揮発性メモリ。
【図1】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14A】
【図14B】
【図14C】
【図14D】
【図14E】
【図15】
【図16】
【図17】
【図18A】
【図18B】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24A】
【図24B】
【図24C】
【図25】
【図26】
【図27】
【図28A】
【図28B】
【図29】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14A】
【図14B】
【図14C】
【図14D】
【図14E】
【図15】
【図16】
【図17】
【図18A】
【図18B】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24A】
【図24B】
【図24C】
【図25】
【図26】
【図27】
【図28A】
【図28B】
【図29】
【公表番号】特表2011−524062(P2011−524062A)
【公表日】平成23年8月25日(2011.8.25)
【国際特許分類】
【出願番号】特願2011−513540(P2011−513540)
【出願日】平成21年5月19日(2009.5.19)
【国際出願番号】PCT/US2009/044554
【国際公開番号】WO2009/151894
【国際公開日】平成21年12月17日(2009.12.17)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
【公表日】平成23年8月25日(2011.8.25)
【国際特許分類】
【出願日】平成21年5月19日(2009.5.19)
【国際出願番号】PCT/US2009/044554
【国際公開番号】WO2009/151894
【国際公開日】平成21年12月17日(2009.12.17)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】
[ Back to top ]