(57)【要約】処理システム（１００）は、異なるキャッシュ（１４０）における対応するエントリの有効ステータスに少なくとも部分的に基づいて、キャッシュ（１３０）において、エビクションのためのエントリを選択する。処理システムは、少なくとも２つのキャッシュ（上位レベルのキャッシュ（１４０）及び下位レベルのキャッシュ（１３０））を含むメモリ階層を備える。下位レベルのキャッシュは、上位レベルのキャッシュの何れの位置が無効であるかを監視し、上位レベルのキャッシュへのエビクションのために下位レベルのキャッシュのエントリを選択する場合に、選択されたキャッシュエントリを上位レベルのキャッシュの無効キャッシュラインに記憶するか否かに少なくとも部分的に基づいて、エントリを選択する。【選択図】図１
2019517689.tif 000002
【特許請求の範囲】
【請求項１】
処理システム（１００）において、
第１データ（２３５）を、前記処理システムの第１キャッシュ（１４０）のエントリ（２４３）から前記処理システムの第２キャッシュ（１３０）のエントリ（２３１）に転送することと、
前記処理システムにおいて、前記第１データを前記第１キャッシュのエントリから前記第２キャッシュのエントリに転送することに応じて、前記第１キャッシュのエントリの有効ステータス（２４４）を無効状態に設定することと、
前記処理システムにおいて、前記第１キャッシュのエントリの有効ステータスに基づいて、前記第２キャッシュにおいて置換のための第２データ（１３３）を選択することと、を含む、
方法。
【請求項２】
前記第１データを前記第１キャッシュのエントリから前記第２キャッシュのエントリに転送した後に、前記第２キャッシュにおいて受信したメモリアクセス要求（２２１）に応じて、前記第２キャッシュにおいて置換のための前記第２データを選択することをさらに含む、
請求項１の方法。
【請求項３】
前記第２キャッシュのキャッシュコントローラ（１３２）において前記第１キャッシュのエントリの有効ステータスを記憶することであって、前記第２データを選択することは、記憶された有効ステータスに基づいて前記第２データを選択することを含む、ことをさらに含む、
請求項１の方法。
【請求項４】
データが前記第１キャッシュのエントリに記憶されたという指示に応じて、記憶された有効ステータスを更新することをさらに含む、
請求項３の方法。
【請求項５】
前記第２キャッシュにおいて置換のための前記第２データを選択することは、前記第２キャッシュのエントリのエイジ値に基づいている、
請求項１の方法。
【請求項６】
置換のための前記第２データを選択することに応じて、前記第２データを前記第２キャッシュから前記第１キャッシュに転送することをさらに含む、
請求項１の方法。
【請求項７】
第１データを前記第２キャッシュのエントリから第３キャッシュ（１２０）に転送することと、
前記第２キャッシュのエントリの有効ステータスに関係なく、前記第３キャッシュにおける置換のためのデータを選択することと、をさらに含む、
請求項１の方法。
【請求項８】
処理システム（１００）の第１キャッシュ（１３０）に関連する第１キャッシュコントローラ（１３２）において、第２キャッシュのエントリ（２４３）の有効ステータス（２４４）を追跡することと、
前記処理システムにおいて、前記第１キャッシュコントローラによって追跡された前記第２キャッシュのエントリの有効ステータスに部分的に基づいて、前記第１キャッシュコントローラによるエビクションのためのデータ（１３３）を前記第１キャッシュから選択することと、を含む、
方法。
【請求項９】
エビクションのためのデータを前記第１キャッシュから選択することは、
前記データが前記第２キャッシュのエントリに記憶されていることを識別したことに応じて、前記第１キャッシュから前記データを選択することを含む、
請求項８の方法。
【請求項１０】
エビクションのためのデータを前記第１キャッシュから選択することは、
前記エントリの有効ステータスが無効ステータスであることを識別したことに応じて、前記第１キャッシュから前記データを選択することを含む、
請求項９の方法。
【請求項１１】
データが前記第２キャッシュのエントリから前記第１キャッシュに転送される場合に、前記第２キャッシュのエントリの有効ステータスを無効として識別することをさらに含む、
請求項１０の方法。
【請求項１２】
エビクションのために選択された前記データを前記第１キャッシュから前記第２キャッシュに転送することをさらに含む、
請求項９の方法。
【請求項１３】
エビクションのためのデータを前記第１キャッシュから選択することは、前記第１キャッシュにおける前記データのエイジ値に部分的にさらに基づいている、
請求項９の方法。
【請求項１４】
第１キャッシュ（１４０）と、
第２キャッシュ（１３０）と、
第１キャッシュコントローラ（１３２）と、を備え、
前記第１キャッシュコントローラは、
第１データを、前記第１キャッシュのエントリ（２４３）から前記第２キャッシュのエントリ（２３１）に転送することに応じて、前記第１キャッシュのエントリの有効ステータス（２４４）を無効状態に設定することと、
前記第１キャッシュのエントリの有効ステータスに基づいて、前記第２キャッシュにおいて置換のための第２データ（１３３）を選択することと、
を行うように構成されている、
プロセッサ（１００）。
【請求項１５】
前記第１キャッシュコントローラは、
前記第１データを前記第１キャッシュのエントリから前記第２キャッシュのエントリに転送した後に、前記第２キャッシュにおいて受信したメモリアクセス要求（２２２）に応じて、前記第２キャッシュにおいて置換のための前記第２データを選択すること、
を行うようにさらに構成されている、
請求項１４のプロセッサ。
【請求項１６】
前記第１キャッシュコントローラは、
前記第１キャッシュのエントリの有効ステータスを記憶することと、
前記記憶された有効ステータスに基づいて前記第２データを選択することと、
を行うようにさらに構成されている、
請求項１５のプロセッサ。
【請求項１７】
前記第１キャッシュコントローラは、
データが前記第１キャッシュのエントリに記憶されたという指示に応じて、記憶された有効ステータスを更新すること、
をさらに行うように構成されている。
請求項１６のプロセッサ。
【請求項１８】
前記第１キャッシュコントローラは、
前記第２キャッシュのエントリのエイジ値に基づく置換のために前記第１データを選択すること、
をさらに行うように構成されている、
請求項１４のプロセッサ。
【請求項１９】
前記第１キャッシュコントローラは、
置換のために選択された前記第１データを前記第２キャッシュから前記第１キャッシュに転送すること、
をさらに行うように構成されている、
請求項１４のプロセッサ。
【請求項２０】
第３キャッシュ（１２０）と、第２キャッシュコントローラ（１２２）と、をさらに備え、
前記第１キャッシュコントローラは、前記第１データを前記第２キャッシュのエントリから前記第３キャッシュのエントリに転送するように構成されており、
前記第２キャッシュコントローラは、第２キャッシュのエントリの可用性に関係なく、前記第３キャッシュにおいて置換のためのデータを選択するように構成されている、
請求項１４のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してプロセッサに関し、より詳細には、プロセッサにおけるキャッシュ管理に関する。
【背景技術】
【０００２】
処理システムは、命令の実行をサポートするために、通常、実行中の命令によってアクセスされるデータを記憶するメモリモジュールを有するメモリサブシステムを備える。メモリサブシステムは、実行命令によってアクセスされ得るよりも大量のデータを記憶することができるように、階層の最上部にメインメモリを有するメモリ階層であって、メインメモリに記憶されたデータのサブセットを記憶するために、メモリ階層のより下位レベルに１つ以上のキャッシュを有するメモリ階層に編成されている。通常、下位データは、メモリ階層に記憶されるため、プロセッサは、より迅速にアクセスすることができる。処理効率をさらに高めるために、処理システムは、メモリ階層の各レベルに記憶された特定のデータセットを管理するメモリ管理プロトコルを実装することが可能である。例えば、処理システムは、近い将来にプロセッサによって再度データにアクセスされることを期待して、メモリ階層の下位レベルへのアクセスのために最近要求されたデータを移動させるメモリ管理プロトコルであって、最近アクセスされていないデータをメモリ階層の上位レベルに移動させるメモリ管理プロトコルを実装することが可能である。しかしながら、この一般的なメモリ管理プロトコルは、メモリ階層のレベル間でデータを頻繁に移動させ、処理システムの処理効率及び電力消費の両方に影響を与える可能性がある。
【０００３】
本開示は、添付図面を参照することによってより良く理解され、その多くの特徴及び利点が当業者には明らかであろう。異なる図面において同じ参照記号を使用することは、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、１つのキャッシュが、他のキャッシュにおけるエントリの有効性状態に基づいて置換のためのエントリを選択する、メモリ階層を用いた処理システムのブロック図である。
【図２】いくつかの実施形態による、上位レベルのキャッシュから下位レベルのキャッシュにデータを転送する、図１の処理システムの一例のブロック図である。
【図３】いくつかの実施形態による、上位レベルのキャッシュから下位レベルのキャッシュに転送されたデータを、下位レベルのキャッシュにおいて追跡する図１の処理システムの一例のブロック図である。
【図４】いくつかの実施形態による、図１のキャッシュで使用される無効テーブルのブロック図である。
【図５】いくつかの実施形態による、キャッシュの１つのレベルにおいてエントリの有効性状態を追跡して、キャッシュの異なるレベルにおいてエビクション（eviction）データのエントリを選択する方法のフローチャートである。
【発明を実施するための形態】
【０００５】
図１〜５は、一つのキャッシュにおけるエビクション用のエントリを、異なるキャッシュにおける対応するエントリの有効性状態に少なくとも部分的に基づいて選択することによって、処理システムにおけるメモリ管理効率を向上させるための技術を示す図である。例示のために、処理システムは、少なくとも２つのキャッシュ（上位レベルのキャッシュ（メモリ階層内のメインメモリに近い）、及び、下位レベルのキャッシュ（処理システムのプロセッサコアに近い））を有するメモリ階層を備えることができる。上位レベルのキャッシュのエントリのデータが下位レベルのキャッシュのエントリに移動する場合、上位レベルのキャッシュエントリは、有効性状態が「無効」であるとしてマーク付けすることにより、このエントリが、着信データを上位レベルのキャッシュに記憶するために利用可能であることを示す。下位レベルのキャッシュは、上位レベルのキャッシュの何れの位置が無効であるかを監視し、上位レベルのキャッシュへのエビクションのために下位レベルのキャッシュエントリを選択する場合に、選択されたキャッシュエントリを、そのときに上位レベルのキャッシュの無効キャッシュラインであったものに記憶するか否かに少なくとも部分的に基づいて、エントリを選択する。これにより、処理システムは、上位レベルのキャッシュにおけるエビクション数を低減させ、その結果、電力消費が低減し、メモリ効率が改善される。
【０００６】
図１は、いくつかの実施形態による、所定のキャッシュレベルでのキャッシュ置換ポリシーで使用するために異なるレベルのキャッシュにおける無効なキャッシュエントリを、当該所定のキャッシュレベルで追跡するように構成された処理システム１００の一例を示す図である。処理システム１００は、パーソナルコンピュータ、ワークステーション、スマートフォン等のモバイルデバイス、ビデオゲームコンソール、スマートＴＶ等の複数のデバイスのうち何れかで使用することができる。処理システム１００は、プロセッサコア１１０と、複数レベルのキャッシュ（例えば、Ｌ１キャッシュ１２０、Ｌ２キャッシュ１３０、Ｌ３キャッシュ１４０）と、メインメモリ１５０と、を含む。いくつかの実施形態において、プロセッサコア１１０及び複数レベルのキャッシュ（各レベルのキャッシュに関連するキャッシュコントローラを含む）は、単一の半導体ダイに組み込まれたプロセッサを形成し、メインメモリ１５０は別の半導体ダイに組み込まれる。
【０００７】
プロセッサコア１１０は、命令を実行するための１つ以上の命令パイプラインを含み、これにより、電子デバイスに代わってタスクを実行する。プロセッサコア１１０は、ある程度の量の内蔵メモリを例えばレジスタファイルの形式で含むことができるが、このようなメモリは、通常、記憶容量が制限される。したがって、プロセッサコア１１０は、命令を実行するために、Ｌ１キャッシュ１２０と、Ｌ２キャッシュ１３０と、Ｌ３キャッシュ１４０と、メインメモリ１５０と、を含む処理システム１００のメモリ階層からデータを記憶及び取得する。具体的には、プロセッサコア１１０は、命令を実行する過程において、メモリアクセス要求と呼ばれる動作を生成して、データをメモリ階層に記憶し（記憶動作）、データをメモリ階層からロードする（読み出し動作）。Ｌ１キャッシュ１２０、Ｌ２キャッシュ１３０、Ｌ３キャッシュ１４０及びメインメモリ１５０は、本明細書でさらに説明するように、メモリアクセス要求を満たすように協働する。
【０００８】
Ｌ１キャッシュ１２０は、プロセッサコア１１０によるアクセスのためのデータを記憶するメモリモジュールである。少なくとも１つの実施形態では、Ｌ１キャッシュ１２０は、キャッシュラインと呼ばれる関連するデータユニットをそれぞれ記憶することができるエントリのセットから構成されている。Ｌ１キャッシュコントローラ１２２は、データに対するメモリアクセス要求をプロセッサコア１１０から受信し、Ｌ１キャッシュ１２０を検索して、１つのキャッシュエントリがメモリアクセス要求によってターゲットとされるメモリアドレスに関連するキャッシュラインを記憶しているか否かを決定するように構成されたモジュールである。要求されたキャッシュラインがＬ１キャッシュ１２０内で見つかった場合に、キャッシュヒットが発生する。キャッシュヒットの場合、Ｌ１キャッシュコントローラ１２２は、読み出し動作の場合に要求されたキャッシュラインをＬ１キャッシュ１２０からプロセッサコア１１０に提供することによって、又は、書き込み動作の場合に書き込みデータをキャッシュエントリに記憶することによって、メモリアクセス要求を満たす。要求されたキャッシュラインがＬ１キャッシュ１２０内で見つからない場合に、キャッシュミスが発生する。Ｌ１キャッシュ１２０におけるキャッシュミスの場合、Ｌ１キャッシュコントローラ１２２は、メモリアクセス要求をＬ２キャッシュ１３０に提供する。
【０００９】
Ｌ２キャッシュ１３０は、Ｌ１キャッシュ１２０と同様に、関連するキャッシュラインを記憶することができるエントリのセットを含むメモリである。Ｌ２キャッシュコントローラ１３２は、Ｌ１キャッシュ１２０におけるキャッシュミスに応じて、Ｌ１キャッシュコントローラ１２２からメモリアクセス要求を受信するように構成されたモジュールである。Ｌ２キャッシュコントローラ１３２は、メモリアクセス要求を受信したことに応じて、Ｌ２キャッシュ１３０のキャッシュエントリのうち１つのキャッシュエントリがメモリアクセス要求によってターゲットとされるメモリアドレスに関連するデータを記憶しているかどうかを識別する。記憶している場合、Ｌ２キャッシュコントローラ１３２は、キャッシュヒットを識別し、要求されたデータをＬ２キャッシュ１３０からＬ１キャッシュ１２０に提供する。要求されたデータがＬ２キャッシュ１３０内で見つからない場合、Ｌ２キャッシュコントローラは、キャッシュミスを識別し、メモリアクセス要求をＬ３キャッシュ１４０に提供する。
【００１０】
Ｌ３キャッシュ１４０は、Ｌ１キャッシュ１２０及びＬ２キャッシュ１３０と同様に、エントリのセットを含むメモリであり、各エントリは、キャッシュラインを記憶するように構成されている。Ｌ３キャッシュコントローラ１４２は、メモリアクセス要求をＬ２キャッシュコントローラ１３２から受信するように構成されている。Ｌ３キャッシュコントローラ１４２は、メモリアクセス要求を受信したことに応じて、Ｌ３キャッシュ１４０のエントリがメモリアクセス要求によってターゲットとされるメモリアドレスに関連するデータを記憶しているか否かを識別する。キャッシュヒットの場合、Ｌ３キャッシュコントローラ１４２は、要求されたデータをＬ３キャッシュ１４０からＬ２キャッシュ１３０に提供し、Ｌ２キャッシュ１３０は、このデータを記憶して、データをＬ１キャッシュ１２０に提供し、Ｌ１キャッシュ１２０は、上述したメモリアクセス要求を満たす。Ｌ３キャッシュ１４０におけるキャッシュミスの場合、Ｌ３キャッシュコントローラ１４２は、メモリアクセス要求をメインメモリ１５０に提供する。メインメモリ１５０は、要求によってターゲットとされるメモリアドレスにおいてキャッシュラインを取得し、このキャッシュラインをＬ３キャッシュ１４０に提供し、Ｌ３キャッシュ１４０は、Ｌ１キャッシュ１２０への供給のためにキャッシュラインをＬ２キャッシュ１３０に提供するようにして、メモリアクセス要求を満たす。したがって、上述したように、メモリアクセス要求は、要求されたデータが見つかるまでメモリ階層を横断する。次に、要求されたデータがＬ１キャッシュ１２０まで転送され、メモリアクセス要求が満たされる。
【００１１】
いくつかの実施形態において、Ｌ１キャッシュ１２０、Ｌ２キャッシュ１３０及びＬ３キャッシュ１４０の各々は、セットアソシアティブキャッシュであり、各キャッシュは、複数のセットに分割される。各セットは複数のウェイを有し、各ウェイは、キャッシュラインを記憶することができるキャッシュエントリに対応している。各セットは、メモリアドレスのサブセットに関連するキャッシュラインのみを記憶し、セットに関連するサブセットは、インデックスと呼ばれるメモリアドレスの一部に基づいて、対応するキャッシュコントローラによって識別される。セットアソシアティビィティを用いることにより、キャッシュ１２０，１３０，１４０は、キャッシュミス及びキャッシュヒットの比較的迅速な識別を容易にする。さらに、いくつかの実施形態において、Ｌ３キャッシュ１４０はＬ２キャッシュ１３０よりも大きく、そのため各セットに大きなインデックスサイズを用いることができる。
【００１２】
いくつかの実施形態において、キャッシュ１２０，１３０，１４０は、それらが所与の時点において、プロセッサコア１１０によって要求され又は要求される可能性がある全てのデータを所定の時点で記憶することができないようなサイズにされていることによって、上述したようにメモリ階層を介したデータの転送を要求する。データコヒーレンシ、及び、メモリ階層を介するデータの効率的な転送を確保するために、各キャッシュコントローラ１２２，１３２，１４２は、受信したキャッシュラインを記憶するために利用可能なセット内にエントリが存在するか否かを識別し、存在しない場合に、セット内のエントリのうち１つのエントリを置換のために選択する置換ポリシーを実装する。キャッシュエントリの可用性は、エントリに関連するステータス情報（エントリの有効ステータスと呼ばれる）によって示される。特に、無効な有効ステータスを有するキャッシュライン（本明細書において無効キャッシュラインと呼ばれる）は、データを記憶するために利用可能であるものであり、有効な有効ステータスを有するキャッシュライン（本明細書において有効キャッシュラインと呼ばれる）は、置換されない限り、データを記憶することができない。エントリの有効キャッシュラインを入力キャッシュライン（incoming cache line）と置換するために、キャッシュのキャッシュコントローラは、最初に、有効キャッシュラインをメモリ階層の１つ以上の他のレベルに転送することによって有効キャッシュラインをエビクトし、次いで、入力キャッシュラインをエントリに記憶する。
【００１３】
例示すると、処理システム１００のリセットに応じて、Ｌ１キャッシュ１２０、Ｌ２キャッシュ１３０及びＬ３キャッシュ１４０の各々における全てのキャッシュラインは、各々のキャッシュコントローラによって無効状態に設定される。キャッシュエントリがメインメモリ１５０から取得されたキャッシュラインでポピュレートされると、対応するキャッシュコントローラは、キャッシュエントリを有効状態に設定する。無効状態に設定されたキャッシュラインを含むキャッシュウェイは、入力キャッシュラインを受信して、無効キャッシュラインを置換又は上書きすることができる。キャッシュが、記憶されたキャッシュラインを受信した場合、キャッシュラインを記憶するキャッシュウェイを選択する必要がある。入力キャッシュラインに関連するキャッシュセットに利用可能な空きが有る場合（すなわち、無効キャッシュラインを含むと示された１つ以上のキャッシュウェイが有る場合）、入力キャッシュラインは１つの無効ウェイに記憶される。しかしながら、入力キャッシュラインに関連するセット内の全てキャッシュウェイが有効であると示される場合、キャッシュコントローラは、エビクトされる新たなキャッシュラインに関連するキャッシュラインのセットを選択して、入力キャッシュラインのための空きを生成する。
【００１４】
置換のためにキャッシュラインを選択するようにキャッシュコントローラによって使用される特定の基準は、置換ポリシーと呼ばれる。例えば、キャッシュコントローラ１２２は、置換ポリシーをキャッシュ１２０に実装することができ、置換ポリシーは、入力キャッシュラインに関連するキャッシュセット内の最長未使用キャッシュライン（すなわち、メモリアクセス動作のターゲットに最も使われていないキャッシュライン）をエビクションのために選択する。
【００１５】
いくつかの実施形態において、Ｌ２キャッシュコントローラ１３２は、Ｌ３キャッシュ１４０の無効キャッシュラインの位置に基づいて、置換ポリシーを実施する。特に、Ｌ２キャッシュコントローラ１３２は、エビクションのためにＬ３キャッシュ１４０に転送された場合に無効キャッシュウェイに記憶される可能性が高いキャッシュラインを、エビクションのために選択することが可能である。したがって、Ｌ３キャッシュ１４０は、Ｌ２キャッシュ１３０からの入力キャッシュラインのための空きを生成するために、有効キャッシュラインをエビクトしなくてもよい。したがって、Ｌ２キャッシュコントローラ１３２は、Ｌ３キャッシュ１４０の無効キャッシュラインの位置に少なくとも部分的に基づいてエビクションのためのキャッシュラインを選択することによって、Ｌ３キャッシュにおけるエビクションの数を低減させ、節電し、メモリ効率を向上させることができる。
【００１６】
例示すると、動作中、プロセッサコア１１０は、メモリアクセス動作を実行する。プロセッサコア１１０は、要求されたキャッシュラインについてＬ１キャッシュ１２０を検索するＬ１キャッシュコントローラ１２２に対して、データ（キャッシュライン）を要求する。要求されたキャッシュラインがＬ１キャッシュ１２０内で見つかった場合、要求されたキャッシュラインがプロセッサコア１１０に読み出される。要求されたキャッシュラインがＬ１キャッシュ１２０内で見つからない場合、Ｌ１キャッシュコントローラ１２２は、Ｌ２キャッシュコントローラ１３２に対してキャッシュラインを要求する。Ｌ２キャッシュコントローラ１３２は、要求されたキャッシュラインについてＬ２キャッシュ１３０を検索する。要求されたキャッシュラインがＬ２キャッシュ１３０内で見つかった場合、Ｌ２キャッシュコントローラ１３２は、要求されたキャッシュラインをＬ１キャッシュ１２０にコピーし、Ｌ１キャッシュコントローラ１２２は、要求されたキャッシュラインをプロセッサコア１１０に読み出す。
【００１７】
要求されたキャッシュラインがＬ２キャッシュ１３０内で見つからない場合、Ｌ２キャッシュコントローラ１３２は、Ｌ３キャッシュコントローラ１４２に対してキャッシュラインを要求する。Ｌ３キャッシュコントローラ１４２は、要求されたキャッシュラインについてＬ３キャッシュ１４０を検索する。要求されたキャッシュラインがＬ３キャッシュ１４０内で見つかった場合、Ｌ３キャッシュコントローラ１４２は、要求されたキャッシュラインをＬ２キャッシュ１３０にコピーし、Ｌ３キャッシュ１４０内に常駐している要求されたキャッシュラインの保持されたコピーのステータスビットを無効状態に変更する。Ｌ２キャッシュコントローラ１３２は、Ｌ３キャッシュ１４０内の要求されたキャッシュラインが無効状態に設定されたことを示すように、Ｌ３無効テーブル１３４を更新する。Ｌ２キャッシュコントローラ１３２は、Ｌ３キャッシュ１４０からコピーされた要求されたキャッシュラインをコピーすることのできるキャッシュセットを、Ｌ２キャッシュ１３０から検索する。
【００１８】
Ｌ２キャッシュ１３０内のキャッシュセットが、要求されたキャッシュラインを記憶するのに利用できない場合、Ｌ２キャッシュコントローラ１３２は、エビクション及び置換のためにキャッシュセットからキャッシュラインを選択する。選択を行う際、Ｌ２キャッシュコントローラ１３２は、Ｌ３無効テーブル１３４を参照して、入力キャッシュラインが無効キャッシュラインを含むＬ３キャッシュ１４０内のキャッシュセットと関連しているキャッシュセット内にキャッシュラインが存在するか否かを判別する。存在する場合、このようなキャッシュラインは、Ｌ３キャッシュ１４０へのエビクションによってＬ３キャッシュ１４０内の無効キャッシュラインが移動し、Ｌ３キャッシュ１４０からの有効データのエビクションを必要としないので、Ｌ２キャッシュ１３０からＬ３キャッシュ１４０へのエビクションに好ましい。このようなプリファレンスは、Ｌ２キャッシュコントローラ１３２によって、例えばＬ２キャッシュ１３０に常駐する最長未使用キャッシュライン等の他の要因の中で考慮されてもよい。例えば、Ｌ２キャッシュコントローラ１３２は、各キャッシュラインにエイジ値（age value）を割り当て、例えば、キャッシュラインがＬ３キャッシュ１４０の無効キャッシュラインに関連するか否か、キャッシュラインがメモリアクセス動作のターゲットであるか否か等を含む複数の基準に基づいて、エイジ値を調整することができる。したがって、所定のキャッシュラインのエイジ値は、そのキャッシュラインについて、全ての異なる置換ポリシー基準の組み合わせを反映する。エビクションのためにキャッシュラインのセットを選択する場合、Ｌ２キャッシュコントローラ１３２は、セット内のキャッシュラインのエイジ値の比較に基づいて、キャッシュラインを選択することができる。
【００１９】
キャッシュラインがＬ２キャッシュ１３０からＬ３キャッシュ１４０にエビクトされると、Ｌ２キャッシュコントローラ１３２は、入力要求されたキャッシュラインをＬ３キャッシュ１４０からＬ２キャッシュ１３０にコピーする。Ｌ２キャッシュコントローラ１３２は、要求されたキャッシュラインをＬ２キャッシュ１３０にコピーすると、要求されたキャッシュラインをＬ１キャッシュ１２０にコピーする。次に、Ｌ１キャッシュコントローラ１２２は、要求されたキャッシュラインをプロセッサコア１１０に提供する。
【００２０】
処理システム１００の異なるキャッシュコントローラは、各々のキャッシュにおいて異なる置換スキームを実施可能であることが理解されるであろう。例えば、Ｌ２キャッシュコントローラ１３２は、上述したように、Ｌ３キャッシュ１４０のエントリの有効ステータスに少なくとも部分的に基づいて、Ｌ２キャッシュ１３０における置換のためのエントリを選択することができる。対照的に、Ｌ１キャッシュコントローラ１２２は、Ｌ２キャッシュ１３０におけるエントリの有効ステータス、又は、Ｌ３キャッシュ１４０におけるエントリの有効ステータスに関係なく、Ｌ１キャッシュ１２０における置換のためのエントリを選択することができる。異なるキャッシュコントローラでこのような異なる置換スキームを実施することにより、処理システム１００における全体的なメモリアクセス効率を向上させることができる。
【００２１】
図２は、いくつかの実施形態による、エビクトされるＬ３キャッシュラインの有効ステータスに基づく置換のために選択されるＬ２キャッシュ１３０のキャッシュラインの一例を示す図である。図示した例において、Ｌ３キャッシュ１４０は、キャッシュエントリ２４３に記憶されたキャッシュライン２３５を要求するメモリアクセス要求２２１を受信する。Ｌ３キャッシュ１４０は、メモリアクセス要求２２１に応じて、キャッシュライン２３５をＬ２キャッシュ１３０に提供し、Ｌ２キャッシュ１３０は、キャッシュライン２３５をエントリ２３１に記憶する。また、Ｌ３キャッシュ２４０は、メモリアクセス要求２２１に応じて、キャッシュエントリ２４３の有効ビット２４４を、キャッシュエントリ２４３に記憶されたデータが無効であり置換対象であることを示す無効状態に設定する。
【００２２】
Ｌ２キャッシュコントローラ１３２は、メモリアクセス要求２２１及び有効ビット２４４が無効状態に設定された後に、エビクション２２２を識別する。すなわち、Ｌ２キャッシュコントローラ１３２は、エントリのうち１つのエントリからデータをエビクトして、Ｌ３キャッシュ１４０、Ｌ１キャッシュ１２０等の他のキャッシュから受信したデータを収容する必要があることを決定する。Ｌ２キャッシュコントローラ１３２は、エビクション２２２を識別したことに応じて、識別されたエントリが無効状態にあるＬ３キャッシュ１４０のエントリに記憶されるか否かに少なくとも部分的に基づいて、置換のためのエントリを識別する。示された例において、Ｌ２キャッシュ１３０は、データがエビクトされる場合に、当該データがＬ３キャッシュ１４０によってキャッシュエントリ２４３に記憶されるエントリ１３３を含む。すなわち、エントリ１３３のデータに関連するメモリアドレスは、Ｌ２キャッシュ１３０が当該データをＬ３キャッシュ１４０に提供する場合に、Ｌ３キャッシュ１４０が当該データをキャッシュセット２４３に記憶するようになっている。また、上述したように、キャッシュエントリ２４３の有効ビット２４４は、メモリアクセス要求２２１に応じて無効状態に予め設定されている。したがって、Ｌ２キャッシュコントローラ１３２は、キャッシュエントリ２４３が無効データを記憶するように有効ビット２４４によって示されているのを識別したことに応じて、置換のためのエントリ１３３を選択し、エントリ１３３に記憶されたデータをＬ３キャッシュ１４０に提供する。
【００２３】
Ｌ３キャッシュコントローラ１４２は、Ｌ２キャッシュ１３０からデータを受信したことに応じて、このデータを記憶するキャッシュエントリ２４３を選択する。Ｌ３キャッシュ１４０は、キャッシュエントリ２４３が無効状態であると示されているので、入力データを収容するために有効データをエビクトする必要がない。したがって、データが無効として示されるＬ３キャッシュ１４０のエントリに記憶されるか否かに基づいて、当該データをエビクションのために選択することによって、Ｌ２キャッシュ１３０は、Ｌ３キャッシュ１４０におけるエビクションの数を低減させ、処理システム１００における全体的なメモリ効率を向上させる。
【００２４】
図１に関して上述したように、いくつかの実施形態において、Ｌ２キャッシュコントローラ１３２は、Ｌ３無効テーブル１３４内のＬ３キャッシュ１４０のエントリの有効ステータスの追跡を続ける。図３は、いくつかの実施形態による、Ｌ３キャッシュ１４０のエントリの有効ステータスにおける変更に応じて、Ｌ３無効テーブル１３４を更新するＬ２キャッシュコントローラ１３２の一例を示す図である。示された例において、Ｌ３キャッシュ１４０は、Ｌ３キャッシュ１４０がキャッシュライン３３５をＬ２キャッシュ１３０へ転送する要求を表すメモリアクセス要求３２１を受信する。これに応じて、Ｌ３キャッシュコントローラ１４２は、キャッシュライン３３５がエントリ３４３に記憶されているのを識別し、エントリ３４３に記憶されているデータをＬ２キャッシュ１３０に転送し、Ｌ２キャッシュ１３０は、このデータをエントリ３３１に記憶する。また、Ｌ３キャッシュコントローラ１４２は、エントリ３４３に記憶されているデータが有効ではないことを示すために、エントリ３４３の有効ビット３４４を無効状態に設定する。
【００２５】
Ｌ３キャッシュコントローラ１４２は、エントリ３４３の有効ビット３４４を無効状態に設定したことに応じて、エントリ３４３が無効であることを示すメッセージ（図３には示されていない）をＬ２キャッシュコントローラ１３２に送信する。これに応じて、Ｌ２キャッシュコントローラ１３２は、Ｌ３キャッシュ１４０のエントリ３４３に対応するＬ３無効テーブル１３４のエントリ３３３を識別する。Ｌ２キャッシュコントローラ１３２は、エントリ３４３が無効であることを示すようにエントリ３３３を更新し、これにより、エントリ３４３に記憶される可能性が高いデータは、Ｌ２キャッシュ１３０からのエビクションに関して優先的に扱われる。Ｌ２キャッシュコントローラ１３２は、エントリ３４３に記憶されたデータの有効性に関するその後の変更に応じて、エントリ３３３を更新し続けることができる。Ｌ３キャッシュ１４０のエントリの有効ステータスをＬ３無効テーブル１３４に記憶することにより、Ｌ２キャッシュコントローラは、Ｌ２キャッシュ１３０における置換のためのデータを識別する際に、有効ステータスを迅速に組み込むことができる。
【００２６】
図４は、いくつかの実施形態による、図１の無効テーブル１３４の一例を示す図である。図示した例では、無効テーブル１３４は、複数のエントリ（例えば、エントリ４３５）を含み、各エントリは、エントリのタグをＬ３キャッシュ１４０に記憶するタグフィールド４３７を含む。また、無効テーブル１３４の各エントリは、タグに対応するエントリの有効ステータスを示すステータスフィールド４３８を含む。少なくとも１つの実施形態において、エントリについてのステータスフィールドは、Ｌ３キャッシュ１４０からＬ２キャッシュ１３０へ転送されるタグに対応するキャッシュエントリに応じてタグ値をタグフィールドに記憶する場合に、無効状態に設定される。Ｌ２キャッシュコントローラ１３２は、新たなキャッシュラインがタグ値に対応するＬ３キャッシュ１４０のキャッシュラインに記憶されているという指示等の特定のイベントに応じて、ステータスフィールドを有効状態に更新することができる。これにより、Ｌ３無効テーブル１３４は、Ｌ３キャッシュ１４０のキャッシュラインの有効ステータスの最新の記録を維持し、上述したようにＬ２キャッシュ１３０のキャッシュラインをエビクションのために選択するようにＬ２キャッシュコントローラ１３２によって使用され得る。
【００２７】
図５は、エビクションのために選択されたキャッシュラインに関連する第２キャッシュのキャッシュセット内のキャッシュラインの無効状態に基づいて、第１キャッシュから第２キャッシュへのエビクションのためのキャッシュラインを選択する方法５００を示すフロー図である。ブロック５０２において、Ｌ３キャッシュコントローラは、データについての要求を受信する。ブロック５０４において、Ｌ３キャッシュコントローラは、要求されたキャッシュラインがＬ３キャッシュ内で見つかった場合に、要求されたキャッシュラインをＬ２キャッシュにコピーする。ブロック５０６において、Ｌ３キャッシュコントローラは、Ｌ３キャッシュ内のキャッシュラインの保持されたコピーを無効状態に設定する。ブロック５０８において、Ｌ２キャッシュコントローラは、Ｌ３キャッシュ内のキャッシュラインの保持されたコピーが無効であることを示すように、Ｌ３無効テーブルを更新する。ブロック５１０において、Ｌ２キャッシュコントローラが、Ｌ２キャッシュからエビクションのためのキャッシュラインを選択して、入力データのために空きを生成した場合に、Ｌ２キャッシュコントローラは、Ｌ３キャッシュ内のキャッシュラインの無効状態に部分的に基づいて、Ｌ２キャッシュからエビクションのためのキャッシュラインを選択する。方法５００は、Ｌ３キャッシュとＬ２キャッシュとの間の例示的な実施形態に関して説明されているが、複数のレベルのキャッシュを含む他のメモリ階層においても適用される。
【００２８】
いくつかの実施形態において、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に記憶され又は他の方法により有形に具現化される、実行可能な１つ以上の命令セットを含む。ソフトウェアは、１つ以上のプロセッサによって実行される場合に、上述した技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等のソリッドステート記憶デバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶される実行可能な命令は、１つ以上のプロセッサによって解釈され又は他の方法で実行可能なソースコード、アセンブリ言語コード、オブジェクトコード、又は、他の命令フォーマットであってもよい。
【００２９】
一般的な説明の中で上述した全てのアクティビティ又は要素が必要であるとは限らず、特定のアクティビティ又はデバイスの一部が必要でなくてもよいこと、又は、記述されたものに加えて、１つ以上のさらなるアクティビティが実行され、１つ以上のさらなる要素が含まれ得ることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができることを理解されたい。したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味で考えられるべきであり、このような変形の全ては、本発明の範囲内に含まれることが意図される。
【００３０】
開示された発明は、本明細書の教示の恩恵を受ける当業者には明らかであるが、異なるが同等の方法で変更され実施され得るように、上述した特定の実施形態は単なる例示に過ぎない。以下の特許請求の範囲に記載されているもの以外の本明細書に示された構成又は設計の詳細に制限はない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、このような変形が開示された発明の範囲内にあると考えられることが明らかである。したがって、本明細書で求められる保護は、下記の特許請求の範囲に記載されている。
【図１】
2019517689.tif 000003
【図２】
2019517689.tif 000004
【図３】
2019517689.tif 000005
【図４】
2019517689.tif 000006
【図５】
2019517689.tif 000007
【手続補正書】
【提出日】平成31年1月30日(2019.1.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理システム（１００）において、
第１データ（２３５）を、前記処理システムの第１キャッシュ（１４０）のエントリ（２４３）から前記処理システムの第２キャッシュ（１３０）のエントリ（２３１）に転送することと、
前記処理システムにおいて、前記第１データを前記第１キャッシュのエントリから前記第２キャッシュのエントリに転送することに応じて、前記第１キャッシュのエントリの有効ステータス（２４４）を無効状態に設定することと、
前記処理システムにおいて、前記第１キャッシュのエントリの有効ステータスに基づいて、前記第２キャッシュにおいて置換のための第２データ（１３３）を選択することと、を含む、
方法。
【請求項２】
前記第１データを前記第１キャッシュのエントリから前記第２キャッシュのエントリに転送した後に、前記第２キャッシュにおいて受信したメモリアクセス要求（２２１）に応じて、前記第２キャッシュにおいて置換のための前記第２データを選択することをさらに含む、
請求項１の方法。
【請求項３】
前記第２キャッシュのキャッシュコントローラ（１３２）において前記第１キャッシュのエントリの有効ステータスを記憶することであって、前記第２データを選択することは、記憶された有効ステータスに基づいて前記第２データを選択することを含む、ことをさらに含む、
請求項１の方法。
【請求項４】
データが前記第１キャッシュのエントリに記憶されたという指示に応じて、記憶された有効ステータスを更新することをさらに含む、
請求項３の方法。
【請求項５】
前記第２キャッシュにおいて置換のための前記第２データを選択することは、前記第２キャッシュのエントリのエイジ値に基づいている、
請求項１の方法。
【請求項６】
置換のための前記第２データを選択することに応じて、前記第２データを前記第２キャッシュから前記第１キャッシュに転送することをさらに含む、
請求項１の方法。
【請求項７】
第１データを前記第２キャッシュのエントリから第３キャッシュ（１２０）に転送することと、
前記第２キャッシュのエントリの有効ステータスに関係なく、前記第３キャッシュにおける置換のためのデータを選択することと、をさらに含む、
請求項１の方法。
【請求項８】
処理システム（１００）の第１キャッシュ（１３０）に関連する第１キャッシュコントローラ（１３２）において、第２キャッシュのエントリ（２４３）の有効ステータス（２４４）を追跡することと、
前記処理システムにおいて、前記第１キャッシュコントローラによって追跡された前記第２キャッシュのエントリの有効ステータスに部分的に基づいて、前記第１キャッシュコントローラによるエビクションのためのデータ（１３３）を前記第１キャッシュから選択することと、を含む、
方法。
【請求項９】
エビクションのためのデータを前記第１キャッシュから選択することは、
前記データが前記第２キャッシュのエントリに記憶されていることを識別したことと、前記エントリの有効ステータスが無効ステータスであることを識別したことと、に応じて、前記第１キャッシュから前記データを選択することを含み、
前記方法は、
データが前記第２キャッシュのエントリから前記第１キャッシュに転送される場合に、前記第２キャッシュのエントリの有効ステータスを無効として識別することをさらに含む、
請求項８の方法。
【請求項１０】
第１キャッシュ（１４０）と、
第２キャッシュ（１３０）と、
第１キャッシュコントローラ（１３２）と、を備え、
前記第１キャッシュコントローラは、
第１データを、前記第１キャッシュのエントリ（２４３）から前記第２キャッシュのエントリ（２３１）に転送することに応じて、前記第１キャッシュのエントリの有効ステータス（２４４）を無効状態に設定することと、
前記第１キャッシュのエントリの有効ステータスに基づいて、前記第２キャッシュにおいて置換のための第２データ（１３３）を選択することと、
を行うように構成されている、
プロセッサ（１００）。
【請求項１１】
前記第１キャッシュコントローラは、
前記第１データを前記第１キャッシュのエントリから前記第２キャッシュのエントリに転送した後に、前記第２キャッシュにおいて受信したメモリアクセス要求（２２２）に応じて、前記第２キャッシュにおいて置換のための前記第２データを選択すること、
を行うようにさらに構成されている、
請求項１０のプロセッサ。
【請求項１２】
前記第１キャッシュコントローラは、
前記第１キャッシュのエントリの有効ステータスを記憶することと、
前記記憶された有効ステータスに基づいて前記第２データを選択することと、
データが前記第１キャッシュのエントリに記憶されたという指示に応じて、記憶された有効ステータスを更新することと、
を行うようにさらに構成されている、
請求項１１のプロセッサ。
【請求項１３】
前記第１キャッシュコントローラは、
前記第２キャッシュのエントリのエイジ値に基づく置換のために前記第１データを選択すること、
をさらに行うように構成されている、
請求項１０のプロセッサ。
【請求項１４】
前記第１キャッシュコントローラは、
置換のために選択された前記第１データを前記第２キャッシュから前記第１キャッシュに転送すること、
をさらに行うように構成されている、
請求項１０のプロセッサ。
【請求項１５】
第３キャッシュ（１２０）と、第２キャッシュコントローラ（１２２）と、をさらに備え、
前記第１キャッシュコントローラは、前記第１データを前記第２キャッシュのエントリから前記第３キャッシュのエントリに転送するように構成されており、
前記第２キャッシュコントローラは、第２キャッシュのエントリの可用性に関係なく、前記第３キャッシュにおいて置換のためのデータを選択するように構成されている、
請求項１０のプロセッサ。
【国際調査報告】
2019517689.tif 000008
2019517689.tif 000009