(57)【特許請求の範囲】
【請求項１】
複数のメモリセルを備え、前記複数のメモリセルの各々は、第１閾値及び第２閾値のうち１つに設定可能である、メモリセルアレイと、
前記複数のメモリセルに接続されたワード線と、
前記ワード線に電圧を印加してメモリセルのデータを読み出し、第１命令に応答して、第１読み出しシーケンスと第２読み出しシーケンスとを連続して実行するコントローラと  を具備し、
前記第１読み出しシーケンスは、互いに異なる第１乃至第３電圧をそれぞれ用いた第１乃至第３読み出しを含み、
前記第２読み出しシーケンスは、前記第１読み出しシーケンスに基づいて決定されかつ前記第１乃至第３電圧から計算される電圧を用いた第４読み出しを含み、
前記コントローラは、
前記第１読み出しの結果と前記第２読み出しの結果とを比較して第１差分を算出し、
前記第２読み出しの結果と前記第３読み出しの結果とを比較して第２差分を算出し、
前記第１差分と基準値とを比較した結果を第１レジスタに格納し、
前記第２差分と前記基準値とを比較した結果を第２レジスタに格納し、
前記第１及び第２レジスタの情報に基づいて、前記第４読み出しで使用される電圧を決定することを特徴とする不揮発性半導体記憶装置。
【請求項２】
前記第１読み出しシーケンスにおける読み出し対象のビット数は、前記第２読み出しシーケンスにおける読み出し対象のビット数より少ないことを特徴とする請求項１に記載の不揮発性半導体記憶装置。
【請求項３】
前記コントローラは、第２命令に応じて、前記第１及び第２レジスタの情報を出力ピンから外部に出力することを特徴とする請求項１又は２に記載の不揮発性半導体記憶装置。
【請求項４】
前記第１読み出しシーケンスにおいて、前記ワード線に、連続して複数の電圧が印加され、
前記第２読み出しシーケンスにおいて、前記ワード線に、前記複数の電圧の１つが印加されることを特徴とする請求項１乃至３のいずれかに記載の不揮発性半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、不揮発性半導体記憶装置に関する。
【背景技術】
【０００２】
不揮発性半導体記憶装置としてＮＡＮＤ型フラッシュメモリが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７，９４８，８０２号明細書
【特許文献２】米国特許第８，４５１，６６４号明細書
【特許文献３】米国特許第８，４４６，７８７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
実施形態は、性能を向上させることが可能な不揮発性半導体記憶装置を提供する。
【課題を解決するための手段】
【０００５】
実施形態に係る不揮発性半導体記憶装置は、複数のメモリセルを備え、前記複数のメモリセルの各々は、第１閾値及び第２閾値のうち１つに設定可能である、メモリセルアレイと、前記複数のメモリセルに接続されたワード線と、前記ワード線に電圧を印加してメモリセルのデータを読み出し、第１命令に応答して、第１読み出しシーケンスと第２読み出しシーケンスとを連続して実行するコントローラとを具備する。前記第１読み出しシーケンスは、互いに異なる第１乃至第３電圧をそれぞれ用いた第１乃至第３読み出しを含み、前記第２読み出しシーケンスは、前記第１読み出しシーケンスに基づいて決定されかつ前記第１乃至第３電圧から計算される電圧を用いた第４読み出しを含む。
【図面の簡単な説明】
【０００６】
【図１】実施形態に係るメモリシステムのブロック図。
【図２】図１に示したＮＡＮＤ型フラッシュメモリのブロック図。
【図３】図２に示したセルアレイの回路図。
【図４】図２に示したセンスユニットのブロック図。
【図５】図４に示したセンスアンプの回路図。
【図６】メモリセルトランジスタの閾値とデータとの割り付けを説明する図。
【図７】実施形態に係る読み出しレベルを説明する図。
【図８】探索リードにおける読み出しシーケンスを説明する図。
【図９】ステートマシンの動作を説明するフローチャート。
【図１０】ステートマシンの動作を説明するフローチャート。
【図１１】探索リードにおけるキャッシュの操作を説明する図。
【図１２】最適値探索リードによりキャッシュに格納されるデータの一例を説明する図。
【図１３】図１２に示した第１状態から第５状態におけるキャッシュのデータの一例を説明する図。
【図１４】ステートマシン内に配置されるレジスタの回路図。
【図１５】最適値探索リードの読み出し結果の一例を説明する図。
【図１６】最適な読み出しレベルを決める判断テーブルの一例を説明する図。
【図１７】探索リードにおけるコマンドシーケンスを説明する図。
【図１８】探索リードにおける読み出し対象の差異を説明する図。
【図１９】第３変形例に係る探索リードにおけるキャッシュの操作を説明する図。
【図２０】第４変形例に係る探索リードを説明するフローチャート。
【図２１】第４変形例に係る最適値探索リードにおける読み出しレベルを説明する図。
【図２２】第４変形例に係る最適値探索リードを説明するフローチャート。
【図２３】第４変形例に係るキャッシュのデータを説明する図。
【図２４】第４変形例に係るキャッシュのデータの具体例を説明する図。
【図２５】第４変形例を実現するＮＡＮＤ型フラッシュメモリのブロック図。
【発明を実施するための形態】
【０００７】
以下、実施形態について図面を参照して説明する。  
本実施形態に係る半導体記憶装置は、データを電気的に書き換え可能な不揮発性半導体メモリであり、以下の実施形態では、半導体記憶装置としてＮＡＮＤ型フラッシュメモリを例に挙げて説明する。
【０００８】
［１］  実施形態
［１−１］  メモリシステムの構成
図１を用いて、実施形態に係る不揮発性半導体記憶装置を含むメモリシステム１の構成について説明する。メモリシステム１は、１つ又は複数の不揮発性半導体記憶装置（ＮＡＮＤ型フラッシュメモリ）１００、及びメモリコントローラ２００を備える。図１には、２つのＮＡＮＤ型フラッシュメモリ１００−０、１００−１を例示している。
【０００９】
メモリシステム１は、ホスト装置３００が搭載されたマザーボード上にメモリシステム１を構成する複数のチップを実装して構成してもよいし、メモリシステム１を１つのモジュールで実現するシステムＬＳＩ（large-scale integrated circuit）、又はＳｏＣ（system on chip）として構成してもよい。メモリシステム１の例としては、ＳＤＴＭカードのようなメモリカード、ＳＳＤ（solid state drive）、及びｅＭＭＣ（embedded multimedia card）などが挙げられる。
【００１０】
ＮＡＮＤ型フラッシュメモリ１００は、複数のメモリセルを備え、データを不揮発に記憶する。ＮＡＮＤ型フラッシュメモリ１００の構成に関する詳細は後述する。
【００１１】
メモリコントローラ２００は、ホスト装置３００からの命令に応答して、ＮＡＮＤ型フラッシュメモリ１００に対して書き込み（プログラムともいう）、読み出し、及び消去などを命令する。また、メモリコントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００のメモリ空間を管理する。メモリコントローラ２００は、ホストインターフェース回路（Host I/F）２０１、ＣＰＵ（Central Processing unit)２０２、ＲＡＭ（Random Access Memory）２０３、バッファメモリ２０４、ＮＡＮＤインターフェース回路（NAND I/F）２０５、及びＥＣＣ（Error Checking and Correcting）回路２０６などを備える。
【００１２】
ホストインターフェース回路２０１は、コントローラバスを介してホスト装置３００に接続され、ホスト装置３００との間でインターフェース処理を行う。また、ホストインターフェース回路２０１は、ホスト装置３００との間で命令及びデータの送受信を行う。
【００１３】
ＣＰＵ２０２は、メモリコントローラ２００全体の動作を制御する。ＣＰＵ２０２は、例えば、ホスト装置３００から書き込み命令を受けた場合に、それに応答して、ＮＡＮＤインターフェースに基づく書き込み命令をＮＡＮＤ型フラッシュメモリ１００に発行する。読み出し及び消去の際も同様である。また、ＣＰＵ２０２は、ウェアレベリングなど、ＮＡＮＤ型フラッシュメモリ１００を管理するための様々な処理を実行する。
【００１４】
ＲＡＭ２０３は、ＣＰＵ２０２の作業エリアとして使用され、ＮＡＮＤ型フラッシュメモリ１００からロードされたファームウェアや、ＣＰＵ２０２が作成した各種テーブルを格納する。ＲＡＭ２０３は、例えばＤＲＡＭから構成される。バッファメモリ２０４は、ホスト装置３００から送られたデータを一時的に保持するとともに、ＮＡＮＤ型フラッシュメモリ１００から送られたデータを一時的に保持する。
【００１５】
ＥＣＣ回路２０６は、データの書き込み時には、書き込みデータに対してエラー訂正符号を生成し、このエラー訂正符号を書き込みデータに付加してＮＡＮＤインターフェース回路２０５に送る。また、ＥＣＣ回路２０６は、データの読み出し時には、読み出しデータに対して、読み出しデータに含まれるエラー訂正符号を用いてエラー検出及びエラー訂正を行う。なお、ＥＣＣ回路２０６は、ＮＡＮＤインターフェース回路２０５内に設けるようにしてもよい。
【００１６】
ＮＡＮＤインターフェース回路２０５は、ＮＡＮＤバスを介してＮＡＮＤ型フラッシュメモリ１００と接続され、ＮＡＮＤ型フラッシュメモリ１００との間でインターフェース処理を行う。また、ＮＡＮＤインターフェース回路２０５は、ＮＡＮＤ型フラッシュメモリ１００との間で命令及びデータの送受信を行う。
【００１７】
ＮＡＮＤ型フラッシュメモリ１００は、制御信号線群及び入出力バス等を介してメモリコントローラ２００に接続される。ＮＡＮＤ型フラッシュメモリ１００は、メモリコントローラ２００が発行するコマンド、アドレス、及び書き込みデータを受け取り、また、メモリコントローラ２００へ読み出しデータを送るように構成される。
【００１８】
メモリコントローラ２００とＮＡＮＤ型フラッシュメモリ１００との間の信号には、チップイネーブル信号ＣＥｎ、ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトプロテクト信号ＷＰｎ、入出力信号ＩＯ＜７：０＞、及びレディー／ビジー信号ＲＢｎが含まれる。信号名に付記された“ｎ”は、アクティブ・ローを示す。ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトプロテクト信号ＷＰｎ、及び入出力信号ＩＯ＜７：０＞は、複数のＮＡＮＤ型フラッシュメモリ１００に共通であり、一方、チップイネーブル信号ＣＥｎ、及びレディー／ビジー信号ＲＢｎは、ＮＡＮＤ型フラッシュメモリ１００に個別に設けられる。この信号形態と接続方法については、必要に応じて適切に変更される。
【００１９】
［１−１−１］  ＮＡＮＤ型フラッシュメモリ１００の構成
図２を用いて、ＮＡＮＤ型フラッシュメモリ１００の構成について説明する。ＮＡＮＤ型フラッシュメモリ１００の内部ブロック構造は、大きく分けてコア部１０とそれ以外の周辺回路２０とに分けられる。
【００２０】
コア部１０は、複数のメモリセルを有するセルアレイ（メモリセルアレイ）１１、ロウデコーダ１２、及びセンスユニット１３を備える。
【００２１】
ロウデコーダ１２は、セルアレイ１１をブロック単位で選択するとともに、ワード線に所望の電圧を印加する。すなわち、ロウデコーダ１２は、図示せぬ電圧生成回路から動作に応じた種々の電圧を受け、複数のワード線に種々の電圧を印加する。
【００２２】
センスユニット１３は、データの読み出し時には、メモリセルからビット線に読み出されたデータを検知及び増幅する。また、センスユニット１３は、データの書き込み時には、書き込みデータをメモリセルに転送する。セルアレイ１１へのデータの読み出し及び書き込みは、複数のメモリセルを単位として行われ、この単位がページとなる。センスユニット１３の具体的な構成については後述する。
【００２３】
周辺回路２０は、入力バッファ２１、２２、出力バッファ２３、アドレスバッファ２４、コマンドデコーダ２５、データバッファ２６、選択回路２７、選択回路２８、ステートマシン（制御回路）２９、メモリセル制御レジスタ３０、出力バッファ３１、レジスタ回路３２、及びフェイル数カウント回路３３を備える。
【００２４】
入力バッファ２１は、チップイネーブル信号ＣＥｎ、ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、及びライトプロテクト信号ＷＰｎを受ける複数の端子（ピン）に接続される。入力バッファ２１は、複数のピンの論理状態に応じて、コマンド入力、アドレス入力、データ入力、書き込み禁止状態、チップ選択／非選択状態を認識するとともに、コマンドデコーダ２５、入力バッファ２２、及び出力バッファ２３などにその状態を通知する。
【００２５】
入力バッファ２２は、双方向バスＩＯ＜７：０＞に接続される。入力バッファ２２は、入力バッファ２１の指示に応じて、メモリコントローラ２００から双方向バスＩＯ＜７：０＞を介して入力されたデータをＤＩＮとして出力する。
【００２６】
出力バッファ２３は、選択回路２７の出力を受け、読み出しデータを双方向バスＩＯ＜７：０＞に所定タイミングで出力する。
【００２７】
アドレスバッファ２４は、データ信号ＤＩＮに含まれるアドレスデータを入力バッファ２２から受けるとともに、このアドレスデータを一時的に保持する。アドレスデータは、入力順序や入力ビット位置に応じて、ブロックアドレスＢＬＫａ、ストリングアドレスＳＴＲａ、ワード線アドレスＷＬａ、及びカラムアドレスＣＯＬａに分離される。
【００２８】
コマンドデコーダ２５は、入力バッファ２１の指示に応じて、入力バッファ２２からデータ信号ＤＩＮを受け、データ信号ＤＩＮに含まれるコマンド信号を出力する。コマンドデコーダ２５から出力されるコマンド信号には、読み出しを指示するコマンド信号CMD_READ、後述する探索リードを指示するコマンド信号CMD_TRACK、探索リード結果を装置外部に出力することを指示する信号CMD_TRACKRESULTが含まれる。なお、コマンドデコーダ２５は、前述したコマンド信号以外、例えば書き込みに関するコマンド信号なども出力する。
【００２９】
データバッファ２６は、入力バッファ２１の指示に応じて、入力バッファ２２からデータ信号ＤＩＮを受け、データ信号ＤＩＮに含まれる書き込みデータを一時的に保持する。データバッファ２６は、選択回路２８を経由してセンスユニット１３にデータを転送する。
【００３０】
選択回路２７は、信号CMD_TRACKRESULTの状態に応じて、センスユニット１３からの読み出しデータ、及びステートマシン２９からの信号ＰＦのいずれかを選択し、出力バッファ２３へ転送する。
【００３１】
選択回路２８は、データバッファ２６からセンスユニット１３へデータを転送するか、センスユニット１３から選択回路２７へデータを転送するかを決める方向選択回路である。
【００３２】
ステートマシン２９は、ＮＡＮＤ型フラッシュメモリ１００の読み出し、書き込み、及び消去等の動作を司る。本実施形態では、ステートマシン２９は、コマンドデコーダ２５の出力を受け、主にメモリセル制御レジスタ３０を制御する。具体的には、ステートマシン２９は、メモリセルの適切なアドレス選択を行う、及び所望の電圧を所望のノードに印加する、などの動作を行う。また、ステートマシン２９は、レジスタ回路３２の適切なレジスタの選択と、レジスタ回路３２からの出力F_NFの計算ならびに出力とを行う。
【００３３】
さらに、ステートマシン２９は、その内部に後述するレジスタPF_1ST、PF_2ND、PF_3RD、PF_4THを備える。ステートマシン２９が備えるレジスタの数は、実施形態に応じて任意に設定可能である。レジスタPF_1ST、PF_2ND、PF_3RD、PF_4THのデータは、適切な選択手段により、信号ＰＦとして選択回路２７へ出力される。また、レジスタPF_1ST、PF_2ND、PF_3RD、PF_4THは、フェイル数カウント回路３３の出力信号PASSの情報を保持する。具体的な保持方法は後述する。
【００３４】
メモリセル制御レジスタ３０は、アドレスバッファ２４からのアドレスＢＬＫａ、ＳＴＲａ、ＷＬａ、ＣＯＬａと、ステートマシン２９の動作指示信号とにより、メモリセルの書き込み、読み出し、及び消去の詳細動作を制御する信号を出力する。メモリセル制御レジスタ３０から出力される信号には、ブロックアドレスBLKADD、ストリングアドレスSTRADD、ワード線アドレスWLADD、及びカラムアドレスCOLADDが含まれる。
【００３５】
ブロックアドレスBLKADDは、選択ブロックを指示する。ストリングアドレスSTRADDは、メモリセルのブロックを構成する複数のストリングのうち１つを選択するための選択ゲート信号の電圧を指示する。ワード線アドレスWLADDは、選択ワード線に選択電圧を、非選択ワード線に非選択電圧を印加することを指示する。カラムアドレスCOLADDは、書き込みや読み出し時のキャッシュ位置を指示する。
【００３６】
出力バッファ３１は、ステートマシン２９が動作状態であるか否かを通知する信号ＲＢを受け、ＮＡＮＤ型フラッシュメモリ１００に設けられたレディー／ビジーピンＲＢｎにその状態を伝える。
【００３７】
レジスタ回路３２は、図示せぬが公知の初期化シーケンスにおいてセルアレイ１１のヒューズ領域（ヒューズロム）から読み出したヒューズデータを格納する。本実施形態では、レジスタ回路３２は、読み出しにかかるワード線電圧の基準電圧（後述するＡＲ、ＢＲ、ＣＲに相当する電圧）を指示するデータを保持する。
【００３８】
また、レジスタ回路３２は、別途コマンドにより、ＮＡＮＤ型フラッシュメモリ１００の外部より与えられた電圧コードを保持する機構を持ち、この電圧コードが双方向バスＹＩＯを介して入力されるように構成される。また、レジスタ回路３２は、ステートマシン２９の指示により、複数のフェイルビット基準値の中から適切なフェイルビット基準値をフェイルビット基準値F_NFとして出力する。この適切なフェイルビット基準値を選ぶために、ステートマシン２９はNFSELという信号をレジスタ回路３２に送る。
【００３９】
フェイル数カウント回路３３は、センスユニット１３に含まれるキャッシュに格納された読み出しデータを監視し、所定タイミングで期待値と一致しないビット数やバイト数を計数する。そして、フェイル数カウント回路３３は、上記計数結果とレジスタ回路３２の出力するフェイルビット基準値F_NFとを比較する。フェイル数カウント回路３３は、比較の結果、基準値以下であれば信号PASSをハイレベルに、基準値を超える場合はPASSをローレベルにするなどしてステートマシン２９にその情報を通知する。
【００４０】
［１−１−２］  セルアレイ１１の構成
図３を用いて、セルアレイ１１の構成について説明する。セルアレイ１１は、複数のブロックＢＬＫを備える。図３には、セルアレイ１１に含まれる１つのブロックＢＬＫの回路図を示している。
【００４１】
１つのブロックＢＬＫは、複数のストリングユニットＳＵを備え、複数のストリングユニットＳＵの各々は、複数のＮＡＮＤストリング１４を備える。図３では、一例として、４個のストリングユニットＳＵ０〜ＳＵ３を示している。１つのブロックＢＬＫ内のストリングユニットＳＵの数は任意に設定可能である。
【００４２】
複数のＮＡＮＤストリング１４の各々は、複数のメモリセルトランジスタＭＴ、及び２個の選択トランジスタＳＴ１、ＳＴ２を備える。本明細書では、メモリセルトランジスタをメモリセル又はセルと呼ぶ場合もある。図３は、ＮＡＮＤストリング１４が８個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ７）を備える構成例を示しているが、ＮＡＮＤストリング１４が備えるメモリセルトランジスタＭＴの数は任意に設定可能である。メモリセルトランジスタＭＴは、制御ゲートと電荷蓄積層とを含む積層ゲートを備え、データを不揮発に記憶する。複数のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１、ＳＴ２の間に、それらの電流経路が直列接続されるようにして配置される。この直列接続の一端側のメモリセルトランジスタＭＴの電流経路は選択トランジスタＳＴ１の電流経路の一端に接続され、他端側のメモリセルトランジスタＭＴの電流経路は選択トランジスタＳＴ２の電流経路の一端に接続される。
【００４３】
ストリングユニットＳＵ０に含まれる複数の選択トランジスタＳＴ１のゲートは、選択ゲート線ＳＧＤ０に共通接続され、同様に、ストリングユニットＳＵ１〜ＳＵ３には、選択ゲート線ＳＧＤ１〜ＳＧＤ３が接続される。同一のブロックＢＬＫ内にある複数の選択トランジスタＳＴ２のゲートは、同一の選択ゲート線ＳＧＳに共通接続される。なお、各ストリングユニットＳＵに含まれる選択トランジスタＳＴ２は、選択トランジスタＳＴ１と同様に、別々の選択ゲート線ＳＧＳ０〜ＳＧＳ３に接続されていてもよい。同一のブロックＢＬＫ内にあるメモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲートはそれぞれ、ワード線ＷＬ０〜ＷＬ７に接続される。
【００４４】
なお、ＮＡＮＤストリング１４は、ダミーセルトランジスタを備えていてもよい。ダミーセルトランジスタは、選択トランジスタＳＴ１とメモリセルトランジスタとの間、及び選択トランジスタＳＴ２とメモリセルトランジスタとの間に直列接続される。ダミーセルトランジスタのゲートには、ダミーワード線が接続される。ダミーセルトランジスタの構造は、メモリセルトランジスタと同じである。ダミーセルトランジスタは、データを記憶するためのものではなく、書き込みパルス印加動作や消去パルス印加動作中に、メモリセルトランジスタや選択トランジスタが受けるディスターブを緩和する機能を有する。
【００４５】
セルアレイ１１内でマトリクス状に配置されたＮＡＮＤストリング１４のうち、同一列にある複数のＮＡＮＤストリング１４の選択トランジスタＳＴ１の電流経路の他端は、ビット線ＢＬ０〜ＢＬ（ｍ−１）のいずれかに共通接続される。“ｍ”は１以上の整数である。すなわち、１本のビット線ＢＬは、複数のブロックＢＬＫ間で同一列にあるＮＡＮＤストリング１４を共通に接続する。同一のブロックＢＬＫに含まれる複数の選択トランジスタＳＴ２の電流経路の他端は、ソース線ＳＬに共通に接続される。ソース線ＳＬは、例えば複数のブロック間でＮＡＮＤストリング１４を共通に接続する。
【００４６】
同一のブロックＢＬＫ内にある複数のメモリセルトランジスタＭＴのデータは、一括して消去される。データの読み出し及び書き込みは、１つのブロックＢＬＫに配設された１本のワード線ＷＬに共通接続された複数のメモリセルトランジスタＭＴに対して、一括して行われる。このデータ単位をページと呼ぶ。
【００４７】
メモリセルアレイの構成については、例えば、“三次元積層不揮発性半導体メモリ”という２００９年３月１９日に出願された米国特許出願１２／４０７，４０３号に記載されている。また、“三次元積層不揮発性半導体メモリ”という２００９年３月１８日に出願された米国特許出願１２／４０６，５２４号、“不揮発性半導体記憶装置及びその製造方法”という２０１０年３月２５日に出願された米国特許出願１２／６７９，９９１号“半導体メモリ及びその製造方法”という２００９年３月２３日に出願された米国特許出願１２／５３２，０３０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００４８】
またデータの消去は、ブロックＢＬＫ単位、またはブロックＢＬＫよりも小さい単位で行うことができる。消去方法に関しては、例えば“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE”という２０１１年９月１８日に出願された米国特許出願１３／２３５，３８９号に記載されている。また、“NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE”という２０１０年１月２７日に出願された米国特許出願１２／６９４，６９０号に記載されている。更に、“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE AND DATA ERASE METHOD THEREOF”という２０１２年５月３０日に出願された米国特許出願１３／４８３，６１０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００４９】
［１−１−３］  センスユニット１３の構成
次に、センスユニット１３の構成について説明する。図４は、センスユニット１３のブロック図である。センスユニット１３は、センスアンプ（Ｓ／Ａ）４０、３つのキャッシュ（データキャッシュ、データラッチ回路ともいう）ＡＤＬ、ＢＤＬ、ＸＤＬ、及び記憶ノードＴＡＧを備える。記憶ノードＴＡＧは、例えばラッチ回路で構成される。
【００５０】
キャッシュＡＤＬ、ＢＤＬ、ＸＤＬ、及び記憶ノードＴＡＧは、一時的にデータを格納することが可能である。キャッシュＸＤＬは、ＩＯパッドに最も近い位置に配置されるとともに、双方向バスＹＩＯに接続される。キャッシュＸＤＬは、内部バスＬＢＵＳを介して、センスアンプ４０、キャッシュＡＤＬ、ＢＤＬ、及び記憶ノードＴＡＧに接続される。キャッシュＸＤＬに格納された書き込みデータ等は、内部バスＬＢＵＳを介して、キャッシュＡＤＬ、ＢＤＬ、及び記憶ノードＴＡＧにコピー及び転送することができる。キャッシュＡＤＬ、ＢＤＬの物理的位置に制約はなく、適宜配置してよい。記憶ノードＴＡＧは、フェイル数カウント回路３３からアクセス可能なように配置される。
【００５１】
センスアンプ４０は、読み出し時にその結果を保持するためのキャッシュ（センスアンプキャッシュ）ＳＤＬを備える。キャッシュＳＤＬに格納された読み出しデータ等は、内部バスＬＢＵＳを介して、キャッシュＡＤＬ、ＢＤＬ、及び記憶ノードＴＡＧにコピー及び転送することができる。
【００５２】
センスユニット１３は、メモリセルにビット線ＢＬを介して接続され、一括して読み出すことが可能な単位（例えば３２キロバイト）分だけの容量を持つ。具体的には、３２キロバイトを一括して読み出せる場合、ビット線ＢＬは３２７６８バイト、すなわち２６２１４４ビット分を持ち、キャッシュＳＤＬ、ＡＤＬ、ＢＤＬ、ＸＤＬの各々も同数分配置される。
【００５３】
［１−１−４］  センスアンプ４０の構成
次に、センスアンプ４０の構成について説明する。図５は、センスアンプ４０の回路図である。
【００５４】
センスアンプ４０は、複数のＮチャネルＭＯＳトランジスタ（以下、ＮＭＯＳと称す）４１〜４７と、複数のＰチャネルＭＯＳトランジスタ（以下、ＰＭＯＳと称す）４８、４９と、トランスファーゲート５０、５１、キャッシュ（データラッチ回路）ＳＤＬ、及びキャパシタ５３とを備える。キャッシュＳＤＬは、例えばクロックドインバータ回路５２ａ、５２ｂにより構成される。
【００５５】
ＮＭＯＳ４１の電流経路の一端は、電源電圧Ｖｄｄが供給されるノードに接続される。ＮＭＯＳ４１の電流経路の他端は、トランスファーゲート５０、ＮＭＯＳ４４、トランスファーゲート５１を介して接地される（接地電圧Ｖｓｓが供給されるノードに接続される）。ＮＭＯＳ４４とトランスファーゲート５１との接続ノードには、ＮＭＯＳ４５の電流経路の一端が接続される。このＮＭＯＳ４５の他端は、セルアレイ１１に配置されたビット線ＢＬに接続される。ＮＭＯＳ４１には、ＮＭＯＳ４２、４３の直列回路が並列接続される。
【００５６】
ＰＭＯＳ４８の電流経路の一端は、電源電圧Ｖｄｄが供給されるノードに接続される。ＰＭＯＳ４８の電流経路の他端は、ＰＭＯＳ４９を介してキャッシュＳＤＬを構成するインバータ回路５２ａの入力端子に接続されるとともに、ＮＭＯＳ４６を介して接地される。このインバータ回路５２ａとクロスカップルされたクロックドインバータ回路５２ｂの入力端子は、ＮＭＯＳ４７を介して内部バスＬＢＵＳに接続される。ＰＭＯＳ４９のゲートは、センスノードＳＥＮを介して、ＮＭＯＳ４２とＮＭＯＳ４３との接続ノードと、キャパシタ５３の一端とに接続される。キャパシタ５３の他端には、クロック信号ＣＬＫが供給される。
【００５７】
ステートマシン２９は、以下に述べるように、センスアンプ４０内に各種の制御信号（例えば、信号ＢＬＸ、ＢＬＣ、ＢＬＳ、ＨＬＬ、ＸＸＬ、ＳＴＢ、ＲＳＴ、ＮＣＯ）を供給する。
【００５８】
ＮＭＯＳ４１のゲートには、信号ＢＬＸが供給される。トランスファーゲート５０を構成するＮＭＯＳのゲートには、キャッシュＳＤＬを構成するインバータ回路５２ａの出力端子の信号ＬＡＴが供給される。トランスファーゲート５０を構成するＰＭＯＳのゲートには、インバータ回路５２ａの入力端子の信号ＩＮＶが供給される。ＮＭＯＳ４４のゲートには、信号ＢＬＣが供給される。ＮＭＯＳ４５のゲートには、信号ＢＬＳが供給される。
【００５９】
トランスファーゲート５１を構成するＮＭＯＳのゲートには、信号ＩＮＶが供給される。トランスファーゲート５１を構成するＰＭＯＳのゲートには、信号ＬＡＴが供給される。
【００６０】
ＮＭＯＳ４２のゲートには、信号ＨＬＬが供給される。ＮＭＯＳ４３のゲートには、信号ＸＸＬが供給される。ＰＭＯＳ４８のゲートには、信号ＳＴＢが供給される。ＮＭＯＳ４６のゲートには、リセット信号ＲＳＴが供給される。ＮＭＯＳ４７のゲートには、信号ＮＣＯが供給される。
【００６１】
次に、上記センスアンプ４０における書き込み動作、読み出し動作、及び書き込みベリファイ動作について概略的に説明する。
【００６２】
（書き込み動作）
メモリセルにデータを書き込む場合、ステートマシン２９は、以下のような制御信号を生成する。まず、ステートマシン２９は、信号ＳＴＢをハイレベル（以下、Ｈレベルと記す）、リセット信号ＲＳＴを一旦、Ｈレベルとして、キャッシュＳＤＬをリセットする。これにより、キャッシュＳＤＬの信号ＬＡＴがＨレベル、信号ＩＮＶがローレベル（以下、Ｌレベルと記す）となる。
【００６３】
この後、ステートマシン２９は、信号ＮＣＯをＨレベルとする。これにより、内部バスＬＢＵＳからキャッシュＳＤＬにデータが取り込まれる。このデータが書き込みを示すＬレベル（“０”）である場合、信号ＬＡＴがＬレベル、信号ＩＮＶがＨレベルとなる。また、データが非書き込みを示すＨレベル（“１”）である場合、キャッシュＳＤＬのデータは変わらず、信号ＬＡＴがＨレベル、信号ＩＮＶがＬレベルのまま保持される。
【００６４】
続いて、ステートマシン２９は、信号ＢＬＸ、ＢＬＣ、ＢＬＳをＨレベルとする。すると、書き込みの場合、すなわちキャッシュＳＤＬの信号ＬＡＴがＬレベル、信号ＩＮＶがＨレベルの場合、トランスファーゲート５０がオフ、トランスファーゲート５１がオンしてビット線ＢＬは接地電圧Ｖｓｓとなる。この状態において、ワード線がプログラム電圧Ｖｐｇｍとなると、メモリセルにデータが書き込まれる。
【００６５】
一方、非書き込みの場合、すなわちキャッシュＳＤＬの信号ＬＡＴがＨレベル、信号ＩＮＶがＬレベルの場合、トランスファーゲート５０がオン、トランスファーゲート５１がオフとなるため、ビット線ＢＬは電源電圧Ｖｄｄに充電される。ここで、ワード線がプログラム電圧Ｖｐｇｍとなった場合、メモリセルのチャネルが高い電位にブーストされるため、メモリセルにデータが書き込まれない。
【００６６】
（読み出し動作、書き込みベリファイ動作）
メモリセルからデータを読み出す場合、ステートマシン２９は、以下のような制御信号を生成する。まず、ステートマシン２９は、リセット信号ＲＳＴを一旦、Ｈレベルとして、キャッシュＳＤＬをリセットする。これにより、キャッシュＳＤＬの信号ＬＡＴがＨレベル、信号ＩＮＶがＬレベルとなる。
【００６７】
この後、ステートマシン２９は、信号ＢＬＳ、ＢＬＣ、ＢＬＸ、ＨＬＬ、ＸＸＬを所定の電圧とする。これにより、ビット線ＢＬが充電されるとともに、キャパシタ５３のノードＳＥＮが電源電圧Ｖｄｄに充電される。ここで、メモリセルの閾値電圧が読み出しレベルより高い場合、メモリセルはオフ状態であり、ビット線ＢＬはＨレベルに保持される。つまり、ノードＳＥＮはＨレベルに保持される。また、メモリセルの閾値電圧が読み出しレベルより低い場合、メモリセルはオン状態となり、ビット線ＢＬの電荷が放電される。このため、ビット線ＢＬはＬレベルとなる。これにより、ノードＳＥＮもＬレベルとなる。
【００６８】
続いて、ステートマシン２９は、信号ＳＴＢをＬレベルとする。すると、メモリセルがオンしている場合、ノードＳＥＮはＬレベルであるため、ＰＭＯＳ４９がオンする。これにより、キャッシュＳＤＬの信号ＩＮＶがＨレベル、信号ＬＡＴがＬレベルとなる。一方、メモリセルがオフしている場合、ノードＳＥＮはＨレベルであるため、ＰＭＯＳ４９がオフする。これにより、キャッシュＳＤＬの信号ＩＮＶがＬレベル、信号ＬＡＴがＨレベルに保持される。このように、信号ＳＴＢをＬレベルにすることでセンス動作が行われ、メモリセルからデータを読み出すことができる。
【００６９】
この後、ステートマシン２９は、信号ＮＣＯをＨレベルとする。すると、ＮＭＯＳ４７がオンし、キャッシュＳＤＬのデータが内部バスＬＢＵＳへ転送される。
【００７０】
また、書き込み動作後、メモリセルの閾値電圧を検証する書き込みベリファイ動作が行われる。この書き込みベリファイ動作は、上記読み出し動作と同様である。
【００７１】
［１−１−５］  メモリセルトランジスタの閾値
次に、メモリセルトランジスタの閾値について説明する。図６は、メモリセルトランジスタの閾値とデータとの割り付けを説明する図である。図６の横軸がメモリセルトランジスタの閾値（閾値電圧）、図６の縦軸がメモリセルトランジスタの数である。メモリセルトランジスタは、２ビットデータ（４値）を格納可能である。
【００７２】
ＬＳＢ（least significant bit）をLower、ＭＳＢ（most significant bit）をUpperと表記している。第１ページとしての下位ページ（Lower Page）と、第２ページとしての上位ページ（Upper Page）との２ビットデータがメモリセルに書き込まれることにより、メモリセルは、“００”、“１０”、“００”、“０１”のいずれかを記憶可能である。
【００７３】
メモリセルの閾値電圧の低い方から、“Ｅ”レベル（消去レベル）、“Ａ”レベル、“Ｂ”レベル、“Ｃ”レベルと呼ぶ。“Ｅ”レベル、“Ａ”レベル、“Ｂ”レベル、及び“Ｃ”レベルがそれぞれ、データ“１１”、“１０”、“００”、及び“０１”に対応する。なお、本実施形態の適用としては、４値格納のメモリセルに限るものではなく、２値、８値、１６値などにも同様に適用できる。
【００７４】
メモリセルにデータを格納する前は、図６（ａ）の閾値状態にある。ここでは消去レベル（“Ｅ”レベル）にメモリセルが分布している。
【００７５】
２ビットデータを書き込み後のメモリセルの閾値分布は、図６（ｂ）のようになる。下位ページは、読み出しレベルＢＲ３をワード線に印加して読み出すことができ、上位ページは、読み出しレベルＡＲ３と読み出しレベルＣＲ３とをワード線に印加して読み出すことができる。この読み出しレベルＡＲ３、ＢＲ３、ＣＲ３は、図２に示すレジスタ回路３２内に配置されたレジスタに保持され、読み出し時に適切なレジスタの値を参照して、メモリセルに必要な電圧が印加される。
【００７６】
しかしながら、ＮＡＮＤ型フラッシュメモリ１００は、データを不揮発に保持できるため、書き込み後に長期にわたってデータを保存し、その後、読み出す利用形態がある。このとき、長期保存の過程でメモリセルの電荷蓄積層に蓄えられた電荷が一部消失し、その結果、閾値分布の変動がみられる場合がある。例えば図６（ｃ）のような形態である。
【００７７】
この場合、前述した読み出しレベルＡＲ３、ＢＲ３、ＣＲ３で読み出した場合は誤読み出しとなってしまうため、適切な読み出しレベルＡＲ３-ΔA、ＢＲ３-ΔB、ＣＲ３-ΔCで読み出す必要がある。本実施形態では、この点を鑑みて解決手段を開示している。
【００７８】
［１−２］  動作
図７は、複数の読み出しレベルの一例を説明する図である。ここでは、図６（ｃ）の状態、すなわちデータの長期保存により閾値分布が変動し、初期の読み出しレベルＡＲ、ＢＲ、ＣＲではデータを正しく読めない例を示す。閾値分布の変動はその閾値電圧により異なるが、本実施形態ではすべての分布が閾値の低い方、つまり“Ｅ”レベル方向に向かったダウンシフトが起きているものと仮定する。メモリセル構造や膜組成によってシフト方向は異なることが予想されるが、以下に述べる形態の応用で実現できる。
【００７９】
図７に示した（Ａ５）のＡＲ３、及び（Ｃ６）のＣＲ３はそれぞれ、レジスタ回路３２に格納されている“Ａ”分布、“Ｃ”分布の読み出しレベルである。長期保存で閾値分布の変動がなければこのレベルで読み出しを行うことが可能である。
【００８０】
本実施形態では、閾値のダウンシフトが起きているので、“Ａ”分布では、ＡＲ３レベルに対して相対的に低い４つの読み出しレベル（Ａ１）、（Ａ２）、（Ａ３）、（Ａ４）と本来の読み出しレベル（Ａ５）で読み出しを実施し、“Ｃ”分布では、ＣＲ３レベルに対して相対的に低い５つの読み出しレベル（Ｃ１）、（Ｃ２）、（Ｃ３）、（Ｃ４）、（Ｃ５）と本来の読み出しレベル（Ｃ６）とで読み出しを実施する。
【００８１】
なお、本来の読み出しレベル（Ａ５）、（Ｃ６）を実施しているが、このレベルでの読み出しが不要の場合は省略してもよい。省略せずに、“Ａ”分布に対して相対的に低い５レベル、“Ｃ”分布に対して相対的に低い６レベルの読み出しであってもよい。また、読み出し回数は、“Ａ”レベル、“Ｃ”レベルに対してそれぞれ５回、６回であるが、これは任意で、必要回数を実現できるよう回路を構成すればよい。
【００８２】
“Ａ”分布の各回数における読み出しレベル（選択ワード線電圧）は以下で計算される。
（Ａ１）：ＡＲ３−A_DELTA×４＝ＡＲ３−ΔＡ１
（Ａ２）：ＡＲ３−A_DELTA×３＝ＡＲ３−ΔＡ２
（Ａ３）：ＡＲ３−A_DELTA×２＝ＡＲ３−ΔＡ３
（Ａ４）：ＡＲ３−A_DELTA×１＝ＡＲ３−ΔＡ４
（Ａ５）：ＡＲ３
【００８３】
“Ｃ”分布の各回数における読み出しレベル（選択ワード線電圧）は以下で計算される。
（Ｃ１）：ＣＲ３−C_DELTA×５＝ＣＲ３−ΔＣ１
（Ｃ２）：ＣＲ３−C_DELTA×４＝ＣＲ３−ΔＣ２
（Ｃ３）：ＣＲ３−C_DELTA×３＝ＣＲ３−ΔＣ３
（Ｃ４）：ＣＲ３−C_DELTA×２＝ＣＲ３−ΔＣ４
（Ｃ５）：ＣＲ３−C_DELTA×１＝ＣＲ３−ΔＣ５
（Ｃ６）：ＣＲ３
【００８４】
（Ａ１）リードから（Ａ５）リードを“Ａ”レベル最適値探索リード、（Ｃ１）リードから（Ｃ６）リードを“Ｃ”レベル最適値探索リードと呼ぶ。（Ａ１）リードから（Ａ５）リードと、（Ｃ１）リードから（Ｃ６）リードとの全体を単に最適値探索リードと呼ぶ。（Ａ１）リードから（Ａ５）リードを経て最適と判定された読み出しレベルでの“Ａ”レベル読み出しと、（Ｃ１）リードから（Ｃ６）リードを経て最適と判定された読み出しレベルでの“Ｃ”レベル読み出しとを総称して探索リードと呼ぶ。（Ａ１）から（Ａ５）を経て最適と判定された読み出しレベルでの読み出しを“Ａ”レベル最適値リード、（Ｃ１）から（Ｃ６）を経て最適と判定された読み出しレベルでの読み出しを“Ｃ”レベル最適値リードと呼ぶ。
【００８５】
A_DELTAは、“Ａ”レベル最適値探索リードの各差分を与える変数、C_DELTAは、“Ｃ”レベル最適値探索リードの各差分を与える変数で、これらの値は図２のレジスタ回路３２に格納される。A_DELTA及びC_DELTAは、後述するように、ＮＡＮＤ型フラッシュメモリ１００の外部から任意に指定できるように構成するのが望ましい。もちろん、あらかじめ回路で決めた値、あるいは公知のヒューズロムにその値を格納する形態であってもよい。
【００８６】
なお、以下の説明は、“Ｂ”分布の読み出し動作にも同様に適用できる。
【００８７】
［１−２−１］  最適値探索リード及び最適値リード
図８は、最適値探索リード及び最適値リードを含む読み出しシーケンスを説明する図である。図８の横軸は時刻を表す。図８に示すＲＢｎは、ＮＡＮＤ型フラッシュメモリ１００の出力ピン（レディー／ビジーピン）ＲＢｎである。図８に示すＳＴＢは、図５で説明したように、データを読み出す際に使用される信号である。
【００８８】
時刻ｔ１までに、探索リードを実行するための実行コマンド、アドレスがメモリコントローラ２００からＮＡＮＤ型フラッシュメモリ１００に入力される。ＮＡＮＤ型フラッシュメモリ１００は、メモリコントローラ２００から実行コマンドを受けると、動作状態、つまりビジー状態になったことを通知するため、レディー／ビジーピンＲＢｎをローレベルに変化させる。この動作に伴い、図２を参照して、信号CMD_TRACKがハイレベル、信号CMD_READがハイレベルに変化し、探索リードが開始されたことをステートマシン２９は認識する。なお、探索リードを実行せず、単一のＡＲ３レベル、単一のＣＲ３レベルで読み出す場合は、信号CMD_TRACKがローレベル、信号CMD_READがハイレベルとなることで、探索リードと区別する。
【００８９】
時刻ｔ１では、装置内部で必要な電圧生成が始まり、（Ａ１）リードでは必要なワード線電圧が計算されて選択ワード線に印加される。その結果は後述する方法で、センスユニット１３の所定キャッシュに所定方法で格納される。
【００９０】
時刻ｔ２では、（Ａ１）リードとは異なる読み出しレベルで（Ａ２）リードが実行される。その結果は、時刻ｔ１からの読み出し同様、所定キャッシュに所定方法で格納される。以下、時刻ｔ３、時刻ｔ４、時刻ｔ５においてそれぞれ（Ａ３）リード、（Ａ４）リード、（Ａ５）リードを順次実行して“Ａ”レベル最適値探索リードを終了する。
【００９１】
時刻ｔ６では、（Ａ１）リードから（Ａ５）リードの読み出し結果から、“Ａ”レベル最適値リードで使用される最適な読み出しレベルを計算及び選択する。
【００９２】
時刻ｔ７では、“Ａ”レベル最適値リードが実行される。すなわち、前記計算した最適値にて読み出しを実行し、所定キャッシュに所定方法でその結果を格納する。
【００９３】
時刻t8では、“Ｃ”レベル最適値探索リードを開始する。具体的には、（Ｃ１）リードに必要なワード線電圧が計算されて選択ワード線に印加される。結果の格納方法は“Ａ”レベルの場合と同様である。以下、時刻ｔ９、ｔ１０、ｔ１１、ｔ１２、ｔ１３でも同様の動作を繰り返す。
【００９４】
時刻ｔ１４では、（Ｃ１）リードから（Ｃ６）リードの読み出し結果から“Ｃ”レベル最適値リードで使用される最適なワード線電圧を計算及び選択する。
【００９５】
時刻ｔ１５では、“Ｃ”レベル最適値リードが実行される。すなわち、前記計算した最適値にて読み出しを実行し、所定キャッシュに所定方法でその結果を格納する。格納した結果は、先の“Ａ”レベル最適値リードの結果とともに必要な演算を行い、キャッシュＸＤＬにその結果を格納し、装置外部へのデータ出力に備える。
【００９６】
読み出しの終了した時刻ｔ１６では、ステートマシン２９は、既知の方法にてワード線を放電するなどの動作を行う。時刻ｔ１７では、ステートマシン２９は、レディー／ビジーピンＲＢｎをハイレベルにし、読み出しが完了したことをメモリコントローラ２００へ通知する。その後、ステートマシン２９は、データを所定の方法で出力する。読み出しに必要な選択ワード線電圧の計算やメモリセルの電圧印加等の制御は主にステートマシン２９が実施し、その指示を受けたメモリセル制御レジスタ３０も協調して実施する。
【００９７】
次に、ステートマシン２９が制御する動作フローについて説明する。図９及び図１０は、ステートマシン２９の動作を説明するフローチャートである。
【００９８】
ステートマシン２９は、（Ａ１）リードを実行する（ステップＳ１０１）。ステップＳ１０１は、図８における時刻ｔ１〜ｔ２間の動作に対応する。
【００９９】
続いて、ステートマシン２９は、（Ａ２）リードを実行する（ステップＳ１０２）。ステップＳ１０２は、図８における時刻ｔ２〜ｔ３間の動作に対応する。
【０１００】
続いて、ステートマシン２９は、（Ａ３）リードを実行する（ステップＳ１０３）。ステップＳ１０３は、図８における時刻ｔ３〜ｔ４間の動作に対応する。さらに、ステップＳ１０３において、ステートマシン２９は、ステップＳ１０１及びステップＳ１０２の読み出し結果から、（Ａ１）及び（Ａ２）間に閾値があるメモリセルを抽出（差分抽出：difference）し、そのメモリセル数をカウント（difference detection）する。
【０１０１】
続いて、ステートマシン２９は、（Ａ４）リードを実行する（ステップＳ１０４）。ステップＳ１０４は、図８における時刻ｔ４〜ｔ５間の動作に対応する。さらに、ステップＳ１０４において、ステートマシン２９は、ステップＳ１０２までの読み出し結果とステップＳ１０３の読み出し結果とから、（Ａ２）及び（Ａ３）間に閾値があるメモリセルを抽出し、そのメモリセル数をカウントする。
【０１０２】
続いて、ステートマシン２９は、（Ａ５）リードを実行する（ステップＳ１０５）。ステップＳ１０５は、図８における時刻ｔ５〜ｔ６間の動作に対応する。さらに、ステップＳ１０５において、ステートマシン２９は、ステップＳ１０３までの読み出し結果とステップＳ１０４の読み出し結果とから、（Ａ３）及び（Ａ４）間に閾値があるメモリセルを抽出し、そのメモリセル数をカウントする。
【０１０３】
続いて、ステートマシン２９は、ステップＳ１０４までの読み出し結果とステップＳ１０５の読み出し結果とから、（Ａ４）及び（Ａ５）間に閾値があるメモリセルを抽出し、そのメモリセル数をカウントする（ステップＳ１０６）。続いて、ステートマシン２９は、ステップＳ１０６までの結果を用いて、“Ａ”レベルを読み出すための最適な読み出しレベル（ＡＲレベル）を計算する（ステップＳ１０７）。最適な読み出しレベルを計算するためのアルゴリズムの一例は後述する。ステートマシン２９は、ステップＳ１０７で計算した最適な読み出しレベルをレジスタ回路３２に格納する。ステップＳ１０６及びステップＳ１０７は、図８の時刻ｔ６〜ｔ７間の動作に対応する。
【０１０４】
続いて、ステートマシン２９は、ステップＳ１０７で計算したＡＲレベルを用いて、“Ａ”レベル最適値リードを実行する（ステップＳ１０８）。ステップＳ１０８は、図８の時刻ｔ７〜ｔ８間の動作に対応する。
【０１０５】
（“Ｃ”レベル）
続いて、ステートマシン２９は、（Ｃ１）リードを実行する（ステップＳ１０９）。ステップＳ１０９は、図８における時刻ｔ８〜ｔ９間の動作に対応する。
【０１０６】
続いて、ステートマシン２９は、（Ｃ２）リードを実行する（ステップＳ１１０）。ステップＳ１１０は、図８における時刻ｔ９〜ｔ１０間の動作に対応する。
【０１０７】
続いて、ステートマシン２９は、（Ｃ３）リードを実行する（ステップＳ１１１）。ステップＳ１１１は、図８における時刻ｔ１０〜ｔ１１間の動作に対応する。さらに、ステップＳ１１１において、ステートマシン２９は、ステップＳ１０９及びステップＳ１１０の読み出し結果から、（Ｃ１）及び（Ｃ２）間に閾値があるメモリセルを抽出し、そのメモリセル数をカウントする。
【０１０８】
続いて、ステートマシン２９は、（Ｃ４）リードを実行する（ステップＳ１１２）。ステップＳ１１２は、図８における時刻ｔ１１〜ｔ１２間の動作に対応する。さらに、ステップＳ１１２において、ステートマシン２９は、ステップＳ１１０までの読み出し結果とステップＳ１１１の読み出し結果とから、（Ｃ２）及び（Ｃ３）間に閾値があるメモリセルを抽出し、そのメモリセル数をカウントする。
【０１０９】
続いて、ステートマシン２９は、（Ｃ５）リードを実行する（ステップＳ１１３）。ステップＳ１１３は、図８における時刻ｔ１２〜ｔ１３間の動作に対応する。さらに、ステップＳ１１３において、ステートマシン２９は、ステップＳ１１１までの読み出し結果とステップＳ１１２の読み出し結果とから、（Ｃ３）及び（Ｃ４）間に閾値があるメモリセルを抽出し、そのメモリセル数をカウントする。
【０１１０】
続いて、ステートマシン２９は、（Ｃ６）リードを実行する（ステップＳ１１４）。ステップＳ１１４は、図８における時刻ｔ１３〜ｔ１４間の動作に対応する。さらに、ステップＳ１１４において、ステートマシン２９は、ステップＳ１１２までの読み出し結果とステップＳ１１３の読み出し結果とから、（Ｃ４）及び（Ｃ５）間に閾値があるメモリセルを抽出し、そのメモリセル数をカウントする。
【０１１１】
続いて、ステートマシン２９は、ステップＳ１１３までの読み出し結果とステップＳ１１４の読み出し結果とから、（Ｃ５）及び（Ｃ６）間に閾値があるメモリセルを抽出し、そのメモリセル数をカウントする（ステップＳ１１５）。続いて、ステートマシン２９は、ステップＳ１１５までの結果を用いて、“Ｃ”レベルを読み出すための最適な読み出しレベル（ＣＲレベル）を計算する（ステップＳ１１６）。計算アルゴリズムの一例は後述する。ステートマシン２９は、ステップ１１６で計算した最適な読み出しレベルをレジスタ回路３２に格納する。ステップＳ１１５及びステップＳ１１６は、図８の時刻ｔ１４〜ｔ１５間の動作に対応する。
【０１１２】
続いて、ステートマシン２９は、ステップＳ１１６で計算したワード線電圧（ＣＲレベル）を用いて、“Ｃ”レベル最適値リードを実行する（ステップＳ１１７）。続いて、ステートマシン２９は、ステップＳ１１７における読み出し結果を、先の“Ａ”レベル最適値リードの結果と合わせてキャッシュＸＤＬに格納する（ステップＳ１１８）。ステップＳ１１７及びステップＳ１１８は、図８の時刻ｔ１５〜ｔ１６間の動作に対応する。この段階で、データ出力の準備が完了する。
【０１１３】
［１−２−２］  キャッシュの操作
次に、キャッシュの操作について説明する。図１１は、“Ａ”レベル最適値探索リード及び“Ａ”レベル最適値リードにおけるキャッシュの操作を説明する図である。図１１には、図９及び図１０のステップ毎に、ワード線電圧基準値、電圧差分、ステップ開始時点での各キャッシュの内容（ＸＤＬ contents、ＡＤＬ contents、ＢＤＬ contents）、キャッシュに関わる主な動作（Required operation）、ステップ終了時点で格納される結果レジスタ（レジスタPF_1ST、PF_2ND、PF_3RD、PF_4TH）の内容を示している。図１１に示した“w/”は、“with”を表している。
【０１１４】
例えば、ステップＳ１０１の（Ａ１）リードでは、ワード線に電圧“ＡＲ３−A_DELTA×４”が印加されて読み出しが実行され、読み出し終了時ではキャッシュＡＤＬに（Ａ１）リードの結果が格納される。読み出し開始時点ではデータが未確定なので、これを横線“−”で示している。このとき、キャッシュＢＤＬのデータは未確定で、結果レジスタの内容も未確定である。
【０１１５】
別な例として、ステップＳ１０５の（Ａ５）リードでは、ワード線に電圧ＡＲ３が印加されて読み出しが実行される。ステップＳ１０５の開始時点でキャッシュＡＤＬには、直前のステップＳ１０４の（Ａ４）リードの結果が格納されており、キャッシュＢＤＬには、ステップＳ１０３までの読み出し結果の累積が格納されている。ただし、キャッシュＢＤＬの結果は必ずしも累積でなくてもよく、別な実施形態としては、ステップＳ１０３の結果が格納されている形態であってもよい。これは、読み出し電圧と閾値分布の結果とから、予期せぬノイズにより結果の一貫性が保たれなかった場合には前者の累積結果を、ノイズ成分を無視できるのであれば後者の形態を採用すればよい。
【０１１６】
図１２は、最適値探索リードによりキャッシュＡＤＬに格納されるデータの一例を説明する図である。図１３は、図１２に示した第１状態から第５状態におけるキャッシュＳＤＬ、ＡＤＬ、ＸＤＬ、及び記憶ノードＴＡＧのデータの一例を説明する図である。第１状態から第５状態はそれぞれ、（Ａ１）リードから（Ａ５）リードの結果に対応する。０ｔｈ区間（０ｔｈ−）、１ｓｔ区間（１ｓｔ−）、２ｎｄ区間（２ｎｄ−）、３ｒｄ区間（３ｒｄ−）、４ｔｈ区間（４ｔｈ−）、及び５ｔｈ区間（５ｔｈ−）は、（Ａ１）から（Ａ５）で区切られる区間を表している。
【０１１７】
図１２に示すように、メモリセルの閾値が（Ａ１）から（Ａ５）のどの区間にあるかに応じて、キャッシュＡＤＬに格納されるデータが変わる。例えば、（Ａ１）リードのワード線電圧で読み出すとき、０ｔｈ区間（０ｔｈ−）にあるメモリセルはデータ１を、１ｓｔ区間（１ｓｔ−）より高い閾値レベルにあるメモリセルはデータ０としてキャッシュＡＤＬにデータが格納される。別な例として、（Ａ５）リードのワード線電圧で読み出すとき、０ｔｈ区間にあるセル、１ｓｔ区間にあるセル、２ｎｄ区間（２ｎｄ−）にあるセル、３ｒｄ区間（３ｒｄ−）にあるセル、４ｔｈ区間（４ｔｈ−）にあるセルは全てキャッシュＡＤＬにデータ１が、５ｔｈ区間（５ｔｈ−）にあるセルのみキャッシュＡＤＬにデータ０が格納される。
【０１１８】
図１１乃至図１３を参照して、キャッシュＢＤＬに格納される直前までの読み出しの結果を累積する方法とデータラッチの更新方法とについて具体的に説明する。
【０１１９】
図１１に示すように、ステップＳ１０１の（Ａ１）リードでは、ワード線電圧として“ＡＲ３−A_DELTA×４”で計算される値を用いて読み出しが実行される。ステップＳ１０１では、センス結果がキャッシュＳＤＬに保持される。読み出し開始時点では、キャッシュＸＤＬのデータは確定しておらず、キャッシュＡＤＬ、ＢＤＬについても同様である。また、結果レジスタについてもデータは確定していない。確定していないとは、何のデータが保持されていてもよいことを意味している。図１１に示した“ＳＴＢ”は、キャッシュのデータを確定することを意味する。
【０１２０】
続いて、ステップＳ１０２の（Ａ２）リードでは、ワード線電圧として“ＡＲ３−A_DELTA×３”で計算される値を用いて読み出しが実行される。読み出し開始時点では、キャッシュＸＤＬ、ＡＤＬ、ＢＤＬのデータは確定していない。また、結果レジスタについてもデータは確定していない。ステップＳ１０２では、キャッシュＳＤＬのデータがキャッシュＡＤＬにコピーされ、キャッシュＳＤＬは、次の（Ａ２）リードの読み出し結果の格納に備える。
【０１２１】
ステップＳ１０２での各キャッシュのデータ状態は、図１２及び図１３の第１状態である。第１状態について具体的に説明すると、キャッシュＡＤＬには、各メモリセルの１ビットのデータ状態が反映されるが、０ｔｈ区間にある閾値のメモリセルについてはデータ１が、１ｓｔ区間よりも高い閾値にあるメモリセルについてはデータ０が格納される。
【０１２２】
続いて、ステップＳ１０３の（Ａ３）リードでは、ワード線電圧として“ＡＲ３−A_DELTA×２”で計算される値を用いて読み出しが実行される。読み出し開始時点では、キャッシュＸＤＬ、ＢＤＬのデータは確定していない。また、結果レジスタについてもデータは確定していない。ステップＳ１０３では、キャッシュＡＤＬのデータがキャッシュＢＤＬにコピーされ、キャッシュＡＤＬには、ステップＳ１０２で確定した（Ａ２）リードの読み出し結果がキャッシュＳＤＬからキャッシュＡＤＬにコピーされる。この時点での各キャッシュのデータ状態は図１２及び図１３の第２状態である。
【０１２３】
さらに動作は続き、ステートマシン２９は、キャッシュＡＤＬとキャッシュＢＤＬとのデータから、そのデータの一致しない箇所を抽出、不一致を示すデータを記憶ノードＴＡＧにコピーする。記憶ノードＴＡＧの内容は、フェイル数カウント回路３３によって参照される。ここで、キャッシュＡＤＬとキャッシュＢＤＬとのデータから、そのデータの一致しない箇所を抽出とは、（Ａ１）リードで読み出したときと、（Ａ２）リードで読み出したときとでデータが異なるビットを抽出することである。つまり、（Ａ１）と（Ａ２）との間の１ｓｔ区間に閾値があるメモリセルであり、これを計数することにより、この１ｓｔ区間に閾値があるメモリセルのビット数を計数することができる。この処理は、図１１の“ＴＡＧ＝ＡＤＬ＆／ＢＤＬ”、及び“All 0 detection”で示される。
【０１２４】
フェイル数カウント回路３３は、記憶ノードＴＡＧ内の一致しない箇所の数、すなわち不一致ビットの数を、前記フェイルビット基準値F_NFと比較し、比較の結果、F_NFより不一致ビット数が多いと判断されたときはFailを、F_NFと同数がそれ未満の不一致ビット数と判断された場合はPassをそれぞれ結果レジスタに格納する。この結果の保持方法は後述する。
【０１２５】
続いて、ステップＳ１０４の（Ａ４）リードでは、ワード線電圧として“ＡＲ３−A_DELTA×１”で計算される値を用いて読み出しが実行される。読み出し開始時点では、キャッシュＸＤＬのデータは確定していない。キャッシュＡＤＬには、（Ａ２）リードの読み出し結果が保持される。キャッシュＢＤＬには、（Ａ１）リードの読み出し結果が保持され、結果レジスタには、ステップＳ１０３で計数した結果が保持される。
【０１２６】
ステップＳ１０４では、キャッシュＡＤＬのデータがキャッシュＢＤＬにコピーされ、キャッシュＡＤＬには、ステップＳ１０３で確定した（Ａ３）リードの読み出し結果がキャッシュＳＤＬからキャッシュＡＤＬにコピーされる。この時点での各キャッシュのデータ状態は、図１３の第３状態である。
【０１２７】
さらに動作は続き、ステートマシン２９は、キャッシュＡＤＬとキャッシュＢＤＬとのデータから、そのデータの一致しない箇所を抽出、すなわち、（Ａ２）と（Ａ３）との間の２ｎｄ区間に閾値があるメモリセルを抽出、これを前記同様、記憶ノードＴＡＧにコピーして、不一致ビットの計数を行う。結果についても前記同様に結果レジスタに保持する。
【０１２８】
続いて、ステップＳ１０５の（Ａ５）リードでは、ワード線電圧ＡＲ３を用いて読み出しが実行される。読み出し開始時点では、キャッシュＸＤＬのデータは確定していない。キャッシュＡＤＬには、（Ａ３）リードの読み出し結果が保持され、キャッシュＢＤＬには、（Ａ２）リードの読み出し結果が保持され、結果レジスタには、ステップＳ１０４で計数した結果が保持される。
【０１２９】
ステップＳ１０５では、キャッシュＡＤＬのデータがキャッシュＢＤＬにコピーされ、キャッシュＡＤＬにはステップＳ１０４で確定した（Ａ４）リードの読み出し結果がキャッシュＳＤＬからキャッシュＡＤＬにコピーされる。この時点での各キャッシュのデータ状態は、図１３の第４状態である。
【０１３０】
さらに動作は続き、ステートマシン２９は、キャッシュＡＤＬとキャッシュＢＤＬとのデータから、そのデータの一致しない箇所を抽出、すなわち、（Ａ３）と（Ａ４）との間の３ｒｄ区間に閾値があるメモリセルを抽出、これを前記同様、記憶ノードＴＡＧにコピーして、不一致ビット数の計数を行う。結果についても前記同様に、結果レジスタに保持する。
【０１３１】
続いて、ステップＳ１０６において、ステートマシン２９は、フェイルビット数の計数を行う。動作開始時点で、キャッシュＸＤＬのデータは確定していない。キャッシュＡＤＬには、（Ａ４）リードの読み出し結果が保持され、キャッシュＢＤＬには、（Ａ３）リードの読み出し結果が保持され、結果レジスタには、ステップＳ１０５で計数した結果が保持される。
【０１３２】
ステップＳ１０６では、キャッシュＡＤＬのデータがキャッシュＢＤＬにコピーされ、キャッシュＡＤＬにはステップＳ１０５で確定した（Ａ５）リードの読み出し結果がキャッシュＳＤＬからキャッシュＡＤＬにコピーされる。この時点での各キャッシュのデータ状態は、図１３の第５状態である。
【０１３３】
さらに動作は続き、ステートマシン２９は、キャッシュＡＤＬとキャッシュＢＤＬとのデータから、そのデータの一致しない箇所を抽出、すなわち、（Ａ４）と（Ａ５）との間の４ｔｈ区間に閾値があるメモリセルを抽出、これを前記同様、記憶ノードＴＡＧにコピーして、不一致ビット数の計数を行う。結果についても前記同様、結果レジスタに保持する。この時点での各キャッシュのデータ状態は、図１３の第６状態である。
【０１３４】
［１−２−３］  ステートマシンのレジスタ構成
次に、フェイルビット基準値F_NFと、その結果の保持方法について説明する。図１４は、ステートマシン２９内に配置されるレジスタの回路図である。
【０１３５】
フェイル数カウント回路３３の出力信号PASSは、ステートマシン２９に入力され、そのステートマシン２９内に配置されるレジスタに格納される。ステートマシン２９は、４つのレジスタPF_1ST、PF_2ND、PF_3RD、PF_4THを備える。
【０１３６】
フェイル数カウント回路３３からの信号PASSは、１段目のレジスタPF_4THに入力され、レジスタPF_4THは、図示せぬクロックタイミングで信号PASSのデータを保持及び出力する。レジスタPF_4THの出力は、２段目のレジスタPF_3RDに入力され、レジスタPF_3RDは、図示せぬクロックタイミングでそのデータを保持及び出力する。
【０１３７】
レジスタPF_3RDの出力は、３段目のレジスタPF_2NDに入力され、レジスタPF_2NDは、図示せぬクロックタイミングでそのデータを保持及び出力する。レジスタPF_2NDの出力は、４段目のレジスタPF_1STに入力され、レジスタPF_1STは、図示せぬクロックタイミングでそのデータを保持及び出力する。
【０１３８】
図１４のようにレジスタ群を構成することで、各レジスタに供給されるクロックタイミングに応じて、信号PASSが順次直列構成された４つのレジスタにバケツリレー式に送られる。最終的に、４回のクロックに応答して、４回の結果をステートマシン２９内に保持できる。この４回のクロックは、レジスタPF_1ST、PF_2ND、PF_3RD、PF_4THにおけるデータの確定と同期し、ステップＳ１０６での結果がレジスタPF_4THに保持され、ステップＳ１０５での結果がレジスタPF_3RDに保持され、ステップＳ１０４での結果がレジスタPF_2NDに保持され、ステップＳ１０３での結果がレジスタPF_1STに保持される。
【０１３９】
また、レジスタPF_1ST、PF_2ND、PF_3RD、PF_4THの結果は、図２に示すように、装置の入出力ピンＩＯ＜７：０＞に出力できる。具体的には、コマンドデコーダ２５は、入力バッファ２１を介して受け取った命令を解釈し、信号CMD_TRACKRESULTを活性化する。これにより、選択回路２７は、センスユニット１３からの出力ではなく、ステートマシン２９のレジスタPF_1ST、PF_2ND、PF_3RD、PF_4THに保持されたデータのうちいずれかまたは全部を伝達する信号ＰＦを選択するように構成される。信号ＰＦは出力バッファ２３を介して入出力ピンＩＯ＜７：０＞に出力される。このように、装置内部にて最適値探索を実行した結果を出力することで、後に探索リード結果に疑義が生じた場合の解析や再探索のための情報として利用される。
【０１４０】
［１−３］  最適値リードの具体例
図１５は、（Ａ１）リードから（Ａ５）リードの各読み出し結果の一例を示している。具体的には、図１５の下側の図は、（Ａ１）リードから（Ａ５）リードの各読み出し結果におけるデータ０のビット数（Vth − ♯ of 0 bits）を示し、図１５の上側の図は、（Ａ１）リードから（Ａ５）リードの各区間に閾値があるメモリセル数（Vth − Distribution）を示している。また、図１５の上側の図は、ある基準値（Fail bit criteria: F_NF）と比較した結果（PassまたはFail）も示している。読み出し結果は、図１４のレジスタPF_1ST、PF_2ND、PF_3RD、PF_4THに格納される。
【０１４１】
ここで、Passとは、フェイルビット基準値F_NF以下のセルがあることを示し、Failとは、フェイルビット基準値F_NFを超えるセルがあることを示す。より具体的には、PassのときはレジスタPF_1ST、PF_2ND、PF_3RD、PF_4THにそれぞれデータ１が、FailのときはレジスタPF_1ST、PF_2ND、PF_3RD、PF_4THにそれぞれデータ０が格納される。
【０１４２】
４つのレジスタPF_1ST、PF_2ND、PF_3RD、PF_4THの結果に基づいて、最適な読み出しレベルを決める判断テーブルの一例を図１６に示す。必ずしもこの判断に限定されるものではなく、例えば複数の基準によって判断される例も採用できる。別の実施例については後述する。
【０１４３】
４つレジスタPF_1ST、PF_2ND、PF_3RD、PF_4THのデータに対して、判断結果は１６通りある。例えば、図１５の例を用いると、PF_1ST＝１、PF_2ND＝１、PF_3RD＝１、PF_4TH＝０であるので、（Ａ１）、（Ａ２）、（Ａ３）のいずれもPassで基準値以下であると判断されるが、例えばマージンを考慮して（Ａ１）が最適と判断される。PF_1ST＝１、PF_2ND＝０、PF_3RD＝１、PF_4TH＝０の場合、分布形状にノイズ成分が多く、最適と判断される読み出しレベルが無い（最適値が見つからない）と判断される。
【０１４４】
そのほか図示せぬが、レジスタPF_1ST、PF_2ND、PF_3RD、PF_4THの複数の信号状態の平均を取る方法もある。PF_1ST＝１、PF_2ND＝１、PF_3RD＝１、PF_4TH＝０の場合、PF_2NDが中央の値であることから（Ａ２）が最適であるとしてもよい。
【０１４５】
他の例として、図示せぬが、PF_1ST＝１、PF_2ND＝０、PF_3RD＝１、PF_4TH＝１の場合、閾値分布の移動方向が閾値が低い方向になることを考慮してPF_1STの結果を採用、すなわち（Ａ１）が最適であると判断してもよい。あるいは、連続してPF_3RD＝１、PF_4TH＝１となっていることから、（Ａ４）が最適であると判断してもよい。要は、複数の結果レジスタから最適と判断される点を探索する方法を具備すればよい。
【０１４６】
さらに他の例として、PF_1ST乃至PF_4THの結果から、最適である判断点が例えば（Ａ１）と（Ａ２）との中間にあった場合は、（Ａ１）と（Ａ２）との中間電圧が最適であると判断してもよい。すなわち、（Ａ１）〜（Ａ５）と全く同じ電圧を使用せず、（Ａ１）〜（Ａ５）に基づいて修正された最適値を用いるようにしてもよい。要は、複数の結果レジスタの結果に関連して最適と判断される電圧を選択できる方法を具備すればよい。
【０１４７】
［１−４］  コマンドシーケンス
図１７は、探索リードにおけるコマンドシーケンスを説明する図である。
【０１４８】
リードコマンド“００ｈ”に先立って、メモリコントローラ２００は、“Ａ”レベル最適値探索リードの精度情報をＮＡＮＤ型フラッシュメモリ１００に送る。具体的には、メモリコントローラ２００は、リード用プリセットコマンド“５５ｈ”、アドレス“Ａ１”、データ“Ｄ１”をＮＡＮＤ型フラッシュメモリ１００に送る。アドレス“Ａ１”は、“Ａ”レベル用の精度情報を格納する記憶領域を指定するアドレスである。データ“Ｄ１”は、“Ａ”レベル最適値探索リードの精度情報である。
【０１４９】
精度情報には、複数回の最適値探索リードを行うにあたって、各回で変えるワード線電圧レベル（例えば５０ｍＶ）の情報、複数回実行する読み出しの回数の情報、（Ａ１）リードに相当する電圧（すなわち、最初の最適値探索リードにおけるワード線電圧の情報）などが含まれる。その他の情報を与えることも可能である。
【０１５０】
続いて、メモリコントローラ２００は、“Ｂ”レベル最適値探索リードの精度情報をＮＡＮＤ型フラッシュメモリ１００に送る。具体的には、メモリコントローラ２００は、リード用プリセットコマンド“５５ｈ”、アドレス“Ａ２”、データ“Ｄ２”をＮＡＮＤ型フラッシュメモリ１００に送る。アドレス“Ａ２”は、“Ｂ”レベル用の精度情報を格納する記憶領域を指定するアドレスである。
【０１５１】
続いて、メモリコントローラ２００は、“Ｃ”レベル最適値探索リードの精度情報をＮＡＮＤ型フラッシュメモリ１００に送る。具体的には、メモリコントローラ２００は、リード用プリセットコマンド“５５ｈ”、アドレス“Ａ３”、データ“Ｄ３”をＮＡＮＤ型フラッシュメモリ１００に送る。アドレス“Ａ３”は、“Ｃ”レベル用の精度情報を格納する記憶領域を指定するアドレスである。
【０１５２】
続いて、メモリコントローラ２００は、前記フェイルビット基準値F_NFをＮＡＮＤ型フラッシュメモリ１００に送る。具体的には、メモリコントローラ２００は、リード用プリセットコマンド“５５ｈ”、アドレス“Ａ４”、データ“Ｄ４”をＮＡＮＤ型フラッシュメモリ１００に送る。アドレス“Ａ４”は、フェイルビット基準値F_NFを格納する記憶領域を指定するアドレスである。データ“Ｄ４”は、フェイルビット基準値F_NFのコードである。
【０１５３】
続いて、メモリコントローラ２００は、最適値探索リードを実行するモードコマンド“ＸＸｈ”をＮＡＮＤ型フラッシュメモリ１００に送る。
【０１５４】
続いて、メモリコントローラ２００は、リードコマンドを発行する。具体的には、メモリコントローラ２００は、リードコマンド“００ｈ”、カラムアドレス“Ｃ１”、“Ｃ２”、ロウアドレス“Ｒ１”、“Ｒ２”、“Ｒ３”、及び実行コマンド“３０ｈ”をＮＡＮＤ型フラッシュメモリ１００に送る。
【０１５５】
リードコマンドを受けて、ＮＡＮＤ型フラッシュメモリ１００は、ＲＢｎ＝０、すなわちビジー信号を出力し、リードコマンドに応じた読み出し動作を実行する。この読み出し動作では、最適値探索リードを経て最適と判断された読み出しレベルを用いた最適値リードが行われる。
【０１５６】
読み出し動作が終了した後、ＮＡＮＤ型フラッシュメモリ１００は、ＲＢｎ＝１を出力し、最適値読み出し結果“ＲＤ１”、“ＲＤ２”、“ＲＤ３”をメモリコントローラ２００に送る。図１７のコマンドシーケンスは一例であり、同様の結果を得られるのであればその他の形態であってもよい。例えば、前記リードコマンド“００ｈ”に先だってＮＡＮＤ型フラッシュメモリ１００に送られる情報の一部または全部は、適宜省略してもよい。
【０１５７】
［１−５］  探索リードにおける読み出し対象
図１８は、最適値探索リードと最適値リードとの読み出し対象の差異を説明する図である。図１８には、センスユニット１３を６ビット線分だけ抽出して示している。図１８に示した３つのＤＬは、キャッシュＡＤＬ、ＢＤＬ、ＸＤＬに対応する。
【０１５８】
本実施形態では、最適値探索リードは短い時間で正確に読み出すことが求められるため、最適値探索リードは可能な限り短いタイミングで、最適値リードは通常読み出しと同様のタイミングで読み出すことが要求される。各ビット線ＢＬにはセンスアンプＳ／Ａが１対１で接続される。センスアンプＳ／Ａは、ビット線ＢＬに接続されるメモリセルが導通状態か否かを判定する際に、定常的電流をビット線ＢＬに流し続けることでセル状態を判定する。
【０１５９】
ここで、最適値探索リードは、複数のビット線ＢＬにおいて交互にセンスアンプＳ／Ａをオン／オフする形態を採用する。より具体的には、ビット線ＢＬ０はセンス対象としてセンスアンプをオン状態、ビット線ＢＬ１はセンス非対象としてセンスアンプをオフ状態にする。オフ状態のセンスアンプに接続されるビット線には、例えば接地電圧Ｖｓｓが印加される。
【０１６０】
この形態から得られる特徴としては、通常電流センスを行う場合は、隣接ビット線の電圧変動で起きるノイズがセンス結果に影響しないよう、一定の安定化待ち時間が必要とされている。しかし、本実施形態では、隣接ビット線はシールド線として使用することとし、ノイズを抑制する。
【０１６１】
１本ごとにシールド線を置く形態がノイズ抑制効果に不足する場合は、４本のビット線ＢＬを組みにして、そのうちの一本を最適値探索リードのセンス対象としてセンスアンプをオン状態、それ以外の３本をセンス非対象としてセンスアンプをオフ状態にする形態であってもよい。センスアンプをオン状態及びオフ状態のいずれかに設定する制御は、図２に示すメモリセル制御レジスタ３０によって行われる。
【０１６２】
［１−６］  実施形態の効果
本実施形態では、読み出し動作において、最適値探索リード及び最適値リードを組み合わせた探索リードを実行する。最適値探索リードでは、複数の読み出しレベルを用いて読み出しを実行する。そして、最適値探索リードの結果を用いて、最適な読み出しレベル（ワード線電圧）を判定し、この最適な読み出しレベルを用いて最適値リードを行うようにしている。
【０１６３】
よって、本実施形態では、読み出し性能を向上させることが可能なＮＡＮＤ型フラッシュメモリ１００を実現できる。具体的には、ＮＡＮＤ型フラッシュメモリ１００に格納されたデータをより正確に読み出すことが可能となる。特に、データを長期保存した場合でも、より正確に読み出し動作を行うことが可能である。
【０１６４】
また、最適値探索リードを全ビット線で行うのではなく、例えば１本おきのビット線に対して最適値探索リードを行うようにしている。これにより、最適値探索リードをデータ間引きにより高速に行うことで、探索リードの時間を短縮することができる。もちろん、最適値探索リードにかかる時間に余裕が与えられる場合は、後述する最適値探索リードを単独で行う場合同様、キャッシュＡＤＬ、キャッシュＢＤＬ、あるいはそのほか必要な数のキャッシュを用いて実現可能な情報圧縮をすることで、最適値リードと同様の対象データ範囲とすることは妨げない。
【０１６５】
また、メモリシステム１に一部機能を実装することで探索リードを行う、という一命令で最適な読み出しを実施することができる。これにより、より少ない機能追加で最適値探索リード及び最適値リードを実現できる。ただ、この一部機能の実装には、装置面積が増加するという問題があるが、従来機能を大きく流用することで、この問題の影響を最小限にすることができる。
【０１６６】
［２］  第１変形例
図７においては、“Ａ”レベル最適値探索リードを５回、“Ｃ”レベル最適値探索リードを６回行う形態を示している。この回数は、探索リードの目的や実施時間に応じて変更してよく、その組合せは適宜変更することができる。
【０１６７】
また、“Ａ”レベル最適値探索リードの回数と“Ｃ”レベル最適値探索リードの回数とは同じであってもよいし、異なっていてもよい。メモリセルの各閾値レベルによってデータ保持特性が異なることは容易に想像でき、それに伴って変更することは可能である。
【０１６８】
［３］  第２変形例
図６においては、１セルに２ビットを記憶する形態を示している。もちろんこれに限定されず、１セルに３ビットを記憶する形態、１セルに４ビット以上を記憶する形態、もしくは複数セルを用いて、１以上の整数のビットを記憶する形態であってもよい。
【０１６９】
読み出しに必要な閾値レベル、読み出し回数を必要に応じてＮＡＮＤ型フラッシュメモリ１００に与え、例えば図９及び図１０のフロー、及び図１４に示す読み出し結果を格納するレジスタの数を必要に応じて増減することが可能である。
【０１７０】
また、図１４に示す探索リード命令にかかる命令の種類や与えるデータも必要に応じて増減することが可能である。
【０１７１】
［４］  第３変形例
図１１乃至図１３においては、最適値探索リード時、複数の読み出しレベルで読み出した場合に、各電圧区間に閾値があるメモリセルのビット数を計数するアルゴリズムについて説明した。特に図１１においては、Required operationとして、フローチャートの各ステップに必要とされるキャッシュの演算の具体例を示した。
【０１７２】
理想的にはこの演算方法で正しく最適値を探して決定することができるが、現実的には読み出し動作においては、特に読み出しレベルとセル閾値とが近接する場合には、さまざまなノイズを受けてその読み出し結果が不確定になる場合がある。その場合、図１５のような理想的な分布形状にならず、最適値の誤判定につながり、最終的には探索リードの誤りにつながる。
【０１７３】
この点を鑑みて、図１９では、図１１のRequired operationを変更した例を示す。ここでは、ステップＳ１０４、Ｓ１０５、Ｓ１０６において実行される動作を一部変更している。ステップＳ１０４、Ｓ１０５、Ｓ１０６において、ステートマシン２９は、キャッシュＡＤＬのデータとキャッシュＢＤＬの反転データとのＡＮＤ演算を行い、この演算結果をキャッシュＢＤＬに格納する。
【０１７４】
これにより、キャッシュＢＤＬには常に前回までの最適値探索リードの結果が残る。より具体的には、直前までの最適値探索リードの結果、該当セルが一度でも変化、すなわち低いワード線電圧から読み出したときに１セルから０セルであると判定されたら、以降はノイズ等により再び１セルと読み出された場合であってもその結果はキャッシュに反映されず、よって最適値判定の結果にも関与しない。ノイズ成分の打ち消しを行う簡便な方法を利用することにより、探索リードの誤り率を減らすことができる。
【０１７５】
［５］  第４変形例
図１７では、最適値探索リードと最適値リードとを、１つの命令にて連続的に実施し、ＮＡＮＤ型フラッシュメモリ１００のレディー／ビジーピンＲＢｎがレディー状態、すなわち即時読み出しが可能な状態となることを示した。
【０１７６】
しかしながら、先の探索リードの誤りの問題、及び図１の形態にシステムを組み上げた後に、その最適値計算アルゴリズムを変更するには困難が伴う。第４変形例は、この点を鑑みて、他の形態を開示する。図２０は、第４変形例に係る最適値探索リード及び最適値リードを説明するフローチャートである。
【０１７７】
メモリコントローラ２００は、最適値探索リードの精度情報をＮＡＮＤ型フラッシュメモリ１００に送る（ステップＳ２０１）。精度情報には、開始ワード線電圧（最初の最適値探索リードにおけるワード線電圧情報）、ステップ電圧、及びステップ回数が含まれる。その他の情報を与えることも可能である。ステップＳ２０１は、例えば、図１７で説明したリード用プリセットコマンド“５５ｈ”を用いて行われる。続いて、ＮＡＮＤ型フラッシュメモリ１００は、最適値探索リードの精度情報を所定のレジスタに格納する（ステップＳ２０２）。
【０１７８】
続いて、メモリコントローラ２００は、最適値探索リードを実行するモードコマンドをＮＡＮＤ型フラッシュメモリ１００に送る（ステップＳ２０３）。続いて、ＮＡＮＤ型フラッシュメモリ１００は、最適値探索リードを実行する（ステップＳ２０４）。
【０１７９】
図２１は、最適値探索リードにおける読み出しレベルを説明する図である。ステートマシン２９は、Ｒ１レベルからＲｎレベルまで（ｎは３以上の自然数）複数回の読み出しを行う。読み出しにより、セルの閾値がセンスアンプＳ／Ａによって判定され、その結果がデータ１又はデータ０としてキャッシュに格納される。
【０１８０】
図２２は、ＮＡＮＤ型フラッシュメモリ１００の最適値探索リードを説明するフローチャートである。図２３は、キャッシュＸＤＬのデータを説明する図である。
【０１８１】
ステートマシン２９は、読み出しレベルとしてＲ１レベルでメモリセルのデータを読み出す（ステップＳ３０１）。その結果は、適切なキャッシュに格納される。
【０１８２】
続いて、ステートマシン２９は、Ｒ２レベルでメモリセルのデータを読み出す。その結果は、ステップＳ３０１の結果を失わないよう、適切なキャッシュに格納される。続いて、ステートマシン２９は、Ｒ１リード及びＲ２リードの結果を用いて、読み出し結果が変わったビット、すなわちＲ１とＲ２との区間に閾値があるメモリセル数を計数する。そして、この結果を例えばキャッシュＸＤＬのカラム番地０に格納する（ステップＳ３０２）。
【０１８３】
ある区間に閾値があるメモリセル数を計数する手段は、例えば図２に示すフェイル数カウント回路３３を用いることができる。その他の装置内部にある手段を用いてもよい。また、結果の格納場所はカラム番地０に限らないが、要は、読み出しレベルとカラム番地との対応関係が一意に決まればその方法は問わない。キャッシュＸＤＬは通常１番地あたり８ビットで構成されるが、計数結果は２バイトを用いてもよく、さらには、データに信頼性を持たせるために、冗長構成、パリティデータ、及び多数決判定などの構成を持っていてもよい。
【０１８４】
続いて、ステートマシン２９は、Ｒ３レベルでメモリセルのデータを読み出す。その結果は、ステップＳ３０２の結果を失わないよう、適切なキャッシュに格納される。続いて、ステートマシン２９は、Ｒ２リード及びＲ３リードの結果を用いて、読み出し結果が変わったビット、すなわちＲ２とＲ３との区間に閾値があるメモリセル数を計数する。そして、この結果を例えばキャッシュＸＤＬのカラム番地１に格納する（ステップＳ３０３）。
【０１８５】
上記の制御を繰り返し、ステートマシン２９は、Ｒｎレベルでメモリセルのデータを読み出す。その結果は、直前のステップの結果を失わないよう、適切なキャッシュに格納される。続いて、ステートマシン２９は、Ｒ（ｎ−１）リード及びＲｎリードの結果を用いて、読み出し結果が変わったビット、すなわちＲ（ｎ−１）とＲｎとの区間に閾値があるセル数を計数する。そして、この結果を例えばキャッシュＸＤＬのカラム番地（ｎ−２）に格納する（ステップＳ３０５）。そして、最適値探索リードを終了する。
【０１８６】
図２０に戻り、ＮＡＮＤ型フラッシュメモリ１００は、メモリコントローラ２００にレディー状態を通知、つまり最適値探索リードが終わったことを通知する（ステップＳ２０５）。続いて、メモリコントローラ２００は、キャッシュのデータを読み出すためのコマンド（キャッシュリードコマンド）をＮＡＮＤ型フラッシュメモリ１００に発行する（ステップＳ２０６）。これに応答して、ＮＡＮＤ型フラッシュメモリ１００は、キャッシュＸＤＬのデータ（最適値探索リードの結果）をメモリコントローラ２００に出力する（ステップＳ２０７）。
【０１８７】
続いて、メモリコントローラ２００は、最適値探索リードの結果を用いて、“Ａ”レベル、“Ｂ”レベル、及び“Ｃ”レベルの少なくとも１つの最適値を判定する（ステップＳ２０８）。この判定動作は、例えば、図１６と同じである。
【０１８８】
続いて、メモリコントローラ２００は、ステップＳ２０８で決定した最適値を用いて、リードコマンドをＮＡＮＤ型フラッシュメモリ１００に発行する（ステップＳ２０９）。これに応答して、ＮＡＮＤ型フラッシュメモリ１００は、最適値リードを実行する（ステップＳ２１０）。その後、メモリコントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００から読み出しデータを受ける（ステップＳ２１１）。
【０１８９】
第４変形例は、ある区間に閾値があるメモリセル数を計数した結果をキャッシュＸＤＬに格納する点で前記実施形態とは異なる。第４変形例では、装置に予め固定した最適値決定アルゴリズムしか使用できなかった点を考慮し、装置は計数結果のみを格納、すなわち最適値探索リードのみを実行、その結果を図１のメモリコントローラ２００へ送信、又はメモリコントローラ２００の命令に従い出力する。そして、メモリコントローラ２００の判断により最適値リード命令が再び与えられる、という点に特徴がある。
【０１９０】
図２４は、第４変形例に係るキャッシュＸＤＬのデータの具体例を説明する図である。読み出しレベルとしてＲ１レベルからＲ９レベルの９回の読み出しが行われる。
【０１９１】
区間Ｒ１−Ｒ２に閾値があるメモリセルを計数した結果がカラム番地０に格納され、区間Ｒ２−Ｒ３に閾値があるメモリセルを計数した結果がカラム番地１に格納される。例えば、カラム番地０には、６４ビット（４０ｈ）のメモリセルがあると判定された結果が格納される。カラム番地１には、２５５ビット（ＦＦｈ）と表記されているが、フェイル数カウント回路３３には計数可能な上限があることがあり、ここでは２５５ビット以上のメモリセルがあると判定された結果が格納される。さらに同様にカウントしていくと、区間Ｒ５−Ｒ６には１２８ビット（８０ｈ）、区間Ｒ６−Ｒ７には１６ビット（１０ｈ）、区間Ｒ７−Ｒ８には２４ビット（１８ｈ）、区間Ｒ８−Ｒ９には２５５ビット以上のメモリセルがあると判定された結果が格納される。
【０１９２】
第４変形例では、前述のとおり、装置に予め固定した最適値決定アルゴリズムしか使用できなかった点を改善し、メモリコントローラ２００に構成されるファームウェアに最適値判断を委譲する。一般的にファームウェアはＮＡＮＤ型フラッシュメモリ１００とメモリコントローラ２００とを含むシステムを構成後にも書き換え及び変更ができる利点を生かし、最適な構成を選択する自由度が得られる。
【０１９３】
第４変形例を実現するＮＡＮＤ型フラッシュメモリ１００の構成例を図２５に示す。フェイル数カウント回路３３から、センスユニット１３へ向けてフェイルビットを通知する信号が追加される。フェイル数カウント回路３３は、フェイルビット数をカウントした結果を、センスユニット１３内のキャッシュに転送できる。
【０１９４】
［６］  第５変形例
第４変形例では、最適値探索リードのみが独立したコマンドで実行される。その後、別のコマンドで別途最適値リードが実行される。これに鑑みて、最適値探索リードは、図１８に示すようにビット線ＢＬを間引いて実施するのではなく、最適値リードと同様に、全ビット線に対して行うようにしてもよい。その結果は、キャッシュＡＤＬ、ＢＤＬを駆使して情報圧縮するようにしてもよい。第５変形例を実施する場合は、必要なキャッシュを図４に示す構成ではなく、最適な数に変更することができる。
【０１９５】
［７］  第６変形例
１つのメモリセルトランジスタが２ビットデータを保持する場合、その閾値電圧は、保持データに応じて４種類のレベルのいずれかを取る。４種類のレベルを低い方から順に、消去レベル、Ａレベル、Ｂレベル、及びＣレベルとした場合、Ａレベルの読み出し動作時に選択ワード線に印加される電圧は、例えば０Ｖ〜０．５５Ｖの間である。これに限定されることなく、０．１Ｖ〜０．２４Ｖ，０．２１Ｖ〜０．３１Ｖ，０．３１Ｖ〜０．４Ｖ，０．４Ｖ〜０．５Ｖ，０．５Ｖ〜０．５５Ｖ等のいずれかの間であってもよい。Ｂレベルの読み出し時に選択ワード線に印加される電圧は、例えば１．５Ｖ〜２．３Ｖの間である。これに限定されることなく、１．６５Ｖ〜１．８Ｖ，１．８Ｖ〜１．９５Ｖ，１．９５Ｖ〜２．１Ｖ，２．１Ｖ〜２．３Ｖ等のいずれかの間であってもよい。Ｃレベルの読み出し動作時に選択ワード線に印加される電圧は、例えば３．０Ｖ〜４．０Ｖの間である。これに限定されることなく、３．０Ｖ〜３．２Ｖ，３．２Ｖ〜３．４Ｖ，３．４Ｖ〜３．５Ｖ，３．５Ｖ〜３．６Ｖ，３．６Ｖ〜４．０Ｖ等のいずれかの間であってもよい。読み出し動作の時間（ｔＲ）としては、例えば２５μｓ〜３８μｓ，３８μｓ〜７０μｓ，７０μｓ〜８０μｓ等のいずれかの間であってよい。
【０１９６】
書き込み動作は、プログラムとプログラムベリファイとを含む。書き込み動作においては、プログラム時に選択されたワード線に最初に印加される電圧は、例えば１３．７Ｖ〜１４．３Ｖの間である。これに限定されることなく、例えば１３．７Ｖ〜１４．０Ｖ，１４．０Ｖ〜１４．６Ｖ等のいずれかの間であってもよい。奇数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧と、偶数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧とを異ならせてもよい。プログラム動作をＩＳＰＰ方式（Incremental Step Pulse Program）としたとき、ステップアップの電圧として、例えば０．５Ｖ程度が挙げられる。非選択のワード線に印加される電圧としては、例えば６．０Ｖ〜７．３Ｖの間であってもよい。これに限定されることなく、例えば７．３Ｖ〜８．４Ｖの間であってもよく、６．０Ｖ以下であってもよい。非選択のワード線が奇数番目のワード線であるか、偶数番目のワード線であるかにより、印加するパス電圧を異ならせてもよい。書き込み動作の時間（ｔＰｒｏｇ）としては、例えば１７００μｓ〜１８００μｓ，１８００μｓ〜１９００μｓ，１９００μｓ〜２０００μｓの間であってよい。
【０１９７】
消去動作においては、半導体基板上部に配置され、かつ、メモリセルが上方に配置されたウェルに最初に印加される電圧は、例えば１２Ｖ〜１３．６Ｖの間である。これに限定されることなく、例えば１３．６Ｖ〜１４．８Ｖ，１４．８Ｖ〜１９．０Ｖ，１９．０Ｖ〜１９．８Ｖ，１９．８Ｖ〜２１Ｖ等のいずれかの間であってもよい。消去動作の時間（ｔＥｒａｓｅ）としては、例えば３０００μｓ〜４０００μｓ，４０００μｓ〜５０００μｓ，４０００μｓ〜９０００μｓの間であってよい。
【０１９８】
また、メモリセルは、例えば以下のような構造であってもよい。メモリセルは、シリコン基板等の半導体基板上に膜厚が４ｎｍ〜１０ｎｍのトンネル絶縁膜を介して配置された電荷蓄積膜を有する。この電荷蓄積膜は、膜厚が２ｎｍ〜３ｎｍのシリコン窒化（ＳｉＮ）膜、またはシリコン酸窒化（ＳｉＯＮ）膜などの絶縁膜と、膜厚が３ｎｍ〜８ｎｍのポリシリコン（Ｐｏｌｙ−Ｓｉ）膜との積層構造にすることができる。ポリシリコン膜には、ルテニウム（Ｒｕ）などの金属が添加されていてもよい。メモリセルは、電荷蓄積膜の上に絶縁膜を有する。この絶縁膜は、例えば膜厚が３ｎｍ〜１０ｎｍの下層Ｈｉｇｈ−ｋ膜と、膜厚が３ｎｍ〜１０ｎｍの上層Ｈｉｇｈ−ｋ膜とに挟まれた、膜厚が４ｎｍ〜１０ｎｍのシリコン酸化（ＳｉＯ）膜を有する。Ｈｉｇｈ−ｋ膜の材料としては、酸化ハフニウム（ＨｆＯ）などが挙げられる。また、シリコン酸化膜の膜厚は、Ｈｉｇｈ−ｋ膜の膜厚よりも厚くすることができる。絶縁膜上には、膜厚が３ｎｍ〜１０ｎｍの仕事関数調整用の膜を介して、膜厚が３０ｎｍ〜７０ｎｍの制御電極が設けられる。ここで仕事関数調整用膜は、例えば酸化タンタル（ＴａＯ）などの金属酸化膜、窒化タンタル（ＴａＮ）などの金属窒化膜等である。制御電極には、タングステン（Ｗ）などを用いることができる。メモリセル間にはエアギャップを配置することができる。
【０１９９】
なお、本実施形態では、基板上に複数のメモリセルが積層された三次元積層不揮発性半導体記憶装置を例に説明しているが、これに限定されず、複数のメモリセルが平面状に配置された二次元不揮発性半導体記憶装置に適用することも可能である。
【０２００】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２０１】
１…メモリシステム、１０…コア部、１１…セルアレイ、１２…ロウデコーダ、１３…センスユニット、１４…ＮＡＮＤストリング、２０…周辺回路、２１，２２…入力バッファ、２３，３１…出力バッファ、２４…アドレスバッファ、２５…コマンドデコーダ、２６…データバッファ、２７，２８…選択回路、２９…ステートマシン、３０…メモリセル制御レジスタ、３２…レジスタ回路、３３…フェイル数カウント回路、４０…センスアンプ、１００…ＮＡＮＤ型フラッシュメモリ、２００…メモリコントローラ、２０１…ホストインターフェース回路、２０２…ＣＰＵ、２０３…ＲＡＭ、２０４…バッファメモリ、２０５…ＮＡＮＤインターフェース回路、２０６…ＥＣＣ回路、３００…ホスト装置。
【図１】
0006545631.tif 000002
【図２】
0006545631.tif 000003
【図３】
0006545631.tif 000004
【図４】
0006545631.tif 000005
【図５】
0006545631.tif 000006
【図６】
0006545631.tif 000007
【図７】
0006545631.tif 000008
【図８】
0006545631.tif 000009
【図９】
0006545631.tif 000010
【図１０】
0006545631.tif 000011
【図１１】
0006545631.tif 000012
【図１２】
0006545631.tif 000013
【図１３】
0006545631.tif 000014
【図１４】
0006545631.tif 000015
【図１５】
0006545631.tif 000016
【図１６】
0006545631.tif 000017
【図１７】
0006545631.tif 000018
【図１８】
0006545631.tif 000019
【図１９】
0006545631.tif 000020
【図２０】
0006545631.tif 000021
【図２１】
0006545631.tif 000022
【図２２】
0006545631.tif 000023
【図２３】
0006545631.tif 000024
【図２４】
0006545631.tif 000025
【図２５】
0006545631.tif 000026