(58)【調査した分野】(Int.Cl.,DB名)
前記チャンクストリームマッパは、順次、頻度、最新表(Sequential、Frequency、Recency table:以下、SFR表と記す)を含み、前記SFR表は、前記チャンク識別子及び前記チャンク識別子に対する前記ストリーム識別子を含むことを特徴とする請求項1に記載のソリッドステートドライブ。
前記背景ロジックは、前記論理ブロックアドレスが以前の書込み命令の第2論理ブロックアドレスに順次的であれば、以前のストリームを選択する順次(sequentiality)ロジックを含むことを特徴とする請求項2に記載のソリッドステートドライブ。
前記背景ロジックは、前記チャンク識別子に対する現在のアクセス時間、前記チャンク識別子に対する以前のアクセス時間、及び減衰期間に基づいて最新ウェイト(weight)を計算する最新ロジックと、
前記最新ウェイトに基づいて前記チャンク識別子に対するアクセスカウントを調節し、調節されたアクセスカウントを生成するアクセスカウント調節器と、
前記チャンク識別子に対する前記調節されたアクセスカウントに基づいて前記ストリーム識別子を調節するストリーム識別子調節器と、を含むことを特徴とする請求項2に記載のソリッドステートドライブ。
前記チャンクストリームマッパは、ノードエントリ(node entry)を含み、前記ノードエントリは、前記チャンク識別子及び前記チャンク識別子に対する前記ストリーム識別子を含むことを特徴とする請求項1に記載のソリッドステートドライブ。
前記チャンクストリームマッパは、順次、頻度、最新表(Sequential、Frequency、Recency table:以下、SFR表と記す)を含み、前記SFR表は、前記チャンク識別子及び前記チャンク識別子に対する前記ストリーム識別子を含むことを特徴とする請求項8に記載の非一時的な記憶媒体。
前記背景ロジックは、前記論理ブロックアドレスが以前の書込み命令の第2論理ブロックアドレスに順次的であれば、以前のストリームを選択する順次ロジックを含むことを特徴とする請求項9に記載の非一時的な記憶媒体。
前記背景ロジックは、前記チャンク識別子に対する現在のアクセス時間、前記チャンク識別子に対する以前のアクセス時間、及び減衰期間に基づいて最新ウェイトを計算する最新ロジックと、
前記最新ウェイトに基づいて前記チャンク識別子に対するアクセスカウントを調節し、調節されたアクセスカウントを生成するアクセスカウント調節器と、
前記チャンク識別子に対する前記調節されたアクセスカウントに基づいて前記ストリーム識別子を調節するストリーム識別子調節器と、を含むことを特徴とする請求項9に記載の非一時的な記憶媒体。
前記チャンクストリームマッパは、ノードエントリを含み、前記ノードエントリは、前記チャンク識別子及び前記チャンク識別子に対する前記ストリーム識別子を含むことを特徴とする請求項8に記載の非一時的な記憶媒体。
前記チャンク識別子と関連した前記ストリーム識別子の背景更新を遂行する段階は、前記チャンク識別子を複数のキューの中の1つである前記ストリーム識別子に対応するキューに配置する段階と、
前記チャンク識別子が前記キューの先頭に到達する時、前記チャンク識別子を降格するか否かを判断する段階と、を含むことを特徴とする請求項15に記載のストリーム識別子割り当て方法。
前記チャンク識別子と関連した前記ストリーム識別子の背景更新を遂行する段階は、アクセスカウント及び装置寿命に応答して前記チャンク識別子に対する有効期限を判断する段階を含み、
前記チャンク識別子が前記キューの先頭に到達する時、前記チャンク識別子を降格するか否かを判断する段階は、前記チャンク識別子に対する前記有効期限が経過した時、前記ストリーム識別子に対応する前記キューから前記チャンク識別子を除去する段階と、
前記ストリーム識別子を減少する段階と、
前記チャンク識別子を前記減少したストリーム識別子に対応する第2キューに配置する段階と、を含むことを特徴とする請求項19に記載のストリーム識別子割り当て方法。
【発明を実施するための形態】
【0012】
次に、本発明に係るソリッドステートドライブ及びドライバー並びにストリーム識別子割り当て方法を実施するための形態の具体例を図面を参照しながら説明する。
【0013】
しかし、本発明はこのような具体的な詳細無しでもこの分野に通常的な技術を有する者によって実施されることができることが理解されるべきである。再び言えば、広く公知された方法、手続、構成要素、回路、及びネットワークは実施形態を不必要に曖昧にしないように説明され得る。
第1、第2等の用語が多様な構成要素を説明するために使用されるが、構成要素はこの用語によって限定されないことが理解されるべきである。このような用語は単なる構成要素を互いに区分するために使用される。例えば、本発明の技術的思想から逸脱されなく、第1モジュールは第2モジュールと称され、同様に第1モジュールは第2モジュールと称されることができる。
【0014】
本発明の説明で使用する用語は、具体的な実施形態を説明するためのものであり、本発明の技術的思想を制限することを意図しない。
ここで使用する“及び/又は”の用語は1つ以上の関連したアイテムの中でいずれか又はすべての可用である組み合わせを参照することが理解されるべきである。
“含む”及び/又は“含む”の用語は言及された特性、整数、段階、動作、及び/又は構成要素の存在を説明し、1つ以上の特性、整数、段階、動作、構成要素、及び/又はこれらの組み合わせの存在又は追加を排除しない。
図面の構成要素及び特性は、スケールに合うように示さないこともあり得る。
【0015】
アプリケーション階層と独立的に自動ストリーム検出及び割り当てを遂行するための装置及び方法が提案される。
ストリーム割り当ては、実時間作業量(workload)検出に基づく、アプリケーションに独立的である。
ストリーム割り当ては、マルチストリームで利用可能であるソリッドステートドライブ(SSDs、Solid State Drives)に適用することができる。
ストリーム割り当てプロトコルの具現は、幾つかの長所を有する。
【0016】
第1に、アプリケーションをまったく修正する必要がない。
しかし、独自のストリーム優先順位を割り当てるアプリケーションがこのアプローチに組み込むことができる。
例えば、ストリーム割り当てプロトコルはアプリケーション割り当てストリーム優先順位に完全にしたがう。
又は、ストリーム割り当てプロトコルは任意の必要であるウェイト値を利用して、アプリケーション割り当てストリーム優先順位及び計算されたストリーム割り当てを組み合わせるウェイト和を遂行することができる。
【0017】
第2に、マルチストリームで利用可能である装置を使用しない任意のアプリケーションは、自動ストリーム検出及び割り当てを利用することができる。
第3に、アプリケーションは、ハードウェアからストリーム関連情報を認識する必要がない。
第4に、ストリーム割り当てプロトコルは、各マルチストリーム活性ソリッドステートドライブを別々に管理し、アプリケーションが多重ソリッドステートドライブを使用し、そしてマルチストリーム活性及び非マルチストリーム活性ソリッドステートドライブを混在させることができる。
【0018】
第5に、ストリーム割り当ては、ファイルシステム、ブロック階層、装置ドライバー、ソリッドステートドライブの内部(例えば、フラッシュ変換階層で)等でのようなシステムの任意の必要である階層で遂行され、書込み命令の開始アドレス(或いはストリーム割り当てプロトコルがファイルシステム階層で具現された場合にはファイルオフセット)が識別される。
【0019】
ソリッドステートドライブの全体アドレス空間は、複数の固定サイズチャンク(chunks)に分割することができる。
このチャンクサイズは、任意の必要であるサイズであり、例えば512バイトセクターの倍数である。
要請の開始論理ブロックアドレス(LBA)は、論理ブロックアドレスをチャンク当たりセクターの数で割ることによって、さらに一般的には、チャンクサイズで割ることによって、チャンク識別子(ID)に変換することができる。
【0020】
本発明の第1実施形態で、順次、頻度、及び最新(Sequential、Frequency、Recency:SFR)アプローチがストリーム割り当てを判断するのに使用される。
●順次(Sequential):新しい要請の開始論理ブロックアドレスが以前の要請の末尾論理ブロックアドレスに隣接すれば(即ち、書込み命令が順次書込みと関連されれば)、第2書込み命令には以前の書込み命令と同一のストリーム識別子が割り当てることができる。
このアプローチは、順次要請のグループが短い期間内に発行(issue)されれば、類似の寿命を有することと推定する。
書込み命令が互いに異なるソース(アプリケーション、ファイルシステム、仮想マシン等)によって実行(issue)され、混在する可能性があるので、ソリッドステートドライブの観点からは書込み命令は厳格な順次パターンに従わないことがある。
この可能性を処理するために、順次は、ウインドウ(サイズは可変できる)内の以前の命令の数と関連して判断することができる。
例えば、4つのウインドウサイズは、入力される要請が以前の4つの要請の中でいずれと順次的であるかを判断する。
【0021】
●頻度(Frequency):頻度は、開始論理ブロックアドレスがアクセスされる回数を示す。
頻度は、アクセスカウントで測定することができる。
チャンクがアクセス(書込み)される時毎に、該当チャンクに対するアクセスカウントは1つずつ増加する。
さらに高いアクセスカウントは、該当チャンクに対するさらに短い寿命を示す。
したがって、頻度は、データチャンクの温度を反映する。
【0022】
●最新(Recency):最新は、データチャンクの暫定区域性(temporal locality)を示す。
例えば、1つのチャンクは特定な期間の間にさらに頻繁にアクセスされ、高いアクセスカウントを累積するが、その後に使用されない可能性がある。
この状況で、該当チャンクを長期間ホットストリームに維持するこことは望ましくない。
チャンクは、最も最近の期間内に頻繁にアクセスされる場合のみに“熱い”(ホット:hot)としてみなされる。
本発明の一実施形態で、減衰期間(decay period)は、すべてのチャンクに対して予め定義されることができる。チャンクが最後のN減衰期間内にアクセスされなければ、アクセスカウントは2
Nで割られる。
【0023】
チャンクに対するストリーム識別子は、頻度及び最新(そして、適用可能すれば、順次)の全てによって判断される。
チャンクが頻繁にアクセスされる時に頻度はチャンクをさらに熱い(ホット)ストリームに昇格(promote)し、反面、チャンクが最後の減衰期間の間に使用されなければ、最新は該当チャンクをさらに冷たい(cold)ストリームに降格(demote)する。
【0024】
本発明の一実施形態で、アクセスカウントをストリーム識別子に変換するのにログスケール(log scale)が使用され、これは装置ストリームの数がアクセスカウントに対する値の範囲よりはるかに小さい事実を反映することができる。
したがって、例えば、
最新ウェイト=2
((現在時間−最後アクセス時間)/(減衰期間)
ストリーム識別子=log(アクセスカウント/最新ウェイト)
【0025】
チャンクに対するストリーム識別子の更新は、背景作業(background task)として実行されて入力/出力(I/O)性能に対する影響を最小化する。
本発明の第2実施形態で、マルチキュー(multi−queue)アプローチを使用する。
各装置ストリームに対して、キューを定義することができる。
つまり、多重装置ストリームが存在するので、マルチキューが存在する。
マルチキューアルゴリズムは、2つの互いに異なる機能的モジュールに分割される。
1つのモジュールは、各チャンクをさらに低いキューからさらに高いキューに昇格することを処理し、他のモジュールは低い使用するか、又は使用しないチャンクのさらに高いキューからさらに低いキューへの降格を処理する。
チャンクのアクセスカウントが高いほど、チャンクはさらに熱いとみなされ、したがって該当チャンクはさらに高いキューに配置される。
昇格及び降格の全ては背景作業として実行され、I/O性能への影響を最小化することができる。
【0026】
チャンクが最初にアクセスされる時、チャンクはストリーム「0」(最下位ストリーム)に割り当てされ、対応するキューに配置される。
そうでなければ、チャンクは現在のキューから除去され、チャンクのアクセスカウントが更新され、そしてチャンクは新しいキュー(潛在的に)に配置される。
任意のアプローチは、アクセスカウントに基づいて適切なキューを判断するために使用される。
例えば、アクセスカウントのログ(log)は、新しいストリーム識別子(対応するキューを識別する)として計算することができる。
昇格モジュール(promotion module)は、またチャンクが(アクセスカウントに基づいて)現在の最も熱いチャンクであるか否かを確認することができる。
チャンクが現在の最も熱いチャンクであれば、装置寿命(device lifetime)はこのチャンクのアクセスの間の間隔に基づいて設定される。
最後に、昇格ロジックは装置寿命及びチャンクの最後のアクセス時間に基づいてチャンクの有効期限(expiration time)を判断する。
【0027】
チャンクが未だ有効期限を経過しなかったら、チャンクは放置されている可能性がある。
そうでなければ、チャンクは現在のキューから除去され、新しい有効期限が割り当てされ、さらに低いキューに降格(即ち、さらに低いストリーム識別子が割り当てられる)される。
追加的に、降格されるチャンクが最も熱いチャンクであれば、該当チャンクは(有効期限によって判断されるので)しばらくアクセスされない。
したがって、該当チャンクはそれ以上熱くなく、該当キューからの他の1つのチャンクが(装置寿命に対する適切な派生結果を有する)最も熱いチャンクとして選択される。
新しく選択された最も熱いチャンクは該当キューで次のチャンクであり、又は該当キューに進入した最後のチャンクである。
【0028】
図1は、本発明の実施形態に係るソリッドステートドライブ(Solid State Drive:SSD)を有するマシンを示す。
図1で、マシン105が図示されている。
マシン105は、制限無しでデスクトップコンピュータ又はラップトップコンピュータ、サーバー(スタンドアロンサーバー又はラックサーバー)、又は本発明の実施形態から利益を得ることができる任意の他の装置を含む任意の必要とするマシンである。
【0029】
マシン105は、また特定のポータブルコンピュータ装置、タブレットコンピュータ、スマートフォン、及び他のコンピューティング装置を含むことができる。
マシン105は、任意の必要とするアプリケーションを実行することができる。
データベースアプリケーションはよい例である。
しかし、本発明の実施形態は任意の必要とするアプリケーションに拡張することができる。
【0030】
特定な形態に関わらず、マシン105は、プロセッサ110、メモリ115、及びソリッドステートドライブ(SSD)120を含む。
プロセッサ110は任意の多様なプロセッサ、例えばインテル(登録商標)ジーオン(登録商標)(Intel(登録商標) Xeon(登録商標))、アイテニアム(登録商標)(Itanium(登録商標))、又はアトム(登録商標)(Atom(登録商標))プロセッサ、AMDオプテロン(登録商標)(Opteron(登録商標))プロセッサ、ARMプロセッサ等である。
【0031】
図1は、単一のプロセッサを示すが、マシン105は任意の数のプロセッサを含むことができる。
メモリ115は、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM、Static Random Access Memory)、持続性ランダムアクセスメモリ(Persistent Random Access Memory)、強誘電体ランダムアクセスメモリ(FRAM(登録商標)、Ferroelectric Random Access Memory)、又は磁気抵抗ランダムアクセスメモリ(MRAM、Magnetoresistive Random Access Memory)等のような不揮発性ランダムアクセスメモリ(NVRAM、Non−Volatile Random Access Memory)のような任意の多様なメモリであり、一般的にDRAMである。
メモリ115は、また互いに異なるメモリタイプの任意の必要とする組み合わせであってもよい。
メモリ115は、またマシン105の一部であるメモリ制御器125によって制御される。
【0032】
ソリッドステートドライブ120は、任意の多様なソリッドステートドライブであり、ガーベッジコレクションを遂行する(フラッシュメモリを利用しない時にも)他のタイプの格納部を含むように拡張することができる。
ソリッドステートドライブ120は、メモリ115内に存在する装置ドライバー130によって制御される。
【0033】
図2は、
図1のマシン105の追加的な詳細を示すブロック図である。
図2を参照すると、一般的に、マシン105はメモリ制御器125及びクロック205を含み、そしてマシン105の構成要素の動作を調整するのに使用される1つ以上のプロセッサ110を含む。
プロセッサ110は、また例示的にランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM、read−only memory)、又は他の状態の格納媒体を含むメモリ115と結合することができる。
プロセッサ110は、またソリッドステートドライブ120、及び例えば、イーサーネットコネクター又は無線コネクターであるネットワークコネクター210と結合される。
プロセッサ110は、また他の構成要素の中でユーザーインターフェイス220に結合され、そして入力/出力エンジン225を利用して管理される入力/出力インターフェイスポートに結合されるバス215に連結される。
【0034】
図3は、
図1のソリッドステートドライブ120の詳細を示すブロック図である。
図3で、ソリッドステートドライブ120は、ホストインターフェイスロジック305、ソリッドステートドライブ制御器310、及び多様なチャンネル((320−1)〜(320−4))にグループ化される多様なフラッシュメモリチップ((315−1)〜(315−8))を含む。
ホストインターフェイスロジック305は、ソリッドステートドライブ120と
図1のマシン105との間の通信を管理する。
【0035】
ソリッドステートドライブ制御器310は、フラッシュメモリチップ((315−1)〜(315−8))でガーベッジコレクション動作と共に読出し及び書込み動作を管理する。
ソリッドステートドライブ制御器310は、この管理の中で一部を遂行するフラッシュ変換階層325を含む。
ストリームに書込み命令を割り当てるのに責任があるソリッドステートドライブ120を有する本発明の実施形態で、ソリッドステートドライブ制御器310はストリーム割り当てを支援する格納部330を含む。
【0036】
格納部330は、提出キュー(submission queue)及びチャンクストリームマッパ340を含む。
提出キュー335は、多様な書込み命令によって影響を受けるチャンクに対する情報を格納するのに使用される。
書込み命令が受信されることによって、そのような書込み命令と関連されたチャンク(又はこれよりはこのようなチャンク)の識別子(IDs)が提出キュー335に配置される。
【0037】
以後に、(最前面動作(foreground operations)に対する影響を減らすために)背景プロセスの一部として、チャンクは提出キュー335から除去され、そしてこのようなチャンクに対するストリーム割り当てが更新される。
チャンクストリームマッパ340は、どんなストリームが多様なチャンクに現在、割り当てされているのかに対する情報を格納する。
この情報は、提出キュー335でチャンク識別子の結果として(又は提出キュー335でチャンク識別子の不足の結果として−使用されないチャンクは非使用の結果としてさらに低い優先順位ストリームに割り当てられる)更新される。
チャンクの概念は、以下で
図5及び
図7を参照してさらに詳細に説明する。
【0038】
図3でソリッドステートドライブ120が4つのチャンネル((320−1)〜(320−4))にグループ化された8個のフラッシュメモリチップ((315−1)〜(315−8))を含むことと図示したが、本発明の実施形態は、任意の数のチャンネルでグループ化された任意の数のフラッシュメモリチップを支援することができる。
【0039】
図4は、
図3のフラッシュ変換階層325の詳細を示すブロック図である。
図4で、フラッシュ変換階層325は、受信機405、論理ブロックアドレス(LBA、Logical Block Address)マッパ410、ストリーム選択ロジック415、ストリーム識別子アダー420、送信機425、キューアー(queuer)430、及び背景ロジック435を含むものとして図示している。
【0040】
受信機405は、オペレーティングシステム、アプリケーション、ファイルシステム、遠隔マシン、及び他のこのようなソースのような多様なソフトウェアソースから書込み命令を受信する。
与えられた書込み命令に対して、論理ブロックアドレスマッパ410は、書込み命令で使用される論理ブロックアドレスを
図1のソリッドステートドライブ120の特定なチャンクにマッピングする。
ストリーム選択ロジック415は、以後に該当チャンクに適合なストリームを選択する。
【0041】
ストリーム選択ロジック415は、
図3のチャンクストリームマッパ340を用いてこのストリーム選択を達成し、
図3のチャンクストリームマッパ340を検索して選択されたチャンクに対応するエントリ(entry)を検索するロジックを含む。
あるいは選択的に、ストリーム選択ロジック415は、例えばチャンクに対するアクセスカウントからストリーム識別子を計算することによって(以下で
図13を参照して説明することと類似に)又はラウンドロビンアプローチでストリームを割り当てることによって(書込み命令をすべての装置ストリームにわたって均等に配分する)他のアプローチを使用する。
【0042】
ストリーム識別子アダー420は、データを書込み命令に書き込むロジックを用いて、選択されたストリーム識別子を書込み命令に追加する。
ストリーム識別子が書込み命令に付着されれば、送信機425は書込み命令を(付着されたストリーム識別子と共に)実行のために
図1のソリッドステートドライブ120に向かって伝送する。
【0043】
キューアー430は、書込み命令に対して識別されたチャンク識別子を有し、そしてチャンク識別子を
図3の提出キュー335に追加する。
キューアー430は、チャンク識別子を
図3の提出キュー335に追加するロジックを使用する。
例えば、キューアー430は、
図3の提出キュー335の末尾(tail)に対するポインター(pointer)を含み、チャンク識別子を
図3の提出キュー335の末尾に書き込むことができる。
以後に、
図3の提出キュー335の末尾に対するポインターは、
図3の提出キュー335の次のスロットを示すように更新される。
結局、チャンク識別子は
図3の提出キュー335から解除され、以後に背景ロジック435は解除されたチャンク識別子で動作する。
【0044】
背景ロジック(background logic)435は、以下で
図9及び
図15を参照してより詳細に説明する。
背景ロジック435は、任意の所望する方法で具現することができる。
例えば、背景ロジック435は、チャンクがアクセスされる時毎にストリーム識別子を増加させることのように単純に動作することができる(これはチャンク識別子及びストリーム識別子を格納するデータ構造で検索を遂行するロジック及びこの方法に位置したストリーム識別子を増加させるインクリメンタ(Incrementer)に過ぎないことを含む)。
【0045】
しかし、このような単純な具現は、結局すべてのチャンクが最も高い番号が付いたストリームを使用し、さらに低い番号が付いたストリームは使用されないことを意味する。
さらに複雑な具現は、チャンクがあまり使用されていないか否かを検討し、チャンクのストリーム優先順位を一致させるために下げることができる。
この結果を達成するために背景ロジック435を互いに異なる方法で具現する本発明の2つの実施形態を
図8〜
図13と
図14〜
図20を参照して後述する。
背景ロジック435は、背景(background)で動作(これにしたがう名称)するものと説明したが、背景でストリーム割り当て更新を遂行することは
図1のソリッドステートドライブ120に対する読出し及び書込みに対する影響を最小化するのに便宜である。
【0046】
ストリーム割り当てが
図1のソリッドステートドライブ120の性能に影響を与えず、更新することができれば、背景ロジック435が前景(foreground)で動作できない理由はない。
例えば、
図1のソリッドステートドライブ120がプロセッサを含むと(即ち、
図1のソリッドステートドライブ120が格納部内の演算(In−Storage Computing:ISC)を提案すれば)、
図1のソリッドステートドライブ120内のこのプロセッサは潜在的に
図1のソリッドステートドライブ120の読出し及び書込み性能に影響を与えず、リアルタイムにストリーム割り当てを更新するのに使用することができる。
このような状況で、背景ロジック435は、チャンク識別子を
図3の提出キュー335に配置するか、又は背景ロジック435が前景動作に影響を与えず、動作できる時を待つ必要がなく、直ちに動作してストリーム割り当て更新を遂行することができる。
【0047】
図4で、フラッシュ変換階層325は、ストリーム割り当て及びストリーム識別子更新を遂行するのに責任があるものとして示される。
しかし、本発明の他の実施形態で、
図4に示した構成要素の中で1つ以上のものがソフトウェアで具現され、例えば、
図1のメモリ制御器125、
図1の装置ドライバー130の一部に含まれるか、又は書込み要請を傍受(intercept)し、書込み命令を発行する前にストリームを組み合わせるライブラリルーチン(library routines)で具現されるか、又は
図1のソリッドステートドライブ120内の、又はマシン105内の他のところのいずれかに、別の特殊目的ハードウェアで具現することができる。
【0048】
図4〜
図20に付随する説明がフラッシュ変換階層325内の具現に焦点を当たっていても、上記説明の目的のために、
図4の構成要素によって遂行されるストリーム割り当てに対する参照は任意の特定な位置での具現を含むことを意図している。
図4で論理ブロックアドレスマッパ410及びストリーム選択ロジック415が別個の構成要素として示しているが、論理的に、このような構成要素の構造は、単一の構成要素に結合することができる。
さらに一般的には、本発明の実施形態は、
図4〜
図6、
図9〜
図13、及び
図15〜
図20で別個のものとして示し、説明する所定の構成要素を単一の構成要素に結合することができる。
【0049】
図5は、チャンク識別子(IDs)とマッピングされ、以後に
図1のソリッドステートドライブ用ストリーム識別子とマッピングされる多様な命令の論理ブロックアドレス(LBAs)を示す。
本発明の実施形態が任意の数の書込み命令を支援することができるが、
図5では、書込み命令((505−1)、(505−2)、(505−3))を示す。
また、
図5で書込み命令のみを示すが、本発明の実施形態は、また、読出し命令にも適用することができる。書込み命令((505−1)〜(505−3))は論理ブロックアドレス((510−1)〜(510−3))を含み、これは書込み命令((505−1)〜(505−3))の開始論理ブロックアドレスを明示する。
【0050】
論理ブロックアドレスマッパ410は、書込み命令((505−1)〜(505−3))から論理ブロックアドレス((510−1)〜(510−3))にアクセスする。
論理ブロックアドレス((510−1)〜(510−3))が書込み命令((505−1)〜(505−3))から読み出されれば、論理ブロックアドレスマッパ410は対応するチャンク識別子((515−1)〜(515−3))を判断する。
チャンクは、ソリッドステートドライブ120の論理的部分分割(logical subdivisions)として考えることができる(しかし、ブロック又はページ等のソリッドステートドライブ120の他の論理的部分分割としてチャンクを整列する必要はない)。
【0051】
チャンクの数は任意の所望する方法で、例えば所望するサイズのチャンクを選択し、そしてソリッドステートドライブ120のサイズをチャンクサイズで割ることによって、又は
図4の背景ロジック435によって遂行されるあまりにも多くのプロセシングを必要としない適切な有用性を提供するものであると立証された数を選択することによって(そして、ソリッドステートドライブ120を複数のチャンクで割ることによって)決定することができる。
サイズの均一性が論理ブロックアドレスマッパ410の動作を単純化することができるが、チャンクは同一のサイズを有する必要はない。
したがって、例えば、1つのチャンクはソリッドステートドライブ120で128KBのデータを含むが、他のチャンクはソリッドステートドライブ120で512KBのデータを含むことができる。
論理ブロックアドレスからチャンクを判断することは、シフト(shift)動作を用いて遂行されるので、2の累乗であるチャンクサイズが特別に有利である。
しかし、本発明の実施形態は任意の必要であるサイズのチャンクを支援することができる。
【0052】
論理ブロックアドレスマッパ410は、数多い方法でチャンク識別子((515−1)〜(515−3))を判断する。
例えば、論理ブロックアドレスマッパ410は、算術論理部(ALU、arithmetic logic unit)520を含んで論理ブロックアドレス((510−1)〜(510−3))からチャンク識別子((515−1)〜(515−3))を数学的に演算することができる。
又は、論理ブロックアドレスマッパ410は、論理ブロックアドレス((510−1)〜(510−3))から多様なビットをマスクしてチャンク識別子((515−1)〜(515−3))を残すアドレスマスク525を含むことができる。
チャンク識別子((515−1)〜(515−3))が判断されれば、ストリーム選択ロジック415は該当チャンクで使用されるストリームを決定する。
ストリーム選択ロジック415は、チャンク識別子((515−1)〜(515−3))を用いてチャンクストリームマッパ340から対応するストリーム識別子((530−1)〜(530−3))を判断する。
【0053】
図6は、
図5のストリーム識別子((530−1)、(530−2))を含むように修正され、そして
図1のソリッドステートドライブ120に伝送される
図5の命令((505−1)〜(505−2))を示す(空間の理由で、
図6は
図5から3つの書込み命令の中で2つ及び関連されたデータのみを示す)。
しかし、
図6は
図5と同一方法で一般化する。
図6で、ストリーム識別子アダー420は、ストリーム識別子((530−1)、(530−2))を書込み命令((505−1)、(505−2))に書き込む。
このような方法で、
図1のソリッドステートドライブ120は、書込み命令((505−1)、(505−2))を処理する時、いずれの装置ストリームを使用するかが分かる。
送信機425は、修正された書込み命令((505−1)、(505−2))を
図1のソリッドステートドライブ120に伝送する。
【0054】
図5及び
図6に示さないのは、
図4のキューアー430の動作である。
図5のチャンク識別子((515−1)〜(515−3))が判断されれば、
図4のキューアー430は
図4の背景ロジック435で後の処理のために
図5のチャンク識別子((515−1)〜(515−3))を
図3の提出キュー335にキューイングする。
図4のキューアー430は、
図5のチャンク識別子((515−1)〜(515−3))が判断された後、いつでも
図5のチャンク識別子((515−1)〜(515−3))をキューイングすることができる。
例えば、
図4のキューアー430は、
図5のチャンク識別子((515−1)〜(515−3))が
図4の論理ブロックアドレスマッパ410によって判断された後に、修正された書込み命令((505−1)〜(505−3))が送信機425によって
図1のソリッドステートドライブ120に伝送された後に、又はこれら間のいつでも
図5のチャンク識別子((515−1)〜(515−3))をキューイングすることができる。
【0055】
図7は、
図5の論理ブロックアドレス(510−1)を
図5のチャンク識別子(515−1)とマッピングする
図5の算術論理部(ALU)520を示すブロック図である。
図7で、算術論理部520は、論理ブロックアドレス(510−1)及びチャンクサイズ705を受信する。
論理ブロックアドレス(510−1)をチャンクサイズ705で割ることによって(そして、計算の任意の小数部を破棄することによって)、チャンク識別子(515−1)が計算される。
【0056】
図4を参照して上述したように、
図4の背景ロジック435は多様な方法で具現することができる。
図8〜
図13は、本発明の一実施形態を説明し、そして
図14〜
図20は、本発明の他の実施形態を説明する。
本発明のこのような実施形態は、相互排他的なものとは意図されず、本発明の2つの実施形態の組み合わせも可能である。
また、ここに明示的に記載しているか否かに関わらず、本発明の他の実施形態もまた可能である。
【0057】
図4の背景ロジック435のための本発明の第1実施形態で、
図3のチャンクストリームマッパ340は、順次、頻度、最新(Sequential、Frequency、Recency:SFR)表を含むことができる。
“順次、頻度、最新”は、チャンクに割り当てられるストリーム識別子を決定し、更新する方法を示す。
“順次”は、1つの書込み命令が他の1つの書込み命令に順次的な状況を示す。
即ち、第2書込み命令が以前の書込み命令の後に次の論理ブロックアドレスにデータを書き込む。
2つの書込み命令が順次的であれば、2つの命令の全てが同一ストリーム識別子に割り当てられなければならないことになる。
【0058】
以下で
図10を参照して説明するように、書込み命令は、多くの異なるソフトウェアソースから発行されるので、この文脈の“順次”は完全に文字通りに解釈されるべきではない。
単一ソフトウェアソース(例えば、データベースアプリケーション)からの2つの“順次”書込み命令が他の一部ソフトウェアソース(例えば、ファイルシステム)からの書込み命令によって分離された場合、その間にある書込み命令はデータベースアプリケーションからの2つの書込み命令の順次性を排除してはならない。
実際に、その間にある書込み命令が順次性を妨害することを禁止することを回避する方法がここに提供される。
【0059】
“頻度”は、チャンクがどのぐらい頻繁にアクセスされるかを示す。
チャンクがさらに頻繁にアクセスされるほど、チャンクはさらに熱いこととみなす(温度は、優先順位と類似なものとして作用する:チャンクの温度がさらに高いほど、優先順位がさらに高くなければならない)。
したがって、チャンクがさらに頻繁にアクセスされるほど、さらに高いストリーム優先順位が割り当てられるべきである。
【0060】
“最新”とは、チャンクが最後にアクセスされた後、どのぐらい経過したかを示す。
“最新”は、“頻度”に対するバランスとして作用する。
チャンクが最後にアクセスされた後、期間がさらに長く経過するほど、チャンクはさらに冷たいものとしてみなされる。
したがって、チャンクはさらに低い優先順位が割り当てされなければならない。
したがって、“頻度”がチャンクの関連したストリームを増加させるが、“最新”はチャンクの関連したストリームを減少させる。
“順次”、“頻度”、及び”最新”は、以下で
図10〜
図13を参照してさらに詳細に説明する。
【0061】
図8に示す本発明の第1実施形態を見ると、
図8は本発明の実施形態に係る
図5のチャンク識別子((515−1)〜(515−3))を
図5のストリーム識別子((530−1)〜(530−3))にマッピングするのに使用する例示的なSFR表を示す。
図8で、SFR表805は多様なデータを格納する。
例えば、SFR表805は、多様なチャンク識別子((515−1)〜(515−4))及び各チャンク識別子((515−1)〜(515−4))に対するSFR対応ストリーム識別子((530−1)〜(530−4))を格納する。
【0062】
ストリーム識別子((530−1)〜(530−4))に加えて、SFR表805は追加的なデータを格納することができる。
例えば、各チャンク識別子((515−1)〜(515−4))に対して、SFR表805はチャンクに対する現在(即ち、最も最新)アクセス時間((810−1)〜(810−4))を格納することができる。
現在アクセス時間((810−1)〜(810−4))は、任意のタイプ(例えば、読出し又は書込み)のチャンクの最後のアクセス、又は単に最も最新の書込み命令の時間である。
SFR表805は、またチャンクが以前にアクセスされた時間を示す以前アクセス時間((815−1)〜(815−4))を格納することができる。
最後に、SFR表805は、チャンクのアクセスの回数を示すアクセスカウント((820−1)〜(820−4))を格納することができる。
上述したように、アクセスカウント((820−1)〜(820−4))は、チャンクのアクセス(読出し及び書込みの両方)の全体回数、又は単にチャンクの書込みアクセスの全体回数を示し得る。
【0063】
図8は、本発明の1つの可能な実施形態を示すが、本発明の他の実施形態は、
図8に示したものより多いか、又は少ないデータを格納することができる。
又は、テーブル以外のデータ構造は、情報を格納するのに使用することができる。
本発明の実施形態はこのようなすべての変化を含むものとして意図される。
【0064】
図9は、本発明の第1実施形態に係る
図3のフラッシュ変換階層325及び
図4の背景ロジック435の追加的な詳細を示すブロック図である。
図9で、フラッシュ変換階層325は、また、順次ロジック905を含む。
順次ロジック905は、以前の書込み命令と同一なストリーム割り当てを使用するために
図5の書込み命令(505−1)が一部の以前の書込み命令と順次的であるか否かを判断する。
順次ロジック905は、以下で
図10を参照してさらに詳細に説明する。
【0065】
背景ロジック435は、最新ロジック910、アクセスカウント調節器915、及びストリーム識別子調節器920を含む。
最新ロジック910は、チャンクに対する最新ウェイト(recency weight)を計算する。
アクセスカウント調節器915は、最新ウェイトに基づいてストリームに対するアクセスカウントを調節する。
そして、ストリーム識別子調節器920は、調節されたアクセスカウントに基づいてチャンクに対して使用する新しいストリーム識別子を計算する。
【0066】
最新ロジック910、アクセスカウント調節器915、及びストリーム識別子調節器920は、算術計算を遂行するので、全て1つの(又はそれ以上)別の又は共有された算術論理部を利用して具現することができる。
そうでなければ、最新ロジック910、アクセスカウント調節器915、及びストリーム識別子調節器920は、単に、ここに記述された特定関数のみを計算し、それ以外のことを計算しないように設計された特殊目的ハードウェアを利用して具現することができる。
【0067】
図10は、
図9の順次ロジック905の詳細を示す図である。
図10で、順次ロジック905は、格納部1005及び比較器1010を含むものとして示す。
現実的な目標のために、格納部1005は、順次ロジック905内の別の格納部であることよりは、
図3の格納部330の一部である。
格納部1005は、最新の書込み命令のセットに対する情報であるウインドー1015を格納し、書込み命令語の各々は、自分に割り当てられたストリーム識別子を有する。
【0068】
例えば、
図10は、エントリ((1020−1)〜(1020−8))を示し、この中でエントリ((1020−1)〜(1020−4))はウインドー1015内に存在する。
エントリ((1020−1)〜(1020−8))は、キュー1025で管理される。
キュー1025は、任意の所望の形態、例えば2つの例示的な具現を挙げれば、キュー1025の先頭に対するポインターを有するアレイ又は連結リストの形態を取ることができる。
エントリ((1020−1)〜(1020−8))の各々は、以前の書込み命令に対する末尾論理ブロックアドレス1030及びストリーム識別子1035を含む。
ウインドー1015は、どのぐらい多くの最新エントリがウインドー1015に含まれるかを明示するウインドーサイズ1040を含む。
【0069】
図10で、ウインドーサイズ1040は、4つのエントリを含むものとして示したが、本発明の実施形態は、ウインドー1015で多くのエントリを支援することができる。
ウインドーサイズ1040は、例えば
図1のプロセッサのコアの数、又は書込み命令を発行できる
図1のプロセッサ110で実行されるソフトウェアソース(オペレーティングシステム、ファイルシステム、アプリケーション等)の数を含む様々な因子に依存する。
本発明の実施形態は、他の因子に基づいて判断されるウインドーサイズも支援することができる。
また、ウインドーサイズ1040は、静的に設定されるか、又は
図1のマシン105内の条件が変化することによって動的に変更することができる。
【0070】
図5の新しい書込み命令(505−1)が受信されれば、比較器1010は
図5の論理ブロックアドレス(510−1)をウインドー1015のエントリ((1020−1)〜(1020−4))の末尾論理ブロックアドレス1030と比較する。
図5の論理ブロックアドレス(510−1)が以前の書込み命令の末尾論理ブロックアドレス1030後の次のアドレスであれば、
図5の論理ブロックアドレス(510−1)は以前の書込み命令の末尾論理ブロックアドレス1030に順次的であるものとみなされる。
【0071】
そうでなければ、以前の書込み命令の末尾論理ブロックアドレス1030と
図5の論理ブロックアドレス(510−1)との間で使用することができる有効な論理ブロックアドレスが無ければ、
図5の論理ブロックアドレス(510−1)は以前の書込み命令の末尾論理ブロックアドレス1030に順次的であるものとみなされる(データが書き込まれた可能性がある介在するアドレスがない限り、末尾論理アドレス1030は文字通りに以前の書込み命令によって書き込まれる最後のアドレスである必要はないことに注意しなければならない)。
【0072】
図5の論理ブロックアドレス(510−1)がウインドー1015の任意のエントリ((1020−1)〜(1020−4))の末尾論理ブロックアドレス1030に順次的であれば、エントリ((1020−1)〜(1020−4))のストリーム識別子1035が
図5の書込み命令(505−1)に対して使用される。
順次論理ブロックアドレスを識別することは、順次が発生した時を判断する1つの方法であるが、本発明の実施形態は順次を検出する他の具現を支援することができる。
例えば、順次ロジック905は、パターン整合器(pattern matcher)を用いて繰り返しパターンで特定のソフトウェアソースに対して論理ブロックアドレスがアクセスされた時を検出することができる。
【0073】
図5の論理ブロックアドレス(510−1)がウインドー1015内の任意のエントリ((1020−1)〜(1020−4))の末尾論理ブロックアドレス1030に順次的であるか否かに関わらず、ウインドー1015内の最も古いエントリは“排出され(ejected)”、
図5の書込み命令(505−1)がウインドー1015に追加される。
例えば、エントリ(1020−1)がウインドー1015で最も最新の書込み命令に対するエントリであり、エントリ(1020−4)がウインドー1015で最も古いエントリであると仮定する。
エントリ(1020−4)は、ウインドー1015から除去され、
図5の論理ブロックアドレス(510−1)及びストリーム識別子(530−1)がウインドー1015に新しいエントリとして追加される。
【0074】
ウインドー1015は、任意の所望する方法で具現することができる。
例えば、ウインドー1015は、最も古いエントリに対するポインターを有する循環目録(circular list)(アレイのような)を含むことができる。
新しいエントリがウインドー1015に追加される時、ポインターによって指定される最も古いエントリは新しいエントリによって上書され、ポインターはウインドー1015で次に最も古いエントリを示すように調節することができる。
本発明の実施形態は、ウインドー1015に対する情報を格納する任意の所望する構造を支援することができる。
循環目録はこのような可能なデータ構造の1つに過ぎない。
【0075】
図11は、
図9の最新ロジックを用いて最新ウェイトを計算するところを説明するための図である。
図11を参照すると、最新ロジック910は、最新ウェイト1105を計算するものとして示している。
図11に示す公式は、チャンクに対する現在アクセス時間(810−1)(即ち、最も最新の)と以前アクセス時間(815−1)との間の差を減衰期間1110で割られたものを「2」の累乗の指数として最新ウェイト1105を計算する。
【0076】
減衰期間1110は、チャンクがどのぐらい速やかにさらに低い優先順位ストリームに降格するかを制御する調節可能な変数を示す。
減衰期間1110は、
図1のマシン105が開始する時に初期値で割り当てられ、(システム管理者によって受動的に、又はシステム業務負荷にしたがって自動的に)所望するように調節することができる。
チャンクの昇格が速すぎるか(これは大部分のチャンクが同一な高い優先順位ストリームを使用することを生じさせる)か、又は昇格があまりにも遅い(これは大部分のチャンクが同一な低い優先順位ストリームを使用することを生じさせる)ことを防止することが望ましい。
言い換えれば、チャンクが非常に一定な方法でストリームに割り当てられるようにすることが望ましい。
どんなストリームもあまりにも多すぎるか、或いは軽く利用するべきではない。
減衰期間1110は、このような目標を達成するストリーム昇格及び降格を管理する方法を示す。
【0077】
最新ウェイト1105は、各チャンクに対して変化し得ることに留意しなければならない。
一方、減衰期間1110は、最新ウェイト1105に対するすべての計算にわたって均一でなければならない(しかし、これは減衰期間1110が時間によって変化しないことを意味しない)。
【0078】
図12は、
図9のアクセスカウント調節器915で
図11の最新ウェイト1105を用いてアクセスカウントを調節するところを説明するための図である。
図12で、アクセスカウント調節器915は、調節されたアクセスカウント1205を計算するものとして示す。
調節されたアクセスカウント1205は、アクセスカウント(820−1)より1つ多いものが最新ウェイト1105によって割られたものとして計算される。
調節されたアクセスカウント1205は、アクセスカウント(820−1)の位置、例えば、
図8のSFR表805に再び格納される。
【0079】
図13は、
図9のストリーム識別子調節器920を用いて
図12の調節されたアクセスカウント1205からストリーム識別子を計算するところを説明するための図である。
図13で、ストリーム識別子調節器920は、ストリーム識別子(530−1)を計算するものとして示す。
ストリーム識別子(530−1)は、調節されたアクセスカウント1205のログ(log)として計算され、ストリーム識別子(530−1)の位置、例えば
図8のSFR表805に再び格納される。
【0080】
コンピュータに対して使用する時に数学的用語“ログ”は通常的にlog
2又はlog
10を意味するが、任意の望む基数(base)を使用するログ関数が選択することができる。
ログ関数に対して選択された基数(base)は、本発明の実施形態でチャンクがあまりにも速く又は遅すぎて昇格される(したがって、1つ以上の装置ストリームの過渡な使用及び他の装置ストリームの過小に使用する)ことを回避するその他のメカニズム(mechanism)を提供する。
【0081】
ストリーム識別子調節器920は、調節されたアクセスカウント1205の大きさに応じてより多くのログ関数を使用することができる。
例えば、調節されたアクセスカウント1205が一部の閾値より低ければ、ストリーム識別子調節器920はlog
2を利用してストリーム識別子(530−1)を計算する。
調節されたアクセスカウント1205が該当閾値より大きければ、ストリーム識別子調節器920はlog
10を利用してストリーム識別子(530−1)を計算する。
【0082】
図11〜
図13に対する2つのコメントを言及する必要がある。
第1に、
図11〜
図13は、
図11の最新ウェイト1105、
図12の調節されたアクセスカウント1205、及びストリーム識別子(530−1)を演算するための具体的な計算を示す。
しかし、本発明の実施形態は任意の所望する方法でこれらを(又は他の値)計算することを支援することができる。
究極の目標は、
図8のストリーム識別子(530−1)を
図8のチャンク(515−1)に対して適切に調節できることであるので、このような結果を達成する任意の所望するアプローチも使用することができる。
図11〜
図13は、単に、このような1つのアプローチを示す。
【0083】
第2に、
図11〜
図13で、アクセス時間(
図11の現在アクセス時間(810−1)及び以前アクセス時間(815−1)のような)は、特定なクロックよりは発行された要請の数に基づいて判断することができる。
例えば、
図5の書込み命令((505−1)〜(505−3))は連続して発行されるものとして仮定される。
図5の書込み命令(505−1)は第4番目の書込み命令であり、
図5の書込み命令(505−2)は第五番目の書込み命令であり、そして
図5の書込み命令(505−3)は第6番目の書込み命令である。
この例で、多様な書込み命令に対する“アクセス時間”は各々“4”、“5”、及び“6“である。
【0084】
アクセス時間を判断するこの選択は、すべてのソフトウェアソースが時間の所定の時間間隔(1秒、1分、又は1時間のような)の間に対して書込み命令の伝送を中止すれば、チャンクが相当な時間の間、技術的にアクセスされなくともチャンクの“温度”は変化しない結果を有する。
したがって、チャンクが相当な時間の間、アクセスされなくとも、それに相当な時間の間に他のチャンクがアクセスされなければ、該当チャンクの“温度”は変化しない。
現実的な観点から、すべてのソフトウェアソースが同一時間に書込み命令を伝送することを中止することはほとんどない。
しかし、それが発生すれば、本発明の実施形態はこの状況を処理することが可能である。
また、本発明の実施形態は、命令の数の代わりにクロック時間を使用することを支援することができ、これはソフトウェアソースが書込み命令を発行しなくともチャンクを冷却することをもたらす。
【0085】
図8〜
図13と対照的に、
図14〜
図20は、本発明の他の実施形態を示す。
図8〜
図13に示した本発明の実施形態のように、
図14〜
図20は、
図5のチャンク識別子((515−1)〜(515−3))を
図5のストリーム識別子((530−1)〜(530−3))にマッピングするデータ構造及び
図4の背景ロジック435の具現を含む。
【0086】
図14は、本発明の第2実施形態に係る
図5のチャンク識別子((515−1)〜(515−3))を
図5のストリーム識別子((530−1)〜(530−3))にマッピングするのに使用するノードを示す図である。
図14で、ノード((1405−1)〜(1405−3))を示し、ノード(1405−1)を詳細に示す。
ノード((1405−1)〜(1405−3))はアレイ、連結リスト、及び他のデータ構造のような任意の所望する方法で格納される。
図1のソリッドステートドライブ120で各チャンクに対して1つのノードが存在する。
【0087】
ノード(1405−1)は、チャンク識別子(515−1)、ストリーム識別子(530−1)、アクセスカウント(820−1)、及び有効期限1410を含む多様なデータを含む。
チャンク識別子(515−1)、ストリーム識別子(530−1)、及びアクセスカウント(820−1)は、本発明の第1実施形態のそのような要素と類似するデータを格納する。
有効期限1410は、書込み命令によるアクセスの不足のためにチャンクが「期限切れ」とみなされる「時間」を示す。
本発明の第1実施形態のように、“時間”はクロックの測定よりはすべての書込み命令の順序で特定な書込み命令の数によって測定することができる。
【0088】
図15は、本発明の第2実施形態に係る
図4の背景ロジック435の詳細を示すブロック図である。
図15で、背景ロジック435は、昇格ロジック1505、第2キューアー1510、キュー((1520−1)〜(1520−3))のための格納部1515、及び降格ロジック1525を含む。
【0089】
昇格ロジック1505は、適切な時にチャンクをさらに高い優先順位ストリームに昇格する。
(動作が類似であっても、
図4のキューアー430から区別するために命名された)第2キューアー1510は、
図5のチャンク識別子((515−1)〜(515−3))をキュー((1520−1)〜(1520−3))に配置する。
第2キューアー1510は、
図4のキューアー430と類似する構造を有する。
図10の格納部1005のように、格納部1515は、背景ロジック435内の別の格納部ではなく、実質的に
図3の格納部330の一部である。
本発明の実施形態は、任意の数のキューを支援することができる。
3つのキュー((1520−1)〜(1520−3))は例示に過ぎない。
【0090】
また、
図5の各ストリーム識別子((530−1)〜(530−3))に対して1つのキューが存在することができる。
即ち、キュー((1520−1)〜(1520−3))の数と
図3のチャンク識別子((515−1)〜(515−3))の数が同一であることは偶然である。
図5のチャンク識別子((515−1)〜(515−3))が、キュー((1520−1)〜(1520−3))の先頭に到達すれば、降格ロジック1525は
図5のチャンク識別子((515−1)〜(515−3))を降格するか否かを判断する。
【0091】
図16は、
図15のキュー((1520−1)〜(1520−3))でチャンク識別子の昇格及び降格を説明するための図である。
図16で、
図3のチャンク識別子((515−1)〜(515−3))は、文字(a〜d)を用いて表現される。
キュー((1520−1)〜(1520−3))内のラベルされないエントリは、
図16に示す例では使用されなく、この例で別に使用されなかった任意のチャンク識別子を格納することができる。
【0092】
まず最初に、
図16で、提出キュー335の先頭1605にチャンク識別子(a)を有する提出キュー335が示される。
チャンク識別子(a)は、以前にアクセスされないチャンクを識別することができる。
したがって、チャンク識別子(a)が提出キュー335から除去された後、点線矢印1610で示すように、チャンク識別子(a)は“最も冷たい(coldest)”ストリームに対するキュー(1520−1)の末尾に追加される。
次に、
図16で、提出キュー335は(チャンク識別子(a)が処理された後に提出キュー335の先頭1605に移動される)チャンク識別子(b)を含む。
チャンク識別子(b)に対して
図14のアクセスカウント(820−1)を増加した結果として、チャンク識別子(b)は“さらに熱い(hotter”ストリームに昇格される。
点線矢印1615で示すように、チャンク識別子(b)が提出キュー335から除去された後に、チャンク識別子(b)は、キュー(1520−1)のエントリ1620からキュー(1520−2)の末尾に移動される。
【0093】
次に、
図5の降格ロジック1525は、キュー((1520−1)〜(1520−3))の先頭((1625−1)〜(1625−3))を交互に点検する。
例えば、
図15の降格ロジック1525は、キュー(1520−3)の先頭(1625−3)のチャンク識別子(c)を点検する。
チャンク識別子(c)が降格される予定であれば、チャンク識別子(c)はキュー(1520−3)の先頭からキュー(1520−2)(次の“最も熱い(hottest)”ストリームに対するキュー)の末尾に移動される。
チャンク識別子(c)が降格された結果として、
図17を参照して以下で記述するように、キュー(1520−3)のチャンク識別子(d)が最も熱いチャンクになる。
【0094】
図17は、
図15の昇格ロジック1505の詳細を示すブロック図である。
図17で、昇格ロジック1505は、インクリメンタ1705、ストリーム識別子調節器1710、チャンク有効期限ロジック1715、及び最も熱いチャンクロジック1720を含む。
インクリメンタ1705は、
図14のアクセスカウント(820−1)を増加して調節されたアクセスカウントを生成する。
ストリーム識別子調節器1710は、
図18に示すように調節されたアクセスカウントから
図5のストリーム識別子(530−1)を計算する。
ストリーム識別子調節器1710は、
図9のストリーム識別子調節器920と構造的に類似である。
【0095】
図17に戻れれば、チャンク有効期限ロジック1715は、チャンクに対する有効期限を判断する。
チャンクに対する有効期限は、チャンク識別子に対する現在アクセス時間に加えて、装置寿命として判断される。
装置寿命は、後述する、どのチャンクが最も熱いチャンクであるかに依存する時間の間隔である。
図19はこれを数式として示す。
有効期限1410は、アクセスカウント(820−1)(上述されたように、
図5のチャンク識別子(515−1)に対する現在のアクセス時間)及び装置寿命1905の合計である。
【0096】
最後に、再び
図17を参照すれば、最も熱いチャンクロジック1720は、
図5のチャンク識別子(515−1)が、今最も熱いチャンクを示すか否かを判断する。
最も熱いチャンクは、最も高いストリーム優先順位を有するチャンク識別子として定義される。
最も高いストリーム優先順位を有する複数のチャンク識別子が存在すれば、任意の選択アルゴリズムが使用されて最も熱いストリーム優先順位を有する特定なチャンク識別子が最も熱いチャンクとして選択される。
例えば、最も熱いストリーム優先順位を示すキューの先頭のチャンク識別子が最も熱いチャンクとして選択される。
又は、最も最新のアクセス(即ち、最も高い現在アクセス時間)を有するチャンク識別子が最も熱いチャンクとして選択される。
又は、最も熱いストリーム優先順位を示すキューの末尾のチャンク識別子が最も熱いチャンクとして選択される。
【0097】
図5のチャンク識別子(515−1)が最も熱いチャンクであれば、
図19の装置寿命1905は
図5のチャンク識別子(515−1)の現在アクセス時間と
図5のチャンク識別子(515−1)の以前アクセス時間との間の差として計算される。
図19の装置寿命1905は、特定なチャンクの2つの書込み命令の間で予測される最大間隔を示し、最も熱いチャンクに対する最も最新の2つの書込み命令の間の間隔に基づいて定義される。
図19の装置寿命1905は、
図14のチャンク識別子(515−1)が降格される時に影響が及ぶ
図14の有効期限1410を判断するのに使用される。
【0098】
図20は、
図15の降格ロジック1525の詳細を示すブロック図である。
図20で、降格ロジック1525は、比較器2005及びデクリメンタ2010を含むものとして示す。
比較器2005は、現在時間(これもクロック時間よりは最も最新の書込み要請の数である)を
図14の有効期限1410と比較する。
現在時間が
図14の有効期限1410を経過した場合、該当チャンクは書込み命令無しで
図19の装置寿命1905として測定される時間間隔の間、放置されたので、以前よりさらに“冷たい”ものと考えられる。
【0099】
言い換えれば、
図19の装置寿命1905が任意の与えられたチャンクに対する書込みの間の予測される書込み命令の数を示せば、
図14のチャンク識別子(515−1)の最も最新のアクセス時間に
図19の装置寿命1905を加えたものとして計算される
図14の有効期限1410は、
図14のチャンク識別子(515−1)が書き込まれ、そして冷却されたものとみなされない最後の時間を示す。
図14の有効期限1410が経過した場合、
図14のチャンク識別子(515−1)は、若干冷却され、降格される。
この場合に、デクリメンタ2010は、
図5のチャンク識別子(515−1)の減少された“温度”に対応するように
図5のストリーム識別子(530−1)を減らして
図5のチャンク識別子(515−1)の優先順位を減少させる。
【0100】
図14の有効期限1410が経過しなかった場合、
図14のチャンク識別子(515−1)は未だ冷却されず、
図14のチャンク識別子(515−1)はキューの先頭に残される。
これは該当キューの他のチャンク識別子が降格されないことを意味しないことに注意しなければならない。
チャンクがアクセスされた順序にチャンク識別子がキューに配置されるので、
図14のチャンク識別子(515−1)は、最も長い時間前にアクセスされた(該当キューのチャンク識別子の中の)チャンク識別子であり、したがって最初に期限切れになるチャンク識別子である。
図14のチャンク識別子(515−1)が再びアクセスされた場合(したがって、“熱く”残された場合)、
図14のチャンク識別子(515−1)は、キューの末尾に移動され、他のチャンク識別子が該当キューの先頭に残され、したがって潛在的に降格の対象になる。
【0101】
図21A及び
図21Bは、本発明の実施形態に係る
図5の書込み命令(505−1)に対して
図5のストリーム識別子(530−1)を判断するための例示的な手続を説明するためのフローチャートである。
図21Aを参照すると、まず、ステップS2105で、
図4の受信機405はソフトウェアソースから書込み命令(505−1)を受信する。
【0102】
次に、ステップS2110で、
図5の論理ブロックアドレス(510−1)が
図5の書込み命令(505−1)から読み出される。
ステップS2115で、
図4の論理ブロックアドレスマッパ410は
図5の論理ブロックアドレス(510−1)を
図5のチャンク識別子(515−1)にマッピングする。
上述したように、
図5の論理ブロックアドレスマッパ410は所望する任意の方法で、例えば
図5の論理ブロックアドレス(510−1)から特定なビットをマスクすることによって、又は
図5の論理ブロックアドレス(510−1)を
図7のチャンクサイズ705に割ることによって、
図5のチャンク識別子(515−1)を判断する。
【0103】
次に、ステップS2120で、
図5のストリーム選択ロジック415は
図5のチャンク識別子(515−1)に対して使用されるストリーム識別子(530−1)を選択する。
上述したように、
図5のストリーム選択ロジック415は任意の所望する方法で、例えば、
図3のチャンクストリームマッパ340から
図5のストリーム識別子(530−1)を検索することによって、
図8のアクセスカウント(820−1)から
図5のストリーム識別子(530−1)を計算することによって、ラウンドロビン方式に装置ストリームを割り当てることによって、又は、任意の他の必要とするアプローチとして動作する。
【0104】
次に、ステップS2125で、
図4のストリーム識別子アダー420は
図5のストリーム識別子(530−1)を
図5の書込み命令(505−1)に追加する。
最後に、ステップS2130で、
図5の書込み命令(505−1)は、
図5の書込み命令(505−1)を
図1のソリッドステートドライブ120に伝送する
図4の送信機425を含む
図1のソリッドステートドライブ120によって処理されて指定された書込み動作を遂行する。
この時、
図5の書込み命令(505−1)は完全に処理される。
しかし、
図5のチャンク識別子(515−1)に割り当てられた
図5のストリーム識別子(530−1)を更新する等の他の処理は相変わらず遂行される。
【0105】
次に、
図21BのステップS2135で、
図4のキューアー430は追加処理のために
図5のチャンク識別子(515−1)を
図3の提出キュー335に追加する。
次に、ステップS2140で、
図5のチャンク識別子(515−1)が
図3の提出キュー335の先頭に到達する時、
図5のチャンク識別子(515−1)は
図3の提出キュー335から除去する。
最後に、ステップS2145で、
図4の背景ロジック435は、
図5のチャンク識別子(515−1)に対する
図5のストリーム識別子(530−1)を更新する。
図5のチャンク識別子(515−1)に対する
図5のストリーム識別子(530−1)を更新する
図4の背景ロジック435のための多様なアプローチは
図24及び
図25A〜
図25Cを参照して以下で説明する。
【0106】
図22は本発明の実施形態に係る
図5の論理ブロックアドレス(510−1)を
図5のチャンク識別子(515−1)にマッピングする
図4の論理ブロックアドレスマッパ410のための例示的な手続を説明するためのフローチャートである。
図22を参照すると、ステップS2205で、
図4の論理ブロックアドレスマッパ410は
図5のアドレスマスク525を使用して
図1の論理ブロックアドレス(510−1)からビットをマスクし、
図5のチャンク識別子(515−1)を残す。
【0107】
そうでなければ、ステップS2210で、
図4の論理ブロックアドレスマッパ410は
図5の論理ブロックアドレス(510−1)を
図7のチャンクサイズ705で割って
図5のチャンク識別子(515−1)を判断する。
【0108】
図23A及び
図23Bは、本発明の第1実施形態に係る順次ロジックを利用して
図5のチャンク識別子(515−1)に対する
図5のストリーム識別子(530−1)を判断するための例示的な手続を説明するためのフローチャートである。
図23Aを参照すると、ステップS2305で、
図4のストリーム選択ロジック415は書込み命令((505−1)〜(505−3))で順次論理ブロックアドレスに対するテスト中である否かを決定する。
【0109】
例えば、マルチキューアプローチを使用する本発明の実施形態で、
図4のストリーム選択ロジック415は
図5の書込み命令(505−1)が以前の書込み命令に順次的であるか否かは考慮しない。
図4のストリーム選択ロジック415が順次書込み命令に対してテスト中でなければ、ステップS2315で、
図4のストリーム選択ロジック415は、例えば
図3のチャンクストリームマッパ340から
図5のストリーム識別子(530−1)をアクセスすることによって
図5のチャンク識別子(515−1)と現在関連した
図5のストリーム識別子(530−1)を判断する。
【0110】
図4のストリーム選択ロジック415が
図5のストリーム識別子(530−1)をどのようにして判断するかの細部内容は
図3のチャンクストリームマッパ340がどのようにして具現されるかに依存する。
チャンクストリームマッパ340が
図8のSFR表805を含むと、
図4のストリーム選択ロジック415はテーブル検索を遂行する。
チャンクストリームマッパ340が
図14のノード((1405−1)〜(1405−3))を含むと、
図4のストリーム選択ロジック415は
図5のストリーム識別子(530−1)を判断する前にノードを検索して
図5のチャンク識別子(515−1)を検索しなければならない。
【0111】
一方、
図4のストリーム選択ロジック415が順次書込み命令に対してテスト中であれば、ステップS2315で、
図4のストリーム選択ロジック415は
図10のエントリ((1020−1)〜(1020−8))の
図10のウインドー1015を識別する。
次に、ステップS2320で、
図4のストリーム選択ロジック415は
図5の論理ブロックアドレス(510−1)が
図10のウインドー1015内の
図10の任意のエントリ((1020−1)〜(1020−8))に対する
図10の末尾論理ブロックアドレス1030に順次的であるか否かを判断する。
【0112】
図5の論理ブロックアドレス(515−1)が
図10のウインドー1015内の
図10の任意のエントリ((1020−1)〜(1020−8))に対する
図10の末尾論理ブロックアドレス1030に順次的でなければ、ステップS2310に行き、
図4のストリーム選択ロジック415は
図5のチャンク識別子(515−1)に現在関連した
図5のストリーム識別子(530−1)を上述したように判断する。
【0113】
図4のストリーム選択ロジック415が順次書込み命令に対するテスト中であり、そして
図5の論理ブロックアドレス(510−1)が
図10のウインドー1015内の
図10の任意のエントリ((1020−1)〜(1020−8))に順次的であれば、
図23Bに行き、ステップS2325で
図4のストリーム選択ロジック415は以前の書込み命令に割り当てられた
図5のストリーム識別子(530−1)を判断する。
次に、ステップS2125で(
図21A及び
図21Bの一部であり、したがって説明の目的として
図23Bで点線で示した)、以前の書込み命令に割り当てられた
図5のストリーム識別子(530−1)は
図5の書込み命令(505−1)に割り当てる。
【0114】
次に、ステップS2330で、
図4のストリーム選択ロジック415は、
図10のウインドー1015内の最も古いエントリである
図10のエントリ((1020−1)〜(1020−8))を識別する。
最後に、ステップS2335で、
図4のストリーム選択ロジック415は、
図5のウインドー1015内の最も古いエントリを除去し、
図5の書込み命令(505−1)に対応する新しいエントリを追加する。
【0115】
図4のストリーム選択ロジック415がこの削除及び追加をどのようにして遂行するかの技法は、
図10のウインドー1015に使用された構造に依存する。
図10のウインドー1015が
図10のエントリ((1020−1)〜(1020−8))のアレイ又は連結リストを格納すれば、削除及び追加は最も古いエントリを新しい値に上書きし、ポインターをアレイ又は連結リストの先頭として更新するようなことを含む。
一方、
図10のウインドー1015に対して他の構造を使用すれば、削除及び追加は最も古いエントリに対するメモリ客体(object)を削除及び割り当て解除し、そして
図5の書込み命令(505−1)に対する新しいメモリ客体を割り当てることを含む。
【0116】
図24は、本発明の第1実施形態に係る
図8のSFR表805の背景更新を遂行するための例示的な手続を説明するためのフローチャートである。
図24を参照すると、ステップS2405で、
図9のアクセスカウント調節器915は
図8のアクセスカウント(820−1)を(例えば、算術論理部のインクリメンタを用いて)増加させる。
次に、ステップS2410で、
図9の最新ロジック910は、
図11の最新ウェイト1105を(例えば、算術論理部を用いて)計算する。
【0117】
次に、ステップS2415で、
図9のアクセスカウント調節器915は、
図8のアクセスカウント(820−1)(ステップS2405で増加された)を(例えば、算術論理部を用いて)
図11の最新ウェイト1105で割られる。
最後に、ステップS2420で、
図9のストリーム識別子調節器920は、
図5のチャンク識別子(515−1)と関連する新しいストリーム識別子を決定する。
例えば、
図9のストリーム識別子調節器920は、算術論理部を用いて
図12の調節されたアクセスカウント1205のログを計算する。
【0118】
図25A〜
図25Cは、本発明の第2実施形態に係る
図14のノード(1405−1)の背景更新を遂行するための例示的な手続を説明するためのフローチャートである。
図25Aを参照すると、ステップS2505で、
図17のインクリメンタ1705は
図14のアクセスカウント(820−1)を増加させる。
次に、ステップS2510で、
図17のチャンク有効期限ロジック1715は
図14のチャンク識別子(515−1)に対する
図14の有効期限1410を判断する。
【0119】
次に、ステップS2515で、
図17のストリーム識別子調節器1710は、
図14のチャンク識別子(515−1)に対する
図14のストリーム識別子(530−1)を判断する。
図17のストリーム識別子調節器1710は、例えば
図14のノード(1405−1)から
図14のストリーム識別子(530−1)をアクセスすることによって
図14のストリーム識別子(530−1)を判断する。
次に、ステップS2520で、
図15の第2キューアー1510は、
図14のストリーム識別子(530−1)に対応する
図15のキュー((1520−1)〜(1520−3))の中の1つに
図14のチャンク識別子(515−1)を配置する。
【0120】
図25Bを参照すると、ステップS2525で、
図17の最も熱いチャンクロジック1720は、
図14のチャンク識別子(515−1)に対する
図14のアクセスカウント(820−1)を最も熱いチャンクに対するアクセスカウントと比較する。
図14のチャンク識別子(515−1)に対する
図14のアクセスカウント(820−1)が最も熱いチャンクに対するアクセスカウントより大きければ、
図14のチャンク識別子(515−1)は、現在最も熱いチャンクである。
したがって、ステップS2530で、
図17の最も熱いチャンクロジック1720は、
図14のチャンク識別子(515−1)が新しい最も熱いチャンクであることを示し、ステップS2535で
図17の最も熱いチャンクロジック1720は、
図19の装置寿命1905を
図14のチャンク識別子(515−1)の最も最新の2つのアクセス間の時間の差によって判断する。
【0121】
図14のチャンク識別子(515−1)が最も熱いチャンクであるか否かに関わらず、ステップS2540で、
図20の比較器2005は、
図14のチャンク識別子(515−1)が
図15のキュー((1520−1)〜(1520−3))の中の1つの先頭にある時、
図14の有効期限1410が経過したか否かを判断する。
そうでなければ、
図4の背景ロジック435は、
図14のチャンク識別子(515−1)に対する
図14の有効期限1410が経過する時まで待機し、(その間に他のことを行い)ステップS2540に戻って再び点検する。
その時点で、ステップS2545で、
図15の降格ロジック1525は、
図14のチャンク識別子(515−1)を
図15のキュー((1520−1)〜(1520−3))から除去する。
以後に、ステップS2550で、
図20のデクリメンタ2010は
図14のストリーム識別子(530−1)を減少させる。
【0122】
図25Cを参照すると、ステップS2555で、
図15の第2キューアー1510は、
図14のチャンク識別子(515−1)を新しいストリーム識別子に対応する
図15のキュー((1520−1)〜(1520−3))の中の他の1つに配置する。
次に、ステップS2560で、
図15の降格ロジック1525は、
図14のチャンク識別子(515−1)が最も熱いチャンクであるかを判断する。
そうであれば、ステップS2565で、
図15の降格ロジック1525は、他の1つのチャンク識別子を新しい最も熱いチャンクとして選択する。
例えば、キューの先頭又は末尾にあるチャンク識別子のような
図14のストリーム識別子(530−1)に割り当てられた他の1つのチャンクが(ステップS2560で減少する前に)選択される。
図15の降格ロジック1525は、また以前のように、選択された新しい最も熱いチャンクに基づいて
図19の装置寿命1905を計算する。
【0123】
図21A〜
図25Cを参照して、本発明の一部の実施形態が示した。
しかし、この分野に熟練された者は、ステップの順序を変更することによって、ステップを省略することによって、又は図面に示さない連結を含ませることによって、本発明の他の実施形態もまた可能にすることを認識する。
フローチャートのこのようなすべての変更は、明示的に説明しているか否かに関わらず、本発明の実施形態であることとみなす。
【0124】
以下の説明は、本発明の技術的思想が具現された適切なマシン又は複数構成のマシンの簡潔で一般的な説明を提供することを意図している。
マシン又は複数構成のマシンは、キーボード、マウス等のような通常的な入力装置からの入力のみならず、その他のマシンから受信される指示、仮想現実(VR、virtualreality)環境との相互作用、生体フィードバック、又は他の入力信号によって少なくとも一部を制御することができる。
ここで使用したように、“マシン”という用語は、単一マシン、仮想マシン、又は通信できるように結合されたマシン、仮想マシン、又は共に動作する装置のシステムを広く含むことができる。
例示的なマシンは、個人用コンピュータ、ワークステーション、サーバー、ポータブルコンピュータ、ハンドヘルド装置、電話機、タブレット等のようなコンピューティング装置だけでなく、個人又は共用輸送(例えば、自動車、汽車、タクシー等)のような輸送装置を含むことができる。
【0125】
マシン又は複数構成のマシンは、プログラム可能であるか、又はプログラム可能でないロジック装置又はアレイ、ASIC(Application Specific Integrated Circuits)、埋め込み型コンピュータ、スマートカード等のような埋め込み型制御器を含むことができる。
【0126】
マシン又は複数構成のマシンは、ネットワークインターフェイス、モデム又は他の通信接続のような1つ以上の遠隔マシンへの1つ以上の接続を活用することができる。
マシンは、イントラネット、インターネット、LAN(local area network)、WAN(wide area network)等のような物理的又は論理的ネットワークを通じて互いに接続することができる。
この分野に熟練された者はネットワーク通信が無線周波数(RF)、衛星、マイクロ波、IEEE802.11(WiFi)、ブルートゥース(登録商標)、光、赤外線、ケーブル、レーザー等を含む多様な有線又は無線短距離又は長距離キャリヤー及びプロトコルを活用することが理解されるべきである。
【0127】
本発明の実施形態は、マシンによってアクセスされた時にマシンが作業を遂行するか、又は抽象的なデータタイプ又は低レベルハードウェアコンテキストを定義するようにする関数、手続、データ構造、アプリケーションプログラム等を含む関連されたデータを参照して説明される。
関連するデータは、RAM、ROM等のような揮発性又は不揮発性メモリ又はハードドライブ、フロッピー(登録商標)ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック(登録商標)、デジタルビデオディスク、生体ストレージ等を含む他の格納装置及び関連する格納媒体に格納される。
【0128】
関連するデータは、物理的又は論理的ネットワークを含む伝送環境にわたってパケット、直列データ、並列データ、伝送信号等の形態に伝達することができ、圧縮された又は暗号化された形式で使用することができる。
関連するデータは、分散環境で使用することができ、マシンアクセスのために地域的に又は遠隔に格納することができる。
【0129】
本発明の実施形態は、1つ以上のプロセッサによって実行される命令を含む実在する非一時的であるマシン読出し可能である媒体を含むことができる。
命令はここに説明したように本発明の要素を遂行するようにする命令を含むことができる。
【0130】
本発明の実施形態を参照して説明されたが、図に示した実施形態は、配置及び詳細側面で本発明の技術的思想から逸脱しなくとも、修正することができ所望する方法に組み合わすことができる。
前述の説明が特定実施形態に集中しているが、他の構成も、また考慮することができる。
特に、“本発明の実施形態に係る”又はこれと類似な表現が使用されるが、このような文句は可能である一般的な実施形態を参照し、本発明の技術的思想を具体的な実施形態の構成に限定しようとすることではない。
ここに使用されるように、このような用語は同一又は他の実施形態に組み合わせ可能な同一又は異なる実施形態を参照することができる。
先に説明した実施形態は、本発明の技術的思想を制限しない。
幾つかの実施形態が説明されたが、この分野に熟練された者はこのような実施形態が本発明の新規な技術的思想及び長所から逸脱しなくとも、多様に修正することができることが理解されるべきである。
したがって、このようなすべての修正は、請求項に定義したように本発明の技術的思想範囲に含まれる。
【0131】
本発明の実施形態は、下のステートメントへ拡張されることができ、限定されない。
第1ステートメントとして、本発明の実施形態はソリッドステートドライブ(SSD、solid state drive)を含む。
ソリッドステートドライブは、データを格納するフラッシュメモリと、ソリッドステートドライブで複数の装置ストリームに対する支援と、提出キュー及びチャンクストリームマッパのための格納部を含み、複数の書込み命令に応答してフラッシュメモリに対するデータ書込みを管理するソリッドステート制御器と、フラッシュ変換階層と、を含む。
フラッシュ変換階層は、論理ブロックアドレス(LBA、logicalblock address)を含む書込み命令を受信する受信機と、論理ブロックアドレスをチャンク識別子(ID、identifier)にマッピングする論理ブロックアドレスマッパと、チャンクストリームマッパを用いてチャンク識別子に基づいてストリーム識別子を選択するストリーム選択ロジックと、ストリーム識別子を書込み命令に追加するストリーム識別子アダーと、チャンク識別子を提出キューに配置するキューアーと、チャンク識別子を提出キューから除去し、チャンクストリームマッパを更新する背景ロジックと、を含む。
【0132】
第2ステートメントとして、本発明の実施形態は、第1ステートメントにしたがうソリッドステートドライブを含み、書込み命令をストリーム識別子と共にソリッドステートドライブに伝送する送信機をさらに含む。
第3ステートメントとして、本発明の実施形態は、第1ステートメントにしたがうソリッドステートドライブを含み、論理ブロックアドレスマッパは、論理ブロックアドレスの一部をマスクしてチャンク識別子を判断するアドレスマスクを含む。
第4ステートメントとして、本発明の実施形態は第1ステートメントにしたがうソリッドステートドライブを含み、論理ブロックアドレスマッパは、論理ブロックアドレスをチャンクサイズで割って、チャンク識別子を確認する算術論理部(ALU、arithmeticlogicunit)を含む。
【0133】
第5ステートメントとして、本発明の実施形態は、第1ステートメントにしたがうソリッドステートドライブを含み、チャンクストリームマッパは順次、頻度、最新(SFR、Sequential、Frequency、Recency)表を含み、SFR表はチャンク識別子及びチャンク識別子に対するストリーム識別子を含む。
第6ステートメントとして、本発明の実施形態は、第5ステートメントにしたがうソリッドステートドライブを含み、背景ロジックは論理ブロックアドレスが以前の書込み命令の第2論理ブロックアドレスに順次的であれば、以前ストリームを選択する順次ロジックを含む。
第7ステートメントとして、本発明の実施形態は、第6ステートメントにしたがうソリッドステートドライブを含み、以前の書込み命令はウインドーサイズを有する書込み命令に先行するウインドー内にある。
【0134】
第8ステートメントとして、本発明の実施形態は、第7ステートメントにしたがうソリッドステートドライブを含み、ウインドーサイズはホストコンピュータシステムのプロセッサのコアの数、及びホストコンピュータシステムのプロセッサで実行されるソフトウェアソースの数の中の少なくとも1つに応答して決定される。
第9ステートメントとして、本発明の実施形態は、第7ステートメントにしたがうソリッドステートドライブを含み、ソリッドステートドライブ制御器は、以前の書込み命令を含む以前の書込み命令のキューのための格納部をさらに含み、キューは以前の書込み命令の各々に対して末尾論理アドレス及び対応するストリーム識別子を含む。
第10ステートメントとして、本発明の実施形態は、第5ステートメントにしたがうソリッドステートドライブを含み、背景ロジックは、チャンク識別子に対する現在アクセス時間、チャンク識別子に対する以前アクセス時間、及び減衰期間に基づいて最新ウェイトを計算する最新ロジックと、最新ウェイトに基づいてチャンク識別子に対するアクセスカウントを調節して調節されたアクセスカウントを生産するアクセスカウント調節器と、チャンク識別子に対する調節されたアクセスカウントに基づいてストリーム識別子を調節するストリーム識別子調節器と、を含む。
【0135】
第11ステートメントとして、本発明の実施形態は、第10ステートメントにしたがうソリッドステートドライブを含み、SFR表はチャンク識別子に対する現在アクセス時間、チャンク識別子に対する以前アクセス時間、及びチャンク識別子に対するアクセスカウントをさらに含む。
第12ステートメントとして、本発明の実施形態は、第10ステートメントにしたがうソリッドステートドライブを含み、最新ロジックは、最新ウェイトを2の累乗(累乗の指数は、チャンク識別子に対する現在アクセス時間とチャンク識別子に対する以前アクセス時間との差を減衰期間で割ったもの)で計算する。
第13ステートメントとして、本発明の実施形態は、第10ステートメントにしたがうソリッドステートドライブを含み、アクセスカウント調節器は、チャンク識別子に対する調節されたアクセスカウントを(チャンク識別子に対する前記アクセスカウントに1を加えたもの)最新ウェイトで割ったものとして計算する。
【0136】
第14ステートメントとして、本発明の実施形態は、第10ステートメントにしたがうソリッドステートドライブを含み、ストリーム識別子調節器は、ストリーム識別子をチャンク識別子に対する調節されたアクセスカウントのログとして計算する。
第15ステートメントとして、本発明の実施形態は、第1ステートメントにしたがうソリッドステートドライブを含み、チャンクストリームマッパはノードエントリを含み、ノードエントリはチャンク識別子及びチャンク識別子に対するストリーム識別子を含む。
第16ステートメントとして、本発明の実施形態は、第15ステートメントにしたがうソリッドステートドライブを含み、背景ロジックは、チャンク識別子に基づいてストリーム識別子を昇格する時を判断する昇格ロジックと、チャンク識別子に対するストリーム識別子に応答して、複数のストリーム識別子に対応する複数のキューの第1番目のキューにチャンク識別子を配置する第2キューアーと、チャンク識別子に基づいてストリーム識別子を降格する時を判断する降格ロジックと、を含む。
【0137】
第17ステートメントとして、本発明の実施形態は、第16ステートメントにしたがうソリッドステートドライブを含み、昇格ロジックは、チャンク識別子に対するアクセスカウントを増加させるインクリメンタと、チャンク識別子に対するアクセスカウントに応答してストリーム識別子を判断するストリーム識別子調節器と、を含む。
第18ステートメントとして、本発明の実施形態は、第17ステートメントにしたがうソリッドステートドライブを含み、ストリーム識別子調節器は、ストリーム識別子に対するアクセスカウントのログとしてストリーム識別子を判断するように動作する。
第19ステートメントとして、本発明の実施形態は、第17ステートメントにしたがうソリッドステートドライブを含み、昇格ロジックは、チャンク識別子に対する有効期限を演算するチャンク有効期限ロジックをさらに含む。
【0138】
第20ステートメントとして、本発明の実施形態は、第19ステートメントにしたがうソリッドステートドライブを含み、チャンク有効期限ロジックはチャンク識別子に対する有効期限をチャンク識別子に対するアクセスカウントと装置寿命の合計として演算するように動作する。
第21ステートメントとして、本発明の実施形態は、第20ステートメントにしたがうソリッドステートドライブを含み、装置寿命は、最も熱いチャンクに対する最後アクセス時間と最も熱いチャンクに対する以前アクセス時間との間の差である。
第22ステートメントとして、本発明の実施形態は、第21ステートメントにしたがうソリッドステートドライブを含み、昇格ロジックは、チャンク識別子に対するアクセスカウントが最も熱いチャンクに対する以前のアクセスカウントより大きい時、チャンク識別子を最も熱いチャンクとして識別する最も熱いチャンクロジックをさらに含む。
【0139】
第23ステートメントとして、本発明の実施形態は、第21ステートメントにしたがうソリッドステートドライブを含み、ノードエントリは、チャンク識別子に対するアクセスカウント及びチャンク識別子に対する有効期限をさらに含む。
第24ステートメントとして、本発明の実施形態は、第16ステートメントにしたがうソリッドステートドライブを含み、降格ロジックは、チャンク識別子に対する有効期限が経過したか否かを判断する比較器と、チャンク識別子に対する有効期限が経過したら、ストリーム識別子を減らすデクリメンタを含み、第2キューアーはチャンク識別子に対する減少されたストリーム識別子に応答して、複数のストリーム識別子に対応する複数のキューの中の第2番目にチャンク識別子を配置するように動作する。
第25ステートメントとして、本発明の実施形態は、第24ステートメントにしたがうソリッドステートドライブを含み、降格ロジックは、チャンク識別子が複数のキューの先頭にある時、チャンク識別子に基づいてストリーム識別子を降格する時を判断するように動作する。
第26ステートメントとして、本発明の実施形態は、第24ステートメントにしたがうソリッドステートドライブを含み、降格ロジックは、チャンク識別子が複数のキュー内の第1のキューの先頭にある時、チャンク識別子に基づいてストリーム識別子を降格する時を判断するように動作する。
【0140】
第27ステートメントとして、本発明の実施形態は、コンピューティングシステムで使用されるためのドライバーを含み、ドライバーは、論理ブロックアドレス(logical block address:LBA)を含むソリッドステートドライブ(solid state drive:SSD)に対する書込み命令を受信する受信機と、論理ブロックアドレスをチャンク識別子(identifier:ID)にマッピングする論理ブロックアドレスマッパと、ホストコンピュータシステムのメモリに格納されたチャンクストリームマッパを用いてチャンク識別子に基づいてストリーム識別子を選択するストリーム選択ロジックと、ストリーム識別子を書込み命令に追加するストリーム識別子アダーと、チャンク識別子をメモリに格納された提出キューに配置するキューアーと、提出キューからチャンク識別子を除去し、チャンクストリームマッパを更新する背景ロジックと、を含む。
【0141】
第28ステートメントとして、本発明の実施形態は、第27ステートメントにしたがうドライバーを含み、書込み命令をストリーム識別子を使用するソリッドステートドライブに伝送する送信機をさらに含む。
第29ステートメントとして、本発明の実施形態は、第27ステートメントにしたがうドライバーを含み、論理ブロックアドレスマッパは、論理ブロックアドレスの一部をマスクしてチャンク識別子を判断するアドレスマスクを含む。
第30ステートメントとして、本発明の実施形態は、第27ステートメントにしたがうドライバーを含み、論理ブロックアドレスマッパは、論理ブロックアドレスをチャンクサイズで割ってチャンクを識別する算術論理部(arithmetic logic unit:ALU)を含む。
【0142】
第31ステートメントとして、本発明の実施形態は、第27ステートメントにしたがうドライバーを含み、チャンクストリームマッパは、順次、頻度、最新(Sequential、Frequency、Recency:SFR)表を含み、SFR表はチャンク識別子及びチャンク識別子に対するストリーム識別子を含む。
第32ステートメントとして、本発明の実施形態は、第31ステートメントにしたがうドライバーを含み、背景ロジックは論理ブロックアドレスが以前の書込み命令の第2論理ブロックアドレスに順次的であれば、以前ストリームを選択する順次ロジックを含む。
第33ステートメントとして、本発明の実施形態は、第32ステートメントにしたがうドライバーを含み、以前の書込み命令は、ウインドーサイズを有する書込み命令に先行するウインドー内にある。
【0143】
第34ステートメントとして、本発明の実施形態は、第32ステートメントにしたがうドライバーを含み、ウインドーサイズは、ホストコンピュータシステムのプロセッサのコアの数、及びホストコンピュータシステムのプロセッサで実行されるソフトウェアソースの数の中の少なくとも1つに応答して判断される。
第35ステートメントとして、本発明の実施形態は、第31ステートメントにしたがうドライバーを含み、背景ロジックは、チャンク識別子に対する現在アクセス時間、チャンク識別子に対する以前アクセス時間、及び減衰期間に基づいて最新ウェイトを計算する最新ロジックと、最新ウェイトに基づいてチャンク識別子に対するアクセスカウントを調節し調節されたアクセスカウントを生成するアクセスカウント調節器と、チャンク識別子に対する調節されたアクセスカウントに基づいてストリーム識別子を調節するストリーム識別子調節器と、を含む。
第36ステートメントとして、本発明の実施形態は、第35ステートメントにしたがうドライバーを含み、SFR表は、チャンク識別子に対する現在アクセス時間、チャンク識別子に対する以前アクセス時間、及びチャンク識別子に対するアクセスカウントをさらに含む。
【0144】
第37ステートメントとして、本発明の実施形態は、第35ステートメントにしたがうドライバーを含み、最新ロジックは、最新ウェイトを2の累乗(累乗の指数は、チャンク識別子に対する現在アクセス時間とチャンク識別子に対する以前アクセス時間との差を減衰期間で割ったもの)で計算する。
第38ステートメントとして、本発明の実施形態は、第35ステートメントにしたがうドライバーを含み、アクセスカウント調節器は、チャンク識別子に対する調節されたアクセスカウントを(チャンク識別子に対するアクセスカウントに1を加えたもの)を最新ウェイトで割ったものとして計算する。
第39ステートメントとして、本発明の実施形態は、第35ステートメントにしたがうドライバーを含み、ストリーム識別子調節器は、ストリーム識別子をチャンク識別子に対する調節されたアクセスカウントのログとして計算する。
【0145】
第40ステートメントとして、本発明の実施形態は、第27ステートメントにしたがうドライバーを含み、チャンクストリームマッパは、ノードエントリを含み、ノードエントリはチャンク識別子及びチャンク識別子に対するストリーム識別子を含む。
第41ステートメントとして、本発明の実施形態は、第40ステートメントにしたがうドライバーを含み、背景ロジックは、チャンク識別子に基づいてストリーム識別子を昇格する時を判断する昇格ロジックと、チャンク識別子に対するストリーム識別子に応答して、複数のストリーム識別子に対応する複数のキューの第1番目のキューにチャンク識別子を配置する第2キューアーと、チャンク識別子に基づいてストリーム識別子を降格する時を判断する降格ロジックと、を含む。
第42ステートメントとして、本発明の実施形態は、第41ステートメントにしたがうドライバーを含み、昇格ロジックは、チャンク識別子に対するアクセスカウントを増加させるインクリメンタと、チャンク識別子に対するアクセスカウントに応答してストリーム識別子を判断するストリーム識別子調節器と、を含む。
【0146】
第43ステートメントとして、本発明の実施形態は、第42ステートメントにしたがうドライバーを含み、ストリーム識別子調節器は、ストリーム識別子に対するアクセスカウントのログとしてストリーム識別子を判断するように動作する。
第44ステートメントとして、本発明の実施形態は、第42ステートメントにしたがうドライバーを含み、昇格ロジックは、チャンク識別子に対する有効期限を演算するチャンク有効期限ロジックをさらに含む。
第45ステートメントとして、本発明の実施形態は、第44ステートメントにしたがうドライバーを含み、チャンク有効期限ロジックは、チャンク識別子に対する有効期限をチャンク識別子に対するアクセスカウントと装置寿命の合計として演算するように動作する。
【0147】
第46ステートメントとして、本発明の実施形態は、第44ステートメントにしたがうドライバーを含み、装置寿命は、最も熱いチャンクに対する最後のアクセス時間と最も熱いチャンクに対する以前のアクセス時間との間の差である。
第47ステートメントとして、本発明の実施形態は、第46ステートメントにしたがうドライバーを含み、昇格ロジックは、チャンク識別子に対するアクセスカウントが最も熱いチャンクに対する以前のアクセスカウントより大きい時、チャンク識別子を最も熱いチャンクとして識別する最も熱いチャンクロジックをさらに含む。
第48ステートメントとして、本発明の実施形態は、第46ステートメントにしたがうドライバーを含み、ノードエントリは、チャンク識別子に対するアクセスカウント及びチャンク識別子に対する有効期限をさらに含む。
【0148】
第49ステートメントとして、本発明の実施形態は、第41ステートメントにしたがうドライバーを含み、降格ロジックは、チャンク識別子に対する有効期限が経過したか否かを判断する比較器と、チャンク識別子に対する有効期限が経過したら、ストリーム識別子を減らすデクリメンタと、を含み、第2キューアーは、チャンク識別子に対する減少されたストリーム識別子に応答して、複数のストリーム識別子に対応する複数のキューの中の第2番目のキューにチャンク識別子を配置するように動作する。
第50ステートメントとして、本発明の実施形態は、第49ステートメントにしたがうドライバーを含み、降格ロジックは、チャンク識別子が複数のキューの先頭にある時、チャンク識別子に基づいてストリーム識別子を降格する時を判断するように動作する。
第51ステートメントとして、本発明の実施形態は、第49ステートメントにしたがうドライバーを含み、降格ロジックは、チャンク識別子が複数のキューの第1のキューの先頭にある時、チャンク識別子に基づいてストリーム識別子を降格する時を判断するように動作する。
【0149】
第52ステートメントとして、本発明の実施形態は、ストリーム識別子割り当て方法を含む。ストリーム識別子割り当て方法はソフトウェアソースから書込み命令を受信する段階と、書込み命令で論理ブロックアドレス(logical block address:LBA)を判断する段階と、論理ブロックアドレスを含むソリッドステートドライブ(solid state drive:SSD)でチャンクに対するチャンク識別子(identifier:ID)を識別する段階と、チャンク識別子に関連したストリーム識別子にアクセスする段階と、ストリーム識別子を書込み命令に割り当てる段階と、割り当てされたストリーム識別子を用いてソリッドステートドライブで書込み命令を処理する段階と、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階を含む。
【0150】
第53ステートメントとして、本発明の実施形態は、第52ステートメントのストリーム識別子割り当て方法を含み、ストリーム識別子割り当て方法は、ホストコンピュータシステムのファイルシステム階層、ブロック階層、又は装置ドライバー階層の中で1つで具現される。
第54ステートメントとして、本発明の実施形態は、第52ステートメントのストリーム識別子割り当て方法を含み、ストリーム識別子割り当て方法は、ソリッドステートドライブのフラッシュ変換階層で具現される。
第55ステートメントとして、本発明の実施形態は、第52ステートメントのストリーム識別子割り当て方法を含み、論理ブロックアドレスを含むソリッドステートドライブでチャンクに対するチャンク識別子を識別する段階は、論理ブロックアドレスでアドレスマスクを用いてチャンク識別子を識別する段階を含む。
【0151】
第56ステートメントとして、本発明の実施形態は、第52ステートメントのストリーム識別子割り当て方法を含み、論理ブロックアドレスを含むソリッドステートドライブでチャンクに対するチャンク識別子を識別する段階は、論理ブロックアドレスをチャンクのセクターの数で割る段階を含む。
第57ステートメントとして、本発明の実施形態は、第52ステートメントのストリーム識別子割り当て方法を含み、ストリーム識別子を書込み命令に割り当てる段階は、ストリーム識別子を書込み命令にタグとして追加する段階を含む。
第58ステートメントとして、本発明の実施形態は、第52ステートメントのストリーム識別子割り当て方法を含み、論理ブロックアドレスが第2書込み命令の第2論理ブロックアドレスに順次的であるか否かを判断する段階と、論理ブロックアドレスが第2書込み命令の第2論理ブロックアドレスに順次的であれば、第2書込み命令に割り当てられた第2ストリーム識別子を判断する段階と、書込み命令に第2ストリーム識別子を割り当てる段階をさらに含む。
【0152】
第59ステートメントとして、本発明の実施形態は、第58ステートメントのストリーム識別子割り当て方法を含み、第2書込み命令は、書込み命令に先行するウインドー内にある。
第60ステートメントとして、本発明の実施形態は、第59ステートメントのストリーム識別子割り当て方法を含み、ウインドーを識別する段階をさらに含む。
第61ステートメントとして、本発明の実施形態は、第60ステートメントのストリーム識別子割り当て方法を含み、ウインドーを識別する段階は、ソリッドステートドライブを含むホストコンピュータシステムのプロセッサのコアの数及びソリッドステートドライブを含むホストコンピュータシステムのプロセッサで実行されるソフトウェアソースの数の中の少なくとも1つに応答してウインドーに対するウインドーサイズを識別する段階を含む。
【0153】
第62ステートメントとして、本発明の実施形態は、第59ステートメントのストリーム識別子割り当て方法を含み、ウインドーで最も古い書込み命令を識別する段階と、ウインドーで最も古い書込み命令を書込み命令で置換する段階をさらに含む。
第63ステートメントとして、本発明の実施形態は、第52ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子を提出キューに追加する段階と、チャンク識別子が提出キューの先頭にある時、チャンク識別子を提出キューから除去する段階を含む。
第64ステートメントとして、本発明の実施形態は、第52ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子に対するアクセスカウントを増加させる段階と、チャンク識別子に対する現在アクセス時間及び以前アクセス時間に応答してチャンク識別子に対する最新ウェイトを計算する段階と、最新ウェイトに応答してチャンク識別子に対するアクセスカウントを更新する段階と、更新されたアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階を含む。
【0154】
第65ステートメントとして、本発明の実施形態は、第64ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子に対する現在アクセス時間及び以前アクセス時間に応答してチャンク識別子に対する最新ウェイトを計算する段階は、最新ウェイトを2の累乗(累乗の指数は、チャンク識別子に対する現在アクセス時間と以前アクセス時間との間の差を減衰期間で割ったもの)で計算する段階を含む。
第66ステートメントとして、本発明の実施形態は、第65ステートメントのストリーム識別子割り当て方法を含み、最新ウェイトに応答してチャンク識別子に対するアクセスカウントを更新する段階は、アクセスカウントを最新ウェイトで割る段階を含む。
第67ステートメントとして、本発明の実施形態は、第64ステートメントのストリーム識別子割り当て方法を含み、更新されたアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階は、チャンク識別子に対するストリーム識別子を生成されたアクセスカウントのログとして計算する段階を含む。
【0155】
第68ステートメントとして、本発明の実施形態は、第52ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子を複数のキューの中の1つであるストリーム識別子に対応するキューに配置する段階と、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階を含む。
第69ステートメントとして、本発明の実施形態は、第68ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子を複数のキューの中のストリーム識別子に対応するキューに配置する段階は、チャンク識別子に対するアクセスカウントを増加させる段階と、チャンク識別子に対するアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階を含む。
第70ステートメントとして、本発明の実施形態は、第69ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子に対するアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階は、チャンク識別子に対するストリーム識別子をチャンク識別子に対するアクセスカウントのログとして計算する段階を含む。
【0156】
第71ステートメントとして、本発明の実施形態は、第69ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子を複数のキューの中のストリーム識別子に対応するキューに配置する段階は、チャンク識別子に対するアクセスカウントが最も熱いチャンクに対する第2アクセスカウントを超過すれば、チャンク識別子を新しい最も熱いチャンクとして識別する段階をさらに含む。
第72ステートメントとして、本発明の実施形態は、第71ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子を新しい最も熱いチャンクとして識別する段階は、装置寿命をチャンク識別子に対する現在アクセス時間とチャンク識別子に対する以前アクセス時間との間の差に計算する段階を含む。
第73ステートメントとして、本発明の実施形態は、第68ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、アクセスカウント及び装置寿命に応答してチャンク識別子に対する有効期限を判断する段階を含み、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階は、チャンク識別子に対する有効期限が経過したら、ストリーム識別子に対応するキューからチャンク識別子を除去する段階と、ストリーム識別子を減少する段階と、チャンク識別子を減少されたストリーム識別子に対応する第2キューに配置する段階と、を含む。
【0157】
第74ステートメントとして、本発明の実施形態は、第73ステートメントのストリーム識別子割り当て方法を含み、アクセスカウント及び装置寿命に応答してチャンク識別子に対する有効期限を判断する段階は、装置寿命を最も熱いチャンクに対する最後アクセス時間と最も熱いチャンクに対する以前アクセス時間との間の差として計算する段階を含む。
第75ステートメントとして、本発明の実施形態は、第73ステートメントのストリーム識別子割り当て方法を含み、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階は、チャンク識別子に対する有効期限が経過したら、チャンク識別子が最も熱いチャンクであれば、ストリーム識別子に対応するキューの第2チャンク識別子を新しい最も熱いチャンクとして選択する段階をさらに含む。
【0158】
第76ステートメントとして、本発明の実施形態は、非一時的(non−transitory)格納媒体を含む物品(article)を含む。
非一時的格納媒体は、それに格納された命令(instructions)を含み、命令がマシンによって実行される時、ソフトウェアソースから書込み命令を受信する段階と、書込み命令で論理ブロックアドレス(logical block address:LBA)を判断する段階と、論理ブロックアドレスを含むソリッドステートドライブ(solid state drive:SSD)でチャンクに対するチャンク識別子(identifier:ID)を識別する段階と、チャンク識別子に関連したストリーム識別子にアクセスする段階と、ストリーム識別子を書込み命令に割り当てる段階と、割り当てられたストリーム識別子を用いてソリッドステートドライブで書込み命令を処理する段階と、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階と、を生じさせる。
【0159】
第77ステートメントとして、本発明の実施形態は、第76ステートメントの物品を含み、ストリーム識別子割り当て方法は、ホストコンピュータシステムのファイルシステム階層、ブロック階層、又は装置ドライバー階層の中の1つで具現される。
第78ステートメントとして、本発明の実施形態は、第76ステートメントの物品を含み、ストリーム識別子割り当て方法は、ソリッドステートドライブのフラッシュ変換階層で具現される。
第79ステートメントとして、本発明の実施形態は、第76ステートメントの物品を含み、論理ブロックアドレスを含むソリッドステートドライブでチャンクに対するチャンク識別子を識別する段階は、論理ブロックアドレスでアドレスマスクを用いてチャンク識別子を識別する段階を含む。
【0160】
第80ステートメントとして、本発明の実施形態は、第76ステートメントの物品を含み、論理ブロックアドレスを含むソリッドステートドライブでチャンクに対するチャンク識別子を識別する段階は、論理ブロックアドレスをチャンクのセクターの数で割る段階を含む。
第81ステートメントとして、本発明の実施形態は、第76ステートメントの物品を含み、ストリーム識別子を書込み命令に割り当てる段階は、ストリーム識別子を書込み命令にタグとして追加する段階を含む。
第82ステートメントとして、本発明の実施形態は、第76ステートメントの物品を含み、論理ブロックアドレスが第2書込み命令の第2論理ブロックアドレスに順次的であるか否かを判断する段階と、論理ブロックアドレスが第2書込み命令の第2論理ブロックアドレスに順次的であれば、第2書込み命令に割り当てられた第2ストリーム識別子を判断する段階と、書込み命令に第2ストリーム識別子を割り当てる段階と、を発生させる命令をさらに含む。
【0161】
第83ステートメントとして、本発明の実施形態は、第82ステートメントの物品を含み、第2書込み命令は、書込み命令に先行するウインドー内にある。
第84ステートメントとして、本発明の実施形態は、第83ステートメントの物品を含み、非一時的格納媒体は、マシンによって実行される時、ウインドーを識別する段階を発生させる命令をさらに含む。
第85ステートメントとして、本発明の実施形態は、第84ステートメントの物品を含み、ウインドーを識別する段階は、ソリッドステートドライブを含むホストコンピュータシステムのプロセッサのコアの数及びソリッドステートドライブを含むホストコンピュータシステムのプロセッサで実行されるソフトウェアソースの数の中の少なくとも1つに応答してウインドーに対するウインドーサイズを識別する段階を含む。
【0162】
第86ステートメントとして、本発明の実施形態は、第83ステートメントの物品を含み、非一時的格納媒体は、マシンによって実行される時、ウインドーで最も古い書込み命令を識別する段階と、ウインドーで最も古い書込み命令を書込み命令で置換する段階と、を発生させる命令をさらに含む。
第87ステートメントとして、本発明の実施形態は、第76ステートメントの物品を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子を提出キューに追加する段階と、チャンク識別子が提出キューの先頭にある時、チャンク識別子を提出キューから除去する段階を含む。
第88ステートメントとして、本発明の実施形態は、第76ステートメントの物品を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子に対するアクセスカウントを増加させる段階と、チャンク識別子に対する現在アクセス時間及び以前アクセス時間に応答してチャンク識別子に対する最新ウェイトを計算する段階と、最新ウェイトに応答してチャンク識別子に対するアクセスカウントを更新する段階と、更新されたアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階と、を含む。
【0163】
第89ステートメントとして、本発明の実施形態は、第88ステートメントの物品を含み、チャンク識別子に対する現在アクセス時間及び以前アクセス時間に応答してチャンク識別子に対する最新ウェイトを計算する段階は、最新ウェイトを2の累乗(累乗の指数は、チャンク識別子に対する現在アクセス時間と以前アクセス時間との間の差を減衰期間で割ったもの)で計算する段階を含む。
第90ステートメントとして、本発明の実施形態は、第89ステートメントの物品を含み、最新ウェイトに応答してチャンク識別子に対するアクセスカウントを更新する段階は、アクセスカウントを最新ウェイトで割る段階を含む。
第91ステートメントとして、本発明の実施形態は、第88ステートメントの物品を含み、更新されたアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階は、チャンク識別子に対するストリーム識別子を生成されたアクセスカウントのログとして計算する段階を含む。
【0164】
第92ステートメントとして、本発明の実施形態は、第76ステートメントの物品を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、チャンク識別子を複数のキューの中のストリーム識別子に対応するキューに配置する段階と、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階を含む。
第93ステートメントとして、本発明の実施形態は、第92ステートメントの物品を含み、チャンク識別子を複数のキューの中のストリーム識別子に対応するキューに配置する段階は、チャンク識別子に対するアクセスカウントを増加させる段階と、チャンク識別子に対するアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階を含む。
第94ステートメントとして、本発明の実施形態は、第93ステートメントの物品を含み、チャンク識別子に対するアクセスカウントに応答してチャンク識別子に対するストリーム識別子を判断する段階は、チャンク識別子に対するストリーム識別子をチャンク識別子に対するアクセスカウントのログとして計算する段階を含む。
【0165】
第95ステートメントとして、本発明の実施形態は、第93ステートメントの物品を含み、チャンク識別子を複数のキューの中のストリーム識別子に対応するキューに配置する段階は、チャンク識別子に対するアクセスカウントが最も熱いチャンクに対する第2アクセスカウントを超過すれば、チャンク識別子を新しい最も熱いチャンクとして識別する段階をさらに含む。
第96ステートメントとして、本発明の実施形態は、第95ステートメントの物品を含み、チャンク識別子を新しい最も熱いチャンクとして識別する段階は、装置寿命をチャンク識別子に対する現在アクセス時間とチャンク識別子に対する以前アクセス時間との間の差として計算する段階を含む。
第97ステートメントとして、本発明の実施形態は、第92ステートメントの物品を含み、チャンク識別子と関連したストリーム識別子の背景更新を遂行する段階は、アクセスカウント及び装置寿命に応答してチャンク識別子に対する有効期限を判断する段階を含み、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階は、チャンク識別子に対する有効期限が経過したら、ストリーム識別子に対応するキューからチャンク識別子を除去する段階と、ストリーム識別子を減少する段階と、チャンク識別子を減少されたストリーム識別子に対応する第2キューに配置する段階と、を含む。
【0166】
第98ステートメントとして、本発明の実施形態は、第97ステートメントの物品を含み、アクセスカウント及び装置寿命に応答してチャンク識別子に対する有効期限を判断する段階は、装置寿命を最も熱いチャンクに対する最後アクセス時間と最も熱いチャンクに対する以前アクセス時間との間の差として計算する段階を含む。
第99ステートメントとして、本発明の実施形態は、第97ステートメントの物品を含み、チャンク識別子がキューの先頭に到達する時、チャンク識別子を降格するか否かを判断する段階は、チャンク識別子に対する有効期限が経過したら、チャンク識別子が最も熱いチャンクであれば、ストリーム識別子に対応するキューの第2チャンク識別子を新しい最も熱いチャンクとして選択する段階をさらに含む。
【0167】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。