(57)【要約】【課題】レイテンシの増加を抑制できるメモリシステムを提供する。【解決手段】一実施形態の不揮発性メモリは、各々が複数のメモリセルを含む複数のグループを含むメモリセルアレイと、第１コマンドセットを受けると、第１リフレッシュ処理を実行するよう構成された制御回路と、を備える。第１リフレッシュ処理は、複数のグループのうちの第１グループにおける書込み済みの複数の第１メモリセルのうち、少なくとも１つの第２メモリセルを上書きすることを含む。制御回路は、第１リフレッシュ処理において、第２メモリセルが第１状態に属する第１電圧を使用して書込まれた場合、第１補正量を使用して複数の第１メモリセルから第２メモリセルを特定し、第２メモリセルが第２状態に属する第２電圧を使用して書込まれた場合、第２補正量を使用して複数の第１メモリセルから第２メモリセルを特定するように構成される。【選択図】図２２
2020038738.tif 000002
【特許請求の範囲】
【請求項１】
各々が複数のメモリセルを含む複数のグループを含むメモリセルアレイと、
第１コマンドセットを受けると、第１リフレッシュ処理を実行するよう構成された制御回路と、
を備え、
前記第１リフレッシュ処理は、前記複数のグループのうちの第１グループにおける書込み済みの複数の第１メモリセルのうち、少なくとも１つの第２メモリセルを上書きすることを含み、
前記制御回路は、前記第１リフレッシュ処理において、
前記第２メモリセルが第１状態に属する第１電圧を使用して書込まれた場合、第１補正量を使用して前記複数の第１メモリセルから前記第２メモリセルを特定し、
前記第２メモリセルが第２状態に属する第２電圧を使用して書込まれた場合、第２補正量を使用して前記複数の第１メモリセルから前記第２メモリセルを特定する
ように構成された、
不揮発性メモリ。
【請求項２】
前記第１コマンドセットは、前記第１補正量及び前記第２補正量に対応付けられたデータを含む第１情報を特定し、
前記制御回路は、前記第１情報を使用して、前記複数の第１メモリセルから前記第２メモリセルを特定するように構成された、
請求項１記載の不揮発性メモリ。
【請求項３】
前記第１コマンドセットは、
前記複数の第１メモリセルのアドレスを含む第２情報と、
前記複数の第１メモリセルに書込まれたデータを含む第３情報と、
を更に特定し、
前記制御回路は、
前記第２情報に基づいて、前記メモリセルアレイ内における前記複数の第１メモリセルの位置を特定し、
前記第３情報を使用して、前記第２メモリセルへの前記第１リフレッシュ処理を実行する
ように構成された、
請求項２記載の不揮発性メモリ。
【請求項４】
前記制御回路は、前記第１リフレッシュ処理において、
前記第２メモリセルが前記第１電圧を使用して書込まれた場合、第３補正量を使用して前記第２メモリセルを上書きし、
前記第２メモリセルが前記第２電圧を使用して書込まれた場合、第４補正量を使用して前記第２メモリセルを上書きする
ように構成された、
請求項３記載の不揮発性メモリ。
【請求項５】
前記第１コマンドセットは、前記第３補正量及び前記第４補正量に対応付けられたデータを含む第４情報を更に特定し、
前記制御回路は、前記第３情報及び前記第４情報を使用して、少なくとも１つの前記第２メモリセルへの前記第１リフレッシュ処理を実行するように構成された、
請求項４記載の不揮発性メモリ。
【請求項６】
前記第１コマンドセットは、前記第２メモリセルに印加されるプログラムパルスの数の上限値に対応付けられたデータを含む第５情報を更に特定し、
前記制御回路は、前記第１リフレッシュ処理において、前記第５情報に基づいて、前記第２メモリセルに前記上限値を超える回数のプログラムパルスが印加されることを禁止するように構成された、
請求項３記載の不揮発性メモリ。
【請求項７】
前記制御回路は、前記第１リフレッシュ処理において、
前記第１状態及び前記第２状態と異なる第３状態に属する第３電圧を使用して書込まれた少なくとも１つのメモリセルを第３メモリセルとして特定し、
前記複数の第１メモリセルのうち、前記特定された第３メモリセルを除く複数のメモリセルから、前記第２メモリセルを特定する
ように構成された、
請求項１記載の不揮発性メモリ。
【請求項８】
前記第１リフレッシュ処理は、前記複数の第１メモリセルのうち、少なくとも前記第３メモリセルを上書きしないことを含む、
請求項７記載の不揮発性メモリ。
【請求項９】
前記複数のグループの各々は、データの書込み単位である、請求項１記載の不揮発性メモリ。
【請求項１０】
各々が複数のグループを含む複数のブロックであって、前記複数のグループの各々が複数のメモリセルを含む複数のブロックと、制御回路と、を含む不揮発性メモリと、
第１リフレッシュ処理を実行するために前記不揮発性メモリに第１コマンドセットを出力するように構成されたメモリコントローラと、
を備え、
前記第１リフレッシュ処理は、第１ブロック内の第１グループにおける書込み済みの複数の第１メモリセルのうち、少なくとも１つの第２メモリセルを上書きすることを含み、
前記制御回路は、前記第１リフレッシュ処理において、
前記第２メモリセルが第１状態に属する第１電圧を使用して書込まれた場合、第１補正量を使用して前記複数の第１メモリセルから前記第２メモリセルを特定し、
前記第２メモリセルが第２状態に属する第２電圧を使用して書込まれた場合、第２補正量を使用して前記複数の第１メモリセルから前記第２メモリセルを特定する
ように構成された、
メモリシステム。
【請求項１１】
前記メモリコントローラは、
前記第１グループが第１条件を満たし、かつ第２条件を満たす場合、前記第１リフレッシュ処理を実行することを決定し、
前記第１グループが前記第１条件を満たし、かつ前記第２条件を満たさない場合、前記第１ブロックのデータを、第２ブロックに書き直すことを含む第２リフレッシュ処理を実行することを決定する
ように構成された、
請求項１０記載のメモリシステム。
【請求項１２】
前記第２ブロックは、データ消去済みのブロックである、
請求項１１記載のメモリシステム。
【請求項１３】
前記第２ブロックは、前記第１ブロックと異なる、
請求項１１記載のメモリシステム。
【請求項１４】
前記メモリコントローラは、
前記第１グループが第１条件を満たし、かつ第２条件を満たす場合、前記第１リフレッシュ処理を実行することを決定し、
前記第１グループが前記第１条件を満たし、かつ第２条件を満たさない場合、前記第１ブロックのデータを読み出した後、前記第１ブロックからデータを消去し、前記第１ブロックに前記読み出したデータを書込むことを含む第２リフレッシュ処理を実行することを決定する
ように構成された、
請求項１０記載のメモリシステム。
【請求項１５】
前記第１条件を満たすことは、前記第１グループの第１値が第１閾値を超えることを含み、
前記第２条件を満たすことは、前記第１グループの前記第１値が前記第１閾値より大きい第２閾値以下であることを含む、
請求項１１記載のメモリシステム。
【請求項１６】
前記第１条件を満たすことは、前記第１グループの第１値が第１閾値を超えることを含み、
前記第２条件を満たすことは、前記第１グループの第２値が第３閾値以下であることを含む、
請求項１１記載のメモリシステム。
【請求項１７】
前記第２値は、前記複数の第１メモリセルからのデータの読出しに際して、誤り訂正されるまでに実行された読出し処理の回数を含む、
請求項１６記載のメモリシステム。
【請求項１８】
前記第２値は、前記複数の第１メモリセルのうちの、所定の範囲内に閾値電圧を有するメモリセルの数を含む、
請求項１６記載のメモリシステム。
【請求項１９】
前記所定の範囲は、前記複数の第１メモリセルにより形成される閾値電圧の複数の状態のうち、前記閾値電圧に関して隣り合う２つの状態の各々のピーク間に含まれる範囲に設定される、
請求項１８記載のメモリシステム。
【請求項２０】
前記第２値は、前記複数の第１メモリセルから読み出されたデータのエラービット数、又は誤り訂正結果を含む、
請求項１６記載のメモリシステム。
【請求項２１】
前記エラービット数は、前記複数の第１メモリセルにより形成される閾値電圧の複数の状態のうち、前記閾値電圧に関して隣り合う２つの状態間において検出される、
請求項２０記載のメモリシステム。
【請求項２２】
前記第２値は、前記第１グループに対して実行された前記第１リフレッシュ処理の回数を含む、
請求項１６記載のメモリシステム。
【請求項２３】
前記複数のグループの各々は、データの書込み単位である、請求項１０記載のメモリシステム。
【請求項２４】
前記複数のグループの各々は、データの消去単位より小さい、請求項１０記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、不揮発性メモリ及びメモリシステムに関する。
【背景技術】
【０００２】
不揮発性メモリとしてのＮＡＮＤフラッシュメモリと、当該ＮＡＮＤフラッシュメモリを制御するメモリコントローラと、を備えるメモリシステムが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１０／１５７６７１号明細書
【特許文献２】国際公開第２０１６／８４４９７号
【特許文献３】米国特許出願公開第２０１４／５９３９６号明細書
【特許文献４】米国特許第９５０２１２９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
レイテンシの増加を抑制できるメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
実施形態の不揮発性メモリは、各々が複数のメモリセルを含む複数のグループを含むメモリセルアレイと、第１コマンドセットを受けると、第１リフレッシュ処理を実行するよう構成された制御回路と、を備える。上記第１リフレッシュ処理は、上記複数のグループのうちの第１グループにおける書込み済みの複数の第１メモリセルのうち、少なくとも１つの第２メモリセルを上書きすることを含む。上記制御回路は、上記第１リフレッシュ処理において、上記第２メモリセルが第１状態に属する第１電圧を使用して書込まれた場合、第１補正量を使用して上記複数の第１メモリセルから上記第２メモリセルを特定し、上記第２メモリセルが第２状態に属する第２電圧を使用して書込まれた場合、第２補正量を使用して上記複数の第１メモリセルから上記第２メモリセルを特定するように構成される。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係るメモリシステムの構成を説明するためのブロック図。
【図２】第１実施形態に係るメモリセルアレイの構成を説明するための回路図。
【図３】第１実施形態に係るメモリセルアレイの構成を説明するための断面図。
【図４】第１実施形態に係るメモリセルトランジスタの閾値分布を説明するための模式図。
【図５】第１実施形態に係るセンスアンプモジュールの構成を説明するためのブロック図。
【図６】第１実施形態に係るメモリコントローラに保持されるシフトテーブルを説明するための概念図。
【図７】第１実施形態に係るメモリコントローラに保持される履歴テーブルを説明するための概念図。
【図８】第１実施形態の変形例に係るメモリセルアレイの構成を説明するための断面図。
【図９】第１実施形態に係るメモリコントローラに保持されるフラグテーブルを説明するための概念図。
【図１０】第１実施形態に係るメモリシステムにおける読出し動作を説明するためのフローチャート。
【図１１】第１実施形態に係るメモリシステムにおける読出し動作の際に使用されるパラメタが保持されるレジスタ内の情報を説明するための概念図。
【図１２】第１実施形態に係るメモリシステムにおける読出し動作の際に使用されるパラメタが保持されるレジスタ内の情報を説明するための概念図。
【図１３】第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理の前後間の閾値分布の変化を説明するためのダイアグラム。
【図１４】第１実施形態に係るメモリシステムにおけるリフレッシュ処理及び上書きリフレッシュ処理の各々の予約可否の判定動作の一例を説明するためのフローチャート。
【図１５】第１実施形態に係るメモリシステムにおけるリフレッシュ処理及び上書きリフレッシュ処理の各々の予約可否の判定動作の一例を説明するためのフローチャート。
【図１６】第１実施形態に係るメモリシステムにおけるリフレッシュ処理及び上書きリフレッシュ処理の各々の予約可否の判定動作の一例を説明するためのフローチャート。
【図１７】第１実施形態に係るメモリシステムにおけるリフレッシュ処理及び上書きリフレッシュ処理の各々の予約可否の判定動作の一例を説明するためのフローチャート。
【図１８】第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理の概要を説明するためのフローチャート。
【図１９】第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理における期待データ取得のための読出し処理を説明するためのコマンドシーケンス。
【図２０】第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理のための設定処理を説明するためのコマンドシーケンス。
【図２１】第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理の際に設定されるフィーチャテーブルを説明するための概念図。
【図２２】第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理を説明するためのコマンドシーケンス。
【図２３】第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理におけるプリベリファイ処理を説明するためのタイミングチャート。
【図２４】第１実施形態に係るメモリシステムにおける上書きリフレッシュにおける上書き処理を説明するためのタイミングチャート。
【図２５】第２実施形態に係るメモリシステムにおける上書きリフレッシュ処理の際に設定されるフィーチャテーブルを説明するための概念図。
【図２６】第２実施形態に係るメモリシステムにおける上書きリフレッシュ処理の際に設定されるフィーチャテーブルを説明するための概念図。
【図２７】第２実施形態に係るメモリシステムにおける上書きリフレッシュ処理の一例を説明するためのタイミングチャート。
【図２８】第２実施形態に係るメモリシステムにおける上書きリフレッシュ処理の一例を説明するためのタイミングチャート。
【図２９】第３実施形態に係るメモリシステムにおける上書きリフレッシュ処理の概要を説明するためのフローチャート。
【図３０】第３実施形態に係るメモリシステムにおける上書きリフレッシュ処理におけるパラメタオーバロード処理を説明するためのコマンドシーケンス。
【図３１】第３実施形態に係るメモリシステムにおける上書きリフレッシュ処理のシーケンスの一例を説明するための概念図。
【図３２】第３実施形態に係るメモリシステムにおける上書きリフレッシュ処理の一例を説明するためのタイミングチャート。
【図３３】第３実施形態に係るメモリシステムにおける上書きリフレッシュ処理のシーケンスの一例を説明するための概念図。
【図３４】第３実施形態に係るメモリシステムにおける上書きリフレッシュ処理の一例を説明するためのタイミングチャート。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字を付して区別する。なお、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
【０００８】
１．第１実施形態
第１実施形態に係るメモリシステムについて説明する。以下では、不揮発性メモリとしてのＮＡＮＤフラッシュメモリと、当該ＮＡＮＤフラッシュメモリを備えたメモリシステムを例に挙げて説明する。
【０００９】
１．１  構成
第１実施形態に係るメモリシステムの構成について説明する。
【００１０】
１．１．１  メモリシステムの構成
まず、第１実施形態に係るメモリシステムを含む構成の概要について、図１を用いて説明する。
【００１１】
図１に示すように、メモリシステム１は、不揮発性メモリ（ＮＡＮＤフラッシュメモリ）１００とメモリコントローラ２００とを備えている。ＮＡＮＤフラッシュメモリ１００とメモリコントローラ２００とは、例えばそれらの組み合わせにより一つの半導体装置を構成しても良く、その例としてはＳＤＴＭカードのようなメモリカードや、ＳＳＤ（solid state drive）等が挙げられる。
【００１２】
ＮＡＮＤフラッシュメモリ１００は複数のメモリセルを備え、データを不揮発に記憶する。メモリコントローラ２００は、ＮＡＮＤバスによってＮＡＮＤフラッシュメモリ１００に接続され、ホストバスによってホスト機器３００に接続される。そしてメモリコントローラ２００は、ＮＡＮＤフラッシュメモリ１００を制御し、またホスト機器３００から受信した命令に応答して、ＮＡＮＤフラッシュメモリ１００にアクセスする。ホスト機器３００は、例えばデジタルカメラやパーソナルコンピュータ等であり、ホストバスは、例えばＳＤＴＭインタフェース、ＳＡＳ（Serial attached SCSI(small computer system interface)）、ＳＡＴＡ（Serial ATA(advanced technology attachment)）、ＰＣＩｅ（Peripheral component interconnect express）、又はＮＶＭｅ（Non‐volatile memory express）に従ったバスである。ＮＡＮＤバスは、ＮＡＮＤインタフェースに従った信号の送受信を行う。
【００１３】
ＮＡＮＤインタフェースの信号の具体例は、チップイネーブル信号ＣＥｎ、アドレスラッチイネーブル信号ＡＬＥ、コマンドラッチイネーブル信号ＣＬＥ、ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、レディ・ビジー信号ＲＢｎ、及び入出力信号ＤＱである。
【００１４】
信号ＣＥｎは、ＮＡＮＤフラッシュメモリ１００をイネーブルにするための信号であり、“Ｌ（Low）”レベルでアサートされる。信号ＣＬＥ及びＡＬＥは、ＮＡＮＤフラッシュメモリ１００への入力信号ＤＱがそれぞれコマンド及びアドレスであることをＮＡＮＤフラッシュメモリ１００に通知する信号である。信号ＷＥｎは“Ｌ”レベルでアサートされ、入力信号ＤＱをＮＡＮＤフラッシュメモリ１００に取り込ませるための信号である。信号ＲＥｎも“Ｌ”レベルでアサートされ、ＮＡＮＤフラッシュメモリ１００から出力信号ＤＱを読み出すための信号である。レディ・ビジー信号ＲＢｎは、ＮＡＮＤフラッシュメモリ１００がレディ状態（メモリコントローラ２００からの命令を受信出来る状態）であるか、それともビジー状態（メモリコントローラ２００からの命令を受信出来ない状態）であるかを示す信号であり、“Ｌ”レベルがビジー状態を示す。入出力信号ＤＱは、例えば８ビットの信号である。そして入出力信号ＤＱは、ＮＡＮＤフラッシュメモリ１００とメモリコントローラ２００との間で送受信されるデータの実体であり、コマンドＣＭＤ、アドレスＡＤＤ、並びに書き込みデータ及び読出しデータ等のデータＤＡＴである。
【００１５】
１．１．２  メモリコントローラの構成
引き続き図１を用いて、メモリコントローラ２００の構成の詳細について説明する。
【００１６】
メモリコントローラ２００は、例えば、ＳｏＣ（System on a chip）であり、ホストインタフェース回路２１０、メモリ（ＲＡＭ）２２０、プロセッサ（ＣＰＵ）２３０、バッファメモリ２４０、ＮＡＮＤインタフェース回路２５０、及びＥＣＣ回路２６０を備えている。なお、以下に説明されるメモリコントローラ２００の各部２１０−２６０の機能は、ハードウェア構成、又はハードウェア資源とファームウェアとの組合せ構成のいずれでも実現可能である。
【００１７】
ホストインタフェース回路２１０は、ホストバスを介してホスト機器３００と接続され、ホスト機器３００から受信した命令及びデータを、それぞれプロセッサ２３０及びバッファメモリ２４０に転送する。またプロセッサ２３０の命令に応答して、バッファメモリ２４０内のデータをホスト機器３００へ転送する。
【００１８】
メモリ２２０は、例えばＤＲＡＭ等の半導体メモリであり、プロセッサ２３０の作業領域として使用される。そしてメモリ２２０は、ＮＡＮＤフラッシュメモリ１００を管理するためのファームウェアや、シフトテーブル、履歴テーブル、及びフラグテーブル等の、各種の管理テーブル等を保持する。
【００１９】
プロセッサ２３０は、メモリコントローラ２００全体の動作を制御する。例えば、プロセッサ２３０は、ホスト機器３００から書き込み命令を受信した際には、それに応答して、ＮＡＮＤインタフェース回路２５０に対して書き込み命令を発行する。読出し処理及び消去処理の際も同様である。またプロセッサ２３０は、ＮＡＮＤフラッシュメモリ１００を管理するための様々な処理を実行する。例えば、プロセッサ２３０は、ガベージコレクション（コンパクション）処理、リフレッシュ処理、ウェアレベリング処理等のメモリシステム１内における内部処理の一環として、消去処理を含む処理を実行し得る。
【００２０】
バッファメモリ２４０は、書込みデータや読出しデータを一時的に保持する。
【００２１】
ＮＡＮＤインタフェース回路２５０は、ＮＡＮＤバスを介してＮＡＮＤフラッシュメモリ１００と接続され、ＮＡＮＤフラッシュメモリ１００との通信を司る。そして、プロセッサ２３０から受信した命令に基づき、信号ＣＥｎ、ＡＬＥ、ＣＬＥ、ＷＥｎ、及びＲＥｎをＮＡＮＤフラッシュメモリ１００へ出力する。また書込み処理時には、プロセッサ２３０で発行された書込みコマンド、及びバッファメモリ２４０内の書込みデータを、入出力信号ＤＱとしてＮＡＮＤフラッシュメモリ１００へ転送する。更に読出し処理時には、プロセッサ２３０で発行された読出しコマンドを、入出力信号ＤＱとしてＮＡＮＤフラッシュメモリ１００へ転送し、更にＮＡＮＤフラッシュメモリ１００から読み出されたデータを入出力信号ＤＱとして受信し、これをバッファメモリ２４０へ転送する。
【００２２】
ＥＣＣ回路２６０は、ＮＡＮＤフラッシュメモリ１００に記憶されるデータに関する誤り検出及び誤り訂正処理を行う。すなわちＥＣＣ回路２６０は、データの書き込み時には誤り訂正符号を生成して、これを書込みデータに付与し、データの読出し処理時にはこれを復号し、誤りビットの有無を検出する。そして誤りビットが検出された際には、その誤りビットの位置を特定し、誤りを訂正する。誤り訂正の方法は、例えば、硬判定復号（Hard bit decoding）及び軟判定復号（Soft bit decoding）を含む。硬判定復号に用いられる硬判定復号符号としては、例えば、ＢＣＨ（Bose‐Chaudhuri‐Hocquenghem）符号やＲＳ（Reed‐Solomon）符号等を用いることができ、軟判定復号に用いられる軟判定復号符号としては、例えば、ＬＤＰＣ（Low Density Parity Check）符号等を用いることができる。
【００２３】
１．１．３  ＮＡＮＤフラッシュメモリの構成
次に、ＮＡＮＤフラッシュメモリ１００の構成について説明する。図１に示すようにＮＡＮＤフラッシュメモリ１００は、メモリセルアレイ１１０、ロウデコーダ１２０、ドライバ１３０、センスアンプモジュール１４０、アドレスレジスタ１５０、コマンドレジスタ１６０、及びシーケンサ１７０を備える。
【００２４】
メモリセルアレイ１１０は、ロウ及びカラムに対応付けられた複数の不揮発性のメモリセルを含む複数のブロックＢＬＫを備えている。図１では一例として４つのブロックＢＬＫ０〜ＢＬＫ３が図示されている。そしてメモリセルアレイ１１０は、メモリコントローラ２００から与えられたデータを記憶する。
【００２５】
ロウデコーダ１２０は、アドレスレジスタ１５０内のブロックアドレスＢＡに基づいてブロックＢＬＫ０〜ＢＬＫ３のいずれかを選択し、更に選択したブロックＢＬＫにおいてワード線を選択する。
【００２６】
ドライバ１３０は、アドレスレジスタ１５０内のページアドレスＰＡに基づいて、選択されたブロックＢＬＫに対して、ロウデコーダ１２０を介して電圧を供給する。
【００２７】
センスアンプモジュール１４０は、データの読出し時には、メモリセルアレイ１１０内のメモリセルトランジスタの閾値電圧をセンスし、データを読み出す。そして、このデータＤＡＴをメモリコントローラ２００に出力する。データの書き込み時には、メモリコントローラ２００から受信した書き込みデータＤＡＴを、メモリセルアレイ１１０に転送する。
【００２８】
アドレスレジスタ１５０は、メモリコントローラ２００から受信したアドレスＡＤＤを保持する。このアドレスＡＤＤには、上述のブロックアドレスＢＡとページアドレスＰＡとが含まれる。コマンドレジスタ１６０は、メモリコントローラ２００から受信したコマンドＣＭＤを保持する。
【００２９】
シーケンサ１７０は、コマンドレジスタ１６０に保持されたコマンドＣＭＤに基づき、ＮＡＮＤフラッシュメモリ１００全体の動作を制御する。
【００３０】
次に、上記ブロックＢＬＫの構成について、図２を用いて説明する。図２は、いずれかのブロックＢＬＫの回路図である。
【００３１】
図２に示すように、ブロックＢＬＫは、例えば４つのストリングユニットＳＵ（ＳＵ０〜ＳＵ３）を含む。そして各々のストリングユニットＳＵは、複数のＮＡＮＤストリングＮＳを含む。メモリセルアレイ１１０内のブロック数及びブロックＢＬＫ内のストリングユニット数は任意である。
【００３２】
ＮＡＮＤストリングＮＳの各々は、例えば６４個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ６３）並びに選択トランジスタＳＴ１及びＳＴ２を含んでいる。メモリセルトランジスタＭＴは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そしてメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に直列接続されている。
【００３３】
ストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ１のゲートは、それぞれセレクトゲート線ＳＧＤ０〜ＳＧＤ３に接続される。これに対してストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ２のゲートは、例えばセレクトゲート線ＳＧＳに共通接続される。あるいは、ストリングユニット毎に異なるセレクトゲート線ＳＧＳ０〜ＳＧＳ３に接続されても良い。また、同一のブロックＢＬＫ内にあるメモリセルトランジスタＭＴ０〜ＭＴ６３の制御ゲートは、それぞれワード線ＷＬ０〜ＷＬ６３に共通接続される。
【００３４】
また、メモリセルアレイ１１０内において同一列にあるＮＡＮＤストリングＮＳの選択トランジスタＳＴ１のドレインは、ビット線ＢＬ（ＢＬ０〜ＢＬ（ｍ−１）、但しｍは２以上の自然数）に共通接続される。すなわちビット線ＢＬは、複数のブロックＢＬＫ間で同一列にあるＮＡＮＤストリングＮＳを共通に接続する。更に、複数の選択トランジスタＳＴ２のソースは、ソース線ＳＬに共通に接続されている。
【００３５】
つまりストリングユニットＳＵは、異なるビット線ＢＬに接続され、かつ同一のセレクトゲート線ＳＧＤに接続されたＮＡＮＤストリングＮＳの集合体である。ストリングユニットＳＵのうち、同一のワード線ＷＬに共通接続されたメモリセルトランジスタＭＴの集合体を、セルユニットＣＵ（又はメモリグループ）とも言う。またブロックＢＬＫは、ワード線ＷＬを共通にする複数のストリングユニットＳＵの集合体である。そしてメモリセルアレイ１１０は、ビット線ＢＬを共通にする複数のブロックＢＬＫの集合体である。
【００３６】
図３は、ブロックＢＬＫの一部領域の断面図である。図３に示すように、ｐ型ウェル領域１０上に、複数のＮＡＮＤストリングＮＳが形成されている。すなわち、ｐ型ウェル領域１０上には、セレクトゲート線ＳＧＳとして機能する例えば４層の配線層１１、ワード線ＷＬ０〜ＷＬ６３として機能する６４層の配線層１２、及びセレクトゲート線ＳＧＤとして機能する例えば４層の配線層１３が、順次積層されている。積層された配線層間には、図示せぬ絶縁膜が形成されている。
【００３７】
そして、これらの配線層１３、１２、１１を通過してｐ型ウェル領域１０に達するピラー状の導電体１４が形成されている。導電体１４の側面には、ゲート絶縁膜１５、電荷蓄積層（絶縁膜または導電膜）１６、及びブロック絶縁膜１７が順次形成され、これらによってメモリセルトランジスタＭＴ、並びに選択トランジスタＳＴ１及びＳＴ２が形成されている。導電体１４は、ＮＡＮＤストリングＮＳの電流経路として機能し、各トランジスタのチャネルが形成される領域となる。そして導電体１４の上端は、ビット線ＢＬとして機能する金属配線層１８に接続される。
【００３８】
ｐ型ウェル領域１０の表面領域内には、ｎ＋型不純物拡散層１９が形成されている。ｎ＋型不純物拡散層１９上にはコンタクトプラグ２０が形成され、コンタクトプラグ２０は、ソース線ＳＬとして機能する金属配線層２１に接続される。更に、ｐ型ウェル領域１０の表面領域内には、ｐ＋型不純物拡散層２２が形成されている。ｐ＋型不純物拡散層２２上にはコンタクトプラグ２３が形成され、コンタクトプラグ２３は、ウェル配線ＣＰＷＥＬＬとして機能する金属配線層２４に接続される。ウェル配線ＣＰＷＥＬＬは、ｐ型ウェル領域１０を介して導電体１４に電位を印加するための配線である。
【００３９】
以上の構成が、図３を記載した紙面の奥行き方向に複数配列されており、奥行き方向に並ぶ複数のＮＡＮＤストリングＮＳの集合によってストリングユニットＳＵが形成される。
【００４０】
本例では、１つのメモリセルトランジスタＭＴが例えば３ビットデータを保持可能である。この３ビットデータを、下位ビットからそれぞれ下位(Lower)ビット、中位(Middle)ビット、及び上位(Upper)ビットと呼ぶことにする。そして、同一のセルユニットＣＵに属するメモリセルの保持する下位ビットの集合を下位ページと呼び、中位ビットの集合を中位ページと呼び、上位ビットの集合を上位ページと呼ぶ。つまり、１つのストリングユニットＳＵ内における１本のワード線ＷＬ（１つのセルユニットＣＵ）には３ページが割当てられ、６４本のワード線ＷＬを含むストリングユニットＳＵは１９２ページ分の容量を有することになる。あるいは言い換えるならば、「ページ」とは、セルユニットＣＵに形成されるメモリ空間の一部、と定義することも出来る。データの書き込み及び読出しは、このページ毎又はセルユニットＣＵ毎に行っても良い。一方、データの消去は、ブロックＢＬＫ単位に行われる。
【００４１】
図４は、各メモリセルトランジスタＭＴの取り得るデータ、閾値電圧分布、並びに読出し時及び書込み時に用いる電圧について示したダイアグラムである。
【００４２】
上述の通り、メモリセルトランジスタＭＴは、３ビットデータを保持可能である。すなわち、メモリセルトランジスタＭＴは、閾値電圧に応じて８個の状態を取ることが出来る。この８個の状態を、閾値電圧の低いものから順に、“Ｅｒ”状態、“Ａ”状態、“Ｂ”状態、“Ｃ”状態、…、“Ｇ”状態と呼ぶことにする。
【００４３】
“Ｅｒ”状態のメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＡ未満であり、データの消去状態に相当する。“Ａ”状態のメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＡ以上であり且つ電圧ＶＢ（＞ＶＡ）未満である。“Ｂ”状態のメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＢ以上であり且つ電圧ＶＣ（＞ＶＢ）未満である。“Ｃ”状態のメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＣ以上であり且つ電圧ＶＤ（＞ＶＣ）未満である。“Ｄ”状態のメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＤ以上であり且つ電圧ＶＥ（＞ＶＤ）未満である。“Ｅ”状態のメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＥ以上であり且つ電圧ＶＦ（＞ＶＥ）未満である。“Ｆ”状態のメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＦ以上であり且つ電圧ＶＧ（＞ＶＦ）未満である。“Ｇ”状態のメモリセルトランジスタＭＴの閾値電圧は、電圧ＶＧ以上であり且つ電圧ＶＲＥＡＤ未満である。このように分布する８個の状態のうちで、“Ｇ”状態が、閾値電圧の最も高い状態である。電圧ＶＡ〜ＶＧは、総称して電圧ＶＣＧＲとも言う。電圧ＶＲＥＡＤは、例えば、読出し動作時において読出し対象でないワード線ＷＬに印加される電圧であり、保持データにかかわらずメモリセルトランジスタＭＴをオンさせる電圧であり、電圧ＶＰＧＭより小さい。電圧ＶＰＧＭは、書込み動作時において書込み対象のワード線ＷＬに印加される電圧の総称である。
【００４４】
なお、書込み直後において、メモリセルトランジスタＭＴの閾値電圧は低電圧側にシフトしやすい。このため、書込み動作時（ベリファイ動作時）において、“Ａ”状態〜“Ｇ”状態の各々のメモリセルトランジスタＭＴの閾値電圧はそれぞれ、電圧ＶＡ〜ＶＧよりも大きい電圧Ａｖｆｙ〜Ｇｖｆｙ以上となる様に設定され得る。
【００４５】
また上記閾値電圧分布は、前述の下位ビット、中位ビット、及び上位ビットからなる３ビット（３ページ）データを書き込むことで実現される。すなわち、上記“Ｅｒ”状態から“Ｇ”状態と、下位ビット、中位ビット、及び上位ビットとの関係は、次の通りである。
“Ｅｒ”状態：“１１１”（“上位／中位／下位”の順で表記）  
“Ａ”状態：“１１０”  
“Ｂ”状態：“１００”  
“Ｃ”状態：“０００”  
“Ｄ”状態：“０１０”  
“Ｅ”状態：“０１１”  
“Ｆ”状態：“００１”  
“Ｇ”状態：“１０１”  
このように、閾値電圧分布において隣り合う２つの状態に対応するデータ間では、３ビットのうちの１ビットのみが変化する。
【００４６】
従って、下位ビットを読み出す際には、下位ビットの値（“０”ｏｒ“１”）が変化する境界に相当する電圧を用いれば良く、このことは中位ビット及び上位ビットでも同様である。
【００４７】
すなわち、図４に示すように、下位ページ読出しは、“Ｅｒ”状態と“Ａ”状態とを区別する電圧ＶＡ、及び“Ｄ”状態と“Ｅ”状態とを区別する電圧ＶＥを読出しレベルとして用いる。電圧ＶＡ及びＶＥを用いた読出し動作を、それぞれ読出し動作ＡＲ及びＥＲと呼ぶ。
【００４８】
読出し動作ＡＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＡ未満か否かを判定する。つまり、読出し動作ＡＲにより、消去状態のメモリセルトランジスタＭＴが特定される。読出し動作ＥＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＥ未満か否かを判定する。
【００４９】
中位ページ読出しは、“Ａ”状態と“Ｂ”状態とを区別する電圧ＶＢ、“Ｃ”状態と“Ｄ”状態とを区別する電圧ＶＤ、及び“Ｅ”状態と“Ｆ”状態との間の電圧ＶＦを読出しレベルとして用いる。電圧ＶＢ、ＶＤ、及びＶＦを用いた読出し動作を、それぞれ読出し動作ＢＲ、ＤＲ、及びＦＲと呼ぶ。
【００５０】
読出し動作ＢＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＢ未満か否かを判定する。読出し動作ＤＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＤ未満か否かを判定する。読出し動作ＦＲは、メモリセルトランジスタＭＴの閾値電圧が電圧ＶＦ未満か否かを判定する。
【００５１】
そして上位ページ読出しは、“Ｂ”状態と“Ｃ”状態とを区別する電圧ＶＣ、及び“Ｆ”状態と“Ｇ”状態とを区別する電圧ＶＧを読出しレベルとして用いる。電圧ＶＣ及びＶＧを用いた読出し動作を、それぞれ読出し動作ＣＲ及びＧＲと呼ぶ。
【００５２】
また、データの消去は、ブロックＢＬＫ単位、又はブロックＢＬＫよりも小さい単位で行うことが出来る。消去方法に関しては、例えば“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE”という2011年9月18日に出願された米国特許出願13/235,389号に記載されている。また、“NON‐VOLATILE SEMICONDUCTOR STORAGE DEVICE”という2010年1月27日に出願された米国特許出願12/694,690号に記載されている。更に、“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE AND DATA ERASE METHOD THEREOF”という2012年5月30日に出願された米国特許出願13/483,610号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００５３】
更に、メモリセルアレイ１１０の構成についてはその他の構成であっても良い。すなわちメモリセルアレイ１１０の構成については、例えば、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月19日に出願された米国特許出願12/407,403号に記載されている。また、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月18日に出願された米国特許出願12/406,524号、“NON‐VOLATILE SEMICONDUCTOR STORAGE DEVICE AND METHOD OF MANUFACTURING THE SAME”という2010年3月25日に出願された米国特許出願12/679,991号、及び“SEMICONDUCTOR MEMORY AND METHOD FOR MANUFACTURING SAME”という2009年3月23日に出願された米国特許出願12/532,030号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００５４】
１．１．４  センスアンプモジュールの構成について
次に、第１実施形態に係る不揮発性メモリのセンスアンプモジュールの構成について説明する。図５は、第１実施形態に係る不揮発性メモリのセンスアンプモジュールの構成の一例を説明するための回路図である。図５に示すように、センスアンプモジュール１４０は、ビット線ＢＬ毎に設けられたセンスアンプユニットＳＡＵ（ＳＡＵ０、ＳＡＵ１、…、ＳＡＵ（ｍ−１））を備えている。
【００５５】
センスアンプユニットＳＡＵの各々は、センスアンプＳＡ、演算部ＯＰ、及び例えば５つのラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＳＤＬ、並びにＸＤＬを備えている。
【００５６】
センスアンプＳＡは、対応するビット線ＢＬの電圧又は電流をセンスすることでデータを読み出し、又書込みデータに応じてビット線ＢＬに電圧を印加する。すなわちセンスアンプＳＡは、ビット線ＢＬを直接的に制御するモジュールである。そしてセンスアンプＳＡには、読出し時には、例えばシーケンサ１７０によってストローブ信号ＳＴＢが与えられる。センスアンプＳＡは、ストローブ信号ＳＴＢがアサートされるタイミングで読出しデータを確定させる。そして、内部に有するラッチ回路（図示せず）にこのデータを保持し、更にラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＳＤＬ、及びＸＤＬのいずれかに転送する。
【００５７】
ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＳＤＬは、読出しデータ及び書込みデータを一時的に保持する。演算部ＯＰは、センスアンプＳＡ、ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＳＤＬ、及びＸＤＬに保持されているデータに対して、否定（ＮＯＴ）演算、論理和（ＯＲ）演算、論理積（ＡＮＤ）演算、否定論理積（ＮＡＮＤ）演算、否定論理和（ＮＯＲ）演算、排他的論理和（ＸＯＲ）演算等、種々の論理演算を行う。
【００５８】
これらのセンスアンプＳＡ、ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＳＤＬ、並びに演算部ＯＰは、互いにデータを送受信可能なようにバスによって接続されている。そしてこのバスは、更にラッチ回路ＸＤＬに接続されている。
【００５９】
センスアンプモジュール１４０におけるデータの入出力は、ラッチ回路ＸＤＬを介して行われる。すなわち、メモリコントローラ２００から受信したデータは、ラッチ回路ＸＤＬを介して、ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＳＤＬ、又はセンスアンプＳＡに転送される。また、ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、ＳＤＬ又はセンスアンプＳＡのデータは、ラッチ回路ＸＤＬを介して、信号ＤＱ＜７：０＞のいずれかの信号としてメモリコントローラ２００へ送信される。ラッチ回路ＸＤＬは、ＮＡＮＤフラッシュメモリ１００のキャッシュメモリとして機能する。したがって、ラッチ回路ＡＤＬ、ＢＤＬ、ＣＤＬ、及びＳＤＬが使用中であったとしても、ラッチ回路ＸＤＬが空いていれば、ＮＡＮＤフラッシュメモリ１００はレディ状態となることができる。
【００６０】
なお、図５の例では、ビット線ＢＬ０は、信号ＤＱ＜０＞を通信する信号線に接続され、ビット線ＢＬ１は、信号ＤＱ＜１＞を通信する信号線に接続され、ビット線ＢＬ（ｍ−１）に接続されたラッチ回路ＸＤＬは、信号ＤＱ＜７＞を通信する信号線に接続されている。このように、ビット線ＢＬとメモリコントローラ２００との間を接続する信号線は、信号ＤＱ＜７：０＞のいずれかに対応している。すなわち、或るビット線ＢＬに接続されたＮＡＮＤストリングＮＳは、信号ＤＱ＜７：０＞のいずれかに対応付けられる。
【００６１】
１．１．４  シフトテーブルについて
次に、シフトテーブルについて説明する。上述の通り、メモリコントローラ２００は、例えば、メモリ２２０においてシフトテーブルを保持する。シフトテーブルの概念について、図６を用いて説明する。図６は、シフトテーブルの一例を示す概念図である。
【００６２】
図６に示すように、シフトテーブルは、複数（図６の例では、５個）のエントリを有する。各エントリには、“０”〜“５”のシフトインデックスが順番に割当てられている。そして、各エントリは、読出し動作ＡＲ、ＢＲ、ＣＲ、…、及びＧＲにおいて読出し対象のワード線ＷＬに印加される読出し電圧のシフト量を示す情報が保持される。
【００６３】
このシフト量について、以下に説明する。図４で説明した“Ｅｒ”状態、“Ａ”状態、…、及び“Ｇ”状態に対応する閾値分布は、互いに分離している。したがって、電圧ＶＡ、ＶＢ、…、及びＶＧによって、各状態を区別することができる。しかし、データを書き込んだ後に時間が経過すると、隣接セルとの干渉等により閾値分布が低電圧側又は高電圧側にシフトする場合がある（これを「データリテンションエラー」と呼ぶ）。具体的には、“Ａ”状態〜“Ｇ”状態に対応する閾値分布は、電荷蓄積層１６に蓄積された電荷が時間の経過と共にリークしていくことにより、低電圧側にシフトする場合がある。“Ｅｒ”状態に対応する閾値分布は、隣り合うメモリセルトランジスタＭＴからリークした電荷が電荷蓄積層１６に蓄積されることにより、時間の経過と共に高電圧にシフトする場合がある。また、閾値分布は、書込み処理や、読出し処理によっても変動し得る（これを、それぞれ「プログラムディスターブ」、及び「リードディスターブ」と呼ぶ）。このような種々の変動要因（以下、単に「変動要因」とも呼ぶ）に伴う閾値分布のシフト量は、書込み完了からの経過時間が長いほど大きく、また読出し回数の多いブロックＢＬＫほど大きい。そして、各状態の閾値分布の分布幅が拡大し、隣り合う閾値分布が重なってしまうことがある。
【００６４】
このように、閾値分布が変動すると、上記の電圧ＶＡ、ＶＢ、…、及びＶＧではデータを正しく読み出せないことがある。すなわち、読出しデータに含まれるエラービット数が、ＥＣＣ回路２６０の訂正可能ビット数を超え、メモリコントローラ２００は、ＮＡＮＤフラッシュメモリ１００からの正しいデータの読出しに失敗する。
【００６５】
このような場合に、メモリコントローラ２００は、読出し電圧を通常リード処理における読出し電圧ＶＡ、ＶＢ、…、及びＶＧ（以降の説明では、これを「デフォルトの読出し電圧」とも呼ぶ）からシフトさせて、再度データの読出しを試みる。これをシフトリードと呼ぶ。この際のデフォルトの読出し電圧からのシフト量ΔＶを示す情報を保持しているのが、図６に示すシフトテーブルである。
【００６６】
本例におけるシフトテーブルでは、シフトインデックス＝０の状態が、デフォルトの読出し電圧に対応する。そして、読出し動作ＡＲ、ＢＲ、…、及びＧＲのそれぞれについて、シフト量ΔＶＡｊ、ΔＶＢｊ、…、及びΔＶＧｊが用意されている（ｊは、シフトインデックス、すなわち、１〜５のいずれかの自然数であり、これらを区別しない場合にはΔＶと総称する）。あるシフトインデックスｊに相当するシフト量ΔＶＡｊ、ΔＶＢｊ、…、及びΔＶＧｊは、全てが異なる値である場合であってもよいし、一部が同じ値を有する場合であってもよいし、全てが同じ値を有する場合であってもよい。これらのシフト量ΔＶは、例えばメモリコントローラ２００によって適宜、適切な値に設定される。
【００６７】
また、本例におけるシフトテーブルでは、シフトインデックスの値が小さいものほど、変動要因の影響が小さい。すなわち、シフトインデックス＝１に対応するシフト量ΔＶ（すなわちシフト量ΔＶＡ１、ΔＶＢ１、…、及びΔＶＧ１）は、シフトインデックス＝０の状態の次に変動要因の影響が小さい場合に対応している。これに対して、シフトインデックス＝５に対応するシフト量ΔＶ（すなわちシフト量ΔＶＡ５、ΔＶＢ５、…、及びΔＶＧ５）は、変動要因の影響が最も大きい場合に対応している。
【００６８】
なお、変動要因から受ける影響の程度は、閾値分布が“Ｅｒ”状態〜“Ｇ”状態のいずれにあるかによって異なる場合がある。例えば、本実施形態で着目している、閾値分布が低電圧側にシフトする変動要因の場合、その影響は閾値電圧の高い状態ほど大きくなり得る。つまり、変動要因は、読出し動作ＧＲやＦＲに比較的大きな影響を与え得る。他方で、読出し動作ＣＲやＤＲではそれほど大きくない、という傾向を有し得る。したがって、例えば下記の関係が成り立ち得る。
【００６９】
｜ΔＶＧ５｜＞｜ΔＶＧ１｜
｜ΔＶＧ５｜＞｜ΔＶＣ５｜、｜ΔＶＤ５｜
なお、この関係は一例に過ぎず、またこのような場合に限定されるものではない。また、絶対値で表記している理由は、変動要因による影響が負電圧側への閾値変動だとすれば、シフト量ΔＶは負の値を有するからである。もちろん、各シフト量ΔＶは、負の値を有してもよいし、正の値を有してもよく、シフトリード処理に適切な値であればよい。
【００７０】
以上のように構成されたシフトテーブルは、例えば、ＮＡＮＤフラッシュメモリ１００のいずれかのブロックＢＬＫに保持される。そして、例えば、電源投入直後等に、メモリコントローラ２００によって読み出され、メモリ２２０等に保持される。
【００７１】
１．１．５  履歴テーブル
メモリコントローラ２００は、更に履歴テーブルを保持する。履歴テーブルについて、図７を用いて説明する。図７は、履歴テーブルの一例を示す概念図である。
【００７２】
図７に図示するように、履歴テーブルは、ブロックＢＬＫにおけるワード線ＷＬ０〜ＷＬ６３と、これらのワード線ＷＬ０〜ＷＬ６３に適用される、シフトテーブルにおけるシフトインデックスとの関係を保持する。
【００７３】
履歴テーブルは、上記ブロックＢＬＫの各ワード線ＷＬに適用すべき、読出し電圧のシフト量ΔＶに関する情報を、例えばシフトインデックスを用いて保持する。メモリコントローラ２００は、この履歴テーブルを参照することにより、読出し対象のワード線ＷＬに印加すべき読出し電圧を決定する。
【００７４】
図７の例では、ブロックＢＬＫ０のワード線ＷＬ０には、シフトインデックス＝１が割当てられている。これは、ブロックＢＬＫ０のワード線ＷＬ０に読出し電圧を印加する際には、デフォルトの値に対して、図６に示すシフトテーブルにおけるシフトインデックス＝１に対応するシフト量ΔＶ（ΔＶＡ１、ΔＶＢ１、…、及びΔＶＧ１）が適用されることを意味する。また、ブロックＢＬＫ０のワード線ＷＬ１〜ＷＬ７には、シフトインデックス＝０が共通して割当てられている。これは、ブロックＢＬＫ０のワード線ＷＬ１〜ＷＬ７に読出し電圧を印加する際には、デフォルトの値が適用されることを意味する。このように、ワード線ＷＬに割当てられるシフトインデックスは、１つのワード線ＷＬに対して割当てられてもよく、一群のワード線ＷＬに対して共通に割当てられてもよい。
【００７５】
履歴テーブルで指定されるシフト量ΔＶは、例えば、セットフィーチャコマンド等を用いて、メモリコントローラ２００によりＮＡＮＤフラッシュメモリ１００に設定される。よって、読出し動作の度に毎回シフト量ΔＶを指定する必要はない。しかし、履歴テーブルにおいてシフトインデックスが更新された際には、メモリコントローラ２００は、ＮＡＮＤフラッシュメモリ１００に対してシフト量ΔＶを設定し直す。なお、セットフィーチャコマンドは、ＮＡＮＤフラッシュメモリ１００に印加される電圧やタイミング等、種々の設定を変更可能なコマンドである。
【００７６】
変動要因から受ける影響の程度は、メモリセルトランジスタＭＴがいずれのワード線ＷＬに対応するかによって異なる場合がある。例えば、変動要因の影響は、ＮＡＮＤストリングＮＳの端部に位置するメモリセルトランジスタＭＴに対して特に大きい。つまり、変動要因は、ワード線ＷＬ０及びＷＬ６３、並びにこれらに比較的近い数本のワード線ＷＬ（以下、説明の便宜上、これらを単に「端部のワード線ＷＬ」とも言う。）に対応するメモリセルトランジスタＭＴに対して比較的大きな影響を与える。他方で、上記したワード線ＷＬ以外のワード線ＷＬに対応するメモリセルトランジスタＭＴに対しては、それほど大きくない、という傾向にある。したがって、大半の期間において、例えば下記の関係が成り立ち得る。
【００７７】
（ＮＡＮＤストリングＮＳの端部に位置するワード線ＷＬのシフトインデックス）≧（その他のワード線ＷＬのシフトインデックス）
なお、この関係は一例に過ぎず、またこのような場合に限定されるものではない。例えば、図８に示すように、ＮＡＮＤストリングＮＳを構成する下段部ＬＮＳと上段部ＨＮＳとが、接合部ＪＴを介して導電体１１〜１３の積層方向に接合されている場合、ワード線ＷＬの端部には、当該接合部ＪＴ近傍のワード線ＷＬも含まれ得る。すなわち、図９の例では、端部のワード線ＷＬには、ワード線ＷＬ０及びＷＬ６３に加え、ワード線ＷＬ３１及びＷＬ３２、並びにこれらに比較的近い数本のワード線ＷＬが含まれ得る。
【００７８】
以上のように構成された履歴テーブルが、メモリ２２０等に保持される。履歴テーブルは、メモリシステム１の電源断時には、例えば、ＮＡＮＤフラッシュメモリ１００や、図示しないＥＥＰＲＯＭ（登録商標）（Electrically erasable programmable ROM）等の不揮発メモリに保持されてもよく、電源投入直後等には、メモリコントローラ２００によって読み出されてもよい。
【００７９】
１．１．６  フラグテーブルについて
メモリコントローラ２００は、更にフラグテーブルを保持する。フラグテーブルについて、図９を用いて説明する。図９は、フラグテーブルの一例を説明するための概念図である。
【００８０】
図９に示すように、フラグテーブルは、ブロックＢＬＫ毎にブロックリフレッシュフラグを保持すると共に、ワード線ＷＬ毎に上書きリフレッシュフラグを保持する。上書きリフレッシュフラグ及びブロックリフレッシュフラグはそれぞれ、例えば、メモリコントローラ２００によって上書きリフレッシュ処理及びブロックリフレッシュ処理が予約された際に、“１”とされる。また、上書きリフレッシュフラグは、例えば、対応するブロックＢＬＫのブロックリフレッシュフラグが“１”となった場合、リセットされ得る。
【００８１】
上書きリフレッシュ処理は、上述した変動要因による影響を低減するための処理である。より具体的には、例えば、上書きリフレッシュ処理は、一部のワード線ＷＬにデータが書込まれたブロックＢＬＫのうち、リフレッシュ対象と判定されたデータ書込み済みのワード線ＷＬに対応するメモリセルトランジスタＭＴへ、更なる書込み処理（上書き処理）を行う。また、例えば、上書きリフレッシュ処理は、全てのワード線ＷＬにデータが書込まれたブロックＢＬＫに対しても、同様に実行し得る。そして、このような上書きリフレッシュ処理は、消去処理を伴わずに実行される。これにより、変動要因の影響を強く受けた特定のワード線ＷＬ（例えば、端部のワード線ＷＬ）に対応するメモリセルトランジスタＭＴの閾値分布を高電圧側へシフトさせ、理想の閾値分布の状態に近づける。これが、上書きリフレッシュ処理である。
【００８２】
また、ブロックリフレッシュ処理（「書き直しリフレッシュ処理」とも言う。）は、上書きリフレッシュ処理や他の手段によっても、正しいデータを読み出すことが困難になった場合に、当該ブロックＢＬＫ内の有効データを、消去処理済みのブロックＢＬＫに書き写す処理である。或いは、ブロックリフレッシュ処理は、消去処理を伴い、リフレッシュ対象ブロックＢＬＫ内の有効データを同一ブロックＢＬＫに書き戻す処理も含む。
【００８３】
このように、上書きリフレッシュ処理及びブロックリフレッシュ処理は、いずれも、変動した閾値分布を理想の閾値分布の状態に近づける動作である点において共通する。上書きリフレッシュ処理及びブロックリフレッシュ処理は、例えば、「リフレッシュ処理」と総称され得る。
【００８４】
以上のように構成されたフラグテーブルは、例えば、ＮＡＮＤフラッシュメモリ１００のいずれかのブロックＢＬＫに保持される。そして、履歴テーブルと同様に、例えば、メモリシステム１への電源投入直後等にメモリコントローラ２００によって読み出され、メモリ２２０等に保持される。また、メモリシステム１の電源が遮断される際には、メモリ２２０等に保持されるフラグテーブルが、ＮＡＮＤフラッシュメモリ１００のいずれかのブロックＢＬＫに書込まれる。
【００８５】
１．２  動作
次に、第１実施形態に係るメモリシステムの動作について説明する。
【００８６】
１．２．１  読出し動作について
まず、メモリコントローラ２００による読出し動作の流れについて、図１０を用いて説明する。図１０は、第１実施形態に係るメモリシステムにおける読出し動作を説明するためのフローチャートの一例である。なお、図１０におけるメモリコントローラ２００の動作は、例えば、ホスト機器３００からの指示によって実行されてもよいし、プロセッサ２３０の制御によって定期的に実行されてもよい。例えば、以下に示す読出し動作が定期的に実行されることにより、メモリ２２０に保持される履歴テーブルを最新の状態に保つことができる。
【００８７】
メモリコントローラ２００はまず、ステップＳＴ１０において、メモリ２２０内のシフトテーブルと履歴テーブルとを参照することにより、図１１に示すような情報のうち、読出し対象のブロックＢＬＫにおける読出し対象のワード線ＷＬのシフト量ΔＶを把握する。そして、ＮＡＮＤフラッシュメモリ１００に対してリードコマンドを発行する際、又はそれ以前に、メモリコントローラ２００は、例えば、セットフィーチャによって、当該把握した読出し対象のワード線ＷＬのシフト量ΔＶをＮＡＮＤフラッシュメモリ１００に設定する。
【００８８】
この結果、ＮＡＮＤフラッシュメモリ１００のドライバ１３０は、読出し処理時におけるデフォルトの電圧ＶＡ、ＶＢ、…、及びＶＧに対して、シフト量ΔＶを加えた値の電圧を読出し電圧ＶＣＧＲとして、ロウデコーダ１２０を介して、読出し対象のワード線ＷＬに印加する。つまり、当初の電圧ＶＡ、ＶＢ、…、及びＶＧの代わりに、電圧（ＶＡ＋ΔＶＡ）、（ＶＢ＋ΔＶＢ）、…、及び（ＶＧ＋ΔＶＧ）が、読出し電圧ＶＣＧＲとして印加される。
【００８９】
図１０に戻り、ステップＳＴ１１において、メモリコントローラ２００は、ホスト機器３００からデータの要求命令を受信すると、通常リードコマンドを発行する。通常リードコマンドは、読出し電圧のシフト量ΔＶに関する情報を含まない。よって、ＮＡＮＤフラッシュメモリ１００は、デフォルトの読出し電圧を用いてデータを読み出し、これをメモリコントローラ２００に送信する。すなわち、例えば、ブロックＢＬＫ０のワード線ＷＬ６３が選択される場合には、読出し電圧ＶＣＧＲとして（ＶＡ＋ΔＶＡ３）、（ＶＢ＋ΔＶＢ３）、…、及び（ＶＧ＋ΔＶＧ３）が用いられる。
【００９０】
ステップＳＴ１２において、ＮＡＮＤフラッシュメモリ１００から読出しデータを受信したメモリコントローラ２００では、ＥＣＣ回路２６０が誤りを検出する。読出しデータに誤りが含まれない場合、又はＥＣＣ回路２６０により誤りを訂正（硬判定復号）できた場合（ステップＳＴ１２；ｙｅｓ）、データの読出し動作は完了する。一方、読出しデータに含まれるエラービット数がＥＣＣ回路２６０で訂正可能なビット数を超えており、ＥＣＣ回路２６０による誤りの訂正ができない場合（ステップＳＴ１２；ｎｏ）、処理はステップＳＴ１３に進む。
【００９１】
ステップＳＴ１３において、メモリコントローラ２００は、履歴テーブルを参照し、読出し対象のワード線ＷＬに対応するシフトインデックスがシフトテーブル内に設定されたシフトインデックスの最大値（最終シフトインデックスとも言う。図６の例では最終シフトインデックス＝５である。）に達したか否かを判定する。
【００９２】
読出し対象のワード線ＷＬに対応するシフトインデックスが最終シフトインデックスに達していない場合（ステップＳＴ１３；ｎｏ）、処理はステップＳＴ１４に進む。ステップＳＴ１４において、メモリコントローラ２００は、シフトテーブルにおける次のシフトインデックスを選択する。続いて、ステップＳＴ１５において、メモリコントローラ２００は、選択したシフトインデックスに基づいてシフトリードコマンドを発行する。この際、例えば、メモリコントローラ２００の発行するコマンドシーケンスがシフト量ΔＶを示す情報を含み、当該情報に基づいてＮＡＮＤフラッシュメモリ１００は、読出し電圧ＶＣＧＲを決定する。先の例であると、ブロックＢＬＫ０のワード線ＷＬ６３が選択される場合には、読出し電圧ＶＣＧＲとして（ＶＡ＋ΔＶＡ４）、（ＶＢ＋ΔＶＢ４）、…、及び（ＶＧ＋ΔＶＧ４）が用いられる。続いて、ステップＳＴ１６において、メモリコントローラ２００では、シフトリードによる読出しデータに対して、ＥＣＣ回路２６０が再度誤りを検出する。読出しデータに誤りが含まれない場合、又はＥＣＣ回路２６０により誤りを訂正できた場合（ステップＳＴ１６；ｙｅｓ）、処理はステップＳＴ２０に進む。一方、ＥＣＣ回路２６０による誤りの訂正ができない場合（ステップＳＴ１６；ｎｏ）、処理はステップＳＴ１３に進む。すなわち、メモリコントローラ２００は、選択したシフトインデックスが最終値に達するか（ステップＳＴ１３；ｙｅｓ）、又は誤りの訂正に成功するまで（ステップＳＴ１６；ｙｅｓ）、シフトインデックスをインクリメントしつつシフトリードを繰り返す。
【００９３】
一方、読出し対象のワード線ＷＬに対応するシフトインデックスが最終シフトインデックスに達している場合（ステップＳＴ１３；ｙｅｓ）、処理はステップＳＴ１７に進む。ステップＳＴ１７において、メモリコントローラ２００は、データを正しく読み出すための何らかの処理を実行する。その一例は、Ｖｔｈトラッキング処理である。Ｖｔｈトラッキング処理は、読出し対象のワード線ＷＬに印加する電圧を細かく変化させつつオンセル（又はオフセル）の数を計測することにより、重なった閾値分布の交点を探索し、当該交点に近いと予想される点に対応する電圧（最適な読出し電圧と予想される電圧）を決定する処理である。そして、当該最適な読出し電圧と予想される電圧を用いて、再度の読出し動作が行われる。続いて、ステップＳＴ１８において、メモリコントローラ２００では、ＥＣＣ回路２６０が再度誤りを検出する。具体的には、例えば、Ｖｔｈトラッキング動作の際には、決定された最適な読出し電圧に対して硬判定復号が実行される。ＥＣＣ回路２６０により誤りを訂正できた場合（ステップＳＴ１８；ｙｅｓ）、処理はステップＳＴ２０に進む。一方、ＥＣＣ回路２６０による誤りの訂正ができない場合（ステップＳＴ１８；ｎｏ）、処理はステップＳＴ１９に進む。ステップＳＴ１９において、メモリコントローラ２００は、例えば、ＥＣＣ結果に基づいてデータを正しく訂正できない（ＥＣＣフェイル）と判定し、訂正失敗を通知する。
【００９４】
ステップＳＴ１６又はＳＴ１８のいずれかでＥＣＣ回路２６０による誤りが訂正できた場合、ステップＳＴ２０において、メモリコントローラ２００は、メモリ２２０内の履歴テーブルを更新する。すなわち、履歴テーブルにおいて、読出し対象となったブロックＢＬＫのワード線ＷＬに関するシフトインデックスを、直近のステップＳＴ１６で選択された値に変更する。図１２は、ワード線ＷＬ６３に対するシフトリードが、シフトインデックス＝３の際には誤り訂正が失敗し、シフトインデックス＝４の際に成功した例を示している。図１２に示すように、ワード線ＷＬ６３に対するシフト量ΔＶＡ３、ΔＶＢ３、…、及びΔＶＧ３が、それぞれシフト量ΔＶＡ４、ΔＶＢ４、…、及びΔＶＧ４に更新される。
【００９５】
続いて、ステップＳＴ２１において、メモリコントローラ２００は、読出し対象のワード線ＷＬがリフレッシュ処理の発動条件を満たすか否かを判定する。読出し対象のワード線ＷＬがリフレッシュ処理の発動条件を満たさないと判定された場合（ステップＳＴ２１；ｎｏ）、メモリコントローラ２００は、当該ワード線ＷＬに対するリフレッシュを予約することなく、読出し動作を終了する。より具体的には、メモリコントローラ２００は、読出し対象のワード線ＷＬに対する上書きリフレッシュ処理、又は当該読出し対象のワード線ＷＬを含むブロックＢＬＫに対するブロックリフレッシュ処理のいずれについても予約をすることなく、読出し動作を終了する。一方、読出し対象のワード線ＷＬがリフレッシュ処理の発動条件を満たすと判定された場合（ステップＳＴ２１；ｙｅｓ）、メモリコントローラ２００は、当該ワード線ＷＬに対するリフレッシュ処理の実行を決定し、処理はステップＳＴ２２に進む。
【００９６】
ステップＳＴ２２において、メモリコントローラ２００は、リフレッシュ処理の実行が決定されたワード線ＷＬに対して、上書きリフレッシュ処理の適用条件を満たすか否かを判定する。読出し対象のワード線ＷＬが上書きリフレッシュ処理の適用条件を満たさないと判定された場合（ステップＳＴ２２；ｎｏ）、メモリコントローラ２００は、読出し対象のワード線ＷＬを含むブロックＢＬＫに対するブロックリフレッシュ処理の実行を決定し、処理はステップＳＴ２３に進む。ステップＳＴ２３において、メモリコントローラ２００は、ブロックリフレッシュ処理を予約する。すなわち、プロセッサ２３０は、例えば、メモリ２２０内のフラグテーブルにおいて、ステップＳＴ２２においてブロックリフレッシュ処理の実行が決定されたブロックＢＬＫにブロックリフレッシュフラグを立てる。以上で、読出し処理は終了し、後続するブロックリフレッシュ処理を実行するため、処理は引き続きステップＳＴ２４に進む。
【００９７】
ステップＳＴ２４において、メモリコントローラ２００は、フラグテーブルを参照し、ブロックリフレッシュフラグの立っているブロックＢＬＫに対してブロックリフレッシュ処理を実行する。
【００９８】
ステップＳＴ２５において、メモリコントローラ２００は、ブロックリフレッシュ処理が終了したブロックＢＬＫに対して立っていたブロックリフレッシュフラグをリセットすることにより、フラグテーブルを更新する。
【００９９】
なお、ステップＳＴ２４及びＳＴ２５は、ステップＳＴ２３における予約処理の直後に行う必要はなく、バックグラウンドで適切なタイミングに行えばよい。
【０１００】
一方、読出し対象のワード線ＷＬが上書きリフレッシュ処理の適用条件を満たすと判定された場合（ステップＳＴ２２；ｙｅｓ）、メモリコントローラ２００は、当該ワード線ＷＬに対する上書きリフレッシュ処理の実行を決定し、処理はステップＳＴ２６に進む。ステップＳＴ２６において、メモリコントローラ２００は、上書きリフレッシュ処理を予約する。すなわち、プロセッサ２３０は、例えば、メモリ２２０内のフラグテーブルにおいて、ステップＳＴ２２において上書きリフレッシュ処理の実行が決定されたワード線ＷＬに上書きリフレッシュフラグを立てる。以上で、読出し処理は終了し、後続する上書きリフレッシュ処理を実行するため、処理は引き続きステップＳＴ２７に進む。
【０１０１】
ステップＳＴ２７において、メモリコントローラ２００は、フラグテーブルを参照し、上書きリフレッシュフラグの立っているワード線ＷＬに対して上書きリフレッシュ処理を実行する。
【０１０２】
ステップＳＴ２８において、メモリコントローラ２００は、上書きリフレッシュ処理が終了したブロックＢＬＫに対して立っていた上書きリフレッシュフラグをリセットすることにより、フラグテーブルを更新する。
【０１０３】
なお、ステップＳＴ２７及びＳＴ２８は、ステップＳＴ２６における予約処理の直後に行う必要はなく、バックグラウンドで適切なタイミングに行えばよい。
【０１０４】
以上のように動作することにより、リフレッシュ処理を行うか否かと、上書きリフレッシュ処理を適用するか否かと、を互いに異なる条件に基づいて判定することができる。
【０１０５】
１．２．２  リフレッシュ処理の発動条件について
次に、リフレッシュ処理の発動条件について具体的に説明する。
【０１０６】
上述の通り、リフレッシュ処理は、変動した閾値分布を理想の状態に近づけるために実行される。このため、リフレッシュ処理は、現状の閾値分布の、理想の閾値分布からの変動幅が所定の大きさに達した場合に実施するように、発動条件及び適用条件が設定されることが望ましい。
【０１０７】
１．２．２．１  誤り訂正条件
例えば、閾値分布の変動幅は、読出しデータに含まれるエラービットが訂正可能な条件（誤り訂正条件）に基づいて評価することができる。誤り訂正条件は、例えば、ＥＣＣ回路２６０に適用される誤り訂正符号の種類、及び符号化率を含むＥＣＣ回路２６０の訂正能力と、ＥＣＣ回路２６０に入力される読出しデータの読出し条件と、を含む。なお、誤り訂正条件は、必ずしも誤り訂正符号の訂正能力及び読出し条件のいずれも含んでいる必要はなく、少なくとも１つが含まれていればよいし、その他の条件が含まれていてもよい。
【０１０８】
誤り訂正符号の種類には、ＢＣＨ符号やＲＳ符号を含む任意の硬判定復号符号、並びにＬＤＰＣ符号を含む任意の軟判定復号符号を適用可能である。また、読出し条件には、シフトリード処理、及びＶｔｈトラッキング処理等の任意の読出し条件を適用可能である。なお、シフトリード処理が読出し条件に適用される場合、シフトインデックスが読出し条件として更に付加されてもよい。
【０１０９】
誤り訂正条件に基づいて設定されるリフレッシュ処理の発動条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例１‐１ａ）「或るシフトインデックスのシフトリード処理による読出しデータ、及びＢＣＨ符号に基づく誤り訂正処理に失敗した場合、リフレッシュ処理を発動する。」
（例１‐１ｂ）「Ｖｔｈトラッキング処理によって決定された最適な読出し電圧による読出しデータ、及びＢＣＨ符号に基づく誤り訂正処理に失敗した場合、リフレッシュ処理を発動する。」
１．２．２．２  エラービット数
また、例えば、閾値分布の変動幅は、或る読出し電圧で読み出されたデータに含まれるエラービット数によって評価することができる。すなわち、リフレッシュ処理の発動条件は、誤り訂正に成功した場合のエラービット数（又はエラービットレート）に基づいて設定され得る。エラービットレートは、例えば、誤り訂正処理が実行された読出しデータ内のビット数に対する、エラービット数の割合である。
【０１１０】
エラービット数に基づいて設定されるリフレッシュ処理の発動条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例１‐２）「エラービット数が閾値を超えた場合、リフレッシュ処理を発動する。」
なお、エラービット数は、読出し電圧の大きさに応じて変化する。例えば、デフォルトの読出し電圧（シフトインデックス＝０の読出し電圧）で読出した場合よりも、より大きなシフトインデックスのシフト量ΔＶが適用されたシフトリード処理や、Ｖｔｈトラッキング処理によって決定された最適な読出し電圧で読出した場合の方が、エラービット数は小さくなり得る。このため、エラービット数をリフレッシュ処理の発動条件に適用する場合、読出し電圧の大きさに応じて、予約の可否を決定するエラービット数の閾値が異なるように設定されてもよい。
【０１１１】
１．２．２．３  シフト量
また、例えば、閾値電圧の変動幅は、履歴テーブル内のシフトインデックス、又はＶｔｈトラッキング処理によって決定された最適な読出し電圧の、デフォルトの読出し電圧からのシフト量ΔＶの大きさによって評価することができる。すなわち、リフレッシュ処理の発動条件は、シフトリード処理のシフトインデックス、又はＶｔｈトラッキング処理によって決定されたシフト量ΔＶの大きさに基づいて設定され得る。なお、Ｖｔｈトラッキング処理におけるシフト量ΔＶは、メモリコントローラ２００側、及びＮＡＮＤフラッシュメモリ１００側のいずれで算出されてもよい。
【０１１２】
シフト量ΔＶに基づいて設定されるリフレッシュ処理の発動条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例１‐３ａ）「履歴テーブル内のシフトインデックスが閾値を超えた場合、リフレッシュ処理を発動する。」
（例１‐３ｂ）「Ｖｔｈトラッキング処理によって決定された最適な読出し電圧の、デフォルトの読出し電圧からのシフト量ΔＶが閾値を超えた場合、リフレッシュ処理を発動する。」
なお、シフト量ΔＶに関する閾値は、例えば、各状態を区別する電圧ＶＡ〜ＶＧの各々について個別に異なる値が設定されてもよい。この場合、電圧ＶＡ〜ＶＧのいずれかに対して閾値を超えた場合に、リフレッシュ処理を発動すると判定されてもよい。
【０１１３】
１．２．２．４  経過時間
また、例えば、閾値電圧の変動幅は、書込み完了からの経過時間が長いほど大きくなり得る。このため、リフレッシュ処理の発動条件は、読出し対象のワード線ＷＬに接続されたメモリセルトランジスタＭＴへデータが書き込まれてからの経過時間に基づいて設定され得る。書込み処理完了からの経過時間は、例えば、メモリコントローラ２００内のメモリ２２０に保持、管理される。
【０１１４】
書込み完了からの経過時間に基づいて設定されるリフレッシュ処理の発動条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例１‐４）「書込み処理完了からの経過時間が閾値を超えた場合、リフレッシュ処理を発動する。」
なお、メモリコントローラ２００は、書込み処理完了からの経過時間を、ワード線ＷＬ単位に限らず、ブロックＢＬＫ単位等の任意の単位で管理可能である。
【０１１５】
１．２．２．５  読出し回数
また、例えば、閾値電圧の変動幅は、読出し回数が多いほど大きくなり得る。このため、リフレッシュ処理の発動条件は、読出し対象のブロックＢＬＫ内の任意のワード線ＷＬからの読出し動作の実行回数に基づいて設定され得る。読出し動作の実行回数は、例えば、当該ブロックＢＬＫに対して実行された直近の消去動作後に書込まれたデータに対する読出し回数をカウントし、メモリコントローラ２００内のメモリ２２０に保持、管理される。
【０１１６】
読出し動作の実行回数に基づいて設定されるリフレッシュ処理の発動条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例１‐５）「読出し動作の実行回数が閾値を超えた場合、リフレッシュ処理を発動する。」
なお、メモリコントローラ２００は、読出し動作の実行回数を、ブロックＢＬＫ単位に限らず、ワード線ＷＬ単位等の任意の単位で管理可能である。
【０１１７】
以上のようにリフレッシュ処理の発動条件を設定することにより、リフレッシュ処理を実行する必要があるか否かを適切に判定することができる。
【０１１８】
１．２．３  上書きリフレッシュ処理の適用条件について
次に、上書きリフレッシュ処理の適用条件について説明する。
【０１１９】
１．２．３．１  上書きリフレッシュ処理による閾値分布の変化について
上述の通り、上書きリフレッシュ処理は、既にデータが書き込まれたメモリセルトランジスタＭＴに上書き処理を行うことにより、閾値分布を高電圧側へシフトさせる動作である。このため、上書きリフレッシュ処理は、上書き対象のメモリセルトランジスタＭＴへのデータの上書き処理に伴い、隣り合う他のトランジスタＭＴに対しても予期しない電荷の注入を発生させ、閾値電圧を上昇させる可能性がある。これにより、上書きリフレッシュ処理を実行しても、隣り合う閾値分布間の幅（又は重なり）が書込み当初と同程度まで改善しない可能性がある。
【０１２０】
図１３は、上書きリフレッシュ処理の前後における閾値分布の変動を説明するためのダイアグラムである。図１３では、一例として、上書きリフレッシュ処理の前後における“Ｅｒ”状態、及び“Ａ”状態に対応する閾値分布が示され、“Ｂ”状態〜“Ｇ”状態に対応する閾値分布は便宜上省略されている。具体的には、図１３（Ａ）では、書込み処理直後の閾値分布が示され、図１３（Ｂ）では、図１３（Ａ）の状態から所定の時間が経過した後の閾値分布が示され、図１３（Ｃ）では、図１３（Ｂ）の状態から上書きリフレッシュ処理が実行された後の閾値分布が示される。
【０１２１】
図１３（Ａ）に示すように、書込み処理直後では、“Ｅｒ”状態、及び“Ａ”状態に対応する閾値分布は、互いに分離している（又は、重なる部分が非常に小さい）。具体的には、“Ａ”状態に対応する閾値分布のうちの最低電圧Ｖａ＿ｌと、“Ｅｒ”状態に対応する閾値分布のうちの最高電圧Ｖｅ＿ｈとは、差分Δ（＝Ｖａ＿ｌ−Ｖｅ＿ｈ）だけ離れている。
【０１２２】
データの書込み処理から時間が経過すると共に、閾値分布は、変動要因による影響を受ける。具体的には、図１３（Ｂ）に示すように、“Ａ”状態に対応する閾値分布のうちの最小電圧は、変動要因によって時間の経過と共に低電圧側にシフトし、電圧Ｖａ＿ｌ’となる。一方、“Ｅｒ”状態に対応する閾値分布のうちの最大電圧は、変動要因によって時間の経過と共に高電圧側にシフトし、電圧Ｖｅ＿ｈ’となる。
【０１２３】
このため、データの書込み処理から時間が経過すると、“Ａ”状態に対応する閾値分布のうちの最低電圧Ｖａ＿ｌ’と、“Ｅｒ”状態に対応する閾値分布のうちの最高電圧Ｖｅ＿ｈ’との差分Δ’（＝Ｖａ＿ｌ’−Ｖｅ＿ｈ’）は、差分Δより小さくなる（Δ’＜Δ）。すなわち、差分Δ’は、時間の経過と共に悪化する。
【０１２４】
続いて、低電圧側にシフトした閾値分布のうちの最低電圧近傍に対応するワード線ＷＬに対して、上書きリフレッシュ処理が実行される。図１３（Ｃ）に示すように、“Ａ”状態に対応する閾値分布のうちの最低電圧は、上書きリフレッシュ処理によって再度高電圧側にシフトし、電圧Ｖａ＿ｌ”となる。これにより、“Ａ”状態に対応する閾値分布は、書込み直後の状態に近づけられる。
【０１２５】
一方、上書きリフレッシュ処理は、閾値分布のうちの最低電圧近傍を高電圧側にシフトさせる処理のため、“Ｅｒ”状態に対応する閾値分布のうちの最高電圧近傍を低電圧側にシフトさせることはできない。加えて、“Ｅｒ”状態のメモリセルトランジスタＭＴは、隣り合うメモリセルトランジスタＭＴに対して上書きリフレッシュが実行されることによって、閾値電圧が上昇し得る。このため、“Ｅｒ”状態に対応する閾値分布のうちの最高電圧は、更に高電圧側にシフトし、電圧Ｖｅ＿ｈ”となる。
【０１２６】
このため、上書きリフレッシュ処理後において、“Ａ”状態に対応する閾値分布のうちの最低電圧Ｖａ＿ｌ”と、“Ｅｒ”状態に対応する閾値分布のうちの最高電圧Ｖｅ＿ｈ”との差分Δ”（＝Ｖａ＿ｌ”−Ｖｅ＿ｈ”）は、差分Δ’より大きくなる（Δ”＞Δ’）。すなわち、上書きリフレッシュ処理を実行することによって、変動要因による影響を緩和することができる。しかしながら、“Ｅｒ”状態に対応する閾値分布のうちの最高電圧近傍が高電圧側にシフトするため、差分Δ”は、差分Δより小さくなる（Δ”＜Δ）。以後同様に、差分Δ”は、上書きリフレッシュ処理を実行していく毎に、前回上書きリフレッシュ処理が実施された直後の差分Δ”に対して、徐々に低下していく可能性がある。差分Δ”が小さくなると（例えば、差分Δ’に漸近すると）、再度上書きリフレッシュ処理を実行しても、隣り合う２つの状態の識別性を改善できなくなるため、好ましくない。したがって、上書きリフレッシュの適用条件は、差分Δ”のような、隣り合う２つの状態を識別できるか否かを定量的に示す指標（以下、「マージン」とも言う）に基づいて設定されることが望ましい。
【０１２７】
図１３の例では、“Ｅｒ”状態及び“Ａ”状態について説明したが、これに限られない。すなわち、上書きリフレッシュの適用条件は、“Ｅｒ”状態及び“Ａ”状態間のマージンに限らず、隣り合う任意の２つの状態間のマージンに基づいて設定され得る。補足すると、上述したように、“Ｅｒ”状態は、時間の経過に伴って閾値分布の上裾が高電圧側にシフトする傾向があるが、他の状態は、時間の経過に伴って閾値分布の上裾が低電圧側にシフトする傾向がある。このため、マージンの変動を評価するに際し、最もマージンの悪化が顕著にみられるのは、“Ｅｒ”状態と“Ａ”状態の間で有り得る。
【０１２８】
いずれにしても、上書きリフレッシュ処理の実行可否を判定するに際しては、例えば、マージンを用いると、以下のような条件が設定され得る。
「マージンが閾値を超える場合、上書きリフレッシュ処理の適用を決定し、マージンが閾値以下の場合、上書きリフレッシュ処理では効果が薄いため、ブロックリフレッシュ処理の適用を決定する。」
なお、実際には、差分Δ”を直接算出する代わりに、種々の方法を用いてマージンが定量的に評価される。以下に、マージンの具体例と、当該マージンに基づく上書きリフレッシュ処理の適用条件について説明する。ただし、以下に説明する上書きリフレッシュ処理の適用条件は、上述したリフレッシュ処理の発動条件を満たすことが前提であることに留意すべきである。
【０１２９】
１．２．３．２  所定範囲内に閾値電圧を有するメモリセル数
例えば、マージンは、所定範囲内に閾値電圧を有するメモリセル数に基づいて評価し得る。所定範囲は、例えば、隣り合う２つの状態に対応する閾値分布のピーク間に設定される。より具体的には、例えば、所定範囲をＶｓ１以上Ｖｓ２以下（Ｖｓ１＜Ｖｓ２）とした時、当該所定範囲は、一方の閾値分布のピークに対応する電圧ＶＰ１と他方の閾値分布のピークに対応する電圧ＶＰ２（＞ＶＰ１）に対して、ＶＰ１＜Ｖｓ１＜Ｖｓ２＜ＶＰ２の関係を有する範囲に設定される。また、当該所定範囲は、例えば、一方の閾値分布と他方の閾値分布とが交差し得る範囲を包含するように設定される。これにより、当該所定範囲内に閾値電圧を有するメモリセル数の増加と、マージンの低下とを関連づけることができる。
【０１３０】
所定範囲内に閾値電圧を有するメモリセル数に基づいて設定される上書きリフレッシュ処理の適用条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例２‐１）「所定範囲内に閾値電圧を有するメモリセル数が閾値以下である場合、上書きリフレッシュ処理の適用を決定し、閾値を超える場合、ブロックリフレッシュ処理の適用を決定する。」
１．２．３．３  高電圧側エラービット数
また、例えば、マージンは、所定の状態を、より高電圧側の状態と誤って読出したビット数（以下、便宜的に「高電圧側エラービット数」とも呼ぶ。）に基づいて評価し得る。例えば、“Ｅｒ”状態を“Ａ”状態と誤って読出されたビット数が増加すれば、“Ｅｒ”状態に対応する閾値分布のうちの最高電圧近傍が、“Ａ”状態に対応する閾値分布のうちの最低電圧近傍よりも相当程度高電圧側にシフトしていると考えられる。このように、当該高電圧側エラービット数の増加と、マージンの低下とを関連付けることができる。
【０１３１】
高電圧側エラービット数に基づいて設定される上書きリフレッシュ処理の適用条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例２‐２）「所定の状態に対する高電圧側エラービット数が閾値以下である場合、上書きリフレッシュ処理の適用を決定し、閾値を超える場合、ブロックリフレッシュ処理の適用を決定する。」
なお、高電圧側エラービット数は、例えば、図１０におけるステップＳＴ１５で読み出された誤りを含むデータと、ステップＳＴ１６における誤り訂正後のデータと、を比較することによって特定することができる。より具体的には、例えば、“Ｅｒ”状態において発生した高電圧側エラービット数を特定する場合、メモリコントローラ２００は、まず、誤り訂正後のデータにおいて“Ｅｒ”状態と判定された（“Ｅｒ”状態であることが期待される）メモリセルトランジスタＭＴを抽出する。そして、メモリコントローラ２００は、“Ｅｒ”状態であることが期待されるメモリセルトランジスタＭＴのうち、誤りを含むデータにおいて“Ｅｒ”状態でないと判定されたメモリセルトランジスタＭＴを抽出し、計上する。これにより、メモリコントローラ２００は、“Ｅｒ”状態に対する高電圧側エラービット数を特定することができる。
【０１３２】
１．２．３．４  シフト量
また、例えば、マージンは、シフトリード処理又はＶｔｈトラッキング処理の際に適用された、電圧ＶＡ〜ＶＧのうちの所定の１つに対するシフト量ΔＶに基づいて評価し得る。すなわち、シフト量ΔＶの増加と、マージンの低下とを関連付けることができる。なお、シフトリード処理のシフト量ΔＶは、履歴テーブルに記憶されたシフトインデックスに置き換えてもよい。
【０１３３】
シフト量ΔＶに基づいて設定される上書きリフレッシュ処理の適用条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例２‐３ａ）「履歴テーブル内のシフトインデックスが閾値以下である場合、上書きリフレッシュ処理の適用を決定し、閾値を超える場合、ブロックリフレッシュ処理の適用を決定する。」
（例２‐３ｂ）「Ｖｔｈトラッキング処理により求めた読出し電圧の、デフォルトの読出し電圧からのシフト量が閾値以下である場合、上書きリフレッシュ処理の適用を決定し、閾値を超える場合、ブロックリフレッシュ処理の適用を決定する。」
１．２．３．５  誤り訂正条件
また、例えば、マージンは、誤り訂正条件に基づいて評価し得る。すなわち、誤り訂正に成功した際の誤り訂正条件の程度がマージンの低下と関連付けられ、上書きリフレッシュ処理の適用条件に採用されてもよい。
【０１３４】
誤り訂正条件に基づいて設定される上書きリフレッシュ処理の適用条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例２‐４）「所定のシフトインデックス以下のいずれかのシフトインデックスを適用したシフトリード処理による読出しデータに基づく誤り訂正処理に成功した場合、上書きリフレッシュ処理の適用を決定する。当該所定のシフトインデックス以下のいずれかのシフトインデックスを適用したシフトリード処理によっても読出しデータに基づく誤り訂正処理に失敗した場合、ブロックリフレッシュ処理の適用を決定する。」
なお、上述の（例２‐４）の条件における「所定のシフトインデックス以下のいずれかのシフトインデックス」の値は、例えば、下記に示す値に対応し得る。
【０１３５】
１）シフト量ΔＶを変更しながら訂正成功するまで試行するリトライリードシーケンスにおいて、訂正成功するまでのリトライリード処理の回数に応じた値
２）リトライリードシーケンスによって訂正成功した際のシフト量ΔＶに応じた値
１．２．３．６  上書きリフレッシュ処理の実行回数
また、上述の通り、上書きリフレッシュ処理は、実行回数が増えるにつれて、マージンが低下し得る。このため、マージンは、上書きリフレッシュ処理の実行回数に基づいて評価し得る。すなわち、同一のブロックＢＬＫ又は同一のワード線ＷＬに対して実行された上書きリフレッシュ処理の、直近に実行されたブロックリフレッシュ処理からの実行回数の増加がマージンの低下と関連付けられ、上書きリフレッシュ処理の適用条件に採用されてもよい。
【０１３６】
上書きリフレッシュ処理の実行回数に基づいて設定される上書きリフレッシュ処理の適用条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例２‐５ａ）「同一のブロックＢＬＫに対して実行された上書きリフレッシュ処理の、直近に実行されたブロックリフレッシュ処理からの実行回数が閾値以下である場合、上書きリフレッシュ処理の適用を決定し、閾値を超える場合、ブロックリフレッシュ処理の適用を決定する。」
（例２‐５ｂ）「同一のワード線ＷＬに対して実行された上書きリフレッシュ処理の、直近に実行されたブロックリフレッシュ処理からの実行回数が閾値以下である場合、上書きリフレッシュ処理の適用を決定し、閾値を超える場合、ブロックリフレッシュ処理の適用を決定する。」
なお、ブロックリフレッシュ処理が実行された場合、閾値分布はデータの書込み処理直後と同等の状態（例えば、カウント値が“０”の状態）にリセットされるため、これに伴って上書きリフレッシュ処理の実行回数も“０”にリセットされる。
【０１３７】
１．２．３．７  上書きリフレッシュ処理による閾値分布の改善率
また、上述の通り、上書きリフレッシュ処理は、実行回数が増えるにつれて、マージンの改善率が低下し得る。このため、上書きリフレッシュ処理の適用条件は、前回の上書きリフレッシュ処理によるマージンの改善率に基づいて設定され得る。マージンの改善率とは、例えば、上書きリフレッシュ処理の実行の直前のマージンと直後のマージンとの比較結果（図１３の例では、例えば、（Δ”−Δ’）等に相当）を示す。すなわち、マージンの改善率の低下と、マージンの低下とが関連付けられる。
【０１３８】
マージンの改善率に基づいて設定される上書きリフレッシュ処理の適用条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例２‐６ａ）「前回の上書きリフレッシュ処理の前後における履歴テーブル内のシフトインデックスの差が閾値を超える場合、上書きリフレッシュ処理の適用を決定し、閾値以下である場合、ブロックリフレッシュ処理の適用を決定する。」
（例２‐６ｂ）「前回の上書きリフレッシュ処理の前後におけるエラービット数の差が閾値を超える場合、上書きリフレッシュ処理の適用を決定し、閾値以下である場合、ブロックリフレッシュ処理の適用を決定する。」
（例２‐６ｃ）「前回の上書きリフレッシュ処理の前後におけるエラービット数の減少率が閾値を超える場合、上書きリフレッシュ処理の適用を決定し、閾値以下である場合、ブロックリフレッシュ処理の適用を決定する。」
１．２．３．８  上書きリフレッシュ処理の実行頻度
また、上述の通り、上書きリフレッシュ処理は、実行回数が増えるにつれてマージンが低下していく傾向にある。これにより、上書きリフレッシュ処理の実行回数が増えると、リフレッシュ処理の発動条件が満たされるまでの時間が短くなり得る。すなわち、上書きリフレッシュ処理の実行回数が増えるにつれて、リフレッシュ処理の実行頻度が増加し得る。このため、上書きリフレッシュ処理の実行回数と、マージンの低下とが関連付けられる。
【０１３９】
上書きリフレッシュ処理の実行頻度に基づいて設定される上書きリフレッシュ処理の適用条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例２‐７ａ）「単位時間当たりに実行された上書きリフレッシュ処理の回数が閾値以下の場合、上書きリフレッシュ処理の適用を決定し、閾値を超える場合、ブロックリフレッシュ処理の適用を決定する。」
（例２‐７ｂ）「所定の処理の実行回数当たりに実行された上書きリフレッシュ処理の回数が閾値以下の場合、上書きリフレッシュ処理の適用を決定し、閾値を超える場合、ブロックリフレッシュ処理の適用を決定する。」
なお、（例２‐７ｂ）における「所定の処理」とは、定期、又は不定期に繰り返し実行される処理であり、例えば、リフレッシュ処理の発動条件の判定処理や、履歴テーブルの更新処理等を含む。
【０１４０】
１．２．３．９  ワード線アドレス
また、上述の通り、マージンを悪化させる要因となる変動要因は、ワード線ＷＬに依存する。具体的には、ＮＡＮＤストリングＮＳの端部に位置する数本のワード線ＷＬに対応するメモリセルトランジスタＭＴの閾値分布は、マージンが低下しやすいのに対し、その他の多数のワード線ＷＬに対応するメモリセルトランジスタＭＴの閾値分布は、マージンが低下しにくい。すなわち、端部に位置する数本のワード線ＷＬに対応するマージンが低下している場合は、ワード線ＷＬ単位で行う上書きリフレッシュ処理が有効であるが、その他の多数のワード線ＷＬに対応するマージンが低下している場合は、ブロックＢＬＫ単位で行うブロックリフレッシュ処理の方が有効である可能性がある。このため、上書きリフレッシュ処理の適用条件は、ワード線ＷＬのアドレスに基づいて設定され得る。
【０１４１】
ワード線ＷＬのアドレスに基づいて設定される上書きリフレッシュ処理の適用条件の具体例としては、例えば、以下の条件が一例として挙げられる。
（例２‐８）「リフレッシュ処理の発動条件を満たすワード線ＷＬが端部のワード線ＷＬの場合、上書きリフレッシュ処理の適用を決定し、端部のワード線ＷＬでない場合、ブロックリフレッシュ処理の適用を決定する。」
以上のように上書きリフレッシュの適用条件を設定することにより、リフレッシュ処理を実行する必要があるブロックＢＬＫに対して、ワード線ＷＬ単位の上書きリフレッシュ処理と、ブロックＢＬＫ単位のブロックリフレッシュ処理のいずれを実行した方が効率がよいかを適切に判定することができる。
【０１４２】
なお、上述した上書きリフレッシュ処理の適用条件の各々は、任意のリフレッシュ処理の発動条件に対して、独立に設定可能である。また、上述した上書きリフレッシュ処理の適用条件は、複数の条件を組み合わせて用いてもよい。
【０１４３】
１．２．４  予約条件のフローチャートについて
次に、上述したリフレッシュ処理の発動条件、及び上書きリフレッシュ処理の適用条件を採用した場合の具体的なフローチャートのいくつかの例を示す。
【０１４４】
１．２．４．１  第１例
図１４は、リフレッシュ処理の発動条件としてシフト量ΔＶに基づく条件（例１‐３ａ）が適用され、上書きリフレッシュ処理の適用条件としてシフト量ΔＶに基づく条件（例２‐３ａ）が適用された場合のフローチャートの一例である。具体的には、図１４に示されるフローチャートは、図１０におけるステップＳＴ２１〜ＳＴ２８に対応する。
【０１４５】
図１４に示すように、ステップＳＴ２１ａにおいて、メモリコントローラ２００は、ステップＳＴ２０で更新された履歴テーブルを参照し、読出し対象のワード線ＷＬに対応するシフトインデックスが閾値Ｘ（例えば“３”）を超えるか否かを判定する。シフトインデックスが閾値Ｘ以下の場合（ステップＳＴ２１ａ；ｎｏ）、メモリコントローラ２００は、上書きリフレッシュ処理及びブロックリフレッシュ処理を予約することなく、読出し動作を終了する。一方、シフトインデックスが閾値Ｘを超える場合（ステップＳＴ２１ａ；ｙｅｓ）、メモリコントローラ２００は、当該ワード線ＷＬに対するリフレッシュ処理の実行を決定し、処理はステップＳＴ２２ａに進む。
【０１４６】
ステップＳＴ２２ａにおいて、メモリコントローラ２００は、再度履歴テーブルを参照し、リフレッシュ処理の実行が決定したワード線ＷＬに対応するシフトインデックスが閾値Ｙ（例えば“４”）を超える否かを判定する。シフトインデックスが閾値Ｙを超える場合（ステップＳＴ２２ａ；ｙｅｓ）、処理はステップＳＴ２３〜ＳＴ２５に進み、図１０において説明したようにブロックリフレッシュ処理の予約、実行、及びブロックリフレッシュフラグのリセット等の処理を行う。一方、シフトインデックスが閾値Ｙ以下の場合（ステップＳＴ２２ａ；ｎｏ）、処理はステップＳＴ２６〜ＳＴ２８に進み、図１０において説明したように上書きリフレッシュ処理の予約、実行、及び上書きリフレッシュフラグのリセット等の処理を行う。
【０１４７】
なお、図１０において上述したように、ステップＳＴ２４及びＳＴ２５、並びにステップＳＴ２７及びＳＴ２８はそれぞれ、ステップＳＴ２３及びＳＴ２６の直後に行う必要はなく、バックグラウンドで適切なタイミングで実行してもよい。
【０１４８】
このように、リフレッシュ処理の発動条件と、上書きリフレッシュ処理の適用条件とが同じ評価対象（図１４の例では、シフトインデックス）である場合、ステップＳＴ２２ａにおける閾値Ｙは、ステップＳＴ２１ａにおける閾値Ｘよりも大きい値が設定される。
【０１４９】
以上のように動作することにより、履歴テーブルのシフトインデックスに基づいて、まず、リフレッシュ処理を実行するか否かを判定することができる。そして、次に、リフレッシュ処理を実行することが決定した場合、上書きリフレッシュ処理又はブロックリフレッシュ処理のいずれを実行するかを、シフトインデックスに基づいて更に判定することができる。
【０１５０】
１．２．４．２  第２例
図１５は、リフレッシュ処理の発動条件としてシフト量ΔＶに基づく条件（例１‐３ａ）が適用され、上書きリフレッシュ処理の適用条件としてシフト量ΔＶに基づく条件（例２‐３ａ）、及びワード線ＷＬのアドレスに基づく条件（例２‐８）が併せて適用された場合のフローチャートの一例である。具体的には、図１５に示されるフローチャートは、図１４において示されたフローチャートに更にステップＳＴ２９が追加されたものである。
【０１５１】
図１５に示すように、ステップＳＴ２１ａにおける動作は、図１４の場合と同様であるため、説明を省略する。
【０１５２】
ステップＳＴ２２ａにおいて、メモリコントローラ２００は、リフレッシュ処理の実行が決定したワード線ＷＬに対応するシフトインデックスが閾値Ｙ（例えば“４”）を超えるか否かを判定する。シフトインデックスが閾値Ｙを超える場合（ステップＳＴ２２ａ；ｙｅｓ）、処理はステップＳＴ２３に進む。一方、シフトインデックスが閾値Ｙ以下の場合（ステップＳＴ２２ａ；ｎｏ）、処理はステップＳＴ２９に進む。
【０１５３】
ステップＳＴ２９において、メモリコントローラ２００は、ステップＳＴ２１ａ及びＳＴ２２ａにおける判定の結果、閾値Ｘを超え、かつ閾値Ｙ以下であるシフトインデックスに対応するワード線ＷＬが、端部のワード線ＷＬ（例えば、選択トランジスタＳＴ１及びＳＴ２、又は接合部ＪＴの近傍のワード線ＷＬ）であるか否かを判定する。当該ワード線ＷＬが端部のワード線ＷＬでない場合（ステップＳＴ２９；ｎｏ）、処理はステップＳＴ２３に進み、ブロックリフレッシュ処理が予約される。端部のワード線ＷＬである場合（ステップＳＴ２５；ｙｅｓ）、処理はステップＳＴ２６に進み、上書きリフレッシュ処理が予約される。
【０１５４】
ステップＳＴ２３〜ＳＴ２５、及びステップＳＴ２６〜ＳＴ２８の処理は、図１４の場合と同様であるため、説明を省略する。
【０１５５】
以上のように動作することにより、図１４では上書きリフレッシュ処理を実行すると判定される場合について、「対象のワード線ＷＬがＮＡＮＤストリングＮＳの端部に位置すること」という条件を更に課すことができる。このため、ＮＡＮＤストリングＮＳの端部のみのマージンが低下している場合には上書きリフレッシュ処理を実行し、ＮＡＮＤストリングＮＳ全体のマージンが低下している場合にはブロックリフレッシュ処理を実行することができる。
【０１５６】
１．２．４．３  第３例
図１６は、リフレッシュ処理の発動条件としてシフト量ΔＶに基づく条件（例１‐３ａ）が適用され、上書きリフレッシュ処理の適用条件として上書きリフレッシュ処理の実行回数に基づく条件（例２‐５）が適用された場合のフローチャートの一例である。具体的には、図１６に示されるフローチャートは、図１４において示されたフローチャートにおけるステップＳＴ２２ａに代えてステップＳＴ２２ｂが設定され、更にステップＳＴ３０及びＳＴ３１が追加されたものである。
【０１５７】
図１６に示すように、ステップＳＴ２１ａにおける動作は、図１４の場合と同様であるため、説明を省略する。
【０１５８】
ステップＳＴ２２ｂにおいて、メモリコントローラ２００は、リフレッシュ処理の実行が決定したワード線ＷＬに対して実行された上書きリフレッシュ処理の回数が閾値Ｚを超えるか否かを判定する。
【０１５９】
判定の結果、上書きリフレッシュ処理の回数が閾値Ｚを超える場合（ステップＳＴ２２ｂ；ｙｅｓ）、処理はステップＳＴ２３〜ＳＴ２５に進む。ステップＳＴ２３〜ＳＴ２５の処理は、図１４の場合と同様であるため、説明を省略する。続いて、ステップＳＴ３０において、メモリコントローラ２００は、ブロックリフレッシュ処理の実行が完了したブロックＢＬＫ内のワード線ＷＬに対応付けて記憶された上書きリフレッシュ処理の回数を“０”にリセットし、読出し動作を終了する。
【０１６０】
一方、上書きリフレッシュ処理の回数が閾値Ｚ以下である場合（ステップＳＴ２２ｂ；ｎｏ）、処理はステップＳＴ２６に進む。ステップＳＴ２６〜ＳＴ２８の処理は、図１４の場合と同様であるため、説明を省略する。続いて、ステップＳＴ３１において、メモリコントローラ２００は、対象のワード線ＷＬに対する上書きリフレッシュ処理の回数をインクリメントし、読出し動作を終了する。
【０１６１】
以上のように動作することにより、直近のブロックリフレッシュ処理以降において、上書きリフレッシュ処理が何度実行されたかに基づいて、上書きリフレッシュ処理の実行可否を判定することができる。
【０１６２】
１．２．４．４  第４例
図１７は、リフレッシュ処理の発動条件としてシフト量ΔＶに基づく条件（例１‐３ａ）が適用され、上書きリフレッシュ処理の適用条件として所定範囲内に閾値電圧を有するメモリセル数に基づく条件（例２‐１）が適用された場合のフローチャートの一例である。具体的には、図１７に示されるフローチャートは、図１４において示されたフローチャートにおけるステップＳＴ２２ａに代えてステップＳＴ２２ｃが設定され、更にステップＳＴ３２、ＳＴ３３、及びＳＴ３４が追加されたものである。
【０１６３】
図１７に示すように、ステップＳＴ２１ａにおける動作は、図１４の場合と同様であるため、説明を省略する。
【０１６４】
続いて、ステップＳＴ３２において、メモリコントローラ２００は、ステップＳＴ２１ａにおいてリフレッシュ処理の実行が決定したワード線ＷＬに対して、電圧Ｖ１によるシングルレベルリードコマンドを発行する。シングルレベルリード処理は、複数の読出しレベル（例えば、下位データの読出しであれば、電圧ＶＡ及びＶＥ）を用いてデータの読出しを行う通常リード処理と異なり、指定された単一の読出しレベルのみを用いてデータの読出しを行う。ＮＡＮＤフラッシュメモリ１００は、電圧Ｖ１を用いてデータを読み出し、これをメモリコントローラ２００に送信する。
【０１６５】
続いて、ステップＳＴ３３において、メモリコントローラ２００は、ステップＳＴ２１ａにおいてリフレッシュ処理の実行が決定したワード線ＷＬに対して、電圧Ｖ２によるシングルレベルリードコマンドを発行する。ＮＡＮＤフラッシュメモリ１００は、電圧Ｖ２を用いてデータを読み出し、これをメモリコントローラ２００に送信する。
【０１６６】
“Ｅｒ”状態と“Ａ”状態との間のマージンを評価する場合、電圧Ｖ１及びＶ２は、例えば、“Ｅｒ”状態に対応する閾値分布のピークと、“Ａ”状態に対応する閾値分布のピークと、の間に設定される。より具体的には、例えば、電圧Ｖ１及びＶ２は、図１０におけるステップＳＴ１６又はＳＴ１８において誤り訂正処理に成功した際の読出し電圧ＡＶ＋ΔＶを挟むように設定されてもよい。また、例えば、電圧Ｖ１及びＶ２は、０Ｖとデフォルトの読出し電圧ＶＡとにそれぞれ設定されてもよい。いずれにしても、電圧Ｖ１及びＶ２は、２つの閾値電圧の間において、“Ｅｒ”状態から高電圧側に有意にシフトしたメモリセルトランジスタＭＴの数が評価できるように設定される。
【０１６７】
ステップＳＴ３４において、メモリコントローラ２００は、ステップＳＴ３２及びＳＴ３３において読み出された２つの読出しデータに対して論理演算（例えば、排他的論理和ＸＯＲ）を実行することで、電圧Ｖ１と電圧Ｖ２との間において閾値電圧を有するメモリセルを特定し、更に、排他的論理和ＸＯＲの結果に含まれる“１”のビット数をカウントすることで、当該特定されたメモリセルの数Ｍ０を算出する。
【０１６８】
なお、ＮＡＮＤフラッシュメモリ１００は、ステップＳＴ３２及びＳＴ３３において、読出したデータをメモリコントローラ２００に送信することなく、センスアンプモジュール１４０内のラッチ回路ＡＤＬ〜ＳＤＬに保持してもよい。また、ＮＡＮＤフラッシュメモリ１００は、ステップＳＴ３４において、センスアンプモジュール１４０内の演算部ＯＰによって上述の論理演算（ＸＯＲ）を実行し、その結果をメモリコントローラ２００に送信してもよい。
【０１６９】
続いて、ステップＳＴ２２ｃにおいて、メモリコントローラ２００は、ステップＳＴ３４において算出されたメモリセル数Ｍ０が閾値Ｍを超えるか否かを判定する。
【０１７０】
閾値電圧が電圧Ｖ１及びＶ２間のメモリセル数Ｍ０が閾値Ｍを超える場合（ステップＳＴ２２ｃ；ｙｅｓ）、処理はステップＳＴ２３に進み、ブロックリフレッシュ処理が予約される。一方、メモリセル数Ｍ０が閾値Ｍ以下である場合（ステップＳＴ２２ｃ；ｎｏ）、処理はステップＳＴ２４に進み、上書きリフレッシュ処理が予約される。
【０１７１】
以上のように動作することにより、２回のシングルレベルリード処理の結果を用いてマージンを評価し、上書きリフレッシュ処理を実行すべきか、ブロックリフレッシュ処理を実行すべきか、を適切に判定することができる。
【０１７２】
１．２．５  上書きリフレッシュ処理について
次に、第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理について説明する。
【０１７３】
１．２．５．１  上書きリフレッシュ処理の概要
まず、第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理の概要について図１８に示すフローチャートを用いて説明する。以下の説明では、上書きリフレッシュ処理の実行対象であるワード線ＷＬを選択ワード線ＷＬと呼び、その他のワード線ＷＬを非選択ワード線ＷＬと呼ぶ。
【０１７４】
上書きリフレッシュ処理は、ベリファイ処理及び上書き処理の２つの動作を含む。ベリファイ処理は、選択ワード線ＷＬに接続されたメモリセルトランジスタＭＴのうち、上書きリフレッシュ処理を実行すべき程度に閾値電圧が低下しているものを特定するための処理である。このベリファイ処理は、上書き処理の前に実行されるため、「プリベリファイ処理」とも呼ぶ。上書き処理は、プリベリファイ処理によって検出されたメモリセルトランジスタＭＴに対してプログラム処理（すなわち電荷蓄積層へ電荷をトラップさせる処理）を実行し、閾値電圧を上昇させるための処理である。
【０１７５】
図１８に示すように、ステップＳＴ２４０において、メモリコントローラ２００は、ＮＡＮＤフラッシュメモリ１００内の上書きリフレッシュ処理対象であるワード線ＷＬに接続されたメモリセルトランジスタＭＴに対してリード処理を行い、誤り訂正を行う。これにより、メモリコントローラ２００は、上書きリフレッシュ処理の対象であるワード線ＷＬに接続されたメモリセルトランジスタＭＴが保持することを期待されるデータ（「期待データ」とも呼ぶ。）を取得する。なお、ステップＳＴ２４０における期待データは、図１１において説明したステップＳＴ１６によって誤り訂正されたデータを流用してもよい。
【０１７６】
続いて、ステップＳＴ２４１において、メモリコントローラ２００は、ＮＡＮＤフラッシュメモリ１００に対して、プリベリファイ処理に適用されるパラメタの設定コマンドを発行する。これに伴い、ＮＡＮＤフラッシュメモリ１００には、プリベリファイ処理に適用されるパラメタが設定される。プリベリファイ処理に適用されるパラメタは、例えば、ベリファイ電圧を含む。
【０１７７】
続いて、ステップＳＴ２４２において、メモリコントローラ２００は、ＮＡＮＤフラッシュメモリ１００に対して、上書き処理に適用されるパラメタの設定コマンドを発行する。これに伴い、ＮＡＮＤフラッシュメモリ１００には、上書き処理に適用されるパラメタが設定される。上書き処理に適用されるパラメタは、例えば、プログラム電圧を含む。
【０１７８】
続いて、ステップＳＴ２４３において、メモリコントローラ２００は、ＮＡＮＤフラッシュメモリ１００に対して、上書きリフレッシュ処理の実行コマンドを発行する。この際、メモリコントローラ２００は、期待データをＮＡＮＤフラッシュメモリ１００に転送する。ＮＡＮＤフラッシュメモリ１００は、当該コマンド受けると、ステップＳＴ２４４及びＳＴ２４５において、上書きリフレッシュ処理を実行する。
【０１７９】
具体的には、ステップＳＴ２４４において、ＮＡＮＤフラッシュメモリ１００は、選択ワード線ＷＬに接続されたメモリセルトランジスタＭＴに対して、ステップＳＴ２４１におけるパラメタにしたがってプリベリファイ処理を実行する。これにより、上書き処理を実行すべきメモリセルトランジスタＭＴ、すなわち、閾値電圧がベリファイ電圧を下回るメモリセルトランジスタＭＴが特定される。
【０１８０】
ステップＳＴ２４５において、ＮＡＮＤフラッシュメモリ１００は、ステップＳＴ２４４において特定されたメモリセルトランジスタＭＴに対して、ステップＳＴ２４２において設定されたパラメタにしたがって上書き処理を実行する。これにより、閾値電圧の分布のうち、電圧が低い方の分布を高電圧側にシフトさせることができる。
【０１８１】
ステップＳＴ２４６において、ＮＡＮＤフラッシュメモリ１００は、上書きリフレッシュ処理の完了をメモリコントローラ２００に通知する。
【０１８２】
以上により、上書きリフレッシュ処理が終了する。
【０１８３】
１．２．５．２  コマンドシーケンス
次に、メモリコントローラ２００から発行される上書きリフレッシュ処理のコマンドシーケンスについて説明する。
【０１８４】
まず、第１実施形態に係るメモリシステムの上書きリフレッシュ処理における、期待データを取得するためのコマンドシーケンスについて図１９を用いて説明する。具体的には、図１９では、上書きリフレッシュ処理の実行対象であるワード線ＷＬから期待データを取得するために、シフトリード処理によってデータを読み出すためのコマンドシーケンスが示される。なお、図２０以降に示されるコマンドシーケンスでは、連続する一連のコマンドシーケンスが、複数行にわたって示される場合がある。この場合、一連のコマンドシーケンスは、ある行に示されたコマンドシーケンスから、当該行の末尾に付されたローマ数字（Ｉ，ＩＩ等）と同一のローマ数字が先頭に付された行に向かって、連続して実行されるものとする。
【０１８５】
図１９に示すように、まず、メモリコントローラ２００は、コマンド“ＥＦｈ”をＮＡＮＤフラッシュメモリ１００へ送信する。コマンド“ＥＦｈ”は、設定変更の旨をＮＡＮＤフラッシュメモリ１００に宣言するセットフィーチャコマンドである。引き続き、メモリコントローラ２００は、１サイクルにわたってアドレスＡＤＤを送信した後、データを４サイクルにわたって送信する（“Ｄ０”〜“Ｄ３”）。このデータ“Ｄ０”〜“Ｄ３”が、セットフィーチャコマンドにより変更される設定値に関する情報であり、ここではシフトリード処理に適用されるシフト量ΔＶＡ〜ΔＶＧを含む。これにより、ＮＡＮＤフラッシュメモリ１００において、シフト量ΔＶＡ〜ΔＶＧがアドレスＡＤＤにセットされ、以降のシフトリード処理に適用される。
【０１８６】
続いて、メモリコントローラ２００は、コマンド“０１ｈ”及び読出しコマンド“００ｈ”を発行し、ＮＡＮＤフラッシュメモリ１００に送信する。コマンド“００ｈ”は、ＮＡＮＤフラッシュメモリ１００からのデータの読出しを命令するコマンドである。ＮＡＮＤフラッシュメモリ１００は、連続するコマンド“０１ｈ”及びコマンド“００ｈ”を受け取ると、下位データの読出し命令であることを認識する。
【０１８７】
メモリコントローラ２００は、例えば５サイクルにわたってアドレスＡＤＤを発行し、ＮＡＮＤフラッシュメモリ１００に送信する。続いてメモリコントローラ２００は、コマンド“３０ｈ”を発行し、ＮＡＮＤフラッシュメモリ１００に送信する。コマンド“３０ｈ”によって、シーケンサ１７０は、読出し処理を開始し、信号ＲＢｎを“Ｌ”レベルにして、ＮＡＮＤフラッシュメモリ１００がビジー状態であることをメモリコントローラ２００に知らせる。下位データの読出しが完了した後、シーケンサ１７０は、信号ＲＢｎを“Ｈ”レベルにして、ＮＡＮＤフラッシュメモリ１００がレディ状態であることをメモリコントローラ２００に知らせる。ＮＡＮＤフラッシュメモリ１００は、読み出した下位データをメモリコントローラ２００に転送する。以下の説明では、データの「読出し」は、ＮＡＮＤフラッシュメモリ１００におけるデータの読出し、及び当該読み出したデータのメモリコントローラ２００への転送を含むものとする。
【０１８８】
続いて、メモリコントローラ２００は、中位データの読出し、及び上位データの読出しを実行する。中位データ及び上位データの読出しに際しては、コマンド“００ｈ”に代えて、コマンド“０２ｈ”及び“０３ｈ”がそれぞれ発行される。これにより、ＮＡＮＤフラッシュメモリ１００は、連続するコマンド“０２ｈ”及びコマンド“００ｈ”を受け取ると、中位データの読出し命令であることを認識し、連続するコマンド“０３ｈ”及びコマンド“００ｈ”を受け取ると、上位データの読出し命令であることを認識する。
【０１８９】
各データの読出しが完了した後、ＥＣＣ回路２６０は、読み出したデータの誤り訂正を実行し、期待データを得る。なお、ＥＣＣ回路２６０は、各データの読出しが完了したら、各々のデータについて順次誤り訂正を実行してもよい。以上で、上書きリフレッシュ処理が終了する。
【０１９０】
続いて、第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理に際して実行される、パラメタを設定するためのコマンドシーケンスについて、図２０を用いて説明する。具体的には、図２０では、上書きリフレッシュ処理の実行対象であるワード線ＷＬに印加される電圧を設定するためのコマンドシーケンスが示される。
【０１９１】
図２０に示すように、メモリコントローラ２００は、例えば、４回にわたりセットフィーチャのコマンドセットを発行する。図２０の例では、セットフィーチャのコマンドセットは、コマンド“ＥＦｈ”、アドレス（“Ｘ１ｈ”、“Ｘ２ｈ”、“Ｘ３ｈ”、又は“Ｘ４ｈ”）、及び４サイクルにわたるデータ“Ｄ０”〜“Ｄ３”の組を示す。
【０１９２】
具体的には、まず、メモリコントローラ２００は、コマンド“ＥＦｈ”をＮＡＮＤフラッシュメモリ１００へ送信する。コマンド“ＥＦｈ”は、設定変更の旨をＮＡＮＤフラッシュメモリ１００に宣言するセットフィーチャコマンドである。引き続き、メモリコントローラ２００は、アドレス“Ｘ１ｈ”を送信する。アドレス“Ｘ１ｈ”は、ＮＡＮＤフラッシュメモリ１００において、セットフィーチャコマンドにより変更対象となる設定値を保持するフィーチャテーブル内のレジスタを指定するアドレスである。その後、メモリコントローラ２００は、データを４サイクルにわたって送信する（“Ｄ０”〜“Ｄ３”）。このデータ“Ｄ０”〜“Ｄ３”が、セットフィーチャコマンドにより変更される設定値に関する情報を含む。これにより、ＮＡＮＤフラッシュメモリ１００において、データ“Ｄ０”〜“Ｄ３”に含まれる情報がアドレス“Ｘ１ｈ”にセットされ、以降の上書きリフレッシュ処理に適用される。そして、上述と同様の動作が、アドレス“Ｘ２ｈ”、“Ｘ３ｈ”、及び“Ｘ４ｈ”についても実行される。
【０１９３】
図２１は、第１実施形態に係るメモリシステムにおけるフィーチャテーブルの一例を説明するための模式図である。図２１では、図２０において示されたアドレス“Ｘ１ｈ”、“Ｘ２ｈ”、“Ｘ３ｈ”、及び“Ｘ４ｈ”に保持される設定値の例が示される。
【０１９４】
図２１に示すように、アドレス“Ｘ１ｈ”及び“Ｘ２ｈ”には、例えば、プリベリファイ処理に適用されるベリファイ電圧のシフト量が補正量として保持される。より具体的には、アドレス“Ｘ１ｈ”には、データ“Ｄ０”〜“Ｄ３”に対応する情報としてそれぞれ、“Ａ”状態、“Ｂ”状態、“Ｃ”状態、及び“Ｄ”状態のメモリセルトランジスタＭＴに印加されるベリファイ電圧のシフト量ΔＡｖｆｙ、ΔＢｖｆｙ、ΔＣｖｆｙ、及びΔＤｖｆｙが保持される。アドレス“Ｘ２ｈ”には、データ“Ｄ０”〜“Ｄ２”に対応する情報としてそれぞれ、“Ｅ”状態、“Ｆ”状態、及び“Ｇ”状態のメモリセルトランジスタＭＴに印加されるベリファイ電圧のシフト量ΔＥｖｆｙ、ΔＦｖｆｙ、及びΔＧｖｆｙが保持される。シフト量ΔＡｖｆｙ、ΔＢｖｆｙ、…、及びΔＧｖｆｙは、例えば、通常の書込み動作時において各状態に適用される（デフォルト値の）ベリファイ電圧Ａｖｆｙ、Ｂｖｆｙ、…、及びＧｖｆｙからのマイナス側のシフト量として定義される。すなわち、プリベリファイ処理時におけるベリファイ電圧Ａｖｆｙ１、Ｂｖｆｙ１、…、及びＧｖｆｙ１はそれぞれ、セットフィーチャ処理によって、Ａｖｆｙ−ΔＡｖｆｙ、Ｂｖｆｙ−ΔＢｖｆｙ、…、及びＧｖｆｙ−ΔＧｖｆｙが適用される。これは、上述したように、消去状態からデータを書込んだ直後では閾値電圧が低電圧側にシフトしやすいが、上書き時にはこのような低電圧側へのシフトが発生しにくいと考えられるため、プリベリファイ処理時におけるベリファイ電圧は、デフォルト値のベリファイ電圧よりも低く設定し得るためである。また、上書きリフレッシュ処理によって、当初の書込み直後における理想の閾値分布の状態にまで必ずしも近づける必要が無いと判断される場合においても、プリベリファイ時におけるベリファイ電圧は、デフォルト値のベリファイ電圧よりも低い値が設定され得る。
【０１９５】
なお、上述の設定例はあくまで一例であり、ベリファイ電圧のシフト量ΔＡｖｆｙ〜ΔＧｖｆｙは、プラス側のシフト量として定義されてもよい。また、シフト量ΔＡｖｆｙ〜ΔＧｖｆｙは、同一の値となるものがあってもよいが、互いに異なる値が設定可能となっている。
【０１９６】
同様に、アドレス“Ｘ３ｈ”及び“Ｘ４ｈ”には、上書き処理に適用されるプログラム電圧のシフト量が補正量として保持される。より具体的には、アドレス“Ｘ３ｈ”には、データ“Ｄ０”〜“Ｄ３”に対応する情報としてそれぞれ、“Ａ”状態、“Ｂ”状態、“Ｃ”状態、及び“Ｄ”状態のメモリセルトランジスタＭＴに印加されるプログラム電圧のシフト量ΔＡｐｇｍ、ΔＢｐｇｍ、ΔＣｐｇｍ、及びΔＤｐｇｍが保持される。アドレス“Ｘ４ｈ”には、データ“Ｄ０”〜“Ｄ２”に対応する情報としてそれぞれ、“Ｅ”状態、“Ｆ”状態、及び“Ｇ”状態のメモリセルトランジスタＭＴに印加されるベリファイ電圧のシフト量ΔＥｐｇｍ、ΔＦｐｇｍ、及びΔＧｐｇｍが保持される。シフト量ΔＡｐｇｍ、ΔＢｐｇｍ、…、及びΔＧｐｇｍは、例えば、通常のプログラム処理時における１回目のループに適用されるプログラム電圧ＶＰＧＭ０からのシフト量として定義される。すなわち、上書き時におけるプログラム電圧ＶＰＧＭ＿Ａ、ＶＰＧＭ＿Ｂ、…、及びＶＰＧＭ＿Ｇはそれぞれ、ＶＰＧＭ０＋ΔＡｐｇｍ、ＶＰＧＭ０＋ΔＢｐｇｍ、…、及びＶＰＧＭ０＋ΔＧｐｇｍが適用される。上書き時におけるプログラム電圧ＶＰＧＭ＿Ａ〜ＶＰＧＭ＿Ｇは、例えば、状態に対応する閾値電圧が高い状態ほど高い電圧値となるように設定される（ＶＰＧＭ＿Ａ≦ＶＰＧＭ＿Ｂ≦…≦ＶＰＧＭ＿Ｇ）。このように、シフト量ΔＡｐｇｍ、ΔＢｐｇｍ、…、及びΔＧｐｇｍは、同一の値となるものがあってもよいが、互いに異なる値が設定可能となっている。
【０１９７】
次に、第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理をＮＡＮＤフラッシュメモリに実行させるためのコマンドシーケンスについて、図２２を用いて説明する。図２２に示されるコマンドシーケンスは、図２０に示された設定変更に係るコマンドシーケンスに続いて発行される。
【０１９８】
図２２に示すように、メモリコントローラ２００は、まずプリフィックスコマンド“ＸＸｈ”を発行する。コマンド“ＸＸｈ”は、メモリコントローラ２００がＮＡＮＤフラッシュメモリ１００に対して、上書きリフレッシュ処理を実行する旨を宣言するためのコマンドである。引き続きメモリコントローラ２００は、例えば、コマンド“０１ｈ”及び書込みコマンド“８０ｈ”を発行し、ＮＡＮＤフラッシュメモリ１００に送信する。コマンド“８０ｈ”は、ＮＡＮＤフラッシュメモリ１００へのデータの書込みを命令するコマンドである。ＮＡＮＤフラッシュメモリ１００は、連続するコマンド“０１ｈ”及びコマンド“８０ｈ”を受け取ると、後続する書込みデータＤＡＴが下位データであることを認識する。
【０１９９】
メモリコントローラ２００は、例えば５サイクルにわたってアドレスＡＤＤを発行し、ＮＡＮＤフラッシュメモリ１００に送信する。このアドレスＡＤＤは、例えば、図１０のステップＳＴ２１及びＳＴ２２において、上書きリフレッシュ処理の対象と判定されたブロックＢＬＫ内の特定のワード線ＷＬに接続されたメモリセルトランジスタＭＴ（例えば、ストリングユニットＳＵ内の特定のセルユニットＣＵ）のアドレスを指定する。続いてメモリコントローラ２００は、下位データを示す書込みデータＤＡＴをＮＡＮＤフラッシュメモリ１００に送信する。当該書込みデータＤＡＴには、例えば、図１０に示されるステップＳＴ１６又はＳＴ１８において誤り訂正されたデータ（すなわち、期待データ）が用いられる。
【０２００】
メモリコントローラ２００は、コマンド“１Ａｈ”を発行し、ＮＡＮＤフラッシュメモリ１００に送信する。コマンド“１Ａｈ”によって、シーケンサ１７０は、信号ＲＢｎを“Ｌ”レベルにし、直前に受信したデータＤＡＴ（すなわち、下位データに対応する期待データ）が選択センスアンプユニットＳＡＵ内のラッチ回路（例えばラッチ回路ＡＤＬ）へ入力される。下位データの入力が完了した後、シーケンサ１７０は、信号ＲＢｎを“Ｈ”レベルにして、ＮＡＮＤフラッシュメモリ１００がレディ状態であることをメモリコントローラ２００に知らせる。
【０２０１】
続いて、メモリコントローラ２００は、コマンド“０２ｈ”及び“８０ｈ”を発行し、ＮＡＮＤフラッシュメモリ１００に送信する。ＮＡＮＤフラッシュメモリ１００は、連続するコマンド“０２ｈ”及びコマンド“８０ｈ”を受け取ると、後続する書込みデータＤＡＴが中位データであることを認識する。メモリコントローラ２００は、５サイクルにわたってアドレスＡＤＤを発行した後、中位データを示す書込みデータＤＡＴをＮＡＮＤフラッシュメモリ１００に送信する。
【０２０２】
メモリコントローラ２００は、コマンド“１Ａｈ”を発行し、ＮＡＮＤフラッシュメモリ１００に送信する。コマンド“１Ａｈ”によって、シーケンサ１７０は、信号ＲＢｎを“Ｌ”レベルにし、直前に受信したデータＤＡＴ（すなわち、中位データに対応する期待データ）が選択センスアンプユニットＳＡＵ内のラッチ回路（例えばラッチ回路ＢＤＬ）へ入力される。中位データの入力が完了した後、シーケンサ１７０は、信号ＲＢｎを“Ｈ”レベルにして、ＮＡＮＤフラッシュメモリ１００がレディ状態であることをメモリコントローラ２００に知らせる。
【０２０３】
続いて、メモリコントローラ２００は、コマンド“０３ｈ”及び“８０ｈ”を発行し、ＮＡＮＤフラッシュメモリ１００に送信する。ＮＡＮＤフラッシュメモリ１００は、連続するコマンド“０３ｈ”及びコマンド“８０ｈ”を受け取ると、後続する書込みデータＤＡＴが上位データであることを認識する。メモリコントローラ２００は、５サイクルにわたってアドレスＡＤＤを発行した後、上位データを示す書込みデータＤＡＴをＮＡＮＤフラッシュメモリ１００に送信する。
【０２０４】
メモリコントローラ２００は、コマンド“１０ｈ”を発行し、ＮＡＮＤフラッシュメモリ１００に送信する。コマンド“１０ｈ”によって、シーケンサ１７０は、信号ＲＢｎを“Ｌ”レベルにし、直前に受信したデータＤＡＴ（すなわち、上位データに対応する期待データ）が選択センスアンプユニットＳＡＵ内のラッチ回路（例えばラッチ回路ＣＤＬ）へ入力される。上位データの入力が完了した後、ＮＡＮＤフラッシュメモリ１００は、入力されたデータに基づく上書きリフレッシュ処理（すなわち、プリベリファイ処理及び上書き処理）を実行する。上書きリフレッシュ処理が終了すると、シーケンサ１７０は、信号ＲＢｎを“Ｈ”レベルにして、上書きリフレッシュ処理が完了したことをメモリコントローラ２００に知らせる。
【０２０５】
以上で、上書きリフレッシュ処理が終了する。
【０２０６】
１．２．５．３  タイミングチャート
次に、上書きリフレッシュ処理の際のタイミングチャートついて説明する。
【０２０７】
まず、第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理に際して実行されるプリベリファイ処理のタイミングチャートについて、図２３を用いて説明する。すなわち、図２３は、図１８において示されたステップＳＴ２４４に対応する。図２３では、プリベリファイ処理時にＮＡＮＤフラッシュメモリ１００内のビット線ＢＬ、セレクトゲート線ＳＧＤ及びＳＧＳ、選択ワード線ＷＬ、非選択ワード線ＷＬ、及び信号ＳＴＢに印加される電圧の推移が示される。
【０２０８】
ビット線ＢＬの電圧は、例えば、センスアンプＳＡ内に含まれるセンスノード（図示せず）に転送される。これにより、センスノードの電圧は、選択ワード線に接続されたメモリセルトランジスタＭＴがオン状態となるかオフ状態となるかに応じて変動する。そして、センスノードの電圧の変動量に応じてデータが“０”か“１”かが判定される。本例では、センスノードの電圧が或る閾値を下回った際には、センスアンプＳＡはメモリセルトランジスタＭＴがオン状態であると判定し、内部のラッチ回路にデータ“０”を保持する。逆に、センスノードの電圧が当該閾値以上を維持すれば、センスアンプＳＡはメモリセルトランジスタＭＴがオフ状態であると判定し、データ“１”を保持する。
【０２０９】
図２３に示すように、ＮＡＮＤフラッシュメモリ１００は、プリベリファイ処理において、上書き処理を実行するメモリセルトランジスタＭＴを特定する処理を、“Ａ”状態〜“Ｇ”状態についてそれぞれ実行する。具体的には、時刻Ｔ１〜Ｔ１８がプリベリファイ処理の全体期間であり、そのうちの時刻Ｔ３〜Ｔ５の期間ＤｐｖｆｙＡ、Ｔ５〜Ｔ７の期間ＤｐｖｆｙＢ、Ｔ７〜Ｔ９の期間ＤｐｖｆｙＣ、Ｔ９〜Ｔ１１の期間ＤｐｖｆｙＤ、Ｔ１１〜Ｔ１３の期間ＤｐｖｆｙＥ、Ｔ１３〜Ｔ１５の期間ＤｐｖｆｙＦ、及びＴ１５〜Ｔ１７の期間ＤｐｖｆｙＧがそれぞれ“Ａ”状態〜“Ｇ”状態用のプリベリファイ処理に相当する。
【０２１０】
時刻Ｔ１において、ロウデコーダ１２０は、ワード線ＷＬに電圧ＶＲＥＡＤを印加し、セレクトゲート線ＳＧＳ及び選択ストリングユニットＳＵに対応するセレクトゲート線ＳＧＤ（選択ＳＧＤ）に電圧ＶＳＧを印加する。電圧ＶＳＧは、選択トランジスタＳＴ１及びＳＴ２をオン状態とする電圧である。なお、非選択ストリングユニットＳＵに対応するセレクトゲート線ＳＧＤ（非選択ＳＧＤ）には、電圧ＶＳＳ（例えば、０Ｖ）が印加される。これにより、選択ストリングユニットＳＵが選択される。
【０２１１】
時刻Ｔ２において、ロウデコーダ１２０は、選択ワード線ＷＬに電圧ＶＳＳを印加し、センスアンプＳＡは、ビット線ＢＬに電圧ＶＳＳより高い電圧ＶＳＥＮを印加する。
【０２１２】
時刻Ｔ３において、ロウデコーダ１２０は、選択ワード線ＷＬに電圧Ａｖｆｙ１を印加する。そして、シーケンサ１７０は、選択ワード線ＷＬに電圧Ａｖｆｙ１が印加されている間である時刻Ｔ４において、信号ＳＴＢをアサート（図２３の例では、“Ｈ”レベルに）する。
【０２１３】
例えば、選択ワード線ＷＬに電圧Ａｖｆｙ１が印加されることによってメモリセルトランジスタＭＴがオンした場合には、ビット線ＢＬからソース線ＳＬに電流が流れる。この結果、センスノードの電荷も放電され、センスノードの電位が低下する。シーケンサ１７０は、時刻Ｔ４において信号ＳＴＢをアサートして、センスノードの状態をラッチ回路（例えば、ラッチ回路ＳＤＬ）に取り込む。つまり、メモリセルトランジスタＭＴがオンしていればプリベリファイ処理にフェイルしたとしてラッチ回路ＳＤＬにデータ“０”が格納され、オフしていればプリベリファイ処理にパスしたとしてラッチ回路ＳＤＬにデータ“１”が保持される。これにより、ラッチ回路ＳＤＬには、電圧Ａｖｆｙ１によるプリベリファイ処理の結果が保持される。
【０２１４】
シーケンサ１７０は、期待データが“Ａ”状態であり、かつ電圧Ａｖｆｙ１によってオフ状態となった（“Ａ”状態用のプリベリファイ処理にパスした）メモリセルトランジスタＭＴを抽出する。そして、シーケンサ１７０は、“Ａ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴに接続されたビット線ＢＬが、後続する上書きの際に上書き処理禁止（インヒビット）状態となるように、ラッチ回路に対してマスク処理を施す。具体的には、センスアンプＳＡ内の演算部ＯＰは、抽出されたメモリセルトランジスタＭＴに対応するラッチ回路ＡＤＬ〜ＣＤＬに期待データとして保持された“Ａ”状態に対応するデータ“１１０”を、“Ｅｒ”状態に対応するデータ“１１１”に変更する。これにより、期待データが“Ａ”状態のメモリセルトランジスタＭＴは、閾値電圧が電圧Ａｖｆｙ１以上のものに対しては上書き処理が禁止される一方、閾値電圧が電圧Ａｖｆｙ１未満のものに対しては上書き処理が許可される。
【０２１５】
続いて、時刻Ｔ５において、ロウデコーダ１２０は、選択ワード線ＷＬに電圧Ｂｖｆｙ１を印加する。そして、シーケンサ１７０は、選択ワード線ＷＬに電圧Ｂｖｆｙ１が印加されている間である時刻Ｔ６において、信号ＳＴＢをアサートして、センスノードの状態をラッチ回路ＳＤＬに取り込む。これにより、ラッチ回路ＳＤＬには、電圧Ｂｖｆｙ１によるプリベリファイ処理の結果が保持される。
【０２１６】
シーケンサ１７０は、期待データが“Ｂ”状態であり、かつ電圧Ｂｖｆｙ１によってオフ状態となった（“Ｂ”状態用のプリベリファイ処理にパスした）メモリセルトランジスタＭＴを抽出する。そして、シーケンサ１７０は、“Ｂ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴに接続されたビット線ＢＬが、後続する上書きの際に上書き禁止状態となるように、ラッチ回路に対してマスク処理を施す。具体的には、センスアンプＳＡ内の演算部ＯＰは、抽出されたメモリセルトランジスタＭＴに対応するラッチ回路ＡＤＬ〜ＣＤＬに期待データとして保持された“Ｂ”状態に対応するデータ“１００”を、“Ｅｒ”状態に対応するデータ“１１１”に変更する。これにより、期待データが“Ｂ”状態のメモリセルトランジスタＭＴは、閾値電圧が電圧Ｂｖｆｙ１以上のものに対しては上書き処理が禁止される一方、閾値電圧が電圧Ｂｖｆｙ１未満のものに対しては上書き処理が許可される。
【０２１７】
以下同様にして、シーケンサ１７０は、期待データが“Ｃ”状態〜“Ｇ”状態のメモリセルトランジスタＭＴはそれぞれ、閾値電圧が電圧Ｃｖｆｙ１〜Ｇｖｆｙ１以上のものに対しては上書き処理が禁止される一方、閾値電圧が電圧Ｃｖｆｙ１〜Ｇｖｆｙ１未満のものに対しては上書き処理が許可される。
【０２１８】
“Ａ”状態〜“Ｇ”状態までの状態に対する全てのプリベリファイ処理が完了した後、時刻Ｔ１７において、ビット線ＢＬは、電圧ＶＳＳに放電される。時刻Ｔ１８において、ロウデコーダ１２０は、ワード線ＷＬ、並びにセレクトゲート線ＳＧＳ及びＳＧＤに電圧ＶＳＳを印加し、プリベリファイ処理が終了する。
【０２１９】
以上のように動作することにより、プリベリファイ処理によって上書き処理が実行されるメモリセルトランジスタＭＴが特定される。
【０２２０】
次に、第１実施形態に係るメモリシステムにおける上書きリフレッシュ処理に際して実行される上書き処理のタイミングチャートについて、図２４を用いて説明する。すなわち、図２４は、図１８において示されたステップＳＴ２４５に対応する。図２４では、上書き処理時にＮＡＮＤフラッシュメモリ１００内のビット線ＢＬ、セレクトゲート線ＳＧＤ及びＳＧＳ、選択ワード線ＷＬ、非選択ワード線ＷＬ、及びソース線ＳＬに印加される電圧の推移が示される。
【０２２１】
図２４に示すように、ＮＡＮＤフラッシュメモリ１００は、上書き処理において、“Ａ”状態〜“Ｇ”状態の各々について個別に１つの上書き用のプログラム電圧を使用する。具体的には、時刻Ｔａ１〜Ｔａ８の期間ＤｒｐｇｍＡ、時刻Ｔｂ１〜Ｔｂ８の期間ＤｒｐｇｍＢ、時刻Ｔｃ１〜Ｔｃ８の期間ＤｒｐｇｍＣ、時刻Ｔｄ１〜Ｔｄ８の期間ＤｒｐｇｍＤ、時刻Ｔｅ１〜Ｔｅ８の期間ＤｒｐｇｍＥ、時刻Ｔｆ１〜Ｔｆ８の期間ＤｒｐｇｍＦ、及び時刻Ｔｇ１〜Ｔｇ８の期間ＤｒｐｇｍＧがそれぞれ“Ａ”状態〜“Ｇ”状態用の上書き処理に相当する。
【０２２２】
時刻Ｔａ１において、ロウデコーダ１２０は、選択ＳＧＤに電圧ＶＳＧを印加し、セレクトゲート線ＳＧＳに電圧ＶＳＧＳを印加する。また、ソース線ＳＬには電圧ＶＤＤが印加される。電圧ＶＳＧＳは、電圧ＶＳＳより大きく、選択トランジスタＳＴ２をオフ状態とする電圧である。なお、非選択ＳＧＤには、電圧ＶＳＳが印加される。これにより、選択ストリングユニットＳＵが選択される。
【０２２３】
時刻Ｔａ２において、センスアンプＳＡは、ラッチ回路ＡＤＬ〜ＣＤＬに“Ａ”状態に対応するデータ“１１０”が保持された（すなわち、期待データが“Ａ”状態に対応し、かつ“Ａ”状態に対応するプリベリファイ処理にフェイルした）メモリセルトランジスタＭＴを抽出する。そして、センスアンプＳＡは、当該抽出されたメモリセルトランジスタＭＴを上書き処理の対象とみなし、当該メモリセルトランジスタＭＴに接続されたビット線ＢＬに電圧ＶＳＳを印加して上書き許可状態にする。一方、センスアンプＳＡは、その他のメモリセルトランジスタＭＴを上書き処理の対象でないとみなし、当該メモリセルトランジスタＭＴに接続されたビット線ＢＬに電圧ＶＤＤを印加して上書き禁止状態にする。
【０２２４】
時刻Ｔａ３において、ロウデコーダ１２０は、ワード線ＷＬに電圧ＶＰＡＳＳを印加する。電圧ＶＰＡＳＳは、上書き処理が許可されたＮＡＮＤストリングＮＳでは非選択ワード線ＷＬに接続されたメモリセルトランジスタＭＴの閾値電圧上昇を抑制しつつ、上書き処理が禁止されたＮＡＮＤストリングＮＳではメモリセルトランジスタＭＴの閾値上昇を抑制できる程度にカップリングによりチャネルを上昇させることのできる大きさを有する。
【０２２５】
時刻Ｔａ４において、ロウデコーダ１２０は、選択ＳＧＤに電圧ＶＳＧＤを印加する。電圧ＶＳＧＤは、上書き処理が許可されたＮＡＮＤストリングＮＳにおける選択トランジスタＳＴ１をオン状態とし、かつ上書き処理が禁止されたＮＡＮＤストリングＮＳにおける選択トランジスタＳＴ１をオフ状態とする電圧である。
【０２２６】
時刻Ｔａ５において、ロウデコーダ１２０は、選択ワード線ＷＬに電圧ＶＰＧＭ＿Ａを印加し、非選択ワード線ＷＬには引き続き電圧ＶＰＡＳＳを印加する。これにより、選択ワード線ＷＬに接続されたメモリセルトランジスタＭＴのうち、時刻Ｔａ２において“Ａ”状態用の上書き処理の対象であるメモリセルトランジスタＭＴの閾値電圧が上昇する。
【０２２７】
時刻Ｔａ６において、ロウデコーダ１２０は、選択ワード線ＷＬに電圧ＶＰＡＳＳを印加する。時刻Ｔａ７において、ロウデコーダ１２０は、選択ＳＧＤに電圧ＶＳＳを印加し、センスアンプＳＡは、ビット線ＢＬに電圧ＶＳＳを印加する。時刻Ｔａ８において、ロウデコーダ１２０は、ワード線ＷＬに電圧ＶＳＳを印加する。
【０２２８】
以上により、“Ａ”状態を対象とする上書き処理が終了する。
【０２２９】
以降の期間ＤｒｐｇｍＢ、ＤｒｐｇｍＣ、…、及びＤｒｐｇｍＧにおいても、セレクトゲート線ＳＧＤ及びＳＧＳ，並びにソース線ＳＬは、期間ＤｒｐｇｍＡと同様に動作する。また、センスアンプＳＡは、期間ＤｒｐｇｍＢ〜ＤｒｐｇｍＧにおいて、ラッチ回路ＡＤＬ〜ＣＤＬにそれぞれ“Ｂ”状態〜“Ｇ”状態に対応するデータが保持された（すなわち、期待データがそれぞれ“Ｂ”状態〜“Ｇ”状態に対応し、かつそれぞれ“Ｂ”状態〜“Ｇ”状態に対応するプリベリファイ処理にフェイルした）メモリセルトランジスタＭＴを抽出する。そして、センスアンプＳＡは、“Ｂ”状態〜“Ｇ”状態それぞれついて抽出されたメモリセルトランジスタＭＴを、期間ＤｒｐｇｍＢ〜ＤｒｐｇｍＧにおいてそれぞれ上書き処理の対象とみなし、対応するビット線ＢＬに電圧ＶＳＳを印加して上書き許可状態にする。一方、センスアンプＳＡは、その他のメモリセルトランジスタＭＴを上書き処理の対象でないとみなし、当該メモリセルトランジスタＭＴに接続されたビット線ＢＬに電圧ＶＤＤを印加して上書き禁止状態にする。ロウデコーダ１２０は、期間ＤｒｐｇｍＢ〜ＤｒｐｇｍＧにおいて、選択ワード線ＷＬにそれぞれ電圧ＶＰＧＭ＿Ｂ、ＶＰＧＭ＿Ｃ、…、及びＶＰＧＭ＿Ｇを印加し、上書き処理対象のメモリセルトランジスタＭＴの閾値電圧を上昇させる。
【０２３０】
以上のように動作することにより、“Ａ”状態〜“Ｇ”状態の各々に対して個別に用意されたプログラム電圧を用いて上書き処理を実行することができる。これにより、各状態に対応する閾値分布のうちの最低電圧近傍を個別に高電圧側にシフトさせることができる。
【０２３１】
１．３  本実施形態に係る効果
第１実施形態によれば、メモリコントローラ２００は、メモリセルトランジスタＭＴからデータを読出した際、当該メモリセルトランジスタＭＴの閾値電圧の分布が変動要因によってどの程度変動しているかを判定し、ワード線ＷＬ単位で管理する。判定の結果、共通のワード線ＷＬに接続された複数のメモリセルトランジスタＭＴが第１条件を満たすと判定された場合、メモリコントローラ２００は、上書きリフレッシュ処理及びブロックリフレッシュ処理等のいずれかのリフレッシュ処理を実行することを決定する。更なる判定の結果、第１条件を満たすと判定された複数のメモリセルトランジスタＭＴが第２条件を満たすと判定された場合、メモリコントローラ２００は、ワード線ＷＬ単位で上書きリフレッシュ処理の実行を決定する。一方、第２条件を満たさないと判定された場合、メモリコントローラ２００は、当該ワード線ＷＬを含むブロックＢＬＫ単位でリフレッシュ処理の実行を決定する。これにより、メモリセルトランジスタＭＴの閾値分布を理想の状態に近づける際に、ブロックリフレッシュ処理と、上書きリフレッシュ処理と、を適切に使い分けることができる。
【０２３２】
補足すると、上書きリフレッシュ処理は、既にデータが書込まれているブロックＢＬＫのうち、特定のワード線ＷＬに対してのみ上書き処理を実行する。このため、上書きリフレッシュ処理は、ブロックＢＬＫ内の全データを他のブロックＢＬＫに書き換えるブロックリフレッシュ処理よりも短時間で実行可能である。また、上書きリフレッシュ処理は、既にデータが書込まれているワード線ＷＬに対して上書き処理を実行する。このため、消去状態からの書込みよりもプログラムループ数が少なくて済み、より短時間で実行可能である。このように、上書きリフレッシュ処理は、ホスト機器３００からの指示による他の動作に与える影響を軽減することができ、ひいては、リフレッシュ処理に伴うレイテンシの悪化を抑制できる。一方、上書きリフレッシュ処理は、データを上書きするため、上書き対象と隣り合うメモリセルトランジスタＭＴの閾値電圧を上昇させ得る。これにより、上書きリフレッシュ処理を何度も実行することにより、隣り合う２つの閾値分布のうちの一方の最高電圧近傍と他方の最低電圧近傍とが重なりやすくなり、閾値分布を理想の状態に近づける効果が小さくなり得る。
【０２３３】
第１実施形態では、メモリコントローラ２００は、第１条件として、ＥＣＣ回路２６０の誤り訂正条件、エラービット数、読出し電圧のシフト量、書込み完了からの経過時間、同一ページからの総読出し回数等を、ワード線ＷＬ又はブロック単位ＢＬＫ等で管理し、評価する。これにより、メモリコントローラ２００は、第１条件によって、メモリセルトランジスタＭＴが何らかのリフレッシュ処理によって閾値分布を改善させる必要があるか否かを判定できる。また、メモリコントローラ２００は、第２条件として、所定範囲内に閾値電圧を有するメモリセル数、高電圧側エラービット数、Ｖｔｈトラッキング処理によって決定された読出し電圧のデフォルトの読出し電圧からのシフト量、ＥＣＣ回路２６０の誤り訂正条件、エラービット数の減少率、上書きリフレッシュの実行回数又は実行頻度、及び第１条件を満たすワード線ＷＬのＮＡＮＤストリング上の位置等を、ワード線ＷＬ単位で管理し、評価する。これにより、メモリコントローラ２００は、第２条件によって、第１条件を満たすメモリセルトランジスタＭＴの閾値分布に対して、上書きリフレッシュの有効性を評価することができる。具体的には、例えば、所定範囲内に閾値電圧を有するメモリセル数や高電圧側エラービット数、Ｖｔｈトラッキング処理によって決定された読出し電圧のデフォルトの読出し電圧からのシフト量等は、特に、“Ｅｒ”状態と“Ａ”状態とに対応する閾値分布間で増加し易く、上書きリフレッシュ処理によって改善しにくい。また、例えば、上書きリフレッシュ処理の実行頻度は、上書きリフレッシュ処理の実行回数が増加するほど、高頻度となりやすい。また、例えば、第１条件を満たすワード線ＷＬの位置がＮＡＮＤストリングＮＳ上の端部に位置する場合、その他のワード線ＷＬに対応するメモリセルトランジスタＭＴの閾値分布は正常範囲内であり得る（すなわち第１条件を満たさない）。しかしながら、第１条件を満たすワード線ＷＬの位置が端部以外の位置である場合、その他のワード線ＷＬに対応するメモリセルトランジスタＭＴの閾値分布も同様に正常範囲外で有り得る（すなわち第１条件を満たす）。このように、第１条件と第２条件とを適切に組み合わせることにより、何らかのリフレッシュ処理の実行が必要なメモリセルトランジスタＭＴに対して、上書きリフレッシュ処理又はブロックリフレッシュ処理のいずれが適切かを判定できる。したがって、リフレッシュ処理によってデータを読出し可能な状態に閾値分布を維持することによって読出しの失敗に伴うレイテンシの悪化を抑制すると共に、適切なリフレッシュ処理を選択することよってリフレッシュ処理の実行に伴うレイテンシの悪化を抑制することができる。
【０２３４】
また、上述した第１条件及び第２条件の具体的な要件は、各条件に対して１つずつである必要はなく、複数の要件を組み合わされてもよい。これにより、より適切な条件を設定することができる。
【０２３５】
また、メモリコントローラ２００は、上書きリフレッシュ処理の実行を決定した後、ＮＡＮＤフラッシュメモリ１００に対して、上書きリフレッシュ処理のための各種設定を指示するセットフィーチャコマンドと、プリベリファイ処理及び上書き処理を指示するコマンドと、を含む、一連のコマンドセットを発行する。これにより、ＮＡＮＤフラッシュメモリ１００は、プリベリファイ処理及び上書き処理の際に選択ワード線ＷＬに印加される電圧の、デフォルト値からの補正量を設定することができ、当該設定された補正量に基づき、プリベリファイ処理及び上書き処理を実行することができる。補正量は、（“Ａ”状態〜“Ｇ”状態に対応する）期待データの各々に応じて個別に設定可能である。すなわち、ＮＡＮＤフラッシュメモリ１００は、各状態に対して個別のベリファイ電圧及び上書き電圧を印加することができる。これにより、閾値電圧の大きさに応じてより適切な電圧を印加することができ、ひいては、閾値分布をより理想の状態に近づけることができる。
【０２３６】
２．  第２実施形態
次に、第２実施形態に係るメモリシステムについて説明する。第２実施形態は、上書きリフレッシュ処理を実行することが決定したワード線ＷＬに接続されたメモリセルトランジスタＭＴのうち、特定の状態を有するものに対してのみ上書きリフレッシュ処理を実行する点において、第１実施形態と異なる。以下では、第１実施形態と同等の構成及び動作についてはその説明を省略し、第１実施形態と異なる構成及び動作について主に説明する。
【０２３７】
２．１  コマンドシーケンスについて
第２実施形態に係るメモリシステムにおける上書きリフレッシュ処理に際して実行される、パラメタを設定するためのコマンドシーケンスについて説明する。第２実施形態におけるパラメタ設定のためのコマンドシーケンスは、第１実施形態において示された図２１と同様である。
【０２３８】
図２５は、第２実施形態に係るメモリシステムにおけるフィーチャテーブルの一例を説明するための概念図である。図２５では、図２０において示されたアドレス“Ｘ１ｈ”、“Ｘ２ｈ”、“Ｘ３ｈ”、及び“Ｘ４ｈ”に保持される設定値の例が示される。
【０２３９】
図２５に示すように、アドレス“Ｘ１ｈ”〜“Ｘ４ｈ”に保持される情報は、アドレス“Ｘ２ｈ”内のデータ“Ｄ３”に対応する情報を除いて、第１実施形態において説明した図２１と同様である。
【０２４０】
アドレス“Ｘ２ｈ”のデータ“Ｄ３”に対応する部分には、“Ａ”状態〜“Ｇ”状態にのうち、いずれの状態に対してプリベリファイ処理を実施するかを示す情報が保持される。
【０２４１】
図２６は、第２実施形態に係るメモリシステムにおけるフィーチャテーブルの一例を説明するための概念図である。図２６では、図２５において示された概念図のうち、アドレス“Ｘ２ｈ”の内のデータ“Ｄ３”に対応する部分に保持される設定値の例が更に詳細に示される。
【０２４２】
図２６に示すように、アドレス“Ｘ２ｈ”内のデータ“Ｄ３”の１ビット目には、“Ａ”状態用のプリベリファイ処理を許可するか否かを示す情報が保持される。より具体的には、例えば、データ“Ｄ３”の１ビット目に“１”が保持されれば“Ａ”状態用のプリベリファイ処理が許可され、“０”が保持されれば禁止される。
【０２４３】
同様に、データ“Ｄ３”の２ビット目〜７ビット目にはそれぞれ、“Ｂ”状態〜“Ｇ”状態用のプリベリファイ処理を許可するか否かを示す情報が保持される。より具体的には、データ“Ｄ３”の２ビット目〜７ビット目に“１”が保持されれば、それぞれ“Ｂ”状態〜“Ｇ”状態用のプリベリファイ処理が許可され、“０”が保持されれば禁止される。
【０２４４】
例えば、“Ａ”状態〜“Ｃ”状態を期待値として有するメモリセルトランジスタＭＴのみを上書きリフレッシュ処理の対象とする場合、アドレス“Ｘ２ｈ”のデータ“Ｄ３”の１ビット目〜３ビット目に“１”が保持され、４ビット目〜７ビット目に“０”が保持される。また、例えば、“Ｆ”状態及び“Ｇ”状態を期待値として有するメモリセルトランジスタＭＴのみを上書きリフレッシュ処理の対象とする場合、アドレス“Ｘ２ｈ”のデータ“Ｄ３”の６ビット目及び７ビット目に“１”が保持され、１ビット目〜５ビット目に“０”が保持される。
【０２４５】
これにより、全ての状態のメモリセルトランジスタＭＴを対象としてプリベリファイ処理を実施するのでなく、特定の状態の期待データを有するメモリセルトランジスタＭＴに対してのみプリベリファイ処理を実行することができる。これにより、上書きリフレッシュ処理の実行範囲を特定の状態に限定することができる。
【０２４６】
２．２  タイミングチャートについて
第２実施形態に係るメモリシステムにおける上書きリフレッシュ処理の際のタイミングチャートについて、いくつかの例を用いて説明する。
【０２４７】
２．２．１  “Ａ”状態〜“Ｃ”状態が指定される場合
まず、“Ａ”状態〜“Ｃ”状態の期待値を有するメモリセルトランジスタＭＴが上書きリフレッシュ処理の対象範囲として指定された場合について、図２７を用いて説明する。
【０２４８】
図２７は、第２実施形態に係るメモリシステムにおける上書きリフレッシュ処理を説明するためのタイミングチャートである。すなわち、図２７は、プリベリファイ処理及び上書き処理の各々のタイミングチャートを含み、第１実施形態において示された図２３及び図２４に対応する。なお、図２７では、ビット線ＢＬ、セレクトゲート線ＳＧＤ及びＳＧＳ、選択ワード線ＷＬ、非選択ワード線ＷＬ、及びソース線ＳＬに印加される電圧の推移が示され、信号ＳＴＢについては便宜上省略されている。
【０２４９】
図２７に示すように、まず、ＮＡＮＤフラッシュメモリ１００は、プリベリファイ処理において、上書き処理を実行するメモリセルトランジスタＭＴを特定する動作を、“Ａ”状態〜“Ｃ”状態についてそれぞれ実行する。
【０２５０】
プリベリファイ処理の期間は、“Ａ”状態〜“Ｃ”状態用のプリベリファイ処理が実行される期間ＤｐｖｆｙＡ、ＤｐｖｆｙＢ、及びＤｐｖｆｙＣを含む。このため、図２３の場合と同様に、シーケンサ１７０は、期間ＤｐｖｆｙＡ〜ＤｐｖｆｙＣ毎にそれぞれ、期待データが“Ａ”状態であり、かつ“Ａ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴ、期待データが“Ｂ”状態であり、かつ“Ｂ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴ、及び期待データが“Ｃ”状態であり、かつ“Ｃ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴを抽出する。そして、シーケンサ１７０は、“Ａ”状態〜“Ｃ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴに接続されたビット線ＢＬが、後続する上書きの際に上書き禁止状態となる様に、ラッチ回路に対してマスク処理を施す。
【０２５１】
また、図２７に示されるプリベリファイ処理の期間には、その他の状態用のプリベリファイ処理が実行される期間（例えば、期間ＤｐｖｆｙＤ〜ＤｐｖｆｙＧ）は含まれない。このため、シーケンサ１７０は、プリベリファイ処理の期間が終了すると、プリベリファイが実行されなかった“Ｄ”状態〜“Ｇ”状態の期待データを有するメモリセルトランジスタＭＴに接続された全てのビット線ＢＬが後続する上書き処理の際に上書き禁止状態となるように、ラッチ回路に対してマスク処理を施す。これにより、上書き処理の対象を、“Ａ”状態〜“Ｃ”状態用のプリベリファイ処理にフェイルしたメモリセルトランジスタＭＴに限定することができる。
【０２５２】
引き続き、図２７に示すように、ＮＡＮＤフラッシュメモリ１００は、上書きにおいて、“Ａ”状態〜“Ｃ”状態の各々について個別に１つの上書き処理用のプログラム電圧を使用する。
【０２５３】
上書き処理の期間は、“Ａ”状態〜“Ｃ”状態用の上書き処理がそれぞれ実行される期間ＤｒｐｇｍＡ、ＤｒｐｇｍＢ、及びＤｒｐｇｍＣを含む。このため、図２４の場合と同様に、シーケンサ１７０は、期間ＤｒｐｇｍＡ〜ＤｒｐｇｍＣにおいて、ラッチ回路ＡＤＬ〜ＣＤＬにそれぞれ“Ａ”状態〜“Ｃ”状態に対応するデータが保持されたメモリセルトランジスタＭＴを抽出する。そして、シーケンサ１７０は、“Ａ”状態〜“Ｃ”状態それぞれついて抽出されたメモリセルトランジスタＭＴを、期間ＤｒｐｇｍＡ〜ＤｒｐｇｍＣにおいてそれぞれ上書き処理の対象とみなし、対応するビット線ＢＬに電圧ＶＳＳを印加して上書き許可状態にする。一方、センスアンプＳＡは、その他のメモリセルトランジスタＭＴを上書き処理の対象でないとみなし、当該メモリセルトランジスタＭＴに接続されたビット線ＢＬに電圧ＶＤＤを印加して上書き禁止状態にする。ロウデコーダ１２０は、期間ＤｒｐｇｍＡ〜ＤｒｐｇｍＣにおいて、選択ワード線ＷＬにそれぞれ電圧ＶＰＧＭ＿Ａ、ＶＰＧＭ＿Ｂ、及びＶＰＧＭ＿Ｃを印加し、上書き処理の対象のメモリセルトランジスタＭＴの閾値電圧を上昇させる。
【０２５４】
以上のように動作させることにより、“Ａ”状態〜“Ｃ”状態のみを対象として、上書きリフレッシュ処理を実行することができる。
【０２５５】
２．２．２  “Ｆ”状態及び“Ｇ”状態が指定される場合
次に、“Ｆ”状態及び“Ｇ”状態の期待値を有するメモリセルトランジスタＭＴが上書きリフレッシュ処理の対象範囲として指定された場合について、図２８を用いて説明する。
【０２５６】
図２８は、第２実施形態に係るメモリシステムにおける上書きリフレッシュ処理を説明するためのタイミングチャートである。図２８の基本的な構成は、図２７と同様である。
【０２５７】
図２８に示すように、まず、ＮＡＮＤフラッシュメモリ１００は、プリベリファイ処理において、上書き処理を実行するメモリセルトランジスタＭＴを特定する動作を、“Ｆ”状態及び“Ｇ”状態についてそれぞれ実行する。
【０２５８】
プリベリファイ処理の期間は、“Ｆ”状態及び“Ｇ”状態用のプリベリファイ処理が実行される期間ＤｐｖｆｙＦ、及びＤｐｖｆｙＧを含む。このため、図２３の場合と同様に、シーケンサ１７０は、期間ＤｐｖｆｙＦ及びＤｐｖｆｙＧ毎にそれぞれ、期待データが“Ｆ”状態であり、かつ“Ｆ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴ、及び期待データが“Ｇ”状態であり、かつ“Ｇ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴを抽出する。そして、シーケンサ１７０は、“Ｆ”状態及び“Ｇ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴに接続されたビット線ＢＬが、後続する上書き処理の際に上書き禁止状態となる様に、ラッチ回路に対してマスク処理を施す。
【０２５９】
また、図２８に示されるプリベリファイ処理の期間には、その他の状態用のプリベリファイ処理が実行される期間（例えば、期間ＤｐｖｆｙＡ〜ＤｐｖｆｙＥ）は含まれない。このため、シーケンサ１７０は、プリベリファイ処理の期間が終了すると、プリベリファイ処理が実行されなかった“Ａ”状態〜“Ｅ”状態の期待データを有するメモリセルトランジスタＭＴに接続された全てのビット線ＢＬが後続する上書きの際に上書き禁止状態となるように、ラッチ回路に対してマスク処理を施す。これにより、上書き対象を、“Ｆ”状態及び“Ｇ”状態用のプリベリファイ処理にフェイルしたメモリセルトランジスタＭＴに限定することができる。
【０２６０】
引き続き、図２７に示すように、ＮＡＮＤフラッシュメモリ１００は、上書き処理において、“Ｆ”状態及び“Ｇ”状態の各々について個別に１つの上書き処理用のプログラム電圧を使用する。
【０２６１】
上書き処理の期間は、“Ｆ”状態及び“Ｇ”状態用の上書き処理がそれぞれ実行される期間ＤｒｐｇｍＦ及びＤｒｐｇｍＧを含む。このため、図２４の場合と同様に、シーケンサ１７０は、期間ＤｒｐｇｍＦ及びＤｒｐｇｍＧにおいて、ラッチ回路ＡＤＬ〜ＣＤＬにそれぞれ“Ｆ”状態及び“Ｇ”状態に対応するデータが保持されたメモリセルトランジスタＭＴを抽出する。そして、シーケンサ１７０は、“Ｆ”状態及び“Ｇ”状態それぞれついて抽出されたメモリセルトランジスタＭＴを、期間ＤｒｐｇｍＦ〜ＤｒｐｇｍＧにおいてそれぞれ上書き処理の対象とみなし、対応するビット線ＢＬに電圧ＶＳＳを印加して上書き許可状態にする。一方、センスアンプＳＡは、その他のメモリセルトランジスタＭＴを上書き処理の対象でないとみなし、当該メモリセルトランジスタＭＴに接続されたビット線ＢＬに電圧ＶＤＤを印加して上書き禁止状態にする。ロウデコーダ１２０は、期間ＤｒｐｇｍＦ及びＤｒｐｇｍＧにおいて、選択ワード線ＷＬにそれぞれ電圧ＶＰＧＭ＿Ｆ、及びＶＰＧＭ＿Ｇを印加し、上書き処理対象のメモリセルトランジスタＭＴの閾値電圧を上昇させる。
【０２６２】
以上のように動作させることにより、“Ｆ”状態及び“Ｇ”状態のみを対象として、上書きリフレッシュ処理を実行することができる。
【０２６３】
２．３  本実施形態に係る効果
第２実施形態によれば、メモリコントローラ２００は、セットフィーチャコマンドによって、“Ａ”状態〜“Ｇ”状態のうち、上書きリフレッシュ処理を実行する状態を指定することができる。これにより、閾値分布に対してより細やかな修正を施すことができる。
【０２６４】
例えば、閾値分布のうちの最低電圧の近傍は、変動要因によって、“Ｆ”状態や“Ｇ”状態等の高電圧側において、より大きく低電圧側にシフトし得る。この場合、メモリコントローラ２００は、“Ｆ”状態及び“Ｇ”状態に対して上書きリフレッシュ処理を実行する旨をＮＡＮＤフラッシュメモリ１００に指示し得る。これにより、変動要因の影響を強く受ける状態に対して集中的に上書きリフレッシュ処理を実行することにより、少ない上書きパルスの印加によって高い改善効果を得ることができる。
【０２６５】
また、上書きリフレッシュ処理は、データの上書き処理を伴う。このため、高電圧側の状態に対応する閾値電圧を有するメモリセルトランジスタＭＴへの上書きリフレッシュ処理は、例えば、同一ブロックＢＬＫ内の非選択ワード線ＷＬに接続されたセルへの予期しない書込みの程度が大きくなり得る。この場合、メモリコントローラ２００は、“Ａ”状態〜“Ｃ”状態等に対して上書きリフレッシュ処理を実行する旨をＮＡＮＤフラッシュメモリ１００に指示し得る。これにより、上書き処理に伴う他セルへの予期しない書込みの影響を低減しつつ、閾値分布も改善させることができる。
【０２６６】
なお、このように、“Ａ”状態〜“Ｇ”状態の全ての状態に対して上書きリフレッシュ処理を実行しない場合でも、メモリセルトランジスタＭＴから読み出される複数のページに対してエラービット数の低減効果が期待できる。例えば、上書き処理の対象が“Ａ”状態〜“Ｃ”状態の場合、“Ａ”状態は下位ページ、“Ｂ”状態は中位ページ、“Ｃ”状態は上位ページにそれぞれ対応するため、全てのページに対してエラービット数の改善効果が期待できる。
【０２６７】
３．  第３実施形態
次に、第３実施形態に係るメモリシステムについて説明する。第３実施形態は、上書きリフレッシュ処理の際に、上書き処理を複数回ループさせる点において、第１実施形態及び第２実施形態と異なる。以下では、第２実施形態と同等の構成及び動作についてはその説明を省略し、第２実施形態と異なる構成及び動作について主に説明する。
【０２６８】
３．１  上書きリフレッシュ処理のフローチャートについて
まず、第３実施形態に係るメモリシステムにおける上書きリフレッシュ処理の概要について図２９に示すフローチャートを用いて説明する。図２９は、第１実施形態において示した図１８に対応する。図２９では、図１８におけるステップＳＴ２４１及びＳＴ２４２に代えて、ステップＳＴ２４７が実行されると共に、ステップＳＴ２４５とステップＳＴ２４６との間にステップＳＴ２４８〜ＳＴ２５１が追加される。
【０２６９】
図２９に示すように、ステップＳＴ２４０は、図１８の場合と同様であるため、その説明を省略する。続いて、ステップＳＴ２４７において、メモリコントローラ２００は、ＮＡＮＤフラッシュメモリ１００に対して、上書きリフレッシュ処理に適用される１又は複数のパラメタ（プリベリファイ処理及び上書き処理のいずれに適用されるパラメタも含む）を一括して設定するためのコマンドを発行する。すなわち、当該コマンドによって、ＮＡＮＤフラッシュメモリ１００には、上書きリフレッシュ処理の際に設定変更すべき全てのパラメタが一括して設定される。このようなパラメタの一括設定の手法を、例えば、パラメタオーバロード処理とも呼ぶ。
【０２７０】
パラメタオーバロード処理によって設定されるパラメタは、図２５に示された各種情報に限らず、その他の種々のパラメタが設定可能である。
【０２７１】
具体的には、本実施形態では、上書きの際に、同一のメモリセルトランジスタＭＴに対して、通常のプログラム処理と同様に、複数回のプログラムパルスが印加され得る。これにより、特にパラメタを設定しない場合、上書き処理の際においても、通常のプログラム処理と同様の回数のループ処理が実行される可能性があり、好ましくない。このため、パラメタオーバロード処理では、例えば、通常のプログラム処理の際に設定されるループ数の上限値よりも少ない上限値を設定することにより、上書き処理の際に印加されるプログラムパルスの回数を通常のプログラム処理よりも少なくする。これにより、意図しない過書込みを抑制することができる。
【０２７２】
なお、通常のプログラム処理の際に設定されるループ数の上限値よりも少ない上限値を設定することによって、上書き処理が通常よりも少ないループ数で強制的に終了するため、最終的に閾値電圧がベリファイ電圧まで上昇しない（プログラム処理のステータスがフェイルとなる）メモリセルトランジスタＭＴが発生し得る。本実施形態では、このようなプログラム処理のステータスがフェイルとなるメモリセルトランジスタＭＴを許容するため、上書きリフレッシュ処理の終了後に、当該ステータスフェイルが解除されることが望ましい。このため、パラメタオーバロード処理では、例えば、上書きリフレッシュ処理後にプログラムフェイルを強制的に解除する設定を行ってもよい。
【０２７３】
以下の説明では、ステップＳＴ２４７におけるパラメタオーバロード処理によって、上述のループ数の上限値、及びプログラム処理のステータスフェイルの解除等が一括して設定される場合について説明する。
【０２７４】
ステップＳＴ２４３〜ＳＴ２４５は、図１８の場合と同様であるため、その説明を省略する。
【０２７５】
ステップＳＴ２４６において、ＮＡＮＤフラッシュメモリ１００は、上書き処理のループ数が上限値に達したか否かを判定する。ループ数が上限値に達していない場合（ステップＳＴ２４８；ｎｏ）、引き続き上書き処理を実行すると判定し、処理はステップＳＴ２４９に進む。一方、ループ数が上限値に達している場合（ステップＳＴ２４８；ｙｅｓ）、これ以上上書き処理を実行しないと判定し、処理はステップＳＴ２５１に進む。
【０２７６】
ステップＳＴ２４９において、ＮＡＮＤフラッシュメモリ１００は、ステップＳＴ２４５において上書き処理が実行されたメモリセルトランジスタＭＴに対して、ベリファイ処理を実行する。ベリファイ処理は、プログラム処理の後に書込み対象のメモリセルトランジスタＭＴの閾値電圧がベリファイ電圧に達したか否かを判定することによって、当該メモリセルトランジスタＭＴへのプログラムが完了したか否かを判定する処理である。これにより、次のループにおいて上書き処理が実行されるメモリセルトランジスタＭＴが特定される。引き続き、ステップＳＴ２５０において、ＮＡＮＤフラッシュメモリ１００は、ループ数をインクリメントした後、処理をステップＳＴ２４５に戻し、次のループに進む。
【０２７７】
ステップＳＴ２５１において、ＮＡＮＤフラッシュメモリ１００は、上書き処理の対象のメモリセルトランジスタＭＴのプログラム処理のステータスフェイルを解除し、全てのメモリセルトランジスタＭＴのプログラム処理がパスしたとみなす。後述するように、ベリファイ処理を省略しない場合は、ステータスフェイルが発生する場合に限り、ステータスフェイルを解除してもよい。
【０２７８】
ステップＳＴ２４６において、ＮＡＮＤフラッシュメモリ１００は、上書きリフレッシュ処理の完了をメモリコントローラ２００に通知する。
【０２７９】
以上により、上書きリフレッシュ処理が終了する。
【０２８０】
３．２  コマンドシーケンスについて
次に、メモリコントローラ２００から発行されるパラメタオーバロード処理のコマンドシーケンスについて説明する。
【０２８１】
図３０は、第３実施形態に係るメモリシステムにおけるパラメタオーバロード処理を説明するためのコマンドシーケンスである。
【０２８２】
図３０に示すように、メモリコントローラ２００は、コマンド“ＹＹｈ”をＮＡＮＤフラッシュメモリ１００へ送信する。コマンド“ＹＹｈ”は、パラメタオーバロード処理をＮＡＮＤフラッシュメモリ１００に宣言するためのコマンドである。引き続き、メモリコントローラ２００は、アドレス“Ｙ１ｈ”を送信する。アドレス“Ｙ１ｈ”は、ＮＡＮＤフラッシュメモリ１００において、パラメタオーバロードコマンドにより変更される各々が１又は複数の設定値を含む複数の組を保持するレジスタを指定するアドレスである。ＮＡＮＤフラッシュメモリ１００は、当該設定値の組を予めレジスタ内に保持しておくことにより、指定されたアドレスに応じて、１個の組に含まれる１又は複数のパラメタを一括して設定変更することができる。設定変更が完了すると、シーケンサ１７０は、信号ＲＢｎを“Ｈ”レベルにして、ＮＡＮＤフラッシュメモリ１００がレディ状態であることをメモリコントローラ２００に知らせる。
【０２８３】
続いて、メモリコントローラ２００は、コマンド“ＺＺｈ”を発行し、ＮＡＮＤフラッシュメモリ１００へ送信する。コマンド“ＺＺｈ”は、ＮＡＮＤフラッシュメモリ１００の設定変更が正常終了したか否かを示すステータスの出力を指示するコマンドである。コマンド“ＺＺｈ”を受けると、ＮＡＮＤフラッシュメモリ１００は、パラメタオーバロード処理によるパラメタの組の設定変更が正常に終了したか否かを示すステータス信号ＳＴＳｏｕｔをメモリコントローラ２００に送信する。
【０２８４】
メモリコントローラ２００は、ステータス信号ＳＴＳｏｕｔが正常であることを確認した後、コマンド“ＷＷｈ”を発行し、ＮＡＮＤフラッシュメモリ１００に送信する。コマンド“ＷＷｈ”は、設定変更されたパラメタの組が保持されるレジスタのアドレスの出力を指示するコマンドである。コマンド“ＷＷｈ”を受けると、ＮＡＮＤフラッシュメモリ１００は、パラメタオーバロード処理によって現在適用されているパラメタの組が保持されるレジスタのアドレスＡＤＤｏｕｔをメモリコントローラ２００に送信する。 
メモリコントローラ２００は、アドレスＡＤＤｏｕｔと、先に自身がパラメタオーバロード処理を指示した際に指定したアドレス“Ｙ１ｈ”と、を比較し、両者が一致しているか否かを確認する。そして、両者が一致していることが確認できた場合、パラメタオーバロード処理が成功したと判定し、以降の動作を実行する。
【０２８５】
以上で、パラメタオーバロード処理が終了する。
【０２８６】
３．３  タイミングチャートについて
次に、第３実施形態に係るメモリシステムにおける上書きリフレッシュ処理の際のタイミングチャートについて、いくつかの例を用いて説明する。
【０２８７】
３．３．１  “Ａ”状態〜“Ｃ”状態が指定される場合
まず、“Ａ”状態〜“Ｃ”状態の期待値を有するメモリセルトランジスタＭＴが上書きリフレッシュ処理の対象範囲として指定された場合について説明する。
【０２８８】
図３１は、第３実施形態に係るメモリシステムにおける“Ａ”状態〜“Ｃ”状態を対象とする上書きリフレッシュ処理のシーケンスを説明するための概念図である。図３１では、上書きのループ数の上限値として“４”ループ目が設定される場合が示される。また、図３１では、プリベリファイ処理及びベリファイ処理が実行される際に、選択ワード線ＷＬに印加される電圧レベルの一例が示される。
【０２８９】
図３１に示すように、プリベリファイ処理では、上書きリフレッシュ処理の対象範囲として指定された全ての状態に対応するベリファイ電圧が印加される。すなわち、図３１の例では、プリベリファイ処理の際に、“Ａ”状態〜“Ｃ”状態に対応するベリファイ電圧が印加される。
【０２９０】
続いて、１回目のループでは、例えば、“Ａ”状態を対象にしたベリファイ処理が実行される。２回目のループでは、例えば、“Ａ”状態及び“Ｂ”状態を対象にしたベリファイ処理が実行される。３回目のループでは、例えば、“Ｂ”状態及び“Ｃ”状態を対象にしたベリファイ処理が実行される。４回目のループでは、例えば、ループ数の上限に達しているため、上書き処理のみが実行され、ベリファイ処理は実行されない。また、“Ｄ”状態〜“Ｇ”状態については、上書きリフレッシュ処理の対象範囲ではないため、全てのループにわたってベリファイ処理は実行されない。
【０２９１】
このように、“Ａ”状態を含む低電圧側の状態を上書きリフレッシュ処理の対象とする場合、ループ毎のベリファイ処理の対象となる状態は、通常のプログラムループ時と同様に設定され得る。なお、図３１の例は、あくまで一例であり、ループ毎のベリファイ処理の対象となる状態は、例えば、パラメタオーバロード処理によって任意に設定可能である。
【０２９２】
図３２は、第３実施形態に係るメモリシステムにおける“Ａ”状態〜“Ｃ”状態を対象とする上書きリフレッシュ処理を説明するためのタイミングチャートである。図３２は、図３１に示した上書きリフレッシュ処理のシーケンスのうち、プリベリファイ処理、１ループ目の上書き処理及びベリファイ処理、並びに２ループ目の上書き処理までに相当するタイミングチャートが示される。
【０２９３】
図３２に示すように、まず、ＮＡＮＤフラッシュメモリ１００は、プリベリファイ処理において、上書き処理を実行するメモリセルトランジスタＭＴを特定する動作を、“Ａ”状態〜“Ｃ”状態についてそれぞれ実行する。
【０２９４】
プリベリファイ処理は、第２実施形態の図２７において示されたプリベリファイ処理と同様であるため、その説明を省略する。
【０２９５】
続いて、ＮＡＮＤフラッシュメモリ１００は、複数回のループを含む上書き処理を実行する。上書き処理では、“Ａ”状態〜“Ｃ”状態のメモリセルトランジスタＭＴに共通して適用されるプログラム電圧が、複数回のループ毎にステップアップして使用される。
【０２９６】
１ループ目の上書き期間において、センスアンプＳＡは、ラッチ回路ＡＤＬ〜ＣＤＬ内のデータが“Ｅｒ”状態に対応するデータ“１１１”にマスクされていない場合、対応するビット線ＢＬに電圧ＶＳＳを印加し、上書き許可状態にする。また、センスアンプＳＡは、ラッチ回路ＡＤＬ〜ＣＤＬ内のデータがデータ“１１１”にマスクされている場合、対応するビット線ＢＬに電圧ＶＤＤを印加し、上書き禁止状態にする。続いて、ロウデコーダ１２０は、選択ワード線ＷＬに電圧ＶＰＧＭ＿Ａを印加する。これにより、プリベリファイ処理にフェイルした全てのメモリセルトランジスタＭＴに対して、共通の電圧ＶＰＧＭ＿Ａを使用した上書き処理が実行される。
【０２９７】
続いて、１ループ目のベリファイ処理が実行される。１ループ目のベリファイ処理期間において、ロウデコーダ１２０は、例えば、選択ワード線ＷＬに電圧Ａｖｆｙ（すなわち、“Ａ”状態に対応するデフォルトのベリファイ電圧）を印加する。シーケンサ１７０は、選択ワード線ＷＬに電圧Ａｖｆｙが印加されている間においてデータをストローブし、ラッチ回路ＡＤＬ〜ＣＤＬ内に“Ａ”状態に対応するデータ“１１０”を保持するメモリセルトランジスタＭＴがベリファイ処理にパスしたか、フェイルしたか、を判定する。そして、シーケンサ１７０は、ベリファイ処理にパスしたメモリセルトランジスタＭＴに接続されたビット線ＢＬが後続する上書き処理の際に上書き禁止状態となる様に、対応するラッチ回路ＡＤＬ〜ＣＤＬに対してマスク処理を施す。
【０２９８】
続いて、２ループ目の上書き処理が実行される。２ループ目の上書き処理期間において、センスアンプＳＡは、ラッチ回路ＡＤＬ〜ＣＤＬ内のデータが“Ｅｒ”状態に対応するデータ“１１１”にマスクされていない場合、対応するビット線ＢＬに電圧ＶＳＳを印加し、上書き許可状態にする。また、センスアンプＳＡは、ラッチ回路ＡＤＬ〜ＣＤＬ内のデータがデータ“１１１”にマスクされている場合、対応するビット線ＢＬに電圧ＶＤＤを印加し、上書き禁止状態にする。続いて、ロウデコーダ１２０は、選択ワード線ＷＬに電圧ＶＰＧＭ＿Ａ＋ΔＶＰＧＭを印加する。電圧ΔＶＰＧＭは、例えば、通常のプログラム処理の際にループ数に応じて加算される電圧と同等の電圧である。これにより、プリベリファイ処理にフェイルした全てのメモリセルトランジスタＭＴに対して、電圧ＶＰＧＭ＿Ａ＋ΔＶＰＧＭを使用した上書き処理が実行される。
【０２９９】
このように、ＮＡＮＤフラッシュメモリ１００は、プリベリファイ処理を実行した後、上書き処理とベリファイ処理のループを繰り返し、最終ループでは上書き処理のみを実行する。
【０３００】
なお、上述の通り、最終ループではベリファイ処理が実行されないため、ベリファイ処理のステータスがフェイルのままのメモリセルトランジスタＭＴが存在し得る。このため、シーケンサ１７０は、最終ループの上書き処理が終了した後、ベリファイ処理のフェイルのステータスを解除する。以上で、上書きリフレッシュ処理が終了する。
【０３０１】
３．３．２  “Ｆ”状態及び“Ｇ”状態が指定される場合
次に、“Ｆ”状態及び“Ｇ”状態の期待値を有するメモリセルトランジスタＭＴが上書きリフレッシュ処理の対象範囲として指定された場合について説明する。
【０３０２】
図３３は、第３実施形態に係るメモリシステムにおける“Ｆ”状態及び“Ｇ”状態を対象とする上書きリフレッシュ処理を説明するためのテーブルである。図３３では、図３１の場合と同様、上書き処理のループ数の上限値として“４”ループ目が設定される場合が示される。また、図３３では、プリベリファイ処理及びベリファイ処理が実行される際に、選択ワード線ＷＬに印加される電圧レベルの一例が示される。
【０３０３】
図３３に示すように、プリベリファイ処理では、上書きリフレッシュ処理の対象範囲として指定された全ての状態に対応するベリファイ電圧が印加される。すなわち、図３３の例では、プリベリファイ処理の際に、“Ｆ”状態及び“Ｇ”状態に対応するベリファイ電圧が印加される。
【０３０４】
続いて、１回目〜３回目のループにわたって、例えば、“Ｆ”状態及び“Ｇ”状態を対象にしたベリファイ処理が実行される。４回目のループでは、例えば、ループ数の上限に達しているため、上書き処理のみが実行され、ベリファイ処理は実行されない。また、“Ａ”状態〜“Ｅ”状態については、上書きリフレッシュ処理の対象範囲ではないため、全てのループにわたってベリファイ処理は実行されない。
【０３０５】
上述の通り、“Ｆ”状態や“Ｇ”状態のような高電圧側の閾値分布は、変動要因によって、“Ａ”状態等の様な低電圧側の閾値分布よりも閾値分布が大きく変動している可能性がある。このため、図３３に示すように、高電圧側の閾値分布を上書きリフレッシュ処理の対象とする場合、各ループにおいて、上書き処理対象の全ての状態に対してベリファイ処理が実行され得る。なお、図３３の例は、あくまで一例であり、ループ毎のベリファイ処理対象となる状態は、パラメタオーバロード処理によって任意に設定可能である。
【０３０６】
図３４は、第３実施形態に係るメモリシステムにおける“Ｆ”状態及び“Ｇ”状態を対象とする上書きリフレッシュ処理を説明するためのタイミングチャートである。図３４は、図３３に示した上書きリフレッシュ処理のシーケンスのうち、プリベリファイ処理、１ループ目の上書き処理及びベリファイ処理、並びに２ループ目の上書き処理までに相当するタイミングチャートが示される。
【０３０７】
図３４に示すように、まず、ＮＡＮＤフラッシュメモリ１００は、プリベリファイ処理において、上書き処理を実行するメモリセルトランジスタＭＴを特定する動作を、“Ｆ”状態及び“Ｇ”状態についてそれぞれ実行する。
【０３０８】
プリベリファイ処理は、第２実施形態の図２８において示されたプリベリファイ処理と同様である。すなわち、シーケンサ１７０は、プリベリファイ処理によって、期待データが“Ｆ”状態であり、かつ“Ｆ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴ、及び期待データが“Ｇ”状態であり、かつ“Ｇ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴを抽出する。そして、シーケンサ１７０は、“Ｆ”状態及び“Ｇ”状態用のプリベリファイ処理にパスしたメモリセルトランジスタＭＴに接続されたビット線ＢＬが、後続する上書き処理の際に上書き禁止状態となる様に、ラッチ回路に対してマスク処理を施す。また、シーケンサ１７０は、“Ａ”状態〜“Ｅ”状態の期待データを有するメモリセルトランジスタＭＴに接続された全てのビット線ＢＬが後続する上書きの際に上書き禁止状態となるように、ラッチ回路に対してマスク処理を施す。これにより、上書き対象を、期待データが“Ｆ”状態であり、かつ“Ｆ”状態用のプリベリファイ処理にフェイルしたメモリセルトランジスタＭＴ、及び期待データが“Ｇ”状態であり、かつ“Ｇ”状態用のプリベリファイ処理にフェイルしたメモリセルトランジスタＭＴに限定することができる。
【０３０９】
続いて、ＮＡＮＤフラッシュメモリ１００は、複数回のループを含む上書き処理を実行する。上書き処理では、“Ｆ”状態及び“Ｇ”状態のメモリセルトランジスタＭＴに共通して適用されるプログラム電圧が、複数回のループ毎にステップアップして使用される。
【０３１０】
１ループ目の上書き処理期間において、センスアンプＳＡは、ラッチ回路ＡＤＬ〜ＣＤＬ内のデータが“Ｅｒ”状態に対応するデータ“１１１”にマスクされていない場合、対応するビット線ＢＬに電圧ＶＳＳを印加し、上書き許可状態にする。また、センスアンプＳＡは、ラッチ回路ＡＤＬ〜ＣＤＬ内のデータがデータ“１１１”にマスクされている場合、対応するビット線ＢＬに電圧ＶＤＤを印加し、上書き禁止状態にする。続いて、ロウデコーダ１２０は、選択ワード線ＷＬに電圧ＶＰＧＭ＿Ｆを印加する。これにより、“Ｆ”状態又は“Ｇ”状態を期待データとして有するメモリセルトランジスタＭＴのうち、それぞれのプリベリファイ処理にフェイルした全てのメモリセルトランジスタＭＴに対して、共通の電圧ＶＰＧＭ＿Ｆを使用した上書きが実行される。
【０３１１】
続いて、１ループ目のベリファイが実行される。１ループ目のベリファイ期間において、ロウデコーダ１２０は、例えば、選択ワード線ＷＬに電圧Ｆｖｆｙ（すなわち、“Ｆ”状態に対応するデフォルトのベリファイ電圧）を印加する。シーケンサ１７０は、選択ワード線ＷＬに電圧Ｆｖｆｙが印加されている間においてデータをストローブし、ラッチ回路ＡＤＬ〜ＣＤＬ内に“Ｆ”状態に対応するデータ“００１”を保持するメモリセルトランジスタＭＴがベリファイ処理にパスしたか、フェイルしたか、を判定する。同様に、シーケンサ１７０は、選択ワード線ＷＬに電圧Ｇｖｆｙが印加されている間においてデータをストローブし、ラッチ回路ＡＤＬ〜ＣＤＬ内に“Ｇ”状態に対応するデータ“１０１”を保持するメモリセルトランジスタＭＴがベリファイ処理にパスしたか、フェイルしたか、を判定する。そして、シーケンサ１７０は、ベリファイ処理にパスしたメモリセルトランジスタＭＴに接続されたビット線ＢＬが後続する上書き処理の際に上書き禁止状態となる様に、対応するラッチ回路ＡＤＬ〜ＣＤＬに対してマスク処理を施す。
【０３１２】
続いて、ロウデコーダ１２０は、選択ワード線ＷＬに電圧Ｇｖｆｙ（すなわち、“Ｇ”状態に対応するデフォルトのベリファイ電圧）を印加する。シーケンサ１７０は、ラッチ回路ＡＤＬ〜ＣＤＬ内に“Ｇ”状態に対応するデータを有するメモリセルトランジスタＭＴに対してデータをストローブし、ベリファイ処理にパスしたか、フェイルしたか、を判定する。そして、シーケンサ１７０は、ベリファイ処理にパスしたメモリセルトランジスタＭＴに接続されたビット線ＢＬが後続する上書き処理の際に上書き禁止状態となる様に、対応するラッチ回路ＡＤＬ〜ＣＤＬに対してマスク処理を施す。
【０３１３】
続いて、２ループ目の上書きが実行される。２ループ目の上書き処理期間において、センスアンプＳＡは、ラッチ回路ＡＤＬ〜ＣＤＬ内のデータが“Ｅｒ”状態に対応するデータ“１１１”にマスクされていない場合、対応するビット線ＢＬに電圧ＶＳＳを印加し、上書き許可状態にする。また、センスアンプＳＡは、ラッチ回路ＡＤＬ〜ＣＤＬ内のデータがデータ“１１１”にマスクされている場合、対応するビット線ＢＬに電圧ＶＤＤを印加し、上書き禁止状態にする。続いて、ロウデコーダ１２０は、選択ワード線ＷＬに電圧ＶＰＧＭ＿Ｆ＋ΔＶＰＧＭを印加する。これにより、“Ｆ”状態又は“Ｇ”状態を期待データとして有するメモリセルトランジスタＭＴのうち、それぞれのプリベリファイ処理にフェイルした全てのメモリセルトランジスタＭＴに対して、電圧ＶＰＧＭ＿Ｆ＋ΔＶＰＧＭを使用した上書き処理が実行される。
【０３１４】
このように、ＮＡＮＤフラッシュメモリ１００は、プリベリファイ処理を実行した後、上書き処理とベリファイ処理のループを繰り返し、最終ループでは上書き処理のみを実行する。
【０３１５】
なお、上述の通り、最終ループではベリファイ処理が実行されないため、ベリファイ処理のステータスがフェイルのままのメモリセルトランジスタＭＴが存在し得る。このため、シーケンサ１７０は、最終ループの上書き処理が終了した後、ベリファイ処理のフェイルのステータスを解除する。以上で、上書きリフレッシュ処理が終了する。
【０３１６】
上述の例では、最終ループでベリファイ処理が実行されない場合について説明したが、これに限られない。すなわち、ＮＡＮＤフラッシュメモリ１００は、通常のプログラム処理からの変更点を少なくするため、最終ループにおいても上書き処理の後にベリファイ処理を実行してもよい。
【０３１７】
３．４  本実施形態に係る効果
第３実施形態によれば、メモリコントローラ２００は、プリベリファイ処理や上書き処理の際に選択ワード線ＷＬに印加される電圧の補正量に加え、上書き処理のループ回数の上限値や、ベリファイ処理のフェイルのステータスを解除する旨の設定などを更にＮＡＮＤフラッシュメモリ１００に対して指示する。これにより、ＮＡＮＤフラッシュメモリ１００は、１つのメモリセルトランジスタＭＴに対して上書き処理のための複数のパルスをステップアップさせながら印加することができる。このため、ＮＡＮＤフラッシュメモリ１００は、メモリセルトランジスタＭＴ毎の書込み特性のばらつき等を考慮した上書き処理を実行でき、ひいては、上書き処理の精度を向上させることができる。
【０３１８】
また、ＮＡＮＤフラッシュメモリ１００へ設定すべきパラメタが多岐にわたる場合、メモリコントローラ２００は、パラメタオーバロードコマンドを発行することによって、一括してパラメタの設定を行うことができる。これにより、設定すべきパラメタが増加した場合においても、セットフィーチャコマンドを発行する回数の増加を抑制することができ、メモリコントローラ２００の負荷を低減させることができる。
【０３１９】
４．その他
以上、種々の実施形態について説明したが、第１実施形態、第２実施形態、及び第３実施形態は、これに限られず、種々の変形が適宜適用可能である。
【０３２０】
例えば、第１実施形態及び第２実施形態では、セットフィーチャコマンドによって上書きリフレッシュ処理に使用するパラメタをＮＡＮＤフラッシュメモリ１００に設定したが、これに限らず、パラメタオーバロードコマンドが使用されてもよい。また、第３実施形態出は、パラメタオーバロードコマンドが使用されたが、これに限らず、セットフィーチャコマンドが使用されてもよく、パラメタオーバロードコマンド及びセットフィーチャコマンドが併用されてもよい。なお、設定されるパラメタは、第３実施形態で説明したパラメタに限らず、非選択ワード線ＷＬや、ｐ型ウェル領域１０に印加する電圧の補正量等が適宜設定可能である。
【０３２１】
また、例えば、第２実施形態及び第３実施形態では、“Ａ”状態〜“Ｇ”状態のうち、隣り合う複数の状態に対して上書きリフレッシュ処理が実行される場合について説明したが、これに限られない。例えば、メモリコントローラ２００は、“Ａ”状態と“Ｅ”状態、又は“Ｃ”状態と“Ｇ”状態等、間に他の閾値分布を挟む複数の状態に対して、上書きリフレッシュ処理の実行を指示してもよい。より具体的には、例えば、上述の複数の状態の組は、図４に示される上位／中位／下位のいずれの特定のページに対応していてもよい。すなわち、下位ページに対応する場合には“Ａ”状態及び“Ｅ”状態が、中位ページに対応する場合には“Ｂ”状態、“Ｄ”状態、及び“Ｆ”状態が、上位ページに対応する場合には“Ｃ”状態及び“Ｇ”状態が上書きリフレッシュ処理の対象として選択されてもよい。
【０３２２】
また、第３実施形態では、ベリファイ処理の際にはデフォルトのベリファイ電圧（例えば、電圧Ａｖｆｙ）が印加される場合について説明したが、これに限られない。例えば、ベリファイ処理の際におけるベリファイ電圧は、第１実施形態でプリベリファイ処理の際に印加されるベリファイ電圧をシフトしたのと同様に、デフォルト値からシフトしてもよい。その際のシフト量は、プリベリファイ処理の際と同等のシフト量でもよく、ベリファイ処理の際のベリファイ電圧が、プリベリファイ処理の際のベリファイ電圧と同様の値になってもよい。
【０３２３】
また、第３実施形態では、最終ループのベリファイ処理が実行されない場合について説明したが、これに限らず、最終ループにおいてもベリファイ処理が実行されてもよい。
【０３２４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０３２５】
１…メモリシステム、１００…ＮＡＮＤフラッシュメモリ、１１０…メモリセルアレイ、１２０…ロウデコーダ、１３０…ドライバ、１４０…センスアンプモジュール、１５０…アドレスレジスタ、１６０…コマンドレジスタ、１７０…シーケンサ、２００…メモリコントローラ、２１０…ホストインタフェース回路、２２０…メモリ、２３０…プロセッサ、２４０…バッファメモリ、２５０…ＮＡＮＤインタフェース回路、２６０…ＥＣＣ回路、３００…ホスト機器。
【図１】
2020038738.tif 000003
【図２】
2020038738.tif 000004
【図３】
2020038738.tif 000005
【図４】
2020038738.tif 000006
【図５】
2020038738.tif 000007
【図６】
2020038738.tif 000008
【図７】
2020038738.tif 000009
【図８】
2020038738.tif 000010
【図９】
2020038738.tif 000011
【図１０】
2020038738.tif 000012
【図１１】
2020038738.tif 000013
【図１２】
2020038738.tif 000014
【図１３】
2020038738.tif 000015
【図１４】
2020038738.tif 000016
【図１５】
2020038738.tif 000017
【図１６】
2020038738.tif 000018
【図１７】
2020038738.tif 000019
【図１８】
2020038738.tif 000020
【図１９】
2020038738.tif 000021
【図２０】
2020038738.tif 000022
【図２１】
2020038738.tif 000023
【図２２】
2020038738.tif 000024
【図２３】
2020038738.tif 000025
【図２４】
2020038738.tif 000026
【図２５】
2020038738.tif 000027
【図２６】
2020038738.tif 000028
【図２７】
2020038738.tif 000029
【図２８】
2020038738.tif 000030
【図２９】
2020038738.tif 000031
【図３０】
2020038738.tif 000032
【図３１】
2020038738.tif 000033
【図３２】
2020038738.tif 000034
【図３３】
2020038738.tif 000035
【図３４】
2020038738.tif 000036