JP2023507078A - プリフェッチレベルの降格 - Google Patents

プリフェッチレベルの降格 Download PDF

Info

Publication number
JP2023507078A
JP2023507078A JP2022534184A JP2022534184A JP2023507078A JP 2023507078 A JP2023507078 A JP 2023507078A JP 2022534184 A JP2022534184 A JP 2022534184A JP 2022534184 A JP2022534184 A JP 2022534184A JP 2023507078 A JP2023507078 A JP 2023507078A
Authority
JP
Japan
Prior art keywords
cache
prefetch
priority
level
request
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
Application number
JP2022534184A
Other languages
English (en)
Inventor
モイヤー ポール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2023507078A publication Critical patent/JP2023507078A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Abstract

方法は、対象キャッシュにおいて受信した複数のプリフェッチリクエストの各プリフェッチリクエストについて、対象キャッシュのキャッシュ性能メトリックの第1のセットを記録することと、キャッシュ性能メトリックの第1のセットに基づいて、対象キャッシュのための閾値優先度に対するプリフェッチリクエストの相対優先度を決定することと、複数のプリフェッチリクエストのうち各低い優先度のプリフェッチリクエストについて、低い優先度のプリフェッチリクエストの優先度が目標キャッシュの閾値優先度レベルよりも低いことを決定したことに応じて、第1のより低いレベルのキャッシュに低い優先度のプリフェッチリクエストをリダイレクトすることと、複数のプリフェッチリクエストの各高い優先度のプリフェッチリクエストについて、高い優先度のプリフェッチリクエストの優先度が対象キャッシュのための閾値優先度レベルよりも高いことを決定したことに応じて、高い優先度のプリフェッチリクエストに従って対象キャッシュにプリフェッチデータを記憶することと、を含む。【選択図】図3

Description

最新のコンピューティングシステムのプロセッサは、通常、プロセッサによって使用される命令又は他のデータを記憶するメインメモリよりもはるかに高速に動作することができる。したがって、多くの場合、命令又はデータへの迅速なアクセスを提供するために、より小さく且つより高速なキャッシュメモリがメインメモリと組み合わせて使用される。キャッシュへのデータのプリフェッチは、データが実際に必要とされる前に、プロセッサがデータをキャッシュに記憶するようにリクエストした場合に発生する。次に、データが必要とされる場合に、メインメモリからデータをリクエストするというさらなる遅延を発生させることなく、データをキャッシュから取り出すことができる。
ほとんどのプログラムは順次実行されるか、又は、他の規則的な実行パターンを示すので、命令又は他のデータは、プログラムの順序で、又は、メモリアクセスストリーム内の特定の他のパターンに従ってフェッチされ得る。ただし、誤ったデータをプリフェッチするか、又は、不適切な時間にデータをプリフェッチすると、プリフェッチの実装によって提供される全体的なメリットが減少する可能性がある。
本開示は添付図面の図において、限定ではなく例として示されている。
一実施形態によるコンピューティングシステムを示す図である。 一実施形態によるコンピューティングシステム内のメモリ階層を示す図である。 一実施形態によるキャッシュの構成要素を示す図である。 一実施形態によるキャッシュタグに記憶された情報を示す図である。 一実施形態によるキャッシュ階層内のプリフェッチの降格を示す図である。 一実施形態によるプリフェッチプロセスを示すフロー図である。
以下の説明では、実施形態の十分な理解を提供するために、特定のシステム、構成要素及び方法等の例等のように、多くの特定の詳細を記載する。しかしながら、少なくともいくつかの実施形態が、これらの特定の詳細がなくても実施され得ることは当業者に明らかであろう。他の例では、実施形態を不必要に不明瞭にすることを回避するために、よく知られている構成要素又は方法は、詳細には説明されないか、又は、単純なブロック図形式で示されている。したがって、記載された特定の詳細は例示に過ぎない。特定の実施形態は、これらの例示的な詳細とは異なってもよく、それでもなお、実施形態の範囲内にあると考えられ得る。
複数レベルのキャッシュ(例えば、L1、L2及びL3)を含むコンピューティングシステムでは、データ又は命令のプリフェッチは、ハードウェアプリフェッチャ又はユーザアプリケーション等のソフトウェアによって、キャッシュレベルのうち特定のレベルを対象としている。例えば、複数レベルのキャッシュを含むコンピューティングシステムは、メモリアクセスストリームを監視し、何れのデータをメインメモリからその関連するキャッシュレベル又はより低いレベルの(より大きな番号が付されている)のキャッシュにフェッチするかを決定する、キャッシュレベルの各々のハードウェアプリフェッチャを含む。さらに、プリフェッチは、所定のキャッシュレベルを対象にするための命令(例えば、×86命令セットで提供されるもの)から生成されてもよく、このような命令は、実行時に何れのアイテムをプリフェッチするかを予測するヒューリスティックを使用して、コンパイラによって生成される。したがって、ハードウェアとソフトウェアとの両方のプリフェッチメカニズムは、対象キャッシュ内のリソースの可用性を考慮せずに、選択される特定のレベルのキャッシュを対象にする。
場合によっては、対象レベルのキャッシュのリソースが過剰に利用され、プリフェッチがより適切により低いキャッシュレベルを対象にする。また、ハードウェア又はソフトウェアプリフェッチャによって対象とされたキャッシュレベルへのプリフェッチは、消費された低いレベルのキャッシュ容量の量に対して常に最低の遅延をもたらすとは限らず、より低いレベルの(すなわち、大きな番号が付されている)キャッシュへのプリフェッチは、特に相当数のプリフェッチが不正確であるか又は過度に早く実行されていることを決定された場合、場合によってより良い容量/遅延の影響を有することがある。不適切に対象にしたキャッシュレベルに送信されたプリフェッチは、対象キャッシュレベルのキャッシュライン容量及びリソース可用性への圧力が高まるので、そのレベルでプリフェッチされたキャッシュライン又は他のキャッシュライン(例えば、早期又は不正確なプリフェッチに起因して退避させられたキャッシュライン)の遅延を増大させる可能性がある。
一実施形態では、キャッシュ階層内の各レベルは、プリフェッチをより低い(すなわち、より高い番号が付され、且つ、より高い容量の)キャッシュレベルに降格するための論理を有するキャッシュコントローラを含む。例えば、最初にL2キャッシュを対象とするプリフェッチは、プリフェッチが最初に対象とするL2キャッシュ内の既存のデータよりも低い優先度を与えられることを示す特定の条件が満たされた場合に、L3キャッシュに降格させられる。
一実施形態では、対象キャッシュレベルのキャッシュコントローラは、対象キャッシュのミスリクエストバッファ及び/又はビクティムバッファが満杯若しくはほぼ満杯である場合、又は、特定のキャッシュインデックスに対する未処理のミス数が閾値数を超える場合(キャッシュミスがキャッシュタグ自体によって追跡される実装において)、プリフェッチをより低いキャッシュレベルへ降格させる。
一実施形態では、キャッシュコントローラは、以前にプリフェッチされたデータ又は命令の要求操作による使用に基づいて、プリフェッチ使用メトリックを追跡する。これらのプリフェッチメトリックに基づいて、以前のプリフェッチが不正確であったこと(すなわち、要求される前にキャッシュから退避させられる)、又は、適時でない(すなわち、プリフェッチされた情報が過度に遅く要求される)ことの何れかを決定すると、キャッシュコントローラは、その対象キャッシュレベルに入ってくる、いくつか又は全てのプリフェッチに対する優先度を低くする。したがって、より低い優先度のプリフェッチは、対象キャッシュ内のより高い優先度のキャッシュラインの容量退避を引き起こすことはない。
一実施形態では、キャッシュコントローラは、キャッシュ置換ポリシーに従って、高い優先度のキャッシュラインを識別する。例えば、高い優先度のキャッシュラインは頻繁に再利用されるか、又は、命令フェッチ、トランスレーションルックアサイドバッファ(TLB)フェッチ、クリティカルパス内でのロード/記憶等、他のものよりも重要な操作によって再利用される。高い優先度のキャッシュラインの割合が閾値を超える場合、プリフェッチを次に低いレベルのキャッシュに降格させることにより、高い優先度の「ホット(hot)」キャッシュラインを対象キャッシュに邪魔されずに残すことができる。
図1は、プリフェッチ降格メカニズムを実装するコンピューティングシステム100の実施形態を示している。一般に、コンピューティングシステム100は、ラップトップ又はデスクトップコンピュータ、モバイルデバイス、サーバ、ネットワークスイッチ又はルータ等を含むがこれらに限定されない、多数の異なるタイプのデバイスの何れかとして具現化される。コンピューティングシステム100は、バス101を通じて互いに通信する構成要素102~108を含む、多数のハードウェアリソースを含む。コンピューティングシステム100において、構成要素102~108の各々は、バス101を通じて直接又は他の構成要素102~108のうち1つ以上のものを介しての何れかで、他の構成要素102~108の何れかと通信することができる。コンピューティングシステム101における構成要素101~108は、ラップトップ若しくはデスクトップのシャーシ、又は、携帯電話ケース等の単一の物理筐体内に収容される。代替の実施形態では、コンピューティングシステム100の構成要素のいくつかは、コンピューティングシステム100の全体が単一の物理的筐体内に存在しないような外部周辺デバイスとして具体化される。
また、コンピューティングシステム100は、ユーザから情報を受け取るか、又は、ユーザに情報を提供するためのユーザインターフェースデバイスを含む。具体的には、コンピューティングシステム100は、キーボード、マウス、タッチスクリーン、又は、ユーザから情報を受け取るための他のデバイス等の入力デバイス102を含む。コンピューティングシステム100は、モニタ、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ、又は、他の出力デバイス等のディスプレイ105を介してユーザに情報を表示する。
さらに、コンピューティングシステム100は、有線又は無線ネットワークを介してデータを送受信するためのネットワークアダプタ107を含む。また、コンピューティングシステム100は、1つ以上の周辺デバイス108を含む。周辺デバイス108は、大容量記憶デバイス、位置検出デバイス、センサ、入力デバイス、又は、コンピューティングシステム100によって使用される他のタイプのデバイスを含み得る。メモリシステム106は、ランダムアクセスメモリ(RAM)モジュール、読み取り専用メモリ(ROM)モジュール、ハードディスク、及び、他の非一時的なコンピュータ可読記憶媒体等のコンピューティングシステム100によって使用されるメモリデバイスを含む。
コンピューティングシステム100は、処理ユニット104を含む。一実施形態では、処理ユニット104は、共通集積回路基板に存在する複数の処理コアを含む。処理ユニット104は、メモリシステム106に記憶された命令109を受け取って実行する。命令109の少なくとも一部分は、処理ユニット104によって実行可能である命令を含むアプリケーションを定義する。
コンピューティングシステム100のいくつかの実施形態は、図1に示す実施形態よりも少ない又は多い構成要素を含み得る。例えば、特定の実施形態は、何れのディスプレイ105又は入力デバイス102も伴わずに実装される。他の実施形態は、2つ以上の特定の構成要素を有し、例えば、コンピューティングシステム100の実施形態は、複数の処理ユニット104、バス101、ネットワークアダプタ107、メモリシステム106等を有し得る。
図2は、一実施形態による、処理ユニットのキャッシュ階層を示す図である。処理ユニット104は、L1キャッシュ201、L2キャッシュ202及びL3キャッシュ203を含むキャッシュ階層を含む。プロセッサコア230等の他のデバイスは、それぞれキャッシュ201~203を制御するキャッシュコントローラ211~213を介してこれらのキャッシュ201~203とインターフェースする。プロセッサコア230は、命令109を実行することによって、オペレーティングシステム231及びユーザアプリケーション232を実行する。キャッシュ階層において、最高のL1キャッシュ201が、階層内で最速且つ最小の容量のキャッシュである。連続するより低いキャッシュL2 202及びL3 203は、順に遅くなる(すなわち、遅延が大きくなる)容量及び/又はより大きな容量である。
ハードウェアプリフェッチャ221~223は、それぞれキャッシュレベル201~203に関連付けられており、関連するキャッシュレベル又はそれらの関連するキャッシュレベルよりも低いキャッシュレベルに対してプリフェッチリクエストを生成する。プリフェッチリクエストは、要求される前にアプリケーション232によって使用されるデータ又は命令を対象キャッシュにロードすることによって、アプリケーション232の実行をサポートする。したがって、ハードウェアプリフェッチャ221~223は、アプリケーション232の分岐予測を実行することによって、及び/又は、アプリケーション232による以前のメモリアクセスのパターンに基づいてアプリケーション232による将来のメモリアクセスを予測することによって、何れのデータ又は命令をプリフェッチするかを決定する。また、プリフェッチリクエストは、アプリケーション232の命令を実行するプロセッサコア230によって生成される。例えば、アプリケーション232の命令は、特定のデータ又は命令を特定の指定されたレベルのキャッシュにプリフェッチするための明示的な命令を含むことができる。
図3は、一実施形態によるキャッシュ300内の回路構成要素を示す図である。キャッシュ201~203の各々は、キャッシュ300と同様の方法で同様の構成要素及び機能を含む。キャッシュ300は、キャッシュラインのアレイを記憶するメモリ310を含み、各キャッシュラインが、タグ311のうち1つ以上をキャッシュライン内のデータ312の一部分と関連付ける。タグ311は、それらの関連するキャッシュライン内のデータに関する情報、例えば、データがプリフェッチからのものかどうか、プリフェッチのソース(例えば、ハードウェアプリフェッチャ、アプリケーション等)、データのアクセス頻度、データを使用する操作のタイプ等を含む。キャッシュコントローラ320は、メモリ310内のタグ311及びデータ312を読み書きするための読み出し/書き込み論理326を含む。
キャッシュ300は、プリフェッチメトリック322、キャッシュエントリメトリック323及びリソースメトリック324モジュールを含む監視回路を含み、これらは、キャッシュ300の性能メトリックを記録する。プリフェッチメトリックモジュール322は、タグ311内の情報に基づいて、プリフェッチの精度及び適時性を示すメトリックを測定する。一実施形態では、プリフェッチリクエストがキャッシュ300によって受け入れられると、コントローラ320は、キャッシュラインが使用されていないプリフェッチされたデータを含むことを示す、キャッシュラインに関連付けられているタグを更新する(例えば、ビットをアサートすることによって)。その後、プリフェッチされたデータがより高いレベルのキャッシュ又はプロセッサ230によって要求されると、データが要求されたという事実を反映するようにタグが更新される(例えば、ビットをクリアすることによって)。時間の経過とともに、プリフェッチメトリックモジュール322は、要求される前にキャッシュ300から退避させられる未使用のプリフェッチされたキャッシュラインに対する、要求リクエストが受信される使用済みのプリフェッチされたキャッシュラインの割合を追跡する。未使用のプリフェッチの割合が高いことは、分岐予測ミス又はその他の要因の結果として、プリフェッチが不正確であることを示している。
一実施形態では、元のプリフェッチリクエストのソースもタグ311内で追跡され、例えば、タグ311は、プリフェッチリクエストが、対象キャッシュのハードウェアプリフェッチャ、より高いレベルのキャッシュのハードウェアプリフェッチャ、又は、アプリケーション命令を実行するプロセッサ230から到着したかどうかを示す。一実施形態では、アプリケーションを識別するスレッド識別子又は他の情報がタグに追加されて、プリフェッチリクエストを開始した特定のスレッド又はプロセスを識別する。一実施形態では、システム100は、異なるタイプのハードウェアプリフェッチャ(異なるタイプのパターンの観察に基づいてプリフェッチリクエストを生成する)を含み、これらは、異なるプリフェッチソースとしても追跡される。次に、コントローラ320は、異なるプリフェッチソースの各々から発信されたプリフェッチのプリフェッチ精度及び適時性を独立して追跡することができる。
また、プリフェッチメトリックモジュール322は、プリフェッチされたデータが最終的に要求されるときも追跡するが、最初に対象としたキャッシュレベルではなく、より低いキャッシュレベルで追跡する。これは、同じキャッシュを対象とする他のデータと比較して、データのプリフェッチが過度に早いことを示す傾向がある。この場合、プリフェッチが最初により低いレベルのキャッシュを対象にしていた方が、計算コストが低くなる。したがって、プリフェッチが不正確であるか又は適時でない場合、最初に対象としたキャッシュが、そのキャッシュレベルから要求される可能性が低いプリフェッチデータで汚染されるのを避けるために、プリフェッチリクエストは、次に低いキャッシュレベルに降格させられる。
キャッシュエントリメトリックモジュール323は、メモリ310内のエントリ(例えば、キャッシュライン)のメトリック、例えば、各キャッシュラインのアクセス頻度、キャッシュラインに関連する動作時間等を記録する。一実施形態では、メトリックは、タグ311に記録される。キャッシュエントリメトリックは、キャッシュエントリの優先度レベルを決定するために使用される。頻繁にアクセスされるか、又は、より高い優先度の操作(例えば、命令フェッチ、TLBフェッチ、クリティカルパス内でのロード/記憶等)によって要求されるキャッシュラインは、要求される可能性がより低いプリフェッチに対してより高い優先度が与えられる。
リソースメトリックモジュール324は、高いキャッシュミストラフィック等のキャッシュリソースの過剰利用の兆候について、キャッシュ300のミスリクエストバッファ331及びビクティムバッファ332を監視する。ミスリクエストバッファ331は、それらがキャッシュメモリ310に転送され得るまで、キャッシュから欠落したラインを記憶し、一方でビクティムバッファ332は、キャッシュミスの結果としてキャッシュメモリ310から退避させられたラインを記憶する。したがって、キャッシュ300が高いミス率を経験している場合、ミスリクエストバッファ331及びビクティムバッファ332内のスペースの要求が増加する。これが発生すると、キャッシュリソースが過剰に利用され、したがって、より低い優先度のプリフェッチは、階層内のより低いレベルのより高い容量のキャッシュに降格させられる。
決定論理321は、監視回路によって追跡されたキャッシュ性能メトリックに基づいて、プリフェッチリクエスト341がキャッシュ300において受け入れられるか、又は、より低いレベルのキャッシュに降格させられるかを決定する。プリフェッチリクエスト341は、キャッシュコントローラ320内の決定論理321において受信され、プリフェッチリクエスト341の受信に応じて、決定論理321は、キャッシュメモリ310内の既存のエントリの優先度に対するプリフェッチの優先度を決定する。一実施形態では、既存のエントリは、現在キャッシュメモリ310にあるエントリ、及び、キャッシュ内に配置するように指定されたエントリ(例えば、キャッシュメモリ310に未だないミスリクエストバッファに存在するエントリ)を含む。一実施形態では、相対優先度は、プリフェッチの優先度レベルと、キャッシュメモリ310内の1つ以上の既存のエントリの優先度レベルと、の間の差である。言い換えると、プリフェッチリクエストの相対優先度は、プリフェッチリクエストの優先度が対象キャッシュの閾値優先度レベルよりも高いか又はより低いかを示す。一実施形態では、キャッシュの閾値優先度レベルは、プリフェッチによる退避の候補である既存のキャッシュラインの最も低い優先度レベルに基づいて決定される。入ってくるプリフェッチの優先度が既存のキャッシュエントリの何れの優先度よりも高くない場合、プリフェッチは、次に低いレベルのキャッシュに降格させられる。
決定論理321は、キャッシュ置換ポリシー325及びモジュール322~324によって追跡される様々なメトリックに基づいて、プリフェッチリクエスト341の優先度及び既存のキャッシュラインの閾値優先度レベルを決定する。したがって、決定論理321は、何れのキャッシュラインが最も重要であり、キャッシュ300に保持されるべきであるかを決定する。
置換ポリシー325は、新しいキャッシュラインがキャッシュメモリ310に書き込まれている場合に退避するために最も低い優先度のキャッシュラインを識別するための一連の規則を定義する。例えば、最少使用頻度(LFU)置換ポリシーは、より頻繁に使用されるキャッシュラインが退避させられる前に、キャッシュ300からの退避のために最も頻繁に使用されていないキャッシュラインを指定し、最少最近使用(LRU)置換ポリシーは、より最近使用されるキャッシュラインを退避させる前に使用頻度が最も低いキャッシュラインを退避させる。一実施形態では、キャッシュは、再参照間隔予測(RRIP)置換ポリシーを実装し、これは、何れのキャッシュラインが近い将来に再利用される可能性が高いかを予測する。
したがって、決定論理321は、置換ポリシーに基づいて、メモリ310内の既存のキャッシュラインの優先度レベルを決定する。一実施形態では、再利用される可能性がより高いキャッシュラインには、より高い優先度が割り当てられる。入ってくるプリフェッチリクエストの優先度レベルが既存のキャッシュラインの優先度レベルよりも高くない場合、より高い優先度の既存のキャッシュラインの何れかの退避を回避するために、プリフェッチリクエストは、次に低いレベルのキャッシュに降格させられる。代替の実施形態では、キャッシュ置換ポリシー以外のメカニズムが、既存のキャッシュラインの相対優先度を決定するために、及び、入ってくるプリフェッチリクエストを降格させるか又は受け入れるかを決定するための基礎として、決定論理321によって使用される。
再利用の頻度又は最新性に加えて、既存のキャッシュラインの優先度も、キャッシュラインを再利用している操作のタイプに基づいて決定される。一実施形態では、キャッシュラインを要求する操作のタイプは、キャッシュラインのタグに記録される。プリフェッチリクエスト341が受信されると、決定論理321は、高い優先度の操作によって使用されるキャッシュラインに高い優先度を割り当てる。例えば、アプリケーション232のクリティカルパス内のトランスレーションルックアサイドバッファ(TLB)ウォーカー又はロード/記憶操作によって使用されるキャッシュラインは、例えば、クリティカルパス内にない操作によって使用されるキャッシュラインよりも高い優先度のレベルが与えられる。したがって、入ってくるプリフェッチは、そのような高い優先度の操作で利用されるキャッシュラインの退避を回避するために降格させられる。
キャッシュエントリメトリック323に加えて、決定論理321は、リソースメトリック324に基づいて、入ってくるプリフェッチリクエスト341を降格させるかどうかを決定する。一実施形態では、ミスリクエストバッファ331及び/又はビクティムバッファ332が各々満杯であるか、又は、占有閾値を越えて満たされている場合、決定論理321は、全てのプリフェッチを次に低いレベルのキャッシュに降格させる。代替の実施形態では、決定論理321は、全てのプリフェッチを降格させる代わりに、より高い優先度のプリフェッチリクエストのサブセットを受け入れる。
決定論理321は、プリフェッチメトリック322に基づいて、プリフェッチリクエスト341の優先度レベルを決定する。プリフェッチメトリック322は、以前のプリフェッチが正確且つ適時であったかどうかを示す。以前のプリフェッチが正確でなかったか又は適時でなかった場合、決定論理321は、入ってくるプリフェッチリクエスト341に、より低い優先度を割り当てる。一実施形態では、プリフェッチの精度及び適時性は、プリフェッチの各ソース(例えば、ハードウェアプリフェッチャ、アプリケーション命令を実行するプロセッサ等)に対して個別に追跡され、あるソースによって発行された不正確であるか又は適時ではないプリフェッチリクエストが、異なるソースから発行されたプリフェッチリクエストの優先度に影響しないようにする。決定論理321は、以前により正確且つ適時のプリフェッチを生成したソースから発信されたプリフェッチリクエストに、より高い優先度を割り当て、一方で不正確の及び/又は適時でないプリフェッチリクエストを生成したソースから発信されたプリフェッチリクエストに、より低い優先度を割り当てる。一実施形態では、決定論理321は、高い優先度の操作(例えば、クリティカルパス内での操作等)によって使用されるデータ又は命令のプリフェッチリクエストに、より高い優先度を割り当てる。
プリフェッチリクエスト341等のように、キャッシュ300において受信された各プリフェッチリクエストについて、決定論理321は、プリフェッチリクエストの優先度を既存のキャッシュラインの優先度と比較することによって、プリフェッチリクエストの相対優先度を決定する。プリフェッチリクエストが既にキャッシュメモリ310にあるキャッシュラインの何れよりも低い優先度を有する場合、決定論理321は、プリフェッチリクエスト342のコピーをより低いキャッシュレベルにリダイレクトすることによって、プリフェッチリクエスト341をより低いキャッシュレベルに降格させる。キャッシュ300が既にキャッシュ階層内の最も低いレベルのキャッシュである場合、プリフェッチリクエスト342は、より低いレベルのキャッシュにリダイレクトされる代わりに破棄される。
一実施形態では、決定論理321は、プリフェッチリクエスト342をデフォルトで階層内の次に低いレベルのキャッシュにリダイレクトする(例えば、L2キャッシュは、低い優先度のプリフェッチをL3キャッシュに降格させる)。代替の実施形態では、決定論理321は、降格させられたプリフェッチリクエストを受信するために、複数のより低いキャッシュレベルの何れかを選択する。より低いレベルのキャッシュにおいて降格させられたプリフェッチリクエスト342を受信すると、より低いレベルのキャッシュ内の別の決定論理は、同様に、それ自体のプリフェッチ、キャッシュエントリ及びリソースメトリックに基づいて、プリフェッチリクエスト342を受け入れるか、又は、リクエスト342を次に低いレベルのキャッシュに再び降格させるかを決定する。
決定論理321によって(例えば、最も低い優先度のキャッシュラインからの)受信キャッシュ300の閾値優先度よりも高い優先度を有することを決定された各プリフェッチリクエスト341について、決定論理321は、最も低い優先度のキャッシュラインを退避させ、プリフェッチリクエスト341内で指定されたようにそのメモリ310にプリフェッチされたデータを記憶することによって、プリフェッチリクエスト341を受け入れる。入ってくるプリフェッチの精度及び適時性を追跡するために、データがプリフェッチからのものであることを示すビットがタグ311に設定される。各プリフェッチソースについてプリフェッチの精度及び適時性が追跡される場合、プリフェッチリクエスト341のソースもタグ311に記録される。
図4は、一実施形態によるキャッシュメモリ310内の各キャッシュラインについてタグ311に記憶される情報を示す図である。タグ311は、とりわけ、プリフェッチ指標401と、プリフェッチソース402と、アクセス頻度403と、操作タイプ404と、を含む。プリフェッチ指標401は、関連するキャッシュラインがプリフェッチされたデータを含む場合にアサートされ、それ以外の場合は、デアサートされる単一ビットとして実装される。プリフェッチソース402は、キャッシュライン内のデータがプリフェッチされたデータである場合に、プリフェッチリクエストのソースを示し、スレッド識別子、デバイス識別子(例えば、ハードウェアプリフェッチャの場合)、及び/又は、別のキャッシュレベルのハードウェアプリフェッチャから発信されたプリフェッチのためのキャッシュレベル識別子等の情報を含むことができる。また、プリフェッチソース402は、プリフェッチリクエストがより高いキャッシュレベルから降格させられたかどうかも示す。アクセス頻度403は、関連するキャッシュライン内のデータが、キャッシュ又はキャッシュインデックスへのアクセスの期間にわたってどれくらい頻繁に要求されたかを示す。操作タイプ404は、関連するキャッシュライン内のデータを要求している操作のタイプを示す。タグ401~404は、キャッシュされたデータがアクセスされる(すなわち、書き込まれるか又は要求される)場合にキャッシュコントローラ320によって更新され、上述したように、入ってくるプリフェッチリクエスト及び既存のキャッシュラインの優先度を決定するために決定論理321によって使用される。
図5は、一実施形態によるキャッシュ階層内の異なるレベルで受信されたいくつかのプリフェッチリクエストに対して動作するプリフェッチ降格メカニズムを示している。図5は、プロセッサコア230と、L1キャッシュ201、L2キャッシュ202及びL3キャッシュ203を含むキャッシュ階層と、それらのそれぞれのキャッシュコントローラ211~213と、プリフェッチャ221~223と、を示している。
第1のプリフェッチリクエスト501は、L1キャッシュレベルでハードウェアプリフェッチャ221によって生成される。プリフェッチリクエスト501は、L1キャッシュ201を対象とし、キャッシュコントローラ211において受信される。キャッシュコントローラ211の決定論理は、プリフェッチリクエスト501がその既存のキャッシュラインのうち少なくとも1つよりも高い優先度を有することを決定し、したがって、プリフェッチされたデータを受け入れるために最も低い優先度のキャッシュラインを退避させる。
プリフェッチリクエスト502は、プロセッサコア230がアプリケーション232のプリフェッチ命令を実行した結果として、プロセッサコア230から発行される。L1キャッシュレベル201において、キャッシュコントローラ211内の決定論理は、プリフッチリクエスト502の優先度がキャッシュ201内の最も低い優先度のキャッシュラインの優先度よりも低いことを決定し、したがってプリフェッチ502をL2キャッシュレベル202に降格させる。あるいは、高いミス率又は他の理由のためにL1キャッシュ201のリソースが過剰に利用されている場合、プリフェッチ502をL2キャッシュレベル202に降格させることができる。L2キャッシュコントローラ212の決定論理は、プリフェッチリクエスト502がL2キャッシュ202内の最も低い優先度のキャッシュラインよりも相対的に高い優先度を有し、プリフェッチリクエスト502がL2キャッシュ202において受け入れられることを決定する。
一実施形態では、特定のキャッシュレベルのハードウェアプリフェッチャは、階層内のより低いキャッシュレベルを対象とするプリフェッチリクエストを生成することができる。したがって、L1プリフェッチャ221は、L2キャッシュレベル202に向けられたプリフェッチリクエスト503を生成する。キャッシュコントローラ212の決定論理は、プリフェッチリクエスト503が、L2キャッシュ202内の既存のキャッシュラインの何れよりも低い優先度を有することを決定する。それに応じて、決定論理は、プリフェッチリクエスト503を次に低いキャッシュレベルL3 203に降格させる。L3キャッシュレベル203において、キャッシュコントローラ213内の決定論理は、それ自体のキャッシュ性能メトリックに基づいて、プリフェッチリクエスト503の優先度もその既存のキャッシュラインの何れよりも低いことを決定する。L3キャッシュ203は階層内で最も低いキャッシュレベルであるため、プリフェッチリクエスト503は破棄される。
一実施形態では、L3キャッシュコントローラ213は、プリフェッチリクエスト503が破棄されたことを示す指標504を、破棄されたプリフェッチ503のデータが存在するメインメモリ106のメモリコントローラ520にさらに送信する。指標504を受信したことに応じて、メモリコントローラ520は、試行されたプリフェッチデータに対する差し迫った要求リクエストを見越して、破棄されたプリフェッチ503によって指定されたプリフェッチデータを読み取る準備をする。例えば、メモリコントローラ520は、データを含むメモリページを開くことによってデータを含むメモリへのアクセスを初期化し、データが要求された場合に、より低い遅延でデータを読み取ることができるようにする。
図6は、一実施形態によるプリフェッチプロセス600を示すフロー図である。プリフェッチプロセス600は、キャッシュ201~203(図3ではキャッシュ300として表現されている)、キャッシュコントローラ211~213(すなわち、キャッシュコントローラ320)、プロセッサコア230、メモリコントローラ520等を含むコンピューティングシステム100内の構成要素によって実行される。ブロック601において、キャッシュコントローラ320は、タグ311を更新し、プリフェッチメトリック322、キャッシュエントリメトリック323及びリソースメトリック324等のキャッシュ性能メトリックを記録する。メトリックは、タグ311及び/又はキャッシュコントローラ320内のレジスタ及びカウンタに記録される。
キャッシュ300のキャッシュコントローラ320は、ブロック603においてプリフェッチリクエスト341を受信する。プリフェッチリクエスト341は、アプリケーション232内の明示的なプリフェッチ命令に従って、キャッシュ300のハードウェアプリフェッチャ、より高いレベルのキャッシュのハードウェアプリフェッチャ、又は、プロセッサ230から受信される。
ブロック605において、決定論理321は、使用済みのプリフェッチされたエントリに対する未使用のプリフェッチされたエントリの割合を含む、プリフェッチ精度メトリック322のうち1つ以上に基づいて、プリフェッチリクエスト341の優先度を決定する。未使用のプリフェッチされたエントリは、要求される前にキャッシュ300から退避させられたプリフェッチされたデータを含み、使用済みのプリフェッチされたエントリは、キャッシュ300から要求されたプリフェッチされたデータを含む。決定論理321は、使用済みのプリフェッチされたエントリのより高い割合に対応するプリフェッチリクエスト341により高い優先度を割り当て、これは、プリフェッチが正確且つ適時であることを示す。一実施形態では、プリフェッチの精度及び適時性は、同じレベル又はより高いレベルのキャッシュ(降格させられたプリフェッチを含む)のハードウェアプリフェッチャ、アプリケーション等のプリフェッチリクエストの各ソースについて独立して追跡される。
ブロック607において、決定論理321は、キャッシュエントリメトリック323及び置換ポリシー325に基づいて、キャッシュ300の閾値優先度を決定する。一実施形態では、キャッシュエントリの優先度レベルは、エントリのアクセス頻度、エントリのアクセス最新性、エントリに関連付けられている操作タイプ、及び/又は、置換ポリシー325内で定義される他の要因に対応して増加される。
ブロック609において、キャッシュ300のリソースが過剰に利用されていない場合、プロセス600はブロック611で続行する。ブロック611において、決定論理321は、キャッシュ性能メトリックに基づいて、プリフェッチリクエスト341の相対優先度を決定する。一実施形態では、相対優先度は、プリフェッチの優先度レベルと、対象キャッシュレベルの閾値優先度と、の間の差である。プリフェッチ優先度がキャッシュ閾値優先度よりも高い場合(例えば、キャッシュ300内の最も低い優先度のエントリ)、ブロック613において最も低い優先度のキャッシュエントリが退避させられ、プリフェッチリクエスト341のプリフェッチデータがキャッシュメモリに記憶される。
タグ311はブロック601において更新され、更新されたキャッシュ性能メトリックが記録される。例えば、プリフェッチデータを含む新しいキャッシュラインが書き込まれたため、データがプリフェッチされたデータであることを示すために、新しいキャッシュラインのタグにビットがアサートされる。別の例として、ブロック613において退避させられたデータが未使用のプリフェッチされたデータであった場合、プリフェッチ精度メトリック(例えば、未使用のプリフェッチされたエントリに対する使用済みの比率)が、退避させられたデータのプリフェッチを最初にリクエストしたソースに対して更新される。さらに、前回の更新601以降に以前にプリフェッチされた任意のデータが要求された場合、又は、任意の未使用のプリフェッチされたデータが退避させられた場合、プリフェッチ精度メトリックが更新される。ブロック603~615の動作によって、より高い優先度のプリフェッチリクエストである(すなわち、キャッシュ閾値優先度よりも高い優先度を有する)、キャッシュコントローラによって受信されたプリフェッチリクエストのサブセットが受け入れられ、プリフェッチされたデータをキャッシュメモリ300に記憶させる。
ブロック609において、キャッシュリソースが過剰に利用されている場合、プロセス600はブロック617において続行する。キャッシュリソースの過剰利用は、ビクティムバッファ占有メトリック及びミスリクエストバッファ占有メトリックを含むキャッシュ性能メトリックによって示される。ビクティムバッファ占有メトリックは、対象キャッシュのビクティムバッファ内の使用済み容量の量を表す。ミスリクエストバッファ占有メトリックは、対象キャッシュのミスリクエストバッファ内の使用済み容量の量を表す。一実施形態では、ビクティムバッファ占有メトリック又はミスリクエストバッファ占有メトリックの何れかがそれぞれの閾値を超えると、プロセス600がブロック609からブロック617へと続行されるように、キャッシュリソースが過剰に利用されているとみなされる。
ブロック611において、プリフェッチ優先度がキャッシュ閾値優先度より高くない場合にも、ブロック617に達する。これは、既にキャッシュメモリ310にある全てのキャッシュラインが、プリフェッチリクエスト341よりも高い優先度を有する場合に当てはまる。この場合、既存のより高い優先度のキャッシュラインは退避させられず、代わりに相対的により低い優先度のプリフェッチが降格させられる。
ブロック617において、1つ以上のより低いキャッシュレベルが対象キャッシュ300のキャッシュ階層に存在する場合、決定論理321は、ブロック619においてより低いキャッシュレベルのうち1つを選択して、降格させられたプリフェッチリクエスト342を受信する。一実施形態では、決定論理321は、次に低いキャッシュレベルを自動的に選択する(例えば、L1キャッシュ201内の決定論理は、降格させられたプリフェッチリクエストを受信するためにL2キャッシュ202を選択する)。代替の実施形態では、決定論理は、必ずしもすぐ次に低いキャッシュを選択しない(例えば、L1キャッシュ201は、降格させられたプリフェッチリクエストを受信するためにL3キャッシュ203を選択する)。ブロック621において、決定論理321は、プリフェッチリクエスト342を選択されたより低いレベルのキャッシュにリダイレクトすることによって、プリフェッチリクエスト342を降格させる。ブロック609及び617~621の動作によって、キャッシュリソースが過剰に利用されている間にキャッシュ300を対象とするプリフェッチリクエストは、より低いレベルのキャッシュに降格させられる。
代替の実施形態では、キャッシュリソース利用率レベルを使用して、ブロック607においてキャッシュの閾値優先度レベルを設定し、次にプロセス600は、ブロック607からブロック611へと続行する。ブロック607における決定論理321は、キャッシュリソースの利用率の増加に比例して既存のキャッシュエントリの閾値優先度レベルを増加させ、したがって、リソース利用率が高い場合にブロック611を介してキャッシュ300に受け入れられるプリフェッチの数を制限する。
ブロック603において、降格させられたプリフェッチリクエスト342は、より低いレベルのキャッシュにおいて受信される。より低いレベルのキャッシュも同様に、受信したプリフェッチリクエストに対してプロセス600を実行し、それ自体のキャッシュ性能メトリックに従って決定された優先度に基づいてプリフェッチリクエストを受け入れるか又は降格させる。つまり、以前に降格させられたプリフェッチリクエストが、より低いレベルのキャッシュのキャッシュ閾値優先度よりも高い優先度を有する場合、ブロック615において提供されるように、プリフェッチデータは、低い優先度のプリフェッチリクエストに従ってより低いレベルのキャッシュに受け入れられる。
低い優先度のプリフェッチリクエスト(つまり、キャッシュ閾値優先度よりも低い優先度を有する)は、次に低いキャッシュレベルに再び降格させられる。したがって、プリフェッチは、受け入れられるか又は破棄されるまでキャッシュレベルを連続的に下げることで複数回降格させられ得る。
ブロック617において、階層内により低いレベルのキャッシュが存在しない場合(すなわち、プリフェッチリクエスト341が最初に最も低いキャッシュレベルを対象としたか、又は降格させられた場合)、プロセス600はブロック623において続行する。ブロック623において、プリフェッチリクエストは、最も低いキャッシュレベル(例えば、L3キャッシュ203)で破棄され342、データは、リクエストに基づいてプリフェッチされない。ブロック625において、プリフェッチリクエスト342を破棄する決定論理321は、破棄されたプリフェッチをメモリコントローラ520に示す。メモリコントローラ520は、例えば、627において提供されるように、アクセスを開始するためにメモリページを開くことによって、破棄されたプリフェッチリクエストで指定されたデータを読み取る準備をする。ブロック627から、プロセス600はブロック601に戻ってタグを更新し、そして性能メトリックをキャッシュする。
キャッシュ300の所定のレベルで、プリフェッチプロセス600は、キャッシュ300において受信される複数のプリフェッチリクエストの各々に対して繰り返される。したがって、キャッシュ閾値優先度よりも低い優先度を有するプリフェッチリクエストのサブセットは、1つ以上のより低いキャッシュレベルに降格させられ、最も低いキャッシュレベルで破棄される可能性がある。キャッシュ閾値優先度よりも高い優先度を有するプリフェッチリクエストのサブセットは、キャッシュ300において受け入れられ、データは、受け入れられた要求の各々に従ってキャッシュにプリフェッチされる。一実施形態では、キャッシュ300が過剰に利用されている間に受信されたプリフェッチリクエストは、より低いレベルのキャッシュに降格させられるか、又は、キャッシュ300が階層内の最も低いキャッシュレベルである場合は破棄される。あるいは、キャッシュリソース利用率メトリックを使用して、キャッシュ閾値優先度レベルを決定する。
方法は、対象キャッシュのキャッシュ性能メトリックの第1のセットを記録することと、対象キャッシュにおいて受信された複数のプリフェッチリクエストの各プリフェッチリクエストについて、キャッシュ性能メトリックの第1のセットに基づいて、対象キャッシュの閾値優先度に対するプリフェッチリクエストの相対優先度を決定することと、複数のプリフェッチリクエストの第1のサブセット内の各低い優先度のプリフェッチリクエストについて、低い優先度のプリフェッチリクエストの優先度が対象キャッシュの閾値優先度レベルよりも低いことを決定することに応じて、低い優先度のプリフェッチリクエストを第1のより低いレベルのキャッシュにリダイレクトすることと、複数のプリフェッチリクエストの第2のサブセット内の各高い優先度のプリフェッチリクエストについて、高い優先度のプリフェッチリクエストの優先度が対象キャッシュの閾値優先度レベルよりも高いことを決定することに応じて、高い優先度のプリフェッチリクエストに従って、対象キャッシュにプリフェッチデータを記憶することと、を含む。
また、方法は、低い優先度のプリフェッチリクエストの各々について、対象キャッシュのキャッシュ階層から別のキャッシュを第1のより低いレベルのキャッシュとして選択することであって、第1のより低いレベルのキャッシュが、対象キャッシュよりも大きい容量を有する、ことと、低い優先度のプリフェッチリクエストに従って、第1のより低いレベルのキャッシュにプリフェッチデータを記憶することと、を含む。
また、方法は、第1のサブセットの1つ以上のプリフェッチリクエストについて、第1のより低いレベルのキャッシュのキャッシュ性能メトリックの第2のセットに基づいて、第1のより低いレベルのキャッシュから第2のより低いレベルのキャッシュに1つ以上のプリフェッチリクエストをリダイレクトすることであって、第2のより低いレベルのキャッシュが、第1のより低いレベルのキャッシュよりも高い容量を有する、ことを含む。
また、方法は、第1のサブセット内の1つ以上のプリフェッチリクエストについて、対象キャッシュのキャッシュ階層内の最も低いレベルのキャッシュに1つ以上のプリフェッチリクエストをリダイレクトすることと、1つ以上のプリフェッチリクエストの優先度が最も低いレベルのキャッシュの閾値優先度レベルよりも低いことを決定することに応じて、1つ以上のプリフェッチリクエストを破棄することと、を含む。
また、方法は、複数のプリフェッチリクエストの各プリフェッチリクエストについて、プリフェッチ精度メトリックに基づいてプリフェッチリクエストの優先度を決定することを含む。プリフェッチ精度メトリックは、対象キャッシュのプリフェッチされたエントリのセットについて、使用済みのプリフェッチされたエントリに対する未使用のプリフェッチされたエントリの割合に基づいて決定される。
また、方法は、複数のプリフェッチリクエストの各プリフェッチリクエストについて、プリフェッチリクエストのソースに基づいて、複数のプリフェッチリクエストの優先度を決定することを含む。ソースは、ハードウェアプリフェッチャ及びユーザアプリケーションのうち一方を含む。
また、方法は、キャッシュ置換ポリシーと、対象キャッシュ内の複数のキャッシュエントリの各キャッシュエントリについての、キャッシュエントリのアクセス頻度及びキャッシュエントリに関連付けられている操作タイプと、に基づいて対象キャッシュの閾値優先度レベルを決定することを含む。
方法では、キャッシュ性能メトリックの第1のセットは、対象キャッシュのビクティムバッファに対するビクティムバッファ占有メトリックと、対象キャッシュのミスリクエストバッファに対するミスリクエストバッファ占有メトリックと、を含む。
コンピューティングデバイスは、対象キャッシュのキャッシュ性能メトリックの第1のセットを記録するための監視回路と、監視回路に結合された第1の決定論理回路と、を含む。第1の決定論理回路は、対象キャッシュにおいて受信された複数のプリフェッチリクエストの各プリフェッチリクエストについて、キャッシュ性能メトリックの第1のセットに基づいて、対象キャッシュの閾値優先度に対するプリフェッチリクエストの相対優先度を決定することと、複数のプリフェッチリクエストの第1のサブセット内の各低い優先度のプリフェッチリクエストについて、低い優先度のプリフェッチリクエストの優先度が対象キャッシュの閾値優先度レベルよりも低いことを決定することに応じて、低い優先度のプリフェッチリクエストを第1のより低いレベルのキャッシュにリダイレクトすることと、複数のプリフェッチリクエストの第2のサブセット内の各高い優先度のプリフェッチリクエストについて、高い優先度のプリフェッチリクエストの優先度が対象キャッシュの閾値優先度レベルよりも高いことを決定することに応じて、高い優先度のプリフェッチリクエストに従って、対象キャッシュにプリフェッチデータを記憶することと、を行う。
コンピューティングデバイスでは、第1の決定論理回路は、さらに、低い優先度のプリフェッチリクエストの各々について、対象キャッシュのキャッシュ階層から別のキャッシュを第1のより低いレベルのキャッシュとして選択する。第1のより低いレベルのキャッシュは、対象キャッシュよりも大きい容量を有する。第1のより低いレベルのキャッシュは、低い優先度のプリフェッチリクエストの各々について、低い優先度のプリフェッチリクエストに従ってプリフェッチデータを記憶する。
また、コンピューティングデバイスは、第1のより低いレベルのキャッシュ内の第2の決定論理回路と、第2の決定論理回路に結合され、第1のより低いレベルのキャッシュよりも高い容量を有する第2のより低いレベルのキャッシュと、を含む。第2の決定論理回路は、第1のサブセットの1つ以上のプリフェッチリクエストについて、第1のより低いレベルのキャッシュのキャッシュ性能メトリックの第2のセットに基づいて、第1のより低いレベルのキャッシュから第2のより低いレベルのキャッシュに1つ以上のプリフェッチリクエストをリダイレクトする。
また、コンピューティングデバイスは、対象キャッシュのキャッシュ階層内の最も低いレベルのキャッシュと、第1のサブセット内の1つ以上のプリフェッチリクエストについて、最も低いレベルのキャッシュに1つ以上のプリフェッチリクエストをリダイレクトする第2の決定論理回路と、1つ以上のプリフェッチリクエストの優先度が、最も低いレベルのキャッシュの閾値優先度レベルよりも低いことを決定することに応じて、1つ以上のプリフェッチリクエストを破棄する最も低いレベルのキャッシュ内の第3の決定論理回路と、を含む。
また、コンピューティングデバイスは、第1の決定論理に結合され、且つ、対象キャッシュのプリフェッチされたエントリのセットについて、使用済みのプリフェッチされたエントリに対する未使用のプリフェッチされたエントリの割合に基づいて、プリフェッチ精度メトリックを決定するプリフェッチメトリックモジュールを含む。第1の決定論理は、さらに、複数のプリフェッチリクエストの各プリフェッチリクエストについて、プリフェッチ精度メトリックに基づいて、プリフェッチリクエストの優先度を決定する。
また、コンピューティングデバイスは、アプリケーションの実行命令に基づいて複数のプリフェッチリクエストのうち1つ以上を生成するハードウェアプリフェッチャ及びプロセッサを含む。決定論理は、さらに、複数のプリフェッチリクエストの各プリフェッチリクエストについて、プリフェッチリクエストのソースに基づいて、プリフェッチリクエストの優先度を決定する。ソースは、ハードウェアプリフェッチャ及びプロセッサのうち一方を含む。
また、コンピューティングデバイスは、対象キャッシュ内の複数のキャッシュエントリの各キャッシュエントリについて、キャッシュエントリのアクセス頻度及びキャッシュエントリに関連する操作タイプを含むキャッシュエントリメトリックを記録するキャッシュエントリメトリックモジュールを備える。決定論理は、さらに、キャッシュ置換ポリシー及びキャッシュエントリメトリックに基づいて、閾値優先度レベルを決定する。
コンピューティングシステムは、アプリケーションを実行する処理ユニットと、処理ユニットに結合されたキャッシュ階層内の複数のキャッシュと、複数のキャッシュに結合されたキャッシュコントローラと、を含む。キャッシュコントローラは、対象キャッシュのキャッシュ性能メトリックの第1のセットを記録する監視回路と、監視回路に結合された決定論理回路と、を含む。決定論理回路は、対象キャッシュにおいて受信された複数のプリフェッチリクエストの各プリフェッチリクエストについて、キャッシュ性能メトリックの第1のセットに基づいて、対象キャッシュの閾値優先度に対するプリフェッチリクエストの相対優先度を決定することと、複数のプリフェッチリクエストの第1のサブセット内の各低い優先度のプリフェッチリクエストについて、低い優先度のプリフェッチリクエストの優先度が対象キャッシュの閾値優先度レベルよりも低いことを決定することに応じて、低い優先度のプリフェッチリクエストを第1のより低いレベルのキャッシュにリダイレクトすることと、複数のプリフェッチリクエストの第2のサブセット内の各高い優先度のプリフェッチリクエストについて、高い優先度のプリフェッチリクエストの優先度が対象キャッシュの閾値優先度レベルよりも高いことを決定することに応じて、高い優先度のプリフェッチリクエストに従って、対象キャッシュにプリフェッチデータを記憶することと、を行う。
また、コンピューティングシステムは、キャッシュコントローラと結合されたメモリコントローラを含む。決定論理回路は、さらに、第1のサブセット内の1つ以上のプリフェッチリクエストについて、対象キャッシュのキャッシュ階層内の最も低いレベルのキャッシュに1つ以上のプリフェッチリクエストをリダイレクトし、1つ以上のプリフェッチリクエストの優先度が、最も低いレベルのキャッシュの閾値優先度レベルよりも低いことを決定することに応じて、1つ以上のプリフェッチリクエストを破棄し、プリフェッチリクエストの指標をメモリコントローラに送信する。メモリコントローラは、指標に応じて、プリフェッチデータを含むメモリへのアクセスを初期化する。
また、コンピューティングシステムは、アプリケーションのための分岐予測の実行、及び、アプリケーションによる以前のメモリアクセスのパターンに基づくメモリアクセスの予測、に基づいて、アプリケーションの複数のプリフェッチリクエストのうち1つ以上を生成する、キャッシュ階層に結合されたハードウェアプリフェッチャを含む。
コンピューティングシステムでは、処理ユニットは、さらに、アプリケーションの命令に従って、複数のプリフェッチリクエストのうち1つ以上をさらに生成する。
また、コンピューティングシステムは、キャッシュコントローラを含む複数のキャッシュコントローラを含む。複数のキャッシュコントローラの各々は、キャッシュ階層内の複数のキャッシュのうち1つを制御し、第1のサブセット内の低い優先度のプリフェッチリクエストのうちの1つ以上を、複数のキャッシュのうちの関連する1つよりも高い容量を有するキャッシュ階層内の別のキャッシュにリダイレクトする。
本明細書で使用される場合、「~に結合される」という用語は、直接的に、あるいは1つ以上の介在する構成要素を介して間接的に結合されることを意味し得る。本明細書に記載された様々なバスを通じて提供される信号は、何れも他の信号と時分割多重化され、1つ以上の共通のバスを通じて提供され得る。加えて、回路部品又はブロックの間の相互接続は、バス又は単一信号線として示され得る。バスの各々は、代替的には1つ以上の単一信号線であってもよく、単一信号線のそれぞれは、代替的にはバスであり得る。
特定の実施形態は、非一時的なコンピュータ可読記憶媒体に記憶された命令を含み得るコンピュータプログラム製品として実装され得る。それらの命令は、説明された動作を実行するように汎用プロセッサ又は特殊目的プロセッサをプログラムするために使用されてもよい。コンピュータ可読媒体は、マシン(例えば、コンピュータ)によって読み取り可能な形式(例えば、ソフトウェア、処理アプリケーション)で情報を記憶又は送信するための任意のメカニズムを含む。非一時的なコンピュータ可読記憶媒体は、磁気記憶媒体(例えば、フロッピー(登録商標)ディスケット)、光学記憶媒体(例えば、CD-ROM)、光磁気記憶媒体、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラム可能メモリ(例えば、EPROM及びEEPROM)、フラッシュメモリ、又は電子命令を記憶するのに適した別のタイプの媒体を含み得るが、これらに限定されない。
加えて、いくつかの実施形態は、コンピュータ可読媒体が2つ以上のコンピュータシステムに記憶され、及び/又は、それらによって実行される分散コンピューティング環境において実施され得る。また、コンピュータシステム間で転送される情報は、コンピュータシステムを接続する伝送媒体にわたってプル又はプッシュされ得る。
概して、コンピュータ可読記憶媒体上で運ばれるコンピューティングシステム100及び/又はその各部を表すデータ構造は、プログラムによって読み取り、コンピューティングシステム100を含むハードウェアを製造するために直接的又は間接的に使用することができるデータベース又は他のデータ構造であり得る。例えば、データ構造は、Verilog又はVHDL等の高水準設計言語(HDL)による、ハードウェア機能の挙動レベルの記述又はレジスタ転送レベル(RTL)の記述であり得る。記述は合成ツールによって読み取られもよく、合成ツールは、記述を合成して、合成ライブラリからゲートのリストを含むネットリストを生成し得る。ネットリストはゲートのセットを含み、これらもまた、コンピューティングシステム100を含むハードウェアの機能を表す。次に、ネットリストは配置及び経路設定されて、マスクに適用される幾何学形状を記述するデータセットを生成得る。次に、マスクを様々な半導体製作工程において使用して、コンピューティングシステム100に対応する1つ以上の半導体回路を生成し得る。あるいは、コンピュータ可読記憶媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無によらない)若しくはデータセット、又は、グラフィックデータシステム(GDS)IIデータであり得る。
本明細書における方法(複数可)の動作は、特定の順序で図示及び説明されてきたが、各々の方法の動作の順序は、特定の動作が逆の順序で実行され得るように、又は、特定の動作が少なくとも部分的に他の動作と同時に実行され得るように変更され得る。他の実施形態では、個別の動作の命令又はサブ動作は、断続的及び/又は交互的であり得る。
上記の明細書では、その特定の例示的な実施形態を参照して実施形態が説明されてきた。しかしながら、添付の特許請求の範囲に記載される実施形態のより広い範囲から逸脱することなく、それらに対して様々な修正及び変更が行われ得ることは明白である。したがって、本明細書及び図面は、限定的な意味ではなく、例示的な意味のものと考えられるべきである。

Claims (20)

  1. 対象キャッシュのキャッシュ性能メトリックの第1のセットを記録することと、
    前期対象キャッシュにおいて受信した複数のプリフェッチリクエストの各プリフェッチリクエストについて、前記キャッシュ性能メトリックの第1のセットに基づいて、前記対象キャッシュの閾値優先度レベルに対する前記プリフェッチリクエストの相対優先度を決定することと、
    前記閾値優先度レベルを超えない優先度を有する前記複数のプリフェッチリクエストの第1のサブセット内の各低い優先度のプリフェッチリクエストについて、前記低い優先度のプリフェッチリクエストが前記閾値優先度レベルを超えないことを決定したことに応じて、第1のより低いレベルのキャッシュに前記低い優先度のプリフェッチリクエストをリダイレクトすることと、
    前記閾値優先度レベルを超える優先度を有する前記複数のプリフェッチリクエストの第2のサブセット内の各高い優先度のプリフェッチリクエストについて、前記高い優先度のプリフェッチリクエストの前記優先度が前記閾値優先度レベルを超えることを決定したことに応じて、前記高い優先度のプリフェッチリクエストに従って、前記対象キャッシュにプリフェッチデータを記憶することと、を含む、
    方法。
  2. 前記低い優先度のプリフェッチリクエストの各々について、
    前記対象キャッシュのキャッシュ階層から別のキャッシュを前記第1のより低いレベルのキャッシュとして選択することであって、前記第1のより低いレベルのキャッシュが、前記対象キャッシュよりも大きい容量を有する、ことと、
    前記低い優先度のプリフェッチリクエストに従って、前記第1のより低いレベルのキャッシュにプリフェッチデータを記憶することと、をさらに含む、
    請求項1の方法。
  3. 前記第1のサブセットの1つ以上のプリフェッチリクエストについて、前記第1のより低いレベルのキャッシュのキャッシュ性能メトリックの第2のセットに基づいて、前記第1のより低いレベルのキャッシュから第2のより低いレベルのキャッシュに前記1つ以上のプリフェッチリクエストをリダイレクトすることであって、前記第2のより低いレベルのキャッシュは、前記第1のより低いレベルのキャッシュよりも高い容量を有する、ことをさらに含む、
    請求項1の方法。
  4. 前記第1のサブセット内の1つ以上のプリフェッチリクエストについて、
    前記対象キャッシュの前記キャッシュ階層内の最も低いレベルのキャッシュに前記1つ以上のプリフェッチリクエストをリダイレクトすることと、
    前記1つ以上のプリフェッチリクエストの前記優先度が前記最も低いレベルのキャッシュの閾値優先度レベルよりも低いことを決定したことに応じて、前記1つ以上のプリフェッチリクエストを破棄することと、をさらに含む、
    請求項1の方法。
  5. 前記複数のプリフェッチリクエストの各プリフェッチリクエストについて、プリフェッチ精度メトリックに基づいて、前記プリフェッチリクエストの優先度を決定することであって、前記プリフェッチ精度メトリックは、前記対象キャッシュのプリフェッチされたエントリのセットについて、使用済みのプリフェッチされたエントリに対する未使用のプリフェッチされたエントリの割合に基づいて決定される、ことをさらに含む、
    請求項1の方法。
  6. 前記複数のプリフェッチリクエストの各プリフェッチリクエストについて、前記プリフェッチリクエストのソースに基づいて前記プリフェッチリクエストの優先度を決定することであって、前記ソースがハードウェアプリフェッチャ及びユーザアプリケーションのうち一方を含む、ことをさらに含む、
    請求項1の方法。
  7. キャッシュ置換ポリシーと、
    前記対象キャッシュ内の複数のキャッシュエントリの各キャッシュエントリについての、前記キャッシュエントリのアクセス頻度、及び、前記キャッシュエントリに関連付けられている操作タイプと、
    に基づいて、前記対象キャッシュの前記閾値優先度レベルを決定することをさらに含む、
    請求項1の方法。
  8. 前記キャッシュ性能メトリックの第1のセットは、前記対象キャッシュのビクティムバッファのビクティムバッファ占有メトリックと、前記対象キャッシュのミスリクエストバッファのミスリクエストバッファ占有メトリックと、を含む、
    請求項1の方法。
  9. 対象キャッシュのキャッシュ性能メトリックの第1のセットを記録するように構成された監視回路と、
    前記監視回路に結合された第1の決定論理回路と、
    を備えるコンピューティングデバイスであって、
    第1の決定論理回路は、
    前期対象キャッシュにおいて受信した複数のプリフェッチリクエストの各プリフェッチリクエストについて、前記キャッシュ性能メトリックの第1のセットに基づいて、前記対象キャッシュの閾値優先度レベルに対する前記プリフェッチリクエストの相対優先度を決定することと、
    前記閾値優先度レベルを超えない優先度を有する前記複数のプリフェッチリクエストの第1のサブセット内の各低い優先度のプリフェッチリクエストについて、前記低い優先度のプリフェッチリクエストが前記閾値優先度レベルを超えないことを決定したことに応じて、第1のより低いレベルのキャッシュに前記低い優先度のプリフェッチリクエストをリダイレクトすることと、
    前記閾値優先度レベルを超える優先度を有する前記複数のプリフェッチリクエストの第2のサブセット内の各高い優先度のプリフェッチリクエストについて、前記高い優先度のプリフェッチリクエストの前記優先度が前記閾値優先度レベルを超えることを決定したことに応じて、前記高い優先度のプリフェッチリクエストに従って、前記対象キャッシュにプリフェッチデータを記憶することと、
    を行うように構成されている、
    コンピューティングデバイス。
  10. 前記第1の決定論理回路は、前記低い優先度のプリフェッチリクエストの各々について、前記対象キャッシュのキャッシュ階層から別のキャッシュを前記第1のより低いレベルのキャッシュとして選択するようにさらに構成されており、
    前記第1のより低いレベルのキャッシュは、前記対象キャッシュよりも大きな容量を有し、
    前記第1のより低いレベルのキャッシュは、前記低い優先度のプリフェッチリクエストの各々について、前記低い優先度のプリフェッチリクエストに従ってプリフェッチデータを記憶するように構成されている、
    請求項9のコンピューティングデバイス。
  11. 前記第1のより低いレベルのキャッシュ内の第2の決定論理回路と、
    前記第2の決定論理回路に結合されており、前記第1のより低いレベルキャッシュよりも高い能力を有する第2のより低いレベルキャッシュと、をさらに備え、
    前記第2の決定論理回路は、前記第1のサブセットの1つ以上のプリフェッチリクエストについて、前記第1のより低いレベルのキャッシュのキャッシュ性能メトリックの第2のセットに基づいて、前記第1のより低いレベルのキャッシュから前記第2のより低いレベルのキャッシュに前記1つ以上のプリフェッチリクエストをリダイレクトするように構成されている、
    請求項9のコンピューティングデバイス。
  12. 前記対象キャッシュの前記キャッシュ階層内の最も低いレベルのキャッシュと、
    前記第1のサブセット内の1つ以上のプリフェッチリクエストについて、前記最も低いレベルのキャッシュに前記1つ以上のプリフェッチリクエストをリダイレクトするように構成された第2の決定論理回路と、
    前記1つ以上のプリフェッチリクエストの前記優先度が前記最も低いレベルのキャッシュの閾値優先度レベルよりも低いことを決定したことに応じて、前記1つ以上のプリフェッチリクエストを破棄するように構成された前記最も低いレベルのキャッシュ内の第3の決定論理回路と、をさらに備える、
    請求項9のコンピューティングデバイス。
  13. 前記第1の決定論理に結合されており、前記対象キャッシュのプリフェッチされたエントリのセットについて、使用済みのプリフェッチされたエントリに対する未使用のプリフェッチされたエントリの割合に基づいて、プリフェッチ精度メトリックを決定するように構成されたプリフェッチメトリックモジュールをさらに備え、
    前記第1の決定論理は、前記複数のプリフェッチリクエストの各プリフェッチリクエストについて、前記プリフェッチ精度メトリックに基づいて、前記プリフェッチリクエストの優先度を決定するようにさらに構成されている、
    請求項9のコンピューティングデバイス。
  14. ハードウェアプリフェッチャと、
    アプリケーションの実行命令に基づいて、前記複数のプリフェッチリクエストのうち1つ以上を生成するように構成されたプロセッサであって、前記決定論理は、前記複数のプリフェッチリクエストの各プリフェッチリクエストについて、前記プリフェッチリクエストのソースに基づいて前記プリフェッチリクエストの優先度を決定するようにさらに構成されており、前記ソースは、前記ハードウェアプリフェッチャ及び前記プロセッサのうち一方を備える、プロセッサと、をさらに備える、
    請求項9のコンピューティングデバイス。
  15. 前記対象キャッシュ内の複数のキャッシュエントリの各キャッシュエントリについて、前記キャッシュエントリのアクセス頻度と、前記キャッシュエントリに関連付けられている操作タイプと、を含むキャッシュエントリメトリックを記録するように構成されたキャッシュエントリメトリックモジュールをさらに備え、
    前記決定論理は、キャッシュ置換ポリシー及び前記キャッシュエントリメトリックに基づいて、前記閾値優先度レベルを決定するようにさらに構成されている、
    請求項9のコンピューティングデバイス。
  16. アプリケーションを実行するように構成された処理ユニットと、
    前記処理ユニットに結合されたキャッシュ階層内の複数のキャッシュと、
    前記複数のキャッシュに結合されたキャッシュコントローラと、
    を備えるコンピューティングシステムであって、
    前記キャッシュコントローラは、
    対象キャッシュのキャッシュ性能メトリックの第1のセットを記録するように構成された監視回路と、
    前記監視回路に結合された決定論理回路と、を備え、
    前記決定論理回路は、
    前期対象キャッシュにおいて受信した複数のプリフェッチリクエストの各プリフェッチリクエストについて、前記キャッシュ性能メトリックの第1のセットに基づいて、前記対象キャッシュの閾値優先度レベルに対する前記プリフェッチリクエストの相対優先度を決定することと、
    前記閾値優先度レベルを超えない優先度を有する前記複数のプリフェッチリクエストの第1のサブセット内の各低い優先度のプリフェッチリクエストについて、前記低い優先度のプリフェッチリクエストが前記閾値優先度レベルを超えないことを決定したことに応じて、第1のより低いレベルのキャッシュに前記低い優先度のプリフェッチリクエストをリダイレクトすることと、
    前記閾値優先度レベルを超える優先度を有する前記複数のプリフェッチリクエストの第2のサブセット内の各高い優先度のプリフェッチリクエストについて、前記高い優先度のプリフェッチリクエストの前記優先度が前記閾値優先度レベルを超えることを決定したことに応じて、前記高い優先度のプリフェッチリクエストに従って、前記対象キャッシュにプリフェッチデータを記憶することと、
    を行うように構成されている、
    コンピューティングシステム。
  17. 前記キャッシュコントローラに結合されたメモリコントローラをさらに備え、
    前記決定論理回路は、
    前記第1のサブセット内の1つ以上のプリフェッチリクエストについて、前記対象キャッシュの前記キャッシュ階層内の最も低いレベルのキャッシュに前記1つ以上のプリフェッチリクエストをリダイレクトすることと、
    前記1つ以上のプリフェッチリクエストの前記優先度が前記最も低いレベルのキャッシュの閾値優先度レベルよりも低いことを決定したことに応じて、前記1つ以上のプリフェッチリクエストを破棄することと、
    前記プリフェッチリクエストの指標をメモリコントローラに送信することと、
    を行うようにさらに構成されており、
    前記メモリコントローラは、前記指標に応じて、前記プリフェッチデータを含む前記メモリのアクセスを初期化するように構成されている、
    請求項16のコンピューティングシステム。
  18. 前記キャッシュ階層に結合されており、前記アプリケーションの分岐予測を実行することと、前記アプリケーションによる以前のメモリアクセスのパターンに基づいてメモリアクセスを予測することと、に基づいて、前記アプリケーションに対する前記複数のプリフェッチリクエストのうち1つ以上を生成するように構成されたハードウェアプリフェッチャをさらに備える、
    請求項16のコンピューティングシステム。
  19. 前記処理ユニットは、前記アプリケーションの命令に従って、前記複数のプリフェッチリクエストのうち1つ以上を生成するようにさらに構成されている、
    請求項16のコンピューティングシステム。
  20. 前記キャッシュコントローラを備える複数のキャッシュコントローラをさらに備え、
    前記複数のキャッシュコントローラの各々は、
    前記キャッシュ階層内の前記複数のキャッシュのうち何れかを制御することと、
    前記第1のサブセット内の前記低い優先度のプリフェッチリクエストのうち1つ以上を、前記複数のキャッシュのうちの関連するキャッシュよりも高い容量を有する前記キャッシュ階層内の別のキャッシュにリダイレクトすることと、
    を行うように構成されている、
    請求項16のコンピューティングシステム。
JP2022534184A 2019-12-17 2020-11-20 プリフェッチレベルの降格 Pending JP2023507078A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/718,162 2019-12-17
US16/718,162 US20210182214A1 (en) 2019-12-17 2019-12-17 Prefetch level demotion
PCT/US2020/061672 WO2021126471A1 (en) 2019-12-17 2020-11-20 Prefetch level demotion

Publications (1)

Publication Number Publication Date
JP2023507078A true JP2023507078A (ja) 2023-02-21

Family

ID=73854926

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022534184A Pending JP2023507078A (ja) 2019-12-17 2020-11-20 プリフェッチレベルの降格

Country Status (6)

Country Link
US (1) US20210182214A1 (ja)
EP (1) EP4078384A1 (ja)
JP (1) JP2023507078A (ja)
KR (1) KR20220110219A (ja)
CN (1) CN114830100A (ja)
WO (1) WO2021126471A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6805196B2 (ja) * 2018-02-23 2020-12-23 日本電信電話株式会社 ポリシー競合解消システム及びポリシー競合解消方法
US20220197656A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Instruction and logic for code prefetching
US11782637B2 (en) * 2021-01-05 2023-10-10 Red Hat, Inc. Prefetching metadata in a storage system
US11762777B2 (en) * 2021-03-31 2023-09-19 Advanced Micro Devices, Inc. Method and apparatus for a dram cache tag prefetcher
US20230244606A1 (en) * 2022-02-03 2023-08-03 Arm Limited Circuitry and method
CN117454832A (zh) * 2023-10-10 2024-01-26 北京市合芯数字科技有限公司 电路芯片中数据通道的布线方法、装置、设备及介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US8909866B2 (en) * 2012-11-06 2014-12-09 Advanced Micro Devices, Inc. Prefetching to a cache based on buffer fullness
US10496410B2 (en) * 2014-12-23 2019-12-03 Intel Corporation Instruction and logic for suppression of hardware prefetchers
US10073785B2 (en) * 2016-06-13 2018-09-11 Advanced Micro Devices, Inc. Up/down prefetcher
US20190073305A1 (en) * 2017-09-05 2019-03-07 Qualcomm Incorporated Reuse Aware Cache Line Insertion And Victim Selection In Large Cache Memory

Also Published As

Publication number Publication date
EP4078384A1 (en) 2022-10-26
CN114830100A (zh) 2022-07-29
WO2021126471A1 (en) 2021-06-24
KR20220110219A (ko) 2022-08-05
US20210182214A1 (en) 2021-06-17

Similar Documents

Publication Publication Date Title
JP2023507078A (ja) プリフェッチレベルの降格
US8041897B2 (en) Cache management within a data processing apparatus
US6766419B1 (en) Optimization of cache evictions through software hints
US8943272B2 (en) Variable cache line size management
US7975107B2 (en) Processor cache management with software input via an intermediary
US8473689B2 (en) Predictive sequential prefetching for data caching
US7584327B2 (en) Method and system for proximity caching in a multiple-core system
US8140759B2 (en) Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US7669009B2 (en) Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
CN111052095B (zh) 使用动态预取深度的多行数据预取
US8595443B2 (en) Varying a data prefetch size based upon data usage
JP2004038345A (ja) プリフェッチ制御装置、情報処理装置及びプリフェッチ制御方法
US11301250B2 (en) Data prefetching auxiliary circuit, data prefetching method, and microprocessor
JP2009059077A (ja) キャッシュシステム
KR20230025802A (ko) 페이지-로컬 델타 기반 프리페처를 위한 방법 및 장치
US11036639B2 (en) Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays
US11853220B2 (en) Prefetcher training
US10990543B1 (en) Apparatus and method for arbitrating access to a set of resources
JP2008293472A (ja) 計算機装置およびそのキャッシュリカバリ方法
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
CN114450668A (zh) 电路和方法
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy
US11693778B2 (en) Cache grouping for increasing performance and fairness in shared caches
JPH11143774A (ja) キャッシュ制御機構
US9552293B1 (en) Emulating eviction data paths for invalidated instruction cache

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231023