(57)【要約】  ＮＶＭに対する混合粒度の上位レベルの冗長は、改善された上位レベルの冗長動作を、よりよい誤り回復および／または低減された冗長情報オーバーヘッドと共に提供する。例えば相対的により誤りがちな、より信頼性のないＮＶＭのページは、相対的により多くの誤り保護を有する上位レベルの冗長モードにおいて、相対的により多くの冗長情報を費やして動作される。並行して、より信頼性があるＮＶＭのブロックは、相対的により少ない保護を有する上位レベルの冗長モードにおいて、相対的により少ない冗長情報を費やして動作される。相対的により少ない誤り保護を有する上位レベルの冗長モードにおいてＮＶＭの全体を動作させる技術と比較して、ここに記載された技術はよりよい誤り回復を提供する。相対的により多くの誤り保護を有する上位レベルの冗長モードにおいてＮＶＭの全体を動作させる技術と比較して、ここに記載された技術は低減された冗長情報オーバーヘッドを与える。
2015524975.tif 000002
【特許請求の範囲】
【請求項１】
Ｍ個の情報部分をメモリのＭ個のそれぞれの領域において格納することを含む第１の上位レベルの冗長モードで動作することを含み、前記Ｍ個のそれぞれの領域の各々は同じ第１のサイズであり；さらに、
Ｎ個の情報部分を前記メモリのＮ個のそれぞれの領域において格納することを含む第２の上位レベルの冗長モードで動作することを含み、前記Ｎ個のそれぞれの領域の各々は同じ第２のサイズであり；
前記Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、および前記それぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
前記Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、および前記それぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
前記Ｍ個のそれぞれの領域の各々および前記Ｎ個のそれぞれの領域は、前記メモリの非重複領域であり；
前記第１のサイズは前記第２のサイズと異なり；
前記Ｍ個のそれぞれの領域の各々は、前記メモリのＭ個の物理デバイスのそれぞれの１つにあり、前記Ｎ個のそれぞれの領域の各々は、前記メモリのＮ個の物理デバイスのそれぞれの１つにある、方法。
【請求項２】
前記Ｍ個の物理デバイスの少なくともいくつかは前記Ｎ個の物理デバイスの少なくともいくつかである、請求項１に記載の方法。
【請求項３】
前記Ｍ個のそれぞれの領域の任意の１つまたは前記Ｎ個のそれぞれの領域の任意の１つである特定の領域に全体的に含まれる１つ以上の位置にアクセスすることをさらに含み、前記アクセスすることは前記特定の領域のサイズを判断することを含む、請求項１に記載の方法。
【請求項４】
前記メモリは複数のフラッシュデバイスを含み；
前記Ｍ個のそれぞれの領域は前記フラッシュデバイスの第１の１つ以上のＭ個のそれぞれのブロックに対応し、前記第１のサイズはブロックに対応し；
前記Ｎ個のそれぞれの領域は前記フラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応し、前記第２のサイズはページに対応する、請求項１に記載の方法。
【請求項５】
前記Ｍ個のそれぞれのブロックの１つの障害を検出すること、および応答して、少なくとも障害を起こしたブロックを前記第２の上位レベルの冗長モードで動作することをさらに含む、請求項４に記載の方法。
【請求項６】
ＪはＫと等しくない、請求項５に記載の方法。
【請求項７】
それぞれの第１および第２の上位レベルの冗長モードに従ってメモリを管理するための手段と；
前記メモリを管理するための手段に応答して、前記メモリに格納するための手段とを含み；
前記メモリを管理するための手段は、前記格納するための手段に対して、Ｍ個の情報部分をメモリのＭ個のそれぞれの領域に格納するように指示することが可能となっており、前記Ｍ個のそれぞれの領域の各々は同じ第１のサイズであり；
前記メモリを管理するための手段は、さらに、前記格納するための手段に対して、Ｎ個の情報部分を前記メモリのＮ個のそれぞれの領域に格納するように指示することが可能となっており、前記Ｎ個のそれぞれの領域の各々は同じ第２のサイズであり；
前記Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、および前記それぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
前記Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、および前記それぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
前記Ｍ個のそれぞれの領域の各々および前記Ｎ個のそれぞれの領域は、前記メモリの非重複領域であり；
前記第１のサイズは前記第２のサイズと異なり；
前記Ｍ個のそれぞれの領域の各々は、前記メモリのＭ個の物理デバイスのそれぞれの１つにあり、前記Ｎ個のそれぞれの領域の各々は、前記メモリのＮ個の物理デバイスのそれぞれの１つにある、システム。
【請求項８】
前記Ｍ個の物理デバイスの少なくともいくつかは前記Ｎ個の物理デバイスの少なくともいくつかである、請求項７に記載のシステム。
【請求項９】
前記Ｍ個のそれぞれの領域の任意の１つまたは前記Ｎ個のそれぞれの領域の任意の１つである特定の領域に全体的に含まれる１つ以上の位置にアクセスするための手段をさらに含み、前記アクセスするための手段は前記特定の領域のサイズを判断することが可能となっている、請求項７に記載のシステム。
【請求項１０】
前記メモリは複数のフラッシュデバイスを含み；
前記Ｍ個のそれぞれの領域は前記フラッシュデバイスの第１の１つ以上のＭ個のそれぞれのブロックに対応し、前記第１のサイズはブロックに対応し；
前記Ｎ個のそれぞれの領域は前記フラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応し、前記第２のサイズはページに対応する、請求項７に記載に記載のシステム。
【請求項１１】
前記メモリを管理するための手段は、前記Ｍ個のそれぞれのブロックの１つの障害を検出すること、およびその検出に応答して、少なくとも障害を起こしたブロックを前記第２の上位レベルの冗長モードで動作させることが、可能となっている、請求項１０に記載のシステム。
【請求項１２】
ＪはＫと等しくない、請求項１１に記載のシステム。
【請求項１３】
それぞれの第１および第２の上位レベルの冗長モードに従ってメモリを制御することが可能となっている上位レベルの冗長制御回路系と；
前記上位レベルの冗長制御回路系に応答するストレージ回路系とを含み；
前記上位レベルの冗長制御回路系は、前記ストレージ回路系に対して、Ｍ個の情報部分をメモリのＭ個のそれぞれの領域に格納するように指示することが可能となっており、前記Ｍ個のそれぞれの領域の各々は同じ第１のサイズであり；
前記上位レベルの冗長制御回路系は、さらに、前記ストレージ回路系に対して、Ｎ個の情報部分を前記メモリのＮ個のそれぞれの領域に格納するように指示することが可能となっており、前記Ｎ個のそれぞれの領域の各々は同じ第２のサイズであり；
前記Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、および前記それぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
前記Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、および前記それぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
前記Ｍ個のそれぞれの領域の各々および前記Ｎ個のそれぞれの領域は、前記メモリの非重複領域であり；
前記第１のサイズは前記第２のサイズと異なり；
前記Ｍ個のそれぞれの領域の各々は、前記メモリのＭ個の物理デバイスのそれぞれの１つにあり、前記Ｎ個のそれぞれの領域の各々は、前記メモリのＮ個の物理デバイスのそれぞれの１つにある、装置。
【請求項１４】
前記Ｍ個の物理デバイスの少なくともいくつかは前記Ｎ個の物理デバイスの少なくともいくつかである、請求項１３に記載の装置。
【請求項１５】
前記Ｍ個のそれぞれの領域の任意の１つまたは前記Ｎ個のそれぞれの領域の任意の１つである特定の領域に全体的に含まれる１つ以上の位置にアクセスすることが可能となっているアクセス回路系をさらに含み、前記アクセス回路系は、さらに、前記特定の領域のサイズを判断することが可能となっている、請求項１３に記載の装置。
【請求項１６】
前記メモリは複数のフラッシュデバイスを含み；
前記Ｍ個のそれぞれの領域は前記フラッシュデバイスの第１の１つ以上のＭ個のそれぞれのブロックに対応し、前記第１のサイズはブロックに対応し；
前記Ｎ個のそれぞれの領域は前記フラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応し、前記第２のサイズはページに対応する、請求項１３に記載の装置。
【請求項１７】
前記上位レベルの冗長制御回路系は、さらに、前記Ｍ個のそれぞれのブロックの１つの障害を検出すること、およびその検出に応答して、少なくとも障害を起こしたブロックを前記第２の上位レベルの冗長モードで動作させることが、可能となっている、請求項１６に記載の装置。
【請求項１８】
ＪはＫと等しくない、請求項１７に記載の装置。
【請求項１９】
処理要素によって実行されると前記処理要素に動作を実行および／または制御させる命令の組が中に格納される有形的コンピュータ読取可能媒体であって、前記動作は、
Ｍ個の情報部分をメモリのＭ個のそれぞれの領域において格納することを含む第１の上位レベルの冗長モードで動作することを含み、前記Ｍ個のそれぞれの領域の各々は同じ第１のサイズであり；さらに、
Ｎ個の情報部分を前記メモリのＮ個のそれぞれの領域において格納することを含む第２の上位レベルの冗長モードで動作することを含み、前記Ｎ個のそれぞれの領域の各々は同じ第２のサイズであり；
前記Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、および前記それぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
前記Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、および前記それぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
前記Ｍ個のそれぞれの領域の各々および前記Ｎ個のそれぞれの領域は、前記メモリの非重複領域であり；
前記第１のサイズは前記第２のサイズと異なり；
前記Ｍ個のそれぞれの領域の各々は、前記メモリのＭ個の物理デバイスのそれぞれの１つにあり、前記Ｎ個のそれぞれの領域の各々は、前記メモリのＮ個の物理デバイスのそれぞれの１つにある、有形的コンピュータ読取可能媒体。
【請求項２０】
前記Ｍ個の物理デバイスの少なくともいくつかは前記Ｎ個の物理デバイスの少なくともいくつかである、請求項１９に記載の有形的コンピュータ読取可能媒体。
【請求項２１】
前記動作は、前記Ｍ個のそれぞれの領域の任意の１つまたは前記Ｎ個のそれぞれの領域の任意の１つである特定の領域に全体的に含まれる１つ以上の位置にアクセスすることをさらに含み、前記アクセスすることは前記特定の領域のサイズを判断することを含む、請求項１９に記載の有形的コンピュータ読取可能媒体。
【請求項２２】
前記メモリは複数のフラッシュデバイスを含み、
前記Ｍ個のそれぞれの領域は前記フラッシュデバイスの第１の１つ以上のＭ個のそれぞれのブロックに対応し、前記第１のサイズはブロックに対応し；
前記Ｎ個のそれぞれの領域は前記フラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応し、前記第２のサイズはページに対応する、請求項１９に記載の有形的コンピュータ読取可能媒体。
【請求項２３】
前記動作は、前記Ｍ個のそれぞれのブロックの１つの障害を検出すること、および応答して、少なくとも障害を起こしたブロックを前記第２の上位レベルの冗長モードで動作することをさらに含む、請求項２２に記載の有形的コンピュータ読取可能媒体。
【請求項２４】
ＪはＫと等しくない、請求項２３に記載の有形的コンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本願に対する優先権恩恵主張は、（もしあれば適切なように）添付の出願データシート、請求または送付においてなされる。本願の種類によって許容される範囲まで、本願は、すべて、本発明がなされた時期に本願と共通して所有された以下の出願を、すべての目的のため、引用により援用する：
２０１２年８月２日に提出され、筆頭発明者がZhengang CHENであり、「不揮発性メモリのための混合粒度の上位レベルの冗長」（MIXED GRANULARITY HIGHER-LEVEL REDUNDANCY FOR NON-VOLATILE MEMORY）と題される米国非仮出願（事件番号Ｌ１２−０６７４ＵＳ１および連続番号１３／５６５，７５２）；
２０１１年１１月３０日に提出され、筆頭発明者がJeremy Isaac Nathaniel WERNERであり、「独立したシリコン素子を伴う動的な上位レベルの冗長モード管理」（DYNAMIC HIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS）と題されるＰＣＴ出願（事件番号ＳＦ−１０−ｌ０ＰＣＴおよび連続番号ＰＣＴ／ＵＳ１１／０６２７２６）；
２０１２年１月１８日に提出され、筆頭発明者がJeremy Isaac Nathaniel WERNERであり、「上位レベルの冗長情報計算」（HIGHER-LEVEL REDUNDANCY INFORMATION COMPUTATION）と題されるＰＣＴ出願（事件番号ＳＦ−１０−１４ＰＣＴおよび連続番号ＰＣＴ／ＵＳ１２／２１６８２）；
２０１０年１２月１日に提出され、筆頭発明者がJeremy Isaac Nathaniel WERNERであり、「独立したシリコン素子を伴う動的な上位レベルの冗長モード管理」（DYNAMIC HIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS）と題される米国仮出願（事件番号ＳＦ−１０−１０および連続番号６１／４１８，８４６）；
２０１１年１月１８日に提出され、筆頭発明者がJeremy Isaac Nathaniel WERNERであり、「上位レベルの冗長情報計算」（HIGHER-LEVEL REDUNDANCY INFORMATION COMPUTATION）と題される米国仮出願（事件番号ＳＦ−１０−１４および連続番号６１／４３３，９１８）；
２０１１年３月１１日に提出され、筆頭発明者がHao ZHONGであり、「フラッシュメモリのためのＬＤＰＣ消去デコーディング」（LDPC ERASURE DECODING FOR FLASH MEMORIES）と題されるＰＣＴ出願（事件番号ＳＦ−１０−０ｌＰＣＴＢおよび連続番号ＰＣＴ／ＵＳ１１／２８２４４）；および
２０１１年１０月２６日に提出され、筆頭発明者がYan LIであり、「フラッシュメモリに基いたデータストレージのための適応型ＥＣＣ技術」（ADAPTIVE ECC TECHNIQUES FOR FLASH MEMORY BASED DATA STORAGE）と題されるＰＣＴ出願（事件番号ＳＦ−１０−０３ＰＣＴおよび連続番号ＰＣＴ／ＵＳ１１／５７９１４）。
【０００２】
分野：ストレージ技術の進歩は、性能、効率性、および使用の実用性の向上を提供するために必要とされる。
【背景技術】
【０００３】
関連技術：公表されているかまたは周知であると明示的に識別されない限りは、コンテキスト、定義、または比較の目的を含めて、本明細書で参照される技術や概念はそのような技術や概念が既に公知であるかまたはそうでなければ先行技術の一部であることを認めるものと解釈されるべきではない。特許、特許出願および刊行物を含む、本明細書にて引用されるすべての参考文献は（もしあれば）、具体的に組み込まれるかどうかにかかわらず、本明細書にてすべての目的のために、その全体がここに引用により援用される。
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明は、例えば、プロセス、製造物品、装置、システム、物質の組成、およびコンピュータ読取可能記憶媒体などのコンピュータ読取可能媒体（例えば、ディスクなどの光学および／または磁気大容量記憶装置、フラッシュストレージなどの不揮発性ストレージを有する集積回路）、またはプログラム命令が光学的または電子的通信リンクを介して送信されるコンピュータネットワークなどの様々な方法で実現することができる。詳細な説明は、上記の特定分野でのコスト、収益性、性能、効率、および使用の実用性の改善を可能にする本発明の１つ以上の実施形態の説明を提供する。詳細な説明は、詳細な説明の残りの部分の理解を容易にするために導入部を含む。導入部は、本明細書に記載の概念によるシステム、システム、製造物品、およびコンピュータ読取可能媒体の１つ以上の例示的実施形態を含む。結論でさらに詳細に議論されるように、本発明は発行される特許請求の範囲内でのすべての可能な修正および変形を包含する。
【図面の簡単な説明】
【０００５】
【図１Ａ】不揮発性メモリ（ＮＶＭ）のための混合粒度の上位レベルの冗長を与えるＳＳＤコントローラを含むソリッドステートディスク（ＳＳＤ）の実施形態の選択された詳細を示す。
【図１Ｂ】図１ＡのＳＳＤの１つ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を示す。
【図２】論理ブロックアドレス（ＬＢＡ）の論理ページ番号（ＬＰＮ）部分のマッピングの実施形態の選択された詳細を示す。
【図３】読み取りユニットの素量で測定された長さを一括して有する、種々の読み取りユニットとして編成された読み取りデータを生成するよう、読み取りユニットアドレスで不揮発性メモリ（ＮＶＭ）にアクセスする実施形態の選択された詳細を示す。
【図４Ａ】読み取りユニットの実施形態の選択された詳細を示す。
【図４Ｂ】読み取りユニットの別の実施形態の選択された詳細を示す。
【図５】或る数のフィールドを有するヘッダの実施形態の選択された詳細を示す。
【図６】論理スライスおよび／またはセクションにおいて管理される複数のＮＶＭデバイス（例えば１つ以上のフラッシュダイおよび／またはフラッシュチップ）のブロック、ページ、読み取りユニットの実施形態の選択された詳細を示す。
【図７】上位レベルの冗長性技術の様々な実施形態の選択された詳細を示す。
【図８】シリコン独立素子の冗長アレイ（ＲＡＳＩＥ）を有する動的な上位レベルの冗長モード管理の実施形態の選択された詳細を示す。
【図９】１つ以上の読み取りユニットに格納された上位レベルの冗長情報により保護される、適応符号化率の下位レベルの冗長情報を有する読み取りユニットの実施形態を示す。
【図１０】上位レベルの冗長情報結果およびデータソースの対応の実施形態の選択された詳細を示す。
【図１１】上位レベルの冗長情報の計算の実施形態の選択された詳細を示す。
【図１２】（単一動作時の）１つの（下位レベル）障害からの復旧の実施形態の選択された詳細を示す。
【図１３Ａ】（単一動作時の）２つの（下位レベル）障害からの復旧の実施形態の選択された詳細を示す。
【図１３Ｂ】（単一動作時の）２つの（下位レベル）障害からの復旧の実施形態の選択された詳細を示す。
【図１３Ｃ】（単一動作時の）２つの（下位レベル）障害からの復旧の実施形態の選択された詳細を示す。
【図１３Ｄ】（単一動作時の）２つの（下位レベル）障害からの復旧の実施形態の選択された詳細を示す。
【図１４Ａ】ＮＶＭから受信したページに関して上位レベルの冗長情報を計算する実施形態の選択された詳細を示す。
【図１４Ｂ】ＮＶＭから受信したページに関して上位レベルの冗長情報を計算する実施形態の選択された詳細を示す。
【図１５Ａ】ＮＶＭに与える書き込みに関して上位レベルの冗長情報の計算のバックアウトの実施形態の選択された詳細を示す。
【図１５Ｂ】ＮＶＭに与える書き込みに関して上位レベルの冗長情報の計算のバックアウトの実施形態の選択された詳細を示す。
【図１５Ｃ】ＮＶＭに与える書き込みに関して上位レベルの冗長情報の計算のバックアウトの実施形態の選択された詳細を示す。
【図１６】混合粒度の上位レベルの冗長の実施形態の選択された詳細を示す。
【図１７】複数の混合粒度の上位レベルの冗長モードにおける並行動作の実施形態の選択された詳細を示す。
【発明を実施するための形態】
【０００６】
図面の参照符号のリスト
【０００７】
【表１−１】
2015524975.tif 000003
【０００８】
【表１−２】
2015524975.tif 000004
【０００９】
【表１−３】
2015524975.tif 000005
【００１０】
【表１−４】
2015524975.tif 000006
【００１１】
【表１−５】
2015524975.tif 000007
【００１２】
【表１−６】
2015524975.tif 000008
【００１３】
本発明の１つ以上の実施形態の詳細な説明は、本発明の選択された詳細を示す添付の図面と共に以下に提供される。本発明は実施形態に関連して説明される。本明細書での実施形態は単なる例示であると理解され、本発明は本明細書の実施形態のいずれかもしくはすべてに、またはそれ（ら）よって明示的に限定されるものではなく、本発明は多数の代替、修正、および均等物を包含する。説明の単調さを避けるため、様々な単語ラベル（最初の、最後の、特定の、様々な、さらに、他の、特に、選択された、いくつかの、および著しいなどを含むがこれらに限定されない）が実施形態の個別の組に適用され得、本明細書で使用されるそのようなラベルは品質、または好みや偏見の任意の形態を伝えることを明示的に意味するものではなく、単に利便的に個別の組を区別する。開示されたプロセスのいくつかの動作の順序は本発明の範囲内で変更可能である。複数の実施形態がプロセス、システム、および／またはプログラム命令の機能の変形を説明するのに供される場合はいつでも、所定のまたは動的に判断される基準に従って、多数の実施形態の複数にそれぞれ対応する複数の動作モードのうちの１つの静的および／または動的選択を実行する他の実施形態が、企図される。多数の特定の詳細が、本発明の完全な理解を提供するために、以下の説明に記載されている。詳細は例の目的のために提供され、本発明は詳細の一部またはすべてなしで、請求の範囲に従って実施されてもよい。明確化の目的のために、本発明に関連する技術分野で知られている技術的な材料は発明を不必要に不明瞭にしないように、詳細には説明されてはいない。
【００１４】
導入部
導入部は詳細な説明のより迅速な理解を容易にするためにのみ含まれ、本発明は（もしあれば明示的な例を含み）導入部で提示される概念に限定されず、いかなる導入部の段落も、必ず主題全体の要約的な見解であり、網羅的または限定的な説明であることを意図していない。例えば、以下に続く導入部は領域および編成によって特定の実施形態のみに限定される概略情報を提供する。最終的に特許請求の範囲に引き出されることになるものを含む、明細書の残りの部分全体を通して論じられる多くの他の実施形態がある。
【００１５】
略語
ここで定義された様々な省略略語（例えば、頭字語）の少なくともいくつかは本明細書にて使用される特定の要素を指す。
【００１６】
【表２−１】
2015524975.tif 000009
【００１７】
【表２−２】
2015524975.tif 000010
【００１８】
ＮＡＮＤ型フラッシュメモリは情報を格納するためにフローティング・ゲート・トランジスタのアレイを使用する。ＳＬＣ技術では、各ビットセル（例えば、フローティング・ゲート・トランジスタ）は１ビットの情報を格納することが可能である。ＭＬＣ技術では、各ビットセルは複数ビットの情報を格納することが可能である。製造技術（例えばＣＭＯＳ技術）が縮小しているので、各フローティングゲートはより少ない電子を格納する。さらに、記憶容量および密度が増加すると、各ビットセルはより多くのビットを格納する。このため、ビットセルに格納された値がより小さい電圧範囲によって表される。時間の経過とともに格納された電子の量の検知の不確実性および／または変化はデータが間違って格納されるまたは読み取られる確率を高める。（例えば下位レベルでの）１つ以上の冗長性および／またはＥＣＣ技術の使用は、そうでなければ破損したデータをＮＡＮＤ型フラッシュメモリから正確に検索することを可能にし、いくつかの使用シナリオでは上記の困難のいくつかを克服する。
【００１９】
いくつかの種類のＳＳＤは不揮発性ストレージ（例えば、フラッシュメモリは電源の供給なしで情報を保持する）を提供するためにフラッシュメモリを使用している。（例えば上位レベルでの）１つ以上のＥＣＣおよび／または冗長性技術の使用は、そうでなければ破損したデータをフラッシュメモリから正確に検索することを可能にし、および／または１つ以上のフラッシュメモリ素子が断続的または恒久的に障害を発生する場合であってもＳＳＤの適切なシステムレベルの動作を可能にする。
【００２０】
例えば、ＳＳＤコントローラは、ＳＳＤコントローラにより部分的に実現されるＳＳＤの動作中に１つ以上のＮＶＭ（例えば、フラッシュ）素子が障害を発生してもグレースフルデグラデーションを提供するよう、独立したシリコン素子を伴う動的な上位レベルの冗長モードの管理を可能にする。ＮＶＭの一部が読み取られる。下位レベルの冗長性および／または誤り訂正（１つ以上のＥＣＣ技術によってなどの）を使用して訂正できない誤りが発生した場合、次に、上位レベルの冗長および／または誤り訂正（１つ以上のＲＡＳＩＥ技術および／または動的な上位レベルの冗長モード管理技術によってなどの）が誤りを訂正しようとするために使用される。ＮＶＭ素子の１つに、障害が、下位レベルおよび／もしくは上位レベルの冗長および／もしくは誤り訂正により、ならびに／または他の技術（１つ以上のＮＶＭ素子により報告される障害ステータスなど）により検出された場合、次に、上位レベルの冗長および／または誤り訂正は現在のモードでの動作から新しいモードでの動作に動的に遷移される。遷移は、ＳＳＤの空き領域を減少すること、ＳＳＤのデータストレージを再編成すること、障害が発生したユーザデータを復旧／格納すること（可能な場合）、ならびに修正された上位レベルの冗長および／または誤り訂正情報を決定／格納することの１つ以上を含む。そして動作は新しいモードで続行される。もう１つの他のＮＶＭ素子のもう１つの他の障害が新しいモードで現在動作する上位レベルの冗長および／または誤り訂正で検出された場合、次に他の遷移が他の上位レベルの冗長および／または誤り訂正モードに行われる。ＮＶＭへの書き込みは、上位レベルの冗長および／または誤り訂正動作モードおよび書き込みデータに従って上位レベルの冗長および／または誤り訂正情報を決定／格納することを含む、上位レベルの冗長および／または誤り訂正動作モードに従っている。
【００２１】
しきい値数ならびに／またはしきい値率より多い下位レベルの誤り訂正および／もしくは１つ以上の障害が、或るメモリの領域に対して起こる場合には、任意で、そのメモリの領域は、現在の上位レベルの冗長および／または誤り訂正動作モードより多くの誤りから回復することが可能である、新たな上位レベルの冗長および／または誤り訂正動作モードで動作することに動的に遷移する。例えば、現在の上位レベルの冗長および／または誤り訂正動作モードがない（例えば、下位レベルの冗長の障害から復旧して誤りを訂正するよう計算および／または使用される上位レベルの冗長情報がない）場合、新たな上位レベルの冗長および／または誤り訂正動作モードは、下位レベルの冗長によって訂正できない１つの障害からの復旧を可能にするものである。別の例として、現在の上位レベルの冗長および／または誤り訂正動作モードが、下位レベルの冗長によって訂正できない１つの障害からの復旧を可能にするものである場合には、新たな上位レベルの冗長および／または誤り訂正動作モードは、下位レベルの冗長によって訂正できない２つの障害からの復旧を可能にするものである。
【００２２】
上位レベルの冗長および／または誤り訂正情報を決定／格納することは、いくつかの実施形態および／または使用シナリオでは、上位レベルの冗長情報の計算に従っている。上位レベルの冗長情報の計算は、ＳＳＤコントローラが、ＳＳＤコントローラにより部分的に実現されるＳＳＤの動作中に不揮発性（例えば、フラッシュ）メモリ素子の障害のコンテキストで信頼性の高い動作を維持するために上位レベルの冗長性機能を提供することを可能にする。上位レベルの冗長情報の第１の部分は、上位レベルの冗長情報により保護されるデータの部分における全ページのＸＯＲ（例えば、ストライプ）を介してパリティ符号化を用いて計算される。上位レベルの冗長情報の第２の部分は、加重和を計算する際に該部分の各ページが加重として一意の非ゼロの「インデックス」を割り当てられる、加重和技術を使用して計算される。算術計算は有限体（例えば、ガロア体として、またはｐが素数である、ｐを法とする整数など）を介して実行される。
【００２３】
上位レベルの冗長情報の一部は、ＮＶＭ素子上で実行される１つ以上の読み取り動作の完了の順序により決定される順序など、または、ＮＶＭ素子から返送されるおよび／または利用可能なデータの順序に基づいた順序などの、任意の順序で計算可能であり、様々な実施形態で、低減または除去されたバッファリングを可能にする。任意の順序での計算可能性は、様々な実施形態で、比較的少ない一時的および／または中間のバッファリングおよび／または状態を使用して復旧データ値を計算することおよび／または書き込みをバックアウトすることを可能にする。上位レベルの冗長情報の一部は、様々な実施形態で、低減された遅延処理および／または低減されたメモリ（例えば、ＮＶＭ）帯域幅の使用を可能にする、利用可能な専用のハードウェア要素により決定されるような、並列処理の任意の程度で計算可能である。
【００２４】
或る数および／または率の下位レベルの誤り事象（例えば、訂正可能および／または訂正不可能誤り）および／または障害がＮＶＭの様々な領域で異なるように生じるなんらかの情況では、ＮＶＭに対する混合粒度の上位レベルの冗長は、改善された上位レベルの冗長動作をよりよい誤り回復および／または低減された冗長情報オーバーヘッドで可能にする。ある場合では、よりよい誤り回復は、結果として、ＮＶＭおよび／またはＮＶＭと共に実現されるＳＳＤの使用可能な寿命の増大をもたらす。
【００２５】
例として、まず、ＮＶＭのページはすべて、おおよそ等しい率の下位レベルの誤り事象を有する。ＮＶＭのブロックはすべて、最初は、単一動作の間に生じる単一の下位レベルの訂正できない誤りからの回復を可能にする第１の上位レベルの冗長モードで動作される。次いで、ＮＶＭの信頼性において変化があり、ＮＶＭのいくつかのページはより信頼性がなくなり（例えば、より多くの量の下位レベルの誤り事象を有し始める）、一方で、ＮＶＭのすべての他のページは信頼性のあるままである（例えば、同じまたはほとんど同じ量の下位レベルの誤り事象を有し続ける）。前述の下位レベルの事象の量は、例えば下位レベルの事象の数、率、および／または深刻度である。
【００２６】
概念的には、信頼性における変化の後、ＮＶＭは２つの領域：もっぱら信頼性のあるページを有するブロックである第１の領域、および少なくとも１つの信頼性のないページを有するブロックである第２の領域を有する。信頼性における変化に応答して、第２の領域は、単一動作の間に生じる２つの下位レベルの訂正できない誤りからの回復を可能にする第２の上位レベルの冗長モードで部分的に動作されることに、選択的に動的に遷移する。遷移は選択的で部分的であり、なぜなら、より信頼性のないページのみが第２の上位レベルの冗長モードで動作されることに遷移され、一方、第２の領域の信頼性のあるページは第１の上位レベルの冗長モードで動作され続けるからである。一方、第１の領域のブロックはすべて第１の上位レベルの冗長モードで動作され続ける。
【００２７】
第２の領域は、ページ粒度の上位レベルの冗長で動作されるとして記述され、なぜならば、上位レベルの冗長モードはページによって変動するからである（例えば、信頼性のあるページは第１の上位レベルの冗長モードで動作され、より信頼性のないページは第２の上位レベルの冗長モードで動作される）。対照的に、第１の領域は、ブロック粒度の上位レベルの冗長で動作されるとして記述され、なぜならば、上位レベルの冗長モードは領域のすべてのブロックに対して同じであるからである（例えば、ブロックのすべてが第１の上位レベルの冗長モードでされる）。第１の領域がＲ−ブロック全体（ここにおいて別記される）である場合は、第１の領域は、Ｒ−ブロック粒度の上位レベルの冗長で動作されるとして代替的に記述可能であり、なぜならば、上位レベルの冗長モードは領域のすべてのＲ−ブロックに対して同じであるからである（例えば、Ｒ−ブロック全体は、第１の上位レベルの冗長モードで動作される）。
【００２８】
例を結論付けると、より信頼性のないページを第２の上位レベルの冗長モードにおいて動作させることは、より信頼性のないページを第１の上位レベルの冗長モードで動作させておくよりも、よい誤り回復を可能にする。代替的に、より信頼性のないページのみを第２の上位レベルの冗長モードにおいて動作させることは、信頼性のないページのいずれかを有するブロックのすべてを第２の上位レベルの冗長モードにおいて動作させることと比較して、冗長情報オーバーヘッドを低減することを可能にする。
【００２９】
例示的実施形態
詳細な記載への導入部を結論付けることにおいて、この後に続くのは、例示的実施形態の集合であり、少なくともいくつかが明示的にＥＣ（例示的組合わせ）として列挙されて含まれ、ここに記載される概念に従って様々な実施形態のタイプのさらなる記載を提供し；これらの例は、相互排除的、網羅的、または限定的であるようには意味されず；本発明はこれらの例示的実施形態に限定されず、発行された請求項およびそれらの均等物の範囲内におけるすべての可能な修正および変形を包含する。
【００３０】
ＥＣ１）Ｍ個の情報部分をメモリのＭ個のそれぞれの領域において格納することを含む第１の上位レベルの冗長モードで動作することを含み、Ｍ個のそれぞれの領域の各々は同じ第１のサイズであり；さらに、
Ｎ個の情報部分をメモリのＮ個のそれぞれの領域において格納することを含む第２の上位レベルの冗長モードで動作することを含み、Ｎ個のそれぞれの領域の各々は同じ第２のサイズであり；
Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、およびそれぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、およびそれぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
Ｍ個のそれぞれの領域の各々およびＮ個のそれぞれの領域は、メモリの非重複領域であり；
第１のサイズは第２のサイズと異なり；
Ｍ個のそれぞれの領域の各々は、メモリのＭ個の物理デバイスのそれぞれの１つにあり、Ｎ個のそれぞれの領域の各々は、メモリのＮ個の物理デバイスのそれぞれの１つにある、方法。
【００３１】
ＥＣ２）Ｍ個の物理デバイスの少なくともいくつかはＮ個の物理デバイスの少なくともいくつかである、ＥＣ１の方法。
【００３２】
ＥＣ３）Ｍ個の物理デバイスはＮ個の物理デバイスである、ＥＣ１の方法。
ＥＣ４）第１の上位レベルの冗長モードで動作することおよび第２の上位レベルの冗長モードで動作することは、並行してアクティブであり、少なくとも一部の時間の間、メモリは、Ｎ個の情報部分の格納に対応する情報を有することと並行して、Ｍ個の情報部分の格納に対応する情報を有する、ＥＣ１の方法。
【００３３】
ＥＣ５）第２の上位レベルの冗長モードで動作することは、製造欠陥、処理変動、一様でない損耗、信頼性または誤り率における観測された変化、および障害のいずれか１つ以上に応答するものである、ＥＣ４の方法。
【００３４】
ＥＣ６）Ｍ個のそれぞれの領域の任意の１つまたはＮ個のそれぞれの領域の任意の１つである特定の領域に全体的に含まれる１つ以上の位置にアクセスすることをさらに含み、アクセスすることは特定の領域のサイズを判断することを含む、ＥＣ１の方法。
【００３５】
ＥＣ７）メモリは複数のフラッシュデバイスを含む、ＥＣ１の方法。
ＥＣ８）Ｍ個のそれぞれの領域は、複数のフラッシュデバイスの１つ以上のＭ個のそれぞれのブロックに対応する、ＥＣ７の方法。
【００３６】
ＥＣ９）１つ以上のフラッシュデバイスは第１の１つ以上のフラッシュデバイスであり、Ｎ個のそれぞれの領域は複数のフラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応する、ＥＣ８の方法。
【００３７】
ＥＣ１０）第１の１つ以上のフラッシュデバイスの少なくとも１つおよび第２の１つ以上のフラッシュデバイスの少なくとも１つは、同じフラッシュデバイスである、ＥＣ９の方法。
【００３８】
ＥＣ１１）同じフラッシュデバイスは１つ以上のフラッシュダイを有する集積回路を含む、ＥＣ１０の方法。
【００３９】
ＥＣ１２）同じフラッシュデバイスは単一のフラッシュダイを含む、ＥＣ１０の方法。
ＥＣ１３）Ｍ個の情報部分をメモリのＭ個のそれぞれの領域において格納することを含む第１の上位レベルの冗長モードで動作することを含み、Ｍ個のそれぞれの領域の各々は同じ第１のタイプであり；さらに、
Ｎ個の情報部分をメモリのＮ個のそれぞれの領域において格納することを含む第２の上位レベルの冗長モードで動作することを含み、Ｎ個のそれぞれの領域の各々は同じ第２のタイプであり；
Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、およびそれぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、およびそれぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
Ｍ個のそれぞれの領域の各々およびＮ個のそれぞれの領域は、メモリの非重複領域であり；
第１のタイプは第２のタイプと異なり；
Ｍ個のそれぞれの領域の各々は、メモリのＭ個の物理デバイスのそれぞれの１つにあり、Ｎ個のそれぞれの領域の各々は、メモリのＮ個の物理デバイスのそれぞれの１つにある、方法。
【００４０】
ＥＣ１４）メモリは複数のフラッシュデバイスを含み；
Ｍ個のそれぞれの領域はフラッシュデバイスの第１の１つ以上のＭ個のそれぞれのブロックに対応し、第１のタイプはブロックタイプであり；
Ｎ個のそれぞれの領域はフラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応し、第２のタイプはページタイプである、ＥＣ１３の方法。
【００４１】
ＥＣ１５）Ｍ個のそれぞれのブロックの１つの障害を検出すること、および応答して、少なくとも障害を起こしたブロックを第２の上位レベルの冗長モードで動作することをさらに含む、ＥＣ１４の方法。
【００４２】
ＥＣ１６）ＪはＫと等しくない、ＥＣ１またはＥＣ１３の方法。
ＥＣ１７）ＭはＮと等しい、ＥＣ１６の方法。
【００４３】
ＥＣ１８）ＭはＮと等しい、ＥＣ１またはＥＣ１３の方法。
ＥＣ１９）ＭはＮと等しくない、ＥＣ１またはＥＣ１３の方法。
【００４４】
ＥＣ２０）ＪはＫと等しくない、ＥＣ１９の方法。
ＥＣ２１）メモリの領域の少なくともいくつかはフラッシュメモリを含み、格納する行為の１つ以上は、少なくとも一部が、フラッシュメモリに結合され少なくとも１つのフラッシュメモリインターフェース規格と適合するフラッシュメモリインターフェースを介する、ＥＣ１またはＥＣ１３の方法。
【００４５】
ＥＣ２２）メモリの領域の少なくともいくつかはフラッシュメモリを含み、格納する行為の１つ以上は、少なくとも一部が、少なくとも１つのストレージインターフェース規格と適合するホストインターフェースを介してホストから受取られる要求に応答する、ＥＣ１またはＥＣ１３の方法。
【００４６】
ＥＣ２３）メモリの領域の少なくともいくつかはフラッシュメモリを含み、格納する行為の１つ以上は、少なくとも一部が、フラッシュメモリに結合され少なくとも１つのフラッシュメモリインターフェース規格と適合するフラッシュメモリインターフェースを介し、格納する行為の少なくとも１つは、少なくとも一部が、少なくとも１つのストレージインターフェース規格と適合するホストインターフェースを介してホストから受取られる要求に応答する、ＥＣ１またはＥＣ１３の方法。
【００４７】
ＥＣ２４）フラッシュメモリインターフェースおよびホストインターフェースは単一の集積回路（ＩＣ）においてまとめて実現される、ＥＣ２３の方法。
【００４８】
ＥＣ２５）フラッシュメモリインターフェースおよびホストインターフェースはソリッドステートディスク（ＳＳＤ）に含まれる、ＥＣ２３の方法。
【００４９】
ＥＣ２６）フラッシュメモリにおいて、少なくとも一部が、格納する行為の少なくとも１つに応答して生成される、１つ以上の書き込みおよび／またはプログラミングコマンドを受けることをさらに含む、ＥＣ２３の方法。
【００５０】
ＥＣ２７）ホストにおいて要求を生成することをさらに含む、ＥＣ２３の方法。
ＥＣ２８）それぞれの第１および第２の上位レベルの冗長モードに従ってメモリを管理するための手段と；
メモリを管理するための手段に応答して、メモリに格納するための手段とを含み；
メモリを管理するための手段は、格納するための手段に対して、Ｍ個の情報部分をメモリのＭ個のそれぞれの領域に格納するように指示することが可能となっており、Ｍ個のそれぞれの領域の各々は同じ第１のサイズであり；
メモリを管理するための手段は、さらに、格納するための手段に対して、Ｎ個の情報部分をメモリのＮ個のそれぞれの領域に格納するように指示することが可能となっており、Ｎ個のそれぞれの領域の各々は同じ第２のサイズであり；
Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、およびそれぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、およびそれぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
Ｍ個のそれぞれの領域の各々およびＮ個のそれぞれの領域は、メモリの非重複領域であり；
第１のサイズは第２のサイズと異なり；
Ｍ個のそれぞれの領域の各々は、メモリのＭ個の物理デバイスのそれぞれの１つにあり、Ｎ個のそれぞれの領域の各々は、メモリのＮ個の物理デバイスのそれぞれの１つにある、システム。
【００５１】
ＥＣ２９）Ｍ個の物理デバイスの少なくともいくつかはＮ個の物理デバイスの少なくともいくつかである、ＥＣ２８のシステム。
【００５２】
ＥＣ３０）Ｍ個の物理デバイスはＮ個の物理デバイスである、ＥＣ２８のシステム。
ＥＣ３１）メモリを管理するための手段は、第１の上位レベルの冗長モードおよび第２の上位レベルの冗長モードに従ってメモリを並行して管理することが可能となっており、少なくとも一部の時間の間、メモリは、Ｎ個の情報部分の格納に対応する情報を有することと並行して、Ｍ個の情報部分の格納に対応する情報を有する、ＥＣ２８のシステム。
【００５３】
ＥＣ３２）メモリを管理するための手段は、製造欠陥、処理変動、一様でない損耗、信頼性または誤り率における観測された変化、および障害のいずれか１つ以上に応答して、メモリの一部を第１の上位レベルの冗長モードで動作することから第２の上位レベルの冗長モードで動作することに遷移することが可能となっている、ＥＣ３１のシステム。
【００５４】
ＥＣ３３）Ｍ個のそれぞれの領域の任意の１つまたはＮ個のそれぞれの領域の任意の１つである特定の領域に全体的に含まれる１つ以上の位置にアクセスするための手段をさらに含み、アクセスするための手段は特定の領域のサイズを判断することが可能となっている、ＥＣ２８のシステム。
【００５５】
ＥＣ３４）メモリは複数のフラッシュデバイスを含む、ＥＣ２８のシステム。
ＥＣ３５）Ｍ個のそれぞれの領域は、複数のフラッシュデバイスの１つ以上のＭ個のそれぞれのブロックに対応する、ＥＣ３４のシステム。
【００５６】
ＥＣ３６）１つ以上のフラッシュデバイスは第１の１つ以上のフラッシュデバイスであり、Ｎ個のそれぞれの領域は複数のフラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応する、ＥＣ３５のシステム。
【００５７】
ＥＣ３７）第１の１つ以上のフラッシュデバイスの少なくとも１つおよび第２の１つ以上のフラッシュデバイスの少なくとも１つは、同じフラッシュデバイスである、ＥＣ３６のシステム。
【００５８】
ＥＣ３８）同じフラッシュデバイスは１つ以上のフラッシュダイを有する集積回路を含む、ＥＣ３７のシステム。
【００５９】
ＥＣ３９）同じフラッシュデバイスは単一のフラッシュダイを含む、ＥＣ３７のシステム。
【００６０】
ＥＣ４０）それぞれの第１および第２の上位レベルの冗長モードに従ってメモリを管理するための手段と；
メモリを管理するための手段に応答して、メモリに格納するための手段とを含み；
メモリを管理するための手段は、格納するための手段に対して、Ｍ個の情報部分をメモリのＭ個のそれぞれの領域に格納するように指示することが可能となっており、Ｍ個のそれぞれの領域の各々は同じ第１のタイプであり；
メモリを管理するための手段は、さらに、格納するための手段に対して、Ｎ個の情報部分をメモリのＮ個のそれぞれの領域に格納するように指示することが可能となっており、Ｎ個のそれぞれの領域の各々は同じ第２のタイプであり；
Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、およびそれぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、およびそれぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
Ｍ個のそれぞれの領域の各々およびＮ個のそれぞれの領域は、メモリの非重複領域であり；
第１のタイプは第２のタイプと異なり；
Ｍ個のそれぞれの領域の各々は、メモリのＭ個の物理デバイスのそれぞれの１つにあり、Ｎ個のそれぞれの領域の各々は、メモリのＮ個の物理デバイスのそれぞれの１つにある、システム。
【００６１】
ＥＣ４１）メモリは複数のフラッシュデバイスを含み；
Ｍ個のそれぞれの領域はフラッシュデバイスの第１の１つ以上のＭ個のそれぞれのブロックに対応し、第１のタイプはブロックタイプであり；
Ｎ個のそれぞれの領域はフラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応し、第２のタイプはページタイプである、ＥＣ４０のシステム。
【００６２】
ＥＣ４２）メモリを管理するための手段は、Ｍ個のそれぞれのブロックの１つの障害を検出すること、およびその検出に応答して、少なくとも障害を起こしたブロックを第２の上位レベルの冗長モードで動作させることが、可能となっている、ＥＣ４１のシステム。
【００６３】
ＥＣ４３）ＪはＫと等しくない、ＥＣ２８またはＥＣ４０のシステム。
ＥＣ４４）ＭはＮと等しい、ＥＣ４３のシステム。
【００６４】
ＥＣ４５）ＭはＮと等しい、ＥＣ２８またはＥＣ４０のシステム。
ＥＣ４６）ＭはＮと等しくない、ＥＣ２８またはＥＣ４０のシステム。
【００６５】
ＥＣ４７）ＪはＫと等しくない、ＥＣ４６のシステム。
ＥＣ４８）メモリの領域の少なくともいくつかはフラッシュメモリを含み、格納する手段は、フラッシュメモリに結合され少なくとも１つのフラッシュメモリインターフェース規格と適合するフラッシュメモリインターフェースを含む、ＥＣ２８またはＥＣ４０のシステム。
【００６６】
ＥＣ４９）メモリの領域の少なくともいくつかはフラッシュメモリを含み、格納することの少なくとも一部は、少なくとも一部が、少なくとも１つのストレージインターフェース規格と適合するホストインターフェースを介してホストから受取られる要求に応答する、ＥＣ２８またはＥＣ４０のシステム。
【００６７】
ＥＣ５０）メモリの領域の少なくともいくつかはフラッシュメモリを含み、格納する手段は、フラッシュメモリに結合され少なくとも１つのフラッシュメモリインターフェース規格と適合するフラッシュメモリインターフェースを含み、格納することの少なくとも一部は、少なくとも一部が、少なくとも１つのストレージインターフェース規格と適合するホストインターフェースを介してホストから受取られる要求に応答する、ＥＣ２８またはＥＣ４０のシステム。
【００６８】
ＥＣ５１）フラッシュメモリインターフェースおよびホストインターフェースは単一の集積回路（ＩＣ）においてまとめて実現される、ＥＣ５０のシステム。
【００６９】
ＥＣ５２）フラッシュメモリインターフェースおよびホストインターフェースはソリッドステートディスク（ＳＳＤ）に含まれる、ＥＣ５０のシステム。
【００７０】
ＥＣ５３）フラッシュメモリにおいて、少なくとも一部が、格納することの少なくとも一部に応答して生成される、１つ以上の書き込みおよび／またはプログラミングコマンドを受けるための手段をさらに含む、ＥＣ５０のシステム。
【００７１】
ＥＣ５４）フラッシュメモリの任意の部分をさらに含む、ＥＣ５３のシステム。
ＥＣ５５）ホストにおいて、要求を生成するための手段をさらに含む、ＥＣ５０のシステム。
【００７２】
ＥＣ５６）ホストの任意の部分をさらに含む、ＥＣ５５のシステム。
ＥＣ５７）それぞれの第１および第２の上位レベルの冗長モードに従ってメモリを制御することが可能となっている上位レベルの冗長制御回路系と；
上位レベルの冗長制御回路系に応答するストレージ回路系とを含み；
上位レベルの冗長制御回路系は、ストレージ回路系に対して、Ｍ個の情報部分をメモリのＭ個のそれぞれの領域に格納するように指示することが可能となっており、Ｍ個のそれぞれの領域の各々は同じ第１のサイズであり；
上位レベルの冗長制御回路系は、さらに、ストレージ回路系に対して、Ｎ個の情報部分をメモリのＮ個のそれぞれの領域に格納するように指示することが可能となっており、Ｎ個のそれぞれの領域の各々は同じ第２のサイズであり；
Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、およびそれぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、およびそれぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
Ｍ個のそれぞれの領域の各々およびＮ個のそれぞれの領域は、メモリの非重複領域であり；
第１のサイズは第２のサイズと異なり；
Ｍ個のそれぞれの領域の各々は、メモリのＭ個の物理デバイスのそれぞれの１つにあり、Ｎ個のそれぞれの領域の各々は、メモリのＮ個の物理デバイスのそれぞれの１つにある、装置。
【００７３】
ＥＣ５８）Ｍ個の物理デバイスの少なくともいくつかはＮ個の物理デバイスの少なくともいくつかである、ＥＣ５７の装置。
【００７４】
ＥＣ５９）Ｍ個の物理デバイスはＮ個の物理デバイスである、ＥＣ５７の装置。
ＥＣ６０）上位レベルの冗長制御回路系は、さらに、第１の上位レベルの冗長モードおよび第２の上位レベルの冗長モードに従ってメモリを並行して管理することが可能となっており、少なくとも一部の時間の間、メモリは、Ｎ個の情報部分の格納に対応する情報を有することと並行して、Ｍ個の情報部分の格納に対応する情報を有する、ＥＣ５７の装置。
【００７５】
ＥＣ６１）上位レベルの冗長制御回路系は、さらに、製造欠陥、処理変動、一様でない損耗、信頼性または誤り率における観測された変化、および障害のいずれか１つ以上に応答して、メモリの一部を第１の上位レベルの冗長モードで動作することから第２の上位レベルの冗長モードで動作することに遷移することが可能となっている、ＥＣ６０の装置。
【００７６】
ＥＣ６２）Ｍ個のそれぞれの領域の任意の１つまたはＮ個のそれぞれの領域の任意の１つである特定の領域に全体的に含まれる１つ以上の位置にアクセスすることが可能となっているアクセス回路系をさらに含み、アクセス回路系は、さらに、特定の領域のサイズを判断することが可能となっている、ＥＣ５７の装置。
【００７７】
ＥＣ６３）メモリは複数のフラッシュデバイスを含む、ＥＣ５７の装置。
ＥＣ６４）Ｍ個のそれぞれの領域は、複数のフラッシュデバイスの１つ以上のＭ個のそれぞれのブロックに対応する、ＥＣ６３の装置。
【００７８】
ＥＣ６５）１つ以上のフラッシュデバイスは第１の１つ以上のフラッシュデバイスであり、Ｎ個のそれぞれの領域は複数のフラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応する、ＥＣ６４の装置。
【００７９】
ＥＣ６６）第１の１つ以上のフラッシュデバイスの少なくとも１つおよび第２の１つ以上のフラッシュデバイスの少なくとも１つは、同じフラッシュデバイスである、ＥＣ６５の装置。
【００８０】
ＥＣ６７）同じフラッシュデバイスは１つ以上のフラッシュダイを有する集積回路を含む、ＥＣ６６の装置。
【００８１】
ＥＣ６８）同じフラッシュデバイスは単一のフラッシュダイを含む、ＥＣ６６の装置。
ＥＣ６９）それぞれの第１および第２の上位レベルの冗長モードに従ってメモリを制御することが可能となっている上位レベルの冗長制御回路系と；
上位レベルの冗長制御回路系に応答するストレージ回路系とを含み；
上位レベルの冗長制御回路系は、ストレージ回路系に対して、Ｍ個の情報部分をメモリのＭ個のそれぞれの領域に格納するように指示することが可能となっており、Ｍ個のそれぞれの領域の各々は同じ第１のタイプであり；
上位レベルの冗長制御回路系は、さらに、ストレージ回路系に対して、Ｎ個の情報部分をメモリのＮ個のそれぞれの領域に格納するように指示することが可能となっており、Ｎ個のそれぞれの領域の各々は同じ第２のタイプであり；
Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、およびそれぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、およびそれぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
Ｍ個のそれぞれの領域の各々およびＮ個のそれぞれの領域は、メモリの非重複領域であり；
第１のタイプは第２のタイプと異なり；
Ｍ個のそれぞれの領域の各々は、メモリのＭ個の物理デバイスのそれぞれの１つにあり、Ｎ個のそれぞれの領域の各々は、メモリのＮ個の物理デバイスのそれぞれの１つにある、装置。
【００８２】
ＥＣ７０）メモリは複数のフラッシュデバイスを含み；
Ｍ個のそれぞれの領域はフラッシュデバイスの第１の１つ以上のＭ個のそれぞれのブロックに対応し、第１のタイプはブロックタイプであり；
Ｎ個のそれぞれの領域はフラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応し、第２のタイプはページタイプである、ＥＣ６９の装置。
【００８３】
ＥＣ７１）上位レベルの冗長制御回路系は、さらに、Ｍ個のそれぞれのブロックの１つの障害を検出すること、およびその検出に応答して、少なくとも障害を起こしたブロックを第２の上位レベルの冗長モードで動作させることが、可能となっている、ＥＣ７０の装置。
【００８４】
ＥＣ７２）ＪはＫと等しくない、ＥＣ５７またはＥＣ６９の装置。
ＥＣ７３）ＭはＮと等しい、ＥＣ７２の装置。
【００８５】
ＥＣ７４）ＭはＮと等しい、ＥＣ５７またはＥＣ６９の装置。
ＥＣ７５）ＭはＮと等しくない、ＥＣ５７またはＥＣ６９の装置。
【００８６】
ＥＣ７６）ＪはＫと等しくない、ＥＣ７５の装置。
ＥＣ７７）メモリの領域の少なくともいくつかはフラッシュメモリを含み、ストレージ回路系は、フラッシュメモリに結合され少なくとも１つのフラッシュメモリインターフェース規格と適合するフラッシュメモリインターフェースを含む、ＥＣ５７またはＥＣ６９の装置。
【００８７】
ＥＣ７８）メモリの領域の少なくともいくつかはフラッシュメモリを含み、格納することの少なくとも一部は、少なくとも一部が、少なくとも１つのストレージインターフェース規格と適合するホストインターフェースを介してホストから受取られる要求に応答する、ＥＣ５７またはＥＣ６９の装置。
【００８８】
ＥＣ７９）メモリの領域の少なくともいくつかはフラッシュメモリを含み、ストレージ回路系は、フラッシュメモリに結合され少なくとも１つのフラッシュメモリインターフェース規格と適合するフラッシュメモリインターフェースを含み、格納することの少なくとも一部は、少なくとも一部が、少なくとも１つのストレージインターフェース規格と適合するホストインターフェースを介してホストから受取られる要求に応答する、ＥＣ５７またはＥＣ６９の装置。
【００８９】
ＥＣ８０）フラッシュメモリインターフェースおよびホストインターフェースは単一の集積回路（ＩＣ）においてまとめて実現される、ＥＣ７９の装置。
【００９０】
ＥＣ８１）フラッシュメモリインターフェースおよびホストインターフェースはソリッドステートディスク（ＳＳＤ）に含まれる、ＥＣ７９の装置。
【００９１】
ＥＣ８２）フラッシュメモリは、少なくとも一部が、格納することの少なくとも一部に応答して生成される、１つ以上の書き込みおよび／またはプログラミングコマンドを受けることが可能となっている、ＥＣ７９の装置。
【００９２】
ＥＣ８３）フラッシュメモリの任意の部分をさらに含む、ＥＣ８２の装置。
ＥＣ８４）ホストは要求を生成することが可能となっている、ＥＣ７９の装置。
【００９３】
ＥＣ８５）ホストの任意の部分をさらに含む、ＥＣ８４の装置。
ＥＣ８６）処理要素によって実行されると処理要素に動作を実行および／または制御させる命令の組が中に格納される有形的コンピュータ読取可能媒体であって、動作は、
Ｍ個の情報部分をメモリのＭ個のそれぞれの領域において格納することを含む第１の上位レベルの冗長モードで動作することを含み、Ｍ個のそれぞれの領域の各々は同じ第１のサイズであり；さらに、
Ｎ個の情報部分をメモリのＮ個のそれぞれの領域において格納することを含む第２の上位レベルの冗長モードで動作することを含み、Ｎ個のそれぞれの領域の各々は同じ第２のサイズであり；
Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、およびそれぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、およびそれぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
Ｍ個のそれぞれの領域の各々およびＮ個のそれぞれの領域は、メモリの非重複領域であり；
第１のサイズは第２のサイズと異なり；
Ｍ個のそれぞれの領域の各々は、メモリのＭ個の物理デバイスのそれぞれの１つにあり、Ｎ個のそれぞれの領域の各々は、メモリのＮ個の物理デバイスのそれぞれの１つにある、有形的コンピュータ読取可能媒体。
【００９４】
ＥＣ８７）Ｍ個の物理デバイスの少なくともいくつかはＮ個の物理デバイスの少なくともいくつかである、ＥＣ８６の有形的コンピュータ読取可能媒体。
【００９５】
ＥＣ８８）Ｍ個の物理デバイスはＮ個の物理デバイスである、ＥＣ８６の有形的コンピュータ読取可能媒体。
【００９６】
ＥＣ８９）第１の上位レベルの冗長モードで動作することおよび第２の上位レベルの冗長モードで動作することは、並行してアクティブであり、少なくとも一部の時間の間、メモリは、Ｎ個の情報部分の格納に対応する情報を有することと並行して、Ｍ個の情報部分の格納に対応する情報を有する、ＥＣ８６の有形的コンピュータ読取可能媒体。
【００９７】
ＥＣ９０）第２の上位レベルの冗長モードで動作することは、製造欠陥、処理変動、一様でない損耗、信頼性または誤り率における観測された変化、および障害のいずれか１つ以上に応答するものである、ＥＣ８９の有形的コンピュータ読取可能媒体。
【００９８】
ＥＣ９１）動作は、Ｍ個のそれぞれの領域の任意の１つまたはＮ個のそれぞれの領域の任意の１つである特定の領域に全体的に含まれる１つ以上の位置にアクセスすることをさらに含み、アクセスすることは特定の領域のサイズを判断することを含む、ＥＣ８６の有形的コンピュータ読取可能媒体。
【００９９】
ＥＣ９２）メモリは複数のフラッシュデバイスを含む、ＥＣ８６の有形的コンピュータ読取可能媒体。
【０１００】
ＥＣ９３）Ｍ個のそれぞれの領域は、複数のフラッシュデバイスの１つ以上のＭ個のそれぞれのブロックに対応する、ＥＣ９２の有形的コンピュータ読取可能媒体。
【０１０１】
ＥＣ９４）１つ以上のフラッシュデバイスは第１の１つ以上のフラッシュデバイスであり、Ｎ個のそれぞれの領域は複数のフラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応する、ＥＣ９３の有形的コンピュータ読取可能媒体。
【０１０２】
ＥＣ９５）第１の１つ以上のフラッシュデバイスの少なくとも１つおよび第２の１つ以上のフラッシュデバイスの少なくとも１つは、同じフラッシュデバイスである、ＥＣ９４の有形的コンピュータ読取可能媒体。
【０１０３】
ＥＣ９６）同じフラッシュデバイスは１つ以上のフラッシュダイを有する集積回路を含む、ＥＣ９５の有形的コンピュータ読取可能媒体。
【０１０４】
ＥＣ９７）同じフラッシュデバイスは単一のフラッシュダイを含む、ＥＣ９５の有形的コンピュータ読取可能媒体。
【０１０５】
ＥＣ９８）処理要素によって実行されると処理要素に動作を実行および／または制御させる命令の組が中に格納される有形的コンピュータ読取可能媒体であって、動作は、
Ｍ個の情報部分をメモリのＭ個のそれぞれの領域において格納することを含む第１の上位レベルの冗長モードで動作することを含み、Ｍ個のそれぞれの領域の各々は同じ第１のタイプであり；さらに、
Ｎ個の情報部分をメモリのＮ個のそれぞれの領域において格納することを含む第２の上位レベルの冗長モードで動作することを含み、Ｎ個のそれぞれの領域の各々は同じ第２のタイプであり；
Ｍ個の情報部分は、それぞれのＭ−Ｊ個のデータ情報部分、およびそれぞれのＭ−Ｊ個のデータ情報部分を保護するために計算されるそれぞれのＪ個の冗長情報部分を含み；
Ｎ個の情報部分は、それぞれのＮ−Ｋ個のデータ情報部分、およびそれぞれのＮ−Ｋ個のデータ情報部分を保護するために計算されるそれぞれのＫ個の冗長情報部分を含み；
Ｍ個のそれぞれの領域の各々およびＮ個のそれぞれの領域は、メモリの非重複領域であり；
第１のタイプは第２のタイプと異なり；
Ｍ個のそれぞれの領域の各々は、メモリのＭ個の物理デバイスのそれぞれの１つにあり、Ｎ個のそれぞれの領域の各々は、メモリのＮ個の物理デバイスのそれぞれの１つにある、有形的コンピュータ読取可能媒体。
【０１０６】
ＥＣ９９）メモリは複数のフラッシュデバイスを含み、
Ｍ個のそれぞれの領域はフラッシュデバイスの第１の１つ以上のＭ個のそれぞれのブロックに対応し、第１のタイプはブロックタイプであり；
Ｎ個のそれぞれの領域はフラッシュデバイスの第２の１つ以上のＮ個のそれぞれのページに対応し、第２のタイプはページタイプである、ＥＣ９８の有形的コンピュータ読取可能媒体。
【０１０７】
ＥＣ１００）動作は、Ｍ個のそれぞれのブロックの１つの障害を検出すること、および応答して、少なくとも障害を起こしたブロックを第２の上位レベルの冗長モードで動作することをさらに含む、ＥＣ９９の有形的コンピュータ読取可能媒体。
【０１０８】
ＥＣ１０１）ＪはＫと等しくない、ＥＣ８６またはＥＣ９８の有形的コンピュータ読取可能媒体。
【０１０９】
ＥＣ１０２）ＭはＮと等しい、ＥＣ１０１の有形的コンピュータ読取可能媒体。
ＥＣ１０３）ＭはＮと等しい、ＥＣ８６またはＥＣ９８の有形的コンピュータ読取可能媒体。
【０１１０】
ＥＣ１０４）ＭはＮと等しくない、ＥＣ８６またはＥＣ９８の有形的コンピュータ読取可能媒体。
【０１１１】
ＥＣ１０５）ＪはＫと等しくない、ＥＣ１０４の有形的コンピュータ読取可能媒体。
ＥＣ１０６）メモリの領域の少なくともいくつかはフラッシュメモリを含み、格納することの少なくとも一部は、少なくとも一部が、フラッシュメモリに結合され少なくとも１つのフラッシュメモリインターフェース規格と適合するフラッシュメモリインターフェースを介する、ＥＣ８６またはＥＣ９８の有形的コンピュータ読取可能媒体。
【０１１２】
ＥＣ１０７）メモリの領域の少なくともいくつかはフラッシュメモリを含み、格納することの少なくとも一部は、少なくとも一部が、少なくとも１つのストレージインターフェース規格と適合するホストインターフェースを介してホストから受取られる要求に応答する、ＥＣ８６またはＥＣ９８の有形的コンピュータ読取可能媒体。
【０１１３】
ＥＣ１０８）メモリの領域の少なくともいくつかはフラッシュメモリを含み、格納することの少なくとも一部は、少なくとも一部が、フラッシュメモリに結合され少なくとも１つのフラッシュメモリインターフェース規格と適合するフラッシュメモリインターフェースを介し、格納することの少なくとも一部は、少なくとも一部が、少なくとも１つのストレージインターフェース規格と適合するホストインターフェースを介してホストから受取られる要求に応答する、ＥＣ８６またはＥＣ９８の有形的コンピュータ読取可能媒体。
【０１１４】
ＥＣ１０９）フラッシュメモリインターフェースおよびホストインターフェースは単一の集積回路（ＩＣ）においてまとめて実現される、ＥＣ１０８の有形的コンピュータ読取可能媒体。
【０１１５】
ＥＣ１１０）フラッシュメモリインターフェースおよびホストインターフェースはソリッドステートディスク（ＳＳＤ）に含まれる、ＥＣ１０８の有形的コンピュータ読取可能媒体。
【０１１６】
ＥＣ１１１）フラッシュメモリは、少なくとも一部が、格納することの少なくとも一部に応答して生成される、１つ以上の書き込みおよび／またはプログラミングコマンドを受けることが可能となっている、ＥＣ１０８の有形的コンピュータ読取可能媒体。
【０１１７】
ＥＣ１１２）ホストは要求を生成することが可能となっている、ＥＣ１０８の有形的コンピュータ読取可能媒体。
【０１１８】
ＥＣ１１３）フラッシュメモリインターフェース規格を有するかまたは参照する前述のＥＣのいずれかであって、フラッシュメモリインターフェース規格は、
オープンＮＡＮＤフラッシュインターフェース（ＯＮＦＩ）、
トグルモードインターフェース、
ダブルデータレート（ＤＤＲ）同期インターフェース、
ＤＤＲ２同期インターフェース、
同期インターフェース、および
非同期インターフェースのうちの１つ以上と適合する、ＥＣ。
【０１１９】
ＥＣ１１４）ホストを有するかまたは参照する前述のＥＣのいずれかであって、ホストは、
コンピュータ、
ワークステーションコンピュータ、
サーバーコンピュータ、
ストレージサーバ、
ストレージ接続ネットワーク（ＳＡＮ）、
ネットワーク接続ストレージ（ＮＡＳ）装置、
ダイレクトアタッチストレージ（ＤＡＳ）装置、
ストレージ機器、
パーソナルコンピュータ（ＰＣ）、
ラップトップコンピュータ、
ノートブックコンピュータ、
ネットブックコンピュータ、
タブレット装置またはコンピュータ、
ウルトラブックコンピュータ、
電子読み取り装置（電子リーダ）、
パーソナルデジタルアシスタント（ＰＤＡ）、
ナビゲーションシステム、
（ハンドヘルド）全地球測位システム（ＧＰＳ）装置、
自動車制御システム、
自動車媒体制御システムまたはコンピュータ、
プリンタ、複写機またはファクシミリまたはオールインワン装置、
販売時点ＰＯＳ装置、
キャッシュレジスタ、
メディアプレイヤー、
テレビ、
メディアレコーダ、
ディジタルビデオレコーダ（ＤＶＲ）、
デジタルカメラ、
携帯ハンドセット、
コードレス電話の受話器、および
電子ゲームの１つ以上を含むＥＣ。
【０１２０】
ＥＣ１１５）ストレージインターフェース規格を有するかまたは参照する前述のＥＣのいずれかであって、ストレージインターフェース規格は、
ユニバーサル・シリアル・バス（ＵＳＢ）インターフェース規格、
コンパクトフラッシュ（登録商標）（ＣＦ）インターフェース規格、
マルチメディアカード（ＭＭＣ）インターフェース規格、
組み込みＭＭＣ（ｅＭＭＣ）インターフェース規格、
サンダーボルトインターフェース規格、
ＵＦＳインターフェース規格、
セキュアデジタル（ＳＤ）インターフェース規格、
メモリ・スティック・インターフェース規格、
ｘＤ−ピクチャー・カード・インターフェース規格、
統合ドライブエレクトロニクス（ＩＤＥ）インターフェース規格、
シリアルＡＴＡ（ＳＡＴＡ）インターフェース規格、
外部ＳＡＴＡ（ｅＳＡＴＡ）インターフェース規格、
小型コンピュータ・システム・インターフェース（ＳＣＳI）インターフェース規格、
シリアル接続小型コンピュータ・システム・インターフェース（ＳＡＳ）インターフェース規格、
ファイバ・チャネル・インターフェース規格、
イーサネット（登録商標）インターフェース規格、および
ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）インターフェース規格の１つ以上を含むＥＣ。
【０１２１】
ＥＣ１１６）少なくとも１つのフラッシュデバイスを有するかまたは参照する前述のＥＣのいずれかであって、少なくとも１つのフラッシュデバイスの少なくとも一部は、
ＮＡＮＤフラッシュ技術ストレージセル、および
ＮＯＲフラッシュ技術ストレージセルの１つ以上を含む、ＥＣ。
【０１２２】
ＥＣ１１７）少なくとも１つのフラッシュデバイスを有するかまたは参照する前述のＥＣのいずれかであって、少なくとも１つのフラッシュデバイスの少なくとも一部は、
シングルレベルセル（ＳＬＣ）フラッシュ技術ストレージセル、および
マルチレベルセル（ＭＬＣ）フラッシュ技術ストレージセルの１つ以上を含む、ＥＣ。
【０１２３】
ＥＣ１１８）少なくとも１つのフラッシュデバイスを有するかまたは参照する前述のＥＣのいずれかであって、少なくとも１つのフラッシュデバイスの少なくとも一部は、
ポリシリコン技術ベースの電荷ストレージセル、および
窒化シリコン技術ベースの電荷ストレージセルの１つ以上を含む、ＥＣ。
【０１２４】
ＥＣ１１９）少なくとも１つのフラッシュデバイスを有するかまたは参照する前述のＥＣのいずれかであって、少なくとも１つのフラッシュデバイスの少なくとも一部は、
二次元技術ベースのフラッシュメモリ技術、および
三次元技術ベースのフラッシュメモリ技術の１つ以上を含む、ＥＣ。
【０１２５】
システム
いくつかの実施形態では、ＳＳＤなどのＩ／ＯデバイスはＳＳＤコントローラを含む。ＳＳＤコントローラはＳＳＤのホストインターフェースとＮＶＭの間のブリッジとして機能し、ＳＳＤのホストインターフェースを介してコンピューティングホストから送信されるホストプロトコルのコマンドを実行する。少なくともいくつかのコマンドは、ＳＳＤにコンピューティングホストからおよびコンピューティングホストへ送信されるデータをＮＶＭにそれぞれ書き込むおよび読み取るために指示を出す。さらなる実施形態では、ＳＳＤコントローラはＮＶＭ内のホストプロトコルのＬＢＡと物理記憶アドレスとの間の変換をするマップを使用することが可能になる。さらなる実施形態では、マップの少なくとも一部はＩ／Ｏデバイスの専用ストレージ（コンピューティングホストに見えない）のために使用される。例えば、コンピューティングホストによりアクセスできないＬＢＡの一部はログ、統計情報、またはその他の専用データへのアクセスを管理するようＩ／Ｏデバイスにより使用される。
【０１２６】
いくつかの実施形態では、ＮＶＭ内の様々なサイズの素量の圧縮データにアクセスすることはいくつかの使用シナリオにおける改善された記憶効率を提供する。例えば、ＳＳＤコントローラはコンピューティングホストから（非圧縮）データ（例えば、ディスク書き込みコマンドに関連する）を受信し、データを圧縮し、フラッシュメモリに圧縮データを格納する。コンピューティングホストからの後続の要求（例えば、ディスク読み取りコマンドに関連する）に応じて、ＳＳＤコントローラはフラッシュメモリから圧縮データを読み取り、圧縮データを解凍し、コンピューティングホストに非圧縮データを提供する。圧縮データは様々なサイズの素量に従ってフラッシュメモリに格納され、素量サイズは例えば、圧縮アルゴリズム、動作モード、および各種データに対する圧縮効果によって変化する。ＳＳＤコントローラは、ヘッダがフラッシュメモリに格納されている場所を決定するために、含まれているマップテーブルを調べることにより、部分的にデータを解凍する。ＳＳＤコントローラは適切な（圧縮）データがフラッシュメモリのどの場所に格納されているかを決定するためにフラッシュメモリから取得したヘッダを解析する。ＳＳＤコントローラはコンピューティングホストに提供する非圧縮データを生成するためにフラッシュメモリから適切なデータを解凍する。本出願では、解凍する（およびその変形）は展開する（およびその変形）と同義である。
【０１２７】
様々な実施形態では、ＳＳＤコントローラは、コンピューティングホストとのインターフェースをするためのホストインターフェース、フラッシュメモリなどのＮＶＭとのとインターフェースをするためのインターフェース、およびインターフェースを制御し圧縮および解凍を実行する（および／または圧縮および解凍の実行の様々な側面を制御する）ための回路系、ならびに下位レベルの冗長および／または誤り訂正、上位レベルの冗長および／または誤り訂正、および独立したシリコン素子を伴う動的な上位レベルの冗長モード管理を含む。
【０１２８】
様々な実施形態によれば、いくつかのホストインターフェースは、ＵＳＢインターフェース規格、ＣＦインターフェース規格、ＭＭＣインターフェース規格、ｅＭＭＣインターフェース規格、サンダーボルトインターフェース規格、ＵＦＳインターフェース規格、ＳＤインターフェース規格、メモリ・スティック・インターフェース規格、ｘＤ−ピクチャー・カード・インターフェース規格、ＩＤＥインターフェース規格、ＳＡＴＡインターフェース規格、ＳＣＳＩインターフェース規格、ＳＡＳインターフェース規格、およびＰＣｌｅインターフェース規格の１つ以上と互換性がある。様々な実施形態によれば、コンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＳＡＮ、ＮＡＳ装置、ＤＡＳ装置、ストレージ機器、ＰＣ、ラップトップコンピュータ、ノート型パソコン、ネットブックコンピュータ、タブレット装置またはコンピュータ、ウルトラブックコンピュータ、電子読み取り装置（電子リーダなど）、ＰＤＡ、ナビゲーションシステム、（ハンドヘルド）ＧＰＳ装置、自動車制御システム、自動車メディア制御システムまたはコンピュータ、プリンタ、複写機またはファクシミリまたはオールインワン装置、ＰＯＳ装置、キャッシュレジスタ、メディアプレイヤー、テレビ、メディアレコーダ、ＤＶＲ、デジタルカメラ、携帯電話機、コードレス電話の受話器、および電子ゲーム等のすべてまたは任意の部分である。いくつかの実施形態では、インターフェースホスト（ＳＡＳ／ＳＡＴＡブリッジなど）はコンピューティングホストおよび／またはコンピューティングホストへのブリッジとして動作する。
【０１２９】
様々な実施形態では、ＳＳＤコントローラは１つ以上のプロセッサを含む。プロセッサはＳＳＤコントローラの動作を制御および／または行うためにファームウェアを実行する。ＳＳＤコントローラはデータと同様にコマンドおよび／またはステータスを送受信するためにコンピューティングホストと通信する。コンピューティングホストはオペレーティングシステム、ドライバ、およびアプリケーションのうちの１つ以上を実行する。ＳＳＤコントローラを搭載したコンピューティングホストによる通信は、必要に応じておよび／または選択的に、ドライバおよび／またはアプリケーションを介する。第１の例では、ＳＳＤコントローラへのすべての通信はドライバを介してであり、アプリケーションは、ドライバに対して、ドライバがＳＳＤコントローラのために特定のコマンドに変換する上位レベルのコマンドを、提供する。第２の例では、ドライバはバイパスモードを実現し、アプリケーションはドライバを介しＳＳＤコントローラに特定のコマンドを送信することが可能となる。第３の例では、ＰＣＩｅのＳＳＤコントローラは、一旦設定されるとドライバをバイパスして、アプリケーションがＳＳＤコントローラと直接通信することを可能にする、１つ以上の仮想関数（ＶＦ）をサポートする。
【０１３０】
様々な実施形態によれば、いくつかのＳＳＤは、ＨＤＤ、ＣＤドライブ、ＤＶＤドライブなどの磁気的および／または光学的な不揮発性ストレージにより使用されるフォームファクタ、電気的インターフェース、および／またはプロトコルと互換性がある。様々な実施形態では、ＳＳＤは、ゼロ個以上のパリティ符号、ゼロ個以上のＲＳ符号、ゼロ個以上のＢＣＨ符号、ゼロ個以上のビタビまたは他のトレリス符号、およびゼロ個以上のＬＤＰＣ符号の様々な組み合せを使用する。
【０１３１】
図１Ａは、ＮＶＭに対する混合粒度の上位レベルの冗長を提供するＳＳＤコントローラを含むＳＳＤの実施形態の選択された詳細を示す。ＳＳＤコントローラはＮＶＭ素子（例えば、フラッシュメモリ）を介して実現されるような不揮発性ストレージを管理するためのものである。ＳＳＤコントローラ１００は１つ以上の外部インターフェース１１０を介してホスト（図示せず）に通信するように結合される。様々な実施形態によれば、外部インターフェース１１０は、ＳＡＴＡインターフェース、ＳＡＳインターフェース、ＰＣＩｅインターフェース、ファイバ・チャネル・インターフェース、イーサネット（登録商標）インターフェース（例えば、１０ギガビットイーサネット（登録商標））、前述のインターフェースのいずれかの非標準バージョン、カスタムインターフェース、またはストレージおよび／または通信および／またはコンピューティング装置を相互接続するために使用されるインターフェースの任意の他のタイプの１つ以上である。例えば、いくつかの実施形態では、ＳＳＤコントローラ１００はＳＡＴＡインターフェースおよびＰＣＩｅインターフェースを含む。
【０１３２】
ＳＳＤコントローラ１００は、１つ以上のフラッシュデバイス１９２のインスタンスなどの１つ以上のストレージデバイスを含むＮＶＭ１９９に１つ以上のデバイスインターフェース１９０を介して通信するようにさらに結合される。様々な実施形態によれば、デバイスインターフェース１９０は、非同期インターフェース、同期インターフェース、シングルデータレート（ＳＤＲ）インターフェース、ダブルデータレート（ＤＤＲ）インターフェース、ＤＲＡＭ互換ＤＤＲまたはＤＤＲ２同期インターフェース、ＯＮＦＩ ２．２またはＯＮＦＩ ３．０互換インターフェースなどのＯＮＦＩ互換インターフェース、トグルモード互換フラッシュインターフェース、前述のいずれかのインターフェースの非標準バージョン、カスタムインターフェース、またはストレージデバイスへの接続に使用される任意の他のタイプのインターフェースの１つ以上である。
【０１３３】
各フラッシュデバイス１９２は、いくつかの実施形態では、１つ以上の個々のフラッシュダイ１９４を有する。フラッシュデバイス１９２の特定の１つのタイプに応じて、特定のフラッシュデバイス１９２内の複数のフラッシュダイ１９４は必要に応じておよび／または選択的に並列にアクセス可能である。フラッシュデバイス１９２はＳＳＤコントローラ１００に通信するように結合可能なストレージデバイスの一種の単なる代表例である。様々な実施形態では、例えば、ＳＬＣ ＮＡＮＤフラッシュメモリ、ＭＬＣ ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、ポリシリコンまたは窒化シリコン技術ベースの電荷ストレージセルを使用したフラッシュメモリ、二次元または三次元技術ベースのフラッシュメモリ、読み取り専用メモリ、スタティックランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、強磁性メモリ、相変化メモリ、レーストラックメモリ、ＲｅＲＡＭ、またはメモリデバイスもしくは記憶媒体の任意の他のタイプなどの、ストレージデバイスの任意のタイプが使用可能である。
【０１３４】
様々な実施形態によれば、デバイスインターフェース１９０は次のように編成される：バス毎に１つ以上のフラッシュデバイス１９２のインスタンスを有する１つ以上のバス；グループ内のバスは一般的に並列にアクセスされる、バス毎に１つ以上のフラッシュデバイス１９２のインスタンスを有する１つ以上のバスのグループ；またはデバイスインターフェース１９０上の１つ以上のフラッシュデバイス１９２のインスタンスの任意の他の編成。
【０１３５】
図１Ａにおいて続いて、ＳＳＤコントローラ１００は、ホストインターフェース１１１、データ処理１２１、バッファ１３１、マップ１４１、リサイクラ１５１、ＥＣＣ１６１、デバイス・インターフェース・ロジック１９１、およびＣＰＵ１７１などの１つ以上のモジュールを有する。図１Ａに示す特定のモジュールおよび相互接続は１つの実施形態の単なる代表例であり、いくつかのまたは全部のモジュールの多くの配置および相互接続が、図示されない追加モジュールと同様に、考えられる。第１の例では、いくつかの実施形態では、デュアルポートを提供するために２つ以上のホストインターフェース１１１がある。第２の例では、いくつかの実施形態では、データ処理１２１および／またはＥＣＣ１６１はバッファ１３１と組合わせられる。第３の例では、いくつかの実施形態では、ホストインターフェース１１１は直接バッファ１３１に結合され、データ処理１２１は必要に応じておよび／または選択的に、バッファ１３１に格納されたデータを処理する。第４の例では、いくつかの実施形態では、デバイス・インターフェース・ロジック１９１はバッファ１３１に直接結合され、ＥＣＣ１６１は必要に応じておよび／または選択的に、バッファ１３１に格納されたデータを処理する。
【０１３６】
ホストインターフェース１１１は外部インターフェース１１０を介してコマンドおよび／またはデータを送信および受信し、いくつかの実施形態では、タグトラッキング１１３を介して個々のコマンドの進捗をトラッキングする。例えば、ＳＳＤが読み取りステータスおよび／または読み取りデータを提供するのに応答して、コマンドは、アドレス（ＬＢＡなど）を指定する読み取りコマンドおよび読み取りデータ量（ある数のＬＢＡ素量、例えばセクタなど）を含む。別の例では、ＳＳＤが書き込みステータスを提供し、ならびに／または書き込みデータを要求し、および必要に応じてその後に書き込みステータスを提供するのに応答して、コマンドは、アドレス（ＬＢＡなど）を指定する書き込みコマンドおよび書き込みデータ量（ある数のＬＢＡ素量、例えばセクタなど）を含む。さらに別の例では、ＳＳＤがマップを変更し、したがっておよび必要に応じて割り当て解除ステータスを提供するのに応答して、コマンドは、もはや割り当てられることを必要としない１つ以上のアドレス（１つ以上のＬＢＡなど）を指定する割り当て解除コマンド（例えば、トリムコマンド）を含む。いくつかのコンテキストではＡＴＡ互換のＴＲＩＭコマンドは典型的な割り当て解除コマンドである。さらに別の例では、ＳＳＤが適切なステータスを提供するのに応答して、コマンドはスーパー・キャパシタ・テスト・コマンドまたはデータハードニング成功クエリを含む。いくつかの実施形態では、ホストインターフェース１１１はＳＡＴＡプロトコルと互換性があり、ＮＣＱコマンドを使用して、各々が０から３１の数字として表される一意のタグを有する、３２個までの保留中コマンドを有することが可能となっている。いくつかの実施形態では、タグトラッキング１１３は、外部インターフェース１１０を介して受信したコマンドの外部タグを、ＳＳＤコントローラ１００により処理中のコマンドをトラッキングするために使用する内部タグと関連付けることが可能となっている。
【０１３７】
様々な実施形態では、データ処理１２１は必要に応じておよび／または選択的にバッファ１３１と外部インターフェース１１０との間で送信されるいつくかのまたはすべてのデータを処理する、ならびにデータ処理１２１は必要に応じておよび／または選択的に、バッファ１３１に格納されたデータを処理する、の１つ以上が行われる。いくつかの実施形態では、データ処理１２１は、フォーマッティング、再フォーマッティング、トランスコーディング、ならびに任意のその他のデータ処理および／または操作タスクの１つ以上を実行する１つ以上のエンジン１２３を使用する。
【０１３８】
バッファ１３１は外部インターフェース１１０に／からデバイスインターフェース１９０から／に送信されるデータを格納する。いくつかの実施形態では、バッファ１３１は１つ以上のフラッシュデバイス１９２のインスタンスを管理するためにＳＳＤコントローラ１００により使用される、いくつかのまたはすべてのマップテーブルなどの、システムデータを付加的に格納する。様々な実施形態では、バッファ１３１は、データの一時記憶に使用されるメモリ１３７、バッファ１３１におよび／またはそれからのデータの移動を制御するために使用されるＤＭＡ１３３、および上位レベルの誤り訂正および／または冗長機能を提供するために使用されるＥＣＣ−Ｘ１３５、ならびにその他のデータ移動および／または操作機能の１つ以上を有する。上位レベルの冗長機能の例はＲＡＩＤのような能力（例えば、ＲＡＳＩＥ）であり、冗長性はディスクレベルの代わりにフラッシュデバイスレベル（例えば、フラッシュデバイス１９２の複数のもの）および／またはフラッシュダイ（例えば、フラッシュダイ１９４）レベルである。
【０１３９】
様々な実施形態では、ＥＣＣ１６１は必要に応じておよび／または選択的にバッファ１３１とデバイスインターフェース１９０との間で送信されるいくつかのまたはすべてのデータを処理する、ならびにＥＣＣ１６１は必要に応じておよび／または選択的に、バッファ１３１に格納されたデータを処理する、の１つ以上が行われる。いくつかの実施形態では、ＥＣＣ１６１は１つ以上のＥＣＣ技術に従うなどして下位レベルの誤り訂正および／または冗長機能を提供するために使用される。いくつかの実施形態では、ＥＣＣ１６１は、ＣＲＣ符号、ハミング符号、ＲＳ符号、ＢＣＨ符号、ＬＤＰＣ符号、ビタビ符号、トレリス符号、ハード決定符号、ソフト決定符号、消去ベース符号、任意の誤り検出および／または訂正符号、ならびに前述の符号の任意の組み合せの１つ以上を実現する。いくつかの実施形態では、ＥＣＣ１６１は１つ以上のデコーダ（ＬＤＰＣデコーダなど）を含む。
【０１４０】
デバイス・インターフェース・ロジック１９１はデバイスインターフェース１９０を介してフラッシュデバイス１９２のインスタンスを制御する。デバイス・インターフェース・ロジック１９１はフラッシュデバイス１９２のプロトコルに従ってフラッシュデバイス１９２のインスタンスから／にデータを送信することが可能となっている。デバイス・インターフェース・ロジック１９１はデバイスインターフェース１９０を介してフラッシュデバイス１９２のインスタンスを選択的にシーケンス制御するようスケジューリング１９３を含む。例えば、いくつかの実施形態では、スケジューリング１９３はフラッシュデバイス１９２のインスタンスへの動作をキューイングすることが可能となっており、フラッシュデバイス１９２（またはフラッシュダイ１９４）のインスタンスの個々のものが利用可能であるようにフラッシュデバイス１９２（またはフラッシュダイ１９４）のインスタンスの個々のものに動作を選択的に送信することが可能となっている。
【０１４１】
マップ１４１は外部データアドレスをＮＶＭ１９９内の場所にマッピングするためにテーブル１４３を使用して、外部インターフェース１１０で使用されるデータアドレス指定とデバイスインターフェース１９０で使用されるデータアドレス指定との間で変換を行う。例えば、いくつかの実施形態では、マップ１４１は、外部インターフェース１１０上で使用されるＬＢＡを、テーブル１４３により提供されるマッピングを介して、１つ以上のフラッシュダイ１９４を対象としたブロックおよび／またはページアドレスに変換する。ドライブ製造または割り当て解除以降に書き込まれていなかったＬＢＡについては、ＬＢＡが読まれる場合に、マップポイントはデフォルト値に戻る。例えば、割り当て解除コマンドを処理するときに、マップは割り当て解除ＬＢＡに対応するエントリがデフォルト値の１つを指すように修正される。様々な実施形態では、各々が対応するポインタを有する様々なデフォルト値がある。複数のデフォルト値は、いくつかの割り当て解除ＬＢＡ（第１の範囲など）を１つのデフォルト値として読み取り、その一方で、別の割り当て解除ＬＢＡ（第２の範囲内など）を別の１つのデフォルト値として読み取ることを可能にする。様々な実施形態では、デフォルト値は、フラッシュメモリ、ハードウェア、ファームウェア、コマンドおよび／もしくはプリミティブ引数および／もしくはパラメータ、プログラマブルレジスタ、またはそれらの様々な組み合せにより定義される。
【０１４２】
いくつかの実施形態では、マップ１４１は外部インターフェース１１０上で使用されるアドレスとデバイスインターフェース１９０上で使用されるデータアドレス指定との間の変換を実行および／または参照するためにテーブル１４３を使用する。様々な実施形態によれば、テーブル１４３は、１レベルマップ、２レベルマップ、マルチレベルマップ、マップキャッシュ、圧縮されたマップ、１つのアドレス空間から別のアドレス空間への任意のタイプのマッピング、および前述のものの任意の組み合せの１つ以上である。様々な実施形態によれば、テーブル１４３は、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、ＮＶＭ（フラッシュメモリなど）、キャッシュメモリ、オンチップメモリ、オフチップメモリ、および前述のものの任意の組み合せの１つ以上を含む。
【０１４３】
いくつかの実施形態では、リサイクラ１５１はガベージコレクション（ごみ収集）を実行する。例えば、いくつかの実施形態では、フラッシュデバイス１９２のインスタンスは、再書き込み可能である前に消去されなければならないブロックを含む。リサイクラ１５１は、マップ１４１により維持されるマップをスキャンすることによるなどして、フラッシュデバイス１９２のインスタンスのどの部分が能動的に使用中（例えば、割り当て解除ではなく割り当てられている）であるかを判断することが可能となっており、フラッシュデバイス１９２のインスタンスの未使用（例えば、割り当て解除された）部分を消去することにより書き込みのために利用可能とすることが可能となっている。さらなる実施形態では、リサイクラ１５１は、フラッシュデバイス１９２のインスタンスの、より大きな連続した部分を書き込み用に利用可能なようにするために、フラッシュデバイス１９２のインスタンス内に格納されたデータを移動することが可能となっている。
【０１４４】
いくつかの実施形態では、フラッシュデバイス１９２のインスタンスは異なるタイプおよび／またはプロパティのデータを格納するための１つ以上のバンドを有するために選択的におよび／または動的に構成、管理、および／または使用される。バンドの数、配置、サイズ、およびタイプは動的に変更可能である。例えば、リサイクラ１５１からのデータがコールド（よりアクティブでない）バンドに書き込まれている間に、コンピューティングホストからのデータはホット（アクティブな）バンドに書き込まれる。いくつかの使用シナリオでは、コンピューティングホストが長い連続したストリームを書き込む場合、その時にはホットバンドのサイズが大きくなり、コンピューティングホストがランダムな書き込みまたは少数の書き込みを行う場合、その時にはコールドバンドのサイズが大きくなる。
【０１４５】
ＣＰＵ１７１はＳＳＤコントローラ１００の様々な部分を制御する。ＣＰＵ１７１はＣＰＵコア１７２を含む。ＣＰＵコア１７２は、種々の実施形態によると、１つ以上のシングルコアまたはマルチコアプロセッサである。ＣＰＵコア１７２内の個々のプロセッサコアは、いくつかの実施形態では、マルチスレッドである。ＣＰＵコア１７２は命令および／またはデータキャッシュおよび／またはメモリを含む。例えば、命令メモリはＳＳＤコントローラ１００を制御するためにＣＰＵコア１７２がプログラム（例えば、時にはファームウェアと呼ばれるソフトウェア）を実行することを可能にする命令を含む。いくつかの実施形態では、ＣＰＵコア１７２により実行されるファームウェアの一部または全部がフラッシュデバイス１９２のインスタンスに格納されている（例えば、図１ＢにおいてＮＶＭ １９９のファームウェア１０６として図示される）。
【０１４６】
様々な実施形態では、ＣＰＵ１７１は、外部インターフェース１１０を介して受信したコマンドをコマンドが進行中にトラッキングし制御するためのコマンド管理１７３、バッファ１３１の割り当ておよび使用を制御するためのバッファ管理１７５、マップ１４１を制御するための変換管理１７７、データアドレス指定の整合性を制御するためおよび外部データアクセスとリサイクル・データ・アクセスと間でのような競合を避けるためのコヒーレンシ管理１７９、デバイス・インターフェース・ロジック１９１を制御するためのデバイス管理１８１、識別情報の変更および通信を制御するための識別管理１８２、ならびに必要に応じて他の管理ユニットをさらに含む。ＣＰＵ １７１によって実行される管理機能は、様々な実施形態によれば、ハードウェアにより、ソフトウェア（ＣＰＵコア１７２上または外部インターフェース１１０を介して接続されたホスト上で実行するファームウェアなど）により、またはそれらの任意の組み合せにより、いずれも制御および／もしくは管理されないか、いずれかが制御および／もしくは管理されるか、またはすべてが制御および／もしくは管理される。
【０１４７】
いくつかの実施形態では、ＣＰＵ１７１は、パフォーマンス統計を収集および／または報告する、ＳＭＡＲＴを実現する、電源シーケンスを制御する、消費電力を制御および／または監視および／または調節する、電源障害に対応する、クロックレートを制御および／または監視および／または調整する、ならびにその他の管理タスクの１つ以上などの他の管理タスクを実行することが可能となっている。
【０１４８】
様々な実施形態は、ＳＳＤコントローラ１００と同様であり、ホストインターフェース１１１および／または外部インターフェース１１０の適応などを介して様々なコンピューティングホストでの動作と互換性のあるコンピューティングホスト・フラッシュ・メモリ・コントローラを含む。様々なコンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＳＡＮ、ＮＡＳ装置、ＤＡＳ装置、ストレージ機器、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレット装置またはコンピュータ、ウルトラブックコンピュータ、電子読み取り装置（電子リーダなど）、ＰＤＡ、ナビゲーションシステム、（ハンドヘルド）ＧＰＳ装置、自動車制御システム、自動車用メディア制御システムまたはコンピュータ、プリンタ、複写機、ファクシミリまたはオールインワン装置、ＰＯＳ装置、キャッシュレジスタ、メディアプレイヤー、テレビ、メディアレコーダ、ＤＶＲ、デジタルカメラ、携帯電話機、コードレス電話の受話器、および電子ゲームの１つまたは任意の組み合せを含む。
【０１４９】
様々な実施形態では、ＳＳＤコントローラ（またはコンピューティングホスト・フラッシュ・メモリ・コントローラ）のすべてまたは任意の部分は、単一のＩＣ、マルチダイＩＣの単一のダイ、マルチダイＩＣの複数のダイ、または複数のＩＣ上に実現される。例えば、バッファ１３１はＳＳＤコントローラ１００の他の要素と同じダイ上に実現される。別の例では、バッファ１３１はＳＳＤコントローラ１００の他の要素とは異なるダイ上に実現される。
【０１５０】
図１Ｂは図１ＡのＳＳＤの１つ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を示す。ＳＳＤ１０１はデバイスインターフェース１９０を介してＮＶＭ １９９に結合されたＳＳＤコントローラ１００を含む。図は、ホストに直接結合された単一のＳＳＤ、それぞれの外部インターフェース介して各々がそれぞれホストに直接結合された複数のＳＳＤ、および様々な相互接続要素を介してホストに間接的に結合された１つ以上のＳＳＤなどの実施形態の様々なクラスを示す。
【０１５１】
ホストに直接結合される単一のＳＳＤの例示的実施形態として、ＳＳＤ１０１の１つのインスタンスは外部インターフェース１１０を介してホスト１０２に直接結合される（例えば、スイッチ／ファブリック／中間コントローラ１０３は省略、バイパス、またはパススルーされる）。各々がそれぞれの外部インターフェースを介してホストに直接結合される複数のＳＳＤの例示的実施形態として、ＳＳＤ１０１の複数のインスタンスの各々は外部インターフェース１１０のそれぞれのインスタンスを介してホスト１０２にそれぞれ直接結合される（例えば、スイッチ／ファブリック／中間コントローラ１０３は省略、バイパス、またはパススルーされる）。種々の相互接続要素を介してホストに間接的に結合される１つ以上のＳＳＤの例示的実施形態として、ＳＳＤ１０１の１つ以上のインスタンスの各々はホスト１０２にそれぞれ間接的に結合される。各間接的な結合は、スイッチ／ファブリック／中間コントローラ１０３に結合される外部インターフェース１１０のそれぞれのインスタンス、およびホスト１０２に結合する中間インターフェース１０４を介する。
【０１５２】
スイッチ／ファブリック／中間コントローラ１０３を含むいくつかの実施形態は、メモリインターフェース１８０を介して結合されＳＳＤによりアクセス可能なカードメモリ１１２Ｃも含む。様々な実施形態では、ＳＳＤ、スイッチ／ファブリック／中間コントローラ、および／またはカードメモリの１つ以上は物理的に識別可能なモジュール、カード、またはプラグ可能な要素（例えば、Ｉ／Ｏカード１１６）に含まれる。いくつかの実施形態では、ＳＳＤ１０１（またはその変形）はホスト１０２のように動作するイニシエータに結合されるＳＡＳドライブまたはＳＡＴＡドライブに対応する。
【０１５３】
ホスト１０２は、ＯＳ１０５、ドライバ１０７、アプリケーション１０９、およびマルチデバイス管理ソフトウェア１１４の様々な組み合せのようなホストソフトウェア１１５の様々な要素を実行することが可能となっている。点線矢印１０７Ｄはホストソフトウェア←→Ｉ／Ｏデバイス通信の代表的なものであり、例えば、ＳＳＤ１０１の１つ以上のインスタンスに／から、およびドライバ１０７を介してＯＳ１０５、ドライバ１０７、およびアプリケーション１０９のいずれか１つ以上から／に、ドライバ１０７を介して、または直接ＶＦとしてのどちらかで、送信／受信されるデータである。
【０１５４】
ＯＳ１０５はＳＳＤとのインターフェース用のドライバ（ドライバ１０７により概念的に示されている）を含む、および／または動作することが可能となっている。Ｗｉｎｄｏｗｓ（登録商標）の様々なバージョン（例えば、９５、９８、ＭＥ、ＮＴ、ＸＰ、２０００、サーバ、Ｖｉｓｔａ、および７）、Ｌｉｎｕｘ（登録商標）の様々なバージョン（例えば、Ｒｅｄ Ｈａｔ、Ｄｅｂｉａｎ、およびＵｂｕｎｔｕ）、およびＭａｃＯＳの様々なバージョン（例えば８、９およびＸ）はＯＳ１０５の例である。様々な実施形態では、ドライバは、ＳＡＴＡ、ＡＨＣＩ、またはＮＶＭ Ｅｘｐｒｅｓｓなどの標準インターフェースおよび／またはプロトコルで動作可能な標準および／または汎用ドライバ（時には「シュリンクラップ」または「プリインストール」と呼ばれる）であり、または必要に応じてＳＳＤ１０１に固有のコマンドを使用できるようにカスタマイズされたおよび／またはベンダー固有のものである。いくつかのドライブおよび／またはドライバは、パススルーモードを有し、最適化されたＮＡＮＤアクセス（時にはＯＮＡと呼ばれる）または直接ＮＡＮＤアクセス（時にはＤＮＡと呼ばれる）技術を介するアプリケーション１０９のようなアプリケーションレベルのプログラムがコマンドを直接ＳＳＤ１０１に通信することを可能にして、カスタマイズされたアプリケーションがＳＳＤ１０１に固有のコマンドを汎用ドライバででも使用することを可能にする。ＯＮＡ技術は、非標準修飾子（ヒント）の使用、ベンダー固有コマンドの使用、非標準統計情報の通信、圧縮率に応じた実際のＮＶＭの使用状況など、および他の技術の１つ以上を含む。ＤＮＡ技術は、ＮＶＭへのマッピングされていない読み取り、書き込み、および／または消去アクセスを提供する非標準またはベンダー固有のコマンドの使用、Ｉ／Ｏデバイスが他の方法で行うであろうデータのフォーマッティングをバイパスするなどの、ＮＶＭへのより直接的なアクセスを提供する非標準またはベンダー固有のコマンドの使用、および他の技術の１つ以上を含む。ドライバの例としては、ＯＮＡまたはＤＮＡサポートなしのドライバ、ＯＮＡ対応ドライバ、ＤＮＡ対応ドライバ、およびＯＮＡ／ＤＮＡ対応ドライバなどである。ドライバのさらなる例としては、ベンダー提供、ベンダー開発、および／またはベンダー拡張ドライバ、およびクライアント提供、クライアント開発、および／またはクライアント拡張ドライバなどである。
【０１５５】
アプリケーションレベルのプログラムの例としては、ＯＮＡまたはＤＮＡサポートなしのアプリケーション、ＯＮＡ対応アプリケーション、ＤＮＡ対応アプリケーション、およびＯＮＡ／ＤＮＡ対応アプリケーションなどである。点線矢印１０９Ｄは、アプリケーション←→Ｉ／Ｏデバイスの通信（例えば、アプリケーションのドライバを介してのバイパスまたはＶＦを介してのバイパス）の代表的なものであり、例えば、仲介としてＯＳを使用しないアプリケーションなどの、ＳＳＤとの通信を行うＯＮＡ対応アプリケーションおよびＯＮＡ対応ドライバなどである。点線矢印１０９Ｖは、アプリケーション←→Ｉ／Ｏデバイスの通信（例えば、アプリケーションのＶＦを介してのバイパス）の代表的なものであり、例えば、仲介としてＯＳまたはドライバを使用しないアプリケーションなどの、ＳＳＤとの通信を行うＤＮＡ対応アプリケーションおよびＤＮＡ対応ドライバなどである。
【０１５６】
ＮＶＭ１９９の１つ以上の部分は、いくつかの実施形態では、例えば、ファームウェア１０６などの、ファームウェアストレージに使用される。ファームウェアストレージは１つ以上のファームウェアイメージ（またはその一部）を含む。例えば、ファームウェアイメージは、例えば、ＳＳＤコントローラ１００のＣＰＵコア１７２により実行される１つ以上のファームウェアのイメージを有する。他の例では、ファームウェアイメージは、例えば、ファームウェアの実行中にＣＰＵコアによって参照される、定数、パラメータ値、およびＮＶＭデバイス情報の１つ以上のイメージを有する。ファームウェアのイメージは、例えば、現在のファームウェアイメージおよびゼロ個以上の以前（ファームウェアのアップデートに関して）のファームウェアイメージに対応する。様々な実施形態では、ファームウェアは、汎用、標準、ＯＮＡ、および／またはＤＮＡの動作モードを提供する。いくつかの実施形態では、１つ以上のファームウェアの動作モードは、必要に応じてドライバにより通信および／または提供される、キーまたは種々のソフトウェア技術を介して有効となる（例えば、１つ以上のＡＰＩが「ロック解除」される）。
【０１５７】
スイッチ／ファブリック／中間コントローラを欠いたいくつかの実施形態では、ＳＳＤは外部インターフェース１１０を介してホストに直接結合される。様々な実施形態では、ＳＳＤコントローラ１００は、ＲＡＩＤコントローラなどの、他のコントローラの１つ以上の中間レベルを介してホストに結合される。いくつかの実施形態では、ＳＳＤ１０１（またはその変形）は、ＳＡＳドライブまたはＳＡＴＡドライブに対応し、およびスイッチ／ファブリック／中間コントローラ１０３は、イニシエータに次いで結合されるエキスパンダに対応し、または代替的にスイッチ／ファブリック／中間コントローラ１０３は、エキスパンダを介してイニシエータに間接的に結合されるブリッジに対応する。いくつかの実施形態では、スイッチ／ファブリック／中間コントローラ１０３は１つ以上のＰＣＩｅスイッチおよび／またはファブリックを含む。
【０１５８】
ホスト１０２がコンピューティングホスト（例えば、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＳＡＮ、ＮＡＳ装置、ＤＡＳ装置、ストレージ機器、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、および／またはネットブックコンピュータ）としてであるいくつかの実施形態などの、様々な実施形態では、コンピューティングホストは必要に応じて１つ以上のローカルおよび／またはリモートサーバ（例えば、オプションのサーバ１１８）と（例えば、オプションのＩ／Ｏ＆ストレージ装置／リソース１１７およびオプションのＬＡＮ／ＷＡＮ１１９を介して）通信することが可能となっている。通信は、例えば、任意の１つ以上のＳＳＤ１０１の要素のローカルおよび／またはリモートアクセス、管理、および／または使用を可能にする。いくつかの実施形態では、通信は全面的にまたは部分的にイーサネット（登録商標）を介したものである。いくつかの実施形態では、通信は全面的にまたは部分的にファイバチャネルを介したものである。ＬＡＮ／ＷＡＮ１１９は、様々な実施形態では、サーバファーム内のネットワーク、サーバファームを結合するネットワーク、メトロエリアネットワーク、およびインターネット（登録商標）のいずれか１つ以上などのような、ローカルおよび／またはワイド・エリア・ネットワークの代表的なものである。
【０１５９】
様々な実施形態では、ＳＳＤコントローラおよび／またはコンピューティングホスト・フラッシュ・メモリ・コントローラと１つ以上のＮＶＭとの組み合せは、ＵＳＢストレージコンポーネント、ＣＦストレージコンポーネント、ＭＭＣストレージコンポーネント、ｅＭＭＣストレージコンポーネント、サンダーボルト・ストレージ・コンポーネント、ＵＦＳストレージコンポーネント、ＳＤストレージコンポーネント、メモリ・スティック・ストレージ・コンポーネント、およびｘＤピクチャ・カード・ストレージ・コンポーネントなどの不揮発性ストレージコンポーネントとして実現される。
【０１６０】
様々な実施形態では、ＳＳＤコントローラ（またはコンピューティングホスト・フラッシュ・メモリ・コントローラ）、またはその機能の全部もしくは一部分は、コントローラが結合されるホスト（例えば、図１Ｂのホスト１０２）に実現される。様々な実施形態では、ＳＳＤコントローラ（またはコンピューティングホスト・フラッシュ・メモリ・コントローラ）、またはその機能の全部もしくは一部分は、ハードウェア（例えば、論理回路）、ソフトウェアおよび／もしくはファームウェア（例えば、ドライバソフトウェアおよび／またはＳＳＤ制御ファームウェア）、またはそれらの任意の組み合せを介して実現される。例えば、ＥＣＣユニット（図１ＡのＥＣＣ１６１および／またはＥＣＣ−Ｘ１３５と同様のような）の機能または関連の機能は、部分的にホスト上のソフトウェアを介して、および部分的にＳＳＤコントローラ内のファームウェアとハードウェアとの組み合せを介して、実現される。別の例として、リサイクラユニット（図１Ａのリサイクラ１５１と同様のような）の機能または関連する機能は、部分的にホスト上のソフトウェアを介して、および部分的にコンピューティングホスト・フラッシュ・メモリ・コントローラ内のハードウェアを介して、実現される。
【０１６１】
マッピング動作
図２はＬＢＡのＬＰＮ部分のマッピングの一実施形態の選択された詳細を示す。いくつかの実施形態では、読み取りユニットはＮＶＭのページの一部などの独立して読み取り可能なＮＶＭの最小細分性（粒度）である。さらなる実施形態では、読み取りユニットは、（下位レベルの）誤り訂正符号の検査ビット（時には冗長性と呼ばれる）により保護されているすべてのデータと共に、それら検査ビットに相当する。例えば、図１ＡのＥＣＣ１６１は、ＬＤＰＣ符号を介してなど検査ビットを介して誤り訂正を実現し、読み取りユニットは、ＬＤＰＣ符号を実現する符号化ビットで保護されたデータビットに加えて、それらＬＤＰＣ符号化ビットに対応する。
【０１６２】
いくつかの実施形態では、マップ１４１は、テーブル１４３（図１Ａに示す）を介してなど、ＬＢＡ２１１のＬＰＮ２１３部分をＬＰＮ２２１用マップ情報にマッピングする。ＬＰＮ用マップ情報（ＬＰＮ２２１用マップ情報など）は、時にはマップエントリと呼ばれる。マップ１４１はＬＰＮを対応するマップエントリに関連付けると言われる。様々な実施形態では、マッピングは、１つ以上の連想ルックアップを介して、１つ以上の非連想ルックアップを介して、および／または１つ以上の他の技術を介して行われる。
【０１６３】
いくつかの実施形態では、ＳＳＤコントローラ１００は１つのマップエントリを各ＬＰＮに対して潜在的および／または能動的に使用中に維持する。
【０１６４】
いくつかの実施形態では、ＬＰＮ２２１のためのマップ情報はそれぞれの読み取りユニットアドレス２２３および読み取りユニット２２５内の長さを含む。いくつかの実施形態では、長さおよび／またはスパンが、長さをスパンからのオフセットとして格納するなどにより、例えば読み取りユニット２２５内の長さのすべてまたは任意の部分に、エンコードされ格納される。さらなる実施形態では、第１のＬＰＮは第１のマップエントリに関連付けられ、第２のＬＰＮ（第１のＬＰＮとは異なるが、第１のＬＰＮによって参照される論理ページと同じサイズの論理ページを参照する）は第２のマップエントリに関連付けられ、第１のマップエントリの読み取りユニット内それぞれの長さは第２のマップエントリの読み取りユニット内それぞれの長さとは異なる。
【０１６５】
様々な実施形態では、同じ時点で、第１のＬＰＮは第１のマップエントリに関連付けられ、第２のＬＰＮ（第１のＬＰＮとは異なる）は第２のマップエントリに関連付けられ、第１のマップエントリのそれぞれの読み取りユニットアドレスは第２のマップエントリのそれぞれの読み取りユニットアドレスと同じである。さらなる実施形態では、第１のＬＰＮに関連付けられたデータおよび第２のＬＰＮに関連付けられたデータは両方ともＮＶＭ１９９の同じデバイスの同じ物理ページに格納される。
【０１６６】
様々な実施形態によれば、読み取りユニットのアドレス２２３は、ＮＶＭ内の開始アドレス、ＮＶＭ内の終了アドレス、前述のいずれかのオフセット、およびＬＰＮ２１３に関連付けられたＮＶＭの部分を識別するための任意の他の技術の１つ以上に関連付けられる。
【０１６７】
図３は、ＮＶＭに読み取りユニットアドレスでアクセスして、読み取りユニットの素量で測定された長さを一括して有する、種々の読み取りユニットとして編成された読み取りデータを生成する、一実施形態の選択された詳細を示す。様々な実施形態によれば、第１の読み取りユニット３１３は、ＮＶＭのアドレス空間の最下位アドレスの読み取りデータ３１１内の読み取りユニットの１つ、読み取りユニットの固定された１つ、読み取りユニットの任意の１つ、読み取りユニットの可変な１つ、および任意の他の技術によって選択された読み取りユニットの１つの１つ以上である。様々な実施形態では、ＳＳＤコントローラ１００は、ＮＶＭ１９９にアクセスし、読み取りユニット２２５内の長さで指定された読み取りユニットの数を超えずに読み取ることで読み取りデータ３１１を生成することが可能となっている。
【０１６８】
図４Ａは、読み取りユニット（図３の読み取りユニット３１３または３１５など）の、読み取りユニット４０１Ａとしての実施形態の選択された詳細を示す。様々な実施形態および／または使用シナリオでは、ヘッダ１ ４１１ＡからヘッダＮ ４１９Ａは連続しており、ヘッダ各々により（それぞれのオフセットなどを介して）識別されるデータ領域それぞれはヘッダの最後のものの後に連続している。データ領域は全体としてデータバイト４２１Ａを形成する。データ領域はヘッダが格納される位置順序と一致する位置順序で格納される。例えば、読み取りユニット開始時の、第２のヘッダおよび第３のヘッダが第１のヘッダに連続して続く、第１のヘッダを考えてみる。第１のデータ領域（第１のヘッダ内の第１のオフセットにより識別される）は第３のヘッダに連続して続く。第２のデータ領域（第２のヘッダの第２のオフセットにより識別される）は第１のデータ領域に連続して続く。同様に、第３のデータ領域（第３のヘッダにより識別される）は第２のデータ領域に連続して続く。
【０１６９】
図４Ｂは、読み取りユニット（図３の読み取りユニット３１３または３１５など）の、読み取りユニット４０１Ｂとしての別の実施形態の選択された詳細を示す。様々な実施形態および／または使用シナリオでは、ヘッダマーカ（ＨＭ）４１０Ｂは、或る数の後続のヘッダ（ヘッダ１ ４１１Ｂ、ヘッダ２ ４１２Ｂ．．．ヘッダＮ ４１９Ｂ）を示すオプションの初期フィールド（１バイトフィールドなど）である。データ領域（データバイト４２１Ｂ、データバイト４２２Ｂ．．．データバイト４２９Ｂ）はそれぞれヘッダ（ヘッダ１ ４１１Ｂ、ヘッダ２ ４１２Ｂ．．．ヘッダＮ ４１９Ｂ）により識別され、ヘッダが格納される位置順序と反対の位置順序で格納される。ヘッダは読み取りユニットの始まりで開始し、一方、対応するデータ領域は読み取りユニットの終わりで開始する。いくつかの実施形態では、データ領域内のデータバイト（例えば、データバイト４２１Ｂ、データバイト４２２Ｂ．．．データバイト４２９Ｂ）は正順（位置順序に一致するバイト順序）で配置される一方、他の実施形態では、データバイトは逆順（位置順序に対して反転したバイト順序）で配置される。いくつかの実施形態では、ヘッダマーカはヘッダおよびデータバイトが（例えば、図４Ａに示すように）同じ位置順序で格納される読み取りユニット内で使用される。
【０１７０】
いくつかの実施形態では、オプションのパディングバイト４３１Ａ（または４３１Ｂ）は特定のＬＰＮに関連付けられるデータの細分性（粒度）に依っている。例えば、いくつかの実施形態では、データバイト４２１Ａ（または集合的にデータバイト４２１Ｂ、データバイト４２２Ｂ．．．データバイト４２９Ｂ）が、ヘッダ１ ４１１ＡからヘッダＮ ４１９Ａ（またはヘッダ１ ４１１Ｂ、ヘッダ２ ４１２Ｂ．．．ヘッダＮ ４１９Ｂ）の最後のもの以外すべてに関連付けられるデータを格納した後に、８バイトなどの残りの空間の一定量未満である場合は、最後のヘッダに関連付けられたＬＰＮのデータは後続の読み取りユニットで開始する。さらなる実施形態では、最後のヘッダ内の特定のオフセット値（例えば、すべて１など）は最後のヘッダに関連付けられたＬＰＮのデータが後続の読み取りユニットで開始していることを示す。
【０１７１】
図５は、或る数のフィールドを有するヘッダ（図４Ａのヘッダ１ ４１１ＡからヘッダＮ ４１９Ａ、または図４Ｂのヘッダ１ ４１１Ｂからヘッダ ４１９Ｂのいずれかなど）の実施形態の選択された詳細を示す。いくつかの実施形態では、ヘッダは固定長である（例えば、各ヘッダは同じ数のバイト長である）。ヘッダ５０１は、フィールドタイプ５１１、最後のインジケータ５１３、フラグ５１５、ＬＰＮ５１７、長さ５１９、およびオフセット５２１を含む。タイプフィールドはデータバイトのカテゴリを識別する。例えば、タイプフィールドは、データバイトのカテゴリがホストデータ（例えば、論理ページデータ）またはシステムデータ（例えば、マップ情報またはチェックポイント情報）の一方であることを示す。最後のフィールドはヘッダがデータバイトの前の最後のヘッダであることを示す。ヘッダマーカを有するいくつかの実施形態では、最後のフィールドは必要に応じて省略される。ＬＰＮフィールドはヘッダが関連付けられているＬＰＮである。ＬＰＮフィールドは、例えば、特定のＬＰＮに一致するＬＰＮフィールドを有するヘッダを検索することにより、特定のＬＰＮに関連付けられているヘッダの特定の１つを決定するよう、ヘッダを解析することを可能にする。長さフィールドはデータバイトのバイト数での長さである（例えば、ヘッダ５０１に関連付けられたデータバイト４２１Ａが何バイトのデータであるか）。いくつかの実施形態では、オフセットフィールドのオフセットは特定の粒度（例えば、８バイト粒度）に応じて丸められる。
【０１７２】
様々な実施形態では、特定のＬＰＮに関連付けられたいくつかまたはすべての情報は、特定のＬＰＮに関連付けられたマップエントリ、特定のＬＰＮに関連付けられたヘッダ、またはその両方に格納される。例えば、いくつかの実施形態では、長さ５１９の一部またはすべてはヘッダではなくマップエントリに格納される。
【０１７３】
図６は、論理スライスおよび／またはセクションで管理される複数のＮＶＭデバイス（例えば、１つ以上のフラッシュダイおよび／またはフラッシュチップ）の、ブロック、ページ、および読み取りユニットの一実施形態の選択された詳細を示す。管理機能は、読み取り、リサイクル、消去、プログラミング／書き込み、および他の管理機能のいずれか１つ以上を含む。論理スライスおよび／または、セクションは時にＲ−ブロックと呼ばれる。図は、６６個のフラッシュダイを伴う実施形態を示す。フラッシュダイの３つが明示的に示され（フラッシュダイ６１０．６５、６１０．１および６１０．０）、フラッシュダイの６３個が暗示的に示される（６１０．６４．．．６１０．２）。
【０１７４】
フラッシュダイの各々（フラッシュダイ６１０．６５．．．６１０．１および６１０．０の任意の１つのような）は、ブロックとして編成されたストレージを提供する（フラッシュダイ６１０．６５のブロック６１０．６５ＢＢ．．．６１０．６５Ｂ１、および６１０．６５Ｂ０；フラッシュダイ６１０．０のブロック６１０．０ＢＢ．．．６１０．０Ｂ１および６１０．０Ｂ０；など）。ブロックは次いで、ページを含む（ブロック６１０．６５Ｂ０のページ６１０．６５ＰＰ．．．６１０．６５Ｐ１および６１０．６５Ｐ０；ブロック６１０．０Ｂ０のページ６１０．０ＰＰ．．．６１０．０Ｐ１および６１０．０Ｐ０；など）。ページは次いで、読み取りユニットを含む（ページ６１０．６５Ｐ０の読み取りユニット６１０．６５ＲＲ．．．６１０．６５Ｒ１および６１０．６５Ｒ０；ページ６１０．０Ｐ０の読み取りユニット６１０．０ＲＲ．．．６１０．０Ｒ１および６１０．０Ｒ０；など）。
【０１７５】
いくつかの実施形態では、各フラッシュダイは、整数個のブロック（例えばＮ個のブロック）を含み、ブロックは消去の最小素量である。いくつかの実施形態では、各ブロックは、整数個のページを含み、ページは書き込みの最小素量である。様々な実施形態によれば、読み取りユニットは読み取りおよび誤り訂正の最小素量である；各ページは整数個の読み取りユニットを含む；２つ以上のページからなる関連付けられるグループは整数個の読み取りユニットを含む；および読み取りユニットは必要に応じておよび／または選択的にページ境界に跨る、の１つ以上である。
【０１７６】
様々な実施形態では、様々なＮＶＭ管理機能（例えば、読み取り、リサイクル、消去、および／またはプログラミング／書き込み）が、Ｒ−ブロックのユニットで実行される。Ｒ−ブロックはフラッシュメモリのすべてのダイにわたって論理スライスまたはセクションとして例示される。例えば、各フラッシュダイがＮ個のブロックを有するＲフラッシュダイを有するフラッシュメモリ内では、各Ｒ−ブロックは、合計Ｎ個のＲ−ブロックに対して、まとめるとフラッシュダイの各々からｉ番目のブロックである。別の例では、各々がＮ個のブロックを有するＲフラッシュダイを有するフラッシュメモリでは、各Ｒ−ブロックは合計Ｎ／２個のＲ−ブロックに対して、フラッシュダイの各々からｉ番目および（ｉ＋１）番目のブロックである。さらに別の例では、複数のデュアルプレーンデバイスを有するフラッシュメモリでは、各Ｒブロックはデュアルプレーンデバイスの各々からｉ番目の偶数ブロックおよびｉ番目の奇数ブロックである。
【０１７７】
ブロックがＲ−ブロックを形成する一部としてペアまたは他の関連付けられたグループで扱われる様々な実施形態では、ブロックからなる関連付けられるグループの各ブロックからのそれぞれのページも、少なくとも書き込みに対して、ユニットとして扱われ、より大きいマルチブロックページを形成する。例えば、上記のデュアルプレーンの例を続けると、偶数ブロックの特定の１つの第１のページおよび奇数ブロックの関連する１つの第１のページは書き込み用のユニットとして、および必要に応じておよび／または選択的に読み取り用のユニットとして扱われる。同様に、特定の偶数ブロックの第２のページおよび関連する奇数ブロックの第２のページもユニットとして扱われる。様々な実施形態によれば、本明細書で使用されるＮＶＭのページは、ＮＶＭの単一ページ、ＮＶＭのマルチブロックページ、読み取りのための１つ以上の個々のページとして必要に応じておよび／または選択的に扱われる書き込み用のＮＶＭのマルチブロックページ、およびＮＶＭのページの任意の他のグループ化または関連付け、の１つ以上を意味する。
【０１７８】
図は複数の例示的なＲ−ブロックを示し、それらのうちの３つ（６６０．０、６６０．１および６６０．Ｒ）が明示的に示される。各例示的なＲ−ブロックは、まとめると、フラッシュダイの各々からのｉ番目のブロックである。例えば、Ｒ−ブロック６６０．０は、フラッシュダイ６１０．６５からのブロック６１０．６５Ｂ０、フラッシュダイ６１０．６４からのブロック０（明示的に示されず）などから、フラッシュダイ６１０．１のブロック６１０．１Ｂ０、およびフラッシュダイ６１０．０のブロック６１０．０Ｂ０までである。フラッシュダイごとにＮ個のブロックがあるので、したがって合計でＮ個のＲ−ブロックがある（Ｒ−ブロック６６０．Ｒ．．．Ｒ−ブロック６６０．１およびＲ−ブロック６６０．０）。
【０１７９】
Ｒ−ブロックの別の例は、まとめると、フラッシュダイの各々から、ｉ番目のブロックおよび（ｉ＋１）番目のブロックである（例えばフラッシュダイ６１０．６５からのブロック６１０．６５Ｂ０および６１０．６５Ｂ１、フラッシュダイ６１０．６４からのブロック０および１（明示的に示されず）などから、フラッシュダイ６１０．１からのブロック６１０．１Ｂ０および６１０．１Ｂ１、ならびにフラッシュダイ６１０．０からのブロック６１０．０Ｂ０および６１０．０Ｂ１まで）。したがって、各フラッシュダイにＮ個のブロックがある場合、Ｎ／２個のＲ−ブロックがある。さらに別のＲ−ブロックの例は、複数のデュアルプレーンデバイスの各々からのｉ番目の偶数および奇数ブロックである。Ｒ−ブロックとしての管理のためのフラッシュダイブロックの他の構成は、いくつかのブロックが動作不能である場合でも、Ｒ−ブロックが各ダイから１つのブロックを有することを保証するために仮想ブロックアドレスと物理ブロックアドレスとの間のマッピングを含めて、考えられている。様々な実施形態では、各フラッシュダイ内のＮ個のブロックのいくつかは、仮想ブロックアドレスと物理ブロックアドレスとの間のマッピングがＲ−ブロック内のブロックの欠陥のあるものを置き換えるためにスペア（でなければ未使用）ブロックを有するように、スペアとして使用される。
【０１８０】
様々な実施形態では、フラッシュダイにおける情報の読み取りおよび／または書き込みは、「読み取りユニット先行」順序または「ページ先行」順序などの順序に従って実行される。図に示される読み取りユニットのための「読み取りユニット先行」順序の例は、読み取りユニット６１０．０Ｒ０で始まり、それに６１０．１Ｒ０．．．６１０．６５Ｒ０、６１０．０Ｒ１、６１０．１Ｒ１．．．６１０．６５Ｒ１などが続き、、６１０．６５ＲＲで終わる。読み取りユニットのための「ページ先行」順序の例は、読み取りユニット６１０．０Ｒ０で始まり、それに６１０．０Ｒ１．．．６１０．０ＲＲ、６１０．１Ｒ０、６１０．１Ｒ１．．．６１０．１ＲＲ．．．６１０．６５Ｒ０および６１０．６５Ｒ１などが続き、６１０．６５ＲＲで終わる。
【０１８１】
様々な実施形態では、Ｒ−ブロック内のデータの書き込みおよび／またはストライピング順序は、すべてのデバイス（例えば、ストライピング方向６００により概念的に示唆されるように、最下位番号から最上位番号のデバイス）にわたってＲ−ブロックのページ（例えば、最下位から最上位）が最初であり、次いで（すべてのデバイスにわたって）次の最上位ページ、以下同様に最後のページまで続く。具体的にＲ−ブロック６６０．０に関して、例示の順序はページ６１０．０Ｐ０（フラッシュダイ６１０．０の最初のブロックの最初のページ）から始まり、ページ６１０．１Ｐ０（フラッシュダイ６１０．１の最初のブロックの最初のページ）が続き、以下同様にページ６１０．６５Ｐ０（フラッシュダイ６１０．６５の最初のブロックの最初のページ、およびＲ−ブロック６６０．０の最後のブロック）まで続く。例示の順序はページ６１０．０Ｐ１（フラッシュダイ６１０．０の最初のブロックの２番目のページ）で続き、ページ６１０．１Ｐ１（フラッシュダイ６１０．０の最初のブロックの２番目のページ）が続き、以下同様にページ６１０．６５Ｐ１（フラッシュダイ６１０．６５の最初のブロックの２番目のページ）まで続く。その例は同一の順序で継続する。例示の順序はページ６１０．０ＰＰ（フラッシュダイ６１０．０の最初のブロックの最後のページ）で完了し、６１０．１ＰＰ（フラッシュダイ６１０．１の最初のブロックの最後のページ）が続き、以下同様にページ６１０．６５ＰＰ（フラッシュダイ６１０．６５の最初のブロックの最後のページ、およびＲ−ブロック６６０．０の最後のブロックの最後のページ）で終わる。
【０１８２】
様々な実施形態では、フラッシュダイ６１０．６５．．．６１０．１、および６１０．０は図１Ａの１つ以上の個々のフラッシュダイ１９４のそれぞれのものに対応する。いくつかの実施形態では、フラッシュダイ６１０．６５．．．６１０．１、および６１０．０はＮＶＭ１９９の全てより少ない部分である。例えば、様々な実施形態では、データはフラッシュダイの複数のグループにわたって独立してストライピングされ、フラッシュダイのグループの各々は独立してアクセス可能である。
【０１８３】
上位レベルの冗長性技術
図７は、上位レベルの冗長性技術の様々な実施形態の選択された詳細を示す。フラッシュデバイス７２０は６４個のフラッシュダイ（図６に明示的および暗示的に示されるようにフラッシュダイ６１０．６３、６１０．６２、６１０．６１．．．６１０．０）を含み、インターフェースチャネル７３０を介して通信する。エクストラ・フラッシュ・デバイス７４０は２個までのフラッシュダイ（図６に明示的および暗示的に示されるようにフラッシュダイ６１０．６５および６１０．６４）を含み、エクストラ・インターフェース・チャネル７５０を介して通信する。フラッシュダイはＳＳＤ内のＮＶＭなどのストレージサブシステム内に上位レベルの冗長情報およびデータストレージ（例えば、ユーザデータおよび／またはユーザ空き領域）のためのストレージを提供する。（冗長情報およびデータストレージのコンテキストにおける「ユーザデータ」の例は、オペレーティング・システム・データ、アプリケーションデータ、ＳＳＤ管理データなど後の検索のためにフラッシュメモリに格納された冗長情報以外のすべてのデータを含む。）上位レベルの冗長性は、例えば、読み取り動作用に（例えば、下位レベルのＥＣＣ機能を介して）誤り訂正されたデータを提供することに失敗する、または書き込み動作を適切に完了することに失敗するなどの、１つ以上のフラッシュダイの１つ以上の部分の断続的または永続的な障害からの復旧を可能にする。
【０１８４】
例えば、各フラッシュダイ（または代替的に各ブロックまたは各ブロック内の各ページ）はシリコン独立素子の冗長アレイ（ＲＡＳＩＥ）のコンテキスト内で動作する。障害が特定のフラッシュダイで（例えば、特定のダイのブロックの一部のＥＣＣ訂正不可能読み取り誤りに起因して）検出された場合、その後応答して、フラッシュダイの他の部分に格納された冗長情報が、その特定のダイにより提供されていたであろう情報を判断するために使用される。いくつかの実施形態および／または使用シナリオでは、十分冗長な情報が、（単一動作中における）１つのフラッシュダイ内の１つの障害からの復旧を可能にするために、格納される。単一障害からの復旧を可能にするモードでの動作は、いくつかの実施形態では、上位レベルの冗長情報のために１つのフラッシュダイと同等である空間を割り当ておよび管理することを含み、「ＲＡＳＩＥ−１」と呼ばれる。２つの障害からの復旧を可能にするモードでの動作は、いくつかの実施形態では、上位レベルの冗長情報のために２つのフラッシュダイと同等である空間を割り当ておよび管理することを含み、「ＲＡＳＩＥ−２」と呼ばれる。３つの障害からの復旧を可能にするモードでの動作は、いくつかの実施形態では、上位レベルの冗長情報のために３つのフラッシュダイと同等である空間を割り当ておよび管理することを含み、「ＲＡＳＩＥ−３」と呼ばれる。
【０１８５】
いくつかの実施形態および／または使用シナリオでは、ダイレベルの障害を管理することが目的であり、ダイの間で情報を広めることが行われる。例えば、上位レベルの冗長情報は具体的に上位レベルの冗長情報のみに割り当てられた１つ以上のダイに格納される。いくつかの実施形態および／または使用シナリオでは、ブロックレベルの障害を管理することが目的であり、ダイ内のブロックの間で情報を広めることが行われる。例えば、割り当てはブロックがどの特定のダイの一部であるかに関係なく、上位レベルの冗長情報は上位レベルの冗長情報に割り当てられた１つ以上のブロックに格納される。いくつかの実施形態および／または使用シナリオでは、特定のエンティティレベルの障害を管理することはＮ個以下の要素（例えば、ＲＡＳＩＥ−１に対して１つ、およびＲＡＳＩＥ−２に対して２つ）は特定のエンティティのいずれかになるように情報を広めることを含む。エンティティの例は、（実装された）デバイス、ダイ、Ｒ−ブロック、ブロック、Ｒ−ページ（本明細書において別記される）、ページ、ワード線と関連付けられるセル、および前述のものの１つまたはそれより多い複数を含む。
【０１８６】
上位レベルの冗長情報は計算されフラッシュダイに書き込まれた（ユーザ）データに従って書き込まれ、これにより、障害が検出されたときに、情報を提供するよう利用可能である。様々な実施形態では、上位レベルの冗長情報は、上位レベルの冗長情報が関連付けられている（ユーザ）データの書き込みに関して、その前、その後、または不特定の時間順序でフラッシュダイに書き込まれる。
【０１８７】
図はＲＡＳＩＥ動作モードの様々な実施形態を示し、以下の表に纏められる。
【０１８８】
【表３】
2015524975.tif 000011
【０１８９】
より具体的には、ＲＡＳＩＥ−１モードでは、１つのダイと同等な領域が上位レベルの冗長情報に割り当てられる。ＲＡＳＩＥ−１モード１−０では、上位レベルの冗長情報がフラッシュデバイス７２０の１つのダイ（例えば、フラッシュダイ６１０．６３）に格納されるため、エクストラ・フラッシュ・デバイス７４０は使用されず、６３個のダイ（フラッシュダイ６１０．６２．．．６１０．０）をデータストレージ（例えば、ユーザデータおよび／またはユーザ空き領域）用に利用可能として残す。ＲＡＳＩＥ−１モード１−１では、エクストラ・フラッシュ・デバイス７４０の１つのダイ（例えば、フラッシュダイ６１０．６４）が使用され、フラッシュデバイス７２０のすべて（６４個のダイ）をデータストレージ用に利用可能として残す。
【０１９０】
ＲＡＳＩＥ−２モードでは、２個のダイと同等な領域が上位レベルの冗長情報に割り当てられる。ＲＡＳＩＥ−２モード２−０では、上位レベルの冗長情報がフラッシュデバイス７２０の２つのダイ（例えばフラッシュダイ６１０．６３およびフラッシュダイ６１０．６２）に格納されるため、エクストラ・フラッシュ・デバイス７４０は使用されず、６２個のダイ（フラッシュダイ６１０．６１．．．６１０．０）をデータストレージ用に利用可能として残す。ＲＡＳＩＥ−２モード２−１では、上位レベルの冗長情報がフラッシュデバイス７２０の１つのダイ（例えばフラッシュダイ６１０．６３）に部分的に格納されるため、エクストラ・フラッシュ・デバイス７４０の１つのダイ（例えば、フラッシュダイ６１０．６４）が使用され、６３個のダイ（フラッシュダイ６１０．６２．．．６１０．０）をデータストレージ用に利用可能として残す。ＲＡＳＩＥ−２モード２−２では、エクストラ・フラッシュ・デバイス７４０の２つのダイ（例えばフラッシュダイ６１０．６５およびフラッシュダイ６１０．６４）が使用され、フラッシュデバイス７２０のすべて（６４個のダイ）をデータストレージ用に利用可能として残す。
【０１９１】
いくつかの実施形態では、すべての利用シナリオで使用されないダイは実装されない。例えば、ＲＡＳＩＥ ２−０モードおよびＲＡＳＩＥ １−０モードでのみ動作可能であり（他のＲＡＳＩＥモードでは動作可能ではない）システムでは、エクストラ・フラッシュ・デバイス７４０は実装されない。
【０１９２】
いくつかの実施形態では、上位レベルの冗長情報は全体が「専用の」ダイ（例えば、ＲＡＳＩＥ−１モード１−０ではフラッシュダイ６１０．６３またはＲＡＳＩＥ−２モード２−２ではフラッシュダイ６１０．６５およびフラッシュダイ６１０．６４）に格納される。他の実施形態では、上位レベルの冗長情報はダイのいずれかに格納され、例えば、ＲＡＳＩＥ−１モード１−０では、フラッシュダイ６１０．６２は上位レベルの冗長情報用に使用され、一方、フラッシュダイ６１０．６３およびフラッシュダイ６１０．６１．．．６１０．０はデータストレージ用に使用される。いくつかの実施形態および／または使用シナリオでは、上位レベルの冗長情報は異なるダイ（および／またはその一部）に経時的に格納され、例えば、第１の期間では第１のフラッシュダイが上位レベルの冗長情報を保持する一方、第２の期間では第２のフラッシュダイが上位レベルの冗長情報を保持する。
【０１９３】
種々の実施形態では、いくつのフラッシュダイが使用可能であるかに応じて複数のＲＡＳＩＥ １−０モード（および複数のＲＡＳＩＥ ２−０モード）がある。例えば、第１のＲＡＳＩＥ １−０モード（上記の表に示される）では、フラッシュダイ６１０．６３に上位レベルの冗長情報を格納し、フラッシュダイ６１０．６２．．．６１０．０はデータストレージ用に利用可能である。第２のＲＡＳＩＥ １−０モードでは、フラッシュダイ６１０．６３はもはや使用できなくなり、フラッシュダイ６１０．６２に上位レベルの冗長情報を格納し、フラッシュダイ６１０．６１．．．６１０．０がデータストレージ用に利用可能であり、データストレージの利用可能量はダイ１つ分減少する。ダイが上位レベルの冗長情報用に使用されることにより、以前はデータストレージ用に利用可能であったダイ（またはその一部分）がもはやデータストレージ用に利用できないＲＡＳＩＥモードは時に低減容量ＲＡＳＩＥモードと呼ばれる。
【０１９４】
いくつかの実施形態では、上位レベルの冗長情報は、上位レベルの冗長情報により保護されるユーザデータと同じおよび／または類似の下位レベルの冗長および／または誤り訂正符号化方式を用いて格納される。上位レベルの冗長情報を保護するために下位レベルの冗長および／または誤り訂正方式を使用することは、ユーザデータで訂正不可能な下位レベルの誤りを判断するのと同じおよび／または同様の方法で、上位レベルの冗長情報で訂正不可能な誤りがあるかどうかを判断することを可能にする。
【０１９５】
いくつかの実施形態では、上位レベルの冗長情報はデータの異なる部分に対して異なるダイ内に格納される。例えば、フラッシュダイがＲ−ブロック内で管理されるいくつかの実施形態では、上位レベルの冗長情報は異なるＲ−ブロックに対して異なるフラッシュダイに格納される。例えば、フラッシュダイ６１０．０のブロック０を含むＲ−ブロックに対する上位レベルの冗長情報はフラッシュダイ６１０．０に格納される一方、フラッシュダイ６１０．０のブロック１を含むＲ−ブロックに対する上位レベルの冗長情報はフラッシュダイ６１０．１に格納され、以下同様である。フラッシュダイがＲ−ブロックで管理されるいくつかの実施形態などのいくつかの実施形態では、上位レベルの冗長情報は、上位レベルの冗長情報が依存するデータが分かるおよび／または書き込まれた後に書き込まれる。
【０１９６】
いくつかの使用シナリオでは、ＮＶＭ素子の１つ以上の部分（例えば、図６のフラッシュダイ６１０．０のブロック６１０．０ＢＢなどの、デバイスのブロック）は動作不能であるか、または動作中に動作不能になる。いくつかの実施形態では、動作不能部分は仮想および物理ブロックアドレスを介してマップアウトされる（例えば、図１Ａのマップ１４１および／またはテーブル１４３を介して実行される処理などを介して）。あるいは、動作不能部分は（明示的にマップアウトされるというよりも）スキップされる。Ｒ−ブロックに基づいたいくつかの実施形態では、スキップした結果いくつかのＲ−ブロックは異なる数のブロックを有することになる。例えば、ブロック６１０．０Ｂ０が不良であり使用できない場合は、Ｒ−ブロック６６０．０はＲ−ブロック６６０．１よりも１つ少ないブロックを有する。上位レベルの冗長情報は、例えば、各Ｒ−ブロックの最後のブロックである（Ｒ−ブロック当たり）可変の位置に書き込まれる。
【０１９７】
様々な実施形態では、図７の１つ以上の要素は図１Ａの１つ以上の要素に対応する。例えば、フラッシュデバイス７２０およびエクストラ・フラッシュ・デバイス７４０はまとめてＮＶＭ１９９に対応し、インターフェースチャネル７３０およびエクストラ・インターフェース・チャネル７５０はまとめてデバイスインターフェース１９０に対応する。別の例では、フラッシュダイ６１０．６５．．．６１０．０はまとめてフラッシュダイ１９４のインスタンスに対応する。さらに別の例では、フラッシュデバイス７２０の１つ以上のフラッシュデバイスおよび／またはエクストラ・フラッシュ・デバイス７４０はフラッシュデバイス１９２の１つ以上のインスタンスに対応する。様々な実施形態では、図１Ａの１つ以上の要素は上位レベルの冗長情報を管理し、および／または本明細書にて説明のＲＡＳＩＥ動作モードに従って上位レベルの冗長情報に少なくとも部分的に基づいてユーザデータを復旧する。例えば、ＣＰＵ１７１のソフトウェア実行機能の一部は、様々なＲＡＳＩＥ動作モードに従って上位レベルの冗長情報の計算を管理するために使用される。別の例では、データ処理１２１および／またはＥＣＣ−Ｘ１３５は、上位レベルの冗長情報の計算および／または様々なＲＡＳＩＥ動作モードに従ったユーザデータの復旧のための専用および／または特化されたハードウェア要素を含む。さらに別の例では、ＥＣＣ１６１はフラッシュダイの一部のＥＣＣ−訂正不可能（下位レベル）読み取り誤りを検出し、ＥＣＣ−Ｘ１３５はＲＡＳＩＥ（上位レベル）読み取り誤りを検出するおよび／または訂正することができる。
【０１９８】
様々な実施形態では、インターフェースチャネル７３０は多様に１個、４個、８個、または１６個のチャネルを有し、エクストラ・インターフェース・チャネル７５０は多様に１個または２個のチャネルを有する。様々な実施形態では、フラッシュデバイス７２０は１個、２個、４個、８個または１６個のデバイスとして実現され、各々は６４個、３２個、１６個、８個、４個のフラッシュダイをそれぞれ有する。様々な実施形態では、エクストラ・フラッシュ・デバイス７４０は、1つまたは２つのダイを有する１つのデバイスとして、または各々が１つのダイを有する２つのデバイスとして実現される。いくつかの実施形態では、エクストラ・フラッシュ・デバイス７４０のフラッシュダイはフラッシュデバイス７２０のフラッシュダイをも実現するデバイス内に実現される。例えば、１つのフラッシュデバイスは６６個のフラッシュダイ（フラッシュダイ６１０．６５．．．６１０．０）を実現する。別の例では、２つのフラッシュデバイスは各々、３３個のフラッシュダイを、例えば、第１のフラッシュデバイス内（フラッシュダイ６１０．６５．．．６１０．３３）および第２のフラッシュデバイス内（フラッシュダイ６１０．３２．．．６１０．０）に実現する。フラッシュダイおよびフラッシュデバイスの他の構成も考えられる。フラッシュデバイス７２０のフラッシュダイをも実現するデバイス内に実現されたエクストラ・フラッシュ・デバイス７４０を有するいくつかの実施形態では、フラッシュダイは共有インターフェースチャネルを介して、あるいはフラッシュダイの特定のもの（または組）に専用のインターフェースチャネルを介して通信する。フラッシュデバイス７２０およびエクストラ・フラッシュ・デバイス７４０が具体的な数のフラッシュダイ（それぞれ２および６４）で示されている一方、他の実施形態は、フラッシュデバイス７２０が２個、４個、８個、１６個、３２個、または１２８個のフラッシュダイを有する、および／またはエクストラ・フラッシュ・デバイス７４０が０個、１個、または４個のフラッシュダイを有する、などのように企図される。
【０１９９】
図８は、図６および／または図７に示される様々な実施形態により可能となるＲＡＳＩＥモード間の動的切り換えなどの、ＲＡＳＩＥでの動的な上位レベルの冗長モード管理の実施形態の選択された詳細を示す。いくつかの実施形態および／または使用シナリオでは、ストレージサブシステム（例えば、ＳＳＤ）が第１の上位レベルの冗長モードでの動作から第２の上位レベルの冗長モードでの動作に動的に遷移されるグレースフルデグラデーション（許容できるサービス低下）の一形態が提供される。遷移は、フラッシュダイ全体またはその１つ以上の部分の恒久的もしくは断続的な機能不全などの障害の検出、またはそれに対する動作（読み取りまたは書き込み動作など）に対応する。様々な実施形態によれば、遷移は、ＳＳＤ全体での実行、ＳＳＤの１つ以上のサブセット上での実行、ならびにＳＳＤの１つ以上のＲ−ブロック、ブロックおよび／またはページ上での実行のうちの１つ以上である。例えば、ＲＡＳＩＥ−２情報を格納するＮＶＭデバイスの１つの特定のブロックがプログラミング中に障害が発生した場合、特定の（障害が発生した）ブロックを含むＲ−ブロックのその後の動作は異なる上位レベルの冗長モード（例えば、ＲＡＳＩＥ−１モード）に切り替わり、一方、ＳＳＤ内の他のＲ−ブロックは影響を受けずにＲＡＳＩＥ−２モードで動作し続ける。
【０２００】
図８に関して、処理は、第１の上位レベルの冗長モードに従って上位レベルの冗長情報およびデータストレージ（例えば、ユーザデータおよび／またはユーザ空き領域）がフラッシュダイに構成された状態で始まる（第１の上位レベルの冗長モードで動作する８０２）。次に、フローは下位レベルの訂正不可能な読み取り誤りまたは書き込み／プログラム障害などの障害が検出されているかどうかを判断することに進む（障害？８０３）。障害が検出されなかった場合には、次にフローは第１の上位レベルの冗長モードで動作を継続することに戻る。障害が検出された場合には、次にフローは第１の上位レベルの冗長モードでの動作から第２の上位レベルの冗長モードでの動作への切り換えに進む（動作モードを動的に遷移する８０９）。
【０２０１】
切り換えは、（オプションで）、障害を見込むよう、データストレージ用に利用可能な領域を低減することから始まる（空き領域を低減する８０４）。第２の上位レベルの冗長モードが第１の上位レベルの冗長モードよりも十分に少ない上位レベルの冗長情報を使用する場合、使用可能な領域の減少は省略される。切り換えは第２の上位レベルの冗長モードに従ってデータストレージを再編成することによって続く（データストレージ８０５を再編成）。再編成は、必要に応じて、障害が発生したフラッシュダイからすべてのユーザデータおよび／またはユーザ空き領域をフラッシュダイの別の場所に移動させることを含む（いくつかの実施形態では、ユーザ空き領域の移動はポインタおよび／または他のデータ構造要素を操作することにより達成される）。切り換えは、第１の上位レベルの冗長モードの上位レベルの冗長情報を介して、障害が発生したフラッシュダイに格納されていたユーザデータを選択的に復元する（可能であれば）こと、および第２の上位レベルの冗長モードに従って、復元されたユーザデータをフラッシュダイの別のものに書き込むことにさらに続く（障害発生ユーザデータ８０６を復旧／格納）。障害が書き込み／プログラム障害である場合には復元は省略される。切り換えは、必要に応じて第２の上位レベルの冗長モードに従って上位レベルの冗長情報を計算しフラッシュダイに書き込むことによってさらに続く（修正された上位レベルの冗長情報を決定／格納８０７）。第１の上位レベルの冗長モードでの動作で所定の場所に以前にあった上位レベルの冗長情報で第２の上位レベルの冗長モードが動作可能である場合、計算および書き込みは省略される。その後、動作は第２の上位レベルの冗長モードで始まる（第２の上位レベルの冗長モードでの動作８０８）。
【０２０２】
障害検出（障害？８０３）は、（例えば、１つ以上のＥＣＣ技術に従う）下位レベルの冗長および／または誤り訂正、（例えば、１つ以上のＲＡＳＩＥ技術に従う）上位レベルの冗長および／または誤り訂正、および１つ以上のフラッシュダイまたはその部分により報告される障害発生ステータス、の１つ以上を介して行われる。例えば、特定のフラッシュダイの特定の部分（例えばＲ−ブロック、ブロック、Ｒ−ページ、ページ、読み取りユニット、またはワード線に関連付けられるセルなど）内の読み取りの下位レベルの誤り訂正がしきい値数より多くなると、必要に応じておよび／または条件付きで特定のフラッシュダイ（または特定の部分）が障害が発生したとして扱われる結果となり、障害が発生したフラッシュダイ（またはその一部）がもはや使用されないように上位レベルの冗長モード切り換えが行われる。別の例では、上位レベルの誤り訂正が失敗した場合に、フラッシュダイ（またはその一部）の適切なものが障害が発生したとして扱われ、障害が発生したフラッシュダイ（または部分）がもはや使用されないように上位レベルの冗長モード切り換えが行われる。さらに別の例では、フラッシュダイがプログラム障害ステータス（書き込み動作が不成功であったことを示す）に戻る場合、次に、フラッシュダイの適切なものの適切なブロックが障害が発生したとして扱われ、障害が発生したフラッシュダイ（または代替的にその一部）がもはや使用されないように必要に応じておよび／または条件付きで上位レベルの冗長モード切り換えが行われる。
【０２０３】
いくつかの実施形態では、障害が発生したブロックは、仮想および物理ブロックアドレスを介して（例えば、図１Ａのマップ１４１および／またはテーブル１４３を介して行われる処理などを介して）再マッピングにより置き換えられる。スペアブロックのプールからのスペアブロックが障害が発生したブロックの代わりにマッピングされる。障害が発生したブロック内に書き込まれた内容は置換ブロックにコピーされ、書き込みは、スペアブロックにおいて、障害が発生したブロック内の障害が発生した場所から進行する。
【０２０４】
いくつかの実施形態では、障害が発生したブロックは（明示的に再マッピングされるというよりも）スキップされ、それは結果として「ホール」になり、そのホールは、それがあるＲ−ブロックが次に（再書き込みのための準備中に）消去されるときに必要に応じておよび／または条件付きで上位レベルの冗長モード切り換えをもたらす結果となる。ホールがデータ格納用の場所にある場合、その後切り換えは行われず、ホールは残る。ホールが上位レベルの冗長情報のための場所にある場合は、次に、上位レベルの冗長情報が別の場所に格納され、必要に応じて上位レベルの冗長モードが切り換えられる。
【０２０５】
いくつかの実施形態および／または使用シナリオでは、障害が発生した場所のフラッシュダイに格納されていたユーザデータの復元はできない。例えば、障害が、上位レベルの冗長および／または誤り訂正および／または１つ以上のフラッシュメモリダイまたはその一部によって報告された障害ステータスのいくつかの種類を介して検出された障害のいくつかの種類に起因している場合、いくつかのユーザデータは失われる。
【０２０６】
いくつかの実施形態では、図８の処理は、複数の障害に応答して上位レベルの冗長モード間で動的に遷移する（例えば、ＳＳＤコントローラ）のコンテキストで行われる。具体的には、ＳＳＤコントローラは、第１の上位レベルの冗長モードでの動作を開始し、第１の障害に応答して第２の上位レベルの冗長モードへ動的に切り替わり、そして次に第２の障害に応答して第２の上位レベルの冗長モードから第３の上位レベルの冗長モードに動的に切り替わり、以下同様に続く。例えば、ＳＳＤコントローラはＲＡＳＩＥ−２モード２−２に従って様々なフラッシュダイを動作させ、第１の障害に応答してＲＡＳＩＥ−２モード２−１に従うように動作を動的に遷移する。続いて、ＳＳＤコントローラは第２の障害に応答してＲＡＳＩＥ−２モード２−０に従うように動作を動的に遷移する。さらにそれに続いて、ＳＳＤコントローラは第３の障害に応答してＲＡＳＩＥ−１低減容量モード１−０に従うように動作を動的に遷移する（低減容量モード１−０は、１個のフラッシュダイが上位レベルの冗長情報のために使用され、６２個のフラッシュダイがデータストレージに使用されることを除いて、ＲＡＳＩＥ−１モード１−０と同様である）。
【０２０７】
具体的な例として、図７の要素に結合されたＳＳＤコントローラ（図１ＡのＳＳＤコントローラ１００など）を考察してみると、第１の上位レベルの冗長モードでの動作に応じて、まず、ＲＡＳＩＥ−２モード２−２（例えば、フラッシュダイ６１０.６５およびフラッシュダイ６１０．６４内の上位レベルの冗長情報、およびフラッシュダイ６１０．６３．．．６１０．０内のデータストレージ）で動作する。次に、１つ以上のフラッシュダイの読み取り、または代替的に書き込みが行われる。読み取りは、結果的に、フラッシュダイの特定の１つの部分内（例えば、ユーザデータおよび／またはユーザ空き領域に使用されるフラッシュダイ６１０．６２のページ）で、訂正不可能な（下位レベルの）ＥＣＣ障害となり、または代替的に、書き込みは、その部分内において不成功に終わる。応答して、ＳＳＤコントローラはＲＡＳＩＥ−２モード２−２での動作からＲＡＳＩＥ−２モード２−１に動的に切り換え、もはやフラッシュダイ６１０．６２のいずれをも使用しない。（ＲＡＳＩＥ−２モード２−２では６４個のダイであるのに対して）ＲＡＳＩＥ−２モード２−１での動作はデータストレージのために６３個のダイを提供するので、データストレージのための利用可能な領域は６４個のダイから６３個のダイに減少し、ユーザデータおよび／またはユーザ空き領域はそれに応じて移動される。例えば、ユーザ空き領域に従ってフラッシュダイ６１０．６２からのすべてのユーザデータはフラッシュダイ６１０．６３およびフラッシュダイ６１０．６１．．．６１０．０の部分に移動される。訂正不可能なＥＣＣ障害を有するページ内の任意のユーザデータはフラッシュダイ６１０．６５および／またはフラッシュダイ６１０．６４内の上位レベルの冗長情報に基づいて復旧される。フラッシュダイ６１０．６３およびフラッシュダイ６１０．６１．．．６１０．０内のデータストレージに基づいた、およびＲＡＳＩＥ−２モード２−１に従った上位レベルの冗長情報は計算されフラッシュダイ６１０．６５および／またはフラッシュダイ６１０．６４に格納される。ＳＳＤコントローラはその後ＲＡＳＩＥ−２モード２−１（上位レベルの冗長情報はフラッシュダイ６１０.６５およびフラッシュダイ６１０．６４内、データストレージはフラッシュダイ６１０．６３およびフラッシュダイ６１０．６１．．． ６１０．０内）で動作する。
【０２０８】
上記では、フラッシュダイ全体の素量の独立したシリコン素子を有する動的な上位レベルの冗長モード管理のいくつかの実施形態を説明したが、他の実施形態は、１つ以上の読み取りユニット、ワード線に関連付けられるセル、ページ、Ｒ−ページ、ブロックまたはＲ−ブロックなどのような、ダイの一部である独立したシリコン素子を有する動的な上位レベルの冗長モード管理を実現する。上記では、Ｒ−ブロックの単一の粒度を用いて、並行してアクティブな上位レベルの冗長モードのいくつかの実施形態を記載した。例えば、上位レベルの冗長モードはＲ−ブロックに基づいて変動する（各Ｒ−ブロックは、全体的に、単一のそれぞれの上位レベルの冗長モードで動作される）。しかしながら、他の実施形態は、Ｒ−ブロック粒度とページ粒度との組合わせのような、複数の粒度（混合物）を用いて、並行してアクティブな上位レベルの冗長モードを実現する。例えば、上位レベルの冗長モードは１つの領域ではＲ−ブロックに基づいて変動し、別の領域ではページに基づいて変動する（各ページは、全体的に、単一のそれぞれの上位レベルの冗長モードで動作される）。
【０２０９】
様々な実施形態では、図８の１つ以上の要素の処理またはそれに関係することは、図１Ａの１つ以上の要素（またはその一部）により完全にまたは部分的に行われる。例えば、ＣＰＵ１７１のソフトウェア実行機能の一部は、データストレージ用に利用可能な領域を減少させることを指示するか、またはデータストレージの再編成を指示することなどにより、上位レベルの冗長モード間の動的な遷移を管理するために使用される。別の例としては、データ処理１２１および／またはＥＣＣ−Ｘ１３５は、「目標」冗長モードに従って上位レベルの冗長情報の計算のための専用および／または特化されたハードウェア要素を含む。さらに別の例では、ＥＣＣ１６１は訂正不可能な誤りの下位レベル（例えば、ＥＣＣ）誤り訂正および検出を実現し、一方、ＥＣＣ−Ｘ１３５は訂正不可能な誤りおよび／またはメモリ素子障害の上位レベル（例えば、ＲＡＳＩＥ）誤り訂正および検出を実現する。別の例としては、（上位レベル）の冗長モード間の動的な遷移に関連する機能の全部またはいずれかの部分は、ＥＣＣ−Ｘ１３５の１つ以上の部分により行われる。
【０２１０】
上位レベルの冗長性および適応型下位レベルの符号化率
いくつかの実施形態および／または使用シナリオでは、下位レベルの冗長および／または誤り訂正は適応型符号化率（例えば、可変符号化率を用いた適応型ＥＣＣ技術）を使用する。例えば、第１の読み取りユニットは第２の符号化率で管理されている第２の読み取りユニットよりも相対的に多くの使用可能なデータビットを提供する第１の符号化率で管理されている。可変符号化率を使用する下位レベルの冗長および／または誤り訂正のいくつかの実施形態および／または使用シナリオでは、上位レベルの冗長情報は、上位レベルの冗長情報により保護されたデータストレージに関して相対的に多くの使用可能なデータビットまたは最も使用可能なデータビットを提供する下位レベルの冗長および／または誤り訂正で管理される独立したシリコン素子の部分（フラッシュダイの部分など）に格納される。様々な実施形態および／または使用シナリオでは、上位レベルの冗長情報が格納されている部分は、Ｒ−ブロック単位に基づいて、ダイ単位に基づいて、経時的に動的に、またはその任意の組み合せで変化する。様々な実施形態では、１つ以上のダイ、Ｒ−ブロック、ブロック、および／またはページは、下位レベルの誤り訂正符号化率に関して最も使用可能なデータを有することに基づいて上位レベルの冗長データのストレージ用に選択される。
【０２１１】
例えば、上位レベルの冗長情報は、Ｒ−ブロック単位に基づいて変化する場所（ブロック位置など）に格納され、その場所（ブロックなど）は下位レベルの誤り訂正符号化率に基づいて最も使用可能なデータを有するものである。任意の例において、６６個のフラッシュダイの集合が各々１ブロック高さのＭ個までのＲ−ブロックの論理「スタック」として扱われる、Ｍがフラッシュダイあたりのブロック数である、図７のコンテキストでのＲＡＳＩＥ−２の動作モードのシナリオを考察してみる。（概念的に最も簡単なケースでは、スタック内の各Ｒ−ブロックは各ダイから同じ物理ブロック番号で構成されるが、障害が発生したブロックを収容するために、この制約は少なくともいくつかの実施形態では解除される。さらに他の実施形態では、制約は維持されるが、障害が発生したブロックに対応する「ホール」が収容される。）このように、各Ｒ−ブロックはフラッシュダイ６１０．０からフラッシュダイ６１０．６５までの各々の１つのブロックに対応する６６個までのブロックを有する。（図７において、６１０．０から６１０．６５までの範囲内のいくつかのフラッシュダイのみが明示的に列挙されている一方、この範囲内のすべてのフラッシュダイが暗黙的に示されていることが省略記号を使用することにより理解される。）上位レベルの冗長情報は下位レベルの訂正符号化率に基づいて最も使用可能なデータを有する各Ｒ−ブロックのブロックどれにでも書き込まれる。例えば第１のＲ−ブロック内で、フラッシュダイ６１０．１５および６１０．４９に対応するブロックが下位レベルの誤り訂正符号化率に基づいてたまたま最も使用可能なデータを有する場合、上位レベルの冗長情報はそれらのブロック（フラッシュダイ６１０．１５および６１０．４９に対応する）に書き込まれる。一方第２のＲ−ブロック内で、フラッシュダイ６１０．９および６１０．３５に対応するブロックが下位レベルの誤り訂正符号化率に基づいてたまたま最も使用可能なデータを有する場合、上位レベルの冗長情報はこれらのブロック（フラッシュダイ６１０．９および６１０．３５に対応する）に書き込まれる。いくつかの実施形態では、上位レベルの冗長データはＲ−ブロックにおける他のすべてのデータが分かった後にＲ−ブロック内に書き込まれる。
【０２１２】
図９は、１つ以上の読み取りユニットに格納される上位レベルの冗長情報により保護された適応型（例えば、経時的におよび／または場所によって異なるおよび／または変化する）符号化率の下位レベルの冗長情報を有する読み取りユニット（９１１、９３１．．．９５１、９７１）の一実施形態を示す。各々の読み取りユニットはユーザデータ（９１１．Ｕ、９３１．Ｕ．．．９５１．Ｕ、９７１．Ｕ）を含むよう可能なおよび／または割り当てられた部分、ならびに下位レベルのＥＣＣ（９１１．Ｅ、９３１．Ｅ．．．９５１．Ｅ、９７１．Ｅ）としてのＥＣＣコードの検査ビットなどの、下位レベルの冗長情報を含むよう可能なおよび／または割り当てられた残りの部分を有する。
【０２１３】
図において、縦寸法は、縮尺に対して相対的であり、相対的なサイズを示すものである。このように、読み取りユニット９１１および９５１は同じ第１のサイズであり（いくつかの実施形態では、すべての読み取りユニットはすべてのＮＶＭデバイスのすべてのブロックに対して同じサイズである）、下位レベルのＥＣＣ部分９３１．Ｅおよび９５１．Ｅは同じ第２のサイズであり、下位レベルのＥＣＣ部分９１１．Ｅおよび９７１．Ｅは同じ第３のサイズである。読み取りユニット９３１は読み取りユニット９１１および９５１よりも大きく、読み取りユニット９１１および９５１は読み取りユニット９７１よりも大きい。ユーザデータ部９３１．Ｕはユーザデータ部９５１．Ｕよりも大きい。ユーザデータ部９５１．Ｕはユーザデータ部９１１．Ｕよりも大きい。下位レベルのＥＣＣ部９５１．Ｅは下位レベルのＥＣＣ部９１１．Ｅよりも小さい。
【０２１４】
図に示すように、それぞれの読み取りユニットは、それぞれのサイズを、例えばＮＶＭのそれぞれのブロック単位で有し、それぞれのブロックで使用される下位レベルの符号化率を変更可能にする。より具体的には、読み取りユニット９３１および９５１は同じ量の下位レベルの冗長情報を有する（９３１．Ｅおよび９５１．Ｅは同じサイズ）が、読み取りユニット９３１が読み取りユニット９５１（ユーザデータ９５１．Ｕを含む）よりも多くのユーザデータ（９３１．Ｕ）を含むので、読み取りユニット９３１の下位レベルの符号化率は読み取りユニット９５１の下位レベルの符号化率よりも高い。
【０２１５】
図に示すように、それぞれの読み取りユニットは、２つ以上の同じサイズの読み取りユニットの各々内のユーザデータを様々なサイズにすることを可能にする、それぞれのユーザデータのサイズを有する。例えば、ユーザデータのサイズは、特定の読み取りユニットで使用される下位レベルの符号化率を変化させるために変更される。より具体的には、読み取りユニット９５１および９１１は同じサイズを有しているが、異なるそれぞれのユーザデータ量（９５１．Ｕおよび９１１．Ｕ）、およびしたがって異なるそれぞれの下位レベルの冗長情報量（９５１．Ｅおよび９１１．Ｅ）を有し、読み取りユニット９５１が読み取りユニット９１１よりも高い下位レベルの符号化率を持つことを可能にする。
【０２１６】
いくつかの実施形態および／または使用シナリオでは、下位レベルの符号化率を変更することおよび／または変化させることは、ユーザデータの量を最大化しながら、下位レベルの誤り訂正の要件を達成するために、十分な量の下位レベルのＥＣＣ情報を提供することが有利に可能となる。
【０２１７】
読み取りユニットにおいて変化するユーザデータ量を伴ういくつかの実施形態では、上位レベルの冗長情報は、最大量のユーザデータを有する１つ以上の読み取りユニット内に格納される。例えば図９では、ＲＡＳＩＥ−１モードを使用して、上位レベルの冗長情報はユーザデータ９３１．Ｕに格納され、ＲＡＳＩＥ−２モードを使用して、上位レベルの冗長情報はユーザデータ９３１．Ｕおよびユーザデータ９５１．Ｕに格納される。（上位レベルの冗長情報により保護される読み取りユニットの中で）最大量のユーザデータを伴う読み取りユニット内に上位レベルの冗長情報を格納することは、他のすべての読み取りユニット内のユーザデータを保護するのに十分な上位レベルの冗長情報があることを保証する。
【０２１８】
様々な実施形態によれば、１つ以上の技術を用いて、上位レベルの冗長情報により保護されるいくつかの読み取りユニットのうちどの１つ以上の読み取りユニットが上位レベルの冗長情報を格納するために使用されるのかを決定する。第１の例では、最大量のユーザデータを有する最後に書き込まれた（ＲＡＳＩＥ−１に対する）１つのまたは（ＲＡＳＩＥ−２に対する）２つの読み取りユニットが使用される。第２の例では、最大量のユーザデータを有する最初に書き込まれた（ＲＡＳＩＥ−１に対する）１つのまたは（ＲＡＳＩＥ−２に対する）２つの読み取りユニットが使用される。同様に、他の読み取りユニット内の残りのユーザデータのすべてを保護するように最大量のユーザデータを有する１つ以上の読み取りユニットを確定的に選択するためのいかなる技術も、本明細書で考察される技術の範囲内にある。
【０２１９】
上位レベルの冗長情報計算技術
様々な実施形態および／または使用シナリオでは、上位レベルの冗長情報は、パリティ、ＲＳ、および／または加重和の技術などを介して、様々な技術で計算される。例えば、１つの（下位レベル）の障害からの復旧を可能にするいくつかの上位レベルの冗長モードでは（例えば、ＲＡＳＩＥ−１）、上位レベルの冗長情報はパリティ技術を介して計算される。別の例では、２つの（下位レベル）の障害からの復旧を可能にするいくつかの上位レベルの冗長モードでは（例えば、ＲＡＳＩＥ−２）、上位レベルの冗長情報はパリティおよびＲＳの技術の組み合せを介して計算される。上位レベルの冗長情報の第１の部分はパリティ符号化を用いて計算され、第２の部分はＲＳ符号化を用いて計算される。さらに別の例では、２つの障害からの復旧を可能にするいくつかの上位レベルの冗長モードでは（例えば、ＲＡＳＩＥ−２）、上位レベルの冗長情報はパリティおよび加重和の技術の組み合せを介して計算される。上位レベルの冗長情報の第１の部分はパリティ符号化を用いて計算され、第２の部分は加重和符号化を用いて計算される。上位レベルの冗長情報は、例えばＮＶＭのページの読み取りおよび書き込みを介して、上位レベルの冗長情報により保護されたデータを格納することに対して利用可能なＮＶＭのページに使用される下位レベルの障害検出技術と同一または同様の下位レベルの障害検出技術（ＥＣＣなど）を使用して管理される。
【０２２０】
ＲＡＳＩＥ−２のための具体的な例として、上位レベルの冗長情報の第１のページはＲ−ブロックにわたるストライプ内のすべての第１のページのＸＯＲを介してパリティ符号化を使用して計算される。より具体的には、Ｒ−ブロックにわたるストライプ内のすべての第１のページのすべての最初のバイトのＸＯＲが行われ、結果として上位レベルの冗長情報の第１のページの第１のバイトとなる。同様に、上位レベルの冗長情報の第２のバイトが、Ｒ−ブロックにわたるストライプ内のすべての第１のページのすべての２番目のバイトをＸＯＲ演算することにより形成され、以下同様にストライプ内のすべての第１のページのすべてのバイトが行われる。上位レベルの冗長情報の第２のページは次のように加重和の手法を用いて計算される。
【０２２１】
ガロア体（例として使用）などの有限体上で算術計算が実行される。例では、演算対象のデータはバイト幅であると仮定され、したがってＧＦ（２５６）などのフィールドが使用される。様々な実施形態では、データは任意のユニットで演算される。
【０２２２】
ストライプ内の各ページは、一意の非ゼロの「インデックス」が割り当てられる。インデックスの値は実現の複雑さを単純化するために選択され、生成多項式のどのような形態にも関連しない。例えば、ページは０からＮ−１のストライプ内のダイ位置により（例えば、ソフトウェアなどにより）ラベル付けされ、それらのインデックスに適した値は（Ｎ＜２５５であるという条件で非ゼロであることが保証されている）ダイ番号の１の補数である。インデックス値の別の選択は、例えばハードウェアのコストを低減および／または最小化するための、最低加重（最小数のセットビットまたは最小数のクリアビット）の非ゼロの整数である。いくつかの実施形態および／または使用シナリオでは、インデックス用にグレーコード化された値を選択すると、遷移を最小限し、および／またはページが処理される際に電力を低減する。
【０２２３】
インデックス値は有限体算術計算に従って選択されないが、他の原理に従って選択される。これにもかかわらず、各インデックス値は有限体における非ゼロ要素に対応する。ページｉがインデックス値Ｋｉを有する（およびページｊがインデックス値Ｋｊを有する）と仮定する。加重和冗長性はＫｉ×Ｐｉの（各ページｉからの対応するバイトＰｉ上での）（ＧＦフィールド）和であり、各バイトは（ＧＦフィールド上で）そのインデックス値で乗算される。
【０２２４】
このように加重和冗長情報は、次のようにバイト毎に計算される。
Ｒ０＝対応するすべてのバイトＰｉ上の和；
Ｒ１＝対応するすべてのバイトＫｉ×Ｐｉ上の和；
Ｒ０は対応するすべてのバイトのＸＯＲである；および
Ｒ１はバイトの加重和であり、重みはインデックス値として選択される。上記の計算は、ページ内の対応するバイト毎に繰り返され、Ｒ０およびＲ１の各々に対してバイトからなる対応するページを作成する。以下の議論では、Ｒ０およびＲ１は、説明を明確にするために単一の要素（例えば、各々がシングルバイトである）としてそれぞれいくつかのコンテキストで説明されているが、上記の計算のように、各々は要素のそれぞれのページの代表的なものである（例えば、各々がバイトからなるページである）。
【０２２５】
Ｐｉはページｉのバイトを表し、Ｐｊはページｊのバイトを表す。処理は各ページからの対応するバイトからなる１つのストライプに関して説明され、繰り返しはすべての対応するバイト上で実行される。いくつかのページが、例えば異なる（下位レベルの）冗長符号化率を有することにより、他のページより「短い」場合、効果的に処理されるすべてのページが同じサイズを有するように、短いページはゼロパディングされる（またはエンコードおよびデコードで同じ方法で使用される任意の既知の値でパディングされる）。
【０２２６】
様々な実施形態によれば、Ｒ０およびＲ１を計算するための和は、様々な連続および／または並列計算を介して、任意の順序で実施可能である。Ｋｉ×ＰｉがＫｊ×Ｐｊの前にまたは後に追加されるかどうかはＲ１の結果に影響を与えないので、ページは特定の順序で処理する必要はない。様々な実施形態によれば、冗長情報のページの様々なバイトに対応するＲ０およびＲ１の値の計算は、互いに独立しており、様々な連続および／または並列計算を介して、任意の順序で計算可能である。さらに、Ｒ１からＫｉ×Ｐｉを減算すること（およびＲ０からＰｉを減算すること）は、ページ上の計算効果の「バックアウト」を可能にする。ＧＦフィールド上では、加算および減算は両方ともＸＯＲである（したがって、減算は２回目に単に加算することと同等である）ので、いくつかの実施形態および／または使用シナリオでは、ページを「バックアウト」するためにＧＦフィールド実現用に特別なハードウェアを必要としない（例えば、論理ＸＯＲ機能で十分である）。
【０２２７】
訂正不可能な下位レベルの誤り事象において、上位レベルの誤り訂正は、いくつかの実施形態では、Ｒ０およびＲ１の再計算により開始するが、訂正不可能な下位レベルの誤りを有するページ（時にはカラムとも呼ばれる）を省略することにより開始する。訂正はΔＲ０を生成するために元のＲ０から再計算されたＲ０を減算し、ΔＲ１を生成するために元のＲ１から再計算されたＲ１を減算することにより進行する。
【０２２８】
訂正不可能な下位レベルの誤りがない場合は、再計算されたＲ０およびＲ１は両方ともゼロである。訂正不可能な下位レベルの誤りがある場合は、再計算されたＲ０およびＲ１（減算後）は「欠損」データ（２回目に加算されなかったが、元の値に存在していた）を反映している。
【０２２９】
１つの訂正不可能な下位レベルの誤りがある場合には、再計算されたＲ０が、誤りを訂正するために使用される（再計算されたＲ１は不要）。
【０２３０】
２つの訂正不可能な下位レベルの誤りがある場合には、再計算されたＲ０およびＲ１が、誤りを訂正するために使用される。Ｒ０およびＲ１値のページ両方が、訂正不可能な下位レベルの誤りが発生しているページである場合は、データ・ストレージ・ページの訂正は不要である。Ｒ１値のページが、訂正不可能な下位レベルの誤りが発生したページの１つである場合は、訂正はＲ０を介して行われる（再計算されたＲ０の値は訂正不可能な下位レベルの誤りを伴うデータ・ストレージ・ページの値である）。
【０２３１】
データ・ストレージ・ページ内に２つの訂正不可能な下位レベルの誤りがある場合、またはＲ０ページが訂正不可能な下位レベルの誤りを伴うページの１つである場合には、訂正は、上記のようにΔＲ０およびΔＲ１の計算により開始する。Ｒ０ページが訂正不可能な下位レベルの誤りが発生したページの１つである場合、ΔＲ０ページの計算は必要に応じて省略される。ページｉおよびページｊが訂正不可能な下位レベルの誤りが発生したページである場合、再計算されたΔＲ０＝Ｐｉ＋Ｐｊであり、再計算されたΔＲ１＝Ｋｉ×Ｐｉ＋Ｋｊ×Ｐｊである。方程式を解くと：
Ｐｉ＝（ΔＲ１−Ｋｊ×ΔＲ０）／（Ｋｉ−Ｋｊ）
Ｐｊ＝ΔＲ０−Ｐｉ
となる。
Ｒ０が訂正不可能な下位レベルの誤りが発生したページの１つである場合、（Ｒ０はＲ１には含まれないため）、ΔＲ１＝Ｋｉ×Ｐｉ、またはＰｉ＝ΔＲ１／Ｋｉであり、上記の式でＫｊ＝０を設定する（ΔＲ０を無視する）ことにより同じ結果が得られる。
【０２３２】
代替的な実施形態では、素数ｐを法とする整数により定義される有限体がガロア体の代わりに使用される。計算は、加算がｐを法とする整数加算であり、乗算がｐを法とする整数乗算である、上述したものと同一である。例えば、ページがバイトのページである場合、２５７を法とする整数の有限体が使用される。すべてのユーザ・データ・バイトは０−２５５の範囲であり、各々１バイトに格納される。しかしながら、Ｒ１の結果は０−２５６の範囲の値を有し、表現のために１つより多いバイトを必要とする。０−２５６の値をエンコードして、ストレージ領域を最小化し、Ｒ１ページが低減されたオーバーヘッドで格納されることを可能にするために、多くの方法がある。例えば、値０および２５６は９ビットシーケンス０００００００００および００００００００１としてそれぞれ格納され、他のすべての値は８ビットで格納される。Ｒ１の値のランダム分布を考えると、ストレージオーバーヘッドは＜０．１％である。図９に関して説明したように、Ｒ１ページは、いくつかの使用シナリオにおいてはオーバーヘッドを隠すことができるように、最大量のユーザデータを有するように選択される。
【０２３３】
図１０は、例えば、図７のようなコンテキストでＲＡＳＩＥ−２モード２−２によって使用されるような、およびさらに図６に示すような、上位レベルの冗長情報結果およびデータソースの対応の一実施形態の選択された詳細を示す。図１０は明示的にフラッシュダイ６１０．０、６１０．６３、６１０．６４および、６１０．６５を示し、省略記号（．．．）により暗黙にフラッシュダイ６１０．１．．．６１０．６２を示す。フラッシュダイのページ内のブロック、ページ、バイトの選択された詳細が示される。上位レベルの冗長情報の第１の部分はＲ０ １０１０（フラッシュダイ６１０．６４に格納される）として示され、パリティ符号化を使用して計算される。上位レベルの冗長情報の第２の部分はＲ１ １０１１（フラッシュダイ６１０．６５に格納される）として示され、加重和符号化を使用して計算される。データ情報のストレージはデータ１０１９（フラッシュダイ６１０．０．．．６１０．６３に格納される）として示される。
【０２３４】
破線矢印１００１はデータ１０１９の（すべてのフラッシュダイにわたる）すべての最初のページの対応する最初のバイトに基づいた２バイトの冗長計算結果（Ｒ０ １０１０およびＲ１ １０１１の各々に対して１バイト）を概念的に示す。図示するように２バイトの結果は最初のＲ０およびＲ１の各ページの最初のバイトである。破線矢印１００２はデータ１０１９のすべての最初のページの対応する最後のバイトに基づいた２バイトの冗長計算結果（Ｒ０ １０１０およびＲ１ １０１１の各々に対して１バイト）を概念的に示す。図示するように、２バイトの結果は最初のＲ０およびＲ１の各ページの最後のバイトである。破線矢印１００３はデータ１０１９の（すべてのフラッシュダイにわたる）最初のブロックの対応する最後のページに基づいた２ページの冗長計算結果（Ｒ０ １０１０およびＲ１ １０１１の各々に対して1ページ）を概念的に示す。
【０２３５】
本明細書の他の箇所に説明されているように、一部の実施形態では、上位レベルの冗長情報はデータの異なる部分に対して、異なるダイ内に格納されることに注意されたい。このように、Ｒ０およびＲ１はいくつかの実施形態では、図１０に示すように、２つの「専用」ダイではなくむしろ種々のダイにわたって格納される。
【０２３６】
図１１は、例えば、様々な実施形態に応じた様々な動作条件で、図７のようなコンテキストでＲＡＳＩＥ−２モード２−２により使用されるような、ならびにさらに図６および図１０に示されるような、上位レベルの冗長情報の計算の一実施形態の選択された詳細を示す。より具体的には、図１１は、例えば、図１０の破線矢印１００１により概念的に示される２バイトの冗長計算結果に従った、Ｒ０のバイト用のパリティ符号化計算およびＲ１のバイト用の加重和符号化計算を示す。動作条件は、有限体（ガロア体など）上の算術計算の実行、インデックス（図１１でダミー和変数「ｉ」の値に対応する）がフラッシュダイ番号の１の補数であること（または任意の他の一意のおよび非ゼロの番号付け）、およびインデックスが有限体において非ゼロ要素に対応する、の１つ以上を含む。図１１に示す計算は、対応するデータバイトに基づいて、Ｒ０およびＲ１のすべてのバイトについて繰り返される。非ゼロのインデックスはＲ１の値がＰｉの各要素からの寄与を含むことを可能にすることに注意されたい。
【０２３７】
このように任意のＲ０のバイトを、互いに、または任意のＲ１のバイト間で計算することには依存関係はない。したがって、Ｒ０およびＲ１の値が、全体的に（大規模に）並列して、部分的に並列して、または全体的に連続して計算される、様々な実施形態が企図される。例えば、ページのＲ０および／またはＲ１バイトのすべては並列に計算される。別の例では、ページのＲ０バイトのすべては並列に計算され、続いて（またはその前に）ページのＲ１バイトのすべてが並列に計算される。
【０２３８】
さらに、Ｒ０のバイトのいずれかを、互いに関してまたはＲ１のバイトのいずれかを計算することに関して計算することに順序要件はない。したがって、Ｒ０およびＲ１の値が互いに関して順番に、互いに関して別々に順番に全体的に計算される（例えば、Ｒ０の計算は互いに関しては順番にであるがＲ１に関しては順序なし、および逆もまた然り）、または特定の順序なし（例えば、完全に順序のない、順不同、またはランダムな順序）で計算される、様々な実施形態が企図される。例えば、ページのＲ０バイトのすべては特定の順序で（例えば、最下位バイトから最上位バイトに）計算され、その後にページのＲ１バイトのすべてが特定の順序で続く。別の例では、ページのＲ０バイトのすべてが特定の順序で計算され、独立してページのＲ１バイトのすべてが特定の順序で計算される。さらに別の例では、ページのＲ０バイトのすべては、ページのＲ１バイトのすべてと同様に、（例えば、データオペランドが利用可能になると、）互いに関して不特定の順序で計算される。
【０２３９】
さらに別の例では、１つ以上のページのＲ０およびＲ１バイトのすべてが、１つ以上のＮＶＭ（各々が、例えば、１つ以上のフラッシュダイを有する）上で実行される１つ以上の読み取り動作の完了の順序により決定された順序で計算され、データバイトを読み取るための読み取り動作は図１１に示す加算および加重和の計算（Ｐｉ）により参照される。いくつかの実施形態および／または使用シナリオでは、読み取り動作の完了により決定される順序で計算を実行することは、計算を実行することが可能となっているＮＶＭおよび要素間でのバッファリングの低減または除去を可能とする。いくつかの実施形態および／または使用シナリオでは、読み取り動作の完了により決定される順序で計算を実行することは、ＮＶＭのメモリ帯域幅などの、計算を実行するために使用されるメモリ帯域幅の低減を可能とする。
【０２４０】
さらに別の例では、１つ以上のページのＲ０およびＲ１バイトのすべては１つ以上のＮＶＭ（各々が、例えば、１つ以上のフラッシュダイを有する）上で実行される読み取り動作に応答して返されたデータおよび／または利用可能なデータの順序により決定される順序で計算され、返されたデータおよび／または利用可能なデータは図１１に示す加算および加重和の計算（Ｐｉ）により参照されるデータバイトに対応する。いくつかの実施形態および／または使用シナリオでは、返されたデータおよび／または利用可能なデータにより決定された順序で計算を実行することは、計算を実行するよう可能にされるＮＶＭおよび要素間でのバッファリングを低減または除去する。いくつかの実施形態および／または使用シナリオでは、返されたデータおよび／または利用可能なデータにより決定された順序で計算を実行することは、ＮＶＭのメモリ帯域幅などの、計算を実行するために使用されるメモリ帯域幅を低減する。いくつかの実施形態では、読み取り動作は特定の順序（例えば、Ｐｉの最下位バイトから最上位バイト）で実行される一方、他の実施形態では、読み取り動作は不特定の順序で実行される。
【０２４１】
図１２は、例えば、図１１に関連付けられている、および下位レベルの障害がページｊで発生したコンテキストでの、１つの（下位レベルの）障害（単一動作時）からの復旧の実施形態の選択された詳細を示す。下位レベルの障害がＲ０またはＲ１ページ上にある場合、図１１で説明したようにＲ０（またはＲ１）は再決定されることに注意されたい。図１２は、ページｊのために、復旧された値の１バイトの計算を示す（和が、障害が発生したページｊを省略していることに注意されたい）。図１２に示す計算は、Ｒ０の対応するバイトおよびページｊを除くすべてのデータページからの対応するバイトに基づいて、ページｊのすべてのバイトのための復旧された値を決定するために繰り返される。
【０２４２】
このようにページｊの復旧された値のいずれかのバイトを互いにおいて計算するのに依存関係はない。したがって、Ｒ０およびＲ１値についての前述の計算と同様に、Ｐｊ復旧値が高度に並列から高度に連続までの範囲で計算される様々な実施形態が企図される。さらに、互いに関してページｊの復旧値のいずれかを計算することには順序要件はない。したがって、Ｒ０およびＲ１値についての前述の計算と同様に、Ｐｊ復旧値が互いに関して順序を変えて計算される様々な実施形態が企図される。
【０２４３】
いくつかの例示的な実施形態は、１つ以上のＮＶＭ（各々が、例えば、１つ以上のフラッシュダイを有する）上で実行される、図１２で示すＲ０および／またはＰｉの値を取得するためにＮＶＭを読み取る読み取り動作である、１つ以上の読み取り動作の完了の順序により少なくとも一部が決定される順序で復旧値を決定することに関連する計算を実行する。いくつかの実施形態および／または使用シナリオでは、読み取り動作の完了の順序で計算を実行することは、計算を実行することが可能となっているＮＶＭおよび要素間でのバッファリングの低減または除去を可能とする。いくつかの実施形態および／または使用シナリオでは、読み取り動作の完了の順序で計算を実行することは、ＮＶＭのメモリ帯域幅などの、計算を実行するために使用されるメモリ帯域幅を低減することを可能とする。
【０２４４】
いくつかの例示的な実施形態は、１つ以上のＮＶＭ（各々が、例えば、１つ以上のフラッシュダイを有する）から返されたデータおよび／または利用可能なデータの順序により少なくとも一部が決定される順序で復旧値を決定することに関連する計算を実行し、返されたデータおよび／または利用可能なデータは図１２で示すＲ０および／またはＰｉの値を取得するためにＮＶＭ上で実行される読み取り動作に応答する。いくつかの実施形態および／または使用シナリオでは、読み取り動作から返されたデータおよび／または利用可能なデータの順序で計算を実行することは、計算を実行することが可能となっているＮＶＭおよび要素間でのバッファリングを低減または除去する。いくつかの実施形態および／または使用シナリオでは、読み取り動作から返されたデータおよび／または入手可能なデータの順序で計算を実行することは、ＮＶＭのメモリ帯域幅などの、計算を実行するために使用されるメモリ帯域幅を低減する。いくつかの実施形態では、読み取り動作は特定の順序（例えば、Ｐｉの最下位バイトから最上位バイト）で実行される一方、他の実施形態では、読み取り動作が不特定の順序で実行される。
【０２４５】
図１３Ａ−図１３Ｄは、例えば、図１１に関連付けられる、および下位レベルの障害がページｍおよびｎで発生したコンテキストでの、２つの（下位レベルの）障害（単一動作時）からの復旧の実施形態の選択された詳細を示す。下位レベルの障害がＲ０およびＲ１ページ上にある場合は、Ｒ０およびＲ１はデータ復旧に対して不要であり、データを復旧する処理がないことに注意されたい。それ以外の場合は、下位レベルの障害の１つがＲ１ページにある場合、データ復旧は図１２で説明したように進むことに注意されたい。下位レベルの障害がＲ０またはＲ１ページのいずれにもない場合、ＰｍおよびＰｎの値の復旧は次のように進む。図１３Ａは、修正されたＲ０をＲ０'としての１バイト、修正されたＲ１をＲ１'としての１バイトのための計算を示す（和は障害が発生したページｍおよびｎを省略することに注意されたい）。図１３Ｂは、元の冗長情報（Ｒ０、Ｒ１）の修正された冗長情報（Ｒ０'、Ｒ１'）への１バイトの関連する等式、ならびに修正されたＲ０およびＲ１を形成するために用いられた和から省略された項（Ｐｍ＋ＰｎおよびＫｍ×Ｐｍ＋Ｋｎ×Ｐｎ）を示す。図１３Ｃは、挿入された項デルタＲ０（ΔＲ０）およびデルタＲ１（ΔＲ１）で、図１３Ｂの代数的再構成を示す。図１３Ｄは、ＰｎおよびＰｍに対する図１３Ｃの解を示し、Ｒ１、Ｒ０の対応するバイト、ならびにページｍおよびｎを除くすべてのデータページからの対応するバイトに基づいて、ページｎの復旧値の１バイトおよびページｍの復旧値の１バイトの計算を表す。一意のインデックスは、ＫｎがＫｍに対して一意であるので、非ゼロの共通因子を有効にすることに注意されたい。
【０２４６】
様々な実施形態では、図１３Ａ−図１３Ｄで示される計算はページｍの復旧値の１バイトおよびページｎの復旧値の１バイトを決定するために実行される。計算は、Ｒ０、Ｒ１の対応するバイト、ならびにページｍおよびｎを除くデータページのすべてからの対応するバイトに基づいて、ページｍおよびｎのすべてのバイトについて、復旧される値を決定するために、繰り返される。
【０２４７】
このようにページｍまたはｎの復旧値のいずれかのバイトを互いにおいて計算するのに依存関係はない。したがって、Ｐｊ復旧値のための前述の計算と同様に、Ｐｍおよび／またはＰｎの復旧値が高度に並列から高度に連続までの範囲で計算される、様々な実施形態が企図される。さらに、互いに関してページｍおよび／またはページｎの復旧値のいずれかを計算することには順序要件はない。したがって、Ｐｊ復旧値のための前述の計算と同様に、Ｐｍおよび／またはＰｎの復旧値が互いに関して順序を変えて計算される、様々な実施形態が企図される。
【０２４８】
いくつかの例示的な実施形態は、図１３Ａ−図１３Ｄのいずれかにおいて計算のためのソースとして示された値のいずれか１つ以上を取得するための読み取り動作である、１つ以上のＮＶＭ（各々が、例えば、１つ以上のフラッシュダイを有する）上で実行される１つ以上の読み取り動作の完了の順序により少なくとも一部が決定される順序で復旧値を決定することに関連する計算（Ｒ０'およびＲ１'の計算など）を実行する。いくつか実施形態および／または使用シナリオでは、読み取り動作の完了の順序で計算を実行することは、計算を実行することが可能となっているＮＶＭおよび要素間でのバッファリングの低減または除去を可能とする。いくつかの実施形態および／または使用シナリオでは、読み取り動作の完了の順序で計算を実行することは、ＮＶＭのメモリ帯域幅などの、計算を実行するために使用されるメモリ帯域幅の低減を可能とする。
【０２４９】
他のいくつかの例示的な実施形態は、１つ以上のＮＶＭ（各々が、例えば、１つ以上のフラッシュダイを有する）から返されたデータおよび／または利用可能なデータの順序により少なくとも一部が決定される順序で復旧値を決定することに関連する計算（Ｒ０'およびＲ１'の計算など）を行い、返されたデータおよび／または利用可能なデータは図１３Ａ−図１３Ｄのいずれかにおいて計算のためのソースとして示された値のいずれか１つ以上を取得するためにＮＶＭ上で実行される読み取り動作に応答している。いくつかの実施形態および／または使用シナリオでは、読み取り動作から返されるデータおよび／または利用可能なデータの順序で計算を実行することは、計算を実行することが可能となっているＮＶＭおよび要素間でのバッファリングを低減または除去する。いくつかの実施形態および／または使用シナリオでは、読み取り動作から返されたデータおよび／または利用可能なデータの順序で計算を実行することは、ＮＶＭのメモリ帯域幅などの、計算を実行するために使用されるメモリ帯域幅を低減する。いくつかの実施形態では、読み取り動作は特定の順序（例えば、Ｐｉの最下位バイトから最上位バイト）で行われる一方、他の実施形態では、読み取り動作が不特定の順序で実行される。
【０２５０】
図１４Ａおよび図１４Ｂは、ＮＶＭから受信したページに関して上位レベルの冗長情報を計算する実施形態の選択された詳細を示す。図１４Ａは、発行を介して１つ以上のＮＶＭに複数の読み取りコマンドを送信し（読み取り動作を発行１４０２Ａ）、すべてのコマンドが送信されたかどうかをチェックし（すべて発行？１４０３Ａ）、そうでない場合、次に別のコマンドを送信するためにループバックする、一実施形態の選択された詳細を示す。一度に１つずつではなくむしろ一度に複数のコマンドが発行される他の実施形態も考えられることに注意されたい。
【０２５１】
図１４Ｂは、図１４Ａに示された送信された読み取りコマンドに応答してＮＶＭから受信したページを処理する一実施形態の選択された詳細を示す。チェックはページが利用可能であるかどうかを判断するために行われる（ページ準備完了？１４０２Ｂ）。そうでない場合、処理は再びチェックを実行するためにループバックする。ページが利用可能である場合、そのページに関連する上位レベルの冗長情報の処理が行われる（ページベースの計算を実行１４０３Ｂ）。次にすべてのページが処理されたかを判断するチェックが行われる（ページ終了？１４０４Ｂ）。もしそうであれば、処理は完了し（終了１４９９Ｂ）、そうでなければフローは別のページが利用可能であるかどうかを判断するためにループバックする。
【０２５２】
図１４Ａに示す送信されたコマンドに応答するページの受信以外、図１４Ｂに示した処理は図１４Ａに示した処理とは無関係である。様々なシナリオでは、ページの到着順序はＮＶＭタイプ、状態、動作環境、およびその他の要因に応じて変化し、いくつかの状況では、到着ページに対応した読み取りコマンドの送信順序または到着順序とは異なる。図１４Ａの処理は、（ページデータの到着が、送信される対応する読み取りコマンドに依存すること以外、）図１４Ｂとは無関係であるので、いくつかの実施形態および／または使用シナリオでは、読み取りデータが受信／処理されている間に（図１４Ｂ）、読み取りコマンドが送信される（図１４Ａ）。いくつかの実施形態および／または使用シナリオでは、例えば、特定のページのための読み取りコマンドが送信されることになる前にその特定のページが既に特定のバッファ内に存在する場合、ページのいくつかはＮＶＭに向けた読み取りコマンドを介して要求されるのではなくむしろ１つ以上のバッファから提供される。いくつかの実施形態および／または使用シナリオでは、送信されたコマンドに応答する以外のページは、送信されたコマンドに応答して提供されたページ、例えば他の活動のために送られる読み取りコマンドに応答して提供されたページと混在してＮＶＭにより提供される。
【０２５３】
種々の実施形態では、図１１で示すＲ０およびＲ１に対する計算は、少なくとも一部、図１４Ａおよび図１４Ｂで示すように実行される。第１の例としては、対応するＲ０およびＲ１ページを計算するために必要なすべてのデータページに対する読み取りコマンドは図１４Ａに示すように１つ以上のＮＶＭに送られる。読み取りコマンドに応答して受信されたデータのページは、図１１で示すように、ページがＲ０およびＲ１ページを計算するよう受信されるように、処理される。第２の例としては、Ｒ０およびＲ１ページのペア（例えば、デュアルプレーンＮＶＭの２つのプレーンに対応する）のための読み取りコマンドは図１４Ａで示すように、１つ以上のＮＶＭに送られる。読み取りコマンドに応答して受信されたデータのページは、図１１で示すように、ページがＲ０およびＲ１ページを計算するよう受信されるように、処理される。
【０２５４】
様々な実施形態では、図１２で示すように、Ｐｊのための計算は、少なくとも一部、図１４Ａおよび図１４Ｂで示すように、実行される。第１の例としては、特定のＰｊページを計算するために必要なすべてのデータページに対する読み取りコマンドは図１４Ａで示すように、１つ以上のＮＶＭに送られる。読み取りコマンドに応答して受信されたデータのページは、図１２で示すように、ページがＰｊページを計算するよう受信されるように、処理される。第２の例としては、Ｐｊページのペア（例えば、デュアルプレーンＮＶＭの２つのプレーンに対応する）のための読み取りコマンドは、図１４Ａで示すように１つ以上のＮＶＭに送られ、受信されたデータのページは、図１４Ｂで示すように、受信されるように処理されて、Ｐｊページのペアを計算する。
【０２５５】
様々な実施形態では、図１３Ａ−図１３Ｄのいずれかで示す、復旧値を決定することに関連する計算（Ｒ０'およびＲ１'の計算など）は、少なくとも一部、図１４Ａおよび図１４Ｂに示されるように実行される。第１の例としては、特定のＲ０'ページおよび特定のＲ１'ページを計算するために必要なすべてのデータページに対する読み取りコマンドは図１４Ａで示す１つ以上のＮＶＭに送られる。読み取りコマンドに応答して受信されたデータのページは、図１３Ａで示すように、ページがＲ０'およびＲ１'ページを計算するよう受信されるように、処理される。第２の例としては、Ｒ０'およびＲ１'ページのペア（例えば、デュアルプレーンＮＶＭの２つのプレーンに対応する）のための読み取りコマンドは図１４Ａで示すように、１つ以上のＮＶＭに送られ、受信されたデータのページは、図１４Ｂで示すように、受信されるように処理されて、Ｒ０'およびＲ１'ページのペアを計算する。
【０２５６】
図１５Ａ−図１５Ｃは、例えば、図１１に関連付けられたコンテキストなどで、ＮＶＭに提供された書き込みに関する上位レベルの冗長情報の計算のバックアウトの一実施形態の選択された詳細を示す。図１５Ａは、発行を介して１つ以上のＮＶＭに複数の書き込みコマンドを送信し（書き込み動作を発行１５０２Ａ）、すべてのコマンドが送信されたかどうかをチェックし（すべて発行？１５０３Ａ）、そうでない場合、次に別のコマンドを送信するためにループバックする、一実施形態の選択された詳細を示す。一度に１つずつではなくむしろ一度に複数のコマンドが発行される他の実施形態も考えられることに注意されたい。
【０２５７】
図１５Ｂは、図１５Ａに示す、送信された書き込みコマンドに応答してＮＶＭから受信される書き込み完了およびステータス情報の処理の一実施形態の選択された詳細を示す。チェックは書き込みが誤りなしで完了したかどうかを判断するために行われる（書き込みＯＫ？１５０２Ｂ）。そうである場合、次にチェックはすべての書き込みが完了したかどうかを判断するために行われる（書き込み完了？１５０４Ｂ）。そうである場合、処理は完了する（終了１５９９Ｂ）。書き込みは完了したがプログラム障害などの（下位レベルの）誤りが有る場合、次にフローは上位レベルの冗長情報の計算に関して書き込みの効果を「元に戻す」に進む（書き込みを冗長性からバックアウト１５０３Ｂ）。より具体的には、下位レベルの誤りを伴う書き込みについてのデータは、（書き込み用のデータが、書き込みが成功するという前提下で、対応する上位レベルの冗長性の計算に既に含まれていたと仮定して、）対応する上位レベルの冗長情報の計算から逆計算される。例えば、下位レベルの書き込み障害が特定のページｊ上で検出される。これに応答して、修正されたＲ０およびＲ１ページが、ページｊデータ（Ｐｊ）がゼロに設定されるように、計算される。図１５Ｃは、ｊが下位レベルの書き込み障害のページである、修正されたＲ０（ｎＲ０）のシングルバイトおよび修正されたＲ１（ｎＲ１）のシングルバイトの計算の一実施形態の選択された詳細を示す。図１１などに関連付けられている図１２のコンテキストで、有限体がガロア体である場合は図１５Ｃに示す減算演算（「−」）は論理ＸＯＲ演算と等価であることに注意されたい。様々な実施形態では、他の処理（図示せず）は修正された上位レベルの冗長ページ（ｎＲ０およびｎＲ１）と同様に、下位レベルの書き込み障害のあるページ（Ｐｊ）を格納するために実行される。
【０２５８】
図１５に示すように、送信されたコマンドに応答する書き込み完了およびステータス情報の受信以外、図１５Ｂに示す処理は図１５Ａに示す処理とは無関係である。様々なシナリオでは、書き込み完了およびステータス情報の到着順序はＮＶＭタイプ、状態、動作環境、およびその他の要因に応じて変化し、いくつかの状況では、到着する書き込み完了およびステータス情報に対応する書き込みコマンドの送信順序または到着順序とは異なる。図１５Ａの処理は（書き込み完了およびステータス情報の到着が、送信される対応する書き込みコマンドに依存する以外）図１５Ｂとは無関係であるので、いくつかの実施形態および／または使用シナリオでは、書き込み完了およびステータス情報が受信／処理されている（図１５Ｂ）間に書き込みコマンドが送信される（図１５Ａ）。
【０２５９】
いくつかの実施形態および／または使用シナリオでは、ＮＶＭに送信される書き込みコマンドと書き込みコマンドに応答するＮＶＭからの書き込み完了およびステータス情報の受信との間にかなりの遅延が発生する。いくつかの実施形態および／または使用シナリオでは、図１５Ａに示す送信されたコマンドに応答する以外の書き込み完了およびステータス情報は、図１５Ａに示すように、送信されたコマンドに応答して提供された書き込み完了およびステータス情報、例えば、他の活動のために送信されたコマンドに応答して提供される書き込み完了およびステータス情報と混在してＮＶＭにより提供される。
【０２６０】
様々な実施形態および／または使用シナリオでは、そうでなければデータ情報のために使用される１つ以上のページが未使用である。様々なシナリオでは、未使用のページは、ブロック、Ｒ−ブロック、ストライプ、またはいかなる種類のページのシーケンスの、最初、中間、または最後のページである。いくつかの状況では、未使用のページは演繹的に未使用（「除外」）であり、いくつかの状況では、未使用のページは、なんらかの使用の後、未使用である（「サービスから削除」）。除外されている未使用のページの例は誤って製造されたページである。サービスから削除された未使用ページの例は適切に書き込むことができないページである（例えば、図１５Ｂに関して、下位レベルの書き込み誤りとして説明される）。例えば図１０−図１２、図１３Ａ−図１３Ｄ、図１４Ａ−図１４Ｂ、および図１５Ａ−図１５Ｂに関連する処理は、未使用のページを計算から完全に省略すること、または未使用のページ上のすべてのデータがあたかもゼロであるかのように計算を実行することなどにより、任意の未使用のページを（除外であろうとサービスから削除であろうと）スキップする。
【０２６１】
混合粒度の上位レベルの冗長
様々な実施形態および／または使用のシナリオでは、ＮＶＭのそれぞれの領域は、図７、図８および図１０と関連して例示し記載したように、それぞれの上位レベルの冗長モード（例えばＲＡＳＩＥ−１およびＲＡＳＩＥ−２）で動作される。様々な実施形態では、それぞれの上位レベルの冗長モードは例えば同じ粒度であり、それぞれの領域は各々同じ（例えばサイズまたはタイプ）要素の整数倍である。例示的な要素は、１つ以上のＲ−ブロックおよび／またはブロック、１つ以上のＲ−ページおよび／またはページ、ならびに１つ以上のワード線と関連付けられる１つ以上のセルを含む。例えば、ＮＶＭの第１の領域は、ＲＡＳＩＥ−１モードにおいて単一ブロックの粒度で動作され（例えば、第１の領域は整数個のブロックであり、第１の領域は１つ以上のＲ−ブロックである、などである）、ＮＶＭの第２の領域は、ＲＡＳＩＥ−２モードにおいて単一ブロックの粒度で動作される（例えば、第２の領域も整数個のブロックであり、第２の領域は１つ以上のＲ−ブロックである、などである）。したがって、第１のおよび第２の領域は、双方とも同じ粒度（１つのブロック）であるそれぞれの上位レベルの冗長モードで動作される。
【０２６２】
様々な他の実施形態では、それぞれの上位レベルの冗長モードは様々な粒度にあり、例えば、それぞれの領域の少なくともいくつかは、それぞれの異なる要素の整数倍である。例えば、ＮＶＭの第１の領域は、ＲＡＳＩＥ−１モードにおいて単一ページの粒度で動作され（例えば、第１の領域は、本明細書に別記される、ＮＶＭの各ダイからのページ、例示的なＲ−ページに対応するような、整数個のページである）、ＮＶＭの第２の領域は、ＲＡＳＩＥ−２モードにおいて単一ブロックの粒度で動作される（例えば、第１の領域が１つ以上のＲ−ブロックであるように、第２の領域は整数個のブロックである）。したがって、第１のおよび第２の領域は、別個のそれぞれの粒度のものあるそれぞれの上位レベルの冗長モードで動作される。別の例では、ＮＶＭのそれぞれの領域は、同じ上位レベルの冗長モードにおいて、それぞれの別個の粒度で動作される（例えば、第１の領域および第２の領域はＲＡＳＩＥ−１で動作され、第１の領域は単一ページ粒度にあり、第２の領域は単一Ｒ−ブロック粒度にある）。
【０２６３】
様々な実施形態および／または使用のシナリオでは、上位レベルの冗長モードの粒度は、同じサイズ、同じタイプまたは両方を有する要素の整数倍に基く。例えば、同じサイズ（および同じタイプ）の要素がページを含むのは、例えば、例えば同一の下位レベルの冗長符号化率のため、ページの各々が同じサイズである（およびページの各々が同じタイプ「ページ」である）コンテキストである。他の例では、同じタイプ（であるが異なるサイズ）の要素がページを含むのは、例えば異なる下位レベルの冗長符号化率のため、ページのいくつかは他のページと異なるサイズであるが、すべてのページは同じタイプ「ページ」であるコンテキストである。
【０２６４】
図１６は、図６に示されるようなフラッシュダイの構成のコンテキストにおける、混合粒度の上位レベルの冗長の実施形態の、選択された詳細を示す。図１６は、明示的にフラッシュダイ６１０．０、６１０．６３、６１０．６４、および６１０．６５を示し、および省略符号（．．．）によって暗示的にフラッシュダイ６１０．１．．．６１０．６２を示す。フラッシュダイのブロックおよびブロック内におけるページの選択された詳細が示される。複数のＲ−ブロックが、Ｒ−ブロック６６０．０、６６０．１、６６０．２．．．および６６０．Ｒとして示される。複数のＲ−ページが、（まとめてＲ−ブロック６６０．０である）Ｒ−ページ１６００、１６０１、１６０２．．．および１６０９として示される。
【０２６５】
Ｒ−ページは概念的に複数のＮＶＭデバイスからのページの論理スライスに対応する（Ｒ−ブロックが概念的に複数のＮＶＭデバイスからのブロックの論理スライスに対応するように）。例示的なＲ−ページは、まとめると、各々のフラッシュダイのｊ番目のブロックからのｉ番目のページである。まとめると、Ｒ−ブロックの様々な例に概念的に対応するような、各々のフラッシュダイからのブロックからのｊ番目のブロックからのｉ番目および（ｉ＋１）番目のページのような、他の例示的なＲ−ページがある。
【０２６６】
示されたように、Ｒ−ページ１６００は、まとめると、フラッシュダイの各々の最初のブロックからの最初のページである（ページ６１０．０Ｐ０．．．６１０．６３Ｐ０、６１０．６４Ｐ０および６１０．６５Ｐ０）。Ｒ−ページ１６０１は、まとめると、フラッシュダイの各々の最初のブロックからの２番目のページである（ページ６１０．０Ｐ１．．．６１０．６３Ｐ１、６１０．６４Ｐ１および６１０．６５Ｐ１）。Ｒ−ページ１６０２は、まとめると、フラッシュダイの各々の最初のブロックからの３番目のページである（ページ６１０．０Ｐ２．．．６１０．６３Ｐ２、６１０．６４Ｐ２および６１０．６５Ｐ２）。Ｒ−ページ１６０９は、まとめると、フラッシュダイの各々の最初のブロックからの最後のページである（ページ６１０．０ＰＰ．．．６１０．６３ＰＰ、６１０．６４ＰＰおよび６１０．６５ＰＰ）。
【０２６７】
フラッシュダイの様々な領域は、以下のように、対応する上位レベルの冗長モードにおいて様々な粒度で並行して動作されるとして示される。Ｒ−ページ１６００はＲＡＳＩＥ−２モードにおいてページの粒度で動作され、フラッシュダイ６１０．０．．．６１０．６３．のそれぞれのページ６１０．０Ｐ０．．．６１０．６３Ｐ０に格納され、フラッシュダイ６１０．６４および６１０．６５のそれぞれのページ６１０．６４Ｐ０および６１０．６５Ｐ０に格納される冗長情報１６００．Ｒに対応するデータ情報１６００．Ｄを含む。Ｒ−ページ１６０１もＲＡＳＩＥ−２モードにおいてページの粒度で動作され、フラッシュダイ６１０．０．．．６１０．６３のそれぞれのページ６１０．０Ｐ１．．．６１０．６３Ｐ１に格納され、フラッシュダイ６１０．６４および６１０．６５のそれぞれのページ６１０．６４Ｐ１および６１０．６５Ｐ１に格納される冗長情報１６０１．Ｒに対応するデータ情報１６０１．Ｄを含む。Ｒ−ページ１６０２はＲＡＳＩＥ−１モードにおいてページの粒度で動作され、フラッシュダイ６１０．０．．．６１０．６４のそれぞれのページ６１０．０Ｐ２．．．６１０．６４Ｐ２に格納され、フラッシュダイ６１０．６５のページ６１０．６５Ｐ２に格納される冗長情報１６０２．Ｒに対応するデータ情報１６０２．Ｄを含む。Ｒ−ページ１６０９はＲＡＳＩＥ−３モードにおいてページの粒度で動作され、フラッシュダイ６１０．０．．．６１０．６２のそれぞれのページ６１０．０ＰＰ．．．６１０．６２ＰＰに格納され、フラッシュダイ６１０．６３．．．６１０．６５のそれぞれのページ６１０．６３ＰＰ．．．６１０．６５ＰＰに格納される冗長情報１６０９．Ｒに対応するデータ情報１６０９．Ｄを含む。フラッシュダイ６１０．６２（および６１０．６２ＰＰページのようなその中のページ）は、暗示的に示され、明示的には示されない。
【０２６８】
それぞれの上位レベルの冗長モードにおいて同じページの粒度で動作されるＲ−ページ１６００、１６０１および１６０２および１６０９とは対照的に、Ｒ−ブロック６６０．１、６６０．２、および６６０．Ｒはそれぞれの上位レベルの冗長モードにおいて同じブロックの粒度で動作される。具体的には、Ｒ−ブロック６６０．１はＲＡＳＩＥ−２モードにおいてブロックの粒度で動作され、フラッシュダイ６１０．０．．．６１０．６３のそれぞれのブロック６１０．０Ｂ１．．．６１０．６３Ｂ１に格納され、フラッシュダイ６１０．６４および６１０．６５のそれぞれのブロック６１０．６４Ｂ１および６１０．６５Ｂ１に格納される冗長情報１６１０．Ｒに対応するデータ情報１６１０．Ｄを含む。Ｒ−ブロック６６０．２はＲＡＳＩＥ−１モードにおいてブロックの粒度で動作され、フラッシュダイ６１０．０．．．６１０．６４のそれぞれのブロック６１０．０Ｂ２．．．６１０．６４Ｂ２に格納され、フラッシュダイ６１０．６５のブロック６１０．６５Ｂ２に格納される冗長情報１６２０．Ｒに対応するデータ情報１６２０．Ｄを含む。Ｒ−ブロック６６０．ＲはＲＡＳＩＥ−３モードにおいてブロックの粒度で動作され、フラッシュダイ６１０．０．．６１０．６２のそれぞれのブロック６１０．０ＢＢ．．．６１０．６２ＢＢに格納され、フラッシュダイ６１０．６３．．．６１０．６５のそれぞれのブロック６１０．６３ＢＢ．．．６１０．６５ＢＢに格納される冗長情報１６９０．Ｒに対応するデータ情報１６１０９．Ｄを含む。
【０２６９】
したがって、Ｒ−ページ１６００、１６０１、１６０２および１６０９はすべて、（各領域がフラッシュダイ６１０．０．．．６１０．６５の各々からの対応するページであるように）様々な上位レベルの冗長モードにおいて同じ１つのページの粒度で並行して動作される。さらに、Ｒ−ページ６６０．０，６６０．１，６６０．２および６６０．Ｒはすべて、（各領域がフラッシュダイ６１０．０．．．６１０．６５の各々からの対応するページであるように）様々な上位レベルの冗長モードにおいて同じ１つのブロックの粒度で並行して動作される。最後に、Ｒ−ページ１６００、１６０１、１６０２および１６０９の並行動作は、Ｒ−ブロック６６０．０、６６０．１、６６０．２および６６０．Ｒの並行動作と同時である。したがって、フラッシュダイは、まとめて、および並行して、様々な上位レベルの冗長モードにおいて様々な（混合された）粒度で動作される。
【０２７０】
上位レベルの冗長モードにおいて混合粒度で並行して動作させる恩恵の具体的な例として、以下を考える。図１６に示されるように、Ｒ−ページ１６００、１６０１および１６０２は、各々、全体的にそれぞれの上位レベルの冗長モードにおいて動作される（具体的にはＲＡＳＩＥ−２モード、ＲＡＳＩＥ−２モードおよびＲＡＳＩＥ−１モード）。Ｒ−ページ１６０９は全体的にＲＡＳＩＥ−３モードにおいて動作される。明示的には示されないが、Ｒ−ブロック６６０．０の残りのＲ−ページは、全体的にＲＡＳＩＥ−１モードで動作されると仮定する。したがって、Ｒ−ブロック６６０．０のすべては上位レベルの冗長モードにおいてページ粒度で動作される。示されるように、Ｒ−ブロック６６０．１、６６０．２、および６６０．Ｒは各々全体的にそれぞれの上位レベルの冗長モードで動作される。明示的には示されないが、残りのＲ−ブロックも各々全体的にそれぞれの上位レベルの冗長モードにおいて動作されると仮定する。したがって、Ｒ−ブロック６６０．０を除くすべてのＲ−ブロックは上位レベルの冗長モードにおいてブロック（または代替的にＲ−ブロック）粒度で動作され、Ｒ−ブロック６６０．０は上位レベルの冗長モードにおいてページ粒度で動作される。
【０２７１】
単一のページ（例えばページ６１０．６３ＰＰ）の増分の冗長オーバーヘッドコストを招くことは、単一動作中の２つの障害からの、ＲＡＳＩＥ−２を介する保護と比較して、単一動作中の３つの障害からのＲ−ページ１６０９の、ＲＡＳＩＥ−３を介する保護を可能にする。上位レベルの冗長モードの混合粒度を伴わないで実現例では、Ｒ−ページ１６０９の保護は、ブロック全体の増分の冗長オーバーヘッドコストを招く。したがって、混合粒度の上位レベルの冗長モードは、（実装された）デバイス、ダイ、Ｒ−ブロック、ブロック、Ｒ−ページ、ページ、ワード線と関連付けられるセル、および前述のものの１つまたはそれより多い複数などのような同じエンティティの同じ保護に対して、低減された冗長情報オーバーヘッドを可能にした。
【０２７２】
図１７は、複数の混合粒度の上位レベルの冗長モードにおける並行動作の実施形態の、選択された詳細を示す（第１および第２の粒度の上位レベルの冗長モードにおいて並行して動作させる１７００）。フローは、例えば事象に応答して開始する（開始１７０１）。次いで、フローは２つの並行経路に沿って続き、１つは、例えばＮＶＭのそれぞれの領域に対応する、上位レベルの冗長モード動作の各それぞれの粒度に対するものである。第１の粒度における動作（第１の粒度の上位レベルの冗長モードにおいて動作する１７０２）は、図の左の部分に示され、第２の粒度における動作（第２の粒度の上位レベルの冗長モードにおいて動作する１７０４）は、図の右の部分に示される。示されるように、動作は２つの粒度に対して並行して（例えば完全にまたは部分的に並列に）継続する。示されないが、いくつかの実施形態および／または使用のシナリオでは、いくつかの情況では、フローは、（例えばリブートに応答して）単一の粒度における動作に復帰する、または（例えば別の事象応答して）２つを超える粒度における並行動作に進むなど、２つの粒度の並行動作から出る。さらに、図は上位レベルの冗長モードの２つの粒度における並行動作を示しているが、様々な他の実施形態は上位レベルの冗長モードの様々な粒度における並行動作を実施する。
【０２７３】
並行動作の開始後、ホスト（例えば図１Ｂのホスト１０２）からまたはＳＳＤコントローラの内部のエージェント（例えば図１Ａのリサイクラ１５１）からのような要求（読み取り／書き込み要求１７０７）に応答して、フローは、続けて、動作中の粒度のどれに要求が対応するか判断する（粒度？１７０６）。要求が第１の粒度（第１  １７０６．１）のものである場合、フローは、第１の粒度に従って要求を処理し始める（第１の粒度の上位レベルの冗長モードに従って読み取る／書き込む１７０３）。要求が第２の粒度（第２  １７０６．２）のものである場合、フローは第２の粒度に従って要求を処理し始める。（第２の粒度の上位レベルの冗長モードに従って読み取る／書き込む１７０５）。
【０２７４】
（例えば開始１７０１を介して）示されたフローを開始する事象および／または２つを超える粒度における並行動作を開始する事象（明示的には示されず）の例は、障害の検出を含む（例えば、下位レベルの訂正できない読み取り誤りまたは書き込み／プログラム障害）。様々な実施形態では、（例えば開始１７０１を介する）示されたフローの開始および／または２つを超える粒度における動作の開始（明示的には示されず）によって意味される遷移は、動作モードの動的な遷移に対応する（例えば、図８の動作モードを動的に遷移する８０９）。
【０２７５】
ここで、本明細書の他の部分と同様に、複数の粒度での上位レベルの冗長モードの並行動作に関する記載は、例えば、複数のエンティティが、情報を格納するために同時に用いられること、および／または複数の粒度に従って情報を書き込む／読み取るように同時に利用可能であることを指すことが注記される。エンティティの例は、（実装された）デバイス、ダイ、Ｒ−ブロック、ブロック、Ｒ−ページ、ページ、ワード線と関連付けられるセル、および前述のものの１つまたはそれより多い複数を含む。複数の粒度で並行して動作する一方で、様々な時点で：エンティティの１つのみが単一動作（例えば、書き込みまたは読み取り）を実行している（かまたは代替的に、例えばＳＳＤコントローラによって指示されて、単一動作を実行する）；エンティティの様々なものが並行して様々なそれぞれの動作を実行している；および、エンティティの１つ以上の様々なサブエンティティが並行して様々なそれぞれの動作を実行している、のいずれか１つ以上が行なわれる。
【０２７６】
例えば、いくつかのフラッシュダイを管理するＳＳＤコントローラを考える。ＳＳＤコントローラは、フラッシュダイの様々な領域を様々な上位レベルの冗長モードにおいて様々な粒度で並行して以下のように動作させる。ＳＳＤコントローラは、領域のうちの第１の領域をＲＡＳＩＥ−１モードにおいてＲ−ブロックの粒度で動作させ、領域のうちの第２の領域をＲＡＳＩＥ−２モードにおいてＲ−ブロックの粒度で動作させる。ＳＳＤコントローラは、領域のうちの第３の領域をＲＡＳＩＥ−２モードにおいてＲ−ページの粒度で動作させ、領域のうちの第４の領域をＲＡＳＩＥ−３モードにおいてＲ−ページの粒度で動作させる。並行動作中において、領域の各々は同時に情報を格納し、Ｒ−ブロックまたはＲ−ページ粒度に従って情報を読み取る／書き込むよう同時に利用可能である。
【０２７７】
例を続けて、並行動作中のある期間にわたって、ＳＳＤコントローラは連続して一連の書き込みコマンドをフラッシュダイの各々に与える。一連の書き込みコマンドは第１の領域の全体を書き込むことに対応し、ＲＡＳＩＥ−１モードにおいてＲ−ブロックの粒度で従う。いくつかのシナリオでは、書き込みコマンドの各々は、ＳＳＤコントローラによって、一度に１つ、フラッシュダイに発せられる。したがって、ＳＳＤコントローラは、領域を様々な上位レベルの冗長モードにおいて様々な粒度で並行して動作させながら、一度に１つの動作を実行している。いくつかのシナリオでは、書き込みコマンドはフラッシュダイによって相対的に短いタイムスパンで受取られ、フラッシュダイの少なくとも２つ以上が、それぞれのページプログラミング動作に、少なくとも部分的に並行して進むことを可能にする。したがって、少なくとも２つ以上のフラッシュダイは、様々な上位レベルの冗長モードにおいて様々な粒度で並行して動作されながら、並行して複数の動作を実行している。
【０２７８】
いくつかの実施形態および／または使用のシナリオでは、上位レベルの冗長モードにおいて複数の粒度で並行して動作することは、適応型の下位レベルの符号化率との組合わせにおいて用いられる。例えば、ＮＶＭの複数のＲ−ブロックは、まず、ＲＡＳＩＥ−１モードにおいてＲ−ブロック粒度で第１の適応型の下位レベルの符号化率を用いて動作される。次いで、Ｒ−ブロックの特定の１つのページの１つは、より信頼性がなくなる。応答して、より信頼性のないページの読み取りユニットの１つ以上が、第１の適応型の下位レベルの符号化率よりよい誤り訂正を有する、第２の適応型の下位レベルの符号化率を用いて、動作される。その後、より信頼性のないページは、さらにより信頼性がなくなる。応答して、より信頼性のないページを含むＲ−ページは、（第１の上位レベルの冗長モードよりよい誤り訂正を有する）第２の上位レベルの冗長モードにおいてＲ−ページの粒度で動作される。特定のＲ−ブロックの他のＲ−ページは、第１の上位レベルの冗長モードにおいて、ただし今度は（Ｒ−ブロックではなく）Ｒ−ページの粒度で動作され続ける。特定のＲ−ブロック以外のＲ−ブロックは、第１の上位レベルの冗長モードにおいて、およびＲ−ブロックの粒度で、動作され続ける。したがって、より信頼性のないページはますます信頼性がなくなるが、そのより信頼性のないページは（低減された使用可能ストレージ容量でとはいえ）依然として使用可能である。したがって、上位レベルの冗長モードにおいて複数の粒度で適応型の下位レベルの符号化率と関連して並行して動作することは、いくつかのシナリオでは、改善されたＮＶＭおよび／またはＳＳＤ寿命を可能にする。
【０２７９】
他の実施形態の情報
様々な実施形態では、図８、図１０−図１２、図１３Ａ−図１３Ｄ、図１４Ａ−図１４Ｂ、図１５Ａ−図１５Ｂおよび図１７の１つ以上の要素の処理または関係するものは、図１Ａの１つ以上の要素（またはその一部）により全体的にまたは部分的に実行される。例えば、ＣＰＵ１７１のソフトウェア実行機能の一部は、図８に示す動作モードの動的な遷移を指示すること、図１２および図１３Ａ−図１３Ｄで示すデータ復旧動作を指示すること、および／または図１７に示す上位レベルの冗長モードの様々な粒度で並行動作を指示することなどにより、上位レベルの冗長処理を管理するために使用される。別の例として、データ処理１２１は、図１１、図１２、図１３Ａ−図１３Ｄおよび図１５Ｃのいずれか１つ以上により示されるような計算に従って上位レベルの冗長情報の計算に専用および／または特化されたハードウェア要素を含む。
【０２８０】
例示的実現の技術
いくつかの実施形態では、ＮＶＭ（例えば、フラッシュメモリ）、コンピューティングホスト・フラッシュ・メモリ・コントローラ、および／またはＳＳＤコントローラ（図１ＡのＳＳＤコントローラ１００など）、およびプロセッサの一部、マイクロプロセッサ、システムオンチップ、特定用途向け集積回路、ハードウェアアクセラレータ、または上述の動作の全部または一部を提供する他の回路などのための、混合粒度の上位レベルの冗長を実現するシステムにより実行される動作のすべてまたは任意の部分の種々の組み合せは、コンピュータシステムによる処理と互換性のある仕様により指定される。仕様は、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、またはレイアウト記述などの様々な記述に準拠している。例示的記述は、Ｖｅｒｉｌｏｇ、ＶＨＤＬ、ＳＰＩＣＥ、ＰＳｐｉｃｅなどのＳＰＩＣＥバリアント（亜種）、ＩＢＩＳ、ＬＥＦ、ＤＥＦ、ＧＤＳ−ＩＩ、ＯＡＳＩＳ、または他の記述などを含む。様々な実施形態では、処理は、１つ以上の集積回路上に含めるのに適した論理および／または回路を生成、検証、または指定するための解釈、コンパイル、シミュレーション、および合成などの任意の組み合せを含む。各集積回路は、様々な実施形態によれば、種々の技術に従って設計可能および／または製造可能である。技術は、プログラム可能な技術（フィールドまたはマスク・プログラマブル・ゲート・アレイ集積回路など）、セミカスタム技術（完全にまたは部分的にセルベースの集積回路など）、およびフルカスタム技術（実質的に特化された集積回路など）、それらの任意の組み合せ、または集積回路の設計および／もしくは製造と互換性のある任意の他の技術を含む。
【０２８１】
いくつかの実施形態では、命令のセットがその内部に格納されたコンピュータ読取可能媒体により記述された動作のすべてまたは部分の様々な組み合せは、１つ以上のプログラム命令の実行および／もしくは解釈により、１つ以上のソースおよび／もしくはスクリプト言語ステートメントの解釈および／もしくはコンパイルにより、またはプログラミングおよび／もしくはスクリプト言語ステートメントで表現される情報をコンパイル、翻訳、および／または解釈して生成されたバイナリ命令の実行により、実行される。ステートメントは任意の標準的なプログラミングまたはスクリプト言語（Ｃ、Ｃ＋＋、ＦＯＲＴＲＡＮ、Ｐａｓｃａｌ、Ａｄａ、Ｊａｖａ（登録商標）、ＶＢスクリプト、およびシェルなど）と互換性がある。１つ以上のプログラム命令、言語ステートメント、またはバイナリ命令は、オプションで１つ以上のコンピュータ読取可能記憶媒体要素に格納される。様々な実施形態では、プログラム命令のいくつか、すべて、または様々な部分は、１つ以上の関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの一部として実現される。
【０２８２】
結論
特定の選択肢は記載において本文および図面を作成する際に単に便宜的になされたものであり、そうではないという指示がない限り、説明された実施形態の構造または動作に関する追加情報を伝えるものとしてそれ自体解釈されるべきではない。選択肢の例としては、図の番号用に使用される指定の特定の構成または割り当て、ならびに実施形態の特徴および要素を識別し参照するために使用される要素識別子（例えば、引き出し線または数値指定子など）の特定の構成または割り当てを含む。
【０２８３】
単語「含む」または「含んでいる」は、制限のない権利範囲の論理的な組を記載する抽象概念として解釈されることを具体的に意図しており、単語「内」が明示的に続かない限り物理的封じ込めを伝えることを意図しない。
【０２８４】
前述の実施形態は説明および理解を明確にする目的のためにある程度詳細に説明してきたが、本発明は提供された詳細に限定されない。本発明の多くの実施形態がある。開示された実施形態は例示であり限定するものではない。
【０２８５】
構造、構成、および使用についての多くの変形が記載と整合可能であり、発行された特許の特許請求の範囲内にあることが理解されるであろう。例えば、相互接続および機能ユニットビット幅、クロック速度、および使用される技術の種類は、各構成ブロック内の様々な実施形態に応じて可変である。相互接続および論理に与えられた名称は単なる例示であり、説明される概念を限定するものとして解釈されるべきではない。フローチャートおよびフロー図のプロセス、動作、および機能要素の順序ならびに構成は、様々な実施形態に応じて可変である。また、具体的にそうではないと述べられない限り、指定される値の範囲、使用される最大値および最小値、または他の特定の仕様（フラッシュメモリ技術の種類、レジスタおよびバッファ内のエントリ数または段数など）は単に記載の実施形態のものであり、実現技術の改良や変更を後追することが予期され、限定として解釈されるべきではない。
【０２８６】
当技術分野で公知の機能的に等価な技術は、種々のコンポーネント、サブシステム、動作、関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはその一部を実現するために記載されたものに代わって採用可能である。実施形態の多くの機能的局面は、実施形態に依存する設計上の制約および高速処理の技術動向（以前はハードウェアの機能であったもののソフトウェアへの移行の促進）および高い集積密度（以前はソフトウェアの機能であったもののハードウェアへの移行の促進）に応じて、ハードウェア（例えば、一般的に専用化された回路系）またはソフトウェア（例えば、プログラムされたコントローラまたはプロセッサのいくつかの方法を介して）のいずれかで選択的に実現可能であることも理解される。様々な実施形態の特定の変形は、パーティショニングの違い、異なるフォームファクタおよび構成、異なるオペレーティングシステムおよび他のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、または通信リンクの使用、を含むがこれらに限定されるものではなく、特定の適用例の独自のエンジニアリングおよびビジネスの制約に応じて本明細書に記載の概念を実現する際にその他の変形が予期される。
【０２８７】
実施形態は詳細にかつ説明された実施形態の多くの局面の最小限の実現に必要なものを十分に超える環境のコンテキストで説明されてきた。当業者であれば、いくつかの実施形態では、残りの要素間の基本的な連携を変更することなく、開示された構成要素または特徴を省略することを認識するであろう。したがって、開示された詳細の多くは説明した実施形態の様々な局面を実現するために必要とされないことが理解される。残りの要素が先行技術から区別される程度に、省略されている構成要素および機能は本明細書に記載の概念に限定されるものではない。
【０２８８】
設計のすべてのそのような変形は、説明された実施形態により伝えられる教示にわたって非実質的な変更である。本明細書に説明された実施形態は、他のコンピューティングおよびネットワーキング適用例への幅広い適用性を有し、説明された実施形態の特定の用途または産業に限定されるものではないことも理解される。本発明はしたがって、発行された特許の請求の範囲内に包含されるすべての可能な変更および変形を含むものと解釈されるべきである。
【図１Ａ】
2015524975.tif 000012
【図１Ｂ】
2015524975.tif 000013
【図２】
2015524975.tif 000014
【図３】
2015524975.tif 000015
【図４Ａ】
2015524975.tif 000016
【図４Ｂ】
2015524975.tif 000017
【図５】
2015524975.tif 000018
【図６】
2015524975.tif 000019
【図７】
2015524975.tif 000020
【図８】
2015524975.tif 000021
【図９】
2015524975.tif 000022
【図１０】
2015524975.tif 000023
【図１１】
2015524975.tif 000024
【図１２】
2015524975.tif 000025
【図１３Ａ】
2015524975.tif 000026
【図１３Ｂ】
2015524975.tif 000027
【図１３Ｃ】
2015524975.tif 000028
【図１３Ｄ】
2015524975.tif 000029
【図１４Ａ】
2015524975.tif 000030
【図１４Ｂ】
2015524975.tif 000031
【図１５Ａ】
2015524975.tif 000032
【図１５Ｂ】
2015524975.tif 000033
【図１５Ｃ】
2015524975.tif 000034
【図１６】
2015524975.tif 000035
【図１７】
2015524975.tif 000036
【国際調査報告】
2015524975.tif 000037
2015524975.tif 000038