(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-30
(54)【発明の名称】再参照間隔予測キャッシュ置換ポリシーのための再参照インジケータ
(51)【国際特許分類】
G06F 12/123 20160101AFI20240920BHJP
G06F 12/127 20160101ALI20240920BHJP
【FI】
G06F12/123
G06F12/127
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024518141
(86)(22)【出願日】2022-09-02
(85)【翻訳文提出日】2024-04-25
(86)【国際出願番号】 US2022042470
(87)【国際公開番号】W WO2023055530
(87)【国際公開日】2023-04-06
(32)【優先日】2021-09-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール ジェイ. モイヤー
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205PP03
5B205QQ02
5B205QQ11
5B205TT02
5B205VV02
(57)【要約】
キャッシュ動作を行うための技術が提供される。本技術は、キャッシュのキャッシュラインについての再参照を追跡することと、追い出しが発生することを検出することと、再参照指標に基づいて、キャッシュから追い出されるキャッシュラインを選択することと、を含む。
【選択図】
図4
【特許請求の範囲】
【請求項1】
方法であって、
キャッシュのキャッシュラインに対する再参照を追跡することと、
追い出しが発生することを検出することと、
再参照指標に基づいて、前記キャッシュから追い出されるキャッシュラインを選択することと、を含む、
方法。
【請求項2】
前記再参照は、キャッシュラインを前記キャッシュに取り込むアクセスの後の前記キャッシュラインへのアクセスを含む、
請求項1の方法。
【請求項3】
前記再参照を追跡することは、
キャッシュラインが最初に前記キャッシュに取り込まれたことに応じて、再参照カウンタをデフォルト値に設定し、再参照インジケータを、前記キャッシュラインが再参照されていないという指標を含むように設定することと、を含む、
請求項1の方法。
【請求項4】
前記デフォルト値は、最小再参照カウンタ値と最大再参照カウンタ値との間の中間値である、
請求項3の方法。
【請求項5】
前記再参照を追跡することは、
前記キャッシュラインが再参照されていないという指標を有する前記キャッシュ内のキャッシュラインについて、前記キャッシュラインへのアクセスを検出することと、
前記アクセスを検出したことに応じて、前記キャッシュラインが再参照されたという指標を設定することと、を含む、
請求項1の方法。
【請求項6】
再参照指標に基づいて、前記キャッシュから追い出されるキャッシュラインを選択することは、
第1のキャッシュラインについての第1の再参照カウント及び第2のキャッシュラインについての第2の再参照カウントが、前記第1のキャッシュライン及び前記第2のキャッシュラインがタイブレーカ中であると見なされることを示すと判別することと、
前記判別したことに応じて、前記再参照指標に基づいて、前記第1のキャッシュライン及び前記第2のキャッシュラインのうち追い出されるキャッシュラインを選択することと、を含む、
請求項1の方法。
【請求項7】
前記再参照指標に基づいて、前記第1のキャッシュライン及び前記第2のキャッシュラインのうち追い出されるキャッシュラインを選択することは、
前記第1のキャッシュラインについての再参照指標が、前記第1のキャッシュラインが再参照されたことを示しており、前記第2のキャッシュラインについての再参照指標が、前記第2のキャッシュラインが再参照されていないことを示していると判別することと、
前記判別したことに応じて、前記第1のキャッシュラインを、追い出すために選択することと、を含む、
請求項6の方法。
【請求項8】
前記再参照指標に基づいて、前記第1のキャッシュライン及び前記第2のキャッシュラインのうち追い出されるキャッシュラインを選択することは、
前記第1のキャッシュラインについての再参照指標が、前記第1のキャッシュラインが再参照されたことを示しており、前記第2のキャッシュラインについての再参照指標が、前記第2のキャッシュラインが再参照されていないことを示していると判別することと、
前記判別したことに応じて、前記第2のキャッシュラインを、追い出すために選択することと、を含む、
請求項6の方法。
【請求項9】
前記再参照を追跡することは、
キャッシュラインを前記キャッシュのセットに記憶するために追い出しが発生すると判別したことに応じて、前記セットのキャッシュラインが、対応するキャッシュラインが十分に遠い将来において再参照されると予測されるという指標を含む再参照カウントを有していないことを検出することと、
検出したことに応じて、前記セットの少なくとも1つのキャッシュラインが、前記少なくとも1つのキャッシュラインが十分に遠い将来において再参照されると予測されるという指標を含む再参照カウントを含むように、前記セットの前記キャッシュラインについての各カウントをインクリメントすることと、を含む、
請求項1の方法。
【請求項10】
複数のテストセットのために実行されたテストに基づいて、前記キャッシュの前記キャッシュラインのための動作方式を選択することを含む、
請求項1の方法。
【請求項11】
システムであって、
キャッシュラインを記憶するように構成されたキャッシュと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
前記キャッシュラインの再参照を追跡することと、
追い出しが発生することを検出することと、
再参照指標に基づいて、前記キャッシュから追い出されるキャッシュラインを選択することと、
を行うように構成されている、
システム。
【請求項12】
前記再参照は、キャッシュラインを前記キャッシュに取り込むアクセスの後の前記キャッシュラインへのアクセスを含む、
請求項11のシステム。
【請求項13】
前記再参照を追跡することは、
キャッシュラインが最初に前記キャッシュに取り込まれたことに応じて、再参照カウンタをデフォルト値に設定し、再参照インジケータを、前記キャッシュラインが再参照されていないという指標を含むように設定することと、を含む、
請求項11のシステム。
【請求項14】
前記デフォルト値は、最小再参照カウンタ値と最大再参照カウンタ値との間の中間値である、
請求項13のシステム。
【請求項15】
前記再参照を追跡することは、
前記キャッシュラインが再参照されていないという指標を有する前記キャッシュ内のキャッシュラインについて、前記キャッシュラインへのアクセスを検出することと、
前記アクセスを検出したことに応じて、前記キャッシュラインが再参照されたという指標を設定することと、を含む、
請求項11のシステム。
【請求項16】
再参照指標に基づいて、前記キャッシュから追い出されるキャッシュラインを選択することは、
第1のキャッシュラインについての第1の再参照カウント及び第2のキャッシュラインについての第2の再参照カウントが、前記第1のキャッシュライン及び前記第2のキャッシュラインがタイブレーカ中であると見なされることを示すと判別することと、
前記判別したことに応じて、前記再参照指標に基づいて、前記第1のキャッシュライン及び前記第2のキャッシュラインのうち追い出されるキャッシュラインを選択することと、を含む、
請求項11のシステム。
【請求項17】
前記再参照指標に基づいて、前記第1のキャッシュライン及び前記第2のキャッシュラインのうち追い出されるキャッシュラインを選択することは、
前記第1のキャッシュラインについての再参照指標が、前記第1のキャッシュラインが再参照されたことを示しており、前記第2のキャッシュラインについての再参照指標が、前記第2のキャッシュラインが再参照されていないことを示していると判別することと、
前記判別したことに応じて、前記第1のキャッシュラインを、追い出すために選択することと、を含む、
請求項16のシステム。
【請求項18】
前記再参照指標に基づいて、前記第1のキャッシュライン及び前記第2のキャッシュラインのうち追い出されるキャッシュラインを選択することは、
前記第1のキャッシュラインについての再参照指標が、前記第1のキャッシュラインが再参照されたことを示しており、前記第2のキャッシュラインについての再参照指標が、前記第2のキャッシュラインが再参照されていないことを示していると判別することと、
前記判別したことに応じて、前記第2のキャッシュラインを、追い出すために選択することと、を含む、
請求項16のシステム。
【請求項19】
前記再参照を追跡することは、
キャッシュラインを前記キャッシュのセットに記憶するために追い出しが発生すると判別したことに応じて、前記セットのキャッシュラインが、対応するキャッシュラインが十分に遠い将来において再参照されると予測されるという指標を含む再参照カウントを有していないことを検出することと、
検出したことに応じて、前記セットの少なくとも1つのキャッシュラインが、前記少なくとも1つのキャッシュラインが十分に遠い将来において再参照されると予測されるという指標を含む再参照カウントを含むように、前記セットの前記キャッシュラインについての各カウントをインクリメントすることと、を含む、
請求項11のシステム。
【請求項20】
前記キャッシュコントローラは、
複数のテストセットのために実行されたテストに基づいて、前記キャッシュの前記キャッシュラインのための動作方式を選択するように構成されている、
請求項11のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年9月30日に出願された米国特許出願第17/490,820号の利益を主張し、参照によって、本明細書に十分に記載されているように組み込まれる。
【背景技術】
【0002】
現代のマイクロプロセッサは、高スループットのための多様な特徴を実装する。いくつかのそのような特徴は、高性能メモリ動作のための高度に進歩したキャッシュを有することを含む。このような特徴に対する改良が絶えず行われている。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
【
図1】本開示の1つ以上の実施形態を実装することができる例示的なデバイスのブロック図である。
【
図2】
図1のプロセッサ内に配置された命令実行パイプラインのブロック図である。
【
図3A】一例による、キャッシュのブロック図である。
【
図3B】別の一例による、キャッシュの別のブロック図である。
【
図4】一例による、キャッシュ動作を実行するための方法のフロー図である。
【発明を実施するための形態】
【0005】
キャッシュ動作を行うための技術が提供される。本技術は、キャッシュのキャッシュラインについての再参照(re-references)を追跡することと、追い出し(エビクト)(eviction)が発生することを検出することと、再参照指標に基づいてキャッシュからの追い出しのためのキャッシュラインを選択することと、を含む。
【0006】
図1は、本開示の態様が実装されている例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含む。デバイス100は、1つ以上のプロセッサ102、メモリ階層104、記憶デバイス106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含んでもよい。デバイス100は、
図1に示されていない追加の構成要素を含んでもよいことを理解されたい。
【0007】
1つ以上のプロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィック処理ユニット(graphics processing unit、GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUである。いくつかの例では、1つ以上のプロセッサ102は、任意の数のプロセッサを含む。いくつかの例では、1つ以上のプロセッサ102は、1つ以上のプロセッサチップを含む。いくつかの例では、各プロセッサチップは、1つ以上のプロセッサコアを含む。
【0008】
メモリ階層104の一部又は全ては、1つ以上のプロセッサ102のうち1つ以上と同じダイ上に部分的又は完全に位置してもよいし、1つ以上のプロセッサ102とは別に部分的又は完全に位置してもよい。メモリ階層104は、例えば、1つ以上のキャッシュ、1つ以上の揮発性メモリ、1つ以上の不揮発性メモリ、及び/又は、他のメモリを含み、1つ以上のタイプの1つ以上のランダムアクセスメモリ(RAM)を含んでもよい。様々な例では、メモリ階層104のキャッシュのうち1つ以上は、1つ以上の関連するキャッシュコントローラを含む。いくつかの例では、メモリ階層104の要素は、1つ以上のプロセッサ102の要素を含む階層に配置される。
【0009】
記憶デバイス106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含む。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含む。
【0010】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であること、並びに、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合に、同じ方式で動作することに留意されたい。
【0011】
図2は、
図1の1つ以上のプロセッサ102内に配置された命令実行パイプライン200のブロック図である。様々な例では、
図1の1つ以上のプロセッサ102のプロセッサコアのうち何れかは、
図2に示されるように実装される。
【0012】
命令実行パイプライン200は、メモリから命令を取り出して命令を実行し、データをメモリに出力し、レジスタファイル218内のレジスタ等の命令実行パイプライン200内の要素の状態を変更する。
【0013】
命令実行パイプライン200は、命令キャッシュ202を介してシステムメモリ(メモリ104等)から命令をフェッチするように構成された命令フェッチユニット204と、フェッチされた命令をデコードするように構成されたデコーダ208と、命令を処理するための計算を実行するように構成された機能ユニット216と、データキャッシュ220を介してシステムメモリからデータをロードするか又はシステムメモリにデータを記憶するように構成されたロード記憶ユニット214と、命令のための作業データを記憶するレジスタを含むレジスタファイル218と、を含む。リオーダバッファ210は、現在インフライトである命令を追跡し、インフライト中のアウトオブオーダ実行を可能にするにもかかわらず、命令のインオーダリタイアを保証する。「インフライト命令」は、リオーダバッファ210によって受信されたが、プロセッサのアーキテクチャ状態にコミットされた結果(例えば、レジスタファイルに書き込まれた結果等)を未だ有していない命令を指す。リザベーションステーション212は、インフライト命令を維持し、命令オペランドを追跡する。全てのオペランドが特定の命令の実行の準備ができると、リザベーションステーション212は、実行のために機能ユニット216又はロード/記憶ユニット214に命令を送信する。完了した命令は、リオーダバッファ210内でリタイアのためにマークされ、リオーダバッファキュー210の先頭にある場合にリタイアされる。リタイアとは、命令の結果をプロセッサのアーキテクチャ状態にコミットさせる動作を指す。例えば、加算結果を加算命令によってレジスタに書き込むこと、ロードされた値をロード命令によってレジスタに書き込むこと、又は、命令フローを分岐命令によって新しい位置にジャンプさせることは、全て命令のリタイアの例である。
【0014】
命令実行パイプライン200の様々な要素は、共通データバス222を介して通信を行う。例えば、機能ユニット216及びロード/記憶ユニット214は、共通データバス222に結果を書き込み、この結果は、依存命令の実行のためにリザベーションステーション212によって、及び、実行を終了したインフライト命令の最終処理結果としてリオーダバッファ210によって読み出されてもよい。また、ロード/記憶ユニット214は、共通データバス222からデータを読み出す。例えば、ロード/記憶ユニット214は、完了した命令からの結果を共通データバス222から読み出し、この結果を、記憶命令用のデータキャッシュ220を介してメモリに書き込む。
【0015】
メモリ階層104の様々なキャッシュのうち1つ以上は、キャッシュライン置換ポリシーを実施して、追い出しが発生する場合に何れのキャッシュラインを追い出すかを決定する。いくつかの例では、追い出しは、キャッシュラインがキャッシュに記憶されるべきであり、キャッシュラインのために利用可能なスロットがない場合に発生する。セットアソシエイティブキャッシュ等のいくつかの例では、各キャッシュラインは、各々が複数の「ウェイ」を含む特定のセット(多くの場合、キャッシュラインアドレスのビットの何らかの組み合わせによって識別される)に記憶されることが許可される。セットとウェイの組み合わせは、キャッシュ内のスロットを識別する。特定のセット内の全てのキャッシュラインが使用中である(例えば、無効ではない)場合、別のキャッシュラインがそのセットに記憶される場合に、何れかのキャッシュラインが追い出される。いくつかの例では、キャッシュコントローラは、追い出しポリシーに基づいて、追い出されるキャッシュラインを識別する。
【0016】
置換ポリシーの一例は、再参照間隔予測(re-reference interval prediction、RRIP)置換ポリシーである。この置換ポリシーは、キャッシュライン再参照を追跡し、これらの再参照に基づいて追い出しのためのキャッシュラインを識別することを試みる。再参照は、キャッシュラインをキャッシュに取り込むミスを引き起こす最初の参照に続くキャッシュラインへのアクセスである。
【0017】
いくつかの例では、RRIP置換ポリシーは、キャッシュラインごとにカウンタを用いて実施される。キャッシュラインがキャッシュに取り込まれる場合に、カウンタ値は、いくつかの例では、カウンタについて可能な最小値と最大値との間の中間値である初期値に設定される。カウンタによって記憶される値は、本明細書では「再参照カウント(re-reference count)」と呼ばれることがある。その後、キャッシュラインが再び参照される場合(例えば、関連付けられたロード命令又はストア命令に対して実行される読み出し又は書き込みを介して)、カウンタ値は、関連付けられたキャッシュラインが「最近」再参照されたことを示すように更新される(例えば、値を0にリセットすることによって)。
【0018】
セットに記憶されるキャッシュラインに対して追い出しが発生する場合に、カウンタに関連付けられたキャッシュラインが、十分に遠い将来に再参照されると予測されることを示すと考えられる値を有する1つのカウンタがある場合、関連付けられたキャッシュラインが追い出しされるキャッシュラインとして選択される。関連付けられたカウンタが、キャッシュラインが十分に遠い将来に再参照されると予測されることを示すキャッシュラインがセット内にない場合、各カウンタは、関連付けられたキャッシュラインが十分に遠い将来に再参照されると予測されることを示すカウンタが存在するまでインクリメントされる。いくつかの例では、このインクリメントは、最も高いカウンタ値と、関連付けられたキャッシュラインが十分に遠い将来に再参照されると予測されることを示すカウンタに関連付けられた値と、の間の差を全てのカウンタに加算する単純な加算演算である。いくつかの例では、キャッシュラインが十分に遠い将来に再参照されると予測されることを示す値は、何らかの十分に高い値である。いくつかの例では、値は、カウンタがカウントすることができる最大値である。他の例では、値は、本明細書で閾値又は単にスレショルドと呼ばれることがある異なる値である。
【0019】
上記の方式では、セット内の複数のキャッシュラインが、同じであり、関連付けられたキャッシュラインが十分に遠い将来に再参照されると予測されることを示すと考えられる関連付けられたカウンタ値を有することが可能である。そのような場合、関連付けられたキャッシュラインが十分に遠い将来に再使用されると予測されることを示す値を有するキャッシュラインのうち何れのキャッシュラインが追い出しのために選択されるかを決定するために、任意の技術的に実現可能なタイブレーカ(tiebreaker)を適用することが可能である。しかしながら、このようなカウンタは、2つの異なる方法でそのような値に到達することが可能であることに留意されたい。1つの方法では、カウンタに関連するキャッシュラインは、キャッシュに取り込まれた後に再参照されることはなく、単に「時を経る(aged)」。別の方法では、キャッシュラインが1回以上再参照され、その後「時を経る」。したがって、決して再参照されないキャッシュラインのカウンタは、再参照されたカウンタと同じ値を有することができる。したがって、キャッシュラインが十分に遠い将来に再参照されると予測されることを示すカウンタ値が実際に再使用されたか又は二度と再使用されなかったかに関する曖昧さが存在する。
【0020】
このため、本明細書では、再参照されたキャッシュラインと再参照されなかったキャッシュラインとを区別するための技術が提供される。具体的には、キャッシュラインがキャッシュに取り込まれると、再参照インジケータ(いくつかの例では1ビットである)が、キャッシュラインが再参照されていないことを示すように設定される。キャッシュラインが再参照される場合に、再参照インジケータは、キャッシュラインが再参照されたことを示すように設定される。
【0021】
概して、キャッシュは、タイブレーカの役割において再参照インジケータを使用して、キャッシュラインが十分に遠い将来に再参照されると予測されることをカウンタが示す何れかのキャッシュラインを選択する。タイブレーカは、複数のキャッシュラインのカウンタが同等の値を有する場合に発生する。いくつかの例では、キャッシュは、カウンタが等しい値を有する2つ以上のキャッシュラインから、キャッシュラインが再参照されていないことを再参照インジケータが示すキャッシュラインを、追い出しのために選択する。他の例では、キャッシュは、カウンタが等しい値を有する2つ以上のキャッシュラインから、キャッシュラインが再参照されたことを再参照インジケータが示すキャッシュラインを選択する。
【0022】
いくつかの例では、キャッシュは、少なくとも2つのモードで動作することができる。1つのモードでは、タイブレーカの場合、キャッシュは、再参照されていないキャッシュラインを追い出し、別のモードでは、タイブレーカの場合、キャッシュは、再参照されたキャッシュラインを追い出す。いくつかの例では、キャッシュは、これら2つのモード間で切り替わる。いくつかの例では、この切り替えは、適応ポリシーに従って発生する。適応ポリシーでは、キャッシュは2つのテストセットを維持する。第1のテストセットにおいて、キャッシュは、タイブレーカを用いて、キャッシュが再参照されていないキャッシュラインを追い出すように、そのテストセットを動作させる。第2のテストセットにおいて、キャッシュは、タイブレーカを用いて、キャッシュが再参照されたキャッシュラインを追い出すように、そのテストセットを動作させる。第1のテストセット及び第2のテストセットにおいて観測された性能メトリックに基づいて、キャッシュは、それらのテストセットのうち何れかに関連付けられたタイブレーカを適用する。具体的には、キャッシュは、「より良好に実行する(performs better)」テストセットに関連付けられたタイブレーカを選択する。いくつかの例では、より良好に実行することは、より少ない数のミスを示すことを意味する。いくつかの例では、より良好に実行することは、テストセットについての性能メトリックが他のテストセットについての性能メトリックよりも低いことを意味する。いくつかの例では、キャッシュは、ミスが発生した場合に性能メトリックに値を加算することによって性能メトリックを決定し、値は、ミスの性能影響に関する重み値である。いくつかの例では、性能メトリックは、ミスの結果として性能がどれだけ損なわれるかである。性能の低下は、クロックサイクルカウント当たりの命令が低くなる性能等のように、技術的に実現可能な任意の方法又は他の技術的に実現可能な任意の方法で測定することができる。
【0023】
図3Aは、一例による、再参照インジケータを用いた再参照間隔予測技術を実装するキャッシュ300を示している。いくつかの例では、キャッシュ300は、
図1のメモリ階層104のキャッシュのうち何れかであり、他の例では、キャッシュ300は、キャッシュメモリ以外のメモリ等のように、任意の技術的に実現可能なコンテキストで使用される。
【0024】
キャッシュ300は、複数のセット302を含む。キャッシュコントローラ306は、キャッシュ300のセット302の動作を制御する。セット302は、複数のキャッシュライン301を含む。キャッシュコントローラ306は、セット内の複数のキャッシュライン301について、再参照間隔カウンタ308及び再参照インジケータ310を維持する。再参照間隔カウンタ308は、関連付けられたキャッシュライン301について、再参照間隔予測を記憶する。この予測は、キャッシュライン301が将来どのくらい長く再参照されると予測されるかを示す。また、各キャッシュライン301は、関連付けられたキャッシュライン301について、そのキャッシュライン301が再参照された(すなわち、第1の参照に応じてキャッシュに取り込まれた後に再び参照された)かどうかを示す関連付けられた再参照インジケータ310を有する。
【0025】
キャッシュライン301をキャッシュ300に取り込んだ後(例えば、ミスの結果として)、キャッシュコントローラ306は、そのキャッシュライン301のカウンタ308の値をデフォルト値(いくつかの例では、0)に設定し、キャッシュライン301が再参照されていないことを示すように再参照インジケータ310を設定する。キャッシュ300内のキャッシュライン301が参照される場合に、キャッシュコントローラ306は、対応するカウンタ308の値をゼロに設定し、再参照インジケータ310を、キャッシュライン301が再参照されたことを示すように設定する。
【0026】
キャッシュコントローラ306は、要求の各キャッシュライン301についてカウンタ308を調べることによって、特定のセット302についての追い出し要求に対処する。キャッシュコントローラ306は、キャッシュライン301が「十分に遠い将来(in the sufficiently distant future)」に再参照されると予測されることを示す関連カウンタ308を有する追い出しのために、キャッシュライン301を選択する。いくつかの例では、そのようなカウンタの値は、そのカウンタの最大可能値である。そのようなカウンタ308が存在しない場合、キャッシュコントローラ306は、少なくとも1つのカウンタ308が、関連付けられたキャッシュライン301が十分に遠い将来に再参照されると予測されることを示す値を有するまで、セット302の全てのカウンタ308をインクリメントする。
【0027】
複数のキャッシュライン301が、関連付けられたキャッシュライン301が十分に遠い将来に再参照されると予測されることを示すカウンタ308を有する場合、キャッシュコントローラ306は、タイブレーク機構を使用して追い出しのためのキャッシュライン301を選択する。タイブレーク機構は、再参照インジケータ310の値に基づく。2つ以上のキャッシュライン301が十分に遠い将来に再参照されると予測されるいくつかの動作モードでは、キャッシュコントローラ306は、再参照されていないキャッシュライン301を追い出しのために選択する。2つ以上のキャッシュライン301が十分に遠い将来に再参照されると予測される別の動作モードでは、キャッシュコントローラは、再参照されたキャッシュライン301を追い出しのために選択する。いくつかの例では、キャッシュコントローラ306は、これらのモード間で切り替わる。いくつかの例では、この切り替えは、いくつかのキャッシュセット302がテストセットとして指定され、これらのテストセットが、タイの場合に再参照されていないキャッシュライン301が追い出されるモード、及び、タイの場合に再参照されたキャッシュライン301が追い出されるモードの性能をテストするテスト機構に基づく。
【0028】
図3Bは、テストセット及び非テストセットを有するキャッシュを示すブロック図である。キャッシュコントローラ356は、
図3Aのキャッシュコントローラ306と同様である。キャッシュ350は、
図3Aのキャッシュ300と同様である。キャッシュ350は、テストセット352及び非テストセット354を含む。キャッシュコントローラは、(1)タイの場合に再参照されていないキャッシュライン351が追い出されるようにテストセット352を動作させ、キャッシュコントローラは、(2)タイの場合に再参照されたキャッシュライン351が追い出されるモードでテストセット352を動作させる。キャッシュコントローラ356は、これらのテストセット352の動作結果を観察し、何れの方式がより良好に実行するかに従って非テストセット354を動作させる。いくつかの例では、より良好に実行することは、より少ないミスが観察されることを意味するが、性能の任意の尺度が使用され得る。いくつかの例では、より良好に実行することは、異なるテストセット352を使用するソフトウェアよりも、特定のテストセット352を使用するソフトウェアに対して、サイクルごとのより良好な命令が観察されることを意味する。一例では、テストセット352(1)がより良好に実行することをキャッシュコントローラ356が観察した場合、キャッシュコントローラは、テストセット352(1)が動作される方法に従って非テストセット354を動作させ、テストセット352(2)がより良好に実行することをキャッシュコントローラ356が観察した場合、キャッシュコントローラ356は、テストセット352(2)が動作される方法に従って非テストセット354を動作させる。
【0029】
図4は、一例による、キャッシュ置換動作を実行するための方法400のフロー図である。
図1~
図3Bのシステムに関して説明したが、当業者であれば、任意の技術的に実現可能な順序で方法400のステップを行うように構成された任意のシステムが本開示の範囲に含まれることを理解するであろう。
【0030】
ステップ402において、キャッシュコントローラ306は、キャッシュ300のキャッシュラインに対する再参照を追跡する。キャッシュラインへの再参照は、(例えば、ミスに起因して)キャッシュラインをキャッシュに取り込むアクセスの後のキャッシュラインへのアクセスを含む。一例では、メモリアクセスは、特定のメモリアドレスに対して発生し、そのメモリアドレスを含むキャッシュラインは、キャッシュに記憶されない。したがって、ミスが発生すると、キャッシュコントローラ306は、別のキャッシュ等の別のソースからキャッシュラインをフェッチすることによってミスに対処する。
【0031】
いくつかの例では、キャッシュラインの再参照を追跡することは、以下を含む。キャッシュラインが最初にキャッシュに取り込まれる場合に、キャッシュコントローラ306は、再参照カウンタ308をデフォルト値に設定し、キャッシュラインが再参照されていないという指標を含むように再参照インジケータを設定する。いくつかの例では、デフォルト値は、最小値と最大値との間の中間値である。いくつかの例では、デフォルト値は、最小値と最大値との間の平均である。
【0032】
いくつかの例では、追跡することは、キャッシュラインの再参照に応じて、再参照カウンタの値をゼロの値に設定することと、キャッシュラインが参照されたことを示すように再参照インジケータを設定することと、を含む。いくつかの例では、追跡することは、キャッシュラインが追い出される必要があることに応じて、キャッシュラインが十分に遠い将来に再参照されると予測されることを再参照カウンタが示す(指示する)かどうかを識別することを含む。いくつかの例では、再参照カウンタは、再参照カウンタがその最大値を有する場合にこの指示を行う。他の例では、再参照カウンタは、再参照カウンタが少なくとも閾値を有する場合にこの指示を行う。そのような指示を有するカウンタがない場合、キャッシュコントローラ306は、追い出しが発生しているセット(すなわち、取り込まれているキャッシュラインが記憶されるセット)の全てのカウンタを、少なくとも1つのそのような再参照カウンタ308が、キャッシュラインが十分に遠い将来に再参照されると予測されることを示すように、同等の値だけインクリメントする。
【0033】
ステップ404において、キャッシュコントローラ306は、追い出しが発生することを検出する。いくつかの例では、キャッシュラインがセット302に取り込まれ(例えば、ミスにより)、セット302に空きスロットがない場合に、追い出しが発生する。この場合、キャッシュコントローラ306は、追い出しのためにキャッシュライン301を選択する必要がある。
【0034】
ステップ406において、キャッシュコントローラ306は、再参照指標に基づいて追い出しのためのキャッシュラインを選択する。より具体的には、キャッシュラインが追い出されるセット302内の少なくとも2つのキャッシュラインが、キャッシュラインが十分に遠い将来に再参照されると予測されるという指標を有する場合、キャッシュコントローラ306は、タイブレーカを実行し、追い出しのためにそれらのキャッシュライン301のうち何れかを選択する。いくつかの例では、タイブレーカは、再参照インジケータ310の値に依存する。いくつかの動作モード又はいくつかの実施形態では、キャッシュコントローラ306は、タイブレーカとして、キャッシュライン301が再参照されていないことを再参照インジケータ310が示すキャッシュライン301を選択する。いくつかの動作モード又はいくつかの実施形態では、キャッシュコントローラ306は、タイブレーカとして、キャッシュライン301が再参照されたことを再参照インジケータ310が示すキャッシュライン301を選択する。いくつかの例では、キャッシュコントローラ306は、上記の2つのモードのうち何れのモードがより有益であるかをテストするためのテスト機構を実装する。より具体的には、キャッシュコントローラ306は、再参照されないものとして示されるキャッシュライン301が追い出しのために選択されるモードをテストするために1つ以上のセット302を指定し、再参照されるものとして示されるキャッシュライン301が追い出しのために選択されるモードをテストするために1つ以上の他のセット302を指定する。キャッシュコントローラは、より良好に実行するモードで残りのセット302を動作させる。任意の性能メトリックが使用され得るが、いくつかの例では、ミスの数、又は、ミスの重み付けされた数が使用される。ミスの数を用いて、キャッシュコントローラ306は、キャッシュ300を動作させるために、より少ないミスで動作するモードを選択する。ミスの重み付けされた数を用いて、キャッシュコントローラ306は、発生する各ミスと共に、そのミスがどれだけ「影響力がある」かを示す重みを性能メトリック値に累積する。キャッシュコントローラ306は、最も低い性能メトリック値でキャッシュ300を動作させる。
【0035】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに他の特徴及び要素との様々な組み合わせで使用されてもよい。
【0036】
図に示された様々な要素は、ハードウェア(例えば、回路)、プロセッサ上で実行されるソフトウェア、又は、ハードウェアとソフトウェアの組み合わせとして実装可能である。様々な例では、命令実行パイプライン200及びコンピュータシステム100の図示されたユニット、並びに、キャッシュ300、セット302、キャッシュライン301、キャッシュコントローラ306、カウンタ308、及び、再参照インジケータ310等の各ブロックは、ハードウェア(例えば、ハードウェアプロセッサ及び/又は回路)、ソフトウェア又はそれらの組み合わせとして実装可能である。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施され得る。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリスト等の他の中間データ(そのような命令は、コンピュータ可読記憶媒体に記憶させることが可能である)の結果を使用して製造プロセスを構成することによって製造され得る。そのような処理の結果はマスクワークであってもよく、このマスクワークをその後の半導体製造プロセスにおいて使用して、実施形態の態様を実施するプロセッサを製造する。
【0037】
本明細書に提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実施のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施され得る。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
【国際調査報告】