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