JP2023532432A - アソシアティブキャッシュのための直接マッピングモード - Google Patents

アソシアティブキャッシュのための直接マッピングモード Download PDF

Info

Publication number
JP2023532432A
JP2023532432A JP2022578563A JP2022578563A JP2023532432A JP 2023532432 A JP2023532432 A JP 2023532432A JP 2022578563 A JP2022578563 A JP 2022578563A JP 2022578563 A JP2022578563 A JP 2022578563A JP 2023532432 A JP2023532432 A JP 2023532432A
Authority
JP
Japan
Prior art keywords
memory
cache
request
data
allocate
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
JP2022578563A
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 JP2023532432A publication Critical patent/JP2023532432A/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/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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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
    • 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/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
    • 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/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

Figure 2023532432000001
キャッシュを制御する方法が開示される。方法は、データを記憶するためにメモリの部分を割り当てる要求を受信することを含む。方法は、データを記憶するためにメモリの部分を割り当てる要求が、データがキャッシュメモリに連続的に常駐するというキャッシュ常駐要求を含む場合に、メモリの部分をキャッシュメモリの割り当てられた連続部分に直接マッピングすることを含む。方法は、データを記憶するためにメモリの部分を割り当てる要求が、データがキャッシュメモリに連続的に常駐するというキャッシュ常駐要求を含まない場合に、アソシアティブマッピングを使用して、メモリの部分をキャッシュメモリにマッピングすることを含む。
【選択図】図3

Description

(関連出願の相互参照)
本願は、2020年6月26日に出願された「DIRECT MAPPING MODE FOR ASSOCIATIVE CACHE」と題する米国仮出願第63/044,735号、及び、2020年9月25日に出願された「DIRECT MAPPING MODE FOR ASSOCIATE CACHE」と題する米国特許出願第17/033,287号の利益を主張するものであり、これらの出願の全体は、参照により本明細書に組み込まれる。
キャッシュメモリ(以下、「キャッシュ」)は、より大きなメモリ部分において頻繁にアクセスされるデータのコピーをキャッシュに記憶することによって、より大きなメモリ部分(例えば、メインメモリ)に記憶されたデータへのアクセスを加速するために使用される。プロセッサが、(例えば、アドレスによって識別される)より大きいメモリ部分へのアクセス(例えば、そこからデータを読み出す、又は、そこにデータを書き込む)を要求する場合に、プロセッサは、最初に、データのコピーがキャッシュに記憶されているかどうかを判定する。データのコピーがキャッシュに記憶されていると判定された場合、プロセッサは、キャッシュにアクセスし、データのより効率的なアクセスを容易にする。
頻繁にアクセスされるデータは、通常、キャッシュラインと呼ばれる固定サイズのブロックでメモリからキャッシュにコピーされる。キャッシュラインがキャッシュにコピーされる場合に、コピーされたデータ及び要求されたメモリアドレス(例えば、タグ)を含むキャッシュエントリが生成される(すなわち、キャッシュに配置される)。タグがキャッシュにある場合、キャッシュヒットが発生し、データがキャッシュラインにおいてアクセスされる。そのタグがキャッシュにない場合、キャッシュミスが発生する。新しいエントリがキャッシュに割り振られ、より大きなメモリからのデータがキャッシュにコピーされ、データがアクセスされる。既存のエントリは、直接マッピング及びアソシアティブマッピング(associative mapping)を含む異なるマッピングポリシーに従って、新しいエントリによって置き換えられる(例えば、追い出される)ことがある。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
本開示の1つ以上の特徴を実装することができる例示的なデバイスのブロック図である。 本開示の1つ以上の特徴を実装するための例示的な構成要素を示すブロック図である。 本開示の特徴による、異なるキャッシュモードを動的に切り替える例示的な方法を示すフロー図である。 本開示の特徴による、識別されたメモリのブロックへの異なるメモリアドレスのマッピングを示す図である。 本開示の特徴による、不連続なメモリ部分をキャッシュの所定のキャッシュインデックスに直接マッピングする例を示す図である。 本開示の特徴による、識別されたメモリの部分をキャッシュに直接マッピングする例示的な方法を示すフロー図である。
直接マッピングポリシー(direct mapping policy)が使用される場合に、各メモリアドレスは、キャッシュ内の特定の位置(例えば、インデックス)に割り当てられる。メモリとキャッシュとの間のマッピングは、インデックス及びオフセットを(例えば、ビット演算子又は単純な算術を用いて)容易に計算することができるので、容易に実装され、多くのキャッシュラインを通して検索することを回避するので、キャッシュ内にデータを配置するために消費される電力が少ない。しかしながら、多くのアドレスが同じキャッシュインデックスにマッピングされている場合に、未使用のキャッシュラインが存在するにもかかわらず、直接マッピングキャッシュのキャッシュラインが繰り返し追い出される(エビクトされる)可能性がある。
フルアソシアティブマッピングポリシーが使用される場合に、新しいエントリを任意のキャッシュアドレスにコピーすることができる。フルアソシアティブキャッシュ(fully associative caches)の場合、データを任意の未使用キャッシュラインに配置することができるので、単一のキャッシュブロックにマッピングされる複数のメモリアドレス間に競合がない(すなわち、競合によるキャッシュミスがない)。しかしながら、フルアソシアティブキャッシュは、アドレス全体がタグとして使用され、直接マッピングキャッシュよりもキャッシュサイズが大幅に増加するので、実装するのに非常に費用がかかる。加えて、キャッシュ内の各キャッシュブロックのタグは、データが任意のキャッシュラインに位置することができるためにチェックされなければならず、これは、電力消費及び待ち時間を増加させる。したがって、アソシアティブキャッシュは、直接マッピングキャッシュよりもキャッシュミス率が低いが、直接マッピングキャッシュよりもハードウェアコスト、電力消費及び待ち時間が増加する。
これらの理由から、従来のアソシアティブキャッシュは、通常、各エントリがN個のキャッシュラインを含むセットに割り当てられ、各ラインが任意のタグからのデータを保持することができるNウェイセットアソシアティブマッピングポリシー(N-way set associative mapping policy)を利用する。セットアソシアティブキャッシュの場合、Nウェイセットアソシアティブポリシーにおけるライン数Nが大きいほど、アソシアティビティが大きくなり、キャッシュミスの確率が低くなる。しかしながら、アソシアティビティの増加は、ライン数Nの増加、及び、検索するより大きい数のアドレスを含み、増加された待ち時間、より多くの消費電力、及び、より大きい記憶領域をもたらす。
一般に、キャッシュがメインメモリに近づくにつれて、キャッシュは、物理メモリアドレスタグ付けキャッシュ(すなわち、物理タグ付けキャッシュ)として実装される。物理タグ付けキャッシュは、仮想から物理への変換が実行された後に、物理アドレスを使用してアクセスされる。
動作の省電力期間(例えば、低電力モード又は電力管理アクティビティ期間)中に、1つ以上の構成要素(例えば、DRAM)を使用しないプログラムは、通常、これらの構成要素をオフラインにすることができるように実行される。しかし、いくつかの例では、クライアント(例えば、ディスプレイクライアント等の高サービスクライアント)は、これらの動作の省電力動作期間中にそれらの機能を実行するためにデータを継続的にフェッチするプログラムを実行する。DRAM又は他のメモリ部分(例えば、他の非物理タグ付けキャッシュ)等の構成要素は、電力を節約するためにオフラインであるので、物理タグ付けキャッシュは、データを継続的にフェッチするプログラムを実行するために使用される。
しかしながら、物理的に連続したメモリの大きな部分を仮想的に連続した大きなアドレスに割り当てることは困難である。例えば、クライアントがメモリの部分を割り当てることを要求する場合に、開始アドレス及び終了アドレスを有する仮想メモリ(例えば、サイズフレームバッファ)の連続部分が割り当てられる。しかしながら、仮想メモリの連続部分にマッピングされる物理メモリ(例えば、メインメモリ)の部分が連続しない(物理メモリにおいてセグメント化されている)場合、仮想メモリと物理メモリアドレスとの間の変換は、不連続な物理メモリアドレスをもたらす可能性がある。不連続な物理メモリアドレスが、物理タグ付けアソシアティブキャッシュ内で互いにエイリアスを生じる(例えば、同じインデックスにマッピングされる)場合に、未使用の(例えば、空の)キャッシュライン又は使用頻度の低いキャッシュラインの存在にかかわらず、データが追い出される。
要求されたメモリの部分(例えば、8KB)がキャッシュサイズ(例えば、1MB)未満である場合に、プログラムを実行するために使用されるデータの各部分が、何れのデータもキャッシュから追い出されることなく、プログラムの実行全体を通してキャッシュ内に存在することが物理的に実現可能である。しかし、上述したように、不連続な物理メモリアドレスが、物理タグ付けキャッシュの同じインデックスにエイリアスを生じる場合に、未使用又は使用頻度の低いキャッシュラインが利用可能である場合であっても、従来のセットアソシアティブポリシーは、データをキャッシュから追い出す。
本願は、データを記憶するために、メモリ割り当てに対するクライアント(例えば、ディスプレイクライアント)からの要求が、要求されたメモリの部分に記憶されるデータの各部分がキャッシュに連続的に常駐する(すなわち、キャッシュから追い出されない)という要求も含むかどうかを判定するための装置及び方法を提供する。要求は、例えば、データが、ある期間の間、ある数のサイクルの間、又は、イベントの発生(例えば、プログラム若しくはプログラムの部分が、実行を完了するか、クライアントが、データがもはやキャッシュ内に常駐する必要がないことを示すか、若しくは、処理デバイスが省電力モードから出る)まで、キャッシュ内に連続的に常駐するという要求である。連続キャッシュ常駐の要求の判定に基づいて、キャッシュは、キャッシュがアソシアティブマッピングされるモードと、キャッシュの部分が直接マッピングされ、キャッシュの別の部分がアソシアティブマッピングされるモードと、の間で切り替わるように動的に制御される。例えば、物理的に構築されたアソシアティブキャッシュは、直接マッピングモードで動的に使用される。したがって、動的に判定された特定の使用ケース(例えば、データがキャッシュ内に継続的に常駐するという要求)に応じてプログラム/アプリケーションを実行するために、アソシアティブマッピングと直接マッピングの両方を実装することができる。
例えば、割り当てられるメモリの部分に対するクライアントからの要求が、キャッシュ内に連続的に常駐するデータに対する要求も含む場合に、要求されたメモリの異なる不連続部分が識別され、キャッシュ内の割り当てられたインデックスに直接マッピングされる。したがって、要求されたメモリの不連続部分に対応するデータは、追い出されず、ある期間の間、ある数のサイクルの間、又は、イベントの発生までキャッシュ内に残る。そうでない場合、要求されたメモリのアドレスは、アソシアティブマッピングを使用してキャッシュにマッピングされる。
本開示の特徴は、同じ仮想から物理への変換情報を共有しないか、又は、同じ仮想アドレスを共有しない複数のクライアントが、同じ物理タグ付けキャッシュを使用しようとする場合に有用である。
キャッシュを制御する方法が開示される。本方法は、データを記憶するためにメモリの部分を割り当てる要求を受信することを含む。また、本方法は、データを記憶するためにメモリの部分を割り当てる要求が、データがキャッシュメモリに連続的に常駐するというキャッシュ常駐要求を含む場合に、メモリの部分をキャッシュメモリの割り当てられた連続部分に直接マッピングすることを含む。また、本方法は、データを記憶するためにメモリの部分を割り当てる要求が、データがキャッシュメモリに連続的に常駐するというキャッシュ常駐要求を含まない場合に、アソシアティブマッピングを使用してメモリの部分をキャッシュメモリにマッピングすることを含む。
キャッシュを制御する方法が開示される。本方法は、データを記憶するために、キャッシュメモリ内のデータの連続的な常駐のためにメモリの部分を割り当てる要求を受信することと、第1のメモリアドレスにマッピングされた第1の識別子を使用して、メモリの部分の第1のセグメントを識別することと、を含む。また、本方法は、識別されたメモリの第1のセグメントのために、キャッシュメモリの第1の連続部分を予約することと、キャッシュメモリの第1の連続部分をメモリの第1のセグメント化された部分に割り当てることと、を含む。本方法は、第1のメモリアドレスと不連続である第2のメモリアドレスにマッピングされた第2の識別子を使用して、メモリの部分の第2のセグメントを識別することと、識別されたメモリの第2のセグメントのために、キャッシュメモリの第2の連続部分を予約することと、キャッシュメモリの第2の連続部分をメモリの第2のセグメント化された部分に割り当てることと、を更に含む。
メモリと、メモリとは別のキャッシュメモリ部分と、プロセッサと、を含む処理デバイスが開示される。プロセッサは、データを記憶するためにメモリの部分を割り当てる要求を受信することと、データを記憶するためにメモリの部分を割り当てる要求が、データがキャッシュメモリに連続的に常駐するというキャッシュ常駐要求を含む場合に、メモリの部分をキャッシュメモリの割り当てられた連続部分に直接マッピングすることと、データを記憶するためにメモリの部分を割り当てる要求が、データがキャッシュメモリに連続的に常駐するというキャッシュ常駐要求を含まない場合に、アソシアティブマッピングを使用してメモリの部分をキャッシュメモリにマッピングすることと、を行うように構成されている。
図1は、本開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含み得る。デバイス100は、プロセッサ102と、メモリ104と、記憶装置106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、図1に示されていない追加の構成要素を含み得ることを理解されたい。
様々な代替例では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィック処理ユニット(graphics processing unit、GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に位置してもよいし、プロセッサ102とは別に位置してもよい。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM(DRAM)、キャッシュ)を含む。
記憶装置106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であること、並びに、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合に同じ態様で操作され得ることに留意されたい。出力ドライバ114は、表示デバイス118に連結された加速処理デバイス(accelerated processing device、「APD」)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算及びグラフィックスレンダリングコマンドを処理し、表示のために表示デバイス118にピクセル出力を提供するように構成されている。以下で更に詳細に説明するように、APD116は、単一命令複数データ(「single-instruction-multiple-data、SIMD」)パラダイムに従って計算を行うように構成された1つ以上の並列処理ユニットを含む。こうして、様々な機能は、本明細書では、APD116によって又はAPD116と併せて行われるものとして説明しているが、様々な代替例では、APD116によって行われるものとして説明する機能は、ホストプロセッサ(例えば、プロセッサ102)によってドライブされず、表示デバイス118にグラフィック出力を提供するように構成された同様の能力を有する他のコンピューティングデバイスによって、追加的又は代替的に行われる。例えば、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書で説明する機能を行うように構成され得ることが企図される。代替的に、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが、本明細書で説明する機能を行うことが企図される。
図2は、本開示の1つ以上の特徴を実装するための例示的な構成要素を示すブロック図である。図2に示すいくつかの構成要素は、例えば、加速プロセッサ(例えば、GPU)等のプロセッサの構成要素である。本開示の特徴は、CPU等の第1のタイプの1つ以上のプロセッサ、及び/又は、GPU等の第2のタイプの1つ以上のプロセッサによって実行することができる。
本開示の特徴は、複数のレベルのうち何れかのキャッシュを使用して実装することができる。例えば、図2に示すように、構成要素は、複数のプロセッサコア204を含む。各コア204は、対応するレベル1キャッシュ214と通信し、対応するレベル1キャッシュ214を使用してデータを処理するように構成された、対応するレベル1キャッシュコントローラ218を含む。
図2に更に示すように、構成要素は、レベル2キャッシュ216と通信し、レベル2キャッシュ216を使用してデータを処理するように構成されたレベル2キャッシュコントローラ220/プロセッサを含む。また、キャッシュコントローラ/プロセッサ220は、次のキャッシュレベル(より高いキャッシュレベル)と通信する。任意の数のNレベルキャッシュを使用することができる。Nレベルキャッシュ212(例えば、ラストレベルキャッシュ)等の次のレベルキャッシュ及びNレベルキャッシュコントローラ210は、同じダイ又は複数のダイ上に位置してもよく、例えば、CPU又はGPU(図示省略)のキャッシュ等の複数のプロセッサのキャッシュと通信し、それらによって共有され得る。
メモリコントローラ/プロセッサ208は、メモリ104(例えば、DRAM)、並びに、キャッシュコントローラ220及び218と通信する。図2に示すように、複数のクライアント206が、メモリコントローラ208と通信している。クライアント206が、メモリの部分が割り当てられることを要求する場合に、メモリコントローラ208は、クライアント206(例えば、ディスプレイクライアント)から要求を受信及びサービスし、キャッシュコントローラ220を介してキャッシュ216に、キャッシュコントローラ218を介してキャッシュ214にアクセスするように構成されている。メモリコントローラ/プロセッサ208は、クライアント206から要求を受信し、メモリを割り当て、1つ以上のキャッシュ(例えば、ラストレベルキャッシュ212)へのアクセスを制御し、本明細書で説明する様々な他の機能を行うように構成されている。例えば、メモリコントローラ/プロセッサ208は、アソシアティブマッピングモードで1つ以上のクライアント206によるキャッシュアクセスを制御し、直接マッピングモードで1つ以上のクライアントによる同じキャッシュへのアクセスを制御するように構成されている。
説明を簡略化するために、図2は、単一のクライアント206を示している。しかしながら、メモリコントローラは、任意の数のクライアントから要求を受信するように構成されている。クライアントは、同じ仮想から物理への変換情報を1つ以上の他のクライアントと共有することができるか、又は、それら自身の仮想から物理への変換情報を含むことができる。各クライアントは、1つ以上の他のクライアントと同じ仮想アドレスを有するか、又は、異なる仮想アドレスを含むことができる。
一般に、キャッシュがメモリ104に近づくにつれて、キャッシュは、物理メモリアドレスタグ付けキャッシュ(すなわち、物理タグ付けキャッシュ)として実装される。本開示の特徴は、複数のクライアントが、同じ物理タグ付けキャッシュを利用しようとしており、クライアントが、同じ仮想から物理への変換情報を共有せず、同じ仮想アドレスを共有しない場合に好適である。
ここで、異なるキャッシュモードでキャッシュに動的にアクセスすることを含む、本開示の特徴を実装する例について、図3、図4A、図4B及び図5を参照しながら説明する。
説明を簡略化するために、以下で説明する例は、単一のクライアント(すなわち、ディスプレイクライアント)からの要求を含む。しかしながら、本開示の特徴は、同じキャッシュにアクセスする複数の異なるクライアントによって実装することもできる。例えば、本開示の特徴は、1つ以上のクライアントがアソシアティブマッピングモードでキャッシュにアクセスし、1つ以上のクライアントが直接マッピングモードでキャッシュにアクセスしている場合に実装することができる。
説明を簡略化するために、一例を、1MBのサイズ、64Kキャッシュライン及び16Kインデックスを有するキャッシュを使用して説明する。方法300に関して説明するキャッシュサイズ及びインデックスの数は、単なる例である。本開示の特徴は、異なるサイズ及び異なる数のインデックスを有するキャッシュを使用して実装することができ、異なる量の要求された不連続なメモリに対して実装することができる。
説明を簡略化するために、本明細書において説明する一例は、識別されたメモリの第1の部分に対応するデータにキャッシュインデックスを割り当てることを含む。また、本開示の特徴は、キャッシュインデックスごとにある数のウェイを割り当てることを含む。例えば、16ウェイキャッシュ(すなわち、キャッシュセットごとに16ウェイ)では、キャッシュの25%部分が直接マッピングモードに割り当てられる場合、インデックスごとに4ウェイが割り当てられる。したがって、この例では、例えば、キャッシュのより大きい部分(例えば、15/16)が直接マッピングモードのために割り当てられない限り、各インデックスの部分(すなわち、インデックス全体未満)が割り当てられる。
図3は、本開示の特徴による、異なるキャッシュモードを動的に切り替える例示的な方法300を示すフロー図である。図4Aは、識別されたメモリのブロックへの異なるメモリアドレスのマッピングを示す図である。図4Bは、不連続なメモリ部分をキャッシュ402の所定のキャッシュインデックスに直接マッピングする例を示す図である。
ブロック302に示すように、方法300は、データを記憶するためにメモリの部分(例えば、ブロック)を割り当てる要求を受信することを含む。場合によっては、要求は、メモリの部分に記憶されるデータの連続キャッシュ常駐の要求を含む。例えば、4KBのメモリのブロックを割り当て、4KBのメモリのブロックに記憶されるデータが、ある期間の間、ある数のサイクルの間、又は、イベントの発生(例えば、プログラム若しくはプログラムの部分が実行を完了するか、クライアントが、データがもはやキャッシュ内に常駐する必要がないことを示すか、処理デバイスが省電力モードから出るか、若しくは、別のイベントの発生)までキャッシュに常駐する(すなわち、追い出されない)という要求がディスプレイクライアントから受信される。
ブロック304に示すように、方法300は、要求がメモリの部分に対応するデータの連続キャッシュ常駐の要求を含むかどうかを判定することを含む。ブロック304において、要求が連続キャッシュ常駐の要求を含まないと判定された場合に、ブロック306において、アソシアティブマッピングを使用してメモリがキャッシュ402に割り当てられる。
ブロック304において、要求が連続キャッシュ常駐の要求を含むと判定された場合、ブロック308において、メモリの部分が、メモリの部分のためのアドレスにマッピングされた識別子を使用して識別される。例えば、ディスプレイクライアントは、メモリアドレスをブロック識別子によってそれぞれ識別されるメモリのブロックにマッピングするマッピング変換情報(例えば、変換テーブル)にアクセスする。変換テーブルは、例えば、メモリアドレス(例えば、アドレス0B)をブロック識別子MBlk1(図4Aに示す)によって識別される第1の4KBのメモリのブロックにマッピングする変換、及び、メモリアドレス(例えば、アドレス1MB)をブロック識別子MBlk2(これも図4Aに示す)によって識別される第2の4KBのメモリのブロックにマッピングする変換等のように、複数の変換を含む。
場合によっては、直接マッピングモードを使用するかどうかの判定は、割り当てるように要求されたメモリの量がキャッシュ402の容量(例えば、サイズ)未満であるかどうか、又は、キャッシュ402の容量の所定の部分(例えば、比率、パーセンテージ)未満であるかどうかを判定することを含む。例えば、直接マッピングは、要求されたメモリ量(例えば、4KB)がキャッシュ402の容量(例えば、1MB)未満であるか、又は、要求されたメモリ量がキャッシュ402の所定部分(例えば、25%)未満である場合に使用される。そうでない場合、ブロック306において、アソシアティブマッピングを使用してメモリの部分がキャッシュ402に割り当てられる。
ブロック310において、キャッシュの部分(例えば、ある数のインデックス)が、ブロック識別子MBlk1によって識別され、アドレス0Bにマッピングされたメモリの部分(例えば、4Kブロック)のために予約される。例えば、図4Aに示すように、キャッシュ402のキャッシュインデックス64~127が、アドレス0BにマッピングされたメモリのブロックMBlk1のために予約される。
ブロック312に示すように、方法300は、(例えば、識別されたメモリの部分に対応するデータをキャッシュするために)キャッシュの予約された部分(例えば、予約されたインデックス)を、識別されたメモリの部分に割り当てることを含む。例えば、図4Bの第1の列に示す第1のサイクルでは、アソシアティブマッピングポリシーに従って発生するMBlk1に対してキャッシュ402のインデックス0~63を割り当てる代わりに、キャッシュ402の予約されたインデックス64~127がMBlk1に割り当てられる。
図5は、本開示の特徴による、識別されたメモリの部分をキャッシュ402に直接マッピングする例示的な方法500を示すフロー図である。図5において説明する例示的な方法500では、8KBのメモリの部分が要求され、2つの別の4KBのメモリのブロックにセグメント化される。
ブロック502に示すように、方法500は、データを記憶するためにメモリの部分を割り当て、ある期間の間、ある数のサイクルの間、又は、イベントの発生まで、キャッシュ402内のデータの連続的な常駐(すなわち、追い出されない)のための要求を受信することを含む。例えば、8KBのメモリのブロックを割り当てる要求、及び、連続キャッシュ常駐の要求が、ディスプレイクライアントから受信される。8KBのメモリのブロックは、物理メモリの2つの不連続な4KBのブロックにマッピングされ、各4KBのブロックの物理メモリアドレスは、物理タグ付けアソシアティブキャッシュ402の同じインデックスにエイリアスを生じる。
要求が連続キャッシュ常駐の要求を含むので、キャッシュは、ブロック504~510に関して以下で説明するように、2つのセグメント化された4KBのブロック(不連続な物理メモリアドレスにマッピングされる)を2つの異なる連続キャッシュ部分(例えば、キャッシュインデックスのセット)に直接マッピングするように動的に制御される。場合によっては、2つの不連続な4KBブロックをキャッシュインデックスの2つの異なる連続セットに直接マッピングするという判定は、要求されたメモリの部分の量がキャッシュ402の容量(例えば、サイズ)未満であるかどうかの判定を含む。例えば、8KBのメモリの部分が1MBキャッシュサイズ未満であるので、2つの不連続な4KBのブロックをキャッシュインデックスの2つの異なる連続セットに直接マッピングすることが判定される。
識別されたメモリのセグメント化された部分(例えば、4Kのメモリのブロック)のためにある数のインデックスが要求される場合に、その数のインデックスが、キャッシュにおいて予約され、識別されたメモリのセグメント化された部分に割り当てられ、これは、予約されたインデックスへのアソシアティブ割り当てを防止する。例えば、ブロック504に示すように、方法500は、メモリの第1のセグメント化された部分のためにアドレスにマッピングされた識別子(例えば、MBlk1)を使用して、メモリの第1のセグメント化された部分を識別することを含む。ディスプレイクライアントは、物理メモリアドレスをブロック識別子によってそれぞれ識別されるメモリのブロックにマッピングするマッピング変換情報(例えば、変換テーブル)にアクセスする。変換テーブルは、例えば、メモリアドレス(例えば、アドレス0B)を、(図4Aに示す)ブロック識別子MBlk1によって識別される第1の4KBのメモリのブロックにマッピングする変換等のように、複数の変換を含む。したがって、サイクルにおいて、第1の4Kのメモリのブロックは、アドレス0BにマッピングされるMBlk1として(例えば、メモリコントローラ/プロセッサによって)識別される。
ブロック506に示すように、方法500は、識別されたメモリの第1のセグメント化された部分(例えば、MBlk1)のためにキャッシュの連続部分(例えば、予約された数のインデックス)を予約することを含む。例えば、(図4Aに示すように)キャッシュ402のキャッシュインデックス64~127の連続セットが、アドレス0BにマッピングされるMBlk1のために予約される。
ブロック508に示すように、方法500は、予約された連続キャッシュ部分(例えば、予約された数のインデックス)を、識別されたメモリの第2の部分(例えば、MBlk1)に割り当てることを含む。例えば、図4Bの第1の列に示す第1のサイクルでは、アソシアティブマッピングポリシーに従って発生するMBlk1のためのキャッシュ402のインデックス0~63を割り当てる代わりに、(例えば、MBlk1に対応するデータをキャッシュするために)キャッシュ402の予約されたインデックス64~127がMBlk1に割り当てられる。
ブロック510に示すように、メモリの第2のセグメント化された部分(例えば、第2の4Kのメモリのブロック)が、要求されたメモリの部分の第2のセグメント化された部分のためにアドレスにマッピングされる識別子(例えば、MBlk2)を使用して識別される。ディスプレイクライアントは、メモリアドレス(例えば、アドレス1MB)を、(図4Aに示す)ブロック識別子MBlk2によって識別される第2の4KBのメモリのブロックにマッピングする変換を含むマッピング変換情報(例えば、変換テーブル)にアクセスする。
ブロック512に示すように、方法500は、第2の識別されたメモリの第2のセグメント化された部分(例えば、MBlk2)のためにキャッシュの連続部分(例えば、予約された数のインデックス)を予約することを含む。例えば、キャッシュ402のキャッシュインデックス0~63の連続セットが、(図4Aに示す)アドレス1MBにマッピングされるMBlk2のために予約される。
ブロック514に示すように、方法500は、予約された連続キャッシュ部分(例えば、予約された数のインデックス)を、識別されたメモリの第2の部分(例えば、MBlk2)に割り当てることを含む。例えば、図4Bの第2の列に示す第2のサイクルでは、キャッシュ402の予約されたインデックス0~63が、(例えば、MBlk2に対応するデータをキャッシュするために)MBlk2に割り当てられる。したがって、不連続な物理メモリアドレス(アドレス0B及びアドレス1MB)は、同じキャッシュインデックスにエイリアスを生じさせず、不連続なブロックMBlk1及びMBlk2の両方に対するデータが、要求されたキャッシュ常駐の持続時間の間、追い出されない。
キャッシュの部分(例えば、25%)が(例えば、連続キャッシュ常駐の要求を受信したことに応じて)直接マッピングモードに割り当てられる間、キャッシュのセグメント化された部分が予約されず、アソシアティブ割り当ては、識別されたメモリのブロックのためにキャッシュのセグメント化された部分(例えば、キャッシュインデックスの連続セット)を予約する要求があるまで防止されない。例えば、キャッシュインデックス64~127の連続セットは、メモリの第1のブロックがブロック識別子MBlk1を介して識別されるまで予約されず、キャッシュインデックス0~63の連続セットは、メモリの第2のブロックがブロック識別子MBlk2を介して識別されるまで予約されない。時には、任意の量の割り当てられた部分を使用して、連続キャッシュ常駐を満足させることができる。したがって、キャッシュの割り振られた部分のより少ない量(例えば、25%未満)が使用される場合に、キャッシュのより多くが、アソシアティブアクセスを要求するクライアントに利用可能であり、性能ペナルティを低減する。
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、加速処理デバイス116、メモリコントローラ/プロセッサ208、キャッシュコントローラ/プロセッサ210、218、220を含むが、これらに限定されない、図において示され及び/又は本明細書で説明する様々な機能ユニットは、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体若しくは別の記憶媒体に記憶されているプログラム、ソフトウェア若しくはファームウェアとして実装することができる。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実装することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ(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 (20)

  1. キャッシュを制御する方法であって、
    データを記憶するためにメモリの部分を割り当てる要求を受信することと、
    前記データを記憶するためにメモリの部分を割り当てる要求が、前記データがキャッシュメモリに連続的に常駐するというキャッシュ常駐要求を含む場合に、前記メモリの部分を前記キャッシュメモリの割り当てられた連続部分に直接マッピングすることと、
    前記データを記憶するためにメモリの部分を割り当てる要求が、前記データがキャッシュメモリに連続的に常駐するというキャッシュ常駐要求を含まない場合に、アソシアティブマッピングを使用して、前記メモリの部分を前記キャッシュメモリにマッピングすることと、を含む、
    方法。
  2. 前記メモリの部分を割り当てる要求が前記キャッシュ常駐要求を含むかどうかを判定することを更に含む、
    請求項1の方法。
  3. メモリアドレスにマッピングされた識別子によって前記メモリの部分を識別することと、
    前記メモリアドレスにマッピングされた識別子によって識別された前記メモリの部分のために前記キャッシュメモリの部分を予約することと、を更に含む、
    請求項1の方法。
  4. 前記キャッシュメモリの割り当てられた連続部分は、連続する数のキャッシュインデックスを含む、
    請求項1の方法。
  5. いくつかのウェイが、各キャッシュインデックスに割り当てられる、
    請求項4の方法。
  6. 前記データが前記キャッシュメモリの部分に連続的に常駐するという前記キャッシュ常駐要求は、前記データが、ある期間の間、あるサイクル数の間、又は、イベントの発生まで、前記キャッシュメモリの部分から追い出されないという要求である、
    請求項1の方法。
  7. 前記キャッシュメモリの部分は、キャッシュメモリの物理的にタグ付けされた部分である、
    請求項1の方法。
  8. 前記メモリの部分を割り当てる要求は、第1のクライアントからの第1の要求であり、
    前記方法は、
    第2のクライアントから、第2のデータを記憶するためにメモリの第2の部分を割り当てる第2の要求を受信することであって、前記第1のクライアントによって使用される仮想から物理への変換情報と、前記第2のクライアントによって使用される仮想から物理への変換情報と、が同一ではない、ことと、
    前記第2のクライアントからの前記第2の要求が、前記第2のデータが前記キャッシュメモリに連続的に常駐するという要求を含む場合に、前記メモリの第2の部分を前記キャッシュメモリの第2の割り当てられた連続部分に直接マッピングすることと、
    前記第2のクライアントからの前記第2の要求が、前記第2のデータが前記キャッシュに連続的に常駐するという要求を含まない場合に、アソシアティブマッピングを使用して、前記メモリの第2の部分を前記キャッシュメモリにマッピングすることと、を更に含む、
    請求項1の方法。
  9. キャッシュを制御する方法であって、
    データを記憶するために、及び、キャッシュメモリに前記データを連続的に常駐させるために、メモリの部分を割り当てる要求を受信することと、
    第1のメモリアドレスにマッピングされた第1の識別子を使用して、前記メモリの部分の第1のセグメントを識別することと、
    識別されたメモリの第1のセグメントのために、前記キャッシュメモリの第1の連続部分を予約することと、
    前記キャッシュメモリの第1の連続部分を、前記メモリの第1のセグメント化された部分に割り当てることと、
    前記第1のメモリアドレスと不連続である第2のメモリアドレスにマッピングされた第2の識別子を使用して、前記メモリの部分の第2のセグメントを識別することと、
    識別されたメモリの第2のセグメントのために、前記キャッシュメモリの第2の連続部分を予約することと、
    前記キャッシュメモリの前記第2の連続部分を、前記メモリの第2のセグメント化された部分に割り当てることと、を含む、
    方法。
  10. 前記キャッシュメモリの割り当てられた連続部分は、連続する数のキャッシュインデックスを含む、
    請求項9の方法。
  11. いくつかのウェイが、各キャッシュインデックスに割り当てられる、
    請求項9の方法。
  12. 連続的にキャッシュに常駐させる要求は、前記データが、ある期間の間、あるサイクル数の間、又は、イベントの発生まで、前記キャッシュメモリの部分から追い出されないという要求である、
    請求項9の方法。
  13. 前記キャッシュは、物理的にタグ付けされたキャッシュである、
    請求項9の方法。
  14. 処理デバイスであって、
    メモリと、
    前記メモリとは別のキャッシュメモリと、
    プロセッサと、を備え、
    前記プロセッサは、
    データを記憶するためにメモリの部分を割り当てる要求を受信することと、
    前記データを記憶するためにメモリの部分を割り当てる要求が、前記データがキャッシュメモリに連続的に常駐するというキャッシュ常駐要求を含む場合に、前記メモリの部分を前記キャッシュメモリの割り当てられた連続部分に直接マッピングすることと、
    前記データを記憶するためにメモリの部分を割り当てる要求が、前記データがキャッシュメモリに連続的に常駐するというキャッシュ常駐要求を含まない場合に、アソシアティブマッピングを使用して、前記メモリの部分を前記キャッシュメモリにマッピングすることと、
    を行うように構成されている、
    処理デバイス。
  15. 前記プロセッサは、前記メモリの部分を割り当てる要求が前記キャッシュ常駐要求を含むかどうかを判定するように構成されている、
    請求項14の処理デバイス。
  16. 前記プロセッサは、
    メモリアドレスにマッピングされた識別子によって前記メモリの部分を識別することと、
    前記メモリアドレスにマッピングされた識別子によって識別された前記メモリの部分のために前記キャッシュメモリの部分を予約することと、
    を行うように構成されている、
    請求項14の処理デバイス。
  17. 前記キャッシュメモリの割り当てられた連続部分は、連続する数のキャッシュインデックスを含む、
    請求項14の処理デバイス。
  18. いくつかのウェイが、各キャッシュインデックスに割り当てられる、
    請求項14の処理デバイス。
  19. 前記データが前記キャッシュメモリの部分に連続的に常駐するという前記キャッシュ常駐要求は、前記データが、ある期間の間、あるサイクル数の間、又は、イベントの発生まで、前記キャッシュメモリの部分から追い出されないという要求である、
    請求項14の処理デバイス。
  20. 前記キャッシュメモリの部分は、キャッシュメモリの物理的にタグ付けされた部分である、
    請求項14の処理デバイス。
JP2022578563A 2020-06-26 2021-06-16 アソシアティブキャッシュのための直接マッピングモード Pending JP2023532432A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063044735P 2020-06-26 2020-06-26
US63/044,735 2020-06-26
US17/033,287 2020-09-25
US17/033,287 US11422935B2 (en) 2020-06-26 2020-09-25 Direct mapping mode for associative cache
PCT/US2021/037709 WO2021262509A1 (en) 2020-06-26 2021-06-16 Direct mapping mode for associative cache

Publications (1)

Publication Number Publication Date
JP2023532432A true JP2023532432A (ja) 2023-07-28

Family

ID=79030952

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022578563A Pending JP2023532432A (ja) 2020-06-26 2021-06-16 アソシアティブキャッシュのための直接マッピングモード

Country Status (6)

Country Link
US (1) US11422935B2 (ja)
EP (1) EP4172788A4 (ja)
JP (1) JP2023532432A (ja)
KR (1) KR20230025864A (ja)
CN (1) CN115917516A (ja)
WO (1) WO2021262509A1 (ja)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009503A (en) * 1994-04-22 1999-12-28 International Business Machines Corporation Cache memory indexing using virtual, primary and secondary color indexes
US5694567A (en) * 1995-02-09 1997-12-02 Integrated Device Technology, Inc. Direct-mapped cache with cache locking allowing expanded contiguous memory storage by swapping one or more tag bits with one or more index bits
US6446168B1 (en) * 2000-03-22 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamically switching a cache between direct-mapped and 4-way set associativity
US6889291B1 (en) * 2000-06-30 2005-05-03 Intel Corporation Method and apparatus for cache replacement for a multiple variable-way associative cache
US7760804B2 (en) * 2004-06-21 2010-07-20 Intel Corporation Efficient use of a render cache
JP2007102314A (ja) * 2005-09-30 2007-04-19 Fujitsu Ltd ディスクキャッシュ制御装置
WO2008149348A2 (en) * 2007-06-04 2008-12-11 Yissum Research Development Company Of The Hebrew University Of Jerusalem Method architecture circuit & system for providing caching
US8965819B2 (en) * 2010-08-16 2015-02-24 Oracle International Corporation System and method for effective caching using neural networks
US20120124291A1 (en) * 2010-11-16 2012-05-17 International Business Machines Corporation Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data
CN104137084B (zh) * 2011-12-28 2017-08-11 英特尔公司 提高耐久性和抗攻击性的用于pcm缓存的有效动态随机化地址重映射
WO2013153581A1 (en) * 2012-04-13 2013-10-17 Hitachi, Ltd. Storage apparatus and data management method
US9323463B2 (en) * 2014-08-05 2016-04-26 Hitachi, Ltd. Storage system and cache control method
US10719434B2 (en) * 2014-12-14 2020-07-21 Via Alliance Semiconductors Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode

Also Published As

Publication number Publication date
EP4172788A4 (en) 2024-07-24
US11422935B2 (en) 2022-08-23
CN115917516A (zh) 2023-04-04
US20210406177A1 (en) 2021-12-30
WO2021262509A1 (en) 2021-12-30
KR20230025864A (ko) 2023-02-23
EP4172788A1 (en) 2023-05-03

Similar Documents

Publication Publication Date Title
US9158685B2 (en) System cache with cache hint control
TWI787129B (zh) 記憶體請求之快取串流
JP7443344B2 (ja) 外部メモリベースのトランスレーションルックアサイドバッファ
EP2266040A2 (en) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
US9043570B2 (en) System cache with quota-based control
CN107015923B (zh) 用于管理探听操作的一致性互连和包括其的数据处理装置
JP2019096309A (ja) メンテナンス動作の実行
US12099451B2 (en) Re-reference interval prediction (RRIP) with pseudo-LRU supplemental age information
JP7106775B2 (ja) グラフィックス表面アドレス指定
US9311251B2 (en) System cache with sticky allocation
US10997077B2 (en) Increasing the lookahead amount for prefetching
EP3506112A1 (en) Multi-level system memory configurations to operate higher priority users out of a faster memory level
US11321241B2 (en) Techniques to improve translation lookaside buffer reach by leveraging idle resources
JP2023532432A (ja) アソシアティブキャッシュのための直接マッピングモード
US11762777B2 (en) Method and apparatus for a dram cache tag prefetcher
CN111026680B (zh) 数据处理系统、电路及方法
US20230101038A1 (en) Deterministic mixed latency cache
JP2024533656A (ja) 1つのキャッシュにおける別のキャッシュの挿入ポリシーのための要求クラス及び再使用記録の使用

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240604