JP2023543804A - ダーティデータのメモリ側キャッシュを効率的にリンスする機構 - Google Patents
ダーティデータのメモリ側キャッシュを効率的にリンスする機構 Download PDFInfo
- Publication number
- JP2023543804A JP2023543804A JP2023519087A JP2023519087A JP2023543804A JP 2023543804 A JP2023543804 A JP 2023543804A JP 2023519087 A JP2023519087 A JP 2023519087A JP 2023519087 A JP2023519087 A JP 2023519087A JP 2023543804 A JP2023543804 A JP 2023543804A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- write
- data
- cache
- side cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000007246 mechanism Effects 0.000 title description 16
- 238000000034 method Methods 0.000 claims abstract description 41
- 230000004044 response Effects 0.000 claims abstract description 31
- 239000000872 buffer Substances 0.000 claims description 25
- 238000012544 monitoring process Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 19
- 230000001427 coherent effect Effects 0.000 claims description 13
- 239000004744 fabric Substances 0.000 claims description 11
- 238000010586 diagram Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 17
- 238000005192 partition Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本方法は、メモリ装置に結合されたメモリ側キャッシュ装置において受信された複数の書き込み要求の各々に応じて、書き込み要求によって指定されたペイロードデータをメモリ側キャッシュ装置に書き込むことと、第1の帯域幅利用可能性条件が満たされた場合に、ペイロードデータをメモリ装置に書き込むことによってキャッシュライトスルーを実行することと、メモリ側キャッシュ装置に書き込まれたペイロードデータがメモリ装置に書き込まれたペイロードデータと一致するという指標を記録することと、を含む。【選択図】図3
Description
現代のコンピューティングシステムは、通常、メモリ性能を改善するためにキャッシュ階層内の複数のキャッシュに依存する。メインメモリと比較して、キャッシュは、データが低いレイテンシでアクセスされ得るように、頻繁にアクセスされるか又は近い将来に使用されることが予想されるデータを記憶する、より小さくより高速のメモリ装置である。そのようなキャッシュ装置は、通常、メモリ要求を発行する処理ユニットとメインメモリ装置との間に配置され、スタティックランダムアクセスメモリ(SRAM)に実装されることが多い。メモリ側キャッシュは、特定のメモリ装置又はメモリパーティションに取り付けられた専用キャッシュであり、他の装置によってメモリ装置に書き込まれ、メモリ装置から読み出されるデータをキャッシュする。
本開示は、添付の図面の図において、限定としてではなく例として示される。
以下の説明では、実施形態の理解を深めるために、特定のシステム、構成要素、方法等の例のような多数の具体的な詳細を記載する。しかしながら、少なくともいくつかの実施形態が、これらの具体的な詳細なしに実施され得ることは、当業者には明らかである。他の例では、実施形態を不必要に曖昧にすることを回避するために、周知の構成要素又は方法が詳細に記載されないか又は簡易ブロック図の形式で提示される。したがって、記載された具体的な詳細は、単なる例示にすぎない。特定の実装形態は、これらの例示的な詳細と異なっていてもよく、依然として実施形態の範囲内にあると考えられる。
メインメモリ装置(例えば、DRAM)に取り付けられたメモリ側キャッシュは、メインメモリ装置から頻繁に読み出されるか又はメインメモリ装置に頻繁に書き込まれるデータをキャッシュすることによって性能を向上させる。メインメモリに向けられたメモリアクセス要求は、要求されたデータがキャッシュ内で利用可能である場合、メモリ側キャッシュからより低いレイテンシで処理される。しかしながら、メモリ側キャッシュの存在は、DRAMトランザクションの効率的な順序付けに干渉し得る。DRAMタイミング制約に起因して、メモリトランザクション(例えば、読み出し要求及び書き込み要求)のセットの順序付けは、トランザクションがDRAM内で実行され得る速度に影響を及ぼす。セット内のトランザクションの一部がキャッシュヒットをもたらし、したがってメモリ側キャッシュから処理される場合、キャッシュミスをもたらす残りのトランザクションは、それらが到着した元の順序とは異なるシーケンスでDRAMから処理される。更に、キャッシュミスは、ビクティム(victim)がダーティ(dirty)である場合、ビクティムエントリがキャッシュから除去され、DRAMにおいて更新されるようにし、これもアクセス順序を変更し得る。これは、最も高い可能な帯域幅を達成するためにDRAMトランザクションを再順序付けすることを目的とする機構を無効にする傾向がある。
メモリ側キャッシュ及びそのメインメモリの動作は、1)メモリ側キャッシュが低ヒット率を経験し、(例えば、キャッシュが新しい作業負荷のためのデータの作業セットでポピュレートされている間に)より多くのアクセスがメインメモリに到達する、及び、2)メモリ側キャッシュが高ヒット率を経験し、スペアメインメモリ帯域幅が十分に利用されていないフェーズによって、特徴付けられる。したがって、メモリ側キャッシュ装置の一実施形態は、高ヒット率フェーズ中に観察されたスペアDRAM帯域幅を利用して、キャッシュされたデータの読み出し及び書き込みリンス(rinsing)を実行する。リンスは、利用可能なDRAM帯域幅が検出された場合に実行され、データがアクセスされる場合にメモリ側キャッシュ内でダーティとしてマークされたデータについて実行される。
リンスが実行されると、トランザクションがキャッシュヒットであろうとキャッシュミスであろうとDRAMに送信されるので、より効率的になる傾向があるメモリトランザクションの元の順序が保存される。トランザクションの元のシーケンスは、DRAM効率の観点からより効率的であることが一般に予想される。更に、DRAM帯域幅が利用可能である場合にメモリリンスを実行することは、キャッシュからのダーティデータの追い出し(エビクト)に起因して実行されることになるメモリトランザクションの数を低減し、そうでなければ、メモリアクセス順序に干渉する可能性があり、又は、キャッシュミス率が高いプログラムのフェーズ中にDRAM使用量が既に高い場合にメモリ帯域幅を消費する可能性がある。
図1は、メモリリンス機構が実装されるコンピューティングシステム100の一実施形態を示している。概して、コンピューティングシステム100は、ラップトップコンピュータ又はデスクトップコンピュータ、モバイル装置、サーバ等を含むがこれらに限定されない、多数の異なるタイプの装置のうち何れかとして具現化される。コンピューティングシステム100は、バス101を介して互いに通信する多数の構成要素102~108を含む。コンピューティングシステム100において、構成要素102~108の各々は、バス101を介して直接、又は、他の構成要素102~108のうち1つ以上を介して、他の構成要素102~108の何れかと通信することができる。コンピューティングシステム100内の構成要素101~108は、ラップトップコンピュータ若しくはデスクトップコンピュータのシャーシ、又は、携帯電話のケーシング等の単一の物理的エンクロージャ内に収容される。代替の実施形態では、コンピューティングシステム100の構成要素のうちいくつかは、コンピューティングシステム100全体が単一の物理的エンクロージャ内に存在しないように、周辺装置として具現化される。
また、コンピューティングシステム100は、ユーザから情報を受信する、又は、ユーザに情報を提供するためのユーザインターフェース装置を含む。具体的には、コンピューティングシステム100は、キーボード、マウス、タッチスクリーン、又は、ユーザから情報を受け取るための他の装置等の入力装置102を含む。コンピューティングシステム100は、モニタ、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ、又は、他の出力装置等のディスプレイ105を介してユーザに情報を表示する。
コンピューティングシステム100は、有線ネットワーク又は無線ネットワークを介してデータを送受信するためのネットワークアダプタ107を更に含む。また、コンピューティングシステム100は、1つ以上の周辺装置108を含む。周辺装置108は、大容量記憶装置、位置検出装置、センサ、入力装置、又は、コンピューティングシステム100によって使用される他のタイプの装置を含んでもよい。
コンピューティングシステム100は、1つ以上の処理ユニット104を含み、複数の処理ユニット104の場合には、並列に動作することができる。処理ユニット104は、メモリサブシステム106に記憶された命令109を受信して実行する。一実施形態では、処理ユニット104の各々は、共通の集積回路基板上に存在する複数のコンピューティングノードを含む。メモリサブシステム106は、ランダムアクセスメモリ(RAM)モジュール、読み出し専用メモリ(ROM)モジュール、ハードディスク、及び、他の非一時的なコンピュータ可読記憶媒体等のような、コンピューティングシステム100によって使用されるメモリ装置を含む。
コンピューティングシステム100のいくつかの実施形態は、図1に示すような実施形態よりも少ない又は多い構成要素を含んでもよい。例えば、特定の実施形態は、ディスプレイ105又は入力装置102なしで実装される。他の実施形態は、2つ以上の特定の構成要素を有し、例えば、コンピューティングシステム100の一実施形態は、複数のバス101、ネットワークアダプタ107、メモリ装置106等を有することができる。
一実施形態では、コンピューティングシステム100内の処理ユニット104及びメモリ106は、図2に示すように、データ相互接続ファブリック250によって接続された複数の処理ユニット及びメモリパーティションとしてそれぞれ実装される。データ相互接続ファブリック250は、処理ユニット201~203及びメモリパーティション207~209を含む複数のコンピューティングノードを互いに接続する。処理ユニット201~203は、1つ以上のコヒーレントマスタ装置210を介してデータファブリック相互接続250に接続され、メモリパーティション207~209は、コヒーレントスレーブ装置204~206を介してデータファブリック相互接続250にそれぞれ接続される。一実施形態では、これらのノード201~219は、同じ装置パッケージ内及び同じ集積回路ダイ上に存在する。例えば、ノード201~209の全ては、複数の処理コアを有するモノリシック中央処理ユニット(CPU)又はグラフィックス処理ユニット(GPU)ダイ上に実装され得る。代替の実施形態では、ノード201~209のうちいくつかは、異なる集積回路ダイ上に存在する。例えば、ノード201~206は、共通のインターポーザに取り付けられた複数のチップレット上に存在することができ、各チップレットは、複数(例えば、4つ)の処理コアを有する。
相互接続250は、ノード201~209が互いに通信するための伝送経路を提供する複数の相互接続リンクを含む。一実施形態では、相互接続ファブリック250は、起点ノードと宛先ノードの任意の対の間に複数の異なる伝送経路を提供し、任意の所定の起点ノードが可能な各宛先ノードと通信するための異なる伝送経路を提供する。
メモリパーティション207~209のうち何れかに向けられた、処理ユニット201~203によって発行されたメモリ要求は、1つ以上のコヒーレントマスタ装置210を通して相互接続250を介して送信され、メモリパーティションのコヒーレントスレーブ装置によって受信される。例えば、メモリパーティション207に記憶されたデータにアクセスするためのメモリ要求は、コヒーレントスレーブ装置204によって受信される。一実施形態では、コヒーレントスレーブ装置204は、メモリパーティション207のスループットを最大化するために、DRAMタイミング制約に基づいてメモリトランザクションを再順序付けする。コヒーレントスレーブ装置204は、次いで、再順序付けされたメモリ要求を処理のためにメモリパーティションに送信する。
図3は、一実施形態による、コンピューティングシステム100内のメモリパーティション207内の構成要素を示している。メモリパーティション207は、データを記憶するためのDRAM装置310と、DRAM310に記憶されたデータをキャッシュするためのメモリ側キャッシュ装置320と、を含む。メモリ側キャッシュ装置320内のキャッシュコントローラは、論理回路モジュール321~324を含む。また、メモリ側キャッシュ装置320は、キャッシュされたデータを記憶するためのデータアレイ326と、キャッシュされたデータのメタデータを記憶するためのタグアレイ325と、を含む。処理ユニット201~203によって生成された読み出し要求又は書き込み要求等のメモリトランザクションは、コヒーレントスレーブ装置204によってデータファブリック相互接続250から受信され、DRAMスループットを最大化するためにコヒーレントスレーブ装置204によって再順序付けされ、再順序付けされたシーケンスでメモリパーティション207内のメモリ側キャッシュ装置320の入力/出力(I/O)ポート321に転送される。
メモリ側キャッシュ320は、メモリインターフェース324からの情報に基づいて、取り付けられたDRAM装置310の帯域幅利用可能性を示す1つ以上のメトリックを決定する監視回路323を含む。十分なDRAM帯域幅が利用可能であることを1つ以上の帯域幅利用可能性メトリックが示す場合、メモリ側キャッシュ320内のキャッシュされたデータの読み出し及び書き込みリンスが有効化される。一実施形態では、読み出しリンス及び書き込みリンスは、異なる帯域幅利用可能性メトリックに基づいて独立して有効化される。書き込みリンスは、データの書き込み要求に応じて、メモリ側キャッシュ320内のキャッシュされたデータに一致するように、DRAM装置310内のバッキングデータを更新することを指す。読み出しリンスは、データがキャッシュ320から読み出される場合に、キャッシュされたデータに一致するように、DRAM装置310内のバッキングデータを更新することを指す。
書き込みリンスが有効化されると、データは、I/Oポート321で受信された書き込み要求についてキャッシュを介して書き込まれる。すなわち、メモリ側キャッシュ320によって受信された書き込み要求の各々のペイロードデータは、(キャッシュ読み出し/書き込み論理322によって)キャッシュデータアレイ326内のエントリに書き込まれ、また、要求がキャッシュヒット又はキャッシュミスをもたらしたか否かにかかわらず、(メモリインターフェース324を介して)DRAM310内のメモリ位置に書き込まれる。キャッシュ読み出し/書き込み論理322は、(例えば、書き込まれたキャッシュエントリに関連付けられたタグ内の「ダーティ」ビットをデアサートすることによって)タグアレイ325内でデータを「クリーン」としてマークし、これは、データのキャッシュされたコピーがDRAM310内のデータのバッキングコピーと一致することを示す。
DRAM310に向けられた書き込み要求のセットについて、1つ以上の上流装置は、DRAM310にデータを書き込むためのスループットを最大化するために書き込み要求を再順序付けする。コヒーレントスレーブ204は、決定した書き込みシーケンスに従って、メモリ側キャッシュ装置320に書き込み要求を送信する。書き込みリンスが有効化される場合、書き込み要求のためのペイロードデータは、決定された書き込みシーケンスに対応する順序でDRAM310に書き込まれる。各書き込み要求に対するデータは、書き込み要求がキャッシュヒット又はキャッシュミスを引き起こすか否かにかかわらずDRAM310に書き込まれるので、データは、キャッシュ装置320によって受信されるのと同じ順序(すなわち、最適化された書き込みシーケンス)でDRAM310に書き込まれる。
キャッシュ320を介した書き込みは、キャッシュ320内のダーティデータの量を低減する。その結果、キャッシュミスが発生した場合に追い出されるダーティラインが少なくなり、キャッシュ320に追加されるミスデータのために容量が再割り当てされる。追い出されているダーティデータは、DRAM310内のそのバッキングデータが更新され得るように、キャッシュ320から読み出される。しかしながら、バッキングデータは更新を必要としないので、追い出されているデータがクリーンである場合、読み出しが必要とされない。したがって、キャッシュ320からの読み出し回数が低減すること起因し、キャッシュ320の消費電力が減少する。更に、そうでなければDRAMトランザクションの最適な順序付けに干渉する可能性があるDRAM310に送信される書き込みトランザクションが少なくなる。
読み出しリンスが有効化され、メモリ側キャッシュ320においてキャッシュヒットをもたらす読み出し要求がメモリ側キャッシュ320において受信されると、キャッシュ読み出し/書き込み論理322は、各読み出し要求によって要求されたデータをデータアレイ326から読み出して返す。スペアDRAM帯域幅が利用可能である場合、読み出しリンスが有効化される。したがって、スペア帯域幅は、ダーティなキャッシュされたデータが読み出される場合にダーティキャッシュデータをリンスするために使用される。読み出し/書き込み論理322は、タグアレイ325をチェックして、要求されたデータがキャッシュ内で「ダーティ」とマークされているか否かを判定し、「ダーティ」とマークされている場合、データはメモリインターフェース324を介してフラッシュされ、メモリインターフェースは、DRAM310内の対応するバッキングデータをデータのキャッシュされたバージョンで更新する。次いで、キャッシュ読み出し/書き込み論理は、キャッシュされたデータを「クリーン」としてマークする。
図4は、一実施形態による、メモリ側キャッシュ装置320及びDRAM装置310内の構成要素を示している。メモリ側キャッシュ装置320内の監視回路323及びメモリインターフェース324は、DRAM装置310内のメモリコントローラ311に接続される。メモリインターフェース324は、メモリトランザクション(例えば、読み出し要求及び書き込み要求)をメモリコントローラ311に送信し、メモリコントローラは、DRAM回路において要求された読み出し及び書き込みを実行する。
監視回路323は、メモリインターフェース324から取得された情報に基づいて、読み出し及び/又は書き込みリンスが有効化されるか否かを制御する1つ以上の帯域幅利用可能性メトリックを決定する。また、監視回路は、所定の時間ウィンドウ(例えば、サイクル数、ミリ秒等によって定義される)内に発生した読み出しトランザクション及び書き込みリンストランザクションを含む書き込みトランザクションの総数を追跡するカウンタ401を含む。カウンタ401トランザクションが実行されている現在の期間にカウンタ値をインクリメントすることによって、読み出しリンス及びキャッシュライトスルートランザクションに関与する。読み出しリンス及びライトスルートランザクションが有効化され、カウンタ値がその期間のトランザクションの所定の最大数を超えない間に実行される。したがって、カウンタ401は、経時的なメモリリンストランザクションの数を制限するために使用される。一実施形態では、カウンタ401は、読み出しリンストランザクション及び書き込みリンストランザクションの数を別々に追跡し、各値をそれ自体の最大値と比較する。
一実施形態では、カウンタ401は、一連の各々の期間内で最大数のメモリリンストランザクションを強制するために使用される。この場合、カウンタ401は、各期間の開始時にリセットされる。あるいは、カウンタ401は、直近の時間ウィンドウ内のリンストランザクションの数を追跡し、その結果、所定の経過時間よりも長いトランザクションは、カウント値に寄与しない。
メモリ側キャッシュ装置320内のキャッシュコントローラは、DRAM装置310のメモリコントローラ311とインターフェースするメモリインターフェース324を含む。メモリインターフェース324は、メモリトランザクションをメモリコントローラ311に送信し、メモリコントローラは、DRAMセルにおいて要求されたトランザクションを実行する。メモリコントローラ311は、着信するメモリトランザクションを記憶するための2つのキュー404及び405を含む。データコマンドキュー404は、実行される動作を示すコマンドを記憶し、書き込みデータバッファ405は、書き込まれるデータを記憶する。
メモリ側キャッシュ装置320のキャッシュコントローラは、トークン調停機構を使用してメモリコントローラ311との通信のためのフロー制御を実行する。図4に示すように、各トークンは、データコマンドキュー404又は書き込みデータバッファ405内のエントリを表す。例えば、6つのデータコマンドキュートークンの各々は、データコマンドキュー404内の6つの利用可能なエントリのうち何れかを表し、4つの書き込みデータバッファトークンの各々は、書き込みデータバッファ405内の4つの利用可能なエントリのうち何れかを表す。キャッシュコントローラ内のメモリインターフェース324は、十分な数のトークンが利用可能であり、要求を受信するためにバッファ404及び405内に十分な空間が空いていることを示す場合、メモリコントローラ311にメモリアクセス要求を発行する。要求が送信されると、トークンが消費される。メモリコントローラ311がバッファ404及び405内の空間を解放した場合(例えば、要求が完了した場合)、メモリコントローラ311は、トークンをキャッシュコントローラのメモリインターフェース324に返す。一実施形態では、読み出しリンストランザクション及びライトスルートランザクションの各々は、データコマンドキュー404内のエントリ及び書き込みデータバッファ405内のエントリを使用する。
監視回路323は、メモリ装置310から受信された利用可能帯域幅の指標に基づいて、1つ以上の帯域幅利用可能性メトリックを決定する。トークン調停機構が使用される一実施形態では、利用可能なメモリ帯域幅は、データコマンドキュー404及び書き込みデータバッファ405内で利用可能な空間の量に対応し、したがって、バッファ404及び405の各々に利用可能なトークンの数によって示される。したがって、監視回路323は、コマンドキュー404及び書き込みデータバッファ405の各々について利用可能なトークンの数に基づいて、1つ以上の帯域幅利用可能性メトリックを決定する。バッファ404及び405の何れかに対する利用可能なトークンの数が多いほど、利用可能なメモリ帯域幅の量が多いことに対応する。
監視回路323は、読み出しリンス機構及びライトスルー機構の各々について異なる帯域幅利用可能性メトリックを決定する。閾値比較論理402は、各メトリックを異なる閾値と比較する。したがって、読み出しリンス及びライトスルー機構は、異なる条件下で有効化及び無効化することができる。閾値比較論理402が、読み出しリンス機構の帯域幅利用可能性メトリックによって示される利用可能な帯域幅が、その対応する閾値よりも大きい(例えば、利用可能なトークンの数が、各バッファ404及び405のトークンの閾値数を超える)と判定した場合、読み出しリンス機構が有効化される。すなわち、帯域幅利用可能性が条件を満たす(例えば、閾値を上回る)場合、読み出しリンス機構及びライトスルー機構を有効化することができる。同様に、閾値比較論理402が、ライトスルー機構の帯域幅利用可能性メトリックによって示される利用可能な帯域幅がその対応する閾値よりも大きいと判定した場合、ライトスルー機構が有効化される。
図5は、一実施形態による、メモリ帯域幅が利用可能である場合にキャッシュされたデータをリンスするための処理500を示している。リンス処理500は、メモリ側キャッシュ装置320及びDRAM装置310を含むコンピューティングシステム100内の構成要素によって実行される。
ブロック501において、監視回路323は、DRAM装置310のための1つ以上の帯域幅利用可能性メトリックを決定する。監視回路323は、データコマンドキュー404及び書き込みデータバッファ405内の利用可能なエントリを表すトークン403の数を監視し、したがって、これらのメトリックを1つ以上の異なる閾値と比較して、プロアクティブ読み出しリンス又はライトスルートランザクションを実行するために十分なメモリ帯域幅が利用可能であるか否かを判定することができる。
ブロック503において、メモリ側キャッシュ320において書き込み要求が受信されない場合、処理500はブロック505に進む。ブロック505において、メモリ側キャッシュ320において読み出し要求が受信されない場合、処理500はブロック501に戻る。したがって、監視回路323は、メモリ要求が受信されていない場合、DRAM装置310のメモリ帯域幅の利用可能性の監視を継続する。
ブロック503で、書き込み要求がキャッシュ装置320のI/Oポート321で受信されると、キャッシュ読み出し/書き込み論理322は、書き込み要求によって指定されたペイロードデータをデータアレイ326内のエントリに書き込む。ブロック509において、閾値比較論理402は、(カウンタ401によって示されるような)現在の期間に実行されたライトスルートランザクションの数を最大数と比較する。ライトスルートランザクションの最大数を超えた場合、ライトスルーが実行されず、キャッシュ読み出し/書き込み論理322は、タグアレイ325内のその対応するタグにおいて、キャッシュされたデータを「ダーティ」としてマークする。処理500はブロック501に戻り、メモリ帯域幅利用可能性メトリックの監視を継続する。
ブロック509において、カウンタ401によって示されるように、ライトスルートランザクションの最大数を超えていない場合、処理500はブロック513に進む。ブロック513において、監視回路323は、利用可能なメモリ帯域幅がライトスルートランザクションを有効化するための閾値よりも大きいか否かを判定する。特に、閾値比較論理402は、利用可能なトークン403の数を閾値と比較する。トークンの数が閾値を超える場合、ライトスルートランザクションが有効化される。一実施形態では、バッファ404及び405の各々について利用可能なトークンの数が、それら自体のそれぞれの閾値と比較され、両方の閾値を超えた場合にライトスルートランザクションが有効化される。利用可能なメモリ帯域幅が閾値よりも大きくない場合、ライトスルートランザクションが有効化されず、処理500はブロック511に進む。ブロック511において、キャッシュ読み出し/書き込み論理322は、キャッシュされたデータを「ダーティ」としてマークし、処理500は、ブロック501に戻って、メモリ帯域幅利用可能性メトリックの監視を継続する。
ブロック513において、利用可能なメモリ帯域幅が閾値よりも大きい場合、ライトスルートランザクションが有効化される。ブロック515において提供されるように、メモリインターフェース324は、ペイロードデータをDRAM装置310に書き込むことによってペイロードデータのライトスルーを実行する。カウンタ401は、現在の期間におけるライトスルートランザクションをカウントするためにインクリメントされる。ブロック517において、キャッシュ読み出し/書き込み論理322は、メモリ側キャッシュ装置320に書き込まれたペイロードデータがDRAM装置310に書き込まれたペイロードデータと一致するという指標を記録するために、(例えば、キャッシュされたデータを含むエントリに関連付けられたタグ内の「ダーティ」ビットをデアサートすることによって)キャッシュされたデータを「クリーン」としてマークする。ブロック517から、処理500はブロック510に戻り、メモリ帯域幅の監視を継続する。
したがって、ブロック503~517は、十分なメモリ帯域幅が利用可能であり、ライトスルートランザクションの数が最大数を超えていない場合、キャッシュライトスルーを実行するために、キャッシュ装置320のI/Oポート321において受信された各書き込み要求について繰り返される。その結果、ライトスルー機構が有効化されると、ペイロードデータは、書き込み要求が最初に受信されたシーケンスに対応する順序でメモリ装置310に書き込まれる。
ブロック505において、読み出し要求がメモリ側キャッシュ装置320のI/Oポート321で受信されると、キャッシュ読み出し/書き込み論理322は、ブロック519において、タグアレイ325をチェックして、要求されたデータがデータアレイ326内にあるか否かを判定する。読み出し要求がキャッシュミスをもたらす場合、要求されたデータがDRAM装置310から読み出される。ブロック521で提供されるように、キャッシュ読み出し/書き込み論理322は、データを含むようにデータアレイ326及びタグアレイ325を更新し、要求を完了するためにデータが返される。ブロック521から、処理500はブロック501に戻り、メモリ帯域幅利用可能性の監視を継続する。
ブロック519において、読み出し要求がキャッシュヒットをもたらす場合、ブロック523において提供されるように、キャッシュ読み出し/書き込み論理322は、要求されたデータをデータアレイ326から読み出して返す。ブロック525で、キャッシュ読み出し/書き込み論理322は、タグアレイ325内のデータのタグをチェックして、データがダーティである(例えば、データのエントリの「ダーティ」ビットがアサートされている)か否かを判定する。データがダーティでない場合、キャッシュされたデータは、DRAM装置310内のそのバッキングデータと既に一致しており、処理500は、ブロック501に戻って、読み出しリンスを実行することなくメモリ帯域幅利用可能性の監視を継続する。
ブロック525において、キャッシュされたデータがダーティである場合、キャッシュされたデータは、DRAM装置310内のそのバッキングデータと一致せず、処理500はブロック527に進む。ブロック527では、監視回路323は、読み出しリンストランザクションの最大数を超えたか否かを判定する。閾値比較論理402は、現在の期間についてカウンタ401によってカウントされた読み出しリンストランザクションの数を、現在の期間について許容される読み出しリンストランザクションの最大数と比較する。読み出しリンストランザクションの最大数を超えている場合、読み出しリンスが実行されず、処理500はブロック501に戻る。
ブロック527において、現在の時間期間読み出しリンストランザクションの最大数を超えていない場合、処理500はブロック529に進む。ブロック529において、監視論理は、利用可能なメモリ帯域幅が読み出しリンスを有効化するための閾値を超えているか否かを判定する。一実施形態では、閾値比較論理402は、利用可能なデータコマンドキュー404及び書き込みデータバッファ405トークンの数をそれぞれの閾値と比較し、両方の閾値を超えた場合、読み出しリンスが有効化される。一実施形態では、読み出しリンスを有効化するための閾値は、ライトスルーを有効化するための閾値とは異なる。読み出しリンスが有効化されていない場合、処理500はブロック501に戻る。
ブロック529では、監視回路323が、十分なメモリ帯域幅が利用可能であると判定した場合、メモリインターフェース324は、バッキングデータがキャッシュ320内のその対応するデータと一致するように、読み出し要求に対応するバッキングデータを更新することによって、読み出しリンスを実行する。メモリインターフェース324は、データを有する書き込み要求をメモリコントローラ311に送信し、カウンタ401は、現在の期間における読み出しリンストランザクションをカウントするためにインクリメントされる。ブロック533において、キャッシュ読み出し/書き込み論理322は、メモリ側キャッシュ装置320内のキャッシュされたデータがDRAM装置310内のそのバッキングデータと一致することを示すために、キャッシュされたエントリの「ダーティ」ビットをデアサートする。ブロック533から、処理500はブロック501に戻る。
したがって、ブロック505~533は、十分なメモリ帯域幅が利用可能である場合、及び、読み出しリンストランザクションの数が最大数を超えていない場合、キャッシュ読み出しリンスを実行するために、キャッシュ装置320のI/Oポート321において受信された各読み出し要求について繰り返す。上記のライトスルー及び読み出しリンス機構の結果として、キャッシュ320が高ヒット率を経験するフェーズ中に利用可能なスペアメモリ帯域幅が、キャッシュ320内のクリーンデータを維持するために利用され、したがって、最適なメモリ書き込みシーケンスが保存されることを可能にし、DRAM310にライトバックされるビクティムの数を低減する。
本方法は、メモリ装置に結合されたメモリ側キャッシュ装置において受信された複数の書き込み要求の各書き込み要求に応じて、書き込み要求によって指定されたペイロードデータをメモリ側キャッシュ装置に書き込むことと、第1の帯域幅利用可能性条件が満たされた場合に、キャッシュライトスルーを実行することと、を含む。キャッシュライトスルーは、ペイロードデータをメモリ装置に書き込み、メモリ側キャッシュ装置に書き込まれたペイロードデータがメモリ装置に書き込まれたペイロードデータと一致するという指標を記録することによって実行される。
本方法では、複数の書き込み要求の各書き込み要求について、書き込み要求によって指定されたペイロードデータを書き込むことは、メモリ側キャッシュ装置のエントリにデータを記憶することを含む。指標を記録することは、エントリに関連付けられたタグ内のダーティビットをデアサートすることを含む。
本方法は、書き込みシーケンスに従ってメモリ側キャッシュにおいて複数の書き込み要求を受信することを更に含む。メモリ装置へのペイロードデータの書き込みは、書き込みシーケンスに対応する順序で実行される。
本方法は、メモリ側キャッシュ装置で受信された複数の読み出し要求の各読み出し要求に応じて、読み出し要求がメモリ側キャッシュ内でキャッシュヒットを引き起こす場合、読み出し要求によって要求されたキャッシュされたデータがメモリ装置内のバッキングデータと異なるという指標に応じて、キャッシュされたデータに一致するようにバッキングデータを更新することと、メモリ側キャッシュ内のキャッシュされたデータがメモリ装置内のバッキングデータに一致するという指標を記録することと、を更に含む。
また、本方法は、メモリ装置の第1の帯域幅利用可能性メトリックを決定することを含む。第1の帯域幅利用可能性条件は、第1の帯域幅利用可能性メトリックが第1の帯域幅閾値よりも大きい場合に満たされる。
本方法は、メモリ装置のコマンドキュー及びメモリ装置の書き込みデータバッファの各々における利用可能な空間の量に基づいて、メモリ装置のための第2の帯域幅利用可能性メトリックを決定することを更に含む。バッキングデータの更新は、第2の帯域幅利用可能性メトリックが第2の帯域幅閾値よりも大きいと決定したことに応じて更に実行される。
本方法は、メモリ装置のコマンドキュー及びメモリ装置の書き込みデータバッファの各々の利用可能な空間の量に基づいて、第1の帯域幅利用可能性メトリックを決定することを更に含む。
本方法は、メモリ装置から受信された利用可能帯域幅の指標に基づいて、第1の帯域幅条件がいつ満たされるかを判定することを更に含む。
本方法では、複数の書き込み要求の各書き込み要求について、キャッシュライトスルーを実行することは、現在の時間期間に対するカウンタ値をインクリメントすることを更に含み、キャッシュライトスルーは、カウンタ値が現在の時間期間に対するキャッシュライトスルートランザクションの最大数未満であると決定することに応じて実行される。
メモリ側キャッシュ装置は、メモリ装置に結合されたメモリ側キャッシュ装置において受信された複数の書き込み要求の各書き込み要求に応じて、書き込み要求によって指定されたペイロードデータをメモリ側キャッシュ装置に書き込むためのキャッシュ読み出し/書き込み論理と、複数の書き込み要求の各書き込み要求に応じて、ペイロードデータをメモリ装置に書き込むことによって第1の帯域幅利用可能性条件が満たされた場合にキャッシュライトスルーを実行するためのメモリインターフェースと、を含む。キャッシュ読み出し/書き込み論理は、メモリ側キャッシュ装置に書き込まれたペイロードデータがメモリ装置に書き込まれたペイロードデータと一致するという指標を記録することによって、キャッシュライトスルーを実行する。
メモリ側キャッシュ装置では、キャッシュ読み出し/書き込み論理は、複数の書き込み要求の各書き込み要求について、メモリ側キャッシュ装置のエントリにデータを記憶することによって書き込み要求によって指定されたペイロードデータを書き込み、エントリに関連付けられたタグ内のダーティビットをデアサートすることによって指標を記録する。
メモリ側キャッシュ装置は、書き込みシーケンスに従って複数の書き込み要求を受信するための入力/出力ポートを更に含む。メモリインターフェースは、書き込みシーケンスに対応する順序でペイロードデータをメモリ装置に書き込む。
メモリ側キャッシュ装置において、メモリインターフェースは、メモリ側キャッシュ装置において受信された複数の読み出し要求の各読み出し要求に応じて、読み出し要求がメモリ側キャッシュにおいてキャッシュヒットを引き起こし、読み出し要求によって要求されたキャッシュされたデータがメモリ装置内のバッキングデータと異なるという指標に応じて、バッキングデータをキャッシュされたデータに一致するように更新することによって、読み出しリンスを実行する。キャッシュ読み出し/書き込み論理は、メモリ側キャッシュ内のキャッシュされたデータがメモリ装置内のバッキングデータと一致するという指標を記録することによって読み出しリンスを実行する。
また、メモリ側キャッシュ装置は、メモリ装置のコマンドキュー及びメモリ装置の書き込みデータバッファの各々における利用可能な空間の量に基づいて、第1の帯域幅利用可能性メトリックを決定するための監視回路を含む。第1の帯域幅利用可能性条件は、第1の帯域幅利用可能性メトリックが第1の帯域幅閾値よりも大きい場合に満たされる。
メモリ側キャッシュ装置では、監視回路は、メモリ装置のコマンドキュー及びメモリ装置の書き込みデータバッファの各々における利用可能な空間の量に基づいて、メモリ装置のための第2の帯域幅利用可能性メトリックを決定する。メモリインターフェースは、第2の帯域幅利用可能性メトリックが第2の帯域幅閾値よりも大きいと決定したことに応じて、バッキングデータを更新する。
メモリ側キャッシュ装置は、メモリ装置から受信された利用可能帯域幅の指標に基づいて、第1の帯域幅利用可能性条件がいつ満たされるかを判定するための監視回路を含む。
また、メモリ側キャッシュ装置は、複数の書き込み要求の各書き込み要求について、現在の時間期間のカウンタ値をインクリメントすることによってキャッシュライトスルーを実行するためのカウンタを含む。キャッシュライトスルーは、カウンタ値が現在の期間のキャッシュライトスルートランザクションの最大数未満であると判定したことに応じて実行される。
コンピューティングシステムは、バッキングデータを記憶するためのメモリ装置と、メモリ装置に結合されたメモリ側キャッシュ装置であって、メモリ側キャッシュ装置において受信された複数の書き込み要求の各書き込み要求に応じて、書き込み要求によって指定されたペイロードデータをメモリ側キャッシュ装置に書き込み、第1の帯域幅利用可能性条件が満たされた場合にキャッシュライトスルーを実行する、メモリ側キャッシュ装置と、を含む。キャッシュライトスルーは、ペイロードデータをメモリ装置に書き込み、メモリ側キャッシュ装置に書き込まれたペイロードデータがメモリ装置に書き込まれたペイロードデータと一致するという指標を記録することによって実行される。
コンピューティングシステムにおいて、メモリ側キャッシュ装置は、メモリ装置の第1の帯域幅利用可能性メトリックを決定する。第1の帯域幅利用可能性条件は、第1の帯域幅利用可能性メトリックが第1の帯域幅閾値よりも大きい場合に満たされる。
コンピューティングシステムにおいて、メモリ側キャッシュ装置は、メモリ側キャッシュ装置において受信された複数の読み出し要求の各読み出し要求に応じて、読み出し要求がメモリ側キャッシュにおいてキャッシュヒットを引き起こし、読み出し要求によって要求されたキャッシュされたデータがメモリ装置内のバッキングデータと異なるという指標に応じて、バッキングデータをキャッシュされたデータに一致するように更新し、メモリ側キャッシュ内のキャッシュされたデータがメモリ装置内のバッキングデータに一致するという指標を記録し、メモリ装置のコマンドキュー及びメモリ装置の書き込みデータバッファの各々における利用可能な空間の量に基づいてメモリ装置のための第2の帯域幅利用可能性メトリックを決定する。バッキングデータの更新は、第2の帯域幅利用可能性メトリックが第2の帯域幅閾値よりも大きいと決定したことに応じて更に実行される。
コンピューティングシステムは、データファブリック相互接続を介して複数の書き込み要求を受信し、複数の書き込み要求に対する書き込みシーケンスを決定し、書き込みシーケンスに従って複数の書き込み要求をメモリ側キャッシュ装置に送信するコヒーレントスレーブ装置を更に含み、メモリ装置へのペイロードデータの書き込みは、書き込みシーケンスに対応する順序で実行される。
コンピューティングシステムは、複数の書き込み要求を含むメモリトランザクションを1つ以上の処理ユニットからメモリ側キャッシュ装置に送信するための、メモリ側キャッシュ装置に結合されたデータファブリック相互接続を更に含む。
本明細書で使用される場合、「に結合される」という用語は、1つ以上の介在する構成要素を介して直接的又は間接的に結合されることを意味し得る。本明細書で説明する様々なバスを介して提供される信号の何れも、他の信号と時分割され、1つ以上の共通バスを介して提供され得る。更に、回路構成要素とブロック間との相互接続は、バス又は単一の信号線として示され得る。バスの各々は、代替として、1つ以上の単一の信号線であってもよく、単一の信号線の各々は、代替として、バスであってもよい。
特定の実施形態は、非一時的なコンピュータ可読記憶媒体に記憶された命令を含み得るコンピュータプログラム製品として実装され得る。これらの命令は、説明した動作を実行するように汎用プロセッサ又は専用プロセッサをプログラムするために使用され得る。コンピュータ可読記憶媒体は、機械(例えば、コンピュータ)によって可読な形態(例えば、ソフトウェア、処理アプリケーション)で情報を記憶又は送信するための任意の機構を含む。非一時的なコンピュータ可読記憶媒体は、磁気記憶媒体(例えば、フロッピー(登録商標)ディスケット)と、光記憶媒体(例えば、CD-ROM)と、光磁気記憶媒体と、読み出し専用メモリ(ROM)と、ランダムアクセスメモリ(RAM)と、消去可能なプログラマブルメモリ(例えば、EPROM及びEEPROM)と、フラッシュメモリ、又は電子命令を記憶するのに適した別のタイプの媒体と、を含んでもよいが、それらに限定されない。
加えて、いくつかの実施形態は、コンピュータ可読記憶媒体が2つ以上のコンピュータシステム上に記憶され及び/又は2つ以上のコンピュータシステムによって実行される分散コンピューティング環境において実装されてもよい。更に、コンピュータシステム間で転送される情報は、コンピュータシステムを接続する伝送媒体を介してプル又はプッシュされてもよい。
概して、コンピュータ可読記憶媒体に搭載されるコンピューティングシステム100及び/又はその一部を表すデータ構造は、プログラムによって読み取られることができ、コンピューティングシステム100を含むハードウェアを製造するために、直接又は間接的に使用され得るデータベース又は他のデータ構造であり得る。例えば、データ構造は、Verilog又はVHDL等の高レベル設計言語(high-level design language、HDL)におけるハードウェア機能の行動レベルの記述又はレジスタ転送レベル(register-transfer level、RTL)の記述であり得る。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取られることができる。ネットリストは、コンピューティングシステム100を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクは、コンピューティングシステム100に対応する半導体回路(複数可)を製造するために、様々な半導体製造工程において使用され得る。代替的に、コンピュータ可読記憶媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであり得る。
本明細書における方法(複数可)の動作が特定の順序で示され説明されているが、各方法の動作の順序は、特定の動作が逆の順序で実行され得るように、又は、特定の動作が少なくとも部分的に他の動作と同時に実行され得るように変更され得る。別の実施形態では、個別の動作の命令又はサブ動作は、断続的及び/又は交互に行われてもよい。
上記の明細書において、実施形態は、その特定の例示的な実施形態を参照して説明された。しかしながら、添付の特許請求の範囲に記載された実施形態のより広い範囲から逸脱することなく、様々な修正及び変更がそれらになされ得ることが明らかであろう。したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味で捉えられるべきである。
Claims (22)
- 方法であって、
メモリ装置に結合されたメモリ側キャッシュ装置において受信された複数の書き込み要求の各々に応じて、
前記書き込み要求によって指定されたペイロードデータを前記メモリ側キャッシュ装置に書き込むことと、
第1の帯域幅利用可能性条件が満たされた場合に、前記ペイロードデータを前記メモリ装置に書き込むことと、前記メモリ側キャッシュ装置に書き込まれた前記ペイロードデータが前記メモリ装置に書き込まれた前記ペイロードデータと一致するという指標を記録することと、によって、キャッシュライトスルーを実行することと、を含む、
方法。 - 前記複数の書き込み要求の各々について、
前記書き込み要求によって指定された前記ペイロードデータを書き込むことは、前記メモリ側キャッシュ装置のエントリに前記ペイロードデータを記憶することを含み、
前記指標を記録することは、前記エントリに関連付けられたタグ内のダーティビットをデアサートすることを含む、
請求項1の方法。 - 書き込みシーケンスに従って前記メモリ側キャッシュにおいて前記複数の書き込み要求を受信することを更に含み、
前記ペイロードデータを前記メモリ装置に書き込むことは、前記書き込みシーケンスに対応する順序で実行される、
請求項1の方法。 - 前記メモリ側キャッシュ装置において受信された複数の読み出し要求の各々に応じて、前記読み出し要求が前記メモリ側キャッシュ内でキャッシュヒットを引き起こす場合に、前記読み出し要求によって要求されたキャッシュされたデータが前記メモリ装置内のバッキングデータと異なるという指標に応じて、
前記キャッシュされたデータに一致するように前記バッキングデータを更新することと、
前記メモリ側キャッシュ内の前記キャッシュされたデータが、前記メモリ装置内の前記バッキングデータと一致するという指標を記録することと、を更に含む、
請求項1の方法。 - 前記メモリ装置の第1の帯域幅利用可能性メトリックを決定することを更に含み、
前記第1の帯域幅利用可能性メトリックが第1の帯域幅閾値よりも大きい場合に、前記第1の帯域幅利用可能性条件が満たされる、
請求項1の方法。 - 前記メモリ装置のコマンドキュー及び前記メモリ装置の書き込みデータバッファの各々における利用可能な空間の量に基づいて、前記メモリ装置の第2の帯域幅利用可能性メトリックを決定することを更に含み、
前記バッキングデータを更新することは、前記第2の帯域幅利用可能性メトリックが第2の帯域幅閾値よりも大きいと決定したことに応じて実行される、
請求項5の方法。 - 前記メモリ装置のコマンドキュー及び前記メモリ装置の書き込みデータバッファの各々における利用可能な空間の量に基づいて、前記第1の帯域幅利用可能性メトリックを決定することを更に含む、
請求項5の方法。 - 前記メモリ装置から受信された利用可能な帯域幅の指標に基づいて、前記第1の帯域幅利用可能性条件がいつ満たされるかを判定することを更に含む、
請求項1の方法。 - 前記複数の書き込み要求の各々について、
前記キャッシュライトスルーを実行することは、現在の時間期間のカウンタ値をインクリメントすることを含み、
前記キャッシュライトスルーは、前記カウンタ値が前記現在の時間期間についてのキャッシュライトスルートランザクションの最大数未満であると決定したことに応じて実行される、
請求項1の方法。 - メモリ側キャッシュ装置であって、
メモリ装置に結合されたメモリ側キャッシュ装置において受信された複数の書き込み要求の各々に応じて、前記書き込み要求によって指定されたペイロードデータを前記メモリ側キャッシュ装置に書き込むように構成されたキャッシュ読み出し/書き込み論理と、
前記複数の書き込み要求の各々に応じて、前記ペイロードデータを前記メモリ装置に書き込むことによって第1の帯域幅利用可能性条件が満たされる場合に、キャッシュライトスルーを実行するように構成されたメモリインターフェースと、を備え、
前記キャッシュ読み出し/書き込み論理は、前記メモリ側キャッシュ装置に書き込まれた前記ペイロードデータが前記メモリ装置に書き込まれた前記ペイロードデータと一致するという指標を記録することによって、前記キャッシュライトスルーを実行するように構成されている、
メモリ側キャッシュ装置。 - 前記キャッシュ読み出し/書き込み論理は、前記複数の書き込み要求の各々について、
前記書き込み要求によって指定された前記ペイロードデータを、前記メモリ側キャッシュ装置のエントリに記憶することによって書き込み、
前記エントリに関連付けられたタグ内のダーティビットをデアサートすることによって前記指標を記録するように構成されている、
請求項10のメモリ側キャッシュ装置。 - 書き込みシーケンスに従って前記複数の書き込み要求を受信するように構成された入力/出力ポートであって、前記メモリインターフェースは、前記書き込みシーケンスに対応する順序で前記ペイロードデータを前記メモリ装置に書き込むように構成されている、入力/出力ポートを更に備える、
請求項10のメモリ側キャッシュ装置。 - 前記メモリインターフェースは、前記メモリ側キャッシュ装置において受信された複数の読み出し要求の各々に応じて、前記読み出し要求が前記メモリ側キャッシュにおいてキャッシュヒットを引き起こす場合に、前記読み出し要求によって要求されたキャッシュされたデータが前記メモリ装置内のバッキングデータと異なるという指標に応じて、前記バッキングデータを前記キャッシュされたデータに一致するように更新することによって、読み出しリンスを実行するように構成されており、
前記キャッシュ読み出し/書き込み論理は、前記メモリ側キャッシュ内の前記キャッシュされたデータが前記メモリ装置内の前記バッキングデータと一致するという指標を記録することによって、前記読み出しリンスを実行するように構成されている、
請求項10のメモリ側キャッシュ装置。 - 前記メモリ装置のコマンドキューと前記メモリ装置の書き込みデータバッファとの各々における利用可能な空間の量に基づいて第1の帯域幅利用可能性メトリックを決定し、前記第1の帯域幅利用可能性メトリックが第1の帯域幅閾値よりも大きい場合に、前記第1の帯域幅利用可能性条件が満たされるように構成された監視回路を更に備える、
請求項10のメモリ側キャッシュ装置。 - 前記監視回路は、前記メモリ装置のコマンドキュー及び前記メモリ装置の書き込みデータバッファの各々における利用可能な空間の量に基づいて、前記メモリ装置の第2の帯域幅利用可能性メトリックを決定するように構成されており、
前記メモリインターフェースは、前記第2の帯域幅利用可能性メトリックが第2の帯域幅閾値よりも大きいと決定したことに応じて、前記バッキングデータを更新するように構成されている、
請求項14のメモリ側キャッシュ装置。 - 前記メモリ装置から受信された利用可能な帯域幅の指標に基づいて、前記第1の帯域幅利用可能性条件がいつ満たされるかを判定するように構成された監視回路を更に備える、
請求項10のメモリ側キャッシュ装置。 - 前記複数の書き込み要求の各々について、
現在の時間期間についてのカウンタ値をインクリメントすることによって前記キャッシュライトスルーを実行し、前記キャッシュライトスルーが、前記カウンタ値が前記現在の時間期間についてのキャッシュライトスルートランザクションの最大数未満であると決定したことに応じて実行されように構成されたカウンタを更に備える、
請求項10のメモリ側キャッシュ装置。 - コンピューティングシステムであって、
バッキングデータを記憶するように構成されたメモリ装置と、
前記メモリ装置に結合されたメモリ側キャッシュ装置と、を備え、
前記メモリ側キャッシュ装置は、
前記メモリ側キャッシュ装置において受信された複数の書き込み要求の各々に応じて、
前記書き込み要求によって指定されたペイロードデータを前記メモリ側キャッシュ装置に書き込むことと、
第1の帯域幅利用可能性条件が満たされた場合に、前記ペイロードデータを前記メモリ装置に書き込むことと、前記メモリ側キャッシュ装置に書き込まれた前記ペイロードデータが前記メモリ装置に書き込まれた前記ペイロードデータと一致するという指標を記録することと、によって、キャッシュライトスルーを実行することと、
を行うように構成されている、
コンピューティングシステム。 - 前記メモリ側キャッシュ装置は、
前記メモリ装置の第1の帯域幅利用可能性メトリックを決定し、前記第1の帯域幅利用可能性メトリックが第1の帯域幅閾値よりも大きい場合に、前記第1の帯域幅利用可能性条件が満たされるように構成されている、
請求項18のコンピューティングシステム。 - 前記メモリ側キャッシュ装置は、
前記メモリ側キャッシュ装置において受信された複数の読み出し要求の各々に応じて、前記読み出し要求が前記メモリ側キャッシュ内でキャッシュヒットを引き起こす場合に、前記読み出し要求によって要求されたキャッシュされたデータが前記メモリ装置内のバッキングデータと異なるという指標に応じて、
前記キャッシュされたデータに一致するように前記バッキングデータを更新することと、
前記メモリ側キャッシュ内の前記キャッシュされたデータが、前記メモリ装置内の前記バッキングデータと一致するという指標を記録することと、
前記メモリ装置のコマンドキュー及び前記メモリ装置の書き込みデータバッファの各々における利用可能な空間の量に基づいて、前記メモリ装置の第2の帯域幅利用可能性メトリックを決定することであって、前記バッキングデータを更新することは、前記第2の帯域幅利用可能性メトリックが第2の帯域幅閾値よりも大きいと決定したことに応じて実行される、ことと、
を行うように構成されている、
請求項19のコンピューティングシステム。 - コヒーレントスレーブ装置を更に備え、
前記コヒーレントスレーブ装置は、
データファブリック相互接続を介して前記複数の書き込み要求を受信することと、
前記複数の書き込み要求の書き込みシーケンスを決定することと、
前記書き込みシーケンスに従って前記複数の書き込み要求を前記メモリ側キャッシュ装置に送信することであって、前記ペイロードデータを前記メモリ装置に書き込むことは、前記書き込みシーケンスに対応する順序で実行される、ことと、
を行うように構成されている、
請求項18のコンピューティングシステム。 - 前記メモリ側キャッシュ装置に結合され、前記複数の書き込み要求を含むメモリトランザクションを1つ以上の処理ユニットから前記メモリ側キャッシュ装置に送信するように構成されたデータファブリック相互接続を更に備える、
請求項18のコンピューティングシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/031,834 | 2020-09-24 | ||
US17/031,834 US11874774B2 (en) | 2020-09-24 | 2020-09-24 | Mechanism to efficiently rinse memory-side cache of dirty data |
PCT/US2021/050980 WO2022066538A1 (en) | 2020-09-24 | 2021-09-17 | Mechanism to efficiently rinse memory side cache of dirty data |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023543804A true JP2023543804A (ja) | 2023-10-18 |
Family
ID=78135175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023519087A Pending JP2023543804A (ja) | 2020-09-24 | 2021-09-17 | ダーティデータのメモリ側キャッシュを効率的にリンスする機構 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11874774B2 (ja) |
EP (1) | EP4200709A1 (ja) |
JP (1) | JP2023543804A (ja) |
KR (1) | KR20230066608A (ja) |
CN (1) | CN116235154A (ja) |
WO (1) | WO2022066538A1 (ja) |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6665781B2 (en) * | 2000-10-17 | 2003-12-16 | Hitachi, Ltd. | Method and apparatus for data duplexing in storage unit system |
US20020002611A1 (en) * | 2000-04-17 | 2002-01-03 | Mark Vange | System and method for shifting functionality between multiple web servers |
US6839808B2 (en) * | 2001-07-06 | 2005-01-04 | Juniper Networks, Inc. | Processing cluster having multiple compute engines and shared tier one caches |
US7093072B2 (en) * | 2003-02-21 | 2006-08-15 | Enterasys Networks, Inc. | Methods for improved data caching |
US9104599B2 (en) * | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
US9086812B2 (en) * | 2010-02-19 | 2015-07-21 | Tokyo Institute Of Technology | Storage device, control method for same and system management program |
WO2012116369A2 (en) * | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
US9274960B2 (en) | 2012-03-20 | 2016-03-01 | Stefanos Kaxiras | System and method for simplifying cache coherence using multiple write policies |
US9058282B2 (en) | 2012-12-31 | 2015-06-16 | Intel Corporation | Dynamic cache write policy |
US9501411B2 (en) * | 2014-08-29 | 2016-11-22 | International Business Machines Corporation | Cache backing store for transactional memory |
US9619396B2 (en) * | 2015-03-27 | 2017-04-11 | Intel Corporation | Two level memory full line writes |
GB2547189A (en) * | 2016-02-03 | 2017-08-16 | Swarm64 As | Cache and method |
US10162756B2 (en) | 2017-01-18 | 2018-12-25 | Intel Corporation | Memory-efficient last level cache architecture |
US11119926B2 (en) | 2017-12-18 | 2021-09-14 | Advanced Micro Devices, Inc. | Region based directory scheme to adapt to large cache sizes |
US10713165B2 (en) * | 2018-02-12 | 2020-07-14 | Wisconsin Alumni Research Foundation | Adaptive computer cache architecture |
US11258887B2 (en) * | 2020-06-22 | 2022-02-22 | Mellanox Technologies, Ltd. | Payload cache |
-
2020
- 2020-09-24 US US17/031,834 patent/US11874774B2/en active Active
-
2021
- 2021-09-17 JP JP2023519087A patent/JP2023543804A/ja active Pending
- 2021-09-17 EP EP21791155.1A patent/EP4200709A1/en active Pending
- 2021-09-17 CN CN202180065700.7A patent/CN116235154A/zh active Pending
- 2021-09-17 WO PCT/US2021/050980 patent/WO2022066538A1/en unknown
- 2021-09-17 KR KR1020237012446A patent/KR20230066608A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
CN116235154A (zh) | 2023-06-06 |
US20220091991A1 (en) | 2022-03-24 |
US11874774B2 (en) | 2024-01-16 |
KR20230066608A (ko) | 2023-05-16 |
WO2022066538A1 (en) | 2022-03-31 |
EP4200709A1 (en) | 2023-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI643125B (zh) | 多處理器系統及快取共用方法 | |
US7917699B2 (en) | Apparatus and method for controlling the exclusivity mode of a level-two cache | |
EP2568389B1 (en) | Coherence switch for i/o traffic | |
US5878268A (en) | Multiprocessing system configured to store coherency state within multiple subnodes of a processing node | |
US8352685B2 (en) | Combining write buffer with dynamically adjustable flush metrics | |
US20150039833A1 (en) | Management of caches | |
US12014213B2 (en) | Active hibernate and managed memory cooling in a non-uniform memory access system | |
US6351791B1 (en) | Circuit arrangement and method of maintaining cache coherence utilizing snoop response collection logic that disregards extraneous retry responses | |
US7882309B2 (en) | Method and apparatus for handling excess data during memory access | |
KR20230111211A (ko) | 다양한 온도 하에서 통제 범위를 구성하기 위한 방법들 | |
US7296167B1 (en) | Combined system responses in a chip multiprocessor | |
US11755477B2 (en) | Cache allocation policy | |
US11874774B2 (en) | Mechanism to efficiently rinse memory-side cache of dirty data | |
US11822484B2 (en) | Low power cache | |
US11954033B1 (en) | Page rinsing scheme to keep a directory page in an exclusive state in a single complex | |
US20240232084A9 (en) | Page rinsing scheme to keep a directory page in an exclusive state in a single complex | |
US20240111683A1 (en) | Dynamically altering tracking granularity in a region-based cache directory | |
US11693778B2 (en) | Cache grouping for increasing performance and fairness in shared caches |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230516 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240604 |