(57)【要約】【課題】最適な読出し電圧の探索に要する時間を短縮する。【解決手段】一実施形態のメモリシステムは、複数のメモリセルを含むメモリセルアレイを備えた半導体メモリと、複数のメモリセルに対してトラッキング処理を実行するように構成されたメモリコントローラと、を備える。メモリコントローラは、トラッキング処理において、複数のメモリセルから第１乃至第３データのみを読み出し、第１乃至第３データはそれぞれ第２乃至第４電圧を使用して読み出され、第１及び第２データに基づき、複数のメモリセルのうちの、第２及び第３電圧間の第１電圧範囲に対応する第１メモリセルの数を決定し、第２及び第３データに基づき、複数のメモリセルのうちの、第３及び第４電圧間の第２電圧範囲に対応する第２メモリセルの数を決定し、第１及び第２メモリセルの数に基づき、第１電圧を決定するように構成される。【選択図】図７
2020107376.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリセルを含むメモリセルアレイを備えた半導体メモリと、
前記複数のメモリセルに対して第１トラッキング処理を実行して第１電圧を決定し、前記第１トラッキング処理の後の読出し処理において前記第１電圧を使用して前記複数のメモリセルからデータを読み出すように構成されたメモリコントローラと、
を備え、
前記メモリコントローラは、前記第１トラッキング処理において、
前記複数のメモリセルから第１データ、第２データ、及び第３データのみを読み出し、前記第１データは第２電圧を使用して読み出され、前記第２データは第３電圧を使用して読み出され、前記第３データは第４電圧を使用して読み出され、
前記第１データ及び前記第２データに基づき、前記複数のメモリセルのうちの、前記第２電圧と前記第３電圧との間の第１電圧範囲に対応する第１メモリセルの数を決定し、
前記第２データ及び前記第３データに基づき、前記複数のメモリセルのうちの、前記第３電圧と前記第４電圧との間の第２電圧範囲に対応する第２メモリセルの数を決定し、
前記第１メモリセルの数及び前記第２メモリセルの数に基づき、前記第１電圧を決定する
ように構成された、
メモリシステム。
【請求項２】
前記第３電圧は、前記第２電圧と前記第４電圧との間の大きさを有する
請求項１記載のメモリシステム。
【請求項３】
前記メモリコントローラは、前記第１トラッキング処理において、前記第１電圧範囲及び前記第２電圧範囲のうち、前記第１メモリセルの数及び前記第２メモリセルの数のうちの少ない方に対応する電圧範囲内の電圧を、前記第１電圧として決定するように構成された、
請求項１記載のメモリシステム。
【請求項４】
前記メモリコントローラは、前記第１トラッキング処理において、前記第１電圧範囲内の第１代表電圧と前記第２電圧範囲内の第２代表電圧との間の第３電圧範囲のうち、前記第１メモリセルの数と前記第２メモリセルの数との比に基づいて決定される電圧を、前記第１電圧として決定するように構成された、
請求項１記載のメモリシステム。
【請求項５】
前記第１電圧は、前記第１トラッキング処理において、前記第３電圧範囲を前記比で内分する点に対応する、
請求項４記載のメモリシステム。
【請求項６】
前記メモリコントローラは、前記第１トラッキング処理において、
前記第１電圧範囲内の第１代表電圧、前記第２電圧範囲内の第２代表電圧、前記第１メモリセルの数、前記第２メモリセルの数、及び第１値に基づいて、第１関数を特定し、
前記特定された第１関数の極小点に対応する電圧を、前記第１電圧として決定する
ように構成された、
請求項１記載のメモリシステム。
【請求項７】
前記第１関数は、
前記第１値を正の２次係数として有する二次関数であり、
前記第１代表電圧の入力に対する出力と前記第１メモリセルの数との間の残差、及び前記第２代表電圧の入力に対する出力と前記第２メモリセルの数との間の残差を最小にする、
請求項６記載のメモリシステム。
【請求項８】
前記第１値は、固定値である、
請求項６記載のメモリシステム。
【請求項９】
前記第１値は、前記メモリセルアレイへデータを書き込んでからの経過時間、前記メモリセルアレイへのデータの書込み回数、前記メモリセルアレイからのデータの消去回数、及び前記複数のメモリセルが接続されるワード線のうちの少なくとも１つに応じて変化する、
請求項６記載のメモリシステム。
【請求項１０】
前記メモリコントローラは、前記第１値を更新する更新処理を実行するように構成され、
前記メモリコントローラは、前記更新処理において、
前記複数のメモリセルから第５電圧を使用して第４データを更に読み出し、
前記第３データ及び前記第４データに基づき、前記複数のメモリセルのうちの、前記第２電圧又は前記第４電圧と前記第５電圧との間の第３電圧範囲に対応する第３メモリセルの数を決定し、
前記第１代表電圧、前記第２代表電圧、前記第３電圧範囲内の第３代表電圧、前記第１メモリセルの数、前記第２メモリセルの数、及び前記第３メモリセルの数に基づいて、第２関数を特定し、
前記第１値を、前記特定された第２関数の二次係数を示す第２値に更新する
ように構成された、
請求項６記載のメモリシステム。
【請求項１１】
前記メモリコントローラは、前記第１電圧を使用して前記複数のメモリセルから読み出されたデータの誤り訂正処理に失敗した場合、前記更新処理を実行するように構成された、
請求項１０記載のメモリシステム。
【請求項１２】
前記第２関数は、
前記第２値を正の２次係数として有する二次関数であり、
前記第１代表電圧の入力に対する出力と前記第１メモリセルの数との差、前記第２代表電圧の入力に対する出力と前記第２メモリセルの数との差、及び前記第３代表電圧の入力に対する出力と前記第３メモリセルの数との差に関する残差を最小にする、
請求項１０記載のメモリシステム。
【請求項１３】
前記メモリコントローラは、前記読出し処理によって読み出されたデータを外部機器に送出した後に、前記更新処理を実行するように構成された、
請求項１０記載のメモリシステム。
【請求項１４】
前記メモリコントローラは、ホスト機器から前記複数のメモリセルに対する新たな読出し要求を受ける前に、前記更新処理を実行するように構成された、
請求項１０記載のメモリシステム。
【請求項１５】
前記メモリコントローラは、
前記第１電圧を使用して前記複数のメモリセルから読み出されたデータの誤り訂正処理に失敗した場合、第６電圧を決定する第２トラッキング処理を実行し、
前記第１トラッキング処理及び前記第２トラッキング処理の後に前記読出し処理を実行するように構成され、
前記メモリコントローラは、前記第２トラッキング処理において、
前記複数のメモリセルから第５電圧を使用して第４データを更に読み出し、
前記第３データ及び前記第４データに基づき、前記複数のメモリセルのうちの、前記第２電圧又は前記第４電圧と前記第５電圧との間の第３電圧範囲に対応する第３メモリセルの数を決定し、
前記第１メモリセルの数、前記第２メモリセルの数、及び前記第３メモリセルの数に基づき、前記第６電圧を決定する
ように構成された、
請求項１記載のメモリシステム。
【請求項１６】
前記メモリコントローラは、前記第１トラッキング処理において、
前記第１電圧範囲内の第１代表電圧、前記第２電圧範囲内の第２代表電圧、前記第１メモリセルの数、前記第２メモリセルの数、及び第１値に基づいて、第１関数を特定し、
前記特定された第１関数の極小点に対応する電圧を、前記第１電圧として決定する
ように構成された、
請求項１５記載のメモリシステム。
【請求項１７】
前記メモリコントローラは、前記第１値を更新する更新処理を実行するように構成され、
前記メモリコントローラは、前記更新処理において、
前記第１代表電圧、前記第２代表電圧、前記第３電圧範囲内の第３代表電圧、前記第１メモリセルの数、前記第２メモリセルの数、及び前記第３メモリセルの数に基づいて、第２関数を特定し、
前記第１値を、前記特定された第２関数の二次係数を示す第２値に更新する
ように構成された、
請求項１６記載のメモリシステム。
【請求項１８】
前記メモリコントローラは、前記第１電圧を使用して前記複数のメモリセルから読み出されたデータの誤り訂正処理に失敗した場合、前記更新処理を実行するように構成された、
請求項１７記載のメモリシステム。
【請求項１９】
前記メモリコントローラは、前記読出し処理によって読み出されたデータを外部機器に送出した後に、前記更新処理を実行するように構成された、
請求項１７記載のメモリシステム。
【請求項２０】
前記メモリコントローラは、ホスト機器から前記複数のメモリセルに対する新たな読出し要求を受ける前に、前記更新処理を実行するように構成された、
請求項１７記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
半導体メモリとしてのＮＡＮＤフラッシュメモリと、当該ＮＡＮＤフラッシュメモリを制御するメモリコントローラと、を備えるメモリシステムが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１２２８０４号公報
【特許文献２】特許第５４４４３４０号公報
【特許文献３】特許第５６３８５３７号公報
【特許文献４】米国特許第９４３１１３０号明細書
【特許文献５】特許第５６２０９７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
最適な読出し電圧の探索に要する時間を短縮する。
【課題を解決するための手段】
【０００５】
実施形態のメモリシステムは、複数のメモリセルを含むメモリセルアレイを備えた半導体メモリと、上記複数のメモリセルに対して第１トラッキング処理を実行して第１電圧を決定し、上記第１トラッキング処理の後の読出し処理において上記第１電圧を使用して上記複数のメモリセルからデータを読み出すように構成されたメモリコントローラと、を備える。上記メモリコントローラは、上記第１トラッキング処理において、上記複数のメモリセルから第１データ、第２データ、及び第３データのみを読み出し、上記第１データは第２電圧を使用して読み出され、上記第２データは第３電圧を使用して読み出され、上記第３データは第４電圧を使用して読み出され、上記第１データ及び上記第２データに基づき、上記複数のメモリセルのうちの、上記第２電圧と上記第３電圧との間の第１電圧範囲に対応する第１メモリセルの数を決定し、上記第２データ及び上記第３データに基づき、上記複数のメモリセルのうちの、上記第３電圧と上記第４電圧との間の第２電圧範囲に対応する第２メモリセルの数を決定し、上記第１メモリセルの数及び上記第２メモリセルの数に基づき、上記第１電圧を決定するように構成される。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係るメモリシステムの構成を説明するためのブロック図。
【図２】第１実施形態に係るメモリセルアレイの構成を説明するための回路図。
【図３】第１実施形態に係るメモリセルアレイの構成を説明するための断面図。
【図４】第１実施形態に係るメモリセルアレイの閾値電圧分布を説明するための模式図。
【図５】第１実施形態に係るメモリセルアレイの閾値電圧分布に生じる変動を説明するための模式図。
【図６】第１実施形態に係るメモリシステムにおけるトラッキング処理で算出される区間セル数を説明するための模式図。
【図７】第１実施形態に係るメモリシステムにおけるトラッキング処理を伴う読出し処理を説明するためのフローチャート。
【図８】第１実施形態に係るメモリシステムにおける３点トラッキング処理を説明するためのフローチャート。
【図９】第１実施形態に係るメモリシステムにおける３点トラッキング処理を説明するための模式図。
【図１０】第１実施形態に係るメモリシステムにおけるｍ点トラッキング処理を説明するためのフローチャート。
【図１１】第１実施形態に係るメモリシステムにおけるｍ点トラッキング処理を説明するための模式図。
【図１２】第１実施形態に係るメモリシステムにおけるｍ点トラッキング処理を説明するための模式図。
【図１３】第１実施形態に係るメモリシステムにおけるｍ点トラッキング処理を説明するための模式図。
【図１４】第２実施形態に係るメモリシステムにおける３点トラッキング処理を説明するためのフローチャート。
【図１５】第２実施形態に係るメモリシステムにおける３点トラッキング処理を説明するための模式図。
【図１６】第３実施形態に係るメモリシステムにおける３点トラッキング処理を説明するためのフローチャート。
【図１７】第３実施形態に係るメモリシステムにおける３点トラッキング処理を説明するための模式図。
【図１８】第３実施形態に係るメモリシステムにおける３点トラッキング処理を説明するための模式図。
【図１９】第３実施形態の変形例に係るメモリシステムにおけるトラッキング処理後にバックグラウンドでの二次関数の二次係数の更新処理を伴う場合の処理を説明するためのフローチャート。
【図２０】第３実施形態の変形例に係るメモリシステムにおいてバックグラウンドで実行される二次関数の二次係数の更新処理を説明するためのフローチャート。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字を付して区別する。なお、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
【０００８】
１．第１実施形態
第１実施形態に係るメモリシステムについて説明する。以下では、半導体メモリとしてのＮＡＮＤフラッシュメモリと、当該ＮＡＮＤフラッシュメモリを備えたメモリシステムを例に挙げて説明する。
【０００９】
１．１  構成
第１実施形態に係るメモリシステムの構成について説明する。
【００１０】
１．１．１  メモリシステムの構成
まず、第１実施形態に係るメモリシステムの構成の概要について、図１を用いて説明する。
【００１１】
図１に示すように、メモリシステム１は、半導体メモリ（ＮＡＮＤフラッシュメモリ）１００とメモリコントローラ２００とを備えている。ＮＡＮＤフラッシュメモリ１００とメモリコントローラ２００とは、例えばそれらの組み合わせにより一つのメモリシステム１を構成しても良く、その例としてはＳＤTMカードのようなメモリカードや、ＳＳＤ（solid state drive）等が挙げられる。なお、半導体メモリ１００は、ＮＡＮＤ型のフラッシュメモリに限らず、ＮＯＲ型であってもよい。
【００１２】
ＮＡＮＤフラッシュメモリ１００は複数のメモリセルを備え、データを不揮発に記憶する。メモリコントローラ２００は、ＮＡＮＤバスによってＮＡＮＤフラッシュメモリ１００に接続され、ホストバスによってホスト機器３００に接続される。そしてメモリコントローラ２００は、ＮＡＮＤフラッシュメモリ１００を制御し、またホスト機器３００から受信した命令に応答して、ＮＡＮＤフラッシュメモリ１００にアクセスする。ホスト機器３００は、例えばデジタルカメラやパーソナルコンピュータ等であり、ホストバスは、例えばＳＤTMインタフェース、ＳＡＳ（Serial attached SCSI(small computer system interface)）、ＳＡＴＡ（Serial ATA(advanced technology attachment)）、ＰＣＩｅ（ＰＣＩ  ＥＸＰＲＥＳＳTM（Peripheral component interconnect express））、又はＮＶＭｅ（ＮＶＭ  ＥＸＰＲＥＳＳTM（Non-volatile memory express））に従ったバスである。ＮＡＮＤバスは、ＮＡＮＤインタフェースに従った信号の送受信を行う。
【００１３】
ＮＡＮＤインタフェースの信号の具体例は、チップイネーブル信号ＣＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、レディ・ビジー信号ＲＢｎ、及び入出力信号ＤＱである。なお、以降の説明では、信号名に接尾辞として“ｎ”が付与される場合、当該信号は、負論理である。すなわち、当該信号は“Ｌ（Low）”レベルでアサートされる信号であることを示す。
【００１４】
信号ＣＥｎは、ＮＡＮＤフラッシュメモリ１００をイネーブルにするための信号であり、“Ｌ”レベルでアサートされる。信号ＣＬＥ及びＡＬＥは、ＮＡＮＤフラッシュメモリ１００への入力信号ＤＱがそれぞれコマンド及びアドレスであることをＮＡＮＤフラッシュメモリ１００に通知する信号である。信号ＷＥｎは“Ｌ”レベルでアサートされ、入力信号ＤＱをＮＡＮＤフラッシュメモリ１００に取り込ませるための信号である。信号ＲＥｎも“Ｌ”レベルでアサートされ、ＮＡＮＤフラッシュメモリ１００から出力信号ＤＱを読み出すための信号である。レディ・ビジー信号ＲＢｎは、ＮＡＮＤフラッシュメモリ１００がレディ状態（例えば、メモリコントローラ２００からの命令を受信出来る状態）であるか、それともビジー状態（例えば、メモリコントローラ２００からの命令を受信出来ない状態）であるかを示す信号であり、“Ｌ”レベルがビジー状態を示す。入出力信号ＤＱは、例えば８ビットの信号である。そして入出力信号ＤＱは、ＮＡＮＤフラッシュメモリ１００とメモリコントローラ２００との間で送受信されるデータの実体であり、コマンドＣＭＤ、アドレスＡＤＤ、並びに書き込みデータ及び読出しデータ等のデータＤＡＴである。
【００１５】
１．１．２  メモリコントローラの構成
引き続き図１を用いて、メモリコントローラ２００の構成の詳細について説明する。
【００１６】
メモリコントローラ２００は、例えば、ＳｏＣ（System-on-a-chip）であり、ホストインタフェース回路２１０、メモリ（ＲＡＭ）２２０、プロセッサ（ＣＰＵ）２３０、バッファメモリ２４０、ＮＡＮＤインタフェース回路２５０、及びＥＣＣ回路２６０を備えている。なお、以下に説明されるメモリコントローラ２００の各部２１０−２６０の機能は、ハードウェア構成、又はハードウェア資源とファームウェアとの組合せ構成のいずれでも実現可能である。
【００１７】
ホストインタフェース回路２１０は、ホストバスを介してホスト機器３００と接続され、ホスト機器３００から受信した命令及びデータを、それぞれプロセッサ２３０及びバッファメモリ２４０に転送する。またプロセッサ２３０の命令に応答して、バッファメモリ２４０内のデータをホスト機器３００へ転送する。
【００１８】
メモリ２２０は、例えばＳＲＡＭ（Static random access memory）等の半導体メモリであり、プロセッサ２３０の作業領域として使用される。そしてメモリ２２０は、ＮＡＮＤフラッシュメモリ１００を制御するためのファームウェアや、各種の管理テーブル等を保持する。
【００１９】
プロセッサ２３０は、メモリコントローラ２００全体の動作を制御する。例えば、プロセッサ２３０は、ホスト機器３００から書き込み命令を受信した際には、それに応答して、ＮＡＮＤインタフェース回路２５０に対して書き込み命令を発行する。読出し処理及び消去処理の際も同様である。またプロセッサ２３０は、ＮＡＮＤフラッシュメモリ１００を制御するための様々な処理を実行する。例えば、プロセッサ２３０は、後述するトラッキング処理に付随する内部処理として、読出し処理を、トラッキング処理に対してバックグラウンドで実行し得る。
【００２０】
バッファメモリ２４０は、例えば、ＤＲＡＭ（Dynamic random access memory）であり、書込みデータや読出しデータを一時的に保持する。
【００２１】
ＮＡＮＤインタフェース回路２５０は、ＮＡＮＤバスを介してＮＡＮＤフラッシュメモリ１００と接続され、ＮＡＮＤフラッシュメモリ１００との通信を司る。そして、プロセッサ２３０から受信した命令に基づき、信号ＣＥｎ、ＡＬＥ、ＣＬＥ、ＷＥｎ、及びＲＥｎをＮＡＮＤフラッシュメモリ１００へ出力する。また書込み処理時には、プロセッサ２３０で発行された書込みコマンド、及びバッファメモリ２４０内の書込みデータを、入出力信号ＤＱとしてＮＡＮＤフラッシュメモリ１００へ転送する。更に読出し処理時には、プロセッサ２３０で発行された読出しコマンドを、入出力信号ＤＱとしてＮＡＮＤフラッシュメモリ１００へ転送し、更にＮＡＮＤフラッシュメモリ１００から読み出されたデータを入出力信号ＤＱとして受信し、これをバッファメモリ２４０へ転送する。
【００２２】
ＥＣＣ回路２６０は、ＮＡＮＤフラッシュメモリ１００に記憶されるデータに関する誤り検出及び誤り訂正処理を行う。すなわちＥＣＣ回路２６０は、データの書き込み時には誤り訂正符号を生成して、これを書込みデータに付与し、データの読出し処理時にはこれを復号し、誤りビットの有無を検出する。そして誤りビットが検出された際には、その誤りビットの位置を特定し、誤りを訂正する。誤り訂正の方法は、例えば、硬判定復号（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号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００５４】
１．２  動作
次に、第１実施形態に係るメモリシステムの動作について説明する。
【００５５】
１．２．１  トラッキング処理の概要
第１実施形態に係るトラッキング処理の概要について説明する。
【００５６】
先に説明した図４では、或るセルユニットＣＵにおける各データの閾値電圧分布は互いに独立している。よって、読出し電圧ＶＣＧＲを用いた読出し処理において、読出し電圧ＶＣＧＲが各データの閾値電圧分布の間に設定されていれば、正しいデータを読み出すことができる。
【００５７】
しかしながら、種々の要因により、閾値電圧は変動し得る。その結果、図４における閾値電圧分布は、その分布幅が広がり、又は分布が移動することにより、隣り合う分布同士が重なる場合がある。この様子を図５に示す。
【００５８】
図５は、第１実施形態に係るメモリセルアレイの閾値電圧分布に生じる変動を説明するための模式図である。例えば、データを書き込んだ直後において、“Ａ”状態に属する閾値電圧分布、及び“Ｂ”状態に属する閾値電圧分布が図５（Ａ）に示す通りであったとする。しかし、時間が経過すると、隣接セルとの干渉等により閾値電圧分布が低電圧側又は高電圧側にシフトする場合がある（これを「データリテンションエラー」と呼ぶ）。また、閾値電圧分布は、他のメモリセルトランジスタＭＴへの書込み処理や、読出し処理によっても変動し得る（これを「ディスターブ」と呼ぶ）。このようなデータリテンションエラーやディスターブ等の要因により、図５（Ｂ）に示すように閾値電圧の分布が変動したとする。すると、当初設定されていた読出し電圧ＶＢ０で読出しを行うと、斜線部分の領域に相当するメモリセルトランジスタＭＴの読出しデータがエラーとなる。そして、エラービット数がＥＣＣ回路２６０の訂正可能エラービット数を超えていれば、データを正しく訂正することができない。
【００５９】
このような場合、エラービット数が少なくなるように、より２つの状態間の閾値電圧分布の重なりが小さくなる電圧が新たな読出し電圧として設定されることが望ましい。読み出されたデータのエラービット数を最小とするためには、２つの状態間の閾値電圧分布の重なりが最小となる位置（つまり、２つの状態間の閾値電圧分布の谷位置）における電圧（例えば、図５（Ｂ）における電圧ＶＢｏｐｔ）が読出し電圧として設定されることが望ましい。トラッキング処理は、このような最適な読出し電圧を探索し、決定するための処理の一つである。なお、以降の説明では、「電圧の位置」は「電圧の値」と読み替え可能であり、「状態間の閾値電圧分布の重なりが最小となる位置」は「状態間の閾値電圧分布の重なりが最小となる電圧」と読み替え可能であるものとする。
【００６０】
図６は、第１実施形態に係るメモリシステムにおけるトラッキング処理で算出される区間セル数を説明するための模式図である。図６（Ａ）は、一例として、或るセルユニットＣＵにおける閾値電圧の分布のうちの“Ａ”状態に属する閾値電圧分布と、“Ｂ”状態に属する閾値電圧分布とを示す。図６（Ｂ）は、読出し電圧に対してオン状態となるメモリセル数（「オンセル数」とも呼ぶ）の推移を示す。図６（Ｃ）は、２つの読出し電圧間におけるオンセル数変化量を示す。なお、図６（Ｂ）及び６（Ｃ）は、図６（Ａ）に示される閾値電圧分布を有するセルユニットＣＵに対応してプロットされたものである。
【００６１】
図６（Ｂ）に示すように、読出し電圧を低くしていくと、“Ｂ”状態の最頻値である電圧ＶＢｍｉｄよりわずかに高い電圧でオンセル数が急激に減少し、｜ｄＭ／ｄＲ｜が極大となる。ここで、最頻値とは、図６（Ａ）において最も閾値電圧の分布確率が高い電圧であり、Ｍはオンセル数で、Ｒは読出し電圧である。更に読出し電圧を低くしていくと、オンセル数の減少率は小さくなり、或る値の読出し電圧においてオンセル数の減少率が極小となる。オンセル数の減少率の極小値は、“Ａ”状態に属する閾値電圧分布と、“Ｂ”状態に属する閾値電圧分布とが重ならない場合にはゼロとなる。他方で、“Ａ”状態に属する閾値電圧分布と、“Ｂ”状態に属する閾値電圧分布とが重なる場合には、オンセル数の減少率の極小値はゼロではない値（＞０）となる。そして更に読出し電圧を低くしていくと、再びオンセル数の減少率が大きくなり、“Ａ”状態の最頻値である電圧ＶＡｍｉｄよりわずかに高い電圧で再び｜ｄＭ／ｄＲ｜が極大となる。
【００６２】
上述のオンセル数の変化によって、２つの状態間の閾値電圧分布の重なりが最も小さくなる読出し電圧（すなわち、２つの状態の閾値電圧分布の交点に対応する読出し電圧）を検出することができる。例えば、まず、読出し電圧Ｒ０を用いて読出し処理を行う。この時のオンセル数をＭ０とする。次に、電圧Ｒ０よりΔＶだけ低い電圧Ｒ１を用いて読出し処理を行う。この時のオンセル数をＭ１とする。すると、読出し電圧がＲ０からＲ１に低下した際に新たにオフするメモリセルトランジスタＭＴの数は、Ｃ１＝Ｍ０−Ｍ１個である。すなわち、閾値電圧が［Ｒ０，Ｒ１］間にあるメモリセルの数がＣ１個である。
【００６３】
引き続き、電圧Ｒ１よりΔＶだけ低い電圧Ｒ２を用いて読出し処理を行う。この時のオンセル数をＭ２とする。すると、読出し電圧がＲ１からＲ２に低下した際に新たにオフするメモリセルトランジスタＭＴの数は、Ｃ２＝Ｍ１−Ｍ２個である。そして、Ｃ１＞Ｃ２であったとすれば、｜ｄＭ／ｄＲ｜が最小となる電圧は、少なくとも電圧Ｒ１より低電圧側に位置すると考えられる。
【００６４】
引き続き、電圧Ｒ２よりΔＶだけ低い電圧Ｒ３を用いて読出し処理を行う。この時のオンセル数をＭ３とする。すると、読出し電圧がＲ２からＲ３に低下した際に新たにオフするメモリセルトランジスタＭＴの数は、Ｃ３＝Ｍ２−Ｍ３であり、Ｃ３＞Ｃ２であったとすれば、図６（Ｃ）のようなヒストグラムが得られる。
【００６５】
以上の結果、オンセル数変化量（「区間セル数」とも呼ぶ。）によって、図６（Ｃ）における一点鎖線で示されるような閾値電圧分布を推定することができ、“Ａ”状態に属する閾値電圧分布と“Ｂ”状態に属する閾値電圧分布との重なりが最も小さくなる読出し電圧の位置（「谷位置」とも呼ぶ。）が電圧Ｒ１と電圧Ｒ２との間にあることが推定できる。なお、以下の説明では、便宜上、２つの電圧間に対応付けられる１つの区間セル数を「１点の区間セル数」と数える。
【００６６】
以下の説明では、トラッキング処理は、複数回の読出し電圧によって複数個の区間セル数を算出することにより、隣り合う状態間の閾値電圧分布の重なりが最も小さくなる位置を探索し、当該位置に近いと予想される点に対応する電圧（最適な読出し電圧と予想される電圧）を決定する処理の総称として用いられる。トラッキング処理は、例えば、後述するように、１つの最適な読出し電圧の探索に対して使用する読出し電圧の数に応じて分類され、３点トラッキング処理、及びｍ点トラッキング処理を含む（ｍは、４以上の整数）。
【００６７】
１．２．２  トラッキング処理を伴う読出し処理
まず、第１実施形態に係るメモリシステムにおけるトラッキング処理を伴う読出し処理の一例について、図７に示すフローチャートを用いて説明する。図７では、読出し対象のデータに対する誤り訂正処理が失敗した場合に、当該読出し対象のデータを誤り訂正可能な読出し電圧を探索するために実行される各種トラッキング処理を含むフローの一例が示される。
【００６８】
ステップＳＴ１０において、メモリコントローラ２００は、例えば、ホスト機器３００からのデータの読出し命令を受信すると、ＮＡＮＤフラッシュメモリ１００に対して読出し処理を実行する旨のリードコマンドを発行する。ＮＡＮＤフラッシュメモリ１００は、リードコマンドに含まれる情報に基づいて読出し電圧を設定し、当該読出し電圧を用いてデータを読み出す。ＮＡＮＤフラッシュメモリ１００は、読み出したデータをメモリコントローラ２００に送信する。
【００６９】
ステップＳＴ２０において、読出しデータを受けたメモリコントローラ２００では、ＥＣＣ回路２６０が誤り訂正処理を実行する。読出しデータに誤りが含まれない場合、又はＥＣＣ回路２６０により誤りを訂正できた場合（ステップＳＴ２０；ｙｅｓ）、メモリコントローラ２００は、トラッキング処理を実行することなく、読み出したデータをホスト機器３００に返信し（図示せず）、データの読出し処理を終了する。一方、読出しデータに含まれるエラービット数がＥＣＣ回路２６０で訂正可能なビット数を超えており、ＥＣＣ回路２６０による誤りの訂正ができない場合（ステップＳＴ２０；ｎо）、処理はステップＳＴ３０に進む。
【００７０】
ステップＳＴ３０において、メモリコントローラ２００は、３点トラッキング処理の実行を開始する。３点トラッキング処理では、メモリコントローラ２００は、読出し対象ページの読み出し処理において必要となる読出し電圧ＶＣＧＲのそれぞれに対して、互いに異なる３点の読出し電圧を使用してＮＡＮＤフラッシュメモリ１００から３つの読出しデータを読み出し、当該読出しデータに基づいて２点の区間セル数のみを算出する。具体的には、例えば、下位ページのデータに対する読出し処理の場合、電圧ＶＡ及びＶＥの各々に対して、３点トラッキング処理が実行される。そして、メモリコントローラ２００は、３点トラッキング処理が実行された読出し電圧ごとに、算出された２点の区間セル数に基づいて、最適な読出し電圧の近傍に位置すると推定される電圧値を読出し電圧Ｖｅｓｔ１として算出する。３点トラッキング処理の詳細については、後述する。
【００７１】
なお、３点トラッキング処理は、必ずしも読出し対象ページの読出し処理において必要となる読出し電圧の全てに対して実行されなくてもよく、一部の読出し電圧に対して実行されてもよい。
【００７２】
ステップＳＴ４０において、メモリコントローラ２００は、ステップＳＴ３０において算出された読出し電圧Ｖｅｓｔ１を用いて再度読出し処理を実行する旨のリードコマンドをＮＡＮＤフラッシュメモリ１００に対して発行する。ＮＡＮＤフラッシュメモリ１００は、読出し電圧Ｖｅｓｔ１を用いて、ステップＳＴ１０と同じ読出し対象のページからデータを読み出す。ＮＡＮＤフラッシュメモリ１００は、読み出したデータをメモリコントローラ２００に送信する。
【００７３】
ステップＳＴ５０において、読出しデータを受けたメモリコントローラ２００では、ＥＣＣ回路２６０が誤り訂正処理を実行する。読出しデータに誤りが含まれない場合、又はＥＣＣ回路２６０により誤りを訂正できた場合（ステップＳＴ５０；ｙｅｓ）、メモリコントローラ２００は、更なるトラッキング処理を実行することなく、読み出したデータをホスト機器３００に返信し（図示せず）、データの読出し処理を終了する。一方、読出しデータに含まれるエラービット数がＥＣＣ回路２６０で訂正可能なビット数を超えており、ＥＣＣ回路２６０による誤りの訂正ができない場合（ステップＳＴ５０；ｎо）、処理はステップＳＴ６０に進む。
【００７４】
ステップＳＴ６０において、メモリコントローラ２００は、３点トラッキング処理によって取得した情報を使用しつつ、ｍ点トラッキング処理の実行を開始する。ｍ点トラッキング処理では、メモリコントローラ２００は、読出し対象ページの読み出し処理において必要となる読出し電圧ＶＣＧＲのそれぞれに対して、互いに異なるｍ点の読出し電圧を使用して読み出されたｍ個の読出しデータから（ｍ−１）点の区間セル数を算出する。そして、メモリコントローラ２００は、算出された（ｍ−１）点の区間セル数に基づいて、最適な読出し電圧の近傍に位置すると推定される電圧値を読出し電圧Ｖｅｓｔ２として算出する。
【００７５】
なお、メモリコントローラ２００は、ｍ点トラッキング処理に際して、ステップＳＴ３０における３点トラッキング処理の際に算出された２点の区間セル数を利用する。すなわち、ステップＳＴ６０では、メモリコントローラ２００は、残りの（ｍ−３）点の区間セル数を算出する処理を行う。これにより、ステップＳＴ６０におけるｍ点トラッキング処理では、ステップＳＴ３０における２点の区間セル数と、更に算出される（ｍ−３）点の区間セル数と、に基づいて電圧Ｖｅｓｔ２が算出される。ｍ点トラッキング処理の詳細については、後述する。
【００７６】
ステップＳＴ７０において、メモリコントローラ２００は、ステップＳＴ６０において算出された読出し電圧Ｖｅｓｔ２を用いて再度読出し処理を実行する旨のリードコマンドをＮＡＮＤフラッシュメモリ１００に対して発行する。ＮＡＮＤフラッシュメモリ１００は、読出し電圧Ｖｅｓｔ２を用いて、ステップＳＴ１０と同じ読出し対象のページからデータを読み出す。ＮＡＮＤフラッシュメモリ１００は、読み出したデータをメモリコントローラ２００に送信する。
【００７７】
ステップＳＴ８０において、読出しデータを受けたメモリコントローラ２００では、ＥＣＣ回路２６０が誤り訂正処理を実行する。読出しデータに含まれるエラービット数がＥＣＣ回路２６０で訂正可能なビット数を超えており、ＥＣＣ回路２６０による誤りの訂正ができない場合（ステップＳＴ８０；ｎо）、処理はステップＳＴ９０に進む。ステップＳＴ９０において、メモリコントローラ２００は、次のリトライ処理を実行する。次のリトライ処理は、例えば、より多くの読出しデータを用いて実行されるより詳細なトラッキング処理や、軟判定符号を用いた誤り訂正処理等を含み得る。
【００７８】
一方、読出しデータに誤りが含まれない場合、又はＥＣＣ回路２６０により誤りを訂正できた場合（ステップＳＴ８０；ｙｅｓ）、メモリコントローラ２００は、読み出したデータをホスト機器３００に返信し（図示せず）、データの読出し処理を終了する。
【００７９】
以上により、トラッキング処理を伴う読出し処理が終了する。
【００８０】
１．２．３  ３点トラッキング処理
次に、３点トラッキング処理について説明する。
【００８１】
図８は、第１実施形態に係るメモリシステムにおける３点トラッキング処理を説明するためのフローチャートである。図８に示されるステップＳＴ３１〜ＳＴ３６は、図７におけるステップＳＴ３０に対応する。なお、図８では、説明の便宜上、読出し対象のページに対して、読出し電圧ＶＣＧＲのうちの１つに対応する読出し電圧Ｖｅｓｔ１を算出する際の処理が示される。
【００８２】
ステップＳＴ３１において、メモリコントローラ２００は、電圧Ｒ０を使用した読出し処理を実行する旨のリードコマンドをＮＡＮＤフラッシュメモリ１００に対して発行する。ＮＡＮＤフラッシュメモリ１００は、電圧Ｒ０を使用してデータＤ０を読み出し、メモリコントローラ２００に送信する。メモリコントローラ２００は、取得したデータＤ０をバッファメモリ２４０に一時的に格納する。
【００８３】
ステップＳＴ３２において、メモリコントローラ２００は、電圧Ｒ１を使用した読出し処理を実行する旨のリードコマンドをＮＡＮＤフラッシュメモリ１００に対して発行する。ＮＡＮＤフラッシュメモリ１００は、電圧Ｒ１を使用してデータＤ１を読み出し、メモリコントローラ２００に送信する。メモリコントローラ２００は、取得したデータＤ１をバッファメモリ２４０に一時的に格納する。
【００８４】
ステップＳＴ３３において、メモリコントローラ２００は、データＤ０及びＤ１に基づき、代表電圧Ｖ１における区間セル数Ｃ１を算出する。具体的には、メモリコントローラ２００は、データＤ０及びＤ１を比較し、オン状態からオフ状態となったビットの数を数え、区間セル数Ｃ１とする。代表電圧Ｖ１は、電圧Ｒ０と電圧Ｒ１との間の範囲（以下、範囲［Ｒ０，Ｒ１］とも表す）内の任意の電圧が設定可能であり、例えば、Ｖ１＝（Ｒ０＋Ｒ１）／２である。これにより、範囲［Ｒ０，Ｒ１］に閾値電圧を有するメモリセルトランジスタＭＴの数である区間セル数Ｃ１と、代表電圧Ｖ１とが関連付けてメモリ２２０に記憶される。以下では、区間セル数の算出における読出し処理に使用された２つの電圧の間に位置し、区間セル数に対応付けられる電圧を、「代表電圧」と呼ぶ。
【００８５】
ステップＳＴ３４において、メモリコントローラ２００は、電圧Ｒ２を使用した読出し処理を実行する旨のリードコマンドをＮＡＮＤフラッシュメモリ１００に対して発行する。ＮＡＮＤフラッシュメモリ１００は、電圧Ｒ２を使用してデータＤ２を読み出し、メモリコントローラ２００に送信する。メモリコントローラ２００は、取得したデータＤ２をバッファメモリ２４０に一時的に格納する。なお、電圧Ｒ０〜Ｒ２の大小関係は任意であるが、以下の説明では、説明の便宜上、Ｒ０＞Ｒ１＞Ｒ２であり、例えば、Ｒ０−Ｒ１＝Ｒ１−Ｒ２＝ΔＶであるとする。
【００８６】
ステップＳＴ３５において、メモリコントローラ２００は、データＤ１及びＤ２に基づき、代表電圧Ｖ２における区間セル数Ｃ２を算出する。代表電圧Ｖ２は、範囲［Ｒ１，Ｒ２］内の任意の電圧が設定可能であり、例えば、Ｖ２＝（Ｒ１＋Ｒ２）／２である。これにより、範囲［Ｒ１，Ｒ２］に閾値電圧を有するメモリセルトランジスタＭＴの数である区間セル数Ｃ２と、代表電圧Ｖ２とが関連付けてメモリ２２０に記憶される。
【００８７】
ステップＳＴ３６において、メモリコントローラ２００は、２点（Ｃ１，Ｖ１）及び（Ｃ２，Ｖ２）を参照し、区間セル数Ｃ１及びＣ２の小さい方に対応する代表電圧を読出し電圧Ｖｅｓｔ１と判定する。すなわち、メモリコントローラ２００は、区間セル数Ｃ１が区間セル数Ｃ２より小さい場合には区間セル数Ｃ１に対応する代表電圧Ｖ１を読出し電圧Ｖｅｓｔ１と判定し、区間セル数Ｃ２が区間セル数Ｃ１より小さい場合には区間セル数Ｃ２に対応する代表電圧Ｖ２を読出し電圧Ｖｅｓｔ１と判定する。なお、区間セル数Ｃ１及びＣ２の値が等しい場合、メモリコントローラ２００は、代表電圧Ｖ１及びＶ２の中点値（mid-range）を読出し電圧Ｖｅｓｔ１と判定する（Ｖｅｓｔ１＝（Ｖ１＋Ｖ２）／２）。
【００８８】
以上により、３点トラッキング処理が終了する。
【００８９】
なお、図８の例では、区間セル数Ｃ１を算出した後にデータＤ２を取得し、しかる後に区間セル数Ｃ２を算出する場合について説明したが、これに限られない。具体的には、例えば、区間セル数Ｃ１及びＣ２は、全てのデータＤ０〜Ｄ２が取得されたのちに、まとめて算出されてもよい。つまり、図８に示されたステップＳＴ３３は、ステップＳＴ３４の後に実行されてもよい。
【００９０】
また、図８の例では、ステップＳＴ３１、ＳＴ３２、及びＳＴ３４において、ＮＡＮＤフラッシュメモリ１００は、データＤ１〜Ｄ３をメモリコントローラ２００に送信する場合について説明したが、これに限られない。例えば、ＮＡＮＤフラッシュメモリ１００は、ステップＳＴ３１、ＳＴ３２、及びＳＴ３４においてそれぞれ、データＤ１〜Ｄ３に基づいてオンセル数又はオフセル数をカウントし、当該カウント結果を示す情報をメモリコントローラ２００に送信してもよい。この場合、メモリコントローラ２００は、ステップＳＴ３３において、データＤ０及びＤ１の各々に関するカウント結果に基づいて区間セル数Ｃ１を算出し、ステップＳＴ３５において、データＤ１及びＤ２の各々に関するカウント結果に基づいて区間セル数Ｃ２を算出する。
【００９１】
図９は、第１実施形態に係るメモリシステムにおける３点トラッキング処理を説明するための模式図である。図９では、最適な読出し電圧Ｖｏｐｔに対する読出し電圧Ｖｅｓｔ１の誤差が模式的に示される。より具体的には、図９では、電圧Ｖｏｐｔと電圧Ｒ０〜Ｒ２との間の位置関係が、当該誤差に与える影響が示される。なお、図９の例では、電圧Ｒ０及びＲ１間の差、並びに電圧Ｒ１及びＲ２間の差の絶対値は、いずれも値ΔＶであるものとする（｜Ｒ０−Ｒ１｜＝｜Ｒ１−Ｒ２｜＝ΔＶ）。しかしながら、電圧Ｒ０及びＲ１間の差、並びに電圧Ｒ１及びＲ２間の差は、必ずしも同じ値である必要はなく、互いに異なる値であってもよい。
【００９２】
図９（Ａ）に示すように、電圧Ｖｏｐｔが範囲［Ｒ０，Ｒ１］内に存在する場合、代表電圧Ｖ１が範囲［Ｒ０，Ｒ１］の中央に設定されていれば、読出し電圧Ｖｅｓｔ１は、電圧Ｖｏｐｔに対して高々値（ΔＶ／２）の誤差で算出される。すなわち、値ΔＶを適切に設定することによって電圧Ｖｏｐｔに近い値を読出し電圧Ｖｅｓｔ１として算出することができ、ひいては、図７のステップＳＴ５０における誤り訂正処理を成功させることができる。
【００９３】
同様に、図９（Ｂ）に示すように、電圧Ｖｏｐｔが範囲［Ｒ１，Ｒ２］内に存在する場合、代表電圧Ｖ２が範囲［Ｒ１，Ｒ２］の中央に設定されていれば、読出し電圧Ｖｅｓｔ１は、電圧Ｖｏｐｔに対して高々値（ΔＶ／２）の誤差で算出される。すなわち、値ΔＶを適切に設定することによって電圧Ｖｏｐｔに近い値を読出し電圧Ｖｅｓｔ１として算出することができ、ひいては、図７のステップＳＴ５０における誤り訂正処理を成功させることができる。
【００９４】
一方、図９（Ｃ）に示すように、電圧Ｖｏｐｔが範囲［Ｒ０，Ｒ２］外に存在する場合、読出し電圧Ｖｅｓｔ１は、電圧Ｖｏｐｔに対して値（ΔＶ／２）よりも大きな誤差を有して算出される可能性がある。このため、図７のステップＳＴ５０における誤り訂正処理に失敗する程度に、読出し電圧Ｖｅｓｔ１の精度が悪化する可能性がある。読出し電圧Ｖｅｓｔ１を使用して読み出したデータに対する誤り訂正処理が失敗した場合、図７のステップＳＴ６０に示したように、３点トラッキング処理に続いてｍ点トラッキング処理が実行される。これにより、トラッキング処理の精度が担保される。
【００９５】
１．２．４  ｍ点トラッキング処理
次に、ｍ点トラッキング処理について説明する。
【００９６】
図１０は、第１実施形態に係るメモリシステムにおけるｍ点トラッキング処理を説明するためのフローチャートである。図１０に示されるステップＳＴ６１〜ＳＴ６６は、図７におけるステップＳＴ６０に対応する。なお、図１０では、説明の便宜上、図８と同様に、読出し対象のセルユニットＣＵに対して、読出し電圧ＶＣＧＲのうちの１つに対応する読出し電圧Ｖｅｓｔ２を算出する際の処理が示される。
【００９７】
ステップＳＴ６１において、メモリコントローラ２００は、ステップＳＴ３０で算出され、ステップＳＴ３６において参照された２点（Ｖ１，Ｃ１）及び（Ｖ２，Ｃ２）を示す情報をメモリ２２０から再度参照する。
【００９８】
ステップＳＴ６２において、メモリコントローラ２００は、ｋ回目に実行する読出し処理で使用する読出し電圧Ｒｋを決定する（ｍ−１≧ｋ≧３）。読出し電圧Ｒｋの決定方法については、後述する。
【００９９】
ステップＳＴ６３において、メモリコントローラ２００は、電圧Ｒｋを使用した読出し処理を実行する旨のリードコマンドをＮＡＮＤフラッシュメモリ１００に対して発行する。ＮＡＮＤフラッシュメモリ１００は、電圧Ｒｋを使用してデータＤｋを読み出し、メモリコントローラ２００に送信する。メモリコントローラ２００は、例えば、データＤｋをバッファメモリ２４０に一時的に格納する。
【０１００】
ステップＳＴ６４において、メモリコントローラ２００は、データＤｋ、及び電圧Ｒｋと隣り合う電圧（すなわち、電圧（Ｒｋ＋ΔＶ）又は（Ｒｋ−ΔＶ）に相当する電圧）を使用して取得されたデータに基づき、代表電圧Ｖｋにおける区間セル数Ｃｋを算出する。代表電圧Ｖｋは、電圧Ｒｋと、電圧Ｒｋに隣り合う電圧と、の間の範囲内の任意の電圧が設定可能であり、例えば、当該２つの電圧の中点値である。これにより、区間セル数Ｃｋと、代表電圧Ｖｋとが関連付けて記憶される。
【０１０１】
ステップＳＴ６５において、メモリコントローラ２００は、点（Ｖ１，Ｃ１）〜（Ｖｋ，Ｃｋ）について、端点以外に区間セル数が極小となる点（極小点）（Ｖｍｉｎ，Ｃｍｉｎ）が存在するか否かを判定する。ここで、「端点」とは、代表電圧Ｖ１〜Ｖｋのうちの最低電圧に対応する点、及び最高電圧に対応する点、の２点である。端点以外に極小点（Ｖｍｉｎ，Ｃｍｉｎ）が存在しない、又は、点（Ｖ１，Ｃ１）〜（Ｖｋ，Ｃｋ）を、代表電圧の値が低い順に結ぶ曲線が電圧軸方向に単調減少又は単調増加に並ぶと判定された場合（ステップＳＴ６５；ｎо）、処理はステップＳＴ６６に進む。ステップＳＴ６６において、メモリコントローラ２００は、ｋをインクリメントした後、ステップＳＴ６２〜ＳＴ６５を繰り返し実行する。
【０１０２】
一方、端点以外に極小点（Ｖｍｉｎ，Ｃｍｉｎ）が存在する、又は、点（Ｖ１，Ｃ１）〜（Ｖｋ，Ｃｋ）を、代表電圧の値が低い順に結ぶ曲線において、電圧軸方向に減少から増加に転じる点があると判定された場合（ステップＳＴ６５；ｙｅｓ）、処理はステップＳＴ６７に進む。ステップＳＴ６７において、メモリコントローラ２００は、電圧Ｖｍｉｎを読出し電圧Ｖｅｓｔ２と判定する。なお、以下の説明では、電圧Ｖｍｉｎを読出し電圧Ｖｅｓｔ２と判定する場合について説明するが、読出し電圧Ｖｅｓｔ２の導出では、内分計算をする等より細かな精度を持つ方法が適用されてもよい。
【０１０３】
以上で、ｍ点トラッキング処理が終了する。
【０１０４】
図１１〜図１３は、第１実施形態に係るメモリシステムにおけるｍ点トラッキング処理での読出し電圧探索アルゴリズムの一例を説明するための模式図である。図１１〜図１３では、一例として、ｍ点トラッキング処理での読出し電圧探索アルゴリズムを、３つのパターンに分類して示している。すなわち、図１１は、代表電圧Ｖ１が代表電圧Ｖｍｉｎであると判定される場合を示す。図１２は、代表電圧Ｖｍｉｎが代表電圧Ｖ１よりも低電圧側にあると判定される場合を示し、図１３は、代表電圧Ｖｍｉｎが代表電圧Ｖ１よりも高電圧側にあると判定される場合を示す。図１２は図１２（Ａ）及び図１２（Ｂ）を含み、図１２（Ａ）は、代表電圧Ｖ２が代表電圧Ｖｍｉｎであると判定される場合を示し、図１２（Ｂ）は、代表電圧Ｖ（ｍ−２）が代表電圧Ｖｍｉｎであると判定される場合を示す（ｍ−２≧３）。図１３は図１３（Ａ）及び図１３（Ｂ）を含み、図１３（Ａ）は、代表電圧Ｖ３が代表電圧Ｖｍｉｎであると判定される場合を示し、図１３（Ｂ）は、代表電圧Ｖ（ｍ−２）が代表電圧Ｖｍｉｎであると判定される場合を示す（ｍ−２≧４）。
【０１０５】
なお、上述の通り、第１実施形態に係るメモリシステムにおけるｍ点トラッキング処理では、３点トラッキング処理で算出された区間セル数Ｃ１及びＣ２が再度利用される。このため、電圧Ｒ０〜Ｒ２の大小関係は、図９に図示した３点トラッキング処理と同様に、Ｒ０＞Ｒ１＞Ｒ２であるものとして説明する。
【０１０６】
図１１に示すように、区間セル数Ｃ２が区間セル数Ｃ１よりも大きい場合、最適な読出し電圧Ｖｏｐｔは、少なくとも電圧Ｒ１より高電圧側に存在することが推定される。このため、メモリコントローラ２００は、図１０のステップＳＴ６２及びＳＴ６３において、電圧Ｒ０より高電圧側の電圧Ｒ３を使用する読出し処理を実行する旨のコマンドをＮＡＮＤフラッシュメモリ１００に対して発行し、ＮＡＮＤフラッシュメモリ１００からデータＤ３を取得する。これにより、メモリコントローラ２００は、ステップＳＴ６４において、データＤ０及びＤ３に基づき、範囲［Ｒ３，Ｒ０］内の代表電圧Ｖ３に対応する区間セル数Ｃ３を算出する。
【０１０７】
図１１の場合では、区間セル数Ｃ３が区間セル数Ｃ１よりも大きいため、Ｃ２＞Ｃ１かつＣ１＜Ｃ３となり、点（Ｖ１，Ｃ１）が極小点となる。したがって、メモリコントローラ２００は、区間セル数Ｃ１〜Ｃ３に基づき、代表電圧Ｖ１を読出し電圧Ｖｅｓｔ２と判定することができる。
【０１０８】
図１２（Ａ）に示すように、区間セル数Ｃ２が区間セル数Ｃ１よりも小さい場合、最適な読出し電圧Ｖｏｐｔは、少なくとも電圧Ｒ１より低電圧側に存在することが推定される。このため、メモリコントローラ２００は、図１０のステップＳＴ６２及びＳＴ６３において、電圧Ｒ２より低電圧側の電圧Ｒ３を使用する読出し処理を実行する旨のコマンドをＮＡＮＤフラッシュメモリ１００に対して発行し、ＮＡＮＤフラッシュメモリ１００からデータＤ３を取得する。これにより、メモリコントローラ２００は、ステップＳＴ６４において、データＤ２及びＤ３に基づき、範囲［Ｒ２，Ｒ３］内の代表電圧Ｖ３に対応する区間セル数Ｃ３を算出する。
【０１０９】
図１２（Ａ）の場合では、区間セル数Ｃ３が区間セル数Ｃ２よりも大きいため、Ｃ３＞Ｃ２かつＣ２＜Ｃ１となり、点（Ｖ２，Ｃ２）が極小点となる。したがって、メモリコントローラ２００は、区間セル数Ｃ１〜Ｃ３に基づき、代表電圧Ｖ２を読出し電圧Ｖｅｓｔ２と判定することができる。
【０１１０】
また、図１２（Ｂ）に示すように、区間セル数Ｃ１、Ｃ２、…、Ｃ（ｍ−２）がこの順に小さくなっていく場合、最適な読出し電圧Ｖｏｐｔは、少なくとも電圧Ｒ２より低電圧側に存在することが推定される。このため、メモリコントローラ２００は、区間セル数Ｃ（ｍ−２）よりも大きい区間セル数Ｃ（ｍ−１）が算出されるまで、図１０のステップＳＴ６２〜ＳＴ６６に示した処理を繰り返す。区間セル数Ｃ（ｍ−２）よりも大きい区間セル数Ｃ（ｍ−１）が算出されると、Ｃ（ｍ−１）＞Ｃ（ｍ−２）かつＣ（ｍ−２）＜Ｃ（ｍ−３）＜…＜Ｃ２＜Ｃ１となり、点（Ｖ（ｍ−２），Ｃ（ｍ−２））が極小点となる。したがって、メモリコントローラ２００は、区間セル数Ｃ１〜Ｃ（ｍ−１）に基づき、代表電圧Ｖ（ｍ−２）を読出し電圧Ｖｅｓｔ２と判定することができる。
【０１１１】
図１３（Ａ）に示すように、区間セル数Ｃ２が区間セル数Ｃ１よりも大きく、かつ区間セル数Ｃ３が区間セル数Ｃ１よりも小さい場合、最適な読出し電圧Ｖｏｐｔは、少なくとも電圧Ｒ０より高電圧側に存在することが推定される。このため、メモリコントローラ２００は、図１０のステップＳＴ６２及びＳＴ６３において、電圧Ｒ３より高電圧側の電圧Ｒ４を使用する読出し処理を実行する旨のコマンドをＮＡＮＤフラッシュメモリ１００に対して発行し、ＮＡＮＤフラッシュメモリ１００からデータＤ４を取得する。これにより、メモリコントローラ２００は、ステップＳＴ６４において、データＤ３及びＤ４に基づき、範囲［Ｒ４，Ｒ３］内の代表電圧Ｖ４に対応する区間セル数Ｃ４を算出する。
【０１１２】
図１３（Ａ）の場合では、区間セル数Ｃ４が区間セル数Ｃ３よりも大きいため、Ｃ４＞Ｃ３かつＣ３＜Ｃ０となり、点（Ｖ３，Ｃ３）が極小点となる。したがって、メモリコントローラ２００は、区間セル数Ｃ１〜Ｃ４に基づき、代表電圧Ｖ３を読出し電圧Ｖｅｓｔ２と判定することができる。
【０１１３】
また、図１３（Ｂ）に示すように、区間セル数Ｃ２、Ｃ１、Ｃ３、…、Ｃ（ｍ−２）がこの順に小さくなっていく場合、最適な読出し電圧Ｖｏｐｔは、少なくとも電圧Ｒ０よりも高電圧側に存在することが推定される。このため、メモリコントローラ２００は、区間セル数Ｃ（ｍ−２）よりも大きい区間セル数Ｃ（ｍ−１）が算出されるまで、図１０のステップＳＴ６２〜ＳＴ６６に示した処理を繰り返す。区間セル数Ｃ（ｍ−２）よりも大きい区間セル数Ｃ（ｍ−１）が算出されると、Ｃ２＞Ｃ１＞Ｃ３＞…＞Ｃ（ｍ−３）＞Ｃ（ｍ−２）かつＣ（ｍ−２）＜Ｃ（ｍ−１）となり、点（Ｖ（ｍ−２），Ｃ（ｍ−２））が極小点となる。したがって、メモリコントローラ２００は、区間セル数Ｃ１〜Ｃ（ｍ−１）に基づき、代表電圧Ｖ（ｍ−２）を読出し電圧Ｖｅｓｔ２と判定することができる。
【０１１４】
以上のように動作することにより、メモリコントローラ２００は、ｍ点トラッキング処理において、少なくとも４回以上の読出し電圧を使用して、少なくとも３点以上の区間セル数を算出することにより、読出し電圧Ｖｅｓｔ２を算出することができる。
【０１１５】
１．３  本実施形態に係る効果
第１実施形態によれば、メモリコントローラ２００は、電圧Ｒ０〜Ｒ２を使用して３回の読出し処理を行い、ＮＡＮＤフラッシュメモリ１００からデータＤ０〜Ｄ２を取得する。メモリコントローラ２００は、データＤ０〜Ｄ２に基づいて２点の区間セル数Ｃ１及びＣ２を算出し、当該２点の区間セル数に基づいて読出し電圧Ｖｅｓｔ１を決定する。これにより、読出し電圧Ｖｅｓｔ１の探索に要する読出し処理を３回に抑えることができ、４回以上の読出し処理を要するｍ点トラッキング処理よりも、トラッキング処理に要する時間を短縮することができる。
【０１１６】
補足すると、トラッキング処理は、一般に、読み出すデータの数が多いほど（つまり、読出し処理の回数が多いほど）、最適な読出し電圧Ｖｏｐｔに対する誤差が小さい読出し電圧を算出することができる。一方、読出し処理の回数が多いほど、トラッキング処理に要する時間が増加し、ホスト機器３００に対するメモリコントローラ２００の読出し処理応答時間を悪化させる可能性がある。このため、誤り訂正処理が成功可能な程度の精度を保ちつつ、より高速に処理可能なトラッキング処理が求められる。特に、メモリシステム１が常時通電状態である状況では、電源断の状態が発生する状況よりも、閾値電圧分布の変化が小さいと考えられる。このため、メモリシステム１が常時通電状態である場合、読出し処理の回数が少ないトラッキング処理でも十分に精度の高い読出し電圧を算出することができると考えられるため、高速に処理可能なトラッキング処理がより有用であり得る。
【０１１７】
第１実施形態によれば、メモリコントローラ２００は、３回の読出し処理によって２点の区間セル数を算出し、このうちの小さい方に対応する代表電圧を読出し電圧Ｖｅｓｔ１と判定する。これにより、最適な読出し電圧Ｖｏｐｔが範囲［Ｒ０，Ｒ２］内に存在する場合には、値ΔＶ／２（ΔＶは、読出し処理に使用する電圧Ｒ０及びＲ１間の間隔、並びに電圧Ｒ１及びＲ２間の間隔）以下の精度で、電圧Ｖｏｐｔに対して読出し電圧Ｖｅｓｔ１を算出することができる。したがって、値ΔＶを適切な値に予め設定することにより、高速に動作しつつ、所望の精度が担保された読出し電圧Ｖｅｓｔ１を算出することができる。
【０１１８】
なお、電圧Ｖｏｐｔが範囲［Ｒ０，Ｒ２］外に存在する場合には、所望の精度が担保されない可能性があるが、その場合には、３点トラッキング処理に続いて、ｍ点トラッキング処理が実行される。ｍ点トラッキング処理に際しては、３点トラッキング処理に使用された点（Ｖ１，Ｃ１）及び（Ｖ２，Ｃ２）を示す情報等が利用される。このため、３点トラッキング処理後にｍ点トラッキング処理が実行された場合でも、ｍ点トラッキング処理が１回実行された場合と同程度の時間で読出し電圧Ｖｅｓｔ２を算出することができる。このため、３点トラッキング処理による読出し電圧Ｖｅｓｔ１で訂正処理に失敗した場合には、トラッキング処理全体に要する時間をｍ点トラッキング処理１回分よりも増加させることなく、ｍ点トラッキング処理による読出し電圧Ｖｅｓｔ２を算出することができる。
【０１１９】
２．  第２実施形態
次に、第２実施形態に係るメモリシステムについて説明する。第１実施形態では、３点トラッキング処理において、区間セル数Ｃ１及びＣ２のうちの小さい方に対応する代表電圧を読出し電圧Ｖｅｓｔ１と判定した。第２実施形態では、３点トラッキング処理において、範囲［Ｖ１，Ｖ２］を区間セル数Ｃ１及びＣ２の比で内分する点に対応する電圧を読出し電圧Ｖｅｓｔ１と判定する点において、第１実施形態と異なる。以下では、第１実施形態と同等の構成及び動作についてはその説明を省略し、第１実施形態と異なる構成及び動作について主に説明する。
【０１２０】
２．１  ３点トラッキング処理
図１４は、第２実施形態に係るメモリシステムにおける３点トラッキング処理を説明するためのフローチャートである。図１４は、第１実施形態において示された図８に対応し、図８におけるステップＳＴ３６に代えて、ステップＳＴ３７が実行される。
【０１２１】
図１４に示されたステップＳＴ３１〜ＳＴ３５の処理は、図８に示されたステップＳＴ３１〜ＳＴ３５の処理と同等であるため、説明を省略する。これにより、読出し電圧ＶＣＧＲのうちの１つに対して、互いに異なる電圧Ｒ０〜Ｒ２を使用した３回の読出し処理が実行され、データＤ０〜Ｄ２が読み出される。そして、データＤ０〜Ｄ２に基づき、代表電圧Ｖ１に対応付けられた区間セル数Ｃ１、及び代表電圧Ｖ２に対応付けられた区間セル数Ｃ２が算出される。
【０１２２】
ステップＳＴ３７において、メモリコントローラ２００は、区間セル数Ｃ１及びＣ２に基づいて、代表電圧Ｖ１及びＶ２の内分点を算出し、当該内分点を読出し電圧Ｖｅｓｔ１と判定する。具体的には、メモリコントローラ２００は、読出し電圧Ｖｅｓｔ１を、以下に示す式に従って算出する。
【０１２３】
Ｖｅｓｔ１＝Ｖ１−（Ｖ１−Ｖ２）×Ｃ１／（Ｃ１＋Ｃ２）
以上により、３点トラッキング処理が終了する。
【０１２４】
図１５は、第２実施形態に係るメモリシステムにおける３点トラッキング処理を説明するための模式図である。図１５では、未知である最適な読出し電圧Ｖｏｐｔと代表電圧Ｖ１及びＶ２との間の位置関係が、電圧Ｖｏｐｔに対する読出し電圧Ｖｅｓｔ１の誤差に与える影響が模式的に示される。なお、図１５の例では、代表電圧Ｖ１及びＶ２間の差の絶対値は、値ΔＶであるものとする（｜Ｖ１−Ｖ２｜＝ΔＶ）。
【０１２５】
上述の通り、読出し電圧Ｖｅｓｔ１は、範囲［Ｖ１，Ｖ２］を内分する点として算出されるため、必ず代表電圧Ｖ１と代表電圧Ｖ２との間に位置する。このため、図１５（Ａ）に示すように、電圧Ｖｏｐｔが範囲［Ｖ１，Ｖ２］内に存在する場合、読出し電圧Ｖｅｓｔ１は、電圧Ｖｏｐｔに対して高々値ΔＶ／２の誤差で算出される。加えて、読出し電圧Ｖｅｓｔ１を算出するための内分比は、区間セル数Ｃ１及びＣ２の値に応じて適応的に変更される。このため、範囲［Ｖ１，Ｖ２］内における電圧Ｖｏｐｔの位置に依る誤差の変動量が抑制され、当該誤差の平均値の増加が抑制される。
【０１２６】
また、代表電圧Ｖ１と読出し電圧Ｖｅｓｔ１との差の絶対値｜Ｖ１−Ｖｅｓｔ１｜を値ΔＶ１、代表電圧Ｖ２と読出し電圧Ｖｅｓｔ１との差の絶対値｜Ｖ２−Ｖｅｓｔ１｜を値ΔＶ２とすると、区間セル数Ｃ１及びＣ２、並びに値ΔＶ１及びΔＶ２の間には、以下の関係が成立する。
【０１２７】
ΔＶ１：ΔＶ２＝Ｃ１：Ｃ２
つまり、読出し電圧Ｖｅｓｔ１は、区間セル数Ｃ１が区間セル数Ｃ２より小さい場合には代表電圧Ｖ１側に近い値として算出され、区間セル数Ｃ１が区間セル数Ｃ２より大きい場合には代表電圧Ｖ２側に近い値として算出される。言い換えれば、読出し電圧Ｖｅｓｔ１は、区間セル数Ｃ１及びＣ２のうちの小さい方に対応する代表電圧に、区間セル数Ｃ１及びＣ２の差が大きいほど近づいていく。
【０１２８】
なお、区間セル数Ｃは、電圧Ｖｏｐｔから近ければ近いほど、小さな値となる。このため、電圧Ｖｏｐｔは、区間セル数Ｃ１及びＣ２のうちの小さい方に対応する代表電圧に近い値であることが期待される。
【０１２９】
このように、読出し電圧Ｖｅｓｔ１は、電圧Ｖｏｐｔが存在すると期待される側の値として算出される。したがって、電圧Ｖｏｐｔに対する誤差をより小さくすることができる。
【０１３０】
一方、図１５（Ｂ）に示すように、電圧Ｖｏｐｔが範囲［Ｖ１，Ｖ２］外に存在する場合、読出し電圧Ｖｅｓｔ１は、電圧Ｖｏｐｔに対して値ΔＶ／２よりも大きな誤差を有して算出される可能性がある。このため、読出し電圧Ｖｅｓｔ１を使用して読み出したデータに対する誤り訂正処理に失敗する程度に、読出し電圧Ｖｅｓｔ１の精度が悪化する可能性がある。図７のステップＳＴ５０に示したように、読出し電圧Ｖｅｓｔ１を使用して読み出したデータに対する誤り訂正処理が失敗した場合には、図７のステップＳＴ６０のように３点トラッキング処理に続いてｍ点トラッキング処理が実行される。これにより、読出し電圧Ｖｅｓｔ２を算出することができ、トラッキング処理全体としての精度を担保することができる。
【０１３１】
２．２  本実施形態に係る効果
第２実施形態によれば、メモリコントローラ２００は、区間セル数Ｃ１及びＣ２の比に基づき、範囲［Ｖ１，Ｖ２］を内分する点に対応する電圧を読出し電圧Ｖｅｓｔ１と判定する。これにより、電圧Ｖｏｐｔが範囲［Ｖ１，Ｖ２］内に存在する場合、３点トラッキング処理によって、電圧Ｖｏｐｔに対する誤差が小さい読出し電圧Ｖｅｓｔ１を算出することができる。したがって、従来のｍ点トラッキング処理と比較して、トラッキング処理に要する時間を短縮することができる。
【０１３２】
また、電圧Ｖｏｐｔが範囲［Ｖ１，Ｖ２］外に存在し、読出し電圧Ｖｅｓｔ１の誤差が大きくなってしまった場合、メモリコントローラ２００は、３点トラッキング処理に続いてｍ点トラッキング処理を実行する。これにより、ｍ点トラッキング処理１回分の時間で、読出し電圧Ｖｅｓｔ２を算出することができ、トラッキング処理に要する時間の増加を抑制することができる。
【０１３３】
３．  第３実施形態
次に、第３実施形態に係るメモリシステムについて説明する。第３実施形態では、区間セル数と代表電圧との関係を二次関数で近似する。そして、３点トラッキング処理において、２点（Ｖ１，Ｃ１）及び（Ｖ２，Ｃ２）を通過する二次関数を特定し、当該二次関数の極小点に対応する電圧を読出し電圧Ｖｅｓｔ１と判定する点において、第１実施形態及び第２実施形態と異なる。以下では、第１実施形態と同等の構成及び動作についてはその説明を省略し、第１実施形態と異なる構成及び動作について主に説明する。
【０１３４】
３．１  ３点トラッキング処理
図１６は、第３実施形態に係るメモリシステムにおける３点トラッキング処理を説明するためのフローチャートである。図１６は、第１実施形態において示された図８に対応し、図８におけるステップＳＴ３６に代えて、ステップＳＴ３８及びＳＴ３９が実行される。
【０１３５】
図１６に示されたステップＳＴ３１〜ＳＴ３５の処理は、図８に示されたステップＳＴ３１〜ＳＴ３５の処理と同等であるため、説明を省略する。これにより、読出し電圧ＶＣＧＲのうちの１つに対して、互いに異なる電圧Ｒ０〜Ｒ２を使用した３回の読出し処理が実行され、データＤ０〜Ｄ２が読み出される。そして、データＤ０〜Ｄ２に基づき、代表電圧Ｖ１に対応付けられた区間セル数Ｃ１、及び代表電圧Ｖ２に対応付けられた区間セル数Ｃ２が算出される。
【０１３６】
ステップＳＴ３８において、メモリコントローラ２００は、２点（Ｖ１，Ｃ１）及び（Ｖ２，Ｃ２）を通過し得る無数に存在する二次関数のうちの１つを特定するため、当該特定すべき二次関数の二次係数Ａを決定する。なお、当該二次関数は、区間セル数Ｃと代表電圧Ｖとの関係を表し、代表電圧Ｖ１を入力すると区間セル数Ｃ１を出力し、代表電圧Ｖ２を入力すると区間セル数Ｃ２を出力する関数である。また、当該二次関数は、隣り合う閾値電圧分布間が重なり合う部分（谷位置）の形状を近似するため、必ず下に凸な形状を有する。したがって、ステップＳＴ３８において決定される二次係数Ａは、正の値を有する（Ａ＞０）。すなわち、上述の二次関数は、以下に示す関係を満たす。なお、Ｃｅｓｔ１は、二次関数の極小点に対応する区間セル数である（すなわち、極小点の座標値は（Ｖｅｓｔ１、Ｃｅｓｔ１）となる）。
【０１３７】
Ｃ１＝Ａ（Ｖ１−Ｖｅｓｔ１）＾２＋Ｃｅｓｔ１
Ｃ２＝Ａ（Ｖ２−Ｖｅｓｔ１）＾２＋Ｃｅｓｔ２
メモリコントローラ２００は、例えば、二次係数Ａを、予め定めた固定値としてメモリ２２０等に記憶していてもよいが、これに限られず、いくつかのパラメタに応じて変化可能なテーブルとしてメモリ２２０等に記憶してもよい。
【０１３８】
上述したように、閾値電圧分布は、データリテンションエラー等の影響を受け、書込み処理後の経過時間（以下、単に「経過時間」とも呼ぶ）に応じて変化し得る。また、メモリセルアレイ１１０の特性は書込み処理及び消去処理を繰り返すことによって変化するため、閾値電圧分布は、書き込み処理及び消去処理の回数（以下、「Ｗ／Ｅ回数」とも呼ぶ）に応じて変化し得る。また、このような閾値電圧分布の変動特性は、セルユニットＣＵの積層位置の違い、接続されるワード線ＷＬの違い、或いはメモリセルアレイ１１０の製造プロセスの違いに応じて変化し得る。なお、以下の説明では、同一のワード線に接続されるメモリセルトランジスタＭＴ群は、単に「ワード線」とも呼び得る。
【０１３９】
このため、二次係数Ａをテーブルとして記憶する場合、経過時間、Ｗ／Ｅ回数、接続ワード線ＷＬ、及びメモリセルアレイ１１０の製造プロセス等がパラメタとして含まれ得る。
【０１４０】
ステップＳＴ３９において、メモリコントローラ２００は、ステップＳＴ３８において決定された二次係数Ａを有し、２点（Ｖ１，Ｃ１）及び（Ｖ２，Ｃ２）を通過する２次関数を特定する。そして、メモリコントローラ２００は、特定された二次関数の極小点に対応する電圧を、読出し電圧Ｖｅｓｔ１と判定する。
【０１４１】
より具体的には、メモリコントローラ２００は、読出し電圧Ｖｅｓｔ１を、以下の式に基づいて算出する。
【０１４２】
Ｖｅｓｔ１＝（Ｖ１＋Ｖ２）／２−（Ｃ１−Ｃ２）／２Ａ（Ｖ１−Ｖ２）
以上により、３点トラッキング処理が終了する。
【０１４３】
図１７及び図１８は、第３実施形態に係るメモリシステムにおける３点トラッキング処理を説明するための模式図である。図１７及び図１８ではいずれも、電圧Ｒ０〜Ｒ２から区間セル数Ｃ１及びＣ２が得られた場合が想定される。図１７は、範囲［Ｖ１，Ｖ２］内に二次関数の極小点が存在する場合を模式的に示す。図１８は、範囲［Ｖ１，Ｖ２］外に二次関数の極小点が存在する場合を模式的に示す。図１７及び図１８は、図１６におけるステップＳＴ３９に相当する。
【０１４４】
まず、図１７を用いて、２点（Ｖ１，Ｃ１）及び（Ｖ２，Ｃ２）の間に極小点が位置する場合について説明する。
【０１４５】
図１７に示すように、メモリコントローラ２００は、決定されたＡを用いて、２点（Ｖ１，Ｃ１）及び（Ｖ２，Ｃ２）を通るような二次関数Ｙ＝Ａ（Ｘ−Ｖｅｓｔ１）＾２＋Ｃｅｓｔ１における極小点（Ｖｅｓｔ１，Ｃｅｓｔ１）を算出する。この際、２つの区間セル数間の差の絶対値｜Ｃ１−Ｃ２｜が十分小さければ（具体的には、｜Ｃ１−Ｃ２｜≦Ａ（Ｖ１−Ｖ２）＾２であれば）、読出し電圧Ｖｅｓｔ１は、範囲［Ｖ１，Ｖ２］内の値として算出される。
【０１４６】
一方、図１８に示すように、絶対値｜Ｃ１−Ｃ２｜が十分大きければ（具体的には、｜Ｃ１−Ｃ２｜＞Ａ（Ｖ１−Ｖ２）＾２であれば）、読出し電圧Ｖｅｓｔ２は、範囲［Ｖ１，Ｖ２］外の値として算出される。
【０１４７】
いずれにしても、第３実施形態によれば、メモリコントローラ２００は、最適な読出し電圧Ｖｏｐｔが範囲［Ｖ１，Ｖ２］内にあるか否かに依らず、区間セル数が最も小さくなることが期待される電圧を読出し電圧Ｖｅｓｔ１として算出することができる。
【０１４８】
３．２  本実施形態に係る効果
第３実施形態によれば、メモリコントローラ２００は、３点トラッキング処理に際して、代表電圧と区間セル数との関係を表す二次関数の二次係数Ａを予め定める。メモリコントローラ２００は、当該二次係数Ａを有し、２点（Ｖ１，Ｃ１）及び（Ｖ２，Ｃ２）を通過する二次関数を特定し、当該二次関数の極小点における電圧を読出し電圧Ｖｅｓｔ１と判定する。これにより、電圧Ｖｏｐｔが範囲［Ｖ１，Ｖ２］内に存在するか否かに関わらず、二次係数Ａによって定まる二次関数の形状に沿って、区間セル数が極小になると期待される位置における電圧値を読出し電圧Ｖｅｓｔ１として算出することができる。このため、二次係数Ａによって決定される二次関数の形状が実情に沿ったものである限り、２点の区間セル数のみから、最適な読出し電圧Ｖｏｐｔに近い値を読出し電圧Ｖｅｓｔ１として算出することができる。
【０１４９】
なお、二次係数Ａは、トラッキング処理に際して、予め決定される。二次係数Ａは、固定値であってもよく、予め定められたテーブルにしたがってパラメトリックに変更可能であってもよい。パラメタは、経過時間、Ｗ／Ｅ回数、ワード線ＷＬ、並びにメモリセルアレイ１１０の製造プロセスを含む。これにより、閾値電圧分布が変化する要因に応じて、二次関数を適切な形状に変化させることができる。このため、ＮＡＮＤフラッシュメモリ１００の使用状況に即して、読出し電圧Ｖｅｓｔ１を精度よく算出することができる。
【０１５０】
３．３  変形例
なお、第３実施形態では、二次係数Ａが予め定められた固定値又はテーブルに基づいて決定される場合について説明したが、これに限られない。例えば、二次係数Ａは、トラッキング処理が実行されるに伴って、前回のトラッキング処理の結果に応じて適応的に更新されてもよい。以下では、第３実施形態と同等の構成及び動作についてはその説明を省略し、第３実施形態と異なる構成及び動作について主に説明する。
【０１５１】
３．３．１  トラッキング処理後にバックグラウンドで更新処理を伴う場合
第３実施形態の変形例に係るメモリシステムにおけるトラッキング処理後にバックグラウンドで更新処理を伴う場合の処理の一例について、図１９に示すフローチャートを用いて説明する。図１９では、各種トラッキング処理を伴う読出し処理が終了した後にバックグラウンドで実行される二次係数Ａの更新処理を含むフローの一例が示される。
【０１５２】
図１９に示されたステップＳＴ１０〜ＳＴ９０の処理は、図７に示されたステップＳＴ１０〜ＳＴ９０の処理と同等であるため、主な説明を省略する。なお、ステップＳＴ３０では、第３実施形態において示された図１６のステップＳＴ３１〜ＳＴ３５、ＳＴ３８、及びＳＴ３９が実行されるものとする。すなわち、ステップＳＴ３０において、メモリコントローラ２００は、２点の区間セル数及び二次係数Ａに基づき特定された二次関数の極小点に対応する電圧を読出し電圧Ｖｅｓｔ１と判定する。なお、読出し電圧Ｖｅｓｔ１の算出に使用される二次係数Ａは、例えば、メモリ２２０に記憶された値が参照される。
【０１５３】
ステップＳＴ８０の誤り訂正処理において、読出しデータに誤りが含まれない場合、又はＥＣＣ回路２６０により誤りを訂正できた場合（つまり、読出し電圧Ｖｅｓｔ１では誤り訂正処理に失敗し、読出し電圧Ｖｅｓｔ２では誤り訂正処理に成功した場合）（ステップＳＴ８０；ｙｅｓ）、データの読出し処理が終了すると共に、処理はステップＳＴ１００に進む。
【０１５４】
ステップＳＴ１００において、メモリコントローラ２００は、バックグラウンドで二次係数Ａの更新処理を実行する。なお、本変形例における「バックグラウンドで処理を実行する」とは、例えば、以下のように処理を実行することを含む。
（Ａ）トラッキング処理の終了後、ホスト機器３００からの処理要求に対する応答性能に影響を及ぼさない期間（例えば、ホスト機器３００からの当初の読出し要求に対して読出しデータを送出した後の期間）において、処理を実行すること
（Ｂ）トラッキング処理の終了後、ホスト機器３００からの指示に基づく同一の物理アドレスに対する次の読出し処理（同一の物理アドレスに対する次のホストリード処理）を受けるまでに処理が終了しているように、予め（例えば、できるだけ早く）処理を実行すること
なお、更新処理の詳細については、後述する。
【０１５５】
以上により、トラッキング処理後にバックグラウンドで更新処理を伴う場合の一連の処理が終了する。
【０１５６】
図２０は、第３実施形態の変形例に係るメモリシステムにおいてバックグラウンドで実行される二次係数Ａの更新処理を説明するためのフローチャートである。
【０１５７】
図２０に示すように、ステップＳＴ１０１において、メモリコントローラ２００は、読出し電圧Ｖｅｓｔ２近傍の４つの電圧Ｒ０’〜Ｒ３’を使用した４回の読出し処理により、それぞれデータＤ０’〜Ｄ３’を取得する。なお、電圧Ｒ０’〜Ｒ３’は、例えば、それぞれ値ΔＶで等間隔に設定されるものとする。また、「読出し電圧Ｖｅｓｔ２近傍の４つの電圧Ｒ０’〜Ｒ３’」とは、例えば、４つの電圧Ｒ０’〜Ｒ３’のうちの最大値と最小値との間に読出し電圧Ｖｅｓｔ２が位置することを含む。しかしながら、上述の例に限らず、電圧Ｒ０’〜Ｒ３’はいずれも、読出し電圧Ｖｅｓｔ２より高く設定されても、低く設定されてもよい。
【０１５８】
ステップＳＴ１０２において、メモリコントローラ２００は、データＤ０’〜Ｄ３’に基づき、代表電圧Ｖ１’に対応付けられた区間セル数Ｃ１’、代表電圧Ｖ２’に対応付けられた区間セル数Ｃ２’、及び代表電圧Ｖ３’に対応付けられた区間セル数Ｃ３’を算出する。
【０１５９】
ステップＳＴ１０３において、メモリコントローラ２００は、代表電圧と区間セル数との関係を表す二次関数のうち、３点（Ｖ１’，Ｃ１’）、（Ｖ２’，Ｃ２’）、及び（Ｖ３’，Ｃ３’）を通る二次関数を特定し、当該二次関数の二次係数Ａ’を算出する。そして、メモリコントローラ２００は、特定された二次関数の極小点に対応する電圧を読出し電圧Ｖｅｓｔ１’と判定する。
【０１６０】
ステップＳＴ１０４において、メモリコントローラ２００は、ステップＳＴ１０３において算出された読出し電圧Ｖｅｓｔ１’を用いて読出し処理を実行する旨のリードコマンドをＮＡＮＤフラッシュメモリ１００に対して発行する。ＮＡＮＤフラッシュメモリ１００は、読出し電圧Ｖｅｓｔ１’を用いて、読出し対象のページからデータを読み出す。ＮＡＮＤフラッシュメモリ１００は、読み出したデータをメモリコントローラ２００に送信する。
【０１６１】
ステップＳＴ１０５において、読出しデータを受けたメモリコントローラ２００では、ＥＣＣ回路２６０が誤り訂正処理を実行する。ＥＣＣ回路２６０による誤りの訂正ができない場合（ステップＳＴ１０５；ｎо）、処理はステップＳＴ１０６に進む。ステップＳＴ１０６において、メモリコントローラ２００は、例えば、リフレッシュ処理等の例外処理を実行する。リフレッシュ処理とは、例えば、書き込まれたデータを別のブロックＢＬＫ又は同じブロックＢＬＫに書き直すことにより、変化した閾値電圧分布を書込み処理直後の理想的な状態に戻す処理を含む。また、リフレッシュ処理は、同じブロックＢＬＫに対して同一のデータを上書きすることにより、データリテンションエラーの影響を軽減する方法が実施されてもよい。
【０１６２】
一方、読出しデータに誤りが含まれない場合、又はＥＣＣ回路２６０により誤りを訂正できた場合（図２０のステップＳＴ１０５；ｙｅｓ）、処理はステップＳＴ１０７に進む。ステップＳＴ１０７において、メモリコントローラ２００は、メモリ２２０に記憶されている二次係数Ａの値を、ステップＳＴ１０３において算出された二次係数Ａ’に更新する。これにより、二次係数Ａ’が次回以降のトラッキング処理に適用される。
【０１６３】
以上により、二次係数Ａ’の更新処理が終了する。なお、図２０の例では、読出し電圧Ｖｅｓｔ１’を用いてデータが正しく読み出せるか否かを確認する処理（ステップＳＴ１０４〜ＳＴ１０６）が実行される場合について説明したが、これに限られない。具体的には、例えば、処理は、ステップＳＴ１０３の後、ステップＳＴ１０４〜ＳＴ１０６を省略して、ステップＳＴ１０７に進んでもよい。
【０１６４】
３．３．２  本変形例に係る効果
第３実施形態の変形例によれば、メモリコントローラ２００は、トラッキング処理の終了後、二次係数Ａの更新処理を実行する。更新処理では、代表電圧と区間セル数との関係を表す二次関数が、少なくとも３点以上の区間セル数及び当該区間セル数に対応する代表電圧に基づいて特定される。これにより、予め決定された二次係数Ａに依らず、実測された区間セル数及び代表電圧のみで二次関数を特定することができ、ひいては、現状の閾値電圧分布に即した二次係数Ａ’を算出することができる。このため、当該二次係数Ａ’を、同一の物理アドレスに対する次回のホストリード処理に適用することにより、読出し電圧Ｖｅｓｔ１の精度の劣化を抑制することができる。
【０１６５】
また、更新処理は、ホスト機器３００からの処理要求に対する応答性能に影響を及ぼさない期間おいて、又は同一の物理アドレスに対する次のホストリード処理を受けるまでに実行される。これにより、ホスト機器３００に対するメモリコントローラ２００の応答性能を劣化させることなく、二次係数ＡをＡ’に更新することができる。なお、メモリコントローラ２００は、二次係数Ａ’に基づいて算出される読出し電圧Ｖｅｓｔ１’をキャッシュしておく。これにより、同一の物理アドレスに対する次回のホストリード処理の際に、当該読出し電圧Ｖｅｓｔ１’を用いることができる。したがって、読出し電圧を最適値に近い状態に保つことができる。
【０１６６】
なお、図１９において示した例では、更新処理が、ステップＳＴ１０におけるホストリード処理の誤り訂正処理（ステップＳＴ２０）、及び３点トラッキング処理の結果を使用した読出し処理の誤り訂正処理（ステップＳＴ５０）に失敗したことをトリガとして実行される場合について説明したが、これに限られない。例えば、更新処理は、或る物理アドレスに対するホストリード処理に失敗したか否かに依らず、当該物理アドレスに対して次に実行されるホストリード処理に備えて、予め実行されてもよい。また、更新処理は、或る物理アドレスに対するホストリード処理をトリガとすることなく、当該物理アドレスに対して新たに実行されるホストリード処理に備えて、メモリシステム１によって自発的に実行されてもよい。すなわち、バックグラウンドで更新処理を実行することは、ホスト機器３００からの処理要求に対する応答性能に影響を及ぼさない期間において、ホスト機器３００からの新たな読出し処理要求に備えて予め実行することを含む。
【０１６７】
４．その他
以上、種々の実施形態について説明したが、第１実施形態、第２実施形態、及び第３実施形態は、これに限られず、種々の変形が適宜適用可能である。
【０１６８】
第３実施形態の変形例では、図２０のステップＳＴ１０１において、新たに４回の読出し処理を実行してデータＤ０’〜Ｄ３’を取得した。そして、ステップＳＴ１０２において、当該データＤ０’〜Ｄ３’に基づいて区間セル数Ｃ１’〜Ｃ３’を算出する場合について説明したが、これに限られない。例えば、ステップＳＴ１０１及びＳＴ１０２に代えて、図１９のステップＳＴ６０のｍ点トラッキング処理で算出された３点の区間セル数を利用してもよい。この場合、バックグラウンドでの二次係数Ａ’の更新処理では新たな読出し処理を実行する必要がないため、メモリシステム１への負荷をより低減することができる。
【０１６９】
また、二次係数Ａ’の更新処理において使用する区間セル数の数は３点に限らず、４点以上であってもよい。すなわち、ｍ点トラッキング処理で算出された区間セル数を利用する場合には、当該ｍ点トラッキング処理において算出された４点以上の区間セル数を用いてもよく、また、第３実施形態の変形例の場合には、図２０におけるステップＳＴ１０１及びＳＴ１０２に代えて４点以上の区間セル数を算出してもよい。この場合、メモリコントローラ２００は、例えば、算出された４点以上の区間セル数からの残差が最も小さくなるような二次関数を特定することによって、二次係数Ａ’を算出してもよい。
【０１７０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１７１】
１…メモリシステム、１００…ＮＡＮＤフラッシュメモリ、１１０…メモリセルアレイ、１２０…ロウデコーダ、１３０…ドライバ、１４０…センスアンプモジュール、１５０…アドレスレジスタ、１６０…コマンドレジスタ、１７０…シーケンサ、２００…メモリコントローラ、２１０…ホストインタフェース回路、２２０…メモリ、２３０…プロセッサ、２４０…バッファメモリ、２５０…ＮＡＮＤインタフェース回路、２６０…ＥＣＣ回路、３００…ホスト機器。
【図１】
2020107376.tif 000003
【図２】
2020107376.tif 000004
【図３】
2020107376.tif 000005
【図４】
2020107376.tif 000006
【図５】
2020107376.tif 000007
【図６】
2020107376.tif 000008
【図７】
2020107376.tif 000009
【図８】
2020107376.tif 000010
【図９】
2020107376.tif 000011
【図１０】
2020107376.tif 000012
【図１１】
2020107376.tif 000013
【図１２】
2020107376.tif 000014
【図１３】
2020107376.tif 000015
【図１４】
2020107376.tif 000016
【図１５】
2020107376.tif 000017
【図１６】
2020107376.tif 000018
【図１７】
2020107376.tif 000019
【図１８】
2020107376.tif 000020
【図１９】
2020107376.tif 000021
【図２０】
2020107376.tif 000022