(57)【特許請求の範囲】
【請求項１】
ソリッドステート記憶媒体の有用性を改善するための方法であって、前記方法は、
ソリッドステート記憶媒体の記憶セルのセットに関する、１つ以上の記憶媒体特性を参照することと、
前記１つ以上の記憶媒体特性に基づいて、前記記憶セルのセットに関する、設定パラメーターを判定することと、
前記記憶セルのセットを含むデバイスに対する起動操作に応答して前記判定された設定パラメーターを使用するように、前記記憶セルのセットを設定することと、を含む、方法。
【請求項２】
更新イベントに応答して、前記記憶セルのセットに関する、前記１つ以上の記憶媒体特性を更新することを更に含む、請求項１に記載の方法。
【請求項３】
前記更新イベントが、前記記憶セルのセットを含む前記ソリッドステート記憶媒体のバックグラウンドスキャン、前記記憶セルのセットに対する読み取り要求、前記記憶セルのセットの隣接記憶セルに対する読み取り要求、前記記憶セルのセットを含むデバイスに対する起動操作、前記記憶セルのセットを含むデバイスに対するシャットダウン操作、及び前記記憶セルのセットに対するガベージコレクション操作のうちの１つ以上を含む、請求項２に記載の方法。
【請求項４】
前記１つ以上の記憶媒体特性の変化に応答して、前記記憶セルのセットに関する前記設定パラメーターを更新することを更に含む、請求項１に記載の方法。
【請求項５】
前記ソリッドステート記憶媒体の複数個の異なる記憶セルのセットに関する、複数個の追加的設定パラメーターを、前記複数個の異なる記憶セルのセットに関する記憶媒体特性に基づいて判定することと、前記複数個の追加的設定パラメーターを使用するように、前記複数個の異なる記憶セルのセットを設定することとを更に含む、請求項１に記載の方法。
【請求項６】
前記設定パラメーターが、インターフェースを経由して修正可能な、前記記憶セルのセットのパラメーターを含み、前記設定パラメーターが、読み取り電圧、増加型ステップパルスプログラミング操作に関するステップの大きさ、増加型ステップパルスプログラミング操作に関する反復の最大数、プログラム操作に関するプログラム検証閾値、増加型ステップパルスプログラミング操作に関する初期バイアス、増加型ステップパルス消去操作に関するステップの大きさ、増加型ステップパルス消去操作に関する反復の最大数、消去操作に関する消去検証閾値、及び増加型ステップパルス消去操作に関する初期バイアスを含む群から選択される、請求項１に記載の方法。
【請求項７】
前記１つ以上の記憶媒体特性が、前記記憶セルのセットに関するプログラム／消去サイクルの回数、前記記憶セルのセットに関する読み取り回数、前記記憶セルのセットに関する前回の書き込みからの保持時間、前記記憶セルのセットに関する温度、前記記憶セルのセットに関するユースケース、及び前記記憶セルのセットに関するエラー統計のうちの１つ以上を含む、請求項１に記載の方法。
【請求項８】
前記判定される設定パラメーターが、記憶セルの標的セットに基づき、前記記憶セルの標的セットが、制御された使用特性を有する、請求項１に記載の方法。
【請求項９】
前記記憶セルのセットに関する、前記判定される設定パラメーターが、前記記憶セルの標的セットに関して判定される設定パラメーター、及び前記記憶セルの標的セットに関する１つ以上の記憶媒体特性の一方に基づく、請求項８に記載の方法。
【請求項１０】
前記記憶セルのセットに関する前記設定パラメーターを判定することが、
前記記憶セルのセットに関する前記１つ以上の記憶媒体特性のうちの前記少なくとも１つと、前記記憶セルの標的セットに関する少なくとも１つの記憶媒体特性とを比較することと、
前記記憶セルのセットに関する前記少なくとも１つの記憶媒体特性と、前記記憶セルの標的セットに関する前記少なくとも１つの記憶媒体特性との差異に基づいて、前記記憶セルのセットに関する前記設定パラメーターを判定することと、を含む、請求項８に記載の方法。
【請求項１１】
ソリッドステート記憶媒体の有用性を改善するための装置であって、前記装置は、
ソリッドステート記憶媒体の記憶セルのセットに関する、１つ以上の記憶媒体特性を参照するように構成された、媒体特性モジュールと、
前記１つ以上の記憶媒体特性に基づいて、前記記憶セルのセットに関する設定パラメーターを判定するように構成された、設定パラメーターモジュールと、
前記１つ以上の記憶媒体特性の変化を示す前記記憶セルのセットのバックグラウンドスキャンに応答して、前記記憶セルのセットのインターフェースを用いて前記判定された設定パラメーターを使用するように、前記記憶セルのセットを設定するように構成された、記憶セル設定モジュールと、を含む、装置。
【請求項１２】
更新イベントに応答して、前記記憶セルのセットに関する前記１つ以上の記憶媒体特性を更新するように構成された、特性更新モジュールを更に含む、請求項１１に記載の装置。
【請求項１３】
前記１つ以上の記憶媒体特性の更なる変化に応答して、前記記憶セルのセットに関する前記設定パラメーターを更新するように構成された、設定更新モジュールを更に含む、請求項１１に記載の装置。
【請求項１４】
前記媒体特性モジュールが、前記ソリッドステート記憶媒体の複数個の異なる記憶セルのセットに関する記憶媒体特性を含む、記憶媒体特性レポジトリ内に、前記記憶セルのセットに関する前記１つ以上の記憶媒体特性を維持するように構成された、請求項１１に記載の装置。
【請求項１５】
前記設定パラメーターモジュールが、前記ソリッドステート記憶媒体の複数個の異なる記憶セルのセットに関する設定パラメーターを含む、設定パラメーターレポジトリ内に、前記記憶セルのセットに関する前記判定された設定パラメーターを維持するように構成された、請求項１１に記載の装置。
【請求項１６】
前記１つ以上の記憶媒体特性が、前記記憶セルのセットに関するプログラム／消去サイクルの回数、前記記憶セルのセットに関する読み取り回数、前記記憶セルのセットに関する前回の書き込みからの保持時間、前記記憶セルのセットに関する温度、前記記憶セルのセットに関するユースケース、及び前記記憶セルのセットに関するエラー統計のうちの１つ以上を含む、請求項１１に記載の装置。
【請求項１７】
ソリッドステート記憶媒体の有用性を改善するためのシステムであって、前記システムは、
ソリッドステート記憶デバイスであって、前記ソリッドステート記憶デバイスは、ソリッドステート記憶媒体を含む、ソリッドステート記憶デバイスと、
前記ソリッドステート記憶媒体の記憶セルのセットに関する、１つ以上の記憶媒体特性を参照するように構成された、媒体特性モジュールと、
前記１つ以上の記憶媒体特性に基づいて、前記記憶セルのセットに関する設定パラメーターを判定するように構成された、設定パラメーターモジュールと、
前記判定された設定パラメーターを使用するように、前記記憶セルのセットを設定するように構成された、記憶セル設定モジュールと、
前記ソリッドステート記憶デバイスに対するシャットダウン操作に応答して、前記記憶セルのセットに関する１つ以上の記憶媒体特性を更新するように構成された、特性更新モジュールと
を含む、システム。
【請求項１８】
前記ソリッドステート記憶デバイスと通信するホストデバイスを更に含み、前記媒体特性モジュール、前記設定パラメーターモジュール、及び前記記憶セル設定モジュールのうちの１つ以上の、少なくとも一部分が、前記ソリッドステート記憶デバイスに関するデバイスドライバの一部であり、前記デバイスドライバが、前記ホストデバイス上に設置される、請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソリッドステート記憶媒体に関し、より詳細には、ソリッドステート記憶媒体に関する設定パラメーターに関する。
なお、本出願は、米国特許出願第１３／０１５，４５８号、表題「ＡＰＰＡＲＡＴＵＳ，ＳＹＳＴＥＭ，ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＤＥＴＥＲＭＩＮＩＮＧ  Ａ  ＲＥＡＤ  ＶＯＬＴＡＧＥ  ＴＨＲＥＳＨＯＬＤ」（２０１１年１月２７日出願、Ｊｏｈｎ  Ｓｔｒａｓｓｅｒら）、及び同第１３／１７５，６３７号、表題「ＡＰＰＡＲＡＴＵＳ，ＳＹＳＴＥＭ，ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＵＳＩＮＧ  ＭＵＬＴＩ−ＬＥＶＥＬ  ＣＥＬＬ  ＳＴＯＲＡＧＥ  ＩＮ  Ａ  ＳＩＮＧＬＥ−ＬＥＶＥＬ  ＣＥＬＬ  ＭＯＤＥ」（２０１１年７月１日出願、Ｒｏｂｅｒｔ  Ｗｏｏｄら）の優先権を主張し、その双方は、参照により本明細書に組み込まれる。米国特許出願第１３／０１５，４５８号は、米国特許仮出願第６１／２９８，８６１号、表題「ＡＰＰＡＲＡＴＵＳ，ＳＹＳＴＥＭ，ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＤＥＴＥＲＭＩＮＩＮＧ  Ａ  ＲＥＡＤ  ＶＯＬＴＡＧＥ  ＴＨＲＥＳＨＯＬＤ  ＦＯＲ  ＳＯＬＩＤ−ＳＴＡＴＥ  ＳＴＯＲＡＧＥ  ＭＥＤＩＡ」（２０１０年１月２７日出願、Ｊｏｈｎ  Ｓｔｒａｓｓｅｒら）、及び同第６１／３０５，２０５号、表題「ＡＰＰＡＲＡＴＵＳ，ＳＹＳＴＥＭ，ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＤＥＴＥＲＭＩＮＩＮＧ  Ａ  ＲＥＡＤ  ＶＯＬＴＡＧＥ  ＴＨＲＥＳＨＯＬＤ  ＦＯＲ  ＳＯＬＩＤ−ＳＴＡＴＥ  ＳＴＯＲＡＧＥ  ＭＥＤＩＡ」（２０１０年２月１７日出願、Ｊｏｈｎ  Ｓｔｒａｓｓｅｒら）の優先権を主張し、その双方は、参照により本明細書に組み込まれる。
【背景技術】
【０００２】
多くのソリッドステート記憶デバイスは、記憶セルが記憶することができる種々のバイナリ値を、記憶セルの読み取り電圧レベルに基づいて、記憶セルの固有抵抗に基づいて、又は記憶セルの別の設定パラメーターに基づいて区別する。ソリッドステート記憶デバイスは、１つ以上の読み取り電圧閾値、固有抵抗閾値などを使用して、記憶セル内に記憶することができる離散値を分離することができる。
【０００３】
しかしながら、記憶セルに関する閾値又は他の設定パラメーターは、時間と共に推移する場合がある。例えば、記憶セルの損傷、記憶セルのリーク、温度、及び記憶セルに対する他の外乱が、記憶セルに関する閾値を変更し、その記憶セルに関して、種々の設定パラメーターを、より最適なものにする場合がある。リーク及び他の外乱の割合はまた、記憶セルが長期的に使用されるにつれて、経時的に増大する可能性もある。記憶セルの読み取り電圧レベル又は他の設定パラメーターが、その記憶セルに関する閾値を超えて推移する場合には、記憶セルから読み取られるデータの値が、その記憶セルに書き込まれたデータの値とは異なるため、データエラーが発生する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の論考から、ソリッドステート記憶媒体の有用性を改善する装置、システム、及び方法に対する必要性が存在することが、明らかであるはずである。有利には、そのような装置、システム、及び方法は、ソリッドステート記憶媒体に関する１つ以上の設定パラメーターを判定して、その設定パラメーターを最適化することによって、ソリッドステート記憶媒体の有用性を改善する。
【課題を解決するための手段】
【０００５】
本発明は、当該技術分野の現況に応えて、具体的には、現在利用可能なソリッドステート記憶デバイスによって未だ完全には解決されていない、当該技術分野における問題点及び必要性に応えて開発されている。したがって、本発明は、当該技術分野における上述の短所の多くを、又は全てを克服する、ソリッドステート記憶媒体の有用性を改善するための装置、システム、及び方法を提供するために開発されている。
【０００６】
本発明の方法は、ソリッドステート記憶媒体の有用性を改善するために提示される。一実施形態では、本方法は、ソリッドステート記憶媒体の記憶セルのセットに関する、１つ以上の記憶媒体特性を参照することを含む。本方法は、更なる実施形態では、１つ以上の記憶媒体特性に基づいて、記憶セルのセットに関する設定パラメーターを判定することを含む。別の実施形態では、本方法は、判定された設定パラメーターを使用するように、記憶セルのセットを設定することを含む。
【０００７】
一実施形態では、本方法は、更新イベントに応答して、記憶セルのセットに関する１つ以上の記憶媒体特性を更新することを含む。更なる実施形態では、更新イベントは、記憶セルのセットを含むソリッドステート記憶媒体の、バックグラウンドスキャンを含む。別の実施形態では、更新イベントは、記憶セルのセットに対する読み取り要求を含む。更なる実施形態では、更新イベントは、記憶セルのセットの隣接記憶セルに対する読み取り要求を含み得る。別の実施形態では、更新イベントは、記憶セルのセットを含むデバイスに対する起動操作を含む。更なる実施形態では、更新イベントは、記憶セルのセットを含むデバイスに対するシャットダウン操作を含む。別の実施形態では、更新イベントは、記憶セルのセットに対するガベージコレクション操作を含む。
【０００８】
一実施形態では、本方法は、１つ以上の記憶媒体特性の変化に応答して、記憶セルのセットに関する設定パラメーターを更新することを含む。別の実施形態では、本方法は、ソリッドステート記憶媒体の複数個の異なる記憶セルのセットに関する、複数個の追加的設定パラメーターを判定することを含む。複数個の追加的設定パラメーターは、一実施形態では、複数個の異なる記憶セルのセットに関する記憶媒体特性に基づく。本方法は、更なる実施形態では、複数個の追加的設定パラメーターを使用するように、複数個の異なる記憶セルのセットを設定することを含む。
【０００９】
一実施形態では、設定パラメーターは、インターフェースを経由して修正可能である、記憶セルのセットのパラメーターを含む。更なる実施形態では、設定パラメーターは、読み取り電圧を含む。別の実施形態では、設定パラメーターは、増加型ステップパルスプログラミング操作に関する、ステップの大きさを含む。異なる実施形態では、設定パラメーターは、増加型ステップパルスプログラミング操作に関する、反復の最大数を含む。更なる実施形態では、設定パラメーターは、プログラム操作に関する、プログラム検証閾値を含む。更なる実施形態では、設定パラメーターは、増加型ステップパルスプログラミング操作に関する、初期バイアスを含む。別の実施形態では、設定パラメーターは、増加型ステップパルス消去操作に関する、ステップの大きさを含む。更なる実施形態では、設定パラメーターは、増加型ステップパルス消去操作に関する、反復の最大数を含む。更なる実施形態では、設定パラメーターは、消去操作に関する、消去検証閾値を含む。別の実施形態では、設定パラメーターは、増加型ステップパルス消去操作に関する、初期バイアスを含む。
【００１０】
一実施形態では、判定された設定パラメーターを使用するように、記憶セルのセットを設定することは、トリガーに応答する。更なる実施形態では、トリガーは、１つ以上の記憶媒体特性の変化を含む。別の実施形態では、トリガーは、記憶セルのセットに対する読み取り要求を含む。更なる実施形態では、トリガーは、記憶セルのセットを含むデバイスに対する起動操作を含む。更なる実施形態では、トリガーは、記憶セルのセットを含むデバイスに対する通常シャットダウン操作を含む。
【００１１】
一実施形態では、記憶媒体特性は、記憶セルのセットに関するプログラム／消去サイクルの回数を含む。別の実施形態では、記憶媒体特性は、記憶セルのセットに関する読み取り回数を含む。更なる実施形態では、記憶媒体特性は、記憶セルのセットに関する、前回の書き込みからの保持時間を含む。更なる実施形態では、記憶媒体特性は、記憶セルのセットに関する温度を含む。特定の実施形態では、記憶媒体特性は、記憶セルのセットに関するユースケースを含む。別の実施形態では、記憶媒体特性は、記憶セルのセットに関するエラー統計を含む。
【００１２】
一実施形態では、判定される設定パラメーターは、記憶セルの標的セットに基づく。更なる実施形態では、記憶セルの標的セットは、制御された使用特性を有する。別の実施形態では、記憶セルのセットに関して判定される設定パラメーターは、記憶セルの標的セットに関して判定される設定パラメーターに基づく。記憶セルのセットに関して判定される設定パラメーターは、更なる実施形態では、記憶セルの標的セットに関する１つ以上の記憶媒体特性に基づく。
【００１３】
一実施形態では、記憶セルのセットに関する設定パラメーターを判定することは、記憶セルのセットに関する１つ以上の記憶媒体特性と、記憶セルの標的セットに関する１つ以上の記憶媒体特性とを比較することを含む。更なる実施形態では、本方法は、記憶セルのセットに関する少なくとも１つの記憶媒体特性と、記憶セルの標的セットに関する少なくとも１つの記憶媒体特性との差異に基づいて、記憶セルのセットに関する設定パラメーターを判定することを含む。
【００１４】
ソリッドステート記憶媒体の有用性を改善するための装置には、ソリッドステート記憶媒体の有用性の改善に必要な工程を機能的に実行するように構成される、複数個のモジュールが提供される。説明される実施形態での、これらのモジュールとしては、媒体特性モジュール、設定パラメーターモジュール、記憶セル設定モジュール、特性更新モジュール、及び設定更新モジュールが挙げられる。
【００１５】
一実施形態では、媒体特性モジュールは、ソリッドステート記憶媒体の記憶セルのセットに関する、１つ以上の記憶媒体特性を参照する。設定パラメーターモジュールは、一実施形態では、１つ以上の記憶媒体特性に基づいて、記憶セルのセットに関する設定パラメーターを判定する。別の実施形態では、記憶セル設定モジュールは、判定された設定パラメーターを使用するように、記憶セルのセットを設定する。
【００１６】
一実施形態では、特性更新モジュールは、更新イベントに応答して、記憶セルのセットに関する１つ以上の記憶媒体特性を更新する。更なる実施形態では、設定更新モジュールは、１つ以上の記憶媒体特性の変化に応答して、記憶セルのセットに関する設定パラメーターを更新する。
【００１７】
一実施形態では、媒体特性モジュールは、記憶媒体特性レポジトリ内に、記憶セルのセットに関する１つ以上の記憶媒体特性を維持する。記憶媒体特性レポジトリは、更なる実施形態では、ソリッドステート記憶媒体の複数個の異なる記憶セルのセットに関する、記憶媒体特性を含む。
【００１８】
一実施形態では、設定パラメーターモジュールは、設定パラメーターレポジトリ内に、記憶セルのセットに関して判定された設定パラメーターを維持する。設定パラメーターレポジトリは、一実施形態では、ソリッドステート記憶媒体の複数個の異なる記憶セルのセットに関する、設定パラメーターを含む。
【００１９】
一実施形態では、記憶媒体特性は、記憶セルのセットに関する、プログラム／消去サイクルの回数を含む。別の実施形態では、記憶媒体特性は、記憶セルのセットに関する、読み取り回数を含む。更なる実施形態では、記憶媒体特性は、記憶セルのセットに関する、前回の書き込みからの保持時間を含む。記憶媒体特性は、更なる実施形態では、記憶セルのセットに関する温度を含む。別の実施形態では、記憶媒体特性は、記憶セルのセットに関する、ユースケースを含む。記憶媒体特性は、一実施形態では、記憶セルのセットに関するエラー統計を含む。
【００２０】
本発明のシステムもまた、ソリッドステート記憶媒体の有用性を改善するために提示される。このシステムは、ソリッドステート記憶媒体を含むソリッドステート記憶デバイスによって具体化することができる。このシステムは、特定の実施形態では、媒体特性モジュール、設定パラメーターモジュール、及び記憶セル設定モジュールを含む。
【００２１】
一実施形態では、媒体特性モジュールは、ソリッドステート記憶媒体の記憶セルのセットに関する、１つ以上の記憶媒体特性を参照する。設定パラメーターモジュールは、更なる実施形態では、１つ以上の記憶媒体特性に基づいて、記憶セルのセットに関する設定パラメーターを判定する。一実施形態では、記憶セル設定モジュールは、判定された設定パラメーターを使用するように、記憶セルのセットを設定する。
【００２２】
一実施形態では、このシステムは、ソリッドステート記憶デバイスと通信するホストデバイスを含む。更なる実施形態では、媒体特性モジュール、設定パラメーターモジュール、及び／又は記憶セル設定モジュールの、少なくとも一部分は、ホストデバイス上に設置される、ソリッドステート記憶デバイスに関するデバイスドライバの一部である。
【００２３】
本明細書の全体を通して、特徴、有利点、又は同様の言語への言及は、全ての特徴及び有利点が、任意の単一の実施形態で実現し得ることを意味するものではない。むしろ、特徴及び有利点に言及する言語は、特定の特徴、有利点、又は特性が、少なくとも１つの実施形態に含まれることを意味することが理解されよう。それゆえ、特徴及び有利点、並びに同様の言語の論考は、本明細書の全体を通して、同一の実施形態に言及する場合もあるが、必ずしもそうではない場合もある。
【００２４】
更には、説明される実施形態の特徴、有利点、及び特性は、任意の好適な方式で組み合わせることができる。当業者には、特定の実施形態の１つ以上の特定の特徴又は有利点を有することなく、本実施形態を実践し得ることが理解されるであろう。他の場合では、全ての実施形態には存在し得ない、更なる特徴及び有利点を、特定の実施形態で認識することができる。
【００２５】
本実施形態のこれらの特徴及び有利点は、以下の説明及び添付図面から、より完全に明らかとなるか、又は以降に記載されるような実施形態の実践によって、理解することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明による、ソリッドステート記憶媒体の有用性を改善するためのシステムの一実施形態を示す、概略ブロック図。
【図２】本発明による、ソリッドステート記憶媒体に関するソリッドステート記憶デバイスコントローラの一実施形態を示す、概略ブロック図。
【図３Ａ】本発明による、ソリッドステート記憶媒体に関する、書き込みデータパイプライン及び読み取りデータパイプラインを有する、ソリッドステート記憶装置コントローラの一実施形態を示す、概略ブロック図。
【図３Ｂ】本発明による、ソリッドステート記憶装置コントローラの別の実施形態を示す、概略ブロック図。
【図４】本発明による、設定モジュールの一実施形態を示す、概略ブロック図。
【図５】本発明による、事前対応設定モジュールの一実施形態を示す、概略ブロック図。
【図６Ａ】本発明による、ソリッドステート記憶媒体の記憶素子のアレイの一実施形態を示す、概略ブロック図。
【図６Ｂ】本発明による、ソリッドステート記憶媒体の記憶素子のアレイの別の実施形態を示す、概略ブロック図。
【図６Ｃ】本発明による、ソリッドステート記憶媒体のマルチレベル記憶セルのセットに関する、設定パラメーターの一実施形態を示す、概略ブロック図。
【図６Ｄ】本発明による、ソリッドステート記憶媒体のマルチレベル記憶セルのセットに関する、調整された設定パラメーターの一実施形態を示す、概略ブロック図。
【図７Ａ】本発明による、媒体特性モジュール及び記憶媒体特性レポジトリの一実施形態を示す、概略ブロック図。
【図７Ｂ】本発明による、記憶媒体特性レポジトリの一実施形態を示す、概略ブロック図。
【図８Ａ】本発明による、設定パラメーターモジュール及び設定パラメーターレポジトリの一実施形態を示す、概略ブロック図。
【図８Ｂ】本発明による、設定パラメーターレポジトリの一実施形態を示す、概略ブロック図。
【図９】本発明による、ソリッドステート記憶媒体の有用性を改善するための方法の一実施形態を示す、概略流れ図。
【図１０】本発明による、ソリッドステート記憶媒体の有用性を改善するための方法の別の実施形態を示す、概略流れ図。
【発明を実施するための形態】
【００２７】
本発明の有利点が容易に理解されるように、本発明のより具体的な説明が、添付図面に示される特定の実施形態を参照することによって与えられる。これらの図面は本発明の典型的な実施形態のみを示し、それゆえ、本発明の範囲を限定しているとは見なすべきではないことを理解して、本発明を、以下の添付図面の使用を介して、更なる特異性及び詳細と共に記載し、説明する。
【００２８】
本明細書で説明される機能単位の多くは、それらの実装の独立性をより具体的に強調するために、モジュールとして表示されている。例えば、モジュールは、カスタムＶＬＳＩ回路若しくはゲートアレイ、論理チップなどの既製の半導体、トランジスタ、又は他の離散的構成要素を含む、ハードウェア回路として実装することができる。モジュールはまた、現場プログラム可能ゲートアレイ、プログラム可能アレイ論理、プログラム可能論理デバイスなどのような、プログラム可能ハードウェアデバイスの形態でも実装することができる。
【００２９】
モジュールはまた、様々なタイプのプロセッサによる実行のための、ソフトウェアの形態でも実装することができる。例えば、識別される、実行可能コードのモジュールは、例えば、オブジェクト、プロシージャ、又は関数として編成することができる、コンピュータ命令の１つ以上の物理ブロック又は論理ブロックを含み得る。それにもかかわらず、識別されるモジュールの実行可能ファイルは、物理的に一体となって位置する必要はなく、種々の場所に記憶される異種の命令を含み得、これらは、論理的に一体となって結合されると、モジュールを構成して、そのモジュールに関する規定の目的を達成する。
【００３０】
実際に、実行可能コードのモジュールは、単一の命令、又は多数の命令とすることができ、更に、幾つかの異なるコードセグメントにわたって、異なるプログラム間で、及び幾つかのメモリデバイスの全体にわたって分散させることができる。同様に、操作データは、本明細書では、モジュール内部で識別して示すことができ、任意の好適な形態で具体化し、任意の好適なタイプのデータ構造内部に編成することができる。操作データは、単一のデータセットとして収集することができ、又は種々の記憶デバイスを含めて、種々の場所にわたって、分散させることができ、また、少なくとも部分的には、単にシステム又はネットワーク上の電気信号として存在することができる。モジュール、又はモジュールの諸部分がソフトウェアの形態で実装される場合は、そのソフトウェア部分は、１つ以上のコンピュータ読み取り可能媒体上に記憶される。
【００３１】
本明細書の全体を通して、「一実施形態」、「実施形態」、又は同様の言語への言及は、実施形態に関連して説明される具体的な特徴、構造、又は特性が、本発明の少なくとも１つの実施形態に含まれることを意味する。それゆえ、本明細書の全体を通して、語句「一実施形態では」、「実施形態では」、又は同様の言語の表現は、全て同一の実施形態に言及する場合もあるが、必ずしもそうではない場合もある。
【００３２】
コンピュータ読み取り可能媒体への言及は、デジタル処理装置メモリデバイス上に機械読み取り可能命令を記憶することが可能な、任意の形態を取ることができる。コンピュータ読み取り可能媒体は、コンパクトディスク、デジタルビデオディスク、磁気テープ、ベルヌーイドライブ、磁気ディスク、パンチカード、フラッシュメモリ、集積回路、又は他のデジタル処理装置メモリデバイスによって、具体化することができる。
【００３３】
更には、本発明の、説明される特徴、構造、又は特性は、１つ以上の実施形態内に、任意の好適な方式で組み合わせることができる。以下の説明では、本発明の実施形態の完全な理解を提供するために、プログラミングの実施例、ソフトウェアモジュール、ユーザー選択、ネットワークトランザクション、データベース問い合わせ、データベース構造、ハードウェアモジュール、ハードウェエア回路、ハードウェアチップなどのような、数多くの具体的な詳細が提供される。しかしながら、当業者には、１つ以上の具体的な詳細を有することなく、又は他の方法、構成要素、材料などを使用して、本発明を実践し得ることが認識されるであろう。他の場合では、本発明の態様を不明瞭にすることを避けるために、周知の構造、材料、又は操作は、詳細に示されず、又は説明されることもない。
【００３４】
本明細書に含まれる概略流れ図は、全般的には、論理流れ図として記載される。したがって、図示される順序、及び表示される工程は、本方法の一実施形態を示すものである。機能、論理、又は効果が、説明される方法の１つ以上の工程、若しくはそれらの工程の諸部分に等価である、他の工程及び方法を想到することができる。更には、採用される形式及びシンボルは、本方法の論理工程を説明するために提供されるものであり、本方法の範囲を限定するものではないことが理解されよう。様々な矢印のタイプ及び線のタイプが、流れ図で採用される場合があるが、それらは、対応する方法の範囲を限定するものではないことが理解されよう。実際に、一部の矢印又は他の結合子は、本方法の論理の流れのみを示すために使用することができる。例えば、矢印は、図示の方法の列挙された工程間の、不特定持続時間の待機期間又は監視期間を示し得る。更には、特定の方法を実施する順序は、対応する図示の工程の順序に厳格に従う場合もあれば、そうではない場合もある。
【００３５】
ソリッドステート記憶システム
図１は、本発明による、ソリッドステート記憶媒体１１０の有用性を改善するためのシステム１００の一実施形態を示す、概略ブロック図である。システム１００は、以下で説明される、ソリッドステート記憶デバイス１０２、ソリッドステート記憶装置コントローラ１０４、書き込みデータパイプライン１０６、読み取りデータパイプライン１０８、ソリッドステート記憶媒体１１０、コンピュータ１１２、クライアント１１４、及びコンピュータネットワーク１１６を含む。
【００３６】
システム１００は、少なくとも１つのソリッドステート記憶デバイス１０２を含む。他の実施形態では、システム１００は、２つ以上のソリッドステート記憶デバイス１０２を含む。各ソリッドステート記憶デバイス１０２は、フラッシュメモリ、ナノランダムアクセスメモリ（「ナノＲＡＭ、すなわちＮＲＡＭ」）、磁気抵抗ＲＡＭ（「ＭＲＡＭ」）、ダイナミックＲＡＭ（「ＤＲＡＭ」）、相変化ＲＡＭ（「ＰＲＡＭ」）、レーストラックメモリ、メモリスタメモリ、ナノ結晶ワイヤーベースのメモリ、シリコン−酸化物ベースのサブ１０ナノメートルプロセスメモリ、グラフェンメモリ、シリコン−酸化物−窒化物−酸化物−シリコン（「ＳＯＮＯＳ」）メモリ、抵抗変化型メモリ（「ＲＲＡＭ」）、プログラム可能金属化セル（「ＰＭＣ」）、導電性ブリッジＲＡＭ（「ＣＢＲＡＭ」）などのような、不揮発性のソリッドステート記憶媒体１１０を含み得る。ソリッドステート記憶デバイス１０２は、図２、図３Ａ、及び図３Ｂに関連して、より詳細に説明される。
【００３７】
ソリッドステート記憶デバイス１０２は、コンピュータネットワーク１１６を通じて１つ以上のクライアント１１４に接続される、コンピュータ１１２内に示される。一実施形態では、ソリッドステート記憶デバイス１０２は、コンピュータ１１２の内部にあり、周辺機器相互接続高速（「ＰＣＩ−ｅ」）バス、シリアルアドバンスドテクノロジーアタッチメント（「シリアルＡＴＡ」）バスなどのような、システム通信バスを使用して接続される。別の実施形態では、ソリッドステート記憶デバイス１０２は、コンピュータ１１２の外部にあり、ユニバーサルシリアルバス（「ＵＳＢ」）接続、米国電気電子技術者協会（「ＩＥＥＥ」）１３９４バス（「ファイアワイヤー」）などのような、外部通信バスを使用して接続される。他の実施形態では、ソリッドステート記憶デバイス１０２は、周辺機器相互接続（「ＰＣＩ」）高速バスなどのような、通信バスを使用して、インフィニバンド若しくはＰＣＩエクスプレスアドバンスドスイッチング（「ＰＣＩｅ−ＡＳ」）などの、外部の電気的バス若しくは光学的バスの拡張、又はバスネットワーキングソリューションを使用して、などで、コンピュータ１１２に接続される。
【００３８】
様々な実施形態では、ソリッドステート記憶デバイス１０２は、デュアルインラインメモリモジュール（「ＤＩＭＭ」）、ドーターカード、又はマイクロモジュールの形態とすることができる。別の実施形態では、ソリッドステート記憶デバイス１０２は、ラック装着ブレード内部の素子である。別の実施形態では、ソリッドステート記憶デバイス１０２は、より高いレベルのアセンブリ（例えば、マザーボード、ラップトップ、グラフィックプロセッサ）上に直接統合されるパッケージ内部に含まれる別の実施形態では、ソリッドステート記憶デバイス１０２を構成する個々の構成要素は、中間パッケージを使用することなく、より高いレベルのアセンブリ上に直接統合される。
【００３９】
ソリッドステート記憶デバイス１０２は、図２、図３Ａ、及び図３Ｂに関連して、以下でより詳細に説明される、１つ以上のソリッドステート記憶装置コントローラ１０４を含み、そのそれぞれが、書き込みデータパイプライン１０６及び読み取りデータパイプライン１０８を含み得、それぞれが、ソリッドステート記憶媒体１１０を含む。全般的には、１つ以上のソリッドステート記憶装置コントローラ１０４は、ソリッドステート記憶媒体１１０の記憶セルに関する設定パラメーターを判定すること、及びその設定パラメーターに従って記憶セルを設定することを含めて、ソリッドステート記憶媒体１１０を管理する。
【００４０】
本明細書で使用するとき、記憶セルのセットに関する設定パラメーターは、インターフェースを経由して修正可能なパラメーターである。このインターフェースは、公知のインターフェース又は独自開発のインターフェースを含み得、記憶セルのセットとのインターフェース又は管理のために使用される、特定のコマンド命令の使用、及び／あるいは特定のパラメーター、レジスタ設定、ドライバ設定、コントローラ設定、コマンド命令シーケンスの特定のセット、又は他の通常のコマンド（汎用コマンド）若しくは設定との差異の使用を含み得る。設定パラメーターは、記憶セルへの書き込み、すなわちプログラミング、記憶セルからの読み取り、記憶セルの消去、記憶セルの管理、記憶セルに関するデバイスドライバ又は記憶装置コントローラの設定などに関連し得る。記憶セルのセットに関する設定パラメーターは、ソリッドステート記憶デバイス１０２に関するデバイスドライバ、ソリッドステート記憶装置コントローラ１０４などに関連し得、そのデバイスドライバ及び／又はソリッドステート記憶装置コントローラ１０４が、記憶セルのセット及び／又はソリッドステート記憶媒体１１０を、どのように使用、管理、及び相互作用するかに関連し得る。
【００４１】
設定パラメーターは、特定の実施形態では、読み取り電圧閾値、固有抵抗閾値、プログラミング閾値、消去閾値、ハードウェアドライバレベル閾値、記憶装置コントローラレベル閾値などのような、１つ以上の閾値を含み得る。設定パラメーターは、ソリッドステート記憶媒体１１０の初期化の間に、ソリッドステート記憶媒体１１０に発行される各コマンドを使用して動的に、又はイベント若しくは時間間隔などのトリガーに応答して、ソリッドステート記憶媒体１１０の動作の間に、一旦設定することができる。ソリッドステート記憶装置コントローラ１０４は、一実施形態では、ソリッドステート記憶媒体１１０の有用性の改善、エラーの低減などのために、ソリッドステート記憶媒体１１０の記憶セルに関する１つ以上の設定パラメーターを、事前対応的に設定する。
【００４２】
システム１００は、ソリッドステート記憶デバイス１０２に接続される、１つ以上のコンピュータ１１２を含む。コンピュータ１１２は、ホスト、サーバ、ストレージエリアネットワーク（「ＳＡＮ」）の記憶装置コントローラ、ワークステーション、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、スーパーコンピュータ、コンピュータクラスター、ネットワークスイッチ、ルーター又は専用機器、データベース又は記憶機器、データ取得又はデータ捕捉システム、診断システム、試験システム、ロボット、携帯用電子デバイス、無線デバイスなどとすることができる。別の実施形態では、コンピュータ１１２は、クライアントとすることができ、ソリッドステート記憶デバイス１０２は、コンピュータ１１２から送られるデータ要求にサービスを提供するように自律的に動作する。この実施形態では、コンピュータ１１２及びソリッドステート記憶デバイス１０２は、コンピュータネットワーク、システムバス、又はコンピュータ１１２と自律的ソリッドステート記憶デバイス１０２との間の接続に好適な他の通信手段を使用して、接続することができる。
【００４３】
一実施形態では、システム１００は、１つ以上のコンピュータネットワーク１１６を通じて、１つ以上のコンピュータ１１２に接続される、１つ以上のクライアント１１４を含む。クライアント１１４は、ホスト、サーバ、ＳＡＮの記憶装置コントローラ、ワークステーション、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、スーパーコンピュータ、コンピュータクラスター、ネットワークスイッチ、ルーター又は専用機器、データベース又は記憶機器、データ取得又はデータ捕捉システム、診断システム、試験システム、ロボット、携帯用電子デバイス、無線デバイスなどとすることができる。コンピュータネットワーク１１６としては、インターネット、広域ネットワーク（「ＷＡＮ」）、都市圏ネットワーク（「ＭＡＮ」）、構内ネットワーク（「ＬＡＮ」）、トークンリング、無線ネットワーク、ファイバーチャネルネットワーク、ＳＡＮ、ネットワーク接続ストレージ（「ＮＡＳ」）、ＥＳＣＯＮなど、又は任意のネットワークの組み合わせを挙げることができる。コンピュータネットワーク１１６としてはまた、ＩＥＥＥ  ８０２系統のネットワーク技術からのネットワーク、そのようなイーサネット、トークンリング、ＷｉＦｉ、ＷｉＭａｘなども挙げることができる。
【００４４】
コンピュータネットワーク１１６としては、サーバ、スイッチ、ルーター、ケーブル布線、ラジオ、及びコンピュータ１１２とクライアント１１４とのネットワーク化を促進するために使用される他の設備機器を挙げることができる。一実施形態では、システム１００は、コンピュータネットワーク１１６を介してピアとして通信する、複数のコンピュータ１１２を含む。別の実施形態では、システム１００は、コンピュータネットワーク１１６を介してピアとして通信する、複数のソリッドステート記憶デバイス１０２を含む。当業者には、１つ以上のクライアント１１４の間に、単一接続若しくは冗長接続を有する、１つ以上のコンピュータネットワーク１１６及び関連機器を含む他のコンピュータネットワーク１１６、あるいは１つ以上のソリッドステート記憶デバイス１０２を有する他のコンピュータ、又は１つ以上のコンピュータ１１２に接続される１つ以上のソリッドステート記憶デバイス１０２が認識されるであろう。一実施形態では、システム１００は、コンピュータ１１２を使用することなく、コンピュータネットワーク１１６を通じてクライアント１１４に接続される２つ以上のソリッドステート記憶デバイス１０２を含む。ソリッドステート記憶装置コントローラ１０４は、特定の実施形態では、コンピュータ１１２のプロセッサから、及び／又はクライアント１１４から、上述のような１つ以上の通信バスを介して、ソリッドステート記憶媒体１１０内の記憶に関する原始データを受信する。
【００４５】
ソリッドステート記憶デバイス
図２は、本発明によるソリッドステート記憶デバイス１０２内の、書き込みデータパイプライン１０６及び読み取りデータパイプライン１０８を含む、ソリッドステート記憶デバイスコントローラ２０２の一実施形態２００を示す概略ブロック図である。ソリッドステート記憶デバイスコントローラ２０２は、ハードウェアとして、ソフトウェアとして、又はハードウェアとソフトウェアとの組み合わせとして、具体化することができる。ソリッドステート記憶デバイスコントローラ２０２は、多数のソリッドステート記憶装置コントローラ０〜Ｎ（１０４ａ〜ｎ）を含み得、それぞれがソリッドステート記憶媒体１１０を制御する。図示の実施形態では、２つのソリッドステートコントローラが示される。ソリッドステートコントローラ０（１０４ａ）及びソリッドステート記憶装置コントローラＮ（１０４ｎ）であり、それぞれが、ソリッドステート記憶媒体１１０ａ〜ｎを制御する。図示の実施形態では、ソリッドステート記憶装置コントローラ０（１０４ａ）は、接続されたソリッドステート記憶媒体１１０ａがデータを記憶するように、データチャネルを制御する。ソリッドステート記憶装置コントローラＮ（１０４ｎ）は、記憶されるデータに関連する索引メタデータチャネルを制御し、関連するソリッドステート記憶媒体１１０ｎが、索引メタデータを記憶する。代替的実施形態では、ソリッドステート記憶デバイスコントローラ２０２は、単一のソリッドステート記憶媒体１１０ａを備える単一のソリッドステートコントローラ１０４ａを含む。別の実施形態では、複数個のソリッドステート記憶装置コントローラ１０４ａ〜ｎ、及び関連するソリッドステート記憶媒体１１０ａ〜ｎが存在する。一実施形態では、１つ以上のソリッドステートコントローラ１０４ａ〜１０４ｎ−１が、それらの関連するソリッドステート記憶媒体１１０ａ〜１１０ｎ−１に結合されて、データを制御する一方で、少なくとも１つのソリッドステート記憶装置コントローラ１０４ｎが、その関連するソリッドステート記憶媒体１１０ｎに結合されて、索引メタデータを制御する。
【００４６】
一実施形態では、少なくとも１つのソリッドステートコントローラ１０４は、現場プログラム可能ゲートアレイ（「ＦＰＧＡ」）を含み、コントローラ機能が、ＦＰＧＡ内にプログラムされる。特定の実施形態では、ＦＰＧＡは、Ｘｉｌｉｎｘ（登録商標）ＦＰＧＡである。別の実施形態では、ソリッドステート記憶装置コントローラ１０４は、特定用途向け集積回路（「ＡＳＩＣ」）又はカスタム論理ソリューションなどの、ソリッドステート記憶装置コントローラ１０４として特定的に設計される構成要素を含む。各ソリッドステート記憶装置コントローラ１０４は、典型的には、図３Ａに関連して更に説明される、書き込みデータパイプライン１０６及び読み取りデータパイプライン１０８を含む。別の実施形態では、少なくとも１つのソリッドステート記憶装置コントローラ１０４は、ＦＰＧＡ、ＡＳＩＣ、及びカスタム論理構成要素の組み合わせで構成される。特定の実施形態では、ソリッドステート記憶装置コントローラ１０４の少なくとも一部分は、コンピュータ１１２に対して実行するデバイスドライバなどに統合されるか、それらの一部であるか、及び／又はそれらと通信する。
【００４７】
ソリッドステート記憶装置
ソリッドステート記憶媒体１１０は、バンク２１４内に配列され、双方向記憶入出力（「Ｉ／Ｏ」）バス２１０を通じて並列にアクセスされる、不揮発性ソリッドステート記憶素子２１６、２１８、２２０のアレイである。記憶Ｉ／Ｏバス２１０は、一実施形態では、いずれの時点でも、単方向通信が可能である。例えば、ソリッドステート記憶媒体１１０にデータが書き込まれている場合、ソリッドステート記憶媒体１１０からデータを読み取ることはできない。別の実施形態では、データは、同時に双方向で流れることができる。しかしながら、双方向とは、データバスに関連して本明細書で使用するとき、一度に一方向のみに流れるデータを有し得るが、双方向データバス上で一方向に流れるデータが停止すると、その双方向データバス上で、データが反対方向に流れることができるデータ経路を指す。
【００４８】
ソリッドステート記憶素子（例えば、ＳＳＳ  ０．０（２１６ａ））は、典型的には、回路基板上のチップ（１つ以上のダイのパッケージ）又はダイとして構成される。図示のように、ソリッドステート記憶素子（例えば、２１６ａ）は、他のソリッドステート記憶素子（例えば、２１８ａ）からは、たとえこれらの幾つかの素子が、チップパッケージ、チップパッケージの積み重ね体、又は何らかの他のパッケージ素子内に一体となってパッケージ化される場合であっても、独立的に、又は半独立的に動作する。図示のように、ソリッドステート記憶素子２１６ａ、２１６ｂ、２１６ｍの行は、バンク２１４として指定される。図示のように、「ｎ」個のバンク２１４ａ〜ｎ、及び１つのバンク当たり「ｍ」個のソリッドステート記憶素子２１６ａ〜ｍ、２１８ａ〜ｍ、２２０ａ〜ｍが、ソリッドステート記憶媒体１１０内の、ｎ×ｍのソリッドステート記憶素子２１６、２１８、２２０のアレイ内に存在し得る。当然ながら、種々の実施形態は、ｎ及びｍに関して種々の値を含み得る。一実施形態では、ソリッドステート記憶媒体１１０ａは、８つのバンク２１４を有して、１つのバンク２１４当たり２０個のソリッドステート記憶素子２１６、２１８、２２０を含む。一実施形態では、ソリッドステート記憶媒体１１０ａは、８つのバンク２１４を有して、１つのバンク２１４当たり２４個のソリッドステート記憶素子２１６、２１８、２２０を含む。ｎ×ｍの記憶素子２１６、２１８、２２０に加えて、１つ以上の追加的な列（Ｐ）もまた、１つ以上の行に関する他のソリッドステート記憶素子２１６ａ、２１６ｂ、２１６ｍと並列に、アドレス指定し、操作することができる。追加されるＰ列は、一実施形態では、特定のバンクに関するｍ個の記憶素子を範囲とするＥＣＣチャンク（すなわち、ＥＣＣ符号語）の部分に対する、パリティデータを記憶する。一実施形態では、各ソリッドステート記憶素子２１６、２１８、２２０は、シングルレベルセル（「ＳＬＣ」）のデバイスから構成される。別の実施形態では、各ソリッドステート記憶素子２１６、２１８、２２０は、マルチレベルセル（「ＭＬＣ」）のデバイスから構成される。
【００４９】
一実施形態では、共通の記憶Ｉ／Ｏバス２１０ａを共有する、ソリッドステート記憶素子（例えば、２１６ｂ、２１８ｂ、２２０ｂ）は、一体となってパッケージ化される。一実施形態では、ソリッドステート記憶素子２１６、２１８、２２０は、１つ以上のチップが垂直に積み重ねられた状態で、１つのチップ当たり１つ以上のダイを有し得、各ダイには、独立してアクセスすることができる。別の実施形態では、ソリッドステート記憶素子（例えば、ＳＳＳ  ０．０（２１６ａ））は、１つのダイ当たり１つ以上の仮想ダイ、及び１つのチップ当たり１つ以上のダイ、及び垂直に積み重ねられた１つ以上のチップを有し得、各仮想ダイには、独立してアクセスすることができる。別の実施形態では、ソリッドステート記憶素子ＳＳＳ  ０．０（２１６ａ）は、１つのダイ当たり１つ以上の仮想ダイ、及び１つのチップ当たり１つ以上のダイを、それら１つ以上のダイのうちの一部又は全てが垂直に積み重ねられた状態で有し得、各仮想ダイには、独立してアクセスすることができる。
【００５０】
一実施形態では、２つのダイが垂直に積み重ねられ、１グループ当たり４つの積み重ねを有して、８つの記憶素子（例えば、ＳＳＳ  ０．０〜ＳＳＳ  ８．０）２１６ａ〜２２０ａを形成し、それぞれが、別個のバンク２１４ａ〜ｎ内にある。別の実施形態では、２４個の記憶素子（例えば、ＳＳＳ  ０．０〜ＳＳＳ  ０．２４）２１６が、論理バンク２１４ａを形成することにより、８つの論理バンクのそれぞれは、２４個の記憶素子（例えば、ＳＳＳ  ０．０〜ＳＳＳ  ８．２４）２１６、２１８、２２０を有する。データは、ソリッドステート記憶媒体１１０へ、記憶Ｉ／Ｏバス２１０を介して、特定のグループの記憶素子（ＳＳＳ  ０．０〜ＳＳＳ  ８．０）２１６ａ、２１８ａ、２２０ａの全ての記憶素子へ送られる。記憶制御バス２１２ａを使用して、特定のバンク（例えば、バンク０（２１４ａ））を選択することにより、全てのバンク２１４に接続された記憶Ｉ／Ｏバス２１０を介して受信されるデータは、選択されたバンク２１４ａにのみ書き込まれる。
【００５１】
特定の実施形態では、記憶制御バス２１２及び記憶Ｉ／Ｏバス２１０は、ソリッドステートコントローラ１０４によって共に使用され、アドレス指定情報、記憶素子コマンド情報、及び記憶されるデータを通信する。当業者には、このアドレス、データ、及びコマンド情報は、これらのバス２１２、２１０の一方、若しくは他方を使用して、又は制御情報の各タイプに関して別個のバスを使用して、通信し得ることが認識されよう。一実施形態では、アドレス指定情報、記憶素子コマンド情報、及び記憶データは、記憶Ｉ／Ｏバス２１０上を移動し、記憶制御バス２１２は、バンクを作動させるため、並びに記憶Ｉ／Ｏバス２１０のライン上のデータが、アドレス指定情報、記憶素子コマンド情報、又は記憶データを構成するか否かを識別するための信号を搬送する。
【００５２】
例えば、「コマンド有効」などの、記憶制御バス２１２上の制御信号は、記憶Ｉ／Ｏバス２１０のライン上のデータが、プログラム、消去、リセット、読み取りなどのような、記憶素子コマンドであることを指示し得る。「アドレス有効」などの、記憶制御バス２１２上の制御信号は、記憶Ｉ／Ｏバス２１０のライン上のデータが、消去ブロック識別子、ページ識別子、及び任意選択的な、特定の記憶素子内部のページ内部でのオフセットなどの、アドレス指定情報であることを指示し得る。最終的に、「コマンド有効」及び「アドレス有効」の双方に関する、記憶制御バス２１２上の制御信号の不在は、記憶Ｉ／Ｏバス２１０のライン上のデータが、前回アドレス指定された、消去ブロック、物理ページ、及び任意選択的な、特定の記憶素子のページ内部でのオフセットで、記憶素子上に記憶される、記憶データであることを指示し得る。
【００５３】
一実施形態では、記憶Ｉ／Ｏバス２１０は、１つ以上の独立Ｉ／Ｏバス（２１０ａ．ａ〜ｍ、２１０ｎ．ａ〜ｍを含む、「ＩＩＯＢａ〜ｍ」）から構成され、各列の内部のソリッドステート記憶素子は、独立Ｉ／Ｏバスの１つを共有し、これらの独立Ｉ／Ｏバスは、各ソリッドステート記憶素子２１６、２１８、２２０に並列にアクセスすることにより、全てのバンク２１４が同時にアクセスされる。例えば、記憶Ｉ／Ｏバス２１０の１つのチャネルは、各バンク２１４ａ〜ｎの、第１のソリッドステート記憶素子２１６ａ、２１８ａ、２２０ａに同時にアクセスすることができる。記憶Ｉ／Ｏバス２１０の第２のチャネルは、各バンク２１４ａ〜ｎの、第２のソリッドステート記憶素子２１６ｂ、２１８ｂ、２２０ｂに同時にアクセスすることができる。ソリッドステート記憶素子２１６ａ、２１６ｂ、２１６ｍの各行は、同時にアクセスされる。一実施形態では、ソリッドステート記憶素子２１６、２１８、２２０は、マルチレベル（物理的に積み重ねられた）であり、ソリッドステート記憶素子２１６、２１８、２２０の全ての物理レベルは、同時にアクセスされる。本明細書で使用するとき、「同時に」とは、ほぼ同時のアクセスもまた包含し、この場合、スイッチングノイズを回避するために、デバイスは若干異なる間隔でアクセスされる。同時に、とは、この文脈で使用され、コマンド及び／又はデータが独立して次々に送られる、順次アクセス又は直列アクセスからは区別される。
【００５４】
典型的には、バンク２１４ａ〜ｎは、記憶制御バス２１２を使用して、独立して選択される。一実施形態では、バンク２１４は、チップ有効又はチップ選択を使用して選択される。チップ選択及びチップ有効の双方が利用可能である場合は、記憶制御バス２１２は、マルチレベルソリッドステート記憶素子２１６、２１８、２２０の、１つのレベルを選択することができる。他の実施形態では、他のコマンドが、記憶制御バス２１２によって使用され、マルチレベルソリッドステート記憶素子２１６、２１８、２２０の、１つのレベルが独立して選択される。ソリッドステート記憶素子２１６、２１８、２２０はまた、記憶Ｉ／Ｏバス２１０及び記憶制御バス２１２上に送信される、制御情報とアドレス情報との組み合わせを通じて、選択することもできる。
【００５５】
一実施形態では、各ソリッドステート記憶素子２１６、２１８、２２０は、消去ブロックへと区分化され、各消去ブロックは、ページへと区分化される。ソリッドステート記憶素子２１６、２１８、２２０上の消去ブロックは、物理消去ブロック又は「ＰＥＢ」と称することができる。典型的なページは、２０００バイト（「２ｋＢ」）である。一実施例では、ソリッドステート記憶素子（例えば、ＳＳＳ  ０．０）は、２つのレジスタを含み、２つのページをプログラムすることにより、２つのレジスタのソリッドステート記憶素子２１６、２１８、２２０は、４ｋＢの容量を有し得る。２０個のソリッドステート記憶素子２１６ａ、２１６ｂ、２１６ｍのバンク２１４は、この場合、記憶Ｉ／Ｏバス２１０のチャネルから出る同一アドレスを使用してアクセスされる、８０ｋＢの容量のページを有する。
【００５６】
この８０ｋＢの、ソリッドステート記憶素子２１６ａ、２１６ｂ、２１６ｍのバンク２１４内のページのグループは、論理ページ又は仮想ページと称することができる。同様に、バンク２１４ａの各記憶素子２１６ａ〜ｍの消去ブロックをグループ化して、論理消去ブロック又は仮想消去ブロックを形成することができる。一実施形態では、ソリッドステート記憶素子２１６、２１８、２２０内部のページの消去ブロックは、消去コマンドがソリッドステート記憶素子２１６、２１８、２２０内部に受信される場合に消去される。ソリッドステート記憶素子２１６、２１８、２２０内部の消去ブロック、ページ、プレーン、あるいは他の論理区画及び物理区画のサイズ並びに数は、時が経過するにつれて、技術の進歩と共に変化することが予測されるが、新たな構成と一致する多くの実施形態が可能であり、本明細書の全般的な説明と一致することが予測される。
【００５７】
典型的には、ソリッドステート記憶素子２１６、２１８、２２０内部の特定の場所にパケットが書き込まれ、そのパケットが、特定のバンクの特定の記憶素子の特定の物理消去ブロックに特有である、特定のページ内部の場所に書き込まれることが意図される場合、物理アドレスが記憶Ｉ／Ｏバス２１０上に送られ、その後にパケットが続く。この物理アドレスには、ソリッドステート記憶素子２１６、２１８、２２０が、そのパケットを、ページ内部の指定された場所へ向かわせるための、十分な情報が含まれる。記憶素子の列内の全ての記憶素子（例えば、ＳＳＳ  ０．０〜ＳＳＳ  Ｎ．０（２１６ａ、２１８ａ、２２０ａ））は、記憶Ｉ／Ｏバス内部の適切なバス２１０ａ．ａによって同時にアクセスされるため、適切なページに到達し、記憶素子の列（ＳＳＳ  ０．０〜ＳＳＳ  Ｎ．０（２１６ａ、２１８ａ、２２０ａ））内の同様にアドレス指定されたページにパケットが書き込まれることを避けるためには、データパケットが書き込まれるべき正しいページを有するソリッドステート記憶素子ＳＳＳ  ０．０（２１６ａ）を含むバンク２１４ａが、記憶制御バス２１２によって同時に選択される。
【００５８】
同様に、記憶Ｉ／Ｏバス２１０上の読み取りコマンドを履行することは、単一のバンク２１４ａ、及びそのバンク２１４ａ内部の適切なページを選択するための、記憶制御バス２１２上の同時信号を必要とする。一実施形態では、読み取りコマンドは、ページ全体を読み取り、またバンク２１４内には、複数のソリッドステート記憶素子２１６ａ、２１６ｂ、２１６ｍが並列して存在するため、読み取りコマンドで、論理ページ全体が読み取られる。しかしながら、読み取りコマンドは、バンクインターリーブに関連して以下で説明されるように、サブコマンドへと分解することができる。論理ページはまた、書き込み操作でもアクセスすることができる。
【００５９】
消去ブロック消去コマンドは、特定の消去ブロックを消去するための、特定の消去ブロックアドレスを使用して、記憶Ｉ／Ｏバス２１０を介して、消去ブロックを消去するように送り出すことができる。典型的には、消去ブロック消去コマンドは、記憶Ｉ／Ｏバス２１０の並列パスを介して、論理消去ブロックを消去するために送られ、それぞれが、特定の消去ブロックを消去するための、特定の消去ブロックアドレスを有する。同時に、記憶制御バス２１２を介して、特定のバンク（例えば、バンク０（２１４ａ））が選択され、全てのバンク（バンク１〜Ｎ（２１４ｂ〜ｎ）内の同様にアドレス指定された消去ブロックが消去されることを防ぐ。あるいは、記憶制御バス２１２を介して、特定のバンク（例えば、バンク０（２１４ａ））が選択されないことにより、全てのバンク（バンク１〜Ｎ（２１４ｂ〜ｎ）内の同様にアドレス指定された消去ブロックを、同時に消去することが可能になる。他のコマンドもまた、記憶Ｉ／Ｏバス２１０と記憶制御バス２１２との組み合わせを使用して、特定の場所に送ることができる。当業者には、双方向記憶Ｉ／Ｏバス２１０及び記憶制御バス２１２を使用して、特定の記憶場所を選択するための、他の方法が認識されるであろう。
【００６０】
一実施形態では、パケットは、ソリッドステート記憶媒体１１０に、順次書き込まれる。例えば、パケットは、記憶素子２１６のバンク２１４ａの記憶書き込みバッファに流されて、このバッファが一杯になると、指定された論理ページに、パケットがプログラムされる。次いで、パケットが記憶書き込みバッファを再充填して、一杯になると、次の論理ページに、パケットが書き込まれる。次の論理ページは、同一のバンク２１４ａ、又は別のバンク（例えば、２１４ｂ）内に存在し得る。このプロセスは、論理ページから論理ページへと次々に、典型的には論理消去ブロック（「ＬＥＢ」）が一杯になるまで、継続する。別の実施形態では、このストリーミングは、プロセスの継続と共に、論理消去ブロックの境界を横断して、論理消去ブロックから論理消去ブロックへと次々に継続することができる。
【００６１】
読み取り、修正、書き込み操作では、要求データに関連するデータパケットが検索され、読み取り操作で読み取られる。修正された、修正要求データのデータセグメントは、それらが読み取られる場所には書き込まれない。その代わりに、修正データセグメントは、データパケットに再び変換され、次いで、現時点で書き込まれている論理ページ内の、次の利用可能な場所に順次書き込まれる。それぞれのデータパケットに関する索引項目は、修正データセグメントを含むパケットを指すように修正される。同一の要求データに関連する、修正されていないデータパケットに関する索引内の項目は、未修正データパケットの元の場所に対するポインタを含むことになる。それゆえ、元の要求データが維持される場合には、例えば、前バージョンの要求データを維持するために、元の要求データは、元から書き込まれている全てのデータパケットに対するポインタを索引内に有することになる。新たな要求データは、一部の元のデータパケットに対する、索引内のポインタと、現時点で書き込まれている、論理ページ内の修正データパケットに対するポインタとを有することになる。
【００６２】
コピー操作では、索引は、ソリッドステート記憶媒体１１０内に記憶された数多くのパケットにマップされる、元の要求データに関する項目を含む。コピーが作成される場合、要求データの新たなコピーが作り出され、その要求データの新たなコピーを元のパケットにマップする、新たな項目が索引内に作り出される。要求データの新たなコピーはまた、ソリッドステート記憶媒体１１０に書き込まれ、その場所が、索引内の新たな項目にマップされる。要求データパケットの新たなコピーは、要求データのコピーに伝搬していない変更が、元の要求データ内に加えられており、索引が失われるか又は破損している場合に参照される、元の要求データ内部のパケットを識別するために、使用することができる。
【００６３】
有利には、順次書き込みパケットは、より均等なソリッドステート記憶媒体１１０の使用を促進し、ソリッド記憶デバイスコントローラ２０２が、記憶ホットスポットを監視して、ソリッドステート記憶媒体１１０内の様々な論理ページの使用を均等にすることを可能にする。順次書き込みパケットはまた、以下で詳細に説明される、強力で効率的なガベージコレクションシステムも促進する。当業者には、データパケットの順次記憶の他の利益が認識されるであろう。
【００６４】
ソリッドステート記憶デバイスコントローラ
様々な実施形態では、ソリッドステート記憶デバイスコントローラ２０２はまた、以下で説明される、データバス２０４、ローカルバス２０６、バッファコントローラ２０８、バッファ０〜Ｎ（２２２ａ〜ｎ）、マスターコントローラ２２４、ダイレクトメモリアクセス（「ＤＭＡ」）コントローラ２２６、メモリコントローラ２２８、ダイナミックメモリアレイ２３０、スタティックランダムメモリアレイ２３２、管理コントローラ２３４、管理バス２３６、システムバス２４０へのブリッジ２３８、及びその他の論理２４２も含む。他の実施形態では、システムバス２４０は、以下で説明される、リモートＤＭＡ（「ＲＤＭＡ」）コントローラ２４６を一部が含み得る１つ以上のネットワークインターフェースカード（「ＮＩＣ」）２４４、１つ以上の中央処理装置（「ＣＰＵ」）２４８、１つ以上の外部メモリコントローラ２５０及び関連する外部メモリアレイ２５２、１つ以上の記憶装置コントローラ２５４、ピアコントローラ２５６、並びに特定用途向けプロセッサ２５８に結合される。システムバス２４０に接続される構成要素２４４〜２５８は、コンピュータ１１２内に位置することができ、又は他のデバイスとすることもできる。
【００６５】
典型的には、ソリッドステート記憶装置コントローラ１０４は、記憶Ｉ／Ｏバス２１０を介して、ソリッドステート記憶媒体１１０にデータを通信する。ソリッドステート記憶装置が、バンク２１４内に配列され、各バンク２１４が、並列にアクセスされる複数の記憶素子２１６ａ、２１６ｂ、２１６ｍを含む、典型的な実施形態では、記憶Ｉ／Ｏバス２１０は、バスのアレイであり、１つのバスは、複数のバンク２１４を範囲とする、記憶素子２１６、２１８、２２０の各列に関するものである。本明細書で使用するとき、用語「記憶Ｉ／Ｏバス」とは、１つのＩ／Ｏバス２１０、又はデータ非依存性バスのアレイ２０４を指す場合がある。一実施形態では、記憶素子の列（例えば、２１６ａ、２１８ａ、２２０ａ）にアクセスする各記憶Ｉ／Ｏバス２１０は、記憶素子の列２１６ａ、２１８ａ、２２０ａ内でアクセスされる記憶区画（例えば、消去ブロック）に関する、論理から物理へのマッピングを含み得る。このマッピング（又は不良ブロック再マッピング）により、記憶区画の物理アドレスに対してマップされる論理アドレスは、最初の記憶区画が障害を起こすか、部分的に障害を起こすか、アクセス不能となるか、又は何らかの他の問題を有する場合には、異なる記憶区画に再マップすることが可能になる。
【００６６】
データはまた、要求デバイス１５５から、システムバス２４０、ブリッジ２３８、ローカルバス２０６、バッファ２２２を通り、最終的にはデータバス２０４を介して、ソリッドステート記憶装置コントローラ１０４に通信することもできる。データバス２０４は、典型的には、バッファコントローラ２０８で制御される、１つ以上のバッファ２２２ａ〜ｎに接続される。バッファコントローラ２０８は、典型的には、ローカルバス２０６からバッファ２２２への、並びにデータバス２０４を通り、パイプラインの入力バッファ３０６及び出力バッファ３３０への、データの転送を制御する。バッファコントローラ２０８は、典型的には、種々のクロックドメインに配慮するため、データの衝突を防ぐためなどに、要求デバイスから到着したデータが、バッファ２２２内に一時的に記憶され、次いでデータバス２０４上に転送され得る方式、又はその逆の方式も同様に制御する。バッファコントローラ２０８は、典型的には、マスターコントローラ２２４と協働して、データの流れを調整する。データが到着する際、データは、システムバス２４０上に到着して、ブリッジ２３８を通じてローカルバス２０６へと転送されることになる。
【００６７】
典型的には、データは、マスターコントローラ２２４及びバッファコントローラ２０８によって方向付けられて、ローカルバス２０６から、１つ以上のデータバッファ２２２へと転送される。次いでデータは、バッファ２２２から、データバス２０４へ出て、ソリッドステートコントローラ１０４を通り、ＮＡＮＤフラッシュ又は他の記憶媒体などの、ソリッドステート記憶媒体１１０上へと流れる。一実施形態では、データ、及びそのデータと共に到着する関連する帯域外メタデータ（「メタデータ」）は、１つ以上のソリッドステート記憶装置コントローラ１０４ａ〜１０４ｎ−１及び関連するソリッドステート記憶媒体１１０ａ〜１１０ｎ−１を含む、１つ以上のデータチャネルを使用して通信され、その一方で、少なくとも１つのチャネル（ソリッドステート記憶装置コントローラ１０４ｎ、ソリッドステート記憶媒体１１０ｎ）は、索引情報、及びソリッドステート記憶デバイス１０２の内部で生成される他のメタデータなどの、帯域内メタデータに専用である。
【００６８】
ローカルバス２０６は、典型的には、ソリッドステート記憶デバイスコントローラ２０２の内部のデバイス間、及びソリッドステート記憶デバイス１０２の内部のデバイスと、システムバス２４０に接続されるデバイス２４４〜２５８との間の、データ及びコマンドの通信を可能にする、双方向バス又はバスのセットである。ブリッジ２３８は、ローカルバス２０６とシステムバス２４０との間の通信を促進する。当業者には、リング構造又は切り換え星形構成などの、他の実施形態、並びにバス２４０、２０６、２０４、２１０、及びブリッジ２３８の機能が認識されるであろう。
【００６９】
システムバス２４０は、典型的には、ソリッドステート記憶デバイス１０２が設置若しくは接続される、コンピュータ１１２又は他のデバイスのバスである。一実施形態では、システムバス２４０は、ＰＣＩ−ｅバス、シリアルアドバンスドテクノロジーアタッチメント（「シリアルＡＴＡ」）バス、パラレルＡＴＡなどとすることができる。別の実施形態では、システムバス２４０は、小型コンピュータシステムインターフェース（「ＳＣＳＩ」）、ファイアワイヤー、ファイバーチャネル、ＵＳＢ、ＰＣＩｅ−ＡＳなどのような、外部バスである。ソリッドステート記憶デバイス１０２は、デバイスの内部に適合するように、又は外部接続デバイスとして、パッケージ化することができる。
【００７０】
ソリッドステート記憶デバイスコントローラ２０２は、ソリッドステート記憶デバイス１０２内部の、より高いレベルの機能を制御するマスターコントローラ２２４を含む。マスターコントローラ２２４は、様々な実施形態では、オブジェクト要求及び他の要求を解釈することによってデータの流れを制御し、索引の作成を指示して、データに関連するオブジェクト識別子を、関連データの物理的な場所にマップし、ＤＭＡ要求を調整することなどを行なう。本明細書で説明される機能の多くが、マスターコントローラ２２４によって、完全に、又は部分的に制御される。
【００７１】
一実施形態では、マスターコントローラ２２４は、埋め込み型コントローラを使用する。別の実施形態では、マスターコントローラ２２４は、ダイナミックメモリアレイ２３０（ダイナミックランダムアクセスメモリ「ＤＲＡＭ」）、スタティックメモリアレイ２３２（スタティックランダムアクセスメモリ「ＳＲＡＭ」）などのようなローカルメモリを使用する。一実施形態では、このローカルメモリは、マスターコントローラ２２４を使用して制御される。別の実施形態では、マスターコントローラ２２４は、メモリコントローラ２２８を介して、ローカルメモリにアクセスする。別の実施形態では、マスターコントローラ２２４は、Ｌｉｎｕｘサーバを走らせ、ワールドワイドウェブ、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）などのような様々な共通のサーバインターフェースに対応することができる。別の実施形態では、マスターコントローラ２２４は、ナノプロセッサを使用する。マスターコントローラ２２４は、プログラム可能論理、若しくは標準論理を使用して、又は上述のコントローラのタイプの任意の組み合わせを使用して構築することができる。マスターコントローラ２２４は、ハードウェアとして、ソフトウェアとして、又はハードウェアとソフトウェアとの組み合わせとして、具体化することができる。当業者には、マスターコントローラ２２４に関する多くの実施形態が認識されるであろう。
【００７２】
一実施形態では、記憶デバイス／ソリッドステート記憶デバイスコントローラ２０２が、複数のデータ記憶デバイス／ソリッドステート記憶媒体１１０ａ〜ｎを管理する場合は、マスターコントローラ２２４は、ソリッドステート記憶装置コントローラ１０４ａ〜ｎなどの内部コントローラの間に、作業負荷を分割する例えば、マスターコントローラ２２４が、データ記憶デバイス（例えば、ソリッドステート記憶媒体１１０ａ〜ｎ）に書き込むべきオブジェクトを分割することにより、接続された各データ記憶デバイス上に、そのオブジェクトの一部分を記憶させることができる。この特徴は、より迅速な記憶、及びより迅速なオブジェクトへのアクセスを可能にする、性能強化である。一実施形態では、マスターコントローラ２２４は、ＦＰＧＡを使用して実装される。別の実施形態では、マスターコントローラ２２４内部のファームウェアを、管理バス２３６を通じて、ＮＩＣ  ２４４に接続されるネットワークを介したシステムバス２４０を通じて、又はシステムバス２４０に接続される他のデバイスを通じて、更新することができる。
【００７３】
一実施形態では、オブジェクトを管理するマスターコントローラ２２４が、ブロック記憶装置をエミュレートすることにより、記憶デバイス／ソリッドステート記憶デバイス１０２に接続される、コンピュータ１１２又は他のデバイスは、記憶デバイス／ソリッドステート記憶デバイス１０２を、ブロック記憶デバイスとして見なし、記憶デバイス／ソリッドステート記憶デバイス１０２内の特定の物理アドレスにデータを送る。次いでマスターコントローラ２２４は、ブロックを分割して、そのマスターコントローラ２２４がオブジェクトとするように、データブロックを記憶する。次いでマスターコントローラ２２４は、ブロック、及びブロックと共に送られる物理アドレスを、マスターコントローラ２２４によって判定される実際の場所にマップする。このマッピングは、オブジェクト索引内に記憶される。典型的には、ブロックエミュレーションに関しては、ブロックデバイスのアプリケーションプログラムインターフェース（「ＡＰＩ」）が、記憶デバイス／ソリッドステート記憶デバイス１０２を、ブロック記憶デバイスとして使用することを望む、コンピュータ１１２、クライアント１１４、又は他のデバイス内の、ドライバ内に提供される。
【００７４】
別の実施形態では、マスターコントローラ２２４は、ＮＩＣコントローラ２４４及び埋め込み型ＲＤＭＡコントローラ２４６と協調して、データセット及びコマンドセットのジャストインタイムＲＤＭＡ転送を供給する。ＮＩＣコントローラ２４４を、非透過性ポートの背後に隠して、カスタムドライバの使用を可能にすることができる。同様に、クライアント１１４上のドライバも、標準的なスタックＡＰＩを使用するＩ／Ｏメモリドライバを通して、コンピュータネットワーク１１６にアクセスし、ＮＩＣ  ２４４と共に動作することができる。
【００７５】
一実施形態では、マスターコントローラ２２４はまた、独立ドライブの冗長アレイ（「ＲＡＩＤ」）コントローラでもある。データ記憶デバイス／ソリッドステート記憶デバイス１０２が、１つ以上の他のデータ記憶デバイス／ソリッドステート記憶デバイス１０２とネットワーク化される場合は、マスターコントローラ２２４は、単一階層ＲＡＩＤ、多階層ＲＡＩＤ、プログレッシブＲＡＩＤなどに関するＲＡＩＤコントローラとすることができる。マスターコントローラ２２４はまた、一部のオブジェクトがＲＡＩＤアレイ内に記憶され、他のオブジェクトがＲＡＩＤを使用せずに記憶されることも可能にする。別の実施形態では、マスターコントローラ２２４は、分散ＲＡＩＤコントローラ素子とすることができる。別の実施形態では、マスターコントローラ２２４は、多ＲＡＩＤ、分散ＲＡＩＤ、及び別の箇所で説明されるような他の機能を含み得る。一実施形態では、マスターコントローラ２２４は、ＲＡＩＤ様の構造内のデータの記憶を管理し、この場合パリティ情報が、論理ページの１つ以上の記憶素子２１６、２１８、２２０内に記憶され、このパリティ情報は、同一の論理ページの他の記憶素子２１６、２１８、２２０内に記憶されたデータを保護する。
【００７６】
一実施形態では、マスターコントローラ２２４は、単一又は冗長ネットワーク管理機器（例えば、スイッチ）と協調して、経路指定を確立し、帯域幅利用、フェイルオーバーなどを平衡させる。別の実施形態では、マスターコントローラ２２４は、統合された特定用途向け論理（ローカルバス２０６を介して）、及び関連するドライバソフトウェアと協調する。別の実施形態では、マスターコントローラ２２４は、接続された特定用途向けプロセッサ２５８又は論理（外部システムバス２４０を介して）、及び関連するドライバソフトウェアと協調する。別の実施形態では、マスターコントローラ２２４は、遠隔の特定用途向け論理（コンピュータネットワーク１１６を介して）、及び関連するドライバソフトウェアと協調する。別の実施形態では、マスターコントローラ２２４は、ローカルバス２０６又は外部バス接続のハードディスクドライブ（「ＨＤＤ」）記憶装置コントローラと協調する。
【００７７】
一実施形態では、マスターコントローラ２２４は、１つ以上の記憶装置コントローラ２５４と通信し、この場合、記憶デバイス／ソリッドステート記憶デバイス１０２は、ＳＣＳＩバス、インターネットＳＣＳＩ（「ｉＳＣＳＩ）、ファイバーチャネルなどを通じて接続される記憶デバイスとして現れることができる。その一方で、記憶デバイス／ソリッドステート記憶デバイス１０２は、オブジェクトを自律的に管理することができ、オブジェクトファイルシステム又は分散オブジェクトファイルシステムとして現れることができる。マスターコントローラ２２４はまた、ピアコントローラ２５６及び／又は特定用途向けプロセッサ２５８によってアクセスすることもできる。
【００７８】
別の実施形態では、マスターコントローラ２２４は、自律的統合管理コントローラと協調して、ＦＰＧＡコード及び／又はコントローラソフトウェアを定期的に検証し、ＦＰＧＡコードを実行（リセット）の間に検証し、かつ／又はコントローラソフトウェアを電源投入（リセット）の間に検証し、外部リセット要求に対応し、ウオッチドッグタイムアウトによるリセット要求に対応し、電圧、電流、電力、温度、及び他の環境測定値、並びに閾値割り込みの設定に対応する。別の実施形態では、マスターコントローラ２２４は、ガベージコレクションを管理して、消去ブロックを、再使用するために解放する。別の実施形態では、マスターコントローラ２２４はウェアレベリングを管理する。別の実施形態では、マスターコントローラ２２４は、データ記憶デバイス／ソリッドステート記憶デバイス１０２が、複数の論理デバイスへと区分化されることを可能にし、区分化に基づく媒体暗号化を可能にする。更に別の実施形態では、マスターコントローラ２２４は、先端的マルチビットＥＣＣ訂正を使用するソリッドステート記憶装置コントローラ１０４に対応する。当業者には、記憶装置コントローラ２０２内の、又はより具体的には、ソリッドステート記憶デバイス１０２内の、マスターコントローラ２２４の、他の特徴及び機能が認識されるであろう。
【００７９】
一実施形態では、ソリッドステート記憶デバイスコントローラ２０２は、ダイナミックランダムメモリアレイ２３０及び／又はスタティックランダムメモリアレイ２３２を制御する、メモリコントローラ２２８を含む。上述のようにメモリコントローラ２２８は独立させることができ、又はマスターコントローラ２２４に統合することもできる。メモリコントローラ２２８は、典型的には、ＤＲＡＭ（ダイナミックランダムメモリアレイ２３０）及びＳＲＡＭ（スタティックランダムメモリアレイ２３２）などの一部のタイプの揮発性メモリを制御する。他の実施例では、メモリコントローラ２２８はまた、電気的消去可能プログラム可能読み取り専用メモリ（「ＥＥＰＲＯＭ」）などのような、他のメモリのタイプも制御する。他の実施形態では、メモリコントローラ２２８は、２つ以上のメモリのタイプを制御し、メモリコントローラ２２８は、２つ以上のコントローラを含み得る。典型的にはメモリコントローラ２２８は、実行可能な限り多くのＳＲＡＭ  ２３２を制御し、ＤＲＡＭ  ２３０によってＳＲＡＭ  ２３２を補完する。
【００８０】
一実施形態では、オブジェクト索引がメモリ２３０、２３２内に記憶され、次いで定期的に、ソリッドステート記憶媒体１１０ｎ又は他の不揮発性メモリのチャネルにオフロードされる。当業者には、メモリコントローラ２２８、ダイナミックメモリアレイ２３０、及びスタティックメモリアレイ２３２の、他の使用並びに構成が認識されるであろう。
【００８１】
一実施形態では、ソリッドステート記憶デバイスコントローラ２０２は、記憶デバイス／ソリッドステート記憶デバイス１０２と、１つ以上の外部メモリコントローラ２５０、並びに関連する外部メモリアレイ２５２及びＣＰＵ  ２４８との間のＤＭＡ操作を制御する、ＤＭＡコントローラ２２６を含む。外部メモリコントローラ２５０及び外部メモリアレイ２５２が外部と称されるのは、それらが記憶デバイス／ソリッドステート記憶デバイス１０２の外部にあるためであることに留意されたい。更には、ＤＭＡコントローラ２２６はまた、ＮＩＣ  ２４４及び関連するＲＤＭＡコントローラ２４６を通じて、要求デバイスを使用するＲＤＭＡ操作も制御することができる。
【００８２】
一実施形態では、ソリッドステート記憶デバイスコントローラ２０２は、管理バス２３６に接続される、管理コントローラ２３４を含む。典型的には、管理コントローラ２３４は、記憶デバイス／ソリッドステート記憶デバイス１０２の、環境評価基準及び環境状況を管理する。管理コントローラ２３４は、管理バス２３６を介して、デバイスの温度、ファンの速度、電力供給設定などを監視することができる。管理コントローラ２３４は、ＦＰＧＡコード及びコントローラソフトウェアの記憶に関する、消去可能プログラム可能読み取り専用メモリ（「ＥＥＰＲＯＭ」）の、読み取り及びプログラミングに対応することができる。典型的には、管理バス２３６は、記憶デバイス／ソリッドステート記憶デバイス１０２内部の、様々な構成要素に接続される。管理コントローラ２３４は、ローカルバス２０６を介して、警告、割り込みなどを通信することができ、又はシステムバス２４０若しくは他のバスへの、別個の接続を含み得る。一実施形態では、管理バス２３６は、Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（「Ｉ２Ｃ」）バスである。当業者には、管理バス２３６によって、記憶デバイス／ソリッドステート記憶デバイス１０２に接続される、管理コントローラ２３４の、他の関連機能及び使用が認識されるであろう。
【００８３】
一実施形態では、ソリッドステート記憶デバイスコントローラ２０２は、特定用途向けにカスタマイズすることができる、その他の論理２４２を含む。典型的には、ソリッドステートデバイスコントローラ２０２又はマスターコントローラ２２４が、ＦＰＧＡ又は他の設定可能コントローラを使用して構成される場合は、具体的な用途、利用者要件、記憶要件などに基づいて、カスタム論理を含めることができる。
【００８４】
データパイプライン
図３Ａは、本発明による、ソリッドステート記憶デバイス１０２内の、書き込みデータパイプライン１０６及び読み取りデータパイプライン１０８を有する、ソリッドステート記憶装置コントローラ１０４の一実施形態３００を示す、概略ブロック図である。実施形態３００は、データバス２０４、ローカルバス２０６、及びバッファコントローラ２０８を含み、これらは、図２のソリッドステート記憶デバイスコントローラ２０２に関連して説明されるものと、実質的に同様である。書き込みデータパイプライン１０６は、パケタイザー３０２及びエラー訂正符号（「ＥＣＣ」）エンコーダ３０４を含む。他の実施形態では、書き込みデータパイプライン１０６は、入力バッファ３０６、書き込み同期バッファ３０８、書き込みプログラムモジュール３１０、圧縮モジュール３１２、暗号化モジュール３１４、ガベージコレクタバイパス３１６（読み取りデータパイプライン１０８内部に一部分を有する）、バイアスモジュール３１８、及び書き込みバッファ３２０を含む。読み取りデータパイプライン１０８は、読み取り同期バッファ３２８、ＥＣＣデコーダ３２２、デパケタイザー３２４、アライメントモジュール３２６、及び出力バッファ３３０を含む。他の実施形態では、読み取りデータパイプライン１０８は、逆バイアスモジュール３３２、ガベージコレクタバイパス３１６の一部分、暗号解除モジュール３３４、解凍モジュール３３６、及び読み取りプログラムモジュール３３８を含み得る。
【００８５】
ソリッドステート記憶装置コントローラ１０４はまた、制御及び状態レジスタ３４０、並びに制御キュー３４２、バンクインターリーブコントローラ３４４、同期バッファ３４６、記憶バスコントローラ３４８、並びにマルチプレクサー（「ＭＵＸ」）３５０も含み得る。ソリッドステート記憶装置コントローラ１０４は、図示の実施形態では、設定モジュール３５２を含み、この設定モジュール３５２は、書き込みデータパイプライン１０６の一部分及び／又は読み取りデータパイプライン１０８の一部分とすることができ、あるいは書き込みデータパイプライン１０６及び読み取りデータパイプライン１０８から独立させることもできる。ソリッドステートコントローラ１０４並びに関連する書き込みデータパイプライン１０６及び読み取りデータパイプライン１０８の、構成要素を以下で説明する。他の実施形態では、同期的ソリッドステート記憶媒体１１０を使用することができ、同期バッファ３０８、３２８を削除することができる。
【００８６】
書き込みデータパイプライン
書き込みデータパイプライン１０６は、パケタイザー３０２を含み、このパケタイザー３０２は、直接的に、又は別の書き込みデータパイプライン１０６のステージを通じて間接的に、ソリッドステート記憶装置に書き込まれるべきデータ若しくはメタデータのセグメントを受信し、ソリッドステート記憶媒体１１０に関してサイズ設定される１つ以上のパケットを作り出す。データ又はメタデータのセグメントは、典型的には、オブジェクトなどの、データ構造の一部分であるが、また、データ構造全体も含み得る。別の実施形態では、データセグメントは、データのブロックの一部分であるが、また、データのブロック全体も含み得る。典型的には、データ構造などの、データのセットは、コンピュータ１１２、クライアント１１４、又は他のコンピュータ若しくはデバイスから受信され、ソリッドステート記憶デバイス１０２へ送信されて、データセグメントの形で、ソリッドステート記憶デバイス１０２又はコンピュータ１１２に流される。データセグメントはまた、データパーセルなどの、別の名称でも既知であり得るが、本明細書で参照されるように、データ構造又はデータブロックの、全て若しくは一部分を含む。
【００８７】
各データ構造は、１つ以上のパケットとして記憶される。各データ構造は、１つ以上のコンテナパケットを有し得る。各パケットは、ヘッダを含む。ヘッダは、ヘッダタイプフィールドを含み得る。タイプフィールドは、データ、属性、メタデータ、データセグメント区切り記号（マルチパケット）、データ構造、データリンクなどを含み得る。ヘッダはまた、パケット内に含まれるデータのバイト数などの、パケットのサイズに関する情報も含み得る。パケットの長さは、パケットのタイプによって規定することができる。ヘッダは、パケットとデータ構造との関係を規定する情報を含み得る。一例としては、データ構造内部でのデータセグメントの場所を識別するための、データパケットヘッダ内でのオフセットの使用の場合がある。当業者には、パケタイザー３０２によってデータに付加されるヘッダ内に含めることができる他の情報、及びデータパケットに付加することができる他の情報が認識されるであろう。
【００８８】
各パケットは、ヘッダと、恐らくは、データ又はメタデータのセグメントからの、データとを含む。各パケットのヘッダは、パケットを、そのパケットが属するデータ構造に関連付けるための関連情報を含む。例えば、ヘッダは、オブジェクト識別子若しくは他のデータ構造識別子、及びそのデータパケットが形成されたデータセグメント、オブジェクト、データ構造、若しくはデータブロックを指示するオフセットを含み得る。ヘッダはまた、パケットを記憶するために、記憶バスコントローラ３４８によって使用される、論理アドレスも含み得る。ヘッダはまた、パケット内に含まれるバイト数などの、パケットのサイズに関する情報も含み得る。ヘッダはまた、データセグメント又はデータ構造を復元する際、データセグメントが、データ構造内部で他のパケットに対して属する場所を識別するシーケンス番号も含み得る。ヘッダはヘッダタイプフィールドを含み得る。タイプフィールドは、データ、データ構造属性、メタデータ、データセグメント区切り記号（マルチパケット）、データ構造タイプ、データ構造リンクなどを含み得る。当業者には、パケタイザー３０２によってデータ若しくはメタデータに付加されるヘッダ内に含めることができる他の情報、及びパケットに付加することができる他の情報が認識されるであろう。
【００８９】
書き込みデータパイプライン１０６は、パケタイザー３０２から受信される１つ以上のパケットに関する、１つ以上のエラー訂正符号（「ＥＣＣ」）を生成するＥＣＣエンコーダ３０４を含む。ＥＣＣエンコーダ３０４は、典型的には、エラー訂正アルゴリズムを使用して、１つ以上のデータパケットと共に記憶されるＥＣＣ検査ビットを生成する。ＥＣＣエンコーダ３０４によって生成されるＥＣＣコードは、そのＥＣＣコードに関連する１つ以上のデータパケットと一体となってＥＣＣチャンクを構成する。１つ以上のデータパケットと共に記憶されるＥＣＣデータを使用して、送信及び記憶を通じてデータ内に導入されたエラーを検出及び訂正する。一実施形態では、パケットは、長さＮの非符号化ブロックとして、ＥＣＣエンコーダ３０４内へと流される。長さＳのシンドロームが算出され、付加されて、長さＮ＋Ｓの符号化ブロックとして出力される。Ｎ及びＳの値は、特定の性能、効率、及び堅牢性の評価基準を達成するために選択される、アルゴリズムの特性に応じて決定される。一実施形態では、ＥＣＣブロックとパケットとの間には、固定した関係は存在せず、パケットは２つ以上のＥＣＣブロックを含み得、ＥＣＣブロックは２つ以上のパケットを含み得、第１のパケットは、ＥＣＣブロックのいずれかの場所で終了することができ、第２のパケットは、同一のＥＣＣブロック内部の、第１のパケットの終了の後に開始することができる。一実施形態では、ＥＣＣアルゴリズムは動的に修正されない。一実施形態では、データパケットと共に記憶されるＥＣＣデータは、３ビット以上でエラーを訂正するほど十分に堅牢である。
【００９０】
有利には、２ビット以上の訂正、又は更に３ビット以上の訂正を可能にする堅牢なＥＣＣアルゴリズムにより、ソリッドステート記憶媒体１１０の耐用年数を延長させることが可能になる。例えばフラッシュメモリを、ソリッドステート記憶媒体１１０内の記憶媒体として使用する場合には、フラッシュメモリは、消去サイクル当り、エラーを伴わない約１００，０００回の書き込みが可能である。この使用限界は、堅牢なＥＣＣアルゴリズムを使用して、延長させることができる。ＥＣＣエンコーダ３０４及び対応するＥＣＣデコーダ３２２を、ソリッドステート記憶デバイス１０２に搭載することによって、ソリッドステート記憶デバイス１０２は、内部でエラーを訂正することができ、単一ビット訂正などの、堅牢性に劣るＥＣＣアルゴリズムを使用する場合よりも長い耐用年数を有する。しかしながら、他の実施形態では、ＥＣＣエンコーダ３０４は堅牢性に劣るアルゴリズムを使用することができ、単一ビット又は２ビットのエラーを訂正することができる。別の実施形態では、ソリッドステート記憶媒体１１０は、容量を増大させるために、マルチレベルセル（「ＭＬＣ」）フラッシュなどの、信頼性に劣る記憶装置を含み得るが、この記憶装置は、より堅牢なＥＣＣアルゴリズムを使用しなければ、十分に信頼することができない。
【００９１】
一実施形態では、書き込みパイプライン１０６は、入力バッファ３０６を含み、この入力バッファ３０６は、ソリッドステート記憶媒体１１０に書き込まれるべきデータセグメントを受信し、パケタイザー３０２などの、書き込みデータパイプライン１０６の次のステージ（又は、より複合的な書き込みデータパイプライン１０６に関する他のステージ）が、次のデータセグメントを処理する準備が整うまで入来するデータセグメントを記憶する。入力バッファ３０６は典型的には、書き込みデータパイプライン１０６によって、データセグメントが受信される速度と、処理される速度との相違を、適切にサイズ設定されたデータバッファを使用して許容する。入力バッファ３０６はまた、データバス２０４の動作の効率を改善するために、データバス２０４が書き込みデータパイプライン１０６によって維持することができる速度よりも速い速度で、書き込みデータパイプライン１０６にデータを転送することも可能にする。典型的には、書き込みデータパイプライン１０６が入力バッファ３０６を含まない場合、バッファリング機能は、他の場所で、例えば、書き込みデータパイプライン１０６外部の、ソリッドステート記憶デバイス１０２内で、ネットワークインターフェースカード（「ＮＩＣ」）内部などのコンピュータ１１２内で、又は、例えばリモートダイレクトメモリアクセス（「ＲＤＭＡ」）を使用する場合には、別のデバイスで、実行される。
【００９２】
別の実施形態では、書き込みデータパイプライン１０６はまた、ソリッドステート記憶媒体１１０にパケットを書き込む前に、ＥＣＣエンコーダ３０４から受信されたパケットをバッファリングする書き込み同期バッファ３０８も含む。書き込み同期バッファ３０８は、ローカルのクロックドメインとソリッドステート記憶装置のクロックドメインとの境界に位置し、クロックドメインの差異に配慮するためにバッファリングを提供する。他の実施形態では、同期的ソリッドステート記憶媒体１１０を使用することができ、同期バッファ３０８、３２８を削除することができる。
【００９３】
一実施形態では、書き込みデータパイプライン１０６はまた、パケタイザー３０２から、直接的に又は間接的に１つ以上のパケットを受信する、バイアスモジュール３１８も含む。バイアスモジュール３１８は、ソリッドステート記憶媒体１１０の記憶セルのバイアスに向けて、データパケットのビットにバイアスを印加する。本明細書で使用するとき、「バイアス」とは、特定のデータパターンを呈するための、ビットのセット内部のビットに関する値の優先度、確率、傾向、又は望ましさである。バイアスは、自然な特性、設計された属性、記憶媒体に対する操作を実行する特性、又は偶発性とすることができる。データ自体が、バイアスを有し得、データ記憶媒体が、バイアスを有し得る。バイアスは、バイナリ１に向けたもの、バイナリ０に向けたもの、バイナリ１とバイナリ０との平衡に向けたもの、特定のビットに関する特定のバイナリ値に向けたものなどとすることができる。
【００９４】
例えば、一実施形態では、データファイルの終端区域にバイナリ０が埋め込まれることにより、その終端区域を記憶するデータパケットは、バイナリ０に向かうバイアスを呈するようになり、このことはそのデータパケットがバイナリ１よりもバイナリ０を多く有することを意味する。他のデータパケットは、バイナリ０よりも、バイナリ１を多く有するか、バイナリ１とバイナリ０との平衡を有し得る。データパケットは、それぞれ、パケット内部のデータに基づく個々のバイアスを有し得るが、ソリッドステート記憶媒体１１０の記憶セルのバイアスは、特定のバイナリ値若しくはパターンの記憶に関連する何らかの利益、又は記憶セルの何らかの特性に基づき得る。記憶セル特性の一例として、ＮＡＮＤフラッシュ記憶セルは、現在、製造元によって提供される際に、全てバイナリ１の値、又は殆ど全てバイナリ１の値にバイアスが印加される。更には、ＮＡＮＤフラッシュ記憶セルに対する消去操作を実行することにより、各記憶セル内のバイナリ値がバイナリ１に設定されるため、記憶セルのプログラミングは、特定の記憶セルをバイナリ０の値に変化させることを含む。製造元によって提供される際、又は消去の際の、全てバイナリ１の値若しくは殆ど全てバイナリ１の値への、このバイアスは、不揮発性ソリッドステート記憶媒体の記憶セルに関する、空の状態の一例を表す。
【００９５】
記憶素子２１６、２１８、２２０のそれぞれは、一実施形態では、バイアスを呈する複数個の記憶セル内にバイナリデータを記憶する。各記憶セルは、１つ以上のバイナリビット、すなわちバイナリ値を記憶する。フラッシュメモリ記憶セルは、それぞれが単一のバイナリビットを記憶する、シングルレベルセル（「ＳＬＣ」）、又はそれぞれが２つ以上のバイナリビットを記憶する、マルチレベルセル（「ＭＬＣ」）とすることができる。記憶セルの例としては、トランジスタ、コンデンサ、磁気素子、機械的素子、光学素子などが挙げられる。フラッシュメモリでは、各記憶セルは、典型的には、浮遊ゲートトランジスタである。ＮＲＡＭ、ＭＲＡＭ、ＤＲＡＭ、ＰＲＡＭ、及び他のタイプのソリッドステート記憶装置は、他のタイプの記憶セルを有し得、１つの記憶セル当たり、単一のバイナリビット又は２つ以上のバイナリビットのいずれかを記憶することができる。
【００９６】
一実施形態では、空の状態、又は消去された状態の、記憶素子２１６、２１８、２２０の記憶セルは、初期バイナリ値を記憶する。この初期バイナリ値は、記憶セルに関するバイアスを表す。例えば、記憶セルは、それらの記憶セルに特定の値をデフォルトで記憶させる、物理的品質、電気的品質、機械的品質、又は他の品質を有し得る。別の実施形態では、このバイアスは、ソリッドステート記憶媒体１１０の設計考慮、セキュリティへの考慮、互換性の問題などに基づいて、意図的に選択することができ、記憶セルのデフォルトの特性に基づかない場合がある。
【００９７】
例えば、一実施形態では、記憶素子２１６、２１８、２２０の記憶セルは、フラッシュメモリでは典型的なように、それぞれ製造元からの供給時に１のバイナリ値を記憶することができ、またそれぞれ、プログラム、すなわち書き込みが行なわれる前に１の値に消去することができる。別の実施形態では、記憶素子２１６、２１８、２２０の記憶セルは、バイナリ０に向けて、バイナリ１とバイナリ０との平衡又は等量に向けて、複数個のビットに関して特定のバイナリ値に向けて、一定のバイナリパターンに向けて、などのようにバイアスを印加することができる。
【００９８】
特定の実施形態では、１つ以上の記憶セルのバイアスは、その１つ以上の記憶セルと物理的に隣接するか、又は他の方式で近位にある他の記憶セルの状態に影響され得るか、又はその記憶セルの状態に基づき得る。例えば、記憶セル内に記憶されるデータにバイアスを印加して、その記憶セルと他の記憶セルとの、セル相互間の干渉を最小限に抑えることなどが望ましい場合がある。セル相互間の干渉は、物理的に隣接する記憶セル間の電圧差によって引き起こされる場合があり、特定の実施形態では、記憶セルの物理的ジオメトリに基づいて、データにバイアスを印加し、記憶セル間の電圧差を低減するか、又は最小限に抑えることにより、セル相互間の干渉を低減することができる。一実施形態では、ソリッドステート記憶媒体１１０の記憶セルは、その記憶セルと他の物理的に隣接する記憶セルとの間の、既定の電圧差閾値を満たすバイナリパターンに向けたバイアスなどを有し得る。
【００９９】
局所的なタイプのセル相互間の干渉に加えて、ビット文字列、ワード線などのような、より大きいマルチセル構造も、セル相互間の干渉を経験し得る。バイナリ１若しくはバイナリ０のストライプなどの、データ内の特定のストライプ又は他のパターンは、これらのより大きいマルチセル構造に関するセンスアンプ及び／又は管理回路機構の、正確性若しくは有効性に干渉する恐れがあり、そのようなストライプ又は他のパターンを避けるように、データにバイアスを印加することが有利であり得る。
【０１００】
ＳＬＣフラッシュメモリなどの、特定のタイプの記憶セルに関しては、記憶セルの電圧レベル、及び記憶セル間の関連する電圧差は、各記憶セルに関する単一のビット値に基づく場合があり、データにバイアスを印加することは、データパケット内部及び／又は記憶セルの物理領域内部の、バイナリ１の値とバイナリ０の値との間での最小の遷移を有するバイナリパターンに向けて、バイアスを印加することを含み得る。ＭＬＣフラッシュメモリなどの、他のタイプの記憶セルに関しては、記憶セルの電圧レベル、及び記憶セル間の関連する電圧差は、サブパターン又はシンボルを形成するビットのグループに基づき得、データにバイアスを印加することは、特定のサブパターン又はシンボル間での最小の遷移を有するバイナリパターンに向けて、バイアスを印加することを含み得る。サブパターン又はシンボルを使用する一例としては、複数のバイナリ値の、ＭＬＣ記憶セル内部の関連する電荷レベルへの、バイナリマッピング又はグレイコードマッピングが挙げられる。単一のＭＬＣ記憶セルによって記憶されるビットは、特定の実施形態では、隣接するアドレスを有し得ず、異なる物理ページ上、論理ページ上などに記憶させることができる。
【０１０１】
一実施形態では、バイアスモジュール３１８は、他のバイアス技術とは別に、他のバイアス技術の代わりに、又は他のバイアス技術に加えて実行される、別個の工程として、原始データにバイアスを印加して、セル相互間の干渉を低減する。例えば、原始データに、反転、ホワイトニング、圧縮、再配置、及び／又は他の方法でバイアスを印加する際には、原始データの別個のブロックは、依然として、セル相互間の干渉を引き起こすパターンを呈し得、バイアスモジュール３１８は、セル相互間の干渉を最小限に抑えるパターンに向けて、原始データの１つ以上の別個のブロックに、バイアスを印加することなどができる。
【０１０２】
バイアスモジュール３１８は、パケットのバイアスを変化させることによって、ソリッドステート記憶媒体１１０の記憶セルのバイアスに、より密接に適合するようにパケットにバイアスを印加する。バイアスモジュール３１８は、可逆的な方式でパケットにバイアスを印加することにより、逆バイアスモジュール３３２がパケットを変換して、それらの元の原始バイアスを有する、それらの元の原始データの値に戻すことができる。一実施形態では、バイアスモジュール３１８がバイアスを印加するパケットは、消去ブロック、仮想消去ブロック、ページ、仮想ページ、ＥＣＣチャンク、ページ内部の区画などのような、ソリッドステート記憶媒体１１０の、特定の論理又は物理記憶領域若しくは区画内の記憶に関して、サイズ設定される。一実施形態では、バイアスモジュール３１８は、特定のパケットに、そのパケットのバイアスに基づいて、選択的にバイアスを印加し、他のパケットにはバイアスを印加しない場合がある。
【０１０３】
当業者には、バイアスモジュール３１８があるいは、データパケットのサブセットを形成する１つ以上のデータセグメントに対して動作し得ることが認識されよう。同様に、逆バイアスモジュール３３２もまた、データセグメントに対して動作することができる。あるいは、又はそれに加えて、一実施形態では、データパケット（又はデータセグメントなどの、データパケットのサブセット）は、ソリッドステート記憶媒体１１０内の記憶領域のサイズ、バス又はバッファのサイズ、パイプライン１０６、１０８のサイズ、標識の記憶に利用可能な追加ビットの数などに基づいてサイズ設定することができる。
【０１０４】
記憶セルのバイアスに向けて、データパケットにバイアスを印加することによって、バイアスモジュール３１８は、ソリッドステート記憶媒体１１０並びにソリッドステート記憶デバイス１０２の性能及び耐久性を向上させる。例えば、記憶セルのバイアスにより密接に適合するように、パケットにバイアスを印加することにより書き込み時間及び消去時間が減少するが、これは、その操作を実行するために変化させなければならない実際の記憶セルがより少ないためである。このことはまた、記憶セルの書き込み可能耐用期間も増大させるが、これは、記憶セル上で実行される操作がより少ないことは、消耗が記憶セルの性能／信頼性に影響を及ぼし始めるまで、記憶セルが、より長持ちすることを意味するためである。特定の実施形態では、データパケットにバイアスを印加することは、電力消費を減少させるか、又は他の追加的な利益を有し得る。一実施形態では、記憶セルは、プログラム又は書き込みが行なわれる直前のバイアスに合致する、初期バイナリ値を記憶するため、データパケットが記憶セルのバイアスにより密接して適合するほど、データパケットを記憶するために変化する記憶セルの数は少なくなり、より多くの記憶セルが、バイアス状態に維持される。
【０１０５】
図示のように、バイアスモジュール３１８は、１つ以上のパケットにバイアスを印加した後に、そのパケットをＥＣＣエンコーダ３０４に送る。パケットにバイアスを印加するためにバイアスモジュール３１８が使用する方法、及び他の設計考慮に応じて、更なる実施形態では、バイアスモジュール３１８は、書き込みデータパイプライン１０６内で、ＥＣＣエンコーダ３０４の後に続いてデータを受信することができ、又は書き込みデータパイプライン１０６内の他の場所に位置することもできる。例えば、特定の実施形態では、ＥＣＣデータを、バイアスモジュール３１８がバイアスを印加するデータとは別個に維持することが有益であり得、その一方で、他の実施形態では、バイアスモジュール３１８が、ＥＣＣエンコーダ３０４からのＥＣＣデータを含むデータに、バイアスを印加することが有益であり得る。
【０１０６】
一実施形態では、バイアスモジュール３１８は、１つ以上のデータセグメントにバイアスを印加した後に、そのデータセグメントをＥＣＣエンコーダ３０４に送る。データセグメントは、一実施形態でのデータパケットよりも小さい、ビットのグルーピングとすることができる。そのような実施形態では、データセグメントは、書き込みデータパイプライン１０６のビット／バイト内の幅を含み得る。同様に、逆バイアスモジュール３３２は、バイアス印加されたデータセグメントを、読み取りの後に変換して、それらのデータセグメントの元の原始状態に戻すことができる。データセグメントに、バイアス及び逆バイアスを印加することにより、書き込みデータパイプライン１０６内のバイアスモジュール３１８、及び読み取りデータパイプライン１０８内の逆バイアスモジュール３３２の使用を促進することができるが、これは、データセグメントがパイプライン１０６、１０８を通って流れるデータのサイズ（バス幅）に適合するようにサイズ設定することができるためである。
【０１０７】
別の実施形態では、バイアスモジュール３１８は、圧縮モジュール３１２、暗号化モジュール３１４、ＥＣＣエンコーダ３０４などのような、書き込みデータパイプライン１０６の別の素子に統合することができる。バイアスモジュール３１８及び対応する逆バイアスモジュール３３２は、ソリッドステート記憶媒体１１０の性能を透過的に向上させるが、これは、バイアスモジュール３１８が、データパケットに書き込みの前にバイアスを印加し、逆バイアスモジュール３３２が、バイアス印加されたデータパケットを、読み取りの後に変換して、それらのデータパケットの元の原始状態に戻すためである。
【０１０８】
別の実施形態では、書き込みデータパイプライン１０６はまた、暗号化モジュール３１４も含み、この暗号化モジュール３１４は、入力バッファ３０６から、直接的に、又は間接的に受信されるデータ若しくはメタデータのセグメントを、パケタイザー３０２へそのデータセグメントを送る前に暗号化し、データセグメントは、そのデータセグメントと共に受信される暗号化キーを使用して暗号化される。データを暗号化するために、暗号化モジュール３１４によって使用される暗号化キーは、以下で説明されるように、ソリッドステート記憶デバイス１０２内部に記憶される全てのデータに共通しない場合があり、データ構造を基準としてそれぞれ異なり、データセグメントの受信と共に受信され得る。例えば、暗号化モジュール３１４によって暗号化されるデータセグメントに関する暗号化キーは、そのデータセグメントと共に受信することができ、又はそのデータセグメントが属するデータ構造を書き込む、コマンドの一部として受信することができる。ソリッドステート記憶デバイス１０２は、暗号化キーと共に使用される、各データ構造パケット内の非秘密暗号ナンスを、使用及び記憶することができる。異なるナンスを、各パケットと共に記憶することができる。データセグメントは、暗号化アルゴリズムによる保護の改善を目的として、固有のナンスを有する複数のパケット間に、分割することができる。
【０１０９】
暗号化キーは、クライアント１１４、別のコンピュータ、キー管理プログラム、又はデータセグメントを暗号化するために使用される暗号化キーを保持する他のデバイスから、受信することができる。一実施形態では、暗号化キーは、ソリッドステート記憶デバイス１０２、コンピュータ１１２、クライアント１１４、あるいは秘密キー及び公開キーを安全に転送並びに保護するための、業界標準の方法を実行する能力を有する、他の外部エージェントのうちの１つから、ソリッドステート記憶装置コントローラ１０４に転送される。
【０１１０】
一実施形態では、暗号化モジュール３１４は、第１のパケットを、そのパケットと共に受信された第１の暗号化キーを使用して暗号化し、第２のパケットを、そのパケットと共に受信された第２の暗号化キーを使用して暗号化する。別の実施形態では、暗号化モジュール３１４は、第１のパケットを、そのパケットと共に受信された第１の暗号化キーを使用して暗号化し、第２のデータパケットを、暗号化することなく、次のステージへと通過させる。有利には、ソリッドステート記憶デバイス１０２の書き込みデータパイプライン１０６内に含まれる暗号化モジュール３１４は、対応するデータ構造又はデータセグメントを記憶するために使用される、種々の暗号化キーを追跡するための、単一のファイルシステム又は他の外部システムを使用することなく、データ構造毎の、又はセグメント毎のデータ暗号化を可能にする。各要求デバイス１５５又は関連するキー管理プログラムが、その要求デバイス１５５によって送られるデータ構造又はデータセグメントのみを暗号化するために使用される暗号化キーを、独立して管理する。
【０１１１】
一実施形態では、暗号化モジュール３１４は、ソリッドステート記憶デバイス１０２に固有の暗号化キーを使用して、１つ以上のパケットを暗号化することができる。暗号化モジュール３１４は、この媒体暗号化を、上述の暗号化とは独立して、又はそれに加えて、実行することができる。典型的には、パケット全体が、ヘッダを含めて暗号化される。別の実施形態では、ヘッダは暗号化されない。暗号化モジュール３１４による媒体暗号化は、ソリッドステート記憶媒体１１０内に記憶されるデータに関する、一定レベルの安全性を提供する。例えば、データが、特定のソリッドステート記憶デバイス１０２に固有の媒体暗号化を使用して暗号化される場合、そのソリッドステート記憶媒体１１０が、異なるソリッドステート記憶装置コントローラ１０４、ソリッドステート記憶デバイス１０２、又はコンピュータ１１２に接続される場合には、ソリッドステート記憶媒体１１０の内容は、典型的には、ソリッドステート記憶媒体１１０へのデータの書き込みの間に使用された、同一の暗号化キーを使用しなければ、多大な労力なしで読み取ることは不可能である。
【０１１２】
別の実施形態では、書き込みデータパイプライン１０６は、メタデータセグメントに関するデータを圧縮した後に、そのデータセグメントをパケタイザー３０２に送る、圧縮モジュール３１２を含む。圧縮モジュール３１２は、典型的には、当業者には既知の圧縮ルーチンを使用して、データ又はメタデータのセグメントを圧縮し、セグメントの記憶サイズを低減する。例えば、データセグメントが、５１２個の０の文字列を含む場合には、圧縮モジュール３１２は、５１２個の０を指示する符号又はトークンで、その５１２個の０を置き換えることができ、この場合、その符号は、５１２個の０によって占められるスペースよりも、遙かにコンパクトである。
【０１１３】
一実施形態では、圧縮モジュール３１２は、第１のセグメントを、第１の圧縮ルーチンを使用して圧縮し、第２のセグメントを、圧縮することなく通過させる。別の実施形態では、圧縮モジュール３１２は、第１のセグメントを、第１の圧縮ルーチンを使用して圧縮し、第２のセグメントを、第２の圧縮ルーチンを使用して圧縮する。ソリッドステート記憶デバイス１０２内部に、この柔軟性を有することは、クライアント１１４、又はソリッドステート記憶デバイス１０２にデータを書き込む他のデバイスが、それぞれ圧縮ルーチンを指定することができるために、又は１つは圧縮を指定しないが、もう１つは圧縮を指定することができるために有益である。圧縮ルーチンの選択はまた、データ構造のタイプ又はデータ構造のクラスをそれぞれの基準とする、デフォルトの設定に従って、選択することもできる。例えば、特定のデータ構造の第１のデータ構造は、デフォルトの圧縮ルーチンの設定を上書きすることが可能であり、同一のデータ構造のクラス及びデータ構造のタイプの、第２のデータ構造は、デフォルトの圧縮ルーチンを使用することができ、同一のデータ構造のクラス及びデータ構造のタイプの、第３のデータ構造は、圧縮を使用しない場合がある。
【０１１４】
一実施形態では、書き込みデータパイプライン１０６は、ガベージコレクションシステム内のデータバイパスの一部として、読み取りデータパイプライン１０８からデータセグメントを受信する、ガベージコレクタバイパス３１６を含む。ガベージコレクションシステムは、典型的には、パケットが削除されるためにマークされるか、又はパケットが修正されていて、修正されたデータが異なる場所に記憶されているために、もはや有効ではないパケットを典型的にはマークする。いずれかの時点で、ガベージコレクションシステムは、記憶装置の特定の区域の回復が可能であることを判定する。この判定は、利用可能な記憶容量の欠如、無効としてマークされたデータのパーセンテージが閾値に到達すること、有効データの整理統合、記憶装置のその区域に関するエラー検出率が閾値に到達すること、又はデータ分散に基づく性能の改善などによるものとすることができる。多数の因数を、ガベージコレクションアルゴリズムによって考察して、記憶装置の区域を回復させるべき時点を判定することができる。
【０１１５】
記憶装置の区域が、回復に関してマークされた時点で、その区域内の有効パケットは典型的には、再配置されなければならない。ガベージコレクタバイパス３１６により、パケットは、読み取りデータパイプライン１０８内へ読み取られ、次いで、ソリッドステート記憶装置コントローラ１０４の外に経路指定されることなく、書き込みデータパイプライン１０６へ直接転送されることが可能になる。一実施形態では、ガベージコレクタバイパス３１６は、ソリッドステート記憶デバイス１０２内部で動作する、自律的ガベージコレクタシステムの一部である。このことにより、ソリッドステート記憶デバイス１０２は、データがソリッドステート記憶媒体１１０全体へ系統的に拡散して、性能、データ信頼性を改善し、ソリッドステート記憶媒体１１０の任意の１つの場所又は領域の、過剰使用並びに過少使用を回避し、ソリッドステート記憶媒体１１０の耐用年数を延長させるように、データを管理することが可能になる。
【０１１６】
ガベージコレクタバイパス３１６は、書き込みデータパイプライン１０６内へのセグメントの挿入を調整し、他のセグメントが、クライアント１１４又は他のデバイスによって書き込まれる。図示の実施形態では、ガベージコレクタバイパス３１６は、書き込みデータパイプライン１０６内で、パケタイザー３０２の前にあり、読み取りデータパイプライン１０８内で、デパケタイザー３２４の後にあるが、また書き込みデータパイプライン１０６及び読み取りデータパイプライン１０８内の他の場所に位置することもできる。ソリッドステート記憶媒体１１０内部の記憶の効率を改善するために、ガベージコレクタバイパス３１６を、書き込みパイプライン１０６のフラッシュの間に使用して、仮想ページの残部を充填することにより、ガベージコレクションの頻度を低減するができる。
【０１１７】
一実施形態では、書き込みデータパイプライン１０６は、効率的な書込み操作のためにデータをバッファリングする、書き込みバッファ３２０を含む。典型的には、書き込みバッファ３２０は、パケットが、ソリッドステート記憶媒体１１０内の少なくとも１つの仮想ページを充填するための、十分な容量を含む。このことにより、書き込み操作は、割り込みを伴うことなく、ソリッドステート記憶媒体１１０に、ページ全体のデータを送ることが可能になる。書き込みデータパイプライン１０６の書き込みバッファ３２０、及び読み取りデータパイプライン１０８内部のバッファを、ソリッドステート記憶媒体１１０内部の記憶書き込みバッファと同一の容量に、又はより大きくサイズ設定することによって、複数のコマンドの代わりに、単一のコマンドを作成して、ソリッドステート記憶媒体１１０に、仮想ページ全体のデータを送ることができるため、書き込み及び読み取りは、より効率的となる。
【０１１８】
書き込みバッファ３２０が充填されている間に、ソリッドステート記憶媒体１１０は他の読み取り操作に関して使用することができる。このことが有利であるのは、より小さい書き込みバッファを有するか、又は書き込みバッファを有さない、他のソリッドステートデバイスは、記憶書き込みバッファにデータが書き込まれ、記憶書き込みバッファ内へのデータの流れがストールする際、ソリッドステート記憶装置を停滞させる恐れがあるためである。読み取り操作は、記憶書き込みバッファ全体が充填されてプログラムされるまでブロックされることになる。書き込みバッファを有さないか、又はより小さい書き込みバッファを有するシステムに関する別の手法は、読み取りを有効にするために、一杯ではない記憶書き込みバッファをフラッシュすることである。この場合も同様に、複数の書き込み／プログラムのサイクルが、ページを充填するために必要とされるため、非効率的である。
【０１１９】
仮想ページよりも大きいサイズ設定の書き込みバッファ３２０を有する図示の実施形態に関しては、多数のサブコマンドを含む単一の書き込みコマンドは、その場合、その後に単一のプログラムコマンドが続いて、各ソリッドステート記憶素子２１６、２１８、２２０内の記憶書き込みバッファから、各ソリッドステート記憶素子２１６、２１８、２２０内部の指定ページへ、データのページを転送することができる。この技術は、データの信頼性及び耐久性を低減するとして既知の、部分的ページプログラミングを排除し、バッファが充填される間に、読み取り及び他のコマンドに関する宛先のバンクを解放する利益を有する。
【０１２０】
一実施形態では、書き込みバッファ３２０は、ピンポンバッファであり、この場合、バッファの一方の側が一杯になり、次いで適切な時点での転送が指定される間、ピンポンバッファの他方の側は、充填中である。別の実施形態では、書き込みバッファ３２０は、データセグメントの仮想ページよりも大きい容量を有する、先入れ先出し方式（「ＦＩＦＯ」）レジスタを含む。当業者には、ソリッドステート記憶媒体１１０にデータを書き込む前に、データの仮想ページが記憶されることを可能にする、他のバッファ３２０の構成が認識されるであろう。
【０１２１】
別の実施形態では、書き込みバッファ３２０は、仮想ページよりも小さくサイズ設定されることにより、ソリッドステート記憶媒体１１０内の記憶書き込みバッファに書き込むことが可能であるのは、１ページ未満の情報である。この実施形態では、書き込みデータパイプライン１０６内のストールが、読み取り操作を停滞させることを防ぐために、データは、ガベージコレクションシステムを使用して、待ち行列に入れられ、ガベージコレクションプロセスの一部として、１つの場所から別の場所へ移動させる必要がある。書き込みデータパイプライン１０６内のデータストールの場合には、データは、ガベージコレクタバイパス３１６を通じて、書き込みバッファ３２０へ、次いで、ソリッドステート記憶媒体１１０内の記憶書き込みバッファへと供給されて、データをプログラムする前の仮想ページのページを充填することができる。この方式では、書き込みデータパイプライン１０６内のデータストールが、ソリッドステート記憶デバイス１０２からの読み取りをストールさせることはない。
【０１２２】
別の実施形態では、書き込みデータパイプライン１０６は、書き込みデータパイプライン１０６内部での１つ以上のユーザー定義可能な機能を有する、書き込みプログラムモジュール３１０を含む。書き込みプログラムモジュール３１０により、ユーザーは、書き込みデータパイプライン１０６をカスタマイズすることが可能になる。ユーザーは、特定のデータ要件又は用途に基づいて、書き込みデータパイプライン１０６をカスタマイズすることができる。ソリッドステート記憶装置コントローラ１０４が、ＦＰＧＡである場合は、ユーザーは、カスタムコマンド及びカスタム機能を使用して、書き込みデータパイプライン１０６を、比較的容易にプログラムすることができる。ユーザーはまた、ＡＳＩＣを使用するカスタム機能を含むように、書き込みプログラムモジュール３１０を使用することもできるが、ＡＳＩＣをカスタマイズすることは、ＦＰＧＡを使用するよりも困難である場合がある。書き込みプログラムモジュール３１０は、バッファ及びバイパス機構を含み得、第１のデータセグメントが、書き込みプログラムモジュール３１０内で実行される間に、第２のデータセグメントが、書き込みデータパイプライン１０６を通って継続し得ることを可能にする。別の実施形態では、書き込みプログラムモジュール３１０は、ソフトウェアを通じてプログラムすることができる、プロセッサコアを含み得る。
【０１２３】
書き込みプログラムモジュール３１０は、入力バッファ３０６と圧縮モジュール３１２との間に示されるが、しかしながら、書き込みプログラムモジュール３１０は、書き込みデータパイプライン１０６内の任意の場所にあることが可能であり、様々なステージ３０２〜３２０の間に分散させることができる点に留意されたい。更には、独立してプログラムされ、動作する、様々なステージ３０２〜３２０の間に分散する複数の書き込みプログラムモジュール３１０が存在し得る。更には、ステージ３０２〜３２０の順序を変更することができる。当業者には、特定のユーザー要件に基づく、ステージ３０２〜３２０の順序に対する実行可能な変更が認識されるであろう。
【０１２４】
読み取りデータパイプライン
読み取りデータパイプライン１０８は、ＥＣＣデコーダ３２２を含み、このＥＣＣデコーダ３２２は、データエラーが、ソリッドステート記憶媒体１１０から受信された要求データパケットのＥＣＣブロック内に存在するか否かを、その要求パケットの各ＥＣＣブロックと共に記憶されたＥＣＣを使用することによって判定する。次いで、ＥＣＣデコーダ３２２は、いずれかのエラーが存在し、そのエラーがＥＣＣを使用して訂正可能である場合には、要求パケット内のいずれかのエラーを訂正する。例えばＥＣＣが６ビットのエラーを検出することができるが、３ビットのエラーのみを修正することができる場合には、ＥＣＣデコーダ３２２は、最大３つのエラー状態のビットを有する、要求パケットのＥＣＣブロックを訂正する。ＥＣＣデコーダ３２２は、要求データパケットが、ソリッドステート記憶媒体１１０に要求データパケットが書き込まれ、そのパケットに関してＥＣＣが生成されたときと同一となるように、エラー状態のビットを、正しい１又は０の状態に変化させることによってエラー状態のビットを訂正する。
【０１２５】
特定の実施形態では、ＥＣＣデコーダ３２２は、以下で説明される設定モジュール３５２に、エラー状態のビットの場所、エラー状態のビットに関する値、及び／又は他のエラー情報などの、訂正可能なエラーに関するエラー情報を提供することができる。例えば、ＥＣＣデコーダ３２２は、エラー状態にある、データセットの１つ以上のビットを指示する、エラーバイアスなどを、設定モジュール３５２に提供することができる。エラーバイアスは、本明細書で使用するとき、データセット内の１つ以上の検出ビットエラーの表示である。一実施形態では、エラーバイアスとしては、データセット内の検出ビットエラーの場所又は位置が挙げられる。別の実施形態では、エラーバイアスとしては、検出ビットエラーに関する値が挙げられる。検出エラーに関する値としては、エラー状態のビットのエラー訂正値、エラー状態のビットのエラー値などを挙げることができる。例えば、一実施形態では、ＥＣＣデコーダ３２２は、設定モジュール３５２に、未訂正のデータセット、及び検出ビットエラーの場所を指示するエラーバイアスを提供することができ、設定モジュール３５２は、それらの場所内のビットを逆転又は反転させることによって既知のバイアスを判定することができる。別の実施形態では、例えばＥＣＣデコーダ３２２は、設定モジュール３５２に、エラー訂正データセット、及び検出ビットエラーの場所を指示するエラーバイアスを提供することができ、設定モジュール３５２は、それらの場所内のビットを逆転又は反転させることによって、読み取りバイアスを判定することができる。
【０１２６】
ＥＣＣデコーダ３２２が、要求パケットには、ＥＣＣデコーダ３２２が訂正することができるビットよりも多くの、エラー状態のビットが含まれることを判定した場合には、ＥＣＣデコーダ３２２は、要求パケットの破損したＥＣＣブロック内のエラーを訂正することができず、割り込みを送る。一実施形態では、ＥＣＣデコーダ３２２は、要求パケットがエラー状態であることを指示するメッセージを有する割り込みを送る。このメッセージは、ＥＣＣデコーダ３２２がエラーを訂正することができないという情報を含み得、又はＥＣＣデコーダ３２２の、エラーを訂正する能力の欠如を暗示することができる。別の実施形態では、ＥＣＣデコーダ３２２は、割り込み及び／又はメッセージと共に、要求パケットの破損したＥＣＣブロックを送る。
【０１２７】
一実施形態では、ＥＣＣデコーダ３２２によって訂正することができない、要求パケットの破損したＥＣＣブロック、又は破損したＥＣＣブロックの諸部分は、マスターコントローラ２２４によって読み取られ、訂正されて、読み取りデータパイプライン１０８によって更に処理されるために、ＥＣＣデコーダ３２２に戻される。一実施形態では、要求パケットの破損したＥＣＣブロック、又は破損したＥＣＣブロックの諸部分は、そのデータを要求するデバイスに送られる。要求デバイス１５５は、ＥＣＣブロックを訂正するか、又はバックアップコピー若しくはミラーコピーなどの別のコピーを使用して、データを置き換えることができ、次いで、その要求データパケットの置換データを使用するか、又は読み取りデータパイプライン１０８に、その置換データを戻すことができる。要求デバイス１５５は、エラー状態の要求パケット内のヘッダ情報を使用して、破損した要求パケットを置き換えるか又はそのパケットが属するデータ構造を置き換えることが必要とされる、データを識別することができる。別の実施形態では、ソリッドステート記憶装置コントローラ１０４は、何らかのタイプのＲＡＩＤを使用してデータを記憶し、破損したデータを回復することが可能である。別の実施形態では、ＥＣＣデコーダ３２２は、割り込み及び／又はメッセージを送り、受信デバイスは、要求データパケットに関連する読み取り操作に失敗する。当業者には、ＥＣＣデコーダ３２２が、要求パケットの１つ以上のＥＣＣブロックが破損していること、及びＥＣＣデコーダ３２２がそのエラーを訂正できないことを判定する結果として取られる、他の選択肢並びに動作が認識されるであろう。
【０１２８】
読み取りデータパイプライン１０８は、ＥＣＣデコーダ３２２から、直接的に、又は間接的に、要求パケットのＥＣＣブロックを受信して、１つ以上のパケットヘッダを検査及び削除するデパケタイザー３２４を含む。デパケタイザー３２４は、ヘッダ内部の、パケット識別子、データ長、データの場所などを検査することによって、パケットヘッダを検証することができる。一実施形態では、ヘッダは、読み取りデータパイプライン１０８に供給されたパケットが、要求パケットであることを検証するために使用することができる、ハッシュコードを含む。デパケタイザー３２４はまた、要求パケットから、パケタイザー３０２によって付加されたヘッダも削除する。デパケタイザー３２４は、特定のパケットに対しては動作せずに、それらを修正することなく先へ通過させるように指示することができる。一例としては、索引の復元のためにヘッダ情報を必要とする、再構築プロセスの経過中に要求されるコンテナラベルの場合がある。更なる例としては、ソリッドステート記憶デバイス１０２内部での使用が予定されている、様々なタイプのパケットの転送が挙げられる。別の実施形態では、デパケタイザー３２４の動作は、パケットのタイプに依存し得る。
【０１２９】
読み取りデータパイプライン１０８は、デパケタイザー３２４からデータを受信し、不必要なデータを削除する、アライメントモジュール３２６を含む。一実施形態では、ソリッドステート記憶媒体１１０に送られた読み取りコマンドは、データのパケットを検索する。データを要求するデバイスは、検索されたパケット内部の全てのデータを必要とはしない場合があり、アライメントモジュール３２６が、不必要なデータを削除する。検索されたページ内部の全てのデータが、要求データである場合には、アライメントモジュール３２６は、いずれのデータも削除しない。
【０１３０】
アライメントモジュール３２６は、データセグメントを次のステージへと転送する前に、そのデータセグメントを要求するデバイスに対応する形態の、データ構造のデータセグメントとしてデータを再フォーマットする。典型的には、データが読み取りデータパイプライン１０８によって処理される際、データセグメント又はパケットのサイズは、様々なステージで変化する。アライメントモジュール３２６は、受信データを使用して、要求デバイス１５５に送られ、応答を形成するように結合されるために好適なデータセグメントへと、そのデータをフォーマットする。例えば、第１のデータパケットの一部分からのデータを、第２のデータパケットの一部分からのデータと組み合わせることができる。データセグメントが、要求デバイス１５５によって要求されたデータよりも大きい場合には、アライメントモジュール３２６は、不必要なデータを破棄することができる。
【０１３１】
一実施形態では、読み取りデータパイプライン１０８は、ソリッドステート記憶媒体１１０から読み取られた１つ以上の要求パケットを、読み取りデータパイプライン１０８によって処理する前にバッファリングする、読み取り同期バッファ３２８を含む。読み取り同期バッファ３２８は、ソリッドステート記憶装置のクロックドメインとローカルバスのクロックドメインとの境界にあり、クロックドメインの差異に配慮するために、バッファリングを提供する。
【０１３２】
別の実施形態では、読み取りデータパイプライン１０８は、アライメントモジュール３２６から要求パケットを受信して、そのパケットを要求デバイス１５５へ送信する前に記憶する、出力バッファ３３０を含む。出力バッファ３３０は、読み取りデータパイプライン１０８から、データセグメントを受信するときと、ソリッドステート記憶装置コントローラ１０４の他の部分、又は要求デバイス１５５へ、データセグメントを送信するときとの差異に配慮する。出力バッファ３３０はまた、データバス２０４の動作の効率を改善するために、データバス２０４が、読み取りデータパイプライン１０８によって維持することができる速度よりも速い速度で、読み取りデータパイプライン１０８からデータを受信することも可能にする。
【０１３３】
一実施形態では、ソリッドステート記憶装置コントローラ１０４は、読み取り電圧閾値などのような、ソリッドステート記憶媒体１１０に関する設定パラメーターを、設定及び調整する設定モジュール３５２含む。更なる実施形態では、設定モジュール３５２は、読み取りデータパイプライン１０８及び／又は書き込みデータパイプライン１０６から独立して動作するように、ソリッドステート記憶媒体１１０に統合することができる。特定の実施形態では、図４及び図５の事前対応設定モジュール４２４に関して、以下でより詳細に説明されるように、設定モジュール３５２は、ソリッドステート記憶媒体１１０の記憶セルに関する１つ以上の設定パラメーターを、記憶セルに関する記憶媒体特性に基づいて、記憶セルからのフィードバックを、殆ど又は全く使用せずに、開ループ方式で事前対応的に判定する。図示の実施形態では、設定モジュール３５２は、記憶制御バス２１２及び記憶バスコントローラ３４８と通信して、ソリッドステート記憶媒体１１０の記憶セルを、様々な設定パラメーターを使用するように設定する。別の実施形態では、設定モジュール３５２は、設定パラメーター、並びに／又は、ソリッドステート記憶装置コントローラ１０４及び／若しくはソリッドステート記憶デバイス１０２に関する設定を管理する。
【０１３４】
他の実施形態では、設定モジュール３５２は、ソリッドステート記憶媒体１１０からのデータセットを、直接的に、又は間接的に受信して、対応する記憶セルに関する設定パラメーターを、記憶セルからのフィードバックとしての読み取りデータセットを使用して、閉ループ方式で判定することができる。特定の実施形態では、設定モジュール３５２は、ＥＣＣデコーダ３２２からの、１つ以上の要求バイアスパケットを受信することができる。更なる実施形態では、設定モジュール３５２は、読み取り同期バッファ３２８からのデータセットを、記憶Ｉ／Ｏバス２１０から直接的に、逆バイアスモジュール３３２から、又は他の方法で、受信することができる。設定モジュール３５２は、図４に関して、より詳細に説明される。設定モジュール３５２が、ＥＣＣデコーダ３２２及び逆バイアスモジュール３３２の双方からの入力を受信する、別の実施形態は、図３Ｂに関して、以下で説明される。
【０１３５】
全般的には、設定モジュール３５２は、読み取り電圧閾値、固有抵抗閾値、プログラミング閾値、消去閾値などを、設定及び調整するなど、ソリッドステート記憶媒体１１０からの１つ以上の記憶セルに関する１つ以上の設定パラメーターを設定及び調整する。読み取り電圧閾値は、ソリッドステート記憶媒体１１０の記憶セル内に記憶される離散値を分離する電圧レベルである。種々のソリッドステート記憶技術が、電圧以外の種々の閾値を使用して、離散的状態を区別することができる。相変化ＲＡＭ、すなわちＰＲＡＭは、例えば、異なる状態で異なる電気抵抗を有する、カルコゲナイドガラス内に、データを記憶する。ＰＲＡＭに関しては、設定モジュール３５２は、離散的記憶状態を区別する固有抵抗閾値を、判定、設定、及び／又は調整することができる。当業者には、本開示の見地から、設定モジュール３５２が、読み取り電圧閾値に関して本明細書で説明されるものと実質的に同様の方式で、固有抵抗閾値若しくは他の設定パラメーターを、判定、設定、及び／又は調整することができることが認識されるであろう。
【０１３６】
単一のバイナリ値を記憶する、ＳＬＣ記憶セルに関しては、読み取り電圧閾値は、バイナリ１の状態とバイナリ０の状態との境界である。例えば、一実施形態では、読み取り電圧閾値よりも高い読み取り電圧レベルを有する記憶セルは、バイナリ１を記憶し、その一方で、読み取り電圧閾値よりも低い読み取り電圧レベルを有する記憶セルは、バイナリ０を記憶する。ＭＬＣ記憶セルなどの、他のタイプの記憶セルは、複数の読み取り電圧閾値を有して、３つ以上の離散的状態を区別することができる。
【０１３７】
例えば、一実施形態では、２ビットを記憶するＭＬＣ記憶セルは、１１、０１、００、及び１０のバイナリ値を隔てる、３つの読み取り電圧閾値を有し得る。これら３つの例示的読み取り電圧閾値は、ｘボルト、ｙボルト、及びｚボルトとすることができ、図６Ｃの読み取り電圧閾値６６２に関して、以下でより詳細に説明される。記憶セルから読み取られる電圧が、Ｖｍｉｎとｘボルトとの間に位置する場合には、バイナリ１１の状態が指示される。特定の実施形態では、Ｖｍｉｎは、負電圧とすることができる。記憶セルから読み取られる電圧が、ｘボルトとｙボルトとの間に位置する場合には、バイナリ０１の状態が指示される。記憶セルから読み取られる電圧が、ｙボルトとｚボルトとの間に位置する場合には、バイナリ００の状態が指示される。記憶セルから読み取られる電圧が、ｚボルトとＶｍａｘボルトとの間に位置する場合には、バイナリ１０の状態が指示される。
【０１３８】
Ｖｍｉｎ、Ｖｍａｘ、ｘ、ｙ、ｚに関する電圧は、記憶セルの製造元に基づいて変動し得る。読み取り電圧は、例えば、−３．５〜５．８ボルトの範囲、又は別の既定の電圧間の範囲とすることができる。同様に、読み取り電圧閾値に対する、バイナリ状態の変化１１、０１、００、及び１０の順序は、グレイコード符号化タイプ、バイナリコード符号化タイプなどのような、使用される符号化タイプに基づいて変動し得る。１つの例示的な符号化タイプは、図６Ｃに関して、以下で説明される。図６Ｃに関して、より詳細に説明されるように、単一のＭＬＣ記憶セルは、複数ビットを記憶するが、単一の記憶セルからのビットは、隣接するアドレスを有し得ず、異なる物理ページ、論理ページ内などに含まれ得る。
【０１３９】
特定の実施形態では、離散値間の境界を参照する代わりに、読み取り電圧閾値は、一定の値を指示する、電圧の範囲（最大及び最小）を含む。一定の範囲である電圧閾値は、その範囲の一方の端で、又は両端で境界を変化させることによって、調整することができる。ソリッドステート記憶媒体１１０に関する、読み取り電圧閾値又は他の設定パラメーターは、一実施形態では、製造元によって定義することができるデフォルトのレベルで、最初に設定される。多くの場合、そのような設定パラメーターのデフォルトのレベルは、ソリッドステート記憶媒体１１０の広範囲の汎用的使用に適応するように設定される。有利には、設定モジュール３５２の実施形態は、ソリッドステート記憶媒体１１０が、より具体的な使用特性に基づいて、極めて最適に使用されることを可能にする。設定モジュール３５２は、特定の実施形態では、１つ以上の設定パラメーターに関するデフォルトのレベルを上書きして、ソリッドステート記憶媒体１１０の記憶媒体特性に基づいて、その１つ以上の設定パラメーターを異なるレベルに設定する。設定モジュール３５２は、デフォルトのレベルと比較した場合に、ソリッドステート記憶媒体１１０が遭遇するエラーの量を減少させるレベルに、デフォルトのレベルと比較した場合に、検出及び訂正することができるエラーの量を増大させるレベルに、デフォルトのレベルと比較した場合に、ソリッドステート記憶媒体１１０の１秒当りの入力／出力（「ＩＯＰＳ」）の数を増大させるレベルに、デフォルトのレベルと比較した場合に、ソリッドステート記憶媒体１１０の可使時間を増大させるレベルに、及び／又はデフォルトのレベルと比較した場合に、ソリッドステート記憶媒体１１０の有用性を他の方法で改善するレベルに、設定パラメーターを設定することができる。
【０１４０】
記憶セルの読み取り電圧レベル、及び他の設定パラメーターはまた、ソリッドステート記憶媒体１１０のリーク及び他の外乱のために、時間と共に推移する場合もある。リークの割合もまた、ソリッドステート記憶媒体１１０の消耗及び経年と共に増大し得る。記憶セルの読み取り電圧レベルが、読み取り電圧閾値を超えて推移する場合には、記憶セルから読み取られるデータの値が、その記憶セルに書き込まれたデータの値とは異なるために、データエラーが発生する。設定モジュール３５２は、一実施形態では、ソリッドステート記憶媒体１１０からの１つ以上の記憶セルに関する、読み取り電圧閾値又は他の設定パラメーターを調整して、記憶セルの読み取り電圧レベルの推移を補正する。事前対応的に、及び／又は動的に、読み取り電圧閾値を調整することによって、設定モジュール３５２は、ソリッドステート記憶媒体１１０内に記憶されるデータの、保持率及び／又は信頼性を向上させ、ソリッドステート記憶媒体１１０自体の可使耐用年数を延長することができ、ソリッドステート記憶媒体１１０の有用性を改善する。
【０１４１】
設定モジュール３５２は、一実施形態では、ソリッドステート記憶媒体１１０からのデータセット又はパケットの、既知のバイアスを使用して、読み取り電圧閾値又は他の設定パラメーターを調整する。バイアスモジュール３１８に関して上述したように、バイアスは、特定のデータパターンを呈するための、ビットのセット内部のビットに関する値の、優先度、確率、傾向、又は望ましさである。バイアスは、自然な特性、設計された属性、記憶媒体に対する操作を実行する特性、又は偶発性とすることができる。バイアスは、バイナリ１に向けたもの、バイナリ０に向けたもの、バイナリ１とバイナリ０との平衡に向けたもの、特定のビットに関する特定のバイナリ値に向けたもの、バイナリ１とバイナリ０との特定の比率に向けたもの、一定のバイナリパターンに向けたものなどとすることができる。
【０１４２】
一実施形態では、設定モジュール３５２が受信するデータセット又はパケットは、既知のバイアスを有する。データセット又はパケットは、少なくとも３つの理由のうちの１つから、既知のバイアスを有する。第１に、データセット又はパケットは、そのデータセット又はパケットが書き込まれたときに、バイアスモジュール３１８が、そのデータセット又はパケットにバイアスを印加したために、既知のバイアスを有し得る。一実施形態では、バイアスモジュール３１８及び／又は逆バイアスモジュール３３２は、設定モジュール３５２と協働して、既知のバイアスを、設定モジュール３５２に通信する。第２に、データセット又はパケットは、そのデータセット又はパケットが、ソリッドステート記憶媒体１１０の未使用の、書き込まれていない領域から読み取られるために、既知のバイアスを有し得る。例えば、一実施形態では、ソリッドステート記憶媒体１１０の未使用の、書き込まれていない領域は、典型的には、書き込まれていない状態での排他的なバイナリ１又は排他的なバイナリ０の、既知のバイアスを有し得る。第３に、データセット又はパケットは、ＥＣＣデコーダ３２２が、そのデータセット又はパケットを訂正しており、エラー状態にあったデータセットの１つ以上のビットの、元の正しい値を判定しているために、既知のバイアスを有し得る。データセット内のビットに関する正しい値が、この既知のバイアスを構成する。データセット内のエラーによって引き起こされる、既知のバイアスからの偏差が、エラーバイアスである。
【０１４３】
設定モジュール３５２は、一実施形態では、データセット又はパケットに関する読み取りバイアスが、既知のバイアスから偏移することを判定し、読み取りバイアスと既知のバイアスとの差異に基づいて、そのデータセットに関する偏差の方向を判定する。更なる実施形態では、設定モジュール３５２は、この偏差の方向に基づいて、そのデータセットに対応する記憶セルに関する、読み取り電圧閾値、又は固有抵抗閾値などの別の読み取り閾値を調整する。例えば、一実施形態では、設定モジュール３５２は、データセットが、既知のバイアスに基づいて予想されるよりも多くのバイナリ０を有する場合には、その記憶セルに関して、従前の読み取り電圧閾値から、新たな読み取り電圧閾値へと、読み取り電圧閾値を低下させることができる。ＭＬＣ記憶セルに関しては、一実施形態では、データセットは、種々のアドレス、種々のページなどからのデータを含むことにより、そのデータセットは、関連する記憶セルが記憶する全てのデータを含み得る。設定モジュール３５２は、記憶セルの物理的及び／又は電気的アーキテクチャーなどに基づいて、記憶セルに関して使用される、符号化タイプなどの記憶セルの既知の特性に、読み取り電圧閾値調整の基盤を置くことができる。更なる実施形態では、設定モジュール３５２は、種々のアドレス又はページからのデータを、変形、翻訳、若しくは組み合わせて、ＭＬＣ記憶セルに関する既知のバイアス、読み取りバイアス、及び／又は既知のバイアスからの偏差の判定を、促進させることができる。別の実施形態では、ＭＬＣ記憶セルに関しては、設定モジュール３５２は、ＭＬＣ記憶セルによって記憶されるデータのサブセットに基づいて、ＭＬＣ記憶セルに関する読み取り電圧閾値を調整することができる。
【０１４４】
設定モジュール３５２は、一実施形態では、データセットを新たな読み取り閾値を使用して再読み取りすることを要求することができる。設定モジュール３５２は、再読み取りされたデータセットが、既知のバイアスから偏移する読み取りバイアスを有するか否かを判定することができ、そのデータセットの読み取りバイアスが、もはや既知のバイアスから一定の閾値量（ゼロとすることができる）を超えて偏移しなくなるまで、ＥＣＣデコーダ３２２がデータセット内のエラーを訂正できるようになるまで、などのように読み取り電圧閾値を反復的に、新たな読み取り電圧閾値に調整することができる。一実施形態では、設定モジュール３５２は、新たな読み取り電圧閾値が、ソリッドステート記憶媒体１１０からの後続のデータ読み取りに関して持続的となるように、新たな読み取り電圧閾値を記憶する。更なる実施形態では、ソリッドステート記憶媒体１１０が、後続のデータ読み取りに関して、新たな読み取り電圧閾値を記憶する。
【０１４５】
設定モジュール３５２は、一実施形態では、各パケット読み取りの読み取りバイアスを監視し、読み取り要求に応答して、パケット又は他のデータセットのバイアスを既知のバイアスと比較することができる。更なる実施形態では、設定モジュール３５２は、各パケット読み取りの読み取りバイアスを監視することができ、例えば、ＥＣＣデコーダ３２２が訂正することができない、訂正不能なビットエラーなどのような、データエラーに応答して、データセット又はパケットのバイアスを、既知のバイアスと比較することができる。更なる実施形態では、設定モジュール３５２は、各パケット読み取りの読み取りバイアスを監視することができず、排他的にデータエラーに応答して、データセット又はパケットのバイアスを判定し、既知のバイアスと比較することができる。図４及び図５の事前対応設定モジュール４２４に関して、以下で説明されるように、特定の実施形態では、設定モジュール３５２は、読み取りデータセット若しくは読み取りパケットに基づく調整の代わりに、又はそれに加えて、記憶媒体特性に基づいて、事前対応的に、読み取り電圧閾値若しくは他の設定パラメーターを設定又は調整する。
【０１４６】
一実施形態では、ソリッドステート記憶装置コントローラ１０４は、それぞれが独立した読み取り電圧閾値を有し得るソリッドステート記憶媒体１１０内部の、複数のチャネル、記憶素子、ダイ、チップ、物理消去ブロック（「ＰＥＢ」）、記憶セルのグルーピングなどからの、データパケット内のデータを読み取ることができる。チャネル、記憶素子、ダイ、チップ、及び／又は記憶セルのグルーピングの製造元は、各チャネル、記憶素子、ダイ、チップ、及び／又は記憶セルのグルーピングに関する読み取り電圧閾値が、ソリッドステート記憶装置コントローラ１０４によって独立して調整可能であるようにすることができる。あるいは、又はそれに加えて、チャネル、記憶素子、ダイ、チップ、及び／又は記憶セルのグルーピングの製造元は、チャネルのグループ、記憶素子のグループ、ダイのグループ、チップのグループ、及び／又は記憶セルのグルーピングのグループに関する読み取り電圧閾値が、ソリッドステート記憶装置コントローラ１０４によって別個のグループとして調整可能であるようにすることができる。
【０１４７】
一実施形態では、ＥＣＣエンコーダ３０４は、各チャネル、記憶素子、ダイ、チップ、ＰＥＢ、又は他の記憶セルのグルーピングに関する、独立したＥＣＣ検査ビットを作成する。ＥＣＣ検査ビットは、複数のグルーピング全体にわたって分散されるのではなく、記憶セルの特定のグルーピング上に、データと共に記憶される。ＥＣＣ検査ビットが、記憶セルの各グルーピングに関して独立して作成及び記憶される場合には、設定モジュール３５２は、データエラーに応答して、ＥＣＣ検査ビット、及びＥＣＣ検査ビットが記憶セルのグルーピングに書き込まれた方式に関する既知のアーキテクチャーを使用して、記憶セルのいずれのグルーピング内にデータエラーが発生したかを判定し、それらのグルーピングの読み取り電圧閾値を調整することができる。データパケットに関するＥＣＣ検査ビットが、記憶セルの複数のグルーピング全体にわたって記憶される場合には、設定モジュール３５２は、記憶セルの各グルーピングからのデータセットの読み取りバイアスを別個に検査して、対応する読み取り電圧閾値のうちの１つ以上を調整することができる。複数のチャネルを有する記憶素子のアレイは、図６Ａ及び図６Ｂに関して、より詳細に説明される。
【０１４８】
一実施形態では、読み取りデータパイプライン１０８は、逆バイアスモジュール３３２を含み、この逆バイアスモジュール３３２は、ＥＣＣデコーダ３２２から、直接的に又は間接的に、１つ以上の要求バイアスパケットを受信し、バイアスモジュール３１８のバイアス印加プロセスを逆行させることによって、１つ以上の要求パケットを変換して、それらの元の原始形態に戻した後に、その１つ以上の要求パケットを、デパケタイザー３２４に送る。一実施形態では、逆バイアスモジュール３３２は、バイアスモジュール３１８によって記憶された１つ以上の標識を使用して、バイアスパケットを変換し、それらの元の原始データに戻すことができる。特定の実施形態では、逆バイアスモジュール３３２は、図３Ｂに関して以下で説明されるように、パケット又は他のデータセットに関する、既知のバイアス、読み取りバイアス、及び／又は既知のバイアスからの偏差を、設定モジュール３５２に提供することができる。
【０１４９】
更なる実施形態では、逆バイアスモジュール３３２は、標識を使用することなく、バイアスパケットを変換して、それらの元の原始データに戻す。標識を使用する代わりに、逆バイアスモジュール３３２は、バイアスモジュール３１８の逆演算であるアルゴリズムを、実装することができる。このアルゴリズムは、受信された各データパケット、及び／又は選択した数の受信データパケットに関するバイアスを、逆転させることができる。図示の実施形態では、逆バイアスモジュール３３２は、ＥＣＣデコーダ３２２とデパケタイザー３２４との間に位置する。更なる実施形態では、逆バイアスモジュール３３２は、書き込みデータパイプライン１０６内のバイアスモジュール３１８の場所に基づいて、読み取りデータパイプライン１０８内の他の場所に位置することができる。
【０１５０】
別の実施形態では、読み取りデータパイプライン１０８は、出力バッファ３３０にデータセグメントを送る前に、デパケタイザー３２４によってフォーマットされたデータセグメントの暗号を解除する、暗号解除モジュール３３４を含む。データセグメントは、読み取り同期バッファ３２８によって受信された要求パケットの検索を開始する読み取り要求と共に受信される、暗号化キーを使用して、暗号解除することができる。暗号解除モジュール３３４は、第１のパケットを、その第１のパケットに関する読み取り要求と共に受信される暗号化キーを使用して暗号解除することができ、次いで、第２のパケットを、異なる暗号化キーを使用して暗号解除することができ、又は暗号解除することなく、読み取りデータパイプライン１０８の次のステージへと、第２のパケットを通過させることができる。パケットが、非秘密暗号ナンスを有して記憶された場合、そのナンスを暗号化キーと共に使用して、そのデータパケットを暗号解除する。暗号化キーは、クライアント１１４、コンピュータ１１２、キー管理プログラム、又はソリッドステート記憶装置コントローラ１０４によって使用される暗号化キーを管理する他のデバイスから受信することができる。
【０１５１】
別の実施形態では、読み取りデータパイプライン１０８は、デパケタイザー３２４によってフォーマットされたデータセグメントを解凍する、解凍モジュール３３６を含む。一実施形態では、解凍モジュール３３６は、パケットヘッダ及びコンテナラベルの一方、若しくは双方内に記憶された圧縮情報を使用して、圧縮モジュール３１２によってデータを圧縮するために使用されたルーチンに対する、相補的なルーチンを選択する。別の実施形態では、解凍モジュール３３６によって使用される解凍ルーチンは、データセグメントを解凍することを要求するデバイスによって、指定される。別の実施形態では、解凍モジュール３３６は、データ構造タイプ又はデータ構造クラスをそれぞれの基準とする、デフォルトの設定に従って、解凍ルーチンを選択する。第１のオブジェクトの第１のパケットは、デフォルトの解凍ルーチンを上書きすることが可能であり得、同一のデータ構造のクラス及びデータ構造のタイプの、第２のデータ構造の第２のパケットは、デフォルトの解凍ルーチンを使用することができ、同一のデータ構造のクラス及びデータ構造のタイプの、第３のデータ構造の第３のデータパケットは、解凍を使用しない場合がある。
【０１５２】
別の実施形態では、読み取りデータパイプライン１０８は、読み取りデータパイプライン１０８内部での１つ以上のユーザー定義可能な機能を含む、読み取りプログラムモジュール３３８を含む。読み取りプログラムモジュール３３８は、書き込みプログラムモジュール３１０と同様の特性を有し、読み取りデータパイプライン１０８に、ユーザーがカスタム機能を提供することを可能にする。読み取りプログラムモジュール３３８は、図３Ａに示されるように位置することができ、読み取りデータパイプライン１０８内部の別の場所に位置することができ、又は読み取りデータパイプライン１０８内部の複数の場所内の、複数の部分を含み得る。更には、読み取りデータパイプライン１０８内部の、複数の場所内部に、独立して動作する複数の読み取りプログラムモジュール３３８が存在し得る。当業者には、読み取りデータパイプライン１０８内部の読み取りプログラムモジュール３３８の、他の形態が認識されるであろう。書き込みデータパイプライン１０６と同様に、読み取りデータパイプライン１０８のステージは、再配列することができ、当業者には、読み取りデータパイプライン１０８内部のステージの、他の順序が認識されるであろう。
【０１５３】
ソリッドステート記憶装置コントローラ１０４は、制御及び状態レジスタ３４０、並びに対応する制御キュー３４２を含む。制御及び状態レジスタ３４０、並びに制御キュー３４２は、書き込みデータパイプライン１０６及び読み取りデータパイプライン１０８内で処理されるデータに関連する、コマンド及びサブコマンドの、制御並びに順序付けを促進する。例えば、パケタイザー３０２内のデータセグメントは、ＥＣＣエンコーダ３０４に関連する、制御キュー３４２内の１つ以上の対応する制御コマンド又は命令を有し得る。データセグメントがパケット化される際、一部の命令又はコマンドを、パケタイザー３０２内部で実行することができる。他のコマンド又は命令は、そのデータセグメントから作成された新規形成データパケットが、次のステージに渡される際に、制御及び状態レジスタ３４０を通じて、次の制御キュー３４２に渡すことができる。
【０１５４】
コマンド又は命令は、パケットが書き込みデータパイプライン１０６に転送されている間に、同時に制御キュー３４２内に読み込むことができ、各パイプラインステージは、対応するパケットがそのステージによって実行される際に、適切なコマンド又は命令を引き出す。同様に、コマンド又は命令は、パケットが読み取りデータパイプライン１０８から要求されている間に、同時に制御キュー３４２内に読み込むことができ、各パイプラインステージは、対応するパケットがそのステージによって実行される際に適切なコマンド又は命令を引き出す。当業者には、制御及び状態レジスタ３４０、並びに制御キュー３４２の、他の特徴及び機能が認識されるであろう。
【０１５５】
ソリッドステート記憶装置コントローラ１０４及び／又はソリッドステート記憶デバイス１０２はまた、バンクインターリーブコントローラ３４４、同期バッファ３４６、記憶バスコントローラ３４８、及びマルチプレクサー（「ＭＵＸ」）３５０も含み得る。
【０１５６】
記憶セルの設定
図３Ｂは、ソリッドステート記憶装置コントローラ１０４の別の実施形態３０１を示す、概略ブロック図である。図示の実施形態３０１では、ソリッドステート記憶装置コントローラ１０４は、デバイス因数モジュール３５４、逆バイアスモジュール３３２、ＥＣＣデコーダ３２２、及び設定モジュール３５２を含む。図３Ｂには示されないが、図３Ｂに示す実施形態のソリッドステート記憶装置コントローラ１０４はまた、特定の実施形態では、上述のような、図３Ａに示すソリッドステート記憶装置コントローラ１０４からの、１つ以上の追加的モジュール又は他の素子も含み得る。
【０１５７】
図示の実施形態３０１では、設定モジュール３５２は、逆バイアスモジュール３３２、ＥＣＣデコーダ３２２、及びデバイス因数モジュール３５４からの入力を受信し、設定モジュール３５２は、その入力に基づいて、設定パラメーター調整３５８を判定する。他の実施形態では、設定モジュール３５２は、逆バイアスモジュール３３２のみから、ＥＣＣデコーダ３２２のみから、デバイス因数モジュール３５４のみから、あるいは逆バイアスモジュール３３２、ＥＣＣデコーダ３２２、及び／又はデバイス因数モジュール３５４の異なる組み合わせからの入力を受信することができる。
【０１５８】
逆バイアスモジュール３３２は、一実施形態では、データセットの既知のバイアス及び／又は実際の読み取りバイアスを設定モジュール３５２に提供する。逆バイアスモジュール３３２は、ソリッドステート記憶媒体１１０に書き込まれるデータに、バイアスモジュール３１８が適用する、可逆的バイアス印加アルゴリズムに基づく予想バイアスとして、既知のバイアスを提供することができる。この予想バイアスは、特定の実施形態では、あるバイアスに正確に適合するようにデータにバイアスを印加する可逆的バイアス印加アルゴリズムを、バイアスモジュール３１８が使用する場合の、正確なバイアスとすることができる。例えば、バイアスモジュール３１８が、データセットに埋め込みデータを追加することにより、そのデータセットは、バイナリ１とバイナリ０との正確な平衡などを有し得、既知のバイアスを正確なものにすることができる。
【０１５９】
別の実施形態では、逆バイアスモジュール３３２は、バイアスモジュール３１８がデータに適用する、可逆的バイアス印加アルゴリズムに基づく範囲、分散、平均、推定などとして、予想バイアスを提供することができる。例えば、逆バイアスモジュール３３２は、逆バイアスモジュール３３２が、ソリッドステート記憶媒体１１０から読み取られたデータに、逆バイアス印加アルゴリズムを適用する際、予想バイアスを、経時的に測定又は学習することができる。一実施形態では、予想バイアスは、バイアスモジュール３１８の可逆的バイアス印加アルゴリズムから、数学的に、又は他の方法で、可能なバイアス若しくは適当なバイアスの範囲又は分散として導き出すことができる。
【０１６０】
例えば、バイアスモジュール３１８が、直流（「ＤＣ」）平衡と称される場合もある、半分のバイナリ１と半分のバイナリ０との平衡に向けて、データにバイアスを印加する場合は、バイアスデータに関する実際のバイアスの範囲は、約４６パーセントのバイナリ１〜５４パーセントのバイナリ１などの範囲とすることができる。データセットの既知のバイアス、及び読み取りバイアスはまた、他の実施形態では、個々のバイナリ１及びバイナリ０に排他的に基づく代わりに、ビットの、マルチビットシンボル又はパターンなどにも基づき得る。逆バイアスモジュール３３２は、図示の実施形態３０１では、設定モジュール３５２に入力を提供するが、特定の実施形態では、バイアスモジュール３１８が、既知のバイアスとして、設定モジュール３５２に予想バイアスを提供することができ、この既知のバイアスは、設定モジュール３５２内にハードコード化又はプログラムすることなどができる。
【０１６１】
一実施形態では、逆バイアスモジュール３３２は、ソリッドステート記憶媒体１１０から読み取られたデータセットの読み取りバイアスを、設定モジュール３５２に提供する。例えば、逆バイアスモジュール３３２が、バイアスモジュール３１８のバイアス印加プロセスを逆行させることによって、バイアスデータパケット又は他のデータセットを変換して、それらの元の原始形態に戻す際に、逆バイアスモジュール３３２は、そのデータパケット又は他のデータセットの読み取りバイアスを、判定、測定、若しくは検出することができる。逆バイアスモジュール３３２は、使用されるバイアス印加プロセスに応じて、バイアス印加プロセスを逆行させる前に、逆行中に、逆行させた後に、読み取りバイアスを判定することができる。特定の実施形態では、データセットの読み取りバイアスが、そのデータセットの既知のバイアス／予想バイアスから偏移していることを、逆バイアスモジュール３３２が判定する場合には、逆バイアスモジュール３３２は、そのデータセットを設定モジュール３５２に提供して、そのデータセットの記憶セルに、設定パラメーター調整３５８を実施し得ることにより、そのデータセットを再読み取りすることができる。他の実施形態では、図３Ａに関して上述したように、設定モジュール３５２は、逆バイアスモジュール３３２がデータセットを受信する前に、そのデータセットに関する読み取り電圧閾値を調整することができる。当業者には、それぞれが本発明の範囲内に含まれる、設定モジュール３５２、逆バイアスモジュール３３２、及びＥＣＣデコーダ３２２の他の配置構成が、本明細書の見地から、認識されるであろう。
【０１６２】
ＥＣＣデコーダ３２２は、一実施形態では、データセットに関する既知のバイアス及び／又は読み取りバイアスを、設定モジュール３５２に提供する。ＥＣＣデコーダ３２２は、データセットに関するビットの正しい状態を有する、データセットに関する既知のバイアスを、提供することができる。例えば、ＥＣＣデコーダ３２２が、データセット内の１つ以上の訂正可能なビットエラーを訂正した後、ＥＣＣデコーダ３２２は、そのデータセットのビットのエラー訂正状態を、そのデータセットがソリッドステート記憶媒体１１０に書き込まれた状態の既知のバイアスとして、設定モジュール３５２に提供することができる。ＥＣＣデコーダ３２２は、更なる実施形態では、データセットに関する読み取りバイアスを、そのデータセットがソリッドステート記憶媒体１１０から読み取られた際にエラー状態にあった、データセットの１つ以上のビットを指示するエラーバイアスとして、提供することができる。
【０１６３】
ＥＣＣデコーダ３２２は、訂正可能なエラーに関しては、データセットのビットの、正確な、元の正しい値（既知のバイアス）、及びそのデータセットのエラー状態のビットの正確な場所（エラーバイアス）を判定するため、設定モジュール３５２は、既知のバイアスからの、そのデータセットの正確な偏差を判定することができる。この理由のために、特定の実施形態では、設定モジュール３５２は、利用可能な場合、ＥＣＣデコーダ３２２からの既知のバイアス及びエラーバイアスを使用して、逆バイアスモジュール３３２からの予想バイアス及び読み取りバイアスを使用するよりも正確な設定パラメーター調整３５８を実施することができる。
【０１６４】
設定モジュール３５２は、一実施形態では、データセット内の１つ以上の訂正可能なビットエラーに応答して、ＥＣＣデコーダ３２２からのデータセットに関する既知のバイアス及び／又はエラーバイアスを使用する。更なる実施形態では、設定モジュール３５２は、可逆的バイアス印加アルゴリズムに基づく予想バイアスを、既知のバイアスとして使用する。特定の実施形態では、予想バイアスは、データセット内の１つ以上の訂正不能なビットエラーに応答して、既知のバイアスとして使用される。訂正不能ビットエラーに関しては、ＥＣＣデコーダ３２２からのエラーバイアスは、設定モジュール３５２が利用することはできないが、これは訂正不能ビットエラー条件により、バイアスが未定義となるためである。データセット内の訂正不能ビットエラーに関しては、特定の実施形態では、より大きいエラーの深刻度のために、データセットの読み取りバイアスは、訂正可能なビットエラーに関するよりも、そのデータセットに関する既知の予想バイアスから大きく偏移し得る。訂正不能ビットエラーに関する、データセットの既知の予想バイアスからの、データセットの読み取りバイアスのより大きい偏差の規模のために、逆バイアスモジュール３３２からのバイアス情報は、訂正可能なビットエラーに関するよりも、訂正不能ビットエラーに関して、設定パラメーター調整３５８に関するより良好な方向の標識を提供することができる。
【０１６５】
デバイス因数モジュール３５４は、一実施形態では、ソリッドステート記憶デバイス１０２に関する１つ以上の統計を設定モジュール３５２に提供する。設定モジュール３５２は、一実施形態では、その１つ以上の統計に基づいて、設定パラメーター調整３５８を実施することができ、その１つ以上の統計を使用して、逆バイアスモジュール３３２及び／又はＥＣＣデコーダ３２２からの情報を補完することなどが可能である。ソリッドステート記憶デバイス１０２に関する１つ以上の統計は、一実施形態では、ソリッドステート記憶デバイス１０２の記憶セルの読み取り電圧に影響を及ぼし得る統計を含む。例えば、特定の実施形態では、１つ以上の統計としては、ソリッドステート記憶デバイス１０２に関する温度、ソリッドステート記憶デバイス１０２に関するエラー率（訂正不能ビットエラー率「ＵＢＥＲ」）などのような）、ソリッドステート記憶デバイス１０２に関する消去サイクル回数、ソリッドステート記憶デバイス１０２に関する記憶要求待ち時間（平均、最大、又は他の、記憶要求実行待ち時間など）、ソリッドステート記憶デバイス１０２の経年、及び／又は他の統計若しくは特性を挙げることができる。
【０１６６】
図示の実施形態３０１では、デバイス因数モジュール３５４は、１つ以上のセンサー３５６からの入力を受信する。１つ以上のセンサー３５６は、それぞれ、温度、湿度、移動、及び／又は他の統計などの、ソリッドステート記憶デバイス１０２に関する統計若しくは特性を検出する。例えば、様々な実施形態では、１つ以上のセンサー３５６としては、温度センサー、湿度センサー、加速度計、及び／又はソリッドステート記憶デバイス１０２に関する別のタイプのセンサーを挙げることができる。一実施形態では、デバイス因数モジュール３５４及び／又は設定モジュール３５２は、１つ以上の他のモジュール又は素子から、ソリッドステート記憶デバイス１０２に関する１つ以上の統計を受信することができる。例えば、デバイス因数モジュール３５４及び／又は設定モジュール３５２は、ＥＣＣデコーダ３２２から、ＵＢＥＲなどのような、ソリッドステート記憶デバイス１０２に関するエラー率を受信することができる。
【０１６７】
設定モジュール３５２は、様々な実施形態では、逆バイアスモジュール３３２、ＥＣＣデコーダ３２２、及び／又はデバイス因数モジュール３５４からの、単一の入力若しくは入力の組み合わせに、設定パラメーター調整３５８の基盤を置くことができる。特定の実施形態では、逆バイアスモジュール３３２、ＥＣＣデコーダ３２２、及び／又はデバイス因数モジュール３５４からの、１つ以上の入力は、データセットに関して利用することができない場合がある。例えば、ＥＣＣデコーダ３２２は、訂正不能なビットエラーを有するデータセットに関しては、エラーバイアス及び既知のバイアスを提供することができず、逆バイアスモジュール３３２は、逆バイアスモジュール３３２が予想バイアスを判定している間の、学習期間中のデータセットに関しては、既知の予想バイアス又は読み取りバイアスを提供することができず、デバイス因数モジュール３５４は、最初の始動期間中は、１つ以上の統計を提供することができない、などの場合がある。
【０１６８】
一実施形態では、設定モジュール３５２は、入力の既定の階層性又は序列による、最良の利用可能な入力に、設定パラメーター調整３５８の基盤を置く。例えば、設定モジュール３５２は、利用可能な場合には、ＥＣＣデコーダ３２２からの、既知のバイアス及びエラーバイアスに、ＥＣＣデコーダ３２２からの入力が利用可能ではない場合には、逆バイアスモジュール３３２からの、既知の予想バイアス及び読み取りバイアスに、ＥＣＣデコーダ３２２及び逆バイアスモジュール３３２の双方からの入力が利用不可能である場合には、デバイス因数モジュール３５４からの１つ以上の統計に、設定パラメーター調整３５８の基盤を置くことができる。
【０１６９】
更なる実施形態では、設定モジュール３５２は、逆バイアスモジュール３３２、ＥＣＣデコーダ３２２、及びデバイス因数モジュール３５４のそれぞれからの入力が利用不可能である場合には、データエラーなどに応答して、無作為の設定パラメーター調整３５８を実施することができる。例えば、設定モジュール３５２は、一方向での設定パラメーター調整３５８を試みて、データセットを再読み取りし、エラーに関する検査を行い、エラーが持続する場合には、逆方向での設定パラメーター調整３５８を試みることができる。
【０１７０】
別の実施形態では、設定モジュール３５２は、逆バイアスモジュール３３２、ＥＣＣデコーダ３２２、及び／又はデバイス因数モジュール３５４からの入力を組み合わせることによって、複数の入力に、設定パラメーター調整３５８の基盤を置くことができる。設定モジュール３５２は、入力をスケーリングし、入力を重み付けし、入力を共通の単位に変換するなどして、入力の組み合わせを促進することができる。例えば、設定モジュール３５２は、一実施形態では、各入力を、個々の予備閾値調整に変換し、次いで、その予備閾値調整を合計して、設定パラメーター調整３５８を提供することができる。設定モジュール３５２は、実施例では、関連する入力の既定の階層性又は序列に基づいて、各予備閾値調整を重み付けすることができる。例えば、ＥＣＣデコーダ３２２からの、既知のバイアス及びエラーバイアスが、一方向での設定パラメーター調整３５８を指示し、逆バイアスモジュール３３２からの、既知の予想バイアス及び読み取りバイアスが、逆方向での設定パラメーター調整３５８を指示する場合には、既定の階層性又は序列内で、より大きい重み又は優先度を有する入力が、設定パラメーター調整３５８の方向を指定することになる。
【０１７１】
図４は、設定モジュール３５２の一実施形態を示す、概略ブロック図である。図示の実施形態では、設定モジュール３５２は、データセット読み取りモジュール４０２、偏差モジュール４０４、方向モジュール４０６、調整モジュール４０８、持続モジュール４１０、ＥＣＣモジュール４１２、分散モジュール４１４、データセットソースモジュール４２２、事前対応設定モジュール４２４、及び書き込み電圧モジュール４１６を含む。書き込み電圧モジュール４１６は、設定モジュール３５２に統合することができ、又は設定モジュール３５２から分離することもできる。図３Ａ及び図３Ｂの設定モジュール３５２に関して上述したように、設定モジュール３５２は、設定モジュール３５２が、ソリッドステート記憶媒体１１０の１つ以上の記憶セルに関する、読み取り電圧閾値、及び／又は別の設定パラメーターを調整することができるように、書き込みデータパイプライン１０６の一部分、読み取りデータパイプライン１０８の一部分、ソリッドステート記憶媒体１１０の一部分などとすることができる。読み取り電圧閾値を、例示的な設定パラメーターとして使用する、特定の実施形態が説明されるが、設定モジュール３５２は、他の設定パラメーターを、同様に、判定及び調整することができる。
【０１７２】
設定モジュール３５２は、一実施形態では、事前対応設定モジュール４２４を使用する開ループモデルで、設定パラメーターを、事前対応的に設定する。別の実施形態では、設定モジュール３５２は、データセット読み取りモジュール４０２、偏差モジュール４０４、方向モジュール４０６、及び／又は調整モジュール４０８を使用する閉ループモデルで、設定パラメーターを、反応的に設定する。特定の実施形態では、設定モジュール３５２は、設定パラメーターに、幾つかの層又は相の調整を実施することができ、事前対応設定モジュール４２４を使用して、設定パラメーターを事前対応的に判定し、またデータセット読み取りモジュール４０２が、ソリッドステート記憶媒体１１０からデータセットを読み取る際に、その設定パラメーターを反応的に調整する。
【０１７３】
一実施形態では、データセット読み取りモジュール４０２は、ソリッドステート記憶媒体１１０の記憶セルから、データセットを読み取る。データセット読み取りモジュール４０２は、ソリッドステート記憶媒体１１０から、直接的に、又は間接的に、データセットを読み取ることができる。例えば、一実施形態では、データセット読み取りモジュール４０２は、読み取りデータパイプライン１０８内、ソリッドステート記憶媒体１１０内などの、別のモジュール又は素子から、データセットを受信することができる。
【０１７４】
一実施形態では、データセット読み取りモジュール４０２は、試験操作に応答してデータセットを読み取り、そのデータセットは、試験操作の一部として読み取られるサンプルデータセットとすることができる。更なる実施形態では、データセット読み取りモジュール４０２は、クライアントからの読み取り要求に応答してデータセットを読み取り、そのデータセットは、クライアントか要求したデータセットとすることができる。データセットは、一実施形態では、完全パケット、パケットの一部分などとすることができる。別の実施形態では、データセットのサイズは、試験操作によって、クライアントからの読み取り要求などによって、設定することができる。更なる実施形態では、データセットは、パケット又は他のデータ構造から独立した、ソリッドステート記憶媒体１１０からの生データとすることができる。
【０１７５】
データセットは、更なる実施形態では、既知のバイアスを有する記憶セル内に、元々記憶されていたものである。例えば、データセットは、バイアスモジュール３１８がバイアス印加したパケットからのものとすることができ、又は例えば、ソリッドステート記憶媒体１１０の製造元による既知のバイアスで、ソリッドステート記憶媒体１１０にプログラムされた、デフォルトのデータ若しくは他のデータを記憶する、未使用状態の、ソリッドステート記憶媒体１１０の記憶セルからのものなどとすることができる。
【０１７６】
一実施形態では、データセットは、バイアスモジュール３１８が、パケットにバイアスを印加するために採用する、バイアス印加スキームに関連して、サイズ設定することができる。例えば、一実施形態では、データセットは、バイアスモジュール３１８が、パケットにバイアスを印加するために使用する、擬似ランダム２進シーケンスなどの、決定論的シーケンスの期間に基づいて、サイズ設定することができる。データセットのサイズが、擬似ランダム２進シーケンスの期間の整数倍に接近するほど、得られるデータセットのバイアスが、既知のバイアスに適合する可能性が高くなる。更なる実施形態では、バイアスモジュール３１８は、既定サイズのデータセットが、既知のバイアスから閾値量を超えて偏移することのないバイアスを有することを、保証することができる。この閾値量は、ゼロから、所定の正数値又はパーセント値までの範囲とすることができる。
【０１７７】
上述のように、バイアスは、特定のデータパターンを呈するための、ビットのセット内部のビットに関する値の、優先度、確率、又は傾向である。一実施形態では、既知のバイアスは、ビットのセット、又はビットのセットのグルーピング内部での、バイナリ１とバイナリ０との既知の比率である。この既知の比率は、一実施形態では、ゼロ〜１の比又はパーセンテージとして表現することができ、ゼロの比率は、排他的に１の値のバイアスを表し、１の比率は、排他的に他方の値のバイアスを表す。一実施形態では、既知の比率は、ゼロよりも大きく、１未満であり、この既知の比率が、排他的に１のバイナリ値の比率と、排他的に反対のバイナリの比率との間の、オフセットであることを意味する。既知の比率が、ゼロよりも大きく、１未満である場合には、データセットの読み取りバイアスでの偏差は、この既知の比率から、いずれの方向にも発生し、依然として、設定モジュール３５２によって検出可能なままに維持され得る。
【０１７８】
図示の実施形態では、データセット読み取りモジュール４０２は、監視モジュール４１８及び読み取りエラーモジュール４２０を含む。データセット読み取りモジュール４０２は、一実施形態では、監視モジュール４１８及び／又は読み取りエラーモジュール４２０を使用して、データセットを読み取ることができる。
【０１７９】
一実施形態では、監視モジュール４１８は、コンピュータ１１２又は他のクライアント１１４からの読み取り要求に応答して、ソリッドステート記憶媒体１１０から読み取られるデータセットを監視する。監視モジュール４１８は、ソリッドステート記憶媒体１１０から読み取られる各データセットを監視することができ、又はソリッドステート記憶媒体１１０から読み取られる、特定のデータセットを、既定の間隔で、又は記憶装置のクライアントからのコマンド若しくはディレクティブに応答して、などのように、選択することができる。監視モジュール４１８を使用して、ソリッドステート記憶媒体１１０から読み取られるデータセットを監視することによって、設定モジュール３５２は、そのソリッドステート記憶媒体１１０に関する読み取り電圧閾値を動的に調整し、訂正不能なデータエラーが発生することを防ぐことができる。
【０１８０】
一実施形態では、読み取りエラーモジュール４２０は、データセット内で識別されたデータエラーに応答して、そのデータセットを読み取る。例えば、ＥＣＣデコーダ３２２又は別のモジュールが、データエラーが発生したことを判定することができる。一実施形態では、このデータエラーは、訂正するための十分な情報をＥＣＣデコーダ３２２が有さない、訂正不能なビットエラーである。具体的には、ＥＣＣデコーダ３２２は、一実施形態では、データセット内の、特定の数までのエラー状態ビット（エラー状態ビットの数−＃ＢＥＲ）を、検出及び訂正するように構成される。エラー状態ビットの数が、この＃ＢＥＲを超過する場合、ＥＣＣデコーダ３２２は、訂正不能データエラー、訂正不能ビットエラーなどの信号を送ることができる。
【０１８１】
データエラーは、ソリッドステート記憶媒体１１０の、１つ以上の記憶セル内に保持される電圧レベルの推移によって、発生し得る。この記憶セルの保持電圧レベルは、本明細書では、読み取り電圧レベルと称される。読み取りエラーモジュール４２０は、一実施形態では、試験操作の一部として、データセットを読み取る。設定モジュール３５２は、データエラーに応答して、定期保守操作に応答して、初期較正操作などに応答して、試験操作を遂行することができる。読み取りエラーモジュール４２０によって使用されるデータセットは、クライアント要求パケットから来る場合もあり、又は試験操作の一部として読み取られる、サンプルデータとすることもできる。
【０１８２】
特定の実施形態では、データセット読み取りモジュール４０２は、試験操作に応答して、定期的に、監視中に、などのようにサンプルデータのデータセットを読み取る場合、ソリッドステート記憶媒体１１０の、過剰読み取り帯域幅の範囲内に適合するように、そのサンプルデータセットをサイズ設定することができる。ソリッドステート記憶媒体１１０の過剰読み取り帯域幅の範囲内に適合するように、サンプルデータをサイズ設定することによって、一実施形態では、サンプルデータの読み取りは、ソリッドステート記憶媒体１１０に読み取り要求を供給するための、読み取り帯域幅、又はソリッドステート記憶媒体１１０の読み取りスループットに、影響を及ぼし得ない。一実施形態では、データセット読み取りモジュール４０２は、読み取り要求によって要求されるよりも多くの量のデータを有する、ソリッドステート記憶媒体１１０からのデータセットを読み取り、設定モジュール３５２が、読み取り電圧閾値に対する調整などを判定するために使用する、より大きいサンプルサイズのビットを提供することができる。要求されるデータの量よりも大きいサンプルサイズは、特定の実施形態では、読み取り電圧閾値の調整の正確性を改善することができる。
【０１８３】
例えば、ユーザーの用途が、５１２バイトのデータを要求し、ソリッドステート記憶媒体１１０が、８００バイトの読み取り要求内のデータを、５１２バイトのデータと実質的に同じ速度で読み取ることができる場合、一実施形態では、データセット読み取りモジュール４０２は、８００バイトのデータセットを、読み取り電圧閾値を調整するために読み取り、この動作の読み取り時間に影響を及ぼすことなく、要求された５１２バイト（８００バイトのデータセットのサブセット）を、ユーザーの用途に提供することができる。一実施形態では、データセット読み取りモジュール４０２は、最小データセット要求サイズを設定し、各読み取り要求に関して、その読み取り要求が最小データセット要求サイズよりも小さい場合であっても、少なくとも最小データセット要求サイズの量のデータを検索する。最小データセット要求サイズは、特定の実施形態では、１つ以上のＥＣＣチャンク、１つ以上のページ、１つ以上の消去ブロックの境界の範囲内、ソリッドステート記憶媒体１１０の過剰帯域幅の範囲内などに適合するように、選択することができる。一実施形態では、最小データセット要求サイズは、ソリッドステート記憶媒体１１０、読み取りデータパイプライン１０８などの、アーキテクチャー又はジオメトリに基づいて、選択することができる。
【０１８４】
一実施形態では、偏差モジュール４０４は、データセットに関する読み取りバイアスが、そのデータセットが元々記憶された状態の既知のバイアスから偏移していることを判定する。データセットの読み取りバイアスは、その読み取りバイアスと既知のバイアスとの間に差異が存在する場合、その既知のバイアスから偏移している。一実施形態では、既知のバイアスが、エラー訂正されたビット値を含む場合、又はバイアスモジュール３１８が、正確なバイアスへとバイアス印加する場合などの、既知のバイアスが正確である場合は、偏差モジュール４０４は、読み取りバイアスと既知のバイアスとのいずれの差異も、既知のバイアスからの偏差を含むことを判定することができる。他の実施形態では、既知のバイアスとしては、平均バイアス、推定バイアス、バイアスの分散、バイアスの範囲などを挙げることができる。偏差モジュール４０４は、これらの実施形態では、既知のバイアスの範囲又は分散の外側の読み取りバイアス、既知のバイアスから少なくとも既定の偏差閾値で離れている読み取りバイアスなどが、その既知のバイアスから偏移していることを、判定することができる。
【０１８５】
一実施形態では、データセットの読み取りバイアスと既知のバイアスとの差異は、バイナリ１とバイナリ０との比率の差異とすることができる。他の実施形態では、データセットのバイアスと既知のバイアスとの差異は、バイナリパターンの差異、マルチビットバイナリシンボルの差異などとすることができる。図３Ｂに関して上述したように、様々な実施形態では、偏差モジュール４０４は、ＥＣＣデコーダ３２２、逆バイアスモジュール３３２などから、データセットに関する元の既知のバイアス及び／又は読み取りバイアスを受信することができる。
【０１８６】
偏差モジュール４０４は、一実施形態では、データセットの読み取りバイアスが、既知のバイアスから偏移しているか否かを、読み取りバイアスと既知のバイアスとを比較することによって判定する。偏差モジュール４０４は、データセット内のバイナリ１の数及びバイナリ０の数を計数して、そのデータセット内のバイナリ１とバイナリ０との比率を判定し、その比率と既知のバイアスの比率とを比較することによって、読み取りバイアスと既知のバイアスとを比較することができる。更なる実施形態では、偏差モジュール４０４は、既知のバイアスの予想パターン又は他の予想属性の出現を、探索及び／又は計数して、データセット内での同様の探索及び／又は計数の結果と、その予想属性とを比較することができる。特定の実施形態では、ＥＣＣデコーダ３２２は、データセットに関するエラーバイアスを、設定モジュール３５２に提供することなどによって、そのデータセットの読み取りバイアスが、既知のバイアスから偏移していることを、偏差モジュール４０４に指示する。
【０１８７】
既知のバイアスが、ビットのパターン、マルチビットバイナリシンボルなどを含む実施形態では、偏差モジュール４０４は、データセットのビットに対して変換を実行し、データセットのビットのサブセットを分析するなどして、そのデータセットの読み取りバイアスが、既知のバイアスから偏移しているか否かを、判定することができる。例えば、偏差モジュール４０４は、グレイコード符号化タイプ、バイナリコード符号化タイプなどのような、ソリッドステート記憶媒体１１０の記憶セルに関して使用される符号化タイプに基づいて、変換を実行することができる。この変換は、特定の実施形態では、記憶媒体１１０の記憶セルの物理的及び／又は電気的アーキテクチャーに基づき得る。
【０１８８】
例えば、図６Ｃに関して、以下で説明されるように、マルチレベル記憶セルは、少なくとも、最上位ビット（「ＭＳＢ」）及び最下位ビット（「ＬＳＢ」）を記憶する。特定の実施形態では、ＭＳＢ及びＬＳＢは、同一の物理マルチレベル記憶セルの一部であるが、ソリッドステート記憶媒体１１０の異なるページに割り当てることができる。特定の実施形態では、複数個のマルチレベル記憶セルが、ソリッドステート記憶媒体１１０（例えば、ＮＡＮＤフラッシュなど）上で、物理ページとして編成される。特定のソリッドステート記憶媒体１１０では、物理ページは、ソリッドステート記憶媒体１１０に書き込むことができる、最小の単位である。そのような実施形態では、マルチレベル記憶セルは、ページ対と関連付けることができる。ページ対は、物理マルチレベル記憶セルの単一のセットと関連付けられる、１対のページ（上位及び下位）である。例えば、マルチレベル記憶セルは、上位ページ及び下位ページを含むページ対と、関連付けることができる。上位ページは、ＭＳＢと関連付けることができ、下位ページは、ＬＳＢと関連付けることができ、又は逆も同様である。
【０１８９】
それゆえ、同一の物理マルチレベル記憶セル内の、ＭＳＢ及びＬＳＢは、記憶デバイス１０２内の異なるアドレスを有し得る。特定の実施形態では、上位ページは、複数個のマルチレベル記憶セルのＭＳＢを含み、下位ページは、同一のマルチレベル記憶セルのＬＳＢを含む。したがって、上位ページに向けられる書き込みは、関連するマルチレベル記憶セルの、ＭＳＢのみの変化を引き起こすことができ、一方で、下位ページに向けられる書き込みは、関連するマルチレベル記憶セルの、ＬＳＢのみの変化を引き起こす。
【０１９０】
図６Ｃに関して、以下でより詳細に説明されるように、特定の実施形態では、データセット読み取りモジュール４０２は、マルチレベル記憶セルのグルーピングによって記憶されるビットのサブセットのみを含む、データセットを読み取ることができ、偏差モジュール４０４は、そのデータセットの読み取りバイアスが、既知のバイアスから偏移しているか否かを、そのビットのサブセットに基づいて、判定することができる。例えば、データセットは、ＬＳＢ（下位ページ）からのデータ値のみ、ＭＳＢ（上位ページ）からのデータ値のみなどを含み得る。別の実施形態では、偏差モジュール４０４は、データセットの読み取りバイアスが、既知のバイアスから偏移しているか否かを、ソリッドステート記憶媒体１１０の記憶セルに関して使用される符号化タイプ、記憶媒体１１０の記憶セルの物理的及び／又は電気的アーキテクチャーなどに、少なくとも部分的に基づいて、判定することができる。他の実施形態では、偏差モジュール４０４は、異なるページからのデータを組み合わせて、単一のデータセット内にＬＳＢビット及びＭＳＢビットの双方を含むことができ、ＬＳＢビット及びＭＳＢビット並びに／あるいは異なるデータセットからのページを調整することなどができるような、データセットに対する変換を実行することができる。
【０１９１】
偏差モジュール４０４は、一実施形態では、データセット読み取りモジュール４０２が読み取る各データセットの、読み取りバイアスを検査する。例えば、データセット読み取りモジュール４０２が、監視モジュール４１８を使用する場合には、偏差モジュール４０４は、データセットの読み取りバイアスを、それらのデータセットがソリッドステート記憶媒体１１０から読み取られる際、規則的に監視することができる。監視モジュール４１８は、一実施形態では、クライアントによって要求される各データセットの読み取りバイアスを比較することができる。更なる実施形態では、監視モジュール４１８は、要求データセットの読み取りバイアスを、例えば定期的間隔で、及び／又はコマンドに応答して、などのように、検査することができる。別の実施形態では、データセット読み取りモジュール４０２が、読み取りエラーモジュール４２０を使用する場合には、偏差モジュール４０４は、データセットの読み取りバイアスを、データエラーに応答して、試験操作の一部として、などのように、検査することができる。
【０１９２】
一実施形態では、方向モジュール４０６は、データセットに関する偏差の方向を判定する。偏差の方向は、一実施形態では、データセットの読み取りバイアスと既知のバイアスとの差異である。差異の方向は、値、符号（すなわち、正又は負）、関係（すなわち、より大きい、より小さい）、方向（すなわち、上、下）などとして表すことができる。方向モジュール４０６は、特定の実施形態では、ソリッドステート記憶媒体１１０の記憶セルに関して使用される符号化タイプに基づいて、記憶媒体１１０の記憶セルの物理的及び／又は電気的アーキテクチャーなどに基づいて、偏差の方向を判定することができる。例えば、方向モジュール４０６は、データセット内のバイアスの偏差を検討し、記憶媒体のタイプ（２ビットＭＬＣ、３ビットＭＬＣ、ｎビットＭＬＣ）、多相プログラミングモデルのいずれのページが読み取られたか、ソリッドステート記憶媒体１１０に関する符号化タイプ（グレイコード符号化タイプ、バイナリコード符号化タイプなどのような）、及び／又は判定された偏差の規模に基づいて、偏差の方向を判定することができる。
【０１９３】
方向モジュール４０６は、一実施形態では、既知のバイアスの比率、比、又は他の表示を、データセットの読み取りバイアスの表示から、減算することによって、方向を判定することができる。例えば、一実施形態では、方向モジュール４０６は、既知のバイアスに基づいて予想される、バイナリ１、バイナリ０、マルチビットバイナリシンボルなどの比を、データセット内にあるバイナリ１、バイナリ０、マルチビットバイナリシンボルなどの比から減算することができる。バイナリ１の比率が比較されるのか、若しくはバイナリ０の比率が比較されるのか、及び高電圧がバイナリ１若しくはバイナリ０のいずれを表すのか、又は記憶セルの他の特定のアーキテクチャーに応じて、方向モジュール４０６は、その差異を逆転させるか、別の変換を実行して、方向を判定することができる。
【０１９４】
ＥＣＣデコーダ３２２からのエラーバイアスが利用可能である実施形態では、方向モジュール４０６は、エラーバイアスによって指示されるような、エラー状態にあるデータセットの１つ以上のビットに基づいて、偏差の方向を判定することができる。他の実施形態では、図３Ｂに関して上述したように、方向モジュール４０６は、逆バイアスモジュール３３２、ＥＣＣデコーダ３２２、及び／又はデバイス因数モジュール３５４からの入力に基づく方向を組み合わせて、偏差の方向を判定することなどができる。
【０１９５】
一実施形態では、バイナリ０は、読み取り電圧閾値よりも低い電圧によって表され、バイナリ１は、読み取り電圧閾値よりも高い電圧によって表される。一実施例では、データセットは、０．５の既知のバイアスを有して記憶されるが、これは、そのデータセットの予想バイアスが、半分のバイナリ１、又はＤＣ平衡となるはずであることを表す。この実施例では、データセットが、記憶セルから読み取られ、そのデータセットは、７０パーセントのデータビットがバイナリ１であることを意味する、０．７の読み取りバイアスを有する。方向を判定するために、一実施形態では、方向モジュール４０６は、予想バイアス０．５を、データセットの読み取りバイアス０．７から減算し、０．２の方向が得られる。方向は、全体結果（すなわち、「０．２」）、結果の符合（すなわち、「正」）、関係（すなわち、「より大きい」）、方向（すなわち、「上」）、又は０．５の予想バイアスと０．７の読み取りバイアスとの差異を表す別の標識とすることができる。
【０１９６】
別の実施例では、データセットの読み取りバイアスが、３０パーセントのデータビットがバイナリ１であることを意味する、０．３である場合には、方向モジュール４０６は、一実施形態では、予想バイアス０．５を、データセットの読み取りバイアス０．３から減算して、−０．２の差異が得られる。この実施例では、方向は、第１の実施例の反対、すなわち、「−０．２」、「負」、「より小さい」、「下」などになる。
【０１９７】
予想バイアスは既知であるため、既知のバイアスに対して読み取りバイアスを比較することは、既知のバイアスと合致するはずであった特定のビットが、現状では合致しないことを指示し、このことは、データエラーによるものか、又は記憶セルに書き込まれた後の、記憶セル内に記憶された電圧レベルの変化によるものとすることができる。更には、その差異が正又は負であると判定することは、データセットの再読み取りが、既知のバイアスと同一か若しくはより近接する読み取りバイアスを生じさせるようにするために、その読み取り電圧を増大させるべきか、又は減少させるべきかを指示する。一実施形態では、設定モジュール３５２が、方向モジュール４０６によって指示された方向と同じ方向に、読み取り電圧レベルを調整する。
【０１９８】
有利には、いずれの方向に読み取り電圧閾値を調整するかについての指示を有することは、新たな調整読み取り電圧レベルを特定するために必要とされる時間及びリソースの著しい低減をもたらす。読み取り電圧閾値を作成する方向が不明であった場合には、新たな読み取り電圧閾値を特定することは、種々の可能な読み取り電圧閾値を設定して、次いで試験し、必要に応じて次いで調整が行なわれるため、労力及び時間集約的な、試行錯誤のプロセスを必要とし得る。このプロセスは、既知のバイアスに実質的に適合するデータパケットの再読み取りを生じさせる、読み取り電圧閾値を見出すために、必要とされ得る。
【０１９９】
一実施形態では、調整モジュール４０８は、ソリッドステート記憶媒体１１０の記憶セルに関する読み取り電圧閾値を、方向モジュール４０６が判定する偏差の方向に基づいて調整する。調整モジュール４０８は、一実施形態では、偏差の方向に、偏差の方向から離れて、などのように、読み取り電圧閾値を調整することができる。例えば、一実施形態では、調整モジュール４０８は、方向モジュール４０６が、既知のバイアス内で予想されたよりも、多くのバイナリ１を検出することに応答して、読み取り電圧閾値を引き上げ、予想よりも少ないバイナリ１に応答して、読み取り電圧閾値を引き下げることができる。この相対方向は、ソリッドステート記憶媒体１１０の記憶セルの特性、及び採用される記憶スキームに基づいて変化し得るが、調整モジュール４０８は、方向モジュール４０６によって判定された差異を、訂正又は補正するように、読み取り電圧閾値を調整する。
【０２００】
更なる実施形態では、調整モジュール４０８は、方向モジュール４０６によって判定された、方向の振幅又は差異の振幅に基づいて、読み取り電圧閾値を調整する量を判定する。別の実施形態では、調整モジュール４０８は、方向モジュール４０６からの振幅を、スケーリングするか、又は他の方法で調整して、その調整量で、読み取り電圧閾値を調整することができる。例えば、調整モジュール４０８は、一実施形態では、方向の振幅に基づいて、単一の調整内での、幾つかの調整レベルによって、読み取り電圧閾値を調整することができる。更なる実施形態では、調整モジュール４０８は、ソリッドステート記憶媒体１１０の、経年、消耗の量、使用履歴、エラー履歴、又は他の態様などの、追加的因数に基づいて、読み取り電圧閾値を調整する量を選択することができる。図３Ｂに関して上述したように、特定の実施形態では、調整モジュール４０８は、設定モジュール３５２がデバイス因数モジュール３５４から受信する、ソリッドステート記憶デバイス１０２に関する１つ以上の統計に基づいて、読み取り電圧閾値調整を実施することができる。
【０２０１】
別の実施形態では、調整モジュール４０８は、探索アルゴリズムを使用して、偏差の方向に基づいて読み取り電圧閾値を判定する。例えば、現時点の読み取り電圧閾値からの偏差の方向での電圧の範囲は、探索アルゴリズムに関する探索空間とすることができる。調整モジュール４０８は、一実施形態では、線形探索、二分探索などを使用して、読み取り電圧閾値を判定することができる。探索アルゴリズムの一部として、各工程を検査するために、データセット読み取りモジュール４０２は、各調整に応答して、データセットを再読み取りすることができ、偏差モジュール４０４は、再読み取りデータセットの読み取りバイアスが、既知のバイアスから偏移しているか否かを再判定することができる。方向モジュール４０６は、再読み取りデータセットに関する偏差の方向を再判定して、探索を更に進めることができる。調整モジュール４０８は、再読み取りデータセットの読み取りバイアスが既知のバイアスから偏移しないことを、偏差モジュール４０４が判定するまで、又は読み取り電圧閾値レベルのそれぞれが試験済みとなるまで、及び／又はＥＣＣ検査ビットを使用してデータセットを訂正することができるまで、などのように、再判定された偏差の方向に基づいて、読み取り電圧閾値を、反復的に再調整することができる。
【０２０２】
一実施形態では、調整モジュール４０８は、再試行閾値が一旦満たされると、読み取り電圧閾値の再調整を停止する。例えば、ＥＣＣデコーダ３２２が、データエラーを訂正することができない場合、及び／又はデータセットに関する読み取りバイアスが、既知のバイアスからの偏移を継続する場合には、そのデータセットに関する再試行閾値が満たされると、調整モジュール４０８は、読み取り電圧閾値への調整の実施を終えることができる。再試行閾値は、可能な読み取り電圧閾値レベルのセットなどに基づいて、選択することができる。一実施形態では、再試行閾値は、調整モジュール４０８が読み取り電圧閾値を調整することができる回数を設定する。別の実施形態では、再試行閾値は、調整モジュール４０８が読み取り電圧閾値調整を実施することができる時間量を設定することができる。ソリッドステート記憶装置コントローラ１０４は、特定の実施形態では、再試行閾値が満たされることに応答して、そのデータセットに関連する記憶セルを退去させること、そのデータセットに関連する記憶セルを論理的に置き換えることなどのような、更なる是正措置を取ることができる。
【０２０３】
一実施形態では、調整モジュール４０８は、データセットの読み取りバイアスが既知のバイアスから偏移していること、データエラーが発生していること、再試行閾値が満たされていないことなどを、偏差モジュール４０４が判定した場合であっても、読み取り電圧閾値を調整することがない。調整モジュール４０８は、特定の実施形態では、記憶セルのグルーピングに対する調整に関連する１つ以上のリスク因子に基づいて、読み取り電圧閾値を選択的に調整することができる。例えば、リスク因子としては、記憶セルのグルーピングに関するエラー率（ＵＢＥＲなどのような）、記憶セルのグルーピングに関する消去サイクル回数、記憶セルのグルーピングに関する記憶要求待ち時間（平均、最大、又は他の、記憶要求実行待ち時間など）、記憶セルのグルーピングの経年、記憶セルのグルーピングの読み取り電圧閾値に対する以前の調整の数、及び／又は他の潜在的リスク因子を挙げることができる。一実施形態では、調整モジュール４０８は、リスク閾値を満たす１つ以上のリスク因子に応答して、読み取り電圧閾値に対する調整を取り消すか、又は遅延させることができる。更なる実施形態では、ソリッドステート記憶装置コントローラ１０４は、リスク閾値を満たす１つ以上のリスク因子に応答して、更なる是正措置を取ることができる。
【０２０４】
調整モジュール４０８は、一実施形態では、ソリッドステート記憶媒体１１０の製造元によって提供されるプロシージャ又はコマンドを使用して、読み取り電圧閾値を調整する。例えば、一実施形態では、調整モジュール４０８は、ソリッドステート記憶媒体１１０の設定レジスタに値を書き込むことによって、ソリッドステート記憶媒体１１０に読み取り電圧閾値パラメーターを送ることによって、又はソリッドステート記憶媒体１１０に読み取り電圧閾値に対する調整を他の方法で通信することによって、読み取り電圧閾値を調整することができる。調整モジュール４０８は、その調整を、読み取り電圧閾値の絶対値、読み取り電圧閾値を調整する量などとして通信することができる。更なる実施形態では、ソリッドステート記憶媒体１１０は、読み取り電圧閾値が調整され得る、複数個の離散レベル（すなわち、２〜１５個の異なるレベル）を提供する。他の実施形態では、読み取り電圧閾値調整の規模は、ソリッドステート記憶媒体１１０の販売元又は製造元によって、定義又は推奨することができる。
【０２０５】
調整モジュール４０８は、一実施形態では、ソリッドステート記憶媒体１１０のダイ、チップ、ＰＥＢ、又は他の離散的セグメントに関して、読み取り電圧閾値を個々に調整する。調整モジュール４０８は、更なる実施形態では、各記憶セルに関して、複数の読み取り電圧閾値を調整する。例えば、一実施形態では、ソリッドステート記憶媒体１１０の記憶セルは、１つのセル当たり複数の読み取り電圧閾値を有する、ＭＬＣ記憶セルである（すなわち、２ビットＭＬＣ記憶セルは、３つの個別の読み取り電圧閾値を有し得る）。調整モジュール４０８は、複数の読み取り電圧閾値のそれぞれを、一体として移動させることができ、又はそれらを独立して移動させることもできる。
【０２０６】
記憶セルが複数の読み取り電圧閾値を有する実施形態では、各読み取り電圧閾値は、一定の分離距離によって隔てられる。一実施形態では、この分離距離は、各読み取り電圧閾値間で均一である。更なる実施形態では、調整モジュール４０８は、単一のコマンド又はプロシージャで、複数の読み取り電圧閾値を調整し、複数の読み取り電圧閾値間の分離距離は、その調整でスケーリングされる。例えば、一実施形態では、読み取り電圧閾値間の分離距離は、読み取り電圧閾値が大きくなると共に増大し、読み取り電圧閾値が低くなると共に減少し得る。調整の際に、読み取り電圧閾値間の分離距離をスケーリングすることが、一実施形態では、より均等な読み取り電圧閾値の分散を提供することにより、電圧の範囲は、その範囲の端で縮小又は拡大することなく、その一方で、中間範囲は、同一に維持される。
【０２０７】
一実施形態では、持続モジュール４１０は、読み取り電圧閾値の状態を記憶する。持続モジュール４１０は、一実施形態ではソリッドステート記憶装置コントローラ１０４の一部である。持続モジュール４１０は、別の実施形態では、各読み取り操作で、ソリッドステート記憶媒体１１０に、読み取り電圧閾値を送ることができる。更なる実施形態では、持続モジュール４１０は、ソリッドステート記憶媒体１１０の一部であり、調整モジュール４０８が実施する、読み取り電圧閾値に対する調整を、ソリッドステート記憶媒体１１０に保持させる。持続モジュール４１０は、一実施形態では、複数の読み取り電圧閾値を記憶し、各読み取り電圧閾値は、ソリッドステート記憶媒体１１０の記憶セルの、異なるセグメント又はグルーピングに関する。
【０２０８】
一実施形態では、ソリッドステート記憶媒体１１０の製造元は、チップ、物理消去ブロック、物理ページ、若しくはダイなどの、記憶セルの既定のグルーピングに関する読み取り電圧閾値を調整するための、コマンド又はプロシージャを提供する。更なる実施形態では、持続モジュール４１０は、調整モジュール４０８が製造元提供のコマンド又はプロシージャを使用して調整を実施することができる、記憶セルの既定のグルーピングよりも小さい、記憶セルのサブグルーピングに関する、読み取り電圧閾値を記憶する。調整モジュール４０８は、次いで、別の実施形態では、データセットがサブグルーピングから読み取られる際に、持続モジュール４１０が記憶する読み取り電圧閾値に基づいて、読み取り電圧閾値を再調整することができる。サブグルーピングの例としては、ＰＥＢ、ページ、ＥＣＣチャンク、又は記憶セルのグルーピングの他の物理区画若しくは論理区画を挙げることができる。
【０２０９】
例えば、記憶セルの第１のサブグルーピングからのデータセットに関する読み取り要求に応答して、調整モジュール４０８は、持続モジュール４１０が第１のサブグルーピングに関して記憶するレベルに、その記憶セルのグルーピング全体の読み取り電圧閾値を調整することができる。第２のサブグルーピングからのデータセットに関する読み取り要求に応答して、一実施形態では、調整モジュール４０８は、持続モジュール４１０が第２のサブグルーピングに関して記憶するレベルに、そのグルーピング全体に関する読み取り電圧閾値を再調整することができる。このことにより、設定モジュール３５２は、ソリッドステート記憶媒体１１０に関して利用可能なコマンド又はプロシージャ内に提供し得るよりも細密な範囲で、ソリッドステート記憶媒体１１０に関する読み取り電圧閾値を調整することが可能になる。例えば、製造元は、ダイ、チップ、若しくは他の記憶セルのグルーピングに関する読み取り電圧閾値を調整するための、コマンド、プロシージャ、又は方法論を提供することができ、調整モジュール４０８は、そのコマンド、プロシージャ、又は方法論に従って、個々のＰＥＢ若しくは他のサブグルーピングを調整することができる。
【０２１０】
一実施形態では、設定モジュール３５２は、上述のように、訂正不能な（本明細書では、ＥＣＣデコーダ３２２によって訂正不能であることを意味し、本明細書で論じられるように、読み取り電圧閾値の調整後に、訂正が可能であり得る）データエラーに応答して、データセットを処理し、データエラーがもはや訂正不能ではなくなるまで、またそのデータセットに関するＥＣＣ検査ビットを使用して修復可能となるまで、読み取り電圧閾値を１回以上調整する。一実施形態では、ＥＣＣモジュール４１２が、ＥＣＣデコーダ３２２と協働して、ＥＣＣデコーダ３２２が、データセット内のエラーを訂正することができるか否かを、判定する。あるいは、設定モジュール３５２が、ＥＣＣデコーダ３２２と協働して、ＥＣＣデコーダ３２２が、データセット内のエラーを訂正することができるか否かを判定する。
【０２１１】
設定モジュール３５２は、一実施形態では、ＥＣＣデコーダ３２２がエラーを訂正することができることを、ＥＣＣモジュール４１２が判定するまで、上述の処理工程を繰り返す。例えば、更なる実施形態では、データセット読み取りモジュール４０２、偏差モジュール４０４、方向モジュール４０６、及び調整モジュール４０８は、ＥＣＣデコーダ３２２がエラーを訂正することができることを、ＥＣＣモジュール４１２が判定するまで、反復的に、データセットを読み取り、そのデータセットに関する読み取りバイアスが、既知のバイアスから偏移していることを判定し、そのデータセットに関する偏差の方向を判定し、上述のように読み取り電圧閾値を調整することができる。
【０２１２】
図６Ａ及び図６Ｂに関して、より詳細に説明されるように、一実施形態では、データセットは、幾つかのダイ、チップ、チャネル、記憶素子、ＰＥＢ、又は他の記憶セルのグルーピング全体にわたって、記憶させることができる。ＥＣＣ検査ビットは、一実施形態では、記憶セルの各グルーピングに関して、独立して、算出及び記憶させることができる。別の実施形態では、ＥＣＣ検査ビットは、例えば、ＥＣＣチャンクの一部として、記憶セルの各グルーピングと一体に記憶される。
【０２１３】
更なる実施形態では、ＥＣＣモジュール４１２は、ＥＣＣ検査ビットを使用して、ソリッドステート記憶媒体１１０の、いずれのダイ、チップ、チャネル、記憶素子、ＰＥＢ、又は他の記憶セルのグルーピング内で、訂正不能なエラーが発生したかを判定する。ＥＣＣモジュール４１２は、一実施形態では、ＥＣＣ検査ビットを使用して、記憶セルの各グルーピングのデータセットを検証し、記憶セルのグルーピングのセットからの、いずれの特定のグルーピングが、訂正不能なエラーを有するかを判定する。設定モジュール３５２は、一実施形態では、訂正不能なエラーを有する、記憶セルの特定のグルーピング内の、１つ以上の読み取り電圧閾値を調整する。
【０２１４】
一実施形態では、分散モジュール４１４は、データセットの読み取りバイアスが、既知のバイアスの予想される分散の範囲内にあり、読み取り電圧閾値の更なる調整を実施するべきではないことを判定する。更なる実施形態では、データセット読み取りモジュール４０２、偏差モジュール４０４、方向モジュール４０６、及び調整モジュール４０８は、データセットの読み取りバイアスが、予想される分散の範囲内にあることを、分散モジュール４１４が判定するまで、継続して、新たな読み取り電圧閾値を使用して、データセットを再読み取りし、そのデータセットに関する読み取りバイアスが、既知のバイアスから偏移していることを再判定し、そのデータセットに関する偏差の方向を再判定し、読み取り電圧閾値を再調整する。
【０２１５】
分散モジュール４１４は、一実施形態では、偏差モジュール４０４と協働することができ、又は偏差モジュール４０４に統合することもできる。一実施形態では、設定モジュール３５２は、ＥＣＣモジュール４１２又は分散モジュール４１４のいずれかを使用して、読み取り電圧閾値の調整を、いつ実施するべきか、又はいつ完了するべきかを判定する。更なる実施形態では、分散モジュール４１４は、ソリッドステート記憶媒体１１０の、幾つかのダイ、チップ、チャネル、記憶素子、ＰＥＢ、又は他の記憶セルのグルーピングからのデータセットの読み取りバイアスを、既知のバイアスの分散と比較して、いずれの記憶セルのグルーピング内でエラーが発生したかを判定し、設定モジュール３５２は、エラーを有する記憶セルのグルーピング内の、１つ以上の読み取り電圧閾値を調整する。
【０２１６】
一実施形態では、ＥＣＣモジュール４１２及び／又は分散モジュール４１４は、データセットソースモジュール４２２と協働する。データセットソースモジュール４２２は、一実施形態では、いずれの特定の記憶セルのグルーピングから、データセットが読み取られたかを判定する。例えば、データセットソースモジュール４２２は、いずれのダイ、チップ、チャネル、記憶素子、ＰＥＢ、又は他の記憶セルのグルーピングが、データセットのソースであるかを、判定することができる。一実施形態では、データセットソースモジュール４２２は、データセットが、既知のバイアスから偏移する読み取りバイアスを有すること、データエラーを有することなどを、偏差モジュール４０４、ＥＣＣモジュール４１２、及び／又は分散モジュール４１４が判定することに応答して、いずれの特定の記憶セルのグルーピングから、そのデータが読み取られたかを判定する。
【０２１７】
一実施形態では、データセットソースモジュール４２２は、データセットのシーケンス内部での、データセットの位置に基づいて、いずれの特定の記憶セルのグルーピングから、そのデータセットが読み取られたかを判定する。例えば、一実施形態では、ソリッドステート記憶媒体１１０は、記憶セルの複数個のグルーピングを含み得、記憶セルの各グルーピングは、読み取り操作の間、並列に読み取ることができる。データセットソースモジュール４２２は、一実施形態では、書き込みデータパイプライン１０６及び／又は読み取りデータパイプライン１０８がデータを処理する方式についての既知の情報、並びに記憶セルの複数個のグルーピングについての既知の情報を使用して、いずれの記憶セルのグルーピングから、データセットが読み取られたかを判定することができる。
【０２１８】
例えば、一実施形態では、書き込みデータパイプライン１０６及び読み取りデータパイプライン１０８は、それぞれ、６４ビット（８バイト）のデータパスを有してもよく、ソリッドステート記憶媒体１１０は、２４個のダイ幅のアレイを含み得、読み取り操作の間、２４個のダイのそれぞれから、８バイトを並列に読み取ることができ、１度の読み取り操作当たり、合計１９２バイトとなる。この情報に基づいて、データセットソースモジュール４２２は、一実施形態では、１９２バイトの内部の、８バイトのデータセットの位置に基づいて、いずれのダイ又は他の記憶セルのグルーピングから、そのデータセットが読み取られたかを判定することができる。
【０２１９】
データセットソースモジュール４２２は、更なる実施形態では、読み取り操作の一部として処理されるデータセットの数を計数するか、又は他の方法で追跡して、データセットのシーケンス内での、データセットの位置を判定することができる。例えば、第１のダイから開始して、２４個のダイから、順次８バイトを読み取ることができるため、ＥＣＣモジュール４１２及び／又は分散モジュール４１４が、読み取りバイアスの偏差又はデータエラーを、第５の８バイトのデータのセットに対する操作の間に検出する場合には、データセットソースモジュール４２２は、この８バイトのデータのセットが、２４個のダイの第５のダイから来たことを特定する。
【０２２０】
データセットのシーケンス内でのデータセットの位置、及び他の既知の情報を使用することによって、データセットソースモジュール４２２は、一実施形態では、識別子又は他の外部情報を使用することなく、そのデータセットが読み取られた、記憶セルのグルーピングを判定することができる。読み取りバイアスの差異を呈する、ダイ、チップ、チャネル、記憶素子、ＰＥＢ、又は他の記憶セルのグルーピングを特定することにより、読み取り電圧閾値の変更、予備のグルーピングを使用する、記憶セルのグルーピングの論理スワッピング、及び他の是正措置の形態などの、迅速な是正措置を取ることが可能になる。
【０２２１】
一実施形態では、事前対応設定モジュール４２４は、ソリッドステート記憶媒体１１０の記憶セルに関する設定パラメーターを、事前対応的に設定及び調整することによって、ソリッドステート記憶媒体１１０の有用性を改善する。エラーが発生する前に、設定パラメーターを事前対応的に設定することによって、事前対応設定モジュール４２４は、読み取りを再試行するか、又はエラー防止のために他の是正対策を実行する、性能上の不利益を伴うことなく、特定のエラーが発生することを防ぐ。事前対応設定モジュール４２４は、特定の実施形態では、ソリッドステート記憶デバイス１０２のユースケースに関する設定パラメーターを、デフォルトのパラメーターを使用する代わりに最適化して、そのユースケースに関して記憶セルを最適化する。
【０２２２】
上述のように、設定パラメーターは、読み取り閾値、書き込み又はプログラム閾値、消去閾値などのような、インターフェースを経由して修正可能である、記憶セルのセットのパラメーターである。設定パラメーターを修正するためのインターフェースとしては、プログラム可能データレジスタ、ソリッドステート記憶媒体１１０に関する制御バスのコマンドインターフェース、ソリッドステート記憶デバイス１０２のデバイスドライバのＡＰＩ、ソリッドステート記憶装置コントローラ１０４に関する制御パラメーターなどを挙げることができる。
【０２２３】
事前対応設定モジュール４２４は、記憶セルのセットに関する、１つ以上の記憶媒体特性を参照して、その記憶セルのセットに関する設定パラメーターを判定する。記憶媒体特性は、ソリッドステート記憶媒体１１０の属性に関連する、統計的、発見的、又は他の記述子である。記憶セルのセットに関する記憶媒体特性は、実質的に静的とすることができ、又は動的であり、経時的に変化する場合もある。記憶媒体特性は、一実施形態では、ソリッドステート記憶デバイス１０２及び／又はソリッドステート記憶媒体１１０に関する、形式、モデル、製造元、製品バージョンなどを含むか、若しくはそれらに関連する。別の実施形態では、記憶媒体特性は、記憶セルのセットに関するプログラム／消去サイクルの回数、記憶セルのセットに関する読み取り回数、記憶セルのセットに関する前回の書き込みからの保持時間、記憶セルのセットに関するエラー統計などのような、特定の記憶セルのセットに関する属性又は統計を説明する。記憶媒体特性は、更なる実施形態では、温度、ユースケース（例えば、キャッシュのユースケース、アーカイブのユースケース、サーバのユースケース、企業体のユースケース、消費者のユースケースなど）などのような、環境条件、あるいはソリッドステート記憶デバイス１０２及び／又はソリッドステート記憶媒体１１０の使用を含み得るか、若しくはそれらに関連し得る。
【０２２４】
事前対応設定モジュール４２４は、記憶セルのセットに関する設定パラメーターを判定することに応答して、判定された設定パラメーターを使用するように、記憶セルのセットを設定する。事前対応設定モジュール４２４は、定期的に、記憶セルのセットに関する記憶媒体特性を更新し、記憶セルのセットに関する設定パラメーターを更新し、更新された設定パラメーターを使用するように、記憶セルのセットを再設定することができる。事前対応設定モジュール４２４は、設定パラメーターを使用して、入力／出力操作の実行の間、起動操作の間、変更された記憶媒体特性を指示する記憶セルのセットのバックグラウンドスキャンに応答して、などのように、記憶セルを設定することができる。
【０２２５】
特定の実施形態では、事前対応設定モジュール４２４は、調整モジュール４０８に関して上述した調整からは独立して、記憶セルを設定する。例えば、事前対応設定モジュール４２４は、設定モジュール３５２から分離することができ、事前対応設定モジュール４２４は、設定モジュール３５２を有さない記憶装置コントローラ１０４の一部とすることなどができる。他の実施形態では、調整モジュール４０８及び事前対応設定モジュール４２４は、協働することができる。例えば、調整モジュール４０８は、事前対応設定モジュール４２４が開ループモデルを使用して設定した、１つ以上の設定パラメーターに対して、閉ループのフィードバックに基づく調整を実施することなどができる。
【０２２６】
一実施形態では、書き込み電圧モジュール４１６は、ソリッドステート記憶媒体１１０の記憶セルにデータを書き込むための、書き込み電圧レベルを設定する。書き込み電圧レベルは、記憶セルの状態、増加型ステップパルスプログラミング操作に関するステップの大きさ、増加型ステップパルスプログラミング操作に関する反復の最大数、プログラム操作に関するプログラム検証閾値、増加型ステップパルスプログラミング操作に関する初期バイアスなどを、プログラムするか若しくは変化させるために使用される最小又は最大電圧を指定する、プログラミング電圧である。一実施形態では、書き込み電圧モジュール４１６は、設定モジュール３５２及び／又は事前対応設定モジュール４２４に統合することができる。
【０２２７】
例えば、ＮＡＮＤフラッシュソリッドステート記憶装置に関しては、書き込み電圧及び／又は設定パラメーターに関連する他のプログラムは、記憶セルの状態を、バイナリ１からバイナリ０に変化させる。書き込み電圧モジュール４１６は、一実施形態では、既知のパターンを記憶セルに書き込み、次いで、そのパターンを読み直して、読み取り電圧閾値を判定し、所望の読み取り閾値に適合するまで、書き込み閾値を調整する。書き込み電圧モジュール４１６は、更なる実施形態では、記憶セルの経年に対しての、記憶セルの耐久性及びデータ保持の要件に基づいて書き込み電圧レベル値を指定する、数学的モデルに基づいて、書き込み電圧レベルを調整する。一実施形態では、記憶セルの経年は、プログラム及び消去のサイクルの観点から、計算される。書き込み電圧モジュール４１６は、一実施形態では、１つ以上の記憶セルに、試験書き込みを実行し、少なくとも１つの記憶セルの読み取り電圧を検出して、その読み取り電圧が閾値に適合するまで、書き込み電圧レベルを調整する。書き込み電圧モジュール４１６は、更なる実施形態では、記憶セルに、既知のバイアスを有するデータセットを書き込むことによって、試験書き込みを実行し、読み取りデータセットの読み取りバイアスが、既知のバイアスから偏移するか否かを判定することによって、読み取り電圧を試験する。
【０２２８】
書き込み電圧モジュール４１６は、一実施形態では、最小の書き込み電圧で開始して、読み取り電圧が閾値に適合するまで、書き込み電圧を増大させることができる。更なる実施形態では、書き込み電圧モジュール４１６は、最大の書き込み電圧で開始して、読み取り電圧が閾値に適合するまで、書き込み電圧を減少させることができる。書き込み電圧モジュール４１６は、一実施形態では、記憶セルにプログラムする時間と、その記憶セルに関する所望の耐久性及び／又はデータ保持とを平衡させる、書き込み電圧レベルを選択することができる。
【０２２９】
事前対応設定
図５は、事前対応設定モジュール４２４の一実施形態を示す。この事前対応設定モジュール４２４は、一実施形態では、図４に関して上述した事前対応設定モジュール４２４と、実質的に同様とすることができる。図示の実施形態では、事前対応設定モジュール４２４は、媒体特性モジュール５０２、設定パラメーターモジュール５０４、記憶セル設定モジュール５０６、特性更新モジュール５０８、設定更新モジュール５１０、及び適合設定モジュール５１２を含む。媒体特性モジュール５０２、設定パラメーターモジュール５０４、記憶セル設定モジュール、特性更新モジュール５０８、設定更新モジュール５１０、及び適合設定モジュール５１２は、ソリッドステート記憶デバイス１０２に関する、コンピュータ１１２若しくは別のホストデバイス上に設置される、デバイスドライバの一部、及び／又はＦＰＧＡ、ＡＳＩＣなどのファームウェアのような、ソリッドステート記憶デバイスに関するハードウェアの一部とすることができる。
【０２３０】
一実施形態では、媒体特性モジュール５０２は、ソリッドステート記憶媒体１１０の記憶セルのセットに関する、１つ以上の記憶媒体特性を参照する。媒体特性モジュール５０２は、それ自体で１つ以上の記憶媒体特性を判定することができ、別のモジュールから記憶媒体特性を受信することができ、記憶媒体特性レポジトリから記憶媒体特性を検索することなどができる。上述のように、記憶媒体特性は、ソリッドステート記憶媒体１１０の属性に関連する、統計的、発見的、又は他の記述子である。記憶媒体特性は、ソリッドステート記憶デバイス１０２及び／又はソリッドステート記憶媒体１１０に関する、形式、モデル、製造元、製品バージョンなど、記憶セルのセットに関する属性又は統計、環境条件、あるいはソリッドステート記憶デバイス１０２及び／又はソリッドステート記憶媒体１１０のユースケース、並びに／あるいはソリッドステート記憶媒体１１０の属性に関する、別の統計的、発見的、又は他の記述子を含み得るか、若しくはそれらに関連し得る。
【０２３１】
記憶セルのセットに関する記憶媒体特性は、その記憶セルのセットに関する設定パラメーターの判定に、影響を及ぼすか、又は情報を与える。一実施形態では、記憶媒体特性は、記憶セルのセットに関するプログラム／消去サイクルの回数を含む。別の実施形態では、記憶媒体特性は、記憶セルのセットに関する読み取り回数を含む。記憶媒体特性は、更なる実施形態では、記憶セルのセットに関する、前回の書き込みからの保持時間を含む。更なる実施形態では、記憶媒体特性は、記憶セルのセットに関する温度を含む。記憶媒体特性は、特定の実施形態では、記憶セルのセットに関するユースケースを含む。別の実施形態では、記憶媒体特性は、ＵＢＥＲなどのような、記憶セルのセットに関するエラー統計を含む。更なる実施形態では、記憶媒体特性としては、記憶セルのセットに関する、前回又は履歴上の設定パラメーター、記憶セルの他のセットに関する設定パラメーター若しくは記憶媒体特性などを挙げることができる。
【０２３２】
媒体特性モジュール５０２は、特定の実施形態では、記憶媒体特性の収集及び／又は維持を管理する。媒体特性モジュール５０２は、記憶媒体特性レポジトリ内に、記憶媒体特性を維持し、かつ／又は記憶媒体特性レポジトリから、記憶媒体特性を検索することができる。記憶媒体特性レポジトリの一実施例は、図７Ａ及び図７Ｂに関して、以下でより詳細に説明される。媒体特性モジュール５０２は、特定の実施形態では、ソリッドステート記憶デバイス１０２の、各記憶媒体領域又は記憶媒体区画などの、記憶セルの幾つかの異なるセットに関する記憶媒体特性を、参照、判定、及び／又は管理する。記憶媒体領域としては、消去ブロック（論理又は物理）、ページ、論理ページ、ＥＣＣチャンク、ページ内部の区画、ダイ、ダイプレーン、チップなどを挙げることができる。
【０２３３】
一実施形態では、媒体特性モジュール５０２は、図３Ｂに関して上述したデバイス因数モジュール３５４と、同様のものとすることができ、共に働くことができ、かつ／又は統合することができる。例えば、記憶媒体特性としては、ソリッドステート記憶デバイス１０２に関する温度、ソリッドステート記憶デバイス１０２に関するエラー率（訂正不能ビットエラー率ＵＢＥＲなどのような）、ソリッドステート記憶デバイス１０２に関する消去サイクル回数、ソリッドステート記憶デバイス１０２に関する記憶要求待ち時間（平均、最大、又は他の、記憶要求実行待ち時間など）、ソリッドステート記憶デバイス１０２の経年、及び／又は他の統計若しくは特性などの、デバイス因数モジュール３５４に関して上述した、１つ以上の統計を挙げることができる。媒体特性モジュール５０２は、特定の実施形態では、１つ以上のセンサー３５６から、ＥＣＣデコーダ３２２などのような他のモジュール若しくは素子から、直接的に、又は間接的に、入力を受信することができる。
【０２３４】
一実施形態では、設定パラメーターモジュール５０４は、記憶セルのセットに関する設定パラメーターを、その記憶セルのセットに関する、媒体特性モジュール５０２からの１つ以上の記憶媒体特性に基づいて判定する。上述のように、設定パラメーターは、インターフェースを経由して修正可能である、記憶セルのセットのパラメーターである。設定パラメーターは、記憶セルへの書き込み若しくはプログラミング、記憶セルからの読み取り、記憶セルの消去、及び／又は記憶セルに関する別のパラメーターに関連し得る。設定パラメーターモジュール５０４は、設定パラメーターを、絶対的データ値として、データ値に対するオフセット若しくは調整として、又は以下で説明するように、記憶セル設定モジュール５０６が、記憶セルのセットを設定する場合に使用することができる、別のパラメーターとして、判定することができる。
【０２３５】
記憶セルからの読み取りに関する設定パラメーターの一実施形態は、読み取り電圧閾値、固有抵抗閾値などのような、読み取り閾値である。記憶セルの書き込み／プログラミングに関する設定パラメーターの様々な実施形態としては、増加型ステップパルスプログラミング操作に関するステップの大きさ、増加型ステップパルスプログラミング操作に関する反復の最大数、プログラム操作に関するプログラム検証閾値、増加型ステップパルスプログラミング操作に関する初期バイアスなどが挙げられる。記憶セルの消去に関する設定パラメーターとしては、特定の実施形態では、増加型ステップパルス消去操作に関するステップの大きさ、増加型ステップパルス消去操作に関する反復の最大数、消去操作に関する消去検証閾値、増加型ステップパルス消去操作に関する初期バイアスなどを挙げることができる。当業者には、本明細書の見地から、インターフェースを経由して修正可能とすることができる、記憶セルに関する他の設定パラメーターが認識されるであろう。
【０２３６】
設定パラメーターモジュール５０４は、１つ以上の記憶媒体特性を、等式に、参照テーブル（「ＬＵＴ」）に行列などに入力することによって、１つ以上の記憶媒体特性に対して、既定の変換又は操作を実行することによって、あるいは、１つ以上の記憶媒体特性を、他の方法で参照及び／又は操作して、設定パラメーターを判定することによって、その１つ以上の記憶媒体特性に、設定パラメーターの基盤を置くことができる。設定パラメーターの等式、ＬＵＴ、行列などは、試験データ、履歴データなどの、経験的データに基づき得る。設計技術者などは、一実施形態では、様々な製造元によるソリッドステート記憶媒体などのような、様々な記憶媒体特性を有する記憶セルのセットを試験して、その様々な記憶媒体特性を有する記憶セルのセットに関する、最適な設定パラメーターを判定することができる。例えば、等式、ＬＵＴ、行列などは、製造元Ｘによるソリッドステート記憶媒体１１０が、１，０００回のプログラム／消去サイクルの後で、Ｙの量の、セルの値の自然ドリフトを有する傾向があるため、読み取り閾値を、補正のためにＺボルト増大させ得ることなどを、指示することができる。
【０２３７】
一実施形態では、記憶セルのセットに関する記憶媒体特性は温度を含む。記憶セルのセットに関する温度は、その記憶セルのセットに対する、１つ以上の他の記憶媒体特性の効果の速度に、影響を及ぼし得る。例えば、より高い温度では、生のビットエラー率（ＲＢＥＲ）などのエラー統計、及びデータ保持時間に関連する、記憶媒体特性に関する変化率が、増大する可能性があり、設定パラメーターに対する特定の調整によって、その効果を緩和することができる。特定の実施形態では、設定パラメーターモジュール５０４は、その温度の効果を補正するための温度によって、設定パラメーター、記憶媒体特性などを、調整又はスケーリングして、温度に関してデータを正規化することができる。記憶セルのセットに関する温度は、平均温度、スライディング時間枠にわたる温度、現在温度、ソリッドステート記憶デバイス１０２に関する温度、又は記憶セルの１つ以上のセットに関連する別の温度測定値とすることができる。
【０２３８】
１つ以上の記憶媒体特性は、一実施形態では、設定パラメーターに関する傾向、最適化などを、設定パラメーターモジュール５０４に指示し、設定パラメーターモジュール５０４は、その傾向又は最適化に合致する設定パラメーターを判定する。例えば、プログラム／消去サイクルの回数、読み取り回数、ＵＢＥＲ、又は別の記憶媒体特性の大きさは、読み取り電圧がドリフトしている量を指示することができ、設定パラメーターモジュール５０４は、読み取り、読み取り再試行などの、記憶セルからの直接的なフィードバックを使用することなく、その記憶媒体特性に基づいて、読み取り電圧閾値又は他の設定パラメーターを、事前対応的に判定することができる。
【０２３９】
一実施形態では、設定パラメーターモジュール５０４は、ソリッドステート記憶媒体１１０の種々の記憶領域又は記憶区画の、記憶セルのセットに関する設定パラメーターを、設定パラメーターレポジトリ内に維持する。設定パラメーターレポジトリの一実施例は、図８Ａ及び図８Ｂに関して、以下でより詳細に説明される。種々の記憶領域に関する、別個の記憶媒体特性及び／又は設定パラメーターを、判定並びに管理することによって、事前対応設定モジュール４２４は、特定の実施形態では、各記憶領域に関する設定パラメーターを、個々にカスタマイズすることができるため、ソリッドステート記憶媒体１１０のエラーを低減し、耐用年数を延長することなどによって、ソリッドステート記憶媒体１１０の有用性を向上させる。
【０２４０】
特定の実施形態では、設定パラメーターモジュール５０４は、記憶セルの１つのセットに関する設定パラメーターを、記憶セルの標的セットに基づいて、判定することができる。記憶セルの標的セットは、設定パラメーターモジュール５０４が、記憶セルの別のセットに関する設定パラメーターを判定するために使用する、既知の使用特性及び／又は制御された使用特性（例えば、記憶媒体特性など）を有し得る。具体的には、設定パラメーターモジュール５０４は、記憶セルの標的セットの記憶媒体特性と、現時点で設定されている記憶セルのセットの記憶媒体特性とを比較することができる。そのような比較を使用して、その記憶セルのセットに関して判定される設定パラメーターを、更に最適化することができる。記憶セルの標的セットは、メタデータ、システムデータ、データの既知のパターンなどのような、既知のデータを記憶することができ、設定パラメーターモジュール５０４は、その既知のデータに基づいて、別のデータのセットに関する設定パラメーターを判定することができる。
【０２４１】
別の実施形態では、設定パラメーターモジュール５０４は、記憶セルのセットに関する設定パラメーターを、記憶セルの標的セットに関して判定された設定パラメーターに基づいて、記憶セルの標的セットに関する１つ以上の記憶媒体特性に基づいて、などのように判定する。例えば、設定パラメーターモジュール５０４は、記憶セルの標的セットに関する設定パラメーターを、記憶セルの別のセットに関する設定パラメーターとして使用することができ、記憶セルの別のセットに関する設定パラメーターを判定する際に使用するために、記憶セルの標的セットに関する設定パラメーターを調整することができ、記憶セルの標的セットに関する記憶媒体特性を使用して、記憶セルの別のセットに関する設定パラメーターを判定することなどができる。この方式では、記憶セルの標的セットは、記憶セルの他のセットを管理する際に使用するための、対照群としての機能を果たす。記憶セルの標的セットは、特定の実施形態では、ハードディスクドライブ技術で「システム追跡」が使用されている方式と類似の方式で使用され、記憶デバイス１０２の耐用年数にわたって、設定パラメーターに修正を加えることができる。更なる実施形態では、設定パラメーターモジュール５０４は、記憶セルのセットに関する１つ以上の記憶媒体特性と、記憶セルの標的セットに関する１つ以上の記憶媒体特性とを比較して、その記憶媒体特性間の差異に基づいて、記憶セルのセットに関する設定パラメーターを判定する。
【０２４２】
設定パラメーターモジュール５０４は、特定の実施形態では、記憶セルのセットに関する設定パラメーターの基盤を、記憶セルの標的セットに置き、その記憶セルのセットに関する既知の記憶媒体特性の欠如に応答して、その設定パラメーターをブートストラップする。設定パラメーターモジュール５０４は、記憶セルのセットに関する設定パラメーターを、起動操作の間に、又はその記憶セルのセットに関する記憶媒体特性は未だ利用可能ではないが、記憶セルの標的セットに関しては記憶媒体特性若しくは他のデータが利用可能である、別の操作の間に、ブートストラップすることができる。例えば、ソリッドステート記憶媒体１１０のメタデータ領域内に記憶されるメタデータは、既知の、又は制御されたプログラム／消去の回数を有し得、設定パラメーターモジュール５０４は、ユーザーデータを記憶する、ソリッドステート記憶媒体１１０の領域に関する、設定パラメーターの基盤を、そのメタデータ領域に関する、既知の、又は制御されたプログラム／消去の回数に置くことができる。
【０２４３】
一実施形態では、記憶セル設定モジュール５０６は、設定パラメーターモジュール５０４が記憶セルのセットに関して判定する設定パラメーターを、その記憶セルのセットが使用するように設定する。記憶セル設定モジュール５０６は、記憶セルのセットのインターフェースを使用して、その記憶セルのセットを設定する。このインターフェースは、公知のインターフェース又は独自開発のインターフェースを含み得る。設定モジュール５０６は、データレジスタを設定することによって、ソリッドステート記憶媒体１１０に関する制御バスのコマンドインターフェースを介してコマンドを送ることによって、ソリッドステート記憶デバイス１０２のデバイスドライバのＡＰＩを呼び出すことによって、ソリッドステート記憶装置コントローラ１０４に関する制御パラメーターを設定することによって、又は他の方法で記憶セルのセットを設定することによって、記憶セルのセットを設定することができる。記憶セル設定モジュール５０６は、特定のコマンド命令、特定のコマンド命令のシーケンスを使用することができ、かつ／又は特定のパラメーター、レジスタ設定、若しくは記憶セルのセットとインターフェースするために使用される通常のコマンド（汎用コマンド）との他の差異を使用することができる。記憶セル設定モジュール５０６は、設定パラメーターモジュール５０４から、設定パラメーターを受信することができ、設定パラメーターレポジトリから、設定パラメーターを検索することなどができる。
【０２４４】
記憶セル設定モジュール５０６は、一実施形態では、トリガーに応答して、判定された設定パラメーターを使用するように、記憶セルのセットを設定する。このトリガーは、特定の実施形態では、ソリッドステート記憶デバイス１０２及び／又はソリッドステート記憶媒体１１０のアーキテクチャーに基づいて選択される。例えば、特定のソリッドステート記憶デバイス１０２及び／又はソリッドステート記憶媒体１１０は、複数の入力／出力操作の全体にわたる設定パラメーターを保持し得るが、一方で、別のソリッドステート記憶デバイス１０２及び／又はソリッドステート記憶媒体１１０は、設定パラメーターを、各入力／出力操作で設定することが必要とされる場合などがある。記憶セル設定モジュール５０６は、ソリッドステート記憶媒体１１０の初期化の間に、記憶セルのセットに発行される各コマンドを使用して動的に、ソリッドステート記憶媒体１１０の動作中にイベント又は時間間隔に応答して、別のトリガーに応答して、などのように記憶セルのセットを一旦設定することができる。
【０２４５】
一実施形態では、記憶セル設定モジュール５０６に対するトリガーとしては、記憶セルのセットに関する記憶媒体特性の変化、記憶セルのセットに関する記憶媒体特性の既定の大きさの変化などが挙げられ、記憶セル設定モジュール５０６は、それらの記憶媒体特性の変化に応答して、記憶セルのセットを設定する。別の実施形態では、記憶セル設定モジュール５０６に対するトリガーとしては、読み取り要求、書き込み要求、消去要求などのような、記憶セルのセットに対する入力／出力要求が挙げられる。例えば、特定の実施形態では、記憶セル設定モジュール５０６は、記憶セルに対する読み取り要求に応答して、読み取り設定パラメーターを使用するように、記憶セルのセットを設定することができ、記憶セルに対する書き込み要求に応答して、書き込み設定パラメーターを使用するように、記憶セルのセットを設定することができ、消去要求に応答して、消去設定パラメーターを使用するように、記憶セルのセットを設定することなどができる。
【０２４６】
更なる実施形態では、ソリッドステート記憶デバイス１０２に対する起動操作、ソリッドステート記憶デバイス１０２に対する通常シャットダウン操作などが、記憶セルの１つ以上のセットを設定するための、記憶セル設定モジュール５０６に対するトリガーである。特定の実施形態では、記憶セル設定モジュール５０６が、起動操作に応答して、記憶セルのセットを、設定パラメーターを使用して一旦設定すると、その記憶セルのセットは、シャットダウン操作、及び後続の起動操作などまで、その設定パラメーターを保持する。記憶セルのセットが、設定パラメーターを保持する方式は、設定パラメーターのタイプ、記憶セルのセットのアーキテクチャーなどに応じて変動し得る。
【０２４７】
一実施形態では、特性更新モジュール５０８は、記憶セルのセットに対する更新イベントに応答して、その記憶セルのセットに関する１つ以上の記憶媒体特性を更新する。更新イベントは、特性更新モジュール５０８が応答して、記憶媒体特性を更新するトリガーである。ソリッドステート記憶デバイス１０２及び／又はソリッドステート記憶媒体１１０の形式、モデル、製造元、製品バージョンなどのような、特定の記憶媒体特性は、実質的に静的とすることができ、特性更新モジュール５０８は、特定の実施形態では、そのような記憶媒体特性を変更することができないか、より少ない頻度で、そのような記憶媒体特性を更新する場合などがある。プログラム／消去サイクルの回数、読み取り回数、保持時間、温度、ユースケース、エラー統計など、他の記憶媒体特性は、動的であり、頻繁に変化し得る。
【０２４８】
一実施形態では、ソリッドステート記憶媒体１１０のバックグラウンドスキャンを、更新イベントとすることができる。例えば、特性更新モジュール５０８は、ソリッドステート記憶媒体１１０のバックグラウンドスキャンを実行して、そのバックグラウンドスキャンの間の、記憶セルのセットのスキャニングに応答して、その記憶セルのセットに関する記憶媒体特性の記録を更新することができる。別の実施形態では、読み取り要求、書き込み要求、消去要求などのような、記憶セルのセット又は隣接する記憶セルのセットに対する入力／出力要求が、更新イベントであり、特性更新モジュール５０８は、その入力／出力要求に応答して、記憶セルのセットに関する記憶媒体特性を更新する。特性更新モジュール５０８に対する更新イベントとしては、更なる実施形態では、ソリッドステート記憶デバイス１０２に対する、起動操作及び／又はシャットダウン操作を挙げることができる。特定の実施形態では、記憶セルのセットに対するガベージコレクション操作が、更新イベントである。例えば、特性更新モジュール５０８は、ガベージコレクション操作が、記憶セルのセットの記憶容量を回復する際などに、その記憶セルのセットに関する記憶媒体特性を更新することができる。
【０２４９】
特性更新モジュール５０８は、一実施形態では、媒体特性モジュール５０２と協働して、媒体特性モジュール５０２を使用するなどして、記憶媒体特性を更新する。特定の実施形態では、特性更新モジュール５０８は、図７Ａ及び図７Ｂに関して、以下でより詳細に説明されるように、記憶媒体特性レポジトリ内に記憶される記憶媒体特性を、更新することができる。
【０２５０】
一実施形態では、設定更新モジュール５１０は、記憶セルのセットに関する設定パラメーターを更新する。設定更新モジュール５１０は、特定の実施形態では、設定パラメーターに対応する１つ以上の記憶媒体特性の変化に応答して、その設定パラメーターを更新する。特性更新モジュール５０８は、特性更新モジュール５０８が記憶媒体特性を更新したことを、設定更新モジュール５１０に通知することができ、設定更新モジュール５１０は、記憶媒体特性を、変化に関して定期的にスキャンすることができ、設定更新モジュール５１０は、記憶セルのセットに関する設定トリガーに応答して、記憶媒体特性を、変化に関して検査することなどができる。
【０２５１】
特定の実施形態では、設定更新モジュール５１０は、既定の変化閾値よりも大きい、記憶媒体特性の変化に応答して、設定パラメーターを更新する。設定更新モジュール５１０は、一実施形態では、設定パラメーターモジュール５０４と協働して、設定パラメーターモジュール５０４を使用するなどして、設定パラメーターを更新する。設定更新モジュール５１０は、別の実施形態では、図８Ａ及び図８Ｂに関して、以下でより詳細に説明されるように、設定パラメーターレポジトリ内に記憶される設定パラメーターを、更新することができる。
【０２５２】
一実施形態では、適合設定モジュール５１２は、ソリッドステート記憶デバイス１０２及び／又はソリッドステート記憶媒体１１０に関する、１つ以上の設定パラメーター、閾値、管理技術などを、動的に調整及び適合させる。特定の実施形態では、適合設定モジュール５１２は、ソリッドステート記憶デバイス１０２が経年変化する場合、ソリッドステート記憶デバイス１０２に関するユースケースが変化する場合などに、調整又は適合させることができる。ユースケースの例としては、キャッシュのユースケース、アーカイブのユースケース、サーバのユースケース、企業体のユースケース、消費者のユースケースなどを挙げることができる。
【０２５３】
適合設定モジュール５１２は、一実施形態では、ソリッドステート記憶デバイス１０２に関する先験的知識、ソリッドステート記憶デバイス１０２に関して収集された実行時統計、ソリッドステート記憶デバイス１０２の記憶セルに関する記憶媒体特性などに、調整又は適合の基盤を置く。磁気記憶装置とは異なり、ソリッドステート記憶装置に関する媒体属性は、典型的には、記憶デバイスの耐用年数にわたって変動する。例えば、ソリッドステート記憶媒体１１０の記憶領域を、記憶容量の回復又はガベージコレクションのために定期的に処理することにより、読み取り妨害の影響を管理し、信頼できるデータ保持を確実にすることができる。
【０２５４】
ソリッドステート記憶媒体１１０では、隣接する記憶セルが選択されて読み取られる場合、読み取り妨害と呼ばれる効果が、非選択の記憶セル内に発生して、非選択の記憶セルの浮遊ゲート上に電荷を収集させ、非選択の記憶セルが、意図的に印加されたものではない増加電圧を有するようになる恐れがある。読み取り妨害の効果に対処する一手法は、妨害されたセルから、有効データを外に移動させ、その一方で、それらのセル内の値を、依然として判定可能のままとすることである。有効データは、新たな物理的な場所に再書き込みすることができ、妨害されたセルを消去して、読み取り妨害の効果を除去する。この手法は、リフレッシュと呼ばれ、リフレッシュ操作間の時間は、データリフレッシュ間隔と称される。読み取り妨害閾値は、読み取り妨害の効果を緩和するために是正措置が必要とされる前の、隣接するセルの読み取りの数である。耐用期間の末期に近いソリッドステート記憶デバイス１０２に対して適切な、記憶容量の回復及び／又はデータリフレッシュのために記憶領域が処理される、データリフレッシュ間隔は、使用開始時でのソリッドステート記憶デバイス１０２に対しては、攻撃性が高すぎる恐れがある。
【０２５５】
適合設定モジュール５１２は、様々な実施形態では、ソリッドステート記憶デバイス１０２の経年（絶対時間での、電源投入時間での、書き込まれたユーザーデータの量などでの）に基づいてデータリフレッシュ間隔を、ソリッドステート記憶デバイス１０２の消耗に基づいて読み取り妨害閾値（すなわち、読み取り妨害の効果を緩和するためにデータがリフレッシュされる前の、読み取り操作の数）を、ソリッドステート記憶デバイス１０２の経年に基づいて消去ブロック退去ポリシーを、ホストの作業負荷に基づいてソリッドステート記憶デバイス１０２に関するガベージコレクションの方法を、アクティブデータと非アクティブデータとの混乱を最小限に抑えるためのエクステント活動のレベルに基づいてソリッドステート記憶デバイス１０２のゾーン単位のガベージコレクションを、ソリッドステート記憶デバイス１０２が経年変化する際にスクラッビングを増大させるためのスクラッビング間隔などを、動的に、調整又は適合させることができる。
【０２５６】
図６Ａは、本発明による、Ｎ個の数の記憶素子６０６のアレイ６００の一実施形態を示す、概略ブロック図である。図示の実施形態では、ＥＣＣチャンク６１６は、幾つかの記憶素子６０６からのデータ６１２を含む。更なる実施形態では、ＥＣＣチャンク６１６に関するＥＣＣ検査ビットもまた、幾つかの記憶素子６０６全体にわたって記憶される。
【０２５７】
記憶素子６０６のアレイ６００は、一実施形態では、Ｎ個の数の記憶素子６０６ａ、６０６ｂ、６０６ｃ、．．．６０６ｎを含む。各記憶素子６０６は、デバイス、チップ、チップの一部分、ダイなどを構成し得る。図示の実施形態では、記憶素子６０６ａ〜ｎは、バンク６０２ａを形成する。アレイ６００は、一実施形態では、幾つかのバンク６０２ａ．．．６０２ｍを含む。バンク６０２ａ〜ｍは、図示の実施形態では、幾つかのチャネル６０４ａ、６０４ｂ、６０４ｃ、．．．、６０４ｎを含む。一実施形態では、パケット又はデータセットは、幾つかのチャネル６０４ａ〜ｎ全体にわたって書き込まれ、各チャネル６０４ａ〜ｎから別個に読み取られて、パケットへと再構築される。別の実施形態では、ＥＣＣチャンク６１６、パケット、又はデータセットは、幾つかのチャネル６０４ａ〜ｎ全体にわたって書き込まれ、データは、全てのチャネル６０４ａ〜ｎから並列に読み取られる。バンク６０２ａに対する１つの読み取り操作は、ＥＣＣチャンク６１６、パケット、若しくはデータセットの全体を読み取るか、又はＥＣＣチャンク６１６、パケット、若しくはデータセットの全体へと再構築される、ＥＣＣチャンク６１６、パケット、若しくはデータセットの一部分を読み取ることができる。図示の実施形態では、各チャネルは、各バンク６０２内の、少なくとも１つの記憶素子６０６を含む。
【０２５８】
更には、一実施形態では、各記憶素子６０６は、物理消去ブロック、すなわち「ＰＥＢ」６０８を含む。例えば、記憶素子１（６０６ａ）は、ＰＥＢ（６０８ａ）を含む。物理消去ブロックは、典型的には、１つのダイ、チップ、又は他の記憶素子６０６上に位置する、消去ブロックである。各ＰＥＢ  ６０８は、ｍ個の物理ページ６１０を含む。例えば、ＰＥＢ（６０８ａ）は、ページ０（６１０ａ）．．．ページｍ（６１４ａ）を含む。各物理ページ６１０ａは、データ（「Ｄ」）６１２の一部分、及びデータ６１２と共に分散されるＥＣＣ検査ビットを記憶する。
【０２５９】
一実施形態では、ＰＥＢのグループ（ＰＥＢ  １（６０８ａ）〜ＰＥＢｍ（６０８ｍ））は、論理消去ブロック（「ＬＥＢ」）を形成する。ＬＥＢは、Ｎ個の記憶素子のアレイ６００を範囲とする。更には、一実施形態では、論理ページ（「ＬＰ」）は、行を成す複数個の物理ページ６１０を範囲とする。別の実施形態では、論理ページは、Ｎ個の記憶素子６０６ａ〜ｎを範囲とする。
【０２６０】
一実施形態では、ＥＣＣは、データと共に分散されるブロックコードである。更には、データ及びＥＣＣは、いずれの特定の物理的ハードウェア境界にも位置合わせされない場合がある。結果として、ＥＣＣコードでのエラー訂正は、特定のハードウェア構成に依存することがない。それゆえ、ＥＣＣ及び対応するデータは、ＥＣＣチャンク６１６を形成することができ、Ｎ個の記憶素子６０６ａ〜ｎのうちの１つ以上に対して、分割して記憶させることができる。ＥＣＣチャンク６１６は、典型的には、論理ページの複数個の物理ページ６１０の少なくとも一部分を範囲として、この場合、データ６１２ａ、６１２ｂ、．．．６１２ｍから生成される、データ及びＥＣＣは、Ｎ個の記憶素子６０６ａ〜ｎ全体にわたって拡散する。一実施形態では、ＬＰは、複数個のＥＣＣチャンク６１６を含む。物理ページ６１０は、ＥＣＣチャンク６１６の１つ以上のデータバイトを含み得る。ＥＣＣチャンク６１６は、物理ページ６１０内部の複数の行を範囲とすることができ、物理ページ６１０は、複数個のＥＣＣチャンク６１６を含み得る。
【０２６１】
図示の実施形態では、ＥＣＣチャンク６１６に関するＥＣＣ検査ビットは、幾つかの記憶素子６０６ａ〜ｎ及びチャネル６０４ａ〜ｎ全体にわたって分散されるため、１つ以上の記憶素子６０６ａ〜ｎ内での読み取り電圧の推移により、データエラーが発生する場合、ＥＣＣモジュール４１２は、いずれの記憶素子６０６が、その読み取り電圧閾値を調整することによって訂正可能なエラーを有するかを、判定することが不可能である場合がある。一実施形態では、既知のバイアスの予想分散の外側にある読み取りバイアスを有するデータを、いずれの記憶素子６０６又はチャネル６０４が有するかを、分散モジュール４１４が判定し、設定モジュール３５２が、分散モジュール４１４によって判定された記憶素子６０６の、読み取り電圧閾値を調整する。
【０２６２】
一実施形態では、偏差モジュール４０４、ＥＣＣモジュール４１２、及び／又は分散モジュール４１４は、データセットが、エラー、又は既知のバイアスから偏移する読み取りバイアスを有することを判定し、データセットソースモジュール４２２が、いずれの記憶素子６０６から、そのデータセットが読み取られたかを判定する。例えば、一実施形態では、アレイ６００は、２４個のチャネル６０４を有し得、読み取り操作の間に、単一のバンク６０２の２４個の記憶素子６０６から、８バイトを並列に読み取ることができ、１度の読み取り操作当たり、合計１９２バイトとなる。この情報に基づいて、データセットソースモジュール４２２は、一実施形態では、いずれの記憶素子６０６から、データセットが読み取られたかを、１９２バイトの内部の、８バイトのデータセットの位置に基づいて判定することができる一実施形態では、この１９２バイトは、ＥＣＣチャンク６１６を構成する。
【０２６３】
チャネル６０４ａ〜ｎのそれぞれからのデータの読み取りバイアスと、既知のバイアスとを比較することによって、設定モジュール３５２は、ＥＣＣ検査ビットを使用せずとも、特定のチャネルに関する、読み取り電圧の変化によって発生するデータエラーを、訂正することができる。チャネル６０４ａ〜ｎからのデータの読み取りバイアスと、既知のバイアスとを比較しない場合には、読み取り電圧閾値の調整には、チャネル６０４ａ〜ｎの可能な組み合わせのそれぞれに関して、可能な読み取り電圧閾値の調整のそれぞれを調整及び試験する、数多くの試行錯誤試験が必要になる。チャネル６０４ａ〜ｎからのデータの読み取りバイアスと、既知のバイアスとを比較することによって、設定モジュール３５２は、いずれのチャネル６０４を調整するべきかを、正確に判定することができる。それらのチャネルに関する偏差の方向を判定することによって、設定モジュール３５２は更に、それらのチャネルに関する読み取り電圧閾値のための探索空間を、半分に減少させる。
【０２６４】
好適な調整読み取り電圧閾値のための探索空間の、潜在的なサイズを説明するために、ＥＣＣチャンク６１６（すなわち、データ及び対応するＥＣＣ検査ビットの双方を含む、ＥＣＣ符号語）が、記憶素子６０６ａ〜６０６ｎ上に記憶されていると想定する。ＥＣＣチャンク６１６を記憶する、アレイ６００の行を為す記憶素子６０６ａ〜６０６ｎは、それぞれ、独立して調整可能な読み取り電圧閾値を有することを、更に想定する。例えば、一実施形態では、η個のチャネル６０４ａ〜ｎと、読み取り電圧閾値を設定することができる、１つのチャネル当たりλ個の数のレベルと、調整が必要な読み取り電圧閾値を有する、ｘ個の数のチャネルとを有する、アレイ６００に関する読み取り電圧閾値設定の、異なる組み合わせの数は、次の等式１によって与えられる。
【０２６５】
【数１】
0005789226.tif 000002
【０２６６】
最大η個のチャネル６０４ａ〜ｎの全ての並べ替えを有する、アレイ６００に関する読み取り電圧閾値設定の、異なる組み合わせの数は、一実施形態では、次の等式２によって与えられる。
【０２６７】
【数２】
0005789226.tif 000003
【０２６８】
等式１を使用して、例えば、２４個のチャネル６０４ａ〜ｎ（η＝２４）各チャネル６０４に関して８つの可能な読み取り電圧閾値設定（λ＝８）が存在し、２４個のチャネル６０６ａ〜ｎのうちの２つのみが、調整が必要な読み取り電圧閾値を有する（ｘ＝２）場合には、合計１７，６４４の、読み取り電圧閾値設定の異なる組み合わせが存在する。調整が必要な読み取り電圧閾値を有するチャネル６０６の数が、３つに増加する場合には、異なる組み合わせの数は、１，０３６，２８８に増加する。設定モジュール３５２は、いずれのチャネル６０６ａ〜ｎが、調整を必要とする読み取り電圧閾値を有するかを検出することによって、これらの数を大幅に低減する。更には、記憶装置のグルーピング内の媒体上のデータの既知のバイアスと、現時点でのバイアスとを比較することにより、読み取り電圧閾値を調整する方向が指示される。読み取り電圧閾値を調整する方向を知ることにより、データエラーを有することが既知であるチャネル内での、好適な電圧のための探索空間は、大きく低減される。
【０２６９】
その結果、試みることが必要とされ得る組み合わせの数は、ｘ＝２の場合、１７，６４４から３２へと、ｘ＝３の場合、１，０３６，２８８から２５６へと変化するが、これは、設定モジュール３５２が既知のバイアスを使用して、いずれのチャネルが調整を必要とする読み取り電圧閾値を有するか、及びその調整の方向を、判定するためである。しかしながら、これらの組み合わせのそれぞれを、試行する必要がない場合があり、これは、調整が反復的に実施される際、そのデータの既知のバイアスは、いずれの方向で後続の調整のそれぞれを実施するべきかを、継続的に指示して、潜在的に、各反復で探索空間を少なくとも半分に削減するためである。様々な探索アルゴリズムを使用して、好適な調整読み取り電圧閾値を、迅速に特定することができる。（すなわち、二分探索）。
【０２７０】
図６Ｂは、本発明による、Ｎ個の記憶素子６０６のアレイ６５０の一実施形態を示す、概略ブロック図である。アレイ６５０は、図示の実施形態では、図６Ａのアレイ６００と実質的に同様であるが、ＥＣＣチャンク６５２は、幾つかの記憶素子６０６ａ〜ｎの全体にわたるのではなく、単一の記憶素子６０６ａ内のデータ６１２ａを含む。一実施形態では、ＥＣＣチャンク６５２に関するＥＣＣ検査ビットは、単一の記憶素子６０６ａ内に記憶される。各記憶素子６０６ａ〜ｎ又はチャネル６０４ａ〜ｎは、別個のＥＣＣ検査ビットを有するため、一実施形態では、ＥＣＣモジュール４１２は、その別個のＥＣＣ検査ビットを使用して、いずれの記憶素子６０６ａ〜ｎ又はチャネル６０４ａ〜ｎ内でエラーが発生したかを判定し、設定モジュール３５２は、ＥＣＣモジュール４１２によって判定された特定の記憶素子６０６の読み取り電圧閾値を調整する。
【０２７１】
図６Ｃは、例示的な符号化又はプログラミングのモデルを使用する、ＭＬＣのＮＡＮＤフラッシュ記憶セルなどのような、マルチレベル記憶セルのセットに関する、設定パラメーター６６２ａ〜ｃの一実施形態を示す。表示される符号化モデルに固有のいずれの限定も、全ての他の符号化モデルに、必ずしも適用されるものではなく、本発明は、いずれかのそのような限定を本質的に含むものとして、解釈されるべきではない。読み取り電圧閾値は、図示の実施形態では、グレイコード符号化モデルを使用して符号化され、隣接状態に関するバイナリ値は、その符号化内の単一のビットで異なる。
【０２７２】
図６Ｃは、値「１１」が、最も低い読み取り電圧状態（Ｌ０と表示される、「消去」状態）と関連し、値「０１」が、２番目に低い読み取り電圧状態（Ｌ１と表示される）と関連し、値「００」が、２番目に高い読み取り電圧状態（Ｌ２と表示される）と関連し、値「１０」が、最も高い読み取り電圧状態（Ｌ３と表示される）と関連することを示す。図６Ｃでは、最も低い読み取り電圧状態Ｌ０は、負電圧として示される。読み取り電圧の値、規模、サイズなどは、ソリッドステート記憶セルの製造元及びタイプによって変動し得、そのそれぞれは、本発明によって包含される。設定パラメーター６６２は、図示の実施形態では、上述のように、状態Ｌ０、Ｌ１、Ｌ２、及び状態Ｌ３を隔てる、読み取り電圧閾値６６２である。ソリッドステート記憶装置コントローラ１０４は、マルチレベル記憶セル内に記憶される電圧の、この４つの離散レベルを、２つのバイナリビットを表すものとして解釈し、１つは、セル符号化内での最上位ビット（ＭＳＢ）によって表され、１つは、セル符号化内での最下位ビット（ＬＳＢ）によって表される。上述のように、他のプログラミング及び符号化のモデルを使用することができる。同様に、特定のソリッドステート記憶媒体１１０は、５つ以上の可能な状態を有し得、３つ以上のバイナリ値が、単一のマルチレベル記憶セル内に記憶されることを可能にする。電圧レベルＬ０、Ｌ１、Ｌ２、及び電圧レベルＬ３は、連続的な場合があり、又は連続的ではない場合もある。例えば、特定の実施形態では、電圧レベルは、保護帯域として既知の、バンドギャップによって隔てられる。例えば、Ｌ０とＬ１とは、０．３Ｖ隔てることができる。
【０２７３】
一実施形態では、ＬＳＢは、データの下位ページに対応し、ＭＳＢは、データの上位ページに対応する。特定の実施形態では、マルチレベル記憶セルは、以下で説明される２相プログラミングモデルに従うことができ、このモデルは、ＭＳＢが書き込み可能になる前に、ＬＳＢが書き込まれることが必要とされ、又は逆も同様である。別の実施形態では、ＬＳＢ及びＭＳＢは、ソリッドステート記憶装置コントローラ１０４によって、別個にプログラムすることができる。そのような手法は、ページ対形成（すなわち、ＭＬＣセルのＬＳＢビットを、異なるＭＬＣセルのＭＳＢビットと対にする）及びページアドレス指定（すなわち、ＬＳＢページは、ＭＳＢページよりも前にプログラムされなければならない、又は逆も同様）に関する、販売元若しくは製造元の要件により、取られる場合がある。特定の場合では、ＬＳＢは、ＭＳＢが書き込まれる前に書き込まれなければならないか、ＭＳＢは、ＬＳＢが書き込まれる前に書き込まれなければならない、などとなる。
【０２７４】
特定の実施形態では、ソリッドステート記憶媒体１１０は、２相プログラミングモデルを採用することができる。そのようなモデルでは、下位ページへの第１の書き込みコマンドによって、バイナリ値が、最初にＬＳＢに書き込まれる。この書き込みコマンドは、マルチレベル記憶セルを、その初期状態（例えば、Ｌ０内の１１状態）から、その後００状態が読み取られるように構成される中間状態（Ｌ１とＬ２との間の、下位〜中間ＬＭ状態）へと移動させる。例えば、下位ページに「０」を書き込むことは、マルチレベル記憶セルを、Ｌ０状態（ＬＳＢ及びＭＳＢの双方が１）から、Ｌ２状態（ＬＳＢが０に変更される）へと変化させる。上位ページへの、後続の「０」の書き込みが、マルチレベル記憶セルを、中間状態（典型的には、Ｌ１状態とＬ２状態との間）から、ＭＬＣの双方のビットが「０」であるようなＬ２状態に移動させる。それゆえ、そのような実施形態では、セルは、中間状態を通って遷移するため、マルチレベルセルをＬ０からＬ２へと移動させるためには、２つの書き込み（１つは下位ページへ、１つは上位ページへ）が必要とされ、ＭＬＣデバイスは、下位ページが上位ページよりも前にプログラムされることを必要とし、消去操作が介在することのない部分的なページのプログラミングを許可しない。上位ページ又は下位ページのいずれかへ「１」を書き込むことは、その時点での下位ページのバイナリ値に応じて、ＭＬＣを、Ｌ１又はＬ３のいずれかへ遷移させることになる。更には、特定のソリッドステート媒体の販売元は、下位ページが上位ページよりも前に書き込まれなければならない、などの要件を課す場合がある。他の実施形態では、ソリッドステート記憶媒体１１０は、上位ページへの第１の書き込みコマンドによって、バイナリ値が最初にＭＳＢに書き込まれる、２相プログラミングモデルを採用することができる。
【０２７５】
一実施形態では、設定モジュール３５２は、上位ページのみ、下位ページのみ、などのような、マルチレベル記憶セルが記憶するバイナリデータのサブセットに基づいて、１つ以上の読み取り電圧閾値６６２を調整する。そのような実施形態では、ＬＳＢビットに関する状態変化を検討することにより、マルチレベル記憶セル内の電圧が変化している方向が、指示される。ビット値の、グレイコード符号化（図６Ｃに示すような）及びバイナリコード符号化の双方に関しては、マルチレベル記憶セルのＬＳＢは、図示の実施形態では、中間の２つの居所又は状態、Ｌ１状態とＬ２状態との間で、バイナリ０とバイナリ１との間で遷移する。他の符号化モデルに関しては、ＭＳＢが、中間の２つの居所又は状態の間で、バイナリ０とバイナリ１との間で遷移することなどができる。グレイコード又はバイナリコード符号化モデルに関しては、ＬＳＢは、「１」の値を、下位の範囲（下位の２つの状態又は居所、Ｌ０及びＬ１を含む）内での読み取り電圧に関して有し、ＬＳＢは、「０」の値を、上位の範囲（上位の２つの状態又は居所、Ｌ２及びＬ３を含む）内での読み取り電圧に関して有する。読み取りバイアスが既知のバイアスから偏移しているか否かを判定するために、ＭＬＣ記憶セルのＬＳＢのみを使用することによって、設定モジュール３５２は、一実施形態では、ＳＬＣ記憶セルに関する読み取りバイアスが既知のバイアスから偏移しているか否かを判定することと実質的に同様の方式で、ＬＳＢデータセットのバイナリ１及び／又はバイナリ０を、計数若しくは集計することなどによって、判定を実施することができる。
【０２７６】
特定のタイプのマルチレベル記憶セルに関しては、中間の読み取り電圧閾値６６２ｂ、並びに隣接するＬ１状態及びＬ２状態は、読み取り電圧をドリフトさせる恐れのある、読み取り妨害又は他の要因に、より敏感であり得る。更には、上述のように、特定の実施形態では、単一のマルチレベル記憶セルのＬＳＢ及びＭＳＢは、異なる物理ページ内に記憶されたデータを表し得る。複数個のマルチレベル記憶セルのそれぞれからの単一のビットを、データセットとして使用することにより、一実施形態では、そのデータセットを検索するための読み取り操作の数を低減することができる。他の実施形態では、下位ページ内の複数個のマルチレベル記憶セルのそれぞれからの単一のビットの使用は、マルチレベル記憶セルに関する、既知のバイアスからの読み取りバイアスの偏差及び方向を検出するプロセスを、単純化する。
【０２７７】
一実施形態では、方向モジュール４０６は、マルチレベル記憶セルの１つ以上の下位ページからのデータを含む、データセットに基づいて、そのマルチレベル記憶セルのグルーピングに関する偏差の方向を判定する。下位ページは、ＬＳＢを含むため、特定の実施形態では、方向モジュール４０６は、ＬＳＢに関する記憶セルの値が、バイナリ１からバイナリ０へ遷移していることを、下位ページに関する読み取りバイアスと下位ページに関する既知のバイアスとの差異が指示することに応答して、読み取り電圧閾値６６２が、より大きい読み取り電圧に向けて偏移していることを判定する。バイナリ１からバイナリ０へ遷移するＬＳＢに関しては、図６Ｃの符号化モデルを使用するマルチレベル記憶セルに関する読み取り電圧は、Ｌ０又はＬ１の状態のいずれかから、Ｌ２又はＬ３の状態にドリフトしなければならず、１つ以上の読み取り電圧閾値６６２を増大させて、読み取り電圧を元のＬ０又はＬ１の状態に戻すべきであることを指示する。
【０２７８】
同様に、特定の実施形態では、方向モジュール４０６は、ＬＳＢに関する記憶セルの値が、バイナリ０からバイナリ１へ遷移していることを、下位ページに関する読み取りバイアスと下位ページに関する既知のバイアスとの差異が指示することに応答して、読み取り電圧閾値６６２が、より小さい読み取り電圧に向けて偏移していることを判定する。バイナリ０からバイナリ１へ遷移するＬＳＢに関しては、図６Ｃの符号化モデルを使用するマルチレベル記憶セルに関する読み取り電圧は、Ｌ３又はＬ２の状態のいずれかから、Ｌ１又はＬ０の状態にドリフトしなければならず、１つ以上の読み取り電圧閾値６６２を減少させて、読み取り電圧を元のＬ３又はＬ２の状態に戻すべきであることを指示する。特定の実施形態では、複数の状態の全体にわたる偏差は、可能性が低い場合があり、ＬＳＢを使用して検出可能な偏差は、Ｌ１状態とＬ２状態との間であり、偏差の明確な方向を、いずれかの方向で指示することができる。
【０２７９】
別の実施形態では、方向モジュール４０６は、ソリッドステート記憶媒体１１０の記憶セルに関して使用される符号化のタイプ、記憶媒体１１０の記憶セルの物理的及び／又は電気的アーキテクチャーなどに、少なくとも部分的に基づいて、偏差の方向を判定する。例えば、図６Ｃの符号化モデルに基づくと、方向モジュール４０６は、２ビットＭＬＣ記憶媒体のタイプに基づいて、データセットが上位ページ又は下位ページのいずれを含むかに基づいて、示されるグレイコード符号化タイプに基づいて、判定される偏差の規模に基づいてなどのように、偏差の方向を判定することができる。更なる実施形態では、方向モジュール４０６は、異なる物理ページなどのような、別個の、若しくは異種のアドレスからのＬＳＢ及びＭＳＢを、単一のデータセットへと変換又は組み合わせるか、あるいは他の方法でＬＳＢ及びＭＳＢを調整して、偏差の方向を判定することができる。
【０２８０】
読み取り電圧閾値調整を判定するために、マルチレベル記憶セル内に記憶される各ビットを使用することにより、特定の実施形態では、読み取り電圧閾値調整の正確性を増大させることができるが、読み取り操作の数が増大するか、又は判定に複雑性が加わる恐れがある。一実施形態では、ＥＣＣデコーダ３２２が、マルチレベル記憶セルのグルーピングの上位ページ内のデータエラーを検出し、データセット読み取りモジュール４０２が、そのグルーピングに関する１つ以上の下位ページを検索し、設定モジュール３５２が、その下位ページに基づいて、そのグルーピングに関する読み取り電圧閾値を調整する。
【０２８１】
図６Ｄは、ソリッドステート記憶媒体１１０のマルチレベル記憶セルのセットに関する、調整設定パラメーター６７２ａ〜ｃの一実施形態を示す。特定の実施形態では、図６Ｃの設定パラメーター６６２ａ〜ｃは、製造元、販売元などによって設定された、デフォルトの設定パラメーターであり、設定モジュール３５２及び／又は事前対応設定モジュール４２４が、これらのデフォルト設定パラメーター６６２ａ〜ｃを、調整設定パラメーター６７２ａ〜ｃへと、調整又は設定する。
【０２８２】
調整設定パラメーター６７２ａ〜ｃは、デフォルト設定パラメーター６６２ａ〜ｃよりも、図６Ｄの実際の記憶セル状態の分散と密接に適合する。記憶セルの対応するセットが、図６Ｄの記憶セル状態の分散を有して、デフォルト設定パラメーター６６２ａ〜ｃを使用した場合であれば、デフォルト設定パラメーター６６２ａ〜ｃの場所を越えてドリフトした分散の諸部分は、データエラーを登録する。調整設定パラメーター６７２ａ〜ｃを使用するように、記憶セルの対応するセットを設定することによって、設定モジュール３５２は、潜在的なデータエラーを、防止、回避、又は訂正する。
【０２８３】
一実施形態では、設定モジュール３５２は、上述のように、偏差モジュール４０４、方向モジュール４０６、調整モジュール４０８などを使用して、調整設定パラメーター６７２ａ〜ｃを反応的に判定する。別の実施形態では、設定モジュール３５２は、上述のように、記憶セルの対応するセットに関する記憶媒体特性に基づいて、事前対応設定モジュール４２４を使用して、調整設定パラメーター６７２ａ〜ｃを事前対応的に判定する。
【０２８４】
図７Ａは、媒体特性モジュール５０２及び記憶媒体特性レポジトリ７０２の、一実施形態を示す。図示の実施形態では、媒体特性モジュール５０２は、記憶媒体特性レポジトリ７０２内に、複数個の異なる記憶セルのセットに関する記憶媒体特性を、記憶及び維持する。記憶媒体特性レポジトリ７０２は、ソリッドステート記憶媒体１１０の記憶セルのセットに関する記憶媒体特性を記述する項目を記憶する。記憶媒体特性レポジトリ７０２は、テーブル、行列、アレイ、データベース、ファイル、又は記憶媒体特性を記憶する別のデータ構造のうちの１つ以上によって、具体化することができる。
【０２８５】
媒体特性モジュール５０２は、ソリッドステート記憶媒体１１０のメタデータ領域内、ソリッドステート記憶デバイス１０２及び／又はコンピュータ１１２の、揮発性メモリ内、コンピュータ１１２の不揮発性記憶装置内に記憶された、ソリッドステート記憶デバイス１０２に関する設定ファイル内、ソリッドステート記憶デバイス１０２の専用不揮発性記憶装置内などのうちの１つ以上に、記憶媒体特性レポジトリを記憶することができる。媒体特性モジュール５０２は、記憶媒体特性レポジトリ７０２及び／又は記憶媒体特性を、単一の場所に記憶することができ、又は複数の場所の間に、記憶を分割することもできる。
【０２８６】
例えば、一実施形態では、媒体特性モジュール５０２は、製造元又は販売元によってプログラムされるプログラム可能読み取り専用メモリ（「ＰＲＯＭ」）内などのような、ソリッドステート記憶デバイス１０２の不揮発性記憶装置から、ソリッドステート記憶デバイス１０２及び／又はソリッドステート記憶媒体１１０に関する形式、モデル、製造元、製品バージョンなどのような、静的な記憶媒体特性にアクセスすることができる。媒体特性モジュール５０２は、プログラム／消去サイクルの回数、読み取り回数、保持時間、温度、ユースケース、エラー統計などのような動的な記憶媒体特性を、ソリッドステート記憶デバイス１０２及び／又はコンピュータ１１２の揮発性メモリ、ソリッドステート記憶媒体１１０上のメタデータ内などに、記憶することができる。媒体特性モジュール５０２が、記憶媒体特性レポジトリ７０２の少なくとも一部分を、揮発性メモリ内に記憶する場合には、特定の実施形態では、媒体特性モジュール５０２は、記憶媒体特性レポジトリ７０２のデータを、ソリッドステート記憶媒体１１０又は他の不揮発性記憶装置に、定期的に保存し得ることにより、媒体特性モジュール５０２は、電源異常、不適切なシャットダウンなどに応答して、記憶媒体特性レポジトリ７０２を再構築することができる。
【０２８７】
図７Ｂは、記憶媒体特性レポジトリ７０２の別の実施形態を示す。記憶媒体特性レポジトリ７０２は、記憶セルのセットに関する複数個の項目７０８を含む。記憶セルのセットは、図示の実施形態では、記憶媒体領域７０６によって編成され、ＬＥＢ  ０〜ＬＥＢ  Ｎの、各記憶媒体領域７０６に関する、記憶媒体特性レポジトリ７０２内の項目７０８を有する。図示の実施形態での記憶媒体領域７０６は、上述のように、論理消去ブロックＬＥＢ０〜ＬＥＢＮとして示されるが、他の実施形態では、記憶媒体領域７０６としては、物理消去ブロック、ページ、論理ページ、ＥＣＣチャンク、ページ内部の区画、ダイ、ダイプレーン、チップなどを挙げることができる。
【０２８８】
各項目７０８は、対応する記憶媒体領域７０６に関する記憶媒体特性７０４を更に含む。記憶媒体特性７０４は、図示の実施形態では、プログラム／消去サイクルの回数７０４ａ、読み取り回数７０４ｂ、保持時間７０４ｃ、温度７０４ｄ、及びビットエラー率７０４ｅを含む。特性更新モジュール５０８が、媒体特性モジュール５０２と協働して、上述のように記憶媒体特性レポジトリ７０２を更新することができる。
【０２８９】
図８Ａは、設定パラメーターモジュール５０４及び設定パラメーターレポジトリ８０２の一実施形態を示す。図示の実施形態では、設定パラメーターモジュール５０４は、設定パラメーターレポジトリ８０２内に、複数個の異なる記憶セルのセットに関する設定パラメーターを、記憶及び維持する。特定の実施形態では、設定パラメーターレポジトリ８０２は、記憶媒体特性レポジトリ７０２に統合して、単一のレポジトリ７０２、８０２の形態にすることができる。設定パラメーターレポジトリ８０２は、ソリッドステート記憶媒体１１０の記憶セルのセットに関する設定パラメーターを記述する項目を記憶する。設定パラメーターレポジトリ８０２は、テーブル、行列、アレイ、データベース、ファイル、又は設定パラメーターを記憶する別のデータ構造のうちの１つ以上によって、具体化することができる。
【０２９０】
図８Ｂは、設定パラメーターレポジトリ８０２の別の実施形態を示す。設定パラメーターレポジトリ８０２は、記憶セルのセットに関する複数個の項目８０８を含む。記憶セルのセットは、図示の実施形態では、記憶媒体領域７０６によって編成され、項目８０８は、ＬＥＢ  ０〜ＬＥＢ  Ｎの記憶媒体領域７０６に対応する。各項目８０８は、対応する記憶媒体領域７０６に関する、設定パラメーター８０４を更に含む。設定パラメーター８０４は、図示の実施形態では、読み取りレベルＲ１（８０４ａ）、読み取りレベルＲ２（８０４ｂ）、及び読み取りレベルＲ３（８０４ｃ）に関する、読み取り電圧閾値調整８０４ａ〜ｃを含み、各項目を、デフォルトの読み取り電圧閾値からの１６進数オフセットとして有する。
【０２９１】
図示の実施形態での設定パラメーター８０４は、上述のように、読み取り電圧閾値調整として示されるが、他の実施形態では、設定パラメーター８０４としては、ソリッドステート記憶媒体１１０の、固有抵抗閾値、書き込み若しくはプログラム閾値、消去閾値、及び／又は他の修正可能パラメーターを挙げることができる。上述のように、設定パラメーター８０４としては、絶対的データ値、データ値に対するオフセット若しくは調整、又は別のパラメーターを挙げることができる。設定更新モジュール５１０が、設定パラメーターモジュール５０４と協働して、上述のように設定パラメーターレポジトリ８０２を更新することができる。
【０２９２】
流れ図
図９は、ソリッドステート記憶媒体１１０の有用性を改善するための方法の一実施形態９００を示す。この方法９００が開始すると、媒体特性モジュール５０２が、ソリッドステート記憶媒体１１０の記憶セルのセットに関する１つ以上の記憶媒体特性を参照する（９０２）。設定パラメーターモジュール５０４が、１つ以上の記憶媒体特性の参照（９０２）に基づいて、記憶セルのセットに関する設定パラメーターを判定する（９０４）。記憶セル設定モジュール５０６が、判定された（９０４）設定パラメーターを使用するように、記憶セルのセットを設定し（９０６）、方法９００が終了する。
【０２９３】
図１０は、ソリッドステート記憶媒体１１０の有用性を改善するための方法の別の実施形態１０００を示す。この方法１０００が開始すると、特性更新モジュール５０８が、ソリッドステート記憶媒体１１０の記憶セルのセットに関して、更新イベントが発生しているか否かを判定する（１００２）。更新イベントが発生していることを、特性更新モジュール５０８が判定する（１００２）場合には、特性更新モジュール５０８は、記憶媒体特性レポジトリ７０２内などの、記憶セルのセットに関する１つ以上の記憶媒体特性を更新する（１００４）。更新イベントが発生していないことを、特性更新モジュール５０８が判定する（１００２）場合には、特性更新モジュール５０８は、記憶セルのセットに関する１つ以上の記憶媒体特性を更新しない（１００４）。
【０２９４】
設定更新モジュール５１０が、１つ以上の記憶媒体特性を更新する（１００４）特性更新モジュール５０８などからの、記憶セルのセットに関する１つ以上の記憶媒体特性の変化が存在するか否かを判定する（１００６）。記憶セルのセットに関する１つ以上の記憶媒体特性の変化が存在することを、設定更新モジュール５１０が判定する（１００６）場合には、媒体特性モジュール５０２が、記憶セルのセットに関する１つ以上の記憶媒体特性を参照し（１００８）、設定パラメーターモジュール５０４及び／又は設定更新モジュール５１０が、記憶セルのセットに関する設定パラメーターを、判定／更新する（１０１０）。記憶セルのセットに関する１つ以上の記憶媒体特性の変化が存在しないことを、設定更新モジュール５１０が判定する（１００６）場合には、この方法１０００は、参照する（１００８）工程、及び判定／更新する（１０１０）工程をスキップする。
【０２９５】
記憶セル設定モジュール５０６が、記憶セルのセットに関して設定トリガーが発生しているか否かを判定する（１０１２）。設定トリガーが発生していることを、記憶セル設定モジュール５０６が判定する（１０１２）場合には、記憶セル設定モジュール５０６は、判定／更新された（１０１０）設定パラメーターを使用するように、記憶セルのセットを設定し（１０１４）、方法１０００を繰り返す。設定トリガーが発生していないことを、記憶セル設定モジュール５０６が判定する（１０１２）場合には、方法１０００を繰り返す。
【０２９６】
本発明は、その趣旨又は本質的特性から逸脱することなく、他の特定の形態で具体化することができる。説明される実施形態はあらゆる点で、制限的なものではなく、単に例示的なものとして見なすべきである。本発明の範囲は、それゆえ、上述の説明によるよりも、添付される特許請求の範囲によって指示される。特許請求の範囲の等価物の意味及び範囲内に入る全ての変更は、それらの特許請求の範囲内に包含されるものとする。
【図１】
0005789226.tif 000004
【図２】
0005789226.tif 000005
【図３Ａ】
0005789226.tif 000006
【図３Ｂ】
0005789226.tif 000007
【図４】
0005789226.tif 000008
【図５】
0005789226.tif 000009
【図６Ａ】
0005789226.tif 000010
【図６Ｂ】
0005789226.tif 000011
【図６Ｃ】
0005789226.tif 000012
【図６Ｄ】
0005789226.tif 000013
【図７Ａ】
0005789226.tif 000014
【図７Ｂ】
0005789226.tif 000015
【図８Ａ】
0005789226.tif 000016
【図８Ｂ】
0005789226.tif 000017
【図９】
0005789226.tif 000018
【図１０】
0005789226.tif 000019