(57)【要約】キャッシュコントローラ（１０５）は、キャッシュの異なるテスト領域（１１５，１１６）のアクセスメトリックに基づいて、エージングポリシー（１１１，１１２）をキャッシュ（１１０）の一部に適用する。これにより、各テスト領域は、異なるエージングポリシーを実装する。各領域のエージングポリシーは、キャッシュの各エントリの初期エージング値を確立し、特定のエージングポリシーは、プロセッサコアからのデマンド要求又はプリフェッチ要求に応じてエントリがキャッシュに配置されたか否かに基づいて、エージングを所定のエントリに設定することができる。キャッシュコントローラは、各エントリのエージング値を、キャッシュ置換ポリシーの基準として使用することができる。【選択図】図１
2019516188.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュ（１１０）の第１領域（１１５）において、プリフェッチ要求（２３１）又はデマンド要求（２３０）に応じてデータ（２４５）が第１キャッシュエントリ（２４０）に記憶されているか否かに基づいて、前記第１キャッシュエントリのエージング（２４６）を選択することと、
前記キャッシュの第２領域（１１６）において、プリフェッチ要求又はデマンド要求に応じてデータが前記第２領域のキャッシュエントリ（２４２，２４３）に記憶されているかどうかに関わらず、前記キャッシュエントリ（２４２，２４３）に同じエージングを記憶することと、
前記キャッシュの前記第１領域及び前記キャッシュの前記第２領域のデータを、前記第１領域及び前記第２領域のキャッシュエントリのエージングに基づいて置き換えることと、を含む、
方法。
【請求項２】
前記キャッシュの前記第１領域の第１性能特性、及び、前記キャッシュの前記第２領域の第２性能特性を測定すること（４０４）と、
前記第１性能特性及び前記第２性能特性に基づいて、前記キャッシュの第３領域（１１８）に対する第１エージングポリシー（１１１）を選択することと、
前記第３領域のキャッシュエントリに関連するエージングに基づいて、前記キャッシュの前記第３領域のキャッシュエントリにおけるデータを置き換えることと、をさらに含む、
請求項１の方法。
【請求項３】
前記第１エージングポリシーを選択することは、
プリフェッチ要求又はデマンド要求に応じてデータが前記第１キャッシュエントリに記憶されているか否かに基づいて、前記第３領域で第２キャッシュエントリのエージングを選択することを含む、
請求項２の方法。
【請求項４】
前記第１エージングポリシーを選択することは、
デマンド要求に関連する前記第３領域のキャッシュエントリと、プリフェッチ要求に関連する前記第３領域のキャッシュエントリと、に同じエージングを記憶することを含む、
請求項２の方法。
【請求項５】
前記第１エージングポリシーを選択することは、第１時間において前記第１エージングポリシーを選択することを含み、
前記方法は、
第２時間において、前記第１性能特性と前記第２性能特性との間の関係の変化に応じて、前記キャッシュの前記第３領域に対する第２エージングポリシー（１１２）を選択することであって、前記第２エージングポリシーは前記第１エージングポリシーとは異なる、ことをさらに含む、
請求項２の方法。
【請求項６】
前記第１性能特性は、前記キャッシュの第１領域におけるキャッシュヒット率（３５３）を含み、
前記第２性能特性は、前記キャッシュの第２領域におけるキャッシュヒット率（３５２）を含む、
請求項２の方法。
【請求項７】
前記第１性能特性は、前記キャッシュの第１領域におけるキャッシュミス率を含み、
前記第２性能特性は、前記キャッシュの第２領域におけるキャッシュミス率を含む、
請求項２の方法。
【請求項８】
前記第１性能特性は、前記キャッシュの第１領域におけるキャッシュヒット率と、前記キャッシュの第１領域におけるキャッシュミス率と、の第１の重み付けられた和を含み、
前記第２性能特性は、前記キャッシュの第２領域におけるキャッシュヒット率と、前記キャッシュの第２領域におけるキャッシュミス率と、の第２の重み付けられた和を含む、
請求項２の方法。
【請求項９】
前記第１キャッシュエントリのエージングを選択することは、
プリフェッチ要求に応じて前記データが前記第１キャッシュエントリに記憶されたのを識別したことに応じて、前記第１キャッシュエントリに対してより小さいエージングを選択することと、
デマンド要求に応じて前記データが前記第１キャッシュエントリに記憶されたのを識別したことに応じて、前記第１キャッシュエントリに対してより大きいエージングを選択することと、を含む、
請求項１の方法。
【請求項１０】
キャッシュ（１１０）の第１領域（１１５）において、デマンド要求又はプリフェッチ要求に応じてキャッシュエントリが記憶されているか否かに基づいて、第１エージングポリシー（１１１）を適用して、前記第１領域のキャッシュエントリにエージングを記憶することと、
前記キャッシュの第２領域（１１６）において、デマンド要求又はプリフェッチ要求に応じてキャッシュエントリが記憶されているか否かに関わらず、第２エージングポリシー（１１２）を適用して、前記キャッシュエントリに同じエージングを記憶することと、
前記第１領域及び前記第２領域の性能特性に基づいて、前記第１エージングポリシーと前記第２エージングポリシーとの間で選択を行って、第３エージングポリシーを決定することと、
前記選択されたエージングポリシーに基づいて、前記キャッシュの第３領域（１１８）でデータを置き換えることと、を含む、
方法。
【請求項１１】
前記第１エージングポリシーと前記第２エージングポリシーとの間で選択を行うことは、
第１時間（３５５）において、前記第３領域に対して前記第１エージングポリシーを選択することと、
第２時間（３５６）において、前記第３領域に対して前記第２エージングポリシーを選択することと、を含む、
請求項１０の方法。
【請求項１２】
前記第２時間は前記第１時間の後である、
請求項１１の方法。
【請求項１３】
前記第１領域の前記性能特性と前記第２領域の前記性能特性との間の関係の変化に応じて、前記第２時間において前記第３領域に対して前記第２エージングポリシーが選択される、
請求項１１の方法。
【請求項１４】
第１領域（１１５）及び第２領域（１１６）を備えるキャッシュ（１１０）と、
キャッシュコントローラ（１０５）と、を備え、
前記キャッシュコントローラは、
前記第１領域において、プリフェッチ要求（２３１）又はデマンド要求（２３０）に応じてデータが第１キャッシュエントリ（２４０）に記憶されているか否かに基づいて、前記第１キャッシュエントリのエージング（２４６）を選択することと、
前記第２領域において、プリフェッチ要求又はデマンド要求に応じてデータが前記第２領域のキャッシュエントリに記憶されているか否かに関わらず、前記キャッシュエントリに同じエージングを記憶することと、
前記キャッシュの前記第１領域及び前記キャッシュの前記第２領域のデータを、前記第１領域及び前記第２領域のキャッシュエントリのエージングに基づいて置き換えることと、
を行うように構成されている、
プロセッサ（１００）。
【請求項１５】
前記キャッシュの前記第１領域の第１性能特性、及び、前記キャッシュの前記第２領域の第２性能特性を測定する性能モニタ（１０４）をさらに備え、
前記キャッシュコントローラは、
前記第１性能特性及び前記第２性能特性に基づいて、前記キャッシュの第３領域（１１８）に対する第１エージングポリシーを選択することと、
選択された第１エージングポリシーに基づいて、前記キャッシュの前記第３領域のキャッシュラインにおけるデータを置き換えることと、
を行うように構成されている、
請求項１４のプロセッサ。
【請求項１６】
前記キャッシュコントローラは、
プリフェッチ要求又はデマンド要求に応じてデータが前記第１キャッシュエントリに記憶されているか否かに基づいて、前記第３領域で第２キャッシュエントリのエージングを選択するように構成されている、
請求項１５のプロセッサ。
【請求項１７】
前記キャッシュコントローラは、
デマンド要求に関連する前記第３領域のキャッシュラインと、プリフェッチ要求に関連する前記第３領域のキャッシュラインと、に同じエージングを記憶することによって、前記第１エージングポリシーを選択するように構成されている、
請求項１５のプロセッサ。
【請求項１８】
前記キャッシュコントローラは、
第１時間（３５５）において、前記第１エージングポリシーを選択することと、
第２時間（３５６）において、前記第１性能特性と前記第２性能特性との間の関係の変化に応じて、前記キャッシュの前記第３領域に対する第２エージングポリシーを選択することであって、前記第２エージングポリシーは前記第１エージングポリシーとは異なる、ことと、
を行うように構成されている、
請求項１５のプロセッサ。
【請求項１９】
前記第１性能特性は、前記キャッシュの第１領域におけるキャッシュヒット率（３５２）を含み、
前記第２性能特性は、前記キャッシュの第２領域におけるキャッシュヒット率（３５３）を含む、
請求項１５のプロセッサ。
【請求項２０】
前記第１性能特性は、前記キャッシュの第１領域におけるキャッシュミス率を含み、
前記第２性能特性は、前記キャッシュの第２領域におけるキャッシュミス率を含む、
請求項１５のプロセッサ。
【請求項２１】
前記第１性能特性は、前記キャッシュの第１領域におけるキャッシュヒット数と、前記キャッシュの第１領域におけるキャッシュミス数と、の第１の重み付けられた和を含み、
前記第２性能特性は、前記キャッシュの第２領域におけるキャッシュヒット数と、前記キャッシュの第２領域におけるキャッシュミス数と、の第２の重み付けられた和を含む、
請求項１５のプロセッサ。
【請求項２２】
前記キャッシュコントローラは、
プリフェッチ要求に応じて前記データが前記第１キャッシュエントリに記憶されたのを識別したことに応じて、前記第１キャッシュエントリに対してより小さいエージングを選択することと、
デマンド要求に応じて前記データが前記第１キャッシュエントリに記憶されたのを識別したことに応じて、前記第１キャッシュエントリに対してより大きいエージを選択することと、
を行うことによって、前記第１キャッシュエントリのエージングを選択するように構成されている、
請求項１４のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、プロセッサに関し、特にプロセッサキャッシュに関する。
【背景技術】
【０００２】
メモリアクセスの効率を向上させるために、多くのプロセッサはメモリ階層を採用しており、これにより、プロセッサは、メインメモリに記憶されたデータのサブセットを記憶するための１つ以上のキャッシュを含む。メインメモリからのデータのサブセットをキャッシュに記憶する基準は、プロセッサの設計に応じて異なるが、通常、最近アクセスされたデータのキャッシングを優先する。また、一部のプロセッサは、近い将来にプロセッサコアによってアクセスされる可能性のあるデータを推測し、そのデータをメインメモリから１つ以上のキャッシュにコピーする１つ以上のプリフェッチャを使用する。新たなデータを１つ以上のキャッシュに移動させるには、プロセッサは、通常、指定された置換スキームに基づいて、事前に記憶されたデータを選択して退去させる必要がある。例えば、一部のプロセッサは、ＬＲＵ（least-recently-used）置換スキームを採用しており、これにより、プロセッサは、最も長い時間に亘ってプロセッサコアがアクセスしていないデータを記憶するキャッシュエントリを退去させる。しかしながら、多くのシナリオでは、ＬＲＵ置換スキームは、プロセッサコアで実行される命令のメモリアクセスパターンに対応しておらず、メモリアクセスの効率の低下という望ましくない結果を招く。
【０００３】
本開示は、添付の図面を参照することでより良く理解され、その多くの特徴及び利点が当業者に明らかとなるであろう。異なる図面における同じ参照符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、キャッシュの異なるテスト領域のアクセスメトリックに基づいて、エージングポリシーをキャッシュの一部に適用する処理システムのブロック図である。
【図２】いくつかの実施形態による、キャッシュの異なるテスト領域において異なるエージングポリシーを使用する図１の処理システムの一例を示す図である。
【図３】いくつかの実施形態による、キャッシュのテスト領域のアクセスメトリックに基づいて、キャッシュの非テスト領域においてエージングポリシーを変更する図１の処理システムの一例を示す図である。
【図４】いくつかの実施形態による、キャッシュの異なるテスト領域のアクセスメトリックに基づいて、エージングポリシーをキャッシュの一部に適用する方法のフロー図である。
【発明を実施するための形態】
【０００５】
図１〜図４は、キャッシュの異なるテスト領域のアクセスメトリックに基づいて、エージングポリシーをキャッシュの一部に適用し、これにより、各テスト領域が異なるエージングポリシーを実施する技術を示している。各領域のエージングポリシーは、キャッシュの各エントリの初期エージング値を確立し、特定のエージングポリシーは、プロセッサコアからのデマンド要求に応じて、又は、プリフェッチ要求に応じて、エントリがキャッシュに配置されたか否かに基づいて、所定のエントリにエージングを設定することができる。キャッシュは、各エントリのエージング値を、キャッシュ置換ポリシーの基準として使用することができる。キャッシュは、異なるテスト領域のアクセスメトリックに基づいてキャッシュの非テスト領域のキャッシュエージングポリシーを選択することによって、プロセッサコアで現在実行中の命令に対して、エージングポリシーをより効率的なポリシーに動的に変更することができる。
【０００６】
一例を説明するために、キャッシュが２つのテスト領域と、非テスト領域とを有し、これにより、全ての領域が、プロセッサコアからのデマンド要求、及び、プリフェッチャからのプリフェッチ要求に応じて、データを記憶するためにキャッシュによって使用されると想定する。キャッシュは、異なるエージングポリシーを異なるテスト領域に使用するので、あるテスト領域では、キャッシュは、指定された初期エージングをデマンド要求に関連するエントリに記憶し、指定された異なる初期エージングをプリフェッチ要求に関連するエントリに記憶する。他のテスト領域では、キャッシュは、指定された同じ初期エージングを、デマンド要求に関連するエントリ、及び、プリフェッチ要求に関連するエントリに記憶する。両方のエージングポリシーにおいて、キャッシュは、エントリがプロセッサコアによってアクセスされるか否かに基づいて、各エントリのエージングを変更する。また、各テスト領域に対して、キャッシュは、各エントリのエージングに少なくとも部分的に基づいて、エントリを退去させる。プロセッサは、各テスト領域のアクセスメトリック（例えば、キャッシュヒット率、キャッシュミス率又はこれらの組み合わせ等）を監視する。プロセッサは、メトリックに基づいて、１つのテスト領域に対するエージングポリシーを選択し、そのエージングポリシーをキャッシュの非テスト領域に適用する。例えば、１つのテスト領域のキャッシュヒット率が高い場合、プロセッサは、そのテスト領域のエージングポリシーを、キャッシュの非テスト領域に適用することができる。これにより、キャッシュ全体のヒット率を改善することができる。また、異なるテスト領域の変更に対する相対的なキャッシュヒット率の変化に応じて、プロセッサは、非テスト領域に適用されるエージングポリシーを変更して、異なるエージングポリシーを非テスト領域に適用することができる。これにより、キャッシュ全体のキャッシュヒット率を改善することができる。
【０００７】
本明細書では、「エージングポリシー」という用語は、エージング値がキャッシュのエントリにどのように適用されるか、適用されたときにエージング値がどのように変更されるかを指す。エージングポリシーは、エントリがキャッシュに配置されたときに当該エントリに適用される初期エージング、アクセスされているエントリ若しくはアクセスされている他のエントリに応じたエージングの変更、又は、これらの組み合わせを管理することができる。エージング値は、新たなデータがキャッシュに記憶されるときに退去させるエントリを選択するためのキャッシュの置換ポリシーの一部として、キャッシュに使用することができる。
【０００８】
図１は、いくつかの実施形態による、キャッシュの異なるテスト領域のアクセスメトリックに基づいて、エージングポリシーをキャッシュの一部に適用する処理システム１００を示す図である。処理システム１００は、一般に、電子デバイスに代わってタスクを実行するために、コンピュータプログラムの形態で編成された命令のセットを実行するように構成されている。したがって、処理システム１００は、デスクトップ又はラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲームコンソール等の様々な電子デバイスの何れかで使用することができる。
【０００９】
命令の実行を容易にするために、処理システム１００は、プロセッサコア１０２と、キャッシュコントローラ１０５と、キャッシュ１１０と、メモリ１２０と、を含む。いくつかの実施形態では、プロセッサコア１０２、キャッシュコントローラ１０５及びキャッシュ１１０は、同じ半導体ダイ上に形成され、プロセッサコア１０２の少なくとも一部を構成する。メモリ１２０は、異なる半導体ダイ上に形成され、１つ以上のバス又は信号線を介して、プロセッサ１０１に接続されている。いくつかの実施形態では、メモリ１２０の少なくとも一部は、プロセッサ１０１のモジュールと同じ半導体ダイ上に形成されている。
【００１０】
キャッシュ１１０及びメモリ１２０の各々は、一般に、データを記憶するように構成されたメモリデバイスであり、したがって、ランダムアクセスメモリ（ＲＡＭ）メモリモジュール、不揮発性メモリデバイス（例えば、フラッシュメモリ）等であってもよい。本明細書でさらに説明するように、キャッシュ１１０及びメモリ１２０は、処理システム１００のメモリ階層を形成する。また、処理システム１００のメモリ階層は、図１には示されていない追加のキャッシュ等の他のメモリモジュールを含むことができる。
【００１１】
プロセッサコア１０２は、例えば、命令をフェッチするフェッチステージと、フェッチされた命令の各々を１つ以上の動作にデコードするデコードステージと、動作を実行する実行ステージと、その動作の実行が完了した命令をリタイアするためのリタイアステージと、を有する命令パイプラインを含む。命令に基づいて生成された動作のセットは、本明細書ではメモリアクセス命令と呼ばれ、処理システム１００のメモリ階層からデータをロードする要求（ロード動作）であり、処理システム１００のメモリ階層にデータを記憶する要求である。プロセッサコア１０２によって生成されたメモリアクセス要求は、使用されているか又は実行プログラムによって必要であることが分かっているデータをロード又は記憶する要求を表し、ここではデマンド要求と呼ばれる。
【００１２】
キャッシュコントローラ１０５は、一般に、キャッシュ１１０とメモリ１２０との間でデータを移動させることによって、処理システム１００のメモリ階層を管理するように構成されたモジュールである。特に、キャッシュ１１０は、複数のエントリを含むメモリデバイスであり、これにより、各エントリをメモリ１２０の１つ以上のアドレスに関連付けることができる。キャッシュコントローラ１０５は、メモリアクセス要求に応じて、キャッシュ１１０の１つ以上のエントリに記憶されたデータを見直して、何れのエントリが、メモリアクセス要求の対象となるメモリアドレスに関連するデータを記憶しているかどうかを判定する。メモリアドレスに関連するデータがエントリに記憶されている場合、キャッシュコントローラ１０５は、キャッシュヒットを示し、データをエントリに記憶するか（ストア動作の場合）、識別されたエントリのデータをプロセッサコア１０２に供給するか（ロード動作の場合）の何れかによって、識別されたエントリにおいてメモリアクセス要求を満たす。メモリアドレスに関連するデータがキャッシュ１１０のエントリに記憶されていない場合、キャッシュコントローラ１０５は、キャッシュミスを示し、メモリアドレスのデータに対する要求をメモリ１２０に発行する。次いで、キャッシュコントローラ１０５は、データをキャッシュ１１０のエントリに記憶し、そのエントリのメモリアクセス要求を満たす。
【００１３】
プロセッサ１０１は、改善されたメモリアクセスの効率をサポートするために、キャッシュコントローラ１０５に発行されたデマンド要求を監視し、パターンを識別し、識別されたパターンに基づいて、近い将来にプロセッサコア１０２によるデマンド要求の対象となるメモリアドレスを推測するプリフェッチャ１０６を含む。プリフェッチャ１０６は、メモリアクセス要求をキャッシュコントローラに発行することができ、このメモリアクセス要求は、本明細書では、識別されたメモリアドレスを対象とするプリフェッチ要求と呼ばれる。キャッシュコントローラ１０５は、最初に、プリフェッチ要求の対象となるメモリアドレスに関連するデータがキャッシュ１１０及びキャッシュ１１０のエントリに既に記憶されているかどうかを識別し、まだ記憶されていない場合に、メモリ１２０からのデータを要求し、データをキャッシュ１１０のエントリに記憶することによって、デマンド要求と同様にプリフェッチ要求を処理する。
【００１４】
いくつかの実施形態では、キャッシュ１１０の各エントリは、メモリアドレスのサブセットに関連付けられ、そのサブセットに関連するデータのみをエントリに記憶することができる。例えば、いくつかの実施形態では、キャッシュは、Ｍ個のセットを有するＮｗａｙセット・アソシエイティブ・キャッシュであり、Ｍ個のセットの各々がＮ個のエントリを含む。Ｍ個のセットの各々は、データがエントリに割り当てられたサブセットのメモリアクセスに関連付けられている場合にのみキャッシュコントローラ１０５がエントリにデータを記憶するように、メモリアドレスの異なるサブセットに割り当てられている。記憶データセットの全てのエントリが、メモリアクセスの対象となり得るデータ（本明細書では「有効データ」と呼ぶ）を記憶する場合、そのセットは本明細書においてフルと呼ばれる。さらに、キャッシュコントローラ１０５は、フルセットで記憶されるデータを受信すると、退去させる（すなわち、セットから除去する）１つのエントリを選択し、受信したデータと置き換える。キャッシュコントローラ１０５が退去させるエントリを選択するのに使用するスキームは、キャッシュ１１０の置換ポリシーと呼ばれる。
【００１５】
キャッシュ１１０の置換ポリシーは、セット内の各エントリに関連付けられたエージング値に少なくとも部分的に基づいてもよい。例示すると、キャッシュコントローラ１０５は、キャッシュ１１０のエントリにデータを記憶することに応じて、エントリの初期エージング値を記憶する。キャッシュコントローラ１０５は、指定された基準に応じて、エントリのエージング値を調整することができる。例えば、キャッシュコントローラ１０５は、プロセッサコア１０２からのデマンド要求の対象となるエントリに応じて、エントリのエージング値を減少させることができ、デマンド要求の対象となるセット内の別のエントリ又は異なるセット内の別のエントリに応じて、エントリのエージング値を増加させることができる。したがって、エージング値は、エントリが、セットの他のエントリ又はキャッシュ１１０の他のエントリに対して、エントリがどれだけ最近にアクセスされたかの表示を反映する。退去用のフルセットのエントリを選択する場合、キャッシュコントローラ１０５は、セット内の各エントリのエージング値に少なくとも部分的に基づく判断を基準とすることができる。例えば、キャッシュコントローラ１０５は、最も高いエージング値を有するエントリを退去用に選択することができる。いくつかの実施形態では、キャッシュコントローラ１０５は、データ優先度情報、データタイプ情報（例えば、エントリが命令データを記憶しているか、若しくは、オペランドデータを記憶しているか）、又は、退去用にエントリを選択する他の情報等の他の基準との重み付けられた和の一部としてエージング値を使用することができる。
【００１６】
上述したように、キャッシュコントローラ１０５によってエントリに割り当てられた初期エージング値、エージング値を調整するための基準、キャッシュコントローラ１０５が各基準に応じてエージング値を調整する量は、エントリのエージングポリシーと呼ばれる。いくつかの実施形態では、キャッシュコントローラ１０５は、キャッシュ１１０の異なる領域に異なるエージングポリシーを適用することができ、各領域は複数のエントリを含む。少なくとも１つの実施形態では、各領域は、そのエージングポリシーに関してのみ変化する。したがって、領域のエントリは任意のセットに使用されてもよいし、異なる領域は同じセットの異なるエントリを含んでもよい。
【００１７】
図１に示すように、キャッシュ１１０は、テスト領域１１５，１１６と、非テスト領域１１８と、の３つの領域を含む。また、キャッシュコントローラ１０５は、例えばエントリに割り当てられた初期エージング値、指定された基準に応じたエージング値の調整量等のように、少なくとも１つの態様において異なるエージングポリシー１１１，１１２を記憶する。いくつかの実施形態では、エージングポリシー１１１は、プリフェッチ要求に応じてデータを記憶するエントリに指定された初期エージングを要求し、非プリフェッチ要求に応じてデータを記憶するエントリに指定された異なる初期エージングを要求する。本明細書で使用する場合、非プリフェッチ要求とは、エージングポリシーが適用されるキャッシュレベルを対象とするプリフェッチ要求ではないメモリアクセスを指す。非プリフェッチ要求の例には、デマンド要求、命令キャッシュミスに応じて生成されるメモリアクセス要求、ハードウェアページテーブルウォーク要求、プロセッサコア１０２によって生成された投機的メモリアクセス要求（例えば、分岐命令後の命令の投機的な実行中に生成されたメモリアクセス要求）、及び、他のキャッシュレベルで生成されたプリフェッチ要求が含まれる。
【００１８】
対照的に、エージングポリシー１１２は、指定された同じ初期エージングを、プリフェッチ要求に応じてデータを記憶するエントリと、非プリフェッチ要求に応じてデータを記憶するエントリとに要求する。したがって、エージングポリシー１１１は、プリフェッチデータに頻繁にアクセスするメモリアクセスパターンに対してより効率的となり、エージングポリシー１１２は、プリフェッチデータ及び非プリフェッチデータにほぼ同じ頻度でアクセスするメモリアクセスパターンに対してより効率的となり得る。しかしながら、プロセッサコア１０２のメモリアクセスパターンは、異なる時間において異なるエージングポリシー下でキャッシュ１１０がより効率的に動作し得るように、経時的に変化し得る。したがって、非テスト領域１１８については、キャッシュコントローラ１０５は、テスト領域１１５，１１６の性能特性に応じて、エージングポリシー１１１，１１２の中から選択することができる。
【００１９】
説明すると、プロセッサ１０１は、テスト領域１１５，１１６の各々について、キャッシュヒット率、キャッシュミス率等の性能特性を監視及び記録することができる性能モニタ１０４を含む。キャッシュコントローラは、テスト領域１１５，１１６の１つ以上の性能特性又はこれらの組み合わせに基づいて、エージングポリシー１１１，１１２の何れかを選択して、非テスト領域１１８に適用する。例えば、テスト領域１１５のキャッシュヒット率がテスト領域１１６のキャッシュヒット率よりも高い場合、キャッシュコントローラ１０５は、テスト領域１１５のエージングポリシー（例えば、エージングポリシー１１１）を選択して、非テスト領域１１８に適用することができる。いくつかの実施形態では、非テスト領域１１８は、キャッシュ１１０のエントリの大部分を含む。したがって、キャッシュコントローラ１０５は、テスト領域１１５，１１６の性能によって示されるように、非テスト領域１１８のエージングポリシーをより効率的なエージングポリシーとして選択することによって、キャッシュ１１０の全体的な効率を向上させる。さらに、テスト領域１１５，１１６の性能特性が経時的に変化すると、キャッシュコントローラは、エージングポリシーを、所定の性能特性セットに対してより効率的なポリシーに変更することができる。
【００２０】
図２は、いくつかの実施形態による、図１のテスト領域１１５，１１６に異なるエージングポリシーを適用するキャッシュコントローラ１０５の一例を示す図である。図示した例では、テスト領域１１５，１１６の各々は、テスト領域１１５のエントリ２４０，２４１、テスト領域１１６のエントリ２４２，２４３等の複数のエントリを含む。各エントリは、メモリ１２０から取り出されたデータ（すなわち、エントリにおいてメモリアクセス要求を満たすために使用されるデータ）を記憶するデータ部分（例えば、エントリ２４０のデータ部分２４５）を含む。また、各エントリは、エントリのエージング値を記憶するエージングフィールド（例えば、エントリ２４０のエージングフィールド２４６）を含む。
【００２１】
図２の例では、キャッシュコントローラ１０５がエージングポリシーをテスト領域１１５に適用すると想定している。ここで、エントリのエージングフィールドに記憶された初期エージング値は、エントリのデータが、デマンド要求に応じて又はプリフェッチ要求に応じてメモリ１２０から取り出されたかどうかに依存する。具体的には、キャッシュコントローラ１０５は、プリフェッチ要求（例えば、プリフェッチ要求２３１）に応じてメモリ１２０からデータを取り出すことに応じて、データを記憶するエントリのエージングフィールドに初期エージング値「００」を記憶する。対照的に、キャッシュコントローラ１０５は、デマンド要求（例えば、デマンド要求２３０）に応じてメモリ１２０からデータを取り出すことに応じて、エントリのエージングフィールドに初期エージング値「０１」を記憶する。したがって、テスト領域１１５に適用されるエージングポリシーでは、キャッシュコントローラは、プリフェッチデータを記憶するエントリに「小さい」初期エージングを適用し、デマンドデータを記憶するエントリに「大きい」初期エージングを適用する。このエージングポリシーは、プロセッサコア１０２が、プリフェッチデータにデマンド要求を発行しないメモリアクセスパターンに対して効率的となり得る。
【００２２】
テスト領域１１６に関して、キャッシュコントローラ１０５は、エントリがプリフェッチ要求又はデマンド要求に関連するかどうかに関わらず、各エントリのエージングフィールドに同じ初期エージングを記憶するエージングポリシーを適用する。したがって、キャッシュコントローラ１０５は、プリフェッチ要求（例えば、プリフェッチ要求２３３）に応じてメモリ１２０からデータを取り出すことに応じて、データを記憶するエントリのエージングフィールドに初期エージング値「０１」を記憶する。同様に、キャッシュコントローラ１０５は、デマンド要求（例えば、デマンド要求２３２）に応じてメモリ１２０からデータを取り出すことに応じて、エントリのエージングフィールドに初期エージング値「０１」を記憶する。したがって、テスト領域１１６に適用されるエージングポリシーでは、キャッシュコントローラは、同じ初期エージングを全てのエントリに適用する。このエージングポリシーは、プロセッサコア１０２が、プリフェッチデータ及びデマンドデータに対して実質的に同じ頻度でアクセスするメモリアクセスパターンに対して効率的となり得る。他の実施形態では、キャッシュコントローラ１０５は、デマンド要求に関して低い初期エージングを記憶し、プリフェッチ要求に関して高い初期エージングを記憶するエージングポリシーを適用することができる。
【００２３】
上述したように、キャッシュコントローラ１０５は、異なるエージングポリシーを異なるテスト領域１１５，１１６に適用する。キャッシュコントローラ１０５は、各テスト領域の性能特性を測定することによって、プロセッサコア１０２の最新のメモリアクセスパターンに対してより効率的なエージングポリシーを特定することができ、より効率的なエージングポリシーを非テスト領域１１８に適用することができる。これにより、全体的なキャッシュ効率を改善することができる。
【００２４】
いくつかの実施形態では、上述したように異なる初期エージング値を適用することに加え、又はその代わりに、異なるエージングポリシーは、エージング値に対して異なる調整を必要とすることができる。例えば、テスト領域１１５の場合、キャッシュコントローラ１０５は、デマンド要求に関連するエントリへのメモリアクセスに応じて、プリフェッチデータを記憶する全てのエントリのエージング値を最大エージング値「１１」に調整するように、エージングポリシーを適用することができる。したがって、キャッシュコントローラ１０５は、エントリ２４０へのメモリアクセスに応じて、エントリ２４０のエージング値を「００」に調整し、エントリ２４１のエージング値（プリフェッチ要求２３１に関連する）を「１１」に調整することができる。対照的に、キャッシュコントローラ１０５は、メモリアクセスに応じてエージング値を１だけ増加させることによって、デマンドデータに関連するエントリのエージング値を調整する。したがって、キャッシュコントローラ１０５は、エントリ２４１へのメモリアクセスに応じて、（デマンド要求２３０に関連する）エントリ２４０のエージング値を値「１０」まで１ずつ増加させる。テスト領域１１５に適用されるエージングポリシーは、プリフェッチデータがプリフェッチ後に比較的迅速にアクセスされるか、又は、全くアクセスされないメモリアクセスパターンに対して、より効率的となり得る。
【００２５】
テスト領域１１５に適用されるエージングポリシーとは対照的に、テスト領域１１６に適用されるエージングポリシーは、エントリがデマンド要求又はプリフェッチ要求に関連するかどうかに関わらず、各エントリのエージング値の同じ調整を必要とする場合がある。例えば、キャッシュコントローラ１０５は、テスト領域１１６のエントリへのメモリアクセスに応じて、テスト領域１１６内の他の全てのエントリのエージング値を最大値まで１ずつ増加させることができる。したがって、異なるテスト領域１１５，１１６に適用される異なるエージングポリシーは、エントリに適用される初期エージング値、エントリのエージング値を調整するための基準、各基準に応じたエージング値の調節量等を含み、いくつかの態様のうち１つ以上において変化し得る。さらに、いくつかの実施形態では、キャッシュ１１０は、各テスト領域に異なるエージングポリシーが適用された２つ以上のテスト領域を含むことができ、これにより、非テスト領域１１８に適用する可能性のある広範囲なエージングポリシーをキャッシュコントローラに提供することができる。
【００２６】
図３は、いくつかの実施形態による、経時的に変化する異なるテスト領域１１５，１１６の相対的な性能の一例を示す図３００である。図３００は、時間を表すＸ軸３５０と、キャッシュヒット率を表すＹ軸３５１と、を含む。図３００は、テスト領域１１６のキャッシュヒット率を経時的に表す曲線３５２と、テスト領域１１５のキャッシュヒット率を表す曲線３５３と、を示している。
【００２７】
図３００に示す例では、時間３５５の前におけるテスト領域１１５のキャッシュヒット率は、テスト領域１１６のキャッシュヒット率よりも大きい。したがって、キャッシュコントローラ１０５は、時間３５５の前に、テスト領域１１５のエージングポリシーを非テスト領域１１８に適用する。時間３５５では、テスト領域１１６のキャッシュヒット率がテスト領域１１５のキャッシュヒット率よりも大きくなるように、テスト領域１１５のキャッシュヒット率と、テスト領域１１６のキャッシュヒット率との間の関係が変化する。これに応じて、キャッシュコントローラ１０５は、非テスト領域１１８のエージングポリシーを、テスト領域１１６のエージングポリシーと一致するように変更する。後の時間３５６では、テスト領域１１５のキャッシュヒット率がテスト領域１１６のキャッシュヒット率よりも再び大きくなるように、テスト領域１１５のキャッシュヒット率と、テスト領域１１６のキャッシュヒット率との関係が再び変化する。これに応じて、キャッシュコントローラ１０５は、非テスト領域１１８のエージングポリシーを、テスト領域１１５のエージングポリシーと一致するように変更する。したがって、キャッシュコントローラ１０５は、テスト領域１１５，１１６の相対的な性能の変化に基づいて、非テスト領域１１８に適用されるエージングポリシーを変更する。
【００２８】
図４は、いくつかの実施形態による、キャッシュの異なるテスト領域の性能特性に基づいて、キャッシュの非テスト領域に対するエージングポリシーを選択する方法４００のフロー図である。説明目的のために、方法４００は、図１の処理システム１００における例示的な実装に関して説明される。ブロック４０２では、キャッシュコントローラ１０５は、異なるエージングポリシー１１１，１１２をキャッシュ１１０の異なるテスト領域１１５，１１６に適用する。したがって、例えば、キャッシュコントローラ１０５は、エージングポリシー１１１をテスト領域１１５に適用し、エージングポリシー１１２をテスト領域１１６に適用することができる。ブロック４０４では、性能モニタ１０４は、キャッシュヒット率、キャッシュミス率、キャッシュヒット率及びキャッシュミス率の重み付けられた和等の、異なるテスト領域１１５，１１６の性能特性を監視及び記録する。
【００２９】
ブロック４０６では、キャッシュコントローラ１０５は、テスト領域１１５，１１６の各々の性能特性を比較し、比較に基づいて、エージングポリシー１１１，１１２の何れかを選択する。例えば、キャッシュコントローラ１０５は、性能特性によって示されるように、より高い性能を有するテスト領域に適用されるエージングポリシーを選択する。ブロック４０８では、キャッシュコントローラ１０５は、選択されたエージングポリシーを、キャッシュ１１０の非テスト領域１１８に適用する。すなわち、キャッシュコントローラは、初期エージング値を記憶し、選択されたエージングポリシーの要件に従って、非テスト領域１１８に記憶されたエージング値を調整する。ブロック４１０では、キャッシュコントローラ１０５は、非テスト領域１１８に記憶されたエージング値を使用して、キャッシュ１１０の置換ポリシーに従って退去用のキャッシュラインを特定する。方法フローはブロック４０４に戻り、キャッシュコントローラ１０５がテスト領域１１５，１１６の性能を監視し続け、性能に基づいて、非テスト領域１１８に適用されるエージングポリシーを調整する。
【００３０】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に記憶されていてもよいし、他の方法で有形に具体化された１つ以上の実行可能な命令セットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されたときに、１つ以上のプロセッサを操作して、上述した技術の１つ以上の態様を実行する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスクストレージデバイス、又は、ソリッドステートストレージデバイス（例えば、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、他の不揮発性メモリデバイス等）が挙げられる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは他の方法で実行可能な他の命令フォーマットであってもよい。
【００３１】
概略的な説明において上述した動作又は要素の全てが必要なわけではなく、特定の動作又は装置の一部が不要な場合もあり、記載されたものに加えて、１つ以上のさらなる動作が実行されてもよいし、１つ以上のさらなる要素が含まれてもよいことに留意されたい。さらに、動作が列挙される順序は、必ずしもそれらが実行される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、このような変更の全ては、本発明の範囲内に含まれることが意図される。
【００３２】
利点、他の利点、及び、問題を解決する手段が、特定の実施形態に関して上述されている。しかしながら、利点、他の利点、問題を解決する手段、及び、利点、他の利点、解決手段が発生するか、より顕著になる可能性のある機能は、特許請求の範囲の何れか若しくは全ての、重要な、必須の、又は不可欠な機能と解釈されるべきではない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なるが同等の方法で修正され、実施され得るので、上述した特定の実施形態は例示に過ぎない。以下の特許請求の範囲に記載されている以外の本明細書に示された構成又は設計の詳細に制限はない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、そのような変更形態の全ては、開示された発明の範囲内にあると考えられることは明らかである。したがって、本願で求められる保護は、以下の特許請求の範囲に記載されている。
【図１】
2019516188.tif 000003
【図２】
2019516188.tif 000004
【図３】
2019516188.tif 000005
【図４】
2019516188.tif 000006
【手続補正書】
【提出日】平成31年1月30日(2019.1.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
キャッシュの第１領域において、プリフェッチ要求又はデマンド要求に応じてデータが第１キャッシュエントリに記憶されているか否かに基づいて、前記第１キャッシュエントリのエージングを選択することと、
前記キャッシュの第２領域において、プリフェッチ要求又はデマンド要求に応じてデータが前記第２領域のキャッシュエントリに記憶されているかどうかに関わらず、前記キャッシュエントリに同じエージングを記憶することと、
前記キャッシュの前記第１領域及び前記キャッシュの前記第２領域のデータを、前記第１領域及び前記第２領域のキャッシュエントリのエージングに基づいて置き換えることと、を含む、
方法。
【請求項２】
前記キャッシュの前記第１領域の第１性能特性、及び、前記キャッシュの前記第２領域の第２性能特性を測定することと、
前記第１性能特性及び前記第２性能特性に基づいて、前記キャッシュの第３領域に対する第１エージングポリシーを選択することと、
前記第３領域のキャッシュエントリに関連するエージングに基づいて、前記キャッシュの前記第３領域のキャッシュエントリにおけるデータを置き換えることと、をさらに含む、
請求項１の方法。
【請求項３】
前記第１エージングポリシーを選択することは、
プリフェッチ要求又はデマンド要求に応じてデータが前記第１キャッシュエントリに記憶されているか否かに基づいて、前記第３領域で第２キャッシュエントリのエージングを選択することを含む、
請求項２の方法。
【請求項４】
前記第１エージングポリシーを選択することは、
デマンド要求に関連する前記第３領域のキャッシュエントリと、プリフェッチ要求に関連する前記第３領域のキャッシュエントリと、に同じエージングを記憶することを含む、
請求項２の方法。
【請求項５】
前記第１エージングポリシーを選択することは、第１時間において前記第１エージングポリシーを選択することを含み、
前記方法は、
第２時間において、前記第１性能特性と前記第２性能特性との間の関係の変化に応じて、前記キャッシュの前記第３領域に対する第２エージングポリシーを選択することであって、前記第２エージングポリシーは前記第１エージングポリシーとは異なる、ことをさらに含む、
請求項２の方法。
【請求項６】
前記第１性能特性は、前記キャッシュの第１領域におけるキャッシュヒット率を含み、
前記第２性能特性は、前記キャッシュの第２領域におけるキャッシュヒット率を含む、
請求項２の方法。
【請求項７】
前記第１性能特性は、前記キャッシュの第１領域におけるキャッシュミス率を含み、
前記第２性能特性は、前記キャッシュの第２領域におけるキャッシュミス率を含む、
請求項２の方法。
【請求項８】
前記第１性能特性は、前記キャッシュの第１領域におけるキャッシュヒット率と、前記キャッシュの第１領域におけるキャッシュミス率と、の第１の重み付けられた和を含み、
前記第２性能特性は、前記キャッシュの第２領域におけるキャッシュヒット率と、前記キャッシュの第２領域におけるキャッシュミス率と、の第２の重み付けられた和を含む、
請求項２の方法。
【請求項９】
前記第１キャッシュエントリのエージングを選択することは、
プリフェッチ要求に応じて前記データが前記第１キャッシュエントリに記憶されたのを識別したことに応じて、前記第１キャッシュエントリに対してより小さいエージングを選択することと、
デマンド要求に応じて前記データが前記第１キャッシュエントリに記憶されたのを識別したことに応じて、前記第１キャッシュエントリに対してより大きいエージングを選択することと、を含む、
請求項１の方法。
【請求項１０】
第１領域及び第２領域を備えるキャッシュと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
前記第１領域において、プリフェッチ要求又はデマンド要求に応じてデータが第１キャッシュエントリに記憶されているか否かに基づいて、前記第１キャッシュエントリのエージングを選択することと、
前記第２領域において、プリフェッチ要求又はデマンド要求に応じてデータが前記第２領域のキャッシュエントリに記憶されているか否かに関わらず、前記キャッシュエントリに同じエージングを記憶することと、
前記キャッシュの前記第１領域及び前記キャッシュの前記第２領域のデータを、前記第１領域及び前記第２領域のキャッシュエントリのエージングに基づいて置き換えることと、
を行うように構成されている、
プロセッサ。
【請求項１１】
前記キャッシュの前記第１領域の第１性能特性、及び、前記キャッシュの前記第２領域の第２性能特性を測定する性能モニタをさらに備え、
前記キャッシュコントローラは、
前記第１性能特性及び前記第２性能特性に基づいて、前記キャッシュの第３領域に対する第１エージングポリシーを選択することと、
選択された第１エージングポリシーに基づいて、前記キャッシュの前記第３領域のキャッシュラインにおけるデータを置き換えることと、
を行うように構成されている、
請求項１０のプロセッサ。
【請求項１２】
前記キャッシュコントローラは、
プリフェッチ要求又はデマンド要求に応じてデータが前記第１キャッシュエントリに記憶されているか否かに基づいて、前記第３領域で第２キャッシュエントリのエージングを選択するように構成されている、
請求項１１のプロセッサ。
【請求項１３】
前記キャッシュコントローラは、
デマンド要求に関連する前記第３領域のキャッシュラインと、プリフェッチ要求に関連する前記第３領域のキャッシュラインと、に同じエージングを記憶することによって、前記第１エージングポリシーを選択するように構成されている、
請求項１１のプロセッサ。
【請求項１４】
前記第１性能特性は、前記キャッシュの第１領域におけるキャッシュヒット数と、前記キャッシュの第１領域におけるキャッシュミス数と、の第１の重み付けられた和を含み、
前記第２性能特性は、前記キャッシュの第２領域におけるキャッシュヒット数と、前記キャッシュの第２領域におけるキャッシュミス数と、の第２の重み付けられた和を含む、
請求項１１のプロセッサ。
【請求項１５】
前記キャッシュコントローラは、
プリフェッチ要求に応じて前記データが前記第１キャッシュエントリに記憶されたのを識別したことに応じて、前記第１キャッシュエントリに対してより小さいエージングを選択することと、
デマンド要求に応じて前記データが前記第１キャッシュエントリに記憶されたのを識別したことに応じて、前記第１キャッシュエントリに対してより大きいエージングを選択することと、
を行うことによって、前記第１キャッシュエントリのエージングを選択するように構成されている、
請求項１０のプロセッサ。
【国際調査報告】
2019516188.tif 000007
2019516188.tif 000008