(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-12
(45)【発行日】2025-03-21
(54)【発明の名称】プリフェッチ動作の調整方法及びその管理システム
(51)【国際特許分類】
G06F 12/0862 20160101AFI20250313BHJP
【FI】
G06F12/0862
(21)【出願番号】P 2020158486
(22)【出願日】2020-09-23
【審査請求日】2023-08-02
(32)【優先日】2019-09-20
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-05-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】朴 熙 權
(72)【発明者】
【氏名】洪 一 九
(72)【発明者】
【氏名】李 好 彬
(72)【発明者】
【氏名】奇 亮 ソク
【審査官】田名網 忠雄
(56)【参考文献】
【文献】米国特許出願公開第2011/0131380(US,A1)
【文献】特開2011-258016(JP,A)
【文献】特開2014-127116(JP,A)
【文献】特開2019-133662(JP,A)
【文献】特開2014-038511(JP,A)
【文献】特表2007-520812(JP,A)
【文献】米国特許出願公開第2019/0065377(US,A1)
【文献】米国特許出願公開第2009/0055595(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/0862
(57)【特許請求の範囲】
【請求項1】
プロセッサ上で実行される管理システムのプリフェッチ動作の調整方法であって、
プリフェッチ距離を設定する段階と、
プリフェッチトリガーキーにアクセスする段階と、
目標キーが前記プリフェッチトリガーキーから前記プリフェッチ距離
の外にある
と判定する段階と、
目標キーが前記プリフェッチトリガーキーから前記プリフェッチ距離の外にあると判定した場合、前記プリフェッチ距離を増加させる段階と、
プリフェッチ先読みバッファ
から後続プリフェッチトリガーキーの後続目標キーを正しくフェッチする段階と、を有することを特徴とするプリフェッチ動作の調整方法。
【請求項2】
追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと
判定する段階と、
追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと判定した場合、前記追加の後続プリフェッチトリガーキーの追加の後続目標キーに対するプリフェッチ動作を省略する段階と、を更に有することを特徴とする請求項1に記載のプリフェッチ動作の調整方法。
【請求項3】
追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと判定した場合、前記プリフェッチ距離を減少させる段階を更に有することを特徴とする請求項2に記載のプリフェッチ動作の調整方法。
【請求項4】
前記プリフェッチ距離を減少させる段階は、前記プリフェッチ距離を1つのキー分減少させる
段階を含むことを特徴とする請求項3に記載のプリフェッチ動作の調整方法。
【請求項5】
前記プリフェッチ距離を増加させる段階は、前記プリフェッチ距離を指数関数的に増加させる
段階を含むこと特徴とする請求項1に記載のプリフェッチ動作の調整方法。
【請求項6】
前記プリフェッチ先読みバッファがオーバーフローしたことを
判定する段階と、
前記プリフェッチ先読みバッファがオーバーフローしたことを判定した場合、追加の後続プリフェッチトリガーキーに対応するデータがキャッシュされたことを示すように前記追加の後続プリフェッチトリガーキーのキャッシュされたフラグを変更し、前記追加の後続プリフェッチトリガーキーに対応する
データをキー値データベースのキャッシュに挿入する段階と、を更に有することを特徴とする請求項1に記載のプリフェッチ動作の調整方法。
【請求項7】
前記後続プリフェッチトリガーキーが
プリフェッチ動作候補である各々のキーを追跡するための、仮想キャッシュとして動作するシミュレーションキャッシュに存在すると
判定する段階と、
前記後続プリフェッチトリガーキーが前記シミュレーションキャッシュに存在すると判定した場合、プリフェッチ動作を再初期化する段階と、を更に有することを特徴とする請求項6に記載のプリフェッチ動作の調整方法。
【請求項8】
記憶装置からプリフェッチ先読みバッファにデータを転送するためのプリフェッチ動作の管理システムであって、
前記管理システムは、
プリフェッチ距離を設定し、
プリフェッチトリガーキーにアクセスし、
目標キーが前記プリフェッチトリガーキーから前記プリフェッチ距離
の外にある
と判定し、
目標キーが前記プリフェッチトリガーキーから前記プリフェッチ距離の外にあると判定した場合、前記プリフェッチ距離を増加させ、
プリフェッチ先読みバッファ
から後続プリフェッチトリガーキーの後続目標キーを正しくフェッチするように構成されることを特徴とするプリフェッチ動作の管理システム。
【請求項9】
追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと
判定し、
追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと判定した場合、前記追加の後続プリフェッチトリガーキーの追加の後続目標キーに対するプリフェッチ動作を省略するように更に構成されることを特徴とする請求項8に記載のプリフェッチ動作の管理システム。
【請求項10】
追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと判定した場合、前記プリフェッチ距離を減少させるように更に構成されることを特徴とする請求項9に記載のプリフェッチ動作の管理システム。
【請求項11】
前記プリフェッチ距離を減少させる場合、前記プリフェッチ距離を1つのキー分減少させるように構成されることを特徴とする請求項10に記載のプリフェッチ動作の管理システム。
【請求項12】
前記プリフェッチ距離を増加させる場合、前記プリフェッチ距離を指数関数的に増加させるように構成されることを特徴とする請求項8に記載のプリフェッチ動作の管理システム。
【請求項13】
前記管理システムは、
前記プリフェッチ先読みバッファがオーバーフローしたことを
判定し、
前記プリフェッチ先読みバッファがオーバーフローしたことを判定した場合、追加の後続プリフェッチトリガーキーに対応するデータがキャッシュされたことを示すように前記追加の後続プリフェッチトリガーキーのキャッシュされたフラグを変更し、前記追加の後続プリフェッチトリガーキーに対応する
データをキー値データベースのキャッシュに挿入するように更に構成されることを特徴とする請求項8に記載のプリフェッチ動作の管理システム。
【請求項14】
前記管理システムは、
前記後続プリフェッチトリガーキーが
プリフェッチ動作候補である各々のキーを追跡するための、仮想キャッシュとして動作するシミュレーションキャッシュに存在すると
判定し、
前記後続プリフェッチトリガーキーが前記シミュレーションキャッシュに存在すると判定した場合、プリフェッチ動作を再初期化するように構成されることを特徴とする請求項13に記載のプリフェッチ動作の管理システム。
【請求項15】
記憶装置からプリフェッチ先読みバッファにデータを転送するためのプリフェッチ動作の管理システム上に実装された非一時的なコンピュータ読み取り可能な記録媒体であって、
前記非一時的なコンピュータ読み取り可能な記録媒体は、プロセッサ上で実行される際に、プリフェッチ動作の調整方法を実行させるコンピュータコードを有し、
前記方法は、
プリフェッチ距離を設定する段階と、
プリフェッチトリガーキーにアクセスする段階と、
目標キーが前記プリフェッチトリガーキーから前記プリフェッチ距離
の外にある
と判定する段階と、
目標キーが前記プリフェッチトリガーキーから前記プリフェッチ距離の外にあると判定した場合、前記プリフェッチ距離を増加させる段階と、
プリフェッチ先読みバッファ
から後続プリフェッチトリガーキーの後続目標キーを正しくフェッチする段階と、を有することを特徴とする非一時的なコンピュータ読み取り可能な記録媒体。
【請求項16】
前記方法は、
追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと
判定する段階と、
追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと判定した場合、前記追加の後続プリフェッチトリガーキーの追加の後続目標キーに対するプリフェッチ動作を省略する段階と、を更に
有することを特徴とする請求項15に記載の非一時的なコンピュータ読み取り可能な記録媒体。
【請求項17】
前記方法は、
追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと判定した場合、前記プリフェッチ距離を減少させる段階を更に
有することを特徴とする請求項16に記載の非一時的なコンピュータ読み取り可能な記録媒体。
【請求項18】
前記
プリフェッチ距離を増加させる段階は、前記プリフェッチ距離を指数関数的に増加させる段階
を含むことを特徴とする請求項15に記載の非一時的なコンピュータ読み取り可能な記録媒体。
【請求項19】
前記方法は、
前記プリフェッチ先読みバッファがオーバーフローしたことを
判定する段階と、
前記プリフェッチ先読みバッファがオーバーフローしたことを判定した場合、追加の後続プリフェッチトリガーキーに対応するデータがキャッシュされたことを示すように前記追加の後続プリフェッチトリガーキーのキャッシュされたフラグを変更し、前記追加の後続プリフェッチトリガーキーに対応する
データをキー値データベースのキャッシュに挿入する段階と、を更に
有することを特徴とする請求項15に記載の非一時的なコンピュータ読み取り可能な記録媒体。
【請求項20】
前記方法は、
前記後続プリフェッチトリガーキーが
プリフェッチ動作候補である各々のキーを追跡するための、仮想キャッシュとして動作するシミュレーションキャッシュに存在すると
判定する段階と、
前記後続プリフェッチトリガーキーが前記シミュレーションキャッシュに存在すると判定した場合、プリフェッチ動作を再初期化する段階と、を更に
有することを特徴とする請求項19に記載の非一時的なコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にプリフェッチ(PREFETCHING)動作の調整方法及びその管理システムに関し、より詳細には、記憶装置におけるプリフェッチ動作に関するデータ格納及びデータ検索の際の調整方法及びその管理システムに関する。
【背景技術】
【0002】
プリフェッチは、データをメインメモリ(例えば、キー値デバイス(Key-Value device:KV device))から一時的な記憶装置(例えば、キャッシュメモリ)にデータを転送し、データを後で使用できるように準備する過程をいう。データは、一般にメインメモリでよりも一時的メモリで更に速くアクセスされるため、プリフェッチが使用される。即ち、プリフェッチは、比較的直ぐに必要になると予想される結果を有するフェッチ(Fetch)動作を開始することで、フェッチ動作を加速化するのに使用される。
【0003】
格納システムにおけるプリフェッチ動作は、増加又は減少したアドレッシングでデータの読み取り、処理、及び書き込みを行うデータへのシーケンシャルアクセスパターンを増加させるのに有用である。例えば、KVSSD(Key-Value Solid State Drive)を使用して実行されるシーケンシャルアクセスは、プリフェッチ動作を使用して向上する。しかし、与えられた格納システムへの入/出力パターン(Input/Output pattern:I/O pattern)を考慮することなくプリフェッチ動作を実行すると(例えば、入/出力パターンがシーケンシャルかランダムかを考慮することなくプリフェッチ動作を実行する場合)、プリフェッチ動作は、システムに負担をかけるか又は入/出力帯域幅を無駄にして、システム性能に悪影響を及ぼす。例えば、プリフェッチ要求そのものが入/出力の負担をシステムにかける。
【0004】
上記背景技術は、本発明の背景に対する理解を助けるためのものであるだけであり、従来技術ではない内容を含むこともある。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、データ格納及びデータ検索が改善されたプリフェッチ動作の調整方法及びその管理システムを提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するためになされた本発明の一態様によるプリフェッチ動作の調整方法は、プリフェッチ距離を設定する段階と、プリフェッチトリガーキーにアクセスする段階と、前記プリフェッチトリガーキーから前記プリフェッチ距離外にある目標キーを設定する段階と、前記プリフェッチ距離を増加させる段階と、プリフェッチ先読みバッファからの後続プリフェッチトリガーキーの後続目標キーを正しくフェッチする段階と、を有する。
【0008】
前記プリフェッチ動作の調整方法は、追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと決定する段階と、前記追加の後続プリフェッチトリガーキーの追加の後続目標キーに対するプリフェッチ動作を省略する段階と、を更に有し得る。
前記プリフェッチ動作の調整方法は、プリフェッチ距離を減少させる段階を更に有し得る。
前記プリフェッチ距離を減少させる段階は、前記プリフェッチ距離を1つのキー分減少させ得る。
前記プリフェッチ距離を増加させる段階は、前記プリフェッチ距離を指数関数的に増加させ得る。
前記プリフェッチ動作の調整方法は、前記プリフェッチ先読みバッファがオーバーフローしたことを確認する段階と、追加の後続プリフェッチトリガーキーに対応するエントリをキー値データベースのキャッシュに挿入する段階と、を更に有し得る。
前記プリフェッチ動作の調整方法は、シミュレーションキャッシュに前記後続プリフェッチトリガーキーが存在すると決定する段階と、プリフェッチ動作を再初期化する段階とを、更に有し得る。
【0009】
上記目的を達成するためになされた本発明の一態様による記憶装置からプリフェッチ先読みバッファにデータを転送するためのプリフェッチ動作の管理システムは、プリフェッチ距離を設定し、プリフェッチトリガーキーにアクセスし、前記プリフェッチトリガーキーから前記プリフェッチ距離外にある目標キーを設定し、前記プリフェッチ距離を増加させ、プリフェッチ先読みバッファからの後続プリフェッチトリガーキーの後続目標キーを正しくフェッチするように構成される。
【0010】
前記プリフェッチ動作の管理システムは、追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと決定し、前記追加の後続プリフェッチトリガーキーの追加の後続目標キーに対するプリフェッチ動作を省略するように更に構成され得る。
前記プリフェッチ動作の管理システムは、前記プリフェッチ距離を減少させるように更に構成され得る。
前記プリフェッチ距離を減少させる場合、前記プリフェッチ距離を1つのキー分減少させるように構成され得る。
前記プリフェッチ距離を増加させる場合、前記プリフェッチ距離を指数関数的に増加させるように構成され得る。
前記管理システムは、前記プリフェッチ先読みバッファがオーバーフローしたことを確認し、追加の後続プリフェッチトリガーキーに対応するエントリをキー値データベースのキャッシュに挿入するように更に構成され得る。
前記管理システムは、シミュレーションキャッシュに前記後続プリフェッチトリガーキーが存在すると決定し、プリフェッチ動作を再初期化するように構成され得る。
【0011】
上記目的を達成するためになされた本発明の一態様による記憶装置からプリフェッチ先読みバッファにデータを転送するためのプリフェッチ動作の管理システム上に実装された非一時的なコンピュータ読み取り可能な記録媒体は、プロセッサ上で実行される際に、プリフェッチ動作の調整方法を実行させるコンピュータコードを有し、前記方法は、プリフェッチ距離を設定する段階と、プリフェッチトリガーキーにアクセスする段階と、前記プリフェッチトリガーキーから前記プリフェッチ距離外にある目標キーを設定する段階と、前記プリフェッチ距離を増加させる段階と、プリフェッチ先読みバッファからの後続プリフェッチトリガーキーの後続目標キーを正しくフェッチする段階と、を有する。
【0012】
前記コンピュータコードは、前記プロセッサ上で実行される際に、追加の後続プリフェッチトリガーキーが前記プリフェッチ先読みバッファにないと決定する段階と、前記追加の後続プリフェッチトリガーキーの追加の後続目標キーに対するプリフェッチ動作を省略する段階と、を更に実行させ得る。
前記コンピュータコードは、前記プロセッサ上で実行される際に、前記プリフェッチ距離を減少させる段階を更に実行させ得る。
前記コンピュータコードは、前記プロセッサ上で実行される際に、前記プリフェッチ距離を指数関数的に増加させる段階を実行させるように構成され得る。
前記コンピュータコードは、前記プロセッサ上で実行される際に、前記プリフェッチ先読みバッファがオーバーフローしたことを確認する段階と、追加の後続プリフェッチトリガーキーに対応するエントリをキー値データベースのキャッシュに挿入する段階と、を更に実行させ得る。
前記コンピュータコードは、前記プロセッサ上で実行される際に、シミュレーションキャッシュに前記後続プリフェッチトリガーキーが存在すると決定する段階と、プリフェッチ動作を再初期化する段階と、を更に実行させ得る。
【発明の効果】
【0013】
本発明によれば、プリフェッチメカニズムを提供することで、データ格納及び検索を改善することができる。
また、プリフェッチ動作の結果により対応する負担がシステムに加わる度合い及び/又はプリフェッチ動作の効率性に基づいて活動性が調整される。
【図面の簡単な説明】
【0014】
【
図1】本発明の一実施形態による性能認識プリフェッチ及びキーアクセスが可能なシステムを示すブロック図である。
【
図2A】本発明の一実施形態によるプリフェッチ距離を増加、維持、及び減少させる方法を示すブロック図である。
【
図2B】本発明の一実施形態によるプリフェッチ距離を増加、維持、及び減少させる方法を示すブロック図である。
【
図2C】本発明の一実施形態によるプリフェッチ距離を増加、維持、及び減少させる方法を示すブロック図である。
【
図3】本発明の一実施形態によるデータプリフェッチ方法を示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。しかし、説明する実施形態は、様々な異なる形態で実現され、本明細書で説明する実施形態に限定されるものではない。むしろ、実施形態は、例示として提供されて本開示が徹底且つ完全なものになり、本発明の態様及び特徴を当業者に完全に伝えられるであろう。従って、当業者が態様及び特徴を理解するのに必要としないプロセス、要素、及び技術は説明しない。
【0016】
特に記載がない限り、類似する参照番号は、図面及び記載された説明全体に亘って同一の要素を表すため、その説明は繰り返さない。また、説明に関連のない部分は、実施形態の説明を明確にするために示さないこともある。図面において、要素、層、及び領域の相対的な大きさは、実施形態の説明を明確にするために誇張することもある。
【0017】
本明細書において、様々な実施形態について完全に理解できるように様々な特定の詳細事項が説明を目的として提示されている。しかし、様々な実施形態は、特定の詳細事項がないか又は1つ以上の等価の構成で実施されることが明らかである。或いは、公知の構造及び装置は、様々な実施形態を不必要に曖昧にならないようにブロック図の形態で示す。
【0018】
また、「第1」、「第2」、「第3」などの用語は、本明細書で様々な要素、構成要素、領域、層、及び/又はセクション、これらの要素、構成要素、領域、及び/又はセクションションを説明するために使用されるが、これらの用語に限定するものではない。これらの用語は、1つの要素、構成要素、領域、層、及び/又はセクションを他の要素、構成要素、領域、層、及び/又はセクションと区別するために使用される。従って、後述する第1要素、構成要素、領域、層、及び/又はセクションは、本発明の思想や範囲を逸脱することなく、第2要素、構成要素、領域、層、及び/又はセクションとし得る。
【0019】
本明細書で使用する用語は、単に特定の実施形態を説明するためのものであり、本発明を限定するものではない。本明細書で使用する単数の表現は、文脈上明確に異なる意味を持たない限り、複数の表現を含む。本明細書において、「含む」又は「有する」という用語は、特徴、数字、段階、動作、構造的要素、部分、又はそれらの組み合わせが存在することを示し、1つ以上の他の特徴、数字、段階、動作、構造的要素、部分、又はこれらの組み合わせの追加の存在や確率を排除しないことを理解すべきである。本明細書で使用する「及び/又は」という用語は、1つ以上の関連項目の任意の且つ全ての組み合わせを含む。
【0020】
本明細書で使用する「実質的に」、「約」、「およそ」、及びこれと似た用語は、程度ではなく、近似値として使用し、当業者が認識する測定値又は計算値の固有偏差を説明するためのものである。本明細書で使用する「約」又は「およそ」という用語は、言及する値及び特定の数量の測定に関する誤差(即ち、測定システムの限界)を考慮して、当業者によって決定される特定値の許容可能な偏差範囲内の値を含む。例えば、「約」は、言及する値の1つ以上の標準偏差以内又は±30%、20%、10%、5%以内を意味する。更に、本発明の実施形態を説明する際に「してもよい」は「本発明の1つ以上の実施形態」を指す。
【0021】
特定の実施形態を異なって実施する場合、特定のプロセスの順序は、説明する順序と異なって行ってもよい。例えば、連続して説明する2つのプロセスは、実質的に同時に行ってもよく、又は説明する順序と逆の順序で行ってもよい。
【0022】
本発明の実施形態による電子又は電気装置及び/又は他の関連装置又は構成要素は、任意の適切なハードウェア、ファームウェア(例えば、応用-特定用途向け集積回路)、ソフトウェア又はハードウェア、ファームウェア及びソフトウェアの組み合わせを利用して実装される。例えば、装置の様々な構成要素は、1つの集積回路(Integrated Circuit:IC)チップ又は別のICチップに形成される。装置の様々な構成要素は、フレキシブルプリント回路フィルム、テープキャリアパッケージ(Tape Carrier Package:TCP)、プリント回路基板(Printed Circuit Board:PCB)上に実装されるか、又は1つの基板上に形成される。
【0023】
更に、装置の様々な構成要素は、1つ以上のプロセッサ又はコンピューティング装置上で実行され、コンピュータプログラム命令を実行し、本明細書で説明する様々な機能を行うために他のシステムの構成要素と相互作用するプロセス又はスレッド(thread)である。コンピュータプログラム命令は、ランダムアクセスメモリ(Random Access Memory:RAM)などの標準メモリ装置を使用してコンピューティング装置内に実装されるメモリに格納される。コンピュータプログラム命令は、CD-ROMやフラッシュドライブなどの非一時的なコンピュータ読み取り可能な記録媒体に格納される。また、当業者は、本発明による実施形態の思想及び範囲を逸脱することなく、様々なコンピューティング装置の機能が単一のコンピューティング装置に結合若しくは統合されるか、又は特定のコンピューティング装置の機能が1つ以上の他のコンピューティング装置に分散されることを認識すべきである。
【0024】
特に定義しない限り、本明細書で使用する全ての用語(技術的用語及び科学的用語を含む)は、本発明が属する技術分野の通常の知識を有する者が一般に理解するものと同じ意味を有する。また、通常使用される辞書に定義されている用語は、本明細書で明らかに定義しない限り、関連技術及び/又は本明細書の文脈における意味と一致する意味を有すると解釈すべきであり、理想的又は過度に形式的な意味に解釈すべきではない。
【0025】
一部の先読み(read-ahead)メカニズムは、先読み状態を管理しない。代わりに、先読み動作は、ミスしたページ又は既読として示されたページ(例えば、「PG_先読み」(「PG_readahead」)として示されたページ)にアクセスする場合にのみトリガーされる。従って、先読みメカニズムは、システムの輻輳が検出されるまで(例えば、PG_先読みインジケーターの使用が検出されるまで)、プリフェッチウィンドウのサイズを増加させるためにプリフェッチ距離を単に増加させる。また、先読みメカニズムは、プリフェッチ先読みバッファ又は他の場所でページが検索されるか否かとは無関係である。先読みメカニズムは、全ての新たな非同期先読みトリガーを単に先読み(又は、PG_先読み)インジケーターに示す。
【0026】
従って、プリフェッチ制御メカニズムを使用して入/出力アクセスパターンを自動的に識別することによって、システム動作にやや利点がある。
【0027】
KVSSD等のキー値デバイスは、ホストサーバ又はストレージアレイコントローラによって要求されたデータブロックの読み取り及び書き込みとは対照的に、デバイス上にオブジェクト様の(object-like)格納方式を実現する。
【0028】
キー値デバイスは、オブジェクトキー値ペアとキー値デバイスの基本ブロックとの間で有効に変換するオブジェクト変換層(Object Translation Layer:OTL)を有する。また、VSSDは、デバイスレベルでキー値インタフェースを提供し、性能の向上及びストレージ管理の単純化を提供する。
【0029】
即ち、これは、高性能スケーリング、変換プロセッサ(例えば、オブジェクトデータ及びブロックデータ間の変換)の単純化及び駆動能力の拡張を可能にする。KVSSDのファームウェア内のキー値ストアロジックを統合することで、KVSSDはホストソフトウェアとの演算を減らし、アプリケーションの直接データ要求に応答する。KVSSDは、処理能力を提供するために、フラッシュ変換層(Flash Translation Layer:FTL)ソフトウェアを使用して拡張することができるSSD(Solid State Drive)ハードウェアを更に使用する。
【0030】
上述のように、プリフェッチは、比較的速く必要になると予想されるフェッチ動作を開始することにより、フェッチ動作を加速化するために使用される。しかし、通常、プリフェッチは、どのようなデータが必要かを知る前に発生する。従って、最終的に使用しないデータをプリフェッチすることにより、時間及びリソースを浪費する危険がある。即ち、一時的な記憶装置からデータに迅速にアクセスするために得られる利点は、メインメモリから一時的な記憶装置の転送データの多くが一時的な記憶装置によってアクセスされない場合に関連するシステムオーバーヘッドによって相殺される。従って、以下に説明するように、プリフェッチポリシーは、比較的近い時点に一時的な記憶装置から検索されることが予想されるデータのみをプリフェッチすることを追求する。
【0031】
本発明による実施形態は、プリフェッチ動作が不必要にシステムの負担を増やす場合にプリフェッチ動作を減らし、プリフェッチ動作の範囲が有効ではない場合にプリフェッチ動作を増やすことによって、改善されたデータ格納及び検索方法を提供する。即ち、本発明の実施形態は、以下に説明するように、データプリフェッチ距離に対応するデータの量をプリフェッチするために、プリフェッチ距離を設定し(例えば、繰り返し)、プリフェッチ距離があまり大きくないかについて又は逆に有用なサイズよりも大きいかについてシステム性能を分析し、分析結果に基づいてプリフェッチ距離を調整する段階を含む性能認識プリフェッチ技術に関する。
【0032】
性能認識プリフェッチ技術は、キー値システムのプリフェッチデータをプリフェッチ動作中に発生する入/出力帯域幅又はシステムリソースに関する問題を解決する。
【0033】
このようなプリフェッチ動作に関する問題は、1つ以上のプリフェッチグループウィンドウのプリフェッチ距離を適応させることにより解決され、プリフェッチ要求バッファが満たされてデータが転送されなくても、プリフェッチ動作候補である各々のキーを追跡するシミュレーションキャッシュを実現することで解決される。即ち、シミュレーションキャッシュは、「実際」にプリフェッチ要求を転送することなく使用され、入/出力要求の数を減少させる。
【0034】
図1は、本発明の一実施形態による性能認識プリフェッチ及びキーアクセスが可能なシステムを示すブロック図であり、
図2A~
図2Cは、本発明の一実施形態によるプリフェッチ距離を増加、維持、及び減少させる方法を示すブロック図である。
【0035】
図1、
図2A~
図2Cを参照すると、プリフェッチ距離210(又は、プリフェッチウィンドウサイズ)は1つのプリフェッチ動作でどのくらいのデータがプリフェッチされるか決定し、プリフェッチ距離210が大きいほど、プリフェッチ動作中にキャッシュメモリに配置するためにストレージから検索されるデータの量が大きくなる。プリフェッチ距離210のサイズは、システム性能(例えば、後述するキー値デバイス160、キー値ドライバ170、及びキャッシュメモリ130を含むキー値データベース180を有するキー値システム100のシステム性能)と、プリフェッチヒット率(例えば、プリフェッチされたデータから目標データが見つかる決定率及びプリフェッチされたデータの量は、プリフェッチ距離210によって決定)との組み合わせを考慮して調整する。
【0036】
例えば、通常、プリフェッチされたデータのうちから目標データが見つからない場合、プリフェッチ距離210は増加し(例えば、指数関数的、直線的、増分的、及びその他の方法で増加)、従って後続プリフェッチ動作でプリフェッチされるデータの量が増加する。しかし、
図2Cに示すように、システム性能が低下し始めるか又はプリフェッチ動作に応じて所望の利点が得られない場合、プリフェッチ距離210が減少するか又はプリフェッチ動作が省略される。
【0037】
一部の実施形態において、キー値システム100は、有効なプリフェッチ距離210になると予想されることを最初に決定する。即ち、キー値システム100は、どのくらい先にプリフェッチが行われるかを決定する(例えば、プリフェッチ距離210は、512バイトになる)。説明を簡略にするため、後述する実施形態では、比較的小さなプリフェッチ距離210(例えば、1つのキー~8つのキーのプリフェッチ距離210)を使用する。
【0038】
キー値システム100は、キー値システム100がプリフェッチ距離210内のプリフェッチトリガーキー220に対応する読み取り値(read value)(又は、読み取りデータ(read data))をフェッチすることが可能な場合、プリフェッチ距離210が効率的であると決定する(例えば、キー値システム100のキー値データベース180のキャッシュ130から、又はキー値システム100のキー値ドライバ170のプリフェッチ先読みバッファ150(又は、プリフェッチバッファ)からの読み取り値をフェッチすることが可能であり、キャッシュ130は価値(value)キャッシュである)。
【0039】
本明細書において、プリフェッチトリガーキー220は、与えられたプリフェッチウィンドウの先頭にあり、プリフェッチウィンドウのサイズは、プリフェッチ距離210と同一である。プリフェッチトリガーキー220は、読み取り値が正しくプリフェッチされるか否かに応じて、プリフェッチ距離210を増加させるためのトリガーとして動作する。
【0040】
プリフェッチ距離210が非効率的と決定された場合(例えば、プリフェッチトリガーキー220に対応する読み取り値がプリフェッチ距離210内に無い場合)、キー値システム100は、プリフェッチ距離210が効率的と決定されるまで、プリフェッチ距離210を増加させる。
【0041】
従って、プリフェッチ先読みバッファ150から目標データがフェッチされると、キー値システム100は、「ヒット」が発生したと決定する。その際、キー値システム100は、プリフェッチ距離210を「検索-有効」プリフェッチ距離として示す。その後、後にアクセスされる各目標キーに対するヒットが発生する限り、プリフェッチ距離210は、「検索-有効」プリフェッチ距離で維持される。しかし、プリフェッチトリガーキー220に対応する目標データがプリフェッチ距離210を使用するプリフェッチ先読みバッファ150からフェッチすることができない場合、キー値システム100は、「ミス」が発生したと決定し、プリフェッチ距離210を増加させる。
【0042】
その後、キー値システム100は、任意の後続アクセスキーに対する目標キーをプリフェッチするために唯1つの先読み要求を転送する。目標キーとアクセスキーとの距離はプリフェッチ距離210に等しい。先読み要求は、プリフェッチされたページが比較的直ぐに必要になると予想して(例えば、キー値システム100に接続されたユーザアプリケーションによって必要な場合)、バッファ(例えば、プリフェッチ先読みバッファ150)で複数のページを非同期にプリフェッチする入/出力要求である。
【0043】
図2Aを参照すると、本例示において、第1キー(例えば、
図2Aに「1」と示される第1キー)は、プリフェッチ動作を開始するために最初にアクセスされる(動作(1)参照)。キー値システム100は、第1キーに対応する読み取り値がキャッシュ130に存在するか否かを判断するために、第1キーに関する「キャッシュされた」フラグを検査する。
【0044】
第1キーがキャッシュ130に存在しない場合、キー値システム100は、要求されたキーである第1キーに対応する要求がキー値データベース180のプリフェッチ要求バッファ110(又は、プリフェッチ要求キュー(queue))に存在するか否かを確認するために、「プリフェッチされた」フラグを検査する。
【0045】
第1キーがデータベース180のキャッシュ130及びプリフェッチ要求バッファ110に存在しない場合、キー値システム100は、要求されたキーである第1キーに対する読み取り要求(例えば、「読み取り(又は、取得)要求」)を同期入/出力経路195を介して提出する。同期入/出力経路195は、入/出力経路195に対応するキー値デバイス160(例えば、KVSSD装置)とデータベース180との間にある。
【0046】
次に、第1キーに対応する「読み取り値」がキー値デバイス160からキャッシュ130に挿入され、第1キーの「キャッシュされた」フラグは、第1キーに対応するデータがキャッシュされたことを示すように変更される。
【0047】
その後、プリフェッチ要求は、アクセスされたキーの直前のキー及び直後のキー(例えば、第1キーの直前のキー及び直後のキー)の各々に提出される。即ち、プリフェッチ要求が正方向及び逆方向に提出される。従って、本例示において、第0キー及び第2キーに対してプリフェッチ要求が提出され(動作(2)参照)、第0キー及び第2キーは、プリフェッチトリガーキー220として扱われる。
【0048】
第0キー及び第2キーに対応するデータに対する要求は、プリフェッチ要求バッファ110に入力され、第0キー及び第2キーは、関連する「プリフェッチされた」フラグによってプリフェッチされたとしてフラグが立てられる(例えば、第0キー及び第2キーに対するプリフェッチ要求が提出された後、又は第1キーに対する読み取り(又は取得)要求が提出される前)。次に、第1キー及び第2キーに対応するデータに対する要求は、非同期入/出力経路190(例えば、キー値ドライバ170とキー値データベース180との非同期入/出力経路190)を介して要求キュー140に進む。要求キュー140は、非同期要求キューである。
【0049】
次に、第1キー値のコピーは、キャッシュ130からユーザデバイス(又は、ユーザアプリケーション)に戻される。
【0050】
次に、キーがアクセスされる方向に沿って(例えば、ユーザアプリケーションによってアクセスされる方向)第0キー(逆方向)又は第2キー(正方向)がアクセスされる。本例示において、第2キーは、第2キーに対する「読み取り(又は取得)要求」を転送することによりアクセスされる(動作(3)参照)。キー値システム100は、第2キーがキャッシュ130にキャッシュされるか、又はプリフェッチ要求バッファ110にプリフェッチされるかを決定するために、第2キーに関するフラグ(即ち、「キャッシュされたフラグ」及び「プリフェッチされたフラグ」)を検査する。
【0051】
第2キーがプリフェッチされて第2キーに関する要求がプリフェッチ要求バッファ110に位置するため、第2キーに対するキー値デバイス160とキー値データベース180との間の同期入/出力経路195を介して読み取り(又は、取得)要求がキー値デバイス160に提出される。
【0052】
次に、キー値ドライバ170は、要求キュー140及びプリフェッチ先読みバッファ150の双方を検査して、第2キーに対応する要求が存在するか否かを判断する。第2キーが要求キュー140に示されているため、キー値ドライバ170は、保留中の要求キュー140からの第2キーに対応する非同期要求を取り消し、代わりに第2キーに対応する同期要求を同期入/出力経路195を介して提出する。
【0053】
キー値ドライバ170は、第2キーに関する読み取り値を戻す。第2キーがキャッシュ130になかったため、第2キーの読み取り値は、例えば先読みミス(「read-ahead miss」)のフラグと共に戻される。例えば、第2キーの読み取り値は、同期入/出力経路195を介して戻される。次に、第2キーは、キー値デバイス160からキャッシュ130に移動される。
【0054】
従って、キー値データベース180は、要求されたキーである第2キーがプリフェッチされたものの、先読み要求が失敗したことを認識する。そのため、プリフェッチ距離210は、増加し(例えば、本例示では、2つのキーのプリフェッチ距離210まで。但し、プリフェッチ距離210の増加の度合いは制限されず、他の実施形態では異なる)、プリフェッチキーに対して1つ以上のフラグ(例えば、キーがプリフェッチトリガーキーであるか否かを示すフラグ、及び/又はキーが正方向又は逆方向に読み取られていることを示すフラグ)が設定される。
【0055】
プリフェッチ距離210が2つのキーに増加した状態で、第3キー及び第4キーはプリフェッチされ、第3キーはプリフェッチトリガーキー220(即ち、動作(4)を参照すると、プリフェッチ距離210に対応する2つのキーの内の最初のキー)になる。
【0056】
第3キー及び第4キーに対応する要求は、プリフェッチ要求バッファ110に配置され、続いて非同期入/出力経路190(例えば、プリフェッチ要求バッファ110と要求キュー140との間)を介して提出され、要求キュー140に配置される。次に、第2キーと同様に、キー値ドライバ170は、第3キーに対する読み取り(又は取得)要求を同期入/出力経路195を介して提出し、要求キュー140からの第3キーを取り消す。
【0057】
その後、第3キーに関する値のコピーは、「先読みミス」のフラグと共にキー値デバイス160から同期入/出力経路195を介してキャッシュ130に提出される(動作(5)参照)。上述と同様に、第3キーは、プリフェッチトリガーキー220であるため、「先読みミス」のフラグによりプリフェッチ距離210が再び増加する。本例示において、プリフェッチ距離210は、4つのキーに増加する(例えば、プリフェッチ距離210は2倍になる)。しかし、プリフェッチ距離210が増加する度合いは制限されず、他の例示では更に(例えば、徐々に)増加することに留意すべきである。
【0058】
本例示において、第5キー、第6キー、及び第7キーは、その後プリフェッチされる。第5キーは、プリフェッチ距離210に対応する三つのキーの内の最初のキーであるため、第5キーはプリフェッチトリガーキー220である(動作(6)参照)。
【0059】
第4キーはアクセスされ、これにより、第3キーがアクセスされたときからプリフェッチ先読みバッファ150に第4キーが位置してヒットが発生する(動作(7)参照)。即ち、読み取り(取得)要求は同期入/出力経路195を介して提出され、キー値ドライバ170が要求キュー140及びプリフェッチ先読みバッファ150の双方を確認することで、第4キーはプリフェッチ先読みバッファ150で識別されてヒットが発生する。
【0060】
その後、非同期要求は、キー値ドライバ170によって非同期入/出力経路190を介してキー値デバイス160に提出され、キー値デバイス160から第0キー、第4キー、第5キー、第6キー、及び第7キーが検索されて、非同期入/出力経路190を介してプリフェッチ先読みバッファ150に配置される。
【0061】
次に、第4キーに関する値は、「先読みヒット」のフラグと共にユーザデバイス(又はユーザアプリケーション)に戻される。その後、第4キーは、プリフェッチ先読みバッファ150から同期入/出力経路195を介してキャッシュ130に移動し、プリフェッチ先読みバッファ150から除去される。第4キーは、キャッシュされたものとしてフラグが立てられる。
【0062】
図2Bを参照すると、第4キーにアクセスする間に値に関する「先読みヒット」が決定され、また第4キーはプリフェッチトリガーキー220ではないため、1つの追加のキーである第8キーが4つのキーと同じプリフェッチ距離210でプリフェッチされる(動作(8)参照)。即ち、第8キーのプリフェッチは、第8キーが非同期入/出力経路190を介してプリフェッチ要求バッファ110から要求キュー140に伝達され、要求された第8キーのフラグがプリフェッチ目標(例えば、プリフェッチ距離210を増加させるためのトリガーフラグは、これにより第8キーをプリフェッチトリガーキー220として示す)に継承されるように発生する。
【0063】
続いて、第5キーに対して読み取り(取得)要求が提出される(動作(9)参照)。第9キーは、第8キーと同様に、プリフェッチ要求バッファ110に提出された後、非同期入/出力経路190を介して要求キュー140に提出される。従って、第5キーがプリフェッチ先読みバッファ150に位置しないため、第5キーに関する「先読みミス」のフラグは戻される。その後、第9キー、第10キー、第11キー、第12キー、及び第13キーがプリフェッチ要求バッファ110に配置されるようにプリフェッチされる(動作(10)参照)。
【0064】
プリフェッチ先読みバッファ150は、第5キーに対する読み取り(取得)要求により第5キーにアクセスする際に、第6キー、第7キー、及び第8キーで予め満たされているため、その後第6キー、第7キー、及び第8キーの各々に提出された読み取り(取得)要求に対応する第6キー、第7キー、及び第8キーのアクセスはヒットする(動作(11)参照)。第6キー、第7キー、及び第8キーの各々のアクセスがヒットしたことからプリフェッチ距離210は変更されず、第14キー、第15キー、及び第16キーは、プリフェッチ要求バッファ110に位置するようにプリフェッチされる(動作(12)参照)。
【0065】
図2Cを参照すると、第9キーは、プリフェッチトリガーキー220にアクセスされ、第5キーに対するアクセスの結果として第9キーがプリフェッチ先読みバッファ150に存在するため、ヒットが発生する(動作(13)参照)。プリフェッチ距離210は変更されず、その後単一キーである第17キーがプリフェッチされる(動作(14)参照)。
【0066】
次に、第10キー、第11キー、第12キー、第13キー、第14キー、第15キー、及び第16キーは順次にアクセスされ、キーは有効プリフェッチ距離210内にあるため(即ち、先読みバッファ150に位置する)、キーは全てヒットとして示される(動作(15)参照)。従って、第10キー、第11キー、第12キー、第13キー、第14キー、第15キー、及び第16キーの各々に対する読み取り(取得)要求の結果として、第18キー、第19キー、第20キー、第21キー、第22キー、第23キー、及び第24キー等の後続キーがプリフェッチ要求バッファ110に配置されるようにプリフェッチされる(動作(16)参照)。
【0067】
上述の例示において、プリフェッチ距離210は、増加率に応じて増加する。例えば、キー値システム100は、最初に2つの連続したキーをカバーするようにプリフェッチ距離210を設定する。次に、プリフェッチトリガーキー220がプリフェッチ先読みバッファ150から目標キーを検索できずにミスを示す場合、キー値システム100は、プリフェッチ距離210を2倍にして4つの連続キーをカバーする。そして、プリフェッチトリガーキー220がプリフェッチ先読みバッファ150から目標キーを再度検索できない場合、キー値システム100は、プリフェッチ距離210を2倍にして8つの連続キーをカバーする。但し、本発明の実施形態は、これに限定されない(例えば、プリフェッチ距離210は、線形的に増加する)。
【0068】
図2Cに示すように、目標キーが有効にフェッチされるようにプリフェッチ距離210が増加すると(即ち、キー値システム100が後続アクセスプリフェッチトリガーキー220に対する有効プリフェッチ距離210を見つけると)、キー値システム100は、「プリフェッチカウント(prefetching count)」を「1」に設定する。そして、プリフェッチ距離210は、暫くの間保たれる(例えば、目標キーである第17キー、第25キー、第33キー、及び第41キーのために)。
【0069】
しかし、
図2Cに示すように、他のシナリオにおいて、本発明の実施形態によるキー値システム100は、適切な場合にプリフェッチ距離210を減少させる。例えば、有効プリフェッチ距離210が設定され、プリフェッチトリガーキー220以外のキー(例えば、プリフェッチ距離210を調整した後、プリフェッチウィンドウの第1キー以外のキー)のアクセス後にバッファ150からキーに対する読み取りの試みが失敗した場合、キー値システム100は、キー値システム100の入/出力負荷を変更し、有効プリフェッチ距離210がキー値システム100に負担をかけることなくプリフェッチキーでプリフェッチ先読みバッファ150を満たすのに適するよりも大きいと決定する。従って、システムの入/出力負荷を低減するために、キー値システム100はキーに対するプリフェッチを省略し、後続キーのプリフェッチキーポインタはプリフェッチ距離210を減少させることによって(例えば、1つ以上のその前のプリフェッチ距離210を減少させることによって)変更される。
【0070】
図2Cに示す例示において、第46キーがアクセスされるが、プリフェッチミスを示し、キー値システム100のシステム入/出力状態が変更したことを示す(動作(17)参照)。その結果、キー値システム100は、プリフェッチ動作を中止し、次のキーアクセスまで全てのキーに対するプリフェッチを省略して、プリフェッチ距離210を減少させる(例えば、プリフェッチ距離210を8つのキーから7つのキーに減少させる(動作(18)参照))。
【0071】
プリフェッチ動作が中止されるため、第47キーがアクセスされると、プリフェッチ先読みバッファ150に第47キーが満たされた結果としてヒットが示され(動作(19)参照)、プリフェッチ動作が再開されて1つの追加のキーである第55キーがプリフェッチされる(動作(20)参照)。
【0072】
従って、有効プリフェッチ距離210を見つけた後、プリフェッチ先読みバッファ150からのフェッチが更に頻繁に失敗すると(例えば、ミス率が増加した場合)、キー値システム100は、プリフェッチ距離210が大きすぎると判断して潜在的にプリフェッチ先読みバッファ150のオーバーフローを引き起こす。その結果、キー値システム100は、キー値システム100が入/出力要求によって過負荷となったと判断し、キー値システム100に対する不要な負担を避けるためにプリフェッチ動作の中止を決定する。このような状況は、入/出力アクセスパターンがシーケンシャルアクセスパターンからランダムアクセスパターンに移動するように、アプリケーションの動作が変更する場合に発生する。即ち、入/出力パターンがランダムアクセスパターンに対応する際、通常プリフェッチ先読みバッファ150は満たされるか又はオーバーフローするまで満たされ続ける。
【0073】
本発明の実施形態によると、キー値システム100は、入/出力アクセスパターンが変化したか否かを判断するために、シミュレーションキャッシュ120(
図1参照、例えば、キャッシュ)(又は仮想シミュレーションキャッシュ)を使用する。その結果、キー値システム100は、プリフェッチ動作を開始し、仮想キャッシュとして動作するシミュレーションキャッシュ120を介してバッファを管理する。プリフェッチ先読みバッファ150にオーバーフローが発生すると、キー値システム100は、キー値デバイス160に対するプリフェッチ要求の転送を中止し、代わりにキーをシミュレーションキャッシュ120に挿入する。
【0074】
即ち、本発明の実施形態によるキー値システム100は、ランダムアクセスパターンの検出を効果的に行う。一般に、プリフェッチ動作はランダムアクセスパターンに有用ではないため、キー値システム100は、プリフェッチ要求バッファ110が満たされた場合、入/出力アクセスパターンをランダムと決定する。ランダムアクセスパターンが決定された場合、キー値システム100は、キャッシュ130内にないか又は先読みバッファ150内に位置しない新たにアクセスされたキーに対するプリフェッチを中止する。
【0075】
従って、適切な場合、キー値システム100は、物理的なプリフェッチ要求バッファ110の代わりにシミュレーションキャッシュ120を使用する。一部の実施形態において、シミュレーションキャッシュ120のサイズは、プリフェッチ要求バッファ110のサイズと等しい。しかし、プリフェッチ要求バッファ110とは異なり、シミュレーションキャッシュ120の使用は、キー値ドライバ170に実際的には要求を提出しない。更に、シミュレーションキャッシュ120が満たされた場合、キー値システム100は、プリフェッチ動作を中止する代わりに、最も古いキーを単に除去する。
【0076】
シミュレーションキャッシュ120を使用することにより、キー値システム100は、プリフェッチ要求バッファ110が満たされてキー値デバイス160にデータが提出されなくても、プリフェッチ演算候補である各キーに対して順次シミュレーションキャッシュ数値を昇順に生成し、それにより入/出力要求数は減少する。
【0077】
逆に、シーケンシャルアクセスパターンに対してプリフェッチ要求バッファ110でヒットが発生すると、キー値システム100のメカニズムは、ヒットキーを除去して新たなキーを挿入し、プリフェッチサイズが有効プリフェッチ距離210未満に保たれる。本明細書で説明するように、キャッシュされるか又はプリフェッチされない全ての新たなキーアクセスは、独自のプリフェッチ距離210を有する。従って、例えばスレッドが2つのシーケンシャルアクセスストリームを有する場合、各々のアクセスストリームは、独自のプリフェッチ距離210を有する。
【0078】
従って、プリフェッチ動作の中止後、プリフェッチ動作が再開される際に(例えば、入/出力パターンがランダムから順次に変更される際に)、その後ミスが発生すると、キー値システム100は、プリフェッチ先読みバッファ150の利用可能性を検査し、現在のキーのシミュレーション番号をシミュレーションキャッシュ120からプリフェッチ先読みバッファ150に挿入する。それにより、キー値システム100は、プリフェッチグループとプリフェッチ動作を再開する。
【0079】
即ち、シミュレーションキャッシュ120でプリフェッチヒットが発生すると(例えば、入/出力パターンがランダムから順次に変更される際に)、キー値システム100は、シミュレーションキャッシュ120の使用を中止し、プリフェッチ先読みバッファ150を使用して実際のプリフェッチ動作を再び開始するために、プリフェッチ要求バッファ110の最も古いキーを除去して新たにプリフェッチされたキーを挿入する。ヒットがシミュレーションキャッシュ120で発生したと決定されると、データがプリフェッチされた場合にプリフェッチ先読みバッファ150でヒットが発生したと推定される。その結果、キー値システム100がキーを読み取ってキーをシミュレーションキャッシュ120で見つけた場合、キー値システム100は、新たなシーケンシャルアクセスパターンが発生したと判断してプリフェッチ動作を再び開始する。
【0080】
プリフェッチ先読みバッファ150に利用可能な空間がない場合、キー値システム100は、単にシミュレーション番号をシミュレーションキャッシュ120のキーに設定する。プリフェッチトリガーキー220に関するプリフェッチミスが発生する場合、プリフェッチ距離210は再び増加する。
【0081】
上述の例示によると、プリフェッチ先読みバッファ150がオーバーフローするまで、通常キー値のシステムは、プリフェッチ動作を行い、プリフェッチ要求をキー値デバイス160に転送する。プリフェッチ先読みバッファ150がオーバーフローすると、キー値システム100は、入/出力パターンがランダムアクセスパターンに変更されたと決定し、その際キー値システム100への負担を軽減するために、プリフェッチ動作を非活性化する。
【0082】
キー値システム100がプリフェッチ先読みバッファ150に対するプリフェッチを中止すると、キー値システム100は、シミュレーションキャッシュ120を使用する間、プリフェッチ先読みバッファ150を使用する代わりにプリフェッチ先読みバッファ150への新たな要求を待つ。プリフェッチ動作の中止の間、シミュレーションキャッシュ120を使用する際に任意の新たな要求に対する空間を与えるために、キー値システム100は、シミュレーションキャッシュ120の最も古い要求を除去する。次に、シミュレーションキャッシュ120でヒットが発生すると、キー値システム100は、入/出力アクセスパターンがシーケンシャルパターンに再び戻ったと仮定して、プリフェッチ動作を再び開始する。
【0083】
本発明の実施形態による性能認識プリフェッチは、以下のように要約される。キー値システム100は、システム状態に基づいて先読み要求カウントを調整する。プリフェッチトリガーキー220に対する先読みミスはプリフェッチ距離210が小さすぎることを示し、キー値システム100は、より多くのプリフェッチされたキーを転送することによりプリフェッチ距離を増加させる。プリフェッチトリガーキー220に対する先読みヒットにより唯1つのプリフェッチ要求が転送される。非トリガーキー(即ち、プリフェッチトリガーキー220以外のキー)に対する先読みミスはキー値システム100が入/出力の混雑状態にあることを示し、キー値システム100は次のプリフェッチ要求を省略してプリフェッチ距離210を減少させる。プリフェッチ先読みバッファ150が満たされた場合、プリフェッチキーがシミュレーションキャッシュ120に追加され、キーがシミュレーションキャッシュ120で見つかって入/出力パターンを示した場合、キー値システム100はプリフェッチ動作を再開する。
【0084】
図3は、本発明の一実施形態によるデータプリフェッチ方法を示すフローチャートである。
【0085】
図3を参照すると、ステップS301において、本実施形態によるシステム(例えば、キー値システム100)は、プリフェッチ距離(例えば、プリフェッチ距離210)を設定する。ステップS302において、システムは、プリフェッチトリガーキー(例えば、プリフェッチトリガーキー220)にアクセスする。ステップS303において、システムは、プリフェッチ距離外にある目標キーを設定する。ステップS304において、システムは、プリフェッチ距離を増加させる。プリフェッチ距離は、指数関数的に増加する。
【0086】
ステップS305において、システムは、プリフェッチ先読みバッファ(例えば、プリフェッチ先読みバッファ150)からの後続プリフェッチトリガーキーの後続ターゲットキーを正しくフェッチする。
【0087】
ステップS306において、システムは、追加の後続プリフェッチトリガーキーがプリフェッチ先読みバッファにないと決定する。ステップS307において、システムは、追加の後続プリフェッチトリガーキーの追加の後続目標キーに対するプリフェッチ動作を省略する。
【0088】
ステップS308において、システムは、プリフェッチ距離を減少させる。プリフェッチ距離は、1つのキー分減少する。
【0089】
ステップS309において、システムは、プリフェッチ先読みバッファがオーバーフローしたことを確認する。ステップS310において、システムは、追加の後続プリフェッチキーに対応するエントリをシステム100に含まれるキー値データベース(例えば、
図1のキー値データベース180)のキャッシュ(例えば、
図1のキャッシュ130)に挿入する。
【0090】
ステップS311において、システムは、シミュレーションキャッシュに後続プリフェッチトリガーキーが存在すると決定する。ステップS312において、システムは、プリフェッチ動作を再初期化する。
【0091】
より包括的に、プリフェッチ距離が徐々に増加する性能認識プリフェッチ動作は、次の動作の内の一部が選択的であることに注目し、次の動作を実行することにより発生する。具体的に、プリフェッチトリガーキーを第1キーとしてアクセスすること、第1キーがキー値のデータベースのキャッシュにキャッシュされたか否かを判断すること、第1キーがキャッシュにキャッシュされていない場合、第1キーのための第1プリフェッチ要求がプリフェッチ要求バッファにあるか否かを判断すること、第1キーがキャッシュにキャッシュされずにプリフェッチ要求バッファにない場合、第1キーのための第1読み取り要求をキー値デバイスに提出すること、キー値デバイスからキャッシュに戻された第1キーの第1読み取り値を挿入すること、第1キーをキャッシュされたものとして示すこと、第1キーに隣接する第2キーに対する第2プリフェッチ要求を提出すること、プリフェッチ要求バッファ及び要求キューに第2プリフェッチ要求を配置すること、第1読み取り値をユーザアプリケーションに送信すること、第2キーにアクセスすること、要求キューにある第2プリフェッチ要求を決定すること、要求キューからの第2プリフェッチ要求を取り消すこと、第2キーのための第2読み取り要求をキー値デバイスに提出すること、キー値デバイスから戻された第2キーに対する第2読み取り値をキャッシュに挿入すること、プリフェッチ要求バッファからの第2プリフェッチ要求を取り消すこと、第2キーをキャッシュされたものとして示すこと、第2キーを先読みミスとして示すこと、プリフェッチ距離を増加させること、第2読み取り値をユーザアプリケーションに戻すこと、第2キーに隣接する第3キーに対する第3プリフェッチ要求及び第3キーに隣接する第4キーに対する第4プリフェッチ要求を提出すること、プリフェッチ要求バッファ及び要求キューに第3プリフェッチ要求及び第4プリフェッチ要求を配置すること、第3キーにアクセスすること、第3プリフェッチ要求が要求キューにあるか否かを判断すること、要求キューからの第3プリフェッチ要求を取り消すこと、第3キーに対する第3読み取り要求をキー値デバイスに提出すること、キー値デバイスから戻された第3キーに対する第3読み取り値をキャッシュに挿入すること、プリフェッチ要求バッファからの第3プリフェッチ要求を取り消すこと、第3キーをキャッシュされたものとして示すこと、プリフェッチ距離を増加させること、第4キーに隣接する第5キーに対する第5プリフェッチ要求を提出して第5キーに隣接する第6キーに対する第6プリフェッチ要求を提出すること、プリフェッチ要求バッファ及び要求キューに第5プリフェッチ要求及び第6プリフェッチ要求を配置すること、第4プリフェッチ要求、第5プリフェッチ要求、及び第6プリフェッチ要求を要求キューからキー値デバイスに提出すること、第4キーに対する第4読み取り値、第5キーに対する第5読み取り値、第6キーに対する第6読み取り値をデバイスドライバのプリフェッチ先読みバッファに挿入すること、第4キーにアクセスすること、第4読み取り値がプリフェッチ先読みバッファにあるか否かを判断すること、プリフェッチ先読みバッファからキャッシュに第4読み取り値を移動させること、プリフェッチ要求バッファからの第4プリフェッチ要求を取り消すこと、第4キーをキャッシュされたものとして示すこと、第6キーに隣接する第7キーに対する第7プリフェッチ要求を提出すること、プリフェッチ要求バッファ及び要求キューに第7プリフェッチ要求を配置すること、第5キーにアクセスすること、第5読み取り値がプリフェッチ先読みバッファにあることを確認すること、プリフェッチ先読みバッファからキャッシュに第5読み取り値を移動させること、プリフェッチ要求バッファからの第5プリフェッチ要求を取り消すこと、及び第5キーをキャッシュされたものとして示すことである。
【0092】
従って、本発明の実施形態は、混合ワークロード環境でシーケンシャルアクセスパターンを検出することにより利点を提供する。その結果、本発明の実施形態は、システムの状態に基づいてプリフェッチ動作の頻度及び範囲を調整することができ、そのため、システム性能をモニタリングすることにより、浪費する入/出力帯域幅を減少し、システム性能を向上させる。本発明の実施形態は、キー値デバイスで順次読み取り動作に対する応答時間を改善し、システムの状態に基づいてプリフェッチ要求入/出力を制御し、分解することなくキー値デバイスに対する順次読み取り入/出力性能を向上させるためのソフトウェアアーキテクチャを介して実施される。
【0093】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的思想から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0094】
100 キー値システム
110 プリフェッチ要求バッファ
120 シミュレーションキャッシュ
130 キャッシュ(メモリ)
140 要求キュー
150 プリフェッチ先読みバッファ
160 キー値デバイス
170 キー値ドライバ
180 キー値データベース
190 非同期入/出力経路
195 同期入/出力経路
210 プリフェッチ距離
220 プリフェッチトリガーキー