(57)【要約】プロセッサ（１０１）は、キャッシュの異なるテスト領域（１１５，１１６）に関するアクセスメトリックに基づいて転送ポリシー（１１１，１１２）をキャッシュ（１１０）の一部（１１８）に適用し、各テスト領域は、プリフェッチ要求に応じて記憶されたがデマンド要求の対象ではなかったキャッシュエントリ内のデータに対して異なる転送ポリシーを適用する。１つのテスト領域では、未使用のプリフェッチがキャッシュのテスト領域からエビクトされるときにキャッシュ階層内の上位レベルのキャッシュに転送されるという転送ポリシーが適用される。他のテスト領域では、未使用のプリフェッチがキャッシュのテスト領域からエビクトされるときに上位レベルのキャッシュに転送されることなく置換される（又は、上位レベルのキャッシュに転送されるが無効なデータとして記憶される）という転送ポリシーが適用される。【選択図】図１
2019525330.tif 000002
【特許請求の範囲】
【請求項１】
第１キャッシュ（１１０）の第１領域（１１６）の第１キャッシュエントリ（２４６）の第１データを置換することに応じて、前記第１データが、デマンド要求の対象ではなかったプリフェッチデータであることに応じて、前記第１データを第２キャッシュ（１２０）に転送することと、
前記第１キャッシュの第２領域（１１５）の第２キャッシュエントリ（２４４）の第２データを置換することに応じて、前記データがデマンド要求の対象ではなかったプリフェッチデータであることに応じて、前記第２データを前記第１キャッシュから破棄することと、を含む、
方法。
【請求項２】
前記第１キャッシュの前記第１領域に関する第１性能特性（５０４）と、前記第１キャッシュの前記第２領域に関する第２性能特性と、を測定することと、
前記第１性能特性及び前記第２性能特性に基づいて、前記第１キャッシュの第３領域（１１８）に対して第１転送ポリシー（１１１）を選択することと、
前記第１転送ポリシーに基づいて、前記第１キャッシュの前記第３領域のキャッシュエントリ（５１０）のデータを置換することに応じて、前記第１キャッシュの前記第３領域のキャッシュエントリのデータを前記第２キャッシュに選択的に転送することと、をさらに含む、
請求項１の方法。
【請求項３】
前記第１転送ポリシーを選択することは、
前記データが、デマンド要求の対象ではなかったプリフェッチデータであることに応じて、前記データが無効であることを示すステータスで前記データを前記第２キャッシュに転送することを含む、
請求項２の方法。
【請求項４】
前記第１転送ポリシーを選択することは、
前記データが、デマンド要求の対象ではなかったプリフェッチデータであることに応じて、前記データを有効なステータスで前記第２キャッシュに転送することを含む、
請求項２の方法。
【請求項５】
前記第１転送ポリシーを選択することは、第１時間（４５５）において前記第１転送ポリシーを選択することを含み、
前記方法は、
第２時間（４５６）において、前記第１性能特性及び前記第２性能特性の間の関係の変化に応じて、前記第１キャッシュの前記第３領域に対して第２転送ポリシーを選択することであって、前記第２転送ポリシーは前記第１転送ポリシーと異なる、ことをさらに含む、
請求項２の方法。
【請求項６】
前記第１性能特性は、前記第１キャッシュの前記第１領域におけるキャッシュヒット率（４５２）を含み、
前記第２性能特性は、前記第１キャッシュの第２領域におけるキャッシュヒット率（４５３）を含む、
請求項２の方法。
【請求項７】
前記第１性能特性は、前記第１キャッシュの前記第１領域におけるキャッシュミス率を含み、
前記第２性能特性は、前記第１キャッシュの第２領域におけるキャッシュミス率を含む、
請求項２の方法。
【請求項８】
前記第１性能特性は、前記第１キャッシュの前記第１領域におけるキャッシュヒット率と、前記第１キャッシュの前記第１領域におけるキャッシュミス率と、の第１加重和を含み、
前記第２性能特性は、前記第１キャッシュの第２領域におけるキャッシュヒット率と、前記第１キャッシュの前記第２領域におけるキャッシュミス率と、の第２加重和を含む、
請求項２の方法。
【請求項９】
前記第１性能特性と前記第２性能特性とは、異なる性能特性タイプである、
請求項２の方法。
【請求項１０】
第１領域（１１５）及び第２領域（１１６）を含む第１キャッシュ（１１０）と、
第２キャッシュ（１２０）と、
キャッシュコントローラ（１０５）と、を備え、
前記キャッシュコントローラは、
前記第１領域において、デマンド要求の対象ではなかったプリフェッチ要求に応じて、データが第１キャッシュエントリに記憶されているか否かに基づいて、前記第１キャッシュエントリ（２４０）に対して第１転送ポリシー（１１１）を選択し、
第２領域において、デマンド要求の対象ではなかったプリフェッチ要求に応じて、データが前記第２領域のキャッシュエントリに記憶されているか否かとは無関係に、前記キャッシュエントリに対して第２転送ポリシー（１１２）を選択し、
前記第１領域及び前記第２領域で選択された転送ポリシーに基づいて、前記第１キャッシュからのキャッシュエントリのエビクトを必要とするデータを前記第１キャッシュで受信したことに応じて、前記第１領域及び前記第２領域のデータを前記第２キャッシュに選択的に転送する、ように構成されている、
プロセッサ（１０１）。
【請求項１１】
前記第１領域に関する第１性能特性と、前記第２領域に関する第２性能特性と、を測定する性能モニタ（１０４）をさらに備え、
前記キャッシュコントローラは、
前記第１性能特性及び前記第２性能特性に基づいて、前記第１キャッシュの第３領域（１１８）に対して第１転送ポリシーを選択し、
選択された第１転送ポリシーに基づいて、前記第１キャッシュからのキャッシュエントリのエビクトを必要とするデータを前記第１キャッシュで受信したことに応じて、前記第１キャッシュの前記第３領域のキャッシュラインのデータを前記第２キャッシュに選択的に転送する、ように構成されている、
請求項１０のプロセッサ。
【請求項１２】
前記第１転送ポリシーは、
デマンド要求の対象ではなかったプリフェッチ要求（２５０）に応じて、選択された第１キャッシュエントリに記憶されたデータを選択して置換することを、前記選択されたデータが破棄されることを示すステータスで前記選択されたデータを前記第２キャッシュに転送することによって行うように構成されている、
請求項１１のプロセッサ。
【請求項１３】
前記第２転送ポリシーは、
前記受信したデータを第２キャッシュエントリに記憶する前に、前記第２キャッシュエントリのデータを前記第２キャッシュに転送するように構成されている、
請求項１１のプロセッサ。
【請求項１４】
前記キャッシュコントローラは、
第１時間（４５５）において前記第１転送ポリシーを選択し、
第２時間（４５６）において、前記第１転送特性及び前記第２転送特性の間の関係の変化に応じて、前記第３領域に対して第２転送ポリシーを選択する、ように構成されており、
前記第２転送ポリシーは前記第１転送ポリシーと異なる、
請求項１１のプロセッサ。
【請求項１５】
前記第１性能特性は、前記第１領域におけるキャッシュヒット率（４５３）を含み、
前記第２性能特性は、前記第２領域におけるキャッシュヒット率（４５２）を含む、
請求項１１のプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
多くのプロセッサは、メモリアクセス効率を向上させるためにメモリ階層を採用しており、これにより、プロセッサは、メインメモリに記憶されたデータのサブセットを記憶するための１つ以上のキャッシュを含む。メインメモリからのデータのサブセットがキャッシュに記憶される基準は、プロセッサの設計に応じて異なり得るが、通常は、最近アクセスされたデータをキャッシュすることを優先する。また、いくつかのプロセッサは、近い将来にプロセッサによってアクセスされる可能性があるデータを予測し、そのデータをメインメモリから１つ以上のキャッシュにコピーする１つ以上のプリフェッチャを採用している。プロセッサは、新たなデータを１つ以上のキャッシュに移動するために、指定された置換方式に基づいて、以前に記憶されたデータをエビクトするために選択するが、従来の置換方式では、メモリアクセス効率が望まないほど低くなる可能性がある。
【０００２】
添付図面を参照することによって、本開示は当業者により良く理解され、その多数の特徴及び利点が明らかになるであろう。異なる図面での同じ参照記号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、キャッシュの異なるテスト領域に関するアクセスメトリックに基づいて転送ポリシーをキャッシュの一部に適用する処理システムのブロック図である。
【図２】いくつかの実施形態による、キャッシュの異なるテスト領域において異なる転送ポリシーを使用する図１の処理システムの一例を示す図である。
【図３】いくつかの実施形態による、キャッシュの異なるテスト領域において異なる転送ポリシーを使用する図１の処理システムの一例を示す図である。
【図４】いくつかの実施形態による、キャッシュのテスト領域に関するアクセスメトリックに基づいてキャッシュの非テスト領域における転送ポリシーを変更する図１の処理システムの一例を示す図である。
【図５】いくつかの実施形態による、キャッシュの異なるテスト領域に関するアクセスメトリックに基づいて転送ポリシーをキャッシュの一部に適用する方法のフロー図である。
【発明を実施するための形態】
【０００４】
図１〜図５は、キャッシュの異なるテスト領域に関するアクセスメトリックに基づいて転送ポリシーをキャッシュの一部に適用するための技術であって。各テスト領域は、プリフェッチ要求に応じて記憶されたがデマンド要求の対象ではなかったキャッシュエントリ内のデータ（「未使用のプリフェッチ」又は「未使用のプリフェッチデータ」と呼ばれる）に対して異なる転送ポリシーを適用する技術を示す図である。１つのテスト領域では、未使用のプリフェッチがキャッシュのテスト領域からエビクトされると、キャッシュ階層内の上位レベルのキャッシュに転送されるという転送ポリシーが適用される。他のテスト領域では、未使用のプリフェッチがキャッシュのテスト領域からエビクトされると、上位レベルのキャッシュに転送されることなく置換される（又は、上位レベルのキャッシュに転送されるが無効なデータとして記憶される）という転送ポリシーが適用される。異なるテスト領域に関するアクセスメトリックに基づいてキャッシュの非テスト部分に対するキャッシュ転送ポリシーを選択することによって、キャッシュは、転送ポリシーを、プロセッサで現在実行中の命令のパターンに対してより効率的なポリシーに動的に変更する。
【０００５】
一例を挙げて説明すると、いくつかの実施形態では、キャッシュは、２つのテスト領域と１つの非テスト領域とを有し、プロセッサからのデマンド要求及びプリフェッチャからのプリフェッチ要求に応じてデータを記憶するために、全ての領域がキャッシュによって使用される。キャッシュは、異なるテスト領域に対して異なる転送ポリシーを使用することによって、１つのテスト領域に対して、未使用のプリフェッチを記憶するエビクトされたキャッシュエントリを、上位レベルのキャッシュに転送するようにする。他のテスト領域では、キャッシュは、データを上位レベルのキャッシュに転送することなく、未使用のプリフェッチを記憶するエビクトされたキャッシュエントリを置換し、又は、データを上位レベルのキャッシュに転送するが当該データを無効なデータとして記憶する。プロセッサは、各テスト領域に関するアクセスメトリック（例えば、キャッシュヒット率、キャッシュミス率、又は、これらの組み合わせ等）を監視する。プロセッサは、アクセスメトリックに基づいて、１つのテスト領域に対する転送ポリシーを選択し、それをキャッシュの非テスト領域に適用する。例えば、１つのテスト領域のキャッシュヒット率が高い場合、プロセッサは、そのテスト領域の転送ポリシーをキャッシュの非テスト領域に適用することによって、キャッシュ全体のヒット率を向上させる。
【０００６】
本明細書では、「転送ポリシー」という用語は、キャッシュエントリに記憶されたデータがキャッシュからエビクトされるときにどのように処理されるかを指す。転送ポリシーは、全ての未使用のプリフェッチがキャッシュからエビクトされると、上位レベルのキャッシュに転送され、有効なデータとして記憶されることを要求する場合がある。他の転送ポリシーは、全ての未使用のプリフェッチがキャッシュからエビクトされると、破棄されることを定めている。いくつかの実施形態では、プリフェッチデータは、データを上位レベルのキャッシュに転送することなく、キャッシュにおいてデータを置換することによって破棄される。いくつかの他の実施形態では、プリフェッチデータは、データを上位レベルのキャッシュに提供するが、データが無効であることを示す指標と共にデータを上位レベルのキャッシュに記憶することによって破棄される。これにより、上位レベルのキャッシュにおけるキャッシュエントリの置換中にデータを有効な着信データに置換することができる。
【０００７】
図１は、いくつかの実施形態による、キャッシュの異なるテスト領域に関するアクセスメトリックに基づいて、未使用のプリフェッチに対するキャッシュ転送ポリシーをキャッシュの一部に適用する処理システム１００を示す図である。処理システム１００は、概して、電子デバイスに代わってタスクを実行するために、コンピュータプログラムの形態で構成された命令のセットを実行するように構成されている。したがって、処理システム１００は、例えば、デスクトップ又はラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲーム機等の様々な電子デバイスの何れにも使用することができる。
【０００８】
処理システム１００は、命令の実行を容易にするために、プロセッサ１０１と、メモリ１３０と、を含む。プロセッサ１０１は、プロセッサコア１０２と、キャッシュコントローラ１０５と、Ｌ２キャッシュ１１０と、Ｌ３キャッシュ１２０と、を含む。いくつかの実施形態では、プロセッサ１０１の各モジュールは、プロセッサコア１０２の少なくとも一部を形成するために同じ半導体ダイ上に形成されており、メモリ１３０は、異なる半導体ダイ上に形成されており、１つ以上のバス又は信号線を介してプロセッサ１０１に接続されている。いくつかの実施形態では、メモリ１３０の少なくとも一部は、プロセッサ１０１のモジュールと同じ半導体ダイ上に形成されている。
【０００９】
Ｌ２キャッシュ１１０、Ｌ３キャッシュ１２０及びメモリ１３０の各々は、概して、データを記憶するように構成されたメモリデバイスであり、したがって、ランダムアクセスメモリ（ＲＡＭ）メモリモジュール、不揮発性メモリデバイス（例えば、フラッシュメモリ）等であってもよい。本明細書でさらに説明するように、Ｌ２キャッシュ１１０、Ｌ３キャッシュ１２０及びメモリ１３０は、処理システム１００のメモリ階層を形成する。また、処理システム１００のメモリ階層は、他のメモリモジュール（例えば、図１に示されていない追加のキャッシュ等）を含んでもよい。
【００１０】
プロセッサコア１０２は、例えば、命令をフェッチするためのフェッチステージと、フェッチされた命令の各々を１つ以上の動作にデコードするためのデコードステージと、動作を実行するための実行ステージと、動作の実行が完了した命令をリタイアさせるためのリタイアステージと、を有する命令パイプラインを含む。命令に基づいて生成された動作のセットは、本明細書においてメモリアクセス命令と呼ばれ、処理システム１００のメモリ階層からデータをロードする要求（ロード動作）、及び、処理システム１００のメモリ階層にデータを記憶する要求である。プロセッサコア１０２によって生成されたメモリアクセス要求は、実行中のプログラムによって使用されているデータ又は必要とされることが分かっているデータをロード又は記憶する要求を表しており、本明細書においてデマンド要求と呼ばれる。
【００１１】
キャッシュコントローラ１０５は、概して、Ｌ２キャッシュ１１０、Ｌ３キャッシュ１２０及びメモリ１３０の間でデータを移動させることによって、処理システム１００のメモリ階層を管理するように構成されたモジュールである。特に、Ｌ２キャッシュ１１０及びＬ３キャッシュ１２０の各々は、複数のエントリを含むメモリデバイスであり、各エントリは、メモリ１３０の１つ以上のアドレスに関連付けられている。キャッシュコントローラ１０５は、メモリアクセス要求に応じて、Ｌ２キャッシュ１１０の１つ以上のエントリに記憶されたデータをレビューして、何れのエントリが、メモリアクセス要求の対象となるメモリアドレスに関連するデータを記憶しているかどうかを判別する。記憶している場合、キャッシュコントローラ１０５は、キャッシュヒットを示し、データをエントリに記憶することによって（記憶動作の場合）、又は、識別されたエントリのデータをプロセッサコア１０２に提供することによって（ロード動作の場合）、識別されたエントリにおけるメモリアクセス要求を満たす。
【００１２】
メモリアドレスに関連するデータがＬ２キャッシュ１１０のエントリに記憶されていない場合、キャッシュコントローラ１０５は、キャッシュミスを示し、Ｌ３キャッシュ１２０に対して要求を発行する。メモリアクセス要求に応じて、キャッシュコントローラ１０５（又は、いくつかの実施形態では、他のキャッシュコントローラ）は、Ｌ３キャッシュ１２０の１つ以上のエントリに記憶されたデータをレビューして、何れのエントリがメモリアクセス要求の対象となるメモリアドレスに関連するデータを記憶しているかどうかを判別する。記憶している場合、キャッシュコントローラ１０５は、キャッシュヒットを示し、データをエントリに記憶することによって（記憶動作の場合）、又は、識別されたエントリのデータをＬ２キャッシュ１１０に提供し、その後Ｌ２キャッシュ１１０からプロセッサコア１０２に提供されることによって（ロード動作の場合）、識別されたエントリにおけるメモリアクセス要求を満たす。メモリアドレスに関連するデータがＬ３キャッシュ１２０のエントリに記憶されていない場合、キャッシュコントローラ１０５は、キャッシュミスを示し、メモリアドレスのデータに対する要求をメモリ１３０に発行する。キャッシュコントローラ１０５は、メモリ１３０からデータを受信すると、データをＬ３キャッシュ１２０のエントリに記憶し、その後、データがＬ３キャッシュ１２０からＬ２キャッシュ１１０に転送され、Ｌ２キャッシュ１１０がデータをプロセッサコア１０２に提供することによって、メモリアクセス要求が満たされる。
【００１３】
プロセッサ１０１は、メモリアクセス効率の向上をサポートするために、プリフェッチャ１０６を含む。プリフェッチャ１０６は、キャッシュコントローラ１０５に発行されたデマンド要求を監視してパターンを識別し、識別されたパターンに基づいて、近い将来にプロセッサコア１０２によるデマンド要求の対象となるメモリアドレスを予測する。プリフェッチャ１０６は、本明細書ではプリフェッチ要求と呼ばれる、識別されたメモリアドレスを対象とするメモリアクセス要求をキャッシュコントローラ１０５に発行する。キャッシュコントローラ１０５は、先ず、プリフェッチ要求の対象となるメモリアドレスに関連するデータがＬ２キャッシュ１１０のエントリに既に記憶されているか否かを識別し、記憶されていない場合に、Ｌ３キャッシュ１２０又はメモリ１３０からのデータを要求し、データをＬ２キャッシュ１１０のエントリに記憶することによって、プリフェッチ要求をデマンド要求と同様に扱う。
【００１４】
いくつかの実施形態では、Ｌ２キャッシュ１１０及びＬ３キャッシュ１２０の各エントリは、メモリアドレスのサブセットに関連付けられており、そのサブセットに関連付けられたデータのみがエントリに記憶されることが許可される。例えば、いくつかの実施形態では、キャッシュは、Ｍ個のセットを有し、Ｍ個のセットの各々がＮ個のエントリを含む、Ｎウェイセットアソシアティブキャッシュである。Ｍ個のセットの各々に異なるメモリアドレスのサブセットが割り当てられることによって、データが、エントリの割り当てられたサブセット内のメモリアドレスに関連付けられている場合には、キャッシュコントローラ１０５は、データをエントリに記憶するのみである。セットの全てのエントリがメモリアクセスの対象となり得るデータ（本明細書では「有効なデータ」と呼ばれる）を記憶している場合、そのセットは、本明細書においてフル（full）と呼ばれる。さらに、キャッシュコントローラ１０５は、フルのセットに記憶するデータを受信した場合、エビクトされる（すなわち、セットから削除される）セットの１つのエントリを選択して、受信したデータと置換する。エントリがＬ２キャッシュ１１０からエビクトされた場合、当該エントリは、Ｌ３キャッシュ１２０に転送されてもよいし、最初にＬ３キャッシュ１２０に転送されることなく置換されてもよい。キャッシュコントローラ１０５が転送するエントリ、又は、転送することなく置換するエントリを選択するために使用するスキームは、Ｌ２キャッシュ１１０の転送ポリシーと呼ばれる。
【００１５】
Ｌ２キャッシュ１１０の転送ポリシーは、エビクトされたキャッシュエントリのより効率的な転送を容易にするために、キャッシュエントリに記憶されたデータがプリフェッチ要求に応じて記憶されたが、デマンド要求の対象ではなかったかどうかに少なくとも部分的に基づくことができる。１つの転送ポリシーの下では、Ｌ２キャッシュ１１０内の未使用のプリフェッチは、Ｌ２キャッシュ１１０からエビクトされると、有効なステータスでＬ３キャッシュ１２０に転送される。異なる転送ポリシーの下では、Ｌ２キャッシュ１１０内の未使用のプリフェッチは、データが無効であり、したがって破棄に適格であることを示すステータスでＬ３キャッシュ１２０に転送される。さらに他の転送ポリシーでは、Ｌ２キャッシュ１１０内の未使用のプリフェッチは、Ｌ２キャッシュ１１０からエビクトされると、Ｌ３キャッシュ１２０に転送されることなく置換される。通常、プリフェッチ要求に応じてＬ２キャッシュ１１０に転送されたデータは、Ｌ３キャッシュ１２０から以前に転送又はコピーされたものである。いくつかの実施形態では、Ｌ３キャッシュ１２０はＬ２キャッシュ１１０を含まず、これにより、Ｌ２キャッシュ１１０に記憶されたキャッシュエントリの少なくとも一部がＬ３キャッシュ１２０に記憶されない。Ｌ３キャッシュ１２０がＬ２キャッシュ１１０を含まない場合に、未使用のプリフェッチデータをＬ２キャッシュ１１０からエビクトする際にＬ３キャッシュ１２０に転送することは、例えば、未使用のプリフェッチデータが割り当てられたＬ３キャッシュ１２０内のセットがフルである場合に、Ｌ３キャッシュ１２０から他の有効なデータをエビクトすることが必要になるので、メモリ要求の処理がより非効率になる。未使用のプリフェッチデータを無効なステータスでＬ３キャッシュ１２０に転送するか、未使用のプリフェッチデータをＬ２キャッシュ１１０からエビクトするときにＬ３キャッシュ１２０に転送することなく置換する転送ポリシーを任意に使用することによって、メモリ要求のより効率的な処理が実現され得る。対照的に、従来のキャッシュ管理システムでは、未使用のプリフェッチデータは、Ｌ２キャッシュ１１０からエビクトされるときに有効なステータスでＬ３キャッシュ１２０に転送され、これにより、場合によってはより有用なデータ（例えば、未使用のプリフェッチデータよりもアクセスされる可能性が高いデータ）がエビクトされ、メモリアクセス効率が低下する。
【００１６】
いくつかの実施形態では、キャッシュコントローラ１０５は、キャッシュ１１０の異なる領域に異なる転送ポリシーを適用し、各領域は複数のエントリを含む。少なくとも１つの実施形態では、各領域は、その転送ポリシーのみが異なる。したがって、領域のエントリは任意のセットに使用することができ、異なる領域は、同じセットの異なるエントリを含むことができる。
【００１７】
図１に示す例では、キャッシュ１１０は、３つの領域（テスト領域１１５，１１６及び非テスト領域１１８）を含む。また、キャッシュコントローラ１０５は、未使用のプリフェッチデータがＬ２キャッシュ１１０からエビクトされるときに有効なステータス又は無効なステータスでＬ３キャッシュ１２０に転送されるか、又は、Ｌ３キャッシュ１２０に転送されることなく置換されるか等のように少なくとも１つの態様の異なる転送ポリシー１１１，１１２を記憶する。したがって、図１の例では、転送ポリシー１１１は、未使用のプリフェッチデータの全て又は一部が、任意の非プリフェッチ要求データと同様に、Ｌ２キャッシュ１１０からエビクトされるときに有効なステータスでＬ３キャッシュ１２０に転送されることを定める。本明細書で使用する場合、非プリフェッチ要求とは、転送ポリシーが適用されるキャッシュレベルを対象とするプリフェッチ要求ではないメモリアクセスを指す。非プリフェッチ要求の例には、デマンド要求、命令キャッシュミスに応じて生成されたメモリアクセス要求、ハードウェアページテーブルウォーク要求、プロセッサコア１０２によって生成された投機的なメモリアクセス要求（例えば、分岐命令後の命令の投機的な実行中に生成されたメモリアクセス要求）、及び、他のキャッシュレベルにおいて生成されたプリフェッチ要求が挙げられる。
【００１８】
対照的に、転送ポリシー１１２は、未使用のプリフェッチデータの全て又は一部がＬ２キャッシュ１１０からエビクトされるときに無効なステータスでＬ３キャッシュ１２０に転送されるか、Ｌ３キャッシュ１２０に転送されることなく置換され、その一方で、非プリフェッチ要求データがＬ２キャッシュ１１０からエビクトされるときにＬ３キャッシュ１２０に転送されることを定める。したがって、転送ポリシー１１１は、プリフェッチデータにアクセスする頻度がより高いメモリアクセスパターンに対してより効率的となることができ、転送ポリシー１１２は、プリフェッチデータにアクセスする頻度がより少ないメモリアクセスパターンに対してより効率的となることができる。しかしながら、プロセッサコア１０２のメモリアクセスパターンは、異なる時点において異なる転送ポリシーの下でキャッシュ１１０がより効率的に動作するように、経時的に変化する可能性がある。したがって、キャッシュコントローラ１０５は、非テスト領域１１８に対して、テスト領域１１５，１１６の性能特性に応じて転送ポリシー１１１，１１２の中から選択する。
【００１９】
例示すると、プロセッサ１０１は、テスト領域１１５，１１６の各々について、キャッシュヒット率、キャッシュミス率等の性能特性を監視し記録する性能モニタ１０４を含む。キャッシュコントローラは、テスト領域１１５，１１６の性能特性のうち１つ以上又はこれらの組み合わせに基づいて、転送ポリシー１１１，１１２のうち１つの転送ポリシーを選択し、選択した転送ポリシーを非テスト領域１１８に適用する。例えば、テスト領域１１５のキャッシュヒット率がテスト領域１１６のキャッシュヒット率よりも高い場合、キャッシュコントローラ１０５は、テスト領域１１５の転送ポリシー（例えば、転送ポリシー１１１）を選択して、非テスト領域１１８に適用する。いくつかの実施形態では、非テスト領域１１８は、キャッシュ１１０のエントリの大部分を含む。したがって、テスト領域１１５，１１６の性能によって示されるように、非テスト領域１１８の転送ポリシーをより効率的な転送ポリシーとして選択することによって、キャッシュコントローラ１０５は、キャッシュ１１０全体の効率を向上させる。さらに、テスト領域１１５，１１６の性能特性が経時的に変化すると、キャッシュコントローラは、転送ポリシーを、所定の性能特性のセットに対してより効率的なポリシーに変更する。
【００２０】
図２は、いくつかの実施形態による、図１のＬ２キャッシュ１１０のテスト領域１１５，１１６に異なる転送ポリシーを適用するキャッシュコントローラ１０５の一例を示す図である。図示した例では、テスト領域１１５，１１６の各々は、テスト領域１１５のエントリ２４０，２４１，２４２，２４３、及び、テスト領域１１６のエントリ２４６，２４７，２４８，２４９等の複数のエントリを含む。各エントリは、メモリ１３０から取得されたデータを記憶するためのデータ部分（例えば、エントリ２４０のデータ部分２４４）、すなわち、当該エントリにおけるメモリアクセス要求を満たすために使用されるデータを含む。また、各エントリは、テスト領域１１５に適用された転送ポリシーが、データがＬ２キャッシュ１１０のテスト領域１１５からエビクトされるときに、Ｌ３キャッシュ１２０に転送されるのか、Ｌ３キャッシュ１２０に転送されることなく置換されるのか（或いは、データが破棄されることを示すステータスで転送されるのか）の何れを定めているかについての指標を記憶する転送フィールド（例えば、エントリ２４０の転送フィールド２４５）を含む。
【００２１】
図２の例では、キャッシュコントローラ１０５は、未使用のプリフェッチ要求がＬ２キャッシュ１１０のテスト領域１１５からエビクトされると最初にＬ３キャッシュ１２０に転送されることなく置換され、その一方で、デマンド要求がＬ２キャッシュ１１０のテスト領域１１５からエビクトされるとＬ３キャッシュ１２０に転送される転送ポリシーをテスト領域１１５に適用すると仮定する。図２の例では、Ｌ２キャッシュ１１０のテスト領域１１５には、プリフェッチ要求２５０，２５２の各々に関連するデータと、デマンド要求２５１，２５３の各々に関連するデータと、が入力されている。
【００２２】
上述したように、キャッシュコントローラ１０５は、異なる転送ポリシーを異なるテスト領域１１５，１１６に適用する。キャッシュコントローラ１０５は、各テスト領域の性能特性を測定することによって、プロセッサコア１０２の最近のメモリアクセスパターンに対してより効率的な転送ポリシーを識別し、より効率的な転送ポリシーを非テスト領域１１８に適用することによって、全体的なキャッシュ効率を向上させる。
【００２３】
いくつかの実施形態では、転送ポリシーは、プリフェッチ要求に関連する全ての未使用のデータについて、Ｌ３キャッシュ１２０に転送することなく置換する（又は、データを破棄されることを示すステータスでＬ３キャッシュ１２０に転送する）ように定めるのではなく、プリフェッチ要求に関連する未使用のデータの一部について、Ｌ３キャッシュ１２０に転送することなく置換するように定める。例えば、テスト領域１１５の場合、キャッシュコントローラ１０５は、プリフェッチ要求に関連するエントリの或る割合のみが、先にＬ３キャッシュ１２０に転送されることなく置換されることを定める転送ポリシーを適用する。
【００２４】
テスト領域１１５に適用される転送ポリシーとは対照的に、テスト領域１１６に適用される転送ポリシーは、エントリ毎に、エントリがデマンド要求又はプリフェッチ要求の何れに関連しているかに拘わらず、Ｌ２キャッシュ１１０からエビクトされるときに有効なステータスでＬ３キャッシュ１２０に転送されることを定める。図２の例では、テスト領域１１６には、プリフェッチ要求２５６，２５８の各々に関連するデータと、デマンド要求２５７，２５９の各々に関連するデータと、が入力されている。キャッシュコントローラ１０５は、テスト領域１１６のエントリのエビクトに応じて、データがデマンド要求又はプリフェッチ要求の何れに関連しているかに拘わらず、エントリをＬ３キャッシュ１２０に転送することを要求する転送ポリシーを適用する。したがって、異なるテスト領域１１５，１１６に適用される異なる転送ポリシーは、プリフェッチ要求に関連するエントリがＬ２キャッシュ１１０からエビクトされるときに最初にＬ３キャッシュ１２０に転送されることなく置換され、一部置換され、又は、全く置換されないことを含む、いくつかの態様のうち１つ以上において異なる。さらに、いくつかの実施形態では、キャッシュ１１０は、異なる転送ポリシーが適用された３つ以上のテスト領域を含み、これにより、非テスト領域１１８に適用する広範囲の可能な転送ポリシーをキャッシュコントローラに与える。
【００２５】
図３は、Ｌ２キャッシュ３１０の異なるテスト領域に異なる転送ポリシーを適用するキャッシュコントローラ３０５の一例を示す図である。図３の例では、キャッシュコントローラ３０５は、転送ポリシー３１１をＬ２キャッシュ３１０のテスト領域３１５に適用し、転送ポリシー３１２をＬ２キャッシュ３１０のテスト領域３１６に適用する。転送ポリシー３１１は、全てのエントリが、Ｌ２キャッシュ３１０からエビクトされると、エントリがプリフェッチ要求又はデマンド要求の何れに関連しているかに拘わらず、Ｌ３キャッシュ３２０に転送されることを定める。図３の例では、着信データ３４１は、Ｌ２キャッシュ３１０のテスト領域３１５内のプリフェッチデータ３４５を含むセットに受信され、プリフェッチデータ３４５のエビクトを必要とする。キャッシュコントローラ３０５は、転送ポリシー３１１をテスト領域３１５に適用しているので、プリフェッチデータ３４５を、着信データ３４１に置換する前にＬ３キャッシュ３２０に転送する。
【００２６】
対照的に、着信データ３４２は、Ｌ２キャッシュ３１０のテスト領域３１６内のプリフェッチデータ３４６を含むセットに受信され、プリフェッチデータ３４６のエビクトを必要とする。キャッシュコントローラ３０５は、転送ポリシー３１２をテスト領域３１６に適用しているので、プリフェッチデータ３４６を、Ｌ３キャッシュ３２０に転送することなく破棄する。
【００２７】
図４は、いくつかの実施形態による、異なるテスト領域１１５，１１６の経時的に変化する相対的な性能の一例を示す図４００である。図４００は、時間を表すＸ軸４５０と、キャッシュヒット率を表すＹ軸４５１と、を含む。図４００は、経時的なテスト領域１１６のキャッシュヒット率を表す曲線４５２と、テスト領域１１５のキャッシュヒット率を表す曲線４５３と、を示している。
【００２８】
図４００に示す例において、時間４５５の前では、テスト領域１１５のキャッシュヒット率は、テスト領域１１６のキャッシュヒット率よりも高い。したがって、時間４５５の前では、キャッシュコントローラ１０５は、テスト領域１１５の転送ポリシーを非テスト領域１１８に適用する。時間４５５において、テスト領域１１５，１１６間のキャッシュヒット率の関係は、テスト領域１１６のキャッシュヒット率がテスト領域１１５のキャッシュヒット率よりも高くなるように変化する。これに応じて、キャッシュコントローラ１０５は、非テスト領域１１８の転送ポリシーを、テスト領域１１６の転送ポリシーと一致するように変更する。後の時間４５６において、テスト領域１１５，１１６間のキャッシュヒット率の関係は、テスト領域１１５のキャッシュヒット率がテスト領域１１６のキャッシュヒット率よりも高くなるように再度変化する。これに応じて、キャッシュコントローラ１０５は、非テスト領域１１８の転送ポリシーを、テスト領域１１５の転送ポリシーと一致するように変更する。このように、キャッシュコントローラ１０５は、テスト領域１１５，１１６の相対的な性能の変化に基づいて、非テスト領域１１８に適用される転送ポリシーを変更する。
【００２９】
図５は、いくつかの実施形態による、キャッシュの異なるテスト領域の性能特性に基づいてキャッシュの非テスト領域の転送ポリシーを選択する方法５００のフロー図である。説明目的で、方法５００は、図１の処理システム１００における例示的な実装に関して説明する。ブロック５０２において、キャッシュコントローラ１０５は、異なる転送ポリシー１１１，１１２をキャッシュ１１０の異なるテスト領域１１５，１１６に適用する。したがって、例えば、キャッシュコントローラ１０５は、転送ポリシー１１１をテスト領域１１５に適用し、転送ポリシー１１２をテスト領域１１６に適用する。ブロック５０４において、性能モニタ１０４は、異なるテスト領域１１５，１１６の性能特性（例えば、キャッシュヒット率、キャッシュミス率、キャッシュヒット率及びキャッシュミス率の加重和等）を監視し記録する。
【００３０】
ブロック５０６において、キャッシュコントローラ１０５は、テスト領域１１５，１１６の各々の性能特性を比較し、その比較に基づいて転送ポリシー１１１，１１２のうち１つの転送ポリシーを選択する。例えば、キャッシュコントローラ１０５は、性能特性によって示されるように、より高い性能を有するテスト領域に適用される転送ポリシーを選択する。ブロック５０８において、キャッシュコントローラ１０５は、選択された転送ポリシーをキャッシュ１１０の非テスト領域１１８に適用する。すなわち、キャッシュコントローラは、選択された転送ポリシーの要件に従って、非テスト領域１１８でのエビクトの際に転送され又は事前の転送なく置換されるキャッシュエントリを指定する。ブロック５１０において、キャッシュコントローラ１０５は、転送指定又は置換指定を使用して、Ｌ２キャッシュ１１０の非テスト領域１１８の置換ポリシーに従って、Ｌ２キャッシュ１１０の非テスト領域１１８に記憶されたプリフェッチデータを転送又は破棄する。方法のフローはブロック５０４に戻り、キャッシュコントローラ１０５は、テスト領域１１５，１１６の性能を監視し続け、その性能に基づいて、非テスト領域１１８に適用される転送ポリシーを調整することを反映する。
【００３１】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００３２】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム（例えば、システムＲＡＭ又はＲＯＭ）に内蔵されてもよいし、コンピュータシステム（例えば、磁気ハードドライブ）に固定的に取り付けられてもよいし、コンピュータシステム（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））に接続されてもよい。
【００３３】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００３４】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2019525330.tif 000003
【図２】
2019525330.tif 000004
【図３】
2019525330.tif 000005
【図４】
2019525330.tif 000006
【図５】
2019525330.tif 000007
【国際調査報告】
2019525330.tif 000008
2019525330.tif 000009