(57)【要約】【課題】処理能力を向上する。【解決手段】実施形態によれば、メモリシステムは、半導体記憶装置１００と、コントローラ２００とを含む。半導体記憶装置１００は、少なくとも第１乃至第３データを記憶可能な複数のメモリセルＭＣと、ワード線ＷＬとを含む。第１データは、第１読み出しレベルを含む第１読み出し動作により確定され、第２データは、第２読み出しレベルを含む第２読み出し動作により確定され、第３データは、第３読み出しレベルを含む第３読み出し動作により確定される。コントローラ２００は、第１乃至第３読み出しレベルにそれぞれ対応する第１乃至第３読み出し電圧の探索動作において、半導体記憶装置１００に第１及び第２読み出しレベルを含む第４読み出し動作を実行させる。【選択図】図１１
2020047337.tif 000002
【特許請求の範囲】
【請求項１】
半導体記憶装置と、
前記半導体記憶装置を制御可能なコントローラと
を備え、前記半導体記憶装置は、
少なくとも第１乃至第３データを記憶可能な複数のメモリセルと、
前記複数のメモリセルに接続されたワード線と
を含み、
前記第１データは、第１読み出しレベルを含む第１読み出し動作により確定され、
前記第２データは、第２読み出しレベルを含む第２読み出し動作により確定され、
前記第３データは、第３読み出しレベルを含む第３読み出し動作により確定され、
前記コントローラは、前記第１乃至第３読み出しレベルにそれぞれ対応する第１乃至第３読み出し電圧の探索動作において、前記半導体記憶装置に前記第１及び第２読み出しレベルを含む第４読み出し動作を実行させる、
メモリシステム。
【請求項２】
前記複数のメモリセルの各々は、ｎビットのデータ（ｎは３以上の整数）を記憶でき、
前記コントローラは、電圧の低い順に領域が定義された第１から第２ｎまでの２ｎ個の閾値電圧領域に前記ｎビットのデータを対応させてデータを記憶させ、
前記第１読み出しレベルは、前記第１の閾値電圧領域と前記第２の閾値電圧領域の間のレベルであり、
前記第２読み出しレベルは、前記第（２ｎ−１）の閾値電圧領域と前記第２ｎの閾値電圧領域の間のレベルである、
請求項１に記載のメモリシステム。
【請求項３】
前記第３読み出しレベルは、前記コントローラが前記探索動作において前記半導体記憶装置に実行させる前記第４読み出し動作に含まれない、
請求項１または２に記載のメモリシステム。
【請求項４】
前記第１データは、第４読み出しレベルを更に含む前記第１読み出し動作により確定され、
前記第２データは、第５読み出しレベルを更に含む前記第２読み出し動作により確定され、
前記第３データは、第６読み出しレベルを更に含む前記第３読み出し動作により確定される、
請求項１に記載のメモリシステム。
【請求項５】
前記第１乃至第６読み出しレベルにそれぞれ対応する第１乃至第６閾値電圧において、第１閾値電圧が最も低く、第２閾値電圧が最も高い、
請求項４に記載のメモリシステム。
【請求項６】
前記コントローラは、前記第４読み出し動作の結果に基づいて前記第１及び第２読み出し電圧を算出し、前記第１及び第２読み出し電圧を用いて前記第３読み出し電圧を算出する、
請求項１乃至５のいずれか一項に記載のメモリシステム。
【請求項７】
前記探索動作において、前記半導体記憶装置は、前記ワード線に印加される、前記第１読み出しレベルに対応する第１電圧及び前記第３読み出しレベルに対応する第２電圧をシフトさせながら、前記第４読み出し動作を２回以上繰り返す、
請求項１乃至６のいずれか一項に記載のメモリシステム。
【請求項８】
前記第４読み出し動作は、前記第１読み出しレベルに対応して、前記ワード線に少なくとも第１及び第２電圧を順に印加して少なくとも２回の読み出し動作を行う第５読み出し動作と、前記第２読み出しレベルに対応して、前記ワード線に少なくとも第３及び第４電圧を順に印加して少なくとも２回の読み出し動作を行う第６読み出し動作とを含む、
請求項１乃至６のいずれか一項に記載のメモリシステム。
【請求項９】
前記半導体記憶装置は、前記第５読み出し動作の結果に基づいて前記第１読み出し電圧を算出し、前記第６読み出し動作の結果に基づいて前記第２読み出し電圧を算出する、
請求項８に記載のメモリシステム。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
例えば、半導体記憶装置として、ＮＡＮＤ型フラッシュメモリが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９８５２０６５号明細書
【特許文献２】米国特許第９６７２９４２号明細書
【特許文献３】米国特許公開２０１７／０１２５０８９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
処理能力を向上できるメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
実施形態に係るメモリシステムは、半導体記憶装置と、半導体記憶装置を制御可能なコントローラとを含む。半導体記憶装置は、少なくとも第１乃至第３データを記憶可能な複数のメモリセルと、複数のメモリセルに接続されたワード線とを含む。第１データは、第１読み出しレベルを含む第１読み出し動作により確定され、第２データは、第２読み出しレベルを含む第２読み出し動作により確定され、第３データは、第３読み出しレベルを含む第３読み出し動作により確定される。コントローラは、第１乃至第３読み出しレベルにそれぞれ対応する第１乃至第３読み出し電圧の探索動作において、半導体記憶装置に第１及び第２読み出しレベルを含む第４読み出し動作を実行させる。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係るメモリシステムのブロック図である。
【図２】図２は、第１実施形態に係るメモリシステムの備える半導体記憶装置のブロック図である。
【図３】図３は、第１実施形態に係るメモリシステムの備える半導体記憶装置におけるメモリセルアレイの回路図である。
【図４】図４は、第１実施形態に係るメモリシステムの備える半導体記憶装置におけるメモリセルアレイの断面図である。
【図５】図５は、第１実施形態に係るメモリシステムの備える半導体記憶装置におけるメモリセルトランジスタの閾値分布図である。
【図６】図６は、第１実施形態に係るメモリシステムの備える半導体記憶装置におけるメモリセルトランジスタの閾値分布のシフトを示す図である。
【図７】図７は、第１実施形態に係るメモリシステムの備える半導体記憶装置におけるオンセル数の変化を示す図である。
【図８】図８は、第１実施形態に係るメモリシステムの備える半導体記憶装置におけるトラッキング動作を示す概念図である。
【図９】図９は、第１実施形態に係るメモリシステムにおいてパトロール動作におけるシフトリードを示す概念図である。
【図１０】図１０は、第１実施形態に係るメモリシステムにおいてシフトリードにより読み出されたデータのレベル分離を示すテーブルである。
【図１１】図１１は、第１実施形態に係るメモリシステムにおけるパトロール動作のフローチャートである。
【図１２】図１２は、第１実施形態に係るメモリシステムにおけるパトロール動作のコマンドシーケンスである。
【図１３】図１３は、第１実施形態に係るメモリシステムの備える半導体記憶装置においてパトロール動作時の選択ワード線の電圧を示すタイミングチャートである。
【図１４】図１４は、第２実施形態に係るメモリシステムの備える半導体記憶装置におけるオンチップトラッキング時の選択ワード線の電圧を示すタイミングチャートである。
【図１５】図１５は、第２実施形態に係るメモリシステムにおけるパトロール動作のフローチャートである。
【図１６】図１６は、第２実施形態に係るメモリシステムにおけるパトロール動作のコマンドシーケンスである。
【図１７】図１７は、第２実施形態に係るメモリシステムの備える半導体記憶装置においてパトロール動作時の選択ワード線の電圧を示すタイミングチャートである。
【図１８】図１８は、第３実施形態に係るメモリシステムにおけるパトロール動作のフローチャートである。
【図１９】図１９は、第３実施形態に係るメモリシステムにおけるパトロール動作のコマンドシーケンスである。
【図２０】図２０は、第３実施形態に係るメモリシステムの備える半導体記憶装置においてパトロール動作時の選択ワード線の電圧を示すタイミングチャートである。
【発明を実施するための形態】
【０００７】
以下、実施形態につき図面を参照して説明する。この説明に際し、略同一の機能及び構成を有する構成要素については、同一符号を付す。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【０００８】
１．第１実施形態
第１実施形態に係るメモリシステムについて説明する。以下では半導体記憶装置として、メモリセルトランジスタが半導体基板上方に積層された三次元積層型ＮＡＮＤ型フラッシュメモリを例に挙げて説明する。
【０００９】
１．１  構成
１．１．１  メモリシステムの構成
まず、メモリシステム１の全体構成について、図１を用いて説明する。
【００１０】
図１に示すように、メモリシステム１は、複数のＮＡＮＤ型フラッシュメモリ１００（１００ａ、１００ｂ、…）及びコントローラ２００を含み、外部のホスト機器２に接続される。以下、ＮＡＮＤ型フラッシュメモリ１００ａ、１００ｂ、…のそれぞれを限定しない場合は、ＮＡＮＤ型フラッシュメモリ１００と表記する。コントローラ２００とＮＡＮＤ型フラッシュメモリ１００とは、例えばそれらの組み合わせにより一つの半導体記憶装置を構成してもよく、その例としてはＳＤＴＭカードのようなメモリカードや、ＳＳＤ（solid state drive）等が挙げられる。
【００１１】
ＮＡＮＤ型フラッシュメモリ１００は、データを不揮発に記憶することが可能な不揮発性メモリである。複数のＮＡＮＤ型フラッシュメモリ１００は、それぞれ独立して動作することができる。なお、メモリシステム１が備えるＮＡＮＤ型フラッシュメモリ１００の個数は任意であり、１個以上あればよい。
【００１２】
コントローラ２００は、ホスト機器２からの要求（命令）に応答して、ＮＡＮＤ型フラッシュメモリ１００に対してデータの読み出し動作、書き込み動作、及び消去動作等を命令する。コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００における読み出し電圧の探索動作（以下、「パトロール動作」と表記する）を実行可能である。パトロール動作は、例えばホスト機器２からの命令によらず、予め設定された期間（以下、「パトロール期間」と表記する）内にＮＡＮＤ型フラッシュメモリ１００に対して実行される動作である。パトロール動作は、例えばメモリシステム１の空き時間（例えばホスト機器２から命令を受信していないスタンバイ状態）に実行される。パトロール動作の詳細については後述する。また、コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００のメモリ空間を管理する。なお、コントローラ２００の各機能は専用回路で実現されてもよいし、プロセッサがファームウェアを実行することにより実現されてもよい。本実施形態では、コントローラ２００内に専用回路が設けられている場合について説明する。
【００１３】
コントローラ２００は、ホストインターフェイス回路２１０、内蔵メモリ（ＲＡＭ）２２０、プロセッサ（ＣＰＵ；central processing unit）２３０、バッファメモリ２４０、ＮＡＮＤインターフェイス回路２５０、ＥＣＣ回路２６０、及びタイマ２７０を含む。
【００１４】
ホストインターフェイス回路２１０は、ホストバスによってホスト機器２と接続され、ホスト機器２との通信を司る。例えば、ホストインターフェイス回路２１０は、ホスト機器２から受信した命令及びデータをそれぞれ、ＣＰＵ２３０及びバッファメモリ２４０に転送する。またホストインターフェイス回路２１０は、ＣＰＵ２３０の命令に応答して、バッファメモリ２４０内のデータをホスト機器２に転送する。
【００１５】
ＲＡＭ２２０は、例えば、ＤＲＡＭ等の半導体メモリであり、ＮＡＮＤ型フラッシュメモリ１００を管理するためのファームウェアや、各種の管理テーブル等を保持する。また、ＲＡＭ２２０は、ＣＰＵ２３０の作業領域として使用される。
【００１６】
ＣＰＵ２３０は、コントローラ２００全体の動作を制御する。例えば、ＣＰＵ２３０は、ホスト機器２から受信した書き込み命令に応答して、ＮＡＮＤインターフェイス回路２５０に対して書き込みコマンドを発行する。この動作は、読み出し命令及び消去命令の場合についても同様である。ＣＰＵ２３０は、タイマ２７０のカウントに基づいたパトロール期間内におけるパトロール動作を制御する。また、ＣＰＵ２３０は、ウェアレベリング等、ＮＡＮＤ型フラッシュメモリ１００のメモリ空間を管理するための様々な処理を実行する。
【００１７】
バッファメモリ２４０は、コントローラ２００がＮＡＮＤ型フラッシュメモリ１００から受信した読み出しデータや、ホスト機器２から受信した書き込みデータ等を一時的に保持する。
【００１８】
ＥＣＣ回路２６０は、データのエラー訂正（ＥＣＣ：error checking and correcting）処理を行う。具体的には、ＥＣＣ回路２６０は、データの書き込み時に書き込みデータに基づいてパリティを生成する。そして、ＥＣＣ回路２６０は、データの読み出し時にパリティからシンドロームを生成してエラーを検出し、検出したエラーを訂正する。
【００１９】
ＮＡＮＤインターフェイス回路２５０は、ＮＡＮＤバスによってＮＡＮＤ型フラッシュメモリ１００と接続され、ＮＡＮＤ型フラッシュメモリ１００との通信を司る。例えば、ＮＡＮＤインターフェイス回路２５０は、ＣＰＵ２３０から受信した命令に基づいて各種制御信号をＮＡＮＤ型フラッシュメモリ１００に送信し、レディ／ビジー信号ＲＢｎをＮＡＮＤ型フラッシュメモリ１００から受信し、信号ＤＱをＮＡＮＤ型フラッシュメモリ１００との間で送受信する。
【００２０】
レディ／ビジー信号ＲＢｎは、ＮＡＮＤ型フラッシュメモリ１００がコントローラ２００からの命令を受信することが可能かどうかを通知する信号である。レディ／ビジー信号ＲＢｎは、例えばＮＡＮＤ型フラッシュメモリ１００がコントローラ２００からの命令を受信可能なレディ状態の場合にＨｉｇｈ（“Ｈ”）レベルとされ、受信不可能なビジー状態の場合にＬｏｗ（“Ｌ”）レベルとされる。
【００２１】
信号ＤＱは、例えば８ビットの信号であり、コマンド、アドレス、及びデータ等を含む。より具体的には、例えば、書き込み動作時において、ＮＡＮＤ型フラッシュメモリ１００に転送される信号ＤＱは、ＣＰＵ２３０が発行した書き込みコマンド、アドレス、及びバッファメモリ２４０内の書き込みデータを含む。また、読み出し動作時において、ＮＡＮＤ型フラッシュメモリ１００に転送される信号ＤＱは、ＣＰＵ２３０が発行した読み出しコマンド及びアドレスを含み、コントローラ２００に転送される信号ＤＱは、読み出しデータを含む。
【００２２】
タイマ２７０は、メモリシステム１の各種動作に関連する時間を計測する。例えば、タイマ２７０は、各ＮＡＮＤ型フラッシュメモリ１００に対してパトロール期間を計測する。
【００２３】
１．１．２  ＮＡＮＤ型フラッシュメモリの構成
次に、ＮＡＮＤ型フラッシュメモリ１００の構成について、図２を用いて説明する。なお、図２の例では、ＮＡＮＤ型フラッシュメモリ１００ａが示されているが、他のＮＡＮＤ型フラッシュメモリ１００も同様である。また、各ブロック間の接続の一部を矢印線により示しているが、各ブロック間の接続はこれに限定されない。
【００２４】
図２に示すように、ＮＡＮＤ型フラッシュメモリ１００は、入出力回路１０、ロジック制御回路１１、ステータスレジスタ１２、アドレスレジスタ１３、コマンドレジスタ１４、シーケンサ１５、レディ／ビジー回路１６、電圧発生回路１７、メモリセルアレイ１８、ロウデコーダ１９、センスアンプ２０、データレジスタ２１、並びにカラムデコーダ２２を含む。
【００２５】
入出力回路１０は、コントローラ２００との信号ＤＱ［７：０］の入出力を制御する。より具体的には、入出力回路１０は、入力回路と出力回路を備える。入力回路は、コントローラ２００から受信したデータＤＡＴ（書き込みデータＷＤ）を、データレジスタ２１に送信し、アドレスＡＤＤをアドレスレジスタ１３に送信し、コマンドＣＭＤをコマンドレジスタ１４に送信する。出力回路は、ステータスレジスタ１２から受信したステータス情報ＳＴＳ、データレジスタ２１から受信したデータＤＡＴ（読み出しデータＲＤ）、及びアドレスレジスタ１３から受信したアドレスＡＤＤをコントローラ２００に送信する。入出力回路１０とデータレジスタ２１とは、データバスを介して接続される。
【００２６】
ロジック制御回路１１は、コントローラ２００から制御信号を受信する。制御信号には、例えばチップイネーブル信号ＣＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥｎ、及びリードイネーブル信号ＲＥｎが含まれる。そしてロジック制御回路１１は、受信した信号に応じて、入出力回路１０及びシーケンサ１５を制御する。
【００２７】
チップイネーブル信号ＣＥｎは、ＮＡＮＤ型フラッシュメモリ１００をイネーブルにするための信号であり、例えば“Ｌ”レベルでアサートされる。コマンドラッチイネーブル信号ＣＬＥは、信号ＤＱがコマンドであることを示す信号であり、例えば“Ｈ”レベルでアサートされる。アドレスラッチイネーブル信号ＡＬＥは、信号ＤＱがアドレスであることを示す信号であり、例えば“Ｈ”レベルでアサートされる。ライトイネーブル信号ＷＥｎは、受信した信号をＮＡＮＤ型フラッシュメモリ１００内へ取り込むための信号であり、コントローラ２００よりコマンド、アドレス、及びデータ等を受信する度に、例えば“Ｌ”レベルでアサートされる。よって、ＷＥｎがトグルされる度に、信号ＤＱがＮＡＮＤ型フラッシュメモリ１００に取り込まれる。リードイネーブル信号ＲＥｎは、コントローラ２００が、ＮＡＮＤ型フラッシュメモリ１００からデータを読み出すための信号である。リードイネーブル信号ＲＥｎは、例えば“Ｌ”レベルでアサートされる。
【００２８】
ステータスレジスタ１２は、例えばデータの書き込み動作、読み出し動作、及び消去動作において、シーケンサ１５から受信したステータス情報ＳＴＳを一時的に保持し、コントローラ２００に動作が正常に終了したか否かを通知する。
【００２９】
アドレスレジスタ１３は、入出力回路１０を介してコントローラ２００から受信したアドレスＡＤＤを一時的に保持する。そして、アドレスレジスタ１３は、例えば、ロウアドレスＲＡ（ブロックアドレス及びページアドレスを含む）をロウデコーダに転送し、カラムアドレスＣＡをカラムデコーダ２２に転送する。
【００３０】
コマンドレジスタ１４は、入出力回路１０を介してコントローラ２００から受信したコマンドＣＭＤを一時的に保存し、シーケンサ１５に転送する。
【００３１】
シーケンサ１５は、ＮＡＮＤ型フラッシュメモリ１００全体の動作を制御する。より具体的には、シーケンサ１５は、コマンドレジスタ１４が保持するコマンドＣＭＤに応じて、例えばステータスレジスタ１２、レディ／ビジー回路１６、電圧発生回路１７、ロウデコーダ１９、センスアンプ２０、データレジスタ２１、並びにカラムデコーダ２２等を制御し、書き込み動作、読み出し動作、及び消去動作等を実行する。
【００３２】
レディ／ビジー回路１６は、シーケンサ１５の制御に応じて、レディ／ビジー信号ＲＢｎをコントローラ２００に送信する。
【００３３】
電圧発生回路１７は、シーケンサ１５の制御に応じて、書き込み動作、読み出し動作、及び消去動作に必要な電圧を発生させ、この発生した電圧を例えばメモリセルアレイ１８、ロウデコーダ１９、並びにセンスアンプ２０等に供給する。
【００３４】
メモリセルアレイ１８は、ロウ及びカラムに対応付けられた不揮発性のメモリセルトランジスタ（以下、メモリセルとも表記する）を含む例えば４つのブロックＢＬＫ０〜ＢＬＫ３を備えている。なお、メモリセルアレイ１８内のブロックＢＬＫの個数は任意である。メモリセルアレイ１８の構成の詳細については後述する。
【００３５】
メモリセルアレイ１８は、メモリの空間領域としてユーザ領域及び管理領域を含み、例えば、複数のブロックＢＬＫがユーザ領域と管理領域とにそれぞれ割り当てられる。ユーザ領域は、ホスト機器２から受信したユーザデータの書き込み動作及び読み出し動作に使用される領域である。管理領域は、例えば、制御プログラム、または各種設定パラメータ等の管理用データが保存される領域である。例えば、管理領域には、読み出し電圧のパラメータ情報が格納される。
【００３６】
ロウデコーダ１９は、各ブロックＢＬＫにおいて、ロウ方向に沿って配置された配線（例えば、ワード線及び選択ゲート線）に接続される。そして、ロウデコーダ１９は、選択したブロックＢＬＫの配線に、書き込み動作、読み出し動作、及び消去動作に必要な電圧を印加する。
【００３７】
センスアンプ２０は、読み出し動作のときには、メモリセルアレイ１８から読み出されたデータをセンスする。そして、センスアンプ２０は、読み出しデータＲＤをデータレジスタ２１に送信する。また、センスアンプ２０は、書き込み動作のときには、書き込みデータＷＤをメモリセルアレイ１８に送信する。
【００３８】
データレジスタ２１は、複数のラッチ回路を備える。ラッチ回路は、書き込みデータＷＤ及び読み出しデータＲＤを保持する。例えば、書き込み動作において、データレジスタ２１は、入出力回路１０から受信した書き込みデータＷＤを一時的に保持し、センスアンプ２０に送信する。また、例えば、読み出し動作において、データレジスタ２１は、センスアンプ２０から受信した読み出しデータＲＤを一時的に保持し、入出力回路１０に送信する。
【００３９】
カラムデコーダ２２は、例えば書き込み動作、読み出し動作、及び消去動作の際、カラムアドレスＣＡをデコードし、デコード結果に応じてデータレジスタ２１内のラッチ回路を選択する。
【００４０】
１．１．３  メモリセルアレイの回路構成
次に、メモリセルアレイ１８の回路構成について、図３を用いて説明する。図３は、１つのブロックＢＬＫにおけるメモリセルアレイ１８の回路図を示している。
【００４１】
図３に示すように、ブロックＢＬＫは、例えば４つのストリングユニットＳＵ０〜ＳＵ３を含む。なお、ブロックＢＬＫ内のストリングユニットＳＵの個数は任意である。各々のストリングユニットＳＵは、複数のＮＡＮＤストリングＮＳを含む。以下、ストリングユニットＳＵ０〜ＳＵ３のそれぞれを限定しない場合は、ストリングユニットＳＵと表記する。
【００４２】
ＮＡＮＤストリングＮＳは、例えば８個のメモリセルトランジスタＭＣ０〜ＭＣ７、並びに選択トランジスタＳＴ１及びＳＴ２を含んでいる。以下、メモリセルトランジスタＭＣ０〜ＭＣ７のそれぞれを限定しない場合は、メモリセルトランジスタＭＣと表記する。
【００４３】
メモリセルトランジスタＭＣは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。なお、メモリセルトランジスタＭＣは、電荷蓄積層に絶縁層を用いたＭＯＮＯＳ型であってもよいし、電荷蓄積層に導電層を用いたＦＧ型であってもよい。以下、本実施形態では、ＭＯＮＯＳ型を例として説明する。また、ＮＡＮＤストリングＮＳの各々に含まれるメモリセルトランジスタＭＣの個数は、１６個、３２個、４８個、６４個、９６個、または１２８個等であってもよく、その数は限定されるものではない。更に、ＮＡＮＤストリングＮＳの各々に含まれる選択トランジスタＳＴ１及びＳＴ２の個数は任意であり、それぞれ１個以上あればよい。
【００４４】
メモリセルトランジスタＭＣ０〜ＭＣ７は、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に直列接続されている。より具体的には、メモリセルトランジスタＭＣ０〜ＭＣ７は、その電流経路が直列に接続される。そしてメモリセルトランジスタＭＣ７のドレインは、選択トランジスタＳＴ１のソースに接続され、メモリセルトランジスタＭＣ０のソースは、選択トランジスタＳＴ２のドレインに接続されている。
【００４５】
ストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ１のゲートは、選択ゲート線ＳＧＤ０〜ＳＧＤ３にそれぞれ接続される。また、ストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ２のゲートは、選択ゲート線ＳＧＳに共通に接続される。以下、選択ゲート線ＳＧＤ０〜ＳＧＤ３のそれぞれを限定しない場合は、選択ゲート線ＳＧＤと表記する。なお、ストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ２のゲートは、選択ゲート線ＳＧＳ０〜ＳＧＳ３にそれぞれ接続されてもよい。
【００４６】
ブロックＢＬＫ内にあるメモリセルトランジスタＭＣ０〜ＭＣ７の制御ゲートは、それぞれワード線ＷＬ０〜ＷＬ７に共通接続される。以下、ワード線ＷＬ０〜ＷＬ７のそれぞれを限定しない場合は、ワード線ＷＬと表記する。
【００４７】
ストリングユニットＳＵ内にある各ＮＡＮＤストリングＮＳの選択トランジスタＳＴ１のドレインは、それぞれ異なるビット線ＢＬ０〜ＢＬ（Ｌ−１）（Ｌは２以上の整数）に接続される。以下、ビット線ＢＬ０〜ＢＬ（Ｌ−１）を限定しない場合は、ビット線ＢＬと表記する。各ビット線ＢＬは、複数のブロックＢＬＫ間で各ストリングユニットＳＵ内にある１つのＮＡＮＤストリングＮＳを共通に接続する。更に、複数の選択トランジスタＳＴ２のソースは、ソース線ＳＬに共通に接続されている。つまり、ストリングユニットＳＵは、異なるビット線ＢＬに接続され、且つ同一の選択ゲート線ＳＧＤに接続されたＮＡＮＤストリングＮＳの集合体である。またブロックＢＬＫは、ワード線ＷＬを共通にする複数のストリングユニットＳＵの集合体である。そしてメモリセルアレイ１８は、ビット線ＢＬを共通にする複数のブロックＢＬＫの集合体である。
【００４８】
データの書き込み動作及び読み出し動作は、いずれかのストリングユニットＳＵにおけるいずれかのワード線ＷＬに接続されたメモリセルトランジスタＭＣに対して、一括して行われる。以下、データの書き込み及び読み出しの際、一括して選択されるメモリセルトランジスタＭＣの群を「メモリセルグループＭＣＧ」と呼ぶ。そして、１つのメモリセルグループＭＣＧに書き込まれる、または読み出される１ビットのデータの集まりを「ページ」と呼ぶ。
【００４９】
更に、メモリセルアレイ１８の構成は、他の構成であっても良い。すなわちメモリセルアレイ１８の構成については、例えば、“三次元積層不揮発性半導体メモリ(THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY)”という２００９年３月１９日に出願された米国特許出願１２／４０７，４０３号に記載されている。また、“三次元積層不揮発性半導体メモリ(THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY)”という２００９年３月１８日に出願された米国特許出願１２／４０６，５２４号、“不揮発性半導体記憶装置及びその製造方法(NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE AND METHOD OF MANUFACTURING THE SAME)”という２０１０年３月２５日に出願された米国特許出願１２／６７９，９９１号“半導体メモリ及びその製造方法(SEMICONDUCTOR MEMORY AND METHOD FOR MANUFACTURING SAME)”という２００９年３月２３日に出願された米国特許出願１２／５３２，０３０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００５０】
１．１．４  メモリセルアレイの断面構成
次に、メモリセルアレイ１８の断面構成について、図４を用いて説明する。図４の例は、１つのＮＡＮＤストリングＮＳの断面を示している。なお、図４において、一部の層間絶縁膜は省略されている。
【００５１】
図４に示すように、半導体基板３０上には、絶縁層３１が形成されている。絶縁層３１には、例えばシリコン酸化膜（ＳｉＯ２）が用いられる。なお、絶縁層３１が形成されている領域、すなわち半導体基板３０と配線層３２との間には、ロウデコーダ１９またはセンスアンプ２０等の回路が設けられていてもよい。
【００５２】
絶縁層３１上には、ソース線ＳＬとして機能する配線層３２が形成されている。配線層３２は導電材料により構成され、例えば不純物を添加された半導体材料、または金属材料が用いられる。
【００５３】
配線層３２の上方には、選択ゲート線ＳＧＳ、ワード線ＷＬ０〜ＷＬ７、及び選択ゲート線ＳＧＤとして機能する例えば１０層の配線層３３が、それぞれ図示せぬ層間絶縁膜を介して順次積層されている。
【００５４】
配線層３３は導電材料により構成され、例えば不純物を添加された半導体材料または金属材料が用いられる。例えば、配線層３３として、窒化チタン（ＴｉＮ）／タングステン（Ｗ）の積層構造が用いられる。ＴｉＮは、例えばＣＶＤ（chemical vapor deposition）によりＷを成膜する際、ＷとＳｉＯ２との反応を防止するためのバリア層、あるいはＷの密着性を向上させるための密着層としての機能を有する。
【００５５】
そして、１０層の配線層３３を貫通して配線層３２に達するメモリピラーＭＰが形成されている。１つのメモリピラーＭＰが１つのＮＡＮＤストリングＮＳに対応する。メモリピラーＭＰは、ブロック絶縁膜３４、電荷蓄積層３５、トンネル絶縁膜３６、半導体層３７、コア層３８、及びキャップ層３９を含む。
【００５６】
より具体的には、配線層３３を貫通して、底面が配線層３２に達するように、メモリピラーＭＰに対応するホールが形成されている。ホールの側面にはブロック絶縁膜３４、電荷蓄積層３５、及びトンネル絶縁膜３６が順次積層されている。そして側面がトンネル絶縁膜３６に接し、底面が配線層３２に接するように半導体層３７が形成されている。半導体層３７は、メモリセルトランジスタＭＣ並びに選択トランジスタＳＴ１及びＳＴ２のチャネルが形成される領域である。よって、半導体層３７は、選択トランジスタＳＴ２、メモリセルトランジスタＭＣ０〜ＭＣ７、及び選択トランジスタＳＴ１の電流経路を接続する信号線として機能する。半導体層３７内にはコア層３８が設けられている。そして半導体層３７及びコア層３８上には、側面がトンネル絶縁膜３６に接するキャップ層３９が形成されている。
【００５７】
ブロック絶縁膜３４、トンネル絶縁膜３６、及びコア層３８には、例えばＳｉＯ２が用いられる。電荷蓄積層３５には、例えばシリコン窒化膜（ＳｉＮ）が用いられる。半導体層３７及びキャップ層３９には、例えばポリシリコンが用いられる。
【００５８】
キャップ層３９上には、コンタクトプラグ４０が形成され、コンタクトプラグ４０上には、ビット線ＢＬとして機能する配線層４１が形成されている。コンタクトプラグ４０及び配線層４１は導電材料により構成され、例えば、チタン（Ｔｉ）／ＴｉＮ／Ｗの積層構造等が用いられる。
【００５９】
なお、図４の例では、選択ゲート線ＳＧＤ及びＳＧＳとして機能する配線層３３は、それぞれ１層設けられているが、複数層設けられてもよい。
【００６０】
メモリピラーＭＰと、ワード線ＷＬ０〜ＷＬ７としてそれぞれ機能する８層の配線層３３とにより、メモリセルトランジスタＭＣ０〜ＭＣ７がそれぞれ構成される。同様に、メモリピラーＭＰと、選択ゲート線ＳＧＤ及びＳＧＳとしてそれぞれ機能する２層の配線層３３とにより、選択トランジスタＳＴ１及びＳＴ２がそれぞれ構成される。
【００６１】
１．２  メモリセルトランジスタの閾値分布
次に、メモリセルトランジスタＭＣの閾値分布（閾値電圧領域とも表記する）について、図５を用いて説明する。図５は、各メモリセルトランジスタＭＣの取り得るデータ、閾値分布、及び読み出し動作時に用いる電圧を示している。
【００６２】
図５に示すように、本実施形態では、１つのメモリセルトランジスタＭＣが４ビットデータを保持することができる。すなわち、本実施形態におけるメモリセルトランジスタＭＣは、４ビットのデータを保持するＱＬＣ（quad level cell）である。ＱＬＣの場合、その閾値電圧の分布は１６個に分けられる。この１６個の閾値分布を、閾値電圧が低いものから順に“Ｓ０”レベル〜“Ｓ１５”レベルと表記する。なお、本実施形態は、３ビット以上のデータを保持可能なメモリセルトランジスタＭＣに適用できる。すなわち、メモリセルトランジスタＭＣはｎビット（ｎは３以上の整数）のデータを保持可能であり、この場合、閾値電圧の分布は、２ｎ個に分けられる。
【００６３】
また、図５に示す電圧Ｖ１〜Ｖ１５は、それぞれ、書き込み動作時における“Ｓ０”レベル〜“Ｓ１５”レベルのベリファイに用いられる。電圧ＶＲＥＡＤは、読み出し動作時において非選択ワード線に印加される電圧である。メモリセルトランジスタＭＣは、ゲートに電圧ＶＲＥＡＤが印加されると保持するデータに依らずにオン状態になる。これらの電圧値の関係は、Ｖ１＜Ｖ２＜Ｖ３＜Ｖ４＜Ｖ５＜Ｖ６＜Ｖ７＜Ｖ８＜Ｖ９＜Ｖ１０＜Ｖ１１＜Ｖ１２＜Ｖ１３＜Ｖ１４＜Ｖ１５＜ＶＲＥＡＤである。
【００６４】
上述した閾値分布のうち“Ｓ０”レベルは、メモリセルトランジスタＭＣの消去状態に相当する。“Ｓ０”レベルにおける閾値電圧は、電圧Ｖ１未満である。“Ｓ１”レベルにおける閾値電圧は、電圧Ｖ１以上且つ電圧Ｖ２未満である。“Ｓ２”レベルにおける閾値電圧は、電圧Ｖ２以上且つ電圧Ｖ３未満である。“Ｓ３”レベルにおける閾値電圧は、電圧Ｖ３以上且つ電圧Ｖ４未満である。“Ｓ４”レベルにおける閾値電圧は、電圧Ｖ４以上且つ電圧Ｖ５未満である。“Ｓ５”レベルにおける閾値電圧は、電圧Ｖ５以上且つ電圧Ｖ６未満である。“Ｓ６”レベルにおける閾値電圧は、電圧Ｖ６以上且つ電圧Ｖ７未満である。“Ｓ７”レベルにおける閾値電圧は、電圧Ｖ７以上且つ電圧Ｖ８未満である。“Ｓ８”レベルにおける閾値電圧は、電圧Ｖ８以上且つ電圧Ｖ９未満である。“Ｓ９”レベルにおける閾値電圧は、電圧Ｖ９以上且つ電圧Ｖ１０未満である。“Ｓ１０”レベルにおける閾値電圧は、電圧Ｖ１０以上且つ電圧Ｖ１１未満である。“Ｓ１１”レベルにおける閾値電圧は、電圧Ｖ１１以上且つ電圧Ｖ１２未満である。“Ｓ１２”レベルにおける閾値電圧は、電圧Ｖ１２以上且つ電圧Ｖ１３未満である。“Ｓ１３”レベルにおける閾値電圧は、電圧Ｖ１３以上且つＶ１４未満である。“Ｓ１４”レベルにおける閾値電圧は、電圧Ｖ１４以上且つＶ１５未満である。“Ｓ１５”レベルにおける閾値電圧は、電圧Ｖ１５以上且つ電圧ＶＲＥＡＤ未満である。すなわち、“Ｓ０”〜“Ｓ１５”レベルは、閾値電圧の低い順に領域が定義された１６個の閾値電圧領域である。
【００６５】
本実施形態における読み出し動作では、説明を簡略化するため、ベリファイ電圧を読み出し電圧ＶＣＧＲＶとして使用した場合を一例として説明する。以下に、電圧Ｖ１〜Ｖ１５を用いた読み出し動作のことをそれぞれ、Ｒ１〜Ｒ１５リードと表記する。Ｒ１リードは、メモリセルトランジスタＭＣの閾値電圧が電圧Ｖ１未満か否かを判定する。Ｒ２リードは、メモリセルトランジスタＭＣの閾値電圧が電圧Ｖ２未満か否かを判定する。Ｒ３リードは、メモリセルトランジスタＭＣの閾値電圧が電圧Ｖ３未満か否かを判定する。以下、同様である。
【００６６】
また、上述した１６個の閾値分布は、Ｌｏｗｅｒビット、Ｍｉｄｄｌｅビット、Ｕｐｐｅｒビット、及びＴｏｐビットからなる４ビットデータを書き込むことで形成される。そして１６個の閾値分布が、それぞれ異なる４ビットデータに対応する。本実施形態では、各レベルに含まれるメモリセルトランジスタＭＣに対して、“Ｔｏｐビット／Ｕｐｐｅｒビット／Ｍｉｄｄｌｅビット／Ｌｏｗｅｒビット”に以下に示すようにデータを割り付ける。
【００６７】
“Ｓ０”レベルに含まれるメモリセルトランジスタＭＣは、“１１１１”データを保持する。“Ｓ１”レベルに含まれるメモリセルトランジスタＭＣは、“１１１０”データを保持する。“Ｓ２”レベルに含まれるメモリセルトランジスタＭＣは、“１０１０”データを保持する。“Ｓ３”レベルに含まれるメモリセルトランジスタＭＣは、“１０００”データを保持する。“Ｓ４”レベルに含まれるメモリセルトランジスタＭＣは、“１００１”データを保持する。“Ｓ５”レベルに含まれるメモリセルトランジスタＭＣは、“０００１”データを保持する。“Ｓ６”レベルに含まれるメモリセルトランジスタＭＣは、“００００”データを保持する。“Ｓ７”レベルに含まれるメモリセルトランジスタＭＣは、“００１０”データを保持する。“Ｓ８”レベルに含まれるメモリセルトランジスタＭＣは、“０１１０”データを保持する。“Ｓ９”レベルに含まれるメモリセルトランジスタＭＣは、“０１００”データを保持する。“Ｓ１０”レベルに含まれるメモリセルトランジスタＭＣは、“１１００”データを保持する。“Ｓ１１”レベルに含まれるメモリセルトランジスタＭＣは、“１１０１”データを保持する。“Ｓ１２”レベルに含まれるメモリセルトランジスタＭＣは、“０１０１”データを保持する。“Ｓ１３”レベルに含まれるメモリセルトランジスタＭＣは、“０１１１”データを保持する。“Ｓ１４”レベルに含まれるメモリセルトランジスタＭＣは、“００１１”データを保持する。“Ｓ１５”レベルに含まれるメモリセルトランジスタＭＣは、“１０１１”データを保持する。なお、各レベルに割り付けるデータはこれに限定されない。
【００６８】
このように割り付けられたデータを読み出す場合、Ｌｏｗｅｒビットは、“Ｓ１”、“Ｓ４”、“Ｓ６”、及び“Ｓ１１”レベルを含む読み出し動作、すなわち、Ｒ１、Ｒ４、Ｒ６、及びＲ１１リードによって確定する。Ｍｉｄｄｌｅビットは“Ｓ３”、“Ｓ７”、“Ｓ９”、及び“Ｓ１３”レベルを含む読み出し動作、すなわち、Ｒ３、Ｒ７、Ｒ９、及びＲ１３リードによって確定する。Ｕｐｐｅｒビットは、“Ｓ２”、“Ｓ８”、及び“Ｓ１４”レベルを含む読み出し動作、すなわち、Ｒ２、Ｒ８、及びＲ１４リードによって確定する。Ｔｏｐビットは、“Ｓ５”、“Ｓ１０”、“Ｓ１２”、及び“Ｓ１５”レベルを含む読み出し動作、すなわち、Ｒ５、Ｒ１０、Ｒ１２、及びＲ１５リードによって確定する。つまりＬｏｗｅｒビット、Ｍｉｄｄｌｅビット、Ｕｐｐｅｒビット、及びＴｏｐビットの値はそれぞれ、４回、４回、３回、及び４回の読み出し動作によって確定する。以下、このような割り付けを４−４−３−４コードと表記する。
【００６９】
１．３  読み出し電圧のトラッキング動作
次に、読み出し電圧のトラッキング動作について説明する。トラッキング動作は、隣り合う閾値分布が互いに重なる場合に、２つの閾値分布の谷となる場所、すなわち、２つの閾値分布の交点を求め、得られた交点から適切な読み出し電圧、すなわちシフト量を算出するものである。または、交点の代わりに、読み出し電圧を変化させていった際に、ＥＣＣにおけるフェイルビット数が最小となる電圧、またはＥＣＣによるエラー訂正が可能となる電圧を探索するものである。以下では、“Ｓ０”レベルと“Ｓ１”レベルとにそれぞれ対応する２つの閾値分布の交点を算出する場合を例にトラッキング動作につき簡単に説明する。
【００７０】
図６は、一例として“Ｓ０”レベルと“Ｓ１”レベルの閾値分布の様子を示している。図示するように、例えばデータの書き込み直後の閾値分布が図６上図の通りであったとする。しかし、ディスターブ等により図６下図のように、閾値分布の分布幅が拡がったとする。すると、電圧Ｖ１で読み出しを行うと、図６下図の斜線部分の領域に相当するメモリセルトランジスタＭＣがフェイルビットとなる。そして、発生したフェイルビット数が、ＥＣＣ回路２６０のエラー訂正可能ビット数を超えていれば、データを正しく読み出すことが困難となる。そこで、この２つの閾値分布が重なった交点（谷）の位置（電圧）を探索し、その近傍の電圧を適切な読み出し電圧Ｖ１’とする。これがトラッキング動作である。
【００７１】
次に、トラッキング動作の詳細につき、図７を用いて説明する。図７は、読み出し電圧ＶＣＧＲＶに対するオンセル数（オン状態となるメモリセル数の累積値）と、これに対応した“Ｓ０”レベルの閾値分布と“Ｓ１”レベルの閾値分布を示すグラフである。
【００７２】
図７上図に示すように、電圧ＶＣＧＲＶを上昇させていくと、“Ｓ０”レベルの中央値（最も分布確率の高い電圧）である電圧Ｖmid０より僅かに小さい電圧でオンセル数が急激に増大し、ｄＮ／ｄＶが最大となる（但し、Ｎはオンセル数で、Ｖは選択ワード線ＷＬの電圧ＶＣＧＲＶである）。更に電圧ＶＣＧＲＶを大きくしていくと、オンセル数の増加率は小さくなり、ある値において最小値となる。この電圧ＶＣＧＲＶにおける増加率は、“Ｓ０”レベルの閾値分布と“Ｓ１”レベルの閾値分布とが重ならない場合にはゼロとなる。他方で重なる場合には、ある一定のゼロでは無い最小値（＞０）となる。そして更に電圧ＶＣＧＲＶを大きくしていくと、再びオンセル数の増加率が大きくなり、“Ｓ１”レベルの中央値である電圧Ｖmid１より僅かに小さい電圧で再びｄＮ／ｄＶが最大となる。
【００７３】
上記のオンセル数の累積値の変化によって、図７下図に示すような閾値分布を求めることができる。すなわち、ｄＮ／ｄＶが最大値となる電圧より僅かに大きな電圧が、それぞれ“Ｓ０”レベル及び“Ｓ１”レベルの中央値となり、ｄＮ／ｄＶが最小値となる電圧が、“Ｓ０”レベルと“Ｓ１”レベルとの交点となる閾値分布が得られる。この交点の電圧、すなわち、オンセル数の累積値の増加率が最小となる電圧ＶＣＧＲＶが、見つけるべき電圧Ｖ１’となる。
【００７４】
トラッキングの具体的な動作の一例について、図８を用いて説明する。図８上図は、電圧ＶＣＧＲＶに対するオンセル数（オン状態となるメモリセルの総数）を示し、図８下図は、ワード線ＷＬの電圧を１ステップだけ変動させた際に初めてオンするメモリセル数を示すヒストグラムと、それによって得られる閾値分布を示す。
【００７５】
図８上図に示すように、１つのレベルに対して読み出し電圧ＶＣＧＲＶをシフトさせながら複数回の読み出し動作（以下、「シフトリード」と表記する）が実行される。より具体的には、まず、予め設定された電圧Ｖ１から一定量だけシフトされた電圧Ｖ１ａを用いて読み出し動作が実行される。このときのオンセル数をＮ１とする。次に、電圧Ｖ１ａからΔＶ１だけプラス方向にシフトされた電圧Ｖ１ｂを用いて読み出し動作が実行される。この時のオンセル数をＮ２とする。次に、電圧Ｖ１ｂからΔＶ１だけプラス方向にシフトされた電圧Ｖ１ｃを用いて読み出し動作が実行される。この時のオンセル数をＮ３とする。次に、電圧Ｖ１ｃからΔＶ１だけプラス方向にシフトされた電圧Ｖ１ｄを用いて読み出し動作が実行される。この時のオンセル数をＮ４とする。次に、電圧Ｖ１ｄからΔＶ１だけプラス方向にシフトされた電圧Ｖ１ｅを用いて読み出し動作が実行される。この時のオンセル数をＮ５とする。
【００７６】
すると、選択ワード線の電圧がＶ１ａからＶ１ｂに上昇した際に新たにオンするメモリセル数は、（Ｎ２−Ｎ１）個である。選択ワード線の電圧がＶ１ｂからＶ１ｃに上昇した際に新たにオンするメモリセル数は、（Ｎ３−Ｎ２）個である。選択ワード線の電圧がＶ１ｃからＶ１ｄに上昇した際に新たにオンするメモリセル数は、（Ｎ４−Ｎ３）個である。選択ワード線の電圧がＶ１ｄからＶ１ｅに上昇した際に新たにオンするメモリセル数は、（Ｎ５−Ｎ４）個である。例えば、（Ｎ２−Ｎ１）＞（Ｎ３−Ｎ２）＞（Ｎ４−Ｎ３）であり、（Ｎ４−Ｎ３）＜（Ｎ５−Ｎ４）である場合、図８下図のようなヒストグラムが得られる。
【００７７】
この結果、図８下図に示すような閾値分布が推測され、この分布に基づいてコントローラ２００は、電圧Ｖ１ｃとＶ１ｄとの間が、図７で説明したｄＮ／ｄＶ＝最小となる位置であると推測し、電圧Ｖ１ｃとＶ１ｄとの間の値を適切な読み出し電圧Ｖ１’に設定する。
【００７８】
１．４  パトロール動作
次に、パトロール動作について説明する。本実施形態におけるパトロール動作は、大まかに、分離データの読み出し動作、シフトリード、トラッキング動作、及び読み出し電圧の推定処理を含む。
【００７９】
分離データは、シフトリードにおいて１回の読み出し動作で複数のレベルのデータを読み出した場合に、読み出したデータをそれぞれのレベルに分離するために使用される。分離データの読み出し動作は、対応するレベル毎に実行される（以下、１つのレベルの読み出し動作を、「シングルリード」と表記する）。すなわち、分離データはシングルリードで読み出される。
【００８０】
推定処理は、シフトリードに基づくトラッキング動作の結果から、シフトリードに含まれないレベルに対応する読み出し電圧を推定する処理である。推定処理の詳細については後述する。
【００８１】
１．４．１  シフトリード
まず、パトロール動作におけるシフトリードについて、図９を用いて説明する。
【００８２】
図９に示すように、本実施形態では、シフトリードは、Ｌｏｗｅｒページ、Ｍｉｄｄｌｅページ、Ｕｐｐｅｒページ、またはＴｏｐページに含まれるレベルに限定されずに任意に設定された“Ｓ１”、“Ｓ５”、“Ｓ１１”、及び“Ｓ１５”レベルを含む。すなわちＲ１、Ｒ５、Ｒ１１、及びＲ１５リードに対応する読み出し動作（以下、「トラッキングレベルリード」とも表記する）が複数回（例えば５回）実行される。なお、シフトリードにおけるトラッキングレベルリードの回数は任意に設定可能である。更に、トラッキングレベルリードに設定されるレベルは、“Ｓ１”、“Ｓ５”、“Ｓ１１”、及び“Ｓ１５”レベルに限定されない。トラッキングレベルリードには２つ以上のレベルが含まれていればよい。Ｔｏｐページ及びＬｏｗｅｒページにおけるフェイルビット数を低減させるため、トラッキングレベルリードには、“Ｓ１”及び“Ｓ１５”レベル、すなわち、最小電圧Ｖ１及び最大電圧Ｖ１５が含まれる方が好ましい。
【００８３】
“Ｓ１”レベル（Ｒ１リード）に対応して電圧Ｖ１を例えば５回シフトさせた電圧をそれぞれＶ１ａ〜Ｖ１ｅとすると、Ｖ１ａ＜Ｖ１ｂ＜Ｖ１ｃ＜Ｖ１ｄ＜Ｖ１ｅの関係にある。“Ｓ５”レベル（Ｒ５リード）に対応して電圧Ｖ５を例えば５回シフトさせた電圧をそれぞれＶ５ａ〜Ｖ５ｅとすると、Ｖ５ａ＜Ｖ５ｂ＜Ｖ５ｃ＜Ｖ５ｄ＜Ｖ５ｅの関係にある。“Ｓ１１”レベル（Ｒ１１リード）に対応して電圧Ｖ１１を例えば５回シフトさせた電圧をそれぞれＶ１１ａ〜Ｖ１１ｅとすると、Ｖ１１ａ＜Ｖ１１ｂ＜Ｖ１１ｃ＜Ｖ１１ｄ＜Ｖ１１ｅの関係にある。“Ｓ１５”レベル（Ｒ１５リード）に対応して電圧Ｖ１５を例えば５回シフトさせた電圧をそれぞれＶ１５ａ〜Ｖ１５ｅとすると、Ｖ１５ａ＜Ｖ１５ｂ＜Ｖ１５ｃ＜Ｖ１５ｄ＜Ｖ１５ｅの関係にある。なお、各電圧におけるシフト量は、同じでもよく、異なっていてもよい。より具体的には、例えば、Ｖ１ａから電圧Ｖ１ｂへのシフト量、電圧Ｖ１ｂから電圧Ｖ１ｃへのシフト量、電圧Ｖ１ｃから電圧Ｖ１ｄへのシフト量、電圧Ｖ１ｄから電圧Ｖ１ｅへのシフト量は、それぞれ同じでもよく、異なっていてもよい。各電圧は、コントローラ２００により任意に設定される。
【００８４】
シフトリードにおいて５回のトラッキングレベルリードをシフトＳＦ１〜ＳＦ５とそれぞれ表記すると、シフトＳＦ１では、電圧Ｖ１ａ、Ｖ５ａ、Ｖ１１ａ、及びＶ１５ａに基づくトラッキングレベルリードが実行される。シフトＳＦ２では、電圧Ｖ１ｂ、Ｖ５ｂ、Ｖ１１ｂ、及びＶ１５ｂに基づくトラッキングレベルリードが実行される。シフトＳＦ３では、電圧Ｖ１ｃ、Ｖ５ｃ、Ｖ１１ｃ、及びＶ１５ｃに基づくトラッキングレベルリードが実行される。シフトＳＦ４では、電圧Ｖ１ｄ、Ｖ５ｄ、Ｖ１１ｄ、及びＶ１５ｄに基づくトラッキングレベルリードが実行される。シフトＳＦ５では、電圧Ｖ１ｅ、Ｖ５ｅ、Ｖ１１ｅ、及びＶ１５ｅに基づくトラッキングレベルリードが実行される。
【００８５】
また、“Ｓ１”、“Ｓ５”、“Ｓ１１”、及び“Ｓ１５”レベルを分離するために、例えば、“Ｓ３”、“Ｓ８”、及び“Ｓ１３”レベル（すなわち、Ｒ３、Ｒ８、及びＲ１３リード）にそれぞれ対応する３回のシングルリードが実行され、読み出されたデータが分離データとして使用される。なお、分離データに対応するレベル、すなわち分離データの読み出し電圧は任意に設定可能である。例えば、Ｒ３リードに対応した電圧Ｖ３の代わりに、“Ｓ１”レベルの閾値分布及び“Ｓ４”レベルの閾値分布に含まれない中間の読み出し電圧が設定される。同様に、Ｒ８リードに対応した電圧Ｖ８の代わりに、“Ｓ５”レベルの閾値分布及び“Ｓ１０”レベルの閾値分布に含まれない中間の読み出し電圧が設定される。Ｒ１３リードに対応する電圧Ｖ１３の代わりに、“Ｓ１１”レベルの閾値分布と、“Ｓ１４”レベルの閾値分布に含まれない中間の読み出し電圧が設定される。
【００８６】
図９の例では、シフトリード及び分離データの各読み出し電圧に対応して、メモリセルトランジスタＭＣの閾値電圧を２４個の区分に分割している。より具体的には、区分１の閾値電圧は電圧Ｖ１ａ未満である。区分２の閾値電圧は、電圧Ｖ１ａ以上且つ電圧Ｖ１ｂ未満である。区分３の閾値電圧は、電圧Ｖ１ｂ以上且つ電圧Ｖ１ｃ未満である。区分４の閾値電圧は、電圧Ｖ１ｃ以上且つ電圧Ｖ１ｄ未満である。区分５の閾値電圧は、電圧Ｖ１ｄ以上且つ電圧Ｖ１ｅ未満である。区分６の閾値電圧は、電圧Ｖ１ｅ以上且つ電圧Ｖ３未満である。区分７の閾値電圧は、電圧Ｖ３以上且つ電圧Ｖ５ａ未満である。区分８の閾値電圧は、電圧Ｖ５ａ以上且つ電圧Ｖ５ｂ未満である。区分９の閾値電圧は、電圧Ｖ５ｂ以上且つ電圧Ｖ５ｃ未満である。区分１０の閾値電圧は、電圧Ｖ５ｃ以上且つ電圧Ｖ５ｄ未満である。区分１１の閾値電圧は、電圧Ｖ５ｄａ以上且つ電圧Ｖ５ｅ未満である。区分１２の閾値電圧は、電圧Ｖ５ｅ以上且つ電圧Ｖ８未満である。区分１３の閾値電圧は、電圧Ｖ８以上且つ電圧Ｖ１１ａ未満である。区分１４の閾値電圧は、電圧Ｖ１１ａ以上且つ電圧Ｖ１１ｂ未満である。区分１５の閾値電圧は、電圧Ｖ１１ｂ以上且つ電圧Ｖ１１ｃ未満である。区分１６の閾値電圧は、電圧Ｖ１１ｃ以上且つ電圧Ｖ１１ｄ未満である。区分１７の閾値電圧は、電圧Ｖ１１ｄ以上且つ電圧Ｖ１１ｅ未満である。区分１８の閾値電圧は、電圧Ｖ１１ｅ以上且つ電圧Ｖ１３未満である。区分１９の閾値電圧は、電圧Ｖ１３以上且つ電圧Ｖ１５ａ未満である。区分２０の閾値電圧は、電圧Ｖ１５ａ以上且つ電圧Ｖ１５ｂ未満である。区分２１の閾値電圧は、電圧Ｖ１５ｂ以上且つ電圧Ｖ１５ｃ未満である。区分２２の閾値電圧は、電圧Ｖ１５ｃ以上且つ電圧Ｖ１５ｄ未満である。区分２３の閾値電圧は、電圧Ｖ１５ｄ以上且つ電圧Ｖ１５ｅ未満である。区分２４の閾値電圧は、電圧Ｖ１５ｅ以上且つ電圧ＶＲＥＡＤ未満である。
【００８７】
１．４．２  読み出しデータのレベル分離
次に、シフトリードにより読み出されたデータのレベル分離について、図１０を用いて説明する。図１０は、Ｒ３、Ｒ８、及びＲ１３リードの読み出し結果（すなわち、分離データ）と、シフトリードにおける５回のトラッキングレベルリード（シフトＳＦ１〜シフトＳＦ５）の読み出し結果（以下、「トラッキングデータ」とも表記する）を区分毎に示している。
【００８８】
図１０に示すように、Ｒ３リードに対応する分離データは、区分１〜区分６において“１”であり、区分７〜区分２４において“０”である。Ｒ８リードに対応する分離データは、区分１〜区分１２において“１”であり、区分１３〜区分２４において“０”である。Ｒ１３リードに対応する分離データは、区分１〜区分１８において“１”であり、区分１９〜区分２４において“０”である。また、シフトＳＦ１に対応するトラッキングデータは、区分１、区分８〜区分１３、及び区分２０〜区分２４において“１”であり、区分２〜区分７及び区分１４〜区分１９において“０”である。シフトＳＦ２に対応するトラッキングデータは、区分１、区分２、区分９〜区分１４、及び区分２１〜区分２４において“１”であり、区分３〜区分８及び区分１５〜区分２０において“０”である。シフトＳＦ３に対応するトラッキングデータは、区分１〜区分３、区分１０〜区分１５、及び区分２２〜区分２４において“１”であり、区分４〜区分９及び区分１６〜区分２１において“０”である。シフトＳＦ４に対応するトラッキングデータは、区分１〜区分４、区分１１〜区分１６、区分２３、及び区分２４において“１”であり、区分５〜区分１０及び区分１７〜区分２２において“０”である。シフトＳＦ５に対応するトラッキングデータは、区分１〜区分５、区分１２〜区分１７、及び区分２４において“１”であり、区分６〜区分１１及び区分１８〜区分２３において“０”である。
【００８９】
区分１〜区分２４は、Ｒ３、Ｒ８、及びＲ１３リードによる分離データに応じて４つのグループ（グループＡ〜Ｄ）に分けられる。
【００９０】
Ｒ３、Ｒ８、及びＲ１３リードの結果がいずれも“１”である区分をグループＡとすると、グループＡには区分１〜区分６が含まれる。グループＡにおけるＲ３、Ｒ８、及びＲ１３リードのデータを論理式で表すと、Ｒ３＆Ｒ８＆Ｒ１３＝１（＆；論理積演算）の関係にある。シフトＳＦ１〜シフトＳＦ５の各データとＲ３＆Ｒ８＆Ｒ１３との論理積演算を行うと、区分７〜区分２４ではＲ３＆Ｒ８＆Ｒ１３＝０の関係にあるため、シフトＳＦ１〜シフトＳＦ５の各データが“０”となり、グループＡが分離される。すなわち“Ｓ０”及び“Ｓ１”レベルが分離される。グループＡには“Ｓ０”レベルの閾値分布と“Ｓ１”レベルの閾値分布との交点（谷）が含まれている。シフトＳＦ１〜シフトＳＦ５における区分１〜区分６のデータから、読み出し電圧Ｖ１のトラッキング動作を行うことにより、電圧Ｖ１’が求められる。
【００９１】
Ｒ３リードの結果が“０”であり、Ｒ８及びＲ１３リードの結果が“１”である区分をグループＢとすると、グループＢには、区分７〜区分１２が含まれる。グループＢにおけるＲ３、Ｒ８、及びＲ１３リードのデータを論理式で表すと、／Ｒ３＆Ｒ８＆Ｒ１３＝１（“／”は読み出しデータの反転データを示す）の関係にある。シフトＳＦ１〜シフトＳＦ５の各データと／Ｒ３＆Ｒ８＆Ｒ１３との論理積演算を行うと、区分１〜区分６及び区分１３〜区分２４では／Ｒ３＆Ｒ８＆Ｒ１３＝０の関係にあるため、シフトＳＦ１〜シフトＳＦ５の各データが“０”となり、グループＢが分離される。すなわち“Ｓ４”及び“Ｓ５”レベルが分離される。グループＢには“Ｓ４”レベルの閾値分布と“Ｓ５”レベルの閾値分布との交点（谷）が含まれている。シフトＳＦ１〜シフトＳＦ５における区分７〜区分１２のデータから、読み出し電圧Ｖ５のトラッキング動作を行うことにより、電圧Ｖ５’が求められる。
【００９２】
Ｒ３及びＲ８リードの結果が“０”であり、Ｒ１３リードの結果が“１”である区分をグループＣとすると、グループＣには、区分１３〜区分１８が含まれる。グループＣにおけるＲ３、Ｒ８、及びＲ１３リードのデータを論理式で表すと、／Ｒ３＆／Ｒ８＆Ｒ１３＝１の関係にある。シフトＳＦ１〜シフトＳＦ５の各データと／Ｒ３＆／Ｒ８＆Ｒ１３との論理積演算を行うと、区分１〜区分１２及び区分１９〜区分２４では／Ｒ３＆／Ｒ８＆Ｒ１３＝０の関係にあるため、シフトＳＦ１〜シフトＳＦ５の各データが“０”となり、グループＣが分離される。すなわち“Ｓ１０”及び“Ｓ１１”レベルが分離される。グループＣには“Ｓ１０”レベルの閾値分布と“Ｓ１１”レベルの閾値分布との交点（谷）が含まれている。シフトＳＦ１〜シフトＳＦ５における区分１３〜区分１８のデータから、読み出し電圧Ｖ１１のトラッキング動作を行うことにより、電圧Ｖ１１’が求められる。
【００９３】
Ｒ３、Ｒ８、及びＲ１３リードの結果がいずれも“０”である区分をグループＤとすると、グループＤには、区分１９〜区分２４が含まれる。グループＤにおけるＲ３、Ｒ８、及びＲ１３リードのデータを論理式で表すと、／Ｒ３＆／Ｒ８＆／Ｒ１３＝１の関係にある。シフトＳＦ１〜シフトＳＦ５の各データと／Ｒ３＆／Ｒ８＆／Ｒ１３との論理積演算を行うと、区分１〜区分１８では／Ｒ３＆／Ｒ８＆／Ｒ１３＝０の関係にあるため、シフトＳＦ１〜シフトＳＦ５の各データが“０”となり、グループＤが分離される。すなわち“Ｓ１４”及び“Ｓ１５”レベルが分離される。グループＤには“Ｓ１４”レベルの閾値分布と“Ｓ１５”レベルの閾値分布との交点（谷）が含まれている。シフトＳＦ１〜シフトＳＦ５における区分１９〜区分２４のデータから、読み出し電圧Ｖ１５のトラッキング動作を行うことにより、電圧Ｖ１５’が求められる。
【００９４】
１．４．３  推定処理
次に、推定処理について説明する。本実施形態では、トラッキング動作により電圧Ｖ１’、Ｖ５’、Ｖ１１’、及びＶ１５’を算出し、電圧Ｖ１’、Ｖ５’、Ｖ１１’、及びＶ１５’から電圧Ｖ２’〜Ｖ４’、Ｖ６’〜Ｖ１０’、及びＶ１２’〜Ｖ１４’の推定処理を行っている。
【００９５】
電圧Ｖ１〜Ｖ１５から補正した電圧Ｖ１’〜Ｖ１５’へのシフト量をそれぞれＳＶ１〜ＳＶ１５とする。すると、例えば、ＳＶ１と電圧Ｖ１と電圧Ｖ１’とは、ＳＶ１＝Ｖ１’−Ｖ１の関係にある。ＳＶ２〜ＳＶ１５も同様である。トラッキング動作の結果（電圧Ｖ１’、Ｖ５’、Ｖ１１’、及びＶ１５’）からＳＶ１、ＳＶ５、ＳＶ１１、及びＳＶ１５はそれぞれ求まるので、ＳＶ２〜ＳＶ４、Ｓ６〜ＳＶ１０、及びＳＶ１２〜ＳＶ１４は、例えば、以下に示す演算式を用いてそれぞれ算出される。なお、ＳＶ２〜ＳＶ４、Ｓ６〜ＳＶ１０、及びＳＶ１２〜ＳＶ１４を算出する演算式はこれらに限定されない。
【００９６】
ＳＶ２＝ＳＶ１
ＳＶ３＝（ＳＶ１＋ＳＶ５）／２
ＳＶ４＝ＳＶ５
ＳＶ６＝ＳＶ５
ＳＶ７＝（２×ＳＶ５＋ＳＶ１１）／３
ＳＶ８＝（ＳＶ５＋ＳＶ１１）／２
ＳＶ９＝（ＳＶ５＋２×ＳＶ１１）／３
ＳＶ１０＝ＳＶ１１
ＳＶ１２＝ＳＶ１１
ＳＶ１３＝（ＳＶ１１＋ＳＶ１５）／２
ＳＶ１４＝ＳＶ１５
そして、これらの結果を用いて、電圧Ｖ２’〜Ｖ４’、Ｖ６’〜Ｖ１０’、及びＶ１２’〜Ｖ１４’をそれぞれ推定（算出）する。より具体的には、例えば電圧Ｖ２’を求める場合、Ｖ２’＝Ｖ２＋ＳＶ２の演算を行う。他の電圧Ｖ３’、Ｖ４’、Ｖ６’〜Ｖ１０’、及びＶ１２’〜Ｖ１４’も同様である。
【００９７】
１．４．４  パトロール動作の全体の流れ
次に、パトロール動作の全体の流れについて、図１１を用いて説明する。図１１の例は、１つのワード線ＷＬに対応するパトロール動作を示している。なお、ＣＰＵ２３０は、ＮＡＮＤ型フラッシュメモリ１００内の各ブロックＢＬＫに対してパトロール動作を実行してもよく、ＮＡＮＤ型フラッシュメモリ１００内の任意のブロックＢＬＫに対してパトロール動作を実行してもよい。更に、ＣＰＵ２３０は、ブロックＢＬＫ内の各ワード線ＷＬに対してパトロール動作を実行してもよく、ブロックＢＬＫ内の任意のワード線ＷＬに対してパトロール動作を実行してもよい。すなわち、ワード線ＷＬを複数のグループにグルーピングし、各グループの１つのワード線ＷＬに対してパトロール動作を実行してもよい。この場合、パトロール動作が実行されないブロックＢＬＫまたはワード線ＷＬについては、パトロール動作が実行されたブロックＢＬＫ及びワード線ＷＬに対応する電圧Ｖ１’〜Ｖ１５’が適用される。
【００９８】
図１１に示すように、ＣＰＵ２３０は、パトロール期間内において、例えば、コントローラ２００がスタンバイ状態になると、パトロール動作を開始する（ステップＳ１）。
【００９９】
ＣＰＵ２３０は、まず、Ｒ３リード、Ｒ８リード、及びＲ１３リードに対応する分離データを取得するため、３回のシングルリードを実行する。より具体的には、まず、ＣＰＵ２３０は、Ｒ３リードに対応するシングルリード命令を発行し、ＮＡＮＤ型フラッシュメモリ１００に送信する（ステップＳ２）。なお、Ｒ３リード、Ｒ８リード、及びＲ１３リードの順序は任意に設定可能である。
【０１００】
シーケンサ１５は、シングルリード命令を受信すると、Ｒ３リードに対応するシングルリードを実行し（ステップＳ３）、読み出したデータ（分離データ）をコントローラ２００に送信する（ステップＳ４）。
【０１０１】
ＣＰＵ２３０は、ＮＡＮＤ型フラッシュメモリ１００から分離データを受信すると、例えば、バッファメモリ２４０に分離データを格納する（ステップＳ５）。
【０１０２】
同様に、ＣＰＵ２３０は、Ｒ８及びＲ１３リードに対応して、ステップＳ２〜Ｓ４の動作を繰り返し、それぞれの分離データを取得する。
【０１０３】
次に、ＣＰＵ２３０は、シフトリードを実行し、トラッキングレベルリードを複数回（本例では５回）繰り返す。より具体的には、まず、ＣＰＵ２３０は、シフトＳＦ１に対応する電圧Ｖ１、Ｖ５、Ｖ１１、及びＶ１５のシフト値をＮＡＮＤ型フラッシュメモリ１００に送信する（ステップＳ６）。シーケンサ１５は、受信したシフト値に基づいて、電圧Ｖ１ａ、Ｖ５ａ、Ｖ１１ａ、及びＶ１５ａを設定する（ステップＳ７）。次に、ＣＰＵ２３０は、トラッキングレベルリード命令をＮＡＮＤ型フラッシュメモリ１００に送信する（ステップＳ８）。シーケンサ１５は、受信した命令に基づいてトラッキングレベルリードを実行し（ステップＳ９）、読み出したデータ（トラッキングデータ）をコントローラ２００に送信する（ステップＳ１０）。ＣＰＵ２３０は、ＮＡＮＤ型フラッシュメモリ１００からトラッキングデータを受信すると、例えば、バッファメモリ２４０にトラッキングデータを格納する（ステップＳ１１）。同様に、ＣＰＵ２３０は、シフトＳＦ２〜ＳＦ５に対応して、ステップＳ６〜Ｓ１１の動作を繰り返し、それぞれのトラッキングデータを取得する。
【０１０４】
なお、シングルリード（ステップＳ２〜Ｓ５）とシフトリード（ステップＳ６〜Ｓ１１）との順序は入れ替えてもよい。すなわち、ＣＰＵ２３０は、シフトリードを実行した後、分離データを取得してもよい
次に、ＣＰＵ２３０は、取得したトラッキングデータに基づいてトラッキング動作を行い、電圧Ｖ１’、Ｖ５’、Ｖ１１’、及びＶ１５’を決定する（ステップＳ１２）。
【０１０５】
次に、ＣＰＵ２３０は、電圧Ｖ１’、Ｖ５’、Ｖ１１’、及びＶ１５’から、他の電圧Ｖ２’〜Ｖ４’、Ｖ６’〜Ｖ１０’、Ｖ１２’〜Ｖ１４’の推定処理を行う（ステップＳ１３）。
【０１０６】
次に、ＣＰＵ２３０は、電圧Ｖ１’〜Ｖ１５’に対応するパラメータ（シフト値）をＮＡＮＤ型フラッシュメモリ１００に送信する（ステップＳ１４）。シーケンサ１５は、受信したパラメータを例えばメモリセルアレイ１８の管理領域に格納する（ステップＳ１５）。なお、パラメータに変更が無い場合、ステップＳ１４及びＳ１５は省略されてもよい。
【０１０７】
パラメータ設定が終了するとＣＰＵ２３０は、パトロール動作を終了する（ステップＳ１６）。
【０１０８】
１．４．５  コマンドシーケンス
次に、コントローラ２００からＮＡＮＤ型フラッシュメモリ１００に送信されるコマンドシーケンスについて、図１２を用いて説明する。図１２の例は、パトロール動作における信号ＤＱ（コマンド、アドレス、及びデータ）及びレディ／ビジー信号ＲＢｎの送受信を示すタイミングチャートである。
【０１０９】
図１２に示すように、まず、ＣＰＵ２３０は、Ｒ３リードに対応するシングルリードを実行するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“ＸＸｈ”、コマンド“Ｒ３ｈ”、コマンド“００ｈ”、アドレス“ＡＤＤ１”〜“ＡＤＤ５”、及びコマンド“３０ｈ”を順に送信する。コマンド“ＸＸｈ”は、シングルリードを行うことを通知するコマンドである。コマンド“Ｒ３ｈ”は、Ｒ３リードを行うことを通知するコマンドである。コマンド“００ｈ”は読み出し動作を行うことを通知するコマンドである。コマンド“３０ｈ”は、読み出し動作の実行を指示するコマンドである。なお、本実施形態では、アドレスＡＤＤを５サイクルで送信しているが、これに限定されない。アドレスＡＤＤを送信するための必要なサイクル数であればよい。
【０１１０】
シーケンサ１５は、コマンド“３０ｈ”を受信すると、Ｒ３リードに対応するシングルリードを実行する。読み出し動作の間（図１２の参照符号“ＴＲ”）、シーケンサ１５は、レディ／ビジー信号ＲＢｎを“Ｌ”レベル（ビジー状態）にする。
【０１１１】
ＣＰＵ２３０は、“Ｈ”レベルのレディ／ビジー信号ＲＢｎを受信すると、信号ＲＥｎをトグルして、ＮＡＮＤ型フラッシュメモリ１００のデータレジスタ２１からＲ３リードに対応するデータＲＤを読み出す。
【０１１２】
次に、ＣＰＵ２３０は、Ｒ８リードに対応するシングルリードを実行する。ＣＰＵ２３０は、ＮＡＮＤ型フラッシュメモリ１００にＲ８リードを行うことを通知するコマンド“Ｒ８ｈ”を送信する。コマンド“Ｒ８ｈ”は、Ｒ８リードを行うことを通知するコマンドである。他のコマンド及びアドレスＡＤＤは、Ｒ３リードと同様である。この結果、ＣＰＵ２３０は、データレジスタ２１からＲ８リードに対応するデータＲＤを読み出す。
【０１１３】
次に、ＣＰＵ２３０は、Ｒ１３リードに対応するシングルリードを実行する。ＣＰＵ２３０は、ＮＡＮＤ型フラッシュメモリ１００にＲ１３リードを行うことを通知するコマンド“Ｒ１３ｈ”を送信する。コマンド“Ｒ１３ｈ”は、Ｒ１３リードを行うことを通知するコマンドである。他のコマンド及びアドレスＡＤＤは、Ｒ３リードと同様である。この結果、ＣＰＵ２３０は、データレジスタ２１からＲ１３リードに対応するデータＲＤを読み出す。
【０１１４】
次に、ＣＰＵ２３０は、シフトリードを実行する。より具体的には、まずシフト値（読み出し電圧）を設定するために、ＣＰＵ２３０は、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“ＥＦｈ”、コマンド“Ｘ５ｈ”、データ“ΔＲ１”、“ΔＲ５”、“ΔＲ１１”、及び“ΔＲ１５”を順に送信する。コマンド“ＥＦｈ”はパラメータ設定を指示するコマンドである。コマンド“Ｘ５ｈ”は、トラッキングレベルリードに対応した“Ｓ１”、“Ｓ５”、“Ｓ１１”、及び“Ｓ１５”レベルの選択を示すコマンドである。データ“ΔＲ１”、“ΔＲ５”、“ΔＲ１１”、及び“ΔＲ１５”は、それぞれ電圧Ｖ１、Ｖ５、Ｖ１１、及びＶ１５のシフト値を示すデータである。これにより、例えば、Ｒ１、Ｒ５、Ｒ１１、Ｒ１５リードの読み出し電圧として電圧Ｖ１ｘ＝Ｖ１＋ΔＲ１（ｘはａ〜ｅのいずれか）、電圧Ｖ５ｘ＝Ｖ５＋ΔＲ５、電圧Ｖ１１ｘ＝Ｖ１１＋ΔＲ１１、電圧Ｖ１５ｘ＝Ｖ１５＋ΔＲ１５がそれぞれ設定される。シーケンサ１５は、これらのデータを例えば、メモリセルアレイ１８の管理領域内に格納する。
【０１１５】
次に、ＣＰＵ２３０は、送信したシフト値に基づくトラッキングレベルリードを実行するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“ＹＹｈ”、コマンド“００ｈ”、アドレス“ＡＤＤ１”〜“ＡＤＤ５”、及びコマンド“３０ｈ”を順に送信する。コマンド“ＹＹｈ”は、“Ｓ１”、“Ｓ５”、“Ｓ１１”、及び“Ｓ１５”レベルを含む、すなわち、Ｒ１、Ｒ５、Ｒ１１、及びＲ１５リードを含むトラッキングレベルリードを示すプレフィックスコマンドである。
【０１１６】
シーケンサ１５は、コマンド“３０ｈ”を受信すると、トラッキングレベルリードを実行する。読み出し動作の間、シーケンサ１５は、レディ／ビジー信号ＲＢｎを“Ｌ”レベルにする。
【０１１７】
ＣＰＵ２３０は、“Ｈ”レベルのレディ／ビジー信号ＲＢｎを受信すると、信号ＲＥｎをトグルして、ＮＡＮＤ型フラッシュメモリ１００のデータレジスタ２１からデータＲＤ（トラッキングデータ）を読み出す。
【０１１８】
ＣＰＵ２３０は、シフトリードの回数に応じて、シフト値の設定とトラッキングレベルリードとを繰り返す。
【０１１９】
１．４．６  パトロール動作時における選択ワード線の電圧
次に、パトロール動作時における選択ワード線ＷＬの電圧について、図１３を用いて説明する。図１３の例は、パトロール対象となるメモリセルグループＭＣＧに接続されたワード線ＷＬ（以下、「選択ワード線ＷＬ」とも表記する）における読み出し電圧と、ストローブ信号との関係を示している。ストローブ信号は、シーケンサ１５からセンスアンプ２０に送信させる制御信号であり、センスアンプ２０において、ビット線の電圧を読み出している期間、“Ｈ”レベルとされる。
【０１２０】
図１３に示すように、時刻ｔ０〜ｔ１の期間において、Ｒ３リードに対応するシングルリードが実行される。より具体的には、Ｒ３リードに対応するシングルリードが開始されるとロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ３を印加する。選択ワード線ＷＬに電圧Ｖ３が印加されている期間内において、ストローブ信号は“Ｈ”レベルとされ、センスアンプ２０にデータが読み出される。ストローブ信号が“Ｌ”レベルとされた後、ロウデコーダ１９は、選択ワード線ＷＬに電圧ＶＳＳを印加する。また、読み出されたデータは、コントローラ２００に送信される。
【０１２１】
時刻ｔ１〜ｔ２の期間において、Ｒ８リードに対応するシングルリードが実行される。より具体的には、Ｒ８リードに対応するシングルリードが開始されると、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ８を印加する。以降の動作は、Ｒ３リードに対応するシングルリードと同様である。
【０１２２】
時刻ｔ２〜ｔ３の期間において、Ｒ１３リードに対応するシングルリードが実行される。より具体的には、Ｒ１３リードに対応するシングルリードが開始されると、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１３を印加する。以降の動作は、Ｒ３リードに対応するシングルリードと同様である。
【０１２３】
時刻ｔ３〜ｔ４の期間において、シフトリードのシフトＳＦ１に対応するトラッキングレベルリードが実行される。より具体的には、まず、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１ａをする。選択ワード線ＷＬに電圧Ｖ１ａが印加されている期間内において、ストローブ信号は“Ｈ”レベルとされ、センスアンプ２０には、電圧Ｖ１ａに対応したデータが読み出される。次に、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ５ａをする。選択ワード線ＷＬに電圧Ｖ５ａが印加されている期間内において、ストローブ信号は“Ｈ”レベルとされ、センスアンプ２０には、電圧Ｖ５ａに対応したデータが読み出される。次に、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１１ａをする。選択ワード線ＷＬに電圧Ｖ１１ａが印加されている期間内において、ストローブ信号は“Ｈ”レベルとされ、センスアンプ２０には、電圧Ｖ１１ａに対応したデータが読み出される。次に、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１５ａをする。選択ワード線ＷＬに電圧Ｖ１５ａが印加されている期間内において、ストローブ信号は“Ｈ”レベルとされ、センスアンプ２０には、電圧Ｖ１５ａに対応したデータが読み出される。ストローブ信号が“Ｌ”レベルとされた後、ロウデコーダ１９は、選択ワード線ＷＬに電圧ＶＳＳを印加する。電圧Ｖ１ａ、Ｖ５ａ、Ｖ１１ａ、及びＶ１５ａに対応したトラッキングデータが、コントローラ２００に送信される。
【０１２４】
時刻ｔ４〜ｔ５の期間において、シフトリードのシフトＳＦ２に対応するトラッキングレベルリードが実行される。より具体的には、シフトＳＦ１と同様に、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１ｂ、Ｖ５ｂ、Ｖ１１ｂ、及びＶ１５ｂを順次印加する。センスアンプ２０はそれぞれの電圧に対応したデータを読み出す。そして、電圧Ｖ１ｂ、Ｖ５ｂ、Ｖ１１ｂ、及びＶ１５ｂに対応したトラッキングデータが、コントローラ２００に送信される。
【０１２５】
時刻ｔ５〜ｔ６の期間において、シフトリードのシフトＳＦ３に対応するトラッキングレベルリードが実行される。より具体的には、シフトＳＦ１と同様に、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１ｃ、Ｖ５ｃ、Ｖ１１ｃ、及びＶ１５ｃを順次印加する。センスアンプ２０はそれぞれの電圧に対応したデータを読み出す。そして、電圧Ｖ１ｃ、Ｖ５ｃ、Ｖ１１ｃ、及びＶ１５ｃに対応したトラッキングデータが、コントローラ２００に送信される。
【０１２６】
時刻ｔ６〜ｔ７の期間において、シフトリードのシフトＳＦ４に対応するトラッキングレベルリードが実行される。より具体的には、シフトＳＦ１と同様に、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１ｄ、Ｖ５ｄ、Ｖ１１ｄ、及びＶ１５ｄを順次印加する。センスアンプ２０はそれぞれの電圧に対応したデータを読み出す。そして、電圧Ｖ１ｄ、Ｖ５ｄ、Ｖ１１ｄ、及びＶ１５ｄに対応したトラッキングデータが、コントローラ２００に送信される。
【０１２７】
時刻ｔ７〜ｔ８の期間において、シフトリードのシフトＳＦ５に対応するトラッキングレベルリードが実行される。より具体的には、シフトＳＦ１と同様に、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１ｅ、Ｖ５ｅ、Ｖ１１ｅ、及びＶ１５ｅを順次印加する。センスアンプ２０はそれぞれの電圧に対応したデータを読み出す。そして、電圧Ｖ１ｅ、Ｖ５ｅ、Ｖ１１ｅ、及びＶ１５ｅに対応したトラッキングデータが、コントローラ２００に送信される。
【０１２８】
１．５  本実施形態の係る効果
本実施形態に係る構成であれば、処理能力を向上できる。本効果につき詳述する。
【０１２９】
読み出し動作において、発生したフェイルビット数が、ＥＣＣ回路２６０のエラー訂正可能ビット数を超えていれば、データを正しく読み出すことができない。この場合、トラッキング動作後、読み出し電圧をシフトさせて再度読み出し動作を行う（以下、「リトライリード」と表記する）ことがある。但し、リトライリードを行うと読み出し動作の処理時間が長くなる。
【０１３０】
また、４−４−３−４コードのＱＬＣにおいては、Ｌｏｗｅｒページ、Ｍｉｄｄｌｅページ、Ｕｐｐｅｒページ、またはＴｏｐページのいずれかを用いてトラッキング動作を行っても、４つのページにおけるフェイルビット数を効果的に削減できるページがない。より具体的には、例えば、Ｔｏｐページでは、“Ｓ１５”レベルの読み出し動作に起因するフェイルビット数の割合が比較的多く、Ｌｏｗｅｒページでは、“Ｓ１”レベルの読み出し動作に起因するフェイルビット数の割合が比較的多い。これに対し、例えば、Ｔｏｐページを用いてトラッキング動作を行った場合、“Ｓ５”レベル、すなわち電圧Ｖ５’から電圧Ｖ１’を推定するため、電圧Ｖ１’が“Ｓ０”レベルの閾値分布と“Ｓ１”レベルの閾値分布の谷位置から外れる可能性が高くなり、Ｌｏｗｅｒページのフェイルビット数の削減率が低くなる。また、Ｌｏｗｅｒページを用いてトラッキング動作を行った場合、“Ｓ１１”レベル、すなわち電圧Ｖ１１’から電圧Ｖ１５’を推定するため、電圧Ｖ１５’が“Ｓ１４”レベルの閾値分布と“Ｓ１５”レベルの閾値分布の谷位置から外れる可能性が高くなり、Ｔｏｐページのフェイルビット数の削減率が低くなる。同様に、Ｕｐｐｅｒページ及びＭｉｄｄｌｅページを用いてトラッキング動作を行った場合も、推定により電圧Ｖ１’及び電圧Ｖ１５’が求められるため、電圧Ｖ１’及び電圧Ｖ１５’が谷位置から外れる可能性が高くなる。
【０１３１】
これに対し、本実施形態に係る構成であれば、パトロール動作は、分離データの読み出し動作、シフトリード、トラッキング動作、及び読み出し電圧の推定処理を含む。そして、シフトリードでは、Ｌｏｗｅｒページ、Ｍｉｄｄｌｅページ、Ｕｐｐｅｒページ、またはＴｏｐページに含まれるレベルに限定されずに任意に設定されたレベルを含む読み出し動作を実行できる。より具体的には、例えば“Ｓ１”、“Ｓ５”、“Ｓ１１”、及び“Ｓ１５”レベルを含む読み出し動作を実行できる。この場合、“Ｓ１”レベルと“Ｓ１５”レベルを含むため、トラッキング動作により読み出し電圧の最小電圧Ｖ１’及び最大電圧Ｖ１５’が求まる。よって、電圧Ｖ１’及び電圧Ｖ１５’が谷位置から外れる可能性が低くなりフェイルビット数の削減率を高くできる。パトロール動作により、読み出し電圧の最適化ができるため、通常の読み出し動作において、フェイルビット数を削減でき、リトライリードの発生頻度を低減できる。従って、読み出し動作の処理時間の増加を抑制でき、メモリシステムの処理能力を向上できる。
【０１３２】
更に、パトロール動作をメモリシステムの空き時間（スタンバイ状態）に実行できる。これにより、トラッキング動作によるメモリシステムの処理能力の低下を抑制できる。
【０１３３】
２．第２実施形態
次に、第２実施形態について説明する。第２実施形態では、ＮＡＮＤ型フラッシュメモリ１００が、トラッキング動作を行うオンチップトラッキング（on-chip tracking）を適用する場合について説明する。以下、第１実施形態と異なる点を中心に説明する。
【０１３４】
２．１  オンチップトラッキング
まず、オンチップトラッキングについて、図１４を用いて説明する。図１４の例は、Ｒ１リードに対応するシングルリードを実行する際に、オンチップトラッキングを適用した場合を示している。
【０１３５】
図１４に示すように、オンチップトラッキングは、大まかにサーチングリード、谷スキャン、及びキャリブレーテッド（calibrated）リードの３つを含む。
【０１３６】
サーチングリードは、閾値分布の谷位置を探すためのシフトリードであり、通常の読み出し動作とは異なり、ある電圧を選択ワード線ＷＬに印加した際のオンセルをカウントする動作である。通常の読み出し動作では、データがページ毎に読み出されるが、サーチングリードでは、読み出し電圧に対応してメモリセルトランジスタＭＣがオンしたか否かが判定される。従って、サーチングリードにおける読み出し電圧の印加期間（データの読み出し期間）は、通常の読み出し動作とは、異なっていてもよい。図１４の例では、Ｒ１リードに対応するサーチングリードにおいて、電圧Ｖ１ａ、Ｖ１ｂ、Ｖ１ｃ、Ｖ１ｄ、及びＶ１ｅにそれぞれ対応するオンセル数がカウントされる。なお、カウントは、シーケンサ１５が行ってよく、センスアンプ２０が行ってもよい。すなわち、シーケンサ１５がカウンタを含んでいてもよく、センスアンプ２０がカウンタを含んでいてもよい。
【０１３７】
谷スキャンは、サーチングリードによるオンセル数のカウントの結果から、谷位置（図１４の例では、“Ｓ０”レベルの閾値分布と“Ｓ１”レベルの閾値分布とによる谷位置）を探索する動作である。例えば、シーケンサ１５は、オンセル数をカウントした結果から、第１実施形態の図８で説明したようなヒストグラム、すなわち谷位置に関する情報（以下、「谷情報」と表記する）を取得し、その結果から読み出し電圧（図１４の例ではＶ１’）を決定する。谷情報は、例えばステータスレジスタ１２に格納され、コントローラ２００は、ステータスレジスタ１２から谷情報を読み出すことができる。
【０１３８】
キャリブレーテッドリードは、決定された読み出し電圧（例えばＶ１’）を用いたデータの読み出し動作である。読み出したデータは、コントローラ２００に送信される。
【０１３９】
なお、複数のレベルのデータを一括して読み出す場合、レベル毎にサーチングリードが実行されてもよく、１つのレベルで行ったサーチングリードの結果（閾値電圧のシフト量）が他のレベルに反映されてもよい。より具体的には、例えば、Ｌｏｗｅｒページの読み出し動作において、Ｒ１、Ｒ４、Ｒ６、及びＲ１１リードに対応するサーチングリードがそれぞれ実行されてもよく、例えばＲ１リードに対応するサーチングリードの結果から、Ｒ４、Ｒ６、及びＲ１１リードに対応する読み出し電圧Ｖ４’、Ｖ６’、及びＶ１１’が決定されてもよい。
【０１４０】
２．２  パトロール動作
次に、パトロール動作について説明する。本実施形態におけるパトロール動作は、大まかに、複数のレベルに対応するオンチップトラッキング及び読み出し電圧の推定処理を含む。なお、本実施形態では、オンチップトラッキングに用いられる複数のレベルの組み合わせがＬｏｗｅｒページ、Ｍｉｄｄｌｅページ、Ｕｐｐｅｒページ、及びＴｏｐページとは異なるため、キャリブレーテッドリードが省略されてもよい。以下、キャリブレーテッドリードが省略されている場合について説明する。
【０１４１】
２．２．１  パトロール動作の全体の流れ
次に、パトロール動作の全体の流れについて、図１５を用いて説明する。図１５の例は、１つのワード線ＷＬに対応するパトロール動作を示している。
【０１４２】
図１５に示すように、ＣＰＵ２３０は、第１実施形態の図１１と同様に、ステップＳ１において、パトロール動作を開始する。
【０１４３】
まず、ＣＰＵ２３０は、サーチングリード（オンチップトラッキング）を実行するために、電圧Ｖ１、Ｖ５、Ｖ１１、及びＶ１５のシフト値をＮＡＮＤ型フラッシュメモリ１００に送信する（ステップＳ２１）。例えば、コントローラ２００は、電圧Ｖ１ａ、Ｖ１ｂ、Ｖ１ｃ、Ｖ１ｄ、Ｖ１ｅの各電圧値を送信してもよく、電圧Ｖ１ａ、Ｖ１ｂ、Ｖ１ｃ、Ｖ１ｄ、Ｖ１ｅのステップアップ幅が同じである場合、ステップアップの電圧値を送信してもよい。シーケンサ１５は、受信したシフト値に基づいて、読み出し電圧を設定する（ステップＳ２２）。
【０１４４】
次に、ＣＰＵ２３０は、サーチングリード命令（オンチップトラッキング命令）をＮＡＮＤ型フラッシュメモリ１００に送信する（ステップＳ２３）。シーケンサ１５は、受信した命令に基づいてＲ１、Ｒ５、Ｒ１１、及びＲ１５リードに対応するサーチングリードを実行する（ステップＳ２４）。そして、シーケンサ１５は、谷スキャンの結果から、Ｒ１、Ｒ５、Ｒ１１、及びＲ１５リードについての谷情報を抽出し（ステップＳ２５）、電圧Ｖ１’、Ｖ５’、Ｖ１１’、及びＶ１５’を決定（算出）する。そして、シーケンサ１５は、抽出された谷情報を、コントローラ２００に送信する（ステップＳ２６）。ＣＰＵ２３０は、例えば、バッファメモリ２４０に、受信した谷情報を格納する（ステップＳ２７）。
【０１４５】
次に、ＣＰＵ２３０は、取得した谷情報に基づいて、他の電圧Ｖ２’〜Ｖ４’、Ｖ６’〜Ｖ１０’、Ｖ１２’〜Ｖ１４’の推定処理を行う（ステップＳ２８）。
【０１４６】
以降の動作は、第１実施形態の図１１におけるステップＳ１４〜Ｓ１６と同様である。
【０１４７】
なお、図１５の例は、ＣＰＵ２３０が推定処理を行う場合について示しているが、シーケンサ１５が推定処理を行ってもよい。
【０１４８】
２．２．２  コマンドシーケンス
次に、コントローラ２００からＮＡＮＤ型フラッシュメモリ１００に送信されるコマンドシーケンスについて、図１６を用いて説明する。図１６の例は、パトロール動作における信号ＤＱ（コマンド、アドレス、及びデータ）及びレディ／ビジー信号ＲＢｎの送受信を示すタイミングチャートである。
【０１４９】
図１６に示すように、まず、ＣＰＵ２３０は、Ｒ１、Ｒ５、Ｒ１１、及びＲ１５リードに対応するシフト値（読み出し電圧）を設定するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“ＥＦｈ”、コマンド“Ｘ５ｈ”、データ“ΔＲ１”、“ΔＲ５”、“ΔＲ１１”、及び“ΔＲ１５”を順に送信する。
【０１５０】
次に、ＣＰＵ２３０は、送信したシフト値に基づくサーチングリード（オンチップトラッキング）を実行するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“Ｚ０ｈ”、コマンド“ＹＹｈ”、コマンド“００ｈ”、アドレス“ＡＤＤ１”〜“ＡＤＤ５”、及びコマンド“３０ｈ”を順に送信する。コマンド“Ｚ０ｈ”は、サーチングリードの実行を示すプレフィックスコマンドである。
【０１５１】
シーケンサ１５は、コマンド“３０ｈ”を受信すると、各レベルに対応したサーチングリードを実行する。サーチングリードの間（図１６の参照符号“ＴＳＲ”）、シーケンサ１５は、レディ／ビジー信号ＲＢｎを“Ｌ”レベルにする。
【０１５２】
ＣＰＵ２３０は、“Ｈ”レベルのレディ／ビジー信号ＲＢｎを受信すると、谷情報の出力を示すコマンド“Ｚ１ｈ”を送信した後、谷情報を読み出す。
【０１５３】
２．２．３  パトロール動作時における選択ワード線の電圧
次に、パトロール動作時における選択ワード線ＷＬの電圧について、図１７を用いて説明する。図１７の例は、選択ワード線ＷＬにおける読み出し電圧と、ストローブ信号との関係を示している。
【０１５４】
図１７に示すように、時刻ｔ０〜ｔ１の期間において、Ｒ１リードに対応するサーチングリードが実行される。より具体的には、Ｒ１リードに対応するサーチングリードが開始されるとロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１ａを印加する。選択ワード線ＷＬに電圧Ｖ１ａが印加されている期間内において、ストローブ信号は“Ｈ”レベルとされ、例えばシーケンサ１５は、電圧Ｖ１ａに対応するオンセル数をカウントする。オンセル数のカウントが終了すると、ストローブ信号が“Ｌ”レベルとされる。同様に、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１ｂ〜Ｖ１ｅを順次印加し、例えばシーケンサ１５は、電圧Ｖ１ｂ〜Ｖ１ｅに対応するオンセル数をそれぞれカウントする。
【０１５５】
時刻ｔ１〜ｔ２の期間において、Ｒ５リードに対応するサーチングリードが実行される。より具体的には、Ｒ５リードに対応するサーチングリードが開始されると、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ５ａを印加する。以降の動作は、Ｒ１リードに対応するサーチングリードと同様であり、例えばシーケンサ１５は、電圧Ｖ５ａ〜Ｖ５ｅに対応するオンセル数をそれぞれカウントする。
【０１５６】
時刻ｔ２〜ｔ３の期間において、Ｒ１１リードに対応するサーチングリードが実行される。より具体的には、Ｒ１１リードに対応するサーチングリードが開始されると、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１１ａを印加する。以降の動作は、Ｒ１リードに対応するサーチングリードと同様であり、例えばシーケンサ１５は、電圧Ｖ１１ａ〜Ｖ１１ｅに対応するオンセル数をそれぞれカウントする。
【０１５７】
時刻ｔ３〜ｔ４の期間において、Ｒ１５リードに対応するサーチングリードが実行される。より具体的には、Ｒ１５リードに対応するサーチングリードが開始されると、ロウデコーダ１９は、選択ワード線ＷＬに電圧Ｖ１５ａを印加する。以降の動作は、Ｒ１リードに対応するサーチングリードと同様であり、例えばシーケンサ１５は、電圧Ｖ１５ａ〜Ｖ１５ｅに対応するオンセル数をそれぞれカウントする。
【０１５８】
時刻ｔ４〜ｔ５の期間において、シーケンサ１５は谷スキャンを実行する。これにより谷情報が抽出され、谷情報に基づいて電圧Ｖ１’、Ｖ５’、Ｖ１１’、及びＶ１１’が決定される。
【０１５９】
２．４  本実施形態に係る効果
本実施形態に係る構成であれば、第１実施形態と同様の効果が得られる。
【０１６０】
更に、本実施形態に係る構成であれば、オンチップトラッキングによりＮＡＮＤ型フラッシュメモリ１００が、谷位置を探索できる。すなわち、ＮＡＮＤ型フラッシュメモリ１００がトラッキング動作における演算処理を実行できる。これにより、例えば、コントローラ２００は、トラッキング動作の演算処理を行う必要がないため、複数のＮＡＮＤ型フラッシュメモリ１００に対して、同時にトラッキング動作を実行させることができる。よって、複数のＮＡＮＤ型フラッシュメモリ１００に対するパトロール動作の処理時間を短縮でき、パトロール動作によるメモリシステムの処理能力の低下を抑制できる。
【０１６１】
更に、本実施形態に係る構成であれば、オンチップトラッキングにおいて、キャリブレーテッドリードを省略できる。これにより、パトロール動作時間を短縮できる。
【０１６２】
更に、本実施形態に係る構成であれば、コントローラ２００は、谷情報を読み出すことができる。谷情報は、数バイト程度の小さいデータなので、ＮＡＮＤ型フラッシュメモリ１００からの読み出し時間を短縮できる。
【０１６３】
３．第３実施形態
次に、第３実施形態について説明する。第３実施形態では、第２実施形態とは異なり、シングルリードのオンチップトラッキングを適用した例について説明する。以下、第１及び第２実施形態とは異なる点を中心に説明する。
【０１６４】
３．１  パトロール動作の全体の流れ
まず、パトロール動作の全体の流れについて、図１８を用いて説明する。図１８の例は、１つのワード線ＷＬに対応するパトロール動作を示している。なお、
図１８に示すように、ＣＰＵ２３０は、第１実施形態の図１１と同様に、ステップＳ１において、パトロール動作を開始する。
【０１６５】
ＣＰＵ２３０は、Ｒ１、Ｒ５、Ｒ１１、及びＲ１３リードのそれぞれに対応する４回のサーチングリード（オンチップトラッキング）を実行する。より具体的には、まず、Ｒ１リードに対応するサーチングリードを実行するために、電圧Ｖ１のシフト値をＮＡＮＤ型フラッシュメモリ１００に送信する（ステップＳ３１）。シーケンサ１５は、受信したシフト値に基づいて、読み出し電圧を設定する（ステップＳ３２）。
【０１６６】
次に、ＣＰＵ２３０は、サーチングリードのシングルリード命令をＮＡＮＤ型フラッシュメモリ１００に送信する（ステップＳ３３）。シーケンサ１５は、受信した命令に基づいてＲ１リードに対応するサーチングリードを実行する（ステップＳ２４）。シーケンサ１５は、谷スキャンの結果から谷情報を抽出し（ステップＳ３５）、電圧Ｖ１’を決定（算出）する。そして、シーケンサ１５は、抽出された谷情報をコントローラ２００に送信する（ステップＳ３６）。ＣＰＵ２３０は、例えば、バッファメモリ２４０に、受信した谷情報を格納する（ステップＳ３７）。
【０１６７】
同様に、ＣＰＵ２３０は、Ｒ５、Ｒ１１、及びＲ１５リードに対応するサーチングリードに対応して、ステップＳ３１〜Ｓ３７の動作を繰り返し、それぞれの谷情報を取得する。
【０１６８】
以降の動作は、第２実施形態の図１５におけるステップＳ２８及び第１実施形態の図１１におけるステップＳ１４〜Ｓ１６と同様である。
【０１６９】
なお、図１８の例は、ＣＰＵ２３０が推定処理を行う場合について示しているが、シーケンサ１５が推定処理を行ってもよい。
【０１７０】
３．２  コマンドシーケンス
次に、コントローラ２００からＮＡＮＤ型フラッシュメモリ１００に送信されるコマンドシーケンスについて、図１９を用いて説明する。図１９の例は、パトロール動作における信号ＤＱ（コマンド、アドレス、及びデータ）及びレディ／ビジー信号ＲＢｎの送受信を示すタイミングチャートである。
【０１７１】
図１９に示すように、まず、ＣＰＵ２３０は、Ｒ１リードに対応するシフト値（読み出し電圧）を設定するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“ＥＦｈ”、コマンド“Ｘ１ｈ”、並びにＬｏｗｅｒページに対応するデータ“ΔＲ１”、“ΔＲ４”、“ΔＲ６”、及び“ΔＲ１１”を順に送信する。コマンド“Ｘ１ｈ”は、Ｌｏｗｅｒページ、すなわち、“Ｓ１”、“Ｓ４”、“Ｓ６”、及び“Ｓ１１”レベルの選択を示すコマンドである。データ“ΔＲ４”及び“ΔＲ６”は、それぞれ電圧Ｖ４及びＶ６のシフト値を示すデータである。なお、この場合、データ“ΔＲ４”、“ΔＲ６”、及び“ΔＲ１１”は使用されない。すなわち、Ｒ４、Ｒ６、及びＲ１１リードは実行されない。このため、例えば、データ“ΔＲ４”、“ΔＲ６”、及び“ΔＲ１１”には、０が設定されてもよい。
【０１７２】
次に、ＣＰＵ２３０は、Ｒ１リードに対応するサーチングリード（オンチップトラッキング）を実行するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“Ｚ０ｈ”、コマンド“ＹＹｈ”、コマンド“Ｒ１ｈ”、コマンド“００ｈ”、アドレス“ＡＤＤ１”〜“ＡＤＤ５”、及びコマンド“３０ｈ”を順に送信する。コマンド“Ｒ１ｈ”は、Ｒ１リードを行うことを通知するコマンドである。
【０１７３】
シーケンサ１５は、コマンド“３０ｈ”を受信すると、Ｒ１リードに対応したサーチングリードを実行する。サーチングリードの間、シーケンサ１５は、レディ／ビジー信号ＲＢｎを“Ｌ”レベルにする。
【０１７４】
ＣＰＵ２３０は、“Ｈ”レベルのレディ／ビジー信号ＲＢｎを受信すると、コマンド“Ｚ１ｈ”を送信した後、Ｒ１リードに対応する谷情報を読み出す。
【０１７５】
次に、ＣＰＵ２３０は、Ｒ５リードに対応するシフト値を設定するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“ＥＦｈ”、コマンド“Ｘ４ｈ”、並びにＴｏｐページに対応するデータ“ΔＲ５”、“ΔＲ１０”、“ΔＲ１２”、及び“ΔＲ１５”を順に送信する。コマンド“Ｘ４ｈ”は、Ｔｏｐページ、すなわち、“Ｓ５”、“Ｓ１０”、“Ｓ１２”、及び“Ｓ１５”レベルの選択を示すコマンドである。データ“ΔＲ１０”及び“ΔＲ１２”は、それぞれ電圧Ｖ１０及びＶ１２のシフト値を示すデータである。なお、この場合、データ“ΔＲ１０”、“ΔＲ１２”、及び“ΔＲ１５”は使用されない。すなわち、Ｒ１０、Ｒ１２、及びＲ１５リードは実行されない。このため、例えば、データ“ΔＲ１０”、“ΔＲ１２”、及び“ΔＲ１５”には、０が設定されてもよい。
【０１７６】
次に、ＣＰＵ２３０は、Ｒ５リードに対応するサーチングリードを実行するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“Ｚ０ｈ”、コマンド“ＹＹｈ”、コマンド“Ｒ５ｈ”、コマンド“００ｈ”、アドレス“ＡＤＤ１”〜“ＡＤＤ５”、及びコマンド“３０ｈ”を順に送信する。コマンド“Ｒ５ｈ”は、Ｒ５リードを行うことを通知するコマンドである。
【０１７７】
シーケンサ１５は、コマンド“３０ｈ”を受信すると、Ｒ５リードに対応したサーチングリードを実行する。サーチングリードの間、シーケンサ１５は、レディ／ビジー信号ＲＢｎを“Ｌ”レベルにする。
【０１７８】
ＣＰＵ２３０は、“Ｈ”レベルのレディ／ビジー信号ＲＢｎを受信すると、コマンド“Ｚ１ｈ”を送信した後、Ｒ５リードに対応する谷情報を読み出す。
【０１７９】
次に、ＣＰＵ２３０は、Ｒ１１リードに対応するシフト値を設定するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“ＥＦｈ”、コマンド“Ｘ１ｈ”、並びにＬｏｗｅｒページに対応するデータ“ΔＲ１”、“ΔＲ４”、“ΔＲ６”、及び“ΔＲ１１”を順に送信する。コマンド“Ｘ１ｈ”は、Ｌｏｗｅｒページ、すなわち、“Ｓ１”、“Ｓ４”、“Ｓ６”、及び“Ｓ１１”レベルの選択を示すコマンドである。なお、この場合、データ“ΔＲ１”、“ΔＲ４”、及び“ΔＲ６”は使用されない。すなわち、Ｒ１、Ｒ４、及びＲ６リードは実行されない。このため、例えば、データ“ΔＲ１”、“ΔＲ４”、及び“ΔＲ６”には、０が設定されてもよい。
【０１８０】
次に、ＣＰＵ２３０は、Ｒ１１リードに対応するサーチングリードを実行するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“Ｚ０ｈ”、コマンド“ＹＹｈ”、コマンド“Ｒ１１ｈ”、コマンド“００ｈ”、アドレス“ＡＤＤ１”〜“ＡＤＤ５”、及びコマンド“３０ｈ”を順に送信する。コマンド“Ｒ１１ｈ”は、Ｒ１１リードを行うことを通知するコマンドである。
【０１８１】
シーケンサ１５は、コマンド“３０ｈ”を受信すると、Ｒ１１リードに対応したサーチングリードを実行する。サーチングリードの間、シーケンサ１５は、レディ／ビジー信号ＲＢｎを“Ｌ”レベルにする。
【０１８２】
ＣＰＵ２３０は、“Ｈ”レベルのレディ／ビジー信号ＲＢｎを受信すると、コマンド“Ｚ１ｈ”を送信した後、Ｒ１１リードに対応する谷情報を読み出す。
【０１８３】
次に、ＣＰＵ２３０は、Ｒ１５リードに対応するシフト値を設定するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“ＥＦｈ”、コマンド“Ｘ４ｈ”、並びにＴｏｐページに対応するデータ“ΔＲ５”、“ΔＲ１０”、“ΔＲ１２”、及び“ΔＲ１５”を順に送信する。なお、この場合、データ“ΔＲ５”、“ΔＲ１０”、及び“ΔＲ１２”は使用されない。すなわち、Ｒ５、Ｒ１０、及びＲ１２リードは実行されない。このため、例えば、データ“ΔＲ５”、“ΔＲ１０”、及び“ΔＲ１２”には、０が設定されてもよい。
【０１８４】
次に、ＣＰＵ２３０は、Ｒ１５リードに対応するサーチングリードを実行するため、ＮＡＮＤ型フラッシュメモリ１００に、コマンド“Ｚ０ｈ”、コマンド“ＹＹｈ”、コマンド“Ｒ１５ｈ”、コマンド“００ｈ”、アドレス“ＡＤＤ１”〜“ＡＤＤ５”、及びコマンド“３０ｈ”を順に送信する。コマンド“Ｒ１５ｈ”は、Ｒ１５リードを行うことを通知するコマンドである。
【０１８５】
シーケンサ１５は、コマンド“３０ｈ”を受信すると、Ｒ１５リードに対応したサーチングリードを実行する。サーチングリードの間、シーケンサ１５は、レディ／ビジー信号ＲＢｎを“Ｌ”レベルにする。
【０１８６】
ＣＰＵ２３０は、“Ｈ”レベルのレディ／ビジー信号ＲＢｎを受信すると、コマンド“Ｚ１ｈ”を送信した後、Ｒ１５リードに対応する谷情報を読み出す。
【０１８７】
なお、Ｒ１、Ｒ５、Ｒ１１、及びＲ１５リードのそれぞれ対応するサーチングリードの順序は任意に設定可能である。
【０１８８】
３．３  パトロール動作時における選択ワード線の電圧
次に、パトロール動作時における選択ワード線ＷＬの電圧について、図２０を用いて説明する。図２０の例は、選択ワード線ＷＬにおける読み出し電圧と、ストローブ信号との関係を示している。
【０１８９】
図１７に示すように、時刻ｔ０〜ｔ１の期間において、第２実施形態の図１７における時刻ｔ０〜ｔ１の期間と同様に、Ｒ１リードに対応するサーチングリードが実行される。これにより、例えばシーケンサ１５は、電圧Ｖ１ａ〜Ｖ１ｅに対応するオンセル数をそれぞれカウントする。
【０１９０】
時刻ｔ１〜ｔ２の期間において、シーケンサ１５は、Ｒ１リードに対応する谷スキャンを実行する。これによりＲ１リードに対応する谷情報が抽出され、抽出された谷情報に基づいて電圧Ｖ１’が決定される。
【０１９１】
時刻ｔ２〜ｔ３の期間において、第２実施形態の図１７における時刻ｔ１〜ｔ２の期間と同様に、Ｒ５リードに対応するサーチングリードが実行される。これにより、例えばシーケンサ１５は、電圧Ｖ５ａ〜Ｖ５ｅに対応するオンセル数をそれぞれカウントする。
【０１９２】
時刻ｔ３〜ｔ４の期間において、シーケンサ１５は、Ｒ５リードに対応する谷スキャンを実行する。これによりＲ５リードに対応する谷情報が抽出され、抽出された谷情報に基づいて電圧Ｖ５’が決定される。
【０１９３】
時刻ｔ４〜ｔ５の期間において、第２実施形態の図１７における時刻ｔ２〜ｔ３の期間と同様に、Ｒ１１リードに対応するサーチングリードが実行される。これにより、例えばシーケンサ１５は、電圧Ｖ１１ａ〜Ｖ１１ｅに対応するオンセル数をそれぞれカウントする。
【０１９４】
時刻ｔ５〜ｔ６の期間において、シーケンサ１５は、Ｒ１１リードに対応する谷スキャンを実行する。これによりＲ１１リードに対応する谷情報が抽出され、抽出された谷情報に基づいて電圧Ｖ１１’が決定される。
【０１９５】
時刻ｔ６〜ｔ７の期間において、第２実施形態の図１７における時刻ｔ３〜ｔ４の期間と同様に、Ｒ１５リードに対応するサーチングリードが実行される。これにより、例えばシーケンサ１５は、電圧Ｖ１５ａ〜Ｖ１５ｅに対応するオンセル数をそれぞれカウントする。
【０１９６】
時刻ｔ５〜ｔ６の期間において、シーケンサ１５は、Ｒ１５リードに対応する谷スキャンを実行する。これによりＲ１５リードに対応する谷情報が抽出され、抽出された谷情報に基づいて電圧Ｖ１５’が決定される。
【０１９７】
３．４  本実施形態に係る効果
本実施形態に係る構成であれば、第１及び第２実施形態と同様の効果が得られる。
【０１９８】
４．変形例等
上記実施形態に係るメモリシステムは、半導体記憶装置(100)と、半導体記憶装置を制御可能なコントローラ(200)とを含む。半導体記憶装置は、少なくとも第１乃至第３データを記憶可能な複数のメモリセル(MC)と、複数のメモリセルに接続されたワード線(WL)とを含む。第１データ(Lowerビット、Lowerページ)は、第１読み出しレベル(“S1”レベル)を含む第１読み出し動作により確定され、第２データ(Topビット、Topページ)は、第２読み出しレベル(“S15”レベル)を含む第２読み出し動作により確定され、第３データ(例えばMiddleビット、Middleページ)は、第３読み出しレベル(例えば“S3”レベル)を含む第３読み出し動作により確定される。コントローラは、第１乃至第３読み出しレベルにそれぞれ対応する第１乃至第３読み出し電圧(V1’、V15’、V3’)の探索動作(パトロール動作)において、半導体記憶装置に第１及び第２読み出しレベルを含む第４読み出し動作を実行させる。
【０１９９】
上記実施形態を適用することにより、処理能力を向上できるメモリシステムを提供できる。
【０２００】
なお、実施形態は上記説明した形態に限定されるものではなく、種々の変形が可能である。
【０２０１】
例えば、第１実施形態において、ＮＡＮＤ型フラッシュメモリ１００が、電圧Ｖ１’〜Ｖ１５’を求める演算処理をおこなってもよい。
【０２０２】
更に、第２及び第３実施形態において、コントローラ２００が、電圧Ｖ１’、Ｖ５’、Ｖ１１’、及びＶ１５’を求める演算処理を行ってもよく、ＮＡＮＤ型フラッシュメモリ１００が、電圧Ｖ２’〜Ｖ４’、Ｖ６’〜Ｖ１０’、及びＶ１２’〜Ｖ１４’を求める演算処理（推定処理)を行ってもよい。
【０２０３】
更に、上記実施形態におけるパトロール動作は、リトライリードにおいて実行されてもよい。すなわち、通常の読み出し動作において、フェイルビット数がＥＣＣ回路２６０のエラー訂正可能ビット数を超えた場合に、上記実施形態による読み出し電圧の探索動作が行われてもよい。
【０２０４】
更に、上記実施形態において、半導体記憶装置は三次元積層型ＮＡＮＤ型フラッシュメモリに限定されてない。平面ＮＡＮＤ型フラッシュメモリであってもよく、３ビット以上のデータを保持可能なメモリセルトランジスタを有する不揮発性メモリにも適用できる。
【０２０５】
更に、上記実施形態における「接続」とは、間に例えばトランジスタあるいは抵抗等、他の何かを介在させて間接的に接続されている状態も含む。
【０２０６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２０７】
１…メモリシステム、２…ホスト機器、１０…入出力回路、１１…ロジック制御回路、１２…ステータスレジスタ、１３…アドレスレジスタ、１４…コマンドレジスタ、１５…シーケンサ、１６…レディ／ビジー回路、１７…電圧発生回路、１８…メモリセルアレイ、１９…ロウデコーダ、２０…センスアンプ、２１…データレジスタ、２２…カラムデコーダ、３０…半導体基板、３１…絶縁層、３２、３３、４１…配線層、３４…ブロック絶縁膜、３５…電荷蓄積層、３６…トンネル絶縁膜、３７…半導体層、３８…コア層、３９…キャップ層、４０…コンタクトプラグ、１００、１００ａ、１００ｂ…ＮＡＮＤ型フラッシュメモリ、２００…コントローラ、２１０…ホストインターフェイス回路、２２０…内蔵メモリ、２３０…ＣＰＵ、２４０…バッファメモリ、２５０…ＮＡＮＤインターフェイス回路、２６０…ＥＣＣ回路、２７０…タイマ。
【図１】
2020047337.tif 000003
【図２】
2020047337.tif 000004
【図３】
2020047337.tif 000005
【図４】
2020047337.tif 000006
【図５】
2020047337.tif 000007
【図６】
2020047337.tif 000008
【図７】
2020047337.tif 000009
【図８】
2020047337.tif 000010
【図９】
2020047337.tif 000011
【図１０】
2020047337.tif 000012
【図１１】
2020047337.tif 000013
【図１２】
2020047337.tif 000014
【図１３】
2020047337.tif 000015
【図１４】
2020047337.tif 000016
【図１５】
2020047337.tif 000017
【図１６】
2020047337.tif 000018
【図１７】
2020047337.tif 000019
【図１８】
2020047337.tif 000020
【図１９】
2020047337.tif 000021
【図２０】
2020047337.tif 000022