(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-05
(54)【発明の名称】コヒーレントブロック読み出し実行
(51)【国際特許分類】
G06F 12/0815 20160101AFI20241128BHJP
【FI】
G06F12/0815
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024536024
(86)(22)【出願日】2022-12-14
(85)【翻訳文提出日】2024-07-18
(86)【国際出願番号】 US2022052765
(87)【国際公開番号】W WO2023121925
(87)【国際公開日】2023-06-29
(32)【優先日】2021-12-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ヴィドヒャナサン カリヤナスンダラム
(72)【発明者】
【氏名】アミット ピー. アプテ
(72)【発明者】
【氏名】エリック クリストファー モートン
(72)【発明者】
【氏名】ガネシュ バラクリシュナン
(72)【発明者】
【氏名】アン エム. リン
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205MM03
5B205NN81
5B205UU31
5B205UU39
(57)【要約】
コヒーレントメモリファブリックは、複数のコヒーレントマスタコントローラとコヒーレントスレーブコントローラとを含む。複数のコヒーレントマスタコントローラの各々は、応答データバッファを含む。コヒーレントスレーブコントローラは、複数のコヒーレントマスタコントローラに結合される。コヒーレントスレーブコントローラは、選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されているという判定に応じて、ターゲット要求グローバル順序付けメッセージを選択されたコヒーレントマスタコントローラに送信し、応答データを送信する。選択されたコヒーレントマスタコントローラは、ターゲット要求グローバル順序付けメッセージを受信したことに応じて、応答データの受信が要求側クライアントによって肯定応答されるまで、選択されたコヒーレントブロック読み出しコマンドに関連するアドレスに対する任意のコヒーレントプローブをブロックする。
【選択図】
図4
【特許請求の範囲】
【請求項1】
コヒーレントメモリファブリックであって、
各々が応答データバッファを含む複数のコヒーレントマスタコントローラと、
前記複数のコヒーレントマスタコントローラに結合されたコヒーレントスレーブコントローラと、を備え、
前記コヒーレントスレーブコントローラは、選択されたコヒーレントマスタコントローラからの選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定したことに応じて、ターゲット要求グローバル順序付けメッセージを前記選択されたコヒーレントマスタコントローラに送信し、応答データを送信するように動作可能である、
コヒーレントメモリファブリック。
【請求項2】
前記選択されたコヒーレントマスタコントローラは、前記ターゲット要求グローバル順序付けメッセージに応じて、前記選択されたコヒーレントブロック読み出しコマンドに対して1つの応答データバッファエントリのみが予約されるように、前記応答データバッファ中の割り振りを更新する、
請求項1のコヒーレントメモリファブリック。
【請求項3】
前記選択されたコヒーレントマスタコントローラは、前記ターゲット要求グローバル順序付けメッセージを受信したことに応じて、前記応答データの受信が要求側クライアントによって肯定応答されるまで、前記選択されたコヒーレントブロック読み出しコマンドに関連するアドレスに対する任意のコヒーレントプローブをブロックするように動作可能である、
請求項2のコヒーレントメモリファブリック。
【請求項4】
前記選択されたコヒーレントマスタコントローラは、前記割り振りを更新した後に、後続のメモリアクセスコマンドを前記コヒーレントスレーブコントローラに直ちに送信する、
請求項2のコヒーレントメモリファブリック。
【請求項5】
前記コヒーレントスレーブコントローラは、コヒーレントスレーブデータバッファを備え、
前記コヒーレントスレーブコントローラは、選択されたコヒーレントマスタコントローラからの選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定したことに応じて、前記選択されたコヒーレントマスタコントローラからのソース完了メッセージを必要とすることなく、前記応答データを送信した直後に、前記応答データのために以前に割り振られた前記コヒーレントスレーブデータバッファのエントリを割り振り解除する、
請求項1のコヒーレントメモリファブリック。
【請求項6】
前記コヒーレントスレーブコントローラは、第2の選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていないと判定したことに応じて、ターゲット完了メッセージを前記選択されたコヒーレントマスタコントローラに送信し、応答データを前記選択されたコヒーレントマスタコントローラに送信し、前記応答データが受信されたことを示すソース完了メッセージを前記選択されたコヒーレントマスタコントローラから受信した後にのみ、前記応答データに対するコヒーレントスレーブデータバッファエントリを割り振り解除する、
請求項5のコヒーレントメモリファブリック。
【請求項7】
前記コヒーレントスレーブコントローラは、前記複数のコヒーレントマスタコントローラに関連付けられたプローブフィルタにおいてプローブフィルタルックアップを実行することによって、前記選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定する、
請求項1のコヒーレントメモリファブリック。
【請求項8】
方法であって、
コヒーレントマスタコントローラから、コヒーレントデータファブリックを介してコヒーレントスレーブコントローラにコヒーレントブロック読み出しコマンドを送信することと、
前記コヒーレントスレーブコントローラにおいて、前記コヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定したことに応じて、ターゲット要求グローバル順序付けメッセージを前記コヒーレントマスタコントローラに送信し、応答データを送信することと、を含む、
方法。
【請求項9】
前記コヒーレントマスタコントローラは、前記ターゲット要求グローバル順序付けメッセージに応じて、前記コヒーレントブロック読み出しコマンドに対して1つの応答データバッファエントリのみが予約されるように、応答データバッファ中の割り振りを更新する、
請求項8の方法。
【請求項10】
前記コヒーレントマスタコントローラにおいて、前記ターゲット要求グローバル順序付けメッセージを受信したことに応じて、前記応答データが受信されるまで、前記コヒーレントブロック読み出しコマンドに関連するアドレスに対する任意のコヒーレントプローブをブロックすることを含む、
請求項9の方法。
【請求項11】
前記コヒーレントマスタコントローラは、前記割り振りを更新した後に、後続のメモリアクセスコマンドを前記コヒーレントスレーブコントローラに直ちに送信する、
請求項9の方法。
【請求項12】
前記コヒーレントスレーブコントローラは、選択されたコヒーレントマスタコントローラからの前記コヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定したことに応じて、前記選択されたコヒーレントマスタコントローラからのソース完了メッセージを必要とすることなく、前記応答データを送信した直後に、前記応答データのために以前に割り振られたコヒーレントスレーブデータバッファのエントリを割り振り解除する、
請求項8の方法。
【請求項13】
前記コヒーレントスレーブコントローラは、第2のコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていないと判定したことに応じて、ターゲット完了メッセージを前記コヒーレントマスタコントローラに送信し、第2の応答データを前記コヒーレントマスタコントローラに送信し、前記第2の応答データが受信されたことを示すソース完了メッセージを前記コヒーレントマスタコントローラから受信した後にのみ、前記応答データに対するデータバッファエントリを割り振り解除する、
請求項8の方法。
【請求項14】
前記コヒーレントスレーブコントローラは、前記ターゲット要求メッセージを送信することと並行して、又は、前記ターゲット要求メッセージを送信した直後に、前記応答データを送信し始める、
請求項8の方法。
【請求項15】
前記コヒーレントスレーブコントローラは、複数のコヒーレントマスタコントローラに関連付けられたプローブフィルタにおいてプローブフィルタルックアップを実行することによって、前記コヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定する、
請求項8の方法。
【請求項16】
データ処理システムであって、
複数のデータプロセッサと、
揮発性メモリと、
コヒーレントメモリファブリックと、を備え、
前記コヒーレントメモリファブリックは、
前記複数のデータプロセッサの各々に結合され、各々が応答データバッファを含む複数のコヒーレントマスタコントローラと、
バスを介して前記揮発性メモリに結合され、前記複数のコヒーレントマスタコントローラに結合されたコヒーレントスレーブコントローラと、を備え、
前記コヒーレントスレーブコントローラは、選択されたコヒーレントマスタコントローラからの選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定したことに応じて、ターゲット要求グローバル順序付けメッセージを前記選択されたコヒーレントマスタコントローラに送信し、応答データを送信するように動作可能である、
データ処理システム。
【請求項17】
前記選択されたコヒーレントマスタコントローラは、前記ターゲット要求グローバル順序付けメッセージに応じて、前記選択されたコヒーレントブロック読み出しコマンドに対して1つの応答データバッファエントリのみが予約されるように、前記応答データバッファ中の割り振りを更新する、
請求項16のデータ処理システム。
【請求項18】
前記選択されたコヒーレントマスタコントローラは、前記ターゲット要求グローバル順序付けメッセージを受信したことに応じて、前記応答データが受信されるまで、前記選択されたコヒーレントブロック読み出しコマンドに関連するアドレスに対する任意のコヒーレントプローブをブロックするように動作可能である、
請求項17のデータ処理システム。
【請求項19】
前記コヒーレントスレーブコントローラは、コヒーレントスレーブデータバッファを備え、
前記コヒーレントスレーブコントローラは、選択されたコヒーレントマスタコントローラからの選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定したことに応じて、前記選択されたコヒーレントマスタコントローラからのソース完了メッセージを必要とすることなく、前記応答データを送信した直後に、前記応答データのために以前に割り振られた前記コヒーレントスレーブデータバッファのエントリを割り振り解除する、
請求項16のデータ処理システム。
【請求項20】
前記コヒーレントスレーブコントローラは、第2の選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていないと判定したことに応じて、ターゲット完了メッセージを前記選択されたコヒーレントマスタコントローラに送信し、応答データを前記選択されたコヒーレントマスタコントローラに送信し、前記応答データが受信されたことを示すソース完了メッセージを前記選択されたコヒーレントマスタコントローラから受信した後にのみ、前記応答データに対するコヒーレントスレーブデータバッファエントリを割り振り解除する、
請求項19のデータ処理システム。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、異なる入力/出力及び通信機能のために様々な周辺構成要素を利用する。システムオンチップ(SOC)は、単一の集積回路チップ上で、中央処理ユニット(CPU)コア及びグラフィックス処理ユニット(GPU)等のデータプロセッサを周辺コントローラ及びメモリインターフェースと組み合わせ、携帯型の電池式動作によく適している。例えば、SOCは、ディスプレイコントローラ、画像信号プロセッサ(ISP)及びSOC上の他の周辺コントローラを組み込んで、コンピュータシステムへの情報の入力及びコンピュータシステムからの情報の出力を可能にすることができる。かかるマルチノードSOCでは、デバイスは、通常、大型のオンチップルーティング回路又は「データファブリック」を介してアクセスをルーティングすることによって、メモリ等のリソース間でデータを転送する。いくつかのシステムでは、メモリコントローラを含む入力/出力(I/O)ダイ上にデータファブリックが提供される一方で、複数のチップレットがそれぞれプロセッサコアを含む。チップレット及びI/Oダイは、Infinity Fabric(商標)(IF)インターコネクト等の高速インターコネクトによって接続された共通のパッケージ基板に実装される。
【0002】
かかるマルチノードコンピュータシステムでは、異なる処理ノードによって使用されるデータのコヒーレンシを維持するためにコヒーレンシプロトコルが使用される。例えば、プロセッサがあるメモリアドレスのデータにアクセスしようとする場合、プロセッサは、先ず、そのメモリが別のキャッシュに記憶されており、修正されているかどうかを判定しなければならない。このキャッシュコヒーレンシプロトコルを実施するために、キャッシュは、典型的には、システム全体にわたってデータコヒーレンシを維持するためにキャッシュラインのステータスを示す複数のステータスビットを含む。1つの一般的なコヒーレンシプロトコルは、「MOESI」プロトコルとして知られている。MOESIプロトコルによれば、各キャッシュラインは、キャッシュラインが変更されたこと(M)、キャッシュラインが排他的であること(E)若しくは共有されていること(S)、又は、キャッシュラインが無効であること(I)を示すビットを含む、ラインが何れのMOESI状態にあるかを示すステータスビットを含む。所有(O)状態は、ラインが1つのキャッシュ内で修正され、他のキャッシュ内に共有コピーが存在する可能性があり、メモリ内のデータが古いことを示す。第1のノードのキャッシュサブシステムと第2のノードのキャッシュサブシステムとの間でデータを転送することは、通常、複数の動作を伴い、各動作は転送のレイテンシに寄与する。
【図面の簡単な説明】
【0003】
【
図1】従来技術による、マルチCPUシステムを形成するブロック図である。
【
図2】いくつかの実施形態による、データプロセッサのブロック図である。
【
図3】いくつかの実施形態による、データ処理システムのブロック図である。
【
図4】いくつかの実施形態による、データファブリックの一部のブロック図である。
【
図5】いくつかの実施形態による、メモリシステムを動作させるためのプロセスのフローチャート500である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面における同一の符号の使用は、同様の項目又は同一のアイテムを示す。特に断りのない限り、「結合された」という単語及びその関連する動詞形態は、当該技術分野で知られている手段による直接接続と間接電気接続の両方を含み、特に断りのない限り、直接接続のいかなる説明も、適切な形態の間接電気接続を使用する代替の実施形態も暗示する。
【0005】
コヒーレントメモリファブリックは、複数のコヒーレントマスタコントローラとコヒーレントスレーブコントローラとを含む。複数のコヒーレントマスタコントローラの各々は、応答データバッファを含む。コヒーレントスレーブコントローラは、複数のコヒーレントマスタコントローラに結合される。コヒーレントスレーブコントローラは、選択されたコヒーレントマスタコントローラからの選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されるという決定に応じて、選択されたコヒーレントマスタコントローラにターゲット要求グローバル順序付けメッセージを送信し、応答データを伝送するように動作可能である。
【0006】
方法は、コヒーレントマスタコントローラから、コヒーレントデータファブリックを介してコヒーレントスレーブコントローラにコヒーレントブロック読み出しコマンドを伝送することを含む。コヒーレントスレーブコントローラにおいて、本方法は、コヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されると判定したことに応じて、ターゲット要求グローバル順序付けメッセージをコヒーレントマスタコントローラに送信することと、コヒーレントデータファブリックを介して応答データを伝送することと、を含む。
【0007】
データ処理システムは、複数のデータプロセッサと、揮発性メモリと、コヒーレントメモリファブリックと、を含む。コヒーレントメモリファブリックは、複数のコヒーレントマスタコントローラとコヒーレントスレーブコントローラとを含む。複数のコヒーレントマスタコントローラの各々は、応答データバッファを含む。コヒーレントスレーブコントローラは、コヒーレントメモリファブリックを介して複数のコヒーレントマスタコントローラに結合される。コヒーレントスレーブコントローラは、選択されたコヒーレントマスタコントローラからの選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されるという決定に応じて、選択されたコヒーレントマスタコントローラにターゲット要求グローバル順序付けメッセージを送信し、応答データを伝送するように動作可能である。
【0008】
図1は、従来技術による、マルチCPUシステム100のブロック図である。システム100は、複数のCPU105A~105Nを含む。各CPU105A~105Nは、任意のコア数108A~108Nをそれぞれ含むことができ、コア数は、実施形態に従って変化する。各CPU105A~105Nは、対応するキャッシュサブシステム110A~110Nも含む。各キャッシュサブシステム110A~110Nは、任意の数のレベルのキャッシュ及び任意のタイプのキャッシュ階層構造を含むことができる。
【0009】
各CPU105A~105Nは、対応するコヒーレントマスタ115A~115Nに接続される。「コヒーレントマスタ」は、インターコネクト(例えば、バス/ファブリック118)を介して流れるトラフィックを処理し、接続されたクライアントプロセッサのコヒーレンシを管理するエージェントである。コヒーレンシを管理するために、コヒーレントマスタは、コヒーレンシ関連メッセージ及びプローブを受け取って処理し、コヒーレンシ関連要求及びプローブを生成する。
【0010】
各CPU105A~105Nは、対応するコヒーレントマスタ115A~115N及びバス/ファブリック118を介して一対のコヒーレントスレーブに結合される。例えば、CPU105Aは、コヒーレントマスタ115A及びバス/ファブリック118を介してコヒーレントスレーブ120A~120Bに結合される。コヒーレントスレーブ(CS)120Aはメモリコントローラ(MC)130Aに結合され、コヒーレントスレーブ120Bはメモリコントローラ130Bに結合される。コヒーレントスレーブ120Aは、プローブフィルタ(PF)125Aに結合され、プローブフィルタ125Aは、メモリコントローラ130Aを通じてアクセス可能なメモリについてシステム100内にキャッシュされたキャッシュラインを有するメモリ領域についてのエントリを含む。プローブフィルタ125A及び他のプローブフィルタの各々は、「キャッシュディレクトリ」と称されることもある。同様に、コヒーレントスレーブ120Bはプローブフィルタ125Bに結合され、プローブフィルタ125Bは、メモリコントローラ130Bを介してアクセス可能なメモリに対してシステム100内にキャッシュされたキャッシュラインを有するメモリ領域に対するエントリを含む。各CPU105A~105Nは、2つ以外の他の数のメモリコントローラに接続することができる。
【0011】
CPU105Aの構成と同様の構成において、CPU105Bは、コヒーレントマスタ115B及びバス/ファブリック118を介してコヒーレントスレーブ135A~135Bに結合される。コヒーレントスレーブ135Aは、メモリコントローラ150Aを介してメモリに結合され、コヒーレントスレーブ135Aは、プローブフィルタ145Aにも結合されて、メモリコントローラ150Aを介してアクセス可能なメモリに対応するキャッシュラインのコヒーレンシを管理する。コヒーレントスレーブ135Bは、プローブフィルタ145Bに結合され、コヒーレントスレーブ135Bは、メモリコントローラ165Bを介してメモリに結合される。また、CPU105Nは、コヒーレントマスタ115N及びバス/ファブリック118を介してコヒーレントスレーブ155A~155Bに結合される。コヒーレントスレーブ155A~155Bは、それぞれプローブフィルタ160A~160Bに結合され、コヒーレントスレーブ155A~155Bは、それぞれメモリコントローラ165A~165Bを介してメモリに結合される。「コヒーレントスレーブ」は、受け取った要求を処理し、対応するメモリコントローラをターゲットとするプローブを行うことによってコヒーレンシを管理するエージェントである。更に、「コヒーレンシプローブ」は、コヒーレンシポイントからコンピュータシステム内の1つ以上のキャッシュに渡されて、キャッシュがデータブロックのコピーを有するかどうかを判定し、オプションで、キャッシュがデータブロックを配置すべき状態を示すメッセージである。
【0012】
コヒーレントスレーブが、その対応するメモリコントローラをターゲットとするメモリ要求を受信すると、コヒーレントスレーブは、対応する早期プローブキャッシュ及び対応するプローブフィルタへの並列ルックアップを実行する。コヒーレントマスタは、代わりに早期プローブを実行することができる。システム100内の各早期プローブキャッシュはメモリの領域を追跡し、領域は複数のキャッシュラインを含む。追跡される領域のサイズは、実施形態ごとに異なり得る。「領域」は「ページ」と称されることもある。要求がコヒーレントスレーブによって受信されると、コヒーレントスレーブは、要求によってターゲットにされる領域を決定する。次に、プローブフィルタに対するルックアップの実行と並行して、この領域に対する早期プローブキャッシュのルックアップが実行される。早期プローブキャッシュへのルックアップは、通常、プローブフィルタへのルックアップの前に複数のサイクルを完了する。早期プローブキャッシュに対するルックアップがヒットをもたらす場合、コヒーレントスレーブは、ヒットエントリ内で識別されるCPU(複数可)に早期プローブを送信する。これは、早期プローブキャッシュが正しいターゲットを識別する場合にデータの早期取り出しを容易にし、メモリ要求を処理することに関連するレイテンシを低減する。図を不明瞭にすることを避けるために、バス/ファブリック118から図示されていない他の構成要素への他の接続があり得ることに留意されたい。例えば、バス/ファブリック118は、1つ以上のI/Oインターフェース及び1つ以上のI/Oデバイスへの接続を含むことができる。
【0013】
図2は、いくつかの実施形態による、データプロセッサ200のブロック図である。データ処理システムは、パッケージ基板202と、入力/出力(I/O)ダイ204と、8つのCPUコア複合ダイ(CCD)206と、を含む。この実施形態では、CCD206及びI/Oダイ204は、パッケージ基板204に取り付けられ、高速Infinity Fabric(商標)(IF)インターコネクトによって接続される。パッケージ基板202は、ホストデータ処理システムのプリント回路基板(PCB)とインターフェースするために、ランドグリッドアレイ(LGA)ソケット等のソケットに挿入するためのマルチチップモジュール(MCM)としてパッケージされる。
【0014】
この実施形態では、各CCD206は、複数のコア複合体(CCX)を含み、その各々は、複数のCPUコア及び共有レベル3キャッシュを含み、各CPUコアは、レベル1及びレベル2キャッシュ(図示せず)を含む。以下で更に説明するように、メモリコントローラ(図示せず)を含むデータファブリックがI/Oダイ204上に提供される。この実施形態では、データファブリックコヒーレンシプロトコルの好ましい実施形態を示すために、MCMとして構築されたデータプロセッサが示されているが、他の実施形態では、本明細書の特徴は、SOCとして実装されるデータプロセッサにおいて具現化されてもよい。
【0015】
図3は、いくつかの実施形態による、データ処理システム300のブロック図である。データ処理システム300は、概して、複数のCPUコア複合体311、データファブリック320、複数のメモリコントローラ(「MC」)331、及び、複数のメモリデバイス341を含む、
図2のように構築されたデータプロセッサを含む。実際のデータ処理システムの多くの他の構成要素が典型的に存在するが、本開示を理解することに関連せず、説明を容易にするために
図3に示されていない。
【0016】
CPUコア複合体311の各々は、CPUコアのセットを含み、その各々は、データファブリック320に双方向に接続される。各CPUコアは、ラストレベルキャッシュのみを他のCPUコアと共有する単一コアであってもよいし、クラスタ内の他のコアの全てではないが一部と組み合わされてもよい。複数のCPUコア複合体311が示されているが、他のタイプのプロセッサ(図示せず)も、典型的には、GPUコア及びディスプレイコントローラ等のクライアントとしてデータファブリック320に接続される。
【0017】
データファブリック320は、それぞれ「CM」とラベル付けされたコヒーレントマスタコントローラ321のセットと、それぞれ「CS」とラベル付けされ、ファブリックトランスポート層322を介して相互接続されたコヒーレントスレーブコントローラ323のセットと、それぞれ「PF」とラベル付けされた複数のプローブフィルタ324と、を含む。プローブフィルタ324は、任意の適切なタイプのプローブフィルタであってよい。いくつかの実施形態では、複数のラインの領域が追跡される領域プローブフィルタが使用される。他の実施形態は、従来のラインベースのプローブフィルタ及びその変形形態等の他のタイプのプローブフィルタを採用する。本明細書で使用される場合、コヒーレントマスタコントローラは、メモリアクセス要求が読み出しアクセスであるか書込みアクセスであるかにかかわらず、メモリアクセス要求を開始することが可能なメモリアクセスエージェントに接続され得るため、マスタポートであると見なされる。同様に、コヒーレントスレーブコントローラは、メモリアクセス要求が読み出しアクセスであるか書込みアクセスであるかにかかわらず、メモリアクセス要求に応答することが可能なメモリコントローラ311等のメモリアクセスレスポンダに接続するため、スレーブポートであると見なされる。ファブリックトランスポート層322は、そのポート間でメモリマップされたアクセス要求及び応答をルーティングするためのクロスバールータ又は一連のスイッチを含む。また、データファブリック320は、システム構成に基づいてメモリアクセスの宛先を決定するための、典型的には基本入出力システム(BIOS)によって定義されるシステムメモリマップを含む。データファブリック320は、CPUコア複合体311のような、接続された各メモリアクセスエージェントのためのコヒーレントマスタコントローラを含む。各コヒーレントマスタコントローラ321は、双方向性アップストリームポートと、双方向性ダウンストリームポートと、制御入力と、クライアントから受信したアクセス及びファブリックトランスポート層223を介してコヒーレントスレーブから受信した応答の両方のためのそれ自体の内部バッファリングと、を有する。また、各コヒーレントマスタコントローラ321は、そのアップストリームポートに接続された制御インターフェースを有し、対応するメモリアクセスエージェントにバックプレッシャシグナリングを提供して、その限られたバッファ空間のオーバーランを回避する。データファブリック320は、同様に、メモリコントローラ331の各々に対してコヒーレントスレーブコントローラ323を有するように構築される。各コヒーレントスレーブコントローラ323は、方向に応じて、メモリアクセス要求がファブリックトランスポート層322を通じて処理される前又は後に記憶されることを可能にするバッファリングを有する。
【0018】
メモリコントローラ331の各々は、対応するコヒーレントスレーブコントローラ323を介してデータファブリック320に接続されたアップストリームポートと、ダブルデータレート5(DDR5)PHY等の物理層インターフェース(PHY)を介して対応するメモリデバイスに接続されたダウンストリームポートと、を有する。この実施形態では、メモリコントローラのうち3つはローカルメモリチャネルに接続し、1つ(右側に示される)は、ペリフェラルコンポーネントインターフェースエクスプレス(PCIe)リンクを介して高帯域幅メモリ(HBM)モジュール等の非集約メモリモジュールに接続される。したがって、図示された最初の3つのメモリコントローラ331は、データファブリックと同じダイ上に配置されるが、4番目のメモリコントローラは、CXL PORTを介してデータファブリック320に接続され、メモリモジュール上に存在する。メモリデバイス341は、好ましくは、ダブルデータレート5(DDR5)DRAM等のダイナミックランダムアクセスメモリ(DRAM)、又は、HBMモジュール等の分離されたメモリモジュールである。
【0019】
データ処理システム300は、ワークステーション、サーバ等に関連する機能の多くを実行する高度に統合された高性能デジタルデータプロセッサである。動作中、データ処理システム300は、システム内の全てのメモリがCPUコア複合体311等の各メモリアクセスエージェントに潜在的に可視である統合メモリ空間を実装する。データファブリック320は、メモリアクセスエージェントによって開始されたアクセスがメモリアクセスレスポンダに提供され、メモリアクセスレスポンダからの応答が開始メモリアクセスエージェントに返される媒体である。データファブリック320は、中央ファブリックトランスポート層322を使用して、システムアドレスマップに基づいて、対応するマスタコントローラとスレーブコントローラとの間でアクセス及び応答を多重送信する。コヒーレントマスタコントローラ321等のメモリアクセスエージェントの一般的な動作は、従来のものであり、当該技術分野で周知であり、これ以上は説明しない。同様に、メモリアクセスレスポンダの一般的な動作はよく知られており、典型的には、電子機器技術評議会(JEDEC)によって発行されたダブルデータレート(DDR)シンクロナスダイナミックランダムアクセスメモリ(SDRAM)及びHBM標準のうち1つ以上等の発行された標準によって指定され、本明細書で紹介される特徴に関する場合を除いて更に説明されない。
【0020】
図4は、いくつかの実施形態による、
図3のデータファブリック等のデータファブリックに接続されたコヒーレントマスタコントローラ321及びコヒーレントスレーブコントローラ323を含むデータファブリック400の一部のブロック図である。
【0021】
コヒーレントマスタコントローラ321は、コントローラ及びピッカ回路402と、応答データバッファ404(RSPQ)と、応答データバッファカウンタ406(RSPQ CNT)と、発信要求キュー408(REQQ)と、CPUコア複合体等のクライアントプロセッサに接続する「DP」とラベル付けされたデータポートと、を含む。また、コヒーレントマスタコントローラ321は、書込みデータバッファ等の他のバッファを含み得るが、本明細書の説明に関係しないので図示されていない。RSPQ404は、データファブリックを介したメモリ要求に応じてデータを保持するための複数のエントリ405を含む。RSPQ CNT406は、利用可能なエントリ405の値を保持するカウンタである。動作中、メモリアクセス要求は、データポートDPを介してクライアントプロセッサから受信され、データファブリック320を介して適切なコヒーレントスレーブコントローラにアクセスすることによって、コヒーレントマスタコントローラ321によって満たされるまで、何れかのエントリ409のREQQ408に保持される。また、コヒーレントマスタコントローラ321は、そのそれぞれのクライアントプロセッサに対するコヒーレンシプローブを処理する。RSPQ CNT406は、以下に更に説明するように、バッファエントリ405が利用可能になるとインクリメントされ、メモリアクセス要求がピッカ回路402によってピックされ、対応するバッファエントリ405がデータを受信するために割り振られるとデクリメントされる。
【0022】
コヒーレントスレーブコントローラ323は、コントローラ回路420と、コヒーレントスレーブデータバッファ424(CSQ)と、メモリコントローラに接続する「DP」とラベル付けされたデータポートと、を含む。コヒーレントスレーブコントローラ323は、書込みデータバッファ等の他のバッファを含むこともできるが、本明細書の説明に関係しないので図示されていない。コヒーレントマスタコントローラ321及びコヒーレントスレーブコントローラ323は、図示したように、2つの論理チャネル、すなわちコマンド及びデータチャネル410とコヒーレントプローブチャネル412とによってデータファブリックを介して接続される。CSQ424は、使用される特定のプロトコルに従って応答データがコヒーレントマスタコントローラ321に送信されるまで、データポートDPを介してメモリコントローラから受信された応答データを保持するための複数のエントリ425を含む。
【0023】
動作中、コヒーレントスレーブコントローラ323は、コヒーレントマスタコントローラ321からメモリアクセス要求を受信し、そのデータポートDPを介してメモリコントローラにアクセスすることによって、又は、他のコヒーレンシポイントにおいてキャッシュされたアドレスについてデータファブリックを介してコヒーレンシポイントにアクセスすることによって、メモリアクセス要求を実行する。コントローラ回路420は、典型的には受信された順序で、読み出し及び書込み要求の履行を管理する。異なる実施形態では、種々のコヒーレンシプロトコルが使用される。この実施形態では、キャッシュコヒーレント非均一メモリアクセス(ccNUMA)アーキテクチャが使用され、このアーキテクチャでは、種々のサブシステムをデータファブリックに接続するデータポートがスケーラブルデータポート(SDP)であり、コヒーレントハイパートランスポートプロトコルが、以下で更に説明する追加の機能とともに使用される。
【0024】
図5は、いくつかの実施形態による、メモリシステムを動作させるためのプロセスのフローチャート500を示す。図示されたプロセスは、
図3の最終レベルキャッシュ及びトラフィックモニタ、又は、コヒーレントスレーブコントローラ及びコヒーレントマスタコントローラを有するデータファブリックを含む他の適切なメモリシステムとともに使用するのに適している。プロセスはブロック502で開始し、コヒーレントデータファブリックを介してコヒーレントマスタコントローラ(CM)からコヒーレントスレーブコントローラ(CS)にコヒーレントブロック読み出しコマンドを送信する。RSPQ404(
図4)等のコヒーレントマスタコントローラの応答データバッファにおいて十分なバッファエントリが利用可能になるまで、コマンドは送信されない。コマンドが送信されると、プロセスは、そのコマンドに対する応答データを受信するために2つ以上のバッファエントリを割り振る。プロセスのこの時点では、メモリシステム上の種々のコヒーレンシポイントから、応答データを有する応答がいくつ提供されるかが分からないため、2つ以上のエントリが必要である。例えば、ブロック読み出しコマンドによってターゲットにされたメモリロケーションが2つ以上のCPUにおいてキャッシュされる場合、応答データをもつ2つ以上の応答が予想され得る。
【0025】
ブロック504において、コヒーレントスレーブコントローラは、コヒーレントブロック読み出しコマンドを受信し、データファブリックを介して1つ以上のコヒーレンシプローブを送信して、メインメモリ内又はシステムの種々のキャッシュ間の何処かにあり得る、コマンドのターゲットアドレスのためのデータの最新のコピーが記憶されている場所を決定する。コヒーレンシプローブは、応答が要求側コヒーレントマスタに送信されることを示す、ソースへの応答(RspToSrc)の種類のものである。この実施形態では、コヒーレンシプロトコルは、システムCPU及びGPUの種々のレベル1、レベル2及びレベル3キャッシュにおいてメモリラインをサポートする。コヒーレントスレーブコントローラは、PF324(
図3)等のプローブフィルタにアクセスして、コヒーレンシプローブの性能を加速することが好ましい。プローブフィルタは、1組の潜在的なプローブターゲットを返し、次に、コヒーレントスレーブコントローラは、これにコヒーレンシプローブを送信する。いくつかの他の実施形態では、ラインベースのプローブフィルタ等の他のプローブフィルタ構成が使用される。プローブフィルタが使用されない実施形態では、コヒーレントスレーブは、特定のメモリアドレス範囲に対して指定されたターゲットの所定のセットをプローブする。
【0026】
ブロック506でコヒーレンシプローブに関する結果が得られると、プロセスは、その結果が、コヒーレントブロック読み出しコマンドが1つのデータ応答だけを有することが保証されることを示すかどうかを判定するか、又は、コヒーレントブロック読み出しコマンドに関する複数のコヒーレンシポイント応答データが可能であるかどうかを判定する。1つのデータ応答のみが存在する場合、プロセスはブロック508に進み、存在しない場合、ブロック530に進む。コヒーレントスレーブは、コヒーレンシプローブの結果に基づいてこの判定を行うことが好ましい。例えば、
図3のシステムでは、CS323からPF324へのコヒーレンシプローブは、ターゲットメモリラインがCPUコア複合体311の何れによってもキャッシュされていないことを示すことができる。この場合、(メモリデバイス341から、又は、CS323とMC331との間の最終レベルキャッシュから取得され得る)CS323からの応答データのみが、要求側CM321に提供される。いくつかのシナリオでは、ブロック504においてコヒーレンシプローブは全く送信されず、例えば、ターゲットメモリ領域がキャッシュ不可能としてタグ付けされた場合、コヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されると判定するためにコヒーレンシプローブは必要とされない。別のシナリオでは、コヒーレンシプローブは、1つのキャッシュのみがデータとともにプローブ結果を返すことが予想されることを示す。この場合、コヒーレント保存コントローラは、1つのコヒーレンスポイントのみが応答データを提供することを決定し、したがって、コヒーレントブロック読み出しコマンドは、1つのデータ応答のみを有することが保証される。
【0027】
ブロック508において、コヒーレントスレーブコントローラがコヒーレントブロック読み出しコマンドを実行すると(典型的には、受信された順序で実行される)、メモリから応答データを受信する。次に、ブロック510において、コヒーレントスレーブコントローラは、グローバルに順序付けられたターゲット要求(TgtReqGO)をコヒーレントデータファブリックのコヒーレンシプローブチャネルを介してコヒーレントマスタコントローラに送信し、コヒーレントデータファブリックのデータチャネルを介して応答データを伝送し始める。
【0028】
ブロック512に示されるように、コヒーレントスレーブコントローラが応答データの伝送を終了した場合(これは、データチャネルの速度に応じて、ブロック512~520のうち一部又は全ての後に生じ得る)、コヒーレントスレーブは、選択されたコヒーレントマスタコントローラからのソース完了メッセージを必要とすることなく、応答データを伝送した直後に、応答データのために以前に割り振られたコヒーレントスレーブデータバッファのエントリの割り振りを解除する。この実施形態では、ブロック512における割り振り解除は、以下で更に説明するように、コヒーレントスレーブコントローラが「SrcDone」メッセージを待たなければならない、ブロック530~546に示すレガシー挙動とは対照的に、選択されたコヒーレントマスタコントローラからのコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されると判定したことに応じて行われる。
【0029】
ブロック514において、コヒーレントマスタコントローラは、TgtReqGOメッセージを受信し、応答データの受信を開始する。応答データは、コヒーレントマスタコントローラの応答データバッファの割り振られたエントリにロードされる。また、ターゲット要求グローバル順序付けメッセージの受信に応じて、コヒーレントマスタコントローラは、ブロック516~520を実行する。
【0030】
ブロック516において、コヒーレントマスタコントローラは、応答データがデータチャネルを介して受信され、要求側クライアントに転送され、要求側クライアントによって肯定応答されるまで、コヒーレントブロック読み出しコマンドに関連するアドレスへの任意のコヒーレントプローブをブロックする。ブロック518において、コヒーレントマスタコントローラは、更なる応答が受信されないことが知られているため、応答データバッファにおける割り振りを単一のエントリに低減する。いくつかの実施形態では、これは、例えば、RSPQバッファカウンタ406(
図4)等のように、応答データバッファ中で利用可能なデータバッファエントリの数を示すカウンタを増加させることによって行われる。他の実施形態は、コマンドを応答データバッファエントリに直接関連付けることができ、その場合、コヒーレントマスタコントローラは、応答データを受信するために1つのエントリのみが割り振られるように、追加のエントリの割り振りを除去してそれらを利用可能にする。ブロック520において、コヒーレントマスタは、コマンドに関連付けられたターゲットアドレスに応じて、コヒーレントブロック読み出しコマンドが送信された同じコヒーレントスレーブコントローラ、又は、別のコヒーレントスレーブコントローラに対するものであり得る、後続のメモリアクセスコマンドを送信する。
【0031】
ブロック506において、コヒーレントスレーブコントローラが、コヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていないと判定した場合、プロセスはブロック530に進み、コヒーレントブロック読み出しコマンドを実行する場合に応答データを受信する。ブロック532において、コヒーレントスレーブコントローラは、ターゲット完了(TgtDone)メッセージを、コヒーレントプローブチャネルを介してコヒーレントマスタコントローラに伝送し、コヒーレントブロック読み出しコマンドに対する応答データを、データチャネルを介してコヒーレントマスタに伝送し始める。
【0032】
ブロック534において、コヒーレントマスタコントローラは、TgtDoneメッセージを受信し、応答データの受信を開始する。ブロック536で、コヒーレントマスタコントローラは、応答データの受信を終了し、コヒーレンシプローブ(ブロック504で送信されたプローブ)からの更なる応答を待つ。ブロック538において、コヒーレントマスタコントローラは、コヒーレンシプローブに対する1つ以上の追加の応答を受信し、この応答は、応答データを含むことができ、又は、コヒーレンシポイントが応答データを有しないという指標を含むことができる。応答は、コヒーレントスレーブコントローラからの応答の前に到着することができる。着信応答データは、応答データバッファの第2の割り振られたエントリにロードされる。コヒーレントスレーブコントローラによって送信されたものよりも新しい応答データが受信された場合、コヒーレントマスタコントローラは、かかる応答が発生した場合、第3の又は後続の応答で古いエントリを上書きすることになる。全ての応答が受信されると、コヒーレントマスタは、ブロック540に示すように、正しい最新のデータをCPU又はGPU等の要求側クライアントに転送する。
【0033】
次に、ブロック542において、クライアントが応答データの受信を確認すると、コヒーレントマスタコントローラは、データが送信された応答データバッファエントリの割り振りを解除し、ソース完了(SrcDone)メッセージをコヒーレントスレーブコントローラに送信する。ブロック544において、コヒーレントスレーブコントローラは、SrcDoneメッセージを受信し、それに応じて、データが伝送されたデータバッファエントリを割り振り解除する。次に、ブロック546において、コヒーレントマスタコントローラは、後続のメモリアクセスコマンドを送信し、応答データバッファにおいてそのためのエントリを割り振る。
【0034】
概して、この実施形態では、ブロック530~546に示すコヒーレントブロック読み出しコマンドのコヒーレントハイパートランスポートプロトコル実行は、コマンドに対して2つ以上の応答が可能である場合にのみ使用される。コヒーレントマスタコントローラからコヒーレントスレーブコントローラに伝送されるSrcDoneメッセージは、コヒーレントスレーブが次のアドレスマッチングトランザクションに自由に進むことができる要求側クライアントに対して読み出し応答が可視にされたことをコヒーレントスレーブコントローラに通知するためのものである。このプロセスは、同じアドレスへのより新しいトランザクションのためのコヒーレンシプローブとの競合を回避する。しかし、キャッシュブロック読み出しの大部分は、コヒーレンシプローブを引き起こすとは予想されない。したがって、キャッシュブロック読み出しごとにSrcDoneメッセージを必要とすることは、コヒーレントスレーブにおけるトランザクションの平均寿命を、示されたプロセスによって達成される寿命を超えて増加させる。更に、コヒーレンシプロトコルが、概して読み出しに関してより効率的であるように、コヒーレントマスタで読み出されたキャッシュブロックに関する読み出し応答を用いてコヒーレンシプローブを解決する場合、異なる時間に到着する可能性のあるデータを有する2つの応答の可能性に対処しなければならない。この可能性は、コヒーレントスレーブに送信されるキャッシュブロック読み出しごとにコヒーレントマスタにおいて複数のデータバッファエントリを予約するための設計に負担を加える。
【0035】
ブロック506~520のプロセスは、より遅いSrcDoneメッセージシーケンスを使用する代わりに、プローブチャネル内の異なるメッセージ、グローバルに順序付けられたターゲット要求(TgtReqGO)を使用する。いくつかの実施形態では、TgtReqGOメッセージは、レガシーハイパートランスポートプロトコルのターゲット完了(TgtDone)メッセージ中で搬送されるシングルビットとして実装され得る。他の実施形態では、それは、TgtDoneメッセージの代わりに使用されるパケットであり得る。TgtReqGOは、前のトランザクションが完全に完了するまで、同じアドレスに対するより新しいプローブの処理をブロックする。この利点は、コヒーレンシプローブが発行されない場合、又は、単一の既知の外部キャッシュがデータとともにプローブ応答を返すことが予想される場合に最も得られる。コヒーレントマスタプロトコルは、応答データを有する追加のプローブ応答を受信するために以前に予約されたデータバッファエントリを解放することができるため、TgtReqGOが発行された場合のデータバッファ管理において著しい利点が提供される。更に、コヒーレントスレーブコントローラにおけるデータバッファエントリも、レガシーシナリオよりも迅速に解放される。理解され得るように、これは、コヒーレントマスタ(例えば、RSPQ404、
図4)における応答データバッファ、及び、コヒーレントスレーブ(例えば、CSQ424、
図4)におけるデータバッファの両方のためのより小さいデータバッファ設計を可能にする。
【0036】
図3のデータファブリック320又はコヒーレントマスタコントローラ321及びコヒーレントスレーブコントローラ323等のその任意の部分は、プログラムによって読み出すことができ、集積回路を製造するために直接又は間接的に使用することができるデータベース又は他のデータ構造の形態のコンピュータアクセス可能なデータ構造によって記述又は表すことができる。例えば、本データ構造は、ベリログ又はVHDL等の高位設計言語(HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次に、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされてもよい。次に、マスクを、様々な半導体製造工程で使用して、集積回路を製造してもよい。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望の場合、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィック・データ・システム(Graphic Data System、GDS)IIデータであってもよい。
【0037】
特定の実施形態について説明してきたが、これらの実施形態に対する種々の修正が当業者には明らかであろう。本明細書で開示されるプローブフィルタのための低電力状態保持とともに使用される様々な技術は、独立して又は他の技術とともに使用され得る。更に、異なる技術及び回路を使用して、低電力状態保持に入る条件を検出することができる。
【0038】
したがって、添付の特許請求の範囲によって、開示された実施形態の範囲に含まれる開示された実施形態の全ての修正を包含することが意図される。
【手続補正書】
【提出日】2024-07-19
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コヒーレントメモリファブリックであって、
各々が応答データバッファを含む複数のコヒーレントマスタコントローラと、
前記複数のコヒーレントマスタコントローラに結合されたコヒーレントスレーブコントローラと、を備え、
前記コヒーレントスレーブコントローラは、選択されたコヒーレントマスタコントローラからの選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定したことに応じて、ターゲット要求グローバル順序付けメッセージを前記選択されたコヒーレントマスタコントローラに送信し、応答データを送信するように動作可能である、
コヒーレントメモリファブリック。
【請求項2】
前記選択されたコヒーレントマスタコントローラは、前記ターゲット要求グローバル順序付けメッセージに応じて、前記選択されたコヒーレントブロック読み出しコマンドに対して1つの応答データバッファエントリのみが予約されるように、前記応答データバッファ中の割り振りを更新する、
請求項1のコヒーレントメモリファブリック。
【請求項3】
前記選択されたコヒーレントマスタコントローラは、前記ターゲット要求グローバル順序付けメッセージを受信したことに応じて、前記応答データの受信が要求側クライアントによって肯定応答されるまで、前記選択されたコヒーレントブロック読み出しコマンドに関連するアドレスに対する任意のコヒーレントプローブをブロックするように動作可能である、
請求項2のコヒーレントメモリファブリック。
【請求項4】
前記選択されたコヒーレントマスタコントローラは、前記割り振りを更新した後に、後続のメモリアクセスコマンドを前記コヒーレントスレーブコントローラに直ちに送信する、
請求項2のコヒーレントメモリファブリック。
【請求項5】
前記コヒーレントスレーブコントローラは、コヒーレントスレーブデータバッファを備え、
前記コヒーレントスレーブコントローラは、選択されたコヒーレントマスタコントローラからの選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定したことに応じて、前記選択されたコヒーレントマスタコントローラからのソース完了メッセージを必要とすることなく、前記応答データを送信した直後に、前記応答データのために以前に割り振られた前記コヒーレントスレーブデータバッファのエントリを割り振り解除する、
請求項1のコヒーレントメモリファブリック。
【請求項6】
前記コヒーレントスレーブコントローラは、第2の選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていないと判定したことに応じて、ターゲット完了メッセージを前記選択されたコヒーレントマスタコントローラに送信し、応答データを前記選択されたコヒーレントマスタコントローラに送信し、前記応答データが受信されたことを示すソース完了メッセージを前記選択されたコヒーレントマスタコントローラから受信した後にのみ、前記応答データに対するコヒーレントスレーブデータバッファエントリを割り振り解除する、
請求項5のコヒーレントメモリファブリック。
【請求項7】
前記コヒーレントスレーブコントローラは、前記複数のコヒーレントマスタコントローラに関連付けられたプローブフィルタにおいてプローブフィルタルックアップを実行することによって、前記選択されたコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定する、
請求項1のコヒーレントメモリファブリック。
【請求項8】
方法であって、
コヒーレントマスタコントローラから、コヒーレントデータファブリックを介してコヒーレントスレーブコントローラにコヒーレントブロック読み出しコマンドを送信することと、
前記コヒーレントスレーブコントローラにおいて、前記コヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定したことに応じて、ターゲット要求グローバル順序付けメッセージを前記コヒーレントマスタコントローラに送信し、応答データを送信することと、を含む、
方法。
【請求項9】
前記コヒーレントマスタコントローラは、前記ターゲット要求グローバル順序付けメッセージに応じて、前記コヒーレントブロック読み出しコマンドに対して1つの応答データバッファエントリのみが予約されるように、応答データバッファ中の割り振りを更新する、
請求項8の方法。
【請求項10】
前記コヒーレントマスタコントローラにおいて、前記ターゲット要求グローバル順序付けメッセージを受信したことに応じて、前記応答データが受信されるまで、前記コヒーレントブロック読み出しコマンドに関連するアドレスに対する任意のコヒーレントプローブをブロックすることを含む、
請求項9の方法。
【請求項11】
前記コヒーレントマスタコントローラは、前記割り振りを更新した後に、後続のメモリアクセスコマンドを前記コヒーレントスレーブコントローラに直ちに送信する、
請求項9の方法。
【請求項12】
前記コヒーレントスレーブコントローラは、選択されたコヒーレントマスタコントローラからの前記コヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定したことに応じて、前記選択されたコヒーレントマスタコントローラからのソース完了メッセージを必要とすることなく、前記応答データを送信した直後に、前記応答データのために以前に割り振られたコヒーレントスレーブデータバッファのエントリを割り振り解除する、
請求項8の方法。
【請求項13】
前記コヒーレントスレーブコントローラは、第2のコヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていないと判定したことに応じて、ターゲット完了メッセージを前記コヒーレントマスタコントローラに送信し、第2の応答データを前記コヒーレントマスタコントローラに送信し、前記第2の応答データが受信されたことを示すソース完了メッセージを前記コヒーレントマスタコントローラから受信した後にのみ、前記応答データに対するデータバッファエントリを割り振り解除する、
請求項8の方法。
【請求項14】
前記コヒーレントスレーブコントローラは、前記ターゲット要求メッセージを送信することと並行して、又は、前記ターゲット要求メッセージを送信した直後に、前記応答データを送信し始める、
請求項8の方法。
【請求項15】
前記コヒーレントスレーブコントローラは、複数のコヒーレントマスタコントローラに関連付けられたプローブフィルタにおいてプローブフィルタルックアップを実行することによって、前記コヒーレントブロック読み出しコマンドが1つのデータ応答のみを有することが保証されていると判定する、
請求項8の方法。
【国際調査報告】