(57)【要約】【課題】高品質な半導体記憶装置を提供する。【解決手段】半島隊記憶装置は、不揮発性のメモリセルトランジスタＭＴと、半導体基板に対して垂直方向に延伸し、複数のメモリセルトランジスタＭＴを備える複数のストリングユニットＳＵと、複数のストリングユニットＳＵを備える複数のブロックＢＬＫと、ブロックを複数備えるメモリセルアレイ１３０と、同一のブロックＢＬＫ内において、複数のメモリセルトランジスタＭＴのゲート電極に接続される複数のワード線ＷＬと、メモリセルトランジスタＭＴにデータをプログラムする制御回路１２２と、制御回路１２２内に設けられ、ワード線ＷＬ毎に設定されたメモリセルトランジスタＭＴのプログラム条件であるフラグデータを格納するレジスタ１２２ｃと、を備える。【選択図】      図７
2016062619.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルトランジスタと、
複数の前記メモリセルトランジスタを備えるメモリセルアレイと、
複数の前記メモリセルトランジスタのゲート電極に接続される複数のワード線と、
プログラム動作及びベリファイ動作を行う事によって前記メモリセルトランジスタにデータの書込みを行う制御回路と、
前記ワード線毎に設定された前記メモリセルトランジスタのプログラム条件であるフラグデータを格納するレジスタと、
を備え、
前記制御回路は、
第１のコマンドシーケンスを受信する前に、第２のコマンドを受信する場合、前記レジスタに格納されている前記フラグデータを用いて、前記メモリセルトランジスタにデータをプログラムするためのプログラム電圧を印加し、
前記第１のコマンドシーケンスに基づいて、所定の前記ワード線にプログラム電圧を印加する
ことを特徴とする半導体記憶装置。
【請求項２】
前記メモリセルアレイは、複数のストリングユニットを備え、
前記ストリングユニットは、複数の前記メモリセルトランジスタを備え、
前記制御回路は、
前記第１のコマンドシーケンスを受信する前に、第２のコマンドを受信する場合において、前記フラグデータをリードする前記ストリングユニットが指定される場合、
前記指定されたストリングユニットから、前記フラグデータをリードし、
前記レジスタに格納されている前記フラグデータを、前記リードしたフラグデータに更新し、
前記レジスタに格納されている前記リードしたフラグデータを用いて、前記メモリセルトランジスタにデータをプログラムするためのプログラム電圧を決定する
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記メモリセルアレイは、複数のストリングユニットを備え、
前記ストリングユニットは、複数の前記メモリセルトランジスタを備え、
複数のストリングユニットは、前記フラグデータを格納するサンプルストリングユニットを含み、
前記制御回路は、
前記第１のコマンドシーケンスを受信する前に、第２のコマンドを受信しない場合において、プログラム動作が行われるストリングユニットが、前記サンプルストリングユニットである場合、プログラムする際に前記フラグデータを取得し、
前記レジスタ内の前記フラグデータを、前記取得したフラグデータに更新し、
前記レジスタに格納されている前記取得したフラグデータを用いて、前記メモリセルトランジスタにデータをプログラムするためのプログラム電圧を印加する
ことを特徴とする請求項１または２に記載の半導体記憶装置。
【請求項４】
前記メモリセルトランジスタは、第１ビットデータと第２ビットデータを保持可能であり、
前記制御回路は、
前記第１ビットデータをプログラムする際に前記フラグデータを取得し、
前記レジスタ内の前記フラグデータを、前記取得したフラグデータに更新し、
前記レジスタに格納されている前記フラグデータを用いて、前記メモリセルトランジスタにデータをプログラムするためのプログラム電圧を印加する
ことを特徴とする請求項１乃至３のいずれか一項に記載の半導体記憶装置。
【請求項５】
第１のビットデータと第２のビットデータを保持可能な不揮発性のメモリセルトランジスタと、
複数の前記メモリセルトランジスタを備える複数のブロックと、
前記ブロックを複数備えるメモリセルアレイと、
同一の前記ブロック内において、複数の前記メモリセルトランジスタのゲート電極に接続される複数のワード線と、
プログラム動作及びベリファイ動作を行う事によって前記メモリセルトランジスタにデータの書込みを行う制御回路と、
前記制御回路内に設けられ、前記ワード線毎に設定された前記メモリセルトランジスタのプログラム条件であるフラグデータを格納する第１及び第２のレジスタと、
を備え、
前記制御回路は、
前記メモリセルトランジスタに前記第１のビットデータをプログラムする第１のプログラム動作の際に、
前記メモリセルトランジスタのプログラム条件であるフラグデータを取得し、
前記第１のレジスタに格納されているデータを、前記第２のレジスタに移動し、
前記第１のレジスタに、前記フラグデータを格納し、
前記メモリセルトランジスタに前記第２のビットデータをプログラムする第２のプログラム動作の際に、
前記第２のプログラム動作の対象となるワード線が、第１のワード線ではない場合、前記第２のレジスタに格納されている前記フラグデータを用いて、前記メモリセルトランジスタにデータをプログラムするためのプログラム電圧を印加し、
前記第２のプログラム動作の対象となるワード線が、前記第１のワード線である場合、前記第１のレジスタに格納されているフラグデータを用いて、前記メモリセルトランジスタにデータをプログラムするためのプログラム電圧を印加し、
前記第２のプログラム動作の対象となるワード線が、前記第１のワード線ではなく、且つ前記第２のレジスタに前記フラグデータが格納されていない場合、前記第２のビットに対応する前記第１のビットをリードし、前記第１のビットデータの一部である前記フラグデータを用いて、前記メモリセルトランジスタにデータをプログラムするためのプログラム電圧を印加し、
前記第２のプログラム動作の対象となるワード線が、前記第１のワード線であり、且つ前記第２のレジスタに前記フラグデータが格納されていない場合、前記第２のプログラム動作の対象となるワード線から前記第２のビットに対応する第１のビットをリードし、前記第１のビットデータの一部である前記フラグデータを用いて、前記メモリセルトランジスタにデータをプログラムするためのプログラム電圧を印加し、
前記第２のビットに対応する前記第１のビットデータと、前記第２のビットデータとを外部から受信し、
前記第２のプログラム動作の対象となるワード線に前記印加されたプログラム電圧を印加し、前記メモリセルトランジスタに前記外部から受信した前記第１のビットデータ、及び前記第２のビットデータを、プログラムすることを特徴とする半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、半導体記憶装置に関する。
【背景技術】
【０００２】
近年、ＮＡＮＤ型フラッシュメモリのビット密度向上に向けたアプローチとして、メモリセルトランジスタが半導体基板の上方に積層された３次元積層型ＮＡＮＤフラッシュメモリ、所謂ＢｉＣＳ（Bit-Cost Scalable）フラッシュメモリのメモリが提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−２３８３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
高品質な半導体記憶装置を提供する。
【課題を解決するための手段】
【０００５】
実施形態に係る半導体記憶装置は、メモリセルトランジスタと、複数の前記メモリセルトランジスタを備えるメモリセルアレイと、複数の前記メモリセルトランジスタのゲート電極に接続される複数のワード線と、プログラム動作及びベリファイ動作を行う事によって前記メモリセルトランジスタにデータの書込みを行う制御回路と、前記ワード線毎に設定された前記メモリセルトランジスタのプログラム条件であるフラグデータを格納するレジスタと、を備え、前記制御回路は、第１のコマンドシーケンスを受信する前に、第２のコマンドを受信する場合、前記レジスタに格納されている前記フラグデータを用いて、前記メモリセルトランジスタにデータをプログラムするためのプログラム電圧を印加し、前記第１のコマンドシーケンスに基づいて、所定の前記ワード線にプログラム電圧を印加する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態に係るメモリシステムを示すブロック図である。
【図２】図２は、第１の実施形態に係るメモリセルアレイのブロック図である。
【図３】図３は、第１の実施形態に係るブロックＢＬＫ０の回路図の一部である。
【図４】図４は、第１の実施形態に係るＮＡＮＤストリングの断面図である。
【図５】図５（ａ）は、第１の実施形態に係るメモリセルトランジスタＭＴの閾値分布の初期状態を示す。図５（ｂ）は、下位ビット書込み完了後の第１の実施形態に係るメモリセルトランジスタＭＴの閾値分布を示す。図５（ｃ）は、第１のプログラムの上位ビット書込み、または第２のプログラム完了後の第１の実施形態に係るメモリセルトランジスタＭＴの閾値分布を示す。
【図６】図６は、第１の実施形態に係るページの一例を示す図である。
【図７】図７は、第１の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図８】図８は、第１の実施形態に係るコマンドシーケンスの一例を示す図である。
【図９】図９は、第１の実施形態に係るコマンドシーケンスの一例を示す図である。
【図１０】図１０は、第１の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図１１】図１１は、第１の実施形態に係るキャプチャ動作時を示す図である。
【図１２】図１２は、第１の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図１３】図１３は、第１の実施形態に係る上位ページプログラム動作時を示す図である。
【図１４】図１４は、第１の実施形態に係る上位ページプログラム用の初期プログラム電圧を決定する方法を示す図である。
【図１５】図１５は、第１の実施形態に係る上位ページプログラム用の初期プログラム電圧を決定する方法を示す図である。
【図１６】図１６は、第１の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図１７】図１７は、第１の実施形態に係る下位ページプログラム動作時を示す図である。
【図１８】図１８は、第１の実施形態に係る下位ページプログラム用の初期プログラム電圧を決定する方法を示す図である。
【図１９】図１９は、第１の実施形態に係る下位ページプログラム用の初期プログラム電圧を決定する方法を示す図である。
【図２０】図２０は、第１の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図２１】図２１は、第１の実施形態に係る具体例に係るストリングユニットの概略図である。
【図２２】図２２は、第１の実施形態に係る具体例１及び具体例２のプログラム動作に要する時間を示す図である。
【図２３】図２３は、第２の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図２４】図２４は、第２の実施形態に係るコマンドシーケンスの一例を示す図である。
【図２５】図２５は、第２の実施形態に係るコマンドシーケンスの一例を示す図である。
【図２６】図２６は、第２の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図２７】図２７は、第２の実施形態に係るキャプチャ動作時を示す図である。
【図２８】図２８は、第２の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図２９】図２９は、第２の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図３０】図３０は、第３の実施形態に係るメモリシステムを示すブロック図である。
【図３１】図３１は、第３の実施形態に係るコマンドシーケンスの一例を示す図である。
【図３２】図３２は、第４の実施形態に係るメモリシステムを示すブロック図である。
【図３３】図３３は、第４の実施形態に係るプログラム動作の概要を示す図である。
【図３４】図３４は、第４の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図３５】図３５は、第４の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図３６】図３６は、第４の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図３７】図３７は、第４の実施形態に係る半導体記憶装置のプログラム動作を示すフローチャートである。
【図３８】図３８は、第４の実施形態に係るコマンドシーケンスの一例を示す図である。
【発明を実施するための形態】
【０００７】
以下に、実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。  
また、以下ではＮＡＮＤフラッシュメモリの一例として、３次元積層型ＮＡＮＤフラッシュメモリを例に挙げて各実施形態を説明する。
【０００８】
（第１の実施形態）
＜メモリシステム＞
図１を用いて、第１の実施形態に係るメモリシステムについて説明する。  
第１の実施形態のメモリシステム１００は、メモリコントローラ（memory controller）１１０と、ＮＡＮＤフラッシュメモリ（不揮発性半導体記憶装置）１２０と、を有する。尚、メモリシステム１００は、ホストデバイス２００を含んでも良い。
【０００９】
＜メモリコントローラ＞
メモリコントローラ１１０は、ホストインタフェース（Host interface）１１１、ＲＡＭ（Random Access Memory）１１２、ＥＣＣ（Error Correcting Code）回路１１３、ＣＰＵ（Central Processing unit)１１４、ＲＯＭ（Read Only Memory）１１５、及びフラッシュメモリインタフェース（Flash memory interface）１１６を含んでいる。
【００１０】
メモリコントローラ１１０は、ＮＡＮＤフラッシュメモリ１２０の動作に必要なコマンドなどをＮＡＮＤフラッシュメモリ１２０に出力する。メモリコントローラ１１０は、当該コマンドをＮＡＮＤフラッシュメモリ１２０に出力することでＮＡＮＤフラッシュメモリ１２０からのデータの読み出し（リード）、ＮＡＮＤフラッシュメモリ１２０へのデータの書込み（書込み動作は複数のループを含み、１つのループは、プログラム動作とプログラムベリファイ動作を含む）、またはＮＡＮＤフラッシュメモリ１２０のデータの消去等を行う。
【００１１】
ホストインタフェース１１１は、データバスを介してパーソナルコンピュータ等のホストデバイス（単にホスト等とも称す）２００と接続されている。このホストインタフェース１１１を介して、ホストデバイス２００とメモリシステム１００との間でデータの送受信等が行われる。
【００１２】
ＲＡＭ１１２は、例えば揮発性のメモリであり、例えばＣＰＵ１１４が動作するための動作プログラム等を格納する。
【００１３】
ＥＣＣ回路１１３は、ホストデバイス２００からデータを受信した場合、受信データにエラー訂正符号を付加する。そして、ＥＣＣ回路１１３は、エラー訂正符号を付したデータを、例えばフラッシュメモリインタフェース１１６に供給する。また、ＥＣＣ回路１１３は、ＮＡＮＤフラッシュメモリ１２０から供給されたデータを、フラッシュメモリインタフェース１１６を介して受信する。そして、ＥＣＣ回路１１３は、ＮＡＮＤフラッシュメモリ１２０からの受信データに対してエラー訂正符号を用いてエラー訂正を行う。そして、ＥＣＣ回路１１３は、ホストインタフェース１１１に、エラー訂正を行ったデータを供給する。
【００１４】
ＣＰＵ１１４は、メモリシステム１００の全体の動作を司る。ＣＰＵ１１４はＲＡＭ１１２及びＲＯＭ１１５に格納されたデータに基づいてＮＡＮＤフラッシュメモリ１２０を制御する。尚、上述したように、ホストデバイス２００が、メモリシステム１００に含まれる場合においても、ＣＰＵ１１４は、メモリシステム１００全体の動作を司る。
【００１５】
ＲＯＭ１１５は、不揮発性のメモリであり、例えばＣＰＵ１１４が動作するための動作プログラム等を格納する。
【００１６】
フラッシュメモリインタフェース１１６には、データバスを介してＮＡＮＤフラッシュメモリ１２０が接続されている。
【００１７】
＜ＮＡＮＤフラッシュメモリ＞
ＮＡＮＤフラッシュメモリ１２０は、入出力バッファ（Input / Output buffer）１２１、制御回路（Control Circuit）１２２、カラムアドレスバッファ／カラムデコーダ（Column address buffer / Column decoder）１２３、フェイルビットカウンタ回路（Fail bit counter circuit）１２４、データラッチ回路（Data Latch Circuit）１２５、センスアンプ（Sense Amplifier）１２６、ロウアドレスバッファ（Row Address Buffer）１２７、ロウデコーダ（Row Decoder）１２８、及びメモリセルアレイ（Memory Cell Array）１３０を備えている。
【００１８】
メモリセルアレイ１３０は、複数の不揮発性のメモリセルトランジスタが、半導体基板に対して垂直方向に積層された３次元不揮発性半導体記憶装置である。メモリセルアレイ１３０の詳細な構成については後述する。
【００１９】
センスアンプ１２６は、データの読み出し動作時には、メモリセルトランジスタからビット線に読み出されたデータを、ＳＥＮノード（不図示）にてセンスする。またセンスアンプ１２６は、データの書込み動作時には、センスアンプのＳＥＮノードにプログラムデータに応じたプログラム電圧をセットする。メモリセルアレイ１３０へのデータの読み出し及び書込みは、複数のメモリセルトランジスタ単位（後述するページ単位）で行われる。センスアンプ１２６は、カラムアドレスバッファ／カラムデコーダ１２３から入力されるビット線選択信号を受信し、ビット線選択トランジスタ（不図示）を介してビット線ＢＬの何れかを選択して駆動する。
【００２０】
尚、書込み動作は、電荷を、メモリセルトランジスタＭＴの電荷蓄積層に注入して閾値を上昇させるプログラム電圧印加動作（プログラム動作等とも呼ぶ）と、当該プログラム電圧印加動作の結果としての閾値分布の変化を確認するプログラムベリファイ動作とを含んでいる。
【００２１】
データラッチ回路１２５は、それぞれＳＲＡＭ等で構成される第１のキャッシュ（cache）１２５ａ、第２のキャッシュ１２５ｂ、及び第３のキャッシュ１２５ｃを備えている。第１のキャッシュ１２５ａ、第２のキャッシュ１２５ｂ、及び第３のキャッシュ１２５ｃは、それぞれ、メモリコントローラ１１０から供給されたデータや、センスアンプ１２６によって検知されたベリファイ結果等を格納する。また、第１のキャッシュ１２５ａ、第２のキャッシュ１２５ｂ、及び第３のキャッシュ１２５ｃは、それぞれ、１ページ分のデータを保持する。ページの定義に関しては後述する。
【００２２】
フェイルビットカウンタ回路１２４は、データラッチ回路１２５に格納されているベリファイの結果からプログラムが完了していないビット数をカウントする。
【００２３】
カラムアドレスバッファ／カラムデコーダ１２３は、メモリコントローラ１１０から入出力バッファ１２１を介して入力されるカラムアドレス信号を一時的に格納する。そして、カラムアドレス信号に従ってビット線ＢＬの何れかを選択する選択信号をセンスアンプ１２６に出力する。
【００２４】
ロウデコーダ１２８は、ロウアドレスバッファ１２７を介して入力されるロウアドレス信号をデコードし、メモリセルアレイのワード線ＷＬ及び選択ゲート線ＳＧＤ、ＳＧＳを選択して駆動する。また、このロウデコーダ１２８は、メモリセルアレイ１３０のブロックを選択する部分とページを選択する部分を有する。
【００２５】
なお、第１の実施形態のＮＡＮＤフラッシュメモリ１２０は、図示せぬ外部入出力端子Ｉ／Ｏを有し、この外部入出力端子Ｉ／Ｏを介して入出力バッファ１２１とメモリコントローラ１１０とのデータの授受が行われる。外部入出力端子Ｉ／Ｏを介して入力されるアドレス信号は、ロウアドレスバッファ１２７を介してロウデコーダ１２８及びカラムアドレスバッファ／カラムデコーダ１２３に出力される。
【００２６】
制御回路１２２は、メモリコントローラ１１０を介して供給される各種外部制御信号（チップイネーブル信号ＣＥｎ、書込みイネーブル信号ＷＥn、読み出しイネーブル信号ＲＥn、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ等）とコマンドＣＭＤに基づき、データのプログラム及び消去のシーケンス制御、及びリード動作を制御する。
【００２７】
また、制御回路１２２は、レジスタ１２２ａ、１２２ｂ、及び１２２ｃを備えており、後述するフラグデータ、及びフェイルビットカウンタ回路１２４によってカウントされた値に関係する値等、制御回路１２２が演算するために必要な値を格納している。
【００２８】
レジスタ１２２ａは、後述する規定値ＮＣＨＫ＿ＰＶ等を格納し、レジスタ１２２ｂは、規定値ＮＭＬ２Ｖ＿ＰＶ等を格納する。また、レジスタ１２２ｃは、後述するサンプルストリング、若しくは下位ページからリードした情報（例えば８ビット情報）等を格納する。
【００２９】
そして、制御回路１２２は、レジスタ１２２ｃに格納されたフラグデータに基づいて、プログラム動作時に用いる初期プログラム電圧を決定する。
【００３０】
また、制御回路１２２は、プログラムが完了していないビット数と、設定された許容フェイルビット数とを比較して、プログラム動作がパスしたかフェイルであるかの判断を行う。また、制御回路１２２は、内部にプログラムパルス印加回数をカウントするループカウンタを備えている。
【００３１】
＜メモリセルアレイ＞
次に、図２〜図４を用いて、第１の実施形態に係るメモリセルアレイ１３０の構成の詳細について説明する。
【００３２】
図２に示すように、メモリセルアレイ１３０は、複数の不揮発性メモリセルトランジスタを備えており、それぞれがワード線及びビット線に関連付けられている。また、メモリセルアレイ１３０は、複数の不揮発性メモリセルトランジスタの集合である複数（図２では３個を図示している）のブロックＢＬＫ（ＢＬＫ０、ＢＬＫ１、ＢＬＫ２、…）を備えている。
【００３３】
ブロックＢＬＫの各々は、メモリセルトランジスタが直列接続されたＮＡＮＤストリング１３１を備えている。また、メモリセルアレイ１３０は、ＮＡＮＤストリング１３１の集合である複数のストリングユニットＳＵ（ＳＵ０、ＳＵ１、ＳＵ２、…）を備えている。もちろん、メモリセルアレイ１３０内のブロック数や、１ブロックＢＬＫ内のストリングユニット数は任意である。
【００３４】
ブロックＢＬＫ０においては、図３に示すようなカラムの構成が、紙面垂直方向に複数設けられている。第１の実施形態では、ブロックＢＬＫ０は、例えば４つのストリングユニットＳＵ（ＳＵ０〜ＳＵ３）を含んでいる。また各々のストリングユニットＳＵは、図３の紙面垂直方向に複数のＮＡＮＤストリング１３１を含む。他のブロックＢＬＫもブロックＢＬＫ０と同様の構成を有している。
【００３５】
ＮＡＮＤストリング１３１の各々は、例えば４８個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ４７）と、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。メモリセルトランジスタＭＴは、制御ゲートと電荷蓄積層とを含む積層ゲートを備え、データを不揮発に保持する。なお、メモリセルトランジスタＭＴの個数は４８個に限られず、８個や、１６個や３２個、６４個、１２８個等であってもよく、その数は限定されるものではない。また、メモリセルトランジスタＭＴ０〜ＭＴ４７を区別しない場合には、単にメモリセルトランジスタＭＴと称す。
【００３６】
複数のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１、ＳＴ２間に、直列接続されるようにして配置されている。
【００３７】
ストリングユニットＳＵ０〜ＳＵ３の各々の選択トランジスタＳＴ１のゲートは、それぞれ選択ゲート線ＳＧＤ０〜ＳＧＤ３に接続され、選択トランジスタＳＴ２のゲートは、それぞれ選択ゲート線ＳＧＳ０〜ＳＧＳ３に接続される。これに対して同一のブロックＢＬＫ０内にあるメモリセルトランジスタＭＴ０〜ＭＴ４７の制御ゲートはそれぞれワード線ＷＬ０〜ＷＬ４７に共通接続される。尚、ワード線ＷＬ０〜ＷＬ４７を区別しない場合には、単にワード線ＷＬと称す。
【００３８】
すなわち、ワード線ＷＬ０〜ＷＬ４７は同一ブロックＢＬＫ０内の複数のストリングユニットＳＵ０〜ＳＵ３間で共通に接続されているのに対し、選択ゲート線ＳＧＤ、ＳＧＳは、同一ブロックＢＬＫ０内であってもストリングユニットＳＵ０〜ＳＵ３毎に独立している。
【００３９】
また、メモリセルアレイ１３０内でマトリクス状に配置されたＮＡＮＤストリング１３１のうち、同一行にあるＮＡＮＤストリング１３１の選択トランジスタＳＴ１の他端は、いずれかのビット線ＢＬ（ＢＬ０〜ＢＬ（Ｌ−１）、（Ｌ−１）は１以上の自然数）に共通接続される。すなわち、ビット線ＢＬは、複数のブロックＢＬＫ間で、ＮＡＮＤストリング１３１を共通に接続する。また、選択トランジスタＳＴ２の電流経路の他端は、ソース線ＳＬに共通に接続されている。ソース線ＳＬは、例えば複数のブロック間で、ＮＡＮＤストリング１３１を共通に接続する。
【００４０】
前述の通り、同一のブロックＢＬＫ内にあるメモリセルトランジスタＭＴのデータは、一括して消去される。これに対してデータのリード及びプログラムは、いずれかのブロックＢＬＫのいずれかのストリングユニットＳＵにおける、いずれかのワード線ＷＬに共通に接続された複数のメモリセルトランジスタＭＴにつき、一括して行われる。このように一括して書込まれる単位を「ページ」と呼ぶ。
【００４１】
続いて、メモリセルアレイ１３０の断面構造の一例につき、図４を用いて簡単に説明する。図４に示す構造が、図４を記載した紙面の奥行き方向（Ｄ２方向）に複数配列され、且つそれらがワード線ＷＬ、選択ゲート線ＳＧＤ及びＳＧＳを共有して、１つのストリングユニットＳＵが形成される。
【００４２】
図示しない半導体基板上方に、ソース線ＳＬ１０が形成される。そして、図４に示すように、ソース線ＳＬ１０の上方には、選択ゲート線ＳＧＳとして機能する導電膜２１ａが形成される。また、導電膜（例えば多結晶シリコン膜）２１ａ上には、ワード線ＷＬとして機能する複数の導電膜（例えば多結晶シリコン膜）２５が形成される。更に導電膜２５上方には、選択ゲート線ＳＧＤとして機能する導電膜（例えば多結晶シリコン膜）２１ｂが形成される。そして、各導電膜２１ａ、２１ｂ及び２５を、それぞれＤ３方向において電気的に分離するように、電極間絶縁膜が各導電膜２１ａ、２１ｂ及び２５間に形成されている。より具体的には、導電膜２５と電極間絶縁膜はＤ３方向において交互に積層されている。
【００４３】
そして、上記導電膜２１ａ、２１ｂ、２５、及び電極間絶縁膜に、半導体基板表面に対して垂直方向（Ｄ３方向：Ｄ２方向に直交する方向）に延伸するメモリホールが形成される。本明細書では、Ｄ１方向（Ｄ２方向、及びＤ３方向に直交する方向）、及びＤ２方向に平行な平面におけるメモリホールの直径をＭＨ径と称す。第１の実施形態においては、導電膜２１ａ、２１ｂ、２５、及び電極間絶縁膜等の多層膜にメモリホールを形成する。この場合、多層膜における上層領域は、下層領域よりも多くエッチングされる。このため、上層領域のメモリホールのＭＨ径は、下層領域のメモリホールのＭＨ径よりも大きい。このＭＨ径の差は、メモリホールのエッチング距離（Ｄ３方向）が長くなればなるほど、顕著となることがある。
【００４４】
この選択トランジスタＳＴ２となる領域に形成されたメモリホールの内壁には、ゲート絶縁膜２２ａ、及び半導体層２０ａが順次形成され、柱状構造が形成される。
【００４５】
メモリセルトランジスタとなる領域に形成されたメモリホールの内壁には、ブロック絶縁膜２４、電荷蓄積層（絶縁膜）２３、及びゲート絶縁膜２２ｂ、半導体層２０ｂが順次形成され、柱状構造が形成される。
【００４６】
選択トランジスタＳＴ１となる領域に形成されたメモリホールの内壁には、ゲート絶縁膜２２ｃ、及び半導体層２０ｃが順次形成され、柱状構造が形成される。
【００４７】
半導体層２０ｂは、メモリセルトランジスタＭＴの動作時にチャネルが形成される領域である。更に、半導体層２０ｃ上にはビット線層３０が形成される。
【００４８】
メモリセルアレイ１３０の構成については、例えば、“三次元積層不揮発性半導体メモリ”という２００９年３月１９日に出願された米国特許出願１２／４０７，４０３号に記載されている。また、“三次元積層不揮発性半導体メモリ”という２００９年３月１８日に出願された米国特許出願１２／４０６，５２４号、“不揮発性半導体記憶装置及びその製造方法”という２０１０年３月２５日に出願された米国特許出願１２／６７９，９９１号、“半導体メモリ及びその製造方法”という２００９年３月２３日に出願された米国特許出願１２／５３２，０３０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００４９】
＜メモリセルトランジスタの閾値分布＞
次に、図５（ａ）、図５（ｂ）、及び図５（ｃ）を用いて、本実施形態に係るメモリセルトランジスタＭＴの取りうる閾値分布について説明する。
【００５０】
図５（ａ）、図５（ｂ）、及び図５（ｃ）に示すようにメモリセルトランジスタＭＴは、その閾値に応じて例えば２ビットのデータを保持可能である。この２ビットデータは、閾値の低いものから順番に、例えば“Ｅ”レベル、“Ａ”レベル、“Ｂ”レベル、及び“Ｃ”レベルである。また、各レベルは、上位ビット及び下位ビットの２ビットのアドレスをもつ。例えば“Ｅ”レベルは“１１”と番号付けされ、“Ａ”レベルは“０１”と番号付けされ、“Ｂ”レベルは“００”と番号付けされ、“Ｃ”レベルは“１０”と番号付けされる。“１１”、“０１”、“００”、及び“１０”は、左側の数字が上位ビット、右側の数字が下位ビットに割り当てられる。ここでは、下位ビットのデータの書込み単位を「下位ページ」と呼ぶ。また、上位ビットのデータの書込み単位を「上位ページ」と呼ぶ。
【００５１】
“Ｅ”レベルは、データが消去された状態における閾値であり、例えば負の値を有し（正の値を有していても良い）、消去ベリファイ電圧ＥＶよりも低い。“Ａ”〜“Ｃ”レベルは、電荷蓄積層内に電荷が注入された状態の閾値であり、“Ａ”レベルはリードレベル“ＡＲ”よりも高く、且つリードレベル“ＢＲ”より低い閾値を有する。“Ｂ”レベルは、リードレベル“ＢＲ”よりも高く、且つリードレベル“ＣＲ”より低い閾値を有する。“Ｃ”レベルは、リードレベル“ＣＲ”よりも高い閾値を有する。
【００５２】
このように、個々のメモリセルトランジスタＭＴは、４つの閾値レベルを取り得ることにより、２ビットのデータ(4-level data)を記憶出来る。
【００５３】
下位ページプログラム（lower page program）が行われると、図５（ａ）に示す消去状態（“Ｅ”レベル）の閾値分布が、図５（ｂ）に示す２値（Lower-levelと、Middle-level）の閾値分布に変化する。電圧“ＭＲ”を選択ワード線に供給してリード動作を行なうことで、メモリセルトランジスタＭＴの閾値電圧が電圧“ＭＲ”よりも高いか低いか判別できる。その結果、２値（Lower-levelと、Middle-level）のデータを読み出すことができる。
【００５４】
下位ページプログラムの後に上位ページプログラム（upper page program）が行われると、図５（ｂ）に示す２値の閾値分布が、図５（ｃ）に示すように、４値の閾値分布に変化する。以上のように、下位ページプログラムを行った後に、上位ページプログラムを行う事で、４値のデータのプログラム動作を行う方法を、第１のプログラム動作と称す。
【００５５】
また、メモリセルトランジスタＭＴに対して下位ページのデータと上位ページのデータとを併せてプログラムすることで、図５（ａ）に示す１値の閾値分布を、図５（ｃ）に示すような４値の閾値分布に変化することも可能である。このように、下位ページプログラムと、上位ページプログラムとを分けて行わずに、消去状態から直接２ビット（４値）以上の複数ビットのプログラムを行う方法を第２のプログラム動作と称す。
【００５６】
第１の実施形態では、メモリセルトランジスタＭＴが４値を保持する場合において、メモリセルトランジスタＭＴへのプログラム動作として、第１のプログラムを適用するメモリシステム１００について説明する。
【００５７】
尚、図５（ｂ）及び図５（ｃ）において、電圧ＭＲ及び後述するプログラムベリファイ電圧ＶＣＨＫは、同様の電圧であるように示されているが、電圧ＭＲ及び電圧ＶＣＨＫは必ずしも同様である必要はなく、それぞれの大小関係は適宜変更可能である。
【００５８】
＜ページ＞
次に、ページについて説明する。第１の実施形態に係るメモリセルトランジスタＭＴは、４値を保持する。そのため、図６に示すように、第１の実施形態に係るページには、下位ページと、上位ページとが存在する。
【００５９】
図６に示すように、下位ページ（lower page）１３２は、通常データ領域（normal data area）１３２ａと、冗長データ領域（redundancy area）１３２ｂとを有している。
【００６０】
上位ページ（upper page）１３３は、通常データ領域１３３ａと、冗長データ領域１３３ｂとを有している。
【００６１】
通常データ領域（normal data area）１３２ａ、及び１３３ａには、例えばホスト２００から供給されたデータが格納される。冗長データ領域（redundancy area）１３２ｂ、１３３ｂには、例えばフラグデータなどが格納される。尚、フラグデータについては、後述で説明する。
【００６２】
＜第１の実施形態に係るデータの書込み動作の概要＞
ところで、メモリセルアレイ１３０は、３次元積層型の構造を有しており、メモリセルトランジスタＭＴのプログラム特性（条件）は、ワード線ＷＬの膜厚等の仕上がり形状に起因するプログラム特性のバラツキと、ＭＨ径に起因するプログラム特性のバラツキと、が存在する。
【００６３】
しかしながら、同一ブロック内の同一ワード線であれば、ストリングユニットＳＵ間のバラツキはそれほど大きくないと考えられる。
【００６４】
そこで、例えば、ブロック内の１つのストリングユニットを、“メモリセルトランジスタＭＴのプログラム特性を取得（キャプチャ）するためのサンプルストリングユニット“とする。そして、サンプルストリングユニットから取得したプログラム特性を、同一ブロック内のサンプルストリングユニット以外のストリングユニットに適用する。これにより、サンプルストリングユニット以外のユニットにおけるプログラムスピードを向上させることが可能となる。
【００６５】
サンプルストリングユニットのそれぞれのワード線ＷＬは、各ブロックにおいて最初にプログラムされることが望ましい。
【００６６】
本実施形態では、ストリングユニットＳＵ０に係るページアドレスは、ストリングユニットＳＵ０以外のストリングユニットに係るページアドレスと比較して小さいものとする。そのため、制御回路１２２は、ストリングユニットＳＵ０以外のストリングユニットのワード線ＷＬよりも先にストリングユニットＳＵ０のメモリセルトランジスタＭＴをプログラムする。そして、制御回路１２２は、特に指定がない場合は、ストリングユニットＳＵ０をサンプルストリングユニットとして取り扱う。
【００６７】
制御回路１２２は、サンプルストリングユニットに対して、所定のプログラム動作を行い、メモリセルトランジスタＭＴがオーバープログラムされない、最大の初期プログラム電圧ＶＰＧＭを導出する。このような動作を、キャプチャ動作とも呼ぶ。第１のプログラム動作において、このキャプチャ動作は、サンプルストリングユニットの所定のワード線ＷＬにおける下位ページプログラムの際、同時に行われる。また、第２のプログラム動作において、このキャプチャ動作は、サンプルストリングユニットの所定のワード線ＷＬへのプログラムの際に行われる。詳細なキャプチャ動作については後述する。
【００６８】
そして、制御回路１２２は、キャプチャ動作の結果に基づいて、サンプルストリングユニットの所定のワード線ＷＬと同一ワード線の上位ページだけでなく、同一ブロック内の他のストリングユニットＳＵの同一のワード線ＷＬの下位ページ、及び上位ページの初期プログラム電圧を決定する。制御回路１２２は、キャプチャ動作を、サンプルストリングユニットのワード線ＷＬ毎に行う。
【００６９】
制御回路１２２は、メモリコントローラ１１０から受信したコマンド及びアドレスに基づいて、キャプチャ動作を行う。制御回路１２２は、どのようなコマンド及びアドレスに基づいて、キャプチャ動作を行うか否かについては、後述する他の例で詳細に説明する。
【００７０】
＜第１の実施形態に係るデータの書込み動作の詳細＞
以下に、図７に示すフローチャートに沿って、第１の実施形態に係る第１のプログラム動作について説明する。尚、下記に示す処理は、主に制御回路１２２の制御によって実行される。
【００７１】
［Ｓ１００１］
制御回路１２２は、メモリコントローラ１１０から、プログラムコマンド、ブロックアドレス、ページのアドレス（選択ストリングユニットＳＵＰ（Ｐ：０以上の整数）のアドレス情報を含む）、プログラム開始コマンドを受信する前に、サンプルストリングユニット指定コマンドを受信したか否かを判定する。尚、以下では簡単のために、プログラムコマンド、アドレス、データ、及びプログラム開始コマンドをまとめて「コマンドシーケンス」等と称すことがある。
【００７２】
＜＜コマンドシーケンス例１＞＞
ここで、図８を用いて、プログラム開始コマンドを受信する前に、サンプルストリングユニット指定コマンドを受信しない場合の下位ページプログラムに係るコマンドシーケンスについて説明する。  
図８に示すように、コマンドシーケンスが、メモリコントローラ１１０から、ＮＡＮＤフラッシュメモリ１２０に入力される前は、チップイネーブル信号ＣＥｎ、アドレスラッチイネーブル信号ＡＬＥ、コマンドラッチイネーブル信号ＣＬＥは、“Ｌ（low）”レベルである。また、書込みイネーブル信号ＷＥn、読み出しイネーブル信号ＲＥnは、“Ｈ（high）”レベルである。また、データラッチ回路１２５のレディ／ビジー状態を示すレディ／ビジー信号（Ｒ/Ｂｎ）は“レディ”状態である。  
続いて、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からコマンド“８０Ｈ”が入力され、書込みイネーブル信号ＷＥnが“Ｌ”レベルとなる。  
ＮＡＮＤフラッシュメモリ１２０は、アドレスラッチイネーブル信号ＡＬＥが“Ｈ”レベルである期間、メモリコントローラ１１０からアドレスを受信する。このアドレスは、下位ページのアドレスである。  
そして、ＮＡＮＤフラッシュメモリ１２０は、アドレスに続いて、データを受信する。これにより、当該データが第１のキャッシュ１２５ａに格納される。  
また、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からコマンド“１０Ｈ”が入力される。これにより、下位ページプログラムが実行される。上位ページプログラムの際も、同様のコマンドシーケンスで動作される。
【００７３】
＜＜コマンドシーケンス例２＞＞
また、図９を用いて、プログラム開始コマンドを受信する前に、サンプルストリングユニット指定コマンドを受信する場合の下位ページプログラムに係るコマンドシーケンスについて説明する。
【００７４】
図９に示すように、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からサンプルストリングユニット指定コマンド“ＺＺＨ”が入力される。  
そして、ＮＡＮＤフラッシュメモリ１２０は、アドレスラッチイネーブル信号ＡＬＥが“Ｈ”レベルである期間、メモリコントローラ１１０からストリングユニットのアドレスを受信する。このアドレスは、指定されたストリングユニット（指定ストリングユニットＳＵＱ（Ｑ：０以上の整数）等と称す）のアドレスである。そして、図８を用いて説明した動作と同様に動作する。これにより、下位ページプログラムが実行される。上位ページプログラムの際も、同様のコマンドシーケンスで動作される。
【００７５】
［Ｓ１００２］
制御回路１２２は、ステップＳ１００１において、サンプルストリングユニット指定コマンドを受信しないと判定する場合（Ｓ１００１、ＮＯ）、ストリングユニットＳＵ０をサンプルストリングユニットとして取り扱う。そして、制御回路１２２は、選択された選択ストリングユニットＳＵＰが、ストリングユニットＳＵ０か否かを判定する。尚、選択ストリングユニットＳＵＰとは、プログラム動作が行われるストリングユニットである。
【００７６】
［Ｓ１００３］
制御回路１２２は、ステップＳ１００２において、選択ストリングユニットＳＵＰが、ストリングユニットＳＵ０であると判定する場合（Ｓ１００２、ＹＥＳ）、受信したページのアドレスが、下位ページのアドレスであるか否かを判定する。
【００７７】
［Ｓ１００４］
制御回路１２２は、ステップＳ１００２において、選択ストリングユニットＳＵＰが、ストリングユニットＳＵ０ではないと判定する場合（Ｓ１００２、ＮＯ）、受信したページのアドレスが、下位ページのアドレスであるか否かを判定する。
【００７８】
［Ｓ１００５］
制御回路１２２は、ステップＳ１００１において、サンプルストリングユニット指定コマンドを受信すると判定する場合（Ｓ１００１、ＹＥＳ）、有効なストリングユニットのアドレスが指定されたか否かを判定する。換言すると、制御回路１２２は、指定ストリングユニットＳＵＱが、例えば、図示しないレジスタに格納されている、ストリング情報と比較し、存在するストリングであるか否かを判定する。
【００７９】
［Ｓ１００６］
制御回路１２２は、ステップＳ１００５において、指定ストリングユニットＳＵＱが、有効なアドレス指定ではないと判定する場合（Ｓ１００５、ＮＯ）、受信したページのアドレスが、下位ページのアドレスであるか否かを判定する。
【００８０】
［Ｓ１００７］
制御回路１２２は、ステップＳ１００５において、指定ストリングユニットＳＵＱが、有効なアドレス指定であると判定する場合（Ｓ１００５、ＹＥＳ）、選択ストリングユニットＳＵＰが、指定ストリングユニットＳＵＱと同じか否かを判定する。
【００８１】
［Ｓ１００８］
制御回路１２２は、ステップＳ１００７において、指定ストリングユニットＳＵＱが、選択ストリングユニットＳＵＰと同じであると判定する場合（Ｓ１００７、ＹＥＳ）、受信したページのアドレスが、下位ページのアドレスであるか否かを判定する。
【００８２】
［Ｓ１００９］
制御回路１２２は、ステップＳ１００７において、指定ストリングユニットＳＵＱと、選択ストリングユニットＳＵＰとが同じではないと判定する場合（Ｓ１００７、ＮＯ）、受信したページのアドレスが、下位ページのアドレスであるか否かを判定する。
【００８３】
＜ステップＳ１００３において、“ＹＥＳ”の場合＞
次に、図１０を用いて、制御回路１２２が、図７のステップＳ１００３において、受信したページのアドレスが、下位ページのアドレスであると判定する場合（Ｓ１００３、ＹＥＳ）について説明する。
【００８４】
第１の実施形態に係るデータのプログラム動作例につき、図１０のフローチャートを用いて説明する。下記では、下位ページプログラムの一部として、キャプチャ動作を行う動作例について示している。
【００８５】
［Ｓ１１０１］
まず、制御回路１２２は、受信した下位ページのデータを第３のキャッシュ１２５ｃに格納する。そして、制御回路１２２は、キャプチャ動作を行う。  
ところで、制御回路１２２は、キャプチャ動作が終了するまで、第３のキャッシュ１２５ｃに格納された冗長データ領域１３２ｂのフラグデータが格納されるカラムアドレスには、非書込みデータをセットする。
【００８６】
［Ｓ１１０２］
次に、図１１に示すように、制御回路１２２は、下位ページのプログラム動作を開始する。具体的には、制御回路１２２の命令に応答して、ロウデコーダ１２８は、選択されたストリングユニットの選択トランジスタをオンさせつつ、選択ワード線ＷＬｎ（ｎ：０以上の整数）にプログラム電圧ＶＰＧＭＣを印加する。また、制御回路１２２の命令に応答して、センスアンプ１２６がビット線ＢＬに下位ページデータに応じた電圧を印加する。
【００８７】
これにより、制御回路１２２は、第３のキャッシュ１２５ｃに格納した下位ページデータをメモリセルトランジスタＭＴにプログラムする。  
［Ｓ１１０３］
次に、制御回路１２２の命令に応答して、ロウデコーダ１２８は、キャプチャ動作時のベリファイ用のプログラムベリファイ電圧ＶＣＨＫを選択ワード線ＷＬｎに印加する。  
このようにして、制御回路１２２は、第１のプログラムベリファイ動作を実行する。すなわち、制御回路１２２の命令に従って、センスアンプ１２６が選択ページからデータを読み出す。そして制御回路１２２は、メモリセルトランジスタＭＴの閾値が所望の値まで上昇しているか否かを、読み出しデータに基づいて確認する。
【００８８】
［Ｓ１１０４］
制御回路１２２は、キャプチャ動作時のベリファイ用のプログラムベリファイ電圧ＶＣＨＫを超えたメモリセルトランジスタ数ＮＣＨＫ＿ＰＡＳＳが、規定値ＮＣＨＫ＿ＰＶを超えているか否かを判定する。尚、この規定値ＮＣＨＫ＿ＰＶは、図示しないメモリセルアレイ１３０のロムヒューズブロックに格納されており、メモリシステム１００の起動時に読み出され、予めレジスタ１２２ａに規定値ＮＣＨＫ＿ＰＶを格納しておく。
【００８９】
［Ｓ１１０５］
ステップＳ１１０４において、制御回路１２２が、メモリセルトランジスタ数ＣＨＫ＿ＰＡＳＳが、規定値ＣＨＫ＿ＰＶを超えていないと判定する場合（Ｓ１１０４、ＮＯ）、制御回路１２２は、ループ数ＮＷＬｎ＿ｌｏｏｐをＮＷＬｎ＿ｌｏｏｐ＋１に更新する。尚、ループ数ＮＷＬｎ＿ｌｏｏｐの初期値は“０”である。
【００９０】
［Ｓ１１０６］
また、制御回路１２２は、ループ数ＮＷＬｎ＿ｌｏｏｐを更新した後、プログラム電圧ＶＰＧＭを、ＤＶＰＧＭ＿Ｌだけ増加させる。そして、制御回路１２２は、更新されたプログラム電圧ＶＰＧＭを用いてステップＳ１１０２の動作を繰り返す。尚、ステップＳ１１０５、及びステップＳ１１０６の動作の順序は入れ替えても良い。
【００９１】
［Ｓ１１０７］
ステップＳ１１０４において、制御回路１２２が、メモリセルトランジスタ数ＮＣＨＫ＿ＰＡＳＳが、規定値ＮＣＨＫ＿ＰＶを超えていると判定する場合（Ｓ１１０４、ＹＥＳ）、制御回路１２２は、信号ＳＶ＿ＰＡＳＳを“Ｌ(Low)”レベルから“Ｈ(High)”レベルへと立ち上げる。信号ＳＶ＿ＰＡＳＳが“Ｌ”レベルから“Ｈ”レベルに立ち上がると、制御回路１２２は、電圧ＭＬ２Ｖを超えているメモリセルトランジスタ数ＮＭＬ２Ｖ＿ＰＡＳＳが、規定値ＮＭＬ２Ｖ＿ＰＶを超えているか否かの判定を行うために、プログラムベリファイ動作を行う。
【００９２】
より具体的には、ロウデコーダ１２８は、ベリファイ電圧ＭＬ２Ｖを選択ワード線ＷＬｎに印加して、プログラムベリファイ動作を実行する。
【００９３】
［Ｓ１１０８］
続いて、制御回路１２２は、ステップＳ１１０７におけるプログラムベリファイ結果を読み出すと、信号ＤＥＴＥＣＴ＿ＣＨＫを“Ｌ”レベルから“Ｈ”レベルに立ち上げる。制御回路１２２は、信号ＤＥＴＥＣＴ＿ＣＨＫが“Ｈ”の期間に、電圧ＭＬ２Ｖを超えているメモリセルトランジスタ数ＮＭＬ２Ｖ＿ＰＡＳＳが、規定値ＮＭＬ２Ｖ＿ＰＶを超えているか否かの判定を行う。この規定値ＮＭＬ２Ｖ＿ＰＶは、メモリセルアレイ１３０の図示しないロムヒューズブロックに格納されており、メモリシステム１００の起動時に読み出され、制御回路１２２はレジスタ１２２ｂに規定値ＮＭＬ２Ｖ＿ＰＶを格納しておく。
【００９４】
ところで、ステップＳ１１０２〜Ｓ１１０６の動作の結果、middle levelのベリファイレベルである電圧ＭＬ２Ｖを超えるメモリセルトランジスタ数ＮＭＬ２Ｖ＿ＰＡＳＳが、規定値ＮＭＬ２Ｖ＿ＰＶを超えていることがある。この場合における、ステップＳ１１０４において“ＹＥＳ”となったプログラム電圧ＶＰＧＭを、下位ページプログラムの初期プログラム電圧として用いると、middle levelのベリファイレベルに、規定値以上のセルが到達し、オーバープログラムが発生する可能性がある。このような、オーバープログラムを抑制するために、制御回路１２２は、上述したステップＳ１１０７、Ｓ１１０８の動作を行い、メモリセルトランジスタ数ＮＭＬ２Ｖ＿ＰＡＳＳが、規定値ＮＭＬ２Ｖ＿ＰＶを超えているか否かを、判定する。上記判定動作が終了することにより、キャプチャ動作の完了となる。
【００９５】
［Ｓ１１０９］
制御回路１２２は、キャプチャ動作が完了した後に、キャプチャ動作の結果をフラグデータとしてレジスタ１２２ｃに格納する。具体的には、制御回路１２２は、ステップＳ１１０７、Ｓ１１０８におけるプログラムベリファイ結果と、ステップＳ１１０４をパスするまでに要したループ数と、をフラグデータとして制御回路１２２のレジスタ１２２ｃに格納する。このフラグデータは、例えば８ビットデータである。第１の実施形態では、当該８ビットのデータの内、１ビット分のデータが当該判定結果（電圧ＭＬ２Ｖを超えているメモリセルトランジスタ数ＮＭＬ２Ｖ＿ＰＡＳＳが、規定値ＮＭＬ２Ｖ＿ＰＶを超えているか否か）に割り当てられ、７ビット分のデータがループ数に割り当てられる。
【００９６】
具体的には、ループ数ＮＷＬｎ＿ｌｏｏｐ＝４の際に、メモリセルトランジスタ数ＮＣＨＫ＿ＰＡＳＳが、ＮＣＨＫ＿ＰＡＳＳ＞ＮＣＨＫ＿ＳＶ且つＮＭＬ２Ｖ＿ＰＡＳＳ＜ＮＭＬ２Ｖ＿ＰＶとなる場合、８ビットのフラグデータは、｛０＿０００＿１００｝と表わされる。また、ループ数ＮＷＬｎ＿ｌｏｏｐ＝４の際に、メモリセルトランジスタ数ＮＣＨＫ＿ＰＡＳＳが、ＮＣＨＫ＿ＰＡＳＳ＞ＮＣＨＫ＿ＳＶ且つＮＭＬ２Ｖ＿ＰＡＳＳ＞ＮＭＬ２Ｖ＿ＰＶとなる場合、８ビットのデータは、｛１＿０００＿１００｝と表わされる。本実施形態では、フラグデータの最上位ビットをＳＶ＿ＯＶＥＲと定義する。つまり、フラグデータのフォーマットは、｛ＳＶ＿ＯＶＥＲ、ＮＷＬｎ＿ｌｏｏｐ［６：０］｝となる。電圧ＭＬ２Ｖを超えているメモリセルトランジスタ数ＮＭＬ２Ｖ＿ＰＡＳＳが、規定値ＮＭＬ２Ｖ＿ＰＶを超えていない場合は、ビットＳＶ＿ＯＶＥＲは“０”となり、超えている場合は、ビットＳＶ＿ＯＶＥＲは“１”となる。
【００９７】
制御回路１２２は、レジスタ１２２ｃに格納されているフラグデータを、第３のキャッシュ１２５ｃに格納されている冗長データ領域１３２ｂに上書きし、冗長データ領域１３２ｂのフラグデータのプログラム禁止状態を解除する。次のプログラムパルスの印加から、通常データ領域１３２ａと共にフラグデータのプログラム動作を開始する。尚、制御回路１２２は、この際にループカウンタをリセットする。
【００９８】
［Ｓ１１１０］ 
続いて、制御回路１２２は、ループ数ＮＷＬｎ＿ｌｏｏｐをＮＷＬｎ＿ｌｏｏｐ＋１に更新する。
【００９９】
［Ｓ１１１１］
また、制御回路１２２は、ループ数ＮＷＬｎ＿ｌｏｏｐを更新した後、プログラム電圧ＶＰＧＭを、ＤＶＰＧＭ＿Ｌだけ増加させる。
【０１００】
尚、ステップＳ１１１０、及びステップＳ１１１１の動作の順序は入れ替えても良い。
【０１０１】
［Ｓ１１１２］
本例のように、キャプチャ動作が下位ページプログラムの一部として行われる場合、制御回路１２２は、キャプチャ動作に続いて、下位ページのプログラム動作を続ける。  
具体的には、制御回路１２２の命令に応答して、ロウデコーダ１２８は、選択されたストリングユニットの選択トランジスタをオンさせつつ、選択ワード線ＷＬｎに、プログラム電圧ＶＰＧＭを印加する。そして、制御回路１２２の命令に応答して、センスアンプ１２６は、ビット線ＢＬに下位ページデータに応じた電圧を印加する。  
これにより、第３のキャッシュ１２５ｃに格納したデータ（通常データ領域１３２ａ及び冗長データ領域１３２ｂ）がメモリセルアレイ１３０にプログラムされる。
【０１０２】
［Ｓ１１１３］
次に、制御回路１２２の命令に応答して、ロウデコーダ１２８はプログラムベリファイ電圧ＭＬ２Ｖを選択ワード線ＷＬｎに印加する。  
これにより、制御回路１２２は、プログラムベリファイ動作を実行する。以下、所望の値まで上昇していた場合をベリファイに「パスした」、と呼び、上昇していなかった場合を「フェイルした」、と呼ぶ。
【０１０３】
［Ｓ１１１４］
制御回路１２２は、プログラムベリファイがパスしたか否かを判定する。選択ページにおけるプログラムベリファイにパスすれば（ステップＳ１１１４、ＹＥＳ）、当該ページに対するプログラム動作は終了する。
【０１０４】
［Ｓ１１１５］
制御回路１２２は、選択ページにおけるプログラムベリファイがパスしていないと判断する場合（ステップＳ１１１４、ＮＯ）、当該ページに対するプログラム動作のループ数が最大値に達しているか否かを判定する。ループ数が最大値に達している場合（ステップＳ１１１５、ＹＥＳ）は、当該ページに対するプログラム動作は終了する。
【０１０５】
［Ｓ１１１６］
ステップＳ１１１５において、制御回路１２２が、ループ数が最大値に達していない場合（ステップＳ１１１５、ＮＯ）は、制御回路１２２は、ループ数ＮＷＬｎ＿ｌｏｏｐをＮＷＬｎ＿ｌｏｏｐ＋１に更新する。
【０１０６】
［Ｓ１１１７］
また、制御回路１２２は、ループ数ＮＷＬｎ＿ｌｏｏｐを更新した後、プログラム電圧ＶＰＧＭを、ＤＶＰＧＭ＿Ｌだけ増加させる。そして、制御回路１２２は、更新されたプログラム電圧ＶＰＧＭを用いてステップＳ１１１２の動作を繰り返す。尚、ステップＳ１１１６、及びステップＳ１１１７の動作の順序は入れ替えても良い。
【０１０７】
制御回路１２２は、ステップＳ１１１４のベリファイ動作をパスしたと判定する、またはステップＳ１１１５において、ループ数が最大値であると判定するまで、ステップＳ１１１２〜Ｓ１１１７の動作を繰り返す。
【０１０８】
＜ステップＳ１００３において、“ＮＯ”の場合＞
次に、図１２に示すフローチャートに沿って、制御回路１２２が、ステップＳ１００３において、受信したページのアドレスが、下位ページのアドレスでないと判定する場合（Ｓ１００３、ＮＯ）について説明する。  
［Ｓ１２０１］
制御回路１２２は、メモリコントローラ１１０から受信した上位ページのアドレスに対応する下位ページのアドレスからデータをメモリセルアレイ１３０からリードする。  
より具体的には、制御回路１２２は、図１３に示すように選択ワード線ＷＬｎに、例えば電圧ＭＲを印加する。  
これにより、制御回路１２２は、選択ワード線ＷＬｎに格納されているデータをリードすることが可能となる。  
［Ｓ１２０２］
そして、制御回路１２２は、下位ページのデータをメモリセルアレイ１３０からリードして、第１のキャッシュ１２５ａに下位ページのデータを格納する。制御回路１２２は、下位ページの冗長データ領域に書込まれているフラグデータを制御回路１２２のレジスタ１２２ｃに格納する。
【０１０９】
そして、制御回路１２２は、第２のキャッシュ１２５ｂに、上位ページのデータを格納する。
【０１１０】
制御回路１２２は、リードした下位ページ１３２の冗長データ領域１３２ｂのフラグデータを、上位ページ用のフラグデータとして第２のキャッシュ１２５ｂに格納されている上位ページ用の冗長データ領域１３３ｂに格納する。つまり、上位ページのフラグデータと、下位ページのフラグデータと、は同じとなる。これにより、図５（ｃ）に示すように、上位ページをプログラムした後のフラグデータは、“１１（Ｅ）”データまたは“００（Ｂ）”データとなる。このように、２値のフラグデータ（“１１（Ｅ）”データまたは“００（Ｂ）”データ）は、それぞれの閾値分布が隣接していないので、メモリセルトランジスタＭＴの劣化などに起因する閾値分布の変動によるデータの変化を抑制することが可能となる。
【０１１１】
［Ｓ１２０３］
次に、制御回路１２２は、レジスタ１２２ｃに格納されているフラグデータに基づいて、上位ページ用の初期プログラム電圧ＶＰＧＭ（ＶＰＧＭ＝ＶＰＧＭ＿ＳＶＵ）を決定する。  
下記に、図１４及び図１５を用いて、上位ページプログラム用の初期プログラム電圧について説明する。
【０１１２】
（ｉ）下位ページのフラグデータが｛ＳＶ＿ＯＶＥＲ＝０、ＮＷＬｎ＿ｌｏｏｐ＝ｍ｝の場合
ループ数（プログラムパルス印加回数−１）にＤＶＰＧＭ＿Ｌを乗じた電圧を、初期プログラム電圧ＶＰＧＭＣに加算した電圧（ＶＰＧＭＣ＋ＮＷＬｎ＿ｌｏｏｐ×ＤＶＰＧＭ＿Ｌ）を、プログラム電圧ＶＰＧＭ＿ＢＡＳＥとして取り扱う。
【０１１３】
図１４（ａ）及び図１４（ｂ）に示すように、本例では、フラグデータが｛ＳＶ＿ＯＶＥＲ＝０、ＮＷＬｎ＿ｌｏｏｐ＝３であるプログラム電圧ＶＰＧＭ＿ＢＡＳＥは、ＶＰＧＭＣ＋３×ＤＶＰＧＭ＿Ｌとなる。
【０１１４】
（ｉｉ）下位ページのフラグデータが｛ＳＶ＿ＯＶＥＲ＝１、ＮＷＬｎ＿ｌｏｏｐ＝ｍ｝の場合
初期プログラム電圧ＶＰＧＭＣに、ループ数にＤＶＰＧＭ＿Ｌを乗じた電圧を加算し、更にＤＶＰＧＭ＿を２で除算した電圧を、全体から減算した電圧ＶＰＧＭＣ+ＮＷＬＮ＿ＬＯＯＰ * ＤＶＰＧＭ＿Ｌ - 1/2*ＤＶＰＧＭ＿Ｌ）を、プログラム電圧ＶＰＧＭ＿ＢＡＳＥとして取り扱う。
【０１１５】
図１５（ａ）及び図１５（ｂ）に示すように、本例では、フラグデータが｛ＳＶ＿ＯＶＥＲ＝１、ＮＷＬｎ＿ｌｏｏｐ＝３であるプログラム電圧ＶＰＧＭ＿ＢＡＳＥは、ＶＰＧＭＣ＋２．５×ＤＶＰＧＭ＿Ｌとなる。
【０１１６】
（ｉｉｉ）上位ページプログラム用の初期プログラム電圧
制御回路１２２は、上記プログラム電圧ＶＰＧＭ＿ＢＡＳＥを、上位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＵとしても良い。
【０１１７】
また、図１４（ｃ）、図１５（ｃ）に示すように、プログラム電圧ＶＰＧＭ＿ＢＡＳＥに対して、オフセット電圧ＶＰＧＭ＿ＯＦＦＵを減じた電圧を、上位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＵ（＝ＶＰＧＭ＿ＢＡＳＥ−ＶＰＧＭ＿ＯＦＦＵ）としても良い。
【０１１８】
また、図１４（ｄ）、図１５（ｄ）に示すように、プログラム電圧ＶＰＧＭ＿ＢＡＳＥに対して、オフセット電圧ＶＰＧＭ＿ＯＦＦＵを加えた電圧を、上位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＵ（＝ＶＰＧＭ＿ＢＡＳＥ＋ＶＰＧＭ＿ＯＦＦＵ）としても良い。
【０１１９】
以上のようにして、制御回路１２２は、フラグデータを、上位ページプログラム用の初期プログラム電圧に反映させている。    
［Ｓ１２０４］
制御回路１２２は、ステップＳ１２０３において決定した上位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＵを用いて、上位ページのプログラム動作を開始する。具体的には、制御回路１２２の命令に応答して、ロウデコーダ１２８は、選択されたストリングユニットの選択トランジスタをオンさせつつ、選択ワード線ＷＬｎに更新されたプログラム電圧ＶＰＧＭ＿ＳＶＵを印加し、センスアンプ１２６がビット線ＢＬに上位ページデータに応じた電圧を印加する。
【０１２０】
これにより、第３のキャッシュ１２５ｃに格納したデータ（通常データ領域１３２ａ及び冗長データ領域１３２ｂ）がメモリセルアレイ１３０にプログラムされる。
【０１２１】
［Ｓ１２０５］
次に、図１３に示すように、制御回路１２２の命令に応答して、ロウデコーダ１２８はプログラムベリファイ電圧ＡＶＬ、ＡＶ、ＢＶＬ、ＢＶ、ＣＶのいずれかを適宜選択ワード線ＷＬｎに印加して、プログラムベリファイ動作を実行する。
【０１２２】
［Ｓ１２０６］
制御回路１２２は、プログラムベリファイがパスしたか否かを判定する。選択ページにおけるプログラムベリファイにパスすれば（ステップＳ１２０６、ＹＥＳ）、当該ページに対するプログラム動作は終了する。
【０１２３】
［Ｓ１２０７］
制御回路１２２は、選択ページにおけるプログラムベリファイがパスしていないと判断する場合（ステップＳ１２０６、ＮＯ）、当該ページに対するプログラム動作のループ回が最大値に達しているか否かを判定する。ループ数が最大値に達している場合は、当該ページに対するプログラム動作は終了する。
【０１２４】
［Ｓ１２０８］
ステップＳ１２０７において、制御回路１２２が、ループ数が最大値に達していない場合（ステップＳ１２０７、ＮＯ）は、制御回路１２２は、ループ数ＮＷＬｎ＿ｌｏｏｐをＮＷＬｎ＿ｌｏｏｐ＋１に更新する。
【０１２５】
［Ｓ１２０９］
制御回路１２２は、プログラム電圧ＶＰＧＭ＿ＳＶＵを、ＤＶＰＧＭ＿Ｕだけ増加させる。そして、制御回路１２２は、更新されたプログラム電圧ＶＰＧＭ＿ＳＶＵを用いてステップＳ１２０４の動作を繰り返す。
【０１２６】
制御回路１２２は、ステップＳ１２０６のベリファイ動作をパスしたと判定する、またはステップＳ１２０７において、ループ数が最大値であると判定するまで、ステップＳ１２０４〜Ｓ１２０９の動作を繰り返す。
【０１２７】
＜ステップＳ１００４において、“ＹＥＳ”場合＞
次に、図１６のフローチャートに沿って、制御回路１２２が、ステップＳ１００４において、受信したページのアドレスが、下位ページのアドレスであると判定する場合（Ｓ１００４、ＹＥＳ）について説明する。
【０１２８】
制御回路１２２は、コマンドシーケンスを受信する前に、サンプルストリングユニット指定コマンドを受信せず、選択ストリングユニットＳＵＰが、ストリングユニットＳＵ０ではないと判定する場合、ストリングユニットＳＵ０をサンプルストリングユニットとして用いる。つまり、制御回路１２２は、下位ページプログラムであるが、キャプチャ動作を行わず、サンプルストリングユニットの同一ワード線に登録されたフラグデータを元に、下位ページの初期プログラム電圧を設定する。  
［Ｓ１３０１］
まず、制御回路１２２は、第１のキャッシュ１２５ａに、下位ページのデータを格納する。そして、制御回路１２２は、サンプルストリングユニットＳＵ０から、フラグデータをリードする。より具体的には、図１７に示すように選択ワード線ＷＬｎに、Ｂレベルリード電圧ＢＲを印加する。ここでは、選択ワード線ＷＬｎに、Ｂレベルリード電圧ＢＲではなくてＡレベルリード電圧ＡＲを印加しても良い。本ステップＳ１３０１のリード動作では、フラグデータをリードすることを目的としている。フラグデータは、下位ページ及び上位ページまでプログラムされている場合、上述したように、“Ｅ”レベルまたは“Ｂ”レベルのデータとなる。そのため、サンプルストリングユニットからフラグデータをリードする場合は、Ｂレベルリード、またはＡレベルリードのどちらか一方のみを行えば良い。      
これにより、選択ワード線ＷＬｎに格納されているデータをリードすることが可能となる。
【０１２９】
［Ｓ１３０２］
制御回路１２２は、リードされたサンプルストリングユニットＳＵ０の下位ページの冗長データ領域１３２ｂのフラグデータと同一のデータを、第１のキャッシュ１２５ａに格納されている冗長データ領域１３２ｂに書込む。  
また、制御回路１２２は、リードしたフラグデータを、レジスタ１２２ｃに格納する。
【０１３０】
［Ｓ１３０３］
制御回路１２２は、レジスタ１２２ｃに格納されたフラグデータに基づいて、下位ページプログラム用の初期プログラム電圧ＶＰＧＭ（ＶＰＧＭ＝ＶＰＧＭ＿ＳＶＬ）を決定する。
【０１３１】
下記に、下位ページプログラム用の初期プログラム電圧について説明する。
【０１３２】
下記に、図１８及び図１９を用いて、下位ページプログラム用の初期プログラム電圧について説明する。
【０１３３】
（ｉ）下位ページのフラグデータが｛ＳＶ＿ＯＶＥＲ＝０、ＮＷＬｎ＿ｌｏｏｐ＝ｍ｝の場合
図１４を用いて説明したように、ＶＰＧＭＣ＋ＮＷＬｎ＿ｌｏｏｐ×ＤＶＰＧＭ＿Ｌを、プログラム電圧ＶＰＧＭ＿ＢＡＳＥとして取り扱う。
【０１３４】
図１８（ａ）及び図１８（ｂ）に示すように、本例では、フラグデータが｛ＳＶ＿ＯＶＥＲ＝０、ＮＷＬｎ＿ｌｏｏｐ＝３であるプログラム電圧ＶＰＧＭ＿ＢＡＳＥは、ＶＰＧＭＣ＋３×ＤＶＰＧＭ＿Ｌとなる。
【０１３５】
（ｉｉ）下位ページのフラグデータが｛ＳＶ＿ＯＶＥＲ＝１、ＮＷＬｎ＿ｌｏｏｐ＝ｍ｝の場合
図１５を用いて説明したように、ＶＰＧＭＣ+ＮＷＬＮ＿ＬＯＯＰ * ＤＶＰＧＭ＿Ｌ - 1/2*ＤＶＰＧＭ＿Ｌを、プログラム電圧ＶＰＧＭ＿ＢＡＳＥとして取り扱う。
【０１３６】
図１９（ａ）及び図１９（ｂ）に示すように、本例では、フラグデータが｛ＳＶ＿ＯＶＥＲ＝１、ＮＷＬｎ＿ｌｏｏｐ＝３であるプログラム電圧ＶＰＧＭ＿ＢＡＳＥは、ＶＰＧＭＣ＋２．５×ＤＶＰＧＭ＿Ｌとなる。
【０１３７】
（ｉｉｉ）下位ページプログラム用の初期プログラム電圧
制御回路１２２は、上記プログラム電圧ＶＰＧＭ＿ＢＡＳＥを、下位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＬとしても良い。
【０１３８】
また、図１８（ｃ）、図１９（ｃ）に示すように、プログラム電圧ＶＰＧＭ＿ＢＡＳＥに対して、オフセット電圧ＶＰＧＭ＿ＯＦＦＬを減じた電圧を、下位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＬ（＝ＶＰＧＭ＿ＢＡＳＥ−ＶＰＧＭ＿ＯＦＦＬ）としても良い。
【０１３９】
また、図１８（ｄ）、図１９（ｄ）に示すように、プログラム電圧ＶＰＧＭ＿ＢＡＳＥに対して、オフセット電圧ＶＰＧＭ＿ＯＦＦＬを加えた電圧を、下位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＬ（＝ＶＰＧＭ＿ＢＡＳＥ＋ＶＰＧＭ＿ＯＦＦＬ）としても良い。
【０１４０】
以上のようにして、制御回路１２２は、フラグデータを、下位ページ用の初期プログラム電圧に反映させている。    
［Ｓ１３０４］
図１７に示すように、制御回路１２２は、プログラム電圧ＶＰＧＭ＿ＳＶＬを用いて、下位ページのプログラム動作を行う。具体的には、制御回路１２２の命令に応答して、ロウデコーダ１２８は、選択されたストリングユニットの選択トランジスタをオンさせつつ、選択ワード線ＷＬｎに更新されたプログラム電圧ＶＰＧＭ＿ＳＶＬを印加する。そして、センスアンプ１２６がビット線ＢＬに書込みデータに応じた電圧を印加する。  
これにより、第３のキャッシュ１２５ｃに格納したデータ（通常データ領域１３２ａ及び冗長データ領域１３２ｂ）がメモリセルアレイ１３０にプログラムされる。
【０１４１】
［Ｓ１３０５］
次に、図１７に示すように、制御回路１２２の命令に応答して、ロウデコーダ１２８はプログラムベリファイ電圧ＶＭＬ２Ｖを選択ワード線ＷＬｎに印加する。  
このように、制御回路１２２は、プログラムベリファイ動作を実行する。
【０１４２】
［Ｓ１３０６］
制御回路１２２は、プログラムベリファイがパスしたか否かを判定する。選択ページにおけるプログラムベリファイにパスすれば（ステップＳ１３０６、ＹＥＳ）、当該ページに対するプログラム動作は終了する。
【０１４３】
［Ｓ１３０７］
制御回路１２２は、選択ページにおけるプログラムベリファイがパスしていないと判断する場合（ステップＳ１３０６、ＮＯ）、当該ページに対するプログラム動作のループ数が最大値に達しているか否かを判定する。ループ回が最大値に達している場合は、当該ページに対するプログラム動作は終了する。
【０１４４】
［Ｓ１３０８］
ステップＳ１３０７において、制御回路１２２が、ループ数が最大値に達していない場合（ステップＳ１３０７、ＮＯ）は、制御回路１２２は、ループ数ＮＷＬｎ＿ｌｏｏｐをＮＷＬｎ＿ｌｏｏｐ＋１に更新する。
【０１４５】
［Ｓ１３０９］
制御回路１２２は、プログラム電圧ＶＰＧＭ＿ＳＶＬを、ＤＶＰＧＭ＿Ｌだけ増加させる。そして、制御回路１２２は、更新されたプログラム電圧ＶＰＧＭ＿ＳＶＬを用いてステップＳ１３０４の動作を繰り返す。
【０１４６】
制御回路１２２は、ステップＳ１３０６のベリファイ動作をパスしたと判定する、またはステップＳ１３０７において、ループ数が最大値であると判定するまで、ステップＳ１３０４〜Ｓ１３０９の動作を繰り返す。
【０１４７】
＜ステップＳ１００４において、“ＮＯ”である場合＞
次に、制御回路１２２が、ステップＳ１００４において、受信したページのアドレスが、下位ページのアドレスでないと判定する場合（Ｓ１００４、ＮＯ）制御回路１２２は、選択ストリングユニットＳＵに対して、ステップＳ１２０１〜Ｓ１２０９で説明した動作と同様の動作を行う。
【０１４８】
ところで、選択ストリングユニットＳＵの上位ページに対応する下位ページの冗長データ領域には、サンプルストリングＳＵ０に格納されているフラグデータが格納されている。そのため、制御回路１２２は、実質的にサンプルストリングＳＵ０の下位ページの冗長データ領域に格納されているフラグデータを用いて、選択ストリングユニットＳＵの上位ページ用の初期プログラム電圧を決定していることと同義となる。
【０１４９】
＜ステップＳ１００６において、“ＹＥＳ”である場合＞
次に、図２０のフローチャートに沿って、制御回路１２２が、ステップＳ１００６において、受信したページのアドレスが、下位ページのアドレスであると判定する場合（Ｓ１００６、ＹＥＳ）について説明する。
【０１５０】
制御回路１２２は、コマンドシーケンスを受信する前に、サンプルストリングユニット指定コマンドを受信し、指定ストリングユニットＳＵＱが存在しないストリングユニットＳＵである（ストリングユニットがＳＵ０〜ＳＵ３までしか存在しない場合において、指定ストリングユニットＳＵＱ＝ＳＵ４である場合）と判定する場合、レジスタ１２２ｃに格納されているフラグデータを用いて、下位ページの初期プログラム電圧を設定する。
【０１５１】
［Ｓ１４０１］
まず、制御回路１２２は、第３のキャッシュ１２５ｃに、下位ページのデータを格納する。そして、制御回路１２２は、制御回路１２２のレジスタ１２２ｃに格納されているフラグデータを、第３のキャッシュ１２５ｃに格納されている冗長データ領域１３２ｂに上書きする。
【０１５２】
［Ｓ１４０２］〜［Ｓ１４０７］
ステップＳ１４０２〜Ｓ１４０７の動作は、ステップＳ１３０３〜Ｓ１３０８で説明した動作と同様である。
【０１５３】
＜ステップＳ１００６において、“ＮＯ”である場合＞
次に、制御回路１２２が、ステップＳ１００６において、受信したページのアドレスが、下位ページのアドレスでないと判定する場合（Ｓ１００６、ＹＥＳ）について説明する。制御回路１２２は、選択ストリングユニットＳＵに対して、ステップＳ１２０１〜Ｓ１２０９で説明した動作と同様の動作を行う。
【０１５４】
ところで、選択ストリングユニットＳＵの上位ページに対応する下位ページの冗長データ領域には、サンプルストリングＳＵ０に格納されているフラグデータが格納されている。そのため、制御回路１２２は、実質的にサンプルストリングＳＵ０の下位ページの冗長データ領域に格納されているフラグデータを用いて、選択ストリングユニットＳＵの上位ページ用の初期プログラム電圧を決定していることと同義となる。
【０１５５】
＜ステップＳ１００８において、“ＹＥＳ”である場合＞
次に、制御回路１２２が、ステップＳ１００８において、受信したページのアドレスが、下位ページのアドレスであると判定する場合（Ｓ１００８、ＹＥＳ）について説明する。
【０１５６】
制御回路１２２は、コマンドシーケンスを受信する前に、サンプルストリングユニット指定コマンドを受信し、指定ストリングユニットＳＵＱで指定されたストリングユニットＳＵが存在し、指定ストリングユニットＳＵＱと、選択ストリングユニットＳＵＰと、が一致し、且つ、下位ページのプログラム動作であると判定する場合、指定ストリングユニットＳＵＱに対して、キャプチャ動作を行う。
【０１５７】
サンプルストリングユニットＳＵ０が、不良によって使用不可能である場合がある。このような場合、サンプルストリングユニットとして用いるストリングユニットを、この指定ストリングユニットＳＵＱで指定する。
【０１５８】
メモリシステム１００は、指定ストリングユニットＳＵＱに対して、ステップＳ１１０１〜Ｓ１１１７で説明した動作と同様の動作を行う。
【０１５９】
＜ステップＳ１００８において、“ＮＯ”である場合＞
次に、メモリシステム１００は、ステップＳ１００８において、受信したページのアドレスが、下位ページのアドレスでないと判定する場合（Ｓ１００８、ＮＯ）、サンプルストリングＳＵ０に対して行ったステップＳ１２０１〜Ｓ１２０９の動作と同様の動作を、指定ストリングユニットＳＵＱに対して行う。
【０１６０】
＜ステップＳ１００９において、“ＹＥＳ”である場合＞
次に、制御回路１２２が、ステップＳ１００９において、受信したページのアドレスが、下位ページのアドレスであると判定する場合（Ｓ１００９、ＹＥＳ）について説明する。
【０１６１】
制御回路１２２は、コマンドシーケンスを受信する前に、サンプルストリングユニット指定コマンドを受信し、指定ストリングユニットＳＵＱが存在するストリングユニットであり、指定ストリングユニットＳＵＱと、選択ストリングユニットＳＵＰと、が不一致であり、且つ、下位ページのプログラム動作であると判定する場合、指定ストリングユニットＳＵＱから、フラグデータをリードする。
【０１６２】
メモリシステム１００は、サンプルストリングＳＵ０に対して行ったステップＳ１３０１〜Ｓ１３０９の動作と同様の動作を、指定ストリングユニットＳＵＱに対して行う。
【０１６３】
＜ステップＳ１００９において、“ＮＯ”である場合＞
次に、メモリシステム１００は、ステップＳ１００９において、受信したページのアドレスが、下位ページのアドレスでないと判定する場合（Ｓ１００９、ＮＯ）、ストリングユニットＳＵ０の代わりに指定ストリングユニットＳＵＱに対して、ステップＳ１２０１〜Ｓ１２０９で説明した動作と同様の動作を行う。
【０１６４】
＜第１の実施形態に係るデータの書込み動作の作用効果について＞
上述した第１の実施形態によれば、制御回路１２２は、コマンドシーケンスを受信する前に、サンプルストリングユニット指定コマンドを受信するか否か、また、存在するストリングが指定されるか否かを判定することで、
（ｉ）下位ページプログラムの際にキャプチャ動作を行うか、
（ｉｉ）サンプルストリングＳＵ０または指定ストリングＳＵＱから、フラグデータをリードして下位ページ用の初期プログラム電圧を決定するか、
（ｉｉｉ）上位ページに対応する下位ページのフラグデータをリードして上位ページ用の初期プログラム電圧を決定するか、または
（ｉＶ）制御回路１２２のレジスタ１２２ｃに格納されているフラグデータを用いて、下位ページ用の初期プログラム電圧を決定するか、
を決定する。
【０１６５】
連続してプログラムを行う際、プログラムの対象となるメモリセルトランジスタが、互いに同一ブロックの異なるストリングユニットに属する同一ワード線である場合、キャプチャ動作の結果は、制御回路１２２のレジスタ１２２ｃに格納される。そのため、同一ブロックの異なるストリングユニットに属する同一ワード線に属するメモリセルトランジスタにおいて連続してプログラムを行う場合は、キャプチャ動作は少なくとも一回行えば良い。
【０１６６】
これにより、メモリシステム１００は、下位ページ用、または上位ページ用の初期プログラム電圧の決定を行う際において、キャプチャ動作の回数を抑制しつつ、最適な当該初期プログラム電圧を決定することができる。
【０１６７】
また、メモリシステム１００は、制御回路１２２のレジスタ１２２ｃに格納されているフラグデータを用いて、下位ページ用の初期プログラム電圧を決定する場合、サンプルストリングユニットからのフラグデータのリード動作を行う必要がない。そのため、メモリシステム１００は、サンプルストリングユニットからフラグデータをリードする場合に比べて、より短い時間で、最適な当該初期プログラム電圧を決定することができる。
【０１６８】
また、上述した実施形態によれば、制御回路１２２は、コマンドシーケンスを受信する前に、サンプルストリングユニット指定コマンドを受信することで、サンプルストリングユニットを適宜選択可能としている。そのため、例えば、ストリングユニットＳＵ０が、不良ストリングユニットであるにおいて、ストリングユニットＳＵ０以外のストリングユニットＳＵＱを、サンプルストリングユニットとして指定することが可能となる。
【０１６９】
以上のように、第１の実施形態によれば、サンプルストリングユニット指定コマンドを用いることで、メモリシステム１００は、上位ページ用の初期プログラム電圧の決定の際に用いるフラグデータの引用先を、適宜選択することができる。これにより、高品質なメモリシステム１００を、得ることが可能となる。
【０１７０】
＜具体例＞
次に図２１、図２２を用いて、第１の実施形態の作用効果の一部を説明するために、本実施形態に係る具体例について説明する。
【０１７１】
図２１に示すように、簡単のために、二つのストリングユニットと、４本のワード線ＷＬについて、第１のプログラム動作を行う場合について説明する。ここでは、例えば、サンプルストリングユニットを、ストリングユニットＳＵ０とする。そして、本具体例では、制御回路１２２は、図中のＩ（ＳＵ０、ＷＬ０）〜ＶＩＩＩ（ＳＵ１、ＷＬ３）へと順にプログラムを行う。
【０１７２】
下記では、制御回路１２２のレジスタ１２２ｃに格納されるフラグデータを活用する例と、しない例について説明する。
【０１７３】
＜具体例１＞
図２２（ａ）に示すように、本実施形態に係る具体例１では、制御回路１２２は、サンプルストリングユニットＳＵ０の下位ページプログラム時に、キャプチャ動作を行い、サンプルストリングユニットＳＵ０の上位ページプログラム時に、当該キャプチャ動作の結果を用いて、上位ページプログラムを行う。
【０１７４】
そして、制御回路１２２は、ストリングユニットＳＵ１の下位ページプログラムにおいては、レジスタ１２２ｃに格納されているフラグデータをリードし、下位ページプログラムを行っている。そして、ストリングユニットＳＵ１の上位ページプログラムにおいては、対応する下位ページのデータをリードし、当該下位ページのフラグデータを利用して上位ページプログラムを行っている。
【０１７５】
より具体的には、図２２（ａ）のＩに示すように、時刻Ｔ０において、制御回路１２２は、サンプルストリングユニットＳＵ０の下位ページプログラム時に、キャプチャ動作を行う（図１０で説明したステップＳ１１０１〜Ｓ１１０８と同様の動作）。
【０１７６】
そして、時刻Ｔ１において、制御回路１２２は、フラグデータに基づいて、下位ページプログラムを行う（図１０で説明したステップＳ１１０９〜Ｓ１１１７と同様の動作）。
【０１７７】
続いて、時刻Ｔ２において、制御回路１２２は、上位ページプログラムを行うために、ストリングユニットＳＵ０、ワード線ＷＬ０の下位ページのデータをリードする（図１２で説明したステップＳ１２０１、Ｓ１２０２と同様の動作）。
【０１７８】
そして、時刻Ｔ３において、制御回路１２２は、下位ページに含まれているフラグデータに基づいて、上位ページプログラム用の初期プログラム電圧を決定する。そして、制御回路１２２は、当該初期プログラム電圧に基づいて、上位ページプログラムを行う（図１２で説明したステップＳ１２０３〜Ｓ１２０９と同様の動作）。
【０１７９】
また、図２２（ａ）のＩＩに示すように、時刻Ｔ４において、制御回路１２２は、ストリングユニットＳＵ１のワード線ＷＬ０の下位ページプログラム時に、レジスタ１２２ｃから、フラグデータをリードする（図２０で説明したステップＳ１４０１、Ｓ１４０２と同様の動作）。尚、本動作は、他の動作に比べて短い時間で行われる。続いて、制御回路１２２は、フラグデータに基づいて、下位ページプログラム用の初期プログラム電圧を決定し、下位ページプログラムを行う（図１８で説明したステップＳ１４０３〜Ｓ１４０８と同様の動作）。ここで、時刻Ｔ４から時刻Ｔ５までに要する時間を、ｄＴ１とする。
【０１８０】
また、時刻Ｔ５において、制御回路１２２は、上位ページプログラムを行うために、ストリングユニットＳＵ１、ワード線ＷＬ０の下位ページのデータをリードする（図１２で説明したステップＳ１２０１、Ｓ１２０２と同様の動作）。
【０１８１】
時刻Ｔ５から時刻Ｔ６までに要する時間はｄＴ２とする。
【０１８２】
そして、時刻Ｔ６において、制御回路１２２は、リードした下位ページデータのうちのフラグデータに基づいて、上位ページプログラム用の初期プログラム電圧を決定し、上位ページプログラムを行う（図１２で説明したステップＳ１２０３〜Ｓ１２０９と同様の動作）。ここで、時刻Ｔ６から上位ページプログラムが完了する時刻Ｔ７までに要する時間を、ｄＴ３とする。
【０１８３】
以上のように、ストリングユニットＳＵ０のワード線ＷＬ０、及びストリングユニットＳＵ１のワード線ＷＬ０における下位ページプログラムと、上位ページプログラムと、が行われる。本具体例１では、例えば、このようなプログラム動作が、ストリングユニットＳＵ０及びストリングユニットＳＵ１のワード線ＷＬ１〜ワード線ＷＬ３（ＩＩＩ〜ＶＩＩＩ）に対して行われる。
【０１８４】
＜具体例２＞
図２２（ｂ）に示すように、本実施形態に係る具体例２では、制御回路１２２は、ストリングユニットＳＵ１の下位ページプログラムを行う際に、サンプルストリングユニットＳＵ０からフラグデータをリードする。そして、制御回路１２２は、当該フラグデータに基づいて、下位ページプログラムまたは上位ページプログラム用の初期プログラム電圧を設定し、下位ページプログラムまたは上位ページプログラムを行う。
【０１８５】
図２２（ｂ）のＩに示すように、ストリングユニットＳＵ０のワード線ＷＬ０に対するプログラム動作に関しては、図２２（ａ）のＩで説明した具体例１における各動作と同様の動作である。
【０１８６】
図２２（ｂ）のＩＩに示すように、時刻Ｔ４において、制御回路１２２は、ストリングユニットＳＵ１のワード線ＷＬ０の下位ページプログラム時に、サンプルストリングユニットＳＵ０のワード線ＷＬ０から、フラグデータをリードする（図１６で説明したステップＳ１３０１、Ｓ１３０２と同様の動作）。ここで、時刻Ｔ４から時刻Ｔ８までに要する時間を、ｄＴ２とする。
【０１８７】
時刻Ｔ８において、制御回路１２２は、フラグデータに基づいて、下位ページプログラム用の初期プログラム電圧を決定し、下位ページプログラムを行う（図１６で説明したステップＳ１３０３〜Ｓ１３０９と同様の動作）。ここで、時刻Ｔ８から時刻Ｔ９までに要する時間を、ｄＴ１とする。
【０１８８】
また、時刻Ｔ９において、制御回路１２２は、ストリングユニットＳＵ１のワード線ＷＬ０の上位ページプログラムを行うために、ストリングユニットＳＵ１のワード線ＷＬ０の下位ページのデータをリードする（図１２で説明したステップＳ１２０１、Ｓ１２０２と同様の動作）。ここで、時刻Ｔ１１から時刻Ｔ１２までに要する時間を、ｄＴ３とする。
【０１８９】
そして、時刻Ｔ１０において、制御回路１２２は、リードした下位ページデータのうちのフラグデータに基づいて、上位ページプログラム用の初期プログラム電圧を決定する。制御回路１２２は、上位ページプログラムを行う（図１２で説明したステップＳ１２０３〜Ｓ１２０９と同様の動作）。ここで、時刻Ｔ１０から上位ページプログラムが完了する時刻Ｔ１１までに要する時間を、ｄＴ３とする。
【０１９０】
以上のように、ストリングユニットＳＵ０のワード線ＷＬ０、及びストリングユニットＳＵ０のワード線ＷＬ１における下位ページプログラムと、上位ページプログラムと、が行われる。本具体例２では、例えば、このようなプログラム動作が、ストリングユニットＳＵ０及びストリングユニットＳＵ１のワード線ＷＬ１〜ワード線ＷＬ３（ＩＩＩ〜ＶＩＩＩ）に対して行われる。
【０１９１】
以上のように、具体例１における、ストリングユニットＳＵ１のワード線ＷＬ０に係るメモリセルトランジスタのプログラム時間ｄＴＡ（ｄＴ１＋ｄＴ２＋ｄＴ３）は、具体例２における、ストリングユニットＳＵ１のワード線ＷＬ０に係るメモリセルトランジスタのプログラム時間ｄＴＢ（ｄＴ１＋２×ｄＴ２＋ｄＴ３）よりも、ｄＴ２だけ短い。
【０１９２】
以上のように、具体例１は、既に制御回路１２２のレジスタ１２２ｃに格納されているフラグデータを、他のストリングユニットにおけるプログラム動作に用いることで、サンプルストリングユニットからのリード動作の回数を抑制することが可能となる。
【０１９３】
（第２の実施形態）
続いて、第２の実施形態に係るメモリシステム１００ついて説明する。第２の実施形態では、制御回路１２２は、メモリセルアレイ１３０へのプログラム動作において、上述した第１のプログラムではなく、上述した第２のプログラムを適用する点で、第１の実施形態と異なっている。尚、第２の実施形態において、上述した第１の実施形態と略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【０１９４】
＜第２の実施形態に係るデータの書込み動作について＞
以下に、図２３に示すフローチャートに沿って、第２の実施形態に係る第２のプログラム動作について説明する。尚、下記に示す処理は、主に制御回路１２２の制御によって実行される。
【０１９５】
［Ｓ２００１］
制御回路１２２は、第２のプログラムを適用してプログラムを行う場合、まず、ＮＡＮＤフラッシュメモリ１２０は、下位ページに係るコマンドシーケンスを受信する。そして、ＮＡＮＤフラッシュメモリ１２０は、下位ページに係るコマンドシーケンスに続いて、上位ページに係るコマンドシーケンスを受信する。制御回路１２２は、メモリコントローラ１１０から、プログラムコマンド、ブロックアドレス、ページのアドレス（選択ストリングユニットＳＵＰのアドレス情報を含む）、データ及びプログラム開始コマンドを受信する前に、サンプルストリングユニット指定コマンドを受信したか否かを判定する。
【０１９６】
＜＜コマンドシーケンス例３＞＞
ここで、図２４を用いて、プログラム開始コマンドを受信する前に、サンプルストリングユニット指定コマンドを受信しない場合の第２のプログラムに係るコマンドシーケンスについて説明する。  
図２４に示すように、ＮＡＮＤフラッシュメモリ１２０に下位ページに係るデータの入力が完了するまでは、図８を用いて説明した動作と同様の動作が行われる。そして、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からコマンド“ＹＹＨ”が入力される。これにより、第１のキャッシュ４２５ａに格納されているデータを、他のキャッシュに格納する。これにより、レディ／ビジー信号（Ｒ/Ｂｎ）は“ビジー”状態になる。
【０１９７】
続いて、ＮＡＮＤフラッシュメモリ１２０に上位ページプログラムに係るコマンドシーケンスが入力される。上位ページに係るデータの入力が完了するまでは、図８を用いて説明した動作と同様の動作が行われる。そして、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からコマンド“１０Ｈ”が入力される。これにより、制御回路１２２は、下位ページに係るデータ、及び上位ページに係るデータを用いて、第２のプログラムを行う。
【０１９８】
＜＜コマンドシーケンス例４＞＞
また、図２５を用いて、プログラム開始コマンドを受信する前に、サンプルストリングユニット指定コマンドを受信する場合の第２のプログラムに係るコマンドシーケンスについて説明する。
【０１９９】
図２５に示すように、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からサンプルストリングユニット指定コマンド“ＺＺＨ”が入力される。  
そして、ＮＡＮＤフラッシュメモリ１２０は、図２４を用いて説明した動作と同様に動作する。
【０２００】
［Ｓ２００２］
制御回路１２２は、ステップＳ２００１において、サンプルストリングユニット指定コマンドを受信しないと判定する場合（Ｓ２００１、ＮＯ）、ストリングユニットＳＵ０をサンプルストリングユニットとして取り扱う。そして、制御回路１２２は、選択された選択ストリングユニットＳＵＰが、ストリングユニットＳＵ０か否かを判定する。
【０２０１】
［Ｓ２００３］
制御回路１２２は、ステップＳ２００１において、サンプルストリングユニット指定コマンドを受信すると判定する場合（Ｓ２００１、ＹＥＳ）、サンプルストリングユニット指定コマンドと共に、有効なストリングユニットのアドレスが指定されたか否かを判定する。ここでは、指定されたストリングユニットを指定ストリングユニットＳＵＱ等と称す。
【０２０２】
［Ｓ２００４］
制御回路１２２は、ステップＳ２００３において、指定ストリングユニットＳＵＱが有効なストリングユニットであると判定する場合（Ｓ２００３、ＹＥＳ）、選択ストリングユニットＳＵＰが、指定ストリングユニットＳＵＱと同じか否かを判定する。
【０２０３】
＜ステップＳ２００２において、“ＹＥＳ”である場合＞
次に、図２６を用いて、制御回路１２２が、ステップＳ２００２において、選択ストリングユニットＳＵＰが、ストリングユニットＳＵ０であると判定する場合（Ｓ２００２、ＹＥＳ）について説明する。下記では、第２のプログラム動作の一部として、キャプチャ動作を行う動作例について説明する。
【０２０４】
［Ｓ２１０１］
例えば、制御回路１２２は、第３のキャッシュ１２５ｃに下位ページのデータを格納する。また、制御回路１２２は、第２のキャッシュ１２５ｂに上位ページのデータを格納する。そして、制御回路１２２は、キャプチャ動作を行う。  
制御回路１２２は、キャプチャ動作が終了するまで、冗長データ領域１３２ｂ、及び１３３ｂのフラグデータが格納されるカラムアドレスには、非書込みデータをセットする。
【０２０５】
［Ｓ２１０２］
次に、図２７に示すように、制御回路１２２は、プログラム開始コマンドを受信すると、第２のプログラム動作を開始する。具体的には、制御回路１２２の命令に応答して、ロウデコーダ１２８は、選択されたストリングユニットの選択トランジスタをオンさせつつ、選択ワード線ＷＬｎにプログラム電圧ＶＰＧＭＣを印加する。そして、センスアンプ１２６がビット線ＢＬにプログラムデータに応じた電圧を印加する。  
これにより、制御回路１２２は、第３のキャッシュ１２５ｃに格納したデータをメモリセルトランジスタＭＴにプログラムする。
【０２０６】
［Ｓ２１０３］〜［Ｓ２１０６］
ステップＳ２１０３〜Ｓ２１０６の動作は、ステップＳ１１０３〜Ｓ１１０６の動作と同様である。
【０２０７】
［Ｓ２１０７］
ステップＳ２１０４において、制御回路１２２が、メモリセルトランジスタ数ＮＣＨＫ＿ＰＡＳＳが、規定値ＮＣＨＫ＿ＰＶを超えていると判定する場合（Ｓ２１０４、ＹＥＳ）、制御回路１２２は、信号ＳＶ＿ＰＡＳＳを“Ｌ(Low)”レベルから“Ｈ(High)”レベルへと立ち上げる。信号ＳＶ＿ＰＡＳＳが“Ｌ”レベルから“Ｈ”レベルに立ち上がると、制御回路１２２は、電圧ＡＶまたはＡＶＬを超えているメモリセルトランジスタ数ＮＡＶ＿ＰＡＳＳが、規定値ＮＡＶ＿ＰＶを超えているか否かの判定を行うために、プログラムベリファイ動作を行う。このプログラムベリファイ動作は、上述のステップS１１０８にて説明したように、ステップＳ２１０４において“ＹＥＳ”となったプログラム電圧を、初期プログラム電圧とする場合に、オーバープログラムとなる恐れがあるか否かを判定するために行われる。より具体的には、ロウデコーダ１２８は、ベリファイ電圧ＡＶまたはＡＶＬを選択ワード線ＷＬｎに印加して、プログラムベリファイ動作を実行する。
【０２０８】
尚、このプログラムベリファイ動作の際、選択された選択ゲート線ＳＧＤ＿ＳＥＬと、選択ゲート線ＳＧＳ＿ＳＥＬには、電圧ＶＳＧ（ＶＳＧＤ＜ＶＳＧ）が印加され、非選択の選択ゲート線ＳＧＤ＿ＵＳＥＬと、非選択の選択ゲート線ＳＧＳ＿ＵＳＥＬには、接地電位ＶＳＳが印加される。更に、非選択のワード線ＷＬ＿ＵＳＥＬには、電圧ＶＲＥＡＤ（ＶＲＥＡＤ＜ＶＰＡＳＳ＜ＶＰＧＭＣ）が印加される。  
［Ｓ２１０８］
制御回路１２２は、ステップＳ２１０７におけるプログラムベリファイ結果を読み出すと、信号ＤＥＴＥＣＴ＿ＣＨＫを“Ｌ”レベルから“Ｈ”レベルに立ち上げる。制御回路１２２は、信号ＤＥＴＥＣＴ＿ＣＨＫが“Ｈ”の期間に、電圧ＡＶまたはＡＶＬを超えているメモリセルトランジスタ数ＮＡＶ＿ＰＡＳＳが、規定値ＮＡＶ＿ＰＶを超えているか否かの判定を行う。この規定値ＮＡＶ＿ＰＶは、メモリセルアレイ１３０に格納されており、メモリシステム１００の起動時に読み出され、制御回路１２２はレジスタ１２２ｂに規定値ＮＡＶ＿ＰＶを格納しておく。
【０２０９】
［Ｓ２１０９］
制御回路１２２は、キャプチャ動作が完了した後に、キャプチャ結果をフラグデータとしてレジスタ１２２ｃに格納する。このフラグデータは、第１の実施形態で説明したものと同様に８ビットデータである。第２の実施形態では、当該８ビットのデータの内、１ビット分のデータが当該判定結果（電圧ＡＶを超えているメモリセルトランジスタ数ＮＡＶ＿ＰＡＳＳが、規定値ＮＡＶ＿ＰＶを超えているか否か）に割り当てられ、７ビット分のデータがループ数に割り当てられる。
【０２１０】
具体的には、ループ数ＮＷＬｎ＿ｌｏｏｐ＝４の際に、メモリセルトランジスタ数ＮＣＨＫ＿ＰＡＳＳが、ＮＣＨＫ＿ＰＡＳＳ＞ＮＣＨＫ＿ＳＶ且つＮＡＶ＿ＰＡＳＳ＜ＮＡＶ＿ＰＶとなる場合、８ビットのフラグデータは、｛０＿０００＿１００｝と表わされる。また、ループ数ＮＷＬｎ＿ｌｏｏｐ＝４の際に、メモリセルトランジスタ数ＮＣＨＫ＿ＰＡＳＳが、ＮＣＨＫ＿ＰＡＳＳ＞ＮＣＨＫ＿ＳＶ且つＮＡＶ＿ＰＡＳＳ＞ＮＡＶ＿ＰＶとなる場合、８ビットのデータは、｛１＿０００＿１００｝と表わされる。本実施形態では、フラグデータの最上位ビットをＳＶ＿ＯＶＥＲと定義する。つまり、フラグデータのフォーマットは、｛ＳＶ＿ＯＶＥＲ、ＮＷＬｎ＿ｌｏｏｐ［６：０］｝となる。電圧ＡＶを超えているメモリセルトランジスタ数ＮＡＶ＿ＰＡＳＳが、規定値ＮＡＶ＿ＰＶを超えていない場合は、ビットＳＶ＿ＯＶＥＲは“０”となり、超えている場合は、ビットＳＶ＿ＯＶＥＲは“１”となる。
【０２１１】
制御回路１２２は、レジスタ１２２ｃに格納されているフラグデータを、第３のキャッシュ１２５ｃに格納されている冗長データ領域１３２ｂに上書きし、冗長データ領域１３２ｂのフラグデータのプログラム禁止状態を解除する。次のプログラムパルスの印加から、通常データ領域１３２ａと共にフラグデータのプログラム動作を開始する。尚、制御回路１２２は、この際にループカウンタをリセットする。
【０２１２】
［Ｓ２１１０］、［Ｓ２１１１］
ステップＳ２１１０、Ｓ２１１１の動作は、上述したステップＳ１１１０、及びＳ１１１１と同様の動作である。
【０２１３】
［Ｓ２１１２］
本例のように、キャプチャ動作が第２のプログラムの一部として行われる場合、制御回路１２２は、キャプチャ動作に続いて、第２のプログラム動作を続ける。  
具体的には、制御回路１２２の命令に応答して、ロウデコーダ１２８は、選択されたストリングユニットの選択トランジスタをオンさせつつ、選択ワード線ＷＬｎに、プログラム電圧ＶＰＧＭ（ＶＰＧＭ＝ＶＰＧＭ＿ＳＶＦ）を印加する。そして、制御回路１２２の命令に応答して、センスアンプ１２６は、ビット線ＢＬに下位ページデータ及び上位ページデータに応じた電圧を印加する。  
これにより、第３のキャッシュ１２５ｃ及び第２のキャッシュ１２５ｂに格納したデータがメモリセルアレイ１３０にプログラムされる。
【０２１４】
［Ｓ２１１３］〜［Ｓ２１１６］  ステップＳ２１１３〜Ｓ２１１６の動作は、ステップＳ１２０５〜Ｓ１２０８の動作と同様である。［Ｓ２１１７］
制御回路１２２は、プログラム電圧ＶＰＧＭを、ＤＶＰＧＭ＿Ｆだけ増加させる。そして、制御回路１２２は、更新されたプログラム電圧ＶＰＧＭを用いてステップＳ２１１２の動作を繰り返す。
【０２１５】
制御回路１２２は、ステップＳ２１１４のベリファイ動作をパスしたと判定する、またはステップＳ２１１５において、ループ数が最大値であると判定するまで、ステップＳ２１１２〜Ｓ２１１７の動作を繰り返す。
【０２１６】
＜ステップＳ２００２において、“ＮＯ”である場合＞
次に、図２８を用いて、制御回路１２２が、ステップＳ２００２において、選択された選択ストリングユニットＳＵＰが、ストリングユニットＳＵ０でないと判定する場合（Ｓ２００２、ＮＯ）について説明する。
【０２１７】
制御回路１２２は、コマンドシーケンスを受信する前に、サンプルストリングユニット指定コマンドを受信せず、選択ストリングユニットＳＵＰが、ストリングユニットＳＵ０ではないと判定する場合、ストリングユニットＳＵ０をサンプルストリングユニットとして用いる。つまり、制御回路１２２は、キャッシュ動作を行わず、サンプルストリングユニットの同一ワード線に登録されたフラグデータを元に、下位ページの初期プログラム電圧を設定する。  
［Ｓ２２０１］
制御回路１２２は、ステップＳ２２０１において、ステップＳ１３０１と同様の動作を行う。
【０２１８】
［Ｓ２２０２］
制御回路１２２は、リードされたサンプルストリングユニットＳＵ０の冗長データ領域のフラグデータと同一のデータを、第１のキャッシュ１２５ａに格納されている下位ページの冗長データ領域１３２ｂ及び第２のキャッシュ１２５ｂに格納されている上位ページの冗長データ領域１３３ｂに書込む。また、制御回路１２２は、リードしたフラグデータを、レジスタ１２２ｃに格納する。
【０２１９】
［Ｓ２２０３］
次に、制御回路１２２は、レジスタ１２２ｃに格納されているフラグデータに基づいて、第２のプログラム用の初期プログラム電圧ＶＰＧＭ（ＶＰＧＭ＝ＶＰＧＭ＿ＳＶＦ）を決定する。
【０２２０】
下記に、第２のプログラム用の初期プログラム電圧について説明する。
【０２２１】
まず、制御回路１２２は、第１の実施形態で図１４及び図１５を用いて説明したように、プログラム電圧ＶＰＧＭ＿ＢＡＳＥを導出する。そして、制御回路１２２は、上記プログラム電圧ＶＰＧＭ＿ＢＡＳＥを、第２のページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＦとしても良い。
【０２２２】
また、プログラム電圧ＶＰＧＭ＿ＢＡＳＥに対して、オフセット電圧ＶＰＧＭ＿ＯＦＦＦを減じた電圧を、第２のプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＦ（＝ＶＰＧＭ＿ＢＡＳＥ−ＶＰＧＭ＿ＯＦＦＦ）としても良い。
【０２２３】
また、プログラム電圧ＶＰＧＭ＿ＢＡＳＥに対して、オフセット電圧ＶＰＧＭ＿ＯＦＦＦを加えた電圧を、第２のプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＦ（＝ＶＰＧＭ＿ＢＡＳＥ＋ＶＰＧＭ＿ＯＦＦＦ）としても良い。
【０２２４】
［Ｓ２２０４］〜［Ｓ２２０９］
ステップＳ２２０４〜Ｓ２２０９の動作は、ステップＳ２１１２〜Ｓ２１１７の動作と同様である。
【０２２５】
＜ステップＳ２００３において、“ＮＯ”である場合＞
次に、図２９を用いて、制御回路１２２が、ステップＳ２００３において、指定ストリングユニットＳＵＱが、有効なストリングユニットではないと判定する場合（Ｓ２００３、ＮＯ）について説明する。
【０２２６】
制御回路１２２は、レジスタ１２２ｃに格納されているフラグデータを用いて、第２のプログラムの初期プログラム電圧を設定する。
【０２２７】
［Ｓ２３０１］
まず、制御回路１２２は、第３のキャッシュ１２５ｃに、下位ページのデータを格納し、第２のキャッシュ１２５ｂに、上位ページのデータを格納する。そして、制御回路１２２は、制御回路１２２のレジスタ１２２ｃに格納されているフラグデータを、第３のキャッシュ１２５ｃに格納されている冗長データ領域１３２ｂ、及び第２のキャッシュ１２５ｂに格納されている冗長データ領域１３３ｂに書込む。
【０２２８】
［Ｓ２３０２］〜［Ｓ２３０８］
ステップＳ２３０２〜Ｓ２３０８の動作は、ステップＳ２２０３〜Ｓ２２０９の動作と同様である。
【０２２９】
＜ステップＳ２００４において、ＹＥＳである場合＞
制御回路１２２が、ステップＳ２００４において、指定ストリングユニットＳＵＱが、選択ストリングユニットＳＵＰと同じであると判定する場合（Ｓ２００４、ＹＥＳ）、制御回路１２２は、指定ストリングユニットＳＵＱを、サンプルストリングユニットとして置き換えて、図２６及び図２７を用いて説明した動作と同様の動作を行う。
【０２３０】
＜ステップＳ２００４において、ＮＯである場合＞
制御回路１２２が、ステップＳ２００４において、指定ストリングユニットＳＵＱが、選択ストリングユニットＳＵＰと同じでないと判定する場合（Ｓ２００４、ＮＯ）、制御回路１２２は、指定ストリングユニットＳＵＱを、サンプルストリングユニットとして置き換えて、図２８を用いて説明した動作と同様の動作を行う。
【０２３１】
＜第２の実施形態に係るデータの書込み動作の作用効果について＞
上述した第２の実施形態によれば、第２のプログラム動作を用いた場合においても、第１の実施形態と同様の効果を得ることが可能である。
【０２３２】
（第３の実施形態）
続いて、第３の実施形態に係るメモリシステム１００ついて説明する。第３の実施形態では、メモリセルアレイが複数存在するマルチプレーン構造である点で、第１及び第２の実施形態と異なっている。尚、第３の実施形態において、上述した第１及び第２の実施形態と略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【０２３３】
＜第３の実施形態に係る不揮発性半導体記憶装置＞
まず、図３０を用いて、マルチプレーン構造であるメモリシステム３００について説明する。図３０を用いて、第３の実施形態に係わる３次元積層型不揮発性半導体記憶装置について説明する。  
第３の実施形態のメモリシステム３００は、メモリコントローラ１１０と、ＮＡＮＤフラッシュメモリ３２０と、を有する。
【０２３４】
＜ＮＡＮＤフラッシュメモリ＞
ＮＡＮＤフラッシュメモリ３２０は、入出力バッファ１２１、制御回路１２２、カラムアドレスバッファ／カラムデコーダ１２３、３２３、フェイルビットカウンタ回路１２４、３２４，データラッチ回路１２５、３２５、センスアンプ１２６、３２６、ロウアドレスバッファ１２７、ロウデコーダ１２８、メモリセルアレイ１３０、及び３３０を備えている。尚、本明細書では、メモリセルアレイ１３０、３３０をそれぞれ第１のプレーンＰＢ０、第２のプレーンＰＢ１と称すことがある。
【０２３５】
カラムアドレスバッファ／カラムデコーダ３２３、フェイルビットカウンタ回路３２４，データラッチ回路３２５、センスアンプ３２６、及びメモリセルアレイ３３０は、それぞれ、カラムアドレスバッファ／カラムデコーダ１２３、フェイルビットカウンタ回路１２４，データラッチ回路１２５、センスアンプ１２６、及びメモリセルアレイ１３０と同様の構成を有している。
【０２３６】
そして、カラムアドレスバッファ／カラムデコーダ３２３、フェイルビットカウンタ回路３２４，データラッチ回路３２５、センスアンプ３２６、及びメモリセルアレイ３３０は、それぞれ、カラムアドレスバッファ／カラムデコーダ１２３、フェイルビットカウンタ回路１２４，データラッチ回路１２５、センスアンプ１２６、及びメモリセルアレイ１３０から独立して動作する。
【０２３７】
尚、制御回路１２２は、メモリセルアレイ１３０、及び３３０に対して並列にプログラム動作を行うことが可能である。
【０２３８】
＜第３の実施形態に係るデータの書込み動作について＞
次に、図３１及び図３２を用いて第３の実施形態に係るメモリシステム３００のプログラム動作について説明する。
【０２３９】
尚、メモリセルアレイ１３０における所定のワード線ＷＬｎに対するキャプチャ動作が完了するまで（少なくともメモリセルトランジスタ数ＮＣＨＫ＿ＰＡＳＳが、規定値ＮＣＨＫ＿ＰＶを超えるまで）に要するループ数は、“ａ”（ａ：１以上の整数）であり、メモリセルアレイ３３０における所定のワード線ＷＬｎに対するキャプチャ動作に要するループ数は、“ｂ”（ｂ：１以上の整数）であるとする。尚、制御回路１２２は、メモリセルアレイ１３０、及び３３０に対して、同時にキャプチャ動作を行った場合、メモリセルアレイ１３０、及び３３０のどちらか一方のキャプチャ動作が終了した時点で、メモリセルアレイ１３０、及び３３０のキャプチャ動作を完了する。
【０２４０】
また、例えば、第３の実施形態に係る制御回路１２２は、メモリセルアレイ１３０（第１のプレーンＰＢ０）及びメモリセルアレイ３３０（第２のプレーンＰＢ１）へのプログラム動作において、コマンドシーケンスを受信する前に、サンプルストリング指定コマンドを受信することがある。
【０２４１】
＜＜コマンドシーケンス例５＞＞
ここで、図３１を用いて、メモリセルアレイ１３０（第１のプレーンＰＢ０）及びメモリセルアレイ３３０（第２のプレーンＰＢ１）に対してプログラム動作を行う場合のコマンドシーケンスについて説明する。
【０２４２】
図３１に示すように、コマンドシーケンスが、メモリコントローラ１１０から、ＮＡＮＤフラッシュメモリ１２０に入力される前は、チップイネーブル信号ＣＥｎ、アドレスラッチイネーブル信号ＡＬＥ、コマンドラッチイネーブル信号ＣＬＥは、“Ｌ（low）”レベルである。また、書込みイネーブル信号ＷＥn、読み出しイネーブル信号ＲＥnは、“Ｈ（high）”レベルである。また、データラッチ回路１２５のレディ／ビジー状態を示すレディ／ビジー信号（Ｒ/Ｂｎ）は“レディ”状態である。  
続いて、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からサンプルストリングユニット指定コマンド“ＺＺＨ”が入力される。  
ＮＡＮＤフラッシュメモリ１２０は、アドレスラッチイネーブル信号ＡＬＥが“Ｈ”レベルである期間、メモリコントローラ１１０からアドレスを受信する。このアドレスは、指定ストリングユニットＳＵＱ０のアドレスを含んでおり、例えばメモリセルアレイ１３０（第１のプレーンＰＢ０）のストリングユニットＳＵ０のアドレスである。
【０２４３】
そして、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からコマンド“８０Ｈ”が入力され、書込みイネーブル信号ＷＥnが“Ｌ”レベルとなる。  
ＮＡＮＤフラッシュメモリ１２０は、アドレスラッチイネーブル信号ＡＬＥが“Ｈ”レベルである期間、メモリコントローラ１１０からアドレスを受信する。このアドレスは、選択ストリングユニットＳＵＰのアドレスを含んでおり、例えばメモリセルアレイ１３０（第１のプレーンＰＢ０）のストリングユニットＳＵ３のワード線ＷＬ２の下位ページのアドレスである。  
そして、ＮＡＮＤフラッシュメモリ１２０は、アドレスに続いて、データを受信する。これにより、当該データがメモリセルアレイ１３０（第１のプレーンＰＢ０）に関連するデータラッチ回路１２５に格納される。そして、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からコマンド“１１Ｈ”が入力される。これにより、メモリコントローラ１１０は、データラッチ回路１２５へ、メモリセルアレイ１３０にプログラムするデータの入力が完了した事を表わす。
【０２４４】
続いて、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からサンプルストリングユニット指定コマンド“ＺＺＨ”が入力される。  
ＮＡＮＤフラッシュメモリ１２０は、アドレスラッチイネーブル信号ＡＬＥが“Ｈ”レベルである期間、メモリコントローラ１１０からアドレスを受信する。このアドレスは、指定ストリングユニットＳＵＱ１のアドレスを含んでおり、例えばメモリセルアレイ３３０（第２のプレーンＰＢ１）のストリングユニットＳＵ１のアドレスである。
【０２４５】
そして、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からコマンド“８０Ｈ”が入力され、書込みイネーブル信号ＷＥnが“Ｌ”レベルとなる。  
ＮＡＮＤフラッシュメモリ１２０は、アドレスラッチイネーブル信号ＡＬＥが“Ｈ”レベルである期間、メモリコントローラ１１０からアドレスを受信する。このアドレスは、選択ストリングユニットＳＵＰのアドレスを含んでおり、例えばメモリセルアレイ３３０（第２のプレーンＰＢ１）のストリングユニットＳＵ３のワード線ＷＬ２の下位ページのアドレスである。
【０２４６】
そして、ＮＡＮＤフラッシュメモリ１２０は、アドレスに続いて、データを受信する。これにより、当該データがメモリセルアレイ３３０（第２のプレーンＰＢ１）に関連するデータラッチ回路１３２５に格納される。そして、ＮＡＮＤフラッシュメモリ１２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からコマンド“１０Ｈ”が入力される。これにより、ＮＡＮＤフラッシュメモリ１２０は、メモリセルアレイ１３０（第１のプレーンＰＢ０）及びメモリセルアレイ３３０（第２のプレーンＰＢ１）に対して、図１６で説明した動作と同様の動作を行う。
【０２４７】
具体的には、メモリセルアレイ１３０（第１のプレーンＰＢ０）及びメモリセルアレイ３３０（第２のプレーンＰＢ１）において、それぞれ選択ワード線ＷＬ２に対して、Ｂレベルリード電圧ＢＲを印加し、フラグデータをリードする。
【０２４８】
その際に、制御回路１２２は、メモリセルアレイ１３０（第１のプレーンＰＢ０）及びメモリセルアレイ３３０（第２のプレーンＰＢ１）において、リードしたフラグデータ（ループ数）“ａ”と、“ｂ”とを比較する。そして、制御回路１２２は、ループ数“ａ”と、”ｂ“とのうち、どちらが小さいかを導出する。そして、制御回路１２２は、導出したループ数（フラグデータ）を用いて、メモリセルアレイ１３０（第１のプレーンＰＢ０）及びメモリセルアレイ３３０（第２のプレーンＰＢ１）のプログラム用の初期プログラム電圧を決定する。
【０２４９】
＜第３の実施形態に係るデータの書込み動作の作用効果について＞
上述した第３の実施形態によれば、マルチプレーンを用いた不揮発性半導体記憶装置においても、第１及び第２の実施形態と同様の効果を得ることが可能である。  （第４の実施形態）
続いて、第４の実施形態に係るメモリシステム１００ついて説明する。第４の実施形態では、ＮＡＮＤフラッシュメモリが３次元積層構造ではなく、平面ＮＡＮＤである点で、第１及び第２の実施形態と異なっている。尚、第３の実施形態において、上述した第１及び第２の実施形態と略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【０２５０】
図３２を用いて、第４の実施形態に係るＮＡＮＤ型フラッシュメモリ４００の構成を概略的に説明する。図３２は、第４の実施形態に係るＮＡＮＤ型フラッシュメモリ４２０の基本的な構成を模式的に示すブロック図である。
【０２５１】
第４の実施形態のメモリシステム４００は、メモリコントローラ（memory controller）１１０と、ＮＡＮＤフラッシュメモリ（不揮発性半導体記憶装置）４２０と、を有する。
【０２５２】
＜ＮＡＮＤフラッシュメモリ＞
ＮＡＮＤフラッシュメモリ４２０は、入出力バッファ４２１、制御回路４２２、カラムアドレスバッファ／カラムデコーダ４２３、フェイルビットカウンタ回路４２４，データラッチ回路４２５、センスアンプ４２６、ロウアドレスバッファ４２７、ロウデコーダ４２８、メモリセルアレイ４３０を備えている。入出力バッファ４２１、カラムアドレスバッファ／カラムデコーダ４２３、フェイルビットカウンタ回路４２４，データラッチ回路４２５、センスアンプ４２６、ロウアドレスバッファ４２７、ロウデコーダ４２８は、入出力バッファ１２１、カラムアドレスバッファ／カラムデコーダ１２３、フェイルビットカウンタ回路１２４，データラッチ回路１２５、センスアンプ１２６、ロウアドレスバッファ１２７、ロウデコーダ１２８は、と同様の構成を有している。
【０２５３】
制御回路４２２は、レジスタ４２２ａ、４２２ｂ、４２２ｃ、及び４２２ｄを備えており、制御回路１２２が演算するために必要な値を格納している。
【０２５４】
レジスタ４２２ａは、後述する規定値ＮＣＨＫ＿ＰＶ等を格納し、レジスタ４２２ｂは、規定値ＮＭＬ２Ｖ＿ＰＶ等を格納する。また、レジスタ４２２ｃ、及び４２２ｄは、後述するサンプルストリング、若しくは下位ページからリードした情報（例えば８ビット情報）を格納する。
【０２５５】
そして、制御回路１２２は、レジスタ１２２ｃに格納されたフラグデータに基づいて、プログラム動作時に用いる初期プログラム電圧を決定する。
【０２５６】
また、制御回路１２２は、プログラムが完了していないビット数と、設定された許容フェイルビット数とを比較して、プログラム動作がパスしたかフェイルであるかの判断を行う。また、制御回路１２２は、内部にプログラムパルス印加回数をカウントするループカウンタを備えている。
【０２５７】
メモリセルアレイ４３０は、複数のビット線ＢＬと、複数のワード線ＷＬと、ソース線ＳＬとを含む。このメモリセルアレイ４３０は、電気的に書き換えが可能なメモリセルトランジスタ（単にメモリセル等とも称す）ＭＴがマトリクス状に配置された複数のブロックＢＬＫで構成されている。メモリセルトランジスタＭＴは、例えば、制御ゲート電極及び電荷蓄積層（例えば浮遊ゲート電極）を含む積層ゲートを有し、浮遊ゲート電極に注入された電荷量により定まるトランジスタの閾値の変化によって多値データを記憶する。また、メモリセルトランジスタＭＴは、窒化膜に電子をトラップするＭＯＮＯＳ（Metal - Oxide - Nitride - Oxide - Silicon）構造を有するものであっても良い。
【０２５８】
尚、メモリセルアレイ４３０は、「SEMICONDUCTOR MEMORY DEVICE HAVING PLURALITY OF TYPES OF MEMORIES INTEGRATED ON ONE CHIP」と題された２００９年３月３日に出願された発明（No. 12/397711）と、「SEMICONDUCTOR MEMORY DEVICE INCLUDING STACKD GATE HAVING CHARGE ACCUMULATION LAYER AND CONTROL GATE AND METHOD OF WRITING DATA TO SEMICONDUCTOR MEMORY DEVICE」と題された２０１２年４月１９日に出願された発明（No. 13/451185）と、「NONVOLATILE SEMICONDUCTOR MEMORY ELEMENT, NONVOLATILE SEMICONDUCTOR MEMORY, AND METHOD FOR OPERATING NONVOLATILE SEMICONDUCTOR MEMORY ELEMENT」と題された２００９年３月２１日に出願された発明（No. 12/405626）と、「NONVOLATILE SEMICONDUCTOR MEMORY DEVICE HAVING ELEMENT ISOLATING REGION OF TRENCH TYPE AND METHOD OF MANUFACTURING THE SAME」と題された２００１年９月２１日に出願された発明（No. 09/956986）と、に開示されている。
【０２５９】
尚、本実施形態では、便宜上、メモリセルアレイ４３０は、一つのブロックにつき、ワード線ＷＬ０〜ＷＬ１２７の１２８本のワード線ＷＬが形成されているものとする。
【０２６０】
＜第４の実施形態に係るプログラム動作の概要＞
ところで、上位ページプログラムを行う方法として、プログラムを行う上位ページに対応する下位ページをリードし、リードした下位ページデータを用いて上位ページプログラムを用いる方法と、外部から、下位ページに既にプログラムされているデータと同様のデータを受信し、外部から受信した下位ページデータを用いて上位ページプログラムを用いる方法とが考えられる。しかしながら、下位ページに既にプログラムされているデータにエラーが存在することがある。
【０２６１】
そこで、本実施形態では、制御回路４２２は、上位ページプログラムを行う際に、上位ページに対応する下位ページのデータのリードは行わず、再度ホスト２００から供給される下位ページのデータを用いて、プログラムを行う。そして、レジスタ４２２ｃまたは４２２ｄに格納されているフラグデータを用いて、上位ページの初期プログラム電圧を決定する。また、本実施形態では、所定のワード線ＷＬの下位ページプログラムから導出されたフラグデータは、同一のワード線ＷＬの上位ページのプログラム動作時に用いられる。
【０２６２】
次に、図３３を用いて、本実施形態に係るプログラム動作の順序について説明する。図３３は、ワード線ＷＬと、下位ページ及び上位ページとに対応する“ページ番号”を示している。また、図３３は、所定のプログラム動作時において、レジスタ４２２ｃ及び４２２ｄ内に格納されているフラグ情報がどのページに関係しているかを示している。
【０２６３】
制御回路４２２は、下位ページプログラム時のキャプチャ動作によって、フラグデータを取得すると、レジスタ４２２ｃに格納されているデータを、レジスタ４２２ｄにコピーしてセットする。そして、制御回路４２２は、取得したフラグデータをレジスタ４２２ｃにセットする。制御回路４２２は、基本的には図中のページ番号に沿ってプログラム動作を行う。本実施形態に係るプログラム動作では、連続的なプログラム動作の途中でブロックアドレスが変更された場合は、レジスタ４２２ｃ及び４２２ｄ内のフラグデータが“ＦＦ”データにリセットされる。  
以下に本実施形態に係るプログラム動作の詳細について説明する。
【０２６４】
＜第４の実施形態に係るデータの書込み動作の詳細＞
図３４に示すフローチャートに沿って、第４の実施形態に係る第１のプログラム動作について説明する。尚、下記に示す処理は、主に制御回路４２２の制御によって実行される。
【０２６５】
［Ｓ３００１］
制御回路４２２は、メモリコントローラ１１０から、プログラムコマンド、ブロックアドレス、ページのアドレス、プログラム開始コマンドを受信すると、当該ブロックアドレスと、直前に実行されたプログラム動作に係るプログラムアドレスとが同一か否かを判定する。
【０２６６】
［Ｓ３００２］
制御回路４２２は、ステップＳ３００１において、当該ブロックアドレスと、直前に実行されたプログラム動作に係るプログラムアドレスとが同一ではないと判定する場合（Ｓ３００１、ＮＯ）、レジスタ４２２ｃ及び４２２ｄに格納されているフラグデータを“ＦＦ”にリセットする。
【０２６７】
［Ｓ３００３］
制御回路４２２は、ステップＳ３００１において、当該ブロックアドレスと、直前に実行されたプログラム動作に係るプログラムアドレスとが同一であると判定する場合（Ｓ３００１、ＹＥＳ）またはステップＳ３００２の処理が完了した場合、ページのアドレスが下位ページであるか否かを判定する。
【０２６８】
［Ｓ３００４］
制御回路４２２は、ステップＳ３００３において、ページのアドレスが下位ページではないと判定する場合（Ｓ３００３、ＮＯ）、選択ワード線ＷＬが、同一ブロック内における最大の番号が割り当てられているワード線か否かを判定する。本実施形態では、ワード線ＷＬは１２８本存在しているので、ここでは、選択ワード線ＷＬがワード線ＷＬ１２７か否かを判定する。
【０２６９】
［Ｓ３００５］
制御回路４２２は、ステップＳ３００４において、選択ワード線ＷＬがワード線ＷＬ１２７ではないと判定する場合（Ｓ３００４、ＮＯ）、レジスタ４２２ｄに“ＦＦ”がセットされているか否かを判定する。
【０２７０】
［Ｓ３００６］
制御回路４２２は、ステップＳ３００４において、選択ワード線ＷＬがワード線ＷＬ１２７であると判定する場合（Ｓ３００４、ＹＥＳ）、レジスタ４２２ｃに“ＦＦ”がセットされているか否かを判定する。
【０２７１】
＜ステップＳ３００３において、“ＹＥＳ”の場合＞
次に、図３５に示すフローチャートに沿って、制御回路１２２が、ステップＳ３００３において、受信したページのアドレスが、下位ページのアドレスであると判定する場合（Ｓ３００３、ＹＥＳ）について説明する。  
本実施形態においては、第１の実施形態において図８を用いて説明した方法と同様に下位ページプログラムの一部として、キャプチャ動作を行う。
【０２７２】
［Ｓ３１０１］〜［Ｓ３１０８］
ステップＳ３１０１〜Ｓ３１０８の動作は、ステップＳ１１０１〜Ｓ１１０８の動作と同様である。
【０２７３】
［Ｓ３１０９］  
次に、図３３を用いて、ステップＳ３１０９の動作について説明する。  
制御回路４２２は、フラグデータを取得すると、レジスタ４２２ｃに格納されているデータを、レジスタ４２２ｄにコピーしてセットする。そして、制御回路４２２は、取得したフラグデータをレジスタ４２２ｃにセットする。  
例えば、図３３に示すように、ワード線ＷＬ０の下位ページ（ページ０）に対するプログラム動作の際、例えばレジスタ４２２ｃに格納されていた“ＦＦ”データが、レジスタ４２２ｄにコピーされる。そして、ページ“０”に対応するフラグデータが、レジスタ４２２ｃに書込まれる。  
また、図３３に示すように、ワード線ＷＬ１の下位ページ（ページ１）に対するプログラム動作の際、例えばレジスタ４２２ｃに格納されていたページ“０” に対応するフラグデータが、レジスタ４２２ｄにコピーされる。そして、ページ“１”に対応するフラグデータが、レジスタ４２２ｃに書込まれる。
【０２７４】
［Ｓ３１１０］〜［Ｓ３１１７］
ステップＳ３１１０〜Ｓ３１１７の動作は、ステップＳ１１１０〜Ｓ１１１７の動作と同様である。
【０２７５】
制御回路４２２は、ステップＳ３１１４のベリファイ動作をパスしたと判定する、またはステップＳ３１１５において、ループ数が最大値であると判定するまで、ステップＳ３１１２〜Ｓ３１１７の動作を繰り返す。
【０２７６】
＜ステップＳ３００５において、“ＮＯ”の場合＞
次に、図３６のフローチャートに沿って、制御回路４２２が、ステップＳ３００５において、レジスタ４２２ｃに“ＦＦ”が格納されていないと判定する場合（Ｓ３００５、ＮＯ）について説明する。  
この上位ページプログラムにおいて、制御回路４２２は、上位ページデータに対応する下位ページデータのリード動作は行わず、メモリコントローラ１１０から下位ページデータを受信することで、上位ページプログラムを行う。そして、レジスタ４２２ｄに格納されているフラグデータを用いて、上位ページプログラム用の初期プログラム電圧を決定している。
【０２７７】
［Ｓ３２０１］
制御回路４２２は、レジスタ４２２ｄからフラグデータをリードする。  
制御回路４２２は、メモリコントローラ１１０から、上位ページに対応する下位ページのデータを受信し、第１のキャッシュ４２５ａに格納する。また、制御回路４２２は、メモリコントローラ１１０から、上位ページのデータを受信し、第２のキャッシュ４２５ｂに格納する。そして、制御回路１２２は、リードしたフラグデータを、第１のキャッシュ４２５ａに格納されている冗長データ領域１３２ｂと、第２のキャッシュ４２５ｂに格納されている冗長データ領域１３３ｂに格納する。
【０２７８】
［Ｓ３２０２］
図３３に示すように、制御回路４２２は、レジスタ４２２ｄに格納されているフラグデータに基づいて、上位ページ用の初期プログラム電圧ＶＰＧＭ（ＶＰＧＭ＝ＶＰＧＭ＿ＳＶＵ）を決定する。  
尚、上位ページ用の初期プログラム電圧ＶＰＧＭの決定方法は、第１の実施形態の図１２のステップＳ１２０３にて説明した方法と同様の方法で行われる。
【０２７９】
［Ｓ３２０３］〜［Ｓ３２０８］
ステップＳ３２０３〜Ｓ３２０８の動作は、ステップＳ１２０４〜Ｓ１２０９の動作と同様である。
【０２８０】
制御回路４２２は、ステップＳ３２０５のベリファイ動作をパスしたと判定する、またはステップＳ３２０６において、ループ数が最大値であると判定するまで、ステップＳ３２０３〜Ｓ３２０８の動作を繰り返す。
【０２８１】
＜ステップＳ３００５において、“ＹＥＳ”の場合＞
次に、図３７のフローチャートに沿って、制御回路４２２が、ステップＳ３００５において、レジスタ４２２ｄに“ＦＦ”が格納されていると判定する場合（Ｓ３００５、ＹＥＳ）について説明する。  
上述したように、本実施形態に係る上位ページプログラムにおいて、制御回路４２２は、レジスタ４２２ｄに格納されているフラグデータを用いて、上位ページプログラム用の初期プログラム電圧を決定している。しかし、レジスタ４２２ｄに“ＦＦ”が格納されている場合、制御回路４２２は、フラグデータ“ＦＦ”を用いて、上位ページプログラム用の初期プログラム電圧を決定しない。“ＦＦ”とは、現在プログラムを行っているブロックに係るフラグデータが、レジスタ４２２ｄに格納されていない事を意味する。そのため、制御回路４２２は、上位ページに対応する下位ページデータのリード動作を行い、リードしたデータのうち、フラグデータのみを取得する。そして、制御回路４２２は、取得したフラグデータを、レジスタ４２２ｃに格納する。さらに、御回路４２２は、取得したフラグデータを用いて、上位ページプログラム用の初期プログラム電圧を決定する。下記に詳細について説明する。
【０２８２】
［Ｓ３３０１］
制御回路４２２は、選択ワード線ＷＬｎに、Ｂレベルリード電圧ＢＲを印加することで、上位ページに対応する下位ページデータをリードする。そして、制御回路４２２は、リードした下位ページデータのうち、フラグデータのみを取得する。この際、リードした下位ページのデータは、上位ページのプログラムには用いない。
【０２８３】
［Ｓ３３０２］
そして、制御回路４２２は、メモリコントローラ１１０から受信する下位ページのデータ（既に当該下位ページにプログラムされているデータと同じデータ）を、第１のキャッシュ４２５ａに下位ページのデータを格納する。また、制御回路４２２は、同時に、リードした下位ページ１３２の冗長データ領域１３２ｂに書込まれているフラグデータを、第１のキャッシュ４２５ａに下位ページの冗長データ領域１３２ｂに格納する。
【０２８４】
そして、制御回路４２２は、第２のキャッシュ４２５ｂに、上位ページのデータを格納する。  
制御回路４２２は、リードした下位ページ１３２の冗長データ領域１３２ｂのフラグデータを、第２のキャッシュ４２５ｂに格納されている上位ページ１３３の冗長データ領域１３３ｂに格納する。更に、制御回路４２２は、取得したフラグデータを、レジスタ４２２ｃに格納する。
【０２８５】
［Ｓ３３０３］
次に、制御回路４２２は、リードした下位ページ１３２の冗長データ領域１３２ｂのフラグデータに基づいて、上位ページ用の初期プログラム電圧ＶＰＧＭ（ＶＰＧＭ＝ＶＰＧＭ＿ＳＶＵ）を決定する。  
［Ｓ３３０４］〜［Ｓ３３０９］
ステップＳ３３０４〜Ｓ３３０９の動作は、ステップＳ１２０４〜Ｓ１２０９の動作と同様である。
【０２８６】
制御回路４２２は、ステップＳ３３０６のベリファイ動作をパスしたと判定する、またはステップＳ３３０７において、ループ数が最大値であると判定するまで、ステップＳ３３０４〜Ｓ３３０９の動作を繰り返す。
【０２８７】
＜ステップＳ３００６において、“ＮＯ”の場合＞
次に、制御回路４２２が、ステップＳ３００６において、レジスタ４２２ｃに“ＦＦ”が格納されていないと判定する場合（Ｓ３００６、ＮＯ）について説明する。  
この上位ページプログラムにおいて、制御回路４２２は、図３６を用いて説明したように、上位ページデータに対応する下位ページデータのリード動作は行わず、メモリコントローラ１１０から下位ページデータを受信することで、上位ページプログラムを行う。そして、上位ページプログラムが行われるワード線ＷＬが、ワード線ＷＬ１２７であるので、レジスタ４２２ｄではなく、レジスタ４２２ｃに格納されているフラグデータを用いて、上位ページプログラム用の初期プログラム電圧を決定している。
【０２８８】
尚、基本的な動作は、図３６を用いて説明した動作と同様である。図３３に示すように、ステップＳ３２０３において、制御回路４２２は、レジスタ４２２ｃに格納されているフラグデータに基づいて、上位ページ用の初期プログラム電圧ＶＰＧＭ（ＶＰＧＭ＝ＶＰＧＭ＿ＳＶＵ）を決定する点で、図３６で説明した動作と異なる。
【０２８９】
図３３に示すように、もし、ワード線ＷＬ１２７の上位ページ（ページ“２５５”）において、レジスタ４２２ｄのフラグデータを用いると、本実施形態のプログラム順序の関係上、ワード線ＷＬ１２６の下位ページに係るフラグデータを参照することになってしまい、不適切なフラグデータを用いることになる。そこで、所定のブロックにおける最大の番号が割り当てられているワード線ＷＬの上位ページプログラムを行う場合は、レジスタ４２２ｃに格納されているフラグデータに基づいて、上位ページ用の初期プログラム電圧を決定する。
【０２９０】
＜ステップＳ３００６において、“ＹＥＳ”の場合＞
次に、制御回路４２２が、ステップＳ３００６において、レジスタ４２２ｃに“ＦＦ”が格納されていると判定する場合（Ｓ３００６、ＹＥＳ）、制御回路４２２は、図３７を用いて説明した動作と同様の動作を行う。
【０２９１】
＜コマンドシーケンス例６＞
次に、図３８を用いて、上位ページプログラムに係るコマンドシーケンスについて説明する。
【０２９２】
図３８に示すように、ＮＡＮＤフラッシュメモリ４２０にデータの入力が完了するまでは、図８を用いて説明した動作と同様の動作が行われる。そして、ＮＡＮＤフラッシュメモリ４２０は、コマンドラッチイネーブル信号ＣＬＥが“Ｈ”レベルである期間に、メモリコントローラ１１０からコマンド“ＸＸＨ”が入力される。これにより、第１のキャッシュ４２５ａに格納されているデータを、他のキャッシュに格納する。これにより、レディ／ビジー信号（Ｒ/Ｂｎ）は“ビジー”状態になる。
【０２９３】
レディ／ビジー信号（Ｒ/Ｂｎ）は“レディ”状態になると、図３３で説明した方法と同様の方法で、上位ページに係るコマンドシーケンスがＮＡＮＤフラッシュメモリ４２０に入力される。
【０２９４】
＜第４の実施形態に係るデータの書込み動作の作用効果について＞
上述した第４の実施形態によれば、平面ＮＡＮＤフラッシュメモリを用いた場合においても、第１の実施形態と同様の効果を得ることが可能である。
【０２９５】
また、第４の実施形態によれば、上位ページプログラムを実行する際に、下位ページに係るデータを、メモリコントローラ１１０から受信している。例えば、メモリセルトランジスタに書き込まれた下位ページデータがエラー含んでいる場合、エラーを起こしている下位ページデータを用いて上位ページプログラムを行うのは望ましくない。しかしながら、本実施形態によれば、上位ページプログラムを実行する際は、メモリコントローラ１１０から上位ページに対応する下位ページデータを受信しているので、そのような問題を抑制することができる。その結果、本実施形態によれば、高品質な半導体記憶装置を提供することが可能となる。
【０２９６】
（変形例など）
尚、上述した各実施形態によれば、制御回路１２２は、第１のプログラム動作時において上位ページプログラムを行う場合には、サンプルストリングユニットまたは、レジスタ１２２ｃに格納されたフラグデータをリードして、上位プログラム用の初期プログラム電圧を決定しているが、これに限られない。制御回路１２２は、上位ページプログラムを行う際には、上位ページに対応する下位ページデータが必要となる。また、上述した各実施形態からもわかるように、下位ページには、既にサンプルストリングユニットのフラグデータがプログラムされている。そのため、上位ページに対応する下位ページデータをリードした段階で、当該下位ページに含まれているフラグデータを、レジスタ１２２ｃに格納し、当該フラグデータを用いて、上位ページ用の初期プログラム電圧を決定しても良い。これにより、制御回路１２２は、サンプルストリングユニットへのフラグデータのリード動作を抑制することが可能となる。
【０２９７】
また、上述した第１の実施形態において、下位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＬにオフセット電圧を加えたもの、若しくは、初期プログラム電圧ＶＰＧＭ＿ＳＶＬからオフセット電圧を減じた電圧を、上位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＵとしても良いと記載した。同様に、下位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＬに、オフセット電圧を加えたもの、若しくは、初期プログラム電圧ＶＰＧＭ＿ＳＶＬからオフセット電圧を減じた電圧を、下位ページプログラム用の初期プログラム電圧ＶＰＧＭ＿ＳＶＬとして用いても良い。  また、上述した各実施形態において、メモリセルトランジスタＭＴが２ビットを保持する場合について説明したが、これに限らない。例えば、メモリセルトランジスタＭＴが、３ビット以上のデータを保持可能であっても良い。
【０２９８】
また、上述した各実施形態では、データラッチ回路１２５は、３つのキャッシュを備えているが、これに限らず、少なくとも２つ以上のキャッシュを備えていれば良い。
【０２９９】
なお、上述した各実施形態において、
（１）読み出し動作では、
Ａレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば０V〜0.55Vの間である。これに限定されることなく、0.1V〜0.24V, 0.21V〜0.31V, 0.31V〜0.4V, 0.4V〜0.5V, 0.5V〜0.55Vいずれかの間にしてもよい。
【０３００】
Ｂレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば1.5V〜2.3Vの間である。これに限定されることなく、1.65V〜1.8V, 1.8V〜1.95V, 1.95V〜2.1V,  2.1V〜2.3Vいずれかの間にしてもよい。
【０３０１】
Ｃレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば3.0V〜4.0Vの間である。これに限定されることなく、3.0V〜3.2V, 3.2V〜3.4V, 3.4V〜3.5V, 3.5V〜3.6V, 3.6V〜4.0Vいずれかの間にしてもよい。
【０３０２】
読み出し動作の時間（tR）としては、例えば25μs〜38μs, 38μs〜70μs, 70μs〜80μsの間にしてもよい。
【０３０３】
（２）書込み動作は、上述したとおりプログラム動作とベリファイ動作を含む。書込み動作では、プログラム動作時に選択されたワード線に最初に印加される電圧は、例えば13.7V〜14.3Vの間である。これに限定されることなく、例えば13.7V〜14.0V, 14.0V〜14.6Vいずれかの間としてもよい。
【０３０４】
奇数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧と、偶数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧を変えてもよい。
【０３０５】
プログラム動作をISPP方式（Ｉｎｃｒｅｍｅｎｔａｌ Ｓｔｅｐ Ｐｕｌｓｅ Ｐｒｏｇｒａｍ）としたとき、ステップアップの電圧として、例えば0.5V程度が挙げられる。
【０３０６】
非選択のワード線に印加される電圧としては、例えば6.0V〜7.3Vの間としてもよい。この場合に限定されることなく、例えば7.3V〜8.4Vの間としてもよく、6.0V以下としてもよい。
【０３０７】
非選択のワード線が奇数番目のワード線であるか、偶数番目のワード線であるかで、印加するパス電圧を変えてもよい。
【０３０８】
書込み動作の時間（tProg）としては、例えば1700μs〜1800μs, 1800μs〜1900μs, 1900μs〜2000μsの間にしてもよい。
【０３０９】
（３）消去動作では、
半導体基板上部に形成され、かつ、上記メモリセルが上方に配置されたウェルに最初に印加する電圧は、例えば12V〜13.6Vの間である。この場合に限定されることなく、例えば13.6V〜14.8V, 14.8V〜19.0V, 19.0〜19.8V, 19.8V〜21Vの間であってもよい。
【０３１０】
消去動作の時間（tErase）としては、例えば3000μs〜4000μs, 4000μs〜5000μs, 4000μs〜9000μsの間にしてもよい。
【０３１１】
（４）メモリセルの構造は、
半導体基板（シリコン基板）上に膜厚が４〜１０ｎｍのトンネル絶縁膜を介して配置された電荷蓄積層を有している。この電荷蓄積層は膜厚が２〜３ｎｍのＳｉＮ、またはＳｉＯＮなどの絶縁膜と膜厚が３〜８ｎｍのポリシリコンとの積層構造にすることができる。また、ポリシリコンにはＲｕなどの金属が添加されていても良い。電荷蓄積層の上には絶縁膜を有している。この絶縁膜は、例えば、膜厚が３〜１０ｎｍの下層Ｈｉｇｈ−ｋ膜と膜厚が３〜１０ｎｍの上層Ｈｉｇｈ−ｋ膜に挟まれた膜厚が４〜１０ｎｍのシリコン酸化膜を有している。Ｈｉｇｈ−ｋ膜はＨｆＯなどが挙げられる。また、シリコン酸化膜の膜厚はＨｉｇｈ−ｋ膜の膜厚よりも厚くすることができる。絶縁膜上には膜厚が３〜１０ｎｍの仕事関数調整用の材料を介して膜厚が３０ｎｍ〜７０ｎｍの制御電極が形成されている。ここで仕事関数調整用の材料はＴａＯなどの金属酸化膜、ＴａＮなどの金属窒化膜である。制御電極にはＷなどを用いることができる。  
また、メモリセル間にはエアギャップを形成することができる。
【０３１２】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
【符号の説明】
【０３１３】
１００…メモリシステム    １１０…メモリコントローラ  
１１１…ホストインタフェース    １１２…ＲＡＭ
１１３…ＥＣＣ回路    １１４…ＣＰＵ    １１５…ＲＯＭ
１１６…フラッシュメモリインタフェース    １２０…ＮＡＮＤフラッシュメモリ
１２１…入出力バッファ    １２２…制御回路
１２２ａ、１２２ｂ、１２２ｃ…レジスタ    １２３…カラムデコーダ
１２４…フェイルビットカウンタ回路    １２５…データラッチ回路
１２５ａ…第１のキャッシュ    １２５ｂ…第２のキャッシュ
１２５ｃ…第３のキャッシュ    １２６…センスアンプ
１２７…ロウアドレスバッファ    １２８…ロウデコーダ
１３０…メモリセルアレイ    １３１…ＮＡＮＤストリング
１３２…下位ページ    １３２ａ…通常データ領域
１３２ｂ…冗長データ領域    １３３…上位ページ
１３３ａ…通常データ領域    １３３ｂ…冗長データ領域
２００…ホストデバイス    ３００…メモリシステム
３２０…ＮＡＮＤフラッシュメモリ    ３２３…カラムデコーダ
３２４…フェイルビットカウンタ回路    ３２５…データラッチ回路
３２５…データラッチ回路    ３２６…センスアンプ
３３０…メモリセルアレイ  
【図１】
2016062619.tif 000003
【図２】
2016062619.tif 000004
【図３】
2016062619.tif 000005
【図４】
2016062619.tif 000006
【図５】
2016062619.tif 000007
【図６】
2016062619.tif 000008
【図７】
2016062619.tif 000009
【図８】
2016062619.tif 000010
【図９】
2016062619.tif 000011
【図１０】
2016062619.tif 000012
【図１１】
2016062619.tif 000013
【図１２】
2016062619.tif 000014
【図１３】
2016062619.tif 000015
【図１４】
2016062619.tif 000016
【図１５】
2016062619.tif 000017
【図１６】
2016062619.tif 000018
【図１７】
2016062619.tif 000019
【図１８】
2016062619.tif 000020
【図１９】
2016062619.tif 000021
【図２０】
2016062619.tif 000022
【図２１】
2016062619.tif 000023
【図２２】
2016062619.tif 000024
【図２３】
2016062619.tif 000025
【図２４】
2016062619.tif 000026
【図２５】
2016062619.tif 000027
【図２６】
2016062619.tif 000028
【図２７】
2016062619.tif 000029
【図２８】
2016062619.tif 000030
【図２９】
2016062619.tif 000031
【図３０】
2016062619.tif 000032
【図３１】
2016062619.tif 000033
【図３２】
2016062619.tif 000034
【図３３】
2016062619.tif 000035
【図３４】
2016062619.tif 000036
【図３５】
2016062619.tif 000037
【図３６】
2016062619.tif 000038
【図３７】
2016062619.tif 000039
【図３８】
2016062619.tif 000040