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