(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-12
(54)【発明の名称】擬似LRU補足時期情報を用いた再参照間隔予測(RRIP)
(51)【国際特許分類】
G06F 12/122 20160101AFI20240905BHJP
G06F 12/127 20160101ALI20240905BHJP
【FI】
G06F12/122
G06F12/127
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024517403
(86)(22)【出願日】2022-08-08
(85)【翻訳文提出日】2024-04-12
(86)【国際出願番号】 US2022039759
(87)【国際公開番号】W WO2023055486
(87)【国際公開日】2023-04-06
(32)【優先日】2021-09-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール ジェイ. モイヤー
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205MM03
5B205QQ11
(57)【要約】
キャッシュ置換のためのシステム及び方法が開示される。キャッシュ内のそれぞれのデータブロックの再参照間隔予測(RRIP)値を決定する技術が説明され、RRIP値は、それぞれのデータブロックが時間間隔内で再使用される尤度を表す。プロセッサによるメモリ内のデータセグメントへのアクセス時にデータセグメントがキャッシュに記憶されていない場合に、キャッシュ内のデータブロックの最新性を追跡するバイナリツリーを利用して、データセグメントによって置換されるキャッシュ内のデータブロックが選択される。
【選択図】
図3
【特許請求の範囲】
【請求項1】
キャッシュ置換のための方法であって、
キャッシュコントローラが、キャッシュ内のデータブロックの各々に関連付けられた再参照間隔予測(RRIP)値を決定することと、
プロセッサが、メモリ内のデータセグメントにアクセスすることと、
前記データセグメントが前記キャッシュに記憶されていないことに応じて、前記データセグメントによって置換される前記キャッシュ内のデータブロックを選択することと、を含み、
前記データブロックを選択することは、
最大値を有するRRIP値に関連付けられた前記キャッシュ内のデータブロックを検索することと、
複数のデータブロックが見つかった場合に、バイナリツリーを使用して、前記複数のデータブロックのうち何れかのデータブロックを選択することと、を含む、
方法。
【請求項2】
前記バイナリツリーを使用して、前記複数のデータブロックのうち何れかのデータブロックを選択することは、
前記バイナリツリーの1つのレベルから唯一指し示される最大RRIP値を有するデータブロックを選択することを含む、
請求項1の方法。
【請求項3】
前記RRIP値は、関連付けられたデータブロックが時間間隔内で再使用される尤度を表す、
請求項1の方法。
【請求項4】
より大きいRRIP値は、より遠い将来における時間間隔に対応する、
請求項1の方法。
【請求項5】
前記最大RRIP値は、前記最大RRIP値を含むRRIP値の範囲である、
請求項1の方法。
【請求項6】
前記検索することは、
最大値を有するRRIP値に関連付けられたデータブロックが見つからない場合に、
前記キャッシュ内のデータブロックの各々に関連付けられたRRIP値を増加させることと、
前記検索を繰り返すことと、を含む、
請求項1の方法。
【請求項7】
前記検索することは、
最大値を有するRRIP値に関連付けられた1つのデータブロックが見つかった場合に、前記1つのデータブロックを選択することを含む、
請求項1の方法。
【請求項8】
プロセッサによるデータセグメントへのアクセス時に前記データセグメントが前記キャッシュ内のデータブロックに記憶されている場合に、前記データブロックに関連付けられたRRIP値を更新することを含む、
請求項1の方法。
【請求項9】
前記バイナリツリーは、前記キャッシュ内のデータブロックの最新性を追跡する、
請求項1の方法。
【請求項10】
システムであって、
少なくとも1つのプロセッサと、
命令を記憶するメモリと、を備え、
前記命令は、前記少なくとも1つのプロセッサによって実行されると、
キャッシュコントローラが、キャッシュ内のデータブロックの各々に関連付けられた再参照間隔予測(RRIP)値を決定することと、
前記少なくとも1つのプロセッサが、前記メモリ内のデータセグメントにアクセスすることと、
前記データセグメントが前記キャッシュに記憶されていないことに応じて、前記データセグメントによって置換される前記キャッシュ内のデータブロックを選択することと、
を前記システムに行わせ、
前記データブロックを選択することは、
最大値を有するRRIP値に関連付けられた前記キャッシュ内のデータブロックを検索することと、
複数のデータブロックが見つかった場合に、前記キャッシュ内のデータブロックの最新性を追跡するバイナリツリーを使用して、前記複数のデータブロックのうち何れかのデータブロックを選択することと、を含む、
システム。
【請求項11】
前記バイナリツリーを使用して、前記複数のデータブロックのうち何れかのデータブロックを選択することは、
前記バイナリツリーの1つのレベルから唯一指し示される最大RRIP値を有するデータブロックを選択することを含む、
請求項10のシステム。
【請求項12】
前記RRIP値は、関連付けられたデータブロックが時間間隔内で再使用される尤度を表す、
請求項10のシステム。
【請求項13】
より大きいRRIP値は、より遠い将来における時間間隔に対応する、
請求項10のシステム。
【請求項14】
最大RRIP値は、前記最大RRIP値を含むRRIP値の範囲である、
請求項10のシステム。
【請求項15】
前記検索することは、
最大値を有するRRIP値に関連付けられたデータブロックが見つからない場合に、
前記キャッシュ内のデータブロックの各々に関連付けられたRRIP値を増加させることと、
前記検索を繰り返すことと、を含む、
請求項10のシステム。
【請求項16】
前記検索することは、
最大値を有するRRIP値に関連付けられた1つのデータブロックが見つかった場合に、前記1つのデータブロックを選択することを含む、
請求項10のシステム。
【請求項17】
前記少なくとも1つのプロセッサによるデータセグメントへのアクセス時に前記データセグメントが前記キャッシュ内のデータブロックに記憶されている場合に、前記データブロックに関連付けられたRRIP値を更新することを前記システムに行わせる命令を含む、
請求項10のシステム。
【請求項18】
方法を実行するために少なくとも1つのプロセッサによって実行可能な命令を含むコンピュータ可読記憶媒体であって、
前記方法は、
キャッシュコントローラが、キャッシュ内のデータブロックの各々に関連付けられた再参照間隔予測(RRIP)値を決定することであって、前記RRIP値は、関連付けられたデータブロックが時間間隔内で再使用される尤度を表し、より大きいRRIP値は、より遠い将来における時間間隔に対応する、ことと、
前記少なくとも1つのプロセッサが、メモリ内のデータセグメントにアクセスすることと、
前記データセグメントが前記キャッシュに記憶されていないことに応じて、前記データセグメントによって置換される前記キャッシュ内のデータブロックを選択することと、を含み、
前記データブロックを選択することは、
最大値を有するRRIP値に関連付けられた前記キャッシュ内のデータブロックを検索することと、
複数のデータブロックが見つかった場合に、前記キャッシュ内のデータブロックの最新性を追跡するバイナリツリーを使用して、前記複数のデータブロックのうち何れかのデータブロックを選択することと、を含む、
コンピュータ可読記憶媒体。
【請求項19】
前記検索することは、
最大値を有するRRIP値に関連付けられたデータブロックが見つからない場合に、
前記キャッシュ内のデータブロックの各々に関連付けられたRRIP値を増加させることと、
前記検索を繰り返すことと、を含む、
請求項18のコンピュータ可読記憶媒体。
【請求項20】
前記検索することは、
最大値を有するRRIP値に関連付けられた1つのデータブロックが見つかった場合に、前記1つのデータブロックを選択することを含む、
請求項18のコンピュータ可読記憶媒体。
【請求項21】
プロセッサによるデータセグメントへのアクセス時に前記データセグメントが前記キャッシュ内のデータブロックに記憶されている場合に、前記データブロックに関連付けられたRRIP値を更新することを含む、
請求項18のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年9月29日に出願された米国特許出願第17/489,726号の利益を主張するものであり、その内容は、参照によって、本明細書に完全に記載されているように組み込まれる。
【背景技術】
【0002】
キャッシングは、プロセッサにとってローカルなメモリ(キャッシュ)内に、頻繁にアクセスされるデータを記憶することによって、プロセッサがメインメモリ内のデータにアクセスするのにかかる時間を短縮し、したがって、アクセスがより高速且つより効率的になる。キャッシュ置換アルゴリズム(又はポリシー)は、プロセッサのメモリアクセスがミスに終わる場合に、キャッシュの何れのデータブロックを追い出す(エビクトする)かを決定するために、キャッシュ管理ソフトウェアによって使用される。すなわち、プロセッサが、メインメモリ内のデータセグメントから読み出し又はそれに書き込みを行う必要がある場合に、そのデータセグメントが既にキャッシュに記憶されている場合(すなわちキャッシュヒット)、そのデータセグメントは、キャッシュからアクセスされるが、しかしながら、そのデータセグメントがキャッシュに未だ記憶されていない場合(すなわち、キャッシュミス)、そのデータセグメントは、メインメモリからフェッチされ、置換アルゴリズムによって決定されるキャッシュのデータブロックを置換することになる。
【0003】
置換ポリシーは、キャッシュ内の各データブロックが再参照される(再使用される)尤度(likelihood)を予測し、それに基づいて、最も遠い将来に再参照されると予測されるデータブロックを置換することを選択する。置換ポリシーの一例が、最も長い間使用されていない(Least Recently Used、LRU)置換ポリシーである。LRU置換アルゴリズムは、最も長い間使用されていないデータブロックが、最も遠い将来に再参照される可能性が高いと予測し、したがって、そのデータブロックを、置換されるように選択する。一方、再参照間隔予測(Re-Reference Interval Prediction、RRIP)置換アルゴリズムは、最新性(recency)の代わりに、データブロックが再参照される頻度(frequency)を考慮し、データブロックが再使用される可能性が高い時間間隔を予測する。ほぼ即時の時間間隔において再参照されると予測されるデータブロックが保存される一方で、遠い時間間隔において再参照されると予測されるデータブロックは、追い出し(エビクト)候補である。
【0004】
置換アルゴリズムは、それらが、新たに追加されたデータブロックに再参照のどのような尤度を割り当てるか(ヒットプロモーションポリシー)、及び、データブロックが再使用される尤度を、それらが、どのように更新するか(学習するか)によって、部分的に変化する。置換アルゴリズムがいかに良好に機能するかは、プロセッサ上で実行されるアプリケーションのデータアクセスパターンに依存する。例えば、ほぼ即時の再参照の尤度又は遠い再参照の尤度を、新たに追加されたデータブロックに割り当てることは、全てのアクセスパターンにわたって最適ではない。異なるデータアクセスパターンの下で良好に機能するキャッシュ置換のための技術が必要とされる。
【0005】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0006】
【
図1A】本開示の1つ以上の特徴が実装され得る例示的なデバイスのブロック図である。
【
図1B】本開示の1つ以上の特徴が実装され得るデバイスからのメモリアクセス要求を管理することを提供する例示的なシステムのブロック図である。
【
図2】
図1Aのデバイスのプロセッサによって使用可能な例示的なキャッシュ構造のブロック図であり、それに基づいて、本開示の1つ以上の特徴が実装され得る。
【
図3】再参照間隔予測(RRIP)フレームワークに基づく例示的なキャッシュ置換方法の機能ブロック図であり、それに基づいて本開示の1つ以上の特徴が実装され得る。
【
図4】例示的なツリーベースの擬似LRU(pseudo-LRU、PLRU)選択手順のブロック図であり、それに基づいて、本開示の1つ以上の特徴が実装され得る。
【発明を実施するための形態】
【0007】
本開示は、ツリーベース(tree-based)の擬似LRU(PLRU)アルゴリズムをRRIPフレームワークに組み込む、キャッシュ置換のためのシステム及び方法を説明する。キャッシュ内の各データブロックの再参照尤度(re-reference likelihood)を学習するRRIPアルゴリズムを本明細書で説明する。RRIPアルゴリズムは、複数の再参照時間間隔を表すことができるRRIP値を維持する。したがって、データブロックは、ほぼ即時の時間間隔(最低RRIP値)から、中間の時間間隔を経て、遠い時間間隔(最高RRIP値)までの時間間隔で再参照されると予測され得る。例えば、新しいデータブロックがキャッシュ内に配置された場合、中間の再参照間隔をそれに割り当てることができ、このデータブロックが再使用される毎に、より短い時間間隔をそれに割り当てることができる、すなわち、それはより早く再参照されると予測される。キャッシュ内のデータブロックを置換しなければならない場合(キャッシュミス)、遠い時間間隔において再参照されると予測されるデータブロックが、置換されるように選択され得る。そのようなデータブロックがキャッシュ内に見つからない場合、キャッシュのデータブロックのRRIP値が増加され、これは、アクセスパターンの変化への適応を可能にするプロセスである。しかしながら、遠い時間間隔予測を伴う複数のデータブロックをキャッシュ内で見つけることができる場合、本明細書で説明されるように、PLRUアルゴリズムのバイナリツリーを利用して、データブロックのうち最も古いものを選択することができる。RRIPアルゴリズムとの相乗効果でPLRUアルゴリズムを適用すると、多くのワークロードのキャッシュアクセスパターンが与えられた場合に、RRIPアルゴリズムのみを適用した場合と比較して、より高いキャッシュヒット率がもたらされる。
【0008】
本開示は、キャッシュ置換のための方法を説明する。方法は、キャッシュ内のデータブロックの各々に関連付けられたRRIP値を決定することを含む。RRIP値は、関連付けられたデータブロックが時間間隔内で再使用される尤度を表し、より大きいRRIP値は、将来におけるより遠い時間間隔に対応する。プロセッサによるメモリ内のデータセグメントへのアクセス時にデータセグメントがキャッシュに記憶されていない場合、方法は、データセグメントによって置換されるキャッシュ内のデータブロックを選択することを含む。データブロックの選択は、最大値を有するRRIP値に関連付けられたキャッシュ内のデータブロックを検索することと、複数のデータブロックが見つかった場合に、キャッシュ内のデータブロックの最新性を追跡するバイナリツリーを使用して、データブロックのうち何れかを選択することと、を含む。
【0009】
本開示は、少なくとも1つのプロセッサ及びメモリを備えるシステムを更に開示する。メモリは命令を記憶し、命令は、少なくとも1つのプロセッサによって実行されると、システムに、キャッシュ内のデータブロックの各々に関連付けられたRRIP値を決定させる。RRIP値は、関連付けられたデータブロックが時間間隔内で再使用される尤度を表し、より大きいRRIP値は、将来におけるより遠い時間間隔に対応する。少なくとも1つのプロセッサによるメモリ内のデータセグメントへのアクセス時にデータセグメントがキャッシュに記憶されていない場合、命令は、システムに、データセグメントによって置換されるキャッシュ内のデータブロックを選択させる。データブロックの選択は、最大値を有するRRIP値に関連付けられたキャッシュ内のデータブロックを検索することと、複数のデータブロックが見つかった場合に、キャッシュ内のデータブロックの最新性を追跡するバイナリツリーを使用して、データブロックのうち何れかを選択することと、を含む。
【0010】
更に、本開示は、方法を実施するために、少なくとも1つのプロセッサによって実行可能な命令を含む非一時的なコンピュータ可読記憶媒体を開示する。方法は、キャッシュ内のデータブロックの各々に関連付けられた再参照間隔予測(RRIP)値を決定することを含む。RRIP値は、関連付けられたデータブロックが時間間隔内で再使用される尤度を表し、より大きいRRIP値は、将来におけるより遠い時間間隔に対応する。少なくとも1つのプロセッサによる媒体内のデータセグメントへのアクセス時にデータセグメントがキャッシュに記憶されていない場合、方法は、データセグメントによって置換されるキャッシュ内のデータブロックを選択することを含む。データブロックの選択は、最大値を有するRRIP値に関連付けられたキャッシュ内のデータブロックを検索することと、複数のデータブロックが見つかった場合に、キャッシュ内のデータブロックの最新性を追跡するバイナリツリーを使用して、データブロックのうち何れかを選択することと、を含む。
【0011】
図1Aは、本開示の1つ以上の特徴が実装され得る例示的なデバイス100Aのブロック図である。デバイス100Aは、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、タブレットコンピュータ又は他のコンピューティングデバイスのうち何れかであり得るが、これらに限定されない。デバイス100Aは、プロセッサ102、メモリ104、記憶装置106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100Aは、1つ以上の入力ドライバ112及び1つ以上の出力ドライバ114を含む。何れの入力ドライバ112も、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具体化され、入力デバイス108を制御する(例えば、動作を制御し、入力ドライバ112からの入力を受信し、入力ドライバ112にデータを提供する)役割を果たす。同様に、何れの出力ドライバ114も、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具体化され、出力デバイス110を制御する(例えば、動作を制御する、出力ドライバ114からの入力を受信する、及び、出力ドライバ114にデータを提供する)役割を果たす。デバイス100Aは、
図1Aに示されていない追加のコンポーネントを含み得ることを理解されたい。
【0012】
様々な代替例では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(graphics processing unit、GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUとすることができる。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に位置するか、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM、キャッシュ)を含む。いくつかの実施形態では、プロセッサ102は、1つ以上のキャッシュ120を含む。一般に知られているように、キャッシュは、近い将来に、プロセッサ102上で実行される命令によってアクセスされる可能性が高いとキャッシュマネージャによって判断されたデータアイテムを記憶する。キャッシュ120は、プロセッサ102の1つ以上のキャッシュメモリを表す。様々な実施形態では、1つ以上のキャッシュメモリは、キャッシュ階層に編成されており、キャッシュ階層内のより高いキャッシュは、キャッシュ階層内のより低いキャッシュからのミスにサービスし、キャッシュ階層内のより低いキャッシュから避けられたキャッシュエントリを受信する。
【0013】
記憶装置106は、固定又はリムーバブル記憶装置(例えば、限定するものではないが、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
【0014】
入力ドライバ112及び出力ドライバ114は、それぞれ、入力デバイス108及び出力デバイス110とインターフェースし、それらをドライブするように構成された1つ以上のハードウェア、ソフトウェア及び/又はファームウェアコンポーネントを含む。入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。出力ドライバ114は、表示デバイス118に結合された加速処理デバイス(accelerated processing device、APD)116を含み、これは、いくつかの例では、物理表示デバイス又はリモートディスプレイプロトコルを使用して出力を示す模擬デバイスである。APD116は、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算及びグラフィックスレンダリングコマンドを処理し、表示のために表示デバイス118にピクセル出力を提供するように構成されている。以下で更に詳細に説明するように、APD116は、単一命令複数データ(single-instruction-multiple-data、SIMD)パラダイムに従って計算を実施するように構成された1つ以上の並列処理ユニットを含む。こうして、様々な機能は、本明細書では、APD116によって又はAPD116と併せて実施されるものとして説明されているが、様々な代替例では、APD116によって実施されるものとして説明される機能は、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、表示デバイス118にグラフィック出力を提供するように構成された同様の能力を有する他のコンピューティングデバイスによって、追加的又は代替的に実施される。例えば、SIMDパラダイムに従って処理タスクを実施する任意の処理システムが、本明細書に説明される機能を実施するように構成され得ることが企図される。代替的に、SIMDパラダイムに従って処理タスクを実施しないコンピューティングシステムが、本明細書に説明される機能を実施することが企図される。
【0015】
図1Bは、本開示の1つ以上の特徴が実装され得るデバイスからのメモリアクセス要求を管理することを提供する例示的なシステム100Bのブロック図である。システム100Bは、プロセッサ130及びメモリ122を含む。システム100Bは、サーバ、パーソナルコンピュータ、タブレット、セットトップボックス、ゲーミングシステム等の様々な電子デバイスの何れかに組み込むことができる。プロセッサ130は、概して、定義されたタスクを実行するためにプロセッサ130の回路を操作する命令のセット(例えば、コンピュータプログラム)を実行するように構成されている。
【0016】
メモリ122は、プロセッサ130によって使用されるデータ及び命令を記憶することによって、これらのタスクの実行を容易にする。メモリ122は、ランダムアクセスメモリ(RAM)、不揮発性メモリ(例えば、フラッシュメモリ又はハードディスクドライブ(hard disk drive、HDD)等)、又は、それらの組み合わせであり得る。また、システム100Bは、物理入力/出力(input/output、I/O)デバイス等のデバイス124を含む。デバイス124は、例えば、ネットワークインターフェースカード(network interface card、NIC)、ホストバスアダプタ(host bus adapter、HBA)等であり得る。
【0017】
また、プロセッサ30は、プロセッサコア140、150、160、170と、メモリコントローラ(例えば、ノースブリッジ)132と、を含む。プロセッサコア140、150、160、170は、命令を個別且つ並列に実行する処理ユニットである。いくつかの実施形態では、プロセッサコア140、150、160、170の各々は、命令をフェッチし、フェッチされた命令を対応する動作に復号し、システム100Bのリソースを使用して様々な動作を実行する、個々の命令パイプラインを含む。
図1Bは、4つのプロセッサコア140、150、160、170を有するプロセッサ130を示しているが、プロセッサ130は、4つより多い又は少ないプロセッサコアを有することができる。プロセッサコア140、150、160、170の各々は、プロセッサコア専用の低レベルキャッシュを有する。例えば、プロセッサコア140は、レベル1キャッシュ142及びレベル2キャッシュ144を有する。また、プロセッサコア140は、変換索引バッファ146を含むことができる。同様に、プロセッサコア150は、関連付けられたレベル1キャッシュ152及びレベル2キャッシュ154を有する。また、プロセッサコア150は、変換索引バッファ156を含むことができる。更なる例では、プロセッサコア160は、レベル1キャッシュ162及びレベル2キャッシュ164を有する。また、プロセッサコア160は、変換索引バッファ166を含むことができる。別の例では、プロセッサコア170は、レベル1キャッシュ172及びレベル2キャッシュ174を有する。また、プロセッサコア170は、変換索引バッファ176を含むことができる。プロセッサ130は、プロセッサのペアによって共有されるキャッシュメモリを更に含むことができる。例えば、プロセッサコア140及びプロセッサコア160は、L3キャッシュメモリ180を共有することができ、プロセッサコア150及びプロセッサコア170は、L3キャッシュメモリ185を共有することができる。
【0018】
また、プロセッサ130は、デバイス(例えば、
図1Aに示されるようなデバイス124等)をメモリコントローラ132に接続するために使用される入力/出力メモリ管理ユニット(input/output memory management unit、IOMMU)136を含む。いくつかの実施形態では、IOMMU136は、シリアルバスを使用してデバイス124と通信する。シリアルバスは、周辺コンポーネント相互接続エクスプレス(Peripheral Component Interconnect Express、PCIe)シリアルバス規格等のバス規格に準拠することができる。メモリコントローラ132は、デバイス124が、メモリ122、又は、1つ以上のレベルのキャッシュメモリと通信するためのインターフェースを提供する。IOMMU136は、デバイス124からメモリアクセス要求(例えば、キャッシュインジェクションメモリアクセス要求等のダイレクトメモリアクセス要求)を受信し、メモリコントローラ132を介して、メモリ122又はキャッシュメモリへのそれらの要求の提供を制御する。プロセッサ130は、例えば、メモリコントローラ132において、IOMMU136から受信された物理ステアリングタグを、キャッシュインジェクションメモリアクセス要求等の関連するメモリアクセス要求によってターゲットとされた物理リソースにマッピングするための物理タグマップ134を含む。加えて、メモリコントローラ132は、メモリ122又はキャッシュメモリからメモリアクセス要求に対する応答を受信し、デバイス124への応答の提供を制御する。
【0019】
キャッシュインジェクションメモリアクセス要求は、ステアリングタグを利用して、プロセッサコア専用の下位レベルのキャッシュ、プロセッサコアのサブセット間で共有されるキャッシュ又は共有キャッシュ等のプロセッサリソースをターゲットとすることができる。例えば、ステアリングタグは、プロセッサコア150によってアクセス可能なL1キャッシュ152又はL2キャッシュ154、プロセッサコア150及び170がアクセス可能なL3キャッシュ185をターゲットとすることができる。したがって、メモリアクセス要求の効率的な実行を容易にするために、IOMMU136は、仮想タグマップにアクセスして、メモリアクセス要求において受信された仮想ステアリングタグを、物理リソースにマッピングされた物理ステアリングタグに変換する。デバイス124からメモリアクセス要求を受信することに応じて、IOMMU136は、仮想ステアリングタグを識別し、仮想タグマップ138を用いて仮想ステアリングタグを変換する。仮想タグマップ138は、システムメモリ122に記憶することができ、部分は、IOMMU136においてキャッシュされ得る。代替的に、仮想タグマップ138は、IOMMU136においてキャッシュされ得る。IOMMU136は、メモリアクセス要求及び物理ステアリングタグをメモリコントローラ132に提供する。メモリコントローラ132は、物理ステアリングタグを、キャッシュインジェクションメモリアクセス要求によってターゲットとされる下位レベルキャッシュ等のように、メモリアクセス要求によってターゲットとされた物理リソースに変換する。一例では、メモリアクセス要求は、プロセッサコア専用の低レベルキャッシュをターゲットとする。そのような例では、要求に関連付けられたアドレスは、変換索引バッファによって変換され、キャッシュインジェクションメモリアクセスが実行され得る。
【0020】
いくつかの実施形態では、デバイス124は、メモリコントローラ132を使用して、IOMMU136に送信される仮想ステアリングタグ及び仮想アドレスを含むメモリアクセス要求を開始することによって、ダイレクトメモリアクセス(direct memory access、DMA)要求を通して、メモリ122内又はキャッシュメモリ内の情報にアクセスする。IOMMU136は、仮想ステアリングタグと物理ステアリングタグとの間のステアリングタグ再マッピング、及び、メモリ122又はキャッシュメモリ内の仮想アドレスと物理アドレスとの間のアドレス変換を実施することができる。ステアリングタグ再マッピングプロセス及びアドレス変換プロセスは、IOMMUの独立した機能であってもよく、同時に実施され得る。例えば、デバイス124は、デバイス124によって提供されたデータのための使用を有する仮想マシンを実行するプロセッサに関連付けられたキャッシュメモリにデータを記憶するための書き込み要求を含む、キャッシュインジェクションメモリアクセス要求を生成する。各メモリアクセス要求は、関連付けられた物理ステアリングタグを通してキャッシュリソース(例えば、L3キャッシュ180又は185;L1キャッシュ142、152、162又は172;L2キャッシュ144、154、164又は174)にマッピングされた仮想ステアリングタグと、キャッシュインジェクションメモリアクセス要求によってターゲットとされたキャッシュリソースにおける位置を示すメモリアドレスと、を含む。書き込み要求に応じて、リソースは、要求の書き込み情報を、書き込み要求のメモリアドレスに対応する位置に記憶する。
【0021】
図2は、
図1Aのデバイスのプロセッサによって使用可能な例示的なキャッシュ構造200のブロック図であり、それに基づいて、本開示の1つ以上の特徴が実装され得る。キャッシュ210は、データブロック220.1~220.N(「ライン」とも呼ばれる)を含む。各データブロックは、メモリから以前にフェッチされたデータセグメントを含むことができる。例えば、ライン220.nは、メインメモリ240内のアドレス255からフェッチされたデータセグメント250を含むことができる。データブロックに加えて、キャッシュ内の各ライン(例えば220.n)は、タグ(例えば215.n)及びフラグビット(例えば225.n)に関連付けられる。例えば、タグ215.nは、(ライン220.nに現在記憶されている)データセグメント250がフェッチされたメインメモリ240内のアドレス255に関連付けられる。フラグビット225.nは、典型的には、対応するデータブロック220.nを特徴付ける(又はそれに関連付けられる)データを記憶するために使用される。例えば、フラグ225.nは、データブロック220.nに記憶されたデータの有効性、又は、データブロック220.nに記憶されたデータに対して行われた変更に伴ってメインメモリが更新されていないかどうかを示すことができる。
【0022】
したがって、タグ215.1~215.Nは、キャッシュ210内のそれぞれのライン220.1~220.Nに関連付けられており、各々が、メインメモリ240内の実際のアドレス又は仮想アドレスを表す。プロセッサが、メモリアクセスを必要とする命令を実行する、すなわち、プロセッサが、メインメモリ内の特定のアドレスに記憶されたデータセグメントから読み出すか又はそこに書き込む必要がある場合に、キャッシュは、最初に、要求されたデータセグメントが、キャッシュのライン220.1~220.Nのうち何れかに既に記憶されているかどうかを確認するためにチェックされる。要求されたデータセグメント250がキャッシュのラインのうち何れかに既に記憶されているか否かを調べるために、データセグメントのアドレス255をそれぞれのライン220.1~220.Nのタグ215.1~215.Nと比較することができる。しかしながら、実際には、キャッシュの配置ポリシーは、メインメモリのメモリセクション(データセグメント250等)をキャッシュ内の特定の位置に記憶する。したがって、キャッシュ内の任意のラインが、メモリセクションの任意のコピーを記憶することができる場合に、キャッシュは、フルアソシアティブキャッシュである。各メモリセクションが、キャッシュ内の1つのラインのみに記憶され得る場合に、キャッシュは、直接マップキャッシュ(directly mapped cache)である。通常の場合のように、各メモリセクションをキャッシュ内のL個の場所の1セットに記憶することができる場合、キャッシュはLウェイセットアソシアティブキャッシュである。
【0023】
典型的には、メモリアドレス255を表すビットは、それらのビット有意性に基づいて、グループに分割され得る。
図2において、メモリアドレス230は、タグ230.1、インデックス230.2及びブロックオフセット230.3を含むように示されている。アドレス230の最下位ビットを有するブロックオフセット230.3は、要求されたデータセグメント250が記憶されているデータブロック内の位置を指し示すオフセットを提供する。例えば、データブロックがbバイトのブロックである場合、ブロックオフセット230.3は、log
2(b)ビット長でなければならないであろう。インデックス230.2は、特定のメモリセクションが記憶され得るキャッシュ内のデータブロックのセットを指定する(例えば、1つのセットは、Lウェイセットアソシアティブキャッシュ内にL個のデータブロックを含む)。例えば、s個のセットが存在する場合、インデックス230.2は、log
2(s)ビット長でなければならないであろう。アドレス230の最上位ビットを有するタグ230.1は、特定のメモリセクションを、それが記憶されているセット内のライン(インデックスによって指定される)に関連付ける。したがって、データセグメントがキャッシュに記憶されているかどうかを検索する場合に、データセグメントのアドレスのインデックス部分は、データセグメントが記憶され得るキャッシュ内のセットを指し示し、次いで、データセグメントのアドレスのタグ部分が、そのセット内のラインのタグと比較される。キャッシュ210が4ウェイセットアソシアティブキャッシュである場合、キャッシュは、(インデックスによって指定される)セットに分割され、各セットは、4つのウェイ(4つのデータブロック又はライン)を含む。データセグメント250のアドレス255のインデックス部分が第1のセットを指し示す場合、データセグメント250は、このセット内で検索されるはずであり、データセグメントのアドレス255のタグ部分をそのセット内のラインのタグと比較して、それらのラインのうち何れかがデータセグメントを記憶しているかどうかを見つけることができる。
【0024】
図3は、RRIPフレームワークに基づく例示的なキャッシュ置換方法300の機能ブロック図であり、それに基づいて、本開示の1つ以上の特徴が実装され得る。プロセッサが、メモリアクセス(例えば、メモリ読み出し又はメモリ書き込み)を伴う命令を実行する場合に、ステップ310において、アクセスされるデータセグメント(すなわち、要求されたデータセグメント)がキャッシュのデータブロックに既に記憶されているかどうかを確認するために、キャッシュがチェックされる。要求されたデータセグメントが、キャッシュのデータブロックに既に記憶されているか否かを確認するチェックは、例えば、
図2を参照して上述したように行われ得る。要求されたデータセグメントが、キャッシュのデータブロックに既に記憶されている場合、ステップ315においてキャッシュヒットが発生し、したがって、ステップ320において、データセグメントをデータブロックから読み出すことができる。データブロック320に対する再参照に続いて、ステップ325において、データブロックに関連付けられた再参照間隔予測値が、ヒットプロモーションポリシーに従って更新され得る。要求されたデータセグメントが、キャッシュのデータブロックの何れにも記憶されていない場合、ステップ315においてキャッシュミスが発生し、したがって、キャッシュのデータブロックのうち何れかを追い出す(エビクトする)必要があり(例えば、使用することができる無効ブロックがない場合)、すなわち、要求されたデータセグメントがメインメモリからフェッチされ、置換アルゴリズム300によって、置換されるように選択されたデータブロックにコピーされる。
【0025】
様々なキャッシュ置換アルゴリズムは、異なる置換ポリシーを適用する。キャッシュ置換のためのRRIPフレームワークでは、参照される可能性が最も低いデータブロックが追い出されるであろう。例えば、RRIPフレームワークは、キャッシュ内の各データブロックに関連付けられたM個のビットを維持することができ、2M-1のRRIP値を表すことができる。したがって、ゼロのRRIP値は、データブロックがほぼ即時の将来に再参照されると予測されることを示し、2M-1のRRIP値は、データブロックが遠い将来に再参照されると予測されることを示す。例えば、M=2の場合、4つのRRIP値[0、1、2、3]が可能であり、RRIP値が低いほど、それぞれのデータブロックがより早く再参照されると予測される。
【0026】
したがって、キャッシュミスが発生した場合、ステップ330において、最大RRIP値を有するデータブロック(他の全てのデータブロックよりも後に参照されると予測されるデータブロック)が検索される。一態様では、最大RRIP値を含む範囲内のRRIP値を有するデータブロックが検索され得る。最大RRIP値(又は最大RRIP値を含む範囲内)を有するデータブロックが見つかっていない場合、ステップ340において、全てのデータブロックのRRIP値が1だけ増分され、ステップ330において別の検索が起きる。そうでない場合、ステップ345において、最大RRIP値(又は最大RRIP値を含む範囲内)を有する2つ以上のデータブロックが見つかっている場合、ステップ355において、1つのデータブロックが置換されるように選択される。最大RRIP値(又は最大RRIP値を含む範囲内)を有する正確に1つのデータブロックが見つかった場合、ステップ350において、そのブロックが置換される。したがって、最大RRIP値を有する2つ以上のデータブロック(又は最大RRIP値を含む範囲内のRRIP値を有する2つ以上のデータブロック)が見つかっている場合、ステップ355において、置換される1つのデータブロックを選択するための手順が行われなければならない。使用され得る単純な選択手順は、例えば、最小インデックスを有するデータブロックを選択することである。本明細書で開示されるように、ツリーベースのPLRU選択手順が、以下で詳細に説明されるように使用され得る。
【0027】
何れのデータブロックが置換されることになるかが決定された後、ステップ350において、要求されたデータセグメントがメインメモリからフェッチされ、そのデータブロックに記憶される。例えば、データブロック220.nが置換されるものである場合、要求されたデータセグメント250がデータブロック220.nにコピーされ、アドレス215.nがメインメモリ240内のデータセグメント250のアドレス255で更新され、場合によっては、例えば、データブロックコンテンツが有効であることを反映するために、1つ以上のフラグビットが更新される。次に、ステップ360において、置換されたデータブロックのRRIP値が、置換されたデータブロック220.nがどれだけ早く再参照されると予想されるかに応じて、設定され得る。妥当な再参照間隔予測となるものは、プロセッサの(又はプロセッサが実行するアプリケーションの)メモリアクセスパターンに依存する。置換アルゴリズムは、例えば、ステップ360において、データブロックが置換される場合に高いRRIP値を割り当て、次いで、ステップ320において、このデータブロックが再参照される毎に、このRRIP値を1だけ減少させることによって、可能性のある再参照間隔を学習することができる。
【0028】
図4は、例示的なツリーベースのPLRU選択手順のブロック
図400であり、それに基づいて、本開示の1つ以上の特徴が実装され得る。PLRUは、LRU置換アルゴリズムを近似する置換アルゴリズムである。LRUアルゴリズムは、基本的に、最も古いアクセス時間を有するデータブロック(最も長い間アクセスされていないデータブロック)を置換する一方で、PLRUアルゴリズムは、最も古いアクセス時間を有するデータブロックに近似する結果を提供する。ツリーベースのPLRUアルゴリズムは、LRUアルゴリズムと比較して僅かにより高いミス率を伴って機能するが、より良好なレイテンシを有し、より少ない電力を使用し、より低いオーバーヘッドを有する。ツリーベースのPLRUは、置換される次のデータブロックを指し示すバイナリツリーを維持する。したがって、PLRUアルゴリズムのバイナリツリー410は、近似された最も古いアクセス時間を有するデータブロックへのパスを維持する。
【0029】
図4に明示されるように、ツリーの現在の状態では、データブロック420.6は、バイナリツリー内のノード410.1、410.3及び410.6を含むツリーパスを介して、置換されるように指し示される。概して、値「1」を有するノードは、右側の下位ノードを指し示し(又はツリー分岐を介してそれに接続され)、値「0」を有するノードは、左側の下位ノードを指し示す(又はツリー分岐を介してそれに接続される)。データブロック420.6等のデータブロックが置換される毎に、それにつながったノード(410.1、410.3及び410.6)がフリップされ(それらの値を変更し、それにより、それらが下位ノードを指し示す)、その結果、キャッシュ内の別のデータブロックが、今度は、置換される次のデータブロックであるようにデータブロック420.2を指し示すツリー440によって明示されるように、指し示される。
【0030】
図3を参照して上述したように、2つ以上のデータブロックが最大RRIP値を有する場合、置換される1つのデータブロックをそこから選択するために、選択手順が適用され得る(ステップ355)。本明細書で開示される選択手順は、ツリーベースのPLRUアルゴリズムのバイナリツリーを利用することができる。
図4は、8つのデータブロック420.1~420.8及びそれぞれのRRIP値430を有するキャッシュ420を明示する。示されるように、3つのデータブロック(420.1、420.3及び420.6)が3の最大RRIP値を有する。したがって、バイナリツリー410の現在の状態に基づいて1つのデータブロックを選択する選択手順を使用することができる。上述したように、バイナリツリー410は、データブロック420.6を指し示す。そのブロックは、最大RRIP値を有する3つのブロックのうち何れかであるので、そのブロックが置換されるように選択されるであろう。そうでない場合、例えば、データブロック420.6が2のRRIP値を有し、2つのブロック420.1及び420.3のみが3の最大RRIP値を有するシナリオでは、現在の状態のツリーは、最大RRIP値を有するデータブロックのうち何れかを指し示さないので、選択手順は、ツリーのより低いレベルから開始することができる。例えば、選択手順は、ノード410.2から開始し、最大RRIP値を有するデータブロック、この場合(ノード410.5を介して)データブロック420.3に至るパスを追跡することができる。
【0031】
代替案では、選択手順は、ツリーの最下位レベル(例えば、410.4、410.5、410.6及び410.7)から最初に開始することができる。最大RRIP値を有する複数のブロックがそのレベルで指し示される(例えば、420.1、420.3及び420.6)場合、次のレベル(例えば、410.2及び410.3)に進むことができ、そのレベルから依然として最大RRIP値を有する複数のブロックが指し示される(例えば、420.3及び420.6)場合、1つのブロックのみが指し示されるまで、ツリーのより高いレベルに進むことができる。ツリーの最高レベル(例えば410.1)では、1つのブロック420.6のみが指し示され、そのブロックが置換されるように選択され得る。一態様では、データブロック420.1、420.3及び420.6は、最大RRIP値を含む範囲内のRRIP値を、それらに関連付けさせることができる。そのような場合、それらからの1つのデータブロックの選択は、上述したように、それらが全て、最大RRIP値をそれらに関連付けているかのように実施され得る。
【0032】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
【0033】
図に示され及び/又は本明細書に記載される様々な機能ユニット(プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、アクセラレーテッド処理デバイス116を含むが、これらに限定されない)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体若しくは別の記憶媒体に記憶されているプログラム、ソフトウェア若しくはファームウェアとして実装され得る。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、本開示の特徴を実装するプロセッサを製造する。
【0034】
本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
【国際調査報告】