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