(57)【要約】プロセッサ（１００）は、第２キャッシュ（１０４）からのヒント（１１８）に基づいて、第１キャッシュ（１０６）のデータを置き換える。ヒントは、第１キャッシュが直接利用できないデータに関する情報を示す。エントリのデータが第１キャッシュから第２キャッシュに転送される場合、第１キャッシュは、名目上の初期エイジ値と比較して高い又は低い初期エイジ値をデータに割り当てるべきであることを示すエイジヒントを、第２キャッシュに提供することができる。第２キャッシュは、エイジヒントに基づいて、初期エイジ値をデータのエントリに割り当て、データを置き換える場合に、各エントリのエイジ値に基づいて、置き換えるデータを選択する。【選択図】図１
2019521410.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ（１００）の第１キャッシュ（１０６）において、前記プロセッサの第２キャッシュ（１０４）から第１ヒント（１１８）を受信することであって、前記第１ヒントは、前記第２キャッシュに記憶された第１データの第１特性を示し、前記第１特性は、前記第１キャッシュが利用可能でないことを示し、前記第１キャッシュ及び前記第２キャッシュは、前記プロセッサのメモリ階層の異なるレベルを含む、ことと、
前記第１データを前記第１キャッシュの第１エントリ（２３１）に記憶することと、
前記第１ヒントに基づいて、前記第１エントリの第１エイジ値（２３２）を設定することと、
前記第１エイジ値と、前記第１キャッシュの前記第１エントリ以外のエントリのエイジ値と、の比較に基づいて、前記第１エントリを置き換えることと、を含む、
方法。
【請求項２】
前記第１特性は、前記第１データに関連する一時的指標（３３２）を含み、前記一時的指標は、前記第１データが前記第１キャッシュにおいてアクセスされる予測レベルを示す、
請求項１の方法。
【請求項３】
前記プロセッサにおいて実行される命令に基づいて、前記第２キャッシュにおいて前記一時的指標を識別することを更に含む、
請求項２の方法。
【請求項４】
前記第１特性は、前記第１データが前記プロセッサの複数のプロセッサコア間で共有されるかどうかを示す共有特性（３３０）を含む、
請求項１の方法。
【請求項５】
前記第１ヒントと前記第１データの第２特性（２２５）とに基づいて、前記第１エイジ値を識別することであって、前記第２特性は前記第１キャッシュにおいて識別される、ことを更に含む、
請求項１の方法。
【請求項６】
前記プロセッサの第１キャッシュにおいて、前記プロセッサの第２キャッシュから第２ヒントを受信することであって、前記第２ヒントは、前記第２キャッシュに記憶された第２データの第２特性を示し、前記第２特性は、前記第１キャッシュにおいて識別可能でないことを示す、ことと、
前記第２データを前記第１キャッシュの第２エントリに記憶することと、
前記第２ヒントに基づいて、前記第２エントリの第２エイジ値を設定することと、
前記第２エイジ値と、前記第１キャッシュの前記第２エントリ以外のエントリのエイジ値と、の比較に基づいて、前記第２エントリを置き換えることと、を更に含む、
請求項１の方法。
【請求項７】
前記第２特性は、前記第１特性と異なる特性である、
請求項６の方法。
【請求項８】
前記第２特性は、前記第１特性と同じ特性であり、前記第２エイジ値は、前記第１エイジ値とは異なっている、
請求項６の方法。
【請求項９】
プロセッサ（１００）の第１キャッシュ（１０４）において、前記第１キャッシュに記憶されたデータ（１１５）の第１特性（２２５）を識別することと、
前記プロセッサの第２キャッシュ（１０６）から前記データに対する要求を受信したことに応じて、前記データを前記第１キャッシュから前記第２キャッシュに提供することと、前記データの前記識別された第１特性に関するヒント（１１８）を前記第２キャッシュに提供することと、前記ヒントに基づいて、前記第２キャッシュにおける前記データのエイジ値（２３２）を設定することと、
前記エイジ値と、前記第２キャッシュの前記データを記憶するエントリ以外のエントリのエイジ値と、の比較に基づいて、前記第２キャッシュにおける前記データを置き換えることと、を含む、
方法。
【請求項１０】
前記エイジ値を設定することは、
前記ヒントと、前記第２キャッシュにおいて識別された前記データの第２特性と、に基づいて、前記第２キャッシュにおける前記データの前記エイジ値を設定することを含む、
請求項９の方法。
【請求項１１】
前記第１特性は、前記第１データに関連する一時的指標（３３２）を含み、前記一時的指標は、前記第１データが前記第１キャッシュにおいてアクセスされる予測レベルを示す、
請求項９の方法。
【請求項１２】
前記第１特性は、前記第１データが前記プロセッサの複数のプロセッサコア間で共有されるかどうかを示す共有特性（３３０）を含む、
請求項９の方法。
【請求項１３】
プロセッサ（１００）であって、
第１データ（１１５）を記憶する第１キャッシュ（１０４）であって、前記第１データの第１特性を識別する第１キャッシュ（１０４）と、
前記第１データを前記第１キャッシュから受信及び記憶するための第１エントリ（２３１）を含む第２キャッシュ（１０６）であって、前記第１キャッシュ及び前記第２キャッシュは、前記プロセッサのメモリ階層の異なるレベルを含む、第２キャッシュ（１０６）と、を備え、
前記第２キャッシュは、
前記第１特性を示す第１ヒント（１１８）を前記第１キャッシュから受信することであって、前記第１特性は、前記第１キャッシュが識別可能でないことを示す、ことと、
前記第１ヒントに基づいて、前記第１エントリの第１エイジ値（２３２）を設定することと、
前記第１エイジ値と、前記第１キャッシュの前記第１エントリ以外のエントリのエイジ値と、の比較に基づいて、前記第１エントリを置き換えることと、
を行うように構成されている、
プロセッサ。
【請求項１４】
前記第１特性は、前記第１データに関連する一時的指標（３３２）を含み、前記一時的指標は、前記第１データが前記第２キャッシュにおいてアクセスされる予測レベルを示す、
請求項１３のプロセッサ。
【請求項１５】
前記第１キャッシュは、前記プロセッサにおいて実行される命令によって提供された第２ヒントに基づいて、前記一時的指標を識別するように構成されている、
請求項１４のプロセッサ。
【請求項１６】
前記第１特性は、前記第１データが前記プロセッサの複数のプロセッサコア間で共有されるかどうかを示す共有特性（３３２）を含む、
請求項１３のプロセッサ。
【請求項１７】
前記第２キャッシュは、前記第１ヒントと前記第１データの第２特性（２２５）とに基づいて、前記第１エイジ値を特定することであって、前記第２特性は、前記第２キャッシュにおいて識別される、ことを行うように構成されている、
請求項１３のプロセッサ。
【請求項１８】
前記第１キャッシュは、第２データを記憶することと、前記第２データの第２特性を識別することと、を行うように構成されており、
前記第２キャッシュは、前記第２データを前記第１キャッシュから受信及び記憶するための第２エントリを含み、
前記第２キャッシュは、
前記第２データの第２特性を示す第２ヒントを前記第１キャッシュから受信することであって、前記第２特性は、前記第１キャッシュにおいて識別可能でないことを示す、ことと、
前記第２ヒントに基づいて、前記第２エントリの第２エイジ値を設定することと、
前記第２エイジ値と、前記第１キャッシュの前記第２エントリ以外のエントリのエイジ値と、の比較に基づいて、前記第２エントリを置き換えることと、
を行うように構成されている、
請求項１３のプロセッサ。
【請求項１９】
前記第２特性は、前記第１特性と異なる特性である、
請求項１８のプロセッサ。
【請求項２０】
前記第２特性は、前記第１特性と同じ特性であり、前記第２エイジ値は、前記第１エイジ値とは異なっている、
請求項１８のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、処理システムに関し、特に、処理システムにおけるキャッシュ管理に関する。
【背景技術】
【０００２】
オペレーションの実行を容易にするために、プロセッサは、命令を実行するための１つ以上のプロセッサコアと、命令を実行することによってアクセスされるデータの記憶を管理するメモリサブシステムと、を使用することができる。メモリアクセス効率を向上させるために、メモリサブシステムを、命令を実行することによってアクセス可能な全てのデータを記憶するメインメモリであって、メモリ階層の最上位レベルにあるメインメモリと、メモリ階層の下位レベルの１つ以上のキャッシュであって、メインメモリに記憶されたデータのサブセットを記憶する１つ以上のキャッシュと、を有するメモリ階層として構成することができる。メモリ階層の各レベルでキャッシュされるデータのサブセットの基準は、プロセッサ設計に応じて変化することがあるが、通常、少なくとも１つのプロセッサコアによって最近アクセスされたデータと、近い将来にプロセッサコアによってアクセスされると予測されるプリフェッチされたデータと、を含む。新たなデータを１つ以上のキャッシュに移動させるために、プロセッサは、通常、指定された置換スキームに基づいて、事前に記憶されたデータをエビクションのために選択する必要がある。例えば、いくつかのプロセッサは、プロセッサコアによって最もアクセスされていないデータを記憶するキャッシュエントリをエビクトするＬＲＵ（least-recently-used）置換スキームを使用する。しかしながら、多くのシナリオでは、ＬＲＵ置換スキームは、プロセッサコアで実行される命令のメモリアクセスパターンと一致せず、不必要に低いメモリアクセス効率をもたらす。
【０００３】
本開示は、添付図面を参照することによってより良好に理解することができ、その多くの特徴及び利点が当業者には明らかであろう。異なる図面において同じ参照符号を使用することは、類似又は同一のアイテムを示している。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、異なるキャッシュにおいて置換ポリシーを実施するために１つのキャッシュからのヒントを使用するプロセッサのブロック図である。
【図２】いくつかの実施形態による、キャッシュエントリのエイジを設定するために異なるキャッシュからのヒントを使用する図１のプロセッサのキャッシュのブロック図である。
【図３】いくつかの実施形態による、異なるキャッシュからのヒントに基づいて、異なるキャッシュエントリの異なるエイジを設定するための図１のキャッシュのブロック図である。
【図４】いくつかの実施形態による、異なるキャッシュから受信したヒントに基づいて、キャッシュが置換ポリシーを実施する方法のブロック図である。
【発明を実施するための形態】
【０００５】
図１〜図４は、異なるキャッシュからのヒントに基づいて、１つのキャッシュでデータを置き換える技術を示しており、ヒントは、キャッシュに対して直接利用できないデータに関する情報を示す。例示するために、メモリ階層の上位レベルにあるキャッシュは、下位レベルのキャッシュが直接利用できないキャッシュエントリに関する情報にアクセスすることができる。キャッシュエントリのデータが上位レベルのキャッシュから下位レベルのキャッシュに転送される場合、上位レベルのキャッシュは、上位レベルキャッシュに利用可能な情報に基づいて、名目上の初期のエイジと比較して高い又は低い初期のエイジをデータに割り当てる必要があることを示すために、エイジヒントを下位レベルのキャッシュに提供することができる。下位レベルのキャッシュは、エイジヒントに基づいて、初期のエイジをデータのエントリに割り当て、データを置き換える場合に、各エントリのエイジに基づいて、置換するデータを選択する。上位レベルのキャッシュからのエイジヒントによって、下位レベルのキャッシュは、上位レベルのキャッシュに利用可能な情報を下位レベルのキャッシュの置換ポリシーに組み込むことができ、これにより、メモリアクセス効率が向上する。
【０００６】
一例を説明するために、プロセッサは、プロセッサの複数のプロセッサコアに対してアクセス可能なレベル３（Ｌ３）キャッシュと、複数のプロセッサコアのうち１つのみに対してアクセス可能なレベル２（Ｌ２）キャッシュと、を含んでもよい。Ｌ３キャッシュは、複数のプロセッサコアによって共有されるので、エントリのデータが異なるプロセッサコア間で共有されているかどうかを示すステータス情報にアクセスすることができる。この共有されるステータス情報は、１つのプロセッサコアのみが使用するため、Ｌ２キャッシュ１０４には利用できない。しかしながら、データの共有ステータスは、Ｌ２キャッシュでのデータの置換がメモリアクセス効率にどのように作用するかに影響を及ぼすことがある。例えば、いくつかのメモリアクセスパターンでは、複数のプロセッサコア間で共有されていないデータよりも、複数のプロセッサコア間で共有されるデータをエビクションのために選択するのがより効率的である場合がある。したがって、転送されているデータの共有ステータスの少なくとも一部に基づくエイジヒントを、Ｌ２キャッシュに提供することによって、Ｌ３キャッシュは、置換ポリシーにおいて、Ｌ２キャッシュによって考慮される情報を効果的に拡張することができ、メモリアクセス効率を向上させる。
【０００７】
図１は、いくつかの実施形態による、異なるキャッシュにおいて置換ポリシーを実施するために１つのキャッシュからのヒントを使用するプロセッサ１００のブロック図である。プロセッサ１００は、概して、電子デバイスに代わってタスクを実行するために、命令のセットを実行するように構成されている。したがって、プロセッサ１００は、デスクトップ又はラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲームコンソール等の様々な電子デバイスの何れかで使用することができる。
【０００８】
命令の実行を容易にするために、プロセッサ１００は、複数のプロセッサコア（プロセッサコア１０２，１１０を含む）を含む。プロセッサコアの各々は、例えば、命令をフェッチするフェッチステージと、フェッチされた命令の各々を１つ以上のオペレーションにデコードするデコードステージと、オペレーションを実行する実行ステージと、オペレーションが実行を完了した命令をリタイアさせるリタイアステージと、を有する命令パイプラインを含む。プロセッサコアにおける命令の実行をサポートするために、プロセッサ１００は、複数のキャッシュを含むメモリ階層を含み、各キャッシュは、少なくとも１つのプロセッサコアのためにデータを記憶する１つ以上のメモリモジュールを含む。例えば、図１に示す実施形態では、プロセッサ１００のメモリ階層は、レベル１（Ｌ１）キャッシュ１０３，１１１と、Ｌ２キャッシュ１０４，１１２と、Ｌ３キャッシュ１０６と、を含む。いくつかの実施形態では、メモリ階層は、「メインメモリ」と総称されるメモリデバイスのセット（図示省略）であって、プロセッサ１００の１つのプロセッサコアで実行された命令によってアクセス可能な全てのデータを記憶するように構成されたメモリデバイスのセット（図示省略）を含んでもよい。メインメモリは、プロセッサ１００の外部（例えば、別個の集積回路パッケージ内）に配置されてもよいし、プロセッサ１００のプロセッサコアと同じダイ上に配置されてもよいし、積層されたダイ配列等の共通の集積回路パッケージに組み込まれた異なるダイ上に配置されてもよいし、これらの組み合わせであってもよい。
【０００９】
プロセッサ１００のメモリ階層は、本明細書で更に説明するように、メインメモリが階層の最上位レベルにあり、各キャッシュが階層の指定された下位レベルに位置し、階層の下位レベルに位置するほど対応するプロセッサコアに「より近い」と呼ばれるように、階層的に構成されている。したがって、プロセッサコア１０２に関して、メインメモリがメモリ階層の最上位レベルにあり、Ｌ３キャッシュ１０６が次の下位レベルにあり、Ｌ２キャッシュ１０４がＬ３キャッシュ１０６に対して次の下位レベルにあり、Ｌ１キャッシュ１０３がメモリ階層の最下位レベル（したがって、プロセッサコア１０２の最も近く）にある。同様に、プロセッサコア１１０に関して、メインメモリがメモリ階層の最上位レベルにあり、Ｌ３キャッシュ１０６が次の下位レベルにあり、Ｌ２キャッシュ１１２がＬ３キャッシュ１０６に対して次の下位レベルにあり、Ｌ１キャッシュ１１１がメモリ階層の最下位レベル（したがって、プロセッサコア１１０の最も近く）にある。
【００１０】
また、プロセッサ１００の各キャッシュは、専用のプロセッサコアに代わってデータを記憶する専用キャッシュ、又は、複数のプロセッサコアに代わってデータを記憶する共有キャッシュの何れかとして構成される。したがって、図１の例では、Ｌ１キャッシュ１０３及びＬ２キャッシュ１０４は、プロセッサコア１０２用の専用キャッシュであるため、プロセッサコア１０２のみがＬ１キャッシュ１０３及びＬ２キャッシュ１０４にアクセスすることができる。同様に、Ｌ１キャッシュ１１１及びＬ２キャッシュ１１２は、プロセッサコア１１０用の専用キャッシュである。Ｌ３キャッシュ１０６は、プロセッサコア１０２及びプロセッサコア１１０の両方によってアクセス可能な共有キャッシュとして構成されている。いくつかの実施形態では、プロセッサコア１１０は、Ｌ１キャッシュ１０３、Ｌ２キャッシュ１０４及びプロセッサコア１０２への各々の接続と同様に、自身の専用Ｌ１キャッシュ（図示省略）及びＬ２キャッシュ（図示省略）に接続されている。
【００１１】
プロセッサコアは、メモリ階層と相互作用するために、実行命令に基づいてメモリアクセスオペレーションを生成する。メモリアクセスオペレーションの例には、データをメモリ位置に書き込むための書き込みオペレーションと、データをメモリ位置からプロセッサコアに転送するための読み出しオペレーションとを含む。各メモリアクセスオペレーションは、要求によってターゲットとされるメモリ位置を示すメモリアドレスを含む。メモリ階層の異なるレベルは、各メモリアクセス要求を満たすように相互作用する。例示すると、プロセッサコア１０２からのメモリアクセス要求に応じて、Ｌ１キャッシュ１０３は、Ｌ１キャッシュ１０３が、メモリアクセス要求によってターゲットとされるメモリアドレスに関連するデータを記憶するエントリを有するかどうかを識別する。有する場合にはキャッシュヒットが発生し、Ｌ１キャッシュ１０３は、データをエントリに書き込み（書き込みオペレーションの場合）、又は、データをエントリからプロセッサコア１０２に提供する（読み出しオペレーションの場合）ことによって、メモリアクセスを満たす。
【００１２】
Ｌ１キャッシュ１０３が、メモリアクセス要求によってターゲットとされるメモリアドレスに関連するデータを記憶するエントリを有していない場合、キャッシュミスが発生する。Ｌ１キャッシュ１０３でのキャッシュミスに応じて、メモリアクセス要求は、メモリアクセス要求が上位レベルのキャッシュでキャッシュヒットになるまで（すなわち、メモリアクセス要求によってターゲットとされるデータが上位レベルのキャッシュに位置する）、又は、メモリアクセス要求がメインメモリに到達するまで、メモリ階層をトラバースする。メモリアクセス要求がより上位レベルのキャッシュでヒットを生じることに応じて、メモリ階層は、Ｌ１キャッシュ１０３を含むメモリ階層の各下位レベルのキャッシュにデータを転送し、その後、上述したようにＬ１キャッシュ１０３においてメモリアクセス要求を満たす。よって、例えば、メモリアクセス要求がＬ３キャッシュ１０６でヒットした場合、メモリ階層は、ターゲットとされるエントリを、Ｌ３キャッシュ１０６からＬ２キャッシュ１０４のエントリにコピーし、更に、Ｌ１キャッシュ１０３のエントリにコピーして、メモリアクセス要求が満たされる。同様に、メモリアクセス要求がメインメモリに到達することに応じて、メモリ階層は、データを、メモリアクセス要求によってターゲットとされるメモリ位置からＬ３キャッシュ１０６、Ｌ２キャッシュ１０４及びＬ１キャッシュ１０３の各々にコピーする。
【００１３】
上述したように、データは、メモリ階層の１つのレベルから別のレベルに移動されることがある。しかしながら、メモリ階層のキャッシュレベルに関して、各キャッシュは、メモリアクセス要求のターゲットとなるメモリ位置の数に対して、データを記憶するスペースが限られている。例えば、いくつかの実施形態では、各キャッシュは、セットアソシエイティブキャッシュであり、キャッシュのエントリがセットに分割され、各セットは、メモリアクセス要求のターゲットとすることができるメモリアドレスの異なるサブセットに割り当てられる。別のキャッシュ又はメインメモリからデータを受信したことに応じて、キャッシュは、データに対応するメモリアドレスを識別し、更に、メモリアドレスに割り当てられたセットにデータを記憶するために利用可能なエントリを当該キャッシュが有するかどうかを識別する。有する場合、キャッシュは、利用可能なエントリにデータを記憶する。有していない場合、キャッシュは、置換するエントリを選択し、選択されたエントリをメモリ階層の次の上位レベルに提供することによって当該エントリをエビクトし、選択されたエントリにデータを記憶する。
【００１４】
各キャッシュは、置換するエントリを選択するために、選択基準を管理する置換ポリシーを実施する。いくつかの実施形態では、Ｌ２キャッシュ１０４の置換ポリシーは、エントリ毎のエイジ値（age value）に基づいている。特に、Ｌ２キャッシュ１０４は、Ｌ２キャッシュ１０４がデータをエントリに記憶する場合に、エイジ値を各エントリに割り当てる。更に、Ｌ２キャッシュ１０４は、例えばエントリに記憶されたデータにアクセスする等の特定の基準に応じて、エントリ毎にエイジ値を調整する。例えば、Ｌ２キャッシュ１０４のエントリがメモリアクセス要求によってアクセスされたことに応じて、当該エントリのエイジ値を減少させ、他の全てのエントリのエイジ値を増加させることができる。Ｌ２キャッシュ１０４は、置換のためのセットのエントリを選択するために、セット内のエントリのエイジ値を比較し、最も高いエイジ値を有するエントリを選択する。
【００１５】
いくつかの実施形態では、Ｌ２キャッシュ１０４は、Ｌ２キャッシュ１０４が利用可能な様々な情報（例えば、エントリに記憶されたデータが命令データ（例えば、プロセッサコアで実行される命令）であるかオペランドデータ（例えば、命令を実行するためのオペランドとして使用されるデータ）であるかどうか、エントリのデータがＬ１キャッシュ１０３に記憶されることによって、近い将来要求される可能性があるかどうか、キャッシュセット内のキャッシュの他のエントリの有効性、エントリのデータが、プリフェッチ要求に応じてＬ２キャッシュ１０４に記憶されたかどうか等）に基づいて、エントリの初期のエイジ値を設定する。また、Ｌ３キャッシュ１０６は、データ（例えば、データ１１５）をＬ２キャッシュ１０４に提供する場合に、利用可能でないデータに関する情報を示すエイジヒント（例えば、エイジヒント１１８）をＬ２キャッシュ１０４に提供することができる。例えば、いくつかの実施形態では、Ｌ３キャッシュ１０６は、共有される（すなわち、プロセッサコア１１０及びプロセッサコア１０２の両方によってアクセスすることができる）いくつかのデータを記憶することができ、共有されていない（したがって、プロセッサコア１０２のみがアクセスすることができる）他のデータを記憶することができる。Ｌ３キャッシュ１０６は、データをＬ２キャッシュ１０４に提供する場合に、データが共有データであるか非共有データであるかをエイジヒント１１８によって示すことができる。別の例として、いくつかの実施形態では、プロセッサコア１１０で実行される命令は、Ｌ３キャッシュのデータが「一時的な」データであることを示すことができ、これにより、当該データがプロセッサコア１０２，１１０の何れかによって繰り返しアクセスされる予測のレベルを示す。例えば、データが一時的なデータであるという指標は、データがＬ２キャッシュ１０４において繰り返しアクセスされると予測されないことを示すことができ、したがって、比較的高い初期エイジ値が与えられるべきである。この情報は、プロセッサコア１１０における命令によって生成されることから、Ｌ２キャッシュ１０４が当該情報を直接利用することができない。しかしながら、Ｌ３キャッシュ１０６は、エイジヒント１１８を介して、Ｌ２キャッシュ１０４に提供されるデータが一時的なデータであるかどうかを示すことができる。よって、エイジヒント１１８は、Ｌ２キャッシュ１０４自身に記憶された情報を介してＬ２キャッシュ１０４が直接利用できない情報を、Ｌ２キャッシュ１０４に与える。
【００１６】
Ｌ２キャッシュ１０４は、データ１１５を受信したことに応じて、データ１１５をエントリに記憶し、エイジヒント１１８に少なくとも部分的に基づいてエントリの初期エイジ値を設定する。いくつかの実施形態では、Ｌ２キャッシュ１０４は、エイジヒント１１８と、Ｌ２キャッシュ１０４が利用可能なＬ２データ特性との組み合わせに基づいて、エントリの初期エイジ値を設定する。例えば、いくつかの実施形態では、Ｌ２キャッシュ１０４は、Ｌ２データ特性及びエイジヒント値の異なる組み合わせを含む複数のエントリと、各組み合わせの初期エイジ値と、を有する初期エイジテーブルを含む。Ｌ２キャッシュ１０４は、データ１１５を受信したことに応じて、データ１１５のＬ２データ特性を識別し、次に、Ｌ２データ特性とエイジヒント１１８との組み合わせに対応するテーブルのエントリをルックアップする。次いで、Ｌ２キャッシュ１０４は、データ１１５が記憶されているエントリに対して、エントリの初期エイジ値を割り当てる。
【００１７】
図２は、いくつかの実施形態による、図１のＬ２キャッシュ１０４のブロック図である。図示された例では、Ｌ２キャッシュ１０４は、キャッシュコントローラ２２０と、記憶装置アレイ２２２と、を備える。記憶装置アレイ２２２は、Ｌ２キャッシュ１０４に代わってデータを記憶するように構成された複数のメモリセルを含む。特に、記憶装置アレイ２２２は、複数のエントリ（例えば、エントリ２３０）を含むように構成されており、各エントリは、エントリのデータを記憶するデータフィールド（例えば、エントリ２３０のデータフィールド２３１）を含む。また、各エントリは、エントリのエイジ値を記憶するエイジフィールド（例えば、エントリ２３０のエイジフィールド２３２）を含む。
【００１８】
キャッシュコントローラ２２０は、記憶装置アレイ２２２における置換ポリシーの実施を含む、Ｌ２キャッシュ１０４のオペレーションを制御するように構成されている。したがって、キャッシュコントローラ２２０は、エントリ毎に初期エイジ値を確立し、初期エイジ値をエントリのエイジフィールドに記憶するように構成されている。また、キャッシュコントローラ２２０は、特定の基準に基づいて、エントリ毎にエイジ値を調整するように構成されている。例えば、キャッシュコントローラ２２０は、エントリがＬ２キャッシュ１０４でキャッシュヒットを生じさせることに応じて当該エントリのエイジ値を減少させることができ、異なるエントリがキャッシュヒットを生じさせることに応じて当該エントリのエイジ値を増加させることができる。
【００１９】
キャッシュコントローラ２２０は、エントリの初期エイジ値を確立するために、初期エイジテーブル２２６を使用する。いくつかの実施形態では、初期エイジテーブル２２６は、複数のエントリを含み、各エントリは、Ｌ２データ特性とエイジヒント値との異なる組み合わせを含む。また、各エントリは、Ｌ２データ特性とエイジヒントとの組み合わせに対応する初期エイジ値を含む。キャッシュコントローラ２２０は、Ｌ２キャッシュ１０４がデータ１１５を受信したことに応じて、データ１１５のＬ２データ特性２２５を識別する。次に、キャッシュコントローラ２２０は、Ｌ２データ特性とエイジヒント１１８との組み合わせに対応する初期エイジテーブル２２６のエントリをルックアップする。次いで、キャッシュコントローラは、識別された初期エイジテーブルを、データ１１５が記憶されている記憶装置アレイ２２２のエントリのエイジフィールドに記憶する。
【００２０】
図３は、Ｌ２キャッシュ１０４が、Ｌ３キャッシュ１０６からのエイジヒントに基づいて、異なる初期エイジ値を異なるエントリに割り当てる一例を示すブロック図である。特に、図３は、Ｌ２キャッシュ１０４の２つの異なるエントリ（それぞれ指定されたエントリ３３５及びエントリ３３６）を示している。各エントリのデータは、対応するエイジヒントと、エントリ３３５の指定された共有データヒント３３０と、エントリ３３６の一時的データヒント３３２と共に、Ｌ３キャッシュ１０６によって提供される。
【００２１】
共有データヒント３３０は、エントリ３３５に記憶されたデータが、プロセッサコア１０２及びプロセッサコア１１０の両方によってアクセス可能な共有データであることを示す。したがって、Ｌ２キャッシュ１０４は、共有データヒント３３０を受信したことに応じて、エントリ３３５のエイジフィールド３３８に初期エイジ値「１０」を記憶する。一時的データヒント３３２は、エントリ３３６に記憶されたデータが、繰り返しアクセスされる可能性の低い一時的なデータとしてプロセッサコア１０２，１１０の何れかで実行される命令によって示されていることを示す。したがって、Ｌ２キャッシュ１０４は、一時的データヒント３３２を受信したことに応じて、エントリ３３６のエイジフィールド３３９に初期エイジ値「１１」を記憶する。よって、図３の例では、Ｌ２キャッシュ１０４は、エントリの異なるエイジヒントを受信したことに応じて、異なるエントリに異なる初期エイジ値を記憶する。
【００２２】
図４は、いくつかの実施形態による、異なるキャッシュから受信したヒントに基づいて、キャッシュが置換ポリシーを実施する方法４００のフロー図である。説明を目的として、方法４００は、図１のプロセッサ１００における例示的な実施に関して説明される。ブロック４０２において、Ｌ２キャッシュ１０４は、Ｌ３キャッシュ１０６からデータを受信する。Ｌ２キャッシュ１０４は、Ｌ２キャッシュ１０４の置換ポリシーに基づいて、記憶装置アレイ２２２のエントリを選択し、選択されたエントリのデータフィールドにデータを記憶する。ブロック４０４において、Ｌ２キャッシュ１０４は、ブロック４０２で受信したデータのエイジヒントを、Ｌ３キャッシュ１０６から受信する。エイジヒントは、データが共有データであるかどうか、データが一時的なデータとして命令によって示されているかどうか等のように、Ｌ２キャッシュ１０４が直接利用できないデータに関する情報を示している。
【００２３】
ブロック４０６において、キャッシュコントローラ２２０は、ブロック４０４で受信したエイジヒントと、キャッシュコントローラ２２０によって識別されたデータの他の特性とに基づいて、初期エイジテーブル２２６において当該データの初期エイジ値をルックアップする。キャッシュコントローラ２２０は、データが記憶されているエントリのエイジフィールドに初期エイジ値を記憶する。ブロック４０８において、キャッシュコントローラ２２０は、記憶装置アレイ２２２でのエントリへのメモリアクセスに基づいて、初期エイジ値を変更する。例えば、キャッシュコントローラ２２０は、エントリがメモリアクセスによってターゲットとされたことに応じて、エントリのエイジ値を減少させ、同じセット内の他のエントリのエイジ値を増加させることができる。ブロック４１０において、キャッシュコントローラ２２０は、セットに記憶されるデータを受信したことに応じて、及び、データを記憶するセット内で利用可能な空の又は無効なエントリが存在しないことを識別したことに応じて、セット内のエイジ値に基づいて、セット内のエントリをエビクション用に選択する。例えば、キャッシュコントローラ２２０は、最も高いエイジ値を有するエントリを選択することができ、又は、複数のエントリが同一の最も高いエイジ値を有する場合には、各エントリの中からエントリをランダムに選択することができる。キャッシュコントローラ２２０は、エントリのデータをＬ３キャッシュ１０６に提供することによって、選択されたエントリをエビクトし、受信したデータを当該選択されたエントリに記憶する。
【００２４】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されているか、そうでない場合には、非一時的なコンピュータ可読記憶媒体上で有形に具体化された１つ以上の実行可能な命令セットを含む。ソフトウェアは、１つ以上のプロセッサによって実行された場合に、上述した技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、他の不揮発性メモリデバイス等の磁気又は光ディスク記憶装置、ソリッドステート記憶装置等が挙げられる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能な命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈され若しくは他の方法で実行可能な他の命令フォーマットであってもよい。
【００２５】
概説において上記で説明した動作又は要素の全てが必要であるとは限らず、特定の動作又はデバイスの一部が必要でなくてもよく、１つ以上の更なる動作が実行されてもよく、説明した要素に加えて更なる要素が含まれてもよいことに留意されたい。更に、動作が列挙される順序は、必ずしもそれらが実行される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変更を行うことができることを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、そのような変更の全ては、本発明の範囲内に含まれることが意図される。
【００２６】
利益、他の利点及び問題に対する解決手段が特定の実施形態に関して上述されている。しかしながら、利益、利点、問題に対する解決手段、及び、何等かの利益、利点、解決手段が発生するか、顕著になる可能性のある機能は、何れか又は全ての特許請求の範囲の重要な特徴、必須の特徴、本質的な特徴として解釈されるべきでない。更に、開示された発明は、本明細書における教示の利益を有する当業者には明らかであるが、異なるが同等の方法で変更され、実施され得るので、上記の開示された特定の実施形態は、例示に過ぎない。以下の特許請求の範囲に記載されているもの以外に、本明細書に示された構成又は設計の詳細に制限はない。したがって、上記の開示された特定の実施形態は、変更又は修正されてもよく、全てのそのような変形は、開示された発明の範囲内にあると考えられることが明らかである。したがって、本願で求められる保護は、以下の特許請求の範囲に記載されている。
【図１】
2019521410.tif 000003
【図２】
2019521410.tif 000004
【図３】
2019521410.tif 000005
【図４】
2019521410.tif 000006
【国際調査報告】
2019521410.tif 000007
2019521410.tif 000008