JP2019521410A - 別のキャッシュレベルからのヒントに基づくキャッシュエントリエイジの設定 - Google Patents
別のキャッシュレベルからのヒントに基づくキャッシュエントリエイジの設定 Download PDFInfo
- Publication number
- JP2019521410A JP2019521410A JP2018555912A JP2018555912A JP2019521410A JP 2019521410 A JP2019521410 A JP 2019521410A JP 2018555912 A JP2018555912 A JP 2018555912A JP 2018555912 A JP2018555912 A JP 2018555912A JP 2019521410 A JP2019521410 A JP 2019521410A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data
- entry
- processor
- characteristic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000004044 response Effects 0.000 claims description 19
- 238000000034 method Methods 0.000 claims description 18
- 238000013479 data entry Methods 0.000 abstract description 2
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
プロセッサ(100)は、第2キャッシュ(104)からのヒント(118)に基づいて、第1キャッシュ(106)のデータを置き換える。ヒントは、第1キャッシュが直接利用できないデータに関する情報を示す。エントリのデータが第1キャッシュから第2キャッシュに転送される場合、第1キャッシュは、名目上の初期エイジ値と比較して高い又は低い初期エイジ値をデータに割り当てるべきであることを示すエイジヒントを、第2キャッシュに提供することができる。第2キャッシュは、エイジヒントに基づいて、初期エイジ値をデータのエントリに割り当て、データを置き換える場合に、各エントリのエイジ値に基づいて、置き換えるデータを選択する。【選択図】図1
Description
本発明は、概して、処理システムに関し、特に、処理システムにおけるキャッシュ管理に関する。
オペレーションの実行を容易にするために、プロセッサは、命令を実行するための1つ以上のプロセッサコアと、命令を実行することによってアクセスされるデータの記憶を管理するメモリサブシステムと、を使用することができる。メモリアクセス効率を向上させるために、メモリサブシステムを、命令を実行することによってアクセス可能な全てのデータを記憶するメインメモリであって、メモリ階層の最上位レベルにあるメインメモリと、メモリ階層の下位レベルの1つ以上のキャッシュであって、メインメモリに記憶されたデータのサブセットを記憶する1つ以上のキャッシュと、を有するメモリ階層として構成することができる。メモリ階層の各レベルでキャッシュされるデータのサブセットの基準は、プロセッサ設計に応じて変化することがあるが、通常、少なくとも1つのプロセッサコアによって最近アクセスされたデータと、近い将来にプロセッサコアによってアクセスされると予測されるプリフェッチされたデータと、を含む。新たなデータを1つ以上のキャッシュに移動させるために、プロセッサは、通常、指定された置換スキームに基づいて、事前に記憶されたデータをエビクションのために選択する必要がある。例えば、いくつかのプロセッサは、プロセッサコアによって最もアクセスされていないデータを記憶するキャッシュエントリをエビクトするLRU(least-recently-used)置換スキームを使用する。しかしながら、多くのシナリオでは、LRU置換スキームは、プロセッサコアで実行される命令のメモリアクセスパターンと一致せず、不必要に低いメモリアクセス効率をもたらす。
本開示は、添付図面を参照することによってより良好に理解することができ、その多くの特徴及び利点が当業者には明らかであろう。異なる図面において同じ参照符号を使用することは、類似又は同一のアイテムを示している。
図1〜図4は、異なるキャッシュからのヒントに基づいて、1つのキャッシュでデータを置き換える技術を示しており、ヒントは、キャッシュに対して直接利用できないデータに関する情報を示す。例示するために、メモリ階層の上位レベルにあるキャッシュは、下位レベルのキャッシュが直接利用できないキャッシュエントリに関する情報にアクセスすることができる。キャッシュエントリのデータが上位レベルのキャッシュから下位レベルのキャッシュに転送される場合、上位レベルのキャッシュは、上位レベルキャッシュに利用可能な情報に基づいて、名目上の初期のエイジと比較して高い又は低い初期のエイジをデータに割り当てる必要があることを示すために、エイジヒントを下位レベルのキャッシュに提供することができる。下位レベルのキャッシュは、エイジヒントに基づいて、初期のエイジをデータのエントリに割り当て、データを置き換える場合に、各エントリのエイジに基づいて、置換するデータを選択する。上位レベルのキャッシュからのエイジヒントによって、下位レベルのキャッシュは、上位レベルのキャッシュに利用可能な情報を下位レベルのキャッシュの置換ポリシーに組み込むことができ、これにより、メモリアクセス効率が向上する。
一例を説明するために、プロセッサは、プロセッサの複数のプロセッサコアに対してアクセス可能なレベル3(L3)キャッシュと、複数のプロセッサコアのうち1つのみに対してアクセス可能なレベル2(L2)キャッシュと、を含んでもよい。L3キャッシュは、複数のプロセッサコアによって共有されるので、エントリのデータが異なるプロセッサコア間で共有されているかどうかを示すステータス情報にアクセスすることができる。この共有されるステータス情報は、1つのプロセッサコアのみが使用するため、L2キャッシュ104には利用できない。しかしながら、データの共有ステータスは、L2キャッシュでのデータの置換がメモリアクセス効率にどのように作用するかに影響を及ぼすことがある。例えば、いくつかのメモリアクセスパターンでは、複数のプロセッサコア間で共有されていないデータよりも、複数のプロセッサコア間で共有されるデータをエビクションのために選択するのがより効率的である場合がある。したがって、転送されているデータの共有ステータスの少なくとも一部に基づくエイジヒントを、L2キャッシュに提供することによって、L3キャッシュは、置換ポリシーにおいて、L2キャッシュによって考慮される情報を効果的に拡張することができ、メモリアクセス効率を向上させる。
図1は、いくつかの実施形態による、異なるキャッシュにおいて置換ポリシーを実施するために1つのキャッシュからのヒントを使用するプロセッサ100のブロック図である。プロセッサ100は、概して、電子デバイスに代わってタスクを実行するために、命令のセットを実行するように構成されている。したがって、プロセッサ100は、デスクトップ又はラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲームコンソール等の様々な電子デバイスの何れかで使用することができる。
命令の実行を容易にするために、プロセッサ100は、複数のプロセッサコア(プロセッサコア102,110を含む)を含む。プロセッサコアの各々は、例えば、命令をフェッチするフェッチステージと、フェッチされた命令の各々を1つ以上のオペレーションにデコードするデコードステージと、オペレーションを実行する実行ステージと、オペレーションが実行を完了した命令をリタイアさせるリタイアステージと、を有する命令パイプラインを含む。プロセッサコアにおける命令の実行をサポートするために、プロセッサ100は、複数のキャッシュを含むメモリ階層を含み、各キャッシュは、少なくとも1つのプロセッサコアのためにデータを記憶する1つ以上のメモリモジュールを含む。例えば、図1に示す実施形態では、プロセッサ100のメモリ階層は、レベル1(L1)キャッシュ103,111と、L2キャッシュ104,112と、L3キャッシュ106と、を含む。いくつかの実施形態では、メモリ階層は、「メインメモリ」と総称されるメモリデバイスのセット(図示省略)であって、プロセッサ100の1つのプロセッサコアで実行された命令によってアクセス可能な全てのデータを記憶するように構成されたメモリデバイスのセット(図示省略)を含んでもよい。メインメモリは、プロセッサ100の外部(例えば、別個の集積回路パッケージ内)に配置されてもよいし、プロセッサ100のプロセッサコアと同じダイ上に配置されてもよいし、積層されたダイ配列等の共通の集積回路パッケージに組み込まれた異なるダイ上に配置されてもよいし、これらの組み合わせであってもよい。
プロセッサ100のメモリ階層は、本明細書で更に説明するように、メインメモリが階層の最上位レベルにあり、各キャッシュが階層の指定された下位レベルに位置し、階層の下位レベルに位置するほど対応するプロセッサコアに「より近い」と呼ばれるように、階層的に構成されている。したがって、プロセッサコア102に関して、メインメモリがメモリ階層の最上位レベルにあり、L3キャッシュ106が次の下位レベルにあり、L2キャッシュ104がL3キャッシュ106に対して次の下位レベルにあり、L1キャッシュ103がメモリ階層の最下位レベル(したがって、プロセッサコア102の最も近く)にある。同様に、プロセッサコア110に関して、メインメモリがメモリ階層の最上位レベルにあり、L3キャッシュ106が次の下位レベルにあり、L2キャッシュ112がL3キャッシュ106に対して次の下位レベルにあり、L1キャッシュ111がメモリ階層の最下位レベル(したがって、プロセッサコア110の最も近く)にある。
また、プロセッサ100の各キャッシュは、専用のプロセッサコアに代わってデータを記憶する専用キャッシュ、又は、複数のプロセッサコアに代わってデータを記憶する共有キャッシュの何れかとして構成される。したがって、図1の例では、L1キャッシュ103及びL2キャッシュ104は、プロセッサコア102用の専用キャッシュであるため、プロセッサコア102のみがL1キャッシュ103及びL2キャッシュ104にアクセスすることができる。同様に、L1キャッシュ111及びL2キャッシュ112は、プロセッサコア110用の専用キャッシュである。L3キャッシュ106は、プロセッサコア102及びプロセッサコア110の両方によってアクセス可能な共有キャッシュとして構成されている。いくつかの実施形態では、プロセッサコア110は、L1キャッシュ103、L2キャッシュ104及びプロセッサコア102への各々の接続と同様に、自身の専用L1キャッシュ(図示省略)及びL2キャッシュ(図示省略)に接続されている。
プロセッサコアは、メモリ階層と相互作用するために、実行命令に基づいてメモリアクセスオペレーションを生成する。メモリアクセスオペレーションの例には、データをメモリ位置に書き込むための書き込みオペレーションと、データをメモリ位置からプロセッサコアに転送するための読み出しオペレーションとを含む。各メモリアクセスオペレーションは、要求によってターゲットとされるメモリ位置を示すメモリアドレスを含む。メモリ階層の異なるレベルは、各メモリアクセス要求を満たすように相互作用する。例示すると、プロセッサコア102からのメモリアクセス要求に応じて、L1キャッシュ103は、L1キャッシュ103が、メモリアクセス要求によってターゲットとされるメモリアドレスに関連するデータを記憶するエントリを有するかどうかを識別する。有する場合にはキャッシュヒットが発生し、L1キャッシュ103は、データをエントリに書き込み(書き込みオペレーションの場合)、又は、データをエントリからプロセッサコア102に提供する(読み出しオペレーションの場合)ことによって、メモリアクセスを満たす。
L1キャッシュ103が、メモリアクセス要求によってターゲットとされるメモリアドレスに関連するデータを記憶するエントリを有していない場合、キャッシュミスが発生する。L1キャッシュ103でのキャッシュミスに応じて、メモリアクセス要求は、メモリアクセス要求が上位レベルのキャッシュでキャッシュヒットになるまで(すなわち、メモリアクセス要求によってターゲットとされるデータが上位レベルのキャッシュに位置する)、又は、メモリアクセス要求がメインメモリに到達するまで、メモリ階層をトラバースする。メモリアクセス要求がより上位レベルのキャッシュでヒットを生じることに応じて、メモリ階層は、L1キャッシュ103を含むメモリ階層の各下位レベルのキャッシュにデータを転送し、その後、上述したようにL1キャッシュ103においてメモリアクセス要求を満たす。よって、例えば、メモリアクセス要求がL3キャッシュ106でヒットした場合、メモリ階層は、ターゲットとされるエントリを、L3キャッシュ106からL2キャッシュ104のエントリにコピーし、更に、L1キャッシュ103のエントリにコピーして、メモリアクセス要求が満たされる。同様に、メモリアクセス要求がメインメモリに到達することに応じて、メモリ階層は、データを、メモリアクセス要求によってターゲットとされるメモリ位置からL3キャッシュ106、L2キャッシュ104及びL1キャッシュ103の各々にコピーする。
上述したように、データは、メモリ階層の1つのレベルから別のレベルに移動されることがある。しかしながら、メモリ階層のキャッシュレベルに関して、各キャッシュは、メモリアクセス要求のターゲットとなるメモリ位置の数に対して、データを記憶するスペースが限られている。例えば、いくつかの実施形態では、各キャッシュは、セットアソシエイティブキャッシュであり、キャッシュのエントリがセットに分割され、各セットは、メモリアクセス要求のターゲットとすることができるメモリアドレスの異なるサブセットに割り当てられる。別のキャッシュ又はメインメモリからデータを受信したことに応じて、キャッシュは、データに対応するメモリアドレスを識別し、更に、メモリアドレスに割り当てられたセットにデータを記憶するために利用可能なエントリを当該キャッシュが有するかどうかを識別する。有する場合、キャッシュは、利用可能なエントリにデータを記憶する。有していない場合、キャッシュは、置換するエントリを選択し、選択されたエントリをメモリ階層の次の上位レベルに提供することによって当該エントリをエビクトし、選択されたエントリにデータを記憶する。
各キャッシュは、置換するエントリを選択するために、選択基準を管理する置換ポリシーを実施する。いくつかの実施形態では、L2キャッシュ104の置換ポリシーは、エントリ毎のエイジ値(age value)に基づいている。特に、L2キャッシュ104は、L2キャッシュ104がデータをエントリに記憶する場合に、エイジ値を各エントリに割り当てる。更に、L2キャッシュ104は、例えばエントリに記憶されたデータにアクセスする等の特定の基準に応じて、エントリ毎にエイジ値を調整する。例えば、L2キャッシュ104のエントリがメモリアクセス要求によってアクセスされたことに応じて、当該エントリのエイジ値を減少させ、他の全てのエントリのエイジ値を増加させることができる。L2キャッシュ104は、置換のためのセットのエントリを選択するために、セット内のエントリのエイジ値を比較し、最も高いエイジ値を有するエントリを選択する。
いくつかの実施形態では、L2キャッシュ104は、L2キャッシュ104が利用可能な様々な情報(例えば、エントリに記憶されたデータが命令データ(例えば、プロセッサコアで実行される命令)であるかオペランドデータ(例えば、命令を実行するためのオペランドとして使用されるデータ)であるかどうか、エントリのデータがL1キャッシュ103に記憶されることによって、近い将来要求される可能性があるかどうか、キャッシュセット内のキャッシュの他のエントリの有効性、エントリのデータが、プリフェッチ要求に応じてL2キャッシュ104に記憶されたかどうか等)に基づいて、エントリの初期のエイジ値を設定する。また、L3キャッシュ106は、データ(例えば、データ115)をL2キャッシュ104に提供する場合に、利用可能でないデータに関する情報を示すエイジヒント(例えば、エイジヒント118)をL2キャッシュ104に提供することができる。例えば、いくつかの実施形態では、L3キャッシュ106は、共有される(すなわち、プロセッサコア110及びプロセッサコア102の両方によってアクセスすることができる)いくつかのデータを記憶することができ、共有されていない(したがって、プロセッサコア102のみがアクセスすることができる)他のデータを記憶することができる。L3キャッシュ106は、データをL2キャッシュ104に提供する場合に、データが共有データであるか非共有データであるかをエイジヒント118によって示すことができる。別の例として、いくつかの実施形態では、プロセッサコア110で実行される命令は、L3キャッシュのデータが「一時的な」データであることを示すことができ、これにより、当該データがプロセッサコア102,110の何れかによって繰り返しアクセスされる予測のレベルを示す。例えば、データが一時的なデータであるという指標は、データがL2キャッシュ104において繰り返しアクセスされると予測されないことを示すことができ、したがって、比較的高い初期エイジ値が与えられるべきである。この情報は、プロセッサコア110における命令によって生成されることから、L2キャッシュ104が当該情報を直接利用することができない。しかしながら、L3キャッシュ106は、エイジヒント118を介して、L2キャッシュ104に提供されるデータが一時的なデータであるかどうかを示すことができる。よって、エイジヒント118は、L2キャッシュ104自身に記憶された情報を介してL2キャッシュ104が直接利用できない情報を、L2キャッシュ104に与える。
L2キャッシュ104は、データ115を受信したことに応じて、データ115をエントリに記憶し、エイジヒント118に少なくとも部分的に基づいてエントリの初期エイジ値を設定する。いくつかの実施形態では、L2キャッシュ104は、エイジヒント118と、L2キャッシュ104が利用可能なL2データ特性との組み合わせに基づいて、エントリの初期エイジ値を設定する。例えば、いくつかの実施形態では、L2キャッシュ104は、L2データ特性及びエイジヒント値の異なる組み合わせを含む複数のエントリと、各組み合わせの初期エイジ値と、を有する初期エイジテーブルを含む。L2キャッシュ104は、データ115を受信したことに応じて、データ115のL2データ特性を識別し、次に、L2データ特性とエイジヒント118との組み合わせに対応するテーブルのエントリをルックアップする。次いで、L2キャッシュ104は、データ115が記憶されているエントリに対して、エントリの初期エイジ値を割り当てる。
図2は、いくつかの実施形態による、図1のL2キャッシュ104のブロック図である。図示された例では、L2キャッシュ104は、キャッシュコントローラ220と、記憶装置アレイ222と、を備える。記憶装置アレイ222は、L2キャッシュ104に代わってデータを記憶するように構成された複数のメモリセルを含む。特に、記憶装置アレイ222は、複数のエントリ(例えば、エントリ230)を含むように構成されており、各エントリは、エントリのデータを記憶するデータフィールド(例えば、エントリ230のデータフィールド231)を含む。また、各エントリは、エントリのエイジ値を記憶するエイジフィールド(例えば、エントリ230のエイジフィールド232)を含む。
キャッシュコントローラ220は、記憶装置アレイ222における置換ポリシーの実施を含む、L2キャッシュ104のオペレーションを制御するように構成されている。したがって、キャッシュコントローラ220は、エントリ毎に初期エイジ値を確立し、初期エイジ値をエントリのエイジフィールドに記憶するように構成されている。また、キャッシュコントローラ220は、特定の基準に基づいて、エントリ毎にエイジ値を調整するように構成されている。例えば、キャッシュコントローラ220は、エントリがL2キャッシュ104でキャッシュヒットを生じさせることに応じて当該エントリのエイジ値を減少させることができ、異なるエントリがキャッシュヒットを生じさせることに応じて当該エントリのエイジ値を増加させることができる。
キャッシュコントローラ220は、エントリの初期エイジ値を確立するために、初期エイジテーブル226を使用する。いくつかの実施形態では、初期エイジテーブル226は、複数のエントリを含み、各エントリは、L2データ特性とエイジヒント値との異なる組み合わせを含む。また、各エントリは、L2データ特性とエイジヒントとの組み合わせに対応する初期エイジ値を含む。キャッシュコントローラ220は、L2キャッシュ104がデータ115を受信したことに応じて、データ115のL2データ特性225を識別する。次に、キャッシュコントローラ220は、L2データ特性とエイジヒント118との組み合わせに対応する初期エイジテーブル226のエントリをルックアップする。次いで、キャッシュコントローラは、識別された初期エイジテーブルを、データ115が記憶されている記憶装置アレイ222のエントリのエイジフィールドに記憶する。
図3は、L2キャッシュ104が、L3キャッシュ106からのエイジヒントに基づいて、異なる初期エイジ値を異なるエントリに割り当てる一例を示すブロック図である。特に、図3は、L2キャッシュ104の2つの異なるエントリ(それぞれ指定されたエントリ335及びエントリ336)を示している。各エントリのデータは、対応するエイジヒントと、エントリ335の指定された共有データヒント330と、エントリ336の一時的データヒント332と共に、L3キャッシュ106によって提供される。
共有データヒント330は、エントリ335に記憶されたデータが、プロセッサコア102及びプロセッサコア110の両方によってアクセス可能な共有データであることを示す。したがって、L2キャッシュ104は、共有データヒント330を受信したことに応じて、エントリ335のエイジフィールド338に初期エイジ値「10」を記憶する。一時的データヒント332は、エントリ336に記憶されたデータが、繰り返しアクセスされる可能性の低い一時的なデータとしてプロセッサコア102,110の何れかで実行される命令によって示されていることを示す。したがって、L2キャッシュ104は、一時的データヒント332を受信したことに応じて、エントリ336のエイジフィールド339に初期エイジ値「11」を記憶する。よって、図3の例では、L2キャッシュ104は、エントリの異なるエイジヒントを受信したことに応じて、異なるエントリに異なる初期エイジ値を記憶する。
図4は、いくつかの実施形態による、異なるキャッシュから受信したヒントに基づいて、キャッシュが置換ポリシーを実施する方法400のフロー図である。説明を目的として、方法400は、図1のプロセッサ100における例示的な実施に関して説明される。ブロック402において、L2キャッシュ104は、L3キャッシュ106からデータを受信する。L2キャッシュ104は、L2キャッシュ104の置換ポリシーに基づいて、記憶装置アレイ222のエントリを選択し、選択されたエントリのデータフィールドにデータを記憶する。ブロック404において、L2キャッシュ104は、ブロック402で受信したデータのエイジヒントを、L3キャッシュ106から受信する。エイジヒントは、データが共有データであるかどうか、データが一時的なデータとして命令によって示されているかどうか等のように、L2キャッシュ104が直接利用できないデータに関する情報を示している。
ブロック406において、キャッシュコントローラ220は、ブロック404で受信したエイジヒントと、キャッシュコントローラ220によって識別されたデータの他の特性とに基づいて、初期エイジテーブル226において当該データの初期エイジ値をルックアップする。キャッシュコントローラ220は、データが記憶されているエントリのエイジフィールドに初期エイジ値を記憶する。ブロック408において、キャッシュコントローラ220は、記憶装置アレイ222でのエントリへのメモリアクセスに基づいて、初期エイジ値を変更する。例えば、キャッシュコントローラ220は、エントリがメモリアクセスによってターゲットとされたことに応じて、エントリのエイジ値を減少させ、同じセット内の他のエントリのエイジ値を増加させることができる。ブロック410において、キャッシュコントローラ220は、セットに記憶されるデータを受信したことに応じて、及び、データを記憶するセット内で利用可能な空の又は無効なエントリが存在しないことを識別したことに応じて、セット内のエイジ値に基づいて、セット内のエントリをエビクション用に選択する。例えば、キャッシュコントローラ220は、最も高いエイジ値を有するエントリを選択することができ、又は、複数のエントリが同一の最も高いエイジ値を有する場合には、各エントリの中からエントリをランダムに選択することができる。キャッシュコントローラ220は、エントリのデータをL3キャッシュ106に提供することによって、選択されたエントリをエビクトし、受信したデータを当該選択されたエントリに記憶する。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されているか、そうでない場合には、非一時的なコンピュータ可読記憶媒体上で有形に具体化された1つ以上の実行可能な命令セットを含む。ソフトウェアは、1つ以上のプロセッサによって実行された場合に、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)、他の不揮発性メモリデバイス等の磁気又は光ディスク記憶装置、ソリッドステート記憶装置等が挙げられる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能な命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは他の方法で実行可能な他の命令フォーマットであってもよい。
概説において上記で説明した動作又は要素の全てが必要であるとは限らず、特定の動作又はデバイスの一部が必要でなくてもよく、1つ以上の更なる動作が実行されてもよく、説明した要素に加えて更なる要素が含まれてもよいことに留意されたい。更に、動作が列挙される順序は、必ずしもそれらが実行される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変更を行うことができることを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、そのような変更の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段が特定の実施形態に関して上述されている。しかしながら、利益、利点、問題に対する解決手段、及び、何等かの利益、利点、解決手段が発生するか、顕著になる可能性のある機能は、何れか又は全ての特許請求の範囲の重要な特徴、必須の特徴、本質的な特徴として解釈されるべきでない。更に、開示された発明は、本明細書における教示の利益を有する当業者には明らかであるが、異なるが同等の方法で変更され、実施され得るので、上記の開示された特定の実施形態は、例示に過ぎない。以下の特許請求の範囲に記載されているもの以外に、本明細書に示された構成又は設計の詳細に制限はない。したがって、上記の開示された特定の実施形態は、変更又は修正されてもよく、全てのそのような変形は、開示された発明の範囲内にあると考えられることが明らかである。したがって、本願で求められる保護は、以下の特許請求の範囲に記載されている。
Claims (20)
- プロセッサ(100)の第1キャッシュ(106)において、前記プロセッサの第2キャッシュ(104)から第1ヒント(118)を受信することであって、前記第1ヒントは、前記第2キャッシュに記憶された第1データの第1特性を示し、前記第1特性は、前記第1キャッシュが利用可能でないことを示し、前記第1キャッシュ及び前記第2キャッシュは、前記プロセッサのメモリ階層の異なるレベルを含む、ことと、
前記第1データを前記第1キャッシュの第1エントリ(231)に記憶することと、
前記第1ヒントに基づいて、前記第1エントリの第1エイジ値(232)を設定することと、
前記第1エイジ値と、前記第1キャッシュの前記第1エントリ以外のエントリのエイジ値と、の比較に基づいて、前記第1エントリを置き換えることと、を含む、
方法。 - 前記第1特性は、前記第1データに関連する一時的指標(332)を含み、前記一時的指標は、前記第1データが前記第1キャッシュにおいてアクセスされる予測レベルを示す、
請求項1の方法。 - 前記プロセッサにおいて実行される命令に基づいて、前記第2キャッシュにおいて前記一時的指標を識別することを更に含む、
請求項2の方法。 - 前記第1特性は、前記第1データが前記プロセッサの複数のプロセッサコア間で共有されるかどうかを示す共有特性(330)を含む、
請求項1の方法。 - 前記第1ヒントと前記第1データの第2特性(225)とに基づいて、前記第1エイジ値を識別することであって、前記第2特性は前記第1キャッシュにおいて識別される、ことを更に含む、
請求項1の方法。 - 前記プロセッサの第1キャッシュにおいて、前記プロセッサの第2キャッシュから第2ヒントを受信することであって、前記第2ヒントは、前記第2キャッシュに記憶された第2データの第2特性を示し、前記第2特性は、前記第1キャッシュにおいて識別可能でないことを示す、ことと、
前記第2データを前記第1キャッシュの第2エントリに記憶することと、
前記第2ヒントに基づいて、前記第2エントリの第2エイジ値を設定することと、
前記第2エイジ値と、前記第1キャッシュの前記第2エントリ以外のエントリのエイジ値と、の比較に基づいて、前記第2エントリを置き換えることと、を更に含む、
請求項1の方法。 - 前記第2特性は、前記第1特性と異なる特性である、
請求項6の方法。 - 前記第2特性は、前記第1特性と同じ特性であり、前記第2エイジ値は、前記第1エイジ値とは異なっている、
請求項6の方法。 - プロセッサ(100)の第1キャッシュ(104)において、前記第1キャッシュに記憶されたデータ(115)の第1特性(225)を識別することと、
前記プロセッサの第2キャッシュ(106)から前記データに対する要求を受信したことに応じて、前記データを前記第1キャッシュから前記第2キャッシュに提供することと、前記データの前記識別された第1特性に関するヒント(118)を前記第2キャッシュに提供することと、前記ヒントに基づいて、前記第2キャッシュにおける前記データのエイジ値(232)を設定することと、
前記エイジ値と、前記第2キャッシュの前記データを記憶するエントリ以外のエントリのエイジ値と、の比較に基づいて、前記第2キャッシュにおける前記データを置き換えることと、を含む、
方法。 - 前記エイジ値を設定することは、
前記ヒントと、前記第2キャッシュにおいて識別された前記データの第2特性と、に基づいて、前記第2キャッシュにおける前記データの前記エイジ値を設定することを含む、
請求項9の方法。 - 前記第1特性は、前記第1データに関連する一時的指標(332)を含み、前記一時的指標は、前記第1データが前記第1キャッシュにおいてアクセスされる予測レベルを示す、
請求項9の方法。 - 前記第1特性は、前記第1データが前記プロセッサの複数のプロセッサコア間で共有されるかどうかを示す共有特性(330)を含む、
請求項9の方法。 - プロセッサ(100)であって、
第1データ(115)を記憶する第1キャッシュ(104)であって、前記第1データの第1特性を識別する第1キャッシュ(104)と、
前記第1データを前記第1キャッシュから受信及び記憶するための第1エントリ(231)を含む第2キャッシュ(106)であって、前記第1キャッシュ及び前記第2キャッシュは、前記プロセッサのメモリ階層の異なるレベルを含む、第2キャッシュ(106)と、を備え、
前記第2キャッシュは、
前記第1特性を示す第1ヒント(118)を前記第1キャッシュから受信することであって、前記第1特性は、前記第1キャッシュが識別可能でないことを示す、ことと、
前記第1ヒントに基づいて、前記第1エントリの第1エイジ値(232)を設定することと、
前記第1エイジ値と、前記第1キャッシュの前記第1エントリ以外のエントリのエイジ値と、の比較に基づいて、前記第1エントリを置き換えることと、
を行うように構成されている、
プロセッサ。 - 前記第1特性は、前記第1データに関連する一時的指標(332)を含み、前記一時的指標は、前記第1データが前記第2キャッシュにおいてアクセスされる予測レベルを示す、
請求項13のプロセッサ。 - 前記第1キャッシュは、前記プロセッサにおいて実行される命令によって提供された第2ヒントに基づいて、前記一時的指標を識別するように構成されている、
請求項14のプロセッサ。 - 前記第1特性は、前記第1データが前記プロセッサの複数のプロセッサコア間で共有されるかどうかを示す共有特性(332)を含む、
請求項13のプロセッサ。 - 前記第2キャッシュは、前記第1ヒントと前記第1データの第2特性(225)とに基づいて、前記第1エイジ値を特定することであって、前記第2特性は、前記第2キャッシュにおいて識別される、ことを行うように構成されている、
請求項13のプロセッサ。 - 前記第1キャッシュは、第2データを記憶することと、前記第2データの第2特性を識別することと、を行うように構成されており、
前記第2キャッシュは、前記第2データを前記第1キャッシュから受信及び記憶するための第2エントリを含み、
前記第2キャッシュは、
前記第2データの第2特性を示す第2ヒントを前記第1キャッシュから受信することであって、前記第2特性は、前記第1キャッシュにおいて識別可能でないことを示す、ことと、
前記第2ヒントに基づいて、前記第2エントリの第2エイジ値を設定することと、
前記第2エイジ値と、前記第1キャッシュの前記第2エントリ以外のエントリのエイジ値と、の比較に基づいて、前記第2エントリを置き換えることと、
を行うように構成されている、
請求項13のプロセッサ。 - 前記第2特性は、前記第1特性と異なる特性である、
請求項18のプロセッサ。 - 前記第2特性は、前記第1特性と同じ特性であり、前記第2エイジ値は、前記第1エイジ値とは異なっている、
請求項18のプロセッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/180,828 US20170357585A1 (en) | 2016-06-13 | 2016-06-13 | Setting cache entry age based on hints from another cache level |
US15/180,828 | 2016-06-13 | ||
PCT/US2016/051816 WO2017218023A1 (en) | 2016-06-13 | 2016-09-15 | Setting cache entry age based on hints from another cache level |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019521410A true JP2019521410A (ja) | 2019-07-25 |
Family
ID=60573842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018555912A Pending JP2019521410A (ja) | 2016-06-13 | 2016-09-15 | 別のキャッシュレベルからのヒントに基づくキャッシュエントリエイジの設定 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20170357585A1 (ja) |
EP (1) | EP3433744A1 (ja) |
JP (1) | JP2019521410A (ja) |
KR (1) | KR20190008245A (ja) |
WO (1) | WO2017218023A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10289565B2 (en) * | 2017-05-31 | 2019-05-14 | Apple Inc. | Cache drop feature to increase memory bandwidth and save power |
US20210182213A1 (en) * | 2019-12-16 | 2021-06-17 | Advanced Micro Devices, Inc. | Cache line re-reference interval prediction using physical page address |
US20240202121A1 (en) * | 2022-12-20 | 2024-06-20 | Advanced Micro Devices, Inc. | Programmable Data Storage Memory Hierarchy |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732242A (en) * | 1995-03-24 | 1998-03-24 | Silicon Graphics, Inc. | Consistently specifying way destinations through prefetching hints |
US5829038A (en) * | 1996-06-20 | 1998-10-27 | Intel Corporation | Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure |
US6378048B1 (en) * | 1998-11-12 | 2002-04-23 | Intel Corporation | “SLIME” cache coherency system for agents with multi-layer caches |
US20090106496A1 (en) * | 2007-10-19 | 2009-04-23 | Patrick Knebel | Updating cache bits using hint transaction signals |
US9195606B2 (en) * | 2013-03-15 | 2015-11-24 | Intel Corporation | Dead block predictors for cooperative execution in the last level cache |
-
2016
- 2016-06-13 US US15/180,828 patent/US20170357585A1/en not_active Abandoned
- 2016-09-15 KR KR1020187033317A patent/KR20190008245A/ko unknown
- 2016-09-15 EP EP16905672.8A patent/EP3433744A1/en not_active Withdrawn
- 2016-09-15 WO PCT/US2016/051816 patent/WO2017218023A1/en active Application Filing
- 2016-09-15 JP JP2018555912A patent/JP2019521410A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20170357585A1 (en) | 2017-12-14 |
KR20190008245A (ko) | 2019-01-23 |
WO2017218023A1 (en) | 2017-12-21 |
EP3433744A1 (en) | 2019-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6840169B2 (ja) | キャッシュテスト領域に基づくプリフェッチのためのキャッシュエージングポリシーの選択 | |
US20140181402A1 (en) | Selective cache memory write-back and replacement policies | |
JP7232175B2 (ja) | キャッシュメモリのデータ置換方法及びプロセッサ | |
US20180300258A1 (en) | Access rank aware cache replacement policy | |
JP4829191B2 (ja) | キャッシュシステム | |
JP6630449B2 (ja) | 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換 | |
US20140075125A1 (en) | System cache with cache hint control | |
US8364904B2 (en) | Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer | |
US20110320720A1 (en) | Cache Line Replacement In A Symmetric Multiprocessing Computer | |
US11604733B1 (en) | Limiting allocation of ways in a cache based on cache maximum associativity value | |
US20180113815A1 (en) | Cache entry replacement based on penalty of memory access | |
US20210173789A1 (en) | System and method for storing cache location information for cache entry transfer | |
JP2019521410A (ja) | 別のキャッシュレベルからのヒントに基づくキャッシュエントリエイジの設定 | |
JP7264806B2 (ja) | キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 | |
JP2021506028A (ja) | 共通のメモリページからメモリへのキャッシュラインのリンス | |
US11334488B2 (en) | Cache management circuits for predictive adjustment of cache control policies based on persistent, history-based cache control information | |
US11586539B2 (en) | Adaptive cache management based on programming model information | |
US20190121747A1 (en) | Cache replacement policy based on non-cache buffers | |
JP4713077B2 (ja) | 半導体装置 |