不揮発性メモリセル、例えば、NAND構造内の不揮発性メモリセルをプログラミングするための装置及び技術が記載される。場合によっては、不揮発性メモリセルは、他の不揮発性メモリセル(例えば、隣接するワード線に沿った近傍の不揮発性メモリセル)のプログラミングによる影響を受ける。そのような影響に対処する1つの手法は、不揮発性メモリセルを2つ以上のプログラム動作にプログラムすることであり、例えば、第1の「Foggy」プログラム動作は、不揮発性メモリセルを近似的な第1の分布に残し、続いて、第2の「Fine」プログラム動作は、不揮発性メモリセルをより正確な第2の分布(例えば、より狭い分布)に移し、長期記憶に使用され得る。かかるFoggyプログラミングとその後のFineプログラミングとの間で、Fineプログラミングが行われたときに、隣接する不揮発性メモリセルに電荷が存在し、隣接する不揮発性メモリセルの任意の更なるプログラミングによる更なるディスターブがほとんど又はまったく生じないように、隣接する不揮発性メモリセルをプログラム(少なくともFoggyプログラム)することができる(例えば、Fineプログラミングは、Fineプログラミングの影響は大きくならないように、比較的小さい追加電荷を追加することができる)。データがFoggyプログラムされ、まだFineプログラムされていない間は、データの安全なコピー(例えば、DRAM内)が維持され得る。しかしながら、かかるデータを維持するには、DRAM又は他の記憶場所に相当なスペースを必要とする場合がある。また、かかるデータへのアクセス(保存し、その後、それを取り出すため)には、相当なリソースを使用する場合がある(例えば、メモリダイとDRAMとの間のバス上に相当なトラフィックが生じ得る)。
一実施例では、データは、(例えば、パリティデータを生成することによって)Foggyプログラムされる前に符号化されてもよく、それにより、Foggyプログラムされたメモリセル(第1の分布内)の読み出しが実施されると、その読み出し(Foggy読み出し)の結果が復号されて(例えば、パリティデータと組み合わされて)元のデータが復元され得る。場合によっては、データが符号化され、Foggyプログラムされたメモリセル及びパリティデータから復元可能であるときに、安全なコピーは必要とされない可能性がある。オンチップ回路は、リソースが効率的に使用され、データの(例えば、メモリバスを介した)過剰な転送が回避されるように、かかる符号化(例えば、XOR回路)及び復号を実施するために提供され得る。パリティデータは、場合によってはオンチップに(例えば、シングルレベルセル(Single Level Cell、SLC)記憶用に構成された不揮発性メモリ構造の一部に)記憶されてもよい。場合によっては、パリティデータは、データの復元に使用される前に、誤り訂正符号(Error Correction Code、ECC)回路によって訂正(復号)されてもよい。パリティデータはまた、オフチップ(例えば、DRAM内)に記憶されてもよい。
図1は、異なる平面に配置されたメモリセルを含む例示的なメモリデバイスのブロック図である。不揮発性記憶システムなどのメモリデバイス100は、1つ以上のメモリダイ108を含み得る。メモリダイ108は、メモリセルのアレイなどのメモリセルのメモリ構造126、制御回路110、及び読み出し/書き込み回路128を含む。メモリ構造126は、行デコーダ124を介してワード線によりアドレス指定可能であり、列デコーダ132を介してビット線によりアドレス指定可能である。メモリ構造126は、隣接する平面P0及びP1など、複数の平面を含み得る。それぞれの平面は、メモリセルの1つ以上のブロックを含み得る。例えば、P0はブロックB0a~B0dを含み、P1はブロックB1a~B1dを含む。
読み出し/書き込み回路128は、複数のセンスブロック51、52、...53(感知回路)を含み、メモリセルのページが並列に読み出される又はプログラムされることを可能にする。典型的には、コントローラ122は、1つ以上のメモリダイ108と同じメモリデバイ100(例えば、リムーバブル記憶カード又は他の不揮発性記憶装置)に含まれる。コントローラは、メモリダイとは別個であってもよい。コマンド及びデータは、データバス120などのインターフェースを介してホスト140とコントローラ122との間で転送され、線118を介してコントローラと1つ以上のメモリダイ108との間で転送される。
メモリ構造126は、2D又は3Dとすることができる。メモリ構造は、3Dアレイを含むメモリセルの1つ以上のアレイを含み得る。メモリ構造は、複数のメモリレベルが、介在する基板なしでウェハなどの単一の基板の上方に形成された(かつ、基板内には形成されない)モノリシック3Dメモリ構造を含み得る。メモリ構造は、シリコン基板の上方に配置されたアクティブ領域を有するメモリセルのアレイの1つ以上の物理レベルでモノリシックに形成された任意の種類の不揮発性メモリを含み得る。メモリ構造は、関連する回路が基板の上方又は内部にあるかどうかに関わらず、メモリセルの動作に関連する回路を有する不揮発性メモリデバイスにあり得る。
制御回路110は、読み出し、書き込み、及び消去を含むメモリ動作をメモリ構造126上で実施するために読み出し/書き込み回路128と協働し、ステートマシン112、オンチップアドレスデコーダ114、温度感知回路115、電源制御モジュール116、電源オン検出回路117、及びタイマー119を含む。
ステートマシン112は、メモリ動作のチップレベル制御を提供する。記憶領域113は、例えば、動作パラメータ及びソフトウェア/コード用に提供されてもよい。一実施形態では、ステートマシンは、ソフトウェアによってプログラム可能である。他の実施形態では、ステートマシン112は、ソフトウェアを使用せず、ハードウェア(例えば電気回路)内に完全に実装される。オンチップアドレスデコーダ114は、ホスト又はメモリコントローラによって使用されるものと、デコーダ124及び132によって使用されるハードウェアアドレスとの間のアドレスインターフェースを提供する。温度感知回路115によって得られる温度の指標は、以下に更に記載されるように、読み出し動作を調整するために使用され得る。
電力制御モジュール116は、メモリ動作中にワード線、選択ゲート線、ビット線、及びソース線に供給される電力及び電圧を制御する。これは、データ及びダミーワード線、SGS及びSGDトランジスタ、並びにソース線のためのドライバを含んでもよい。センスブロック51~53は、1つのアプローチにおいて、ビット線ドライバを含み得る。電源オン検出回路は、メモリデバイスが電源オンになっているときを検出するために使用され得る。検出回路117は、ソフトウェア若しくはファームウェアルーチン、又はハードウェアに実装されたルーチンであり得るイベントハンドラを含んでもよい。タイマー119は、最後の動作(例えば、読み出し又は書き込み動作)から経過した時間を決定するために使用されてもよい。タイマー119は、メモリデバイスに使用されるクロック信号に基づいてインクリメントされてもよい。
いくつかの実装では、構成要素の一部を組み合わせることができる。様々な設計において、メモリ構造126以外の構成要素のうちの1つ以上(単独で又は組み合わせて)は、本明細書に記載されるプロセスの工程を含む、本明細書に記載される手法を実施するように構成されている少なくとも1つの制御回路と考えることができる。例えば、制御回路は、制御回路110、ステートマシン112、オンチップアドレスデコーダ114、電力制御モジュール116、センスブロック51、52、...、53、読み出し/書き込み回路128、コントローラ122などのうちのいずれか1つ又はそれらの組み合わせを含み得る。
オフチップコントローラ122(一実施形態では電気回路である)は、プロセッサ122cと、ROM122a及びRAM122bなどの記憶デバイス(メモリ)と、誤り訂正符号(ECC)エンジン245と、を含み得る。ECCエンジンは、多くの読み出しエラーを修正することができる。
また、メモリインターフェース122dが提供されてもよい。ROM122a、RAM122b、及びプロセッサ122cと通信するメモリインターフェース122dは、コントローラ122とメモリダイ108との間の電気的インターフェースを提供する電気回路である。例えば、メモリインターフェースは、信号のフォーマット又はタイミングを変更する、バッファを提供する、サージから分離する、ラッチI/Oを提供する、などが可能である。プロセッサ122cは、メモリインターフェース122dを介して制御回路110(又はメモリダイの任意の他の構成要素)にコマンドを発行することができる。
記憶デバイスは、1組の命令などのコードを含み、プロセッサは、この1組の命令を実行して本明細書に記載される機能を提供するように動作可能である。代替的に又は追加的に、プロセッサは、1つ以上のワード線内のメモリセルの予約領域など、メモリ構造の記憶デバイスからコードにアクセスすることができる。
例えば、プログラムは、プログラミング、読み出し、及び消去動作などのために、メモリ構造にアクセスするために、コントローラによって使用され得る。コードは、起動コード及び制御コード(例えば、1組の命令)を含むことができる。起動コードは、起動又は起動プロセス中にコントローラを初期化し、コントローラがメモリ構造にアクセスできるようにするソフトウェアである。コードは、1つ以上のメモリ構造を制御するためにコントローラによって使用され得る。電源投入されると、プロセッサ122cは、実行のためにROM122a又はメモリ構造126からブートコードをフェッチし、ブートコードはシステム構成要素を初期化し、制御コードをRAM122bにロードする。制御コードがRAMにロードされると、プロセッサによって実行される。制御コードは、メモリの制御及び割り当て、命令の処理の優先順位付け、並びに入力及び出力ポートの制御などの基本タスクを実施するためのドライバを含む。
一実施形態では、ホストは、本明細書に記載される方法を実施するために、1つ以上のプロセッサと、1つ上のプロセッサをプログラムするためのプロセッサ可読コード(例えば、ソフトウェア)を記憶する1つ以上のプロセッサ可読記憶デバイス(RAM、ROM、フラッシュメモリ、ハードディスクドライブ、ソリッドステートメモリ)と、を含むコンピューティングデバイス(例えば、ノートブック、デスクトップ、スマートフォン、タブレット、デジタルカメラ)である。ホストはまた、1つ以上のプロセッサと通信する、追加のシステムメモリ、1つ以上の入力/出力インターフェース、及び/又は1つ以上の入力/出力デバイスを含み得る。
NANDフラッシュメモリに加えて、他の種類の不揮発性メモリを使用することもできる。
半導体メモリデバイスは、ダイナミックランダムアクセスメモリ(dynamic random access memory、「DRAM」)、スタティックランダムアクセスメモリ(static random access memory、「SRAM」)デバイス等の揮発性メモリデバイス、抵抗ランダムアクセスメモリ(resistive random access memory、「ReRAM」)、電気的消去可能プログラム可能読み出し専用メモリ(electrically erasable programmable read only memory、「EEPROM」)、フラッシュメモリ(EEPROMのサブセットとみなすこともできる)、強誘電性ランダムアクセスメモリ(ferroelectric random access memory、「FRAM」)、磁気抵抗ランダムアクセスメモリ(magnetoresistive random access memory、「MRAM」)等の不揮発性メモリデバイス及び情報を記憶する能力がある他の半導体素子を含む。各種類のメモリデバイスは、異なる構成を有してもよい。例えば、フラッシュメモリデバイスは、NAND又はNOR構成で構成され得る。
メモリデバイスは、受動及び/又は能動素子から、任意の組み合わせで形成することができる。非限定的な例として、受動半導体メモリ素子は、ReRAMデバイス素子を含み、これは一部の実施形態では、アンチヒューズ、相変化材料等の抵抗率スイッチング記憶素子、及び任意選択的にダイオード、トランジスタ等のステアリング素子を含む。更に非限定的な例として、能動半導体メモリ素子は、EEPROM及びフラッシュメモリデバイス素子を含み、これは一部の実施形態では、浮遊ゲート、導電性ナノ粒子、電荷蓄積誘電材料等の電荷蓄積領域を含有する素子を含む。
複数のメモリ素子は、直列に接続されるように、あるいは各要素が個別にアクセス可能であるように構成され得る。非限定的な例として、NAND構成(NANDメモリ)内のフラッシュメモリデバイスは、典型的には、直列に接続されたメモリ素子を含む。NANDストリングは、メモリセル及び選択ゲートトランジスタを含む直列接続トランジスタのセットの例である。
NANDメモリアレイは、ストリングが、単一のビット線を共有しグループとしてアクセスされる複数のメモリ素子から構成される、複数のメモリストリングからアレイが構成されるように構成され得る。代替的に、メモリ素子は、各要素が個別にアクセス可能、例えば、NORメモリアレイであるように構成され得る。NAND及びNORメモリ構成は例示的であり、メモリ素子は、別の方法で構成され得る。
基板内及び/又は基板の上に位置する半導体メモリ素子は、2Dメモリ構造、3Dメモリ構造などの二次元又は三次元で配置され得る。2Dメモリ構造では、半導体メモリ素子は、単一の平面又は単一のメモリデバイスレベルに配置される。典型的には、2Dメモリ構造では、メモリ素子は、メモリ素子を支持する基板の主表面に実質的に平行に延在する平面(例えば、xy方向平面)に配置される。基板は、ウェハであり、ウェハの上又はウェハ内にメモリ素子の層が形成されるウェハであってもよく、あるいはメモリ素子が形成された後にメモリ素子に取り付けられるキャリア基板であってもよい。非限定的な例として、基板は、シリコンなどの半導体を含み得る。
メモリ素子は、複数の行及び/又は列などの順序付きアレイにおいて単一のメモリデバイスレベルに配置され得る。しかしながら、メモリ素子は非規則的又は非直交構成で配列され得る。メモリ素子は各々2つ以上の電極又はビット線、ワード線等の接触線を有し得る。
3Dメモリアレイは、メモリ素子が複数の平面又は複数のメモリデバイスレベルを占有するように配置され、それによって、三次元(すなわち、x、y、及びz方向であり、z方向は基板の主表面に実質的に垂直であり、x及びy方向は基板の主表面に実質的に平行である)の構造を形成する。
非限定的な例として、3Dメモリ構造は、複数の2Dメモリデバイスレベルのスタックとして垂直に配置され得る。別の非限定的な例として、3Dメモリアレイは、それぞれの列が複数のメモリ素子を有する複数の垂直列(例えば、基板の主表面に対して実質的に垂直、すなわちy方向に延在する列)として配置され得る。列は、2D構成、例えば、xy平面に配置されてもよく、複数の垂直に積層されたメモリ面に素子があるメモリ素子の3D配置をもたらす。三次元のメモリ素子の他の構成が、3Dメモリアレイを構成することもできる。
非限定的な例として、3D NANDメモリアレイでは、メモリ素子は、単一の水平(例えば、xy)メモリデバイスレベル内にNANDストリングを形成するようにまとめて結合され得る。代替的に、メモリ素子は、複数の水平メモリデバイスレベルにわたって横断する垂直なNANDストリングを形成するようにまとめて結合され得る。いくつかのNANDストリングが単一のメモリレベルでメモリ素子を含有し、他のストリングが複数のメモリレベルにわたるメモリ素子を含有する、他の3D構成を想定することができる。3Dメモリアレイはまた、NOR構成及びReRAM構成で設計されてもよい。
典型的には、モノリシック3Dメモリアレイでは、1つ以上のメモリデバイスレベルが単一の基板の上方に形成される。任意選択的に、モノリシック3Dメモリアレイは、単一の基板内に少なくとも部分的に1つ以上のメモリ層も有し得る。非限定的な例として、基板は、シリコンなどの半導体を含み得る。モノリシック3Dアレイでは、アレイのそれぞれのメモリデバイスレベルを構成する層は、典型的には、アレイの下方のメモリデバイスレベルの層上に形成される。しかしながら、モノリシックな3Dメモリアレイの隣接するメモリデバイスレベルの層は、共有されてもよく、あるいはメモリデバイスレベル間に介在する層を有してもよい。
2Dアレイが別個に形成され、次いでまとめてパッケージ化されて、複数のメモリ層を有する非モノリシックメモリデバイスが形成されてもよい。例えば、非モノリシック積層メモリは、別個の基板上にメモリレベルを形成し、次いで、メモリレベルを互いの上に積層することによって構築することができる。基板は、薄くされてもよく、又は積層前にメモリデバイスレベルから除去されてもよいが、メモリデバイスレベルは別個の基板にわたって最初に形成されるため、結果として得られるメモリアレイはモノリシックな3Dメモリアレイではない。更に、複数の2Dメモリアレイ又は3Dメモリアレイ(モノリシック又は非モノリシック)は、別個のチップ上に形成され、次いでまとめてパッケージ化されて積層チップメモリデバイスが形成されてもよい。
関連する回路は、典型的には、メモリ素子の動作及びメモリ素子との通信のために必要とされる。非限定的な例として、メモリデバイスは、プログラミング、読み出し等の機能を達成するためにメモリ素子を制御及び駆動するために使用される回路を有し得る。これに関連する回路は、メモリ素子と同じ基板上及び/又は別個の基板上にあってもよい。例えば、メモリの読み出し、書き込み、及び消去動作のためのコントローラは、別個のコントローラチップ上及び/又はメモリ素子と同じ基板上に位置してもよい。
当業者であれば、この技術は記載されている2D及び3Dの例示的な構造に限定されず、本明細書に記載されるように、かつ当業者によって理解されるように、その技術の精神及び範囲内で、全ての関連するメモリ構造をカバーすると理解するであろう。
図1のメモリデバイス100は不揮発性記憶装置の一例であるが、不揮発性記憶装置の他の例も本技術を使用して実装することもできる。
図1Aは、本明細書で提案される技術を実装し得るホスト140に接続されたメモリデバイス101の一実施形態を示すブロック図である。メモリデバイス101は、不揮発性記憶装置の別の例とみなすことができる。多くの異なる種類のメモリデバイスを、本明細書で提案される技術と共に使用することができる。1つの例示的なメモリデバイスは、ソリッドステートドライブ(「SSD」)である。しかしながら、他の種類のメモリデバイスを使用することもできる。メモリデバイス101は、コントローラ102と、データを記憶するための不揮発性メモリ104と、ローカルメモリ106(例えば、DRAM、SRAM、又はReRAM)と、を含む。一実施形態では、コントローラ102は、フロントエンドプロセッサ(FEP)回路141と、1つ以上のバックエンドプロセッサ(BEP)回路142と、を含む。一実施形態では、FEP回路141は、ASIC上に実装される。一実施形態では、それぞれのBEP回路142は、別個のASIC上に実装される。一実施形態では、BEP回路142及びFEP回路141のそれぞれのASICは、コントローラ102がシステムオンチップ(「SoC」)として製造されるように、同じ半導体上に実装される。FEP回路141及びBEP回路142は両方とも、それら自体のプロセッサを含む。一実施形態では、FEP回路141及びBEP回路142は、FEP回路141がマスターであり、それぞれのBEP回路142がスレーブであるマスタースレーブ構成として機能する。例えば、FEP回路141は、メモリ管理(例えば、ガベージコレクション、ウェアレベリングなど)、論理アドレスから物理アドレスへの変換、ホストとの通信、DRAM(ローカル揮発性メモリ)の管理、及びSSD(又は他の不揮発性記憶システム)の全体動作の管理を実施するフラッシュ変換層を実装する。BEP回路142は、FEP回路141の要求でメモリパッケージ/ダイ内のメモリ動作を管理する。例えば、BEP回路142は、読み出し、消去、及びプログラミングプロセスを実行し得る。加えて、BEP回路142は、バッファ管理を実施する、FEP回路141によって要求される特定の電圧レベルを設定する、エラーの訂正を実施する(例えば、誤り訂正符号(ECC)を生成する)、メモリパッケージに対するトグルモードインターフェースを制御する、などのことができる。一実施形態では、それぞれのBEP回路142は、それ自体のメモリパッケージの組に関与する。コントローラ102は、制御回路の一例である。
一実施形態では、不揮発性メモリ104は、複数のメモリパッケージを含む。それぞれのメモリパッケージは、1つ以上のメモリダイを含む。したがって、コントローラ102は、1つ以上の不揮発性メモリダイに接続される。一実施形態では、メモリパッケージ104内のそれぞれのメモリダイは、NANDフラッシュメモリ(二次元NANDフラッシュメモリ及び/又は三次元NANDフラッシュメモリを含む)を利用する。他の実施形態では、メモリパッケージは、他の種類のメモリを含んでもよい。
コントローラ102は、インターフェース(例えば、データバス120)を介してホスト140と通信する。一実施形態では、データバス120は、ユニバーサルフラッシュストレージ(「UFS」)インターフェースを実装する。
ホスト140は、メモリデバイス101へのアクセス(例えば、書き込み及び読み出し)を必要とするソフトウェアアプリケーション143を実行するように構成されている。メモリデバイス101にアクセスするために、アプリケーション143は、アプリケーション143とメモリデバイス101との間の通信を可能にするためのソフトウェアであるドライバ144と通信する。ドライバ144を実装するソフトウェアは、ホスト140内のマイクロプロセッサによって実行され得る。ドライバ144は、デバイスインターフェース129を介してメモリデバイス101と通信するホストコントローラ146(例えば、マイクロプロセッサ及びソフトウェア、又は他のタイプのプロセッサ)と通信する。一実施形態では、デバイスインターフェース129は、メモリデバイス101に物理的に接続するための一連のコネクタ、ポートコンデンサなどを含む。ホストコントローラ146はまた、ホストの物理メモリであり、DRAM、SRAM、不揮発性メモリ、又は別のタイプの記憶装置であり得るホストメモリ130に接続される。ホスト140は、メモリデバイス101の外部にあり、メモリデバイス101とは別個である。一実施形態では、メモリデバイス101は、ホスト140内に埋め込まれている。いくつかの実施形態では、メモリデバイス101は、ホスト140に埋め込まれていないが、ホスト140に接続されている。
ホスト140は、メモリデバイス101の外部にあるエンティティの一例である。メモリデバイス101の外部にあるエンティティの他の例としては、メモリデバイス101に接続される他のコンピューティングデバイス(例えば、コンピュータ、サーバ、スマート家電、スマートフォンなど)、及び任意の通信手段(例えば、LAN、WAN、WiFi、有線接続、無線接続、直接接続、間接接続など)を介してメモリデバイス101と通信する他のコンピューティングシステムが挙げられる。
図1Bは、FEP回路141の一実施形態を示すブロック図である。図1Bは、ホスト140と通信するPCIeインターフェース150と、そのPCIeインターフェースと通信するホストプロセッサ152と、を示す。ホストプロセッサ152は、実装に好適な、当該技術分野において既知の任意のタイプのプロセッサであり得る。ホストプロセッサ152は、ネットワークオンチップ(NOC)154に接続されている。NOCは、典型的にはSoC内のコア間の集積回路上の通信サブシステムである。NOCは、同期及び非同期クロックドメインにまたがるか、又はクロックされていない非同期論理を使用することができる。NOC技術は、ネットワーキング理論及び方法をオンチップ通信に適用し、従来のバス及びクロスバー相互接続に顕著な改善をもたらす。NOCは、他の設計と比較して、SoCの拡張性、及び複雑なSoCの電力効率を向上させる。NOCのワイヤ及びリンクは、多くの信号によって共有される。NOC内の全てのリンクが異なるデータパケット上で同時に動作することができるため、高レベルの並列性が達成される。したがって、統合サブシステムの複雑性が増大し続けると、NOCは、以前の通信アーキテクチャ(例えば、専用のポイントツーポイント信号ワイヤ、共有バス、又はブリッジを有するセグメント化バス)と比較して、向上した性能(スループットなど)及び拡張性をもたらす。メモリプロセッサ156、SRAM160、及びDRAMコントローラ162は、NOC154に接続され、これと通信する。DRAMコントローラ162は、DRAM(例えば、ローカルメモリ106)を動作させ、これと通信するために使用される。SRAM160は、メモリプロセッサ156によって使用されるローカルRAMメモリである。メモリプロセッサ156は、FEP回路を実行し、様々なメモリ動作を実施するために使用される。また、2つのPCIeインターフェース164及び166が、NOCと通信する。図1Bの実施形態では、SSDコントローラは2つのBEP回路142を含む。したがって、2つのPCIeインターフェース164/166が存在する。それぞれのPCIeインターフェースは、BEP回路142のうちの1つと通信する。他の実施形態では、2つより多い又は少ないBEP回路142が存在し得る。したがって、2つより多いPCIeインターフェースが存在し得る。
図1Cは、BEP回路142の一実施形態を示すブロック図である。図1Cは、FEP回路141と通信するためのPCIeインターフェース200を示す(例えば、図2のPCIeインターフェース164及び166のうちの1つと通信する)。PCIeインターフェース200は、2つのNOC202及び204と通信する。一実施形態では、2つのNOCが1つの大きいNOCに結合され得る。それぞれのNOC(202/204)は、XORエンジン(224/254)及びECCエンジン(226/256)を介して、SRAM(230/260)、バッファ(232/262)、プロセッサ(220/250)、及びデータ経路コントローラ(222/252)に接続される。ECCエンジン226/256は、当該技術分野において既知であるように、エラーの訂正を実施するために使用される(例えば、書き込まれるデータを符号化し、読み取られるデータを復号する)。XORエンジン224/254は、データをXOR演算するために使用され、それにより、データは、プログラミングエラーが存在する場合に復元され得る方法で組み合わされて(例えば、データを結合する)記憶され得る。データ経路コントローラ22は、4つのチャネルを介してメモリパッケージと通信するためのインターフェースモジュールに接続される。したがって、上部NOC202は、メモリパッケージと通信するための4つのチャネルのためのインターフェース228に関連付けられ、下部NOC204は、メモリパッケージと通信するための4つの追加のチャネルのためのインターフェース258と関連付けられる。それぞれのインターフェース228/258は、4つのトグルモードインターフェース(TMインターフェース)、4つのバッファ、及び4つのスケジューラを含む。チャネルのそれぞれについて、1つのスケジューラ、バッファ、及びTMインターフェースが存在する。プロセッサは、当該技術分野において既知の任意の標準プロセッサであり得る。データ経路コントローラ222/252は、プロセッサ、FPGA、マイクロプロセッサ、又は他のタイプのコントローラであり得る。XORエンジン224/254及びECCエンジン226/256は、ハードウェアアクセラレータとして既知の専用ハードウェア回路である。他の実施形態では、XORエンジン224/254及びECCエンジン226/256は、ソフトウェアに実装され得る。スケジューラ、バッファ、及びTMインターフェースは、ハードウェア回路である。
図1Dは、メモリバス294(コマンド線、データ線、及びチップイネーブル線)に接続された複数のメモリダイ300を含むメモリパッケージ104の一実施形態を示すブロック図である。メモリバス294は、BEP回路142のTMインターフェースと通信するためのトグルモードインターフェース296に接続する(例えば、図1Cを参照されたい)。いくつかの実施形態では、メモリパッケージは、メモリバス及びTMインターフェースに接続された小型コントローラを含み得る。メモリパッケージは、1つ以上のメモリダイを有し得る。一実施形態では、それぞれのメモリパッケージは、8つ又は16個のメモリダイを含む。しかしながら、他の数のメモリダイを実装することもできる。本明細書に記載される技術は、特定の数のメモリダイに限定されない。
図1A~図1Dは、コントローラの1つの例示的なアーキテクチャを提供する。しかしながら、本明細書に記載される技術は、コントローラの特定の形態に限定されない。したがって、他のアーキテクチャをコントローラに利用することができる。例えば、コントローラの他の実施形態は、他の構成でマイクロプロセッサ、マイクロコントローラ、ステートマシンなどを含む。場合によっては、コントローラはホストの内部にあり得る。他の場合には、コントローラはメモリダイ上に実装され得る。他のオプション/構成も使用され得る。コントローラは、複数の処理コアを含む場合であっても、コントローラがメモリデバイスのプロセッサとして動作するため、プロセッサと称され得る。
図2は、メモリダイ300の一実施形態の機能ブロック図である。図1Dの1つ以上のメモリダイ300のそれぞれは、図2のメモリダイ300として実装され得る。図2に示す構成要素は、電気回路である。一実施形態では、それぞれのメモリダイ300は、メモリ構造326、制御回路310、及び読み出し/書き込み回路328を含み、これらは全て電気回路である。メモリ構造326は、行デコーダ324を介してワード線によりアドレス指定可能であり、列デコーダ332を介してビット線によりアドレス指定可能である。読み出し/書き込み回路328は、SB1、SB2、...、SBp(感知回路)など複数のセンスブロック350を含み、複数のメモリセル内のデータのページ(又は複数のページ)が並列に読み出される又はプログラムされることを可能にする。一実施形態では、それぞれのセンスブロックは、センスアンプと、ビット線に接続された1組のラッチと、を含む。ラッチは、読み書きされたデータを記憶する。センスブロックは、ビット線ドライバを含む。
コマンド及びデータは、線319を介してコントローラ102とメモリダイ300との間で転送される。一実施形態では、メモリダイ300は、線118に接続する1組の入力及び/又は出力(I/O)ピンを含む。
制御回路310は、読み出し/書き込み回路328と協働して、メモリ構造326上でメモリ動作(例えば、書き込み、読み出し、消去、及びその他)を実施する。一実施形態では、制御回路310は、ステートマシン312と、オンチップアドレスデコーダ314と、電力制御回路316と、温度検出回路318と、を含む。ステートマシン312は、メモリ動作のダイレベル制御を提供する。一実施形態では、ステートマシン312は、ソフトウェアによってプログラム可能である。他の実施形態では、ステートマシン312は、ソフトウェアを使用せず、ハードウェア(例えば、電気回路)内に完全に実装される。いくつかの実施形態では、ステートマシン312をマイクロコントローラ又はマイクロプロセッサに置き換えるか、又は増強することができる。一実施形態では、制御回路310は、レジスタ、ROMヒューズ、並びにベース電圧及び他のパラメータなどの既定の値を記憶するための他の記憶デバイスなどのバッファを含む。
オンチップアドレスデコーダ314は、コントローラ102によって使用されるアドレスと、デコーダ324及び332によって使用されるハードウェアアドレスとの間のアドレスインターフェースを提供する。電力制御モジュール316は、メモリ動作中にワード線及びビット線に供給される電力及び電圧を制御する。電力制御モジュール316は、電圧を生成するための電荷ポンプを含み得る。
本文書の目的のために、制御回路310は、単独で、又は読み出し/書き込み回路328及びデコーダ324/332との組み合わせで、メモリ構造326に接続された制御回路を含む。この制御回路は、フロー図中の後述の機能を実施する電気回路である。他の実施形態では、制御回路は、フロー図中の後述の機能を実施ソフトウェア(例えば、ファームウェア)と組み合わせた電気回路であるコントローラ102のみで構成され得る。別の代替例では、制御回路は、フロー図中の後述の機能を実施するコントローラ102及び制御回路310を含む。別の実施形態では、制御回路は、単独の、又はコントローラ102と組み合わせたステートマシン312(並びに/又はマイクロコントローラ及び/若しくはマイクロプロセッサ)を含む。別の代替例では、制御回路は、フロー図中の後述の機能を実施するコントローラ102、制御回路310、読み出し/書き込み回路328、及びデコーダ324/332を含む。他の実施形態では、制御回路は、不揮発性メモリを動作させる1つ以上の電気回路を含む。
一実施形態では、メモリ構造326は、単一基板上に複数のメモリレベルが形成される不揮発性メモリセルのモノリシック三次元メモリアレイを含む。メモリ構造は、シリコン(又は他の種類の)基板上に配置された活性領域を有する、1つ以上の物理レベルのメモリセルアレイにモノリシックに形成される、任意の種類の不揮発性メモリを備え得る。一例では、メモリ構造326の不揮発性メモリセルは、例えば米国特許第9,721,662号に記載されているような電荷トラップ材料を有する垂直NANDストリングを備え、その全体が参照により本明細書に組み込まれる。別の実施形態では、メモリ構造326は、不揮発性メモリセルの二次元メモリアレイを含む。一例では、不揮発性メモリセルは、例えば米国特許第9,082,502号に記載されているような浮動ゲートを利用するNANDフラッシュメモリセルであり、その全体が参照により本明細書に組み込まれる。他の種類のメモリセル(例えば、NOR型フラッシュメモリ)も使用することができる。
一実施形態では、制御回路(複数可)は、制御ダイと称される第1のダイ上に形成され、メモリアレイは、メモリダイと称される第2のダイ上に形成される。例えば、メモリに関連付けられたいくつか又は全ての制御回路(例えば、制御回路310、行デコーダ324、列デコーダ332、及び読み出し/書き込み回路328)は、同じ制御ダイ上に形成されてもよい。制御ダイは、集積メモリアセンブリを形成するために、1つ以上の対応するメモリダイに接合されてもよい。制御ダイ及びメモリダイは、互いに電気的に接続するように配置されたボンドパッドを有してもよい。制御ダイ及びメモリダイのボンドパッドは、ボンドパッドサイズ及びボンドパッド間隔(すなわち、ボンドパッドピッチ)に部分的に依存して、様々な接合手法のいずれかによって位置合わせされ、接合されてもよい。一部の実施形態では、ボンドパッドは、はんだ又は他の追加材料なしで、いわゆるCu~Cu接合プロセスにおいて互いに直接接合される。いくつかの実施例では、ダイは、1対1の配置で(例えば、1つのコントロールダイを1つのメモリダイに)接合される。いくつかの実施例では、集積メモリアセンブリ内に、2つ以上の制御ダイ及び/又は2つ以上のメモリダイが存在してもよい。いくつかの実施形態では、集積メモリアセンブリは、複数の制御ダイ及び/又は複数のメモリダイのスタックを含む。いくつかの実施形態では、制御ダイは、メモリコントローラに接続されるか、ないしは別の方法でメモリコントローラと通信する。例えば、メモリコントローラは、メモリアレイにプログラムされるデータを受信し得る。メモリコントローラは、制御ダイがそのデータをメモリダイ上のメモリアレイにプログラムすることができるように、そのデータを制御ダイに転送することになる。
図3Aは、図1のセンスブロック51又は図2のセンスブロック350の一実施形態を示すブロック図である。個別のセンスブロック51は、感知回路180~183又はセンスアンプと称される1つ以上のコア部分と、管理回路190と称される共通部分と、にパーティション化される。一実施形態では、各ビット線に結合された別個のセンスアンプと、1組の複数(例えば、4個又は8個)のセンスアンプのための1つの共通の管理回路190とが存在する。グループ内の各感知回路は、データバス172を介して関連する管理回路と通信する。したがって、1組の記憶素子の感知回路と通信する1つ以上の管理回路が存在する。
感知回路180は、一例として、接続されたビット線内の伝導電流が所定の閾値レベルを上回るか又は下回るかどうかを判定することによって感知を実施する感知回路170を含む。感知回路180はまた、接続されたビット線上に電圧状態を設定するために使用されるビット線ラッチ184を含む。例えば、ビット線ラッチにラッチされた所定の状態により、接続されたビット線は、プログラム禁止(例えば、1.5~3V)を指定する状態にプルされることになる。一例として、flag=0はプログラミングを禁止することができ、flag=1はプログラミングを禁止しない。
管理回路190は、プロセッサ192、データラッチの4つの例示的な組194~197、及びデータラッチ194の組とデータバス120との間に結合されたI/Oインターフェース196を含む。感知回路ごとに1組のデータラッチ、例えば、T、C、B、Aが提供され得る。場合によっては、追加のデータラッチが使用されてもよい。ラッチのそれぞれの組、T、C、B、Aは、1組の不揮発性メモリセルに一緒にプログラムするためのデータの異なる論理ページに対応し得る。これは、記憶素子メモリデバイス当たり16レベル又は4ビットである。ビット線当たりの1つの追加のデータラッチが、記憶素子当たりの追加のデータビットごとに提供され得る。
プロセッサ192は、感知された記憶素子に記憶されたデータを判定し、データラッチの組内に判定されたデータを記憶するように、計算を実施する。データラッチ194~197の各組は、読み出し動作中にプロセッサ192によって判定されたデータビットを記憶し、メモリにプログラムされることを意味する書き込みデータを表すプログラム動作中にデータバス120からインポートされたデータビットを記憶するために使用される。I/Oインターフェース196は、データラッチ194~197とデータバス120との間のインターフェースを提供する。
読み出し及び検証中、システムの動作は、アドレス指定された記憶素子への異なる制御ゲート電圧の供給を制御するステートマシン112の制御下にある。メモリによってサポートされる様々なメモリ状態に対応する様々な所定の制御ゲート電圧をステップ実行すると、感知回路180はこれらの電圧のうちの1つでトリップすることができ、対応する出力は、バス172を介してプロセッサ192に感知回路180から提供されることになる。その時点で、プロセッサ192は、感知回路のトリップイベント及び入力線193を介したステートマシンからの印加された制御ゲート電圧に関する情報を考慮することによって、結果として得られるメモリ状態を判定する。次いで、メモリ状態のバイナリ符号化を計算し、結果として得られるデータビットをデータラッチ194~197に記憶する。管理回路190の別の実施形態では、ビット線ラッチは、感知回路180の出力をラッチするためのラッチ、及び上記のようなビット線ラッチの両方として二役を果たす。
ある実装形態は、複数のプロセッサ192を含むことができる。一実施形態では、各プロセッサ192は、出力線の各々が有線ORであるように、出力線(図示せず)を含む。いくつかの実施形態では、出力線は、有線OR線に接続される前に反転される。この構成により、有線ORを受信するステートマシンは、プログラムされている全てのビットが所望のレベルに到達したことを判定することができるため、プログラミングプロセスが完了したときのプログラム検証プロセス中の迅速な判定が可能になる。例えば、各ビットがその所望のレベルに到達したとき、そのビットの論理ゼロは、有線OR線(又は、データ1が反転)に送信される。全てのビットがデータ0(又は、データ1が反転)を出力すると、ステートマシンはプログラミングプロセスを終了することを知る。各プロセッサは8つの感知回路と通信するため、ステートマシンは有線OR線を8回読み出す必要があり、又は、論理は、関連するビット線の結果を蓄積するためにプロセッサ192に追加されて、ステートマシンが有線OR線を一度に読み出す必要がある。同様に、論理レベルを正しく選択することによって、グローバルステートマシンは、第1のビットがその状態を変更し、それに応答してアルゴリズムを変更するときを検出することができる。
メモリセルに対するプログラム又は検証動作中、プログラムされるデータ(書き込みデータ)は、データバス120から1組のデータラッチ194~197に記憶される。記憶素子当たり4ビットの実装形態(クアッドレベルセル又はQLC)では、4つのデータラッチ(T、C、B、A)が使用されてもよい。プログラム動作は、ステートマシンの制御下で、アドレス指定された記憶素子の制御ゲートに印加される一連のプログラミング電圧パルスを含む。それぞれのプログラム電圧に続いて、記憶素子が所望のメモリ状態にプログラムされているかどうかを判断するための読み戻し(検証)が続く。場合によっては、プロセッサ192は、所望のメモリ状態に対して読み戻しメモリ状態を監視する。これら2つが一致しているとき、プロセッサ192は、ビット線が、プログラム禁止を指定する状態にプルされるように、ビット線ラッチを設定する。これにより、プログラムパルスがその制御ゲートに現れても、ビット線に結合された記憶素子の更なるプログラミングは禁止される。他の実施形態では、プロセッサは、最初にビット線ラッチをロードし、感知回路は、検証プロセス中にビット線ラッチを禁止値に設定する。
データラッチ194~197の各組は、各感知回路のデータラッチのスタックとして実装されてもよい。一実施形態では、感知回路180当たり4つ以上のデータラッチが存在する。いくつかの実装形態では、データラッチはシフトレジスタとして実装されているため、そこに記憶されたパラレルデータはデータバス120のシリアルデータに変換され、逆もまた同様である。記憶素子の読み出し/書き込みブロックに対応する全てのデータラッチを互いにリンクさせて、データのブロックがシリアル転送によって入力又は出力され得るように、ブロックシフトレジスタを形成することができる。具体的には、読み出し/書き込み回路のバンクは、データラッチの組の各々が、読み出し/書き込みブロック全体のシフトレジスタの一部であるかのように、データバスの中又は外のデータをシーケンス内でシフトさせるように適合される。
データラッチは、関連する記憶素子がプログラム動作において特定のマイルポストに到達したときを識別する。例えば、ラッチは、記憶素子のVthが特定の検証レベルを下回ることを識別し得る。データラッチは、記憶素子が現在データページから1つ以上のビットを記憶しているかどうかを示す。
図3Bは、図1のセンスブロック51又は図2のセンスブロック350の別の例示的なブロック図を示す。列制御回路は、複数のセンスブロックを含むことができ、それぞれのセンスブロックは、対応のビット線を介して複数のメモリセルに対する、例えば、読み出し、プログラム検証、又は消去検証などの動作の感知を実施する。1つのアプローチでは、センスブロックは、センスアンプとも称される複数の感知回路を含む。それぞれの感知回路は、データラッチ及びキャッシュに関連付けられる。例えば、例示的な感知回路350a、351a、352a、及び353aは、それぞれキャッシュ350c、351c、352c、及び353cに関連付けられている。
1つのアプローチでは、ビット線の異なるサブセットは、異なる対応のセンスブロックを使用して感知され得る。これにより、感知回路に関連付けられた処理負荷を分割し、それぞれのセンスブロック内の対応のプロセッサによって処理することが可能になる。例えば、感知回路コントローラ360は、一組、例えば16個の感知回路及びラッチと通信することができる。感知回路コントローラは、プリチャージ電圧を設定するためのそれぞれの感知回路に電圧を提供する、プリチャージ回路361を含んでもよい。感知回路コントローラはまた、メモリ362及びプロセッサ363を含んでもよい。
図4は、メモリセルのブロックに電圧を提供するための例示的な回路を示す。この例では、行デコーダ401は、ブロック410のセット内のそれぞれのブロックのワード線及び選択ゲートに電圧を提供する。ブロックは平面内にあってもよく、ブロックBLK_0~BLK_7を含む。行デコーダは、ブロックを行デコーダに接続するパストランジスタ422に制御信号を提供する。典型的には、プログラム又は読み出し動作は、一度に1つの選択されたブロックで、及びブロックの1つの選択されたサブブロックで実施される。消去動作は、選択されたブロック又はサブブロックで実施され得る。行デコーダ及びパスゲートは、グローバル制御線402をローカル制御線403に接続し得る。制御線は導電路を表す。電圧は、電圧源420からグローバル制御線でパストランジスタ422に提供される。電圧源は、グローバル制御線に接続するスイッチ421に電圧を供給し得る。パストランジスタ424は、電圧源420からスイッチ421に電圧を渡すように制御される。
電圧源420は、例えば、ワード線(WL)、SGS制御ゲート、及びSGD制御ゲートで電圧を提供し得る。電圧ソースは、プログラム又は読み出し動作中に選択されたワード線上に電圧を提供する選択されたワード線(WL)ドライバ447と、非選択データワード線のためのドライバ447aと、ダミーワード線上に電圧を提供するダミーワード線ドライバ447bと、を含み得る。
電圧源はまた、サブブロックごとに共通のSGSドライバ445及び別個のSGDドライバを含み得る。例えば、SGDドライバ446、446a、446b、及び446cは、それぞれSB0、SB1、SB2、SB3に提供され得る。別のオプションでは、別個のSGSドライバがそれぞれのサブブロックに提供される。
行デコーダを含む様々な構成要素は、本明細書に記載される機能を実施するために、ステートマシン112又はコントローラ122などのコントローラからコマンドを受信し得る。
ソース線電圧源430は、制御線432を介して基板内のソース線/拡散領域に電圧Vslを提供する。1つのアプローチでは、ソース拡散領域433は、ブロックに共通である。1組のビット線442もまた、ブロックによって共有される。ビット線電圧源440は、ビット線に電圧を提供する。
図5は、図1のメモリ構造126又は図2のメモリ構造326の例示的な3D構成における1組のブロックを含むメモリデバイス500の斜視図である。基板上には、メモリセル(記憶素子)のブロックBLK0、BLK1、BLK2、及びBLK3、並びにブロックによって使用される回路を有する周辺領域がある。周辺領域504は、周辺領域505が1組のブロックの端部にある間、それぞれのブロックの縁部に沿って延びている。1つのアプローチでは、SGSトランジスタの電圧ドライバのためのパストランジスタが、この周辺領域505内に位置してもよい。この場合、ブロックBL0、BLK1、BLK2、及びBLK3は、パストランジスタから段々と離れた距離にある。回路は、ブロックの制御ゲート層、ビット線、及びソース線に接続され得る電圧ドライバを含み得る。1つのアプローチでは、ブロック内の共通の高さの制御ゲート層が一般的に駆動される。基板501はまた、回路の信号を搬送するために導電路内でパターン化された1つ以上の下部金属層と共に、ブロックの下に回路を搬送することができる。ブロックは、メモリデバイスの中間領域502に形成される。メモリデバイスの上部領域503において、1つ以上の上部金属層は、回路の信号を搬送するために導電路内でパターン化される。
1つの可能なアプローチでは、ブロックは平面内にあり、x方向の平面の長さは、ワード線への信号経路が1つ以上の上部金属層に延在する方向(ワード線又はSGD線方向)を表し、また、y方向の平面の幅は、ビット線への信号経路が1つ以上の上部金属層内に延在する方向(ビット線方向)を表す。Z方向は、メモリデバイスの高さを表す。ブロックはまた、複数の平面内に配置されてもよい。
図6Aは、図5のブロックのうちの1つの一部分の例示的な断面図を示す。ブロックは、交互の導電層及び誘電体層のスタック610を含む。この例では、導電層は、2つのSGD層、1つのSGS層、2つのソース側ダミーワード線層(又はワード線)WLS1及びWLS0、2つのドレイン側ダミーワード線層WLD1及びWLD0、並びに11個のデータワード線層(又はデータワード線)WL0~WL10を含む。WL0はソース側データワード線であり、WLS1は、ソース側データワード線に隣接するダミーワード線層である。WLS0は、WLS1に隣接する別のダミーワード線層である。WL10はドレイン側データワード線であり、WLD1は、ドレイン側データワード線に隣接するダミーワード線層である。WLD0はWLD1に隣接する別のダミーワード線層である。誘電体層をDL1~DL19とラベル付けする。更に、NANDストリングNS1及びNS2を含むスタックの領域が示されている。それぞれのNANDストリングは、ワード線に隣接するメモリセルを形成する材料で充填されたメモリホール618又は619を包含する。スタックの領域622は、図6Cでより詳細に示されている。
スタックは、基板611を含む。1つのアプローチでは、ソース線SLの一部分は、ブロック内のそれぞれのメモリセルストリングのソース端と接触する基板内のn型ソース拡散層611aを含む。消去電圧は、消去動作でこの層に印加され得る。n型ソース拡散層611aは、1つの可能な実装において、p型ウェル領域611b内に形成され、次いでn型ウェル領域611c内に形成され、次いでp型半導体基板611d内に形成される。n型ソース拡散層は、1つのアプローチにおいて、平面内の全てのブロックによって共有され得る。
NS1は、スタック616の底部616bにソース端613を有し、スタックの上部616aにドレイン端615を有する。金属充填スリット617及び620は、ソース線をスタックの上方の線に接続するように、スタックを通って延在する相互接続として、スタックにわたって周期的に提供されてもよい。スリットは、ワード線の形成中に使用され、続いて金属で充填されてもよい。ビット線BL0の一部分も示されている。導電ビア621は、ドレイン端615をBL0に接続する。
1つのアプローチでは、メモリセルのブロックは、交互の制御ゲート及び誘電体層のスタックを含み、メモリセルは、スタック内の垂直に延在するメモリホール内に配置される。
1つのアプローチでは、それぞれのブロックは、垂直相互接続がSGS、WL、及びSGD層を含むそれぞれの層に接続し、水平経路から電圧ドライバへと上向きに延在する段付きエッジを含む。
図6Bは、図6Aのメモリホールの高さに沿った幅の例示的な変化を示す。メモリホールを作製するために使用されるエッチングプロセス、及び非常に高いアスペクト比により、メモリホールの断面幅、例えば直径は、その高さに沿って変化し得る。典型的には、直径は、メモリホールの上部から底部へと徐々に小さくなる。場合によっては、図示のように、ホールの上部にわずかな狭まりが生じ、それにより、直径は、メモリホールの上部から底部までわずかに幅広になってから徐々に小さくなる。
図6Cは、図6Aのスタックの領域622の拡大図を示す。メモリセルは、スタックの異なるレベルでワード線層とメモリホールとの交点に形成される。この例では、SGDトランジスタ718及び717は、ダミーメモリセル716及び715、並びにデータメモリセル714の上に提供される。いくつかの層は、例えば、原子層堆積を使用して、メモリホール630の側壁(SW)に沿って、及び/又はそれぞれのワード線層内に堆積され得る。例えば、メモリホール内の材料によって形成されるそれぞれのピラー699又は列は、ブロッキング酸化物層663、電荷トラップ層664又は窒化ケイ素(Si3N4)若しくは他の窒化物などの膜、トンネル層665、チャネル660(例えば、ポリシリコンを含む)、及び誘電体コア666を含み得る。ワード線層は、制御ゲートとしてタングステンなどの金属障壁661及び導電性金属662を含み得る。例えば、制御ゲート690~694が提供される。この実施例では、金属を除く全ての層が、メモリホール内に提供される。他のアプローチでは、層のいくつかは制御ゲート層内にあり得る。追加のピラーは、異なるメモリホール内に同様に形成される。ピラーは、NANDストリングの柱状活性領域(active area、AA)を形成することができる。
それぞれのNANDストリングは、1つ以上のソース端選択ゲートトランジスタから1つ以上のドレイン端選択ゲートトランジスタまで連続的に延在するチャネルを含む。
図7は、例示的なプログラム動作において一連のプログラムループで使用される電圧信号を示す。水平軸は、1~22の範囲のプログラムループ(PL)数を示し、垂直軸は電圧を示す。プログラム動作中、プログラムループは、それぞれの平面内の選択されたブロックで、選択されたワード線に対して実施される。プログラムループは、プログラム電圧又はパルスが選択されたワード線に印加されるプログラム部分と、続いて、1つ以上の検証試験が関連するメモリセルに対して実施されている間に、検証信号が選択されたワード線に印加される検証部分と、を含む。消去状態以外に、それぞれの割り当てられた状態は、プログラム動作における状態についての検証試験に使用される検証電圧を有する。
電圧信号700は、プログラミングのために選択されたワード線に印加される、初期プログラム電圧701を含む一連のプログラム電圧を含む。この実施例では、電圧信号は、固定された又は変化するステップサイズを使用するプログラミングパスの1つ以上のプログラムループにおいて振幅がステップ状に増加するプログラム電圧を含む。これは、増分ステップパルスプログラミングと称され、プログラム電圧は、初期レベルVpgm_int(初期プログラム電圧701を参照されたい)で開始し、例えば、プログラム動作が完了するまで、それぞれの連続するプログラムループにおいてステップ単位で増加する。選択されたメモリセルの閾値電圧が割り当てられたデータ状態の検証電圧に到達すると、正常完了となる。
プログラム動作は、単一のプログラミングパス又は複数のプログラミングパスを含むことができ、それぞれのパスは、例えば、増分ステップパルスプログラミングを使用する。
例示的な検証信号702を含むそれぞれのプログラムループ内の検証信号は、プログラムループについて検証されている割り当てられたデータ状態に基づいて、1つ以上の検証電圧を含み得る。検証試験は、プログラム動作が進むにつれて、下位の割り当てられたデータ状態、次いで中位の割り当てられたデータ状態、次いで上位の割り当てられたデータ状態を包含し得る。例示的な検証信号は、簡易的に3つの検証電圧を示す。
全てのメモリセルは、最初に、例えば、プログラム動作の開始時に消去状態にあってもよい。プログラム動作が完了した後、データは、Vth分布の間にある読み出し電圧を使用してメモリセルから読み出され得る。同時に、パス電圧とも称される読み出しパス電圧、Vpass(例えば、8~10V)が残りのワード線に印加される。所与のメモリセルのVthが読み出し基準電圧のうちの1つ以上を上回るか又は下回るかどうかを試験することにより、システムは、メモリセルによって表されるデータ状態を決定することができる。これらの電圧は、異なるデータ状態のVth範囲間の境界を定めるため、境界電圧である。
更に、プログラムされる又は読み出されるデータは、ページ内に配置され得る。例えば、4つのデータ状態、又はセル当たり2ビットでは、2つの論理ページのデータが1ページにまとめて記憶され得る。Er、A、B、及びC状態のビットの符号化例は、上位ページ(UP)ビット/下位ページ(LP)ビットのフォーマットで、それぞれ11、10、00、及び01となる。下位ページ読み出しはVrA及びVrCを使用することができ、上位ページ読み出しはVrBを使用することができる。
8つのデータ状態、又はセル当たり3ビットでは、3つのページのデータが記憶され得る。Er、A、B、C、D、E、F、及びG状態のビットの符号化例は、それぞれ111、110、100、000、010、011、001、及び101となる。セル当たり2ビット以上を記憶するメモリは、スリーレベルセル(TLC)メモリ(8個のデータ状態を使用してセル当たり3ビットを記憶する)及びクアッドレベルセル(QLC)メモリ(16個のデータ状態を使用してセル当たり4ビットを記憶する)を含む、マルチレベルセル(MLC)メモリと称され得る。2つのデータ状態を使用してセル当たり1ビットを記憶するメモリは、シングルレベルセル(Singe Level Cell、SLC)メモリと称され得る。
図8は、8個のデータ状態、又はセル当たり3ビットを有する1組のメモリセル内のプログラム動作後の、メモリセルの組の例示的なVth分布を示す。垂直軸は、対数スケールでメモリセルの数を示し、水平軸は、線形スケールでメモリセルのVthを示す。1つのアプローチでは、プログラム動作の開始時に、メモリセルは全て最初に消去状態1000にある。プログラム動作が正常に完了した後、通常発生するある程度のプログラムディスターブにより、Er状態に割り当てられたメモリセルはアップシフトされてもよい。
それぞれ、検証電圧VvA、VvB、VvC、VvD、VvE、VvF、及びVvGを使用して、A、B、C、D、E、F、及びG状態にプログラムされるメモリセルは、それぞれ、Vth分布1001、1002、1003、1004、1005、1006、及び1007によって表される。読み出し電圧VrA、VrB、VrC、VrD、VrE、VrF、及びVrGは、読み出し動作においてメモリセルの状態を読み出すために使用され得る。これらの検証電圧及び読み出し電圧は、選択されたワード線電圧の制御ゲート読み出しレベルの例である。
データがメモリセル内にしばらくの間保存された後、データは古くなる可能性があり、別の場所にコピーされる場合があり、又は何らかの他の理由で、メモリセルを消去することが望ましい場合もある。多くの不揮発性メモリ設計では、消去はブロック単位で実施される。ブロックが消去の最小単位とみなされ得るような設計(ブロック消去可能メモリ)内では、ブロック内のメモリセルのサブセットを別々に消去することはできない。
図9は、16個のデータ状態、又はセル当たり4ビット(QLCメモリ)を有する1組のメモリセルにおけるプログラム動作後の、メモリセルの別の例示的なVth分布を示す。垂直軸は、対数スケールでメモリセルの数を示し、水平軸は、線形スケールでメモリセルのVthを示す。1つのアプローチでは、プログラム動作の開始時に、メモリセルは全て最初に消去分布S0にある。読み出し電圧VrS1~VrS15が、対応する分布S1~S15について示されている(明確にするために、対応する検証電圧は図9に示されていない)。
図8~図9の例では、プログラミングは、消去分布(Er又はS0)内の全てのメモリセルから開始し、記憶されるデータに従ってそれらの標的分布にあるものとして検証された全て又は実質的に全てのメモリセルで終了する単一の連続動作で実施されてもよい。他の実施例では、図8~図9に示される状態へのプログラミングは、異なる時間で実施され得る2つ以上の別個のプログラミング動作で行われてもよい。他の動作は、そのようなプログラミング動作の間に実施されてもよい。
場合によっては、1つ以上のメモリセルのプログラミングは、以前にプログラムされたメモリセルの閾値電圧分布に影響を及ぼし得る。例えば、NAND構造のワード線に沿ったプログラムされたメモリセルは、NAND構造の後続のワード線のプログラミング(例えば、同じブロック内の隣接するワード線に沿ったメモリセルのプログラミング)によって影響を受ける可能性がある。近傍のメモリセルに電荷が追加されると、以前にプログラムされたメモリセルの閾値電圧が増加し、その結果、閾値電圧分布が変化し、これが「プログラムディスターブ」と称され得る。これにより、データの誤読が生じ得る。このようなプログラムディスターブの影響を軽減するため、2つ以上の動作でプログラミングを実施することで、プログラミングが完了する前に隣接するメモリセルのプログラミングを可能にすることができる。例えば、第1のプログラミング動作で最終分布に近い第1の分布にメモリセル群をプログラムすることができ、これがFoggyプログラミング動作と称され得る。次に、1つ以上の隣接するワード線のメモリセルをプログラムすることができる。続いて、隣接するセルをプログラムした後、別のプログラム動作(Fineプログラミング動作)でメモリセル群を第2の分布(例えば、図8~図9に示されるもののような最終分布)にプログラムすることができる。このように第1の(近似又はFoggy)分布にプログラムし、その後、第2の(正確又はFine)分布にプログラムすることが、Foggy-Fineプログラミングと称され得る。
図10は、16個のデータ状態に対応する16個の分布を使用した、QLCメモリセル群のFoggy-Fineプログラミングの例を示す。全てのメモリセルは、Foggyプログラミングの前に、消去された分布(例えば、分布S0)内にあってもよい。Foggyプログラミングは、図10の上部に示された第1の分布S1’~S15’にメモリセルをプログラムする。その後、Fineプログラミングは、下部に示された第2の分布S1~S15にメモリセルをプログラムする。これらの2つのプログラム動作間にはある程度の時間があってもよく、メモリセルの1つ以上の他の群がその時間にプログラムされてもよい。所与の第1の分布のメモリセルは、その後、間のメモリセルを消去することなく、対応する第2の分布に更にプログラムされ、Fineプログラムが消去された分布から始まることはことが理解されよう。例えば、Foggyプログラム動作でS1’分布にプログラムされたメモリセルは、その後、Fineプログラム動作でS1分布に更にプログラムされ、Foggyプログラム動作でS2’分布にプログラムされたメモリセルは、その後、Fineプログラム動作でS2分布に更にプログラムされ、Foggyプログラム動作でS3’分布にプログラムされたメモリセルは、その後、Fineプログラム動作でS3分布に更にプログラムされる、というようになる。
第1の分布S1’~S15’は、概して第2の分布S1~S15よりも幅広く、隣接する分布間に顕著な重なりが存在する(例えば、分布S1’は分布S2’にオーバーラップし、分布S2’は分布S3’にオーバーラップする、など)。第1の分布へのプログラミングは、第2の分布に使用されるものと同じプログラミング工程を使用してもよく、又は異なる工程(例えば、同じ電圧及び時間又は異なる電圧及び/又は時間のパルスのプログラミング)を使用してもよい。図9に示されるような読み出し電圧を使用して第1の分布S1’~S15’にあるメモリセルを読み出すことにより、そのような重なりによって多数のエラー(例えば、ECCによって訂正され得るより多くのエラー)が発生する可能性があるため、Fineプログラミングには別のソースが使用されてもよい。データの安全なコピーは、良好なコピーがFineプログラミングに利用可能となるように、Foggyプログラム動作とFineプログラム動作との間に別の場所で維持されてもよい。例えば、データのコピーは、追加の不揮発性メモリセル(例えば、QLCメモリセルと同じメモリ構造にあり得るSLCメモリセル、又は他の場所)に、又は後続のFineプログラミングのために揮発性メモリに書き込まれてもよい。
所与のワード線のFoggyプログラミングとFineプログラミングとの間に、1つ以上の他のワード線(例えば、所与のワード線と何らかの結合を有し得る近傍のワード線)がプログラムされてもよい。図11は、3D NAND構造の4つのストリングのワード線(例えば、図6Aに示すNS1及びNS2などのNANDストリング)のワード線をプログラムするために使用され得るプログラミングスキームの例を示す。左側の第1の列は当該のワード線(WL)を示し、次の列(STAGE)は、4つのストリングSTR0~STR3のそれぞれについて、Foggy又はFineのいずれかとしてのプログラミングステージを示すことを示す。それぞれのエントリにおける数字は、異なるストリング及びワード線のFoggy及びFineプログラミングの順序を示す。矢印は、いくつかの工程の順序を示すために使用される。
プログラミングは、WL0のSTR0、STR1、STR2及びSTR3のFoggyプログラミングから始まり、WL1、STR0のFoggyプログラミング、次いで、WL0、STR0のFineプログラミングと続く。これに、WL1、STR1のFoggyプログラミング、次いでWL0、STR1のFineプログラミング、WL1、STR2のFoggyプログラミング、WL0、STR2のFineプログラミング、WL1、STR3のFoggyプログラミング、WL0、STR3のFineプログラミングが続き、次いで、WL2、STR0のFoggyプログラミング、というように続く。所与のメモリセル群のFoggyプログラミングとFineプログラミングとの間には、他のメモリセルがプログラム(例えば、Foggyプログラム)されて、隣接するセルの結合効果が既に整えられた後にFineプログラミングが行われるため、プログラムディスターブ効果は低減されることがわかる。例えば、WL1、STR0のFoggyプログラミングは図11の4番目のプログラム動作であり、WL1、STR0のFineプログラミングは13番目のプログラム動作であり、間には他の9つのプログラム動作が存在する。Foggyプログラムされ、まだFineプログラムされていないデータのコピーは、Fineプログラミングが完了するまで安全な場所に保存されてもよい(例えば、WL1、STR0のデータの安全なコピーは、図11の4番目の動作と13番目の動作との間に維持されてもよい)。安全なコピーを維持することは、記憶空間(例えば、揮発性又は不揮発性メモリ)と、データを転送するためのバス使用との両方に関して、かなりのリソースを取り得る。
本技術の一実施例では、MLCメモリセルに記憶されるデータに対してパリティデータが計算されてもよく、このパリティデータは、Foggyプログラムされているデータが復元されることを可能にし得る(例えば、安全なコピーを必要とすることなく元のデータを取得するために、Foggyデータを読み出した結果とパリティデータとを組み合わせることによって復元される)。
図12は、Foggyプログラムされたメモリセルからのデータの復元を容易にするため、パリティデータと共に使用されるグレイコードメモリ状態符号化スキームの例を示す。例示される符号化スキームは、図8~図10のいずれかに示される分布に適用され得る。分布S0~S15(列1)にはそれぞれ、任意の隣接する分布に割り当てられたデジタル値が1ビットだけ異なるように、グレイコード割り当てスキームに従って異なる4ビットデジタル値(列2)、又はメモリ状態が割り当てられる。例えば、分布S4(1100)及び隣接する分布S3(1101)に割り当てられたデジタル値は、最初の3ビットが同じであり(110)、最後のビットのみが異なる。同様に、分布S4(1100)及び隣接する分布S5(0100)に割り当てられたデジタル値は、最後の3ビットが同じであり(100)、最初のビットのみが異なる。パリティデータ(列3)は、割り当てられたデジタル値ごとに1つのパリティビットからなり、この事例では単に、デジタル値のビットに対する排他的OR(XOR)動作によって取得される。グレイコードは、メモリ状態の割り当てに使用されるため、パリティビットは、示されるように交互に0-1-0-1となる。他の実施例では、他のパリティスキーム(又は異なる符号化スキーム)が使用されてもよい。表示されているデジタル値は、Fineプログラミング後に達成され得る分布S0~S15にマッピングされているが、同じデジタル値が、Foggyプログラミングから生じ得る第1の分布S0~S15’に同様にマッピングされることが理解されよう。したがって、例えば、S3及びS3’分布の両方がデジタル値1101にマッピングされ、S12及びS12’分布の両方がデジタル値1010にマッピングされる。パリティデータを用いたグレイコード割り当てスキームの使用は、Foggyプログラムされたメモリセル(例えば、まだFineプログラムされておらず、データ状態がS1’~S15’であり、状態S1~S15ではないメモリセル)からのデータの復元を容易にし得る。
図13Aは、Foggyプログラムされたメモリセルからのデータの正確な復元を容易にするために、パリティデータを用いた好適なグレイコード割り当て(例えば、図12に示されるように、又は異なるグレイコードを使用する)がどのように使用され得るかを示す例である。図13Aは、1ビットのパリティデータがそれぞれの分布の上に示された(1又は0値のいずれか)、分布S1’~S15’(消去分布S0に加えて)を示す。これは、例えば、図12に示すように生成されたパリティデータを有する、(例えば、隣接するメモリセルがプログラムされている間に)Foggyプログラムされた状態にあるメモリセルに対応する。一連の読み出し工程は、図13Aに示されるように、読み出しレベルRL1~RL14で実行されてもよい。読み出しレベルRL1~RL14は、前の実施例のように分布間に位置しない(例えば、図8のVrA~VrG又は図9のVrS1~VrS15とは異なる)。代わりに、それぞれの読み出しレベルRL1~RL14は、分布の中間(中点)に若しくはほぼ中間(中点)に位置するか、又は両側の分布間の中ほどに位置する。例えば、RL3は、分布S2’と分布S4’との間の中ほどにあり、分布S3’の中間にある。したがって、RL3は、偶数パリティ値(パリティ値=0)を有する2つの分布(S2’及びS4’)の間で、奇数パリティ値(パリティ値=1)を有する分布(S3’)の中間に又はほぼ中間にある。読み出しレベルRL1~RL14は、分布S1~S14の中間に又はほぼ中間に(すなわち、最も低い分布S0、及び最も高い分布S15を除いて、全ての分布の中間に又はほぼ中間に)位置する。
表示されたパリティ値(使用されるグレイコードに従って交互になる)と組み合わせた14個の読み出しレベルRL1~RL14でFoggyプログラムされたデータ状態S1’~S15’を読み出すことは、Foggyプログラミング動作でプログラムされたデータを正確に復元するのに十分であり得る。場合によっては、これにより、FoggyプログラムされたデータをFoggyプログラムされたメモリセルから直接復元することが可能になり、安全なコピーを他の場所に維持する必要がなくなる(例えば、SLC内又は揮発性メモリ内の安全なコピーが不要になり得る)。
RL1が使用されるとき(例えば、RL1での電圧が対応するワード線に印加されるとき)オンになる(例えば、センスブロックによって検出されるように、導電性になるか又はトリッピングイベントを受ける)メモリセルは、S0分布又はS1’分布のいずれかにあり得る。これらの分布のうち、所与のセルは、セルに関連付けられたパリティビットから決定され得る(例えば、RL1でオンになり、パリティ=0を有する任意のセルは分布S0にあり、RL1でオンになり、パリティ=1を有する任意のセルは分布S1’にある)。このようにして、S0分布内の全てのメモリセル(及びS1’分布内のいくつかのメモリセル)は、RL1での読み出しから検出され得る。RL1ではオンにならず、RL2でオンになる(RL1とRL2との間でトリッピングイベントが検出される)メモリセルは、S1’分布又はS2’分布のいずれかにあり得る。これらの分布のうち、所与のセルは、セルに関連付けられたパリティビットから決定され得る(例えば、RL2で最初にオンになり、パリティ=1を有する任意のセルは分布S1’にあり、RL2で最初にオンになり、パリティ=0を有する任意のセルは分布S2’にある)。このようにして、S1’分布内の残りのメモリセル(及びS2’分布内のいくつかのメモリセル)は、RL2での読み出しから検出され得る。RL1又はRL2ではオンにならず、RL3でオンになるメモリセルは、S2’分布又はS3’分布のいずれかにあり得る。これらの分布のうち、所与のセルは、セルに関連付けられたパリティビットから決定され得る(例えば、RL3で最初にオンになり、パリティ=0を有する任意のセルは分布S2’にあり、RL3で最初にオンになり、パリティ=1を有する任意のセルは分布S3’にある)。このようにして、S2’分布内の残りのメモリセル(及びS3’分布内のいくつかのメモリセル)は、RL3での読み出しから検出され得る。このアプローチは、RL14まで及び、S0及びS1’~S13’内の全てのセルと、S14’内のいくつかのセルとを識別し得る。RL14が印加されたときにオンにならない(トリッピングイベントを経験しない)メモリセルは、S14’又はS15’のいずれかの分布にあり、これらは、対応のパリティビットによって区別され得る(RL14でオンにならず、パリティ=0を有するメモリセルは、分布S14’にあり、RL14でオンにならず、パリティ=1を有するメモリセルは、分布S15’にある)。
図13B~図13Dは、図13Aに示されるようにFoggyプログラムされたQLCセル(例えば、図6A~図6Cに示されるようなNAND構造又は他のメモリ構造のメモリセル)の読み出しの実装形態を示す。図13Bは、隣接する分布が1ビットだけ異なることを確実にするために、グレイコードを使用してデジタル値を16個の分布S0~S15に割り当てる割り当てスキームを示す。分布S0~S15が第1の列に記載され、デジタル値(又はメモリ状態)が第2の列に記載され、それぞれのデジタル値に対応するパリティ値が第3の列に記載されている。パリティ値は、対応するデジタル値の4ビットをXOR演算することによって取得され得る。図13Bに示されるスキームは、図12に例示されるスキームの代替であってもよい(異なるパリティスキームを含む他の符号化スキームも使用されてもよい)。図13Bに示されるパリティ値を使用してデータを符号化することにより、Foggyプログラムされたデータの後続の復元が可能になり得る。
図13Cは、図13Aに示されるような読み出しレベルRL1~RL14でのメモリセルの読み出しを、Foggyプログラムされたデータを復元するためにどのようにパリティビットと組み合わせ得るかを示す。読み出しレベルが第1の列に記載されており、初期値(4ビットデジタル値)が第2の列に記載されている。第2の列内の初期値を有するそれぞれのセルについて、復元値(復号された値)は、そのセルのパリティビットに依存する。パリティビットが第3の列に記載されており、対応する復元値が第4の列に記載されている。パリティ値を使用してFoggy読み出しデータ(例えば初期値)を復号することにより、場合によっては、Foggyプログラムされたデータの安全なコピーを維持することが不要になり得る。
RL1でオンになるメモリセルには、初期値1111(図13Bの表の分布S0に対応する)が割り当てられ得る。対応するパリティビット=0の場合、復元値は同じく1111であり(例えば、メモリセルは分布S0にある)、パリティビット=1の場合、復元値は1110である(例えば、メモリセルは分布S1’にあり、第4のビットは反転する)。RL1でオンにならず、RL2でオンになるメモリセルには、初期値1110(図13Bの表の分布S1又はS1’に対応する)が割り当てられ得る。対応するパリティビット=1の場合、復元値は同じく1110であり(例えば、メモリセルは分布S1’にあり、初期値が復元値として使用される)、パリティビット=0の場合、復元値は1010である(例えば、メモリセルは分布S2’にあり、第2のビットは反転する)。RL1又はRL2でオンにならず、RL3でオンになるメモリセルには、初期値1010(図3Bの表の分布S2又はS2’に対応する)が割り当てられ得る。対応するパリティビット=0の場合、復元値は同じく1010であり(例えば、メモリセルは分布S2’にあり、初期値が復元値として使用される)、パリティビット=1の場合、復元値は1000である(例えば、メモリセルは分布S3’にあり、第3のビットは反転する)。このアプローチは、図13Cに示されるようにRL14まで継続し、RL14で最初にオンになるメモリセルには、初期値0111(図13Bの表の分布S13又はS13’に対応する)が割り当てられ、対応するパリティ値に応じて、復元値0111(パリティ=1の場合)又は0011(パリティ=0の場合)のいずれかが割り当てられる。RL14でオンにならない残りのメモリセル(図13Cの「残り」に示されている)には、初期値0011(分布S14又はS14’に対応する)が割り当てられ、対応するパリティ値に応じて、分布S14に対応する復元値0011(パリティ=0の場合)又は分布S15に対応する1011(パリティ=1の場合)のいずれかが割り当てられる。
値を復元するためのパリティデータを用いたFoggy読み出しは、様々な方法で実装され得る。図13Dは、対応する論理動作によって示されるときにビットを反転させるために、初期値(ビットT、C、B、及びA)及びパリティビット(S)に論理動作を適用する例を示す。例えば、第1のラインには、初期値1111がパリティビット0又は1と共に存在し得る。パリティビットが1である場合(T&C&B&A&S)、ビットAは0に反転し(A=0)、そうでなければ初期値1111が復元値として使用される。第2のラインには、初期値1110が、パリティビット0又は1と共に存在し得る。パリティビットが0である場合(T&C&B&!A&!Sであり、式中、「!」は逆を示すため、!AはAの逆であり、すなわち、A=0の場合は!A=1、A=1の場合は!A=0である)、ビットCは0に反転し(C=0)、そうでなければ初期値1110が復元値として使用される。第3のラインには、初期値1010がパリティビット0又は1と共に存在し得る。パリティビットが1である場合(T&!C&B&!A&S)、ビットBは0に反転し(B=0)、そうでなければ初期値1010が復元値として使用される。QLCメモリに例示される16個の値については、15回の論理演算が復元値を得るのに十分であり得ることがわかる。グレイコードが使用されるため、任意の所与の初期値については、パリティビットに応じて反転するビットが1つだけ存在する。反転されるビットは、説明のために影付きである。
AND演算などの単純な論理演算が、メモリダイ上に実装されてもよい。場合によっては、そのような論理演算は、データラッチ194~197などのデータラッチ(例えば、パリティデータのための追加のラッチ付き)内にデータが保持されている間に適用されてもよい。ビットは、データがラッチ内に留まっている間(例えば、Fine書き込み動作で復元値を書き込むために使用される前に)スキームに従って反転されてもよい。図13Aに示されるように、Foggyプログラムされたデータを読み出すことにより、初期値がデータラッチ194~197内にラッチされ得る。このデータがパリティ値と組み合わされたとき(例えば、図13Dに示された論理演算を使用して)、データがデータラッチ194~194内に留まっている間に、ビットを反転させることによって復元値が取得され得る。次いで、この復元データは、データラッチ194~197から、Fine書き込み動作で同じメモリセルに再び書き込まれてもよく、それにより、初期値及び復元値の他の回路(例えば、メモリダイの外部)への転送が不要になる。
図13Eは、(例えば、上記の図13A~図13Dの実施例にあるように)パリティデータを使用することによってFoggyプログラムされたメモリセルからデータを復元するための動作を示す。本方法は、分布の中間の読み出しレベル(例えば、図13Aに示されるように、RL1~RL14)で読み出しを実施すること(1302)と、読み出し結果に従って初期値(例えば、図13Cに示されるように、RL1~RL14に対応する初期値)を割り当てること(1304)と、読み出しデータに対応するパリティデータを取得すること(1306)(パリティデータは、Foggyプログラミングの前に生成されてもよく、後続の使用のために保存されてもよい)と、パリティデータを読み出し結果と組み合わせて、復元データを取得する(例えば、図13C~図13Dに例示されるように、パリティビットによって示されたときに初期値のビットを反転させることによる)こと(1308)と、を含む。
図13A~図13Dに示されるように、Foggyプログラムされたメモリセルからのデータの復元(復号)は、パリティデータをFoggy読み出し動作の結果と組み合わせて使用する。パリティデータは、データが書き込まれたとき、又はデータが書き込まれる前に計算されてもよく、適切な場所に記憶されてもよい。例えば、パリティデータは、メモリダイに送信される前にメモリコントローラ内で計算されてもよく、Foggyプログラムされたデータを復元するために必要とされるまで、揮発性メモリ(例えば、DRAM)に記憶されてもよい。
図14は、メモリデバイス101が(例えば、図1Aに示されるように)、不揮発性メモリダイ1414(例えば、不揮発性メモリ104の個々の不揮発性メモリダイ)内のQLC記憶装置1412にFoggyプログラムされたメモリセルからのデータの符号化及び復号を実施するように修正される例を示す。コントローラ102は、SRAM1416を含むFEP回路141及びBEP回路142を含む。FEP回路141は、バス1418(例えば、PCIeインターフェース)を介してBEP回路142に接続される。BEP回路142は、低密度パリティ検査(LDPC)符号化及び復号を実装し得るECC回路1420(例えば、ECCエンジン226/256)と、この事例では、XOR回路1413であるパリティ回路(例えば、XOR回路1413は、XORエンジン224/254によって実装され得る)と、デコーダ回路1422(例えば、プロセッサ220/250を使用して実装される)と、を含む。コントローラ102は、バス1424(例えば、メモリバス294)を介して不揮発性メモリダイ1414に接続される。
データは、入力1428でホストから受信され、SRAM1416からバス1418を介してECC回路1420に転送され、ECC回路1420はデータを符号化し、データをQLC記憶装置1412でのFoggyプログラミングのためにバス1424を介して転送(1430)し、更にデータをXOR回路1413に送信し、XOR回路1413は、ローカルメモリ(この例ではDRAM106)に保存されるXORビットを計算する。続いて、データがFoggyプログラムされたままである間に他の書き込みが行われてもよく、プログラミングシーケンス(例えば、図11に示されるシーケンス)の後の時点で、データはFineプログラムされてもよい。Fineプログラミング時に、Foggy読み出し(例えば、図13A~図13Dに示されるように)が実行されてもよく、その結果は、デコーダ1422に転送(1434)され得る(例えば、図13Cに示される初期値は、不揮発性メモリダイ1414の読み出し/書き込み回路からデコーダ1422に送信され得る)。デコーダ1422はまた、DRAM106からXORビットを受信し、Foggy読み出し結果をXORビットと組み合わせて、(例えば、図13Cに示すように)復元データを取得する。次いで、これらの結果は、Fineプログラム動作において転送(1434)され、同じメモリセルに書き込まれる(例えば、Foggyプログラムされた同じメモリセルが更にプログラムされる)。
この実施例は、構成要素間(例えば、バス1424を介したコントローラ102とメモリダイ1414との間、及び、バス1418を介したFEP回路141とBEP回路142との間)の大量のデータ転送を含むことがわかる。例えば、QLC記憶装置では、4つの論理ページのデータがまとめて記憶されてもよく、そのような4つのページをXOR演算した結果がパリティデータのページである。図14に示されるスキームでは、このようなデータをプログラムすることは、4つの論理ページのデータを転送(1430)することと、その後に、Foggy読み出しから取得した4つのページをコントローラ102に(バス1424を介して)転送(1432)することと、4つのページの復元データをFineプログラミングのために再びメモリダイ1414に転送(1434)することと、を含む。これは、特に(例えば、図1Dに示されるように)バスが複数のメモリダイ間で共有される場合、バス1424上に大量のトラフィックをもたらし得る。更に、XORデータによってローカルメモリ106内で相当な空間が占有され得る(例えば、Foggyプログラムされるデータの4つの論理ページごとに、XORデータの1つの論理ページ)。DRAM106内のXORデータにアクセスすることは、バス1418上に大量のトラフィックを生成し得る。
図15Aは、Foggy-Fineプログラミングのためのオンチップ符号化及び復号を実施するように構成されたメモリデバイス1530の例を示す。メモリダイ1532は、メモリダイ1532内にパリティデータ(XORデータ)を生成するように構成されたパリティデータ生成回路、この例では、XOR回路1540を含む。XOR回路1540は、QLC記憶装置1412の不揮発性メモリセルに記憶されるデータに対するパリティデータを計算するための手段とみなすことができる。例えば、データがメモリデバイス1530に転送(1536)されると、データは、コントローラ102からバス1424を介してQLC記憶装置1412に、またメモリダイ1532のXOR回路1540に(任意のECCデータと共に)転送(1538)され得る。データは、QLC記憶装置1412内にFoggyプログラムされてもよく、また、パリティデータ(この例ではXORデータ)を生成するために使用されてもよい。パリティデータは、データがFoggyプログラムされている間、Fineプログラミングが開始されるまで保存され得る。メモリダイ1532はまた、QLC記憶装置1412からFoggy読み出しデータを受信し(転送1544)、XOR回路1540によって以前に生成されたXORデータを使用してFoggy読み出しデータを復号するように構成されたオンチップデコーダ1542を含む。このようにして復元される復号データは、Fineプログラミング動作でQLC記憶装置1412に転送(1546)される。このようにオンチップでパリティデータを生成し、オンチップで復号を実施することにより、Foggy-Fineプログラミングを安全なデータのコピーなしに(例えば、安全なコピーの代わりにFoggyプログラムされたデータとパリティデータとの組み合わせを使用して)、バス1424上のトラフィックは比較的少なくして実施することができる。例えば、データの4つの論理ページが書き込まれると、4つの論理ページはメモリダイ1532に転送(1538)される。続いて、4つの論理ページのFoggy読み出しデータがオンチップデコーダ1542に転送され、バス1424上にトラフィックは生成されず、復元データがQLC記憶装置1412に再び転送(1546)されて、同じくバス1424上にトラフィックは生成されない。場合によっては、XORデータは、メモリダイ1532内のSLC記憶装置に保存されてもよく、それにより、パリティデータは、バス1424上にトラフィックを生成することなく保存及び復元され得る(他の例では、XOR回路1540からのXORデータは、オフチップで、例えばメモリコントローラ102内に又はメモリコントローラ102に接続された揮発性メモリ内に保存されてもよい)。
図15Bは、QLC記憶装置1412の物理ページにプログラミングされるデータの4つの論理ページ(それぞれ「T」、「C」、「B」、及び「A」とラベル付けされた論理ページ)に対応する4組のデータラッチ1550~1553を含む、オンチップXOR回路1540の例示的実装形態を示す。例えば、ラッチのそれぞれの組は、ECCデータ(例えば、メモリコントローラ102のECC回路によって計算された)と、ホストからのデータと共に記憶され得る任意の他のオーバーヘッドデータと、を伴う、ホストからのデータの1つの論理ページに対する容量を有し得る。XOR回路1540は、QLC記憶装置1412のメモリセルに対応するビットのそれぞれの組に対してXOR論理演算を実施し、対応するXORデータのビット(パリティデータ)を生成するように構成されたXOR論理回路1554を含む。XOR論理回路1554は、複数の不揮発性メモリセルに記憶されるデータに対するパリティデータを計算するための手段の例とみなすことができる。パリティデータは、1組のデータラッチ1556に記憶される。例示的な1組のビット1558は、QLC記憶装置1412のメモリセルにプログラムされる。XOR論理回路1554は、ビットの組1558のビット1101に対応する、対応するパリティビット(この場合、「1」)を計算する。例えば、モジュロ2加算又は他の手法を使用して、XORビットを生成することができる(例えば、奇数の「1」ビットが存在する場合、XORの結果は「1」である)。パリティビットが他の方法(XORではない)で生成される場合、パリティビットを生成するために異なる論理が適用されてもよい。データラッチ1550~1553は、図3Aのデータラッチ194~197によって実装されてもよく、符号化(この例ではXORビットの計算)は、データがFoggyプログラミングの前又は最中にラッチ内にあるときに実施されてもよい。センスブロック51の追加回路と組み合わせたデータラッチ1550~1553(例えば、データラッチ194~197)は、複数の不揮発性メモリセルを第1の分布にプログラムするための手段の例とみなすことができる。
図15Cは、QLC記憶装置1412のページのFoggy読み出しから取得したデータの4つの論理ページに対応する4組のデータラッチ1560~1563を含むオンチップデコーダ1542の例を示す。例えば、ラッチのそれぞれの組は、ECCデータと、ホストから受信したデータと共に記憶され得る任意の他のオーバーヘッドデータと、を伴う、データの1つの論理ページに対する容量を有し得る。いくつかの実施例では、同じ物理データラッチがXORデータラッチ1550~1553として、データラッチ1560~1563(例えば、データラッチ194~197)の復号に使用されてもよい。Foggy読み出しが実施されるとき(例えば、図13Aに示すように)、初期データ状態は、データラッチ1560~1563(例えば、図13Cに記載された初期値)にロードされてもよい。センスブロック51の追加回路と組み合わせたデータラッチ1560~1563(例えば、データラッチ194~197)は、第1の分布における複数の不揮発性メモリセルを読み出すための手段の例とみなすことができる。オンチップデコーダ1542は、そのようなFoggy読み出しから取得した初期値を1組のデータラッチ1566内のパリティデータ(例えば、Foggyプログラミング前にXOR回路1540によって生成されたXORデータ)と組み合わせるデコード論理回路1564を含む。デコード論理回路1564は、メモリセルからの初期値が復元値として使用され得るように、図13C~図13Dに示されるようにFoggy読み出しデータとパリティデータとを組み合わせてもよく、又はメモリセルに関連付けられたパリティ値に応じて1ビットが反転されてもよい。例えば、デコード論理回路1564は、図13Dに例示される論理演算を実施するため、AND論理回路及びNOR論理回路を含んでもよい。第1の例1568では、メモリセルのFoggy読み出しは初期値1101を提供し(例えば、メモリセルがRL12で導電性になる)、メモリセルの対応するXORビットは1である。デコード論理回路1564は、この場合(図13C~図13Dの対応するエントリに示されるように)復元値1101を生成する。第2の実施例1570では、別のメモリセルのFoggy読み出しは初期値1101を提供し、メモリセルに対するXORビットは0である。デコード論理回路1564は、この場合(図13C~図13Dの対応するエントリに示されるように)復元値0101を生成する。デコード論理回路1564は、図13Dに示される論理演算に従ってビットT(影付き)を0に単純に反転させることができ(T&C&!B&A&!Sの場合、T=0に設定される)、その結果、初期値は、ラッチ1560~1563内にある間に復元値に置き換えられる。デコード論理回路1564は、XORビットと組み合わせたQLC記憶装置1412のメモリセルのFoggy読み出しによって取得される対応する初期値から、図13C~図13Dの復元値を生成するように構成される。次いで、これらの復元値を使用して、メモリセルのFineプログラミングが実施され得る(例えば、Foggyプログラムされた同じメモリセルは、復元値に基づいて図10に示されるように更にプログラムされる)。データは、データラッチ1560~1563(例えば、データラッチ194~197)からFineプログラムされてもよい。オンチップデコード1542は、パリティデータと組み合わされた第1の分布内の複数の不揮発性メモリセルを読み出した結果からデータを復元し、複数の不揮発性メモリセルを第1の分布から第2の分布に更にプログラムしてデータを記憶するための手段の例とみなすことができる。
図16は、プログラミングに使用される一連の工程の例を示す。工程1では、データの4つの論理ページがメモリダイ(例えば、メモリダイ1532)に転送され、対応するデータラッチの組(例えば、ラッチT、C、B、A)にロードされる。工程2では、4つの論理ページは、プログラムされるメモリセルごとにXORビット(又はフラグ「A」)を生成するためにXOR演算を受ける。図16の例では、これは25usを要する。工程3では、XORビット(転送されたデータの4つの論理ページから生成されたXORデータの1つの論理ページ)は、SLCメモリに書き込まれる(例えば、SLCと指定されるメモリダイ1532上のNANDメモリの一部分に書き込まれる)。図16の例では、これは130usを要する。このように、オンチップ符号化(XOR演算による)及びSLCへのXORデータの記憶は、迅速に実施され得る。SLC部分及びQLC部分は、別個の構造であってもよく、又は両方が共通の構造に形成されてもよい(例えば、構造のいくつかのブロックはQLCブロックとして、その他はSLCブロックとして指定されてもよく、これらの指定は経時的に変化し得る)ことが理解されよう。
上記の実施例のいずれかに記載されているようなFoggy-Fineプログラミングのためのオンチップ符号化及び復号は、図17~図19の実施例を含むが、これらに限定される様々な方法で実装されてもよい。図17は、SLCメモリセルが、Fineプログラミングでの後の使用のためにパリティデータ(例えば、XORデータ)を記憶するために使用される例を示す。データ転送1770(例えば、ホストから)は、メモリコントローラ102によって受信され、データは、ECC回路1772によってECCによる符号化が行われる。次いで、符号化されたデータは、バス1424を介してQLC記憶装置1412に転送(1774)され、そこでFoggyプログラムされ、更にXOR回路1540に転送され、XOR回路1540がXORビットを生成し、次いでXORビットはSLCキャッシュ1776に記憶される。SLCキャッシュ1776は、SLCデータ記憶用に構成された構造1778(例えば、3D NANDメモリ構造)の一部分である。構造1778はまた、QLC記憶装置1412を含み、これらの部分は再構成可能であってもよい。Foggyプログラミング後、データがQLC記憶装置1412内にあり、対応するXORデータがSLCキャッシュ1776内にある間に、(例えば、図11に示すように)他のデータがプログラムされてもよい。続いて、Fineプログラミングがスケジュールされてもよく、Foggy読み出しは、QLC記憶装置1412からデコーダ1524に初期値を読み出す(転送1780)ために実施されてもよく、XORデータはSLCキャッシュ1776から読み出されてもよい(転送1782)。次いで、デコーダ1542は、Foggy読み出しデータとXORデータとの組み合わせから復元値を生成する(例えば、図13Cに示すように復号する)。次いで、これらの復元値を使用して、以前にFoggyプログラムされたメモリセルのFineプログラミングが実施される(転送1784)。したがって、この実施例では、バス1424経由のデータの転送は、初期データ(例えば、ユーザデータ及び任意のオーバーヘッドの4つの論理ページ)がメモリダイ1532に転送されるときに限られる。XORデータ、Foggy読み出しデータ、及び復元データのその後の転送は、メモリダイ1532内で内部的に行われる。
図18は、SLCメモリセルが、Fineプログラミングでの後の使用のためにパリティデータ(XORデータ)を記憶するために使用される別の例を示す。データ転送1770(例えば、ホストから)は、メモリコントローラ102によって受信され、データは、ECC回路1772によってECCによる符号化が行われる。次いで、符号化されたデータは、バス1424を介してQLC記憶装置1412に転送(1774)され、そこでFoggyプログラムされ、更にXOR回路1540に転送され、XOR回路1540がXORビットを生成し、次いでXORビットはSLCキャッシュ1776に記憶される。続いて、Fineプログラミングがスケジュールされてもよく、QLC記憶装置1412からデコーダ1524に初期値を読み出す(転送1780)ためにFoggy読み出しが実施されてもよい。この実施例では、XORデータは、SLCキャッシュ1776からデコーダ1542に直接転送されない。SLCキャッシュ1776からのXORデータは、バス1424を介してメモリコントローラ102のECC回路1772に転送され(転送1880)、エラーの訂正が実施される。訂正されたXORデータ(復号されたパリティデータ)は、バス1424を介してデコーダ1542に転送される(転送1882)。ECC回路1772は、パリティデータを復号し、復号されたパリティデータをデコーダ1542に送信する誤り訂正符号(ECC)の手段の例とみなすことができる。次いで、デコーダ1542は、(例えば、図13Cに示すように)Foggy読み出しデータと訂正されたXORデータとの組み合わせから復元値を生成する。次いで、これらの復元値を使用して、以前にFoggyプログラムされたメモリセルのFineプログラミングが実施される(転送1784)。このように、この実施例では、バス1424経由の初期転送1774(例えば、4つの論理ページ)に加えて、メモリダイ1532からメモリコントローラ102へのXORデータ(例えば、データの4つの論理ページに対する1つの論理ページ)の転送、及びバス1424上でのメモリコントローラ102からメモリダイ1532への訂正されたXORデータの転送も存在する。XORデータ内のエラーは復元されたデータ内のエラー、ひいてはFineプログラムされたデータ内のエラーをもたらし得るため、ECCを使用したこのようなエラーの低減又は排除によって、バス1424上の追加のトラフィックが正当化され得る。
パリティデータは、SLCキャッシュ1776に記憶される前に、ECC回路1772によって別々に符号化されてもよいが、場合によっては、例えば、パリティデータが符号化データのXOR積である場合、別個の符号化は必要とされない(例えば、符号語のXOR積は、別個の符号化が必要とされないような符号語を提供し得る)。パリティデータのECCによる訂正は、全てのデータに適用されてもよく、又は選択的に使用されてもよい。例えば、ECCによる訂正は、選択ブロック(高エラーを有するブロック)に使用されてもよく、所与のブロックの選択部分(例えば、より低いレベルの3Dブロック)に使用されてもよく、又はトリガイベント(例えば、特定の数の書き込み消去サイクル後、閾値を超える温度、又はそのような他のイベント)に応答して使用されてもよい。このように、メモリデバイス1530は、図17のスキーム及び図18のスキームの両方を、異なる時間に及び/又はQLC記憶装置1412の異なる部分内のデータのために使用することができる。
図19は、ローカルメモリ、DRAM106が、Fineプログラミングでの後の使用のためにパリティデータ(XORデータ)を記憶するために使用される別の例を示す。データ転送1770(例えば、ホストから)は、メモリコントローラ102によって受信され、データは、ECC回路1772によってECCによる符号化が行われる。次いで、符号化されたデータは、バス1424を介してQLC記憶装置1412に転送(1774)され、そこでFoggyプログラムされ、更にXOR回路1540に転送され、XOR回路1540がXORビットを生成し、XORビットはDRAM106に転送される(転送1990)。続いて、Fineプログラミングがスケジュールされてもよく、QLC記憶装置1412からデコーダ1524に初期値を読み出す(転送1780)ためにFoggy読み出しが実施されてもよい。XORデータは、DRAM106からデコーダ1542に転送される(転送1992)。次いで、デコーダ1542は、(例えば、図13Cに示すように)Foggy読み出しデータとXORデータとの組み合わせから復元値を生成する。次いで、これらの復元値を使用して、以前にFoggyプログラムされたメモリセルのFineプログラミングが実施される(転送1784)。したがって、この実施例では、バス1424経由の初期転送1774(例えば、4つの論理ページ)に加えて、メモリダイ1532からDRAM106へのXORデータ(例えば、データの4つの論理ページに対する1つの論理ページ)の転送、及びバス1424上でのDRAM106からメモリダイ1532へのXORデータの転送も存在する。
記載されるいくつかの実施例では、Foggy-Fineプログラミングのための符号化及び復号がオンチップで(例えば、データがプログラムされたメモリ構造と同じダイ上に形成された符号化回路及び復号回路によって)実施される一方、他の実施例では、符号化回路及び復号回路は、集積メモリアセンブリ内のメモリダイに接合された制御ダイ内に位置してもよい。例えば、図15A及び図17~図19のXOR回路及びデコーダ回路は、そのような制御ダイ内に位置してもよい。
図20は、本技術の態様を実装する方法の例を示すフロー図である。この方法は、メモリダイによって、マルチレベルセル(MLC)メモリのページに記憶される複数の論理ページのデータを受信すること(2002)と、メモリダイの回路によって、複数の論理ページに対するパリティデータを計算すること(2004)(例えば、記憶されるユーザデータの4つの論理ページに対するXORビットのページを計算すること)と、MLCメモリのページのメモリセルが第1の分布にプログラミングされるように、Foggyプログラム動作においてMLCメモリのページ内の複数の論理ページのデータをプログラムすること(2006)と、を含む。この方法は、(例えば、図13Aに示されるように)メモリセルがFoggy読み出し動作における第1の分布にある間に、MLCメモリのページを読み出すこと(2008)と、メモリダイの回路によって、Foggy読み出し動作の結果及びパリティデータから複数の論理ページのデータを計算すること(2010)(例えば、図13Cの復元値を計算すること)と、Fineプログラミング動作において(例えば、図10に示すように)MLCメモリのページを第1の分布から第2の分布に更にプログラミングすることであって、第2の分布は、パリティデータから計算された複数の論理ページを表す、こと(2012)と、を更に含む。この方法は、メモリダイ内でシングルレベルセル(SLC)セルとして構成された追加のメモリセルにパリティデータを記憶することを含んでもよく、かつ、SLCセルからパリティデータを読み出すことと、パリティデータから複数の論理ページを計算する前に、パリティデータの誤り訂正符号(ECC)による復号を実施することと、を更に含んでもよく、又は、メモリダイからパリティデータを送信して揮発性メモリに記憶することと、その後、計算のために揮発性メモリからパリティデータを受信することと、を含んでもよい(図20には図示せず)。
不揮発性記憶装置の例は、メモリダイ上に形成される複数の不揮発性メモリセルを含み、それぞれの不揮発性メモリセルは、複数ビットのデータとメモリダイ上に形成された制御回路とを保持するように構成されており、制御回路は、複数の不揮発性メモリセルに記憶されるデータに対するパリティデータを計算し、複数の不揮発性メモリセルを第1の分布にプログラムし、第1の分布内の複数の不揮発性メモリセルを読み出し、第1の分布内の不揮発性メモリセルを読み出した結果とパリティデータとの組み合わせからデータを復元し、データを記憶するために複数の不揮発性メモリセルを第1の分布から第2の分布に更にプログラムするように構成されている。
制御回路は、メモリダイ上に形成された追加の不揮発性メモリセル内にパリティデータをプログラムするように更に構成されてもよく、それぞれの追加の不揮発性メモリセルは、1ビットのデータを保持するように構成されている。制御回路は、追加の不揮発性メモリセルからパリティデータを読み出し、誤り訂正符号(ECC)による復号のためにパリティデータを送信するように更に構成されてもよい。制御回路は、メモリダイに接続された制御ダイ上の揮発性メモリに記憶するためのパリティデータを送信し、揮発性メモリからパリティデータを受信するように更に構成されてもよい。複数の不揮発性メモリセルは、メモリダイのNAND構造の第1のワード線沿いに位置してもよく、制御回路は、複数の不揮発性メモリセルを第1の分布にプログラムすることと、複数の不揮発性メモリセルを第1の分布から第2の分布に更にプログラムすることとの間で、NAND構造の少なくとも第2のワード線をプログラムするように更に構成されている。第1の分布は、4ビットのデータを表す16個の分布からなってもよく、制御回路は、最も低い第1の分布及び最も高い第1の分布以外の第1の分布の中間に又はほぼ中間に位置する14個の読み出し電圧を使用して、第1の分布内の複数の不揮発性メモリセルを読み出すように更に構成されてもよい。制御回路は、隣接する分布にただ1ビットだけ異なるデジタル値が割り当てられるように、グレイコードに従って複数の不揮発性メモリセルをプログラムするように構成されてもよい。制御回路は、第1の分布が顕著な重なりを有するように、Foggyプログラムにおいて第1の分布内の複数の不揮発性メモリセルをプログラムし、かつ、第2の分布が第1の分布より狭く、第1の分布より小さい重なりを有するように、Fineプログラミングにおいて複数の不揮発性メモリセルを第1の分布から第2の分布にプログラムするように構成されてもよい。制御回路は、複数の不揮発性メモリセルに記憶される4つの論理ページのデータに対して1つの論理ページのパリティデータを計算し、論理ページのパリティデータをメモリダイ上に形成された追加の不揮発性メモリセルに書き込むか、又はメモリダイの外部での記憶用に論理ページのパリティデータを送信し、その後、データを復元するために、追加の不揮発性メモリセルから論理ページのパリティデータを読み出すか、若しくはメモリダイの外部から論理ページのパリティデータを受信するように構成されてもよい。
方法の例は、メモリダイによって、マルチレベルセル(MLC)メモリのページに記憶される複数の論理ページのデータを受信することと、メモリダイの回路によって、複数の論理ページに対するパリティデータを計算することと、MLCメモリのページのメモリセルが第1の分布にプログラムされるように、Foggyプログラム動作においてMLCメモリのページ内の複数の論理ページのデータをプログラムすることと、Foggy読み出し動作において、メモリセルが第1の分布にある間にMLCメモリのページを読み出すことと、メモリダイの回路によって、Foggy読み出し動作の結果及びパリティデータから複数の論理ページのデータを計算することと、Fineプログラミング動作においてMLCメモリのページを第1の分布から第2の分布に更にプログラムすることであって、第2の分布は、パリティデータから計算された複数の論理ページを表す、ことと、を含む。
複数の論理ページに対するパリティデータを計算することは、MLCメモリのページのメモリセルごとに1つのパリティビットを計算することを含んでもよい。パリティデータを計算することは、複数の論理ページに対して排他的OR(XOR)演算を実施することを含んでもよい。この方法は、メモリダイ内でシングルレベルセル(SLC)セルとして構成された追加のメモリセルにパリティデータを記憶することを含んでもよい。この方法は、SLCセルからパリティデータを読み出し、パリティデータから複数の論理ページを計算する前にパリティデータの誤り訂正符号(ECC)による復号を実施することと、を更に含んでもよい。この方法は、メモリダイからパリティデータを送信して揮発性メモリに記憶することと、その後、計算のために揮発性メモリからパリティデータを受信することと、を更に含んでもよい。この方法は、Foggyプログラミング動作の後、及びFoggy読み出し動作の前に、MLCメモリの少なくとも1つの他のページをプログラムすることを更に含んでもよい。MLCメモリのページは、NANDメモリ構造の第1のワード線に沿っていてもよく、MLCメモリの少なくとも1つの他のページは、NANDメモリ構造の少なくとも第2のワード線に沿っていてもよい。メモリセルが第1の分布内にある間にMLCメモリのページを読み出すことは、第1の分布の中点で又はほぼ中点で読み出しレベルを使用することを含み得る。
不揮発性記憶装置の例としては、複数の不揮発性メモリセルを含み、複数の不揮発性メモリセルに記憶されるデータに対するパリティデータを計算するための手段と、複数の不揮発性メモリセルを第1の分布にプログラムするための手段と、第1の分布内の複数の不揮発性メモリセルを読み出すための手段と、第1の分布内の複数の不揮発性メモリセルを読み出した結果とパリティデータとの組み合わせからデータを復元し、データを記憶するために複数の不揮発性メモリセルを第1の分布から第2の分布に更にプログラムするための手段と、を更に含む、メモリダイが挙げられる。
不揮発性記憶装置は、メモリダイに接続されたメモリコントローラダイを含んでもよく、メモリコントローラダイは、パリティデータを誤り訂正符号(ECC)によって復号し、復号されたパリティデータを、データを復元するための手段に送信するための手段を含む。
本発明の前述の詳細な説明は、例示及び説明の目的のために提示したものである。前述の詳細な説明は、網羅的であること、又は開示した正確な形態に本発明を限定することを意図したものではない。上記の教示に鑑みて多くの修正及び変形が可能である。説明した実施形態は、本発明の原理及びその実際の用途を最も良く説明するために選択されており、それによって、当業者が様々な実施形態で、企図される特定の使用に適するように様々な修正を伴って、本発明を最も良く利用することを可能にする。本発明の範囲は、本明細書に添付の請求項によって定義されることが意図されている。