(57)【要約】【課題】セル間相互干渉を避け、書き込みバッファの容量を削減し、ビットエラー率の偏りを抑制する。【解決手段】メモリシステム内のメモリコントローラは、メモリセルにおけるしきい値領域が、第１ビット、第２ビット、第４ビットのデータに応じて、データが消去された消去状態を示す第１７のしきい値領域と、第１７のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第１８乃至第２４のしきい値領域のいずれかのしきい値領域となるように第１プログラムを不揮発性メモリに行わせ、メモリセルにおけるしきい値領域が、第３ビットのデータに応じて、第１７乃至第２４のしきい値領域のうちいずれかのしきい値領域から第１乃至第１６のしきい値領域のうちの２個のしきい値領域内のいずれかのしきい値領域となるように第２プログラムを不揮発性メモリに行わせ、第２プログラムを不揮発性メモリに行わせる場合に、第２ビットのデータと第３ビットのデータとを不揮発性メモリへ入力する。【選択図】図１
2022002160.tif 000002
【特許請求の範囲】
【請求項１】
各々が、データが消去された消去状態を示す第１のしきい値領域と、前記第１のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第２乃至第１６のしきい値領域とを含む１６個のしきい値領域により、第１乃至第４ビットで表わせられる４ビットのデータを記憶可能な複数のメモリセルを有する不揮発性メモリと、
前記第１ビット、前記第２ビット、前記第４ビットのデータを書き込む第１プログラムを前記不揮発性メモリに行わせた後に、前記第３ビットのデータを書き込む第２プログラムを前記不揮発性メモリに行わせるメモリコントローラと、
を備え、
前記第１乃至第１６のしきい値領域のうち隣接するしきい値領域間に存在する１５個の境界のうち、前記第１ビットのデータの値の判定に用いられる第１の境界の数、前記第２ビットのデータの値の判定に用いられる第２の境界の数、前記第３ビットのデータの値の判定に用いられる第３の境界の数、前記第４ビットのデータの値の判定に用いられる第４の境界の数のうち最大の値は５であり、二番目に大きな値は４であり、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第１ビット、前記第２ビット、前記第４ビットのデータに応じて、データが消去された消去状態を示す第１７のしきい値領域と、前記第１７のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第１８乃至第２４のしきい値領域のいずれかのしきい値領域となるように前記第１プログラムを前記不揮発性メモリに行わせるように構成され、  前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第３ビットのデータに応じて、前記第１７乃至第２４のしきい値領域のうちいずれかのしきい値領域から前記第１乃至第１６のしきい値領域のうちの２個のしきい値領域内のいずれかのしきい値領域となるように前記第２プログラムを前記不揮発性メモリに行わせるように構成され、
前記２個のしきい値領域のうち電圧レベルが最低のしきい値領域と電圧レベルが最高のしきい値領域との間にあるしきい値領域の個数が２個以内であり、
前記メモリコントローラは、前記第２プログラムを前記不揮発性メモリに行わせる場合に、前記第２ビットのデータと前記第３ビットのデータとを前記不揮発性メモリへ入力するように構成される、メモリシステム。
【請求項２】
前記メモリコントローラは、前記第１乃至第１６のしきい値領域のうち隣接するしきい値領域間に存在する１５個の境界のうち、前記第１ビットの値が異なる前記境界の数、前記第２ビットの値が異なる前記境界の数、前記第３ビットの値が異なる前記境界の数、及び前記第４ビットの値が異なる前記境界の数が順に（１、４、５、５）、（１、５、４、５）、又は（３、３、４、５）となるように前記第１プログラム及び前記第２プログラムを前記不揮発性メモリに行わせる、請求項１に記載のメモリシステム。
【請求項３】
各々が、データが消去された消去状態を示す第１のしきい値領域と、前記第１のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第２乃至第１６のしきい値領域とを含む１６個のしきい値領域により、第１乃至第４ビットで表わせられる４ビットのデータを記憶可能な複数のメモリセルを有する不揮発性メモリと、
前記第１ビット、前記第２ビット、前記第４ビットのデータを書き込む第１プログラムを前記不揮発性メモリに行わせた後に、前記第３ビットのデータを書き込む第２プログラムを前記不揮発性メモリに行わせるメモリコントローラと、
を備え、
前記第１乃至第１６のしきい値領域のうち隣接するしきい値領域間に存在する１５個の境界のうち、前記第１ビットのデータの値の判定に用いられる第１の境界の数、前記第２ビットのデータの値の判定に用いられる第２の境界の数、前記第３ビットのデータの値の判定に用いられる第３の境界の数、前記第４ビットのデータの値の判定に用いられる第４の境界の数は順に（３、５、２、５）であり、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第１ビット、前記第２ビット、前記第４ビットのデータに応じて、データが消去された消去状態を示す第１７のしきい値領域と、前記第１７のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第１８乃至第２４のしきい値領域のいずれかのしきい値領域となるように前記第１プログラムを前記不揮発性メモリに行わせるように構成され、  前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第３ビットのデータに応じて、前記第１７乃至第２４のしきい値領域のうちいずれかのしきい値領域から前記第１乃至第１６のしきい値領域のうちの２個のしきい値領域内のいずれかのしきい値領域となるように前記第２プログラムを前記不揮発性メモリに行わせるように構成され、
前記２個のしきい値領域のうち電圧レベルが最低のしきい値領域と電圧レベルが最高のしきい値領域との間にあるしきい値領域の個数が２個以内であり、
前記メモリコントローラは、前記第２プログラムを前記不揮発性メモリに行わせる場合に、前記第２ビットのデータと前記第３ビットのデータとを前記不揮発性メモリへ入力するように構成される、メモリシステム。
【請求項４】
前記メモリコントローラは、前記第１７乃至第２４のしきい値領域のうち前記第２ビットのデータの値が異なる２つのしきい値領域の間の電圧レベルの差が、前記第１ビットのデータの値が異なる２つのしきい値領域の間の電圧レベルの差よりも小さく、かつ前記第４ビットのデータの値が異なる２つのしきい値領域の間の電圧レベルの差よりも小さくなるように前記第１プログラムを前記不揮発性メモリに行わせる請求項１乃至３のいずれか一項に記載のメモリシステム。
【請求項５】
前記メモリコントローラは、前記第２ビットのデータの値が異なる前記第１プログラム時の２つのしきい値領域の間隔よりも、前記２つのしきい値領域に対して前記第３ビットのデータにより前記第２プログラムを行って得られる４つのしきい値領域のうち隣接するしきい値領域の間隔が広くなるように、前記第２プログラムを前記不揮発性メモリに行わせる、請求項４に記載のメモリシステム。
【請求項６】
前記第１ビットは最下位のLowerビット、前記第２ビットは二番目に小さいMiddleビット、前記第３ビットは二番目に大きいUpperビット、前記第４ビットは最上位のTopビットである、請求項１乃至５のいずれか一項に記載のメモリシステム。
【請求項７】
前記第１乃至第４ビットのデータを記憶する揮発性の第１記憶部を備え、
前記第１記憶部に記憶される前記第１乃至第４ビットのうち、前記第１プログラム及び前記第２プログラム時に重複して入力されるビットのデータは、前記第２プログラムを開始した以降に破棄又は無効化可能となり、それ以外のビットのデータは、前記第１プログラムを開始した以降に破棄又は無効化可能となる、請求項１乃至６のいずれか一項に記載のメモリシステム。
【請求項８】
前記第１乃至第４ビットのデータを記憶する揮発性の第１記憶部と、
前記第１乃至第４ビットのうち、前記第１プログラム及び前記第２プログラムで重複して入力されるビットのデータを記憶する不揮発性の第２記憶部と、を備え、
前記第１記憶部に記憶される前記第１乃至第４ビットのデータは、前記第１プログラムを開始した以降に破棄又は無効化可能となり、
前記第２記憶部に記憶される前記第１乃至第４ビットのうち、前記第１プログラム及び前記第２プログラムで重複して入力されるビットのデータは、前記第１プログラムを開始する前に前記第２記憶部に記憶され、前記第２プログラムを開始した以降に破棄又は無効化可能となる、請求項１乃至６のいずれか一項に記載のメモリシステム。
【請求項９】
前記第２記憶部は、ワード線を単位として設けられる、請求項８に記載のメモリシステム。
【請求項１０】
前記不揮発性メモリ内の前記複数のメモリセルは、第１ワード線に接続された複数の第１メモリセルと、前記第１ワード線に隣接する第２ワード線に接続された複数の第２メモリセルと、を有し、
前記メモリコントローラは、前記複数の第１メモリセルに対して前記第１プログラムを行わせた後、前記複数の第２メモリセルに対して前記第１プログラムを行わせ、その後に前記複数の第１メモリセルに対して前記第２プログラムを行わせる、請求項１乃至９のいずれか一項に記載のメモリシステム。
【請求項１１】
前記不揮発性メモリは、２以上の前記メモリセルがそれぞれ接続された第１ワード線及び第２ワード線を少なくとも有し、
前記メモリコントローラは、前記第１ワード線に接続されたメモリセルに対する前記第１プログラムと、前記第２ワード線に接続されたメモリセルに対する前記第２プログラムとの連続した実行を、連続したコマンド及びデータ入力で前記不揮発性メモリに指示する、請求項１乃至９のいずれか一項に記載のメモリシステム。
【請求項１２】
前記不揮発性メモリは、前記第１プログラムによりプログラムされたデータを読み出して得られるデータと、前記第１プログラム及び前記第２プログラムで重複して入力される前記第２ビットのデータと、前記第２プログラムでプログラムされる前記第３ビットの入力データとに基づいて、前記第２プログラムでプログラムされるビットのデータのしきい値電圧を決定する制御部を備える、請求項１乃至１１のいずれか一項に記載のメモリシステム。
【請求項１３】
前記第１プログラムによりプログラムされたデータを読み出して誤り訂正を行う誤り訂正部を備え、
前記制御部は、前記誤り訂正部で誤り訂正後のデータと、前記第２ビットのデータと、前記第３ビットの入力データとに基づいて、前記第２プログラムでプログラムされるビットのデータの前記しきい値電圧を決定する、請求項１２に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリでは、メモリセルに複数ビットからなる多値データを書き込むのが一般的であり、メモリセルに３ビットからなる多値データを書き込むＴＬＣ（Triple Level Cell）技術が実用化されている。今後は、４ビットからなる多値データを書き込むＱＬＣ（Quadruple Level Cell）技術が主流になると考えられている。
【０００３】
ＱＬＣでは、セル間相互干渉を避けるため、第１のメモリセルに４ビットデータを同時に書き込んだ後、隣接セルにも同様に４ビットデータを同時に書き込み、その後に、再び第１のメモリセルに４ビットデータを同時に再書き込みする手法が検討されている。しかしながら、この手法では、再書き込みが完了するまで４ビットデータをメモリコントローラ内の書込みバッファに保持しておく必要がある。
【０００４】
近年のＮＡＮＤメモリは３次元化されており、必要とされる書き込みバッファのメモリ容量が増大し、書込みバッファを内蔵したメモリコントローラのコストが高くなるという問題がある。このため、３次元の不揮発性メモリにおいても、メモリコントローラの書き込みバッファ量を低減する対策が必要である。
【０００５】
セル間相互干渉を避けつつ、メモリコントローラの書き込みバッファ量を削減する対策として、メモリセルに各ビットのデータを書き込む際に、２つのステージに分けて書き込むことで、全ビットデータの再書き込みを不要とする手法が知られている。
【０００６】
しかしながら、この手法では、メモリセルに各ビットデータを書き込む際のビットエラー率の偏りが大きいという問題がある。
【０００７】
ＱＬＣ技術の信頼性を向上するには、セル間相互干渉を避け、かつメモリコントローラ内の書き込みバッファの容量を削減し、かつ各ビットデータを書き込む際のビットエラー率の偏りを抑制する必要がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１８−５９５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本開示の一態様では、セル間相互干渉を避け、かつメモリコントローラ内の書き込みバッファの容量を削減し、かつ各ビットデータを書き込む際のビットエラー率の偏りを抑制できるメモリシステムを提供するものである。
【課題を解決するための手段】
【００１０】
本実施形態によれば、各々が、データが消去された消去状態を示す第１のしきい値領域と、前記第１のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第２乃至第１６のしきい値領域とを含む１６個のしきい値領域により、第１乃至第４ビットで表わせられる４ビットのデータを記憶可能な複数のメモリセルを有する不揮発性メモリと、
前記第１ビット、前記第２ビット、前記第４ビットのデータを書き込む第１プログラムを前記不揮発性メモリに行わせた後に、前記第３ビットのデータを書き込む第２プログラムを前記不揮発性メモリに行わせるメモリコントローラと、
を備え、
前記第１乃至第１６のしきい値領域のうち隣接するしきい値領域間に存在する１５個の境界のうち、前記第１ビットのデータの値の判定に用いられる第１の境界の数、前記第２ビットのデータの値の判定に用いられる第２の境界の数、前記第３ビットのデータの値の判定に用いられる第３の境界の数、前記第４ビットのデータの値の判定に用いられる第４の境界の数のうち最大の値は５であり、二番目に大きな値は４であり、
前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第１ビット、前記第２ビット、前記第４ビットのデータに応じて、データが消去された消去状態を示す第１７のしきい値領域と、前記第１７のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第１８乃至第２４のしきい値領域のいずれかのしきい値領域となるように前記第１プログラムを前記不揮発性メモリに行わせるように構成され、  前記メモリコントローラは、前記メモリセルにおけるしきい値領域が、前記第３ビットのデータに応じて、前記第１７乃至第２４のしきい値領域のうちいずれかのしきい値領域から前記第１乃至第１６のしきい値領域のうちの２個のしきい値領域内のいずれかのしきい値領域となるように前記第２プログラムを前記不揮発性メモリに行わせるように構成され、
前記２個のしきい値領域のうち電圧レベルが最低のしきい値領域と電圧レベルが最高のしきい値領域との間にあるしきい値領域の個数が２個以内であり、
前記メモリコントローラは、前記第２プログラムを前記不揮発性メモリに行わせる場合に、前記第２ビットのデータと前記第３ビットのデータとを前記不揮発性メモリへ入力するように構成される、メモリシステムが提供される。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態によるメモリシステムの概略構成を示すブロック図。
【図２】本実施形態の不揮発性メモリの内部構成の一例を示すブロック図。
【図３】３次元構造のＮＡＮＤメモリセルアレイの一例を示す回路図。
【図４】３次元構造のＮＡＮＤメモリのＮＡＮＤメモリセルアレイの一部領域の断面図。
【図５】第１の実施形態のしきい値領域の一例を示す図。
【図６Ａ】第１の実施形態のデータコーディングの一例を示す図。
【図６Ｂ】第１の実施形態のデータコーディングの他の一例を示す図。
【図７】第１の実施形態におけるプログラム後のしきい値領域を示す図。
【図８Ａ】第１の実施形態のプログラム順序の第１例を示す図。
【図８Ｂ】第１の実施形態のプログラム順序の第２例を示す図。
【図８Ｃ】第１の実施形態のプログラム順序の第３例を示す図。
【図９】第１の実施形態による１ブロック分全体の書き込み手順の第１例を示すフローチャート。
【図１０】第１の実施形態による１ｓｔステージにおける書き込み手順を示すフローチャート。
【図１１】２ｎｄステージの書込み手順の第１例を示すフローチャート。
【図１２】複数回数の読み出し結果の多数決処理を説明するための図。
【図１３】第１の実施形態に係る２ｎｄステージでの書き込み手順の変形例を示すフローチャート。
【図１４Ａ】４−３−４−４データコーディングを採用したFoggy-Fineプログラムにおける書き込みバッファのデータ量を説明する図。
【図１４Ｂ】本実施形態における書き込みバッファのデータ量を説明する図。
【図１５】１ｓｔステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャート。
【図１６Ａ】２ｎｄステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャート。
【図１６Ｂ】一変形例によるページ読み出し処理に適したデータコーディングを示す図。
【図１６Ｃ】一変形例による読出し処理手順を示すフローチャート。
【図１６Ｄ】選択ワード線、ReadyBusy信号線、出力データ線の電圧波形図。
【図１７】１−５−４−５データコーディングの一例を示す図。
【図１８】１−５−４−５データコーディングの一例を示す図。
【図１９】３−５−２−５データコーディングの一例を示す図。
【図２０】３−３−４−５データコーディングの一例を示す図。
【図２１】２−３−５−５データコーディングの一例を示す図。
【図２２】３−２−５−５データコーディングの一例を示す図。
【図２３】３−４−４−４データコーディングの一例を示す図。
【図２４】３−４−４−４データコーディングの一例を示す図。
【図２５】１−４−５−５データコーディングの一例を示す図。
【図２６】２−５−３−５データコーディングの一例を示す図。
【図２７】３−４−５−３データコーディングの一例を示す図。
【図２８】３−２−５−５データコーディングの一例を示す図。
【図２９】３−２−５−５データコーディングの一例を示す図。
【図３０】１−５−５−４データコーディングの一例を示す図。
【図３１】１−５−４−５データコーディングの一例を示す図。
【図３２】１−４−５−５データコーディングの一例を示す図。
【図３３】１−５−３−６データコーディングの一例を示す図。
【図３４】１−３−６−５データコーディングの一例を示す図。
【図３５】１−２−６−６データコーディングの一例を示す図。
【図３６】１−２−６−６データコーディングの一例を示す図。
【図３７】１−２−６−６データコーディングの一例を示す図。
【図３８】１−４−６−４データコーディングの一例を示す図。
【図３９】１−４−４−６データコーディングの一例を示す図。
【図４０】１−４−６−４データコーディングの一例を示す図。
【図４１】１−４−４−６データコーディングの一例を示す図。
【図４２】２−５−２−６データコーディングの一例を示す図。
【図４３】２−５−２−６データコーディングの一例を示す図。
【図４４】２−５−２−６データコーディングの一例を示す図。
【図４５】３−３−３−６データコーディングの一例を示す図。
【図４６】３−３−６−３データコーディングの一例を示す図。
【図４７】２−３−４−６データコーディングの一例を示す図。
【図４８】３−４−２−６データコーディングの一例を示す図。
【図４９】２−３−４−６データコーディングの一例を示す図。
【図５０】３−２−６−４データコーディングの一例を示す図。
【図５１】３−２−４−６データコーディングの一例を示す図。
【図５２】３−２−６−４データコーディングの一例を示す図。
【図５３】３−４−２−６データコーディングの一例を示す図。
【図５４】３−２−４−６データコーディングの一例を示す図。
【図５５】５−３−２−５データコーディングの一例を示す図。
【図５６】３−５−２−５データコーディングの一例を示す図。
【図５７】３−２−５−５データコーディングの一例を示す図。
【図５８】２−３−５−５データコーディングの一例を示す図。
【図５９】２−３−５−５データコーディングの一例を示す図。
【図６０】２−３−５−５データコーディングの一例を示す図。
【図６１】５−４−２−４データコーディングの一例を示す図。
【図６２】４−５−２−４データコーディングの一例を示す図。
【図６３】５−４−２−４データコーディングの一例を示す図。
【図６４】２−４−５−４データコーディングの一例を示す図。
【図６５】２−４−５−４データコーディングの一例を示す図。
【図６６】２−５−４−４データコーディングの一例を示す図。
【図６７】２−５−４−４データコーディングの一例を示す図。
【図６８】２−５−４−４データコーディングの一例を示す図。
【図６９】１−５−４−５データコーディングの一例を示す図。
【図７０】１−４−５−５データコーディングの一例を示す図。
【図７１】１−５−５−４データコーディングの一例を示す図。
【図７２】１−４−５−５データコーディングの一例を示す図。
【図７３】１−５−５−４データコーディングの一例を示す図。
【図７４】１−５−４−５データコーディングの一例を示す図。
【図７５】１−５−５−４データコーディングの一例を示す図。
【図７６】１−５−４−５データコーディングの一例を示す図。
【図７７】１−４−５−５データコーディングの一例を示す図。
【図７８】１−４−５−５データコーディングの一例を示す図。
【図７９】１−４−５−５データコーディングの一例を示す図。
【図８０】１−４−５−５データコーディングの一例を示す図。
【図８１】３−５−４−３データコーディングの一例を示す図。
【図８２】３−４−５−３データコーディングの一例を示す図。
【図８３】３−５−３−４データコーディングの一例を示す図。
【図８４】３−４−３−５データコーディングの一例を示す図。
【図８５】３−４−５−３データコーディングの一例を示す図。
【図８６】３−４−３−５データコーディングの一例を示す図。
【図８７】３−３−５−４データコーディングの一例を示す図。
【図８８】３−３−５−４データコーディングの一例を示す図。
【図８９】４−５−３−３データコーディングの一例を示す図。
【図９０】３−５−４−３データコーディングの一例を示す図。
【図９１】３−４−５−３データコーディングの一例を示す図。
【図９２】３−３−４−５データコーディングの一例を示す図。
【図９３】３−３−４−５データコーディングの一例を示す図。
【図９４】３−３−４−５データコーディングの一例を示す図。
【図９５】３−４−５−３データコーディングの一例を示す図。
【図９６】３−３−５−４データコーディングの一例を示す図。
【図９７】３−３−４−５データコーディングの一例を示す図。
【図９８】４−３−４−４データコーディングの一例を示す図。
【図９９】３−４−４−４データコーディングの一例を示す図。
【図１００】３−４−４−４データコーディングの一例を示す図。
【図１０１】４−３−４−４データコーディングの一例を示す図。
【図１０２】３−４−４−４データコーディングの一例を示す図。
【図１０３】３−４−４−４データコーディングの一例を示す図。
【図１０４】３−４−４−４データコーディングの一例を示す図。
【図１０５】３−４−４−４データコーディングの一例を示す図。
【図１０６】４−４−３−４データコーディングの一例を示す図。
【図１０７】４−４−３−４データコーディングの一例を示す図。
【図１０８】第３の実施形態に係る１ブロック分全体の書き込み手順を示すフローチャート。
【図１０９】第３の実施形態に係る１ｓｔステージ及び２ｎｄステージにおける書き込み手順を示すフローチャート。
【図１１０】第３の実施形態のプログラムにおける書き込みバッファ量を説明するための図。
【発明を実施するための形態】
【００１２】
図１は第１の実施形態によるメモリシステム１の概略構成を示すブロック図である。図１のメモリシステム１は、メモリコントローラ２と不揮発性メモリ３とを備える。図１のメモリシステム１は、ホストプロセッサ（以下、単にホストと呼ぶ）４と接続可能である。ホスト４は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
【００１３】
不揮発性メモリ３は、データを不揮発に記憶するメモリであり、例えば、ＮＡＮＤフラッシュメモリ（以下、ＮＡＮＤメモリと呼ぶこともある）５を備えている。本実施形態では、不揮発性メモリ３が、メモリセルあたり４ビットのデータを記憶可能なメモリセルを有する４ビット／Ｃｅｌｌ（ＱＬＣ：Quad  Level  Cell）のＮＡＮＤメモリ５である例を説明する。本実施形態による不揮発性メモリ３は、メモリセルが立体的に積層された３次元構造を有する。不揮発性メモリ３は、各々が、データが消去された消去状態を示す第１のしきい値領域と、第１のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第２乃至第１６のしきい値領域とを含む１６個のしきい値領域により、第１乃至第４ビットで表わせられる４ビットのデータを記憶可能な複数のメモリセルを有する。例えば、第１ビットは最下位のLowerビット、前記第２ビットは二番目に小さいMiddleビット、前記第３ビットは二番目に大きいUpperビット、前記第４ビットは最上位のTopビットである。
【００１４】
メモリコントローラ２は、ホスト４からの書き込みコマンドに従って不揮発性メモリ３へのデータの書き込みを制御する。また、メモリコントローラ２は、ホスト４からの読み出しコマンドに従って不揮発性メモリ３からのデータの読み出しを制御する。メモリコントローラ２は、ＲＡＭ（Random Access Memory）６、ＲＯＭ（Read Only Memory）７、プロセッサ８、ホストインターフェイス９、ＥＣＣ（Error Check and Correct）回路１０及びメモリインターフェイス１１を備える。ＲＡＭ６、プロセッサ８、ホストインターフェイス９、ＥＣＣ回路１０及びメモリインターフェイス１１は、共通の内部バス１２で接続される。
【００１５】
後述するように、本実施形態のメモリコントローラ２は、第１ビット、第２ビット、第４ビットのデータを書き込む第１プログラムを不揮発性メモリ３に行わせた後に、第３ビットのデータを書き込む第２プログラムを不揮発性メモリ３に行わせる。第１乃至第１６のしきい値領域のうち隣接するしきい値領域間に存在する１５個の境界のうち、第１ビットのデータの値の判定に用いられる第１の境界の数、第２ビットのデータの値の判定に用いられる第２の境界の数、第３ビットのデータの値の判定に用いられる第３の境界の数、第４ビットのデータの値の判定に用いられる第４の境界の数のうち最大の値は５であり、二番目に大きな値は４である。メモリコントローラ２は、メモリセルにおけるしきい値領域が、第１ビット、第２ビット、第４ビットのデータに応じて、データが消去された消去状態を示す第１７のしきい値領域と、第１７のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第１８乃至第２４のしきい値領域のいずれかのしきい値領域となるように第１プログラムを不揮発性メモリ３に行わせるように構成される。メモリコントローラ２は、メモリセルにおけるしきい値領域が、第３ビットのデータに応じて、第１７乃至第２４のしきい値領域のうちいずれかのしきい値領域から第１乃至第１６のしきい値領域のうちの２個のしきい値領域内のいずれかのしきい値領域となるように第２プログラムを不揮発性メモリ３に行わせるように構成される。２個のしきい値領域のうち電圧レベルが最低のしきい値領域と電圧レベルが最高のしきい値領域との間にあるしきい値領域の個数が２個以内である。メモリコントローラ２は、第２プログラムを不揮発性メモリ３に行わせる場合に、第２ビットのデータと第３ビットのデータとを不揮発性メモリ３へ入力するように構成される。
【００１６】
より詳細には、メモリコントローラ２は、１６個のしきい値領域（第１乃至第１６のしきい値領域）間の１５個の境界のうち、隣接するしきい値領域間で、第１ビットの値が異なる境界の数、第２ビットの値が異なる境界の数、第３ビットの値が異なる境界の数、及び第４ビットの値が異なる境界の数が順に（１、４、５、５）、（１、５、４、５）、又は（３、３、４、５）となるように第１プログラム及び第２プログラムを不揮発性メモリに行わせる。
【００１７】
あるいは、本実施形態のメモリコントローラ２は、第１ビット、第２ビット、第４ビットのデータを書き込む第１プログラムを不揮発性メモリ３に行わせた後に、第３ビットのデータを書き込む第２プログラムを不揮発性メモリ３に行わせる。第１乃至第１６のしきい値領域のうち隣接するしきい値領域間に存在する１５個の境界のうち、第１ビットのデータの値の判定に用いられる第１の境界の数、第２ビットのデータの値の判定に用いられる第２の境界の数、第３ビットのデータの値の判定に用いられる第３の境界の数、第４ビットのデータの値の判定に用いられる第４の境界の数は順に（３、５、２、５）である。メモリコントローラ２は、メモリセルにおけるしきい値領域が、第１ビット、第２ビット、第４ビットのデータに応じて、データが消去された消去状態を示す第１７のしきい値領域と、第１７のしきい値領域よりも電圧レベルが高くデータが書き込まれた書き込み状態を示す第１８乃至第２４のしきい値領域のいずれかのしきい値領域となるように第１プログラムを不揮発性メモリ３に行わせるように構成される。メモリコントローラ２は、メモリセルにおけるしきい値領域が、第３ビットのデータに応じて、第１７乃至第２４のしきい値領域のうちいずれかのしきい値領域から第１乃至第１６のしきい値領域のうちの２個のしきい値領域内のいずれかのしきい値領域となるように第２プログラムを不揮発性メモリ３に行わせるように構成される。２個のしきい値領域のうち電圧レベルが最低のしきい値領域と電圧レベルが最高のしきい値領域との間にあるしきい値領域の個数が２個以内である。メモリコントローラ２は、第２プログラムを不揮発性メモリ３に行わせる場合に、第２ビットのデータと第３ビットのデータとを不揮発性メモリ３へ入力するように構成される。
【００１８】
メモリコントローラ２は、第１７乃至第２４のしきい値領域のうち第２ビットのデータの値が異なる２つのしきい値領域の間の電圧レベルの差が、第１ビットのデータの値が異なる２つのしきい値領域の間の電圧レベルの差よりも小さく、かつ第４ビットのデータの値が異なる２つのしきい値領域の間の電圧レベルの差よりも小さくなるように第１プログラムを不揮発性メモリに行わせてもよい。
【００１９】
あるいは、メモリコントローラ２は、第２ビットのデータの値が異なる第１プログラム時の２つのしきい値領域の間隔よりも、２つのしきい値領域に対して第３ビットのデータにより第２プログラムを行って得られる４つのしきい値領域のうち隣接するしきい値領域の間隔が広くなるように、第２プログラムを不揮発性メモリに行わせてもよい。
【００２０】
ホストインターフェイス９は、ホスト４から受信したコマンド、ユーザデータ（書き込みデータ）などを内部バス１２に出力する。また、ホストインターフェイス９は、不揮発性メモリ３から読み出されたユーザデータやプロセッサ８からの応答などをホスト４へ送信する。
【００２１】
メモリインターフェイス１１は、プロセッサ８の指示に基づいて、ユーザデータ等を不揮発性メモリ３へ書き込む処理と不揮発性メモリ３から読み出す処理を制御する。
【００２２】
プロセッサ８は、メモリコントローラ２を統括的に制御する。プロセッサ８は、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等である。プロセッサ８は、ホスト４からホストインターフェイス９経由でコマンドを受けた場合に、そのコマンドに従った制御を行う。例えば、プロセッサ８は、ホスト４からのコマンドに従って、不揮発性メモリ３へのユーザデータ及びパリティの書き込みをメモリインターフェイス１１へ指示する。また、プロセッサ８は、ホスト４からのコマンドに従って、不揮発性メモリ３からのユーザデータ及びパリティの読み出しを、メモリインターフェイス１１へ指示する。
【００２３】
ユーザデータは、内部バス１２経由でＲＡＭ６に格納される。プロセッサ８は、ＲＡＭ６に格納されるユーザデータに対して、不揮発性メモリ３上の格納領域（メモリ領域）を決定する。プロセッサ８は、書き込み単位であるページ単位のデータ（ページデータ）に対して、不揮発性メモリ３上のメモリ領域を決定する。本明細書では、不揮発性メモリ３の１ページに格納されるユーザデータをユニットデータと定義する。ユニットデータは、一般には符号化されて符号語として不揮発性メモリ３に格納されるが、符号化は必須ではない。メモリコントローラ２は、符号化せずにユニットデータを不揮発性メモリ３に格納してもよいが、図１では、一構成例として符号化を行う構成を示している。メモリコントローラ２が符号化を行わない場合には、ページデータはユニットデータと一致する。また、１つのユニットデータに基づいて１つの符号語が生成されてもよいし、ユニットデータが分割された分割データに基づいて１つの符号語が生成されてもよい。また、複数のユニットデータを用いて１つの符号語が生成されてもよい。
【００２４】
プロセッサ８は、ユニットデータごとに書き込み先の不揮発性メモリ３のメモリ領域を決定する。不揮発性メモリ３のメモリ領域には物理アドレスが割当てられている。プロセッサ８は、ユニットデータの書き込み先のメモリ領域を、物理アドレスを用いて管理する。プロセッサ８は、決定したメモリ領域（物理アドレス）を指定してユーザデータを不揮発性メモリ３へ書き込むようメモリインターフェイス１１へ指示する。一方、ホスト４は論理アドレスでデータを管理する。このため、プロセッサ８は、ユーザデータの論理アドレスと物理アドレスとの対応関係を管理する。プロセッサ８は、ホスト４からの論理アドレスを含む読み出しコマンドを受信した場合は、論理アドレスに対応する物理アドレスを特定し、物理アドレスを指定してユーザデータの読み出しをメモリインターフェイス１１へ指示する。
【００２５】
本明細書では、１つのワード線に共通に接続された複数のメモリセルをメモリセルグループＭＧと定義する。１つのメモリセルグループＭＧが書込み（プログラム）の単位になる。本実施形態では、不揮発性メモリ３は、４ビット／ＣｅｌｌのＮＡＮＤメモリ５であり、１つのメモリセルグループＭＧは４ビット×ビット数分のデータ量を有する。各メモリセルに書き込まれる各ビットは、それぞれ異なるページに対応する。本実施形態では、１つのメモリセルグループＭＧの４ページを、Lowerページ（第１のページ）、Middleページ（第２のページ）、Upperページ（第３のページ）、Topページ（第４のページ）と呼ぶ。
【００２６】
ＥＣＣ回路１０は、ＲＡＭ６に格納されたユーザデータを符号化して、符号語を生成する。また、ＥＣＣ回路１０は、不揮発性メモリ３から読み出された符号語を復号する。ＥＣＣ回路１０は、不揮発性メモリ３から読み出した符号語に含まれるビットエラーを訂正した上で、ユーザデータに復号する。
【００２７】
ＲＡＭ６は、ホスト４から受信したユーザデータを不揮発性メモリ３へ記憶するまでに一時的に格納したり、不揮発性メモリ３から読み出したデータをホスト４へ送信するまでに一時的に格納する。ＲＡＭ６は、例えば、ＳＲＡＭ（Static Random Access Memory）やＤＲＡＭ（Dynamic Random Access Memory）などの汎用メモリである。
【００２８】
図１では、メモリコントローラ２が、ＥＣＣ回路１０とメモリインターフェイス１１をそれぞれ備える構成例を示した。しかしながら、ＥＣＣ回路１０がメモリインターフェイス１１に内蔵されていてもよい。また、ＥＣＣ回路１０が、不揮発性メモリ３に内蔵されていてもよい。
【００２９】
ホスト４からライト要求を受信した場合、メモリシステム１は次のように動作する。プロセッサ８は、ライトデータをＲＡＭ６に一時的に格納する。プロセッサ８は、ＲＡＭ６に格納されたデータをリードし、ＥＣＣ回路１０に入力する。ＥＣＣ回路１０は、入力されたデータを符号化し、符号語をメモリインターフェイス１１に入力する。メモリインターフェイス１１は、入力された符号語を不揮発性メモリ３に書き込む。
【００３０】
ホスト４からリード要求を受信した場合、メモリシステム１は次のように動作する。メモリインターフェイス１１は、不揮発性メモリ３から読み出した符号語をＥＣＣ回路１０に入力する。ＥＣＣ回路１０は、入力された符号語を復号し、復号されたデータをＲＡＭ６に一時的に格納する。プロセッサ８は、ＲＡＭ６に格納されたデータを、ホストインターフェイス９を介してホスト４に送信する。なお、不揮発性メモリ３は、複数のチップで構成される場合もあり、不揮発性メモリ３とメモリインターフェイス１１は、貫通ビア（ＴＳＶ：Through Silicon Via）によって接続することも可能である。
【００３１】
なお、図１に示すメモリコントローラ２の構成は一例であり、内部バス１２が分割構造や階層構造になったり、あるいは付加的な機能ブロックが接続されるなど、他にも様々な派生的な形態をとりうる。
【００３２】
図２は、本実施形態の不揮発性メモリ３の内部構成の一例を示すブロック図である。不揮発性メモリ３は、ＮＡＮＤ  Ｉ／Ｏインターフェイス２１、制御部２２、ＮＡＮＤメモリセルアレイ（メモリセル部）２３、及びページバッファ（第２記憶部）２４を備える。不揮発性メモリ３は、例えば半導体基板（例えば、シリコン基板）上に形成されてチップ化される。
【００３３】
制御部２２は、ＮＡＮＤ  Ｉ／Ｏインターフェイス２１経由でメモリコントローラ２からのコマンド等に基づいて、不揮発性メモリ３の動作を制御する。具体的には、制御部２２は、書き込み要求が入力された場合、書き込みが要求されたデータをＮＡＮＤメモリセルアレイ２３上の指定されたアドレスへ書き込むよう制御する。また、制御部２２は、読み出し要求が入力された場合、読み出しが要求されたデータをＮＡＮＤメモリセルアレイ２３から読み出して、ＮＡＮＤ  Ｉ／Ｏインターフェイス２１経由でメモリコントローラ２へ出力するよう制御する。ページバッファ２４は、ＮＡＮＤメモリセルアレイ２３の書き込み時にメモリコントローラ２から入力されたデータを一時的に格納したり、ＮＡＮＤメモリセルアレイ２３から読み出したデータを一時的に格納したりするバッファである。
【００３４】
後述するように、制御部２２は、１ｓｔステージのプログラムによりプログラムされたデータを読み出して得られるデータと、１ｓｔステージ及び２ｎｄステージのプログラムで重複して入力されるビットのデータと、２ｎｄステージのプログラムでプログラムされるビットの入力データとに基づいて、２ｎｄステージのプログラムでプログラムされるビットのデータのしきい値電圧を決定する。
【００３５】
制御部２２は、発振器３１と、シーケンサ３２と、コマンドユーザインターフェイス３３と、電圧供給部３４と、カラムカウンタ３５と、シリアルアクセスコントローラ３６とを有する。また、ＮＡＮＤメモリセルアレイ２３は、ローデコーダ３７とセンスアンプ３８を有する。
【００３６】
ＮＡＮＤ  Ｉ／Ｏインターフェイス２１は、メモリコントローラ２との間でＩＯ信号及び制御信号を送受信するための回路である。コマンドユーザインターフェイス３３は、メモリコントローラ２からＩＯ信号線を介して受信したコマンド、アドレス、及びデータのうちの、コマンド及びアドレスを、制御信号に基づいて取得する。コマンドユーザインターフェイス３３は、取得したコマンド及びアドレスをシーケンサ３２に渡す。
【００３７】
発振器３１は、クロックを生成する回路である。発振器３１によって生成されたクロックは、シーケンサ３２を含む各構成要素に供給される。シーケンサ３２は、発振器３１から供給されるクロックによって駆動されるステートマシンである。シーケンサ３２は、ＮＡＮＤメモリセルアレイ２３へのアクセスなどの制御を実行する。例えば、シーケンサ３２は、コマンドユーザインターフェイス３３から受信したコマンドに応じて、各種の内部電圧や動作タイミング等を制御するための指令を出す。また、シーケンサ３２は、コマンドユーザインターフェイス３３から受信したアドレスに含まれるブロックアドレス及びページアドレスをローデコーダ３７に供給する。さらに、シーケンサ３２は、コマンドユーザインターフェイス３３から受信したアドレスに含まれるカラムアドレスをカラムカウンタ３５に供給する。
【００３８】
電圧供給部３４は、ワード線に供給される各種の内部電圧やビット線に供給される各種の内部電圧を生成して、ローデコーダ３７やセンスアンプ３８へ供給する。カラムカウンタ３５は、プログラム動作あるいはリード動作の際には、シーケンサ３２から供給されたカラムアドレスを先頭として、シリアルアクセスコントローラ３６から供給される制御信号に従ってカラムアドレスを順次進める。
【００３９】
ページバッファ２４は、プログラム動作の際には、シリアルアクセスコントローラ３６から受信したデータを、上記カラムカウンタ３５が指定するカラムアドレス領域に順次格納する。また、ページバッファ２４は、リード動作の際には、格納されているデータのうち、上記カラムアドレスで指定されたカラムアドレスのデータを順次、シリアルアクセスコントローラ３６に送る。
【００４０】
シリアルアクセスコントローラ３６は、プログラム動作の際には、ＮＡＮＤ  Ｉ／Ｏインターフェイス２１からＩＯ信号線のビット幅毎にシリアルに受信したデータを、ページバッファ２４に格納する。また、シリアルアクセスコントローラ３６は、リード動作の際にはページバッファ２４からＩＯ信号線のビット幅毎にシリアルに受信したデータをＮＡＮＤ  Ｉ／Ｏインターフェイス２１に送る。
【００４１】
ローデコーダ３７は、プログラム動作及びリード動作の際、ブロックアドレス及びページアドレスをデコードして、アクセス先のブロックＢＬＫに含まれるアクセス対象となるページに対応するワード線を選択する。そして各ローデコーダ３７は、選択ワード線及び非選択ワード線に適切な電圧を印加する。
【００４２】
センスアンプ３８は、プログラム動作の際には、ページバッファ２４に格納された対応するデータをメモリセルトランジスタに転送する。また、センスアンプ３８は、リード動作の際には、選択ワード線からビット線に読み出されたデータをセンスして、得られたデータを、ページバッファ２４に格納する。ページバッファ２４に格納されたデータは、シリアルアクセスコントローラ３６及びＮＡＮＤ  Ｉ／Ｏインターフェイス２１を介してメモリコントローラ２に送られる。
【００４３】
図３は３次元構造のＮＡＮＤメモリセルアレイ２３の一例を示す回路図である。図３は、３次元構造のＮＡＮＤメモリセルアレイ２３内の複数のブロックのうちの１つのブロックＢＬＫの回路構成を示している。ＮＡＮＤメモリセルアレイ２３の他のブロックも図３と同様の回路構成を有する。なお、本実施形態は、２次元構造のメモリセルにも適用可能である。
【００４４】
図３に示すように、ブロックＢＬＫは、例えば４つのフィンガーＦＮＧ（ＦＮＧ０〜ＦＮＧ３）を有する。また各々のフィンガーＦＮＧは、複数のＮＡＮＤストリングＮＳを含む。ＮＡＮＤストリングＮＳの各々は、例えば縦続接続された８個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ７）と、選択トランジスタＳＴ１、ＳＴ２とを有する。本明細書では、各々のフィンガーＦＮＧをストリングＳｔと呼ぶ場合がある。
【００４５】
なお、ＮＡＮＤストリングＮＳ内のメモリセルトランジスタＭＴの個数は８個に限られない。メモリセルトランジスタＭＴは、選択トランジスタＳＴ１、ＳＴ２の間に、その電流経路が直列接続されるようにして配置されている。この直列接続の一端側のメモリセルトランジスタＭＴ７の電流経路は、選択トランジスタＳＴ１の電流経路の一端に接続され、他端側のメモリセルトランジスタＭＴ０の電流経路は、選択トランジスタＳＴ２の電流経路の一端に接続されている。
【００４６】
フィンガーＦＮＧ０〜ＦＮＧ３の各々の選択トランジスタＳＴ１のゲートは、それぞれセレクトゲート線ＳＧＤ０〜ＳＧＤ３に共通接続される。他方で、選択トランジスタＳＴ２のゲートは、複数のフィンガーＦＮＧ間で同一のセレクトゲート線ＳＧＳに共通接続される。また、同一のブロックＢＬＫ内にあるメモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲートは、それぞれワード線ＷＬ０〜ＷＬ７に共通接続される。すなわち、ワード線ＷＬ０〜ＷＬ７及びセレクトゲート線ＳＧＳは、同一ブロックＢＬＫ内の複数のフィンガーＦＮＧ０〜ＦＮＧ３間で共通に接続されているのに対し、セレクトゲート線ＳＧＤは、同一ブロックＢＬＫ内であってもフィンガーＦＮＧ０〜ＦＮＧ３のそれぞれ毎に独立している。
【００４７】
ＮＡＮＤストリングＮＳを構成するメモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲート電極には、それぞれワード線ＷＬ０〜ＷＬ７が接続されており、また、同一のフィンガーＦＮＧ内の各ＮＡＮＤストリングＮＳ中のｉ番目のメモリセルトランジスタＭＴｉ（ｉ＝０〜ｎ）は、同一のワード線ＷＬｉ（ｉ＝０〜ｎ）によって共通接続されている。すなわち、ブロックＢＬＫ内の同一行のメモリセルトランジスタＭＴｉの制御ゲート電極は、同一のワード線ＷＬｉに接続される。
【００４８】
各ＮＡＮＤストリングＮＳは、ワード線ＷＬｉに接続するとともにビット線にも接続される。各ＮＡＮＤストリングＮＳ内の各メモリセルは、ワード線ＷＬｉ及びセレクトゲート線ＳＧＤ０〜ＳＧＤ３を識別するアドレスとビット線を識別するアドレスとで識別可能である。上述した通り、同一のブロックＢＬＫ内にあるメモリセル（メモリセルトランジスタＭＴ）のデータは、一括して消去される。一方、データの読み出し及び書き込みは、物理セクタＭＳ単位で行われる。１物理セクタＭＳは、１つのワード線ＷＬｉに接続され、かつ１つのフィンガーＦＮＧに属する複数のメモリセルを含む。
【００４９】
メモリコントローラ２は、一つのフィンガー内の１本のワード線に接続されている全ＮＡＮＤストリングＮＳを単位として、書込み（プログラム）を行う。このため、メモリコントローラ２がプログラムを行うデータ量の単位は、４ビット×ビット線数になる。
【００５０】
リード動作及びプログラム動作時において、物理アドレスに応じて、１本のワード線ＷＬｉ及び１本のセレクトゲート線ＳＧＤが選択され、物理セクタＭＳが選択される。なお、本明細書では、メモリセルにデータを書き込むことを、必要に応じてプログラムと呼ぶ。
【００５１】
図４は３次元構造のＮＡＮＤメモリ５のＮＡＮＤメモリセルアレイ２３の一部領域の断面図である。図４に示すように、半導体基板のｐ型ウェル領域（P-well）４１上に複数のＮＡＮＤストリングＮＳが上下方向に形成されている。すなわち、ｐ型ウェル領域４１上には、セレクトゲート線ＳＧＳとして機能する複数の配線層４２、ワード線ＷＬｉとして機能する複数の配線層４３、及びセレクトゲート線ＳＧＤとして機能する複数の配線層４４が上下方向に形成されている。
【００５２】
そして、これらの配線層４２、４３、４４を貫通してｐ型ウェル領域４１に達するメモリホール４５が形成されている。メモリホール４５の側面には、ブロック絶縁膜４６、電荷蓄積層４７、及びゲート絶縁膜４８が順次形成され、更にメモリホール４５内に導電膜４９が埋め込まれている。導電膜４９は、ＮＡＮＤストリングＮＳの電流経路として機能し、メモリセルトランジスタＭＴ並びに選択トランジスタＳＴ１及びＳＴ２の動作時にチャネルが形成される領域である。
【００５３】
各ＮＡＮＤストリングＮＳにおいて、ｐ型ウェル領域４１上に選択トランジスタＳＴ２、複数のメモリセルトランジスタＭＴ、及び選択トランジスタＳＴ１が順次積層されている。導電膜４９の上端には、ビット線ＢＬとして機能する配線層が形成される。
【００５４】
さらに、ｐ型ウェル領域４１の表面内には、ｎ＋型不純物拡散層及びｐ＋型不純物拡散層が形成されている。ｎ＋型不純物拡散層上にはコンタクトプラグ５０が形成され、コンタクトプラグ５０上には、ソース線ＳＬとして機能する配線層が形成される。またｐ＋型不純物拡散層上にはコンタクトプラグ５１が形成され、コンタクトプラグ５１上には、ウェル配線ＣＰＷＥＬＬとして機能する配線層が形成される。ウェル配線ＣＰＷＥＬＬは消去電圧を印加するために用いられる。
【００５５】
図４に示したＮＡＮＤメモリセルアレイ２３は、図４の紙面の奥行き方向に複数配列されており、奥行き方向に一列に並ぶ複数のＮＡＮＤストリングＮＳの集合によって、１つのフィンガーＦＮＧが形成される。他のフィンガーＦＮＧは例えば図４の左右方向に形成されている。図３には４つのフィンガーＦＮＧ０〜３が図示されているが、図４にはコンタクトプラグ５０，５１の間に３つのフィンガーを配置した例を示している。
【００５６】
図５は第１の実施形態のしきい値領域の一例を示す図である。図５は、４ビット／Ｃｅｌｌの不揮発性メモリ３のしきい値領域の分布の一例を示している。不揮発性メモリ３では、メモリセルの電荷蓄積層４７に蓄えられた電子の電荷量により情報を記憶する。各メモリセルは、電子の電荷量に応じたしきい値電圧を有する。そして、メモリセルに記憶する複数のデータ値を、しきい値電圧が異なる複数の領域（しきい値領域）にそれぞれ対応させる。
【００５７】
図５の、Ｓ０〜Ｓ１５は、１６個のしきい値領域内のしきい値分布を示している。図５の横軸はしきい値電圧を示し、縦軸はメモリセル数（セル数）である。しきい値分布とは、しきい値が変動する範囲である。このように、各メモリセルは、１５個の境界によって仕切られた１６個のしきい値領域を有し、各しきい値領域は、固有のしきい値分布を有する。
【００５８】
本実施形態では、しきい値電圧がＶｒ１以下となる領域を領域Ｓ０と呼び、しきい値電圧がＶｒ１より大きくＶｒ２以下となる領域を領域Ｓ１と呼び、しきい値電圧がＶｒ２より大きくＶｒ３以下となる領域を領域Ｓ２と呼び、しきい値電圧がＶｒ３より大きくＶｒ４以下となる領域を領域Ｓ３と呼ぶ。また、本実施形態では、しきい値電圧がＶｒ４より大きくＶｒ５以下となる領域を領域Ｓ４と呼び、しきい値電圧がＶｒ５より大きくＶｒ６以下となる領域を領域Ｓ５と呼び、しきい値電圧がＶｒ６より大きくＶｒ７以下となる領域を領域Ｓ６と呼び、しきい値電圧がＶｒ７より大きくＶｒ８以下となる領域を領域Ｓ７と呼ぶ。また、本実施形態では、しきい値電圧がＶｒ８より大きくＶｒ９以下となる領域を領域Ｓ８と呼び、しきい値電圧がＶｒ９より大きくＶｒ１０以下となる領域を領域Ｓ９と呼び、しきい値電圧がＶｒ１０より大きくＶｒ１１以下となる領域を領域Ｓ１０と呼び、しきい値電圧がＶｒ１１より大きくＶｒ１２以下となる領域を領域Ｓ１１と呼ぶ。また、本実施形態では、しきい値電圧がＶｒ１２より大きくＶｒ１３以下となる領域を領域Ｓ１２と呼び、しきい値電圧がＶｒ１３より大きくＶｒ１４以下となる領域を領域Ｓ１３と呼び、しきい値電圧がＶｒ１４より大きくＶｒ１５以下となる領域を領域Ｓ１４と呼び、しきい値電圧がＶｒ１５より大きくなる領域を領域Ｓ１５と呼ぶ。
【００５９】
また、領域Ｓ０〜Ｓ１５に対応するしきい値分布を第１〜第１６の分布と呼ぶ。Ｖｒ１〜Ｖｒ１５は、各しきい値領域の境界となるしきい値電圧である。
【００６０】
不揮発性メモリ３では、メモリセルの複数のしきい値領域に複数のデータ値をそれぞれ対応させる。この対応をデータコーディングという。このデータコーディングをあらかじめ定めておき、データの書き込み（プログラム）時には、データコーディングに従って記憶するデータ値に応じたしきい値領域内となるようにメモリセル内の電荷蓄積層４７に電荷を注入する。そして、読み出し時には、メモリセルに読み出し電圧を印加し、読み出し電圧よりメモリセルのしきい値が低いか高いかにより、データ論理が決定される。
【００６１】
データの読み出し時には、読み出し対象の境界の読み出しレベルよりも、しきい値が低いか高いかでデータの論理が決定される。しきい値が最も低い場合は、「消去」状態であり、全てのビットのデータが”１”と定義される。しきい値が、「消去」状態よりも高い場合は、「プログラムされた」状態であり、コーディングに従ってデータが”１”または”０”と定義される。
【００６２】
図６Ａは第１の実施形態のデータコーディングの一例を示す図であり、１−４−５−５データコーディングの一例を示している。本実施形態では、図５に示した１６個のしきい値領域を４ビットの１６個のデータ値にそれぞれ対応させる。図６Ａにおけるしきい値電圧と、Top、Upper、Middle、Lowerページに対応するビットのデータ値との関係は、以下に示す通りである。
【００６３】
・しきい値電圧がＳ０領域内にあるメモリセルは“１１１１”を記憶している状態である。
・しきい値電圧がＳ１領域内にあるメモリセルは“０１１１”を記憶している状態である。
・しきい値電圧がＳ２領域内にあるメモリセルは“００１１”を記憶している状態である。
・しきい値電圧がＳ３領域内にあるメモリセルは“１０１１”を記憶している状態である。
・しきい値電圧がＳ４領域内にあるメモリセルは“１００１”を記憶している状態である。
・しきい値電圧がＳ５領域内にあるメモリセルは“０００１”を記憶している状態である。
・しきい値電圧がＳ６領域内にあるメモリセルは“０１０１”を記憶している状態である。
・しきい値電圧がＳ７領域内にあるメモリセルは“１１０１”を記憶している状態である。
・しきい値電圧がＳ８領域内にあるメモリセルは“１１００”を記憶している状態である。
・しきい値電圧がＳ９領域内にあるメモリセルは“１１１０”を記憶している状態である。
・しきい値電圧がＳ１０領域内にあるメモリセルは“１０１０”を記憶している状態である。
・しきい値電圧がＳ１１領域内にあるメモリセルは“１０００”を記憶している状態である。
・しきい値電圧がＳ１２領域内にあるメモリセルは“００００”を記憶している状態である。
・しきい値電圧がＳ１３領域内にあるメモリセルは“０１００”を記憶している状態である。
・しきい値電圧がＳ１４領域内にあるメモリセルは“０１１０”を記憶している状態である。
・しきい値電圧がＳ１５領域内にあるメモリセルは“００１０”を記憶している状態である。
【００６４】
図６Ｂは第１の実施形態のデータコーディングの他の一例を示す図であり、４−３−４−４データコーディングの一例を示している。図６Ｂにおけるしきい値電圧と、Top、Upper、Middle、Lowerページに対応するビットのデータ値との関係は、以下に示す通りである。
【００６５】
・しきい値電圧がＳ０領域内にあるメモリセルは“１１１１”を記憶している状態である。
・しきい値電圧がＳ１領域内にあるメモリセルは“０１１１”を記憶している状態である。
・しきい値電圧がＳ２領域内にあるメモリセルは“００１１”を記憶している状態である。
・しきい値電圧がＳ３領域内にあるメモリセルは“１０１１”を記憶している状態である。
・しきい値電圧がＳ４領域内にあるメモリセルは“１０１０”を記憶している状態である。
・しきい値電圧がＳ５領域内にあるメモリセルは“１１１０”を記憶している状態である。
・しきい値電圧がＳ６領域内にあるメモリセルは“１１００”を記憶している状態である。
・しきい値電圧がＳ７領域内にあるメモリセルは“１０００”を記憶している状態である。
・しきい値電圧がＳ８領域内にあるメモリセルは“１００１”を記憶している状態である。
・しきい値電圧がＳ９領域内にあるメモリセルは“０００１”を記憶している状態である。
・しきい値電圧がＳ１０領域内にあるメモリセルは“００００”を記憶している状態である。
・しきい値電圧がＳ１１領域内にあるメモリセルは“００１０”を記憶している状態である。
・しきい値電圧がＳ１２領域内にあるメモリセルは“０１１０”を記憶している状態である。
・しきい値電圧がＳ１３領域内にあるメモリセルは“０１００”を記憶している状態である。
・しきい値電圧がＳ１４領域内にあるメモリセルは“０１０１”を記憶している状態である。
・しきい値電圧がＳ１５領域内にあるメモリセルは“１１０１”を記憶している状態である。
【００６６】
図６Ａ及び図６Ｂに示すように、しきい値電圧の各領域に、各メモリセルの４ビットのデータの論理を割り振ることが出来る。なお、メモリセルが未書き込みの状態（「消去」の状態）では、メモリセルのしきい値電圧はＳ０領域内にある。また、ここに示した符号では、Ｓ０（消去）状態で”１１１１”というデータを記憶し、Ｓ１状態で”０１１１”というデータを記憶するといったように、任意の２つの隣接する領域間で１ビットのみデータが変化する。このように、図６Ａ及び図６Ｂに示したデータコーディングは、任意の２つの隣接する領域間で１ビットのみデータが変化するグレイ符号である。
【００６７】
図６Ａに示す本実施形態のコーディングでは、各ページのビット値を判定するための境界となるしきい値電圧は、以下に示す通りである。
【００６８】
・Topページのビット値を判定するための境界となるしきい値電圧はＶｒ１、Ｖｒ３、Ｖｒ５、Ｖｒ７、Ｖｒ１２である。
・Upperページのビット値を判定するための境界となるしきい値電圧はＶｒ２、Ｖｒ６、Ｖｒ１０、Ｖｒ１３、Ｖｒ１５である。
・Middleページのビット値を判定するための境界となるしきい値電圧はＶｒ４、Ｖｒ９、Ｖｒ１１、Ｖｒ１４である。
・Lowerページのビット値を判定するための境界となるしきい値電圧はＶｒ８である。
【００６９】
このように、ビット値を判定するための境界となるしきい値電圧の数（以下、境界数とよぶ）が、Lowerページ、Middleページ、Upperページ、Topページでそれぞれ１，４，５，５である。以下、このようなコーディングをLowerページ、Middleページ、Upperページ、Topページのそれぞれの境界数を用いて、１−４−５−５コーディングという。
【００７０】
本実施形態の第１の特徴は、ページごとのビット値が変化する境界数が最大５であることである。１６個の状態を４ビットで表現する場合、最大境界数の最小値は４であり、図６のコーディングは、これよりも１つ多いだけであり、ビットエラーの偏りが少なくなる。このように、本実施形態によるメモリシステム１は、第１の特徴を備えることで、ビットエラー率を抑制でき、またページごとにビットエラーの偏りも抑制できる。
【００７１】
本実施形態の第２の特徴は、Lowerページの境界数が１つ、Middleページの境界数が４つであり、LowerページとMiddleページをひとまとめとした第１ステージのプログラムと、UpperページとTopページをひとまとめとした第２ステージのプログラムとの２つのステージでプログラムが可能になることである。
【００７２】
本実施形態の第３の特徴は、第１ステージのプログラムで生成されたしきい値領域から、第２ステージのプログラムで生成されたしきい値領域への変化幅が少ないことである。すなわち、しきい値領域の変化幅が小さいことである。しきい値領域の変化幅が小さいほど、隣接セル間干渉を受けにくくなる。上述した第１〜第３の特徴については、後に詳述する。
【００７３】
不揮発性メモリ３の制御部２２は、図６Ａ又は図６Ｂに示したコーディングに基づいて、ＮＡＮＤメモリセルアレイ２３へのプログラム及びＮＡＮＤメモリセルアレイ２３からの読み出しを制御する。
【００７４】
３次元メモリセルは、メモリセルの微細化が２次元メモリセルほどは進行していない。このため、３次元メモリセルにおいて、隣接するメモリセル同士の間隔が広い世代であれば、セル間相互干渉が小さい。この場合は、一般に、各メモリセルの全ビットを同時に、例えば各ビットを異なるページに割り付けていれば全ページを同時に、プログラムする手法が取られる。
【００７５】
各メモリセルの全ビットを同時にプログラムする場合、データコーディングとしては、特に組み合わせを問わない。全ビットのデータに基づき、１６個のしきい値領域のどれに位置するかが決定され、消去状態であるＳ０の領域から、決定されたしきい値領域になるようにプログラムすればよい。この場合、一般に、４−４−３−４データコーディングといった、最大境界数が最小値をとるようなデータコーディングが採用される。４−４−３−４データコーディングでは、１６個のしきい値領域間の１５個の境界を４つのページに分配する際に、Lowerページに４つ、Middleページに４つ、Upperページに３つ、Topページに４つの境界を分配する。このデータコーディングの場合、ページ間の境界数の偏りが小さいために、結果としてページ間のビットエラー率の偏りが小さくなる。これは、ビットエラーの原因のほとんどが、隣接するしきい値領域にしきい値がシフトすることによって引き起こされ、境界数を多く有するページほどビットエラー数が多くなるためである。このことは、メモリセルとしてのエラー率が同じであったとしても、ページデータのエラーを訂正するのに必要なＥＣＣ回路１０の訂正能力を強化しなくてはいけないことにつながるので、ホスト４からの書込み要求に対するメモリシステム１の応答性能、コスト及び消費電力の悪化を抑制するためにも有効である。また、境界数の偏りによって引き起こされる読み出し速度の偏りも小さくなる。
【００７６】
また、４ビット／ＣｅｌｌのＮＡＮＤメモリ５では、隣接するしきい値領域の間隔が狭まるため、セル間相互干渉による影響が１ビット／Ｃｅｌｌや２ビット／ＣｅｌｌのＮＡＮＤメモリ５と比較して大きくなる。このため、近年の微細化が進んだ世代のＮＡＮＤメモリ５では、一般に、セル間相互干渉を抑えるため、複数のプログラムステージ、例えば２つのプログラムステージ（以下、単にステージと呼ぶ場合もある）を用いて、メモリセルの電荷蓄積層４７に少しずつ電荷を注入するプログラム方法（Foggy-Fineプログラム）が採用される。このFoggy-Fineプログラムでは、１つ目のステージ（Foggyステージ）でメモリセルへの書き込みを行った後に隣接セルの書き込みを行い、この後最初のメモリセルに戻り２つ目のステージ（Fineステージ）の書込みを行う。この場合の各ステージは、プログラムの実行単位であり、１ワード線ＷＬｉに対応するメモリセルのプログラムは２つのプログラムステージを実行することで完了する。
【００７７】
１つ目のステージのプログラムでも２つ目のステージのプログラムでも、１６個のしきい値領域を用いてプログラムが実行される。１つ目のステージのプログラム終了時のしきい値領域のしきい値分布は、最終的なデータコーディングにおけるしきい値領域のしきい値分布より広い幅を有する。すなわち、Foggyステージでは、Foggy（ラフ）書き込みが行われる。このFoggyステージのプログラムでは、入力データは４ページ全てが必要である。Foggyステージのプログラム後のしきい値分布は、隣接する分布が互いに重なり合っている中間状態であるので、データの読み出しは出来ない。２つ目のステージであるFineステージのプログラムでは、Foggyステージのプログラム後のしきい値領域を最終的なデータコーディングにおけるしきい値領域に移動させる。すなわち、Fineステージでは、Fine書き込みが行われる。このFineステージのプログラムも、入力データは４ページ全てが必要である。Fineステージのプログラム後のしきい値分布は、隣接する分布が分離された最終状態であるので、Fineステージのプログラム後にはデータの読み出しが可能である。
【００７８】
４−４−３−４データコーディングの場合、境界数の偏りは少ないが、Foggy-Fineプログラムのデータ入力において、各ステージで４ページ分のデータ入力が必要となる。これは、データ入力にかかる時間の増大となり、ホスト４からの書込み要求に対するメモリシステム１の応答性能を悪化させてしまう。また、メモリシステム１内において、ＮＡＮＤメモリ５へ入力するためにデータを保持しておくための書き込みバッファ（第１記憶部）のバッファ量（書き込みバッファ量）を増大させてしまう。この書き込みバッファは、一般に、メモリシステム１内のＲＡＭ６の一部の領域が割り当てられたものである。
【００７９】
これらに対する対策として、本実施形態では、メモリシステム１が、３次元構造を有した不揮発性メモリ３に対して、１−４−５−５データコーディングを採用し、さらに、２ステージでページ単位（page by page）の書き込みを実施する。これにより、本実施形態では、３次元構造を有する不揮発性メモリ３においてもセル間相互干渉と各ページ間のビットエラー率の偏りを抑制しつつ、メモリコントローラ２の書き込みバッファ量を低減する。本実施形態の書き込みバッファは、第１乃至第４ビット（Lowerページ、Middleページ、Upperページ及びTopページの各データ）のうち、第１プログラム及び第２プログラム時に重複して入力されるビットのデータを、第２プログラムを開始した以降は破棄又は無効化可能とし、それ以外のビットのデータを、第１プログラムを開始した以降は破棄又は無効化可能とする。
【００８０】
ここで、隣接メモリセル間干渉について説明する。ある１つのメモリセルの電荷蓄積層４７に蓄積された電荷は、隣接するメモリセルの電界を乱し、その結果、隣接するメモリセルを読み出す際のしきい値電圧を変動させるノイズを与える。ある電界条件下でプログラムとベリファイとが実施され、プログラムが完結した後、隣接するメモリセルが異なる電荷にプログラムされるということは、これに起因して読み出し精度が劣化することになる。この隣接メモリセル間干渉は、メモリデバイスの製造技術が微細化され、メモリセル間隔が縮小するにつれて顕著となる。そして、この隣接メモリセル間干渉は、大きくは同一ワード線ＷＬｉ上の異なるビット線に接続された隣接メモリセル同士で生じる。
【００８１】
隣接メモリセル間干渉は、プログラム及びベリファイの時と、隣接するメモリセルがプログラムされた後の読み出しの時とで、メモリセルの電界条件の違いを小さくすることによって緩和することができる。同一ワード線ＷＬｉ上の異なるビット線に接続された隣接メモリセル同士の隣接メモリセル間干渉を低減する１つの方法として、プログラムを複数のステージに分割し、各ステージ間で電荷蓄積層４７内の電荷量に大きな変化が起きないようにプログラムを実行する方法がある。
【００８２】
本実施形態におけるプログラムシーケンスでは、１つのワード線ＷＬｉ上の４ビットは、２つのプログラムステージ、すなわち１ｓｔステージと２ｎｄステージとによってプログラムされる。各プログラムステージは、プログラムの実行単位であり、本実施形態のメモリシステム１は、メモリセルへの４ビットデータの書込みを、２つのプログラムステージを実行することで完了する。また、本実施形態では、２つのプログラムステージのそれぞれに、４ビットの何れかのページのデータが用いられる。具体的には、１ｓｔステージのプログラムには、Lowerページデータ、Middleページ及びTopページのデータが用いられ、２ｎｄステージのプログラムには、Middleページ及びUpperページ及びTopページのデータが用いられる。
【００８３】
図７は第１の実施形態におけるプログラム後のしきい値領域を示す図である。図７では、メモリセルに対して１ｓｔステージと２ｎｄステージのプログラムを行った後のしきい値領域を示している。図７の（Ｔ１）は、プログラム前の初期状態である消去状態のしきい値領域を示している。図７の（Ｔ２）は、１ｓｔステージのプログラム（第１プログラム）後のしきい値領域を示している。図７の（Ｔ３）は、２ｎｄステージのプログラム（第２プログラム）後のしきい値領域を示している。
【００８４】
図７の（Ｔ１）に示すように、ＮＡＮＤメモリセルアレイ２３の全メモリセルは、未書き込みの状態（「消去」の状態）では分布Ｓ０の状態である。不揮発性メモリ３の制御部２２は、図７の（Ｔ２）に示すように、１ｓｔステージのプログラムでは、LowerページおよびMiddleページおよびTopページに書き込む（記憶する）ビット値に応じて、メモリセルごとに分布Ｓ０のままとする、または電荷を注入して分布Ｓ０よりも上の分布に移動させる。
【００８５】
具体的には、制御部２２は、LowerページおよびMiddleページおよびTopページに書き込むビット値がともに“１”の場合は、電荷を注入せず、LowerページおよびMiddleページおよびTopページに書き込むビット値のどれが１つでも“０”の場合は電荷を注入して、しきい値電圧を高い方に移動させるようプログラムする。
【００８６】
すなわち、LowerページとMiddleページとTopページに書き込むビット値が “０１１”の場合は分布Ｓ１へ、またLowerページとMiddleページとTopページに書き込むビット値が “１０１”の場合は分布Ｓ４へ、またLowerページとMiddleページとTopページに書き込むビット値が “００１”の場合は分布Ｓ５へ、またLowerページとMiddleページとTopページに書き込むビット値が “１００”の場合は分布Ｓ８へ、またLowerページとMiddleページとTopページに書き込むビット値が “１１０”の場合は分布Ｓ９へ、またLowerページとMiddleページとTopページに書き込むビット値が “０００”の場合は分布Ｓ１２へ、またLowerページとMiddleページとTopページに書き込むビット値が “０１０”の場合は分布Ｓ１４へ移動させる。
【００８７】
ここで好ましくは、分布Ｓ１、分布Ｓ４、分布Ｓ５、分布Ｓ８、分布Ｓ９、分布Ｓ１２、分布Ｓ１４は、しきい値電圧が多少低くなるようにしきい値領域の幅を広げて粗くプログラムする。すなわち、後述する、プログラム電圧パルスの上昇幅を大きくする。それにより書き込みにかかる時間を短縮することができる。そしてしきい値電圧が多少低くなるようにプログラムすることで、２ｎｄステージのプログラムで最終的に所定の幅になるようにしきい値分布領域の幅を書き込みすることができる。
【００８８】
そして好ましくは、隣接する分布Ｓ８と分布Ｓ９、および隣接するしきい値分布Ｓ１２と分布Ｓ１４のそれぞれの間隔は、他の隣接する分布との間隔よりも狭くする。これらの間隔を狭くした隣接しきい値分布同士の書き込みビット値は、Middleページのデータが異なっている。すなわち、１ｓｔステージのプログラム後のデータは、バイナリのように見えるので、LowerページとMiddleページデータとTopページの読み出しが可能であるが、Middleページのデータが異なるしきい値分布の間隔は狭くすることで、LowerページとTopページのデータが異なるしきい値分布の間隔は広く確保し、LowerページとTopページの読み出しの際のマージンを増加させる。図７の（Ｔ２）に示すしきい値分布Ｓ０〜Ｓ１４は、第１７乃至第２４のしきい値領域に対応する。
【００８９】
次に、図７の（Ｔ３）に示すように、２ｎｄステージのプログラムでは、データの書き込みにはMiddleページとUpperページとの２ページが必要である。そして、不揮発性メモリ３の制御部２２は、２ｎｄステージのプログラム後のしきい値分布を、各隣接する分布が分離された最終状態で１６値のレベルとなるようにプログラムする。２ｎｄステージのプログラム後は、全てのページデータの読み出しが可能である。
【００９０】
２ｎｄステージのプログラムにおいて、メモリセルのしきい値の１ｓｔステージのプログラム終了時からの変化幅が大きいほど、隣接セル間干渉が大きくなる。したがって、メモリセルのしきい値分布の変化量が最も大きいしきい値分布の変化量が最小になることが好ましい。本実施例によれば、この最大のしきい値分布の変化量はしきい値分布３つ分で、Ｓ０がＳ３に変化する場合と、Ｓ４がＳ７に変化する場合と、Ｓ８がＳ１１に変化する場合である。図７の（Ｔ３）に示すしきい値分布Ｓ０〜Ｓ１５は、第１乃至第１６のしきい値領域に対応する。
【００９１】
なお、典型的には、プログラムは、１回または複数回のプログラム電圧パルスが印加されることによって行われる。複数回のプログラム印加パルスにおいては、電圧値は段階的に上昇させる。各プログラム電圧パルスの後には、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、ベリファイと呼ばれる読み出しが行なわれる。この印加と読み出しとが繰り返されることで、所定のしきい値分布の範囲の中にメモリセルのしきい値を移動させることが可能となる。
【００９２】
なお、制御部２２は、１つのワード線ＷＬｉについて、１ｓｔステージのプログラムと、２ｎｄステージのプログラムとを連続して実施してもよいが、隣接メモリセル間干渉の影響を低減するために、複数のワード線ＷＬｉをまたいで、非連続的な順序でプログラムを実施することも可能である。
【００９３】
図８Ａは第１の実施形態のプログラム順序の第１例を示す図である。図８Ｂは第１の実施形態のプログラム順序の第２例を示す図である。図８Ｃは第１の実施形態のプログラム順序の第３例を示す図である。図８Ａ〜図８Ｃでは、隣接メモリセル間干渉の影響を小さくするために、２つのプログラムステージでプログラムを行う。図８Ａは、各ブロック内の各ワード線に１個のストリングＳｔが接続されているＮＡＮＤメモリ５におけるプログラム順序の一例を示している。また、図８Ｂ及び図８Ｃは、各ブロック内の各ワード線に４つのストリングＳｔが接続されているＮＡＮＤメモリ５におけるプログラム順序の一例を示している。なお、図８Ｂ及び図８Ｃでは、各ワード線に接続された４つのストリングＳｔをString０〜３と表記している。
【００９４】
書き込みを開始すると、制御部２２は、所定の非連続的な順序でワード線ＷＬｉをまたぎながら、各プログラムステージを進む。すなわち、同一ワード線についての１ｓｔステージと２ｎｄステージは、連続的には実行されず、あるワード線について１ｓｔステージのプログラムを行った後に、異なるワード線について２ｎｄステージのプログラムを行う。
【００９５】
あるワード線について２ｎｄステージまでプログラムを完了した後に、隣接するワード線について１ｓｔステージ及び２ｎｄステージのプログラムを連続して行うと、しきい値電圧の変動量が大きくなる。そして、隣接ワード線のしきい値電圧の変動量が大きいと、ワード線間の隣接メモリセル間干渉が大きくなる。したがって、ワード線間の隣接メモリセル間干渉を小さくするためには、ワード線が２ｎｄステージまでプログラムを完了した後に、隣接ワード線のしきい値電圧の変動量を小さくすることが有効である。図８Ａのシーケンスであれば、あるワード線が２ｎｄステージまでプログラムを完了した後の隣接ワード線のプログラムステージは２ｎｄステージのみとなる。
【００９６】
図８Ａのプログラム順序で３次元構造のＮＡＮＤメモリ５にプログラムを行う場合、書き込みを開始すると、制御部２２は、プロセッサ８からの指示に基づいて、以下の（１）〜（９）に示す順番でプログラムを実行する。制御部２２は、プロセッサ８からの指示に基づいてＮＡＮＤメモリ５へのプログラムを行うが、以下では、プロセッサ８からの指示に基づく旨の記述を省略する。
【００９７】
（１）まず、制御部２２は、ワード線ＷＬ０の１ｓｔステージのプログラムＳＴ1１を実施する。
（２）次に、制御部２２は、ワード線ＷＬ１の１ｓｔステージのプログラムＳＴ1２を実施する。
（３）次に、制御部２２は、ワード線ＷＬ０の２ｎｄステージのプログラムＳＴ1３を実施する。
（４）次に、制御部２２は、ワード線ＷＬ２の１ｓｔステージのプログラムＳＴ1４を実施する。
（５）次に、制御部２２は、ワード線ＷＬ１の２ｎｄステージのプログラムＳＴ1５を実施する。
（６）次に、制御部２２は、ワード線ＷＬ３の１ｓｔステージのプログラムＳＴ1６を実施する。
（７）次に、制御部２２は、ワード線ＷＬ２の２ｎｄステージのプログラムＳＴ1７を実施する。
（８）次に、制御部２２は、ワード線ＷＬ４の１ｓｔステージのプログラムＳＴ1８を実施する。
（９）次に、制御部２２は、ワード線ＷＬ３の２ｎｄステージのプログラムＳＴ1９を実施する。
【００９８】
以下同様に、制御部２２は、図８Ａの左下から右上に向けて斜め上方に処理を進めていく。このように、図８Ａでは、不揮発性メモリ３内の複数のメモリセルは、第１ワード線に接続された複数の第１メモリセルと、第１ワード線に隣接する第２ワード線に接続された複数の第２メモリセルと、を有し、メモリコントローラ２は、複数の第１メモリセルに対して第１プログラムを行わせた後、複数の第２メモリセルに対して第１プログラムを行わせ、次に複数の第２メモリセルに対して第１プログラムを行わせた後、複数の第１メモリセルに対して第２プログラムを行わせる。
【００９９】
図８Ｂのプログラム順序で３次元構造のＮＡＮＤメモリ５にプログラムを行う場合、書き込みを開始すると、制御部２２は、以下の（１１）〜（２４）に示す順番でプログラムを実行する。
【０１００】
（１１）まず、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ０の１ｓｔステージのプログラムＳＴ２１を実施する。
（１２）次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ０の１ｓｔステージのプログラムＳＴ２２を実施する。
（１３）次に、制御部２２は、ストリングＳｔ２＿ワード線ＷＬ０の１ｓｔステージのプログラムＳＴ２３を実施する。
（１４）次に、制御部２２は、ストリングＳｔ３＿ワード線ＷＬ０の１ｓｔステージのプログラムＳＴ２４を実施する。
（１５）次に、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ１の１ｓｔステージのプログラムＳＴ２５を実施する。
（１６）次に、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ０の２ｎｄステージのプログラムＳＴ２６を実施する。
（１７）次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ１の１ｓｔステージのプログラムＳＴ２７を実施する。
（１８）次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ０の２ｎｄステージのプログラムＳＴ２８を実施する。
（１９）次に、制御部２２は、ストリングＳｔ２＿ワード線ＷＬ１の１ｓｔステージのプログラムＳＴ２９を実施する。
（２０）次に、制御部２２は、ストリングＳｔ２＿ワード線ＷＬ０の２ｎｄステージのプログラムＳＴ２１０を実施する。
（２１）次に、制御部２２は、ストリングＳｔ３＿ワード線ＷＬ１の１ｓｔステージのプログラムＳＴ２１１を実施する。
（２２）次に、制御部２２は、ストリングＳｔ３＿ワード線ＷＬ０の２ｎｄステージのプログラムＳＴ２１２を実施する。
（２３）次に、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ２の１ｓｔステージのプログラムＳＴ２１３を実施する。
（２４）次に、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ１の２ｎｄステージのプログラムＳＴ２１４を実施する。
【０１０１】
以下同様に、制御部２２は、図８Ｂの左下から右上に向けて斜め上方に処理を進めていく。なお、図８Ｂでは、ブロック内のストリングＳｔが４つである場合について説明したが、ブロック内のストリングＳｔは、３つ以下であってもよいし、５つ以上であってもよい。
【０１０２】
図８Ｃのプログラム順序で３次元構造のＮＡＮＤメモリ５にプログラムを行う場合、書き込みを開始すると、制御部２２は、以下の（３１）〜（５０）に示す順番でプログラムを実行する。
【０１０３】
（３１）まず、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ０の１ｓｔステージのプログラムＳＴ３１を実施する。
（３２）次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ０の１ｓｔステージのプログラムＳＴ３２を実施する。
（３３）次に、制御部２２は、ストリングＳｔ２＿ワード線ＷＬ０の１ｓｔステージのプログラムＳＴ３３を実施する。
（３４）次に、制御部２２は、ストリングＳｔ３＿ワード線ＷＬ０の１ｓｔステージのプログラムＳＴ３４を実施する。
（３５）まず、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ１の１ｓｔステージのプログラムＳＴ３５を実施する。
（３６）次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ１の１ｓｔステージのプログラムＳＴ３６を実施する。
（３７）次に、制御部２２は、ストリングＳｔ２＿ワード線ＷＬ１の１ｓｔステージのプログラムＳＴ３７を実施する。
（３８）次に、制御部２２は、ストリングＳｔ３＿ワード線ＷＬ１の１ｓｔステージのプログラムＳＴ３８を実施する。
（３９）次に、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ０の２ｎｄステージのプログラムＳＴ３９を実施する。
（４０）次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ０の２ｎｄステージのプログラムＳＴ３１０を実施する。
（４１）次に、制御部２２は、ストリングＳｔ２＿ワード線ＷＬ０の２ｎｄステージのプログラムＳＴ３１１を実施する。
（４２）次に、制御部２２は、ストリングＳｔ３＿ワード線ＷＬ０の２ｎｄステージのプログラムＳＴ３１２を実施する。
（４３）次に、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ２の１ｓｔステージのプログラムＳＴ３１３を実施する。
（４４）次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ２の１ｓｔステージのプログラムＳＴ３１４を実施する。
（４５）次に、制御部２２は、ストリングＳｔ２＿ワード線ＷＬ２の１ｓｔステージのプログラムＳＴ３１５を実施する。
（４６）次に、制御部２２は、ストリングＳｔ３＿ワード線ＷＬ２の１ｓｔステージのプログラムＳＴ３１６を実施する。
（４７）次に、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ１の２ｎｄステージのプログラムＳＴ３１７を実施する。
（４８）次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ１の２ｎｄステージのプログラムＳＴ３１８を実施する。
（４９）次に、制御部２２は、ストリングＳｔ２＿ワード線ＷＬ１の２ｎｄステージのプログラムＳＴ３１９を実施する。
（５０）次に、制御部２２は、ストリングＳｔ３＿ワード線ＷＬ１の２ｎｄステージのプログラムＳＴ３２０を実施する。
【０１０４】
なお、図８Ｃでは、ブロック内のストリングＳｔが４つである場合について説明したが、ブロック内のストリングＳｔは、３つ以下であってもよいし、５つ以上であってもよい。
【０１０５】
このように、ストリングＳｔが複数となっても、１つのストリングＳｔ内におけるワード線ＷＬｉの各プログラムステージのプログラムの順番は、ストリングＳｔが１つの場合と同じである。ブロック内に複数のストリングＳｔが存在する３次元構造の不揮発性メモリ３の場合、ワード線ＷＬｉとストリングＳｔとの組み合わせ位置のプログラムは、一般には、異なるストリングＳｔ内の同一ワード線番号をまずプログラムしてから、次のワード線番号に進められる。このような順番に従った場合、図８ＡをストリングＳｔ数分だけ結合すると、例えば、図８Ｂまたは図８Ｃのような順番となる。
【０１０６】
ここで、図９〜図１１を用いて、第１の実施形態によるプログラム順序に従った書き込み手順の例について説明する。図９〜図１１では、図８Ｂまたは図８Ｃに示すプログラム順序に従った場合の書き込み手順を示している。前述のように、メモリコントローラ２は、非連続的な順序でワード線ＷＬｉをまたぎながらプログラムステージを進めていくので、あるワード線ＷＬｉのまとまり（ここではブロック）をプログラムシーケンスのまとまりとしてプログラムを実行する。
【０１０７】
図９は第１の実施形態による１ブロック分全体の書き込み手順の第１例を示すフローチャートである。ここでの１ブロックは、ワード線ＷＬ０〜ＷＬｎ（ｎは自然数）のｎ＋１本のワード線ＷＬｉを有するとする。図１０は第１の実施形態による１ｓｔステージにおける書き込み手順を示すフローチャートであり、図１１は、第１の実施形態による２ｎｄステージでの書き込み手順を示すフローチャートである。
【０１０８】
図９に示すように、書き込みを開始すると、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ０の１ｓｔステージのプログラムを実行する（ステップＳ１０）。次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ０の１ｓｔステージのプログラムを実行する（ステップＳ２０）。この後、制御部２２は、各ストリングＳｔに対してステップＳ１０、Ｓ２０と同様の処理を実行する。そして、制御部２２は、ストリングＳｔ３＿ワード線ＷＬ０の１ｓｔステージのプログラムを実行する（ステップＳ３０）。
【０１０９】
さらに、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ１の１ｓｔステージのプログラムを実行する（ステップＳ４０）。次に、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ０の２ｎｄステージのプログラムを実行する（ステップＳ５０）。次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ１の１ｓｔステージのプログラムを実行する（ステップＳ６０）。この後、制御部２２は、各ストリングＳｔの各ワード線ＷＬｉに対してステップＳ４０、Ｓ５０、Ｓ６０のような処理を繰り返す。
【０１１０】
そして、制御部２２は、ストリングＳｔ０＿ワード線ＷＬｎの１ｓｔステージのプログラムを実行する（ステップＳ７０）。次に、制御部２２は、ストリングＳｔ０＿ワード線ＷＬｎ−１の２ｎｄステージのプログラムを実行する（ステップＳ８０）。この後、制御部２２は、各ストリングＳｔの各ワード線ＷＬｉに対してステップＳ７０、Ｓ８０のような処理を繰り返す。
【０１１１】
そして、制御部２２は、ストリングＳｔ３＿ワード線ＷＬｎ−１の２ｎｄステージのプログラムを実行する（ステップＳ９０）。次に、制御部２２は、ストリングＳｔ０＿ワード線ＷＬｎの２ｎｄステージのプログラムを実行する（ステップＳ１００）。次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬｎの２ｎｄステージのプログラムを実行する（ステップＳ１１０）。この後、制御部２２は、各ストリングＳｔに対してステップＳ１００、Ｓ１１０と同様の処理を実施する。そして、制御部２２は、ストリングＳｔ３＿ワード線ＷＬｎの２ｎｄステージのプログラムを実行する（ステップＳ１２０）。
【０１１２】
図１０は１ｓｔステージの書込み手順の第１例を示すフローチャートである。１ｓｔステージのプログラムでは、まず、メモリコントローラ２から不揮発性メモリ３へLowerページデータの入力開始コマンドが入力される（ステップＳ２１０）。そして、メモリコントローラ２から不揮発性メモリ３へLowerページデータが入力される（ステップＳ２１５）。次に、メモリコントローラ２から不揮発性メモリ３へMiddleページデータの入力開始コマンドが入力される（ステップＳ２２０）。そして、メモリコントローラ２から不揮発性メモリ３へMiddleページデータが入力される（ステップＳ２２５）。次に、メモリコントローラ２から不揮発性メモリ３へTopページデータの入力開始コマンドが入力される（ステップＳ２３０）。そして、メモリコントローラ２から不揮発性メモリ３へTopページデータが入力される（ステップＳ２３５）。さらに、メモリコントローラ２から不揮発性メモリ３へ１ｓｔステージのプログラム実行コマンドが入力され（ステップＳ２４０）、これによりチップビジーとなる（ステップＳ２４５）。
【０１１３】
データ書き込みの際には、しきい値電圧Ｖthを決定し（ステップＳ２５０）、１〜複数回のプログラム電圧パルスが印加される（ステップＳ２５５）。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するためのデータ読み出し（ベリファイ）が行なわれる（ステップＳ２６０）。
【０１１４】
さらに、LowerページおよびMiddleページおよびTopページにおけるデータのフェイルビット数がクライテリア（判定基準）よりも小さいか否かが確認される（ステップＳ２６５）。データのフェイルビット数がクライテリア以上である場合、プログラムパルス印加からクライテリア判定までの処理（ステップＳ２５５〜Ｓ２６５）が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると、チップレディーとなる（ステップＳ２７０）。このように、印加と、読み出しと、確認とが繰り返されることで、所定のしきい値分布の範囲の中にメモリセルのしきい値を移動させることが可能となる。
【０１１５】
なお、上述したように、１ｓｔステージ書き込み時のプログラム電圧パルス印加後の読み出しレベルは、２ｎｄステージ書き込み後の読出しレベルと若干異なっていてもよく、好ましくは、２ｎｄステージ書き込み後の読出しレベルよりも低いレベルである。すなわち、Ｖｒ１’≦Ｖｒ１、Ｖｒ４’≦Ｖｒ４、Ｖｒ５’≦Ｖｒ５、Ｖｒ８’≦Ｖｒ８、Ｖｒ９’≦Ｖｒ９、Ｖｒ１２’≦Ｖｒ１２、Ｖｒ１４’≦Ｖｒ１４である。
【０１１６】
また、１ｓｔステージ書き込みにおけるプログラム電圧パルス印加後の読み出しにおいて、Ｖｒ９’による読み出しとＶｒ１４’による読み出しを省略し、Ｖｒ９’はＶｒ８’の読み出しをパスした後、ある規定回数のプログラム電圧パルスを印加後に書き込み完了とし、Ｖｒ１４’はＶｒ１３’の読み出しをパスした後、ある規定回数のプログラム電圧パルスを印加後に書き込み完了としてもよい。
【０１１７】
これは、上述したように、１ｓｔステージのプログラム後のデータにおいてMiddleページのデータが異なるしきい値領域の間隔を狭くすることで、２ｎｄステージ書き込み時に読み出しを行うLowerページとTopページのデータが異なるしきい値領域の間隔が、ある規定回数のプログラム電圧パルスを印加するだけという簡単な制御でも、十分広く確保できるためである。
【０１１８】
さらに、Ｖｒ８’とＶｒ９’とＶｒ１２’とＶｒ１４’のプログラム電圧パルス印加後の読み出しを省略し、Ｖｒ５’の読み出しをパスした後、それぞれのある規定回数のプログラム電圧パルスを印加後に書き込み完了としてもよい。この他、更にＶｒ４’、Ｖｒ5’、Ｖｒ8’、Ｖｒ９’Ｖｒ１２’、Ｖｒ１４’のプログラム電圧パルス印加後の読み出しを省略し、Ｖｒ１’の読み出しをパスした後、それぞれのある規定回数のプログラム電圧パルスを印加後に書き込み完了としてもよい。
【０１１９】
図１１は２ｎｄステージの書込み手順の第１例を示すフローチャートである。２ｎｄステージのプログラムでは、まず、メモリコントローラ２から不揮発性メモリ３へMiddleページのデータの入力開始コマンドが入力される（ステップＳ３１０）。そして、メモリコントローラ２から不揮発性メモリ３へMiddleページのデータが入力される（ステップＳ３２０）。
【０１２０】
次に、メモリコントローラ２から不揮発性メモリ３へUpperページのデータの入力開始コマンドが入力される（ステップＳ３３０）。そして、メモリコントローラ２から不揮発性メモリ３へUpperページのデータが入力される（ステップＳ３４０）。次に、メモリコントローラ２から不揮発性メモリ３へ２ｎｄステージのプログラム実行コマンドが入力され（ステップＳ３５０）、これによりチップビジーとなる（ステップＳ３６０）。
【０１２１】
この後、制御部２２は、ＩＤＬ（Internal  Data  Load）であるLowerページおよびTopページデータの読み出しを行う（ステップＳ３７０）。そして、さきに入力されたMiddleページデータと、ＩＤＬによるLowerページおよびTopページのデータに基づいて、Upperページのプログラム先のＶｔｈ（しきい値電圧）が決定される（ステップＳ３８０）。この後、決定されたＶｔｈを用いて、Upperページへのデータ書き込みが行われる。より具体的には、決定されたしきい値電圧になるように、複数のプログラムパルスの電圧値を少しずつ上げて書き込む（ステップＳ３９０）。目的とするしきい値電圧に達したメモリセルは書込み対象から除外される。
【０１２２】
その後、書き込んだデータを読み出して（ステップＳ４００）、フェイルビット数がクライテリア（判定基準）よりも小さいか否かが確認される（ステップＳ４１０）。データのフェイルビット数がクライテリア以上である場合、プログラムパルス印加からクライテリア判定までの処理（ステップＳ３９０〜Ｓ４１０）が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると、チップレディーとなる（ステップＳ４２０）。
【０１２３】
ここで、本実施形態には、２つの特徴がある。第１の特徴は、Middleページのデータは１ｓｔステージのプログラムでもすでに入力されており、１ｓｔプログラム後のしきい値領域はMiddleページのデータも含まれた書き込み状態であるが、２ｎｄステージのプログラムでも再びMiddleページのデータを入力していることである。第２の特徴は、１ｓｔステージのプログラムではそのMiddleページのデータが切り替わる隣接しきい値領域同士は間隔が狭くなっており、LowerページのデータとTopページのデータが切り替わる隣接しきい値分布同士は反対に間隔が広くなっていることである。これにより、ＩＤＬで読み出す LowerページおよびTopページデータの信頼性を上げることができる。一方、Middleページのデータは、もしＩＤＬでデータを読み出したとしたら信頼性が低下するおそれがあるが、本実施形態では１ｓｔステージプログラムで使用したMiddleページのデータを再び入力するため、信頼性が低下するおそれはない。
【０１２４】
さらに、制御部２２は、ＩＤＬの読み出しデータの信頼性を上げるために、複数回数読み出しを行い、チップ内のページバッファでこの読み出し結果の多数決をとり、次の書き込みデータとして使用することも可能である。無論、制御部２２は、通常の読み出し動作時に於いて、複数回数読み出しを行いチップ内でこの読み出し結果の多数決をとり、外部への読み出しデータとして使用することも可能である。
【０１２５】
図１２は複数回数の読み出し結果の多数決処理を説明するための図である。図１２では、所定のページのデータを読み出した結果として、正しいビットを丸印（○）で示し、誤ったビットをばつ印（×）で示している。また、図１２では、３回の読み出しが行われた場合の多数決の結果を示している。
【０１２６】
各ビットにおいて、多数決の結果が誤りと判断されるのは、（ａ）３回とも誤った場合と、（ｂ）２回とも誤った場合である。各ビットが誤っている確率をｐとすると、ｐ＝０．２の場合、（ａ）３回誤る確率は、ｐ×ｐ×ｐ＝０．２×０．２×０．２であり、（ｂ）２回誤る確率は、（１−ｐ）×ｐ×ｐ＝（１−０．２）×０．２×０．２である。
【０１２７】
したがって、３回の多数決結果が誤りと判断されるのは、（ｐ×ｐ×ｐ）＋３×（１−ｐ）×ｐ×ｐ＝０．１０４である。このように、制御部２２は、複数回数の読み出し結果の多数決処理をチップ内のページバッファ２４で行うことで、読み出しデータの信頼性を上げることが可能となる。
【０１２８】
さらに、制御部２２は、ワード線ＷＬｎの２ｎｄステージ書き込みにおけるＩＤＬの読み出しデータの信頼性を上げるために、ＷＬｎ＋１の１ｓｔステージ書き込みで書き込みを行ったデータもしくはしきい値電圧に応じて、ＩＤＬにおけるワード線ＷＬｎの読み出し電圧を変えて読み出しを行っても良い。
【０１２９】
そしてさらに、制御部２２は、ワード線ＷＬｎの２ｎｄステージ書き込みにおけるＩＤＬの読み出しデータの信頼性を上げるために、ワード線ＷＬｎ＋１の１ｓｔステージ書き込みで書き込みを行ったデータもしくはしきい値電圧に応じて、ＩＤＬにおけるワード線ＷＬｎ＋１の非選択電圧を変えて読み出しを行っても良い。このとき同時にワード線ＷＬｎの読み出し電圧を変えて読み出しを行っても良い。
【０１３０】
Upperページへのデータ書き込みの際には、１〜複数回のプログラム電圧パルスが印加される。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、Upperページのデータ読み出し（ベリファイ）が行なわれる。このときの読み出しレベルは所定のレベルである。
【０１３１】
さらに、Upperページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かが確認される。Upperページにおけるデータのフェイルビット数がクライテリア以上である場合、プログラム電圧パルス印加からベリファイの処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると、チップレディーとなる。
【０１３２】
ここで、図１１に示した書き込み手順の変形例について説明する。図１３は第１の実施形態に係る２ｎｄステージでの書き込み手順の変形例を示すフローチャートである。なお、図１３のフローチャートでは、１ｓｔステージでプログラムしたデータを読み出したＩＤＬデータに対してエラー訂正を行った上で不揮発性メモリ３に戻すという手順が追加している。具体的には、まず、メモリコントローラ２から不揮発性メモリ３へLowerページの読み出しコマンドが入力される（ステップＳ５１０）。これにより、チップビジーとなる（ステップＳ５１２）。次に、制御部２２は、Lowerページデータの読み出しをＶｒ８’のしきい値電圧で行う。そして、制御部２２は、Ｖｒ８’のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“０”または“１”に決定する（ステップＳ５１４）。この後、チップレディーとなる（ステップＳ５１６）。
【０１３３】
制御部２２が読み出したLowerページデータを出力すると（ステップＳ５１８）、このLowerページデータは、ＥＣＣ回路１０に送信される（ステップＳ５２０）。これにより、ＥＣＣ回路１０がLowerページデータをＥＣＣ訂正する（ステップＳ５２２）。
【０１３４】
次に、メモリコントローラ２から不揮発性メモリ３へLowerページのデータの入力開始コマンドが入力される（ステップＳ５２４）。これにより、ＥＣＣ回路１０が、不揮発性メモリ３へLowerページのデータを入力する（ステップＳ５２６）。
【０１３５】
次に、メモリコントローラ２から不揮発性メモリ３へTopページの読み出しコマンドが入力され（ステップＳ５２８）、これによりチップビジーとなる（ステップＳ５３０）。この後、制御部２２は、Topページデータの読み出しをＶｒ２’とＶｒ１０’のしきい値電圧で行う。そして、制御部２２は、Ｖｒ１’とＶｒ４’とＶｒ８’とＶｒ１２’のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“０”または“１”に決定する（ステップＳ５３２）。この後、チップレディーとなる（ステップＳ５３４）。
【０１３６】
制御部２２が読み出したTopページデータを出力すると（ステップＳ５３６）、このTopページデータは、ＥＣＣ回路１０に送信される（ステップＳ５３８）。これにより、ＥＣＣ回路１０がTopページデータをＥＣＣ訂正する（ステップＳ５４０）。次に、メモリコントローラ２から不揮発性メモリ３へTopページのデータの入力開始コマンドが入力される（ステップＳ５４２）。これにより、ＥＣＣ回路１０が、不揮発性メモリ３へTopページのデータを入力する（ステップＳ５４４）。
【０１３７】
この後、メモリコントローラ２から不揮発性メモリ３へMiddleページのデータの入力開始コマンドが入力される。（ステップＳ５４６）。これ以降のステップは図１１の手順と同様である。プログラム先のしきい値電圧Ｖthは、ＥＣＣ回路１０からのLowerページデータ及びTopページデータと、再び入力されたMiddleページのデータ、及び新しく入力されたUpperページのデータに基づいてプログラム先のしきい値電圧Ｖthが決定される。
【０１３８】
上述した２ｎｄステージのプログラムでは、不揮発性メモリ３へのデータ入力は、MiddleページとUpperページとの２ページだけである。しかし、この２ｎｄステージでは、メモリセルのプログラムの目的地であるしきい値電圧Ｖthには、Lowerページ、Topページ（２ｎｄステージを始める前のしきい値電圧Ｖth）も含めた４ページ分のデータが必要である。そのため、このステージのプログラムでは、前処理として、制御部２２が、まずLowerページデータとTopページデータを読み出し、そのデータを、さらに入力されたMiddleページとUpperページとで合成してプログラム先のしきい値電圧Ｖthを決定するという動作を行う。なお、２ｎｄステージのベリファイ時の読み出しレベルは、２ｎｄステージ書き込み後の読出しレベルと若干異なっていてもよい。
【０１３９】
ここで、４−３−４−４データコーディングを採用したFoggy-Fineプログラムの処理手順と、本実施形態のプログラム処理手順との比較について説明する。図１４Ａは４−３−４−４データコーディングを採用したFoggy-Fineプログラムにおける書き込みバッファのデータ量を説明する図である。図１４Ｂは本実施形態における書き込みバッファのデータ量を説明する図である。図１４Ｂは１−４−５−５データコーディングを採用した例を示している。
【０１４０】
図１４Ａ及び図１４Ｂでは、上段側に、ブロック書き込みのデータ入力とプログラム実行のタイムチャートを示し、下段側に、書き込みバッファ内にデータを保持するのに必要な期間のタイムチャートを示している。なお、図１４Ａ及び図１４Ｂでは、説明を簡単化するために、１ブロック内のストリングＳｔの個数が１の場合を示している。ストリングＳｔが複数の場合は、書き込みバッファのデータ量がストリングＳｔの個数倍だけ必要となる。
【０１４１】
４−３−４−４データコーディングのFoggy-Fineプログラムの場合、１つ目のステージであるFoggyステージでは、４ページ分のデータ入力と、この４ページ分のプログラム（Foggyステージのプログラム）とが行われる。また、４−３−４−４データコーディングのFoggy-Fineプログラムの場合、２つ目のステージであるFineステージでも、４ページ分のデータ入力と、この４ページ分のプログラム（Fineステージのプログラム）とが行われる。
【０１４２】
そして、各ワード線ＷＬ０、ＷＬ１、ＷＬ２、・・・では、Fineステージにおいてプログラムが開始されるまで、Foggyステージにおいて書き込まれた４ページ分のデータを書き込みバッファ内に格納しておく必要がある。
【０１４３】
Foggy-Fineプログラムにおいても、隣接メモリセル間干渉を低減するため、Lower／Middle／Upper／Topの４ページ分のデータは連続して書き込まれない。例えば、ワード線ＷＬ０へのFoggyステージが実行された後、ワード線ＷＬ０へのFineステージが実行される前に、ワード線ＷＬ０に隣接するワード線ＷＬ１へのFoggyステージが実行される。また、ワード線ＷＬ０へのFoggyステージが実行された後、ワード線ＷＬ１へのFineステージが実行される前に、ワード線ＷＬ１に隣接するワード線ＷＬ２へのFoggyステージが実行される。この方法の場合、最終の２つ目であるFineステージのデータ入力が完了するまで、Lower／Middle／Upper／Topの４ページ分のデータを、書き込みバッファ内に保持しておく必要がある。また、隣接メモリセル間干渉を低減するためには、複数のワード線ＷＬｉにおけるデータを、書き込みバッファ内に保持しておく必要がある。例えば、ワード線ＷＬ２に対してFoggyステージが実行される際には、ワード線ＷＬ１に対する３ページ分のデータと、ワード線ＷＬ２に対する３ページ分のデータとが、書き込みバッファ内に保持されている必要がある。このように、４−３−４−４データコーディングのFoggy-Fineプログラムの場合、最大８ページ分のデータが書き込みバッファ内に保持されている必要がある。
【０１４４】
図１４Ｂに示すように、本実施形態のプログラムでは、例えば１−４−５−５データコーディングで２ステージのプログラムが用いられる。この本実施形態のプログラムでは、１ｓｔステージでは、３ページ分（Lowerページ及びMiddleページ及びTopページ）のデータ入力と、この３ページ分のプログラム（１ｓｔプログラム）とが行われる。また、本実施形態のプログラムの場合、２ｎｄステージでは、２ページ分（Middleページ及びUpperページ）のデータ入力と、Upperページの１ページ分のプログラム（２ｎｄプログラム）とが行われる。
【０１４５】
そして、各ワード線ＷＬ０、ＷＬ１、ＷＬ２、・・・では、両方のステージで入力されるMiddleページを除き、各ステージのデータ入力の際にデータを書き込みバッファ内に格納しておけばよく、プログラムが開始されると、書き込みバッファ内からデータが削除されてもよい。例えば、１ｓｔステージにおいてデータが入力されると、このデータは書き込みバッファ内に格納される。そして、１ｓｔステージにおいてプログラムが開始されると、書き込みバッファ内に格納しておいたLowerページとTopページのデータは削除されてもよい。同様に、２ｎｄステージにおいてデータが入力されると、このデータは書き込みバッファ内に格納される。そして、２ｎｄステージにおいてプログラムが開始されると、書き込みバッファ内に格納しておいたデータはすべて削除されてもよい。このため、本実施形態のプログラムの場合、書き込みバッファ内に保持しておく必要があるデータは、最大でも４ページ分のデータである。
【０１４６】
本実施形態のプログラムにおいても、隣接メモリセル間干渉を低減するため、Lower／Middle／Upper／Topの４ページ分のデータは連続して書き込まれない。例えば、ワード線ＷＬ０への１ｓｔステージが実行された後、ワード線ＷＬ０への２ｎｄステージが実行される前に、ワード線ＷＬ０に隣接するワード線ＷＬ１への１ｓｔステージが実行される。同様に、ワード線ＷＬ１への１ｓｔステージが実行された後、ワード線ＷＬ１への２ｎｄステージが実行される前に、ワード線ＷＬ１に隣接するワード線ＷＬ２への１ｓｔステージが実行される。
【０１４７】
このように、本実施形態では、Middleページ以外のページデータは、１回のステージのプログラムでのみ必要であるので、そのデータ入力が完了すれば書き込みバッファ内のデータは破棄可能となる。そのため、本実施形態では、書き込みバッファ内に同時に保持しておくことが必要なページ数が少なくて済む。
【０１４８】
不揮発性メモリ３へプログラムされるページデータは、ＲＡＭ６内の書き込みバッファに一旦保持されてから、プログラム時に不揮発性メモリ３へデータ入力される。本実施形態においては、このＲＡＭ６の必要容量を小さくすることが可能となるので、コスト削減が図れる。
【０１４９】
また、Foggy-Fineプログラムが用いられるときは、全てのページデータのデータ転送を２回行なわなくてはならないので、転送時間が掛かり、また転送時の消費電力も余分に必要となる。本実施形態では、Middleページ以外のページデータは、各ページそれぞれ１回のデータ転送で完了するため、転送時間及び電力消費をおよそ１／２程度に抑えることが可能になる。
【０１５０】
ここで、ページ読み出し処理について説明する。ページ読み出しの方法は、読み出し対象ページを含むワード線ＷＬｉに対するプログラムが、２ｎｄステージの書き込み前か、後かで異なる。
【０１５１】
２ｎｄステージ書き込み前の場合、記録されているデータはLowerページとMiddleページとTopページだけが有効である。このため、制御部２２は、読み出しページがLowerページとMiddleページとTopページのときはメモリセルからデータを読み出すが、その他のページ（具体的にはUpperページ）の場合には、メモリセル読み出し動作は行わず、読み出しデータとして強制的に全て“１”を出力する制御を行う。
【０１５２】
一方、２ｎｄステージまで完了したワード線ＷＬｉの場合、制御部２２は、読み出しページがTop／Upper／Middle／Lowerページの何れであってもメモリセルを読み出す。この場合、読み出すページが何れのページかによって必要な読み出し電圧が異なるので、制御部２２は、選択されたページに従って必要な読み出しだけを実行する。
【０１５３】
以下、ページ読み出しの具体的な処理手順について説明する。図１５は、第１の実施形態に係るメモリシステム１において１ｓｔステージまでプログラムが完了している（２ｎｄステージのプログラムが完了していない）ワード線でのページ読み出しの処理手順を示すフローチャートである。図６に示した１−４−５−５データコーディングによれば、Lowerページデータが変化するしきい値状態間の境界は１つなので、制御部２２は、その境界で分離された２つの範囲の何れにしきい値が位置するかでデータを決定する。例えば、しきい値電圧がＶｒ８’よりも小さい場合には、制御部２２は、メモリセルのデータとして“１”を出力する制御を行う。一方、しきい値電圧がＶｒ８’よりも大きい場合には、制御部２２は、メモリセルのデータとして“０”を出力する制御を行う。
【０１５４】
また、Middleページのデータが変化するしきい値状態間の境界は３つであるので、制御部２２は、それらの境界で分離された４つの範囲の何れの中にしきい値が位置するかでデータを決定する。また、Topページのデータが変化するしきい値状態間の境界は４つであるので、制御部２２は、それらの境界で分離された５つの範囲の何れの中にしきい値が位置するかでデータを決定する。
【０１５５】
図１５に示すように、２ｎｄステージ書き込み前のワード線ＷＬｉの場合、制御部２２は、読み出しページを選択する（ステップＳ６１０）。読み出しページがLowerページの場合、制御部２２は、１つの読み出し電圧で読み出しを行う（ステップＳ６１２）。この電圧は、Ｖｒ８であるが、前述したように、２ｎｄステージ書き込み前のワード線である場合、図８（Ｔ２）に示すように、読み出し電圧としきい値電圧の余裕をもって、例えばＶｒ８’でもよい。そして、制御部２２は、Ｖｒ８のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“０”または“１”に決定する（ステップＳ６１４）。
【０１５６】
また、読み出しページがMiddleページの場合、制御部２２は、３つの読み出し電圧で読み出しを行う（ステップＳ６１６、Ｓ６１８、Ｓ６２０）。この電圧は、前述したようにＶｒ４とＶｒ９とＶｒ１４であるが、２ｎｄステージ書き込み前のワード線である場合、図８（Ｔ２）に示すように、読み出し電圧としきい値電圧の余裕をもって、例えばそれらの代わりにそれぞれＶｒ４’とＶｒ９’とＶｒ１４’でもよい。そして、制御部２２は、Ｖｒ４のしきい値「電圧での読み出し結果とＶｒ９のしきい値電圧での読み出し結果とＶｒ１４のしきい値電圧での読み出し結果とに基づいて、読み出したデータの値を“０”または“１”に決定する（ステップＳ６２２）。ここで、前述したように、Middleページのデータが異なるしきい値分布の間隔が狭く、Middleページの読み出しマージンが狭くなっているため、読み出しデータの値は信頼性が著しく悪い可能性があり、２ｎｄステージ書き込み前のMiddleページデータは無効であると定義しても良い。その場合、読み出しページがMiddleページの場合、制御部２２は、メモリセルの出力データとして全て強制的に“１”を出力する制御を行ってもよい。
【０１５７】
また、読み出しページがUpperページの場合、１ｓｔプログラムではUpperページのプログラムを行っていないことから、制御部２２は、出力データとして全て強制的に”１”を出力する（ステップＳ６２４）。
【０１５８】
また、読み出しページがTopページの場合、制御部２２は、４つの読み出し電圧で読み出しを行う（ステップＳ６２６、Ｓ６２８、Ｓ６３０、Ｓ６３２）。この電圧は、前述したようにＶｒ１とＶｒ４とＶｒ８とＶｒ１２であるが、２ｎｄステージ書き込み前のワード線である場合、図８（Ｔ２）に示すように、読み出し電圧としきい値電圧の余裕をもって、例えばそれらの代わりにそれぞれＶｒ１’とＶｒ４’とＶｒ８’とＶｒ１２’でもよい。そして、制御部２２は、Ｖｒ１のしきい値電圧での読み出し結果とＶｒ４のしきい値電圧での読み出し結果とＶｒ８のしきい値電圧での読み出し結果とＶｒ１２のしきい値電圧での読み出し結果とに基づいて、読み出したデータの値を“０”または“１”に決定する（ステップＳ６３４）。
【０１５９】
図１６Ａは第１の実施形態に係るメモリシステム１において２ｎｄステージまでプログラムが完了しているワード線でのページ読み出しの処理手順を示すフローチャートである。２ｎｄステージまでプログラムが完了したワード線ＷＬｉの場合、制御部２２は、読み出しページを選択する（ステップＳ６５０）。読み出しページがLowerページの場合、制御部２２は、Ｖｒ８の１つのしきい値電圧で読み出しを行う（ステップＳ６５２）。そして、制御部２２は、Ｖｒ８の１つのしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“０”または“１”に決定する（ステップＳ６５４）。
【０１６０】
また、読み出しページがMiddleページの場合、制御部２２は、Ｖｒ４、Ｖｒ９、Ｖｒ１１及びＶｒ１４のしきい値電圧で読み出しを行う（ステップＳ６５６、Ｓ６５８、Ｓ６６０、Ｓ６６２）。そして、制御部２２は、Ｖｒ４、Ｖｒ９、Ｖｒ１１及びＶｒ１４のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“０”または“１”に決定する（ステップＳ６６４）。
【０１６１】
また、読み出しページがUpperページの場合、制御部２２は、Ｖｒ２、Ｖｒ６、Ｖｒ１０、Ｖｒ１３及びＶｒ１５のしきい値電圧で読み出しを行う（ステップＳ６６６、Ｓ６６８、Ｓ６７０、Ｓ６７２、Ｓ６７４）。そして、制御部２２は、Ｖｒ２、Ｖｒ６、Ｖｒ１０、Ｖｒ１３及びＶｒ１５のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“０”または“１”に決定する（ステップＳ６７６）。
【０１６２】
また、読み出しページがTopページの場合、制御部２２は、Ｖｒ１、Ｖｒ３、Ｖｒ５、Ｖｒ７及びＶｒ１２のしきい値電圧で読み出しを行う（ステップＳ６７８、Ｓ６８０、Ｓ６８２、Ｓ６８４、Ｓ６８６）。そして、制御部２２は、Ｖｒ１、Ｖｒ３、Ｖｒ５、Ｖｒ７及びＶｒ１２のしきい値電圧での読み出し結果に基づいて、読み出したデータの値を“０”または“１”に決定する（ステップＳ６８８）。
【０１６３】
なお、ワード線ＷＬｉに対するプログラムが、２ｎｄステージ書き込み完了前か後かは、メモリコントローラ２が管理及び識別することが可能である。メモリシステム１においてはメモリコントローラ２がプログラム制御を行っているので、メモリコントローラ２がその進捗状況を記録しておけば、メモリコントローラ２は、不揮発性メモリ３のどのアドレスがどのようなプログラム状態であるか容易に参照できる。この場合、メモリコントローラ２は、不揮発性メモリ３から読み出しを行う際、対象ページアドレスを含むワード線ＷＬｉがどのようなプログラム状態であるかを識別し、識別した状態に応じた読み出しコマンドを発行する。また、別の方法として、ワード線ＷＬｉ毎にフラグセルを設け、２ｎｄステージ書き込み時にフラグセルを書き込み、フラグセルのデータに応じて、２ｎｄステージ書き込み完了前か後か、不揮発性メモリ３で管理・識別することも可能である。
【０１６４】
以下に、ページ読み出し処理の一変形例を説明する。一変形例によるページ読出し処理は、読み出し対象ページを含むワード線ＷＬｉに対するプログラムが２ｎｄステージの書き込みを行った後のみ実行可能である。一変形例によるページ読み出し処理は、読出し対象のワード線のすべてのデータを読み出す場合に、読み出し速度が速くなる点で有効である。
【０１６５】
一変形例によるページ読み出し処理に適したデータコーディングは、例えば図１６Ｂのようなものである。以下、このデータコーディングの場合における一変形例による読出し処理について説明する。一変形例によるページ読み出し処理では、Top／Upper／Middle／Lowerページのすべてのページを読み出す。
【０１６６】
図１６Ｃは一変形例による読出し処理手順を示すフローチャートである。また、図１６Ｄは、選択ワード線、ReadyBusy信号線、出力データ線の電圧波形図である。制御部２２は、１５個のすべての読出し電圧Ｖｒ１５〜Ｖｒ１で順番に読出しを行う。まず、図１６Ｄに示すように最も高い電圧であるＶｒ１５で読出しを行い（ステップＳ６９０）、続けて１段階ずつ下がりながら低い読出し電圧で順番に読出しを続けていく（ステップＳ６９１〜Ｓ７０７）。各ページの読出しデータを決定するために必要な読み出しが完了したところで、そのページの読出しデータが出力可能になる。
【０１６７】
一変形例によるページ読み出し処理では、Ｖｒ１５から順に読み出してＶｒ８の読出しまで終わったところで（ステップＳ６９９）、Lowerページのデータが決定され、このデータを出力することが可能になる（ステップＳ７００）。このステップＳ７００では、読み出し電圧Ｖｒ８での読み出しデータに基づいてLowerページのデータが決定される。
【０１６８】
続いてＶｒ４まで読出しが終わったところで（ステップＳ７０２）、Middleページのデータが決定される（ステップＳ７０３）。このステップＳ７０３では、読み出し電圧Ｖｒ４、Ｖｒ９、Ｖｒ１１及びＶｒ１４での読み出しデータに基づいてMiddleページのデータが決定される。
【０１６９】
続いてＶｒ２まで読出しが終わったところで（ステップＳ７０５）、Upperページのデータが決定される（ステップＳ７０６）。このステップＳ７０６では、読み出し電圧Ｖｒ２、Ｖｒ６、Ｖｒ１０、Ｖｒ１３及びＶｒ１５での読み出しデータに基づいてUpperページのデータが決定される。
【０１７０】
続いてＶｒ１まで読出しが終わったところで（ステップＳ７０７）、最終のTopページのデータが決定される（ステップＳ７０８）。このステップＳ７０８では、読み出し電圧Ｖｒ１、Ｖｒ３、Ｖｒ５、Ｖｒ７及びＶｒ１２での読み出しデータに基づいてTopページのデータが決定される。
【０１７１】
一変形例によるページ読み出し処理では、任意の１ページのデータを出力可能になるまでのレイテンシは長くなるが、全４ページを読み出す合計時間は、前に説明した１ページずつ読み出した場合の合計時間よりも短くできる。図１６Ｄに示すように、読出し準備としてワード線をゼロから高電圧であるＶｒ１５まで充電する時間が１回で済み、また読出しレベルを次の電圧に変化させる際の電圧変化の振幅が小さく短時間で電圧が安定するため、読み出し電圧が安定するまでの待機時間を短縮できる。このため、すべての読出し電圧Ｖｒ１５〜Ｖｒ１で読み出す場合は、選択ワード線の遷移時間の合計が短くなり、結果として合計の読出し時間を高速化できる。
【０１７２】
なお、以上では、図１６Ｂのデータコーディングを例に取って説明したが、基本的にはどのようなデータコーディングでも適用可能である。ただし、読出し電圧を最大電圧から最小電圧まで順に変化させて読出しを行うため、データを確定するのに必要な電圧の読出しが完了したページの順番にデータ出力が可能になる。このため、データコーディングの形態によっては、Lower、Middle、Upper、Topのページ順番に読み出せないことに留意が必要である。
【０１７３】
このように、第１の実施形態では、不揮発性メモリ３（３次元構造または２次元構造を有した４ｂｉｔ／ＣｅｌｌのＮＡＮＤメモリ）をプログラムする際に、１−４−５−５データコーディングを採用し、プログラムのステージを２ステージ制とした。このように２ステージ制でプログラムされるので、各ステージでのデータプログラムの際に入力するデータ量が減り、メモリコントローラ２に必要とされる書き込みバッファ量を抑制することが可能となる。また、各ページでのしきい値境界の数が均一であるため、不揮発性メモリ３のページ間のビットエラー率の偏りを低減できるとともに、ＥＣＣにかかるコストを下げることができる。また、データ転送は１ページを除き各ページ１回のみとなるため、転送時間及び消費電力を抑えることができる。
【０１７４】
また、ワード線ＷＬｉをまたぎながら、各プログラムステージを実行するので、隣接ワード線ＷＬｉとの隣接セル間干渉の量を低減することができる。また、１−４−５−５データコーディングを用いるので、２ｎｄプログラムにおけるしきい値分布の変化量が小さくなるために、隣接セル間干渉量を抑制することが可能となる。また、１ページ（具体的にはMiddleページ）は両方のステージでデータを入力することにより、２ｎｄステージの前のＩＤＬマージンを拡大することができ、書き込みシーケンスの信頼性を向上することが可能となる。また、１−４−５−５データコーディングを用いるので、１ｓｔステージのプログラム時、Lowerページにおけるしきい値境界を１つ、Middleページにおけるしきい値境界を２つとすることにより、１ｓｔステージのプログラム、すなわちLowerページ及びMiddleページのプログラムを高速化することができる。なお、１ｓｔステージのプログラムの高速化は、書き込み及び書き込みベリファイの繰り返しときに、書き込み電圧を少しずつステップアップさせて書き込むときのステップ電圧を、２ｎｄステージのプログラム時より大きい値にするなどで高速化ができる。
【０１７５】
（第２の実施形態）
第１の実施形態では、１−４−５−５データコーディングを例にとり説明したが、さまざまなデータコーディングの変形が可能である。第２の実施形態によるメモリシステム１のハードウェア構成は、第１の実施形態によるメモリシステム１と共通する。図１７〜図２５は第２の実施形態によるメモリシステム１のデータコーディングの例を示している。第２の実施形態によるメモリシステム１は、１−４−５−５データコーディング以外のデータコーディングを使用する。
【０１７６】
図１７は１−５−４−５データコーディングの一例を示す図である。図１７の例では、２ｎｄプログラム終了時におけるしきい値領域の遷移数が最大３個である。ここで、１ｓｔステージのプログラム完了時のしきい値領域と、２ｎｄステージのプログラム完了時のしきい値領域とは、電圧分布範囲が完全には一致しないが、本明細書では、便宜上、１ｓｔステージのプログラム完了時の各しきい値領域に電圧分布範囲が最も近い２ｎｄステージのプログラム完了時のしきい値領域を対応づけて、２ｎｄプログラムを行ったときに変化したしきい値領域の数を遷移数と呼ぶ。図１７の場合、１ｓｔステージでは、Lowerページ、Middleページ、Upperページのデータを入力してプログラムを行い、２ｎｄステージでは、TopページとMiddleページのデータを入力してプログラムを行う。Middleページのデータは、１ｓｔステージと２ｎｄステージで重複して入力される。１ｓｔステージのプログラム完了時点でMiddleページのデータの値で分離可能な２つのしきい値領域の間隔は、他のしきい値領域の間隔よりも狭くしている。
【０１７７】
図１８は１−５−４−５データコーディングの一例を示す図である。図１８の例では、２ｎｄプログラム終了時におけるしきい値領域の遷移数が最大３個である。図１８の場合、１ｓｔステージでは、Lowerページ、Middleページ、Upperページのデータを入力してプログラムを行い、２ｎｄステージでは、TopページとUpperページのデータを入力してプログラムを行う。Upperページのデータは、１ｓｔステージと２ｎｄステージで重複して入力される。１ｓｔステージのプログラム完了時点でUpperページのデータの値で分離可能な２つのしきい値領域の間隔は、他のしきい値領域の間隔よりも狭くしている。
【０１７８】
図１９は３−５−２−５データコーディングの一例を示す図である。図１８の例では、２ｎｄプログラム終了時におけるしきい値領域の遷移数が最大３個である。図１８の場合、１ｓｔステージでは、Lowerページ、Middleページ、Upperページのデータを入力してプログラムを行い、２ｎｄステージでは、TopページとMiddleページのデータを入力してプログラムを行う。Middleページのデータは、１ｓｔステージと２ｎｄステージで重複して入力される。１ｓｔステージのプログラム完了時点でMiddleページのデータの値で分離可能な２つのしきい値領域の間隔は、他のしきい値領域の間隔よりも狭くしている。
【０１７９】
図２０は３−３−４−５データコーディングの一例を示す図である。図２０の例では、２ｎｄプログラム終了時におけるしきい値領域の遷移数が最大３個である。図２０の場合、１ｓｔステージでは、Lowerページ、Middleページ、Upperページのデータを入力してプログラムを行い、２ｎｄステージでは、TopページとUpperページのデータを入力してプログラムを行う。
【０１８０】
図２１は２−３−５−５データコーディングの一例を示す図である。図２１の例では、２ｎｄプログラム終了時におけるしきい値領域の遷移数が最大５個である。図２１の場合、１ｓｔステージでは、Lowerページ、Middleページ、Topページのデータを入力してプログラムを行い、２ｎｄステージでは、TopページとUpperページのデータを入力してプログラムを行う。Topページのデータは、１ｓｔステージと２ｎｄステージで重複して入力される。図２１の場合、１ｓｔステージのプログラムが完了した時点では、Topページのデータが０でも１でも、３個のしきい値領域は同じになり、しきい値領域の総数は５個になる。よって、各しきい値領域の間隔を広げることができ、１ｓｔステージのプログラムが完了した時点でのデータ読出を正しく行うことができる。
【０１８１】
図２２は３−２−５−５データコーディングの一例を示す図である。図２２の例では、２ｎｄプログラム終了時におけるしきい値領域の遷移数が最大５個である。図２２の場合、１ｓｔステージでは、Lowerページ、Middleページ、Topページのデータを入力してプログラムを行い、２ｎｄステージでは、TopページとUpperページのデータを入力してプログラムを行う。Topページのデータは、１ｓｔステージと２ｎｄステージで重複して入力される。図２２の場合、１ｓｔステージのプログラムが完了した時点では、Topページのデータが０でも１でも、２個のしきい値領域は同じになり、しきい値領域の総数は６個になる。
【０１８２】
図２３は３−４−４−４データコーディングの一例を示す図である。図２３の例では、２ｎｄプログラム終了時におけるしきい値領域の遷移数が最大７個である。図２３の場合、１ｓｔステージでは、Lowerページ、Middleページ、Upperページのデータを入力してプログラムを行い、２ｎｄステージでは、TopページとUpperページのデータを入力してプログラムを行う。Upperページのデータは、１ｓｔステージと２ｎｄステージで重複して入力される。１ｓｔステージのプログラム完了時点でUpperページのデータの値で分離可能な２つのしきい値領域の間隔は、他のしきい値領域の間隔よりも狭くしている。
【０１８３】
図２４は３−４−４−４データコーディングの一例を示す図である。図２４の例では、２ｎｄプログラム終了時におけるしきい値領域の遷移数が最大８個である。図２４の場合、１ｓｔステージでは、Lowerページ、Middleページ、Topページのデータを入力してプログラムを行い、２ｎｄステージでは、TopページとUpperページのデータを入力してプログラムを行う。Topページのデータは、１ｓｔステージと２ｎｄステージで重複して入力される。図２４の場合、１ｓｔステージのプログラムが完了した時点では、Topページのデータが０でも１でも、２個のしきい値領域は同じになり、しきい値領域の総数は６個になる。
【０１８４】
図１７〜図２４は、データコーディングの例に過ぎず、他のデータコーディングが採用されてもよい。
【０１８５】
例えば、２ｎｄプログラム終了時にしきい値領域の遷移数が最大３個になる例は、図１７〜図２０以外にも、以下の図２５〜図２７が存在する。図２５は１−４−５−５データコーディングの一例を示す図である。図２５の例では、１ｓｔプログラムが完了した時点で６個の異なるしきい値領域が生成される。このうち、Middleページが１でLowerページが１のしきい値領域と、Middleページが０でLowerページが１のしきい値領域は、Topページが０でも１でも、同じしきい値領域になる。このため、本来は８個のしきい値領域が生成されるべきであるが、６個のしきい値領域に集約される。
【０１８６】
図２６は２−５−３−５データコーディングの一例を示す図である。図２６の例では、１ｓｔプログラムが完了した時点で７個の異なるしきい値領域が生成される。このうち、Middleページが１でLowerページが１のしきい値領域は、Topページが０でも１でも、同じしきい値領域になる。このため、本来は８個のしきい値領域が生成されるべきであるが、７個のしきい値領域に集約される。
【０１８７】
図２７は３−４−５−３データコーディングの一例を示す図である。図２７の例では、１ｓｔプログラムが完了した時点で７個の異なるしきい値領域が生成される。このうち、MiddleページでLowerページが１のしきい値領域は、Topページが０でも１でも、同じしきい値領域になる。このため、本来は８個のしきい値領域が生成されるべきであるが、７個のしきい値領域に集約される。
【０１８８】
この他、他のデータコーディングの例も考えられる。以下では、各データコーディングのコード割り付けを示す図を列記する。図２８は３−２−５−５データコーディングの一例、図２９は３−２−５−５データコーディングの一例、図３０は１−５−５−４データコーディングの一例を示している。また、図３１は１−５−４−５データコーディングの一例、図３２は１−４−５−５データコーディングの一例、図３３は１−５−３−６データコーディングの一例を示している。また、図３４は１−３−６−５データコーディングの一例、図３５は１−２−６−６データコーディングの一例、図３６は１−２−６−６データコーディングの一例を示している。
【０１８９】
また、図３７は１−２−６−６データコーディングの一例、図３８は１−４−６−４データコーディングの一例、図３９は１−４−４−６データコーディングの一例を示している。また、図４０は１−４−６−４データコーディングの一例、図４１は１−４−４−６データコーディングの一例、図４２は２−５−２−６データコーディングの一例を示している。また、図４３は２−５−２−６データコーディングの一例、図４４は２−５−２−６データコーディングの一例、図４５は３−３−３−６データコーディングの一例を示している。また、図４６は３−３−６−３データコーディングの一例、図４７は２−３−４−６データコーディングの一例、図４８は３−４−２−６データコーディングの一例を示している。
【０１９０】
また、図４９は２−３−４−６データコーディングの一例、図５０は３−２−６−４データコーディングの一例、図５１は３−２−４−６データコーディングの一例を示している。また、図５２は３−２−６−４データコーディングの一例、図５３は３−４−２−６データコーディングの一例、図５４は３−２−４−６データコーディングの一例を示している。また、図５５は５−３−２−５データコーディングの一例、図５６は３−５−２−５データコーディングの一例、図５７は３−２−５−５データコーディングの一例を示している。また、図５８は２−３−５−５データコーディングの一例、図５９は２−３−５−５データコーディングの一例、図６０は２−３−５−５データコーディングの一例を示している。
【０１９１】
また、図６１は５−４−２−４データコーディングの一例、図６２は４−５−２−４データコーディングの一例、図６３は５−４−２−４データコーディングの一例を示している。また、図６４は２−４−５−４データコーディングの一例、図６５は２−４−５−４データコーディングの一例、図６６は２−５−４−４データコーディングの一例を示している。また、図６７は２−５−４−４データコーディングの一例、図６８は２−５−４−４データコーディングの一例、図６９は１−５−４−５データコーディングの一例を示している。また、図７０は１−４−５−５データコーディングの一例、図７１は１−５−５−４データコーディングの一例、図７２は１−４−５−５データコーディングの一例を示している。
【０１９２】
また、図７３は１−５−５−４データコーディングの一例、図７４は１−５−４−５データコーディングの一例、図７５は１−５−５−４データコーディングの一例を示している。また、図７６は１−５−４−５データコーディングの一例、図７７は１−４−５−５データコーディングの一例、図７８は１−４−５−５データコーディングの一例を示している。また、図７９は１−４−５−５データコーディングの一例、図８０は１−４−５−５データコーディングの一例、図８１は３−５−４−３データコーディングの一例を示している。また、図８２は３−４−５−３データコーディングの一例、図８３は３−５−３−４データコーディングの一例、図８４は３−４−３−５データコーディングの一例を示している。
【０１９３】
また、図８５は３−４−５−３データコーディングの一例、図８６は３−４−３−５データコーディングの一例、図８７は３−３−５−４データコーディングの一例を示している。また、図８８は３−３−５−４データコーディングの一例、図８９は４−５−３−３データコーディングの一例、図９０は３−５−４−３データコーディングの一例を示している。また、図９１は３−４−５−３データコーディングの一例、図９２は３−３−４−５データコーディングの一例、図９３は３−３−４−５データコーディングの一例を示している。
【０１９４】
また、図９４は３−３−４−５データコーディングの一例、図９５は３−４−５−３データコーディングの一例、図９６は３−３−５−４データコーディングの一例を示している。また、図９７は３−３−４−５データコーディングの一例、図９８は４−３−４−４データコーディングの一例、図９９は３−４−４−４データコーディングの一例を示している。また、図１００は３−４−４−４データコーディングの一例、図１０１は４−３−４−４データコーディングの一例、図１０２は３−４−４−４データコーディングの一例を示している。また、図１０３は３−４−４−４データコーディングの一例、図１０４は３−４−４−４データコーディングの一例、図１０５は３−４−４−４データコーディングの一例を示している。また、図１０６は４−４−３−４データコーディングの一例、図１０７は４−４−３−４データコーディングの一例を示している。
【０１９５】
このように、１ｓｔステージと２ｎｄステージで、一部のページのデータを重複して入力し、その他のページのデータは、１ｓｔステージと２ｎｄステージの一方だけに入力してプログラムを行うことで、セル間相互干渉を低減し、かつ書き込みバッファの容量も削減し、かつ各ビットデータを書き込む際のビットエラー率の偏りを抑制できる。特に、１−４−５−５、１−５−４−５、３−３−４−５、又は３−５−２−５データコーディングの場合、各ページデータの境界数が均一であり、かつ２ｎｄステージのプログラム時のしきい値領域の遷移数が３以下であるため、ビットエラー率の偏りを抑制できるとともに、セル間相互干渉を低減できる。
【０１９６】
（第３の実施形態）
第３の実施形態によるメモリシステム１は、書き込みバッファの容量を第１及び第２の実施形態よりも削減するものである。
【０１９７】
第３の実施形態によるメモリシステム１のハードウェア構成は、第１及び第２の実施形態によるメモリシステム１と共通する。第３の実施形態では、１ｓｔステージのプログラムと重複して２ｎｄステージのプログラムでも入力するページのデータを、１ｓｔステージのプログラム開始後に、不揮発メモリ３の内部のページバッファ２４に保持し続ける。これにより、２ｎｄステージのプログラムではそのページのデータ入力の手順を省略するとともに、全てのページのデータ入力は１回だけにすることが可能となる。これにより、書き込みバッファの容量を削減できる。
【０１９８】
さらに、本実施形態では、ワード線ＷＬｎ−１の２ｎｄステージのプログラムと、ワード線ＷＬｎの１ｓｔステージのプログラムとをまとめて行う。このように、ページバッファ２４は、第１乃至第４ビット（Lowerページ、Middleページ、Upperページ、Topページ）のうち、１ｓｔステージのプログラムと２ｎｄステージのプログラムで重複して入力されるビットのデータを、１ｓｔステージのプログラムを開始する前に記憶し、２ｎｄステージのプログラムを開始した以降は破棄可能又は無効化可能とする。以下、本実施形態でも第１の実施形態の図６で説明したものと同じ１−４−５−５データコーディングを用いる例について説明する。
【０１９９】
図９に示したプログラムのフローチャートでは、１ｓｔステージのプログラムと２ｎｄステージのプログラムとは、実行タイミングがずれており、それぞれのプログラムの際にそれぞれのプログラムコマンドとプログラムデータ入力が行なわれている。これに対して、本実施形態では、１ｓｔステージと２ｎｄステージのプログラムコマンド及びプログラムデータ入力をなるべくまとめて行う。
【０２００】
例えば、図８Ｂに示したように、ブロックの先頭と終わりの端部以外は、ワード線ＷＬｎの１ｓｔステージとワード線ＷＬｎ−１の２ｎｄステージのプログラムとが必ず連続する。そこで、本実施形態では、この部分をひとまとめのコマンド入力とする。すなわち、１回のコマンド入力で、ワード線ＷＬｎのLowerページ、Middleページ及びTopページと、ワード線ＷＬｎ−１のUpperページの各プログラムデータがまとめて入力される。これは、Foggy-Fineが採用された場合でも、１回のプログラムコマンドでLower／Middle／Upper／Topページのデータをまとめて（ただし、この場合は同じワード線ＷＬｉ内のページ）４ページ分入力していたのと同じデータ量の入力である。
【０２０１】
このように、プログラムコマンド及びプログラムデータの入力がまとめられることにより、メモリコントローラ２が行う制御におけるコマンド入力やポーリング（チップビジーがレディーに戻ったか否かの定期的なチェック）の頻度が減少し、メモリシステム１の高速化と制御の簡素化が可能となる。
【０２０２】
ここで、図１０８及び図１０９を用いて、第３の実施形態に係るプログラム順序に従った書き込み手順の一例について説明する。図１０８及び図１０９では、図８Ｂに示すプログラム順序に従った場合の書き込み手順を示している。
【０２０３】
図１０８は第３の実施形態に係る１ブロック分全体の書き込み手順を示すフローチャートである。ここでの１ブロックは、ワード線ＷＬ０〜ＷＬｎ（ｎは自然数）のｎ＋１本のワード線ＷＬｉを有するとする。図１０８に示すように、書き込みを開始すると（ステップＳ７１０）、ストリングＳｔ０〜Ｓｔ３のワード線ＷＬ０の１ｓｔステージのプログラムの処理を行う（ステップＳ７１２）。これにより、制御部２２は、ストリングＳｔ０〜Ｓｔ３のワード線ＷＬ０の１ｓｔステージのプログラムを実施する（ステップＳ７１４）。
【０２０４】
また、制御部２２は、ストリングＳｔ０＿ワード線ＷＬ１の１ｓｔステージのプログラムと、ストリングＳｔ０＿ワード線ＷＬ０の２ｎｄステージのプログラムを実施する（ステップＳ７１６）。
【０２０５】
次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬ１の１ｓｔステージのプログラムと、ストリングＳｔ１＿ワード線ＷＬ０の２ｎｄステージのプログラムを実施する（ステップＳ７１８）。次に、制御部２２は、ストリングＳｔ２＿ワード線ＷＬ１の１ｓｔステージのプログラムと、ストリングＳｔ２＿ワード線ＷＬ０の２ｎｄステージのプログラムを実施する（ステップＳ７２０）。この後、制御部２２は、各ストリングの各ワード線ＷＬｉに対して同様な処理を繰り返す。
【０２０６】
次に、ストリングＳｔ０＿ワード線ＷＬｎの１ｓｔステージのプログラムと、ストリングＳｔ０＿ワード線ＷＬｎ−１の２ｎｄステージのプログラムを実施する（ステップＳ７２２）。次に、制御部２２は、ストリングＳｔ１＿ワード線ＷＬｎの１ｓｔステージのプログラムと、ストリングＳｔ１＿ワード線ＷＬｎ−１の２ｎｄステージのプログラムを実施する（ステップＳ７２４）。この後、制御部２２は、各ストリングの各ワード線ＷＬｉに対して同様な処理を繰り返す。
【０２０７】
次に、制御部２２は、ストリングＳｔ３＿ワード線ＷＬｎの１ｓｔステージのプログラムと、ストリングＳｔ３＿ワード線ＷＬｎ−１の２ｎｄステージのプログラムを実施する（ステップＳ７２６）。次に、制御部２２は、ストリングＳｔ０〜Ｓｔ３のワード線ＷＬｎの２ｎｄステージのプログラムを実行する（ステップＳ７２８、Ｓ７３０、Ｓ７３２）。
【０２０８】
このように、ブロックの先頭では第１の実施形態と同様に１ｓｔステージのみのプログラムが実施され、ブロックの最後では第１の実施形態と同様に２ｎｄステージのみのプログラムが実施される。この場合において、１ｓｔステージのみのプログラムは、図８Ｂに示した手順に従って実行され、２ｎｄステージのみのプログラムは、図８Ｃに示した手順に従って実行される。また、図１０８のフローチャートでは、ブロックの先頭と最後以外では、ワード線ＷＬｎの１ｓｔステージのプログラムとワード線ＷＬｎ−１の２ｎｄステージのプログラムとをまとめて行う。これにより、メモリコントローラ２が行うコマンド入力やポーリングの頻度が減少し、メモリシステム１の処理を高速化できる。
【０２０９】
図１０９は第３の実施形態に係る１ｓｔステージ及び２ｎｄステージにおける書き込み手順を示すフローチャートである。図１０９に示すように、１ｓｔステージ及び２ｎｄステージのプログラムでは、１ｓｔステージのプログラムが実行された後に、続けて２ｎｄステージのプログラムが実行される。具体的には、まず、メモリコントローラ２から不揮発性メモリ３へ、ワード線ＷＬｎ−１のUpperページのデータの入力開始コマンドが入力される（ステップＳ７５０）。そして、メモリコントローラ２から不揮発性メモリ３へ、ワード線ＷＬｎ−１のUpperページのデータが入力される（ステップＳ７５２）。
【０２１０】
次に、メモリコントローラ２から不揮発性メモリ３へ、ワード線ＷＬｎのLowerページのデータの入力開始コマンドが入力される（ステップＳ７５４）。そして、メモリコントローラ２から不揮発性メモリ３へ、ワード線ＷＬｎのLowerページのデータが入力される（ステップＳ７５６）。
【０２１１】
次に、メモリコントローラ２から不揮発性メモリ３へ、ワード線ＷＬｎのMiddleページのデータの入力開始コマンドが入力される（ステップＳ７５８）。そして、メモリコントローラ２から不揮発性メモリ３へ、ワード線ＷＬｎのMiddleページのデータが入力される（ステップＳ７６０）。Middleページのデータは、不揮発性メモリ３に入力されるだけでなく、ページバッファ２４にも記憶される。ページバッファ２４に記憶した後は、書き込みバッファ内のMiddleデータを破棄又は無効化することができる。
【０２１２】
次に、メモリコントローラ２から不揮発性メモリ３へ、ワード線ＷＬｎのTopページのデータの入力開始コマンドが入力される（ステップＳ７６２）。そして、メモリコントローラ２から不揮発性メモリ３へ、ワード線ＷＬｎのTopページのデータが入力される（ステップＳ７６４）。
【０２１３】
次に、メモリコントローラ２から不揮発性メモリ３へ、１ｓｔステージ及び２ｎｄステージのプログラム実行コマンドが入力され（ステップＳ７６６）、これによりチップビジーとなる（ステップＳ７６８）。
【０２１４】
この後、ワード線ＷＬｎのLowerページ、Middleページ及びTopページに対し、１〜複数回のプログラム電圧パルスが印加される（ステップＳ７７０）。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、ワード線ＷＬｎのLowerページとTopページのデータ読み出しが行なわれる（ステップＳ７７２）。
【０２１５】
さらに、LowerページとTopページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かが確認される（ステップＳ７７４）。LowerページとTopページにおけるデータのフェイルビット数がクライテリア以上である場合、ステップＳ７７０〜Ｓ７７４の処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると、ワード線ＷＬｎ−１のLowerページとTopページデータが読み出される（ステップＳ７７６）。
【０２１６】
そして、ワード線ＷＬｎ−１のLowerとTopページデータと、ページバッファ２４から読み出されたMiddleページのデータとに基づいて、Upperページのプログラム先のしきい値電圧Ｖthが決定される（ステップＳ７７８）。この後、決定されたしきい値電圧Ｖthを用いて、ワード線ＷＬｎ−１のUpperページへのデータ書き込みが行われる（ステップＳ７８０）。
【０２１７】
Upperページへのデータ書き込みの際には、ワード線ＷＬｎ−１のUpperページに対し、１〜複数回のプログラム電圧パルスが印加される。そして、メモリセルがしきい値境界レベルを超えて移動したか否かを確認するために、ワード線ＷＬｎ−１のUpperページのデータ読み出しが行なわれる（ステップＳ７８２）。
【０２１８】
さらに、Upperページにおけるデータのフェイルビット数がクライテリアよりも小さいか否かを確認するベリファイが行われる（ステップＳ７８４）。Upperページにおけるデータのフェイルビット数がクライテリア以上である場合、プログラム電圧パルス印加とデータ読み出し、ベリファイの処理が繰り返される。そして、データのフェイルビット数がクライテリアよりも小さくなると、チップレディーとなる（ステップＳ７８６）。
【０２１９】
なお、同一ワード線に対する１ｓｔステージのプログラムにおいて、複数のページのデータ入力開始コマンドとデータ入力処理におけるページの順番は任意であり、どのページが先に入力されてもよい。また、同一ワード線に対する２ｎｄステージのプログラムにおいて、複数のページのデータ入力開始コマンドとデータ入力の処理におけるページの順番も任意である。ただし、それぞれのワード線番号と、２つのステージのプログラムの処理の順番は、必ず図１０９に示す順番にならなければいけない。
【０２２０】
このように、図１０９では、ワード線ＷＬｎの１ｓｔステージのプログラムがワード線ＷＬｎ−１の２ｎｄステージのプログラムよりも前に実行される場合について説明した。これは、ワード線ＷＬｎの１ｓｔステージのプログラムが先に行なわれることで、１６値のしきい値電圧Ｖthが書き込まれるワード線ＷＬｎ−１のセルが隣接セルの影響を受けないようにするためである。
【０２２１】
上述したように、本実施形態では、ワード線ＷＬｎ−１のUpperページのデータと、ワード線ＷＬｎのLowerページ、Middleページ及びTopページのデータとの４ページ分のデータが連続して入力される。
【０２２２】
また、別の変形例として、プログラムコマンドの入力後、ＩＤＬとして、ワード線ＷＬｎ−１のLowerページ、Middleページ及びTopページのデータの読み出しを先に行なった後に、ワード線ＷＬｎのLowerページ、Middleページ及びTopページのプログラムを行い、次に、ワード線ＷＬｎ−１のUpperページのプログラム先のしきい値電圧Ｖthが決定され、決定されたしきい値電圧Ｖthでワード線ＷＬｎ−１のUpperページのプログラムを行なうこともできる。このようにすると、ワード線ＷＬｎの書込みによる隣接セル間干渉を受ける前に、ＩＤＬのワード線ＷＬｎ−１のLowerページ、Middleページ及びTopページのデータを読み出すことができる。
【０２２３】
なお、本実施形態における、ワード線ＷＬｎの１ｓｔステージとワード線ＷＬｎ−１の２ｎｄステージとのひとまとめのコマンドによるプログラムの実際の実行順番は変形が可能である。すなわち、図１０９に示したワード線ＷＬｎのLowerページ、Middleページ及びTopページのプログラムと、ＩＤＬとしてのワード線ＷＬｎ−１のLowerページ、Middleページ及びTopページのデータ読み出しとは、何れが先でもよく、入れ替えが可能である。ワード線ＷＬｎ−１のLowerページ、Middleページ及びTopページのデータ読み出しがワード線ＷＬｎのLowerページ、Middleページ及びTopページのプログラムよりも前に行なわれることで、ワード線ＷＬｎのLowerページ、Middleページ及びTopページのプログラムによる影響を受けることなくＩＤＬが可能となる。
【０２２４】
このように、第３の実施形態では、ワード線ＷＬｎ−１の２ｎｄステージのプログラムと、ワード線ＷＬｎの１ｓｔステージのプログラムとをまとめて行うので、コマンド入力やポーリングの頻度が減少する。したがって、メモリシステム１の高速化及び制御の簡素化が可能となる。
【０２２５】
図１１０は第３の実施形態のプログラムにおける書き込みバッファ量（バッファデータ量）を説明するための図である。本実施形態では、１−４−５−５データコーディングで２ステージのプログラムが用いられる。この本実施形態のプログラムでは、１ｓｔステージでは、３ページ分（Lowerページ及びMiddleページ及びTopページ）のデータ入力と、この３ページ分のプログラム（１ｓｔプログラム）とが行われる。また、本実施形態のプログラムの場合、２ｎｄステージでは、１ページ分（Upperページ）のデータ入力と、Upperページの１ページ分のプログラム（２ｎｄプログラム）とが行われる。
【０２２６】
そして、各ワード線ＷＬ０、ＷＬ１、ＷＬ２、・・・では、各ステージのデータ入力の際にデータを書き込みバッファ内に格納しておけばよく、プログラムが開始されると、書き込みバッファ内からデータが削除されてもよい。例えば、１ｓｔステージにおいてデータが入力されると、このデータは書き込みバッファ内に格納される。そして、１ｓｔステージにおいてプログラムが開始されると、書き込みバッファ内に格納しておいたLowerページとTopページとMiddleページのデータは削除されてもよい。ただし、Middleページのデータは、２ｎｄステージでも使用するため、２ｎｄステージのプログラムが開始されるまではページバッファ２４に記憶しておく必要がある。同様に、２ｎｄステージにおいてデータが入力されると、このデータは書き込みバッファ内に格納される。そして、２ｎｄステージにおいてプログラムが開始されると、書き込みバッファ内に格納しておいたデータはすべて削除されてもよい。このため、本実施形態のプログラムの場合、書き込みバッファ内に保持しておく必要があるデータは、最大でも３ページ分のデータであり、第１の実施形態よりもさらに少なくて済む。
【０２２７】
本実施形態のプログラムにおいても、隣接メモリセル間干渉を低減するため、Lower／Middle／Upper／Topの４ページ分のデータは連続して書き込まれない。例えば、ワード線ＷＬ０への１ｓｔステージが実行された後、ワード線ＷＬ０への２ｎｄステージが実行される前に、ワード線ＷＬ０に隣接するワード線ＷＬ１への１ｓｔステージが実行される。同様に、ワード線ＷＬ１への１ｓｔステージが実行された後、ワード線ＷＬ１への２ｎｄステージが実行される前に、ワード線ＷＬ１に隣接するワード線ＷＬ２への１ｓｔステージが実行される。
【０２２８】
このように、本実施形態では、すべてのページデータは、１回のステージのプログラムでのみ必要であるので、そのデータ入力が完了すれば書き込みバッファ内のデータは破棄可能となる。そのため、本実施形態では、書き込みバッファ内に同時に保持しておくことが必要なページ数が、第１の実施形態よりもさらに少なくて済む。
【０２２９】
不揮発性メモリ３へプログラムされるページデータは、ＲＡＭ６内の書き込みバッファに一旦保持されてから、プログラム時に不揮発性メモリ３へデータ入力される。本実施形態においては、このＲＡＭ６の必要容量を小さくすることが可能となるので、コスト削減となる。
【０２３０】
また、本実施形態では各ページそれぞれ１回のデータ転送で完了するため、第１の実施形態と比較してページデータの転送時間も少なくて済み、転送時の消費電力削減することが可能となる。
【０２３１】
本実施形態におけるページ読み出し処理については、第１の実施形態で説明した処理手順と同じであるため、説明を省略する。
【０２３２】
なお、本実施形態では、新たに保持し続けるページのデータのために、NANDフラッシュメモリ内部のページバッファ２４を増やす必要がある。図８Ａに示したようにブロック内に１個のストリングが存在するＮＡＮＤフラッシュメモリのプログラムでは、増加が必要なページバッファ２４の量は１ページデータ分である。それに対し、図８Ｂもしくは図８Ｃに示したようにブロック内に４個のストリングが存在するＮＡＮＤフラッシュメモリのプログラムでは、増加が必要なページバッファ２４の量は４ページデータ分である。これは、ある１つのストリングの１ｓｔステージのプログラムを実行してから、同じストリングの２ｎｄステージのプログラムを実行するまでに、他の３つのストリングの１ｓｔステージのプログラムを実行せねばならず、結局、４つ全てのストリングについて、それぞれ１ページ分のデータを保持する必要があるからである。
【０２３３】
本実施形態では、１−４−５−５データコーディングを例に取って説明したが、さまざまなデータコーディングの変形が可能であり、上記に述べた実施形態を実現することが可能であることは明らかである。
【０２３４】
上述した第１〜第３の実施形態では、不揮発性メモリ３が、ＮＡＮＤメモリ５を用いて構成されている場合について説明したが、ＲｅＲＡＭ（Resistive Random Access Memory）やＭＲＡＭ６（Magneto-Resistive Random Access Memory）、ＰＲＡＭ（Phase Change Random Access Memory）、ＦｅＲＡＭ（Ferroeletric Random Access Memory）など、他のタイプの不揮発性メモリ３が用いられてもよい。
【０２３５】
上述した第１から第３の実施形態では、1stステージのプログラムでは３ページ分のデータの書き込み、2ndステージのプログラムでは２ページ分のデータの書き込みを行う場合について説明したが、1stステージのプログラムでのページ数と2ndステージのプログラムでのページ数の配分を変更してもよい。たとえば、1stステージのプログラムでは２ページ分のデータの書き込み、2ndステージのプログラムでは３ページ分のデータの書き込みを行うようにしてもよい。
【０２３６】
本開示のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２３７】
１  メモリシステム、２  メモリコントローラ、３  不揮発性メモリ、４  ホストプロセッサ、５ＮＡＮＤメモリ、６  ＲＡＭ、７  ＲＯＭ、８  プロセッサ、９  ホストインターフェイス、１０  ＥＣＣ回路、１１  メモリインターフェイス、１２  内部バス、２１  ＮＡＮＤ  Ｉ／Ｏインターフェイス、２２  制御部、２３  ＮＡＮＤメモリセルアレイ、２４  ページバッファ、３１  発振器、３２  シーケンサ、３３  コマンドユーザインターフェイス、３４  電圧供給部、３５  カラムカウンタ、３６  シリアルアクセスコントローラ、３７  ローデコーダ、３８  センスアンプ、４１  ｐ型ウェル領域、４２、４３、４４  配線層、４５  メモリホール、４６  ブロック絶縁膜、４７  電荷蓄積層、４８  ゲート絶縁膜、４９  導電膜
【図１】
2022002160.tif 000003
【図２】
2022002160.tif 000004
【図３】
2022002160.tif 000005
【図４】
2022002160.tif 000006
【図５】
2022002160.tif 000007
【図６Ａ】
2022002160.tif 000008
【図６Ｂ】
2022002160.tif 000009
【図７】
2022002160.tif 000010
【図８Ａ】
2022002160.tif 000011
【図８Ｂ】
2022002160.tif 000012
【図８Ｃ】
2022002160.tif 000013
【図９】
2022002160.tif 000014
【図１０】
2022002160.tif 000015
【図１１】
2022002160.tif 000016
【図１２】
2022002160.tif 000017
【図１３】
2022002160.tif 000018
【図１４Ａ】
2022002160.tif 000019
【図１４Ｂ】
2022002160.tif 000020
【図１５】
2022002160.tif 000021
【図１６Ａ】
2022002160.tif 000022
【図１６Ｂ】
2022002160.tif 000023
【図１６Ｃ】
2022002160.tif 000024
【図１６Ｄ】
2022002160.tif 000025
【図１７】
2022002160.tif 000026
【図１８】
2022002160.tif 000027
【図１９】
2022002160.tif 000028
【図２０】
2022002160.tif 000029
【図２１】
2022002160.tif 000030
【図２２】
2022002160.tif 000031
【図２３】
2022002160.tif 000032
【図２４】
2022002160.tif 000033
【図２５】
2022002160.tif 000034
【図２６】
2022002160.tif 000035
【図２７】
2022002160.tif 000036
【図２８】
2022002160.tif 000037
【図２９】
2022002160.tif 000038
【図３０】
2022002160.tif 000039
【図３１】
2022002160.tif 000040
【図３２】
2022002160.tif 000041
【図３３】
2022002160.tif 000042
【図３４】
2022002160.tif 000043
【図３５】
2022002160.tif 000044
【図３６】
2022002160.tif 000045
【図３７】
2022002160.tif 000046
【図３８】
2022002160.tif 000047
【図３９】
2022002160.tif 000048
【図４０】
2022002160.tif 000049
【図４１】
2022002160.tif 000050
【図４２】
2022002160.tif 000051
【図４３】
2022002160.tif 000052
【図４４】
2022002160.tif 000053
【図４５】
2022002160.tif 000054
【図４６】
2022002160.tif 000055
【図４７】
2022002160.tif 000056
【図４８】
2022002160.tif 000057
【図４９】
2022002160.tif 000058
【図５０】
2022002160.tif 000059
【図５１】
2022002160.tif 000060
【図５２】
2022002160.tif 000061
【図５３】
2022002160.tif 000062
【図５４】
2022002160.tif 000063
【図５５】
2022002160.tif 000064
【図５６】
2022002160.tif 000065
【図５７】
2022002160.tif 000066
【図５８】
2022002160.tif 000067
【図５９】
2022002160.tif 000068
【図６０】
2022002160.tif 000069
【図６１】
2022002160.tif 000070
【図６２】
2022002160.tif 000071
【図６３】
2022002160.tif 000072
【図６４】
2022002160.tif 000073
【図６５】
2022002160.tif 000074
【図６６】
2022002160.tif 000075
【図６７】
2022002160.tif 000076
【図６８】
2022002160.tif 000077
【図６９】
2022002160.tif 000078
【図７０】
2022002160.tif 000079
【図７１】
2022002160.tif 000080
【図７２】
2022002160.tif 000081
【図７３】
2022002160.tif 000082
【図７４】
2022002160.tif 000083
【図７５】
2022002160.tif 000084
【図７６】
2022002160.tif 000085
【図７７】
2022002160.tif 000086
【図７８】
2022002160.tif 000087
【図７９】
2022002160.tif 000088
【図８０】
2022002160.tif 000089
【図８１】
2022002160.tif 000090
【図８２】
2022002160.tif 000091
【図８３】
2022002160.tif 000092
【図８４】
2022002160.tif 000093
【図８５】
2022002160.tif 000094
【図８６】
2022002160.tif 000095
【図８７】
2022002160.tif 000096
【図８８】
2022002160.tif 000097
【図８９】
2022002160.tif 000098
【図９０】
2022002160.tif 000099
【図９１】
2022002160.tif 000100
【図９２】
2022002160.tif 000101
【図９３】
2022002160.tif 000102
【図９４】
2022002160.tif 000103
【図９５】
2022002160.tif 000104
【図９６】
2022002160.tif 000105
【図９７】
2022002160.tif 000106
【図９８】
2022002160.tif 000107
【図９９】
2022002160.tif 000108
【図１００】
2022002160.tif 000109
【図１０１】
2022002160.tif 000110
【図１０２】
2022002160.tif 000111
【図１０３】
2022002160.tif 000112
【図１０４】
2022002160.tif 000113
【図１０５】
2022002160.tif 000114
【図１０６】
2022002160.tif 000115
【図１０７】
2022002160.tif 000116
【図１０８】
2022002160.tif 000117
【図１０９】
2022002160.tif 000118
【図１１０】
2022002160.tif 000119