(57)【要約】      （修正有）【課題】不揮発性メモリ（ＮＶＭ）内の読出し閾値を動的に調整して、デバイス閾値電圧分布シフトに起因するエラーを低減し、ＳＳＤのような記憶サブシステムの性能、信頼性、および／またはコストを改善するコントローラを提供する。【解決手段】リテンションドリフトクロックは、ＮＶＭダイ上の基準ページ（またはＥＣＣ単位若しくはブロック）を時間／温度基準にわたる読出し閾値として使用し、それらの値の関数を（時間／温度にわたる）ドリフトの測度として使用する。何らかの最初の回において、基準ページがプログラムされ、基準ページの各々について初期読出し閾値が測定される。読出し閾値が、同じダイ上のすべての基準ページ、および、Ｉ／Ｏデバイス内の同じダイ内のすべての基準ページのうちの１若しくはそれ以上の間で平均される。【選択図】図５Ａ
2014154169.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
不揮発性メモリにおける複数のページからなる複数のグループのうちの特定の１つのプログラミングに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値を記録する工程と、
プログラミングされた前記複数のページからなる特定のグループのうちの少なくとも一部の読出しの電圧閾値を決定する工程であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値および前記読出しに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値に少なくとも部分的に基づいているものである、前記電圧閾値を決定する工程と
を有する方法。
【請求項２】
請求項１記載の方法において、さらに、
前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値が、前記読出し時点における前記電圧ドリフト基準タイムスタンプの前記サンプリング値に対して特定の差分よりも小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する工程を有するものである方法。
【請求項３】
請求項１記載の方法において、さらに、
前記不揮発性メモリの基準位置を定期的にサンプリングして、当該基準位置の現在の電圧閾値を決定する工程を有し、
前記定期的にサンプリングする工程により、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものである方法。
【請求項４】
請求項３記載の方法において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の少なくとも一部はそれぞれ、各生成番号（ｇｅｎｅｒａｔｉｏｎ  ｎｕｍｂｅｒ）と各閾値部分とを有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものである方法。
【請求項５】
請求項４記載の方法において、さらに、
前記基準位置の前記現在の電圧閾値が限度を超えた後に、前記基準位置を更新して前記マスタ生成番号を増分する工程を有するものである方法。
【請求項６】
装置であって、
不揮発性メモリにおける複数のページの複数のグループのうちの特定の１つのプログラミングに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値を記録する手段と、
プログラミングされた前記複数のページの特定のグループのうちの少なくとも一部の読出の電圧閾値を決定する手段であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値および前記読出しに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値に少なくとも部分的に基づいているものである、前記と電圧閾値を決定する手段と
を有する装置。
【請求項７】
請求項６記載の装置において、さらに、
前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値が、前記読出し時点における前記電圧ドリフト基準タイムスタンプの前記サンプリング値に対して特定の差分よりも小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する手段を有するものである装置。
【請求項８】
請求項６記載の装置において、
さらに、前記不揮発性メモリの基準位置を定期的にサンプリングして、当該基準位置の現在の電圧閾値を決定する手段を有し、
前記定期的にサンプリングする工程により、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものである装置。
【請求項９】
請求項８記載の装置において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の少なくとも一部はそれぞれ、各生成番号と各閾値部分とを有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものである装置。
【請求項１０】
請求項９記載の装置において、さらに、
前記基準位置の前記現在の電圧閾値が限度を超えた後に、前記基準位置を更新して前記マスタ生成番号を増分する手段を有するものである装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願の権利益の主張を、（それがある場合には、適宜）添付の出願データシート、請求、または送達状において行う。本出願の種類によって許容される範囲内で、本出願はこの参照によりあらゆる目的で以下の出願を組み込むものであり、以下の出願はすべて、発明がなされた時点において本出願と所有者を同じくするものである。
【０００２】
２０１２年５月４日付で出願された、Ｅａｒｌ  Ｔ  Ｃｏｈｅｎを筆頭発明者とし、Ｚｅｒｏ−Ｏｎｅ  Ｂａｌａｎｃｅ  Ｍａｎａｇｅｍｅｎｔ  ｉｎ  ａ  Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｉｓｋ  Ｃｏｎｔｒｏｌｌｅｒと題する米国非仮特許出願（整理番号ＳＦ−１１−０２および通し番号１３／４６４，４３３）、および、２０１３年２月１０日付で出願された、Ｅａｒｌ  Ｔ  Ｃｏｈｅｎを筆頭発明者とし、Ｒｅｔｅｎｔｉｏｎ−Ｄｒｉｆｔ−Ｈｉｓｔｏｒｙ−Ｂａｓｅｄ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｒｅａｄ  Ｔｈｒｅｓｈｏｌｄ  Ｏｐｔｉｍｉｚａｔｉｏｎと題する米国仮特許出願（整理番号ＳＦ−１１−１９および通し番号６１／７６２，９５５）。
【背景技術】
【０００３】
分野：不揮発性記憶装置の技術の進歩が、使用の性能、効率、及び有用性の改善を提供するために必要とされる。
【０００４】
関連技術：公知である、または周知であるものとして明記されない限り、コンテキスト、定義、または比較を目的とするものを含む本明細書における技法および概念の言及は、そのような技法または概念が以前から公知であり、あるいは先行技術の一部であることの容認と解釈すべきではない。特許、特許出願、および出版物を含む、本明細書で引用されるあらゆる参照文献は（それがある場合には）、具体的に組み込まれているか否かを問わず、あらゆる目的で、この参照によりその全体が本明細書に組み込まれるものである。
【０００５】
ソリッド・ステート・ディスク（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ：ＳＳＤ）コントローラとして使用されるフラッシュメモリの様々な態様をこれより説明して、一部には技術的背景を確立し、一部には本明細書の兼ね合いで使用される用語体系の前例を確立する。ＳＳＤコントローラによって不揮発性メモリ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ：ＮＶＭ）から読出し可能なデータの最小サイズは、低密度パリティ検査（Ｌｏｗ−Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ−Ｃｈｅｃｋ：ＬＤＰＣ）符号のような、含まれているエラー訂正によって保護される「読出し単位」である。文脈によっては、読出し単位は「符号語」と称される。いくつかの実施形態において、各読出し単位は約４Ｋ〜約３２Ｋビットのユーザデータ、またそれに加えてエラー訂正オーバヘッドを含む。ＳＳＤコントローラの命令を受けて、それらのビットはＮＶＭメモリセルから（たとえば、ＮＶＭメモリセルの１若しくはそれ以上の部分の配列アクセスを介して）読み出され、これは後述するような技術に応じて、セルあたり１若しくはそれ以上のビットを保持し得る。いくつかの実施形態において、安全上の理由から、ＳＳＤコントローラはデータを暗号化してから、そのデータをＮＶＭに書き込む。いくつかの実施形態において、同一にプログラムされたセルが長く連なることに関して回路設計が制限されていることに鑑みて、ＳＳＤコントローラは、データをスクランブルしてから、そのデータをＮＶＭに書き込む。
【０００６】
個々に考えると、各セルは、そのセルに対するデバイス閾値電圧に対応し、セル内に記憶されている論理ビット値にさらに対応する特定の電荷を蓄積（プログラム）されている。ＮＶＭ内のすべてのセルが記憶されている論理ビット値に対して同一のデバイス閾値電圧を有することが理想的であるが、実際には様々な理由から、デバイス閾値電圧はセルにわたって、形状がガウス同様の、デバイス閾値電圧軸に沿った確率分布（たとえば、「デバイス閾値電圧分布」）において異なる。
【０００７】
したがって、読出し単位のもののような、多数のセルにわたる集合において考えると、セルあたりの状態（セルあたりの記憶ビットあたり２つの状態）と同じほど多くのデバイス閾値電圧分布（たとえば、ガウス確率曲線）がある。すなわち、記憶セルあたりＮビットの場合、２＊＊Ｎ個の状態および同じ数のデバイス閾値電圧分布がある。一般的に、ＮＶＭにおいて、（２＊＊Ｎ）−１個の異なる読出し電圧（読出し電圧基準ＶＲＥＡＤ１〜ＶＲＥＡＤ（Ｎ−１））が、読出し回路が２＊＊Ｎ個の状態間の区別を行うために必要とされる。
【０００８】
上記から続けると、シングル・レベル・セル（Ｓｉｎｇｌｅ−Ｌｅｖｅｌ  Ｃｅｌｌ：ＳＬＣ）フラッシュメモリの場合は、Ｎ＝１である。したがって、ＳＬＣメモリは記憶セルあたり１ビットを記憶し、２つのデバイス閾値電圧分布（１つは０のための、もう１つは１のためのもの）を有し、単一の読出し閾値、読出し電圧基準ＶＲＥＡＤ１を必要とする。より低いデバイス閾値電圧からより高いデバイス閾値電圧までの、２つのデバイス閾値電圧分布は、Ｅ（消去）状態およびＤ１（第１のデータ）状態として知られている。任意選択であるが、一般的なマッピング（符号化）は、論理１をＥ状態に割り当て、論理０をＤ１状態に割り当てることである。したがって、０および１への参照は、Ｄ１状態およびＥ状態のそれぞれの復号に対するプロキシ参照である。
【０００９】
上記からさらに続けると、マルチ・レベル・セル（Ｍｕｌｔｉ−Ｌｅｖｅｌ  Ｃｅｌｌ：ＭＬＣ）フラッシュメモリについて、Ｎ>１である。したがって、ＭＬＣメモリはセルあたり２よりも多いビットを記憶し、２つよりも多いデバイス閾値電圧分布を有し、分布を区別するために複数の異なる読出し閾値を必要とする。たとえば、４ＬＣメモリ（たとえば、フラッシュメモリ）は、セルあたり２ビットを記憶し、４つのデバイス閾値電圧分布を有し、一般的に３つの読出し閾値（読出し電圧基準ＶＲＥＡＤ１、ＶＲＥＡＤ２、およびＶＲＥＡＤ３）を必要とする。より低いデバイス閾値電圧からより高いデバイス閾値電圧までの、４つのデバイス閾値電圧分布は、Ｅ（消去）、Ｄ１（データ１）、Ｄ２（データ２）、およびＤ３（データ３）状態として知られている。任意選択であるが、４つのデバイス閾値電圧分布の各々はまた、グレーコード数列のような、特定の２進数列に従ってマッピング（アドレス指定）される。したがって、１１、１０、００、および０１状態のうちの１若しくはそれ以上に対する参照は、Ｅ、Ｄ１、Ｄ２、およびＤ３状態のそれぞれの復号に対するプロキシ参照である。
【００１０】
ＭＬＣの状態に使用されるアドレスマッピングに関連して、各々は、最上位ビット（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ：ＭＳＢ）および最下位ビット（ＬＳＢ）（ならびに、セルあたり２つよりも多いビットについては、それらの間の位のビット）を有するといえる。ＭＬＣ  ＮＶＭｓがそれらのセルをプログラムする様々な方法があるが、以下の手法が一般的である。最初のプログラミング期間（電荷分布の動作）が、ＬＳＢを確立する、たとえば、「下位ページ」に書き込む。これは、ＳＬＣの書き込み、たとえば、Ｅ状態デバイス閾値電圧分布および第２の状態デバイス閾値電圧分布を確立する電荷動作と同じように大まかに行われる。使用される２進数列に応じて、第２の状態デバイス閾値電圧分布はＤ１状態デバイス閾値電圧分布と同様、Ｄ２状態デバイス閾値電圧分布と同様、または、Ｄ１状態デバイス閾値電圧分布とＤ２状態デバイス閾値電圧分布との間である。ＭＬＣについて、ＭＬＣのレベル数ごとの必要に応じて、１若しくはそれ以上のさらなるプログラミング期間が、デバイス閾値電圧分布を（数、デバイス閾値電圧軸に沿ったロケーションにおいて、および形状において）さらに操作する。より具体的には、１若しくはそれ以上の後続のプログラミング操作が、「中位ページ」（もしあれば、セルあたり２つよりも多いビットについて）に書き込み、最後のプログラミング操作がＭＳＢを確立する、たとえば、「上位ページ」に書き込む。たとえば、４ＬＣ（セルあたり２ビットのＭＬＣ）において、Ｅ分布および第１のプログラム期間の第２の分布はそれぞれ、第２のプログラム期間によってＥ分布およびＤ１分布、ならびにＤ２分布およびＤ３分布に分岐する。
【００１１】
デバイス閾値電圧分布は、読出しディスターブ、書込みディスターブ、および保持損失のような１若しくはそれ以上の要因によってそれらの初期／公称分布から変化する。より詳細には、時間、温度および使用に関係する他の要因にわたって、デバイス閾値電圧分布の各々のロケーションが、デバイス閾値電圧軸に対して変動する可能性がある。そのような変化は、公称デバイス閾値電圧分布に基づいて以前に確立された読出し閾値に対する読出し基準電圧値を使用して実行される読出しのエラーの可能性を増大させる。いくつかのＳＬＣ実施形態において、ＮＶＭからの読出し単位において、ハード判定訂正不可能エラーに直面したとき、読出し単位を回復するために一連の再試行動作が実行される。再試行動作は、ＳＳＤコントローラからＩ／Ｏコマンドを介して書き込まれるレジスタ設定によって決定されるように、コントローラが読出し閾値ＶＲＥＡＤ１の異なる電圧値において読出し単位を再読出しすることを含む。異なる設定の読出し閾値ＶＲＥＡＤ１において読み出すことによって、読出し単位は、（ハード判定）訂正可能である読出し単位のサンプルを位置特定する試行においてデバイス閾値電圧軸上の種々の点においてサンプリングされる。
【００１２】
ＮＶＭ供給元によって示唆されている１つのアルゴリズムは、訂正可能である読出し単位のサンプルを発見する試行においてゆっくりと上向きに（読出し基準電圧ＶＲＥＡＤ１をその公称値から増大させて）ＳＬＣ読出し閾値を掃引することである。この手順に失敗した場合、読出し閾値は、別の方向に（読出し基準電圧ＶＲＥＡＤ１をその公称値から低減させて）掃引される。両方の掃引に失敗した場合、読出し単位は（ハード判定復号によって）訂正不可能である。異なるそれぞれの読出し基準電圧設定における１６〜６４の段階を有し得る読出し閾値の直線掃引は、読出し単位の多くの時間のかかるサンプル（各々が付随する回復待ち時間を有する）を必要とする。たとえそのような検索が頻繁には必要とされず、したがって平均待ち時間に大きな影響を及ぼさない場合であっても、いくつかのデータベース用途を含む、最大待ち時間要件が厳密な用途について、そのような時間のかかる検索は受け入れられない。
【発明の概要】
【課題を解決するための手段】
【００１３】
本発明は、プロセス、製造品、装置、システム、組成物、ならびに、コンピュータ可読記憶媒体（ディスクといった光学的大容量記憶装置および／または磁気的大容量記憶装置、フラッシュストレージといった不揮発性記憶を有する集積回路など）、または、プログラム命令が光通信リンク若しくは電子通信リンク上で送られるコンピュータネットワークといったコンピュータ可読媒体を含む多くの方法で実施されてもよい。本明細書において、これらの実施態様、または本発明がとってもよい任意の他の形態を、技法と称する場合がある。詳細な説明では、上記の分野における使用の性能、効率、および有用性の改善を可能にする本発明の１若しくはそれ以上の実施形態の説明を行う。詳細な説明は、詳細な説明の残りの部分の迅速な理解を容易にするための概説を含む。概説は、本明細書で説明する概念に従うシステム、方法、製造品、およびコンピュータ可読媒体の１若しくはそれ以上の例示的実施形態を含む。結論の項でより詳細に論じるように、本発明は、発行される特許請求の範囲内のあらゆる可能な改変形態および変形形態を包含するものである。
【００１４】
いくつかの実施形態および／または使用シナリオにおいて、読出し閾値は、保持ドリフトクロックとも称される保持ドリフトトラッキング、後述するような読出し閾値を先を見越して管理する技法などを介して、訂正不可能（たとえば、ハード判定復号）エラーの検出から独立して調整される。読出し閾値を独立して調整することによって、いくつかのコンテキストにおいて、独立して調整しなければ発生することになる訂正不可能エラーを回避することが可能になる。様々な実施形態において、ＮＶＭの読出し閾値調整は、ＮＶＭの製造時に、ＮＶＭを最初に使用するとき（たとえば、最初のＳＳＤブート）に、１回または複数回（たとえば、定期的に、不規則に、またはランダムに）、閾値を上回るビット・エラー・レートに応答して、および、一定の条件を満たす（たとえば、ターゲットＢＥＲを超える、または０／１バランスにおけるターゲット不均衡を超える）のに応答して、のうちのいずれか１若しくはそれ以上で決定される。
【００１５】
様々な実施形態において、ＮＶＭのブロックはグループにおいて管理され、管理されているグループのうちの特定の１つのブロックのサンプリングの各々が少なくとも部分的に読み出される。部分的に読み出されたサンプルブロックの少なくともいくつかが条件を満たす場合、特定の管理されているグループのすべてのブロックについて読出し閾値が調整される。様々な実施形態において、調整は、リテンションドリフトクロック（ｒｅｔｅｎｔｉｏｎ  ｄｒｉｆｔ  ｃｌｏｃｋ）（リテンションドリフトトラッキング（ｒｅｔｅｎｔｉｏｎ  ｄｒｉｆｔ  ｔｒａｃｋｉｎｇ））技法による。
【００１６】
リテンションドリフトクロックは、１若しくはそれ以上のＮＶＭダイ上の１若しくはそれ以上の基準ページ（またはＥＣＣ単位若しくはブロック）を時間／温度基準にわたる読出し閾値として使用し、それらの値の関数を（時間／温度にわたる）ドリフトの測度として使用する。何らかの最初の回において、１若しくはそれ以上の基準ページが（これらのページが他のページのように振る舞うように同じブロック内の他のページとともに）プログラムされ、１若しくはそれ以上の基準ページの各々について初期読出し閾値が測定される。いくつかの実施形態において、読出し閾値が、同じダイ上のすべての基準ページ、および、Ｉ／Ｏデバイス内の同じ１若しくはそれ以上のダイ内のすべての基準ページのうちの１若しくはそれ以上の間で平均される。
【図面の簡単な説明】
【００１７】
【図１Ａ】図１Ａは、不揮発性メモリ（ＮＶＭ）要素（たとえば、フラッシュメモリ）を管理するために読出し閾値の最適化を実行するＳＳＤコントローラを含むソリッド・ステート・ディスク（ＳＳＤ）の一実施形態の選択された詳細を図示する図である。
【図１Ｂ】図１Ｂは、図１ＡのＳＳＤの１つ若しくはそれ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を示す図である。
【図２Ａ】図２Ａは、１回目のデバイス閾値電圧分布を示すＳＬＣ固有の、０／１バランス復元に関連する例示的なデバイス閾値電圧分布を図示する図である。
【図２Ｂ】図２Ｂは、後の２回目のデバイス閾値電圧分布を示すＳＬＣ固有の、０／１バランス復元に関連する例示的なデバイス閾値電圧分布を図示する図である。
【図２Ｃ】図２Ｃは、１回目のデバイス閾値電圧分布を示すＭＬＣ固有の、０／１バランス復元に関連する例示的なデバイス閾値電圧分布を図示する図である。
【図２Ｄ】図２Ｄは、後の２回目のデバイス閾値電圧分布を示すＭＬＣ固有の、０／１バランス復元に関連する例示的なデバイス閾値電圧分布を図示する図である。
【図３】図３は、０／１バランス管理およびリテンションドリフトトラッキングに関する特定の詳細を提供する、図１ＡのＳＳＤの一事例のシステム実施形態の選択された詳細を図示する図である。
【図４】図４は、書込み関連の動作（動作４１０〜４３０）および読出し関連の動作（動作４４０〜４８０）に関する特定の詳細を提供する、図１Ａ、図１Ｂ、および図３のＳＳＤ一実施形態の選択された制御フロー詳細を図示する図である。
【図５Ａ】図５Ａは、リテンションドリフトトラッキングを介して（たとえば、ＳＳＤの）ＮＶＭに対する最適化された読出し閾値を決定する実施形態の選択された詳細の流れ図である。
【図５Ｂ】図５Ｂは、ＮＶＭのブロックの管理されているグループ内のデバイス閾値電圧の小規模リテンションドリフト更新５４０の実施形態の選択された詳細の流れ図である。
【図５Ｃ】図５Ｃは、ＮＶＭのブロックの管理されているグループ内のデバイス閾値電圧の大規模リテンションドリフト更新５６０の実施形態の選択された詳細の流れ図である。
【図６Ａ】図６Ａは、４ＬＣメモリにおけるデバイス閾値電圧分布を概念的に図示する図である。
【図６Ｂ】図６Ｂは、４ＬＣメモリにおけるデバイス閾値電圧分布を概念的に図示する図である。
【図６Ｃ】図６Ｃは、４ＬＣメモリにおけるデバイス閾値電圧分布を概念的に図示する図である。図面内の参照符号のリスト
【００１８】
【表１】
2014154169.tif 000003
2014154169.tif 000004
2014154169.tif 000005
2014154169.tif 000006
【発明を実施するための形態】
【００１９】
本発明の１つ若しくはそれ以上の実施形態の詳細な説明を、以下で、本発明の選択された詳細を図示する添付の図を併用して行う。本発明を実施形態との関連で説明する。実施形態は、本明細書では、単なる例示であると理解されるものであり、本発明は、明確に、本明細書中の実施形態のいずれか若しくは全部に、またはいずれか若しくは全部によって限定されるものではなく、本発明は、多数の代替形態、改変形態、および均等物を包含するものである。説明が単調にならないように、様々な言葉によるラベル（これに限定されるものではないが、最初の、最後の、ある一定の、様々な、別の、他の、特定の、選択の、いくつかの、目立ったなど）が実施形態のセットを区別するために適用される場合がある。本明細書で使用する場合、そのようなラベルは、明確に、質を伝えるためのものでも、いかなる形の好みや先入観を伝えるためのものでもなく、単に、別々のセットを都合よく区別するためのものにすぎない。開示するプロセスのいくつかの動作の順序は本発明の範囲内で変更可能である。多様な実施形態がプロセス、方法、および／またはプログラム命令の各特徴の差異を説明するのに使用される場合は常に、所定の、または動的に決定される基準に従って、複数の多様な実施形態にそれぞれ対応する複数の動作モードの１つの静的選択および／または動的選択を行う他の実施形態が企図されている。以下の説明では、本発明の十分な理解を提供するために、多数の具体的詳細を示す。それらの詳細は例として示すものであり、本発明は、それらの詳細の一部または全部がなくても、特許請求の範囲に従って実施されうる。わかりやすくするために、本発明に関連した技術分野で公知の技術資料は、本発明が不必要に曖昧になることのないように詳細に説明していない。
【００２０】
概説
この概説は、詳細な説明のより迅速な理解を助けるために含まれるにすぎず、本発明は、（それがある場合には、明示的な例を含む）この概説で提示される概念だけに限定されるものではなく、どんな概説の段落も、必然的に、主題全体の縮約された見方であり、網羅的な、または限定的な記述であることを意味するものではない。例えば、以下の概説は、スペースおよび編成によりある一定の実施形態だけに限定される概要情報を提供するものである。特許請求の範囲が究極的にそこに導かれることになる実施形態を含む多くの他の実施形態があり、それらを本明細書の残りの部分にわたって論じる。
【００２１】
頭字語
ここで定義される様々な縮めた表現の略語（例えば、頭字語）の少なくとも一部が本明細書において使用される特定の要素を指す。
【表２】
2014154169.tif 000007
2014154169.tif 000008
０／１バランスのトラッキングおよび復元
０および１のカウントのトラッキングおよび管理ならびに０状態および１状態を区別するために使用される読出し閾値のシフトの以下の最初の説明は、ＳＬＣメモリおよび（言及するように、若干の変更を加えて）ＭＬＣメモリの下位ページに直接適用可能である。より一般的にＭＬＣメモリに関して、上位ページのカウントのトラッキングおよび管理ならびに複数の読出し閾値（たとえば、読出し電圧基準ＶＲＥＡＤ１、ＶＲＥＡＤ２およびＶＲＥＡＤ３）のシフトは下記の別個の段落において詳述する。
【００２２】
いくつかの実施形態において、０カウントおよび１カウントが、ＳＬＣ  ＮＶＭから読み出される各読出し単位（または１つのＮＶＭダイから一度に転送される読出し単位の各グループ）について得られる。デバイス閾値電圧分布がそれらの（初期）公称分布からシフトしていることに部分的に起因して読出し単位が（たとえば、ハード判定復号のコンテキストにおいて）訂正不可能である場合、０カウントおよび／または１カウントによって、読出し閾値を移動（設定）する方向および／または程度を決定して、デバイス閾値電圧分布のシフトをトラッキングして０／１バランスを復元することが可能である。調整されている読出し閾値は、ＳＬＣメモリについては読出し電圧基準ＶＲＥＡＤ１であり、ＭＬＣメモリの下位ページについては読出し電圧基準ＶＲＥＡＤ２である。たとえば、論理１が消去状態に割り当てられており、既知の統計的に等しい（５０−５０パーセント、５０／５０パーセント、または単純に５０／５０とも称される）分布の０および１を書き込まれているＳＬＣにおいて、現在の０／１カウントが１が優位であることを示す場合、ＶＲＥＡＤ１が下位にシフトされ、現在の０／１カウントが０が優位であることを示す場合、ＶＲＥＡＤ１が上位にシフトされる。（上記例において、ＭＬＣメモリの下位ページについてはＶＲＥＡＤ１をＶＲＥＡＤ２に置き換える。）読出し閾値をどの程度変更（シフト）するかは、任意選択的に、０（または１）の数の割合によって決定される。この程度は、１若しくはそれ以上のサンプル内で観測される０および／または１の数、１若しくはそれ以上のサンプルの読出し閾値増分、２つの分布のピーク間の中間点に対応する予測デバイス閾値電圧分布の知識、プログラム／消去カウント（摩耗）、読出しディスターブカウント、保持時間、ならびに他の類似の要因のうちの１若しくはそれ以上に基づく。
【００２３】
読出し均衡点の発見
さらなる実施形態において、二分探索のような動作（適切な読出し電圧基準のそれぞれの値において同じ読出し単位を反復してサンプリングすること）が使用されて、読出し閾値「読出し均衡点」が発見される。これは、結果として、読み出されると統計的な許容誤差内で、書き込まれている統計状態分布、またはその理想化モデルに一致する生データ（エラー訂正前）統計状態分布をもたらすデバイス閾値電圧軸上の、隣接するデバイス閾値電圧分布間の点である。
【００２４】
暗号化からもたらされるもののようなＳＬＣメモリおよびランダムスクランブルについて、読出し均衡点は、（ＮＶＭから読み出される生データが）０／１バランスが最も均等（理想に近い）読出し閾値（読出し電圧基準ＶＲＥＡＤ１）である。そのような条件下では、２つの状態分布は５０−５０のバランスを有する。すなわち、読み出される状態の５０％が０であり、読み出される状態の５０％が１である。（上記において、ＭＬＣメモリの下位ページについてはＶＲＥＡＤ１をＶＲＥＡＤ２に置き換える。）
いくつかの実施形態において、読出し均衡点は、２つの電圧分布間の中央点、２つの電圧分布間の最小値、読み出されるデータの０／１バランスが５０−５０に最も近い点、および、２つの他の点において発見される０／１バランスの補間に従って求められる点のうちの１若しくはそれ以上に対応する。対称な隣接デバイス閾値電圧分布を有する実施形態では、読出し均衡点は、隣接するデバイス閾値電圧間の中央点に対応する。
【００２５】
読出し閾値を発見して所望される読出し均衡点に設定することによって、ハード判定復号を試行する最適な点を発見するのに必要とされる読出しの回数が低減する。またさらなる実施形態において、読出し閾値読出し均衡点が発見される前に「十分に良好な」読出し閾値が発見される場合には、二分探索にける各読出し閾値サンプリング点（ＳＬＣメモリについてはＶＲＥＡＤ１の各値、またはＭＬＣメモリの下位ページについてはＶＲＥＡＤ２の各値）においてハード判定復号が試行される。この探索は一般的に、下記に説明するように、可能性としてソフト判定復号のために求められる読出し均衡点の周囲でさらなるサンプリングを行うことを考慮することを除いて、十分に良好な読出し閾値が発見されると打ち切られる。様々な実施形態において、「十分に良好な」読出し閾値は、結果として生の読出しデータのハード判定復号の成功をもたらす。一部の実施形態において、二分探索における探索ステップの大きさ（読出し閾値増分）は、少なくとも部分的に、読出し閾値変更の程度に関する上記で詳述したような様々な要因に対して決定される（基づく）。
【００２６】
ＭＬＣ検討
ＭＬＣメモリにおいて、複数の読出し閾値が管理される。一部の実施形態において、これは、複数のデバイス閾値電圧分布が均一にずれていると仮定し、下位ページの読出しデータ０／１バランスに基づいて第１の読出し閾値（ＶＲＥＡＤ１）について行われた決定に基づいてすべての他の読出し閾値を変更することによって実行される。
【００２７】
４ＬＣ  ＮＶＭについて、理論的には、（５０−５０の０／１バランスとは対照的に）２５−２５−２５−２５の１１／１０／００／０１バランスがある。しかしながら、４ＬＣｓが一般的に、下位ページのＶＲＥＡＤ２、ならびに上位ページのＶＲＥＡＤ１およびＶＲＥＡＤ３の３つの読出し電圧基準を使用して別個のアレイアクセスを介して読み出されることを所与とすると、このバランスを直接もたらす単一の動作は存在しない。したがって、下位ページのＤ１状態とＤ２状態との間、ならびに、上位ページのＤ２状態とＤ３状態のとの間と組み合わせたＥ状態とＤ１状態との間の２つのそれぞれの０／１バランスが評価され得る。代替的に、単一の下位ページ読出し閾値をＶＲＥＡＤ１、ＶＲＥＡＤ２、およびＶＲＥＡＤ３の各々に近い値に設定する３つの別個の下位ページのようなアレイアクセスが実行され得る。
【００２８】
例として、一部の４ＬＣ  ＮＶＭ実施形態において、読出し電圧基準ＶＲＥＡＤ１、ＶＲＥＡＤ２、およびＶＲＥＡＤ３は、少なくともセル内に記憶されている２ビットのうちの１ビットについてシフトする必要があり得る。ＳＬＣの事例と同様に動作して、セル内に記憶されている２ビットのうちの１ビットは、第１の読出し閾値（このＭＬＣ事例におけるＶＲＥＡＤ２）における単一アレイアクセスを必要とする。他方のビットを確定するには、２つのさらなる読出し閾値が必要である（ＶＲＥＡＤ１およびＶＲＥＡＤ３、ならびに、実効的に、ＮＶＭによって内部で実行される２つの関連するそれぞれのさらなるアレイアクセス）。
【００２９】
様々な実施形態によれば、他方のビットの２つの読出し閾値（ＶＲＥＡＤ１およびＶＲＥＡＤ３）が、（ドリフトが両方の状態について同様であると仮定して）同じおよび／または異なる量だけ一緒に移動されるか、または、他方のビットの２つの読出し閾値が独立して（読出し動作が追加されることと引き換えに）移動されるかのいずれかである。ＳＬＣのようなビットの状態が、２つの読出し閾値（ＶＲＥＡＤ１およびＶＲＥＡＤ３）のうちのいずれが対応する他方のビット（ＭＳＢ）を確定するのに使用されるかを決定するため、後者の選択肢は、セル内のＳＬＣのようなビット（ＬＳＢ）の状態が分かっている必要がある。
【００３０】
一部の４ＬＣ実施形態において、組合せ「上位ページ」読出しデータ０／１バランスが、同時に混合したＥおよびＤ１分布ならびにＤ２およびＤ３分布について評価される。組合せ読出し０／１バランスと書き込まれているものとの不均衡に基づいて、またビットの意味が反転すること（ＥからＤ１への移動について１から０、Ｄ２からＤ３への移動について０から１）を考慮して、対応する２つの読出し閾値（ＶＲＥＡＤ１およびＶＲＥＡＤ３）は一緒に反対方向に移動される。これは、混合物の各構成要素の０／１バランスが「同じ方向に」移動する（たとえば、移動が衝突しない）ように行われる。
【００３１】
一部の４ＬＣ実施形態において、２つの上位ページ読出し閾値（ＶＲＥＡＤ１およびＶＲＥＡＤ３）の移動は、読出し単位の各ビットのそれぞれのＬＳＢを使用しながら、上位ページの０／１バランスをそれぞれ評価することによって別個に決定される。ＬＳＢ＝１のとき、移動の方向はＬＳＢ＝０の事例の方向と反対である。たとえば、上位ページ読出しデータ内の０カウントと１カウントとの間の不均衡を計算する代わりに、下位ページ読出しデータの対応するビットに基づいて上位ページ読出しデータの各ビットを選択的に変更し、上位ページ読出しデータのビットの意味を数値から、たとえば、０がより高いデバイス閾値電圧を表し、１がより低いデバイス閾値電圧を表す方向値に変換することによって、上位ページ不均衡が計算される。一部の実施形態において、上位ページ読出しデータのビットおよび下位ページ読出しデータの対応するビットのＸＮＯＲが変換を実行する。
【００３２】
ソフト判定サンプルからのバイアスの除去
一部の実施形態において、ソフト判定情報がＮＶＭから得られて、復号に基づいてソフト判定が実行される。ソフト判定情報は、公称（未調整）読出し閾値の周りの様々な読出し閾値サンプリングポイント（ＳＬＣについては、ＶＲＥＡＤ１の値）において読出し単位（または１つのＮＶＭダイから一度に転送される読出し単位の各グループ）を読み出して読出し単位のデータの複数のサンプルを得、したがって読出し単位の各ビットの値のソフト判定尤度を構築することによって得られる。サンプルの間隔は、少なくとも部分的に、電荷状態の公称分離のような、使用されるＮＶＭの特定の特性に応じて決まる。
【００３３】
しかしながら、その周りでサンプルがとられる公称読出し閾値が（上述のような）読出し閾値均衡点でない限り、ソフト判定情報はバイアスされている。現在の読出し閾値が読出し閾値均衡点でない場合、すべてのソフト判定情報は一方向または他方向にバイアスされている。以下は、これを調整してバイアスされていない（または少なくともバイアスの少ない）ソフト判定情報を得るための２つの例示的な技法である。
【００３４】
１．読出し閾値サンプリングポイントの各々においてサンプリングされる読出し単位の０／１バランスは容易に識別されるため、読出し閾値均衡点は（実施形態によれば、線形補間を使用することなどによって）容易に求められる。求められた読出し閾値均衡点と（旧来の未調整の）公称読出し閾値との間の差に対応するオフセットが計算される。ソフト判定情報が以前にサンプリングされた電圧に対してオフセットを適用する（１．０よりも大きいまたは０．０よりも小さい値は切り捨てられる）ことによって、以前に求められたソフト判定情報に適切に「中心をとり直し」、依然として使用することが可能になる。この手法はさらに読み出すことを必要としないが、データのいくらかについて異なる程度の精度／正確度をもたらす。
【００３５】
２．読出し閾値サンプリングポイントの各々においてサンプリングされる読出し単位の０／１バランスは容易に識別されるため、すべての必要とされるサンプルが収集された後、読出し閾値均衡点に最も近い読出し閾値サンプリングポイントは、容易に求められる。この最も近いものは、０／１バランスが書き込まれている０／１バランスに最も近接している読出し閾値サンプリングポイントである。ＳＬＣ暗号化（またはスクランブル）の事例について、これが５０−５０のバランスを有することに最も近い読出し閾値サンプリングポイントである。すべてのサンプルが公称的には互いから均等な間隔を有するため、最も近いサンプルが新規の公称読出し閾値として選択され、（新規の公称読出し閾値が旧来のものと異なると仮定して）さらなるソフト判定情報サンプルが任意選択的に収集される。代替的に、閾値読出し均衡点を発見するための二分探索が最初に行われ、ここで、二分探索の精度は、ソフト判定情報の所望される精度に必要とされるサンプリングの最も細かい粒度に制限される。ソフト判定情報の所望される精度は、新規の公称読出し閾値の周りの関連するサンプル窓を有する。旧来の公称読出し閾値が所望される精度のサンプル窓の外にならない限り、複数の読出しの一部として二分探索を行ってソフト判定情報を得ることはさらなる読出しを必要としない。
【００３６】
これまで説明したＳＬＣ暗号化実施形態において、上記の技法は、５０−５０に最も近い読出しデータ０／１バランスをもたらす好適な読出し閾値を発見することに焦点を当ててきた。デバイス閾値電圧分布が一般的に同じ対称な形のものであり、実質的に重なり合わない事例については、この好適な読出し閾値は、組合せデバイス閾値電圧分布の最小値にも対応することになる。
【００３７】
デバイス閾値電圧分布上の既知の点から補間される読出し閾値
一部の実施形態において、好適な読出し閾値を発見するための別の手法は、代わりに、各隣接デバイス閾値電圧分布に１つの２つの点を発見し、補間によってそれらの２つの点の間の中間点を求めることである。たとえば、各デバイス閾値電圧分布のピークにおいてサンプリングすることによって、７５／２５のバランスの読出しデータ０／１（または１／０、いずれのピークかによる）がもたらされるはずである。２つのピークが識別されると、デバイス閾値電圧軸上の２つの間の計算された中間点が使用されて、新規の読出し閾値が設定される。
【００３８】
デバイス閾値電圧分布が均一でない（たとえば、長く尾を引いているなどで一方の側または他方に非対称にバイアスされている）ことが事前に分かっている場合、一部の実施形態において、その情報が使用されて、ピークの位置が解釈されて、わずかにより複雑な補間によって中心（たとえば、中間点だけでなく）が位置特定される。保持時間および／または摩耗のような要因が、デバイス閾値電圧分布の対称性に影響を及ぼす場合があり、一部の実施形態において計上される。一部の実施形態において複数のサンプリングポイントがまた使用されて、デバイス閾値電圧分布の形状を明らかにする。
【００３９】
デバイス閾値電圧調整の範囲が制限されている一部の実施形態において、真のピークを発見することが可能でない場合がある。特に、たとえＥ状態の電圧分布が負デバイス閾値電圧まで拡大している場合であっても、デバイス閾値電圧は、何らかのフラッシュデバイスによって０Ｖ未満に移動されることはできない。デバイス閾値電圧分布が分かっていることで、依然として、補間を介して中間点を求めることが可能である。たとえば、０Ｖにおいて読出しデータ０／１バランスが６０／４０である場合、約１０％余分な０が観測されており、０Ｖの右のＥ分布の面積は約１０％である。一部の実施形態の第１の手法において、Ｄ１分布のピークが発見され、Ｅ分布のおおよその形状の知識に基づいて中間点が補間される。一部の実施形態の第２の手法において、Ｄ１分布の、読出しデータ０／１バランスが４０／６０である点（０Ｖ測定値から反対の点）を発見する。その後、６０／４０観測値と４０／６０観測値との間の計算された中間点が使用されて、新規の好適な読出し閾値が設定される。計算される中間点は、２つのデバイス閾値電圧分布のさらなる知識および／または測定値を用いてより高い精度で求められ得る。
【００４０】
一部の実施形態において、補間されている点は両方とも、読出し均衡点と同じ側にある。たとえば、第１の読出し閾値サンプリングポイントＸが分かると７５／２５読出しデータ０／１バランスがもたらされ、第２の読出し閾値サンプリングポイントＹが分かると６２．５／３７．５がもたらされ、読出し均衡点はＹ＋／−（Ｘ−Ｙ）に近くなり、ここで、「＋」であるか「−」であるかはＹがＸよりも小さいか否かに応じて決まる。読出し均衡点の方向は、読出しデータ０／１バランスを５０／５０に近い方に移動させるのに対応する方向である。与えられている例において、それは、ＸからＹに向かう方向にある。デバイス閾値電圧分布が分かると、示されている単純な線形補間よりもより正確な補間が可能になる。
【００４１】
リテンションドリフトトラッキング
様々な実施形態および／または使用シナリオにおいて、ＮＶＭ内のデバイス閾値電圧分布は経時的にシフトし、（たとえば、ハード判定復号のときに）読出しエラーを引き起こす。デバイス閾値電圧分布がシフトすると、以前に一定の読出し閾値を下回っていた（または上回っていた）値がその一定の読出し閾値の上（または下）になり、ビットエラーを引き起こす。たとえば、Ｄ１分布として以前記憶された（そして、その分布内にあるとみなされている）値がＤ２分布内にあると決定され、したがってビットエラーがもたらされる。少数のビットエラーは訂正可能であるが、十分な数のビットエラーは訂正不可能（たとえば、ハード判定復号）エラーを引き起こす。一部の実施形態および／または使用シナリオにおいて、そうでなければ発生することになる訂正不可能（たとえば、ハード判定復号）エラーが、訂正不可能エラー検出から独立して読出し閾値を調整するリテンションドリフトトラッキングのような、読出し閾値の先を見越した調整によって回避可能である。
【００４２】
例示的な実施形態
詳細な記載に対する導入を締めくくる際に続くものは、「ＥＣｓ」（例示的な組合せ）として明示的に列挙される少なくとも一部の例示的な実施形態を含む例示的な実施形態を集めたものであり、本明細書において記載される概念に従った様々な実施形態の種類の追加的な記載を提供する。これらの例は、互いに排他的、網羅的、または制限的であることを意味せず、本発明はこれらの例示的な実施形態には限定されず、刊行された特許請求の範囲およびその均等物の範囲内のすべての可能な改変および変化形を含む。
【００４３】
ＥＣ１）方法であって、
不揮発性メモリにおける複数のページからなる複数のグループのうちの特定のグループをプログラミングする工程とともに、当該プログラミングの時点の電圧ドリフト基準タイムスタンプのサンプリング値を記録する工程と、
前記複数のページからなる特定のグループの一部またはすべてをプログラミングする工程の後読出しする工程とともに、当該読出しの電圧閾値を決定する工程であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値および前記読出し時点の電圧ドリフト基準タイムスタンプのサンプリング値に少なくとも部分的に基づいて決定されるものである。前記決定する工程と
を有する方法。
【００４４】
ＥＣ２）ＥＣ１記載の方法において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値は、前記不揮発性メモリの基準位置の電圧閾値に基づくものである方法。
【００４５】
ＥＣ３）ＥＣ１記載の方法において、さらに、
前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値と前記読出し時点の前記電圧ドリフト基準タイムスタンプの前記サンプリング値との差分が特定の差分よりも小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する工程を有するものである方法。
【００４６】
ＥＣ４）ＥＣ１記載の方法において、さらに、
前記不揮発性メモリの基準位置を定期的にサンプリングして、当該基準位置の現在の電圧閾値を決定する工程を有し、
前記定期的にサンプリングする工程により、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものである方法。
【００４７】
ＥＣ５）ＥＣ４記載の方法において、前記基準位置は前記不揮発性メモリの所定のページである方法。
【００４８】
ＥＣ６）ＥＣ４記載の方法において、前記基準位置は前記複数のページからなる特定のグループのうちのページの１つである方法。
【００４９】
ＥＣ７）ＥＣ４記載の方法において、前記基準位置は、前記複数ページからなる特定のグループのうちのページの少なくとも１つと、前記不揮発性メモリの同じブロック内にあるものである方法。
【００５０】
ＥＣ８）ＥＣ４記載の方法において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の各々は、各生成番号（ｇｅｎｅｒａｔｉｏｎ  ｎｕｍｂｅｒ）と各閾値部分を有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものである方法。
【００５１】
ＥＣ９）ＥＣ７記載の方法において、さらに、
前記基準位置の前記現在の電圧閾値が限度を超える場合、前記基準位置を更新して前記マスタ生成番号を増分する工程を有するものである方法。
【００５２】
ＥＣ１０）方法であって、
通常の（非システム基準）ブロック書込みの一部として通常のデータページおよび１若しくはそれ以上のシステム基準ページをブロックに書き込む工程と、
バックグラウンド・システム・タスクとして、かつ前記ブロックからの通常ページ読出しを予期して、前記１若しくはそれ以上のシステム基準ページのシステム読出しに少なくとも基づいて、前記ブロックの所定の最適な読出し閾値電圧を定期的に決定する工程と、
前記ブロックの前記所定の最適な読出し閾値電圧を使用して、前記予期される通常ページ読出しの中から、通常ページ読出しを実行する工程と
を有する方法。
【００５３】
ＥＣ１１）方法であって、
少なくとも複数のページからなる複数のグループに編成されている不揮発性メモリの複数のページを書き込む工程であって、前記書き込まれる複数のページは、少なくとも部分的に読出し閾値電圧シフトをトラッキングするのに使用される、通常（非システム基準）ページと１若しくはそれ以上のシステム基準ページとを有するものである、前記書き込む工程と、
第１のタイミングおよび第１の最適化基準に従って、前記システム基準ページの各々について、最適な基準ページ読出し閾値電圧を繰り返し決定する工程と、
第２のタイミングおよび第２の最適化基準に従って、各グループについて、少なくとも最も最近に決定された基準ページ読出し閾値電圧の関数として最適な基準グループ読出し閾値電圧を繰り返し決定する工程と、
もっとも最近に決定された最適な基準グループ読出し閾値電圧から動的に選択される、要求に応じた読出し閾値電圧を使用して、複数の通常ページのうち要求に応じて読み出される少なくとも１つの通常ページを読み出す工程であって、前記要求に応じた読出し閾値電圧は、前記読み出される少なくとも１つのページが対応するグループに少なくとも部分的に基づいて動的に選択されるものである、前記読み出す工程と
を有する方法。
【００５４】
ＥＣ１２）ＥＣ１１記載の方法において、さらに、
前記最適な基準ページ読出し閾値電圧のうちの１つが許容範囲外にあることを検出する工程と、
前記システム基準ページを前記検出された許容範囲外の最適な基準ページ読出し閾値電圧に対応するように再プログラミングする工程とを有するものである方法。
【００５５】
ＥＣ１３）ＥＣ１１記載の方法において、さらに、
第３のタイミングに従って、各システム基準ページについて、前記決定された最適な基準ページ読出し閾値電圧が過剰に（プログラム可能／設定可能な値よりも大きく）シフトしたか否かを繰り返し評価し、前記評価に基づいて、前記システム基準ページを再プログラミングしてそれぞれの基準ページ生成カウントを増分する工程と、
第１のフィールドとして符号化された、前記決定された読出し閾値電圧の少なくとも一部をストレージ表現（ｓｔｏｒａｇｅ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）内に記憶する工程であって、当該ストレージ表現は、前記第１のフィールドに関連付けられた前記基準ページ生成カウントを符号化する第２のフィールドを有するものである、前記記憶する工程と
を有するものである方法。
【００５６】
ＥＣ１４）ＥＣ１１記載の方法において、前記要求に応じた読出し閾値電圧は、前記読み出されるページが最後に書き込まれたときに使用された閾値電圧に対してシフトしているものである方法。
【００５７】
ＥＣ１５）ＥＣ１１記載の方法において、前記決定された読出し閾値電圧の少なくとも一部は、符号化された複数のビットとして記憶されるものである方法。
【００５８】
ＥＣ１６）ＥＣ１１記載の方法において、前記決定された読出し閾値電圧の少なくとも一部は、マッピングを使用して、符号化された複数のビットとして記憶されるものであり、これにより、値の急速なシフトに関連付けられた読出し閾値電圧の動作の少なくとも一部の領域においてより分解能の高い表現を提供するものである方法。
【００５９】
ＥＣ１７）ＥＣ１１記載の方法において、前記決定された読出し閾値電圧の少なくとも一部は、第１のフィールドとして符号化されてストレージ表現内に記憶され、当該ストレージ表現は、さらに、前記第１のフィールドに関連付けられた基準ページ生成を特定する第２のフィールドを有するものである方法。
【００６０】
ＥＣ１８）ＥＣ１７記載の方法において、前記基準ページ生成フィールドは、一連の異なる基準ページの中で区別されるものである方法。
【００６１】
ＥＣ１９）ＥＣ１７記載の方法において、前記基準ページ生成フィールドは、同一の基準ページの一連の再プログラミングの中で区別されるものである方法。
【００６２】
ＥＣ２０）ＥＣ１７記載の方法において、前記第１のフィールドおよび前記第２のフィールドはそれぞれ、前記ストレージ表現の最下位ビットおよび最上位ビットを有するものである方法。
【００６３】
ＥＣ２１）ＥＣ１１記載の方法において、前記システム基準ページはＥＣＣ単位およびＥＣＣブロックのうちの少なくとも１つを有するものである方法。
【００６４】
ＥＣ２２）ＥＣ１１記載の方法において、前記第１のタイミングおよび前記第２のタイミングは同一である方法。
【００６５】
ＥＣ２３）ＥＣ１１記載の方法において、前記第１のタイミングおよび前記第２のタイミングは異なるものである方法。
【００６６】
ＥＣ２４）ＥＣ１１記載の方法において、前記第１のタイミングおよび前記第２のタイミングの少なくとも１つは、前記読出し閾値電圧シフトがより非線形の動作領域に入っているという決定に基づいて変更されるものである方法。
【００６７】
ＥＣ２５）ＥＣ１１記載の方法において、前記第１のタイミングおよび前記第２のタイミングの少なくとも１つは、前記読出し閾値電圧の１つの変化の割合に比例してサンプリングする試行における適応的タイミングを有するものである方法。
【００６８】
ＥＣ２６）ＥＣ１１記載の方法において、前記第１のタイミングおよび前記第２のタイミングの少なくとも１つは、１日に１回、１週間に１回、または１ヶ月に１回の選択される公称間隔に少なくとも部分的に基づくタイミングを有するものである方法。
【００６９】
ＥＣ２７）ＥＣ１１記載の方法において、前記第１のタイミングおよび前記第２のタイミングの少なくとも１つは、不揮発性メモリのタイプ、前記読出し閾値電圧の１つの変化の割合の履歴、温度、および経過時間のうちの１若しくはそれ以上に少なくとも部分的に基づくタイミングを有するものである方法。
【００７０】
ＥＣ２８）ＥＣ１１記載の方法において、前記第１のタイミングおよび前記第２のタイミングの少なくとも１つは、電源投入事象、リセット事象、およびウェークアップ事象のうちの１若しくはそれ以上に少なくとも部分的に基づくタイミングを有するものである方法。
【００７１】
ＥＣ２９）ＥＣ１１記載の方法において、前記読出しは、以前の決定に関連する待ち時間を受けることなく、前記最適な基準グループ読出し閾値電圧の以前の決定から利益を受けるものである方法。
【００７２】
ＥＣ３０）ＥＣ１１記載の方法において、前記必要に応じて読み出されるページは、ａ）前記システム基準ページ以外のシステムページ、ｂ）非システムページ、およびｃ）ユーザページのうちから選択されるものである方法。
【００７３】
ＥＣ３１）ＥＣ１１記載の方法において、前記システム基準ページは前記不揮発性メモリの１若しくはそれ以上のダイに常駐するものである方法。
【００７４】
ＥＣ３２）ＥＣ１１記載の方法において、前記要求に応じた読出し閾値電圧は、前記不揮発性メモリの同じダイ上のすべての基準ページの平均である方法。
【００７５】
ＥＣ３３）ＥＣ１１記載の方法において、前記要求に応じた読出し閾値電圧は、前記不揮発性メモリの１若しくはそれ以上のダイ上のすべての基準ページの平均である方法。
【００７６】
ＥＣ３４）ＥＣ１１記載の方法において、前記不揮発性メモリはＩ／Ｏデバイスの１若しくはそれ以上のダイ上に具備されるものである方法。
【００７７】
ＥＣ３５）ＥＣ３４記載の方法において、前記Ｉ／Ｏデバイスは記憶デバイスである方法。
【００７８】
ＥＣ３６）ＥＣ３４記載の方法において、Ｉ／Ｏデバイスはソリッド・ステート・ドライブ（ＳＳＤ）である方法。
【００７９】
ＥＣ３７）ＥＣ３４に記載の方法において、前記要求に応じた読出し閾値電圧はダイ平均値である方法。
【００８０】
ＥＣ３８）ＥＣ３４に記載の方法において、前記要求に応じた読出し閾値電圧はＩ／Ｏデバイス平均値である方法。
【００８１】
ＥＣ３９）ＥＣ１１記載の方法において、前記決定された最適な基準ページ読出し閾値電圧は読出しエラーを最小限に抑える読出し閾値電圧である方法。
【００８２】
ＥＣ４０）ＥＣ１１記載の方法において、前記決定された最適な基準ページ読出し閾値電圧は、プログラミングに使用される分布を最良に生成する（分布の所定の／プログラム可能な／構成可能なエラー限界内に整合する結果を可能にする）読出し閾値電圧である方法。
【００８３】
ＥＣ４１）ＥＣ１１記載の方法において、プログラミングは暗号化を使用し、前記決定された最適な基準ページ読出し閾値電圧は、０および１の５０−５０のバランスがとれた分布を生成する読出し閾値電圧である方法。
【００８４】
ＥＣ４２）ＥＣ１１記載の方法において、前記グループはＲブロックである方法。
【００８５】
ＥＣ４３）ＥＣ１１記載の方法において、前記読出しは、保持時間および保持温度のうちの１若しくはそれ以上の関数である読出し閾値電圧シフトを補償されるものである方法。
【００８６】
ＥＣ４４）方法であって、
不揮発性メモリの複数のページの複数のグループのうちの特定の１つのプログラミングに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値を記録する工程と、
プログラミングされた前記複数のページの特定のグループのうちの少なくとも一部の読出の電圧閾値を決定する工程であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値および前記読出しに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値に少なくとも部分的に基づいて決定されるものである、前記電圧閾値を決定する工程と
を有する方法。
【００８７】
ＥＣ４５）ＥＣ４４記載の方法において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値は、前記不揮発性メモリの１若しくはそれ以上の基準位置の電圧閾値にものである方法。
【００８８】
ＥＣ４６）ＥＣ４４記載の方法において、さらに、
前記記録された電圧ドリフト基準タイムスタンプのサンプリング値が、前記読出し時点における前記電圧ドリフト基準タイムスタンプの前記サンプリング値に対して特定の差分より小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する工程を有するものである方法。
【００８９】
ＥＣ４７）ＥＣ４４記載の方法において、さらに、
前記不揮発性メモリの基準位置を定期的にサンプリングして、当該基準位置の現在の電圧閾値を決定する工程を有し、
前記定期的にサンプリングする工程により、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものである方法。
【００９０】
ＥＣ４８）ＥＣ４７記載の方法において、前記基準位置は前記不揮発性メモリのページである方法。
【００９１】
ＥＣ４９）ＥＣ４７記載の方法において、前記基準位置は前記複数ページからなる特定のグループのうちのページの１つである方法。
【００９２】
ＥＣ５０）ＥＣ４７記載の方法において、前記基準位置は前記複数のページからなる特定のグループのうちのページの少なくとも１つと、前記不揮発性メモリの同じブロック内にあるものである方法。
【００９３】
ＥＣ５１）ＥＣ４７記載の方法において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の少なくともいくつかはそれぞれ、各生成番号とおよび各閾値部分とを有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものである方法。
【００９４】
ＥＣ５２）ＥＣ５１記載の方法において、さらに、
前記基準位置の前記現在の電圧閾値が限度を超えた後に、前記基準位置を更新して前記マスタ生成番号を増分する工程を有するものである方法。
【００９５】
ＥＣ５３）ＥＣ４４記載の方法において、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値は前記プログラミング時点のものであり、前記読出しに関連付けられた前記電圧ドリフト基準タイムスタンプの前記サンプリング値は前記読出し時点のものである方法。
【００９６】
ＥＣ５４）ＥＣ４５記載の方法において、前記電圧ドリフト基準タイムスタンプの少なくともいくつかはそれぞれ、前記基準位置を有する電圧ドリフト基準の１若しくはそれ以上の最適な読出し閾値電圧の決定されたセットを有するものである方法。
【００９７】
ＥＣ５５）ＥＣ５４記載の方法において、前記不揮発性メモリはＳＬＣメモリを有し、前記決定されたセットは、前記１若しくはそれ以上の最適な読出し閾値電圧のうちの単一の最適な読出し閾値電圧を有する方法。
【００９８】
ＥＣ５６）ＥＣ５４記載の方法において、前記不揮発性メモリはＭＬＣメモリを有し、前記決定されたセットは、前記１若しくはそれ以上の最適な読出し閾値電圧のうちの複数の最適な読出し閾値電圧を有する方法。
【００９９】
ＥＣ５７）ＥＣ５４記載の方法において、さらに、前記電圧ドリフト基準タイムスタンプの少なくともいくつかをそれぞれの時間表現と関連付ける工程を有する方法。
【０１００】
ＥＣ５８）ＥＣ５７記載の方法において、前記それぞれの時間表現はシステム事象に対するオフセットカウンタに従うものである方法。
【０１０１】
ＥＣ５９）ＥＣ５７記載の方法において、前記それぞれの時間表現は実際のタイムクロックから導出される値に従うものである方法。
【０１０２】
ＥＣ６０）装置であって、
不揮発性メモリにおける複数のページからなる複数のグループのうちの特定の１つのプログラミングに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値を記録する手段と、
プログラミングされた前記複数のページの特定のグループのうちの少なくとも一部の読出の電圧閾値を決定する手段であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値および前記読出しに関連付けられた前記電圧ドリフト基準タイムスタンプのサンプリング値に少なくとも部分的に基づいて決定されるものである、前記決定する手段と
を有する装置。
【０１０３】
ＥＣ６１）ＥＣ６０記載の装置において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値は、前記不揮発性メモリの基準位置の電圧閾値に基づくものである装置。
【０１０４】
ＥＣ６２）ＥＣ６０記載の装置において、さらに、
前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値が、前記読出し時点における前記電圧ドリフト基準タイムスタンプの前記サンプリング値に対して特定の差分よりも小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する手段を有するものである装置。
【０１０５】
ＥＣ６３）ＥＣ６０記載の装置において、さらに、
前記不揮発性メモリの基準位置を定期的にサンプリングして、当該基準位置の現在の電圧閾値を決定する手段を有し、
前記定期的なサンプリングにより、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものである装置。
【０１０６】
ＥＣ６４）ＥＣ６３記載の装置において、前記基準位置は前記不揮発性メモリのページである装置。
【０１０７】
ＥＣ６５）ＥＣ６３記載の装置において、前記基準位置は前記複数ページからなる特定のグループのうちのページの１つである装置。
【０１０８】
ＥＣ６６）ＥＣ６３記載の装置において、前記基準位置は、前記複数のページからなる特定のグループのうちのページの少なくとも１つと、前記不揮発性メモリの同じブロック内にあるものである装置。
【０１０９】
ＥＣ６７）ＥＣ６３記載の装置において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の少なくとも一部はそれぞれ、各生成番号と各閾値部分とを有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものである装置。
【０１１０】
ＥＣ６８）ＥＣ６７記載の装置において、さらに、
前記基準位置の前記現在の電圧閾値が限度を超えた後に、前記基準位置を更新して前記マスタ生成番号を増分する手段を有するものである装置。
【０１１１】
ＥＣ６９）命令セットが記憶された持続性有形コンピュータ可読媒体であって、当該命令セットは、処理要素によって実行されると、当該処理要素に、
不揮発性メモリの複数のページからなる複数のグループのうちの特定の１つのプログラミングに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値を記録する工程と、
プログラムされた前記複数のページからなる特定のグループの少なくとも一部の読出しの電圧閾値を決定する工程であって、当該電圧閾値は、前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値および前記読出しに関連付けられた電圧ドリフト基準タイムスタンプのサンプリング値に少なくとも部分的に基づいて決定されるものである、前記決定する工程と
を有する動作を実行させるものである、
持続性有形コンピュータ可読媒体。
【０１１２】
ＥＣ７０）ＥＣ６９記載のコンピュータ可読媒体において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値は、前記不揮発性メモリの基準位置の電圧閾値に基づくものであるコンピュータ可読媒体。
【０１１３】
ＥＣ７１）ＥＣ６９記載のコンピュータ可読媒体において、前記動作は、さらに、
前記電圧ドリフト基準タイムスタンプの前記記録されたサンプリング値が、前記読出し時点における前記電圧ドリフト基準タイムスタンプの前記サンプリング値に対して特定の差分よりも小さい場合、デフォルト電圧閾値を前記読出しの前記電圧閾値として使用する工程を有するものであるコンピュータ可読媒体。
【０１１４】
ＥＣ７２）ＥＣ６９記載のコンピュータ可読媒体において、前記動作は、さらに、
前記不揮発性メモリの基準位置を定期的にサンプリングして、前記基準位置の現在の電圧閾値を決定する工程を有し、
前記定期的なサンプリングにより、少なくとも部分的に、前記電圧ドリフト基準タイムスタンプの前記サンプリング値が決定されるものであるコンピュータ可読媒体。
【０１１５】
ＥＣ７３）ＥＣ７２記載のコンピュータ可読媒体において、前記基準位置は不前記揮発性メモリのページであるコンピュータ可読媒体。
【０１１６】
ＥＣ７４）ＥＣ７２記載のコンピュータ可読媒体において、前記基準位置は前記複数のページからなる特定のグループのうちのページの１つであるコンピュータ可読媒体。
【０１１７】
ＥＣ７５）ＥＣ７２記載のコンピュータ可読媒体において、前記基準位置は、前記複数のページからなる特定のグループのうちのページの少なくとも１つと、前記不揮発性メモリの同じブロック内にあるものであるコンピュータ可読媒体。
【０１１８】
ＥＣ７６）ＥＣ７２記載のコンピュータ可読媒体において、前記電圧ドリフト基準タイムスタンプの前記サンプリング値の少なくとも一部はそれぞれ、各生成番号と各閾値部分とを有し、前記生成番号はマスタ生成番号に基づき、前記閾値部分は前記定期的なサンプリングに関連した前記基準位置の前記現在の電圧閾値に基づくものであるコンピュータ可読媒体。
【０１１９】
ＥＣ７７）ＥＣ７６記載のコンピュータ可読媒体において、前記動作は、さらに、
前記基準位置の前記現在の電圧閾値が限度を超えた後に、前記基準位置を更新して前記マスタ生成番号を増分する工程を有するものであるコンピュータ可読媒体。
【０１２０】
システム
一部の実施形態では、ＳＳＤといった入出力装置がＳＳＤコントローラを含む。ＳＳＤコントローラはホストインターフェースとＳＳＤのＮＶＭとの間のブリッジとして働き、ＳＳＤのホストインターフェースを介してコンピューティングホストから送られるホストプロトコルのコマンドを実行する。コマンドの少なくとも一部は、ＳＳＤに、コンピューティングホストから送られたデータおよびコンピューティングホストに送られるデータについて、それぞれ、ＮＶＭの書き込みおよび読み出しを行うよう指図する。別の実施形態では、ＳＳＤコントローラは、マップを使用してホストプロトコルのＬＢＡとＮＶＭ内の物理的記憶アドレスとを変換することができるようになっている。別の実施形態では、マップの少なくとも一部分が、入出力装置の専用記憶（コンピューティングホストからは見えない）に使用される。例えば、コンピューティングホストからアクセスできないＬＢＡの部分が、入出力装置によって、ログ、統計、または他の専用データへのアクセスを管理するのに使用される。
【０１２１】
一部の実施形態では、ＮＶＭ内の様々なサイズの量の圧縮データにアクセスすることにより、ある使用シナリオでは記憶効率が改善される。例えば、ＳＳＤコントローラは、コンピューティングホストから（例えばディスク書き込みコマンドに関連した）（圧縮されていない）データを受け取り、データを圧縮し、データをフラッシュメモリへ記憶する。コンピューティングホストからの（例えばディスク読み出しコマンドに関連した）その後の要求に応答して、ＳＳＤコントローラはフラッシュメモリから圧縮データを読み出し、圧縮データを解凍し、解凍されたデータをコンピューティングホストに提供する。圧縮データは、様々なサイズの量に従ってフラッシュメモリに記憶され、各量のサイズは、例えば、圧縮アルゴリズム、動作モード、様々なデータに関する圧縮有効性により変動する。ＳＳＤコントローラは、一部は、含まれるマップ表を調べて（１つまたは複数の）ヘッダがフラッシュメモリのどこに記憶されているか確認することによってデータを解凍する。ＳＳＤコントローラは、適切な（圧縮）データがフラッシュメモリのどこに記憶されているか確認するためにフラッシュメモリから得た（１つまたは複数の）ヘッダをパースする。ＳＳＤコントローラは、コンピューティングホストに提供すべき解凍データを生成するために、フラッシュメモリからの適切なデータを解凍する。本出願では、「解凍する（ｕｎｃｏｍｐｒｅｓｓ）」（およびその変形）は、「伸張する（ｄｅｃｏｍｐｒｅｓｓ）」（およびその変形）と同義である。
【０１２２】
様々な実施形態では、ＳＳＤコントローラは、コンピューティングホストとインターフェースするためのホストインターフェースと、フラッシュメモリといったＮＶＭとインターフェースするためのインターフェースと、各インターフェースを制御し、圧縮および解凍と共に、低レベル誤り訂正、高レベル誤り訂正、ならびに独立シリコン素子を用いた動的高レベル冗長性モード管理を行う（かつ／または行うことの様々な態様を制御する）ための回路とを含む。
【０１２３】
様々な実施形態によれば、あるホストインターフェースは、ＵＳＢインターフェース規格、ＣＦインターフェース規格、ＭＭＣインターフェース規格、ｅＭＭＣインターフェース規格、サンダーボルトインターフェース規格、ＵＦＳインターフェース規格、ＳＤインターフェース規格、メモリ・スティック・インターフェース規格、ｘＤピクチャ・カード・インターフェース規格、ＩＤＥインターフェース規格、ＳＡＴＡインターフェース規格、ＳＣＳＩインターフェース規格、ＳＡＳインターフェース規格、およびＰＣＩｅインターフェース規格のうちの１つ若しくはそれ以上と適合する。様々な実施形態によれば、コンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＳＡＮ、ＮＡＳデバイス、ＤＡＳデバイス、ストレージアプライアンス、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレット機器またはタブレットコンピュータ、ウルトラブックコンピュータ、電子読み出し装置（ｅ−ｒｅａｄｅｒなど）、ＰＤＡ、ナビゲーションンシステム、（ハンドヘルド型）ＧＰＳ機器、自動通信路制御システム、自動車媒体制御システムまたはコンピュータ、プリンタ、コピー機またはファックス機またはオールインワン機器、ＰＯＳ機器、金銭登録機、メディアプレーヤ、テレビ、メディアレコーダ、ＤＶＲ、ディジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうちの全部または任意の部分である。一部の実施形態では、インターフェースホスト（ＳＡＳ／ＳＡＴＡブリッジなど）は、コンピューティングホストおよび／またはコンピューティングホストへのブリッジとして動作する。
【０１２４】
様々な実施形態では、ＳＳＤコントローラは、１つ若しくはそれ以上のプロセッサを含む。プロセッサは、ＳＳＤコントローラの動作を制御し、かつ／または行うためにファームウェアを実行する。ＳＳＤコントローラは、コマンドおよび／または状況ならびにデータを送り、受け取るためにコンピューティングホストと通信する。コンピューティングホストは、オペレーティングシステム、ドライバ、およびアプリケーションのうちの１つ若しくはそれ以上を実行する。コンピューティングホストによるＳＳＤコントローラとの通信は、任意選択で、かつ／または選択的に、ドライバおよび／またはアプリケーションによるものである。第１の例では、ＳＳＤコントローラへのすべての通信がドライバによるものであり、アプリケーションは、ドライバに高レベルコマンドを提供し、ドライバがそれをＳＳＤコントローラのための特定のコマンドに変換する。第２の例では、ドライバはバイパスモードを実施し、アプリケーションは、ドライバを介してＳＳＤコントローラに特定のコマンドを送ることができるようになっている。第３の例では、ＰＣＩｅ  ＳＳＤコントローラが１つ若しくはそれ以上の仮想機能（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎｓ：ＶＦｓ）をサポートし、アプリケーションが、一度構成されると、ドライバをバイパスしてＳＳＤコントローラを直接通信することを可能にする。
【０１２５】
様々な実施形態によれば、あるＳＳＤは、ＨＤＤ、ＣＤドライブ、ＤＶＤドライブといった磁気的不揮発性記憶および／または光学的不揮発性記憶によって使用されるフォームファクタ、電気的インターフェース、および／またはプロトコルと適合する。様々な実施形態では、ＳＳＤは、０以上のパリティ符号、０以上のＲＳ符号、０以上のＢＣＨ符号、０以上のビタビ符号または他のトレリス符号、および０以上のＬＤＰＣ符号の様々な組み合わせを使用する。
【０１２６】
図１Ａは、不揮発性メモリ（ＮＶＭ）要素（たとえば、フラッシュメモリ）を管理するために読出し閾値の最適化を（たとえば、０／１バランス管理および／またはリテンションドリフトトラッキング技法を介して）実施するＳＳＤコントローラ１００を含むＳＳＤ１０１の選択された詳細を図示する。ＳＳＤコントローラ１００は１若しくはそれ以上の外部インターフェース１１０を介してホスト（図１Ｂのホスト１０２など）に通信するように接続される。様々な実施形態に従って、外部インターフェース１１０は、ＳＡＴＡインターフェース、ＳＡＳインターフェース、ＰＩＣｅインターフェース、ファイバー・チャンネル・インターフェース、イーサネット（登録商標）インターフェース（たとえば、１０ギガビットのイーサネット（登録商標））、上記のインターフェースのうちのいずれかの規格外版、若しくは特注のインターフェース、またはストレージおよび／または通信機器および／または計算デバイスを相互接続するために使用されるその他任意の種類のインターフェースのうちの１若しくはそれ以上である。たとえば、一部の実施形態において、ＳＳＤコントローラ１００はＳＡＴＡインターフェースとＰＣＩｅインターフェースとを含む。
【０１２７】
ＳＳＤコントローラ１００は、さらに、１つ若しくはそれ以上のデバイスインターフェース１９０を介して、１つ若しくはそれ以上のフラッシュデバイス１９２といった、１つ若しくはそれ以上の記憶デバイスを含むＮＶＭ１９９に通信可能に結合されている。様々な実施形態によれば、デバイスインターフェース１９０は、非同期インターフェース、同期インターフェース、シングルデータレート（ＳＤＲ）インターフェース、ダブルデータレート（ＤＤＲ）インターフェース、ＤＲＡＭ互換ＤＤＲ若しくはＤＤＲ２同期インターフェース、ＯＮＦＩ２．２やＯＮＦＩ３．０互換インターフェースといったＯＮＦＩ互換インターフェース、トグルモード互換フラッシュインターフェース、上記のインターフェースのいずれかの非標準バージョン、カスタムインターフェース、または記憶デバイスに接続するのに使用される任意の他の種類のインターフェースのうちの１つ若しくはそれ以上である。
【０１２８】
各フラッシュデバイス１９２は、一部の実施形態では、１つ若しくはそれ以上の個々のフラッシュダイ１９４を有する。フラッシュデバイス１９２のうちの特定のフラッシュデバイスの種類に従って、特定のフラッシュデバイス１９２内の複数のフラッシュダイ１９４に、並列に、任意選択で、かつ／または選択的にアクセスすることができる。フラッシュデバイス１９２は、単に、ＳＳＤコントローラ１００に通信可能に結合することができるようにした記憶デバイスの一種を表しているにすぎない。様々な実施形態では、ＳＬＣ  ＮＡＮＤフラッシュメモリ、ＭＬＣ  ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、多結晶シリコン若しくはシリコン窒化膜技術ベースの電荷蓄積セルを使用したフラッシュメモリ、２次元若しくは３次元技術ベースのフラッシュメモリ、読み出し専用メモリ、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、強磁性メモリ、相変化メモリ、レーストラックメモリ、ＲｅＲＡＭ、または任意の他の種類のメモリデバイス若しくは記憶媒体といった、任意の種類の記憶デバイスを使用することができる。
【０１２９】
様々な実施形態によれば、デバイスインターフェース１９０は、１つのバスにつき１つ若しくはそれ以上のフラッシュデバイス１９２を有する１つ若しくはそれ以上のバス；グループ内のバスにおおむね並列にアクセスさせる、１つのバスにつき１つ若しくはそれ以上のフラッシュデバイス１９２を有する１つ若しくはそれ以上のバスグループ；またはデバイスインターフェース１９０上へのフラッシュデバイス１９２の１つ若しくはそれ以上のインスタンスの任意の他の編成として編成される。
【０１３０】
引き続き図１Ａにおいて、ＳＳＤコントローラ１００は、ホストインターフェース１１１、データ処理１２１、バッファ１３１、マップ１４１、リサイクラ１５１、ＥＣＣ１６１、デバイスインターフェース論理１９１、ＣＰＵ１７１といった１つ若しくはそれ以上のモジュールを有する。図１Ａに図示する具体的なモジュールおよび相互接続は、単に、一実施形態を表すにすぎず、これらのモジュールの一部または全部、および図示されていないさらに別のモジュールの多くの配置および相互接続が考えられる。第１の例として、一部の実施形態では、デュアルポーティングを提供するための２つ以上のホストインターフェース１１１がある。第２の例として、一部の実施形態では、データ処理１２１および／またはＥＣＣ１６１がバッファ１３１と組み合わされている。第３の例として、一部の実施形態では、ホストインターフェース１１１がバッファ１３１に直接結合されており、データ処理１２１が、バッファ１３１に記憶されたデータに任意選択で、かつ／または選択的に作用する。第４の例として、一部の実施形態では、デバイスインターフェース論理１９１がバッファ１３１に直接結合されており、ＥＣＣ１６１が、バッファ１３１に記憶されたデータに任意選択で、かつ／または選択的に作用する。
【０１３１】
ホストインターフェース１１１は、外部インターフェース１１０を介してコマンドおよび／またはデータを送受信し、一部の実施形態では、タグ追跡１１３によって個々のコマンドの進捗を追跡する。例えば、コマンドは、読み出すべきアドレス（ＬＢＡなど）およびデータの量（ＬＢＡ量、例えばセクタの数など）を指定する読み出しコマンドを含み、これに応答してＳＳＤは、読み出し状況および／または読み出しデータを提供する。別の例として、コマンドは、書き込むべきアドレス（ＬＢＡなど）およびデータの量（ＬＢＡ量、例えばセクタの数など）を指定する書き込みコマンドを含み、これに応答してＳＳＤは、書き込み状況を提供し、かつ／または書き込みデータを要求し、任意選択でその後に書き込み状況を提供する。さらに別の例として、コマンドは、もはや割り振られる必要のなくなった１つ若しくはそれ以上のアドレス（１つ若しくはそれ以上のＬＢＡなど）を指定する割り振り解除コマンド（ｔｒｉｍコマンドなど）を含み、これに応答してＳＳＤは、マップをしかるべく変更し、任意選択で割り振り解除状況を提供する。あるコンテキストでは、ＡＴＡ互換ＴＲＩＭコマンドが割り振り解除コマンドの例である。さらに別の例として、コマンドは、超コンデンサ・テスト・コマンドまたはデータハーデニング成功問い合わせを含み、これに応答してＳＳＤは、適切な状況を提供する。一部の実施形態では、ホストインターフェース１１１は、ＳＡＴＡプロトコルと適合し、ＮＣＱコマンドを使用して、最高３２までの未処理のコマンドを有することができるようになっており、各コマンドは０から３１までの数として表された一意のタグを有する。一部の実施形態では、タグ追跡１１３は、外部インターフェース１１０を介して受け取ったコマンドのための外部タグを、ＳＳＤコントローラ１００による処理の間にコマンドを追跡するのに使用される内部タグと関連付けることができるようになっている。
【０１３２】
様々な実施形態によれば、データ処理１２１は、任意選択で、かつ／または選択的に、バッファ１３１と外部インターフェース１１０との間で送られる一部または全部のデータを処理する、およびデータ処理１２１は、任意選択で、かつ／または選択的に、バッファ１３１に記憶されたデータを処理する、以下のうちの１つ若しくはそれ以上が行われる。一部の実施形態では、データ処理１２１は、１つ若しくはそれ以上のエンジン１２３を使用して、書式設定、書式設定の変更、符号変換、ならびに他のデータ処理および／または動作タスクのうちの１つ若しくはそれ以上を行う。
【０１３３】
バッファ１３１は、外部インターフェース１１０からデバイスインターフェース１９０へ／デバイスインターフェース１９０から外部インターフェース１１０へ送られたデータを記憶する。一部の実施形態では、バッファ１３１は、さらに、ＳＳＤコントローラ１００によって１つ若しくはそれ以上のフラッシュデバイス１９２を管理するのに使用される、一部または全部のマップ表といったシステムデータも記憶する。様々な実施形態では、バッファ１３１は、データの一時記憶に使用されるメモリ１３７、バッファ１３１への、かつ／またはバッファ１３１からのデータの移動を制御するのに使用されるＤＭＡ１３３、ならびに高レベル誤り訂正および／または冗長性機能と、他のデータ移動および／または動作機能とを提供するのに使用されるＥＣＣ−Ｘ１３５のうちの１つ若しくはそれ以上を有する。高レベル冗長性機能の一例がＲＡＩＤ様の能力であり、ディスクレベルではなく、フラッシュ・デバイス（フラッシュデバイス１９２のうちの複数のものなど）レベルおよび／またはフラッシュダイ（フラッシュダイ１９４など）レベルの冗長性を備える。
【０１３４】
様々な実施形態によれば、以下のうちの１つ若しくはそれ以上である。ＥＣＣ１６１は、任意選択で、かつ／または選択的に、バッファ１３１とデバイスインターフェース１９０との間で送られる一部または全部のデータを処理する；およびＥＣＣ１６１は、任意選択で、かつ／または選択的に、バッファ１３１に記憶されたデータを処理する。一部の実施形態では、ＥＣＣ１６１は、例えば１つ若しくはそれ以上のＥＣＣ技法に従った低レベル誤り訂正および／または冗長性機能を提供するのに使用される。一部の実施形態では、ＥＣＣ１６１は、ＣＲＣ符号、ハミング符号、ＲＳ符号、ＢＣＨ符号、ＬＤＰＣ符号、ビタビ符号、トレリス符号、硬判定符号、軟判定符号、消去ベースの符号、任意の誤り検出および／または訂正符号、ならびに上記の任意の組み合わせのうちの１つ若しくはそれ以上を実施する。一部の実施形態では、ＥＣＣ１６１は、１つ若しくはそれ以上の復号器（ＬＤＰＣ復号器など）を含む。
【０１３５】
デバイスインターフェース論理１９１は、デバイスインターフェース１９０を介してフラッシュデバイス１９２のインスタンスを制御する。デバイスインターフェース論理１９１は、フラッシュデバイス１９２のプロトコルに従ってフラッシュデバイス１９２のインスタンスへ／からデータを送ることができるようになっている。デバイスインターフェース論理１９１は、デバイスインターフェース１９０を介したフラッシュデバイス１９２のインスタンスの制御を選択的に配列するスケジューリング１９３を含む。例えば、一部の実施形態では、スケジューリング１９３は、フラッシュデバイス１９２のインスタンスへの動作を待ち行列に入れ、フラッシュデバイス１９２（またはフラッシュダイ１９４）のインスタンスの個々のインスタンスへの動作を、フラッシュデバイス１９２（またはフラッシュダイ１９４）のインスタンスの個々のインスタンスが利用可能になるに従って選択的に送ることができるようになっている。
【０１３６】
マップ１４１は、外部インターフェース１１０上で使用されるデータアドレス指定と、デバイスインターフェース１９０上で使用されるデータアドレス指定との間の変換を行い、表１４３を使用して外部データアドレスからＮＶＭ１９９内の位置へマップする。例えば、一部の実施形態では、マップ１４１は、外部インターフェース１１０上で使用されるＬＢＡを、表１４３によって提供されるマッピングにより、１つ若しくはそれ以上のフラッシュダイ１９４を対象とするブロックおよび／またはページアドレスに変換する。ドライブ製造または割り振り解除以来一度も書き込まれていないＬＢＡでは、マップは、ＬＢＡが読み取出された場合に返すべきデフォルト値を指し示す。例えば、割り振り解除コマンドを処理するときに、マップは、割り振り解除されたＬＢＡに対応するエントリがデフォルト値のうちの１つを指し示すように変更される。様々な実施形態では、様々なデフォルト値があり、各々が対応するポインタを有する。複数のデフォルト値は、ある（例えば第１の範囲内の）割り振り解除されたＬＢＡを１つのデフォルト値として読み出し、ある（例えば第２の範囲内の）割り振り解除されたＬＢＡを別のデフォルト値として読み出すことを可能にする。デフォルト値は、様々な実施形態では、フラッシュメモリ、ハードウェア、ファームウェア、コマンドおよび／若しくはプリミティブ引数および／若しくはパラメータ、プログラマブルレジスタ、またはそれらの様々な組み合わせによって定義される。
【０１３７】
一部の実施形態では、マップ１４１は、表１４３を使用して、外部インターフェース１１０上で使用されるアドレスと、デバイスインターフェース１９０上で使用されるデータアドレス指定との間の変換を行い、かつ／またはルックアップする。様々な実施形態によれば、表１４３は、１レベルマップ、２レベルマップ、マルチレベルマップ、マップキャッシュ、圧縮マップ、あるアドレス空間から別のアドレス空間への任意の種類のマッピング、および上記の任意の組み合わせのうちの１つ若しくはそれ以上である。様々な実施形態によれば、表１４３は、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、ＮＶＭ（フラッシュメモリなど）、キャッシュメモリ、オンチップメモリ、オフチップメモリ、および上記の任意の組み合わせのうちの１つ若しくはそれ以上を含む。
【０１３８】
一部の実施形態では、リサイクラ１５１は、不要部分の整理を行う。例えば、一部の実施形態では、フラッシュデバイス１９２のインスタンスは、ブロックが書き換え可能になる前に消去されなければならないブロックを含む。リサイクラ１５１は、例えば、マップ１４１によって維持されるマップをスキャンすることによって、フラッシュデバイス１９２のインスタンスのどの部分が実際に使用されているか（例えば、割り振り解除されているのではなく割り振られていること）を決定し、フラッシュデバイス１９２のインスタンスの未使用の（例えば割り振り解除された）部分を消去することによって書き込みに利用できるようにすることができるようになっている。別の実施形態では、リサイクラ１５１は、フラッシュデバイス１９２のインスタンスのより大きい連続した部分を書き込みに利用できるようにするために、フラッシュデバイス１９２のインスタンス内に記憶されたデータを移動することができるようになっている。
【０１３９】
一部の実施形態では、フラッシュデバイス１９２のインスタンスは、異なる種類および／または属性のデータを記憶するための１つ若しくはそれ以上のバンドをリテンションするように、選択的に、かつ／または動的に構成され、管理され、かつ／または使用される。バンドの数、配置、サイズ、および種類は、動的に変更可能である。例えば、コンピューティングホストからのデータはホット（アクティブな）バンドに書き込まれ、リサイクラ１５１からのデータはコールド（あまりアクティブではない）バンドに書き込まれる。ある使用シナリオでは、コンピューティングホストが長い順次のストリームを書き込む場合には、ホットバンドのサイズが増大し、コンピューティングホストがランダムな書き込みを行い、またはわずかな書き込みしか行わない場合には、コールドバンドのサイズが増大する。
【０１４０】
ＣＰＵ１７１は、ＳＳＤコントローラ１００の様々な部分を制御する。ＣＰＵ１７１は、ＣＰＵコア１７２を含む。ＣＰＵコア１７２は、様々な実施形態によれば、１つ若しくはそれ以上のシングルコアプロセッサまたはマルチコアプロセッサである。ＣＰＵコア１７２内の個々のプロセッサコアは、一部の実施形態では、マルチスレッド化されている。ＣＰＵコア１７２は、命令および／またはデータのキャッシュおよび／またはメモリを含む。例えば、命令メモリは、ＣＰＵコア１７２が、ＳＳＤコントローラ１００を制御するためのプログラム（ファームウェアとも呼ばれるソフトウェアなど）を実行することを可能にする命令を含む。一部の実施形態では、ＣＰＵコア１７２によって実行されるファームウェアの一部または全部が、（例えば、図１ＢのＮＶＭ１９９のファームウェア１０６として図示されている）フラッシュデバイス１９２のインスタンス上に記憶される。
【０１４１】
様々な実施形態では、ＣＰＵ１７１は、外部インターフェース１１０を介して受け取られるコマンドを、コマンドが進行している間に追跡し、制御するコマンド管理１７３、バッファ１３１の割り振りおよび使用を制御するバッファ管理１７５、マップ１４１を制御する変換管理１７７、データアドレス指定の整合性を制御し、例えば、外部データアクセスと再利用データアクセスとの間の矛盾を回避するコヒーレンシ管理１７９、デバイスインターフェース論理１９１を制御するデバイス管理１８１、識別情報の変更および通信を制御する識別情報管理１８２、ならびに、任意選択で、他の管理部をさらに含む。ＣＰＵ１７１によって果たされる管理機能は、そのいずれか、若しくは全部が、ハードウェア、ソフトウェア（ＣＰＵコア１７２上や、外部インターフェース１１０を介して接続されたホスト上で実行されるファームウェアなど）、またはそれらの任意の実施形態によって制御され、かつ／または管理され、あるいは、そのどれも、制御も管理もされないものである。
【０１４２】
一部の実施形態では、ＣＰＵ１７１は、性能統計の収集および／または報告、ＳＭＡＲＴの実施、電源逐次開閉機構の制御、電力消費の制御および／または調整、電源障害への応答、クロック速度の制御および／またはモニタリングおよび／または調整、ならびに他の管理タスクのうちの１つ若しくはそれ以上といった、他の管理タスクを行うことができるようになっている。
【０１４３】
様々な実施形態は、ＳＳＤコントローラ１００と同様の、例えば、ホストインターフェース１１１および／または外部インターフェース１１０の適応による、様々なコンピューティングホストを用いた動作と適合するコンピューティングホスト・フラッシュ・メモリ・コントローラを含む。様々なコンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＳＡＮ、ＮＡＳデバイス、ＤＡＳデバイス、ストレージアプライアンス、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレット機器またはタブレットコンピュータ、ウルトラブックコンピュータ、電子読み出し装置（ｅ−ｒｅａｄｅｒなど）、ＰＤＡ、ナビゲーションンシステム、（ハンドヘルド型）ＧＰＳ機器、自動通信路制御システム、自動車媒体制御システムまたはコンピュータ、プリンタ、コピー機またはファックス機またはオールインワン機器、ＰＯＳ機器、金銭登録機、メディアプレーヤ、テレビ、メディアレコーダ、ＤＶＲ、ディジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうちの１つまたはそれらの任意の組み合わせを含む。
【０１４４】
様々な実施形態では、ＳＳＤコントローラ（またはコンピューティングホスト・フラッシュ・メモリ・コントローラ）の全部または任意の部分が、単一のＩＣ、マルチダイＩＣの単一のダイ、マルチダイＩＣの複数のダイ、または複数のＩＣ上で実施される。例えば、バッファ１３１は、ＳＳＤコントローラ１００の他の要素と同じダイ上に実施される。別の例では、バッファ１３１は、ＳＳＤコントローラ１００の他の要素と異なるダイ上に実施される。
【０１４５】
図１Ｂに、図１ＡのＳＳＤの１つ若しくはそれ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を図示する。ＳＳＤ１０１は、デバイスインターフェース１９０を介してＮＶＭ１９９に結合されたＳＳＤコントローラ１００を含む。図には、様々な種別の実施形態、すなわち、ホストに直接結合された単一のＳＳＤ、各々がそれぞれの外部インターフェースを介してホストに直接それぞれ結合されている複数のＳＳＤ、および様々な相互接続要素を介してホストに間接的に結合された１つ若しくはそれ以上のＳＳＤが示されている。
【０１４６】
ホストに直接結合された単一のＳＳＤの例示的実施形態としては、ＳＳＤ１０１の１つのインスタンスが、外部インターフェース１１０を介してホスト１０２に直接結合される（例えば、スイッチ／ファブリック／中間コントローラ１０３が省かれ、バイパスされ、またはパススルーされる）。各々がそれぞれの外部インターフェースを介してホストに直接結合されている複数のＳＳＤの例示的実施形態としては、ＳＳＤ１０１の複数のインスタンスの各々が、外部インターフェース１１０のそれぞれのインスタンスを介してホスト１０２に直接それぞれ結合される（例えば、スイッチ／ファブリック／中間コントローラ１０３が省かれ、バイパスされ、またはパススルーされる）。様々な相互接続要素を介してホストに間接的に結合された１つ若しくはそれ以上のＳＳＤの例示的実施形態としては、ＳＳＤ１０１の１つ若しくはそれ以上のインスタンスの各々が、ホスト１０２に間接的にそれぞれ結合される。各間接結合は、スイッチ／ファブリック／中間コントローラ１０３に結合された外部インターフェース１１０のそれぞれのインスタンス、およびホスト１０２に結合する中間インターフェース１０４を介したものである。
【０１４７】
スイッチ／ファブリック／中間コントローラ１０３を含む実施形態の一部は、メモリインターフェース１８０を介して結合された、ＳＳＤによってアクセス可能なカードメモリ１１２Ｃも含む。様々な実施形態では、ＳＳＤ、スイッチ／ファブリック／中間コントローラ、および／またはカードメモリのうちの１つ若しくはそれ以上が、物理的に識別可能なモジュール、カード、または差し込み可能な要素（入出力カード１１６など）上に含まれる。一部の実施形態では、ＳＳＤ１０１（またはその変形）は、ホスト１０２として動作するイニシエータ（開始プログラム）に結合されたＳＡＳドライブまたはＳＡＴＡドライブに対応する。
【０１４８】
ホスト１０２は、ＯＳ１０５、ドライバ１０７、アプリケーション１０９、マルチデバイス管理ソフトウェア１１４の様々な組み合わせといった、ホストソフトウェア１１５の様々な要素を実行することができるようになっている。点線矢印１０７Ｄは、ホストソフトウェア←→入出力装置通信、例えば、ＳＳＤ１０１のインスタンスのうちの１つ若しくはそれ以上から／へ、ドライバ１０７を介したＯＳ１０５、ドライバ１０７、および、ドライバ１０７を介して、またはＶＦとして直接アプリケーション１０９のうちの任意の１つ若しくはそれ以上へ／から送られ／受け取られるデータを表す。
【０１４９】
ＯＳ１０５は、ＳＳＤとインターフェースするための（概念的にはドライバ１０７によって図示されている）ドライバを含み、かつ／またはそのようなドライバを用いて動作することができるようになっている。Ｗｉｎｄｏｗｓ（登録商標）の様々なバージョン（９５、９８、ＭＥ、ＮＴ、ＸＰ、２０００、サーバ、Ｖｉｓｔａ、および７など）、Ｌｉｎｕｘ（登録商標）の様々なバージョン（Ｒｅｄ  Ｈａｔ、Ｄｅｂｉａｎ、およびＵｂｕｎｔｕなど）、ならびにＭａｃＯＳの様々なバージョン（８、９およびＸなど）がＯＳ１０５の例である。様々な実施形態では、ドライバは、ＳＡＴＡ、ＡＨＣＩ、ＮＶＭ  Ｅｘｐｒｅｓｓといった標準のインターフェースおよび／またはプロトコルを用いて動作する標準のドライバおよび／または汎用のドライバ（「シュリンクラップされた（市販の）」または「プリインストールされた」ともいう）であり、あるいは、任意選択で、ＳＳＤ１０１に特有のコマンドの使用を可能にするようにカスタマイズされており、かつ／またはベンダ特有のものである。あるドライブおよび／またはドライバは、アプリケーションレベルのプログラム、例えば最適化ＮＡＮＤアクセス（Ｏｐｔｉｍｉｚｅｄ  ＮＡＮＤ  Ａｃｃｅｓｓ）（ＯＮＡともいう）または直接ＮＡＮＤアクセス（Ｄｉｒｅｃｔ  ＮＡＮＤ  Ａｃｃｅｓｓ）（ＤＮＡともいう）の各技法によるアプリケーション１０９などが、コマンドをＳＳＤ１０１に直接伝えることを可能にするパススルーモードを有し、カスタマイズされたアプリケーションが、汎用ドライバとでさえもＳＳＤ１０１に特有のコマンドを使用することを可能にする。ＯＮＡの技法は、非標準変更子（ｈｉｎｔｓ）の使用、ベンダ特有のコマンドの使用、非標準の統計の通信、例えば圧縮可能性に従った実際のＮＶＭの使用、および他の技法のうちの１つ若しくはそれ以上を含む。ＤＮＡの技法は、ＮＶＭへのマップされていない読み出し、書き込み、および／または消去アクセスを提供する非標準のコマンドまたはベンダ特有の（コマンド）の使用、例えば、入出力装置が通常は行うはずのデータの書式設定をバイパスすることによる、ＮＶＭへのより直接的なアクセスを提供する非標準の、またはベンダ特有のコマンドの使用、および他の技法のうちの１つ若しくはそれ以上を含む。ドライバの例は、ＯＮＡまたはＤＮＡサポートなしのドライバ、ＯＮＡ使用可能ドライバ、ＤＮＡ使用可能ドライバ、ＯＮＡ／ＤＮＡ使用可能ドライバである。ドライバの別の例は、ベンダ提供ドライバ、ベンダ開発ドライバ、および／またはベンダ拡張ドライバ、ならびにクライアント提供ドライバ、クライアント開発ドライバ、および／またはクライアント拡張ドライバである。
【０１５０】
アプリケーションレベルのプログラムの例は、ＯＮＡまたはＤＮＡサポートなしのアプリケーション、ＯＮＡ使用可能アプリケーション、ＤＮＡ使用可能アプリケーション、およびＯＮＡ／ＤＮＡ使用可能アプリケーションである。点線矢印１０９Ｄは、アプリケーション←→入出力装置通信（ドライバによるバイパスや、アプリケーションのためのＶＦによるバイパスなど）、例えば、ＯＳを仲介として使用するアプリケーションなしでＳＳＤと通信するＯＮＡ使用可能アプリケーションおよびＯＮＡ使用可能ドライバなどを表す。点線矢印１０９Ｖは、アプリケーション←→入出力装置通信（アプリケーションのためのＶＦによるバイパスなど）、例えば、ＯＳまたはドライバを仲介として使用するアプリケーションなしでＳＳＤと通信するＤＮＡ使用可能アプリケーションおよびＤＮＡ使用可能ドライバなどを表す。
【０１５１】
ＮＶＭ１９９の１つ若しくはそれ以上の部分が、一部の実施形態では、ファームウェア記憶、例えばファームウェア１０６に使用される。ファームウェア記憶は、１つ若しくはそれ以上のファームウェアイメージ（またはその部分）を含む。ファームウェアイメージは、例えばＳＳＤコントローラ１００のＣＰＵコア１７２によって実行される、例えばファームウェアの１つ若しくはそれ以上のイメージを有する。ファームウェアイメージは、別の例では、例えばファームウェア実行時にＣＰＵコアによって参照される、定数、パラメータ値、ＮＶＭデバイス情報の１つ若しくはそれ以上のイメージを有する。ファームウェアのイメージは、例えば、現在のファームウェアイメージおよび０以上の（ファームウェア更新に対して）前のファームウェアイメージに対応する。様々な実施形態では、ファームウェアは、汎用動作モード、標準動作モード、ＯＮＡ動作モード、および／またはＤＮＡ動作モードを提供する。一部の実施形態では、ファームウェア動作モードのうちの１つ若しくはそれ以上が、ドライバによって任意選択で伝えられ、かつ／または提供される、鍵または様々なソフトウェア技法によって使用可能とされる（例えば、１つ若しくはそれ以上のＡＰＩが「ロック解除」される）。
【０１５２】
スイッチ／ファブリック／中間コントローラを欠く一部の実施形態では、ＳＳＤは、外部インターフェース１１０を介して直接ホストに結合される。様々な実施形態では、ＳＳＤコントローラ１００は、ＲＡＩＤコントローラといった他のコントローラの１つ若しくはそれ以上の中間レベルを介してホストに結合される。一部の実施形態では、ＳＳＤ１０１（またはその変形）は、ＳＡＳドライブまたはＳＡＴＡドライブに対応し、スイッチ／ファブリック／中間コントローラ１０３は、イニシエータにさらに結合されたエキスパンダに対応し、あるいは、スイッチ／ファブリック／中間コントローラ１０３は、エキスパンダを介してイニシエータに間接的に結合されたブリッジに対応する。一部の実施形態では、スイッチ／ファブリック／中間コントローラ１０３は、１つ若しくはそれ以上のＰＣＩｅスイッチおよび／またはファブリックを含む。
【０１５３】
様々な実施形態、例えば、コンピューティングホストとしてのホスト１０２（コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＳＡＮ、ＮＡＳデバイス、ＤＡＳデバイス、ストレージアプライアンス、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、および／またはネットブックコンピュータなど）を有する実施形態のあるものでは、コンピューティングホストは、任意選択で、１つ若しくはそれ以上のローカルサーバおよび／またはリモートサーバ（例えば、任意選択のサーバ１１８）と（例えば、任意選択の入出力装置／リソースおよび記憶装置／リソース１１７および任意選択のＬＡＮ／ＷＡＮ１１９を介して）通信することができるようになっている。通信は、例えば、ＳＳＤ１０１要素のうちの任意の１つ若しくはそれ以上のローカルおよび／またはリモートのアクセス、管理、および／または使用を可能にする。一部の実施形態では、通信は、全部または一部がイーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ（登録商標））によるものである。一部の実施形態では、通信は、全部または一部がファイバチャネルによるものである。ＬＡＮ／ＷＡＮ１１９は、様々な実施形態では、１つ若しくはそれ以上のローカル・エリア・ネットワークおよび／または広域ネットワーク、例えば、サーバファーム内のネットワーク、サーバファームを結合するネットワーク、メトロエリアネットワーク、およびインターネットのうちの任意の１つ若しくはそれ以上を表す。
【０１５４】
様々な実施形態では、１つ若しくはそれ以上のＮＶＭと組み合わされたＳＳＤコントローラおよび／またはコンピューティングホスト・フラッシュ・メモリ・コントローラが、ＵＳＢ記憶コンポーネント、ＣＦ記憶コンポーネント、ＭＭＣ記憶コンポーネント、ｅＭＭＣ記憶コンポーネント、サンダーボルト記憶コンポーネント、ＵＦＳ記憶コンポーネント、ＳＤ記憶コンポーネント、メモリスティック記憶コンポーネント、ｘＤピクチャカード記憶コンポーネントといった不揮発性記憶コンポーネントとして実施される。
【０１５５】
様々な実施形態では、ＳＳＤコントローラ（またはコンピューティングホスト・フラッシュ・メモリ・コントローラ）の全部またはいずれかの部分、またはその機能が、コントローラが結合されるべきホスト（図１Ｂのホスト１０２など）において実施される。様々な実施形態では、ＳＳＤコントローラ（若しくはコンピューティングホスト・フラッシュ・メモリ・コントローラ）の全部またはいずれかの部分、またはその機能が、ハードウェア（論理回路など）、ソフトウェアおよび／若しくはファームウェア（ドライバソフトウェア若しくはＳＳＤ制御ファームウェアなど）、またはそれらの任意の組み合わせによって実施される。例えば、（例えば図１ＡのＥＣＣ１６１および／またはＥＣＣ−Ｘ１３５と同様の）ＥＣＣ部の、またはＥＣＣ部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はＳＳＤコントローラ内のファームウェアとハードウェアとの組み合わせによって実施される。別の例として、（例えば図１Ａのリサイクラ１５１と同様の）リサイクラ部の、またはリサイクラ部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はコンピューティングホスト・フラッシュ・メモリ・コントローラ内のハードウェアによって実施される。
【０１５６】
様々な実施形態および／または使用シナリオにおいて、１若しくはそれ以上の管理機能が、ＮＶＭデバイス（たとえば、１若しくはそれ以上のフラッシュダイおよび／またはフラッシュチップ）に対して論理スライスおよび／または区画に従って実行される。管理機能は、読出し、リサイクル、消去、プログラミング／書込み、および他の管理機能のうちのいずれか１若しくはそれ以上を含む。論理スライスおよび／または区画はＲブロックと称されることがある。
【０１５７】
Ｒブロックは、たとえば、フラッシュメモリの様々なダイにわたる論理スライスまたは区画（たとえば、すべてのダイ、全体若しくは部分的に故障したものを除くすべてのダイ、および／またはダイの１若しくはそれ以上の選択されるサブセット）として例示される。たとえば、各フラッシュダイがＮ個のブロックを有する、Ｒフラッシュダイを有するフラッシュメモリにおいて、各Ｒブロックは、合計でＮ個のＲブロックについて、ともにとられるフラッシュダイの各々からｉ番目のブロックである。この例について続けると、Ｒフラッシュダイのうちの１つが故障する場合、各Ｒブロックは、合計でＮ−１個のＲブロックについて、故障したフラッシュダイを除くフラッシュダイの各々からｉ番目のブロックである。別の例について、各々がＮ個のブロックを有する、Ｒフラッシュダイを有するフラッシュメモリにおいて、各Ｒブロックは、合計でＮ／２個のＲブロックについて、フラッシュダイの各々からｉ番目および（ｉ＋１）番目のブロックである。さらに別の例について、複数のデュアル・プレーン・デバイスを有するフラッシュメモリにおいて、各Ｒブロックはデュアル・プレーン・デバイスの各々からｉ番目の偶数ブロックおよびｉ番目の奇数ブロックである。別の例について、各々がＮ個のブロックを有する、Ｒフラッシュダイを有するフラッシュメモリにおいて、各Ｒブロックは、合計でＮ／ｋ個のＲブロックについて、フラッシュダイの各々からｉ番目〜（ｉ＋ｋ−１）番目のブロックである。
【０１５８】
ブロックが、Ｒブロックを形成する一部として、対で、又は他の関連付けられる群において取り扱われる様々な実施形態において、ブロックの関連付けられる群の各ブロックからの各ページもまた、少なくとも書き込むための単位として取り扱わされ、より大きな複数ブロックのページを形成する。例えば、上記の二重平面の例を続けると、偶数ブロックの特定のページの最初のページと、奇数ブロックの関連付けられるページの最初のページとが書き込むための単位として取り扱われ、読み出すための単位として任意選択的及び／又は選択的に取り扱われる。同様に、特定の偶数ブロックの第２のページと、関連付けられる奇数ブロックの第２のページとが単位として取り扱われる。様々な実施形態に従って、本明細書において使用されるようなＮＶＭのページは、ＮＶＭの単一のページと、ＮＶＭの複数ブロックのページと、読み出すための１若しくはそれ以上の個々のページとして任意選択的及び／又は選択的に取り扱われる、書き込みのためのＮＶＭの複数ブロックのページと、ＮＶＭのページに関するその他任意の分類又は関連性とのうちの１若しくはそれ以上を参照する。
【０１５９】
たとえいくつかのブロックが動作不能であったとしても、Ｒブロックが各ダイからの１つのブロックを有することを保証する仮想ブロックアドレスと物理ブロックアドレスとの間のマッピングを含む、Ｒブロックとしての管理のためのフラッシュ・ダイ・ブロックの他の構成が企図される。様々な実施形態において、各フラッシュダイ内のＮ個のブロックのいくつかは予備として使用され、それによって、仮想ブロックアドレスと物理ブロックアドレスとの間のマッピングは、Ｒブロック内のブロックの欠陥品と交換するための予備（そうでなければ使用されない）ブロックを有する。
【０１６０】
０／１バランス復元
図２Ａ〜図２Ｄは、「０／１」バランス復元に関連するデバイス閾値電圧分布を図示する。この説明の目的で、各丘状突起は、ＮＶＭの読出し単位サイズの部分のそれぞれの状態のデバイス閾値電圧確率分布を表す独立したガウス様曲線の抽象化である。デバイス閾値電圧軸が、正電圧が右に向かって増大するように図示されている。絶対尺度は意図的に設けられておらず、基準点は示されておらず、それによって、このグラフはより一般的に、より大きい集団のＮＶＭｓに適用される。図２Ａおよび２ＢはＳＬＣ固有であり、一方で図２Ｃおよび図２ＤはＭＬＣ固有である。
【０１６１】
最初の回（たとえば、対応するデータが書き込まれるとき）を表す図２Ａにおいて、一番左の分布２２０は論理１を表し、一番右の分布２３０は論理０を表す。技術に応じて、一番左の分布は（少なくとも大部分が）負電圧にあり得る。読出し閾値２１０は理想的には、２つの分布の間におかれる。
【０１６２】
これらのデバイス閾値電圧分布から独立して、本明細書における実施形態によって連結されるものを除いて、一部の実施形態において、ＮＶＭは、記憶されている０および１の統計分布の特定の知識を書き込まれる。より詳細には、一部の実施形態において、様々な暗号化および／またはスクランブル技法が、０および１の統計分布が５０−５０パーセント（５０パーセントの０および５０パーセントの１）であるように使用される。理想的には図２Ａの事例の状態である、公称読出し閾値を使用してＳＬＣが読み出されるとき、０および１の観測される読出しデータ統計分布は同様に５０−５０パーセントである。統計分布が５０−５０パーセントであることは、いずれか１つのデータサンプルが、正確に均等なバランスの０ビットおよび１ビットを有することを意味するものではなく、むしろ、多くのサンプルにわたる平均が、サンプル数が増大するにつれて確率的限界が密になっていく、５０−５０パーセントに収束する０ビットと１ビットとの比を生成する。これは、ｎをコインを投げた回数とするとき、ｎ／４によって近似される分散を有するガウス分布を生成する、コインを多くの回数投げたときの表および裏の分布に例えられる。たとえば、０ビットおよび１ビットの５０−５０パーセントの統計分布で読出し単位内に１８，４３２ビットがある場合、０ビット（または１ビット）の数における分散は約４，６０８であり、標準偏差は約６８である。６８の標準偏差では、読出し単位における百万個のサンプル中１個未満が９，２１６の平均から外れた３４０（５標準偏差）を超える数の０ビットを有すると予測されることになる。
【０１６３】
後の回を表す図２Ｂにおいて、公称読出し閾値２１０は図２Ａにあるものであり、２つのデバイス閾値電圧分布２２５および２３５は、図２Ａにおけるそれらの先行するそれぞれの分布２２０および２３０に対してシフトされている。例示を目的として、２つの分布は両方とも均一に左に（より負の電圧に向かって）シフトされているものとして図示されている。より一般的に、２つの分布は、互いから独立して正または負の方向のいずれに移動することも可能にされることは理解されるべきである。
【０１６４】
図２Ｂを考慮して、ＳＬＣが再び公称読出し閾値２１０を使用して読み出されるとき、ＮＶＭから直接読み出される（たとえば、任意のエラー訂正前の）０および１の観測される統計分布は５０−５０パーセントにはならないと予測可能である。より詳細には、与えられている概念的例について、読出し閾値が、いくつかの０が誤って１と読み出されることになるようなものであるため、１が誤って過剰になると予測されることになる。
【０１６５】
実際には推定の方向は逆になる。すなわち、実際には、一般的にデバイス閾値電圧分布のそのようなシフトは分からず、または直接には知り得ない。一部の実施形態において、代わりに、ＮＶＭから読み出される０および１の（既知の記憶されている０および１の分布に対する）不均衡の観測が使用されて、デバイス閾値電圧分布のシフトの存在が推測される。さらに、これらの実施形態において、読出し閾値は、０／１バランスが復元されるまで必要に応じて、読出し閾値２１５に対して観測される不均衡（本明細書の他の箇所で詳述する）に少なくとも部分的に基づいて調整される。
【０１６６】
同様に、図２Ｃは初期デバイス閾値電圧分布による最初の回（対応するデータが書き込まれるときなど）を表し、一方で図２Ｄは、対応する後のデバイス閾値電圧分布による後の回を表す。より具体的には、それぞれ１１、１０、００、および１０状態を表す選択されたグレー・コード・マッピングについて、デバイス閾値電圧分布２５１、２６１、２７１、および２８１（図２Ｄ）は、それらの先行するそれぞれのデバイス閾値電圧分布２５０、２６０、２７０、および２８０（図２Ｃ）に対してシフトされている。３つの公称（初期）読出し閾値、ＶＲＥＡＤ１２４０、ＶＲＥＡＤ２２４２、およびＶＲＥＡＤ３２４４も図示されている。再び例示を目的として、図２Ｄにおいて４つの分布はすべて均一に左に（より負の電圧に向かって）シフトされているものとして図示されている。より一般的に、４つの分布は、互いから独立して正または負の方向のいずれに移動することも可能にされることは理解されるべきである。
【０１６７】
一部の実施形態において、様々なスクランブル技法が、４つの状態の統計分布が２５−２５−２５−２５パーセント（各状態において２５パーセント）であるように使用される。図２Ｃの事例について理想的におかれている公称読出し閾値を使用してＭＬＣが読み出されるとき、一部の実施形態において、４つの状態の統計分布は同様に２５−２５−２５−２５パーセントであるように構成可能である。（他の箇所で説明するように、０および１はコントローラによって直接観測可能であるが、４つすべての状態が必要に応じて推測可能である。）一部の実施形態において、ＮＶＭから読み出される（既知の記憶されている状態の分布に対する）不均衡（予測される２５−２５−２５−２５パーセントからの偏差）の観測が使用されて、デバイス閾値電圧分布のシフトの存在が推測される。その後、読出し閾値が（本明細書の他の箇所で詳述するように）図２Ｄに示すように調整されて、ＶＲＥＡＤ１２６５、ＶＲＥＡＤ２２７５、およびＶＲＥＡＤ３２８５になる。一部の実施形態において、読出し閾値調整は、下位ページ読出し（ＶＲＥＡＤ２２７５の調整）および上位ページ読出し（ＶＲＥＡＤ１２６５および／またはＶＲＥＡＤ３２８５）に対して別個に実行される。
【０１６８】
０／１バランス復元のための機能
図３は、選択された論理ブロック境界を描き直して特定の機能を強調している、図１Ａおよび図１ＢのＳＳＤ１０１、ＳＳＤコントローラ１００、およびＮＶＭ１９９の代替の図を提供する。最高レベルにあるＳＳＤ１０１は、外部インターフェース１１０、ＳＳＤコントローラ１００、ＮＶＭ１９９、およびデバイスインターフェース１９０を特徴とする。
【０１６９】
外部インターフェース１１０は、図１Ｂのホスト１０２のようなホストに結合されており、ホストをソースとする記憶関連のコマンドならびにデータ書込みおよびコントローラをソースとするデータ読出しを含み、図１Ａの上記の説明において詳述したような、ＳＡＴＡのような高レベル記憶プロトコルをサポートする。デバイスインターフェース１９０は、図１Ａの説明において詳述したような低レベルＮＶＭ  Ｉ／Ｏトランザクションをサポートする。ＮＶＭ１９９は、ＮＶＭアレイ３３２、プログラム可能読出し電圧回路３３４、制御／ステータスレジスタ３３６、およびＩ／Ｏ３３８を特徴とする。ＳＳＤコントローラ１００は、ホストインターフェース１１１、スクランブラ３１０、ＥＣＣ符号化器３２０、デバイス・インターフェース・ロジック１９１、不平衡検出器３４０、バッファ１３１、ＥＣＣ復号器３６０、デスクランブラ３７０、およびバランス復元ロジック３８０を特徴とする。ホストインターフェース１１１は、前述のように外部インターフェース１１０を介してホストと結合し、書込みデータ３０６をスクランブラ３１０に提供し、バッファ１３１から読出しデータ３５１を受信する。
【０１７０】
書込み経路および機能は以下の通りである。スクランブラ３１０は書込みデータ３０６に対して、ＥＣＣ符号化器３２０に対するスクランブル書込みデータ３１１を生成するように動作する。スクランブラ３１０は、書込みデータ３０６を可逆的に、スクランブル書込みデータ３１１が記憶されている状態の既知の統計分布を有するようにスクランブルする。スクランブルデータを含むブロックの一例は、スクランブル書込みデータ３１１を含むブロックである。たとえば、スクランブルデータを含むＳＬＣブロックは、等しい数の「０」および「１」の値を含み、スクランブルデータを含む４ＬＣブロックは、等しい数の「００」、「０１」、「１０」、および「１１」状態を含む。一部の実施形態において、スクランブラ３１０は、暗号化の副産物としてデータをランダム化するＡＥＳ符号化器などを介して暗号化を実行する。一部の実施形態において、スクランブラ３１０は、線形フィードバック・シフト・レジスタ（ＬＦＳＲ）を使用して、データをランダム化する（が、データセキュリティの意図は一切ない）。ＥＣＣ符号化器３２０はスクランブル書込みデータ３１１を処理してさらなるＥＣＣビットを追加し、結果として、デバイスインターフェース１９０を介してＮＶＭ１９９に記憶するためにデバイスインターフェース１９１に提供されるＥＣＣ符号化書込みデータ３２１をもたらす。
【０１７１】
基本読出し経路および機能は以下の通りである。未訂正およびスクランブル（生）読出しデータ３５９を含むＮＶＭページがＮＶＭ１９９からデバイスインターフェース１９０を介して受信される。図３に関連して続けると、各読出し単位は公称的に、スクランブラ３０１によってスクランブルされたデータ、および、ＥＣＣ符号化器３２０によって生成されたさらなるＥＣＣビットを含むが、これらは一般的に、ＮＶＭ記憶および取り出し動作の結果として意図せず改変されている。読出し単位はバッファ１３１を介してＥＣＣ復号器３６０に提供される。ＥＣＣ復号器３６０は、含まれているさらなるＥＣＣビットを利用して読出し単位を処理して、任意の時点において、およびデータが最初にＥＣＣ符号化されてからの時点において発生している場合がある任意のエラーを全般的に訂正し、結果として、デスクランブラ３７０に提供される訂正読出しデータ３６１がもたらされる。デスクランブラ３７０は訂正読出しデータ３６１に対して動作し、スクランブラ３１０によって実行されたスクランブルの逆を行って、読出しデータ３５１としてバッファ１３１を介してホストインターフェース１１１に提供される未スクランブル読出しデータ３７１をもたらす。
【０１７２】
読出し経路および機能は、さらに、不平衡検出器３４０およびバランス復元ロジック３６０を含む。不平衡検出器３４０は、ＮＶＭから受信される生読出しデータ３５９を監視し、状態の統計分布に関するデータを少なくとも一時的に維持する。バランス復元ロジック３８０は、デバイス・インターフェース・ロジック１９１およびＮＶＭ  Ｉ／Ｏ３３８を介してＮＶＭ制御／ステータスレジスタ３３６と対話して、ＮＶＭプログラム可能読出し電圧回路３３４を介してＮＶＭ読出し閾値（ＮＶＭアレイ３３２を読み出すのに使用される）を選択的に調整する。ＮＶＭ読出し閾値の一例は、図５Ａおよび図５Ｂにおいて参照される現在の読出し閾値である。一部の実施形態において、ＮＶＭ読出し閾値は制御／ステータスレジスタ３３６に書き込まれ、プログラム可能読出し電圧回路３３４を構成する。読出し閾値は、ａ）ＥＣＣ復号器３６０によって検出される訂正不可能読出し３６２、およびｂ）不平衡検出器３４０によって検出される（状態の統計における）不平衡３４１に基づいて調整される。読出し単位はＳＬＣおよびＭＬＣの両方の実施形態において、バイナリデータである。０および１の不均衡はＳＬＣ事例においては（またはＭＬＣがＳＬＣであると考えられるように動作するときには）直接測定可能である。一部の実施形態において、ＭＬＣの２つを超える状態の不均衡が、データがどのようにＮＶＭ内に記憶されたかの知識に基づいて推測される。
【０１７３】
図３は、ホストが、ＮＶＭ１９９に書き込まれ、ＮＶＭ１９９から読み出されるデータのソースおよびシンクとして動作するコンテキストにおける０／１バランス復元のための機能を図示する。様々な実施形態（図１Ａおよび図１Ｂによって図示するような）において、１若しくはそれ以上の他のエージェントがＮＶＭ１９９に書き込まれ、ＮＶＭ１９９から読み出されるデータのソースおよびシンクとして動作する。他のエージェントの一例は、本明細書の他の箇所において説明するような、データをＮＶＭ１９９内のあるロケーションから別のロケーションへ移動する、図１Ａのリサイクラ１５１である。
【０１７４】
様々な実施形態において、スクランブラ３１０、ＥＣＣ符号化器３２０、ＥＣＣ復号器３６０、およびデスクランブラ３７０のうちのいずれか１若しくはそれ以上と関連付けられた機能のいずれまたはすべての部分は、少なくとも部分的に、データ処理１２１およびＥＣＣ１６１（両方とも図１Ａ）の１若しくはそれ以上を使用して実装される。
【０１７５】
０／１バランス復元のための制御フロー
図４は、書込み関連の動作および読出し関連の動作に関する特定の詳細を提供する、図１Ａ、図１Ｂ、および図３のＳＳＤ一実施形態の選択された制御フロー詳細を図示する。書込み動作は動作４１０によって開始し、４３０を通じて継続する。戻り経路は明示的に描かれていないが、後続の書込み動作が動作４１０によって再び開始する。同様に、読出し動作が動作４４０によって開始して４６０を通じて継続し、条件付きで４８０を通じて継続する。戻り経路は明示的に描かれていないが、後続の読出し動作が動作４４０によって再び開始する。少なくとも最初の書込みが、同じロケーションに対する読出しに先行すると仮定される。それ以外で、検査におけるような意図されている事例を除いて、読出し動作および書込み動作は一般的に、同じまたは概して異なるロケーションについて、アプリケーションが命令を必要とするときに、独立して呼び出される。それにもかかわらず、ヒューリスティックな例において、最初の読出し動作４４０は概念的に、同じロケーションに対する最後の書込み動作４３０の直後に継続する。
【０１７６】
書込み関連動作をより詳細に考えると、ＮＶＭに書き込まれるべき元のデータは、暗号化またはＬＦＳＲの使用を介してなどで概して最初に動作４１０においてスクランブルされる。より具体的強調される場合を除いて、「スクランブル」という用語は、本明細書において使用される場合、結果として、ＮＶＭ内に記憶されている様々な状態の中の既知の統計分布をもたらす任意の動作または選択を介した書き込まれるべき元のデータの動作を指す。スクランブル方法は暗号化およびＬＦＳＲ技法を含む。（図３のスクランブラ３１０も参照されたい。）一部の暗号化実施形態において、スクランブルは、ＡＥＳ暗号化仕様の少なくとも１つのバージョンに従う。一部のＬＦＳＲ実施形態において、スクランブルは、ＬＦＳＲの少なくとも１つの選択に従う。一部の実施形態において、スクランブルは、（必ずしも暗号化またはＬＦＳＲ処理を使用することなく）ＮＶＭに書き込まれるときに状態の選択された統計分布を提供する、１若しくはそれ以上のテストパターンの選択を介してより直接的に決定される。
【０１７７】
ＬＦＳＲは、シフトレジスタの選択されたタップの線形関数から入力ビットを生成する組合せ論理フィードバックネットワークを有するハードウェア・シフト・レジスタまたはそのソフトウェアモデルである。ＬＦＳＲは、決定論的疑似ランダムシーケンスを生成する。少なくとも概念的に、ＬＦＳＲ生成疑似ランダムシーケンスは、スクランブルデータを提供するために元のデータにモジュロ２加算される。
【０１７８】
その後、スクランブルデータは、動作４２０に図示するように、次に任意選択的にＥＣＣ符号化される。（図３のＥＣＣ符号化器３２０も参照されたい。）ＥＣＣ符号化は、ＮＶＭを使用するときに様々な理由で発生するエラーに直面したときにデータ回復を（エラー訂正を介して）可能にする重複情報を提供する。そのようなエラーはより広く起こりやすく、したがって、ＭＬＣメモリのより小さい形状寸法、より多い使用、より長い年数、より大きい温度逸脱、および使用のうちの１若しくはそれ以上で、ＥＣＣ符号化がより望ましい。
【０１７９】
スクランブルされ任意選択的にＥＣＣ符号化されたデータはその後、書込み関連動作の最後である動作４３０に示すようにＮＶＭに書き込まれる。書き込まれている状態の分布がスクランブルの結果として分かっている。ＳＬＣメモリおよびＡＥＳ暗号化を使用する事例において、０−１分布は５０−５０（すなわち５０パーセントの０および５０パーセントの１）であることが分かっている。４ＬＣ（４レベルＭＬＣ）メモリおよびＡＥＳ暗号化を使用する事例において、下位ページおよび上位ページの両方の書込み後の分布は２５−２５−２５−２５（すなわち、４つの状態の各々において２５パーセント）であることが分かっている。
【０１８０】
一部の実施形態において、少なくとも１つの基準領域が上述のような１若しくはそれ以上のテストパターンの使用専用にされる。一部の実施形態において、基準領域のロケーションは、様々なＮＶＭ書込み／読出しアーティファクトのテストパターンに対する影響を最小限に抑える（または逆に、最大限にする）ように選択される。一部の実施形態において、基準領域は基準ページであり、そのロケーションは、書き込まれているデータに対する書込みディスターブの影響を最小限に抑えるように、ブロック内に書き込みされる最後のページになるように選択される。電圧分布に影響を与える現象の一部としては時間および／または温度の変動があり、基準領域は０／１不均衡に対するこれらの影響の既知の測度としての役割を果たす。
【０１８１】
動作４４０において開始する読出し動作をより詳細に考えると、１若しくはそれ以上の読出し単位がＮＶＭから読み出され、状態の分布がキャプチャされる。一部の実施形態において、０カウントおよび１カウントの各々が直接求められる。次に、動作４５０において、元のデータを回復する試行が行われる。これは、書込みの前に実行されたデータ動作が何であろうと、その逆を実行する。ＥＣＣ符号化が書込みの前に任意選択的に追加されており、したがって、読出し単位は次に任意選択的にＥＣＣ復号を受ける。（図３のＥＣＣ復号器３６０も参照されたい。）読出し単位ごとに、ＥＣＣ復号が成功した場合、次に必要に応じてデスクランブルが実行される。たとえば、ＡＥＳ暗号化が書込みの前に使用された場合、ＡＥＳ解読が実行される。または、ＬＦＳＲ生成疑似ランダムシーケンスが使用された場合、同じシーケンスが読出し単位からのＥＣＣ復号データにモジュロ２加算される。
【０１８２】
読出し関連動作は、エラーがないかまたはＥＣＣ復号を介して訂正可能であるエラーについて、元のデータが回復可能であるときは早期に終了する。決定４６０からの「いいえ」経路を参照されたい。しかしながら、読出し単位のいずれかに訂正不可能エラーがあると、動作４７０および動作４８０も実行される。決定４６０からの「はい」経路を参照されたい。動作４７０において、状態の分布の不均衡が評価される。（図３の不平衡検出器３４０も参照されたい。）一部の実施形態において、求められる不均衡は、０カウントと１カウントとの間の求められる差である。様々な実施形態において、求められる不均衡は、たとえ訂正不可能（たとえば、ハード判定復号）エラーを有する読出し単位がすべてに満たなくても、すべての読出し単位にわたって計算される。
【０１８３】
次に、動作４８０において、少なくとも１つの読出し閾値の調整された値（閾値シフトとも称される）が、求められた不均衡の大きさに少なくとも部分的に基づいて決定される。一部の実施形態において、求められた不均衡の大きさが所定の許容誤差を下回る場合、読出し閾値は調製されない。一部の実施形態において、多因子「訂正アルゴリズム」が調整読出し閾値を決定するために採用され、求められた不均衡の大きさもその１つの因子に過ぎない。
【０１８４】
一部の実施形態において、訂正アルゴリズムは、読出し閾値の置換値を選択するのに使用されるルックアップテーブルの形態をとる。求められた不均衡の大きさは、ルックアップテーブル内のインデックスの少なくとも一部のための基礎である。一部の実施形態において、ルックアップテーブルは、使用されているＮＶＭの特定の供給元に基づいて予め特性化（重み付け）されている。いくつかの実施形態において、インデックスは、プログラム／消去サイクル、年数、保持時間（最後の書込みからの時間）、温度、および、ＮＶＭのデバイス閾値電圧分布のドリフトまたはそれに対する擾乱に関連し得る任意の他の因子のうちの１若しくはそれ以上を含む、追加の構成要素を有する。（図３のバランス復元ロジック３８０も参照されたい。）
ここで、および詳細な説明全体を通じて、一般的に使用されているフラッシュメモリのマイクロアーキテクチャにおいて、動作の粒度は異なり、たとえば、読出し単位は読出しの最小サイズであり、ページは書込み（たとえば、プログラミング）の最小サイズであり、ブロックは消去の最小サイズであることを想起されたい。各ブロックは、対応する複数のページを含み、各ページは対応する複数の読出し単位を含む。様々な実施形態において、ＳＳＤコントローラは、１若しくはそれ以上の読出し単位、１若しくはそれ以上のページ、および１若しくはそれ以上のブロックのうちのいずれか１若しくはそれ以上に対応する量において１若しくはそれ以上のフラッシュメモリから読出し、および／またはフラッシュメモリに対して書き込む。
【０１８５】
一部の実施形態において、不均衡はページ全体をベースに評価される。一部の実施形態において、不均衡は読出し単位をベースに評価される。読出しにおける訂正不可能（たとえば、ハード判定復号）エラーに関連して実行される不均衡評価は、その同じロケーションを含んでいた最近の書込みにおいて書き込まれたものと同じ（ページ、または読出し単位）ロケーションに対して実行される。
【０１８６】
リテンションドリフト履歴の監視を介した最適な読出し閾値の予測
図４によって表される実施形態は、訂正不可能（たとえば、ハード判定復号）エラーに応答して少なくとも１つの読出し閾値を調整する。図５Ａ、図５Ｂ、図５Ｃ、および図６によって表される実施形態は、製造特性、初期仕様、タイマ（たとえば、定期的、不規則、またはランダム）、閾値を上回るビット・エラー・レート、および訂正不可能（たとえば、ハード判定復号）エラーのうちのいずれか１若しくはそれ以上に応答して少なくとも１つの読出し閾値を調整する。図５Ａ、図５Ｂ、図５Ｃ、および図６によって表される様々な実施形態は、ＮＶＭのブロックがグループで管理され、特定のグループのブロックのすべての少なくとも１つの読出し閾値の調整が特定のグループのブロックのサンプリングの部分的な読出しに基づくコンテキストにおいて操作される。たとえば、部分的な読出しの少なくともいくつかが条件を満たす場合、特定の管理されているグループのすべてのブロックについて読出し閾値が調整される。様々な実施形態において、調整は、リテンションドリフトクロック（リテンションドリフトトラッキング）技法による。一部の実施形態において、図４によって表される技法は、図５Ａ、図５Ｂ、図５Ｃ、および図６によって表される技法とともに使用される。
【０１８７】
図５Ａは、（たとえば、ＳＳＤの）ＮＶＭに対する読出し閾値を最適化する実施形態の選択された詳細の流れ図を図示する。様々な実施形態において、ＮＶＭには、ＮＶＭの製造者によって指定され、製造者によって正確に機能することを保証されたデフォルトの動作読出し閾値が設けられる。ＮＶＭの読出し単位の読出しは、現在の読出し閾値に従って実行される。最初に、動作５１０において、現在の読出し閾値がデフォルトの動作読出し閾値に設定される。一部の実施形態において、デフォルトの動作読出し閾値は制御／ステータスレジスタ３３６に書き込まれ、図３のプログラム可能読出し電圧回路３３４を構成する。
【０１８８】
動作５２０において、ＮＶＭの読出しが現在の読出し閾値に従って実行される。概念的に動作５２０の読出しと並行して、コントローラは、リテンションドリフトトラッキング５９０に関連する様々な活動をも実行し、これらはともに、ハード読出しエラーが相対的に起こりにくくなるように、最適な読出し閾値電圧を予測する目標を有する。一部の実施形態および／または使用シナリオにおいて、リテンションドリフトトラッキングは、ハード（ＥＣＣ訂正不可能）読出しエラーの低減または回避を可能にする。基準セル書込み５０１、実際の新規の最適な読出し閾値の決定５０２、およびリテンションドリフト履歴の初期化５０３を介してリテンションドリフトトラッキングが初期化される。その後、リテンションドリフトトラッキングが動作５３０において新規の動作読出し閾値で現在の読出し閾値を更新することが可能になり、これは、性能、電力消費、および信頼性のうちの１若しくはそれ以上を改善するように最適化される。一部の実施形態において動作５２０は、動作５０３においてリテンションドリフト履歴が初期化される前にデータ読出しを実施するが、一部の実施形態において、動作５３０は動作５２０においてデータが最初に読み出される前に行われることを可能にされることが留意されるべきである。
【０１８９】
リテンションドリフトトラッキング５９０の機能全体は、クロック発生器がタイミング信号を導出するための基準または標準を提供するのとおおよそ同様に、時間および温度にわたる読出し閾値電圧（Ｖｔｈ）の標準または基準（および時間および温度にわたるリテンションドリフトの測度）として機能する「リテンションドリフトクロック」とも称される。この例えを延長して、電圧ドリフト基準の１つ（ＳＬＣメモリ）若しくはそれ以上（ＭＬＣメモリ）の最適な読出し閾値電圧の各決定されたセットは、本明細書において、各々リテンションドリフト履歴内のエントリに対応する「タイムスタンプ」と称される。一部の実施形態において、リテンションドリフト履歴内のタイムスタンプエントリは、時間の表現（システム事象に対するオフセットカウンタ、または実際のタイムクロックから導出される値）をも含むことになるが、より一般的には、一部の実施形態において、リテンションドリフト履歴内のタイムスタンプエントリは、時間の表現を含まない。
【０１９０】
動作５３０において、後述するように、リテンションドリフト履歴によって決定されるリテンションドリフトの量に少なくとも部分的に従って、現在の読出し閾値が更新される。一部の実施形態において、現在の読出し閾値の更新は、１時間に１回など、時間的に定期的に実行される。一部の実施形態において、たとえば、現在の読出し閾値の更新は、下記により詳細に説明するように、タイマＴ１  ５５０およびＴ２  ５５１のうちの１若しくはそれ以上に従って、小規模リテンションドリフト更新５４０を介して実行される。一部の実施形態において、現在の読出し閾値の更新は、１００Ｋの読出しごとに１回など、読出し回数において定期的に実行される。この更新は、リテンションドリフト履歴を考慮した領域（Ｒブロックなど）の新規の基準タイムスタンプ（たとえば、動作５６６において決定される、下記により詳細に説明する）の評価（たとえば、下記により詳細に説明する動作５５５において、一部の実施形態において単純に比較することによる）を有する（たとえば、動作５６６の後の、下記により詳細に説明する、動作５６７によって更新される基準タイムスタンプの編集／記録）。一部の実施形態において、対応する領域がプログラムされているか否かにかかわらず、新規の領域固有の基準タイムスタンプが記録される。一部の実施形態において、領域の現在の読出し閾値が、（何らかの理由で）領域の新規の基準タイムスタンプが記録されているか否かにかかわらず、（たとえば、動作５３０において、動作５５５に従って）調製される。
【０１９１】
動作５０１において書き込まれた基準セル（電圧ドリフト基準とも称される）は、所定の基準に従って選択されたセルの集合であり、実施形態に従って、図１Ａのフラッシュダイ１９４の１若しくはそれ以上の上の、１若しくはそれ以上のページ、１若しくはそれ以上のブロック、または１若しくはそれ以上の他のダイ部分を含む。一部の実施形態において、セル間干渉（ｉｎｔｅｒ−ｃｅｌｌ  ｉｎｔｅｒｆｅｒｅｎｃｅ：ＩＣＩ）に対処するように少なくとも２つのページが基準セルに使用される。一部の実施形態において、基準ページは、通常使用（非基準セル）データの整合を可能にされた統計分布を有するパターンでプログラムされる。一部の実施形態において、統計分布はランダムである。一部の実施形態において、ＳＬＣ（または下位ページ）データとＭＬＣ（または上位ページ）データとに別個の基準ページが維持されて、下位ページおよび上位ページから予測される異なるドリフトが対処される。いくつかの実施形態において、ダイ内のブロック間の変動、および／またはダイ間の変動に対処するために、異なるロケーションおよび／または異なるダイにある複数のブロックが基準セルに使用され（基準セルは意図的にそのように分散されている）、平均化が採用されて変動が緩和される。実施形態によれば、基準セルのＰ／Ｅサイクルまたは摩耗を、全体としてのドライブの平均Ｐ／Ｅサイクルまたは摩耗の相対的に近くにリテンションするために、基準セルは、一定期間、たとえば、３ヶ月後、および／または一定数のグローバルＰ／Ｅサイクル、たとえば、２００サイクルのような、所定の基準に従って、通常使用（非基準）セルの少なくとも１つの他の対応する集合において「回転」（集合によって変更）される。
【０１９２】
動作５０２における（動作５６６においても実行される）実際の新規の最適な読出し閾値の決定（電圧ドリフト基準タイムスタンプのサンプリングとも称される）は、本明細書の他の箇所で説明されるような、０−１バランス／不均衡の経験的評価のような、所定の方法に従って実行される。決定された実際の最適な読出し閾値（サンプリングタイムスタンプとも称される）は、初期プログラミング中のセル間干渉、デバイスのＰ／Ｅサイクル、読出しディスターブ、ならびに、経過時間および温度逸脱に起因するリテンションドリフトを含む様々な理由で、意図された／公称的にプログラムされた読出し閾値と異なる場合がある。実際の新規の最適な読出し閾値が決定されると、それらはリテンションドリフト履歴内の第１のエントリとしてログ記録される。（言い換えると、電圧ドリフト基準のサンプリングタイムスタンプがリテンションドリフト履歴内に記録される。）エントリごとに記憶される読出し閾値の数は、不揮発性メモリのレベル数の関数である。実施形態によれば、たとえば、ＳＬＣメモリについては１つの読出し閾値のみが記憶され、一方で４ＬＣメモリについては３つの読出し閾値が記憶される。リテンションドリフト履歴は、（リテンションドリフト履歴）ログ、ストア、バッファ、またはキャッシュと様々に称される（その中に記憶される）。実施形態によれば、図１Ａのバッファ１３１の一部分および／または図１Ａのフラッシュダイ１９４のうちの１若しくはそれ以上の一部分が、リテンションドリフト履歴の記憶および／または更新に使用される。分かるように、リテンションドリフト履歴を使用することによって、読出し閾値が、電源オフの時間、ストレージの温度などの要因を含め、時間および温度について自動的に補償されることが可能になる。
【０１９３】
一部の実施形態において、新規の動作読出し閾値は制御／ステータスレジスタ３３６に書き込まれ、図３のプログラム可能読出し電圧回路３３４を構成する。様々な実施形態において、読出しの後、新規の動作読出し閾値に更新された現在の読出し閾値に従って、動作５３０によるリテンションドリフトトラッキングの更新が実行される。リテンションドリフトトラッキングは概念的に、少なくとも一部の実施形態において、動作５２０におけるＮＶＭの読出しが、動作５９０におけるＮＶＭの読出しまたは書込みが動作５２０におけるＮＶＭの読出しと同時に実行されることが阻害されるように実行されるという点において、読出しと並行して動作するものとして説明される。たとえば、動作５２０におけるＮＶＭの読出しは、動作５９０におけるＮＶＭの読出しまたは書込みよりも高い優先度で実行される。別の例について、動作５９０におけるＮＶＭの読出しは、ＮＶＭが他の様態でアイドルであるときのように、バックグラウンドで実行される。
【０１９４】
様々な実施形態において、ＳＳＤは現在の読出し閾値を定期的に再評価する。第１のタイマ（Ｔ１）および第２のタイマ（Ｔ２）は、それぞれ決定５５０および決定５５１において、最後に小規模および大規模リテンションドリフト更新が実行されてから経過した時間をトラッキングする。Ｔ１タイマが満了する（が、Ｔ２は満了しない）とき、小規模リテンションドリフト更新が実行される。Ｔ２タイマが満了するとき、大規模リテンションドリフト更新５６０が実行され、その後、小規模リテンションドリフト更新５４０が実行される。様々な実施形態において、タイマは、ソフトウェア、ファームウェア、およびハードウェアのいずれか１若しくはそれ以上を通じて構成可能である。一部の実施形態において、第１のタイマ（Ｔ１）は６〜２４時間に構成され、一方で第２のタイマ（Ｔ２）は１週間または２週間以上に構成可能である。
【０１９５】
一部の実施形態において、小規模および大規模リテンションドリフト更新は組み合わされ、第１のタイマ（Ｔ１）のみが使用される。より詳細には、そのような第１のタイマのみの実施形態において、決定５５０によって「はい」の結果であると、制御は直接動作５６０に流れる。第１のタイマ（Ｔ１）は、たとえば、１日に１回、１週間に１回、または１ヶ月に１回切れるように構成される。より一般的に、実施形態によれば、実際の新規の最適な読出し閾値が決定される頻度は、ＮＶＭのタイプおよびその特性、読出し閾値の変化の割合の履歴、温度センサなどからの温度、デバイスが動作している実行サイクルなどからの経過時間、電源投入するごとに１度、リセットするごとに１度、スリープからウェークアップするごとに１度、および他の要因のうちの１若しくはそれ以上に従って選択される。一部の実施形態において、ブロックが書き込まれた所定の間隔内にブロックが読み出されなかったと決定されると、ブロックが読み出される前に小規模および／または大規模リテンションドリフト更新が強制的に実行される。
【０１９６】
図５Ｂおよび図５Ｃはそれぞれ、リテンションドリフトトラッキング５００の構成要素である、小規模リテンションドリフト更新５４０および大規模リテンションドリフト更新５６０の実施形態の選択された詳細の流れ図を図示する。図５Ｂにおいて、小規模リテンションドリフト更新５４０は、任意選択の選択リテンションドリフトプレディクタ／方式５５３、リテンションドリフト履歴の読出し５５４、およびリテンションドリフト履歴に基づく新規の最適な読出し閾値の予測５５５を含む。そのような小規模リテンションドリフト更新において、新規の最適な読出し閾値電圧に関して予測される値は、実施形態に従って１若しくはそれ以上のプレディクタ（方式、またはアルゴリズム）を使用して既存のリテンションドリフト履歴データに対する操作に基づいて決定され、大規模リテンションドリフト更新に関連付けられる、より時間のかかる経験的評価（１若しくはそれ以上のテスト読出し閾値電圧の変更およびその電圧におけるテストを含む）は避ける。
【０１９７】
実施形態によれば、リテンションドリフトプレディクタ／方式は、固定であるか、複数の中から特定のプレディクタ／方式にプログラム可能であるか、または、所定の基準に従って動的に選択され得る。第１のプレディクタ方式は、１対１関数を含み、通常使用（非基準）セルが基準セルに対して理想的に振る舞うものと予測される。第２のプレディクタ方式は、時間ベースの関数を含み、基準セルから得られる読出し閾値が、基準セルが最後に書き込まれてからのリテンションドリフト履歴および経過時間を考慮して改変される。第３のプレディクタ方式は、補償関数を含み、基準セルから得られる読出し閾値が、時間および／または摩耗依存である差を含む、通常使用セルと基準セルとの間の差を計上する特性化データを考慮して改変される。特定の例として、補償プレディクタは、通常使用セルが基準セルと比較して異なるリテンションドリフトを呈するという決定に基づいて補償することを可能にされる。一部の実施形態において、基準セルと通常使用セルとの間の変動は時間および／若しくは摩耗とともにより明白になり、かつ／またはドリフトはより線形的な領域およびあまり線形的でない領域を有し、補償プレディクタはそれに応じてすべてのこれらのシナリオを補償する。プレディクタ方式は一般的に組合せ可能でもある。すなわち、単一のプレディクタモジュールが１若しくはそれ以上のプレディクタ方式を実行することを可能にされる。実施形態によれば、プレディクタによって適用される補償は、時間変数を有する線形関数、時間変数を有しない線形関数、単位元関数、時間変数を有する非線形関数、および時間変数を有しない非線形関数を含む。分散基準セルを有する一部の実施形態において、プレディクタ（複数の場合もあり）は付加的に、分散基準セルブロックの間の平均化を実行する。
【０１９８】
図５Ｃにおいて、大規模リテンションドリフト更新５６０は、任意選択のエポックの実施５７０、実際の新規の最適な読出し閾値の決定５６６、およびリテンションドリフト履歴の更新５６７を含む。動作５６６の実際の新規の最適な読出し閾値の決定は、一般的に、前述のような動作５０２において使用される方法と同じ方法を使用して、所定の方法に従って実行される。実際の新規の最適な読出し閾値が決定されると、それらは動作５６７においてリテンションドリフト履歴内に追加される。
【０１９９】
一部の実施形態において、十分な時間の後、および／または十分な熱露出と組み合わせて、基準セル内の読出し閾値が（実施形態によって変化する基準に基づいて）所望されるよりもドリフトしており、リセット（再初期化、すなわち、再書込み）すべきか否かについて決定が行われる。たとえば、いくつかのＮＶＭタイプにおいて、読出し閾値ドリフトは、基準読出し閾値レベルを測定するのに使用されるページが、いくらかの時間経過および／または温度逸脱の後に（すべての電荷がドリフト拡散してしまうことなどによって）使用不可能になり得るようなものである。一部の実施形態において、基準セルは、一般的に電圧ドリフトの（時間および／または温度に関して）相対的に線形の領域において基準セルをサンプリングし続けるように、および、ドリフトの（時間および／または温度に関して）相対的により非線形的な領域における基準セルのサンプリングを回避するように、中程度のみの、たとえば、０．３Ｖのドリフトの後に再初期化される。
【０２００】
そのような基準セルリセット事象は、新規の生成またはエポックを定義するとみなされる。任意選択のエポックの実施５７０は、リテンションドリフト履歴の精査５６２、その後の、制御フローを分岐する「エポックを終了すべきか？」の決定５６３を含む。「いいえ（現在のエポックを継続する）」と決定されると、制御フローは動作５６６（前述）に直接進む。そうではなく、「はい（新規のエポックを開始する）」と決定されると、基準セル書込み動作５６４およびリテンションドリフト履歴の新規エポックの書留め動作５６５が、動作５６６に進む前に実施される。新規エポックを（リテンションドリフト履歴のエポック・カウント・フィールドを増分することなどによって）書き留めることによって、エポックが変化する前のリテンションドリフト履歴が引き続き有用なデータ点に寄与し（および、より完全な履歴観を提供し）、少なくともたとえば、プレディクタが、リテンションドリフトの現在の変化の割合の評価におけるより正確な「曲線適合」を行うことを可能にする。
【０２０１】
一部の実施形態において、エポックの実施は、エポック（生成）番号（最上位ビット内）および現在の基準読出し閾値レベル（最下位ビット内）の連結によるものである。さらなる実施形態において、基準読出し閾値レベルがマッピングテーブルなどによってマッピングされて、リテンションドリフトが（時間／温度にわたるドリフトの性質／レートの特性化された知識に基づいて）直線化される。エポック番号が、一連の基準ページが使用されることを可能にし、および／または、同じ基準ページ（複数の場合もあり）が再プログラミングされることを可能に（して、それらをＶｔｈ０とも称される初期読出し閾値に近い値に戻すことを可能に）する。これによって、基準ドリフトクロックが任意の範囲を有し、最適におよび／または選択的に単独で読出し閾値ドリフトのより線形的な領域を使用することが可能になる。
【０２０２】
各新規ブロックがプログラムされると（または一部の実施形態においては各新規Ｒブロック）、新規ブロックが基準ドリフトトラッキングによって予測される現在の読出し閾値（複数の場合もあり）を割り当てられる。（書込みデータがＲブロックにわたってストライプされている様々な実施形態において、Ｒブロック内のすべてのブロックは一般的に、基準ドリフトクロックに対して同時に書き込まれ、Ｒブロックごとに基準ドリフトトラッキングを実行することは、ブロックごとに基準ドリフトトラッキングを実行するよりも消費するスペースがかなり少ない。）
別のプレディクタ例として、一部の実施形態において、ブロック内の（またはＲブロック内の）ページが後に読み出されるとき、その読出しの更新された公称／現在の読出し閾値は、少なくとも部分的に、（ブロックが最後に書き込まれた時点における）ブロックのタイムスタンプおよび基準ドリフトクロックの現在の（最新にサンプリングされた）タイムスタンプの関数（たとえば、それらの間の差、および／または他のファクタ）として決定される。（一部の実施形態において、経過した「時間」が短いと決定されると、公称読出し閾値が読出しに使用され、読出し閾値は調整されない。）このように、基準ドリフトトラッキング（基準ドリフトクロック）を使用することによって、公称読出し閾値は適切に時間／温度ドリフトを補償される。
【０２０３】
リテンションドリフトトラッキングは、デバイス閾値電圧分布が（たとえば、経年劣化および／または熱露出に起因して）シフトするときに現在の読出し閾値を調整することによって、ブロックの管理されたグループ内の読出しエラーの数を低減する。エラーの数を低減することによって、性能が改善し、電力消費が低減し、および／またはＮＶＭの寿命が改善する。一部の実施形態において、リテンションドリフトトラッキングは、全体的に、および／または、ＳＳＤ、ＳＳＤ内で使用されるＮＶＭの任意の部分、若しくは任意のコンテキストにおいて使用されるＮＶＭの任意の部分がアイドルであるときに増分的に実行されて、リテンションドリフトトラッキング以外の動作（たとえば、ホストからのアクセス、リサイクル、および／またはマップ管理）に対する影響を低減する。
【０２０４】
新規の動作読出し閾値が計算されると、動作５３０において、代表的なブロックにおいて現在の読出し閾値が読出し単位の新規の動作読出し閾値に更新される。一部の実施形態において、ブロックの管理されたグループ内の他の（たとえば、代表的なブロック以外の）ブロックの現在の読出し閾値も、計算された新規の動作読出し閾値に更新される。様々な実施形態において、リテンションドリフトトラッキングによる処理のために複数の代表的なブロックがセットとして選択され、新規の動作読出し閾値がそのセットについて平均化されて、ブロックの管理されたグループ内のブロック間の変動が低減される。
【０２０５】
様々な実施形態において、図５Ａ、図５Ｂ、および図５Ｃに図示する１若しくはそれ以上の動作（またはその一部）は、ＳＳＤコントローラ（図１ＡのＳＳＤコントローラ１００など）またはその要素によって実行および／または管理される。たとえば、一部の実施形態において、図５Ａ、図５Ｂ、および図５Ｃに図示する１若しくはそれ以上の動作は、図１ＡのＣＰＵコア１７２によって実行されるファームウェアによって実施および／または管理される。様々な実施形態において、図５Ａ、図５Ｂ、および図５Ｃに図示する１若しくはそれ以上の動作（またはその一部）は、図３に図示するいずれか１若しくはそれ以上の要素によって実行および／または管理される。たとえば、一部の実施形態において、実際の新規の最適読出し閾値の決定（たとえば、動作５６６の一部の実施形態によって実行される）は、少なくとも部分的に、図３のバランス復元ロジック３８０によって実行される。
【０２０６】
図６Ａ〜図６Ｃは、４ＬＣメモリにおけるデバイス閾値電圧分布を概念的に図示する。この説明の目的で、図２Ａ〜図２Ｄにおけるように、各丘状突起は、ＮＶＭの読出し単位サイズの部分のそれぞれの状態のデバイス閾値電圧確率分布を表す独立したガウス様曲線の抽象化である。デバイス閾値電圧軸が、正電圧が右に向かって増大するように図示されている。絶対尺度は意図的に設けられておらず、基準点は示されておらず、それによって、このグラフはより一般的に、より大きい集団のＮＶＭｓに適用される。図６Ａは、セルあたり２ビットを記憶する４ＬＣメモリを概念的に図示する。４つのデバイス閾値電圧分布（Ｅ  ６００、Ｄ１  ６０１、Ｄ２  ６０２、およびＤ３  ６０３）があり、デバイス閾値電圧分布を表す３つの電流読出し閾値（ＶＯＬＤ１６１０、ＶＯＬＤ２６１１、およびＶＯＬＤ３６１２）  が種々の状態に対応している。
【０２０７】
図６Ｂは、デバイス閾値電圧分布がシフトした４ＬＣを概念的に図示する。４つの新規のデバイス閾値電圧分布（Ｅ'６２０、Ｄ１'６２１、Ｄ２'６２２、およびＤ３'６２３）がある。３つの現在の読出し閾値はもはや新規のデバイス閾値電圧分布を明確に分離していないことに留意されたい。たとえば、Ｄ２'６２２のいくらかの部分はＶＯＬＤ３６１２の右にあり、正確に識別されないことになる。
【０２０８】
図６Ｃは、デバイス閾値電圧分布がシフトした４ＬＣ内の新規の動作読出し閾値を概念的に図示する。新規の動作読出し閾値ＶＮＥＷ１６５０、ＶＮＥＷ２６５１、およびＶＮＥＷ３６５２は、リテンションドリフトトラッキングによって計算される。現在の読出し閾値（ＶＯＬＤ１、ＶＯＬＤ２、およびＶＯＬＤ３）とは対照的に、新規の動作読出し閾値（ＶＮＥＷ１、ＶＮＥＷ２、およびＶＮＥＷ３）  は、新規のデバイス閾値電圧分布を明確に分離し、したがって、ビットエラーおよび／または訂正不可能（たとえば、ハード判定復号）エラーの可能性を低減することに留意されたい。様々な実施形態において、図６Ｃは、現在の読出し閾値の更新５３０からの新規の動作読出し閾値を概念的に図示する。
【０２０９】
実施技法の例
一部の実施形態では、例えば、フラッシュメモリを備え、最適化された読出し閾値を利用するＳＳＤ、コンピューティングホスト・フラッシュ・メモリ・コントローラ、および／またはＳＳＤコントローラ（例えば図１ＡのＳＳＤコントローラ１００）、ならびにプロセッサ、マイクロプロセッサ、システム・オン・チップ、特定用途向け集積回路、ハードウェアアクセラレータ、または前述の動作の全部または部分を提供する他の回路をを実装するシステムによって行われる動作の全部またはいずれかの部分の様々な組み合わせが、コンピュータシステムによる処理と適合する仕様によって指定される。仕様は、様々な記述、例えば、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、またはレイアウト記述に従ったものである。記述の例には、Ｖｅｒｉｌｏｇ、ＶＨＤＬ、ＳＰＩＣＥ、ＳＰＩＣＥの変形、例えば、ＰＳｐｉｃｅ、ＩＢＩＳ、ＬＥＦ、ＤＥＦ、ＧＤＳ−ＩＩ、ＯＡＳＩＳ、または他の記述が含まれる。様々な実施形態では、処理は、１つ若しくはそれ以上の集積回路上に含めるのに適する論理および／または回路を生成し、検証し、または指定するための解釈、コンパイル、シミュレーション、および合成の任意の組み合わせを含む。各集積回路は、様々な実施形態によれば、様々な技法に従って設計することができ、かつ／または製造することができる。技法には、プログラマブルな技法（例えば、フィールド若しくはマスク・プログラマブル・ゲート・アレイ集積回路）、セミカスタムの技法（例えば、全部若しくは一部がセルベースの集積回路）、およびフルカスタムの技法（例えば、実質的に専門化された集積回路）、それらの任意の組み合わせ、または集積回路の設計および／若しくは製造と適合する任意の他の技法が含まれる。
【０２１０】
一部の実施形態では、命令のセットを記憶しているコンピュータ可読媒体によって記述される動作の全部または部分の様々な組み合わせが、１つ若しくはそれ以上のプログラム命令の実行および／若しくは解釈によって、１つ若しくはそれ以上のソースおよび／若しくはスクリプト言語命令文の解釈および／若しくはコンパイルによって、または、プログラミングおよび／若しくはスクリプティング言語命令文で表現された情報をコンパイルし、変換し、かつ／または解釈することによって生成されるバイナリ命令の実行によって実行される。命令文は任意の標準のプログラミングまたはスクリプティング言語（例えば、Ｃ、Ｃ＋＋、Ｆｏｒｔｒａｎ、Ｐａｓｃａｌ、Ａｄａ、Ｊａｖａ（登録商標）、ＶＢｓｃｒｉｐｔ、Ｓｈｅｌｌ）と適合する。プログラム命令、言語命令文、またはバイナリ命令のうちの１つ若しくはそれ以上が、任意選択で、１つ若しくはそれ以上のコンピュータ可読記憶媒体要素上に記憶される。様々な実施形態では、プログラム命令の一部、全部、または様々な部分が、１つ若しくはそれ以上の関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分として実現される。
【０２１１】
結論
ある特定の選択が、説明において、テキストおよび図面を作成するに際の単なる便宜のためになされており、別の指示がない限り、それらの選択は、それ自体で、前述の実施形態の構造または動作に関する追加情報を伝えるものと解釈すべきではない。選択の例には、図の符番に使用される呼称の特定の編成または割り当て、および実施形態の特徴および要素を識別し、参照するのに使用される要素識別子（コールアウトや数値識別子など）の特定の編成または割り当てが含まれる。
【０２１２】
「ｃｏｍｐｒｉｓｅｓ」、「ｃｏｍｐｒｉｓｉｎｇ」、「ｉｎｃｌｕｄｅｓ」または「ｉｎｃｌｕｄｉｎｇ」という用語は、開放型（非制限的な）範囲の論理集合を記載する抽象概念として解釈されるべきことが明確に意図されており、さらに、後に「ｗｉｔｈｉｎ」という用語が明示されない限り物理的制約を意味するものではない。
【０２１３】
前述の実施形態は、説明および理解の明確さのためにある程度詳細に説明されているが、本発明は提示した詳細だけに限定されるものではない。本発明の多くの実施形態がある。開示の実施形態は例示であり、限定ではない。
【０２１４】
説明と整合性を有する、構成、配置、および使用における多くの変形が可能であり、それらの変形は、発行される特許の特許請求の範囲内にあることが理解されるであろう。例えば、相互接続および機能ユニットのビット幅、クロック速度、および使用される技術の種類は、各構成要素ブロックにおける様々な実施形態に従って変わりうる。相互接続および論理に与えられた名称は、単なる例であり、説明した概念を限定するものと解釈すべきではない。フローチャートおよび流れ図のプロセス、動作、および機能要素の順序および配置は、様々な実施形態に従って変わりうる。また、特に別に指定しない限り、指定される値範囲、使用される最大値および最小値、または他の特定の仕様（例えば、フラッシュメモリ技術の種類、レジスタおよびバッファ内のエントリまたは段の数）は、単に前述の実施形態のものにすぎず、実施技術の改善および変更を追跡することが見込まれるものであり、限定として解釈すべきではない。
【０２１５】
当分野で公知の機能的に等価の技法を、様々なコンポーネント、サブシステム、動作、関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分を実施するのに、前述の技法の代わりに用いることができる。また、実施形態の多くの機能的態様を、より高速な処理（以前にハードウェアにあった機能のソフトウェアへの移行を円滑化する）およびより高い集積密度（以前にソフトウェアにあった機能のハードウェアへの移行を円滑化する）の実施形態に依存する設計制約条件および技術傾向に応じて、選択的に、ハードウェア（例えば、専用の回路など）で、またはソフトウェアで（例えば、プログラムされたコントローラ若しくはプロセッサのある方式によって）実現できることも理解される。様々な実施形態の具体的な変形は、これに限定されるものではないが、分割の違い、フォームファクタおよび構成の違い、異なるオペレーティングシステムおよび他のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、または通信リンクの使用、本明細書で説明した概念を、特定の用途の固有の技術的業務的制約条件に従って実施するときに予期されるべき他の変形を含む。
【０２１６】
各実施形態は、前述の各実施形態の多くの態様の最小限の実施に必要とされるものを大きく超えた詳細および環境的コンテキストと共に説明されている。一部の実施形態は、残りの要素間での基本的協働を変更せずに開示の構成要素または機能を割愛することを当業者は理解するであろう。よって、開示の詳細の多くが前述の実施形態の様々な態様を実施するのに必要ではないことが理解される。残りの要素が先行技術と区別できる範囲内で、割愛される構成要素および特徴は本明細書で説明した概念を限定するものではない。
【０２１７】
設計におけるすべてのそのような変形は、前述の実施形態によって伝えられる教示に対する実質的な変更ではない。また、本明細書で説明した実施形態は、他のコンピューティング用途およびネットワーキング用途に幅広い適用性を有し、前述の実施形態の特定の用途または産業だけに限定されるものではないことも理解される。よって本発明は、発行される特許の特許請求の範囲内に包含されるあらゆる可能な改変形態および変形形態を含むものと解釈すべきである。
【図１Ａ】
2014154169.tif 000009
【図１Ｂ】
2014154169.tif 000010
【図２Ａ】
2014154169.tif 000011
【図２Ｂ】
2014154169.tif 000012
【図２Ｃ】
2014154169.tif 000013
【図２Ｄ】
2014154169.tif 000014
【図３】
2014154169.tif 000015
【図４】
2014154169.tif 000016
【図５Ａ】
2014154169.tif 000017
【図５Ｂ】
2014154169.tif 000018
【図５Ｃ】
2014154169.tif 000019
【図６Ａ】
2014154169.tif 000020
【図６Ｂ】
2014154169.tif 000021
【図６Ｃ】
2014154169.tif 000022
【外国語明細書】
2014154169000001.pdf
2014154169000002.pdf
2014154169000003.pdf
2014154169000004.pdf