(57)【特許請求の範囲】
【請求項１】
デバイス内の複数の不揮発性記憶素子の第１グループに記憶されたデータのリフレッシュが実行されるべきである旨を、前記第１グループ内の１つまたは複数の不揮発性記憶素子の状態に基づいて判定するステップ（８０６）と、
デバイス内の複数の不揮発性記憶素子の第２グループがリフレッシュ処理を受けるべきである旨を、複数の不揮発性記憶素子の前記第１グループが最後にプログラムされたときに対して複数の不揮発性記憶素子の前記第２グループがいつ最後にプログラムされたかに基づいて判定するステップ（８０８）と、
前記第２グループ内の１つまたは複数の不揮発性記憶素子の状態に基づいて、複数の不揮発性記憶素子の第２グループに記憶されたデータをリフレッシュするか否かを決定するステップと、
複数の不揮発性記憶素子の前記第２グループに前記リフレッシュ処理を実行するステップ（８１０）と、
を備える、不揮発性記憶装置を動作させる方法。
【請求項２】
デバイス内の複数の不揮発性記憶素子の第２グループがリフレッシュ処理を受けるべきである旨を判定する前記ステップは、前記デバイス内の複数の不揮発性記憶素子の前記第２グループが最後にプログラムされたときが、複数の不揮発性記憶素子の前記第１グループが最後にプログラムされたときよりも前であるかを判定するステップを備える、請求項１に記載の方法。
【請求項３】
デバイス内の複数の不揮発性記憶素子の第２グループがリフレッシュ処理を受けるべきである旨を判定する前記ステップは、
複数の不揮発性記憶素子の前記第１グループに関連した第１のタイムスタンプにアクセスするステップを備え、
前記第１のタイムスタンプは、複数の不揮発性記憶素子の前記第１グループがいつ最後にプログラムされたかを示すものであり、
前記デバイス内の複数の不揮発性記憶素子の複数のブロックに関連した複数のタイムスタンプにアクセスするステップを備え、
前記複数のタイムスタンプは、前記複数の不揮発性記憶素子の複数の前記ブロックの各々がいつ最後にプログラムされたかを示すものであり、
前記複数のブロックの何れのブロックが、前記第１のタイムスタンプよりも早いタイムスタンプに関連しているかを判定するステップを備える、請求項１または２に記載の方法。
【請求項４】
前記第１グループを第１閾値電圧分布および第２閾値電圧分布を備える複数の閾値電圧分布にプログラムするステップを備え、
デバイス内の複数の不揮発性記憶素子の第１グループに記憶されたデータのリフレッシュが実行されるべきである旨を判定する前記ステップは、
複数の不揮発性記憶素子の前記第１グループの閾値分布を判定するステップと、
前記閾値分布の基準点を決定するステップと、
前記第１グループに記憶されたデータがリフレッシュされるべきか否かを、前記基準点の変化に基づいて判定するステップと、
を備える、請求項１ないし３の何れか１項に記載の方法。
【請求項５】
前記閾値分布の基準点を決定する前記ステップは、
前記第１グループ内の前記複数の不揮発性記憶素子の少なくとも一部分に複数の読み出し基準電圧を印加するステップと、
前記読み出し基準電圧を印加するステップに基づいて、前記閾値分布内の谷間を検出するステップを備え、
前記複数の読み出し基準電圧は、前記第１閾値電圧分布および前記第２閾値電圧分布の一部を含む電圧範囲に印加され、
前記谷間は前記基準点である、請求項４に記載の方法。
【請求項６】
前記第１グループは複数のワードラインに関連しており、
前記方法は、複数のワードラインから、前記複数の読み出し基準電圧を印加する第１ワードラインをランダムに選択するステップをさらに備える、請求項５に記載の方法。
【請求項７】
デバイス内の複数の不揮発性記憶素子の第１グループに記憶されたデータのリフレッシュが実行されるべきである旨を判定するステップは、他のワードラインの位置に対する前記第１ワードラインの位置にさらに基づく、請求項６に記載の方法。
【請求項８】
デバイス内の複数の不揮発性記憶素子の第１グループに記憶されたデータのリフレッシュが実行されるべきである旨を判定するステップは、前記第１グループ内の１つまたは複数の不揮発性記憶素子がプログラムされた回数にさらに基づく、請求項７に記載の方法。
【請求項９】
デバイス内の複数の不揮発性記憶素子の第２グループがリフレッシュ処理を受けるべきであるか否かを判定するステップは、
前記デバイス内の複数の不揮発性記憶素子の複数のグループの各々についての連続番号にアクセスするステップを備え、
前記連続番号は、前記複数のグループがプログラムされた順番を示しており、
前記連続番号は、前記第１グループのための第１連続番号と前記第２グループのための第２連続番号を備えており、
前記第１連続番号よりも低い連続番号を有するグループ内のデータがリフレッシュされるべき旨を判定するステップを備え、
前記第２連続番号は前記第１連続番号よりも低い、請求項１または２に記載の方法。
【請求項１０】
第１グループ（ブロックｉ）と第２グループ（ブロックｉ＋ｎ）を含んでいる、複数の不揮発性記憶素子の複数のグループと、
複数の不揮発性記憶素子の前記複数のグループと通信する管理回路（２２０，２３０，２４０，２４２，２４４）と、を備え、
前記管理回路は、デバイス内の複数の不揮発性記憶素子の第１グループに記憶されたデータのリフレッシュが実行されるべきである旨を、前記第１グループ内の１つまたは複数の不揮発性記憶素子の状態に基づいて判定し、
前記管理回路は、デバイス内の複数の不揮発性記憶素子の第２グループがリフレッシュ処理を受けるべきである旨を、複数の不揮発性記憶素子の前記第１グループが最後にプログラムされたときに対して複数の不揮発性記憶素子の前記第２グループがいつ最後にプログラムされたかに基づいて判定し、
前記管理回路は、前記第２グループ内の１つまたは複数の不揮発性記憶素子の状態に基づいて、複数の不揮発性記憶素子の第２グループに記憶されたデータをリフレッシュするか否かを決定し、
前記管理回路は、前記第２グループに前記リフレッシュ処理を実行する、不揮発性記憶装置。
【請求項１１】
前記管理回路は、前記第１グループを第１閾値電圧分布および第２閾値電圧分布を備える複数の閾値電圧分布にプログラムし、
前記管理回路は、複数の不揮発性記憶素子の前記第１グループの閾値分布を判定し、
前記管理回路は、前記閾値分布内の谷間を検出し、
前記管理回路は、複数の不揮発性記憶素子の前記第１グループに記憶されたデータのリフレッシュが実行されるべきか否かを、前記谷間の変化に基づいて判定する、請求項１０に記載の不揮発性記憶装置。
【請求項１２】
前記管理回路は、前記第１グループ内の前記複数の不揮発性記憶素子の少なくとも一部分に複数の読み出し基準電圧を印加することで、前記谷間を検出し、
前記管理回路は、前記複数の読み出し基準電圧を、前記第１閾値電圧分布および前記第２閾値電圧分布の一部を含む電圧範囲に印加する、請求項１１に記載の不揮発性記憶装置。
【請求項１３】
前記管理回路は、前記第１グループが最後にプログラムされたときよりも前に、前記第２グループが最後にプログラムされたか否かに基づいて、複数の不揮発性記憶素子の前記第２グループが前記リフレッシュ処理を受けるべきであるか否かを判定する、請求項１０に記載の不揮発性記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶装置のための技術に関する。
【背景技術】
【０００２】
半導体メモリは、様々な電子デバイスで使われることが一般的になってきている。例えば、不揮発性半導体メモリは、パーソナルナビゲーションシステム、携帯電話、デジタルカメラ、パーソナル・デジタル・アシスタント、モバイルコンピュータ、非モバイルコンピュータ、及び他の装置に使用されている。電気的消去・再書込み可能型読取専用メモリ（ＥＥＰＲＯＭ）とフラッシュメモリは、最も普及している不揮発性半導体メモリである。
【０００３】
ＥＥＰＲＯＭとフラッシュメモリは、半導体基板内のチャネル領域上に配置され、そのチャネル領域から絶縁されているフローティングゲートを採用している。フローティングゲートとチャネル領域は、ソース領域とドレイン領域の間に配置されている。フローティングゲートの上に、そのフローティングゲートから絶縁されている制御ゲートが設けられている。トランジスタの閾値電圧は、フローティングゲート上に保持されている電荷量によって制御される。即ち、そのソースとドレインの間の導通を可能にすべくトランジスタをオンするために制御ゲートに印加すべき電圧の最小量は、そのフローティングゲート上の電荷量レベルにより制御される。
【０００４】
ＥＥＰＲＯＭやＮＡＮＤ型フラッシュメモリデバイスなどのフラッシュメモリデバイスに書き込みを行う場合、典型的には、ビットラインが接地されるとともに、制御ゲートに書き込み電圧が加えられる。チャネルからの電子がフローティングゲートへ注入される。フローティングゲートに電子が蓄積されると、フローティングゲートが負値に帯電し、メモリセルの閾値電圧が上昇し、メモリセルが書き込まれた状態となる。書き込みに関するさらなる情報は、「Source Side Self Boosting Technique for Non-Volatile Memory」と題した米国特許第６，８５９，３９７号、「Detecting Over Programmed Memory」と題した米国特許第６，９１７，５４２号、及び、「Programming Non-Volatile Memory」と題した米国特許第６，８８８，７５８号に開示されている。これらの３つの文献の内容は、その全体を参照することにより本明細書に組み込まれる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
多くの場合、書き込み電圧は、パルス毎にその大きさが増加する一連のパルス（書き込みパルスと称する）として制御ゲートに印加される。書き込みパルスとパルスの間には、１以上の一連の検証動作が実行され、書き込まれたメモリセルがその目標レベルに達しているか否かが決定される。メモリセルがその目標レベルに達している場合、そのメモリセルに対する書き込みが終了する。メモリセルがその目標レベルに達していない場合、そのメモリセルに対して書き込みが継続される。
【０００６】
一部のＥＥＰＲＯＭおよびフラッシュメモリ装置は、電荷の２つの範囲を記憶するために使用されるフローティングゲートを備える。従って、メモリセルは、２つの状態（消去状態およびプログラム状態）の間で、プログラムまたは消去される。そのようなフラッシュメモリ装置は、バイナリメモリ装置と呼ばれることがある。
【０００７】
マルチステートメモリデバイスは、明確で有効な閾値電圧（Ｖｔ）分布（またはデータ状態）を特定することで、１セルにつきデータの多数ビットを記憶する。明確なＶｔ分布の各々は、メモリデバイスで復号されたデータビットの集合についての所定の値に対応する。例えば、データの２ビットを記憶する１メモリセルは、４個の有効なＶｔ分布を使用する。データの３ビットを記憶するメモリセルは、８個の有効なＶｔ分布を使用する。
【０００８】
不揮発性記憶素子が一旦プログラムされると、そのプログラミング状態を高い信頼性で読み返すことができることが重要である。しかしながら、検出されたプログラミング状態は、時間とともに電荷的中性に引き寄せられるデバイスの傾向やノイズ等の要因により、時として意図されたプログラミング状態から変化することがある。温度などの環境的な要因がプログラム状態の変化のレートに影響することに留意されたい。例えば、高温にさらすことによって、メモリセルが電荷的中性に非常に早く引き寄せられることがある。
【０００９】
その結果、不揮発性メモリを読み出すときに、エラーデータビットまたは破損したデータビットに出くわすことがある。一般的に、何らかのエラー検査訂正アルゴリズム（「訂正アルゴリズム」）が、破損したデータビットを検査し訂正するために適用される。１つの共通する訂正アルゴリズムは、書き込み処理の間に、データビットのグループのパリティを要求される論理レベルに設定するために、追加のパリティビットを記憶する。追加のパリティビットは、時としてエラー訂正符号（ＥＣＣ）と呼ばれる。読み出し処理の間、訂正アルゴリズムは、破損したデータを検出するためにデータビットのグループのパリティを計算することで、ビットを復号する。訂正アルゴリズムは、破損の程度が深刻ではないデータを訂正する。一部の実施形態では、データがより破損するほど、訂正アルゴリズムがデータを訂正するための時間が長くなる。
【００１０】
データを破損から守るために、メモリセル内のデータがリフレッシュされ、データが所望の閾値電圧に戻されてもよい。メモリセルのブロック内のデータをリフレッシュするステップは、データを読み出すステップ、訂正アルゴリズムで検出されたエラーを訂正するステップ、および、ウェアレべリング（wear leveling）を備えるスキームの一部として異なるブロックにデータを書き込むステップ、によって多くの場合達成される。しかしながら、必要な場合には、データを同一のブロックに再書き込みすることもできる。データを過度の頻度でリフレッシュすることは、メモリセルに過度のストレスを与えることがあり、好ましくない。さらに、データをリフレッシュすることは、ユーザ自身のメモリアクセスを阻害することがある。
【００１１】
従って、一方、データが十分な頻度でリフレッシュされない場合には、データが失われたり、訂正アルゴリズムがデータの訂正に長時間かかるためにメモリアクセスが遅くなることがある。他方、データが過度の頻度でリフレッシュされる場合には、メモリデバイスに過度のストレスがかかったり、ユーザのメモリアクセスが妨害されることがある。
【００１２】
さらに、メモリデバイスが広範囲の温度などの多様な環境条件にさらされることがあるため、いつデータをリフレッシュするかを決定することは特に困難である。例えば、駐車された自動車内に放置されることがある小型ナビゲーション装置に、メモリデバイスが組み込まれることがある。夏の間、自動車内の温度は非常に高い温度まで上昇することがある。一方、メモリデバイスが高温度にさらされることなく、長期間経過することがある。従って、温度などの環境条件がデータ保持力に及ぼす影響を予期することは、非常に困難である。
【課題を解決するための手段】
【００１３】
本明細書で開示される技術では、エラーまたは破損したデータビットに対処するために十分な頻度であるが、メモリアクセスの邪魔やメモリセルに過度のストレスをかけない程度の頻度で、不揮発性記憶装置のデータをリフレッシュする。本技術は、広範囲の温度などの多様な環境条件にさらされることがあるメモリデバイスに好適である。
【００１４】
一実施形態は、デバイス内の複数の不揮発性記憶素子の第１グループに記憶されたデータのリフレッシュの実行を、前記第１グループ内のデータの状態に基づいて判定するステップと、デバイス内の複数の不揮発性記憶素子の第２グループがリフレッシュ処理を受けるべきである旨を、複数の不揮発性記憶素子の前記第１グループが最後にプログラムされたときに対して複数の不揮発性記憶素子の前記第２グループがいつ最後にプログラムされたかに基づいて判定するステップと、不揮発性記憶素子の前記第２グループに前記リフレッシュ処理を実行するステップと、を備える。
【００１５】
一実施形態は、マルチステートな不揮発性記憶素子の集合にデータを書き込むステップと、不揮発性記憶素子の第１グループに記憶されたデータがリフレッシュされるべきか否かを、前記第１グループ内の一つまたは複数の状態に基づいて判定するステップと、前記第１グループに記憶されたデータがリフレッシュされるべき旨が決定された場合に、前記集合内の何れの不揮発性記憶素子が、複数の不揮発性記憶素子の前記第１グループよりも前にプロラムされたかを判定するステップと、前記第１グループの前に書き込まれた複数の不揮発性記憶素子がリフレッシュ処理を受けるべきである旨を判定するステップと、を備える。
【００１６】
一実施形態は、複数の不揮発性記憶素子で構成されているマルチステートメモリデバイスを、動作させる方法である。前記方法は、第１のブロック内の１つまたは複数の不揮発性記憶素子にデータ完全性の問題が存在する旨を判定するステップと、前記第１ブロックに先立って前記デバイス内の何れのブロックが書き込まれたかを判断するステップと、前記第１ブロックに先立って書き込まれた前記ブロック内の複数の不揮発性記憶素子にデータ完全性の問題が存在するか否かを判断することなく、前記第１ブロックに記憶されたデータおよび前記第１ブロックに先立って書き込まれたブロックをリフレッシュするステップと、を備える。
【００１７】
１つの実施例は、複数の不揮発性記憶素子の集合と、この不揮発性記憶素子の集合と通信する１つまたは複数の管理回路とを含む。１つまたは複数の管理回路は上述したプロセスを実行する。
【図面の簡単な説明】
【００１８】
【図１】ＮＡＮＤストリングの平面図である。
【図２】ＮＡＮＤストリングの等価回路図である。
【図３】不揮発性メモリシステムのブロック図である。
【図４】メモリアレイの一実施例を示すブロック図である。
【図５】センスブロックの一実施例を示すブロック図である。
【図６Ａ】閾値電圧分布の集合の一例を示す図である。
【図６Ｂ】閾値電圧分布の集合の一例を示す図である。
【図７】本発明の実施例に関連する記憶デバイスが搭載される携帯デバイスの一例を示す図である。
【図８】どのブロックがデータリフレッシュされるべきかを判定する処理の一実施形態を示す図である。
【図９Ａ】メモリアレイのブロックに記憶されたデータをリフレッシュするプロセスの一実施形態を記述するフローチャートである。
【図９Ｂ】不揮発性メモリをプログラミングするプロセスの一実施形態を記述するフローチャートである。
【図１０Ａ】データ完全性の問題がブロックに存在するか否かを判定するプロセスの一実施形態を記述するフローチャートである。
【図１０Ｂ】訂正アルゴリズムによって何ビットが訂正される必要があるかに基づいて、データリフレッシュが必要とされているか否かを判定するプロセスの一実施形態を記述するフローチャートである。
【図１０Ｃ】訂正アルゴリズムが収束するのにどのくらいの期間がかかるかに基づいて、データリフレッシュが必要とされているか否かを判定するプロセスの一実施形態を記述するフローチャートである。
【図１１】分布関数の一例を示す図である。
【図１２】データリフレッシュが必要か否かを判定するための値を記憶するテーブルの一実施形態を示す図である。
【図１３Ａ】リフレッシュ処理の候補ブロックを特定するプロセスの一実施形態を示す図である。
【図１３Ｂ】リフレッシュ処理の候補ブロックを特定するプロセスの一実施形態を記述するフローチャートである。
【図１４】リフレッシュ処理の候補ブロックを特定するために使用される連続番号を管理するプロセスの一実施形態を示す図である。
【図１５】リフレッシュ処理の候補ブロックを選択するために使用されるタイムスタンプを管理するプロセスの一実施形態を示す図である。
【図１６】データ保持力の問題を緩和するための操作を行うようにユーザに警告するプロセスの一実施形態を示す図である。
【発明を実施するための形態】
【００１９】
フラッシュメモリシステムの一例は、ＮＡＮＤ構造を用いており、２つの選択ゲートの間に複数のトランジスタの直列接続を含んでいる。直列に接続されたトランジスタと選択ゲートは、ＮＡＮＤストリングと呼ばれる。図１は、１つのＮＡＮＤストリングを示す平面図である。図２は、その等価回路である。図１と図２に示すＮＡＮＤストリングは、第１（又はドレイン側）選択ゲート１２０と第２（又はソース側）選択ゲート１２２の間に挟まれている、直列に接続されている４つのトランジスタ１００、１０２、１０４及び１０６を有する。選択ゲート１２０は、ビットコンタクト１２６を介してＮＡＮＤストリングをビットラインに接続している。選択ゲート１２２は、ＮＡＮＤストリングをソースライン１２８に接続している。選択ゲート１２０は、選択ラインＳＧＤに適切な電圧を加えることによって制御される。選択ゲート１２２は、選択ラインＳＧＳに適切な電圧を加えることによって制御される。トランジスタ１００、１０２、１０４、及び１０６の夫々は、制御ゲートとフローティングゲートを有している。例えば、トランジスタ１００は、制御ゲート１００ＣＧとフローティングゲート１００ＦＧを備えている。トランジスタ１０２は、制御ゲート１０２ＣＧとフローティングゲート１０２ＦＧを備えている。トランジスタ１０４は、制御ゲート１０４ＣＧとフローティングゲート１０４ＦＧを備えている。トランジスタ１０６は、制御ゲート１０６ＣＧとフローティングゲート１０６ＦＧを備えている。制御ゲート１００ＣＧはワードラインＷＬ３に接続されており、制御ゲート１０２ＣＧはワードラインＷＬ２に接続されており、制御ゲート１０４ＣＧはワードラインＷＬ１に接続されており、制御ゲート１０６ＣＧはワードラインＷＬ０に接続されている。
【００２０】
図１と図２は、ＮＡＮＤストリング内の４個のメモリセルを示しているが、４個のトランジスタの使用は単に一例として提示されている点に留意されたい。ＮＡＮＤストリングは、４個よりも少ない、或いは、４個よりも多いメモリセルを有していてよい。例えば、ＮＡＮＤストリングによっては８個、１６個、３２個、６４個、１２８個などの数のメモリセルを有していてよい。本明細書の説明は、いかなる特定個数のメモリセルを有するＮＡＮＤストリングにも限定されない。
【００２１】
ＮＡＮＤ構造を用いたフラッシュメモリシステムの一般的なアーキテクチャは、いくつかのＮＡＮＤストリングを含んでいる。各ＮＡＮＤストリングは、選択ラインＳＧＳによって制御されるソース選択ゲートによってソースラインに接続されているとともに、選択ラインＳＧＤによって制御されるドレイン選択ゲートによって関連するビットラインに接続されている。各ビットラインとそのビットラインにビットラインコンタクトを介して接続されている夫々のＮＡＮＤストリングは、メモリセルアレイの列を構成する。ビットラインは、複数のＮＡＮＤストリングによって共有されている。典型的には、ビットラインは、ワードラインと直交する方向でＮＡＮＤストリング上を通っており、１以上のセンスアンプと接続されている。
【００２２】
各メモリセルは（アナログ又はデジタルの）データを記憶することができる。１ビットのデジタルデータを記憶する場合、メモリセルの可能な閾値電圧の範囲は、２つの範囲に分割され、それぞれの範囲が論理データの「１」と「０」に割り当てられる。ＮＡＮＤ型フラッシュメモリの一例では、メモリセルが消去された後では閾値電圧が負値となり、それは論理「１」と定義される。書き込み後の閾値電圧は正値となり、それは論理「１」と定義される。閾値電圧が負値であり、制御ゲートに０ボルトが印加される読み出しが試みられた場合、メモリセルがオンとなり、これは論理１が記憶されていることを示す。閾値電圧が正値であり、制御ゲートに０ボルトが印加される読み出しが試みられた場合、メモリセルはオンせず、これは論理０が記憶されていることを示す。
【００２３】
複数レベルのデータを記憶する場合には、可能な閾値の範囲は、データのレベルの数に分割される。例えば、４つのレベルの情報を記憶する場合（２ビットのデータ）、４つの閾値電圧範囲が存在し、それぞれがデータ値「１１」、「１０」、「０１」、及び「００」に割り当てられる。ＮＡＮＤタイプのメモリの一例では、消去動作の後の閾値電圧は負の値となり、論理「１１」と定義される。正値の閾値電圧群が「１０」、「０１」、「００」というデータ状態に対して用いられる。８つのレベルの情報（又は状態）が記憶される場合（即ち、３ビットのデータ）、データ値「０００」、「００１」、「０１０」、「０１１」、「１００」、「１０１」、「１１０」、及び「１１１」に割り当てられる８つの閾値電圧範囲がある。
【００２４】
メモリセルに書き込まれるデータとセルの閾値電圧レベルの間の具体的な関係は、セルに採用されるデータ符号化方式によって決まる。例えば、両方ともその全体を参照することにより本明細書に組み込まれる米国特許第６，２２２，７６２号及び米国特許出願公開公報第２００４／０２５５０９０号は、マルチステートフラッシュメモリセルのための様々なデータ符号化方式を説明している。一実施形態においては、フローティングゲートの閾値電圧が誤ってその近傍の物理状態にシフトした場合に１つのビットだけが影響を受けるように、グレイコード割当を用いてデータ値が閾値電圧範囲に割り当てられる。他の実施形態では、異なるワードラインに対してデータ符号化技法が変更され得ることがある。データ符号化技法は、時間に依存して変更され得ることがある。また、ランダムなワードラインのデータビットは、データパターン感度を低減し、メモリセルのウェアを均一にするために、変換されるか、或いはランダム化されることがある。
【００２５】
ＮＡＮＤタイプのフラッシュメモリおよびそれらの動作に関連する例は、以下の米国特許／特許出願に記載されており、それらの引用文献は、その全体が参照により本明細書に組み込まれる。米国特許第５，５７０，３１５号、米国特許第５，７７４，３９７号、米国特許第６，０４６，９３５号、米国特許第６，４５６，５２８号、及び、米国公開公報第ＵＳ２００３／０００２３４８号。本明細書における説明は、他のタイプの不揮発性記憶素子と同様に、ＮＡＮＤを加えた他のタイプのフラッシュメモリにも利用可能である。
【００２６】
ＮＡＮＤフラッシュメモリに加えて、不揮発性記憶装置の他のタイプもまた用いることができる。例えば、基本的に（フローティングゲートの代わりに）窒化物層内に電荷をトラッピングするメモリセルである、いわゆるＴＡＮＯＳ構造（ＴａＮ−Ａｌ２Ｏ３−ＳｉＮ−ＳｉＯ２の積層から構成される構造）にも本発明は適用できる。フラッシュＥＥＰＲＯＭシステムで有用な別のタイプのメモリセルは、不揮発方式で電荷を蓄積するために、導電性フローティングゲートの代わりに非導電性の誘電物質を活用する。そのようなセルは、Chanらによる記事、「A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device」、IEEE ELECTRON DEVICE Letters、ＥＤＬ−８巻、第３号、１９８７年３月の９３から９５ページに説明されている。酸化ケイ素、窒化ケイ素、及び酸化ケイ素（「ＯＮＯ」）から形成される三層の誘電体が、メモリセルチャネル上で半導電性基板の表面と導電性制御ゲートとの間に挟まれている。セルは、セルチャネルから窒化物の中に電子を注入することにより書込みが行われ、窒化物内において電子が制限領域内にトラッピングされ蓄積される。この蓄積された電荷は、次に、検出可能な方法で、セルのチャネルの一部の閾値電圧を変更する。セルは、窒化物中にホットホールを注入することによって消去される。Nozakiら、「A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application」、IEEE Journal of Solid-State Circuits、第２６巻、第４号、１９９１年４月、４９７から５０１ページに、分離した選択トランジスタを形成するためにドーピングされたポリシリコンゲートがメモリセルチャネルの一部に拡がっている分割ゲート構成における同様のセルが説明されている。その文献も参照されたい。前記２つの記事は、その全体を参照することにより本明細書に組み込まれる。参照することにより本明細書に組み込まれるWilliam D. Brown及びJoe E. Brewerによって編集された「Nonvolatile Semiconductor Memory Technology」、ＩＥＥＥ出版１９９８年の第１．２項にも、誘電電荷トラップ装置に適用可能である書き込み技法が説明されている。他のタイプのメモリ素子も使用できる。
【００２７】
図３は、１つ以上のメモリダイ又はチップ２１２を有する不揮発性記憶デバイス２１０を示している。メモリダイ２１２は、メモリセルの（２次元又は３次元の）アレイ２００、制御回路２２０、及び、リード／ライト回路２３０Ａと２３０Ｂを有する。一実施形態では、様々な周辺回路によるメモリアレイ２００へのアクセスはアレイの両側で対称的に実装されており、これにより、各側のアクセスライン及び回路の密度が半分に低減される。リード／ライト回路２３０Ａ及び２３０Ｂは、複数のセンスブロック３００を有しており、それらのセンスブロック３００によって１ページのメモリセルを並列に読み出し又は書き込みすることができる。メモリアレイ２００は、行デコーダ２４０Ａと２４０Ｂを介したワードラインと、列デコーダ２４２Ａと２４２Ｂを介したビットラインによってアドレス指定される。典型的な実施形態では、コントローラ２４４は、１つ以上のメモリダイ２１２のような同じメモリデバイス２１０（例えば、取り外し可能なストレージカード又はパッケージ）内に含まれる。命令、及びデータは、ライン２３２を介してホストとコントローラ２４４の間で転送され、また、ライン２３４を介してコントローラと１つ以上のメモリダイ２１２の間で転送される。
【００２８】
制御回路２２０は、リード／ライト回路２３０Ａと２３０Ｂと協調して、メモリアレイ２００に対してメモリ動作を実行する。制御回路２２０は、ステートマシン２２２、オンチップアドレスデコーダ２２４、及び電力制御モジュール２２６を有している。ステートマシン２２２は、メモリ動作のチップレベルの制御を提供する。オンチップアドレスデコーダ２２４は、ホスト又はメモリコントローラによって用いられるアドレスと、デコーダ２４０Ａ、２４０Ｂ、２４２Ａ及び２４２Ｂによって用いられるハードウェアアドレスの間のアドレスを転換するためにアドレスインタフェースを提供する。電力制御モジュール２２６は、メモリ動作中のワードライン及びビットラインに供給される電力及び電圧を制御する。一実施形態では、電力制御モジュール２２６は、供給電力より大きな電圧を作り出すことができる一つ以上のチャージポンプを有する。
【００２９】
一実施形態では、制御回路２２０、電力制御回路２２６、デコーダ回路２２４、ステートマシン回路２２２、デコーダ回路２４２Ａ、デコーダ回路２４２Ｂ、デコーダ回路２４０Ａ、デコーダ回路２４０Ｂ、リード／ライト回路２３０Ａ、リード／ライト回路２３０Ｂ、及び／又はコントローラ２４４の一つ又は幾つかの組合せは、１つの管理回路、或いは複数の管理回路群と称されることがある。
【００３０】
図４は、メモリセルアレイ２００の例示的な構造を示す。一実施形態においては、メモリセルのアレイは、メモリセル群のＭ個のブロックに分割される。フラッシュＥＥＰＲＯＭシステムに一般的であるように、ブロックは消去の単位である。すなわち、各ブロックは共に消去される最小数のメモリセルを含む。各ブロックは、通常、複数のページに分割される。ページは書き込みの単位である。通常、１つ又は複数ページのデータが１列のメモリセルに記憶される。１つのページは、１つ又は複数のセクタを記憶できる。１つのセクタは、ユーザデータとオーバヘッドデータを含む。オーバヘッドデータは、通常、セクタのユーザデータから算出される誤り訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ：ＥＣＣ）を含む。コントローラ（後述）の一部が、データがアレイに書き込まれているときにＥＣＣを計算し、データがアレイから読み出されているときにＥＣＣのチェックも行う。代わりに、ＥＣＣ及び／又は他のオーバヘッドデータはそれらが関係するユーザデータとは異なるページに記憶され、または異なるブロックに記憶されることがある。ユーザデータのセクタは通常、磁気ディスクドライブ内のセクタサイズに相当する５１２バイトである。例えば８ページから３２、６４、１２８、或いはそれ以上のページまでの多数のページが１ブロックを形成する。異なるサイズのブロックと配置も採用することができる。
【００３１】
別の実施形態では、ビットラインは偶数のビットラインと奇数のビットラインに分けられる。奇数／偶数ビットラインアーキテクチャでは、共通ワードラインに沿っており奇数ビットラインに接続されたメモリセル群は、同時に書き込みが行われる。これに対し、共通ワードラインに沿っており偶数ビットラインに接続されたメモリセル群は、奇数ビットラインに接続されたメモリセル群の書き込みとは別のタイミングで同時に書き込みが行われる。
【００３２】
図４は、メモリアレイ２００の第ｉブロックの詳細を示している。第ｉブロックは、Ｘ＋１ビットラインとＸ＋１ＮＡＮＤストリングを含んでいる。第１ブロックは、６４本のデータワードライン（ＷＬ０−ＷＬ６３）、２本のダミーワードライン（ＷＬ＿ｄ０、ＷＬ＿ｄ１）、ドレイン側選択ライン（ＳＧＤ）、及び、ソース側選択ライン（ＳＧＳ）も含んでいる。各ＮＡＮＤストリングの一端は、（選択ラインＳＧＤに接続されている）ドレイン選択ゲートを介して対応するビットラインに接続されており、他端は、（選択ラインＳＧＳに接続されている）ソース選択ゲートを介してソースラインに接続されている。６４本のデータワードラインと２本のダミーワードラインが存在するので、各ＮＡＮＤストリングは、６４個のデータメモリセルと２個のダミーメモリセルを含んでいる。他の実施形態では、ＮＡＮＤストリングは、６４個より多い、或いは少ないデータメモリセルと２個のダミーメモリセルを有していてもよい。他の実施形態では、ＮＡＮＤストリングは、おおよそ６４個のデータメモリセルと２個のダミーメモリセルとを有していてもよい。データメモリセルは、ユーザ又はシステムのデータを記憶することができる。ダミーメモリセルは、通常、ユーザ又はシステムのデータを記憶するのには用いられない。幾つかの実施形態は、ダミーメモリセルを有していない。
【００３３】
図５は、センスモジュール４８０と呼ばれるコア部と共通部４９０に分割された個々のセンスブロック３００のブロック図である。一実施形態では、各ビットラインに対して個別のセンスモジュール４８０を用意し、複数の複数センスモジュール４８０に対して一つの共通部４９０を用意してもよい。一例として、１個のセンスブロックは、１個の共通部４９０と８個のセンスモジュール４８０を有している。グループ内の各センスモジュールは、データバス４７２を介して協働する共通部と通信する。さらなる詳細としては、その全体を参照することにより本明細書に組み込まれる米国特許出願公開公報２００６／０１４０００７号を参照されたい。
【００３４】
センスモジュール４８０は、接続されたビットライン内の伝導電流が予め決められた閾値レベルより高いか低いかを判定するセンス回路４７０を備えている。幾つかの実施形態では、センスモジュール４８０は、センスアンプと一般に呼ばれる回路を有する。センスモジュール４８０は、さらに、接続されたビットラインに電圧状態を設定するために用いられるビットラインラッチ４８２を有している。例えば、ビットラインラッチ４８２内で予め決められた状態がラッチされることによって、接続されたビットラインを、書き込み禁止を指定する状態（例えば、Ｖｄｄ）に引き上げる（プル）する。
【００３５】
共通部４９０は、プロセッサ４９２、複数のデータラッチ４９４、及び、複数のデータラッチ４９４とデータバス４２０の間を接続するＩ／Ｏインタフェース４９６を備えている。プロセッサ４９２は計算を実行する。例えば、その機能の１つは、センスされたメモリセル内に記憶されているデータを特定し、特定されたデータを複数のデータラッチ内に記憶することである。複数のデータラッチ４９４は、読み出し動作において、プロセッサ４９２によって特定されたデータビット群を記憶するために用いられる。複数のデータラッチ４９４は、書き込み動作において、データバス４２０から取り込んだデータビット群を記憶するためにも用いられる。取り込まれるデータビット群は、メモリ内に書き込む予定のライトデータ（書き込みデータ）を表す。Ｉ／Ｏインタフェース４９６は、データラッチ４９４とデータバス４２０の間のインタフェースを提供する。
【００３６】
読み出し又はセンス中には、システムの動作はステートマシン２２２の制御下にあり、ステートマシン２２２はアドレス指定されたセルへの種々の制御ゲート電圧の供給を制御する。メモリに用意された様々なメモリ状態に対応する様々な既定制御ゲート電圧のステップを進む毎に、センスモジュール４８０はこれらの電圧の１つに遷移し、バス４７２を介してセンスモジュール４８０からプロセッサ４９２に出力が提供される。その時点で、プロセッサ４９２は、センスモジュールの遷移イベントと、ステートマシンから入力ライン４９３を介して加えられた制御ゲート電圧についての情報によって、結果としてのメモリ状態を特定する。それから、プロセッサは、メモリ状態に対するバイナリ符号化を計算し、得られたデータビット群をデータラッチ４９４に格納する。コア部の別の実施形態では、ビットラインラッチ４８２は、センスモジュール４８０の出力をラッチするラッチ、及び、上記のようなビットラインラッチの二つの役割を持つ。
【００３７】
当然のことながら、いくつかの実装形態では複数のプロセッサ４９２を有することができる。一実施形態では、各プロセッサ４９２は出力ライン（図５には示されていない）を有し、各出力ラインは共にワイヤードＯＲ（配線論理和）接続される。いくつかの実施形態では、出力ラインは、ワイヤードＯＲラインに接続される前段階で反転される。この構成は、ワイヤードＯＲの結果を受け取るステートマシンが、書き込まれる全てのビットがいつ所望のレベルに到達したかを判断できるので、書き込み処理の完了時点を判定する書き込み検証処理における素早い判定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理「０」がワイヤードＯＲラインに送られる（又はデータ「１」が反転される）。全てのビットがデータ「０」を出力すると（又はデータ「１」が反転されると）、ステートマシンは書き込み処理の完了を知る。各プロセッサが８個のセンスモジュールと通信する実施形態では、（いくつかの実施形態において）ステートマシンはワイヤードＯＲラインを８回読み出す必要があってもよいし、あるいは、協働するビットラインの結果を蓄積するための論理をプロセッサ４９２に追加し、ステートマシンがワイヤードＯＲラインを一度だけ読み出せば良いようにしてもよい。
【００３８】
書き込み又は検証処理の間、書き込まれるべきデータはデータバス４２０から複数のデータラッチ４９４内に記憶される。ステートマシン制御下の書き込み動作は、アドレス指定されるメモリセルの制御ゲートに加えられる一連の（値の増加を伴う）書き込み電圧パルスを伴う。各書き込みパルスに続いて検証処理が実行され、メモリセルが所望の状態に書き込まれたかどうかを判定する。プロセッサ４９２は、所望のメモリ状態に対する検証メモリ状態を監視する。その２つが一致したとき、プロセッサ４９２は、書き込み禁止を指定する状態にビットラインを引き上げる（プルする）ようにビットラインラッチ４８２を設定する。これにより、たとえ書き込みパルスがその制御ゲートに影響しても、ビットラインに接続したセルがさらに書き込みされないようにすることができる。他の実施形態では、プロセッサが最初にビットラインラッチ４８２をロードし、センス回路が検証処理中にそれに禁止値を設定する。
【００３９】
データラッチスタック４９４は、センスモジュールに対応するデータラッチのスタックを有する。一実施形態では、センスモジュール４８０毎に３個から５個の（或いはその他の数の）データラッチが存在する。一実施形態では、ラッチは夫々１ビットである。いくつかの実装形態では、（必須ではないが）データラッチはシフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス４２０用にシリアルデータに変換したり、その逆を行ったりする。好適な一実施形態では、ｍ個のメモリセルのリード／ライトブロックに対応する全てのデータラッチを相互にリンクしてブロックシフトレジスタを構成し、シリアル転送によってデータのブロックを入力または出力できるようにする。特に、リード／ライトモジュールの一群のデータラッチのそれぞれが、データバスへ或いはデータバスからデータを順に転送するようにリード／ライトモジュールのバンクを構成し、一群のデータラッチがあたかもリード／ライトブロック全体のシフトレジスタの一部であるかのようにしてもよい。
【００４０】
読み出し動作やセンスアンプについてのさらなる情報は次の文献に記載されている。（１）米国特許第７，１９６，９３１号、「Non-Volatile Memory And Method With Reduced Source Line Bias Errors」、（２）米国特許第７，０２３，７３６号、「Non-Volatile Memory And Method with Improved Sensing」、（３）米国特許出願公開公報第２００５／０１６９０８２号、（４）米国特許第７，１９６，９２８号、「Compensating for Coupling During Read Operations of Non-Volatile Memory」、及び、（５）米国特許出願公開公報第２００６／０１５８９４７号、「Reference Sense Amplifier For Non-Volatile Memory」、２００６年７月２０日発行。これら５個の特許文献の全ては、その全体を参照することにより本明細書に組み込まれる。
【００４１】
成功した（検証を含む）書き込み処理の最後において、メモリセルの閾値電圧は、必要に応じて、書き込まれたメモリセルの１つ又は複数の閾値電圧の分布内、或いは、消去されたメモリセルの閾値電圧の分布内となる。図６Ａは、各メモリセルが４ビットデータを記憶する場合のメモリセルアレイについてのデータ状態に対応した閾値電圧分布の例を示す。なお、他の実施形態では、１メモリセルあたり４ビットよりも多い、或いは少ないデータを採用してもよい。図６Ａは、データ状態０−１５に対応する１６個の閾値電圧分布を示している。一実施形態では、状態０の閾値電圧は負値であり、状態１−１５の閾値電圧は正値である。しかし、１以上の状態１−１５の閾値電圧は負でもよい。
【００４２】
データ状態０−１５の夫々の間は、メモリセルからデータを読み出す際に用いられる読み出し参照電圧である。例えば、図６Ａは、データ状態０と１の間の読み出し参照電圧Ｖｒ１と、データ状態１と２の間の読み出し参照電圧Ｖｒ２を示している。メモリセルの閾値電圧が各読み出し参照電圧よりも高いか低いかを検証することによって、システムは、そのメモリセルがどの状態にあるかを決定することができる。
【００４３】
各データ状態０−１５の下限或いはその付近は、検証参照電圧である。例えは、図６Ａは、状態１に対するＶｖ１と、状態２に対するＶｖ２を示している。目標の状態へのメモリセルの書き込みの際、システムは、それらのメモリセルが検証参照電圧に等しいかそれより高い閾値電圧を有するか否かをテストする。
【００４４】
図６Ｂは、データ状態０−１５に対応する閾値電圧分布の他の実施形態を示している。この実施形態では、ＥＣＣが、エラーとなっているある程度の割合のセルを扱うことができるので、閾値電圧分布が部分的にオーバーラップすることができる。
【００４５】
Ｖｔ軸は、制御ゲートに印加される実際の電圧からオフセットされ得ることに留意されたい。オフセットは、ソースを通じたボディ効果、或いは、負値の閾値電圧を測定可能な正値範囲にシフトさせるためにボディバイアスが用いられることにより生じる。図示された１６個の状態の等間隔／等幅とは異なり、保持力損失に対する脆弱性の度合いの違いに対応するために、状態は異なる幅／間隔を有していてもよいことにも留意されたい。幾つかの実施形態では、状態０及び／又は状態１５は、他の状態よりも広い。
【００４６】
図７は、本発明の実施形態に従った記憶デバイス２１０が組み込まれた、例示的な携帯デバイス７００を示す図である。例示デバイス７００は、小型ナビゲーション装置として使用されるような、ＧＰＳ情報を受信するための全地球測位衛星（ＧＰＳ）受信機７１０を有する。ＧＰＳ情報によって決定されるデバイスの位置に基づいて、ユーザに対してプロセッサ７２０がディスプレイ７０２上に表示する地図を記憶するために、記憶デバイス２１０が使用されることがある。
【００４７】
一般的に、ユーザが地図を記憶デバイス２１０に一旦記憶させると、長期間、ユーザは記憶された地図を上書きする必要がない。例えば、地図データの大部分は、数年間は変化しないことがある。本開示の実施形態は、どのくらいの頻度で地図データなどのデータをリフレッシュするかを決定する。決定される頻度は、データを保護するために十分な頻度だが、ユーザの邪魔や記憶デバイス２１０に過度のストレスをかけない程度の頻度である。例示デバイス７００は、記憶デバイス２１０が組み込まれたデバイスの一例である。しかしながら、組み込まれた記憶デバイス２１０は、パーソナル・デジタル・アシスタントや、携帯電話や、パーソナル・メディア・プレイヤーに用いることもできる。
【００４８】
図８は、記憶デバイス２１０内の何れのブロックのデータがリフレッシュされるべきかを決定する、プロセス８００の一実施形態を示す図である。一般的に、プロセス８００は、セル当りに４ビットを記憶する図６Ａや６Ｂの例に示すように、１つのメモリセル当りに１ビットより多いビットが記憶されているブロックに対して用いられる。プロセス８００は、記憶デバイス２１０の電源が投入された後、アイドル時間が発生したらすぐに開始することができ、その後は定期的な間隔で行うことができる。一実施形態では、記憶デバイス２１０は、携帯機器自体の電源が切られていても電源に長期間接続されることがある携帯機器（例：小型ナビゲーション装置）に組み込まれる。例えば、小型ナビゲーション装置は、自動車のシガーソケットに数日間接続された状態とされることがある。この場合、プロセス８００が定期的に実行されるとすることができる。一実施形態では、プロセス８００は、訂正アルゴリズムの遂行に基づいて開始される。例えば、訂正アルゴリズムが収束するのに長時間かかる場合や、訂正アルゴリズムによって訂正される必要のあるデータビットの数が臨界値よりも大きい場合には、（検出された問題やその他に関連する）特定のブロックのデータがリフレッシュされるべきか否かを判定するために、プロセス８００が開始される。
【００４９】
ステップ８０２では、データ保持力問題や読み出し阻害問題などの、データ完全性の問題についてテストをするため、メモリアレイ２００の１つのブロックが選択される。しかしながら、データ完全性の問題の原因（例：データ保持力）は、明確に特定される必要はない。一実施形態では、メモリアレイ２００内の複数ブロックは、各ブロックがテストされるように、連続的にテストされる。しかしながら、複数のブロックは、ランダムな順番や最後にプログラムされた順番などの、異なる順序でテストすることもできる。プロセス８００がメモリアレイ２００内の全てのブロックをテストすることは、必要とされない。例えば、最近プログラムされたブロックに対するテストを延期することができる。しかしながら、温度の履歴は監視および記録するのが難しく、データ完全性の問題に対する効果を予測することは困難な場合がある。例えば、記憶デバイス２１０が高温にさらされたか否かを直接に判断することが困難な場合がある。例えば、温度データを監視し記録することができるロジック回路を駆動するための何れの電源も無い状態で、記憶デバイス２１０が高温環境下に放置されることがある。その結果、最近プログラムされたブロックでさえ、データ完全性の問題の看過を避けるためにテストされることがある。
【００５０】
一実施形態では、プロセス８００は、テストを行うために、メモリアレイ２００内のブロックの小さなサンプルを選択するだけである。一実施形態では、データ完全性問題のために、１メモリセルにつき特定の最小数のビットを記憶しているブロックのみがテストされる。例えば、あるブロックは１メモリセルにつき１ビットを記憶しているかもしれないし、他のブロックは１セルにつき４ビットを記憶しているかもしれない。このような場合、１メモリセルにつき１ビットを記憶しているブロックは、Ｖｔ分布の間に非常に大きなギャップを有しており、テストする必要がない。
【００５１】
幾つかの実施形態では、データのブロックの全体が原則的に同時に書き込まれることを、システムは保証する。この場合、選択されたブロック内の各ワードラインがデータ完全性の問題について解析される必要はない。基本的に同時に書き込むことは、ブロックの書き込みが中断された場合にはブロックへの書き込みは中止される、というルールをシステムが実行することを意味する。すなわち、ブロック内のデータは破棄され、そのデータは他のブロックにその後に書き込まれる。基本的に同時に書き込むことは、全てのワードラインが同時にプログラムされることを意味しないことに留意されたい。一般的には、ワードラインは連続的にプログラムされる。
【００５２】
ブロック全体に基本的に同時に書き込む例は、各メモリセルが１ビットを記憶するブロック（バイナリブロック）に、データを一時的に記憶することである。そして、４つのそのようなバイナリブロックが満たされた後に、各メモリセルが４ビットを記憶するブロック（ここでは、“Ｘ４ブロック”と呼ぶ）に、当該データが書き込まれる。Ｘ４ブロックへのデータの書き込みが中断される場合には、そのＸ４ブロックへの書き込みは中止される。その後において、複数のバイナリブロックに依然残っているデータが、他のＸ４ブロックに書き込まれる。そのような書き込みが中断なく完了した場合には、ブロック書き込みは成功する。従って、Ｘ４ブロック内の全データは、基本的に同時に書き込まれる。
【００５３】
ステップ８０４において、選択されたブロック内の１本のワードラインが、データ完全性の解析のために選択される。ある実施形態では、複数のワードラインがある特定の順番で書き込まれることを、システムは保証する。複数のワードラインが特定の順番で書き込まれる実施形態では、書き込まれたブロック内の第１ワードラインが、データ完全性の解析のために選択される。一実施形態では、ワードラインの選択はランダムに行われる。必要に応じて、ブロック内の多数のワードラインがデータ完全性のために解析されるとすることもできる。ブロック内の全てのワードラインが、選択の候補となる必要はない。一実施形態では、他のワードラインよりも問題があることが知られているワードラインが、データ完全性の解析のために選択されてもよい。例えば、各ブロックの第１のワードラインがデータ完全性の問題に対して強く影響を受け易い、という工学特性が、既に判明している場合がある。他の実施形態では、１ブロックについて１本のワードラインをテストする場合には、ブロックの中心に近いワードラインがより好適であるとして、ブロックの端部に近いワードラインが候補要員から除外されてもよい。
【００５４】
プロセス８００の一実施形態では１本のワードラインがランダムに選択されるが、ワードラインがランダムに選択されることは必須ではない。一実施形態では、各ワードライン（または、少なくとも候補群の各々のワードライン）がテストされるように、テストされたワードラインの記録が保持される。例えば、ブロックがテストされるたびに異なるワードラインがテストされるようにして、ワードラインのテストを連続的に続行することができる。
【００５５】
ステップ８０６において、ブロックの選択されたワードラインに記憶されたデータが、ブロックがリフレッシュされるべきである旨を意味するデータ完全性の問題を有するか否かについての判定が行われる。図１０Ａ、１０Ｂおよび１０Ｃは、データ完全性の問題の有無を判定するために用いることができる、幾つかの技術の詳細を示している。簡潔に説明すると、ある技術は、ブロック内の１つまたは複数のＶｔ分布が、データ保持力の問題が存在することを示唆することができる許容量よりも大きく変化したか否かを判定するステップを備えている。そのような変化は、読み出し障害などの他の問題もまた示唆することがある。この変化についてのテストは、全てのＶｔ分布が変化について解析されることを必要としない。
【００５６】
データ完全性の問題についてテストする他の技術は、選択されたブロック内のワードラインから読み出されるデータに、訂正アルゴリズムを動作させるステップを備える。訂正アルゴリズムによって訂正される必要のあるビット数に基づいて、または、訂正アルゴリズムが解決に収束するためにかかる時間の長さによって、データ完全性問題は示される。
【００５７】
ブロックがデータ完全性の問題を有さない場合には、テストのための他のブロックを選択するために、制御はステップ８０２へ移る。選択されたブロックがデータ完全性の問題を有する場合には、ある時点でブロック内のデータをリフレッシュできるように、データ完全性の問題についての記録が保持される。データは即座にリフレッシュされる必要がないことに留意されたい。例えば、何れかのブロックのデータリフレッシュを実行する前に、何れのブロックがリフレッシュされるかについての判定が行なわれるとしてもよい。場合によっては、データリフレッシュが実行される前に、デバイスの電源が落とされてもよい。一実施形態では、どのデータブロックがリフレッシュされるべきかを記録するために、スペアブロックが使用される。図９Ａは、データをリフレッシュする過程を示す。
【００５８】
１のブロックがデータ完全性の問題を有していると一旦特定されると、多くの他のブロックもまた同様の問題を抱えている可能性が高いことに留意されたい。例えば、データ完全性の問題がメモリデバイスが高温下にさらされたことによるものである場合には、他のブロックもまた同様のデータ完全性の問題を有することがある。このことは、問題のあるブロックの直前、または問題のあるブロックの直後に最後のプログラムが行われた他のブロックについて、特に当てはまる。従って、これらの他のブロックは、リフレッシュ処理についての候補になることがある。従って、ブロックがデータ完全性問題を有する（以後、“不良ブロック”と呼ぶ）とステップ８０６で判定された場合には、リフレッシュ処理に関する他のブロックを特定するために、制御はステップ８０８へ移る。
【００５９】
ステップ８０８において、不良ブロックが最後にプログラムされたときと比較して、他の複数のブロックがいつ最後にプログラムされたかに基づいて、リフレッシュ処理のためにブロックが特定される。ここで、これらの他の複数のブロックは“候補ブロック”と呼ばれてもよい。例えば、不良ブロックの前にプログラムされた全てのブロックは、候補ブロックとして特定される。しかしながら、不良ブロックがプログラムされた後の一定期間内にプログラムされたブロックもまた、候補ブロックとして特定されてもよい。
【００６０】
ステップ８１０において、候補ブロックに対してリフレッシュ処理が行なわれる。リフレッシュ処理は、候補ブロック内のデータがリフレッシュされるべきか否かを判定する。一実施形態では、リフレッシュ処理は、データ完全性の問題が候補ブロックに存在するか否かを判断することなく、自動的に候補ブロック内のデータをリフレッシュする。このような自動的にデータリフレッシュする実施形態では、ステップ８１０を実行するために、図９Ａのプロセス９００が用いられる。
【００６１】
一実施形態では、ステップ８１０のリフレッシュ処理は、候補ブロック内のデータをリフレッシュするか否かを決定するために、候補ブロックにデータ完全性の問題が存在するか否かを判定する。図１０Ａ、１０Ｂ、１０Ｃのプロセスの何れか、または他のプロセスを、候補ブロック内のワードラインにデータ完全性の問題が存在するか否かを判定するために用いることができる。ブロック全体が基本的に同時に書き込まれる実施形態では、候補ブロック内のテストされるワードラインが、ランダムに選択される。図１０Ａ、１０Ｂ、１０Ｃのプロセスの１つが、候補ブロックにデータ完全性の問題が存在すると判断する場合には、候補ブロック内のデータをリフレッシュするために、図９Ａのプロセス９００が用いられるとしてもよい。
【００６２】
プロセス８００のある繰り返しの間に、ステップ８０６によってデータ完全性について候補ブロックがテストされ、プロセス８００の別の繰り返しのステップ８１０において、データ完全性について再びテストされることが可能であることに留意されたい。しかしながらステップ８１０では、ステップ８０６でテストされたワードラインが選択されることよりも、ランダムに選択された異なるワードラインがテストのために選択されることの方が、より起こりうる。同様に、ステップ８０６で使用されたテストとは異なるデータ完全性のテストを用いることができる。例えば、ステップ８０６で、図１０Ｂのテスト（訂正アルゴリズムによって何ビットの訂正が必要かを判定する）が使用されているとすることができる。その一方で、ステップ８１０で、図１０Ｂのテスト（Ｖｔ分布の変化を検出する）が使用されるとすることができる。しかしながら、同一のテストが異なるパラメータで使用されるとすることもできる。例えば、ブロックに２度目のテストを行う場合には、データリフレッシュを開始するための、訂正アルゴリズムによる訂正を必要としているビット数を異ならせることができる。
【００６３】
戦略的に特定された候補ブロック内のデータをリフレッシュすることで、プロセス８００は、データ喪失を防止することが十分な頻度であるが、デバイス２１０に過度のストレスを与えたりメモリアレイ２００へのユーザアクセスを阻害することのない頻度で、データをリフレッシュする。一部の候補ブロックはステップ８０２−８０６においてデータ完全性の問題について直近にテストされてもよいが、テストはデータをリフレッシュするという判定結果とならなかったことに留意されたい。この考えられる理由としては、データ完全性の問題の深刻度が、データリフレッシュを開始させるための閾値に十分でなかったことが挙げられる。
【００６４】
不良ブロックが最後にプログラムされたときと比較して候補ブロックがいつ最後にプログラムされたかに基づいて、候補ブロックにリフレッシュ処理を実行することによって、デバイス２１０に過度のストレスを与える程度に頻繁ではなく、データ完全性の問題が訂正アルゴリズムによって訂正するほどに深刻になってしまう程度に低頻度ではないような適切な時期に、記憶デバイス２１０内のブロックがリフレッシュされる。
【００６５】
例えば、夏の間の自動車の内部など、記憶デバイス２１０が極度に高温の環境下に放置された場合を考える。記憶デバイス２１０をこのような高温にすることは、電荷の損失／獲得のレートを非常に加速させ、データ保持力の問題を引き起こす可能性がある。しかしながら、デバイスは必ずしも高温にさらされるわけではないため、単にデータを頻繁にリフレッシュすることは必要とされないことに留意されたい。さらに、頻繁なデータのリフレッシュは、デバイスに過度のストレスを与えたり、デバイスの通常の使用を妨げることがあるため、好ましくない場合がある。
【００６６】
図９Ａは、メモリアレイ２００のブロック内に記憶されたデータをリフレッシュするプロセス９００の、一実施形態を示すフローチャートである。プロセス８００のステップ８０６またはステップ８１０によって特定されたブロックについて、プロセス９００が開始される。一実施形態では、プロセス９００は１つのブロック内の全てのページをリフレッシュする。しかしながら、全てのページ内のデータがリフレッシュされる必要はない。ステップ９０２では、リフレッシュされるブロックから、データが読み出される。前述のように、ブロックについてのデータが当初に記憶されていた場合には、パリティ検査ビットがセクタごとに計算され、パリティ検査ビットがＥＣＣ符号化メカニズムの一部としてユーザデータと結合されていた。データの記憶に先立ち、データをランダム化するために、スクランブル処理が用いられてもよいことに留意されたい。一部の実施形態では、１本のワードライン上の複数のセルは、数個のセクタまたはＥＣＣページを形成する。セクタのデータは、最初はスクランブル化され、その後ＥＣＣエンジンによって符号化されてもよい。幾つかのセクタに対応する、スクランブルされＥＣＣ符号化されたデータは、蓄積された後に１本のワードラインに同時に書き込まれるとすることができる。例えば、１本のワードラインは、４つのセクタ相当のデータに対応してもよい。一部のアーキテクチャでは、１本のワードライン上の全てのセルが同時に書き込まれるとすることができる。１ブロックのプログラミングは、各プレーン（plane）において一度に１本のワードラインにデータを書き込むことで構成されている。全てのビット線が一緒にプログラムされるようなＮＡＮＤアーキテクチャ（ＡＢＬ  ＮＡＮＤアーキテクチャ）の一例は、米国特許出願公開公報第２００６／０１５８９４７号に記載されている。
【００６７】
ステップ９０４において、データを訂正するために丁度読み出されたデータに、ＥＣＣアルゴリズムが実行される。一実施形態では、コントローラ２４４は、５１２ビットについて６ビット以上を訂正することが可能な、強力なエラー訂正アルゴリズムを実行する。一実施形態では、コントローラ２４４は反復復号技術を実行する。一実施形態では、コントローラ２４４は、マルチビット／セル・フラッシュメモリで、確率的エラー訂正を実行する。マルチビット／セル・フラッシュメモリのエラー訂正を実行するステップの更なる詳細は、「Probabilistic Error Correction in Multi-bit-per-cell Flash Memory;」と題した、２００７年４月１９日発行の米国公開特許出願第２００７／００８６２３９号、および、「Method of Error Correction in MBC Flash Memory;」と題した、２００７年４月１９日発行の米国公開特許出願第２００７／００８９０３４号に記載されている。各々の文献の内容は、参照することにより本明細書に組み込まれる。ステップ９０６において、訂正されたデータがメモリアレイ２００の１つのブロックに書き込まれる。一実施形態では、「ウェアレベリング（wear leveling）」を実現するために、リフレッシュされたブロックとは異なるブロックに、データは常に書き込まれる。すなわち、異なるブロックへのデータ書き込みは、各ブロックに行われたプログラミングの回数を平均化することに役立つ。一実施形態では、新たなブロックへまたは同一のブロックへデータをリフレッシュするかどうかについての判断が行なわれる。この判断は、ブロックの最後の書き込みからの時間、および／または、ブロックがプログラムされた回数の「ホットカウント（hot count）」に基づいて行われても良い。例えば、ブロックが最近プログラムされた場合、および／または、ホットカウントが高い場合、異なるブロックにデータを書き込むことが望ましいことがある。一部の実施形態では、各ブロックは、自己のホットカウントを記憶する。
【００６８】
一実施形態では、リフレッシュ処理９００が完了するまでデバイスの電源を切らない旨のメッセージが、ユーザへ表示される。しかしながら、そのようなメッセージが表示されるか否かに関わらず、データリフレッシュの間にユーザはデバイスの電源を切ることができる。またユーザは、メモリアレイ２００にアクセスすることで、リフレッシュ処理を中断することができる。従って、プロセス９００が中断された場合にプロセス９００を再開されることができるように、データリフレッシュプロセス９００の経過の記録が不揮発性メモリに保持される。
【００６９】
図９Ｂは、選択されたワードラインに接続された複数のメモリセルにプログラミングするプログラミング処理を記述するフローチャートである。一実施形態では、図９Ｂのプロセスは、データの１ページをプログラムするために用いられる。従って、図９Ｂのプロセスは、プロセス９００のステップ９０６で書き込まれる１つのブロック内の異なる複数のページをプログラムするために、多くの回数使用される。
【００７０】
図９Ｂの処理の一実施形態では、プログラミングの前に複数のメモリセルが消去される（ステップ９４０）。一実施形態では、ｐウェルを十分な期間にわたって消去電圧（例：２０ボルト）に昇圧し、選択されたブロックのワードラインを接地するとともに、ソースおよびビットラインをフローティングさせることで、メモリセルが消去される。容量結合のため、選択されていないワードライン、ビットライン、選択ライン、及び、共通ソースラインは、同様に消去電圧のかなりの割合まで上昇させられる。このようにして、典型的に、ファウラー・ノルドハイム・トンネル効果によってフローティングゲートの電子が基板側に放出されると、強力な電界が選択されたメモリセルのトンネル酸化物層に印加され、選択されたメモリセルのデータが消去される。電子がフローティングゲートからｐウェル領域に移動するとき、選択されたセルの閾値電圧が低下する。消去は、メモリアレイ全体、個々のブロック、又はセルの別のユニットで実行されてもよい。メモリセルのブロックが消去された後、本明細書中に記載されているように、様々なメモリセルが書き込まれ、又は、部分的に書き込まれ得る。なお、ステップ９４０で実行される消去は、ブロックの各ワードラインが書き込まれる前に実行される必要はない。それどころか、ブロックを消去し、その後、ワードラインの書き込みと書き込みとの間で消去することなく、各ワードラインを書き込むことが可能である。
【００７１】
ステップ９４２において、消去されたメモリセルについての消去閾値電圧の分布を狭めるために、ソフトプログラミングが実行される。消去処理の結果、一部のメモリセルは、必要な状態よりも深い消去状態になることがある。ソフトプログラミングは、消去されたメモリセルの閾値電圧を消去検証レベルの近くに移動させるために、小さなプログラミングパルスを印加することができる。ステップ９５０で、「データロード」コマンドがコントローラ２４４によって発行され、ステートマシン２２２に入力される。ステップ９５２で、ページアドレスを指定するアドレスデータがデコーダ２２４に供給される。ステップ９５４で、アドレス指定されたページのための１ページの書き込みデータが書き込みのために入力される。例えば、一実施形態では、５２８バイトのデータが入力されうる。このデータは、選択されたビットラインのための適切なレジスタ／ラッチにラッチされる。一部の実施形態では、データは、検証動作のために使用されるべき選択されたビットラインのための第２レジスタの中にさらにラッチされる。ステップ９５６で、「書き込み」コマンドがコントローラ２４４から受信され、ステートマシン２２２に供給される。
【００７２】
「書き込み」コマンドによってもたらされ、ステップ９５４においてラッチされたデータは、適切なワードラインに印加された電圧を使用してステートマシン２２２によって制御される選択されたメモリセルに書き込まれる。ステップ９５８で、書き込み信号「Ｖｐｇｍ」（例えば、一連の電圧パルス）が初期値（例えば、約１２Ｖ又は別の適当なレベル）に初期化され、ステートマシン２２２によって保持されるプログラムカウンタＰＣが０に初期化される。ステップ９６０で、書き込み信号Ｖｐｇｍのパルスは、選択されたワードラインに印加される。選択されていないワードラインは、「Ｖｐａｓｓ」と称される１つ以上の昇圧電圧を受ける。対応するメモリセルが書き込まれるべきことを示唆する論理「０」が特有のデータラッチに記憶される場合、対応するビットラインは接地される。これに反して、対応するメモリセルがこのメモリセルのデータ状態に留まるべきであることを示唆する論理「１」が特有のラッチに記憶される場合、書き込みを禁止するため、対応するビットラインがＶＤＤに接続される。なお、書き込み信号は、パルスの大きさが各連続パルスと共に増大する複数の電圧パルスを含む。電圧パルスの間には、複数の検証パルスが存在する。
【００７３】
ステップ９６２で、選択されたメモリセルの状態は、上述のように、適切な目標レベルの組を使用して検証される。選択されたセルの閾値電圧が適切な目標レベルに到達したことが検出された場合、対応するデータラッチの中に記憶されたデータは論理「１」に変更される。閾値電圧が適切な目標レベルに到達していないことが検出された場合、対応するデータラッチの中に記憶されたデータは変更されない。このようにして、対応するデータラッチに記憶されている論理「１」を有するビットラインは、書き込まれる必要がない。すべてのデータラッチが論理「１」を記憶しているとき、ステートマシン２２２は、すべての選択されたセルに書き込まれたことがわかる。ステップ９６４で、すべてのデータラッチが論理「１」を記憶しているか否かがチェックされる。もしそうであるならば、すべての選択されたメモリセルは書き込まれ、これらのメモリセルの目標状態に対し検証されているので、書き込み処理は、完結し、成功している。この場合、「合格」ステータスがステップ９６６で通知される。なお、一部の実施例では、ステップ９６４で、少なくとも所定数のデータラッチが論理「１」を記憶しているか否かがチェックされる。この所定数は、すべてのデータラッチの数未満でもよく、それによって、すべてのメモリセルがこれらのメモリセルの適切な検証レベルに到達する前に書き込み処理が停止することを可能にする。書き込みに成功していないメモリセルは、読み出し処理中に誤り訂正を使用して訂正されることが可能である。
【００７４】
ステップ９６４で、データラッチのすべてが論理「１」を記憶しているのではないと判定された場合、書き込み処理が継続する。ステップ９６８で、プログラムカウンタＰＣは、プログラム限界値と対照してチェックされる。プログラム限界値の一実施例は２０であるが、他の値が様々な実施例において使用できる。プログラムカウンタＰＣがプログラム限界値未満でない場合、ステップ９６９で、書き込みに成功しなかったメモリセルの数が所定数以下であるか否かが判定される。書き込みに成功しなかったメモリセルの数が所定数以下である場合、書き込み処理は合格としてフラグが立てられ、合格というステータスがステップ９７１で通知される。多くの場合、書き込みに成功しなかったメモリセルは、読み出し処理中に誤り訂正を使用して訂正することができる。しかし、書き込みに成功しなかったメモリセルの数が既定数より多い場合、書き込み処理は失敗としてフラグが立てられ、失敗というステータスがステップ９７０で通知される。ステップ９６８において、プログラムカウンタＰＣがプログラム限界値（例えば、２０）未満であると判定された場合、次のＶｐｇｍ電圧パルスの大きさは、ステップサイズ（例えば、０．１〜０．４ボルトステップサイズ）で増大され、プログラムカウンタＰＣはステップ９７２でインクリメントされる。ステップ９７２の後に、処理は、一巡してステップ９６０へ戻され、次のＶｐｇｍ電圧パルスを印加する。
【００７５】
一般に、（図９Ｂのステップ９６２の間に実行される検証動作のような）検証動作及び読み出し動作の間は、選択されたワードラインは電圧に接続され、この電圧のレベルは、関係しているメモリセルの閾値電圧がこのようなレベルに到達したか否かを判定するために、読み出し及び検証のそれぞれの動作に対し指定される。ワードライン電圧を印加した後、メモリセルの伝導電流は、メモリセルがワードラインに印加された電圧に応答してオンにされたか否かを判定するために測定される。測定された伝導電流がある一定の値より大きい場合、メモリセルがオンになったこと、及び、ワードラインに印加された電圧がメモリセルの閾値電圧より大きいことが想定される。測定された伝導電流がある一定の値より大きくない場合、メモリセルがオンにならなかったこと、及び、ワードラインに印加された電圧がメモリセルの閾値電圧より大きくないことが想定される。
【００７６】
読み出し又は検証動作中にメモリセルの伝導電流を測定する多数の方法がある。一実施例では、メモリセルの伝導電流は、メモリセルがセンスアンプ内の専用コンデンサを放電又は充電するレートで測定される。別の実施例では、選択されたメモリセルの伝導電流は、このメモリセルを含むＮＡＮＤストリングが、対応するビットラインを放電させることを可能にする（又は可能にしない）。ビットライン上の電圧は、この電圧が放電されたか否かを調べるためにある期間後に測定される。
【００７７】
図１０Ａは、１つのブロックにデータ完全性の問題が存在するか否かを判定するプロセス１０００の、一実施形態を示すフローチャートである。プロセス１０００は、図８のステップ８０６を実行するために用いることができる。プロセス１０００は、候補ブロックがデータ完全性の問題を有するか否かについての判定を実行するステップ８１０の、リフレッシュ処理の実施形態のためにも用いることが可能である。ステップ１００２において、複数の不揮発性記憶素子の高分解能スキャンが実行される。スキャンは、制限された範囲内で実行されてもよい。例えば、図６Ｂを参照して、スキャンは状態１４および１５の一部に実行されてもよい。高分解能スキャンは、通常読み出し処理に比してより高い分解能で、多数の読み出しを実行する。検出するデータ完全性の問題について全てのデータを訂正するために、１ブロック内の１本のみのワードライン（またはその一部分）がスキャンされる必要がある。しかしながら、必要に応じて、多数のワードラインからのデータをスキャンすることもできる。ここで、高分解能読み出しポイントを、「ソフト読み出し」と呼ぶ。
【００７８】
図１１は、分布関数１１０１（制御ゲート電圧の関数としてのセルのカウント数）を示す図である。分布１１０１は、例えば、図６Ｂに記載されたような１６個のＶｔ分布のうちの約４つに対応する。分布は、メモリセルを異なる状態にプログラミングすることによって生じるＶｔ分布に対応する頂点の間に、「谷間」を有する。一実施形態では、分布関数１１０１内の谷底１１１１の一つが決定される。１つの谷底に対応する閾値電圧のみが決定される必要があるため、分布関数１１０１の一部のみが決定される。図１１に記載された例では、１６個の異なる制御ゲート電圧（ソフト読み出し電圧Ｖｓｒ１−Ｖｓｒ１６）が、実線で示された分布１１０１の一部分を取り出すために使用される。１６より多いまたは少ないソフト読み出し電圧を用いることもできる。分布１１０１の点線部分は、より広範囲の制御ゲート電圧が印加された場合に、どのように分布１１０１が出現するかを示している。
【００７９】
一実施形態では、多種の状態にプログラミングすることによって生じるＶｔ分布の期待特性に基づいて、識別の対象とされた谷間が決定される。例えば、Ｖｔ分布と、異なるＶｔ分布を発生させると期待される変化量と、の間で期待される分離などの要因に基づいて、谷間が選択されてもよい。幾つかの不揮発性記憶デバイスでは、より高い電圧のＶｔ分布はより大きな分離を有し、より大きな変化を経ることが期待されている。しかしながら、各状態は、異なるデータ完全性の問題によって異なる影響を受ける一方で、どの谷間を特定するかの決定に影響することに留意されたい。例えば、状態１５は、他の状態よりもより大きな広がりによって、読み出し障害に悩まされることがある。従って、データ保持力の問題についての測定が目的である場合には、読み出し障害の影響を多分に受けている状態を読み出すことを回避するか、または、読み出し障害がＶｔ分布の変化にどのように影響するかを少なくとも織り込むことが、好ましいことがある。高分解能スキャンは、（１６個のデータ状態を用いる実施形態における）他の１４個のＶｔ分布の何れも含まない、非常に限定された電圧範囲を超えて実行されることに留意されたい。従って、読み出し処理の合計数は、適度に低い数に保たれる。一方、状態１４および１５の間の谷間（例えば、１６個の状態がある場合の最も高い谷間）に対するスキャンを選択することは、以下の理由により好ましいことがある。分布内での下方への変化が多いことがあり、状態１４と１５の間の谷間は、状態１３と１４の間の谷間として誤って解釈されることがある。２つの最も高い状態の間の谷間を探索することは、この問題を緩和する。
【００８０】
分布を測定するために、ブロック内の選択されたワードラインのメモリセルの制御ゲートに、ソフト読み出し電圧Ｖｓｒ１−Ｖｓ１６が連続的に印加される。例えば、メモリセルの制御ゲートに印加される電圧は、連続する各電圧ごとに、例えば、５０ｍＶのステップサイズで段階的に上昇される。ソフト読み出しの各々に応答して導通する（ターンオンする）メモリセルの数が記録される。各所定のセルに記憶された実際のデータが記録される必要はない。さらに正確には、ソフト読み出し電圧の各々に応答して、幾つのメモリセルが導通（ターンオン）するかの分析に基づいて、分布１１０１の形状を決定することができる。
【００８１】
プロセス１０００のステップ１００４において、分布関数内の谷底が決定される。一実施形態では、谷底電圧が特定される。谷底電圧の目的は、少なくとも１つのＶｔ分布がどのくらい変化したかを測定するための基準点を備えることである。谷底電圧１１１１の例が、図１１のＶｔ分布１１０２ａと１１０２ｂとの間に記載されている。一実施形態では、基準点は谷底以外の何れかの場所に存在する。例えば、基準電圧は分布関数１１０１の頂点に存在してもよい。
【００８２】
一実施形態では、閾値電圧分布データの第１の平滑化によって、谷が決定される。多数の既知の関数のうちの何れか１つを、閾値電圧分布データを平滑化するために用いることができる。例えば、データを平滑化するために、ローパスフィルタを用いることができる。導関数についての情報を生成し記憶する、多くの方法および種類が存在するが、ある特定の方法や種類が要求されることはない。次に、谷を特定するためのゼロ交差を探索するために、導関数計算の計算結果が調査される。
【００８３】
以下に、谷を見つけるための他の技術を記載する。この実施形態では、関数で閾値電圧分布データを畳み込み積分することで、閾値電圧分布データが平滑化される。一実施形態では、関数はガウス関数である。他の実施形態では、ガウス関数の前および後ろのテール部分が除去されたため、関数は先端を切断したガウス関数である。他の実施形態では、ガウス関数以外の関数を用いることもできる。平滑化されたデータの導関数が決定される。次に、谷を特定するための、負から正へ変化するゼロ交差を見つけるために、導関数計算の計算結果が調査される。
【００８４】
谷の位置を特定するために使用可能な１つの追加の技術は、閾値電圧分布データを２乗することである。これは、データにさらにコントラストを与えることに役立つことがある。そして、閾値電圧分布データの２乗値は、上述した方法の何れかを用いて平滑化される。次に、平滑化されたデータの導関数が決定され、ゼロ交差から谷間が決定される。
【００８５】
ステップ１００６において、基準点（例：谷底電圧の閾値電圧）に基づいて、Ｖｔ分布の変化が測定される。他の例では、分布関数の頂点の閾値電圧に基づいて、Ｖｔ分布１１０２ｂの変化が測定されうる。一実施形態では、分布関数１１０１の頂点を特定するために、上述された導関数技術を適合することができる。一実施形態では、Ｖｔ分布の変化は、谷底電圧と基準電圧との差として算出される。プログラミング後のＶｔ分布１１０２ｂの期待される形状に基づいて、基準電圧を決定することができる。期待される形状は、工学特性によって決めることができる。従って、基準電圧を決定するために、フィールド（field）内のプログラミング直後のＶｔ分布１１０２ａおよび１１０２ｂの形状が決定される必要はない。第１のプログラムが行われた場合に、Ｖｔ分布１１０２ａ、１１０２ｂが全く重ならないことがあることにも留意されたい。プログラミングの間に電荷が除去されるか追加されるかによるデータ保持力問題の結果として、Ｖｔ分布１１０２ａ、１１０２ｂが右または左へ変化することがあることに留意されたい。
【００８６】
ステップ１００８では、Ｖｔ分布の変化に（少なくとも一部は）基づいて、データをリフレッシュするか否かについての判断が行われる。データリフレッシュを必要とする変化量は、それらの変化が正確にデータを読み出す能力にどのように影響するかの実験室試験に基づいて決定することができる。ブロックのデータがリフレッシュされる場合には、図９Ａのプロセス９００が実行される。しかしながら、データリフレッシュは即座に実行される必要はない。例えば、メモリアレイ２００全体のうちのどのブロックがリフレッシュされるかについての決定が行われるまで、データリフレッシュを延期することができる。折を見てデータリフレッシュ（例：プロセス９００）が実行できるように、リフレッシュされるブロックの記録は保持される。ある場合には、デバイス２１０の電源が落とされる前には、データリフレッシュが実行されない。従って、記録はスペアブロックなどの不揮発性メモリに保持すべきである。
【００８７】
ステップ１００８のリフレッシュ判定は、Ｖｔ分布変化以外の、または、Ｖｔ分布変化に追加される、多くの因子に基づく。メモリセルが高い閾値電圧を有する状態は、低い閾値電圧に関連する状態よりも、電荷をより早いレートで喪失／獲得する場合があることに留意されたい。従って、リフレッシュ判定の一つの因子は、どの状態が解析中のＶｔ分布に関連するかである。前述した通り、保持力損失に対する脆弱性の度合いの違いに対応するために、状態は異なる幅／間隔を有していてもよい。従って、より変化する傾向がある状態は、Ｖｔ分布の変化を測定するためにより適している。しかしながら、複数の状態の何れかを、Ｖｔ分布の変化を測定するために使用することができる。特定の記憶デバイスの異なるＶｔ分布変化特性は、実験室でデバイスに対して行われるテストに基づいて獲得されてもよい。
【００８８】
リフレッシュ判定で考慮される他の因子は、どの（１本のまたは複数の）ワードラインがデータ完全性についてテストされたかである。上述のように、一実施形態では、データ完全性の問題のテストのために、１本のワードラインが選択される。異なるワードラインは、データ保持力などのデータ完全性問題に関して、異なる特性を有することがある。一部のワードラインの特性が他のワードラインに非常に近似しているために、異なる複数のワードラインが一組にグループ化されてもよいことに留意されたい。
【００８９】
まだ考慮される他の因子は、ブロックがプログラムされた回数である。その回数は、別名として「ホットカウント」と呼ばれる。ホットカウントは、ブロックのオーバーヘッドとして記憶されてもよい。多数回プログラムされたブロックは、数回しかプログラムされていないブロックに比して、より早く電荷的中性へ遷移する傾向があることがある。従って、少なくとも幾つかの記憶デバイスにおいて、高いホットカウントのブロックは、低いホットカウントのブロックに比して、Ｖｔ分布のより小さな変化でリフレッシュする必要がある可能性がある。
【００９０】
他の因子は、ブロックがプログラムされてから経過した時間である。しかしながら、デバイスは環境条件の極端な違いを受けることがあるため、最後の書き込みからの時間は、それ自身では、データをリフレッシュする必要性についての信頼性のある指標にならないことがある。すなわち、最後のプログラミングからの時間に対して過度に依存すると、時間パラメータが長すぎる場合に必要とされるリフレッシュをし損ねたり、時間パラメータが短かすぎる場合にリフレッシュを頻繁に行いすぎてしまうことがある。しかしながら、多数の因子中の一つの因子として時間パラメータを用いることは、際どい事例でデータをリフレッシュするか否かを判定する場合に、有益な場合がある。
【００９１】
考慮する他の因子は、現在の電源電圧である。現在の電源電圧は、Ｖｔ分布が交差する点を判定するために用いられるソフト読み出し電圧の大きさなど、電圧の多くの大きさに影響することがある。
【００９２】
リフレッシュ判定は、選択されたブロックがプログラムされた時の温度および現在の温度に基づくこともできる。トランジスタの閾値電圧は温度の関数であることに留意されたい。従って、これら２つの温度が大幅に異なる場合には、Ｖｔ分布の変化を予期することができる。一実施形態では、記憶デバイス２１０は、閾値電圧の温度により誘発された変化などを補償するための温度補償を内蔵している。この場合、リフレッシュ判定を行う際に、温度の因子を不必要にすることができる。
【００９３】
一実施形態では、記憶デバイス２１０は、前述の因子がどのようにリフレッシュ判定に影響するかを記述する、多軸の「リフレッシュ因子」テーブルを記憶する。リフレッシュ因子テーブルは、テーブルが管理回路にアクセス可能になるなど、記憶デバイス２１０を顧客に供給する前に、メモリアレイ２００に記憶されてもよい。図１２は、１６個の異なる状態（Ｓ０−Ｓ１５）についての第１の軸と、ワードライン（ＷＬ）の５個の異なるグループについての第２の軸とを備える、２軸テーブル１２００の例を示す図である。実際には、各セルは、そのセルに関連する要因によってどの程度Ｖｔ分布が変化することが許容されるかを判定するために用いられる値を含んでいる。例えば、状態１３に関連するセルおよびＷＬ１１−ＷＬ２３は、値「Ｖｘ」を有する。図が分かりにくくならないように、テーブル例１２００の他のセルには、値は記載されていない。
【００９４】
特定の例として、ワードライン１７がテストされ状態１３が解析される場合に、データ完全性の問題が存在するか否かを判定するために、テーブル１２００を参照してＶｔ分布の変化が値「Ｖｘ」と比較される場合を説明する。テーブル１２００は、各軸が前述の因子の一つまたは他の因子に関連している、より多くの軸を有していてもよい。例えば、テーブル１２００は、異なるホットカウント範囲に関連する他の軸を有していてもよい。
【００９５】
図１０Ｂは、訂正アルゴリズムによって何ビットが訂正される必要があるかに基づいて、データリフレッシュが必要か否かを判定する、プロセス１０３０の一実施形態を示している。プロセス１０３０は、図８のステップ８０６を実行するための一技術である。ステップ１０３２では、選択されたワードラインのセルが読みだされる。前述した通り、一実施形態では、ワードラインはランダムに選択される。
【００９６】
ステップ１０３４では、今読みだされたデータにＥＣＣアルゴリズムが実行される。ＥＣＣアルゴリズムは、データの何ビットが訂正が必要かを判定する。
【００９７】
ステップ１０３８では、コントローラ２４４は、訂正が必要なビットの数がビットの閾値数よりも大きいか否かを判定する。大きい場合には、ブロックはデータリフレッシュが必要であると特定され、リフレッシュ処理（例：図９Ａ）が現段階でまたは後の段階で実行される。エラーのビットの数が閾値よりも小さい場合には、ブロックは現段階でのデータリフレッシュに特定されない（ステップ１０４２）。一実施形態では、閾値はホットカウントの関数である。例えば、ホットカウントが高くなるほど、閾値が低くなる。
【００９８】
図１０Ｃは、訂正アルゴリズムが収束するまでどのくらいの期間がかかるかに基づいて、データリフレッシュが必要か否かを判定する、プロセス１０６０の一実施形態を示す図である。プロセス１０６０は、図８のステップ８０６を実行するための一技術である。ステップ１０６２では、選択されたワードラインのセルが読みだされる。
【００９９】
ステップ１０６４では、コントローラ２４４は、エラーのデータビットの回復を試行するために、ＥＣＣアルゴリズムを実行する。ステップ１０６８では、コントローラ２４４は、訂正アルゴリズムが収束するのに、許容された期間よりも長い期間がかかったかを判断する。一実施形態では、収束するために、許容された数よりも多い繰り返し回数を反復復号技術が必要としたか否かを、コントローラ２４４は判断する。許容数は、プロセス１０６０の感度の変化に適合するように、可変とすることができる。例えば、ブロックが、プロセス８００のステップ８０８で特定された候補ブロックである場合には、感度を上昇させることができる。訂正アルゴリズムが収束するために非常に長期間かかる場合には、現時点または後の時点で、ブロックはリフレッシュされる（ステップ９０２）。訂正アルゴリズムが許容された反復回数内で収束する場合には、ブロック内のデータはリフレッシュされない（ステップ１０７２）。一実施形態では、反復の回数はホットカウントの関数である。例えば、ホットカウントが大きくなるほど、収束のための反復の許容回数は小さくなる。
【０１００】
図１３Ａは、リフレッシュ処理のための候補ブロックを特定するプロセス１３００の一実施形態を示す図である。図１３Ａのプロセスは、図８のステップ８０８を実行するために用いられてもよい。プロセス１３００は、候補ブロックを特定するために、各ブロックに関連したタイムスタンプを使用する。ステップ１３０２では、不良ブロックに関連するタイムスタンプにアクセスされる。（不良ブロックは、プロセス８００のステップ８０６で特定される）。ステップ１３０４では、他のブロックに関連するタイムスタンプにアクセスされる。一実施形態では、ブロックのタイムスタンプは、ブロック自体に記憶される。一般的には、各ワードラインは、データ記憶のために使用されない幾つかのメモリセルを有している。タイムスタンプは、それらの使用されていないメモリセルの一つに関連する記憶素子に記憶されてもよい。タイムスタンプが各ブロックに記憶されている場合には、タイムスタンプを有しているワードラインのみが読み出される必要がある。また、タイムスタンプデータはワードライン内のデータの非常に小さい一部分のみである場合があるため、ワードライン内のデータの大部分は無視することができることに留意されたい。一実施形態では、記憶デバイス内の「タイムスタンプ」テーブルは、各ブロックからタイムスタンプを読み出す必要性を緩和するタイムスタンプを記憶する。例えば、メモリアレイ２００内の１つまたは複数のブロックが、タイムスタンプテーブルのために確保される。
【０１０１】
ステップ１３０６では、不良ブロックに関連するタイムスタンプよりも早いタイムスタンプをどのブロックが有するか、についての判定が行われる。これらのブロックは、リフレッシュ処理のための候補ブロックとして特定される。一実施形態では、データ完全性の問題を有するブロックがプログラムされた後の特定の時間内に最後にプログラムされたブロックが、リフレッシュ処理のためにマークが付けられる。例えば、不良ブロックの１日後または２日後に最後に書き込まれたブロックも、同様の環境で発生したデータ完全性の問題に悩まされることがある。この場合、これらのブロックは候補ブロックとして特定される。これらのブロックは候補ブロックとして特定されるため、プロセス８００のステップ８１０が実行される。
【０１０２】
一実施形態では、連続番号は、タイムスタンプよりもむしろ各ブロックに関連する。連続番号は、ブロックがプログラムされる順番を記述する。図１３Ｂは、連続番号を用いてリフレッシュ処理のための候補ブロックを特定する、プロセス１３５０の一実施形態を示す図である。図１３のプロセス１３５０は、図８のステップ８０８を実行するために用いられてもよい。ステップ１３５２では、不良ブロックに関連する連続番号にアクセスされる。ステップ１３５４では、他のブロックに関連する連続番号にアクセスされる。一般的には、ブロックのための連続番号は、そのブロックに記憶される。しかしながら、ブロック番号に関連した連続番号のテーブルを有するスペアブロックなどの他の場所に、連続番号を記憶することができる。
【０１０３】
ステップ１３５６では、不良ブロックに関連する連続番号よりも低い連続番号を有するブロックが、リフレッシュ処理の候補として特定される。これらのブロックが候補ブロックとして特定されることにより、プロセス８００のステップ８１０は実行される。
【０１０４】
図１４は、リフレッシュ処理のための候補ブロックを特定するために使用された連続番号を管理するプロセス１４００の、一実施形態を示す図である。ステップ１４０２では、記憶デバイス２１０の電源が投入される。記憶デバイス２１０は、小型ナビゲーション装置などの他のデバイスに組み込まれてもよい。この例を用いることで、電源が小型ナビゲーション装置に使用可能なときはいつでも、記憶デバイス２１０は電源を得ることができる。例えばユーザは、自動車の「電源ソケット」などの電源に、小型ナビゲーション装置を接続することができる。この例では、ユーザが小型ナビゲーション装置のスイッチを切っている場合であっても、ユーザが装置をソケットに接続することによって、記憶デバイス２１０の電源が投入されるとしてもよい。
【０１０５】
ステップ１４０４では、連続番号がメモリアレイ２００の複数のブロックから読み出される。一部のブロックは、連続番号を有さなくてもよい。例えば、有効なデータを現在記憶していないブロックは、連続番号を有さないとしてもよい。一実施形態では、１セルにつき１ビットのみを記憶するブロックは、テストを要求しないため、連続番号を有さない。記憶デバイス２１０の電源が投入された後、連続番号を読み出す前に、他の多くの動作が実行されてもよいことに留意されたい。
【０１０６】
ステップ１４０６では、最も高い連続番号が、現在の連続番号として記録される。現在の連続番号は、記憶デバイス２１０またはデバイス２１０の外部に存在する、ランダム・アクセス・メモリに記録されてもよい。例えば、デバイス２１０と結合したホストは、ランダム・アクセス・メモリを使用可能にする。代わりに、現在の連続番号が、不揮発性メモリ（例：スペアブロック）に記録されてもよい。
【０１０７】
ステップ１４０８では、１つまたは複数のブロックをメモリアレイ２００に書き込むためのリクエストが受信される。ステップ１４１０では、現在の連続番号がインクリメントされる。ステップ１４１２では、現在の連続番号（インクリメント後）が、書き込まれるブロックに記憶される。書き込まれるブロックがさらに存在する場合には（ステップ１４１４）、連続番号をインクリメントして、次の書き込まれるブロックに連続番号を記憶するために、制御はステップ１４１０へ移る。
【０１０８】
図１５は、リフレッシュ処理（例：プロセス８００のステップ８１０）のための候補ブロックを選択するために使用されたタイムスタンプを管理するプロセス１５００の、一実施形態を示す図である。プロセス１５００は、ステップ１５０２で記憶デバイス２１０の電源が投入されることで開始する。
【０１０９】
ステップ１５０４では、異なる複数のブロックからタイムスタンプが読み出される。連続番号を使用する実施形態と同様に、全てのブロックがタイムスタンプを有さなくてもよい。前述のように、プロセス１３００のステップ１３０４の一実施形態では、タイムスタンプはテーブルからアクセスされる。選択自由なステップ１５０６では、ステップ１５０４で読み出されたタイムスタンプが、タイムスタンプテーブルに記憶される。テーブルはＲＡＭに存在してもよいし、テーブルは不揮発性装置の１つまたは複数のブロックを占めてもよい。
【０１１０】
ステップ１５０８では、１つまたは複数のブロックを書き込むために、リクエストが受信される。ステップ１５１０では、現在の時間が測定される。ある場合には、入手できる時間の正確性は疑わしい場合があることに留意されたい。例えば、記憶デバイス２１０に結合されたホストに問い合わせることによって、時間にアクセスされる場合がある。しかしながら、ホストは不正確な時間を供給する場合がある。例えば、ホストの時計が不正確にプログラムされる場合がある。時間の正確性は、発信元のタイプ（例：信用できないパーソナルコンピュータ）や、前の時間と不整合な時間（例：時間が遡って経過する）に基づいて、問い合わせることができる。時間情報が信用できない場合には、時間情報の代わりにダミー値を用いることができる。別の方法として、信用できる最後の時間情報を代わりに記憶することもできる。信用できる最後の時間情報が記憶される場合には、実際にプログラムされた時間よりも前にブロックがプログラムされたとみなされる結果になることに留意されたい。従って、いつブロックがプログラムされたかに基づいていつリフレッシュをするかを判定するプロセス１３００は、含み幅が大きい。
【０１１１】
一部の実施形態では、記憶デバイス２１０は、非常に信頼性があるとされている時間発信元にアクセスする。例えば、記憶デバイス２１０が、衛星から正確な時間を受信する小型ナビゲーションデバイスに使用される場合には、時間は正確であるとみなすことができる。
【０１１２】
ステップ１５１２では、書き込まれる（１つまたは複数の）ブロックにタイムスタンプが記憶される。必要な場合には、書き込まれる各ブロックに対して、ステップ１５１０を繰り返すことができる。しかしながら、書き込み処理がかなりの期間中断されない限りは、所定の書き込みリクエストで書き込まれる全てのブロックに対して、同一のタイムスタンプを使用することができる。選択自由なステップ１５１４では、タイムスタンプテーブルがアップデートされる。
【０１１３】
タイムスタンプおよび連続番号の両方をブロックに記憶できることに留意されたい。前述のように、時間情報が信頼できない場合には、記憶されているタイムスタンプはダミー値の場合がある。リフレッシュするか否かをタイムスタンプに基づいて判定するためにプロセス１３００を実行する場合には、ダミー値を有するこれらのブロックでは、リフレッシュ判定に代えて連続番号を用いることができる。
【０１１４】
図１６は、データ保持力問題を緩和するための操作を行うようにユーザに警告する、プロセス１６００の一実施形態を示す図である。ステップ１６０２では、記憶デバイス２１０が過度の頻度でリフレッシュされることが決定される。一実施形態では管理回路がこの決定を行うが、この決定は記憶デバイスの外部で行われてもよい。
【０１１５】
データが過度の頻度でリフレッシュされるか否かを判定するために、データリフレッシュに関する記録が保持されてもよい。記録は、少なくとも１ブロックをリフレッシュするプロセス８００を、毎回監視してもよい。どれだけの合計ブロックがリフレッシュされたか、どれだけが実際のデータ完全性問題の判定（例えば、プロセス１０００、１０３０、または１０６０の１つ以上による判定）に基づいてリフレッシュされたか、いつプログラムされたかに基づく自動リフレッシュに基づいたか、なども記録は含んでいる。
【０１１６】
時間情報が使用できる場合には、いつリフレッシュが発生したかについても、記録は示すことができる。一部の場合には、特定のデータリフレッシュの時間は知ることができないが、時間ウインドウは決定することはできる。例えば、データリフレッシュによって、正確なまたは信頼性のある時間を供給しないホストに、記憶デバイスが結合されることがある。しかしながら、記憶デバイスが時間を供給するホストに後で結合する場合には、（リフレッシュが知られているよりも前の時間を想定する）時間ウインドウにリフレッシュの時間を限定することができる。ある期間において何回のデータリフレッシュを過度の頻度であるとするのかの判定は、研究所でデバイスが検査されたときに得られる情報に基づいて行うことができる。
【０１１７】
ステップ１６０４では、データ完全性の問題を緩和するための訂正操作を行うようにユーザに警告する、メッセージが表示される。例えば、メッセージは、ユーザは記憶デバイスを長期間高温環境下に放置すべきでない旨を指示する。
【０１１８】
上記本発明の詳細な説明は、説明のための例示にすぎない。上記本発明の詳細な説明は、詳細に開示した範囲に限定するものではない。本明細書が開示する技術は、様々に変形、変更し得る。上記説明した実施形態は、本発明の原理とその具体的な適用例をよく説明するために選ばれたものであり、当業者は、具体的な事例に則して本発明を様々に変更し得る。本発明の技術的範囲は、添付された特許請求の範囲によって定まるものである。
【図１】
0005638537.tif 000002
【図２】
0005638537.tif 000003
【図３】
0005638537.tif 000004
【図４】
0005638537.tif 000005
【図５】
0005638537.tif 000006
【図６Ａ】
0005638537.tif 000007
【図６Ｂ】
0005638537.tif 000008
【図７】
0005638537.tif 000009
【図８】
0005638537.tif 000010
【図９Ａ】
0005638537.tif 000011
【図９Ｂ】
0005638537.tif 000012
【図１０Ａ】
0005638537.tif 000013
【図１０Ｂ】
0005638537.tif 000014
【図１０Ｃ】
0005638537.tif 000015
【図１１】
0005638537.tif 000016
【図１２】
0005638537.tif 000017
【図１３Ａ】
0005638537.tif 000018
【図１３Ｂ】
0005638537.tif 000019
【図１４】
0005638537.tif 000020
【図１５】
0005638537.tif 000021
【図１６】
0005638537.tif 000022