特許第6840169号(P6840169)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特許6840169キャッシュテスト領域に基づくプリフェッチのためのキャッシュエージングポリシーの選択
<>
  • 特許6840169-キャッシュテスト領域に基づくプリフェッチのためのキャッシュエージングポリシーの選択 図000002
  • 特許6840169-キャッシュテスト領域に基づくプリフェッチのためのキャッシュエージングポリシーの選択 図000003
  • 特許6840169-キャッシュテスト領域に基づくプリフェッチのためのキャッシュエージングポリシーの選択 図000004
  • 特許6840169-キャッシュテスト領域に基づくプリフェッチのためのキャッシュエージングポリシーの選択 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6840169
(24)【登録日】2021年2月18日
(45)【発行日】2021年3月10日
(54)【発明の名称】キャッシュテスト領域に基づくプリフェッチのためのキャッシュエージングポリシーの選択
(51)【国際特許分類】
   G06F 12/121 20160101AFI20210301BHJP
   G06F 12/0862 20160101ALI20210301BHJP
【FI】
   G06F12/121 100
   G06F12/0862 100
【請求項の数】15
【全頁数】13
(21)【出願番号】特願2018-555627(P2018-555627)
(86)(22)【出願日】2016年9月15日
(65)【公表番号】特表2019-516188(P2019-516188A)
(43)【公表日】2019年6月13日
(86)【国際出願番号】US2016051811
(87)【国際公開番号】WO2017189033
(87)【国際公開日】20171102
【審査請求日】2019年9月12日
(31)【優先権主張番号】15/139,923
(32)【優先日】2016年4月27日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール モイヤー
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開2002−163150(JP,A)
【文献】 特開平06−028257(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/121
G06F 12/0862
(57)【特許請求の範囲】
【請求項1】
キャッシュの第1領域において、プリフェッチ要求又はデマンド要求に応じてデータを前記第1領域の第1キャッシュエントリに記憶し、プリフェッチ要求であるかデマンド要求であるかに基づいて、前記第1キャッシュエントリのエージングを選択して記憶することと、
前記キャッシュの第2領域において、プリフェッチ要求又はデマンド要求に応じてデータ前記第2領域のキャッシュエントリに記憶し、プリフェッチ要求であるかデマンド要求であるかに関わらず、前記キャッシュエントリに同じエージングを記憶することと、
前記キャッシュの前記第1領域及び前記キャッシュの前記第2領域のデータを、前記第1領域及び前記第2領域のキャッシュエントリのエージングに基づいて置き換えることと、を含む、
方法。
【請求項2】
前記キャッシュの前記第1領域の第1性能特性、及び、前記キャッシュの前記第2領域の第2性能特性を測定することと、
前記第1性能特性及び前記第2性能特性に基づいて、前記キャッシュの第3領域に対する第1エージングポリシーを選択することと、
前記第3領域のキャッシュエントリに関連するエージングに基づいて、前記キャッシュの前記第3領域のキャッシュエントリにおけるデータを置き換えることと、をさらに含む、
請求項1の方法。
【請求項3】
前記第1エージングポリシーを選択することは、
プリフェッチ要求又はデマンド要求に応じてデータを前記第3領域の第2キャッシュエントリに記憶し、プリフェッチ要求であるかデマンド要求であるかに基づいて、前記第2キャッシュエントリのエージングを選択して記憶することを含む、
請求項2の方法。
【請求項4】
前記第1エージングポリシーを選択することは、
デマンド要求に関連する前記第3領域のキャッシュエントリと、プリフェッチ要求に関連する前記第3領域のキャッシュエントリと、に同じエージングを記憶することを含む、
請求項2の方法。
【請求項5】
前記第1エージングポリシーを選択することは、第1時間において前記第1エージングポリシーを選択することを含み、
前記方法は、
第2時間において、前記第1性能特性と前記第2性能特性との間の関係の変化に応じて、前記キャッシュの前記第3領域に対する第2エージングポリシーを選択することであって、前記第2エージングポリシーは前記第1エージングポリシーとは異なる、ことをさらに含む、
請求項2の方法。
【請求項6】
前記第1性能特性は、前記キャッシュの第1領域におけるキャッシュヒット率を含み、
前記第2性能特性は、前記キャッシュの第2領域におけるキャッシュヒット率を含む、
請求項2の方法。
【請求項7】
前記第1性能特性は、前記キャッシュの第1領域におけるキャッシュミス率を含み、
前記第2性能特性は、前記キャッシュの第2領域におけるキャッシュミス率を含む、
請求項2の方法。
【請求項8】
前記第1性能特性は、前記キャッシュの第1領域におけるキャッシュヒット率と、前記キャッシュの第1領域におけるキャッシュミス率と、の第1の重み付けられた和を含み、
前記第2性能特性は、前記キャッシュの第2領域におけるキャッシュヒット率と、前記キャッシュの第2領域におけるキャッシュミス率と、の第2の重み付けられた和を含む、
請求項2の方法。
【請求項9】
前記第1キャッシュエントリのエージングを選択することは、
プリフェッチ要求に応じて前記データが前記第1キャッシュエントリに記憶されたのを識別したことに応じて、前記第1キャッシュエントリに対してより小さいエージングを選択することと、
デマンド要求に応じて前記データが前記第1キャッシュエントリに記憶されたのを識別したことに応じて、前記第1キャッシュエントリに対してより大きいエージングを選択することと、を含む、
請求項1の方法。
【請求項10】
第1領域及び第2領域を備えるキャッシュと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
前記第1領域において、プリフェッチ要求又はデマンド要求に応じてデータを前記第1領域の第1キャッシュエントリに記憶し、プリフェッチ要求であるかデマンド要求であるかに基づいて、前記第1キャッシュエントリのエージングを選択して記憶することと、
前記第2領域において、プリフェッチ要求又はデマンド要求に応じてデータ前記第2領域のキャッシュエントリに記憶し、プリフェッチ要求であるかデマンド要求であるかに関わらず、前記キャッシュエントリに同じエージングを記憶することと、
前記キャッシュの前記第1領域及び前記キャッシュの前記第2領域のデータを、前記第1領域及び前記第2領域のキャッシュエントリのエージングに基づいて置き換えることと、
を行うように構成されている、
プロセッサ。
【請求項11】
前記キャッシュの前記第1領域の第1性能特性、及び、前記キャッシュの前記第2領域の第2性能特性を測定する性能モニタをさらに備え、
前記キャッシュコントローラは、
前記第1性能特性及び前記第2性能特性に基づいて、前記キャッシュの第3領域に対する第1エージングポリシーを選択することと、
選択された第1エージングポリシーに基づいて、前記キャッシュの前記第3領域のキャッシュラインにおけるデータを置き換えることと、
を行うように構成されている、
請求項10のプロセッサ。
【請求項12】
前記キャッシュコントローラは、
プリフェッチ要求又はデマンド要求に応じてデータを前記第3領域の第2キャッシュエントリに記憶し、プリフェッチ要求であるかデマンド要求であるかに基づいて、前記第2キャッシュエントリのエージングを選択して記憶するように構成されている、
請求項11のプロセッサ。
【請求項13】
前記キャッシュコントローラは、
デマンド要求に関連する前記第3領域のキャッシュラインと、プリフェッチ要求に関連する前記第3領域のキャッシュラインと、に同じエージングを記憶することによって、前記第1エージングポリシーを選択するように構成されている、
請求項11のプロセッサ。
【請求項14】
前記第1性能特性は、前記キャッシュの第1領域におけるキャッシュヒット数と、前記キャッシュの第1領域におけるキャッシュミス数と、の第1の重み付けられた和を含み、
前記第2性能特性は、前記キャッシュの第2領域におけるキャッシュヒット数と、前記キャッシュの第2領域におけるキャッシュミス数と、の第2の重み付けられた和を含む、
請求項11のプロセッサ。
【請求項15】
前記キャッシュコントローラは、
プリフェッチ要求に応じて前記データが前記第1キャッシュエントリに記憶されたのを識別したことに応じて、前記第1キャッシュエントリに対してより小さいエージングを選択することと、
デマンド要求に応じて前記データが前記第1キャッシュエントリに記憶されたのを識別したことに応じて、前記第1キャッシュエントリに対してより大きいエージを選択することと、
を行うことによって、前記第1キャッシュエントリのエージングを選択するように構成されている、
請求項10のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、プロセッサに関し、特にプロセッサキャッシュに関する。
【背景技術】
【0002】
メモリアクセスの効率を向上させるために、多くのプロセッサはメモリ階層を採用しており、これにより、プロセッサは、メインメモリに記憶されたデータのサブセットを記憶するための1つ以上のキャッシュを含む。メインメモリからのデータのサブセットをキャッシュに記憶する基準は、プロセッサの設計に応じて異なるが、通常、最近アクセスされたデータのキャッシングを優先する。また、一部のプロセッサは、近い将来にプロセッサコアによってアクセスされる可能性のあるデータを推測し、そのデータをメインメモリから1つ以上のキャッシュにコピーする1つ以上のプリフェッチャを使用する。新たなデータを1つ以上のキャッシュに移動させるには、プロセッサは、通常、指定された置換スキームに基づいて、事前に記憶されたデータを選択して退去させる必要がある。例えば、一部のプロセッサは、LRU(least-recently-used)置換スキームを採用しており、これにより、プロセッサは、最も長い時間に亘ってプロセッサコアがアクセスしていないデータを記憶するキャッシュエントリを退去させる。しかしながら、多くのシナリオでは、LRU置換スキームは、プロセッサコアで実行される命令のメモリアクセスパターンに対応しておらず、メモリアクセスの効率の低下という望ましくない結果を招く。
【0003】
本開示は、添付の図面を参照することでより良く理解され、その多くの特徴及び利点が当業者に明らかとなるであろう。異なる図面における同じ参照符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0004】
図1】いくつかの実施形態による、キャッシュの異なるテスト領域のアクセスメトリックに基づいて、エージングポリシーをキャッシュの一部に適用する処理システムのブロック図である。
図2】いくつかの実施形態による、キャッシュの異なるテスト領域において異なるエージングポリシーを使用する図1の処理システムの一例を示す図である。
図3】いくつかの実施形態による、キャッシュのテスト領域のアクセスメトリックに基づいて、キャッシュの非テスト領域においてエージングポリシーを変更する図1の処理システムの一例を示す図である。
図4】いくつかの実施形態による、キャッシュの異なるテスト領域のアクセスメトリックに基づいて、エージングポリシーをキャッシュの一部に適用する方法のフロー図である。
【発明を実施するための形態】
【0005】
図1図4は、キャッシュの異なるテスト領域のアクセスメトリックに基づいて、エージングポリシーをキャッシュの一部に適用し、これにより、各テスト領域が異なるエージングポリシーを実施する技術を示している。各領域のエージングポリシーは、キャッシュの各エントリの初期エージング値を確立し、特定のエージングポリシーは、プロセッサコアからのデマンド要求に応じて、又は、プリフェッチ要求に応じて、エントリがキャッシュに配置されたか否かに基づいて、所定のエントリにエージングを設定することができる。キャッシュは、各エントリのエージング値を、キャッシュ置換ポリシーの基準として使用することができる。キャッシュは、異なるテスト領域のアクセスメトリックに基づいてキャッシュの非テスト領域のキャッシュエージングポリシーを選択することによって、プロセッサコアで現在実行中の命令に対して、エージングポリシーをより効率的なポリシーに動的に変更することができる。
【0006】
一例を説明するために、キャッシュが2つのテスト領域と、非テスト領域とを有し、これにより、全ての領域が、プロセッサコアからのデマンド要求、及び、プリフェッチャからのプリフェッチ要求に応じて、データを記憶するためにキャッシュによって使用されると想定する。キャッシュは、異なるエージングポリシーを異なるテスト領域に使用するので、あるテスト領域では、キャッシュは、指定された初期エージングをデマンド要求に関連するエントリに記憶し、指定された異なる初期エージングをプリフェッチ要求に関連するエントリに記憶する。他のテスト領域では、キャッシュは、指定された同じ初期エージングを、デマンド要求に関連するエントリ、及び、プリフェッチ要求に関連するエントリに記憶する。両方のエージングポリシーにおいて、キャッシュは、エントリがプロセッサコアによってアクセスされるか否かに基づいて、各エントリのエージングを変更する。また、各テスト領域に対して、キャッシュは、各エントリのエージングに少なくとも部分的に基づいて、エントリを退去させる。プロセッサは、各テスト領域のアクセスメトリック(例えば、キャッシュヒット率、キャッシュミス率又はこれらの組み合わせ等)を監視する。プロセッサは、メトリックに基づいて、1つのテスト領域に対するエージングポリシーを選択し、そのエージングポリシーをキャッシュの非テスト領域に適用する。例えば、1つのテスト領域のキャッシュヒット率が高い場合、プロセッサは、そのテスト領域のエージングポリシーを、キャッシュの非テスト領域に適用することができる。これにより、キャッシュ全体のヒット率を改善することができる。また、異なるテスト領域の変更に対する相対的なキャッシュヒット率の変化に応じて、プロセッサは、非テスト領域に適用されるエージングポリシーを変更して、異なるエージングポリシーを非テスト領域に適用することができる。これにより、キャッシュ全体のキャッシュヒット率を改善することができる。
【0007】
本明細書では、「エージングポリシー」という用語は、エージング値がキャッシュのエントリにどのように適用されるか、適用されたときにエージング値がどのように変更されるかを指す。エージングポリシーは、エントリがキャッシュに配置されたときに当該エントリに適用される初期エージング、アクセスされているエントリ若しくはアクセスされている他のエントリに応じたエージングの変更、又は、これらの組み合わせを管理することができる。エージング値は、新たなデータがキャッシュに記憶されるときに退去させるエントリを選択するためのキャッシュの置換ポリシーの一部として、キャッシュに使用することができる。
【0008】
図1は、いくつかの実施形態による、キャッシュの異なるテスト領域のアクセスメトリックに基づいて、エージングポリシーをキャッシュの一部に適用する処理システム100を示す図である。処理システム100は、一般に、電子デバイスに代わってタスクを実行するために、コンピュータプログラムの形態で編成された命令のセットを実行するように構成されている。したがって、処理システム100は、デスクトップ又はラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲームコンソール等の様々な電子デバイスの何れかで使用することができる。
【0009】
命令の実行を容易にするために、処理システム100は、プロセッサコア102と、キャッシュコントローラ105と、キャッシュ110と、メモリ120と、を含む。いくつかの実施形態では、プロセッサコア102、キャッシュコントローラ105及びキャッシュ110は、同じ半導体ダイ上に形成され、プロセッサコア102の少なくとも一部を構成する。メモリ120は、異なる半導体ダイ上に形成され、1つ以上のバス又は信号線を介して、プロセッサ101に接続されている。いくつかの実施形態では、メモリ120の少なくとも一部は、プロセッサ101のモジュールと同じ半導体ダイ上に形成されている。
【0010】
キャッシュ110及びメモリ120の各々は、一般に、データを記憶するように構成されたメモリデバイスであり、したがって、ランダムアクセスメモリ(RAM)メモリモジュール、不揮発性メモリデバイス(例えば、フラッシュメモリ)等であってもよい。本明細書でさらに説明するように、キャッシュ110及びメモリ120は、処理システム100のメモリ階層を形成する。また、処理システム100のメモリ階層は、図1には示されていない追加のキャッシュ等の他のメモリモジュールを含むことができる。
【0011】
プロセッサコア102は、例えば、命令をフェッチするフェッチステージと、フェッチされた命令の各々を1つ以上の動作にデコードするデコードステージと、動作を実行する実行ステージと、その動作の実行が完了した命令をリタイアするためのリタイアステージと、を有する命令パイプラインを含む。命令に基づいて生成された動作のセットは、本明細書ではメモリアクセス命令と呼ばれ、処理システム100のメモリ階層からデータをロードする要求(ロード動作)であり、処理システム100のメモリ階層にデータを記憶する要求である。プロセッサコア102によって生成されたメモリアクセス要求は、使用されているか又は実行プログラムによって必要であることが分かっているデータをロード又は記憶する要求を表し、ここではデマンド要求と呼ばれる。
【0012】
キャッシュコントローラ105は、一般に、キャッシュ110とメモリ120との間でデータを移動させることによって、処理システム100のメモリ階層を管理するように構成されたモジュールである。特に、キャッシュ110は、複数のエントリを含むメモリデバイスであり、これにより、各エントリをメモリ120の1つ以上のアドレスに関連付けることができる。キャッシュコントローラ105は、メモリアクセス要求に応じて、キャッシュ110の1つ以上のエントリに記憶されたデータを見直して、何れのエントリが、メモリアクセス要求の対象となるメモリアドレスに関連するデータを記憶しているかどうかを判定する。メモリアドレスに関連するデータがエントリに記憶されている場合、キャッシュコントローラ105は、キャッシュヒットを示し、データをエントリに記憶するか(ストア動作の場合)、識別されたエントリのデータをプロセッサコア102に供給するか(ロード動作の場合)の何れかによって、識別されたエントリにおいてメモリアクセス要求を満たす。メモリアドレスに関連するデータがキャッシュ110のエントリに記憶されていない場合、キャッシュコントローラ105は、キャッシュミスを示し、メモリアドレスのデータに対する要求をメモリ120に発行する。次いで、キャッシュコントローラ105は、データをキャッシュ110のエントリに記憶し、そのエントリのメモリアクセス要求を満たす。
【0013】
プロセッサ101は、改善されたメモリアクセスの効率をサポートするために、キャッシュコントローラ105に発行されたデマンド要求を監視し、パターンを識別し、識別されたパターンに基づいて、近い将来にプロセッサコア102によるデマンド要求の対象となるメモリアドレスを推測するプリフェッチャ106を含む。プリフェッチャ106は、メモリアクセス要求をキャッシュコントローラに発行することができ、このメモリアクセス要求は、本明細書では、識別されたメモリアドレスを対象とするプリフェッチ要求と呼ばれる。キャッシュコントローラ105は、最初に、プリフェッチ要求の対象となるメモリアドレスに関連するデータがキャッシュ110及びキャッシュ110のエントリに既に記憶されているかどうかを識別し、まだ記憶されていない場合に、メモリ120からのデータを要求し、データをキャッシュ110のエントリに記憶することによって、デマンド要求と同様にプリフェッチ要求を処理する。
【0014】
いくつかの実施形態では、キャッシュ110の各エントリは、メモリアドレスのサブセットに関連付けられ、そのサブセットに関連するデータのみをエントリに記憶することができる。例えば、いくつかの実施形態では、キャッシュは、M個のセットを有するNwayセット・アソシエイティブ・キャッシュであり、M個のセットの各々がN個のエントリを含む。M個のセットの各々は、データがエントリに割り当てられたサブセットのメモリアクセスに関連付けられている場合にのみキャッシュコントローラ105がエントリにデータを記憶するように、メモリアドレスの異なるサブセットに割り当てられている。記憶データセットの全てのエントリが、メモリアクセスの対象となり得るデータ(本明細書では「有効データ」と呼ぶ)を記憶する場合、そのセットは本明細書においてフルと呼ばれる。さらに、キャッシュコントローラ105は、フルセットで記憶されるデータを受信すると、退去させる(すなわち、セットから除去する)1つのエントリを選択し、受信したデータと置き換える。キャッシュコントローラ105が退去させるエントリを選択するのに使用するスキームは、キャッシュ110の置換ポリシーと呼ばれる。
【0015】
キャッシュ110の置換ポリシーは、セット内の各エントリに関連付けられたエージング値に少なくとも部分的に基づいてもよい。例示すると、キャッシュコントローラ105は、キャッシュ110のエントリにデータを記憶することに応じて、エントリの初期エージング値を記憶する。キャッシュコントローラ105は、指定された基準に応じて、エントリのエージング値を調整することができる。例えば、キャッシュコントローラ105は、プロセッサコア102からのデマンド要求の対象となるエントリに応じて、エントリのエージング値を減少させることができ、デマンド要求の対象となるセット内の別のエントリ又は異なるセット内の別のエントリに応じて、エントリのエージング値を増加させることができる。したがって、エージング値は、エントリが、セットの他のエントリ又はキャッシュ110の他のエントリに対して、エントリがどれだけ最近にアクセスされたかの表示を反映する。退去用のフルセットのエントリを選択する場合、キャッシュコントローラ105は、セット内の各エントリのエージング値に少なくとも部分的に基づく判断を基準とすることができる。例えば、キャッシュコントローラ105は、最も高いエージング値を有するエントリを退去用に選択することができる。いくつかの実施形態では、キャッシュコントローラ105は、データ優先度情報、データタイプ情報(例えば、エントリが命令データを記憶しているか、若しくは、オペランドデータを記憶しているか)、又は、退去用にエントリを選択する他の情報等の他の基準との重み付けられた和の一部としてエージング値を使用することができる。
【0016】
上述したように、キャッシュコントローラ105によってエントリに割り当てられた初期エージング値、エージング値を調整するための基準、キャッシュコントローラ105が各基準に応じてエージング値を調整する量は、エントリのエージングポリシーと呼ばれる。いくつかの実施形態では、キャッシュコントローラ105は、キャッシュ110の異なる領域に異なるエージングポリシーを適用することができ、各領域は複数のエントリを含む。少なくとも1つの実施形態では、各領域は、そのエージングポリシーに関してのみ変化する。したがって、領域のエントリは任意のセットに使用されてもよいし、異なる領域は同じセットの異なるエントリを含んでもよい。
【0017】
図1に示すように、キャッシュ110は、テスト領域115,116と、非テスト領域118と、の3つの領域を含む。また、キャッシュコントローラ105は、例えばエントリに割り当てられた初期エージング値、指定された基準に応じたエージング値の調整量等のように、少なくとも1つの態様において異なるエージングポリシー111,112を記憶する。いくつかの実施形態では、エージングポリシー111は、プリフェッチ要求に応じてデータを記憶するエントリに指定された初期エージングを要求し、非プリフェッチ要求に応じてデータを記憶するエントリに指定された異なる初期エージングを要求する。本明細書で使用する場合、非プリフェッチ要求とは、エージングポリシーが適用されるキャッシュレベルを対象とするプリフェッチ要求ではないメモリアクセスを指す。非プリフェッチ要求の例には、デマンド要求、命令キャッシュミスに応じて生成されるメモリアクセス要求、ハードウェアページテーブルウォーク要求、プロセッサコア102によって生成された投機的メモリアクセス要求(例えば、分岐命令後の命令の投機的な実行中に生成されたメモリアクセス要求)、及び、他のキャッシュレベルで生成されたプリフェッチ要求が含まれる。
【0018】
対照的に、エージングポリシー112は、指定された同じ初期エージングを、プリフェッチ要求に応じてデータを記憶するエントリと、非プリフェッチ要求に応じてデータを記憶するエントリとに要求する。したがって、エージングポリシー111は、プリフェッチデータに頻繁にアクセスするメモリアクセスパターンに対してより効率的となり、エージングポリシー112は、プリフェッチデータ及び非プリフェッチデータにほぼ同じ頻度でアクセスするメモリアクセスパターンに対してより効率的となり得る。しかしながら、プロセッサコア102のメモリアクセスパターンは、異なる時間において異なるエージングポリシー下でキャッシュ110がより効率的に動作し得るように、経時的に変化し得る。したがって、非テスト領域118については、キャッシュコントローラ105は、テスト領域115,116の性能特性に応じて、エージングポリシー111,112の中から選択することができる。
【0019】
説明すると、プロセッサ101は、テスト領域115,116の各々について、キャッシュヒット率、キャッシュミス率等の性能特性を監視及び記録することができる性能モニタ104を含む。キャッシュコントローラは、テスト領域115,116の1つ以上の性能特性又はこれらの組み合わせに基づいて、エージングポリシー111,112の何れかを選択して、非テスト領域118に適用する。例えば、テスト領域115のキャッシュヒット率がテスト領域116のキャッシュヒット率よりも高い場合、キャッシュコントローラ105は、テスト領域115のエージングポリシー(例えば、エージングポリシー111)を選択して、非テスト領域118に適用することができる。いくつかの実施形態では、非テスト領域118は、キャッシュ110のエントリの大部分を含む。したがって、キャッシュコントローラ105は、テスト領域115,116の性能によって示されるように、非テスト領域118のエージングポリシーをより効率的なエージングポリシーとして選択することによって、キャッシュ110の全体的な効率を向上させる。さらに、テスト領域115,116の性能特性が経時的に変化すると、キャッシュコントローラは、エージングポリシーを、所定の性能特性セットに対してより効率的なポリシーに変更することができる。
【0020】
図2は、いくつかの実施形態による、図1のテスト領域115,116に異なるエージングポリシーを適用するキャッシュコントローラ105の一例を示す図である。図示した例では、テスト領域115,116の各々は、テスト領域115のエントリ240,241、テスト領域116のエントリ242,243等の複数のエントリを含む。各エントリは、メモリ120から取り出されたデータ(すなわち、エントリにおいてメモリアクセス要求を満たすために使用されるデータ)を記憶するデータ部分(例えば、エントリ240のデータ部分245)を含む。また、各エントリは、エントリのエージング値を記憶するエージングフィールド(例えば、エントリ240のエージングフィールド246)を含む。
【0021】
図2の例では、キャッシュコントローラ105がエージングポリシーをテスト領域115に適用すると想定している。ここで、エントリのエージングフィールドに記憶された初期エージング値は、エントリのデータが、デマンド要求に応じて又はプリフェッチ要求に応じてメモリ120から取り出されたかどうかに依存する。具体的には、キャッシュコントローラ105は、プリフェッチ要求(例えば、プリフェッチ要求231)に応じてメモリ120からデータを取り出すことに応じて、データを記憶するエントリのエージングフィールドに初期エージング値「00」を記憶する。対照的に、キャッシュコントローラ105は、デマンド要求(例えば、デマンド要求230)に応じてメモリ120からデータを取り出すことに応じて、エントリのエージングフィールドに初期エージング値「01」を記憶する。したがって、テスト領域115に適用されるエージングポリシーでは、キャッシュコントローラは、プリフェッチデータを記憶するエントリに「小さい」初期エージングを適用し、デマンドデータを記憶するエントリに「大きい」初期エージングを適用する。このエージングポリシーは、プロセッサコア102が、プリフェッチデータにデマンド要求を発行しないメモリアクセスパターンに対して効率的となり得る。
【0022】
テスト領域116に関して、キャッシュコントローラ105は、エントリがプリフェッチ要求又はデマンド要求に関連するかどうかに関わらず、各エントリのエージングフィールドに同じ初期エージングを記憶するエージングポリシーを適用する。したがって、キャッシュコントローラ105は、プリフェッチ要求(例えば、プリフェッチ要求233)に応じてメモリ120からデータを取り出すことに応じて、データを記憶するエントリのエージングフィールドに初期エージング値「01」を記憶する。同様に、キャッシュコントローラ105は、デマンド要求(例えば、デマンド要求232)に応じてメモリ120からデータを取り出すことに応じて、エントリのエージングフィールドに初期エージング値「01」を記憶する。したがって、テスト領域116に適用されるエージングポリシーでは、キャッシュコントローラは、同じ初期エージングを全てのエントリに適用する。このエージングポリシーは、プロセッサコア102が、プリフェッチデータ及びデマンドデータに対して実質的に同じ頻度でアクセスするメモリアクセスパターンに対して効率的となり得る。他の実施形態では、キャッシュコントローラ105は、デマンド要求に関して低い初期エージングを記憶し、プリフェッチ要求に関して高い初期エージングを記憶するエージングポリシーを適用することができる。
【0023】
上述したように、キャッシュコントローラ105は、異なるエージングポリシーを異なるテスト領域115,116に適用する。キャッシュコントローラ105は、各テスト領域の性能特性を測定することによって、プロセッサコア102の最新のメモリアクセスパターンに対してより効率的なエージングポリシーを特定することができ、より効率的なエージングポリシーを非テスト領域118に適用することができる。これにより、全体的なキャッシュ効率を改善することができる。
【0024】
いくつかの実施形態では、上述したように異なる初期エージング値を適用することに加え、又はその代わりに、異なるエージングポリシーは、エージング値に対して異なる調整を必要とすることができる。例えば、テスト領域115の場合、キャッシュコントローラ105は、デマンド要求に関連するエントリへのメモリアクセスに応じて、プリフェッチデータを記憶する全てのエントリのエージング値を最大エージング値「11」に調整するように、エージングポリシーを適用することができる。したがって、キャッシュコントローラ105は、エントリ240へのメモリアクセスに応じて、エントリ240のエージング値を「00」に調整し、エントリ241のエージング値(プリフェッチ要求231に関連する)を「11」に調整することができる。対照的に、キャッシュコントローラ105は、メモリアクセスに応じてエージング値を1だけ増加させることによって、デマンドデータに関連するエントリのエージング値を調整する。したがって、キャッシュコントローラ105は、エントリ241へのメモリアクセスに応じて、(デマンド要求230に関連する)エントリ240のエージング値を値「10」まで1ずつ増加させる。テスト領域115に適用されるエージングポリシーは、プリフェッチデータがプリフェッチ後に比較的迅速にアクセスされるか、又は、全くアクセスされないメモリアクセスパターンに対して、より効率的となり得る。
【0025】
テスト領域115に適用されるエージングポリシーとは対照的に、テスト領域116に適用されるエージングポリシーは、エントリがデマンド要求又はプリフェッチ要求に関連するかどうかに関わらず、各エントリのエージング値の同じ調整を必要とする場合がある。例えば、キャッシュコントローラ105は、テスト領域116のエントリへのメモリアクセスに応じて、テスト領域116内の他の全てのエントリのエージング値を最大値まで1ずつ増加させることができる。したがって、異なるテスト領域115,116に適用される異なるエージングポリシーは、エントリに適用される初期エージング値、エントリのエージング値を調整するための基準、各基準に応じたエージング値の調節量等を含み、いくつかの態様のうち1つ以上において変化し得る。さらに、いくつかの実施形態では、キャッシュ110は、各テスト領域に異なるエージングポリシーが適用された2つ以上のテスト領域を含むことができ、これにより、非テスト領域118に適用する可能性のある広範囲なエージングポリシーをキャッシュコントローラに提供することができる。
【0026】
図3は、いくつかの実施形態による、経時的に変化する異なるテスト領域115,116の相対的な性能の一例を示す図300である。図300は、時間を表すX軸350と、キャッシュヒット率を表すY軸351と、を含む。図300は、テスト領域116のキャッシュヒット率を経時的に表す曲線352と、テスト領域115のキャッシュヒット率を表す曲線353と、を示している。
【0027】
図300に示す例では、時間355の前におけるテスト領域115のキャッシュヒット率は、テスト領域116のキャッシュヒット率よりも大きい。したがって、キャッシュコントローラ105は、時間355の前に、テスト領域115のエージングポリシーを非テスト領域118に適用する。時間355では、テスト領域116のキャッシュヒット率がテスト領域115のキャッシュヒット率よりも大きくなるように、テスト領域115のキャッシュヒット率と、テスト領域116のキャッシュヒット率との間の関係が変化する。これに応じて、キャッシュコントローラ105は、非テスト領域118のエージングポリシーを、テスト領域116のエージングポリシーと一致するように変更する。後の時間356では、テスト領域115のキャッシュヒット率がテスト領域116のキャッシュヒット率よりも再び大きくなるように、テスト領域115のキャッシュヒット率と、テスト領域116のキャッシュヒット率との関係が再び変化する。これに応じて、キャッシュコントローラ105は、非テスト領域118のエージングポリシーを、テスト領域115のエージングポリシーと一致するように変更する。したがって、キャッシュコントローラ105は、テスト領域115,116の相対的な性能の変化に基づいて、非テスト領域118に適用されるエージングポリシーを変更する。
【0028】
図4は、いくつかの実施形態による、キャッシュの異なるテスト領域の性能特性に基づいて、キャッシュの非テスト領域に対するエージングポリシーを選択する方法400のフロー図である。説明目的のために、方法400は、図1の処理システム100における例示的な実装に関して説明される。ブロック402では、キャッシュコントローラ105は、異なるエージングポリシー111,112をキャッシュ110の異なるテスト領域115,116に適用する。したがって、例えば、キャッシュコントローラ105は、エージングポリシー111をテスト領域115に適用し、エージングポリシー112をテスト領域116に適用することができる。ブロック404では、性能モニタ104は、キャッシュヒット率、キャッシュミス率、キャッシュヒット率及びキャッシュミス率の重み付けられた和等の、異なるテスト領域115,116の性能特性を監視及び記録する。
【0029】
ブロック406では、キャッシュコントローラ105は、テスト領域115,116の各々の性能特性を比較し、比較に基づいて、エージングポリシー111,112の何れかを選択する。例えば、キャッシュコントローラ105は、性能特性によって示されるように、より高い性能を有するテスト領域に適用されるエージングポリシーを選択する。ブロック408では、キャッシュコントローラ105は、選択されたエージングポリシーを、キャッシュ110の非テスト領域118に適用する。すなわち、キャッシュコントローラは、初期エージング値を記憶し、選択されたエージングポリシーの要件に従って、非テスト領域118に記憶されたエージング値を調整する。ブロック410では、キャッシュコントローラ105は、非テスト領域118に記憶されたエージング値を使用して、キャッシュ110の置換ポリシーに従って退去用のキャッシュラインを特定する。方法フローはブロック404に戻り、キャッシュコントローラ105がテスト領域115,116の性能を監視し続け、性能に基づいて、非テスト領域118に適用されるエージングポリシーを調整する。
【0030】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に記憶されていてもよいし、他の方法で有形に具体化された1つ以上の実行可能な命令セットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されたときに、1つ以上のプロセッサを操作して、上述した技術の1つ以上の態様を実行する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスクストレージデバイス、又は、ソリッドステートストレージデバイス(例えば、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)、他の不揮発性メモリデバイス等)が挙げられる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは他の方法で実行可能な他の命令フォーマットであってもよい。
【0031】
概略的な説明において上述した動作又は要素の全てが必要なわけではなく、特定の動作又は装置の一部が不要な場合もあり、記載されたものに加えて、1つ以上のさらなる動作が実行されてもよいし、1つ以上のさらなる要素が含まれてもよいことに留意されたい。さらに、動作が列挙される順序は、必ずしもそれらが実行される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、このような変更の全ては、本発明の範囲内に含まれることが意図される。
【0032】
利点、他の利点、及び、問題を解決する手段が、特定の実施形態に関して上述されている。しかしながら、利点、他の利点、問題を解決する手段、及び、利点、他の利点、解決手段が発生するか、より顕著になる可能性のある機能は、特許請求の範囲の何れか若しくは全ての、重要な、必須の、又は不可欠な機能と解釈されるべきではない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なるが同等の方法で修正され、実施され得るので、上述した特定の実施形態は例示に過ぎない。以下の特許請求の範囲に記載されている以外の本明細書に示された構成又は設計の詳細に制限はない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、そのような変更形態の全ては、開示された発明の範囲内にあると考えられることは明らかである。したがって、本願で求められる保護は、以下の特許請求の範囲に記載されている。
図1
図2
図3
図4