(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-18
(45)【発行日】2024-12-26
(54)【発明の名称】アクセスタイプの優先度に基づくキャッシュ管理
(51)【国際特許分類】
G06F 12/126 20160101AFI20241219BHJP
G06F 12/0895 20160101ALI20241219BHJP
【FI】
G06F12/126 100
G06F12/0895 112
(21)【出願番号】P 2022536763
(86)(22)【出願日】2020-12-14
(86)【国際出願番号】 US2020064884
(87)【国際公開番号】W WO2021126777
(87)【国際公開日】2021-06-24
【審査請求日】2023-11-10
(32)【優先日】2019-12-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジーミン イン
(72)【発明者】
【氏名】ヤスコ エッカート
(72)【発明者】
【氏名】スバス セスムルガン
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2003-22211(JP,A)
【文献】米国特許出願公開第2018/0314647(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/126
G06F 12/0895
(57)【特許請求の範囲】
【請求項1】
プロセッサと、
キャッシュと、を備えるシステムであって、
前記キャッシュは、
複数のキャッシュラインの各々の最終アクセスタイプ指標を保持することと、
複数のカウンタを保持することであって、前記複数のカウンタの各々は、複数の異なるアクセスタイプの各々の数を追跡する、ことと、
デマンドヒットの数が最も少ないカウンタに対応する所定のアクセスタイプに対して最低の優先度を割り当てることであって、デマンドヒットは、ロード操作又はストア操作のために前記キャッシュにヒットすることである、ことと、
キャッシュミスを検出したことに応じて、最低の優先度が割り当てられた前記所定のアクセスタイプが最終アクセスタイプフィールドに設定されたキャッシュラインのエビクションを優先することと、
を行うように構成されている、
システム。
【請求項2】
第1のキャッシュラインへのデマンドヒットを検出したことに応じて、
前記キャッシュは、
プリフェッチアクセスタイプが前記第1のキャッシュラインの最終アクセスタイプフィールドに設定されていることを検出したことに応じて、第1のカウンタをインクリメントすることと、
ライトバックアクセスタイプが前記第1のキャッシュラインの最終アクセスタイプフィールドに設定されていることを検出したことに応じて、第2のカウンタをインクリメントすることと、
を行うように構成されている、
請求項1のシステム。
【請求項3】
前記キャッシュは、
デマンドヒット数が最も多いカウンタを有する第1のアクセスタイプに最高の優先度を割り当てることと、
前記第1のアクセスタイプが最終アクセスタイプフィールドに設定されているキャッシュラインを保持することを優先することと、
を行うように構成されている、
請求項1のシステム。
【請求項4】
前記キャッシュは、最新の時間間隔内のカウンタごとのデマンドヒットの数に従って、前記複数のカウンタをソートするように構成されている、
請求項1のシステム。
【請求項5】
前記キャッシュは、前記最終アクセスタイプ指標を、対応するキャッシュラインの第1のタグエントリの最終アクセスタイプフィールドにストアするように構成されている、
請求項1のシステム。
【請求項6】
前記所定のアクセスタイプは、プリフェッチアクセスタイプである、
請求項1のシステム。
【請求項7】
前記所定のアクセスタイプは、ライトバックアクセスタイプである、
請求項1のシステム。
【請求項8】
キャッシュが、複数のキャッシュラインの各々の最終アクセスタイプ指標を保持することと、
複数のカウンタを保持することであって、前記複数のカウンタの各々は、複数の異なるアクセスタイプの各々の数を追跡する、ことと、
デマンドヒットの数が最も少ないカウンタに対応する所定のアクセスタイプに対して最低の優先度を割り当てることであって、デマンドヒットは、ロード操作又はストア操作のために前記キャッシュにヒットすることである、ことと、
キャッシュミスを検出したことに応じて、最低の優先度が割り当てられた前記所定のアクセスタイプが最終アクセスタイプフィールドに設定されたキャッシュラインのエビクションを優先することと、を含む、
方法。
【請求項9】
第1のキャッシュラインへのデマンドヒットを検出したことに応じて、
前記方法は、
プリフェッチアクセスタイプが前記第1のキャッシュラインの最終アクセスタイプフィールドに設定されていることを検出したことに応じて、第1のカウンタをインクリメントすることと、
ライトバックアクセスタイプが前記第1のキャッシュラインの最終アクセスタイプフィールドに設定されていることを検出したことに応じて、第2のカウンタをインクリメントすることと、を含む、
請求項8の方法。
【請求項10】
前記複数のカウンタのうちデマンドヒット数が最も多いカウンタを有する第1のアクセスタイプに最高の優先度を割り当てることと、
前記第1のアクセスタイプが最終アクセスタイプフィールドに設定されているキャッシュラインを保持することを優先することと、を含む、
請求項8の方法。
【請求項11】
最新の時間間隔内のカウンタごとのデマンドヒットの数に従って、前記複数のカウンタをソートすることをさらに含む、
請求項8の方法。
【請求項12】
前記最終アクセスタイプ指標を、対応するキャッシュラインの第1のタグエントリの最終アクセスタイプフィールドにストアすることを含む、
請求項8の方法。
【請求項13】
所定のアクセスタイプは、プリフェッチアクセスタイプである、
請求項8の方法。
【請求項14】
所定のアクセスタイプは、ライトバックアクセスタイプである、
請求項8の方法。
【請求項15】
データストアと、
キャッシュコントローラと、を備えるキャッシュであって、
前記データストア内の複数のキャッシュラインの各々の最終アクセスタイプ指標を前記データストア内に保持することと、
複数のカウンタを保持することであって、前記複数のカウンタの各々は、複数の異なるアクセスタイプの各々の数を追跡する、ことと、
デマンドヒットの数が最も少ないカウンタに対応する所定のアクセスタイプに対して最低の優先度を割り当てることであって、デマンドヒットは、ロード操作又はストア操作のために前記キャッシュへのヒットすることである、ことと、
キャッシュミスを検出したことに応じて、最低の優先度が割り当てられた前記所与のアクセスタイプが最終アクセスタイプフィールドに設定されたキャッシュラインのエビクションを優先することと、
を行うように構成されている、
キャッシュ。
【請求項16】
第1のキャッシュラインへのデマンドヒットを検出したことに応じて、
前記キャッシュコントローラは、
プリフェッチアクセスタイプが前記第1のキャッシュラインの最終アクセスタイプフィールドに設定されていることを検出したことに応じて、第1のカウンタをインクリメントすることと、
ライトバックアクセスタイプが前記第1のキャッシュラインの最終アクセスタイプフィールドに設定されていることを検出したことに応じて、第2のカウンタをインクリメントすることと、
を行うように構成されている、
請求項15のキャッシュ。
【請求項17】
前記キャッシュコントローラは、
複数のカウンタのうちデマンドヒット数が最も多いカウンタを有する第1のアクセスタイプに最高の優先度を割り当てることと、
前記第1のアクセスタイプが最終アクセスタイプフィールドに設定されているキャッシュラインを保持することを優先することと、
を行うように構成されている、
請求項15のキャッシュ。
【請求項18】
前記キャッシュコントローラは、最新の時間間隔内のカウンタごとのデマンドヒットの数に従って、複数のカウンタをソートするように構成されている、
請求項15のキャッシュ。
【請求項19】
前記所定のアクセスタイプは、プリフェッチアクセスタイプである、
請求項15のキャッシュ。
【請求項20】
前記所定のアクセスタイプは、ライトバックアクセスタイプである、
請求項15のキャッシュ。
【発明の詳細な説明】
【背景技術】
【0001】
本発明は、ローレンスリバモアナショナルセキュリティ(米国エネルギー省(DOE)から発注された、主要契約番号:DE-AC52-07NA27344、サブ契約番号:B620717)によるPathForward Projectの下、政府の支援を受けて行われたものである。米国政府は、本発明について一定の権利を有する。
【0002】
(関連技術の説明)
コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップで形成されたメインメモリを使用する。しかしながら、DRAMチップは、比較的長いアクセス時間に悩まされる。パフォーマンスを向上させるために、データプロセッサには、通常、キャッシュとして知られるローカルな高速メモリが少なくとも1つ含まれている。キャッシュには、プロセッサが頻繁にアクセスするデータのブロックがストアされる。本明細書で用いられる場合、「ブロック」は、連続する記憶域にストアされるバイトのセットであり、それらは、コヒーレンシの目的で単位として扱われる。本明細書で使用される場合、「キャッシュブロック」、「ブロック」、「キャッシュライン」及び「ライン」という用語はそれぞれ交換可能である。いくつかの実施形態では、ブロックは、キャッシュのアロケーション及びアロケーション解除の単位であってよい。ブロックのバイト数は、設計上の選択に応じて変動し、任意のサイズであってもよい。さらに、「キャッシュタグ」、「キャッシュラインタグ」及び「キャッシュブロックタグ」という用語はそれぞれ交換可能である。
【0003】
キャッシュの記憶容量が限られているので、対応するキャッシュ領域が満杯である場合、何れのキャッシュラインを置換のために選択するかをキャッシュ管理ポリシーにより決定する。アプリケーションのパフォーマンスを向上させるために、効率的なキャッシュ管理ポリシーが重要である。しかしながら、「least recently used」(LRU)原則に基づくポリシー等のように、一部の従来のキャッシュ管理ポリシーは、キャッシュラインへの不規則なアクセスを処理する場合の効率が低い、又は、比較的複雑な回路実装を要するため適応性が制限され得る。
【0004】
添付図面と共に以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【0005】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】コンピューティングシステムの一実施形態のブロック図である。
【
図3】各キャッシュラインの最終アクセスタイプを追跡するキャッシュの一実施形態のブロック図である。
【
図4】各アクセスタイプによって引き起こされたデマンドヒットの数を追跡するカウンタを保持するキャッシュの一実施形態のブロック図である。
【
図5】最終アクセスタイプに基づいてキャッシュラインの優先度をセットするための方法の一実施形態を示す一般化されたフロー図である。
【
図6】エビクションの対象となるキャッシュラインを選択する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0006】
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解をもたらすために、多数の特定の詳細が示されている。しかしながら、当業者は、これらの特定の詳細を用いないで、様々な実施形態を実施し得ることを認識するはずである。いくつかの例では、本明細書で説明する手法を不明瞭にすることを回避するために、周知の構造、構成要素、信号、コンピュータプログラム命令、及び、技術が詳細に示されていない。説明を簡単且つ明確にするために、図面に示す要素は必ずしも縮尺通りに描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素に対して誇張される場合がある。
【0007】
アクセスタイプの優先度に基づくキャッシュ管理のための様々なシステム、装置及び方法が本明細書に開示される。一実施形態では、システムは、少なくともプロセッサとキャッシュとを含む。プログラムの実行フェーズ中に、特定のアクセスタイプがキャッシュにおいてデマンドヒットを引き起こす可能性は、他のアクセスタイプよりも高い。デマンドヒットは、キャッシュに対するロードヒット及びストアヒットである。デマンドヒットを引き起こす可能性がより高いアクセスタイプを見いだすために実行時(ランタイム)プロファイリングメカニズムを用いる。プロファイリングの結果に基づいて、今後アクセスされそうなキャッシュラインがそれらの最新のアクセスタイプに基づいて保持される。デマンドヒットを増やし、それによってシステムパフォーマンスを向上させることが目標である。効率的なキャッシュ置換ポリシーにより、冗長なデータ移動を減らし、それによってシステムパフォーマンスを向上させ、エネルギー消費を減らせる可能性がある。
【0008】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくともプロセッサ(複数可)110と、ファブリック120と、入出力(I/O)インタフェース(複数可)125と、メモリインタフェース130と、周辺装置(複数可)135と、メモリサブシステム140と、を含む。他の実施形態では、コンピューティングシステム100は、他の構成要素を含んでもよく、コンピューティングシステム100は、説明する構成要素を欠いてもよく、及び/又は、コンピューティングシステム100は、異なる構成とすることができる。一実施形態では、各プロセッサ110は、キャッシュサブシステム115を含む。キャッシュサブシステム115は、実施形態に応じて変更され得る様々なタイプのキャッシュのうち何れかを有する任意の数のキャッシュレベルを有する。場合によっては、キャッシュサブシステム115のキャッシュ階層内の1つ以上のキャッシュを、プロセッサ(複数可)110の外部の他の場所に配置することができる。
【0009】
一実施形態では、キャッシュサブシステム115の1つ以上のキャッシュは、アクセスタイプの優先度に基づくキャッシュ管理スキームを用いる。例えば、ある実施形態では、キャッシュコントローラは、何れのアクセスタイプがデマンドヒットを引き起こす可能性が高いかを判断する。デマンドヒットは、ロード操作又はストア操作によって引き起こされるキャッシュへのヒットである。プロファイリングフェーズ中に、キャッシュコントローラは、複数のアクセスタイプの中から、何れのアクセスタイプが最も少ない数のデマンドヒットを引き起こしたかを判断する。次に、置換中、キャッシュコントローラは、複数のアクセスタイプのうちデマンドヒットの数が最も少ないアクセスタイプに一致する最終アクセスタイプの記録を有するキャッシュラインのエビクションを試みる。言い換えると、キャッシュコントローラは、キャッシュラインへのロードヒット又はストアヒットに先行する可能性が最も高いアクセスのタイプを動的に判定する。次に、キャッシュコントローラは、ロードヒット又はストアヒットに先行する可能性が最も高いアクセスタイプによって最近アクセスされたキャッシュラインを保護する。アクセスタイプの優先度に基づいてキャッシュ置換ポリシーを管理するために使用される手法のさらなる詳細は、この開示の残りの部分を通して提供される。
【0010】
プロセッサ(複数可)110は、任意の数及びタイプの処理ユニット(例えば、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC))を表す。メモリサブシステム140は、任意の数及びタイプのメモリデバイスを含む。例えば、メモリサブシステム140のメモリのタイプには、高帯域幅メモリ(HBM)、不揮発性メモリ(NVM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)等が含まれ得る。I/Oインタフェース(複数可)125は、任意の数及びタイプのI/Oインタフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクステンデッド(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺装置135(複数可)がI/Oインタフェース125(複数可)に結合されてもよい。そのような周辺装置(複数可)135は、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、ネットワークインタフェースカード等を含む(が、これらに限定されない)。
【0011】
様々な実施形態において、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、他の様々なタイプのうち何れかのコンピューティングシステム若しくはデバイスである。コンピューティングシステム100の構成要素の数は、実施形態ごとに異なることに留意されたい。例えば、他の実施形態では、
図1に示す数よりも多い又は少ない構成要素が存在する。他の実施形態では、コンピューティングシステム100は、
図1に示されていない他の構成要素を含むことにも留意されたい。加えて、他の実施形態では、コンピューティングシステム100は、
図1に示す以外の方法で構成される。
【0012】
図2を参照すると、コンピューティングシステム200の一実施形態のブロック図が示されている。図示したように、システム200は、デスクトップコンピュータ210、ラップトップコンピュータ220、サーバ230、モバイルデバイス240等のチップ、回路、構成要素等を表す。他のデバイスも可能であり、考慮される。図示した実施形態では、システム200は、(
図1の)キャッシュサブシステム115の少なくとも1つのインスタンスを含む。
図2には示されていないが、システム200は、1つ以上のプロセッサ、1つ以上のメモリデバイス、1つ以上の周辺装置等のように、任意の数及びタイプの他の構成要素を含むことができる。キャッシュサブシステム115は、アクセスタイプ優先度に基づくキャッシュ管理スキームを用いる任意の数のキャッシュレベルを含む。
【0013】
図3を参照すると、各キャッシュラインの最終アクセスタイプを追跡するキャッシュ300の一実施形態のブロック図が示されている。様々な実施形態では、キャッシュ300は、システムメモリとは別の、低遅延で高帯域幅のメモリである。いくつかの実施形態では、キャッシュ300は、キャッシュメモリサブシステム(例えば、
図1のキャッシュサブシステム115)における最終レベルのキャッシュとして使用される。他の実施形態では、キャッシュ300は、キャッシュメモリサブシステム内の別のレベルである。
【0014】
読み取り又は書き込み要求がキャッシュ300によって受信されると、タグストア302のルックアップが、要求の対象であるアドレスのタグを使用して実行される。ルックアップ結果がヒットであり、データストア304のキャッシュラインへのアクセスが実行される場合、アクセスタイプは、タグストレージ302の対応するエントリ306の最終アクセスタイプフィールド308にストアされる。一実施形態では、タグストア302及びデータストア304がアレイとして構成されるが、他の構成も可能であり、企図される。いくつかの実施形態では、タグストレージ302及びデータストレージ304の各々は別のエンティティである一方、他の実施形態では、それらは単一のストレージエンティティ(デバイス)に組み合わされている。何れの場合も、タグ302及びデータ304ストアは、単にデータストア又はデータストレージデバイスと呼ばれることがある。一実施形態では、異なる可能なアクセスタイプは、ロード、ストア、プリフェッチ、ライトバックを含む。本明細書で使用される場合、「ロード操作」又は「ロードアクセス」は、記憶域からプロセッサ又は実行ユニットへのデータの転送を指定する操作として定義される。「ストア操作」又は「ストアアクセス」は、プロセッサ又は実行ユニットから記憶域へのデータの転送を指定する操作として定義される。「プリフェッチ操作」又は「プリフェッチアクセス」は、データがデマンド操作によって要求される前に、記憶域からキャッシュへのデータの転送を指定する操作として定義される。プリフェッチアクセスの対象となるデータは、誤った予測に基づいている場合、実行ユニットによって使用されずに終わる可能性がある。「ライトバック操作」又は「ライトバックアクセス」は、ダーティキャッシュラインを下位レベルのキャッシュ又は記憶域に転送することとして定義される。「ダーティキャッシュライン」は、変更され、下位レベルのキャッシュ又はメインメモリに未だ書き込まれていないキャッシュラインとして定義される。
【0015】
第2タグストア302へのルックアップが失敗し、キャッシュラインを要求にアロケーションする場合、キャッシュコントローラ320は、新しいキャッシュラインをストアできるように何れのキャッシュラインをエビクションするかを決定する。一実施形態では、キャッシュコントローラ320は、第2タグストア302の対応するセットの各エントリにストアされた最終アクセスタイプフィールド308を使用して、何れのキャッシュラインを第2データストア304からエビクションするかを決定する。例えば、一実施形態では、キャッシュコントローラ320は、各アクセスタイプに関連する優先度をリストするソートされた優先度350を取得する。キャッシュコントローラ320がソートされた優先度350を取得すると、キャッシュコントローラ320は、ソートされた優先度350に従って最終アクセスタイプが最低の優先度であるキャッシュラインを検索する。キャッシュコントローラ320は、制御ユニット又は制御ロジックと呼ばれる場合があることに留意されたい。
【0016】
一実施形態では、キャッシュ300は、各アクセスタイプのデマンドヒットの数を追跡するためのカウンタ340を含む。デマンドヒットとは、ロード操作又はストア操作が最終アクセスタイプフィールド308のエントリにヒットすることを指す。一実施形態では、カウンタ340は、異なるアクセスタイプごとのカウンタを含む。例えば、プリフェッチアクセスタイプのカウンタ340は、最終アクセスタイプフィールド308がプリフェッチエンコーディングで符号化されているキャッシュラインにデマンドアクセスがヒットしたときにインクリメントされる。一実施形態では、カウンタ340の値は、各アクセスタイプの優先度を決定するために使用される。例えば、カウンタ値が大きいほど、対応するアクセスタイプの優先度が高くなる。一実施形態では、定期的に、キャッシュコントローラ320は、カウンタ340の値を取得し、値を降順でソートする。次に、キャッシュコントローラ320は、カウンタ340のソートされた値に基づいてソートされた優先度350を生成し、最も高い優先度が、カウンタが最も高い値を有するアクセスタイプに割り当てられる。他のアクセスタイプには、カウンタの値に基づいて降順で優先度が割り当てられる。
【0017】
一実施形態に従って使用することができる最終アクセスタイプエンコーディングの一例は、最終アクセスタイプエンコーディング表330に示されている。例えば、ビット「00」は、最終アクセスタイプがロードであったことを示す。ビット「01」の場合、これは最終アクセスタイプがストアであったことを示す。ビット「10」の場合、これは最終アクセスタイプがプリフェッチであったことを示す。ビット「11」の場合、これは最終アクセスタイプがライトバックであったことを示す。他の実施形態では、第2タグストア302のエントリの最終アクセスタイプフィールド308は、2以外の他のビット数を有することができる。また、他の実施形態では、最終アクセスタイプのエンコーディング表330に示されているものとは異なる他のエンコーディングを使用することができる。
【0018】
図4を参照すると、各アクセスタイプによって引き起こされたデマンドヒットの数を追跡するためのカウンタを保持するキャッシュ400の一実施形態のブロック図が示されている。所定のアドレスに対してキャッシュ400のルックアップが実行される場合、所定のアドレスのタグ410、セット415及びオフセット420の各部分が、キャッシュ400の様々な構造にアクセスするために使用される。アドレスのセット部分415がキャッシュ400の所定のセットを選択するために使用され、次いで、アドレスのタグ部分410がコンパレータ425によって、所定のセットのウェイ405にストアされたタグと比較される。図示した例では、所定のキャッシュのセット400は、4つのウェイ405(ウェイ0~ウェイ3)を含むが、他のキャッシュにおいては、より多く又はより少ないウェイを実装することができる。
【0019】
アドレスのタグ部分410のウェイ405の1つで一致が見つかった場合、対応する最終アクセスタイプフィールド430から最終アクセスタイプが取得される。アクセスがデマンドヒット(すなわち、ロードヒット又はストアヒット)である場合、最終アクセスタイプが比較ロジック440に提供される。最終アクセスタイプに応じて、対応するカウンタがインクリメントされる。例えば、最終アクセスタイプがロードであった場合、ロードカウンタ445がインクリメントされる。最終アクセスタイプがストアであった場合、ストアカウンタ450がインクリメントされる。最終アクセスタイプがプリフェッチであった場合、プリフェッチカウンタ455がインクリメントされる。そうではなく、最終アクセスタイプがライトバックであった場合、ライトバックカウンタ460がインクリメントされる。
【0020】
アクセス数が一定のプログラム可能な閾値数に達すると、キャッシュコントローラは、ソートフェーズ465を実行して、カウンタ445,450,455,460をそれらのカウント値に従って降順でソートする。次に、キャッシュコントローラは、優先度割り当てフェーズ470を実行して、ソートされたカウンタ445,450,455,460に優先度を割り当てる。カウント値が最も高いカウンタが最も高い優先度を取得し、次にカウント値が高いカウンタが次に高い優先度を取得する等である。次に、エビクションするキャッシュラインをキャッシュコントローラが検索する場合、優先度を使用して置換ポリシーを決定する。言い換えると、キャッシュコントローラがキャッシュラインをエビクションする必要がある場合、キャッシュコントローラは、優先度が最低のキャッシュラインをエビクションする。
【0021】
図5を参照すると、最終アクセスタイプに基づいてキャッシュラインの優先度をセットするための方法500の一実施形態が示されている。説明のために、この実施形態のステップ及び
図6のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態においては、説明する要素のうち1つ以上が同時に実行されてもよいし、図示した順序と異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。他の追加の要素も必要に応じて実行される。本明細書に記載される様々なシステム又は装置の何れも、方法500を実施するように構成されている。
【0022】
カウンタは、異なるアクセスタイプごとにキャッシュコントローラによって保持される(ブロック505)。一実施形態では、ロード、ストア、プリフェッチ、ライトバックの4つの個別のアクセスタイプに対する4つのカウンタがある。他の実施形態では、他の数のカウンタにより、他の数の異なるアクセスタイプを追跡できる。例えば、別の実施形態では、複数のカウンタが複数の異なるタイプのロードを追跡でき、第1のカウンタは第1のアプリケーションからのロードを追跡し、第2のカウンタは第2のアプリケーションからのロードを追跡することができる等である。他のカウンタが、個別のアプリケーションの各々からのストア、個別のアプリケーションの各々からのプリフェッチ、及び、アプリケーションの各々からのライトバックを追跡できる。他の実施形態では、アクセスタイプの他のタイプをキャッシュコントローラによって追跡できる。一実施形態では、キャッシュ内の全てのセットがアクセスタイプカウンタの同じグループを共有する。別の実施形態では、カウンタの複数のグループがあり、カウンタのグループの各々がキャッシュセットの一部によって共有される。さらなる実施形態では、カウンタの単一のグループが、キャッシュ全体ではなく、いくつかの代表的なセットを追跡する。
【0023】
キャッシュによって受信された要求がデマンドヒット(例えば、ロードヒット、ストアヒット)の結果となる場合、ヒットしたキャッシュラインに対応する最終アクセスタイプフィールドが取得される(ブロック510)。次に、取得された最終アクセスタイプフィールドで指定されたアクセスタイプに対応するカウンタがインクリメントされる(ブロック515)。閾値数より少ない数のキャッシュアクセスが行われた場合(条件付きブロック520:「いいえ」)、方法500はブロック510に戻る。キャッシュアクセスの数が閾値数に達した場合(条件付きブロック520:「はい」)、アクセスタイプカウンタが降順でソートされ、ソートされた順序に基づいてアクセスタイプに優先度が割り当てられる(ブロック525)。次に、優先度を使用して、エビクションするキャッシュラインを選択するための置換ポリシーが決定される(ブロック530)。例えば、プリフェッチアクセスタイプのカウンタが全てのカウンタの中で最低の値を有する場合、キャッシュコントローラは、プリフェッチアクセスによって最後にアクセスされたエビクションキャッシュラインの選択を優先する。別の例では、ロードアクセスタイプカウンタが全てのカウンタの中で最も高い値を有している場合、キャッシュコントローラはロードアクセスによって最後にアクセスされたキャッシュラインの保持を試みる。ブロック530の後、方法500は終了する。方法500は、定期的に実行することができ、又は、何らかのイベント(例えば、アプリケーションの新しいフェーズの開始)の検出に応じて実行して、異なるアクセスタイプの優先度を更新することができることに留意されたい。
【0024】
図6を参照すると、エビクションのためのキャッシュラインを選択するための方法600の一実施形態が示されている。キャッシュコントローラは、所定の要求のキャッシュミスを検出する(ブロック605)。ミスの検出に応じて、キャッシュコントローラは、所定の要求の対象となるデータ用のスペースを空けるために、エビクションするキャッシュラインを検索する(ブロック610)。次に、キャッシュコントローラは、最新の追跡間隔に基づいて、何れのアクセスタイプが最低の優先度を有するかを判定する(ブロック615)。様々な実施形態では、間隔は、所定の期間、所定のクロックサイクル数、所定の数のトランザクション又はアクセス等である。最新の追跡間隔に基づいて何れのアクセスタイプが最低の優先度を有するかを決定する一例は、(
図5の)方法500に関連する説明に記載されている。次に、キャッシュコントローラは、最終アクセスタイプフィールドが最も優先度の低いアクセスタイプと一致するキャッシュラインを検索する(ブロック620)。
【0025】
最低の優先度のアクセスタイプにセットされた最終アクセスタイプフィールドを有するキャッシュラインが見つかった場合(条件付きブロック625:「はい」)、キャッシュコントローラは、このキャッシュラインをエビクションする(ブロック630)。それ以外の場合、最終アクセスフィールドが最低の優先度のアクセスタイプにセットされたキャッシュラインが見つからない場合(条件付きブロック625:「no」)、キャッシュコントローラは、他の残りのアクセスタイプのうち何れのアクセスタイプが最低の優先度を有するかを判定する(ブロック640)。この次に最も低い優先度のアクセスタイプにセットされた最終アクセスフィールドを有するキャッシュラインが見つかった場合(条件付きブロック645:「はい」)、キャッシュコントローラは、このキャッシュラインをエビクションする(ブロック650)。そうではなく、最終アクセスフィールドがこの次に低い優先度のアクセスタイプにセットされたキャッシュラインが見つからない場合(条件付きブロック645:「no」)、方法600はブロック640に戻り、他の残りのアクセスタイプのうち何れのアクセスタイプが最低の優先度を有するかをキャッシュコントローラが判定する。ブロック630及び650の後、キャッシュコントローラは、エビクションされたキャッシュラインのウェイに新しいキャッシュラインをストアする(ブロック635)。ブロック650の後、方法600が終了する。
【0026】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令は、本明細書で説明する方法及び/又はメカニズムを実施するために使用される。例えば、汎用又は専用プロセッサによって実行可能なプログラム命令が企図される。様々な実施形態において、そのようなプログラム命令は、高水準のプログラミング言語によって表現される。他の実施形態では、プログラム命令は、高レベルプログラミング言語からバイナリ形式、中間形式又は他の形式にコンパイルされる。或いは、プログラム命令は、ハードウェアの動作又は設計を記述するように書かれる。このようなプログラム命令は、C等の高水準のプログラミング言語によって表現される。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体のうち何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0027】
上述した実施形態が、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含するように解釈されることが意図される。