(57)【要約】  要求ノードから目標ノードへの順序付けられたデータの効率的な転送のためのデータ処理ネットワークおよびその動作の方法が、提供される。要求ノードは、ホームノードに、書き込み要求を送信し、ホームノードは、リソースがホームノードに割り当てられたときに第1の書き込み要求に応答する。それから、要求ノードは、書き込まれるデータを送信する。また、ホームノードは、ホームノードにおいてコヒーレンシアクションが実行されたときに完了メッセージによって応答する。要求ノードは、順序付けられたデータの第1の書き込み要求よりも古いすべての書き込み要求に関して完了メッセージが受信されるまで送信されない完了肯定応答メッセージによって完了メッセージの受信に肯定応答し、それによって、データの順序を維持する。第1の書き込み要求に関する完了肯定応答の受信の後、ホームノードは、目標ノードに書き込まれるデータを送信する。
2021522611.tif 000002
【特許請求の範囲】
【請求項１】
データ処理ネットワーク内で、前記データ処理ネットワークの要求ノードに結合されるソースデバイスから目標デバイスに順序付けられたデータを転送するための方法であって、
前記要求ノードによって前記ソースデバイスから第1の書き込み要求を受信するステップであって、前記第1の書き込み要求が、前記目標デバイスを対象とし、ストリーム識別子に関連付けられる、ステップと、
前記要求ノードによって前記データ処理ネットワークのホームノードに第2の書き込み要求を送信するステップと、
前記第2の書き込み要求に応答して前記ホームノードによって前記要求ノードに、書き込まれるデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよび前記ホームノードによる完了を示す完了メッセージを送信するステップと、
前記書き込みデータバッファクレジットメッセージに応答して前記要求ノードによって前記ホームノードに書き込まれる前記データを送信するステップと、
前記完了メッセージに応答して前記要求ノードによって前記ホームノードに第1の完了肯定応答メッセージを送信するステップと、
前記第1の完了肯定応答メッセージに応答して前記ホームノードによって前記目標デバイスに書き込まれる前記データを送信するステップと、
書き込まれる前記データを受信することに応じて前記目標デバイスによって前記ホームノードに第2の完了肯定応答メッセージを送信するステップとを含み、
前記第1の書き込み要求よりも古く、前記第1の書き込み要求と同じストリーム識別子を有するすべての書き込み要求に関する完了メッセージが前記要求ノードによって受信されるまで前記第1の完了肯定応答メッセージが前記要求ノードによって送信されない、方法。
【請求項２】
前記第2の書き込み要求が、前記要求ノードが1組の順序付けられたデータの一部である書き込まれる前記データを送信することと、観測順が前記要求ノードからの完了肯定応答メッセージの放出によって制御されるべきであることとを前記ホームノードに示す請求項1に記載の方法。
【請求項３】
前記ホームノードがいかなる目標ノードも書き込まれる前記データの古いコピーを持たないと判定するとき、前記ホームノードから前記要求ノードに送信される前記書き込みデータバッファクレジットメッセージおよび前記完了メッセージが、1つのメッセージとして組み合わされる請求項1または請求項2に記載の方法。
【請求項４】
前記要求ノードがすべてのより古い書き込みが前記ホームノードから完了メッセージを受信したと判定するとき、前記要求ノードから前記ホームノードに送信される前記完了肯定応答メッセージおよび書き込まれる前記データが、1つのメッセージとして組み合わされる請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記ホームノードによって前記目標デバイスにコヒーレンスプロトコルに従ってスヌープメッセージを送信するステップと、
前記目標デバイスによって前記ホームノードに前記スヌープメッセージに対する応答を送信するステップとをさらに含み、
書き込まれる前記データが、前記スヌープメッセージに対する前記応答が前記ホームノードによって受信されるまで前記ホームノードから前記目標デバイスに送信されない請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記第1の書き込み要求が、スタッシュ要求を含み、書き込まれる前記データが、前記目標デバイスにユニーク-ダーティコヒーレンス状態で記憶される請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを前記要求ノードによって検出するステップと、
前記要求ノードによって前記ホームノードに前記第1の書き込み要求をキャンセルするためのメッセージを送信するステップと、
前記第1の書き込み要求をキャンセルするための前記メッセージに応答して前記ホームノードによって、書き込まれる前記データのアドレスに関連する前記データの最新のコピーを取り出すためにメモリコントローラにスヌープ要求を送信するステップと、
書き込まれる前記データの前記アドレスに関連する前記データの前記最新のコピーを前記メモリコントローラから前記ホームノードによって受信するステップとをさらに含み、
書き込まれる前記データの代わりに、書き込まれる前記データのアドレスに関連する前記データの前記最新のコピーが、前記目標デバイスに送信される請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記ソースデバイスが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットを含む請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記ホームノードが前記第2の完了肯定応答メッセージに応答して前記データバッファを解放するステップをさらに含む請求項1から8のいずれか一項に記載の方法。
【請求項１０】
データ処理ネットワーク内で要求ノードから目標ノードにデータストリームの順序付けられたデータを転送するための方法であって、
前記要求ノードによって前記データ処理ネットワークの1つまたは複数のホームノード(Home Node's)に複数の第1の書き込み要求を送信するステップと、
前記複数の書き込み要求のそれぞれの第1の書き込み要求に関して、
前記1つまたは複数のHome Node'sのうち、前記第1の書き込み要求が送信されたホームノードによって、前記第1の書き込み要求に関連するデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよび前記ホームノードによる完了を示す完了メッセージを送信するステップと、
前記書き込みデータバッファクレジットメッセージに応答して前記要求ノードによって前記ホームノードに書き込まれるデータを送信するステップと、
前記完了メッセージに応答して前記要求ノードによって前記ホームノードに第1の完了肯定応答(completion acknowledgement)メッセージを送信するステップと、
前記第1の完了肯定応答メッセージに応答して前記ホームノードによって目標デバイスに書き込まれる前記データを送信するステップと、
書き込まれる前記データを受信することに応じて前記目標デバイスによって前記ホームノードに第2の完了肯定応答メッセージを送信するステップとを含み、
前記データストリームのすべてのより古い書き込み要求に関する完了メッセージが前記要求ノードによって受信されるまで前記第1の完了肯定応答メッセージが前記要求ノードによって送信されない、方法。
【請求項１１】
前記ホームノードから前記要求ノードに送信される前記書き込みデータバッファクレジットメッセージおよび前記完了メッセージが、それぞれの第1の書き込み要求に関して1つのメッセージとして組み合わされる請求項10に記載の方法。
【請求項１２】
前記要求ノードから前記ホームノードに送信される前記完了肯定応答メッセージおよび書き込まれる前記データが、それぞれの第1の書き込み要求に関して1つのメッセージとして組み合わされる請求項10または請求項11に記載の方法。
【請求項１３】
前記1つまたは複数のHome Node'sのうち、前記第1の書き込み要求が送信された前記ホームノードによって、コヒーレンスプロトコルに従って前記目標デバイスにスヌープメッセージを送信するステップと、
前記目標デバイスによって前記ホームノードに前記スヌープメッセージに対する応答を送信するステップとをさらに含み、
前記第1の書き込み要求に関連するデータが、前記スヌープメッセージに対する前記応答が前記ホームノードによって受信されるまで前記ホームノードから前記目標デバイスに送信されない請求項10から12のいずれか一項に記載の方法。
【請求項１４】
前記複数の第1の書き込み要求が、スタッシュ要求を含み、前記第1の要求に関連する前記データが、前記目標デバイスにユニーク-ダーティコヒーレンス状態で記憶される請求項10から13のいずれか一項に記載の方法。
【請求項１５】
前記データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを前記要求ノードによって検出するステップと、
前記要求ノードによって前記1つまたは複数のHome Node'sのうちのホームノードに前記複数の書き込み要求のうちの第1の書き込み要求をキャンセルするためのメッセージを送信するステップと、
前記第1の書き込み要求をキャンセルするための前記メッセージに応答して前記ホームノードによって、書き込まれるデータのアドレスに関連する前記データの最新のコピーを取り出すためにメモリコントローラにスヌープ要求を送信するステップと、
キャンセルされた第1の書き込み要求の前記データの前記アドレスに関連する前記データの前記最新のコピーを前記メモリコントローラから前記ホームノードによって受信するステップとをさらに含み、
前記第1の書き込み要求に関連する前記データの代わりに、前記キャンセルされた第1の書き込み要求の前記データの前記最新のコピーが、前記目標デバイスに送信される請求項10から14のいずれか一項に記載の方法。
【請求項１６】
前記データストリームの前記順序付けられたデータが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットから前記要求ノードにおいて受信される請求項10から15のいずれか一項に記載の方法。
【請求項１７】
目標ノード、
前記目標ノードに書き込まれるデータに関してソースデバイスから第1の書き込み要求を受信するように構成された要求ノードであって、前記データが、順序付けられたデータストリームに関連する、要求ノード、
データ処理ネットワークのためのコヒーレンシの地点を提供するホームノードであって、インターコネクトを介して前記目標ノードおよび前記要求ノードに結合される、ホームノードを含み、
前記要求ノードが、
前記ソースデバイスからの前記第1の書き込み要求に応答して前記ホームノードに第2の書き込み要求を送信すること、
前記第2の書き込み要求に応答して前記ホームノードから、書き込まれる前記データを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよび前記ホームノードによる完了を示す完了メッセージを受信すること、
前記書き込みデータバッファクレジットメッセージに応答して前記ホームノードに書き込まれる前記データを送信すること、ならびに
前記完了メッセージに応答して前記ホームノードに第1の完了肯定応答メッセージを送信することであって、前記第1の完了肯定応答メッセージが、前記第1の書き込み要求よりも古く、前記第1の書き込み要求と同じデータストリーム識別子に関連付けられるすべての書き込み要求に関する完了メッセージが前記要求ノードによって受信されるまで送信されない、送信することを行うように構成され、
前記ホームノードが、前記第1の完了肯定応答メッセージに応答して目標デバイスに書き込まれる前記データを送信するように構成され、
前記目標デバイスが、書き込まれる前記データを受信することに応じて前記ホームノードに第2の完了肯定応答メッセージを送信するように構成される、データ処理ネットワーク。
【請求項１８】
前記ホームノードから前記要求ノードに送信される前記書き込みデータバッファクレジットメッセージおよび前記完了メッセージが、1つのメッセージとして組み合わされる請求項17に記載のデータ処理ネットワーク。
【請求項１９】
前記要求ノードから前記ホームノードに送信される前記完了肯定応答メッセージおよび書き込まれる前記データが、1つのメッセージとして組み合わされる請求項17または請求項18に記載のデータ処理ネットワーク。
【請求項２０】
前記ホームノードが、コヒーレンスプロトコルに従って前記目標ノードにスヌープメッセージを送信するように構成され、
前記目標ノードが、前記スヌープメッセージに対する応答を前記ホームノードに送り返すように構成され、
書き込まれる前記データが、前記スヌープメッセージに対する前記応答が前記ホームノードによって受信されるまで前記ホームノードから前記目標デバイスに送信されない請求項17から19のいずれか一項に記載のデータ処理ネットワーク。
【請求項２１】
前記第2の書き込み要求が、スタッシュ要求を含み、書き込まれる前記データが、前記目標ノードのキャッシュにユニーク-ダーティコヒーレンス状態で記憶される請求項17から20のいずれか一項に記載のデータ処理ネットワーク。
【請求項２２】
前記要求ノードが、前記データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを検出し、前記第1の書き込み要求をキャンセルするためのメッセージを前記ホームノードに送信するようにさらに構成され、
前記ホームノードが、前記第1の書き込み要求をキャンセルするための前記メッセージに応答して、
書き込まれる前記データのアドレスに関連する前記データの最新のコピーを取り出すために前記データ処理ネットワークのメモリコントローラにスヌープ要求を送信し、
書き込まれる前記データの前記アドレスに関連する前記データの前記最新のコピーを前記メモリコントローラから受信し、
書き込まれる前記データの代わりに、書き込まれる前記データのアドレスに関連する前記データの前記最新のコピーを前記目標デバイスに送信するようにさらに構成される請求項17から21のいずれか一項に記載のデータ処理ネットワーク。
【請求項２３】
前記ソースデバイスが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットを含む請求項17から22のいずれか一項に記載のデータ処理ネットワーク。
【請求項２４】
請求項17から23のいずれか一項に記載のデータ処理ネットワークを記述するハードウェア記述言語の命令を含む非一時的コンピュータ可読媒体。
【請求項２５】
請求項17から23のいずれか一項に記載のデータ処理ネットワークの構成要素および接続性のネットリストを記憶する非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、Ｉ／ＯマスタとＣＰＵとの間の最適化されたデータ共有を可能にするための順序付けられた書き込みスタッシュの高性能なストリーミングに関する。
【背景技術】
【０００２】
データ処理システムにおいて、データは、入力/出力(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に関して行われた。表は、現在のフローメカニズムと開示されるフローメカニズムとの帯域幅の比較を示す。
【００４４】
【表１】
2021522611.tif 000003
【００４５】
当業者は、本開示が例示的な実施形態の観点で説明されたことを認めるであろう。本開示は、説明され、特許請求された実施形態と均等な専用ハードウェアおよび/または専用プロセッサなどのハードウェア構成要素の均等物を使用して実装される可能性がある。同様に、多目的コンピュータ、マイクロプロセッサに基づくコンピュータ、マイクロコントローラ、光コンピュータ、アナログコンピュータ、専用プロセッサ、および/または専用ハードワイヤードロジックが、本開示の代替的な均等な実施形態を構築するために使用される可能性がある。
【００４６】
本明細書において説明された様々な実施形態は、任意の好適な電子的なストレージ媒体に記憶されるかまたは任意の好適な電子的な通信媒体上で送信されることが可能である、流れ図の形態で大まかに説明されているプログラミング命令を実行する専用ハードウェア、構成可能なハードウェア、またはプログラミングされたプロセッサを使用して実装される。これらの要素の組合せが、使用される可能性がある。当業者は、上述のプロセスおよびメカニズムが本開示を逸脱することなく任意の数の変更形態で実装され得ることを理解するであろう。たとえば、本開示を逸脱することなく、実行される特定の動作の順序は多くの場合変更されることが可能であり、追加的な動作が追加されることが可能であり、または動作が削除されることが可能である。そのような変更形態は、想定されており、均等であるとみなされる。
【００４７】
したがって、開示される実施形態の一部の態様および特徴が、以下の付番された項目に示される。
【００４８】
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  タイムライン
【図１】
2021522611.tif 000004
【図２】
2021522611.tif 000005
【図３】
2021522611.tif 000006
【図４】
2021522611.tif 000007
【図５】
2021522611.tif 000008
【図６】
2021522611.tif 000009
【図７】
2021522611.tif 000010
【手続補正書】
【提出日】令和3年1月5日(2021.1.5)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、Ｉ／ＯマスタとＣＰＵとの間の最適化されたデータ共有を可能にするための順序付けられた書き込みスタッシュの高性能なストリーミングに関する。
【背景技術】
【０００２】
データ処理システムにおいて、データは、入力/出力(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に関して行われた。表は、現在のフローメカニズムと開示されるフローメカニズムとの帯域幅の比較を示す。
【００４４】
【表１】
2021522611.tif 000011
【００４５】
当業者は、本開示が例示的な実施形態の観点で説明されたことを認めるであろう。本開示は、説明され、特許請求された実施形態と均等な専用ハードウェアおよび/または専用プロセッサなどのハードウェア構成要素の均等物を使用して実装される可能性がある。同様に、多目的コンピュータ、マイクロプロセッサに基づくコンピュータ、マイクロコントローラ、光コンピュータ、アナログコンピュータ、専用プロセッサ、および/または専用ハードワイヤードロジックが、本開示の代替的な均等な実施形態を構築するために使用される可能性がある。
【００４６】
本明細書において説明された様々な実施形態は、任意の好適な電子的なストレージ媒体に記憶されるかまたは任意の好適な電子的な通信媒体上で送信されることが可能である、流れ図の形態で大まかに説明されているプログラミング命令を実行する専用ハードウェア、構成可能なハードウェア、またはプログラミングされたプロセッサを使用して実装される。これらの要素の組合せが、使用される可能性がある。当業者は、上述のプロセスおよびメカニズムが本開示を逸脱することなく任意の数の変更形態で実装され得ることを理解するであろう。たとえば、本開示を逸脱することなく、実行される特定の動作の順序は多くの場合変更されることが可能であり、追加的な動作が追加されることが可能であり、または動作が削除されることが可能である。そのような変更形態は、想定されており、均等であるとみなされる。
【００４７】
本開示の実施形態は、データ処理ネットワーク内でデータ処理ネットワークの要求ノードに結合されるソースデバイスから目標デバイスに順序付けられたデータを転送するための方法を実装する。方法は、要求ノードによってソースデバイスから第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  タイムライン
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理ネットワーク内で、前記データ処理ネットワークの要求ノードに結合されるソースデバイスから目標デバイスに順序付けられたデータを転送するための方法であって、
前記要求ノードによって前記ソースデバイスから第1の書き込み要求を受信するステップであって、前記第1の書き込み要求が、前記目標デバイスを対象とし、ストリーム識別子に関連付けられる、ステップと、
前記要求ノードによって前記データ処理ネットワークのホームノードに第2の書き込み要求を送信するステップと、
前記第2の書き込み要求に応答して前記ホームノードによって前記要求ノードに、書き込まれるデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよび前記ホームノードによる完了を示す完了メッセージを送信するステップと、
前記書き込みデータバッファクレジットメッセージに応答して前記要求ノードによって前記ホームノードに書き込まれる前記データを送信するステップと、
前記完了メッセージに応答して前記要求ノードによって前記ホームノードに第1の完了肯定応答メッセージを送信するステップと、
前記第1の完了肯定応答メッセージに応答して前記ホームノードによって前記目標デバイスに書き込まれる前記データを送信するステップと、
書き込まれる前記データを受信することに応じて前記目標デバイスによって前記ホームノードに第2の完了肯定応答メッセージを送信するステップとを含み、
前記第1の書き込み要求よりも古く、前記第1の書き込み要求と同じストリーム識別子を有するすべての書き込み要求に関する完了メッセージが前記要求ノードによって受信されるまで前記第1の完了肯定応答メッセージが前記要求ノードによって送信されない、方法。
【請求項２】
前記第2の書き込み要求が、前記要求ノードが1組の順序付けられたデータの一部である書き込まれる前記データを送信することと、観測順が前記要求ノードからの完了肯定応答メッセージの放出によって制御されるべきであることとを前記ホームノードに示す請求項1に記載の方法。
【請求項３】
前記ホームノードがいかなる目標デバイスも書き込まれる前記データの古いコピーを持たないと判定するとき、前記ホームノードから前記要求ノードに送信される前記書き込みデータバッファクレジットメッセージおよび前記完了メッセージが、1つのメッセージとして組み合わされる請求項1に記載の方法。
【請求項４】
前記要求ノードがすべてのより古い書き込みが前記ホームノードから完了メッセージを受信したと判定するとき、前記要求ノードから前記ホームノードに送信される前記第1の完了肯定応答メッセージおよび書き込まれる前記データが、1つのメッセージとして組み合わされる請求項1に記載の方法。
【請求項５】
前記ホームノードによって前記目標デバイスにコヒーレンスプロトコルに従ってスヌープメッセージを送信するステップと、
前記目標デバイスによって前記ホームノードに前記スヌープメッセージに対する応答を送信するステップとをさらに含み、
書き込まれる前記データが、前記スヌープメッセージに対する前記応答が前記ホームノードによって受信されるまで前記ホームノードから前記目標デバイスに送信されない請求項1に記載の方法。
【請求項６】
前記第1の書き込み要求が、スタッシュ要求を含み、書き込まれる前記データが、前記目標デバイスにユニーク-ダーティコヒーレンス状態で記憶される請求項1に記載の方法。
【請求項７】
前記データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを前記要求ノードによって検出するステップと、
前記要求ノードによって前記ホームノードに前記第1の書き込み要求をキャンセルするためのメッセージを送信するステップと、
前記第1の書き込み要求をキャンセルするための前記メッセージに応答して前記ホームノードによって、書き込まれる前記データのアドレスに関連する前記データの最新のコピーを取り出すためにメモリコントローラにスヌープ要求を送信するステップと、
書き込まれる前記データの前記アドレスに関連する前記データの前記最新のコピーを前記メモリコントローラから前記ホームノードによって受信するステップとをさらに含み、
書き込まれる前記データの代わりに、書き込まれる前記データのアドレスに関連する前記データの前記最新のコピーが、前記目標デバイスに送信される請求項1に記載の方法。
【請求項８】
前記ソースデバイスが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットを含む請求項1に記載の方法。
【請求項９】
前記ホームノードが前記第2の完了肯定応答メッセージに応答して前記データバッファを解放するステップをさらに含む請求項1に記載の方法。
【請求項１０】
データ処理ネットワーク内で要求ノードから目標デバイスにデータストリームの順序付けられたデータを転送するための方法であって、
前記要求ノードによって前記データ処理ネットワークの1つまたは複数のホームノードに複数の第1の書き込み要求を送信するステップと、
前記複数の第1の書き込み要求のそれぞれの第1の書き込み要求に関して、
前記1つまたは複数のホームノードのうち、前記第1の書き込み要求が送信されたホームノードによって、前記第1の書き込み要求に関連するデータを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよび前記ホームノードによる完了を示す完了メッセージを送信するステップと、
前記書き込みデータバッファクレジットメッセージに応答して前記要求ノードによって前記ホームノードに書き込まれるデータを送信するステップと、
前記完了メッセージに応答して前記要求ノードによって前記ホームノードに第1の完了肯定応答メッセージを送信するステップと、
前記第1の完了肯定応答メッセージに応答して前記ホームノードによって前記目標デバイスに書き込まれる前記データを送信するステップと、
書き込まれる前記データを受信することに応じて前記目標デバイスによって前記ホームノードに第2の完了肯定応答メッセージを送信するステップとを含み、
前記データストリームのすべてのより古い書き込み要求に関する完了メッセージが前記要求ノードによって受信されるまで前記第1の完了肯定応答メッセージが前記要求ノードによって送信されない、方法。
【請求項１１】
前記ホームノードから前記要求ノードに送信される前記書き込みデータバッファクレジットメッセージおよび前記完了メッセージが、それぞれの第1の書き込み要求に関して1つのメッセージとして組み合わされる請求項10に記載の方法。
【請求項１２】
前記要求ノードから前記ホームノードに送信される前記第1の完了肯定応答メッセージおよび書き込まれる前記データが、それぞれの第1の書き込み要求に関して1つのメッセージとして組み合わされる請求項10に記載の方法。
【請求項１３】
前記1つまたは複数のHome Node'sのうち、前記第1の書き込み要求が送信された前記ホームノードによって、コヒーレンスプロトコルに従って前記目標デバイスにスヌープメッセージを送信するステップと、
前記目標デバイスによって前記ホームノードに前記スヌープメッセージに対する応答を送信するステップとをさらに含み、
前記第1の書き込み要求に関連するデータが、前記スヌープメッセージに対する前記応答が前記ホームノードによって受信されるまで前記ホームノードから前記目標デバイスに送信されない請求項10に記載の方法。
【請求項１４】
前記複数の第1の書き込み要求が、スタッシュ要求を含み、前記第1の書き込み要求に関連する前記データが、前記目標デバイスにユニーク-ダーティコヒーレンス状態で記憶される請求項10に記載の方法。
【請求項１５】
前記データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを前記要求ノードによって検出するステップと、
前記要求ノードによって前記1つまたは複数のHome Node'sのうちのホームノードに前記複数の第1の書き込み要求のうちの第1の書き込み要求をキャンセルするためのメッセージを送信するステップと、
前記第1の書き込み要求をキャンセルするための前記メッセージに応答して前記ホームノードによって、書き込まれる前記データのアドレスに関連する前記データの最新のコピーを取り出すためにメモリコントローラにスヌープ要求を送信するステップと、
キャンセルされた第1の書き込み要求の前記データの前記アドレスに関連する前記データの前記最新のコピーを前記メモリコントローラから前記ホームノードによって受信するステップとをさらに含み、
前記第1の書き込み要求に関連する前記データの代わりに、前記キャンセルされた第1の書き込み要求の前記データの前記最新のコピーが、前記目標デバイスに送信される請求項10に記載の方法。
【請求項１６】
前記データストリームの前記順序付けられたデータが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットから前記要求ノードにおいて受信される請求項10に記載の方法。
【請求項１７】
目標ノード、
前記目標ノードに書き込まれるデータに関してソースデバイスから第1の書き込み要求を受信するように構成された要求ノードであって、前記データが、順序付けられたデータストリームに関連する、要求ノード、
データ処理ネットワークのためのコヒーレンシの地点を提供するホームノードであって、インターコネクトを介して前記目標ノードおよび前記要求ノードに結合される、ホームノードを含み、
前記要求ノードが、
前記ソースデバイスからの前記第1の書き込み要求に応答して前記ホームノードに第2の書き込み要求を送信すること、
前記第2の書き込み要求に応答して前記ホームノードから、書き込まれる前記データを受信するためのデータバッファを特定する書き込みデータバッファクレジットメッセージおよび完了メッセージを受信すること、
前記書き込みデータバッファクレジットメッセージに応答して前記ホームノードに書き込まれる前記データを送信すること、ならびに
前記完了メッセージに応答して前記ホームノードに第1の完了肯定応答メッセージを送信することであって、前記第1の完了肯定応答メッセージが、前記第1の書き込み要求よりも古く、前記第1の書き込み要求と同じデータストリーム識別子に関連付けられるすべての書き込み要求に関する完了メッセージが前記要求ノードによって受信されるまで送信されない、送信することを行うように構成され、
前記ホームノードが、前記第1の完了肯定応答メッセージに応答して前記目標ノードに書き込まれる前記データを送信するように構成され、
前記目標ノードが、書き込まれる前記データを受信することに応じて前記ホームノードに第2の完了肯定応答メッセージを送信するように構成される、データ処理ネットワーク。
【請求項１８】
前記ホームノードから前記要求ノードに送信される前記書き込みデータバッファクレジットメッセージおよび前記完了メッセージが、1つのメッセージとして組み合わされる請求項17に記載のデータ処理ネットワーク。
【請求項１９】
前記要求ノードから前記ホームノードに送信される前記第1の完了肯定応答メッセージおよび書き込まれる前記データが、1つのメッセージとして組み合わされる請求項17に記載のデータ処理ネットワーク。
【請求項２０】
前記ホームノードが、コヒーレンスプロトコルに従って前記目標ノードにスヌープメッセージを送信するように構成され、
前記目標ノードが、前記スヌープメッセージに対する応答を前記ホームノードに送り返すように構成され、
書き込まれる前記データが、前記スヌープメッセージに対する前記応答が前記ホームノードによって受信されるまで前記ホームノードから前記目標ノードに送信されない請求項17に記載のデータ処理ネットワーク。
【請求項２１】
前記第2の書き込み要求が、スタッシュ要求を含み、書き込まれる前記データが、前記目標ノードのキャッシュにユニーク-ダーティコヒーレンス状態で記憶される請求項17に記載のデータ処理ネットワーク。
【請求項２２】
前記要求ノードが、前記データ処理ネットワークのインターコネクトにおけるリソースの競合の結果として生じたデッドロックを検出し、前記第1の書き込み要求をキャンセルするためのメッセージを前記ホームノードに送信するようにさらに構成され、
前記ホームノードが、前記第1の書き込み要求をキャンセルするための前記メッセージに応答して、
書き込まれる前記データのアドレスに関連する前記データの最新のコピーを取り出すために前記データ処理ネットワークのメモリコントローラにスヌープ要求を送信し、
書き込まれる前記データの前記アドレスに関連する前記データの前記最新のコピーを前記メモリコントローラから受信し、
書き込まれる前記データの代わりに、書き込まれる前記データのアドレスに関連する前記データの前記最新のコピーを前記目標ノードに送信するようにさらに構成される請求項17に記載のデータ処理ネットワーク。
【請求項２３】
前記ソースデバイスが、入力/出力デバイス、アクセラレータデバイス、またはグラフィックス処理ユニットを含む請求項17に記載のデータ処理ネットワーク。
【請求項２４】
請求項17に記載のデータ処理ネットワークを記述するハードウェア記述言語の命令を含む非一時的コンピュータ可読媒体。
【請求項２５】
請求項17に記載のデータ処理ネットワークの構成要素および接続性のネットリストを記憶する非一時的コンピュータ可読媒体。
【国際調査報告】
2021522611.tif 000012
2021522611.tif 000013