(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-21
(45)【発行日】2023-03-02
(54)【発明の名称】キャッシュメモリのデータ置換方法及びプロセッサ
(51)【国際特許分類】
G06F 12/121 20160101AFI20230222BHJP
G06F 12/0862 20160101ALI20230222BHJP
【FI】
G06F12/121 100
G06F12/0862 100
(21)【出願番号】P 2019502753
(86)(22)【出願日】2017-07-19
(86)【国際出願番号】 US2017042794
(87)【国際公開番号】W WO2018017671
(87)【国際公開日】2018-01-25
【審査請求日】2020-07-16
【審判番号】
【審判請求日】2022-08-08
(32)【優先日】2016-07-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール ジェームス モイヤー
【合議体】
【審判長】須田 勝巳
【審判官】中村 信也
【審判官】篠原 功一
(56)【参考文献】
【文献】特表2013-542511(JP,A)
【文献】特開2003-280987(JP,A)
【文献】国際公開第2012/095957(WO,A1)
【文献】国際公開第2016/097813(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/121
G06F12/0862
(57)【特許請求の範囲】
【請求項1】
プロセッサによって実行される方法であって、
第1キャッシュ(110)の第1領域(116)の第1キャッシュエントリ(246)の第1データを置換することに応じて、前記第1データが、デマンド要求の対象ではなかったプリフェッチデータであることに応じて、前記第1データを第2キャッシュ(120)に転送することと、
前記第1キャッシュの第2領域(115)の第2キャッシュエントリ(244)の第2データを置換することに応じて、前記第2データが
、デマンド要求の対象ではなかったプリフェッチデータであることに応じて、前記第2データを前記第1キャッシュから破棄することと、を含む、
方法。
【請求項2】
前記第1キャッシュの前記第1領域に関する第1性能特性(504)と、前記第1キャッシュの前記第2領域に関する第2性能特性と、を測定することと、
第1転送ポリシー(111)が第2転送ポリシーよりも高い性能に関連していることを示す前記第1性能特性及び前記第2性能特性に基づいて、前記第1キャッシュの第3領域(118)に対して
前記第1転送ポリシー(111)を選択することと、
前記第1転送ポリシーに基づいて、前記第1キャッシュの前記第3領域のキャッシュエントリ(510)のデータを置換することに応じて、前記第1キャッシュの前記第3領域のキャッシュエントリのデータを前記第2キャッシュに選択的に転送することと、をさらに含む、
請求項1の方法。
【請求項3】
前記第1転送ポリシーを選択することは、
前記第1キャッシュの前記第3領域のキャッシュエントリ(510)のデータが、デマンド要求の対象ではなかったプリフェッチデータであることに応じて、前記第1キャッシュの前記第3領域のキャッシュエントリ(510)のデータを、無効であることを示すステータスで前記第2キャッシュに転送することを含む、
請求項2の方法。
【請求項4】
前記第1転送ポリシーを選択することは、
前記第1キャッシュの前記第3領域のキャッシュエントリ(510)のデータが、デマンド要求の対象ではなかったプリフェッチデータであることに応じて、前記第1キャッシュの前記第3領域のキャッシュエントリ(510)のデータを、有効なステータスで前記第2キャッシュに転送することを含む、
請求項2の方法。
【請求項5】
前記第1転送ポリシーを選択することは、第1時間(455)において前記第1転送ポリシーを選択することを含み、
前記方法は、
第2時間(456)において、前記第1性能特性及び前記第2性能特性の間の関係の変化に応じて、前記第1キャッシュの前記第3領域に対して第2転送ポリシーを選択することであって、前記第2転送ポリシーは前記第1転送ポリシーと異なる、ことをさらに含む、
請求項2の方法。
【請求項6】
前記第1性能特性は、前記第1キャッシュの前記第1領域におけるキャッシュヒット率(452)を含み、
前記第2性能特性は、前記第1キャッシュの第2領域におけるキャッシュヒット率(453)を含む、
請求項2の方法。
【請求項7】
前記第1性能特性は、前記第1キャッシュの前記第1領域におけるキャッシュミス率を含み、
前記第2性能特性は、前記第1キャッシュの第2領域におけるキャッシュミス率を含む、
請求項2の方法。
【請求項8】
前記第1性能特性は、前記第1キャッシュの前記第1領域におけるキャッシュヒット率と、前記第1キャッシュの前記第1領域におけるキャッシュミス率と、の第1加重和を含み、
前記第2性能特性は、前記第1キャッシュの第2領域におけるキャッシュヒット率と、前記第1キャッシュの前記第2領域におけるキャッシュミス率と、の第2加重和を含む、
請求項2の方法。
【請求項9】
前記第1性能特性と前記第2性能特性とは、異なる性能特性タイプである、
請求項2の方法。
【請求項10】
第1領域(115)及び第2領域(116)を含む第1キャッシュ(110)と、
第2キャッシュ(120)と、
キャッシュコントローラ(105)と、を備え、
前記キャッシュコントローラは、
前記第1領域において、デマンド要求の対象ではないデータがプリフェッチ要求に応じて第1キャッシュエントリに記憶されているか否かに基づいて、前記第1キャッシュエントリ(240)に対して第1転送ポリシー(111)を選択し、
第2領域において、デマンド要求の対象ではないデータがプリフェッチ要求に応じて前記第2領域のキャッシュエントリに記憶されているか否かとは無関係に、前記キャッシュエントリに対して第2転送ポリシー(112)を選択し、
前記第1キャッシュからのキャッシュエントリのエビクトを必要とするデータを前記第1キャッシュで受信したことに応じて、
選択された第1転送ポリシーに基づいて前記第1領域のデータを、選択された第2転送ポリシーに基づいて前記第2領域のデータを前記第2キャッシュに選択的に転送する、ように構成されている、
プロセッサ(101)。
【請求項11】
前記第1領域に関する第1性能特性と、前記第2領域に関する第2性能特性と、を測定する性能モニタ(104)をさらに備え、
前記キャッシュコントローラは、
前記第1転送ポリシーが第2転送ポリシーよりも高い性能に関連していることを示す前記第1性能特性及び前記第2性能特性に基づいて、前記第1キャッシュの第3領域(118)に対して第1転送ポリシーを選択し、
選択された第1転送ポリシーに基づいて、前記第1キャッシュからのキャッシュエントリのエビクトを必要とするデータを前記第1キャッシュで受信したことに応じて、前記第1キャッシュの前記第3領域のキャッシュラインのデータを前記第2キャッシュに選択的に転送する、ように構成されている、
請求項10のプロセッサ。
【請求項12】
前記第1転送ポリシーは、
デマンド要求の対象ではなかったプリフェッチ要求(250)に応じて、選択された第1キャッシュエントリに記憶されたデータを選択して置換することを、前記選択されたデータが破棄されることを示すステータスで前記選択されたデータを前記第2キャッシュに転送することによって行うように構成されている、
請求項11のプロセッサ。
【請求項13】
前記第2転送ポリシーは、
前記受信したデータを第2キャッシュエントリに記憶する前に、前記第2キャッシュエントリのデータを前記第2キャッシュに転送するように構成されている、
請求項11のプロセッサ。
【請求項14】
前記キャッシュコントローラは、
第1時間(455)において前記第1転送ポリシーを選択し、
第2時間(456)において、前記第1転送特性及び前記第2転送特性の間の関係の変化に応じて、前記第3領域に対して第2転送ポリシーを選択する、ように構成されており、
前記第2転送ポリシーは前記第1転送ポリシーと異なる、
請求項11のプロセッサ。
【請求項15】
前記第1性能特性は、前記第1領域におけるキャッシュヒット率(453)を含み、
前記第2性能特性は、前記第2領域におけるキャッシュヒット率(452)を含む、
請求項11のプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
多くのプロセッサは、メモリアクセス効率を向上させるためにメモリ階層を採用しており、これにより、プロセッサは、メインメモリに記憶されたデータのサブセットを記憶するための1つ以上のキャッシュを含む。メインメモリからのデータのサブセットがキャッシュに記憶される基準は、プロセッサの設計に応じて異なり得るが、通常は、最近アクセスされたデータをキャッシュすることを優先する。また、いくつかのプロセッサは、近い将来にプロセッサによってアクセスされる可能性があるデータを予測し、そのデータをメインメモリから1つ以上のキャッシュにコピーする1つ以上のプリフェッチャを採用している。プロセッサは、新たなデータを1つ以上のキャッシュに移動するために、指定された置換方式に基づいて、以前に記憶されたデータをエビクトするために選択するが、従来の置換方式では、メモリアクセス効率が望まないほど低くなる可能性がある。
【0002】
添付図面を参照することによって、本開示は当業者により良く理解され、その多数の特徴及び利点が明らかになるであろう。異なる図面での同じ参照記号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、キャッシュの異なるテスト領域に関するアクセスメトリックに基づいて転送ポリシーをキャッシュの一部に適用する処理システムのブロック図である。
【
図2】いくつかの実施形態による、キャッシュの異なるテスト領域において異なる転送ポリシーを使用する
図1の処理システムの一例を示す図である。
【
図3】いくつかの実施形態による、キャッシュの異なるテスト領域において異なる転送ポリシーを使用する
図1の処理システムの一例を示す図である。
【
図4】いくつかの実施形態による、キャッシュのテスト領域に関するアクセスメトリックに基づいてキャッシュの非テスト領域における転送ポリシーを変更する
図1の処理システムの一例を示す図である。
【
図5】いくつかの実施形態による、キャッシュの異なるテスト領域に関するアクセスメトリックに基づいて転送ポリシーをキャッシュの一部に適用する方法のフロー図である。
【発明を実施するための形態】
【0004】
図1~
図5は、キャッシュの異なるテスト領域に関するアクセスメトリックに基づいて転送ポリシーをキャッシュの一部に適用するための技術であって。各テスト領域は、プリフェッチ要求に応じて記憶されたがデマンド要求の対象ではなかったキャッシュエントリ内のデータ(「未使用のプリフェッチ」又は「未使用のプリフェッチデータ」と呼ばれる)に対して異なる転送ポリシーを適用する技術を示す図である。1つのテスト領域では、未使用のプリフェッチがキャッシュのテスト領域からエビクトされると、キャッシュ階層内の上位レベルのキャッシュに転送されるという転送ポリシーが適用される。他のテスト領域では、未使用のプリフェッチがキャッシュのテスト領域からエビクトされると、上位レベルのキャッシュに転送されることなく置換される(又は、上位レベルのキャッシュに転送されるが無効なデータとして記憶される)という転送ポリシーが適用される。異なるテスト領域に関するアクセスメトリックに基づいてキャッシュの非テスト部分に対するキャッシュ転送ポリシーを選択することによって、キャッシュは、転送ポリシーを、プロセッサで現在実行中の命令のパターンに対してより効率的なポリシーに動的に変更する。
【0005】
一例を挙げて説明すると、いくつかの実施形態では、キャッシュは、2つのテスト領域と1つの非テスト領域とを有し、プロセッサからのデマンド要求及びプリフェッチャからのプリフェッチ要求に応じてデータを記憶するために、全ての領域がキャッシュによって使用される。キャッシュは、異なるテスト領域に対して異なる転送ポリシーを使用することによって、1つのテスト領域に対して、未使用のプリフェッチを記憶するエビクトされたキャッシュエントリを、上位レベルのキャッシュに転送するようにする。他のテスト領域では、キャッシュは、データを上位レベルのキャッシュに転送することなく、未使用のプリフェッチを記憶するエビクトされたキャッシュエントリを置換し、又は、データを上位レベルのキャッシュに転送するが当該データを無効なデータとして記憶する。プロセッサは、各テスト領域に関するアクセスメトリック(例えば、キャッシュヒット率、キャッシュミス率、又は、これらの組み合わせ等)を監視する。プロセッサは、アクセスメトリックに基づいて、1つのテスト領域に対する転送ポリシーを選択し、それをキャッシュの非テスト領域に適用する。例えば、1つのテスト領域のキャッシュヒット率が高い場合、プロセッサは、そのテスト領域の転送ポリシーをキャッシュの非テスト領域に適用することによって、キャッシュ全体のヒット率を向上させる。
【0006】
本明細書では、「転送ポリシー」という用語は、キャッシュエントリに記憶されたデータがキャッシュからエビクトされるときにどのように処理されるかを指す。転送ポリシーは、全ての未使用のプリフェッチがキャッシュからエビクトされると、上位レベルのキャッシュに転送され、有効なデータとして記憶されることを要求する場合がある。他の転送ポリシーは、全ての未使用のプリフェッチがキャッシュからエビクトされると、破棄されることを定めている。いくつかの実施形態では、プリフェッチデータは、データを上位レベルのキャッシュに転送することなく、キャッシュにおいてデータを置換することによって破棄される。いくつかの他の実施形態では、プリフェッチデータは、データを上位レベルのキャッシュに提供するが、データが無効であることを示す指標と共にデータを上位レベルのキャッシュに記憶することによって破棄される。これにより、上位レベルのキャッシュにおけるキャッシュエントリの置換中にデータを有効な着信データに置換することができる。
【0007】
図1は、いくつかの実施形態による、キャッシュの異なるテスト領域に関するアクセスメトリックに基づいて、未使用のプリフェッチに対するキャッシュ転送ポリシーをキャッシュの一部に適用する処理システム100を示す図である。処理システム100は、概して、電子デバイスに代わってタスクを実行するために、コンピュータプログラムの形態で構成された命令のセットを実行するように構成されている。したがって、処理システム100は、例えば、デスクトップ又はラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲーム機等の様々な電子デバイスの何れにも使用することができる。
【0008】
処理システム100は、命令の実行を容易にするために、プロセッサ101と、メモリ130と、を含む。プロセッサ101は、プロセッサコア102と、キャッシュコントローラ105と、L2キャッシュ110と、L3キャッシュ120と、を含む。いくつかの実施形態では、プロセッサ101の各モジュールは、プロセッサコア102の少なくとも一部を形成するために同じ半導体ダイ上に形成されており、メモリ130は、異なる半導体ダイ上に形成されており、1つ以上のバス又は信号線を介してプロセッサ101に接続されている。いくつかの実施形態では、メモリ130の少なくとも一部は、プロセッサ101のモジュールと同じ半導体ダイ上に形成されている。
【0009】
L2キャッシュ110、L3キャッシュ120及びメモリ130の各々は、概して、データを記憶するように構成されたメモリデバイスであり、したがって、ランダムアクセスメモリ(RAM)メモリモジュール、不揮発性メモリデバイス(例えば、フラッシュメモリ)等であってもよい。本明細書でさらに説明するように、L2キャッシュ110、L3キャッシュ120及びメモリ130は、処理システム100のメモリ階層を形成する。また、処理システム100のメモリ階層は、他のメモリモジュール(例えば、
図1に示されていない追加のキャッシュ等)を含んでもよい。
【0010】
プロセッサコア102は、例えば、命令をフェッチするためのフェッチステージと、フェッチされた命令の各々を1つ以上の動作にデコードするためのデコードステージと、動作を実行するための実行ステージと、動作の実行が完了した命令をリタイアさせるためのリタイアステージと、を有する命令パイプラインを含む。命令に基づいて生成された動作のセットは、本明細書においてメモリアクセス命令と呼ばれ、処理システム100のメモリ階層からデータをロードする要求(ロード動作)、及び、処理システム100のメモリ階層にデータを記憶する要求である。プロセッサコア102によって生成されたメモリアクセス要求は、実行中のプログラムによって使用されているデータ又は必要とされることが分かっているデータをロード又は記憶する要求を表しており、本明細書においてデマンド要求と呼ばれる。
【0011】
キャッシュコントローラ105は、概して、L2キャッシュ110、L3キャッシュ120及びメモリ130の間でデータを移動させることによって、処理システム100のメモリ階層を管理するように構成されたモジュールである。特に、L2キャッシュ110及びL3キャッシュ120の各々は、複数のエントリを含むメモリデバイスであり、各エントリは、メモリ130の1つ以上のアドレスに関連付けられている。キャッシュコントローラ105は、メモリアクセス要求に応じて、L2キャッシュ110の1つ以上のエントリに記憶されたデータをレビューして、何れのエントリが、メモリアクセス要求の対象となるメモリアドレスに関連するデータを記憶しているかどうかを判別する。記憶している場合、キャッシュコントローラ105は、キャッシュヒットを示し、データをエントリに記憶することによって(記憶動作の場合)、又は、識別されたエントリのデータをプロセッサコア102に提供することによって(ロード動作の場合)、識別されたエントリにおけるメモリアクセス要求を満たす。
【0012】
メモリアドレスに関連するデータがL2キャッシュ110のエントリに記憶されていない場合、キャッシュコントローラ105は、キャッシュミスを示し、L3キャッシュ120に対して要求を発行する。メモリアクセス要求に応じて、キャッシュコントローラ105(又は、いくつかの実施形態では、他のキャッシュコントローラ)は、L3キャッシュ120の1つ以上のエントリに記憶されたデータをレビューして、何れのエントリがメモリアクセス要求の対象となるメモリアドレスに関連するデータを記憶しているかどうかを判別する。記憶している場合、キャッシュコントローラ105は、キャッシュヒットを示し、データをエントリに記憶することによって(記憶動作の場合)、又は、識別されたエントリのデータをL2キャッシュ110に提供し、その後L2キャッシュ110からプロセッサコア102に提供されることによって(ロード動作の場合)、識別されたエントリにおけるメモリアクセス要求を満たす。メモリアドレスに関連するデータがL3キャッシュ120のエントリに記憶されていない場合、キャッシュコントローラ105は、キャッシュミスを示し、メモリアドレスのデータに対する要求をメモリ130に発行する。キャッシュコントローラ105は、メモリ130からデータを受信すると、データをL3キャッシュ120のエントリに記憶し、その後、データがL3キャッシュ120からL2キャッシュ110に転送され、L2キャッシュ110がデータをプロセッサコア102に提供することによって、メモリアクセス要求が満たされる。
【0013】
プロセッサ101は、メモリアクセス効率の向上をサポートするために、プリフェッチャ106を含む。プリフェッチャ106は、キャッシュコントローラ105に発行されたデマンド要求を監視してパターンを識別し、識別されたパターンに基づいて、近い将来にプロセッサコア102によるデマンド要求の対象となるメモリアドレスを予測する。プリフェッチャ106は、本明細書ではプリフェッチ要求と呼ばれる、識別されたメモリアドレスを対象とするメモリアクセス要求をキャッシュコントローラ105に発行する。キャッシュコントローラ105は、先ず、プリフェッチ要求の対象となるメモリアドレスに関連するデータがL2キャッシュ110のエントリに既に記憶されているか否かを識別し、記憶されていない場合に、L3キャッシュ120又はメモリ130からのデータを要求し、データをL2キャッシュ110のエントリに記憶することによって、プリフェッチ要求をデマンド要求と同様に扱う。
【0014】
いくつかの実施形態では、L2キャッシュ110及びL3キャッシュ120の各エントリは、メモリアドレスのサブセットに関連付けられており、そのサブセットに関連付けられたデータのみがエントリに記憶されることが許可される。例えば、いくつかの実施形態では、キャッシュは、M個のセットを有し、M個のセットの各々がN個のエントリを含む、Nウェイセットアソシアティブキャッシュである。M個のセットの各々に異なるメモリアドレスのサブセットが割り当てられることによって、データが、エントリの割り当てられたサブセット内のメモリアドレスに関連付けられている場合には、キャッシュコントローラ105は、データをエントリに記憶するのみである。セットの全てのエントリがメモリアクセスの対象となり得るデータ(本明細書では「有効なデータ」と呼ばれる)を記憶している場合、そのセットは、本明細書においてフル(full)と呼ばれる。さらに、キャッシュコントローラ105は、フルのセットに記憶するデータを受信した場合、エビクトされる(すなわち、セットから削除される)セットの1つのエントリを選択して、受信したデータと置換する。エントリがL2キャッシュ110からエビクトされた場合、当該エントリは、L3キャッシュ120に転送されてもよいし、最初にL3キャッシュ120に転送されることなく置換されてもよい。キャッシュコントローラ105が転送するエントリ、又は、転送することなく置換するエントリを選択するために使用するスキームは、L2キャッシュ110の転送ポリシーと呼ばれる。
【0015】
L2キャッシュ110の転送ポリシーは、エビクトされたキャッシュエントリのより効率的な転送を容易にするために、キャッシュエントリに記憶されたデータがプリフェッチ要求に応じて記憶されたが、デマンド要求の対象ではなかったかどうかに少なくとも部分的に基づくことができる。1つの転送ポリシーの下では、L2キャッシュ110内の未使用のプリフェッチは、L2キャッシュ110からエビクトされると、有効なステータスでL3キャッシュ120に転送される。異なる転送ポリシーの下では、L2キャッシュ110内の未使用のプリフェッチは、データが無効であり、したがって破棄に適格であることを示すステータスでL3キャッシュ120に転送される。さらに他の転送ポリシーでは、L2キャッシュ110内の未使用のプリフェッチは、L2キャッシュ110からエビクトされると、L3キャッシュ120に転送されることなく置換される。通常、プリフェッチ要求に応じてL2キャッシュ110に転送されたデータは、L3キャッシュ120から以前に転送又はコピーされたものである。いくつかの実施形態では、L3キャッシュ120はL2キャッシュ110を含まず、これにより、L2キャッシュ110に記憶されたキャッシュエントリの少なくとも一部がL3キャッシュ120に記憶されない。L3キャッシュ120がL2キャッシュ110を含まない場合に、未使用のプリフェッチデータをL2キャッシュ110からエビクトする際にL3キャッシュ120に転送することは、例えば、未使用のプリフェッチデータが割り当てられたL3キャッシュ120内のセットがフルである場合に、L3キャッシュ120から他の有効なデータをエビクトすることが必要になるので、メモリ要求の処理がより非効率になる。未使用のプリフェッチデータを無効なステータスでL3キャッシュ120に転送するか、未使用のプリフェッチデータをL2キャッシュ110からエビクトするときにL3キャッシュ120に転送することなく置換する転送ポリシーを任意に使用することによって、メモリ要求のより効率的な処理が実現され得る。対照的に、従来のキャッシュ管理システムでは、未使用のプリフェッチデータは、L2キャッシュ110からエビクトされるときに有効なステータスでL3キャッシュ120に転送され、これにより、場合によってはより有用なデータ(例えば、未使用のプリフェッチデータよりもアクセスされる可能性が高いデータ)がエビクトされ、メモリアクセス効率が低下する。
【0016】
いくつかの実施形態では、キャッシュコントローラ105は、キャッシュ110の異なる領域に異なる転送ポリシーを適用し、各領域は複数のエントリを含む。少なくとも1つの実施形態では、各領域は、その転送ポリシーのみが異なる。したがって、領域のエントリは任意のセットに使用することができ、異なる領域は、同じセットの異なるエントリを含むことができる。
【0017】
図1に示す例では、キャッシュ110は、3つの領域(テスト領域115,116及び非テスト領域118)を含む。また、キャッシュコントローラ105は、未使用のプリフェッチデータがL2キャッシュ110からエビクトされるときに有効なステータス又は無効なステータスでL3キャッシュ120に転送されるか、又は、L3キャッシュ120に転送されることなく置換されるか等のように少なくとも1つの態様の異なる転送ポリシー111,112を記憶する。したがって、
図1の例では、転送ポリシー111は、未使用のプリフェッチデータの全て又は一部が、任意の非プリフェッチ要求データと同様に、L2キャッシュ110からエビクトされるときに有効なステータスでL3キャッシュ120に転送されることを定める。本明細書で使用する場合、非プリフェッチ要求とは、転送ポリシーが適用されるキャッシュレベルを対象とするプリフェッチ要求ではないメモリアクセスを指す。非プリフェッチ要求の例には、デマンド要求、命令キャッシュミスに応じて生成されたメモリアクセス要求、ハードウェアページテーブルウォーク要求、プロセッサコア102によって生成された投機的なメモリアクセス要求(例えば、分岐命令後の命令の投機的な実行中に生成されたメモリアクセス要求)、及び、他のキャッシュレベルにおいて生成されたプリフェッチ要求が挙げられる。
【0018】
対照的に、転送ポリシー112は、未使用のプリフェッチデータの全て又は一部がL2キャッシュ110からエビクトされるときに無効なステータスでL3キャッシュ120に転送されるか、L3キャッシュ120に転送されることなく置換され、その一方で、非プリフェッチ要求データがL2キャッシュ110からエビクトされるときにL3キャッシュ120に転送されることを定める。したがって、転送ポリシー111は、プリフェッチデータにアクセスする頻度がより高いメモリアクセスパターンに対してより効率的となることができ、転送ポリシー112は、プリフェッチデータにアクセスする頻度がより少ないメモリアクセスパターンに対してより効率的となることができる。しかしながら、プロセッサコア102のメモリアクセスパターンは、異なる時点において異なる転送ポリシーの下でキャッシュ110がより効率的に動作するように、経時的に変化する可能性がある。したがって、キャッシュコントローラ105は、非テスト領域118に対して、テスト領域115,116の性能特性に応じて転送ポリシー111,112の中から選択する。
【0019】
例示すると、プロセッサ101は、テスト領域115,116の各々について、キャッシュヒット率、キャッシュミス率等の性能特性を監視し記録する性能モニタ104を含む。キャッシュコントローラは、テスト領域115,116の性能特性のうち1つ以上又はこれらの組み合わせに基づいて、転送ポリシー111,112のうち1つの転送ポリシーを選択し、選択した転送ポリシーを非テスト領域118に適用する。例えば、テスト領域115のキャッシュヒット率がテスト領域116のキャッシュヒット率よりも高い場合、キャッシュコントローラ105は、テスト領域115の転送ポリシー(例えば、転送ポリシー111)を選択して、非テスト領域118に適用する。いくつかの実施形態では、非テスト領域118は、キャッシュ110のエントリの大部分を含む。したがって、テスト領域115,116の性能によって示されるように、非テスト領域118の転送ポリシーをより効率的な転送ポリシーとして選択することによって、キャッシュコントローラ105は、キャッシュ110全体の効率を向上させる。さらに、テスト領域115,116の性能特性が経時的に変化すると、キャッシュコントローラは、転送ポリシーを、所定の性能特性のセットに対してより効率的なポリシーに変更する。
【0020】
図2は、いくつかの実施形態による、
図1のL2キャッシュ110のテスト領域115,116に異なる転送ポリシーを適用するキャッシュコントローラ105の一例を示す図である。図示した例では、テスト領域115,116の各々は、テスト領域115のエントリ240,241,242,243、及び、テスト領域116のエントリ246,247,248,249等の複数のエントリを含む。各エントリは、メモリ130から取得されたデータを記憶するためのデータ部分(例えば、エントリ240のデータ部分244)、すなわち、当該エントリにおけるメモリアクセス要求を満たすために使用されるデータを含む。また、各エントリは、テスト領域115に適用された転送ポリシーが、データがL2キャッシュ110のテスト領域115からエビクトされるときに、L3キャッシュ120に転送されるのか、L3キャッシュ120に転送されることなく置換されるのか(或いは、データが破棄されることを示すステータスで転送されるのか)の何れを定めているかについての指標を記憶する転送フィールド(例えば、エントリ240の転送フィールド245)を含む。
【0021】
図2の例では、キャッシュコントローラ105は、未使用のプリフェッチ要求がL2キャッシュ110のテスト領域115からエビクトされると最初にL3キャッシュ120に転送されることなく置換され、その一方で、デマンド要求がL2キャッシュ110のテスト領域115からエビクトされるとL3キャッシュ120に転送される転送ポリシーをテスト領域115に適用すると仮定する。
図2の例では、L2キャッシュ110のテスト領域115には、プリフェッチ要求250,252の各々に関連するデータと、デマンド要求251,253の各々に関連するデータと、が入力されている。
【0022】
上述したように、キャッシュコントローラ105は、異なる転送ポリシーを異なるテスト領域115,116に適用する。キャッシュコントローラ105は、各テスト領域の性能特性を測定することによって、プロセッサコア102の最近のメモリアクセスパターンに対してより効率的な転送ポリシーを識別し、より効率的な転送ポリシーを非テスト領域118に適用することによって、全体的なキャッシュ効率を向上させる。
【0023】
いくつかの実施形態では、転送ポリシーは、プリフェッチ要求に関連する全ての未使用のデータについて、L3キャッシュ120に転送することなく置換する(又は、データを破棄されることを示すステータスでL3キャッシュ120に転送する)ように定めるのではなく、プリフェッチ要求に関連する未使用のデータの一部について、L3キャッシュ120に転送することなく置換するように定める。例えば、テスト領域115の場合、キャッシュコントローラ105は、プリフェッチ要求に関連するエントリの或る割合のみが、先にL3キャッシュ120に転送されることなく置換されることを定める転送ポリシーを適用する。
【0024】
テスト領域115に適用される転送ポリシーとは対照的に、テスト領域116に適用される転送ポリシーは、エントリ毎に、エントリがデマンド要求又はプリフェッチ要求の何れに関連しているかに拘わらず、L2キャッシュ110からエビクトされるときに有効なステータスでL3キャッシュ120に転送されることを定める。
図2の例では、テスト領域116には、プリフェッチ要求256,258の各々に関連するデータと、デマンド要求257,259の各々に関連するデータと、が入力されている。キャッシュコントローラ105は、テスト領域116のエントリのエビクトに応じて、データがデマンド要求又はプリフェッチ要求の何れに関連しているかに拘わらず、エントリをL3キャッシュ120に転送することを要求する転送ポリシーを適用する。したがって、異なるテスト領域115,116に適用される異なる転送ポリシーは、プリフェッチ要求に関連するエントリがL2キャッシュ110からエビクトされるときに最初にL3キャッシュ120に転送されることなく置換され、一部置換され、又は、全く置換されないことを含む、いくつかの態様のうち1つ以上において異なる。さらに、いくつかの実施形態では、キャッシュ110は、異なる転送ポリシーが適用された3つ以上のテスト領域を含み、これにより、非テスト領域118に適用する広範囲の可能な転送ポリシーをキャッシュコントローラに与える。
【0025】
図3は、L2キャッシュ310の異なるテスト領域に異なる転送ポリシーを適用するキャッシュコントローラ305の一例を示す図である。
図3の例では、キャッシュコントローラ305は、転送ポリシー311をL2キャッシュ310のテスト領域315に適用し、転送ポリシー312をL2キャッシュ310のテスト領域316に適用する。転送ポリシー311は、全てのエントリが、L2キャッシュ310からエビクトされると、エントリがプリフェッチ要求又はデマンド要求の何れに関連しているかに拘わらず、L3キャッシュ320に転送されることを定める。
図3の例では、着信データ341は、L2キャッシュ310のテスト領域315内のプリフェッチデータ345を含むセットに受信され、プリフェッチデータ345のエビクトを必要とする。キャッシュコントローラ305は、転送ポリシー311をテスト領域315に適用しているので、プリフェッチデータ345を、着信データ341に置換する前にL3キャッシュ320に転送する。
【0026】
対照的に、着信データ342は、L2キャッシュ310のテスト領域316内のプリフェッチデータ346を含むセットに受信され、プリフェッチデータ346のエビクトを必要とする。キャッシュコントローラ305は、転送ポリシー312をテスト領域316に適用しているので、プリフェッチデータ346を、L3キャッシュ320に転送することなく破棄する。
【0027】
図4は、いくつかの実施形態による、異なるテスト領域115,116の経時的に変化する相対的な性能の一例を示す
図400である。
図400は、時間を表すX軸450と、キャッシュヒット率を表すY軸451と、を含む。
図400は、経時的なテスト領域116のキャッシュヒット率を表す曲線452と、テスト領域115のキャッシュヒット率を表す曲線453と、を示している。
【0028】
図400に示す例において、時間455の前では、テスト領域115のキャッシュヒット率は、テスト領域116のキャッシュヒット率よりも高い。したがって、時間455の前では、キャッシュコントローラ105は、テスト領域115の転送ポリシーを非テスト領域118に適用する。時間455において、テスト領域115,116間のキャッシュヒット率の関係は、テスト領域116のキャッシュヒット率がテスト領域115のキャッシュヒット率よりも高くなるように変化する。これに応じて、キャッシュコントローラ105は、非テスト領域118の転送ポリシーを、テスト領域116の転送ポリシーと一致するように変更する。後の時間456において、テスト領域115,116間のキャッシュヒット率の関係は、テスト領域115のキャッシュヒット率がテスト領域116のキャッシュヒット率よりも高くなるように再度変化する。これに応じて、キャッシュコントローラ105は、非テスト領域118の転送ポリシーを、テスト領域115の転送ポリシーと一致するように変更する。このように、キャッシュコントローラ105は、テスト領域115,116の相対的な性能の変化に基づいて、非テスト領域118に適用される転送ポリシーを変更する。
【0029】
図5は、いくつかの実施形態による、キャッシュの異なるテスト領域の性能特性に基づいてキャッシュの非テスト領域の転送ポリシーを選択する方法500のフロー図である。説明目的で、方法500は、
図1の処理システム100における例示的な実装に関して説明する。ブロック502において、キャッシュコントローラ105は、異なる転送ポリシー111,112をキャッシュ110の異なるテスト領域115,116に適用する。したがって、例えば、キャッシュコントローラ105は、転送ポリシー111をテスト領域115に適用し、転送ポリシー112をテスト領域116に適用する。ブロック504において、性能モニタ104は、異なるテスト領域115,116の性能特性(例えば、キャッシュヒット率、キャッシュミス率、キャッシュヒット率及びキャッシュミス率の加重和等)を監視し記録する。
【0030】
ブロック506において、キャッシュコントローラ105は、テスト領域115,116の各々の性能特性を比較し、その比較に基づいて転送ポリシー111,112のうち1つの転送ポリシーを選択する。例えば、キャッシュコントローラ105は、性能特性によって示されるように、より高い性能を有するテスト領域に適用される転送ポリシーを選択する。ブロック508において、キャッシュコントローラ105は、選択された転送ポリシーをキャッシュ110の非テスト領域118に適用する。すなわち、キャッシュコントローラは、選択された転送ポリシーの要件に従って、非テスト領域118でのエビクトの際に転送され又は事前の転送なく置換されるキャッシュエントリを指定する。ブロック510において、キャッシュコントローラ105は、転送指定又は置換指定を使用して、L2キャッシュ110の非テスト領域118の置換ポリシーに従って、L2キャッシュ110の非テスト領域118に記憶されたプリフェッチデータを転送又は破棄する。方法のフローはブロック504に戻り、キャッシュコントローラ105は、テスト領域115,116の性能を監視し続け、その性能に基づいて、非テスト領域118に適用される転送ポリシーを調整することを反映する。
【0031】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0032】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム(例えば、システムRAM又はROM)に内蔵されてもよいし、コンピュータシステム(例えば、磁気ハードドライブ)に固定的に取り付けられてもよいし、コンピュータシステム(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム(例えば、ネットワークアクセス可能なストレージ(NAS))に接続されてもよい。
【0033】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0034】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。