(57)【要約】【課題】ページ間の誤り発生確率の偏りを低減する不揮発性メモリを得ること。【解決手段】メモリセルの第１のページの書き込みを行う場合、データが第１の値の場合、しきい値電圧が第２のしきい値領域となるようにプログラムし、第１のページの書き込み後第２のページの書き込みを行う場合、第１のページに対応する値が第２の値で第２のページに書き込むデータが第１の値の場合、しきい値電圧が第４のしきい値領域となるようにプログラムし、第１のページに対応する値が第１の値で第２のページに書き込むデータが第１の値の場合、しきい値電圧が第３のしきい値領域となるようにプログラムし、第２のページの書き込みの後第３のページの書き込みを行う場合、第１のページに対応する値が第２の値で第２のページに対応する値が第２の値で第３のページに書き込むデータが第１の値の場合、しきい値電圧が第６のしきい値領域となるようにプログラムする。【選択図】図５
2020129428.tif 000002
【特許請求の範囲】
【請求項１】
ワード線と、各々が前記ワード線に接続されデータが消去された消去状態を示す第１のしきい値領域とデータが書き込まれた書き込み状態を示す第２乃至第８のしきい値領域であって前記第（ｎ−１）のしきい値領域の電圧値より前記第ｎのしきい値領域（ｎは２以上８以下の整数）の電圧値が大きい前記第２乃至第８のしきい値領域とのそれぞれのしきい値領域にデータが対応付けられることで３ビットデータを保存可能であり、第１のページから第３のページに対応する複数のメモリセルと、を有する不揮発性メモリと、
前記不揮発性メモリへの書き込みを制御するメモリコントローラと、
を備え、
前記不揮発性メモリは、
前記メモリコントローラから書き込みが要求されたデータを前記メモリセルへ書き込むように制御し、
消去済みの前記メモリセルに前記第１のページの書き込みを行う場合、前記第１のページに書き込むデータが第１の値の場合、前記メモリセルのしきい値電圧が第３のしきい値領域となるようにプログラムし、
前記第１のページの書き込みが行われた前記メモリセルに前記第２のページの書き込みを行う場合、前記メモリセルの前記第１のページに対応する値が第２の値であって前記第２のページに書き込むデータが前記第１の値の場合、前記メモリセルのしきい値電圧を第２のしきい値領域となるようにプログラムし、前記メモリセルの前記第１のページに対応する値が前記第１の値であって前記第２のページに書き込むデータが前記第２の値の場合、前記メモリセルのしきい値電圧が第４のしきい値領域となるようにプログラムし、
前記第２のページの書き込みが行われた前記メモリセルに前記第３のページの書き込みを行う場合、前記メモリセルの前記第１のページに対応する値が前記第２の値で前記第２のページに対応する値が前記第２の値であって前記第３のページに書き込むデータが前記第１の値の場合、前記メモリセルのしきい値電圧が第６のしきい値領域となるようにプログラムし、前記メモリセルの前記第１のページに対応する値が前記第２の値で前記第２のページに対応する値が前記第１の値であって前記第３のページに書き込むデータが前記第１の値の場合前記メモリセルのしきい値電圧が第７のしきい値領域となるようにプログラムし、前記メモリセルの前記第１のページに対応する値が前記第１の値で前記第２のページに対応する値が前記第１の値であって前記第３のページに書き込むデータが前記第１の値の場合前記メモリセルのしきい値電圧が第８のしきい値領域となるようにプログラムし、前記メモリセルの前記第１のページに対応する値が前記第１の値で前記第２のページに対応する値が前記第２の値であって前記第３のページに書き込むデータが前記第１の値の場合前記メモリセルのしきい値電圧が第５のしきい値領域となるようにプログラムする制御部を
有するメモリシステム。
【請求項２】
前記第１の値は０であり、前記第２の値は１である請求項１に記載のメモリシステム。
【請求項３】
前記第１のページの値を判定するためのしきい値領域の境界の数、前記第２のページの値を判定するためのしきい値領域の境界の数、前記第３のページの値を判定するためのしきい値領域の境界の数のうち最大の個数は３個である請求項１または請求項２に記載のメモリシステム。
【請求項４】
前記第１のページの値を判定するためのしきい値領域の境界の数は３つであり、前記第２のページの値を判定するためのしきい値領域の境界の数は３つであり、前記第３のページの値を判定するためのしきい値領域の境界の数は１つである、請求項３に記載のメモリシステム。
【請求項５】
前記制御部は、前記第１のページの書き込みを行う場合、前記第１から第８までの８つのしきい値領域のうち少なくとも１つについて、前記第３のページの書き込み終了後における前記しきい値領域の幅より広い幅のしきい値領域となるようにプログラムし、
前記第２のページの書き込みを行う場合、前記第１から第８までの８つのしきい値領域のうち少なくとも１つについて、前記第３のページの書き込み終了後における前記しきい値領域の幅より広い幅のしきい値領域となるようにプログラムする請求項１から４のいずれか１つに記載のメモリシステム。
【請求項６】
前記第１のしきい値領域と前記第２のしきい値領域との間隔は他のしきい値領域間の間隔より広い請求項１から５のいずれか１つに記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリ（以下、ＮＡＮＤメモリという）では、メモリセルのフローティングゲートに蓄えられた電荷量により情報を記憶する。各メモリセルは、電荷量に応じたしきい値電圧を有する。メモリセルに記憶する複数のデータ値をしきい値電圧の複数の領域にそれぞれ対応させ、メモリセルのしきい値電圧が記憶するデータ値に対応する領域となるよう電荷を注入する。そして、読み出し時には、メモリセルのしきい値電圧がどの領域に存在するかを判定することにより、メモリセルの記憶するデータ値を得ることができる。
【０００３】
１つのメモリセルに３ｂｉｔ記憶可能な３ｂｉｔ／ＣｅｌｌのＮＡＮＤメモリでは、１つのメモリセルに１ｂｉｔ記憶可能な１ｂｉｔ／Ｃｅｌｌや１つのメモリセルに２ｂｉｔ記憶可能な２ｂｉｔ／ＣｅｌｌのＮＡＮＤメモリと比べ、しきい値電圧の領域の数が多い。このため、３ｂｉｔ／ＣｅｌｌのＮＡＮＤメモリでは、１ｂｉｔ／Ｃｅｌｌや２ｂｉｔ／ＣｅｌｌのＮＡＮＤメモリと比べ、しきい値電圧の調整精度が要求され、セル間相互干渉の影響が大きくなる。
【０００４】
近年の微細化が進んだ世代のＮＡＮＤメモリでは、一般的に、セル間相互干渉を避けるため、１つのメモリセルに記憶する全ｂｉｔを同時に書き込む（プログラムする）手法が取られる。
【０００５】
一方、セル間相互干渉がそれほど大きくなければ、１つのメモリセルに格納するｂｉｔを１つずつ順番にプログラムしてもよい。３ｂｉｔ／Ｃｅｌｌのメモリセルについて、このように１ｂｉｔずつプログラムする方法として、１−２−４コーディングが知られている。この方法は、３ｂｉｔ／Ｃｅｌｌの８個のしきい値電圧の領域間の７個を、３ｂｉｔにそれぞれ１つ、２つ、４つに分配するコーディングである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第８０５４６８４号明細書
【特許文献２】米国特許第８４７２２８０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
１つのメモリセルに格納するビットを１つずつ順番にプログラムすると、プログラム時の自由度が増すが、上記従来の１−２−４コーディングでは、境界数のビット間での偏りが著しい。このため、境界数が多いビットでは誤りが生じる可能性が高くなる。
【課題を解決するための手段】
【０００８】
本発明の一つの実施形態によれば、メモリシステムは、ワード線と、各々がワード線に接続されデータが消去された消去状態を示す第１のしきい値領域とデータが書き込まれた書き込み状態を示す第２乃至第８のしきい値領域であって第（ｎ−１）のしきい値領域の電圧値より第ｎのしきい値領域（ｎは２以上８以下の整数）の電圧値が大きい第２乃至第８のしきい値領域とのそれぞれのしきい値領域にデータが対応付けられることで３ビットデータを保存可能であり、第１のページから第３のページに対応する複数のメモリセルと、を有する不揮発性メモリと、不揮発性メモリへの書き込みを制御するメモリコントローラと、を備える。不揮発性メモリは、メモリコントローラから書き込みが要求されたデータをメモリセルへ書き込むように制御し、消去済みのメモリセルに第１のページの書き込みを行う場合、書き込むデータが第１の値の場合、メモリセルのしきい値電圧が第３のしきい値領域となるようにプログラムし、第１のページの書き込みが行われたメモリセルに第２のページの書き込みを行う場合、メモリセルの第１のページに対応する値が第２の値であって第２のページに書き込むデータが第１の値の場合、メモリセルのしきい値電圧を第２のしきい値領域となるようにプログラムし、メモリセルの第１のページに対応する値が第１の値であって第２のページに書き込むデータが第２の値の場合、メモリセルのしきい値電圧が第４のしきい値領域となるようにプログラムし、第２のページの書き込みが行われたメモリセルに第３のページの書き込みを行う場合、メモリセルの第１のページに対応する値が第２の値で第２のページに対応する値が第２の値であって第３のページに書き込むデータが第１の値の場合、メモリセルのしきい値電圧が第６のしきい値領域となるようにプログラムし、メモリセルの第１のページに対応する値が第２の値で第２のページに対応する値が第１の値であって第３のページに書き込むデータが第１の値の場合メモリセルのしきい値電圧が第７のしきい値領域となるようにプログラムし、メモリセルの第１のページに対応する値が第１の値で第２のページに対応する値が第１の値であって第３のページに書き込むデータが第１の値の場合メモリセルのしきい値電圧が第８のしきい値領域となるようにプログラムし、メモリセルの第１のページに対応する値が前記第１の値で第２のページに対応する値が第２の値であって第３のページに書き込むデータが第１の値の場合メモリセルのしきい値電圧が第５のしきい値領域となるようにプログラムする制御部を有する。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施の形態にかかる記憶装置の構成例を示すブロック図である。
【図２】図２は、第１の実施の形態の不揮発性メモリの構成例を示すブロック図である。
【図３】図３は、第１の実施の形態のしきい値領域の一例を示す図である。
【図４】図４は、第１の実施の形態のデータコーディングを示す図である。
【図５】図５は、第１の実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。
【図６】図６は、第１の実施の形態のLowerページの読み出し方法を示す図である。
【図７】図７は、第１の実施の形態のMiddleページの読み出し方法を示す図である。
【図８】図８は、第１の実施の形態のUpperページの読み出し方法を示す図である。
【図９】図９は、第１の実施の形態の書き込み手順の一例を示すフローチャートである。
【図１０】図１０は、第１の実施の形態の読み出し手順の一例を示すフローチャートである。
【図１１】図１１は、第２の実施の形態のデータコーディングを示す図である。
【図１２】図１２は、第２の実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。
【図１３】図１３は、第２の実施の形態のLowerページの読み出し方法を示す図である。
【図１４】図１４は、第２の実施の形態のMiddleページの読み出し方法を示す図である。
【図１５】図１５は、第２の実施の形態のUpperページの読み出し方法を示す図である。
【図１６】図１６は、第２の実施の形態の読み出し手順の一例を示すフローチャートである。
【図１７】図１７は、第３の実施の形態のデータコーディングを示す図である。
【図１８】図１８は、第３の実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。
【図１９】図１９は、第４の実施の形態のデータコーディングを示す図である。
【図２０】図２０は、第４の実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。
【図２１】図２１は、第５の実施の形態のデータコーディングを示す図である。
【図２２】図２２は、第５の実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。
【図２３】図２３は、第６の実施の形態のデータコーディングを示す図である。
【図２４】図２４は、第６の実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。
【図２５】図２５は、しきい値分布の変動の一例を示す図である。
【図２６】図２６は、読み出し電圧を変更する場合の実施の形態７の読み出し手順の一例を示す図である。
【図２７】図２７は、ソフトビットの様子の一例を示す図である。
【図２８】図２８は、実施の形態９における各ページのプログラム後のしきい値分布の一例を示す図である。
【図２９】図２９は、実施の形態１０における各ページのプログラム後のしきい値分布の一例を示す図である。
【図３０】図３０は、実施の形態１１における各ページのプログラム後のしきい値分布の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、実施形態にかかる不揮発性メモリおよび書き込み方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【００１１】
（第１の実施形態）
図１は、第１の実施の形態にかかる記憶装置の構成例を示すブロック図である。本実施の形態の記憶装置は、メモリコントローラ１と不揮発性メモリ２を備える。記憶装置は、ホストと接続可能である。ホストは、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
【００１２】
不揮発性メモリ２は、データを不揮発に記憶するメモリであり、例えば、ＮＡＮＤメモリである。本実施の形態では、不揮発性メモリ２は、メモリセルあたり３ｂｉｔを記憶可能なメモリセルを有するＮＡＮＤメモリ、すなわち３ｂｉｔ／ＣｅｌｌのＮＡＮＤメモリであるとして説明する。
【００１３】
メモリコントローラ１は、ホストからの書き込みコマンドに従って不揮発性メモリ２への書き込みを制御する。また、メモリコントローラ１は、ホストからの読み出しコマンドに従って不揮発性メモリ２からの読み出しを制御する。メモリコントローラ１は、ＲＡＭ１１、プロセッサ１２、ホストインターフェイス１３、ＥＣＣ回路１４およびメモリインターフェイス１５を備える。ＲＡＭ（Random  Access  Memory）１１、プロセッサ１２、ホストインターフェイス１３、ＥＣＣ回路１４およびメモリインターフェイス１５は、互いに内部バス１６で接続される。
【００１４】
ホストインターフェイス１３は、ホストから受信したコマンド、ユーザデータ（書き込みデータ）などを内部バス１６に出力する。また、ホストインターフェイス１３は、不揮発性メモリ２から読み出されたユーザデータ、プロセッサ１２からの応答などをホストへ送信する。
【００１５】
メモリインターフェイス１５は、プロセッサ１２の指示に基づいて、ユーザデータ等を不揮発性メモリ２へ書込む処理および不揮発性メモリ２からの読み出し処理を制御する。
【００１６】
プロセッサ１２は、メモリコントローラ１を統括的に制御する。プロセッサ１２は、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等である。プロセッサ１２は、ホストからホストインターフェイス１３経由でコマンドを受けた場合に、そのコマンドに従った制御を行う。例えば、プロセッサ１２は、ホストからのコマンドに従って、不揮発性メモリ２へのユーザデータおよびパリティの書き込みをメモリインターフェイス１５へ指示する。また、プロセッサ１２は、ホストからのコマンドに従って、不揮発性メモリ２からのユーザデータおよびパリティの読み出しを、メモリインターフェイス１５へ指示する。
【００１７】
プロセッサ１２は、ＲＡＭ１１に蓄積されるユーザデータに対して、不揮発性メモリ２上の格納領域（メモリ領域）を決定する。ユーザデータは、内部バス１６経由でＲＡＭ１１に格納される。プロセッサ１２は、メモリ領域の決定を、書き込み単位であるページ単位のデータ（ページデータ）に対して実施する。本明細書では、不揮発性メモリ２の１ページに格納されるユーザデータをユニットデータと定義する。ユニットデータは、一般的には符号化されて符号語として不揮発性メモリ２に格納される。本実施の形態では、符号化は必須ではなく、符号化せずにユニットデータを不揮発性メモリ２に格納してもよいが、図１では、一構成例として符号化を行う構成を示している。符号化を行わない場合には、ページデータはユニットデータと一致する。また、１つのユニットデータに基づいて１つの符号語が生成されてもよいし、ユニットデータが分割された分割データに基づいて１つの符号語が生成されてもよい。また、複数のユニットデータを用いて１つの符号語が生成されてもよい。
【００１８】
プロセッサ１２は、ユニットデータごとに書き込み先の不揮発性メモリ２のメモリ領域を決定する。不揮発性メモリ２のメモリ領域には物理アドレスが割当てられている。プロセッサ１２は、ユニットデータの書き込み先のメモリ領域を、物理アドレスを用いて管理する。プロセッサ１２は、決定したメモリ領域（物理アドレス）を指定してユーザデータを不揮発性メモリ２へ書き込むようメモリインターフェイス１５へ指示する。プロセッサ１２は、ユーザデータの論理アドレス（ホストが管理する論理アドレス）と物理アドレスの対応を管理する。ホストからの論理アドレスを含む読み出しコマンドを受信した場合は、論理アドレスに対応する物理アドレスを特定し、物理アドレスを指定してユーザデータの読み出しをメモリインターフェイス１５へ指示する。
【００１９】
本明細書では、１つのワード線に共通に接続されたメモリセルをメモリセルグループと定義する。本実施の形態では、不揮発性メモリ２は、３ｂｉｔ／ＣｅｌｌのＮＡＮＤメモリであり、１つのメモリセルグループは３ページに対応する。各メモリセルの３ｂｉｔは、それぞれこの３ページに対応する。本実施の形態では、この３ページをLowerページ（第１のページ），Middleページ（第２のページ），Upperページ（第３のページ）と呼ぶ。
【００２０】
ＥＣＣ回路１４は、ＲＡＭ１１に格納されたユーザデータを符号化して、符号語を生成する。また、ＥＣＣ回路１４は、不揮発性メモリ２から読み出された符号語を復号する。
【００２１】
ＲＡＭ１１は、ホストから受信したユーザデータを不揮発性メモリ２へ記憶するまでに一時格納したり、不揮発性メモリ２から読み出したデータをホストへ送信するまでに一時格納する。ＲＡＭ１１は、例えば、ＳＲＡＭ（Static  Random  Access  Memory）やＤＲＡＭ（Dynamic  Random  Access  Memory）などの汎用メモリである。
【００２２】
図１では、メモリコントローラ１が、ＥＣＣ回路１４とメモリインターフェイス１５をそれぞれ備える構成例を示した。しかしながら、ＥＣＣ回路１４がメモリインターフェイス１５に内蔵されていてもよい。また、ＥＣＣ回路１４が、不揮発性メモリ２に内蔵されていてもよい。
【００２３】
図２は、本実施の形態の不揮発性メモリ２の構成例を示すブロック図である。不揮発性メモリ２は、ＮＡＮＤ  Ｉ／Ｏ  Interface２１、制御部２２、ＮＡＮＤメモリセルアレイ（メモリセル部）２３、およびページバッファ２４を備える。不揮発性メモリ２は、例えば１チップの半導体基板（例えば、シリコン基板）からなる。
【００２４】
制御部２２は、ＮＡＮＤ  Ｉ／Ｏ  Interface２１経由でメモリコントローラ１から入力されたコマンド等に基づいて、不揮発性メモリ２の動作を制御する。具体的には、書き込み要求が入力された場合、書き込みが要求されたデータをＮＡＮＤメモリセルアレイ２３上の指定されたアドレスへ書き込むよう制御する。また、制御部２２は、読み出し要求が入力された場合、読み出しが要求されたデータをＮＡＮＤメモリセルアレイ２３から読み出してＮＡＮＤ  Ｉ／Ｏ  Interface２１経由でメモリコントローラ１へ出力するよう制御する。ページバッファ２４は、ＮＡＮＤメモリセルアレイ２３の書き込み時にメモリコントローラ１から入力されたデータを一時的に格納したり、ＮＡＮＤメモリセルアレイ２３から読み出したデータを一時的に格納したりするバッファである。
【００２５】
図３は、本実施の形態のしきい値領域の一例を示す図である。ＮＡＮＤメモリでは、メモリセルのフローティングゲートに蓄えられた電荷量により情報を記憶する。各メモリセルは、電荷量に応じたしきい値電圧を有する。そして、メモリセルに記憶する複数のデータ値を、しきい値電圧の複数の領域（しきい値領域）にそれぞれ対応させる。図３の、Ｅｒ、Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇと記載した８つの分布（山型）は、８つのしきい値領域内のそれぞれのしきい値分布を示している。図３の横軸はしきい電圧を示し、縦軸はメモリセル数（セル数）の分布を示している。本実施の形態では、しきい値電圧がＶｒ１以下となる領域を領域Ｅｒとよび、しきい値電圧がＶｒ１より大きくＶｒ２以下となる領域を領域Ａとよび、しきい値電圧がＶｒ２より大きくＶｒ３以下となる領域を領域Ｂとよび、しきい値電圧がＶｒ３より大きくＶｒ４以下となる領域を領域Ｃとよび、しきい値電圧がＶｒ４より大きくＶｒ５以下となる領域を領域Ｄとよび、しきい値電圧がＶｒ５より大きくＶｒ６以下となる領域を領域Ｅとよび、しきい値電圧がＶｒ６より大きくＶｒ７以下となる領域を領域Ｆとよび、しきい値電圧がＶｒ７より大きい領域を領域Ｇとよぶ。また、領域Ｅｒ，Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇに対応するしきい値分布をそれぞれ分布Ｅｒ，Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ（第１〜第８の分布）と呼ぶ。Ｖｒ１〜Ｖｒ７は、各領域の境界となるしきい値電圧である。
【００２６】
ＮＡＮＤメモリでは、メモリセルの複数のしきい値領域（すなわちしきい値分布）に複数のデータ値をそれぞれ対応させる。この対応をデータコーディングという。このデータコーディングをあらかじめ定めておき、データの書き込み（プログラム）時には、データコーディングに従って記憶するデータ値に応じたしきい値領域内となるようにメモリセルに電荷を注入する。そして、読み出し時には、メモリセルに読み出し電圧を印加し、読み出し電圧よりメモリセルのしきい値が低いか高いかにより、データが決定される。しきい値電圧が、読み出し電圧より低い場合には、「消去」状態であるデータ値は“１”と定義する。しきい値電圧が読み出し電圧以上である場合には、「プログラムされた」状態であり、データを“０”と定義する。
【００２７】
図４は、本実施の形態のデータコーディングを示す図である。本実施の形態では、図３に示した８つのしきい値分布（しきい値領域）を３ｂｉｔの８つのデータ値にそれぞれ対応させる。図４に示すように、しきい値電圧がＥｒ領域内にあるメモリセルは、Upper，Middle，Lowerページに対応するビットのデータ値として“１１１”を記憶している状態である。しきい値電圧がＡ領域内にあるメモリセルは“１１０”を記憶している状態である。しきい値電圧がＢ領域内にあるメモリセルは“１００”を記憶している状態である。しきい値電圧がＣ領域内にあるメモリセルは“１０１”を記憶している状態である。しきい値電圧がＤ領域内にあるメモリセルは“００１”を記憶している状態である。しきい値電圧がＥ領域内にあるメモリセルは“０１１”を記憶している状態である。しきい値電圧がＦ領域内にあるメモリセルは“０１０”を記憶している状態である。しきい値電圧がＧ領域内にあるメモリセルは“０００”を記憶している状態である。なお、メモリセルが未書き込みの状態（「消去」の状態）では、メモリセルのしきい値電圧はＥｒ領域内にある。このように、図４に示したコーディングは、任意の２つの隣接する領域間で１ｂｉｔのみデータが変化するグレイ符号である。
【００２８】
図４に示す本実施の形態のコーディングでは、Upperページのビット値を判定するための境界となるしきい値電圧はＶｒ４である。Middleページのビット値を判定するための境界となるしきい値電圧はＶｒ２、Ｖｒ５、Ｖｒ７である。Lowerページのビット値を判定するための境界となるしきい値電圧はＶｒ１、Ｖｒ３、Ｖｒ６である。ビット値を判定するための境界となるしきい値電圧の数（以下、境界数とよぶ）が、Upperページ，Middleページ，Lowerページでそれぞれ１，３，３である。以下、このようなコーディングをUpperページ，Middleページ，Lowerページのそれぞれの境界数を用いて、１−３−３コーディングという。ここで注目すべき事項は、ページごとの隣接データと変化する境界の数が最大３であることである。不揮発性メモリ２の制御部２２は、図４に示したコーディングに基づいて、ＮＡＮＤメモリセルアレイ２３へのプログラムおよびＮＡＮＤメモリセルアレイ２３からの読み出しを制御する。
【００２９】
３ｂｉｔ／ＣｅｌｌのＮＡＮＤメモリへのプログラム方法として、１つのメモリセルグループに記憶する３ページのデータを同時に書き込む方法が知られている。しかしながら、この方法では、１ページずつデータを書込むことができず、３ページ分のデータが揃ってからでないと書き込みができない。書き込みを効率的に実施するためには、１ページずつ書き込みができることが望ましい。１ページずつ順番にプログラムする例として、Upperページ、Middleページ、Lowerページの境界数がそれぞれ１，２，４である１−２−４コーディングが知られている。この方法では、最大の境界数が４となるため、境界数の多いページでは誤りの発生確率が高くなる。ユーザデータを符号化する際の誤り訂正能力は、誤りの発生確率の高いページに対応できるよう実施することになる。このため、誤り訂正能力を高めるための記憶装置のコストや消費電力を増加させ、書き込みおよび読み出し速度を低下させてしまう。このため、誤り発生確率はページ間でなるべく偏りのないことが望まれる。
【００３０】
本実施の形態では、後述するように１ページずつ書き込みを行うことができる。その上、上述のように、１−３−３コーディングであり、ページ間の境界数の偏りが少ない。これにより、１−２−４コーディングに比べ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。また、後述するように、どのページまで書き込みが行われたかの情報を管理せずに、Upperページ、Middleページ、Lowerページのどのページを読み出しても正しい読み出し結果を得ることができる。
【００３１】
図５は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図５（Ａ）は、Lowerページのプログラム後のしきい値分布を示し、図５（Ｂ）は、Middleページのプログラム後のしきい値分布を示し、図５（Ｃ）は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、１ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。ただし、１つのメモリセルグループのLowerページ、Middleページ、Upperページを連続して書き込む必要はない。例えば、第１のメモリセルグループのLowerページの書き込みを行い、第２のメモリセルグループのLowerページの書き込みを行い、…、その後、第１のメモリセルグループのMiddleページの書き込みを行うというような書き込みを実施可能である。
【００３２】
ＮＡＮＤメモリセルアレイ２３の全メモリセルは、未書き込みの状態（「消去」の状態）である分布Ｅｒの状態である。不揮発性メモリ２の制御部２２は、図５（Ａ）に示すように、Lowerページのプログラムでは、Lowerページに書き込む（記憶する）ビット値に応じて、メモリセルごとに分布Ｅｒのままとする、または電荷を注入して１つ上の分布Ａに異動させる。具体的には、Lowerページに書き込むビット値が“１”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“０”の場合は電荷を注入して、しきい値電圧を分布Ａに移動させるようプログラムする。
【００３３】
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図５（Ｂ）に示すように、Middleページのプログラムを実施する。具体的には、Lowerページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Middleページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Middleページに書き込むビット値が“０”の場合は分布Ｃに移動させるようプログラムする。また、Lowerページのプログラムにより分布Ａの状態であったメモリセルに対しては、Middleページに書き込むビット値が“１”の場合は分布Ａのままとし、Middleページに書き込むビット値が“０”の場合は分布Ｂに移動させるようプログラムする。
【００３４】
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図５（Ｃ）に示すように、Upperページのプログラムを実施する。具体的には、Middleページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｅに移動させるようプログラムする。また、Middleページのプログラムにより分布Ａの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ａのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｆに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｂの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｂのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｇに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｃの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｃのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｄに移動させるようプログラムする。
【００３５】
以上のように、本実施の形態では、制御部２２は、どのページのプログラムにおいても、書き込むビット値が“１”の場合は、電荷の注入はせず、書き込むビット値が“０”の場合には電荷の注入を実施し、プログラム前よりしきい値電圧の高い分布へ移動させる。
【００３６】
なお、典型的にはプログラムは、１回または複数回のプログラム電圧パルスを印可することによって行われる。各プログラム電圧パルスの後には、セルがしきい値境界レベルを超えて移動したかどうかを確認するために読み出しを行う。それを繰り返すことで、所定のしきい値分布（しきい値領域）の範囲の中にメモリセルのしきい値を移動させる。プログラムの具体的手順は、この例に限定されない。
【００３７】
次に、本実施の形態の読み出しについて説明する。図６は、本実施の形態のLowerページの読み出し方法を示す図である。本実施の形態では、どのページまでの書き込みが行われているかにかかわらず、Ｖｒ１，Ｖｒ３，Ｖｒ６の３つを読み出し電圧として印加することによりLowerページのビット値を読み出すことができる。
【００３８】
図６（Ａ）は、図５に示した本実施の形態のプログラム方法により、Lowerページの書き込みが行われ、Middleページ、Upperページの書き込みは行われていない状態を示している。この状態で、Ｖｒ１，Ｖｒ３，Ｖｒ６の３つを読み出し電圧として印加すると、ビット値“１”を記憶しているメモリセルは、Ｖｒ１未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“１”となる。一方、ビット値“０”を記憶しているメモリセルは、Ｖｒ１以上Ｖｒ３未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“０”となる。
【００３９】
図６（Ｂ）は、図５に示した本実施の形態のプログラム方法により、Middleページの書き込みが行われ、Upperページの書き込みは行われていない状態を示している。この状態で、Ｖｒ１，Ｖｒ３，Ｖｒ６の３つを読み出し電圧として印加すると、ビット値“１１”を記憶しているメモリセルは、Ｖｒ１未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“１”となる。ビット値“１０”を記憶しているメモリセルおよびビット値“００”を記憶しているメモリセルは、Ｖｒ１以上Ｖｒ３未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“０”となる。ビット値“０１”を記憶しているメモリセルは、Ｖｒ３以上Ｖｒ６未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“１”となる。
【００４０】
図６（Ｃ）は、図５に示した本実施の形態のプログラム方法により、Upperページの書き込みが行われた状態を示している。この状態で、Ｖｒ１，Ｖｒ３，Ｖｒ６の３つを読み出し電圧として印加すると、ビット値“１１１”を記憶しているメモリセルは、Ｖｒ１未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“１”となる。ビット値“１１０”を記憶しているメモリセルおよびビット値“１００”を記憶しているメモリセルは、Ｖｒ１以上Ｖｒ３未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“０”となる。ビット値“１０１”を記憶しているメモリセルおよびビット値“００１”を記憶しているメモリセルおよびビット値“０１１”を記憶しているメモリセルは、Ｖｒ３以上Ｖｒ６未満のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“１”となる。ビット値“０１０”を記憶しているメモリセルおよびビット値“０００”を記憶しているメモリセルは、Ｖｒ６以上のしきい値電圧であると判定され、Lowerページのビット値の読み出し結果は“０”となる。
【００４１】
以上のように、どのページまでの書き込みが行われているかに関わらず、Ｖｒ１，Ｖｒ３，Ｖｒ６の３つを読み出し電圧として印加することにより、Lowerページのビット値を正しく読み出すことができる。
【００４２】
図７は、本実施の形態のMiddleページの読み出し方法を示す図である。本実施の形態では、どのページまでの書き込みが行われているかにかかわらず、Ｖｒ２，Ｖｒ５，Ｖｒ７の３つを読み出し電圧として印加することによりMiddleページのビット値を読み出すことができる。
【００４３】
図７（Ａ）は、図５に示した本実施の形態のプログラム方法により、Lowerページの書き込みが行われ、Middleページ、Upperページの書き込みは行われていない状態を示している。この状態で、Ｖｒ２，Ｖｒ５，Ｖｒ７の３つを読み出し電圧として印加すると、ビット値“１”を記憶しているメモリセルおよびビット値“０”を記憶しているメモリセルは、Ｖｒ２未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“１”となる。この状態ではMiddleページの書き込みは行われていないため、Middleページのビット値としては未書き込みを示す“１”が正しい値である。
【００４４】
図７（Ｂ）は、図５に示した本実施の形態のプログラム方法により、Middleページの書き込みが行われ、Upperページの書き込みは行われていない状態を示している。この状態で、Ｖｒ２，Ｖｒ５，Ｖｒ７の３つを読み出し電圧として印加すると、ビット値“１１”を記憶しているメモリセルおよびビット値“１０”を記憶しているメモリセルは、Ｖｒ２未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“１”となる。ビット値“００”を記憶しているメモリセルおよびビット値“０１”を記憶しているメモリセルは、Ｖｒ２以上Ｖｒ５未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“０”となる。
【００４５】
図７（Ｃ）は、図５に示した本実施の形態のプログラム方法により、Upperページの書き込みが行われた状態を示している。この状態で、Ｖｒ２，Ｖｒ５，Ｖｒ７の３つを読み出し電圧として印加すると、ビット値“１１１”を記憶しているメモリセルおよびビット値“１１０”を記憶しているメモリセルは、Ｖｒ２未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“１”となる。ビット値“１００”を記憶しているメモリセルおよびビット値“１０１”を記憶しているメモリセルおよびビット値“００１”を記憶しているメモリセルは、Ｖｒ２以上Ｖｒ５未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“０”となる。ビット値“０１１”を記憶しているメモリセルおよびビット値“０１０”を記憶しているメモリセルは、Ｖｒ５以上Ｖｒ７未満のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“１”となる。ビット値“０００”を記憶しているメモリセルは、Ｖｒ７以上のしきい値電圧であると判定され、Middleページのビット値の読み出し結果は“０”となる。
【００４６】
以上のように、どのページまでの書き込みが行われているかに関わらず、Ｖｒ２，Ｖｒ５，Ｖｒ７の３つを読み出し電圧として印加することにより、Middleページのビット値を正しく読み出すことができる。
【００４７】
図８は、本実施の形態のUpperページの読み出し方法を示す図である。本実施の形態では、どのページまでの書き込みが行われているかにかかわらず、Ｖｒ４を読み出し電圧として印加することによりUpperページのビット値を読み出すことができる。
【００４８】
図８（Ａ）は、図５に示した本実施の形態のプログラム方法により、Lowerページの書き込みが行われ、Middleページ、Upperページの書き込みは行われていない状態を示している。この状態で、Ｖｒ４を読み出し電圧として印加すると、ビット値“１”を記憶しているメモリセルおよびビット値“０”を記憶しているメモリセルは、Ｖｒ４未満のしきい値電圧であると判定され、Upperページのビット値の読み出し結果は“１”となる。この状態ではUpperページの書き込みは行われていないため、Upperページのビット値としては未書き込みを示す“１”が正しい値である。
【００４９】
図８（Ｂ）は、図５に示した本実施の形態のプログラム方法により、Middleページの書き込みが行われ、Upperページの書き込みは行われていない状態を示している。この状態で、Ｖｒ４を読み出し電圧として印加すると、ビット値“１１”を記憶しているメモリセル、ビット値“１０”を記憶しているメモリセル、ビット値“００”を記憶しているメモリセルおよびビット値“０１”を記憶しているメモリセルは、Ｖｒ４未満のしきい値電圧であると判定され、Upperページのビット値の読み出し結果は“１”となる。この状態ではUpperページの書き込みは行われていないため、Upperページのビット値としては未書き込みを示す“１”が正しい値である。
【００５０】
図８（Ｃ）は、図５に示した本実施の形態のプログラム方法により、Upperページの書き込みが行われた状態を示している。この状態で、Ｖｒ４を読み出し電圧として印加すると、ビット値“１１１”を記憶しているメモリセル、ビット値“１１０”を記憶しているメモリセル、ビット値“１００”を記憶しているメモリセルおよびビット値“１０１”を記憶しているメモリセルは、Ｖｒ４未満のしきい値電圧であると判定され、Upperページのビット値の読み出し結果は“１”となる。ビット値“００１”を記憶しているメモリセル、ビット値“０１１”を記憶しているメモリセル、ビット値“０１０”を記憶しているメモリセルおよびビット値“０００”を記憶しているメモリセルは、Ｖｒ４以上のしきい値電圧であると判定され、Upperページのビット値の読み出し結果は“０”となる。
【００５１】
以上のように、どのページまでの書き込みが行われているかに関わらず、Ｖｒ４を読み出し電圧として印加することにより、Upperページのビット値を正しく読み出すことができる。このように、どのページまでの書き込みが行われているかに関わらず、各ページのビット値を正しく読み出すことができるため、本実施の形態では、どのページまでの書き込みが行われているかの情報を管理する必要がない。
【００５２】
図９は、本実施の形態の書き込み手順の一例を示すフローチャートである。図９は、１つのメモリセルグループについて、未書き込みの状態からUpperページの書き込みが終了するまでの手順の一例を示している。まず、未書き込みの状態で、制御部２２は、メモリセルごとに書き込むビット値が“０”であるか否かを判断する（ステップＳ１）。書き込むビット値が“０”であるメモリセルの場合（ステップＳ１  Ｙｅｓ）、制御部２２は、電荷を注入してしきい値電圧を分布Ｅｒ（第１の領域）から分布Ａ（第２の領域）に上昇させる（ステップＳ２）。書き込むビット値が“０”でない（“１”である）メモリセルの場合（ステップＳ１  Ｎｏ）、しきい値電圧は変化させない。
【００５３】
メモリセルグループの全てのメモリセルについて、上記のステップＳ１，Ｓ２を実施すると、Lowerページの書き込みを終了し（ステップＳ３）、他のメモリセルグループの書き込みを実施する（ステップＳ４）。なお、他のメモリセルグループの書き込みを実施せずに、次のステップＳ５へ進んでもよい。
【００５４】
Lowerページの書き込み終了後、制御部２２は、このメモリセルグループへ書き込みを行う場合、メモリセルごとに書き込むビット値が０であるか否かを判断する（ステップＳ５）。書き込むビット値が“０”であるメモリセルの場合（ステップＳ５  Ｙｅｓ）、制御部２２は、該メモリセルのしきい値電圧が分布Ｅｒであるか否かを判断する（ステップＳ６）。メモリセルのしきい値電圧が分布Ｅｒである場合（ステップＳ６  Ｙｅｓ）、電荷を注入してしきい値電圧を分布Ｅｒから分布Ｃ（第４の領域）に上昇させる（ステップＳ７）。メモリセルのしきい値電圧が分布Ｅｒでない場合（ステップＳ６  Ｎｏ）、電荷を注入してしきい値電圧を分布Ａから分布Ｂ（第３の領域）に上昇させる（ステップＳ８）。書き込むビット値が“０”でない（“１”である）メモリセルの場合（ステップＳ５  Ｎｏ）、しきい値電圧は変化させない。
【００５５】
メモリセルグループの全てのメモリセルについて、上記のステップＳ５〜Ｓ８を実施すると、Middleページの書き込みを終了し（ステップＳ９）、他のメモリセルグループの書き込みを実施する（ステップＳ１０）。なお、他のメモリセルグループの書き込みを実施せずに、次のステップＳ１１へ進んでもよい。
【００５６】
Middleページの書き込み終了後、制御部２２は、このメモリセルグループへ書き込みを行う場合、メモリセルごとに書き込むビット値が“０”であるか否かを判断する（ステップＳ１１）。書き込むビット値が“０”であるメモリセルの場合（ステップＳ１１  Ｙｅｓ）、制御部２２は、該メモリセルに電荷を注入してしきい値電圧を上昇させる（ステップＳ１２）。具体的には、分布Ｅｒのメモリセルは分布Ｅ（第６の領域）へ、分布Ａのメモリセルは分布Ｆ（第７の領域）へ、分布Ｂのメモリセルは分布Ｇ（第８の領域）へ、分布Ｃのメモリセルは分布Ｄ（第５の領域）へそれぞれ移動させる。書き込むビット値が“０”でないメモリセルの場合（ステップＳ１１  Ｎｏ）、そのまま処理を終了する。以上の処理により、Upperページまでの書き込みが終了する。
【００５７】
図１０は、本実施の形態の読み出し手順の一例を示すフローチャートである。上述したように、本実施の形態では、Upper，Middle，Lowerのどのページまで書き込みが行われた状態であっても、読み出しを実施することができる。まず、制御部２２は、読み出すページがUpper，Middle，Lowerのうちどのページであるかを選択する（ステップＳ２１）。Upperページを選択した場合（ステップＳ２１  Upper）、Ｖｒ４で読み出しを実施する（ステップＳ２２）。制御部２２は、Ｖｒ４での読み出し結果に基づいてデータ（各メモリセルのビット値）を決定し（ステップＳ２３）、処理を終了する。
【００５８】
Middleページを選択した場合（ステップＳ２１  Middle）、Ｖｒ２で読み出しを実施する（ステップＳ２４）。次に、制御部２２は、Ｖｒ５で読み出しを実施する（ステップＳ２５）。次に、制御部２２は、Ｖｒ７で読み出しを実施する（ステップＳ２６）。Ｖｒ２、Ｖｒ５、Ｖｒ７での読み出し結果に基づいてデータを決定し（ステップＳ２７）、処理を終了する。
【００５９】
Lowerページを選択した場合（ステップＳ２１  Lower）、Ｖｒ１で読み出しを実施する（ステップＳ２８）。次に、制御部２２は、Ｖｒ３で読み出しを実施する（ステップＳ２９）。次に、制御部２２は、Ｖｒ６で読み出しを実施する（ステップＳ３０）。Ｖｒ１、Ｖｒ３、Ｖｒ６での読み出し結果に基づいてデータを決定し（ステップＳ３１）、処理を終了する。
【００６０】
以上のように、本実施の形態では、図４に示した１−３−３コーディングを用いることにより１ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。また、どのページまで書き込みが行われたかによらず、同一の手順でUpperページ、Middleページ、Lowerページをそれぞれ読み出すことができるため、どのページまで書き込みが行われたかの情報を管理する必要がない。
【００６１】
（第２の実施の形態）
図１１は、第２の実施の形態のデータコーディングを示す図である。本実施の形態の記憶装置の構成および不揮発性メモリ２の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる点を説明する。
【００６２】
図１１（Ａ）は、Lowerページの書き込みにおけるデータコーディングを示し、図１１（Ｂ）は、Middleページの書き込みにおけるデータコーディングを示し、図１１（Ｃ）は、Upperページの書き込みにおけるデータコーディングを示す。図１１に示すように、UpperページとMiddleページの書き込みでは、同一のデータコーディング（図１１の上段）を用いるが、Lowerページの書き込みでは、UpperページとMiddleページの書き込みとは異なるデータコーディング（図１１の下段）を用いる。
【００６３】
このように、本実施の形態では、ページによりデータコーディングが異なるが、どのページまで書き込みを行ったかの情報を管理していれば、１ページずつ順番に書き込みを実施することができる。本実施の形態のページごとの境界数は、第１の実施の形態と同様に、１−３−３であり、ページ間の誤りの発生確率を平滑化することができる。
【００６４】
本実施の形態では、制御部２２が、メモリセルグループごとにUpperページ、Middleページ、Lowerページのどのページまで書き込みが行われているかの情報を書き込みページフラグ（書き込みページ情報）として管理している。
【００６５】
図１１の上段のデータコーディングと図１１の下段のデータコーディングを比較すると、下段のデータコーディングのMiddleページの分布Ｂに対応するビット値が変更されている。図１１の下段のデータコーディングは、Lowerページの書き込みにおけるデータコーディングであり、この時点では、MiddleページおよびUpperページは書き込まれていない。図１１の下段の、存在しないしきい値分布としてハッチングした分布は、Lowerページの書き込みで使用しないしきい値分布を示す。第１の実施の形態では、Lowerページの書き込みで使用しないしきい値分布は、分布Ｂ以上の連続した領域であった。これに対し、本実施の形態では、分布Ｃ以上の連続した領域に加え、Lowerページの書き込みで使用する分布Ｅｒと分布Ｂの間に使用しない分布Ａが存在する。これにより、Lowerページの書き込み後に未書き込みのMiddleページを読み出す際には、Middleページが書き込まれた後のデータの割り付けと異なるデータ割り付けで読み出しを実施する必要が生じる。
【００６６】
図１２は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図１２（Ａ）は、Lowerページのプログラム後のしきい値分布を示し、図１２（Ｂ）は、Middleページのプログラム後のしきい値分布を示し、図１２（Ｃ）は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、１ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。
【００６７】
不揮発性メモリ２の制御部２２は、図１２（Ａ）に示すように、Lowerページのプログラムでは、Lowerページに書き込むビット値に応じて、メモリセルごとに分布Ｅｒのままとする、または電荷を注入して１つ上の分布Ｂに異動させる。具体的には、Lowerページに書き込むビット値が“１”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“０”の場合は電荷を注入して、しきい値電圧を分布Ｂに移動させるようプログラムする。
【００６８】
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図１２（Ｂ）に示すように、Middleページのプログラムを実施する。具体的には、Lowerページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Middleページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Middleページに書き込むビット値が“０”の場合は分布Ａに移動させるようプログラムする。また、Lowerページのプログラムにより分布Ｂの状態であったメモリセルに対しては、Middleページに書き込むビット値が“０”の場合は分布Ｂのままとし、Middleページに書き込むビット値が“１”の場合は分布Ｃに移動させるようプログラムする。第１の実施の形態では、書き込むビット値が“１”の場合は、電荷を注入せず、ビット値が“０”の場合に電荷を注入してしきい値分布を移動させたが、本実施の形態では、Middleページの書き込みにおいて、書き込むビット値が“０”の場合に電荷を注入せず、“１”の場合に電荷を注入するというケースが存在する。
【００６９】
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図１２（Ｃ）に示すように、Upperページのプログラムを実施する。具体的には、Middleページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｅに移動させるようプログラムする。また、Middleページのプログラムにより分布Ａの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ａのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｆに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｂの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｂのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｇに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｃの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｃのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｄに移動させるようプログラムする。
【００７０】
次に、本実施の形態の読み出しについて説明する。図１３は、本実施の形態のLowerページの読み出し方法を示す図である。本実施の形態では、どのページまでの書き込みが行われているかにかかわらず、Ｖｒ２，Ｖｒ５，Ｖｒ７の３つを読み出し電圧として印加することによりLowerページのビット値を読み出すことができる。
【００７１】
図１４は、本実施の形態のMiddleページの読み出し方法を示す図である。本実施の形態では、Middleページの読み出しでは、Ｖｒ１，Ｖｒ３，Ｖｒ６の３つを読み出し電圧として印加する。ただし、Middleページの書き込みが実施済であるか否かにより、読み出しに用いるデータコーディングが異なる。したがって、制御部２２は、ページ書き込みフラグを参照して、Lowerページの書き込みを行った状態である場合は、図１４（Ａ）に示すように、図１１（Ａ）のデータコーディングに従い、しきい値電圧がＶｒ３以上の場合は、ビット値を“０”と判定し、しきい値電圧がＶｒ３未満の場合はビット値を“１”と判定する。Middleページ，Upperページまでの書き込みが行われた状態の場合は、図１２（Ｂ）または図１２（Ｃ）に示すように、図１１（Ｂ），（Ｃ）のデータコーディングに従い、Ｖｒ１，Ｖｒ３，Ｖｒ６の読み出し結果に基づいてビット値を決定する。
【００７２】
図１５は、本実施の形態のUpperページの読み出し方法を示す図である。本実施の形態では、どのページまでの書き込みが行われているかにかかわらず、Ｖｒ４を読み出し電圧として印加することによりUpperページのビット値を読み出すことができる。
【００７３】
本実施の形態の書き込み手順は、図１２に示したように、書き込むビット値に応じてしきい値分布を移動させる。具体的手順は、データコーディングが異なる以外は、第１の実施の形態と同様である。
【００７４】
図１６は、本実施の形態の読み出し手順の一例を示すフローチャートである。図１６は、１つのメモリセルグループについて、未書き込みの状態からUpperページの書き込みが終了するまでの手順の一例を示している。まず、制御部２２は、読み出し対象のメモリセルグループの書き込みページフラグを読み出す（ステップＳ４１）。ステップＳ４２，Ｓ４３は、第１の実施の形態のステップＳ２１，Ｓ２２と同様である。ステップＳ４３の後、制御部２２は、書き込みページフラグおよびＶｒ４での読み出し結果に基づいてデータを決定する（ステップＳ４４）。
【００７５】
ステップＳ４２でMiddleページを選択した場合（ステップＳ４２  Middle）、制御部２２は、Ｖｒ１で読み出しを実施する（ステップＳ４５）。次に、制御部２２は、Ｖｒ３で読み出しを実施する（ステップＳ４６）。次に、制御部２２は、Ｖｒ６で読み出しを実施する（ステップＳ４７）。次に、制御部２２は、書き込みページフラグおよびＶｒ１、Ｖｒ３、Ｖｒ６での読み出し結果に基づいてデータを決定し（ステップＳ４８）、処理を終了する。具体的には、書き込みページフラグがLowerページの書き込みが行われた状態を示す値であった場合、図１１（Ａ）のデータコーディングに従い、しきい値電圧がＶｒ３以上の場合は、ビット値を“０”と判定し、しきい値電圧がＶｒ３未満の場合はビット値を“１”と判定する。書き込みページフラグがUpperページまたはMiddleページの書き込みが行われた状態を示す値であった場合、図１１（Ｂ），（Ｃ）のデータコーディングに従い、Ｖｒ１，Ｖｒ３，Ｖｒ６の読み出し結果に基づいてビット値を決定する。
【００７６】
Lowerページを選択した場合（ステップＳ２１  Lower）、制御部２２は、Ｖｒ２で読み出しを実施する（ステップＳ４９）。次に、制御部２２は、Ｖｒ５で読み出しを実施する（ステップＳ５０）。次に、制御部２２は、Ｖｒ７で読み出しを実施する（ステップＳ５１）。次に、制御部２２は、書き込みページフラグおよびＶｒ２、Ｖｒ５、Ｖｒ７での読み出し結果に基づいてデータを決定し（ステップＳ５２）、処理を終了する。
【００７７】
なお、LowerページおよびUpperページの読み出しでは、上述したように、書き込みページフラグによらず同一のデータコーディングを用いることができるため、ステップＳ４８、Ｓ５２では、書き込みページフラグを考慮しなくてもよい。
【００７８】
本実施の形態では、上述したようにプログラム済みのページがどこまでかを判別するために、ページプログラムの時にその情報を書き込みページフラグとして保持しておくこととする。この書き込みページフラグは、例えば、ＮＡＮＤメモリセルアレイ２３のユーザデータを格納するメモリグループ内の、ユーザデータを格納するメモリセルとは別のメモリセルに保持してもよい。またはＮＡＮＤメモリセルアレイ２３のユーザデータを格納するメモリグループとは別のメモリセルグループに格納してもよく、または不揮発性メモリ２内またはメモリコントローラ１内のメモリの記憶領域に保持してもよい。このように、書き込みページフラグの管理方法に限定は無い。また、書き込みページフラグを読み出すタイミングは、データ決定までであれば図１６に示されたタイミングで無くとも良く、例えばデータ読み出しと同じタイミングでもよい。特に、書き込みページフラグをユーザデータの格納されたメモリセルグループ内に保持する場合はこの読みタイミングが適切である。
【００７９】
以上のように、本実施の形態では、図１１に示した１−３−３コーディングを用い、書き込みページフラグを用いてどのページまでの書き込みが行われたかを管理することにより、１ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。
【００８０】
（第３の実施の形態）
図１７は、第３の実施の形態のデータコーディングを示す図である。本実施の形態の記憶装置の構成および不揮発性メモリ２の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる点を説明する。
【００８１】
図１７（Ａ）は、Lowerページの書き込みにおけるデータコーディングを示し、図１７（Ｂ）は、Middleページの書き込みにおけるデータコーディングを示し、図１７（Ｃ）は、Upperページの書き込みにおけるデータコーディングを示す。
【００８２】
図１７の四角で囲んだしきい値分布（領域）は、どこまでの書き込みを行ったかにより、データ値の割り付けが変更されるしきい値分布を示す。ハッチングした部分は、対応するページの書き込みで使用しないしきい値分布を示す。本実施の形態においても、第２の実施の形態と同様に書き込みページフラグを用いてどのページまで書き込みが行われたかを管理する。
【００８３】
図１８は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図１８（Ａ）は、Lowerページのプログラム後のしきい値分布を示し、図１８（Ｂ）は、Middleページのプログラム後のしきい値分布を示し、図１８（Ｃ）は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、１ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。
【００８４】
不揮発性メモリ２の制御部２２は、図１８（Ａ）に示すように、Lowerページに書き込むビット値が“１”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“０”の場合は電荷を注入して、しきい値電圧を分布Ｄに移動させるようプログラムする。
【００８５】
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図１８（Ｂ）に示すように、Lowerページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Middleページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Middleページに書き込むビット値が“０”の場合は分布Ｂに移動させるようプログラムする。また、Lowerページのプログラムにより分布Ｄの状態であったメモリセルに対しては、Middleページに書き込むビット値が“０”の場合は分布Ｄのままとし、Middleページに書き込むビット値が“１”の場合は分布Ｅに移動させるようプログラムする。
【００８６】
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図１８（Ｃ）に示すように、Middleページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Upperページに書き込むビット値が“０”の場合は分布Ａに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｂの状態であったメモリセルに対しては、Upperページに書き込むビット値が“０”の場合は分布Ｂのままとし、Upperページに書き込むビット値が“１”の場合は分布Ｃに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｄの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｄのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｇに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｅの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｅのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｆに移動させるようプログラムする。
【００８７】
第１の実施の形態では、書き込むビット値が“１”の場合は、電荷を注入せず、ビット値が“０”の場合に電荷を注入してしきい値分布を移動させたが、本実施の形態では、MiddleページおよびUpperページの書き込みにおいて、書き込むビット値が“０”の場合に電荷を注入せず、“１”の場合に電荷を注入するというケースが存在する。このため、図１７のデータコーディングにおいて、書き込み済のページに依存してデータ値の割り付けが変更される分布がMiddleページとUpperページで１か所ずつ存在する。
【００８８】
本実施の形態の書き込み手順は、図１８に示したように、書き込むビット値に応じてしきい値分布を移動させる。具体的手順は、データコーディングが異なる以外は、第１の実施の形態と同様である。
【００８９】
本実施の形態の読み出し手順は、データコーディングが異なる以外は、第２の実施の形態と同様に、書き込みページフラグと各ページの境界となる読み出し電圧での読み出し結果とを用いてデータ値を決定する。具体的には、本実施の形態では、Upperページの読み出しでは、Ｖｒ１、Ｖｒ３、Ｖｒ６を用い、Middleページの読み出しでは、Ｖｒ２、Ｖｒ５、Ｖｒ７を用い、Lowerページの読み出しでは、Ｖｒ４を用いる。Upperページまでの書き込みが行われている場合は、図１７（Ｃ）のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合は、図１７（Ｂ）のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合、LowerページおよびMiddleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がＶｒ１以上Ｖｒ３未満と判定された場合、ビット値は“１”と決定する。Lowerページまでの書き込みが行われている場合は、図１７（Ａ）のデータコーディングに従ってビット値を決定する。Lowerページまでの書き込みが行われている場合、Lowerページ、Upperページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Middleページの読み出し時には、しきい値電圧がＶｒ２以上Ｖｒ５未満と判定された場合、ビット値は“１”と決定する。
【００９０】
以上のように、本実施の形態では、図１７に示した３−３−１コーディングを用い、書き込みページフラグを用いてどのページまでの書き込みが行われたかを管理することにより、１ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。
【００９１】
（第４の実施の形態）
図１９は、第４の実施の形態のデータコーディングを示す図である。本実施の形態の記憶装置の構成および不揮発性メモリ２の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる点を説明する。
【００９２】
図１９（Ａ）は、Lowerページの書き込みにおけるデータコーディングを示し、図１９（Ｂ）は、Middleページの書き込みにおけるデータコーディングを示し、図１９（Ｃ）は、Upperページの書き込みにおけるデータコーディングを示す。
【００９３】
図１９の四角で囲んだしきい値分布（領域）は、どこまでの書き込みを行ったかにより、データ値の割り付けが変更されるしきい値分布を示す。ハッチングした部分は、対応するページの書き込みで使用しないしきい値分布を示す。本実施の形態においても、第２の実施の形態と同様に書き込みページフラグを用いてどのページまで書き込みが行われたかを管理する。
【００９４】
図２０は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図２０（Ａ）は、Lowerページのプログラム後のしきい値分布を示し、図２０（Ｂ）は、Middleページのプログラム後のしきい値分布を示し、図２０（Ｃ）は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、１ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。
【００９５】
不揮発性メモリ２の制御部２２は、図２０（Ａ）に示すように、Lowerページに書き込むビット値が“１”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“０”の場合は電荷を注入して、しきい値電圧を分布Ｄに移動させるようプログラムする。
【００９６】
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図２０（Ｂ）に示すように、Lowerページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Middleページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Middleページに書き込むビット値が“０”の場合は分布Ａに移動させるようプログラムする。また、Lowerページのプログラムにより分布Ｄの状態であったメモリセルに対しては、Middleページに書き込むビット値が“１”の場合は分布Ｄのままとし、Middleページに書き込むビット値が“０”の場合は分布Ｆに移動させるようプログラムする。
【００９７】
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図２０（Ｃ）に示すように、Middleページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｃに移動させるようプログラムする。また、Middleページのプログラムにより分布Ａの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ａのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｂに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｄの状態であったメモリセルに対しては、Upperページに書き込むビット値が“０”の場合は分布Ｄのままとし、Upperページに書き込むビット値が“１”の場合は分布Ｅに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｆの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｆのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｇに移動させるようプログラムする。
【００９８】
第１の実施の形態では、書き込むビット値が“１”の場合は、電荷を注入せず、ビット値が“０”の場合に電荷を注入してしきい値分布を移動させたが、本実施の形態では、Upperページの書き込みにおいて、書き込むビット値が“０”の場合に電荷を注入せず、“１”の場合に電荷を注入するというケースが存在する。このため、図１９のデータコーディングにおいて、書き込み済のページに依存してデータ値の割り付けが変更される分布がUpperページに１か所存在する。
【００９９】
本実施の形態の書き込み手順は、図２０に示したように、書き込むビット値に応じてしきい値分布を移動させる。具体的手順は、データコーディングが異なる以外は、第１の実施の形態と同様である。
【０１００】
本実施の形態の読み出し手順は、データコーディングが異なる以外は、第２の実施の形態と同様に、書き込みページフラグと各ページの境界となる読み出し電圧での読み出し結果とを用いてデータ値を決定する。具体的には、本実施の形態では、Upperページの読み出しでは、Ｖｒ２、Ｖｒ５、Ｖｒ７を用い、Middleページの読み出しでは、Ｖｒ１、Ｖｒ３、Ｖｒ６を用い、Lowerページの読み出しでは、Ｖｒ４を用いる。Upperページまでの書き込みが行われている場合は、図１９（Ｃ）のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合は、図１９（Ｂ）のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合、LowerページおよびMiddleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がＶｒ２以上Ｖｒ５未満と判定された場合、ビット値は“１”と決定する。Lowerページまでの書き込みが行われている場合は、図１９（Ａ）のデータコーディングに従ってビット値を決定する。Lowerページまでの書き込みが行われている場合、Lowerページ、Middleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がＶｒ２以上Ｖｒ５未満と判定された場合、ビット値は“１”と決定する。
【０１０１】
以上のように、本実施の形態では、図１９に示した３−３−１コーディングを用い、書き込みページフラグを用いてどのページまでの書き込みが行われたかを管理することにより、１ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。
【０１０２】
（第５の実施の形態）
図２１は、第５の実施の形態のデータコーディングを示す図である。本実施の形態の記憶装置の構成および不揮発性メモリ２の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる点を説明する。
【０１０３】
図２１（Ａ）は、Lowerページの書き込みにおけるデータコーディングを示し、図２１（Ｂ）は、Middleページの書き込みにおけるデータコーディングを示し、図２１（Ｃ）は、Upperページの書き込みにおけるデータコーディングを示す。
【０１０４】
図２１の四角で囲んだしきい値分布（領域）は、どこまでの書き込みを行ったかにより、データ値の割り付けが変更されるしきい値分布を示す。ハッチングした部分は、対応するページの書き込みで使用しないしきい値分布を示す。本実施の形態においても、第２の実施の形態と同様に書き込みページフラグを用いてどのページまで書き込みが行われたかを管理する。
【０１０５】
図２２は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図２２（Ａ）は、Lowerページのプログラム後のしきい値分布を示し、図２２（Ｂ）は、Middleページのプログラム後のしきい値分布を示し、図２２（Ｃ）は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、１ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。
【０１０６】
不揮発性メモリ２の制御部２２は、図２２（Ａ）に示すように、Lowerページに書き込むビット値が“１”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“０”の場合は電荷を注入して、しきい値電圧を分布Ｂに移動させるようプログラムする。
【０１０７】
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図２２（Ｂ）に示すように、Lowerページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Middleページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Middleページに書き込むビット値が“０”の場合は分布Ｅに移動させるようプログラムする。また、Lowerページのプログラムにより分布Ｂの状態であったメモリセルに対しては、Middleページに書き込むビット値が“１”の場合は分布Ｂのままとし、Middleページに書き込むビット値が“０”の場合は分布Ｄに移動させるようプログラムする。
【０１０８】
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図２２（Ｃ）に示すように、Middleページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Upperページに書き込むビット値が“０”の場合は分布Ａに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｂの状態であったメモリセルに対しては、Upperページに書き込むビット値が“０”の場合は分布Ｂのままとし、Upperページに書き込むビット値が“１”の場合は分布Ｃに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｄの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｄのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｇに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｅの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｅのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｆに移動させるようプログラムする。
【０１０９】
第１の実施の形態では、書き込むビット値が“１”の場合は、電荷を注入せず、ビット値が“０”の場合に電荷を注入してしきい値分布を移動させたが、本実施の形態では、Upperページの書き込みにおいて、書き込むビット値が“０”の場合に電荷を注入せず、“１”の場合に電荷を注入するというケースが存在する。このため、図２１のデータコーディングにおいて、書き込み済のページに依存してデータ値の割り付けが変更される分布がUpperページに１か所存在する。
【０１１０】
本実施の形態の書き込み手順は、図２２に示したように、書き込むビット値に応じてしきい値分布を移動させる。具体的手順は、データコーディングが異なる以外は、第１の実施の形態と同様である。
【０１１１】
本実施の形態の読み出し手順は、データコーディングが異なる以外は、第２の実施の形態と同様に、書き込みページフラグと各ページの境界となる読み出し電圧での読み出し結果とを用いてデータ値を決定する。具体的には、本実施の形態では、Upperページの読み出しでは、Ｖｒ１、Ｖｒ３、Ｖｒ６を用い、Middleページの読み出しでは、Ｖｒ４を用い、Lowerページの読み出しでは、Ｖｒ２、Ｖｒ５、Ｖｒ７を用いる。Upperページまでの書き込みが行われている場合は、図２１（Ｃ）のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合は、図２１（Ｂ）のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合、LowerページおよびMiddleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がＶｒ１以上Ｖｒ３未満と判定された場合、ビット値は“１”と決定する。Lowerページまでの書き込みが行われている場合は、図２１（Ａ）のデータコーディングに従ってビット値を決定する。Lowerページまでの書き込みが行われている場合、Lowerページ、Middleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がＶｒ１以上Ｖｒ３未満と判定された場合、ビット値は“１”と決定する。
【０１１２】
以上のように、本実施の形態では、図２１に示した３−１−３コーディングを用い、書き込みページフラグを用いてどのページまでの書き込みが行われたかを管理することにより、１ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。
【０１１３】
（第６の実施の形態）
図２３は、第６の実施の形態のデータコーディングを示す図である。本実施の形態の記憶装置の構成および不揮発性メモリ２の構成は第１の実施の形態と同様である。以下、第１の実施の形態と異なる点を説明する。
【０１１４】
図２３（Ａ）は、Lowerページの書き込みにおけるデータコーディングを示し、図２３（Ｂ）は、Middleページの書き込みにおけるデータコーディングを示し、図２３（Ｃ）は、Upperページの書き込みにおけるデータコーディングを示す。
【０１１５】
図２３の四角で囲んだしきい値分布（領域）は、どこまでの書き込みを行ったかにより、データ値の割り付けが変更されるしきい値分布を示す。ハッチングした部分は、対応するページの書き込みで使用しないしきい値分布を示す。本実施の形態においても、第２の実施の形態と同様に書き込みページフラグを用いてどのページまで書き込みが行われたかを管理する。
【０１１６】
図２４は、本実施の形態におけるメモリセルに対するプログラム後のしきい値分布を示す図である。図２４（Ａ）は、Lowerページのプログラム後のしきい値分布を示し、図２４（Ｂ）は、Middleページのプログラム後のしきい値分布を示し、図２４（Ｃ）は、Upperページのプログラム後のしきい値分布を示す。本実施の形態では、１ページずつプログラムすることが可能であるが、プログラムの順序は決まっており、Lowerページ、Middleページ、Upperページの順に書き込む。
【０１１７】
不揮発性メモリ２の制御部２２は、図２４（Ａ）に示すように、Lowerページに書き込むビット値が“１”の場合は、電荷を注入せず、Lowerページに書き込むビット値が“０”の場合は電荷を注入して、しきい値電圧を分布Ａに移動させるようプログラムする。
【０１１８】
Lowerページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図２４（Ｂ）に示すように、Lowerページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Middleページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Middleページに書き込むビット値が“０”の場合は分布Ｄに移動させるようプログラムする。また、Lowerページのプログラムにより分布Ａの状態であったメモリセルに対しては、Middleページに書き込むビット値が“１”の場合は分布Ａのままとし、Middleページに書き込むビット値が“０”の場合は分布Ｆに移動させるようプログラムする。
【０１１９】
Middleページの書き込みを実施済のメモリセルグループに書き込みを行う場合、制御部２２は、図２４（Ｃ）に示すように、Middleページのプログラムにより分布Ｅｒの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｅｒのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｃに移動させるようプログラムする。また、Middleページのプログラムにより分布Ａの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ａのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｂに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｄの状態であったメモリセルに対しては、Upperページに書き込むビット値が“０”の場合は分布Ｄのままとし、Upperページに書き込むビット値が“１”の場合は分布Ｅに移動させるようプログラムする。また、Middleページのプログラムにより分布Ｆの状態であったメモリセルに対しては、Upperページに書き込むビット値が“１”の場合は分布Ｆのままとし、Upperページに書き込むビット値が“０”の場合は分布Ｇに移動させるようプログラムする。
【０１２０】
第１の実施の形態では、書き込むビット値が“１”の場合は、電荷を注入せず、ビット値が“０”の場合に電荷を注入してしきい値分布を移動させたが、本実施の形態では、Upperページの書き込みにおいて、書き込むビット値が“０”の場合に電荷を注入せず、“１”の場合に電荷を注入するというケースが存在する。このため、図２３のデータコーディングにおいて、書き込み済のページに依存してデータ値の割り付けが変更される分布がUpperページに１か所存在する。
【０１２１】
本実施の形態の書き込み手順は、図２４に示したように、書き込むビット値に応じてしきい値分布を移動させる。具体的手順は、データコーディングが異なる以外は、第１の実施の形態と同様である。
【０１２２】
本実施の形態の読み出し手順は、データコーディングが異なる以外は、第２の実施の形態と同様に、書き込みページフラグと各ページの境界となる読み出し電圧での読み出し結果とを用いてデータ値を決定する。具体的には、本実施の形態では、Upperページの読み出しでは、Ｖｒ２、Ｖｒ５、Ｖｒ７を用い、Middleページの読み出しでは、Ｖｒ４を用い、Lowerページの読み出しでは、Ｖｒ１、Ｖｒ３、Ｖｒ６を用いる。Upperページまでの書き込みが行われている場合は、図２３（Ｃ）のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合は、図２３（Ｂ）のデータコーディングに従ってビット値を決定する。Middleページまでの書き込みが行われている場合、LowerページおよびMiddleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がＶｒ２以上Ｖｒ５未満と判定された場合、ビット値は“１”と決定する。Lowerページまでの書き込みが行われている場合は、図２３（Ａ）のデータコーディングに従ってビット値を決定する。Lowerページまでの書き込みが行われている場合、Lowerページ、Middleページのデータ値の決定方法は、Upperページまでの書き込みが行われている場合と同様であるが、Upperページの読み出し時には、しきい値電圧がＶｒ２以上Ｖｒ５未満と判定された場合、ビット値は“１”と決定する。
【０１２３】
以上のように、本実施の形態では、図２３に示した３−１−３コーディングを用い、書き込みページフラグを用いてどのページまでの書き込みが行われたかを管理することにより、１ページごとの書き込みを実施するようにした。このため、ページ間の境界数の偏りが少なく、誤り発生確率をページ間で平滑化することができ、記憶装置のコストおよび消費電力を抑制し、書き込みおよび読み出し速度を高めることができる。
【０１２４】
（第７の実施の形態）
次に、第７の実施の形態の記憶装置における読み出し方法について説明する。本実施の形態の記憶装置の構成および不揮発性メモリ２の構成は第１の実施の形態と同様である。本実施の形態のデータコーディングは第１の実施の形態と同様である。以下、第１の実施の形態と異なる点を説明する。
【０１２５】
一般的に、ＮＡＮＤメモリの各メモリセルのしきい値は、何らかの要因によって変動（変化）する。この要因としては、たとえばプログラムディスターブ、またはリードディスターブ、またはデータリテンションなどさまざまなものがある。変動したしきい値を有するメモリセルは、読み出しの時に、書き込まれたデータ値に対応するしきい値分布（領域）とは別のしきい値分布（領域）に対応する状態であると判定されることがあり、読み出しデータの誤りが生じる。この問題への対策として、しきい値の変動を補正して読み出すという手法がある。
【０１２６】
図２５は、しきい値分布の変動の一例を示す図である。図２５では、第１の実施の形態の図６（Ｃ）の状態にプログラムを行った後に、Lowerページを読み出す時のしきい値変動の一例を示している。実線で示したしきい値分布１００は、変動前、すなわち書込み時のしきい値分布を示している。点線で示したしきい値分布１０１は、変動後のしきい値分布を示している。符号はそれぞれ１つずつに付しているが、符号を付していないしきい値分布についても実線が変動前のものを示し、点線が変動後のものを示している。図２５の例では、データリテンションによって、分布Ｅｒと分布Ａは、正方向（図２５では、右へ向かう方向）に、分布Ｂ〜Ｇは、負方向（図２５では、左へ向かう方向）にしきい値が変動した様子を表している。しきい値変動後のメモリセルを、元の読み出し電圧Ｖｒ１，Ｖｒ３，Ｖｒ６を使って読み出すと、例えば分布Ｆに属するメモリセルの一部（低電圧側の一部）はＶｒ３とＶｒ６の間の範囲内と判定されてしまう。このように、しきい値変動が生じることにより、多数のメモリセルのデータを読み誤る。
【０１２７】
そこで、本実施の形態では、Ｖｒ１，Ｖｒ３，Ｖｒ６の代わりに、Ｖｒ１’，Ｖｒ３’，Ｖｒ６’という変動を補正した読み出し電圧を使用する。Ｖｒ１’，Ｖｒ３’，Ｖｒ６’の決定方法はどのような方法を用いてもよいが、例えば、読み出し電圧を変更して誤り訂正処理を行い、誤り訂正可能となった読み出し電圧をＶｒ１’，Ｖｒ３’，Ｖｒ６’として用いる方法が考えられる。Ｖｒ１’，Ｖｒ３’，Ｖｒ６’の決定方法はこの方法に限定されない。
【０１２８】
図２６は、読み出し電圧を変更する場合の本実施の形態の読み出し手順の一例を示すフローチャートである。常時図２６に示す手順で読み出しを実施してもよいし、通常は読み出し電圧は変更しない読み出しを実施し、しきい値が変動したと想定される一定条件を満たした場合に、図２６の読み出し手順を実施するようにしてもよい。この一定条件には特に制約はないが、例えば、読み出し時の誤り訂正処理により誤り訂正不可となる比率が一定比率を超えた場合に図２６に示した読み出し電圧の変更を行う読み出しを実施する。図２６に示すように、プロセッサ１２は、メモリインターフェイス１５経由で、不揮発性メモリ２へページ読み出しコマンド（ページ単位で読み出しを要求するコマンド）を入力する（ステップＳ６１）。不揮発性メモリ２は、ページ読み出しコマンドに従ってデータを読み出し（ステップＳ６２）、メモリインターフェイス１５経由でＥＣＣ回路１４へ読み出したデータを送信する（ステップＳ６３）。ステップＳ６２の読み出しで用いる読み出し電圧は、後述する読み出しレベル変更コマンドを受信していない場合には初期値（上記図２５の例ではＶｒ１，Ｖｒ３，Ｖｒ６）である。ただし、この初期値は、メモリコントローラ１からの指示に基づいて変更可能としてもよい。
【０１２９】
ＥＣＣ回路１４は、入力されたデータを用いて誤り訂正処理を行う（ステップＳ６４）。ＥＣＣ回路１４は、この誤り訂正処理で、誤り訂正が可能であったか否かをプロセッサ１２へ通知する。プロセッサ１２は、この通知により誤り訂正が可能であったか否かを判断し（ステップＳ６５）、誤り訂正が可能であった場合（ステップＳ６５  Ｙｅｓ）、処理を終了する。誤り訂正不可であった場合（ステップＳ６５  Ｎｏ）、プロセッサ１２は、不揮発性メモリ２の読み出しレベル（読み出し電圧）をステップＳ６２で用いた読み出し電圧とは異なる値に決定する（ステップＳ６７）。そして、プロセッサ１２は、決定した値に基づいて読み出しレベル変更コマンドをメモリインターフェイス１５経由で、不揮発性メモリ２へ入力し（ステップＳ６６）、ステップＳ６１へ戻る。不揮発性メモリ２は、読み出しレベル変更コマンドに従って、読み出し電圧を変更する。
【０１３０】
以上の手順により、誤り訂正可能となる読み出し電圧を探索することが可能となる。誤り訂正可能となった場合の読み出し電圧が図２５のＶｒ１’，Ｖｒ３’，Ｖｒ６’に相当する。
【０１３１】
以上の説明では、第１の実施の形態のデータコーディングを用いる例を説明したが、第２〜６の実施の形態のデータコーディングを用いる場合に、同様に、読み出し電圧の変更を行ってもよい。
【０１３２】
本実施の形態では、第１〜第６の実施の形態のデータコーディングを用いた書込みおよび読み出しを行う場合に、しきい値が変動した場合に読み出し電圧を変更するようにした。このため、第１〜第６の実施の形態の効果が得られるとともに、しきい値が変動した場合にも、データの読み出し誤りを低減することができる。
【０１３３】
（第８の実施の形態）
次に、第８の実施の形態の記憶装置における読み出し方法について説明する。本実施の形態の記憶装置の構成および不揮発性メモリ２の構成は第１の実施の形態と同様である。本実施の形態のデータコーディングは第１の実施の形態と同様である。以下、第１の実施の形態と異なる点を説明する。
【０１３４】
不揮発メモリ２に格納されるデータを保護するために誤り訂正符号化する際に、どのような誤り訂正符号を用いてもよいが、復号時に軟判定復号を行ってもよい。軟判定復号を行う場合には、一般にはＬＤＰＣ（Low  Density  Parity  Check）符号等のように、軟判定復号を行う符号を用いて符号化を行うが、硬判定復号を行うことが可能な符号（ＢＣＨ符号等）を用いた符号化を行い、復号時に軟判定復号を行ってもよい。
【０１３５】
本実施の形態では、復号時に軟判定復号を行う例について説明する。符号化の方式については特に制約はないが、上述したように例えばＬＤＰＣ符号により符号化を行う。軟判定復号を行う場合は、通常の読み出しと同様の硬判定値に加えいわゆるソフトビット情報を不揮発性メモリ２から読み出し、読み出した硬判定値およびソフトビット情報を用いて復号を行う。ソフトビット情報とは、どれだけ真値に近いかという確率情報である。不揮発メモリ２としてＮＡＮＤメモリを用いる場合、しきい値分布を分ける境界となる読み出し電圧から各メモリセルのしきい値電圧が離れているほど真値に近いとみなせる。
【０１３６】
以下、ソフトビット情報を読み出す読み出し方法をソフトビットリードとよび、第１の実施の形態等で前提として通常の読み出しはハードビットリード（ＨＢ  read）とよぶ。ハードビットリードは、しきい値分布を分ける境界に対応する１つの読み出し電圧を印加することにより、当該境界よりメモリセルのしきい値電圧が高いか否かを判定する。これに対し、ソフトビットリードでは、判定対象の１つの境界に対して複数の読み出し電圧で読み出しを実施する。ソフトビットリードを行うためのハードウェア構成はどのような構成としてもよいが、例えば、不揮発性メモリ２がソフトビットリードと通常読み出し（ハードビットリード）の両方の読み出し方法に対応可能とし、メモリコントローラ１からの指示に基づいて、読み出しを行うとする。また、ソフトビットリードを行う際の、読み出し電圧のシフト量や何種類のシフトを行うかについては、不揮発性メモリ２にあらかじめ設定されていてもよいし、メモリコントローラ１から指示するようにしてもよい。
【０１３７】
図２７は、ソフトビットの様子の一例を示す図である。図２７では、第１の実施の形態の図６（Ｃ）の状態にプログラムを行った後に、Lowerページをソフトビットリードにより読み出す様子を示している。この図の例では、２種類のソフトビット情報を読み出している。ソフトビットリードは基本的に、ハードビットリードと読み出し電圧をシフトさせた場合のデータの読み出し値（メモリセルのしきい値電圧が、シフトさせた読み出し電圧以上であるか否か）を用いた読み出しとの組み合わせである。図２７の例では、まず、不揮発性メモリ２は、通常の読み出し電圧Ｖｒ１，Ｖｒ３，Ｖｒ６をそれぞれ使った３回の読み出し結果に基づいて、３つのハードビットリードのデータ（しきい値電圧が読み出し電圧以上であるか否か）をそれぞれ決定する（図２７（Ａ））。しきい値電圧が、読み出し電圧以上である場合データ値は“０”であり、読み出し電圧未満である場合データ値は“１”である。
【０１３８】
次に、不揮発性メモリ２は、電圧Ｖｒ１，Ｖｒ３，Ｖｒ６からそれぞれ所定量ΔＲだけ低い読み出し電圧で、ソフトビットリード＃１（Ｓ１  read）を行う。そして、Ｖｒ１−ΔＲ，Ｖｒ３−ΔＲ，Ｖｒ６−ΔＲをそれぞれ使った３回の読み出し結果に基づいて、Ｓ１  readのデータを決定する（図２７（Ｂ））。次に、不揮発性メモリ２は、電圧Ｖｒ１，Ｖｒ３，Ｖｒ６からそれぞれΔＲだけ高い読み出し電圧でソフトビットリード＃２（Ｓ２  read）を行う。そして、Ｖｒ１＋ΔＲ，Ｖｒ３＋ΔＲ，Ｖｒ６＋ΔＲを使った３回の読み出し結果に基づいて、Ｓ２  readのデータを決定する（図２７（Ｃ））。
【０１３９】
次に、不揮発性メモリ２は、電圧Ｖｒ１，Ｖｒ３，Ｖｒ６からそれぞれΔＲの２倍だけ低い読み出し電圧で、ソフトビットリード＃３（Ｓ３  read）を行う。そして、電圧Ｖｒ１−２ΔＲ，Ｖｒ３−２ΔＲ，Ｖｒ６−２ΔＲをそれぞれ使った３回の読み出し結果に基づいて、Ｓ３  readのデータを決定する（図２７（Ｄ））。次に、不揮発性メモリ２は、電圧Ｖｒ１，Ｖｒ３，Ｖｒ６からそれぞれΔＲの２倍だけ高い読み出し電圧で、ソフトビットリード＃４（Ｓ４  read）を行う。そして、電圧Ｖｒ１＋２ΔＲ，Ｖｒ３＋２ΔＲ，Ｖｒ６＋２ΔＲをそれぞれ使った３回の読み出し結果に基づいて、Ｓ４  readのデータを決定する（図２７（Ｅ））。
【０１４０】
さらに、Ｓ１  readのデータとＳ２readのデータとの否定排他的論理和を演算することで、Ｖｒ１−ΔＲとＶｒ１＋ΔＲの間の範囲とＶｒ３−ΔＲとＶｒ３＋ΔＲの間の範囲とＶｒ６−ΔＲとＶｒ６＋ΔＲの間の範囲とのしきい値電圧を有するメモリセルをそれぞれ特定することができる（図２７（Ｆ））。同様に、Ｓ３  readのデータとＳ４  readのデータの否定排他的論理和を演算することで、Ｖｒ１−２ΔＲとＶｒ１＋２ΔＲの間の範囲とＶｒ３−２ΔＲとＶｒ３＋２ΔＲの間の範囲とＶｒ６−２ΔＲとＶｒ６＋２ΔＲの間の範囲とのしきい値電圧を有するメモリセルをそれぞれ特定することができる（図２７（Ｇ））。この図２７（Ｆ）と図２７（Ｇ）の結果が、２種類のソフトビット情報となる。
【０１４１】
そして、ＥＣＣ回路１４は、ハードビットリードの結果とソフトビット情報とを用いて軟判定復号を行うことにより、誤り訂正を行うことができる。なお、本実施の形態では、第１の実施の形態のデータコーディングを用いる例を説明したが、第２〜６の実施の形態のデータコーディングを用いる場合に、同様に、ソフトビットリードを行ってもよい。また、本実施の形態のソフトビットリードを行う場合に、第７の実施の形態で述べた読み出し電圧の変更を行ってもよい。
【０１４２】
（第９の実施の形態）
次に、第９の実施の形態の記憶装置におけるしきい値分布について説明する。本実施の形態の記憶装置の構成および不揮発性メモリ２の構成は第１の実施の形態と同様である。本実施の形態のデータコーディングは第１の実施の形態と同様である。以下、第１の実施の形態と異なる点を説明する。
【０１４３】
第１〜第６の実施の形態では、いずれも、LowerページやMiddleページのプログラムにおいても、しきい値分布（領域）の幅は、最終的にUpperページのプログラムで必要とされる幅と同じ幅に形成しておく例について説明した。
【０１４４】
本実施の形態では、第３の実施の形態で述べたデータコーディングの変形例として、LowerページおよびMiddleページのしきい値分布の幅を広くし、またMiddleページのしきい値分布の間隔を広くする。これにより、Lowerページの書き込みの高速化とMiddleページのデータ誤りの確率の低減を図る。
【０１４５】
図２８は、本実施の形態における各ページのプログラム後のしきい値分布の一例を示す図である。本実施の形態のLowerページプログラム後におけるデータ値“０”に対応するしきい値分布は、第３の実施の形態の図１８に示したLowerページプログラム後におけるデータ値“０”に対応する分布１０２に比べ、幅が広がり中心電圧が低くなっている。これにより、Middleページのプログラム後におけるデータ値“００”に対応するしきい値分布とデータ値“１０”に対応するしきい値分布との間隔も広がっている。
【０１４６】
以上のように、しきい値分布の幅を広げることで、Lowerページのプログラム時にワード線に印可するプログラム電圧の１回のプログラムパルス毎の上昇幅をMiddleページやUpperページのそれよりも大きくすることができる。すなわち、分布幅調整をラフに行うことができるので、プログラム時間を高速化することができる。またMiddleページのしきい値分布の間隔が広がるため、データ誤りの確率が下がり、より正確なデータを読み出すことが可能になる。それを利用して、Lowerページのみをプログラムが高速で信頼性の良い２値データとして使用することも可能である。
【０１４７】
なおこれにより、第３の実施の形態ではUpperページのプログラムにおいてはデータ値“１００”のしきい値分布が、Middleページのプログラム後のデータ値“００”のしきい値分布と同じであったため、Upperページの書込みの際にデータ値“１００”の場合はプログラムを実施する必要がなかった。これに対し、本実施の形態では、Upperページの書込みの際にデータ値“１００”の場合、図２８（Ｃ）に示すデータ値“１００”のしきい値分布となるように、プログラムを実施する。
【０１４８】
なお、ここでは、第３の実施の形態の変形例について説明したが、他の実施の形態についても同様にLowerページおよびMiddleページのプログラム後におけるしきい値分布の少なくとも一部について幅を広げまたMiddleページのしきい値分布の間隔を広げることができる。
【０１４９】
以上のように、本実施の形態では、LowerページおよびMiddleページのプログラム後におけるしきい値分布の少なくとも一部について幅を広げ、またMiddleページのしきい値分布の間隔を広げるようにした。これにより、プログラム時間を高速化することができる。また、Middleページの読み出し誤りを低減することができる。
【０１５０】
（第１０の実施の形態）
次に、第１０の実施の形態の記憶装置におけるしきい値分布について説明する。本実施の形態の記憶装置の構成および不揮発性メモリ２の構成は第１の実施の形態と同様である。本実施の形態のデータコーディングは第１の実施の形態と同様である。以下、第１の実施の形態と異なる点を説明する。
【０１５１】
本実施の形態では、第９の実施の形態と同様に、第３の実施の形態で述べたデータコーディングの変形例として、LowerページおよびMiddleページのしきい値分布の幅を広くし、またMiddleページのしきい値分布の間隔を広くする。
【０１５２】
図２９は、本実施の形態における各ページのプログラム後のしきい値分布の一例を示す図である。本実施の形態のLowerページプログラム後におけるデータ値“０”に対応するしきい値分布は、第９の実施の形態に比べさらに低電圧側に移動させている。図２９において、分布１０２は、第３の実施の形態のしきい値分布を示す。なお、図２９では、符号は１つの分布に付しているが、点線で示したしきい値分布は符号を付した分布と同様に第３の実施の形態のしきい値分布を示している。Middleページのプログラム後におけるデータ値“０１”に対応するしきい値分布、データ値”１０”に対応するしきい値分布についてそれぞれ第３の実施の形態に比べ、しきい値分布の幅を広げ中心電圧も下げている。
【０１５３】
これにより、Middleページプログラム後におけるデータ値“００”のしきい値分布とデータ値“１０”のしきい値分布との間隔も広がっている。したがって、LowerページとMiddleページのプログラム時にワード線に印可するプログラム電圧の１回のプログラムパルス毎の上昇幅をUpperページのそれよりも大きくすることができる。すなわち、分布幅調整をラフに行うことができるので、プログラム時間の高速化が可能である。またMiddleページの分布間隔が広がるため、データ誤りの確率が下がり、より正確なデータを読み出すことができる。それを利用して、Lowerページのみをプログラムが高速で信頼性の良い２値データとして使用することも可能である。
【０１５４】
なお第３の実施の形態ではUpperページのプログラムにおいてはデータ値“００１”，“１００”，“１１０”のしきい値分布については、Middleページプログラム後のデータ値“０１”，“００”，“１０”のしきい値分布とそれぞれ同じだったためプログラムを実施する必要がなかった。本実施の形態では、Upperページのプログラムにおいてはデータ値“００１”，“１００”，“１１０”のしきい値分布が、図２９（Ｃ）に示すしきい値分布となるようにプログラムを実施する。
【０１５５】
なお、ここでは、第３の実施の形態の変形例について説明したが、他の実施の形態についても同様にLowerページおよびMiddleページのプログラム後におけるしきい値分布の少なくとも一部について幅を広げまたMiddleページのしきい値分布の間隔を広げることができる。
【０１５６】
以上のように、本実施の形態では、LowerページおよびMiddleページのプログラム後におけるしきい値分布の少なくとも一部について幅を広げ、またMiddleページのしきい値分布の間隔を広げるようにした。これにより、プログラム時間を高速化することができる。また、Middleページの読み出し誤りを低減することができる。
【０１５７】
（第１１の実施の形態）
次に、第１１の実施の形態の記憶装置におけるしきい値分布について説明する。本実施の形態の記憶装置の構成および不揮発性メモリ２の構成は第１の実施の形態と同様である。本実施の形態のデータコーディングは第４の実施の形態と同様である。以下、第４の実施の形態と異なる点を説明する。
【０１５８】
例えば第４の実施の形態のデータコーディングでは、Middleページプログラム後のデータ値“１１”のしきい値分布とデータ値“０１”のしきい値分布とが、Upperページのプログラム後の最終分布での隣接分布になっている。したがって、Middleページでは使用される分布数が少ないにもかかわらず、隣接する分布の境界の読み出し電圧を用いる読み出しに関してはUpperページプログラム後と同等のデータ誤り確率となってしまう。特に消去分布（分布Ｅｒ）は、その後のプログラムによる電圧補正が無く、データ誤りの原因となるストレス（プログラムディスターブ，リードディスターブ，データリテンション）が蓄積する。このため、他のデータ分布よりデータ誤りの確率が一般的に大きく、消去分布と消去分布に隣接する分布とを用いると誤りの発生確率が高くなる。そこで本実施の形態では、消去分布と隣接する分布との分布間隔を他の分布間の間隔よりも広げることにより、Middleページのデータ誤りの確率の低減を図る。
【０１５９】
図３０は、本実施の形態における各ページのプログラム後のしきい値分布の一例を示す図である。図３０において、点線で示した分布１０３は、第４の実施の形態のしきい値分布を示している。図３０は、第４の実施の形態と同様のデータコーディングを行う場合に、第４の実施の形態のしきい値分布１０３に比べ、消去分布以外のデータ分布の中心電圧を高くすることにより、消去分布とその隣接分布との間隔を広げている。これにより、消去分布とその隣接分布と間の読み出し電圧を用いた読み出しにおけるデータ誤りの確率が下がり、より正確なデータを読み出すことができる。
【０１６０】
なお、ここでは、第４の実施の形態の変形例について説明したが、Middleページのプログラム後のデータ分布がUpperページプログラム後の最終分布での隣接分布となっている他の実施の形態（第１の実施の形態、第２の実施の形態、第６の実施の形態）についても同様に消去分布以外のデータ分布の中心電圧を高くすることができる。
【０１６１】
以上のように、Middleページのプログラム後のデータ分布がUpperページプログラム後の最終分布での隣接分布となっている場合に、消去分布以外のデータ分布の中心電圧を高くする、すなわち、消去分布とその隣接分布と間の間隔を他の分布間の間隔より広くするようにした。これにより、消去分布とその隣接分布と間の読み出し電圧を用いた読み出しにおけるデータ誤りの確率が下がり、より正確なデータを読み出すことができる。
【０１６２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１６３】
１  メモリコントローラ、２  不揮発性メモリ、１４  ＥＣＣ回路、２２  制御部、２３  ＮＡＮＤメモリセルアレイ。
【図１】
2020129428.tif 000003
【図２】
2020129428.tif 000004
【図３】
2020129428.tif 000005
【図４】
2020129428.tif 000006
【図５】
2020129428.tif 000007
【図６】
2020129428.tif 000008
【図７】
2020129428.tif 000009
【図８】
2020129428.tif 000010
【図９】
2020129428.tif 000011
【図１０】
2020129428.tif 000012
【図１１】
2020129428.tif 000013
【図１２】
2020129428.tif 000014
【図１３】
2020129428.tif 000015
【図１４】
2020129428.tif 000016
【図１５】
2020129428.tif 000017
【図１６】
2020129428.tif 000018
【図１７】
2020129428.tif 000019
【図１８】
2020129428.tif 000020
【図１９】
2020129428.tif 000021
【図２０】
2020129428.tif 000022
【図２１】
2020129428.tif 000023
【図２２】
2020129428.tif 000024
【図２３】
2020129428.tif 000025
【図２４】
2020129428.tif 000026
【図２５】
2020129428.tif 000027
【図２６】
2020129428.tif 000028
【図２７】
2020129428.tif 000029
【図２８】
2020129428.tif 000030
【図２９】
2020129428.tif 000031
【図３０】
2020129428.tif 000032