(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-15
(54)【発明の名称】DRAMキャッシュタグプリフェッチャ用の方法及び装置
(51)【国際特許分類】
G06F 12/0862 20160101AFI20240308BHJP
G06F 12/0875 20160101ALI20240308BHJP
【FI】
G06F12/0862 105
G06F12/0875 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023557722
(86)(22)【出願日】2022-03-08
(85)【翻訳文提出日】2023-10-20
(86)【国際出願番号】 US2022019392
(87)【国際公開番号】W WO2022211992
(87)【国際公開日】2022-10-06
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジャガディッシュ ビー. コトゥラ
(72)【発明者】
【氏名】マルコ スクルバック
(72)【発明者】
【氏名】マシュー レイモンド ポレンバ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ11
5B205MM03
5B205NN92
5B205UU31
(57)【要約】
キャッシュプリフェッチング用のデバイス及び方法を提供する。メモリ及びプロセッサを含むデバイスが提供される。メモリは、DRAMキャッシュ、プロセッサ専用のキャッシュ、及び、当該専用のキャッシュと当該DRAMキャッシュとの間の1つ以上の中間キャッシュを含む。プロセッサは、データをプリフェッチするためのプリフェッチ要求を発行することと、データをフェッチするためのデータアクセス要求を発行することと、以前に発行された1つ以上のプリフェッチ要求が不正確であると判定された場合に、DRAMキャッシュ内の要求データのメモリアドレスに対応する、タグをプリフェッチするためのプリフェッチ要求を発行することと、を実行するように構成されている。専用キャッシュ又は中間キャッシュにおいてタグルックアップを実行せずに、タグルックアップがDRAMキャッシュにおいて実行される。要求データをプリフェッチングすることなく、タグがDRAMキャッシュからプリフェッチされる。
【選択図】
図3
【特許請求の範囲】
【請求項1】
処理デバイスであって、
第1キャッシュを含むメモリと、
プロセッサと、を備え、
前記プロセッサは、
データをプリフェッチするためのプリフェッチ要求を発行することと、
前記データをフェッチするためのデータアクセス要求を発行することと、
以前に発行された1つ以上のプリフェッチ要求が不正確であると判定された場合に、前記第1キャッシュから前記データをプリフェッチすることなく、前記第1キャッシュ内の要求されたデータのメモリアドレスに対応する、タグをプリフェッチするためのタグプリフェッチ要求を発行することと、
を実行するように構成されている、
処理デバイス。
【請求項2】
前記第1キャッシュは、ダイナミックランダムアクセスメモリ(DRAM)キャッシュであり、
前記処理デバイスは、
前記プロセッサ専用の第2キャッシュと、
前記プロセッサ専用の前記第2キャッシュと前記DRAMキャッシュとの間の1つ以上の中間キャッシュと、を更に備え、
以前に発行された1つ以上のプリフェッチ要求が不正確であると判定された場合に、前記プロセッサ専用の第2キャッシュ又は前記1つ以上の中間キャッシュにおいてタグルックアップを実行することなく、前記DRAMキャッシュにおいてタグルックアップを実行する、
請求項1の処理デバイス。
【請求項3】
前記プロセッサは、プリフェッチ精度閾値との比較に基づいて、以前に発行された1つ以上のプリフェッチ要求が不正確であるか否かを判定するように構成されている、
請求項1の処理デバイス。
【請求項4】
前記プロセッサは、
前記プロセッサ専用のキャッシュと、前記プロセッサ専用のキャッシュと前記第1キャッシュとの間の1つ以上の中間キャッシュと、においてタグルックアップが実行され、前記以前に発行された1つ以上のプリフェッチ要求が正確であると判定された場合に前記データがプリフェッチされる、第1プリフェッチングモードで動作することと、
前記以前に発行された1つ以上のプリフェッチ要求が不正確であると判定された場合に、前記データをプリフェッチすることなく、且つ、前記プロセッサ専用のキャッシュ及び前記1つ以上の中間キャッシュにおいて前記タグルックアップを実行することなく、前記タグが前記第1キャッシュからプリフェッチされる、第2プリフェッチングモードで動作することと、
を実行するように構成されている、
請求項1の処理デバイス。
【請求項5】
前記プロセッサは、
前記以前に発行された1つ以上のプリフェッチ要求が正確であると判定されたか否かに基づいて、
前記第1プリフェッチングモード及び前記第2プリフェッチングモードのうち一方の動作を維持することと、
前記第1プリフェッチングモード及び前記第2プリフェッチングモードのうち一方から、前記第1プリフェッチングモード及び前記第2プリフェッチングモードのうち他方へと動作を切り替えることと、
のうち何れかを実行するように構成されている、
請求項4の処理デバイス。
【請求項6】
前記プロセッサは、前記第1プリフェッチングモード及び前記第2プリフェッチングモードのうち一方の動作中に、1つ以上の発行されたプリフェッチ要求のプリフェッチ精度を監視し続けるように構成されている、
請求項4の処理デバイス。
【請求項7】
前記プロセッサは、第1キャッシュ帯域幅の使用量がメモリ帯域幅閾値以上である場合に、前記データをプリフェッチすることなく、前記タグが前記第1キャッシュからプリフェッチされるように、第1キャッシュ帯域幅を監視するように構成されている、
請求項1の処理デバイス。
【請求項8】
タグキャッシュを更に備え、
前記プロセッサは、前記タグプリフェッチ要求の前記タグが前記第1キャッシュにある場合に、前記第1キャッシュから前記タグをプリフェッチし、前記タグに対応する前記データをプリフェッチすることなく、前記タグを前記タグキャッシュに配置するように構成されている、
請求項1の処理デバイス。
【請求項9】
前記プロセッサは、次のプリフェッチ要求に対して、
次に要求されるタグが前記タグキャッシュ内にあるかどうかを判定することと、
前記次に要求されるタグが前記タグキャッシュ内にあると判定された場合に、前記次に要求されるタグに対応するデータを前記第1キャッシュからプリフェッチすることと、
前記次に要求されるタグが前記タグキャッシュ内にないと判定された場合に、メインメモリからデータをプリフェッチすることと、
を実行するように構成されている、
請求項8の処理デバイス。
【請求項10】
キャッシュプリフェッチングの方法であって、
データをプリフェッチするためのプリフェッチ要求を発行することと、
前記データをフェッチするためのデータアクセス要求を発行することと、
以前に発行された1つ以上のプリフェッチ要求が不正確であると判定された場合に、第1キャッシュから前記データをプリフェッチすることなく、前記第1キャッシュ内の要求されたデータのメモリアドレスに対応する、タグをプリフェッチするためのタグプリフェッチ要求を発行することと、を含む、
方法。
【請求項11】
前記第1キャッシュは、ダイナミックランダムアクセスメモリ(DRAM)キャッシュであり、
以前に発行された1つ以上のプリフェッチ要求が不正確であると判定された場合に、前記プリフェッチ要求を発行するプロセッサ専用の第2キャッシュにおいて、又は、前記プロセッサ専用の前記第2キャッシュと前記DRAMキャッシュとの間の1つ以上の中間キャッシュにおいてタグルックアップを実行することなく、前記DRAMキャッシュにおいてタグルックアップを実行する、
請求項10の方法。
【請求項12】
プリフェッチ精度閾値との比較に基づいて、以前に発行された1つ以上のプリフェッチ要求が不正確であるか否かを判定することを更に含む、
請求項10の方法。
【請求項13】
前記プリフェッチ要求を発行するプロセッサ専用のキャッシュと、前記プロセッサ専用のキャッシュと前記第1キャッシュとの間の1つ以上の中間キャッシュと、においてタグルックアップが実行され、前記以前に発行された1つ以上のプリフェッチ要求が正確であると判定された場合に前記データがプリフェッチされる、第1プリフェッチングモードで動作することと、
前記以前に発行された1つ以上のプリフェッチ要求が不正確であると判定された場合に、前記データをプリフェッチすることなく、且つ、前記プロセッサ専用のキャッシュ及び前記1つ以上の中間キャッシュにおいて前記タグルックアップを実行することなく、前記タグが前記第1キャッシュからプリフェッチされる、第2プリフェッチングモードで動作することと、を更に含む、
請求項10の方法。
【請求項14】
前記以前に発行された1つ以上のプリフェッチ要求が正確であると判定されたか否かに基づいて、
前記第1プリフェッチングモード及び前記第2プリフェッチングモードのうち一方の動作を維持することと、
前記第1プリフェッチングモード及び前記第2プリフェッチングモードのうち一方から、前記第1プリフェッチングモード及び前記第2プリフェッチングモードのうち他方へと動作を切り替えることと、
のうち何れかを実行することを更に含む、
請求項13の方法。
【請求項15】
前記第1プリフェッチングモード及び前記第2プリフェッチングモードのうち一方の動作中に、1つ以上の発行されたプリフェッチ要求のプリフェッチ精度を監視し続けることを更に含む、
請求項13の方法。
【請求項16】
第1キャッシュ帯域幅の使用量がメモリ帯域幅閾値以上である場合に、前記データをプリフェッチすることなく、前記タグが前記第1キャッシュからプリフェッチされるように、第1キャッシュ帯域幅を監視することを更に含む、
請求項10の方法。
【請求項17】
前記タグプリフェッチ要求の前記タグが前記第1キャッシュにある場合に、前記第1キャッシュから前記タグをプリフェッチし、前記タグに対応する前記データをプリフェッチングすることなく、前記タグを前記タグキャッシュに配置する、
請求項10の方法。
【請求項18】
次のプリフェッチ要求に対して、
次に要求されるタグが前記タグキャッシュ内にあるかどうかを判定することと、
前記次に要求されるタグが前記タグキャッシュ内にあると判定された場合に、前記次に要求されるタグに対応するデータを前記第1キャッシュからプリフェッチすることと、
前記次に要求されるタグが前記タグキャッシュ内にないと判定された場合に、メインメモリからデータをプリフェッチすることと、を更に含む、
請求項17の方法。
【請求項19】
キャッシュプリフェッチングの方法をコンピュータに実行させる命令を含むコンピュータ可読記憶媒体であって、
前記命令は、
データをプリフェッチするためのプリフェッチ要求を発行することと、
前記データをフェッチするためのデータアクセス要求を発行することと、
以前に発行された1つ以上のプリフェッチ要求が不正確であると判定された場合に、第1キャッシュから前記データをプリフェッチすることなく、前記第1キャッシュ内の要求されたデータのメモリアドレスに対応する、タグをプリフェッチするためのタグプリフェッチ要求を発行することと、を含む、
コンピュータ可読記憶媒体。
【請求項20】
前記第1キャッシュは、ダイナミックランダムアクセスメモリ(DRAM)キャッシュであり、
以前に発行された1つ以上のプリフェッチ要求が不正確であると判定された場合に、前記プリフェッチ要求を発行するプロセッサ専用の第2キャッシュにおいて、又は、前記プロセッサ専用の前記第2キャッシュと前記DRAMキャッシュとの間の1つ以上の中間キャッシュにおいてタグルックアップを実行することなく、前記DRAMキャッシュにおいてタグルックアップを実行する、
請求項19のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年3月31日付けで出願された「METHOD AND APPARATUS FOR A DRAM CACHE TAG PREFETCHER」と題する係属中の米国特許出願第17/219、782号の利益を主張するものであり、この全体が参照により本明細書に援用される。
【背景技術】
【0002】
キャッシュメモリは、より大きいが(容量が大きい)、より遅い(アクセス時間が長い)メモリ部で頻繁にアクセスされるデータのコピーをキャッシュに格納することにより、より大きなランダムアクセスメモリ(RAM)部(例えば、メインメモリ)に格納されたデータへのアクセスを高速化するために使用される。プロセッサが、(例えば、アドレスによって識別される)より大きいメモリ部分へのアクセス(例えば、そこからデータを読み出す又はそこにデータを書き込む)を要求する場合に、プロセッサは、最初に、データのコピーがキャッシュに記憶されているかどうかを判定する。データのコピーがキャッシュに記憶されていると判定された場合、プロセッサは、キャッシュにアクセスし、データのより効率的なアクセスを容易にする。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
【
図1】本開示の1つ以上の特徴を実装することができる例示的なデバイスのブロック図である。
【
図2】本開示の1つ以上の特徴を実装するための例示的な構成要素を示すブロック図である。
【
図3】本開示の特徴に係る、DRAMキャッシュプリフェッチングの例示的な方法を示すフロー図である。
【
図4A】本開示の特徴に係る、プリフェッチング精度が高い条件で使用される第1プリフェッチングモードにおける例示的なフローを示すブロック図である。
【
図4B】本開示の特徴に係る、プリフェッチング精度が低い条件で使用される第2プリフェッチングモードにおける例示的なフローを示すブロック図である。
【発明を実施するための形態】
【0005】
頻繁にアクセスされるデータは、通常、キャッシュラインとも称される固定サイズのブロックとして、より大容量で遅いメモリからキャッシュへとコピーされる。キャッシュラインがキャッシュにコピーされると、コピーされたデータ及び要求されたメモリアドレスの一部(例えば、タグ)を含むキャッシュエントリが生成される(つまり、キャッシュに配置される)。後続メモリ要求に関連するタグがキャッシュ内のタグと一致すると、キャッシュヒットが発生し、キャッシュライン内のデータがアクセスされる。しかし、タグが一致しない場合、キャッシュミスが発生し、新しいエントリがキャッシュに割り当てられ、より大容量で遅いメモリからデータがキャッシュにコピーされ、アクセスされる。以下で詳細に説明するように、ダイレクトマッピング及びアソシアティブマッピングを含む様々なマッピングポリシーに従って、既存のエントリを新たなエントリで置き換える(例えば、削除させる)ことができる。
【0006】
主な種類のRAMには、スタティックランダムアクセスメモリ(SRAM)及びダイナミックランダムアクセスメモリ(DRAM)が含まれる。SRAMはDRAMよりも高速なメモリ(例えば、データアクセスにかかる時間が短い)であるため、キャッシュメモリとして使用されることが多い。DRAMはSRAMよりも低コスト(例えば、消費電力が少ない)であり、SRAMよりも大きなメモリ容量と密度を提供する。したがって、DRAMは、通常、メモリ(例えば、メインメモリ)における、より大容量であるが遅い(つまり、アクセス時間が長い)部分として使用される。
【0007】
メモリ量及び性能の増加が求められていることにより、最近では、オフチップメインメモリ用に大容量で高密度のキャッシュストレージを提供する方法として、キャッシュ(例えば、DRAMキャッシュ)を使用する従来型アプローチが開発されている。例えば、こうした従来型アプローチは、メモリ(例えば、メインメモリ等の不揮発性メモリ)における、より大きく(つまり、容量がより大きい)、より遅い(つまり、アクセス時間がより長い)部分を、オフチップメモリ(例えば、メインメモリ)よりも小さく、より高速であるが(すなわち、アクセス時間が短い)、SRAMよりも遅いキャッシュメモリ(例えば、DRAM、高帯域幅メモリ又は他の高性能メモリ)の部分と共に提供する。
【0008】
より速いメモリ(例えば、DRAM)は、より遅いメモリ用のキャッシュとして動作しているので、DRAMキャッシュにコピーされたデータは、上述したようにタグ付けされ、要求データがキャッシュ内にあるかどうかを判定する。更に、タグをSRAMに格納するための面積オーバーヘッドが実現不可能であるため、通常、キャッシュタグはDRAMキャッシュ内に格納される。したがって、データへのアクセス要求が出されると、要求データに関連付けられたタグが、キャッシュ内(例えば、DRAMキャッシュ内)のデータに関連付けられたタグと一致するかどうかをチェックすることにより、要求データがキャッシュされているかどうか(例えば、レベル1(L1)キャッシュ内、レベル2(L2)キャッシュ内、レベル3(L3)キャッシュ内及びDRAMキャッシュ内)を判定する。タグチェックは、セットアソシアティブDRAMキャッシュでは、データアクセスと共に直列化されるが、SRAMキャッシュでは並列で実行できる。DRAMキャッシュ内のシリアルタグ及びデータルックアップは、更なるレイテンシをもたらし、性能全体に悪影響を与える。
【0009】
このレイテンシを削減するために、ダイレクトマッピング及びアソシアティブマッピング等の様々なキャッシュマッピングポリシーを使用することができる。例えば、ダイレクトマッピングポリシーをキャッシュに使用する場合、各タグ(つまり、メモリアドレス)がキャッシュの特定部分(例えば、セットインデックス)に割り当てられる。インデックス及びオフセットを(例えば、ビット演算子又は簡素な算術によって)簡単に計算できるので、メモリとキャッシュとのマッピングを容易に実装でき、更に、多くのキャッシュラインを検索する必要がないので、データをキャッシュに配置する際に消費される電力も抑えられる。しかしながら、多くのアドレスが同じキャッシュインデックスにマッピングされている場合に、未使用のキャッシュラインが存在するにもかかわらず、ダイレクトマッピングキャッシュのキャッシュラインが繰り返し追い出される(エビクトされる)可能性がある。したがって、ダイレクトマッピングは、全体的なキャッシュヒットレイテンシの削減に効果的だが、キャッシュミスレートが全体的に高くなる場合がある。
【0010】
フルアソシアティブマッピングポリシーを使用する場合、新規エントリを任意のキャッシュロケーション(例えば、アドレス)にコピーすることができ、更に、データをキャッシュ内の何処にでも配置することができるので、競合ミスが削減される。しかし、フルアソシアティブキャッシュは、アドレス全体がタグとして使用されるため、実装コストが非常に高く、タグ格納オーバーヘッドが大幅に増加する。
【0011】
更に、データが何れのキャッシュラインにも配置され得るので、キャッシュ内の各キャッシュブロックのタグをチェックする必要があり、これにより、電力消費、レイテンシ及びメモリ帯域幅が増加する。したがって、アソシアティブキャッシュがダイレクトマッピングされたキャッシュよりもキャッシュミスレートが低いものの、ダイレクトマッピングされたキャッシュよりもハードウェアコスト、電力消費、レイテンシ及びメモリ帯域幅使用量が増加する。
【0012】
Nウェイセットアソシアティブマッピングポリシーを使用する場合、各エントリがN本のキャッシュラインを含むセットに割り当てられ、各ラインが任意のタグからのデータを保持できる。セットアソシアティブキャッシュの場合、Nウェイセットアソシアティブポリシーにおけるライン数Nが大きいほど、アソシアティビティが大きくなり、キャッシュミスの確率が低くなる。しかし、連想性の増加には、ライン数Nの増加及び検索するアドレス数の増加を伴い、これにより、レイテンシ及び電力消費が増加する。
【0013】
幾つかの従来技術には、タグルックアップに関連するレイテンシ(つまり、タグアクセスレイテンシ)を最小化する試みとして、特殊なハードウェアデータ構造が含まれている。例えば、幾つかの従来技術では、予測子を使用して、要求データがキャッシュヒットになるか、あるいは、キャッシュミスになるかを予測する。しかし、予測子の使用は、メモリ容量及び追跡可能な情報量に制約され、これにより、全体的な性能が制限される。更に、こうした従来技術では、許容できるアクセスレイテンシと併せて、十分な連想性が得られない。
【0014】
データプリフェッチングとは、実際にデータの実行が要求される前に、より速い方のメモリに配置されるように、より遅い方のメモリからデータをフェッチングすることによって、性能を向上させる(例えば、データアクセスレイテンシを削減する)ために使用される技術である。しかし、効率的なプリフェッチングは、精度及び適時性の双方に依存する。キャッシュラインを削除する前に、プリフェッチされたキャッシュラインがフェッチされ、要求元(例えば、CPUコア)によって使用された場合、プリフェッチは正確である。プリフェッチとは、データが実際に要求され、実行で使用される前に、データがフェッチされ、キャッシュに格納されるタイミングで実行される、適時的なものである。
【0015】
従来のプリフェッチングシステムでは、プリフェッチングの結果が不正確な場合(つまり、キャッシュからプリフェッチされたデータが、複数クロックサイクル以内に、あるいは、データがキャッシュから削除される前に実行要求されない場合)、こうした従来型システムは、プリフェッチ回数を削減するか、あるいは、プリフェッチングを停止する(例えば、プリフェッチャを無効にする)ことによって、不正確さの問題に対処している。しかし、プリフェッチが不正確であっても、得られるヒットレートはゼロではないため、これらのアプローチが効率的であるとは言えない。
【0016】
本開示の特徴は、帯域幅使用量を効率的に維持しつつ、以前のプリフェッチからのフィードバック情報に基づいて、タグプリフェッチを推測的に発行することにより、タグアクセスレイテンシを削減する方法及び装置を提供する。プリフェッチャを無効にし、又は、プリフェッチ数を削減する代わりに、対応するデータをプリフェッチすることなく、タグをプリフェッチする。したがって、プリフェッチング帯域幅は、データではなく、タグについて消費されるので、不正確であると判定されたプリフェッチのデータについて、帯域幅が無駄になるのを防止できる。更に、タグをフェッチする際のレイテンシが削減され、その結果、レイテンシ及びエネルギー消費が削減されることにより、より効率的な実行が可能となる。本開示の特徴は、セットアソシアティブDRAMキャッシュのプリフェッチの精度を示すフィードバックを利用することにより、従来のセットアソシアティブキャッシュに起因するレイテンシを増加させることなく、セットアソシアティブキャッシュによるキャッシュミスを低減させるという利点を活用する。プリフェッチが不正確であると判定された場合、プロセッサ専用のキャッシュ(例えば、L1キャッシュ)及び中間キャッシュ(例えば、L2キャッシュ、L3キャッシュ)からのプリフェッチングが迂回され、タグに対応するデータをプリフェッチすることなく、DRAMキャッシュからタグがプリフェッチされ、これにより、DRAMキャッシュ内のデータのプリフェッチングが不正確となる帯域幅の使用が削減される。更に、DRAMキャッシュからタグをプリフェッチするだけで(つまり、データをプリフェッチすることなく)、実際にデータの実行が要求された場合、後になってDRAMキャッシュからタグをフェッチする際のアクセスレイテンシが削減される。帯域幅の削減及びDRAMアクセスレイテンシの削減によって、キャッシュの連想性とDRAMキャッシュ・ヒット・レートが上がりやすくなり、全体的な性能が向上する。
【0017】
説明を簡略化するため、本明細書では、DRAMキャッシュからタグプリフェッチを推測的に発行する例について説明する。しかし、オフチップメモリ(例えば、メインメモリ)にアクセスするよりも高速でアクセスされる他の種類の非SRAMキャッシュからタグプリフェッチを推測的に発行することによって、本開示の特徴を実装できる。
【0018】
メモリ及びプロセッサを含む処理デバイスが提供される。メモリは、第1キャッシュを含む。プロセッサは、データをプリフェッチするためのプリフェッチ要求を発行することと、データをフェッチするためのデータアクセス要求を発行することと、更に、以前に出された1つ以上のプリフェッチ要求が不正確であると判定された場合に、第1キャッシュからデータをプリフェッチすることなく、第1キャッシュ内の要求データのメモリアドレスに対応する、タグをプリフェッチするためのタグプリフェッチ要求を発行することと、を実行するように構成されている。第1キャッシュは、例えば、ダイナミックランダムアクセスメモリ(DRAM)キャッシュであり、この処理デバイスは、プロセッサ専用の第2キャッシュと、プロセッサ専用の第2キャッシュとDRAMキャッシュとの間の1つ以上の中間キャッシュと、を更に含む。
【0019】
キャッシュプリフェッチングの方法が提供されており、この方法は、データをプリフェッチするためのプリフェッチ要求を発行することと、データをフェッチするためのデータアクセス要求を発行することと、更に、以前に出された1つ以上のプリフェッチ要求が不正確であると判定された場合に、第1キャッシュからデータをプリフェッチすることなく、第1キャッシュ内の要求データのメモリアドレスに対応する、タグをプリフェッチするためのタグプリフェッチ要求を発行することと、を含む。
【0020】
非一時的なコンピュータ可読記憶媒体であって、コンピュータに対して、キャッシュプリフェッチングの方法を実行させる命令を含み、この命令は、データをプリフェッチするためのプリフェッチ要求を発行することと、データをフェッチするためのデータアクセス要求を発行することと、更に、以前に出された1つ以上のプリフェッチ要求が不正確であると判定された場合に、第1キャッシュからデータをプリフェッチすることなく、第1キャッシュ内の要求データのメモリアドレスに対応する、タグをプリフェッチするためのタグプリフェッチ要求を発行することと、を実行するように構成されている。
【0021】
図1は、本開示の1つ以上の特徴が実装され得る例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含み得る。デバイス100は、プロセッサ102、メモリ104、記憶装置106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、
図1に示されていない追加の構成要素を含み得ることを理解されたい。
【0022】
様々な代替例では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUとすることができる。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に位置しているか、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM(DRAM)、キャッシュ)を含む。
【0023】
記憶装置106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
【0024】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信できるようにする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信できるようにする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であること、並びに、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合に、同じ方式で動作することに留意されたい。出力ドライバ114は、表示デバイス118に結合されたアクセラレーテッド処理デバイス(accelerated processing device、APD)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算及びグラフィックスレンダリングコマンドを処理し、表示のために表示デバイス118にピクセル出力を提供するように構成されている。以下で更に詳細に説明するように、APD116は、単一命令複数データ(single-instruction-multiple-data、SIMD)パラダイムに従って計算を行うように構成された1つ以上の並列処理ユニットを含む。こうして、様々な機能は、本明細書では、APD116によって又はAPD116と併せて実行されるものとして説明されているが、様々な代替例では、APD116によって行われるものとして説明される機能は、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、表示デバイス118にグラフィック出力を提供するように構成された同様の能力を有する他のコンピューティングデバイスによって、追加的又は代替的に行われる。例えば、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書に説明される機能を行うように構成され得ることが企図される。代替的に、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが、本明細書に説明される機能を行うことが企図される。
【0025】
図2は、本開示の1つ以上の特徴を実装するための例示的な構成要素を示すブロック図である。
図2で示される構成要素は、例えば、
図1に示されるデバイス100等の処理デバイスの構成要素である。
図2で見られるように、構成要素には、メモリ104(例えば、メインメモリ)、プロセッサコア204、メモリコントローラ/プロセッサ208、レベル1(L1)キャッシュ212、レベル2(L2)キャッシュ214、レベルN(LN)DRAMキャッシュ216、キャッシュコントローラ210、218、220、プリフェッチャ222、224、226、及び、タグキャッシュ228が含まれる。
【0026】
プロセッサコア204は、例えば、CPU又はアクセラレーテッドプロセッサ(例えば、GPU)等の任意のプロセッサタイプの一部である。
【0027】
L1キャッシュ212、L2キャッシュ214、及び、LN DRAMキャッシュ216は、セットアソシアティブマッピングポリシーを実装するように構成されている。本開示の特徴は、任意のレベル数(N)のキャッシュを使用して実装することができる。例えば、
図2に示されるように、構成要素は、複数のプロセッサコア204を含む。各コア204は、専用の(他のコアと共有されない)L1キャッシュ212と、対応するL1キャッシュ212と通信し、対応するL1キャッシュ212を使用してデータを処理するように構成されたL1キャッシュコントローラ218と、を含む。
【0028】
図2で見られるように、構成要素は、レベル2キャッシュ214と通信し、L2キャッシュ214を使用してデータを処理するように構成されたL2キャッシュコントローラ220も更に含む。L2キャッシュ214は、プロセッサコア204によって共有される。説明を簡略化するために図示していないが、デバイスは、キャッシュ階層に任意の数の追加キャッシュ(例えば、L3キャッシュ)を含めることができる。例えば、各L3キャッシュは、単一プロセッサ(例えば、CPU又はGPU)あるいは複数のプロセッサコアによって共有することができる。
【0029】
各キャッシュコントローラは、下位レベルのキャッシュコントローラ及び次のレベルのキャッシュコントローラと通信する。例えば、説明を簡略化するために、キャッシュコントローラ220は、キャッシュコントローラ218及びキャッシュコントローラ210と通信するように示されている。しかし、任意のNレベルを使用できるので、キャッシュコントローラ220は、レベル3キャッシュコントローラ(図示せず)と通信できることを理解されたい。LN DRAMキャッシュ216及びLN DRAMキャッシュコントローラ210は、例えば、CPU又はGPUのキャッシュ等のように、同じダイ又は複数のダイ上に配置可能な複数のプロセッサのキャッシュと通信し、これらのキャッシュによって共有可能である。更に、
図2では、LN DRAMキャッシュ216がメインメモリ104とは別のものとして示されているが、レベルN DRAMキャッシュ216は、メインメモリ104とは別のもの又はその一部としてもよい。
【0030】
図2で更に示されるように、各レベルはプリフェッチャ222、224、226を含む。幾つかの例において、1つ以上のレベルは、独自の専用プリフェッチャを含まない。本開示の特徴は、任意の数のプリフェッチャで実装することができる。プリフェッチャは、ハードウェア、ソフトウェア、あるいは、ハードウェアとソフトウェアとの組み合わせで実装可能である。例えば、ハードウェアベースのプリフェッチングは、通常、対応するキャッシュと通信する専用ハードウェア機構を介して実装され、実行中のプログラムによって要求される命令及びデータを動的に(コンパイラに依存することなく実行時に)監視し、要求される次のデータを予測し、更に、プログラムを実行するために実際にデータが要求される前に、データを要求元のプロセッサのキャッシュにプリフェッチする。ソフトウェアベースのプリフェッチングは、例えば、プログラムがコンパイルされる際に、命令を解析し、追加のプリフェッチング命令をプログラムに挿入するように、コンパイラを構成することによって実装される。
【0031】
メモリコントローラ/プロセッサ208は、メモリ104(例えば、メインメモリ)及びキャッシュコントローラ220、218と通信する。
図2で見られるように、複数のクライアント206は、メモリコントローラ/プロセッサ208と通信する。メモリコントローラ/プロセッサ208は、メモリ(例えば、メモリ104、L1キャッシュ212、L2キャッシュ214、LNキャッシュ216)との間のデータの流れを制御する。例えば、メモリからデータにアクセスする要求が出されると、メモリコントローラ/プロセッサ208は、メモリとの間の読み取り又は書き込み(例えば、キャッシュコントローラ218を介してキャッシュ212にアクセスし、キャッシュコントローラ220を介してキャッシュ214にアクセスし、キャッシュコントローラ210及びメモリ104を介してキャッシュ216にアクセスする)によって、要求を処理する。メモリコントローラ/プロセッサ208は、要求を受信し、メモリを割り当て、1つ以上のキャッシュへのアクセスを制御し、更に、本明細書で述べる他の様々な機能を実行するように構成されている。例えば、以下で詳細に説明するように、メモリコントローラ/プロセッサ208は、データのプリフェッチ要求を出し、データプリフェッチングを伴わないタグプリフェッチ要求を出し、データをフェッチするためのデータアクセス要求を出し、決定されたプリフェッチング精度及びDRAMキャッシュ帯域幅使用量に基づいて、第1プリフェッチングモード及び第2プリフェッチングモードでの動作を持続又は切り替えるように構成されている。
【0032】
図3は、本開示の特徴に係る、DRAMキャッシュプリフェッチングの例示的な方法を示すフロー図である。
【0033】
ブロック302で示されるように、方法300は、第1プリフェッチングモード及び第2プリフェッチングモードの何れかに従ってデータプリフェッチを発行する(出す)ことを含む。例えば、アプリケーションの実行は、
図4A及び
図4Bで示される第1プリフェッチングモード及び第2プリフェッチングモードの何れか一方で開始する(例えば、デフォルト)。
【0034】
図4A及び
図4Bは、本開示の特徴に係る、2つの異なるプリフェッチングモードを示すブロック図である。
図4Aでは、プリフェッチング精度が高い条件で使用される第1プリフェッチングモードを示している。
図4Bでは、プリフェッチング精度が低い条件で使用される第2プリフェッチングモードを示している。
【0035】
各レベルキャッシュ(例えば、L1キャッシュ、L2キャッシュ、L3キャッシュ)には、次にアクセスされるデータを予測し、予測されたデータに関するメモリアクセス要求の前に、対応するキャッシュに関するプリフェッチ要求を出そうとするプリフェッチャを含むことができる。しかし、説明を簡略化するため、
図4A及び
図4Bで示す例は、プロセッサコア用の単一プリフェッチャ402(例えば、
図2のプリフェッチャ222)を含み、このプリフェッチャは、プリフェッチ要求(
図4A及び
図4BにおいてPRとして示される)を上流の上位レベルキャッシュ及びDRAMキャッシュ404に発行する。更に、
図4A及び
図4Bで示す例には、L1キャッシュ、L2キャッシュ及びL3キャッシュが含まれるが、本開示の特徴は、任意の階層数のキャッシュレベルを使用して実装可能である。
【0036】
図4Aで示す第1プリフェッチングモードでの動作中、タグルックアップが専用L1キャッシュ及び中間レベルキャッシュ(例えば、L2キャッシュ及びL3キャッシュ)で実行され、タグとこのタグに対応するデータの双方が、専用L1キャッシュ、中間L2キャッシュ及びL3キャッシュ、あるいは、DRAMキャッシュ404からプリフェッチされ、要求元プリフェッチャ402に返される。
【0037】
例えば、
図4Aで見られるように、プリフェッチ要求元402からプリフェッチが出される。L1キャッシュをチェックし、プリフェッチ要求のタグがL1キャッシュ内にあるかどうかを判定する。タグがL1キャッシュにあると判定された場合、そのタグが既に最下位レベルのキャッシュにあるため、プリフェッチ要求は破棄される。タグがL1キャッシュ内にないと判定された場合、L2キャッシュをチェックし、プリフェッチ要求のタグがL2キャッシュにあるかどうかを判定する。タグがL2キャッシュにあると判定された場合、データはL1キャッシュに戻され、タグ及びデータはL1キャッシュに格納される。タグがL2キャッシュ内にないと判定された場合、L3キャッシュをチェックし、プリフェッチ要求のタグがL3キャッシュにあるかどうかを判定する。タグがL3キャッシュにあると判定された場合、データはL2キャッシュに戻されてから、L1キャッシュに戻される。タグ及びデータはL1キャッシュに格納される。L2キャッシュ割り当てポリシーに応じて、タグ及びデータをL2キャッシュに格納することもできる。タグ及びデータがL3キャッシュ内にないと判定された場合、DRAMキャッシュ404をチェックして、プリフェッチ要求が対応するキャッシュにあるかどうかを判定する。タグ及びデータの双方がDRAMキャッシュ404からフェッチされ、タグヒット時に、データは下位レベルのキャッシュ(L3、L2及びL1)に戻され、タグ及びデータはL1キャッシュに格納される。L2キャッシュ及びL3キャッシュの割り当てポリシーに応じて、タグ及びデータをL2キャッシュ及びL3キャッシュに格納することもできる。
【0038】
図4Bで示す第2プリフェッチングモードでの動作中、タグに対応するデータをプリフェッチすることなく、タグがDRAMキャッシュ404からプリフェッチされて、DRAMキャッシュ404内のデータのプリフェッチングが不正確となる帯域幅の使用が削減される。すなわち、タグプリフェッチ要求は、物理アドレス及びプリフェッチ種類を示すメタデータのみを含む。付加的又は代替的に、L1キャッシュ、L2キャッシュ及びL3キャッシュでは、タグルックアップが実行されない(つまり、迂回される)。すなわち、タグプリフェッチ要求は、DRAMキャッシュコントローラ(例えば、
図2のキャッシュコントローラ210)へと直接送信され、キャッシュ階層を迂回する。タグプリフェッチ要求は、DRAMキャッシュコントローラによって受信され、別のキュー(例えば、DRAMキャッシュ216)に格納されて処理される。将来の更新時にタグキャッシュとタグとの統合が容易になるように、プリフェッチされたタグは、設定されたメタデータと共にタグキャッシュに配置される。着信要求があるか、タグプリフェッチキューをルックアップし、重複する要求は全て破棄される。
【0039】
例えば、
図4Bで見られるように、プリフェッチ要求がプリフェッチャ402によって出されると、L1キャッシュ、L2キャッシュ及びL3キャッシュを迂回して、タグルックアップをDRAMキャッシュ404で実行する。プリフェッチ要求のタグがDRAMキャッシュ404内にある場合、タグはDRAMキャッシュからプリフェッチされ(例えば、
図2に示すプリフェッチャ226によって)、タグに対応するデータをプリフェッチすることなく、タグキャッシュ406に配置される。したがって、プリフェッチング帯域幅は、データではなく、タグについて消費されるので、不正確であると判定されたプリフェッチのデータについて帯域幅が無駄になるのを防止できる。更に、DRAMキャッシュ404から対応するデータをプリフェッチすることなく、タグをプリフェッチするだけで、実際にデータの実行が要求された場合、後になってDRAMキャッシュからタグをフェッチングする際のアクセスレイテンシが削減される。
【0040】
判定ブロック304で示されるように、方法300は、プリフェッチ精度がプリフェッチ精度閾値以下であるかどうかを判定することを含む。例えば、キャッシュラインが削除される前に、以前に出された複数のプリフェッチがフェッチされ、要求元(例えば、CPU又はGPUのプロセッサ/コントローラ)により使用されたか否かについて判定する。プリフェッチ精度閾値は、例えば、以前に出された所定数のプリフェッチにおける不正確なプリフェッチ、つまり、所定数のクロックサイクルにわたる不正確な複数のプリフェッチの比率又は割合であり、以前の1つ以上のプリフェッチが不正確であると判定されたかどうかについて判定を実行する。
【0041】
判定ブロック304において、プリフェッチ精度がプリフェッチ精度閾値(例えば、許容可能な精度)以下ではないと判定された場合(
図3の「いいえ」)、この方法は、ブロック306で見られるように、第1プリフェッチングモードでの動作に切り替えるか、あるいは、これを維持することを含む。すなわち、各キャッシュ(例えば、L1キャッシュ、L2キャッシュ~DRAMキャッシュ)について、タグルックアップを実行し、タグとタグに対応するデータの双方が何れかのキャッシュからプリフェッチされ、要求元プリフェッチャ(例えば、
図4のプリフェッチャ402又は
図2のプロセッサコア204のプリフェッチャ222)に返される。
【0042】
判定ブロック304において、プリフェッチ精度がプリフェッチ精度閾値以下であると判定された場合(
図3の「はい」)、この方法は、ブロック308で見られるように、第2プリフェッチングモードでの動作に切り替えるか、あるいは、これを維持することを含む。つまり、L1キャッシュ、L2キャッシュ及びL3キャッシュでは、タグルックアップが実行されず(つまり、迂回される)、タグに対応するデータをプリフェッチすることなく、タグがDRAMキャッシュ404からプリフェッチされて、DRAMキャッシュ404内のデータのプリフェッチングが不正確となる帯域幅の使用が削減される。
【0043】
更に、第1プリフェッチングモードでの動作中、ブロック304において、プリフェッチ精度を監視し続ける。したがって、判定ブロック304において、プリフェッチ精度がプリフェッチ精度閾値以下であると判定された場合(
図3の「はい」)、プリフェッチングモードは、第1プリフェッチングモードでの動作から第2プリフェッチングモードでの動作に切り替わる。同様に、第2プリフェッチングモードでの動作中、ブロック304において、プリフェッチ精度を監視し続ける。したがって、判定ブロック304において、プリフェッチ精度がプリフェッチ精度閾値以下ではないと判定された場合(
図3の「いいえ」)、プリフェッチングモードは、第2プリフェッチングモードでの動作から第1プリフェッチングモードでの動作に切り替わる。
【0044】
データをプリフェッチすることなくDRAMキャッシュ404からタグをプリフェッチすることに加えて、プリフェッチングの機能は、様々な種類のプリフェッチャに基づいて異なり得る。例えば、データストリームプリフェッチャ又はディレクションプリフェッチャ等のプリフェッチャは、プリフェッチ精度に基づいて、バイナリ方式で制限をオン/オフすることが可能である。つまり、データプリフェッチが出されていない場合でも、将来見込まれる全ての要求データストリームについて、タグプリフェッチがDRAMキャッシュに出される。
【0045】
ストライドプリフェッチャは、プリフェッチ精度に基づいて距離制限を設定することができる。したがって、プリフェッチ精度がプリフェッチ精度閾値以下であると判定された場合、次の複数のストライドの代わりに、次のストライドをプリフェッチするように、ストライドプリフェッチャを構成することができる。ストライドプリフェッチ精度が低いと判定された場合、各ストライドについて、データを伴わないタグプリフェッチがDRAMキャッシュに出される。
【0046】
領域ベースのプリフェッチャは、プリフェッチ精度に基づいて距離制限を設定することができる。例えば、直近でアクセスされたメモリ領域のミスマップを監視するように、領域ベースのプリフェッチャが構成される。キャッシュラインへのデータアクセス要求ミスごとに、領域ベースのプリフェッチャは、追跡されたメモリ領域について、信頼度カウンタを更新する。次にデータアクセス要求ミスが発生すると、領域ベースのプリフェッチャは、信頼性閾値を超えた領域のキャッシュラインにプリフェッチ要求を発行するだけである。最後のデータアクセス要求ミスに属する領域のDRAMキャッシュについて、データを伴わないタグプリフェッチが出される。
【0047】
将来のデータプリフェッチ又は需要要求について、タグキャッシュをチェックする。タグキャッシュヒットが発生すると、DRAMキャッシュコントローラは、DRAMキャッシュからデータをフェッチするだけである。タグキャッシュミスが発生すると、より遅いメモリ(例えば、メインメモリ、ストレージクラスメモリ)からデータがフェッチされる。キャッシュライン削除とキャッシュラインフィルが発生すると、それに応じて、タグキャッシュが更新され、タグキャッシュに常駐するタグとDRAMに常駐するタグとの間に食い違いが生じないようにする。
【0048】
プリフェッチが不正確なデータをプリフェッチするための帯域幅ペナルティはなく、正確なプリフェッチの多くでは、ヒットレイテンシが削減される。プリフェッチタグは、メモリ帯域幅利用率をわずかに増加させ得る。したがって、帯域幅使用量がメモリ帯域幅閾値以上(例えば、メモリ帯域幅の使用量が60%以上)の場合、着信需要要求に関するDRAMキュー遅延が長くなるのを防止するために、第2プリフェッチングモードが使用されるように、DRAM帯域幅を継続的に監視する。
【0049】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
【0050】
図面及び/又は本明細書で述べる様々な機能ユニット(プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、アクセラレーテッド処理デバイス116、プロセッサコア204、メモリコントローラ208、レベル1(L1)キャッシュ212、レベル2(L2)キャッシュ214とレベルN(LN)DRAMキャッシュ216、404、キャッシュコントローラ210、218、220、プリフェッチャ222、224、226、402、及び、タグキャッシュ228、406を含むが、これらに限定されない)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体若しくは別の媒体に格納されたプログラム、ソフトウェア若しくはファームウェアとして実装することができる。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実装することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、本開示の特徴を実装するプロセッサを製造する。
【0051】
本明細書に提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
【国際調査報告】