(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-02
(45)【発行日】2022-09-12
(54)【発明の名称】情報処理システム
(51)【国際特許分類】
G11C 11/56 20060101AFI20220905BHJP
【FI】
G11C11/56 210
(21)【出願番号】P 2021148809
(22)【出願日】2021-09-13
(62)【分割の表示】P 2020125604の分割
【原出願日】2016-06-30
【審査請求日】2021-09-13
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】原 徳正
(72)【発明者】
【氏名】柴田 昇
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2007-157315(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 11/56
(57)【特許請求の範囲】
【請求項1】
ホストと、
データが消去された消去状態を示す第1のしきい値領域と、前記第1のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第2から第16のしきい値領域とを合わせた16個のしきい値領域により、第1から第4ビットで表わせられる4ビットのデータを記憶可能なメモリセルを複数有する不揮発性メモリと、前記ホストから受信したライト要求に応じて、前記第1ビット及び前記第2ビットのデータを書き込む第1プログラムを前記不揮発性メモリに行わせた後に、前記第3ビット及び前記第4ビットのデータを書き込む第2プログラムを前記不揮発性メモリに行わせるメモリコントローラと、を有するメモリシステムと、
を備え、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第1ビット及び前記第2ビットのデータに応じて、データが消去された消去状態を示す第17のしきい値領域と、前記第17のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第18から第20のしきい値領域とのうちのいずれかのしきい値領域になるように前記第1プログラムを前記不揮発性メモリに行わせるように構成され、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第17から第20のしきい値領域のうちのいずれかのしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記第nのしきい値領域は前記第(n-1)のしきい値領域よりも電圧レベルが高く(nは2以上16以下の自然数)、
前記第kのしきい値領域は前記第(k-1)のしきい値領域よりも電圧レベルが高く(kは18以上20以下の自然数)、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第17のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第21のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第18のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第22のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第19のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第23のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第20のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第24のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記4個の第23のしきい値領域のしきい値領域及び前記4個の第24のしきい値領域のしきい値領域はいずれも、前記4個の第21のしきい値領域のうちのいずれのしきい値領域よりも電圧レベルが高く、
前記4個の第23のしきい値領域のしきい値領域及び前記4個の第24のしきい値領域のしきい値領域はいずれも、前記4個の第22のしきい値領域のうちのいずれのしきい値領域よりも電圧レベルが高く、
前記4個の第22のしきい値領域は、前記第1から第16のしきい値領域のうちの連続する4個のしきい値領域であり、
前記4個の第24のしきい値領域は、前記第1から第16のしきい値領域のうちの連続する4個のしきい値領域であり、
前記4個の第21のしきい値領域は、前記第1から第16のしきい値領域のうちの連続する4個のしきい値領域であり、
前記4個の第23のしきい値領域は、前記第1から第16のしきい値領域のうちの連続する4個のしきい値領域であり、
前記4個の第22のしきい値領域のしきい値領域はいずれも、前記4個の第21のしきい値領域のうちのいずれのしきい値領域よりも電圧レベルが高く、
前記4個の第24のしきい値領域のしきい値領域はいずれも、前記4個の第23のしきい値領域のうちのいずれのしきい値領域よりも電圧レベルが高く、
前記第1から第16のしきい値領域のうち隣接するしきい値領域間に存在する15個の境界のうち、前記第1ビットのデータの値の判定に用いられる第1の境界の数、前記第2ビットのデータの値の判定に用いられる第2の境界の数、前記第3ビットのデータの値の判定に用いられる第3の境界の数、前記第4ビットのデータの値の判定に用いられる第4の境界の数が順に1、2、6、6である、
情報処理システム。
【請求項2】
ホストと、
データが消去された消去状態を示す第1のしきい値領域と、前記第1のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第2から第16のしきい値領域とを合わせた16個のしきい値領域により、第1から第4ビットで表わせられる4ビットのデータを記憶可能なメモリセルを複数有する不揮発性メモリと、前記ホストから受信したライト要求に応じて、前記第1ビット及び前記第2ビットのデータを書き込む第1プログラムを前記不揮発性メモリに行わせた後に、前記第3ビット及び前記第4ビットのデータを書き込む第2プログラムを前記不揮発性メモリに行わせるメモリコントローラと、を有するメモリシステムと、
を備え、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第1ビット及び前記第2ビットのデータに応じて、データが消去された消去状態を示す第17のしきい値領域と、前記第17のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第18から第20のしきい値領域とのうちのいずれかのしきい値領域になるように前記第1プログラムを前記不揮発性メモリに行わせるように構成され、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第17から第20のしきい値領域のうちのいずれかのしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記第nのしきい値領域は前記第(n-1)のしきい値領域よりも電圧レベルが高く(nは2以上16以下の自然数)、
前記第kのしきい値領域は前記第(k-1)のしきい値領域よりも電圧レベルが高く(kは18以上20以下の自然数)、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第17のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第21のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第18のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第22のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第19のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第23のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第20のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第24のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成され、
前記4個の第23のしきい値領域のしきい値領域及び前記4個の第24のしきい値領域のしきい値領域はいずれも、前記4個の第21のしきい値領域のうちのいずれのしきい値領域よりも電圧レベルが高く、
前記4個の第23のしきい値領域のしきい値領域及び前記4個の第24のしきい値領域のしきい値領域はいずれも、前記4個の第22のしきい値領域のうちのいずれのしきい値領域よりも電圧レベルが高く、
前記4個の第22のしきい値領域は、前記第1から第16のしきい値領域のうちの連続する4個のしきい値領域であり、
前記4個の第24のしきい値領域は、前記第1から第16のしきい値領域のうちの連続する4個のしきい値領域であり、
前記連続する4個の第22のしきい値領域は、前記4個の第21のしきい値領域のうちの1個のしきい値領域よりも電圧レベルが低く、前記4個の第21のしきい値領域のうちの残りの3個のしきい値領域よりも電圧レベルが高い、
情報処理システム。
【請求項3】
前記連続する4個の第24のしきい値領域は、前記4個の第23のしきい値領域のうちの1個のしきい値領域よりも電圧レベルが低く、前記4個の第23のしきい値領域のうちの残りの3個のしきい値領域よりも電圧レベルが高い、請求項2に記載の情報処理システム。
【請求項4】
前記第1から第16のしきい値領域のうち隣接するしきい値領域間に存在する15個の境界のうち、前記第1ビットのデータの値の判定に用いられる第1の境界の数、前記第2ビットのデータの値の判定に用いられる第2の境界の数、前記第3ビットのデータの値の判定に用いられる第3の境界の数、前記第4ビットのデータの値の判定に用いられる第4の境界の数が順に1、4、5、5である、請求項2又は請求項3に記載の情報処理システム。
【請求項5】
前記メモリコントローラは、前記第1プログラムを前記不揮発性メモリに行わせた後に前記不揮発性メモリから前記第1プログラムにより書き込まれたデータを読み出し、前記読み出したデータをエラー訂正し、前記エラー訂正されたデータと、前記第3ビット及び前記第4ビットのデータと、を使用して前記第2プログラムを前記不揮発性メモリに行わせるように構成されることを特徴とする、請求項1から請求項4のうちのいずれか一項に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理システムに関する。
【背景技術】
【0002】
近年の微細化が進んだ3bit/CellのNANDメモリでは、一般的に、セル間相互干渉を避けるため、第1のメモリセルに記憶する全bitを同時に書き込んだ後、隣接セルに同様に全bitを同時に書き込み、この後、再び第1のメモリセルに全Bitを再書込み(プログラムする)手法が取られる。しかし、この方法を用いると、再書込みのためにコントローラ側でデータを保持する必要がある。
【0003】
全bitを同時にプログラムする方法として、1-3-3コーディングが知られている。この方法は、3bit/Cellの8個のしきい値電圧の領域間の7個を、3bitにそれぞれ1つ、3つ、3つに分配するコーディングである。
【0004】
しかしながら、近年のNANDメモリは3次元化されており、必要な書き込みバッファ量が増大するので、メモリコントローラのコストが増大している。このため、3次元の不揮発性メモリにおいても、セル間相互干渉と各ページ間のビットエラー率の偏りを抑制しつつ、メモリコントローラの書き込みバッファ量を低減する対策が望まれている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2015-195071号公報
【文献】米国特許第9230664号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、セル間相互干渉を抑制しつつ、メモリコントローラの書き込みバッファ量を低減することである。
【課題を解決するための手段】
【0007】
実施形態によれば、情報処理システムが提供される。前記情報処理システムは、ホストと、メモリシステムと、を備える。前記メモリシステムは、不揮発性メモリと、メモリコントローラと、を有する。前記不揮発性メモリは、データが消去された消去状態を示す第1のしきい値領域と、前記第1のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第2から第16のしきい値領域とを合わせた16個のしきい値領域により、第1から第4ビットで表わせられる4ビットのデータを記憶可能なメモリセルを複数有する。前記メモリコントローラは、前記ホストから受信したライト要求に応じて、前記第1ビット及び前記第2ビットのデータを書き込む第1プログラムを前記不揮発性メモリに行わせた後に、前記第3ビット及び前記第4ビットのデータを書き込む第2プログラムを前記不揮発性メモリに行わせる。前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第1ビット及び前記第2ビットのデータに応じて、データが消去された消去状態を示す第17のしきい値領域と、前記第17のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第18から第20のしきい値領域とのうちのいずれかのしきい値領域になるように前記第1プログラムを前記不揮発性メモリに行わせるように構成される。前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第17から第20のしきい値領域のうちのいずれかのしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成される。前記第nのしきい値領域は前記第(n-1)のしきい値領域よりも電圧レベルが高い(nは2以上16以下の自然数)。前記第kのしきい値領域は前記第(k-1)のしきい値領域よりも電圧レベルが高い(kは18以上20以下の自然数)。前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第17のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第21のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成される。前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第18のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第22のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成される。前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第19のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第23のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成される。前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第3ビット及び前記第4ビットのデータに応じて、前記第20のしきい値領域から、前記第1から第16のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせる場合に、前記第1から第16のしきい値領域のうちの4個の第24のしきい値領域のうちのいずれかのしきい値領域になるように前記第2プログラムを前記不揮発性メモリに行わせるように構成される。前記4個の第23のしきい値領域のしきい値領域及び前記4個の第24のしきい値領域のしきい値領域はいずれも、前記4個の第21のしきい値領域のうちのいずれのしきい値領域よりも電圧レベルが高い。前記4個の第23のしきい値領域のしきい値領域及び前記4個の第24のしきい値領域のしきい値領域はいずれも、前記4個の第22のしきい値領域のうちのいずれのしきい値領域よりも電圧レベルが高い。前記4個の第22のしきい値領域は、前記第1から第16のしきい値領域のうちの連続する4個のしきい値領域である。前記4個の第24のしきい値領域は、前記第1から第16のしきい値領域のうちの連続する4個のしきい値領域である。前記4個の第21のしきい値領域は、前記第1から第16のしきい値領域のうちの連続する4個のしきい値領域である。前記4個の第23のしきい値領域は、前記第1から第16のしきい値領域のうちの連続する4個のしきい値領域である。前記4個の第22のしきい値領域のしきい値領域はいずれも、前記4個の第21のしきい値領域のうちのいずれのしきい値領域よりも電圧レベルが高い。前記4個の第24のしきい値領域のしきい値領域はいずれも、前記4個の第23のしきい値領域のうちのいずれのしきい値領域よりも電圧レベルが高い。前記第1から第16のしきい値領域のうち隣接するしきい値領域間に存在する15個の境界のうち、前記第1ビットのデータの値の判定に用いられる第1の境界の数、前記第2ビットのデータの値の判定に用いられる第2の境界の数、前記第3ビットのデータの値の判定に用いられる第3の境界の数、前記第4ビットのデータの値の判定に用いられる第4の境界の数が順に1、2、6、6である。
【図面の簡単な説明】
【0008】
【
図1】
図1は、第1の実施形態にかかる記憶装置の構成例を示すブロック図である。
【
図2】
図2は、第1の実施形態の不揮発性メモリの構成例を示すブロック図である。
【
図3】
図3は、3次元構造のメモリセルアレイのブロックの構成例を示す図である。
【
図4】
図4は、3次元構造のNANDメモリのメモリセルアレイの一部領域の断面図である。
【
図5】
図5は、第1の実施形態のしきい値領域の一例を示す図である。
【
図6】
図6は、第1の実施形態のデータコーディングを示す図である。
【
図7】
図7は、第1の実施形態におけるプログラム後のしきい値分布を示す図である。
【
図8A】
図8Aは、第1の実施形態のプログラム順序の第1の例を示す図である。
【
図8B】
図8Bは、第1の実施形態のプログラム順序の第2の例を示す図である。
【
図8C】
図8Cは、第1の実施形態のプログラム順序の第3の例を示す図である。
【
図9A】
図9Aは、第1の実施形態に係る1ブロック分全体の書き込み手順の例を示すフローチャートである。
【
図9B】
図9Bは、第1の実施形態に係る1stステージにおける書き込み手順を示すサブフローチャートである。
【
図9C】
図9Cは、第1の実施形態に係る2ndステージでの書き込み手順を示すサブフローチャートである。
【
図9D】
図9Dは、第1の実施形態に係る2ndステージでの書き込み手順の変形例を示すサブフローチャートである。
【
図9E】
図9Eは、複数回数の読み出し結果の多数決処理を説明するための図である。
【
図10A】
図10Aは、1-3-3コーディングを採用したLM-Foggy-Fineプログラムにおけるバッファデータ量を説明するための図である。
【
図10B】
図10Bは、第1の実施形態のプログラムにおけるバッファデータ量を説明するための図である。
【
図11】
図11は、第1の実施形態に係る外部プログラムコマンドのシーケンスの例を示す図である。
【
図12A】
図12Aは、第1の実施形態に係る記憶装置において1stステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャートである。
【
図12B】
図12Bは、第1の実施形態に係る記憶装置において2ndステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャートである。
【
図13】
図13は、第1の実施形態に係る外部読み出しコマンドのシーケンスの例を示す図である。
【
図14A】
図14Aは、第2の実施形態に係る1ブロック分全体の書き込み手順を示すフローチャートである。
【
図14B】
図14Bは、第2の実施形態に係る1stステージおよび2ndステージにおける書き込み手順を示すサブフローチャートである。
【
図15】
図15は、第2の実施形態に係る外部プログラムコマンドのシーケンスの例を示す図である。
【
図16】
図16は、電源遮断に起因するデータ破壊を説明するための図である。
【
図17】
図17は、第3の実施形態に係る2ndステージのプログラムを説明するための図である。
【
図18】
図18は、第3の実施形態に係る2ndステージでの書き込み手順を示すフローチャートである。
【
図19】
図19は、第3の実施形態に係る2ndステージのプログラム変形例を説明するための図である。
【
図20】
図20は、1-3-3データコーディングの他の例を示す図である。
【
図21】
図21は、第4の実施形態におけるプログラム後のしきい値分布を示す図である。
【
図22A】
図22Aは、第4の実施形態に係る1stステージにおける書き込み手順を示すサブフローチャートである。
【
図22B】
図22Bは、第4の実施形態に係る2ndステージでの書き込み手順を示すサブフローチャートである。
【
図22C】
図22Cは、第4の実施形態に係る2ndステージでの書き込み手順の変形例を示すサブフローチャートである。
【
図23】
図23は、第4の実施形態に係る外部プログラムコマンドのシーケンスの例を示す図である。
【
図24A】
図24Aは、第4の実施形態に係る記憶装置において1stステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャートである。
【
図24B】
図24Bは、第4の実施形態に係る記憶装置において2ndステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャートである。
【
図25】
図25は、第4の実施形態に係る外部読み出しコマンドのシーケンスの例を示す図である。
【
図26】
図26は、フラグセルの構成を説明するための図である。
【
図27A】
図27Aは、第5の実施形態に係るフラグセルへのプログラムを説明するための図である。
【
図27B】
図27Bは、第5の実施形態に係るダミーセルへのプログラムを説明するための図である。
【
図28】
図28は、第5の実施形態に係る2ndステージでの書き込み手順を示すフローチャートである。
【
図29】
図29は、第5の実施形態に係るページ読み出しの処理手順を示すフローチャートである。
【
図30】
図30は、第5の実施形態に係る外部読み出しコマンドのシーケンスの例を示す図である。
【
図31】
図31は、第6の実施形態のしきい値領域の一例を示す図である。
【
図32】
図32は、第6の実施形態におけるプログラム後のしきい値分布を示す第1例の図である。
【
図34】
図34は、第6の実施形態におけるプログラム後のしきい値分布を示す第2例の図である。
【
図36】
図36は、第6の実施形態におけるプログラム後のしきい値分布を示す第3例の図である。
【発明を実施するための形態】
【0009】
以下に添付図面を参照して、実施形態に係るメモリシステムおよび書き込み方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0010】
(第1の実施形態)
図1は、第1の実施形態にかかる記憶装置の構成例を示すブロック図である。本実施形態の記憶装置は、メモリコントローラ1と不揮発性メモリ2とを備える。記憶装置は、ホストと接続可能である。ホストは、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
【0011】
不揮発性メモリ2は、データを不揮発に記憶するメモリであり、例えば、NANDメモリ(NANDフラッシュメモリ)を備えている。本実施形態では、不揮発性メモリ2は、メモリセルあたり3bitを記憶可能なメモリセルを有するNANDメモリ、すなわち3bit/Cell(TLC:Triple Level Cell)のNANDメモリであるとして説明する。不揮発性メモリ2は、3次元化されている。
【0012】
メモリコントローラ1は、ホストからの書き込みコマンドに従って不揮発性メモリ2へのデータの書き込みを制御する。また、メモリコントローラ1は、ホストからの読み出しコマンドに従って不揮発性メモリ2からのデータの読み出しを制御する。メモリコントローラ1は、RAM(Random Access Memory)11、プロセッサ12、ホストインターフェイス13、ECC(Error Check and Correct)回路14およびメモリインターフェイス15を備える。RAM11、プロセッサ12、ホストインターフェイス13、ECC回路14およびメモリインターフェイス15は、互いに内部バス16で接続される。
【0013】
ホストインターフェイス13は、ホストから受信したコマンド、ユーザデータ(書き込みデータ)などを内部バス16に出力する。また、ホストインターフェイス13は、不揮発性メモリ2から読み出されたユーザデータ、プロセッサ12からの応答などをホストへ送信する。
【0014】
メモリインターフェイス15は、プロセッサ12の指示に基づいて、ユーザデータ等を不揮発性メモリ2へ書き込む処理および不揮発性メモリ2から読み出す処理を制御する。
【0015】
プロセッサ12は、メモリコントローラ1を統括的に制御する。プロセッサ12は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等である。プロセッサ12は、ホストからホストインターフェイス13経由でコマンドを受けた場合に、そのコマンドに従った制御を行う。例えば、プロセッサ12は、ホストからのコマンドに従って、不揮発性メモリ2へのユーザデータおよびパリティの書き込みをメモリインターフェイス15へ指示する。また、プロセッサ12は、ホストからのコマンドに従って、不揮発性メモリ2からのユーザデータおよびパリティの読み出しを、メモリインターフェイス15へ指示する。
【0016】
プロセッサ12は、RAM11に蓄積されるユーザデータに対して、不揮発性メモリ2上の格納領域(メモリ領域)を決定する。ユーザデータは、内部バス16経由でRAM11に格納される。プロセッサ12は、メモリ領域の決定を、書き込み単位であるページ単位のデータ(ページデータ)に対して実施する。本明細書では、不揮発性メモリ2の1ページに格納されるユーザデータをユニットデータと定義する。ユニットデータは、一般的には符号化されて符号語として不揮発性メモリ2に格納される。本実施形態では、符号化は必須ではない。メモリコントローラ1は、符号化せずにユニットデータを不揮発性メモリ2に格納してもよいが、
図1では、一構成例として符号化を行う構成を示している。メモリコントローラ1が符号化を行わない場合には、ページデータはユニットデータと一致する。また、1つのユニットデータに基づいて1つの符号語が生成されてもよいし、ユニットデータが分割された分割データに基づいて1つの符号語が生成されてもよい。また、複数のユニットデータを用いて1つの符号語が生成されてもよい。
【0017】
プロセッサ12は、ユニットデータごとに書き込み先の不揮発性メモリ2のメモリ領域を決定する。不揮発性メモリ2のメモリ領域には物理アドレスが割当てられている。プロセッサ12は、ユニットデータの書き込み先のメモリ領域を、物理アドレスを用いて管理する。プロセッサ12は、決定したメモリ領域(物理アドレス)を指定してユーザデータを不揮発性メモリ2へ書き込むようメモリインターフェイス15へ指示する。プロセッサ12は、ユーザデータの論理アドレス(ホストが管理する論理アドレス)と物理アドレスとの対応を管理する。プロセッサ12は、ホストからの論理アドレスを含む読み出しコマンドを受信した場合は、論理アドレスに対応する物理アドレスを特定し、物理アドレスを指定してユーザデータの読み出しをメモリインターフェイス15へ指示する。
【0018】
本明細書では、1つのワード線に共通に接続されたメモリセルをメモリセルグループMGと定義する。本実施形態では、不揮発性メモリ2は、3bit/CellのNANDメモリであり、1つのメモリセルグループMGは3ページに対応する。各メモリセルの3bitは、それぞれこの3ページに対応する。本実施形態では、この3ページをLowerページ(第1のページ)、Middleページ(第2のページ)、Upperページ(第3のページ)と呼ぶ。
【0019】
ECC回路14は、RAM11に格納されたユーザデータを符号化して、符号語を生成する。また、ECC回路14は、不揮発性メモリ2から読み出された符号語を復号する。
【0020】
RAM11は、ホストから受信したユーザデータを不揮発性メモリ2へ記憶するまでに一時格納したり、不揮発性メモリ2から読み出したデータをホストへ送信するまでに一時格納する。RAM11は、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリである。
【0021】
図1では、メモリコントローラ1が、ECC回路14とメモリインターフェイス15をそれぞれ備える構成例を示した。しかしながら、ECC回路14がメモリインターフェイス15に内蔵されていてもよい。また、ECC回路14が、不揮発性メモリ2に内蔵されていてもよい。
【0022】
ホストからライト要求を受信した場合、記憶装置(メモリシステム)は次のように動作する。プロセッサ12は、ライトデータをRAM11に一時記憶させる。プロセッサ12は、RAM11にストアされたデータをリードし、ECC回路14に入力する。ECC回路14は、入力されたデータを符号化し、符号語をメモリインターフェイス15に入力する。メモリインターフェイス15は、入力された符号語を不揮発性メモリ2に書き込む。
【0023】
ホストからリード要求を受信した場合、記憶装置は次のように動作する。メモリインターフェイス15は、不揮発性メモリ2から読み出した符号語をECC回路14に入力する。ECC回路14は、入力された符号語を復号し、復号されたデータをRAM11にストアする。プロセッサ12は、RAM11にストアされたデータを、ホストインターフェイス13を介してホストに送信する。なお、不揮発性メモリ2では、複数のチップが接続される場合もあり、不揮発性メモリ2とメモリインターフェイス15は、貫通ビア(TSV)によって接続することも可能である。
【0024】
図2は、本実施形態の不揮発性メモリの構成例を示すブロック図である。不揮発性メモリ2は、NAND I/Oインターフェイス21、制御部22、NANDメモリセルアレイ(メモリセル部)23、およびページバッファ24を備える。不揮発性メモリ2は、例えば1チップの半導体基板(例えば、シリコン基板)からなる。
【0025】
制御部22は、NAND I/Oインターフェイス21経由でメモリコントローラ1から入力されたコマンド等に基づいて、不揮発性メモリ2の動作を制御する。具体的には、制御部22は、書き込み要求が入力された場合、書き込みが要求されたデータをNANDメモリセルアレイ23上の指定されたアドレスへ書き込むよう制御する。また、制御部22は、読み出し要求が入力された場合、読み出しが要求されたデータをNANDメモリセルアレイ23から読み出してNAND I/Oインターフェイス21経由でメモリコントローラ1へ出力するよう制御する。ページバッファ24は、NANDメモリセルアレイ23の書き込み時にメモリコントローラ1から入力されたデータを一時的に格納したり、NANDメモリセルアレイ23から読み出したデータを一時的に格納したりするバッファである。
【0026】
図3は、3次元構造のメモリセルアレイのブロックの構成例を示す図である。
図3は、3次元構造のメモリセルアレイを構成する複数のブロックのうちの1つのブロックBLKを示している。メモリセルアレイの他のブロックも
図3と同様の構成を有する。なお、本実施形態は、2次元構造のメモリセルにも適用可能である。
【0027】
図示するように、ブロックBLKは、例えば4つのフィンガーFNG(FNG0~FNG3)を含む。また各々のフィンガーFNGは、複数のNANDストリングNSを含む。NANDストリングNSの各々は、例えば8個のメモリセルトランジスタMT(MT0~MT7)と、選択トランジスタST1,ST2とを含む。なお、メモリセルトランジスタMTの個数は8個に限られない。メモリセルトランジスタMTは、選択トランジスタST1,ST2間に、その電流経路が直列接続されるようにして配置されている。この直列接続の一端側のメモリセルトランジスタMT7の電流経路は、選択トランジスタST1の電流経路の一端に接続され、他端側のメモリセルトランジスタMT0の電流経路は、選択トランジスタST2の電流経路の一端に接続されている。
【0028】
フィンガーFNG0~FNG3の各々の選択トランジスタST1のゲートは、それぞれセレクトゲート線SGD0~SGD3に共通接続される。他方で、選択トランジスタST2のゲートは、複数のフィンガーFNG間で同一のセレクトゲート線SGSに共通接続される。また、同一のブロックBLK内にあるメモリセルトランジスタMT0~MT7の制御ゲートは、それぞれワード線WL0~WL7に共通接続される。すなわち、ワード線WL0~WL7及びセレクトゲート線SGSは、同一ブロックBLK内の複数のフィンガーFNG0~FNG3間で共通に接続されているのに対し、セレクトゲート線SGDは、同一ブロックBLK内であってもフィンガーFNG0~FNG3毎に独立している。
【0029】
NANDストリングNSを構成するメモリセルトランジスタMT0~MT7の制御ゲート電極には、それぞれワード線WL0~WL7が接続されており、また各NANDストリングNS中のメモリセルトランジスタMTi(i=0~n)間は、同一のワード線WLi(i=0~n)によって共通接続されている。すなわち、ブロックBLK内において同一行にあるメモリセルトランジスタMTiの制御ゲート電極は、同一のワード線WLiに接続される。なお、以下の説明では、NANDストリングNSをストリングという場合がある。
【0030】
各メモリセルは、ワード線WLiに接続するとともにビット線にも接続される。各メモリセルは、ワード線WLiおよびセレクトゲート線SGD0~SGD3を識別するアドレスとビット線を識別するアドレスとで識別可能である。上述した通り、同一のブロックBLK内にあるメモリセル(メモリセルトランジスタMT)のデータは、一括して消去される。一方、データの読み出し及び書き込みは、物理セクタMS単位で行われる。1物理セクタMSは、1つのワード線WLiに接続され、かつ1つのフィンガーFNGに属する複数のメモリセルを含む。
【0031】
リード動作及びプログラム動作時において、物理アドレスに応じて、1本のワード線WLiおよび1本のセレクトゲート線SGDが選択され、物理セクタMSが選択される。
【0032】
図4は、3次元構造のNANDメモリのメモリセルアレイの一部領域の断面図である。
図4に示すように、p型ウェル領域(P-well)上に複数のNANDストリングNSが形成されている。すなわち、p型ウェル領域上には、セレクトゲート線SGSとして機能する複数の配線層333、ワード線WLiとして機能する複数の配線層332、およびセレクトゲート線SGDとして機能する複数の配線層331が形成されている。
【0033】
そして、これらの配線層333,332,331を貫通してp型ウェル領域に達するメモリホール334が形成されている。メモリホール334の側面には、ブロック絶縁膜335、電荷蓄積層336、およびゲート絶縁膜337が順次形成され、更にメモリホール334内に導電膜338が埋め込まれている。導電膜338は、NANDストリングNSの電流経路として機能し、メモリセルトランジスタMT並びに選択トランジスタST1及びST2の動作時にチャネルが形成される領域である。
【0034】
各NANDストリングNSにおいて、p型ウェル領域上に選択トランジスタST2、複数のメモリセルトランジスタMT、及び選択トランジスタST1が順次積層されている。導電膜338の上端には、ビット線BLとして機能する配線層が形成される。
【0035】
さらに、p型ウェル領域の表面内には、n+型不純物拡散層およびp+型不純物拡散層が形成されている。n+型不純物拡散層上にはコンタクトプラグ340が形成され、コンタクトプラグ340上には、ソース線SLとして機能する配線層が形成される。またp+型不純物拡散層上にはコンタクトプラグ339が形成され、コンタクトプラグ339上には、ウェル配線CPWELLとして機能する配線層が形成される。
【0036】
以上の
図4に示した構成が、
図4の紙面の奥行き方向に複数配列されており、奥行き方向に一列に並ぶ複数のNANDストリングの集合によって、1つのフィンガーFNGが形成される。
【0037】
図5は、第1の実施形態のしきい値領域の一例を示す図である。
図5では、3bit/Cellの不揮発性メモリ2のしきい値分布例を示している。不揮発性メモリ2では、メモリセルのフローティングゲートに蓄えられた電荷量により情報を記憶する。各メモリセルは、電荷量に応じたしきい値電圧を有する。そして、メモリセルに記憶する複数のデータ値を、しきい値電圧の複数の領域(しきい値領域)にそれぞれ対応させる。
【0038】
図5の、Er、A,B,C,D,E,F,Gと記載した8つの分布(山型)は、8つのしきい値領域内のそれぞれのしきい値分布を示している。このように、各メモリセルは、7つの境界によって仕切られたしきい値分布を有している。
図5の横軸はしきい値電圧を示し、縦軸はメモリセル数(セル数)の分布を示している。
【0039】
本実施形態では、しきい値電圧がVr1以下となる領域を領域Erとよび、しきい値電圧がVr1より大きくVr2以下となる領域を領域Aとよび、しきい値電圧がVr2より大きくVr3以下となる領域を領域Bとよび、しきい値電圧がVr3より大きくVr4以下となる領域を領域Cとよぶ。また、本実施形態では、しきい値電圧がVr4より大きくVr5以下となる領域を領域Dとよび、しきい値電圧がVr5より大きくVr6以下となる領域を領域Eとよび、しきい値電圧がVr6より大きくVr7以下となる領域を領域Fとよび、しきい値電圧がVr7より大きい領域を領域Gとよぶ。
【0040】
また、領域Er,A,B,C,D,E,F,Gに対応するしきい値分布をそれぞれ分布Er,A,B,C,D,E,F,G(第1~第8の分布)と呼ぶ。Vr1~Vr7は、各領域の境界となるしきい値電圧である。
【0041】
不揮発性メモリ2では、メモリセルの複数のしきい値領域(すなわちしきい値分布)に複数のデータ値をそれぞれ対応させる。この対応をデータコーディングという。このデータコーディングをあらかじめ定めておき、データの書き込み(プログラム)時には、データコーディングに従って記憶するデータ値に応じたしきい値領域内となるようにメモリセルに電荷を注入する。そして、読み出し時には、メモリセルに読み出し電圧を印加し、読み出し電圧よりメモリセルのしきい値が低いか高いかにより、データが決定される。しきい値電圧が、読み出し電圧より低い場合には、「消去」状態であるデータ値は“1”と定義する。しきい値電圧が読み出し電圧以上である場合には、「プログラムされた」状態であり、データを“0”と定義する。
【0042】
データの読み出し時には、読み出し対象の境界の読み出しレベルよりも、しきい値が低いか高いかでデータが決定される。しきい値が最も低い場合は、「消去」状態であり、全てのbitのデータが”1”と定義される。しきい値が、「消去」状態よりも高い場合は、「プログラムされた」状態であり、コーディングに従ってデータを”1”または”0”と定義される。
【0043】
図6は、第1の実施形態のデータコーディングを示す図である。本実施形態では、
図5に示した8つのしきい値分布(しきい値領域)を3bitの8つのデータ値にそれぞれ対応させる。しきい値電圧と、Upper,Middle,Lowerページに対応するビットのデータ値との関係は、以下に示す通りである。
・しきい値電圧がEr領域内にあるメモリセルは“111”を記憶している状態である。
・しきい値電圧がA領域内にあるメモリセルは“101”を記憶している状態である。
・しきい値電圧がB領域内にあるメモリセルは“001”を記憶している状態である。
・しきい値電圧がC領域内にあるメモリセルは“011”を記憶している状態である。
・しきい値電圧がD領域内にあるメモリセルは“010”を記憶している状態である。
・しきい値電圧がE領域内にあるメモリセルは“110”を記憶している状態である。
・しきい値電圧がF領域内にあるメモリセルは“100”を記憶している状態である。
・しきい値電圧がG領域内にあるメモリセルは“000”を記憶している状態である。
【0044】
このように、しきい値電圧の領域毎に、各メモリセルの3bitのデータの状態を表すことが出来る。なお、メモリセルが未書き込みの状態(「消去」の状態)では、メモリセルのしきい値電圧はEr領域内にある。また、ここに示した符号では,Er(消去)状態で”111”というデータを記憶し、A状態で”101”というデータを記憶するといったように、任意の2つの隣接する状態間で1bitのみデータが変化する。このように、
図6に示したコーディングは、任意の2つの隣接する領域間で1bitのみデータが変化するグレイ符号である。
【0045】
図6に示す本実施形態のコーディングでは、各ページのビット値を判定するための境界となるしきい値電圧は、以下に示す通りである。
・Lowerページのビット値を判定するための境界となるしきい値電圧はVr4である。
・Middleページのビット値を判定するための境界となるしきい値電圧はVr2、Vr5、Vr7である。
・Upperページのビット値を判定するための境界となるしきい値電圧はVr1、Vr3、Vr6である。
【0046】
このように、ビット値を判定するための境界となるしきい値電圧の数(以下、境界数とよぶ)が、Lowerページ、Middleページ、Upperページでそれぞれ1,3,3である。以下、このようなコーディングをLowerページ、Middleページ、Upperページのそれぞれの境界数を用いて、1-3-3コーディングという。ここで注目すべき事項は、ページごとの隣接データと変化する境界の最大数が3であることである。境界数の最大数が3であることは、8つの状態を3bitで表現する場合、最大境界数が最小であり、ビットエラーの偏りが少なくなる。
【0047】
不揮発性メモリ2の制御部22は、
図6に示したコーディングに基づいて、NANDメモリセルアレイ23へのプログラムおよびNANDメモリセルアレイ23からの読み出しを制御する。
【0048】
3次元メモリセルはメモリセルのサイズが、近年の微細化が進んだ世代の2次元のNANDメモリに対して大きく、セル間相互干渉が小さい。この場合は、一般的に、全bitを同時に(各bitを異なるページに割り付けていれば全ページを同時に)プログラムする手法が取られる。
【0049】
全bitを同時にプログラムする場合、データコーディングとしては、1-2-4コーディングまたは2-3-2コーディングが用いられている。1-2-4コーディングでは、8個のしきい値分布間の7個の境界を3つのページに分配する際に、Lowerページに1つ、Middleページに2つ、Upperページに4つというように境界を分配している。また、2-3-2コーディングでは、8個のしきい値分布間の7個の境界を3つのページに分配する際に、Upperページに2つ、Middleページに3つ、Lowerページに2つというように境界を分配している。
【0050】
ところが、1-2-4コーディングの場合、境界数が各ページで著しく偏っているために、結果としてページ間のビットエラー率の偏りが大きくなる。これは、ビットエラーの原因のほとんどが隣接分布へのしきい値移動によって引き起こされ、境界数を多く有しているページほどビットエラー数が多くなるためである。このことは、メモリセルとしてのエラー率が同じであったとしても、ページデータのエラーを訂正するのに必要なECCの訂正能力を強化しなくてはいけないことにつながるので、記憶装置の速度、コストおよび消費電力を悪化させてしまう。また、境界数の偏りは、読み出し速度の偏りも引き起こす。
【0051】
また、3bit/CellのNANDメモリでは、セル間相互干渉が1bit/Cellや2bit/CellのNANDメモリと比較して大きい。このため、近年の微細化が進んだ世代のNANDメモリでは、一般的に、セル間相互干渉を抑えるため、3つ又は2つのステージを用いて、メモリセルのフローティングゲートに少しずつ電荷を注入するプログラム方法(LM-Foggy-Fineプログラム又はFoggy-Fineプログラム)がある。このLM-Foggy-Fineプログラムでは、1つ目のステージ(LMステージ)の書き込み後、隣接セルの書き込みを行い、先ほどのセルに戻り、2つ目のステージ(Foggyステージ)を書き込んだ後、更に再び隣接セルに書き込み、この後再び先ほどのメモリセルに戻り3つ目のステージ(Fineステージ)の3つのプログラムステージによって書き込みが実施される。
【0052】
またFoggy-Fineプログラムでは、1つ目のステージ(Foggyステージ)の書き込み後、隣接セルの書き込みを行い、この後先ほどのメモリセルに戻り2つ目のステージ(Fineステージ)の2つのプログラムステージによって書き込みが実施される。この場合の各プログラムステージは、プログラムの実行単位であり、1ワード線WLiのプログラムは3つのプログラムステージを実行することで完了する。
【0053】
1つ目のステージであるLMステージのプログラムでは、入力データは、Lowerページデータのみでよい。2つ目のステージであるFoggyステージのプログラムでは、8つのしきい値分布を用いてプログラムが実行される。この時のしきい値分布(しきい値領域)は、最終的なデータコーディングにおけるしきい値分布より広い幅を有する。すなわち、Foggyステージでは、Foggy(ラフ)書き込みが行われる。このFoggyステージのプログラムでは、入力データは3ページ全てが必要である。Foggyステージのプログラム後のしきい値分布は、隣接する分布が互いに重なり合っている中間状態であるので、データの読み出しは出来ない。3つ目のステージであるFineステージのプログラムでは、Foggyステージのプログラム後のしきい値分布を最終的なデータコーディングにおけるしきい値分布に移動させる。すなわち、Fineステージでは、Fine書き込みが行われる。このFineステージのプログラムも、入力データは3ページ全てが必要である。Fineステージのプログラム後のしきい値分布は、隣接する分布が分離された最終状態であるので、Fineステージのプログラム後にはデータの読み出しが可能である。
【0054】
2-3-2コーディングの場合、境界数の偏りは少ないが、LM-Foggy-Fineプログラムのデータ入力において、全てのステージで3ページ分のデータ入力が必要となる。また、Foggy-Fineプログラムのデータ入力において、全てのステージで2ページ分のデータ入力が必要となる。これは、データ入力にかかる時間の増大となり、記憶装置の速度を悪化させてしまう。また、記憶装置内において、NANDメモリへ入力するためにデータを保持しておくための書き込みバッファのバッファ量(書き込みバッファ量)を増大させてしまう。この書き込みバッファは、一般的に、記憶装置が備えるRAM11の一部の領域が割り当てられたものである。
【0055】
これらに対する対策として、1-3-3コーディングを採用してLM-Foggy-Fineプログラムを行う方法がある。この方法では、LM-Foggy-Fineプログラムが採用されているので、セル間相互干渉を抑制できる。また、LMステージの入力は、1ページ分のデータでよいので、書き込みバッファ量の低減と、各ページ間の境界数の偏りに起因するビットエラー率の偏りの抑制と、を両立させている。
【0056】
しかしながら、不揮発性メモリ2のNANDメモリが3次元構造を有している場合、1-3-3コーディングを採用したLM-Foggy-Fineプログラム又はFoggy-Fineプログラムを適用しても、書き込みバッファ量が大きくなるので、メモリコントローラ1のコストが増大する。
【0057】
そこで、本実施形態では、記憶装置が、3次元構造を有した不揮発性メモリ2に対して、1-3-3コーディングを採用し、さらに、2ステージでページ単位(page by page)の書き込みを実施する。これにより、本実施形態では、3次元構造を有した不揮発性メモリ2においてもセル間相互干渉と各ページ間のビットエラー率の偏りを抑制しつつ、メモリコントローラ1の書き込みバッファ量を低減する。
【0058】
ここで、隣接メモリセル間干渉について説明する。ある1つのメモリセルのフローティングゲートに蓄積された電荷は、隣接するメモリセルの電界を乱し、その結果、隣接するメモリセルの読み出しのしきい値を変動させるノイズを与える。ある電界条件下でプログラムとベリファイとが実施され、プログラムが完結した後、隣接するメモリセルが異なる電荷にプログラムされるということは、これに起因して読み出し精度が劣化することとなる。この隣接メモリセル間干渉は、メモリデバイスの製造技術が微細化され、メモリセル間隔が縮小するにつれて顕著となる。そして、この隣接メモリセル間干渉は、大きくは同一ワード線WLi上で異なるビットラインの隣接メモリセルと、同一ビットライン上で異なるワード線WLiの隣接メモリセルと、によってもたらされる。
【0059】
隣接メモリセル間干渉は、プログラムおよびベリファイの時と、隣接するメモリセルがプログラムされた後の読み出しの時と、の間における、メモリセルの電界条件の違いを少なくすることによって緩和することが可能である。同一ワード線WLi上で異なるビットラインの隣接メモリセルとの間の隣接メモリセル間干渉を低減する1つの方法として、プログラムを複数のステージに分割し、各ステージ間での電荷の大きな変化を回避するマルチステージのプログラムを実行する方法がある。
【0060】
本実施形態におけるプログラムシーケンスでは、1つのワード線WLi上の3bitは、2つのプログラムステージ、すなわち1stステージと2ndステージとによってプログラムされる。各プログラムステージは、プログラムの実行単位であり、本実施形態の記憶装置は、ワード線WLiのプログラムを、2つのプログラムステージを実行することで完了する。また、本実施形態では、2つのプログラムステージのそれぞれに、3bitの何れかのページが割り付けられる。具体的には、1stステージのプログラムには、Lowerページデータを割り付けられ、2ndステージのプログラムには、MiddleページおよびUpperページのデータが割り付けられる。
【0061】
図7は、第1の実施形態におけるプログラム後のしきい値分布を示す図である。
図7では、メモリセルに対する各プログラムステージ後のしきい値分布を示している。
図7の(T1)は、プログラム前の初期状態である消去状態のしきい値分布を示している。
図7の(T2)は、1stステージのプログラム後のしきい値分布を示している。
図7の(T3)は、2ndステージのプログラム後のしきい値分布を示している。
【0062】
図7の(T1)に示すように、NANDメモリセルアレイ23の全メモリセルは、未書き込みの状態(「消去」の状態)では分布Erの状態である。不揮発性メモリ2の制御部22は、
図7の(T2)に示すように、1stステージのプログラムでは、Lowerページに書き込む(記憶する)ビット値に応じて、メモリセルごとに分布Erのままとする、または電荷を注入して分布Erよりも上の分布に移動させる。具体的には、制御部22は、Lowerページに書き込むビット値が“1”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“0”の場合は電荷を注入して、しきい値電圧を高い方に移動させるようプログラムする。
【0063】
これにより、メモリセルは、Lowerページデータによって、2値のレベルにプログラムされる。ここで注意すべき事項は、1stステージのプログラム(第1のプログラム)におけるファンクションは、Lowerページデータのみのファンクションであることである。この実行に必要なページデータは、Lowerページのみでよい。さらに、この1stステージのプログラム後のしきい値分布は、後の2ndステージのプログラム(第2のプログラム)で最終的にプログラムし直されるため、分布を細く整形する必要が無く、高速なプログラムが可能である。そして、この1stステージのプログラム後のデータは、バイナリのように見えるので、Lowerページデータの読み出しが可能である。よって、1stステージでプログラムする際のしきい値のレベルは、2ndステージのプログラムでD以上に遷移するよう割り付けることに鑑み、Vr1とVr4との間に入るよう制御される。
【0064】
また、
図7の(T3)に示すように、2ndステージのプログラムでは、データの書き込みにはMiddleページとUpperページとの2ページが必要である。そして、不揮発性メモリ2の制御部22は、2ndステージのプログラム後のしきい値分布を、各隣接する分布が分離された最終状態で8値のレベルとなるようにプログラムする。この場合、全てのページデータの読み出しが可能である。
【0065】
なお、典型的には、プログラムは、1回または複数回のプログラム電圧パルスが印加されることによって行われる。各プログラム電圧パルスの後には、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために読み出しが行なわれる。この印加と読み出しとが繰り返されることで、所定のしきい値分布の範囲の中にメモリセルのしきい値を移動させることが可能となる。
【0066】
なお、制御部22は、1つのワード線WLiについて、1stステージのプログラムと、2ndステージのプログラムとを連続して実施してもよいが、隣接メモリセル間干渉の影響を低減するために、複数のワード線WLiをまたいで、非連続的な順序でプログラムを実施することも可能である。
【0067】
図8Aは、第1の実施形態のプログラム順序の第1の例を示す図である。
図8Bは、第1の実施形態のプログラム順序の第2の例を示す図である。
図8Cは、第1の実施形態のプログラム順序の第3の例を示す図である。
図8A~
図8Cでは、隣接メモリセル間干渉の影響が小さくなるシーケンス(2ステージのプログラムの方法)を示している。
図8Aは、ブロック内のストリングが1つのNANDメモリである場合のプログラム順序の一例を示している。また、
図8Bおよび
図8Cは、ブロック内のストリングが4つのNANDメモリである場合のプログラム順序の一例を示している。
【0068】
書き込みを開始すると、制御部22は、所定の非連続的な順序でワード線WLiをまたぎながら、各プログラムステージを進む。すなわち、2つの異なるプログラムステージは、同じワード線WLiで連続的に実行されない。
【0069】
例えば、ワード線WLiが2ndステージまでプログラム完了した後に、隣接ワード線WLiにおいて、1stステージおよび2ndステージのプログラムが行われると、しきい値の変動量が大きくなる。そして、隣接ワード線WLiのしきい値の変動量が大きいと、ワード線WLi間の隣接メモリセル間干渉が大きくなる。したがって、ワード線WLi間の隣接メモリセル間干渉を小さくするためには、ワード線WLiが2ndステージまでプログラム完了した後に、隣接ワード線WLiのしきい値の変動量を小さくすることが有効である。このようなシーケンスであれば、ワード線WLiが2ndステージまでプログラム完了した後の隣接ワード線WLiのプログラムステージは2ndステージのみとなる。
【0070】
図8Aに示すNANDメモリの場合(不揮発性メモリ2のNANDメモリが3次元構造である場合)、書き込みを開始すると、制御部22は、プロセッサ12からの指示に基づいて、以下の(1)~(9)に示す順番でプログラムを実施する。なお、以下の処理においては、制御部22のプログラムの動作はプロセッサ12からの指示に基づくが、説明の簡略化のため、プロセッサ12からの指示に基づくという記載を省略する。
【0071】
(1)まず、制御部22は、ワード線WL0の1stステージのプログラムST
11を実施する。
(2)次に、制御部22は、ワード線WL1の1stステージのプログラムST
12を実施する。
(3)次に、制御部22は、ワード線WL0の2ndステージのプログラムST
13を実施する。
(4)次に、制御部22は、ワード線WL2の1stステージのプログラムST
14を実施する。
(5)次に、制御部22は、ワード線WL1の2ndステージのプログラムST
15を実施する。
(6)次に、制御部22は、ワード線WL3の1stステージのプログラムST
16を実施する。
(7)次に、制御部22は、ワード線WL2の2ndステージのプログラムST
17を実施する。
(8)次に、制御部22は、ワード線WL4の1stステージのプログラムST
18を実施する。
(9)次に、制御部22は、ワード線WL3の2ndステージのプログラムST
19を実施する。
以下同様に、制御部22は、
図8Aに示す表の右斜め上へ向かう矢印の順に処理を進めていく。
【0072】
図8Bに示すNANDメモリの場合(不揮発性メモリ2のNANDメモリが3次元構造である場合)、書き込みを開始すると、制御部22は、以下の(11)~(24)に示す順番でプログラムを実施する。
【0073】
(11)まず、制御部22は、ストリングSt0_ワード線WL0の1stステージのプログラムST
21を実施する。
(12)次に、制御部22は、ストリングSt1_ワード線WL0の1stステージのプログラムST
22を実施する。
(13)次に、制御部22は、ストリングSt2_ワード線WL0の1stステージのプログラムST
23を実施する。
(14)次に、制御部22は、ストリングSt3_ワード線WL0の1stステージのプログラムST
24を実施する。
(15)次に、制御部22は、ストリングSt0_ワード線WL1の1stステージのプログラムST
25を実施する。
(16)次に、制御部22は、ストリングSt0_ワード線WL0の2ndステージのプログラムST
26を実施する。
(17)次に、制御部22は、ストリングSt1_ワード線WL1の1stステージのプログラムST
27を実施する。
(18)次に、制御部22は、ストリングSt1_ワード線WL0の2ndステージのプログラムST
28を実施する。
(19)次に、制御部22は、ストリングSt2_ワード線WL1の1stステージのプログラムST
29を実施する。
(20)次に、制御部22は、ストリングSt2_ワード線WL0の2ndステージのプログラムST
210を実施する。
(21)次に、制御部22は、ストリングSt3_ワード線WL1の1stステージのプログラムST
211を実施する。
(22)次に、制御部22は、ストリングSt3_ワード線WL0の2ndステージのプログラムST
212を実施する。
(23)次に、制御部22は、ストリングSt0_ワード線WL2の1stステージのプログラムST
213を実施する。
(24)次に、制御部22は、ストリングSt0_ワード線WL1の2ndステージのプログラムST
214を実施する。
以下同様に、制御部22は、
図8Bに示す表の右斜め上へ向かう矢印の順に処理を進めていく。なお、
図8Bでは、ブロック内のストリングが4つである場合について説明したが、ブロック内のストリングは、3つ以下であってもよいし、5つ以上であってもよい。
【0074】
図8Cに示すNANDメモリの場合(不揮発性メモリ2のNANDメモリが3次元構造である場合)、書き込みを開始すると、制御部22は、以下の(31)~(50)に示す順番でプログラムを実施する。
【0075】
(31)まず、制御部22は、ストリングSt0_ワード線WL0の1stステージのプログラムST
31を実施する。
(32)次に、制御部22は、ストリングSt1_ワード線WL0の1stステージのプログラムST
32を実施する。
(33)次に、制御部22は、ストリングSt2_ワード線WL0の1stステージのプログラムST
33を実施する。
(34)次に、制御部22は、ストリングSt3_ワード線WL0の1stステージのプログラムST
34を実施する。
(35)まず、制御部22は、ストリングSt0_ワード線WL1の1stステージのプログラムST
35を実施する。
(36)次に、制御部22は、ストリングSt1_ワード線WL1の1stステージのプログラムST
36を実施する。
(37)次に、制御部22は、ストリングSt2_ワード線WL1の1stステージのプログラムST
37を実施する。
(38)次に、制御部22は、ストリングSt3_ワード線WL1の1stステージのプログラムST
38を実施する。
(39)次に、制御部22は、ストリングSt0_ワード線WL0の2ndステージのプログラムST
39を実施する。
(40)次に、制御部22は、ストリングSt1_ワード線WL0の2ndステージのプログラムST
310を実施する。
(41)次に、制御部22は、ストリングSt2_ワード線WL0の2ndステージのプログラムST
311を実施する。
(42)次に、制御部22は、ストリングSt3_ワード線WL0の2ndステージのプログラムST
312を実施する。
(43)次に、制御部22は、ストリングSt0_ワード線WL2の1stステージのプログラムST
313を実施する。
(44)次に、制御部22は、ストリングSt1_ワード線WL2の1stステージのプログラムST
314を実施する。
(45)次に、制御部22は、ストリングSt2_ワード線WL2の1stステージのプログラムST
315を実施する。
(46)次に、制御部22は、ストリングSt3_ワード線WL2の1stステージのプログラムST
316を実施する。
(47)次に、制御部22は、ストリングSt0_ワード線WL1の2ndステージのプログラムST
317を実施する。
(48)次に、制御部22は、ストリングSt1_ワード線WL1の2ndステージのプログラムST
318を実施する。
(49)次に、制御部22は、ストリングSt2_ワード線WL1の2ndステージのプログラムST
319を実施する。
(50)次に、制御部22は、ストリングSt3_ワード線WL1の2ndステージのプログラムST
320を実施する。
なお、
図8Cでは、ブロック内のストリングが4つである場合について説明したが、ブロック内のストリングは、3つ以下であってもよいし、5つ以上であってもよい。
【0076】
このように、ストリングが複数となっても、1つのストリング内におけるワード線WLiの各プログラムステージのプログラムの順番は、ストリングが1つの場合と同じである。ブロック内に複数のストリングが存在する3次元構造の不揮発性メモリ2の場合、ワード線WLiとストリングとの組み合わせ位置のプログラムは、一般的には、異なるストリング内の同一ワード線番号をまずプログラムしてから、次のワード線番号に進められる。このような順番に従った場合、
図8Aをストリング数分だけ結合すると、例えば、
図8Bまたは
図8Cのような順番となる。
【0077】
ここで
図9A~
図9Cを用いて、第1の実施形態に係るプログラム順序に従った書き込み手順の例について説明する。
図9A~
図9Cでは、
図8Bまたは
図8Cに示すプログラム順序に従った場合の書き込み手順を示している。前述のように、メモリコントローラ1は、非連続的な順序でワード線WLiをまたぎながらプログラムステージを進めていくので、あるワード線WLiのまとまり(ここではブロック)をプログラムシーケンスのまとまりとしてプログラムを実行する。
【0078】
図9Aは、第1の実施形態に係る1ブロック分全体の書き込み手順の第1の例を示すフローチャートである。ここでの1ブロックは、ワード線WL0~WLn(nは自然数)のn+1本のワード線WLiを有するとする。
図9Bは、第1の実施形態に係る1stステージにおける書き込み手順を示すサブフローチャートであり、
図9Cは、第1の実施形態に係る2ndステージでの書き込み手順を示すサブフローチャートである。なお、
図9Aの各ステップの右に示した(1st)は、
図9Bに示す1stステージに対応し、(2nd)は、
図9Cに示す2ndステージに対応する。
【0079】
図9Aに示すように、書き込みを開始すると、制御部22は、ストリングSt0_ワード線WL0の1stステージのプログラムを実施する(ステップS10)。次に、制御部22は、ストリングSt1_ワード線WL0の1stステージのプログラムを実施する(ステップS20)。この後、制御部22は、各ストリングに対してステップS10,S20と同様の処理を実施する。そして、制御部22は、ストリングSt3_ワード線WL0の1stステージのプログラムを実施する(ステップS30)。
【0080】
さらに、制御部22は、ストリングSt0_ワード線WL1の1stステージのプログラムを実施する(ステップS40)。次に、制御部22は、ストリングSt0_ワード線WL0の2ndステージのプログラムを実施する(ステップS50)。次に、制御部22は、ストリングSt1_ワード線WL1の1stステージのプログラムを実施する(ステップS60)。この後、制御部22は、各ストリングの各ワード線WLiに対してステップS40,S50,S60のような処理を繰り返す。
【0081】
そして、制御部22は、ストリングSt0_ワード線WLnの1stステージのプログラムを実施する(ステップS70)。次に、制御部22は、ストリングSt0_ワード線WLn-1の2ndステージのプログラムを実施する(ステップS80)。この後、制御部22は、各ストリングの各ワード線WLiに対してステップS70,S80のような処理を繰り返す。
【0082】
そして、制御部22は、ストリングSt3_ワード線WLn-1の2ndステージのプログラムを実施する(ステップS90)。次に、制御部22は、ストリングSt0_ワード線WLnの2ndステージのプログラムを実施する(ステップS100)。次に、制御部22は、ストリングSt1_ワード線WLnの2ndステージのプログラムを実施する(ステップS110)。この後、制御部22は、各ストリングに対してステップS100,S110と同様の処理を実施する。そして、制御部22は、ストリングSt3_ワード線WLnの2ndステージのプログラムを実施する(ステップS120)。
【0083】
図9Bに示すように、1stステージのプログラムでは、まず、メモリコントローラ1から不揮発性メモリ2へLowerページデータの入力開始コマンドが入力される(ステップS210)。そして、メモリコントローラ1から不揮発性メモリ2へLowerページデータが入力される(ステップS220)。さらに、メモリコントローラ1から不揮発性メモリ2へ1stステージのプログラム実行コマンドが入力され(ステップS230)、これによりチップビジーとなる(ステップS240)。
【0084】
データ書き込みの際には、1~複数回のプログラム電圧パルスが印加される(ステップS250)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するためにデータ読み出しが行なわれる(ステップS260)。
【0085】
さらに、Lowerページにおけるデータのフェイルビット数がクライテリア(判定基準)よりも小さいか否かが確認される(ステップS270)。データのフェイルビット数がクライテリア以上である場合(ステップS270、No)、ステップS250~S270の処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると(ステップS270、Yes)、チップレディーとなる(ステップS280)。このように、印加と、読み出しと、確認とが繰り返されることで、所定のしきい値分布の範囲の中にメモリセルのしきい値を移動させることが可能となる。
【0086】
図9Cに示すように、2ndステージのプログラムでは、まず、メモリコントローラ1から不揮発性メモリ2へMiddleページのデータの入力開始コマンドが入力される(ステップS310)。そして、メモリコントローラ1から不揮発性メモリ2へMiddleページのデータが入力される(ステップS320)。
【0087】
次に、メモリコントローラ1から不揮発性メモリ2へUpperページのデータの入力開始コマンドが入力される(ステップS330)。そして、メモリコントローラ1から不揮発性メモリ2へUpperページのデータが入力される(ステップS340)。次に、メモリコントローラ1から不揮発性メモリ2へ2ndステージのプログラム実行コマンドが入力され(ステップS350)、これによりチップビジーとなる(ステップS360)。
【0088】
この後、制御部22は、IDL(Internal Data Load)であるLowerページデータの読み出しを行う(ステップS370)。そして、Lowerページデータに基づいて、MiddleページおよびUpperページのプログラム先のVth(しきい値電圧)が決定される(ステップS380)。この後、決定されたVthを用いて、MiddleページおよびUpperページへのデータ書き込みが行われる。
【0089】
さらに、制御部22は、IDLの読み出しデータの信頼性を上げるために、複数回数読み出しを行い、チップ内のページバッファ24でこの読み出し結果の多数決をとり、次の書き込みデータとして使用することも可能である。無論、制御部22は、通常の読み出し動作時に於いて、複数回数読み出しを行いチップ内でこの読み出し結果の多数決をとり、外部への読み出しデータとして使用することも可能である。
【0090】
図9Eは、複数回数の読み出し結果の多数決処理を説明するための図である。
図9Eでは、正しいビットを丸印(○)で示し、誤ったビットをばつ印(×)で示している。また、
図9Eでは、3回の読み出しが行われた場合の多数決の結果を示している。
【0091】
各ビットにおいて、多数決の結果が誤りと判断されるのは、(a)3回とも誤った場合と、(b)2回とも誤った場合である。各ビットが誤っている確立をpとすると、p=0.2の場合、(a)3回誤る確率は、p×p×p=0.2×0.2×0.2であり、(b)2回誤る確率は、(1-p)×p×p=(1-0.2)×0.2×0.2である。したがって、3回の多数決結果が誤りと判断されるのは、(p×p×p)+3×(1-p)×p×p=0.104である。このように、制御部22は、複数回数の読み出し結果の多数決処理をチップ内のページバッファ24で行うことで、読み出しデータの信頼性を上げることが可能となる。
【0092】
MiddleページおよびUpperページへのデータ書き込みの際には、1~複数回のプログラム電圧パルスが印加される(ステップS390)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、MiddleページおよびUpperページのデータ読み出しが行なわれる(ステップS400)。
【0093】
さらに、MiddleページおよびUpperページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かが確認される(ステップS410)。MiddleページおよびUpperページにおけるデータのフェイルビット数がクライテリア以上である場合(ステップS410、No)、ステップS390~S410の処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると(ステップS410、Yes)、チップレディーとなる(ステップS420)。
【0094】
ここで、
図9Cに示した書き込み手順の変形例について説明する。
図9Dは、第1の実施形態に係る2ndステージでの書き込み手順の変形例を示すサブフローチャートである。なお、
図9Dに示す処理手順では、
図9Cで説明したステップS370の処理が行われないところを除いて、ステップS310~S420の処理手順は
図9Cと同じである。
【0095】
図9Dに示す処理手順の場合、ステップS310の前にステップS301~S309の処理が行われる。具体的には、まず、メモリコントローラ1から不揮発性メモリ2へLowerページの読み出しコマンドが入力され(ステップS301)、これによりチップビジーとなる(ステップS302)。
【0096】
この後、制御部22は、IDLであるLowerページデータの読み出しをVr4のしきい値電圧で行う。そして、制御部22は、Vr4のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS303)。この後、チップレディーとなる(ステップS304)。
【0097】
制御部22が読み出したLowerページデータを出力すると(ステップS305)、このLowerページデータは、ECC回路14に送信される(ステップS306)。これにより、ECC回路14がLowerページデータをECC訂正する(ステップS307)。
【0098】
そして、メモリコントローラ1から不揮発性メモリ2へLowerページのデータの入力開始コマンドが入力される(ステップS308)。これにより、ECC回路14が、不揮発性メモリ2へLowerページのデータを入力する(ステップS309)。
【0099】
この後、ステップS310~S420の処理が行われる。なお、ステップS380では、ECC回路14からのLowerページデータに基づいて、MiddleページおよびUpperページのプログラム先のVthが決定される。
【0100】
上述した2ndステージのプログラムでは、不揮発性メモリ2へのデータ入力は、MiddleページとUpperページとの2ページだけである。しかし、この2ndステージでは、メモリセルのプログラムの目的地であるVthには、Lowerページ(2ndステージを始める前のVth)も含めた3ページ分のデータが必要である。そのため、このステージのプログラムでは、前処理として、制御部22が、まずLowerページデータを読み出し、そのデータを、入力されたMiddleページとUpperページとで合成してプログラム先のVthを決定するという動作を行う。
【0101】
Lowerページデータを読み出すことができるのは、Lowerページの境界数が1である1-3-3コーディングを採用しているからである。2ndステージでLowerページデータが読み出されることで、2ndステージでは、Lowerページデータ入力を不要としている。すなわち、1-3-3コーディングを採用し、Lowerページデータに基づいてプログラム先のVthが決定されるので、ワード線WLi間の隣接メモリセル間干渉を小さくできるとともに、1つのページデータは1回のデータ入力で済む。
【0102】
これにより、1-3-3コーディングを採用して3ステージでLM-Foggy-Fineプログラムが実行される場合には、メモリコントローラ1の書き込みバッファに必要なメモリ量が複数ワード線分(最大7ページ)であったのに対し、本実施形態では、メモリコントローラ1の書き込みバッファに必要なメモリ量が最大でも2ページ分で済む。
【0103】
ここで、1-3-3コーディングを採用したLM-Foggy-Fineプログラムの処理手順と、本実施形態のプログラム処理手順との比較について説明する。
図10Aは、1-3-3コーディングを採用したLM-Foggy-Fineプログラムにおける書き込みバッファデータ量を説明するための図である。
【0104】
図10Aおよび後述する
図10Bでは、上段側に、ブロック書き込みのデータ入力とプログラム実行のタイムチャートを示し、下段側に、データを書き込みバッファ内に保持するのに必要な期間のタイムチャートを示している。なお、
図10Aおよび後述する
図10Bでは、説明を簡単化するために、1ブロック内のストリング数が1の場合を示している。ストリングが複数の場合は、ストリング数倍だけのメモリ量が必要である。
【0105】
1-3-3コーディングのLM-Foggy-Fineプログラムの場合、1つ目のステージであるLMステージでは、1ページ分のデータ入力と、この1ページ分のプログラム(LMステージのプログラム)とが行われる。また、1-3-3コーディングのLM-Foggy-Fineプログラムの場合、2つ目のステージであるFoggyステージでは、3ページ分のデータ入力と、この3ページ分のプログラム(Foggyステージのプログラム)とが行われる。また、1-3-3コーディングのLM-Foggy-Fineプログラムの場合、3つ目のステージであるFineステージでは、3ページ分のデータ入力と、この3ページ分のプログラム(Fineステージのプログラム)とが行われる。
【0106】
そして、各ワード線WL0,WL1,WL2,・・・では、Fineステージにおいてプログラムが開始されるまで、LMステージにおいて書き込まれた1ページ分のデータと、Foggyステージにおいて書き込まれた3ページ分のデータとを、書き込みバッファ内に格納しておく必要がある。
【0107】
LM-Foggy-Fineプログラムにおいても、隣接メモリセル間干渉を低減するため、Lower/Middle/Upperの3ページ分のデータは連続して書き込まれない。例えば、ワード線WL0へのLMステージが実行された後、ワード線WL0へのFoggyステージが実行される前に、ワード線WL0に隣接するワード線WL1へのLMステージが実行される。また、ワード線WL0へのFoggyステージが実行された後、ワード線WL0へのFineステージが実行される前に、ワード線WL0に隣接するワード線WL1へのFoggyステージが実行される。同様に、ワード線WL1へのLMステージが実行された後、ワード線WL1へのFoggyステージが実行される前に、ワード線WL1に隣接するワード線WL2へのLMステージが実行される。また、ワード線WL1へのFoggyステージが実行された後、ワード線WL1へのFineステージが実行される前に、ワード線WL1に隣接するワード線WL2へのFoggyステージが実行される。
【0108】
このように、LM-Foggy-Fineプログラムでは、各ワード線WLiにおいて、LMステージからFineステージまでには長時間を要する。例えば、ワード線WL1におけるLMステージからFineステージまでの間には、以下の(P1)~(P5)のステージのプログラムが実行される。
(P1)ワード線WL2に対するLMステージ
(P2)ワード線WL1に対するFoggyステージ
(P3)ワード線WL0に対するFineステージ
(P4)ワード線WL3に対するLMステージ
(P5)ワード線WL2に対するFoggyステージ
【0109】
このように、1-3-3コーディングのLM-Foggy-Fineプログラムの場合、1つ目であるLMステージでは、入力データはLowerページだけである。ところが、この方法の場合、最終の3つ目であるFineステージのデータ入力が完了するまで、Lower/Middle/Upperの3ページ分のデータを、書き込みバッファ内に保持しておく必要がある。また、隣接メモリセル間干渉を低減するためには、複数のワード線WLiにおけるデータを、書き込みバッファ内に保持しておく必要がある。例えば、ワード線WL2に対してFoggyステージが実行される際には、ワード線WL1に対する3ページ分のデータと、ワード線WL2に対する3ページ分のデータと、ワード線WL3に対する1ページ分のデータとが、書き込みバッファ内に保持されている必要がある。このように、1-3-3コーディングのLM-Foggy-Fineプログラムの場合、最大7ページ分のデータが書き込みバッファ内に保持されている必要がある。
【0110】
図10Bは、第1の実施形態のプログラムにおける書き込みバッファ量(バッファデータ量)を説明するための図である。本実施形態のプログラムでは、1-3-3コーディングで2ステージのプログラムが用いられる。この本実施形態のプログラムでは、1stステージでは、1ページ分(Lowerページ)のデータ入力と、この1ページ分のプログラム(1stプログラム)とが行われる。また、本実施形態のプログラムの場合、2ndステージでは、2ページ分(MiddleページおよびUpperページ)のデータ入力と、この2ページ分のプログラム(2ndプログラム)とが行われる。
【0111】
そして、各ワード線WL0,WL1,WL2,・・・では、各ステージのデータ入力の際にデータを書き込みバッファ内に格納しておけばよく、プログラムが開始されると、書き込みバッファ内からデータが削除されてもよい。例えば、1stステージにおいてデータが入力されると、このデータは書き込みバッファ内に格納される。そして、1stステージにおいてプログラムが開始されると、書き込みバッファ内に格納しておいたデータは削除されてもよい。同様に、2ndステージにおいてデータが入力されると、このデータは書き込みバッファ内に格納される。そして、2ndステージにおいてプログラムが開始されると、書き込みバッファ内に格納しておいたデータは削除されてもよい。
【0112】
本実施形態のプログラムにおいても、隣接メモリセル間干渉を低減するため、Lower/Middle/Upperの3ページ分のデータは連続して書き込まれない。例えば、ワード線WL0への1stステージが実行された後、ワード線WL0への2ndステージが実行される前に、ワード線WL0に隣接するワード線WL1への1stステージが実行される。同様に、ワード線WL1への1stステージが実行された後、ワード線WL1への2ndステージが実行される前に、ワード線WL1に隣接するワード線WL2への1stステージが実行される。
【0113】
このように、本実施形態のプログラムは、2ステージなので、各ワード線WLiにおいて、1stステージから2ndステージまでの処理は短時間となる。例えば、ワード線WL1における1ステージから2ndステージまでの間には、以下の(P11)のステージのプログラムが実行される。
(P11)ワード線WL2に対する1stステージ
【0114】
また、本実施形態のプログラムの場合、データ入力の開始からデータ入力の終了までの間だけデータを書き込みバッファ内に保持しておけばよく、プログラムが開始されると、書き込みバッファ内からデータが削除されてもよい。このため、本実施形態のプログラムの場合、書き込みバッファ内に保持しておく必要があるデータは、最大でも2ページ分のデータである。
【0115】
このように、本実施形態では、全てのページデータは、1回のステージのプログラムでのみ必要であるので、そのデータ入力が完了すれば書き込みバッファ内のデータは破棄可能となる。そのため、本実施形態では、書き込みバッファ内に同時に保持しておくことが必要なページ数が少なくて済む。
【0116】
不揮発性メモリ2へプログラムされるページデータは、RAM11内の書き込みバッファで構成されて一旦保持されてから、プログラム時に不揮発性メモリ2へデータ入力される。本実施形態においては、このRAM11の必要容量を小さくすることが可能となるので、コスト削減となる。
【0117】
また、LM-Foggy-Fineプログラム又はFoggy-Fineプログラムが用いられるときは、全てのページデータのデータ転送を2回又は3回行なわなくてはならないので、転送時間が掛かり、また転送時の消費電力も余分に必要となる。本実施形態では、全てのページデータは、各ページそれぞれ1回のデータ転送で完了するため、転送時間及び電力消費を1/2~1/3程度に抑えることが可能になる。
【0118】
図11は、第1の実施形態に係る外部プログラムコマンドのシーケンスの例を示す図である。
図11の(A)では、第1の実施形態に係る1stステージにおける外部プログラムコマンドのシーケンスを示し、
図11の(B)では、第1の実施形態に係る2ndステージにおける外部プログラムコマンドのシーケンスを示している。
【0119】
図11の(A)に示すように、1stステージでは、プログラム開始コマンド(80h)が入力された後、プログラム対象ブロック・ページのアドレス(Lowerページのアドレス)が入力され、その後にLowerページのプログラムデータが入力される。そして、最後にプログラム実行コマンド(10h)が入力されると、チップがビジーとなりメモリチップ内部でプログラムの動作が開始される。このようなプログラムコマンドの入力により、Lowerページがプログラムされる。
【0120】
図11の(B)に示すように、2ndステージでは、プログラム開始コマンド(80h)が入力された後、プログラム対象ブロック・ページのアドレス(Middleページのアドレス)が入力され、その後にMiddleページのプログラムデータが入力される。この後、プログラムコマンドの連結コマンド(1Ah)が入力され、同様のシーケンスで今度はUpperページのプログラムデータが入力される。そして、最後にプログラム実行コマンド(10h)が入力されると、チップがビジーとなりメモリチップ内部でプログラムの動作が開始される。このようなプログラムコマンドの入力により、Lowerページの読み出しが行われ、さらにMiddleページおよびUpperページがプログラムされる。なお、MiddleページのプログラムデータとUpperページのプログラムデータとは、何れが先に入力されてもよい。
【0121】
ここで、ページ読み出し処理について説明する。ページ読み出しの方法は、読み出し対象ページを含むワード線WLiに対するプログラムが、2ndステージの書き込み前か、後かで異なる。
【0122】
2ndステージ書き込み前の場合、記録されているデータはLowerページだけが有効である。このため、制御部22は、読み出しページがLowerページのときだけメモリセルからデータを読み出す。そして、制御部22は、その他のページの場合には、メモリセル読み出し動作は行わず、読み出しデータとして強制的に全て“1”を出力する制御を行う。
【0123】
一方、2ndステージまで完了したワード線WLiの場合、制御部22は、読み出しページがUpper/Middle/Lowerページの何れであってもメモリセルを読み出す。この場合、読み出すページが何れのページかによって必要な読み出し電圧が異なるので、制御部22は、選択されたページに従って必要な読み出しだけを実行する。
【0124】
図6に示したコーディングによれば、Lowerページデータが変化するしきい値状態間の境界は1つだけであるので、制御部22は、その境界で分離された2つの範囲の何れにしきい値が位置するかでデータを決定する。例えば、しきい値電圧がVr4よりも小さい場合には、制御部22は、メモリセルのデータとして“1”を出力する制御を行う。一方、しきい値電圧がVr4よりも大きい場合には、制御部22は、メモリセルのデータとして“0”を出力する制御を行う。
【0125】
また、MiddleページまたはUpperページのデータが変化するしきい値状態間の境界は3つであるので、制御部22は、それらの境界で分離された4つの範囲の何れの中にしきい値が位置するかでデータを決定する。
【0126】
以下、ページ読み出しの具体的な処理手順について説明する。
図12Aは、第1の実施形態に係る記憶装置において2ndステージ書き込み前の場合のワード線でのページ読み出しの処理手順を示すフローチャートである。
図12Bは、第1の実施形態に係る記憶装置において2ndステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャートである。
【0127】
図12Aに示すように、2ndステージ書き込み前のワード線WLiの場合、制御部22は、読み出しページを選択する(ステップS510)。読み出しページがLowerページの場合(ステップS510、Lower)、制御部22は、Vr4のしきい値電圧で読み出しを行う(ステップS520)。そして、制御部22は、Vr4のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS530)。
【0128】
また、読み出しページがMiddleページの場合(ステップS510、Middle)、制御部22は、メモリセルの出力データとして全て強制的に“1”を出力する制御を行う(ステップS540)。
【0129】
また、読み出しページがUpperページの場合(ステップS510、Upper)、制御部22は、メモリセルの出力データとして全て強制的に“1”を出力する制御を行う(ステップS550)。
【0130】
また、
図12Bに示すように、2ndステージまでプログラムが完了したワード線WLiの場合、制御部22は、読み出しページを選択する(ステップS610)。読み出しページがLowerページの場合(ステップS610、Lower)、制御部22は、Vr4のしきい値電圧で読み出しを行う(ステップS620)。そして、制御部22は、Vr4のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS630)。
【0131】
また、読み出しページがMiddleページの場合(ステップS610、Middle)、制御部22は、Vr1、Vr3およびVr6のしきい値電圧で読み出しを行う(ステップS640,S650,S660)。そして、制御部22は、Vr1、Vr3およびVr6のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS670)。
【0132】
また、読み出しページがUpperページの場合(ステップS610、Upper)、制御部22は、Vr2、Vr5およびVr7のしきい値電圧で読み出しを行う(ステップS680,S690,S700)。そして、制御部22は、Vr2、Vr5およびVr7のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS710)。
【0133】
なお、ワード線WLiに対するプログラムが、2ndステージ書き込み完了前か後かは、メモリコントローラ1が管理・識別することが可能である。メモリコントローラ1が、プログラム制御を行っているので、メモリコントローラ1がその進捗状況を記録しておけば、メモリコントローラ1は、不揮発性メモリ2のどのアドレスがどのようなプログラム状態であるか容易に参照できる。この場合、メモリコントローラ1は、不揮発性メモリ2から読み出しを行う際、対象ページアドレスを含むワード線WLiがどのようなプログラム状態であるかを識別し、識別した状態に応じた読み出しコマンドを発行する。
【0134】
図13は、第1の実施形態に係る外部読み出しコマンドのシーケンスの例を示す図である。
図13の(A)では、第1の実施形態に係る記憶装置において1stステージまでプログラムが完了しているワード線WLiでの外部読み出しコマンドのシーケンスを示し、
図13の(B)では、第1の実施形態に係る記憶装置において2ndステージまでプログラムが完了しているワード線WLiでの外部読み出しコマンドのシーケンスを示している。
【0135】
図13の(A)に示すように、2ndステージ書き込み前のワード線WLiの場合、読み出し動作を実行するコマンドとして、最初に2ndステージ書き込み前の状態を示すコマンド(2Dh)が入力される。この後、読み出し開始コマンド(00h)が入力され、その後に読み出し対象ブロック・ページのアドレス(LowerページまたはMiddleページまたはUpperページのアドレス)が入力される。そして、最後に読出し実行コマンド(30h)が入力されると、チップがビジーとなり、メモリチップ内部で読み出しの動作が開始される。このようなプログラムコマンドの入力により、LowerページまたはMiddleページまたはUpperページからデータが読み出される。その後、チップがレディー状態となり、読み出されたデータが出力される。
【0136】
一方、
図13の(B)に示すように、2ndステージまでプログラムが完了したワード線WLiの場合、読み出し動作を実行するコマンドとして、最初に2ndステージまでの完了状態を示すコマンド(25h)が入力される。この後、読み出し開始コマンド(00h)が入力され、その後に読み出し対象ブロック・ページのアドレス(LowerページまたはMiddleページまたはUpperページのアドレス)が入力される。そして、最後に読出し実行コマンド(30h)が入力されると、チップがビジーとなり、メモリチップ内部で読み出しの動作が開始される。このようなプログラムコマンドの入力により、LowerページまたはMiddleページまたはUpperページのアドレスからデータが読み出される。その後、チップがレディー状態となり、読み出されたデータが出力される。
【0137】
このように第1の実施形態では、不揮発性メモリ2(3次元構造または2次元構造を有した3bit/CellのNANDメモリ)をプログラムする際に、1-3-3データコーディングを採用し、プログラムのステージを2ステージ制とした。このように2ステージ制でプログラムされるので、データプログラムの際に入力するデータ量が減り、メモリコントローラ1に必要とされる書き込みバッファ量を抑制することが可能となる。また、不揮発性メモリ2のページ間のビットエラー率の偏りを低減できるとともに、ECCにかかるコストを下げることができる。また、データ転送は各ページ1回のみとなるため、転送時間及び消費電力を抑えることができる。
【0138】
また、ワード線WLiをまたぎながら、各プログラムステージを実行するので、隣接ワード線WLiとの隣接セル間干渉の量を低減することができる。また、1-3-3データコーディングを用いるので、2ndステージの前のIDLマージンを拡大することができ、書き込みシーケンスの信頼性を向上することが可能となる。また、1-3-3データコーディングを用いるので、Lowerページにおけるしきい値境界を1つとすることにより、1stステージのプログラム、すなわちLowerページのプログラムを高速化することができる。なお、1stステージのプログラムの高速化は、書き込み及び書き込みベリファイの繰り返しときに、書き込み電圧を少しずつステップアップさせて書き込むときのステップ電圧を、2ndステージのプログラム時より大きい値にするなどで高速化ができる。
【0139】
(第2の実施形態)
つぎに、
図14A,14Bおよび
図15を用いて第2の実施形態について説明する。第2の実施形態では、ワード線WLn-1の2ndステージのプログラムと、ワード線WLnの1stステージのプログラムとをまとめて行う。なお、本実施形態でも第1の実施形態の
図6で説明したものと同じデータコーディングを用いる場合について説明する。
【0140】
図9Aに示したプログラムのフローチャートでは、1stステージのプログラムと2ndステージのプログラムとは、全て1つずつ分離しており、それぞれのプログラムの際にそれぞれのプログラムコマンドとプログラムデータ入力が行なわれている。本実施形態では、このプログラムコマンドおよびプログラムデータ入力をなるべくまとめる。
【0141】
例えば、
図8Bに示したように、ブロックの先頭と終わりの端部以外は、ワード線WLnの1stステージとワード線WLn-1の2ndステージのプログラムとが必ず連続する。そこで、本実施形態では、この部分をひとまとめのコマンド入力とする。すなわち、1回のコマンド入力で、ワード線WLnのLowerページとワード線WLn-1のMiddle/Upperページとのプログラムデータがまとめて入力される。これは、LM-Foggy-Fineが採用された場合でも、1回のプログラムコマンドでLower/Middle/Upperページのデータをまとめて(ただし、この場合は同じワード線WLi内のページ)3ページ分入力していたのと同じデータ量の入力である。
【0142】
このように、プログラムコマンドおよびプログラムデータの入力がまとめられることにより、メモリコントローラ1が行う制御におけるコマンド入力やポーリング(チップビジーがレディーに戻ったか否かの定期的なチェック)の頻度が減少し、記憶装置としての高速化・簡易化が可能となる。
【0143】
【0144】
図14Aは、第2の実施形態に係る1ブロック分全体の書き込み手順を示すフローチャートである。ここでの1ブロックは、ワード線WL0~WLn(nは自然数)のn+1本のワード線WLiを有するとする。また、
図14Bは、第2の実施形態に係る1stステージおよび2ndステージにおける書き込み手順を示すサブフローチャートである。なお、
図14Aの各ステップの右に示した(1st)は、
図9Bに示す1stステージに対応し、(2nd)は、
図9Cに示す2ndステージに対応し、(1,2)は、
図14Bに示す1stステージおよび2ndステージに対応している。
【0145】
図14Aに示すように、書き込みを開始すると、制御部22は、ステップS10~S30と同様の処理であるステップS810~S830の処理を実行する。これにより、ストリングSt0~St3のワード線WL0の1stステージのプログラムが実施される。
【0146】
さらに、制御部22は、ストリングSt0_ワード線WL1の1stステージのプログラムと、ストリングSt0_ワード線WL0の2ndステージのプログラムを実施する(ステップS840)。次に、制御部22は、ストリングSt1_ワード線WL1の1stステージのプログラムと、ストリングSt1_ワード線WL0の2ndステージのプログラムを実施する(ステップS850)。次に、制御部22は、ストリングSt2_ワード線WL1の1stステージのプログラムと、ストリングSt2_ワード線WL0の2ndステージのプログラムを実施する(ステップS860)。この後、制御部22は、各ストリングの各ワード線WLiに対してステップS840,S850,S860のような処理を繰り返す。
【0147】
そして、制御部22は、ストリングSt0_ワード線WLnの1stステージのプログラムと、ストリングSt0_ワード線WLn-1の2ndステージのプログラムを実施する(ステップS870)。次に、制御部22は、ストリングSt1_ワード線WLnの1stステージのプログラムと、ストリングSt1_ワード線WLn-1の2ndステージのプログラムを実施する(ステップS880)。この後、制御部22は、各ストリングの各ワード線WLiに対してステップS870,S880のような処理を繰り返す。
【0148】
そして、制御部22は、ストリングSt3_ワード線WLnの1stステージのプログラムと、ストリングSt3_ワード線WLn-1の2ndステージのプログラムを実施する(ステップS890)。次に、制御部22は、ステップS100~S120と同様の処理であるステップS900~S920の処理を実行する。これにより、ストリングSt0~St3のワード線WLnの2ndステージのプログラムが実施される。
【0149】
このように、ブロックの先頭では第1の実施形態と同様に1stステージのみのプログラムが実施され、ブロックの最後では第1の実施形態と同様に2ndステージのみのプログラムが実施される。この場合において、1stステージのみのプログラムは、
図9Bに示した手順に従って実行され、2ndステージのみのプログラムは、
図9Cに示した手順に従って実行される。
【0150】
図14Bに示すように、1stステージおよび2ndステージのプログラムでは、2ndステージのプログラムが実行された後に、続けて1stステージのプログラムが実行される。具体的には、まず、メモリコントローラ1から不揮発性メモリ2へ、ワード線WLn-1のMiddleページのデータの入力開始コマンドが入力される(ステップS1010)。そして、メモリコントローラ1から不揮発性メモリ2へ、ワード線WLn-1のMiddleページのデータが入力される(ステップS1020)。
【0151】
次に、メモリコントローラ1から不揮発性メモリ2へ、ワード線WLn-1のUpperページのデータの入力開始コマンドが入力される(ステップS1030)。そして、メモリコントローラ1から不揮発性メモリ2へ、ワード線WLn-1のUpperページのデータが入力される(ステップS1040)。
【0152】
次に、メモリコントローラ1から不揮発性メモリ2へ、ワード線WLnのLowerページのデータの入力開始コマンドが入力される(ステップS1050)。そして、メモリコントローラ1から不揮発性メモリ2へ、ワード線WLnのLowerページのデータが入力される(ステップS1060)。
【0153】
次に、メモリコントローラ1から不揮発性メモリ2へ、1stステージおよび2ndステージのプログラム実行コマンドが入力され(ステップS1070)、これによりチップビジーとなる(ステップS1080)。
【0154】
この後、ワード線WLnのLowerページに対し、1~複数回のプログラム電圧パルスが印加される(ステップS1090)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、ワード線WLnのLowerページのデータ読み出しが行なわれる(ステップS1100)。
【0155】
さらに、Lowerページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かが確認される(ステップS1110)。Lowerページにおけるデータのフェイルビット数がクライテリア以上である場合(ステップS1110、No)、ステップS1140~S1160の処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると(ステップS1110、Yes)、ワード線WLn-1のLowerページデータが読み出される(ステップS1120)。
【0156】
そして、ワード線WLn-1のLowerページデータに基づいて、MiddleページおよびUpperページのプログラム先のVth(しきい値電圧)が決定される(ステップS1130)。この後、決定されたVthを用いて、ワード線WLn-1のMiddleページおよびUpperページへのデータ書き込みが行われる。
【0157】
MiddleページおよびUpperページへのデータ書き込みの際には、ワード線WLn-1のMiddleページおよびUpperページに対し、1~複数回のプログラム電圧パルスが印加される(ステップS1140)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、ワード線WLn-1のMiddleページおよびUpperページのデータ読み出しが行なわれる(ステップS1150)。
【0158】
さらに、MiddleページおよびUpperページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かが確認される(ステップS1160)。MiddleページおよびUpperページにおけるデータのフェイルビット数がクライテリア以上である場合(ステップS1160、No)、ステップS1140~S1160の処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると(ステップS1160、Yes)、チップレディーとなる(ステップS1170)。
【0159】
なお、ステップS1010,S1030,S1050の処理は、何れが先に行われてもよい。また、ステップS1020,S1040,S1060の処理は、何れが先に行われてもよい。ただし、ステップS1020の処理は、ステップS1010の処理の後に行われ、ステップS1040の処理は、ステップS1030の処理の後に行われ、ステップS1060の処理は、ステップS1050の処理の後に行われる。
【0160】
なお、
図14Bに示したステップS1120~S1160までの処理が、ワード線WLn-1の2ndステージのプログラムに対応し、ステップS1090~S1110までの処理が、ワード線WLnの1stステージのプログラムに対応している。
【0161】
このように、
図14Bでは、ワード線WLnの1stステージのプログラムがワード線WLn-1の2ndステージのプログラムよりも前に実行される場合について説明した。これは、ワード線WLnの1stステージのプログラムが先に行なわれることで、8値のVthが書き込まれるワード線WLn-1のセルが隣接セルの影響を受けないようにするためである。
【0162】
このように、本実施形態では、ワード線WLn-1のMiddleページおよびUpperページのデータと、ワード線WLnのLowerページのデータとの3ページ分のデータが連続して入力される。
【0163】
図15は、第2の実施形態に係る外部プログラムコマンドのシーケンスの例を示す図である。なお、1stステージにおける外部プログラムコマンドのシーケンスは、
図11の(A)に示したものと同じである。また、2ndステージにおける外部プログラムコマンドのシーケンスは
図11の(B)に示したものと同じである。したがって、ここでは、2ndステージと1stステージとが連続してプログラムされる際の外部プログラムコマンドのシーケンスについて説明する。1stステージと2ndステージとが連続してプログラムされる場合には、2ndステージのコマンドと1stステージのコマンドとが連続して入力される。
【0164】
具体的には、
図15に示すように、プログラム開始コマンド(80h)が入力された後、プログラム対象ブロック・ページのアドレス(ワード線WLn-1のMiddleページのアドレス)が入力され、その後にワード線WLn-1のMiddleページのプログラムデータが入力される。この後、プログラムコマンドの連結コマンド(1Ah)が入力され、同様のシーケンスで今度はワード線WLn-1のUpperページのプログラムデータが入力される。そして、プログラムコマンドの連結コマンド(1Ah)が入力され、同様のシーケンスで今度はワード線WLnのLowerページのプログラムデータが入力される。そして、最後にプログラム実行コマンド(10h)が入力されると、チップがビジーとなりメモリチップ内部でプログラムの動作が開始される。
【0165】
このようなプログラムコマンドの入力により、ワード線WLnのLowerページがプログラムされる。また、IDLとして、ワード線WLn-1のLowerページデータの読み出しが行われる。そして、Lowerページデータに基づいて、MiddleページおよびUpperページのプログラム先のVthが決定され、決定されたVthでワード線WLn-1のMiddleページおよびUpperページがプログラムされる。
【0166】
また、別の変形例として、プログラムコマンドの入力後、IDLとして、ワード線WLn-1のLowerページデータの読み出しを先に行なった後に、ワード線WLnのLowerページがプログラムを行い、次に、MiddleページおよびUpperページのプログラム先のVthが決定され、決定されたVthでワード線WLnのMiddleページおよびUpperページのプログラムを行なうこともできる。このようにすると、ワード線WLnの書込みによる隣接セル間干渉を受ける前に、IDLのワード線WLn-1のLowerページデータの読み出しができる。
【0167】
なお、本実施形態における、ワード線WLnの1stステージとワード線WLn-1の2ndステージとのひとまとめのコマンドによるプログラムの実際の実行順番は変形が可能である。すなわち、
図15に示したワード線WLnのLowerページのプログラムと、IDLとしてのワード線WLn-1のLowerページデータの読み出しとは、何れが先でもよく、入れ替えが可能である。IDL(ワード線WLn-1のLowerページデータの読み出し)がワード線WLnのLowerページのプログラムよりも前に行なわれることで、ワード線WLnのLowerページのプログラムによる影響を受けることなくIDLが可能となる。
【0168】
このように第2の実施形態では、ワード線WLn-1の2ndステージのプログラムと、ワード線WLnの1stステージのプログラムとをまとめて行うので、コマンド入力やポーリングの頻度が減少する。したがって、記憶装置の高速化および簡易化が可能となる。
【0169】
(第3の実施形態)
つぎに、
図16~
図19を用いて第3の実施形態について説明する。第3の実施形態では、2ndステージのプログラムを実行する際に、Vth分布状態を領域D以上とする予定のメモリセルに対して最初にプログラムを実行し、その後、Vth分布状態を領域C以下とする予定のメモリセルに対してプログラムを実行する。なお、本実施形態でも第1の実施形態の
図6で説明したものと同じデータコーディングを用いる場合について説明する。
【0170】
多ビット/cellのプログラムにおいて、プログラム実行中に突然の電源遮断が発生すると、データが破壊される。このような場合、電源遮断が発生した際に実行していたプログラムの対象のプログラムデータの情報がメモリセルから失われる。このような場合、既にプログラムが完了して、メモリコントローラ1の書き込みバッファからデータが破棄されたような過去のプログラムデータも失われてしまう場合がある。この結果、データ復旧が不可能となってしまう。
【0171】
このような事象は、2ndステージのMiddle/Upperページのプログラムの途中で電源遮断が起きると発生する。この状況について説明する。
図16は、電源遮断に起因するデータ破壊を説明するための図である。
図16の(T11)は、1stステージのプログラムが完了した後のVth分布状態(データ状態)を示している。また、
図16の(T12)は、2ndステージのプログラム途中のVth分布状態を示している。また、
図16の(T13)は、電源遮断後のVth分布状態を示している。
【0172】
図16の(T11)に示したような1stステージのプログラムが完了した後に、2ndステージのプログラムが開始され、
図16の(T12)に示すようなVth分布状態となる。そして、
図16の(T12)に示すような書き込み途中のVth分布状態の時に、電源遮断が発生すると、
図16の(T13)に示すようなVth分布状態となる。
【0173】
ここで、1stステージ完了後の状態から2ndステージのプログラムを開始することを考える。一般的にNANDメモリの内部では、低いVthから高いVthへと順番にプログラムが実行される。そのため、
図16の(T12)に示すように、途中まで2ndステージのプログラムが進行したところで、電源遮断が発生すると、
図16の(T13)に示したようなVth分布状態となる。
【0174】
ここで正の分布に含まれるメモリセルは、Lowerページデータが“1”であったメモリセルと“0”であったメモリセルとが混在した状態である。このため、この状態において既にプログラムが完了しているLowerページデータを読み出しても、正しい読み出しデータは得られない。なお、2ndステージのプログラム完了後の読み出し電圧を用いても、正しいLowerページデータは得られない。
【0175】
そこで、本実施形態では、2ndステージのMiddle/UpperページのプログラムのVth順序を変更する。
図17は、第3の実施形態に係る2ndステージのプログラムを説明するための図である。
図17では、2ndステージにおけるVth状態の遷移方法を示している。
図17の(T21)は、1stステージのプログラムが完了した後のVth分布状態を示している。また、
図17の(T22)は、2ndステージの前半のプログラムが完了した時点でのVth分布状態を示している。また、
図17の(T23)は、2ndステージの後半のプログラムが完了した時点でのVth分布状態を示している。
【0176】
本実施形態の制御部22は、
図17の(T21)に示す1stステージが完了すると、
図17の(T22)に示すように、書き込み目的地のVth分布状態が領域D以上となるメモリセルを最初にプログラム(D-Firstプログラム)する。そして、制御部22は、領域D~GまでのVth分布状態のプログラムを完了させた後、
図17の(T23)に示すように、領域A~CのVth分布状態のプログラムを実行する。
【0177】
このように、本実施形態の制御部22は、書き込み目的地のVth分布状態を領域D以上にさせるメモリセルへのプログラムを領域C以下にさせるメモリセルへのプログラムよりも先に開始する。そして、書き込み目的地のVth分布状態を領域D以上にさせるメモリセルへのプログラムを完了させた後、領域C以下にさせるメモリセルへのプログラムを完了させる。
【0178】
これにより、Lowerページデータが“1”であったメモリセルと“0”であったメモリセルとが混在した状態となるタイミングが発生しなくなる。したがって、たとえ2ndステージで電源遮断が発生したとしても、Vr1またはVr4の何れかの読み出し電圧を用いることによって、制御部22は、Lowerページデータを読み出すことが可能となる。
【0179】
図18は、第3の実施形態に係る2ndステージでの書き込み手順を示すフローチャートである。なお、
図9Cで説明した処理と同様の処理については、その説明を省略する。第3の実施形態に係る2ndステージのステップS1210~S1280は、
図9Cに示した第1の実施形態に係る2ndステージのステップS310~S380と同じである。
【0180】
MiddleページおよびUpperページのプログラム先のVthが決定された後(ステップS1280)、決定されたVthを用いて、MiddleページおよびUpperページへのデータ書き込みが行われる。
【0181】
第3の実施形態に係る2ndステージでは、MiddleページおよびUpperページへのデータ書き込みの際に、領域D~Gとさせるメモリセルに対し、1~複数回のプログラム電圧パルスが印加される(ステップS1290)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、MiddleページおよびUpperページの領域D~Gに対してデータ読み出しが行なわれる(ステップS1300)。
【0182】
さらに、MiddleページおよびUpperページにおける領域D~Gでのデータのフェイルビット数がクライテリアよりも小さいか否かが確認される(ステップS1310)。MiddleページおよびUpperページにおける領域D~Gでのデータのフェイルビット数がクライテリア以上である場合(ステップS1310、No)、ステップS1290~S1310の処理が繰り返される。
【0183】
そして、MiddleページおよびUpperページにおける領域D~Gでのデータのフェイルビット数がクライテリアよりも小さくなると(ステップS1310、Yes)、MiddleページおよびUpperページにおける領域A~Cへの書き込みを行う。具体的には、MiddleページおよびUpperページへのデータ書き込みの際に、領域A~Cとさせるメモリセルに対し、1~複数回のプログラム電圧パルスが印加される(ステップS1320)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、MiddleページおよびUpperページの領域A~Cに対してデータ読み出しが行なわれる(ステップS1330)。
【0184】
さらに、MiddleページおよびUpperページにおける領域A~Cでのデータのフェイルビット数がクライテリアよりも小さいか否かが確認される(ステップS1340)。MiddleページおよびUpperページにおける領域A~Cでのデータのフェイルビット数がクライテリア以上である場合(ステップS1340、No)、ステップS1320~S1340が繰り返される。
【0185】
そして、MiddleページおよびUpperページにおける領域A~Cでのデータのフェイルビット数がクライテリアよりも小さくなると(ステップS1350、Yes)、チップレディーとなる(ステップS1350)。
【0186】
なお、本実施形態では、2ndステージのプログラムの前半で、領域D~GまでのVth分布状態のプログラムを完了させたが、目的地が領域D~GまでのVth分布状態のメモリセルを、完全に終わらせる必要は無い。この場合、制御部22は、一旦領域D程度のVth分布状態までのプログラムにとどめておく。その後、制御部22は、領域A~Cのプログラムと、プログラム途中であった領域D~Gのプログラムとを順番に実行する。
【0187】
図19は、第3の実施形態に係る2ndステージのプログラム変形例を説明するための図である。
図19では、2ndステージにおけるVth状態の遷移方法(変形例)を示している。
図19の(T31)は、1stステージのプログラムが完了した後のVth分布状態を示している。また、
図19の(T32)は、2ndステージの前半のプログラムが完了した時点でのVth分布状態を示している。また、
図19の(T33)は、2ndステージの後半のプログラムが完了した時点でのVth分布状態を示している。
【0188】
本実施形態の制御部22は、
図19の(T31)に示す1stステージが完了すると、制御部22は、
図19の(T32)に示すように、領域D程度のVth分布状態までプログラムを実行する。その後、制御部22は、領域ErのVth分布状態を用いて、領域A~Cのプログラムを実行する。さらに、制御部22は、領域D程度のVth分布状態(プログラム途中のVth分布状態)を用いて、領域D~Gのプログラムを実行する。
【0189】
この
図19に示す方法の場合も、
図17に示す方法の場合と同様に、Lowerページデータが“1”であったメモリセルと“0”であったメモリセルとが混在した状態となるタイミングが発生しなくなる。したがって、たとえ2ndステージで電源遮断が発生したとしても、Vr1またはVr4の何れかの読み出し電圧を用いることによって、制御部22は、Lowerページデータを読み出すことが可能となる。
【0190】
このように、制御部22は、書き込み目的地のVth分布状態を領域D以上にさせるメモリセルへのしきい値分布を、領域Er~Cまでのしきい値領域に重ならない位置まで移動させた後、領域Er~Gにさせるメモリセルへのプログラムを完了させる。
【0191】
このように第3の実施形態では、2ndステージのプログラムの際に、上位のVth分布を先にプログラムするので、不正電源遮断に起因する書き込み済みデータの巻き添え破壊を防止することができ、この結果、記憶装置の信頼性を向上させることが可能となる。
【0192】
なお、第1~第3の実施形態では、
図6で説明したものと同じ1-3-3データコーディングを用いる場合について説明したが、他の1-3-3データコーディングが用いられてもよい。ただし、1-3-3データコーディングにおいて、Lowerページデータの境界が1箇所であるという条件がある。
【0193】
図20は、1-3-3データコーディングの他の例を示す図である。
図20の(A)に示す1-3-3データコーディングの変形例1では、しきい値電圧とデータ値との関係は、以下に示す通りである。
・しきい値電圧がEr領域内にあるメモリセルは“111”を記憶している状態である。
・しきい値電圧がA領域内にあるメモリセルは“011”を記憶している状態である。
・しきい値電圧がB領域内にあるメモリセルは“001”を記憶している状態である。
・しきい値電圧がC領域内にあるメモリセルは“101”を記憶している状態である。
・しきい値電圧がD領域内にあるメモリセルは“100”を記憶している状態である。
・しきい値電圧がE領域内にあるメモリセルは“110”を記憶している状態である。
・しきい値電圧がF領域内にあるメモリセルは“010”を記憶している状態である。
・しきい値電圧がG領域内にあるメモリセルは“000”を記憶している状態である。
【0194】
図20の(B)に示す1-3-3データコーディングの変形例2では、しきい値電圧とデータ値との関係は、以下に示す通りである。
・しきい値電圧がEr領域内にあるメモリセルは“110”を記憶している状態である。
・しきい値電圧がA領域内にあるメモリセルは“100”を記憶している状態である。
・しきい値電圧がB領域内にあるメモリセルは“000”を記憶している状態である。
・しきい値電圧がC領域内にあるメモリセルは“010”を記憶している状態である。
・しきい値電圧がD領域内にあるメモリセルは“011”を記憶している状態である。
・しきい値電圧がE領域内にあるメモリセルは“111”を記憶している状態である。
・しきい値電圧がF領域内にあるメモリセルは“101”を記憶している状態である。
・しきい値電圧がG領域内にあるメモリセルは“001”を記憶している状態である。
【0195】
図20の(C)に示す1-3-3データコーディングの変形例3では、しきい値電圧とデータ値との関係は、以下に示す通りである。
・しきい値電圧がEr領域内にあるメモリセルは“110”を記憶している状態である。
・しきい値電圧がA領域内にあるメモリセルは“010”を記憶している状態である。
・しきい値電圧がB領域内にあるメモリセルは“000”を記憶している状態である。
・しきい値電圧がC領域内にあるメモリセルは“100”を記憶している状態である。
・しきい値電圧がD領域内にあるメモリセルは“101”を記憶している状態である。
・しきい値電圧がE領域内にあるメモリセルは“111”を記憶している状態である。
・しきい値電圧がF領域内にあるメモリセルは“011”を記憶している状態である。
・しきい値電圧がG領域内にあるメモリセルは“001”を記憶している状態である。
【0196】
(第4の実施形態)
つぎに、
図21を用いて第4の実施形態について説明する。第4の実施形態では、1stステージをLower/Middleページのプログラムとし、2ndステージをUpperページのプログラムとする。
【0197】
図21は、第4の実施形態におけるプログラム後のしきい値分布を示す図である。
図21では、メモリセルに対する各プログラムステージ後のしきい値分布を示している。
図21の(T41)は、プログラム前の初期状態である消去状態のしきい値分布を示している。
図21の(T42)は、1stステージのプログラム後のしきい値分布を示している。
図21の(T43)は、2ndステージのプログラム後のしきい値分布を示している。
【0198】
図21の(T41)に示すように、NANDメモリセルアレイ23の全メモリセルは、未書き込みの状態では分布Erの状態である。不揮発性メモリ2の制御部22は、
図21の(T42)に示すように、1stステージのプログラムでは、Lower/Middleページに書き込むビット値に応じて、メモリセルごとに分布Erのままとする、または電荷を注入して分布Erよりも上の分布に移動させる。これにより、メモリセルは、Lower/Middleページデータによって、4値のレベルにプログラムされる。
【0199】
また、
図21の(T43)に示すように、2ndステージのプログラムでは、データの書き込みにはUpperページの1ページが必要である。不揮発性メモリ2の制御部22は、1stステージのデータに対し、2ndステージとしてUpperページのデータを加える。このように、制御部22は、2ndステージのプログラム後のしきい値分布を、各隣接する分布が分離された最終状態で8値のレベルとなるようにプログラムする。
【0200】
1stステージの4値のレベルにプログラムする際のしきい値のレベルとしては、例えば以下のようにする。制御部22は、下から2番目のしきい値レベルは、2ndステージのプログラムで領域Aと領域Bに遷移するよう割り付けることに鑑み、領域Aと同じ分布に制御する。また、制御部22は、下から3番目のしきい値レベルは、2ndステージのプログラムで領域Dと領域Eに遷移するよう割り付けることに鑑み、Vr3とVr5の間に入るよう制御する。また、制御部22は、最上位のしきい値レベルは、2ndステージのプログラムで領域Eと領域Fに遷移するよう割り付けることに鑑み、Vr5とVr7の間に入るよう制御する。この後、制御部22は、1stステージの4値を用いて、2ndステージの8値のレベルにプログラムする。
【0201】
なお、隣接メモリセル間干渉の影響を小さくするために、
図8Bで示した順番と同じ順番でプログラムが実行される。すなわち、2つの異なるプログラムステージは、同じワード線WLiに連続的に実行されない。ワード線WLi間の隣接メモリセル間干渉を小さくするためには、ワード線WLiの2ndステージまでのプログラムが完了した後に、隣接ワード線WLiのしきい値の変動量を小さくすることが有効である。
図8Bに示したシーケンスであれば、ワード線WLiの2ndステージまでのプログラムが完了した後の隣接ワード線WLiのプログラムステージは2ndステージのみとなるので、隣接メモリセル間干渉の影響を小さくできる。
【0202】
ここで、第4の実施形態に係る書き込み手順について説明する。なお、第4の実施形態に係る1ブロック分全体の書き込み手順は、第1の実施形態に係る1ブロック分全体の書き込み手順(
図9A)と同じであるので、その説明を省略する。本実施形態でも、第1の実施形態と同様に、非連続的な順序でワード線WLiをまたぎながらプログラムステージが進められていくので、あるワード線WLiのまとまり(ここではブロック)をプログラムシーケンスのまとまりとしてプログラムが実行される。
【0203】
図22Aは、第4の実施形態に係る1stステージにおける書き込み手順を示すサブフローチャートであり、
図22Bは、第4の実施形態に係る2ndステージでの書き込み手順を示すサブフローチャートである。なお、
図22Aに示した処理のうち、
図9Bに示した処理と同様の処理については、その説明を省略する。また、
図22Bに示した処理のうち、
図9Cに示した処理と同様の処理については、その説明を省略する。
【0204】
図22Aに示すように、1stステージのプログラムでは、まず、メモリコントローラ1から不揮発性メモリ2へLowerページデータの入力開始コマンドが入力される(ステップS1410)。そして、メモリコントローラ1から不揮発性メモリ2へLowerページデータが入力される(ステップS1420)。
【0205】
さらに、メモリコントローラ1から不揮発性メモリ2へMiddleページのデータの入力開始コマンドが入力される(ステップS1430)。そして、メモリコントローラ1から不揮発性メモリ2へMiddleページのデータが入力される(ステップS1440)。
【0206】
そして、メモリコントローラ1から不揮発性メモリ2へ1stステージのプログラム実行コマンドが入力され(ステップS1450)、これによりチップビジーとなる(ステップS1460)。
【0207】
この後、LowerページデータとMiddleページデータに基づいて、2ndステージのプログラム先のVthが決定される(ステップS1470)。この後、決定されたVthを用いて、LowerページおよびMiddleページへのデータ書き込みが行われる。
【0208】
LowerページおよびMiddleページへのデータ書き込みの際には、1~複数回のプログラム電圧パルスが印加される(ステップS1480)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために読み出しが行なわれる(ステップS1490)。さらに、LowerページおよびMiddleページにおけるデータのフェイルビット数がクライテリア(判定基準)よりも小さいか否かが確認される(ステップS1500)。データのフェイルビット数がクライテリア以上である場合(ステップS1500、No)、ステップS1480~S1500の処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると(ステップS1500、Yes)、チップレディーとなる(ステップS1510)。
【0209】
図22Bに示すように、2ndステージのプログラムでは、まず、メモリコントローラ1から不揮発性メモリ2へUpperページのデータの入力開始コマンドが入力される(ステップS1610)。そして、メモリコントローラ1から不揮発性メモリ2へUpperページのデータが入力される(ステップS1620)。次に、メモリコントローラ1から不揮発性メモリ2へ2ndステージのプログラム実行コマンドが入力され(ステップS1630)、これによりチップビジーとなる(ステップS1640)。
【0210】
この後、IDLであるLowerページデータの読み出しが行われる(ステップS1650)。さらに、IDLであるMiddleページデータの読み出しが行われる(ステップS1660)。そして、LowerページデータおよびMiddleページデータに基づいて、Upperページのプログラム先のVthが決定される(ステップS1670)。この後、決定されたVthを用いて、Upperページへのデータ書き込みが行われる。
【0211】
さらに、制御部22は、IDLの読み出しデータの信頼性を上げるために、複数回数読み出しを行い、チップ内のページバッファ24でこの読み出し結果の多数決をとり、次の書き込みデータとして使用することも可能である。無論、制御部22は、通常の読み出し動作時に於いて、複数回数読み出しを行いチップ内でこの読み出し結果の多数決をとり、外部への読み出しデータとして使用することも可能である。
【0212】
Upperページへのデータ書き込みの際には、1~複数回のプログラム電圧パルスが印加される(ステップS1680)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、Upperページのデータ読み出しが行なわれる(ステップS1690)。
【0213】
さらに、Upperページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かが確認される(ステップS1700)。Upperページにおけるデータのフェイルビット数がクライテリア以上である場合(ステップS1700、No)、ステップS1680~S1700の処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると(ステップS1700、Yes)、チップレディーとなる(ステップS1710)。
【0214】
ここで、
図22Bに示した書き込み手順の変形例について説明する。
図22Cは、第4の実施形態に係る2ndステージでの書き込み手順の変形例を示すサブフローチャートである。なお、
図22Cに示す処理手順では、
図22Bで説明したステップS1650,S1670の処理が行われないところを除いて、ステップS1610~S1710の処理手順は
図22Bと同じである。
【0215】
図22Cに示す処理手順の場合、ステップS1610の前にステップS1601~S1609の処理が行われる。具体的には、まず、メモリコントローラ1から不揮発性メモリ2へLowerページおよびMiddleページの読み出しコマンドが入力され(ステップS1601)、これによりチップビジーとなる(ステップS1602)。
【0216】
この後、制御部22は、IDLであるLowerページデータおよびMiddleページデータの読み出しをVr1、Vr3、Vr5、Vr7のしきい値電圧で行う。そして、制御部22は、Vr1、Vr3、Vr5、Vr7のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS1603)。この後、チップレディーとなる(ステップS1604)。
【0217】
制御部22が読み出したLowerページデータおよびMiddleページデータを出力すると(ステップS1605)、このLowerページデータおよびMiddleページデータは、ECC回路14に送信される(ステップS1606)。これにより、ECC回路14がLowerページデータおよびMiddleページデータをECC訂正する(ステップS1607)。
【0218】
そして、メモリコントローラ1から不揮発性メモリ2へLowerページのデータおよびMiddleページデータの入力開始コマンドが入力される(ステップS1608)。これにより、ECC回路14が、不揮発性メモリ2へLowerページおよびMiddleページデータのデータを入力する(ステップS1609)。
【0219】
この後、ステップS1610~S1710の処理が行われる。なお、ステップS1670では、ECC回路14からのLowerページデータおよびMiddleページデータに基づいて、MiddleページおよびUpperページのプログラム先のVthが決定される。
【0220】
このように、本実施形態では、2ndステージのプログラムにおけるデータ入力は、Upperページの1ページだけである。しかし、この2ndステージではメモリセルのプログラムの目的地であるVthは、Lower/Middleページも含めた3ページ分のデータが必要である。そのため、この2ndステージのプログラムでは、前処理として、まずLowerページデータとMiddleページデータが読み出される。そして、読み出されたデータと、入力されたUpperページデータとが合成されることによって、Upperページのプログラム先のVthが決定される。
【0221】
図23は、第4の実施形態に係る外部プログラムコマンドのシーケンスの例を示す図である。
図23の(A)では、第4の実施形態に係る1stステージにおける外部プログラムコマンドのシーケンスを示し、
図24の(B)では、第4の実施形態に係る2ndステージにおける外部プログラムコマンドのシーケンスを示している。
【0222】
図23の(A)に示すように、1stステージでは、プログラム開始コマンド(80h)が入力された後、プログラム対象ブロック・ページのアドレス(Lowerページのアドレス)が入力され、その後にLowerページのプログラムデータが入力される。この後、プログラムコマンドの連結コマンド(1Ah)が入力され、同様のシーケンスで今度はMiddleページのプログラムデータが入力される。そして、最後にプログラム実行コマンド(10h)が入力されると、チップがビジーとなりメモリチップ内部でプログラムの動作が開始される。このようなプログラムコマンドの入力により、LowerページおよびMiddleページがプログラムされる。なお、LowerページのプログラムデータとMiddleページのプログラムデータの入力順序は何れが先であってもよい。
【0223】
図23の(B)に示すように、2ndステージでは、プログラム開始コマンド(80h)が入力された後、プログラム対象ブロック・ページのアドレス(Upperページのアドレス)が入力され、その後にUpperページのプログラムデータが入力される。そして、最後にプログラム実行コマンド(10h)が入力されると、チップがビジーとなりメモリチップ内部でプログラムの動作が開始される。このようなプログラムコマンドの入力により、IDLとしてのLowerページおよびMiddleページの読み出しが行われ、Upperページがプログラムされる。
【0224】
ここで、ページ読み出し処理について説明する。ページ読み出しの方法は、読み出し対象ページを含むワード線WLiに対するプログラムが、2ndステージ書き込み前の場合と2ndステージ完了後とによって異なる。
【0225】
2ndステージ書き込み前のワード線WLiの場合、記録されているデータはLowerページおよびMiddleページが有効である。このため、制御部22は、読み出しページがLowerページまたはMiddleページのときにはメモリセルからデータを読み出す。そして、制御部22は、そのUpperページの場合には、メモリセル読み出し動作は行わず、読み出しデータとして強制的に全て“1”を出力する制御を行う。
【0226】
一方、2ndステージまで完了したワード線WLiの場合、制御部22は、読み出しページがUpper/Middle/Lowerページの何れであってもメモリセルを読み出す。この場合、読み出すページが何れのページかによって必要な読み出し電圧が異なるので、制御部22は、選択されたページに従って必要な読み出しだけを実行する。
【0227】
図6に示したコーディングによれば、Lowerページデータが変化するしきい値状態間の境界は1つだけであるので、制御部22は、その境界で分離された2つの範囲の何れにしきい値が位置するかでデータを決定する。
【0228】
また、MiddleページまたはUpperページのデータが変化するしきい値状態間の境界は3つであるので、制御部22は、それらの境界で分離された4つの範囲の何れの中にしきい値が位置するかでデータを決定する。
【0229】
以下、ページ読み出しの具体的な処理手順について説明する。
図24Aは、第4の実施形態に係る記憶装置において2ndステージ書き込み前の場合のワード線でのページ読み出しの処理手順を示すフローチャートである。
図24Bは、第4の実施形態に係る記憶装置において2ndステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャートである。なお、
図24Aに示した処理のうち、
図12Aに示した処理と同様の処理については、その説明を省略する。また、
図24Bに示した処理のうち、
図12Bに示した処理と同様の処理については、その説明を省略する。
【0230】
図24Aに示すように、2ndステージ書き込み前のワード線WLiの場合、制御部22は、読み出しページを選択する(ステップS1810)。読み出しページがLowerページの場合(ステップS1810、Lower)、制御部22は、Vr3のしきい値電圧で読み出しを行う(ステップS1820)。そして、制御部22は、Vr3のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS1830)。
【0231】
また、読み出しページがMiddleページの場合(ステップS1810、Middle)、制御部22は、Vr1、Vr3およびVr5のしきい値電圧で読み出しを行う(ステップS1840,S1850,S1860)。そして、制御部22は、Vr1、Vr3およびVr5のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS1870)。
【0232】
また、読み出しページがUpperページの場合(ステップS1810、Upper)、制御部22は、メモリセルの出力データとして全て強制的に“1”を出力する制御を行う(ステップS1880)。
【0233】
また、
図24Bに示すように、2ndステージまでプログラムが完了したワード線WLiの場合、制御部22は、読み出しページを選択する(ステップS1910)。読み出しページがLowerページの場合(ステップS1910、Lower)、制御部22は、Vr4のしきい値電圧で読み出しを行う(ステップS1920)。そして、制御部22は、Vr4のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS1930)。
【0234】
また、読み出しページがMiddleページの場合(ステップS1910、Middle)、制御部22は、Vr1、Vr3およびVr6のしきい値電圧で読み出しを行う(ステップS1940,S1950,S1960)。そして、制御部22は、Vr1、Vr3およびVr6のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS1970)。
【0235】
また、読み出しページがUpperページの場合(ステップS1910、Upper)、制御部22は、Vr2、Vr5およびVr7のしきい値電圧で読み出しを行う(ステップS1980,S1990,S2000)。そして、制御部22は、Vr2、Vr5およびVr7のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS2010)。
【0236】
このように、
図21に示したようなしきい値のプログラム制御では、Lowerページデータの読み出しの場合、4レベルを上下で2レベルずつ分離できる読み出しレベルとして、Vr3が用いられる。また、Middleページデータの読み出しの場合、4レベルのどこか1つを特定しないとデータを決定できないデータ割付となっているので、読み出しレベルとして、Vr1、Vr3およびVr5の3レベルの読み出しが必要となる。
【0237】
一方、2ndステージまで完了したワード線WLiの場合、読み出しページはUpper/Middle/Lowerのうちの何れであってもメモリセルを読み出すが、どのページを読み出すかによって必要な読み出し電圧が異なるので、選択されたページに従った必要な読み出しだけが実行される。
【0238】
なお、ワード線WLiに対するプログラムが、1stステージと2ndステージとの何れまで完了したかは、メモリコントローラ1が管理・識別することが可能である。メモリコントローラ1が、プログラム制御を行っているので、メモリコントローラ1がその進捗状況を記録しておけば、メモリコントローラ1は、不揮発性メモリ2のどのアドレスがどのようなプログラム状態であるか容易に参照できる。この場合、メモリコントローラ1は、不揮発性メモリ2から読み出しを行う際、対象ページアドレスを含むワード線WLiがどのようなプログラム状態であるかを識別し、識別した状態に応じた読み出しコマンドを発行する。
【0239】
図25は、第4の実施形態に係る外部読み出しコマンドのシーケンスの例を示す図である。
図25の(A)では、第4の実施形態に係る記憶装置において1stステージまでプログラムが完了しているワード線WLiでの外部読み出しコマンドのシーケンスを示し、
図25の(B)では、第4の実施形態に係る記憶装置において2ndステージまでプログラムが完了しているワード線WLiでの外部読み出しコマンドのシーケンスを示している。
【0240】
図25の(A)に示すように、2ndステージ書き込み前のワード線WLiの場合、読み出し動作を実行するコマンドとして、最初に2ndステージ書き込み前の状態を示すコマンド(2Dh)が入力される。この後、読み出し開始コマンド(00h)が入力され、その後に読み出し対象ブロック・ページのアドレス(LowerページまたはMiddleページまたはUpperページのアドレス)が入力される。そして、最後に読出し実行コマンド(30h)が入力されると、チップがビジーとなり、メモリチップ内部で読み出しの動作が開始される。このようなプログラムコマンドの入力により、LowerページまたはMiddleページまたはUpperページからデータが読み出される。その後、チップがレディー状態となり、読み出されたデータが出力される。
【0241】
一方、
図25の(B)に示すように、2ndステージまでプログラムが完了したワード線WLiの場合、読み出し動作を実行するコマンドとして、最初に2ndステージまでの完了状態を示すコマンド(25h)が入力される。この後、読み出し開始コマンド(00h)が入力され、その後に読み出し対象ブロック・ページのアドレス(LowerページまたはMiddleページまたはUpperページのアドレス)が入力される。そして、最後に読出し実行コマンド(30h)が入力されると、チップがビジーとなり、メモリチップ内部で読み出しの動作が開始される。このようなプログラムコマンドの入力により、LowerページまたはMiddleページまたはUpperページからデータが読み出される。その後、チップがレディー状態となり、読み出されたデータが出力される。
【0242】
なお、第1の実施形態に対する第2の実施形態の変形と同様の変形を、本実施形態に適用してもよい。すなわち、本実施形態においても、ワード線WLn-1の2ndステージのプログラムと、ワード線WLnの1stステージのプログラムとがまとめて行なわれてもよい。
【0243】
また、本実施形態では、1-3-3データコーディングの種類は、Lowerでの境界数が1であるという制約が不要となる。このため、第1~第3の実施形態で用いた1-3-3データコーディング以外の1-3-3データコーディングが適用されてもよい。本実施形態の1-3-3データコーディングの具体的な状態は、特開2015-195071号公報の
図5~8,12~15,18,20,22,24,28~30などに示されたものである。
【0244】
このように第4の実施形態では、第1の実施形態と同様に、不揮発性メモリ2(3次元構造または2次元構造を有した3bit/CellのNANDメモリ)をプログラムする際に、1-3-3データコーディングを採用し、プログラムを2ステージ制とした。このように2ステージ制でプログラムされるので、データプログラムの際に入力するデータ量が減り、メモリコントローラ1に必要とされる書き込みバッファ量を抑制することが可能となる。また、不揮発性メモリ2のページ間のビットエラー率の偏りを低減できるとともに、ECCにかかるコストを下げることができる。
【0245】
(第5の実施形態)
つぎに、
図26~
図30を用いて第5の実施形態について説明する。第5の実施形態では、ワード線WLiに対するプログラムが、1stステージと2ndステージとの何れまで完了したかをメモリセル(フラグセル)に記録しておき、データ読み出しの際は、フラグセルに記録された情報に基づいて読み出しシーケンスを適切に制御する。
【0246】
なお、本実施形態でも第1の実施形態の
図6で説明したものと同じデータコーディングを用いる場合について説明する。また、以下の説明では、データを記憶するメモリセルアレイをデータ記憶セルという場合がある。また、1stステージと2ndステージとの何れまで完了したかを示す情報を完了情報という場合がある。本実施形態では、2ndステージまで完了している場合には、フラグセルにデータが書き込まれるので、このデータが2ndステージまで完了したことを示す完了情報となる。一方、2ndステージまで完了していない場合には、フラグセルにデータが書き込まれないので、この未書き込みのデータが2ndステージまで完了していないことを示す完了情報となる。
【0247】
図26は、フラグセルの構成を説明するための図である。本実施形態でも第1の実施形態の
図3で説明したメモリセルアレイと同様の構成を有したメモリセルアレイが用いられる。なお、
図26では、セレクトゲート線SGD0に接続されたメモリセルトランジスタMTなどを図示しており、セレクトゲート線SGD1~3に接続されたメモリセルトランジスタMTなどの図示を省略している。
【0248】
ビット線BL0~BLm-1に接続されたメモリセルトランジスタ(データ記憶セル)MTの横には、ダミーセルDCとフラグセルFCが配置されている。ダミーセルDCおよびフラグセルFCは、メモリセルトランジスタMTと同様の構成を有している。具体的には、ダミーセルDCは、セレクトゲート線SGD0、ワード線WL0~WL7、セレクトゲート線SGS、ソース線SL、ダミーセル用ビット線DBLなどに接続されている。また、フラグセルFCは、セレクトゲート線SGD0、ワード線WL0~WL7、セレクトゲート線SGS、ソース線SL、フラグセル用ビット線FBL0~FBLk-1などに接続されている。換言すると、ブロックBLK内のメモリセルのうちの一部がデータ記憶として用いられ、残りの一部がダミーセルDCおよびフラグセルFCとして用いられる。
【0249】
第1~第5の実施形態では、メモリコントローラ1が、ワード線WLiに対するプログラムが1stステージと2ndステージとの何れまで完了したかを管理・識別している。そして、データ読み出しの際には、メモリコントローラ1が、プログラムの完了状態に応じた読み出しコマンドを発行する。
【0250】
これに対し、本実施形態では、制御部22が、1stステージと2ndステージとの何れまで完了したかを示す完了情報を不揮発性メモリ2のフラグセルFCに記録する。そして、データ読み出しの際には、制御部22が、フラグセルFCに記録された完了情報に基づいて、読み出しシーケンスを制御する。
【0251】
フラグセルFCは、ワード線単位で設けられている。すなわち、ワード線WLi内の複数のメモリセルのうちの一部がフラグセルFCとして使用される。フラグセルFCは、ワード線WLi毎に1つでもよいが、多重化によってデータの信頼性を上げるために、複数個とするのが好ましい。また、隣接セル間干渉による信頼性悪化の影響を抑えるために、データを記憶するデータ記憶セルと、フラグセルFCとを物理的に隣接させない方が好ましい。たとえば、データ記憶セルと、フラグセルFCとの間にはデータ記録領域としては使用しないダミーセルDCなどを配置するのが好ましい。
【0252】
フラグセルFCに記録される完了情報は、2ndステージのプログラムが行われたか否かの2値情報である。制御部22は、2ndステージのプログラム時に同一ワード線WLi内のフラグセルFCに、2ndステージのプログラムが完了したことを示す完了情報を書き込む。制御部22は、完了情報を、例えばDレベル以上でフラグセルFCに書き込む。このときのしきい値分布の変化の様子について説明する。
【0253】
図27Aは、第5の実施形態に係るフラグセルへのプログラムを説明するための図である。
図27Aでは、2ndステージのプログラムの際に行われるフラグセルFCでのVth状態の遷移方法を示している。
【0254】
図27Aの(T51)は、プログラム前の初期状態である消去状態のフラグセルFCでのVth分布状態を示している。また、
図27Aの(T52)は、1stステージのプログラムが完了した時点でのVth分布状態を示している。また、
図27Aの(T53)は、2ndステージのプログラムが完了した時点でのVth分布状態を示している。本実施形態の制御部22は、2ndステージが完了する際に、
図27Aの(T53)に示すように、書き込み目的地のVth分布状態が領域D以上(Vr4以上)となるよう、フラグセルFCにプログラムする。
【0255】
フラグセルFCは、データセルと同時に2ndステージ時に書き込みが行なわれるが、フラグセルFC込みの閾値の遷移は、データセルよりも大きい。このため、フラグセルFCに隣接するデータセルの信頼性が悪化する場合は、フラグセルFCとデータセルとの間にダミーセルDCが設けられる。また、ダミーセルDCは、
図27Bに示すように2ndステージ時にErからA又はB又はCへ書き込まれてもよい。
【0256】
図27Bは、第5の実施形態に係るダミーセルへのプログラムを説明するための図である。
図27Bでは、2ndステージのプログラムの際に行われるダミーセルDCでのVth状態の遷移方法を示している。
【0257】
図27Bの(T61)は、プログラム前の初期状態である消去状態のダミーセルDCでのVth分布状態を示している。また、
図27Bの(T62)は、1stステージのプログラムが完了した時点でのVth分布状態を示している。また、
図27Aの(T53)は、2ndステージのプログラムが完了した時点でのVth分布状態を示している。本実施形態の制御部22は、2ndステージが完了する際に、
図27Bの(T63)に示すように、書き込み目的地のVth分布状態が領域C以下(Vr4以下)となるよう、ダミーセルDCにプログラムする。
【0258】
図28は、第5の実施形態に係る2ndステージでの書き込み手順を示すフローチャートである。なお、
図9Cで説明した処理と同様の処理については、その説明を省略する。第5の実施形態に係る2ndステージのステップS2110~S2180は、
図9Cに示した第1の実施形態に係る2ndステージのステップS310~S380と同じである。
【0259】
本実施形態では、Middleページ、UpperページおよびフラグセルFCへのプログラム先のVthが決定された後(ステップS2180)、決定されたVthを用いて、データ記憶セル(Middleページ、Upperページ)およびフラグセルFCへのデータ書き込みが行われる。
【0260】
第5の実施形態に係る2ndステージでは、Middleページ、UpperページおよびフラグセルFCへのデータ書き込みの際に、1~複数回のプログラム電圧パルスが印加される。(ステップS2190)。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、Middleページ、UpperページおよびフラグセルFCに対してデータ読み出しが行なわれる(ステップS2200)。
【0261】
さらに、MiddleページおよびUpperページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かが確認される(ステップS2210)。MiddleページおよびUpperページにおけるデータのフェイルビット数がクライテリア以上である場合(ステップS2210、No)、ステップS2190~S2210の処理が繰り返される。この場合において、フラグセルFCに対するステップS2190,S2210の処理は省略される。
【0262】
そして、MiddleページおよびUpperページにおけるデータのフェイルビット数がクライテリアよりも小さくなると(ステップS2210、Yes)、フラグセルFCにおけるデータのフェイルビット数がクライテリアよりも小さいか否かが確認される(ステップS2220)。
【0263】
フラグセルFCにおけるデータのフェイルビット数がクライテリア以上である場合(ステップS2220、No)、ステップS2190~S2220の処理が繰り返される。この場合において、MiddleページおよびUpperページに対するステップS2190~S2210の処理は省略される。
【0264】
そして、フラグセルFCにおけるデータのフェイルビット数がクライテリアよりも小さくなると(ステップS2220、Yes)、チップレディーとなる(ステップS2230)。
【0265】
このように、本実施形態のステップS2190(プログラム電圧パルスを印加するステップ)では、データを書き込むデータ記憶セルに加え、フラグセルFCに対してもプログラム電圧パルスが同時に印加される。そして、この後のデータ読み出しにおいても、データ記憶セルとフラグセルFCとがプログラムされたか否かを確認するために、データ記憶セル内のデータとフラグセルFC内のデータ(完了情報)とが読み出される。
【0266】
その後、データ記憶セルおよびフラグセルFCから読み出されたデータと、期待値に対応するクライテリアとが比較される。このとき、フェイルしたビットの数がカウントされるが、データ記憶セル内でフェイルしたデータとフラグセルFC内でフェイルしたデータとは、別々にカウントされ、それぞれのクライテリアと比較される。何れか一方でもクライテリアを満たさない場合には、再びプログラム電圧パルスの印加手順に戻る。何れの比較においてもクライテリアを満たした場合には、チップをレディーとして終了となる。
【0267】
第1の実施形態におけるページ読み出しでは、読み出し対象ページを含むワード線WLiに対するプログラムが、1stステージと2ndステージとの何れまで完了したかによって、別々の処理順が用いられた。そして、何れの処理手順を実施するかは外部読み出しコマンドに基づいて決定されていた。しかし、本実施形態では、1stステージと2ndステージとの何れまで完了したかは、メモリコントローラ1からのコマンドで指示されるのではなく、フラグセルFC内の完了情報に従って判断される。すなわち、制御部22は、読み出しコマンドをメモリコントローラ1から受信すると、まずフラグセルFC内のデータである完了情報を読み出す。そして、制御部22は、フラグセルFCが書き込み済みであるか否かに応じて、1stステージと2ndステージとの何れまで完了しているかを判定する。
【0268】
上述したとおり、本実施形態では、フラグセルFCへの書き込みレベルをDレベル以上としている。このため、フラグセルFCの読み出しは、Vr1,Vr2,Vr3またはVr4のうちの任意の1つの読み出し電圧で可能である。したがって、制御部22は、読み出し対象ページがLowerページ、MiddleページまたはUpperページの何れであっても、2ndステージのプログラムまで完了している場合に必要な複数の読み出しレベルの最も低い読み出しレベルを使用して読み出せば、フラグセルFCの読み出しが可能である。そして、もしフラグセルFCが書き込み済みであると判定されたならば、制御部22は、2ndステージのプログラムまで完了していると判断し、フラグセルFC以外のメモリセルから、残りの読み出しレベルで読み出しを実行する。
【0269】
一方、フラグセルFCが未書き込みと判定された場合、Lowerページが読み出し対象であるなら、制御部22は、Vr1でデータを読み直す。また、Middle/Upperページが読み出し対象であるなら、制御部22は、これ以降の読み出しは不要と判断し、出力データを強制的に“1”とする。
【0270】
フラグセルFCの読み出し結果(完了情報)からフラグセルFCが書き込み済みか否かを判定する際に、制御部22は、フラグセルFCが1個であるならば、そのセル自身が書き込み済みであるか否かを判定すればよい。また、フラグセルFCのデータの信頼度を上げるためにフラグセルFCが複数個設けられている場合がある。この場合、制御部22は、たとえば、複数個のフラグセルFCのうちのあるフラグセルFCから、クライテリアの数以上のセルが書き込みされたことを示す完了情報が読み出された場合、フラグセルFCは書き込み済みであると判断する。
【0271】
ここで、ページ読み出しの具体的な処理手順について説明する。
図29は、第5の実施形態に係るページ読み出しの処理手順を示すフローチャートである。なお、
図29に示した処理のうち、
図12Aまたは
図24Aに示した処理と同様の処理については、その説明を省略する。
【0272】
図29に示すように、制御部22は、読み出しページを選択する(ステップS2310)。読み出しページがLowerページの場合(ステップS2310、Lower)、制御部22は、Vr4のしきい値電圧で読み出しを行う(ステップS2320)。
【0273】
そして、制御部22は、フラグセルFCに完了情報が書き込まれているか否かを判定する(ステップS2330)。フラグセルFCに完了情報が書き込み済みでない場合(ステップS2330、No)、制御部22は、Vr1のしきい値電圧で読み出しを行う(ステップS2340)。そして、制御部22は、Vr1のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS2350)。
【0274】
一方、フラグセルFCに完了情報が書き込み済みである場合(ステップS2330、Yes)、制御部22は、Vr4のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS2360)。
【0275】
また、読み出しページがMiddleページの場合(ステップS2310、Middle)、制御部22は、Vr1のしきい値電圧で読み出しを行う(ステップS2370)。そして、制御部22は、フラグセルFCに完了情報が書き込まれているか否かを判定する(ステップS2380)。フラグセルFCに完了情報が書き込み済みでない場合(ステップS2380、No)、制御部22は、データ記憶セル(Middleページ)の出力データとして全て強制的に“1”を出力する制御を行う(ステップS2390)。
【0276】
一方、フラグセルFCに完了情報が書き込み済みである場合(ステップS2380、Yes)、制御部22は、Vr3およびVr6のしきい値電圧で読み出しを行う(ステップS2400,S2410)。そして、制御部22は、Vr1、Vr3およびVr6のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS2420)。
【0277】
また、読み出しページがUpperページの場合(ステップS2430、Upper)、制御部22は、Vr2のしきい値電圧で読み出しを行う(ステップS2370)。そして、制御部22は、フラグセルFCに完了情報が書き込まれているか否かを判定する(ステップS2440)。フラグセルFCに完了情報が書き込み済みでない場合(ステップS2440、No)、制御部22は、データ記憶セル(Upperページ)の出力データとして全て強制的に“1”を出力する制御を行う(ステップS2450)。
【0278】
一方、フラグセルFCに完了情報が書き込み済みである場合(ステップS2440、Yes)、制御部22は、Vr5およびVr7のしきい値電圧で読み出しを行う(ステップS2460,S2470)。そして、制御部22は、Vr2、Vr5およびVr7のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“0”または“1”に決定する(ステップS2780)。
【0279】
図30は、第5の実施形態に係る外部読み出しコマンドのシーケンスの例を示す図である。本実施形態は、読み出しコマンドは1種類だけである。
図30に示すように、読み出し動作を実行するコマンドとして、読み出し開始コマンド(00h)が入力され、その後に読み出し対象ブロック・ページのアドレス(LowerページまたはMiddleページまたはUpperページのアドレス)が入力される。そして、最後に読出し実行コマンド(30h)が入力されると、チップがビジーとなり、メモリチップ内部で読み出しの動作が開始される。このようなプログラムコマンドの入力により、LowerページまたはMiddleページまたはUpperページからデータが読み出される。その後、チップがレディー状態となり、読み出されたデータが出力される。
【0280】
このように第5の実施形態では、フラグセルFCに完了情報を記憶させておくので、1stステージと2ndステージとの何れまで完了したかに依らず、同じ処理順でページデータを読み出すことが可能となる。
【0281】
(第6の実施形態)
つぎに、
図31~
図36を用いて第6の実施形態について説明する。第6の実施形態では、3次元構造または2次元構造を有した4bit/Cell(QLC:Quadruple Level Cell)の不揮発性メモリ2に対して2ステージでページ単位の書き込みを実施する。
【0282】
図31は、第6の実施形態のしきい値領域の一例を示す図である。
図31では、4bit/Cellの不揮発性メモリ2のしきい値分布例を示している。
図31の、Er1、A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1と記載した16個の分布は、16個のしきい値領域内のそれぞれのしきい値分布を示している。このように、本実施形態の各メモリセルは、15個の境界によって仕切られたしきい値分布を有している。
図31の横軸はしきい値電圧を示し、縦軸はメモリセル数(セル数)の分布を示している。
【0283】
本実施形態では、しきい値電圧がVr11以下となる領域を領域Er1とよび、しきい値電圧がVr11より大きくVr12以下となる領域を領域A1とよび、しきい値電圧がVr12より大きくVr13以下となる領域を領域B1とよび、しきい値電圧がVr13より大きくVr14以下となる領域を領域C1とよぶ。また、本実施形態では、しきい値電圧がVr14より大きくVr15以下となる領域を領域D1とよび、しきい値電圧がVr15より大きくVr16以下となる領域を領域E1とよび、しきい値電圧がVr16より大きくVr17以下となる領域を領域F1とよび、しきい値電圧がVr17より大きくVr18以下となる領域を領域G1とよぶ。
【0284】
また、本実施形態では、しきい値電圧がVr18より大きくVr19以下となる領域を領域H1とよび、しきい値電圧がVr19より大きくVr20以下となる領域を領域I1とよび、しきい値電圧がVr20より大きくVr21以下となる領域を領域J1とよび、しきい値電圧がVr21より大きくVr22以下となる領域を領域K1とよぶ。また、本実施形態では、しきい値電圧がVr22より大きくVr23以下となる領域を領域L1とよび、しきい値電圧がVr23より大きくVr24以下となる領域を領域M1とよび、しきい値電圧がVr24より大きくVr25以下となる領域を領域N1とよび、しきい値電圧がVr25より大きい領域を領域O1とよぶ。
【0285】
また、領域Er1,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1に対応するしきい値分布をそれぞれ分布Er1,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1(第1~第16の分布)と呼ぶ。Vr11~Vr25は、各領域の境界となるしきい値電圧である。
【0286】
以下の
図32,34,36は、4bit/Cellのメモリセルに対する各プログラムステージ後のしきい値分布を示している。また、
図32に示すしきい値分布と
図33に示すデータコーディングは、1-4-5-5コーディングに対応している。1-4-5-5コーディングは、ビット値を判定するための境界数が、Lowerページ、Middleページ、Upperページ、Higherページでそれぞれ1,4,5,5である。
【0287】
図32は、第6の実施形態におけるプログラム後のしきい値分布を示す第1例の図である。
図32の(T71)は、プログラム前の初期状態である消去状態のしきい値分布を示している。
図32の(T72)は、1stステージのプログラム後のしきい値分布を示している。
図32の(T73)は、2ndステージのプログラム後のしきい値分布を示している。
【0288】
図32の(T71)に示すように、NANDメモリセルアレイ23の全メモリセルは、未書き込みの状態では分布Erである。不揮発性メモリ2の制御部22は、
図32の(T72)に示すように、1stステージのプログラムでは、LowerページおよびMiddleページに書き込むビット値に応じて、メモリセルごとに分布Erのままとする、または電荷を注入して分布Erよりも上の分布に移動させる。これにより、メモリセルは、LowerページデータおよびMiddleページデータによって、4値のレベルにプログラムされる。
【0289】
また、
図32の(T73)に示すように、2ndステージのプログラムでは、データの書き込みにはUpperページとHigherページの2ページが必要である。そして、不揮発性メモリ2の制御部22は、2ndステージのプログラム後のしきい値分布を、各隣接する分布が分離された最終状態で16値のレベルとなるようにプログラムする。この場合、全てのページデータの読み出しが可能である。
【0290】
図33は、
図32に示すしきい値分布に対応するデータコーディングを示す図である。
図33に示すデータコーディングでは、例えば、しきい値電圧がEr1領域内にあるメモリセルは、Upper,Middle,Lower,Higherページに対応するビットのデータ値として“1111”を記憶している状態である。また、しきい値電圧がA1領域内にあるメモリセルは“1011”を記憶している状態である。
【0291】
また、以下の
図34に示すしきい値分布と
図35に示すデータコーディングは、1-6-4-4コーディングに対応している。1-6-4-4コーディングは、ビット値を判定するための境界数が、Lowerページ、Middleページ、Upperページ、Higherページでそれぞれ1,6,4,4である。
【0292】
図34は、第6の実施形態におけるプログラム後のしきい値分布を示す第2例の図である。
図34の(T81)は、プログラム前の初期状態である消去状態のしきい値分布を示している。
図34の(T82)は、1stステージのプログラム後のしきい値分布を示している。
図34の(T83)は、2ndステージのプログラム後のしきい値分布を示している。
【0293】
図34の(T81)に示すように、NANDメモリセルアレイ23の全メモリセルは、未書き込みの状態では分布Erである。不揮発性メモリ2の制御部22は、
図34の(T82)に示すように、1stステージのプログラムでは、LowerページおよびMiddleページに書き込むビット値に応じて、メモリセルごとに分布Erのままとする、または電荷を注入して分布Erよりも上の分布に移動させる。これにより、メモリセルは、LowerページデータおよびMiddleページデータによって、4値のレベルにプログラムされる。
【0294】
また、
図34の(T83)に示すように、2ndステージのプログラムでは、データの書き込みにはUpperページとHigherページの2ページが必要である。そして、不揮発性メモリ2の制御部22は、2ndステージのプログラム後のしきい値分布を、各隣接する分布が分離された最終状態で16値のレベルとなるようにプログラムする。この場合、全てのページデータの読み出しが可能である。
【0295】
図35は、
図34に示すしきい値分布に対応するデータコーディングを示す図である。
図35に示すデータコーディングでは、例えば、しきい値電圧がEr1領域内にあるメモリセルは、Upper,Middle,Lower,Higherページに対応するビットのデータ値として“1111”を記憶している状態である。また、しきい値電圧がA1領域内にあるメモリセルは“0111”を記憶している状態である。
【0296】
また、以下の
図36に示すしきい値分布と
図37に示すデータコーディングは、1-2-6-6コーディングに対応している。1-2-6-6コーディングは、ビット値を判定するための境界数が、Lowerページ、Middleページ、Upperページ、Higherページでそれぞれ1,2,6,6である。
【0297】
図36は、第6の実施形態におけるプログラム後のしきい値分布を示す第3例の図である。
図36の(T91)は、プログラム前の初期状態である消去状態のしきい値分布を示している。
図36の(T92)は、1stステージのプログラム後のしきい値分布を示している。
図36の(T93)は、2ndステージのプログラム後のしきい値分布を示している。
【0298】
図36の(T91)に示すように、NANDメモリセルアレイ23の全メモリセルは、未書き込みの状態では分布Erである。不揮発性メモリ2の制御部22は、
図36の(T92)に示すように、1stステージのプログラムでは、LowerページおよびMiddleページに書き込むビット値に応じて、メモリセルごとに分布Erのままとする、または電荷を注入して分布Erよりも上の分布に移動させる。これにより、メモリセルは、LowerページデータおよびMiddleページデータによって、4値のレベルにプログラムされる。
【0299】
また、
図36の(T93)に示すように、2ndステージのプログラムでは、データの書き込みにはUpperページとHigherページの2ページが必要である。そして、不揮発性メモリ2の制御部22は、2ndステージのプログラム後のしきい値分布を、各隣接する分布が分離された最終状態で16値のレベルとなるようにプログラムする。この場合、全てのページデータの読み出しが可能である。
【0300】
図37は、
図36に示すしきい値分布に対応するデータコーディングを示す図である。
図37に示すデータコーディングでは、例えば、しきい値電圧がEr1領域内にあるメモリセルは、Upper,Middle,Lower,Higherページに対応するビットのデータ値として“1111”を記憶している状態である。また、しきい値電圧がB1領域内にあるメモリセルは“0011”を記憶している状態である。
【0301】
本実施形態においても、第1~第5の実施形態と同様の処理によって、プログラムが実行され、各ページデータの読み出しが行われる。
【0302】
このように第6の実施形態では、3次元構造または2次元構造を有した4bit/Cellの不揮発性メモリ2に対して2ステージでページ単位の書き込みを実施するので、第1~第5の実施形態と同様の効果を得ることが可能となる。
【0303】
なお、第1~第6の実施形態が組み合されてもよい。例えば、第4の実施形態や第5の実施形態に、第2~第4の実施形態の少なくとも1つが組み合されてもよい。
【0304】
また、第1~第6の実施形態では、不揮発性メモリ2が、NANDメモリを用いて構成されている場合について説明したが、他のタイプのメモリが用いられてもよい。また、第1~第5の実施形態では、不揮発性メモリ2が1-3-3コーディングを適用する場合について説明したが、不揮発性メモリ2が適用するコーディングは、1-3-3コーディングに限らない。例えば、不揮発性メモリ2は、1-2-4コーディングまたは2-3-2コーディングを適用してもよい。
【0305】
また、
図7、
図12、
図17、
図19、
図29で説明した、2ndステージ書き込み前と2ndステージ書き込み後の読み出しレベル(Vr1、Vr4)は、2ndステージ書き込み後(T3)の読出しレベル(Vr1,Vr4)と若干異なっていてもよい。また、
図21、
図24で説明した、2ndステージ書き込み前と2ndステージ書き込み後の読み出しレベル(Vr1、Vr3、Vr5、Vr7)は、2ndステージ書き込み後(T3)の読出しレベル(Vr1、Vr3、Vr5、Vr7)と若干異なっていてもよい。
【0306】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0307】
1…メモリコントローラ、2…不揮発性メモリ、11…RAM、12…プロセッサ、22…制御部、23…NANDメモリセルアレイ、FC…フラグセル、MT…メモリセルトランジスタ。