JP6975335B2 - ホームエージェントベースのキャッシュ転送アクセラレーションスキーム - Google Patents

ホームエージェントベースのキャッシュ転送アクセラレーションスキーム Download PDF

Info

Publication number
JP6975335B2
JP6975335B2 JP2020532672A JP2020532672A JP6975335B2 JP 6975335 B2 JP6975335 B2 JP 6975335B2 JP 2020532672 A JP2020532672 A JP 2020532672A JP 2020532672 A JP2020532672 A JP 2020532672A JP 6975335 B2 JP6975335 B2 JP 6975335B2
Authority
JP
Japan
Prior art keywords
cache
probe
entry
lookup
processing node
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.)
Active
Application number
JP2020532672A
Other languages
English (en)
Other versions
JP2021507371A (ja
JP2021507371A5 (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 JP2021507371A publication Critical patent/JP2021507371A/ja
Publication of JP2021507371A5 publication Critical patent/JP2021507371A5/ja
Application granted granted Critical
Publication of JP6975335B2 publication Critical patent/JP6975335B2/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/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0826Limited pointers directories; State-only directories without pointers
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache 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)
    • 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/0891Addressing 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
    • 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
    • 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/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

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)

Description

(関連技術の説明)
コンピュータシステムは、一般に、安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップによって形成されたメインメモリを使用する。しかしながら、DRAMチップは、比較的長いアクセス時間を必要とする。パフォーマンスを向上させるために、データプロセッサは、一般に、キャッシュとして知られている少なくとも1つのローカルな高速メモリを含む。マルチコアデータプロセッサでは、各データプロセッサコアは、独自の専用のレベル1(L1)キャッシュを含むことができ、他のキャッシュ(例えば、レベル2(L2)、レベル3(L3))は、データプロセッサコアによって共有される。
コンピューティングシステム内のキャッシュサブシステムは、データのブロックを記憶するように構成された高速キャッシュメモリを含む。本明細書で使用する場合、「ブロック」は、連続するメモリ位置に記憶されたバイトのセットであり、コヒーレンシ目的のためのユニットとして扱われる。本明細書で使用する場合、「キャッシュブロック」、「ブロック」、「キャッシュライン」及び「ライン」という用語の各々は、置き換えることができる。いくつかの実施形態では、ブロックは、キャッシュ内の割り当て及び割り当て解除のユニットであってもよい。ブロック内のバイト数は、設計の選択によって異なり、任意のサイズにすることができる。また、「キャッシュタグ」、「キャッシュラインタグ」及び「キャッシュブロックタグ」という用語の各々は、置き換えることができる。
マルチノードコンピュータシステムでは、異なる処理ノードによって使用されているデータのコヒーレンシを維持するために、特別な予防措置を講じる必要がある。例えば、プロセッサは、特定のメモリアドレスのデータにアクセスしようとする場合、先ず、メモリが別のキャッシュに記憶されており、変更されているかどうかを判別する必要がある。このキャッシュコヒーレンシプロトコルを実装するために、キャッシュは、通常、システム全体を通してデータコヒーレンシを維持するためのキャッシュラインのステータスを示す複数のステータスビットを含む。一般的なコヒーレンシプロトコルの1つは、「MOESI」プロトコルとして知られている。MOESIプロトコルによれば、各キャッシュラインは、キャッシュラインが変更されている(M)こと、キャッシュラインが排他的である(E)、キャッシュラインが共有されている(S)こと、又は、キャッシュラインが無効である(I)ことを示すビットを含む、ラインが何れのMOESI状態にあるかを示すステータスビットを含む。所有(O)状態は、ラインが1つのキャッシュで変更されていること、他のキャッシュに共有コピーが存在する可能性があること、及び、メモリ内のデータが古くなっている(stale)ことを示す。
第1ノードのキャッシュサブシステムから第2ノードのキャッシュサブシステムの間でデータを転送するには、通常、複数の操作が必要であり、各操作は、転送のレイテンシに寄与する。これらの操作は、通常、シリアル方式で実行され、前の操作が終了したときに1つの操作が開始される。
添付図面と併せて以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良く理解することができる。
コンピューティングシステムの一実施形態のブロック図である。 コア複合体の一実施形態のブロック図である。 マルチCPUシステムの一実施形態のブロック図である。 コヒーレントスレーブの一実施形態のブロック図である。 初期プローブメカニズムを実施する方法の一実施形態を示す一般化されたフロー図である。 初期プローブを生成する際に使用するために、初期プローブキャッシュ内の領域ベースのエントリを割り当てる方法の一実施形態を示す一般化されたフロー図である。
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が述べられている。しかしながら、当業者は、これらの特定の詳細無しに様々な実施形態を実施することができることを認識すべきである。いくつかの例では、本明細書で説明するアプローチを曖昧にすることを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術を詳細に示していない。例説明を簡潔及び明瞭にするために、図に示す要素は、必ずしも縮尺通りに描かれていないことが理解されよう。例えば、要素のいくつかの寸法は、他の要素に対して拡張されてもよい。
投機的プローブメカニズムを実装するための様々なシステム、装置、方法及びコンピュータ可読媒体が本明細書に開示される。一実施形態では、システムは、複数の処理ノード(例えば、中央処理装置(CPU))と、相互接続ファブリックと、コヒーレントスレーブと、プローブフィルタと、メモリコントローラと、メモリと、を少なくとも含む。各処理ノードは、1つ以上の処理ユニットを含む。各処理ノードに含まれる1つ以上の処理ユニットのタイプ(例えば、汎用プロセッサ、グラフィックス処理ユニット(GPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP))は、実施形態毎に及びノード毎に異なってもよい。コヒーレントスレーブは、相互接続ファブリックを介して複数の処理ノードに接続されており、コヒーレントスレーブは、プローブフィルタ及びメモリコントローラにも接続されている。
コヒーレントスレーブは、プローブフィルタへの最近のルックアップをキャッシュする初期プローブキャッシュを含む。一実施形態では、共有ページについてのプローブフィルタへの最近のルックアップは、初期プローブキャッシュにキャッシュされる。ページが共有されているかプライベートかに関する情報は、プローブフィルタのルックアップの一部として利用可能である。一実施形態では、初期プローブキャッシュは、領域ベースでエントリを記憶し、領域は、複数のキャッシュラインを含む。コヒーレントスレーブは、相互接続ファブリックを介して処理ノードからメモリ要求を受信する。コヒーレントスレーブは、ファブリックを介して所定の処理ノードからメモリ要求を受信することに応じて、プローブフィルタ及び初期プローブキャッシュへの並列ルックアップを実行する。初期プローブキャッシュへのルックアップが所定のエントリで一致する場合、コヒーレントスレーブは、領域所有者(region owner)の識別子(ID)及び信頼度指標を当該所定のエントリから取得する。信頼度指標がプログラム可能な閾値よりも大きい場合、コヒーレントスレーブは、領域所有者として識別された処理ノードに初期プローブを送信する。初期プローブは、プローブフィルタへのルックアップが完了する前に送信されることに留意されたい。これにより、初期プローブが正しいターゲットに送信されるときに、ターゲット処理ノードからデータを取得するレイテンシを短縮するのに役立つ。
プローブフィルタへのルックアップが完了し、このルックアップの結果がヒットをもたらす場合、コヒーレントスレーブは、一致するエントリからキャッシュラインの所有者のIDを取得する。メモリ要求のターゲットとなるキャッシュラインの所有者が、初期プローブキャッシュから取得された領域の所有者と一致する場合、コヒーレントスレーブは、初期プローブキャッシュ内の対応するエントリの信頼度指標をインクリメントする。実施形態に応じて、コヒーレントスレーブは、要求プローブ(demand probe)を所有者に送信してもよいし、送信しなくてもよい。初期プローブがターゲット処理ノードに送信され、ターゲットデータが要求ノードに返される場合、コヒーレントスレーブは、要求プローブを送信する必要がない。それ以外の場合、初期のプローブによってターゲットデータが要求ノードのキャッシュサブシステムから引き出される場合、要求プローブをターゲットノードに送信し、このデータを要求ノードに返すことができる。メモリ要求によってターゲットされ、プローブフィルタから取得されたキャッシュラインの所有者が、初期プローブキャッシュから取得された領域の所有者と一致しない場合、コヒーレントスレーブは、初期プローブキャッシュ内の対応するエントリの信頼度指標をデクリメントする。また、コヒーレントスレーブは、要求プローブを正しい処理ノードに送信する。
初期プローブキャッシュへのルックアップが失敗し、プローブフィルタへのルックアップが共有ページ上でヒットした場合、新たなエントリが初期プローブキャッシュに割り当てられる。コヒーレントスレーブは、メモリ要求のターゲットとなるキャッシュラインを含む領域を決定し、当該領域のIDを、初期プローブキャッシュ内の新たなエントリの領域所有者フィールドに記憶する。また、コヒーレントスレーブは、信頼度指標フィールド及びLRUフィールドをデフォルト値に初期化する。したがって、同じ領域をターゲットとする後続のメモリ要求がコヒーレントスレーブによって受信されると、初期プローブキャッシュへのルックアップがこの新たなエントリ上でヒットし、信頼度指標フィールドがプログラム可能な閾値よりも大きくなると、初期プローブが、領域所有者として識別されるノードに送られる。
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、コア複合体105A〜105Nと、入出力(I/O)インタフェース120と、バス125と、1つ以上のメモリコントローラ130と、ネットワークインタフェース135と、を少なくとも含む。他の実施形態では、コンピューティングシステム100は、他のコンポーネントを含むことができ、及び/又は、コンピューティングシステム100は、異なる構成とすることができる。一実施形態では、各コア複合体105A〜105Nは、中央処理装置(CPU)等の1つ以上の汎用プロセッサを含む。「コア複合体」は、本明細書では「処理ノード」又は「CPU」とも呼ばれることに留意されたい。いくつかの実施形態では、1つ以上のコア複合体105A〜105Nは、高度に並列なアーキテクチャを有するデータ並列プロセッサを含むことができる。データ並列プロセッサの例は、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)等を含む。コア複合体105A〜105N内の各プロセッサコアは、1つ以上のレベルのキャッシュを有するキャッシュサブシステムを含む。一実施形態では、各コア複合体105A〜105Nは、複数のプロセッサコア間で共有されるキャッシュ(例えば、レベル3(L3)キャッシュ)を含む。
1つ以上のメモリコントローラ130は、コア複合体105A〜105Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ130は、任意の数及びタイプのメモリデバイス(図示省略)に接続されている。例えば、メモリコントローラ130に接続されるメモリデバイスのメモリのタイプは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)、又は、他のものを含むことができる。I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、周辺機器相互接続(PCI)バス、PCI拡張(PCI−X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺機器をI/Oインタフェース120に接続することができる。このような周辺機器には、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、ネットワークインタフェースカード等が含まれる(但し、これらに限定されない)。
様々な実施形態では、コンピューティングシステム100は、サーバ、コンピュータ、ラップトップ、モバイルデバイス、ゲーム機、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスの何れかであってもよい。コンピューティングシステム100のコンポーネントの数は、実施形態毎に異なってもよいことに留意されたい。各コンポーネントは、図1に示す数より多くてもよいし少なくてもよい。また、コンピューティングシステム100は、図1に示されていない他のコンポーネントを含むことができることに留意されたい。また、他の実施形態では、コンピューティングシステム100は、図1に示す以外の方法で構成されてもよい。
図2を参照すると、コア複合体200の一実施形態のブロック図が示されている。一実施形態では、コア複合体200は、4つのプロセッサコア210A〜210Dを含む。他の実施形態では、コア複合体200は、他の数のプロセッサコアを含むことができる。「コア複合体」は、本明細書では「処理ノード」又は「CPU」とも呼ばれることに留意されたい。一実施形態では、コア複合体200のコンポーネントは、(図1の)コア複合体105A〜105N内に含まれる。
各プロセッサコア210A〜210Dは、メモリサブシステム(図示省略)から取得されたデータ及び命令を記憶するためのキャッシュサブシステムを含む。例えば、一実施形態では、各コア210A〜210Dは、対応するレベル1(L1)キャッシュ215A〜215Dを含む。各プロセッサコア210A〜210Dは、対応するレベル2(L2)キャッシュ220A〜220Dを含むか、これに接続されてもよい。さらに、一実施形態では、コア複合体200は、プロセッサコア210A〜210Dによって共有されるレベル3(L3)キャッシュ230を含む。L3キャッシュ230は、ファブリック及びメモリサブシステムへのアクセスのためにコヒーレントマスタに接続されている。他の実施形態では、コア複合体200は、他の数のキャッシュを有する及び/又は様々なキャッシュレベルの他の構成を有する他のタイプのキャッシュサブシステムを含むことができることに留意されたい。
図3を参照すると、マルチCPUシステム300の一実施形態のブロック図が示されている。一実施形態では、システムは、複数のCPU305A〜305Nを含む。システム当たりのCPU数は、実施形態によって変えることができる。各CPU305A〜305Nは、任意の数のコア308A〜308Nを含むことができ、コアの数は、実施形態によって変わる。各CPU305A〜305Nは、対応するキャッシュサブシステム310A〜310Nも含む。各キャッシュサブシステム310A〜310Nは、任意の数のレベルのキャッシュ、及び、任意のタイプのキャッシュ階層構造を含むことができる。
一実施形態では、各CPU305A〜305Nは、対応するコヒーレントマスタ315A〜315Nに接続されている。本明細書で使用する場合、「コヒーレントマスタ」は、相互接続(例えば、バス/ファブリック318)を介して流れるトラフィックを処理し、接続されたCPUのコヒーレンシを管理するエージェントとして定義される。コヒーレンシを管理するために、コヒーレントマスタは、コヒーレンシ関連のメッセージ及びプローブを受信して処理し、コヒーレンシ関連の要求及びプローブを生成する。「コヒーレントマスタ」は、本明細書では「コヒーレントマスタユニット」とも呼ばれることに留意されたい。
一実施形態では、各CPU305A〜305Nは、対応するコヒーレントマスタ315A〜315N及びバス/ファブリック318を介してコヒーレントスレーブのセットに接続されている。例えば、CPU305Aは、コヒーレントマスタ315A及びバス/ファブリック318を介してコヒーレントスレーブ320A〜320Bに接続されている。コヒーレントスレーブ(CS)320Aは、メモリコントローラ(MC)330Aに接続されており、コヒーレントスレーブ320Bは、メモリコントローラ330Bに接続されている。コヒーレントスレーブ320Aは、プローブフィルタ(PF)325Aに接続されており、プローブフィルタ325Aは、メモリコントローラ330Aを介してアクセス可能なメモリのためにシステム300にキャッシュされるキャッシュラインを有するメモリ領域のエントリを含む。プローブフィルタ325A及び他のプローブフィルタの各々は、「キャッシュディレクトリ」とも呼ばれることに留意されたい。同様に、コヒーレントスレーブ320Bは、プローブフィルタ325Bに接続されており、プローブフィルタ325Bは、メモリコントローラ330Bを介してアクセス可能なメモリのためにシステム300にキャッシュされるキャッシュラインを有するメモリ領域のエントリを含む。CPU毎に2つのメモリコントローラを有する例は、一実施形態を示すに過ぎないことに留意されたい。他の実施形態では、各CPU305A〜305Nが、2つ以外の他の数のメモリコントローラに接続されてもよいことを理解されたい。
CPU305Aと同様の構成において、CPU305Bは、コヒーレントマスタ315B及びバス/ファブリック318を介してコヒーレントスレーブ335A〜335Bに接続されている。コヒーレントスレーブ335Aは、メモリコントローラ350Aを介してメモリに接続されており、コヒーレントスレーブ335Aは、プローブフィルタ345Aに接続されており、メモリコントローラ350Aを介してアクセス可能なメモリに対応するキャッシュラインのコヒーレンシを管理する。コヒーレントスレーブ335Bは、プローブフィルタ345Bに接続されており、コヒーレントスレーブ335Bは、メモリコントローラ365Bを介してメモリに接続されている。また、CPU305Nは、コヒーレントマスタ315N及びバス/ファブリック318を介してコヒーレントスレーブ355A〜355Bに接続されている。コヒーレントスレーブ355A〜355Bの各々は、プローブフィルタ360A〜360Bに接続されており、コヒーレントスレーブ355A〜355Bの各々は、メモリコントローラ365A〜365Bを介してメモリに接続されている。本明細書で使用する場合、「コヒーレントスレーブ」は、対応するメモリコントローラをターゲットとする受信した要求及びプローブを処理することによってコヒーレンシを管理するエージェントとして定義される。「コヒーレントスレーブ」は、本明細書では「コヒーレントスレーブユニット」とも呼ばれることに留意されたい。さらに、本明細書で使用する場合、「プローブ」は、コンピュータシステムにおいてコヒーレンシポイントから1つ以上のキャッシュに渡され、キャッシュがデータブロックのコピーを含むかどうかを判別し、オプションとして、キャッシュがデータブロックを配置する状態を示すメッセージとして定義される。
コヒーレントスレーブは、その対応するメモリコントローラをターゲットとするメモリ要求を受信すると、対応する初期プローブキャッシュ及び対応するプローブフィルタの並列ルックアップを実行する。一実施形態では、システム300内の各初期プローブキャッシュは、メモリ領域を追跡し、領域は、複数のキャッシュラインを含む。追跡される領域のサイズは、実施形態によって変わる場合がある。本明細書では、「領域」は、「ページ」とも呼ばれることに留意されたい。コヒーレントスレーブは、要求を受信すると、この要求によってターゲットとされる領域を決定する。次に、この領域について初期プローブキャッシュのルックアップを実行し、並行して、プローブフィルタのルックアップを実行する。初期プローブキャッシュのルックアップは、通常、プローブフィルタのルックアップの前に数サイクル完了する。初期プローブキャッシュのルックアップの結果がヒットになった場合、コヒーレントスレーブは、ヒットエントリで識別される1つ以上のCPUに初期プローブを送信する。これにより、初期プローブキャッシュが正しいターゲットを識別する場合に、データの初期取得が容易になり、メモリ要求を処理することに関連するレイテンシを短縮する。他の実施形態では、図を不明瞭にすることを避けるために、バス/ファブリック318から図示されていない他のコンポーネントへの他の接続が存在する場合があることに留意されたい。例えば、別の実施形態では、バス/ファブリック318は、1つ以上のI/Oインタフェース、及び、1つ以上のI/Oデバイスへの接続を有する。
図4を参照すると、コヒーレントスレーブ400の一実施形態のブロック図が示されている。一実施形態では、コヒーレントスレーブ400のロジックは、(図3)システム300のコヒーレントスレーブ320A〜320B,335A〜335B,355A〜355Bに含まれている。コヒーレントスレーブ400は、プローブフィルタ415及び初期プローブキャッシュ420に接続された制御ユニット410を含む。制御ユニット410は、相互接続ファブリック及びメモリコントローラにも接続されている。制御ユニット410は、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせを使用して実装されてもよい。制御ユニット410は、相互接続ファブリックを介して様々なCPUからメモリ要求を受信するように構成されている。制御ユニット410によって受信されるメモリ要求は、コヒーレントスレーブ400に接続されたメモリコントローラを介してメモリに伝達される。一実施形態では、制御ユニット410が所定のメモリ要求を受信すると、制御ユニット410は、初期プローブキャッシュ420及びプローブフィルタ415の並列ルックアップを実行する。
一実施形態では、初期プローブキャッシュ420は、共有領域についてのプローブフィルタ415への最近のルックアップの結果をキャッシュするように構成されている。例えば、受信したメモリ要求に対してプローブフィルタ415のルックアップを実行すると、ルックアップから取得された情報の一部が保持され、初期プローブキャッシュ420に記憶される。例えば、キャッシュラインの所有者のIDがプローブフィルタ415のルックアップから取得され、このキャッシュラインが入る領域のアドレスについてのエントリが初期プローブキャッシュ420に生成される。このキャッシュラインをキャッシュしているノードは、初期プローブキャッシュ420の新たなエントリに領域所有者として記憶される。
概して、初期プローブキャッシュ420は、メモリの領域内では、全てのキャッシュラインについて共有動作が同じである可能性が高いという原則に基づいて動作する。換言すれば、コヒーレントスレーブ400が、第1領域内の第1キャッシュラインについての指向性プローブを生成してノード445に送信する場合、第1領域内の第2キャッシュラインについての指向性プローブをノード445に送信する確率も高い。初期プローブキャッシュ420は、プローブフィルタ415よりも小さく高速であることから、初期プローブキャッシュ420は、プローブフィルタ415のルックアップが完了するよりも早く、ターゲットノードに対して投機的に初期プローブを起動するようになる。初期プローブの起動から利益を得るワークロードの一例は、プロデューサコンシューマシナリオ(producer consumer scenario)であり、プロデューサが領域内のラインに記憶した後に、コンシューマがこれらのラインから読み出す。領域内の全てのラインについて、ホームノードは、プローブを起動して、プロデューサから最新のデータを得るようになる。
本明細書で使用する場合、「指向性プローブ」は、プローブフィルタ415へのルックアップに基づいて生成されたプローブを指し、このプローブは、メモリ要求によってターゲットとされるキャッシュラインの所有者に送信される。「初期プローブ」は、初期プローブキャッシュ420へのルックアップに基づいて生成されるプローブを指し、このプローブは、メモリ要求によってターゲットとされるキャッシュラインの領域の所有者として識別されるノードに送信される。初期プローブが指向性プローブと異なる1つの点は、初期プローブが誤ったターゲットに送信される可能性があることである。また、初期プローブは、指向性プローブよりも数クロックサイクル早く送信されるため、初期プローブが正しいターゲットに送信されると、メモリ要求の処理のレイテンシを短縮するのに役立つ。
一実施形態では、初期プローブキャッシュ420の各エントリは、領域アドレスフィールドと、領域所有者フィールドと、信頼度指標フィールドと、最低使用頻度(LRU)フィールドと、を含む。コヒーレントスレーブ400は、要求を受信すると、要求の領域アドレスに対して初期プローブキャッシュ420のルックアップを実行し、要求によってターゲットとされるキャッシュラインに対してプローブフィルタ415の並列ルックアップを実行する。初期プローブキャッシュ420のルックアップの結果がヒットとなった場合、コヒーレントスレーブ400は、一致するエントリから信頼度指標を取得する。信頼度カウンタがプログラム可能な閾値を超えた場合、領域所有者をターゲットとする初期プローブを起動させる。そうではなく、信頼度カウンタがプログラム可能な閾値以下である場合、コヒーレントスレーブ400は、初期プローブが起動するのを抑制し、代わりに、プローブフィルタ415へのルックアップの結果を待機する。
後の時点で、プローブフィルタ415へのルックアップが完了すると、プローブフィルタ415へのルックアップの結果によって初期プローブキャッシュ420が更新される。共有領域の領域アドレスについてのエントリが初期プローブキャッシュ420に存在しない場合、LRUフィールドに基づいて既存のエントリがエビクションされることによって、新たなエントリが初期プローブキャッシュ420に生成される。領域アドレスについてのエントリが初期プローブキャッシュ420に既に存在する場合、このエントリについてのLRUフィールドが更新される。プローブフィルタ415から取得されたキャッシュラインターゲットが、初期プローブキャッシュ420のエントリで識別される領域所有者と同じ場合、信頼度指標がインクリメントされる(すなわち、1だけ増加される)。プローブフィルタ415から取得されたキャッシュラインターゲットが、初期プローブキャッシュ420のエントリで識別される領域所有者と同じでない場合、信頼度指標がデクリメント(すなわち、1だけ減少される)又はリセットされる。
初期プローブがコヒーレントスレーブ400によって起動すると、プローブフィルタ415のルックアップ後に生成される対応する要求プローブを、実施形態に応じて異なる方法で処理することができる。一実施形態では、初期プローブが正しいターゲットに対するものである場合、要求プローブが起動しない。この実施形態では、初期プローブは、データをターゲットから取得し、要求ノードに返す。一方、初期プローブが誤ったターゲットに送信される場合、要求プローブは、正しいターゲットに送信される。別の実施形態では、初期プローブが、ターゲットのキャッシュサブシステムからデータを引き出した後に、このデータが、一時バッファに記憶される。このデータは、要求プローブが到達する前にタイマーが期限切れになった場合に、ドロップされる可能性がある。この実施形態では、要求プローブは、初期プローブの後に起動され、キャッシュサブシステムから引き出されるデータを要求ノードに転送する。
図5を参照すると、初期プローブメカニズムを実装する方法500の一実施形態が示されている。説明のために、この実施形態及び図6の実施形態におけるステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち1つ以上が、同時に実行され、図示した順序とは異なる順序で実行され、又は、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素も実行される。本明細書で説明する様々なシステム又は装置の何れも、方法500を実施するように構成されている。
コヒーレントスレーブユニットは、メモリ要求を受信したことに応じて、プローブフィルタ及び初期プローブキャッシュへの並列ルックアップを実行する(ブロック505)。プローブフィルタへのルックアップが完了する前に、コヒーレントスレーブユニットは、初期プローブキャッシュへのルックアップが、メモリ要求によってターゲットとされた第1領域の所有者として第1処理ノードを識別するエントリに一致すると判別したことに応じて、初期プローブを第1処理ノードに送信する(ブロック510)。この説明のために、初期プローブキャッシュ内で一致するエントリの信頼度指標が、プログラム可能な閾値よりも大きいと仮定する。プローブフィルタへのルックアップによって、第1処理ノードを、メモリ要求によってターゲットとされたキャッシュラインの所有者として識別した場合(条件ブロック515:Yes)、初期プローブキャッシュ内で一致するエントリ内の信頼度指標がインクリメントされ、LRUフィールドが更新される(ブロック520)。実施形態に応じて、オプションとして、要求プローブを第1処理ノードに送信することができる(ブロック525)。
プローブフィルタへのルックアップによって、異なる処理ノードが、メモリ要求によってターゲットとされたキャッシュラインの所有者として識別された場合(条件ブロック515:No)、初期プローブキャッシュ内で一致するエントリ内の信頼度指標がデクリメントされ、LRUフィールドが更新される(ブロック530)。また、オプションとして、初期プローブキャッシュ内で一致するエントリ内の領域所有者フィールドが正しい処理ノードに更新される(ブロック535)。さらに、要求プローブが正しい処理ノードに送信される(ブロック540)。ブロック525,540の後に、方法500は終了する。
図6を参照すると、初期プローブを生成する際に使用するために、領域ベースのエントリを初期プローブキャッシュに割り当てる方法600の一実施形態が示されている。受信したメモリ要求についての初期プローブキャッシュへのルックアップは、既存のエントリと一致しないが、プローブフィルタへのルックアップは、共有領域についての既存のエントリと一致する(ブロック605)。初期プローブキャッシュのルックアップ及びプローブフィルタのルックアップは、コヒーレントスレーブユニットによって並行して実行されることに留意されたい。初期プローブキャッシュのルックアップが失敗していること、及び、プローブフィルタへのルックアップがヒットしていることに応じて、要求プローブが、プローブフィルタ内で一致するエントリによって識別されたターゲットに送信される(ブロック610)。また、メモリ要求によってターゲットとされた領域を決定する(ブロック615)。次に、メモリ要求の領域についての新たなエントリが、初期プローブキャッシュに割り当てられる(ブロック620)。任意の適切なエビクションアルゴリズムを利用して、何れのエントリをエビクションして新たなエントリ用のスペースを生成するかを決定することができる。新たなエントリの信頼度指標がデフォルト値に設定され、新たなエントリのLRUフィールドが初期化される(ブロック625)。要求プローブによってターゲットとされたノードのIDは、初期プローブキャッシュ内の新たなエントリの領域所有者フィールドに記憶される(ブロック630)。したがって、この領域をターゲットとする将来のメモリ要求について、初期プローブキャッシュ内のこの新たなエントリに基づいて、初期プローブが同じノードに送信される。ブロック630の後に、方法600は終了する。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書で説明する方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、このようなプログラム命令を、高レベルプログラミング言語として表すことができる。他の実施形態では、プログラム命令を、高レベルプログラミング言語からバイナリ、中間又は他の形式にコンパイルすることができる。或いは、ハードウェアの動作又は設計を記述するプログラム命令を書き込むことができる。このようなプログラム命令は、C言語等の高レベルプログラミング言語によって表すことができる。或いは、Verilog等のハードウェア設計言語(HDL)を使用することもできる。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム実行のためにプログラム命令をコンピューティングシステムに提供する。一般に、このようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
上述した実施形態は、実装の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、当業者には多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、かかる変形及び修正の全てを包含すると解釈されることを意図している。

Claims (20)

  1. 複数の処理ノードと、
    前記複数の処理ノードによってキャッシュされるキャッシュラインを追跡するように構成されたプローブフィルタと、
    メモリコントローラと、
    前記メモリコントローラに接続されたコヒーレントスレーブユニットであって、前記コヒーレントスレーブユニットは、前記プローブフィルタへの最近のルックアップをキャッシュするように構成された初期プローブキャッシュを含み、前記初期プローブキャッシュは、領域ベースでエントリを記憶し、領域は、複数のキャッシュラインを含む、コヒーレントスレーブユニットと、
    を備えるシステムであって、
    前記コヒーレントスレーブユニットは、
    メモリ要求を受信したことに応じて、前記プローブフィルタ及び前記初期プローブキャッシュへの並列ルックアップを実行することと、
    前記初期プローブキャッシュのルックアップが第1エントリに一致することに応じて、前記初期プローブキャッシュの前記第1エントリから第1処理ノードの識別子を取得することであって、前記第1エントリは、前記第1処理ノードを、前記メモリ要求によってターゲットとされた第1領域の所有者として識別する、ことと、
    前記第1エントリの信頼度指標が閾値よりも大きいと判別したことに応じて、初期プローブを前記第1処理ノードに送信することであって、前記初期プローブは、前記プローブフィルタへのルックアップが完了する前に送信される、ことと、
    を行うように構成されている、
    システム。
  2. 前記コヒーレントスレーブユニットは、前記プローブフィルタへの前記ルックアップが、前記第1処理ノードを、前記メモリ要求によってターゲットとされたキャッシュラインの所有者として識別すると判別したことに応じて、前記第1エントリの前記信頼度指標を増加させるように構成されている、
    請求項1のシステム。
  3. 前記コヒーレントスレーブユニットは、前記プローブフィルタへの前記ルックアップが、異なる処理ノードを、前記メモリ要求によってターゲットとされたキャッシュラインの所有者として識別すると判別したことに応じて、前記第1エントリの前記信頼度指標を低下させるように構成定されている、
    請求項2のシステム。
  4. 前記コヒーレントスレーブユニットは、前記初期プローブキャッシュへの前記ルックアップが失敗し、前記プローブフィルタへの前記ルックアップが共有領域に対応するエントリにヒットしたことに応じて、前記メモリ要求についての新たなエントリを前記初期プローブキャッシュに割り当てるように構成されている、
    請求項1のシステム。
  5. 前記コヒーレントスレーブユニットは、
    前記メモリ要求によってターゲットとされた前記キャッシュラインを含む領域を決定することと、
    前記領域のアドレスを、前記初期プローブキャッシュの前記新たなエントリの領域アドレスフィールドに記憶することと、
    前記プローブフィルタの一致するエントリから前記キャッシュラインの所有者の識別子(ID)を抽出することと、
    前記IDを、前記初期プローブキャッシュの前記新たなエントリの領域所有者フィールドに記憶することと、
    を行うように構成されている、
    請求項4のシステム。
  6. 前記第1処理ノードは、
    前記初期プローブを受信することと、
    データが前記第1処理ノードのキャッシュサブシステムに存在する場合に、前記初期プローブによってターゲットとされた前記データを取得することと、
    前記データを要求元の処理ノードに返すことと、
    を行うように構成されている、
    請求項1のシステム。
  7. 前記第1処理ノードは、
    前記初期プローブを受信することと、
    データが前記第1処理ノードのキャッシュサブシステムに存在する場合に、前記初期プローブによってターゲットとされた前記データを取得することと、
    前記データをバッファリングし、対応する要求プローブを受信するまで待機することと、
    を行うように構成されている、
    請求項1のシステム。
  8. メモリ要求を受信したことに応じて、プローブフィルタ及び初期プローブキャッシュへの並列ルックアップを実行することと、
    前記初期プローブキャッシュのルックアップが第1エントリに一致することに応じて、前記初期プローブキャッシュの前記第1エントリから第1処理ノードの識別子を取得することであって、前記第1エントリは、前記第1処理ノードを、前記メモリ要求によってターゲットとされた第1領域の所有者として識別する、ことと、
    前記第1エントリの信頼度指標が閾値よりも大きいと判別したことに応じて、初期プローブを前記第1処理ノードに送信することであって、前記初期プローブは、前記プローブフィルタへのルックアップが完了する前に送信される、ことと、を含む、
    方法。
  9. 記プローブフィルタへの前記ルックアップが、前記第1処理ノードを、前記メモリ要求によってターゲットとされたキャッシュラインの所有者として識別すると判別したことに応じて、前記第1エントリの前記信頼度指標を増加させることを含む、
    請求項8の方法。
  10. 前記プローブフィルタへの前記ルックアップが、異なる処理ノードを、前記メモリ要求によってターゲットとされたキャッシュラインの所有者として識別すると判別したことに応じて、前記第1エントリの前記信頼度指標を低下させることを含む、
    請求項9の方法。
  11. 前記方法は、前記初期プローブキャッシュへの前記ルックアップが失敗し、前記プローブフィルタへの前記ルックアップが共有領域に対応するエントリにヒットしたことに応じて、前記メモリ要求についての新たなエントリを前記初期プローブキャッシュに割り当てることを含む、
    請求項8の方法。
  12. 前記メモリ要求によってターゲットとされた前記キャッシュラインを含む領域を決定することと、
    前記領域のアドレスを、前記初期プローブキャッシュの前記新たなエントリの領域アドレスフィールドに記憶することと、
    前記プローブフィルタの一致するエントリから前記キャッシュラインの所有者の識別子(ID)を抽出することと、
    前記IDを、前記初期プローブキャッシュの前記新たなエントリの領域所有者フィールドに記憶することと、を含む、
    請求項11の方法。
  13. 前記第1処理ノードにおいて、前記初期プローブを受信することと、
    データが前記第1処理ノードのキャッシュサブシステムに存在する場合に、前記初期プローブによってターゲットとされた前記データを取得することと、
    前記データを要求元の処理ノードに返すことと、を含む、
    請求項8の方法。
  14. 前記第1処理ノードにおいて、前記初期プローブを受信することと、
    データが前記第1処理ノードのキャッシュサブシステムに存在する場合に、前記初期プローブによってターゲットとされた前記データを取得することと、
    前記データをバッファリングし、対応する要求プローブを受信するまで待機することと、を含む、
    請求項8の方法。
  15. 複数の処理ノードによってキャッシュされるキャッシュラインを追跡するように構成されたプローブフィルタと、
    前記プローブフィルタへの最近のルックアップをキャッシュするように構成された初期プローブキャッシュを含むコヒーレントスレーブユニットと、
    を備える装置であって、
    前記初期プローブキャッシュは、領域ベースでエントリを記憶し、
    領域は、複数のキャッシュラインを含み、
    前記コヒーレントスレーブユニットは、
    メモリ要求を受信したことに応じて、前記プローブフィルタ及び前記初期プローブキャッシュへの並列ルックアップを実行することと、
    前記初期プローブキャッシュのルックアップが第1エントリに一致することに応じて、前記初期プローブキャッシュの前記第1エントリから第1処理ノードの識別子を取得することであって、前記第1エントリは、前記第1処理ノードを、前記メモリ要求によってターゲットとされた第1領域の所有者として識別する、ことと、
    前記第1エントリの信頼度指標が閾値よりも大きいと判別したことに応じて、初期プローブを前記第1処理ノードに送信することであって、前記初期プローブは、前記プローブフィルタへのルックアップが完了する前に送信される、ことと、
    を行うように構成されている、
    装置。
  16. 前記コヒーレントスレーブユニットは、前記プローブフィルタへの前記ルックアップが、前記第1処理ノードを、前記メモリ要求によってターゲットとされたキャッシュラインの所有者として識別すると判別したことに応じて、前記第1エントリの前記信頼度指標を増加させるように構成されている、
    請求項15の装置。
  17. 前記コヒーレントスレーブユニットは、前記プローブフィルタへの前記ルックアップが、異なる処理ノードを、前記メモリ要求によってターゲットとされたキャッシュラインの所有者として識別すると判別したことに応じて、前記第1エントリの前記信頼度指標を低下させるように構成されている、
    請求項16の装置。
  18. 前記コヒーレントスレーブユニットは、前記初期プローブキャッシュへの前記ルックアップが失敗し、前記プローブフィルタへの前記ルックアップが共有領域に対応するエントリにヒットしたことに応じて、前記メモリ要求についての新たなエントリを前記初期プローブキャッシュに割り当てるように構成されている、
    請求項15の装置。
  19. 前記コヒーレントスレーブユニットは、
    前記メモリ要求によってターゲットとされた前記キャッシュラインを含む領域を決定することと、
    前記領域のアドレスを、前記初期プローブキャッシュの前記新たなエントリの領域アドレスフィールドに記憶することと、
    前記プローブフィルタの一致するエントリから前記キャッシュラインの所有者の識別子(ID)を抽出することと、
    前記IDを、前記初期プローブキャッシュの前記新たなエントリの領域所有者フィールドに記憶することと、
    を行うように構成されている、
    請求項18の装置。
  20. 前記コヒーレントスレーブユニットは、前記プローブフィルタへの前記ルックアップが、第2処理ノードを、前記メモリ要求によってターゲットとされたキャッシュラインの所有者として識別するエントリに一致すると判別したことに応じて、要求プローブを前記第2処理ノードに送信するように構成されている、
    請求項15の装置。
JP2020532672A 2017-12-15 2018-09-19 ホームエージェントベースのキャッシュ転送アクセラレーションスキーム Active JP6975335B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/844,215 US10776282B2 (en) 2017-12-15 2017-12-15 Home agent based cache transfer acceleration scheme
US15/844,215 2017-12-15
PCT/US2018/051756 WO2019118037A1 (en) 2017-12-15 2018-09-19 Home agent based cache transfer acceleration scheme

Publications (3)

Publication Number Publication Date
JP2021507371A JP2021507371A (ja) 2021-02-22
JP2021507371A5 JP2021507371A5 (ja) 2021-10-28
JP6975335B2 true JP6975335B2 (ja) 2021-12-01

Family

ID=63794694

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020532672A Active JP6975335B2 (ja) 2017-12-15 2018-09-19 ホームエージェントベースのキャッシュ転送アクセラレーションスキーム

Country Status (6)

Country Link
US (2) US10776282B2 (ja)
EP (2) EP3961409B1 (ja)
JP (1) JP6975335B2 (ja)
KR (1) KR102383040B1 (ja)
CN (1) CN111656332A (ja)
WO (1) WO2019118037A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10776282B2 (en) 2017-12-15 2020-09-15 Advanced Micro Devices, Inc. Home agent based cache transfer acceleration scheme
US11210248B2 (en) * 2019-12-20 2021-12-28 Advanced Micro Devices, Inc. System direct memory access engine offload
CN117651021B (zh) * 2024-01-25 2024-04-30 苏州萨沙迈半导体有限公司 过滤器及其控制方法和装置、电气设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055610A (en) * 1997-08-25 2000-04-25 Hewlett-Packard Company Distributed memory multiprocessor computer system with directory based cache coherency with ambiguous mapping of cached data to main-memory locations
US6631401B1 (en) 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US7395375B2 (en) * 2004-11-08 2008-07-01 International Business Machines Corporation Prefetch miss indicator for cache coherence directory misses on external caches
US7627722B2 (en) 2005-08-23 2009-12-01 Advanced Micro Devices, Inc. Method for denying probes during proactive synchronization within a computer system
US8185695B2 (en) * 2008-06-30 2012-05-22 Advanced Micro Devices, Inc. Snoop filtering mechanism
WO2010052799A1 (ja) * 2008-11-10 2010-05-14 富士通株式会社 情報処理装置及びメモリ制御装置
US9081706B2 (en) * 2012-05-10 2015-07-14 Oracle International Corporation Using a shared last-level TLB to reduce address-translation latency
US9405687B2 (en) * 2013-11-04 2016-08-02 Intel Corporation Method, apparatus and system for handling cache misses in a processor
US9639470B2 (en) * 2014-08-26 2017-05-02 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
DE102015115582A1 (de) 2014-10-22 2016-04-28 Imagination Technologies Limited Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens
CN104331377B (zh) 2014-11-12 2018-06-26 浪潮(北京)电子信息产业有限公司 一种多核处理器系统的目录缓存管理方法
US11237965B2 (en) * 2014-12-31 2022-02-01 Arteris, Inc. Configurable snoop filters for cache coherent systems
US9792210B2 (en) 2015-12-22 2017-10-17 Advanced Micro Devices, Inc. Region probe filter for distributed memory system
US9817760B2 (en) * 2016-03-07 2017-11-14 Qualcomm Incorporated Self-healing coarse-grained snoop filter
US11061572B2 (en) * 2016-04-22 2021-07-13 Advanced Micro Devices, Inc. Memory object tagged memory monitoring method and system
US10776282B2 (en) 2017-12-15 2020-09-15 Advanced Micro Devices, Inc. Home agent based cache transfer acceleration scheme

Also Published As

Publication number Publication date
US11782848B2 (en) 2023-10-10
EP3961409B1 (en) 2024-04-10
WO2019118037A1 (en) 2019-06-20
CN111656332A (zh) 2020-09-11
US10776282B2 (en) 2020-09-15
US20190188155A1 (en) 2019-06-20
EP3961409A1 (en) 2022-03-02
KR20200096975A (ko) 2020-08-14
US20210064545A1 (en) 2021-03-04
JP2021507371A (ja) 2021-02-22
EP3724772B1 (en) 2021-10-27
KR102383040B1 (ko) 2022-04-08
EP3724772A1 (en) 2020-10-21

Similar Documents

Publication Publication Date Title
JP7390304B2 (ja) 大規模なキャッシュサイズに適合する領域ベースのディレクトリスキーム
US10402327B2 (en) Network-aware cache coherence protocol enhancement
US11782848B2 (en) Home agent based cache transfer acceleration scheme
US20070294485A1 (en) Semi-blocking deterministic directory coherence
JP2019526086A (ja) 競合ロック要求の消去スキーム
US10198357B2 (en) Coherent interconnect for managing snoop operation and data processing apparatus including the same
US10705959B2 (en) Region based split-directory scheme to adapt to large cache sizes
JP5976225B2 (ja) スティッキー抜去エンジンを伴うシステムキャッシュ
JP7036988B2 (ja) 領域ベースのキャッシュディレクトリスキームにおけるプライベート領域へのアクセスの加速
US10503648B2 (en) Cache to cache data transfer acceleration techniques
US20220050785A1 (en) System probe aware last level cache insertion bypassing
JP6975338B2 (ja) 順序付けされた帯域幅を改善するプロトコルスキームのキャンセル及びリプレイ
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210917

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210917

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210917

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: 20211019

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211105

R150 Certificate of patent or registration of utility model

Ref document number: 6975335

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150