(57)【要約】処理システム（１００，３００）は、キャッシュラインの第１サブセット（３２０）と、キャッシュラインの第２サブセット（３２５）と、に分割されるキャッシュライン（３１５）を含むキャッシュ（３１０）を備える。また、処理システムは、キャッシュラインの第２サブセットに関連する１つ以上のカウンタ（３３０）を備える。処理システムは、第２サブセットに関連するキャッシュヒット又はキャッシュミスに応じて、１つ以上のカウンタを修正するように構成されたプロセッサ（３０５）を備える。１つ以上のカウンタは、キャッシュヒット又はキャッシュミスを発生させたメモリアクセス要求の１つ以上の特性によって決定された量だけ修正される。【選択図】図１
2019517690.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュライン（３１５）の第１サブセット（３２０）と、前記キャッシュラインの第２サブセットと、に分割される、前記キャッシュラインを含むキャッシュ（３１０）と、
前記キャッシュラインの前記第２サブセット（３２５）に関連する少なくとも１つのカウンタ（３３０）と、
前記第２サブセットに関連するキャッシュヒット又はキャッシュミスのうち少なくとも１つに応じて前記少なくとも１つのカウンタを修正するように構成されたプロセッサ（３０５）であって、前記少なくとも１つのカウンタは、前記キャッシュヒット又は前記キャッシュミスのうち少なくとも１つを発生させたメモリアクセス要求の少なくとも１つの特性に基づく量だけ修正される、プロセッサ（３０５）と、を備える、
装置（１００，３００）。
【請求項２】
前記メモリアクセス要求の少なくとも１つの特性は、前記キャッシュミスに関連する前記メモリアクセス要求のタイプ又はレイテンシのうち少なくとも１つを含む、
請求項１の装置。
【請求項３】
前記プロセッサは、
前記第２サブセットの第１部分に対するキャッシュヒットに応じて前記少なくとも１つのカウンタをインクリメントし、前記第２サブセットの第２部分に対するキャッシュヒットに応じて前記少なくとも１つのカウンタをデクリメントするように構成されている、
請求項１の装置。
【請求項４】
前記プロセッサは、
前記第２サブセットの前記第１部分に対するキャッシュヒットを発生させたメモリアクセス要求の投機度に基づいて決定された量だけ前記少なくとも１つのカウンタをインクリメントし、
前記第２サブセットの前記第２部分に対するキャッシュヒットを発生させたメモリアクセス要求の投機度に基づいて決定された量だけ前記少なくとも１つのカウンタをデクリメントする、
ように構成されている、
請求項３の装置。
【請求項５】
前記プロセッサは、
前記第２サブセットの第１部分に関連するキャッシュミスに応じて前記少なくとも１つのカウンタをデクリメントし、
前記第２サブセットの第２部分に関連するキャッシュミスに応じて前記少なくとも１つのカウンタをインクリメントする、
ように構成されている、
請求項１の装置。
【請求項６】
前記プロセッサは、
前記第２サブセットの前記第１部分に関連するキャッシュミスに関するレイテンシに基づいて決定された量だけ前記少なくとも１つのカウンタをデクリメントし、
前記第２サブセットの前記第２部分に関連するキャッシュミスに関するレイテンシに基づいて決定された量だけ前記少なくとも１つのカウンタをインクリメントする、
ように構成されている、
請求項５の装置。
【請求項７】
前記プロセッサは、
帯域幅消費を示すフィードバックに基づく帯域幅制限動作を検出したことに応じて、前記第２サブセットの前記第１部分に関連する全てのキャッシュミスに対して同じ量だけ前記少なくとも１つのカウンタをデクリメントし、
前記帯域幅制限動作を検出したことに応じて、前記第２サブセットの前記第２部分に関連する全てのキャッシュミスに対して同じ量だけ前記少なくとも１つのカウンタをインクリメントする、
ように構成されている、
請求項６の装置。
【請求項８】
前記第２サブセットは、対応する複数のキャッシュ置換ポリシーを使用しており、
前記プロセッサは、
前記少なくとも１つのカウンタの少なくとも１つの値に基づいて、前記複数のキャッシュ置換ポリシーのうち１つのキャッシュ置換ポリシーを選択し、
前記複数のキャッシュ置換ポリシーのうち選択されたキャッシュ置換ポリシーを使用するように、前記第１サブセットを構成する、
ように構成されている、
請求項１の装置。
【請求項９】
キャッシュ（３１０）を、キャッシュライン（３１５）の第１サブセット（３２０）と、前記キャッシュラインの第２サブセット（３２５）と、に分割することと、
前記第２サブセットに関連するキャッシュヒット又はキャッシュミスのうち少なくとも１つを検出することと、
前記キャッシュヒット又は前記キャッシュミスのうち少なくとも１つに応じて、前記キャッシュラインの前記第２サブセットに関連する少なくとも１つのカウンタ（３３０）を修正することであって、前記少なくとも１つのカウンタは、前記キャッシュヒット及び前記キャッシュミスのうち少なくとも１つを発生させたメモリアクセス要求の少なくとも１つの特性によって決定された量だけ修正される、ことと、を含む、
方法。
【請求項１０】
前記メモリアクセス要求の少なくとも１つの特性は、前記キャッシュミスに関連するメモリアクセス要求のタイプ又はレイテンシのうち少なくとも１つを含む、
請求項９の方法。
【請求項１１】
前記少なくとも１つのカウンタを修正することは、
前記第２サブセットの第１部分に対するキャッシュヒットに応じて前記少なくとも１つのカウンタをインクリメントすることと、
前記第２サブセットの第２部分に対するキャッシュヒットに応じて前記少なくとも１つのカウンタをデクリメントすることと、を含む、
請求項９の方法。
【請求項１２】
前記少なくとも１つのカウンタをインクリメントすることは、前記第２サブセットの前記第１部分に対するキャッシュヒットを発生させたメモリアクセス要求の投機度に基づいて決定された量だけ前記少なくとも１つのカウンタをインクリメントすることを含み、
前記少なくとも１つのカウンタをデクリメントすることは、前記第２サブセットの前記第２部分に対するキャッシュヒットを発生させたメモリアクセス要求の投機度に基づいて決定された量だけ前記少なくとも１つのカウンタをデクリメントすることを含む、
請求項１１の方法。
【請求項１３】
前記少なくとも１つのカウンタを修正することは、
前記第２サブセットの第１部分に関連するキャッシュミスに応じて前記少なくとも１つのカウンタをデクリメントすることと、
前記第２サブセットの第２部分に関連するキャッシュミスに応じて前記少なくとも１つのカウンタをインクリメントすることと、を含む、
請求項９の方法。
【請求項１４】
前記少なくとも１つのカウンタをデクリメントすることは、前記第２サブセットの前記第１部分に関連するキャッシュミスに関するレイテンシに基づいて決定された量だけ前記少なくとも１つのカウンタをデクリメントすることを含み、
前記少なくとも１つのカウンタをインクリメントすることは、前記第２サブセットの前記第２部分に関連するキャッシュミスに関するレイテンシに基づいて決定された量だけ前記少なくとも１つのカウンタをインクリメントすることを含む、
請求項１３の方法。
【請求項１５】
前記第２サブセットは、対応する複数のキャッシュ置換ポリシーを使用しており、
前記少なくとも１つのカウンタの少なくとも１つの値に基づいて、前記複数のキャッシュ置換ポリシーのうち１つのキャッシュ置換ポリシーを選択することと、
前記複数のキャッシュ置換ポリシーのうち選択されたキャッシュ置換ポリシーを使用するように、前記第１サブセットを構成することと、を含む、
請求項９の方法。
【請求項１６】
メモリ（１１５，１２０）と、
前記メモリからの情報を記憶するために、第１サブセット（３２０）と第２サブセット（３２５）とに分割されるキャッシュライン（３１５）を含むキャッシュ（３００）と、
前記第２サブセットに関連する少なくとも１つのカウンタ（３３０）と、
前記メモリ又は前記キャッシュのうち少なくとも１つの動作が帯域幅制限されるかどうかを示すフィードバックに基づいて、前記キャッシュのキャッシュ置換ポリシーを決定するために、セットデュエリングを選択的に有効化又は無効化するように構成されたプロセッサ（１１０，３０５）であって、前記セットデュエリングは、前記少なくとも１つのカウンタに基づいて、前記第１サブセット及び前記第２サブセットの各々によって実施されるキャッシュ置換ポリシーを第１キャッシュ置換ポリシー及び第２キャッシュ置換ポリシーの中から選択する、プロセッサ（１１０，３０５）と、を備える、
装置（１００，３００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、処理システムに関し、より詳細には、処理システムにおいてキャッシュ置換ポリシーを構成することに関する。
【背景技術】
【０００２】
処理システムは、メモリ素子（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等）からの情報のコピーを、処理システム内の処理ユニットによってより高速に（例えば、より低いレイテンシで）アクセス可能なキャッシュに記憶する。キャッシュ内のエントリは、キャッシュラインと呼ばれ、キャッシュラインは、アソシエイティブキャッシュのインデックス及びウェイによって示すことができる。キャッシュは、例えばＬ１キャッシュ等のより高速であるが比較的小さい下位レベルのキャッシュと、例えばＬ２キャッシュ等のより低速であるが比較的大きい上位レベルのキャッシュと、を含むキャッシュ階層で構成することができる。キャッシュは包括的であるため、下位レベルのキャッシュに記憶された全てのデータが上位レベルのキャッシュに記憶されてもよい。メモリアクセス要求は、最初に、最下位レベルのキャッシュに向けられる。要求が最下位レベルのキャッシュのキャッシュラインにヒットした場合、キャッシュライン内のデータが要求元の処理ユニットに返される。要求が下位レベルのキャッシュにおいてミスした場合、要求は、次の上位レベルのキャッシュに送信される。要求が上位レベルのキャッシュのキャッシュラインにヒットした場合、上位レベルのキャッシュライン内のデータが要求元の処理ユニットに返される。そうでなければ、要求は、次の上位レベルのキャッシュ又はメインメモリに送信される。下位レベルのキャッシュにおけるキャッシュミスに応じて上位レベルのキャッシュ（又はメインメモリ）から取り出されたデータは、下位レベルのキャッシュのキャッシュラインにも記憶される。下位レベルのキャッシュが一杯になると、下位レベルのキャッシュの１つのキャッシュラインが、新たなデータ用の空き領域を確保するためにエビクトされる。
【０００３】
本開示は、添付の図面を参照することによってより良く理解することができ、その多くの特徴及び利点が当業者に明らかになるであろう。異なる図面における同じ参照記号の使用は、類似又は同一のアイテムを指す。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、処理システムのブロック図である。
【図２】いくつかの実施形態による、包括的キャッシュ（inclusive cache）のブロック図である。
【図３】いくつかの実施形態による、キャッシュ置換ポリシーを構成するためにセットデュエリングを実施する処理システムのブロック図である。
【図４】いくつかの実施形態による、キャッシュのサブセットにおいてキャッシュヒットを発生させたメモリアクセス要求のタイプに基づいてインクリメント値を選択する方法のフロー図である。
【図５】いくつかの実施形態による、キャッシュ内のキャッシュラインのサブセットに関連するキャッシュミスに対するレイテンシに基づいてインクリメント値を選択する方法のフロー図である。
【図６】いくつかの実施形態による、メモリアクセス要求のタイプ及びレイテンシに基づいてセットデュエリングカウンタのインクリメント値を検索するためのカウンタ修正ルックアップテーブル（ＬＵＴ）を示す図である。
【図７】いくつかの実施形態による、セットデュエリングカウンタの値に基づいてキャッシュ置換ポリシーを構成する方法のフロー図である。
【図８】いくつかの実施形態による、メモリアクセス要求の特性に基づいて決定されるデュエリングカウンタへのセットのためのインクリメント値を使用して、スケーリングされたセットデュエリングを選択的に有効化する方法のフロー図である。
【発明を実施するための形態】
【０００５】
キャッシュ置換ポリシーは、どのキャッシュラインをエビクトすべきかを決定するために使用される。例えば、ＬＲＵ（least recently used）キャッシュ置換ポリシーは、キャッシュミスの場合に新たなデータの空きスペースを作成するために、各キャッシュラインがいつ使用されたかを追跡し、未使用時間が最長のキャッシュラインをエビクトする。別の例では、キャッシュライン内のデータが将来的に使用される可能性を予測するために、ＲＲＩＰ（re-reference interval prediction）が使用される。ＲＲＩＰを実施するキャッシュは、Ｎビットの値を各キャッシュラインに関連付ける。新たなデータがキャッシュラインに挿入される場合、キャッシュラインのＮビット値が初期値（例えば、１又は２）に設定される。次に、キャッシュラインのＮビット値がヒットに応じてデクリメント（又は０に設定）され、他のキャッシュラインのＮビット値がヒットに応じてインクリメントされてもよい。より高いＮビット値を有するキャッシュラインは、より低いＮビット値を有するキャッシュラインよりも将来的に使用される可能性が低い。したがって、キャッシュが一杯になった場合には、最も高いＮビット値を有するキャッシュラインをエビクトすることができる。異なるアプリケーションに対して、異なるキャッシュ置換ポリシーがより効果的になり得る（例えば、より高いヒット率を発生させるか、ミス率を低下させる）。例えば、ＬＲＵ置換ポリシーは、１つのアプリケーションに対して（ＲＲＩＰと比較して）より高いヒット率をもたらし得る。ＲＲＩＰ置換ポリシーは、別のアプリケーションに対して（ＬＲＵと比較して）より高いヒット率をもたらし得る。別の例として、ＲＲＩＰ置換ポリシーは、アプリケーションに応じて、Ｎビット初期値１又はＮビット初期値２を使用するように構成された場合に、より高いヒット率を生成することができる。
【０００６】
セットデュエリングは、異なるキャッシュ置換ポリシーを使用するように構成されたキャッシュのサブセットについてモニタリングされたヒット率又はミス率に基づいて、キャッシュ置換ポリシーを動的に選択するために使用されてもよい。例えば、第１サブセットにおけるキャッシュヒットに応じてカウンタをインクリメントし、第２サブセットにおけるキャッシュヒットに応じてカウンタをデクリメントすることによって、２つのサブセットの性能をモニタリングする。次に、カウンタの値を用いて、第１サブセット又は第２サブセットに関連付けられたポリシーを選択し、選択されたポリシーを用いてキャッシュを構成する。例えば、ＲＲＩＰ置換ポリシーを実施するキャッシュ内のキャッシュラインの第１サブセットは、新たに挿入されたキャッシュラインのＮビット値を１に初期化し、キャッシュラインの第２サブセットは、新たに挿入されたキャッシュラインのＮビット値を２に初期化する。システムは、第１サブセット及び第２サブセットにおけるキャッシュヒットに応じてカウンタを修正し、所定時間後に、カウンタ値に基づいてキャッシュの新たに挿入されたキャッシュラインのＮビット値を初期化するために、１又は２のＮビット値を選択的に使用する。しかしながら、従来のセットデュエリングアルゴリズムは、全体的な性能における異なるタイプのオペレーションによる異なる影響、又は、異なるタイプのオペレーションによるミスに対する異なるレイテンシペナルティによる異なる影響を考慮していない。
【０００７】
キャッシュの性能は、異なるキャッシュ置換ポリシーを実施するキャッシュ内のキャッシュラインのサブセット間でセットデュエリングを実行することによって改善することができる。１つ以上のカウンタは、異なるサブセットに関連するキャッシュヒット又はキャッシュミスに応じて、キャッシュヒット又はキャッシュミスを発生させたメモリアクセス要求を発行したオペレーションのタイプに基づいて決定された値だけ修正される。例えば、第１サブセットに関連する全てのキャッシュヒットについてカウンタを１つずつインクリメントする（又は、第２サブセットに関連する全てのキャッシュヒットについてカウンタを１つずつデクリメントする）代わりに、より投機的なオペレーション（例えば、プリフェッチ等）によって発生したキャッシュヒットは、カウンタを１つずつインクリメント又はデクリメントし、あまり投機的でないオペレーションによるキャッシュヒット（例えば、命令キャッシュ又はデータキャッシュのヒット）は、カウンタを２つずつインクリメント又はデクリメントし、ページテーブルウォークをトリガするトランスレーションルックアサイドバッファに対するキャッシュヒットは、カウンタを３つずつインクリメント又はデクリメントする。
【０００８】
いくつかの実施形態では、カウンタを修正するために使用される値は、キャッシュミスのレイテンシペナルティに基づいて決定される。例えば、メモリアクセス要求がキャッシュの次のレベルでヒットした場合、キャッシュの現在のレベルの第１サブセットに関連するキャッシュミスに応じて、カウンタを１つだけデクリメントする（及び、キャッシュの現在のレベルの第２サブセットに関連するキャッシュミスに応じて、１つだけインクリメントする）ことができる。メモリアクセス要求がキャッシュの次のレベルでミスし、リモートキャッシュでヒットした場合、第１サブセットに関連するキャッシュミスに応じて、カウンタを２つずつデクリメント（及び、第２サブセットに関連するキャッシュミスに応じて、カウンタを２つずつインクリメント）してもよい。メモリアクセス要求がリモートキャッシュにおいてミスし、メモリにおいて読み出される場合、第１サブセットに関連するキャッシュミスに応じて、カウンタを３つずつデクリメント（及び、第２サブセットに関連するキャッシュミスに応じて、カウンタを３つずつインクリメント）してもよい。
【０００９】
レイテンシに基づいてインクリメント値を変更することによって、レイテンシの増加が性能に大きな影響を及ぼす場合に、キャッシュの性能が大幅に向上する。しかしながら、いくつかの場合において、システムは帯域幅に制限があり、キャッシュミスの絶対数を最小限に抑える必要がある。何故なら、各キャッシュミスは、上位レベルのキャッシュ（又はメモリ）からミスが発生した下位レベルのキャッシュにデータを移動するために、追加の帯域幅を消費するからである。したがって、いくつかの実施形態では、システムの帯域幅が制限されている場合に、キャッシュミスの総数を最小限に抑えるために、下位レベルのキャッシュ及びメモリの帯域幅のフィードバックを使用して、インクリメント値をスケーリングするか、全てのキャッシュミスを同等に処理するか、の何れかを選択する。
【００１０】
図１は、いくつかの実施形態による、処理システム１００のブロック図である。処理システム１００は、スタンドアロンデバイスとして、又は、オンチップシステム（ＳＯＣ）の一部として実施されてもよい。処理システム１００は、処理ユニット１０５を含む。処理ユニット１０５の例は、中央処理ユニット（ＣＰＵ）、グラフィック処理ユニット（ＧＰＵ）、高速処理ユニット（ＡＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等を含む。処理ユニット１０５は、命令を実行するか、又は、データを独立して、同時に、若しくは、並列して操作するように構成された複数のプロセッサコア１１０，１１１，１１２（本明細書では、まとめて「コア１１０〜１１２」と呼ばれる）を含む。また、コア１１０〜１１２は、計算ユニットと呼ばれてもよいし、類似の用語が用いられてもよい。
【００１１】
処理システム１００は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）として実施することができるメインメモリを含む。例示された実施形態では、メインメモリは、処理システム１００内の複数のソケットに亘って分散される。ローカルＤＲＡＭ１１５は、処理ユニット１０５と同じソケットに実装され、１つ以上のリモートＤＲＡＭ１２０は、処理ユニット１０５とは異なるソケットに実装される。したがって、ローカルＤＲＡＭ１１５に対するメモリアクセスのレイテンシは、通常、リモートＤＲＡＭ１２０に対するメモリアクセス要求のレイテンシよりも短い。
【００１２】
また、処理システム１００は、命令又はデータのコピーをキャッシュに記憶することによって、ローカルＤＲＡＭ１１５又はリモートＤＲＡＭ１２０に記憶された命令又はデータに高速アクセスするために使用される階層型（又はマルチレベル）キャッシュシステムを実装する。図１に示す階層型キャッシュシステムは、本明細書で説明されるセットデュエリング技術のいくつかの実施形態を実装する階層型キャッシュシステムの一例として意図されている。しかしながら、処理システム１００に実装される階層型キャッシュシステムのいくつかの実施形態は、図１に示す階層型キャッシュシステムとは異なる。例えば、本明細書で説明するセットデュエリング技術のいくつかの実施形態を実装する他の階層型キャッシュシステムは、より多くの若しくはより少ない数のキャッシュ、より多くの若しくはより少ないレイヤのキャッシュ、又は、他の階層型構成のキャッシュを含んでもよい。さらに、キャッシュは、処理ユニット１０５と同じ基板、ウェハ又はダイ上に実装されてもよいし、実装されなくてもよい。
【００１３】
階層型キャッシュシステムは、処理ユニット１０５及びローカルＤＲＡＭ１１５と同じソケット上に実装されるが、処理ユニット１０５と同じ基板、ウェハ又はダイ上に存在しないリモートキャッシュ１２５を含む。リモートキャッシュ１２５は、レイヤ４（Ｌ４）キャッシュとも呼ばれる。キャッシュラインは、インデックス及びウェイの組み合わせによって識別される。リモートキャッシュ１２５のいくつかの実施形態は、ローカルＤＲＡＭ１１５又はリモートＤＲＡＭ１２０内の各ラインがリモートキャッシュ１２５内の複数のキャッシュライン（又はウェイ）に潜在的にコピーされるように、ローカルＤＲＡＭ１１５又はリモートＤＲＡＭ１２０に対してアソシエイティブである。リモートキャッシュ１２５のアソシエイティビティの例には、２ウェイアソシエイティビティ、４ウェイアソシエイティビティ、８ウェイアソシエイティビティ、１６ウェイアソシエイティビティ、ダイレクトマッピング、フルアソシエイティブキャッシュ等が含まれる。リモートキャッシュ１２５は、ローカルＤＲＡＭ１１５又はリモートＤＲＡＭ１２０と比較して、より高速なメモリ素子を使用して実装される。リモートキャッシュ１２５は、コア１１０〜１１２とリモートキャッシュ１２５との間でより高速に又は少ないレイテンシで情報が交換されるように、コア１１０〜１１２に対して論理的又は物理的に近くに（ＤＲＡＭ１１５，１２０と比較して）配置されてもよい。
【００１４】
処理ユニット１０５は、リモートキャッシュ１２５に記憶された命令又はデータのコピーを記憶するレベル３（Ｌ３）キャッシュ１３０を実装する。キャッシュラインは、インデックス及びウェイの組み合わせによって識別される。Ｌ３キャッシュ１３０のいくつかの実施形態は、リモートキャッシュ１２５内の各ラインがＬ３キャッシュ１３０内の各インデックスに関連する複数のウェイに及びから潜在的にコピーされ得るように、リモートキャッシュ１２５に対してアソシエイティブである。Ｌ３キャッシュ１３０は、リモートキャッシュ１２５と比べて、より高速なメモリ素子を使用して実装される。また、Ｌ３キャッシュ１３０は、コア１１０〜１１２とＬ３キャッシュ１３０との間でより高速に又は少ないレイテンシで情報が交換されるように、コア１１０〜１１２に対して論理的又は物理的に近くに（リモートキャッシュ１２５と比較して）配置されてもよい。
【００１５】
また、階層型キャッシュシステムは、Ｌ３キャッシュ１３０に記憶された命令又はデータのコピーを記憶するためのレベル２（Ｌ２）キャッシュ１３５を含む。キャッシュラインは、インデックス及びウェイの組み合わせによって識別される。Ｌ２キャッシュ１３５のいくつかの実施形態は、Ｌ３キャッシュ１３０内の各ラインがＬ２キャッシュ１３５内の各インデックスに関連する複数のウェイに及びから潜在的にコピーされ得るように、Ｌ３キャッシュ１３０に対してアソシエイティブである。Ｌ２キャッシュ１３５は、Ｌ３キャッシュ１３０と比べて、より高速なメモリ素子を使用して実装される。また、Ｌ２キャッシュ１３５は、コア１１０〜１１２とＬ２キャッシュ１３５との間でより高速に又は少ないレイテンシで情報が交換されるように、コア１１０〜１１２に対して論理的又は物理的に近くに（Ｌ３キャッシュ１３０と比較して）配置されてもよい。
【００１６】
また、階層型キャッシュシステムは、レベル１（Ｌ１）キャッシュ１４０，１４１，１４２を含み、本明細書では、これらをまとめて「Ｌ１キャッシュ１４０〜１４２」と呼ぶ。Ｌ１キャッシュ１４０〜１４２の各々が、コア１１０〜１１２のうち対応する１つに関連付けられ、コア１１０〜１１２のうち対応する１つによって使用される命令又はデータのコピーを記憶する。Ｌ１キャッシュ１４０〜１４２は、Ｌ１キャッシュ１４０〜１４２のキャッシュラインに記憶された情報が対応するコア１１０〜１１２によってより迅速に取り出されるように、Ｌ２キャッシュ１３５と比べてより高速なメモリ素子を使用して実装される。また、Ｌ１キャッシュ１４０〜１４２は、コア１１０〜１１２とＬ１キャッシュ１４０〜１４２との間で（Ｌ２キャッシュ１３５との通信と比較して）より高速に又は少ないレイテンシで情報が交換されるように、対応するコア１１０〜１１２に対して論理的又は物理的に近くに（Ｌ２キャッシュ１３５と比較して）配置されてもよい。Ｌ１キャッシュ１４０〜１４２のいくつかの実施形態は、命令のコピーを記憶する命令キャッシュ１４５と、データのコピーを記憶するデータキャッシュ１５０と、に分割される。明確化のために、命令キャッシュ１４５及びデータキャッシュ１５０は、Ｌ１キャッシュ１４０のみに示されている。しかしながら、Ｌ１キャッシュ１４１，１４２も、命令キャッシュ及びデータキャッシュを含むことができる。
【００１７】
上位レベルのキャッシュのいくつかの実施形態は、１つ以上の下位レベルのキャッシュに対して包括的であってもよい。例えば、Ｌ２キャッシュ１３５は、Ｌ１キャッシュ１４０〜１４２に対し包括的であってもよく、Ｌ１キャッシュ１４０〜１４２に記憶されたキャッシュラインがＬ２キャッシュ１３５に記憶されてもよい。
【００１８】
オペレーションにおいて、プロセッサコア１１０〜１１２は、対応するＬ１キャッシュ１４０〜１４２にメモリアクセス要求を送信して、Ｌ１キャッシュ１４０〜１４２に記憶された命令又はデータのコピーに対するアクセスを要求する。要求された情報が、対応するキャッシュに記憶されている場合（例えば、メモリアクセス要求におけるアドレス又はアドレスの一部と、キャッシュ内のキャッシュラインに関連するキャッシュタグとの間の一致によって示されるように）、キャッシュラインへのアクセスがプロセッサコアに付与される。これは、通常、キャッシュヒットと呼ばれる。要求された情報が、対応するキャッシュの何れのキャッシュラインにも記憶されていない場合（通常、キャッシュミスと呼ばれる）、メモリアクセス要求がＬ２キャッシュ１３５に転送される。メモリアクセス要求がＬ２キャッシュ１３５においてヒットした場合、Ｌ２キャッシュ１３５内のキャッシュラインへのアクセスがプロセッサコアに付与される。メモリアクセス要求がＬ２キャッシュ１３５においてミスした場合、メモリアクセス要求がＬ３キャッシュ１３０に転送される。このプロセスは、キャッシュヒットが生じるまで、又は、要求された情報がＤＲＡＭ１１５，１２０でアクセスされるまで、徐々に高いレベルのキャッシュで繰り返される。
【００１９】
リモートキャッシュ１２５、Ｌ３キャッシュ１３０、Ｌ２キャッシュ１３５又はＬ１キャッシュ１４０〜１４２内のキャッシュラインは、キャッシュミスに応じて置換されてもよい。例えば、メモリアクセス要求がＬ１キャッシュ１４０でミスし、Ｌ２キャッシュ１３５でヒットした場合、Ｌ２キャッシュ１３５のアクセスされたキャッシュラインに記憶された命令又はデータがＬ１キャッシュ１４０のキャッシュラインにコピーされ、対応するコア１１０による後続のメモリアクセス要求に利用可能となる。次に、要求元のコア１１０は、対応するＬ１キャッシュ１４０内のキャッシュラインにアクセスする。全てのキャッシュラインが、現在、情報を記憶している場合、１つのキャッシュラインに以前記憶された情報が、新たな情報のための空きスペースを確保するためにエビクトされる。キャッシュラインは、置換ポリシーに基づいてエビクションのために選択される。Ｌ２キャッシュ１３５及びＬ１キャッシュ１４０〜１４２のいくつかの実施形態は、ＲＲＩＰに基づく置換ポリシーを実施する。例えば、新たなデータがキャッシュラインに挿入される場合、Ｌ２キャッシュ１３５及びＬ１キャッシュ１４０〜１４２の各キャッシュラインは、初期値（例えば、１又は２）に設定されたＮビット値に関連付けられる。キャッシュラインのＮビット値は、ヒットに応じてデクリメント（又は０に設定）され、他のキャッシュラインのＮビット値は、ヒットに応じてインクリメントされる。最も高いＮビット値を有するキャッシュラインは、キャッシュが一杯の場合に、キャッシュミスに応じてエビクトされる。
【００２０】
また、処理ユニット１０５は、処理システム１００内に仮想メモリを実装するために使用されるページテーブル１５５及びトランスレーションルックアサイドバッファ（ＴＬＢ）１６０を含む。ページテーブル１５５は、仮想アドレスと物理アドレスとの間のマッピングを記憶するデータ構造である。仮想アドレスは、物理アドレスによって示されたメモリ位置にアクセスするために、コア１１０〜１１２によって使用される。ＴＬＢ１６０は、仮想アドレスのサブセットのマッピングのコピーを、対応する物理アドレスに記憶するキャッシュである。コア１１０〜１１２は、物理アドレスに対する仮想アドレスのマッピングにアクセスする要求をＴＬＢ１６０に送信する。仮想−物理アドレスマッピングがＴＬＢ１６０に記憶されている場合に、ＴＬＢヒットが発生する。そうでない場合には、ＴＬＢミスが発生して、要求がページテーブル１５５に向けられる。ページテーブルウォークは、仮想物理アドレスの要求されたマッピングをページテーブル１５５の物理アドレスに配置するために実行される。
【００２１】
リモートキャッシュ１２５、Ｌ３キャッシュ１３０、Ｌ２キャッシュ１３５、Ｌ１キャッシュ１４０〜１４２、命令キャッシュ１４５、データキャッシュ１５０又はＴＬＢ１６０を含むキャッシュからエビクトするキャッシュラインを選択するために、異なるキャッシュ置換ポリシーを使用することができる。例えば、キャッシュは、ＬＲＵキャッシュ置換ポリシー又はＲＲＩＰキャッシュ置換ポリシーを使用することができる。別の例では、キャッシュは、新たなキャッシュラインの他のＮビット初期値や、他の最大Ｎビット値等を使用するように構成されたＲＲＩＰキャッシュ置換ポリシーを使用することができる。キャッシュによって使用されるキャッシュ置換ポリシーは、セットデュエリング技術を使用して動的に決定される。キャッシュのいくつかの実施形態は、キャッシュラインのメイン部分と、２つ以上のサブセットと、に分割される。キャッシュラインのサブセットは、異なるキャッシュ置換ポリシーに従って動作する。コア１１０〜１１２のうち１つのコアは、サブセットに関連するキャッシュヒット又はキャッシュミスに応じて、サブセットに関連する１つ以上のカウンタを修正することができる。例えば、第１サブセット及び第２サブセットに関連するカウンタは、第１サブセットに対するキャッシュヒットに応じてインクリメントされ、第２サブセットに対するキャッシュヒットに応じてデクリメントされてもよい。各キャッシュヒット又はキャッシュミスのカウンタに対する修正量は、キャッシュヒット又はキャッシュミスを発生させたメモリアクセス要求の特性によって決定される。メモリアクセス要求の特性の例としては、メモリアクセス要求のタイプ、メモリアクセス要求のタイプに関連する投機度、キャッシュミスに関連するレイテンシ等が挙げられる。キャッシュのメイン部分によって使用されるキャッシュ置換ポリシーは、本明細書で説明するように、カウンタ値に基づいて第１サブセット及び第２サブセットによって実施されるポリシーのうち１つのポリシーに従って動作するように動的に構成されてもよい。
【００２２】
図２は、いくつかの実施形態による、包括的キャッシュ２００のブロック図である。包括的キャッシュ２００は、図１に示すリモートキャッシュ１２５、Ｌ３キャッシュ１３０又はＬ２キャッシュ１３５のいくつかの実施形態を実装するために使用される。包括的キャッシュ２００は、キャッシュライン２１０のセット２０５を含む（明確化のために、１つのキャッシュラインのみが参照番号によって示されている）。包括的キャッシュ２００の例示される実施形態は、キャッシュラインがインデックス（０，Ｎ−１）及びウェイ（０，３）によって示されるように、４ウェイアソシエイティブである。しかしながら、包括的キャッシュ２００の他の実施形態は、他のアソシエイティビティを有してもよい。
【００２３】
また、包括的キャッシュ２００は、キャッシュライン２１０の各々に関連するＮビット値２２０のアレイ２１５を含む。明確化のために、Ｎビット値２２０のうち１つのみが参照番号によって示されている。図２に示すＮビット値２２０は、範囲０〜３の値を表すための２ビットを含むが、他の実施形態は、より大きい又はより小さい範囲の値を表すために、より多くの又はより少ないビットを使用してもよい。新たなデータがキャッシュラインに挿入された場合、キャッシュライン２１０のＮビット値２２０が初期値に設定される。例えば、インデックス０及びウェイ１によって示されるキャッシュライン２１０のＮビット値２２０は、第１ビットを０に、第２ビットを１に設定することによって、値が１に初期化される。キャッシュライン２１０のＮビット値２２０は、キャッシュライン２１０におけるヒットに応じてデクリメントされる。例えば、インデックスＮ−１及びウェイ３によって示されるキャッシュライン２１０のＮビット値２２０は、第１ビットを０に、第２ビットを０に設定することによって、値が０に設定される。他のキャッシュラインのＮビット値は、ヒットに応じてインクリメントされる。本明細書で説明するように、Ｎビット値２２０がインクリメント又はデクリメントされる量は、Ｎビット値２２０がインクリメント又はデクリメントされるキャッシュヒット又はキャッシュミスを発生させたメモリアクセス要求の特性に基づいて決定される。
【００２４】
また、包括的キャッシュ２００は、キャッシュライン２１０の各々が、図１に示すＬ１キャッシュ１４０〜１４２等の１つ以上の下位レベルのキャッシュに含まれるかどうかを示す状態情報２２５を維持する。状態情報２２５は、対応するキャッシュラインが下位レベルのキャッシュに含まれていることを示す１つの値（例えば、値が１）に設定され、対応するキャッシュラインが下位レベルのキャッシュに含まれないことを示す異なる値（例えば、値０）に設定されるビット２３０を含む。例えば、インデックス０及びウェイ０によって示されるキャッシュライン２１０に関連するビット２３０の値は、対応するキャッシュラインが１つ以上の下位レベルのキャッシュに含まれていることを示すために、値が１に設定される。別の例では、インデックス０及びウェイ１によって示されるキャッシュライン２１０に関連するビット２３０の値は、対応するキャッシュラインが１つ以上の下位レベルのキャッシュに含まれていないことを示すために、値が０に設定される。
【００２５】
キャッシュライン２１０は、アレイ２１５内のＮビット値２３０に基づいて、（例えば、キャッシュ２００に対するキャッシュミスに応じた）エビクションのために選択される。例えば、最大Ｎビット値３を有するキャッシュラインが、キャッシュミスに応じて、キャッシュ２００からエビクトされるために選択されてもよい。しかしながら、キャッシュライン２１０が１つ以上の下位レベルのキャッシュのキャッシュラインに対して包括的である場合に、キャッシュ２００からキャッシュライン２１０をエビクトすることは、１つ以上の下位レベルのキャッシュから１つ以上のキャッシュラインをエビクトすることを必要とする。したがって、いくつかの実施形態では、最大Ｎビット値を有する全てのキャッシュラインが１つ以上の下位レベルのキャッシュのキャッシュラインに対して包括的である場合、より低いＮビット値を有するキャッシュラインのエビクションについて検討される。例えば、インデックス／ウェイの組み合わせ（０，０）、（０，３）、（１，０）によって示されるキャッシュライン２１０は、最大Ｎビット値に等しいＮビット値２２０を有するが、これらの全てのキャッシュライン２１０は、状態情報２２５の対応するビット２３０の値が１で示されるように、１つ以上の下位レベルのキャッシュラインに対して包括的である。したがって、より低いＮビット値２２０を有するキャッシュラインが、エビクションについて検討される。例えば、インデックス／ウェイの組み合わせ（０，２）によって示されるキャッシュライン２１０は、閾値２に等しいＮビット値を有し、したがって、矢印２３５で示すように、キャッシュ２００からエビクトされてもよい。エビクションするキャッシュラインを検討するためのＮビット値の閾値は、例えば、本明細書で説明するセットデュエリング技術を使用して、動的に設定されてもよい。
【００２６】
図３は、いくつかの実施形態による、キャッシュ置換ポリシーを構成するためにセットデュエリングを実施する処理システム３００のブロック図である。処理システム３００は、図１に示す処理システム１００のいくつかの実施形態の一部を実施するために使用される。処理システムは、コア３０５と、キャッシュ３１０と、を含む。コア３０５は、コア１１０〜１１２のいくつかの実施形態を実装するために使用され、キャッシュ３１０は、図１に示すリモートキャッシュ１２５、Ｌ３キャッシュ１３０、Ｌ２キャッシュ１３５、Ｌ１キャッシュ１４０〜１４２、命令キャッシュ１４５又はデータキャッシュ１５０のうちいくつかの実施形態を実装するために使用される。キャッシュ３１０の図示された実施形態は、Ｎ個のインデックスを含み、４ウェイアソシエイティブであり、これにより、個々のキャッシュライン３１５の識別子（明確化のために、１つのみが参照番号で示されている）は、（０，０）から（Ｎ−１，３）までである。一方、キャッシュ３１０の他の実施形態では、他のアソシエイティビティが使用されてもよい。
【００２７】
キャッシュ３１０は、第１サブセット３２０と、第２サブセット３２５と、残りのキャッシュラインと、に分割され、残りのキャッシュラインは、キャッシュ３１０のメイン部分と呼ばれる。いくつかの実施形態では、第１サブセット３２０及び第２サブセット３２５のキャッシュラインは、対応するキャッシュラインのインデックスによって識別される。例えば、第１サブセット３２０は、インデックスＪに関連するキャッシュラインを含み、第２サブセット３２５は、インデックスＫに関連するキャッシュラインを含む。しかしながら、第１サブセット及び第２サブセットのキャッシュラインは、キャッシュライン３１５の他の識別子に基づいて分割されてもよい。さらに、キャッシュ３１０のいくつかの実施形態は、追加のサブセットに分割されてもよい。
【００２８】
カウンタ３３０は、第１サブセット３２０及び第２サブセット３２５に関連付けられている。カウンタ３３０の値は、第１サブセット３２０又は第２サブセット３２５に対するキャッシュヒットに応じて、コア３０５によって修正される。例えば、コア３０５は、第１サブセット３２０におけるキャッシュヒットに応じてカウンタ３３０をインクリメントし、第２サブセット３２５におけるキャッシュヒットに応じてカウンタ３３０をデクリメントする。よって、カウンタ３３０の値は、第１サブセット３２０におけるキャッシュヒットに応じて増加し、第２サブセット３２５におけるキャッシュヒットに応じて減少する。キャッシュヒットの数は、サブセット３２０，３２５によって実施されるキャッシュ置換ポリシーの相対的有効性の尺度である。したがって、カウンタ３３０の値をモニタリングすることによって、コア３０５は、処理システム３００の現在の動作条件の下で何れのキャッシュ置換ポリシーがより有効であるかを判断することができる。次いで、コア３０５は、最も有効なキャッシュ置換ポリシーに従って動作するように、キャッシュ３１０のメイン部分を構成する。
【００２９】
コア３０５のいくつかの実施形態は、第１サブセット３２０又は第２サブセット３２５に関連するキャッシュミスに応じて、カウンタ３３０の値を修正する。キャッシュミス自体は特定のキャッシュラインに関連していないが、キャッシュミスは、上位レベルのキャッシュにおけるキャッシュヒット、又は、例えばＤＲＡＭ等のメインメモリ内の位置に基づいて、第１サブセット３２０又は第２サブセット３２５に関連付けることができる。例えば、下位レベルのキャッシュ内の各インデックスは、上位レベルのキャッシュ内のインデックスの特定のセット（又は、メインメモリ内の位置）にマッピングされる。したがって、第１サブセット３２０及び第２サブセット３２５は、上位レベルのキャッシュ内のインデックスの異なるセット又はメインメモリ内の異なる位置にマッピングされる。上位レベルのキャッシュのうち１つのキャッシュにおけるキャッシュヒット（又は、メインメモリへのアクセス）によって、キャッシュヒットの位置の情報が、上位レベルのキャッシュにおけるキャッシュヒットのインデックスにマッピングされる下位レベルのキャッシュ内のインデックスのウェイにコピーされる。コア３０５は、第１サブセット３２０又は第２サブセット３２５のウェイに情報がコピーされたことに応じて、キャッシュミスを第１サブセット３２０又は第２サブセット３２５に関連付ける。コア３０５は、第１サブセット３２０に関連するキャッシュミスに応じてカウンタ３３０をデクリメントし、第２サブセット３２５に関連するキャッシュミスに応じてカウンタ３３０をインクリメントする。コア３０５のいくつかの実施形態は、第１サブセット３２０及び第２サブセット３２５に関連するキャッシュヒット及びキャッシュミスの両方に応じて、カウンタ３３０をインクリメント又はデクリメントしてもよい。
【００３０】
図３に示すカウンタ３３０のいくつかの実施形態は、複数のカウンタを表す。例えば、単一のカウンタ３３０をインクリメント又はデクリメントする代わりに、コア３０５は、第１サブセット３２０及び第２サブセット３２５に対して別々のカウンタを維持する。別々のカウンタは、第１サブセット３２０又は第２サブセット３２５の各々に関連するキャッシュヒット又はキャッシュミスに応じてインクリメント又はデクリメントされる。次に、別々のカウンタの値を比較して、最も有効なキャッシュ置換ポリシーを識別することができる。別の例では、キャッシュ３１０は、３つ以上の異なるキャッシュ置換ポリシーに従って動作するように構成された３つ以上のサブセットに分割される。したがって、カウンタのセットに関連するキャッシュヒット又はキャッシュミスに基づいて最も有効なキャッシュ置換ポリシーをコア３０５が識別できるように、カウンタの対応するセットが定義される。
【００３１】
コア３０５は、キャッシュヒット又はキャッシュミスを発生させたメモリアクセス要求の特性に応じて、カウンタ３３０の値を異なる量だけ修正する。メモリアクセス要求の特性は、プリフェッチ要求、デマンド要求、命令キャッシュ要求、データキャッシュ要求、テーブルウォーク要求、ロード要求、ストア要求、要求に関連する特権レベル等の要求のタイプを含む。異なるタイプのオペレーションは、異なる投機度を有し得る。キャッシュ３１０内のラインにヒットするプリフェッチ要求は、比較的高い投機度を有し、デマンド要求は、より低い投機度を有する。キャッシュミスから命令キャッシュに至るキャッシュ内のヒットは、さらに低い投機度を有し、キャッシュミスからデータキャッシュに至るキャッシュのヒットは、さらに低い投機度を有する。メモリアクセス要求を用いて処理システムにハードウェアページテーブルウォークを実行させる、ＴＬＢページテーブルウォーカによるミスは、さらに低い投機度を有する。高い投機度を有する要求に関連するヒット又はミスは、カウンタ３３０の値の変化が小さくなる。メモリアクセス要求の特性は、キャッシュミスに続くメモリアクセス要求を満たす際の異なるレイテンシも含む。例えば、下位レベルにおいてミスし、次に上位レベルのキャッシュにおいてヒットするメモリアクセス要求に関連するレイテンシは、メモリアクセス要求が下位レベルのキャッシュにおいてミスし、次に上位レベルのキャッシュにおいてミスし、次いでメモリアクセス要求を満たすために外部ＤＲＡＭに向けられる場合に生じるレイテンシよりも低い。より多くのレイテンシを発生させる要求に関連するキャッシュミスは、カウンタ３３０の値の変化が小さくなる。
【００３２】
図４は、いくつかの実施形態による、キャッシュのサブセットにおいてキャッシュヒットを発生させたメモリアクセス要求のタイプに基づいてインクリメント値を選択する方法４００のフロー図である。方法４００は、図１に示す処理システム１００又は図３に示す処理システム３００のいくつかの実施形態において実施される。方法４００に示される特定のタイプのメモリアクセス要求及び対応するインクリメント値は、セットデュエリングアルゴリズムにおいてカウンタを修正するための異なるインクリメント値の使用を示す例として意図される。方法４００のいくつかの実施形態は、異なるタイプのメモリアクセス要求又は異なるインクリメント値を使用する。さらに、方法４００のいくつかの実施形態は、キャッシュの他のサブセットにおけるキャッシュヒットに応じてカウンタをデクリメントするための値を決定するために使用される。例えば、キャッシュの１つのサブセットについて方法４００によって決定されるインクリメント値は、キャッシュの他のサブセットにおけるキャッシュヒットに応じてカウンタをデクリメントするのに使用される値に対応する。
【００３３】
ブロック４０５において、プロセッサコアは、キャッシュの第１サブセットにおけるキャッシュヒットを検出する。キャッシュヒットは、メモリアクセス要求に応じて生成され、プロセッサコアは、メモリアクセス要求と共に提供される情報又は処理システムから利用可能な他の情報を使用して、メモリアクセス要求のタイプを判別する。プロセッサコアは、図３に示すカウンタ３３０等のカウンタの値を、メモリアクセス要求のタイプに基づいて決定された量だけインクリメントする。
【００３４】
判別ブロック４１０において、プロセッサコアは、メモリアクセス要求が、プロセッサコアによる後続の命令の実行に必要と予測される情報についてのプリフェッチ要求であるかどうかを判別する。プリフェッチ要求は、高い投機度を有する。メモリアクセス要求がプリフェッチ要求である場合、ブロック４１５において、プロセッサコアは、カウンタをインクリメント値（ここでは、１）だけインクリメントする。メモリアクセス要求がプリフェッチ要求でない場合、方法４００は、判別ブロック４２０に進む。
【００３５】
判別ブロック４２０において、プロセッサコアは、メモリアクセス要求が、命令キャッシュ又はデータキャッシュに対する要求であるかどうかを判別する。命令キャッシュ又はデータキャッシュに対する要求は、プリフェッチ要求よりも低い投機度を有する。要求が命令キャッシュ又はデータキャッシュに対するものである場合、ブロック４２５において、プロセッサコアは、カウンタをインクリメント値（ここでは、２）だけインクリメントする。メモリアクセス要求が命令キャッシュ又はデータキャッシュに対するものでない場合、方法４００は、判別ブロック４３０に進む。
【００３６】
判別ブロック４３０において、プロセッサコアは、メモリアクセス要求が、ＴＬＢページテーブルウォーカによるＴＬＢに対するミスによって生じたかどうかを判別する。ＴＬＢページテーブルウォーカによるミスから生じた要求は、プリフェッチ要求又は命令／データキャッシュに対する要求に比べて低い投機度を有する。要求が、ＴＬＢページテーブルウォーカによるキャッシュミスを生じた場合、ブロック４３５において、プロセッサコアは、カウンタをインクリメント値（ここでは、３）だけインクリメントする。キャッシュヒットが、ＴＬＢページテーブルウォーカのミスによって生成されなかった場合、プロセッサコアは、カウンタをデフォルト値だけインクリメントする。未分類のタイプが高い投機度を有すると予測される場合、又は、比較的高いレベルの未分類のタイプの投機度が低いと予測される場合には、デフォルト値は比較的低いレベルに設定される。
【００３７】
図５は、いくつかの実施形態による、キャッシュ内のキャッシュラインのサブセットに関連するキャッシュミスに対するレイテンシに基づいてインクリメント値を選択する方法５００のフロー図である。方法５００は、図１に示す処理システム１００又は図３に示す処理システム３００のいくつかの実施形態において実施される。方法５００に示す特定のレイテンシ及び対応するインクリメント値は、セットデュエリングアルゴリズムにおいてカウンタを修正するための異なるインクリメント値の使用を示す例として意図される。方法５００のいくつかの実施形態は、異なるレイテンシ、レイテンシカテゴリ、又は、異なるインクリメント値を検討する。さらに、方法５００のいくつかの実施形態は、キャッシュの他のサブセットに関連するキャッシュミスに応じてカウンタをデクリメントするための値を決定するために使用される。例えば、方法５００によって決定されるインクリメント値は、キャッシュの他のサブセットにおけるキャッシュヒットに応じてカウンタをデクリメントするのに使用される値に対応する。
【００３８】
ブロック５０５において、プロセッサコアは、キャッシュのラインのサブセットに関連するキャッシュミスを検出する。次に、プロセッサコアは、キャッシュミスに関連するレイテンシを決定する。例えば、プロセッサコアは、キャッシュミスに応じてキャッシュに返される情報のデータソースを識別する符号化等の情報を受信する。符号化は、Ｌ１キャッシュヒット、Ｌ２キャッシュヒット、Ｌ３キャッシュヒット、ローカルＤＲＡＭからの応答、リモートＤＲＡＭからの応答、リモートキャッシュからの応答等を示す。したがって、符号化は、レイテンシを推定し、又は、キャッシュミスのレイテンシを分類するために使用される。
【００３９】
判別ブロック５１０において、プロセッサコアは、返された情報のデータソースがリモートＤＲＡＭであるかどうかを判別する。リモートＤＲＡＭに関連するレイテンシは比較的大きい。データソースがリモートＤＲＡＭである場合、ブロック５１５において、プロセッサコアは、カウンタを比較的低い値（ここでは、１）だけインクリメントする。データソースがリモートＤＲＡＭではない場合、方法５００は、判別ブロック５２０に進む。
【００４０】
判別ブロック５２０において、プロセッサコアは、返された情報のデータソースがローカルＤＲＡＭであるかどうかを判別する。ローカルＤＲＡＭに関連するレイテンシは、リモートＤＲＡＭに関連するレイテンシよりも小さい。データソースがローカルＤＲＡＭである場合、ブロック５２５において、プロセッサコアは、カウンタを値（ここでは、２）だけインクリメントする。データソースがローカルＤＲＡＭではない場合、方法５００は、判別ブロック５３０に進む。
【００４１】
判別ブロック５３０において、プロセッサコアは、返された情報のデータソースがリモートキャッシュであるかどうかを判別する。リモートキャッシュに関連するレイテンシは、ローカルＤＲＡＭに関連するレイテンシよりも小さい。データソースがリモートキャッシュである場合、ブロック５３５において、プロセッサコアは、カウンタを値（ここでは、３）だけインクリメントする。データソースがリモートキャッシュではない場合、方法５００は、判別ブロック５４０に進む。
【００４２】
判別ブロック５４０において、プロセッサコアは、返された情報のデータソースが上位レベルのローカルキャッシュであるかどうかを判別する。上位レベルのローカルキャッシュに関連するレイテンシは、リモートキャッシュに関連するレイテンシよりも低い。データソースが上位レベルのローカルキャッシュである場合、ブロック５４５において、プロセッサコアは、カウンタを値（ここでは、４）だけインクリメントする。データソースが上位レベルのローカルキャッシュでない場合、プロセッサコアは、レイテンシが上位レベルのローカルキャッシュに関連するレイテンシよりも低いと仮定し、ブロック５５０において、カウンタを値（ここでは、５）だけインクリメントする。
【００４３】
図６は、いくつかの実施形態による、メモリアクセス要求のタイプ及びレイテンシに基づいてセットデュエリングカウンタのインクリメント値を検索するためのカウンタ修正ルックアップテーブル（ＬＵＴ）６００を示す図である。カウンタ修正ＬＵＴ６００は、図１に示す処理システム１００又は図３に示す処理システム３００のいくつかの実施形態において、セットデュエリングカウンタのインクリメント値を識別するために使用される。カウンタ修正ＬＵＴ６００は、メモリアクセス要求のタイプと、メモリアクセス要求のレイテンシと、の組み合わせを示す値を保持するフィールドを含む第１列６０５を含む。また、カウンタ修正ＬＵＴ６００は、本明細書で説明するように、セットデュエリングカウンタの値を修正するのに使用される、対応するインクリメント（又は、デクリメント）値を示す値を保持するフィールドを含む第２列６１０を含む。
【００４４】
図１に示すコア１１０〜１１２等のプロセッサコアは、カウンタ修正ＬＵＴ６００を使用して、例えば異なるキャッシュ置換ポリシーの有効性を比較するために、セットデュエリングに使用されるキャッシュのサブセットに関連するキャッシュヒット又はキャッシュミスを発生させるメモリアクセス要求に関連する、要求のタイプ及びレイテンシに基づいてインクリメント値を識別する。例えば、プロセッサコアが、レイテンシ１を有するタイプ１のメモリ要求によって生成された第１サブセットに対するキャッシュヒットを検出した場合、プロセッサコアは、カウンタ修正ＬＵＴ６００によって示されるように、適切なカウンタを値（ここでは、１）だけインクリメントする。別の例では、プロセッサコアが、レイテンシ１を有するタイプ１のメモリ要求によって生成された第２サブセットに対するキャッシュヒットを検出した場合、プロセッサコアは、適切なカウンタを値（ここでは、１）だけデクリメントする。
【００４５】
図７は、いくつかの実施形態による、セットデュエリングカウンタの値に基づいてキャッシュ置換ポリシーを構成する方法７００のフロー図である。方法７００は、図１に示す処理システム１００又は図３に示す処理システム３００のいくつかの実施形態において実施される。
【００４６】
ブロック７０５において、プロセッサコアは、第１キャッシュ置換ポリシーを使用してオペレーションするように構成されたキャッシュの第１サブセットと、第２キャッシュ置換ポリシーを使用してオペレーションするように構成されたキャッシュの第２サブセットと、をモニタリングする。プロセッサコアは、所定の時間間隔の間、キャッシュヒット又はキャッシュミスに応じてカウンタを修正する。カウンタに対する修正量は、本明細書で説明するように、キャッシュヒット又はキャッシュミスを発生させるメモリアクセス要求の特性に基づいて決定される。
【００４７】
判別ブロック７１０において、プロセッサコアは、カウンタの値を閾値と比較する。カウンタの値が閾値よりも大きい場合には、第１キャッシュ置換ポリシーが所定の時間間隔に亘って有効であることを示しており、プロセッサコアは、第１キャッシュ置換ポリシーに従って動作するようにキャッシュのメイン部分を構成する（ブロック７１５）。カウンタの値が閾値よりも小さい場合には、第２キャッシュ置換ポリシーが所定の時間間隔に亘って有効であることを示しており、プロセッサコアは、第２キャッシュ置換ポリシーに従って動作するようにキャッシュのメイン部分を構成する（ブロック７２０）。いくつかの実施形態では、プロセッサコアは、第１キャッシュ置換ポリシー及び第２キャッシュ置換ポリシーの相対的有効性を、カウンタ値に適用された他の基準に基づいて評価する（判別ブロック７１０）。
【００４８】
図８は、いくつかの実施形態による、メモリアクセス要求の特性に基づいて決定されるデュエリングカウンタのセットのためのインクリメント値を使用して、スケーリングされたセットデュエリングを選択的に有効化する方法８００のフロー図である。方法８００は、図１に示す処理システム１００又は図３に示す処理システム３００のいくつかの実施形態において実施される。
【００４９】
ブロック８０５において、プロセッサコアは、処理システム内の他のエンティティ（例えば、処理システムのキャッシュ階層におけるキャッシュ等）からの帯域幅フィードバックをモニタリングする。例えば、図１に示すプロセッサコア１１０は、ローカルＤＲＡＭ１１５、リモートＤＲＡＭ１２０、リモートキャッシュ１２５、Ｌ３キャッシュ１３０、Ｌ２キャッシュ１３５、Ｌ１キャッシュ１４０〜１４２、命令キャッシュ１４５、データキャッシュ１５０、ＴＬＢ１６０、又は、図１に示す処理システム１００内の他のエンティティに関連する現在の帯域幅使用率を示すフィードバックをモニタリングする。
【００５０】
判別ブロック８１０において、プロセッサコアは、処理システム（又は、その一部）が帯域幅制限されているかどうかを判別する。処理システム（又は、その一部）が帯域幅制限されている場合、プロセッサコアは、ブロック８１５において、キャッシュミスに対してスケーリングされたセットデュエリングを無効にする。スケーリングされたセットデュエリングを無効にすることによって、セットデュエリングカウンタは、メモリアクセス要求のタイプ又はキャッシュミスに関連するレイテンシに関わらず、全てのキャッシュミスに対して同じ値だけインクリメントされる。処理システムが帯域幅制限されていない場合、プロセッサコアは、ブロック８２０において、キャッシュミスに対してスケーリングされたセットデュエリングを有効にする。スケーリングされたセットデュエリングを有効にすることによって、プロセッサコアが、処理システムのキャッシュにおいてキャッシュヒット又はキャッシュミスを発生させるメモリアクセス要求の特性に応じて、セットデュエリングカウンタを異なる値だけインクリメントするのを可能にする。
【００５１】
いくつかの実施形態では、上述した装置及び技術は、図１〜８を参照して上述した処理システム等のような１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を含むシステムにおいて実施される。これらのＩＣデバイスの設計及び製造には、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールを使用することができる。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表わされる。１つ以上のソフトウェアプログラムは、回路を製造するように製造システムを設計又は適合させるためのプロセスの少なくとも一部を実行するように、１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するコンピュータシステムによって実行可能なコードを備える。このコードには、命令、データ、又は、命令及びデータの組み合わせが含まれる。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じ又は異なるコンピュータ可読記憶媒体に記憶され、当該コンピュータ可読記憶媒体からアクセスされてもよい。
【００５２】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な、任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含むことができる。このような記憶媒体は、限定しないが、光学媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、マイクロ電気機械システム（ＭＥＭＳ）ベースの記憶媒体を含むことができる。コンピュータ可読記憶媒体は、コンピューティングシステムに埋め込まれてもよく（例えば、システムＲＡＭ又はＲＯＭ）、コンピューティングシステムに固定的に取り付けられてもよく（例えば、磁気ハードドライブ）、コンピューティングシステムに着脱可能に取り付けられてもよく（例えば、光ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線若しくは無線ネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能ストレージ（ＮＡＳ））。
【００５３】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に記憶されるか、他の方法で有形に具現化された、１つ以上の実行可能な命令のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されたときに、１つ以上のプロセッサを操作して、上述した技術の１つ以上の態様を実行する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、ソリッドステート記憶デバイス（例えば、フラッシュメモリ等）、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能な命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈され若しくは他の方法で実行可能な他の命令フォーマットであってもよい。
【００５４】
概説において上述したアクティビティ又は要素の全てが必要であるとは限らず、特定のアクティビティ又はデバイスの一部が必要でなくともよく、説明したアクティビティに加えて１つ以上の更なるアクティビティが実行されてもよいし、１つ以上の更なる要素が含まれてもよいことに留意されたい。さらに、アクティビティが列挙される順序は、必ずしもそれらが実行される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変更を行うことができることを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、そのような変更の全ては、本発明の範囲内に含まれることが意図される。
【００５５】
利益、他の利点及び問題に対する解決手段が特定の実施形態に関して上述されている。しかしながら、利益、利点、問題に対する解決手段、及び、何等かの利益、利点、解決手段が発生するか、顕著になる可能性のある機能は、何れか又は全ての特許請求の範囲の重要な特徴、必須の特徴、本質的な特徴として解釈されるべきでない。更に、開示された発明は、本明細書における教示の利益を有する当業者には明らかであるが、異なるが同等の方法で変更され、実施され得るので、上記の開示された特定の実施形態は、例示に過ぎない。以下の特許請求の範囲に記載されているもの以外に、本明細書に示された構成又は設計の詳細に制限はない。したがって、上記の開示された特定の実施形態は、変更又は修正されてもよく、全てのそのような変形は、開示された発明の範囲内にあると考えられることが明らかである。したがって、本願で求められる保護は、以下の特許請求の範囲に記載されている。
【図１】
2019517690.tif 000003
【図２】
2019517690.tif 000004
【図３】
2019517690.tif 000005
【図４】
2019517690.tif 000006
【図５】
2019517690.tif 000007
【図６】
2019517690.tif 000008
【図７】
2019517690.tif 000009
【図８】
2019517690.tif 000010
【国際調査報告】
2019517690.tif 000011
2019517690.tif 000012