(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6630449
(24)【登録日】2019年12月13日
(45)【発行日】2020年1月15日
(54)【発明の名称】他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換
(51)【国際特許分類】
G06F 12/127 20160101AFI20200106BHJP
G06F 12/0897 20160101ALI20200106BHJP
G06F 12/123 20160101ALI20200106BHJP
【FI】
G06F12/127
G06F12/0897 105
G06F12/123
【請求項の数】16
【全頁数】13
(21)【出願番号】特願2018-555745(P2018-555745)
(86)(22)【出願日】2016年9月14日
(65)【公表番号】特表2019-517689(P2019-517689A)
(43)【公表日】2019年6月24日
(86)【国際出願番号】US2016051661
(87)【国際公開番号】WO2017218022
(87)【国際公開日】20171221
【審査請求日】2019年8月29日
(31)【優先権主張番号】15/180,807
(32)【優先日】2016年6月13日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール ジェームス モイヤー
【審査官】
境 周一
(56)【参考文献】
【文献】
特表2004−529435(JP,A)
【文献】
米国特許出願公開第2014/0089559(US,A1)
【文献】
米国特許出願公開第2012/0254550(US,A1)
【文献】
米国特許出願公開第2016/0055100(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08−12/128
(57)【特許請求の範囲】
【請求項1】
処理システムにおいて、
第1データを、前記処理システムの第1キャッシュのエントリから前記処理システムの第2キャッシュのエントリに転送することと、
前記処理システムにおいて、前記第1データを前記第1キャッシュのエントリから前記第2キャッシュのエントリに転送することに応じて、前記第1キャッシュのエントリの有効ステータスを無効状態に設定することと、
前記処理システムにおいて、前記第1キャッシュのエントリの有効ステータスが無効状態を示すことに応じて、前記第2キャッシュにおいて置換のための第2データを選択することと、
置換のための前記第2データを選択したことに応じて、前記第2データを前記第2キャッシュから前記第1キャッシュに転送することと、を含む、
方法。
【請求項2】
前記第1データを前記第1キャッシュのエントリから前記第2キャッシュのエントリに転送した後に、前記第2キャッシュにおいて受信したメモリアクセス要求に応じて、前記第2キャッシュにおいて置換のための前記第2データを選択することをさらに含む、
請求項1の方法。
【請求項3】
前記第2キャッシュのキャッシュコントローラにおいて前記第1キャッシュのエントリの有効ステータスを記憶することであって、前記第2データを選択することは、記憶された有効ステータスに基づいて前記第2データを選択することを含む、ことをさらに含む、
請求項1の方法。
【請求項4】
データが前記第1キャッシュのエントリに記憶されたという指示に応じて、記憶された有効ステータスを更新することをさらに含む、
請求項3の方法。
【請求項5】
前記第2キャッシュにおいて置換のための前記第2データを選択することは、前記第2キャッシュのエントリのエイジ値に基づいている、
請求項1の方法。
【請求項6】
第1データを前記第2キャッシュのエントリから第3キャッシュに転送することと、
前記第2キャッシュのエントリの有効ステータスに関係なく、前記第3キャッシュにおける置換のためのデータを選択することと、をさらに含む、
請求項1の方法。
【請求項7】
処理システムの第1キャッシュに関連する第1キャッシュコントローラにおいて、第2キャッシュのエントリの有効ステータスを追跡することと、
前記処理システムにおいて、前記第1キャッシュコントローラによって追跡された前記第2キャッシュのエントリの有効ステータスが無効データを示すことに応じて、前記第1キャッシュコントローラによるエビクションのためのデータを前記第1キャッシュから選択することと、
前記データが前記第2キャッシュのエントリに記憶されていることを識別したことに応じて、前記第1キャッシュから前記データを選択することと、を含む、
方法。
【請求項8】
データが前記第2キャッシュのエントリから前記第1キャッシュに転送される場合に、前記第2キャッシュのエントリの有効ステータスが無効であると識別することをさらに含む、
請求項7の方法。
【請求項9】
エビクションのために選択されたデータを前記第1キャッシュから前記第2キャッシュに転送することをさらに含む、
請求項7の方法。
【請求項10】
エビクションのためのデータを前記第1キャッシュから選択することは、前記第1キャッシュにおける前記データのエイジ値に部分的に基づいている、
請求項7の方法。
【請求項11】
第1キャッシュと、
第2キャッシュと、
第1キャッシュコントローラと、を備え、
前記第1キャッシュコントローラは、
第1データを、前記第1キャッシュのエントリから前記第2キャッシュのエントリに転送することに応じて、前記第1キャッシュのエントリの有効ステータスを無効状態に設定することと、
前記第1キャッシュのエントリの有効ステータスが無効状態を示すことに応じて、前記第2キャッシュにおいて置換のための第2データを選択することと、
置換のために選択された前記第2データを前記第2キャッシュから前記第1キャッシュに転送することと、
を行うように構成されている、
プロセッサ。
【請求項12】
前記第1キャッシュコントローラは、
前記第1データを前記第1キャッシュのエントリから前記第2キャッシュのエントリに転送した後に、前記第2キャッシュにおいて受信したメモリアクセス要求に応じて、前記第2キャッシュにおいて置換のための前記第2データを選択すること、
を行うようにさらに構成されている、
請求項11のプロセッサ。
【請求項13】
前記第1キャッシュコントローラは、
前記第1キャッシュのエントリの有効ステータスを記憶することと、
前記記憶された有効ステータスに基づいて前記第2データを選択することと、
を行うようにさらに構成されている、
請求項12のプロセッサ。
【請求項14】
前記第1キャッシュコントローラは、
データが前記第1キャッシュのエントリに記憶されたという指示に応じて、記憶された有効ステータスを更新することを行うようにさらに構成されている、
請求項13のプロセッサ。
【請求項15】
前記第1キャッシュコントローラは、
前記第2キャッシュのエントリのエイジ値に基づいて、置換のための前記第2データを選択することを行うようにさらに構成されている、
請求項11のプロセッサ。
【請求項16】
第3キャッシュと、第2キャッシュコントローラと、をさらに備え、
前記第1キャッシュコントローラは、前記第1データを前記第2キャッシュのエントリから前記第3キャッシュのエントリに転送するように構成されており、
前記第2キャッシュコントローラは、前記第3キャッシュにおいて置換のためのデータを選択するように構成されている、
請求項11のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概してプロセッサに関し、より詳細には、プロセッサにおけるキャッシュ管理に関する。
【背景技術】
【0002】
処理システムは、命令の実行をサポートするために、通常、実行中の命令によってアクセスされるデータを記憶するメモリモジュールを有するメモリサブシステムを備える。メモリサブシステムは、実行命令によってアクセスされ得るよりも大量のデータを記憶することができるように、階層の最上部にメインメモリを有するメモリ階層であって、メインメモリに記憶されたデータのサブセットを記憶するために、メモリ階層のより下位レベルに1つ以上のキャッシュを有するメモリ階層に編成されている。通常、下位データは、メモリ階層に記憶されるため、プロセッサは、より迅速にアクセスすることができる。処理効率をさらに高めるために、処理システムは、メモリ階層の各レベルに記憶された特定のデータセットを管理するメモリ管理プロトコルを実装することが可能である。例えば、処理システムは、近い将来にプロセッサによって再度データにアクセスされることを期待して、メモリ階層の下位レベルへのアクセスのために最近要求されたデータを移動させるメモリ管理プロトコルであって、最近アクセスされていないデータをメモリ階層の上位レベルに移動させるメモリ管理プロトコルを実装することが可能である。しかしながら、この一般的なメモリ管理プロトコルは、メモリ階層のレベル間でデータを頻繁に移動させ、処理システムの処理効率及び電力消費の両方に影響を与える可能性がある。
【0003】
本開示は、添付図面を参照することによってより良く理解され、その多くの特徴及び利点が当業者には明らかであろう。異なる図面において同じ参照記号を使用することは、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0004】
【
図1】いくつかの実施形態による、1つのキャッシュが、他のキャッシュにおけるエントリの有効性状態に基づいて置換のためのエントリを選択する、メモリ階層を用いた処理システムのブロック図である。
【
図2】いくつかの実施形態による、上位レベルのキャッシュから下位レベルのキャッシュにデータを転送する、
図1の処理システムの一例のブロック図である。
【
図3】いくつかの実施形態による、上位レベルのキャッシュから下位レベルのキャッシュに転送されたデータを、下位レベルのキャッシュにおいて追跡する
図1の処理システムの一例のブロック図である。
【
図4】いくつかの実施形態による、
図1のキャッシュで使用される無効テーブルのブロック図である。
【
図5】いくつかの実施形態による、キャッシュの1つのレベルにおいてエントリの有効性状態を追跡して、キャッシュの異なるレベルにおいてエビクション(eviction)データのエントリを選択する方法のフローチャートである。
【発明を実施するための形態】
【0005】
図1〜5は、一つのキャッシュにおけるエビクション用のエントリを、異なるキャッシュにおける対応するエントリの有効性状態に少なくとも部分的に基づいて選択することによって、処理システムにおけるメモリ管理効率を向上させるための技術を示す図である。例示のために、処理システムは、少なくとも2つのキャッシュ(上位レベルのキャッシュ(メモリ階層内のメインメモリに近い)、及び、下位レベルのキャッシュ(処理システムのプロセッサコアに近い))を有するメモリ階層を備えることができる。上位レベルのキャッシュのエントリのデータが下位レベルのキャッシュのエントリに移動する場合、上位レベルのキャッシュエントリは、有効性状態が「無効」であるとしてマーク付けすることにより、このエントリが、着信データを上位レベルのキャッシュに記憶するために利用可能であることを示す。下位レベルのキャッシュは、上位レベルのキャッシュの何れの位置が無効であるかを監視し、上位レベルのキャッシュへのエビクションのために下位レベルのキャッシュエントリを選択する場合に、選択されたキャッシュエントリを、そのときに上位レベルのキャッシュの無効キャッシュラインであったものに記憶するか否かに少なくとも部分的に基づいて、エントリを選択する。これにより、処理システムは、上位レベルのキャッシュにおけるエビクション数を低減させ、その結果、電力消費が低減し、メモリ効率が改善される。
【0006】
図1は、いくつかの実施形態による、所定のキャッシュレベルでのキャッシュ置換ポリシーで使用するために異なるレベルのキャッシュにおける無効なキャッシュエントリを、当該所定のキャッシュレベルで追跡するように構成された処理システム100の一例を示す図である。処理システム100は、パーソナルコンピュータ、ワークステーション、スマートフォン等のモバイルデバイス、ビデオゲームコンソール、スマートTV等の複数のデバイスのうち何れかで使用することができる。処理システム100は、プロセッサコア110と、複数レベルのキャッシュ(例えば、L1キャッシュ120、L2キャッシュ130、L3キャッシュ140)と、メインメモリ150と、を含む。いくつかの実施形態において、プロセッサコア110及び複数レベルのキャッシュ(各レベルのキャッシュに関連するキャッシュコントローラを含む)は、単一の半導体ダイに組み込まれたプロセッサを形成し、メインメモリ150は別の半導体ダイに組み込まれる。
【0007】
プロセッサコア110は、命令を実行するための1つ以上の命令パイプラインを含み、これにより、電子デバイスに代わってタスクを実行する。プロセッサコア110は、ある程度の量の内蔵メモリを例えばレジスタファイルの形式で含むことができるが、このようなメモリは、通常、記憶容量が制限される。したがって、プロセッサコア110は、命令を実行するために、L1キャッシュ120と、L2キャッシュ130と、L3キャッシュ140と、メインメモリ150と、を含む処理システム100のメモリ階層からデータを記憶及び取得する。具体的には、プロセッサコア110は、命令を実行する過程において、メモリアクセス要求と呼ばれる動作を生成して、データをメモリ階層に記憶し(記憶動作)、データをメモリ階層からロードする(読み出し動作)。L1キャッシュ120、L2キャッシュ130、L3キャッシュ140及びメインメモリ150は、本明細書でさらに説明するように、メモリアクセス要求を満たすように協働する。
【0008】
L1キャッシュ120は、プロセッサコア110によるアクセスのためのデータを記憶するメモリモジュールである。少なくとも1つの実施形態では、L1キャッシュ120は、キャッシュラインと呼ばれる関連するデータユニットをそれぞれ記憶することができるエントリのセットから構成されている。L1キャッシュコントローラ122は、データに対するメモリアクセス要求をプロセッサコア110から受信し、L1キャッシュ120を検索して、1つのキャッシュエントリがメモリアクセス要求によってターゲットとされるメモリアドレスに関連するキャッシュラインを記憶しているか否かを決定するように構成されたモジュールである。要求されたキャッシュラインがL1キャッシュ120内で見つかった場合に、キャッシュヒットが発生する。キャッシュヒットの場合、L1キャッシュコントローラ122は、読み出し動作の場合に要求されたキャッシュラインをL1キャッシュ120からプロセッサコア110に提供することによって、又は、書き込み動作の場合に書き込みデータをキャッシュエントリに記憶することによって、メモリアクセス要求を満たす。要求されたキャッシュラインがL1キャッシュ120内で見つからない場合に、キャッシュミスが発生する。L1キャッシュ120におけるキャッシュミスの場合、L1キャッシュコントローラ122は、メモリアクセス要求をL2キャッシュ130に提供する。
【0009】
L2キャッシュ130は、L1キャッシュ120と同様に、関連するキャッシュラインを記憶することができるエントリのセットを含むメモリである。L2キャッシュコントローラ132は、L1キャッシュ120におけるキャッシュミスに応じて、L1キャッシュコントローラ122からメモリアクセス要求を受信するように構成されたモジュールである。L2キャッシュコントローラ132は、メモリアクセス要求を受信したことに応じて、L2キャッシュ130のキャッシュエントリのうち1つのキャッシュエントリがメモリアクセス要求によってターゲットとされるメモリアドレスに関連するデータを記憶しているかどうかを識別する。記憶している場合、L2キャッシュコントローラ132は、キャッシュヒットを識別し、要求されたデータをL2キャッシュ130からL1キャッシュ120に提供する。要求されたデータがL2キャッシュ130内で見つからない場合、L2キャッシュコントローラは、キャッシュミスを識別し、メモリアクセス要求をL3キャッシュ140に提供する。
【0010】
L3キャッシュ140は、L1キャッシュ120及びL2キャッシュ130と同様に、エントリのセットを含むメモリであり、各エントリは、キャッシュラインを記憶するように構成されている。L3キャッシュコントローラ142は、メモリアクセス要求をL2キャッシュコントローラ132から受信するように構成されている。L3キャッシュコントローラ142は、メモリアクセス要求を受信したことに応じて、L3キャッシュ140のエントリがメモリアクセス要求によってターゲットとされるメモリアドレスに関連するデータを記憶しているか否かを識別する。キャッシュヒットの場合、L3キャッシュコントローラ142は、要求されたデータをL3キャッシュ140からL2キャッシュ130に提供し、L2キャッシュ130は、このデータを記憶して、データをL1キャッシュ120に提供し、L1キャッシュ120は、上述したメモリアクセス要求を満たす。L3キャッシュ140におけるキャッシュミスの場合、L3キャッシュコントローラ142は、メモリアクセス要求をメインメモリ150に提供する。メインメモリ150は、要求によってターゲットとされるメモリアドレスにおいてキャッシュラインを取得し、このキャッシュラインをL3キャッシュ140に提供し、L3キャッシュ140は、L1キャッシュ120への供給のためにキャッシュラインをL2キャッシュ130に提供するようにして、メモリアクセス要求を満たす。したがって、上述したように、メモリアクセス要求は、要求されたデータが見つかるまでメモリ階層を横断する。次に、要求されたデータがL1キャッシュ120まで転送され、メモリアクセス要求が満たされる。
【0011】
いくつかの実施形態において、L1キャッシュ120、L2キャッシュ130及びL3キャッシュ140の各々は、セットアソシアティブキャッシュであり、各キャッシュは、複数のセットに分割される。各セットは複数のウェイを有し、各ウェイは、キャッシュラインを記憶することができるキャッシュエントリに対応している。各セットは、メモリアドレスのサブセットに関連するキャッシュラインのみを記憶し、セットに関連するサブセットは、インデックスと呼ばれるメモリアドレスの一部に基づいて、対応するキャッシュコントローラによって識別される。セットアソシアティビィティを用いることにより、キャッシュ120,130,140は、キャッシュミス及びキャッシュヒットの比較的迅速な識別を容易にする。さらに、いくつかの実施形態において、L3キャッシュ140はL2キャッシュ130よりも大きく、そのため各セットに大きなインデックスサイズを用いることができる。
【0012】
いくつかの実施形態において、キャッシュ120,130,140は、それらが所与の時点において、プロセッサコア110によって要求され又は要求される可能性がある全てのデータを所定の時点で記憶することができないようなサイズにされていることによって、上述したようにメモリ階層を介したデータの転送を要求する。データコヒーレンシ、及び、メモリ階層を介するデータの効率的な転送を確保するために、各キャッシュコントローラ122,132,142は、受信したキャッシュラインを記憶するために利用可能なセット内にエントリが存在するか否かを識別し、存在しない場合に、セット内のエントリのうち1つのエントリを置換のために選択する置換ポリシーを実装する。キャッシュエントリの可用性は、エントリに関連するステータス情報(エントリの有効ステータスと呼ばれる)によって示される。特に、無効な有効ステータスを有するキャッシュライン(本明細書において無効キャッシュラインと呼ばれる)は、データを記憶するために利用可能であるものであり、有効な有効ステータスを有するキャッシュライン(本明細書において有効キャッシュラインと呼ばれる)は、置換されない限り、データを記憶することができない。エントリの有効キャッシュラインを入力キャッシュライン(incoming cache line)と置換するために、キャッシュのキャッシュコントローラは、最初に、有効キャッシュラインをメモリ階層の1つ以上の他のレベルに転送することによって有効キャッシュラインをエビクトし、次いで、入力キャッシュラインをエントリに記憶する。
【0013】
例示すると、処理システム100のリセットに応じて、L1キャッシュ120、L2キャッシュ130及びL3キャッシュ140の各々における全てのキャッシュラインは、各々のキャッシュコントローラによって無効状態に設定される。キャッシュエントリがメインメモリ150から取得されたキャッシュラインでポピュレートされると、対応するキャッシュコントローラは、キャッシュエントリを有効状態に設定する。無効状態に設定されたキャッシュラインを含むキャッシュウェイは、入力キャッシュラインを受信して、無効キャッシュラインを置換又は上書きすることができる。キャッシュが、記憶されたキャッシュラインを受信した場合、キャッシュラインを記憶するキャッシュウェイを選択する必要がある。入力キャッシュラインに関連するキャッシュセットに利用可能な空きが有る場合(すなわち、無効キャッシュラインを含むと示された1つ以上のキャッシュウェイが有る場合)、入力キャッシュラインは1つの無効ウェイに記憶される。しかしながら、入力キャッシュラインに関連するセット内の全てキャッシュウェイが有効であると示される場合、キャッシュコントローラは、エビクトされる新たなキャッシュラインに関連するキャッシュラインのセットを選択して、入力キャッシュラインのための空きを生成する。
【0014】
置換のためにキャッシュラインを選択するようにキャッシュコントローラによって使用される特定の基準は、置換ポリシーと呼ばれる。例えば、キャッシュコントローラ122は、置換ポリシーをキャッシュ120に実装することができ、置換ポリシーは、入力キャッシュラインに関連するキャッシュセット内の最長未使用キャッシュライン(すなわち、メモリアクセス動作のターゲットに最も使われていないキャッシュライン)をエビクションのために選択する。
【0015】
いくつかの実施形態において、L2キャッシュコントローラ132は、L3キャッシュ140の無効キャッシュラインの位置に基づいて、置換ポリシーを実施する。特に、L2キャッシュコントローラ132は、エビクションのためにL3キャッシュ140に転送された場合に無効キャッシュウェイに記憶される可能性が高いキャッシュラインを、エビクションのために選択することが可能である。したがって、L3キャッシュ140は、L2キャッシュ130からの入力キャッシュラインのための空きを生成するために、有効キャッシュラインをエビクトしなくてもよい。したがって、L2キャッシュコントローラ132は、L3キャッシュ140の無効キャッシュラインの位置に少なくとも部分的に基づいてエビクションのためのキャッシュラインを選択することによって、L3キャッシュにおけるエビクションの数を低減させ、節電し、メモリ効率を向上させることができる。
【0016】
例示すると、動作中、プロセッサコア110は、メモリアクセス動作を実行する。プロセッサコア110は、要求されたキャッシュラインについてL1キャッシュ120を検索するL1キャッシュコントローラ122に対して、データ(キャッシュライン)を要求する。要求されたキャッシュラインがL1キャッシュ120内で見つかった場合、要求されたキャッシュラインがプロセッサコア110に読み出される。要求されたキャッシュラインがL1キャッシュ120内で見つからない場合、L1キャッシュコントローラ122は、L2キャッシュコントローラ132に対してキャッシュラインを要求する。L2キャッシュコントローラ132は、要求されたキャッシュラインについてL2キャッシュ130を検索する。要求されたキャッシュラインがL2キャッシュ130内で見つかった場合、L2キャッシュコントローラ132は、要求されたキャッシュラインをL1キャッシュ120にコピーし、L1キャッシュコントローラ122は、要求されたキャッシュラインをプロセッサコア110に読み出す。
【0017】
要求されたキャッシュラインがL2キャッシュ130内で見つからない場合、L2キャッシュコントローラ132は、L3キャッシュコントローラ142に対してキャッシュラインを要求する。L3キャッシュコントローラ142は、要求されたキャッシュラインについてL3キャッシュ140を検索する。要求されたキャッシュラインがL3キャッシュ140内で見つかった場合、L3キャッシュコントローラ142は、要求されたキャッシュラインをL2キャッシュ130にコピーし、L3キャッシュ140内に常駐している要求されたキャッシュラインの保持されたコピーのステータスビットを無効状態に変更する。L2キャッシュコントローラ132は、L3キャッシュ140内の要求されたキャッシュラインが無効状態に設定されたことを示すように、L3無効テーブル134を更新する。L2キャッシュコントローラ132は、L3キャッシュ140からコピーされた要求されたキャッシュラインをコピーすることのできるキャッシュセットを、L2キャッシュ130から検索する。
【0018】
L2キャッシュ130内のキャッシュセットが、要求されたキャッシュラインを記憶するのに利用できない場合、L2キャッシュコントローラ132は、エビクション及び置換のためにキャッシュセットからキャッシュラインを選択する。選択を行う際、L2キャッシュコントローラ132は、L3無効テーブル134を参照して、入力キャッシュラインが無効キャッシュラインを含むL3キャッシュ140内のキャッシュセットと関連しているキャッシュセット内にキャッシュラインが存在するか否かを判別する。存在する場合、このようなキャッシュラインは、L3キャッシュ140へのエビクションによってL3キャッシュ140内の無効キャッシュラインが移動し、L3キャッシュ140からの有効データのエビクションを必要としないので、L2キャッシュ130からL3キャッシュ140へのエビクションに好ましい。このようなプリファレンスは、L2キャッシュコントローラ132によって、例えばL2キャッシュ130に常駐する最長未使用キャッシュライン等の他の要因の中で考慮されてもよい。例えば、L2キャッシュコントローラ132は、各キャッシュラインにエイジ値(age value)を割り当て、例えば、キャッシュラインがL3キャッシュ140の無効キャッシュラインに関連するか否か、キャッシュラインがメモリアクセス動作のターゲットであるか否か等を含む複数の基準に基づいて、エイジ値を調整することができる。したがって、所定のキャッシュラインのエイジ値は、そのキャッシュラインについて、全ての異なる置換ポリシー基準の組み合わせを反映する。エビクションのためにキャッシュラインのセットを選択する場合、L2キャッシュコントローラ132は、セット内のキャッシュラインのエイジ値の比較に基づいて、キャッシュラインを選択することができる。
【0019】
キャッシュラインがL2キャッシュ130からL3キャッシュ140にエビクトされると、L2キャッシュコントローラ132は、入力要求されたキャッシュラインをL3キャッシュ140からL2キャッシュ130にコピーする。L2キャッシュコントローラ132は、要求されたキャッシュラインをL2キャッシュ130にコピーすると、要求されたキャッシュラインをL1キャッシュ120にコピーする。次に、L1キャッシュコントローラ122は、要求されたキャッシュラインをプロセッサコア110に提供する。
【0020】
処理システム100の異なるキャッシュコントローラは、各々のキャッシュにおいて異なる置換スキームを実施可能であることが理解されるであろう。例えば、L2キャッシュコントローラ132は、上述したように、L3キャッシュ140のエントリの有効ステータスに少なくとも部分的に基づいて、L2キャッシュ130における置換のためのエントリを選択することができる。対照的に、L1キャッシュコントローラ122は、L2キャッシュ130におけるエントリの有効ステータス、又は、L3キャッシュ140におけるエントリの有効ステータスに関係なく、L1キャッシュ120における置換のためのエントリを選択することができる。異なるキャッシュコントローラでこのような異なる置換スキームを実施することにより、処理システム100における全体的なメモリアクセス効率を向上させることができる。
【0021】
図2は、いくつかの実施形態による、エビクトされるL3キャッシュラインの有効ステータスに基づく置換のために選択されるL2キャッシュ130のキャッシュラインの一例を示す図である。図示した例において、L3キャッシュ140は、キャッシュエントリ243に記憶されたキャッシュライン235を要求するメモリアクセス要求221を受信する。L3キャッシュ140は、メモリアクセス要求221に応じて、キャッシュライン235をL2キャッシュ130に提供し、L2キャッシュ130は、キャッシュライン235をエントリ231に記憶する。また、L3キャッシュ240は、メモリアクセス要求221に応じて、キャッシュエントリ243の有効ビット244を、キャッシュエントリ243に記憶されたデータが無効であり置換対象であることを示す無効状態に設定する。
【0022】
L2キャッシュコントローラ132は、メモリアクセス要求221及び有効ビット244が無効状態に設定された後に、エビクション222を識別する。すなわち、L2キャッシュコントローラ132は、エントリのうち1つのエントリからデータをエビクトして、L3キャッシュ140、L1キャッシュ120等の他のキャッシュから受信したデータを収容する必要があることを決定する。L2キャッシュコントローラ132は、エビクション222を識別したことに応じて、識別されたエントリが無効状態にあるL3キャッシュ140のエントリに記憶されるか否かに少なくとも部分的に基づいて、置換のためのエントリを識別する。示された例において、L2キャッシュ130は、データがエビクトされる場合に、当該データがL3キャッシュ140によってキャッシュエントリ243に記憶されるエントリ133を含む。すなわち、エントリ133のデータに関連するメモリアドレスは、L2キャッシュ130が当該データをL3キャッシュ140に提供する場合に、L3キャッシュ140が当該データをキャッシュセット243に記憶するようになっている。また、上述したように、キャッシュエントリ243の有効ビット244は、メモリアクセス要求221に応じて無効状態に予め設定されている。したがって、L2キャッシュコントローラ132は、キャッシュエントリ243が無効データを記憶するように有効ビット244によって示されているのを識別したことに応じて、置換のためのエントリ133を選択し、エントリ133に記憶されたデータをL3キャッシュ140に提供する。
【0023】
L3キャッシュコントローラ142は、L2キャッシュ130からデータを受信したことに応じて、このデータを記憶するキャッシュエントリ243を選択する。L3キャッシュ140は、キャッシュエントリ243が無効状態であると示されているので、入力データを収容するために有効データをエビクトする必要がない。したがって、データが無効として示されるL3キャッシュ140のエントリに記憶されるか否かに基づいて、当該データをエビクションのために選択することによって、L2キャッシュ130は、L3キャッシュ140におけるエビクションの数を低減させ、処理システム100における全体的なメモリ効率を向上させる。
【0024】
図1に関して上述したように、いくつかの実施形態において、L2キャッシュコントローラ132は、L3無効テーブル134内のL3キャッシュ140のエントリの有効ステータスの追跡を続ける。
図3は、いくつかの実施形態による、L3キャッシュ140のエントリの有効ステータスにおける変更に応じて、L3無効テーブル134を更新するL2キャッシュコントローラ132の一例を示す図である。示された例において、L3キャッシュ140は、L3キャッシュ140がキャッシュライン335をL2キャッシュ130へ転送する要求を表すメモリアクセス要求321を受信する。これに応じて、L3キャッシュコントローラ142は、キャッシュライン335がエントリ343に記憶されているのを識別し、エントリ343に記憶されているデータをL2キャッシュ130に転送し、L2キャッシュ130は、このデータをエントリ331に記憶する。また、L3キャッシュコントローラ142は、エントリ343に記憶されているデータが有効ではないことを示すために、エントリ343の有効ビット344を無効状態に設定する。
【0025】
L3キャッシュコントローラ142は、エントリ343の有効ビット344を無効状態に設定したことに応じて、エントリ343が無効であることを示すメッセージ(
図3には示されていない)をL2キャッシュコントローラ132に送信する。これに応じて、L2キャッシュコントローラ132は、L3キャッシュ140のエントリ343に対応するL3無効テーブル134のエントリ333を識別する。L2キャッシュコントローラ132は、エントリ343が無効であることを示すようにエントリ333を更新し、これにより、エントリ343に記憶される可能性が高いデータは、L2キャッシュ130からのエビクションに関して優先的に扱われる。L2キャッシュコントローラ132は、エントリ343に記憶されたデータの有効性に関するその後の変更に応じて、エントリ333を更新し続けることができる。L3キャッシュ140のエントリの有効ステータスをL3無効テーブル134に記憶することにより、L2キャッシュコントローラは、L2キャッシュ130における置換のためのデータを識別する際に、有効ステータスを迅速に組み込むことができる。
【0026】
図4は、いくつかの実施形態による、
図1の無効テーブル134の一例を示す図である。図示した例では、無効テーブル134は、複数のエントリ(例えば、エントリ435)を含み、各エントリは、エントリのタグをL3キャッシュ140に記憶するタグフィールド437を含む。また、無効テーブル134の各エントリは、タグに対応するエントリの有効ステータスを示すステータスフィールド438を含む。少なくとも1つの実施形態において、エントリについてのステータスフィールドは、L3キャッシュ140からL2キャッシュ130へ転送されるタグに対応するキャッシュエントリに応じてタグ値をタグフィールドに記憶する場合に、無効状態に設定される。L2キャッシュコントローラ132は、新たなキャッシュラインがタグ値に対応するL3キャッシュ140のキャッシュラインに記憶されているという指示等の特定のイベントに応じて、ステータスフィールドを有効状態に更新することができる。これにより、L3無効テーブル134は、L3キャッシュ140のキャッシュラインの有効ステータスの最新の記録を維持し、上述したようにL2キャッシュ130のキャッシュラインをエビクションのために選択するようにL2キャッシュコントローラ132によって使用され得る。
【0027】
図5は、エビクションのために選択されたキャッシュラインに関連する第2キャッシュのキャッシュセット内のキャッシュラインの無効状態に基づいて、第1キャッシュから第2キャッシュへのエビクションのためのキャッシュラインを選択する方法500を示すフロー図である。ブロック502において、L3キャッシュコントローラは、データについての要求を受信する。ブロック504において、L3キャッシュコントローラは、要求されたキャッシュラインがL3キャッシュ内で見つかった場合に、要求されたキャッシュラインをL2キャッシュにコピーする。ブロック506において、L3キャッシュコントローラは、L3キャッシュ内のキャッシュラインの保持されたコピーを無効状態に設定する。ブロック508において、L2キャッシュコントローラは、L3キャッシュ内のキャッシュラインの保持されたコピーが無効であることを示すように、L3無効テーブルを更新する。ブロック510において、L2キャッシュコントローラが、L2キャッシュからエビクションのためのキャッシュラインを選択して、入力データのために空きを生成した場合に、L2キャッシュコントローラは、L3キャッシュ内のキャッシュラインの無効状態に部分的に基づいて、L2キャッシュからエビクションのためのキャッシュラインを選択する。方法500は、L3キャッシュとL2キャッシュとの間の例示的な実施形態に関して説明されているが、複数のレベルのキャッシュを含む他のメモリ階層においても適用される。
【0028】
いくつかの実施形態において、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に記憶され又は他の方法により有形に具現化される、実行可能な1つ以上の命令セットを含む。ソフトウェアは、1つ以上のプロセッサによって実行される場合に、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等のソリッドステート記憶デバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶される実行可能な命令は、1つ以上のプロセッサによって解釈され又は他の方法で実行可能なソースコード、アセンブリ言語コード、オブジェクトコード、又は、他の命令フォーマットであってもよい。
【0029】
一般的な説明の中で上述した全てのアクティビティ又は要素が必要であるとは限らず、特定のアクティビティ又はデバイスの一部が必要でなくてもよいこと、又は、記述されたものに加えて、1つ以上のさらなるアクティビティが実行され、1つ以上のさらなる要素が含まれ得ることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができることを理解されたい。したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味で考えられるべきであり、このような変形の全ては、本発明の範囲内に含まれることが意図される。
【0030】
開示された発明は、本明細書の教示の恩恵を受ける当業者には明らかであるが、異なるが同等の方法で変更され実施され得るように、上述した特定の実施形態は単なる例示に過ぎない。以下の特許請求の範囲に記載されているもの以外の本明細書に示された構成又は設計の詳細に制限はない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、このような変形が開示された発明の範囲内にあると考えられることが明らかである。したがって、本明細書で求められる保護は、下記の特許請求の範囲に記載されている。