JP2019517690A - キャッシュ置換ポリシーのスケーリングされたセットデュエリング - Google Patents

キャッシュ置換ポリシーのスケーリングされたセットデュエリング Download PDF

Info

Publication number
JP2019517690A
JP2019517690A JP2018555911A JP2018555911A JP2019517690A JP 2019517690 A JP2019517690 A JP 2019517690A JP 2018555911 A JP2018555911 A JP 2018555911A JP 2018555911 A JP2018555911 A JP 2018555911A JP 2019517690 A JP2019517690 A JP 2019517690A
Authority
JP
Japan
Prior art keywords
cache
subset
counter
response
hit
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.)
Granted
Application number
JP2018555911A
Other languages
English (en)
Other versions
JP6752292B2 (ja
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 JP2019517690A publication Critical patent/JP2019517690A/ja
Application granted granted Critical
Publication of JP6752292B2 publication Critical patent/JP6752292B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/0864Addressing 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/281Single cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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

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,300)は、キャッシュラインの第1サブセット(320)と、キャッシュラインの第2サブセット(325)と、に分割されるキャッシュライン(315)を含むキャッシュ(310)を備える。また、処理システムは、キャッシュラインの第2サブセットに関連する1つ以上のカウンタ(330)を備える。処理システムは、第2サブセットに関連するキャッシュヒット又はキャッシュミスに応じて、1つ以上のカウンタを修正するように構成されたプロセッサ(305)を備える。1つ以上のカウンタは、キャッシュヒット又はキャッシュミスを発生させたメモリアクセス要求の1つ以上の特性によって決定された量だけ修正される。【選択図】図1

Description

本開示は、概して、処理システムに関し、より詳細には、処理システムにおいてキャッシュ置換ポリシーを構成することに関する。
処理システムは、メモリ素子(例えば、ダイナミックランダムアクセスメモリ(DRAM)等)からの情報のコピーを、処理システム内の処理ユニットによってより高速に(例えば、より低いレイテンシで)アクセス可能なキャッシュに記憶する。キャッシュ内のエントリは、キャッシュラインと呼ばれ、キャッシュラインは、アソシエイティブキャッシュのインデックス及びウェイによって示すことができる。キャッシュは、例えばL1キャッシュ等のより高速であるが比較的小さい下位レベルのキャッシュと、例えばL2キャッシュ等のより低速であるが比較的大きい上位レベルのキャッシュと、を含むキャッシュ階層で構成することができる。キャッシュは包括的であるため、下位レベルのキャッシュに記憶された全てのデータが上位レベルのキャッシュに記憶されてもよい。メモリアクセス要求は、最初に、最下位レベルのキャッシュに向けられる。要求が最下位レベルのキャッシュのキャッシュラインにヒットした場合、キャッシュライン内のデータが要求元の処理ユニットに返される。要求が下位レベルのキャッシュにおいてミスした場合、要求は、次の上位レベルのキャッシュに送信される。要求が上位レベルのキャッシュのキャッシュラインにヒットした場合、上位レベルのキャッシュライン内のデータが要求元の処理ユニットに返される。そうでなければ、要求は、次の上位レベルのキャッシュ又はメインメモリに送信される。下位レベルのキャッシュにおけるキャッシュミスに応じて上位レベルのキャッシュ(又はメインメモリ)から取り出されたデータは、下位レベルのキャッシュのキャッシュラインにも記憶される。下位レベルのキャッシュが一杯になると、下位レベルのキャッシュの1つのキャッシュラインが、新たなデータ用の空き領域を確保するためにエビクトされる。
本開示は、添付の図面を参照することによってより良く理解することができ、その多くの特徴及び利点が当業者に明らかになるであろう。異なる図面における同じ参照記号の使用は、類似又は同一のアイテムを指す。
いくつかの実施形態による、処理システムのブロック図である。 いくつかの実施形態による、包括的キャッシュ(inclusive cache)のブロック図である。 いくつかの実施形態による、キャッシュ置換ポリシーを構成するためにセットデュエリングを実施する処理システムのブロック図である。 いくつかの実施形態による、キャッシュのサブセットにおいてキャッシュヒットを発生させたメモリアクセス要求のタイプに基づいてインクリメント値を選択する方法のフロー図である。 いくつかの実施形態による、キャッシュ内のキャッシュラインのサブセットに関連するキャッシュミスに対するレイテンシに基づいてインクリメント値を選択する方法のフロー図である。 いくつかの実施形態による、メモリアクセス要求のタイプ及びレイテンシに基づいてセットデュエリングカウンタのインクリメント値を検索するためのカウンタ修正ルックアップテーブル(LUT)を示す図である。 いくつかの実施形態による、セットデュエリングカウンタの値に基づいてキャッシュ置換ポリシーを構成する方法のフロー図である。 いくつかの実施形態による、メモリアクセス要求の特性に基づいて決定されるデュエリングカウンタへのセットのためのインクリメント値を使用して、スケーリングされたセットデュエリングを選択的に有効化する方法のフロー図である。
キャッシュ置換ポリシーは、どのキャッシュラインをエビクトすべきかを決定するために使用される。例えば、LRU(least recently used)キャッシュ置換ポリシーは、キャッシュミスの場合に新たなデータの空きスペースを作成するために、各キャッシュラインがいつ使用されたかを追跡し、未使用時間が最長のキャッシュラインをエビクトする。別の例では、キャッシュライン内のデータが将来的に使用される可能性を予測するために、RRIP(re-reference interval prediction)が使用される。RRIPを実施するキャッシュは、Nビットの値を各キャッシュラインに関連付ける。新たなデータがキャッシュラインに挿入される場合、キャッシュラインのNビット値が初期値(例えば、1又は2)に設定される。次に、キャッシュラインのNビット値がヒットに応じてデクリメント(又は0に設定)され、他のキャッシュラインのNビット値がヒットに応じてインクリメントされてもよい。より高いNビット値を有するキャッシュラインは、より低いNビット値を有するキャッシュラインよりも将来的に使用される可能性が低い。したがって、キャッシュが一杯になった場合には、最も高いNビット値を有するキャッシュラインをエビクトすることができる。異なるアプリケーションに対して、異なるキャッシュ置換ポリシーがより効果的になり得る(例えば、より高いヒット率を発生させるか、ミス率を低下させる)。例えば、LRU置換ポリシーは、1つのアプリケーションに対して(RRIPと比較して)より高いヒット率をもたらし得る。RRIP置換ポリシーは、別のアプリケーションに対して(LRUと比較して)より高いヒット率をもたらし得る。別の例として、RRIP置換ポリシーは、アプリケーションに応じて、Nビット初期値1又はNビット初期値2を使用するように構成された場合に、より高いヒット率を生成することができる。
セットデュエリングは、異なるキャッシュ置換ポリシーを使用するように構成されたキャッシュのサブセットについてモニタリングされたヒット率又はミス率に基づいて、キャッシュ置換ポリシーを動的に選択するために使用されてもよい。例えば、第1サブセットにおけるキャッシュヒットに応じてカウンタをインクリメントし、第2サブセットにおけるキャッシュヒットに応じてカウンタをデクリメントすることによって、2つのサブセットの性能をモニタリングする。次に、カウンタの値を用いて、第1サブセット又は第2サブセットに関連付けられたポリシーを選択し、選択されたポリシーを用いてキャッシュを構成する。例えば、RRIP置換ポリシーを実施するキャッシュ内のキャッシュラインの第1サブセットは、新たに挿入されたキャッシュラインのNビット値を1に初期化し、キャッシュラインの第2サブセットは、新たに挿入されたキャッシュラインのNビット値を2に初期化する。システムは、第1サブセット及び第2サブセットにおけるキャッシュヒットに応じてカウンタを修正し、所定時間後に、カウンタ値に基づいてキャッシュの新たに挿入されたキャッシュラインのNビット値を初期化するために、1又は2のNビット値を選択的に使用する。しかしながら、従来のセットデュエリングアルゴリズムは、全体的な性能における異なるタイプのオペレーションによる異なる影響、又は、異なるタイプのオペレーションによるミスに対する異なるレイテンシペナルティによる異なる影響を考慮していない。
キャッシュの性能は、異なるキャッシュ置換ポリシーを実施するキャッシュ内のキャッシュラインのサブセット間でセットデュエリングを実行することによって改善することができる。1つ以上のカウンタは、異なるサブセットに関連するキャッシュヒット又はキャッシュミスに応じて、キャッシュヒット又はキャッシュミスを発生させたメモリアクセス要求を発行したオペレーションのタイプに基づいて決定された値だけ修正される。例えば、第1サブセットに関連する全てのキャッシュヒットについてカウンタを1つずつインクリメントする(又は、第2サブセットに関連する全てのキャッシュヒットについてカウンタを1つずつデクリメントする)代わりに、より投機的なオペレーション(例えば、プリフェッチ等)によって発生したキャッシュヒットは、カウンタを1つずつインクリメント又はデクリメントし、あまり投機的でないオペレーションによるキャッシュヒット(例えば、命令キャッシュ又はデータキャッシュのヒット)は、カウンタを2つずつインクリメント又はデクリメントし、ページテーブルウォークをトリガするトランスレーションルックアサイドバッファに対するキャッシュヒットは、カウンタを3つずつインクリメント又はデクリメントする。
いくつかの実施形態では、カウンタを修正するために使用される値は、キャッシュミスのレイテンシペナルティに基づいて決定される。例えば、メモリアクセス要求がキャッシュの次のレベルでヒットした場合、キャッシュの現在のレベルの第1サブセットに関連するキャッシュミスに応じて、カウンタを1つだけデクリメントする(及び、キャッシュの現在のレベルの第2サブセットに関連するキャッシュミスに応じて、1つだけインクリメントする)ことができる。メモリアクセス要求がキャッシュの次のレベルでミスし、リモートキャッシュでヒットした場合、第1サブセットに関連するキャッシュミスに応じて、カウンタを2つずつデクリメント(及び、第2サブセットに関連するキャッシュミスに応じて、カウンタを2つずつインクリメント)してもよい。メモリアクセス要求がリモートキャッシュにおいてミスし、メモリにおいて読み出される場合、第1サブセットに関連するキャッシュミスに応じて、カウンタを3つずつデクリメント(及び、第2サブセットに関連するキャッシュミスに応じて、カウンタを3つずつインクリメント)してもよい。
レイテンシに基づいてインクリメント値を変更することによって、レイテンシの増加が性能に大きな影響を及ぼす場合に、キャッシュの性能が大幅に向上する。しかしながら、いくつかの場合において、システムは帯域幅に制限があり、キャッシュミスの絶対数を最小限に抑える必要がある。何故なら、各キャッシュミスは、上位レベルのキャッシュ(又はメモリ)からミスが発生した下位レベルのキャッシュにデータを移動するために、追加の帯域幅を消費するからである。したがって、いくつかの実施形態では、システムの帯域幅が制限されている場合に、キャッシュミスの総数を最小限に抑えるために、下位レベルのキャッシュ及びメモリの帯域幅のフィードバックを使用して、インクリメント値をスケーリングするか、全てのキャッシュミスを同等に処理するか、の何れかを選択する。
図1は、いくつかの実施形態による、処理システム100のブロック図である。処理システム100は、スタンドアロンデバイスとして、又は、オンチップシステム(SOC)の一部として実施されてもよい。処理システム100は、処理ユニット105を含む。処理ユニット105の例は、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、高速処理ユニット(APU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)等を含む。処理ユニット105は、命令を実行するか、又は、データを独立して、同時に、若しくは、並列して操作するように構成された複数のプロセッサコア110,111,112(本明細書では、まとめて「コア110〜112」と呼ばれる)を含む。また、コア110〜112は、計算ユニットと呼ばれてもよいし、類似の用語が用いられてもよい。
処理システム100は、ダイナミックランダムアクセスメモリ(DRAM)として実施することができるメインメモリを含む。例示された実施形態では、メインメモリは、処理システム100内の複数のソケットに亘って分散される。ローカルDRAM115は、処理ユニット105と同じソケットに実装され、1つ以上のリモートDRAM120は、処理ユニット105とは異なるソケットに実装される。したがって、ローカルDRAM115に対するメモリアクセスのレイテンシは、通常、リモートDRAM120に対するメモリアクセス要求のレイテンシよりも短い。
また、処理システム100は、命令又はデータのコピーをキャッシュに記憶することによって、ローカルDRAM115又はリモートDRAM120に記憶された命令又はデータに高速アクセスするために使用される階層型(又はマルチレベル)キャッシュシステムを実装する。図1に示す階層型キャッシュシステムは、本明細書で説明されるセットデュエリング技術のいくつかの実施形態を実装する階層型キャッシュシステムの一例として意図されている。しかしながら、処理システム100に実装される階層型キャッシュシステムのいくつかの実施形態は、図1に示す階層型キャッシュシステムとは異なる。例えば、本明細書で説明するセットデュエリング技術のいくつかの実施形態を実装する他の階層型キャッシュシステムは、より多くの若しくはより少ない数のキャッシュ、より多くの若しくはより少ないレイヤのキャッシュ、又は、他の階層型構成のキャッシュを含んでもよい。さらに、キャッシュは、処理ユニット105と同じ基板、ウェハ又はダイ上に実装されてもよいし、実装されなくてもよい。
階層型キャッシュシステムは、処理ユニット105及びローカルDRAM115と同じソケット上に実装されるが、処理ユニット105と同じ基板、ウェハ又はダイ上に存在しないリモートキャッシュ125を含む。リモートキャッシュ125は、レイヤ4(L4)キャッシュとも呼ばれる。キャッシュラインは、インデックス及びウェイの組み合わせによって識別される。リモートキャッシュ125のいくつかの実施形態は、ローカルDRAM115又はリモートDRAM120内の各ラインがリモートキャッシュ125内の複数のキャッシュライン(又はウェイ)に潜在的にコピーされるように、ローカルDRAM115又はリモートDRAM120に対してアソシエイティブである。リモートキャッシュ125のアソシエイティビティの例には、2ウェイアソシエイティビティ、4ウェイアソシエイティビティ、8ウェイアソシエイティビティ、16ウェイアソシエイティビティ、ダイレクトマッピング、フルアソシエイティブキャッシュ等が含まれる。リモートキャッシュ125は、ローカルDRAM115又はリモートDRAM120と比較して、より高速なメモリ素子を使用して実装される。リモートキャッシュ125は、コア110〜112とリモートキャッシュ125との間でより高速に又は少ないレイテンシで情報が交換されるように、コア110〜112に対して論理的又は物理的に近くに(DRAM115,120と比較して)配置されてもよい。
処理ユニット105は、リモートキャッシュ125に記憶された命令又はデータのコピーを記憶するレベル3(L3)キャッシュ130を実装する。キャッシュラインは、インデックス及びウェイの組み合わせによって識別される。L3キャッシュ130のいくつかの実施形態は、リモートキャッシュ125内の各ラインがL3キャッシュ130内の各インデックスに関連する複数のウェイに及びから潜在的にコピーされ得るように、リモートキャッシュ125に対してアソシエイティブである。L3キャッシュ130は、リモートキャッシュ125と比べて、より高速なメモリ素子を使用して実装される。また、L3キャッシュ130は、コア110〜112とL3キャッシュ130との間でより高速に又は少ないレイテンシで情報が交換されるように、コア110〜112に対して論理的又は物理的に近くに(リモートキャッシュ125と比較して)配置されてもよい。
また、階層型キャッシュシステムは、L3キャッシュ130に記憶された命令又はデータのコピーを記憶するためのレベル2(L2)キャッシュ135を含む。キャッシュラインは、インデックス及びウェイの組み合わせによって識別される。L2キャッシュ135のいくつかの実施形態は、L3キャッシュ130内の各ラインがL2キャッシュ135内の各インデックスに関連する複数のウェイに及びから潜在的にコピーされ得るように、L3キャッシュ130に対してアソシエイティブである。L2キャッシュ135は、L3キャッシュ130と比べて、より高速なメモリ素子を使用して実装される。また、L2キャッシュ135は、コア110〜112とL2キャッシュ135との間でより高速に又は少ないレイテンシで情報が交換されるように、コア110〜112に対して論理的又は物理的に近くに(L3キャッシュ130と比較して)配置されてもよい。
また、階層型キャッシュシステムは、レベル1(L1)キャッシュ140,141,142を含み、本明細書では、これらをまとめて「L1キャッシュ140〜142」と呼ぶ。L1キャッシュ140〜142の各々が、コア110〜112のうち対応する1つに関連付けられ、コア110〜112のうち対応する1つによって使用される命令又はデータのコピーを記憶する。L1キャッシュ140〜142は、L1キャッシュ140〜142のキャッシュラインに記憶された情報が対応するコア110〜112によってより迅速に取り出されるように、L2キャッシュ135と比べてより高速なメモリ素子を使用して実装される。また、L1キャッシュ140〜142は、コア110〜112とL1キャッシュ140〜142との間で(L2キャッシュ135との通信と比較して)より高速に又は少ないレイテンシで情報が交換されるように、対応するコア110〜112に対して論理的又は物理的に近くに(L2キャッシュ135と比較して)配置されてもよい。L1キャッシュ140〜142のいくつかの実施形態は、命令のコピーを記憶する命令キャッシュ145と、データのコピーを記憶するデータキャッシュ150と、に分割される。明確化のために、命令キャッシュ145及びデータキャッシュ150は、L1キャッシュ140のみに示されている。しかしながら、L1キャッシュ141,142も、命令キャッシュ及びデータキャッシュを含むことができる。
上位レベルのキャッシュのいくつかの実施形態は、1つ以上の下位レベルのキャッシュに対して包括的であってもよい。例えば、L2キャッシュ135は、L1キャッシュ140〜142に対し包括的であってもよく、L1キャッシュ140〜142に記憶されたキャッシュラインがL2キャッシュ135に記憶されてもよい。
オペレーションにおいて、プロセッサコア110〜112は、対応するL1キャッシュ140〜142にメモリアクセス要求を送信して、L1キャッシュ140〜142に記憶された命令又はデータのコピーに対するアクセスを要求する。要求された情報が、対応するキャッシュに記憶されている場合(例えば、メモリアクセス要求におけるアドレス又はアドレスの一部と、キャッシュ内のキャッシュラインに関連するキャッシュタグとの間の一致によって示されるように)、キャッシュラインへのアクセスがプロセッサコアに付与される。これは、通常、キャッシュヒットと呼ばれる。要求された情報が、対応するキャッシュの何れのキャッシュラインにも記憶されていない場合(通常、キャッシュミスと呼ばれる)、メモリアクセス要求がL2キャッシュ135に転送される。メモリアクセス要求がL2キャッシュ135においてヒットした場合、L2キャッシュ135内のキャッシュラインへのアクセスがプロセッサコアに付与される。メモリアクセス要求がL2キャッシュ135においてミスした場合、メモリアクセス要求がL3キャッシュ130に転送される。このプロセスは、キャッシュヒットが生じるまで、又は、要求された情報がDRAM115,120でアクセスされるまで、徐々に高いレベルのキャッシュで繰り返される。
リモートキャッシュ125、L3キャッシュ130、L2キャッシュ135又はL1キャッシュ140〜142内のキャッシュラインは、キャッシュミスに応じて置換されてもよい。例えば、メモリアクセス要求がL1キャッシュ140でミスし、L2キャッシュ135でヒットした場合、L2キャッシュ135のアクセスされたキャッシュラインに記憶された命令又はデータがL1キャッシュ140のキャッシュラインにコピーされ、対応するコア110による後続のメモリアクセス要求に利用可能となる。次に、要求元のコア110は、対応するL1キャッシュ140内のキャッシュラインにアクセスする。全てのキャッシュラインが、現在、情報を記憶している場合、1つのキャッシュラインに以前記憶された情報が、新たな情報のための空きスペースを確保するためにエビクトされる。キャッシュラインは、置換ポリシーに基づいてエビクションのために選択される。L2キャッシュ135及びL1キャッシュ140〜142のいくつかの実施形態は、RRIPに基づく置換ポリシーを実施する。例えば、新たなデータがキャッシュラインに挿入される場合、L2キャッシュ135及びL1キャッシュ140〜142の各キャッシュラインは、初期値(例えば、1又は2)に設定されたNビット値に関連付けられる。キャッシュラインのNビット値は、ヒットに応じてデクリメント(又は0に設定)され、他のキャッシュラインのNビット値は、ヒットに応じてインクリメントされる。最も高いNビット値を有するキャッシュラインは、キャッシュが一杯の場合に、キャッシュミスに応じてエビクトされる。
また、処理ユニット105は、処理システム100内に仮想メモリを実装するために使用されるページテーブル155及びトランスレーションルックアサイドバッファ(TLB)160を含む。ページテーブル155は、仮想アドレスと物理アドレスとの間のマッピングを記憶するデータ構造である。仮想アドレスは、物理アドレスによって示されたメモリ位置にアクセスするために、コア110〜112によって使用される。TLB160は、仮想アドレスのサブセットのマッピングのコピーを、対応する物理アドレスに記憶するキャッシュである。コア110〜112は、物理アドレスに対する仮想アドレスのマッピングにアクセスする要求をTLB160に送信する。仮想−物理アドレスマッピングがTLB160に記憶されている場合に、TLBヒットが発生する。そうでない場合には、TLBミスが発生して、要求がページテーブル155に向けられる。ページテーブルウォークは、仮想物理アドレスの要求されたマッピングをページテーブル155の物理アドレスに配置するために実行される。
リモートキャッシュ125、L3キャッシュ130、L2キャッシュ135、L1キャッシュ140〜142、命令キャッシュ145、データキャッシュ150又はTLB160を含むキャッシュからエビクトするキャッシュラインを選択するために、異なるキャッシュ置換ポリシーを使用することができる。例えば、キャッシュは、LRUキャッシュ置換ポリシー又はRRIPキャッシュ置換ポリシーを使用することができる。別の例では、キャッシュは、新たなキャッシュラインの他のNビット初期値や、他の最大Nビット値等を使用するように構成されたRRIPキャッシュ置換ポリシーを使用することができる。キャッシュによって使用されるキャッシュ置換ポリシーは、セットデュエリング技術を使用して動的に決定される。キャッシュのいくつかの実施形態は、キャッシュラインのメイン部分と、2つ以上のサブセットと、に分割される。キャッシュラインのサブセットは、異なるキャッシュ置換ポリシーに従って動作する。コア110〜112のうち1つのコアは、サブセットに関連するキャッシュヒット又はキャッシュミスに応じて、サブセットに関連する1つ以上のカウンタを修正することができる。例えば、第1サブセット及び第2サブセットに関連するカウンタは、第1サブセットに対するキャッシュヒットに応じてインクリメントされ、第2サブセットに対するキャッシュヒットに応じてデクリメントされてもよい。各キャッシュヒット又はキャッシュミスのカウンタに対する修正量は、キャッシュヒット又はキャッシュミスを発生させたメモリアクセス要求の特性によって決定される。メモリアクセス要求の特性の例としては、メモリアクセス要求のタイプ、メモリアクセス要求のタイプに関連する投機度、キャッシュミスに関連するレイテンシ等が挙げられる。キャッシュのメイン部分によって使用されるキャッシュ置換ポリシーは、本明細書で説明するように、カウンタ値に基づいて第1サブセット及び第2サブセットによって実施されるポリシーのうち1つのポリシーに従って動作するように動的に構成されてもよい。
図2は、いくつかの実施形態による、包括的キャッシュ200のブロック図である。包括的キャッシュ200は、図1に示すリモートキャッシュ125、L3キャッシュ130又はL2キャッシュ135のいくつかの実施形態を実装するために使用される。包括的キャッシュ200は、キャッシュライン210のセット205を含む(明確化のために、1つのキャッシュラインのみが参照番号によって示されている)。包括的キャッシュ200の例示される実施形態は、キャッシュラインがインデックス(0,N−1)及びウェイ(0,3)によって示されるように、4ウェイアソシエイティブである。しかしながら、包括的キャッシュ200の他の実施形態は、他のアソシエイティビティを有してもよい。
また、包括的キャッシュ200は、キャッシュライン210の各々に関連するNビット値220のアレイ215を含む。明確化のために、Nビット値220のうち1つのみが参照番号によって示されている。図2に示すNビット値220は、範囲0〜3の値を表すための2ビットを含むが、他の実施形態は、より大きい又はより小さい範囲の値を表すために、より多くの又はより少ないビットを使用してもよい。新たなデータがキャッシュラインに挿入された場合、キャッシュライン210のNビット値220が初期値に設定される。例えば、インデックス0及びウェイ1によって示されるキャッシュライン210のNビット値220は、第1ビットを0に、第2ビットを1に設定することによって、値が1に初期化される。キャッシュライン210のNビット値220は、キャッシュライン210におけるヒットに応じてデクリメントされる。例えば、インデックスN−1及びウェイ3によって示されるキャッシュライン210のNビット値220は、第1ビットを0に、第2ビットを0に設定することによって、値が0に設定される。他のキャッシュラインのNビット値は、ヒットに応じてインクリメントされる。本明細書で説明するように、Nビット値220がインクリメント又はデクリメントされる量は、Nビット値220がインクリメント又はデクリメントされるキャッシュヒット又はキャッシュミスを発生させたメモリアクセス要求の特性に基づいて決定される。
また、包括的キャッシュ200は、キャッシュライン210の各々が、図1に示すL1キャッシュ140〜142等の1つ以上の下位レベルのキャッシュに含まれるかどうかを示す状態情報225を維持する。状態情報225は、対応するキャッシュラインが下位レベルのキャッシュに含まれていることを示す1つの値(例えば、値が1)に設定され、対応するキャッシュラインが下位レベルのキャッシュに含まれないことを示す異なる値(例えば、値0)に設定されるビット230を含む。例えば、インデックス0及びウェイ0によって示されるキャッシュライン210に関連するビット230の値は、対応するキャッシュラインが1つ以上の下位レベルのキャッシュに含まれていることを示すために、値が1に設定される。別の例では、インデックス0及びウェイ1によって示されるキャッシュライン210に関連するビット230の値は、対応するキャッシュラインが1つ以上の下位レベルのキャッシュに含まれていないことを示すために、値が0に設定される。
キャッシュライン210は、アレイ215内のNビット値230に基づいて、(例えば、キャッシュ200に対するキャッシュミスに応じた)エビクションのために選択される。例えば、最大Nビット値3を有するキャッシュラインが、キャッシュミスに応じて、キャッシュ200からエビクトされるために選択されてもよい。しかしながら、キャッシュライン210が1つ以上の下位レベルのキャッシュのキャッシュラインに対して包括的である場合に、キャッシュ200からキャッシュライン210をエビクトすることは、1つ以上の下位レベルのキャッシュから1つ以上のキャッシュラインをエビクトすることを必要とする。したがって、いくつかの実施形態では、最大Nビット値を有する全てのキャッシュラインが1つ以上の下位レベルのキャッシュのキャッシュラインに対して包括的である場合、より低いNビット値を有するキャッシュラインのエビクションについて検討される。例えば、インデックス/ウェイの組み合わせ(0,0)、(0,3)、(1,0)によって示されるキャッシュライン210は、最大Nビット値に等しいNビット値220を有するが、これらの全てのキャッシュライン210は、状態情報225の対応するビット230の値が1で示されるように、1つ以上の下位レベルのキャッシュラインに対して包括的である。したがって、より低いNビット値220を有するキャッシュラインが、エビクションについて検討される。例えば、インデックス/ウェイの組み合わせ(0,2)によって示されるキャッシュライン210は、閾値2に等しいNビット値を有し、したがって、矢印235で示すように、キャッシュ200からエビクトされてもよい。エビクションするキャッシュラインを検討するためのNビット値の閾値は、例えば、本明細書で説明するセットデュエリング技術を使用して、動的に設定されてもよい。
図3は、いくつかの実施形態による、キャッシュ置換ポリシーを構成するためにセットデュエリングを実施する処理システム300のブロック図である。処理システム300は、図1に示す処理システム100のいくつかの実施形態の一部を実施するために使用される。処理システムは、コア305と、キャッシュ310と、を含む。コア305は、コア110〜112のいくつかの実施形態を実装するために使用され、キャッシュ310は、図1に示すリモートキャッシュ125、L3キャッシュ130、L2キャッシュ135、L1キャッシュ140〜142、命令キャッシュ145又はデータキャッシュ150のうちいくつかの実施形態を実装するために使用される。キャッシュ310の図示された実施形態は、N個のインデックスを含み、4ウェイアソシエイティブであり、これにより、個々のキャッシュライン315の識別子(明確化のために、1つのみが参照番号で示されている)は、(0,0)から(N−1,3)までである。一方、キャッシュ310の他の実施形態では、他のアソシエイティビティが使用されてもよい。
キャッシュ310は、第1サブセット320と、第2サブセット325と、残りのキャッシュラインと、に分割され、残りのキャッシュラインは、キャッシュ310のメイン部分と呼ばれる。いくつかの実施形態では、第1サブセット320及び第2サブセット325のキャッシュラインは、対応するキャッシュラインのインデックスによって識別される。例えば、第1サブセット320は、インデックスJに関連するキャッシュラインを含み、第2サブセット325は、インデックスKに関連するキャッシュラインを含む。しかしながら、第1サブセット及び第2サブセットのキャッシュラインは、キャッシュライン315の他の識別子に基づいて分割されてもよい。さらに、キャッシュ310のいくつかの実施形態は、追加のサブセットに分割されてもよい。
カウンタ330は、第1サブセット320及び第2サブセット325に関連付けられている。カウンタ330の値は、第1サブセット320又は第2サブセット325に対するキャッシュヒットに応じて、コア305によって修正される。例えば、コア305は、第1サブセット320におけるキャッシュヒットに応じてカウンタ330をインクリメントし、第2サブセット325におけるキャッシュヒットに応じてカウンタ330をデクリメントする。よって、カウンタ330の値は、第1サブセット320におけるキャッシュヒットに応じて増加し、第2サブセット325におけるキャッシュヒットに応じて減少する。キャッシュヒットの数は、サブセット320,325によって実施されるキャッシュ置換ポリシーの相対的有効性の尺度である。したがって、カウンタ330の値をモニタリングすることによって、コア305は、処理システム300の現在の動作条件の下で何れのキャッシュ置換ポリシーがより有効であるかを判断することができる。次いで、コア305は、最も有効なキャッシュ置換ポリシーに従って動作するように、キャッシュ310のメイン部分を構成する。
コア305のいくつかの実施形態は、第1サブセット320又は第2サブセット325に関連するキャッシュミスに応じて、カウンタ330の値を修正する。キャッシュミス自体は特定のキャッシュラインに関連していないが、キャッシュミスは、上位レベルのキャッシュにおけるキャッシュヒット、又は、例えばDRAM等のメインメモリ内の位置に基づいて、第1サブセット320又は第2サブセット325に関連付けることができる。例えば、下位レベルのキャッシュ内の各インデックスは、上位レベルのキャッシュ内のインデックスの特定のセット(又は、メインメモリ内の位置)にマッピングされる。したがって、第1サブセット320及び第2サブセット325は、上位レベルのキャッシュ内のインデックスの異なるセット又はメインメモリ内の異なる位置にマッピングされる。上位レベルのキャッシュのうち1つのキャッシュにおけるキャッシュヒット(又は、メインメモリへのアクセス)によって、キャッシュヒットの位置の情報が、上位レベルのキャッシュにおけるキャッシュヒットのインデックスにマッピングされる下位レベルのキャッシュ内のインデックスのウェイにコピーされる。コア305は、第1サブセット320又は第2サブセット325のウェイに情報がコピーされたことに応じて、キャッシュミスを第1サブセット320又は第2サブセット325に関連付ける。コア305は、第1サブセット320に関連するキャッシュミスに応じてカウンタ330をデクリメントし、第2サブセット325に関連するキャッシュミスに応じてカウンタ330をインクリメントする。コア305のいくつかの実施形態は、第1サブセット320及び第2サブセット325に関連するキャッシュヒット及びキャッシュミスの両方に応じて、カウンタ330をインクリメント又はデクリメントしてもよい。
図3に示すカウンタ330のいくつかの実施形態は、複数のカウンタを表す。例えば、単一のカウンタ330をインクリメント又はデクリメントする代わりに、コア305は、第1サブセット320及び第2サブセット325に対して別々のカウンタを維持する。別々のカウンタは、第1サブセット320又は第2サブセット325の各々に関連するキャッシュヒット又はキャッシュミスに応じてインクリメント又はデクリメントされる。次に、別々のカウンタの値を比較して、最も有効なキャッシュ置換ポリシーを識別することができる。別の例では、キャッシュ310は、3つ以上の異なるキャッシュ置換ポリシーに従って動作するように構成された3つ以上のサブセットに分割される。したがって、カウンタのセットに関連するキャッシュヒット又はキャッシュミスに基づいて最も有効なキャッシュ置換ポリシーをコア305が識別できるように、カウンタの対応するセットが定義される。
コア305は、キャッシュヒット又はキャッシュミスを発生させたメモリアクセス要求の特性に応じて、カウンタ330の値を異なる量だけ修正する。メモリアクセス要求の特性は、プリフェッチ要求、デマンド要求、命令キャッシュ要求、データキャッシュ要求、テーブルウォーク要求、ロード要求、ストア要求、要求に関連する特権レベル等の要求のタイプを含む。異なるタイプのオペレーションは、異なる投機度を有し得る。キャッシュ310内のラインにヒットするプリフェッチ要求は、比較的高い投機度を有し、デマンド要求は、より低い投機度を有する。キャッシュミスから命令キャッシュに至るキャッシュ内のヒットは、さらに低い投機度を有し、キャッシュミスからデータキャッシュに至るキャッシュのヒットは、さらに低い投機度を有する。メモリアクセス要求を用いて処理システムにハードウェアページテーブルウォークを実行させる、TLBページテーブルウォーカによるミスは、さらに低い投機度を有する。高い投機度を有する要求に関連するヒット又はミスは、カウンタ330の値の変化が小さくなる。メモリアクセス要求の特性は、キャッシュミスに続くメモリアクセス要求を満たす際の異なるレイテンシも含む。例えば、下位レベルにおいてミスし、次に上位レベルのキャッシュにおいてヒットするメモリアクセス要求に関連するレイテンシは、メモリアクセス要求が下位レベルのキャッシュにおいてミスし、次に上位レベルのキャッシュにおいてミスし、次いでメモリアクセス要求を満たすために外部DRAMに向けられる場合に生じるレイテンシよりも低い。より多くのレイテンシを発生させる要求に関連するキャッシュミスは、カウンタ330の値の変化が小さくなる。
図4は、いくつかの実施形態による、キャッシュのサブセットにおいてキャッシュヒットを発生させたメモリアクセス要求のタイプに基づいてインクリメント値を選択する方法400のフロー図である。方法400は、図1に示す処理システム100又は図3に示す処理システム300のいくつかの実施形態において実施される。方法400に示される特定のタイプのメモリアクセス要求及び対応するインクリメント値は、セットデュエリングアルゴリズムにおいてカウンタを修正するための異なるインクリメント値の使用を示す例として意図される。方法400のいくつかの実施形態は、異なるタイプのメモリアクセス要求又は異なるインクリメント値を使用する。さらに、方法400のいくつかの実施形態は、キャッシュの他のサブセットにおけるキャッシュヒットに応じてカウンタをデクリメントするための値を決定するために使用される。例えば、キャッシュの1つのサブセットについて方法400によって決定されるインクリメント値は、キャッシュの他のサブセットにおけるキャッシュヒットに応じてカウンタをデクリメントするのに使用される値に対応する。
ブロック405において、プロセッサコアは、キャッシュの第1サブセットにおけるキャッシュヒットを検出する。キャッシュヒットは、メモリアクセス要求に応じて生成され、プロセッサコアは、メモリアクセス要求と共に提供される情報又は処理システムから利用可能な他の情報を使用して、メモリアクセス要求のタイプを判別する。プロセッサコアは、図3に示すカウンタ330等のカウンタの値を、メモリアクセス要求のタイプに基づいて決定された量だけインクリメントする。
判別ブロック410において、プロセッサコアは、メモリアクセス要求が、プロセッサコアによる後続の命令の実行に必要と予測される情報についてのプリフェッチ要求であるかどうかを判別する。プリフェッチ要求は、高い投機度を有する。メモリアクセス要求がプリフェッチ要求である場合、ブロック415において、プロセッサコアは、カウンタをインクリメント値(ここでは、1)だけインクリメントする。メモリアクセス要求がプリフェッチ要求でない場合、方法400は、判別ブロック420に進む。
判別ブロック420において、プロセッサコアは、メモリアクセス要求が、命令キャッシュ又はデータキャッシュに対する要求であるかどうかを判別する。命令キャッシュ又はデータキャッシュに対する要求は、プリフェッチ要求よりも低い投機度を有する。要求が命令キャッシュ又はデータキャッシュに対するものである場合、ブロック425において、プロセッサコアは、カウンタをインクリメント値(ここでは、2)だけインクリメントする。メモリアクセス要求が命令キャッシュ又はデータキャッシュに対するものでない場合、方法400は、判別ブロック430に進む。
判別ブロック430において、プロセッサコアは、メモリアクセス要求が、TLBページテーブルウォーカによるTLBに対するミスによって生じたかどうかを判別する。TLBページテーブルウォーカによるミスから生じた要求は、プリフェッチ要求又は命令/データキャッシュに対する要求に比べて低い投機度を有する。要求が、TLBページテーブルウォーカによるキャッシュミスを生じた場合、ブロック435において、プロセッサコアは、カウンタをインクリメント値(ここでは、3)だけインクリメントする。キャッシュヒットが、TLBページテーブルウォーカのミスによって生成されなかった場合、プロセッサコアは、カウンタをデフォルト値だけインクリメントする。未分類のタイプが高い投機度を有すると予測される場合、又は、比較的高いレベルの未分類のタイプの投機度が低いと予測される場合には、デフォルト値は比較的低いレベルに設定される。
図5は、いくつかの実施形態による、キャッシュ内のキャッシュラインのサブセットに関連するキャッシュミスに対するレイテンシに基づいてインクリメント値を選択する方法500のフロー図である。方法500は、図1に示す処理システム100又は図3に示す処理システム300のいくつかの実施形態において実施される。方法500に示す特定のレイテンシ及び対応するインクリメント値は、セットデュエリングアルゴリズムにおいてカウンタを修正するための異なるインクリメント値の使用を示す例として意図される。方法500のいくつかの実施形態は、異なるレイテンシ、レイテンシカテゴリ、又は、異なるインクリメント値を検討する。さらに、方法500のいくつかの実施形態は、キャッシュの他のサブセットに関連するキャッシュミスに応じてカウンタをデクリメントするための値を決定するために使用される。例えば、方法500によって決定されるインクリメント値は、キャッシュの他のサブセットにおけるキャッシュヒットに応じてカウンタをデクリメントするのに使用される値に対応する。
ブロック505において、プロセッサコアは、キャッシュのラインのサブセットに関連するキャッシュミスを検出する。次に、プロセッサコアは、キャッシュミスに関連するレイテンシを決定する。例えば、プロセッサコアは、キャッシュミスに応じてキャッシュに返される情報のデータソースを識別する符号化等の情報を受信する。符号化は、L1キャッシュヒット、L2キャッシュヒット、L3キャッシュヒット、ローカルDRAMからの応答、リモートDRAMからの応答、リモートキャッシュからの応答等を示す。したがって、符号化は、レイテンシを推定し、又は、キャッシュミスのレイテンシを分類するために使用される。
判別ブロック510において、プロセッサコアは、返された情報のデータソースがリモートDRAMであるかどうかを判別する。リモートDRAMに関連するレイテンシは比較的大きい。データソースがリモートDRAMである場合、ブロック515において、プロセッサコアは、カウンタを比較的低い値(ここでは、1)だけインクリメントする。データソースがリモートDRAMではない場合、方法500は、判別ブロック520に進む。
判別ブロック520において、プロセッサコアは、返された情報のデータソースがローカルDRAMであるかどうかを判別する。ローカルDRAMに関連するレイテンシは、リモートDRAMに関連するレイテンシよりも小さい。データソースがローカルDRAMである場合、ブロック525において、プロセッサコアは、カウンタを値(ここでは、2)だけインクリメントする。データソースがローカルDRAMではない場合、方法500は、判別ブロック530に進む。
判別ブロック530において、プロセッサコアは、返された情報のデータソースがリモートキャッシュであるかどうかを判別する。リモートキャッシュに関連するレイテンシは、ローカルDRAMに関連するレイテンシよりも小さい。データソースがリモートキャッシュである場合、ブロック535において、プロセッサコアは、カウンタを値(ここでは、3)だけインクリメントする。データソースがリモートキャッシュではない場合、方法500は、判別ブロック540に進む。
判別ブロック540において、プロセッサコアは、返された情報のデータソースが上位レベルのローカルキャッシュであるかどうかを判別する。上位レベルのローカルキャッシュに関連するレイテンシは、リモートキャッシュに関連するレイテンシよりも低い。データソースが上位レベルのローカルキャッシュである場合、ブロック545において、プロセッサコアは、カウンタを値(ここでは、4)だけインクリメントする。データソースが上位レベルのローカルキャッシュでない場合、プロセッサコアは、レイテンシが上位レベルのローカルキャッシュに関連するレイテンシよりも低いと仮定し、ブロック550において、カウンタを値(ここでは、5)だけインクリメントする。
図6は、いくつかの実施形態による、メモリアクセス要求のタイプ及びレイテンシに基づいてセットデュエリングカウンタのインクリメント値を検索するためのカウンタ修正ルックアップテーブル(LUT)600を示す図である。カウンタ修正LUT600は、図1に示す処理システム100又は図3に示す処理システム300のいくつかの実施形態において、セットデュエリングカウンタのインクリメント値を識別するために使用される。カウンタ修正LUT600は、メモリアクセス要求のタイプと、メモリアクセス要求のレイテンシと、の組み合わせを示す値を保持するフィールドを含む第1列605を含む。また、カウンタ修正LUT600は、本明細書で説明するように、セットデュエリングカウンタの値を修正するのに使用される、対応するインクリメント(又は、デクリメント)値を示す値を保持するフィールドを含む第2列610を含む。
図1に示すコア110〜112等のプロセッサコアは、カウンタ修正LUT600を使用して、例えば異なるキャッシュ置換ポリシーの有効性を比較するために、セットデュエリングに使用されるキャッシュのサブセットに関連するキャッシュヒット又はキャッシュミスを発生させるメモリアクセス要求に関連する、要求のタイプ及びレイテンシに基づいてインクリメント値を識別する。例えば、プロセッサコアが、レイテンシ1を有するタイプ1のメモリ要求によって生成された第1サブセットに対するキャッシュヒットを検出した場合、プロセッサコアは、カウンタ修正LUT600によって示されるように、適切なカウンタを値(ここでは、1)だけインクリメントする。別の例では、プロセッサコアが、レイテンシ1を有するタイプ1のメモリ要求によって生成された第2サブセットに対するキャッシュヒットを検出した場合、プロセッサコアは、適切なカウンタを値(ここでは、1)だけデクリメントする。
図7は、いくつかの実施形態による、セットデュエリングカウンタの値に基づいてキャッシュ置換ポリシーを構成する方法700のフロー図である。方法700は、図1に示す処理システム100又は図3に示す処理システム300のいくつかの実施形態において実施される。
ブロック705において、プロセッサコアは、第1キャッシュ置換ポリシーを使用してオペレーションするように構成されたキャッシュの第1サブセットと、第2キャッシュ置換ポリシーを使用してオペレーションするように構成されたキャッシュの第2サブセットと、をモニタリングする。プロセッサコアは、所定の時間間隔の間、キャッシュヒット又はキャッシュミスに応じてカウンタを修正する。カウンタに対する修正量は、本明細書で説明するように、キャッシュヒット又はキャッシュミスを発生させるメモリアクセス要求の特性に基づいて決定される。
判別ブロック710において、プロセッサコアは、カウンタの値を閾値と比較する。カウンタの値が閾値よりも大きい場合には、第1キャッシュ置換ポリシーが所定の時間間隔に亘って有効であることを示しており、プロセッサコアは、第1キャッシュ置換ポリシーに従って動作するようにキャッシュのメイン部分を構成する(ブロック715)。カウンタの値が閾値よりも小さい場合には、第2キャッシュ置換ポリシーが所定の時間間隔に亘って有効であることを示しており、プロセッサコアは、第2キャッシュ置換ポリシーに従って動作するようにキャッシュのメイン部分を構成する(ブロック720)。いくつかの実施形態では、プロセッサコアは、第1キャッシュ置換ポリシー及び第2キャッシュ置換ポリシーの相対的有効性を、カウンタ値に適用された他の基準に基づいて評価する(判別ブロック710)。
図8は、いくつかの実施形態による、メモリアクセス要求の特性に基づいて決定されるデュエリングカウンタのセットのためのインクリメント値を使用して、スケーリングされたセットデュエリングを選択的に有効化する方法800のフロー図である。方法800は、図1に示す処理システム100又は図3に示す処理システム300のいくつかの実施形態において実施される。
ブロック805において、プロセッサコアは、処理システム内の他のエンティティ(例えば、処理システムのキャッシュ階層におけるキャッシュ等)からの帯域幅フィードバックをモニタリングする。例えば、図1に示すプロセッサコア110は、ローカルDRAM115、リモートDRAM120、リモートキャッシュ125、L3キャッシュ130、L2キャッシュ135、L1キャッシュ140〜142、命令キャッシュ145、データキャッシュ150、TLB160、又は、図1に示す処理システム100内の他のエンティティに関連する現在の帯域幅使用率を示すフィードバックをモニタリングする。
判別ブロック810において、プロセッサコアは、処理システム(又は、その一部)が帯域幅制限されているかどうかを判別する。処理システム(又は、その一部)が帯域幅制限されている場合、プロセッサコアは、ブロック815において、キャッシュミスに対してスケーリングされたセットデュエリングを無効にする。スケーリングされたセットデュエリングを無効にすることによって、セットデュエリングカウンタは、メモリアクセス要求のタイプ又はキャッシュミスに関連するレイテンシに関わらず、全てのキャッシュミスに対して同じ値だけインクリメントされる。処理システムが帯域幅制限されていない場合、プロセッサコアは、ブロック820において、キャッシュミスに対してスケーリングされたセットデュエリングを有効にする。スケーリングされたセットデュエリングを有効にすることによって、プロセッサコアが、処理システムのキャッシュにおいてキャッシュヒット又はキャッシュミスを発生させるメモリアクセス要求の特性に応じて、セットデュエリングカウンタを異なる値だけインクリメントするのを可能にする。
いくつかの実施形態では、上述した装置及び技術は、図1〜8を参照して上述した処理システム等のような1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムにおいて実施される。これらのICデバイスの設計及び製造には、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールを使用することができる。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表わされる。1つ以上のソフトウェアプログラムは、回路を製造するように製造システムを設計又は適合させるためのプロセスの少なくとも一部を実行するように、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するコンピュータシステムによって実行可能なコードを備える。このコードには、命令、データ、又は、命令及びデータの組み合わせが含まれる。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じ又は異なるコンピュータ可読記憶媒体に記憶され、当該コンピュータ可読記憶媒体からアクセスされてもよい。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な、任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含むことができる。このような記憶媒体は、限定しないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、マイクロ電気機械システム(MEMS)ベースの記憶媒体を含むことができる。コンピュータ可読記憶媒体は、コンピューティングシステムに埋め込まれてもよく(例えば、システムRAM又はROM)、コンピューティングシステムに固定的に取り付けられてもよく(例えば、磁気ハードドライブ)、コンピューティングシステムに着脱可能に取り付けられてもよく(例えば、光ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)、有線若しくは無線ネットワークを介してコンピュータシステムに接続されてもよい(例えば、ネットワークアクセス可能ストレージ(NAS))。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に記憶されるか、他の方法で有形に具現化された、1つ以上の実行可能な命令のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されたときに、1つ以上のプロセッサを操作して、上述した技術の1つ以上の態様を実行する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、ソリッドステート記憶デバイス(例えば、フラッシュメモリ等)、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能な命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは他の方法で実行可能な他の命令フォーマットであってもよい。
概説において上述したアクティビティ又は要素の全てが必要であるとは限らず、特定のアクティビティ又はデバイスの一部が必要でなくともよく、説明したアクティビティに加えて1つ以上の更なるアクティビティが実行されてもよいし、1つ以上の更なる要素が含まれてもよいことに留意されたい。さらに、アクティビティが列挙される順序は、必ずしもそれらが実行される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変更を行うことができることを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、そのような変更の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段が特定の実施形態に関して上述されている。しかしながら、利益、利点、問題に対する解決手段、及び、何等かの利益、利点、解決手段が発生するか、顕著になる可能性のある機能は、何れか又は全ての特許請求の範囲の重要な特徴、必須の特徴、本質的な特徴として解釈されるべきでない。更に、開示された発明は、本明細書における教示の利益を有する当業者には明らかであるが、異なるが同等の方法で変更され、実施され得るので、上記の開示された特定の実施形態は、例示に過ぎない。以下の特許請求の範囲に記載されているもの以外に、本明細書に示された構成又は設計の詳細に制限はない。したがって、上記の開示された特定の実施形態は、変更又は修正されてもよく、全てのそのような変形は、開示された発明の範囲内にあると考えられることが明らかである。したがって、本願で求められる保護は、以下の特許請求の範囲に記載されている。

Claims (16)

  1. キャッシュライン(315)の第1サブセット(320)と、前記キャッシュラインの第2サブセットと、に分割される、前記キャッシュラインを含むキャッシュ(310)と、
    前記キャッシュラインの前記第2サブセット(325)に関連する少なくとも1つのカウンタ(330)と、
    前記第2サブセットに関連するキャッシュヒット又はキャッシュミスのうち少なくとも1つに応じて前記少なくとも1つのカウンタを修正するように構成されたプロセッサ(305)であって、前記少なくとも1つのカウンタは、前記キャッシュヒット又は前記キャッシュミスのうち少なくとも1つを発生させたメモリアクセス要求の少なくとも1つの特性に基づく量だけ修正される、プロセッサ(305)と、を備える、
    装置(100,300)。
  2. 前記メモリアクセス要求の少なくとも1つの特性は、前記キャッシュミスに関連する前記メモリアクセス要求のタイプ又はレイテンシのうち少なくとも1つを含む、
    請求項1の装置。
  3. 前記プロセッサは、
    前記第2サブセットの第1部分に対するキャッシュヒットに応じて前記少なくとも1つのカウンタをインクリメントし、前記第2サブセットの第2部分に対するキャッシュヒットに応じて前記少なくとも1つのカウンタをデクリメントするように構成されている、
    請求項1の装置。
  4. 前記プロセッサは、
    前記第2サブセットの前記第1部分に対するキャッシュヒットを発生させたメモリアクセス要求の投機度に基づいて決定された量だけ前記少なくとも1つのカウンタをインクリメントし、
    前記第2サブセットの前記第2部分に対するキャッシュヒットを発生させたメモリアクセス要求の投機度に基づいて決定された量だけ前記少なくとも1つのカウンタをデクリメントする、
    ように構成されている、
    請求項3の装置。
  5. 前記プロセッサは、
    前記第2サブセットの第1部分に関連するキャッシュミスに応じて前記少なくとも1つのカウンタをデクリメントし、
    前記第2サブセットの第2部分に関連するキャッシュミスに応じて前記少なくとも1つのカウンタをインクリメントする、
    ように構成されている、
    請求項1の装置。
  6. 前記プロセッサは、
    前記第2サブセットの前記第1部分に関連するキャッシュミスに関するレイテンシに基づいて決定された量だけ前記少なくとも1つのカウンタをデクリメントし、
    前記第2サブセットの前記第2部分に関連するキャッシュミスに関するレイテンシに基づいて決定された量だけ前記少なくとも1つのカウンタをインクリメントする、
    ように構成されている、
    請求項5の装置。
  7. 前記プロセッサは、
    帯域幅消費を示すフィードバックに基づく帯域幅制限動作を検出したことに応じて、前記第2サブセットの前記第1部分に関連する全てのキャッシュミスに対して同じ量だけ前記少なくとも1つのカウンタをデクリメントし、
    前記帯域幅制限動作を検出したことに応じて、前記第2サブセットの前記第2部分に関連する全てのキャッシュミスに対して同じ量だけ前記少なくとも1つのカウンタをインクリメントする、
    ように構成されている、
    請求項6の装置。
  8. 前記第2サブセットは、対応する複数のキャッシュ置換ポリシーを使用しており、
    前記プロセッサは、
    前記少なくとも1つのカウンタの少なくとも1つの値に基づいて、前記複数のキャッシュ置換ポリシーのうち1つのキャッシュ置換ポリシーを選択し、
    前記複数のキャッシュ置換ポリシーのうち選択されたキャッシュ置換ポリシーを使用するように、前記第1サブセットを構成する、
    ように構成されている、
    請求項1の装置。
  9. キャッシュ(310)を、キャッシュライン(315)の第1サブセット(320)と、前記キャッシュラインの第2サブセット(325)と、に分割することと、
    前記第2サブセットに関連するキャッシュヒット又はキャッシュミスのうち少なくとも1つを検出することと、
    前記キャッシュヒット又は前記キャッシュミスのうち少なくとも1つに応じて、前記キャッシュラインの前記第2サブセットに関連する少なくとも1つのカウンタ(330)を修正することであって、前記少なくとも1つのカウンタは、前記キャッシュヒット及び前記キャッシュミスのうち少なくとも1つを発生させたメモリアクセス要求の少なくとも1つの特性によって決定された量だけ修正される、ことと、を含む、
    方法。
  10. 前記メモリアクセス要求の少なくとも1つの特性は、前記キャッシュミスに関連するメモリアクセス要求のタイプ又はレイテンシのうち少なくとも1つを含む、
    請求項9の方法。
  11. 前記少なくとも1つのカウンタを修正することは、
    前記第2サブセットの第1部分に対するキャッシュヒットに応じて前記少なくとも1つのカウンタをインクリメントすることと、
    前記第2サブセットの第2部分に対するキャッシュヒットに応じて前記少なくとも1つのカウンタをデクリメントすることと、を含む、
    請求項9の方法。
  12. 前記少なくとも1つのカウンタをインクリメントすることは、前記第2サブセットの前記第1部分に対するキャッシュヒットを発生させたメモリアクセス要求の投機度に基づいて決定された量だけ前記少なくとも1つのカウンタをインクリメントすることを含み、
    前記少なくとも1つのカウンタをデクリメントすることは、前記第2サブセットの前記第2部分に対するキャッシュヒットを発生させたメモリアクセス要求の投機度に基づいて決定された量だけ前記少なくとも1つのカウンタをデクリメントすることを含む、
    請求項11の方法。
  13. 前記少なくとも1つのカウンタを修正することは、
    前記第2サブセットの第1部分に関連するキャッシュミスに応じて前記少なくとも1つのカウンタをデクリメントすることと、
    前記第2サブセットの第2部分に関連するキャッシュミスに応じて前記少なくとも1つのカウンタをインクリメントすることと、を含む、
    請求項9の方法。
  14. 前記少なくとも1つのカウンタをデクリメントすることは、前記第2サブセットの前記第1部分に関連するキャッシュミスに関するレイテンシに基づいて決定された量だけ前記少なくとも1つのカウンタをデクリメントすることを含み、
    前記少なくとも1つのカウンタをインクリメントすることは、前記第2サブセットの前記第2部分に関連するキャッシュミスに関するレイテンシに基づいて決定された量だけ前記少なくとも1つのカウンタをインクリメントすることを含む、
    請求項13の方法。
  15. 前記第2サブセットは、対応する複数のキャッシュ置換ポリシーを使用しており、
    前記少なくとも1つのカウンタの少なくとも1つの値に基づいて、前記複数のキャッシュ置換ポリシーのうち1つのキャッシュ置換ポリシーを選択することと、
    前記複数のキャッシュ置換ポリシーのうち選択されたキャッシュ置換ポリシーを使用するように、前記第1サブセットを構成することと、を含む、
    請求項9の方法。
  16. メモリ(115,120)と、
    前記メモリからの情報を記憶するために、第1サブセット(320)と第2サブセット(325)とに分割されるキャッシュライン(315)を含むキャッシュ(300)と、
    前記第2サブセットに関連する少なくとも1つのカウンタ(330)と、
    前記メモリ又は前記キャッシュのうち少なくとも1つの動作が帯域幅制限されるかどうかを示すフィードバックに基づいて、前記キャッシュのキャッシュ置換ポリシーを決定するために、セットデュエリングを選択的に有効化又は無効化するように構成されたプロセッサ(110,305)であって、前記セットデュエリングは、前記少なくとも1つのカウンタに基づいて、前記第1サブセット及び前記第2サブセットの各々によって実施されるキャッシュ置換ポリシーを第1キャッシュ置換ポリシー及び第2キャッシュ置換ポリシーの中から選択する、プロセッサ(110,305)と、を備える、
    装置(100,300)。
JP2018555911A 2016-06-13 2016-09-20 キャッシュ置換ポリシーのスケーリングされたセットデュエリング Active JP6752292B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/180,995 US10430349B2 (en) 2016-06-13 2016-06-13 Scaled set dueling for cache replacement policies
US15/180,995 2016-06-13
PCT/US2016/052605 WO2017218026A1 (en) 2016-06-13 2016-09-20 Scaled set dueling for cache replacement policies

Publications (2)

Publication Number Publication Date
JP2019517690A true JP2019517690A (ja) 2019-06-24
JP6752292B2 JP6752292B2 (ja) 2020-09-09

Family

ID=60572771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018555911A Active JP6752292B2 (ja) 2016-06-13 2016-09-20 キャッシュ置換ポリシーのスケーリングされたセットデュエリング

Country Status (6)

Country Link
US (1) US10430349B2 (ja)
EP (1) EP3433745B1 (ja)
JP (1) JP6752292B2 (ja)
KR (1) KR102357246B1 (ja)
CN (1) CN109313610B (ja)
WO (1) WO2017218026A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021510886A (ja) * 2018-03-20 2021-04-30 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated プリフェッチャベースの投機的ダイナミックランダムアクセスメモリ読み出し要求技術
JP2023500590A (ja) * 2019-10-31 2023-01-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド キャッシュアクセス測定デスキュー

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10229161B2 (en) 2013-09-20 2019-03-12 Oracle International Corporation Automatic caching of scan and random access data in computing systems
US10853267B2 (en) * 2016-06-14 2020-12-01 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Adaptive method for selecting a cache line replacement algorithm in a direct-mapped cache
US10331573B2 (en) * 2016-11-04 2019-06-25 Oracle International Corporation Detection of avoidable cache thrashing for OLTP and DW workloads
US11182306B2 (en) * 2016-11-23 2021-11-23 Advanced Micro Devices, Inc. Dynamic application of software data caching hints based on cache test regions
US10409728B2 (en) * 2017-05-09 2019-09-10 Futurewei Technologies, Inc. File access predication using counter based eviction policies at the file and page level
US10983922B2 (en) * 2018-05-18 2021-04-20 International Business Machines Corporation Selecting one of multiple cache eviction algorithms to use to evict a track from the cache using a machine learning module
US10810126B2 (en) * 2018-09-24 2020-10-20 Arm Limited Cache storage techniques
US11106600B2 (en) * 2019-01-24 2021-08-31 Advanced Micro Devices, Inc. Cache replacement based on translation lookaside buffer evictions
US10725923B1 (en) * 2019-02-05 2020-07-28 Arm Limited Cache access detection and prediction
US11693790B2 (en) 2019-05-24 2023-07-04 Texas Instmments Incorporated Methods and apparatus to facilitate write miss caching in cache system
US11561895B2 (en) 2019-09-05 2023-01-24 Advanced Micro Devices, Inc. Oldest operation wait time indication input into set-dueling
CN112860600A (zh) * 2019-11-28 2021-05-28 深圳市海思半导体有限公司 一种加速硬件页表遍历的方法及装置
CN111143244B (zh) * 2019-12-30 2022-11-15 海光信息技术股份有限公司 计算机设备的内存访问方法和计算机设备
KR20210097345A (ko) 2020-01-30 2021-08-09 삼성전자주식회사 캐시 메모리 장치, 이를 포함하는 시스템 및 캐시 메모리 장치의 동작 방법
US11704250B2 (en) * 2021-09-28 2023-07-18 Advanced Micro Devices, Inc. Using request class and reuse recording in one cache for insertion policies of another cache
US12099451B2 (en) * 2021-09-29 2024-09-24 Advanced Micro Devices, Inc. Re-reference interval prediction (RRIP) with pseudo-LRU supplemental age information
US11768778B2 (en) * 2021-09-30 2023-09-26 Advanced Micro Devices, Inc. Re-reference indicator for re-reference interval prediction cache replacement policy
US11886354B1 (en) 2022-05-20 2024-01-30 Apple Inc. Cache thrash detection
US12056058B2 (en) * 2022-06-27 2024-08-06 Arm Limited Cache replacement control

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100030970A1 (en) * 2008-08-01 2010-02-04 International Business Machines Corporation Adaptive Spill-Receive Mechanism for Lateral Caches
WO2010116735A1 (ja) * 2009-04-10 2010-10-14 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリ制御方法、プログラムおよび集積回路
US20130151778A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Dynamic Inclusive Policy in a Hybrid Cache Hierarchy Using Bandwidth
WO2015153855A1 (en) * 2014-04-04 2015-10-08 Qualcomm Incorporated Adaptive cache prefetching based on competing dedicated prefetch policies in dedicated cache sets to reduce cache pollution

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4206569C2 (de) * 1992-03-02 1994-12-22 Siemens Ag Verfahren zur Ermittlung von Verdrängungs-Misses bei einem von einer Reihenfolge von Programmteilen gebildeten Programm
US6510493B1 (en) 1999-07-15 2003-01-21 International Business Machines Corporation Method and apparatus for managing cache line replacement within a computer system
JP4072665B2 (ja) * 2000-05-22 2008-04-09 富士ゼロックス株式会社 画像処理装置及びキャッシュメモリ
US7133971B2 (en) 2003-11-21 2006-11-07 International Business Machines Corporation Cache with selective least frequently used or most frequently used cache line replacement
US7457922B2 (en) * 2004-11-20 2008-11-25 International Business Machines Corporation Cache line placement prediction for multiprocessor non-uniform cache architecture systems
US8683129B2 (en) 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
US8661202B2 (en) * 2010-12-10 2014-02-25 International Business Machines Corporation Systems and methods for destaging storage tracks from cache
US8806137B2 (en) 2011-06-17 2014-08-12 Lsi Corporation Cache replacement using active cache line counters
US8688915B2 (en) * 2011-12-09 2014-04-01 International Business Machines Corporation Weighted history allocation predictor algorithm in a hybrid cache
US10223278B2 (en) * 2016-04-08 2019-03-05 Qualcomm Incorporated Selective bypassing of allocation in a cache

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100030970A1 (en) * 2008-08-01 2010-02-04 International Business Machines Corporation Adaptive Spill-Receive Mechanism for Lateral Caches
WO2010116735A1 (ja) * 2009-04-10 2010-10-14 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリ制御方法、プログラムおよび集積回路
US20130151778A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Dynamic Inclusive Policy in a Hybrid Cache Hierarchy Using Bandwidth
WO2015153855A1 (en) * 2014-04-04 2015-10-08 Qualcomm Incorporated Adaptive cache prefetching based on competing dedicated prefetch policies in dedicated cache sets to reduce cache pollution

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021510886A (ja) * 2018-03-20 2021-04-30 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated プリフェッチャベースの投機的ダイナミックランダムアクセスメモリ読み出し要求技術
JP2023500590A (ja) * 2019-10-31 2023-01-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド キャッシュアクセス測定デスキュー
US11880310B2 (en) 2019-10-31 2024-01-23 Advanced Micro Devices, Inc. Cache access measurement deskew
JP7453360B2 (ja) 2019-10-31 2024-03-19 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド キャッシュアクセス測定デスキュー

Also Published As

Publication number Publication date
EP3433745A4 (en) 2019-12-04
KR102357246B1 (ko) 2022-01-28
CN109313610A (zh) 2019-02-05
EP3433745A1 (en) 2019-01-30
EP3433745B1 (en) 2022-07-27
US10430349B2 (en) 2019-10-01
CN109313610B (zh) 2023-10-03
JP6752292B2 (ja) 2020-09-09
KR20190008249A (ko) 2019-01-23
US20170357588A1 (en) 2017-12-14
WO2017218026A1 (en) 2017-12-21

Similar Documents

Publication Publication Date Title
JP6752292B2 (ja) キャッシュ置換ポリシーのスケーリングされたセットデュエリング
CN106537360B (zh) 用于具有动态分区的共享高速缓存的方法和装置
JP5090047B2 (ja) ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US9348753B2 (en) Controlling prefetch aggressiveness based on thrash events
US20140181412A1 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
CN111263934B (zh) 至少具有三个缓存级别的缓存层级的混合低级缓存包含策略
CN115443454A (zh) 自适应高速缓存
US20170357596A1 (en) Dynamically adjustable inclusion bias for inclusive caches
US20170083444A1 (en) Configuring fast memory as cache for slow memory
US11604733B1 (en) Limiting allocation of ways in a cache based on cache maximum associativity value
US8589627B2 (en) Partially sectored cache
JP7072573B2 (ja) 非割り当てキャッシュポリシー
JP2019521410A (ja) 別のキャッシュレベルからのヒントに基づくキャッシュエントリエイジの設定
EP3724774B1 (en) Rinsing cache lines from a common memory page to memory
US10725675B2 (en) Management apparatus, information processing apparatus, management method, and computer program product
Sivakumar et al. Enhancing lifetime of non-volatile memory caches by write-aware techniques
EP3258383A1 (en) Dynamically adjustable inclusion bias for inclusive caches

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190612

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200602

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200721

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200818

R150 Certificate of patent or registration of utility model

Ref document number: 6752292

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250