(57)【要約】【課題】チャンクのアクセス特性を反映してストリーム識別子を割り当て管理するソリッドステートドライブ（ＳＳＤ）を提供する。【解決手段】データ格納用フラッシュメモリ、ＳＳＤ内の複数の装置ストリームに対する支援手段、提出キューとチャンクストリームマッパのための格納部を含み複数の書込み命令に応答しフラッシュメモリに対しデータ書込みを管理するＳＳＤ制御器、フラッシュ変換階層を有し、フラッシュ変換階層は、論理ブロックアドレス（ＬＢＡ）を含む書込み命令を受信する受信機、ＬＢＡをチャンクＩＤにマッピングするＬＢＡマッパ、チャンクストリームマッパを用いチャンクＩＤに基づきストリームＩＤを選択するストリーム選択ロジック、ストリームＩＤを書込み命令に追加するストリームＩＤアダー、チャンクＩＤを提出キューに配置するキューアー、チャンクＩＤを提出キューから除去しチャンクストリームマッパを更新する背景ロジックを含む。【選択図】  図３
2018037088.tif 000002
【特許請求の範囲】
【請求項１】
ソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）であって、
データを格納するフラッシュメモリと、
前記ソリッドステートドライブ内の複数の装置ストリームに対する支援手段と、
提出キュー及びチャンクストリームマッパ（ｃｈｕｎｋ−ｔｏ−ｓｔｒｅａｍ  ｍａｐｐｅｒ）のための格納部を含み、複数の書込み命令に応答して前記フラッシュメモリに対するデータ書込みを管理するソリッドステートドライブ制御器と、
フラッシュ変換階層と、を有し、
前記フラッシュ変換階層は、論理ブロックアドレス（ＬＢＡ、ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ）を含む書込み命令を受信する受信機と、
前記論理ブロックアドレスをチャンク識別子（ｃｈｕｎｋ  ＩＤ）にマッピングする論理ブロックアドレスマッパと、
前記チャンクストリームマッパを用いて前記チャンク識別子に基づき、ストリーム識別子を選択するストリーム選択ロジックと、
前記ストリーム識別子を前記書込み命令に追加するストリーム識別子アダー（ａｄｄｅｒ）と、
前記チャンク識別子を前記提出キューに配置するキューアー（ｑｕｅｕｅｒ）と、
前記チャンク識別子を前記提出キューから除去し、前記チャンクストリームマッパを更新する背景ロジック（ｂａｃｋｇｒｏｕｎｄ  ｌｏｇｉｃ）と、を含むことを特徴とするソリッドステートドライブ。
【請求項２】
前記チャンクストリームマッパは、順次、頻度、最新表（Ｓｅｑｕｅｎｔｉａｌ、Ｆｒｅｑｕｅｎｃｙ、Ｒｅｃｅｎｃｙ  ｔａｂｌｅ：以下、ＳＦＲ表と記す）を含み、前記ＳＦＲ表は、前記チャンク識別子及び前記チャンク識別子に対する前記ストリーム識別子を含むことを特徴とする請求項１に記載のソリッドステートドライブ。
【請求項３】
前記背景ロジックは、前記論理ブロックアドレスが以前の書込み命令の第２論理ブロックアドレスに順次的であれば、以前のストリームを選択する順次（ｓｅｑｕｅｎｔｉａｌｉｔｙ）ロジックを含むことを特徴とする請求項２に記載のソリッドステートドライブ。
【請求項４】
前記背景ロジックは、前記チャンク識別子に対する現在のアクセス時間、前記チャンク識別子に対する以前のアクセス時間、及び減衰期間に基づいて最新ウェイト（ｗｅｉｇｈｔ）を計算する最新ロジックと、
前記最新ウェイトに基づいて前記チャンク識別子に対するアクセスカウントを調節し、調節されたアクセスカウントを生成するアクセスカウント調節器と、
前記チャンク識別子に対する前記調節されたアクセスカウントに基づいて前記ストリーム識別子を調節するストリーム識別子調節器と、を含むことを特徴とする請求項２に記載のソリッドステートドライブ。
【請求項５】
前記チャンクストリームマッパは、ノードエントリ（ｎｏｄｅ  ｅｎｔｒｙ）を含み、前記ノードエントリは、前記チャンク識別子及び前記チャンク識別子に対する前記ストリーム識別子を含むことを特徴とする請求項１に記載のソリッドステートドライブ。
【請求項６】
前記背景ロジックは、前記チャンク識別子に基づいて前記ストリーム識別子を昇格（ｐｒｏｍｏｔｅ）する時を判断する昇格ロジックと、
前記チャンク識別子に対する前記ストリーム識別子に応答して、複数のストリーム識別子に対応する複数のキューの第１番目のキューに前記チャンク識別子を配置する第２キューアーと、
前記チャンク識別子に基づいて前記ストリーム識別子を降格する時を判断する降格ロジックと、を含むことを特徴とする請求項５に記載のソリッドステートドライブ。
【請求項７】
前記降格ロジックは、前記チャンク識別子に対する有効期限が経過したか否かを判断する比較器と、
前記チャンク識別子に対する前記有効期限が経過した時、前記ストリーム識別子を減らすデクリメンタ（ｄｅｃｒｅｍｅｎｔｏｒ）と、を含み、
前記第２キューアーは、前記チャンク識別子に対する前記減少されたストリーム識別子に応答して、前記複数のストリーム識別子に対応する前記複数のキューの中の第２番目のキューに前記チャンク識別子を配置するように動作することを特徴とする請求項６に記載のソリッドステートドライブ。
【請求項８】
コンピューティングシステム用ドライバーであって、
論理ブロックアドレス（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ：ＬＢＡ）を含むソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）に対する書込み命令を受信する受信機と、
前記論理ブロックアドレスをチャンク識別子（ｉｄｅｎｔｉｆｉｅｒ：ＩＤ）にマッピングする論理ブロックアドレスマッパと、
ホストコンピュータシステムのメモリに格納されたチャンクストリームマッパを用いて前記チャンク識別子に基づいてストリーム識別子を選択するストリーム選択ロジックと、
前記ストリーム識別子を前記書込み命令に追加するストリーム識別子アダーと、
前記チャンク識別子を前記メモリに格納された提出キューに配置するキューアーと、
前記提出キューから前記チャンク識別子を除去し、前記チャンクストリームマッパを更新する背景ロジックと、を有することを特徴とするドライバー。
【請求項９】
前記チャンクストリームマッパは、順次、頻度、最新表（Ｓｅｑｕｅｎｔｉａｌ、Ｆｒｅｑｕｅｎｃｙ、Ｒｅｃｅｎｃｙ  ｔａｂｌｅ：以下、ＳＦＲ表と記す）を含み、前記ＳＦＲ表は、前記チャンク識別子及び前記チャンク識別子に対する前記ストリーム識別子を含むことを特徴とする請求項８に記載のドライバー。
【請求項１０】
前記背景ロジックは、前記論理ブロックアドレスが以前の書込み命令の第２論理ブロックアドレスに順次的であれば、以前のストリームを選択する順次ロジックを含むことを特徴とする請求項９に記載のドライバー。
【請求項１１】
前記背景ロジックは、前記チャンク識別子に対する現在のアクセス時間、前記チャンク識別子に対する以前のアクセス時間、及び減衰期間に基づいて最新ウェイトを計算する最新ロジックと、
前記最新ウェイトに基づいて前記チャンク識別子に対するアクセスカウントを調節し、調節されたアクセスカウントを生成するアクセスカウント調節器と、
前記チャンク識別子に対する前記調節されたアクセスカウントに基づいて前記ストリーム識別子を調節するストリーム識別子調節器と、を含むことを特徴とする請求項９に記載のドライバー。
【請求項１２】
前記チャンクストリームマッパは、ノードエントリを含み、前記ノードエントリは、前記チャンク識別子及び前記チャンク識別子に対する前記ストリーム識別子を含むことを特徴とする請求項８に記載のドライバー。
【請求項１３】
前記背景ロジックは、前記チャンク識別子に基づいて前記ストリーム識別子を昇格する時を判断する昇格ロジックと、
前記チャンク識別子に対する前記ストリーム識別子に応答して、複数のストリーム識別子に対応する複数のキューの第１番目のキューに前記チャンク識別子を配置する第２キューアーと、
前記チャンク識別子に基づいて前記ストリーム識別子を降格する時を判断する降格ロジックと、を含むことを特徴とする請求項１２に記載のドライバー。
【請求項１４】
前記降格ロジックは、前記チャンク識別子に対する有効期限が経過したか否かを判断する比較器と、
前記チャンク識別子に対する前記有効期限が経過した時、前記ストリーム識別子を減らすデクリメンタと、を含み、
前記第２キューアーは、前記チャンク識別子に対する前記減少されたストリーム識別子に応答して、前記複数のストリーム識別子に対応する前記複数のキューの中の第２番目のキューに前記チャンク識別子を配置するように動作することを特徴とする請求項１３に記載のドライバー。
【請求項１５】
ソフトウェアソースから書込み命令を受信する段階と、
前記書込み命令で論理ブロックアドレス（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ：ＬＢＡ）を判断する段階と、
前記論理ブロックアドレスを含むソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）でチャンクに対するチャンク識別子（ｉｄｅｎｔｉｆｉｅｒ：ＩＤ）を識別する段階と、
前記チャンク識別子と関連するストリーム識別子にアクセスする段階と、
前記ストリーム識別子を前記書込み命令に割り当てる段階と、
前記割り当てられたストリーム識別子を用いて前記ソリッドステートドライブで前記書込み命令を処理する段階と、
前記チャンク識別子と関連した前記ストリーム識別子の背景更新（ｂａｃｋｇｒｏｕｎｄ  ｕｐｄａｔｅ）を遂行する段階と、を有することを特徴とするストリーム識別子割り当て方法。
【請求項１６】
前記論理ブロックアドレスが第２書込み命令の第２論理ブロックアドレスに順次的である否かを判断する段階と、
前記論理ブロックアドレスが前記第２書込み命令の前記第２論理ブロックアドレスに順次的である場合、前記第２書込み命令に割り当てられた前記第２ストリーム識別子を判断する段階と、
前記書込み命令に前記第２ストリーム識別子を割り当てる段階と、をさらに有することを特徴とする請求項１５に記載のストリーム識別子割り当て方法。
【請求項１７】
前記チャンク識別子と関連した前記ストリーム識別子の背景更新を遂行する段階は、前記チャンク識別子を提出キューに追加する段階と、
前記チャンク識別子が前記提出キューの先頭にある時、前記チャンク識別子を前記提出キューから除去する段階と、を含むことを特徴とする請求項１５に記載のストリーム識別子割り当て方法。
【請求項１８】
前記チャンク識別子と関連した前記ストリーム識別子の背景更新を遂行する段階は、前記チャンク識別子に対するアクセスカウントを増加させる段階と、
前記チャンク識別子に対する現在のアクセス時間及び以前のアクセス時間に応答して前記チャンク識別子に対する最新ウェイトを計算する段階と、
前記最新ウェイトに応答して前記チャンク識別子に対する前記アクセスカウントを更新する段階と、
前記更新されたアクセスカウントに応答して前記チャンク識別子に対する前記ストリーム識別子を判断する段階と、を含むことを特徴とする請求項１５に記載のストリーム識別子割り当て方法。
【請求項１９】
前記チャンク識別子と関連した前記ストリーム識別子の背景更新を遂行する段階は、前記チャンク識別子を複数のキューの中の１つである前記ストリーム識別子に対応するキューに配置する段階と、
前記チャンク識別子が前記キューの先頭に到達する時、前記チャンク識別子を降格するか否かを判断する段階と、を含むことを特徴とする請求項１５に記載のストリーム識別子割り当て方法。
【請求項２０】
前記チャンク識別子と関連した前記ストリーム識別子の背景更新を遂行する段階は、アクセスカウント及び装置寿命に応答して前記チャンク識別子に対する有効期限を判断する段階を含み、
前記チャンク識別子が前記キューの先頭に到達する時、前記チャンク識別子を降格するか否かを判断する段階は、前記チャンク識別子に対する前記有効期限が経過した時、前記ストリーム識別子に対応する前記キューから前記チャンク識別子を除去する段階と、
前記ストリーム識別子を減少する段階と、
前記チャンク識別子を前記減少したストリーム識別子に対応する第２キューに配置する段階と、を含むことを特徴とする請求項１９に記載のストリーム識別子割り当て方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソリッドステートドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅｓ：ＳＳＤｓ）に関し、特に、マルチストリームソリッドステートドライブでストリームを管理するソリッドステートドライブ及びドライバー並びにストリーム識別子割り当て方法に関する。
【背景技術】
【０００２】
マルチストリーミングソリッドステートドライブは、入力データのスマート配置を許容して、内部的なガーベッジコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ：ＧＣ）の影響を最少化し、書込み増幅を減らす。
マルチストリーミングは、単純なタグ（ｔａｇ）（ストリーム識別子）をホストからソリッドステートドライブに伝送する書込み命令の各々に追加することによって達成される。
このタグに基づいて、ソリッドステートドライブはデータを共通ブロックにグループ化することができる。
【０００３】
しかし、マルチストリーミング装置の長所を利用するために、ソフトウェアソース（ｓｏｕｒｃｅｓ）がデータ寿命のような類似する属性（ｐｒｏｐｅｒｔｉｅｓ）を有するデータに共通ストリームを割り当てできるように、アプリケーションはソリッドステートドライブがマルチストリーミングを支援することを認識する必要がある。
ソフトウェアマルチストリームを認識するようにすることはソフトウェアを修正する必要がある。
【０００４】
しかしながら、任意のソフトウェアを修正することは、該当ソフトウェアの動作の意図しない変化を加えるリスクを伴うという問題がある。
市場に数多い異なるソフトウェア製品が出回っているので、マルチストリーミングを支援するように少数のこのようなソフトウェア製品が修正されると予想することも可能性が低い提案であると考えられる。
従って、修正を必要とするソフトウェア無しでマルチストリーミングを支援する方法に対する要求を解決するという課題がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第９，１７６，８６４号明細書
【特許文献２】米国特許第９，１８３，１３６号明細書
【特許文献３】米国特許第９，２０１，８０４号明細書
【特許文献４】米国特許第９，４３６，６３４号明細書
【特許文献５】米国特許第９，４９５，１０２号明細書
【特許文献６】米国特許第９，５２１，２０１号明細書
【特許文献７】韓国特許第１０−１５４４３０９号公報
【特許文献８】米国特許出願公開第２０１５／０３０９７４２号明細書
【特許文献９】米国特許出願公開第２０１／６０１７９６７８号明細書
【特許文献１０】米国特許出願公開第２０１６／０２８３１２４号明細書
【特許文献１１】米国特許出願公開第２０１６／０３０６５５２号明細書
【特許文献１２】米国特許出願公開第２０１６／０３５７４３７号明細書
【特許文献１３】米国特許出願公開第２０１７／００２４１４１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は上記従来のソリッドステートドライブでのマルチストリームにおける問題点に鑑みてなされたものであって、本発明の目的は、チャンクのアクセス特性を反映してストリーム識別子を割り当て、管理することができるソリッドステートドライブを提供する。
また、本発明の他の目的はコンピューティングシステム用のドライバー並びにストリーム識別子割り当て方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた本発明によるソリッドステートドライブは、ソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）であって、データを格納するフラッシュメモリと、前記ソリッドステートドライブ内の複数の装置ストリームに対する支援手段と、提出キュー及びチャンクストリームマッパ（ｃｈｕｎｋ−ｔｏ−ｓｔｒｅａｍ  ｍａｐｐｅｒ）のための格納部を含み、複数の書込み命令に応答して前記フラッシュメモリに対するデータ書込みを管理するソリッドステートドライブ制御器と、フラッシュ変換階層と、を有し、前記フラッシュ変換階層は、論理ブロックアドレス（ＬＢＡ、ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ）を含む書込み命令を受信する受信機と、前記論理ブロックアドレスをチャンク識別子（ｃｈｕｎｋ  ＩＤ）にマッピングする論理ブロックアドレスマッパと、前記チャンクストリームマッパを用いて前記チャンク識別子に基づき、ストリーム識別子を選択するストリーム選択ロジックと、前記ストリーム識別子を前記書込み命令に追加するストリーム識別子アダー（ａｄｄｅｒ）と、前記チャンク識別子を前記提出キューに配置するキューアー（ｑｕｅｕｅｒ）と、前記チャンク識別子を前記提出キューから除去し、前記チャンクストリームマッパを更新する背景ロジック（ｂａｃｋｇｒｏｕｎｄ  ｌｏｇｉｃ）と、を含むことを特徴とする。
【０００８】
上記目的を達成するためになされた本発明によるドライバーは、コンピューティングシステム用ドライバーであって、論理ブロックアドレス（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ：ＬＢＡ）を含むソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）に対する書込み命令を受信する受信機と、前記論理ブロックアドレスをチャンク識別子（ｉｄｅｎｔｉｆｉｅｒ：ＩＤ）にマッピングする論理ブロックアドレスマッパと、ホストコンピュータシステムのメモリに格納されたチャンクストリームマッパを用いて前記チャンク識別子に基づいてストリーム識別子を選択するストリーム選択ロジックと、前記ストリーム識別子を前記書込み命令に追加するストリーム識別子アダーと、前記チャンク識別子を前記メモリに格納された提出キューに配置するキューアーと、前記提出キューから前記チャンク識別子を除去し、前記チャンクストリームマッパを更新する背景ロジックと、を有することを特徴とする。
【０００９】
上記目的を達成するためになされた本発明によるストリーム識別子割り当て方法は、ソフトウェアソースから書込み命令を受信する段階と、前記書込み命令で論理ブロックアドレス（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ：ＬＢＡ）を判断する段階と、前記論理ブロックアドレスを含むソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）でチャンクに対するチャンク識別子（ｉｄｅｎｔｉｆｉｅｒ：ＩＤ）を識別する段階と、前記チャンク識別子と関連するストリーム識別子にアクセスする段階と、前記ストリーム識別子を前記書込み命令に割り当てる段階と、前記割り当てられたストリーム識別子を用いて前記ソリッドステートドライブで前記書込み命令を処理する段階と、前記チャンク識別子と関連した前記ストリーム識別子の背景更新（ｂａｃｋｇｒｏｕｎｄ  ｕｐｄａｔｅ）を遂行する段階と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明に係るソリッドステートドライブ及びドライバー並びにストリーム識別子割り当て方法によれば、順次、頻度、及び最新を考慮してストリーム識別子が割り当てられる。
また、アクセスカウント及び有効期限を考慮してチャンクに割り当てられたストリーム識別子が調節される。
したがって、チャンクのアクセス特性を反映してストリーム識別子を割り当て、管理することができる自動ストリーム検出及び割り当てアルゴリズムを提供できるという効果がある。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係るソリッドステートドライブを有するマシンの概略を示す概略図である。
【図２】図１のマシンの追加的な詳細を示すブロック図である。
【図３】図１のソリッドステートドライブの詳細を示すブロック図である。
【図４】図３のフラッシュ変換階層の詳細を示すブロック図である。
【図５】チャンク識別子とマッピングされ、以後に図１のソリッドステートドライブ用ストリーム識別子とマッピングされる多様な命令の論理ブロックアドレスを示す図である。
【図６】図５のストリーム識別子を含むように修正され、図１のソリッドステートドライブに伝送される図５の多様な命令を示す図である。
【図７】図５の論理ブロックアドレスを図５のチャンク識別子とマッピングする算術論理部を示すブロック図である。
【図８】本発明の第１実施形態に係るチャンク識別子をストリーム識別子にマッピングするのに使用される順次、頻度、最新表を示す表である。
【図９】本発明の第１実施形態に係る図３のフラッシュ変換階層及び図４の背景ロジックの追加的な詳細を示すブロック図である。
【図１０】図９の順次ロジックの詳細を示す図である。
【図１１】図９の最新ロジックを用いて最新ウェイトを計算するところを説明するための図である。
【図１２】図９のアクセスカウント調節器で図１１の最新ウェイトを用いてアクセスカウントを調節するところを説明するための図である。
【図１３】図９のストリーム識別子調節器を用いて図１２の調節されたアクセスカウントからストリーム識別子を計算するところを説明するための図である。
【図１４】本発明の第２実施形態に係るチャンク識別子をストリーム識別子とマッピングするのに使用することができるノードを示す図である。
【図１５】本発明の第２実施形態に係る図４の背景ロジックの詳細を示すブロック図である。
【図１６】図１５のキューでチャンク識別子の昇格及び降格を説明するための図である。
【図１７】図１５の昇格ロジックの詳細を示すブロック図である。
【図１８】本発明の第２実施形態に係る調節されたアクセスカウントからストリーム識別子を計算するところを説明するための図である。
【図１９】図１７のチャンク有効期限ロジックの詳細を説明するための図である。
【図２０】図１５の降格ロジックの詳細を示すブロック図である。
【図２１Ａ】本発明の実施形態に係る図５の書込み命令に対するストリーム識別子を判断するための例示的な手続を説明するためのフローチャートである。
【図２１Ｂ】本発明の実施形態に係る図５の書込み命令に対するストリーム識別子を判断するための例示的な手続を説明するためのフローチャートである。
【図２２】本発明の実施形態に係る図５の論理ブロックアドレスを図５のチャンク識別子とマッピングする論理ブロックアドレスマッパに対する例示的な手続を説明するためのフローチャートである。
【図２３Ａ】本発明の第１実施形態に係る順次ロジックを利用してチャンクに対するストリーム識別子を更新するための例示的な手続を説明するためのフローチャートである。
【図２３Ｂ】本発明の第１実施形態に係る順次ロジックを利用してチャンクに対するストリーム識別子を更新するための例示的な手続を説明するためのフローチャートである。
【図２４】本発明の第１実施形態に係る図８のＳＦＲ表の背景更新を遂行するための例示的な手続を説明するためのフローチャートである。
【図２５Ａ】本発明の第２実施形態に係る図１４のノードの背景更新を遂行するための例示的な手続を説明するためのフローチャートである。
【図２５Ｂ】本発明の第２実施形態に係る図１４のノードの背景更新を遂行するための例示的な手続を説明するためのフローチャートである。
【図２５Ｃ】本発明の第２実施形態に係る図１４のノードの背景更新を遂行するための例示的な手続を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
次に、本発明に係るソリッドステートドライブ及びドライバー並びにストリーム識別子割り当て方法を実施するための形態の具体例を図面を参照しながら説明する。
【００１３】
しかし、本発明はこのような具体的な詳細無しでもこの分野に通常的な技術を有する者によって実施されることができることが理解されるべきである。再び言えば、広く公知された方法、手続、構成要素、回路、及びネットワークは実施形態を不必要に曖昧にしないように説明され得る。
第１、第２等の用語が多様な構成要素を説明するために使用されるが、構成要素はこの用語によって限定されないことが理解されるべきである。このような用語は単なる構成要素を互いに区分するために使用される。例えば、本発明の技術的思想から逸脱されなく、第１モジュールは第２モジュールと称され、同様に第１モジュールは第２モジュールと称されることができる。
【００１４】
本発明の説明で使用する用語は、具体的な実施形態を説明するためのものであり、本発明の技術的思想を制限することを意図しない。
ここで使用する“及び／又は”の用語は１つ以上の関連したアイテムの中でいずれか又はすべての可用である組み合わせを参照することが理解されるべきである。
“含む”及び／又は“含む”の用語は言及された特性、整数、段階、動作、及び／又は構成要素の存在を説明し、１つ以上の特性、整数、段階、動作、構成要素、及び／又はこれらの組み合わせの存在又は追加を排除しない。
図面の構成要素及び特性は、スケールに合うように示さないこともあり得る。
【００１５】
アプリケーション階層と独立的に自動ストリーム検出及び割り当てを遂行するための装置及び方法が提案される。
ストリーム割り当ては、実時間作業量（ｗｏｒｋｌｏａｄ）検出に基づく、アプリケーションに独立的である。
ストリーム割り当ては、マルチストリームで利用可能であるソリッドステートドライブ（ＳＳＤｓ、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅｓ）に適用することができる。
ストリーム割り当てプロトコルの具現は、幾つかの長所を有する。
【００１６】
第１に、アプリケーションをまったく修正する必要がない。
しかし、独自のストリーム優先順位を割り当てるアプリケーションがこのアプローチに組み込むことができる。
例えば、ストリーム割り当てプロトコルはアプリケーション割り当てストリーム優先順位に完全にしたがう。
又は、ストリーム割り当てプロトコルは任意の必要であるウェイト値を利用して、アプリケーション割り当てストリーム優先順位及び計算されたストリーム割り当てを組み合わせるウェイト和を遂行することができる。
【００１７】
第２に、マルチストリームで利用可能である装置を使用しない任意のアプリケーションは、自動ストリーム検出及び割り当てを利用することができる。
第３に、アプリケーションは、ハードウェアからストリーム関連情報を認識する必要がない。
第４に、ストリーム割り当てプロトコルは、各マルチストリーム活性ソリッドステートドライブを別々に管理し、アプリケーションが多重ソリッドステートドライブを使用し、そしてマルチストリーム活性及び非マルチストリーム活性ソリッドステートドライブを混在させることができる。
【００１８】
第５に、ストリーム割り当ては、ファイルシステム、ブロック階層、装置ドライバー、ソリッドステートドライブの内部（例えば、フラッシュ変換階層で）等でのようなシステムの任意の必要である階層で遂行され、書込み命令の開始アドレス（或いはストリーム割り当てプロトコルがファイルシステム階層で具現された場合にはファイルオフセット）が識別される。
【００１９】
ソリッドステートドライブの全体アドレス空間は、複数の固定サイズチャンク（ｃｈｕｎｋｓ）に分割することができる。
このチャンクサイズは、任意の必要であるサイズであり、例えば５１２バイトセクターの倍数である。
要請の開始論理ブロックアドレス（ＬＢＡ）は、論理ブロックアドレスをチャンク当たりセクターの数で割ることによって、さらに一般的には、チャンクサイズで割ることによって、チャンク識別子（ＩＤ）に変換することができる。
【００２０】
本発明の第１実施形態で、順次、頻度、及び最新（Ｓｅｑｕｅｎｔｉａｌ、Ｆｒｅｑｕｅｎｃｙ、Ｒｅｃｅｎｃｙ：ＳＦＲ）アプローチがストリーム割り当てを判断するのに使用される。
●順次（Ｓｅｑｕｅｎｔｉａｌ）：新しい要請の開始論理ブロックアドレスが以前の要請の末尾論理ブロックアドレスに隣接すれば（即ち、書込み命令が順次書込みと関連されれば）、第２書込み命令には以前の書込み命令と同一のストリーム識別子が割り当てることができる。
このアプローチは、順次要請のグループが短い期間内に発行（ｉｓｓｕｅ）されれば、類似の寿命を有することと推定する。
書込み命令が互いに異なるソース（アプリケーション、ファイルシステム、仮想マシン等）によって実行（ｉｓｓｕｅ）され、混在する可能性があるので、ソリッドステートドライブの観点からは書込み命令は厳格な順次パターンに従わないことがある。
この可能性を処理するために、順次は、ウインドウ（サイズは可変できる）内の以前の命令の数と関連して判断することができる。
例えば、４つのウインドウサイズは、入力される要請が以前の４つの要請の中でいずれと順次的であるかを判断する。
【００２１】
●頻度（Ｆｒｅｑｕｅｎｃｙ）：頻度は、開始論理ブロックアドレスがアクセスされる回数を示す。
頻度は、アクセスカウントで測定することができる。
チャンクがアクセス（書込み）される時毎に、該当チャンクに対するアクセスカウントは１つずつ増加する。
さらに高いアクセスカウントは、該当チャンクに対するさらに短い寿命を示す。
したがって、頻度は、データチャンクの温度を反映する。
【００２２】
●最新（Ｒｅｃｅｎｃｙ）：最新は、データチャンクの暫定区域性（ｔｅｍｐｏｒａｌ  ｌｏｃａｌｉｔｙ）を示す。
例えば、１つのチャンクは特定な期間の間にさらに頻繁にアクセスされ、高いアクセスカウントを累積するが、その後に使用されない可能性がある。
この状況で、該当チャンクを長期間ホットストリームに維持するこことは望ましくない。
チャンクは、最も最近の期間内に頻繁にアクセスされる場合のみに“熱い”（ホット：ｈｏｔ）としてみなされる。
本発明の一実施形態で、減衰期間（ｄｅｃａｙ  ｐｅｒｉｏｄ）は、すべてのチャンクに対して予め定義されることができる。チャンクが最後のＮ減衰期間内にアクセスされなければ、アクセスカウントは２Ｎで割られる。
【００２３】
チャンクに対するストリーム識別子は、頻度及び最新（そして、適用可能すれば、順次）の全てによって判断される。
チャンクが頻繁にアクセスされる時に頻度はチャンクをさらに熱い（ホット）ストリームに昇格（ｐｒｏｍｏｔｅ）し、反面、チャンクが最後の減衰期間の間に使用されなければ、最新は該当チャンクをさらに冷たい（ｃｏｌｄ）ストリームに降格（ｄｅｍｏｔｅ）する。
【００２４】
本発明の一実施形態で、アクセスカウントをストリーム識別子に変換するのにログスケール（ｌｏｇ  ｓｃａｌｅ）が使用され、これは装置ストリームの数がアクセスカウントに対する値の範囲よりはるかに小さい事実を反映することができる。
したがって、例えば、
最新ウェイト＝２（（現在時間−最後アクセス時間）／（減衰期間）
ストリーム識別子＝ｌｏｇ（アクセスカウント／最新ウェイト）
【００２５】
チャンクに対するストリーム識別子の更新は、背景作業（ｂａｃｋｇｒｏｕｎｄ  ｔａｓｋ）として実行されて入力／出力（Ｉ／Ｏ）性能に対する影響を最小化する。
本発明の第２実施形態で、マルチキュー（ｍｕｌｔｉ−ｑｕｅｕｅ）アプローチを使用する。
各装置ストリームに対して、キューを定義することができる。
つまり、多重装置ストリームが存在するので、マルチキューが存在する。
マルチキューアルゴリズムは、２つの互いに異なる機能的モジュールに分割される。
１つのモジュールは、各チャンクをさらに低いキューからさらに高いキューに昇格することを処理し、他のモジュールは低い使用するか、又は使用しないチャンクのさらに高いキューからさらに低いキューへの降格を処理する。
チャンクのアクセスカウントが高いほど、チャンクはさらに熱いとみなされ、したがって該当チャンクはさらに高いキューに配置される。
昇格及び降格の全ては背景作業として実行され、Ｉ／Ｏ性能への影響を最小化することができる。
【００２６】
チャンクが最初にアクセスされる時、チャンクはストリーム「０」（最下位ストリーム）に割り当てされ、対応するキューに配置される。
そうでなければ、チャンクは現在のキューから除去され、チャンクのアクセスカウントが更新され、そしてチャンクは新しいキュー（潛在的に）に配置される。
任意のアプローチは、アクセスカウントに基づいて適切なキューを判断するために使用される。
例えば、アクセスカウントのログ（ｌｏｇ）は、新しいストリーム識別子（対応するキューを識別する）として計算することができる。
昇格モジュール（ｐｒｏｍｏｔｉｏｎ  ｍｏｄｕｌｅ）は、またチャンクが（アクセスカウントに基づいて）現在の最も熱いチャンクであるか否かを確認することができる。
チャンクが現在の最も熱いチャンクであれば、装置寿命（ｄｅｖｉｃｅ  ｌｉｆｅｔｉｍｅ）はこのチャンクのアクセスの間の間隔に基づいて設定される。
最後に、昇格ロジックは装置寿命及びチャンクの最後のアクセス時間に基づいてチャンクの有効期限（ｅｘｐｉｒａｔｉｏｎ  ｔｉｍｅ）を判断する。
【００２７】
チャンクが未だ有効期限を経過しなかったら、チャンクは放置されている可能性がある。
そうでなければ、チャンクは現在のキューから除去され、新しい有効期限が割り当てされ、さらに低いキューに降格（即ち、さらに低いストリーム識別子が割り当てられる）される。
追加的に、降格されるチャンクが最も熱いチャンクであれば、該当チャンクは（有効期限によって判断されるので）しばらくアクセスされない。
したがって、該当チャンクはそれ以上熱くなく、該当キューからの他の１つのチャンクが（装置寿命に対する適切な派生結果を有する）最も熱いチャンクとして選択される。
新しく選択された最も熱いチャンクは該当キューで次のチャンクであり、又は該当キューに進入した最後のチャンクである。
【００２８】
図１は、本発明の実施形態に係るソリッドステートドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ：ＳＳＤ）を有するマシンを示す。
図１で、マシン１０５が図示されている。
マシン１０５は、制限無しでデスクトップコンピュータ又はラップトップコンピュータ、サーバー（スタンドアロンサーバー又はラックサーバー）、又は本発明の実施形態から利益を得ることができる任意の他の装置を含む任意の必要とするマシンである。
【００２９】
マシン１０５は、また特定のポータブルコンピュータ装置、タブレットコンピュータ、スマートフォン、及び他のコンピューティング装置を含むことができる。
マシン１０５は、任意の必要とするアプリケーションを実行することができる。
データベースアプリケーションはよい例である。
しかし、本発明の実施形態は任意の必要とするアプリケーションに拡張することができる。
【００３０】
特定な形態に関わらず、マシン１０５は、プロセッサ１１０、メモリ１１５、及びソリッドステートドライブ（ＳＳＤ）１２０を含む。
プロセッサ１１０は任意の多様なプロセッサ、例えばインテル（登録商標）ジーオン（登録商標）（Ｉｎｔｅｌ（登録商標）  Ｘｅｏｎ（登録商標））、アイテニアム（登録商標）（Ｉｔａｎｉｕｍ（登録商標））、又はアトム（登録商標）（Ａｔｏｍ（登録商標））プロセッサ、ＡＭＤオプテロン（登録商標）（Ｏｐｔｅｒｏｎ（登録商標））プロセッサ、ＡＲＭプロセッサ等である。
【００３１】
図１は、単一のプロセッサを示すが、マシン１０５は任意の数のプロセッサを含むことができる。
メモリ１１５は、フラッシュメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ、Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、持続性ランダムアクセスメモリ（Ｐｅｒｓｉｓｔｅｎｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、強誘電体ランダムアクセスメモリ（ＦＲＡＭ（登録商標）、Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ、Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のような不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような任意の多様なメモリであり、一般的にＤＲＡＭである。
メモリ１１５は、また互いに異なるメモリタイプの任意の必要とする組み合わせであってもよい。
メモリ１１５は、またマシン１０５の一部であるメモリ制御器１２５によって制御される。
【００３２】
ソリッドステートドライブ１２０は、任意の多様なソリッドステートドライブであり、ガーベッジコレクションを遂行する（フラッシュメモリを利用しない時にも）他のタイプの格納部を含むように拡張することができる。
ソリッドステートドライブ１２０は、メモリ１１５内に存在する装置ドライバー１３０によって制御される。
【００３３】
図２は、図１のマシン１０５の追加的な詳細を示すブロック図である。
図２を参照すると、一般的に、マシン１０５はメモリ制御器１２５及びクロック２０５を含み、そしてマシン１０５の構成要素の動作を調整するのに使用される１つ以上のプロセッサ１１０を含む。
プロセッサ１１０は、また例示的にランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ、ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、又は他の状態の格納媒体を含むメモリ１１５と結合することができる。
プロセッサ１１０は、またソリッドステートドライブ１２０、及び例えば、イーサーネットコネクター又は無線コネクターであるネットワークコネクター２１０と結合される。
プロセッサ１１０は、また他の構成要素の中でユーザーインターフェイス２２０に結合され、そして入力／出力エンジン２２５を利用して管理される入力／出力インターフェイスポートに結合されるバス２１５に連結される。
【００３４】
図３は、図１のソリッドステートドライブ１２０の詳細を示すブロック図である。
図３で、ソリッドステートドライブ１２０は、ホストインターフェイスロジック３０５、ソリッドステートドライブ制御器３１０、及び多様なチャンネル（（３２０−１）〜（３２０−４））にグループ化される多様なフラッシュメモリチップ（（３１５−１）〜（３１５−８））を含む。
ホストインターフェイスロジック３０５は、ソリッドステートドライブ１２０と図１のマシン１０５との間の通信を管理する。
【００３５】
ソリッドステートドライブ制御器３１０は、フラッシュメモリチップ（（３１５−１）〜（３１５−８））でガーベッジコレクション動作と共に読出し及び書込み動作を管理する。
ソリッドステートドライブ制御器３１０は、この管理の中で一部を遂行するフラッシュ変換階層３２５を含む。
ストリームに書込み命令を割り当てるのに責任があるソリッドステートドライブ１２０を有する本発明の実施形態で、ソリッドステートドライブ制御器３１０はストリーム割り当てを支援する格納部３３０を含む。
【００３６】
格納部３３０は、提出キュー（ｓｕｂｍｉｓｓｉｏｎ  ｑｕｅｕｅ）及びチャンクストリームマッパ３４０を含む。
提出キュー３３５は、多様な書込み命令によって影響を受けるチャンクに対する情報を格納するのに使用される。
書込み命令が受信されることによって、そのような書込み命令と関連されたチャンク（又はこれよりはこのようなチャンク）の識別子（ＩＤｓ）が提出キュー３３５に配置される。
【００３７】
以後に、（最前面動作（ｆｏｒｅｇｒｏｕｎｄ  ｏｐｅｒａｔｉｏｎｓ）に対する影響を減らすために）背景プロセスの一部として、チャンクは提出キュー３３５から除去され、そしてこのようなチャンクに対するストリーム割り当てが更新される。
チャンクストリームマッパ３４０は、どんなストリームが多様なチャンクに現在、割り当てされているのかに対する情報を格納する。
この情報は、提出キュー３３５でチャンク識別子の結果として（又は提出キュー３３５でチャンク識別子の不足の結果として−使用されないチャンクは非使用の結果としてさらに低い優先順位ストリームに割り当てられる）更新される。
チャンクの概念は、以下で図５及び図７を参照してさらに詳細に説明する。
【００３８】
図３でソリッドステートドライブ１２０が４つのチャンネル（（３２０−１）〜（３２０−４））にグループ化された８個のフラッシュメモリチップ（（３１５−１）〜（３１５−８））を含むことと図示したが、本発明の実施形態は、任意の数のチャンネルでグループ化された任意の数のフラッシュメモリチップを支援することができる。
【００３９】
図４は、図３のフラッシュ変換階層３２５の詳細を示すブロック図である。
図４で、フラッシュ変換階層３２５は、受信機４０５、論理ブロックアドレス（ＬＢＡ、Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）マッパ４１０、ストリーム選択ロジック４１５、ストリーム識別子アダー４２０、送信機４２５、キューアー（ｑｕｅｕｅｒ）４３０、及び背景ロジック４３５を含むものとして図示している。
【００４０】
受信機４０５は、オペレーティングシステム、アプリケーション、ファイルシステム、遠隔マシン、及び他のこのようなソースのような多様なソフトウェアソースから書込み命令を受信する。
与えられた書込み命令に対して、論理ブロックアドレスマッパ４１０は、書込み命令で使用される論理ブロックアドレスを図１のソリッドステートドライブ１２０の特定なチャンクにマッピングする。
ストリーム選択ロジック４１５は、以後に該当チャンクに適合なストリームを選択する。
【００４１】
ストリーム選択ロジック４１５は、図３のチャンクストリームマッパ３４０を用いてこのストリーム選択を達成し、図３のチャンクストリームマッパ３４０を検索して選択されたチャンクに対応するエントリ（ｅｎｔｒｙ）を検索するロジックを含む。
あるいは選択的に、ストリーム選択ロジック４１５は、例えばチャンクに対するアクセスカウントからストリーム識別子を計算することによって（以下で図１３を参照して説明することと類似に）又はラウンドロビンアプローチでストリームを割り当てることによって（書込み命令をすべての装置ストリームにわたって均等に配分する）他のアプローチを使用する。
【００４２】
ストリーム識別子アダー４２０は、データを書込み命令に書き込むロジックを用いて、選択されたストリーム識別子を書込み命令に追加する。
ストリーム識別子が書込み命令に付着されれば、送信機４２５は書込み命令を（付着されたストリーム識別子と共に）実行のために図１のソリッドステートドライブ１２０に向かって伝送する。
【００４３】
キューアー４３０は、書込み命令に対して識別されたチャンク識別子を有し、そしてチャンク識別子を図３の提出キュー３３５に追加する。
キューアー４３０は、チャンク識別子を図３の提出キュー３３５に追加するロジックを使用する。
例えば、キューアー４３０は、図３の提出キュー３３５の末尾（ｔａｉｌ）に対するポインター（ｐｏｉｎｔｅｒ）を含み、チャンク識別子を図３の提出キュー３３５の末尾に書き込むことができる。
以後に、図３の提出キュー３３５の末尾に対するポインターは、図３の提出キュー３３５の次のスロットを示すように更新される。
結局、チャンク識別子は図３の提出キュー３３５から解除され、以後に背景ロジック４３５は解除されたチャンク識別子で動作する。
【００４４】
背景ロジック（ｂａｃｋｇｒｏｕｎｄ  ｌｏｇｉｃ）４３５は、以下で図９及び図１５を参照してより詳細に説明する。
背景ロジック４３５は、任意の所望する方法で具現することができる。
例えば、背景ロジック４３５は、チャンクがアクセスされる時毎にストリーム識別子を増加させることのように単純に動作することができる（これはチャンク識別子及びストリーム識別子を格納するデータ構造で検索を遂行するロジック及びこの方法に位置したストリーム識別子を増加させるインクリメンタ（Ｉｎｃｒｅｍｅｎｔｅｒ）に過ぎないことを含む）。
【００４５】
しかし、このような単純な具現は、結局すべてのチャンクが最も高い番号が付いたストリームを使用し、さらに低い番号が付いたストリームは使用されないことを意味する。
さらに複雑な具現は、チャンクがあまり使用されていないか否かを検討し、チャンクのストリーム優先順位を一致させるために下げることができる。
この結果を達成するために背景ロジック４３５を互いに異なる方法で具現する本発明の２つの実施形態を図８〜図１３と図１４〜図２０を参照して後述する。
背景ロジック４３５は、背景（ｂａｃｋｇｒｏｕｎｄ）で動作（これにしたがう名称）するものと説明したが、背景でストリーム割り当て更新を遂行することは図１のソリッドステートドライブ１２０に対する読出し及び書込みに対する影響を最小化するのに便宜である。
【００４６】
ストリーム割り当てが図１のソリッドステートドライブ１２０の性能に影響を与えず、更新することができれば、背景ロジック４３５が前景（ｆｏｒｅｇｒｏｕｎｄ）で動作できない理由はない。
例えば、図１のソリッドステートドライブ１２０がプロセッサを含むと（即ち、図１のソリッドステートドライブ１２０が格納部内の演算（Ｉｎ−Ｓｔｏｒａｇｅ  Ｃｏｍｐｕｔｉｎｇ：ＩＳＣ）を提案すれば）、図１のソリッドステートドライブ１２０内のこのプロセッサは潜在的に図１のソリッドステートドライブ１２０の読出し及び書込み性能に影響を与えず、リアルタイムにストリーム割り当てを更新するのに使用することができる。
このような状況で、背景ロジック４３５は、チャンク識別子を図３の提出キュー３３５に配置するか、又は背景ロジック４３５が前景動作に影響を与えず、動作できる時を待つ必要がなく、直ちに動作してストリーム割り当て更新を遂行することができる。
【００４７】
図４で、フラッシュ変換階層３２５は、ストリーム割り当て及びストリーム識別子更新を遂行するのに責任があるものとして示される。
しかし、本発明の他の実施形態で、図４に示した構成要素の中で１つ以上のものがソフトウェアで具現され、例えば、図１のメモリ制御器１２５、図１の装置ドライバー１３０の一部に含まれるか、又は書込み要請を傍受（ｉｎｔｅｒｃｅｐｔ）し、書込み命令を発行する前にストリームを組み合わせるライブラリルーチン（ｌｉｂｒａｒｙ  ｒｏｕｔｉｎｅｓ）で具現されるか、又は図１のソリッドステートドライブ１２０内の、又はマシン１０５内の他のところのいずれかに、別の特殊目的ハードウェアで具現することができる。
【００４８】
図４〜図２０に付随する説明がフラッシュ変換階層３２５内の具現に焦点を当たっていても、上記説明の目的のために、図４の構成要素によって遂行されるストリーム割り当てに対する参照は任意の特定な位置での具現を含むことを意図している。
図４で論理ブロックアドレスマッパ４１０及びストリーム選択ロジック４１５が別個の構成要素として示しているが、論理的に、このような構成要素の構造は、単一の構成要素に結合することができる。
さらに一般的には、本発明の実施形態は、図４〜図６、図９〜図１３、及び図１５〜図２０で別個のものとして示し、説明する所定の構成要素を単一の構成要素に結合することができる。
【００４９】
図５は、チャンク識別子（ＩＤｓ）とマッピングされ、以後に図１のソリッドステートドライブ用ストリーム識別子とマッピングされる多様な命令の論理ブロックアドレス（ＬＢＡｓ）を示す。
本発明の実施形態が任意の数の書込み命令を支援することができるが、図５では、書込み命令（（５０５−１）、（５０５−２）、（５０５−３））を示す。
また、図５で書込み命令のみを示すが、本発明の実施形態は、また、読出し命令にも適用することができる。書込み命令（（５０５−１）〜（５０５−３））は論理ブロックアドレス（（５１０−１）〜（５１０−３））を含み、これは書込み命令（（５０５−１）〜（５０５−３））の開始論理ブロックアドレスを明示する。
【００５０】
論理ブロックアドレスマッパ４１０は、書込み命令（（５０５−１）〜（５０５−３））から論理ブロックアドレス（（５１０−１）〜（５１０−３））にアクセスする。
論理ブロックアドレス（（５１０−１）〜（５１０−３））が書込み命令（（５０５−１）〜（５０５−３））から読み出されれば、論理ブロックアドレスマッパ４１０は対応するチャンク識別子（（５１５−１）〜（５１５−３））を判断する。
チャンクは、ソリッドステートドライブ１２０の論理的部分分割（ｌｏｇｉｃａｌ  ｓｕｂｄｉｖｉｓｉｏｎｓ）として考えることができる（しかし、ブロック又はページ等のソリッドステートドライブ１２０の他の論理的部分分割としてチャンクを整列する必要はない）。
【００５１】
チャンクの数は任意の所望する方法で、例えば所望するサイズのチャンクを選択し、そしてソリッドステートドライブ１２０のサイズをチャンクサイズで割ることによって、又は図４の背景ロジック４３５によって遂行されるあまりにも多くのプロセシングを必要としない適切な有用性を提供するものであると立証された数を選択することによって（そして、ソリッドステートドライブ１２０を複数のチャンクで割ることによって）決定することができる。
サイズの均一性が論理ブロックアドレスマッパ４１０の動作を単純化することができるが、チャンクは同一のサイズを有する必要はない。
したがって、例えば、１つのチャンクはソリッドステートドライブ１２０で１２８ＫＢのデータを含むが、他のチャンクはソリッドステートドライブ１２０で５１２ＫＢのデータを含むことができる。
論理ブロックアドレスからチャンクを判断することは、シフト（ｓｈｉｆｔ）動作を用いて遂行されるので、２の累乗であるチャンクサイズが特別に有利である。
しかし、本発明の実施形態は任意の必要であるサイズのチャンクを支援することができる。
【００５２】
論理ブロックアドレスマッパ４１０は、数多い方法でチャンク識別子（（５１５−１）〜（５１５−３））を判断する。
例えば、論理ブロックアドレスマッパ４１０は、算術論理部（ＡＬＵ、ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）５２０を含んで論理ブロックアドレス（（５１０−１）〜（５１０−３））からチャンク識別子（（５１５−１）〜（５１５−３））を数学的に演算することができる。
又は、論理ブロックアドレスマッパ４１０は、論理ブロックアドレス（（５１０−１）〜（５１０−３））から多様なビットをマスクしてチャンク識別子（（５１５−１）〜（５１５−３））を残すアドレスマスク５２５を含むことができる。
チャンク識別子（（５１５−１）〜（５１５−３））が判断されれば、ストリーム選択ロジック４１５は該当チャンクで使用されるストリームを決定する。
ストリーム選択ロジック４１５は、チャンク識別子（（５１５−１）〜（５１５−３））を用いてチャンクストリームマッパ３４０から対応するストリーム識別子（（５３０−１）〜（５３０−３））を判断する。
【００５３】
図６は、図５のストリーム識別子（（５３０−１）、（５３０−２））を含むように修正され、そして図１のソリッドステートドライブ１２０に伝送される図５の命令（（５０５−１）〜（５０５−２））を示す（空間の理由で、図６は図５から３つの書込み命令の中で２つ及び関連されたデータのみを示す）。
しかし、図６は図５と同一方法で一般化する。
図６で、ストリーム識別子アダー４２０は、ストリーム識別子（（５３０−１）、（５３０−２））を書込み命令（（５０５−１）、（５０５−２））に書き込む。
このような方法で、図１のソリッドステートドライブ１２０は、書込み命令（（５０５−１）、（５０５−２））を処理する時、いずれの装置ストリームを使用するかが分かる。
送信機４２５は、修正された書込み命令（（５０５−１）、（５０５−２））を図１のソリッドステートドライブ１２０に伝送する。
【００５４】
図５及び図６に示さないのは、図４のキューアー４３０の動作である。
図５のチャンク識別子（（５１５−１）〜（５１５−３））が判断されれば、図４のキューアー４３０は図４の背景ロジック４３５で後の処理のために図５のチャンク識別子（（５１５−１）〜（５１５−３））を図３の提出キュー３３５にキューイングする。
図４のキューアー４３０は、図５のチャンク識別子（（５１５−１）〜（５１５−３））が判断された後、いつでも図５のチャンク識別子（（５１５−１）〜（５１５−３））をキューイングすることができる。
例えば、図４のキューアー４３０は、図５のチャンク識別子（（５１５−１）〜（５１５−３））が図４の論理ブロックアドレスマッパ４１０によって判断された後に、修正された書込み命令（（５０５−１）〜（５０５−３））が送信機４２５によって図１のソリッドステートドライブ１２０に伝送された後に、又はこれら間のいつでも図５のチャンク識別子（（５１５−１）〜（５１５−３））をキューイングすることができる。
【００５５】
図７は、図５の論理ブロックアドレス（５１０−１）を図５のチャンク識別子（５１５−１）とマッピングする図５の算術論理部（ＡＬＵ）５２０を示すブロック図である。
図７で、算術論理部５２０は、論理ブロックアドレス（５１０−１）及びチャンクサイズ７０５を受信する。
論理ブロックアドレス（５１０−１）をチャンクサイズ７０５で割ることによって（そして、計算の任意の小数部を破棄することによって）、チャンク識別子（５１５−１）が計算される。
【００５６】
図４を参照して上述したように、図４の背景ロジック４３５は多様な方法で具現することができる。
図８〜図１３は、本発明の一実施形態を説明し、そして図１４〜図２０は、本発明の他の実施形態を説明する。
本発明のこのような実施形態は、相互排他的なものとは意図されず、本発明の２つの実施形態の組み合わせも可能である。
また、ここに明示的に記載しているか否かに関わらず、本発明の他の実施形態もまた可能である。
【００５７】
図４の背景ロジック４３５のための本発明の第１実施形態で、図３のチャンクストリームマッパ３４０は、順次、頻度、最新（Ｓｅｑｕｅｎｔｉａｌ、Ｆｒｅｑｕｅｎｃｙ、Ｒｅｃｅｎｃｙ：ＳＦＲ）表を含むことができる。
“順次、頻度、最新”は、チャンクに割り当てられるストリーム識別子を決定し、更新する方法を示す。
“順次”は、１つの書込み命令が他の１つの書込み命令に順次的な状況を示す。
即ち、第２書込み命令が以前の書込み命令の後に次の論理ブロックアドレスにデータを書き込む。
２つの書込み命令が順次的であれば、２つの命令の全てが同一ストリーム識別子に割り当てられなければならないことになる。
【００５８】
以下で図１０を参照して説明するように、書込み命令は、多くの異なるソフトウェアソースから発行されるので、この文脈の“順次”は完全に文字通りに解釈されるべきではない。
単一ソフトウェアソース（例えば、データベースアプリケーション）からの２つの“順次”書込み命令が他の一部ソフトウェアソース（例えば、ファイルシステム）からの書込み命令によって分離された場合、その間にある書込み命令はデータベースアプリケーションからの２つの書込み命令の順次性を排除してはならない。
実際に、その間にある書込み命令が順次性を妨害することを禁止することを回避する方法がここに提供される。
【００５９】
“頻度”は、チャンクがどのぐらい頻繁にアクセスされるかを示す。
チャンクがさらに頻繁にアクセスされるほど、チャンクはさらに熱いこととみなす（温度は、優先順位と類似なものとして作用する：チャンクの温度がさらに高いほど、優先順位がさらに高くなければならない）。
したがって、チャンクがさらに頻繁にアクセスされるほど、さらに高いストリーム優先順位が割り当てられるべきである。
【００６０】
“最新”とは、チャンクが最後にアクセスされた後、どのぐらい経過したかを示す。
“最新”は、“頻度”に対するバランスとして作用する。
チャンクが最後にアクセスされた後、期間がさらに長く経過するほど、チャンクはさらに冷たいものとしてみなされる。
したがって、チャンクはさらに低い優先順位が割り当てされなければならない。
したがって、“頻度”がチャンクの関連したストリームを増加させるが、“最新”はチャンクの関連したストリームを減少させる。
“順次”、“頻度”、及び”最新”は、以下で図１０〜図１３を参照してさらに詳細に説明する。
【００６１】
図８に示す本発明の第１実施形態を見ると、図８は本発明の実施形態に係る図５のチャンク識別子（（５１５−１）〜（５１５−３））を図５のストリーム識別子（（５３０−１）〜（５３０−３））にマッピングするのに使用する例示的なＳＦＲ表を示す。
図８で、ＳＦＲ表８０５は多様なデータを格納する。
例えば、ＳＦＲ表８０５は、多様なチャンク識別子（（５１５−１）〜（５１５−４））及び各チャンク識別子（（５１５−１）〜（５１５−４））に対するＳＦＲ対応ストリーム識別子（（５３０−１）〜（５３０−４））を格納する。
【００６２】
ストリーム識別子（（５３０−１）〜（５３０−４））に加えて、ＳＦＲ表８０５は追加的なデータを格納することができる。
例えば、各チャンク識別子（（５１５−１）〜（５１５−４））に対して、ＳＦＲ表８０５はチャンクに対する現在（即ち、最も最新）アクセス時間（（８１０−１）〜（８１０−４））を格納することができる。
現在アクセス時間（（８１０−１）〜（８１０−４））は、任意のタイプ（例えば、読出し又は書込み）のチャンクの最後のアクセス、又は単に最も最新の書込み命令の時間である。
ＳＦＲ表８０５は、またチャンクが以前にアクセスされた時間を示す以前アクセス時間（（８１５−１）〜（８１５−４））を格納することができる。
最後に、ＳＦＲ表８０５は、チャンクのアクセスの回数を示すアクセスカウント（（８２０−１）〜（８２０−４））を格納することができる。
上述したように、アクセスカウント（（８２０−１）〜（８２０−４））は、チャンクのアクセス（読出し及び書込みの両方）の全体回数、又は単にチャンクの書込みアクセスの全体回数を示し得る。
【００６３】
図８は、本発明の１つの可能な実施形態を示すが、本発明の他の実施形態は、図８に示したものより多いか、又は少ないデータを格納することができる。
又は、テーブル以外のデータ構造は、情報を格納するのに使用することができる。
本発明の実施形態はこのようなすべての変化を含むものとして意図される。
【００６４】
図９は、本発明の第１実施形態に係る図３のフラッシュ変換階層３２５及び図４の背景ロジック４３５の追加的な詳細を示すブロック図である。
図９で、フラッシュ変換階層３２５は、また、順次ロジック９０５を含む。
順次ロジック９０５は、以前の書込み命令と同一なストリーム割り当てを使用するために図５の書込み命令（５０５−１）が一部の以前の書込み命令と順次的であるか否かを判断する。
順次ロジック９０５は、以下で図１０を参照してさらに詳細に説明する。
【００６５】
背景ロジック４３５は、最新ロジック９１０、アクセスカウント調節器９１５、及びストリーム識別子調節器９２０を含む。
最新ロジック９１０は、チャンクに対する最新ウェイト（ｒｅｃｅｎｃｙ  ｗｅｉｇｈｔ）を計算する。
アクセスカウント調節器９１５は、最新ウェイトに基づいてストリームに対するアクセスカウントを調節する。
そして、ストリーム識別子調節器９２０は、調節されたアクセスカウントに基づいてチャンクに対して使用する新しいストリーム識別子を計算する。
【００６６】
最新ロジック９１０、アクセスカウント調節器９１５、及びストリーム識別子調節器９２０は、算術計算を遂行するので、全て１つの（又はそれ以上）別の又は共有された算術論理部を利用して具現することができる。
そうでなければ、最新ロジック９１０、アクセスカウント調節器９１５、及びストリーム識別子調節器９２０は、単に、ここに記述された特定関数のみを計算し、それ以外のことを計算しないように設計された特殊目的ハードウェアを利用して具現することができる。
【００６７】
図１０は、図９の順次ロジック９０５の詳細を示す図である。
図１０で、順次ロジック９０５は、格納部１００５及び比較器１０１０を含むものとして示す。
現実的な目標のために、格納部１００５は、順次ロジック９０５内の別の格納部であることよりは、図３の格納部３３０の一部である。
格納部１００５は、最新の書込み命令のセットに対する情報であるウインドー１０１５を格納し、書込み命令語の各々は、自分に割り当てられたストリーム識別子を有する。
【００６８】
例えば、図１０は、エントリ（（１０２０−１）〜（１０２０−８））を示し、この中でエントリ（（１０２０−１）〜（１０２０−４））はウインドー１０１５内に存在する。
エントリ（（１０２０−１）〜（１０２０−８））は、キュー１０２５で管理される。
キュー１０２５は、任意の所望の形態、例えば２つの例示的な具現を挙げれば、キュー１０２５の先頭に対するポインターを有するアレイ又は連結リストの形態を取ることができる。
エントリ（（１０２０−１）〜（１０２０−８））の各々は、以前の書込み命令に対する末尾論理ブロックアドレス１０３０及びストリーム識別子１０３５を含む。
ウインドー１０１５は、どのぐらい多くの最新エントリがウインドー１０１５に含まれるかを明示するウインドーサイズ１０４０を含む。
【００６９】
図１０で、ウインドーサイズ１０４０は、４つのエントリを含むものとして示したが、本発明の実施形態は、ウインドー１０１５で多くのエントリを支援することができる。
ウインドーサイズ１０４０は、例えば図１のプロセッサのコアの数、又は書込み命令を発行できる図１のプロセッサ１１０で実行されるソフトウェアソース（オペレーティングシステム、ファイルシステム、アプリケーション等）の数を含む様々な因子に依存する。
本発明の実施形態は、他の因子に基づいて判断されるウインドーサイズも支援することができる。
また、ウインドーサイズ１０４０は、静的に設定されるか、又は図１のマシン１０５内の条件が変化することによって動的に変更することができる。
【００７０】
図５の新しい書込み命令（５０５−１）が受信されれば、比較器１０１０は図５の論理ブロックアドレス（５１０−１）をウインドー１０１５のエントリ（（１０２０−１）〜（１０２０−４））の末尾論理ブロックアドレス１０３０と比較する。
図５の論理ブロックアドレス（５１０−１）が以前の書込み命令の末尾論理ブロックアドレス１０３０後の次のアドレスであれば、図５の論理ブロックアドレス（５１０−１）は以前の書込み命令の末尾論理ブロックアドレス１０３０に順次的であるものとみなされる。
【００７１】
そうでなければ、以前の書込み命令の末尾論理ブロックアドレス１０３０と図５の論理ブロックアドレス（５１０−１）との間で使用することができる有効な論理ブロックアドレスが無ければ、図５の論理ブロックアドレス（５１０−１）は以前の書込み命令の末尾論理ブロックアドレス１０３０に順次的であるものとみなされる（データが書き込まれた可能性がある介在するアドレスがない限り、末尾論理アドレス１０３０は文字通りに以前の書込み命令によって書き込まれる最後のアドレスである必要はないことに注意しなければならない）。
【００７２】
図５の論理ブロックアドレス（５１０−１）がウインドー１０１５の任意のエントリ（（１０２０−１）〜（１０２０−４））の末尾論理ブロックアドレス１０３０に順次的であれば、エントリ（（１０２０−１）〜（１０２０−４））のストリーム識別子１０３５が図５の書込み命令（５０５−１）に対して使用される。
順次論理ブロックアドレスを識別することは、順次が発生した時を判断する１つの方法であるが、本発明の実施形態は順次を検出する他の具現を支援することができる。
例えば、順次ロジック９０５は、パターン整合器（ｐａｔｔｅｒｎ  ｍａｔｃｈｅｒ）を用いて繰り返しパターンで特定のソフトウェアソースに対して論理ブロックアドレスがアクセスされた時を検出することができる。
【００７３】
図５の論理ブロックアドレス（５１０−１）がウインドー１０１５内の任意のエントリ（（１０２０−１）〜（１０２０−４））の末尾論理ブロックアドレス１０３０に順次的であるか否かに関わらず、ウインドー１０１５内の最も古いエントリは“排出され（ｅｊｅｃｔｅｄ）”、図５の書込み命令（５０５−１）がウインドー１０１５に追加される。
例えば、エントリ（１０２０−１）がウインドー１０１５で最も最新の書込み命令に対するエントリであり、エントリ（１０２０−４）がウインドー１０１５で最も古いエントリであると仮定する。
エントリ（１０２０−４）は、ウインドー１０１５から除去され、図５の論理ブロックアドレス（５１０−１）及びストリーム識別子（５３０−１）がウインドー１０１５に新しいエントリとして追加される。
【００７４】
ウインドー１０１５は、任意の所望する方法で具現することができる。
例えば、ウインドー１０１５は、最も古いエントリに対するポインターを有する循環目録（ｃｉｒｃｕｌａｒ  ｌｉｓｔ）（アレイのような）を含むことができる。
新しいエントリがウインドー１０１５に追加される時、ポインターによって指定される最も古いエントリは新しいエントリによって上書され、ポインターはウインドー１０１５で次に最も古いエントリを示すように調節することができる。
本発明の実施形態は、ウインドー１０１５に対する情報を格納する任意の所望する構造を支援することができる。
循環目録はこのような可能なデータ構造の１つに過ぎない。
【００７５】
図１１は、図９の最新ロジックを用いて最新ウェイトを計算するところを説明するための図である。
図１１を参照すると、最新ロジック９１０は、最新ウェイト１１０５を計算するものとして示している。
図１１に示す公式は、チャンクに対する現在アクセス時間（８１０−１）（即ち、最も最新の）と以前アクセス時間（８１５−１）との間の差を減衰期間１１１０で割られたものを「２」の累乗の指数として最新ウェイト１１０５を計算する。
【００７６】
減衰期間１１１０は、チャンクがどのぐらい速やかにさらに低い優先順位ストリームに降格するかを制御する調節可能な変数を示す。
減衰期間１１１０は、図１のマシン１０５が開始する時に初期値で割り当てられ、（システム管理者によって受動的に、又はシステム業務負荷にしたがって自動的に）所望するように調節することができる。
チャンクの昇格が速すぎるか（これは大部分のチャンクが同一な高い優先順位ストリームを使用することを生じさせる）か、又は昇格があまりにも遅い（これは大部分のチャンクが同一な低い優先順位ストリームを使用することを生じさせる）ことを防止することが望ましい。
言い換えれば、チャンクが非常に一定な方法でストリームに割り当てられるようにすることが望ましい。
どんなストリームもあまりにも多すぎるか、或いは軽く利用するべきではない。
減衰期間１１１０は、このような目標を達成するストリーム昇格及び降格を管理する方法を示す。
【００７７】
最新ウェイト１１０５は、各チャンクに対して変化し得ることに留意しなければならない。
一方、減衰期間１１１０は、最新ウェイト１１０５に対するすべての計算にわたって均一でなければならない（しかし、これは減衰期間１１１０が時間によって変化しないことを意味しない）。
【００７８】
図１２は、図９のアクセスカウント調節器９１５で図１１の最新ウェイト１１０５を用いてアクセスカウントを調節するところを説明するための図である。
図１２で、アクセスカウント調節器９１５は、調節されたアクセスカウント１２０５を計算するものとして示す。
調節されたアクセスカウント１２０５は、アクセスカウント（８２０−１）より１つ多いものが最新ウェイト１１０５によって割られたものとして計算される。
調節されたアクセスカウント１２０５は、アクセスカウント（８２０−１）の位置、例えば、図８のＳＦＲ表８０５に再び格納される。
【００７９】
図１３は、図９のストリーム識別子調節器９２０を用いて図１２の調節されたアクセスカウント１２０５からストリーム識別子を計算するところを説明するための図である。
図１３で、ストリーム識別子調節器９２０は、ストリーム識別子（５３０−１）を計算するものとして示す。
ストリーム識別子（５３０−１）は、調節されたアクセスカウント１２０５のログ（ｌｏｇ）として計算され、ストリーム識別子（５３０−１）の位置、例えば図８のＳＦＲ表８０５に再び格納される。
【００８０】
コンピュータに対して使用する時に数学的用語“ログ”は通常的にｌｏｇ２又はｌｏｇ１０を意味するが、任意の望む基数（ｂａｓｅ）を使用するログ関数が選択することができる。
ログ関数に対して選択された基数（ｂａｓｅ）は、本発明の実施形態でチャンクがあまりにも速く又は遅すぎて昇格される（したがって、１つ以上の装置ストリームの過渡な使用及び他の装置ストリームの過小に使用する）ことを回避するその他のメカニズム（ｍｅｃｈａｎｉｓｍ）を提供する。
【００８１】
ストリーム識別子調節器９２０は、調節されたアクセスカウント１２０５の大きさに応じてより多くのログ関数を使用することができる。
例えば、調節されたアクセスカウント１２０５が一部の閾値より低ければ、ストリーム識別子調節器９２０はｌｏｇ２を利用してストリーム識別子（５３０−１）を計算する。
調節されたアクセスカウント１２０５が該当閾値より大きければ、ストリーム識別子調節器９２０はｌｏｇ１０を利用してストリーム識別子（５３０−１）を計算する。
【００８２】
図１１〜図１３に対する２つのコメントを言及する必要がある。
第１に、図１１〜図１３は、図１１の最新ウェイト１１０５、図１２の調節されたアクセスカウント１２０５、及びストリーム識別子（５３０−１）を演算するための具体的な計算を示す。
しかし、本発明の実施形態は任意の所望する方法でこれらを（又は他の値）計算することを支援することができる。
究極の目標は、図８のストリーム識別子（５３０−１）を図８のチャンク（５１５−１）に対して適切に調節できることであるので、このような結果を達成する任意の所望するアプローチも使用することができる。
図１１〜図１３は、単に、このような１つのアプローチを示す。
【００８３】
第２に、図１１〜図１３で、アクセス時間（図１１の現在アクセス時間（８１０−１）及び以前アクセス時間（８１５−１）のような）は、特定なクロックよりは発行された要請の数に基づいて判断することができる。
例えば、図５の書込み命令（（５０５−１）〜（５０５−３））は連続して発行されるものとして仮定される。
図５の書込み命令（５０５−１）は第４番目の書込み命令であり、図５の書込み命令（５０５−２）は第五番目の書込み命令であり、そして図５の書込み命令（５０５−３）は第６番目の書込み命令である。
この例で、多様な書込み命令に対する“アクセス時間”は各々“４”、“５”、及び“６“である。
【００８４】
アクセス時間を判断するこの選択は、すべてのソフトウェアソースが時間の所定の時間間隔（１秒、１分、又は１時間のような）の間に対して書込み命令の伝送を中止すれば、チャンクが相当な時間の間、技術的にアクセスされなくともチャンクの“温度”は変化しない結果を有する。
したがって、チャンクが相当な時間の間、アクセスされなくとも、それに相当な時間の間に他のチャンクがアクセスされなければ、該当チャンクの“温度”は変化しない。
現実的な観点から、すべてのソフトウェアソースが同一時間に書込み命令を伝送することを中止することはほとんどない。
しかし、それが発生すれば、本発明の実施形態はこの状況を処理することが可能である。
また、本発明の実施形態は、命令の数の代わりにクロック時間を使用することを支援することができ、これはソフトウェアソースが書込み命令を発行しなくともチャンクを冷却することをもたらす。
【００８５】
図８〜図１３と対照的に、図１４〜図２０は、本発明の他の実施形態を示す。
図８〜図１３に示した本発明の実施形態のように、図１４〜図２０は、図５のチャンク識別子（（５１５−１）〜（５１５−３））を図５のストリーム識別子（（５３０−１）〜（５３０−３））にマッピングするデータ構造及び図４の背景ロジック４３５の具現を含む。
【００８６】
図１４は、本発明の第２実施形態に係る図５のチャンク識別子（（５１５−１）〜（５１５−３））を図５のストリーム識別子（（５３０−１）〜（５３０−３））にマッピングするのに使用するノードを示す図である。
図１４で、ノード（（１４０５−１）〜（１４０５−３））を示し、ノード（１４０５−１）を詳細に示す。
ノード（（１４０５−１）〜（１４０５−３））はアレイ、連結リスト、及び他のデータ構造のような任意の所望する方法で格納される。
図１のソリッドステートドライブ１２０で各チャンクに対して１つのノードが存在する。
【００８７】
ノード（１４０５−１）は、チャンク識別子（５１５−１）、ストリーム識別子（５３０−１）、アクセスカウント（８２０−１）、及び有効期限１４１０を含む多様なデータを含む。
チャンク識別子（５１５−１）、ストリーム識別子（５３０−１）、及びアクセスカウント（８２０−１）は、本発明の第１実施形態のそのような要素と類似するデータを格納する。
有効期限１４１０は、書込み命令によるアクセスの不足のためにチャンクが「期限切れ」とみなされる「時間」を示す。
本発明の第１実施形態のように、“時間”はクロックの測定よりはすべての書込み命令の順序で特定な書込み命令の数によって測定することができる。
【００８８】
図１５は、本発明の第２実施形態に係る図４の背景ロジック４３５の詳細を示すブロック図である。
図１５で、背景ロジック４３５は、昇格ロジック１５０５、第２キューアー１５１０、キュー（（１５２０−１）〜（１５２０−３））のための格納部１５１５、及び降格ロジック１５２５を含む。
【００８９】
昇格ロジック１５０５は、適切な時にチャンクをさらに高い優先順位ストリームに昇格する。
（動作が類似であっても、図４のキューアー４３０から区別するために命名された）第２キューアー１５１０は、図５のチャンク識別子（（５１５−１）〜（５１５−３））をキュー（（１５２０−１）〜（１５２０−３））に配置する。
第２キューアー１５１０は、図４のキューアー４３０と類似する構造を有する。
図１０の格納部１００５のように、格納部１５１５は、背景ロジック４３５内の別の格納部ではなく、実質的に図３の格納部３３０の一部である。
本発明の実施形態は、任意の数のキューを支援することができる。
３つのキュー（（１５２０−１）〜（１５２０−３））は例示に過ぎない。
【００９０】
また、図５の各ストリーム識別子（（５３０−１）〜（５３０−３））に対して１つのキューが存在することができる。
即ち、キュー（（１５２０−１）〜（１５２０−３））の数と図３のチャンク識別子（（５１５−１）〜（５１５−３））の数が同一であることは偶然である。
図５のチャンク識別子（（５１５−１）〜（５１５−３））が、キュー（（１５２０−１）〜（１５２０−３））の先頭に到達すれば、降格ロジック１５２５は図５のチャンク識別子（（５１５−１）〜（５１５−３））を降格するか否かを判断する。
【００９１】
図１６は、図１５のキュー（（１５２０−１）〜（１５２０−３））でチャンク識別子の昇格及び降格を説明するための図である。
図１６で、図３のチャンク識別子（（５１５−１）〜（５１５−３））は、文字（ａ〜ｄ）を用いて表現される。
キュー（（１５２０−１）〜（１５２０−３））内のラベルされないエントリは、図１６に示す例では使用されなく、この例で別に使用されなかった任意のチャンク識別子を格納することができる。
【００９２】
まず最初に、図１６で、提出キュー３３５の先頭１６０５にチャンク識別子（ａ）を有する提出キュー３３５が示される。
チャンク識別子（ａ）は、以前にアクセスされないチャンクを識別することができる。
したがって、チャンク識別子（ａ）が提出キュー３３５から除去された後、点線矢印１６１０で示すように、チャンク識別子（ａ）は“最も冷たい（ｃｏｌｄｅｓｔ）”ストリームに対するキュー（１５２０−１）の末尾に追加される。
次に、図１６で、提出キュー３３５は（チャンク識別子（ａ）が処理された後に提出キュー３３５の先頭１６０５に移動される）チャンク識別子（ｂ）を含む。
チャンク識別子（ｂ）に対して図１４のアクセスカウント（８２０−１）を増加した結果として、チャンク識別子（ｂ）は“さらに熱い（ｈｏｔｔｅｒ”ストリームに昇格される。
点線矢印１６１５で示すように、チャンク識別子（ｂ）が提出キュー３３５から除去された後に、チャンク識別子（ｂ）は、キュー（１５２０−１）のエントリ１６２０からキュー（１５２０−２）の末尾に移動される。
【００９３】
次に、図５の降格ロジック１５２５は、キュー（（１５２０−１）〜（１５２０−３））の先頭（（１６２５−１）〜（１６２５−３））を交互に点検する。
例えば、図１５の降格ロジック１５２５は、キュー（１５２０−３）の先頭（１６２５−３）のチャンク識別子（ｃ）を点検する。
チャンク識別子（ｃ）が降格される予定であれば、チャンク識別子（ｃ）はキュー（１５２０−３）の先頭からキュー（１５２０−２）（次の“最も熱い（ｈｏｔｔｅｓｔ）”ストリームに対するキュー）の末尾に移動される。
チャンク識別子（ｃ）が降格された結果として、図１７を参照して以下で記述するように、キュー（１５２０−３）のチャンク識別子（ｄ）が最も熱いチャンクになる。
【００９４】
図１７は、図１５の昇格ロジック１５０５の詳細を示すブロック図である。
図１７で、昇格ロジック１５０５は、インクリメンタ１７０５、ストリーム識別子調節器１７１０、チャンク有効期限ロジック１７１５、及び最も熱いチャンクロジック１７２０を含む。
インクリメンタ１７０５は、図１４のアクセスカウント（８２０−１）を増加して調節されたアクセスカウントを生成する。
ストリーム識別子調節器１７１０は、図１８に示すように調節されたアクセスカウントから図５のストリーム識別子（５３０−１）を計算する。
ストリーム識別子調節器１７１０は、図９のストリーム識別子調節器９２０と構造的に類似である。
【００９５】
図１７に戻れれば、チャンク有効期限ロジック１７１５は、チャンクに対する有効期限を判断する。
チャンクに対する有効期限は、チャンク識別子に対する現在アクセス時間に加えて、装置寿命として判断される。
装置寿命は、後述する、どのチャンクが最も熱いチャンクであるかに依存する時間の間隔である。
図１９はこれを数式として示す。
有効期限１４１０は、アクセスカウント（８２０−１）（上述されたように、図５のチャンク識別子（５１５−１）に対する現在のアクセス時間）及び装置寿命１９０５の合計である。
【００９６】
最後に、再び図１７を参照すれば、最も熱いチャンクロジック１７２０は、図５のチャンク識別子（５１５−１）が、今最も熱いチャンクを示すか否かを判断する。
最も熱いチャンクは、最も高いストリーム優先順位を有するチャンク識別子として定義される。
最も高いストリーム優先順位を有する複数のチャンク識別子が存在すれば、任意の選択アルゴリズムが使用されて最も熱いストリーム優先順位を有する特定なチャンク識別子が最も熱いチャンクとして選択される。
例えば、最も熱いストリーム優先順位を示すキューの先頭のチャンク識別子が最も熱いチャンクとして選択される。
又は、最も最新のアクセス（即ち、最も高い現在アクセス時間）を有するチャンク識別子が最も熱いチャンクとして選択される。
又は、最も熱いストリーム優先順位を示すキューの末尾のチャンク識別子が最も熱いチャンクとして選択される。
【００９７】
図５のチャンク識別子（５１５−１）が最も熱いチャンクであれば、図１９の装置寿命１９０５は図５のチャンク識別子（５１５−１）の現在アクセス時間と図５のチャンク識別子（５１５−１）の以前アクセス時間との間の差として計算される。
図１９の装置寿命１９０５は、特定なチャンクの２つの書込み命令の間で予測される最大間隔を示し、最も熱いチャンクに対する最も最新の２つの書込み命令の間の間隔に基づいて定義される。
図１９の装置寿命１９０５は、図１４のチャンク識別子（５１５−１）が降格される時に影響が及ぶ図１４の有効期限１４１０を判断するのに使用される。
【００９８】
図２０は、図１５の降格ロジック１５２５の詳細を示すブロック図である。
図２０で、降格ロジック１５２５は、比較器２００５及びデクリメンタ２０１０を含むものとして示す。
比較器２００５は、現在時間（これもクロック時間よりは最も最新の書込み要請の数である）を図１４の有効期限１４１０と比較する。
現在時間が図１４の有効期限１４１０を経過した場合、該当チャンクは書込み命令無しで図１９の装置寿命１９０５として測定される時間間隔の間、放置されたので、以前よりさらに“冷たい”ものと考えられる。
【００９９】
言い換えれば、図１９の装置寿命１９０５が任意の与えられたチャンクに対する書込みの間の予測される書込み命令の数を示せば、図１４のチャンク識別子（５１５−１）の最も最新のアクセス時間に図１９の装置寿命１９０５を加えたものとして計算される図１４の有効期限１４１０は、図１４のチャンク識別子（５１５−１）が書き込まれ、そして冷却されたものとみなされない最後の時間を示す。
図１４の有効期限１４１０が経過した場合、図１４のチャンク識別子（５１５−１）は、若干冷却され、降格される。
この場合に、デクリメンタ２０１０は、図５のチャンク識別子（５１５−１）の減少された“温度”に対応するように図５のストリーム識別子（５３０−１）を減らして図５のチャンク識別子（５１５−１）の優先順位を減少させる。
【０１００】
図１４の有効期限１４１０が経過しなかった場合、図１４のチャンク識別子（５１５−１）は未だ冷却されず、図１４のチャンク識別子（５１５−１）はキューの先頭に残される。
これは該当キューの他のチャンク識別子が降格されないことを意味しないことに注意しなければならない。
チャンクがアクセスされた順序にチャンク識別子がキューに配置されるので、図１４のチャンク識別子（５１５−１）は、最も長い時間前にアクセスされた（該当キューのチャンク識別子の中の）チャンク識別子であり、したがって最初に期限切れになるチャンク識別子である。
図１４のチャンク識別子（５１５−１）が再びアクセスされた場合（したがって、“熱く”残された場合）、図１４のチャンク識別子（５１５−１）は、キューの末尾に移動され、他のチャンク識別子が該当キューの先頭に残され、したがって潛在的に降格の対象になる。
【０１０１】
図２１Ａ及び図２１Ｂは、本発明の実施形態に係る図５の書込み命令（５０５−１）に対して図５のストリーム識別子（５３０−１）を判断するための例示的な手続を説明するためのフローチャートである。
図２１Ａを参照すると、まず、ステップＳ２１０５で、図４の受信機４０５はソフトウェアソースから書込み命令（５０５−１）を受信する。
【０１０２】
次に、ステップＳ２１１０で、図５の論理ブロックアドレス（５１０−１）が図５の書込み命令（５０５−１）から読み出される。
ステップＳ２１１５で、図４の論理ブロックアドレスマッパ４１０は図５の論理ブロックアドレス（５１０−１）を図５のチャンク識別子（５１５−１）にマッピングする。
上述したように、図５の論理ブロックアドレスマッパ４１０は所望する任意の方法で、例えば図５の論理ブロックアドレス（５１０−１）から特定なビットをマスクすることによって、又は図５の論理ブロックアドレス（５１０−１）を図７のチャンクサイズ７０５に割ることによって、図５のチャンク識別子（５１５−１）を判断する。
【０１０３】
次に、ステップＳ２１２０で、図５のストリーム選択ロジック４１５は図５のチャンク識別子（５１５−１）に対して使用されるストリーム識別子（５３０−１）を選択する。
上述したように、図５のストリーム選択ロジック４１５は任意の所望する方法で、例えば、図３のチャンクストリームマッパ３４０から図５のストリーム識別子（５３０−１）を検索することによって、図８のアクセスカウント（８２０−１）から図５のストリーム識別子（５３０−１）を計算することによって、ラウンドロビン方式に装置ストリームを割り当てることによって、又は、任意の他の必要とするアプローチとして動作する。
【０１０４】
次に、ステップＳ２１２５で、図４のストリーム識別子アダー４２０は図５のストリーム識別子（５３０−１）を図５の書込み命令（５０５−１）に追加する。
最後に、ステップＳ２１３０で、図５の書込み命令（５０５−１）は、図５の書込み命令（５０５−１）を図１のソリッドステートドライブ１２０に伝送する図４の送信機４２５を含む図１のソリッドステートドライブ１２０によって処理されて指定された書込み動作を遂行する。
この時、図５の書込み命令（５０５−１）は完全に処理される。
しかし、図５のチャンク識別子（５１５−１）に割り当てられた図５のストリーム識別子（５３０−１）を更新する等の他の処理は相変わらず遂行される。
【０１０５】
次に、図２１ＢのステップＳ２１３５で、図４のキューアー４３０は追加処理のために図５のチャンク識別子（５１５−１）を図３の提出キュー３３５に追加する。
次に、ステップＳ２１４０で、図５のチャンク識別子（５１５−１）が図３の提出キュー３３５の先頭に到達する時、図５のチャンク識別子（５１５−１）は図３の提出キュー３３５から除去する。
最後に、ステップＳ２１４５で、図４の背景ロジック４３５は、図５のチャンク識別子（５１５−１）に対する図５のストリーム識別子（５３０−１）を更新する。
図５のチャンク識別子（５１５−１）に対する図５のストリーム識別子（５３０−１）を更新する図４の背景ロジック４３５のための多様なアプローチは図２４及び図２５Ａ〜図２５Ｃを参照して以下で説明する。
【０１０６】
図２２は本発明の実施形態に係る図５の論理ブロックアドレス（５１０−１）を図５のチャンク識別子（５１５−１）にマッピングする図４の論理ブロックアドレスマッパ４１０のための例示的な手続を説明するためのフローチャートである。
図２２を参照すると、ステップＳ２２０５で、図４の論理ブロックアドレスマッパ４１０は図５のアドレスマスク５２５を使用して図１の論理ブロックアドレス（５１０−１）からビットをマスクし、図５のチャンク識別子（５１５−１）を残す。
【０１０７】
そうでなければ、ステップＳ２２１０で、図４の論理ブロックアドレスマッパ４１０は図５の論理ブロックアドレス（５１０−１）を図７のチャンクサイズ７０５で割って図５のチャンク識別子（５１５−１）を判断する。
【０１０８】
図２３Ａ及び図２３Ｂは、本発明の第１実施形態に係る順次ロジックを利用して図５のチャンク識別子（５１５−１）に対する図５のストリーム識別子（５３０−１）を判断するための例示的な手続を説明するためのフローチャートである。
図２３Ａを参照すると、ステップＳ２３０５で、図４のストリーム選択ロジック４１５は書込み命令（（５０５−１）〜（５０５−３））で順次論理ブロックアドレスに対するテスト中である否かを決定する。
【０１０９】
例えば、マルチキューアプローチを使用する本発明の実施形態で、図４のストリーム選択ロジック４１５は図５の書込み命令（５０５−１）が以前の書込み命令に順次的であるか否かは考慮しない。
図４のストリーム選択ロジック４１５が順次書込み命令に対してテスト中でなければ、ステップＳ２３１５で、図４のストリーム選択ロジック４１５は、例えば図３のチャンクストリームマッパ３４０から図５のストリーム識別子（５３０−１）をアクセスすることによって図５のチャンク識別子（５１５−１）と現在関連した図５のストリーム識別子（５３０−１）を判断する。
【０１１０】
図４のストリーム選択ロジック４１５が図５のストリーム識別子（５３０−１）をどのようにして判断するかの細部内容は図３のチャンクストリームマッパ３４０がどのようにして具現されるかに依存する。
チャンクストリームマッパ３４０が図８のＳＦＲ表８０５を含むと、図４のストリーム選択ロジック４１５はテーブル検索を遂行する。
チャンクストリームマッパ３４０が図１４のノード（（１４０５−１）〜（１４０５−３））を含むと、図４のストリーム選択ロジック４１５は図５のストリーム識別子（５３０−１）を判断する前にノードを検索して図５のチャンク識別子（５１５−１）を検索しなければならない。
【０１１１】
一方、図４のストリーム選択ロジック４１５が順次書込み命令に対してテスト中であれば、ステップＳ２３１５で、図４のストリーム選択ロジック４１５は図１０のエントリ（（１０２０−１）〜（１０２０−８））の図１０のウインドー１０１５を識別する。
次に、ステップＳ２３２０で、図４のストリーム選択ロジック４１５は図５の論理ブロックアドレス（５１０−１）が図１０のウインドー１０１５内の図１０の任意のエントリ（（１０２０−１）〜（１０２０−８））に対する図１０の末尾論理ブロックアドレス１０３０に順次的であるか否かを判断する。
【０１１２】
図５の論理ブロックアドレス（５１５−１）が図１０のウインドー１０１５内の図１０の任意のエントリ（（１０２０−１）〜（１０２０−８））に対する図１０の末尾論理ブロックアドレス１０３０に順次的でなければ、ステップＳ２３１０に行き、図４のストリーム選択ロジック４１５は図５のチャンク識別子（５１５−１）に現在関連した図５のストリーム識別子（５３０−１）を上述したように判断する。
【０１１３】
図４のストリーム選択ロジック４１５が順次書込み命令に対するテスト中であり、そして図５の論理ブロックアドレス（５１０−１）が図１０のウインドー１０１５内の図１０の任意のエントリ（（１０２０−１）〜（１０２０−８））に順次的であれば、図２３Ｂに行き、ステップＳ２３２５で図４のストリーム選択ロジック４１５は以前の書込み命令に割り当てられた図５のストリーム識別子（５３０−１）を判断する。
次に、ステップＳ２１２５で（図２１Ａ及び図２１Ｂの一部であり、したがって説明の目的として図２３Ｂで点線で示した）、以前の書込み命令に割り当てられた図５のストリーム識別子（５３０−１）は図５の書込み命令（５０５−１）に割り当てる。
【０１１４】
次に、ステップＳ２３３０で、図４のストリーム選択ロジック４１５は、図１０のウインドー１０１５内の最も古いエントリである図１０のエントリ（（１０２０−１）〜（１０２０−８））を識別する。
最後に、ステップＳ２３３５で、図４のストリーム選択ロジック４１５は、図５のウインドー１０１５内の最も古いエントリを除去し、図５の書込み命令（５０５−１）に対応する新しいエントリを追加する。
【０１１５】
図４のストリーム選択ロジック４１５がこの削除及び追加をどのようにして遂行するかの技法は、図１０のウインドー１０１５に使用された構造に依存する。
図１０のウインドー１０１５が図１０のエントリ（（１０２０−１）〜（１０２０−８））のアレイ又は連結リストを格納すれば、削除及び追加は最も古いエントリを新しい値に上書きし、ポインターをアレイ又は連結リストの先頭として更新するようなことを含む。
一方、図１０のウインドー１０１５に対して他の構造を使用すれば、削除及び追加は最も古いエントリに対するメモリ客体（ｏｂｊｅｃｔ）を削除及び割り当て解除し、そして図５の書込み命令（５０５−１）に対する新しいメモリ客体を割り当てることを含む。
【０１１６】
図２４は、本発明の第１実施形態に係る図８のＳＦＲ表８０５の背景更新を遂行するための例示的な手続を説明するためのフローチャートである。
図２４を参照すると、ステップＳ２４０５で、図９のアクセスカウント調節器９１５は図８のアクセスカウント（８２０−１）を（例えば、算術論理部のインクリメンタを用いて）増加させる。
次に、ステップＳ２４１０で、図９の最新ロジック９１０は、図１１の最新ウェイト１１０５を（例えば、算術論理部を用いて）計算する。
【０１１７】
次に、ステップＳ２４１５で、図９のアクセスカウント調節器９１５は、図８のアクセスカウント（８２０−１）（ステップＳ２４０５で増加された）を（例えば、算術論理部を用いて）図１１の最新ウェイト１１０５で割られる。
最後に、ステップＳ２４２０で、図９のストリーム識別子調節器９２０は、図５のチャンク識別子（５１５−１）と関連する新しいストリーム識別子を決定する。
例えば、図９のストリーム識別子調節器９２０は、算術論理部を用いて図１２の調節されたアクセスカウント１２０５のログを計算する。
【０１１８】
図２５Ａ〜図２５Ｃは、本発明の第２実施形態に係る図１４のノード（１４０５−１）の背景更新を遂行するための例示的な手続を説明するためのフローチャートである。
図２５Ａを参照すると、ステップＳ２５０５で、図１７のインクリメンタ１７０５は図１４のアクセスカウント（８２０−１）を増加させる。
次に、ステップＳ２５１０で、図１７のチャンク有効期限ロジック１７１５は図１４のチャンク識別子（５１５−１）に対する図１４の有効期限１４１０を判断する。
【０１１９】
次に、ステップＳ２５１５で、図１７のストリーム識別子調節器１７１０は、図１４のチャンク識別子（５１５−１）に対する図１４のストリーム識別子（５３０−１）を判断する。
図１７のストリーム識別子調節器１７１０は、例えば図１４のノード（１４０５−１）から図１４のストリーム識別子（５３０−１）をアクセスすることによって図１４のストリーム識別子（５３０−１）を判断する。
次に、ステップＳ２５２０で、図１５の第２キューアー１５１０は、図１４のストリーム識別子（５３０−１）に対応する図１５のキュー（（１５２０−１）〜（１５２０−３））の中の１つに図１４のチャンク識別子（５１５−１）を配置する。
【０１２０】
図２５Ｂを参照すると、ステップＳ２５２５で、図１７の最も熱いチャンクロジック１７２０は、図１４のチャンク識別子（５１５−１）に対する図１４のアクセスカウント（８２０−１）を最も熱いチャンクに対するアクセスカウントと比較する。
図１４のチャンク識別子（５１５−１）に対する図１４のアクセスカウント（８２０−１）が最も熱いチャンクに対するアクセスカウントより大きければ、図１４のチャンク識別子（５１５−１）は、現在最も熱いチャンクである。
したがって、ステップＳ２５３０で、図１７の最も熱いチャンクロジック１７２０は、図１４のチャンク識別子（５１５−１）が新しい最も熱いチャンクであることを示し、ステップＳ２５３５で図１７の最も熱いチャンクロジック１７２０は、図１９の装置寿命１９０５を図１４のチャンク識別子（５１５−１）の最も最新の２つのアクセス間の時間の差によって判断する。
【０１２１】
図１４のチャンク識別子（５１５−１）が最も熱いチャンクであるか否かに関わらず、ステップＳ２５４０で、図２０の比較器２００５は、図１４のチャンク識別子（５１５−１）が図１５のキュー（（１５２０−１）〜（１５２０−３））の中の１つの先頭にある時、図１４の有効期限１４１０が経過したか否かを判断する。
そうでなければ、図４の背景ロジック４３５は、図１４のチャンク識別子（５１５−１）に対する図１４の有効期限１４１０が経過する時まで待機し、（その間に他のことを行い）ステップＳ２５４０に戻って再び点検する。
その時点で、ステップＳ２５４５で、図１５の降格ロジック１５２５は、図１４のチャンク識別子（５１５−１）を図１５のキュー（（１５２０−１）〜（１５２０−３））から除去する。
以後に、ステップＳ２５５０で、図２０のデクリメンタ２０１０は図１４のストリーム識別子（５３０−１）を減少させる。
【０１２２】
図２５Ｃを参照すると、ステップＳ２５５５で、図１５の第２キューアー１５１０は、図１４のチャンク識別子（５１５−１）を新しいストリーム識別子に対応する図１５のキュー（（１５２０−１）〜（１５２０−３））の中の他の１つに配置する。
次に、ステップＳ２５６０で、図１５の降格ロジック１５２５は、図１４のチャンク識別子（５１５−１）が最も熱いチャンクであるかを判断する。
そうであれば、ステップＳ２５６５で、図１５の降格ロジック１５２５は、他の１つのチャンク識別子を新しい最も熱いチャンクとして選択する。
例えば、キューの先頭又は末尾にあるチャンク識別子のような図１４のストリーム識別子（５３０−１）に割り当てられた他の１つのチャンクが（ステップＳ２５６０で減少する前に）選択される。
図１５の降格ロジック１５２５は、また以前のように、選択された新しい最も熱いチャンクに基づいて図１９の装置寿命１９０５を計算する。
【０１２３】
図２１Ａ〜図２５Ｃを参照して、本発明の一部の実施形態が示した。
しかし、この分野に熟練された者は、ステップの順序を変更することによって、ステップを省略することによって、又は図面に示さない連結を含ませることによって、本発明の他の実施形態もまた可能にすることを認識する。
フローチャートのこのようなすべての変更は、明示的に説明しているか否かに関わらず、本発明の実施形態であることとみなす。
【０１２４】
以下の説明は、本発明の技術的思想が具現された適切なマシン又は複数構成のマシンの簡潔で一般的な説明を提供することを意図している。
マシン又は複数構成のマシンは、キーボード、マウス等のような通常的な入力装置からの入力のみならず、その他のマシンから受信される指示、仮想現実（ＶＲ、ｖｉｒｔｕａｌｒｅａｌｉｔｙ）環境との相互作用、生体フィードバック、又は他の入力信号によって少なくとも一部を制御することができる。
ここで使用したように、“マシン”という用語は、単一マシン、仮想マシン、又は通信できるように結合されたマシン、仮想マシン、又は共に動作する装置のシステムを広く含むことができる。
例示的なマシンは、個人用コンピュータ、ワークステーション、サーバー、ポータブルコンピュータ、ハンドヘルド装置、電話機、タブレット等のようなコンピューティング装置だけでなく、個人又は共用輸送（例えば、自動車、汽車、タクシー等）のような輸送装置を含むことができる。
【０１２５】
マシン又は複数構成のマシンは、プログラム可能であるか、又はプログラム可能でないロジック装置又はアレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）、埋め込み型コンピュータ、スマートカード等のような埋め込み型制御器を含むことができる。
【０１２６】
マシン又は複数構成のマシンは、ネットワークインターフェイス、モデム又は他の通信接続のような１つ以上の遠隔マシンへの１つ以上の接続を活用することができる。
マシンは、イントラネット、インターネット、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）等のような物理的又は論理的ネットワークを通じて互いに接続することができる。
この分野に熟練された者はネットワーク通信が無線周波数（ＲＦ）、衛星、マイクロ波、ＩＥＥＥ８０２．１１（ＷｉＦｉ）、ブルートゥース（登録商標）、光、赤外線、ケーブル、レーザー等を含む多様な有線又は無線短距離又は長距離キャリヤー及びプロトコルを活用することが理解されるべきである。
【０１２７】
本発明の実施形態は、マシンによってアクセスされた時にマシンが作業を遂行するか、又は抽象的なデータタイプ又は低レベルハードウェアコンテキストを定義するようにする関数、手続、データ構造、アプリケーションプログラム等を含む関連されたデータを参照して説明される。
関連するデータは、ＲＡＭ、ＲＯＭ等のような揮発性又は不揮発性メモリ又はハードドライブ、フロッピー（登録商標）ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック（登録商標）、デジタルビデオディスク、生体ストレージ等を含む他の格納装置及び関連する格納媒体に格納される。
【０１２８】
関連するデータは、物理的又は論理的ネットワークを含む伝送環境にわたってパケット、直列データ、並列データ、伝送信号等の形態に伝達することができ、圧縮された又は暗号化された形式で使用することができる。
関連するデータは、分散環境で使用することができ、マシンアクセスのために地域的に又は遠隔に格納することができる。
【０１２９】
本発明の実施形態は、１つ以上のプロセッサによって実行される命令を含む実在する非一時的であるマシン読出し可能である媒体を含むことができる。
命令はここに説明したように本発明の要素を遂行するようにする命令を含むことができる。
【０１３０】
本発明の実施形態を参照して説明されたが、図に示した実施形態は、配置及び詳細側面で本発明の技術的思想から逸脱しなくとも、修正することができ所望する方法に組み合わすことができる。
前述の説明が特定実施形態に集中しているが、他の構成も、また考慮することができる。
特に、“本発明の実施形態に係る”又はこれと類似な表現が使用されるが、このような文句は可能である一般的な実施形態を参照し、本発明の技術的思想を具体的な実施形態の構成に限定しようとすることではない。
ここに使用されるように、このような用語は同一又は他の実施形態に組み合わせ可能な同一又は異なる実施形態を参照することができる。
先に説明した実施形態は、本発明の技術的思想を制限しない。
幾つかの実施形態が説明されたが、この分野に熟練された者はこのような実施形態が本発明の新規な技術的思想及び長所から逸脱しなくとも、多様に修正することができることが理解されるべきである。
したがって、このようなすべての修正は、請求項に定義したように本発明の技術的思想範囲に含まれる。
【０１３１】
本発明の実施形態は、下のステートメントへ拡張されることができ、限定されない。
第１ステートメントとして、本発明の実施形態はソリッドステートドライブ（ＳＳＤ、ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）を含む。
ソリッドステートドライブは、データを格納するフラッシュメモリと、ソリッドステートドライブで複数の装置ストリームに対する支援と、提出キュー及びチャンクストリームマッパのための格納部を含み、複数の書込み命令に応答してフラッシュメモリに対するデータ書込みを管理するソリッドステート制御器と、フラッシュ変換階層と、を含む。
フラッシュ変換階層は、論理ブロックアドレス（ＬＢＡ、ｌｏｇｉｃａｌｂｌｏｃｋ  ａｄｄｒｅｓｓ）を含む書込み命令を受信する受信機と、論理ブロックアドレスをチャンク識別子（ＩＤ、ｉｄｅｎｔｉｆｉｅｒ）にマッピングする論理ブロックアドレスマッパと、チャンクストリームマッパを用いてチャンク識別子に基づいてストリーム識別子を選択するストリーム選択ロジックと、ストリーム識別子を書込み命令に追加するストリーム識別子アダーと、チャンク識別子を提出キューに配置するキューアーと、チャンク識別子を提出キューから除去し、チャンクストリームマッパを更新する背景ロジックと、を含む。
【０１３２】
第２ステートメントとして、本発明の実施形態は、第１ステートメントにしたがうソリッドステートドライブを含み、書込み命令をストリーム識別子と共にソリッドステートドライブに伝送する送信機をさらに含む。
第３ステートメントとして、本発明の実施形態は、第１ステートメントにしたがうソリッドステートドライブを含み、論理ブロックアドレスマッパは、論理ブロックアドレスの一部をマスクしてチャンク識別子を判断するアドレスマスクを含む。
第４ステートメントとして、本発明の実施形態は第１ステートメントにしたがうソリッドステートドライブを含み、論理ブロックアドレスマッパは、論理ブロックアドレスをチャンクサイズで割って、チャンク識別子を確認する算術論理部（ＡＬＵ、ａｒｉｔｈｍｅｔｉｃｌｏｇｉｃｕｎｉｔ）を含む。
【０１３３】
第５ステートメントとして、本発明の実施形態は、第１ステートメントにしたがうソリッドステートドライブを含み、チャンクストリームマッパは順次、頻度、最新（ＳＦＲ、Ｓｅｑｕｅｎｔｉａｌ、Ｆｒｅｑｕｅｎｃｙ、Ｒｅｃｅｎｃｙ）表を含み、ＳＦＲ表はチャンク識別子及びチャンク識別子に対するストリーム識別子を含む。
第６ステートメントとして、本発明の実施形態は、第５ステートメントにしたがうソリッドステートドライブを含み、背景ロジックは論理ブロックアドレスが以前の書込み命令の第２論理ブロックアドレスに順次的であれば、以前ストリームを選択する順次ロジックを含む。
第７ステートメントとして、本発明の実施形態は、第６ステートメントにしたがうソリッドステートドライブを含み、以前の書込み命令はウインドーサイズを有する書込み命令に先行するウインドー内にある。
【０１３４】
第８ステートメントとして、本発明の実施形態は、第７ステートメントにしたがうソリッドステートドライブを含み、ウインドーサイズはホストコンピュータシステムのプロセッサのコアの数、及びホストコンピュータシステムのプロセッサで実行されるソフトウェアソースの数の中の少なくとも１つに応答して決定される。
第９ステートメントとして、本発明の実施形態は、第７ステートメントにしたがうソリッドステートドライブを含み、ソリッドステートドライブ制御器は、以前の書込み命令を含む以前の書込み命令のキューのための格納部をさらに含み、キューは以前の書込み命令の各々に対して末尾論理アドレス及び対応するストリーム識別子を含む。
第１０ステートメントとして、本発明の実施形態は、第５ステートメントにしたがうソリッドステートドライブを含み、背景ロジックは、チャンク識別子に対する現在アクセス時間、チャンク識別子に対する以前アクセス時間、及び減衰期間に基づいて最新ウェイトを計算する最新ロジックと、最新ウェイトに基づいてチャンク識別子に対するアクセスカウントを調節して調節されたアクセスカウントを生産するアクセスカウント調節器と、チャンク識別子に対する調節されたアクセスカウントに基づいてストリーム識別子を調節するストリーム識別子調節器と、を含む。
【０１３５】
第１１ステートメントとして、本発明の実施形態は、第１０ステートメントにしたがうソリッドステートドライブを含み、ＳＦＲ表はチャンク識別子に対する現在アクセス時間、チャンク識別子に対する以前アクセス時間、及びチャンク識別子に対するアクセスカウントをさらに含む。
第１２ステートメントとして、本発明の実施形態は、第１０ステートメントにしたがうソリッドステートドライブを含み、最新ロジックは、最新ウェイトを２の累乗（累乗の指数は、チャンク識別子に対する現在アクセス時間とチャンク識別子に対する以前アクセス時間との差を減衰期間で割ったもの）で計算する。
第１３ステートメントとして、本発明の実施形態は、第１０ステートメントにしたがうソリッドステートドライブを含み、アクセスカウント調節器は、チャンク識別子に対する調節されたアクセスカウントを（チャンク識別子に対する前記アクセスカウントに１を加えたもの）最新ウェイトで割ったものとして計算する。
【０１３６】
第１４ステートメントとして、本発明の実施形態は、第１０ステートメントにしたがうソリッドステートドライブを含み、ストリーム識別子調節器は、ストリーム識別子をチャンク識別子に対する調節されたアクセスカウントのログとして計算する。
第１５ステートメントとして、本発明の実施形態は、第１ステートメントにしたがうソリッドステートドライブを含み、チャンクストリームマッパはノードエントリを含み、ノードエントリはチャンク識別子及びチャンク識別子に対するストリーム識別子を含む。
第１６ステートメントとして、本発明の実施形態は、第１５ステートメントにしたがうソリッドステートドライブを含み、背景ロジックは、チャンク識別子に基づいてストリーム識別子を昇格する時を判断する昇格ロジックと、チャンク識別子に対するストリーム識別子に応答して、複数のストリーム識別子に対応する複数のキューの第１番目のキューにチャンク識別子を配置する第２キューアーと、チャンク識別子に基づいてストリーム識別子を降格する時を判断する降格ロジックと、を含む。
【０１３７】
第１７ステートメントとして、本発明の実施形態は、第１６ステートメントにしたがうソリッドステートドライブを含み、昇格ロジックは、チャンク識別子に対するアクセスカウントを増加させるインクリメンタと、チャンク識別子に対するアクセスカウントに応答してストリーム識別子を判断するストリーム識別子調節器と、を含む。
第１８ステートメントとして、本発明の実施形態は、第１７ステートメントにしたがうソリッドステートドライブを含み、ストリーム識別子調節器は、ストリーム識別子に対するアクセスカウントのログとしてストリーム識別子を判断するように動作する。
第１９ステートメントとして、本発明の実施形態は、第１７ステートメントにしたがうソリッドステートドライブを含み、昇格ロジックは、チャンク識別子に対する有効期限を演算するチャンク有効期限ロジックをさらに含む。
【０１３８】
第２０ステートメントとして、本発明の実施形態は、第１９ステートメントにしたがうソリッドステートドライブを含み、チャンク有効期限ロジックはチャンク識別子に対する有効期限をチャンク識別子に対するアクセスカウントと装置寿命の合計として演算するように動作する。
第２１ステートメントとして、本発明の実施形態は、第２０ステートメントにしたがうソリッドステートドライブを含み、装置寿命は、最も熱いチャンクに対する最後アクセス時間と最も熱いチャンクに対する以前アクセス時間との間の差である。
第２２ステートメントとして、本発明の実施形態は、第２１ステートメントにしたがうソリッドステートドライブを含み、昇格ロジックは、チャンク識別子に対するアクセスカウントが最も熱いチャンクに対する以前のアクセスカウントより大きい時、チャンク識別子を最も熱いチャンクとして識別する最も熱いチャンクロジックをさらに含む。
【０１３９】
第２３ステートメントとして、本発明の実施形態は、第２１ステートメントにしたがうソリッドステートドライブを含み、ノードエントリは、チャンク識別子に対するアクセスカウント及びチャンク識別子に対する有効期限をさらに含む。
第２４ステートメントとして、本発明の実施形態は、第１６ステートメントにしたがうソリッドステートドライブを含み、降格ロジックは、チャンク識別子に対する有効期限が経過したか否かを判断する比較器と、チャンク識別子に対する有効期限が経過したら、ストリーム識別子を減らすデクリメンタを含み、第２キューアーはチャンク識別子に対する減少されたストリーム識別子に応答して、複数のストリーム識別子に対応する複数のキューの中の第２番目にチャンク識別子を配置するように動作する。
第２５ステートメントとして、本発明の実施形態は、第２４ステートメントにしたがうソリッドステートドライブを含み、降格ロジックは、チャンク識別子が複数のキューの先頭にある時、チャンク識別子に基づいてストリーム識別子を降格する時を判断するように動作する。
第２６ステートメントとして、本発明の実施形態は、第２４ステートメントにしたがうソリッドステートドライブを含み、降格ロジックは、チャンク識別子が複数のキュー内の第１のキューの先頭にある時、チャンク識別子に基づいてストリーム識別子を降格する時を判断するように動作する。
【０１４０】
第２７ステートメントとして、本発明の実施形態は、コンピューティングシステムで使用されるためのドライバーを含み、ドライバーは、論理ブロックアドレス（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ：ＬＢＡ）を含むソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）に対する書込み命令を受信する受信機と、論理ブロックアドレスをチャンク識別子（ｉｄｅｎｔｉｆｉｅｒ：ＩＤ）にマッピングする論理ブロックアドレスマッパと、ホストコンピュータシステムのメモリに格納されたチャンクストリームマッパを用いてチャンク識別子に基づいてストリーム識別子を選択するストリーム選択ロジックと、ストリーム識別子を書込み命令に追加するストリーム識別子アダーと、チャンク識別子をメモリに格納された提出キューに配置するキューアーと、提出キューからチャンク識別子を除去し、チャンクストリームマッパを更新する背景ロジックと、を含む。
【０１４１】
第２８ステートメントとして、本発明の実施形態は、第２７ステートメントにしたがうドライバーを含み、書込み命令をストリーム識別子を使用するソリッドステートドライブに伝送する送信機をさらに含む。
第２９ステートメントとして、本発明の実施形態は、第２７ステートメントにしたがうドライバーを含み、論理ブロックアドレスマッパは、論理ブロックアドレスの一部をマスクしてチャンク識別子を判断するアドレスマスクを含む。
第３０ステートメントとして、本発明の実施形態は、第２７ステートメントにしたがうドライバーを含み、論理ブロックアドレスマッパは、論理ブロックアドレスをチャンクサイズで割ってチャンクを識別する算術論理部（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ：ＡＬＵ）を含む。
【０１４２】
第３１ステートメントとして、本発明の実施形態は、第２７ステートメントにしたがうドライバーを含み、チャンクストリームマッパは、順次、頻度、最新（Ｓｅｑｕｅｎｔｉａｌ、Ｆｒｅｑｕｅｎｃｙ、Ｒｅｃｅｎｃｙ：ＳＦＲ）表を含み、ＳＦＲ表はチャンク識別子及びチャンク識別子に対するストリーム識別子を含む。
第３２ステートメントとして、本発明の実施形態は、第３１ステートメントにしたがうドライバーを含み、背景ロジックは論理ブロックアドレスが以前の書込み命令の第２論理ブロックアドレスに順次的であれば、以前ストリームを選択する順次ロジックを含む。
第３３ステートメントとして、本発明の実施形態は、第３２ステートメントにしたがうドライバーを含み、以前の書込み命令は、ウインドーサイズを有する書込み命令に先行するウインドー内にある。
【０１４３】
第３４ステートメントとして、本発明の実施形態は、第３２ステートメントにしたがうドライバーを含み、ウインドーサイズは、ホストコンピュータシステムのプロセッサのコアの数、及びホストコンピュータシステムのプロセッサで実行されるソフトウェアソースの数の中の少なくとも１つに応答して判断される。
第３５ステートメントとして、本発明の実施形態は、第３１ステートメントにしたがうドライバーを含み、背景ロジックは、チャンク識別子に対する現在アクセス時間、チャンク識別子に対する以前アクセス時間、及び減衰期間に基づいて最新ウェイトを計算する最新ロジックと、最新ウェイトに基づいてチャンク識別子に対するアクセスカウントを調節し調節されたアクセスカウントを生成するアクセスカウント調節器と、チャンク識別子に対する調節されたアクセスカウントに基づいてストリーム識別子を調節するストリーム識別子調節器と、を含む。
第３６ステートメントとして、本発明の実施形態は、第３５ステートメントにしたがうドライバーを含み、ＳＦＲ表は、チャンク識別子に対する現在アクセス時間、チャンク識別子に対する以前アクセス時間、及びチャンク識別子に対するアクセスカウントをさらに含む。
【０１４４】
第３７ステートメントとして、本発明の実施形態は、第３５ステートメントにしたがうドライバーを含み、最新ロジックは、最新ウェイトを２の累乗（累乗の指数は、チャンク識別子に対する現在アクセス時間とチャンク識別子に対する以前アクセス時間との差を減衰期間で割ったもの）で計算する。
第３８ステートメントとして、本発明の実施形態は、第３５ステートメントにしたがうドライバーを含み、アクセスカウント調節器は、チャンク識別子に対する調節されたアクセスカウントを（チャンク識別子に対するアクセスカウントに１を加えたもの）を最新ウェイトで割ったものとして計算する。
第３９ステートメントとして、本発明の実施形態は、第３５ステートメントにしたがうドライバーを含み、ストリーム識別子調節器は、ストリーム識別子をチャンク識別子に対する調節されたアクセスカウントのログとして計算する。
【０１４５】
第４０ステートメントとして、本発明の実施形態は、第２７ステートメントにしたがうドライバーを含み、チャンクストリームマッパは、ノードエントリを含み、ノードエントリはチャンク識別子及びチャンク識別子に対するストリーム識別子を含む。
第４１ステートメントとして、本発明の実施形態は、第４０ステートメントにしたがうドライバーを含み、背景ロジックは、チャンク識別子に基づいてストリーム識別子を昇格する時を判断する昇格ロジックと、チャンク識別子に対するストリーム識別子に応答して、複数のストリーム識別子に対応する複数のキューの第１番目のキューにチャンク識別子を配置する第２キューアーと、チャンク識別子に基づいてストリーム識別子を降格する時を判断する降格ロジックと、を含む。
第４２ステートメントとして、本発明の実施形態は、第４１ステートメントにしたがうドライバーを含み、昇格ロジックは、チャンク識別子に対するアクセスカウントを増加させるインクリメンタと、チャンク識別子に対するアクセスカウントに応答してストリーム識別子を判断するストリーム識別子調節器と、を含む。
【０１４６】
第４３ステートメントとして、本発明の実施形態は、第４２ステートメントにしたがうドライバーを含み、ストリーム識別子調節器は、ストリーム識別子に対するアクセスカウントのログとしてストリーム識別子を判断するように動作する。
第４４ステートメントとして、本発明の実施形態は、第４２ステートメントにしたがうドライバーを含み、昇格ロジックは、チャンク識別子に対する有効期限を演算するチャンク有効期限ロジックをさらに含む。
第４５ステートメントとして、本発明の実施形態は、第４４ステートメントにしたがうドライバーを含み、チャンク有効期限ロジックは、チャンク識別子に対する有効期限をチャンク識別子に対するアクセスカウントと装置寿命の合計として演算するように動作する。
【０１４７】
第４６ステートメントとして、本発明の実施形態は、第４４ステートメントにしたがうドライバーを含み、装置寿命は、最も熱いチャンクに対する最後のアクセス時間と最も熱いチャンクに対する以前のアクセス時間との間の差である。
第４７ステートメントとして、本発明の実施形態は、第４６ステートメントにしたがうドライバーを含み、昇格ロジックは、チャンク識別子に対するアクセスカウントが最も熱いチャンクに対する以前のアクセスカウントより大きい時、チャンク識別子を最も熱いチャンクとして識別する最も熱いチャンクロジックをさらに含む。
第４８ステートメントとして、本発明の実施形態は、第４６ステートメントにしたがうドライバーを含み、ノードエントリは、チャンク識別子に対するアクセスカウント及びチャンク識別子に対する有効期限をさらに含む。
【０１４８】
第４９ステートメントとして、本発明の実施形態は、第４１ステートメントにしたがうドライバーを含み、降格ロジックは、チャンク識別子に対する有効期限が経過したか否かを判断する比較器と、チャンク識別子に対する有効期限が経過したら、ストリーム識別子を減らすデクリメンタと、を含み、第２キューアーは、チャンク識別子に対する減少されたストリーム識別子に応答して、複数のストリーム識別子に対応する複数のキューの中の第２番目のキューにチャンク識別子を配置するように動作する。
第５０ステートメントとして、本発明の実施形態は、第４９ステートメントにしたがうドライバーを含み、降格ロジックは、チャンク識別子が複数のキューの先頭にある時、チャンク識別子に基づいてストリーム識別子を降格する時を判断するように動作する。
第５１ステートメントとして、本発明の実施形態は、第４９ステートメントにしたがうドライバーを含み、降格ロジックは、チャンク識別子が複数のキューの第１のキューの先頭にある時、チャンク識別子に基づいてストリーム識別子を降格する時を判断するように動作する。
【０１４９】
第５２ステートメントとして、本発明の実施形態は、ストリーム識別子割り当て方法を含む。ストリーム識別子割り当て方法はソフトウェアソースから書込み命令を受信する段階と、書込み命令で論理ブロックアドレス（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ：ＬＢＡ）を判断する段階と、論理ブロックアドレスを含むソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）でチャンクに対するチャンク識別子（ｉｄｅｎｔｉｆｉｅｒ：ＩＤ）を識別する段階と、チャンク識別子に関連したストリーム識別子にアクセスする段階と、ストリーム識別子を書込み命令に割り当てる段階と、割り当てされたストリーム識別子を用いてソリッドステートドライブで書込み命令を処理する段階と、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階を含む。
【０１５０】
第５３ステートメントとして、本発明の実施形態は、第５２ステートメントのストリーム識別子割り当て方法を含み、ストリーム識別子割り当て方法は、ホストコンピュータシステムのファイルシステム階層、ブロック階層、又は装置ドライバー階層の中で１つで具現される。
第５４ステートメントとして、本発明の実施形態は、第５２ステートメントのストリーム識別子割り当て方法を含み、ストリーム識別子割り当て方法は、ソリッドステートドライブのフラッシュ変換階層で具現される。
第５５ステートメントとして、本発明の実施形態は、第５２ステートメントのストリーム識別子割り当て方法を含み、論理ブロックアドレスを含むソリッドステートドライブでチャンクに対するチャンク識別子を識別する段階は、論理ブロックアドレスでアドレスマスクを用いてチャンク識別子を識別する段階を含む。
【０１５１】
第５６ステートメントとして、本発明の実施形態は、第５２ステートメントのストリーム識別子割り当て方法を含み、論理ブロックアドレスを含むソリッドステートドライブでチャンクに対するチャンク識別子を識別する段階は、論理ブロックアドレスをチャンクのセクターの数で割る段階を含む。
第５７ステートメントとして、本発明の実施形態は、第５２ステートメントのストリーム識別子割り当て方法を含み、ストリーム識別子を書込み命令に割り当てる段階は、ストリーム識別子を書込み命令にタグとして追加する段階を含む。
第５８ステートメントとして、本発明の実施形態は、第５２ステートメントのストリーム識別子割り当て方法を含み、論理ブロックアドレスが第２書込み命令の第２論理ブロックアドレスに順次的であるか否かを判断する段階と、論理ブロックアドレスが第２書込み命令の第２論理ブロックアドレスに順次的であれば、第２書込み命令に割り当てられた第２ストリーム識別子を判断する段階と、書込み命令に第２ストリーム識別子を割り当てる段階をさらに含む。
【０１５２】
第５９ステートメントとして、本発明の実施形態は、第５８ステートメントのストリーム識別子割り当て方法を含み、第２書込み命令は、書込み命令に先行するウインドー内にある。
第６０ステートメントとして、本発明の実施形態は、第５９ステートメントのストリーム識別子割り当て方法を含み、ウインドーを識別する段階をさらに含む。
第６１ステートメントとして、本発明の実施形態は、第６０ステートメントのストリーム識別子割り当て方法を含み、ウインドーを識別する段階は、ソリッドステートドライブを含むホストコンピュータシステムのプロセッサのコアの数及びソリッドステートドライブを含むホストコンピュータシステムのプロセッサで実行されるソフトウェアソースの数の中の少なくとも１つに応答してウインドーに対するウインドーサイズを識別する段階を含む。
【０１５３】
第６２ステートメントとして、本発明の実施形態は、第５９ステートメントのストリーム識別子割り当て方法を含み、ウインドーで最も古い書込み命令を識別する段階と、ウインドーで最も古い書込み命令を書込み命令で置換する段階をさらに含む。
第６３ステートメントとして、本発明の実施形態は、第５２ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子を提出キューに追加する段階と、チャンク識別子が提出キューの先頭にある時、チャンク識別子を提出キューから除去する段階を含む。
第６４ステートメントとして、本発明の実施形態は、第５２ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子に対するアクセスカウントを増加させる段階と、チャンク識別子に対する現在アクセス時間及び以前アクセス時間に応答してチャンク識別子に対する最新ウェイトを計算する段階と、最新ウェイトに応答してチャンク識別子に対するアクセスカウントを更新する段階と、更新されたアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階を含む。
【０１５４】
第６５ステートメントとして、本発明の実施形態は、第６４ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子に対する現在アクセス時間及び以前アクセス時間に応答してチャンク識別子に対する最新ウェイトを計算する段階は、最新ウェイトを２の累乗（累乗の指数は、チャンク識別子に対する現在アクセス時間と以前アクセス時間との間の差を減衰期間で割ったもの）で計算する段階を含む。
第６６ステートメントとして、本発明の実施形態は、第６５ステートメントのストリーム識別子割り当て方法を含み、最新ウェイトに応答してチャンク識別子に対するアクセスカウントを更新する段階は、アクセスカウントを最新ウェイトで割る段階を含む。
第６７ステートメントとして、本発明の実施形態は、第６４ステートメントのストリーム識別子割り当て方法を含み、更新されたアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階は、チャンク識別子に対するストリーム識別子を生成されたアクセスカウントのログとして計算する段階を含む。
【０１５５】
第６８ステートメントとして、本発明の実施形態は、第５２ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子を複数のキューの中の１つであるストリーム識別子に対応するキューに配置する段階と、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階を含む。
第６９ステートメントとして、本発明の実施形態は、第６８ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子を複数のキューの中のストリーム識別子に対応するキューに配置する段階は、チャンク識別子に対するアクセスカウントを増加させる段階と、チャンク識別子に対するアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階を含む。
第７０ステートメントとして、本発明の実施形態は、第６９ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子に対するアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階は、チャンク識別子に対するストリーム識別子をチャンク識別子に対するアクセスカウントのログとして計算する段階を含む。
【０１５６】
第７１ステートメントとして、本発明の実施形態は、第６９ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子を複数のキューの中のストリーム識別子に対応するキューに配置する段階は、チャンク識別子に対するアクセスカウントが最も熱いチャンクに対する第２アクセスカウントを超過すれば、チャンク識別子を新しい最も熱いチャンクとして識別する段階をさらに含む。
第７２ステートメントとして、本発明の実施形態は、第７１ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子を新しい最も熱いチャンクとして識別する段階は、装置寿命をチャンク識別子に対する現在アクセス時間とチャンク識別子に対する以前アクセス時間との間の差に計算する段階を含む。
第７３ステートメントとして、本発明の実施形態は、第６８ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、アクセスカウント及び装置寿命に応答してチャンク識別子に対する有効期限を判断する段階を含み、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階は、チャンク識別子に対する有効期限が経過したら、ストリーム識別子に対応するキューからチャンク識別子を除去する段階と、ストリーム識別子を減少する段階と、チャンク識別子を減少されたストリーム識別子に対応する第２キューに配置する段階と、を含む。
【０１５７】
第７４ステートメントとして、本発明の実施形態は、第７３ステートメントのストリーム識別子割り当て方法を含み、アクセスカウント及び装置寿命に応答してチャンク識別子に対する有効期限を判断する段階は、装置寿命を最も熱いチャンクに対する最後アクセス時間と最も熱いチャンクに対する以前アクセス時間との間の差として計算する段階を含む。
第７５ステートメントとして、本発明の実施形態は、第７３ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階は、チャンク識別子に対する有効期限が経過したら、チャンク識別子が最も熱いチャンクであれば、ストリーム識別子に対応するキューの第２チャンク識別子を新しい最も熱いチャンクとして選択する段階をさらに含む。
【０１５８】
第７６ステートメントとして、本発明の実施形態は、非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）格納媒体を含む物品（ａｒｔｉｃｌｅ）を含む。
非一時的格納媒体は、それに格納された命令（ｉｎｓｔｒｕｃｔｉｏｎｓ）を含み、命令がマシンによって実行される時、ソフトウェアソースから書込み命令を受信する段階と、書込み命令で論理ブロックアドレス（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ：ＬＢＡ）を判断する段階と、論理ブロックアドレスを含むソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）でチャンクに対するチャンク識別子（ｉｄｅｎｔｉｆｉｅｒ：ＩＤ）を識別する段階と、チャンク識別子に関連したストリーム識別子にアクセスする段階と、ストリーム識別子を書込み命令に割り当てる段階と、割り当てられたストリーム識別子を用いてソリッドステートドライブで書込み命令を処理する段階と、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階と、を生じさせる。
【０１５９】
第７７ステートメントとして、本発明の実施形態は、第７６ステートメントの物品を含み、ストリーム識別子割り当て方法は、ホストコンピュータシステムのファイルシステム階層、ブロック階層、又は装置ドライバー階層の中の１つで具現される。
第７８ステートメントとして、本発明の実施形態は、第７６ステートメントの物品を含み、ストリーム識別子割り当て方法は、ソリッドステートドライブのフラッシュ変換階層で具現される。
第７９ステートメントとして、本発明の実施形態は、第７６ステートメントの物品を含み、論理ブロックアドレスを含むソリッドステートドライブでチャンクに対するチャンク識別子を識別する段階は、論理ブロックアドレスでアドレスマスクを用いてチャンク識別子を識別する段階を含む。
【０１６０】
第８０ステートメントとして、本発明の実施形態は、第７６ステートメントの物品を含み、論理ブロックアドレスを含むソリッドステートドライブでチャンクに対するチャンク識別子を識別する段階は、論理ブロックアドレスをチャンクのセクターの数で割る段階を含む。
第８１ステートメントとして、本発明の実施形態は、第７６ステートメントの物品を含み、ストリーム識別子を書込み命令に割り当てる段階は、ストリーム識別子を書込み命令にタグとして追加する段階を含む。
第８２ステートメントとして、本発明の実施形態は、第７６ステートメントの物品を含み、論理ブロックアドレスが第２書込み命令の第２論理ブロックアドレスに順次的であるか否かを判断する段階と、論理ブロックアドレスが第２書込み命令の第２論理ブロックアドレスに順次的であれば、第２書込み命令に割り当てられた第２ストリーム識別子を判断する段階と、書込み命令に第２ストリーム識別子を割り当てる段階と、を発生させる命令をさらに含む。
【０１６１】
第８３ステートメントとして、本発明の実施形態は、第８２ステートメントの物品を含み、第２書込み命令は、書込み命令に先行するウインドー内にある。
第８４ステートメントとして、本発明の実施形態は、第８３ステートメントの物品を含み、非一時的格納媒体は、マシンによって実行される時、ウインドーを識別する段階を発生させる命令をさらに含む。
第８５ステートメントとして、本発明の実施形態は、第８４ステートメントの物品を含み、ウインドーを識別する段階は、ソリッドステートドライブを含むホストコンピュータシステムのプロセッサのコアの数及びソリッドステートドライブを含むホストコンピュータシステムのプロセッサで実行されるソフトウェアソースの数の中の少なくとも１つに応答してウインドーに対するウインドーサイズを識別する段階を含む。
【０１６２】
第８６ステートメントとして、本発明の実施形態は、第８３ステートメントの物品を含み、非一時的格納媒体は、マシンによって実行される時、ウインドーで最も古い書込み命令を識別する段階と、ウインドーで最も古い書込み命令を書込み命令で置換する段階と、を発生させる命令をさらに含む。
第８７ステートメントとして、本発明の実施形態は、第７６ステートメントの物品を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子を提出キューに追加する段階と、チャンク識別子が提出キューの先頭にある時、チャンク識別子を提出キューから除去する段階を含む。
第８８ステートメントとして、本発明の実施形態は、第７６ステートメントの物品を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子に対するアクセスカウントを増加させる段階と、チャンク識別子に対する現在アクセス時間及び以前アクセス時間に応答してチャンク識別子に対する最新ウェイトを計算する段階と、最新ウェイトに応答してチャンク識別子に対するアクセスカウントを更新する段階と、更新されたアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階と、を含む。
【０１６３】
第８９ステートメントとして、本発明の実施形態は、第８８ステートメントの物品を含み、チャンク識別子に対する現在アクセス時間及び以前アクセス時間に応答してチャンク識別子に対する最新ウェイトを計算する段階は、最新ウェイトを２の累乗（累乗の指数は、チャンク識別子に対する現在アクセス時間と以前アクセス時間との間の差を減衰期間で割ったもの）で計算する段階を含む。
第９０ステートメントとして、本発明の実施形態は、第８９ステートメントの物品を含み、最新ウェイトに応答してチャンク識別子に対するアクセスカウントを更新する段階は、アクセスカウントを最新ウェイトで割る段階を含む。
第９１ステートメントとして、本発明の実施形態は、第８８ステートメントの物品を含み、更新されたアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階は、チャンク識別子に対するストリーム識別子を生成されたアクセスカウントのログとして計算する段階を含む。
【０１６４】
第９２ステートメントとして、本発明の実施形態は、第７６ステートメントの物品を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子を複数のキューの中のストリーム識別子に対応するキューに配置する段階と、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階を含む。
第９３ステートメントとして、本発明の実施形態は、第９２ステートメントの物品を含み、チャンク識別子を複数のキューの中のストリーム識別子に対応するキューに配置する段階は、チャンク識別子に対するアクセスカウントを増加させる段階と、チャンク識別子に対するアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階を含む。
第９４ステートメントとして、本発明の実施形態は、第９３ステートメントの物品を含み、チャンク識別子に対するアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階は、チャンク識別子に対するストリーム識別子をチャンク識別子に対するアクセスカウントのログとして計算する段階を含む。
【０１６５】
第９５ステートメントとして、本発明の実施形態は、第９３ステートメントの物品を含み、チャンク識別子を複数のキューの中のストリーム識別子に対応するキューに配置する段階は、チャンク識別子に対するアクセスカウントが最も熱いチャンクに対する第２アクセスカウントを超過すれば、チャンク識別子を新しい最も熱いチャンクとして識別する段階をさらに含む。
第９６ステートメントとして、本発明の実施形態は、第９５ステートメントの物品を含み、チャンク識別子を新しい最も熱いチャンクとして識別する段階は、装置寿命をチャンク識別子に対する現在アクセス時間とチャンク識別子に対する以前アクセス時間との間の差として計算する段階を含む。
第９７ステートメントとして、本発明の実施形態は、第９２ステートメントの物品を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、アクセスカウント及び装置寿命に応答してチャンク識別子に対する有効期限を判断する段階を含み、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階は、チャンク識別子に対する有効期限が経過したら、ストリーム識別子に対応するキューからチャンク識別子を除去する段階と、ストリーム識別子を減少する段階と、チャンク識別子を減少されたストリーム識別子に対応する第２キューに配置する段階と、を含む。
【０１６６】
第９８ステートメントとして、本発明の実施形態は、第９７ステートメントの物品を含み、アクセスカウント及び装置寿命に応答してチャンク識別子に対する有効期限を判断する段階は、装置寿命を最も熱いチャンクに対する最後アクセス時間と最も熱いチャンクに対する以前アクセス時間との間の差として計算する段階を含む。
第９９ステートメントとして、本発明の実施形態は、第９７ステートメントの物品を含み、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階は、チャンク識別子に対する有効期限が経過したら、チャンク識別子が最も熱いチャンクであれば、ストリーム識別子に対応するキューの第２チャンク識別子を新しい最も熱いチャンクとして選択する段階をさらに含む。
【０１６７】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【０１６８】
１０５    マシン
１１０    プロセッサ
１１５    メモリ
１２０    ソリッドステートドライブ
１２５    メモリ制御器
１３０    装置ドライバー
２０５    クロック
２１０    ネットワークコネクター
２１５    バス
２２０    ユーザーインターフェイス
２２５    入力／出力エンジン
３０５    ホストインターフェイスロジック
３１０    ソリッドステートドライブ制御器
３１５−１〜３１５−８    フラッシュチップ
３２０−１〜３２０−４    チャンネル
３２５    フラッシュ変換階層
３３０、１００５、１５１５    格納部
３３５    提出キュー
３４０    チャンクストリームマッパ
４０５    受信機
４１０    論理ブロックアドレスマッパ
４１５    ストリーム選択ロジック
４２０    ストリーム識別子アダー
４２５    送信機
４３０    キューアー
４３５    背景ロジック
５０５−１〜５０５−３    書込み命令
５１０−１〜５１０−３    論理ブロックアドレス
５１５−１〜５１５−４    チャンク識別子
５２０    算術論理部
５２５    アドレスマスク
５３０−１〜５３０−４、１０３５    ストリーム識別子
８１０−１〜８１０−４    現在アクセス時間
８１５−１〜８１５−４    以前アクセス時間
８２０−１〜８２０−４    アクセスカウント
９０５    順次ロジック
９１０    最新ロジック
９１５    アクセスカウント調節器
９２０、１７１０    ストリーム識別子調節器
１０１０、２００５    比較器
１０１５    ウインドー
１０２０−１〜１０２０−８    エントリ
１０２５、１５２０−１〜１５２０−３    キュー
１０３０    末尾論理ブロックアドレス
１０４０    ウインドーサイズ
１４１０    有効期限
１５０５    昇格ロジック
１５１０    第２キューアー
１５２５    降格ロジック
１７０５    インクリメンタ
１７１５    チャンク有効期限ロジック
１７２０    最も熱いチャンクロジック
１９０５    装置寿命
２０１０    デクリメンタ
【図１】
2018037088.tif 000003
【図２】
2018037088.tif 000004
【図３】
2018037088.tif 000005
【図４】
2018037088.tif 000006
【図５】
2018037088.tif 000007
【図６】
2018037088.tif 000008
【図７】
2018037088.tif 000009
【図８】
2018037088.tif 000010
【図９】
2018037088.tif 000011
【図１０】
2018037088.tif 000012
【図１１】
2018037088.tif 000013
【図１２】
2018037088.tif 000014
【図１３】
2018037088.tif 000015
【図１４】
2018037088.tif 000016
【図１５】
2018037088.tif 000017
【図１６】
2018037088.tif 000018
【図１７】
2018037088.tif 000019
【図１８】
2018037088.tif 000020
【図１９】
2018037088.tif 000021
【図２０】
2018037088.tif 000022
【図２１Ａ】
2018037088.tif 000023
【図２１Ｂ】
2018037088.tif 000024
【図２２】
2018037088.tif 000025
【図２３Ａ】
2018037088.tif 000026
【図２３Ｂ】
2018037088.tif 000027
【図２４】
2018037088.tif 000028
【図２５Ａ】
2018037088.tif 000029
【図２５Ｂ】
2018037088.tif 000030
【図２５Ｃ】
2018037088.tif 000031