JP2024533656A - 1つのキャッシュにおける別のキャッシュの挿入ポリシーのための要求クラス及び再使用記録の使用 - Google Patents
1つのキャッシュにおける別のキャッシュの挿入ポリシーのための要求クラス及び再使用記録の使用 Download PDFInfo
- Publication number
- JP2024533656A JP2024533656A JP2024518288A JP2024518288A JP2024533656A JP 2024533656 A JP2024533656 A JP 2024533656A JP 2024518288 A JP2024518288 A JP 2024518288A JP 2024518288 A JP2024518288 A JP 2024518288A JP 2024533656 A JP2024533656 A JP 2024533656A
- Authority
- JP
- Japan
- Prior art keywords
- insertion policy
- policy
- candidate
- data block
- group
- 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
- 238000003780 insertion Methods 0.000 title claims abstract description 147
- 230000037431 insertion Effects 0.000 title claims abstract description 147
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000015654 memory Effects 0.000 claims description 92
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 238000013519 translation Methods 0.000 description 8
- 238000002347 injection Methods 0.000 description 7
- 239000007924 injection Substances 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002093 peripheral 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
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
下位レベルキャッシュの挿入ポリシーを維持するためのシステム及び方法が開示される。上位レベルキャッシュから受信された、追い出されたデータブロックのメタデータに基づいて、挿入ポリシーの中から挿入ポリシーを選択するための技術が説明される。次いで、選択された挿入ポリシーに基づいて、データブロックを下位レベルキャッシュに挿入するかどうかを決定する。挿入すると決定された場合に、データブロックが、選択された挿入ポリシーに従って、下位レベルキャッシュに挿入される。また、下位レベルキャッシュの挿入ポリシーを動的に更新するための技術も開示される。【選択図】図4
Description
(関連出願の相互参照)
本願は、2021年9月28日に出願された米国特許出願第17/488,206号の利益を主張し、その内容は、参照によって、本明細書に十分に記載されているように組み込まれる。
本願は、2021年9月28日に出願された米国特許出願第17/488,206号の利益を主張し、その内容は、参照によって、本明細書に十分に記載されているように組み込まれる。
今日のマルチコアプロセッサでは、プロセッサは、キャッシュの階層の利益を享受する。例えば、プロセッサコアは、その使用に専用である第1のレベルのキャッシュへのアクセスを有し得る。第1のレベルのキャッシュは、典型的には、小さく、それがサービスするプロセッサコアに対してローカルであり、したがって、効率的にアクセスされ得る。加えて、プロセッサコアは、マルチコアプロセッサコンピュータ内の他のプロセッサコアによっても使用される、第2のレベルのキャッシュ、及び、場合によっては第3のレベルのキャッシュへのアクセスを有し得る。第2のレベル及び第3のレベルのキャッシュは、典型的には、より大きいキャッシュであるが、プロセッサコアに対して遠隔であるため、アクセスする効率が低い。マルチレベルキャッシュアーキテクチャでは、上位レベルキャッシュから追い出される(エビクトされる)データブロック(すなわち、ライン)は、キャッシュ階層内の下位レベルキャッシュへの挿入のために考慮される。したがって、追い出されたデータブロックを記憶するキャッシュ、すなわち、ビクティムフィルキャッシュ(victim-filled caches)は、挿入ポリシーを有し、これに従って、追い出されたデータブロックを挿入するか、又は、階層の下の次のレベルのキャッシュに別様に送信するかを決定する。ビクティムフィルキャッシュの挿入ポリシーを最適化するための技術が必要とされる。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
本開示は、下位レベルキャッシュの挿入ポリシーを維持する方法を説明する。方法は、上位レベルキャッシュから、データブロック及び関連付けられたメタデータを受信することを含み、メタデータが、再使用ビット及び要求クラスを含む。次いで、再使用ビット及び要求クラスに基づいて、挿入ポリシーのうち何れかの挿入ポリシーを選択し、選択された挿入ポリシーに基づいて、データブロックを下位レベルキャッシュに挿入するかどうかを決定する。挿入すると決定された場合、選択された挿入ポリシーに従って、データブロックを下位レベルキャッシュに挿入する。更に、挿入時に、方法は、メタデータに基づいて、選択された挿入ポリシーを更新し得る。選択された挿入ポリシーが、再参照区間予測(Re-Reference Interval Prediction、RRIP)置き換えポリシーを適用し、RRIP値を挿入されたデータブロックに割り当てる。また、選択された挿入ポリシーは、最低使用頻度(Least Recently Used、LRU)置き換えポリシーを適用し、挿入されたデータブロックに最近値(recency value)を割り当てる。
代替例では、下位レベルキャッシュは、セットアソシアティブキャッシュである。その場合、方法は、再使用ビット及び要求クラスに基づいて、挿入ポリシーの第1の挿入ポリシー候補及び第2の挿入ポリシー候補を選択することを更に含む。次いで、第1の挿入ポリシー候補に基づいて、データブロックを下位レベルキャッシュ内のセットの第1のグループに挿入するかどうかを決定し、挿入すると決定された場合、第1の挿入ポリシー候補に従ってデータブロックを第1のグループに挿入する。次いで、第2の挿入ポリシー候補に基づいて、データブロックを下位レベルキャッシュ内のセットの第2のグループに挿入するかどうかを更に決定し、挿入すると決定された場合、第2の挿入ポリシー候補に従ってデータブロックを第2のグループに挿入する。第1又は第2の候補ポリシーのうち何れかに基づいて、方法は、選択された挿入ポリシーを更新する。例えば、選択された挿入の更新は、性能測定基準に基づいて、第1のグループ及び第2のグループの性能を追跡することと、第1のグループ及び第2のグループの性能に基づいて、新しい挿入ポリシーを選択することと、新しい挿入ポリシーに基づいて、選択された挿入ポリシーを更新することと、を含み得る。別の例では、選択された挿入の更新は、第1のグループ及び第2のグループにおいて発生したキャッシュミスの数を追跡することと、最少数のキャッシュミスが第1のグループで発生した場合、第1の挿入ポリシー候補に基づいて、選択された挿入ポリシーを更新することと、を含み得る。
本開示は、少なくとも1つのプロセッサ及びメモリを備えるシステムを更に開示する。メモリは、命令を記憶し、命令は、少なくとも1つのプロセッサによって実行されると、システムに、上位レベルキャッシュから、データブロック及び関連付けられたメタデータを受信することであって、メタデータが、再使用ビット及び要求クラスを含む、ことと、再使用ビット及び要求クラスに基づいて、挿入ポリシーのうち何れかの挿入ポリシーを選択することと、選択された挿入ポリシーに基づいて、データブロックを下位レベルキャッシュに挿入するかどうかを決定することと、挿入すると決定された場合、選択された挿入ポリシーに従って、データブロックを下位レベルキャッシュに挿入することと、を行わせる。
更に、本開示は、動作を実施するために少なくとも1つのプロセッサによって実行可能な命令を備える非一時的なコンピュータ可読記憶媒体を開示する。動作は、上位レベルキャッシュから、データブロック及び関連付けられたメタデータを受信することであって、メタデータが、再使用ビット及び要求クラスを含む、ことと、再使用ビット及び要求クラスに基づいて、挿入ポリシーのうち何れかの挿入ポリシーを選択することと、選択された挿入ポリシーに基づいて、データブロックを下位レベルキャッシュに挿入するかどうかを決定することと、挿入すると決定された場合、選択された挿入ポリシーに従って、データブロックを下位レベルキャッシュに挿入することと、を含む。
図1Aは、本開示の1つ以上の特徴が実装され得る、例示的なデバイス100Aのブロック図である。デバイス100Aは、限定されるものではないが、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、タブレットコンピュータ、又は、他のコンピューティングデバイスのうち何れかであり得る。デバイス100Aは、プロセッサ102、メモリ104、記憶装置106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100Aは、1つ以上の入力ドライバ112及び1つ以上の出力ドライバ114を含む。何れの入力ドライバ112も、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具体化され、入力デバイス108を制御する(例えば、動作を制御し、入力ドライバ112からの入力を受信し、入力ドライバ112にデータを提供する)役割を果たす。同様に、何れの出力ドライバ114も、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具体化され、出力デバイスを制御する(例えば、動作を制御し、出力ドライバ114からの入力を受信し、出力ドライバ114にデータを提供する)役割を果たす。デバイス100Aは、図1Aに示されていない追加の構成要素を含み得ることを理解されたい。
様々な代替例では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(graphics processing unit、GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUとすることができる。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に位置するか、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM、キャッシュ)を含む。いくつかの実施形態では、プロセッサ102は、1つ以上のキャッシュ120を含む。一般に知られているように、キャッシュは、近い将来にプロセッサ102上で実行される命令によってアクセスされる可能性が高いとキャッシュマネージャによって判断されたデータアイテムを記憶する。キャッシュ120は、プロセッサ102の1つ以上のキャッシュメモリを表す。様々な実施形態では、1つ以上のキャッシュメモリは、キャッシュ階層に編成され、キャッシュ階層内のより上位のキャッシュは、キャッシュ階層内のより下位のキャッシュからのミスをサービスし、追い出されたキャッシュエントリを受信する。
記憶装置106は、固定又はリムーバブル記憶装置(例えば、限定するものではないが、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
入力ドライバ112及び出力ドライバ114は、それぞれ、入力デバイス108及び出力デバイス110とインターフェースし、それらをドライブするように構成された1つ以上のハードウェア、ソフトウェア及び/又はファームウェア構成要素を含む。入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。出力ドライバ114は、表示デバイス118に結合された加速処理デバイス(accelerated processing device、APD)116を含み、これは、いくつかの例では、物理表示デバイス又はリモートディスプレイプロトコルを使用して出力を示す模擬デバイスである。APD116は、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算及びグラフィックスレンダリングコマンドを処理し、表示のために表示デバイス118にピクセル出力を提供するように構成されている。以下で更に詳細に説明するように、APD116は、単一命令複数データ(single-instruction-multiple-data、SIMD)パラダイムに従って計算を行うように構成された1つ以上の並列処理ユニットを含む。こうして、様々な機能は、本明細書では、APD116によって又はAPD116と併せて実行されるものとして説明されているが、様々な代替例では、APD116によって行われるものとして説明される機能は、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、表示デバイス118にグラフィック出力を提供するように構成された同様の能力を有する他のコンピューティングデバイスによって、追加的又は代替的に行われる。例えば、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書に説明される機能を行うように構成され得ることが企図される。代替的に、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが、本明細書に説明される機能を行うことが企図される。
図1Bは、本開示の1つ以上の複数の特徴が実装され得る、デバイスからのメモリアクセス要求を管理することを提供する例示的なシステム100Bのブロック図である。システム100Bは、プロセッサ130及びメモリ122を含む。システム100Bは、サーバ、パーソナルコンピュータ、タブレット、セットトップボックス、ゲームシステム等の様々な電子デバイスのうち何れかに組み込まれ得る。概して、プロセッサ130は、定義されたタスクを実行するためにプロセッサ130の回路を操作する命令のセット(例えば、コンピュータプログラム)を実行するように構成されている。
メモリ122は、プロセッサ130によって使用されるデータ及び命令を記憶することによって、これらのタスクの実行を容易にする。メモリ122は、ランダムアクセスメモリ(RAM)、フラッシュメモリ若しくはハードディスクドライブ(hard disk drive、HDD)等の不揮発性メモリ等、又は、それらの組み合わせであり得る。また、システム100Bは、物理入力/出力(input/output、I/O)デバイス等のデバイス124を含む。デバイス124は、例えば、ネットワークインターフェースカード(network interface card、NIC)、ホストバスアダプタ(host bus adapter、HBA)等であり得る。
また、プロセッサ30は、プロセッサコア140、150、160、170と、メモリコントローラ(例えば、ノースブリッジ)132と、を含む。プロセッサコア140、150、160、170は、命令を個別且つ同時に実行する処理ユニットである。いくつかの実施形態では、プロセッサコア140、150、160、170の各々は、命令をフェッチし、フェッチされた命令を対応する動作に復号化し、システム100Bのリソースを使用して様々な動作を実行する個々の命令パイプラインを含む。図1Bは、4つのプロセッサコア140、150、160、170を有するプロセッサ130を例示しているが、プロセッサ130は、4つより多いか又は少ないプロセッサコアを有し得る。プロセッサコア140、150、160、170の各々は、プロセッサコア専用の下位レベルキャッシュを有する。例えば、プロセッサコア140は、レベル1のキャッシュ142及びレベル2のキャッシュ144を有する。また、プロセッサコア140は、変換索引バッファ146を含み得る。同様に、プロセッサコア150は、関連付けられたレベル1のキャッシュ152及びレベル2のキャッシュ154を有する。また、プロセッサコア150は、変換索引バッファ156を含み得る。更なる例では、プロセッサコア160は、レベル1のキャッシュ162及びレベル2のキャッシュ164を有する。また、プロセッサコア160は、変換索引バッファ166を含み得る。別の例では、プロセッサコア170は、レベル1のキャッシュ172及びレベル2のキャッシュ174を有する。また、プロセッサコア170は、変換索引バッファ176を含み得る。プロセッサ130は、プロセッサのペアによって共有されるキャッシュメモリを更に含み得る。例えば、プロセッサコア140及びプロセッサコア160は、L3キャッシュメモリ180を共有してもよく、プロセッサコア150及びプロセッサコア170は、L3キャッシュメモリ185を共有してもよい。
また、プロセッサ130は、デバイス(例えば、図1Aに示されるようなデバイス124等)をメモリコントローラ132に接続するために使用される入力/出力メモリ管理ユニット(input/output memory management unit、IOMMU)136を含む。いくつかの実施形態では、IOMMU136は、シリアルバスを使用してデバイス124と通信する。シリアルバスは、周辺機器相互接続エクスプレス(Peripheral Component Interconnect Express、PCIe)シリアルバス規格等のバス規格に準拠し得る。メモリコントローラ132は、デバイス124がメモリ122又は1つ以上のレベルのキャッシュメモリと通信するためのインターフェースを提供する。IOMMU136は、デバイス124からメモリアクセス要求(例えば、キャッシュインジェクションメモリアクセス要求等のダイレクトメモリアクセス要求)を受信し、メモリコントローラ132を介してメモリ122又はキャッシュメモリへのそれらの要求の提供を制御する。プロセッサ130は、例えば、メモリコントローラ132において、IOMMU136から受信された物理ステアリングタグを、キャッシュインジェクションメモリアクセス要求等の関連付けられたメモリアクセス要求によってターゲットとされる物理リソースにマッピングするための物理タグマップ134を含む。加えて、メモリコントローラ132は、メモリ122又はキャッシュメモリからメモリアクセス要求に対する応答を受信し、デバイス124への応答の提供を制御する。
キャッシュインジェクションメモリアクセス要求は、ステアリングタグを利用して、プロセッサコア専用の下位レベルキャッシュ、プロセッサコアのサブセット間で共有されるキャッシュ又は共有キャッシュ等のようなプロセッサリソースをターゲットとし得る。例えば、ステアリングタグは、プロセッサコア150によってアクセス可能なL1キャッシュ152又はL2キャッシュ154、プロセッサコア150及び170によってアクセス可能なL3キャッシュ185をターゲットとし得る。したがって、メモリアクセス要求の効率的な実行を容易にするために、IOMMU136は、仮想タグマップにアクセスして、メモリアクセス要求において受信された仮想ステアリングタグを、物理リソースにマッピングされた物理ステアリングタグに変換する。デバイス124からメモリアクセス要求を受信することに応じて、IOMMU136は、仮想ステアリングタグを識別し、仮想タグマップ138を用いて仮想ステアリングタグを変換する。仮想タグマップ138は、システムメモリ122に記憶されてもよく、一部がIOMMU136にキャッシュされ得る。代替的に、仮想タグマップ138は、IOMMU136でキャッシュされ得る。IOMMU136は、メモリアクセス要求及び物理ステアリングタグをメモリコントローラ132に提供する。メモリコントローラ132は、物理ステアリングタグを、キャッシュインジェクションメモリアクセス要求によってターゲットとされる下位レベルキャッシュ等のように、メモリアクセス要求によってターゲットとされる物理リソースに変換する。一例では、メモリアクセス要求は、プロセッサコア専用の下位レベルキャッシュをターゲットとする。そのような例では、要求と関連付けられたアドレスは、変換索引バッファによって変換され、キャッシュインジェクションメモリアクセスが実行され得る。
いくつかの実施形態では、デバイス124は、メモリコントローラ132を使用して、IOMMU136に送信される仮想ステアリングタグ及び仮想アドレスを含むメモリアクセス要求を開始することによって、ダイレクトメモリアクセス(direct memory access、DMA)要求を通じてメモリ122又はキャッシュメモリ内の情報にアクセスする。IOMMU136は、仮想ステアリングタグと物理ステアリングタグとの間のステアリングタグ再マッピングと、メモリ122又はキャッシュメモリにおける仮想アドレスと物理アドレスとの間のアドレス変換と、を実施し得る。ステアリングタグ再マッピングプロセス及びアドレス変換プロセスは、IOMMUの独立した機能であってもよく、同時に実施され得る。例えば、デバイス124は、デバイス124によって提供されるデータのための使用を有する仮想マシンを実行するプロセッサと関連付けられたキャッシュメモリにデータを記憶するための書き込み要求を含む、キャッシュインジェクションメモリアクセス要求を生成する。各メモリアクセス要求は、関連付けられた物理ステアリングタグを通じて、キャッシュリソース(例えば、L3キャッシュ180又は185、L1キャッシュ142、152、162又は172、L2キャッシュ144、154、164又は174)、及び、キャッシュインジェクションメモリアクセス要求によってターゲットとされるキャッシュリソースにおける場所を示すメモリアドレスにマッピングされた仮想ステアリングを含む。書き込み要求に応じて、リソースは、書き込み要求のメモリアドレスに対応する場所に要求の書き込み情報を記憶する。
図2は、本開示の1つ以上の特徴が実装され得る、図1Aのデバイスのプロセッサによって採用可能な4ウェイセットアソシアティブキャッシュを含む例示的なキャッシュ階層200のブロック図である。図2は、キャッシュ階層内の特定のレベルに位置し得る上位レベルキャッシュ210と、キャッシュ210のレベルを下回るレベルに位置し得る下位レベルキャッシュ250、すなわち、ビクティムフィルキャッシュと、を例示している。両方のキャッシュは、Lウェイセットアソシアティブキャッシュであり得る。例えば、図2に例示されるように、キャッシュ210、250は、セットアソシアティブキャッシュである。4ウェイセットアソシアティブキャッシュは、セット(インデックスによって指定される)に分割され、各々、4つのデータブロック(又は4つのライン)、例えば、上位レベルキャッシュ210の4つのウェイ215、220、225、230、及び、下位レベルキャッシュ250の4つのウェイ255、260、265、270を含有し、そのため、メインメモリからの各メモリセクションは、それらの特定のアドレスに基づいて、1つのセットの4つのウェイのうち何れかに記憶され得る。
例えば、メモリアドレス280(メインメモリ内の特定のメモリセクションの)は、タグ280.1、インデックス280.2及びブロックオフセット280.3を含むように示されている。アドレス280の最下位ビットを有するブロックオフセット280.3は、アクセスされるデータが記憶されているデータブロック内の場所を指し示すオフセットを提供する。インデックス280.2は、メモリセクションがキャッシュに記憶され得るデータブロックのセットを指定し、例えば、インデックス0(上位レベルキャッシュ210の)は、データブロック215.1、220.1、225.1及び230.1を含むセットを指定する。アドレス280の最上位ビットを有するタグ280.1は、メモリセクションをセット内のデータブロックと関連付けるために使用される。したがって、メモリセクションが特定のデータブロックに記憶される場合、メモリセクションのタグが、データブロックのメタデータとして保存される。このようにして、メモリセクションが後で再参照される場合に、メモリセクションのアドレスのタグは、メモリセクションのアドレスのインデックスによって指定されるセット内の各データブロックと関連付けられたタグと比較され得る。そのようなタグが、セット内で見つけられることができない場合、セット内のデータブロックのうち何れかが置き換えられる(追い出される)必要があり、すなわち、メモリセクションは、追い出されたデータブロックのメモリ場所にコピーされ、その内容をメモリセクションの内容と置き換え、タグをメモリセクションのアドレスのタグで更新する。
いくつかのキャッシュがキャッシュ階層200内に配置されると、上位レベルキャッシュ210から追い出された、追い出されたデータブロック240は、その関連付けられたメタデータ245と一緒に、キャッシュ階層の下位レベルにおけるキャッシュ、例えば、下位レベルキャッシュ250に提供され得る。次いで、下位レベルキャッシュのコントローラは、それが維持する挿入ポリシーに従って、且つ、追い出されたデータブロック245のメタデータに基づいて、追い出されたデータブロック240をキャッシュに挿入するかどうかを考慮し得る。
データブロックと関連付けられたメタデータは、アドレスタグ、RRIP値、有効性ビット、コヒーレンス状態、再使用ビット及び要求クラスを含み得る。アドレスタグ(例えば、タグ及びインデックスを含む)は、上述したように、データブロックを、データブロックが内容を記憶する、メインメモリからのメモリセクションと関連付ける。RRIP値は、上位レベルキャッシュの置き換えアルゴリズムによって割り当てられた値であり得る。有効性ビットは、例えば、データブロックが有効データを記憶しているか否かを示す。コヒーレンス状態は、データブロックがメインメモリから読み込まれてから、データブロックの内容に対して行われた変更によってメインメモリが更新されていないかどうかを示す。再使用ビットは、典型的には、データブロックの内容が最初にキャッシュに挿入された場合にゼロにリセットされ、次いで、データブロックが再参照されている場合に1に設定される。要求クラスは、データブロックのコンテンツの挿入を要求したソースに関連する情報を表し得る(又は、データブロックの内容をキャッシュにもたらした状況を表し得る)。要求クラスは、例えば、命令フェッチ、需要負荷、ストア、変換索引バッファ(translation lookaside buffer、TLB)テーブルウォーク、特定のハードウェアプリフェッチャ、特定のタイプのソフトウェアプリフェッチ、ロックされた命令、ユーザモード命令、又は、スーパーバイザモード命令を含み得る。したがって、図2の下位レベルキャッシュ250等のビクティムフィルキャッシュのコントローラは、追い出されたデータブロックのメタデータを使用して、データブロックをキャッシュ250に挿入するかどうかを決定し得る。
図3は、本開示の1つ以上の特徴が実装され得る、上位レベルキャッシュコントローラ300の例示的な動作のフロー図である。プロセッサがメモリアクセス(例えば、メモリ読み出し又はメモリ書き込み)を伴う命令を実行する場合に、ステップ310では、キャッシュは、アクセスされるデータセグメント(すなわち、要求されたデータセグメント)がキャッシュのデータブロックに既に記憶されているかどうかを確認するためにチェックされる。要求されたデータセグメントが既にキャッシュのデータブロックに記憶されているかどうかを確認するチェックは、例えば、図2を参照して上述したように行われ得る。要求されたデータセグメントがキャッシュのデータブロックに既に記憶されている場合、キャッシュヒットが発生し(320)、したがって、ステップ330では、データセグメントは、それが記憶されているデータブロックから読み出され得る。データブロック330の再参照に続いて、データブロックと関連付けられたメタデータがステップ340で更新され得る。例えば、再使用ビットは、データブロックが再参照される場合に1に設定され得る。別の例では、データブロックと関連付けられたRRIP値は、キャッシュコントローラ300によって使用されるヒットプロモーションポリシーに従って更新され得る。
要求されたデータセグメントがキャッシュに記憶されていない場合、キャッシュミスが発生しており(320)、したがって、キャッシュのデータブロックのうち何れかは、ステップ350において、キャッシュコントローラ300によって使用される置き換えポリシーに従って、追い出しのために選択されなければならない。例えば、自身のキャッシュ置き換えポリシーに対してRRIPフレームワークを適用するキャッシュは、キャッシュ内の各データブロックにRRIP値を割り当てる。したがって、MビットのRRIP値が各データブロックに割り当てられてもよく、ゼロのRRIP値は、データブロックが直ぐ近い将来に再参照されると予測されることを示すが、2M-1のRRIP値は、データブロックが遠い将来に再参照されると予測されることを示す。例えば、M=2の場合、4つのRRIP値、[0、1、2、3]が可能であり、RRIP値が低いほど、それぞれのデータブロックがより早く再参照されると予測される。次いで、置き換えアルゴリズムは、ステップ350において、データブロックを最大RRIP値と置き換えることを選択し得る。
キャッシュコントローラ300によって採用される置き換えポリシーに基づいてデータブロックが追い出しのために選択された後に、追い出されたデータブロック及びその関連付けられたメタデータは、ステップ360において、下位レベルキャッシュ250に送信され得る。加えて、要求されたデータセグメントが、ステップ370において、メインメモリからフェッチされ、追い出しのために選択されたデータブロックのキャッシュ内のメモリ場所にコピーされる。次いで、ステップ380において、要求されたデータセグメントを記憶するデータブロックと関連付けられたメタデータが更新され得る。例えば、データブロックのタグは、メインメモリ内のデータセグメントのアドレスのタグ部を用いて更新される。次に、図4を参照して説明されるように、下位レベルキャッシュ250のコントローラは、上位レベルキャッシュ210のコントローラからの追い出されたデータブロック及びその関連付けられたメタデータの受信時に、キャッシュ階層内の次のレベルのキャッシュのコントローラに、追い出されたデータブロックを挿入するか又はそれ及びその関連付けられたメタデータを送信するかを決定しなければならない。
図4は、本開示の1つ以上の特徴が実装され得る、下位レベルキャッシュコントローラ400の例示的な動作のフロー図である。上述したように、ステップ410では、下位レベルキャッシュ250のコントローラは、上位レベルキャッシュ210から、追い出されたデータブロック及びその関連付けられたメタデータを受信し得る。次いで、コントローラ400は、ステップ420において、メタデータに基づいて、挿入ポリシーを選択し得る。次いで、コントローラ400は、ステップ430において、選択された挿入ポリシーに基づいて、データブロックをキャッシュに挿入するかどうかを決定し得る。データブロックを挿入しないという決定がなされた場合(440)、ステップ450において、追い出されたデータブロック及びその関連付けられたメタデータが、キャッシュ階層の下の次のレベルのキャッシュに送信されるか、又は、階層の最後のレベルにある場合、メモリに追い出される。データブロックを挿入する決定がなされた場合(440)、追い出されたデータブロックが、ステップ460において、挿入ポリシーに従って、キャッシュ250に挿入されてもよく、場合によっては、キャッシュ250のコントローラによって使用される置き換えポリシーに従ってキャッシュ内の別のデータブロックを置き換える。次に、挿入ポリシーが、以下に詳細に説明されるように、ステップ470において更新され得る。
ビクティムフィルキャッシュ250の挿入ポリシーは、例えば、性能シミュレータを採用することによって、統計的に予め決定され得る。挿入ポリシールックアップテーブル(例えば、表1)は、システム100にハードワイヤードされ得るか、又は、プログラム可能な様式で実装され得る。シミュレーションは、重要であるとみなされる様々な作業負荷に対する様々なポリシーをモデル化してもよく、ヒット率(又は他のキャッシュ性能測定基準)を最適化するための最良の全体的なポリシーを決定し得る。挿入ポリシールックアップテーブルがプログラム可能である場合、ユーザ又はベンダは、その特定の作業負荷に対する最良のポリシーを決定するために実験し得る。キャッシュ性能シミュレーションによって又は実験によって最良であると決定されるポリシーは、例えば、方法400によって、以下に説明されるようにルックアップテーブルを使用して、システム100の有効期間中に適用され得る。
ビクティムフィルキャッシュの挿入ポリシーは、追い出されたデータブロックのメタデータをそれぞれの挿入ポリシーと相関させるルックアップテーブルから導出され得る。例えば、追い出されたデータブロックと関連付けられた再使用ビット及び要求クラスは、データブロックがキャッシュ250に挿入された場合に、そのデータブロックが再参照される可能性がどの程度かを示唆し得る。例えば、追い出しキャッシュ210で再使用された需要負荷ラインを表す要求クラスを有するデータブロックは、他の要求クラスを有するデータブロックよりも、ビクティムフィルキャッシュ250でヒットされる高い可能性を有し得る。表1は、挿入ポリシールックアップテーブルの例を提供する。したがって、ステップ420では、追い出されたデータブロックの所定のメタデータに対して何れの挿入ポリシーを使用するかを決定するためにルックアップテーブルが参照され得る。表1に示されるように、再使用ビット及び要求クラスに関するメタデータ情報は、挿入ポリシーを検索するために使用され得る。例えば、データブロックのメタデータに基づいて、RRIP置き換えポリシーを適用する挿入ポリシーが使用されてもよく、その場合、データブロックは、高い置き換えポリシー強度(例えば、低RRIP値)又は低い置き換えポリシー強度(例えば、高RRIP値)を示すパラメータと共にキャッシュに挿入され得る。別の例では、データブロックのメタデータに基づいて、LRU置き換えポリシーを適用する挿入ポリシーが使用されてもよく、その場合、データブロックは、最近性(年齢)値を示すパラメータと共にキャッシュに挿入され得る。
具体的には、表1に示されるように、再使用ビット0及び需要負荷要求クラスを自身のメタデータに含む追い出されたブロックが、キャッシュに挿入されることになる。ルックアップテーブルによると、この場合に使用されることになる置き換えポリシーは、RRIP置き換えポリシーであり、したがって、0のRRIP値が、挿入されたデータブロックと関連付けられることになる。同様に、表1に示されるように、再使用ビット1及び需要負荷要求クラスを自身のメタデータに含む追い出されたブロックが、キャッシュに挿入されることになる。ルックアップテーブルによると、この場合に使用されることになる置き換えポリシーもRRIP置き換えポリシーであるが、3のRRIP値が、挿入されたデータブロックと関連付けられることになる。一方で、再使用ビット0又は1及びソフトウェアプリフェッチ要求を自身のメタデータ内に含む追い出されたブロックは、キャッシュに挿入されないことになる。更に別の例では、再使用ビット0又は1及びユーザモード命令要求クラスを自身のメタデータ内に含む追い出されたブロックがキャッシュに挿入されることになる。ルックアップテーブルによると、この場合に使用されることになる置き換えポリシーはLRU置き換えポリシーであり、したがって、値0又は1の最近性パラメータが、それぞれ、挿入されたデータブロックと関連付けられることになる。
表1は、ステップ470において、例えば、挿入されたデータブロックのメタデータ内の情報から導出された統計に基づいて更新され得る。例えば、再使用ビット1及び需要負荷要求クラスを有するデータブロックのメタデータから導出されたRRIP値が、RRIP値の統計を形成するために使用され得る。そのような統計は、将来のブロック(再使用ビット1及び需要負荷要求クラスを含む)をキャッシュに挿入する場合に使用されてもよく、ルックアップテーブル内の対応するRRIPパラメータ(現在は値3)は、この統計によって更新され得る。
代替例では、挿入ポリシーが動的に決定され得る。例えば、ビクティムフィルキャッシュ250は、2つのテストグループを専用化してもよく、各テストグループは、セットのサブセット(すなわち、キャッシュ内のいくつかのインデックス)を含み得る。両方のグループは、特定の再使用ビット(0又は1)及び特定の要求クラスに対応するが、各グループは、異なる挿入ポリシー候補が割り当てられる。次いで、テストグループが、それらのそれぞれの挿入ポリシー候補をテストするために使用され、次いで、より優れたポリシーを有する候補がキャッシュに適用され得る。例えば、再使用されない(再使用ビットが0)ハードウェアプリフェッチ要求クラスは、1つのグループ内の強い置き換えポリシー及び第2のグループ内のより弱い置き換えポリシーと関連付けられ得る。次いで、テストグループは、何れのグループが性能測定基準に従ってより良好に機能しているかを確認するために追跡され得る。性能測定基準は、例えば、キャッシュミスの数とすることができる。次いで、最少のキャッシュミスを結果的にもたらす挿入ポリシー候補が、対応する再使用ビット及び要求クラス(例えば、上記の例における再使用されないハードウェアプリフェッチ)のキャッシュセット(インデックス)の残りに適用され得る。代替例では、テストグループの追跡、及び、キャッシュの残りへの選択された挿入ポリシー候補の適用は、キャッシュの動作と同時に実行され得る。別の代替例では、別のミラーリングキャッシュがテストグループに使用され得る。この場合、ミラーリングキャッシュ内のテストグループの追跡、及び、ミラーリングされたキャッシュ250への選択された挿入ポリシー候補の適用は、キャッシュの動作と同時に実行され得る。
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上に説明されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
図において示され、及び/又は、本明細書に説明される様々な機能ユニット(プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、加速処理デバイス116を含むが、これらに限定されない)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体若しくは別の媒体に記憶されているプログラム、ソフトウェア若しくはファームウェアとして実装され得る。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、本開示の特徴を実装するプロセッサを製造する。
本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
Claims (21)
- 下位レベルキャッシュの挿入ポリシーを維持する方法であって、
上位レベルキャッシュから、データブロックと関連するメタデータとを受信することであって、前記メタデータは、再使用ビットと要求クラスとを含む、ことと、
前記再使用ビット及び前記要求クラスに基づいて、前記挿入ポリシーのうち何れかの挿入ポリシーを選択することと、
選択された挿入ポリシーに基づいて、前記データブロックを前記下位レベルキャッシュに挿入するかどうかを決定することと、
挿入すると決定された場合に、前記選択された挿入ポリシーに従って、前記データブロックを前記下位レベルキャッシュに挿入することと、を含む、
方法。 - 前記選択された挿入ポリシーは、再参照区間予測(RRIP)置き換えポリシーを適用し、RRIP値を、挿入されたデータブロックに割り当てる、
請求項1の方法。 - 前記選択された挿入ポリシーは、最低使用頻度(LRU)置き換えポリシーを適用し、最近値を、挿入されたデータブロックに割り当てる、
請求項1の方法。 - 挿入すると決定された場合に、前記メタデータに基づいて、前記選択された挿入ポリシーを更新することを含む、
請求項1の方法。 - 前記下位レベルキャッシュは、セットアソシアティブキャッシュであり、
前記方法は、
前記再使用ビット及び前記要求クラスに基づいて、前記挿入ポリシーのうち第1の挿入ポリシー候補及び第2の挿入ポリシー候補を選択することと、
前記第1の挿入ポリシー候補に基づいて、前記データブロックを前記下位レベルキャッシュ内のセットの第1のグループに挿入するかどうかを決定し、挿入すると決定された場合に、前記第1の挿入ポリシー候補に従って、前記データブロックを前記第1のグループに挿入することと、
前記第2の挿入ポリシー候補に基づいて、前記データブロックを前記下位レベルキャッシュ内のセットの第2のグループに挿入するかどうかを決定し、挿入すると決定された場合に、前記第2の挿入ポリシー候補に従って、前記データブロックを前記第2のグループに挿入することと、
前記第1の挿入ポリシー候補又は前記第2の挿入ポリシー候補のうち何れかに基づいて、前記選択された挿入ポリシーを更新することと、を含む、
請求項1の方法。 - 前記第1の挿入ポリシー候補又は前記第2の挿入ポリシー候補のうち何れかに基づいて、前記選択された挿入ポリシーを更新することは、
性能測定基準に基づいて、前記第1のグループ及び前記第2のグループの性能を追跡することと、
前記第1のグループ及び前記第2のグループの性能に基づいて、新しい挿入ポリシーを選択することと、
前記新しい挿入ポリシーに基づいて、前記選択された挿入ポリシーを更新することと、を含む、
請求項5の方法。 - 前記第1の挿入ポリシー候補又は前記第2の挿入ポリシー候補のうち何れかに基づいて、前記選択された挿入ポリシーを更新することは、
前記第1のグループ及び前記第2のグループにおいて発生したキャッシュミスの数を追跡することと、
前記第1のグループで発生したキャッシュミスの数が最少の場合に、前記第1の挿入ポリシー候補に基づいて、前記選択された挿入ポリシーを更新することと、を含む、
請求項5の方法。 - 下位レベルキャッシュの挿入ポリシーを維持するためのシステムであって、
少なくとも1つのプロセッサと、
命令を記憶するメモリと、を備え、
前記命令は、前記少なくとも1つのプロセッサによって実行されると、
上位レベルキャッシュから、データブロックと関連するメタデータとを受信することであって、前記メタデータは、再使用ビットと要求クラスとを含む、ことと、
前記再使用ビット及び前記要求クラスに基づいて、前記挿入ポリシーのうち何れかの挿入ポリシーを選択することと、
選択された挿入ポリシーに基づいて、前記データブロックを前記下位レベルキャッシュに挿入するかどうかを決定することと、
挿入すると決定された場合に、前記選択された挿入ポリシーに従って、前記データブロックを前記下位レベルキャッシュに挿入することと、
を前記システムに行わせる、
システム。 - 前記選択された挿入ポリシーは、RRIP置き換えポリシーを適用し、RRIP値を、挿入されたデータブロックに割り当てる、
請求項8のシステム。 - 前記選択された挿入ポリシーは、LRU置き換えポリシーを適用し、最近値を、挿入されたデータブロックに割り当てる、
請求項8のシステム。 - 前記命令は、
挿入すると決定された場合に、前記メタデータに基づいて、前記選択された挿入ポリシーを更新することを前記システムに行わせる、
請求項8のシステム。 - 前記下位レベルキャッシュは、セットアソシアティブキャッシュであり、
前記命令は、
前記再使用ビット及び前記要求クラスに基づいて、前記挿入ポリシーのうち第1の挿入ポリシー候補及び第2の挿入ポリシー候補を選択することと、
前記第1の挿入ポリシー候補に基づいて、前記データブロックを前記下位レベルキャッシュ内のセットの第1のグループに挿入するかどうかを決定し、挿入すると決定された場合に、前記第1の挿入ポリシー候補に従って、前記データブロックを前記第1のグループに挿入することと、
前記第2の挿入ポリシー候補に基づいて、前記データブロックを前記下位レベルキャッシュ内のセットの第2のグループに挿入するかどうかを決定し、挿入すると決定された場合に、前記第2の挿入ポリシー候補に従って、前記データブロックを前記第2のグループに挿入することと、
前記第1の挿入ポリシー候補又は前記第2の挿入ポリシー候補のうち何れかに基づいて、前記選択された挿入ポリシーを更新することと、
を前記システムに行わせる、
請求項8のシステム。 - 前記第1の挿入ポリシー候補又は前記第2の挿入ポリシー候補のうち何れかに基づいて、前記選択された挿入ポリシーを更新することは、
性能測定基準に基づいて、前記第1のグループ及び前記第2のグループの性能を追跡することと、
前記第1のグループ及び前記第2のグループの性能に基づいて、新しい挿入ポリシーを選択することと、
前記新しい挿入ポリシーに基づいて、前記選択された挿入ポリシーを更新することと、を含む、
請求項12のシステム。 - 前記第1の挿入ポリシー候補又は前記第2の挿入ポリシー候補のうち何れかに基づいて、前記選択された挿入ポリシーを更新することは、
前記第1のグループ及び前記第2のグループにおいて発生したキャッシュミスの数を追跡することと、
前記第1のグループで発生したキャッシュミスの数が最少の場合に、前記第1の挿入ポリシー候補に基づいて、前記選択された挿入ポリシーを更新することと、を含む、
請求項12のシステム。 - 下位レベルキャッシュの挿入ポリシーを維持するための動作を実施するように少なくとも1つのプロセッサによって実行可能な命令を備えるコンピュータ可読記憶媒体であって、
前記動作は、
上位レベルキャッシュから、データブロックと関連するメタデータとを受信することであって、前記メタデータは、再使用ビットと要求クラスとを含む、ことと、
前記再使用ビット及び前記要求クラスに基づいて、前記挿入ポリシーのうち何れかの挿入ポリシーを選択することと、
選択された挿入ポリシーに基づいて、前記データブロックを前記下位レベルキャッシュに挿入するかどうかを決定することと、
挿入すると決定された場合に、前記選択された挿入ポリシーに従って、前記データブロックを前記下位レベルキャッシュに挿入することと、を含む、
コンピュータ可読記憶媒体。 - 前記選択された挿入ポリシーは、RRIP置き換えポリシーを適用し、RRIP値を、挿入されたデータブロックに割り当てる、
請求項15のコンピュータ可読記憶媒体。 - 前記選択された挿入ポリシーは、LRU置き換えポリシーを適用し、最近値を、挿入されたデータブロックに割り当てる、
請求項15のコンピュータ可読記憶媒体。 - 挿入すると決定された場合に、前記メタデータに基づいて、前記選択された挿入ポリシーを更新することを含む、
請求項15のコンピュータ可読記憶媒体。 - 前記下位レベルキャッシュは、セットアソシアティブキャッシュであり、
前記動作は、
前記再使用ビット及び前記要求クラスに基づいて、前記挿入ポリシーのうち第1の挿入ポリシー候補及び第2の挿入ポリシー候補を選択することと、
前記第1の挿入ポリシー候補に基づいて、前記データブロックを前記下位レベルキャッシュ内のセットの第1のグループに挿入するかどうかを決定し、挿入すると決定された場合に、前記第1の挿入ポリシー候補に従って、前記データブロックを前記第1のグループに挿入することと、
前記第2の挿入ポリシー候補に基づいて、前記データブロックを前記下位レベルキャッシュ内のセットの第2のグループに挿入するかどうかを決定し、挿入すると決定された場合に、前記第2の挿入ポリシー候補に従って、前記データブロックを前記第2のグループに挿入することと、
前記第1の挿入ポリシー候補又は前記第2の挿入ポリシー候補のうち何れかに基づいて、前記選択された挿入ポリシーを更新することと、を含む、
請求項15のコンピュータ可読記憶媒体。 - 前記第1の挿入ポリシー候補又は前記第2の挿入ポリシー候補のうち何れかに基づいて、前記選択された挿入ポリシーを更新することは、
性能測定基準に基づいて、前記第1のグループ及び前記第2のグループの性能を追跡することと、
前記第1のグループ及び前記第2のグループの性能に基づいて、新しい挿入ポリシーを選択することと、
前記新しい挿入ポリシーに基づいて、前記選択された挿入ポリシーを更新することと、を含む、
請求項19のコンピュータ可読記憶媒体。 - 前記第1の挿入ポリシー候補又は前記第2の挿入ポリシー候補のうち何れかに基づいて、前記選択された挿入ポリシーを更新することは、
前記第1のグループ及び前記第2のグループにおいて発生したキャッシュミスの数を追跡することと、
前記第1のグループで発生したキャッシュミスの数が最少の場合に、前記第1の挿入ポリシー候補に基づいて、前記選択された挿入ポリシーを更新することと、を含む、
請求項19のコンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/488,206 | 2021-09-28 | ||
US17/488,206 US11704250B2 (en) | 2021-09-28 | 2021-09-28 | Using request class and reuse recording in one cache for insertion policies of another cache |
PCT/US2022/039091 WO2023055478A1 (en) | 2021-09-28 | 2022-08-01 | Using request class and reuse recording in one cache for insertion policies of another cache |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024533656A true JP2024533656A (ja) | 2024-09-12 |
Family
ID=85722250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2024518288A Pending JP2024533656A (ja) | 2021-09-28 | 2022-08-01 | 1つのキャッシュにおける別のキャッシュの挿入ポリシーのための要求クラス及び再使用記録の使用 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11704250B2 (ja) |
EP (1) | EP4409389A1 (ja) |
JP (1) | JP2024533656A (ja) |
KR (1) | KR20240067951A (ja) |
CN (1) | CN118020056A (ja) |
WO (1) | WO2023055478A1 (ja) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8788757B2 (en) | 2011-12-09 | 2014-07-22 | International Business Machines Corporation | Dynamic inclusive policy in a hybrid cache hierarchy using hit rate |
US20130166846A1 (en) | 2011-12-26 | 2013-06-27 | Jayesh Gaur | Hierarchy-aware Replacement Policy |
US20130311724A1 (en) | 2012-05-17 | 2013-11-21 | Advanced Micro Devices, Inc. | Cache system with biased cache line replacement policy and method therefor |
US10019368B2 (en) | 2014-05-29 | 2018-07-10 | Samsung Electronics Co., Ltd. | Placement policy for memory hierarchies |
US9898411B2 (en) * | 2014-12-14 | 2018-02-20 | Via Alliance Semiconductor Co., Ltd. | Cache memory budgeted by chunks based on memory access type |
US10430349B2 (en) * | 2016-06-13 | 2019-10-01 | Advanced Micro Devices, Inc. | Scaled set dueling for cache replacement policies |
US11182306B2 (en) * | 2016-11-23 | 2021-11-23 | Advanced Micro Devices, Inc. | Dynamic application of software data caching hints based on cache test regions |
US10229060B2 (en) * | 2016-12-05 | 2019-03-12 | Intel Corporation | Instruction and logic for software hints to improve hardware prefetcher effectiveness |
US10437732B2 (en) * | 2016-12-14 | 2019-10-08 | Intel Corporation | Multi-level cache with associativity collision compensation |
US11138121B2 (en) | 2017-11-20 | 2021-10-05 | Samsung Electronics Co., Ltd. | Systems and methods for efficient cacheline handling based on predictions |
US11797307B2 (en) * | 2021-06-23 | 2023-10-24 | Arm Limited | Range prefetch instruction |
-
2021
- 2021-09-28 US US17/488,206 patent/US11704250B2/en active Active
-
2022
- 2022-08-01 WO PCT/US2022/039091 patent/WO2023055478A1/en active Application Filing
- 2022-08-01 KR KR1020247013715A patent/KR20240067951A/ko unknown
- 2022-08-01 JP JP2024518288A patent/JP2024533656A/ja active Pending
- 2022-08-01 CN CN202280065683.1A patent/CN118020056A/zh active Pending
- 2022-08-01 EP EP22877087.1A patent/EP4409389A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4409389A1 (en) | 2024-08-07 |
US11704250B2 (en) | 2023-07-18 |
CN118020056A (zh) | 2024-05-10 |
US20230100230A1 (en) | 2023-03-30 |
WO2023055478A1 (en) | 2023-04-06 |
KR20240067951A (ko) | 2024-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9921972B2 (en) | Method and apparatus for implementing a heterogeneous memory subsystem | |
JP7249272B2 (ja) | キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法 | |
JP2003067357A (ja) | 不均一メモリ・アクセス(numa)データ処理システムおよびその操作方法 | |
US10579522B2 (en) | Method and device for accessing a cache memory | |
US8364904B2 (en) | Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer | |
US11853223B2 (en) | Caching streams of memory requests | |
US11847064B2 (en) | Buffer and methods for address translations in a processor | |
KR101893966B1 (ko) | 메모리 관리 방법 및 장치, 및 메모리 컨트롤러 | |
CN114238167B (zh) | 信息预取方法、处理器、电子设备 | |
JP2020514859A (ja) | 変換索引バッファにおける構成可能なスキューアソシエイティビティ | |
US10754791B2 (en) | Software translation prefetch instructions | |
US7797492B2 (en) | Method and apparatus for dedicating cache entries to certain streams for performance optimization | |
KR20210097345A (ko) | 캐시 메모리 장치, 이를 포함하는 시스템 및 캐시 메모리 장치의 동작 방법 | |
JP6249120B1 (ja) | プロセッサ | |
US11494300B2 (en) | Page table walker with page table entry (PTE) physical address prediction | |
US11704250B2 (en) | Using request class and reuse recording in one cache for insertion policies of another cache | |
US11321241B2 (en) | Techniques to improve translation lookaside buffer reach by leveraging idle resources | |
CN115098410A (zh) | 处理器、用于处理器的数据处理方法及电子设备 | |
US12099451B2 (en) | Re-reference interval prediction (RRIP) with pseudo-LRU supplemental age information | |
US20230102891A1 (en) | Re-reference interval prediction (rrip) with pseudo-lru supplemental age information | |
CN114218132B (zh) | 信息预取方法、处理器、电子设备 | |
US10977176B2 (en) | Prefetching data to reduce cache misses | |
WO2023055484A1 (en) | Deterministic mixed latency cache | |
CN115080464A (zh) | 数据处理方法和数据处理装置 | |
CN115917516A (zh) | 用于相联高速缓存的直接映射模式 |