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

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

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

<>
  • 特表-再利用期間に基づくキャッシュ管理 図1
  • 特表-再利用期間に基づくキャッシュ管理 図2
  • 特表-再利用期間に基づくキャッシュ管理 図3
  • 特表-再利用期間に基づくキャッシュ管理 図4
  • 特表-再利用期間に基づくキャッシュ管理 図5
  • 特表-再利用期間に基づくキャッシュ管理 図6
  • 特表-再利用期間に基づくキャッシュ管理 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-15
(54)【発明の名称】再利用期間に基づくキャッシュ管理
(51)【国際特許分類】
   G06F 12/126 20160101AFI20221208BHJP
   G06F 12/122 20160101ALI20221208BHJP
   G06F 12/0864 20160101ALI20221208BHJP
【FI】
G06F12/126 100
G06F12/122
G06F12/0864
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022519980
(86)(22)【出願日】2020-08-14
(85)【翻訳文提出日】2022-05-20
(86)【国際出願番号】 US2020046390
(87)【国際公開番号】W WO2021076211
(87)【国際公開日】2021-04-22
(31)【優先権主張番号】16/600,897
(32)【優先日】2019-10-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジーミン イン
(72)【発明者】
【氏名】スバス セスムルガン
(72)【発明者】
【氏名】ヤスコ エッカート
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205QQ04
5B205QQ11
5B205TT02
5B205VV03
5B205VV04
(57)【要約】
プロセッサ[102]のキャッシュ[110]は、キャッシュのキャッシュラインを挿入及び交換するためのキャッシュ管理ポリシーを実施するためのキャッシュコントローラ[112]を含む。キャッシュ管理ポリシーは、キャッシュラインが最後にアクセスされてからのキャッシュラインを記憶するウェイを有するキャッシュセット[116]へのアクセス数と、キャッシュの領域に対して判定された再利用期間と、の比較に基づいて、キャッシュの領域内のキャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当て、再利用期間は、所定のキャッシュセットの所定のキャッシュラインへのアクセス間の領域の当該所定のキャッシュセットへの平均アクセス数を表す。
【選択図】図1
【特許請求の範囲】
【請求項1】
処理システムのキャッシュを管理するための方法であって、
前記キャッシュのキャッシュコントローラが、前記キャッシュの領域の再利用期間を判定することであって、前記再利用期間は、所定のキャッシュセット[116]の所定のキャッシュラインへのアクセス間の前記キャッシュの前記所定のキャッシュセット[116]への平均アクセス数を表す、ことと、
前記キャッシュコントローラが、前記再利用期間と、前記キャッシュラインへのキャッシュヒット数のカウントと、に基づいて、前記キャッシュの前記領域の前記キャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当てることと、を含む、
方法。
【請求項2】
前記キャッシュに割り当てられた前記交換優先レベルに基づいて、前記キャッシュの前記領域で交換するためのキャッシュラインを選択することをさらに含む、
請求項1の方法。
【請求項3】
前記再利用期間を判定することは、
前記キャッシュの前記領域のキャッシュセットの少なくともサブセットのキャッシュセットにおける各キャッシュヒットに応じて、
前記キャッシュヒットのターゲットであるキャッシュラインを含む前記キャッシュセットのウェイに関連するセットアクセスカウント値を累積値に加算して、更新累積値を生成することと、
前記キャッシュヒットのターゲットであるキャッシュラインを含む前記キャッシュセットのウェイに関連する前記セットアクセスカウント値をリセットすることと、
前記キャッシュセットの他のウェイに関連するセットアクセスカウント値をインクリメントすることと、
前記キャッシュセットの少なくともサブセットへの所定数のキャッシュヒットを検出したことに応じて、
キャッシュヒットの前記所定数によって前記更新累積値を平均化して、平均セットアクセスカウント値を生成することと、
前記平均セットアクセスカウント値に基づいて、再利用期間を判定することと、を含む、
請求項1の方法。
【請求項4】
前記キャッシュセットの少なくともサブセットへの所定数のキャッシュヒットを検出したことに応じて、
前記平均セットアクセスカウント値を所定の要素でスケーリングして、スケーリングされた平均セットアクセスカウント値を生成すること、をさらに含み、
前記再利用期間を判定することは、前記スケーリングされた平均セットアクセスカウント値に基づいて、前記再利用期間を判定することを含む、
請求項3の方法。
【請求項5】
前記キャッシュの前記領域の前記キャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当てることは、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きくないと判定したことに応じて、及び、前記ウェイに挿入されてからの前記キャッシュラインへのアクセス数がゼロよりも大きいと判定したことに応じて、第1の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きくないと判定したことに応じて、及び、前記ウェイに挿入されてからの前記キャッシュラインへの前記アクセス数がゼロに等しいと判定したことに応じて、第2の交換優先レベルを前記キャッシュラインに割り当てることと、を含み、
前記第2の交換優先レベルは、前記第1の交換優先レベルよりも、交換のために選択される可能性が大きいことを表す、
請求項3の方法。
【請求項6】
前記キャッシュの前記領域の前記キャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当てることは、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きいと判定したことに応じて、及び、前記ウェイに挿入されてからの前記キャッシュラインへのアクセス数がゼロよりも大きいと判定したことに応じて、第3の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きいと判定したことに応じて、及び、前記ウェイに挿入されてからの前記キャッシュラインへの前記アクセス数がゼロに等しいと判定したことに応じて、第4の交換優先レベルを前記キャッシュラインに割り当てることと、をさらに含み、
前記第3の交換優先レベルは、前記第1の交換優先レベルよりも、交換のために選択される可能性が大きいことを表し、
前記第4の交換優先レベルは、前記第2の交換優先レベルよりも、交換のために選択される可能性が大きいことを表す、
請求項5の方法。
【請求項7】
前記キャッシュに割り当てられた前記交換優先レベルに基づいて、前記キャッシュの前記領域で交換するためのキャッシュラインを選択することをさらに含む、
請求項6の方法。
【請求項8】
前記キャッシュの前記領域は、前記キャッシュ全体を含む、
請求項1の方法。
【請求項9】
処理システムのキャッシュを管理するための方法であって、
前記キャッシュのキャッシュコントローラが、前記キャッシュのキャッシュラインを挿入及び交換するためのキャッシュ管理ポリシーを実施することを含み、
前記キャッシュ管理ポリシーは、前記キャッシュラインが最後にアクセスされてからのキャッシュラインを記憶するウェイを有するキャッシュセットへのアクセス数と、前記キャッシュの領域に対して判定された再利用期間と、の比較に基づいて、前記キャッシュの前記領域内のキャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルの割り当てを提供し、
前記再利用期間は、前記領域の所定のキャッシュセットの所定のキャッシュラインへのアクセス間の前記所定のキャッシュセットへの平均アクセス数を表す、
方法。
【請求項10】
前記キャッシュ管理ポリシーを実施することは、
前記領域のキャッシュセットの少なくともサブセットの各キャッシュセットのウェイ毎にセットアクセスカウント値を維持することであって、前記セットアクセスカウント値は、対応するウェイに記憶された前記キャッシュラインが挿入されてからの、又は、最後にアクセスされてからの前記キャッシュセットへのアクセス数を表す、ことと、
キャッシュヒットのターゲットである前記キャッシュセットの少なくともサブセットにおけるキャッシュセットの各ウェイからの前記セットアクセスカウント値を累積値に累積することと、
前記キャッシュセットの少なくともサブセットへの所定数のキャッシュヒットが生じた後に、キャッシュヒットの前記所定数による前記累積値の平均に基づいて、前記再利用期間を判定することと、を含む、
請求項9の方法。
【請求項11】
前記キャッシュ管理ポリシーを実施することは、
前記領域の前記キャッシュセットの少なくともサブセットの各キャッシュセットのウェイ毎にラインアクセスカウント値を維持することをさらに含み、前記ラインアクセスカウント値は、前記対応するウェイに記憶された前記キャッシュラインへのアクセス数を表す、
請求項10の方法。
【請求項12】
前記キャッシュ管理ポリシーを実施することは、
前記キャッシュラインに関連する前記セットアクセスカウント値と前記再利用期間との比較に基づいて、及び、前記キャッシュラインを記憶する前記ウェイの前記ラインアクセスカウント値がゼロ以上であるかどうかの判定に基づいて、前記キャッシュの前記領域のキャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当てることをさらに含む、
請求項11の方法。
【請求項13】
各キャッシュラインに交換優先レベルを割り当てることは、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きくないと判定したことに応じて、及び、前記キャッシュラインに関連するラインアクセスカウントがゼロよりも大きいと判定したことに応じて、第1の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きくないと判定したことに応じて、及び、前記キャッシュラインに関連するラインアクセスカウントがゼロに等しいと判定したことに応じて、第2の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きいと判定したことに応じて、及び、前記キャッシュラインに関連する前記ラインアクセスカウントがゼロよりも大きいと判定したことに応じて、第3の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きいと判定したことに応じて、及び、前記ラインアクセスカウントがゼロに等しいと判定したことに応じて、第4の交換優先レベルを前記キャッシュラインに割り当てることと、を含み、
前記第2の交換優先レベルは、前記第1の交換優先レベル及び前記第3の交換優先レベルよりも、交換のために選択される可能性が大きいことを表し、
前記第3の交換優先レベルは、前記第1の交換優先レベルよりも、交換のために選択される可能性が大きいことを表し、
前記第4の交換優先レベルは、前記第2の交換優先レベルよりも、交換のために選択される可能性が大きいことを表す、
請求項12の方法。
【請求項14】
複数のキャッシュセットを含むキャッシュであって、各キャッシュセットは、対応するキャッシュラインを記憶するように構成された複数のウェイを有する、キャッシュと、
前記キャッシュのキャッシュラインを挿入及び交換するためのキャッシュ管理ポリシーを実施するように構成されたキャッシュコントローラと、を備え、
前記キャッシュ管理ポリシーは、前記キャッシュラインが最後にアクセスされてからの前記キャッシュラインを記憶するウェイを有するキャッシュセットへのアクセス数と、前記キャッシュの領域に対して判定された再利用期間と、の比較に基づいて、前記キャッシュの前記領域内のキャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルの割り当てを提供し、
前記再利用期間は、前記領域の所定のキャッシュセットの所定のキャッシュラインへのアクセス間の前記所定のキャッシュセットへの平均アクセス数を表す、
プロセッサ。
【請求項15】
前記キャッシュは、
複数のセットアクセスカウンタであって、各セットアクセスカウンタは、前記キャッシュの前記領域のキャッシュセットの少なくともサブセットのキャッシュセットの対応するウェイに関連付けられており、前記対応するウェイに記憶された前記キャッシュラインが挿入されてからの、又は、最後にアクセスされてからの前記キャッシュセットへのアクセス数を表すセットアクセスカウント値を記憶するように構成されている、複数のセットアクセスカウンタと、
前記キャッシュヒットのターゲットである前記キャッシュセットの少なくともサブセットにおけるキャッシュセットの各ウェイからの前記セットアクセスカウント値を累積値に累積するように構成されたアキュムレータと、
前記キャッシュセットの少なくともサブセットへの所定数のキャッシュヒットを検出したことに応じて、キャッシュヒットの前記所定数による前記累積値の平均に基づいて、前記再利用期間を判定するように構成された平均化/スケーリングコンポーネントと、を備える、
請求項14のプロセッサ。
【請求項16】
前記キャッシュは、
複数のラインアクセスカウンタを備え、各ラインアクセスカウンタは、前記キャッシュセットの少なくともサブセットのキャッシュセットの対応するウェイに関連付けられており、前記対応するウェイに記憶された前記キャッシュラインへのアクセス数を表すラインアクセスカウント値を記憶するように構成されている、
請求項15のプロセッサ。
【請求項17】
前記キャッシュコントローラは、
前記キャッシュラインに関連する前記セットアクセスカウント値と前記再利用期間との比較に基づいて、及び、前記キャッシュラインを記憶する前記ウェイの前記ラインアクセスカウント値がゼロ以上であるかどうかの判定に基づいて、前記キャッシュの前記領域のキャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当てることによって、前記キャッシュ管理ポリシーを実施するように構成されている、
請求項16のプロセッサ。
【請求項18】
前記キャッシュコントローラは、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きくないと判定したことに応じて、及び、前記キャッシュラインに関連するラインアクセスカウントがゼロよりも大きいと判定したことに応じて、第1の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きくないと判定したことに応じて、及び、前記キャッシュラインに関連するラインアクセスカウントがゼロに等しいと判定したことに応じて、第2の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きいと判定したことに応じて、及び、前記キャッシュラインに関連する前記ラインアクセスカウントがゼロよりも大きいと判定したことに応じて、第3の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きいと判定したことに応じて、及び、前記ラインアクセスカウントがゼロに等しいと判定したことに応じて、第4の交換優先レベルを前記キャッシュラインに割り当てることと、
によって、交換優先レベルをキャッシュセットのキャッシュラインに割り当てるように構成されており、
前記第2の交換優先レベルは、前記第1の交換優先レベル及び前記第3の交換優先レベルよりも、交換のために選択される可能性が大きいことを表し、
前記第3の交換優先レベルは、前記第1の交換優先レベルよりも、交換のために選択される可能性が大きいことを表し、
前記第4の交換優先レベルは、前記第2の交換優先レベルよりも、交換のために選択される可能性が大きいことを表す、
請求項17のプロセッサ。
【請求項19】
前記キャッシュコントローラは、
前記キャッシュセットの各キャッシュラインに割り当てられた交換優先レベルの比較に基づいて交換用のキャッシュセットのキャッシュラインを選択することによって、前記キャッシュ管理ポリシーを実施するように構成されている、
請求項18のプロセッサ。
【請求項20】
前記キャッシュヒットの前記所定数は2に等しく、Mは1よりも大きい整数であり、
前記平均化/スケーリングコンポーネントは、前記累積値をMビット位置まで右にシフトすることによって、前記再利用期間を判定するように構成されている、
請求項15のプロセッサ。
【請求項21】
前記キャッシュの前記領域は、前記キャッシュ全体を含む、
請求項14のプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
処理システムは、キャッシュを使用して、高速アクセスのためにメモリ又は大容量記憶デバイスからデータを一時的にバッファリングする。キャッシュにより記憶容量が制限されるため、一般的に、キャッシュ管理ポリシーを使用して、キャッシュの対応領域がフルになった場合に、交換用のキャッシュラインの選択を指示する。しかしながら、最長時間未使用(LRU)又は再参照区間予測(RRIP)の原理に基づくポリシー等のいくつかの従来のキャッシュ管理ポリシーは、キャッシュラインへの不規則なアクセスに対処する際に効率的でなく、又は、その適用を制限する可能性がある、比較的複雑な回路実装が必要である。
【0002】
添付の図面を参照することにより、本開示がより良く理解され、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同一の符号が使用される場合、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、再利用期間に基づくキャッシュ管理ポリシーを実施するキャッシュを有する処理システムのブロック図である。
図2】いくつかの実施形態による、図1のキャッシュの再利用期間計算コンポーネントを示すブロック図である。
図3】いくつかの実施形態による、図1及び図2のキャッシュの対応領域の現在の再利用期間を計算するための方法を示すフロー図である。
図4】いくつかの実施形態による、再利用期間計算コンポーネントの代替の実施形態を示すブロック図である。
図5】いくつかの実施形態による、対応キャッシュラインのラインアクセスカウンタを維持するための方法を示すフロー図である。
図6】いくつかの実施形態による、現在の再利用期間及び対応するラインアクセスカウント値に基づいて、交換優先レベルをキャッシュラインに割り当てるための方法を示すフロー図である。
図7】いくつかの実施形態による、再利用期間に基づく交換優先順位を使用して、交換用のキャッシュラインを選択するための方法を示すフロー図である。
【発明を実施するための形態】
【0004】
図1図7は、キャッシュの対応領域に対して予測された「再利用期間」に基づく処理システムのキャッシュのためのキャッシュ管理ポリシーを実施するためのシステム及び技術を示す。本明細書で説明するように、キャッシュの対応領域の再利用期間は、キャッシュセットの所定のキャッシュラインへのアクセス間のキャッシュの領域のその所定のキャッシュセットへの平均アクセス数の履歴の表現である。次に、そのキャッシュセットの所定のキャッシュラインに再度アクセスする前に、所定のキャッシュセットに発生する可能性が高いアクセス数の予測因子又は他のインジケータとして、この再利用期間を使用し、この情報をキャッシュラインの最近のアクセス履歴に関する情報と一緒に使用して、交換優先順位をキャッシュラインに割り当てる。次に、キャッシュ管理ポリシーに従って、このように割り当てられたキャッシュラインの交換優先順位を使用して、対応するキャッシュセットが十分に占有される場合に、交換用のキャッシュラインを選択する。キャッシュ管理へのこの再利用期間に基づくアプローチは、周期的パターン又はストリーミングアクセスパターンで、及び、ハードウェアで実施するために比較的簡単な方式で使用される可能性が高いキャッシュラインを交換するための正確及び効果的な優先順位付けを提供できる。
【0005】
図1は、いくつかの実施形態による、再利用期間に基づくキャッシュ管理を使用する処理システム100を示す図である。処理システム100は、メモリサブシステム104に結合されたプロセッサ102を含み、メモリサブシステム104は、1つ以上のシステムメモリ、スクラッチパッドメモリ、ディスクドライブ又は他の大容量記憶デバイスを含む。プロセッサ102は、例えば、中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)、アクセラレーテッド・プロセッシング・ユニット(APU)、デジタル信号プロセッサ(DSP)又はこれらの組み合わせである。プロセッサ102は、1つ以上の実行パイプライン106(例えば、CPUコア)と、キャッシュ108を含む1つ以上のキャッシュのキャッシュ階層と、を含む。キャッシュ108は、キャッシュアレイ110と、キャッシュコントローラ112と、を含む。キャッシュアレイ110は、1つ以上の実行パイプライン106によってアクセスするためにキャッシュライン(すなわち、一時的なバッファデータのブロック)を記憶する複数のエントリ114を含む。少なくとも1つの実施形態では、キャッシュ108は、セットアソシアティブキャッシュであり、それにより、キャッシュラインエントリ114が複数のキャッシュセット116に配置され、各キャッシュセット116が複数のウェイを有し、各ウェイは、対応キャッシュラインを動作可能に記憶するキャッシュラインエントリ114であり、キャッシュセット116にマッピングするメモリアドレスに関連する何れかのキャッシュラインは、キャッシュセット116の何れかのウェイに記憶することができる。図示した例では、キャッシュ108は、4つのウェイ(ウェイ0~ウェイ3)を実装しているが、4つより多い数又は少ない数のウェイを実装することができる。キャッシュセット116の各々は、セットのウェイ毎に追加のフィールド(タグフィールド118等)を含み、タグフィールド118は、対応ウェイ(存在する場合)に記憶された有効なキャッシュラインに関連するメモリアドレス、ステータスビット、制御ビット等の一部を記憶する。
【0006】
キャッシュコントローラ112は、1つ以上の実行パイプライン106のアクティビティに基づいて、キャッシュアレイ110の様々なフィールドを維持するように動作し、その動作は、データブロックをキャッシュラインとして受信及び記憶することと、1つ以上の実行パイプライン106によって使用又は変更するためにキャッシュラインにアクセスすることと、メモリサブシステム104にエビクション又はフラッシュするためにキャッシュラインにアクセスすることと、等を含む。このプロセスの一部として、キャッシュコントローラ112は、キャッシュ管理ポリシー120を実施し、キャッシュ管理ポリシー120は、交換又は他のエビクションのキャッシュラインの優先順位付けを制御し、そのような優先順位付けに基づいて、交換又は他のエビクションの候補キャッシュラインの選択を制御する。少なくとも1つの実施形態では、キャッシュ管理ポリシー120は、キャッシュ108の対応領域(この領域は、キャッシュ108の一部(例えば、1/4)又はキャッシュ108の全部であり得る)に対して決定(判定)された「再利用期間」と、その対応領域内のキャッシュラインへのアクセスの最近の履歴と、を利用して、そのキャッシュラインの交換優先順位を決定する。再利用期間が本実施形態のキャッシュの一部に対して決定されるが、キャッシュ管理ポリシー120は、キャッシュ108の全体に適用することができる。上述したように、ハイレベルでは、この再利用期間は、キャッシュセット116内の特定のキャッシュラインへのアクセス間の対応するキャッシュ領域のキャッシュセット116への平均アクセス回数を表す。すなわち、再利用期間は、キャッシュセットの所定のキャッシュラインに再度アクセスする前に、キャッシュ108の対応領域の任意の所定のキャッシュセットに発生する可能性が高いキャッシュアクセスの平均回数の予測を表す。このために、キャッシュ管理ポリシー120は、3つのステージを実施する。3つのステージ(再利用期間判定ステージ122、交換優先順位割り当てステージ124、及び、キャッシュライン交換ステージ126)のそれぞれは、他のフェーズと無関係に及び同時に動作する。再利用期間判定ステージ122は、キャッシュ108の適用可能領域毎に、現在(最新)の再利用期間の計算を提供し、図2図4を参照して以下に詳細に説明される。交換優先順位割り当てステージ124は、ステージ122の現在の計算サイクルで計算された現在(最新)の再利用期間に基づいて、キャッシュラインへの交換優先順位の割り当てを提供し、図5及び図6を参照して以下にさらに詳細に説明される。キャッシュライン交換ステージ126は、ステージ124の現在の優先順位付けサイクルから判定された交換優先順位の割り当てに基づいて、交換用のキャッシュラインの選択を提供し、図7を参照して以下にさらに詳細に説明される。
【0007】
少なくとも1つの実施形態では、キャッシュ108は、ステージ122の各反復で現在の再利用期間を計算するのに使用するために、及び、ステージ124の各サイクルにおいてキャッシュラインの交換優先順位を判定するのに使用するために、カウンタセット128を使用する。このカウンタセット128は、セットアクセスカウンタ130と、ラインアクセスカウンタ132と、を含み、これらは、キャッシュアレイ110のウェイ毎に(すなわち、キャッシュライン毎に)、又は代替的に、サンプリング目的のためにキャッシュ108の代表キャッシュセットとして指定されたキャッシュセットのサブセットのウェイ毎に含まれる(例えば、領域のX番目のキャッシュセット毎に含まれ、Xは1よりも大きい整数である)。セットアクセスカウンタ130は、キャッシュラインが挿入されてからの又は最後にアクセスされてからの対応キャッシュラインに関連するキャッシュセット116に発生しているアクセス回数を表すセットアクセスカウント値を記憶する。ラインアクセスカウンタ132は、キャッシュ108に挿入されてから、又は、次の計算サイクルの開始に応じてリセットされてから、対応キャッシュラインにアクセスしている回数を表すラインアクセスカウント値を記憶する。いくつかの実施形態では、カウンタセット128は、さらに、N番目にカウントされたアクセス後にリセットされる前に(及び、以下に説明するように、さらなる動作をトリガする前に)、対応するキャッシュセット116へのアクセス数をカウントするN番目のアクセスカウンタ134を含み、ここで、Nは、プログラム可能な整数、又は、1よりも大きい特定の整数(N>1)を表す。
【0008】
図2は、いくつかの実施形態による、キャッシュコントローラ112によって実装され、カウンタセット128にアクセスする、再利用期間計算コンポーネント200の実施形態を示す図である。再利用期間計算コンポーネント200は、キャッシュ108の対応領域の再利用期間を計算するために利用されるキャッシュセット116毎に、セットアカウントコンポーネント202を含む。これは、キャッシュ領域内のキャッシュセット116の各々、又は、キャッシュ領域のキャッシュセット116の代表のサブセットを含み得る。図示した例では、X個(X≧1)のキャッシュセット116が表されており、セットアカウントコンポーネント202-0,202-1,202-3は、表されたキャッシュセット116のキャッシュセット0、キャッシュセット1、及び、キャッシュセットX-1に対応して示されている。再利用期間計算コンポーネント200は、さらに、アキュムレータ204と、平均化/スケーリングコンポーネント206と、を含む。一実施形態では、再利用期間計算コンポーネント200は、ヒットカウンタ207を含み、ヒットカウンタ207は、現在の計算サイクルについてキャッシュ108の対応領域へのキャッシュヒット数をカウントし、キャッシュヒット数がプログラム可能又は他の方法で指定された値Kに達すると、再利用期間計算をトリガする。例示すると、ヒットカウンタ207は、計算サイクル毎にKにリセットし、代表キャッシュセットへのキャッシュヒット毎にデクリメントし、カウント値が0に達すると再利用期間計算をトリガする、カウントダウンカウンタとして実装することができる。
【0009】
セットX-1のセットアカウントコンポーネント202-3の構成が示されており、その対応するキャッシュセット116に対するセットアカウントコンポーネント202の各々の構成を表す。図示したように、セットアカウントコンポーネント202-3は、対応するキャッシュセット116のウェイ毎に1つずつ対応するコンパレータ208のセットと、選択ロジック214(説明し易くするために、マルチプレクサとして示されている)と、を含む。したがって、4つのウェイがあるセットを有するキャッシュ108の図示した例について、セットアカウントコンポーネント202-3は、4つのコンパレータ208を含む。各コンパレータ208は、セットの対応ウェイのタグフィールド(例えば、各々、ウェイ0~4のタグフィールド118-0~118-3の1つ)からアドレス値を受信するために結合された入力と、実行パイプライン106からキャッシュ108に送られたキャッシュプローブ212のタグフィールド210からアドレス値を受信する入力と、を含む。さらに、各コンパレータ208は、対応ウェイのタグフィールド118からのアドレス値がキャッシュプローブ212のタグフィールド210のアドレス値にマッチ(一致)するときにアサートされる出力を有する。すなわち、キャッシュプローブ212のターゲットである(すなわち、キャッシュプローブ212にキャッシュ「ヒット」を提供する)キャッシュセット116のウェイに関連するコンパレータ208は、その出力をアサートするが、セットアカウントコンポーネント202-3の他のコンパレータ208は、アサートされないままである。このように、コンパレータ208の出力は、キャッシュプローブ212に表されるアドレスにマッチするアドレスを有するキャッシュラインを含むウェイを識別する。
【0010】
上述したように、カウンタセット128は、再利用期間計算に利用される代表キャッシュセット116の各々のウェイ毎に、セットアクセスカウンタ130を含む。したがって、図示したセットアカウントコンポーネント202-3に関連するセットX-1について、カウンタセット128は、各々、ウェイ0、ウェイ1、ウェイ2及びウェイ3に対して4つのセットアクセスカウンタ130-0,130-1,130-2,130-3を含む。以下にさらに詳細に説明するように、セットアクセスカウンタ130-0~130-3の各々は、対応ウェイのキャッシュラインが挿入されてから、又は、最後にアクセスされてからのセットX-1へのアクセス数を表すセットアクセスカウント値を記憶する。
【0011】
選択ロジック214は、複数の選択入力を含み、選択入力の各々は、キャッシュセット116のセットアクセスカウンタ130うち対応する1つの現在の選択アクセスカウント値を受信するために結合されている。したがって、4つのウェイキャッシュセット116では、選択ロジック214は、4つの選択入力(すなわち、セットアクセスカウンタ130-0からカウント値を受信するための選択入力、セットアクセスカウンタ130-1からカウント値を受信するための選択入力、セットアクセスカウンタ130-2からカウント値を受信するための選択入力、及び、セットアクセスカウンタ130-3からカウント値を受信するための選択入力)を有する。さらに、選択ロジック214は、コンパレータ208の出力に結合された選択制御入力と、アキュムレータ204に結合された出力と、を含む。したがって、選択ロジック214は、アキュムレータ204に出力するために、セットアクセスカウンタ130-0~130-3からの入力選択アクセスカウント値のうち1つを選択するように動作し、その動作に基づいて、コンパレータ208は、存在する場合、アサートされた出力を有する。すなわち、キャッシュプローブ212のタグアドレスにマッチするタグアドレスを有するキャッシュセット116のウェイは、選択ロジック214をトリガして、そのウェイに関連するセットアクセスカウンタ130のカウンタ値をアキュムレータ204に出力する。
【0012】
アキュムレータ204は、様々なセットアカウントコンポーネント202から受信したセットアクセスカウンタ値を累積して、結果として得られる更新累積値を平均化/スケーリングコンポーネント206に提供するように動作する。トリガイベント(例えば、領域の代表キャッシュセットへのK番目のアクセス毎に発生するイベント)に応じて、平均化/スケーリングコンポーネント206は、最後の計算サイクル以降の領域の代表キャッシュセットへのアクセス数について現在の更新累積値を平均化して、平均セットアクセスカウント値を累積値から生成するように動作する。平均セットアクセスカウント値は、例えば、一連のシフト演算によって取得することができ、いくつかの実施形態では、平均/スケーリングコンポーネント206は、指定された倍率を使用して、結果として生じる平均セットアクセスカウント値をスケーリングする。次に、結果として生じる平均化/スケーリングされたセットアクセスカウント値は、キャッシュ108の対応領域に対する現在の再利用期間216として機能する。
【0013】
図3は、いくつかの実施形態による、キャッシュコントローラ112の図2の再利用期間計算コンポーネント200によって使用される再利用期間計算プロセスを示す方法300をより詳細に示す図である。ブロック302において、キャッシュコントローラ112は、キャッシュ108の動作を監視して、キャッシュラインが代表キャッシュセット116の1つに挿入されているかどうかを判定する。ブロック304において、キャッシュコントローラ112は、キャッシュ108の動作を監視して、代表キャッシュセット116の1つのキャッシュラインにアクセスされているかどうかを判定する。キャッシュラインにアクセスされている場合、ブロック306において、セットアクセスカウンタ130の値は、アキュムレータ204に送信されるアクセスされたキャッシュラインを記憶するキャッシュセット116のウェイに関連付けられている。キャッシュラインが挿入又はアクセスされると、ブロック308において、キャッシュコントローラ112は、挿入又はアクセスされたキャッシュラインを記憶するキャッシュセット116のウェイに関連するセットアクセスカウンタ130を所定値(例えば、0)にリセットし、ブロック310において、キャッシュコントローラ112は、キャッシュセット116の他の全てのウェイに関連するセットアクセスカウンタ130をインクリメントする。すなわち、代表キャッシュセット116のウェイにおけるキャッシュラインの挿入又はキャッシュラインへのアクセスは、キャッシュセット116のそのウェイのセットアクセスカウンタ130をリセットすると同時に、キャッシュセット116の他の全てのウェイのセットアクセスカウンタ130も増加させる。代替として、キャッシュコントローラ112は、キャッシュセット116の各ウェイに関連するセットアクセスカウンタ130をインクリメントして、次に、挿入又はアクセスされたキャッシュラインを記憶するキャッシュセット116のウェイに関連するセットアクセスカウンタ130を所定値にリセットする。したがって、このように、キャッシュコントローラ112は、キャッシュラインが挿入されてから又は最後にアクセスされてから、代表キャッシュセット116のキャッシュライン毎に、代表キャッシュセット116に行われたアクセス数を監視する。
【0014】
さらに、ブロック312において、キャッシュコントローラ112は、代表キャッシュセット116のウェイへのキャッシュヒットを監視する(これには、ブロック302で参照されるアクセスを含み得る)。少なくとも1つの実施形態では、代表キャッシュセット116のウェイへのキャッシュヒットは、代表キャッシュセット116に関連するセットアカウントコンポーネント202のコンパレータ208を介して信号が送られ、その場合、キャッシュプローブ(例えば、図2のキャッシュプローブ212)に表されるアドレスと、対応ウェイのタグフィールド118のアドレスと、がマッチすると、対応するコンパレータ208の出力がアサートされ、ひいては、キャッシュプローブが代表キャッシュセット116のそのウェイでヒットしているという信号を送る。そのようなキャッシュヒットに応じて、ブロック314において、ヒットキャッシュセット116に関連するセットアカウントコンポーネント202の選択ロジック214は、ヒットキャッシュセット116のヒットウェイに関連するセットアクセスカウンタ130の値をアキュムレータ204に出力し、その後すぐ、アキュムレータ204は、現在の計算サイクルについて、入力値を以前の累積値に追加する。
【0015】
ブロック312,314のプロセスは、現在の計算反復において、キャッシュ108の対応領域へのK番目のキャッシュヒットが(例えば、ヒットカウンタ207によって)検出されるまで、代表キャッシュセット116へのキャッシュヒット毎に繰り返され、ここで、Kは、1よりも大きいプログラム可能な又は他の方法で指定された整数値である(K>1)。例えば、Kは64に設定でき、それにより、キャッシュ108の対応領域への64番目のキャッシュヒットが発生するまで、セットカウント蓄積プロセスが継続する。ブロック316において、キャッシュ108の領域へのK番目のキャッシュヒットが現在の計算サイクルについて発生したと判定したことに応じて、ブロック318において、平均化/スケーリングコンポーネントは、現在の計算サイクルについて利用されるK回のキャッシュヒットについてアキュムレータ204からの現在の累積値(蓄積値)を平均化し、いくつかの実施形態では、この平均値に係数を掛けることによって、平均値をスケーリングする。K及び任意の倍率が2のべき乗である実施形態では、平均化/スケーリングコンポーネント206は、左右のシフトロジックとして実装することができる。例示すると、Kが以前の例に従って64(2)に設定されると、累積値の平均化は、累積値を6ビットだけ右にシフトし、次に、1ビットだけ左にシフトすることによって行うことができる。より一般的には、Kが2(Mは正の整数)に等しい場合、平均化/スケーリングコンポーネント206は、現在の更新累積値をMビット位置だけ左にシフトして、次に、1つのビット位置だけ右にシフトして、代表キャッシュセットへのK回のキャッシュアクセスについて平均セットアクセスカウントを取得することができる。同様に、2による平均値のスケーリングは、結果として生じる平均値を1ビットだけ左にシフトすることによって実現することができる。次に、結果として生じる平均値(及びスケール値)は、キャッシュ108の対応領域に対する現在(最新)の再利用期間216として設定される。平均値のスケーリングでは、セットの個々のウェイのセットアクセスカウント値に差異があり、その結果、セットのラインの一部に対するセットアクセスカウント値よりも低い再利用期間が生じる可能性がある。以下により詳細に説明するように、所定のラインのセットアクセスカウント値がキャッシュの再利用期間を超えると、そのラインはエビクトされる(evicted)可能性が高い。平均値のスケーリングを使用して、セットのいくつかのラインを間違って優先的に交換するのを防止することができる。現在の計算サイクルが終了すると、ブロック320において、キャッシュコントローラ112は、終了した計算サイクルで使用される様々なコンポーネント(ヒットカウンタ207、セットアクセスカウンタ130、ラインアクセスカウンタ132、及び、アキュムレータ204等)をリセットし、次に、プロセスは、次の計算サイクルのためにブロック312に戻る。
【0016】
図4は、少なくとも1つの実施形態による、代表キャッシュセット116毎にキャッシュコントローラ112によって実装されたセットアカウントコンポーネント202(図2)の代替の実施形態を示す図である。図2の実施形態と同様に、図4のセットアカウントコンポーネント202の代替の実施形態は、対応ウェイのタグフィールド118のアドレスが、受信したキャッシュプローブ212のタグフィールド210のアドレスにマッチすることに応じて、その各々の出力をアサートするように動作可能なコンパレータ208を含み、さらに、その選択制御入力として、コンパレータ208の出力を利用する選択ロジック414(説明し易くするために、マルチプレクサとして示されている)を含む。しかしながら、計算サイクル中に対応するキャッシュセットへの全てのアクセスを考慮するのに十分に大きいセットアクセスカウンタ130のためのカウンタを使用するのではなく、図4の実施形態では、代わりに、キャッシュセット116へのN番目のアクセス毎にセットアクセスカウンタ130をインクリメントすることによって、より小さいカウンタをセットアクセスカウンタ130のために使用することを可能にする。Nによってアクセスのカウントを容易にするために、セットアカウントコンポーネント202の図示した実施形態は、N番目のアクセスカウント404をさらに含み、アクセスカウント404は、現在の計算サイクル中のキャッシュセット116へのアクセス毎にインクリメントされる(又は、アクセス毎に、Nにリセットされ、デクリメントされる)。さらに、キャッシュセット116へのN番目のアクセス毎にのみ、そのキャッシュセットのセットアクセスカウンタ130のインクリメントをトリガするという事実を補償するために、図示した実施形態では、セットアクセスカウンタ130の各々の出力と、選択ロジック414への対応する入力と、の間にシフトレジスタ406及び加算器408を使用して、このサンプリングされたキャッシュアクセスアプローチを調整する。したがって、Nが2のべき乗(2)であると仮定すると、セットアクセスカウンタ130から出力されたセットアクセスカウント値は、jビットだけ左にシフトし、次に、N番目のアクセスカウント404に表される現在のヒットカウントに追加され、この結果として生じる値は、選択ロジック414の対応する入力にフィードされる。次に、選択ロジック414は、コンパレータ208の出力状態に基づいて、アキュムレータ204に出力するために入力値の1つを選択するように動作可能であり、さらには、存在する場合、代表キャッシュセット116の何れかのウェイがN番目のキャッシュプローブ212のターゲットであるかを表す。
【0017】
図5及び図6は、いくつかの実施形態による、交換優先順位割り当てステージ124(図1)の間にキャッシュ管理ポリシー120を実施するためのキャッシュコントローラ112の動作を一緒に示す。図5は、いくつかの実施形態による、優先順位付けサイクル中に、代表キャッシュセット116のラインアクセスカウンタ132を維持する方法500を示す。上述したように、ラインアクセスカウンタ132の各々は、現在の優先順位付けサイクルが開始してから、ラインアクセスカウンタ132に関連するウェイに記憶されたキャッシュラインにアクセスしている回数を表す。したがって、優先順位付けサイクルが開始すると、ブロック502において、キャッシュコントローラ112は、代表キャッシュセット116のウェイへのキャッシュラインの挿入を監視する。そのような挿入に応じて、ブロック504において、キャッシュコントローラ112は、代表キャッシュセット116のターゲットウェイに関連するラインアクセスカウンタ132をリセットする。その後、ブロック506において、キャッシュコントローラ112は、キャッシュラインへのアクセスを監視する。アクセスの検出に応じて、ブロック508において、キャッシュコントローラ112は、アクセスされたキャッシュラインのラインアクセスカウンタ132をインクリメントする。いくつかの実施形態では、ラインアクセスカウンタ132は、ラインアクセスカウンタ132のハードウェア要件を低減するように、1ビット飽和カウンタ又は2ビット飽和カウンタとして実装され、ひいては、(1ビットカウンタの実施形態の場合)最大1回のアクセス、又は、(2ビットカウンタの実施形態の場合)最大3回のアクセスの何れかをカウントする。他の実施形態では、ラインアクセスカウンタ132に3ビット以上のビットを利用して、任意の所定のキャッシュラインへの多くのアクセス数のカウントを容易にする。
【0018】
図6を参照すると、対応するラインアクセスカウンタ132のその現在のラインアクセスカウントに基づいて、及び、現在の再利用期間に基づいて、キャッシュラインへの交換優先順位の割り当てを表す方法600は、いくつかの実施形態に従って示されている。方法600は、キャッシュラインが交換されるという判定等のイベントによって開始し(ブロック602)、現在の優先順位付けサイクル中に新たに挿入されたキャッシュラインの交換優先順位を判定し、これは、以前に存在したキャッシュラインの交換優先順位を再判定するトリガとして機能する。トリガに応じて、優先順位付けプロセスは、ブロック604において、選択シーケンス(例えば、連続順(straight order)選択、疑似ランダム選択等)に従って、キャッシュ108の領域のキャッシュラインを選択することによって開始する。
【0019】
ブロック606において、キャッシュコントローラ112は、選択されたキャッシュラインを記憶するウェイのセットアクセスカウンタ130にアクセスして、それに含まれるカウントを現在の再利用期間216と比較する。セットアクセスカウンタ130が現在の再利用期間216よりも大きくない場合、これは、キャッシュラインが未だ再利用期間に達しておらず、したがって、今後再利用され得ることを示す。したがって、セットアクセスカウンタ130が現在の再利用期間よりも小さい場合、ブロック608において、キャッシュコントローラ112は、選択されたキャッシュラインを記憶するウェイに関連するラインアクセスカウンタ132にアクセスして、それに記憶された値がゼロよりも大きいかどうかを判定する(すなわち、キャッシュラインが挿入されてから再利用されているかどうかを判定する)。そのような場合、いくつかのデータが繰り返してアクセスされる傾向を考慮すると、このキャッシュラインがさらに再利用される可能性がある。したがって、ブロック608において、ラインアクセスカウンタ132がゼロよりも大きいと判定された場合、ブロック610において、キャッシュラインに交換優先レベル3が割り当てられる(以下の説明では、交換優先レベル値が低くなるにつれて、対応キャッシュラインが交換候補として適切でなくなり、ひいては、対応キャッシュラインの交換選択可能性が高くなると仮定している)。そうではなく、ラインアクセスカウンタ132がゼロに等しい場合、これは、キャッシュラインが再利用されていないことを示す。しかしながら、キャッシュラインが再利用期間に未だ達していないため、キャッシュラインが今後再利用される可能性がまだある。そのような場合、ブロック612において、キャッシュラインが交換優先レベル1に割り当てられる(優先レベル1は、交換優先レベル3よりも大きい交換選択可能性を示す)。
【0020】
ブロック606に戻り、セットアクセスカウンタ130によって表されるアクセスカウントが現在の再利用期間よりも大きいと判定された場合、これは、キャッシュラインが既に再利用期間に達しているが、その後、再利用されていないことを意味する。したがって、ブロック614において、キャッシュコントローラ112は、キャッシュラインを記憶するウェイのラインアクセスカウンタ132にアクセスすることによって、キャッシュラインがアクセスされたかどうかを判定する。ラインアクセスカウンタ132がゼロよりも大きい場合、これは、キャッシュラインがキャッシュ108に挿入されてから少なくとも1回再利用され、ひいては、再び再利用される可能性があることを意味する。しかしながら、再利用される可能性は、それが再利用期間を既に過ぎているという事実によって抑制される。したがって、ラインアクセスカウンタ132がゼロよりも大きい場合、ブロック616において、選択されたキャッシュラインが交換優先レベル2に割り当てられる(交換優先レベル2は、交換優先レベル3よりも大きい交換選択可能性があり、交換優先レベル1よりも低い選択可能性があることを示す)。そうではなく、カウントがゼロに等しい場合、これは、キャッシュラインが挿入されてから再利用されておらず、再利用期間を既に過ぎており、ひいては、今後再利用される可能性が低いことを意味する。そのような場合、ブロック618において、キャッシュラインが交換優先レベル0に割り当てられる(この例では、交換優先レベル0は、交換のために選択される可能性が最大であることを表す)。
【0021】
図7は、いくつかの実施形態による、キャッシュ管理ポリシー120のキャッシュライン交換ステージ126(図1)のためのキャッシュコントローラ112の動作を表す方法700を示す図である。以下の説明では、説明のために、交換優先レベルの数値の増加が、対応キャッシュラインを保持する優先度の増加に対応し、逆に、交換優先レベルの数値の減少が、対応キャッシュラインをエビクトする優先度又は可能性の増加に対応することを想起されたい。ブロック702において、ロード動作又はストア動作が行われ、キャッシュ108のキャッシュラインとして記憶されるデータブロックの生成をもたらす。したがって、さらに、ブロック702において、キャッシュコントローラ112は、キャッシュラインに関連するアドレスに基づいて、キャッシュラインを記憶するのに利用可能なキャッシュセット116を判定する。ブロック704において、キャッシュコントローラ112は、識別されたキャッシュセット116に利用可能なウェイがあるかどうかを判定する(すなわち、有効なキャッシュラインを現在記憶していないウェイがあるかどうかを判定する)。そのような場合、ブロック706において、キャッシュコントローラ112は、キャッシュラインをキャッシュセット116の利用可能なウェイに挿入する。図3のブロック302及び図5のブロック502を参照して上述したように、キャッシュセット116が代表キャッシュセットである場合、キャッシュセット116へのこのキャッシュラインの挿入は、特定のカウント動作をトリガする。
【0022】
そうではなく、識別されたキャッシュセット116のウェイが利用可能でない場合、キャッシュコントローラ112は、上述したように、キャッシュ管理ポリシー120の交換優先順位割り当てステージ124の間に割り当てられた交換優先レベルに基づいて、キャッシュセット116の現在のキャッシュラインをエビクトするか、又は、キャッシュラインのキャッシングをバイパスするかどうかを判定する。したがって、ブロック708において、キャッシュコントローラ112は、キャッシュバイパス(「選択キャッシング」又は「キャッシュ削除」としても知られる)がキャッシュ108によってサポートされているかどうかを判定する。キャッシュバイパスがサポートされる場合、ブロック710において、キャッシュコントローラ112は、キャッシュセット116が交換優先レベル0に割り当てられたキャッシュラインを含むかどうかを判定する。サポートされていない場合、ブロック712において、キャッシュコントローラ112は、(例えば、キャッシュラインのキャッシングを防止することによって、又は、記憶のためにキャッシュラインを下位レベルキャッシュに提供することによって)キャッシュ108のキャッシュラインのキャッシングのバイパスを選択することができる。別の実施形態では、キャッシュラインがストリームプロセスの一部であると判定された場合(例えば、現在の再利用期間が小さい場合(0又は1の場合))、同様に、交換優先レベル1のキャッシュラインが存在しない場合、キャッシュバイパスを選択することができる。
【0023】
キャッシュバイパスがサポートされていない場合、又は、キャッシュバイパスを正当化するのに十分に低い優先順位付けレベルのキャッシュラインが存在しない場合、ブロック714において、キャッシュコントローラ112は、最低交換優先レベルを有するキャッシュセット116のキャッシュラインを交換候補として選択する。同じ最低交換優先レベルの2つ以上のキャッシュラインがある場合、キャッシュコントローラ112は、指定された選択順に基づいて、キャッシュラインの1つを疑似ランダムに選択できる、又は、最大のセットアクセスカウントを有するウェイを選択できる。ブロック716において、キャッシュコントローラ112は、選択された候補キャッシュラインを、キャッシュセット116の対応ウェイの新しいキャッシュラインと交換する、又は、エビクトする。このアクションはキャッシュライン挿入であり、図3のブロック302及び図5のブロック502を参照して上述したように、特定のカウント動作をトリガする。
【0024】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0025】
一態様によれば、処理システムのキャッシュを管理するための方法は、キャッシュのキャッシュコントローラによって、キャッシュの領域の再利用期間を判定することを含み、再利用期間は、所定のキャッシュセットの所定のキャッシュラインへのアクセス間のキャッシュの当該キャッシュセットへの平均アクセス数を表す。方法は、キャッシュコントローラによって、再利用期間と、キャッシュラインへのキャッシュヒット数のカウントと、に基づいて、キャッシュの領域のキャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当てることをさらに含む。
【0026】
別の態様によれば、処理システムのキャッシュを管理するための方法は、キャッシュのキャッシュコントローラによって、キャッシュのキャッシュラインを挿入及び交換するためのキャッシュ管理ポリシーを実施することを含み、キャッシュ管理ポリシーは、キャッシュラインが最後にアクセスされてからのキャッシュラインを記憶するウェイを有するキャッシュセットへのアクセス数と、キャッシュの領域に対して判定された再利用期間と、の比較に基づいて、キャッシュの領域内のキャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルの割り当てを提供し、再利用期間は、キャッシュセットの任意の所定のキャッシュラインへのアクセス間の領域の所定のキャッシュセットへの平均アクセス数を表す。
【0027】
さらに別の態様によれば、プロセッサは、複数のキャッシュセットを含むキャッシュを含み、各キャッシュセットは、対応キャッシュラインを記憶するように構成された複数のウェイを有する。プロセッサは、キャッシュのキャッシュラインを挿入及び交換するためのキャッシュ管理ポリシーを実施するように構成されたキャッシュコントローラをさらに備え、キャッシュ管理ポリシーは、キャッシュラインが最後にアクセスされてからのキャッシュラインを記憶するウェイを有するキャッシュセットへのアクセス数と、キャッシュの領域に対して判定された再利用期間と、の比較に基づいて、キャッシュの領域内のキャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルの割り当てを提供し、再利用期間は、キャッシュセットの任意の所定のキャッシュラインへのアクセス間の領域の所定のキャッシュセットへの平均アクセス数を表す。
【0028】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0029】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0030】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2022-06-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
処理システムのキャッシュを管理するための方法であって、
前記キャッシュのキャッシュコントローラが、前記キャッシュの領域の再利用期間を判定することであって、前記再利用期間は、所定のキャッシュセットの所定のキャッシュラインへのアクセス間の前記キャッシュの前記所定のキャッシュセットへの平均アクセス数を表す、ことと、
前記キャッシュコントローラが、前記再利用期間と、前記キャッシュラインへのキャッシュヒット数のカウントと、に基づいて、前記キャッシュの前記領域の前記キャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当てることと、を含む、
方法。
【請求項2】
前記キャッシュに割り当てられた前記交換優先レベルに基づいて、前記キャッシュの前記領域で交換するためのキャッシュラインを選択することをさらに含む、
請求項1の方法。
【請求項3】
前記再利用期間を判定することは、
前記キャッシュの前記領域のキャッシュセットの少なくともサブセットのキャッシュセットにおける各キャッシュヒットに応じて、
前記キャッシュヒットのターゲットであるキャッシュラインを含む前記キャッシュセットのウェイに関連するセットアクセスカウント値を累積値に加算して、更新累積値を生成することと、
前記キャッシュヒットのターゲットであるキャッシュラインを含む前記キャッシュセットのウェイに関連する前記セットアクセスカウント値をリセットすることと、
前記キャッシュセットの他のウェイに関連するセットアクセスカウント値をインクリメントすることと、
前記キャッシュセットの少なくともサブセットへの所定数のキャッシュヒットを検出したことに応じて、
キャッシュヒットの前記所定数によって前記更新累積値を平均化して、平均セットアクセスカウント値を生成することと、
前記平均セットアクセスカウント値に基づいて、再利用期間を判定することと、を含む、
請求項1又は2の方法。
【請求項4】
前記キャッシュセットの少なくともサブセットへの所定数のキャッシュヒットを検出したことに応じて、
前記平均セットアクセスカウント値を所定の要素でスケーリングして、スケーリングされた平均セットアクセスカウント値を生成すること、をさらに含み、
前記再利用期間を判定することは、前記スケーリングされた平均セットアクセスカウント値に基づいて、前記再利用期間を判定することを含む、
請求項3の方法。
【請求項5】
前記キャッシュの前記領域の前記キャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当てることは、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きくないと判定したことに応じて、及び、前記ウェイに挿入されてからの前記キャッシュラインへのアクセス数がゼロよりも大きいと判定したことに応じて、第1の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きくないと判定したことに応じて、及び、前記ウェイに挿入されてからの前記キャッシュラインへの前記アクセス数がゼロに等しいと判定したことに応じて、第2の交換優先レベルを前記キャッシュラインに割り当てることと、を含み、
前記第2の交換優先レベルは、前記第1の交換優先レベルよりも、交換のために選択される可能性が大きいことを表す、
請求項3の方法。
【請求項6】
前記キャッシュの前記領域の前記キャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当てることは、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きいと判定したことに応じて、及び、前記ウェイに挿入されてからの前記キャッシュラインへのアクセス数がゼロよりも大きいと判定したことに応じて、第3の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きいと判定したことに応じて、及び、前記ウェイに挿入されてからの前記キャッシュラインへの前記アクセス数がゼロに等しいと判定したことに応じて、第4の交換優先レベルを前記キャッシュラインに割り当てることと、をさらに含み、
前記第3の交換優先レベルは、前記第1の交換優先レベルよりも、交換のために選択される可能性が大きいことを表し、
前記第4の交換優先レベルは、前記第2の交換優先レベルよりも、交換のために選択される可能性が大きいことを表す、
請求項5の方法。
【請求項7】
前記キャッシュに割り当てられた前記交換優先レベルに基づいて、前記キャッシュの前記領域で交換するためのキャッシュラインを選択することをさらに含む、
請求項6の方法。
【請求項8】
前記キャッシュの前記領域は、前記キャッシュ全体を含む、
請求項1の方法。
【請求項9】
複数のキャッシュセットを含むキャッシュであって、各キャッシュセットは、対応するキャッシュラインを記憶するように構成された複数のウェイを有する、キャッシュと、
前記キャッシュのキャッシュラインを挿入及び交換するためのキャッシュ管理ポリシーを実施するように構成されたキャッシュコントローラと、を備え、
前記キャッシュ管理ポリシーは、前記キャッシュラインが最後にアクセスされてからの前記キャッシュラインを記憶するウェイを有するキャッシュセットへのアクセス数と、前記キャッシュの領域に対して判定された再利用期間と、の比較に基づいて、前記キャッシュの前記領域内のキャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルの割り当てを提供し、
前記再利用期間は、前記領域の所定のキャッシュセットの所定のキャッシュラインへのアクセス間の前記所定のキャッシュセットへの平均アクセス数を表す、
プロセッサ。
【請求項10】
前記キャッシュは、
複数のセットアクセスカウンタであって、各セットアクセスカウンタは、前記キャッシュの前記領域のキャッシュセットの少なくともサブセットのキャッシュセットの対応するウェイに関連付けられており、前記対応するウェイに記憶された前記キャッシュラインが挿入されてからの、又は、最後にアクセスされてからの前記キャッシュセットへのアクセス数を表すセットアクセスカウント値を記憶するように構成されている、複数のセットアクセスカウンタと、
前記キャッシュヒットのターゲットである前記キャッシュセットの少なくともサブセットにおけるキャッシュセットの各ウェイからの前記セットアクセスカウント値を累積値に累積するように構成されたアキュムレータと、
前記キャッシュセットの少なくともサブセットへの所定数のキャッシュヒットを検出したことに応じて、キャッシュヒットの前記所定数による前記累積値の平均に基づいて、前記再利用期間を判定するように構成された平均化/スケーリングコンポーネントと、を備える、
請求項のプロセッサ。
【請求項11】
前記キャッシュは、
複数のラインアクセスカウンタを備え、各ラインアクセスカウンタは、前記キャッシュセットの少なくともサブセットのキャッシュセットの対応するウェイに関連付けられており、前記対応するウェイに記憶された前記キャッシュラインへのアクセス数を表すラインアクセスカウント値を記憶するように構成されている、
請求項10のプロセッサ。
【請求項12】
前記キャッシュコントローラは、
前記キャッシュラインに関連する前記セットアクセスカウント値と前記再利用期間との比較に基づいて、及び、前記キャッシュラインを記憶する前記ウェイの前記ラインアクセスカウント値がゼロ以上であるかどうかの判定に基づいて、前記キャッシュの前記領域のキャッシュラインの少なくともサブセットの各キャッシュラインに交換優先レベルを割り当てることによって、前記キャッシュ管理ポリシーを実施するように構成されている、
請求項11のプロセッサ。
【請求項13】
前記キャッシュコントローラは、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きくないと判定したことに応じて、及び、前記キャッシュラインに関連するラインアクセスカウントがゼロよりも大きいと判定したことに応じて、第1の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きくないと判定したことに応じて、及び、前記キャッシュラインに関連するラインアクセスカウントがゼロに等しいと判定したことに応じて、第2の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きいと判定したことに応じて、及び、前記キャッシュラインに関連する前記ラインアクセスカウントがゼロよりも大きいと判定したことに応じて、第3の交換優先レベルを前記キャッシュラインに割り当てることと、
前記キャッシュラインに関連する前記セットアクセスカウント値が前記再利用期間よりも大きいと判定したことに応じて、及び、前記ラインアクセスカウントがゼロに等しいと判定したことに応じて、第4の交換優先レベルを前記キャッシュラインに割り当てることと、
によって、交換優先レベルをキャッシュセットのキャッシュラインに割り当てるように構成されており、
前記第2の交換優先レベルは、前記第1の交換優先レベル及び前記第3の交換優先レベルよりも、交換のために選択される可能性が大きいことを表し、
前記第3の交換優先レベルは、前記第1の交換優先レベルよりも、交換のために選択される可能性が大きいことを表し、
前記第4の交換優先レベルは、前記第2の交換優先レベルよりも、交換のために選択される可能性が大きいことを表す、
請求項12のプロセッサ。
【請求項14】
前記キャッシュコントローラは、
前記キャッシュセットの各キャッシュラインに割り当てられた交換優先レベルの比較に基づいて交換用のキャッシュセットのキャッシュラインを選択することによって、前記キャッシュ管理ポリシーを実施するように構成されている、
請求項13のプロセッサ。
【請求項15】
前記キャッシュヒットの前記所定数は2Mに等しく、Mは1よりも大きい整数であり、
前記平均化/スケーリングコンポーネントは、前記累積値をMビット位置まで右にシフトすることによって、前記再利用期間を判定するように構成されている、
請求項10のプロセッサ。
【国際調査報告】