IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

<>
  • 特許-キャッシュアクセス測定デスキュー 図1
  • 特許-キャッシュアクセス測定デスキュー 図2
  • 特許-キャッシュアクセス測定デスキュー 図3
  • 特許-キャッシュアクセス測定デスキュー 図4
  • 特許-キャッシュアクセス測定デスキュー 図5
  • 特許-キャッシュアクセス測定デスキュー 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-11
(45)【発行日】2024-03-19
(54)【発明の名称】キャッシュアクセス測定デスキュー
(51)【国際特許分類】
   G06F 12/121 20160101AFI20240312BHJP
【FI】
G06F12/121 100
【請求項の数】 20
(21)【出願番号】P 2022522317
(86)(22)【出願日】2020-10-29
(65)【公表番号】
(43)【公表日】2023-01-10
(86)【国際出願番号】 US2020057966
(87)【国際公開番号】W WO2021087115
(87)【国際公開日】2021-05-06
【審査請求日】2023-10-05
(31)【優先権主張番号】16/669,973
(32)【優先日】2019-10-31
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール モイヤー
(72)【発明者】
【氏名】ジョン ケリー
【審査官】北村 学
(56)【参考文献】
【文献】特開2003-280987(JP,A)
【文献】特表2019-516188(JP,A)
【文献】特表2019-517690(JP,A)
【文献】米国特許出願公開第2013/0151778(US,A1)
【文献】中国特許出願公開第101866318(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/08 - 12/128
(57)【特許請求の範囲】
【請求項1】
キャッシュコントローラが、キャッシュの第1の領域及び前記キャッシュの第2の領域の各々へのアクセスを監視することと、
前記キャッシュコントローラが、前記キャッシュの前記第1の領域への第1の監視されたアクセス数と、前記キャッシュの前記第2の領域への第2の監視されたアクセス数と、に基づいて測定ポリシーを選択することと、
前記キャッシュコントローラが、前記キャッシュの前記第1の領域への前記第1の監視されたアクセス数と、前記キャッシュの前記第2の領域への前記第2の監視されたアクセス数と、に基づいて、及び、前記測定ポリシーに基づいて、前記キャッシュの第3の領域に対するキャッシュ置換ポリシーを設定することと、を含む、
方法。
【請求項2】
前記測定ポリシーを選択することは、
前記第1の監視されたアクセス数と前記第2の監視されたアクセス数との間の差を決定することと、
前記差が閾値未満であることに応じて、第1の測定ポリシーを選択することと、
前記差が前記閾値以上であることに応じて、第2の測定ポリシーを選択することと、を含む、
請求項1の方法。
【請求項3】
前記第1の測定ポリシーは、前記キャッシュ置換ポリシーの変更を許可することを含み、
前記第2の測定ポリシーは、前記キャッシュ置換ポリシーの変更を抑制することを含む、
請求項2の方法。
【請求項4】
前記第1の測定ポリシーは、前記第1の領域への監視されたアクセスに第1の重みを適用し、前記第2の領域への監視されたアクセスに第2の重みを適用することを含み、
前記第2の測定ポリシーは、前記第1の領域への監視されたアクセスに第3の重みを適用し、前記第2の領域への監視されたアクセスに第4の重みを適用することを含み、
前記キャッシュ置換ポリシーを設定することは、前記第1の領域への重み付けされた、監視されたアクセス、及び、前記第2の領域への重み付けされた、監視されたアクセスに基づいて、前記キャッシュ置換ポリシーを設定することを含む、
請求項2の方法。
【請求項5】
前記第1の重み及び前記第2の重みは同じであり、
前記第3の重みは前記第4の重みと異なる、
請求項4の方法。
【請求項6】
前記測定ポリシーを選択することは、
前記第1の監視されたアクセス数と前記第2の監視されたアクセス数との間の第1の差を決定することと、
前記第1の差に基づいて、前記第1の領域に第1の重みを選択し、前記第2の領域に第2の重みを選択することと、
前記第1の重みに基づいて前記第1の領域への監視されたアクセスに重み付けし、前記第2の重みに基づいて前記第2の領域への監視されたアクセスに重み付けすることと、を含み、
前記キャッシュ置換ポリシーを設定することは、前記第1の領域への重み付けされた、監視されたアクセス、及び、前記第2の領域への重み付けされた、監視されたアクセスに基づいて、前記キャッシュ置換ポリシーを設定することを含む、
請求項1の方法。
【請求項7】
前記第1の領域及び前記第2の領域の各々へのアクセスを監視することは、
前記第1の領域及び前記第2の領域の各々への第1のタイプのアクセスを監視することと、前記第1の領域及び前記第2の領域の各々への第2のタイプのアクセスを監視すること、を含み、
前記測定ポリシーを選択することは、
前記第1の領域への前記第1のタイプのアクセス数と前記第2の領域への前記第1のタイプのアクセス数との間の第1の差と、前記第1の領域への前記第2のタイプのアクセス数と前記第2の領域への前記第2のタイプのアクセス数との間の第2の差と、に基づいて、前記測定ポリシーを選択することを含む、
請求項1の方法。
【請求項8】
前記第1のタイプはデマンドアクセスを含み、前記第2のタイプはプリフェッチアクセスを含む、
請求項7の方法。
【請求項9】
前記キャッシュ置換ポリシーを設定することは、前記キャッシュの前記第1の領域でのキャッシュヒット率、及び、前記キャッシュの前記第2の領域でのキャッシュヒット率に基づいて、前記キャッシュ置換ポリシーを設定することを含む、
請求項1の方法。
【請求項10】
前記キャッシュ置換ポリシーを設定することは、前記キャッシュの前記第1の領域でのキャッシュミス率、及び、前記キャッシュの前記第2の領域でのキャッシュミス率に基づいて、前記キャッシュ置換ポリシーを設定することを含む、
請求項1の方法。
【請求項11】
キャッシュコントローラが、キャッシュの第1の領域及び前記キャッシュの第2の領域の各々へのアクセスを監視することと、
前記キャッシュコントローラが、前記キャッシュの前記第1の領域への第1の監視されたアクセス数と、前記キャッシュの前記第2の領域への第2の監視されたアクセス数と、に基づいてハッシュ値を選択することと、
前記キャッシュコントローラが、選択されたハッシュ値に基づいて、前記キャッシュの第3の領域に対するキャッシュアドレス値を生成することと、
前記キャッシュコントローラが、前記キャッシュアドレス値に基づいて、前記キャッシュの前記第3の領域にデータを格納することと、を含む、
方法。
【請求項12】
前記ハッシュ値を選択することは、
前記第1の監視されたアクセス数と前記第2の監視されたアクセス数との間の差を決定することと、
前記差が閾値未満であることに応じて、第1のハッシュ値を選択することと、
前記差が前記閾値以上であることに応じて、ハッシュ値を選択することと、を含む、
請求項11の方法。
【請求項13】
前記キャッシュコントローラが、前記キャッシュの前記第1の領域への前記第1の監視されたアクセス数と、前記キャッシュの前記第2の領域への前記第2の監視されたアクセス数と、に基づいて、前記キャッシュの前記第1の領域に関連付けられたアドレスを変更することをさらに含む、
請求項11の方法。
【請求項14】
第1の領域と、第2の領域と、第3の領域と、を備えるキャッシュと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
前記第1の領域及び前記第2の領域の各々へのアクセスを監視することと、
前記第1の領域への第1の監視されたアクセス数と、前記第2の領域への第2の監視されたアクセス数と、に基づいて測定ポリシーを選択することと、
前記第1の領域への前記第1の監視されたアクセス数と、前記第2の領域への前記第2の監視されたアクセス数と、に基づいて、及び、前記測定ポリシーに基づいて、前記第3の領域に対するキャッシュ置換ポリシーを設定することと、
を行うように構成されている、
プロセッサ。
【請求項15】
前記キャッシュコントローラは、
前記第1の監視されたアクセス数と前記第2の監視されたアクセス数との間の差を決定することと、
前記差が閾値未満であることに応じて、第1の測定ポリシーを選択することと、
前記差が前記閾値以上であることに応じて、第2の測定ポリシーを選択することと、
によって、前記測定ポリシーを選択するように構成されている、
請求項14のプロセッサ。
【請求項16】
前記第1の測定ポリシーは、前記キャッシュ置換ポリシーの変更を許可することを含み、
前記第2の測定ポリシーは、前記キャッシュ置換ポリシーの変更を抑制することを含む、
請求項15のプロセッサ。
【請求項17】
前記第1の測定ポリシーは、前記第1の領域への監視されたアクセスに第1の重みを適用し、前記第2の領域への監視されたアクセスに第2の重みを適用することを含み、
前記第2の測定ポリシーは、前記第1の領域への監視されたアクセスに第3の重みを適用し、前記第2の領域への監視されたアクセスに第4の重みを適用することを含み、
前記キャッシュ置換ポリシーを設定することは、前記第1の領域への重み付けされた、監視されたアクセス、及び、前記第2の領域への重み付けされた、監視されたアクセスに基づいて、前記キャッシュ置換ポリシーを設定することを含む、
請求項15のプロセッサ。
【請求項18】
前記第1の重み及び前記第2の重みは同じであり、
前記第3の重みは前記第4の重みと異なる、
請求項17のプロセッサ。
【請求項19】
前記キャッシュコントローラは、
前記第1の監視されたアクセス数と前記第2の監視されたアクセス数との間の第1の差を決定することと、
前記第1の差に基づいて、前記第1の領域に第1の重みを選択し、前記第2の領域に第2の重みを選択することと、
前記第1の重みに基づいて前記第1の領域への監視されたアクセスに重み付けし、前記第2の重みに基づいて前記第2の領域への監視されたアクセスに重み付けすることと、
によって、前記測定ポリシーを選択するように構成されており、
前記キャッシュ置換ポリシーを設定することは、前記第1の領域への重み付けされた、監視されたアクセス、及び、前記第2の領域への重み付けされた、監視されたアクセスに基づいて、前記キャッシュ置換ポリシーを設定することを含む、
請求項14のプロセッサ。
【請求項20】
前記キャッシュ置換ポリシーは、前記キャッシュの前記第3の領域に対するプリフェッチポリシーを設定する、
請求項14のプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
メモリアクセスの効率を向上させるために、多くのプロセッサは、メインメモリに格納されているデータのサブセットを格納するために1つ以上のキャッシュを含むメモリ階層を採用する。プロセッサは、プロセッサの設計に依存するメモリ管理スキームに基づいて、キャッシュとメインメモリとの間、及び、個々のキャッシュ間でデータを移動するが、通常、最近アクセスされたデータのキャッシングを優先する。例えば、一部のプロセッサは、近い将来プロセッサコアによってアクセスされる可能性のあるデータを予測し、そのデータをメインメモリから1つ以上のキャッシュにコピーする1つ以上のプリフェッチャを採用する。新しいデータを1つ以上のキャッシュに移動するために、プロセッサは、通常、最も使用頻度の低い(LRU)置換スキーム等の特定の置換スキームに基づいて、以前に格納されたデータを削除のために選択し、それによって、プロセッサは、プロセッサコアが最も長い時間アクセスしていないデータを格納するキャッシュエントリを削除する。ただし、多くのシナリオでは、LRU置換スキームは、プロセッサコアで実行される命令のメモリアクセスパターンと一致しないため、メモリアクセス効率が望ましくないほど低くなる。
【0002】
本開示は、添付図面を参照することによって、より良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同一の符号が使用されている場合には、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、キャッシュの異なるテスト領域に対するアクセス測定をデスキューして、アクセスメトリックがキャッシュの非テスト領域に対するキャッシュ置換ポリシーを確立できるようにする処理システムのブロック図である。
図2】いくつかの実施形態による、キャッシュの異なるテスト領域に対するアクセス測定をデスキューする図1の処理システムのアクセスデスキューモジュールのブロック図である。
図3】いくつかの実施形態による、キャッシュの異なるテスト領域に対するアクセス測定をデスキューする図1の処理システムのアクセスデスキューモジュールの別の例のブロック図である。
図4】いくつかの実施形態による、キャッシュのテスト領域に対するアクセス測定をデスキューする図1の処理システムの例を示す図である。
図5】いくつかの実施形態による、キャッシュの異なるテスト領域に対するアクセス測定の方法のフロー図である。
図6】いくつかの実施形態による、キャッシュのテスト領域でのアクセス測定の違いに基づいて、キャッシュに対するアドレスハッシュを変更するプロセッサのブロック図である。
【発明を実施するための形態】
【0004】
図1図6は、キャッシュの異なるテスト領域へのアクセス測定をデスキューするためのアプローチを示し、これにより、各テスト領域に対する性能測定基準の正確な測定がサポートされ、性能測定基準は、キャッシュの非テスト領域でのキャッシュ置換ポリシーの適用をサポートする。説明のために、いくつかの実施形態では、プロセッサは、2つ以上のテスト領域及びより大きな非テスト領域を有するキャッシュを含む。プロセッサには、キャッシュの異なるテスト領域に異なるキャッシュ置換ポリシーを適用するキャッシュコントローラと、各テスト領域でのキャッシュヒット率等のような異なるテスト領域に対する性能測定基準を測定する性能モニタがさらに含まれる。キャッシュコントローラは、性能測定基準に基づいて、異なるテスト領域の中で性能測定基準が優れているテスト領域に関連する置換ポリシーを選択する等のように、非テスト領域に対するキャッシュ置換ポリシーを選択する。しかし、場合によっては、メモリアクセスパターンによって異なるテスト領域間でメモリアクセスがスキューされ、これらのスキューされたアクセスによって次に性能測定基準がスキューされ、非テスト領域に対するキャッシュ置換ポリシーの効率が低下する可能性がある。本明細書でさらに説明するように、メモリアクセス測定をデスキューすることにより、プロセッサは、より多くの場合により効率的なキャッシュ置換ポリシーを選択することを提供し、それによって全体的なキャッシュ効率を改善する。
【0005】
一例を通じてさらに説明するために、いくつかの実施形態では、プロセッサは、2つのテスト領域の各々についてキャッシュヒット率を測定し、より高いキャッシュヒット率を有するテスト領域に関連するキャッシュ置換ポリシーを選択する。しかし、テスト領域のうち所定のテスト領域が他のテスト領域よりも大幅に多くのメモリアクセスを受信する場合、異なるテスト領域のキャッシュヒット率がスキューされる。すなわち、殆どのメモリアクセスパターン下でのキャッシュヒット率よりも高い又は低い。具体的には、場合によって、サブセットを実行すると、完全な命令のセットに関連するメモリアクセスパターンを表していないキャッシュへのアクセスパターンが発生するような命令のセットのサブセットを、プロセッサは実行する。キャッシュへのそうしたアクセスのパターンは、本明細書では非代表的な(non-representative)メモリアクセスパターンと呼ばれる。場合によっては、非代表的なメモリアクセスパターンにより、平均的に、より効率の低いキャッシュ置換ポリシーに関連するキャッシュテスト領域が、より効率の高いキャッシュ置換ポリシーに関連するキャッシュテスト領域よりも一時的により高いキャッシュヒット率を有することになる。本明細書でさらに説明するように、異なるキャッシュ領域へのアクセス測定をデスキューすることによって、プロセッサは、非代表的なメモリアクセスパターンの発生によって、より効率の低いキャッシュ置換ポリシーが選択されるのを抑制する。
【0006】
いくつかの実施形態では、アクセス測定をデスキューするために、キャッシュコントローラは、スライディングタイムウィンドウにわたって2つのテスト領域の各々へのアクセス数を比較する。閾値を超えるアクセス数の違いに応じて、プロセッサは、キャッシュ置換ポリシーを選択する目的で、各テスト領域へのアクセスの測定方法を管理するアクセス測定ポリシーを変更する。例えば、いくつかの実施形態では、アクセス測定ポリシーは、1つのテスト領域へのアクセスが、指定された時間の間、置換ポリシー選択プロセスから省略されるように変更され、それによって、アクセス測定をデスキューする。他の実施形態では、キャッシュ置換ポリシーの選択は、異なる性能測定基準の重み付け比較に基づいており、各テスト領域に対する重みは、アクセス測定ポリシーによって示される。アクセス測定をデスキューするために、キャッシュコントローラは、示された重みのうち1つ以上を変更する。
【0007】
いくつかの実施形態では、プロセッサは、テスト領域に対するアクセス数の比較を使用して、キャッシュの異なる領域へのアクセスのバランスをとる。説明のために、いくつかの実施形態では、キャッシュコントローラは、キャッシュにアクセス(読み取り又は書き込み)する場合に、指定されたハッシュを使用し、ハッシュは、アクセスを分散し、それによって全体的なキャッシュ使用率を改善すると期待される。しかし、テスト領域へのアクセス数が比較的多いことは、ハッシュ値がアクセスを十分に分散していないことを示す。したがって、閾値を超えるキャッシュのテスト領域へのアクセス数の差に応じて、キャッシュコントローラは、ハッシュ値を異なる指定された値に変更し、それによってキャッシュ使用率及びメモリアクセス効率を改善する。
【0008】
図1は、いくつかの実施形態による、キャッシュの異なるテスト領域に対するアクセスメトリックに基づいて、キャッシュエージングポリシーをキャッシュの一部に適用する処理システム100を示す図である。処理システム100は、概して、電子デバイスに代わってタスクを実行するために、コンピュータプログラムの形態で編成された命令のセットを実行する。したがって、異なる実施形態では、処理システム100は、デスクトップ又はラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲームコンソール等の様々な電子デバイスの何れかで使用される。
【0009】
命令の実行を容易にするために、処理システム100は、プロセッサコア102と、キャッシュコントローラ105と、アクセスデスキューモジュール108と、キャッシュ110と、を有するプロセッサ101を含み、さらにメモリ120を含む。いくつかの実施形態では、プロセッサコア102、キャッシュコントローラ105及びキャッシュ110は、プロセッサ101の少なくとも一部を形成するために同じ半導体ダイ上に形成され、メモリ120は、異なる半導体ダイ上に形成され、1つ以上のバス又は信号線を介してプロセッサ101に接続されている。いくつかの実施形態では、メモリ120の少なくとも一部は、プロセッサ101のモジュールと同じ半導体ダイ上に形成される。
【0010】
キャッシュ110及びメモリ120の各々は、データを格納するメモリデバイスであり、異なる実施形態では、ランダムアクセスメモリ(RAM)メモリモジュール、不揮発性メモリデバイス(例えば、フラッシュメモリ)等のうち1つ以上である。本明細書でさらに記載するように、キャッシュ110及びメモリ120は、処理システム100のためのメモリ階層を形成する。さらに、いくつかの実施形態では、処理システム100のメモリ階層は、図1に示されていない追加のキャッシュ等の他のメモリモジュールを含む。
【0011】
プロセッサコア102は、例えば、命令をフェッチするためのフェッチステージ、フェッチされた命令を1つ以上の動作に復号するためのデコードステージ、動作を実行するための実行ステージ、及び、動作の実行が完了した命令をリタイアさせるためのリタイアステージを有する命令パイプラインを含む。命令に基づいて生成される動作のセットは、本明細書ではメモリアクセス命令と呼ばれ、処理システム100のメモリ階層からデータをロードする要求(ロード動作)、及び、処理システム100のメモリ階層にデータを格納する要求である。プロセッサコア102によって生成されるメモリアクセス要求は、実行中のプログラムによって使用されているか、必要であることが知られているデータをロード又は格納(ストア)する要求を表し、本明細書ではデマンド要求(demand requests)と呼ばれる。
【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のエントリに既に格納されているかどうかを最初に識別し、未だ格納されていない場合、メモリ120からのデータを要求し、キャッシュ110のエントリにデータを格納することによって、プリフェッチ要求をデマンド要求と同様に処理する。
【0014】
いくつかの実施形態では、キャッシュ110の各エントリは、メモリアドレスのサブセットに関連付けられており、そのサブセットに関連付けられたデータのみが、エントリに格納されることが許可される。例えば、いくつかの実施形態では、キャッシュは、それぞれN個のエントリを含むM個のセットを有するNウェイセットアソシアティブキャッシュである。M個のセットの各々には、メモリアドレスの異なるサブセットが割り当てられており、その結果、データがエントリの割り当てられたサブセット内のメモリアドレスに関連付けられている場合にのみ、キャッシュコントローラ105がデータをエントリに格納する。1セットの全てのエントリが、メモリアクセスのターゲットとなり得るデータ(本明細書では「有効なデータ」と呼ばれる)を格納する場合、そのセットは、本明細書ではフル(full)と呼ばれる。さらに、キャッシュコントローラ105は、フルセット(full set)で格納されるデータを受信すると、セットの1つのエントリを選択して、エビクトし(すなわち、セットから取り除き)、受信したデータと置き換える。キャッシュコントローラ105が、エビクトされるエントリを選択するために使用するスキームは、キャッシュ110の置換ポリシーと呼ばれる。異なる実施形態では、置換ポリシーは、エントリが格納される場合にエントリに割り当てられた初期エージ(age)値、エージ値の変更、エントリのデータがデマンド要求又はプリフェッチ要求に応じてフェッチされたかどうか等のいくつかの基準のうち何れかを組み込む。
【0015】
いくつかの実施形態では、キャッシュコントローラ105は、各領域が複数のエントリを含むキャッシュ110の異なる領域に、異なる置換ポリシーを適用する。少なくとも1つの実施形態では、各領域は、その置換ポリシーに関してのみ変化する。したがって、領域のエントリは、任意のセットに使用することができ、異なる領域は、同じセットの異なるエントリを含むことができる。図1に示した例では、キャッシュ110は、3つの領域(すなわち、テスト領域115,116及び非テスト領域118)を含む。さらに、キャッシュコントローラ105は、エントリに割り当てられた初期エージ値、所定の基準に応じてエージ値が調整される量等のように、少なくとも態様が異なる置換ポリシー111,112を格納する。いくつかの実施形態では、置換ポリシー111は、プリフェッチ要求に応じてデータを格納するエントリに対して指定された初期エージと、非プリフェッチ要求に応じてデータを格納するエントリに対して異なる指定された初期エージと、を義務付ける。本明細書で使用される場合、非プリフェッチ要求は、エージングポリシーが適用されるキャッシュレベルをターゲットとするプリフェッチ要求ではないメモリアクセスを指す。非プリフェッチ要求の例には、デマンド要求、命令キャッシュミスに応じて生成されるメモリアクセス要求、ハードウェアページテーブルウォーク要求、プロセッサコア102によって生成される投機的メモリアクセス要求(例えば、分岐命令後の命令の投機的実行中に生成されるメモリアクセス要求)、及び、他のキャッシュレベルで生成されたプリフェッチ要求が含まれる。対照的に、置換ポリシー112は、プリフェッチ要求に応じてデータを格納するエントリと、非プリフェッチ要求に応じてデータを格納するエントリと、に対して同じ初期エージを義務付ける。したがって、いくつかの実施形態では、置換ポリシー111は、プリフェッチされたデータにより頻繁にアクセスするメモリアクセスパターンに対してより効率的であり、置換ポリシー112は、ほぼ同じ頻度でプリフェッチされたデータ及び非プリフェッチデータにアクセスするメモリアクセスパターンに対してより効率的である。しかしながら、プロセッサコア102のメモリアクセスパターンは時間と共に変化するので、キャッシュ110は、異なる時間に異なるエージングポリシーの下でより効率的に動作する。したがって、非テスト領域118の場合、キャッシュコントローラ105は、テスト領域115,116の性能特性に応じて、エージングポリシー111,112の間で選択する。
【0016】
説明のために、プロセッサ101は、テスト領域115,116の各々について、キャッシュヒット率、キャッシュミス率等の性能特性を監視及び記録する性能モニタ104を含む。テスト領域115,116の性能特性又はその組み合わせのうち1つ以上に基づいて、キャッシュコントローラは、置換ポリシー111,112のうち何れかを選択し、それを非テスト領域118に適用する。例えば、テスト領域115に対するキャッシュヒット率が、テスト領域116に対するキャッシュヒット率よりも高い場合に、キャッシュコントローラ105は、テスト領域115に対する置換ポリシー(例えば、置換ポリシー111)を選択し、それを非テスト領域118に適用する。いくつかの実施形態では、非テスト領域118は、キャッシュ110のエントリの大部分を含む。したがって、非テスト領域118に対するエージングポリシーを、テスト領域115,116の性能によって示されるように、より効率的なエージングポリシーとして選択することによって、キャッシュコントローラ105は、キャッシュ110の全体的な効率を高める。さらに、テスト領域115,116の性能特性が時間と共に変化するにつれて、キャッシュコントローラ105は、置換ポリシーを、所定の性能特性のセットに対してより効率的なポリシーに変更する。
【0017】
性能モニタ104は、測定ポリシー117に基づいて、テスト領域115,116の性能特性を測定する。いくつかの実施形態では、測定ポリシー117は、テスト領域115,116へのアクセスの測定が、非テスト領域118に対する置換ポリシーの選択にどのように影響するかを管理する。例えば、いくつかの実施形態では、測定ポリシー117は、キャッシュコントローラによって複数の状態のうち何れかの状態に設定され、異なる状態は、スキューされていない状態及び1つ以上のデスキュー状態として分類される。測定ポリシー117がスキューされていない状態にある場合、キャッシュコントローラ105は、テスト領域115,116の公称(名目)の(nominal)変更されていない性能特性に基づいて、非テスト領域に対するキャッシュポリシーを選択する。測定ポリシー117がデスキュー状態のうち何れかにある場合、ポリシー選択プロセス又は性能特性自体の値の1つ以上は、非テスト領域118の置換ポリシーを選択する目的で変更される。具体的には、ポリシー選択プロセス又は性能特性の値は、異なるテスト領域115,116へのアクセス数の比較的大きな差をデスキューするように変更される。
【0018】
例えば、いくつかの実施形態では、各テスト領域について、性能モニタ104は、キャッシュヒット率、WCHRが以下の式によって計算される指定されたWCHRの重み付き表現を記録する。
WCHR=WTR*CHR
式中、WTRはテスト領域に関連付けられた重みであり、CHRはテスト領域の公称(重みなし)キャッシュヒット率である。測定ポリシー117がスキューされていない状態にある場合、性能モニタ104は、テスト領域115,116の各々の性能特性に対する重みを、第1の指定された値(例えば、各重みに対して1の値)に設定する。測定ポリシー117がデスキュー状態のうち何れかにある場合、性能モニタ104は、テスト領域115,116の少なくとも1つに関連付けられた重みを、第2の指定された値に設定し、それによって、本明細書でさらに説明するように1つのテスト領域に関連付けられたアクセス測定をデスキューする。例えば、いくつかの実施形態では、測定ポリシー117がスキューされていない状態にある場合、テスト領域115,116の各々に関連付けられた重みが等しく、測定ポリシー117がデスキュー状態のうち何れかにある場合、テスト領域115に関連付けられた重みは、テスト領域116に関連付けられた重みと異なる。
【0019】
いくつかの実施形態では、測定ポリシー117の状態は、性能特性の測定を直接管理するのではなく、代わりに、キャッシュコントローラ105が非テスト領域118の置換ポリシーを変更することが許可されるかどうかを管理する。したがって、測定ポリシー117がスキューされていない状態にある場合、キャッシュコントローラ105は、テスト領域115,116に対する性能特性に基づいて、非テスト領域118に対する置換ポリシーへの変換を許可する。測定ポリシー117がデスキュー状態にある場合、キャッシュコントローラ105は、測定ポリシー117がスキューされていない状態に戻るまで、非テスト領域118に対する置換ポリシーへの変更を一時停止する。
【0020】
上述したように、キャッシュが経験するいくつかのメモリアクセスパターンは、プロセッサ101によって実行される所定のアプリケーション又は他の命令のセットに関連付けられたメモリアクセスパターンを表さない非代表的なパターンである。場合によっては、そのような非代表的なメモリアクセスパターンは、性能モニタ104によって記録された性能特性の異常を引き起こし、これらの異常は、キャッシュコントローラが、非テスト領域118に対してキャッシュ置換ポリシー111,112のうちより効率が低いものを選択する原因となるであろう。これらの非代表的なメモリアクセスパターンの影響を改善するために、アクセスデスキューモジュール108は、スライディングタイムウィンドウにわたって、テスト領域115へのメモリアクセス数とテスト領域116へのメモリアクセス数との間の差を監視する。指定された閾値を超える差に応じて、アクセスデスキューモジュール108は、測定ポリシー117を、スキューされていない状態からデスキュー状態に変更して、各テスト領域に対するアクセス測定の効果をデスキューする。例えば、いくつかの実施形態では、メモリアクセス数の差が閾値を超えたことに応じて、アクセスデスキューモジュール108は、測定ポリシー117をデスキュー状態に変更し、それによって、非テスト領域118に対する置換ポリシーの変更を一時停止する。スライディングタイムウィンドウにわたるテスト領域115,116に対するアクセス測定の差が閾値を下回ることに応じて、アクセスデスキューモジュール108は、測定ポリシー117をスキューされていない状態に戻し、(このような変更が上記の相対的な性能特性によって示される場合)それによって、非テスト領域118に対する置換ポリシーの変更を再開する。
【0021】
他の実施形態では、メモリアクセスの差が閾値を超えることに応じて、アクセスデスキューモジュール108は、測定ポリシー117をデスキュー状態に変更し、それによって、アクセス数が多いテスト領域に対する相対的な重みを減らすためにテスト領域115,116の重み(WTR)値を変更する。例えば、いくつかの実施形態では、テスト領域115が、スライディングタイムウィンドウにわたって、テスト領域116へのアクセス数を閾値以上上回るアクセス数を有することに応じて、アクセスデスキューモジュール108は、測定ポリシー117を、テスト領域115に関連付けられた重みを減少させる(又は、テスト領域116に関連付けられた重みを増加させる若しくはそれらの組み合わせの)状態に変更し、それにより、非代表的なメモリアクセスパターンが非テスト領域118の置換ポリシーの変化をもたらす可能性を低減させる。スライディングタイムウィンドウにわたるテスト領域115,116に対するアクセス測定の差が閾値を下回ることに応じて、アクセスデスキューモジュール108は、測定ポリシー117をスキューされていない状態に設定し、それによって、テスト領域に対する重みを公称値に戻す。
【0022】
いくつかの実施形態では、デスキューされるテスト領域に対して選択された重みは、異なるテスト領域115,116へのアクセス間の差の大きさに基づく。したがって、例えば、いくつかの実施形態では、テスト領域115,116間のアクセスの差の大きさは、以下の式によって与えられる。
AccessDiff=|Accesses115-Accesses116
式中、Accesses115は、スライディングタイムウィンドウにわたるテスト領域115へのアクセス数であり、Accesses116は、スライディングタイムウィンドウにわたるテスト領域116へのアクセス数である。いくつかの実施形態では、各テスト領域に対する性能特性に適用される重みは、AccessDiffの値に基づく。
【0023】
図2は、いくつかの実施形態による、デスキューモジュール108のブロック図である。デスキューモジュール108は、シフトレジスタ222及び比較モジュール225を含む。シフトレジスタ222は、複数のフィールド(例えば、フィールド226)を含む。テスト領域へのアクセス毎に、シフトレジスタ222は、1)各フィールドの値を1位置左に移動し、移動前の左端のフィールドを破棄する、2)テスト領域115へのメモリアクセスに応じて右端のビット位置に1の値を格納し、テスト領域116へのメモリアクセスに応じて右端のビット位置に0の値を格納する。したがって、シフトレジスタ222に格納された1及び0の数は、スライディングタイムウィンドウにわたるテスト領域115,116でのメモリアクセス数を表す。
【0024】
比較モジュール225は、シフトレジスタ222に格納された1と0の数の間の差を決定し、その差の大きさが閾値228を超えるかどうかを判定する。いくつかの実施形態では、閾値228は、プロセッサ101又は処理システム100の特性評価又はテストプロセス中に設定される。他の実施形態では、閾値228は、実行しているプログラムによって、又は、プログラムをコンパイルしたコンパイラによって示された値に基づいて設定される。これにより、閾値228は、プロセッサ101で実行されている特定の命令のセットに従って設定される。
【0025】
比較モジュール225は、閾値228に対する差の大きさの比較に基づいて、指定されたDESKEWである出力信号の状態を設定する。したがって、例えば、差の大きさが閾値228以下であることに応じて、比較モジュール225は、DESKEW信号を、スキューされていないアクセス測定に対応する第1の状態に設定し、大きさが閾値228を超えていることに応じて、比較モジュール225は、DESKEW信号を、スキューされたアクセス測定に対応する第2の状態に設定する。DESKEW信号の状態に基づいて、キャッシュコントローラ105は、測定ポリシー117を設定する。したがって、例えば、DESKEW信号が、スキューされていないアクセス測定を示すことに応じて、キャッシュコントローラ105は、測定ポリシー117をそのスキューされていない状態に設定する。DESKEW信号が、スキューされていないアクセス測定を示すことに応じて、キャッシュコントローラ105は、キャッシュ置換ポリシーの変更を一時停止するか、テスト領域115,116の各々に関連付けられた性能特性の重みを変更すること等によって、上記のように性能特性の測定をデスキューするために、測定ポリシー117をデスキュー状態に設定する。
【0026】
いくつかの実施形態では、デスキューモジュール108は、異なるタイプのアクセスを監視し、対応する閾値を超えるテスト領域115,116への所定のタイプのアクセス数の差に応じて、測定ポリシー117の変更を示す。図3において、いくつかの実施形態よる例を示す。具体的には、図3の例では、デスキューモジュール108は、2つのシフトレジスタ322,324及び比較モジュール325を含む。シフトレジスタ322,324の各々は、テスト領域115,116での異なるタイプのメモリアクセスの追跡を維持する。
【0027】
説明のために、いくつかの実施形態では、シフトレジスタ322は、テスト領域115,116へのデマンドアクセス(demand accesses)を追跡する。テスト領域へのデマンドアクセス毎に、シフトレジスタ322は、1)各フィールドの値を1位置左に移動し、移動前の左端のフィールドを破棄する、2)テスト領域115へのデマンドアクセスに応じて右端のビット位置に1の値を格納し、テスト領域116へのメモリアクセスに応じて右端のビット位置(フィールド326)に0の値を格納する。したがって、シフトレジスタ322に格納された1及び0の数は、スライディングタイムウィンドウにわたるテスト領域115,116でのデマンドアクセス数を表す。シフトレジスタ324は、同様の方法で、テスト領域115,116へのプリフェッチアクセスを追跡する。
【0028】
比較モジュール325は、閾値328に対する2つのタイプのメモリアクセスの差の大きさの各々の比較に基づいて、DESKEW信号の状態を設定する。したがって、例えば、テスト領域115,116へのデマンドアクセスの差の大きさが閾値328以下であることに応じて、比較モジュール325は、DESKEW信号を、スキューされていないアクセス測定に対応する第1の状態に設定し、大きさが閾値328を超えていることに応じて、比較モジュール325は、DESKEW信号を、スキューされたアクセス測定に対応する第2の状態に設定する。同様に、テスト領域115,116へのプリフェッチアクセスの差の大きさが閾値328以下であることに応じて、比較モジュール325は、DESKEW信号を、スキューされていないアクセス測定に対応する第1の状態に設定し、大きさが閾値328を超えていることに応じて、比較モジュール325は、DESKEW信号を、スキューされたアクセス測定に対応する第2の状態に設定する。
【0029】
いくつかの実施形態では、デスキューモジュール108は、デマンドアクセス及びプリフェッチアクセスのために、異なる値を有する異なる閾値を格納することが理解されよう。さらに、いくつかの実施形態では、シフトレジスタ322,324に加えて又はその代わりに、デスキューモジュール108は、異なるキャッシュレベルへのメモリアクセス等の他のタイプのメモリアクセスを追跡するためのシフトレジスタを含む。さらに、いくつかの実施形態では、キャッシュコントローラ105は、何れのタイプのメモリアクセスがDESKEW信号のアサートをもたらしたかに応じて、測定ポリシー117を異なる状態に変更する。
【0030】
図4は、いくつかの実施形態による、プロセッサ101の測定ポリシー117を変更する例を示す図400である。図400は、時間を表すx軸と、テスト領域115,116の各々についてのメモリアクセス数の差の大きさを表すy軸と、を含む。したがって、図400に示すプロット401は、テスト領域115,116の各々についてのメモリアクセス数の差の大きさを表す。
【0031】
図示した例では、時間430の前で、メモリアクセス数の差の大きさは、閾値228を下回っている。したがって、時間430の前で、キャッシュコントローラ105は、測定ポリシー117をデスキュー状態に維持し、テスト領域115,116に関連付けられた性能特性はデスキューされていない。時間430で、メモリアクセス数の差の大きさは、閾値228に到達し、その後、それを超える。それに応じて、キャッシュコントローラ105は、性能特性に付与された1つ以上の重みを変更すること等によって、キャッシュ110の非テスト領域118のキャッシュ置換ポリシーへの変更を一時停止すること等によって、性能特性をデスキューするため測定ポリシー117をデスキュー状態に変更する。(時間430の後の)時間432で、メモリアクセス数の差の大きさは、閾値228を下回る。それに応じて、キャッシュコントローラ105は、測定ポリシー117を公称状態に戻す。
【0032】
図5は、いくつかの実施形態による、プロセッサにおいてメモリアクセス測定ポリシーを設定する方法500のフロー図である。方法500は、プロセッサ101での例示的な実装に関して説明される。ブロック502で、アクセスデスキューモジュール108は、スライディングタイムウィンドウにわたって、テスト領域115,116の各々へのアクセス数を記録する。ブロック504で、アクセスデスキューモジュール108は、テスト領域115へのアクセス数とテスト領域116へのアクセス数との間の差の大きさを決定し、決定された大きさを閾値228と比較する。差の大きさが閾値228以下であることに応じて、方法フローはブロック506に移動し、アクセスデスキューモジュール108は、測定ポリシー117をそのスキューされていない状態に設定し、例えば、非テスト領域118に対する置換ポリシーの変更は、テスト領域115,116に対して均等に重み付けされた性能特性に基づいて許可される。方法フローは、ブロック502に戻る。
【0033】
ブロック504に戻ると、テスト領域115へのアクセス数とテスト領域116へのアクセス数との間の差の大きさが閾値228よりも大きいことに応じて、方法フローはブロック408に移動し、アクセスデスキューモジュール108は、測定ポリシー117をそのデスキュー状態に設定する。いくつかの実施形態では、測定ポリシー117がデスキュー状態にある間、キャッシュコントローラ105は、テスト領域115,116に対する性能特性に基づいて、非テスト領域118に対する置換ポリシーを変更しない。他の実施形態では、測定ポリシー117がデスキュー状態にある間、キャッシュコントローラ105は、異なる重みをテスト領域115,116に対する性能特性に適用し、重み付けされた性能特性に基づいて、非テスト領域118に対する置換ポリシーを選択する。
【0034】
上記のように、いくつかの実施形態では、テスト領域115,116へのアクセスの差の大きさは、プロセッサに対してアクセス測定ポリシーを設定するために使用される代わりに又はそれに加えて、他の目的に使用される。いくつかの実施形態による、キャッシュテスト領域へのアクセスの差の大きさに基づいてアドレスハッシュを設定するプロセッサ600を示す一例が図6に示されている。プロセッサ600は、プロセッサコア602と、キャッシュコントローラ605と、性能モニタ604と、キャッシュ610と、を含む。これらのモジュールの各々は、上述した図1の対応するモジュールと同様に動作する。具体的には、キャッシュ610は、指定されたテスト領域615,616という2つのテスト領域を含む。
【0035】
また、キャッシュコントローラ605は、キャッシュアドレスハッシュ619を使用してキャッシュ610にアクセスする。キャッシュ610へのメモリアクセスを受信することに応じて、キャッシュコントローラ605は、キャッシュアドレスハッシュ619をメモリアクセスのメモリアドレスに適用して、ハッシュされたアドレス値を生成する。キャッシュコントローラ605は、ハッシュされたアドレス値を使用してキャッシュ610にアクセスする。すなわち、キャッシュコントローラ605は、メモリアクセスによって提供される元のハッシュされていないアドレス値ではなく、ハッシュされたアドレス値によって示されるキャッシュ610の位置にアクセスする。
【0036】
いくつかの実施形態では、キャッシュアドレスハッシュ619は、キャッシュ610のキャッシュ位置の比較的大きな割合の使用を促進すると予想される公称値に設定される。すなわち、キャッシュアドレスハッシュ619の公称値は、アクセスに関連付けられたハッシュされていないアドレスが、メモリアドレスの比較的狭い範囲に含まれる場合であっても、キャッシュ位置の比較的大きな割合へのアクセスを「分散する(spreading out)」ことによって、キャッシュ610の効率的な使用を促進することが期待される。
【0037】
しかし、一部のメモリアクセスパターンでは、ハッシュの公称値がハッシュされたアドレス値を十分に変化させないため、結果として得られるメモリアクセスは、比較的小さなキャッシュ位置のセットにアクセスする傾向がある。これらのメモリアクセスパターンは、他のテスト領域よりもテスト領域615,616のうち何れかへのより頻繁なアクセスによって示される。したがって、プロセッサ101は、図2のアクセスデスキューモジュール108と同様の方法で、スライディングタイムウィンドウにわたって、テスト領域615へのメモリアクセス数とテスト領域616へのメモリアクセス数との間の差を比較するハッシュ制御モジュール608を含む。差の大きさが閾値を超えることに応じて、ハッシュ制御モジュール608は、キャッシュアドレスハッシュ619を異なる値に変更する。いくつかの実施形態では、ハッシュ制御モジュール608は、差の大きさが閾値を下回るまで、キャッシュアドレスハッシュ619を変更し続ける(例えば、ハッシュ値の異なるビットの値を連続的に変更することによって)。これにより、ハッシュ制御モジュール608は、様々な異なるメモリアクセスパターンに対するキャッシュ110の効率的な使用を促進する。
【0038】
いくつかの実施形態では、キャッシュアドレスハッシュ619の値を変更することに加えて又はその代わりに、キャッシュコントローラ605は、テスト領域615,616のうち1つ以上に関連付けられたメモリアドレスを変更し、それによって、テスト領域をキャッシュ610の異なる領域に移動する。したがって、例えば、テスト領域615,616へのアクセスの差の大きさが閾値を超えることに応じて、キャッシュコントローラは、テスト領域615に関連付けられたアドレスを変更し、それにより、テスト領域615をキャッシュ610の異なる部分に移動する。
【0039】
本明細書に記載されるように、いくつかの実施形態では、方法は、キャッシュの第1の領域及びキャッシュの第2の領域のそれぞれへのアクセスを監視することと、キャッシュの第1の領域への第1の監視されたアクセス数及びキャッシュの第2の領域への第2の監視されたアクセス数に基づいて測定ポリシーを選択することと、キャッシュの第1の領域への第1の監視されたアクセス数及びキャッシュの第2の領域への第2の監視されたアクセス数に基づいて、及び、測定ポリシーに基づいて、キャッシュの第3の領域に対するキャッシュ置換ポリシーを設定することと、を含む。一態様では、測定ポリシーを選択することは、第1の監視されたアクセス数と第2の監視されたアクセス数との間の第1の差を決定することと、差が閾値未満であることに応じて、第1の測定ポリシーを選択することと、差が閾値以上であることに応じて、第2の測定ポリシーを選択することと、を含む。別の態様では、第1の測定ポリシーは、キャッシュ置換ポリシーへの変更を許可することを含み、第2の測定ポリシーは、キャッシュ置換ポリシーへの変更を抑制することを含む。さらに別の態様では、第1の測定ポリシーは、第1の領域への監視されたアクセスに第1の重みを適用し、第2の領域への監視されたアクセスに第2の重みを適用することを含み、第2の測定ポリシーは、第1の領域への監視されたアクセスに第3の重みを適用し、第2の領域への監視されたアクセスに第4の重みを適用することを含み、キャッシュポリシーを選択することは、第1の領域への重み付けされた監視されたアクセスと第2の領域への重み付けされた監視されたアクセスに基づいてキャッシュポリシーを選択することが含まれる。一態様では、第1の重みと第2の重みは同じ重みであり、第3の重みは第4の重みと異なる。
【0040】
一態様では、測定ポリシーを選択することは、第1の監視されたアクセス数と第2の監視されたアクセス数との間の第1の差を決定することと、第1の差に基づいて、第1の領域に対して第1の重みを適用し、第2の領域に対して第2の重みを適用することと、第1の重みに基づいて、第1の領域へのアクセスに重み付けし、第2の重みに基づいて、第2のキャッシュ領域へのアクセスに重み付けすることとを含み、キャッシュポリシーを選択することは、第1の領域への重み付けされた監視されたアクセスに基づいて及び第2の領域への重み付けされた監視されたアクセスに基づいてキャッシュポリシーを選択することを含む。別の態様では、第1の領域及び第2の領域の各々へのアクセスを監視することは、第1の領域及び第2の領域の各々への第1のタイプのアクセスを監視することと、第1の領域及び第2の領域の各々への第2のタイプのアクセスを監視することと、を含み、測定ポリシーを選択することは、第1の領域への第1のタイプのアクセス数と第2の領域への第1のタイプのアクセス数との間の第1の差、及び、第1の領域への第2のタイプのアクセス数と第2の領域への第2のタイプのアクセス数との間の第2の差に基づいて、測定ポリシーを選択することを含む。さらに別の態様では、第1のタイプはデマンドアクセスを含み、第2のタイプはプリフェッチアクセスを含む。
【0041】
一態様では、キャッシュポリシーを設定することは、キャッシュの第1の領域でのキャッシュヒット率及びキャッシュの第2の領域でのキャッシュヒット率に基づいてキャッシュポリシーを設定することを含む。別の態様では、キャッシュポリシーを設定することは、キャッシュの第1の領域でのキャッシュミス率及びキャッシュの第2の領域でのキャッシュミス率に基づいてキャッシュポリシーを設定することを含む。
【0042】
いくつかの実施形態では、方法は、キャッシュの第1の領域及びキャッシュの第2の領域の各々へのアクセスを監視することと、キャッシュの第1の領域への第1の監視されたアクセス数及びキャッシュの第2の領域への第2の監視されたアクセス数に基づいてハッシュ値を選択することと、選択されたハッシュ値に基づいてキャッシュの第3の領域に対するキャッシュアドレス値を生成することと、キャッシュアドレス値に基づいて、キャッシュの第3の領域でデータを格納することとを含む。一態様では、ハッシュ値を選択することは、第1の監視されたアクセス数と第2の監視されたアクセス数との間の第1の差を決定することと、差が閾値未満であることに応じて、第1のハッシュ値を選択することと、差が閾値以上であることに応じて、ハッシュ値を選択することと、を含む。別の態様では、方法は、キャッシュの第1の領域への第1の監視されたアクセス数及びキャッシュの第2の領域への第2の監視されたアクセス数に基づいて、キャッシュの第1の領域に関連付けられたアドレスを変更することを含む。
【0043】
いくつかの実施形態では、プロセッサは、第1の領域、第2の領域及び第3の領域を含むキャッシュと、第1の領域及び第2の領域の各々へのアクセスを監視することと、第1の領域への第1の監視されたアクセス数及び第2の領域への第2の監視されたアクセス数に基づいて測定ポリシーを選択することと、第1の領域への第1の監視されたアクセス数及び第2の領域への第2の監視されたアクセス数に基づいて、及び、測定ポリシーに基づいて、第3の領域に対するキャッシュ置換ポリシーを設定することと、を行うように構成されたキャッシュコントローラと、を含む。一態様では、キャッシュコントローラは、第1の監視されたアクセス数と第2の監視されたアクセス数との間の第1の差を決定することと、差が閾値未満であることに応じて、第1の測定ポリシーを選択することと、差が閾値以上であることに応じて、第2の測定ポリシーを選択することと、によって測定ポリシーを選択するように構成されている。
【0044】
一態様では、第1の測定ポリシーは、キャッシュ置換ポリシーへの変更を許可することを含み、第2の測定ポリシーは、キャッシュ置換ポリシーへの変更を抑制することを含む。別の態様では、第1の測定ポリシーは、第1の領域への監視されたアクセスに第1の重みを適用し、第2の領域への監視されたアクセスに第2の重みを適用することを含み、第2の測定ポリシーは、第1の領域への監視されたアクセスに第3の重みを適用し、第2の領域への監視されたアクセスに第4の重みを適用することを含み、キャッシュポリシーを選択することは、第1の領域への重み付けされた監視されたアクセス及び第2の領域への重み付けされた監視されたアクセスに基づいてキャッシュポリシーを選択することを含む。さらに別の態様では、第1の重みと第2の重みとは同じ重みであり、第3の重みは第4の重みと異なる。
【0045】
一態様では、キャッシュコントローラは、第1の監視されたアクセス数と第2の監視されたアクセス数との間の第1の差を決定することと、第1の差に基づいて、第1のキャッシュ領域及び第2のキャッシュ領域に対する第1の重み及び第2の重みを選択することと、第1の重みに基づいて、第1の領域へのアクセスに重み付けし、第2の重みに基づいて、第2のキャッシュ領域へのアクセスに重み付けすることとによって、測定ポリシーを選択するように構成されており、キャッシュポリシーを選択することは、第1の領域への重み付けされた監視されたアクセス及び第2の領域への重み付けされた監視されたアクセスに基づいてキャッシュポリシーを選択することを含む。別の態様では、キャッシュポリシーは、キャッシュの第3の領域に対するプリフェッチポリシーを設定する。
【0046】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0047】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0048】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
図6