JP2021522611A - I/oマスタとcpuとの間の最適化されたデータ共有を可能にするための順序付けられた書き込みスタッシュの高性能なストリーミング - Google Patents

I/oマスタとcpuとの間の最適化されたデータ共有を可能にするための順序付けられた書き込みスタッシュの高性能なストリーミング Download PDF

Info

Publication number
JP2021522611A
JP2021522611A JP2020561759A JP2020561759A JP2021522611A JP 2021522611 A JP2021522611 A JP 2021522611A JP 2020561759 A JP2020561759 A JP 2020561759A JP 2020561759 A JP2020561759 A JP 2020561759A JP 2021522611 A JP2021522611 A JP 2021522611A
Authority
JP
Japan
Prior art keywords
data
node
request
message
home 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.)
Granted
Application number
JP2020561759A
Other languages
English (en)
Other versions
JP7378428B2 (ja
Inventor
ジャムシェド・ジャラル
タッシャー・ピー・リンジ
アショック・クマール・タマラ
グルナス・ラマギリ
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2021522611A publication Critical patent/JP2021522611A/ja
Application granted granted Critical
Publication of JP7378428B2 publication Critical patent/JP7378428B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • G06F13/4217Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus with synchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/1735Network adapters, e.g. SCI, Myrinet
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

要求ノードから目標ノードへの順序付けられたデータの効率的な転送のためのデータ処理ネットワークおよびその動作の方法が、提供される。要求ノードは、ホームノードに、書き込み要求を送信し、ホームノードは、リソースがホームノードに割り当てられたときに第1の書き込み要求に応答する。それから、要求ノードは、書き込まれるデータを送信する。また、ホームノードは、ホームノードにおいてコヒーレンシアクションが実行されたときに完了メッセージによって応答する。要求ノードは、順序付けられたデータの第1の書き込み要求よりも古いすべての書き込み要求に関して完了メッセージが受信されるまで送信されない完了肯定応答メッセージによって完了メッセージの受信に肯定応答し、それによって、データの順序を維持する。第1の書き込み要求に関する完了肯定応答の受信の後、ホームノードは、目標ノードに書き込まれるデータを送信する。

Description

本開示は、I/OマスタとCPUとの間の最適化されたデータ共有を可能にするための順序付けられた書き込みスタッシュの高性能なストリーミングに関する。
データ処理システムにおいて、データは、入力/出力(I/O)インターフェースを介して受信または送信される可能性がある。これは、オフチップデータリソースへのI/Oコントローラインターフェースまたはローカルもしくはリモートネットワークのリソースへのネットワークインターフェースコントローラ(NIC)であり得る。
データがI/Oインターフェースから受信されるとき、そのデータは、メモリまたはキャッシュなどのデータ処理システムのストレージリソースに向けられる可能性がある。キャッシュスタッシングは、データ処理システムにおいて特定のキャッシュ内にデータをインストールするためのメカニズムである。キャッシュスタッシングは、データがその使用地点の近くに置かれることを保証し、それによって、システムの性能を改善する。
I/Oインターフェースの例は、標準的な周辺装置相互接続エクスプレス(Peripheral Component Interconnect Express)(PCIe)シリアルバスインターフェースである。PCIeに基づくシステムは、書き込みデータのスタッシュ目標を特定するために使用され得るステアリングタグ(steering tag)をPCI書き込みメッセージに追加するためにトランザクション層パケット(TLP)処理ヒント(Processing Hints)(TPH)を利用する。このメカニズムは、システムインターコネクトによって処理される必要がある(PCIe規格のポステッド書き込み(posted write)順序付け規則によって必要とされる)強く順序付けられた(strongly ordered)書き込みスタッシュを導入する。しかし、コヒーレントメッシュネットワーク(coherent mesh network)などのインターコネクトは、データが相互接続中のいくつかの異なるルートのいずれかを通る可能性があるので通常は順序付けられない。加えて、現在のデータ処理インターコネクトは、強く順序付けられた書き込みデータをCPUにスタッシングすることができないか、または十分に高い性能でそれを行うことができない(たとえば、PCIe規格のGeneration 4は最大32GBpsの書き込み帯域幅をサポートする)かのどちらかである。さらに、現在のシステムは、デッドロックなどの問題なしに高い性能で独立したPCIeマスタから強く順序付けられた書き込みデータをスタッシングすることができない。
添付の図面は、様々な代表的な実施形態をより十分に示すために使用され、開示される代表的な実施形態およびそれらの固有の利点をより深く理解するために当業者によって使用され得る視覚的な表現を提供する。これらの図面において、同様の参照番号は、対応する要素を特定する。
様々な代表的な実施形態によるデータ処理システムのブロック図である。 様々な代表的な実施形態による処理クラスタのブロック図である。 従来のデータスタッシングに関するトランザクションフロー図である。 様々な代表的な実施形態によるデータスタッシングに関するトランザクションフロー図である。 様々な代表的な実施形態によるデータスタッシングに関するトランザクションフロー図である。 様々な代表的な実施形態によるデータスタッシングに関するトランザクションフロー図である。 様々な代表的な実施形態によるデータスタッシングに関するトランザクションフロー図である。
本明細書において説明される様々な装置およびデバイスは、データ処理システムにおいて到着するデータの自動的ルーティングおよび割り当てのためのメカニズムを提供する。
本開示は多くの異なる形態の実施形態を許容するが、本開示が本開示の原理の例とみなされるべきであり、本開示を示され説明される特定の実施形態に限定するように意図されていないという理解の上で、特定の実施形態が図面に示され、本明細書において詳細に説明される。下の説明においては、同様の参照番号が、図面のいくつかの図において同じ、同様な、または対応する部分を示すために使用される。
本明細書において、第1のおよび第2の、上および下などの関係を示す語は、あるエンティティまたはアクションを別のエンティティまたはアクションと区別するためだけに使用される可能性があり、そのようなエンティティまたはアクションの間のいかなる実際のそのような関係または順序も必ず必要とするまたは示唆するとは限らない。語「含む(comprise)」、「含んでいる(comprising)」、またはこれらの任意のその他の変化形は、要素のリストを含むプロセス、方法、製品、または装置がそれらの要素のみを含むのではなく、明示的に列挙されていないまたはそのようなプロセス、方法、製品、もしくは装置に固有でないその他の要素を含む可能性があるように非排他的包含を含むように意図される。「〜を含む(comprises ...a)」と後に続く要素は、さらなる制約がなければ、その要素を含むプロセス、方法、製品、または装置に追加的な同一の要素が存在することを排除しない。
本明細書全体を通じて「一実施形態」、「特定の実施形態」、「実施形態」、または同様の語への言及は、実施形態に関連して説明される特定の特徴、構造、または特質が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書中の様々な個所のそのような語句の出現は、必ずしもすべてが同じ実施形態を指しているとは限らない。さらに、特定の特徴、構造、または特質は、限定なしに1つまたは複数の実施形態において任意の好適な方法で組み合わされる可能性がある。
本明細書において使用される語「または(or)」は、包括的であるまたはいずれか1つもしくは任意の組合せを意味するものと解釈されるべきである。したがって、「A、B、またはC」は、「以下、すなわち、A、B、C、AおよびB、AおよびC、BおよびC、A、B、およびCのいずれか」を意味する。この定義の例外は、要素、機能、ステップ、または行為の組合せが何かしら本質的に相互排他的であるときにのみ発生する。
説明を簡単で明瞭にするために、参照番号が、対応するまたは類似した要素を示すために図の間で繰り返される可能性がある。多くの詳細が、本明細書において説明される実施形態を理解させるために述べられる。実施形態は、これらの詳細なしに実施される可能性がある。その他の場合、よく知られている方法、手順、および構成要素は、説明される実施形態を不明瞭にすることを避けるために詳細に説明されなかった。説明は、本明細書において説明される実施形態に限定されるとみなされるべきでない。
本開示は、順序付けられないインターコネクトにおいて順序付けられた書き込みスタッシュの高性能なストリーミングを可能にするデータ処理システムのメカニズムに関する。メカニズムは、高帯域幅を提供しながら複数のI/Oデバイスと処理デバイスとの間の最適化されたデータ共有を可能にする。
本開示は、1組の処理コアクラスタ、すべてのコアに共有されたシステムレベルキャッシュ(SLC)を含む1組のホームノード(HN)、1組のメモリコントローラおよびI/Oデバイスインターフェースを接続するコヒーレントメッシュネットワーク(CMN)などのキャッシュコヒーレントインターコネクト(CCI:cache coherent interconnect)を用いるマルチコアアーキテクチャに関連して説明される。
図1は、様々な代表的な実施形態によるデータ処理システム100のブロック図である。いくつかの処理コアクラスタ102(要求ノードと呼ばれる)が、コヒーレントインターコネクト104を介してデータリソースに結合される。データは、入力/出力(I/O)要求ノード(RN-I)を介して受信される。示される例において、RN-I 106aは、ネットワーク108からデータを受信するネットワークインターフェースコントローラ(NCI)を含み、RN-I 106bは、I/Oデバイス112からデータを受信する。I/Oデバイス112は、たとえば、周辺装置相互接続エクスプレス(PCIe)バスを介して結合される可能性がある。データは、メモリコントローラ116を介してインターコネクト104に結合された1つまたは複数のメモリまたはストレージデバイス114に記憶される可能性がある。ホームノード(HN)118は、システムレベルキャッシュを含む。各ホームノード(HN)は、所与の1組のシステムアドレスに記憶されるデータのコヒーレンスの地点(point of coherence)として働く。I/O要求ノード106aおよび106bから受信されるデータは、ホームノードにルーティングされる可能性がある。そして、ホームノードは、HNのシステムレベルキャッシュにデータを記憶するか、またはメモリ114に記憶するためにメモリコントローラ116にデータを送信する。代替的に、「キャッシュスタッシング」と呼ばれるプロセスを使用して、I/O要求ノード106aおよび106bにおいて受信されたデータは、処理クラスタ102などの目標デバイスのキャッシュにルーティングされる可能性がある。キャッシュスタッシングは、I/Oインターフェースがコアのプライベートキャッシュ(L1、L2)または処理クラスタ102のクラスタキャッシュ(L3)にデータを書き込むことができるメカニズムである。本開示は、I/Oデバイス112から処理クラスタ102などの目標デバイスのキャッシュに順序付けられたデータを転送するためのキャッシュスタッシングメカニズムに関する。
図2は、本開示の実施形態によるデータ処理システム200のブロック図である。この例において、I/Oデバイスは、PCIeルートコンプレックス(PCIe root complex)204、I/O要求ノード(RN-I)206、およびインターコネクト208を介して処理クラスタ(要求ノード)212aおよび212bのキャッシュ210aおよび210bにそれぞれ結合されるPCIeエンドポイント(PCIe end-point)202である。動作中、PCIeルートコンプレックス204は、(Arm LimitedのArm(登録商標) AMBA(登録商標) Advanced eXtensible Interface(AXI)などの)インターフェース214上でインターコネクト208に順序付けられた書き込みスタッシュを投入する。順序付けられた書き込みは、それらの書き込みが共通のグループに属しており、同じチャネルでルーティングされるべきであることを示すためにストリーム識別子などの識別子をタグ付けされる可能性がある。
現在のデータ処理システムにおいて、同じグループに属する書き込みは、I/O要求ノード206によってシリアル化され、1度に1つずつインターコネクトにディスパッチされる。これは、順序付けられた書き込みの準最適な性能をもたらす。
PCIeルートコンプレックス204は、トランザクション層216、データリンク層218、および物理層220を含む階層化されたプロトコルを実装する可能性がある。物理層220は、PCIeエンドポイントとの接続のための16個のレーン222を提供する可能性がある。示される例において、レーン222aは、エンドポイント202に結合される。
要求ノード212aおよび212bは、たとえば、Arm LimitedのArm(登録商標) AMBA(登録商標) coherent hub interface(CHI)であり得るインターフェース224を介してインターコネクト208に結合される可能性がある。
ホームノード226aおよび226bは、グループシステムアドレスのコヒーレンスの地点を提供する。
本開示の特定の態様によれば、要求ノード(RN-I)から目標ノードへの順序付けられたデータの効率的な転送のためのデータ処理ネットワークおよびその動作の方法が、提供される。RN-Iは、ホームノード(HN)に書き込み要求を送信し、HNは、リソースがHNによって割り当てられたときに第1の書き込み要求に応答する。それから、RN-Iは、書き込まれるデータを送信する。また、HNは、HNにおいてコヒーレンシアクション(coherency action)が実行されたときに完了(COMP)メッセージによって応答する。RN-Iは、COMP_ACKメッセージによってCOMPメッセージの受信に肯定応答する。このメッセージは、順序付けられたデータの第1の書き込み要求よりも古いすべての書き込み要求に関してCOMPメッセージが受信されるまで送信されず、それによって、データの順序を維持する。第1の書き込み要求に関するCOMP_ACKの受信の後、HNは、書き込まれるデータを目標ノードに送信する。
図3〜図7は、本開示の実施形態に一致する様々なトランザクションに関するトランザクションフロー図を示す。下の実施形態は、PCIeマスタデバイスとのArm(登録商標) AXI(Advanced eXtensible Interface)に関連して説明される。しかし、その他のインターフェースが、本開示を逸脱することなく使用される可能性がある。図において、以下のメッセージの表記が、使用される。
I/Oマスタとの通信に関して、
・AW: AXI上のWrite Address/Controlチャネル
・W: AXI上のWrite Dataチャネル
・BRESP: AXI上のWrite Completion
およびノード間の通信に関して、
・WR_UNIQ_STASH(WUS): Write Unique Stash要求
・RD_NO_SNP: Read, no Snoop要求
・WR_NO_SNP: Write, no Snoop要求
・WriteUniqPtl: Write Uniqueパーシャル(partial)要求
・DBID_RSP: Write Data Bufferクレジット(credit)メッセージ
・COMP: 完了メッセージ
・COMP_DBID_RSP: Combined Data Bufferクレジットおよび完了メッセージ
・WR_DATA: Write Dataメッセージ
・SnpUniqStash: Snoop Unique Stashメッセージ
・SNP_RSP: スヌープ応答
・COMP_ACK: 完了肯定応答
・Retry_Ack: 再試行肯定応答
・CRD_GNT: Credit Grantメッセージ
図3は、現在のデータ処理システムに関するトランザクションフロー図である。図3において、縦線はタイムラインであり、下に向かって時間が流れ、矢印は、デバイス間のメッセージ/データ転送を示す。以下のタイムライン、すなわち、ソースデバイス(示される例においてはPCIeマスタ)に関する302、I/O要求ノード(RN-1)に関する304、第1のホームノード(HNF0)に関する306、第2のホームノード(HNF1)に関する308、およびスタッシュ目標または目標デバイスに関する310が示される。スタッシュ要求、たとえば、AW0/W0(ID0,WUS)が、PCIeマスタからI/O要求ノード(RN-1)に送信される。RN-Iは、どちらのホームノード(この例においてはHNF0またはHNF1)がデータを処理し、そのデータをスタッシュ目標に渡すべきかを決定するためにシステムアドレスマップを使用する。現在のシステムにおいては、(WR_UNIQ_STASHメッセージWUS0およびWUS1などの)順序付けられた書き込みスタッシュメッセージがRN-Iにおいてシリアル化され、書き込みのための低帯域幅につながる。この低帯域幅の挙動は、一部の応用に関して許容され得ない可能性があり、PCIe Generation 4などの規格に準拠するのに十分でない可能性がある。たとえば、図3を参照すると、PCIeマスタから送信された2つの書き込み要求AW0/W0およびAW1/W1が、I/O要求ノード(RN-I)において受信されるが、(WUS1がHNF1に送信されるときに始まる)RN-Iによる第2の書き込み要求の処理は、第1のデータがメッセージWR_DATA0でHNF0に送信された後まで待つ。したがって、現在のシステム(つまり、現在のインターコネクト)は、(PCIeマスタからなどの)強く順序付けられた書き込みを十分に高い性能のレベルでCPUにスタッシングしない。
本明細書において開示されるメカニズムは、(PCIeルートコンプレックスなどの)1組のI/Oマスタが強く順序付けられた書き込みデータを高帯域幅でCPUキャッシュにスタッシングすることを可能にする。メカニズムは、システムの(たとえば、コヒーレントメッシュネットワークであり得る)インターコネクト、転送プロトコル、I/O要求ノード(RN-I)、およびホームノード(HN)を増強する。
一実施形態においては、(Coherent Hub Interface(CHI)プロトコルなどの)ノードとインターコネクトとのインターフェースをとるためのプロトコルが、任意のCOMP_ACKパケット応答を追加するためおよびWR_DATA_CANCELデータ操作を追加するためにWR_UNIQ_STASH要求に関して増強される。ここで、WR_UNIQ_STASHは、CPU(スタッシュ目標)のキャッシュにデータをスタッシングし、コヒーレンス状態UNIQUEを有するものとしてデータをタグ付けする要求である。
I/O要求ノード(RN-I)は、RequestOrderおよびExpCompAckメッセージまたは属性を用いるストリーミングフローを追加するため、およびストリーミングフローが原因であるインターコネクトにおけるリソースの競合の結果として生じたデッドロックをRN-Iが検出するときに使用するためのWR_DATA_CANCELメッセージを追加するためにWR_UNIQ_STASH要求に関して増強される。
ホームノード(HN-F)は、デュアルCOMP_ACKフロー(dual COMP_ACK flow)を追加するために増強され、スタッシュデータがCOMP_ACKを受信することに依存するようにスタッシュ目標にスタッシュデータを送信することを遅らせるためにさらに増強される。これは、すべての前の順序付けられた書き込みが観測されるまでCPU内のスタッシュデータが観測されないことを保証する。
図4は、本開示の実施形態によるデータ処理システムに関するトランザクションフロー図である。図4は、RN-Iに関するタイムライン402、HN(HNF0)に関するタイムライン404、およびCPUなどの目標ノードに関するタイムライン406を示す。データは、共有メモリに転送されるのではなくRN-Iから目標ノードのキャッシュに転送される可能性がある。このプロセスは、「スタッシング」と呼ばれ、さらに、目標ノードは、スタッシュ目標と呼ばれる。
図4は、データ処理ネットワーク内でPCIeマスタ、アクセラレーションユニット、またはグラフィックス処理ユニットなどのソースデバイスからRN-IおよびHNを介して目標デバイスにデータを転送するための方法の実施形態を示す。ソースデバイスは、RN-Iに結合され、順序付けられたデータをRN-Iに送信する。順序付けられたデータは、特定のデータストリームを特定するストリーム識別子に関連付けられる。RN-Iは、書き込み要求(WR_UNIQ_STASH)をHNに送信し、書き込み要求は、目標デバイスのインジケータと、RN-Iがいかなる依存関係もなく複数の書き込み要求を送信することをHNに示す要求順(RO: request order)メッセージと、観測順がRN-Iからの完了肯定応答(COMP_ACK)メッセージの放出によって制御されるべきであることをHNに示す完了肯定応答期待(expect completion acknowledgement)(ExpCompAck or ECA)メッセージとを含む。
HNは、書き込みトランザクションのためのデータバッファなどのリソースを割り当て、書き込まれるデータを受信するためのデータバッファを特定する、RN-Iへのデータバッファ識別子(DBID_RSP)メッセージと、HNによる完了を示す完了(COMP)メッセージとを送信する。RN-Iは、DBID-RSPメッセージに応答して、書き込まれるデータをWR_DATAメッセージとして送信する。RN-Iは、COMPメッセージに応答して、HNに第1の完了肯定応答(COMP_ACK)メッセージを送信する。そして、RN-Iによるトランザクションは完了する。HNは、第1のCOMP_ACKメッセージに応答して、COMP_DATA(UD)メッセージで目標デバイスに書き込まれるデータを送信する。「UD」の指定は、データのコヒーレンス状態がユニーク(unique)およびダーティ(dirty)である、つまり、1つのノードのみがデータのコピーを有し、データがアドレスに関して共有メモリに記憶されたデータと一致しないことを示す。それに応答して、目標デバイスは、第2のCOMP_ACKメッセージをHNに送信する。
この手法の重要な特徴は、第1の書き込み要求よりも古く、第1の書き込み要求と同じストリーム識別子を有するすべての書き込み要求に関するCOMPメッセージがRN-Iによって受信されるまで第1のCOMP_ACKメッセージがRN-Iによって送信されないことである。これが、データの適切な順序付けを保証する。
データコヒーレンシプロトコルの一部として、HNは、スヌープメッセージ(SNP_UNIQ_STASH)を目標デバイスに送信する。目標デバイスは、SNP_RSP(DATAPULL=1)メッセージによって応答する。
図4を参照すると、RN-IがRequestOrder=1(RO=1)およびExpCompAck=1(ECA=1)としてWR_UNIQ_STASH要求を生成することが留意される。Request Order(RO)メッセージは、RN-Iがいかなる依存関係もなく複数のWR_UNIQ_STASH要求を送信することをホームノードに示す。ExpCompAck(ECA)メッセージは、観測順がRN-IからのCOMP_ACKメッセージの放出によって制御されることを示す。ホームノードHN-Fは、RN-IからのWR_UNIQ_STASHトランザクションがCPUキャッシュ目標へのSNP_UNIQ_STASHトランザクションによってインターロックされる新規のデュアルCOMP_ACKフローを生成し、それによって、同じトランザクションの2つのCOMP_ACK、RN-IからのCOMP_ACKおよびスタッシュ目標(CPU)からのCOMP_ACKを管理する必要があることがさらに留意される。対照的に、図3のトランザクションは、各書き込みについて単一のCOMP_ACKを使用する。さらに、HN-Fは、対応するCOMP_ACKメッセージがRN-Iから受信されるまで(メッセージCOMP_DATA(UD)によって)目標ノード(CPU)にスタッシュデータを明かさないことが留意される。これは、スタッシュデータが正しい順序で観測されることを保証する。
図5は、本開示の実施形態によるデータ処理システムに関するさらなるトランザクションフロー図である。図5は、RN-Iに関するタイムライン502、HN(HNF0)に関するタイムライン504、およびCPUなどの目標ノードに関するタイムライン506を示す。図5は、要求ノードRN-Iが単一のメッセージでWR_DATAをCOMP_ACKと組み合わせ得る一方、ホームノードHN-Fにおいて単一のメッセージでDBID_RSPとCOMPとを一緒に組み合わせることによってフローがどのように最適化され得るかを示す。ホームノードHN-Fは、スヌープフィルタ(snoop filter)の検索中に、どのCPUもデータの古いコピーを持たないと判定するとき、組み合わされたフローを使用する。同様に、要求ノードRN-Iは、WR_DATAを送信する間に、すべてのより古い書き込みがCOMPを受信済みであり、したがって、その要求ノードRN-IがWR_DATAをCOMP_ACKと組み合わせるWR_DATA_ACKオペコードを使用することができると判定するとき、組み合わされたフローを使用する。
図6は、本開示の実施形態によるデータ処理システムに関するさらなるトランザクションフロー図である。図6は、RN-Iに関するタイムライン602、HN(HNF0)に関するタイムライン604、CPUなどの目標ノードに関するタイムライン606、およびメモリコントローラ(DMC)に関するタイムライン608を示す。図6は、WR_DATA_CANCELメッセージの使用を示す。複数のマスタがシステムに強く順序付けられた書き込みを発行する場合、システムに持ち込まれた循環的依存関係が原因で書き込みがデッドロックに陥る可能性がある。デッドロックを軽減するために、WR_DATA_CANCELフローが、示されるように、WR_UNIQ_STASHと併せて使用される。キャンセルされたスタッシュトランザクションの場合、ホームノードHN-Fが、現在のデータ値をシステムキャッシュにスタッシングする。要求ノードRN-Iは、実際のスタッシュトランザクションを後でやり直すことが可能であり、そのとき、実際のスタッシュトランザクションが、指定されたCPUキャッシュにスタッシングされる。したがって、RN-Iは、インターコネクトにおけるリソースの競合の結果として生じたデッドロックを検出し、第1の書き込み要求をキャンセルするためのメッセージをHNに送信する。それに応答して、HNは、書き込まれるデータのアドレスに関連するデータの最新のコピーを取り出すためにメモリコントローラにスヌープ要求(RD_NO_SNP)を送信する。メモリコントローラは、メッセージCOMP_DATAで書き込まれるデータのアドレスに関連するデータの最新のコピーを送り返す。そして、書き込まれるデータの代わりに、このデータが、メッセージCOMP_DATA(UD)で目標デバイスに送信される。目標デバイスにおけるデータのコヒーレンス状態は、データがメモリコントローラによってアクセスされたメモリに記憶されたデータと一致するのでユニーク-クリーン(clean)(CU)である。上述のように、目標デバイスは、COMP_ACKメッセージによってデータの受信に肯定応答する。この第2のCOMP_ACKメッセージ(第1のCOMP_ACKメッセージはRN-Iから)を受信すると、トランザクションは、HNにおいて完了し、(データバッファなどの)割り当てられたリソースが、解放される可能性がある。
図7は、本開示の実施形態によるデータ処理システムに関するさらなるトランザクションフロー図である。以下のタイムライン、すなわち、ソースデバイス(示される例においてはPCIeマスタ)に関する702、I/O要求ノード(RN-1)に関する704、第1のホームノード(HNF0)に関する706、第2のホームノード(HNF1)に関する708、およびスタッシュ目標または目標デバイスに関する710が示される。図7は、AXI/CHIアーキテクチャに実装するための、PCIeマスタからスタッシュ目標への複数の順序付けられたスタッシュトランザクションに関するトランザクションフローを示す。PCIeマスタからの2つのWR_UNIQ_STASH(WUS)トランザクションは、強い順序付けの要件を示すためにAXIチャネル上で同じ書き込みアドレスグループ識別子(AWID)を使用する。2つの書き込みは、システムの複数のHN-Fにストライピングされることが留意される。また、要求ノード(RN-I)は、HN-Fに跨がってトランザクションを順序付けるためにストリーミング順序付きフロー(streaming ordered flow)を使用し、ホームノード(HN-F)は、COMP_ACK(WR_DATA_ACK)の到着後にのみデータをCPUキャッシュにスタッシングする。したがって、順序付けられた書き込みの観測の特性が、書き込みスタッシュに関して維持される。図7に示されるように、RN-Iからの書き込みスタッシュは、システム内で完全にパイプライン化されることが可能であり、書き込みの極めて高い性能のレベルをもたらす。
図7に示される実施形態において、ソースデバイスは、PCIeマスタであるが、順序付けられたデータは、グラフィックスプロセッサ、シリアルポート、アクセラレータなどのその他のデバイスから受信される可能性がある。示された例において、ソースデバイスは、メッセージAW0/W0(ID0,WUS)およびAW1/W1(ID0,WUS)で2つの書き込み要求を送信する。これらの要求は、その順序が維持されるべきであることを示す同じストリーム識別子(ID0)を有する。要求は、データがメモリに送信されるのではなく目標ノードにスタッシングされるべきであることを示す指示子WUS(ユニークスタッシュ書き込み(write unique stash))も含む。要求を受信すると、RN-Iは、2つの書き込み要求(WUS0およびWUS1)をデータ処理ネットワークのホームノード(HN)に送信する。示された例において、これらの要求は、異なるHNに送信されるが、要求は、その他の場合、同じノードに送信される可能性がある。上述のように、各要求は、目標デバイスのインジケータと、RN-Iがいかなる依存関係もなく複数の書き込み要求を送信することをHNに示す要求順(RO)メッセージと、観測順がRN-Iからの完了肯定応答(COMP_ACK)メッセージの放出によって制御されるべきであることをHNに示す完了肯定応答期待(ExpCompAck)メッセージとを含む。それぞれの第1の書き込み要求に関して、受信するHNは、第1の書き込み要求に関連するデータを受信するためのデータバッファを特定するデータバッファ識別子(DBID_RSP)メッセージと、HNによる完了を示す完了(COMP)メッセージとを送信する。示された例において、これらのメッセージは、それぞれ、ホームノードHNF0およびHNF1から送信されるDBID_COMP0およびDBID_COMP1として組み合わされる。
RN-Iは、DBID_RSPメッセージに応答してHNに書き込まれるデータを送信し、COMPメッセージに応答して第1の完了肯定応答(COMP_ACK)メッセージを送信する。これらの応答は、WR_DATA_ACK0およびWR_DATA_ACK1として組み合わされる。本開示の態様によれば、第1のCOMP_ACKメッセージは、データストリームのすべてのより古い書き込み要求に関するCOMPメッセージがRN-Iによって受信されるまでRN-Iによって送信されない。
それぞれの第1のCOMP_ACKメッセージに応答して、HNは、書き込まれるデータを目標デバイスに送信する。特に、HNF0は、WR_DATA_ACK0がRN-Iから受信された後、メッセージCOMP_DATA0(UD)で目標デバイスにデータを送信し、HNF1は、WR_DATA_ACK1がRN-Iから受信された後、メッセージCOMP_DATA1(UD)で目標デバイスにデータを送信する。データを受信することに応じて、目標デバイスは、第2のCOMP_ACKメッセージを対応するHNに(COMP_ACK0をHNF0におよびCOMP_ACK1をHNF1に)送信する。
RN-IがHNからCOMP_DBIDメッセージを受信するとき、RN-Iは、ソースデバイス(示された例においてはPCIeマスタ)に確認メッセージBRESP0またはBRESP1を送り返す。
各HNは、受信された各書き込み要求に応答してコヒーレンスプロトコルに従って目標デバイスにスヌープメッセージ(snpUniqStash0またはsnpUniqStash1)を送信し、目標デバイスからスヌープ応答(SNP_RSP0またはSNP_RSP1)を受信する。書き込まれるデータは、スヌープメッセージに対する応答がHNによって受信されるまでHNから目標デバイスに送信されない。上述のように、RN-Iは、インターコネクトにおけるデッドロックを検出し、デッドロックを終わらせるためにWR_CANCELメッセージを送信する可能性がある。
下の表1は、上で開示されたメカニズムに関する試験結果を示す。試験においては、同じ書き込みアドレスグループ(たとえば、同じAWID)に関する書き込みスタッシュが、1つの要求ノード(RN-I)または複数(3つ)の要求ノードにおいて投入された。書き込みは、複数(4つ)のホームノードにストライピングされ、スタッシュ目標は、3つのCPUに分散されたか、単一のCPUであったか、またはCPUでなかった。測定が、2GHzで実行される32B RN-I DATA Interfaceに関して行われた。表は、現在のフローメカニズムと開示されるフローメカニズムとの帯域幅の比較を示す。
Figure 2021522611
当業者は、本開示が例示的な実施形態の観点で説明されたことを認めるであろう。本開示は、説明され、特許請求された実施形態と均等な専用ハードウェアおよび/または専用プロセッサなどのハードウェア構成要素の均等物を使用して実装される可能性がある。同様に、多目的コンピュータ、マイクロプロセッサに基づくコンピュータ、マイクロコントローラ、光コンピュータ、アナログコンピュータ、専用プロセッサ、および/または専用ハードワイヤードロジックが、本開示の代替的な均等な実施形態を構築するために使用される可能性がある。
本明細書において説明された様々な実施形態は、任意の好適な電子的なストレージ媒体に記憶されるかまたは任意の好適な電子的な通信媒体上で送信されることが可能である、流れ図の形態で大まかに説明されているプログラミング命令を実行する専用ハードウェア、構成可能なハードウェア、またはプログラミングされたプロセッサを使用して実装される。これらの要素の組合せが、使用される可能性がある。当業者は、上述のプロセスおよびメカニズムが本開示を逸脱することなく任意の数の変更形態で実装され得ることを理解するであろう。たとえば、本開示を逸脱することなく、実行される特定の動作の順序は多くの場合変更されることが可能であり、追加的な動作が追加されることが可能であり、または動作が削除されることが可能である。そのような変更形態は、想定されており、均等であるとみなされる。
したがって、開示される実施形態の一部の態様および特徴が、以下の付番された項目に示される。
1. データ処理ネットワーク内でデータ処理ネットワークの要求ノードに結合されるソースデバイスから目標デバイスに順序付けられたデータを転送するための方法であって、要求ノードによってソースデバイスから第1の書き込み要求を受信するステップであって、第1の書き込み要求が、目標デバイスを対象とし、ストリーム識別子に関連付けられる、ステップと、要求ノードによってデータ処理ネットワークのホームノードに第2の書き込み要求を送信するステップと、第2の書き込み要求に応答してホームノードによって要求ノードに、書き込まれるデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよびホームノードによる完了を示す完了メッセージを送信するステップと、書き込みデータバッファクレジットメッセージに応答して要求ノードによってホームノードに書き込まれるデータを送信するステップと、完了メッセージに応答して要求ノードによってホームノードに第1の完了肯定応答メッセージを送信するステップと、第1の完了肯定応答メッセージに応答してホームノードによって目標デバイスに書き込まれるデータを送信するステップと、書き込まれるデータを受信することに応じて目標デバイスによってホームノードに第2の完了肯定応答メッセージを送信するステップとを含み、第1の書き込み要求よりも古く、第1の書き込み要求と同じストリーム識別子を有するすべての書き込み要求に関する完了メッセージが要求ノードによって受信されるまで第1の完了肯定応答メッセージが要求ノードによって送信されない、方法。
2. 第2の書き込み要求が、要求ノードが1組の順序付けられたデータの一部である書き込まれるデータを送信することと、観測順が要求ノードからの完了肯定応答メッセージの放出によって制御されるべきであることとをホームノードに示す項目1に記載の方法。
3. ホームノードがいかなる目標ノードも書き込まれるデータの古いコピーを持たないと判定するとき、ホームノードから要求ノードに送信される書き込みデータバッファクレジットメッセージおよび完了メッセージが、1つのメッセージとして組み合わされる項目1または項目2に記載の方法。
4. 要求ノードがすべてのより古い書き込みがホームノードから完了メッセージを受信したと判定するとき、要求ノードからホームノードに送信される完了肯定応答メッセージおよび書き込まれるデータが、1つのメッセージとして組み合わされる項目1から3のいずれか一項に記載の方法。
5. ホームノードによって目標デバイスにコヒーレンスプロトコルに従ってスヌープメッセージを送信するステップと、目標デバイスによってホームノードにスヌープメッセージに対する応答を送信するステップとをさらに含み、書き込まれるデータが、スヌープメッセージに対する応答がホームノードによって受信されるまでホームノードから目標デバイスに送信されない項目1から4のいずれか一項に記載の方法。
6. 第1の書き込み要求が、スタッシュ要求を含み、書き込まれるデータが、目標デバイスにユニーク-ダーティコヒーレンス状態で記憶される項目1から5のいずれか一項に記載の方法。
7. データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを要求ノードによって検出するステップと、要求ノードによってホームノードに第1の書き込み要求をキャンセルするためのメッセージを送信するステップと、第1の書き込み要求をキャンセルするためのメッセージに応答してホームノードによって、書き込まれるデータのアドレスに関連するデータの最新のコピーを取り出すためにメモリコントローラにスヌープ要求を送信するステップと、書き込まれるデータのアドレスに関連するデータの最新のコピーをメモリコントローラからホームノードによって受信するステップとをさらに含み、書き込まれるデータの代わりに、書き込まれるデータのアドレスに関連するデータの最新のコピーが、目標デバイスに送信される項目1から6のいずれか一項に記載の方法。
8. ソースデバイスが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットを含む項目1から7のいずれか一項に記載の方法。
9. ホームノードが第2の完了肯定応答メッセージに応答してデータバッファを解放するステップをさらに含む項目1から8のいずれか一項に記載の方法。
10. データ処理ネットワーク内で要求ノードから目標ノードにデータストリームの順序付けられたデータを転送するための方法であって、要求ノードによってデータ処理ネットワークの1つまたは複数のホームノード(Home Node's)に複数の第1の書き込み要求を送信するステップと、複数の書き込み要求のそれぞれの第1の書き込み要求に関して、1つまたは複数のHome Node'sのうち、第1の書き込み要求が送信されたホームノードによって、第1の書き込み要求に関連するデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよびホームノードによる完了を示す完了メッセージを送信するステップと、書き込みデータバッファクレジットメッセージに応答して要求ノードによってホームノードに書き込まれるデータを送信するステップと、完了メッセージに応答して要求ノードによってホームノードに第1の完了肯定応答(completion acknowledgement)メッセージを送信するステップと、第1の完了肯定応答メッセージに応答してホームノードによって目標デバイスに書き込まれるデータを送信するステップと、書き込まれるデータを受信することに応じて目標デバイスによってホームノードに第2の完了肯定応答メッセージを送信するステップとを含み、データストリームのすべてのより古い書き込み要求に関する完了メッセージが要求ノードによって受信されるまで第1の完了肯定応答メッセージが要求ノードによって送信されない、方法。
11. ホームノードから要求ノードに送信される書き込みデータバッファクレジットメッセージおよび完了メッセージが、それぞれの第1の書き込み要求に関して1つのメッセージとして組み合わされる項目10に記載の方法。
12. 要求ノードからホームノードに送信される完了肯定応答メッセージおよび書き込まれるデータが、それぞれの第1の書き込み要求に関して1つのメッセージとして組み合わされる項目10または項目11に記載の方法。
13. 1つまたは複数のHome Node'sのうち、第1の書き込み要求が送信されたホームノードによって、コヒーレンスプロトコルに従って目標デバイスにスヌープメッセージを送信するステップと、目標デバイスによってホームノードにスヌープメッセージに対する応答を送信するステップとをさらに含み、第1の書き込み要求に関連するデータが、スヌープメッセージに対する応答がホームノードによって受信されるまでホームノードから目標デバイスに送信されない項目10から12のいずれか一項に記載の方法。
14. 複数の第1の書き込み要求が、スタッシュ要求を含み、第1の要求に関連するデータが、目標デバイスにユニーク-ダーティ(UD)コヒーレンス状態で記憶される項目10から13のいずれか一項に記載の方法。
15. データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを要求ノードによって検出するステップと、要求ノードによって1つまたは複数のHome Node'sのうちのホームノードに複数の書き込み要求のうちの第1の書き込み要求をキャンセルするためのメッセージを送信するステップと、第1の書き込み要求をキャンセルするためのメッセージに応答してホームノードによって、書き込まれるデータのアドレスに関連するデータの最新のコピーを取り出すためにメモリコントローラにスヌープ要求を送信するステップと、キャンセルされた第1の書き込み要求のデータのアドレスに関連するデータの最新のコピーをメモリコントローラからホームノードによって受信するステップとをさらに含み、第1の書き込み要求に関連するデータの代わりに、キャンセルされた第1の書き込み要求のデータの最新のコピーが、目標デバイスに送信される項目10から14のいずれか一項に記載の方法。
16. データストリームの順序付けられたデータが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットから要求ノードにおいて受信される項目10から15のいずれか一項に記載の方法。
17. 目標ノード、目標ノードに書き込まれるデータに関してソースデバイスから第1の書き込み要求を受信するように構成された要求ノードであって、データが、順序付けられたデータストリームに関連する、要求ノード、データ処理ネットワークのためのコヒーレンシの地点(point of coherency)を提供するホームノードであって、インターコネクトを介して目標ノードおよび要求ノードに結合される、ホームノードを含み、要求ノードが、ソースデバイスからの第1の書き込み要求に応答してホームノードに第2の書き込み要求を送信すること、第2の書き込み要求に応答してホームノードから、書き込まれるデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよびホームノードによる完了を示す完了メッセージを受信すること、書き込みデータバッファクレジットメッセージに応答してホームノードに書き込まれるデータを送信すること、ならびに完了メッセージに応答してホームノードに第1の完了肯定応答メッセージを送信することであって、第1の完了肯定応答メッセージが、第1の書き込み要求よりも古く、第1の書き込み要求と同じデータストリーム識別子に関連付けられるすべての書き込み要求に関する完了メッセージが要求ノードによって受信されるまで送信されない、送信することを行うように構成され、ホームノードが、第1の完了肯定応答メッセージに応答して目標デバイスに書き込まれるデータを送信するように構成され、目標デバイスが、書き込まれるデータを受信することに応じてホームノードに第2の完了肯定応答メッセージを送信するように構成される、データ処理ネットワーク。
18. ホームノードから要求ノードに送信される書き込みデータバッファクレジットメッセージおよび完了メッセージが、1つのメッセージとして組み合わされる項目17に記載のデータ処理ネットワーク。
19. 要求ノードからホームノードに送信される完了肯定応答メッセージおよび書き込まれるデータが、1つのメッセージとして組み合わされる項目17または項目18に記載のデータ処理ネットワーク。
20. ホームノードが、コヒーレンスプロトコルに従って目標ノードにスヌープメッセージを送信するように構成され、目標ノードが、スヌープメッセージに対する応答をホームノードに送り返すように構成され、書き込まれるデータが、スヌープメッセージに対する応答がホームノードによって受信されるまでホームノードから目標デバイスに送信されない項目17から19のいずれか一項に記載のデータ処理ネットワーク。
21. 第2の書き込み要求が、スタッシュ要求を含み、書き込まれるデータが、目標ノードのキャッシュにユニーク-ダーティコヒーレンス状態で記憶される項目17から20のいずれか一項に記載のデータ処理ネットワーク。
22. 要求ノードが、データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを検出し、第1の書き込み要求をキャンセルするためのメッセージをホームノードに送信するようにさらに構成され、ホームノードが、第1の書き込み要求をキャンセルするためのメッセージに応答して、書き込まれるデータのアドレスに関連するデータの最新のコピーを取り出すためにデータ処理ネットワークのメモリコントローラにスヌープ要求を送信し、書き込まれるデータのアドレスに関連するデータの最新のコピーをメモリコントローラから受信し、書き込まれるデータの代わりに、書き込まれるデータのアドレスに関連するデータの最新のコピーを目標デバイスに送信するようにさらに構成される項目17から21のいずれか一項に記載のデータ処理ネットワーク。
23. ソースデバイスが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットを含む項目17から22のいずれか一項に記載のデータ処理ネットワーク。
24. 単一のチップ上に形成される項目17から23のいずれか一項に記載のデータ処理ネットワーク。
25. 項目17から23のいずれか一項に記載のデータ処理ネットワークを記述するハードウェア記述言語の命令を含む非一時的コンピュータ可読媒体。
26. 項目17から23のいずれか一項に記載のデータ処理ネットワークの構成要素および接続性のネットリストを記憶する非一時的コンピュータ可読媒体。
本明細書において詳細に説明された様々な代表的な実施形態は、限定ではなく例として提示された。開示された本開示の範囲内に留まる均等な実施形態をもたらす、説明された実施形態の形態および詳細に様々な変更が行われる可能性があることは、当業者に理解されるであろう。
100 データ処理システム
102 処理コアクラスタ
104 インターコネクト
106a RN-I
106b RN-I
108 ネットワーク
112 I/Oデバイス
114 メモリまたはストレージデバイス
116 メモリコントローラ
118 ホームノード(HN)
200 データ処理システム
202 PCIeエンドポイント
204 PCIeルートコンプレックス
208 インターコネクト
210a キャッシュ
210b キャッシュ
212a 処理クラスタ、要求ノード
212b 処理クラスタ、要求ノード
214 インターフェース
216 トランザクション層
218 データリンク層
220 物理層
222 レーン
222a レーン
224 インターフェース
226a ホームノード
226b ホームノード
402 タイムライン
404 タイムライン
406 タイムライン
502 タイムライン
504 タイムライン
506 タイムライン
602 タイムライン
604 タイムライン
606 タイムライン
608 タイムライン
本開示は、I/OマスタとCPUとの間の最適化されたデータ共有を可能にするための順序付けられた書き込みスタッシュの高性能なストリーミングに関する。
データ処理システムにおいて、データは、入力/出力(I/O)インターフェースを介して受信または送信される可能性がある。これは、オフチップデータリソースへのI/Oコントローラインターフェースまたはローカルもしくはリモートネットワークのリソースへのネットワークインターフェースコントローラ(NIC)であり得る。
データがI/Oインターフェースから受信されるとき、そのデータは、メモリまたはキャッシュなどのデータ処理システムのストレージリソースに向けられる可能性がある。キャッシュスタッシングは、データ処理システムにおいて特定のキャッシュ内にデータをインストールするためのメカニズムである。キャッシュスタッシングは、データがその使用地点の近くに置かれることを保証し、それによって、システムの性能を改善する。
I/Oインターフェースの例は、標準的な周辺装置相互接続エクスプレス(Peripheral Component Interconnect Express)(PCIe)シリアルバスインターフェースである。PCIeに基づくシステムは、書き込みデータのスタッシュ目標を特定するために使用され得るステアリングタグ(steering tag)をPCI書き込みメッセージに追加するためにトランザクション層パケット(TLP)処理ヒント(Processing Hints)(TPH)を利用する。このメカニズムは、システムインターコネクトによって処理される必要がある(PCIe規格のポステッド書き込み(posted write)順序付け規則によって必要とされる)強く順序付けられた(strongly ordered)書き込みスタッシュを導入する。しかし、コヒーレントメッシュネットワーク(coherent mesh network)などのインターコネクトは、データが相互接続中のいくつかの異なるルートのいずれかを通る可能性があるので通常は順序付けられない。加えて、現在のデータ処理インターコネクトは、強く順序付けられた書き込みデータをCPUにスタッシングすることができないか、または十分に高い性能でそれを行うことができない(たとえば、PCIe規格のGeneration 4は最大32GBpsの書き込み帯域幅をサポートする)かのどちらかである。さらに、現在のシステムは、デッドロックなどの問題なしに高い性能で独立したPCIeマスタから強く順序付けられた書き込みデータをスタッシングすることができない。
添付の図面は、様々な代表的な実施形態をより十分に示すために使用され、開示される代表的な実施形態およびそれらの固有の利点をより深く理解するために当業者によって使用され得る視覚的な表現を提供する。これらの図面において、同様の参照番号は、対応する要素を特定する。
様々な代表的な実施形態によるデータ処理システムのブロック図である。 様々な代表的な実施形態による処理クラスタのブロック図である。 従来のデータスタッシングに関するトランザクションフロー図である。 様々な代表的な実施形態によるデータスタッシングに関するトランザクションフロー図である。 様々な代表的な実施形態によるデータスタッシングに関するトランザクションフロー図である。 様々な代表的な実施形態によるデータスタッシングに関するトランザクションフロー図である。 様々な代表的な実施形態によるデータスタッシングに関するトランザクションフロー図である。
本明細書において説明される様々な装置およびデバイスは、データ処理システムにおいて到着するデータの自動的ルーティングおよび割り当てのためのメカニズムを提供する。
本開示は多くの異なる形態の実施形態を許容するが、本開示が本開示の原理の例とみなされるべきであり、本開示を示され説明される特定の実施形態に限定するように意図されていないという理解の上で、特定の実施形態が図面に示され、本明細書において詳細に説明される。下の説明においては、同様の参照番号が、図面のいくつかの図において同じ、同様な、または対応する部分を示すために使用される。
本明細書において、第1のおよび第2の、上および下などの関係を示す語は、あるエンティティまたはアクションを別のエンティティまたはアクションと区別するためだけに使用される可能性があり、そのようなエンティティまたはアクションの間のいかなる実際のそのような関係または順序も必ず必要とするまたは示唆するとは限らない。語「含む(comprise)」、「含んでいる(comprising)」、またはこれらの任意のその他の変化形は、要素のリストを含むプロセス、方法、製品、または装置がそれらの要素のみを含むのではなく、明示的に列挙されていないまたはそのようなプロセス、方法、製品、もしくは装置に固有でないその他の要素を含む可能性があるように非排他的包含を含むように意図される。「〜を含む(comprises ...a)」と後に続く要素は、さらなる制約がなければ、その要素を含むプロセス、方法、製品、または装置に追加的な同一の要素が存在することを排除しない。
本明細書全体を通じて「一実施形態」、「特定の実施形態」、「実施形態」、または同様の語への言及は、実施形態に関連して説明される特定の特徴、構造、または特質が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書中の様々な個所のそのような語句の出現は、必ずしもすべてが同じ実施形態を指しているとは限らない。さらに、特定の特徴、構造、または特質は、限定なしに1つまたは複数の実施形態において任意の好適な方法で組み合わされる可能性がある。
本明細書において使用される語「または(or)」は、包括的であるまたはいずれか1つもしくは任意の組合せを意味するものと解釈されるべきである。したがって、「A、B、またはC」は、「以下、すなわち、A、B、C、AおよびB、AおよびC、BおよびC、A、B、およびCのいずれか」を意味する。この定義の例外は、要素、機能、ステップ、または行為の組合せが何かしら本質的に相互排他的であるときにのみ発生する。
説明を簡単で明瞭にするために、参照番号が、対応するまたは類似した要素を示すために図の間で繰り返される可能性がある。多くの詳細が、本明細書において説明される実施形態を理解させるために述べられる。実施形態は、これらの詳細なしに実施される可能性がある。その他の場合、よく知られている方法、手順、および構成要素は、説明される実施形態を不明瞭にすることを避けるために詳細に説明されなかった。説明は、本明細書において説明される実施形態に限定されるとみなされるべきでない。
本開示は、順序付けられないインターコネクトにおいて順序付けられた書き込みスタッシュの高性能なストリーミングを可能にするデータ処理システムのメカニズムに関する。メカニズムは、高帯域幅を提供しながら複数のI/Oデバイスと処理デバイスとの間の最適化されたデータ共有を可能にする。
本開示は、1組の処理コアクラスタ、すべてのコアに共有されたシステムレベルキャッシュ(SLC)を含む1組のホームノード(HN)、1組のメモリコントローラおよびI/Oデバイスインターフェースを接続するコヒーレントメッシュネットワーク(CMN)などのキャッシュコヒーレントインターコネクト(CCI:cache coherent interconnect)を用いるマルチコアアーキテクチャに関連して説明される。
図1は、様々な代表的な実施形態によるデータ処理システム100のブロック図である。いくつかの処理コアクラスタ102(要求ノードと呼ばれる)が、コヒーレントインターコネクト104を介してデータリソースに結合される。データは、入力/出力(I/O)要求ノード(RN-I)を介して受信される。示される例において、RN-I 106aは、ネットワーク108からデータを受信するネットワークインターフェースコントローラ(NCI)を含み、RN-I 106bは、I/Oデバイス112からデータを受信する。I/Oデバイス112は、たとえば、周辺装置相互接続エクスプレス(PCIe)バスを介して結合される可能性がある。データは、メモリコントローラ116を介してインターコネクト104に結合された1つまたは複数のメモリまたはストレージデバイス114に記憶される可能性がある。ホームノード(HN)118は、システムレベルキャッシュを含む。各ホームノード(HN)は、所与の1組のシステムアドレスに記憶されるデータのコヒーレンスの地点(point of coherence)として働く。I/O要求ノード106aおよび106bから受信されるデータは、ホームノードにルーティングされる可能性がある。そして、ホームノードは、HNのシステムレベルキャッシュにデータを記憶するか、またはメモリ114に記憶するためにメモリコントローラ116にデータを送信する。代替的に、「キャッシュスタッシング」と呼ばれるプロセスを使用して、I/O要求ノード106aおよび106bにおいて受信されたデータは、処理クラスタ102などの目標デバイスのキャッシュにルーティングされる可能性がある。キャッシュスタッシングは、I/Oインターフェースがコアのプライベートキャッシュ(L1、L2)または処理クラスタ102のクラスタキャッシュ(L3)にデータを書き込むことができるメカニズムである。本開示は、I/Oデバイス112から処理クラスタ102などの目標デバイスのキャッシュに順序付けられたデータを転送するためのキャッシュスタッシングメカニズムに関する。
図2は、本開示の実施形態によるデータ処理システム200のブロック図である。この例において、I/Oデバイスは、PCIeルートコンプレックス(PCIe root complex)204、I/O要求ノード(RN-I)206、およびインターコネクト208を介して処理クラスタ(要求ノード)212aおよび212bのキャッシュ210aおよび210bにそれぞれ結合されるPCIeエンドポイント(PCIe end-point)202である。動作中、PCIeルートコンプレックス204は、(Arm LimitedのArm(登録商標) AMBA(登録商標) Advanced eXtensible Interface(AXI)などの)インターフェース214上でインターコネクト208に順序付けられた書き込みスタッシュを投入する。順序付けられた書き込みは、それらの書き込みが共通のグループに属しており、同じチャネルでルーティングされるべきであることを示すためにストリーム識別子などの識別子をタグ付けされる可能性がある。
現在のデータ処理システムにおいて、同じグループに属する書き込みは、I/O要求ノード206によってシリアル化され、1度に1つずつインターコネクトにディスパッチされる。これは、順序付けられた書き込みの準最適な性能をもたらす。
PCIeルートコンプレックス204は、トランザクション層216、データリンク層218、および物理層220を含む階層化されたプロトコルを実装する可能性がある。物理層220は、PCIeエンドポイントとの接続のための16個のレーン222を提供する可能性がある。示される例において、レーン222aは、エンドポイント202に結合される。
要求ノード212aおよび212bは、たとえば、Arm LimitedのArm(登録商標) AMBA(登録商標) coherent hub interface(CHI)であり得るインターフェース224を介してインターコネクト208に結合される可能性がある。
ホームノード226aおよび226bは、グループシステムアドレスのコヒーレンスの地点を提供する。
本開示の特定の態様によれば、要求ノード(RN-I)から目標ノードへの順序付けられたデータの効率的な転送のためのデータ処理ネットワークおよびその動作の方法が、提供される。RN-Iは、ホームノード(HN)に書き込み要求を送信し、HNは、リソースがHNによって割り当てられたときに第1の書き込み要求に応答する。それから、RN-Iは、書き込まれるデータを送信する。また、HNは、HNにおいてコヒーレンシアクション(coherency action)が実行されたときに完了(COMP)メッセージによって応答する。RN-Iは、COMP_ACKメッセージによってCOMPメッセージの受信に肯定応答する。このメッセージは、順序付けられたデータの第1の書き込み要求よりも古いすべての書き込み要求に関してCOMPメッセージが受信されるまで送信されず、それによって、データの順序を維持する。第1の書き込み要求に関するCOMP_ACKの受信の後、HNは、書き込まれるデータを目標ノードに送信する。
図3〜図7は、本開示の実施形態に一致する様々なトランザクションに関するトランザクションフロー図を示す。下の実施形態は、PCIeマスタデバイスとのArm(登録商標) AXI(Advanced eXtensible Interface)に関連して説明される。しかし、その他のインターフェースが、本開示を逸脱することなく使用される可能性がある。図において、以下のメッセージの表記が、使用される。
I/Oマスタとの通信に関して、
・AW: AXI上のWrite Address/Controlチャネル
・W: AXI上のWrite Dataチャネル
・BRESP: AXI上のWrite Completion
およびノード間の通信に関して、
・WR_UNIQ_STASH(WUS): Write Unique Stash要求
・RD_NO_SNP: Read, no Snoop要求
・WR_NO_SNP: Write, no Snoop要求
・WriteUniqPtl: Write Uniqueパーシャル(partial)要求
・DBID_RSP: Write Data Bufferクレジット(credit)メッセージ
・COMP: 完了メッセージ
・COMP_DBID_RSP: Combined Data Bufferクレジットおよび完了メッセージ
・WR_DATA: Write Dataメッセージ
・SnpUniqStash: Snoop Unique Stashメッセージ
・SNP_RSP: スヌープ応答
・COMP_ACK: 完了肯定応答
・Retry_Ack: 再試行肯定応答
・CRD_GNT: Credit Grantメッセージ
図3は、現在のデータ処理システムに関するトランザクションフロー図である。図3において、縦線はタイムラインであり、下に向かって時間が流れ、矢印は、デバイス間のメッセージ/データ転送を示す。以下のタイムライン、すなわち、ソースデバイス(示される例においてはPCIeマスタ)に関する302、I/O要求ノード(RN-1)に関する304、第1のホームノード(HNF0)に関する306、第2のホームノード(HNF1)に関する308、およびスタッシュ目標または目標デバイスに関する310が示される。スタッシュ要求、たとえば、AW0/W0(ID0,WUS)が、PCIeマスタからI/O要求ノード(RN-1)に送信される。RN-Iは、どちらのホームノード(この例においてはHNF0またはHNF1)がデータを処理し、そのデータをスタッシュ目標に渡すべきかを決定するためにシステムアドレスマップを使用する。現在のシステムにおいては、(WR_UNIQ_STASHメッセージWUS0およびWUS1などの)順序付けられた書き込みスタッシュメッセージがRN-Iにおいてシリアル化され、書き込みのための低帯域幅につながる。この低帯域幅の挙動は、一部の応用に関して許容され得ない可能性があり、PCIe Generation 4などの規格に準拠するのに十分でない可能性がある。たとえば、図3を参照すると、PCIeマスタから送信された2つの書き込み要求AW0/W0およびAW1/W1が、I/O要求ノード(RN-I)において受信されるが、(WUS1がHNF1に送信されるときに始まる)RN-Iによる第2の書き込み要求の処理は、第1のデータがメッセージWR_DATA0でHNF0に送信された後まで待つ。したがって、現在のシステム(つまり、現在のインターコネクト)は、(PCIeマスタからなどの)強く順序付けられた書き込みを十分に高い性能のレベルでCPUにスタッシングしない。
本明細書において開示されるメカニズムは、(PCIeルートコンプレックスなどの)1組のI/Oマスタが強く順序付けられた書き込みデータを高帯域幅でCPUキャッシュにスタッシングすることを可能にする。メカニズムは、システムの(たとえば、コヒーレントメッシュネットワークであり得る)インターコネクト、転送プロトコル、I/O要求ノード(RN-I)、およびホームノード(HN)を増強する。
一実施形態においては、(Coherent Hub Interface(CHI)プロトコルなどの)ノードとインターコネクトとのインターフェースをとるためのプロトコルが、任意のCOMP_ACKパケット応答を追加するためおよびWR_DATA_CANCELデータ操作を追加するためにWR_UNIQ_STASH要求に関して増強される。ここで、WR_UNIQ_STASHは、CPU(スタッシュ目標)のキャッシュにデータをスタッシングし、コヒーレンス状態UNIQUEを有するものとしてデータをタグ付けする要求である。
I/O要求ノード(RN-I)は、RequestOrderおよびExpCompAckメッセージまたは属性を用いるストリーミングフローを追加するため、およびストリーミングフローが原因であるインターコネクトにおけるリソースの競合の結果として生じたデッドロックをRN-Iが検出するときに使用するためのWR_DATA_CANCELメッセージを追加するためにWR_UNIQ_STASH要求に関して増強される。
ホームノード(HN-F)は、デュアルCOMP_ACKフロー(dual COMP_ACK flow)を追加するために増強され、スタッシュデータがCOMP_ACKを受信することに依存するようにスタッシュ目標にスタッシュデータを送信することを遅らせるためにさらに増強される。これは、すべての前の順序付けられた書き込みが観測されるまでCPU内のスタッシュデータが観測されないことを保証する。
図4は、本開示の実施形態によるデータ処理システムに関するトランザクションフロー図である。図4は、RN-Iに関するタイムライン402、HN(HNF0)に関するタイムライン404、およびCPUなどの目標ノードに関するタイムライン406を示す。データは、共有メモリに転送されるのではなくRN-Iから目標ノードのキャッシュに転送される可能性がある。このプロセスは、「スタッシング」と呼ばれ、さらに、目標ノードは、スタッシュ目標と呼ばれる。
図4は、データ処理ネットワーク内でPCIeマスタ、アクセラレーションユニット、またはグラフィックス処理ユニットなどのソースデバイスからRN-IおよびHNを介して目標デバイスにデータを転送するための方法の実施形態を示す。ソースデバイスは、RN-Iに結合され、順序付けられたデータをRN-Iに送信する。順序付けられたデータは、特定のデータストリームを特定するストリーム識別子に関連付けられる。RN-Iは、書き込み要求(WR_UNIQ_STASH)をHNに送信し、書き込み要求は、目標デバイスのインジケータと、RN-Iがいかなる依存関係もなく複数の書き込み要求を送信することをHNに示す要求順(RO: request order)メッセージと、観測順がRN-Iからの完了肯定応答(COMP_ACK)メッセージの放出によって制御されるべきであることをHNに示す完了肯定応答期待(expect completion acknowledgement)(ExpCompAck or ECA)メッセージとを含む。
HNは、書き込みトランザクションのためのデータバッファなどのリソースを割り当て、書き込まれるデータを受信するためのデータバッファを特定する、RN-Iへのデータバッファ識別子(DBID_RSP)メッセージと、HNによる完了を示す完了(COMP)メッセージとを送信する。RN-Iは、DBID-RSPメッセージに応答して、書き込まれるデータをWR_DATAメッセージとして送信する。RN-Iは、COMPメッセージに応答して、HNに第1の完了肯定応答(COMP_ACK)メッセージを送信する。そして、RN-Iによるトランザクションは完了する。HNは、第1のCOMP_ACKメッセージに応答して、COMP_DATA(UD)メッセージで目標デバイスに書き込まれるデータを送信する。「UD」の指定は、データのコヒーレンス状態がユニーク(unique)およびダーティ(dirty)である、つまり、1つのノードのみがデータのコピーを有し、データがアドレスに関して共有メモリに記憶されたデータと一致しないことを示す。それに応答して、目標デバイスは、第2のCOMP_ACKメッセージをHNに送信する。
この手法の重要な特徴は、第1の書き込み要求よりも古く、第1の書き込み要求と同じストリーム識別子を有するすべての書き込み要求に関するCOMPメッセージがRN-Iによって受信されるまで第1のCOMP_ACKメッセージがRN-Iによって送信されないことである。これが、データの適切な順序付けを保証する。
データコヒーレンシプロトコルの一部として、HNは、スヌープメッセージ(SNP_UNIQ_STASH)を目標デバイスに送信する。目標デバイスは、SNP_RSP(DATAPULL=1)メッセージによって応答する。
図4を参照すると、RN-IがRequestOrder=1(RO=1)およびExpCompAck=1(ECA=1)としてWR_UNIQ_STASH要求を生成することが留意される。Request Order(RO)メッセージは、RN-Iがいかなる依存関係もなく複数のWR_UNIQ_STASH要求を送信することをホームノードに示す。ExpCompAck(ECA)メッセージは、観測順がRN-IからのCOMP_ACKメッセージの放出によって制御されることを示す。ホームノードHN-Fは、RN-IからのWR_UNIQ_STASHトランザクションがCPUキャッシュ目標へのSNP_UNIQ_STASHトランザクションによってインターロックされる新規のデュアルCOMP_ACKフローを生成し、それによって、同じトランザクションの2つのCOMP_ACK、RN-IからのCOMP_ACKおよびスタッシュ目標(CPU)からのCOMP_ACKを管理する必要があることがさらに留意される。対照的に、図3のトランザクションは、各書き込みについて単一のCOMP_ACKを使用する。さらに、HN-Fは、対応するCOMP_ACKメッセージがRN-Iから受信されるまで(メッセージCOMP_DATA(UD)によって)目標ノード(CPU)にスタッシュデータを明かさないことが留意される。これは、スタッシュデータが正しい順序で観測されることを保証する。
図5は、本開示の実施形態によるデータ処理システムに関するさらなるトランザクションフロー図である。図5は、RN-Iに関するタイムライン502、HN(HNF0)に関するタイムライン504、およびCPUなどの目標ノードに関するタイムライン506を示す。図5は、要求ノードRN-Iが単一のメッセージでWR_DATAをCOMP_ACKと組み合わせ得る一方、ホームノードHN-Fにおいて単一のメッセージでDBID_RSPとCOMPとを一緒に組み合わせることによってフローがどのように最適化され得るかを示す。ホームノードHN-Fは、スヌープフィルタ(snoop filter)の検索中に、どのCPUもデータの古いコピーを持たないと判定するとき、組み合わされたフローを使用する。同様に、要求ノードRN-Iは、WR_DATAを送信する間に、すべてのより古い書き込みがCOMPを受信済みであり、したがって、その要求ノードRN-IがWR_DATAをCOMP_ACKと組み合わせるWR_DATA_ACKオペコードを使用することができると判定するとき、組み合わされたフローを使用する。
図6は、本開示の実施形態によるデータ処理システムに関するさらなるトランザクションフロー図である。図6は、RN-Iに関するタイムライン602、HN(HNF0)に関するタイムライン604、CPUなどの目標ノードに関するタイムライン606、およびメモリコントローラ(DMC)に関するタイムライン608を示す。図6は、WR_DATA_CANCELメッセージの使用を示す。複数のマスタがシステムに強く順序付けられた書き込みを発行する場合、システムに持ち込まれた循環的依存関係が原因で書き込みがデッドロックに陥る可能性がある。デッドロックを軽減するために、WR_DATA_CANCELフローが、示されるように、WR_UNIQ_STASHと併せて使用される。キャンセルされたスタッシュトランザクションの場合、ホームノードHN-Fが、現在のデータ値をシステムキャッシュにスタッシングする。要求ノードRN-Iは、実際のスタッシュトランザクションを後でやり直すことが可能であり、そのとき、実際のスタッシュトランザクションが、指定されたCPUキャッシュにスタッシングされる。したがって、RN-Iは、インターコネクトにおけるリソースの競合の結果として生じたデッドロックを検出し、第1の書き込み要求をキャンセルするためのメッセージをHNに送信する。それに応答して、HNは、書き込まれるデータのアドレスに関連するデータの最新のコピーを取り出すためにメモリコントローラにスヌープ要求(RD_NO_SNP)を送信する。メモリコントローラは、メッセージCOMP_DATAで書き込まれるデータのアドレスに関連するデータの最新のコピーを送り返す。そして、書き込まれるデータの代わりに、このデータが、メッセージCOMP_DATA(UD)で目標デバイスに送信される。目標デバイスにおけるデータのコヒーレンス状態は、データがメモリコントローラによってアクセスされたメモリに記憶されたデータと一致するのでユニーク-クリーン(clean)(CU)である。上述のように、目標デバイスは、COMP_ACKメッセージによってデータの受信に肯定応答する。この第2のCOMP_ACKメッセージ(第1のCOMP_ACKメッセージはRN-Iから)を受信すると、トランザクションは、HNにおいて完了し、(データバッファなどの)割り当てられたリソースが、解放される可能性がある。
図7は、本開示の実施形態によるデータ処理システムに関するさらなるトランザクションフロー図である。以下のタイムライン、すなわち、ソースデバイス(示される例においてはPCIeマスタ)に関する702、I/O要求ノード(RN-1)に関する704、第1のホームノード(HNF0)に関する706、第2のホームノード(HNF1)に関する708、およびスタッシュ目標または目標デバイスに関する710が示される。図7は、AXI/CHIアーキテクチャに実装するための、PCIeマスタからスタッシュ目標への複数の順序付けられたスタッシュトランザクションに関するトランザクションフローを示す。PCIeマスタからの2つのWR_UNIQ_STASH(WUS)トランザクションは、強い順序付けの要件を示すためにAXIチャネル上で同じ書き込みアドレスグループ識別子(AWID)を使用する。2つの書き込みは、システムの複数のHN-Fにストライピングされることが留意される。また、要求ノード(RN-I)は、HN-Fに跨がってトランザクションを順序付けるためにストリーミング順序付きフロー(streaming ordered flow)を使用し、ホームノード(HN-F)は、COMP_ACK(WR_DATA_ACK)の到着後にのみデータをCPUキャッシュにスタッシングする。したがって、順序付けられた書き込みの観測の特性が、書き込みスタッシュに関して維持される。図7に示されるように、RN-Iからの書き込みスタッシュは、システム内で完全にパイプライン化されることが可能であり、書き込みの極めて高い性能のレベルをもたらす。
図7に示される実施形態において、ソースデバイスは、PCIeマスタであるが、順序付けられたデータは、グラフィックスプロセッサ、シリアルポート、アクセラレータなどのその他のデバイスから受信される可能性がある。示された例において、ソースデバイスは、メッセージAW0/W0(ID0,WUS)およびAW1/W1(ID0,WUS)で2つの書き込み要求を送信する。これらの要求は、その順序が維持されるべきであることを示す同じストリーム識別子(ID0)を有する。要求は、データがメモリに送信されるのではなく目標ノードにスタッシングされるべきであることを示す指示子WUS(ユニークスタッシュ書き込み(write unique stash))も含む。要求を受信すると、RN-Iは、2つの書き込み要求(WUS0およびWUS1)をデータ処理ネットワークのホームノード(HN)に送信する。示された例において、これらの要求は、異なるHNに送信されるが、要求は、その他の場合、同じノードに送信される可能性がある。上述のように、各要求は、目標デバイスのインジケータと、RN-Iがいかなる依存関係もなく複数の書き込み要求を送信することをHNに示す要求順(RO)メッセージと、観測順がRN-Iからの完了肯定応答(COMP_ACK)メッセージの放出によって制御されるべきであることをHNに示す完了肯定応答期待(ExpCompAck)メッセージとを含む。それぞれの第1の書き込み要求に関して、受信するHNは、第1の書き込み要求に関連するデータを受信するためのデータバッファを特定するデータバッファ識別子(DBID_RSP)メッセージと、HNによる完了を示す完了(COMP)メッセージとを送信する。示された例において、これらのメッセージは、それぞれ、ホームノードHNF0およびHNF1から送信されるDBID_COMP0およびDBID_COMP1として組み合わされる。
RN-Iは、DBID_RSPメッセージに応答してHNに書き込まれるデータを送信し、COMPメッセージに応答して第1の完了肯定応答(COMP_ACK)メッセージを送信する。これらの応答は、WR_DATA_ACK0およびWR_DATA_ACK1として組み合わされる。本開示の態様によれば、第1のCOMP_ACKメッセージは、データストリームのすべてのより古い書き込み要求に関するCOMPメッセージがRN-Iによって受信されるまでRN-Iによって送信されない。
それぞれの第1のCOMP_ACKメッセージに応答して、HNは、書き込まれるデータを目標デバイスに送信する。特に、HNF0は、WR_DATA_ACK0がRN-Iから受信された後、メッセージCOMP_DATA0(UD)で目標デバイスにデータを送信し、HNF1は、WR_DATA_ACK1がRN-Iから受信された後、メッセージCOMP_DATA1(UD)で目標デバイスにデータを送信する。データを受信することに応じて、目標デバイスは、第2のCOMP_ACKメッセージを対応するHNに(COMP_ACK0をHNF0におよびCOMP_ACK1をHNF1に)送信する。
RN-IがHNからCOMP_DBIDメッセージを受信するとき、RN-Iは、ソースデバイス(示された例においてはPCIeマスタ)に確認メッセージBRESP0またはBRESP1を送り返す。
各HNは、受信された各書き込み要求に応答してコヒーレンスプロトコルに従って目標デバイスにスヌープメッセージ(snpUniqStash0またはsnpUniqStash1)を送信し、目標デバイスからスヌープ応答(SNP_RSP0またはSNP_RSP1)を受信する。書き込まれるデータは、スヌープメッセージに対する応答がHNによって受信されるまでHNから目標デバイスに送信されない。上述のように、RN-Iは、インターコネクトにおけるデッドロックを検出し、デッドロックを終わらせるためにWR_CANCELメッセージを送信する可能性がある。
下の表1は、上で開示されたメカニズムに関する試験結果を示す。試験においては、同じ書き込みアドレスグループ(たとえば、同じAWID)に関する書き込みスタッシュが、1つの要求ノード(RN-I)または複数(3つ)の要求ノードにおいて投入された。書き込みは、複数(4つ)のホームノードにストライピングされ、スタッシュ目標は、3つのCPUに分散されたか、単一のCPUであったか、またはCPUでなかった。測定が、2GHzで実行される32B RN-I DATA Interfaceに関して行われた。表は、現在のフローメカニズムと開示されるフローメカニズムとの帯域幅の比較を示す。
Figure 2021522611
当業者は、本開示が例示的な実施形態の観点で説明されたことを認めるであろう。本開示は、説明され、特許請求された実施形態と均等な専用ハードウェアおよび/または専用プロセッサなどのハードウェア構成要素の均等物を使用して実装される可能性がある。同様に、多目的コンピュータ、マイクロプロセッサに基づくコンピュータ、マイクロコントローラ、光コンピュータ、アナログコンピュータ、専用プロセッサ、および/または専用ハードワイヤードロジックが、本開示の代替的な均等な実施形態を構築するために使用される可能性がある。
本明細書において説明された様々な実施形態は、任意の好適な電子的なストレージ媒体に記憶されるかまたは任意の好適な電子的な通信媒体上で送信されることが可能である、流れ図の形態で大まかに説明されているプログラミング命令を実行する専用ハードウェア、構成可能なハードウェア、またはプログラミングされたプロセッサを使用して実装される。これらの要素の組合せが、使用される可能性がある。当業者は、上述のプロセスおよびメカニズムが本開示を逸脱することなく任意の数の変更形態で実装され得ることを理解するであろう。たとえば、本開示を逸脱することなく、実行される特定の動作の順序は多くの場合変更されることが可能であり、追加的な動作が追加されることが可能であり、または動作が削除されることが可能である。そのような変更形態は、想定されており、均等であるとみなされる。
本開示の実施形態は、データ処理ネットワーク内でデータ処理ネットワークの要求ノードに結合されるソースデバイスから目標デバイスに順序付けられたデータを転送するための方法を実装する。方法は、要求ノードによってソースデバイスから第1の書き込み要求を受信するステップであって、第1の書き込み要求が、目標デバイスを対象とし、ストリーム識別子に関連付けられる、ステップと、要求ノードによってデータ処理ネットワークのホームノードに第2の書き込み要求を送信するステップと、第2の書き込み要求に応答してホームノードによって要求ノードに、書き込まれるデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよびホームノードによる完了を示す完了メッセージを送信するステップと、書き込みデータバッファクレジットメッセージに応答して要求ノードによってホームノードに書き込まれるデータを送信するステップと、完了メッセージに応答して要求ノードによってホームノードに第1の完了肯定応答メッセージを送信するステップと、第1の完了肯定応答メッセージに応答してホームノードによって目標デバイスに書き込まれるデータを送信するステップと、書き込まれるデータを受信することに応じて目標デバイスによってホームノードに第2の完了肯定応答メッセージを送信するステップとを含み、第1の書き込み要求よりも古く、第1の書き込み要求と同じストリーム識別子を有するすべての書き込み要求に関する完了メッセージ要求ノードによって受信されるまで第1の完了肯定応答メッセージが要求ノードによって送信されない。
第2の書き込み要求、要求ノードが1組の順序付けられたデータの一部である書き込まれるデータを送信することと、観測順が要求ノードからの完了肯定応答メッセージの放出によって制御されるべきであることとをホームノードに示す可能性がある
ホームノードがいかなる目標デバイスも書き込まれるデータの古いコピーを持たないと判定するとき、ホームノードから要求ノードに送信される書き込みデータバッファクレジットメッセージおよび完了メッセージが、1つのメッセージとして組み合わされる可能性がある
一実施形態において、要求ノードがすべてのより古い書き込みがホームノードから完了メッセージを受信したと判定するとき、要求ノードからホームノードに送信される完了肯定応答メッセージおよび書き込まれるデータが、1つのメッセージとして組み合わされる。
方法は、ホームノードによって目標デバイスにコヒーレンスプロトコルに従ってスヌープメッセージを送信するステップと、目標デバイスによってホームノードにスヌープメッセージに対する応答を送信するステップとを含む可能性があり、書き込まれるデータ、スヌープメッセージに対する応答がホームノードによって受信されるまでホームノードから目標デバイスに送信されない。
第1の書き込み要求、スタッシュ要求を含む可能性があり、書き込まれるデータ、目標デバイスにユニーク-ダーティコヒーレンス状態で記憶される可能性がある
一実施形態において、方法は、データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを要求ノードによって検出するステップと、要求ノードによってホームノードに第1の書き込み要求をキャンセルするためのメッセージを送信するステップと、第1の書き込み要求をキャンセルするためのメッセージに応答してホームノードによって、書き込まれるデータのアドレスに関連するデータの最新のコピーを取り出すためにメモリコントローラにスヌープ要求を送信するステップと、書き込まれるデータのアドレスに関連するデータの最新のコピーをメモリコントローラからホームノードによって受信するステップとをさらに含み、書き込まれるデータの代わりに、書き込まれるデータのアドレスに関連するデータの最新のコピーが、目標デバイスに送信される。
ソースデバイス、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットを含む可能性がある
方法は、ホームノードが第2の完了肯定応答メッセージに応答してデータバッファを解放するステップをさらに含む可能性がある
さらなる実施形態は、データ処理ネットワーク内で要求ノードから目標ノードにデータストリームの順序付けられたデータを転送するための方法を実装する。方法は、要求ノードによってデータ処理ネットワークの1つまたは複数のホームノードに複数の第1の書き込み要求を送信するステップと、複数の書き込み要求のそれぞれの第1の書き込み要求に関して、1つまたは複数のHome Node'sのうち、第1の書き込み要求が送信されたホームノードによって、第1の書き込み要求に関連するデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよびホームノードによる完了を示す完了メッセージを送信するステップと、書き込みデータバッファクレジットメッセージに応答して要求ノードによってホームノードに書き込まれるデータを送信するステップと、完了メッセージに応答して要求ノードによってホームノードに第1の完了肯定応答メッセージを送信するステップと、第1の完了肯定応答メッセージに応答してホームノードによって目標デバイスに書き込まれるデータを送信するステップと、書き込まれるデータを受信することに応じて目標デバイスによってホームノードに第2の完了肯定応答メッセージを送信するステップとを含み、データストリームのすべてのより古い書き込み要求に関する完了メッセージが要求ノードによって受信されるまで第1の完了肯定応答メッセージ要求ノードによって送信されない。
ホームノードから要求ノードに送信される書き込みデータバッファクレジットメッセージおよび完了メッセージ、それぞれの第1の書き込み要求に関して1つのメッセージとして組み合わされる可能性がある
要求ノードからホームノードに送信される完了肯定応答メッセージおよび書き込まれるデータ、それぞれの第1の書き込み要求に関して1つのメッセージとして組み合わされる可能性がある
方法は、1つまたは複数のHome Node'sのうち、第1の書き込み要求が送信されたホームノードによって、コヒーレンスプロトコルに従って目標デバイスにスヌープメッセージを送信するステップと、目標デバイスによってホームノードにスヌープメッセージに対する応答を送信するステップとをさらに含む可能性があり、第1の書き込み要求に関連するデータ、スヌープメッセージに対する応答がホームノードによって受信されるまでホームノードから目標デバイスに送信されない。
複数の第1の書き込み要求、スタッシュ要求を含む可能性があり、第1の要求に関連するデータ、目標デバイスにユニーク-ダーティ(UD)コヒーレンス状態で記憶される可能性がある
方法は、データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを要求ノードによって検出するステップと、要求ノードによって1つまたは複数のHome Node'sのうちのホームノードに複数の書き込み要求のうちの第1の書き込み要求をキャンセルするためのメッセージを送信するステップと、第1の書き込み要求をキャンセルするためのメッセージに応答してホームノードによって、書き込まれるデータのアドレスに関連するデータの最新のコピーを取り出すためにメモリコントローラにスヌープ要求を送信するステップと、キャンセルされた第1の書き込み要求のデータのアドレスに関連するデータの最新のコピーをメモリコントローラからホームノードによって受信するステップとをさらに含む可能性があり、第1の書き込み要求に関連するデータの代わりに、キャンセルされた第1の書き込み要求のデータの最新のコピーが、目標デバイスに送信される。
データストリームの順序付けられたデータ、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットから要求ノードにおいて受信される可能性がある
さらなる実施形態は、目標デバイス、目標デバイスに書き込まれるデータに関してソースデバイスから第1の書き込み要求を受信するように構成された要求ノードであって、データが、順序付けられたデータストリームに関連する、要求ノード、データ処理ネットワークのためのコヒーレンシの地点(point of coherency)を提供するホームノードであって、インターコネクトを介して目標デバイスおよび要求ノードに結合される、ホームノードを含み、要求ノードが、ソースデバイスからの第1の書き込み要求に応答してホームノードに第2の書き込み要求を送信すること、第2の書き込み要求に応答してホームノードから、書き込まれるデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよびホームノードによる完了を示す完了メッセージを受信すること、書き込みデータバッファクレジットメッセージに応答してホームノードに書き込まれるデータを送信すること、ならびに完了メッセージに応答してホームノードに第1の完了肯定応答メッセージを送信することであって、第1の完了肯定応答メッセージが、第1の書き込み要求よりも古く、第1の書き込み要求と同じデータストリーム識別子に関連付けられるすべての書き込み要求に関する完了メッセージが要求ノードによって受信されるまで送信されない、送信することを行うように構成され、ホームノードが、第1の完了肯定応答メッセージに応答して目標デバイスに書き込まれるデータを送信するように構成され、目標デバイスが、書き込まれるデータを受信することに応じてホームノードに第2の完了肯定応答メッセージを送信するように構成される、データ処理ネットワークを提供する
ホームノードから要求ノードに送信される書き込みデータバッファクレジットメッセージおよび完了メッセージ、1つのメッセージとして組み合わされる可能性がある
要求ノードからホームノードに送信される完了肯定応答メッセージおよび書き込まれるデータ、1つのメッセージとして組み合わされる可能性がある
一実施形態において、ホームノード、コヒーレンスプロトコルに従って目標デバイスにスヌープメッセージを送信するように構成され、目標デバイスは、スヌープメッセージに対する応答をホームノードに送り返すように構成され、書き込まれるデータが、スヌープメッセージに対する応答がホームノードによって受信されるまでホームノードから目標デバイスに送信されない。
一実施形態において、第2の書き込み要求、スタッシュ要求であり、書き込まれるデータ、目標デバイスのキャッシュにユニーク-ダーティコヒーレンス状態で記憶される。
一実施形態において、要求ノード、データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを検出し、第1の書き込み要求をキャンセルするためのメッセージをホームノードに送信するようにさらに構成され、ホームノード、第1の書き込み要求をキャンセルするためのメッセージに応答して、書き込まれるデータのアドレスに関連するデータの最新のコピーを取り出すためにデータ処理ネットワークのメモリコントローラにスヌープ要求を送信し、書き込まれるデータのアドレスに関連するデータの最新のコピーをメモリコントローラから受信し、書き込まれるデータの代わりに、書き込まれるデータのアドレスに関連するデータの最新のコピーを目標デバイスに送信するようにさらに構成される。
ソースデバイス、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットである可能性がある
データ処理ネットワークは、単一のチップ上に形成される可能性がある
さらなる実施形態は、データ処理ネットワークを記述するハードウェア記述言語の命令を記憶する非一時的コンピュータ可読媒体を提供する
さらなる実施形態は、データ処理ネットワークの構成要素および接続性のネットリストを記憶する非一時的コンピュータ可読媒体を提供する
本明細書において詳細に説明された様々な代表的な実施形態は、限定ではなく例として提示された。開示された本開示の範囲内に留まる均等な実施形態をもたらす、説明された実施形態の形態および詳細に様々な変更が行われる可能性があることは、当業者に理解されるであろう。
100 データ処理システム
102 処理コアクラスタ
104 インターコネクト
106a RN-I
106b RN-I
108 ネットワーク
112 I/Oデバイス
114 メモリまたはストレージデバイス
116 メモリコントローラ
118 ホームノード(HN)
200 データ処理システム
202 PCIeエンドポイント
204 PCIeルートコンプレックス
208 インターコネクト
210a キャッシュ
210b キャッシュ
212a 処理クラスタ、要求ノード
212b 処理クラスタ、要求ノード
214 インターフェース
216 トランザクション層
218 データリンク層
220 物理層
222 レーン
222a レーン
224 インターフェース
226a ホームノード
226b ホームノード
402 タイムライン
404 タイムライン
406 タイムライン
502 タイムライン
504 タイムライン
506 タイムライン
602 タイムライン
604 タイムライン
606 タイムライン
608 タイムライン

Claims (25)

  1. データ処理ネットワーク内で、前記データ処理ネットワークの要求ノードに結合されるソースデバイスから目標デバイスに順序付けられたデータを転送するための方法であって、
    前記要求ノードによって前記ソースデバイスから第1の書き込み要求を受信するステップであって、前記第1の書き込み要求が、前記目標デバイスを対象とし、ストリーム識別子に関連付けられる、ステップと、
    前記要求ノードによって前記データ処理ネットワークのホームノードに第2の書き込み要求を送信するステップと、
    前記第2の書き込み要求に応答して前記ホームノードによって前記要求ノードに、書き込まれるデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよび前記ホームノードによる完了を示す完了メッセージを送信するステップと、
    前記書き込みデータバッファクレジットメッセージに応答して前記要求ノードによって前記ホームノードに書き込まれる前記データを送信するステップと、
    前記完了メッセージに応答して前記要求ノードによって前記ホームノードに第1の完了肯定応答メッセージを送信するステップと、
    前記第1の完了肯定応答メッセージに応答して前記ホームノードによって前記目標デバイスに書き込まれる前記データを送信するステップと、
    書き込まれる前記データを受信することに応じて前記目標デバイスによって前記ホームノードに第2の完了肯定応答メッセージを送信するステップとを含み、
    前記第1の書き込み要求よりも古く、前記第1の書き込み要求と同じストリーム識別子を有するすべての書き込み要求に関する完了メッセージが前記要求ノードによって受信されるまで前記第1の完了肯定応答メッセージが前記要求ノードによって送信されない、方法。
  2. 前記第2の書き込み要求が、前記要求ノードが1組の順序付けられたデータの一部である書き込まれる前記データを送信することと、観測順が前記要求ノードからの完了肯定応答メッセージの放出によって制御されるべきであることとを前記ホームノードに示す請求項1に記載の方法。
  3. 前記ホームノードがいかなる目標ノードも書き込まれる前記データの古いコピーを持たないと判定するとき、前記ホームノードから前記要求ノードに送信される前記書き込みデータバッファクレジットメッセージおよび前記完了メッセージが、1つのメッセージとして組み合わされる請求項1または請求項2に記載の方法。
  4. 前記要求ノードがすべてのより古い書き込みが前記ホームノードから完了メッセージを受信したと判定するとき、前記要求ノードから前記ホームノードに送信される前記完了肯定応答メッセージおよび書き込まれる前記データが、1つのメッセージとして組み合わされる請求項1から3のいずれか一項に記載の方法。
  5. 前記ホームノードによって前記目標デバイスにコヒーレンスプロトコルに従ってスヌープメッセージを送信するステップと、
    前記目標デバイスによって前記ホームノードに前記スヌープメッセージに対する応答を送信するステップとをさらに含み、
    書き込まれる前記データが、前記スヌープメッセージに対する前記応答が前記ホームノードによって受信されるまで前記ホームノードから前記目標デバイスに送信されない請求項1から4のいずれか一項に記載の方法。
  6. 前記第1の書き込み要求が、スタッシュ要求を含み、書き込まれる前記データが、前記目標デバイスにユニーク-ダーティコヒーレンス状態で記憶される請求項1から5のいずれか一項に記載の方法。
  7. 前記データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを前記要求ノードによって検出するステップと、
    前記要求ノードによって前記ホームノードに前記第1の書き込み要求をキャンセルするためのメッセージを送信するステップと、
    前記第1の書き込み要求をキャンセルするための前記メッセージに応答して前記ホームノードによって、書き込まれる前記データのアドレスに関連する前記データの最新のコピーを取り出すためにメモリコントローラにスヌープ要求を送信するステップと、
    書き込まれる前記データの前記アドレスに関連する前記データの前記最新のコピーを前記メモリコントローラから前記ホームノードによって受信するステップとをさらに含み、
    書き込まれる前記データの代わりに、書き込まれる前記データのアドレスに関連する前記データの前記最新のコピーが、前記目標デバイスに送信される請求項1から6のいずれか一項に記載の方法。
  8. 前記ソースデバイスが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットを含む請求項1から7のいずれか一項に記載の方法。
  9. 前記ホームノードが前記第2の完了肯定応答メッセージに応答して前記データバッファを解放するステップをさらに含む請求項1から8のいずれか一項に記載の方法。
  10. データ処理ネットワーク内で要求ノードから目標ノードにデータストリームの順序付けられたデータを転送するための方法であって、
    前記要求ノードによって前記データ処理ネットワークの1つまたは複数のホームノード(Home Node's)に複数の第1の書き込み要求を送信するステップと、
    前記複数の書き込み要求のそれぞれの第1の書き込み要求に関して、
    前記1つまたは複数のHome Node'sのうち、前記第1の書き込み要求が送信されたホームノードによって、前記第1の書き込み要求に関連するデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよび前記ホームノードによる完了を示す完了メッセージを送信するステップと、
    前記書き込みデータバッファクレジットメッセージに応答して前記要求ノードによって前記ホームノードに書き込まれるデータを送信するステップと、
    前記完了メッセージに応答して前記要求ノードによって前記ホームノードに第1の完了肯定応答(completion acknowledgement)メッセージを送信するステップと、
    前記第1の完了肯定応答メッセージに応答して前記ホームノードによって目標デバイスに書き込まれる前記データを送信するステップと、
    書き込まれる前記データを受信することに応じて前記目標デバイスによって前記ホームノードに第2の完了肯定応答メッセージを送信するステップとを含み、
    前記データストリームのすべてのより古い書き込み要求に関する完了メッセージが前記要求ノードによって受信されるまで前記第1の完了肯定応答メッセージが前記要求ノードによって送信されない、方法。
  11. 前記ホームノードから前記要求ノードに送信される前記書き込みデータバッファクレジットメッセージおよび前記完了メッセージが、それぞれの第1の書き込み要求に関して1つのメッセージとして組み合わされる請求項10に記載の方法。
  12. 前記要求ノードから前記ホームノードに送信される前記完了肯定応答メッセージおよび書き込まれる前記データが、それぞれの第1の書き込み要求に関して1つのメッセージとして組み合わされる請求項10または請求項11に記載の方法。
  13. 前記1つまたは複数のHome Node'sのうち、前記第1の書き込み要求が送信された前記ホームノードによって、コヒーレンスプロトコルに従って前記目標デバイスにスヌープメッセージを送信するステップと、
    前記目標デバイスによって前記ホームノードに前記スヌープメッセージに対する応答を送信するステップとをさらに含み、
    前記第1の書き込み要求に関連するデータが、前記スヌープメッセージに対する前記応答が前記ホームノードによって受信されるまで前記ホームノードから前記目標デバイスに送信されない請求項10から12のいずれか一項に記載の方法。
  14. 前記複数の第1の書き込み要求が、スタッシュ要求を含み、前記第1の要求に関連する前記データが、前記目標デバイスにユニーク-ダーティコヒーレンス状態で記憶される請求項10から13のいずれか一項に記載の方法。
  15. 前記データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを前記要求ノードによって検出するステップと、
    前記要求ノードによって前記1つまたは複数のHome Node'sのうちのホームノードに前記複数の書き込み要求のうちの第1の書き込み要求をキャンセルするためのメッセージを送信するステップと、
    前記第1の書き込み要求をキャンセルするための前記メッセージに応答して前記ホームノードによって、書き込まれるデータのアドレスに関連する前記データの最新のコピーを取り出すためにメモリコントローラにスヌープ要求を送信するステップと、
    キャンセルされた第1の書き込み要求の前記データの前記アドレスに関連する前記データの前記最新のコピーを前記メモリコントローラから前記ホームノードによって受信するステップとをさらに含み、
    前記第1の書き込み要求に関連する前記データの代わりに、前記キャンセルされた第1の書き込み要求の前記データの前記最新のコピーが、前記目標デバイスに送信される請求項10から14のいずれか一項に記載の方法。
  16. 前記データストリームの前記順序付けられたデータが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットから前記要求ノードにおいて受信される請求項10から15のいずれか一項に記載の方法。
  17. 目標ノード、
    前記目標ノードに書き込まれるデータに関してソースデバイスから第1の書き込み要求を受信するように構成された要求ノードであって、前記データが、順序付けられたデータストリームに関連する、要求ノード、
    データ処理ネットワークのためのコヒーレンシの地点を提供するホームノードであって、インターコネクトを介して前記目標ノードおよび前記要求ノードに結合される、ホームノードを含み、
    前記要求ノードが、
    前記ソースデバイスからの前記第1の書き込み要求に応答して前記ホームノードに第2の書き込み要求を送信すること、
    前記第2の書き込み要求に応答して前記ホームノードから、書き込まれる前記データを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよび前記ホームノードによる完了を示す完了メッセージを受信すること、
    前記書き込みデータバッファクレジットメッセージに応答して前記ホームノードに書き込まれる前記データを送信すること、ならびに
    前記完了メッセージに応答して前記ホームノードに第1の完了肯定応答メッセージを送信することであって、前記第1の完了肯定応答メッセージが、前記第1の書き込み要求よりも古く、前記第1の書き込み要求と同じデータストリーム識別子に関連付けられるすべての書き込み要求に関する完了メッセージが前記要求ノードによって受信されるまで送信されない、送信することを行うように構成され、
    前記ホームノードが、前記第1の完了肯定応答メッセージに応答して目標デバイスに書き込まれる前記データを送信するように構成され、
    前記目標デバイスが、書き込まれる前記データを受信することに応じて前記ホームノードに第2の完了肯定応答メッセージを送信するように構成される、データ処理ネットワーク。
  18. 前記ホームノードから前記要求ノードに送信される前記書き込みデータバッファクレジットメッセージおよび前記完了メッセージが、1つのメッセージとして組み合わされる請求項17に記載のデータ処理ネットワーク。
  19. 前記要求ノードから前記ホームノードに送信される前記完了肯定応答メッセージおよび書き込まれる前記データが、1つのメッセージとして組み合わされる請求項17または請求項18に記載のデータ処理ネットワーク。
  20. 前記ホームノードが、コヒーレンスプロトコルに従って前記目標ノードにスヌープメッセージを送信するように構成され、
    前記目標ノードが、前記スヌープメッセージに対する応答を前記ホームノードに送り返すように構成され、
    書き込まれる前記データが、前記スヌープメッセージに対する前記応答が前記ホームノードによって受信されるまで前記ホームノードから前記目標デバイスに送信されない請求項17から19のいずれか一項に記載のデータ処理ネットワーク。
  21. 前記第2の書き込み要求が、スタッシュ要求を含み、書き込まれる前記データが、前記目標ノードのキャッシュにユニーク-ダーティコヒーレンス状態で記憶される請求項17から20のいずれか一項に記載のデータ処理ネットワーク。
  22. 前記要求ノードが、前記データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを検出し、前記第1の書き込み要求をキャンセルするためのメッセージを前記ホームノードに送信するようにさらに構成され、
    前記ホームノードが、前記第1の書き込み要求をキャンセルするための前記メッセージに応答して、
    書き込まれる前記データのアドレスに関連する前記データの最新のコピーを取り出すために前記データ処理ネットワークのメモリコントローラにスヌープ要求を送信し、
    書き込まれる前記データの前記アドレスに関連する前記データの前記最新のコピーを前記メモリコントローラから受信し、
    書き込まれる前記データの代わりに、書き込まれる前記データのアドレスに関連する前記データの前記最新のコピーを前記目標デバイスに送信するようにさらに構成される請求項17から21のいずれか一項に記載のデータ処理ネットワーク。
  23. 前記ソースデバイスが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットを含む請求項17から22のいずれか一項に記載のデータ処理ネットワーク。
  24. 請求項17から23のいずれか一項に記載のデータ処理ネットワークを記述するハードウェア記述言語の命令を含む非一時的コンピュータ可読媒体。
  25. 請求項17から23のいずれか一項に記載のデータ処理ネットワークの構成要素および接続性のネットリストを記憶する非一時的コンピュータ可読媒体。
JP2020561759A 2018-05-03 2019-05-02 I/oマスタとcpuとの間の最適化されたデータ共有を可能にするための順序付けられた書き込みスタッシュの高性能なストリーミング Active JP7378428B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862666246P 2018-05-03 2018-05-03
US62/666,246 2018-05-03
US16/027,490 US10452593B1 (en) 2018-05-03 2018-07-05 High-performance streaming of ordered write stashes to enable optimized data sharing between I/O masters and CPUs
US16/027,490 2018-07-05
PCT/GB2019/051216 WO2019211610A1 (en) 2018-05-03 2019-05-02 HIGH-PERFORMANCE STREAMING OF ORDERED WRITE STASHES TO ENABLE OPTIMIZED DATA SHARING BETWEEN I/O MASTERS AND CPUs

Publications (2)

Publication Number Publication Date
JP2021522611A true JP2021522611A (ja) 2021-08-30
JP7378428B2 JP7378428B2 (ja) 2023-11-13

Family

ID=68241794

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020561759A Active JP7378428B2 (ja) 2018-05-03 2019-05-02 I/oマスタとcpuとの間の最適化されたデータ共有を可能にするための順序付けられた書き込みスタッシュの高性能なストリーミング

Country Status (6)

Country Link
US (1) US10452593B1 (ja)
EP (2) EP4261695A3 (ja)
JP (1) JP7378428B2 (ja)
KR (1) KR20210005193A (ja)
CN (1) CN112106032B (ja)
WO (1) WO2019211610A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GR20180100189A (el) 2018-05-03 2020-01-22 Arm Limited Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming
US11113194B2 (en) * 2019-09-04 2021-09-07 Xilinx, Inc. Producer-to-consumer active direct cache transfers
US11256646B2 (en) * 2019-11-15 2022-02-22 Arm Limited Apparatus and method for handling ordered transactions
US20210240655A1 (en) * 2020-11-16 2021-08-05 Intel Corporation Source ordering in device interconnects
US11314645B1 (en) * 2020-12-16 2022-04-26 Arm Limited Cache stash relay
US12001722B2 (en) * 2022-08-18 2024-06-04 Arm Limited Technique for controlling stashing of data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008544366A (ja) * 2005-06-15 2008-12-04 フリースケール セミコンダクター インコーポレイテッド 柔軟な構成を有するキャッシュ、それを使用するデータ処理システム、およびそのための方法
JP2013037681A (ja) * 2011-08-08 2013-02-21 Arm Ltd 異なる複数の優先度レベルのトランザクション要求をサポートする集積回路内における処理リソース割振り
JP2013041581A (ja) * 2011-08-08 2013-02-28 Arm Ltd 同時保留中データアクセスリクエストのためのデータハザード処理
JP2013077287A (ja) * 2011-08-08 2013-04-25 Arm Ltd 発信元デバイスから受信デバイスに対して発行されるトランザクション要求のための動的リソース割り当て

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2345596C (en) * 2001-04-27 2007-12-04 Icron Systems Inc. Method and apparatus for extending the range of the universal serial bus protocol
US6658538B2 (en) * 2001-06-21 2003-12-02 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US7471675B2 (en) * 2002-07-12 2008-12-30 Intel Corporation Arrangements facilitating ordered transactions
JP2008501178A (ja) * 2004-05-28 2008-01-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ バス接続装置
US9047418B2 (en) * 2011-11-22 2015-06-02 Icron Technologies Corporation Methods and devices for extending USB 3.0-compliant communication
US9304924B2 (en) * 2012-08-17 2016-04-05 Futurewei Technologies, Inc. Cache coherent handshake protocol for in-order and out-of-order networks
US9195626B2 (en) * 2013-01-29 2015-11-24 Emulex Corporation Reducing write I/O latency using asynchronous Fibre Channel exchange
GR1008894B (el) * 2015-12-15 2016-11-14 Arm Limited Βελτιστοποιημενη συνεχης ροη σε μια μη διατεταγμενη διασυνδεση
US20180095906A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Hardware-based shared data coherency
CN107295080B (zh) * 2017-06-19 2020-12-18 北京百度网讯科技有限公司 应用于分布式服务器集群的数据存储方法和服务器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008544366A (ja) * 2005-06-15 2008-12-04 フリースケール セミコンダクター インコーポレイテッド 柔軟な構成を有するキャッシュ、それを使用するデータ処理システム、およびそのための方法
JP2013037681A (ja) * 2011-08-08 2013-02-21 Arm Ltd 異なる複数の優先度レベルのトランザクション要求をサポートする集積回路内における処理リソース割振り
JP2013041581A (ja) * 2011-08-08 2013-02-28 Arm Ltd 同時保留中データアクセスリクエストのためのデータハザード処理
JP2013077287A (ja) * 2011-08-08 2013-04-25 Arm Ltd 発信元デバイスから受信デバイスに対して発行されるトランザクション要求のための動的リソース割り当て

Also Published As

Publication number Publication date
EP4261695A2 (en) 2023-10-18
US10452593B1 (en) 2019-10-22
WO2019211610A1 (en) 2019-11-07
JP7378428B2 (ja) 2023-11-13
US20190340147A1 (en) 2019-11-07
KR20210005193A (ko) 2021-01-13
CN112106032B (zh) 2024-06-11
CN112106032A (zh) 2020-12-18
EP4261695A3 (en) 2023-11-29
EP3788495A1 (en) 2021-03-10
EP3788495B1 (en) 2023-09-06

Similar Documents

Publication Publication Date Title
JP7378428B2 (ja) I/oマスタとcpuとの間の最適化されたデータ共有を可能にするための順序付けられた書き込みスタッシュの高性能なストリーミング
JP7153441B2 (ja) データ処理
TW201539196A (zh) 用於處理多個交易之資料處理系統及方法
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
TWI662416B (zh) 系統晶片(SoC)結構中有效率的點對點通訊支援
US9304922B2 (en) Inter-queue anti-starvation mechanism with dynamic deadlock avoidance in a retry based pipeline
US20150254207A1 (en) Method and system for ordering i/o access in a multi-node environment
JP2003510686A (ja) デッドロックのないコンピュータシステム動作のためのバーチャルチャネルおよび対応するバッファ割当て
EP2087431B1 (en) System and method for reducing store latency in symmetrical multiprocessor systems
CN112074821B (zh) 在数据处理网络中执行读取事务的方法、装置和介质
US6714994B1 (en) Host bridge translating non-coherent packets from non-coherent link to coherent packets on conherent link and vice versa
JP2021522608A (ja) ストリーミングデータ転送のためのフロー圧縮を用いたデータ処理ネットワーク
JP4906226B2 (ja) マルチプロセッサコンピュータシステムにおいて、ポストされたリクエストのための別個のバーチャルチャネルを実現するためのシステムおよび方法
EP3788494B1 (en) Transfer protocol in a data processing network
US20090177821A1 (en) Cache Intervention on a Separate Data Bus When On-Chip Bus Has Separate Read and Write Data Busses
US20090006712A1 (en) Data ordering in a multi-node system
EP4022445B1 (en) An apparatus and method for handling ordered transactions
JP2023544538A (ja) キャッシュライン追い出しのためのマルチレベルキャッシュコヒーレンシプロトコル

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210105

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230911

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231031

R150 Certificate of patent or registration of utility model

Ref document number: 7378428

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150