(57)【特許請求の範囲】
【請求項１】
ソリッドステートドライブであって、
第１生存時間を含む第１ストリームのデータを受信し、前記第１生存時間と異なる第２生存時間を含む第２ストリームのデータを受信する受信回路と、
前記第１生存時間に基づいて第１時点に前記ソリッドステートドライブのブロックに前記第１ストリームのデータを書き込むことを選択し、前記第２生存時間に基づいて第２時点に前記ソリッドステートドライブの前記ブロックに前記第２ストリームのデータを書き込むことを選択する選択ロジックと、
前記第１ストリームのデータを前記ソリッドステートドライブの前記ブロックの第１ページに書き込み、前記第２ストリームのデータを前記ソリッドステートドライブの前記ブロックの第２ページに書き込む書込みロジックと、を備え、
前記第２生存時間は、前記第１生存時間よりも短い生存時間値を有し、
前記第１生存時間を含む前記第１ストリームのデータは、前記第１生存時間よりも短い前記第２生存時間を含む前記第２ストリームのデータよりも、先に前記ブロックに書き込まれ、
前記第１ストリームのデータ及び前記第２ストリームのデータの両方は、前記ブロックがガーベッジコレクションの対象になる前に前記ブロックに書き込まれることを特徴とするソリッドステートドライブ。
【請求項２】
前記ブロックに格納された全てのデータは、前記第１ストリーム及び前記第２ストリームの中のいずれか１つのストリームのデータのみが前記ブロックに書き込まれた場合よりも早く満了すると予測されることを特徴とする請求項１に記載のソリッドステートドライブ。
【請求項３】
前記選択ロジックは、
前記第１ストリームに連関する書込みオペレーションに対する第１平均書込みサイズ及び前記第２ストリームに連関する書込みオペレーションに対する第２平均書込みサイズを演算する平均書込みサイズ演算器と、
前記第１ストリームに対する第１平均書込み到達比率及び前記第２ストリームに対する第２平均書込み到達比率を演算する平均書込み到達比率演算器と、を含むことを特徴とする請求項１に記載のソリッドステートドライブ。
【請求項４】
前記選択ロジックは、前記第１生存時間、前記第２生存時間、前記第１平均書込みサイズ、前記第１平均書込み到達比率、前記第２平均書込みサイズ、及び前記第２平均書込み到達比率の中の少なくとも２つに基づいて前記ソリッドステートドライブのブロックに書き込むストリームを選択するように動作することを特徴とする請求項３に記載のソリッドステートドライブ。
【請求項５】
前記ソリッドステートドライブは、第２次ストリームを生成する第２次ストリーム生成器をさらに含み、
前記選択ロジックは、前記第１ストリーム及び前記第２ストリームの中から前記第２次ストリームに書き込むストリームを選択するストリーム選択ロジックを含み、
前記書込みロジックは、前記第２次ストリームを前記ブロックに書き込むように動作することを特徴とする請求項１に記載のソリッドステートドライブ。
【請求項６】
ソリッドステートドライブに対するソリッドステートドライブコントローラであって、
前記ソリッドステートドライブのブロックに対するブロックの生存時間のためのストレージと、
前記ブロックの生存時間、第１生存時間、及び第２生存時間に基づいて、前記第１生存時間を有する第１ストリーム及び前記第２生存時間を有する第２ストリームの中から前記ブロックに書き込むストリームを選択する選択ロジックと、を備え、
前記第２生存時間は、前記第１生存時間よりも短い生存時間値を有し、
前記第１生存時間を有する前記第１ストリームのデータは、前記第１生存時間よりも短い前記第２生存時間を有する前記第２ストリームのデータよりも、先に前記ブロックに書き込まれ、
前記第１ストリームのデータ及び前記第２ストリームのデータの両方は、前記ブロックがガーベッジコレクションの対象になる前に前記ブロックに書き込まれることを特徴とするソリッドステートドライブコントローラ。
【請求項７】
前記ブロックに格納された全てのデータは、前記第１ストリーム及び前記第２ストリームの中のいずれか１つのストリームのデータのみが前記ブロックに書き込まれた場合よりも早く満了すると予測されることを特徴とする請求項６に記載のソリッドステートドライブコントローラ。
【請求項８】
前記選択ロジックは、前記ブロックの生存時間、前記第１生存時間、及び前記第２生存時間に基づいて第１時点に前記ブロックに書き込む前記第１ストリームを選択し、前記ブロックの生存時間、前記第１生存時間、及び前記第２生存時間に基づいて第２時点に前記ブロックに書き込む前記第２ストリームを選択するように動作することを特徴とする請求項６に記載のソリッドステートドライブコントローラ。
【請求項９】
前記選択ロジックは、
前記第１ストリームに連関する書込みオペレーションに対する第１平均書込みサイズ及び前記第２ストリームに連関する書込みオペレーションに対する第２平均書込みサイズを演算する平均書込みサイズ演算器と、
前記第１ストリームに対する第１平均書込み到達比率及び前記第２ストリームに対する第２平均書込み到達比率を演算する平均書込み到達比率演算器と、を含むことを特徴とする請求項６に記載のソリッドステートドライブコントローラ。
【請求項１０】
前記選択ロジックは、前記ブロックの生存時間、前記第１生存時間、前記第２生存時間、前記第１平均書込みサイズ、前記第１平均書込み到達比率、前記第２平均書込みサイズ、及び前記第２平均書込み到達比率の中の少なくとも２つに基づいて前記ソリッドステートドライブのブロックに書き込むストリームを選択するように動作することを特徴とする請求項９に記載のソリッドステートドライブコントローラ。
【請求項１１】
前記選択ロジックは、前記ブロックの生存時間、前記第１生存時間、前記第２生存時間、及び第３生存時間に基づいて、前記第１生存時間を有する前記第１ストリーム、前記第２生存時間を有する前記第２ストリーム、及び前記第３生存時間を有する第３ストリームの中から前記ブロックに書き込むストリームを選択するように動作することを特徴とする請求項６に記載のソリッドステートドライブコントローラ。
【請求項１２】
前記ソリッドステートドライブコントローラは、第２次ストリームを生成する第２次ストリーム生成器をさらに含み、
前記選択ロジックは、前記第１ストリーム及び前記第２ストリームの中から前記第２次ストリームに書き込むストリームを選択するストリーム選択ロジックを含み、
前記第２次ストリームは、前記ブロックに書き込まれることを特徴とする請求項６に記載のソリッドステートドライブコントローラ。
【請求項１３】
ソリッドステートドライブの動作方法であって、
ソリッドステートドライブのブロックを識別するステップと、
第１生存時間を含む第１ストリームを受信するステップと、
前記第１生存時間と異なる第２生存時間を含む第２ストリームを受信するステップと、
前記第１生存時間に基づいて第１時点に前記ブロックに前記第１ストリームを書き込むことを選択するステップと、
前記第２生存時間に基づいて第２時点に前記ブロックに前記第２ストリームを書き込むことを選択するステップと、
前記第１ストリームのデータを前記ブロックの第１ページに書き込み、前記第２ストリームのデータを前記ブロックの第２ページに書き込むステップと、を有し、
前記第２生存時間は、前記第１生存時間よりも短い生存時間値を有し、
前記第１生存時間を有する前記第１ストリームのデータは、前記第１生存時間よりも短い前記第２生存時間を有する前記第２ストリームのデータよりも、先に前記ブロックに書き込まれ、
前記第１ストリームのデータ及び前記第２ストリームのデータの両方は、前記ブロックがガーベッジコレクションの対象になる前に前記ブロックに書き込まれることを特徴とするソリッドステートドライブの動作方法。
【請求項１４】
前記ブロックに格納された全てのデータは、前記第１ストリーム及び前記第２ストリームの中のいずれか１つのストリームのデータのみが前記ブロックに書き込まれた場合よりも早く満了すると予測されることを特徴とする請求項１３に記載のソリッドステートドライブの動作方法。
【請求項１５】
前記ブロックに前記第１ストリームを書き込むこと又は前記第２ストリームを書き込むことを選択するステップは、前記第１生存時間、前記第２生存時間、前記第１ストリームに対する第１平均書込みサイズ、前記第２ストリームに対する第２平均書込みサイズ、前記第１ストリームに対する第１平均書込み到達比率、及び前記第２ストリームに対する第２平均書込み到達比率の中の少なくとも２つに基づいて前記ブロックに前記第１ストリーム又は前記第２ストリームを書き込むことを選択するステップを含むことを特徴とする請求項１３に記載のソリッドステートドライブの動作方法。
【請求項１６】
前記ソリッドステートドライブのブロックを識別するステップは、前記ブロックの生存時間を前記ブロックに連関させるステップを含むことを特徴とする請求項１３に記載のソリッドステートドライブの動作方法。
【請求項１７】
前記ブロックに前記第１ストリームを書き込むこと又は前記第２ストリームを書き込むことを選択するステップは、前記第１生存時間、前記第２生存時間、及び前記ブロックの生存時間に基づいて前記ブロックに前記第１ストリーム又は前記第２ストリームを書き込むことを選択するステップを含むことを特徴とする請求項１６に記載のソリッドステートドライブの動作方法。
【請求項１８】
前記ブロックに前記第１ストリームを書き込むこと又は前記第２ストリームを書き込むことを選択するステップは、前記第１生存時間又は前記第２生存時間の中の前記ブロックの生存時間により近い生存時間に基づいて前記第１ストリーム又は前記第２ストリームの中から前記ブロックに書き込むストリームを選択するステップをさらに含むことを特徴とする請求項１７に記載のソリッドステートドライブの動作方法。
【請求項１９】
前記ソリッドステートドライブの動作方法は、
第２次ストリームを生成するステップと、
前記第２次ストリームを前記ブロックに連関させるステップと、をさらに含み、
前記ブロックに前記第１ストリームを書き込むこと又は前記第２ストリームを書き込むことを選択するステップは、前記第１ストリーム及び前記第２ストリームのデータの中から前記第２次ストリームに割当するデータを選択するステップを含むことを特徴とする請求項１３に記載のソリッドステートドライブの動作方法。
【請求項２０】
前記ソリッドステートドライブの動作方法は、前記第１生存時間及び前記第２生存時間と異なる第３生存時間を含む第３ストリームを受信するステップをさらに含み、
前記ブロックに前記第１ストリームを書き込むこと又は前記第２ストリームを書き込むことを選択するステップは、前記第１生存時間、前記第２生存時間、及び前記第３生存時間に基づいて前記ブロックに前記第１ストリーム、前記第２ストリーム、又は前記第３ストリームの中から前記ブロックに書き込むストリームを選択するステップを含み、
前記第１ストリーム及び前記第２ストリームの両方のデータを前記ブロックに書き込むステップは、前記第１ストリームのデータ、前記第２ストリームのデータ、及び前記第３ストリームのデータを前記ブロックに書き込むステップを含むことを特徴とする請求項１３に記載のソリッドステートドライブの動作方法。
【請求項２１】
前記ブロックに前記第１ストリームを書き込むこと又は前記第２ストリームを書き込むことを選択するステップは、前記ブロックの生存時間を前記ブロックの現在の状態を反映するために更新されたブロック生存時間に変更するステップをさらに含み、
前記第１生存時間又は前記第２生存時間の中の前記ブロックの生存時間により近い生存時間に基づいて前記第１ストリーム又は前記第２ストリームの中から前記ブロックに書き込むストリームを選択するステップは、前記第１生存時間又は前記第２生存時間の中の前記更新されたブロック生存時間により近い生存時間に基づいて、前記第１ストリーム又は前記第２ストリームを書き込むことを選択するステップを含むことを特徴とする請求項１８に記載のソリッドステートドライブの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソリッドステートドライブ及びその動作方法に関し、より詳しくは、向上したマルチストリームオペレーションを有するソリッドステートドライブ及びその動作方法並びにソリッドステートドライブに対するロジックに関する。
【背景技術】
【０００２】
今日、ストレージ装置には多くの技術が統合されている。重要な技術の中の１つはＮＡＮＤフラッシュメモリである。ソリッドステートドライブ（ＳＳＤ）のようなストレージ装置に使用されるフラッシュメモリは多様な設計考慮事項を含む。重要な考慮事項は、ストレージ容量を効率的に利用するための戦略を含む。
【０００３】
前に格納されたデータ値がフラッシュメモリにアップデートされる場合、データ値を格納する既存ページは内部的に無効（ｉｎｖａｌｉｄ）にフラッグ（ｆｌａｇ）され、アップデートされたデータ値は新しいページに格納される。データが削除される場合、データを格納するページは同じく無効にフラッグされる。無効ページ（ｉｎｖａｌｉｄ  ｐａｇｅｓ）は、ガーベッジコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）と称される工程を通じて復旧される。ガーベッジコレクションは、複数のページを含むブロックレベル（ｂｌｏｃｋ  ｌｅｖｅｌ）で動作する。仮に１つのブロックが完全に空きになる時まで（即ち、ブロック内のすべてのページが無効にフラッグされる時まで）ガーベッジコレクションが待機する場合、ソリッドステートドライブは、データを書き込むことができるフリーページ（ｆｒｅｅ  ｐａｇｅｓ）を有しない。したがって、ガーベッジコレクションの実行は、削除対象ブロックから有効ページ（ｖａｌｉｄ  ｐａｇｅｓ）を他のブロックに移動させることを要求する。
【０００４】
ソリッドステートドライブは、データが到達した順序で到達したデータをページに書き込む。これは、全く関係ないファイルからのデータ（ソリッドステートドライブがマルチクライアントシステムとして使用される場合、全く無関係なクライアントによって使用されるデータ）が、ソリッドステートドライブ上で隣接し得ることを意味する。ソリッドステートドライブは、（従来のハード・ディスク・ドライブとは対照的に）周囲に読出しヘッドを移動させることに関連する待機時間（ｌａｔｅｎｃｙ）を要求しないので、ソリッドステートドライブの読出し及び書込みアクセス時間はデータ書込み戦略によって影響を受けない。
【０００５】
ソリッドステートドライブの他の動作に対するガーベッジコレクション動作の影響を最小化するための方法の必要性は相変わらず残っている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第６１３８２２１号明細書
【特許文献２】米国特許第７２５４６６８号明細書
【特許文献３】米国特許第７５９０６６４号明細書
【特許文献４】米国特許第７８５２８５４号明細書
【特許文献５】米国特許第８１２２２２０号明細書
【特許文献６】米国特許第８１４４５１５号明細書
【特許文献７】米国特許第８７３８８８２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、向上した性能を有するソリッドステートドライブ及びその動作方法並びにソリッドステートドライブに対するロジックを提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた本発明の一態様によるソリッドステートドライブは、受信回路、選択ロジック、及び書込みロジックを備える。受信回路は、第１生存時間を含む第１ストリームのデータを受信し、第１生存時間と異なる第２生存時間を含む第２ストリームのデータを受信する。選択ロジックは、第１生存時間及び第２生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを選択する。書込みロジックは、第１ストリームのデータ及び第２ストリームのデータをソリッドステートドライブのブロックに書き込むことを特徴とする。。
【０００９】
上記目的を達成するためになされた本発明の一態様によるソリッドステートドライブに対するロジックは、ストレージ及び選択ロジックを備える。ストレージは、ソリッドステートドライブのブロックに対するブロックの生存時間のためのものである。選択ロジックは、ブロックの生存時間、第１生存時間、及び第２生存時間に基づいて、第１生存時間を有する第１ストリーム及び第２生存時間を有する第２ストリームの中からブロックに書き込むストリームを選択することを特徴とする。
【００１０】
上記目的を達成するためになされた本発明の一態様によるソリッドステートドライブの動作方法は、ソリッドステートドライブのブロックを識別するステップと、第１生存時間を含む第１ストリームを受信するステップと、第１生存時間と異なる第２生存時間を含む第２ストリームを受信するステップと、第１生存時間及び第２生存時間に基づいてブロックに第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップと、第１ストリーム及び第２ストリームの両方のデータをブロックに書き込むステップと、を有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、向上した性能を有するソリッドステートドライブ及びその動作方法が提供される。
【図面の簡単な説明】
【００１２】
【図１】一般的なシステムで生存時間に連関するストリームのデータを受信するブロックを示す。
【図２】異なる生存時間を有する複数のストリームに連関するデータを受信する図１のブロックの一例を示す。
【図３】異なる生存時間を有する複数のストリームに連関するデータを受信する図１のブロックの一例を示す。
【図４】異なる生存時間を有する複数のストリームに連関するデータを受信する図１のブロックの一例を示す。
【図５】異なる生存時間を有する複数のストリームに連関するデータを受信する図１のブロックの一例を示す。
【図６】図１のブロックが異なる生存時間を有する複数のストリームに連関するデータを受信する他の例を示す。
【図７】図１のブロックが異なる生存時間を有する複数のストリームに連関するデータを受信する他の例を示す。
【図８】図１のブロックが異なる生存時間を有する複数のストリームに連関するデータを受信する他の例を示す。
【図９】図１のブロックが異なる生存時間を有する複数のストリームに連関するデータを受信する他の例を示す。
【図１０】第２次ストリームの一実施形態を示す図である。
【図１１】本発明の一実施形態による異なるストリームのデータを図１のブロックに書き込むソリッドステートドライブを示す構成図である。
【図１２】図１１の選択ロジックの詳細を示す構成図である。
【図１３】図１２の平均書込みサイズ演算器の詳細を示す図である。
【図１４】図１２の平均書込み到達比率演算器の詳細を示す図である。
【図１５】図１２のストリーム選択ロジックの詳細を示す図である。
【図１６】図１１の生存時間演算器の詳細を示す図である。
【図１７】図１１のソリッドステートドライブを含むマシン（ｍａｃｈｉｎｅ）の詳細を示す構成図である。
【図１８】本発明の一実施形態による異なるストリームのデータを図１のブロックに書き込む図１１のソリッドステートドライブの動作を示すフローチャートである。
【図１９】本発明の一実施形態による第２次ストリームを利用して異なるストリームのデータを図１のブロックに書き込む図１１のソリッドステートドライブの動作を示すフローチャートである。
【発明を実施するための形態】
【００１３】
上述した特性及び以下の詳細な説明は、全て本発明の説明及び理解を助けるための例示的な事項である。即ち、本発明は、これらの実施形態に限定されず、他の実施形態で具体化され得る。以下の実施形態は、単に本発明を完全に開示するための例であり、本発明が属する技術分野の通常の知識を有する者に本発明を伝達するためのものである。したがって、本発明の構成要素を具現するための方法が多数ある場合には、これらの方法の中で特定なもの又はこれと同一性があるものの中のいずれも本発明の具現が可能である。
【００１４】
本明細書で第１、第２などの用語は多様な構成要素を説明するために利用されるが、これらの構成要素はこのような用語によって制限されない。これらの用語は単に他の構成要素から１つの構成要素を区別するために利用される。例えば、本発明の技術範囲で第１モジュールは第２モジュールと称され、これと同様に第２モジュールは第１モジュールと称される。
【００１５】
本明細書で所定の構成が特定要素を含むと記載された場合、又は所定の工程が特定段階を含むと記載された場合は、その外の他の要素又は他の段階がさらに含まれることを意味する。即ち、本明細書で使用される用語は特定の実施形態を説明するためのものであり、本発明の概念を限定するものではない。さらに、発明の理解を助けるために説明した例はそれに対する相補的な実施形態も含む。
【００１６】
上述したように、ソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ、ＳＳＤ）は、データをページに書き込む。ページは、順次的にブロックを構成する。データがアップデートされる時、既存データを格納するページは、ランダムアクセスメモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、ＲＡＭ）にコピーされ、修正された後に、ソリッドステートドライブのフリーページに書き込まれる。続いて、元のページは無効（ｉｎｖａｌｉｄ）にマーク（ｍａｒｋ）され、新しいページは有効（ｖａｌｉｄ）にマークされる。
【００１７】
時間が経過するとともに、無効ページの数は増加する。結局、無効ページがガーベッジコレクションの実行を通じて復旧されなければ、ソリッドステートドライブはそれ以上のフリーページを有しないことになる。ガーベッジコレクションは、対象ブロックを識別するステップ、対象ブロック内のすべての有効ページを新しいブロックにコピーするステップ、及び元の対象ブロックを消去するステップを含む。このような有効データ（ｖａｌｉｄ−ｄａｔａ）のコピーには、時間とエネルギーとを要する。その上、フラッシュメモリは制限された回数の書込みのみを支援するので、ガーベッジコレクションはソリッドステートドライブの寿命に負の影響を及ぼす。
【００１８】
フラッシュメモリのガーベッジコレクションは、ストレージ装置の性能（ｐｅｒｆｏｒｍａｎｃｅ）、応答性（ｒｅｓｐｏｎｓｉｖｅｎｅｓｓ）、及び寿命（ｌｉｆｅｓｐａｎ）に相当な影響を及ぼすので、ガーベッジコレクションの効率を最適化するのに役立つ多様な方法が存在する。これらの方法の中の１つは、マルチストリーム（Ｍｕｌｔｉ−ｓｔｒｅａｍ）と称されるものであって、これはコンピューティングシステムがデータ書込み活動（ｄａｔａ  ｗｒｉｔｅ  ａｃｔｉｖｉｔｙ）を分類することを許容する方式である。
【００１９】
マルチストリーミング（Ｍｕｌｔｉ−ｓｔｒｅａｍｉｎｇ）は、データ書込みオペレーション（ｄａｔａ  ｗｒｉｔｅ  ｏｐｅｒａｔｉｏｎｓ）をストリーム（ｓｔｒｅａｍｓ）に結合するためのソリッドステートドライブの動作方法を提供する。データ書込みオペレーションは、予測（ｅｘｐｅｃｔａｔｉｏｎ）に基づく複数のストリームの中のいずれか１つのストリームに連関する。予測は、ストリームに連関するすべてのデータが同様の生存時間（ＴＴＬ：Ｔｉｍｅ−Ｔｏ−Ｌｉｖｅ）を有する。これは、ストレージ装置が、狭く（ｎａｒｒｏｗ）予測可能な（ｐｒｅｄｉｃｔａｂｌｅ）タイムフレーム内で集中的にデータが無効になることを期待して、フラッシュ媒体（Ｆｌａｓｈ  ｍｅｄｉａ）内にデータを共に配置することを可能にする。ガーベッジコレクションされたブロックのいずれの有効データも他のブロックに保存される必要がないので、この配置戦略（ｐｌａｃｅｍｅｎｔ  ｓｔｒａｔｅｇｙ）は、ガーベッジコレクションの動作集中度（ｏｐｅｒａｔｉｏｎａｌ  ｉｎｔｅｎｓｉｖｅｎｅｓｓ）を減少させる。
【００２０】
図１は、一般的なシステムで生存時間に連関するストリームのデータを受信するブロックを示す。図１を参照すると、ストレージ装置は、１つの特定のストリームに対する複数の書込み要請を実行する。一実施形態として、ストレージ装置は、先ず利用可能な未使用ブロックをストリームに割当（ａｓｓｉｇｎｉｎｇ）した後、専用（ｄｅｄｉｃａｔｉｎｇ）させることによって、ストリーム要請（ｓｔｒｅａｍ  ｒｅｑｕｅｓｔｓ）を実行する。その後、ストレージ装置は、提示データ値（ｐｒｅｓｅｎｔｅｄ  ｄａｔａ  ｖａｌｕｅｓ）をブロック内の第１利用可能領域（即ち、ページ）に書き込み、最下位の位置アドレスから始めて上位の位置アドレスに進行させながら、ストリーム要請を実行する。ブロックがいっぱいになった場合、その他のブロックがストリームに割当られ、専用される。その後、ブロックがガーベッジコレクションによって完全にリクレイム（ｒｅｃｌａｉｍｅｄ）されると、同じストリーム又は他のストリームに対する後続割当（ｓｕｂｓｅｑｕｅｎｔ  ａｓｓｉｇｎｍｅｎｔ）のためにブロックは利用可能ブロックプール（Ａｖａｉｌａｂｌｅ−Ｂｌｏｃｋ  ｐｏｏｌ）に返還される。
【００２１】
図１を参照すると、最も早く書き込まれたデータ値（ｅａｒｌｉｅｓｔ−ｗｒｉｔｔｅｎ  ｄａｔａ  ｖａｌｕｅｓ）のストレージ位置（ｓｔｏｒａｇｅ  ｌｏｃａｔｉｏｎｓ）が無効である場合、最も早く書き込まれたデータ値の中の一部は、削除されるか又はアップデートされる。例えば、ブロック１０３は、ストリームに専用されている。ストリーム書込み（１０６、１０９、１１２）は、ページ（１１５、１１８、１２１）に書き込まれている。結局、ページ（１１５、１１８、１２１）は全て無効になる。一方、最も最近のストリーム書込み（１２４、１２７）はページ（１３０、１３３）に書き込まれ、他のページ（１３６、１３９、１４２、１４５）はフリー状態で残される。ページ（１１５、１１８、１２１）からのデータ値がアップデートされた場合、新規にアップデートされた値は、ブロック内のさらに上位アドレス、例えば、ページ（１４８、１５１、１３０、１３３）に置かれる。また、新規値（ｎｅｗ  ｖａｌｕｅ）は、ストリームに割当られ、その後、後続の他の専用ブロックに置かれる。
【００２２】
図１を参照すると、有効ページ（１４８、１５１、１３０、１３３）が、残余の生存時間値（ｒｅｍａｉｎｉｎｇ  ＴＴＬ  ｖａｌｕｅｓ）とともに示されている。これらの値は、ソリッドステートドライブに実際に格納されないが、ページ内のデータが満了することが予測される時までの時間を示す。これらの値は、ストリーム内のデータの生存時間（ＴＴＬ）及び当該データがソリッドステートドライブにどのくらい長く維持されるかに基づいて演算される。例えば、生存時間値１５４は、ページ１４８内のデータが１分で満了すると予測されることを示し、生存時間値１５７は、ページ１５１内データが２分で満了すると予測されることを示し、生存時間値１６０は、ページ１３０内のデータが５９分で満了すると予測されることを示し、生存時間値１６３は、ページ１３３内のデータが６０分で満了すると予測されることを示す。例えば、ストリームが、６０分の生存時間を有する場合に、このような状況が発生する。そして、ブロック１０３の１つのページを占めるデータは、毎分ごとにストリームに到達する。
【００２３】
ブロック１０３がページ１３３で終了する場合、生存時間値１６３を有するページ１３３は、満了するデータを有する最後のページであり、満了に６０分を要する。したがって、ソリッドステートドライブがブロック１０３にガーベッジコレクションの実行を準備する時、ソリッドステートドライブはページ１３３内のデータが満了する時（ページが書き込まれた後６０分）まで待機する。又はソリッドステートドライブは、ブロック１０３から有効データをその他のブロックにコピー（ｃｏｐｙ）してブロック１０３を消去する。
【００２４】
図１に示すように、従来（ｔｒａｄｉｔｉｏｎａｌ）のマルチストリーミングストレージにおいて、単一ブロック（ｓｉｎｇｌｅ  ｂｌｏｃｋ）は、単一ストリーム（ｓｉｎｇｌｅ  ｓｔｒｅａｍ）に連関する。ブロック１０３に書き込まれるデータは、予測可能な生存時間を有する。しかし、ブロックを満たすために要求される時間によって、ブロック１０３のページは「ウェーブ（ｗａｖｅ）」で無効になる。即ち、ブロック１０３内のページは、時間経過とともに順次に満了する。これは、ソリッドステートドライブを「難しい（ｄｉｆｆｉｃｕｌｔ）」位置（ｐｏｓｉｔｉｏｎ）に置く。ソリッドステートドライブは、「自由空間（ｆｒｅｅａｂｌｅ  ｓｐａｃｅ）」の活用が不可能なタイムペナルティー（ｔｉｍｅ  ｐｅｎａｌｔｙ）を経ながら、すべてのデータが満了する時まで待機しなければならない。あるいは、ソリッドステートドライブは、公知のガーベッジコレクションペナルティー（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ  ｐｅｎａｌｔｙ）を経ながら、ブロック１０３にガーベッジコレクションを実行するために、一部の有効ページを他のブロックにコピーしなければならない。
【００２５】
図１は、また、マルチストリーミングストレージ（ｍｕｌｔｉ−ｓｔｒｅａｍｉｎｇ  ｓｔｏｒａｇｅ）無しでソリッドステートドライブがブロックを満たす方式を示す。ソリッドステートドライブがマルチストリーミングストレージ無しで動作する場合、各ページは本質的にランダムな生存時間を有する。そして、ブロック１０３の任意データが満了する時期を予測することは不可能である。ランダムな値を有するシーケンシャルな生存時間値（１５４、１５７、１６０、１６３）を交換（ｅｘｃｈａｎｇｉｎｇ）すること、及びブロック１０３内で有効ページと無効ページとを混合することによって、図１は、従来の非マルチストリーミングストレージ（ｎｏｎ−ｍｕｌｔｉ−ｓｔｒｅａｍｉｎｇ  ｓｔｏｒａｇｅ）を反映する。
【００２６】
しかし、従来のマルチストリーミングシステムは、特定のストリームをストレージブロック（ｓｔｏｒａｇｅ  ｂｌｏｃｋｓ）に割当する反面、ストレージブロックは特定のストリームに割当されることを必要としない。代わりに、全体的な寿命（ｏｖｅｒａｌｌ  ｌｉｆｅｔｉｍｅ）がブロックに割当される。そして、様々な生存時間のストリームのデータが、目的（ａｉｍ）を有してブロックに書き込まれる。その目的とは、ブロック内のデータが、単一（ｓｉｎｇｌｅ）で、定義された時間に満了することを意味する。ストレージ装置の知能（ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ  ｉｎｔｅｌｌｉｇｅｎｃｅ）及び過去のデータ（ｈｉｓｔｏｒｉｃａｌ  ｄａｔａ）を利用して、ソリッドステートドライブは、現在のストリーム（ｃｕｒｒｅｎｔ  ｓｔｒｅａｍ）のデータをブロックに書き込むことを続けるか、又は他のストリーム（ｄｉｆｆｅｒｅｎｔ  ｓｔｒｅａｍ）のデータをブロックの残余ページ（ｒｅｍａｉｎｉｎｇ  ｐａｇｅｓ）に書き込むかの中で、いずれがより効率的であるかを判断する。もちろん、同じロジックが、ブロックの後続に割当てられるストリーム（ｌａｔｅｒ−ａｓｓｉｇｎｅｄ  ｓｔｒｅａｍ）にも適用される。特に、ストレージ装置は、その後、第３ストリームのデータをブロックに書き込むことが第２ストリームのデータをブロックに書き込むことより効率的であるか否かを判断する。もちろん、ブロックから切り離された（ｓｗｉｔｃｈｅｄ  ａｗａｙ）ストリームのデータは、他のブロックに書き込まれるデータを含む。
【００２７】
他の解決策は、「第２次ストリーム（ｓｅｃｏｎｄ−ｏｒｄｅｒ  ｓｔｒｅａｍｓ）」を利用することである。先に記載されたストリームは、第１次ストリーム（ｆｉｒｓｔ−ｏｒｄｅｒ  ｓｔｒｅａｍｓ）として考えられる。即ち、各ストリームは同様の生存時間（ＴＴＬ）特性を有するデータを保有する。但し、第１次ストリームのデータをブロックに書き込む代わりに、第１次ストリームのデータは第２次ストリームに書き込まれる。第２次ストリームは、それ自身の生存時間を有する。そして、第２次ストリームに伝達されたデータは、ブロックに書き込まれる。他の第１次ストリームは、第２次ストリームの寿命がどのくらい残っているかによって、データを第２次ストリームに提供する。本実施形態において、ブロック内でデータのより一貫した満了（ｃｏｎｓｉｓｔｅｎｔ  ｅｘｐｉｒａｔｉｏｎ）を達成しながら、第２次ストリームとソリッドステートドライブのブロックとの間の連関性（ａｓｓｏｃｉａｔｉｏｎ）は維持される。
【００２８】
図２〜図５は、異なる生存時間を有する複数のストリームに連関するデータを受信する図１のブロックの一例を示す。図２〜図５は、複数のストリーム（ｍｕｌｔｉｐｌｅ  ｓｔｒｅａｍｓ）のデータを単一ブロック（ｓｉｎｇｌｅ  ｂｌｏｃｋ）に書き込むことの利点を示す。図２〜図５で、ソリッドステートドライブに対するブロック１０３が１ＭＢの大きさであると仮定する。そして、ソリッドステートドライブは、２つのストリームを受信していると仮定する。ストリーム２０５は、６０分の予測生存時間（ｅｘｐｅｃｔｅｄ  ＴＴＬ）を有し、１度に平均２４ＫＢのデータを書き込み、平均で１分毎に１ファイルを書き込む。ストリーム２１０は、４５分の予測生存時間を有し、１度に平均２５６ＫＢのデータを書き込み、平均で５分毎に１ファイルを書き込む。
【００２９】
図２は、ブロック１０３に書き込まれたすべてのデータが単一ストリームに連関する状況を示す。ストリーム２０５に対するデータの平均的なファイルサイズは２４ＫＢであり、１分毎に１つのファイルの平均書込み到着率（ａｖｅｒａｇｅ  ｗｒｉｔｅ  ａｒｒｉｖｉａｌ  ｒａｔｅ）が与えられる場合、ブロック１０３の１ＭＢ容量を満たすのに大略４５分掛かる。したがって、ブロック１０３が満たされた後、ブロック１０３に書き込まれた最初のデータは、１５分の残余の生存時間値２１５を有する。これと異なり、ブロック１０３に書き込まれた最後のデータは、６０分の残余の生存時間値２２０を有する。そして、ブロック１０３は、合計で１時間４５分間の有効データを有する（最後のデータが書き込まれるまでの４５分に加え、当該データの生存時間として１時間所要）。
【００３０】
仮に、ブロックに最後のデータが追加された後、１時間より前の任意の時点に対象ブロックがガーベッジコレクションを実行するように命令されると、ガーベッジコレクションの間に他のブロックに移動（ｔｒａｎｓｆｅｒ）を要請するブロック内の有効データが依然として存在する。さらに、ソリッドステートドライブがブロックにガーベッジコレクションをより早く実行するほど、ソリッドステートドライブの他のブロックに再配置（ｒｅｌｏｃａｔｅｄ）させる必要があるより多くの有効データが残るようになる。
【００３１】
一方、図３を参照すると、ストリーム２０５は、２２分間だけブロック１０３にデータを書き込む（その時点でブロック１０３は半分が満たされる）。０：２２（０時２２分、以下同様に記載）時点で、書き込まれた最初のデータは、３８分の残余の生存時間値２１５を有する。そして、書き込まれた最後のデータは６０分の残余の生存時間値２２５を有する。
【００３２】
図４に示すように、０：２２時点の後、ブロック１０３はストリーム２１０に連結する。０：２７時点で、ストリーム２１０は、４５分の生存時間値２３０を有するデータを追加しながら、データをブロック１０３に書き込む。生存時間値（２１５、２２５）は、ストリーム２１０がその最初のデータを書き込むために待機する５分が減少する。
【００３３】
最後に、０：３２時点で、ストリーム２１０は、第２ファイルをブロック１０３に書き込む。与えられたストリーム２１０に対する平均書込みサイズ（ａｖｅｒａｇｅ  ｗｒｉｔｅ  ｓｉｚｅ）と書込み到達比率（ｗｒｉｔｅ  ａｒｒｉｖａｌ  ｒａｔｅ）にしたがって、第２ファイルはブロック１０３に全部書き込まれる。この時点で、ストリーム２０５から書き込まれたデータは、残余の生存時間を有する。残余の生存時間は、生存時間値２１５が２８分、生存時間値２２５が５０分に変化する。そして、ストリーム２１０から書き込まれたデータは、生存時間値２３０及び生存時間値２３５が各々４０分及び４５分を有する。０：３２時点で、ブロック１０３は完全に満たされるので、最も長い残余の生存時間２２５を有するデータは、５０分後に満了すると予測される。ブロック１０３は、図２で発生した時点より２３分早い１：２２時点で、ガーベッジコレクションを実行する可能性が高い。その上、より多くのデータが同時に満了する可能性が存在するので、すべてのデータが満了する前にブロック１０３はガーベッジコレクションのための望ましくない候補になる。
【００３４】
より多くのストリーム、フィルレート（ｆｉｌｌ  ｒａｔｅ）のための多数のオプション、生存時間、データサイズ、そして一度にすべての「無効化」ページが向上されるようにブロックを満たすストリームを切り替える能力は重要である。各々の生存時間、平均書込みサイズ、及び平均書込み到達比率を有する複数のストリームが存在し得る。
【００３５】
図６〜図９は、図１のブロックが異なる生存時間を有する複数のストリームに連関するデータを受信する他の例を示す。図６〜図９において、ストリームの間の主要な差異点（ｐｒｉｍａｒｙ  ｄｉｆｆｅｒｅｎｃｅ）は生存時間であるので、同一のデータフィルレート（ｄａｔａ  ｆｉｌｌ  ｒａｔｅ）及び同一の平均書込みサイズ（ａｖｅｒａｇｅ  ｗｒｉｔｅ  ｓｉｚｅ）を有する４つのストリームがあると仮定する。図６〜図９に示す４つのストリームは、各々６０分、４５分、３０分、及び１５分の生存時間値を有する。
【００３６】
図６で、ストリーム３０５は、６０分の生存時間２４０を有するブロック１０３に書き込む。ストリーム３０５は、６０分の生存時間３１０を有する。そして、１５分の時間内に、６０分の最も長い残余の生存時間３１５を有するデータで、ブロック１０３の１／４を満たすように充分なデータが書き込まれる。この時点で、図７に示すように、ソリッドステートドライブは、ストリーム３０５をストリーム３２０に切り替える。ストリーム３２０は、４５分の生存時間を有する。再び、１５分の時間内に、ブロック１０３の他の１／４を満たすようにストリーム３２０から充分なデータが書き込まれる。この時点で、ブロック１０３は、４５分で満了することが予測されるデータ（３１５、３３０）で半分が満たされる。
【００３７】
図８に示すように、ソリッドステートドライブは、ストリーム３３５に切り替える。ストリーム３３５は、３０分の生存時間を有する。再び１５分の時間内に、ストリーム３３５は、ブロック１０３のその他の１／４を満たすために充分なデータを書き込む。この場合、ブロック１０３は、残余の生存時間（３１５、３３０、３４５）が３０分であるデータで３／４が満たされる。この時点で、図９に示すようにソリッドステートドライブは、ストリーム３５０に切り替える。ストリーム３５０は、１５分の生存時間を有する。その後の１５分で、ストリーム３５０は、ブロック１０３を完全に満たすのに充分なデータを書き込む。そして、ブロック１０３のデータ（３１５、３３０、３４５、３６０）は１５分で満了すると予測される。したがって、図６のストリーム３０５から最初のデータがブロック１０３に書き込まれた後に１：１５時点で、ブロック１０３のすべてのデータは満了すると予測される。そして、全体ブロックはガーベッジコレクションされる。
【００３８】
従来のシステムに比べて、図３〜図９の例は、向上したガーベッジコレクション性能を提供する。マルチストリーミングストレージを利用することによって、ブロックは減少する生存時間値を有するデータで順次的に満たされる。ブロックのデータは全体的により速やかに満了する。そして、より多くのデータが同時に満了する傾向を有する。その結果、ガーベッジコレクションが実行される場合、ブロックに対してガーベッジコレクションを実行する前にすべての有効データを他のブロックにコピーする必要が無いので、ブロックは全部満了データを有するようになる。その上、より多くのデータが同時に満了する傾向を有するので、ブロックは、ブロックのすべてのデータが満了する前にガーベッジコレクションが選択されにくくなる。
【００３９】
図３〜図９を比較すると、選択するためのストリームがさらに多くある場合、ブロックのすべてのデータが満了する時までの時間が短く所要される。例えば、図３〜図５で、ブロックのすべてのデータは１：３２時点で満了すると予測される。図６〜図９で、ブロックのすべてのデータは、１：１５時点で満了すると予測される。ブロックがガーベッジコレクションのために選択されにくくなるので、ブロックが依然有効データを有する間にブロックのすべてのデータは大略同様の時点で満了する傾向を有する。
【００４０】
図２〜図５で、２つのストリームがブロック１０３にデータを書き込むために利用される。図６〜図９で、４つのストリームがブロック１０３にデータを書き込むために利用される。しかし、これらの例は、ブロック１０３にデータを書き込むために利用されるすべてのストリームを示すが、本発明の他の実施形態は単に利用可能なストリームのサブセットのみを利用する。例えば、図２〜図９で、ソリッドステートドライブに書き込まれる２０のストリームがあり、これらの中で、いずれかのストリームのみがブロック１０３に書き込まれる。そして、多様なストリームは、制限無しに、異なる生存時間、書込みサイズ、及び書込み到達比率を含む。
【００４１】
ブロックがどのくらい早く最適なガーベッジコレクションの準備ができるかということについては下限（ｌｏｗｅｒ  ｌｉｍｉｔ）が存在する。ブロック１０３に書き込まれた各ページは、それぞれが開始された（ｏｒｉｇｉｎａｔｅｄ）ストリームに応じて各々の生存時間（ＴＴＬ）を有する。最悪の場合、ブロックは、当該ブロックを満たす時間に、ブロックに書き込まれたデータの中で最大の生存時間を併せた時間の間、有効データを有する。さらに正確には、ブロック１０３は一部有効データを下記数式１に示す時間まで保有する。
【００４２】
【数１】
0006713906.tif 000002
【００４３】
早く書き込まれたページが長い生存時間を有し、遅く書き込まれたページが短い生存時間を有する場合、早く書き込まれたページに対する満了時間（ｅｘｐｉｒａｔｉｏｎ  ｔｉｍｅ）は遅く書き込まれたページに対する満了時間よりも遅くなる。しかし、しばしば、ブロック内のすべてのデータに対する満了時間は、ブロックに書き込まれた最後のデータに対する満了時間になる。したがって、１つのブロックを完全に満たすのに１時間が掛かり、最後に書き込まれたデータが１５分の生存時間を有する場合、ブロック内のすべてのデータは、大略１時間１５分で満了すると予測される。
【００４４】
本発明の他の実施形態において、すべての第１次ストリーム（ｆｉｒｓｔ−ｏｒｄｅｒ  ｓｔｒｅａｍｓ）は先に示したように分析される。しかし、ブロックに直接書き込む代わりに、第１次ストリームは、第２次ストリーム（ｓｅｃｏｎｄ−ｏｒｄｅｒ  ｓｔｒｅａｍｓ）の残余時間に基づいて、時間制約を受ける第２次ストリーム（ｔｉｍｅ−ｌｉｍｉｔｅｄ  ｓｅｃｏｎｄ−ｏｒｄｅｒ  ｓｔｒｅａｍｓ）に書き込むようになる。
【００４５】
図１０は、第２次ストリームの一実施形態を示す図である。簡単な場合として、図６〜図９に示したのと同一の第１次ストリームを仮定する。
【００４６】
ストリーム３０５は、６０分の生存時間を有する。
ストリーム３２０は、４５分の生存時間を有する。
ストリーム３３５は、３０分の生存時間を有する。
ストリーム３５０は、１５分の生存時間を有する。
【００４７】
また、６０分の生存時間を有する単一の第２次ストリーム４０５を仮定する。
【００４８】
第２次ストリーム４０５が生成される時、ストリーム３０５からデータが初めに割当される。第２次ストリームの寿命（ｌｉｆｅｓｐａｎ）が４５分に到達すると、第２次ストリーム４０５はストリーム３０５からデータを受信することを中止し、ストリーム３２０からデータを受信することを開始する。同様に、第２次ストリーム４０５の寿命が３０分に到達すると、ストリーム３３５からデータを受信する。そして、寿命が１５分に到達すると、ストリーム３５０からデータを受信する。
【００４９】
このアプローチでは、第２次ストリーム４０５に割当されたブロック１０３は、すべてのデータが１５分以内に無効化されるようにする。全体ブロックの最大寿命は大略１：１５になる。このような動作は、先に示した図６〜図９の実施形態と同様である。データフィルレートが、データの寿命又はブロックの残余サイズ（ｒｅｍａｉｎｉｎｇ  ｓｉｚｅ）に比べて高い事例において、第２次ストリームは多くの柔軟性を提供する。仮に１つのブロックが満了する前に第２次ストリームがそのブロックを満たせば、第２次ストリームは新しいブロックに移動することができる。一方、既存ブロック（ｏｌｄ  ｂｌｏｃｋ）は、大略同一の時期に満了するデータを有するようになる。即ち、第２次ストリームのメカニズムを有し、低寿命（ｌｏｗ−ｌｉｆｅｓｐａｎ）又は寿命の終わりに隣接するブロックを満たす速いフィルレート（ｆａｓｔ−ｆｉｌｌ  ｒａｔｅ）のストリームを探すためのシステムの歪曲（ｓｔｒａｉｎ）は存在しない。満了する第２次ストリームによって満たされない任意のブロックは既にブロックに格納されたデータの残余の生存時間と同様の寿命を有する新しいストリームによって満たされる。
【００５０】
より多くの第１次ストリームを有するほど、より小さい時間単位を得ることができる（これは、ページが他のページのさらに安全な時間内に無効化される傾向を有することを意味する）。
【００５１】
先に示した第１の実施形態のように、多くの第２次ストリームは同時に動作することができる。第１次ストリームの属性にしたがって、他の二次ストリームは異なる寿命を有するように生成される。
【００５２】
ソリッドステートドライブが他のストリームに切り替える時、ソリッドステートドライブは、新しいストリームを選択するために任意の望ましいアルゴリズムを利用する。新しい第１次ストリームを選択するためのアルゴリズムは、ブロックに対する残余の生存時間よりも大きく、同時に最も小さい生存時間を有するストリームを選択する。第１次ストリームを選択するためのアルゴリズムは、第２次ストリームに対する残余の生存時間よりも大きく、且つ最も小さい生存時間を有するストリームを選択する（仮にブロック又は第２次ストリームに対する残余の生存時間よりも大きい生存時間を有するストリームが存在しなければ、最も大きい生存時間を選択する）。したがって、図６に戻れば、ブロック１０３は、６０分の生存時間２４０を有するので、ストリーム３０５が６０分の生存時間２４０を有するようにすることが最高の選択である。図７で、生存時間２４０が４５分に低下する時、本アルゴリズムを利用してストリーム３２０が４５分の生存時間３２５を有するようにすることが最高の選択になる。図８で、生存時間２４０が３０分に低下する時、アルゴリズムを利用してストリーム３３５が３０分の生存時間３４０を有するようにすることが最高の選択になる。図１０の第２次ストリーム４０５に連関する第１次ストリームを選択する時、同じ戦略が適用される。
【００５３】
他の実施形態として、ソリッドステートドライブは、ブロックに対する残余の生存時間に最も近い生存時間を有する第１次ストリームを選択する。したがって、図６に戻れば、６０分の生存時間３１０を有するストリーム３０５は、６０分のブロックの生存時間２４０に最も近い。そして、ストリーム３０５は０：０７．５時点まで維持される。その時間の後に、４５分の生存時間を有するストリーム３２５は残りの５２．５分のブロックの生存時間２４０に最も近い。そして、ストリーム３２０は０：２２．５時点まで維持される。０：２２．５時点で、３０分の生存時間を有するストリーム３３５は残りの３７．５分のブロックの生存時間２４０に最も近い。
【００５４】
図１１は、本発明の一実施形態による異なるストリームのデータを図１のブロックに書き込むソリッドステートドライブを示す構成図である。図１１には、ソリッドステートドライブ５０５が示される。ソリッドステートドライブ５０５は、回路５１０を含む。回路５１０は、情報を送信及び受信するために利用される。例えば、情報はオペレーション（ｏｐｅｒａｔｉｏｎｓ）又はデータである。ソリッドステートドライブ５０５は、ソリッドステートドライブコントローラ５１５（以下、ＳＳＤコントローラ）とフラッシュメモリ５２０とを含む。ＳＳＤコントローラ５１５は、ソリッドステートドライブの動作を制御する。フラッシュメモリ５２０はデータを格納する（即ち、フラッシュメモリ５２０はブロックの中で図１のブロック１０３を格納する）。
【００５５】
ＳＳＤコントローラ５１５は、他の構成要素として、選択ロジック５２５、書込みロジック５３０、及び生存時間演算器（ＴＴＬ演算器）５３５を含む。選択ロジック５２５は、図１のブロック１０３に書き込むために利用されるストリームを選択する。また、選択ロジック５２５は、図１０の第２次ストリーム４０５を割当するために利用されるストリームを選択する。書込みロジック５３０は、データをフラッシュメモリ５２０に書き込む。より具体的に、書込みロジック５３０は、データをフラッシュメモリ５２０のページ、例えば、図１のブロック１０３のページに書き込む。生存時間演算器５３５は、ストリーム又はブロックに対する生存時間（ＴＴＬ）を計算する。この場合のストリームの生存時間は、図２〜図５の生存時間（２４５、２５０）、そして図６〜図９の生存時間（３１０、３２５、３４０、３５５）である。この場合のブロックは、図２〜図９のブロックの生存時間２４０である。
【００５６】
第２次ストリームを利用する本発明の一実施形態において、ＳＳＤコントローラ５１５は、第２次ストリーム生成器５４０を含む。第２次ストリーム生成器５４０は、図１０のブロック１０３に連関する図１０の第２次ストリーム４０５を生成する。
【００５７】
図１２は、図１１の選択ロジックの詳細を示す構成図である。図１２で、選択ロジック５２５は、比較器６０５、平均書込みサイズ演算器６１０、平均書込み到達比率演算器６１５、ストリーム選択ロジック６２０、及びストレージ６２５を含む。ストレージ６２５は、ブロックの生存時間（ＴＴＬ）２４０及び／又は第２次ストリームの生存時間（ＴＴＬ）４１０を格納する（但し、ブロックの生存時間２４０及び第２次ストリームの生存時間４１０は、選択ロジック５２５の外部に格納される）。本実施形態による比較器６０５は、ブロックの生存時間２４０又は第２次ストリームの生存時間４１０を利用して図２〜図５の生存時間（２４５、２５０）及び図６〜図９の生存時間（３１０、３２５、３４０、３５５）のそれぞれのストリームを比較する。比較に基づいて、本実施形態によるストリーム選択ロジック６２０は、どのストリームが図１のブロック１０３に書き込むか又はどのストリームが図１０の第２次ストリーム４０５に割当られるかを選択する。
【００５８】
選択ロジック５２５は、任意の所望の時間に動作する。例えば、選択ロジック５２５は、定期的に（例えば、５分毎に）利用される。又は、新しい書込みオペレーションが図１１のソリッドステートドライブに伝達される時毎に、選択ロジック５２５が利用される。或いは、ブロック生存時間２４０又は第２次ストリーム生存時間４１０が図２〜図５の生存時間（２４５、２５０）又は図６〜図９の生存時間（３１０、３２５、３４０、３５５）より短くなる時毎に、選択ロジック５２５が利用される。この場合、図２〜図５の生存時間（２４５、２５０）又は図６〜図９の生存時間（３１０、３２５、３４０、３５５）は、図１のブロック１０３又は図１０の第２次ストリームに現在書込み中であるストリームを意味する。選択ロジック５２５は、他の情報を反映する。他の情報は、１つのストリームを選択する時の平均書込みサイズ又は各ストリームの平均書込み到達比率である。例えば、図２〜図９に示した６０分の生存時間を有するブロック１０３を考慮する。そして、図２〜図９のブロック１０３が６０ページを含むと仮定する。６０分の生存時間を有し、分毎に１ページを書き込むストリームは、ブロック１０３が１２０分間有効データを保有することを意味する（最後のページが書き込まれる時まで６０分、そしてページが満了する時までの６０分）。しかし、利用可能である他のストリームが１５分の生存時間を有するページを５分毎に書き込み、選択ロジック５２５が０：４５時点に他のストリームに切り替える場合、ブロック１０３を満たすのに１２０分の時間が所要される。さらに、ブロック１０３の最後のデータが満了する前に１５分が加わる。したがって、平均書込みサイズ及び平均書込み到達比率はストリームを変化させる最適の時間に影響を及ぼす。また、選択ロジック５２５を利用するための他のスケジュールが制限無しで利用される。
【００５９】
図１３は、図１２の平均書込みサイズ演算器の詳細を示す図である。図１３で、平均書込みサイズ演算器６１０は、与えられたストリームの書込みオペレーション（１０６、１０９、１１２、１２４、１２７）に対する情報を受信する。そして、平均書込みサイズ演算器６１０は、それらの書込みに対する平均書込みサイズ７０５を演算する（即ち、実行された書込みオペレーションの回数によって分割された書き込みデータ量の合計を意味する）。先に説明したように、、平均書込みサイズ演算器６１０は、ストリームに対するすべての利用可能な情報、ストリームに対する最も最近のｎ個の書込みオペレーション、ストリームに対する最後のｎ個の書込みオペレーションの中で最も早いｋ個若しくは最後のｔ分間に発生したストリームに対する書込みオペレーション、又はストリームに対する書込みオペレーションを選択するために任意の望ましいアプローチを利用する。
【００６０】
図１４は、図１２の平均書込み到達比率演算器の詳細を示す図である。図１４において、平均書込み到達比率演算器６１５は、与えられたストリームの書込みオペレーション（１０６、１０９、１１２、１２４、１２７）に対する情報を受信する。そして、平均書込み到達比率演算器６１５は、それらの書き込みに対する平均書込み到達比率８０５を演算する（即ち、その間隔（ｉｎｔｅｒｖａｌ）で実行された書込みオペレーションの回数によって分割された最初と最後の書込みオペレーションとの間の時間量を意味する）。先に説明したように、、平均書込み到達比率演算器６１５は、ストリームに対するすべての利用可能な情報、ストリームに対する最も最近のｎ個の書込みオペレーション、ストリームに対する最後のｎ個の書込みオペレーションの中で最も早いｋ個若しくは最後のｔ分内に発生したストリームに対する書込みオペレーション、又はストリームに対する書込みペレーションを選択するために任意の他の望ましいアプローチを利用する。
【００６１】
図１５は、図１２のストリーム選択ロジックの詳細を示す図である。図１５で、ストリーム選択ロジック６２０は、多様な情報を受信する。多様な情報は、例えば、図２〜図９のブロックの生存時間２４０、図２〜図５のストリーム（２０５、２１０）の生存時間（２４５、２５０）、図６〜図９のストリーム（３０５、３２０、３３５、３５０）の生存時間（３１０、３２５、３４０、３５５）、各ストリームに対する平均書込みサイズ７０５、及び各ストリームに対する平均書込み到達比率８０５である。ストリーム選択ロジック６２０は、図３〜図９のブロック１０３に書き込むストリーム９０５を選択するためにこのような情報を利用する。ストリーム選択ロジック６２０は、図３〜図９のブロック１０３、又は図１０の第２次ストリーム４０５に書き込むストリーム９０５を選択するための任意の望ましい戦略を利用する。例えば、ストリーム選択ロジック６２０は、図２〜図９のブロック１０３に対する残余の生存時間よりも短く、且つその中で最も高い生存時間を有するストリームを選択する。また、ストリーム選択ロジック６２０は、例示的に先の図２〜図５を参照して、データ満了を最適化するためにストリームを切り替える時点を演算する。また、ストリーム選択ロジック６２０は、他の選択戦略を利用する。先に説明したように、ストリーム選択ロジック６２０は、ストリームを選択するために提供されたすべての情報又は情報の中の一部を利用する。本実施形態によれば、ストリーム選択ロジック６２０が図１５に示したすべての情報を利用しない場合、ストリーム選択ロジック６２０は図１５に示したすべての情報が提供される必要は無い。
【００６２】
図１６は、図１１の生存時間演算器の詳細を示す図である。図１６で、生存時間演算器５３５は、与えられたストリームの書込みオペレーション（１０６、１０９、１１２、１２４、１２７）に対する情報を受信する。そして、生存時間演算器５３５は、これらのストリームに対する生存時間（３１０、３２５、３４０、３５５）を演算する（即ち、データが書き込まれた時期とデータが変更されるか又は削除された時期との間の持続時間を測定し、その後、これらの持続時間を加算し，影響を受けたページの個数で分割する）。先に説明したように、生存時間演算器５３５は、ストリームに対するすべての利用可能な情報、ストリームに対する最も最近のｎ個の書込みオペレーション、ストリームに対する最後のｎ個の書込みオペレーションの中で最も先のｋ個若しくは最後のｔ分間に発生したストリームに対する書込みオペレーション、又はストリームに対する書込みオペレーションを選択するための任意の他の望ましいアプローチを利用する。
【００６３】
図１７は、図１１のソリッドステートドライブを含むマシン（ｍａｃｈｉｎｅ）の詳細を示す構成図である。図１７を参照すると、マシン（又は複数のマシン）１１０５は、少なくとも１つのプロセッサ１１１０を含む。少なくとも１つのプロセッサ１１１０は、メモリコントローラ１１１５及びクロック１１２０を含む。クロック１１２０は、マシン１１０５の構成要素のオペレーションを調整（ｃｏｏｒｄｉｎａｔｅ）するために利用される。例えば、プロセッサ１１１０は、メモリ１１２５としてランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、又は他の状態保存媒体（ｏｔｈｅｒ  ｓｔａｔｅ  ｐｒｅｓｅｒｖｉｎｇ  ｍｅｄｉａ）を含む。プロセッサ１１１０は、ストレージ装置５０５及びネットワークコネクター１１３０に連結される。例えば、ネットワークコネクター１１３０は、イーサーネット（登録商標）コネクターである。プロセッサ１１１０は、バス１１３５に連結される。バス１１３５は、他の構成要素との間でユーザーインターフェイス１１４０及び入出力エンジン１１４５を利用して管理される入出力インターフェイスポートに連結される。
【００６４】
図１８は、本発明の一実施形態による異なるストリームのデータを図１のブロックに書き込む図１１のソリッドステートドライブの動作を示すフローチャートである。図１８を参照すると、ステップＳ１２０５で、図１１のソリッドステートドライブ５０５は、図１のブロック１０３を識別する。ステップＳ１２１０で、図１１のソリッドステートドライブ５０５は、図２〜図９の生存時間２４０を図１のブロック１０３に連関させる。ステップＳ１２１５で、図１１のソリッドステートドライブ５０５は、図２〜図５のストリーム（２０５、２１０）と図６〜図９のストリーム（３０５、３２０、３３５、３５０）とを受信する。ステップＳ１２２０で、図１１のソリッドステートドライブ５０５は、図１のブロック１０３に書き込むストリーム９０５を選択する。ステップＳ１２２５で、図１１のソリッドステートドライブ５０５は、選択されたストリーム９０５のデータを図１のブロック１０３に書き込む。破線Ｓ１２３０で示すように、図１８のフローチャートは、より遅い時点で図１１のソリッドステートドライブが図１のブロック１０３に書き込む他のストリームを選択可能なように選択的にステップＳ１２２０に戻ることができる。
【００６５】
図１９は、本発明の一実施形態による第２次ストリームを利用して異なるストリームのデータを図１のブロックに書き込む図１１のソリッドステートドライブの動作を示すフローチャートである。図１９を参照すると、ステップＳ１３０５で、図１１のソリッドステートドライブ５０５は、図１のブロック１０３を識別する。ステップＳ１３１０で、図１１のソリッドステートドライブ５０５は、図１０の第２次ストリーム４０５を生成する。ステップＳ１３１５で、図１１のソリッドステートドライブ５０５は、図１０の生存時間４１０を図１０の第２次ストリーム４０５に割当する。ステップＳ１３２０で、図１１のソリッドステートドライブ５０５は、図２〜図５のストリーム（２０５、２１０）を受信するか又は図６〜図９のストリーム（３０５、３２０、３３５、３５０）を受信する。ステップＳ１３２５で、図１１のソリッドステートドライブ５０５は、図１０の第２次ストリーム４０５に割当するストリーム９０５を選択する。ステップＳ１３３０で、図１１のソリッドステートドライブ５０５は、選択されたストリーム９０５のデータを図１０の第２次ストリーム４０５に書き込む。ステップＳ１３３５で、図１１のソリッドステートドライブ５０５は、図１０の第２次ストリーム４０５のデータを図１のブロック１０３に書き込む。破線Ｓ１３４０で示すように、図１９のフローチャートは、より遅い時点で図１１のソリッドステートドライブ５０５が図１０の第２次ストリーム４０５に書き込む他のストリームを選択可能なように選択的にステップＳ１３２５に戻ることができる。
【００６６】
以下の説明は、本発明の概念の特定な観点で具現される好適なマシン（ｍａｃｈｉｎｅ）又は複数のマシン（ｍａｃｈｉｎｅｓ）の簡略かつ一般的な説明を提供するものである。マシン（ｍａｃｈｉｎｅ）又は複数のマシン（ｍａｃｈｉｎｅｓ）の少なくとも一部は、他の装置から受信した指示（ｄｉｒｅｃｔｉｖｅｓ）のみでなく、キーボード、マウスのような通常の入力装置からの入力（ｉｎｐｕｔ）によって制御される。装置又は複数の装置の少なくとも一部は、仮想現実（ＶＲ：ｖｉｒｔｕａｌ  ｒｅａｌｉｔｙ）環境との相互作用、バイオフィードバック（ｂｉｏ  ｆｅｅｄｂａｃｋ）、又は他の入力信号によっても制御される。本明細書で使用される用語である「マシン（ｍａｃｈｉｎｅ）」は、単一マシン（ｓｉｎｇｌｅ  ｍａｃｈｉｎｅ）、仮想マシン（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）、又は通信接続されたマシンのシステム（ａ  ｓｙｓｔｅｍ  ｏｆ  ｃｏｍｍｕｎｉｃａｔｉｖｅｌｙ  ｃｏｕｐｌｅｄ  ｍａｃｈｉｎｅｓ）、仮想マシン（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）、又は共に動作する装置を広く含むことを意図している。例示的な複数のマシンは、コンピューティング装置（ｃｏｍｐｕｔｉｎｇ  ｄｅｖｉｃｅｓ）及び輸送装置（ｔｒａｎｓｐｏｒｔａｔｉｏｎ  ｄｅｖｉｃｅｓ）を含む。例えば、コンピューティング装置は、パーソナルコンピュータ、ワークステーション、サーバー、携帯用コンピュータ、携帯用装置、携帯電話、タブレット等である。例えば、輸送装置は、個人又は公共交通手段（例えば、自動車、汽車、タクシー等）である。
【００６７】
マシン（ｍａｃｈｉｎｅ）又は複数のマシン（ｍａｃｈｉｎｅｓ）は、埋め込み型コントローラ（ｅｍｂｅｄｄｅｄ  ｃｏｎｔｒｏｌｌｅｒｓ）を含む。例えば、埋め込み型コントローラは、プログラム可能な（又はプログラム不可能な）ロジックディバイス又はアレイ、特定用途向け半導体（ＡＳＩＣｓ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）、埋め込み型コンピュータ（ｅｍｂｅｄｄｅｄ  ｃｏｍｐｕｔｅｒｓ）、スマートカード（ｓｍａｒｔ  ｃａｒｄｓ）、及びこれと類似なものである。ネットワークインターフェイス（ｎｅｔｗｏｒｋ  ｉｎｔｅｒｆａｃｅ）、モデム又は他の通信連結（ｃｏｍｍｕｎｉｃａｔｉｖｅ  ｃｏｕｐｌｉｎｇ）を通じて、マシン（ｍａｃｈｉｎｅ）又は複数のマシン（ｍａｃｈｉｎｅｓ）は１つ以上の遠隔マシン（ｒｅｍｏｔｅ  ｍａｃｈｉｎｅｓ）に対して１つ以上の接続（ｃｏｎｎｅｃｔｉｏｎｓ）を利用する。マシン（ｍａｃｈｉｎｅｓ）は、インターネット、近距離ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）、広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）等のような物理的な及び／又は論理的なネットワークを通じて相互接続される。通常の技術者には、ネットワーク通信が多様な有線及び／又は無線近距離又は長距離キャリヤー（ｃａｒｒｉｅｒｓ）及びプロトコルを利用できることが理解される。この場合、多様な有線及び／又は無線近距離又は長距離キャリヤー及びプロトコルは、無線周波数（ｒａｄｉｏ  ｆｒｅｑｕｅｎｃｙ）、衛星（ｓａｔｅｌｌｉｔｅ）、マイクロ波（ｍｉｃｒｏｗａｖｅ）、米国電気電子学会（ＩＥＥＥ）８０２．１１、ブルートゥース（登録商標）等である。
【００６８】
本発明による実施形態は、機能（ｆｕｎｃｔｉｏｎｓ）、手続（ｐｒｏｃｅｄｕｒｅｓ）、データ構造（ｄａｔａ  ｓｔｒｕｃｔｕｒｅｓ）、応用プログラム（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｓ）等を含む関連データ（ａｓｓｏｃｉａｔｅｄ  ｄａｔａ）を共に参照して説明される。この場合、関連データは、マシンによってアクセスされる時、タスク（ｔａｓｋｓ）を遂行するか、或いは抽象データ形式（ａｂｓｔｒａｃｔ  ｄａｔａ  ｔｙｐｅｓ）又はローレベルのハードウェアコンテキスト（ｌｏｗ−ｌｅｖｅｌ  ｈａｒｄｗａｒｅ  ｃｏｎｔｅｘｔｓ）を定義するマシン駆動の結果にしたがうものである。例えば、関連データは、揮発性及び／又は不揮発性メモリ（例えば、ＲＡＭ、ＲＯＭ等）又は他のストレージ装置及び関連格納媒体（ａｓｓｏｃｉａｔｅｄ  ｓｔｏｒａｇｅ  ｍｅｄｉａ）に格納される。例えば、関連格納媒体は、ハードディスクドライブ、フロッピーディスク（登録商標）、光学格納装置（ｏｐｔｉｃａｌ  ｓｔｏｒａｇｅ）、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生物学的格納装置（ｂｉｏｌｏｇｉｃａｌ  ｓｔｏｒａｇｅ）等を含む。関連データは、伝送環境（ｔｒａｎｓｍｉｓｓｉｏｎ  ｅｎｖｉｒｏｎｍｅｎｔｓ）を通じて伝達される。例えば、伝送環境は、パケット形式、直列データ形式、並列データ形式、伝搬信号形式（ｆｏｒｍ  ｏｆ  ｐｒｏｐａｇａｔｅｄ  ｓｉｇｎａｌｓ）等を有する物理及び／又は論理ネットワークを含む。また、関連データは、圧縮（ｃｏｍｐｒｅｓｓｅｄ）されるか又は暗号化（ｅｎｃｒｙｐｔｅｄ）されたフォーマットで使用される。関連データは、分散環境（ｄｉｓｔｒｉｂｕｔｅｄ  ｅｎｖｉｒｏｎｍｅｎｔ）で使用され、マシンアクセス（ｍａｃｈｉｎｅ  ａｃｃｅｓｓ）のためにローカル的に及び／又は遠隔的に格納される。
【００６９】
本発明の実施形態は、１つ以上のプロセッサによって実行される指示語（ｉｎｓｔｒｕｃｔｉｏｎｓ）を含む類型の（ｔａｎｇｉｂｌｅ）非一時的な（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）マシン−読出し可能媒体（ｍａｃｈｉｎｅ−ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を含む。このような指示語は、本明細書に記載した本発明の構成要素を実行するための指示語を含む。
【００７０】
上述した実施形態を参照して本発明の概念の原理を説明した。上述の実施形態は、このような原理から逸脱することなく、配置及び詳細において変形されることができ、任意の方法で組み合せることができる。そして、上述した論議は特定の実施形態に集中したが、他の構成が考慮される。特に、「本発明の一実施形態において」又はこれと類似の表現が本明細書で使用されたが、このような記載は一般的に実施可能性を参照するためのものであり、本発明の概念を特定の実施形態の構成に限定するものではない。本明細書で使用したこれらの用語は、他の実施形態に結合される同一又は他の実施形態を参照する。
【００７１】
上述した実施形態は、本発明の概念を制限するものとして解釈されない。幾つの実施形態が説明されたが、通常の技術者はこれらの実施形態に対して実質的に新規な教示及び本発明の長所から逸脱しないで、多くの変形が可能であることを容易に理解する。したがって、このようなすべての変形は請求の範囲に記載された本発明の概念の範囲内に含まれる。
【００７２】
本発明の実施形態は、制限無しに下記のステートメントに拡張することができる。
【００７３】
第１ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第１生存時間を含む第１ストリームのデータを受信し、第１生存時間と異なる第２生存時間を含む第２ストリームのデータを受信する受信回路、第１生存時間及び第２生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを選択する選択ロジック、及びソリッドステートドライブのブロックに第１ストリーム及び第２ストリームのデータを書き込む書込みロジックを備える。
【００７４】
第２ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第１ステートメントのソリッドステートドライブを含み、ブロックに第１ストリーム及び第２ストリームの中のいずれか１つのストリームのデータのみが書き込まれている場合よりも早く、ブロックに格納された全てのデータが満了することを予測する。
【００７５】
第３ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第１ステートメントのソリッドステートドライブを含み、選択ロジックは、第１生存時間及び第２生存時間に基づいて第１時点にブロックに書き込む第１ストリームを選択し、第１生存時間及び第２生存時間に基づいて第２時点にブロックに書き込む第２ストリームを選択するように動作する。
【００７６】
第４ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第１ステートメントのソリッドステートドライブを含み、選択ロジックは、第１生存時間及び第２生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを周期的に選択するように動作する。
【００７７】
第５ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第１ステートメントのソリッドステートドライブを含み、受信回路が第１ストリーム又は第２ストリームのデータを受信する時、選択ロジックは、第１生存時間及び第２生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを選択するように動作する。
【００７８】
第６ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第１ステートメントのソリッドステートドライブを含み、選択ロジックは、第１生存時間及び第２生存時間をブロックに連関するブロック生存時間と比較する比較器を含む。
【００７９】
第７ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第１ステートメントのソリッドステートドライブを含み、選択ロジックは、第１ストリームに連関する書込みオペレーションに対する第１平均書込みサイズ及び第２ストリームに連関する書込みオペレーションに対する第２平均書込みサイズを演算する平均書込みサイズ演算器と、第１ストリームに対する第１平均書込み到達比率及び第２ストリームに対する第２平均書込み到達比率を演算する平均書込み到達比率演算器と、を含む。
【００８０】
第８ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第７ステートメントのソリッドステートドライブを含み、選択ロジックは、第１生存時間、第２生存時間、第１平均書込みサイズ、第１平均書込み到達比率、第２平均書込みサイズ、及び第２平均書込み到達比率の中の少なくとも２つに基づいてソリッドステートドライブのブロックに書き込むストリームを選択する。
【００８１】
第９ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第７ステートメントのソリッドステートドライブを含み、第１ストリームに対する第１生存時間及び第２ストリームに対する第２生存時間を演算する生存時間演算器をさらに含む。
【００８２】
第１０ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第１ステートメントのソリッドステートドライブを含み、第２次ストリームを生成する第２次ストリーム生成器をさらに含み、選択ロジックは、第１ストリーム及び第２ストリームの中から第２次ストリームに書き込むストリームを選択するストリーム選択ロジックを含み、書込みロジックは、第２次ストリームをブロックに書き込むように動作する。
【００８３】
第１１ステートメントで、本発明の一実施形態によるソリッドステートドライブは、第１ステートメントのソリッドステートドライブを含み、選択ロジックは、第１ストリーム、第２ストリーム、及び第３生存時間を含む第３ストリームのデータを受信する受信回路と、第１生存時間、第２生存時間、及び第３生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを選択するように動作する選択ロジックと、ソリッドステートドライブのブロックに第１ストリーム、第２ストリーム、及び第３ストリームのデータを書き込む書込みロジックと、を含む。
【００８４】
第１２ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、ソリッドステートドライブのブロックに対するブロックの生存時間のためのストレージと、ブロックの生存時間、第１生存時間、及び第２生存時間に基づいて、第１生存時間を有する第１ストリーム及び第２生存時間を有する第２ストリームの中からブロックに書き込むストリームを選択する選択ロジックと、を含む。
【００８５】
第１３ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第１２ステートメントのソリッドステートドライブに対するロジックを含み、ブロックに第１ストリーム及び第２ストリームの中のいずれか１つのストリームのデータのみが書き込まれている場合よりも早く、ブロックに格納された全てのデータが満了することを予測する。
【００８６】
第１４ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第１２ステートメントのソリッドステートドライブに対するロジックを含み、選択ロジックは、ブロックの生存時間、第１生存時間、及び第２生存時間に基づいて第１時点にブロックに書き込む第１ストリームを選択し、ブロックの生存時間、第１生存時間、及び第２生存時間に基づいて第２時点にブロックに書き込む第２ストリームを選択するように動作する。
【００８７】
第１５ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第１２ステートメントのソリッドステートドライブに対するロジックを含み、選択ロジックは、ブロックの生存時間、第１生存時間、及び第２生存時間に基づいてソリッドステートドライブのブロックに書き込むストリームを周期的に選択するように動作する。
【００８８】
第１６ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第１２ステートメントのソリッドステートドライブに対するロジックを含み、ソリッドステートドライブが第１ストリーム又は第２ストリームのデータを受信する時、選択ロジックは、ブロックの生存時間、第１生存時間、及び第２生存時間に基づいてソリッドステートドライブのブロックにどのストリームを書き込むかを選択するように動作する。
【００８９】
第１７ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第１２ステートメントのソリッドステートドライブに対するロジックを含み、選択ロジックは、第１生存時間及び第２生存時間をブロックの生存時間と比較する比較器を含む。
【００９０】
第１８ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第１２ステートメントのソリッドステートドライブに対するロジックを含み、選択ロジックは、第１ストリームに連関する書込みオペレーショに対する第１平均書込みサイズ及び第２ストリームに連関する書込みオペレーショに対する第２平均書込みサイズを演算する平均書込みサイズ演算器と、第１ストリームに対する第１平均書込み到達比率及び第２ストリームに対する第２平均書込み到達比率を演算する平均書込み到達比率演算器と、を含む。
【００９１】
第１９ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第１８ステートメントのソリッドステートドライブに対するロジックを含み、選択ロジックは、ブロックの生存時間、第１生存時間、第２生存時間、第１平均書込みサイズ、第１平均書込み到達比率、第２平均書込みサイズ、及び第２平均書込み到達比率の中の少なくとも２つに基づいてソリッドステートドライブのブロックに書き込むストリームを選択するように動作する。
【００９２】
第２０ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第１２ステートメントのソリッドステートドライブに対するロジックを含み、第１ストリームに対する第１生存時間及び第２ストリームに対する第２生存時間を演算する生存時間演算器をさらに含む。
【００９３】
第２１ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第１２ステートメントのソリッドステートドライブに対するロジックを含み、第２次ストリームを生成する第２次ストリーム生成器をさらに含み、選択ロジックは、第１ストリーム及び第２ストリームの中から第２次ストリームに書き込むストリームを選択するストリーム選択ロジックを含み、第２次ストリームはブロックに書き込まれる。
【００９４】
第２２ステートメントで、本発明の一実施形態によるソリッドステートドライブに対するロジックは、第１２ステートメントによるソリッドステートドライブに対するロジックを含み、選択ロジックは、ブロックの生存時間、第１生存時間、第２生存時間、及び第３生存時間に基づいて第１生存時間を有する第１ストリーム、第２生存時間を有する第２ストリーム、及び第３生存時間を有する第３ストリームの中からブロックに書き込むストリームを選択するように動作する。
【００９５】
第２３ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、ソリッドステートドライブのブロックを識別するステップと、第１生存時間を含む第１ストリームを受信するステップと、第１生存時間と異なる第２生存時間を含む第２ストリームを受信するステップと、第１生存時間及び第２生存時間に基づいてブロックに第１ストリーム又は前記第２ストリームのいずれを書き込むかを選択するステップと、第１ストリーム及び第２ストリームの両方のデータをブロックに書き込むステップと、を有する。
【００９６】
第２４ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第２３ステートメントの動作方法を含み、ソリッドステートドライブは、ブロックに第１ストリーム及び第２ストリームの中のいずれか１つのストリームのデータのみが書き込まれている場合よりも早く、ブロックに格納された全てのデータが満了することを予測する。
【００９７】
第２５ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第２３ステートメントの動作方法を含み、ブロックに第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップは、第１生存時間及び第２生存時間に基づいて第１時点に第１ストリームをブロックに書き込むように選択するステップと、第１生存時間及び第２生存時間に基づいて第２時点に第２ストリームをブロックに書き込むように選択するステップと、を含む。
【００９８】
第２６ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第２３ステートメントの動作方法を含み、ブロックに第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップは、第１生存時間及び第２生存時間に基づいて第１ストリーム又は第２ストリームのいずれをブロックに書き込むかを周期的に選択するステップを含む。
【００９９】
第２７ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第２３ステートメントの動作方法を含み、ブロックに第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップは、第１ストリーム又は第２ストリームのデータがソリッドステートドライブ書き込まれる時毎に、第１生存時間又は第２生存時間に基づいて第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップを含む。
【０１００】
第２８ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第２３ステートメントの動作方法を含み、ブロックに第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップは、第１生存時間、第２生存時間、第１ストリームに対する第１平均書込みサイズ、第２ストリームに対する第２平均書込みサイズ、第１ストリームに対する第１平均書込み到達比率、及び第２ストリームに対する第２平均書込み到達比率の中の少なくとも２つに基づいてブロックに第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップを含む。
【０１０１】
第２９ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第２３ステートメントの動作方法を含み、ソリッドステートドライブのブロックを識別するステップは、ブロックの生存時間をブロックに連関させるステップを含む。
【０１０２】
第３０ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第２９ステートメントの動作方法を含み、ブロックに第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップは、第１生存時間、第２生存時間、及びブロックの生存時間に基づいてブロックに第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップを含む。
【０１０３】
第３１ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第３０ステートメントの動作方法を含み、ブロックに第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップは、第１生存時間又は第２生存時間の中のブロックの生存時間により近い生存時間に基づいて第１ストリーム又は第２ストリームの中からブロックに書き込むストリームを選択するステップを含む。
【０１０４】
第３２ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第２３ステートメントの動作方法を含み、第２次ストリームを生成するステップと、第２次ストリームをブロックに連関させるステップと、をさらに含み、ブロックに第１次ストリーム又は第２次ストリームのいずれを書き込むかを選択するステップは、第１ストリーム及び第２ストリームのデータの中から第２次ストリームに割当するデータを選択するステップを含む。
【０１０５】
第３３ステートメントで、本発明の一実施形態によるソリッドステートドライブの動作方法は、第２３ステートメントの動作方法を含み、第１生存時間及び第２生存時間と異なる第３生存時間を含む第３ストリームを受信するステップをさらに含み、ブロックに第１ストリーム又は第２ストリームのいずれを書き込むかを選択するステップは、第１生存時間、第２生存時間、及び第３生存時間に基づいて第１ストリーム、第２ストリーム、又は第３ストリームの中からブロックに書き込むストリームを選択するステップを含み、第１ストリーム及び第２ストリームの両方のデータをブロックに書き込むステップは、第１ストリームのデータ、第２ストリームのデータ、及び第３ストリームのデータをブロックに書き込むステップを含む。
【０１０６】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【０１０７】
１０３    ブロック
１０６、１０９、１１２、１２４、１２７    ストリーム書込み（オペレーション）
１１５、１１８、１２１    （無効）ページ
１３０、１３３、１４８、１５１    （有効）ページ
１３６、１３９、１４２、１４５    ページ
１５４、１５７、１６０、１６３    生存時間値
２０５、２１０、３０５、３２０、３３５、３５０    ストリーム
２１５、２２０、２２５、２３０、２３５、３１５、３３０、３４５、３６０    （残余の）生存時間値
２４０    （ブロックの）生存時間（ＴＴＬ）      
２４５、２５０、３１０、３２５、３４０、３５５    生存時間（ＴＴＬ）
４０５    第２次ストリーム
４１０    第２次ストリームの生存時間（ＴＴＬ）
５０５    ソリッドステートドライブ（ＳＳＤ）
５１０    回路
５１５    ＳＳＤコントローラ
５２０    フラッシュメモリ
５２５    選択ロジック
５３０    書込みロジック
５３５    生存時間演算器（ＴＴＬ演算器）
５４０    第２次ストリーム生成器
６０５    比較器
６１０    平均書込みサイズ演算器
６１５    平均書込み到達比率演算器
６２０    ストリーム選択ロジック
６２５    ストレージ       
７０５    平均書込みサイズ
８０５    平均書込み到達比率
９０５    選択されたストリーム
１１０５    マシン
１１１０    プロセッサ
１１１５    メモリコントローラ
１１２０    クロック
１１２５    メモリ
１１３０    ネットワークコネクター
１１３５    バス
１１４０    ユーザーインターフェイス
１１４５    入出力エンジン
【図１】
0006713906.tif 000003
【図２】
0006713906.tif 000004
【図３】
0006713906.tif 000005
【図４】
0006713906.tif 000006
【図５】
0006713906.tif 000007
【図６】
0006713906.tif 000008
【図７】
0006713906.tif 000009
【図８】
0006713906.tif 000010
【図９】
0006713906.tif 000011
【図１０】
0006713906.tif 000012
【図１１】
0006713906.tif 000013
【図１２】
0006713906.tif 000014
【図１３】
0006713906.tif 000015
【図１４】
0006713906.tif 000016
【図１５】
0006713906.tif 000017
【図１６】
0006713906.tif 000018
【図１７】
0006713906.tif 000019
【図１８】
0006713906.tif 000020
【図１９】
0006713906.tif 000021