(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-07
(45)【発行日】2024-08-16
(54)【発明の名称】システムプローブアウェアによる最終レベルキャッシュの挿入バイパス
(51)【国際特許分類】
G06F 12/0831 20160101AFI20240808BHJP
G06F 12/084 20160101ALI20240808BHJP
G06F 12/0888 20160101ALI20240808BHJP
【FI】
G06F12/0831
G06F12/084
G06F12/0888 102
(21)【出願番号】P 2022515508
(86)(22)【出願日】2020-09-24
(86)【国際出願番号】 US2020052503
(87)【国際公開番号】W WO2021061993
(87)【国際公開日】2021-04-01
【審査請求日】2023-08-10
(32)【優先日】2019-09-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール ジェームズ モイヤー
(72)【発明者】
【氏名】ジェイ フライシュマン
【審査官】豊田 真弓
(56)【参考文献】
【文献】特表2008-515095(JP,A)
【文献】国際公開第2015/111135(WO,A1)
【文献】特開2009-122787(JP,A)
【文献】米国特許出願公開第2013/0091330(US,A1)
【文献】米国特許第7694075(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/0831
G06F 12/084
G06F 12/0888
(57)【特許請求の範囲】
【請求項1】
システムであって、
プローブフィルタと、
キャッシュと、を備え、
前記システムは、
前記プローブフィルタのリコールプローブ率を監視することと、
前記リコールプローブ率が第1の閾値よりも大きいことに応じて、前記キャッシュを2つの部分に分割することと、
前記キャッシュの第1の部分に第1の挿入ポリシーを適用して、前記第1の部分のヒット率を監視することと、
前記キャッシュの第2の部分に第2の挿入ポリシーを適用することであって、前記第2の挿入ポリシーは、前記第1の部分のヒット率と第2の閾値との比較に基づいて選択される、ことと、
を行うように構成されている、
システム。
【請求項2】
前記ヒット率が前記第2の閾値よりも小さい場合、前記第2の挿入ポリシーはバイパスポリシーである、
請求項1のシステム。
【請求項3】
前記ヒット率が前記第2の閾値以上である場合、前記第2の挿入ポリシーは非バイパスポリシーである、
請求項1のシステム。
【請求項4】
前記第1の挿入ポリシーは非バイパスポリシーである、
請求項1のシステム。
【請求項5】
前記第1の部分のサイズは前記第2の部分のサイズよりも小さい、
請求項1のシステム。
【請求項6】
前記リコールプローブ率が前記第1の閾値以下であることに応じて、前記システムは、前記キャッシュ全体に非バイパスポリシーを適用するように構成されている、
請求項1のシステム。
【請求項7】
前記キャッシュは、2つ以上のプロセッサコアによって共有されている、
請求項1のシステム。
【請求項8】
方法であって、
プローブフィルタが、前記プローブフィルタのリコールプローブ率を監視することと、
前記リコールプローブ率が第1の閾値よりも大きいことに応じて、キャッシュを2つの部分に分割することと、
前記キャッシュの第1の部分に第1の挿入ポリシーを適用して、前記第1の部分のヒット率を監視することと、
前記キャッシュの第2の部分に第2の挿入ポリシーを適用することであって、前記第2の挿入ポリシーは、前記第1の部分のヒット率と第2の閾値との比較に基づいて選択される、ことと、を含む、
方法。
【請求項9】
前記ヒット率が前記第2の閾値よりも小さい場合、前記第2の挿入ポリシーはバイパスポリシーである、
請求項8の方法。
【請求項10】
前記ヒット率が前記第2の閾値以上である場合、前記第2の挿入ポリシーは非バイパスポリシーである、
請求項8の方法。
【請求項11】
前記第1の挿入ポリシーは非バイパスポリシーである、
請求項8の方法。
【請求項12】
前記第1の部分のサイズは前記第2の部分のサイズよりも小さい、
請求項8の方法。
【請求項13】
前記リコールプローブ率が前記第1の閾値以下であることに応じて、前記方法は、前記キャッシュ全体に非バイパスポリシーを適用することをさらに含む、
請求項8の方法。
【請求項14】
前記キャッシュは、2つ以上のプロセッサコアによって共有されている、
請求項8の方法。
【請求項15】
装置であって、
キャッシュ階層を含む処理ノードであって、前記キャッシュ階層は、複数のプロセッサコアによって共有される所定のキャッシュを含む、処理ノードと、
メモリと、
前記メモリに結合されたメモリコントローラと、
前記メモリコントローラに結合されたプローブフィルタと、を備え、
前記装置は、
前記プローブフィルタのリコールプローブ率を監視することと、
前記リコールプローブ率が第1の閾値よりも大きいことに応じて、前記所定のキャッシュを2つの部分に分割することと、
前記所定のキャッシュの第1の部分に第1の挿入ポリシーを適用して、前記第1の部分のヒット率を監視することと、
前記所定のキャッシュの第2の部分に第2の挿入ポリシーを適用することであって、前記第2の挿入ポリシーは、前記第1の部分のヒット率と第2の閾値との比較に基づいて選択される、ことと、
を行うように構成されている、
装置。
【請求項16】
前記ヒット率が前記第2の閾値よりも小さい場合、前記第2の挿入ポリシーはバイパスポリシーである、
請求項15の装置。
【請求項17】
前記ヒット率が前記第2の閾値以上である場合、前記第2の挿入ポリシーは非バイパスポリシーである、
請求項15の装置。
【請求項18】
前記第1の挿入ポリシーは非バイパスポリシーである、
請求項15の装置。
【請求項19】
前記第1の部分のサイズは前記第2の部分のサイズよりも小さい、
請求項15の装置。
【請求項20】
前記リコールプローブ率が前記第1の閾値以下であることに応じて、前記装置は、前記所定のキャッシュ全体に非バイパスポリシーを適用するように構成されている、
請求項15の装置。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップで形成されたメインメモリを使用する。しかしながら、DRAMチップは、比較的長いアクセス時間に悩まされる。性能を向上させるために、データプロセッサには、通常、キャッシュとして知られるローカルの高速メモリが少なくとも1つ含まれる。マルチコアデータプロセッサでは、各データプロセッサコアは、その専用のレベル1(L1)キャッシュを有し、同時に他のキャッシュ(例えばレベル2(L2)、レベル3(L3))がデータプロセッサコアで共有される。
【0002】
コンピューティングシステムのキャッシュサブシステムには、データブロックを記憶する高速キャッシュメモリが含まれている。本明細書で使用される「ブロック」という用語は、隣接しているメモリ位置に記憶されたバイトのセットであり、これらは、コヒーレンシ目的のために単位として取り扱われる。本明細書で使用される「キャッシュブロック」、「ブロック」、「キャッシュライン」及び「ライン」という用語は、それぞれ交換可能である。いくつかの実施形態では、ブロックは、キャッシュの割り当て及び割り当て解除の単位であってよい。ブロックのバイト数は、設計上の選択に応じて変動し、任意のサイズであってよい。さらに、「キャッシュタグ」、「キャッシュラインタグ」、「キャッシュブロックタグ」という用語は、それぞれ交換可能である。
【0003】
マルチノードコンピュータシステムでは、様々な処理ノードで使用されているデータのコヒーレンシを維持するために、特別な対策を講じなくてはならない。例えば、プロセッサが特定のメモリアドレスのデータにアクセスしようとする場合、プロセッサは、先ず、メモリが別のキャッシュに記憶され変更されているかどうかを判断しなければならない。このキャッシュコヒーレンシプロトコルを実装するために、キャッシュには、通常、システム全体でデータコヒーレンシを維持するためにキャッシュラインのステータスを示す複数のステータスビットが含まれている。一般的なコヒーレンシプロトコルの1つは、「MOESI」プロトコルとして知られている。MOESIプロトコルによれば、各キャッシュラインには、ラインが何れのMOESI状態にあるかを示すステータスビットが含まれている。これらには、キャッシュラインが変更されている(M)こと、キャッシュラインが排他的(E)若しくは共有されている(S)こと、又は、キャッシュラインが無効である(I)ことを示すビットが含まれている。所有(O)状態は、ラインが1つのキャッシュにおいて変更されていること、他のキャッシュに共有コピーが存在し得ること、及び、メモリ内のデータが古いことを示す。
【0004】
プローブフィルタは、高性能でスケーラブルなシステムにおける主要な構成要素である。プローブフィルタは、システムで現在使用されているキャッシュラインを追跡するために使用される。プローブフィルタは、必要な場合にのみメモリ要求又はプローブ要求を実行することによって、メモリ帯域幅及びプローブ帯域幅削減の両方を向上させる。論理的には、プローブフィルタは、キャッシュコヒーレンスプロトコルを適用するキャッシュラインのホームノードにある。プローブフィルタの動作原理は包括的である(すなわち、中央処理装置(CPU)キャッシュに存在するラインは、プローブフィルタに存在しなければならない)。
【0005】
プローブフィルタは、通常、予想されるトラフィックパターンに対する全てのキャッシュをカバーするサイズになっているが、プローブフィルタは、特定のタイプの非標準トラフィックで容量の問題が発生する可能性がある。例えば、プローブフィルタで大きなインデックス競合が発生するトラフィックは、容量の問題を引き起こす可能性がある。また、複数のキャッシュラインを追跡するプローブフィルタエントリの場合にスパースアクセスをもたらすトラフィックは、容量の問題を引き起こす可能性がある。レベル3(L3)キャッシュ及び最終レベルキャッシュ(LLC)が非常に大きい場合、システムプローブフィルタは、容量にストレスがかかり、プローブフィルタに新たなキャッシュライン用のスペースを確保するためにキャッシュからのリコールが生じる。極端な場合、ラインが時期尚早にエビクションされるため、LLCが役に立たなくなり、システムが最大スループットのリコールフローをサポートするように設計されていない場合、性能がさらに低下する可能性がある。
【0006】
本明細書に記載される方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによってより良く理解され得る。
【図面の簡単な説明】
【0007】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】処理ノードの一実施形態のブロック図である。
【
図3】マルチノードシステムの一部の一実施形態のブロック図である。
【
図4】システムオンチップの一部の一実施形態のブロック図である。
【
図5】システムプローブ認識による最終レベルキャッシュの挿入バイパスポリシーを採用する方法の一実施形態を示す一般化されたフロー図である。
【
図6】キャッシュの一部に対する挿入ポリシーを決定する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0008】
以下の説明では、本明細書で提示する方法及びメカニズムの十分な理解をもたらすために、多くの特定の詳細が示されている。しかしながら、当業者は、これらの特定の詳細無しに様々な実施形態が実施され得ることを認識すべきである。例えば、本明細書で説明するアプローチを曖昧にするのを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令、及び、技術が詳細に示されていない。説明を簡潔及び明瞭にするために、図面に示す要素が必ずしも縮尺通りに描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素と比べて誇張され得る。
【0009】
システムプローブフィルタアウェアによる最終レベルキャッシュの挿入バイパスポリシー(system probe filter aware last level cache insertion bypassing policies)を採用するための様々なシステム、装置、方法及びコンピュータ可読記憶媒体が本明細書に開示されている。一実施形態では、システムは、複数のノードと、プローブフィルタと、最終レベルキャッシュ(LLC)と、を含む。プローブフィルタは、生成されたリコールプローブ率を監視し、リコールプローブ率が第1の閾値よりも大きい場合、システムは、共有キャッシュのキャッシュ分割及び監視フェーズを開始する。したがって、キャッシュは、2つの部分に分割される。第1の部分のヒット率が第2の閾値よりも大きい場合、このシナリオではキャッシュが有用であるため、第2の部分は非バイパス挿入ポリシーを有する。しかしながら、第1の部分のヒット率が第2の閾値以下の場合、LLCがこの場合には有用でないため、第2の部分はバイパス挿入ポリシーを有する。これは、LLCのヒット率が低い場合に生成されるリコールプローブの数を減らすのに役立つ。
【0010】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくとも処理ノード105A~105Nと、入力/出力(I/O)インタフェース120と、バス125と、メモリコントローラ(複数可)130と、ネットワークインタフェース135と、を含む。他の実施形態では、コンピューティングシステム100は、他のコンポーネントを含むことができ、及び/又は、コンピューティングシステム100は、異なる構成とすることができる。一実施形態では、各処理ノード105A~105Nは、中央処理装置(CPU)等の1つ以上の汎用プロセッサを含む。「処理ノード」は、本明細書では「コアコンプレックス」又は「CPU」とも呼ばれ得ることに留意されたい。いくつかの実施形態では、1つ以上の処理ノード105A~105Nは、高並列アーキテクチャを備えたデータ並列プロセッサを含むことができる。データ並列プロセッサの例には、グラフィックプロセシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)等が含まれる。処理ノード105A~105N内の各プロセッサコアは、1つ以上のレベルのキャッシュを備えたキャッシュサブシステムを含む。一実施形態では、各処理ノード105A~105Nは、複数のプロセッサコア間で共有されるキャッシュ(例えば、レベル3(L3)キャッシュ)を含む。
【0011】
メモリコントローラ(複数可)130は、処理ノード105A~105Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130は、任意の数及びタイプのメモリデバイス(図示省略)に接続されている。例えば、メモリコントローラ(複数可)130に接続されるメモリデバイス(複数可)におけるメモリのタイプは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、又は、強誘電体ランダムアクセスメモリ(FeRAM)等を含み得る。I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクステンデッド(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺機器は、I/Oインタフェース120に結合され得る。そのような周辺装置は、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶装置、及び、ネットワークインタフェースカード等を含むが、これらに限定されない。
【0012】
様々な実施形態において、コンピューティングシステム100は、サーバ、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、ストリーミングデバイス、ウェアラブルデバイス、又は、他の様々なタイプのコンピューティングシステム若しくはデバイスの何れかであり得る。コンピューティングシステム100のコンポーネントの数は、実施形態毎に異なり得ることに留意されたい。例えば、
図1に示す数よりも多い又は少ない各コンポーネントが存在してもよい。また、コンピューティングシステム100は、
図1に示されていない他のコンポーネントを含むことができることに留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、
図1に示す以外の方法で構成されてもよい。
【0013】
図2を参照すると、処理ノード200の一実施形態のブロック図が示されている。一実施形態では、処理ノード200は、4つのプロセッサコア210A~210Dを含む。他の実施形態では、処理ノード200は、他の数のプロセッサコアを含み得る。「処理ノード」は、本明細書では「コアコンプレックス」又は「CPU」とも呼ばれ得ることに留意されたい。一実施形態では、処理ノード200の構成要素は、(
図1の)処理ノード105A~105N内に含まれている。
【0014】
各プロセッサコア210A~210Dは、メモリサブシステム(図示省略)から取得されたデータ及び命令を記憶するためのキャッシュサブシステムを含む。例えば、一実施形態では、各コア210A~210Dは、対応するレベル1(L1)キャッシュ215A~215Dを含む。各プロセッサコア210A~210Dは、対応するレベル2(L2)キャッシュ220A~220Dを含み得るか、又は、それに結合され得る。さらに、一実施形態では、処理ノード200は、プロセッサコア210A~210Dによって共有されるレベル3(L3)キャッシュ230を含む。L3キャッシュ230は、ファブリック(図示省略)を介してメモリサブシステム(図示省略)に結合されている。他の実施形態では、処理ノード200は、他の数のキャッシュ及び/又は異なるキャッシュレベルの他の構成を有する他のタイプのキャッシュサブシステムを含んでもよいことに留意されたい。
【0015】
図3を参照すると、マルチノードシステム300の一部の一実施形態のブロック図が示されている。一実施形態では、システムは、複数の処理ノード(図示省略)を含む。システム当たりの処理ノードの数は、実施形態毎に異なり得る。一実施形態では、各処理ノードは、対応するコヒーレントマスター(例えば、コヒーレントマスター310)に接続されている。本明細書で用いられる「コヒーレントマスター」は、相互接続(例えば、バス/ファブリック320)上を流れるトラフィックを処理し、接続されているノードのコヒーレンシを管理するエージェントとして定義される。コヒーレンシを管理するために、コヒーレントマスターは、コヒーレンシ関連のメッセージ及びプローブを受信して処理し、コヒーレンシ関連の要求及びプローブを生成する。
【0016】
一実施形態では、各処理ノードは、対応するコヒーレントマスター及びバス/ファブリック320を介して、コヒーレントスレーブ(例えば、コヒーレントスレーブ330)に接続されている。コヒーレントスレーブ330は、メモリコントローラ(図示省略)に結合され、コヒーレントスレーブ330は、プローブフィルタ335にも結合され、プローブフィルタ335は、対応するメモリコントローラを介してアクセス可能なメモリのためにシステム300にキャッシュされたキャッシュラインのエントリを含む。本明細書で用いられる「コヒーレントスレーブ」は、対応するメモリコントローラを対象とする受信した要求及びプローブを処理することによってコヒーレンシを管理するエージェントとして定義される。さらに、本明細書で用いられる「プローブ」は、キャッシュがデータブロックのコピーを有するかどうかを判定し、かつ、オプションでキャッシュがデータブロックを配置する状態を示すために、コヒーレンシポイントからコンピュータシステムにおける1つ以上のキャッシュに渡されるメッセージとして定義される。コヒーレントスレーブ330がその対応するメモリコントローラを対象とするメモリ要求を受信すると、コヒーレントスレーブ330は、プローブフィルタ335へのルックアップを実行する。プローブフィルタ335へのルックアップがヒットした場合、プローブは、メモリ要求の対象となるキャッシュラインのオーナーに送信される。そうではなく、プローブフィルタ335へのルックアップがミスである場合、メモリ要求は、プローブが生成されることなくメモリに送信される。プローブフィルタ335の挿入ポリシーに応じて、ルックアップがミスである場合、新たなエントリがプローブフィルタ335に追加され得る。
【0017】
図4を参照すると、システムオンチップ(SoC)400の一部の一実施形態のブロック図が示されている。一実施形態では、SoC400は、少なくともキャッシュ410と、ファブリック425と、メモリコントローラ430と、プローブフィルタ435と、を含む。キャッシュ410は、キャッシュメモリ415及び制御ユニット420を含み、キャッシュ410は、任意のタイプのキャッシュを表す。例えば、一実施形態では、キャッシュ410は、レベル3(L3)キャッシュであり、キャッシュ410は、レベル2(L2)キャッシュ(図示省略)に結合されている。他の実施形態では、キャッシュ410は、キャッシュ階層内の他のレベルのキャッシュである。キャッシュ410は、本明細書では最終レベルキャッシュ(LLC)とも呼ばれ得ることに留意されたい。
【0018】
キャッシュメモリ415は、任意の量のメモリ容量を含み、容量の大きさは、実施形態に応じて変化する。一実施形態では、プローブフィルタ435の高ストレスレベルを検出することに応じて、キャッシュメモリ415は、部分415Aと部分415Bに分割され、部分415Aは、部分415Bよりも小さい。一実施形態では、「高ストレスレベル」は、プローブフィルタ435が閾値よりも大きいリコールプローブ率を有することとして定義される。リコールプローブ率は、所定の間隔にわたって生成されるリコールプローブの数を指し、リコールプローブは、プローブフィルタ435からキャッシュ410に送信されるメッセージであり、これにより、キャッシュ410は、特定のキャッシュラインをエビクションする。他の実施形態では、プローブフィルタ435の「ストレスレベル」は、リコールプローブ率及び/又は1つ以上の他の測定基準によって決定される。部分410A~410Bは、キャッシュ410内の隣接部分であるように見えるが、これは単に説明を容易にするために示されていることを理解されたい。別の実施形態では、部分410Aは、キャッシュ410にランダムに選択された数のインデックスであり、インデックスは、隣接していない位置のキャッシュ410全体に広がっている。さらなる実施形態では、キャッシュトラフィックの様々な分類のためにいくつかのパーティションを独立して確立することができる。例えば、これらの分類は、命令ライン、データライン、トランスレーションルックアサイドバッファ(TLB)ハードウェアテーブルウォーカーライン、様々なタイプのソフトウェア及びハードウェアプリフェッチャー、様々なハードウェアスレッド又はスレッドグループからのトラフィック等に基づくことができる。次に、制御ユニット420は、バイパス又は非バイパス挿入ポリシーを適用するかどうかを決定する場合に、キャッシュラインの特定の分類のヒット率を考慮する。キャッシュ410を部分410A~410Bに分割する他の方法が可能であり、企図されている。
【0019】
一実施形態では、制御ユニット420は、部分415Aのヒット率を監視しながら、部分415Aに非バイパス挿入ポリシーを適用する。非バイパス挿入ポリシーは、部分415Aでミスする要求の少なくとも一部が部分415Aに割り当てられることを意味する。制御ユニット420は、所定の時間間隔にわたって部分415Aのヒット率を監視し、ヒット率が閾値よりも大きい場合、制御ユニット420は、非バイパス挿入ポリシーを部分415Bに適用する。部分415Aのヒット率が閾値よりも高い場合には、キャッシュ410が有用であることを示しており、この場合、キャッシュラインを残りの部分415Bに挿入する必要がある。しかしながら、部分415Aのヒット率が閾値以下の場合には、キャッシュ410が、SoC400によって実行されている所定のアプリケーションにとって特に有用ではないことを示している。この場合、制御ユニット420は、部分415Bにバイパス挿入ポリシーを適用して、要求が部分415Bに割り当てられる代わりにメモリに送られるようにする。バイパス挿入ポリシーは、部分415Bへのルックアップでミスする如何なる要求も部分415Bに割り当てられないことを意味する。バイパス挿入ポリシーは、キャッシュスラッシングを減らすだけでなく、プローブフィルタ435によって生成されるリコールプローブの数を減らすのに役立つ。本明細書で使用される「リコールプローブ」という用語は、プローブフィルタからキャッシュに送信され、キャッシュがキャッシュから特定のキャッシュラインをエビクションするようにするメッセージとして定義される。バイパス挿入ポリシーは、キャッシュのより高いレベルでヒットカウントを測定するか、他の判定に基づいて、キャッシュラインがさらに再利用される可能性があることを検出する等のように、他のメカニズムによってオーバーライドできることに留意されたい。
【0020】
ファブリック425は、SoC400の様々なコンポーネント及び/又はエージェントを共に接続するあらゆるタイプの相互接続を表している。ファブリック425は、単一のユニットとして示されているが、これは、ファブリック425を表すための単なる1つの方法であることを理解されたい。いくつかの実施形態では、ファブリック425は、SoC400全体に分散された複数のコンポーネントを含み、これらの複数のコンポーネントが一緒に結合されて、要求、プローブ、プローブリコール及び他のメッセージが、様々なエージェント間で送信されることを可能にする。メモリコントローラ430は、プローブフィルタ435及びメモリ(図示省略)に結合されている。対応するメモリを対象とするメモリコントローラ430によって受信された要求は、データがキャッシュ410によってキャッシュされているかどうかを確認するためにプローブフィルタ435をチェックする。
【0021】
いくつかの場合では、プローブフィルタ435へのルックアップがミスとなる場合、プローブフィルタ435は、新たなエントリのためのスペースを生成するために既存のエントリをエビクションする。既存のエントリをエビクションするために、プローブフィルタ435は、キャッシュ410に送信されるリコールプローブを生成する。所定のプローブフィルタエントリが複数のキャッシュラインを追跡する構成では、リコールプローブは、複数のプローブであり得る。リコールプローブの受信に応じて、プローブフィルタ435がこれらの特定のキャッシュライン(複数可)をもはや追跡できないので、キャッシュ410は、対応するキャッシュライン(複数可)をエビクションする。プローブフィルタ435が頻繁なリコールプローブを送信している場合には、システム性能に悪影響を与える可能性がある。
【0022】
したがって、このシナリオを抑制するのを助けるために、一実施形態では、プローブフィルタ435は、特定の時間間隔中に生成されるリコールプローブの数を追跡するためのカウンタ440を含む。間隔中に生成されたリコールプローブの数が閾値よりも大きい場合、プローブフィルタ435は、キャッシュ410の制御ユニット420にメッセージを送信して、キャッシュメモリ415を部分415A~415Bに分割し、部分415Aのヒット率の監視を開始する。そうではなく、リコールプローブの数が所定の閾値以下である場合、キャッシュ410は、その通常の動作を継続することができる。あるいは、別の実施形態では、制御ユニット420は、受信されたリコールプローブの数を監視し、その数を所定の間隔で閾値と比較する。
【0023】
図5を参照すると、システムプローブアウェアによる最終レベルキャッシュの挿入バイパスポリシーを採用する方法500の一実施形態が示されている。説明のために、この実施形態のステップ及び
図6のステップが順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち1つ以上は、同時に実行されてもよいし、図示した順序とは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。他の追加の要素も必要に応じて実行される。本明細書に記載される様々なシステム又は装置の何れも、方法500を実施するように構成されている。
【0024】
プローブフィルタは、所定(所与)の間隔にわたって生成されるリコールプローブの数を監視する(ブロック505)。あるいは、別の実施形態では、キャッシュコントローラは、指定された間隔にわたって受信されたリコールプローブの数を監視する。ブロック505では、プローブの数だけでなく、様々なレベルのキャッシュ(L1、L2、L3等)でヒットしたプローブの数、プローブが何れのMOESI状態にヒットしたか等の追加のメトリックを監視できる。生成されたリコールプローブの数が第1の閾値よりも大きい場合(条件付きブロック510:「はい」)、プローブフィルタは、キャッシュ(例えば、最終レベルキャッシュ(LLC))に監視フェーズを開始するように指示する(ブロック515)。そうではなく、所定の間隔にわたるリコールプローブの数が第1の閾値以下である場合(条件付きブロック510:「いいえ」)、方法500はブロック505に戻る。
【0025】
監視フェーズを開始する一環として、キャッシュは、第1の部分と第2の部分とに分割される(ブロック520)。一実施形態では、第1の部分は、いくつかのキャッシュインデックスを含み、第2の部分は、キャッシュの残りを含む。一実施形態では、第1の部分のキャッシュインデックスは、ランダムに選択される。他の実施形態では、キャッシュを第1の部分と第2の部分とに分割する他の適切な方法を使用することができる。
【0026】
次に、ブロック520の後に、キャッシュは、非バイパス挿入ポリシーを第1の部分に適用しながら、第1の部分へのヒット率を監視する(ブロック525)。一実施形態では、非バイパス挿入ポリシーにより、第2の部分でミスする要求にキャッシュラインが割り当てられる。一実施形態では、ヒット率は、キャッシュヒットの数を、キャッシュによって受信された要求の総数で割ったものとして計算される。例えば、キャッシュが、第1の部分を対象とする100個の要求を受信し、これらの要求のうち第1の部分でヒットしたのが12個だけの場合、ヒット率は12%である。第1の部分のヒット率が第2の閾値未満の場合(条件付きブロック530:「はい」)、キャッシュは、バイパス挿入ポリシーを第2の部分に適用する(ブロック535)。バイパス挿入ポリシーを適用すると、第2の部分に要求が割り当てられなくなり、これにより、キャッシュのスラッシングを防ぎ、プローブフィルタへのストレスを軽減することができる。第1の部分のヒット率が第2の閾値よりも小さい場合には、キャッシュが、現在のアプリケーションにとって特に有用ではないことを示している。別の実施形態では、キャッシュは、キャッシュトラフィックの多くの異なる分類のヒット率を監視するための複数のモニタを含むことに留意されたい。次に、キャッシュは、対象キャッシュラインの特定の分類のヒット率に基づいて、そのバイパス又は非バイパス挿入ポリシーを決定する。ブロック535の後に、方法500はブロック505に戻る。あるいは、方法500は、いくつかの反復でブロック535の後にブロック525に戻ることと、他の反復でブロック535の後にブロック505に戻ることと、を交互に行うことができる。
【0027】
そうではなく、第1の部分のヒット率が第2の閾値以上である場合(条件付きブロック530:「はい」)、キャッシュは、非バイパス挿入ポリシーを第2の部分に適用する(ブロック540)。この場合、キャッシュが有用であるため、キャッシュは、第2の部分でミスしている要求に割り当てることができる。ブロック540の後に、方法500はブロック505に戻る。あるいは、方法500は、いくつかの反復でブロック540の後にブロック525に戻ることと、他の反復でブロック540の後にブロック505に戻ることと、を交互に行うことができる。キャッシュが非バイパス挿入ポリシーとバイパス挿入ポリシーの間で行き来するのを防ぐために、方法500の閾値に対してある程度のヒステリシスを適用できることに留意されたい。
【0028】
図6を参照すると、キャッシュの一部の挿入ポリシーを決定する一実施形態が示されている。キャッシュは、プローブフィルタストレスレベルの指標を受信する(ブロック605)。一実施形態では、プローブフィルタストレスレベルの指標は、プローブフィルタのリコールプローブ率の尺度である。他の実施形態では、プローブフィルタストレスレベルの他のメトリックが生成され、キャッシュに送信される指標として使用される。また、キャッシュは、キャッシュの第1の部分のヒット率を監視する(ブロック610)。
【0029】
次に、キャッシュは、キャッシュの第2の部分に適用する挿入ポリシーを決定し、挿入ポリシーは、プローブフィルタストレスレベルと、キャッシュの第1の部分のヒット率と、の両方に基づく(ブロック615)。次に、ブロック615で決定された挿入ポリシーが、キャッシュの第2の部分に適用される(ブロック620)。一実施形態では、キャッシュは、プローブフィルタストレスレベルと、キャッシュの第1の部分のヒット率と、の組み合わせに基づく挿入率を決定する。例えば、一実施形態では、プローブフィルタストレスレベルが高いほど、そして、第1の部分のヒット率が低いほど、キャッシュの第2の部分に新たなキャッシュラインを割り当てるかどうかを決定する場合にキャッシュに適用される挿入率が高くなる。より高い挿入率は、比較的より識別力の低いキャッシュ挿入ポリシーとも呼ぶことができる。逆に、プローブフィルタストレスレベルが低いほど、そして、第1の部分のヒット率が高いほど、キャッシュの第2の部分に新たなキャッシュラインを割り当てるかどうかを決定する場合にキャッシュに適用される挿入率が低くなる。より低い挿入率は、比較的より識別力の高いキャッシュ挿入ポリシーとも呼ぶことができる。ブロック620の後に、方法600は終了する。方法600をある間隔で繰り返して、プローブフィルタストレスのレベルの変更及びキャッシュの第1の部分のヒット率の変更に基づいて挿入ポリシーを更新できることに留意されたい。
【0030】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書で説明する方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、そのようなプログラム命令は、高水準プログラミング言語によって表される。他の実施形態では、プログラム命令は、高水準プログラミング言語からバイナリ形式、中間形式又は他の形式にコンパイルされる。或いは、プログラム命令は、ハードウェアの動作又は設計を記述するように書き込まれる。そのようなプログラム命令は、C言語等の高水準プログラミング言語によって表される。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0031】
上述した実施形態は、実施形態の非限定的な例示に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになる。以下の特許請求の範囲は、このような変形及び修正の全てを包含すると解釈されることが意図されている。