(57)【要約】  【解決手段】  ＳＳＤコントローラは、ＳＬＣ  ＮＶＭ（またはＭＬＣのより下位のページ）から読み出される各読み出し単位の０のカウントおよび１のカウント、ならびに／またはいくつかの実施形態では、０／１不一致カウントを維持する。一部において、閾値電圧分布の公称分布から離れるシフトのために、読み出し単位が訂正不可能な事象では、維持されるカウントが、閾値電圧シフトを追跡し、読み出しデータの０／１バランスを回復するために読み出し閾値を調節する方向および／または大きさを判定することを可能にする。様々な実施形態では、多数の記載される因子（判定される閾値電圧分布、既知の記憶されている値、過去のＮＶＭ動作事象）に基づき、様々な記載される方法（カウント、割合）で調節される読み出し閾値が判定される。ＭＬＣメモリについての前述の技法の拡張版が記載される。  【選択図】      図４
2015520907.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の０のビットと、既知の統計的平均数の１のビットとを有するスクランブルされたデータを発生させるステップと、
前記スクランブルされたデータを前記不揮発性メモリの前記部分に書き込むステップと、
前記書き込むステップの後に、前記不揮発性メモリの前記部分を読み出すステップと、
前記不揮発性メモリの前記部分から読み出されるデータの０のビット数と１のビット数との間の不一致を演算するステップと、
少なくとも一部において、前記不一致に基づき、前記不揮発性メモリの後続の読み出しのための閾値電圧を判定するステップと、
を含む、方法。
【請求項２】
前記演算するステップは、０のビットの予想数と前記不揮発性メモリの前記部分から読み出された前記データの０のビット数との間の差を評価するステップを含む、請求項１に記載の方法。
【請求項３】
前記判定は、０のビットの前記既知の統計的平均数または１のビットの前記既知の統計的平均数にさらに基づく、請求項１に記載の方法。
【請求項４】
前記不揮発性メモリの前記部分を、前記閾値電圧を使用して再読み出しするステップ
をさらに含む、請求項１に記載の方法。
【請求項５】
前記書き込むステップは、ＥＣＣエンコーダを用いて、前記スクランブルされたデータをエンコードし、前記エンコードされたスクランブルされたデータを前記不揮発性メモリの前記部分に書き込むステップを含み、
前記再読み出しするステップの前に、ＥＣＣデコーダを用いて、前記不揮発性メモリの前記部分から読み出された前記データをデコードして、前記不揮発性メモリの前記部分から読み出された前記データが訂正不可能であると判定するステップ
をさらに含む、請求項４に記載の方法。
【請求項６】
前記不一致は、第１の不一致であり、前記閾値電圧は、第１の閾値電圧であり、
前記ＥＣＣデコーダを用いて、前記不揮発性メモリの前記部分から前記第１の閾値電圧を使用して再読み出しされたデータをデコードして、前記前記不揮発性メモリの前記部分から前記第１の閾値電圧を使用して再読み出しされたデータが訂正不可能であると判定するステップと、
前記不揮発性メモリの前記部分から前記第１の閾値電圧を使用して再読み出しされた前記データの０のビット数と１のビット数との間の第２の不一致を演算するステップと、
少なくとも一部において、前記第２の不一致に基づき、前記不揮発性メモリの第２の再読み出しのための第２の閾値電圧を判定するステップと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記不揮発性メモリの前記部分を、前記第２の閾値電圧を使用して再読み出しするステップ
をさらに含む、請求項６に記載の方法。
【請求項８】
前記ＥＣＣエンコーダは、前記スクランブルされたデータに１バイト以上を追加し、前記ＥＣＣエンコーダによって追加される前記１バイト以上は、前記既知の統計的平均数の０のビットと、前記既知の統計的平均数の１のビットとを有する、請求項５に記載の方法。
【請求項９】
不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の０のビットと、既知の統計的平均数の１のビットとを有するスクランブルされたデータを発生させるための手段と、
前記スクランブルされたデータを前記不揮発性メモリの前記部分に書き込むための手段と、
前記書き込みの後に、前記不揮発性メモリの前記部分を読み出すための手段と、
前記不揮発性メモリの前記部分から読み出されるデータの０のビット数と１のビット数との間の不一致を演算するための手段と、
少なくとも一部において、前記不一致に基づき、かつ、少なくとも一部において、０のビットの前記既知の統計的平均数または１のビットの前記既知の統計的平均数に基づき、前記不揮発性メモリの後続の読み出しのための閾値電圧を判定するための手段と、
を備える、デバイス。
【請求項１０】
前記不揮発性メモリの前記部分を、前記閾値電圧を使用して再読み出しするための手段
をさらに備える、請求項９に記載のデバイス。
【請求項１１】
前記書き込みは、ＥＣＣエンコーダを用いて、前記スクランブルされたデータをエンコードし、前記エンコードされたスクランブルされたデータを前記不揮発性メモリの前記部分に書き込むことを含み、
前記再読み出しの前に、ＥＣＣデコーダを用いて、前記不揮発性メモリの前記部分から読み出された前記データをデコードして、前記不揮発性メモリの前記部分から読み出された前記データが訂正不可能であると判定するための手段
をさらに備える、請求項１０に記載のデバイス。
【請求項１２】
前記不一致は、第１の不一致であり、前記閾値電圧は、第１の閾値電圧であり、
前記ＥＣＣデコーダを用いて、前記不揮発性メモリの前記部分から前記第１の閾値電圧を使用して再読み出しされたデータをデコードして、前記不揮発性メモリの前記部分から前記第１の閾値電圧を使用して再読み出しされた前記データが訂正不可能であると判定するための手段と、
前記不揮発性メモリの前記部分から前記第１の閾値電圧を使用して再読み出しされた前記データの０のビット数と１のビット数との間の第２の不一致を演算するための手段と、
少なくとも一部において、前記第２の不一致に基づき、前記不揮発性メモリの第２の再読み出しのための第２の閾値電圧を判定するための手段と、
前記不揮発性メモリの前記部分を、前記第２の閾値電圧を使用して再読み出しするための手段と、
をさらに備える、請求項１１に記載のデバイス。
【請求項１３】
前記ＥＣＣエンコーダは、前記スクランブルされたデータに１バイト以上を追加し、前記ＥＣＣエンコーダによって追加される前記１バイト以上は、前記既知の統計的平均数の０のビットと、前記既知の統計的平均数の１のビットとを有する、請求項１１に記載のデバイス。
【請求項１４】
命令セットが記憶されている有形のコンピュータ可読媒体であって、前記命令セットは、処理要素によって実行される際、前記処理要素に、
不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の０のビットと、既知の統計的平均数の１のビットとを有するスクランブルされたデータを発生させる動作と、
前記スクランブルされたデータを前記不揮発性メモリの前記部分に書き込む動作と、
前記書き込みの後に、前記不揮発性メモリの前記部分を読み出す動作と、
前記不揮発性メモリの前記部分から読み出されるデータの０のビット数と１のビット数との間の不一致を演算する動作と、
少なくとも一部において、前記不一致に基づき、前記不揮発性メモリの後続の読み出しのための閾値電圧を判定する動作と、
を含む動作を実施および／または制御させる、有形のコンピュータ可読媒体。
【請求項１５】
前記判定は、０のビットの前記既知の統計的平均数または１のビットの前記既知の統計的平均数にさらに基づく、請求項１４に記載の有形のコンピュータ可読媒体。
【請求項１６】
前記動作は、
前記不揮発性メモリの前記部分を、前記閾値電圧を使用して再読み出しする動作
をさらに含む、請求項１４に記載の有形のコンピュータ可読媒体。
【請求項１７】
前記書き込みは、ＥＣＣエンコーダを用いて、前記スクランブルされたデータをエンコードし、前記エンコードされたスクランブルされたデータを前記不揮発性メモリの前記部分に書き込むことを含み、前記動作は、
前記再読み出しの前に、ＥＣＣデコーダを用いて、前記不揮発性メモリの前記部分から読み出された前記データをデコードして、前記不揮発性メモリの前記部分から読み出された前記データが訂正不可能であると判定する動作
をさらに含む、請求項１６に記載の有形のコンピュータ可読媒体。
【請求項１８】
前記不一致は、第１の不一致であり、前記閾値電圧は、第１の閾値電圧であり、前記動作は、
前記ＥＣＣデコーダを用いて、前記不揮発性メモリの前記部分から前記第１の閾値電圧を使用して再読み出しされたデータをデコードして、前記不揮発性メモリの前記部分から前記第１の閾値電圧を使用して再読み出しされた前記データが訂正不可能であると判定する動作と、
前記不揮発性メモリの前記部分から前記第１の閾値電圧を使用して再読み出しされた前記データの０のビット数と１のビット数との間の第２の不一致を演算する動作と、
少なくとも一部において、前記第２の不一致に基づき、前記不揮発性メモリの第２の再読み出しのための第２の閾値電圧を判定する動作と、
をさらに含む、請求項１７に記載の有形のコンピュータ可読媒体。
【請求項１９】
前記動作は、
前記不揮発性メモリの前記部分を、前記第２の閾値電圧を使用して再読み出しする動作
をさらに含む、請求項１８に記載の有形のコンピュータ可読媒体。
【請求項２０】
前記ＥＣＣエンコーダは、前記スクランブルされたデータに１バイト以上を追加し、前記ＥＣＣエンコーダによって追加される前記１バイト以上は、前記既知の統計的平均数の０のビットと、前記既知の統計的平均数の１のビットとを有する、請求項１７に記載の有形のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
分野：性能、効率、および使用上の有用性の改善をもたらす、不揮発性ストレージ技術の進歩が必要とされている。
【０００２】
関連技術：公知または周知であると明示的に識別されていない限り、文脈、定義、または比較のためのものを含む、本明細書における技法および概念への言及は、そのような技法および概念が、以前に公知であるか、ないしは従来技術の一部であることを認めると解釈されるべきではない。特許、特許出願、および出版物を含む、本明細書に列挙されるすべての引用文献（もしあれば）は、明確に組み込まれているか否かに関わらず、あらゆる目的のために、それらの全体が参照することによって本明細書に組み込まれる。
【背景技術】
【０００３】
一部において技術背景を確立するため、および一部において明細書のバランスで使用される術語体系の素性を確立するために、半導体ディスク（ＳＳＤ）コントローラによって使用されるフラッシュメモリの様々な態様がここに記載される。不揮発性メモリ（ＮＶＭ）からＳＳＤコントローラによって読み出されるデータの最小サイズは、低密度パリティチェック（ＬＤＰＣ）コード等の含まれるエラー訂正によって保護される、「読み出し単位」である。いくつかの実施形態では、各読み出し単位は、約４Ｋ〜約３２Ｋビットのユーザデータと、エラー訂正オーバーヘッドとを含有する。以下に記載されるように、技術によってはセル毎に１ビット以上保持する場合があるＮＶＭメモリセルから、ＳＳＤコントローラのコマンドの下で、これらのビットが読み出される。いくつかの実施形態では、ＳＳＤコントローラは、セキュリティのために、データをＮＶＭに書き込む前に、そのデータを暗号化する。いくつかの実施形態では、同一にプログラムされたセルの長い列に関する回路設計制約を考慮して、ＳＳＤコントローラは、データをＮＶＭに書き込む前に、そのデータをスクランブルする。
【０００４】
個別に考察すると、各セルは、そのセルのデバイス閾値電圧に対応し、かつ、セルに記憶されている論理ビット値にさらに対応する、特定の蓄積された（プログラムされた）電荷を有する。理想的には、ＮＶＭ内のすべてのセルは、記憶されている論理ビット値に対して同一のデバイス閾値電圧を有し得るが、実際には、様々な理由のために、デバイス閾値電圧は、ガウスと形状が類似する、閾値電圧軸に沿った確率分布（すなわち、「閾値電圧分布」）で、セル間で異なる。
【０００５】
したがって、大きい数の読み出し単位等の大きい数のセル全体で考察すると、デバイス閾値電圧分布（例えば、ガウス確率曲線）と同じ数のセル毎の状態（ストレージのセル毎のビット毎に２つの状態）が存在する。つまり、セル毎にＮビットのストレージでは、２＊＊Ｎの状態、および同一数の閾値電圧分布が存在する。一般的に、ＮＶＭ内の読み出し回路が２＊＊Ｎの状態を区別するためには、（２＊＊Ｎ）−１の異なる読み出し閾値（読み出し電圧基準ＶＲＥＡＤ１からＶＲＥＡＤ（Ｎ−１））が必要となる。
【０００６】
上記を続けて、シングルレベルセル（ＳＬＣ）フラッシュメモリでは、Ｎ＝１である。したがって、ＳＬＣメモリは、ストレージのセル毎に１ビットを記憶し、２つのデバイス閾値電圧分布（１つが０のデバイス閾値電圧分布であり、もう１つが１のデバイス閾値電圧分布）を有し、単一の読み出し閾値、読み出し電圧基準ＶＲＥＡＤ１を必要とする。下限閾値電圧から上限閾値電圧で、Ｅ（消去）状態およびＤ１（第１のデータ）状態の２つの閾値電圧分布が既知である。任意ではあるが、共通マッピング（コーディング）は、Ｅ状態に論理１を割り当て、Ｄ１状態に論理０を割り当てる。したがって、０および１の参照は、Ｄ１状態およびＥ状態のそれぞれのデコーディングへのプロキシ参照である。
【０００７】
上記をさらに続けて、マルチレベルセル（ＭＬＣ）フラッシュメモリでは、Ｎ>１である。したがって、ＭＬＣメモリは、セル毎に２ビット以上を記憶し、３つ以上のデバイス閾値電圧分布を有し、分布を区別するために、複数の異なる読み出し閾値を必要とする。例えば、４ＬＣメモリは、セル毎に２ビットを記憶し、４つのデバイス閾値電圧分布を有し、一般的に、３つの読み出し閾値（読み出し電圧基準ＶＲＥＡＤ１、ＶＲＥＡＤ２、およびＶＲＥＡＤ３）を必要とする。下限閾値電圧から上限閾値電圧で、Ｅ（消去）状態、Ｄ１（データ１）状態、Ｄ２（データ２）状態、およびＤ３（データ３）状態の４つのデバイス閾値電圧分布が既知である。任意ではあるが、４つの閾値電圧分布のそれぞれもまた、グレーコードシーケンス等の特定の２進数シーケンスに従ってマップされる（アドレス指定される）。したがって、１１、１０、００、および０１状態の１つ以上の参照は、Ｅ、Ｄ１、Ｄ２、およびＤ３状態のそれぞれのデコーディングへのプロキシ参照である。
【０００８】
ＭＬＣの状態に使用されるアドレスマッピングに関して、それぞれが、最上位ビット（ＭＳＢ）と、最下位ビット（ＬＳＢ）とを有するということができる（セル毎に３ビット以上を記憶するものでは、間に有意ビットを有することができる）。ＭＬＣ  ＮＶＭがそれらのセルをプログラムする様々な方法が存在するが、以下の手法が一般的である。初期のプログラミングラウンド（電荷分布の操作）は、ＬＳＢを確立する、例えば、「より下位のページ」を書き込む。これは、ＳＬＣへの書き込み、例えば、Ｅ状態の閾値電圧分布および第２の状態の閾値電圧分布を確立する電荷操作と大まかに同一の方法で行われる。使用される２進数シーケンスによって、第２の状態の閾値電圧分布は、Ｄ１状態の閾値電圧分布と類似するか、Ｄ２状態の閾値電圧分布と類似するか、またはＤ１状態の閾値電圧分布とＤ２状態の閾値電圧分布との間となる。ＭＬＣでは、１回以上の追加のプログラミングラウンドは、ＭＬＣのレベル数毎に、必要に応じて、デバイス閾値電圧分布を（数、電圧閾値軸に沿った位置、および形状について）さらに操作する。より具体的には、１つ以上の後続のプログラミング動作は、「中央ページ」を書き込み（もしあれば、セル毎に３ビット以上では）、最後のプログラミング動作は、ＭＳＢを確立する、例えば、「より上位のページ」を書き込む。例えば、４ＬＣ（セル毎に２ビットのＭＬＣ）では、第１のプログラムラウンドのＥ分布および第２の分布はそれぞれ、第２のプログラムラウンドによって、Ｅ分布およびＤ１分布、ならびにＤ２分布およびＤ３分布に分岐される。
【０００９】
閾値電圧分布は、読み出し妨害、書き込み妨害、および保有損失等の１つ以上の因子によって、それらの初期／公称分布から離れるように変更される。より具体的には、経時、温度、および使用に関する他の因子のために、閾値電圧分布のそれぞれの位置は、閾値電圧軸に対して前後に移動する可能性がある。そのような変化は、公称閾値電圧分布に基づいて以前に確立された読み出し閾値の読み出し基準電圧値を使用して実施される読み出しの読み出しエラーの可能性を増加させる。いくつかのＳＬＣ実施形態では、ＮＶＭから読み出される読み出し単位において、硬判定の訂正不可能なエラーに遭遇する際、読み出し単位を復元するために、一連の再試行動作が実施される。再試行動作は、ＳＳＤコントローラからのＩ／Ｏコマンドを介して書き込まれるレジスタ設定によって判定される電圧値等の読み出し閾値ＶＲＥＡＤ１とは異なる電圧値で、読み出し単位をＮＶＭから再読み出し（サンプリング）することを含む。（硬判定の）訂正可能な読み出し単位のサンプルを位置付ける試みにおいて、読み出し閾値ＶＲＥＡＤ１とは異なる設定で読み出すことによって、閾値電圧軸上の異なる点で、読み出し単位がサンプリングされる。
【００１０】
ＮＶＭベンダーによって提案される１つのアルゴリズムは、訂正可能な読み出し単位のサンプルを発見する試みにおいて、ＳＬＣ読み出し閾値をゆっくりと上向きに掃引させる（読み出し基準電圧ＶＲＥＡＤ１を、その公称値から増加させる）ことである。この手順が失敗する場合、読み出し閾値は、別の方向に掃引される（読み出し基準電圧ＶＲＥＡＤ１を、その公称値から減少させる）。両方の掃引が失敗する場合、読み出し単位は、訂正不可能である（硬判定デコーディングによって）。読み出し閾値を線形的に掃引させることは、異なるそれぞれの読み出し基準電圧設定で、１６〜６４ステップを有する場合があり、読み出し単位の多くの時間のかかるサンプルを必要とする（それぞれが付随する復元待ち時間を伴う）。そのような探索が、まれに必要となり、したがって平均待ち時間に大きい影響を及ぼさない場合でさえ、いくつかのデータベース用途を含む、厳しい最大待ち時間要件を伴う用途では、そのような時間のかかる探索は、許容不可能である。
【発明の概要】
【課題を解決するための手段】
【００１１】
本発明は、プロセスとして、製品として、装置として、システムとして、物体の組立体として、ならびにコンピュータ可読ストレージ媒体（例えば、ディスク等の光学および／もしくは磁気大容量ストレージデバイス内の媒体、またはフラッシュストレージ等の不揮発性ストレージを有する集積回路）等のコンピュータ可読媒体として、あるいはプログラム命令が光もしくは電子通信リンク上で送信されるコンピュータネットワークとして、を含む、数多くの方法で実現されてもよい。本明細書では、これらの実現形態、または本発明がとり得る任意の他の形態は、技法と称され得る。「発明を実施するための形態」は、上記に識別される分野において、性能、効率、および使用上の有用性の改善を可能にする、本発明の１つ以上の実施形態の説明を提供する。「発明を実施するための形態」は、「発明を実施するための形態」の残りのより迅速な理解を促進するために、「前書き」を含む。「前書き」は、本明細書に記載される概念に係る、システム、方法、製品、およびコンピュータ可読媒体の１つ以上の「実施形態例」を含む。「結論」により詳細に記載されるように、本発明は、発行される特許請求の範囲の範囲内のすべての可能な修正物および変形物を包含する。
【００１２】
発明者は、読み出し閾値管理、ならびに付随する低待ち時間性能および耐用期間延長による利益に関して、ＮＶＭに書き込まれるデータのスクランブリング、ならびにスクランブルされたデータの状態の統計的分布の追跡および管理の有意性に、彼らが最初に気付いたと考えている。より具体的には、発明者は、読み出されるデータの状態の統計的分布対書き込まれたデータの状態の統計的分布の不一致が、ＮＶＭを読み出すために使用するのに好ましい読み出し閾値のシフトを示すことに、彼らが最初に気付いたと考えている。いくつかの実施形態では、ＳＳＤコントローラは、データをＮＶＭに書き込む前に、暗号化等を介して、そのデータをスクランブルする。スクランブルされたデータは、０のビットおよび１のビットの５０−５０バランスに近いバランスを有する等、既知の０／１バランス（０および１として記憶されるビットの統計的分布）を有する。効果的なスクランブリングによって、データは、効果的にランダムである。ＮＶＭ読み出し単位のサイズのランダムサンプルでは、０および１の分布は、非常に狭くなる傾向がある（平均の周囲に狭細に分布する）。例えば、１６Ｋ（１６，３８４）のランダムビットでは、０のカウントまたは１のカウントのいずれかが平均（８Ｋ）からいずれかの方向に約３０１以上離れている確率は、<１％である（およびいずれかの方向に約５０１以上離れている確率は、<１／１００００００である）。
【００１３】
閾値電圧軸に対する様々な閾値電圧分布の公称分布から離れるシフト（任意の数の因子による）は、閾値電圧分布ピーク間の中心点の位置を変化させるように作用する。この実際の「閾値電圧中心点」の変化は、対応する読み出し閾値に対する対応する追跡調節がないと、読み出しエラーを引き起こす。発明者は、読み出し閾値電圧管理、および付随する低待ち時間性能、ならびに耐用期間延長における利益に関する、この中心点の変化の有意性に、彼らが最初に気付いたと考えている。
【００１４】
上記の観察結果を利用して、いくつかの実施形態では、ＳＳＤコントローラは、少なくとも一時的に、ＳＬＣ  ＮＶＭ（またはＭＬＣのより下位のページ）から読み出される各読み出し単位の０のカウントおよび１のカウントを維持する。一部において閾値電圧分布の（初期）公称分布から離れるシフトのために読み出し単位が訂正不可能である事象では、０のカウントおよび／または１のカウントは、シフトされた閾値電圧分布を追跡し、０／１バランスを回復するために読み出し閾値（読み出し電圧基準ＶＲＥＡＤ１）を移動させる方向および／または大きさを判定することを可能にする。「発明を実施するための形態」に提示されるように、実施形態によると、読み出し閾値の新しい電圧設定は、多数の因子（例えば、観察／推定される閾値電圧分布、既知の記憶されている値、および過去のＮＶＭ動作事象）に基づき、様々な方法（カウント、割合）で判定される。
【００１５】
ＭＬＣメモリでは、上記の技法が拡張され、より上位のページのカウントの維持、および複数の読み出し閾値のシフトを含む。また、上記の技法は、５０−５０バランス以外の既知の０／１バランスを有する様々な暗号化／スクランブリング方法と共に使用することも可能である。
【図面の簡単な説明】
【００１６】
【図１Ａ】図１Ａは、不揮発性メモリ（ＮＶＭ）要素（例えば、フラッシュメモリ）を介して実現されるもの等の不揮発性ストレージに０／１バランス管理技法を実装するためのプラットフォームを提供するＳＳＤコントローラを含む、半導体ディスク（ＳＳＤ）の実施形態の選択された詳細を図示する。
【図１Ｂ】図１Ｂは、図１ＡのＳＳＤの１つ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を図示する。
【図２Ａ】図２Ａ〜図２Ｄは、０／１バランス回復に関する閾値電圧分布例を図示する。図２Ａおよび図２Ｂは、ＳＬＣ特有であり、それぞれ、１回目および後の２回目での閾値電圧分布を図示する。図２Ｃおよび図２Ｄは、ＭＬＣ特有であり、それぞれ、１回目および後の２回目での閾値電圧分布を図示する。
【図２Ｂ】図２Ａ〜図２Ｄは、０／１バランス回復に関する閾値電圧分布例を図示する。図２Ａおよび図２Ｂは、ＳＬＣ特有であり、それぞれ、１回目および後の２回目での閾値電圧分布を図示する。図２Ｃおよび図２Ｄは、ＭＬＣ特有であり、それぞれ、１回目および後の２回目での閾値電圧分布を図示する。
【図２Ｃ】図２Ａ〜図２Ｄは、０／１バランス回復に関する閾値電圧分布例を図示する。図２Ａおよび図２Ｂは、ＳＬＣ特有であり、それぞれ、１回目および後の２回目での閾値電圧分布を図示する。図２Ｃおよび図２Ｄは、ＭＬＣ特有であり、それぞれ、１回目および後の２回目での閾値電圧分布を図示する。
【図２Ｄ】図２Ａ〜図２Ｄは、０／１バランス回復に関する閾値電圧分布例を図示する。図２Ａおよび図２Ｂは、ＳＬＣ特有であり、それぞれ、１回目および後の２回目での閾値電圧分布を図示する。図２Ｃおよび図２Ｄは、ＭＬＣ特有であり、それぞれ、１回目および後の２回目での閾値電圧分布を図示する。
【図３Ａ】図３Ａは、図１ＡのＳＳＤのインスタンスのシステム実施形態の選択された詳細を図示し、０／１バランス管理に関する具体的な詳細を提供する。
【図３Ｂ】図３Ｂは、図３Ａの実施形態によって使用される読み出し単位の構成の選択された詳細を図示する。
【図４】図４は、図１Ａ、図１Ｂ、および図３のＳＳＤの実施形態の選択された制御フローの詳細を図示し、書き込み関連動作（アクション４１０から４３０）および読み出し関連動作（アクション４４０から４８０）に関する具体的な詳細を示す。
【００１７】
【表１】
2015520907.tif 000003
2015520907.tif 000004
2015520907.tif 000005
2015520907.tif 000006
【発明を実施するための形態】
【００１８】
本発明の１つ以上の実施形態の詳細な説明が、本発明の選択された詳細を図示する添付の図面と共に、以下に提供される。本発明は、実施形態に関連して記載される。本明細書の実施形態は、例示にすぎないことが理解され、本発明は、明示的に、本明細書の実施形態に限定されず、また、それらのうちのいずれかもしくはすべてによっても限定されず、本発明は、数多くの代替物、修正物、および均等物を包含する。説明の単調さを回避するために、別の実施形態のセットに様々な単語標識（最初の、最後の、特定の（ｃｅｒｔａｉｎ）、様々な、さらなる、他の、特定の（ｐａｒｔｉｃｕｌａｒ）、選択する、いくつかの、および顕著なを含むが、これらに限定されない）が適用される場合があり、本明細書で使用される場合、そのような標識は、明示的に、品質、または任意の嗜好もしくは偏見の形態を伝えることは意図されず、便宜上、別個のセットを区別することのみが意図される。開示されるプロセスのいくつかの動作の順序は、本発明の範囲内で変更可能である。プロセス、方法、および／またはプログラム命令特長の変形物を説明するのに複数の実施形態が用いられる場合は常に、所定の基準または動的に判定される基準に従って、それぞれが複数個の複数の実施形態に対応する複数個の動作モードのうちの１つを静的および／または動的に選択する、他の実施形態が考察される。本発明の完全な理解を提供するために、以下の説明において、数多くの具体的な詳細が説明される。詳細は、例証のために提供され、本発明は、詳細の一部またはすべてを含むことなく、特許請求の範囲に従って実践されてもよい。明確化のために、本発明に関連する技術分野において既知の技工物は、本発明が不必要に不明確にならないように、詳細に記載されていない。
【００１９】
前書き
この前書きは、「発明を実施するための形態」のより迅速な理解を促進するためだけに含まれており、いずれの前書きの段落も、必然的に、主題全体を要約したものであり、包括的または制限的記述であることは意図されないため、本発明は、前書き（もしあれば、明示的な例を含む）内に提示される概念に限定されない。例えば、続く前書きは、スペースおよび構成によって特定の実施形態のみに限定された、概略情報を提供する。最終的に特許請求の範囲が導き出されるものを含む、多くの他の実施形態が存在し、明細書のバランスを通して記載される。
【００２０】
頭字語
ここに定義される様々な省略語（例えば、頭字語）のうちの少なくともいくつかは、本明細書で使用される特定の要素を指す。
【００２１】
【表２】
2015520907.tif 000007
2015520907.tif 000008
2015520907.tif 000009
【００２２】
０／１バランスの追跡および回復
以下の、０および１のカウントの追跡および管理、ならびに０状態および１状態を区別するために使用される読み出し閾値のシフトの最初の記載は、ＳＬＣメモリおよび（わずかな変化では、述べられたように）ＭＬＣメモリのより下位のページに直接適用可能である。ＭＬＣメモリに関してより一般的には、より上位のページのカウントの追跡および管理、ならびに複数の読み出し閾値（例えば、読み出し電圧基準ＶＲＥＡＤ１、ＶＲＥＡＤ２、およびＶＲＥＡＤ３）のシフトのための拡張は、以下の別個の段落に詳述される。
【００２３】
いくつかの実施形態では、ＳＬＣ  ＮＶＭから読み出される各読み出し単位（または１つのＮＶＭダイから１回に転送される読み出し単位の各グループ）の０のカウントおよび１のカウントが取得される。一部において閾値電圧分布の（初期）公称分布から離れるシフトのために、読み出し単位が訂正不可能な事象では、０のカウントおよび／または１のカウントは、閾値電圧分布のシフトを追跡して、０／１バランスを回復するために読み出し閾値を移動させる（設定する）方向および／または大きさを判定することを可能にする。調節される読み出し閾値は、ＳＬＣメモリでは読み出し電圧基準ＶＲＥＡＤ１であり、ＭＬＣメモリのより下位のページでは読み出し電圧基準ＶＲＥＡＤ２である。例えば、消去状態に論理１が割り当てられており、０および１の既知の統計的に等しい（５０−５０％、５０／５０％としても知られる、または単に５０／５０）分布で書き込まれているＳＬＣでは、現在の０／１カウントが１の優勢を示す場合、ＶＲＥＡＤ１は、より低くシフトされ、現在の０／１カウントが０の優勢を示す場合、ＶＲＥＡＤ１は、より高くシフトされる。（ＭＬＣメモリのより下位のページでは、前述の実施例のＶＲＥＡＤ１をＶＲＥＡＤ２に置換する。）読み出し閾値を変化させる（シフトさせる）大きさは、任意選択で、０（または１）の数の割合によって判定される。大きさは、１つ以上のサンプルに観測される０および／または１の数、１つ以上のサンプルの読み出し閾値電圧増分、２つの分布のピーク間の中点に対応する予測される閾値電圧分布の知識、プログラム／消去カウント（ウェア）、読み出し妨害カウント、保有時間、ならびに他の同様の因子のうちの１つ以上に基づく。
【００２４】
読み出し均衡点の発見
さらなる実施形態では、読み出し閾値「読み出し均衡点」を発見するために、二分探索のような動作（適切な読み出し電圧基準のそれぞれの値で、同一の読み出し単位を反復的にサンプリングする）が使用される。これは、閾値電圧軸上の隣接する閾値電圧分布間の点であり、読み出すと、エラーの統計的マージン内で、書き込まれる統計的状態分布またはその理想的なモデルと合致する、生データ（エラー訂正前）の統計的状態分布をもたらす。
【００２５】
ＳＬＣメモリの暗号化からもたらされるようなランダムスクランブリングでは、読み出し均衡点は、読み出し閾値（読み出し電圧基準ＶＲＥＡＤ１）であり、０／１バランス（ＮＶＭから読み出される生データの）は、最も均衡である（ほぼ等しい）。そのような状況下では、２つの状態分布は、５０−５０バランスを有する。すなわち、読み出される状態の５０％が０であり、読み出される状態の５０％が１である。（ＭＬＣメモリのより下位のページでは、前述のＶＲＥＡＤ１をＶＲＥＡＤ２に置換する。）
【００２６】
いくつかの実施形態では、読み出し均衡点は、２つの電圧分布間の中心点、２つの電圧分布間の最小、読み出しデータの０／１バランスが５０−５０に最も近い点、および２つの他の点で発見される０／１バランスの補間に従って判定される点のうちの１つ以上に対応する。対称な隣接する閾値電圧分布を有する実施形態では、読み出し均衡点は、隣接する閾値電圧分布間の中心点に対応する。
【００２７】
所望の読み出し均衡点を発見して、読み出し閾値を所望の読み出し均衡点に設定することは、硬判定デコーディングを試みる最適点を発見するために必要とされる読み出しの数を低減する。さらなる実施形態では、読み出し閾値の読み出し均衡点が発見される前に、「十分に良好な」読み出し閾値が発見される事象では、硬判定デコーディングは、各読み出し閾値のサンプリング点（ＳＬＣメモリのためのＶＲＥＡＤ１の各値、またはＭＬＣメモリのより下位のページのためのＶＲＥＡＤ２の各値）で、二分探索で試みられる。探索は、軟判定デコーディングのために、判定される読み出し均衡点の周囲で追加のサンプリングを行う可能性に関して以下に記載される場合を除き、一般的に、十分に良好な読み出し閾値が発見されると打ち切られる。様々な実施形態では、「十分に良好な」読み出し閾値は、読み出しデータの硬判定デコーディングの成功をもたらす。いくつかの実施形態では、少なくとも一部において、様々な因子に基づき、読み出し閾値電圧変化の大きさに関して上記に詳述されるように、二分探索における探索ステップ（読み出し閾値電圧増分）の大きさが判定される。
【００２８】
ＭＬＣ考察
ＭＬＣメモリでは、複数の読み出し閾値が管理される。いくつかの実施形態では、これは、複数のデバイス閾値電圧分布の均一な変位を想定し、より下位のページの読み出しデータの０／１バランスに基づく第１の読み出し閾値（ＶＲＥＡＤ１）に対して行われる決定に基づき、すべての他の読み出し閾値を変化させることによって実施される。
【００２９】
４ＬＣ  ＮＶＭでは、論理上、２５−２５−２５−２５の１１／１０／００／０１バランス（５０−５０の０／１バランスに対比して）が存在する。しかしながら、４ＬＣが、一般的に、３つの読み出し電圧基準、より下位のページのためのＶＲＥＡＤ２、ならびにより上位のページのためのＶＲＥＡＤ１およびＶＲＥＡＤ３を使用する、２つの別個の読み出し動作を介して読み出されることを考えると、このバランスを直接提供する単一の動作は存在しない。したがって、２つのそれぞれの０／１バランス、より下位のページでは、Ｄ１状態とＤ２状態との間の０／１バランス、およびより上位のページではＤ２状態とＤ３状態との間の０／１バランスと組み合わせたＥ状態とＤ１状態との間の０／１バランスを評価することができる。代替えとして、単一のより下位のページの読み出し閾値をＶＲＥＡＤ１、ＶＲＥＡＤ２、およびＶＲＥＡＤ３のそれぞれに近い値に設定する、３つの別個のより下位のページのような読み出しを実施することができる。
【００３０】
一例として、いくつかの４ＬＣ  ＮＶＭ実施形態では、セルに記憶されている２つのビットのうちの少なくとも１つのビットについて、読み出し電圧基準ＶＲＥＡＤ１、ＶＲＥＡＤ２、およびＶＲＥＡＤ３をシフトさせる必要がある場合がある。ＳＬＣの場合と同様に機能して、セルに記憶されている２つのビットのうちの一方は、第１の読み出し閾値（このＭＬＣの場合では、ＶＲＥＡＤ２）での単一の読み出しを必要とする。他方のビットが、２つの追加の読み出し閾値（ＶＲＥＡＤ１、およびＶＲＥＡＤ３、ならびに事実上、ＮＶＭによって内部的に実施される２つの関連付けられたそれぞれの追加の読み出し）を必要とすることを突き止める。
【００３１】
様々な実施形態によると、他方のビットのための２つの読み出し閾値（ＶＲＥＡＤ１およびＶＲＥＡＤ３）は、同一量および／もしくは異なる量（ドリフトが両方の状態で同様であるという推測の下）、一致して移動されるか、または他方のビットのための２つの読み出し閾値は、独立して移動される（追加の読み出し動作を代償に）かのいずれかである。後者の選択肢は、ＳＬＣのようなビットの状態が、対応する他方のビット（ＭＳＢ）を突き止めるために、２つの読み出し閾値（ＶＲＥＡＤ１およびＶＲＥＡＤ３）のうちのどちらを使用するかを判定するため、セル内のＳＬＣのようなビット（ＬＳＢ）の状態を知る必要がある。
【００３２】
いくつかの４ＬＣ実施形態では、ＥおよびＤ１分布、ならびにＤ２およびＤ３分布の同時ブレンドについて、組み合わせられた「より上位のページ」の読み出しデータの０／１バランスが評価される。読み出しの組み合わせられた０／１バランス対その書き込みの組み合わせられた０／１バランスの不一致に基づき、およびビットセンスの逆転（ＥからＤ１への移動では１から０、およびＤ２からＤ３への移動では０から１）を考慮して、対応する２つの読み出し閾値（ＶＲＥＡＤ１およびＶＲＥＡＤ３）は、一致して反対方向に移動される。これは、ブレンドの各構成要素の０／１バランスが「同一の方向」に移動する（例えば、移動が衝突しない）ように行われる。
【００３３】
いくつかの４ＬＣ実施形態では、２つのより上位のページの読み出し閾値（ＶＲＥＡＤ１およびＶＲＥＡＤ３）の移動は、読み出し単位の各ビットのそれぞれのＬＳＢを使用しながら、より上位のページの０／１バランスをそれぞれ評価することによって別個に判定される。ＬＳＢ＝１の際、移動方向は、ＬＳＢ＝０の場合と反対である。例えば、より上位のページの読み出しデータの０のカウントと１のカウントとの間の不一致を演算する代わりに、より上位のページの不一致は、より下位のページの読み出しデータの対応するビットに基づき、より上位のページの読み出しデータの各ビットを選択的に修正することによって演算され、より上位のページの読み出しデータのビットのセンスを数値から方向値に変換し、例えば、０は、より高い閾値電圧を表し、１は、より低い閾値電圧を表す。いくつかの実施形態では、より上位のページの読み出しデータのビットおよびより下位のページの読み出しデータの対応するビットのＸＮＯＲが、この変換を実施する。
【００３４】
軟判定サンプルからのバイアスの除去
いくつかの実施形態では、軟判定ベースのデコーディングを実施するために、ＮＶＭから軟判定情報が取得される。軟判定情報は、読み出し単位のデータの複数のサンプルを取得するために、公称（未調節の）読み出し閾値の周囲の様々な読み出し閾値のサンプリング点（ＳＬＣでは、ＶＲＥＡＤ１の値）で、読み出し単位（または１つのＮＶＭダイから１回に転送される読み出し単位の各グループ）を読み出し、したがって、読み出し単位の各ビットの値の軟判定尤度を構築することによって取得される。サンプルの間隔は、少なくとも一部において、その電荷状態の公称分離等の使用されるＮＶＭの特定の特性に依存する。
【００３５】
しかしながら、その周囲でサンプルが取られる公称読み出し閾値が、読み出し閾値の読み出し均衡点（上述される）でない限り、軟判定情報は、バイアスがかかっている。現在の読み出し閾値が、閾値の読み出し均衡点ではない場合、すべての軟判定情報は、一方向または他方向にバイアスがかかっている。これを調節して、バイアスがかかっていない（または少なくともそれほどバイアスがかかっていない）軟判定情報を取得する、２つの方法が存在する。
【００３６】
１．読み出し閾値のサンプリング点のそれぞれでサンプリングされる際の読み出し単位の０／１バランスは、容易に識別されるため、読み出し閾値の読み出し均衡点は、容易に判定される（実施形態によると、線形補間を使用すること等によって）。判定される読み出し閾値の読み出し均衡点と（古い、未調節の）公称読み出し閾値との間の差に対応するオフセットが計算される。以前に判定された軟判定情報は、適切に「再度中心におく」ことができ、軟判定情報が以前にサンプリングされた電圧（１．０より大きい値、または０．０より小さい値で打ち切られる）に対してオフセットを適用することによって、依然として使用される。この手法は、追加の読み出しを必要としないが、一部のデータに異なる量の正確さ／精度をもたらす。
【００３７】
２．読み出し閾値のサンプリング点のそれぞれでサンプリングされる際の読み出し単位の０／１バランスは、容易に識別されるため、すべての必要とされるサンプルを収集した後、読み出し閾値の読み出し均衡点に最も近い読み出し閾値のサンプリング点が、容易に判定される。最も近い読み出し閾値のサンプリング点とは、０／１バランスが、書き込まれた０／１バランスに最も近似する、読み出し閾値のサンプリング点である。ＳＬＣ暗号化（またはスクランブリング）の場合、５０−５０バランスに最も近いバランスを有する、読み出し閾値のサンプリング点である。すべてのサンプルが、公称的に同等の相互からの間隔を有するため、最も近いサンプルは、新しい公称読み出し閾値として選択され、追加の軟判定情報サンプルが、任意選択で集められる（新しい公称読み出し閾値が古い公称読み出し閾値とは異なると想定して）。代替えとして、閾値の読み出し均衡点を発見するための二分探索が最初に行われ、二分探索の正確さは、情報の所望の正確さに必要とされるサンプリングの最も細かい粒度に制限される。軟判定情報の所望の正確さは、新しい公称読み出し閾値の周囲に関連付けられたサンプル窓を有する。軟判定情報を取得するために必要とされる複数の読み出しの一環として二分探索を行うことは、古い公称読み出し閾値が所望の正確さのサンプル窓外とならない限り、追加の読み出しを必要としない。
【００３８】
これまでに記載されたＳＬＣ暗号化実施形態では、上記の技法は、５０−５０に最も近い読み出しデータの０／１バランスをもたらす、好ましい読み出し閾値を発見することに着目してきた。閾値電圧分布が、概して同一の対称な形状であり、実質的に重ならない場合では、この好ましい読み出し閾値電圧はまた、組み合わせられた閾値電圧分布の最小にも対応するであろう。
【００３９】
閾値電圧分布上の既知の点から補間された読み出し閾値
いくつかの実施形態では、好ましい読み出し閾値を発見する別の手法は、２つの点を発見する代わりに、各隣接する閾値電圧分布上に１つの点を発見し、補間によって、これらの２つの点の間の中点を判定する。例えば、各閾値電圧分布のピークでのサンプリングは、読み出しデータの０／１（またはどちらのピークかによって１／０）の７５／２５バランスをもたらすべきである。いったん２つのピークが識別されると、閾値電圧軸上の２つの点の間の計算された中点が、新しい読み出し閾値を設定するために使用される。
【００４０】
閾値電圧分布が均一ではない（例えば、長い尾部を有すること等によって、一方側または他方側に対称にバイアスがかかっている）ことが事前に既知である場合、いくつかの実施形態では、その情報は、ピークの位置を解釈するため、およびわずかにより複雑な補間（例えば、単なる中点ではない）によって中心を位置付けるために使用される。保有時間および／またはウェア等の因子は、いくつかの実施形態では、閾値電圧分布の対称性に影響を及ぼす場合があり、考慮される。いくつかの実施形態では、また、複数のサンプリング点も、閾値電圧分布の形状を明らかにするために使用される。
【００４１】
閾値電圧調節の範囲が制限されるいくつかの実施形態では、真のピークを発見することが可能ではない場合がある。特に、いくつかのフラッシュデバイスでは、Ｅ状態の電圧分布が負の閾値電圧に延在するとしても、閾値電圧を０Ｖ未満に移動させることができない。閾値電圧分布の知識は、依然として、補間を介して中点を判定することを可能にする。例えば、０Ｖでの読み出しデータの０／１バランスが６０／４０である場合、約１０％過剰な０が観測され、０Ｖに対して右側のＥ分布の領域は、約１０％である。いくつかの実施形態の第１の手法では、Ｄ１分布のピークが発見され、Ｅ分布の概略形状の知識に基づき、中点が補間される。いくつかの実施形態の第２の手法では、読み出しデータの０／１バランスが４０／６０のＤ１分布の点（０Ｖ測定とは反対の点）が発見される。次いで、６０／４０観測と４０／６０観測との間の計算される中点が、新しい好ましい読み出し閾値を設定するために使用される。２つの閾値電圧分布の追加の知識および／または測定を用いて、計算される中点をより高い正確さで判定することができる。
【００４２】
いくつかの実施形態では、補間された点は、両方とも読み出し均衡点と同一側にある。例えば、第１の読み出し閾値のサンプリング点Ｘが、７５／２５の読み出しデータの０／１バランスをもたらし、第２の読み出し閾値のサンプリング点Ｙが、６２．５／３７．５をもたらすことを知っていると、読み出し均衡点は、Ｙ＋／−（Ｘ−Ｙ）に近くなり、「＋」か「−」かは、ＹがＸ未満であるか否かに依存するであろう。読み出し均衡点がある方向は、読み出しデータの０／１バランスを５０／５０により近づけるのに対応する方向である。所与の実施例では、ＸからＹに向かう方向である。閾値電圧分布の知識は、示される単純な線形補間というよりはむしろ、より高精度な補間をもたらすであろう。
【００４３】
実施形態例
前書きから発明を実施するための形態の結びにおいて、本明細書に記載される概念による、様々な実施形態のタイプの追加の説明を提供する、少なくともいくつかの明白に「ＥＣ」（組み合わせ例）として列挙されるものを含む、実施形態例の集合が続き、これらの実施例は、相互排他的であること、包括的であること、または制限的であることは意図されず、本発明は、これらの実施形態例に限定されず、むしろ、発行される特許請求の範囲の範囲内のすべての可能な修正物および変形物、ならびにそれらの均等物を包含する。
【００４４】
ＥＣ１）
ＮＶＭの少なくとも１つ以上の読み出しの０の数と１の数との間の不一致を判定するステップと、
該ＮＶＭからの訂正不可能な読み出しに応えて、少なくとも一部において、該判定された不一致に基づき、閾値電圧を選択的にシフトさせるステップを介して、後続の不一致を低減するステップと、
を含む、方法。
【００４５】
ＥＣ２）さらに、
該ＮＶＭは、複数個の状態を有するＭＬＣメモリであり、該状態のそれぞれは、所定のグレーコードマッピングに従う、関連付けられたＭＳＢおよびＬＳＢ値を有し、該ＮＶＭの該１つ以上の読み出しは、ＭＳＢ読み出しであり、
不一致を判定するステップは、該ＭＳＢ読み出しのデータを選択的に反転させるために、該１つ以上のＭＳＢ読み出しに対応するＬＳＢ読み出しを使用するステップを含む、
ＥＣ１に記載の方法。
【００４６】
ＥＣ３）該少なくとも１つ以上の読み出しのそれぞれは、該ＮＶＭのそれぞれのページの少なくとも一部分の別個の読み出しである、ＥＣ１に記載の方法。
【００４７】
ＥＣ４）該不一致を判定するステップは、該０の数と該１の数との間の差を判定するステップを含む、ＥＣ１に記載の方法。
【００４８】
ＥＣ５）該０の数および該１の数は、それぞれのカウントを介して判定される、ＥＣ１に記載の方法。
【００４９】
ＥＣ６）該シフトさせるステップは、該差の絶対値が所定量未満の場合に実施されない、ＥＣ４に記載の方法。
【００５０】
ＥＣ７）該シフトは、該差の該絶対値が所定量未満の場合、所定の電圧分である、ＥＣ１に記載の方法。
【００５１】
ＥＣ８）該閾値電圧シフトの方向は、少なくとも一部において、ＮＶＭ電荷状態に対する論理状態のマッピングに基づく、ＥＣ１に記載の方法。
【００５２】
ＥＣ９）該ＮＶＭは、該消去状態に対して論理１のマッピングを有するＳＬＣメモリであり、該閾値電圧は、少なくとも一部において、該０の数が該１の数より少ないという判定に基づき、より低くシフトされる、ＥＣ１に記載の方法。
【００５３】
ＥＣ１０）該閾値電圧は、少なくとも一部において、該不一致が所定量を超えるという判定にさらに基づき、より低くシフトされる、ＥＣ９に記載の方法。
【００５４】
ＥＣ１１）該ＮＶＭは、該消去状態に対して論理１のマッピングを有するＳＬＣメモリであり、該閾値電圧は、該不一致が、１が優勢であることを示すという判定に基づき、より低くシフトされる、ＥＣ１に記載の方法。
【００５５】
ＥＣ１２）該ＮＶＭは、該消去状態に対して論理１のマッピングを有するＳＬＣメモリであり、該閾値電圧は、少なくとも一部において、該０の数が該１の数を超えるという判定に基づき、より高くシフトされる、ＥＣ１に記載の方法。
【００５６】
ＥＣ１３）該不一致は、所定量を超える、ＥＣ１２に記載の方法。
【００５７】
ＥＣ１４）該ＮＶＭは、該消去状態に対して論理１のマッピングを有するＳＬＣメモリであり、該閾値電圧は、該不一致が、０が優勢であることを示すという判定に基づき、より高くシフトされる、ＥＣ１に記載の方法。
【００５８】
ＥＣ１５）該差で使用される該０の数および該１の数は、複数個の読み出しに基づく、ＥＣ４に記載の方法。
【００５９】
ＥＣ１６）該判定するステップは、複数個の閾値電圧のそれぞれで実施され、該シフトさせるステップは、少なくとも一部において、該判定される不一致に基づく、ＥＣ１に記載の方法。
【００６０】
ＥＣ１７）ＮＶＭの少なくとも１つ以上の読み出しの０の数と１の数との間の不一致を判定するための手段と、
該ＮＶＭからの訂正不可能な読み出しに応えて、少なくとも一部において、該判定された不一致に基づき、閾値電圧を選択的にシフトさせるステップを介して、後続の不一致を低減するための手段と、
を備える、デバイス。
【００６１】
ＥＣ１８）さらに、
該ＮＶＭは、複数個の状態を有するＭＬＣメモリであり、該状態のそれぞれは、所定のグレーコードマッピングに従う、関連付けられたＭＳＢおよびＬＳＢ値を有し、該ＮＶＭの該１つ以上の読み出しは、ＭＳＢ読み出しであり、
該不一致を判定するための手段は、該ＭＳＢ読み出しのデータを選択的に反転させるために、該１つ以上のＭＳＢ読み出しに対応するＬＳＢ読み出しを使用するための手段を備える、
ＥＣ１７に記載のデバイス。
【００６２】
ＥＣ１９）該少なくとも１つ以上の読み出しのそれぞれは、該ＮＶＭのそれぞれのページの少なくとも一部分の別個の読み出しである、ＥＣ１７に記載のデバイス。
【００６３】
ＥＣ２０）該不一致を判定するステップは、該０の数と該１の数との間の差を判定するステップを含む、ＥＣ１７に記載のデバイス。
【００６４】
ＥＣ２１）該０の数および該１の数は、それぞれのカウントを介して判定される、ＥＣ１７に記載のデバイス。
【００６５】
ＥＣ２２）該シフトさせるステップは、該差の絶対値が所定量未満の場合に実施されない、ＥＣ２０に記載のデバイス。
【００６６】
ＥＣ２３）該差で使用される該０の数および該１の数は、複数個の読み出しに基づく、ＥＣ２０に記載のデバイス。
【００６７】
ＥＣ２４）該判定するステップは、複数個の閾値電圧のそれぞれで実施され、該シフトさせるステップは、少なくとも一部において、該判定される不一致に基づく、ＥＣ１７に記載のデバイス。
【００６８】
ＥＣ２５）不一致を判定するステップであって、該不一致のそれぞれは、それぞれの大きさを有し、ＮＶＭに記憶されている値および該ＮＶＭから読み出されるそれぞれの値のそれぞれの既知の分布のそれぞれの不一致である、ステップと、
周期的に、該ＮＶＭからの訂正不可能な読み出しに応えて、少なくとも一部において、該シフトの前に判定される該不一致のうちの少なくとも１つに基づき、少なくとも１つの読み出し閾値電圧を選択的にシフトさせるステップと、
を含む、方法。
【００６９】
ＥＣ２６）該少なくとも１つの読み出し閾値電圧の各周期的にシフトされる値は、該シフトの後に判定される該不一致のうちの少なくとも１つの該それぞれの大きさを、所定量未満に保つという目標に従って判定される、ＥＣ２５に記載の方法。
【００７０】
ＥＣ２７）少なくとも次の訂正不可能な読み出しまで、該シフトの後に判定される該不一致のうちの該少なくとも１つの該それぞれの大きさが、該少なくとも１つの読み出し閾値電圧の単一の更新を介して、該所定量未満に低減される、ＥＣ２６に記載の方法。
【００７１】
ＥＣ２８）該ＮＶＭは、ＳＬＣである、ＥＣ２５に記載の方法。
【００７２】
ＥＣ２９）該ＮＶＭは、ＭＬＣである、ＥＣ２５に記載の方法。
【００７３】
ＥＣ３０）該ＭＬＣは、４ＬＣ  ＭＬＣであり、該不一致は、Ｅ状態および複数個のＤ状態のうちの少なくとも２つの状態に関して評価される、ＥＣ２９に記載の方法。
【００７４】
ＥＣ３１）該ＭＬＣは、４ＬＣ  ＭＬＣであり、該既知の分布は、４つの状態の間で２５％−２５％−２５％−２５％である、ＥＣ２９に記載の方法。
【００７５】
ＥＣ３２）該ＮＶＭは、複数個の状態を有するＭＬＣであり、該状態のそれぞれは、所定のグレーコードマッピングに従う、関連付けられたＭＳＢおよびＬＳＢ値を有し、該少なくとも１つの閾値電圧は、より下位のページの読み出しに対して該不一致を判定するステップが実施されるのを考慮してシフトされ、該電圧シフトは、０が優勢の不一致に応えて第１の方向であり、１が優勢の不一致に応えて第２の方向である、ＥＣ２５に記載の方法。
【００７６】
ＥＣ３３）該ＮＶＭは、複数個の状態を有するＭＬＣであり、状態のそれぞれは、所定のグレーコードマッピングに従う、関連付けられたＭＳＢおよびＬＳＢ値を有し、該少なくとも１つの閾値電圧は、より上位のページの読み出しに対して該不一致を判定するステップが実施されるのを考慮してシフトされる、ＥＣ２５に記載の方法。
【００７７】
ＥＣ３４）不一致を判定するために実施される、該より上位のページの読み出しは、該読み出し単位の各ビットの特定のＬＳＢを使用して実施され、第１のＬＳＢ値では、該電圧シフトは、０が優勢の不一致に応えて第１の方向であり、１が優勢の不一致に応えて第２の方向であり、第２のＬＳＢ値では、該電圧シフトの方向感が逆転される、ＥＣ３３に記載の方法。
【００７８】
ＥＣ３５）該不一致判定のために実施される、該より上位のページの読み出しは、該読み出し単位の各ビットの特定のＬＳＢを使用して実施され、該電圧シフトの方向は、少なくとも一部において、該より上位のページの読み出しの該特定のＬＳＢ値に基づいて、および少なくとも一部において、該不一致の本質に基づいて判定される、ＥＣ３３に記載の方法。
【００７９】
ＥＣ３６）該ＮＶＭは、Ｅ状態と、複数個のＤ状態とを有するＭＬＣであり、最小の１つの閾値電圧は、該Ｅ状態と該複数個のＤ状態のうちの選択される１つとの間である、ＥＣ２５に記載の方法。
【００８０】
ＥＣ３７）該ＮＶＭは、Ｅ状態と、複数個のＤ状態とを有するＭＬＣであり、最小の１つの閾値電圧は、該複数個のＤ状態のうちの選択される２つの隣接するＤ状態の間である、ＥＣ２５に記載の方法。
【００８１】
ＥＣ３８）さらに、
該ＮＶＭは、複数個の状態を有するＭＬＣメモリであり、該状態のそれぞれは、所定のグレーコードマッピングに従う、関連付けられたＭＳＢおよびＬＳＢ値を有し、該ＮＶＭから読み出される該値では、該読み出しは、ＭＳＢ読み出しであり、
該不一致を判定するステップは、該ＭＳＢ読み出しのデータを選択的に反転させるために、該１つ以上のＭＳＢ読み出しに対応するＬＳＢ読み出しを使用するステップを含む、
ＥＣ２５に記載の方法。
【００８２】
ＥＣ３９）
不一致を判定するための手段であって、該不一致のそれぞれは、それぞれの大きさを有し、ＮＶＭに記憶されている値および該ＮＶＭから読み出されるそれぞれの値のそれぞれの既知の分布のそれぞれの不一致である、手段と、
周期的に、該ＮＶＭからの訂正不可能な読み出しに応えて、少なくとも一部において、該シフトの前に判定される該不一致のうちの少なくとも１つに基づき、少なくとも１つの読み出し閾値電圧を選択的にシフトさせるための手段と、
を備える、デバイス。
【００８３】
ＥＣ４０）該少なくとも１つの読み出し閾値電圧の各周期的にシフトされる値は、該シフトの後に判定される該不一致のうちの少なくとも１つの該それぞれの大きさを、所定量未満に保つという目標に従って判定される、ＥＣ３９に記載のデバイス。
【００８４】
ＥＣ４１）少なくとも次の訂正不可能な読み出しまで、該シフトの後に判定される該不一致のうちの該少なくとも１つの該それぞれの大きさが、該少なくとも１つの読み出し閾値電圧の単一の更新を介して、該所定量未満に低減される、ＥＣ４０に記載のデバイス。
【００８５】
ＥＣ４２）該ＮＶＭは、ＳＬＣである、ＥＣ３９に記載のデバイス。
【００８６】
ＥＣ４３）該ＮＶＭは、ＭＬＣである、ＥＣ３９に記載のデバイス。
【００８７】
ＥＣ４４）
ＮＶＭから読み出されるデータの１つ以上の部分のそれぞれの０のカウントと１のカウントの差を判定するステップであって、
読み出し閾値の複数個の読み出し基準電圧設定のそれぞれで、該判定するステップが実施され、該差が計算される、ステップと、
閾値の中心点を計算するために、該計算された差の補間を使用するステップと、
少なくとも一部において、該計算された閾値の中心点に基づき、該読み出し閾値を、更新された読み出し基準電圧設定にシフトさせるステップと、
を含む、方法。
【００８８】
ＥＣ４５）該補間は、線形補間である、ＥＣ４４に記載の方法。
【００８９】
ＥＣ４６）該差を判定するステップは、該０のカウントと該１のカウントの該差を計算する前に、該ＮＶＭの少なくとも１つ以上の読み出しの該０のカウントおよび該１のカウントを判定するステップを含む、ＥＣ４４に記載の方法。
【００９０】
ＥＣ４７）
ＮＶＭから読み出されるデータの１つ以上の部分のそれぞれの０のカウントと１のカウントの差を判定するための手段であって、読み出し閾値の複数個の読み出し基準電圧設定のそれぞれで、該判定が実施され、該差が計算される、手段と、
閾値の中心点を計算するために、該計算された差の補間を使用するための手段と、
少なくとも一部において、該計算された閾値の中心点に基づき、該読み出し閾値を、更新された読み出し基準電圧設定にシフトさせるための手段と、
を備える、デバイス。
【００９１】
ＥＣ４８）該補間は、線形補間である、ＥＣ４７に記載のデバイス。
【００９２】
ＥＣ４９）該差を判定するための手段は、該０のカウントと該１のカウントの該差を計算する前に、該ＮＶＭの少なくとも１つ以上の読み出しの該０のカウントおよび該１のカウントを判定するための手段を備える、ＥＣ４７に記載のデバイス。
【００９３】
ＥＣ５０）
複数個の閾値電圧のそれぞれで、同一の読み出し単位のデータを読み出すステップと、
該同一の読み出し単位の各読み出しの０の読み出しカウントおよび１の読み出しカウントを判定するステップと、
少なくとも一部において、該読み出しカウントに基づき、閾値の中心点を計算するステップと、
少なくとも一部において、該読み出されたデータおよび該計算された閾値の中心点に基づき、軟判定情報を生成するステップと、
を含む、方法。
【００９４】
ＥＣ５１）該閾値の中心点の計算は、少なくとも一部において、該０の読み出しカウントと該１の読み出しカウントの計算された差の補間を使用して実施される、ＥＣ５０に記載の方法。
【００９５】
ＥＣ５２）該補間は、線形補間である、ＥＣ５１に記載の方法。
【００９６】
ＥＣ５３）該軟判定情報の複数個の値は、該計算された閾値の中心点に対するそれぞれの閾値電圧オフセットで読み出されるデータに基づいて生成される、ＥＣ５０に記載の方法。
【００９７】
ＥＣ５４）該計算された閾値の中心点を超える、および中心点を下回る、該それぞれの電圧オフセットの同数に対応する、偶数の該値が生成される、ＥＣ５３に記載の方法。
【００９８】
ＥＣ５５）該計算された閾値の中心点を、該軟判定情報を生成するための基準として使用することは、そうでなければ存在し得るバイアスを低減することによって、生成される該軟判定情報の有効性を高める、ＥＣ５３に記載の方法。
【００９９】
ＥＣ５６）
複数個の閾値電圧のそれぞれで、同一の読み出し単位のデータを読み出すための手段と、
該同一の読み出し単位の各読み出しの０の読み出しカウントおよび１の読み出しカウントを判定するための手段と、
少なくとも一部において、該読み出しカウントに基づき、閾値の中心点を計算するための手段と、
少なくとも一部において、該読み出されたデータおよび該計算された閾値の中心点に基づき、軟判定情報を生成するための手段と、
を備える、デバイス。
【０１００】
ＥＣ５７）該閾値の中心点の計算は、少なくとも一部において、該０の読み出しカウントと該１の読み出しカウントの計算された差の補間を使用して実施される、ＥＣ５６に記載のデバイス。
【０１０１】
ＥＣ５８）該補間は、線形補間である、ＥＣ５７に記載のデバイス。
【０１０２】
ＥＣ５９）該軟判定情報の複数個の値は、該計算された閾値の中心点に対するそれぞれの閾値電圧オフセットで読み出されるデータに基づいて生成される、ＥＣ５６に記載のデバイス。
【０１０３】
ＥＣ６０）該計算された閾値の中心点を超える、および中心点を下回る、該それぞれの電圧オフセットの同数に対応する偶数の該値が生成される、ＥＣ５９に記載のデバイス。
【０１０４】
ＥＣ６１）該計算された閾値の中心点を、該軟判定情報を生成するための基準として使用することは、そうでなければ存在し得るバイアスを低減することによって、生成される該軟判定情報の有効性を高める、ＥＣ５９に記載のデバイス。
【０１０５】
ＥＣ６２）
複数個の閾値電圧のそれぞれで、同一の読み出し単位のデータを読み出すステップと、
該同一の読み出し単位の各読み出しの０のカウントおよび１のカウントを判定するステップと、
少なくとも一部において、該読み出しカウントに基づき、該複数個の閾値電圧のうちの  中心点に最も近い閾値電圧を識別するステップであって、該中心点に最も近い閾値電圧は、概念的閾値の中心点に対応する、ステップと、
少なくとも一部において、該読み出されるデータおよび該識別された中心点に最も近い閾値電圧に基づき、軟判定情報を生成するステップと、
を含む、方法。
【０１０６】
ＥＣ６３）該閾値の中心点の計算は、少なくとも一部において、該０の読み出しカウントと該１の読み出しカウントの計算される差の補間を使用して実施される、ＥＣ６２に記載の方法。
【０１０７】
ＥＣ６４）該補間は、線形補間である、ＥＣ６３に記載の方法。
【０１０８】
ＥＣ６５）該軟判定情報の複数個の値は、該計算される閾値の中心点に対するそれぞれの閾値電圧オフセットで読み出されるデータに基づいて生成される、ＥＣ６２に記載の方法。
【０１０９】
ＥＣ６６）該それぞれの電圧オフセットによって判定される区間の数に対応する数の該値が生成される、ＥＣ６５に記載の方法。
【０１１０】
ＥＣ６７）該計算される閾値の中心点を、該軟判定情報を生成するための基準として使用することは、そうでなければ存在し得るバイアスを低減することによって、該軟判定情報の有効性を高める、ＥＣ６２に記載の方法。
【０１１１】
ＥＣ６８）
複数個の閾値電圧のそれぞれで、同一の読み出し単位のデータを読み出すための手段と、
該同一の読み出し単位の各読み出しの０のカウントおよび１のカウントを判定するための手段と、
少なくとも一部において、該読み出しカウントに基づき、該複数個の閾値電圧のうちの中心点に最も近い閾値電圧を識別するための手段であって、該中心点に最も近い閾値電圧は、概念的閾値の中心点に対応する、手段と、
少なくとも一部において、読み出される該データおよび該識別された中心点に最も近い閾値電圧に基づき、軟判定情報を生成するための手段と、
を備える、デバイス。
【０１１２】
ＥＣ６９）該閾値の中心点の計算は、少なくとも一部において、該０の読み出しカウントと該１の読み出しカウントの計算される差の補間を使用して実施される、ＥＣ６８に記載のデバイス。
【０１１３】
ＥＣ７０）該補間は、線形補間である、ＥＣ６９に記載のデバイス。
【０１１４】
ＥＣ７１）該軟判定情報の複数個の値は、該計算される閾値の中心点に対するそれぞれの閾値電圧オフセットで読み出されるデータに基づいて生成される、ＥＣ６８に記載のデバイス。
【０１１５】
ＥＣ７２）該それぞれの電圧オフセットによって判定される区間の数に対応する数の該値が生成される、ＥＣ７１に記載のデバイス。
【０１１６】
ＥＣ７３）該計算される閾値の中心点を、該軟判定情報を生成するための基準として使用することは、そうでなければ存在し得るバイアスを低減することによって、生成される該軟判定情報の有効性を高める、ＥＣ６８に記載のデバイス。
【０１１７】
ＥＣ７４）
ＮＶＭにデータを記憶するステップであって、該記憶されるデータは、特定の０−１バランスを有する、ステップと、
０のカウントおよび１のカウントを維持するステップであって、該０のカウントおよび該１のカウントは、読み出しカウントである、ステップと、
該０のカウント、該１のカウント、および該特定の０−１バランスの関数として、該ＮＶＭの０−１バランスを評価するステップと、
該ＮＶＭからの訂正不可能な読み出し、および該０−１バランスが指定範囲外であるという判定の後に、該閾値電圧を、少なくとも一部において、該評価に基づき、該閾値電圧の可能な限り少ないシフトで該０−１バランスを該指定範囲内に回復するという目標に従って判定される値にシフトさせるステップと、
を含み、
該ＮＶＭからのデータ復元が、最適化される、
方法。
【０１１８】
ＥＣ７５）さらに、
該閾値電圧の該シフトは、該０−１バランスが該特定の０−１バランスに対して過度の１を含むという判定に基づき、より低い電圧へのシフトであり、
該閾値電圧の該シフトは、該０−１バランスが該特定の０−１バランスに対して過度の０を含むという判定に基づき、より高い電圧へのシフトである、
ＥＣ７４に記載の方法。
【０１１９】
ＥＣ７６）該データは、暗号化方法の使用の結果として記憶され、該特定の０−１バランスは、５０％の０および５０％の１である、ＥＣ７４に記載の方法。
【０１２０】
ＥＣ７７）該特定の０−１バランスは、５５％未満の０および４５％超過の１に対応する、ＥＣ７４に記載の方法。
【０１２１】
ＥＣ７８）該特定の０−１バランスが５２．５％超過の０に対応する確率は、１／１０，０００未満である、ＥＣ７４に記載の方法。
【０１２２】
ＥＣ７９）該特定の０−１バランスは、４５％未満の０および５５％超過の１に対応する、ＥＣ７４に記載の方法。
【０１２３】
ＥＣ８０）
データをＮＶＭに記憶するための手段であって、該記憶されるデータは、特定の０−１バランスを有する、手段と、
０のカウントおよび１のカウントを維持するための手段であって、該０のカウントおよび該１のカウントは、読み出しカウントである、手段と、
該０のカウント、該１のカウント、および該特定の０−１バランスの関数として、該ＮＶＭの０−１バランスを評価するための手段と、
該ＮＶＭからの訂正不可能な読み出し、および該０−１バランスが指定範囲外であるという判定の後に、該閾値電圧を、少なくとも一部において、該評価に基づき、該閾値電圧の可能な限り少ないシフトで該０−１バランスを該指定範囲内に回復するという目標に従って判定される値にシフトさせるための手段と、
を含み、
該ＮＶＭからのデータ復元が、最適化される、
デバイス。
【０１２４】
ＥＣ８１）さらに、
該閾値電圧の該シフトは、該０−１バランスが該特定の０−１バランスに対して過度の１を含むという判定に基づき、より低い電圧へのシフトであり、
該閾値電圧の該シフトは、該０−１バランスが該特定の０−１バランスに対して過度の０を含むという判定に基づき、より高い電圧へのシフトである、
ＥＣ８０に記載のデバイス。
【０１２５】
ＥＣ８２）該データは、暗号化方法の使用の結果として記憶され、該特定の０−１バランスは、５０％の０および５０％の１である、ＥＣ８０に記載のデバイス。
【０１２６】
ＥＣ８３）該特定の０−１バランスは、５５％未満の０および４５％超過の１に対応する、ＥＣ８０に記載のデバイス。
【０１２７】
ＥＣ８４）該特定の０−１バランスが５２．５％超過の０に対応する確率は、１／１０，０００未満である、ＥＣ８０に記載のデバイス。
【０１２８】
ＥＣ８５）該特定の０−１バランスは、４５％未満の０および５５％超過の１に対応する、ＥＣ８０に記載のデバイス。
【０１２９】
ＥＣ８６）
不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の０のビットと、既知の統計的平均数の１のビットとを有するスクランブルされたデータを発生させるステップと、
該スクランブルされたデータを該不揮発性メモリの該部分に書き込むステップと、
該書き込むステップの後に、該不揮発性メモリの該部分を読み出すステップと、
該不揮発性メモリの該部分から読み出されるデータの０のビット数と１のビット数との間の不一致を演算するステップと、
少なくとも一部において、該不一致に基づき、該不揮発性メモリの後続の読み出しのための閾値電圧を判定するステップと、
を含む、方法。
【０１３０】
ＥＣ８７）該判定は、０のビットの該既知の統計的平均数または１のビットの該既知の統計的平均数にさらに基づく、ＥＣ８６に記載の方法。
【０１３１】
ＥＣ８８）
該不揮発性メモリの該部分を、該閾値電圧を使用して再読み出しするステップ
をさらに含む、ＥＣ８６に記載の方法。
【０１３２】
ＥＣ８９）該書き込むステップは、ＥＣＣエンコーダを用いて、該スクランブルされたデータをエンコードし、該エンコードされたスクランブルされたデータを該不揮発性メモリの該部分に書き込むステップを含み、
該再読み出しするステップの前に、ＥＣＣデコーダを用いて、該不揮発性メモリの該部分から読み出された該データをデコードして、該不揮発性メモリの該部分から読み出された該データが訂正不可能であると判定するステップをさらに含む、
ＥＣ８８に記載の方法。
【０１３３】
ＥＣ９０）該不一致は、第１の不一致であり、該閾値電圧は、第１の閾値電圧であり、
該ＥＣＣデコーダを用いて、該不揮発性メモリの該部分から該第１の閾値電圧を使用して再読み出しされたデータをデコードして、該不揮発性メモリの該部分から該第１の閾値電圧を使用して再読み出しされた該データが訂正不可能であると判定するステップと、
該不揮発性メモリの該部分から該第１の閾値電圧を使用して再読み出しされた該データの０のビット数と１のビット数との間の第２の不一致を演算するステップと、
少なくとも一部において、該第１の不一致および該第２の不一致に基づき、該不揮発性メモリの第２の再読み出しのための第２の閾値電圧を判定するステップと、
をさらに含む、ＥＣ８９に記載の方法。
【０１３４】
ＥＣ９１）
該不揮発性メモリの該部分を、該第２の閾値電圧を使用して再読み出しするステップ
をさらに含む、ＥＣ９０に記載の方法。
【０１３５】
ＥＣ９２）該ＥＣＣエンコーダは、該スクランブルされたデータに１バイト以上を追加し、該ＥＣＣエンコーダによって追加される該１バイト以上は、該既知の統計的平均数の０のビットと、該既知の統計的平均数の１のビットとを有する、ＥＣ８９に記載の方法。
【０１３６】
ＥＣ９３）
不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の０のビットと、既知の統計的平均数の１のビットとを有するスクランブルされたデータを発生させるための手段と、
該スクランブルされたデータを該不揮発性メモリの該部分に書き込むための手段と、
該書き込みの後に、該不揮発性メモリの該部分を読み出すための手段と、
該不揮発性メモリの該部分から読み出されるデータの０のビット数と１のビット数との間の不一致を演算するための手段と、
少なくとも一部において、該不一致に基づき、該不揮発性メモリの後続の読み出しのための閾値電圧を判定するための手段と、
を備える、デバイス。
【０１３７】
ＥＣ９４）該判定は、０のビットの該既知の統計的平均数または１のビットの該既知の統計的平均数にさらに基づく、ＥＣ９３に記載のデバイス。
【０１３８】
ＥＣ９５）
該不揮発性メモリの該部分を、該閾値電圧を使用して再読み出しするための手段
をさらに備える、ＥＣ９３に記載のデバイス。
【０１３９】
ＥＣ９６）該書き込みは、ＥＣＣエンコーダを用いて、該スクランブルされたデータをエンコードし、該エンコードされたスクランブルされたデータを該不揮発性メモリの該部分に書き込むことを含み、
該再読み出しの前に、ＥＣＣデコーダを用いて、該不揮発性メモリの該部分から読み出された該データをデコードして、該不揮発性メモリの該部分から読み出された該データが訂正不可能であると判定するための手段
をさらに備える、ＥＣ９５に記載のデバイス。
【０１４０】
ＥＣ９７）該不一致は、第１の不一致であり、該閾値電圧は、第１の閾値電圧であり、
該ＥＣＣデコーダを用いて、該不揮発性メモリの該部分から該第１の閾値電圧を使用して再読み出しされたデータをデコードして、該不揮発性メモリの該部分から該第１の閾値電圧を使用して再読み出しされた該データが訂正不可能であると判定するための手段と、
該不揮発性メモリの該部分から該第１の閾値電圧を使用して再読み出しされた該データの０のビット数と１のビット数との間の第２の不一致を演算するための手段と、
少なくとも一部において、該第１の不一致および該第２の不一致に基づき、該不揮発性メモリの第２の再読み出しのための第２の閾値電圧を判定するための手段と、
をさらに備える、ＥＣ９６に記載のデバイス。
【０１４１】
ＥＣ９８）該不揮発性メモリの該部分を、該第２の閾値電圧を使用して再読み出しするための手段をさらに備える、ＥＣ９７に記載のデバイス。
【０１４２】
ＥＣ９９）該ＥＣＣエンコーダは、該スクランブルされたデータに１バイト以上を追加し、該ＥＣＣエンコーダによって追加される該１バイト以上は、該既知の統計的平均数の０のビットと、該既知の統計的平均数の１のビットとを有する、ＥＣ９６に記載のデバイス。
【０１４３】
ＥＣ１００）命令セットが記憶されている有形のコンピュータ可読媒体であって、該命令セットは、処理要素によって実行される際に、該処理要素に、
不揮発性メモリの一部分に書き込まれるデータをスクランブルして、既知の統計的平均数の０のビットと、既知の統計的平均数の１のビットとを有するスクランブルされたデータを発生させる動作と、
該スクランブルされたデータを該不揮発性メモリの該部分に書き込む動作と、
該書き込みの後に、該不揮発性メモリの該部分を読み出す動作と、
該不揮発性メモリの該部分から読み出されるデータの０のビット数と１のビット数との間の不一致を演算する動作と、
少なくとも一部において、該不一致に基づき、該不揮発性メモリの後続の読み出しのための閾値電圧を判定する動作と、
を含む動作を実施および／または制御させる、
有形のコンピュータ可読媒体。
【０１４４】
ＥＣ１０１）該判定は、０のビットの該既知の統計的平均数または１のビットの該既知の統計的平均数にさらに基づく、ＥＣ１００に記載の有形のコンピュータ可読媒体。
【０１４５】
ＥＣ１０２）該動作は、
該不揮発性メモリの該部分を、該閾値電圧を使用して再読み出しする動作
をさらに含む、ＥＣ１００に記載の有形のコンピュータ可読媒体。
【０１４６】
ＥＣ１０３）該書き込みは、ＥＣＣエンコーダを用いて、該スクランブルされたデータをエンコードし、該エンコードされたスクランブルされたデータを該不揮発性メモリの該部分に書き込むことを含み、該動作は、
該再読み出しの前に、ＥＣＣデコーダを用いて、該不揮発性メモリの該部分から読み出された該データをデコードして、該不揮発性メモリの該部分から読み出された該データが訂正不可能であると判定する動作
をさらに含む、ＥＣ１０２に記載の有形のコンピュータ可読媒体。
【０１４７】
ＥＣ１０４）該不一致は、第１の不一致であり、該閾値電圧は、第１の閾値電圧であり、該動作は、
該ＥＣＣデコーダを用いて、該不揮発性メモリの該部分から該第１の閾値電圧を使用して再読み出しされたデータをデコードして、該不揮発性メモリの該部分から該第１の閾値電圧を使用して再読み出しされた該データが訂正不可能であると判定する動作と、
該不揮発性メモリの該部分から該第１の閾値電圧を使用して再読み出しされた該データの０のビット数と１のビット数との間の第２の不一致を演算する動作と、
少なくとも一部において、該第１の不一致および該第２の不一致に基づき、該不揮発性メモリの第２の再読み出しのための第２の閾値電圧を判定する動作と、
をさらに含む、ＥＣ１０３に記載の有形のコンピュータ可読媒体。
【０１４８】
ＥＣ１０５）該動作は、
該不揮発性メモリの該部分を、該第２の閾値電圧を使用して再読み出しする動作
をさらに含む、ＥＣ１０４に記載の有形のコンピュータ可読媒体。
【０１４９】
ＥＣ１０６）該ＥＣＣエンコーダは、該スクランブルされたデータに１バイト以上を追加し、該ＥＣＣエンコーダによって追加される該１バイト以上は、該既知の統計的平均数の０のビットと、該既知の統計的平均数の１のビットとを有する、ＥＣ１０３に記載の有形のコンピュータ可読媒体。
【０１５０】
システム
図１Ａは、ＮＶＭ要素（例えば、フラッシュメモリ）を介して実現されるもの等の不揮発性ストレージを管理するために０／１バランス回復を使用するＳＳＤコントローラを含む、ＳＳＤ１０１の実施形態の選択された詳細を図示する。ＳＳＤコントローラ１００は、１つ以上の外部インターフェース１１０を介して、ホスト（図１Ｂのホスト１０２等）に通信可能に連結される。様々な実施形態によると、外部インターフェース１１０は、ＳＡＴＡインターフェース、ＳＡＳインターフェース、ＰＣＩｅインターフェース、ファイバチャネルインターフェース、イーサネット（登録商標）インターフェース（１０ギガビットイーサネット（登録商標）等）、前述のインターフェースのいずれかの非標準版、カスタムインターフェース、あるいはストレージおよび／もしくはコンピューティングデバイスの相互接続ならびに／または通信のために使用される任意の他のタイプのインターフェースのうちの１つ以上である。例えば、いくつかの実施形態では、ＳＳＤコントローラ１００は、ＳＡＴＡインターフェースと、ＰＣＩｅインターフェースとを含む。
【０１５１】
ＳＳＤコントローラ１００は、１つ以上のデバイスインターフェース１９０を介して、１つ以上のフラッシュデバイス１９２等の１つ以上のストレージデバイスを含むＮＶＭ１９９にさらに通信可能に連結される。様々な実施形態によると、デバイスインターフェース１９０は、非同期インターフェース、同期インターフェース、シングルデータレート（ＳＤＲ）インターフェース、ダブルデータレート（ＤＤＲ）インターフェース、ＤＲＡＭ互換ＤＤＲもしくはＤＤＲ２同期インターフェース、ＯＮＦＩ  ２．２もしくはＯＮＦＩ  ３．０互換インターフェース等のＯＮＦＩ互換インターフェース、トグルモード互換フラッシュインターフェース、前述のインターフェースのいずれかの非標準版、カスタムインターフェース、またはストレージデバイスを接続するために使用される任意の他のタイプのインターフェースのうちの１つ以上である。
【０１５２】
いくつかの実施形態では、各フラッシュデバイス１９２は、１つ以上の個々のフラッシュダイ１９４を有する。特定の１つのタイプのフラッシュデバイス１９２によると、特定のフラッシュデバイス１９２内の複数個のフラッシュダイ１９４は、任意選択で、および／または選択的に、並列アクセス可能である。フラッシュデバイス１９２は、ＳＳＤコントローラ１００に通信可能に連結することができる、１つのタイプのストレージデバイスを表すにすぎない。様々な実施形態では、ＳＬＣ  ＮＡＮＤフラッシュメモリ、ＭＬＣ  ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、ポリシリコンまたは窒化ケイ素技術ベースの電荷ストレージセルを使用するフラッシュメモリ、２次元もしくは３次元技術ベースのフラッシュメモリ、読み出し専用メモリ、静的ランダムアクセスメモリ、動的ランダムアクセスメモリ、強磁性メモリ、相変化メモリ、レーストラックメモリ、ＲｅＲＡＭ、または任意の他のタイプのメモリデバイスもしくはストレージ媒体等の任意のタイプのストレージデバイスが使用可能である。
【０１５３】
様々な実施形態によると、デバイスインターフェース１９０は、バス毎に１つ以上のフラッシュデバイス１９２を伴う１つ以上のバスとして構成される、グループ内のバスが一般的に並列アクセスされる、バス毎に１つ以上のフラッシュデバイス１９２を伴うバスの１つ以上のグループとして構成される、またはデバイスインターフェース１９０上に１つ以上のフラッシュデバイス１９２の任意の他の構成で構成される。
【０１５４】
図１Ａを続けて、ＳＳＤコントローラ１００は、ホストインターフェース１１１、データ処理１２１、バッファ１３１、マップ１４１、リサイクラー１５１、ＥＣＣ１６１、デバイスインターフェース論理１９１、およびＣＰＵ１７１等の１つ以上のモジュールを有する。図１Ａに図示される具体的なモジュールおよび相互接続は、一実施形態を表すにすぎず、モジュールのうちのいくつかまたはすべて、ならびに図示されていない追加のモジュールの多くの配設および相互接続が考え出される。第１の実施例では、いくつかの実施形態では、２つ以上のホストインターフェース１１１が存在し、デュアルポートを提供する。第２の実施例では、いくつかの実施形態では、データ処理１２１および／またはＥＣＣ１６１が、バッファ１３１と組み合わせられる。第３の実施例では、いくつかの実施形態では、ホストインターフェース１１１は、バッファ１３１に直接連結され、データ処理１２１は、任意選択で、および／または選択的に、バッファ１３１に記憶されているデータに対して動作する。第４の実施例では、いくつかの実施形態では、デバイスインターフェース論理１９１は、バッファ１３１に直接連結され、ＥＣＣ１６１は、任意選択で、および／または選択的に、バッファ１３１に記憶されているデータに対して動作する。
【０１５５】
ホストインターフェース１１１は、外部インターフェース１１０を介してコマンドおよび／またはデータを送受信し、いくつかの実施形態では、タグ追跡１１３を介して個々のコマンドの進捗を追跡する。例えば、コマンドは、読み出すアドレス（ＬＢＡ等）およびデータ量（ＬＢＡ分量、例えば、セクタの数等）を指定する読み出しコマンドを含み、それに応えて、ＳＳＤは、読み出しステータスおよび／または読み出しデータを提供する。別の実施例では、コマンドは、書き込むアドレス（ＬＢＡ等）およびデータ量（ＬＢＡ分量、例えば、セクタの数等）を指定する書き込みコマンドを含み、それに応えて、ＳＳＤは、書き込みステータスを提供する、および／または書き込みデータを要求し、任意選択で、続いて書き込みステータスを提供する。さらに別の実施例では、コマンドは、もはや割り当てておく必要がない１つ以上のアドレス（１つ以上のＬＢＡ等）を指定する、割り当て解除コマンド（例えば、トリムコマンド）を含み、それに応えて、ＳＳＤは、それに応じてマップを修正し、任意選択で、割り当て解除ステータスを提供する。いくつかの文脈では、ＡＴＡ互換ＴＲＩＭコマンドが、例示的な割り当て解除コマンドである。さらに別の実施例では、コマンドは、超コンデンサ試験コマンドまたはデータ強化成功クエリを含み、それに応えて、ＳＳＤは、適切なステータスを提供する。いくつかの実施形態では、ホストインターフェース１１１は、ＳＡＴＡプロトコルと互換性があり、ＮＣＱコマンドを使用することで、それぞれが０〜３１の番号で表される一意のタグを伴う、最大で３２の保留コマンドを有することができる。いくつかの実施形態では、タグ追跡１１３は、外部インターフェース１１０を介して受信されるコマンドの外部タグを、ＳＳＤコントローラ１００による処理中にコマンドを追跡するために使用される内部タグと関連付けることができる。
【０１５６】
様々な実施形態によると、データ処理１２１は、任意選択で、および／もしくは選択的に、バッファ１３１と外部インターフェース１１０との間で送信されるデータの一部またはすべてを処理すること、ならびにデータ処理１２１は、任意選択で、および／または選択的に、バッファ１３１に記憶されているデータを処理することのうちの１つ以上を行う。いくつかの実施形態では、データ処理１２１は、書式設定、再書式設定、トランスコーディング、ならびに任意の他のデータ処理および／または操作タスクのうちの１つ以上を実施するために、１つ以上のエンジン１２３を使用する。
【０１５７】
バッファ１３１は、外部インターフェース１１０とデバイスインターフェース１９０との間で送信されるデータを記憶する。いくつかの実施形態では、バッファ１３１は、１つ以上のフラッシュデバイス１９２を管理するためにＳＳＤコントローラ１００によって使用される、マップテーブルのうちのいくつかまたはすべて等のシステムデータを追加で記憶する。様々な実施形態では、バッファ１３１は、データの一時記憶のために使用されるメモリ１３７、バッファ１３１へ、および／またはバッファ１３１からのデータの移動を制御するために使用されるＤＭＡ１３３、ならびにより高いレベルのエラー訂正および／または冗長機能、ならびに他のデータ移動および／または操作機能を提供するために使用されるＥＣＣ−Ｘ１３５のうちの１つ以上を有する。より高いレベルの冗長機能の例とは、ＲＡＩＤのような能力であり、冗長性は、ディスクレベルである代わりに、フラッシュデバイス（例えば、複数のフラッシュデバイス１９２）レベルおよび／またはフラッシュダイ（例えば、フラッシュダイ１９４）レベルである。
【０１５８】
様々な実施形態によると、ＥＣＣ１６１は、任意選択で、および／または選択的に、バッファ１３１とデバイスインターフェース１９０との間で送信されるデータの一部またはすべてを処理すること、ならびにＥＣＣ１６１は、任意選択で、および／または選択的に、バッファ１３１に記憶されているデータを処理することのうちの１つ以上を行う。いくつかの実施形態では、ＥＣＣ１６１は、１つ以上のＥＣＣ技法によるもの等のより低いレベルのエラー訂正および／または冗長機能を提供するために使用される。いくつかの実施形態では、ＥＣＣ１６１は、ＣＲＣコード、ハミングコード、ＲＳコード、ＢＣＨコード、ＬＤＰＣコード、ビタビコード、トレリスコード、硬判定コード、軟判定コード、消去ベースコード、任意のエラー検出および／または訂正コード、および前述の任意の組み合わせのうちの１つ以上を実装する。いくつかの実施形態では、ＥＣＣ１６１は、１つ以上のデコーダ（ＬＤＰＣデコーダ等）を含む。
【０１５９】
デバイスインターフェース論理１９１は、デバイスインターフェース１９０を介して、フラッシュデバイス１９２のインスタンスを制御する。デバイスインターフェース論理１９１は、フラッシュデバイス１９２のプロトコルに従って、フラッシュデバイス１９２のインスタンスとの間でデータを送信することができる。デバイスインターフェース論理１９１は、デバイスインターフェース１９０を介して、フラッシュデバイス１９２のインスタンスの制御を選択的に順序付けるために、スケジューリング１９３を含む。例えば、いくつかの実施形態では、スケジューリング１９３は、フラッシュデバイス１９２のインスタンスに対する動作を待ち行列に入れること、およびフラッシュデバイス１９２（またはフラッシュダイ１９４）のインスタンスの個々の１つが利用可能である際に、フラッシュデバイス１９２（またはフラッシュダイ１９４）のインスタンスの個々の１つに動作を選択的に送信することができる。
【０１６０】
マップ１４１は、外部データアドレスをＮＶＭ１９９内の位置にマップするために、テーブル１４３を使用して、外部インターフェース１１０上で使用されるデータアドレス指定とデバイスインターフェース１９０上で使用されるデータアドレス指定とを変換する。例えば、いくつかの実施形態では、マップ１４１は、テーブル１４３によって提供されるマッピングを介して、外部インターフェース１１０上で使用されるＬＢＡを、１つ以上のフラッシュダイ１９４を標的とするブロックおよび／またはページアドレスに変換する。ドライブ製造または割り当て解除から１度も書き込まれていないＬＢＡでは、マップは、ＬＢＡが読み出される場合に戻るように、初期値を指す。例えば、割り当て解除コマンドを処理する際、マップは、割り当てが解除されたＬＢＡに対応するエントリが初期値のうちの１つを指すように修正される。様々な実施形態では、それぞれが対応するポインタを有する、様々な初期値が存在する。複数個の初期値は、１つの初期値として、いくつかの割り当てが解除されたＬＢＡ（第１の範囲内のもの等）を読み出すことを可能にし、一方、別の初期値として、他の割り当てが解除されたＬＢＡ（第２の範囲内のもの等）を読み出すことを可能にする。様々な実施形態では、初期値は、フラッシュメモリ、ハードウェア、ファームウェア、コマンド、ならびに／またはプリミティブ型引数および／もしくはパラメータ、プログラマブルレジスタ、あるいはそれらの様々な組み合わせによって定義される。
【０１６１】
いくつかの実施形態では、マップ１４１は、外部インターフェース１１０上で使用されるアドレスとデバイスインターフェース１９０上で使用されるデータアドレス指定との間での翻訳を実施および／または検索するために、テーブル１４３を使用する。様々な実施形態によると、テーブル１４３は、１レベルマップ、２レベルマップ、マルチレベルマップ、マップキャッシュ、圧縮マップ、あるアドレス空間から別のアドレス空間への任意のタイプのマッピング、および前述の任意の組み合わせのうちの１つ以上である。様々な実施形態によると、テーブル１４３は、静的ランダムアクセスメモリ、動的ランダムアクセスメモリ、ＮＶＭ（フラッシュメモリ等）、キャッシュメモリ、オンチップメモリ、オフチップメモリ、および前述の任意の組み合わせのうちの１つ以上を含む。
【０１６２】
いくつかの実施形態では、リサイクラー１５１は、ゴミ収集を実施する。例えば、いくつかの実施形態では、フラッシュデバイス１９２のインスタンスは、ブロックが再度書き込み可能となる前に消去されなければならないブロックを含有する。リサイクラー１５１は、マップ１４１によって維持されるマップをスキャンすること等によって、フラッシュデバイス１９２のインスタンスのどの部分がアクティブに使用中である（例えば、割り当てが解除されている代わりに割り当てられている）かを判定し、それらを消去することによって、書き込みに利用可能なフラッシュデバイス１９２のインスタンスの未使用（例えば、割り当てが解除されている）部分を作ることができる。さらなる実施形態では、リサイクラー１５１は、フラッシュデバイス１９２のインスタンス内に記憶されているデータを移動させて、書き込みに利用可能なフラッシュデバイス１９２のインスタンスのより大きい連続した部分を作ることができる。
【０１６３】
いくつかの実施形態では、フラッシュデバイス１９２のインスタンスは、異なるタイプおよび／または特性のデータを記憶するための１つ以上のバンドを有するように、選択的および／もしくは動的に構成される、管理される、ならびに／または使用される。バンドの数、配設、サイズ、およびタイプは、動的に変更可能である。例えば、コンピューティングホストからのデータは、ホット（アクティブ）バンドに書き込まれ、一方、リサイクラー１５１からのデータは、コールド（それほどアクティブではない）バンドに書き込まれる。いくつかの使用シナリオでは、コンピューティングホストが長い順次ストリームを書き込む場合、ホットバンドのサイズが成長し、その一方で、コンピューティングホストがランダム書き込みまたは少ない書き込みを行う場合、コールドバンドのサイズが成長する。
【０１６４】
ＣＰＵ１７１は、ＳＳＤコントローラ１００の様々な部分を制御する。ＣＰＵ１７１は、ＣＰＵコア１７２を含む。様々な実施形態によると、ＣＰＵコア１７２は、１つ以上のシングルコアまたはマルチコアプロセッサである。いくつかの実施形態では、ＣＰＵコア１７２内の個々のプロセッサコアは、マルチスレッドである。ＣＰＵコア１７２は、命令および／もしくはデータキャッシュならびに／またはメモリを含む。例えば、命令メモリは、ＣＰＵコア１７２が、プログラム（例えば、ファームウェアと称される場合があるソフトウェア）を実行して、ＳＳＤコントローラ１００を制御することを可能にする、命令を含有する。いくつかの実施形態では、ＣＰＵコア１７２によって実行されるファームウェアのうちのいくつかまたはすべては、フラッシュデバイス１９２のインスタンス上に記憶される（例えば、図１ＢのＮＶＭ１９９のファームウェア１０６として図示されるように）。
【０１６５】
様々な実施形態では、ＣＰＵ１７１は、外部インターフェース１１０を介して受信されたコマンドを、コマンドが進行している間、追跡し、制御する、コマンド管理１７３と、バッファ１３１の割り当ておよび使用を制御する、バッファ管理１７５と、マップ１４１を制御する、翻訳管理１７７と、データアドレス指定の整合性を制御し、外部データアクセスとリサイクルデータアクセスとの間等の衝突を回避する、一貫性管理１７９と、デバイスインターフェース論理１９１を制御する、デバイス管理１８１と、識別情報の修正および通信を制御する、アイデンティティ管理１８２と、任意選択で他の管理ユニットとをさらに含む。様々な実施形態によると、ＣＰＵ１７１によって実施される管理機能のうちのいずれも、ハードウェアによって、ソフトウェア（ＣＰＵコア１７２上もしくは外部インターフェース１１０を介して接続されているホスト上で実行されているファームウェア等）によって、もしくはそれらの任意の組み合わせによって制御および／または管理されない、あるいは、ＣＰＵ１７１によって実施される管理機能のうちのいずれか、またはすべてが、ハードウェアによって、ソフトウェア（ＣＰＵコア１７２上もしくは外部インターフェース１１０を介して接続されているホスト上で実行されているファームウェア等）によって、またはそれらの任意の組み合わせによって制御および／または管理される。
【０１６６】
いくつかの実施形態では、ＣＰＵ１７１は、性能統計収集および／または報告、ＳＭＡＲＴの実装、電力シーケンスの制御、電力消費の制御および／または監視および／または調節、電力障害に対する対応、クロック速度の制御および／または監視および／または調節、ならびに他の管理タスクのうちの１つ以上等の他の管理タスクを実施することができる。
【０１６７】
様々な実施形態は、ＳＳＤコントローラ１００と同様であり、ホストインターフェース１１１および／または外部インターフェース１１０の適応を介したもの等の様々なコンピューティングホストとの動作と互換性がある、コンピューティングホストフラッシュメモリコントローラを含む。様々なコンピューティングホストには、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＳＡＮ、ＮＡＳデバイス、ＤＡＳデバイス、ストレージアプライアンス、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレットデバイスまたはコンピュータ、ウルトラブックコンピュータ、電子書籍表示デバイス（ｅ−リーダ等）、ＰＤＡ、ナビゲーションシステム、（手持ち式）ＧＰＳデバイス、自動車制御システム、自動車用メディア制御システムまたはコンピュータ、プリンタ、コピー機もしくはファックス機または一体型デバイス、ＰＯＳデバイス、キャッシュレジスタ、メディアプレーヤ、テレビ、メディアレコーダ、ＤＶＲ、デジタルカメラ、携帯電話用ハンドセット、コードレス電話用ハンドセット、および電子ゲームのうちの１つ、またはそれらの任意の組み合わせを含む。
【０１６８】
様々な実施形態では、ＳＳＤコントローラ（もしくはコンピューティングホストフラッシュメモリコントローラ）のすべてまたは任意の部分は、単一のＩＣ上、マルチダイＩＣの単一のダイ上、マルチダイＩＣの複数個のダイ上、または複数個のＩＣ上に実装される。例えば、バッファ１３１は、ＳＳＤコントローラ１００の他の要素と同一のダイ上に実装される。別の実施例では、バッファ１３１は、ＳＳＤコントローラ１００の他の要素とは異なるダイ上に実装される。
【０１６９】
図１Ｂは、図１ＡのＳＳＤの１つ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を図示する。ＳＳＤ１０１は、デバイスインターフェース１９０を介してＮＶＭ１９９に連結されたＳＳＤコントローラ１００を含む。図は、実施形態の様々な種類、ホストに直接連結された単一のＳＳＤ、それぞれがそれぞれの外部インターフェースを介してそれぞれにホストに直接連結された複数個のＳＳＤ、および様々な相互接続要素を介して間接的にホストに連結された１つ以上のＳＳＤを図示する。
【０１７０】
ホストに直接連結された単一のＳＳＤの実施形態例として、ＳＳＤ１０１の１つのインスタンスは、外部インターフェース１１０を介して、ホスト１０２に直接連結される（例えば、スイッチ／ファブリック／中間コントローラ１０３が、省略、迂回、またはパススルーされている）。それぞれがそれぞれの外部インターフェースを介してホストに直接連結された複数個のＳＳＤの実施形態例として、ＳＳＤ１０１の複数個のインスタンスのそれぞれは、外部インターフェース１１０のそれぞれのインスタンスを介して、それぞれホスト１０２に直接連結される（例えば、スイッチ／ファブリック／中間コントローラ１０３は、省略、迂回、またはパススルーされている）。様々な相互接続要素を介してホストに間接的に連結された１つ以上のＳＳＤの実施形態例として、ＳＳＤ１０１の１つ以上のインスタンスのそれぞれは、ホスト１０２にそれぞれ間接的に連結される。各間接的連結は、スイッチ／ファブリック／中間コントローラ１０３に連結された外部インターフェース１１０およびホスト１０２に連結する中間インターフェース１０４のそれぞれのインスタンスを介した連結である。
【０１７１】
また、スイッチ／ファブリック／中間コントローラ１０３を含む実施形態のうちのいくつかは、メモリインターフェース１８０を介して連結され、ＳＳＤがアクセス可能である、カードメモリ１１２Ｃも含む。様々な実施形態では、ＳＳＤ、スイッチ／ファブリック／中間コントローラ、および／またはカードメモリのうちの１つ以上は、物理的に識別可能なモジュール、カード、またはプラグ着脱可能な要素（例えば、Ｉ／Ｏカード１１６）上に含まれる。いくつかの実施形態では、ＳＳＤ１０１（またはその変形物）は、ホスト１０２として動作するイニシエータに連結される、ＳＡＳドライブまたはＳＡＴＡドライブに対応する。
【０１７２】
ホスト１０２は、ＯＳ１０５、ドライバ１０７、アプリケーション１０９、およびマルチデバイス管理ソフトウェア１１４の様々な組み合わせ等のホストソフトウェア１１５の様々な要素を実行することができる。点線矢印１０７Ｄは、ホストソフトウェア←→Ｉ／Ｏデバイス通信、例えば、ＳＳＤ１０１のインスタンスのうちの１つ以上の間で送受信されるデータ、およびドライバ１０７を介してＯＳ１０５のうちの任意の１つ以上との間で送受信されるデータ、ドライバ１０７との間で送受信されるデータ、ならびにドライバ１０７を介して、もしくはＶＦとして直接アプリケーション１０９との間で送受信されるデータを表す。
【０１７３】
ＯＳ１０５は、ＳＳＤとインターフェースをとるために、ドライバ（ドライバ１０７によって概念的に図示される）を含む、および／または該ドライバと共に動作することができる。ＯＳ１０５の例は、Ｗｉｎｄｏｗｓ（登録商標）の様々なバージョン（例えば、９５、９８、ＭＥ、ＮＴ、ＸＰ、２０００、サーバ、Ｖｉｓｔａ、および７）、Ｌｉｎｕｘ（登録商標）の様々なバージョン（例えば、Ｒｅｄ  Ｈａｔ、Ｄｅｂｉａｎ、およびＵｂｕｎｔｕ）、ならびにＭａｃＯＳの様々なバージョン（例えば、８、９、およびＸ）である。様々な実施形態では、ドライバは、ＳＡＴＡ、ＡＨＣＩ、もしくはＮＶＭ  Ｅｘｐｒｅｓｓ等の標準インターフェースおよび／またはプロトコルで動作する、標準の、および／または一般的なドライバ（「市販される」もしくは「あらかじめインストールされている」と称される場合がある）である、あるいは任意選択で、ＳＳＤ１０１に固有のコマンドを使用することができるようにカスタマイズされた、および／またはＳＳＤ１０１に固有のコマンドを使用することができるベンダー固有のドライバである。いくつかのドライブおよび／またはドライバは、アプリケーション１０９等のアプリケーションレベルのプログラムが、最適化ＮＡＮＤアクセス（ＯＮＡと称される場合がある）または直接ＮＡＮＤアクセス（ＤＮＡと称される場合がある）技法等を介して、ＳＳＤ１０１にコマンドを直接通信し、一般的なドライバを用いてでさえ、カスタマイズされたアプリケーションがＳＳＤ１０１に固有のコマンドを使用することを可能にするために、パススルーモードを有する。ＯＮＡ技法は、非標準修飾子（ヒント）の使用、ベンダー固有のコマンドの使用、圧縮率による実際のＮＶＭ使用量等の非標準統計の通信、および他の技法のうちの１つ以上を含む。ＤＮＡ技法は、ＮＶＭのマップされていない読み出し、ＮＶＭへのマップされていない書き込み、および／またはＮＶＭへのマップされていない消去アクセスを提供する、非標準またはベンダー固有のコマンドの使用、そうでなければＩ／Ｏデバイスが行い得るデータ書式設定を迂回すること等によって、ＮＶＭへのより直接的なアクセスを提供する、非標準またはベンダー固有のコマンドの使用、および他の技法のうちの１つ以上を含む。ドライバの例は、ＯＮＡまたはＤＮＡがサポートされていないドライバ、ＯＮＡ対応ドライバ、ＤＮＡ対応ドライバ、およびＯＮＡ／ＤＮＡ対応ドライバである。ドライバのさらなる例は、ベンダーが提供する、ベンダーが開発した、および／またはベンダーが拡張したドライバ、ならびにクライアントが提供する、クライアントが開発した、および／またはクライアントが拡張したドライバである。
【０１７４】
アプリケーションレベルのプログラムの例は、ＯＮＡまたはＤＮＡがサポートされていないアプリケーション、ＯＮＡ対応アプリケーション、ＤＮＡ対応アプリケーション、およびＯＮＡ／ＤＮＡ対応アプリケーションである。点線矢印１０９Ｄは、アプリケーション←→Ｉ／Ｏデバイス通信（例えば、ドライバまたはアプリケーションのＶＦを介して迂回する）、例えば、アプリケーションが中間物としてＯＳを使用すること等なく、ＳＳＤと通信する、ＯＮＡ対応アプリケーションおよびＯＮＡ対応ドライバを表す。点線矢印１０９Ｖは、アプリケーション←→Ｉ／Ｏデバイス通信（例えば、アプリケーションのＶＦを介して迂回する）、例えば、アプリケーションがＯＳまたはドライバを中間物として使用すること等なく、ＳＳＤと通信する、ＤＮＡ対応アプリケーションおよびＤＮＡ対応ドライバを表す。
【０１７５】
いくつかの実施形態では、ファームウェアストレージ、例えば、ファームウェア１０６に、ＮＶＭ１９９のうちの１つ以上の部分が使用される。ファームウェアストレージは、１つ以上のファームウェアイメージ（またはその部分）を含む。ファームウェアイメージは、例えば、例えばＳＳＤコントローラ１００のＣＰＵコア１７２によって実行されるファームウェアの１つ以上のイメージを有する。別の実施例では、ファームウェアイメージは、例えば、ファームウェア実行中にＣＰＵコアによって参照される、定数、パラメータ値、およびＮＶＭデバイス情報の１つ以上のイメージを有する。ファームウェアのイメージは、例えば、現在のファームウェアイメージ、および０またはそれ以上前の（ファームウェア更新に関して）ファームウェアイメージに対応する。様々な実施形態では、ファームウェアは、一般的な標準のＯＮＡおよび／またはＤＮＡ動作モードを提供する。いくつかの実施形態では、任意選択でドライバによって通信および／もしくは提供されるキーまたは様々なソフトウェア技法を介して、ファームウェア動作モードのうちの１つ以上が有効化される（例えば、１つ以上のＡＰＩが「解除される」）。
【０１７６】
スイッチ／ファブリック／中間コントローラがない、いくつかの実施形態では、ＳＳＤは、外部インターフェース１１０を介して、ホストに直接連結される。様々な実施形態では、ＳＳＤコントローラ１００は、ＲＡＩＤコントローラ等の１つ以上の中間レベルの他のコントローラを介して、ホストに連結される。いくつかの実施形態では、ＳＳＤ１０１（またはその変形物）は、ＳＡＳドライブまたはＳＡＴＡドライブに対応し、スイッチ／ファブリック／中間コントローラ１０３は、次いでイニシエータに連結されるエクスパンダに対応するか、または代替えとして、スイッチ／ファブリック／中間コントローラ１０３は、エクスパンダを介してイニシエータに間接的に連結されるブリッジに対応する。いくつかの実施形態では、スイッチ／ファブリック／中間コントローラ１０３は、１つ以上のＰＣＩｅスイッチおよび／またはファブリックを含む。
【０１７７】
ホスト１０２がコンピューティングホスト（例えば、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＳＡＮ、ＮＡＳデバイス、ＤＡＳデバイス、ストレージアプライアンス、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、および／またはネットブックコンピュータ）である実施形態のうちのいくつか等の様々な実施形態では、コンピューティングホストは、任意選択で、１つ以上のローカルおよび／またはリモートサーバ（例えば、任意選択のサーバ１１８）と通信することができる（例えば、任意選択のＩ／Ｏ&ストレージデバイス／資源１１７および任意選択のＬＡＮ／ＷＡＮ１１９を介して）。通信は、例えば、ローカルおよび／もしくはリモートアクセス、管理、ならびに／またはＳＳＤ１０１要素のうちの任意の１つ以上の使用を可能にする。いくつかの実施形態では、通信は、完全に、または部分的に、イーサネット（登録商標）を介して行われる。いくつかの実施形態では、通信は、完全に、または部分的に、ファイバチャネルを介して行われる。様々な実施形態では、ＬＡＮ／ＷＡＮ１１９は、サーバファーム、ネットワークコンピューティングサーバファーム、メトロエリアネットワーク、およびインターネット内のネットワークの任意の１つ以上等の１つ以上のローカルおよび／または広域ネットワークを表す。
【０１７８】
様々な実施形態では、１つ以上のＮＶＭと組み合わせられたＳＳＤコントローラおよび／またはコンピューティングホストフラッシュメモリコントローラは、ＵＳＢストレージ構成要素、ＣＦストレージ構成要素、ＭＭＣストレージ構成要素、ｅＭＭＣストレージ構成要素、サンダーボルトストレージ構成要素、ＵＦＳストレージ構成要素、ＳＤストレージ構成要素、メモリスティックストレージ構成要素、およびｘＤピクチャーカードストレージ構成要素等の不揮発性ストレージ構成要素として実装される。
【０１７９】
様々な実施形態では、ＳＳＤコントローラ（もしくはコンピューティングホストフラッシュメモリコントローラ）、またはその機能のすべてもしくは任意の部分は、コントローラが連結されるホスト（例えば、図１Ｂのホスト１０２）に実装される。様々な実施形態では、ＳＳＤコントローラ（もしくはコンピューティングホストフラッシュメモリコントローラ）、またはその機能のすべてもしくは任意の部分は、ハードウェア（例えば、論理回路）、ソフトウェア、および／またはファームウェア（例えば、ドライバソフトウェアもしくはＳＳＤ制御ファームウェア）、あるいはそれらの任意の組み合わせを介して実装される。例えば、ＥＣＣユニット（図１ＡのＥＣＣ１６１および／またはＥＣＣ−Ｘ１３５と同様のもの等）の機能性、または該ＥＣＣユニットと関連付けられる機能性は、部分的にホスト上のソフトウェアを介して、ならびに部分的にＳＳＤコントローラ内のファームウェアおよびハードウェアの組み合わせを介して実装される。別の実施例では、リサイクラーユニット（図１Ａのリサイクラー１５１と同様のもの等）の機能性、または該リサイクラーユニットと関連付けられる機能性は、部分的にホスト上のソフトウェアを介して、および部分的にコンピューティングホストフラッシュメモリコントローラ内のハードウェアを介して実装される。
【０１８０】
０／１バランス回復
図２Ａから図２Ｄは、「０／１」バランス回復に関する閾値電圧分布を図示する。この考察のために、各丘のような隆起は、ＮＶＭの読み出し単位サイズの部分のそれぞれの状態の閾値電圧確率分布を表す独立したガウス様曲線を抽象化したものである。閾値電圧軸は、右に正の電圧が増加するように引かれる。プロットが、ＮＶＭのより大きい集団により一般的に適用されるように、絶対尺度は、意図的に提供されておらず、また、基準点も識別されていない。図２Ａおよび図２Ｂは、ＳＬＣ固有であり、一方、図２Ｃおよび図２Ｄは、ＭＬＣ固有である。
【０１８１】
初期時間（例えば、対応するデータが書き込まれる際）を表す図２Ａでは、最も左の分布２２０は、論理１を表し、最も右の分布２３０は、論理０を表す。技術によって、最も左の分布は、（少なくとも大部分が）負の電圧にあってもよい。読み出し閾値２１０は、理想的に、２つの分布の間に位置する。
【０１８２】
本明細書の実施形態によってリンクされるものを除き、これらの閾値電圧分布から独立して、いくつかの実施形態では、ＮＶＭは、記憶されている０および１の統計的分布の具体的な知識を用いて書き込まれる。より具体的には、いくつかの実施形態では、０および１の統計的分布が５０％−５０％（５０％の０および５０％の１）となるように、様々な暗号化および／またはスクランブリング技法が使用される。図２Ａの場合に理想的に位置する公称読み出し閾値を使用してＳＬＣが読み出される際、読み出しデータの０および１の観測される統計的分布は、同様に、５０％−５０％である。５０％−５０％である統計的分布は、データの任意の１つのサンプルが、０のビットおよび１のビットの厳密に均等なバランスを有するということを意味するわけではなく、むしろ、多くのサンプルにわたる平均は、サンプルの数が増加するにつれて、０のビットおよび１のビットの比率が５０％−５０％に近づき、確率的境界がますます狭くなる。コインが多くの回数投げられ、ｎ／４（ｎはコインが投げられる回数である）に近似する分散を伴うガウス分布を生成する際の頂部および尾部の分布と類似する。例えば、０のビットおよび１のビットの５０％−５０％の統計的分布を伴う読み出し単位内に１８，４３２ビットが存在する場合、０のビット（または１のビット）の数における分散は、約４，６０８であり、標準偏差は、約６８である。標準偏差６８では、読み出し単位の１／１，０００，０００個未満のサンプルが、平均の９，２１６から３４１以上（５標準偏差）離れた０のビット数を有することが予想されるであろう。
【０１８３】
図２Ｂには、時間的に後の図２Ａの公称読み出し閾値２１０が表されており、２つの閾値電圧分布２２５および２３５は、それらの時間的に前の図２Ａのそれぞれの分布２２０および２３０に対してシフトされている。実施例の目的のために、両方とも均一に左に（より負の電圧に向かって）シフトされた、２つの分布が示されている。より一般的に、２つの分布は、相互から独立して正または負の方向に移動することができることを理解されたい。
【０１８４】
図２Ｂを考慮して、ＳＬＣが公称読み出し閾値２１０を使用して再度読み出される際、ＮＶＭ（例えば、いずれのエラー訂正の前に）から直接読み出される、０および１の観測される統計的分布は、５０％−５０％ではないことが予測可能である。より具体的には、所与の概念的実施例では、読み出し閾値は、０のうちのいくつかが誤って１と読まれるものであるため、誤った過度の１が予想される。
【０１８５】
実際には、推論の方向が逆転される。つまり、実際には、一般的に、閾値電圧分布のそのようなシフトは、既知ではない、または直接知ることが不可能である。いくつかの実施形態では、代わりに、閾値電圧分布のシフトの存在を推論するために、ＮＶＭから読み出される０および１の不一致（０および１の既知の記憶されている分布に対する）の観測が使用される。さらに、これらの実施形態では、０／１バランスが回復されるまで、必要に応じて、少なくとも一部において、観測される不一致に基づき、読み出し閾値が読み出し閾値２１５に調節される（本明細書の他の場所に詳述されるように）。
【０１８６】
同様に、図２Ｃは、初期時間（対応するデータが書き込まれる際等）の初期閾値電圧分布を表し、一方、図２Ｄは、後の時間の対応する後の閾値電圧分布を表す。より具体的には、選択されるグレーコードマッピングでは、それぞれ１１、１０、００、および１０状態を表し、閾値電圧分布２５１、２６１、２７１、および２８１（図２Ｄの）は、それらの時間的に前のそれぞれの閾値電圧分布２５０、２６０、２７０、および２８０（図２Ｃの）に対してシフトされている。３つの公称（初期）読み出し閾値、ＶＲＥＡＤ１２４０、ＶＲＥＡＤ２２４２、およびＶＲＥＡＤ３２４４もまた、示されている。この場合も同様に、実施例の目的のために、図２Ｄでは、すべて均一に左に（より負の電圧に向かって）シフトされた、４つの分布が示されている。より一般的に、４つの分布は、相互から独立して、正または負の方向に移動することができることを理解されたい。
【０１８７】
いくつかの実施形態では、４つの状態の統計的分布が２５％−２５％−２５％−２５％（各状態が２５％）になるように、様々なスクランブリング技法が使用される。図２Ｃの場合に理想的に位置する公称読み出し閾値を使用してＭＬＣが読み出される際、いくつかの実施形態では、４つの状態の統計的分布は、同様に２５％−２５％−２５％−２５％であることを確認することができる。（他の場所に記載されるように、０および１は、コントローラによって直接観測可能であるが、すべての４つの状態は、必要に応じて推論可能である。）いくつかの実施形態では、閾値電圧分布のシフトの存在を推論するために、ＮＶＭから読み出される不一致（既知の記憶されている状態の分布に対する）（予想される２５％−２５％−２５％−２５％からの偏差）の観測が使用される。読み出し閾値は次いで、図２Ｄに示されるように、ＶＲＥＡＤ１２６５、ＶＲＥＡＤ２２７５、およびＶＲＥＡＤ３２８５になるように、調節される（本明細書の他の場所に詳述されるように）。いくつかの実施形態では、読み出し閾値の調節は、より下位のページの読み出し（ＶＲＥＡＤ２２７５の調節）と、より上位のページの読み出し（ＶＲＥＡＤ１２６５および／またはＶＲＥＡＤ３２８５の調節）とが別個に実施される。
【０１８８】
０／１バランス回復のための機能
図３Ａは、特定の機能を強調するように、選択される論理ブロックの境界を引き直した、図１Ａおよび図１ＢのＳＳＤ１０１、ＳＳＤコントローラ１００、ならびにＮＶＭ１９９の代替図を提供する。最高水準のＳＳＤ１０１は、外部インターフェース１１０、ＳＳＤコントローラ１００、ＮＶＭ１９９、およびデバイスインターフェース１９０を特長とする。
【０１８９】
外部インターフェース１１０は、図１Ａの上記の記載に詳述されるように、図１Ｂのホスト１０２等のホストに連結され、ホストストレージ関連コマンド、ならびに書き込みデータおよびコントローラ読み出しデータを備える、ＳＡＴＡ等の高水準ストレージプロトコルをサポートする。デバイスインターフェース１９０は、図１Ａの記載に詳述されるように、低水準ＮＶＭ  Ｉ／Ｏトランザクションをサポートする。ＮＶＭ１９９は、ＮＶＭアレイ３３２、プログラマブル読み出し電圧回路３３４、制御／ステータスレジスタ３３６、およびＩ／Ｏ３３８を特長とする。ＳＳＤコントローラ１００は、ホストインターフェース１１１、スクランブラ３１０、ＥＣＣエンコーダ３２０、デバイスインターフェース論理１９１、アンバランス検出器３４０、バッファ１３１、ＥＣＣデコーダ３６０、デスクランブラ３７０、およびバランス回復論理３８０を特長とする。ホストインターフェース１１１は、前述されるように、外部インターフェース１１０を介してホストと連結し、スクランブラ３１０に書き込みデータ３０６を提供し、バッファ１３１から読み出しデータ３５１を受信する。
【０１９０】
書き込み経路および機能性は、以下の通りである。スクランブラ３１０は、ＥＣＣエンコーダ３２０へのスクランブルされた書き込みデータ３１１を生成するように、書き込みデータ３０６に対して動作する。スクランブラ３１０は、書き込みデータ３０６を、可逆的に、かつスクランブルされた書き込みデータ３１１が記憶されている状態の既知の統計的分布を有するようにスクランブルする。いくつかの実施形態では、スクランブラ３１０は、ＡＥＳエンコーダ等を介して、暗号化の副生成物としてデータをランダム化する暗号化を実施する。いくつかの実施形態では、スクランブラ３１０は、データをランダム化する（但し、いかなるデータのセキュリティ意図もない）ために、線形フィードバックシフトレジスタ（ＬＦＳＲ）を使用する。ＥＣＣエンコーダ３２０は、ＮＶＭ１９９に記憶するために、追加のＥＣＣビットを追加して、デバイスインターフェース１９０を介してデバイスインターフェース１９１に提供される、ＥＣＣがエンコードされた書き込みデータ３２１をもたらすように、スクランブルされた書き込みデータ３１１を処理する。
【０１９１】
基本的な読み出し経路および機能性は、以下の通りである。デバイスインターフェース１９０を介して、ＮＶＭ１９９から未訂正のスクランブルされた（生）読み出しデータ３５９を備えるＮＶＭのページが受信される。いくつかの実施形態では、図３Ｂに詳述されるように、各ＮＶＭのページの読み出しは、４つのコードワード（読み出し単位としても知られる）、コードワード０からコードワード３を備える。図３Ａに関して続けて、各コードワードは、名目上、スクランブラ３０１によってスクランブルされたデータ、ならびにＥＣＣエンコーダ３２０によって生成された追加のＥＣＣビットを備えるが、一般的に、非意図的に、ＮＶＭ記憶および取り出し動作の結果と置き変えられる。コードワードは、バッファ１３１を介してＥＣＣデコーダ３６０に提供される。ＥＣＣデコーダ３６０は、コードワードを処理し、データが最初にＥＣＣをエンコードされてから、いずれかの時点で生じたいずれのエラーも概して訂正して、デスクランブラ３７０に提供される訂正された読み出しデータ３６１をもたらすために、含まれる追加のＥＣＣビットを利用する。デスクランブラ３７０は、訂正された読み出しデータ３６１に対して動作し、スクランブラ３１０によって実施されたスクランブリングを逆にして、バッファ１３１を介して読み出しデータ３５１としてホストインターフェース１１１に提供される、スクランブルされていない読み出しデータ３７１をもたらす。
【０１９２】
読み出し経路および機能性は、アンバランス検出器３４０と、バランス回復論理３８０とをさらに含む。アンバランス検出器３４０は、ＮＶＭから受信される生読み出しデータ３５９を監視し、状態の統計的分布に関するデータを、少なくとも一時的に維持する。バランス回復論理３８０は、ＮＶＭプログラマブル読み出し電圧回路３３４を介して、ＮＶＭ読み出し閾値（ＮＶＭアレイ３３２を読み出すために使用される）を選択的に調節するために、デバイスインターフェース論理１９１およびＮＶＭ  Ｉ／Ｏ３３８を介して、ＮＶＭ制御／ステータスレジスタ３３６と相互作用する。読み出し閾値は、ａ）ＥＣＣデコーダ３６０によって検出される訂正不可能な読み出し３６２、およびｂ）アンバランス検出器３４０によって検出されるアンバランス３４１（状態の統計的分布における）に基づいて調節される。ＳＬＣ実施形態およびＭＬＣ実施形態の両方で、読み出し単位は、２進数データである。０および１の不一致は、ＳＬＣの場合（またはＭＬＣがあたかもＳＬＣのように動作している場合）には、直接測定可能である。いくつかの実施形態では、ＭＬＣの３つ以上の状態の不一致は、どのようにデータがＮＶＭに記憶されたかの知識に基づいて推定される。
【０１９３】
図３Ａは、ホストが、ＮＶＭ１９９に書き込まれるデータおよびＮＶＭ１９９から読み出されるデータのソースならびにシンクとして動作する状況における、０／１バランス回復のための機能を図示する。様々な実施形態（図１Ａおよび図１Ｂに図示されるもの等）では、１つ以上の他のエージェントが、ＮＶＭ１９９に書き込まれるデータおよびＮＶＭ１９９から読み出されるデータのソースならびにシンクとして動作する。他のエージェントの例は、本明細書の他の場所に記載されるように、ＮＶＭ１９９内でデータをある位置から別の位置に移動させる、図１Ａのリサイクラー１５１である。
【０１９４】
様々な実施形態では、スクランブラ３１０、ＥＣＣエンコーダ３２０、ＥＣＣデコーダ３６０、およびデスクランブラ３７０のうちの任意の１つ以上と関連付けられる機能性の任意の部分またはすべての部分が、少なくとも一部において、データ処理１２１およびＥＣＣ１６１（両方とも図１Ａの）のうちの１つ以上を使用して実現される。
【０１９５】
０／１バランス回復のための制御フロー
図４は、図１Ａ、図１Ｂ、および図３ＡのＳＳＤの実施形態の選択される制御フローの詳細を図示し、書き込み関連動作および読み出し関連動作に関する特定の詳細を提供する。書き込み動作は、アクション４１０で開始し、４３０まで続く。戻り経路は明白に描写されていないが、後続の書き込み動作は、再びアクション４１０で開始する。同様に、読み出し動作は、アクション４４０で開始し、４６０まで続き、条件によっては４８０まで続く。戻り経路は明白に描写されていないが、後続の読み出し動作は、再びアクション４４０で開始する。少なくとも初期の書き込みは、同一位置に対する読み出しに先行することが想定される。そうでなければ、試験などの人為的な場合を除き、同一の位置または概して異なる位置への読み出し動作および書き込み動作は、一般的に、アプリケーションのニーズが指図する際に独立して呼び出される。そうは言うものの、ヒューリスティックな実施例では、最初の読み出し動作４４０は、概念的に、同一の位置への最後の書き込み動作４３０の直後に続く。
【０１９６】
書き込み関連動作をより詳細に考察すると、ＮＶＭに書き込まれる元のデータは、一般的に、アクション４１０で、暗号化またはＬＦＳＲの使用等を介して最初にスクランブルされる。より多くの特異性が採用される場合を除き、本明細書で使用される場合、「スクランブリング」という用語は、ＮＶＭに記憶されている様々な状態の間の既知の統計的分布をもたらす任意の操作又は選択を介した、書き込まれる元のデータの操作を指す。スクランブリング方法は、暗号化およびＬＦＳＲ技法を含む。（また、図３Ａのスクランブラ３１０も参照のこと。）いくつかの暗号化実施形態では、スクランブリングは、ＡＥＳ暗号化仕様のうちの少なくとも１つのバージョンに従う。いくつかのＬＦＳＲ実施形態では、スクランブリングは、ＬＦＳＲの少なくとも１つの選択に従う。いくつかの実施形態では、スクランブリングは、１つ以上の試験パターンの選択を介して、より直接的に判定され、ＮＶＭに書き込まれる際、状態の選択される統計的分布を提供する（必ずしも暗号化またはＬＦＳＲ処理を使用することなく）。
【０１９７】
ＬＦＳＲは、シフトレジスタの選択されるタップの一次関数またはそのソフトウェアモデルから入力ビットを生成する、組み合わせ論理フィードバックネットワークを有する、ハードウェアシフトレジスタである。ＬＦＳＲは、決定論的疑似ランダムシーケンスを生成する。少なくとも概念的に、ＬＦＳＲ生成疑似ランダムシーケンスは、スクランブルされたデータを提供するように、元のデータに追加されるモジュロ２である。
【０１９８】
続いて、スクランブルされたデータは、次に、アクション４２０に図示されるように、一般的に（但し、任意選択で）ＥＣＣがエンコードされる。（また、図３ＡのＥＣＣエンコーダ３２０も参照のこと。）ＥＣＣエンコーディングは、ＮＶＭを使用する際に様々な理由のために生じるエラーに対するデータ復元（エラー訂正を介した）を促進する、冗長情報を提供する。より小さい構造、より多い使用、より長い時間経過、より大きい温度逸脱、およびＭＬＣメモリの使用のうちの１つ以上では、そのようなエラーがより多く見られ、したがって、ＥＣＣエンコーディングがより望ましい。
【０１９９】
次いで、スクランブルされ、かつ任意選択でＥＣＣがエンコードされたデータは、書き込み関連動作の最後であるアクション４３０に示されるように、ＮＶＭに書き込まれる。スクランブリングの結果として、書き込まれる状態の分布は既知である。ＳＬＣメモリおよびＡＥＳ暗号化が使用される場合、０−１分布は、５０−５０（すなわち、５０％の０および５０％の１）であることが既知である。４ＬＣ（４レベルＭＬＣ）メモリおよびＡＥＳ暗号化が使用される場合、より下位およびより上位のページの両方の書き込み後の分布は、２５−２５−２５−２５（すなわち、４つの状態のそれぞれが２５％）であることが既知である。
【０２００】
いくつかの実施形態では、上述されるように、１つ以上の試験パターンの使用のために、少なくとも１つの基準領域が割かれる。いくつかの実施形態では、基準領域の位置は、様々なＮＶＭ書き込み／読み出しアーチファクトの試験パターンへの影響を最小化する（または逆に、最大化する）ように選択される。いくつかの実施形態では、基準領域は、基準ページであり、その位置は、書き込まれるデータへの書き込み妨害の影響を最小化するように、ブロックに書き込まれる最後のページとなるように選択される。電圧分布に影響を及ぼす現象のうちのいくつかは、時間および／または温度変異であり、基準領域は、０／１不一致に対するこれらの影響の既知の尺度としての役割を果たす。
【０２０１】
読み出し関連動作をより詳細に考察すると、アクション４４０で開始して、ＮＶＭから１つ以上の読み出し単位が読み出され、状態の分布が捕捉される。いくつかの実施形態では、０のカウントおよび１のカウントのそれぞれが、直接判定される。次に、アクション４５０で、元のデータを復元する試みが行われる。これは、書き込みの前に実施されたどんなデータ操作動作の逆も実施する。一般的に、書き込みの前に、ＥＣＣエンコーディングが追加されており、したがって、一般的に、読み出し単位に次に、ＥＣＣデコーディングが施される。（また、図３ＡのＥＣＣデコーダ３６０も参照のこと。）読み出し単位毎に、ＥＣＣデコーディングが成功した場合、必要に応じて、次いでデスクランブリングが実施される。例えば、書き込みの前にＡＥＳ暗号化が使用された場合、ＡＥＳ暗号解読が実施される。または、ＬＦＳＲ生成疑似ランダムシーケンスが使用された場合、同一のシーケンスは、読み出し単位からのＥＣＣがデコードされたデータに追加されるモジュロ２である。
【０２０２】
読み出し関連動作は、元のデータが復元可能である場合、エラーなく、またはＥＣＣデコーディングを介して訂正可能なエラーで、早く完了する。決定４６０からの「いいえ」経路を参照されたい。しかしながら、読み出し単位のいずれかの訂正不可能なエラーに対しては、また、アクション４７０および４８０も実施される。決定４６０からの「はい」経路を参照されたい。アクション４７０で、状態の分布の不一致が評価される。（また、図３Ａのアンバランス検出器３４０も参照のこと。）いくつかの実施形態では、判定される不一致は、０のカウントと１のカウントとの間の判定される差である。様々な実施形態では、判定される不一致は、すべての読み出し単位より少ない読み出し単位が訂正不可能なエラーを有するとしても、すべての読み出し単位にわたって演算される。
【０２０３】
次に、アクション４８０で、少なくとも一部において、判定される不一致の大きさに基づき、少なくとも１つの読み出し閾値の調節された値（閾値シフトとしても知られる）が判定される。いくつかの実施形態では、判定される不一致の大きさが所定の許容範囲未満である場合、読み出し閾値は調節されない。いくつかの実施形態では、調節された読み出し閾値を判定するために、多因子「訂正アルゴリズム」が採用されるが、その判定される不一致の大きさは、１つの因子である。
【０２０４】
いくつかの実施形態では、訂正アルゴリズムは、読み出し閾値の置換値を選択するために使用される、ルックアップテーブルの形態をとる。判定される不一致の大きさは、ルックアップテーブルのインデックスの少なくとも部分の基礎である。いくつかの実施形態では、ルックアップテーブルは、使用されるＮＶＭの特定のベンダーに基づき、予め特徴付けられる（重み付けされる）。いくつかの実施形態では、インデックスは、Ｐ／Ｅサイクル、時間経過、保有時間（最後の書き込みからの時間）、温度、およびＮＶＭの閾値電圧分布のドリフト、またはＮＶＭの閾値電圧分布に対する妨害に関連し得る任意の他の因子のうちの１つ以上を備える、追加の構成要素を有する。（また、図３Ａのバランス回復論理３８０も参照のこと。）
【０２０５】
ここで、および「発明を実施するための形態」全体を通して、一般に使用されているフラッシュメモリマイクロアーキテクチャでは、一般的に、アクセスされるデータの粒度は、読み出しと書き込みとで異なることを忘れてはならない。読み出しアクセスの最小サイズ（読み出し単位）は、ページである。ページは、本明細書の他の場所に記載されるように、１つ以上のコードワードとして、いくつかの実施形態では４つのコードワードとして構成される。対照的に、書き込みアクセスの最小サイズは、多くのページのブロックである。
【０２０６】
いくつかの実施形態では、不一致は、ページ全体基準で評価される。いくつかの実施形態では、不一致は、コードワード基準で評価される。読み出しにおける訂正不可能なエラーと関連して実施される不一致評価は、その同一の位置を含む最も最近のブロック書き込みにおいて書き込まれたものと同一の位置（ページ、またはコードワード）に対して実施される。
【０２０７】
実装技法例
いくつかの実施形態では、例えば、フラッシュメモリ、コンピューティングホストフラッシュメモリコントローラ、および／もしくはＳＳＤコントローラ（図１ＡのＳＳＤコントローラ１００等）、ならびにプロセッサ、マイクロプロセッサ、システムオンチップ、アプリケーション専用集積回路、ハードウェアアクセラレータ、または前述の動作のすべてもしくは部分を提供する他の回路の部を伴う、０−１のバランスがとられたＳＳＤによって実施される動作のすべてまたは部分の様々な組み合わせは、コンピュータシステムによる処理と互換性のある仕様によって指定される。仕様は、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、またはレイアウト記述等の様々な記述に従う。記述例には、Ｖｅｒｉｌｏｇ、ＶＨＤＬ、ＳＰＩＣＥ、ＰＳｐｉｃｅ、ＩＢＩＳ、ＬＥＦ、ＤＥＦ、ＧＤＳ−ＩＩ、ＯＡＳＩＳ等のＳＰＩＣＥの異版、または他の記述が挙げられる。様々な実施形態では、処理は、１つ以上の集積回路上に含むのに好適な論理および／または回路をもたらす、検証する、または指定する、解釈、コンパイル、シミュレーション、および合成の任意の組み合わせを含む。様々な実施形態によると、各集積回路は、様々な技法に従って設計可能および／または製造可能である。技法には、プログラマブル技法（フィールドもしくはマスクプログラマブルゲートアレイ集積回路等）、セミカスタム技法（完全に、もしくは部分的にセルベースの集積回路等）、ならびにフルカスタム技法（実質的に特化された集積回路等）、それらの任意の組み合わせ、または集積回路の設計および／もしくは製造に適合する任意の他の技法が挙げられる。
【０２０８】
いくつかの実施形態では、命令セットが記憶されているコンピュータ可読媒体によって記載される動作のすべてまたは部分の様々な組み合わせは、１つ以上のプログラム命令を実行および／もしくは解釈することによって、１つ以上のソースおよび／もしくはスクリプト言語命令文を解釈ならびに／またはコンパイルすることによって、あるいはプログラムミングおよび／またはスクリプト言語命令文内に表される情報をコンパイル、翻訳、および／または解釈することによってもたらされる２進数命令を実行することによって、実施される。命令文は、任意の標準プログラミングまたはスクリプト言語（Ｃ、Ｃ＋＋、Ｆｏｒｔｒａｎ、Ｐａｓｃａｌ、Ａｄａ、Ｊａｖａ（登録商標）、ＶＢスクリプト、およびＳｈｅｌｌ等）と互換性がある。プログラム命令、言語命令文、または２進数命令のうちの１つ以上は、任意選択で、１つ以上のコンピュータ可読ストレージ媒体要素に記憶される。様々な実施形態では、プログラム命令のうちのいくつか、すべて、または様々な部分が、１つ以上の関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分として実現される。
【０２０９】
結論
単に文章および図面の準備における便宜のために、特定の選択が行われてきており、そうではないと示されていない限り、選択は、それ自体が、記載される実施形態の構造または動作に関する追加の情報を伝達すると解釈されるべきではない。選択の例には、図面の番号付与に使用される特定の記号表示の構成または割り当て、ならびに実施形態の特長および要素を識別し、参照するために使用される要素識別子の特定の構成または割り当て（例えば、付記もしくは番号表示）が挙げられる。
【０２１０】
「含む（ｉｎｃｌｕｄｅｓ）」または「含む（ｉｎｃｌｕｄｉｎｇ）」という語は、オープンエンドな範囲の論理セットを抽象的に記述すると解釈されることが明確に意図され、「〜内（ｗｉｔｈｉｎ）」という語が明白に続かない限り、物理的含有を伝達することは意味しない。
【０２１１】
前述の実施形態は、説明および理解の明確化のために、ある程度詳細に記載されてきたが、本発明は、提供される詳細に限定されない。本発明の多くの実施形態が存在する。開示される実施形態は、例示的であり、限定的ではない。
【０２１２】
記載と一致する、構造、配設、および使用における多くの変形物が可能であり、発行される特許の特許請求の範囲内であることが理解される。例えば、各構成要素ブロックにおける相互接続および機能単位ビット幅、クロック速度、ならびに使用される技術のタイプは、様々な実施形態によって異なる。相互接続および論理に与えられる名前は、単なる例示にすぎず、記載される概念を限定すると解釈されるべきではない。フローチャートおよびフロー図プロセス、アクション、ならびに関数要素の順序および配設は、様々な実施形態によって異なる。また、そうではないと明確に述べられていない限り、指定される値の範囲、使用される最大値および最小値、または他の特定の仕様（フラッシュメモリ技術タイプ、ならびにレジスタおよびバッファ内のエントリまたはステージの数等）は、単に記載される実施形態のものであるにすぎず、実装技術における改善および変更を追跡することが予想され、限定であると解釈されるべきではない。
【０２１３】
様々な構成要素、サブシステム、動作、関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分を実現するために、記載されるものの代わりに、当業者に既知の機能的に同等の技法を採用可能である。また、実施形態の機能は、より高速な処理（以前はハードウェア内にあった機能をソフトウェアに移行することを促進する）、およびより高い集積密度（以前はソフトウェア内にあった機能をハードウェアに移行することを促進する）の設計制約ならびに技術動向に依存するため、実施形態の多くの機能的態様は、ハードウェア（例えば、一般的に専用回路）またはソフトウェア（例えば、プログラムされたコントローラもしくはプロセッサのある方法を介して）のいずれかで、選択的に実現可能であることも理解される。様々な実施形態の具体的な変形物には、分割における差、異なるフォームファクタおよび構成、異なるオペレーティングシステムおよび他のシステムソフトウェアの使用、異なるインターフェース標準、ネットワークプロトコル、または通信リンクの使用、ならびに特定のアプリケーションの固有のエンジニアリングおよび事業制約に従って本明細書に記載される概念を実現する際に予想される他の変形物が挙げられるが、これらに限定されない。
【０２１４】
実施形態が詳細に記載され、環境的文脈は、記載される実施形態の多くの態様の実現に必要とされる最小限のレベルを大きく超える。当業者は、いくつかの実施形態が、残りの要素間の基本的な協働を変えることなく、開示される構成要素または特長を省略することを認識するであろう。したがって、開示される詳細の多くが、記載される実施形態の様々な態様を実現するために必要とされないことが理解される。残りの要素が従来技術とは区別可能である範囲で、省略される構成要素および特長は、本明細書に記載される概念を限定しない。
【０２１５】
すべてのそのような設計の変形物は、記載される実施形態によって伝達される教示に対するわずかな変更である。また、本明細書に記載される実施形態は、他のコンピューティングおよびネットワーキングアプリケーションに対する広範の適用性を有し、特定のアプリケーションまたは記載される実施形態の産業に限定されないことも理解される。したがって、本発明は、発行される特許の特許請求の範囲の範囲内に包含される、すべての可能な修正および変形を含むと解釈される。
【図１Ａ】
2015520907.tif 000010
【図１Ｂ】
2015520907.tif 000011
【図２Ａ】
2015520907.tif 000012
【図２Ｂ】
2015520907.tif 000013
【図２Ｃ】
2015520907.tif 000014
【図２Ｄ】
2015520907.tif 000015
【図３Ａ】
2015520907.tif 000016
【図３Ｂ】
2015520907.tif 000017
【図４】
2015520907.tif 000018
【国際調査報告】
2015520907.tif 000019
2015520907.tif 000020