(57)【要約】【課題】マルチストリームが可能なソリッドステートドライブ（ＳＳＤ）並びにそのためのドライバー及びデータストリームの統合方法を提供する。【解決手段】本発明のＳＳＤは、データを格納するフラッシュメモリと、ＳＳＤ内の複数の装置ストリームのための支援手段と、複数のコマンドに応答してフラッシュメモリに対するデータの書込み及び読出しを管理するＳＳＤコントローラと、ホストインターフェイスロジックと、を備え、ホストインターフェイスロジックは、ホストから複数のソフトウェアストリームに関連する複数のコマンドを受信する受信機と、ウインドウの時間を測定するタイマーと、複数のコマンドに応答して、ウインドウの間に複数のソフトウェアストリームの各々に対して１つの基準に対する１つの値を決定する統計コレクターと、複数のソフトウェアストリームの各々に対して１つの基準に対する１つの値に従って複数のソフトウェアストリームを等級決定するランカーと、マッピングを構成するマッパーと、を含む。【選択図】図４
2018073412.tif 000002
【特許請求の範囲】
【請求項１】
ソリッドステートドライブ（ＳＳＤ）であって、
データを格納するフラッシュメモリと、
前記ＳＳＤ内の複数の装置ストリームのための支援手段と、
複数のコマンドに応答して前記フラッシュメモリへのデータの書込み及び前記フラッシュメモリからのデータの読出しを管理するＳＳＤコントローラと、
ホストインターフェイスロジックと、を備え、
前記ホストインターフェイスロジックは、
ホストから複数のソフトウェアストリームに関連する前記複数のコマンドを受信する受信機と、
ウインドウの時間を測定するタイマーと、
前記複数のコマンドに応答して、前記ウインドウの間に前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する統計コレクターと、
前記複数のソフトウェアストリームの各々に対して前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定するランカーと、
前記複数のソフトウェアストリームの第１サブセット内の各ソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の固有装置ストリームにマッピングし、前記複数のソフトウェアストリームの第２サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の統合装置ストリームにマッピングするマッパーと、を含むことを特徴とするソリッドステートドライブ。
【請求項２】
前記ＳＳＤは、前記複数のソフトウェアストリームから追加的な複数のコマンド受信し、前記マッピングに従って前記追加的な複数のコマンドを前記複数の装置ストリームに割当することを特徴とする請求項１に記載のソリッドステートドライブ。
【請求項３】
前記ウインドウは、スライディングウインドウであり、
前記統計コレクターは、前記複数のコマンドの各々が前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の前記少なくとも１つの基準に対する少なくとも１つの値を調整することを特徴とする請求項１に記載のソリッドステートドライブ。
【請求項４】
前記ウインドウは、不連続ウインドウ（ｄｉｓｃｒｅｔｅ  ｗｉｎｄｏｗ）であることを特徴とする請求項１に記載のソリッドステートドライブ。
【請求項５】
前記複数のソフトウェアストリームの第１サブセットは、最上位等級を有する複数のソフトウェアストリームを含み、
前記最上位等級を有する複数のソフトウェアストリームの数は、前記複数の装置ストリームの数よりも１つ少なく、
前記複数のソフトウェアストリームの第２サブセットは、前記複数のソフトウェアストリームの第１サブセットに含まれない全てのソフトウェアストリームを含むことを特徴とする請求項１に記載のソリッドステートドライブ。
【請求項６】
前記統計コレクターは、前記複数のソフトウェアストリームの各々に対して第１基準に対する第１値及び第２基準に対する第２値を決定することを特徴とする請求項１に記載のソリッドステートドライブ。
【請求項７】
前記ランカーは、
前記第１基準に対する第１加重値及び前記第２基準に対する第２加重値を含み、
前記第１加重値を使用した前記第１値に対する第１等級及び前記第２加重値を使用した前記第２値に対する第２等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定することを特徴とする請求項６に記載のソリッドステートドライブ。
【請求項８】
前記ランカーは、
前記第１基準に対する基準値を含み、
前記第１基準に対する基準値よりも大きい第１値を有するソフトウェアストリームに対して前記第１基準に従い、前記第１基準に対する基準値よりも小さい第１値を有するソフトウェアストリームに対して前記第２基準に従って前記複数のソフトウェアストリームを等級決定することを特徴とする請求項６に記載のソリッドステートドライブ。
【請求項９】
コンピュータシステムで使用されるドライバーであって、
ホストから複数のソフトウェアストリームに関連する複数のコマンドを受信する受信機と、
ウインドウの時間を測定するタイマーと、
前記複数のコマンドに応答して、前記ウインドウの間に前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する統計コレクターと、
前記複数のソフトウェアストリームの各々に対して前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定するランカーと、
前記複数のソフトウェアストリームの第１サブセット内の各ソフトウェアストリームをソリッドステートドライブ（ＳＳＤ）内の複数の装置ストリームの中の固有装置ストリームにマッピングし、前記複数のソフトウェアストリームの第２サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の統合装置ストリームにマッピングするマッパーと、
前記複数のコマンドの各々に関連するソフトウェアストリームに対応する装置ストリームに対する装置ストリーム識別子（ＩＤ）を追加的な複数のコマンドの各々に追加する装置ストリームＩＤアダーと、
前記追加的な複数のコマンドの各々を前記ＳＳＤに伝送する伝送器と、を備えることを特徴とするドライバー。
【請求項１０】
前記ウインドウは、スライディングウインドウであり、
前記統計コレクターは、前記複数のコマンドの各々が前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の前記少なくとも１つの基準に対する少なくとも１つの値を調整することを特徴とする請求項９に記載のドライバー。
【請求項１１】
前記ウインドウは、不連続ウインドウであることを特徴とする請求項９に記載のドライバー。
【請求項１２】
前記複数のソフトウェアストリームの第１サブセットは、最上位等級を有する複数のソフトウェアストリームを含み、
前記最上位等級を有する複数のソフトウェアストリームの数は、前記複数の装置ストリームの数よりも１つ少なく、
前記複数のソフトウェアストリームの第２サブセットは、前記複数のソフトウェアストリームの第１サブセットに含まれない全てのソフトウェアストリームを含むことを特徴とする請求項９に記載のドライバー。
【請求項１３】
前記統計コレクターは、前記複数のソフトウェアストリームの各々に対して第１基準に対する第１値及び第２基準に対する第２値を決定することを特徴とする請求項９に記載のドライバー。
【請求項１４】
前記ランカーは、
前記第１基準に対する第１加重値及び前記第２基準に対する第２加重値を含み、
前記第１加重値を使用した前記第１値に対する第１等級及び前記第２加重値を使用した前記第２値に対する第２等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定することを特徴とする請求項１３に記載のドライバー。
【請求項１５】
前記ランカーは、
前記第１基準に対する基準値を含み、
前記第１基準に対する基準値よりも大きい第１値を有するソフトウェアストリームに対して前記第１基準に従い、前記第１基準に対する基準値よりも小さい第１値を有するソフトウェアストリームに対して前記第２基準に従って前記複数のソフトウェアストリームを等級決定することを特徴とする請求項１３に記載のドライバー。
【請求項１６】
コンピュータシステムで使用されるデータストリームの統合方法であって、
複数のソフトウェアストリームに関連し、複数の装置ストリームを含むソリッドステートドライブ（ＳＳＤ）を使用して処理される複数のコマンドを受信する段階と、
前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する段階と、
前記少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別する段階と、
前記複数のソフトウェアストリームの第１サブセット内の各ソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第２サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の統合装置ストリームに対応付けるマッピングを生成する段階と、
前記マッピングを生成した後に、前記複数のソフトウェアストリームに関連する第２複数のコマンドを受信する段階と、
前記マッピングに応答して前記複数の装置ストリームの中の１つに前記第２複数のコマンドの各々を割当する段階と、
前記割当された装置ストリームを使用して前記ＳＳＤで前記第２複数のコマンドの各々を処理する段階と、を有することを特徴とする方法。
【請求項１７】
前記少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別する段階は、
前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定する段階と、
前記複数のソフトウェアストリームの数が前記複数の装置ストリームの数よりも１つ小さい最上位等級を有するソフトウェアストリームを含むように前記複数のストリームの第１サブセットを選択する段階と、
前記複数のソフトウェアストリームの中から、前記複数のソフトウェアストリームの第１サブセット内に含まれない全てのソフトウェアストリームを含むように前記複数のソフトウェアストリームの第２サブセットを選択する段階と、を含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する段階は、前記複数のソフトウェアストリームの各々に対して第１基準に対する第１値及び第２基準に対する第２値を決定する段階を含み、
前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記複数のソフトウェアストリームの各々に対して前記第１基準に対する第１値及び前記第２基準に対する第２値に従って前記複数のソフトウェアストリームを等級決定する段階を含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記第１基準に対する第１値及び前記第２基準に対する第２値に従って前記複数のソフトウェアストリームを等級決定する段階は、
前記第１基準に対する第１加重値及び前記第２基準に対する第２加重値を決定する段階と、
前記第１加重値を使用した前記第１値に対する第１等級及び前記第２加重値を使用した前記第２値に対する第２等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定する段階と、を含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記第１基準に対する第１値及び前記第２基準に対する第２値に従って前記複数のソフトウェアストリームを等級決定する段階は、
前記第１基準に対する基準値を決定する段階と、
前記第１基準に対する基準値よりも大きい第１値を有するソフトウェアストリームに対して前記第１基準に従い、前記第１基準に対する基準値よりも小さい第１値を有するソフトウェアストリームに対して前記第２基準に従って前記複数のソフトウェアストリームを等級決定する段階と、を含むことを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソリッドステートドライブ（ＳＳＤｓ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅｓ）に関し、より詳細には、マルチストリームＳＳＤ並びにそのためのドライバー及びデータストリームの統合方法に関する。
【背景技術】
【０００２】
マルチストリーミングＳＳＤ（ｍｕｌｔｉ−ｓｔｒｅａｍｉｎｇ  ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅｓ）は、入力データのスマート配置（ｓｍａｒｔ  ｐｌａｃｅｍｅｎｔ）が内部ガベージコレクション（ＧＣ：ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）の影響を最少化し、書込み増加現象（ｗｒｉｔｅ  ａｍｐｌｉｆｉｃａｔｉｏｎ）を減少させる。マルチストリーミングはホストからＳＳＤに伝送された書込み要請の各々に単純タグ（ストリームＩＤ）を追加することによって達成される。このようなタグに基づいて、ＳＳＤはデータを共通ブロックにグループ化する。
【０００３】
大型コンピュータシステムで、アプリケーションは多くのファイルを同時にオープンする。理想的に、各ファイル形態はストリーム書込み（ｓｔｒｅａｍ  ｗｒｉｔｅｓ）を遂行する時、割当される自分のストリームＩＤを有する。しかし、ＳＳＤは１回に使用可能な制限された数の活性書込みストリームのみを支援する。これはシステムによってオープンされる全てのファイルの収容に時々十分ではない。
【０００４】
ホストマシンからＳＳＤへのストリームのマッピングを管理する方法に対する要求が相変わらず存在する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第９１５８６８７号明細書
【特許文献２】米国特許出願公開第２０１６／０１６２２０３号明細書
【特許文献３】米国特許出願公開第２０１６／０２８３１２５号明細書
【特許文献４】米国特許出願公開第２０１６／０３０６５５２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的はマルチストリームが可能なソリッドステートドライブ並びにそのためのドライバー及びデータストリームの統合方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた本発明の一態様によるソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）は、データを格納するフラッシュメモリと、前記ＳＳＤ内の複数の装置ストリームのための支援（ｓｕｐｐｏｒｔ）手段と、複数のコマンドに応答して前記フラッシュメモリへのデータの書込み及び前記フラッシュメモリからのデータの読出しを管理するＳＳＤコントローラと、ホストインターフェイスロジックと、を備え、前記ホストインターフェイスロジックは、ホストから複数のソフトウェアストリームに関連する前記複数のコマンドを受信する受信機と、ウインドウの時間を測定するタイマーと、前記複数のコマンドに応答して、前記ウインドウの間に前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する統計コレクターと、前記複数のソフトウェアストリームの各々に対して前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定するランカーと、前記複数のソフトウェアストリームの第１サブセット内の各ソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の固有装置ストリーム（ｕｎｉｑｕｅ  ｄｅｖｉｃｅ  ｓｔｒｅａｍ）にマッピングし、前記複数のソフトウェアストリームの第２サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の統合装置ストリームにマッピングするマッパーと、を含む。
【０００８】
上記目的を達成するためになされた本発明の一態様によるコンピュータシステムで使用されるドライバーは、ホストから複数のソフトウェアストリームに関連する複数のコマンドを受信する受信機と、ウインドウの時間を測定するタイマーと、前記複数のコマンドに応答して、前記ウインドウの間に前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する統計コレクターと、前記複数のソフトウェアストリームの各々に対して前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定するランカーと、前記複数のソフトウェアストリームの第１サブセット内の各ソフトウェアストリームをソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）内の複数の装置ストリームの中の固有装置ストリームにマッピングし、前記複数のソフトウェアストリームの第２サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の統合装置ストリームにマッピングするマッパーと、前記複数のコマンドの各々に関連するソフトウェアストリームに対応する装置ストリームに対する装置ストリーム識別子（ＩＤ：ｉｄｅｎｔｉｆｉｅｒ）を追加的な複数のコマンドの各々に追加する装置ストリームＩＤアダーと、前記追加的な複数のコマンドの各々を前記ＳＳＤに伝送する伝送器と、を備える。
【０００９】
上記目的を達成するためになされた本発明の一態様によるコンピュータシステムで使用されるデータストリームの統合方法は、複数のソフトウェアストリームに関連し、複数の装置ストリームを含むソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を使用して処理される複数のコマンドを受信する段階と、前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する段階と、前記少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別する段階と、前記複数のソフトウェアストリームの第１サブセット内の各ソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第２サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の統合装置ストリームに対応付けるマッピングを生成する段階と、前記マッピングを生成した後に、前記複数のソフトウェアストリームに関連する第２複数のコマンドを受信する段階と、前記マッピングに応答して前記複数の装置ストリームの中の１つに前記第２複数のコマンドの各々を割当する段階と、前記割当された装置ストリームを使用して前記ＳＳＤで第２複数のコマンドの各々を処理する段階と、を有する。
【発明の効果】
【００１０】
本発明によれば、向上させた性能を有するマルチストリームが可能なソリッドステートドライブのためのデータストリームを統合する方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態によるソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｖｉｃｅ）を具備するマシンを示す図である。
【図２】図１のマシンの追加的な詳細構成を示す図である。
【図３】図１のＳＳＤの詳細を示す図である。
【図４】図１のＳＳＤ内の装置ストリームにマッピングされた多様なソフトウェアストリームに関連する多様なコマンドを示す図である。
【図５】図３のホストインターフェイスロジックの詳細を示す図である。
【図６】図４のソフトウェアストリームに対する装置ストリームへのマッピングを支援する複数のコマンドに対する統計を演算するために使用されるウインドウを示す図である。
【図７】図６のマッピングを生成するために使用される多様な基準（ｃｒｉｔｅｒｉａ）を示す図である。
【図８】図５のランカーの詳細を示す図である。
【図９Ａ】図５のランカーがソフトウェアストリームを整列（ｒａｎｋ）させる他の方法を示す図である。
【図９Ｂ】図５のランカーがソフトウェアストリームを整列（ｒａｎｋ）させる他の方法を示す図である。
【図１０Ａ】本発明の一実施形態による図４のマッピングを生成する例示的な手続を示すフローチャートである。
【図１０Ｂ】本発明の一実施形態による図４のマッピングを生成する例示的な手続を示すフローチャートである。
【図１１】本発明の一実施形態による図５の統計コレクターが基準に対する値を決定する例示的な手続を示すフローチャートである。
【図１２】本発明の一実施形態による図５のランカーがどのソフトウェアストリームがどの装置ストリームにマッピングされるかを決定する例示的な手続を示すフローチャートである。
【図１３】本発明の一実施形態による図５のマッパーがソフトウェアストリームを装置ストリームにマッピングする例示的な手続を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。以下の詳細な説明で、多様な詳細な説明は本発明の技術的思想の理解を助けるためである。しかし、当業者がこのような詳細な説明無しに本発明の思想を遂行可能なことはよく理解される。他の例として、実施形態が不必要に曖昧にならないように広く公知された方法、手続、構成、回路、及びネットワークは説明しない。
【００１３】
第１、第２等の用語を本文で多様な要素を説明するために使用するが、このような要素はこのような用語に限定されないことはよく理解される。このような用語は単に１つの要素から他の１つを区分するために使用される。例えば、本発明の思想から逸脱することなく、第１モジュールは第２モジュールを示し、同様に第２モジュールは第１モジュールを示す。
【００１４】
本明細書で使用する用語は単に特定の実施形態を説明するための目的を有し、本発明を限定するものとして意図しない。本明細書及び特許請求の範囲で使用するように、単数用語は脈絡が明確に他のことを指称しない限り、複数の形態を含むものと意図する。本明細書で使用する“及び／又は”の用語は列挙された目録の１つ以上の可能な組合せを含むか、或いは参照することであることはよく理解される。詳細な説明で使用する“含む”の用語は言及する特性、数、段階、動作、及び／又は構成要素の存在を明示し、１つ以上の他の特性、数、段階、動作、構成要素、及び／又はこれらのグループの存在又は追加を排除しない。図面の特徴及び構成は実際の比率で必須的に示さない。
【００１５】
マルチストリーミング技術で、アプリケーションからの書込みストリームＩＤの数はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）によって支援されるストリームの最大数を時々超過する。このような問題点を解決するために、ＳＳＤは、各ファイル形態／ストリームＩＤの書込みパターンを評価し、ホストストリーム特性（例えば、書込み頻度、累積データサイズ、順次書込み（ｗｒｉｔｅ  ｓｅｑｕｅｎｔｉａｌｌｙ）、サービス品質（ＱｏＳ：Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）要求、遊休時間等）の間で類似点及び差異点（ｓｉｍｉｌａｒｉｔｉｅｓ  ａｎｄ  ｄｉｆｆｅｒｅｎｃｅｓ）に基づいて実際のストリーム（ａｃｔｕａｌ  ｓｔｒｅａｍｓ、ｄｅｖｉｃｅ  ｓｔｒｅａｍｓ）をファイル／ホストストリームに割当する。
【００１６】
従来のデータセットと異なり、ストリームデータは多様なアップデート速度と共に持続的にコンピュータシステムに対して流入及び流出する。膨大なデータサイズによって、全てのデータストリームを格納するか又は数回全てのデータストリームをスキャンすることは不可能である。一方、処理のためにデータストリームを維持することはシステムで大きなボトルネック（ｈｕｇｅ  ｂｏｔｔｌｅｎｅｃｋ）を発生させる。本発明の実施形態は、ストリームの単一スキャン及びオンラインを使用してストリーム管理を支援する。
【００１７】
入力／出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）要請は、ホストコンピュータシステム又はＳＳＤのファームウェアの内部の中の１つで１つ以上のキュー（ｑｕｅｕｅｓ）に一般的に管理される。本発明の実施形態は、このような位置の中の１つで具現される。マルチストリーム可能なシステム（ｍｕｌｔｉ−ｓｔｒｅａｍ−ｅｎａｂｌｅｄ  ｓｙｓｔｅｍ）で、キューの各要請はアプリケーション割当ストリームＩＤ（ａｐｐｌｉｃａｔｉｏｎ−ａｓｓｉｇｎｅｄ  ｓｔｒｅａｍ  ＩＤ）を含む。アプリケーション割当ストリームＩＤをＳＳＤ支援ストリームＩＤ（ＳＳＤ−ｓｕｐｐｏｒｔｅｄ  ｓｔｒｅａｍ  ＩＤ）に変換するために、モジュールがキューで要請のウインドウ（ｗｉｎｄｏｗ  ｏｆ  ｒｅｑｕｅｓｔｓ）を監視（ｍｏｎｉｔｏｒｉｎｇ）するように具現される。ウインドウサイズはウインドウのデータセット（ｄａｔａｓｅｔ）がホストマシンの作業負荷（ｗｏｒｋｌｏａｄ）によって生成されたデータの分散を代表するように選択されるか、或いはウインドウサイズは適切なサイズに設定される。例えば、分散されたデータベースで発生するように、ＳＳＤが多様なマシンからのコマンドを処理する場合、ＳＳＤを含むホストマシンに対する作業負荷をキャプチャするように設計されたウインドウサイズは、コマンドが到着した他のマシン（ｏｔｈｅｒ  ｍａｃｈｉｎｅｓ  ｆｒｏｍ  ｗｈｉｃｈ  ｃｏｍｍａｎｄｓ  ａｒｒｉｖｅ）に対する作業負荷を表さない可能性がある。このような場合、異なるウインドウサイズがＳＳＤに要請を伝送する全てのマシンに対する作業負荷を（おそらく）より良く表すために使用される。コマンドがウインドウに進入する（ｅｎｔｅｒ）ことによって、統計（ｓｔａｔｉｓｔｉｃｓ）（例えば、各アプリケーション割当ストリームＩＤに対する累積データサイズ又はカウンター）がコマンドに基づいて計算される。ウインドウが一杯に満たされた場合、アプリケーション割当ストリームＩＤはカウンター値に基づいてＳＳＤ支援ストリームＩＤにマッピングされる。
【００１８】
例えば、ＳＳＤがｎ個のストリームを支援すると仮定する。ｎ−１個の最も大きいカウンター値を有するアプリケーション割当ストリームＩＤは１〜ｎ−１のＳＳＤ支援ストリームＩＤに各々マッピングされる。アプリケーション割当ストリームＩＤに拘わらず、ウインドウで残りの要請は最後のＳＳＤ支援ストリームＩＤ（ＳＳＤ支援ストリームＩＤ  ｎ）を使用する。
【００１９】
データ要請の動的な属性（ｄｙｎａｍｉｃ  ｎａｔｕｒｅ）を管理するために、キューウインドウ（ｑｕｅｕｅ  ｗｉｎｄｏｗ）がＦＩＦＯ（ＦＩＦＯ：Ｆｉｒｓｔ  Ｉｎ、Ｆｉｒｓｔ  Ｏｕｔ）又はスライディング（ｓｌｉｄｉｎｇ）ウインドウとして管理される。各要請がウインドウから進出する（ｅｘｉｔ）ことによって、関連するアプリケーション割当ストリームＩＤに対応する累積データサイズ又はカウンターのような統計が進出要請（ｅｘｉｔｉｎｇ  ｒｅｑｕｅｓｔ）に基づいて減少される。このような方式で、統計は単にウインドウ内の要請に対してのみに維持される。アプリケーション割当ストリームＩＤ対ＳＳＤ支援ストリームＩＤマップ（ａｐｐｌｉｃａｔｉｏｎ−ａｓｓｉｇｎｅｄ  ｓｔｒｅａｍ  ＩＤ  ｔｏ  ＳＳＤ−ｓｕｐｐｏｒｔｅｄ  ｓｔｒｅａｍ  ＩＤ  ｍａｐ）は周期的に更新されてデータロードの変化を調節する。
【００２０】
図１は、本発明の一実施形態によるＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を具備するマシンを示す図である。図１は、マシン１０５を示す。マシン１０５は、デスクトップコンピュータ又はラップトップコンピュータ、サーバー（独立サーバー又はラックサーバーの中の１つ）、或いは本発明の実施形態で長所を有する他の装置を含むが、これに限定されない適切なマシン（ｄｅｓｉｒｅｄ  ｍａｃｈｉｎｅ）である。マシン１０５は、専門的な携帯用コンピューティング装置、タブレットコンピュータ、スマートフォン、及び他のコンピューティング装置を更に含む。マシン１０５は適切なアプリケーションを実行する。データベースアプリケーションは望ましい例であるが、本発明の実施形態は他の望ましいアプリケーションに拡張される。
【００２１】
マシン１０５は、その特定の形態に拘らず、プロセッサ１１０、メモリ１１５、及びＳＳＤ１２０（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む。プロセッサ１１０は、多様な形態のプロセッサ、例えばインテル（Ｉｎｔｅｌ）社製のゼオン（Ｘｅｏｎ（登録商標））、セレロン（Ｃｅｌｅｒｏｎ（登録商標））、イタニアム（Ｉｔａｎｉｕｍ（登録商標））、アトムプロセッサ（Ａｔｏｍ（登録商標）  Ｐｒｏｃｅｓｓｏｒ）、ＡＭＤ社製のオプテロン（Ｏｐｔｅｒｏｎ（登録商標））プロセッサ、ＡＲＭ社製のＡＲＭプロセッサ等である。図１は単一プロセッサを示しているが、マシン１０５は多数のプロセッサを含むことができる。メモリ１１５は、多様なメモリ、例えばフラッシュメモリ、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、永久的なＲＡＭ（Ｐｅｒｓｉｓｔｅｎｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のようなＮＶＲＡＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等であるが、一般的にＤＲＡＭである。メモリ１１５は他のメモリタイプの適切な組合せであってもよい。メモリ１１５は、メモリコントローラ１２５、又はマシン１０５の一部によって制御される。
【００２２】
ＳＳＤ１２０は、多様なＳＳＤであり、ガベージコレクションを遂行する（フラッシュメモリを使用しなくとも）他の形態のストレージを含むものとして拡張される。ＳＳＤ１２０は、プロセッサ１１０に集積されるか、又はマシン１０５の一部であるストレージコントローラ１３０によって制御される。
【００２３】
図２は、図１のマシンの追加的な詳細構成を示す図である。図２を参照すると、一般的に、マシン１０５は、マシン１０５の構成の動作を編成するために使用されるクロック２０５及びメモリコントローラ１２５を含む１つ以上のプロセッサ１１０を含む。プロセッサ１１０は、例としてＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、又は他の状態保持媒体を含むメモリ１１５に更に接続される。プロセッサ１１０は、ストレージ装置１２０、イーサーネット（登録商標）コネクター（Ｅｔｈｅｒｎｅｔ（登録商標）  ｃｏｎｎｅｃｔｏｒ）又は無線コネクター（ｗｉｒｅｌｅｓｓ  ｃｏｎｎｅｃｔｏｒ）であるネットワークコネクター２１０に更に接続される。プロセッサ１１０は、バス２１５に更に接続され、他の構成の中の入力／出力（Ｉ／Ｏ）エンジン２２５を使用して管理される入力／出力インターフェイスポート及び使用者インターフェイス２２０がバス２１５に接続される。
【００２４】
図３は、図１のＳＳＤ１２０の詳細を示す図である。図３で、ＳＳＤ１２０は、ホストインターフェイスロジック３０５、ＳＳＤコントローラ３１０、及び多様なチャンネル（３２０−１〜３２０−４）に編成される多様なフラッシュメモリチップ（３１５−１〜３１５−８）を含む。ホストインターフェイスロジック３０５はＳＳＤ１２０及び図１のマシン１０５の間の通信を管理する。ＳＳＤコントローラ３１０はフラッシュメモリチップ（３１５−１〜３１５−８）に対するガベージコレクション動作と共に読出し及び書込み動作を管理する。ＳＳＤコントローラ３１０はこのような管理の一部を遂行するフラッシュ変換階層３２５を含む。
【００２５】
図３は４つのチャンネル（３２０−１〜３２０−４）に編成された８個のフラッシュメモリチップ（３１５−１〜３１５−８）を含むＳＳＤ１２０を示しているが、本実施形態は多数のチャンネルに編成された多数のフラッシュメモリチップを支援する。
【００２６】
図４は、図１のＳＳＤ１２０内の装置ストリームにマッピングされた多様なソフトウェアストリームに関連する多様なコマンドを示す図である。図４は、多様なコマンド（４０５−１〜４０５−ｋ）を示す。コマンド（４０５−１〜４０５−ｋ）は図１のマシン１０５のソフトウェアソースから由来する。一般的に例示的なソースは、図１のマシン１０５で実行されるアプリケーション及び図１のマシン１０５で実行されるオペレーティングシステム（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）を含むが、コマンド（４０５−１〜４０５−ｋ）に対する他のソースが可能である。
【００２７】
コマンド（４０５−１〜４０５−ｋ）はソフトウェアストリーム（４１０−１〜４１０−ｎ）に編成される。“ソフトウェアストリーム（ｓｏｆｔｗａｒｅ  ｓｔｒｅａｍｓ）”という用語は“装置ストリーム（ｄｅｖｉｃｅ  ｓｔｒｅａｍｓ）”と称されるＳＳＤ１２０内部のストリームと区分するために使用され、“ソフトウェアストリーム（ｓｏｆｔｗａｒｅ  ｓｔｒｅａｍｓ）”はアプリケーション及びオペレーティングシステムを含む可能なストリームソースを含むものと意図する。一般的に、ソフトウェアストリーム（４１０−１〜４１０−ｎ）はコマンド（４０５−１〜４０５−ｋ）のソースによって定義される。特定ソースがオープンするストリームの数は制限されない。例えば、アプリケーションは図１のＳＳＤ１２０に書き込むか又は読み出される各ファイルに対して単一ストリーム（ｓｉｎｇｌｅ  ｓｔｒｅａｍ）をオープンする。即ち、ストリームの数（ｎ）は図１のＳＳＤ１２０にコマンドを発行するオペレーティングシステム及びアプリケーションの数を超過する。同じ脈絡で、アプリケーションがソフトウェアストリーム当たり複数のコマンドを発行できるため、コマンドの数（ｋ）はソフトウェアストリームの数（ｎ）を超過する。
【００２８】
各コマンドはタグ４１５を含む。タグ４１５はどのソフトウェアストリーム（４１０−１〜４１０−ｎ）がどのコマンドに関連するかを判定する。このような方式で、各コマンドソース（アプリケーション、オペレーティングシステムスレッド、又は一部の他のソース）はソースに最も適切な方式で自身のコマンドを管理する。
【００２９】
しかし、ソフトウェアストリームの数（ｎ）が利用可能なメモリ（ａｖａｉｌａｂｌｅ  ｍｅｍｏｒｙ）によってのみ制限される一方、装置ストリーム（４２０−１〜４２０−ｍ）の数は一般的に制限される。即ち、図１のＳＳＤ１２０は、固定された数の装置ストリームまでを支援し、予め定められた数以上は支援しない可能性がある。ソフトウェアストリームの数（ｎ）が装置ストリームの数（ｍ）よりも多くない場合、ソフトウェアストリームは装置ストリームと一対一関係に割当される。しかし、ソフトウェアストリームが装置ストリームよりも多い場合（数学的に、ｎ＞ｍである場合）、障害が発生する。例えば、少なくとも１つの装置ストリームは複数のソフトウェアストリームに関連するコマンドを管理する必要がある。マッピング４２５はソフトウェアストリーム（４１０−１〜４１０−ｎ）が装置ストリーム（４２０−１〜４２０−ｍ）といかにマッピングされるかを格納する。図５〜図９Ｂはマッピング４２５が如何に生成されるかを示す。
【００３０】
図５は、図３のホストインターフェイスロジック３０５の詳細を示す図である。図５は、図３のホストインターフェイスロジック３０５が図４のマッピング４２５の生成を担当することを示す。しかし、他の実施形態で、図５に示した構成は、例えば図１のメモリコントローラ１２５、図１のストレージコントローラ１３０の一部として含まれ、ソフトウェア形態で具現されるか、書込みコマンドを発生する前にストリームを組合せて、書込み要請を傍受するライブラリルーチン（ｌｉｂｒａｒｙ  ｒｏｕｔｉｎｅｓ）として具現されるか、又は図１のＳＳＤ１２０又はマシン１０５内の他の場所で別の特定目的ハードウェア（ｓｐｅｃｉａｌ  ｐｕｒｐｏｓｅ  ｈａｒｄｗａｒｅ）として具現される。説明を簡易にするために、図５〜図９Ｂの説明は、図３のホストインターフェイスロジック３０５内の具現に重点を置くとしても、図４のマッピングの生成に対する参照はあらゆる特定位置での具現を含むように意図する。
【００３１】
図５で、ホストインターフェイスロジック３０５（ｈｏｓｔ  ｉｎｔｅｒｆａｃｅ  ｌｏｇｉｃ）は、受信機５０５（ｒｅｃｅｉｖｅｒ）、タイマー５１０（ｔｉｍｅｒ）、統計コレクター５１５（ｓｔａｔｉｓｔｉｃｓ  ｃｏｌｌｅｃｔｏｒ）、ランカー５２０（ｒａｎｋｅｒ）、及びマッパー５２５（ｍａｐｐｅｒ）を含む。このような構成は、適切な具現のために、ソフトウェア又はハードウェアの中の１つの形態で具現される。例えば、図３のホストインターフェイスロジック３０５内に具現された実施形態に対して、その具現は、回路を含む一方、図１のメモリコントローラ１２５又は図１のストレージコントローラ１３０内に具現された実施形態に対してソフトウェアを含む。
【００３２】
受信機５０５は多様なソフトウェアソースから図４のコマンド（４０５−１〜４０５−ｋ）を受信する。即ち、図４のコマンド（４０５−１〜４０５−ｋ）の各々は図４のどのソフトウェアストリーム（４１０−１〜４１０−ｎ）がどのコマンドに関連するかを示す図４のタグ４１５を含む。
【００３３】
タイマー５１０は、ウインドウがオープンされ、クローズされる時刻を測定するために使用される。一定時間の間にウインドウを使用することによって、統計コレクター５１５は図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）と図４の装置ストリーム（４２０−１〜４２０−ｋ）とのマッピングを支援する図１のマシン１０５上の作業負荷を代表する図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）に対する統計を演算する。
【００３４】
図６は、図１のＳＳＤ内の図４のソフトウェアストリームに対する図４の装置ストリームへのマッピングを支援する図４の複数のコマンドに対する統計を演算するために使用されるウインドウを示す図であり、このようなウインドウの例を示す。図６で、ウインドウ６０５は、コマンド（４０５−１〜４０５−ｋ）の一部、特にコマンド４０５−１〜４０５−３をスパニング（ｓｐａｎｎｉｎｇ）するものとして示す。ウインドウ６０５の間に発行されたコマンドの統計分析に基づいて、図１のマシン１０５上の作業負荷の代表分析が決定される。図６に示したように、３つのコマンドが図１のマシン１０５の作業負荷の代表サンプルを提供するものではないが、本実施形態は特定ウインドウ内の多数のコマンドを支援する。ウインドウ６０５が合理的な数のコマンドをカバーするように示すと、図６は解読不可になる程度に複雑になる。
【００３５】
ウインドウ６０５のサイズ（図５のタイマー５１０によって測定されるように）は図１のマシン１０５が設置される利用法に応じて変わる。例えば、単位時間当たり発行されるコマンドの平均数は同一であるが、標準偏差（ｓｔａｎｄａｒｄ  ｄｅｖｉａｔｉｏｎｓ）の変化が大きい２つのマシンを考慮する。コマンドの数で小さい標準偏差を有するマシンは時間の経過に応じて相当に均一に分散されるコマンドを含む。これは小さいウインドウ６０５がコマンドの代表サンプルをキャプチャすることを意味する。反面、コマンドの数で大きい標準偏差を有するマシンは相対的に低い活動度及び高い活動度の組合された区間を含む。ウインドウ６０５が、狭いウインドウであり、相対的に低い活動度の区間をキャプチャする場合、それらのコマンドの統計分析は全てのマシン上の作業負荷を表すことができない。従って、ウインドウ６０５はコマンドの数で小さい標準偏差を有するマシンで使用されるウインドウよりも相対的により大きいウインドウである必要がある。
【００３６】
ウインドウ６０５はスライディングウインドウ（ｓｌｉｄｉｎｇ  ｗｉｎｄｏｗ）又は不連続ウインドウ（ｄｉｓｃｒｅｔｅ  ｗｉｎｄｏｗ）の中の１つである。スライディングウインドウは、名称が暗示するように、周辺をスライディングするウインドウである。一般的に、スライディングウインドウは固定された時間区間をカバーし、時間の経過に応じて時間方向に移動する。例えば、スライディングウインドウは時刻Ｔ０で開始する。スライディングウインドウは時刻Ｔ１までオープンを維持する。時刻Ｔ１で始めて、ウインドウはウインドウが現在時刻で常に終了するように前方に移動する。スライディングウインドウが前方に移動することによって、新しい情報がウインドウに進入（ｅｎｔｅｒ）し、スライディングウインドウの開始における情報（即ち、時刻Ｔ０に最も近い情報）はウインドウから進出（ｅｘｉｔ）する。
【００３７】
一方、不連続ウインドウは、時間が固定された時間区間をカバーし、移動しない。例えば、不連続ウインドウは時刻Ｔ０から時刻Ｔ１までの区間で統計を収集する。時刻Ｔ１に到達した時、ウインドウに対する統計の収集は終了する（新しいウインドウが時刻Ｔ１のような時点で開始する）。
【００３８】
統計コレクター５１５は適切な基準（ｃｒｉｔｅｒｉａ）に対する統計（ｓｔａｔｉｓｔｉｃｓ）を収集する。
【００３９】
図７は、図６のマッピングを生成するために使用される多様な基準（ｃｒｉｔｅｒｉａ）を示す図であり、例示的な基準を図７に示す。基準７０５の例は以下の構成を含む。
【００４０】
・頻度７１０（Ｆｒｅｑｕｅｎｃｙ）：図６のウインドウ６０５の間に特定ソフトウェアストリームに関連するコマンド（読出し、書込み、又は両方）がどれくらい多く発行されたかを示す。より多くのコマンドを有するソフトウェアストリームはより少ないコマンドを有するソフトウェアストリームよりもより高い等級（ｈｉｇｈｅｒ  ｒａｎｋ）を有する。
【００４１】
・累積データサイズ７１５（Ａｃｃｕｍｕｌａｔｅｄ  ｄａｔａ  ｓｉｚｅ）：図６のウインドウ６０５の間に特定ソフトウェアストリームに対してどれくらい多くのデータが書き込まれたかを示す。より大きい累積データサイズを有するソフトウェアストリームはより小さい累積データサイズを有するソフトウェアストリームよりもより高い等級を有する。
【００４２】
・順次書込みの数７２０（Ｎｕｍｂｅｒ  ｏｆ  ｓｅｑｕｅｎｔｉａｌ  ｗｒｉｔｅｓ）：図６のウインドウ６０５の間に特定ソフトウェアストリーム内で順次的な（又は順次的にパターン化された）論理ブロックアドレス（ＬＢＡｓ：ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓｅｓ）への書込みがどれくらい多く発生したかを示す。より多くの順次書込みを有するソフトウェアストリームはより少ない順次書込みを有するソフトウェアストリームよりもより高い等級を有する。
【００４３】
・サービス品質７２５（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）：特定ソフトウェアストリームが特定のサービス品質（ｑｕａｌｉｔｙ  ｏｆ  ｓｅｒｖｉｃｅ）を要求するか否かを示す（他のソフトウェアストリームよりもこのソフトウェアストリームにより高い優先順位が付与される）。例示的な他のサービス品質の特徴は米国仮特許出願番号ＵＳ６２／３０９、４４６（２０１６．０３．１６）を優先権主張する米国特許出願番号ＵＳ１５／１６７、９７４（２０１６．０５．２７）に詳しく開示され、レファレンスとして参照される。より高いサービス品質要求を有するソフトウェアストリームはより低いサービス品質要求を有するソフトウェアストリームよりもより高い等級を有する。
【００４４】
・遊休時間７３０（Ｉｄｌｅ  ｔｉｍｅ）：特定ソフトウェアストリームに対するコマンドの間でどれくらい長い時間が消耗されるかを示す。より短い遊休時間を有するソフトウェアストリームはより長い遊休時間を有するソフトウェアストリームよりもより高いランクを有する。
【００４５】
図５の統計コレクター５１５は適切な方式で統計を収集する。例えば、図６のウインドウ６０５が不連続ウインドウである場合、図５の統計コレクター５１５は図６のウインドウ６０５の開始で全ての統計をゼロ（ｚｅｒｏ、０）にリセットする。その後に、ストリームに対する統計で変化を生じるコマンドが発生すると、図５の統計コレクター５１５は適切に統計を調整する。
【００４６】
例えば、基準（ｃｒｉｔｅｒｉｏｎ）として頻度７１０を使用することを考慮する。コマンドが受信される時毎に、図５の統計コレクター５１５はコマンドに関連するソフトウェアストリームが何であるかを判定する。図５の統計コレクター５１５は決定されたソフトウェアストリームに対する頻度カウンター（値）を増加させる。累積データサイズ７１５に対して書き込まれたデータの総量を合計すること、順次書込みの数７２０に対して順次書込みの数をカウンティングすること、サービス品質７２５に対して特定サービス品質を示す値を割当すること、又は遊休時間７３０に対して特定ソフトウェアストリームが係留中であるコマンドを含まない時間の総量を合計することのように、図５の統計コレクター５１５は他の基準に対して同様の値を収集する。
【００４７】
一方、図６のウインドウ６０５がスライディングウインドウである場合、図５の統計コレクター５１５は、図６のウインドウ６０５に進入するか又はウインドウ６０５から進出するかによって統計を調整する。例として、頻度７１０を使用することを再び考慮すると、特定ソフトウェアストリームに関連するコマンドが図６のウインドウ６０５に進入する場合、図５の統計コレクター５１５は特定ソフトウェアストリームに関連するカウンターを増加させる。特定ソフトウェアストリームに関連するコマンドが図６のウインドウ６０５から進出する場合、図５の統計コレクター５１５は特定ソフトウェアストリームに関連するカウンターを減少させる。このような方式で図５の統計コレクター５１５によって収集された統計は図６のウインドウ６０５内のコマンドを常に示す。図５の統計コレクター５１５は他の基準に対して同様に動作する。
【００４８】
一実施形態で、ウインドウ６０５が不連続ウインドウである場合、ウインドウ６０５が引き続きオープンされても（従って、コマンド（４０５−１〜４０５−ｋ）の全てが統計的な目的のために処理されなくとも）、ウインドウ６０５に対して今まで使用可能な統計を使用してマッピング４２５が設定される。しかし、他の実施形態で、１つのウインドウの間に生成された統計は実際にウインドウ６０５がクローズされた後の時間周期の間にマッピング４２５を設定するために使用される。即ち、ウインドウ６０５が時刻Ｔ０から時刻Ｔ１までの拡張の間に統計を収集するために使用される場合、それらの統計は時刻Ｔ１の後に受信されたコマンド（４０５−１〜４０５−ｋ）に対するマッピング４２５を設定するために使用される。分散されたウインドウ６０５が繰り返す分散されたウインドウである場合、即ちウインドウ６０５が固定されたサイズを有し、１つのウインドウがクローズされて他のウインドウが自動的にオープンされる場合、各ウインドウで収集された統計は次のウインドウに対するマッピング４２５を設定するために使用される。例えば、時刻Ｔ０と時刻Ｔ１との間で収集された統計は時刻Ｔ１と時刻Ｔ２との間でマッピング４２５を生成するために使用され、時刻Ｔ１と時刻Ｔ２との間で収集された統計は時刻Ｔ２と時刻Ｔ３との間でマッピング４２５を生成するために使用される。
【００４９】
他の実施形態で、ウインドウ６０５が不連続ウインドウである場合、図５の統計コレクター５１５はマシン１０５の使用者のマシン１０５によって命令される場合にのみ統計を収集するように動作する。即ち、ウインドウ６０５は新しい統計収集のために受動的に（ｍａｎｕａｌｌｙ）オープンされる。新しい統計が収集されると、マッピング４２５が生成される。その後に、マッピング４２５は図３のホストインターフェイスロジック３０５が新しいマッピング４２５を生成する命令を受信する時まで無期限に維持される。その後に、新しいウインドウ６０５がオープンされ、図５の統計コレクター５１５は新しいウインドウ６０５の間に受信されたコマンドに基づいて新しい統計を収集する。
【００５０】
ウインドウ６０５がスライディングウインドウである場合、マッピング４２５は適切なスケジュール上で調整される。例えば、マッピング４２５は図５の統計コレクター５１５によって収集された統計が変更される時毎に変更される。例えば、コマンドがウインドウ６０５に進入する時毎に、対応するアプリケーション割当ストリームＩＤに対する図７の頻度７１０が増加し、コマンドがウインドウ６０５から進出する時毎に、対応するアプリケーション割当ストリームＩＤに対する図７の頻度７１０が減少する。或いは、マッピング４２５が特定区間（例えば、時間Ｔ１又はその倍数）で調整される。本実施形態は他の適切なスケジュールに従ってマッピング４２５のアップデートを支援する。
【００５１】
ウインドウ６０５がスライディングウインドウ又は不連続ウインドウであることに拘らず、初期ウインドウ６０５の間にソフトウェアストリーム（４１０−１〜４１０−ｎ）を装置ストリーム（４２０−１〜４２０−ｎ）にどのようにマッピングするかに対する疑問が発生する。初期ウインドウ６０５の間に、前に収集された統計が無い場合、（予め定められたマッピングが全ての状況で最適化されないため）どのようなマッピングも使用され得る。しかし、図５の統計コレクター５１５が一部の統計を収集した場合、その後のコマンドに対するマッピング４２５を生成することが可能になる。
【００５２】
図５を再び参照すると、ウインドウ６０５に対して統計が収集された場合、ランカー５２０はそれらの統計を使用して図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級付ける（ｒａｎｋ）。一般的に値が低くなるほど等級が高くなるが、本実施形態は高い値が高い等級を示すことを支援する。与えられた基準で、アプリケーション割当ストリームＩＤには基準に対するそれらの値の整列された位置に従って等級が割当される。例えば、頻度７１０が基準として使用される場合、最も高い頻度を有するアプリケーション割当ストリームＩＤには等級１（ｒａｎｋ  １）が割当され、次に高い頻度を有するアプリケーション割当ストリームＩＤには等級２（ｒａｎｋ  ２）が割当され、最も低い周期を有するアプリケーション割当ストリームＩＤまで等級が低下する。等級は以下の表１及び表２を参照してより詳細に説明する。図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）が等級付けられた場合、マッパー５２５は図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を装置ストリーム（４２０−１〜４２０−ｍ）にマッピングする。
【００５３】
マッパー５２５は、図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を２つのサブセットに分割することによって、図４のマッピング４２５を生成する。第１サブセットのソフトウェアストリームは一対一マッピングで装置ストリームに割当される。第２サブセットのソフトウェアストリームは１つの統合装置ストリーム（ｓｉｎｇｌｅ  ｃｏｎｓｏｌｉｄａｔｅｄ  ｄｅｖｉｃｅ  ｓｔｒｅａｍ）に全て割当される。即ち、第１サブセットのソフトウェアストリームは割当された固有の装置ストリームを獲得する一方、第２サブセットの全てのソフトウェアストリームは１つの装置ストリームを共有する。第２サブセットの全てのソフトウェアストリームが単一装置ストリームを共有するため、これは第１サブセットがｍ−１個のソフトウェアストリームを含むことを意味する。ここで、ｍは図１のＳＳＤ１２０によって支援される図４の装置ストリーム（４２０−１〜４２０−ｍ）の数である。
【００５４】
図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）のサブセットはランカー５２０によって決定されたソフトウェアストリーム（４１０−１〜４１０−ｎ）に対する等級に基づいて決定される。例えば、図１のＳＳＤ１２０によって支援される図４のｍ個の装置ストリーム（４２０−１〜４２０−ｍ）が存在すると仮定すると、（選択された１つ以上の基準によって等級付けられるように）ｍ−１個の最上位等級のソフトウェアストリームは第１サブセットに含まれ、低い等級のソフトウェアストリームの全ては第２サブセットに含まれる。このような割当は各々固有装置ストリームが割当された最高等級を有するソフトウェアストリーム及び統合された装置ストリームを共有する低い等級のソフトウェアストリームを引き起こす。
【００５５】
ｍ−１個の特定ソフトウェアストリームが第１サブセットに含まれるものと識別されない場合（例えば、等級ｍ−１が同一である場合）、（選択事項が全て同一の等級を有するため）、適切な解決策が第１サブセットのための最終ソフトウェアストリームを選択するために使用される。例えば、ｍ個のソフトウェアストリームが全て最上位等級を有すると仮定する（やむを得ない場合に可能であるシナリオ）。ｍ個のソフトウェアストリームは全て同一である等級を有するため、ｍ個のソフトウェアストリームの中のｍ−１が第１サブセットのために選択され、１つの選択されないストリームは第２サブセットの一部になることによって、統合装置ストリームを共有することが委ねられる。
【００５６】
全ての装置ストリームが同等である場合、どの装置ストリームが第２サブセットのソフトウェアストリームに対して統合されたストリームとして使用されるか、或いは第１サブセットのｍ−１個のソフトウェアストリームがｍ−１個の装置ストリームに対してどのようにマッピングされるかに差異はない。しかし、装置ストリームが区分可能である場合、マッピングが重要になる。例えば、最も高い優先順位装置ストリーム（ｔｈｅ  ｈｉｇｈｅｓｔ  ｐｒｉｏｒｉｔｙ  ｄｅｖｉｃｅ  ｓｔｒｅａｍ）が統合装置ストリームとして使用される（その装置ストリームが多数のソフトウェアストリームに亘って共有されるためである）。残りの装置ストリームは使用された基準に基づいてそれらのランク付けに従って第１サブセットのソフトウェアストリームに割当される（最上位等級を有するソフトウェアストリームは使用可能な最も高い優先順位装置ストリームを受信し、２番目に高い等級を有するソフトウェアストリームは使用可能な２番目に高い優先順位装置ストリームを受信する）。或いは、統合装置ストリームが基準に従って低い等級を有する多数のソフトウェアストリームの間で共有されるため、統合装置ストリームは使用可能な最も低い優先順位装置ストリームとして選択され、第１サブセットのソフトウェアストリームは基準に従うソフトウェアストリームの等級に従って最も高い優先順位装置ストリームにマッピングされる。本実施形態はソフトウェアストリームから装置ストリームへの適切なマッピング技法を支援する。
【００５７】
上述した説明は１つの装置ストリームのみが統合装置ストリームとして動作することを説明したが、他の実施形態が可能である。例えば、複数の装置ストリームが統合装置ストリームとして使用される。このような実施形態は図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）の数が図４の装置ストリーム（４２０−１〜４２０−ｍ）の数を相当に超過する場合に有用である。ソフトウェアストリーム（４１０−１〜４１０−ｎ）の大部分を１つの統合装置ストリームに統合することはソフトウェアストリームの全体の性能低下を誘発する。複数の統合装置ストリームを使用することによって、統合されたソフトウェアストリームの性能が向上する（但し、固有の装置ストリームに割当されるソフトウェアストリームの数が減少する）。
【００５８】
どれくらい多くの装置ストリームが統合装置ストリームとして使用されるかは適切な技法を使用して判別される。例えば、図７の頻度７１０を基準として使用する場合、上限値（ｕｐｐｅｒ  ｌｉｍｉｔ）が１つの統合装置ストリームに割当されるソフトウェアストリームの数として設定される。第２サブセットのソフトウェアストリームの数がこのような上限値より大きい場合、統合装置ストリームに割当されたソフトウェアストリームの数がこのような上限値以下に維持されるために必要であるくらい追加的な装置ストリームが統合装置ストリームとして使用される。同一の概念が図７の他の基準７０５を使用して適用される。例えば、図７の累積データサイズ７１５を基準として使用する場合、１つの統合装置ストリームを使用して書き込まれる累積データの総量に対する上限値が割当される。或いは、図７のサービス品質７２５を基準として使用する場合、最大全体レイテンシが図６のウインドウ６０５の持続期間に基づいて統合装置ストリームのために設定される。統合装置ストリームに割当されたコマンドの全体数が、統合装置ストリームに対する全体レイテンシがこのような最大全体レイテンシよりも大きいことを意味する場合、追加的な統合装置ストリームが使用される。
【００５９】
更に、適切な装置ストリームが統合装置ストリーム使用のために選択される。例えば、統合装置ストリームが多数のソフトウェアソースに関連するコマンドを処理するため、統合装置ストリームが１つのソフトウェアストリームに関連するコマンドを処理する他の装置ストリームよりもより多くのコマンドを含むものと予想することが妥当である。即ち、高い優先順位を有する装置ストリームを統合装置ストリームとして選択することが有利である（これは統合装置ストリームが単に１つのソフトウェアストリームに関連するコマンドを処理する装置ストリームよりも相対的に遅くコマンドを処理する事実を補償するためである）。このような選択は（たとえＱｏＳが高い優先順位の装置ストリームを統合装置ストリームに選択するための唯一の理由ではなくとも）、ストリームがＱｏＳ保証を提供する場合に特に有利である。
【００６０】
基準を組合せることもまた可能である。例えば、図４のマッピング４２５のためにストリームを等級決定するために使用される基準が遊休時間７３０を使用するが、どれくらい多くの統合装置ストリームを使用するかを決定するために使用される基準はウインドウ６０５の間に統合装置ストリームに割当されたコマンドの最大数である。本実施形態はどれくらい多くの統合装置ストリームを使用するかを判別するために基準の使用を支援する（以下の図８〜図９Ｂを参照して説明するように、ソフトウェアストリーム（４１０−１〜４１０−ｎ）の等級決定に複数の基準を使用することが可能である）。
【００６１】
上述したように、本実施形態は、図３のホストインターフェイスロジック３０５内に具現される。このような実施形態で、その具現は図１のＳＳＤ１２０に含まれる。ＳＳＤ１２０が図４のマッピング４２５を直接的に管理するため、どの装置ストリームがどの特定ソフトウェアストリームに割当されるかを知ることが難しくない。このような実施形態で、伝送器５３０及び装置ストリーム識別子ＩＤアダー５３５は必要ではない（技術的に、ホストインターフェイスロジック３０５はデータを要請したアプリケーション又はオペレーティングシステムのスレッドに情報を再び伝送する伝送器を含むことができる。但し、伝送器５３０は図１のＳＳＤ１２０の従来の伝送器として動作する）。
【００６２】
但し、本実施形態が図１のメモリコントローラ１２５、図１のストレージコントローラ１３０、又はライブラリルーチンで具現される場合、図１のＳＳＤ１２０は図４のマッピング４２５へのアクセスを必須的に含まない。一部の実施形態で、図１のＳＳＤ１２０がマッパー５２５によって判別されるようにマッピングを遂行するように伝送器５３０は図４のマッピング４２５を伝送する。しかし、図４のマッピング４２５を図１のＳＳＤ１２０に伝送する代わりに、他の実施形態は装置ストリームＩＤアダー５３５を使用することによってどの装置ストリームにどの特定コマンドが割当されるかを図１のＳＳＤ１２０に通知する。装置ストリームＩＤアダー５３５は図４の関連する装置ストリーム（４２０−１〜４２０−ｍ）を指称する図４のタグ４１５と類似な追加タグを含む。このような方式で図１のＳＳＤ１２０は図４のどの装置ストリーム（４２０−１〜４２０−ｍ）がどの特定コマンド処理のために使用されるかが分かる。
【００６３】
本実施形態が具現されることに拘らず、図４のマッピング４２５は自動的に又は受動的に再生成される。例えば、図４のマッピング４２５は、コマンドが図６のウインドウ６０５に進入し、ウインドウ６０５から進出することによって更新される。これはソフトウェアストリーム（４１０−１〜４１０−ｎ）に対する統計に影響を及ぼし、順に図４のマッピング４２５の再生成を開始する。或いは図６のウインドウ６０５が一定の間隔で使用される不連続ウインドウである場合、図６の不連続ウインドウ６０５が閉じられる時はいつでも、図４のマッピング４２５は自動的に再生成されて統計コレクター５１５によって収集された新しい統計を反映する。
【００６４】
一方、受動的再生成が開始される時まで図４のマッピング４２５が維持される。受動的再生成を達成するために、図３のホストインターフェイスロジック３０５、図１のメモリコントローラ１２５、図１のストレージコントローラ１３０、又はライブラリルーチンは、受動的再生成を始めるコマンドを受信し、統計をクリアーし、新しい統計を収集する支援（ｓｕｐｐｏｒｔ）を含む。このようなコマンドを処理する支援はファームウェア形態（図３のホストインターフェイスロジック３０５に図示せず）又はソフトウェア形態（図１のメモリコントローラ１２５内、図１のストレージコントローラ１３０内、又はライブラリルーチン）で具現される。
【００６５】
図８は、図５のランカー５２０の詳細を示す図である。上述したように、ランカー５２０は選択された１つ以上の基準に基づいてソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定する。図８は、ランカー５２０が、１つ以上の基準８０５、基準値８１０、及び比較器８１５を含むものとして示す。基準８０５はソフトウェアストリームを等級決定するために使用される基準を識別する。図５の統計コレクター５１５が１つの基準に対する統計のみを収集する場合、ランカー５２０はどのような基準が使用されるかを分かる必要がなく、この場合、基準８０５は省略されるため、基準８０５を点線で示す。しかし、図５の統計コレクター５１５が１つの基準に対する統計のみを収集しても、ランカー５２０はどの基準が使用されるかを分かる必要があり、このような情報は等級順序に影響を及ぼす。例えば、図７の頻度７１０は対応する高い頻度を有するソフトウェアストリームに対してより高い等級を提案するが、図７の遊休時間７３０は対応する低い遊休時間を有するソフトウェアストリームに対してより高い等級を提案する。
【００６６】
ランカー５２０が１つの基準のみを使用して動作する場合、全てのランカー５２０は各ソフトウェアストリームに対応する基準に対する値に依存してソフトウェアストリーム（４１０−１〜４１０−ｎ）を順に配置しなければならない。しかし、ランカー５２０は図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定するために１つ以上の基準を使用する。
【００６７】
一実施形態で、ランカー５２０は２つ以上の基準を使用して図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定する。このような実施形態で、ランカー５２０は基準値８１０（ｔｈｒｅｓｈｏｌｄ）及び比較器８１５（ｃｏｍｐａｒａｔｏｒ）を含む。値が基準値８１０を超過する場合に１つの基準が使用され、第１基準に対する値が基準値８１０を超過しない場合に他の基準が使用される。比較器８１５はソフトウェアストリームを等級決定するためにどのような基準が使用されるかを判別するために使用される。
【００６８】
図９Ａは、図５のランカーがソフトウェアストリームを整列（ｒａｎｋ）させる他の方法を示す図であり、このような等級決定の手続を示す。図９Ａで、比較器８１５はソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定するために使用される２つの基準に対する値（９０５−１、９０５−２）及び基準値８１０を受信する。例えば、比較器８１５は基準値８１０及び第１値９０５−１（基準値８１０に関連する基準に対する値としてここでは任意に選択される）を比較する。第１値９０５−１が基準値８１０よりも大きい場合、比較器８１５は第１値９０５−１を（選択された値９１０として）選択して図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定するために使用する。
【００６９】
一例はこのようなシナリオで図５のランカー５２０の動作を説明するために役に立つ。選択された第１基準が図７の累積データサイズ７１５であり、第２基準は図７の頻度７１０であると仮定する。また、図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）は以下の表１に示した基準に対する統計結果になるものと仮定する。
【００７０】
【表１】
2018073412.tif 000003
【００７１】
基準値８１０が１ＭＢに設定された場合、４つのソフトウェアストリームは４、１、３、２の順に等級決定される。ソフトウェアストリーム１及び４の各々は１ＭＢを超過する累積データサイズを有し、ソフトウェアストリーム４は最も大きい累積データサイズを有する（ソフトウェアストリーム１がソフトウェアストリーム４よりもより多くの関連するコマンドを有する事実は関連がない）。一方、ソフトウェアストリーム２及び３は１ＭＢよりも小さい累積データサイズを有し、このようなストリームはそれらの周期に基づいて等級決定される。ソフトウェアストリーム３は最も小さい累積データを書き込むにも拘らず、より多くの関連するコマンド有するため、ソフトウェア２よりも高く等級決定される。
【００７２】
上述した説明は２つの基準を使用する場合を説明しているが、本実施形態はソフトウェアストリームの最終等級を決定するために多数の基準を使用することを支援する。即ち、第１基準が第１基準値を超過する値を有するソフトウェアストリームを等級決定するために使用され、残りのソフトウェアストリームの第２基準に対する値が第２基準値よりも大きい場合、第２基準は残りのソフトウェアストリーム（即ち、第１基準に対する値が第１基準値を超過しないソフトウェアストリーム）を等級決定するために使用される。また、このような説明は特定基準値を超過する値を有するソフトウェアストリームを説明しているが、本実施形態は等級決定の目的のために、（下限境界の代わりに）上限境界（ｕｐｐｅｒ  ｂｏｕｎｄ）として１つ以上の基準値を使用することを支援する。例えば、遊休時間が１００ｍｓより小さい場合、遊休時間が少なくとも１００ｍｓであるソフトウェアストリームに対する等級決定基準として使用される図７の頻度７１０と共に、図７の遊休時間７３０が等級決定基準として使用される。
【００７３】
図８を再び参照すると、他の実施形態として、ランカー５２０は加重値の合計（ｗｅｉｇｈｔｅｄ  ｓｕｍ）を遂行することによって複数の基準を使用する。このような実施形態で、ランカー５２０は算術論理ユニット８２０（ＡＬＵ：ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）及び加重値（８２５−１〜８２５−ｌ）を含む。加重値（８２５−１〜８２５−ｌ）は加重値の合計に含まれる別の基準の各々に適用される加重値を示し、ＡＬＵ８２０は加重値の合計を演算するために必須的な計算を遂行する。即ち、加重値（８２５−１〜８２５−ｌ）は加重値の合計を演算するために使用される基準の相対的な重要度（ｒｅｌａｔｉｖｅ  ｉｍｐｏｒｔａｎｃｅ）を示す。低い等級が高い重要度を示す場合、加重値（８２５−１〜８２５−ｌ）は加重値の合計で基準に対する高い重要度を示すために小さい値を同様に使用する。
【００７４】
加重値の合計を演算するために、ランカー５２０は各基準に従って個別的に図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を優先等級決定する。その後に、加重値を各ソフトウェアストリームの等級に掛け算して最終の加重値の合計を生成する。低い数字は高い等級を示す（等級１は最も高い等級）ため、小さい加重値はより重要な基準を指称するために使用される。加重値（８２５−１〜８２５−ｌ）が１．０に合計されることが有用である（但し、必須ではない）。加重値（８２５−１〜８２５−ｌ）の中の唯１つのみが０でない正数値を有し、他の加重値（８２５−１〜８２５−ｌ）が０の値を有する場合、１つの基準に従って図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定することは複数の基準に従って図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定することと同一である。加重値の合計は整数結果でなくてもよい。加重値の合計の結果が再びランク付けされて図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）に対する最終等級を生成するため、このような結果は許容される。
【００７５】
図９Ｂは、図５のランカーがソフトウェアストリームを整列（ｒａｎｋ）させる他の方法を示す図であり、このような等級決定の手続を示す。図９Ｂで、図８のＡＬＵ８２０は図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定するために使用される２つの基準に対する値（９０５−１、９０５−２）を加重値（８２５−１、８２５−２）と共に受信する。次に、図８のＡＬＵ８２０は、第１値９０１−１と第１加重値８２５−１との積を第２値９０５−２と第２加重値８２５−２との積に加算することによって選択された値９１０を演算する。選択された値９１０は図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定するために使用される値になる。
【００７６】
また、一例はこのようなシナリオで図５のランカー５２０の動作を説明するために役に立つ。選択された第１基準は図７の累積データサイズ７１５であり、第２基準は図７の頻度７１０であると仮定する。図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）は以下の表２に示した基準に対する統計結果になるものと仮定する。
【００７７】
【表２】
2018073412.tif 000004
【００７８】
事項を単純化するために、表２は、累積データサイズ及び頻度に関する４つのソフトウェアストリームに対する等級を示す。
【００７９】
図７の累積データサイズ７１５に関連する加重値が１に設定され、図７の頻度７１０に関連する加重値が０に設定された場合、等級は等級１に記載した列に示したようになる。仮に加重値が入れ替えられた場合、等級は等級２に記載した列に示したようになる。
【００８０】
累積データサイズが頻度より３倍くらい重要であるものと看做されると仮定する。結果的な加重値は累積データに対して０．２５であり、周期に対して０．７５である（低い数字は高い等級を意味し、加重値の小さい値は大きい重要度を意味することに留意する）。ソフトウェアストリームに対する等級の加重値の合計は各々１．２５、３、２．５、及び３．２５である。これはソフトウェアストリームが１、３、２、４の順序に等級が決定されることを意味する。これは等級２に記載された列と同一の等級であるが、このような事実は偶然の一致である。
【００８１】
図８〜図９Ｂは２つの基準を使用する等級決定が遂行される方法を示した。本実施形態は図示した手続の単純一般化によって２以上の基準を使用することを支援する。例えば、図８の３つ以上の加重値（８２５−１〜８２５−ｌ）は０ではない値（ｎｏｎ−ｚｅｒｏ  ｖａｌｕｅｓ）に与えられるか、或いは図８の複数の基準値８１０が図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定する場合、どのような基準を使用するかを決定するために設定される。
【００８２】
図１０Ａ及び図１０Ｂは、本発明の一実施形態による図４のマッピング４２５を生成する例示的な手続を示すフローチャートである。図１０Ａの１００５段階で、図３のホストインターフェイスロジック３０５は図６のウインドウ６０５を識別して図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）に関する統計の収集に使用する（以下の図１０Ａ〜図１３で、図３のホストインターフェイスロジック３０５の参照は、本実施形態が具現されることに従って図１のストレージコントローラ１３０又は図１のメモリコントローラ１２５の参照によって代替される）。１０１０段階で、ホストインターフェイスロジック３０５は図４の複数のコマンド（４０５−１〜４０５−ｋ）を受信する。コマンドの中の一部は図６のウインドウ６０５がオープンされる時に受信される。１０１５段階で、統計コレクター５１５は図４の複数のコマンド（４０５−１〜４０５−ｋ）（少なくとも、図６のウインドウ６０５がオープンされる時に受信されたコマンド）に基づいて図７の基準７０５に対する値を決定する。
【００８３】
１０２０段階で、図５のランカー５２０は図５の統計コレクター５１５によって決定された値に基づいて図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）のサブセットを識別する。１０２５段階で、図５のマッパー５２５は図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を図４の装置ストリーム（４２０−１〜４２０−ｍ）にマッピングするための図４のマッピング４２５を生成する。
【００８４】
１０３０段階で、図３のホストインターフェイスロジック３０５は図４の追加的なコマンド（４０５−１〜４０５−ｋ）を受信する。１０３５段階で、図５のマッパー５２５は図４のマッピング４２５を使用して図４の追加的なコマンド（４０５−１〜４０５−ｋ）の各々を図４の装置ストリーム（４２０−１〜４２０−ｍ）に割当する。
【００８５】
図１０Ｂの１０４０段階で、図１のＳＳＤ１２０は図４の割当された装置ストリーム（４２０−１〜４２０−ｍ）を使用して図４の追加的なコマンド（４０５−１〜４０５−ｋ）を処理する。１０４５段階で、図１のＳＳＤ１２０は図４の追加的なコマンド（４０５−１〜４０５−ｋ）に対する処理結果を返す。
【００８６】
１０５０段階で、図３のホストインターフェイスロジック３０５は図４のマッピング４２５を自動的に生成するか否かを判別する（図６のウインドウ６０５がスライディングウインドウであるか、或いはＳＳＤ１２０が図６の周期的な不連続ウインドウ６０５に新しい統計を反復的に収集するように構成されるためである）。マッピング４２５を生成する場合、制御は図１０Ａの１００５段階に戻って図４のマッピング４２５を生成する手続を再び開始する。マッピング４２５を生成しない場合、１０５５段階で、図３のホストインターフェイスロジック３０５は図１のマシン１０５の使用者又は図１のマシン１０５によって発行されるマッピング４２５を再生成するコマンドを受信したか否かを判別する。コマンドを受信した場合、制御は図１０Ａの１００５段階に戻って図４のマッピング４２５を生成する手続を再び開始する。コマンドが受信されない場合、１０６０段階で、図３のホストインターフェイスロジック３０５は図４のマッピング４２５を維持し、その後に、手続は図１０Ａの１０３０段階に戻る（或いは、図４の追加的なコマンド（４０５−１〜４０５−ｋ）が受信されない場合、手続はこの段階で単純に終了する）。
【００８７】
図１１は、本発明の一実施形態による図５の統計コレクター５１５が図７の基準７０５に対する値を決定する例示的な手続を示すフローチャートである。図１１の１１０５段階で、図５の統計コレクター５１５はコマンドが図６のウインドウ６０５に進入し、ウインドウ６０５から進出することによって、ソフトウェアストリーム（４１０−１〜４１０−ｎ）に対する値を調整する。即ち、コマンドが図６のウインドウに進入することによって、図５の統計コレクター５１５は図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）に対する値を増加させ、コマンドが図６のウインドウ６０５から進出することによって、図５の統計コレクター５１５は図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）に対する値を減少させる。
【００８８】
或いは、１１１０段階で、図５の統計コレクター５１５はソフトウェアストリーム（４１０−１〜４１０−ｎ）に対する値をリセットする。その後、１１１５段階で、図５の統計コレクター５１５は図６のウインドウ６０５を通じて図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）に対する新しい統計を収集する。
【００８９】
図１２は、本発明の一実施形態による図５のランカー５２０が図４のどのソフトウェアストリーム（４１０−１〜４１０−ｎ）が図４のどの装置ストリーム（４２０−１〜４２０−ｍ）にマッピングされるかを決定する例示的な手続を示すフローチャートである。図１２を参照すると、１２０５段階で、図５のランカー５２０は図５の統計コレクター５１５によって収集された統計に従って図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を等級決定する。１２１０段階で、図５のランカー５２０は多様な基準に対する図８の加重値（８２５−１〜８２５−ｌ）を決定する。１２１５段階で、ランカー５２０は初期等級及び図８の加重値（８２５−１〜８２５−ｌ）を使用して図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）の最終等級を決定する。点線１２２０で示したように、１２１０段階及び１２１５段階は省略され得る。また、図８を参照して説明したように、図８の加重値（８２５−１〜８２５−ｌ）の中の１つにのみ０ではない正の値が与えられた場合、１つの基準に従う等級決定が１２１０段階及び１２１５段階を通じて効率的に達成される。
【００９０】
或いは、図５のランカー５２０が図８の基準値８１０及び比較器８１５を使用して複数の基準を使用する場合、１２２５段階で、図５のランカー５２０は第１基準に対する図８の基準値８１０（仮に図８の１つの基準値８１０が使用される場合、追加的な基準に対する基準値）を決定する。１２３０段階で、図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）は第１基準に対する値が図８の基準値８１０を超過するソフトウェアストリームに対して第１基準に従って等級決定される。１２３５段階で、図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）は第１基準が図８の基準値８１０を超過しないソフトウェアストリームに対して第２基準に従って等級決定される。
【００９１】
図５のランカー５２０が最終等級決定をいかに達成するかに拘らず、１２４０段階で、図５のランカー５２０は第１サブセットのために最上位等級のソフトウェアストリーム（ｔｈｅ  ｈｉｇｈｅｓｔ  ｒａｎｋｉｎｇ  ｓｏｆｔｗａｒｅ  ｓｔｒｅａｍｓ）を選択し、１２４５段階で、図５のランカー５２０は第２サブセットのために残る全てのソフトウェアストリーム（ｒｅｍａｉｎｉｎｇ  ｓｏｆｔｗａｒｅ  ｓｔｒｅａｍｓ）を選択する。
【００９２】
図１３は、本発明の一実施形態による図５のマッパー５２５が図４のソフトウェアストリーム（４１０−１〜４１０−ｎ）を図４の装置ストリーム（４２０−１〜４２０−ｍ）にマッピングする例示的な手続を示すフローチャートである。図１３を参照すると、１３０５段階で、図５のマッパー５２５は第１サブセット内の各ソフトウェアストリームを固有装置ストリームにマッピングする。１３１０段階で、図５のマッパー５２５は第２サブセット内の全てのソフトウェアストリームを統合装置ストリームにマッピングする。図５を参照して説明したように、必要に応じて、１つ以上の統合装置ストリームが存在する。
【００９３】
図１０Ａ〜図１３で、本発明の実施形態を図示した。しかし、当業者は一部の段階の順序を変更するか、一部の段階を省略するか、又は図面に示さない接続を含むことによって、他の実施形態が可能であることを理解すべきである。フローチャートのこのような全ての変形は明示的に説明したことに拘らず、本発明の実施形態であると看做される。
【００９４】
以下の説明は、本発明の特定の思想が具現されるマシン又は適切なマシン（ｍａｃｈｉｎｅ）の一般的な説明を提供する。１つ以上のマシンは、少なくとも一部で、キーボード、マウス等のような一般的な入力装置からの入力のみならず、他のマシンから受信された命令語、仮想現実環境（ｖｉｒｔｕａｌ  ｒｅａｌｉｔｙ  ｅｎｖｉｒｏｎｍｅｎｔ）、生体フィードバック、又は他の入力信号によって制御される。本明細書で使用したように、“マシン（ｍａｃｈｉｎｅ）”という用語は、単一マシン、１つ以上の仮想マシン、仮想マシン又は共に作動する装置が通信的に接続されたシステムを広く含むものとして意図する。例示的なマシンは、パーソナルコンピュータ、ワークステーション、サーバー、携帯用コンピュータ、小型コンピュータ、電話機、タブレット等のようなコンピューティング装置のみならず、大衆交通、例えば自動車、汽車、タクシー等のような運送装置を含む。
【００９５】
１つ以上のマシンはプログラム可能又はプログラム不可能なロジック装置又はアレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、内装されたコンピュータ、スマトカード等のような内装されたコントローラを含む。１つ以上のマシンは、ネットワークインターフェイス、モデム、或いは他の通信接続等のように１つ以上の遠隔装置と１つ以上の接続を活用する。装置は、イントラネット、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のような物理的及び／又は論理的ネットワーク方法によって相互接続される。当業者は、ネットワーク通信が無線周波数（ＲＦ：Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）、衛星、マイクロウェーブ、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）８０２．１１、ブルートゥース（登録商標）、光、赤外線、ケーブル、レーザー等のような多様な有線又は無線短波長又は長波長搬送波及びプロトコルが活用されることを認知する。
【００９６】
本発明の実施形態は、マシンによってアクセスされる時にマシンに作業を遂行させるか、或いは要約データタイプ又は低レベルハードウェア構成を定義する機能、手続、データ構造、アプリケーションプログラムを含む関連するデータを参照するか又は関連して説明される。関連するデータは、揮発性若しくは不揮発性メモリ（例えば、ＲＡＭ、ＲＯＭ）に格納されるか、又はハードドライブ、フロッピー（登録商標）ディスク、光ストレージ、テープ、フラッシュメモリ、メモリスティック（登録商標）、デジタルビデオディスク、生体ストレージ等を含む関連するストレージ媒体及び他の格納装置に格納される。関連するデータは物理的又は論理的ネットワークを含む伝送環境上で、パケット、直列データ、並列データ、電波信号等のような形態で提供され、圧縮されるか又は暗号化された形式で使用される。関連するデータは分散された環境で使用され、論理的に又は遠隔に装置アクセスのために格納される。
【００９７】
本発明の実施形態は、１つ以上のプロセッサによって実行される命令語を含む類型の非一時的なコンピュータ読み取り可能な記録媒体（ｔａｎｇｉｂｌｅ、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｍａｃｈｉｎｅ−ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を含む。命令語は本明細書に記載したような本発明の構成要素を遂行するための命令語を含む。
【００９８】
実施形態を参照して本発明の理論を説明したが、実施形態は本発明の技術的思想から逸脱せずに変形され、他の適切な方式と組合されることはよく理解されるべきである。そして、詳細な説明が特定の実施形態に集中したが、他の構成が考慮される。特に、本明細書で“本発明の実施形態によると”のような表現を使用したが、このような表現は一般的に、参照実施形態の可能性を意味し、本発明が特定の実施形態の構成に限定されることを意味しない。本明細書に記載したように、このような用語は他の実施形態と組合される同一又は他の実施形態を参照する。
【００９９】
上述した実施形態は、本発明を限定するものではない。一部の実施形態を説明したが、当業者は本文の長所及び新しい特徴から逸脱せずに、本発明の可能な多様な変形を容易に遂行することができる。従って、このような変形は本発明の思想内に含まれるように意図される。
【０１００】
本発明の実施形態は、以下のステートメントに制限無しに拡張される。
【０１０１】
ステートメント１．本発明の一実施形態によるソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）は、データを格納するフラッシュメモリと、前記ＳＳＤ内の複数の装置ストリームのための支援（ｓｕｐｐｏｒｔ）手段と、複数のコマンドに応答して前記フラッシュメモリへのデータの書込み及び前記フラッシュメモリからのデータの読出しを管理するＳＳＤコントローラと、ホストインターフェイスロジックと、を備え、前記ホストインターフェイスロジックは、ホストから複数のソフトウェアストリームに関連する前記複数のコマンドを受信する受信機と、ウインドウの時間を測定するタイマーと、前記複数のコマンドに応答して、前記ウインドウの間に前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する統計コレクターと、前記複数のソフトウェアストリームの各々に対して前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定するランカーと、前記複数のソフトウェアストリームの第１サブセット内の各ソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の固有装置ストリーム（ｕｎｉｑｕｅ  ｄｅｖｉｃｅ  ｓｔｒｅａｍ）にマッピングし、前記複数のソフトウェアストリームの第２サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の統合装置ストリームにマッピングするマッパーと、を含む。
【０１０２】
ステートメント２．ステートメント１において、前記複数のコマンドの各々は、前記複数のソフトウェアストリームの中の前記マッピングに応答して対応する装置ストリームが割当される対応する１つのソフトウェアストリームを識別（ｉｄｅｎｔｉｆｙｉｎｇ）するソフトウェアストリーム識別子（ＩＤ：ｉｄｅｎｔｉｆｉｅｒ）タグを含む。
【０１０３】
ステートメント３．ステートメント１において、前記ＳＳＤは、前記複数のソフトウェアストリームから追加的な複数のコマンド受信し、前記マッピングに従って前記追加的な複数のコマンドを前記複数の装置ストリームに割当する。
【０１０４】
ステートメント４．ステートメント１において、前記ウインドウは、スライディングウインドウであり、前記統計コレクターは、前記複数のコマンドの各々が前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の前記少なくとも１つの基準に対する少なくとも１つの値を調整する。
【０１０５】
ステートメント５．ステートメント１において、前記ウインドウは、不連続ウインドウである。
【０１０６】
ステートメント６．ステートメント１において、前記ホストインターフェイスロジックは、異なって命令される時まで前記マッピングを維持し、前記受信機は、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングするコマンドを受信する。
【０１０７】
ステートメント７．ステートメント５において、前記ホストインターフェイスロジックは、複数の順次的な不連続ウインドウに対して前記複数のソフトウェアストリームを前記複数の装置ストリームに反復的に再マッピングする。
【０１０８】
ステートメント８．ステートメント１において、前記複数のソフトウェアストリームの第１サブセットは、最上位等級を有する複数のソフトウェアストリームを含み、前記最上位等級を有する複数のソフトウェアストリームの数は、前記複数の装置ストリームの数よりも１つ少なく、前記複数のソフトウェアストリームの第２サブセットは、前記複数のソフトウェアストリームの第１サブセットに含まれない全てのソフトウェアストリームを含む。
【０１０９】
ステートメント９．ステートメント１において、前記統計コレクターは、前記複数のソフトウェアストリームの各々に対して第１基準に対する第１値及び第２基準に対する第２値を決定する。
【０１１０】
ステートメント１０．ステートメント９において、前記ランカーは、前記第１基準に対する第１加重値及び前記第２基準に対する第２加重値を含み、前記第１加重値を使用した前記第１値に対する第１等級及び前記第２加重値を使用した前記第２値に対する第２等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定する。
【０１１１】
ステートメント１１．ステートメント９において、前記ランカーは、前記第１基準に対する基準値を含み、前記第１基準に対する基準値よりも大きい第１値を有するソフトウェアストリームに対して前記第１基準に従い、前記第１基準に対する基準値よりも小さい第１値を有するソフトウェアストリームに対して前記第２基準に従って前記複数のソフトウェアストリームを等級決定する。
【０１１２】
ステートメント１２．本発明の一実施形態によるコンピュータシステムで使用されるドライバーは、ホストから複数のソフトウェアストリームに関連する複数のコマンドを受信する受信機と、ウインドウの時間を測定するタイマーと、前記複数のコマンドに応答して、前記ウインドウの間に前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する統計コレクターと、前記複数のソフトウェアストリームの各々に対して前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定するランカーと、前記複数のソフトウェアストリームの第１サブセット内の各ソフトウェアストリームをソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）内の複数の装置ストリームの中の固有装置ストリームにマッピングし、前記複数のソフトウェアストリームの第２サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の統合装置ストリームにマッピングするマッパーと、前記複数のコマンドの各々に関連するソフトウェアストリームに対応する装置ストリームに対する装置ストリーム識別子（ＩＤ：ｉｄｅｎｔｉｆｉｅｒ）を追加的な複数のコマンドの各々に追加する装置ストリームＩＤアダーと、前記追加的な複数のコマンドの各々を前記ＳＳＤに伝送する伝送器と、を備える。
【０１１３】
ステートメント１３．ステートメント１２において、前記ドライバーは、前記複数のソフトウェアストリームから前記追加的な複数のコマンドを受信し、前記マッピングに従って前記追加的な複数のコマンドを前記複数の装置ストリームに割当する。
【０１１４】
ステートメント１４．ステートメント１２において、前記ウインドウは、スライディングウインドウ（ｓｌｉｄｉｎｇ  ｗｉｎｄｏｗ）であり、前記統計コレクターは、前記複数のコマンドの各々が前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の前記少なくとも１つの基準に対する少なくとも１つの値を調整する。
【０１１５】
ステートメント１５．ステートメント１２において、前記ウインドウは、不連続ウインド（ウｄｉｓｃｒｅｔｅ  ｗｉｎｄｏｗ）である。
【０１１６】
ステートメント１６．ステートメント１５において、前記ドライバーは、異なって命令される時まで前記マッピングを維持し、前記受信機は、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングするコマンドを受信する。
【０１１７】
ステートメント１７．ステートメント１５において、前記ドライバーは、複数の順次的な不連続ウインドウに対して前記複数のソフトウェアストリームを前記複数の装置ストリームに反復的に再マッピングする。
【０１１８】
ステートメント１８．ステートメント１２において、前記複数のソフトウェアストリームの第１サブセットは、最上位等級を有する複数のソフトウェアストリームを含み、前記最上位等級を有する複数のソフトウェアストリームの数は、前記複数の装置ストリームの数よりも１つ少なく、前記複数のソフトウェアストリームの第２サブセットは、前記複数のソフトウェアストリームの第１サブセットに含まれない全てのソフトウェアストリームを含む。
【０１１９】
ステートメント１９．ステートメント１２において、前記統計コレクターは、前記複数のソフトウェアストリームの各々に対して第１基準に対する第１値及び第２基準に対する第２値を決定する。
【０１２０】
ステートメント２０．ステートメント１９において、前記ランカーは、前記第１基準に対する第１加重値及び前記第２基準に対する第２加重値を含み、前記第１加重値を使用した前記第１値に対する第１等級及び前記第２加重値を使用した前記第２値に対する第２等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定する。
【０１２１】
ステートメント２１．ステートメント１９において、前記ランカーは、前記第１基準に対する基準値を含み、前記第１基準に対する基準値よりも大きい第１値を有するソフトウェアストリームに対して前記第１基準に従い、前記第１基準に対する基準値よりも小さい第１値を有するソフトウェアストリームに対して前記第２基準に従って前記複数のソフトウェアストリームを等級決定する。
【０１２２】
ステートメント２２．本発明の一実施形態によるコンピュータシステムで使用されるデータストリームの統合方法は、複数のソフトウェアストリームに関連し、複数の装置ストリームを含むソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を使用して処理される複数のコマンドを受信する段階と、前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する段階と、前記少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別（ｉｄｅｎｔｉｆｙｉｎｇ）する段階と、前記複数のソフトウェアストリームの第１サブセット内の各ソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第２サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の統合装置ストリームに対応付けるマッピングを生成する段階と、前記マッピングを生成した後に、前記複数のソフトウェアストリームに関連する第２複数のコマンドを受信する段階と、前記マッピングに応答して前記複数の装置ストリームの中の１つに前記複数のコマンドの各々を割当する段階と、前記割当された装置ストリームを使用して前記ＳＳＤで前記第２複数のコマンドの各々を処理する段階と、を有する。
【０１２３】
ステートメント２３．ステートメント２２において、前記方法は、前記複数のソフトウェアストリームに関連する前記複数のコマンドの処理に応答して前記ＳＳＤから結果を返す段階を更に含む。
【０１２４】
ステートメント２４．ステートメント２２において、前記複数のソフトウェアストリームに関連する前記複数のコマンドの各々は、ソフトウェアストリーム識別子（ＩＤ：ｉｄｅｎｔｉｆｉｅｒ）タグを含み、前記ＳＳＤからの前記結果の各々は、前記複数のソフトウェアストリームに関連する前記複数のコマンドの中の対応する１つからの前記ソフトウェアストリームＩＤタグを含む。
【０１２５】
ステートメント２５．ステートメント２２において、前記少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別する段階は、ウインドー内の少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別する段階を含む。
【０１２６】
ステートメント２６．ステートメント２５において、前記ウインドウは、スライディングウインドウである。
【０１２７】
ステートメント２７．ステートメント２６において、前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する段階は、前記複数のコマンドの各々が前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の少なくとも１つの基準に対する少なくとも１つの値を調整する段階を含む。
【０１２８】
ステートメント２８．ステートメント２５において、前記ウインドウは、不連続ウインドウである。
【０１２９】
ステートメント２９．ステートメント２８において、前記方法は、前記第２複数のコマンドを含む第２不連続ウインドウを識別する段階と、前記第２不連続ウインドウの間に前記第２複数のコマンドに応答して前記少なくとも１つの基準に対する少なくとも１つの第２値を決定する段階と、前記少なくとも１つの基準に対する少なくとも１つの第２値に応答して前記複数のソフトウェアストリームの第３及び第４サブセットを識別する段階と、前記複数のソフトウェアストリームの第３サブセット内の各ソフトウェアストリームを前記ＳＳＤ内の前記複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第４サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の前記複数の装置ストリームの中の統合装置ストリームに対応付ける第２マッピングを生成する段階と、を更に含む。
【０１３０】
ステートメント３０．ステートメント２８において、前記方法は、前記不連続ウインドウがクローズされた後に前記マッピングを維持する段階と、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングする要請を受信する段階と、第２不連続ウインドウを識別し、少なくとも１つの第２値を決定し、第３及び第４サブセットを識別し、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングする要請に応答して第２マッピングを生成する段階を遂行する段階と、を更に含む。
【０１３１】
ステートメント３１．ステートメント２２において、前記少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別する段階は、前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定する段階と、前記複数のソフトウェアストリームの数が前記複数の装置ストリームの数よりも１つ小さい最上位等級を有するソフトウェアストリームを含むように前記複数のソフトウェアストリームの第１サブセットを選択する段階と、前記複数のソフトウェアストリームの中から、前記複数のソフトウェアストリームの第１サブセット内に含まれない全てのソフトウェアストリームを含むように前記複数のソフトウェアストリームの第２サブセットを選択する段階と、を含む
【０１３２】
ステートメント３２．ステートメント３１において、前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する段階は、前記複数のソフトウェアストリームの各々に対して第１基準に対する第１値及び第２基準に対する第２値を決定する段階を含み、前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記複数のソフトウェアストリームの各々に対して前記第１基準に対する第１値及び前記第２基準に対する第２値に従って前記複数のソフトウェアストリームを等級決定する段階を含む。
【０１３３】
ステートメント３３．ステートメント３２において、前記第１基準に対する第１値及び前記第２基準に対する第２値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記第１基準に対する第１加重値及び前記第２基準に対する第２加重値を決定する段階と、前記第１加重値を使用した前記第１値に対する第１等級及び前記第２加重値を使用した前記第２値に対する第２等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定する段階と、を含む。
【０１３４】
ステートメント３４．ステートメント３２において、前記第１基準に対する第１値及び前記第２基準に対する第２値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記第１基準に対する基準値を決定する段階と、前記第１基準に対する基準値よりも大きい第１値を有するソフトウェアストリームに対して前記第１基準に従い、前記第１基準に対する基準値よりも小さい第１値を有するソフトウェアストリームに対して前記第２基準に従って前記複数のソフトウェアストリームを等級決定する段階と、を含む。
【０１３５】
ステートメント３５．本発明の一実施形態によるデータストリームの統合方法を、マシンによって実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、記録された非一時的な命令により、複数の装置ストリームを含むソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を使用して処理される複数のコマンドを受信する段階と、前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する段階と、前記少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別する段階と、前記複数のソフトウェアストリームの第１サブセット内の各ソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの前記第２サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の複数の装置ストリームの中の統合装置ストリームに対応付けるマッピングを生成する段階と、前記マッピングを生成した後に、前記複数のソフトウェアストリームに関連する第２複数のコマンドを受信する段階と、前記マッピングに応答して前記複数の装置ストリームの中の１つに前記複数のコマンドの各々を割当する段階と、前記割当された装置ストリームを使用して前記ＳＳＤで前記第２複数のコマンドの各々を処理する段階と、を実行させる。
【０１３６】
ステートメント３６．ステートメント３５において、前記記録媒体は、前記複数のソフトウェアストリームに関連する前記複数のコマンドの処理に応答して前記ＳＳＤから結果を返す段階を実行させる非一時的な命令語を更に含む。
【０１３７】
ステートメント３７．ステートメント３５において、前記複数のソフトウェアストリームに関連する前記複数のコマンドの各々は、ソフトウェアストリーム識別子（ＩＤ：ｉｄｅｎｔｉｆｉｅｒ）タグを含み、前記ＳＳＤからの前記結果の各々は、前記複数のソフトウェアストリームに関連する前記複数のコマンドの中の対応する１つからの前記ソフトウェアストリームＩＤタグを含む。
【０１３８】
ステートメント３８．ステートメント３５において、前記少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別する段階は、ウインドウ内の少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別する段階を含む。
【０１３９】
ステートメント３９．ステートメント３８おいて、前記ウインドウは、スライディングウインドウである。
【０１４０】
ステートメント４０．ステートメント３９において、前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する段階は、前記複数のコマンドの各々が、前記ウインドウに進入し、前記ウインドウから進出することによって、前記ウインドウ内の少なくとも１つの基準に対する少なくとも１つの値を調整する段階を含む。
【０１４１】
ステートメント４１．ステートメント３８において、前記ウインドウは、不連続ウインドウである。
【０１４２】
ステートメント４２．ステートメント４１において、前記記録媒体は、前記第２複数のコマンドを含む第２不連続ウインドウを識別する段階と、前記第２不連続ウインドウの間に前記第２複数のコマンドに応答して前記少なくとも１つの基準に対する少なくとも１つの第２値を決定する段階と、前記少なくとも１つの基準に対する少なくとも１つの第２値に応答して前記複数のソフトウェアストリームの第３及び第４サブセットを識別する段階と、前記複数のソフトウェアストリームの第３サブセット内の各ソフトウェアストリームを前記ＳＳＤ内の前記複数の装置ストリームの中の固有装置ストリームに対応付け、前記複数のソフトウェアストリームの第４サブセット内の全てのソフトウェアストリームを前記ＳＳＤ内の前記複数の装置ストリームの中の統合装置ストリームに対応付ける第２マッピングを生成する段階と、を実行させる非一時的な命令語を更に含む。
【０１４３】
ステートメント４３．ステートメント４１において、前記記録媒体は、前記不連続ウインドウがクローズされた後に前記マッピングを維持する段階と、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングする要請を受信する段階と、前記第２不連続ウインドウを識別し、少なくとも１つの第２値を決定し、第３及び第４サブセットを識別し、前記複数のソフトウェアストリームを前記複数の装置ストリームに再マッピングする要請に応答して第２マッピングを生成する段階を遂行する段階と、を実行させる非一時的な命令語を更に含む。
【０１４４】
ステートメント４４．ステートメント３５において、前記少なくとも１つの基準に対する少なくとも１つの値に応答して前記複数のソフトウェアストリームの第１及び第２サブセットを識別する段階は、前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定する段階と、前記複数のソフトウェアストリームの数が前記複数の装置ストリームの数よりも１つ小さい最上位等級を有するソフトウェアストリームを含むように前記複数のソフトウェアストリームの第１サブセットを選択する段階と、前記複数のソフトウェアストリームの中から、前記複数のソフトウェアストリームの第１サブセット内に含まれない全てのソフトウェアストリームを含むように前記複数のソフトウェアストリームの第２サブセットを選択する段階と、を含む。
【０１４５】
ステートメント４５．ステートメント４４において、前記複数のコマンドに応答して、前記複数のソフトウェアストリームの各々に対して少なくとも１つの基準に対する少なくとも１つの値を決定する段階は、前記複数のソフトウェアストリームの各々に対して第１基準に対する第１値及び第２基準に対する第２値を決定する段階を含み、前記少なくとも１つの基準に対する少なくとも１つの値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記複数のソフトウェアストリームの各々に対して前記第１基準に対する第１値及び前記第２基準に対する第２値に従って前記複数のソフトウェアストリームを等級決定する段階を含む。
【０１４６】
ステートメント４６．ステートメント４５において、前記第１基準に対する第１値及び前記第２基準に対する第２値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記第１基準に対する第１加重値及び前記第２基準に対する第２加重値を決定する段階と、前記第１加重値を使用した前記第１値に対する第１等級及び前記第２加重値を使用した前記第２値に対する第２等級の加重値の合計に従って前記複数のソフトウェアストリームを等級決定する段階と、を含む。
【０１４７】
ステートメント４７．ステートメント４５において、前記第１基準に対する第１値及び前記第２基準に対する第２値に従って前記複数のソフトウェアストリームを等級決定する段階は、前記第１基準に対する基準値を決定する段階と、前記第１基準に対する基準値よりも大きい第１値を有するソフトウェアストリームに対して前記第１基準に従い、前記第１基準に対する基準値よりも小さい第１値を有するソフトウェアストリームに対して前記第２基準に従って前記複数のソフトウェアストリームを等級決定する段階と、を含む。
【０１４８】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【０１４９】
１０５    マシン
１１０    プロセッサ
１１５    メモリ
１２０    ソリッドステートドライブ（ＳＳＤ）（ストレージ装置）
１２５    メモリコントローラ
１３０    ストレージコントローラ
２０５    クロック
２１０    ネットワークコネクター
２１５    バス
２２０    使用者インターフェイス
２２５    Ｉ／Ｏエンジン
３０５    ホストインターフェイスロジック
３１０    ＳＳＤコントローラ
３１５−１〜３１５−８    フラッシュメモリチップ
３２０−１〜３２０−４    チャンネル
３２５    フラッシュ変換階層
４０５−１〜４０５−ｋ    コマンド
４１０−１〜４１０−ｎ    ソフトウェアストリーム
４１５    タグ
４２０−１〜４２０−ｍ    装置ストリーム
４２５    マッピング
５０５    受信機
５１０    タイマー
５１５    統計コレクター
５２０    ランカー
５２５    マッパー
５３０    伝送器
５３５    装置ストリームＩＤアダー
６０５    ウインドウ
７０５、８０５    基準
７１０    頻度
７１５    累積データサイズ
７２０    順次書込みの数
７２５    サービス品質
７３０    遊休時間
８１０    基準値
８１５    比較器
８２０    算術論理ユニット（ＡＬＵ）
８２５−１〜８２５−ｌ    加重値
９０５−１    第１値
９０５−２    第２値
９１０    選択された値
【図１】
2018073412.tif 000005
【図２】
2018073412.tif 000006
【図３】
2018073412.tif 000007
【図４】
2018073412.tif 000008
【図５】
2018073412.tif 000009
【図６】
2018073412.tif 000010
【図７】
2018073412.tif 000011
【図８】
2018073412.tif 000012
【図９Ａ】
2018073412.tif 000013
【図９Ｂ】
2018073412.tif 000014
【図１０Ａ】
2018073412.tif 000015
【図１０Ｂ】
2018073412.tif 000016
【図１１】
2018073412.tif 000017
【図１２】
2018073412.tif 000018
【図１３】
2018073412.tif 000019