IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グラフコアー リミテッドの特許一覧

特表2024-523734マルチタイル処理ユニットのための同期
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-28
(54)【発明の名称】マルチタイル処理ユニットのための同期
(51)【国際特許分類】
   G06F 9/52 20060101AFI20240621BHJP
【FI】
G06F9/52 150A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024501695
(86)(22)【出願日】2022-06-24
(85)【翻訳文提出日】2024-03-11
(86)【国際出願番号】 EP2022067456
(87)【国際公開番号】W WO2023285113
(87)【国際公開日】2023-01-19
(31)【優先権主張番号】2110148.0
(32)【優先日】2021-07-14
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】518371892
【氏名又は名称】グラフコアー リミテッド
【氏名又は名称原語表記】Graphcore Limited
【住所又は居所原語表記】11-19 Wine Street,Bristol,BS1 2PH,United Kingdom
(74)【代理人】
【識別番号】100169904
【弁理士】
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100219117
【弁理士】
【氏名又は名称】金 亨泰
(72)【発明者】
【氏名】ダニエル ウィルキンソン
(72)【発明者】
【氏名】アラン アレクサンダー
(72)【発明者】
【氏名】スティーブン フィリックス
(72)【発明者】
【氏名】リチャード オズボーン
(72)【発明者】
【氏名】サイモン ノウルズ
(72)【発明者】
【氏名】デイヴィッド レイシー
(72)【発明者】
【氏名】ラーズ ポール ヒューズ
(57)【要約】
バリア同期を実行するための2つ以上の異なる外部同期グループに処理ユニット内のタイルを分けることができるマルチタイル処理ユニット。このようにして、同じ処理ユニットの異なるタイルの組がその処理ユニットの外部の異なるタイルの組とそれぞれ同期する。
【特許請求の範囲】
【請求項1】
複数のプロセッサを含む処理ユニットを含む処理装置であって、前記複数のプロセッサは第1の1組のプロセッサと第2の1組のプロセッサとを含み、
前記第1の1組のプロセッサの各プロセッサは、前記第1の1組のプロセッサ及び第1の更なる処理装置に属する第3の1組のプロセッサを含む第1の同期グループ間で強制される第1のバリア同期に参加するように構成され、前記第1のバリア同期は前記第1の同期グループの計算段階を前記第1の同期グループの第1の交換段階と分離し、
前記第1の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれは、前記第1の交換段階中に前記第3の1組のプロセッサとデータを交換するように構成され、
前記第2の1組のプロセッサの各プロセッサは、前記第2の1組のプロセッサ及び第2の更なる処理装置に属する第4の1組のプロセッサを含む第2の同期グループ間で強制される第2のバリア同期に参加するように構成され、前記第2のバリア同期は前記第2の同期グループの計算段階を前記第2の同期グループの第2の交換段階と分離し、
前記第2の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれは、前記第2の交換段階中に前記第4の1組のプロセッサとデータを交換するように構成され、
前記第1の交換段階は前記第2の交換段階と時間的に重複する、
処理装置。
【請求項2】
前記第3の1組のプロセッサが属する前記第1の更なる処理装置が、前記第4の1組のプロセッサが属する前記第2の更なる処理装置と異なる、請求項1に記載の処理装置。
【請求項3】
前記第3の1組のプロセッサが属する前記第1の更なる処理装置が、前記第4の1組のプロセッサが属する前記第2の更なる処理装置と同じである、請求項1に記載の処理装置。
【請求項4】
前記第1の1組のプロセッサ及び前記第2の1組のプロセッサの各プロセッサが、
前記第1の交換段階及び前記第2の交換段階の後、前記第1の1組のプロセッサ及び前記第2の1組のプロセッサを含む第3のバリア同期に参加すること、及び
前記第3のバリア同期の後、前記第1の同期グループ及び前記第2の同期グループと異なる1つ又は複数の新たな同期グループを含む1つ又は複数の更なるバリア同期に参加すること
を行うように構成される、請求項1~3の何れか一項に記載の処理装置。
【請求項5】
前記処理装置が、
第1の同期メッセージを前記第1の更なる処理装置と交換することによって前記第1の同期グループのプロセッサ間の前記第1のバリア同期を調整すること、及び
第2の同期メッセージを前記第2の更なる処理装置と交換することによって前記第2の同期グループのプロセッサ間の前記第2のバリア同期を調整すること
を行うように構成される回路を含む外部同期コントローラを含む、請求項1~4の何れか一項に記載の処理装置。
【請求項6】
前記第1の同期メッセージが第1の同期要求及び同期肯定応答の対を含み、前記第2の同期メッセージが第2の同期要求及び同期肯定応答の対を含む、請求項5に記載の処理装置。
【請求項7】
前記外部同期コントローラが、
前記第1のバリア同期を調整するための前記第1の同期メッセージの少なくとも1つが送信される宛先を決定すること、及び
前記第2のバリア同期を調整するための前記第2の同期メッセージの少なくとも1つが送信される宛先を決定すること
を行うための構成設定を保持する記憶域を含む、請求項5又は6に記載の処理装置。
【請求項8】
前記外部同期コントローラの前記回路が、
前記外部同期コントローラの1つ又は複数のインタフェースを前記第1の同期グループに関連付けることにより、前記第1のバリア同期を調整するための前記第1の同期メッセージの前記少なくとも1つが送信される前記宛先を決定すること、及び
前記外部同期コントローラの1つ又は複数の更なるインタフェースを前記第2の同期グループに関連付けることにより、前記第2のバリア同期を調整するための前記第2の同期メッセージの前記少なくとも1つが送信される前記宛先を決定すること
を行うように構成される、請求項7に記載の処理装置。
【請求項9】
どの処理装置がどのバリア同期に参加するのかを修正するように前記構成設定が書き込み可能である、請求項7又は8に記載の処理装置。
【請求項10】
前記外部同期コントローラが前記処理ユニットとの複数のインタフェースを含み、前記複数のインタフェースの少なくとも一部のそれぞれが異なる同期グループに関連し、前記外部同期コントローラが、
前記第1の同期グループに関連する前記複数のインタフェースの1つの上で前記処理ユニットから第1の同期要求を受信することに応答し、前記第1の同期グループのプロセッサ間の前記第1のバリア同期を調整する前記ステップを実行すること、及び
前記第2の同期グループに関連する前記複数のインタフェースの1つの上で前記処理ユニットから第2の同期要求を受信することに応答し、前記第2の同期グループのプロセッサ間の前記第2のバリア同期を調整する前記ステップを実行すること
を行うように構成される、請求項5~7の何れか一項に記載の処理装置。
【請求項11】
前記外部同期コントローラの前記回路が複数の同期伝播回路を含み、前記複数の同期伝播回路の少なくとも一部のそれぞれがプロセッサの同期グループに関連し、前記個々の同期グループに属するプロセッサを含む少なくとも1つの追加の処理装置に同期メッセージを伝播するように構成可能であり、
第1の同期メッセージを前記第1の更なる処理装置と交換することによって前記第1の同期グループのプロセッサ間の前記第1のバリア同期を前記調整することが、前記第1の同期グループに関連する前記複数の同期伝播回路の1つによって実行される、
請求項5~10の何れか一項に記載の処理装置。
【請求項12】
前記外部同期コントローラの前記回路は、
前記第1の1組のプロセッサが前記第1のバリア同期に達したことを示す、前記第1の1組のプロセッサからの第1の少なくとも1つの同期要求を受信すること、及び
前記第1の少なくとも1つの同期要求に応答して前記第1の1組のプロセッサのそれぞれを前記第1の交換段階に入れるように前記第1の1組のプロセッサのそれぞれに同期肯定応答を提供すること、
前記第2の1組のプロセッサが前記第2のバリア同期に達したことを示す、前記第2の1組のプロセッサからの第2の少なくとも1つの同期要求を受信すること、及び
前記第2の少なくとも1つの同期要求に応答して前記第2の1組のプロセッサのそれぞれを前記第2の交換段階に入れるように前記第2の1組のプロセッサのそれぞれに同期肯定応答を提供すること
を行うように構成される、請求項5~11の何れか一項に記載の処理装置。
【請求項13】
前記外部同期コントローラの前記回路が、
前記第1の更なる処理装置との前記第1の同期メッセージの前記交換に応答して前記第1の1組のプロセッサのそれぞれに前記同期肯定応答を提供すること、及び
前記第2の更なる処理装置との前記第2の同期メッセージの前記交換に応答して前記第2の1組のプロセッサのそれぞれに前記同期肯定応答を提供すること
を行うように構成される、請求項12に記載の処理装置。
【請求項14】
前記複数のプロセッサの少なくとも一部が、異なるバリア同期に参加するために使用される複数の異なる同期グループに属する、請求項1~13の何れか一項に記載の処理装置。
【請求項15】
前記複数のプロセッサのそれぞれは、前記個々のプロセッサが複数の同期グループのどれに属するのかに関する指示を記憶するレジスタを含む、請求項14に記載の処理装置。
【請求項16】
前記複数のプロセッサのそれぞれについて、前記個々のプロセッサの前記レジスタ内に記憶される前記指示は前記個々のプロセッサが複数の構成可能な同期ゾーンのどれに属するのかに関する指示である、請求項15に記載の処理装置。
【請求項17】
前記複数のプロセッサのそれぞれが複数の配線を有し、前記複数の配線の少なくとも一部のそれぞれが複数の同期グループの異なるものに関連し、
前記第1の1組のプロセッサのうちの前記プロセッサのそれぞれは、自らのコンパイル済みコード内で前記第1のバリア同期に達すると、前記第1の同期グループに関連する前記個々の複数の配線の1つの上で同期要求信号をアサートするように構成され、
前記第2の1組のプロセッサのうちの前記プロセッサのそれぞれは、自らのコンパイル済みコード内で前記第2のバリア同期に達すると、前記第2の同期グループに関連する前記個々の複数の配線の1つの上で同期要求信号をアサートするように構成される、
請求項1~16の何れか一項に記載の処理装置。
【請求項18】
前記複数のプロセッサのそれぞれは、前記個々のプロセッサが属さない同期グループに関連する前記複数の配線の何れかの上で同期要求信号を継続的にアサートするように構成される、請求項17に記載の処理装置。
【請求項19】
前記第1の1組の複数のプロセッサの少なくとも一部のそれぞれが、前記第1の同期グループを識別するオペランドを含む同期命令を実行することによって前記第1のバリア同期用の前記第1の同期グループを選択するように構成される、請求項1~18の何れか一項に記載の処理装置。
【請求項20】
前記オペランドが、前記第1の同期グループの同期をサポートする構成可能な同期ゾーンを識別することによって前記第1の同期グループを識別する、請求項19に記載の処理装置。
【請求項21】
前記第1の同期グループが、前記複数のプロセッサの異なるグループ分けを含むように前記複数の前記プロセッサのそれぞれの中で保持される設定に基づいて構成可能な第1の同期ゾーンに関連し、前記第2の同期グループが、前記複数のプロセッサの異なるグループ分けを含むように複数の前記プロセッサのそれぞれの中で保持される前記設定に基づいて構成可能な第2の同期ゾーンに関連する、請求項1~20の何れか一項に記載の処理装置。
【請求項22】
前記複数のプロセッサのそれぞれの中で保持される前記設定は、前記個々のプロセッサが前記第1の同期ゾーンに属するのかどうか及び前記個々のプロセッサが前記第2の同期ゾーンに属するのかどうかを指定する、請求項21に記載の処理装置。
【請求項23】
前記処理装置が集積回路であり、前記第1の更なる処理装置が第1の更なる集積回路であり、前記第2の更なる処理装置が第2の更なる集積回路である、請求項1~22の何れか一項に記載の処理装置。
【請求項24】
前記第3の1組のプロセッサとデータを前記交換することが、前記処理装置と前記第1の更なる処理装置との間のパケット交換ネットワーク上で伝送するための1つ又は複数のデータパケットをディスパッチすることを含み、前記第4の1組のプロセッサとデータを前記交換することが、前記処理装置と前記第2の更なる処理装置との間のパケット交換ネットワーク上で伝送するための1つ又は複数のデータパケットをディスパッチすることを含む、請求項1~23の何れか一項に記載の処理装置。
【請求項25】
請求項1~24の何れか一項に記載の処理装置と、
第1の更なる処理装置と、
第2の更なる処理装置と、
を含む、データ処理システム。
【請求項26】
処理装置を1つ又は複数の更なる処理装置と同期するための方法であって、前記処理装置は複数のプロセッサを含む処理ユニットを含み、前記複数のプロセッサは第1の1組のプロセッサ及び第2の1組のプロセッサを含み、
前記第1の1組のプロセッサ及び第1の更なる処理装置に属する第3の1組のプロセッサを含む第1の同期グループ間で強制される第1のバリア同期に前記第1の1組のプロセッサの各プロセッサが参加することであって、前記第1のバリア同期は前記第1の同期グループの計算段階を前記第1の同期グループの第1の交換段階と分離して参加することと、
前記第1の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれが、前記第1の交換段階中に前記第3の1組のプロセッサとデータを交換すること、
前記第2の1組のプロセッサ及び第2の更なる処理装置に属する第4の1組のプロセッサを含む第2の同期グループ間で強制される第2のバリア同期に前記第2の1組のプロセッサの各プロセッサが参加することであって、前記第2のバリア同期は前記第2の同期グループの計算段階を前記第2の同期グループの第2の交換段階と分離して参加することと、
前記第2の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれが、前記第2の交換段階中に前記第4の1組のプロセッサとデータを交換することと、
を含み、
前記第1の交換段階は前記第2の交換段階と時間的に重複する、方法。
【請求項27】
処理ユニットの複数のプロセッサによって実行されるとき、処理装置を1つ又は複数の更なる処理装置と同期するための方法を実行させる複数組のコンピュータ可読命令を含むコンピュータプログラムであって、前記処理装置は前記処理ユニットを含み、前記複数のプロセッサは第1の1組のプロセッサ及び第2の1組のプロセッサを含み、前記方法は
前記第1の1組のプロセッサ及び第1の更なる処理装置に属する第3の1組のプロセッサを含む第1の同期グループ間で強制される第1のバリア同期に前記第1の1組のプロセッサの各プロセッサが参加することであって、前記第1のバリア同期は前記第1の同期グループの計算段階を前記第1の同期グループの第1の交換段階と分離して参加することと、
前記第1の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれが、前記第1の交換段階中に前記第3の1組のプロセッサとデータを交換すること、
前記第2の1組のプロセッサ及び第2の更なる処理装置に属する第4の1組のプロセッサを含む第2の同期グループ間で強制される第2のバリア同期に前記第2の1組のプロセッサの各プロセッサが参加することであって、前記第2のバリア同期は前記第2の同期グループの計算段階を前記第2の同期グループの第2の交換段階と分離して参加することと、
前記第2の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれが、前記第2の交換段階中に前記第4の1組のプロセッサとデータを交換することと、
を含み、
前記第1の交換段階は前記第2の交換段階と時間的に重複する、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、処理装置と1つ又は複数の更なる処理装置とを同期することに関する。具体的には、本開示は異なるバリア同期による、異なるプロセッサの組を含む同期に関する。
【背景技術】
【0002】
複雑な又は大量のアプリケーションのデータを処理する状態において、そのデータの処理を実行するための処理ユニットが提供され得る。処理ユニットは、一定のデータの処理がホストシステムからオフロードされるワークアクセラレータとして機能することができる。かかる処理ユニットは、特定の種類の処理を実行するための専用ハードウェアを有し得る。
【0003】
一例として、このような専用アクセラレータサブシステムが使用され得るコンピューティングの1つの分野は機械知能に見られる。機械知能の技術分野の当業者には馴染みがあるように、機械知能アルゴリズムは、複数の相互接続ノードのグラフによって表すことができる「知識モデル」の反復更新を実行することに基づく。各ノードの実装はデータの処理を含み、グラフの相互接続はノード間で交換されるデータに対応する。典型的には、各ノードの処理の少なくとも一部はグラフ内のノードの一部又は他の全てから独立して実行することができ、従って大規模なグラフはマルチスレッディングの大きな機会となる。従って、機械知能アプリケーションに特化した処理ユニットは大幅なマルチスレッディングを含み得る。並列処理の1つの形態は、同一チップ(即ち同一ダイ)上に複数のタイルを配置することによって達成することができ、各タイルは独自の別個の個々の実行ユニット及びメモリ(プログラムメモリ及びデータメモリを含む)を含む。従って、プログラムコードの別々の部分をタイルの異なるものの上で並列に実行することができる。
【0004】
処理能力を向上させるために、複数の処理ユニットを接続してスケーリングされたシステムを提供することができる。このような処理ユニットのシステムがアプリケーションを一緒に実行する場合、異なる処理ユニット上で実行されるプログラムの部分間に依存関係が存在し得る。従って、或る処理ユニット上のコード片が、別の処理ユニット上の別のコード片によって依存先のデータが入手可能にされるよりも前に実行されるのを防ぐ技法が求められている。これを実現するための幾つかの可能なスキームがあり、ここではその1つである「BSP」(バルク同期並列)を例として説明する。BSPによれば、各処理ユニットは計算段階と交換段階とを交互に繰り返す。計算段階の間、各処理ユニットは処理ユニット上で1つ又は複数の計算タスクをローカルに実行するが、その計算の如何なる結果も処理ユニットの他の任意のものと通信しない。交換段階では、各処理ユニットは先行する計算段階からの計算の1つ又は複数の結果を処理ユニットの1つ又は複数の他のものとの間で交換することを認められる。更にBSP原理によれば、計算段階から交換段階に移行する継ぎ目、交換段階から計算段階に移行する継ぎ目、又はその両方の継ぎ目にバリア同期が置かれる。
【発明の概要】
【課題を解決するための手段】
【0005】
処理ユニット間の各バリア同期には時間が必要であり、そのため非効率的に使用された場合は処理ユニットのシステムの動作が遅くなる可能性がある。
【0006】
第1の態様によれば、複数のプロセッサを含む処理ユニットを含む処理装置が提供され、複数のプロセッサは第1の1組のプロセッサと第2の1組のプロセッサとを含み、第1の1組のプロセッサの各プロセッサは、第1の1組のプロセッサ及び第1の更なる処理装置に属する第3の1組のプロセッサを含む第1の同期グループ間で強制される第1のバリア同期に参加するように構成され、第1のバリア同期は第1の同期グループの計算段階を第1の同期グループの第1の交換段階と分離し、第1の1組のプロセッサのうちのプロセッサの少なくとも一部のそれぞれは、第1の交換段階中に第3の1組のプロセッサとデータを交換するように構成され、第2の1組のプロセッサの各プロセッサは、第2の1組のプロセッサ及び第2の更なる処理装置に属する第4の1組のプロセッサを含む第2の同期グループ間で強制される第2のバリア同期に参加するように構成され、第2のバリア同期は第2の同期グループの計算段階を第2の同期グループの第2の交換段階と分離し、第2の1組のプロセッサのうちのプロセッサの少なくとも一部のそれぞれは、第2の交換段階中に第4の1組のプロセッサとデータを交換するように構成され、第1の交換段階は第2の交換段階と時間的に重複する。
【0007】
従って実施形態によれば、処理ユニットはどちらも処理ユニットの外部のプロセッサを含む2つ以上の同期グループに分割される。従って、処理ユニットの一部が或るエンティティと同期する一方、処理ユニットの別の部分を別のエンティティと同期することが可能である。これにより、バリア同期が関与するアプリケーションを実行する全体的な時間を短縮することができる。
【0008】
一部の実施形態では、第3の1組のプロセッサが属する第1の更なる処理装置が、第4の1組のプロセッサが属する第2の更なる処理装置と異なる。
【0009】
一部の実施形態では、第3の1組のプロセッサが属する第1の更なる処理装置が、第4の1組のプロセッサが属する第2の更なる処理装置と同じである。
【0010】
一部の実施形態では、第1の1組のプロセッサ及び第2の1組のプロセッサの各プロセッサが、第1の交換段階及び第2の交換段階の後、第1の1組のプロセッサ及び第2の1組のプロセッサを含む第3のバリア同期に参加すること、及び第3のバリア同期の後、第1の同期グループ及び第2の同期グループと異なる1つ又は複数の新たな同期グループを含む1つ又は複数の更なるバリア同期に参加することを行うように構成される。
【0011】
一部の実施形態では、処理装置が、第1の同期メッセージを第1の更なる処理装置と交換することによって第1の同期グループのプロセッサ間の第1のバリア同期を調整すること、及び第2の同期メッセージを第2の更なる処理装置と交換することによって第2の同期グループのプロセッサ間の第2のバリア同期を調整することを行うように構成される回路を含む外部同期コントローラを含む。
【0012】
一部の実施形態では、第1の同期メッセージが第1の同期要求及び同期肯定応答の対を含み、第2の同期メッセージが第2の同期要求及び同期肯定応答の対を含む。
【0013】
一部の実施形態では、外部同期コントローラが、第1のバリア同期を調整するための第1の同期メッセージの少なくとも1つが送信される宛先を決定すること、及び第2のバリア同期を調整するための第2の同期メッセージの少なくとも1つが送信される宛先を決定することを行うための構成設定を保持する記憶域を含む。
【0014】
一部の実施形態では、外部同期コントローラの回路が、外部同期コントローラの1つ又は複数のインタフェースを第1の同期グループに関連付けることにより、第1のバリア同期を調整するための第1の同期メッセージの少なくとも1つが送信される宛先を決定すること、及び外部同期コントローラの1つ又は複数の更なるインタフェースを第2の同期グループに関連付けることにより、第2のバリア同期を調整するための第2の同期メッセージの少なくとも1つが送信される宛先を決定することを行うように構成される。
【0015】
一部の実施形態では、どの処理装置がどのバリア同期に参加するのかを修正するように構成設定が書き込み可能である。
【0016】
一部の実施形態では、外部同期コントローラが処理ユニットとの複数のインタフェースを含み、複数のインタフェースの少なくとも一部のそれぞれが異なる同期グループに関連し、外部同期コントローラが、第1の同期グループに関連する複数のインタフェースの1つの上で処理ユニットから第1の同期要求を受信することに応答し、第1の同期グループのプロセッサ間の第1のバリア同期を調整するステップを実行すること、及び第2の同期グループに関連する複数のインタフェースの1つの上で処理ユニットから第2の同期要求を受信することに応答し、第2の同期グループのプロセッサ間の第2のバリア同期を調整するステップを実行することを行うように構成される。
【0017】
一部の実施形態では、外部同期コントローラの回路が複数の同期伝播回路を含み、複数の同期伝播回路の少なくとも一部のそれぞれがプロセッサの同期グループに関連し、個々の同期グループに属するプロセッサを含む少なくとも1つの追加の処理装置に同期メッセージを伝播するように構成可能であり、第1の同期メッセージを第1の更なる処理装置と交換することによって第1の同期グループのプロセッサ間の第1のバリア同期を調整することが、第1の同期グループに関連する複数の同期伝播回路の1つによって実行される。
【0018】
一部の実施形態では、外部同期コントローラの回路は、第1の1組のプロセッサが第1のバリア同期に達したことを示す、第1の1組のプロセッサからの第1の少なくとも1つの同期要求を受信すること、及び第1の少なくとも1つの同期要求に応答して第1の1組のプロセッサのそれぞれを第1の交換段階に入れるように第1の1組のプロセッサのそれぞれに同期肯定応答を提供すること、第2の1組のプロセッサが第2のバリア同期に達したことを示す、第2の1組のプロセッサからの第2の少なくとも1つの同期要求を受信すること、及び第2の少なくとも1つの同期要求に応答して第2の1組のプロセッサのそれぞれを第2の交換段階に入れるように第2の1組のプロセッサのそれぞれに同期肯定応答を提供することを行うように構成される。
【0019】
一部の実施形態では、外部同期コントローラの回路が、第1の更なる処理装置との第1の同期メッセージの交換に応答して第1の1組のプロセッサのそれぞれに同期肯定応答を提供すること、及び第2の更なる処理装置との第2の同期メッセージの交換に応答して第2の1組のプロセッサのそれぞれに同期肯定応答を提供することを行うように構成される。
【0020】
一部の実施形態では、複数のプロセッサの少なくとも一部が、異なるバリア同期に参加するために使用される複数の異なる同期グループに属する。
【0021】
一部の実施形態では、複数のプロセッサのそれぞれは、個々のプロセッサが複数の同期グループのどれに属するのかに関する指示を記憶するレジスタを含む。
【0022】
一部の実施形態では、複数のプロセッサのそれぞれについて、個々のプロセッサのレジスタ内に記憶される指示は個々のプロセッサが複数の構成可能な同期ゾーンのどれに属するのかに関する指示である。
【0023】
一部の実施形態では、複数のプロセッサのそれぞれが複数の配線を有し、複数の配線の少なくとも一部のそれぞれが複数の同期グループの異なるものに関連し、第1の1組のプロセッサのうちのプロセッサのそれぞれは、自らのコンパイル済みコード内で第1のバリア同期に達すると、第1の同期グループに関連する個々の複数の配線の1つの上で同期要求信号をアサートするように構成され、第2の1組のプロセッサのうちのプロセッサのそれぞれは、自らのコンパイル済みコード内で第2のバリア同期に達すると、第2の同期グループに関連する個々の複数の配線の1つの上で同期要求信号をアサートするように構成される。
【0024】
一部の実施形態では、複数のプロセッサのそれぞれは、個々のプロセッサが属さない同期グループに関連する複数の配線の何れかの上で同期要求信号を継続的にアサートするように構成される。
【0025】
一部の実施形態では、第1の1組の複数のプロセッサの少なくとも一部のそれぞれが、第1の同期グループを識別するオペランドを含む同期命令を実行することによって第1のバリア同期用の第1の同期グループを選択するように構成される。
【0026】
一部の実施形態では、オペランドが、第1の同期グループの同期をサポートする構成可能な同期ゾーンを識別することによって第1の同期グループを識別する。
【0027】
一部の実施形態では、第1の同期グループが、複数のプロセッサの異なるグループ分けを含むように複数のプロセッサのそれぞれの中で保持される設定に基づいて構成可能な第1の同期ゾーンに関連し、第2の同期グループが、複数のプロセッサの異なるグループ分けを含むように複数のプロセッサのそれぞれの中で保持される設定に基づいて構成可能な第2の同期ゾーンに関連する。
【0028】
一部の実施形態では、複数のプロセッサのそれぞれの中で保持される設定は、個々のプロセッサが第1の同期ゾーンに属するのかどうか及び個々のプロセッサが第2の同期ゾーンに属するのかどうかを指定する。
【0029】
一部の実施形態では、処理装置が集積回路であり、第1の更なる処理装置が第1の更なる集積回路であり、第2の更なる処理装置が第2の更なる集積回路である。
【0030】
一部の実施形態では、第3の1組のプロセッサとデータを交換することが、処理装置と第1の更なる処理装置との間のパケット交換ネットワーク上で伝送するための1つ又は複数のデータパケットをディスパッチすることを含み、第4の1組のプロセッサとデータを交換することが、処理装置と第2の更なる処理装置との間のパケット交換ネットワーク上で伝送するための1つ又は複数のデータパケットをディスパッチすることを含む。
【0031】
第2の態様によれば、第1の態様による処理装置、第1の更なる処理装置、及び第2の更なる処理装置を含むデータ処理システムが提供される。
【0032】
第3の態様によれば、処理装置を1つ又は複数の更なる処理装置と同期するための方法が提供され、処理装置は複数のプロセッサを含む処理ユニットを含み、複数のプロセッサは第1の1組のプロセッサ及び第2の1組のプロセッサを含み、本方法は、第1の1組のプロセッサ及び第1の更なる処理装置に属する第3の1組のプロセッサを含む第1の同期グループ間で強制される第1のバリア同期に第1の1組のプロセッサの各プロセッサが参加することであって、第1のバリア同期は第1の同期グループの計算段階を第1の同期グループの第1の交換段階と分離して参加すること、第1の1組のプロセッサのうちのプロセッサの少なくとも一部のそれぞれが、第1の交換段階中に第3の1組のプロセッサとデータを交換すること、第2の1組のプロセッサ及び第2の更なる処理装置に属する第4の1組のプロセッサを含む第2の同期グループ間で強制される第2のバリア同期に第2の1組のプロセッサの各プロセッサが参加することであって、第2のバリア同期は第2の同期グループの計算段階を第2の同期グループの第2の交換段階と分離して参加すること、第2の1組のプロセッサのうちのプロセッサの少なくとも一部のそれぞれが、第2の交換段階中に第4の1組のプロセッサとデータを交換することを含み、第1の交換段階は第2の交換段階と時間的に重複する。
【0033】
一部の実施形態では、第3の1組のプロセッサが属する第1の更なる処理装置が、第4の1組のプロセッサが属する第2の更なる処理装置と異なる。
【0034】
一部の実施形態では、第3の1組のプロセッサが属する第1の更なる処理装置が、第4の1組のプロセッサが属する第2の更なる処理装置と同じである。
【0035】
一部の実施形態では、本方法は、第1の1組のプロセッサ及び第2の1組のプロセッサの各プロセッサが、第1の交換段階及び第2の交換段階の後、第1の1組のプロセッサ及び第2の1組のプロセッサを含む第3のバリア同期に参加すること、及び第3のバリア同期の後、第1の同期グループ及び第2の同期グループと異なる1つ又は複数の新たな同期グループを含む1つ又は複数の更なるバリア同期に参加することを含む。
【0036】
一部の実施形態では、本方法は、第1の更なる処理装置と第1の同期メッセージを交換することによって第1の同期グループのプロセッサ間の第1のバリア同期を調整すること、及び第2の更なる処理装置と第2の同期メッセージを交換することによって第2の同期グループのプロセッサ間の第2のバリア同期を調整することを含む。
【0037】
一部の実施形態では、第1の同期メッセージが第1の同期要求及び同期肯定応答の対を含み、第2の同期メッセージが第2の同期要求及び同期肯定応答の対を含む。
【0038】
一部の実施形態では、外部同期コントローラが、第1のバリア同期を調整するための第1の同期メッセージの少なくとも1つが送信される宛先を決定すること、及び第2のバリア同期を調整するための第2の同期メッセージの少なくとも1つが送信される宛先を決定することを行うための構成設定を保持する記憶域を含む。
【0039】
一部の実施形態では、本方法は、外部同期コントローラの1つ又は複数のインタフェースを第1の同期グループに関連付けることにより、第1のバリア同期を調整するための第1の同期メッセージの少なくとも1つが送信される宛先を決定すること、及び外部同期コントローラの1つ又は複数の更なるインタフェースを第2の同期グループに関連付けることにより、第2のバリア同期を調整するための第2の同期メッセージの少なくとも1つが送信される宛先を決定することを含む。
【0040】
一部の実施形態では、本方法は、どの処理装置がどのバリア同期に参加するのかを修正するように構成設定を書き込むことを含む。
【0041】
一部の実施形態では、外部同期コントローラが処理ユニットとの複数のインタフェースを含み、複数のインタフェースの少なくとも一部のそれぞれが異なる同期グループに関連し、本方法が、第1の同期グループに関連する複数のインタフェースの1つの上で処理ユニットから第1の同期要求を受信することに応答し、第1の同期グループのプロセッサ間の第1のバリア同期を調整するステップを実行すること、及び第2の同期グループに関連する複数のインタフェースの1つの上で処理ユニットから第2の同期要求を受信することに応答し、第2の同期グループのプロセッサ間の第2のバリア同期を調整するステップを実行することを含む。
【0042】
一部の実施形態では、外部同期コントローラの回路が複数の同期伝播回路を含み、複数の同期伝播回路の少なくとも一部のそれぞれがプロセッサの同期グループに関連し、個々の同期グループに属するプロセッサを含む少なくとも1つの追加の処理装置に同期メッセージを伝播するように構成可能であり、第1の同期メッセージを第1の更なる処理装置と交換することによって第1の同期グループのプロセッサ間の第1のバリア同期を調整することが、第1の同期グループに関連する複数の同期伝播回路の1つによって実行される。
【0043】
一部の実施形態では、本方法は、第1の1組のプロセッサが第1のバリア同期に達したことを示す、第1の1組のプロセッサからの第1の少なくとも1つの同期要求を受信すること、第1の少なくとも1つの同期要求に応答して第1の1組のプロセッサのそれぞれを第1の交換段階に入れるように第1の1組のプロセッサのそれぞれに同期肯定応答を提供すること、第2の1組のプロセッサが第2のバリア同期に達したことを示す、第2の1組のプロセッサからの第2の少なくとも1つの同期要求を受信すること、及び第2の少なくとも1つの同期要求に応答して第2の1組のプロセッサのそれぞれを第2の交換段階に入れるように第2の1組のプロセッサのそれぞれに同期肯定応答を提供することを含む。
【0044】
一部の実施形態では、本方法が、第1の更なる処理装置との第1の同期メッセージの交換に応答して第1の1組のプロセッサのそれぞれに同期肯定応答を提供すること、及び第2の更なる処理装置との第2の同期メッセージの交換に応答して第2の1組のプロセッサのそれぞれに同期肯定応答を提供することを含む。
【0045】
一部の実施形態では、複数のプロセッサの少なくとも一部が、異なるバリア同期に参加するために使用される複数の異なる同期グループに属する。
【0046】
一部の実施形態では、複数のプロセッサのそれぞれは、個々のプロセッサが複数の同期グループのどれに属するのかに関する指示を記憶するレジスタを含む。
【0047】
一部の実施形態では、複数のプロセッサのそれぞれについて、個々のプロセッサのレジスタ内に記憶される指示は個々のプロセッサが複数の構成可能な同期グループのどれに属するのかに関する指示である。
【0048】
一部の実施形態では、複数のプロセッサのそれぞれが複数の配線を有し、複数の配線の少なくとも一部のそれぞれが複数の同期グループの異なるものに関連し、本方法は、第1の1組のプロセッサのうちのプロセッサのそれぞれが、自らのコンパイル済みコード内で第1のバリア同期に達すると、第1の同期グループに関連する個々の複数の配線の1つの上で同期要求信号をアサートすること、第2の1組のプロセッサのうちのプロセッサのそれぞれが、自らのコンパイル済みコード内で第2のバリア同期に達すると、第2の同期グループに関連する個々の複数の配線の1つの上で同期要求信号をアサートすることを含む。
【0049】
一部の実施形態では、本方法は、複数のプロセッサのそれぞれが、個々のプロセッサが属さない同期グループに関連する複数の配線の何れかの上で同期要求信号を継続的にアサートすることを含む。
【0050】
一部の実施形態では、本方法は、第1の1組の複数のプロセッサの少なくとも一部のそれぞれが、第1の同期グループを識別するオペランドを含む同期命令を実行することによって第1のバリア同期用の第1の同期グループを選択することを含む。
【0051】
一部の実施形態では、オペランドが、第1の同期グループを含む同期ゾーンを識別することによって第1の同期グループを識別する。
【0052】
一部の実施形態では、第1の同期グループが、複数のプロセッサの異なるグループ分けを含むように複数のプロセッサのそれぞれの中で保持される設定に基づいて構成可能な第1の同期ゾーンに属し、第2の同期グループが、複数のプロセッサの異なるグループ分けを含むように複数のプロセッサのそれぞれの中で保持される設定に基づいて構成可能な第2の同期ゾーンに属する。
【0053】
一部の実施形態では、複数のプロセッサのそれぞれの中で保持される設定は、個々のプロセッサが第1の同期ゾーンに属するのかどうか及び個々のプロセッサが第2の同期ゾーンに属するのかどうかを指定する。
【0054】
一部の実施形態では、処理装置が集積回路であり、第1の更なる処理装置が第1の更なる集積回路であり、第2の更なる処理装置が第2の更なる集積回路である。
【0055】
一部の実施形態では、第3の1組のプロセッサとデータを交換することが、処理装置と第1の更なる処理装置との間のパケット交換ネットワーク上で伝送するための1つ又は複数のデータパケットをディスパッチすることを含み、第4の1組のプロセッサとデータを交換することが、処理装置と第2の更なる処理装置との間のパケット交換ネットワーク上で伝送するための1つ又は複数のデータパケットをディスパッチすることを含む。
【0056】
第4の態様によれば、処理ユニットの複数のプロセッサによって実行されるとき、第3の態様又はその任意の実施形態による方法を実行させる複数組のコンピュータ可読命令を含むコンピュータプログラムが提供される。
【0057】
第5の態様によれば、第4の態様によるコンピュータプログラムを含む非一時的コンピュータ可読媒体が提供される。
【0058】
本発明をよりよく理解するために、及び本発明がどのように実施され得るのかを示すために、次に添付図面を例として参照する。
【図面の簡単な説明】
【0059】
図1】マルチタイル処理ユニットの一例を示す。
図2】マルチタイル処理ユニット内の計算段階及び交換段階を示す概略図である。
図3】バルク同期並列システムにおけるデータの交換を示す。
図4】内部同期バリア及び外部同期バリアの概略図である。
図5A】マルチタイル処理ユニット及び同期コントローラ回路を含む集積回路の概略図である。
図5B】プロセッサタイルの概略図である。
図5C】マルチタイル処理ユニットから外部同期コントローラへの同期要求の伝播の概略図である。
図5D】プロセッサタイルへの同期肯定応答の伝播の概略図である。
図5E】複数の集積回路を含むシステムの概略図であり、同じ集積回路上のタイルが別の集積回路のタイルとのバリア同期に参加するように構成される。
図6A】マルチタイル処理ユニットのタイルの2つの異なるサブセットに対する同期スケジュールの一例を示す。
図6B】マルチタイル処理ユニットのタイルの3つの異なるサブセットに対する同期スケジュールの一例を示す。
図7A】集積回路の一部である外部同期コントローラの回路の概略図である。
図7B】同期ネットワークの一例の説明図である。
図8】同期ハンドシェイクメカニズムの実施形態例を示す。
図9A】専用同期信号を同期パケットに変換するための回路の全般的な例を示す。
図9B】インタフェース上の専用同期信号と同期パケットとを変換するための回路の第1の実施形態例を示す。
図10】処理装置を1つ又は複数の更なる処理装置と同期するための方法を示す。
【発明を実施するための形態】
【0060】
処理ユニット2の一例を示す図1を参照する。この処理ユニット2の一例は、マルチタイル処理ユニット2である。このような各処理ユニット2は集積回路上に形成される。図示の処理ユニット2は、参照により援用する米国特許出願第15/886065号明細書に記載されているインテリジェンス処理ユニット(IPU)とすることができる。
【0061】
処理ユニット2は、複数のプロセッサタイル4のアレイ6及びタイル4間を接続する相互接続34を含む。処理ユニット2は、同じICパッケージ内にパッケージされた複数のダイの1つとして単独で実装され得る。相互接続34は、タイル4が互いにデータを交換することを可能にするので本明細書では「交換ファブリック」34と呼ぶこともある。各タイル4は、実行ユニット及びメモリの個々のインスタンスを含む。例えば例として、処理ユニット2は、数百更には千を超えるオーダーのタイル4を含み得る。完全を期すために、本明細書で言及する「アレイ」は、必ずしもタイル4の寸法又は物理的レイアウトの或る特定の数を含意しないことにも留意されたい。
【0062】
実施形態において、各処理ユニット2は、処理ユニット2を1つ又は複数の他の処理ユニット(例えば同じ処理ユニット2の1つ又は複数の他のインスタンス)に接続することを可能にする1つ又は複数の外部リンクも含む。これらの外部リンクは、ホストシステム、及び同じICパッケージ若しくはカード上の又は異なるカード上の処理ユニット2の1つ又は複数の他のインスタンスに処理ユニット2を接続できるようにし得る。処理ユニット2は、自らが処理するアプリケーションデータの形でホストから作業を受信する。
【0063】
相互接続34は、アレイ6内の異なるタイル4が互いに通信することを可能にするように構成される。しかし、同じタイル4上のスレッド間に依存関係がある可能性があるだけでなく、アレイ6内の異なるタイル4上で実行されているプログラムの部分間にも依存関係が存在する可能性がある。従って、或るタイル4上のコード片が、別のタイル4上の別のコード片によって依存先のデータが入手可能にされるよりも前に実行されるのを防ぐ技法が求められている。これは、データ一貫性モデルを用いて達成される。
【0064】
AI及びデータサイエンスのための並列プログラミングモデルは通常、計算、バリア、及び交換という3段階の反復実行モデルに従う。その意味するところは、プロセッサ間の及び各プロセッサと外部記憶域との間のデータ一貫性を提供するために、プロセッサとの間のデータ転送が通常はバリアに依存するということである。典型的に使用されるデータ一貫性モデルは、バルク同期並列(BSP)、ステイル同期並列(SSP)、及び非同期である。本明細書に記載する処理ユニット2はBSPモデルを使用するが、代替策として他の同期モデルを利用できることは明らかであろう。
【0065】
図2及び図3を参照すると、BSP交換スキームの実装形態が示されており、このスキームでは各タイル4が、タイル4間のバリア同期30によって互いに分離された計算段階33及び交換段階32を交互のサイクルで実行する。図2及び図3によって示す事例では、バリア同期が各計算段階33とその後の交換段階32との間に配置される。計算段階33の間、各タイル4は1つ又は複数の計算タスクをタイル上で局所的に実行するが、これらの計算の如何なる結果もタイル4の他の任意のものと通信しない。交換段階32では、各タイル4は先行する計算段階からの計算の1つ又は複数の結果をタイル4の1つ又は複数の他のものとの間で交換することを認められるが、自らのタスクが依存関係を有する任意のデータを他のタイル4から受信するまで任意の新たな計算は行わない。内部制御に関係する操作等の他の操作が交換段階32内で実行され得ることは排除しない。タイルグループの外部の通信はBSPメカニズムを任意で利用できるが、代替的にBSPを利用できなくてもよく、代わりに他の一部の独自の同期メカニズムを使用することができる。
【0066】
BSP原理によれば、バリア同期30は、計算段階33から交換段階32に移行する継ぎ目、又は交換段階32から計算段階33に移行する継ぎ目、又はその両方に配置される。つまり(a)グループ内の何れかのタイルが次の交換段階32に進むことを許可される前に、全てのタイル4がその個々の計算段階33を完了することを要求され、又は(b)グループ内の何れかのタイルが次の計算段階33に進むことを許可される前に、グループ内の全てのタイル4がその個々の交換段階32を完了することを要求され、又は(c)それらの条件の両方が強制される。3つ全ての改変形態において、段階を交互に行うのは個々のタイルであり、同期するのはアセンブリである。次いで、この一連の交換段階及び計算段階が複数の反復にわたって繰り返され得る。BSPの用語では、交換段階及び計算段階のそれぞれの繰り返しを「スーパーステップ」と呼ぶことがある(但し、文献ではこの用語は常に一貫して使用されているわけではなく、個々の交換段階及び計算段階が個別にスーパーステップと呼ばれることもあるのに対し、本明細書で採用する用語のように他の場合は交換段階及び計算段階が合わせてスーパーステップと呼ばれる)。
【0067】
図3は、(a)計算段階33から交換段階32へのバリア同期(上記参照)を課す場合において、アレイ6内のタイルの一部又は全てのグループ4i、4ii、4iiiの間で実装されるBSP原理を示す。この構成では、一部のタイルが依然として交換中でありながらも他の一部のタイル4が計算33を開始することを許可されることに留意されたい。
【0068】
BSPモデルは、処理ユニット2上のタイル4間のデータの交換に使用され得る。処理ユニット2のタイル4間の通信は時間決定論的な方法で行われ、その際にデータパケットは、先の出願の米国特許出願第15/886065号明細書にある通りヘッダなしで伝送される。加えて、BSPモデルは処理ユニット2間のデータの交換に使用することもできる。
【0069】
図4を参照すると、内部(即ち単一の処理ユニット2のタイル4間の)同期及び外部(即ち処理ユニット2間の)同期の両方を含むBSPプログラムフローの一例が示されている。図示のように、このフローは(同じ処理ユニット2のタイル4間のデータの)内部交換50及び(異なる処理ユニット2のタイル4間のデータの)外部交換50’を含む。図4のプログラムフローは、第1の処理ユニット2i及び第2の処理ユニット2iiのためのプログラムフローを示す。
【0070】
図4に示すように、内部BSPスーパーステップ(同じ処理ユニット2のタイル4間のデータの内部交換50を含む)は、外部同期及び交換(異なる処理ユニット2のタイル4間のデータの外部交換50’を含む)とは別に保たれる。
【0071】
プログラムは、次の順序、つまり(i)第1の計算段階、その後の(ii)内部バリア同期30、その後の(iii)内部交換段階50、その後の(iv)外部バリア同期80、その後の(v)外部交換段階50’を含む、同期、交換段階、及び計算段階のシーケンスを実行するように構成され得る。外部バリア80は内部交換段階50の後に課され、それによりプログラムは内部交換50の後にのみ外部交換50’に進む。図4の処理ユニット2Iに関して示すように、計算段階は任意に(iii)内部交換と(iv)外部バリアとの間に含まれ得ることにも留意されたい。
【0072】
この全体的なシーケンスは(例えばコンパイラによってそのように生成される)プログラムによって強制される。実施形態では、プログラムはタイル4によって実行されるSYNC命令によってこのように機能するようにプログラムされる。内部同期及び交換は、別の処理ユニット2上の任意のタイル又は他のエンティティには及ばない。シーケンス(i)~(v)((iii)と(iv)との間の前述の任意の計算段階を有する)は、一連の全体的な反復において繰り返され得る。反復ごとに、外部同期及び交換の前に内部計算、同期、及び交換(i)~(iii)の複数のインスタンスがあり得る。即ち、(iv)~(v)、即ち外部同期及び交換の前に、(この順序を保持する)(i)~(iii)の複数のインスタンス、即ち複数の内部BSPスーパーステップが実装され得る。更に、タイル4の何れかが、他のタイル4と並行して内部同期及び交換(ii)~(iii)の独自のインスタンスをそれぞれ実行する可能性があることにも留意されたい。
【0073】
従って、全体的なBSPサイクル(i)~(v)ごとに、同期が内部でのみ実行されるように制約されるサイクル(ii)~(iii)の少なくとも1つの部分がある。
【0074】
外部交換50の間、通信は外部のみであることに限定されず、つまり一部のタイル4は内部交換のみを実行することができ、一部のタイル4は外部交換のみを実行することができ、一部のタイル4は混合を実行できることに留意されたい。
【0075】
更に図4に示すように、一部のタイル4は計算段階中にローカル入出力を行うことができる。例えばそれらのタイルは、ホスト又は他の種類の外部記憶域とデータを交換することができる。
【0076】
図4に示すように、任意の所与のBSPスーパーステップにおいて、任意の又は全てのタイルがヌル計算段階52又はヌル交換段階50を有することが概して可能であることにも留意されたい。
【0077】
内部バリア同期及び外部バリア同期の両方について、バリア同期に参加するタイル4は同期グループと呼ばれる。同期グループは、まとめることでタイルの同期グループが一緒に同期することを可能にする、1組のハードウェア資源である同期ゾーンによって提供される。同期ゾーンのそれぞれは、個々の同期ゾーンの設定に応じてタイル4の異なる同期グループを含むように個別に構成可能である。これらの設定を修正することにより、個別のタイル4を同期ゾーンと関連付けること又は関連付けを解除することができる。接続された処理ユニット2のシステムにわたって複数の同期ゾーンが提供される。
【0078】
同期グループに属する処理ユニット2のタイル4のそれぞれについて、そのタイル4がバリア同期に達するとタイル4は同期要求を発行する。処理ユニット2に関連する同期ロジックは、同期グループに属する処理ユニット2のタイル4の全てが同期要求を発行したときを判定するように構成される。それらのタイル4の全てが同期要求を発行すると、同期ロジックはそれらの同期要求を肯定応答し、又は同期ゾーンの更なるエンティティに同期要求を伝播する。更なるエンティティは、ホストシステムとデータを交換するためのプロキシ、又は別の処理ユニット2に関連する同期ロジックであり得る。
【0079】
同期要求が別の処理ユニット2に関連する同期ロジックに伝播される場合、同期要求に応答してその別の処理ユニット2に関連する同期ロジックが取る動作は、そのロジックが同期ゾーンのマスタとして定義されているか、又は同期ゾーンの伝播ノードとして定義されているかに依存する。同期ゾーンの伝播ノードは、自らが受信した同期要求を同期ゾーンに関して定義されたマスタに向けて伝播する。同期マスタは、その同期ゾーンに関して定義された同期グループに属するタイル4を含む処理ユニット2のそれぞれについて同期要求を受信すると、同期グループに属するタイル4を含むそれらの他の処理ユニット2(自らの処理ユニット2とは別である)のそれぞれに関連する同期ロジックに同期肯定応答を返す。同期マスタは、同期グループに属する自らの処理ユニット2内のタイル4のそれぞれにも同期肯定応答を返す。タイル4を含む他の処理ユニット2の各同期ロジック(即ち伝播ノード)は同期グループに属する、同期マスタから生じる同期肯定応答を受信すると、同期グループに属するその処理ユニット2のタイル4に同期肯定応答を返す。同期肯定応答を受信することに応答し、同期グループのタイル4はバリア同期を通過し、交換段階中に同期グループに属する他の処理ユニット2のタイル4とデータを交換する。この異なる処理ユニット2間のデータの交換は、先の出願である米国特許出願第15/886,065号明細書に記載されているように非時間決定論的な方法で行われる。
【0080】
本願の実施形態によれば、処理ユニット2内のタイル4は2つ以上の異なる外部同期グループに分けることができ、それにより同じ処理ユニット2のタイル4の異なる組が、その処理ユニットの外部のタイル4の異なる組とそれぞれ同期する。この概念については、図5A図5E図6A、及び図6Bに関して本明細書でより詳細に説明する。
【0081】
本明細書で同期ネットワークという用語は、同期ゾーンに関して定義された同期グループに属するタイル4間のバリア同期を調整するために、同期要求/肯定応答を交換するために使用される同期ゾーンのための接続された同期伝播ノード/回路を指すために使用する。同期ネットワーク内で定義されたマスタノードに向けて伝送される同期要求は、同期ネットワーク内の「上流」に伝送されるという。同期ネットワーク内で定義されたスレーブノードに向けて伝送される同期肯定応答は、同期ネットワーク内の「下流」に伝送されるという。同期ネットワークの概念は、図7Bに関して更に詳細に説明する。
【0082】
集積回路500a(即ちチップ500a)の一例を示す図5Aを参照する。このような複数の同様のチップが一緒に接続されてもよい。この説明の残りの部分では、チップ500aの一例がその1つである接続されたチップをチップ500と呼ぶ。各チップ500は、タイル4を含む処理ユニット2を含む。各チップ500の処理ユニット2は、ホストシステムによって提供される作業負荷を処理するためのアクセラレータとして機能するため、各チップ500は処理装置500又はアクセラレータサブシステム500と呼ぶこともできる。本明細書の全体を通して処理装置500をチップ500として記載するが、一部の実装形態ではかかる処理装置500が同じ集積回路上に実装され得ることは排除しない。
【0083】
複数のチップ500の中から識別するために、図5Aに示す特定のチップをチップ500aと呼ぶ。同様に、複数の処理ユニット2の中から識別するために、図5Aに示す特定の処理ユニットを処理ユニット2aと呼ぶ。以下に記載するチップ500a及び処理ユニット2aの特徴は、チップ500及び処理ユニット2それぞれの特徴でもある。
【0084】
処理ユニット2a内のタイル4のそれぞれは、異なる種類のバリア同期に参加することができる。第1の種類のバリア同期は、同じ処理ユニット2aのタイル4のみが参加する内部同期である。
【0085】
第2の種類の同期は、同期用の同期グループが、処理ユニット2aのタイル4を含むことに加え、ローカル有線接続上でアクセス可能な1つ又は複数のチップ500上のタイル4も含む外部有線同期である。外部有線同期では、異なる種類の同期メッセージを伝送するために使用される専用配線上で同期メッセージがチップ500間で交換される。外部有線同期の交換段階中にチップ500間で交換されるアプリケーションデータは、同期に参加するチップ500間のPCIe接続上で送信される。
【0086】
第3の種類の同期は、ホストが関与する外部同期である。この場合、ホストと処理ユニット2aとの間でデータが交換される交換段階の前に、ホスト同期プロキシ(HSP)が処理ユニット2aと同期メッセージを交換することによってバリア同期に参加する。
【0087】
第4の種類の同期は、同期用の同期グループが、処理ユニット2aのタイル4を含むことに加え、パケット交換ネットワーク(例えばイーサネットネットワーク)上でアクセス可能な1つ又は複数のチップ500上のタイル4も含む外部パケットベースの同期である。外部パケットベースの同期では、パケット交換ネットワーク上でアプリケーションデータをチップ500間で送信することに加え、同期メッセージも同じパケット交換ネットワーク上で送信される。
【0088】
処理ユニット2a内のタイル4のそれぞれが異なる種類の同期に参加できるようにするために、処理ユニット2aには複数の同期ゾーンが設けられる。実施形態では、処理ユニット2aに対して30個の異なる同期ゾーンが設けられ、これらの同期ゾーンのそれぞれは処理ユニット2aのタイル4の1つ又は複数を含む同期グループを含むように構成可能である。各同期ゾーンは、タイル4の異なる同期のグループ分けを含むように個別に構成可能である。
【0089】
同期ゾーンのそれぞれは、外部バリア同期用の外部同期ゾーンとして(この場合、対応する同期グループは他の処理ユニット2のタイル4を含む)、又は内部バリア同期用の内部同期ゾーンとして(この場合、その同期ゾーン用の同期グループは処理ユニット2aのタイル4に限定される)構成することができる。
【0090】
同期ゾーンは、その同期ゾーンに提供されるハードウェアに応じて、及びその結果、その同期ゾーンを使用して実装される同期の種類に応じて様々な組に分類することができる。第1の1組の同期ゾーンは、上述した第1の種類の同期(即ち内部同期)又は上述した第2の種類の同期(即ち外部有線同期)に使用するように構成され得る同期ゾーンである。処理ユニット2aに対して30個の同期ゾーンを定義する実施形態では、(同期ゾーン1~22とラベル付けされる)これらのゾーンの最初の22個が第1の1組の同期ゾーンに属する。
【0091】
第1の1組の同期ゾーンのうち、これらの同期ゾーンのサブセットはホストが関与することを伴う通信にも使用することができ、即ち上記で論じた第3の種類の同期に使用することができる。第1の1組の同期ゾーンが22個の同期ゾーンを含む実施形態では、(同期ゾーン1及び2とラベル付けされる)これらの同期ゾーンの2つをバリア同期に使用することができ、その後ホストと処理ユニット2aのタイル4との間でデータ交換が行われる。
【0092】
第2の1組の同期ゾーンは、上述した第1の種類の同期(即ち内部同期)又は上述した第4の種類の同期(即ち外部パケットベースの同期)に使用され得る同期ゾーンである。処理ユニット2aに対して30個の同期ゾーンが定義されている実施形態では、(同期ゾーン23~30とラベル付けされる)これらのゾーンの最後の8個が第2の1組の同期ゾーンに属する。
【0093】
上述したように、同期グループの一部である異なるタイル4間の同期を調整するために、同期要求及び同期肯定応答の交換がタイル4間で行われる。同期要求が伝播され肯定応答される同期ネットワークを通る経路は、同期グループに属するタイル4間の同期を調整するために使用中の同期ゾーンに適用される構成に依存する。
【0094】
図5Aは、処理ユニット2aがタイル4とGSP58との間に同期コントローラ回路55(IPU同期コントローラ55として示す)を含むことを示す。IPU同期コントローラ55は、内部バリア同期に対する同期要求を肯定応答するので、内部同期コントローラ55とも呼ばれることがある。IPU同期コントローラ55は、タイル4から集約された同期要求を受信し、GSP58のレジスタ501内の設定に応じて行うべきアクションを決定する。レジスタ501内の設定は、各同期ゾーンについて、その同期ゾーンが内部として定義されるか又は外部として定義されるかを定義する。レジスタ501内の設定の指示は、GSP58とIPU同期コントローラ55との間のインタフェース502上でIPU同期コントローラ55に提供される。30個の同期ゾーンの何れも外部又は内部として定義され得る。
【0095】
特定の同期ゾーンに関連する同期要求がIPU同期コントローラ55において受信されるとき、その同期ゾーンがレジスタ501内で内部同期ゾーンとして定義されている場合、IPU同期コントローラ55は処理ユニット2aのタイル4に対して同期肯定応答を送信させる。IPU同期コントローラ55は更に、GSP58のインタフェース上でアサートされるように同期要求信号をGSP58に渡す。このことは、GSP58が内部同期に関するトレースデータのログを取ることを可能にする。同期要求信号はGSP58の関連インタフェース上で一時的にアサートされ、同期グループのタイル4がIPU同期コントローラ55から同期肯定応答を受信し、それに応答して自らの同期要求信号をデアサートするとき、デアサートされる。
【0096】
同期要求がIPU同期コントローラ55において受信され、その同期要求の同期ゾーンがレジスタ501内で外部同期ゾーンとして定義されている場合、IPU同期コントローラ55は同期要求の特定の同期ゾーンに関連するGSP58のインタフェース上で同期要求をGSP58に転送する。図5Aに示すように、GSP58は、そのそれぞれが処理ユニット2aに設けられた同期ゾーンの1つに関連する幾つかのインタフェース(IS0~IS29とラベル付けされる)を有する。同期コントローラ55は、タイル4から受信した同期要求を、その同期要求と同じ同期ゾーンに関連するインタフェース(IS0~IS29)の1つの上で提供する。これに応答してGSP58は同期肯定応答を返し、同期肯定応答は同期要求が提供されたインタフェースIS0~IS29の同じものの上で送信される。GSP58から返された同期肯定応答が、処理ユニット2a内のタイル4のそれぞれに提供される。
【0097】
同期要求及び同期肯定応答を分配するために、IPU同期コントローラ55は複数組の配線を含み、配線の各組は異なる同期ゾーンに関連する。配線の各組は、タイル4から個々の同期ゾーンの同期要求がその上で受信される同期要求配線と、GSP58から個々の同期ゾーンの同期肯定応答がその上で受信される同期肯定応答配線とを少なくとも含む。配線の各組は、同期要求及び肯定応答をその上で渡すように構成される、GSP58のインタフェースIS0~IS29の異なるものに関連付けられている。
【0098】
各タイル4がどの同期ゾーンに参加するのかを各タイル4が示すことを確実に示すために、個々のタイル4は、処理ユニット2aに関して定義された同期ゾーンの1つにそのそれぞれが関連する複数の専用同期要求配線も有する。各タイル4は、特定の同期ゾーンに関連するバリア同期に参加する場合、その同期ゾーンに関連する同期要求配線上で信号をアサートすることによって同期要求を発行する。各タイル4は、処理ユニット2aに関して定義された同期ゾーンの1つにそのそれぞれが関連する複数の専用同期肯定応答配線も有する。各タイル4は、同期ゾーンの同期要求配線上で同期要求を発行した後、同期ネットワーク内の上流ノードから、その同期ゾーンに関連する自らの同期肯定応答配線上で同期肯定応答を受信する。これに応答し、タイル4はバリア同期後の交換段階に進む。
【0099】
本願の実施形態によるタイル4の一例を示す図5Bを参照する。タイル4は、命令及びデータを記憶するためのメモリ51を含む。実行ユニット52は、メモリ51からロードされた命令を実行して、同じくメモリ51からロードされるデータに対する演算を実行するように構成される。その後、演算の結果がメモリ51内に記憶される。タイル4は加えて、メモリ51内に記憶するデータを受信するためのデータ入力インタフェース59を含む。タイル4は、自らが参加する交換段階の少なくとも一部の間にデータ出力インタフェース54上でデータを送信するように、及び自らが参加する交換段階の少なくとも一部の間にデータ入力インタフェース59からデータを受信するように構成される。
【0100】
タイル4は、同期要求配線上で同期要求を送信するための1つ又は複数の同期出力インタフェース60を含む。インタフェース60に接続された複数の同期要求配線が示されており、これらの配線のそれぞれは特定の同期ゾーンに関連付けられている。タイル4がメモリ51内に保持された自らのコンパイル済みコード内でバリア同期に達すると、実行ユニット52が同期命令を実行し、バリア同期用の同期ゾーンが同期命令のオペランドとして提供される。同期命令の実行に応答し、実行ユニット52は、バリア同期用の同期ゾーンに関連する適当な同期要求配線上の同期出力インタフェース60上で同期要求信号をアサートさせる。
【0101】
タイル4は、同期肯定応答配線上で同期肯定応答を受信するための1つ又は複数の同期入力インタフェース61も含む。インタフェース61に接続された複数の同期肯定応答配線が示されており、これらの配線のそれぞれは特定の同期ゾーンに関連付けられている。同期命令を実行し、同期ゾーンに関連する同期要求を伝送した後、タイル4はその同期ゾーンに関連する同期肯定応答配線上で同期肯定応答を待つ。このような肯定応答を受信した後、タイル4は、タイル4が同期ゾーンに関して定義された同期グループに属する1つ又は複数の他のタイル4と又はホストとデータを交換する交換段階に進む。
【0102】
特定の同期グループに属する処理ユニット2aのタイル4の全てが要求をアサートしたときをGSP58が判定するために、タイル4は自らが関連しない(即ち自らが同期ゾーンに関して定義された同期グループの一部ではない)同期ゾーンの全てについて同期要求を継続的にアサートするように構成される。このようにして、特定の同期ゾーンに関連するタイル4の全てがその同期ゾーンに対する同期要求を(以前にではなく)アサートすると、処理ユニット2内のタイル4の全てがその同期ゾーンに対する同期要求をアサートすることになる。処理ユニット2aのタイル4から受信した同期要求を集約し、処理ユニット2aの集約された同期要求をチップ500aのIPU同期コントローラ55に提供するために、同期集約回路がチップ500a内に設けられる。集約は、同期要求が処理ユニット2a上のタイル4の全てによってアサートされると、IPU同期コントローラ55が同期ゾーンに対する集約された同期要求を検出するように実行される。従って、IPU同期コントローラ55は、処理ユニット2aに属する同期ゾーンに関して定義された同期グループの全てのタイル4によって同期要求がアサートされると、その同期要求を検出する。
【0103】
外部同期コントローラ58は、他のチップ500との間の同期要求を伝播及び肯定応答するための同期ロジックを含み、これについては後で図7Aに関してより詳細に説明する。本明細書の全体を通して外部同期コントローラ58はグローバル同期ペリフェラル(GSP)と呼ぶ。
【0104】
処理ユニット2aの異なるタイル4によって発行された同期要求の集約を示す図5Cを参照する。図5Cに示す例は、単一の同期ゾーンに関連する同期要求配線のみを示す。しかし、このような同等の同期要求配線が同期ゾーンごとに設けられることが理解されよう。図5Cに示すように、チップ500aは、異なるタイル4から受信した同期要求信号を集約するための同期集約回路56を含む。同期集約回路56は、異なるタイル4から同期要求配線上で受信した異なる同期要求間のAND演算を実行するように構成される複数のANDゲートを含むことができる。同期集約回路56は、同期要求が処理ユニット2aのタイル4の全てによって同期ゾーンに関連する同期要求配線上でアサートされる場合、集約された同期要求(IPU同期コントローラ55に提供される)を出力する。その同期ゾーンに関して定義された同期グループに属さないタイル4の全てが常にその同期ゾーンに対する同期要求をアサートするので、同期集約回路56は、その同期ゾーンに対する同期グループに属するタイル4からの同期要求を待ち、かかる同期要求はタイル4がバリア同期に達したときにタイル4が発行する。これらの同期要求を受け取ると、集約回路56は集約された同期要求をIPU同期コントローラ55に提供する。IPU同期コントローラ55は、(同期ゾーンが内部として構成されている場合)GSP58からの同期肯定応答を待たずに、集約された同期要求を肯定応答することによって、又は(同期ゾーンが外部として構成されている場合)集約された同期要求をGSP58に伝播し、GSP58からの応答として同期肯定応答を待つことによって応答する。
【0105】
図5Dを参照すると、タイル4のそれぞれへの同期肯定応答の分配が示されている。図5Dに示す例は、図5C内で同期要求集約配線が示されているのと同じ同期ゾーンであり得る単一の同期ゾーンに関連する同期肯定応答配線を示す。このような同期肯定応答分配配線の別個の組が同期ゾーンごとに設けられることが理解されよう。同期肯定応答は、IPU同期コントローラ55から生じ、IPU同期コントローラ55によって同期分配回路57に提供され得る。このような同期肯定応答は、(同期ゾーンが内部同期に関して構成されている場合)IPU同期コントローラ55において受信される同期要求に応答してIPU同期コントローラ55によって生成される。このような同期肯定応答は、GSP58から同期分配回路57に代わりに提供される場合もある。何れの場合も、同期肯定応答信号は同期分配回路57において受信され、同期分配回路57は処理ユニット2aのタイル4のそれぞれに同期肯定応答信号をアサートするように構成される。同期ゾーンに関して定義された同期グループに属さないタイル4は、同期肯定応答を無視することができる。しかし同期グループに属するタイル4は、同期グループの1つ又は複数の他のタイル4と又はホストとデータを交換する交換段階に進む。
【0106】
再び図5Bを参照し、各タイル4は、個々のタイル4が同期ゾーンのどれに属するのかを示すレジスタ53を含む。レジスタ53は、同期ゾーンのそれぞれについて、タイル4がその同期ゾーンについて定義された同期グループに属するのか属さないのかを示すビットマップを記憶する。タイル4が関連しない各同期ゾーンについて、タイル4は関連する同期要求配線上で同期要求を継続的にアサートする。タイル4が関連する各同期ゾーンについて、タイル4はその同期ゾーンに関連するバリア同期に達すると、関連する同期要求配線上で同期要求をアサートする。タイル4は、その同期ゾーンに関連する同期肯定応答を受信した後、自らが関連する同期ゾーンの同期要求をデアサートする。
【0107】
図5Aに示すシステムは、処理ユニット2のタイル4を2つ以上の独立同期グループに分けることにより、単一の処理ユニット2が複数の外部同期に参加する新しい種類のバリア同期を実装するために使用することができる。図5Aは、第1の1組のタイル64及び第2の1組のタイル65を示す。第1の1組のタイル64は、1つ又は複数のタイル4を含む。第2の1組のタイル65は、1つ又は複数のタイル4を含む。
【0108】
第1の1組のタイル64は第1の同期グループに属し、この第1の同期グループは、第1の1組のタイル64のタイル4を含むことに加え、1つ又は複数の他の処理ユニット2のタイル4も含む。具体的には、第1の同期グループは更なる処理ユニット2に属する第3の1組のタイルを含む。第2の1組のタイル65は第2の同期グループに属し、この第2の同期グループは、第2の1組のタイル65のタイル4を含むことに加え、1つ又は複数の他の処理ユニット2のタイル4も含む。具体的には、第2の同期グループは、第1の同期グループに属する第3の1組のタイルを有する更なる処理ユニット2と同じでも異なってもよい更なる処理ユニット2に属する第4の1組のタイルを含む。
【0109】
第1の1組のタイル64に属するタイル4のそれぞれは、第1の同期グループのバリア同期に達すると、第1の同期グループのバリア同期をサポートするように構成される同期ゾーンに関連する自らの同期要求配線上で同期要求をアサートする。第1の1組のタイル64のタイル4の全てから同期要求を受信することに応答し、同期集約回路、例えば回路56が同期要求を集約し、集約された同期要求をGSP58に提供する。集約された同期要求は、第1の同期グループのバリア同期をサポートするように構成される同期ゾーンに関連するGSP58のインタフェース(IS0からIS29)の1つの上で送信される。その後、同期分配回路、例えば回路57がGSP58から対応する同期肯定応答を受信する。この同期肯定応答は、第1の同期グループの同期ゾーンに関連し、同期要求がその上で配信されたインタフェース(IS0からIS29)の同じものの上から受信される。この同期肯定応答を受信することに応答し、同期分配回路は第1の1組のタイル64内のタイル4のそれぞれに対して同期肯定応答を送信させる。同期肯定応答の受信後、第1の1組のタイル64のタイル4は、同じく第1の同期グループに属する他の処理ユニット2上のタイル4とデータを交換する交換段階に入る。
【0110】
同様の同期要求/肯定応答プロセスが第2の同期グループに対して実行される。第2の同期グループのバリア同期は、第1の同期グループのバリア同期と異なる同期ゾーンによって提供される。このプロセスは、第1の同期グループに対して実行される同期要求/肯定応答プロセスと同時だが非同期的に行われ得る。このプロセスの一環として、第2の1組のタイル65に属するタイル4のそれぞれは、第2の同期グループのバリア同期に達すると、第2の同期グループのバリア同期をサポートするように構成される同期ゾーンに関連する自らの同期要求配線上で同期要求をアサートする。第2の1組のタイル65のタイル4の全てから同期要求を受信することに応答し、同期集約回路、例えば回路56が同期要求を集約し、集約された同期要求をGSP58に提供する。集約された同期要求は、第2の同期グループのバリア同期をサポートするように構成される同期ゾーンに関連するGSP58のインタフェース(IS0からIS29)の1つの上で送信される。その後、同期分配回路、例えば回路57がGSP58から対応する同期肯定応答を受信する。この同期肯定応答は、第2の同期グループの同期ゾーンに関連し、同期要求がその上で配信されたインタフェース(IS0からIS29)の同じものの上でGSP58によって出力される。この同期肯定応答を受信することに応答し、同期分配回路57は第2の1組のタイル65内のタイル4のそれぞれに対して同期肯定応答を送信させる。同期肯定応答の受信後、第2の1組のタイル65のタイル4は、同じく第2の同期グループの一部である他の処理ユニット2のタイル4とデータを交換する交換段階に入る。
【0111】
第1の同期グループ及び第2の同期グループに対して実行される同期及び交換プロセスは独立しているので、第1の同期グループ及び第2のグループの交換段階は互いに別個でありながら時間的に重複し得る。
【0112】
第1の1組のタイル64に属するタイル4及び第2の1組のタイル65に属するタイル4に加え、他のタイル4が図5Aの処理ユニット2の一部として示されている。第1の1組のタイル64及びタイル65の第2のものが上述した同期及び交換動作を行っている間、これらの他のタイル4は、1つ又は複数の外部同期及び交換に参加すること、1つ又は複数の内部同期に参加すること、又は1つ又は複数の計算段階に参加すること等の他の任意の活動を行うことができる。これらの他のタイル4の同期挙動は、第1の1組のタイル64及び第2の1組のタイル65の同期挙動に対して非同期的である。
【0113】
処理ユニット2aのタイル4を第1の同期グループ560及び第2の同期グループ570にどのように分けるのかについての一例を示す図5Eを参照する。簡単にするために、この図面はこれらの同期グループに属する処理ユニット2aのタイル4(即ち第1の1組のタイル64及び第2の1組のタイル65)だけを示す。図5Eは、チップ500a、500b、500cのシステム550を示す。チップ500のそれぞれがインタフェース580によって互いに接続されており、チップ500はインタフェース580によってデータプレーントラフィックを交換する。インタフェース580は、PCIeによってチップ500a、500b、500c間でデータを送信するためのインタフェースであってもよく、又はイーサネット上でデータを送信するためのインタフェースであり得る。
【0114】
図5Eに示すGSP58は、外部同期を調整するための同期メッセージ(同期要求及び肯定応答を含む)を交換するために互いに接続される。そのそれぞれが同期メッセージの種類に関連する1組の配線(図5Eには不図示)により、GSP58の1つ又は複数が互いに接続され得る。一定の同期ゾーンでは、GSP58は適切な専用配線上で信号をアサートすることによって同期メッセージを交換する。これらの信号及び専用配線上でのその伝送の例を図8に関して以下でより詳細に説明する。GSP58間の信号交換に使用される専用配線は、データプレーントラフィックの交換に使用されるインタフェース580上の接続(例えばPCIe又はイーサネットによって行われる)とは異なる。他の同期ゾーンでは、GSP58はパケット交換ネットワーク(例えばイーサネット)上で同期メッセージを交換するように構成される。パケット交換ネットワーク(例えばイーサネット)上での同期メッセージの交換については、図9A及び図9Bに関してより詳細に説明する。同期メッセージがネットワーク上のパケットによって送信される場合、それらの同期メッセージは、交換段階の間アプリケーションデータの交換に使用されるのと同じインタフェース580上で送受信される。
【0115】
図5Eに示すように、第1の同期グループ560は、チップ500aの処理ユニット2aの第1の1組のタイル64、並びに処理ユニット2bに属する第3の1組のタイル66を含む。第1の同期グループ560のバリア同期を調整するために、2つのチップ500a、500b間で同期要求及び肯定応答を交換するためのプロセスが実行される。自らの計算段階を完了し、第1の同期グループ560のバリア同期に達した後、第1の同期グループ560のタイル4のそれぞれが同期要求を発行し、この同期要求は集約され、そのタイル4の関連するGSP58に提供される。同期要求を受信することに応答し、GSP58は同期要求及び肯定応答をGSP58間で交換する。GSP58間のこれらの同期メッセージの交換は所与の方向性を伴って行われる。換言すれば、GSP58のそれぞれが参加する同期メッセージの交換は、同期メッセージがそのGSP58に関して移動する所与の方向、即ち同期メッセージがそのGSP58から出力されるのか又はそのGSP58に入力されるのかを伴って行われる。同期要求及び肯定応答の交換の方向性は、チップ500a、500b上の2つのGSP58のどちらが第1の同期グループ560を含む同期ゾーンのマスタとして定義されるのかに依存し、同期要求は一方のGSP58からマスタGSP58に伝播され、マスタGSP58は他方のGSP58に同期肯定応答を返答して発行する。
【0116】
2つのチップ500a、500bのGSP58間で同期メッセージが交換された後、各GSP58は、自らの関連するチップ500上のタイル4に対して同期肯定応答を返させる。第1の同期グループ560の各タイル4は、その同期肯定応答を受信し、その同期肯定応答を受信することに応答して第1の同期グループ560の交換段階に進む。第1の同期グループ560の交換段階中、第1の同期グループ560に属する処理ユニット2aのタイル4(即ち第1の1組のタイル64)と、第1の同期グループ560に属する処理ユニット2bのタイル4(即ち第3の1組のタイル66)との間でデータが交換される。このデータは、チップ500a、500b間のインタフェース580によってパケットで送信される。図5Eには、処理ユニット2aのタイル4と処理ユニット2bのタイル4との間で行われるかかるデータ交換590aの一例が示されている。しかし実際には、データ交換は第1の同期グループ560の交換段階中に3つ以上のタイル4間で行われる可能性が高く、何れの方向(即ち処理ユニット2aから処理ユニット2b又は処理ユニット2bから処理ユニット2a)にも行われ得る。
【0117】
図5Eは、チップ500cの処理ユニット2cの第4の1組のタイル67、並びに処理ユニット2aに属する第2の1組のタイル65を含む第2の同期グループ570を更に示す。第2の同期グループ570のバリア同期のために、2つのチップ500a、500bのGSP58を使用して2つのチップ500a、500b間で同期要求及び肯定応答を交換するためのプロセスが実行される。自らの計算段階を完了し、第2の同期グループ570のバリア同期に達した後、第2の同期グループ570のタイル4のそれぞれが同期要求を発行し、この同期要求は集約され、そのタイル4の関連するGSP58に提供される。同期要求を受信することに応答し、2つのチップ500a、500cのGSP58が同期要求及び肯定応答を交換する。同期要求及び肯定応答の交換の方向性は、チップ500a、500c上の2つのGSP58のどちらが第2の同期グループ570を含む同期ゾーンのマスタとして定義されるのかに依存し、同期要求は一方のGSP58からマスタGSP58に伝播され、マスタGSP58は他方のGSP58に肯定応答を返答して発行する。
【0118】
2つのチップ500a、500cのGSP58間の同期メッセージの交換に応答し、各GSP58は、自らの関連するチップ500上のタイル4に対して同期肯定応答を返させる。第2の同期グループ570の各タイル4は同期肯定応答を受信し、その同期肯定応答を受信することに応答して第2の同期グループ570の交換段階に進む。第2の同期グループ570の交換段階中、同期グループ570に属する処理ユニット2aのタイル4(即ち第2の1組のタイル65)と、同期グループ570に属する処理ユニット2cのタイル4(即ち第4の1組のタイル67)との間でデータが交換される。このデータは、チップ500a、500c間のインタフェース580によってパケットで送信される。図5Eには、処理ユニット2aのタイル4と処理ユニット2cのタイル4との間で行われるかかるデータ交換590bの一例が示されている。しかし実際には、データ交換は第2の同期グループ570の交換段階中に3つ以上のタイル4間で行われる可能性が高く、何れの方向(即ち処理ユニット2aから処理ユニット2c又は処理ユニット2cから処理ユニット2a)にも行われ得る。
【0119】
上記で論じたように同じ処理ユニット2aのタイル4を含む異なる同期グループ560、570は、独立同期グループと呼ぶことができる。独立同期グループは、システム550にわたって提供される異なる同期ゾーンを使用してそれぞれ動作する。
【0120】
独立同期グループが確立されると、これらの独立同期グループは、複数の計算及び交換サイクルの間互いに独立に動作し続けることができる。
【0121】
第1の1組のタイル64及び第2の1組のタイル65のための計算交換サイクルの実施形態の一例を示す図6Aを参照する。計算段階、バリア同期、及び交換段階の左側の列は、第1の同期グループに属する処理ユニット2aのタイル4(即ち第1の1組のタイル64)に関して実行される活動を示す。計算段階、バリア同期、及び交換段階の右側の列は、第2の同期グループに属する処理ユニット2aのタイル4(即ち第2の1組のタイル65)に関して実行される活動を示す。
【0122】
図示のように、処理ユニット2a内のタイル4の異なる組が処理ユニット2a内のタイル4のサブセットのみを含む同期によって互いに分かれると、タイル4は自らの同期のグループ分けの中で動作を継続する。第1の1組のタイル64は、第2の同期グループの同期スケジュールに対して非同期的であり独立した第1の同期グループの同期スケジュールに従って動作し続ける。同様に、第2の1組のタイル65は、第2の同期グループの同期スケジュールに対して非同期的であり独立した第2の同期グループの同期スケジュールに従って動作し続ける。
【0123】
図6Aでは、同期スケジュールを第1の同期グループ及び第2の同期グループについてのみ示す。但し、図5Aに関して上記で論じたように、一部の実施形態では処理ユニット2aのタイル4の幾つかが図6Aに示す2つのグループ分けの何れにも属さない場合があることが理解されよう。
【0124】
一部の事例では、或る同期グループに以前属していたタイル4が、異なる同期グループに以前属していたタイル4を含む新たな同期グループを形成するように、同期のグループ分けを変更することが望ましい。自らが参加する同期グループをタイル4が変更するには、新たな同期グループを形成するために解消されている以前の同期グループに属する処理ユニット2aのタイル4の全てを含むバリア同期が実行される。例えば図6Aの例では、第1の1組のタイル64に属する(及び第1の同期グループに以前属していた)1つ又は複数のタイル4が、第2の1組のタイル65に属する(及び第2の同期グループに以前属していた)1つ又は複数のタイル4と同期する1つ又は複数の新たな同期グループを形成する必要があり得る。これを行うために、第1の1組のタイル64と第2の1組のタイル65との間でバリア同期が実行される。図6Aにこれをバリア同期610として示す。バリア同期610は、第1の1組のタイル64に属するタイル4の全てと、第2の1組のタイル65に属するが他の処理ユニット2上のタイル4は含まないタイル4の全てとの間で行われる内部バリア同期である。
【0125】
このバリア同期610に続いて、第1の1組のタイル64及び第2の1組のタイル65のタイル4は、タイル4の少なくとも一部の間でデータが交換される交換段階620に入ることができる。但し一部の実施形態では、バリア同期610はこれらのタイル4の少なくとも一部に対してヌルバリア同期として機能することができ、その後、これらのタイル4は最初に交換段階620に参加するのではなく計算段階に直接入る。
【0126】
バリア同期610は、第1の1組のタイル64及び第2の1組のタイル65のタイル4に使用される同期のグループ分けを再構成するように機能する。図6Bを参照すると、同期のグループ分けを再構成した後でタイル4の同期活動がどのように進行し得るのかについての一例が示されている。この例でタイル4は、バリア同期610(及び任意に交換段階620)の直後に、これらのタイル4が新たな独立同期グループに分割される新たな段階に移行する。但し他の例では、バリア同期610に参加したタイル4の全てを含む同期グループを使用する計算及び交換の幾つかのサイクルが、これらのタイル4に独立同期グループが再び適用される前に実行され得る。
【0127】
図6Bに示すように、バリア同期610及び任意で交換段階620に続き、バリア同期610に参加したタイル4の全てが計算段階に入る。タイル4のそれぞれは自らの計算段階のために割り当てられた自らの計算を終了すると、バリア同期に達する。タイル4の異なるグループ分けの間で異なるバリア同期が強制される。バリア同期640aは、第3の同期グループに属する処理ユニット2aのタイル4に対して強制されることが示されている。バリア同期640bは、第4の同期グループに属する処理ユニット2aのタイル4に対して強制されることが示されている。バリア同期640cは、第5の同期グループに属する処理ユニット2aのタイル4に対して強制されることが示されている。第3、第4、及び第5の同期グループのそれぞれは、他の処理ユニット2に属するタイル4も含むことができ、又は処理ユニット2aのタイル4に限定される場合もある。これらの同期グループは、バリア同期610に続いて第1の1組のタイル64及び第2の1組のタイル65のタイル4が再編成される新たな同期グループである。
【0128】
処理ユニット2aのタイル4のそれぞれは、その同期グループに関して定義された同期スケジュールに従って動作する。第1の1組のタイル64及び第2の1組のタイル65のタイル4は、独立同期グループの2つ以上のうちのタイル4間で強制されるバリア同期630(図6Bの例では、バリア同期630は同期スケジュールが図6Bに示されている3つの独立同期グループの全ての間で行われる)に達するまで、少なくとも3つの独立同期グループの一部として同期し続ける。この時点で、処理ユニット2aのタイル4に対して適用される同期のグループ分けがまた再構成され得る。
【0129】
GSP58をより詳細に示す図7Aを参照する。GSP58は同期要求を受信し、i)それらの同期要求を伝播せずに肯定応答する(その同期ゾーンの同期マスタとして機能する場合)、又はii)それらの同期要求を集約して同期ネットワーク内の上流に伝送する(同期伝播ノードとして機能する場合)ように構成される同期コンバイナ回路70を含む。同期コンバイナ回路70は、処理ユニット2aに関してサポートされる同期ゾーンのそれぞれについて設けられる。この例では、30個の同期ゾーンに対して30個の同期コンバイナ回路70がある。
【0130】
同期マスタノード、同期伝播ノード、及びスレーブノードを含む同期ネットワークの概念を示すために、同期ネットワーク700の一例を示す図7Bを参照する。同期ネットワーク700は、同期マスタ710及び複数の同期伝播ノード720a、720b、720cを含む。実施形態の一例では、同期マスタ710及び同期伝播ノード720a、720b、720cのそれぞれは同期コンバイナ回路70であり、同期ネットワーク700に参加するかかる各同期コンバイナ回路70は異なるGSP58に属するが、同じ同期ゾーンに関連する。同期ネットワーク700は、同期要求の発生元である複数組のスレーブノード730a、730b、730c、730dを更に含む。スレーブノード730a、730b、730c、730dは、同期ネットワーク700に関して定義される同期グループを共に形成する。本明細書で説明する実施形態では、タイル4がバリア同期のスレーブノードとして機能する。スレーブノードは異なる組に分割される。例えば第1の1組のスレーブノード730a、第2の1組のスレーブノード730b、第3の1組のスレーブノード730c、及び第4の1組のスレーブノード730dがある。これらの実施形態では、スレーブノード730a、730b、730c、730dの組のそれぞれが、異なる処理ユニット2のタイル4である。各スレーブノードは、同期ネットワーク700内の上流に要求を発行する。スレーブノードのグループからの同期要求は集約され、同期ネットワーク内の上位のノードに提供される。
【0131】
図7Bに示すように、同期マスタ710及び同期伝播ノード720a、720b、720cのそれぞれは、それぞれのバリア同期について集約された同期要求をそこから受信する1組の関連する下流のスレーブノードを有する。例えば同期伝播ノード720aは、第1の1組のスレーブノード730aに関連する。同期マスタ710及び同期伝播ノード720a、720b、720cが同期コンバイナ70である実施形態では、スレーブノードの組のそれぞれが、その関連する同期コンバイナ70と同じチップ500上のタイル4である。
【0132】
同期伝播ノード720b、720cはどちらも自らの関連するスレーブノード730b、730cから集約された同期要求を受信するが、他の同期伝播ノードからは受信しない。自らの関連するスレーブノード730b、730cから同期要求を受信することに応答し、各同期伝播ノード720b、720cは、同期伝播ノード720aに対して同期ネットワーク700内の上流に同期要求を伝播する。
【0133】
同期伝播ノード720aは、自らの下流ノードのそれぞれから同期要求を受信するまで待機する。これらの下流ノードは、同期伝播ノード720b、720c、及び同期伝播ノード720aに関連する1組のスレーブノード730aを含む。同期伝播ノード720aは自らの下流ノードのそれぞれから同期要求の全てを受信すると、同期マスタ710に同期要求を発行する。
【0134】
同期マスタ710は、自らの下流ノードのそれぞれから同期要求を受信するまで待機する。これらの下流ノードは、同期伝播ノード720a及び同期マスタ710に関連する1組のスレーブノード730dを含む。同期マスタ710は自らの下流ノードのそれぞれから同期要求の全てを受信すると、同期肯定応答を同期伝播ノード720a及びスレーブノード730dに返送する。
【0135】
同期伝播ノード720aは、同期マスタ710から同期肯定応答を受信すると、下流の同期伝播ノード720b、720cのそれぞれ及び自らに関連するスレーブノード730aに同期肯定応答を発行する。同様に、これらの同期肯定応答を受信することに応答し、同期伝播ノード720b、720cは自らの関連するスレーブノード730b、730cに同期肯定応答をそれぞれ発行する。同期ネットワーク700のスレーブの全ては、同期肯定応答を受信することに応答し、バリア同期を通過し、交換段階中にデータを交換する。
【0136】
図7Bの例は、同期マスタ710が1つの下流同期伝播ノード720aのみから同期要求を受信する、同期ネットワーク700の特定の構成を示す。但し他の例では、同期マスタ710は、複数の下流同期伝播ノードから同期要求を受信することができる。同様に、同期伝播ノード720aは2つの下流同期伝播ノード720b、720cから同期要求を受信するが、異なる数の下流同期伝播ノードから同期要求を受信してもよい。
【0137】
再び図7Aを参照し、同期ネットワークに参加する各同期コンバイナ70は、同期ネットワーク内の同期マスタ又は同期伝播ノードの役割を果たす。同期コンバイナ70が同期伝播ノードとして機能する場合、その同期コンバイナ70は、同期ゾーンの同期マスタとして機能する同期コンバイナ70に向けて同期ネットワーク内の上流に同期要求を伝送する。同期ネットワーク内の上流への同期要求の伝送は、別のチップ500上のGSP58に同期要求を伝送することを含む。チップ500a上のタイル4によって外部バリア同期に達すると、同期コンバイナ回路70は、GSP58のインタフェースIS0~IS29の1つの上でそのバリア同期に対応する同期要求を受信する。インタフェースIS0~IS29のそれぞれは異なる同期ゾーンに、従って異なる同期コンバイナ70に関連する。同期要求は、バリア同期に使用される同期ゾーンに関連するインタフェースIS0~IS29の1つの上で処理ユニット2aから送信され、その同期ゾーンに関連する同期コンバイナ回路70において受信される。
【0138】
同期ゾーンのそれぞれは、内部バリア同期のために、処理ユニット2aのタイル4だけを含むローカル同期グループの同期をサポートするように構成することができ、又は他の処理ユニットのタイル4も含むグローバル同期グループの同期をサポートするように構成することができる。処理ユニット2aに対してサポートされる同期ゾーンは、処理ユニット2aのタイル4の異なるグループ分け及び1つ又は複数の他の処理ユニット2上のタイル4の異なるグループ分けを含むように個別に構成可能である。より詳細に説明するように、同期コンバイナ70は、自らの同期ゾーンに関して定義される同期グループに適したやり方で同期要求及び肯定応答を伝播するように構成可能である。この同期要求及び肯定応答の伝播は、GSP58のインタフェースの異なるものの設定に依存する。
【0139】
同期コンバイナ回路70のそれぞれは、自らの同期ゾーンがグローバル同期グループを定義するように構成される場合、自らの関連する同期ゾーンのために同期ネットワーク内でマスタノード又は同期伝播ノードとして機能することができる。
【0140】
マスタノードとして機能する同期コンバイナ回路70は、予期される同期要求の全てを受信した後、同期要求を受信したGSP58のインタフェースの全ての上で同期肯定応答を送信する。例えばマスタノードとして機能する場合、同期コンバイナ回路70は、インタフェースIS0からIS29の自らに関連するものから同期要求を受信し、インタフェースIS0からIS29の自らに関連するものの上で肯定応答を提供する。別のGSPからの同期要求は、(そのGSPを含むチップ500がイーサネットネットワーク上でリモートにアクセス可能な場合)仮想同期コントローラ71によって受信することができ、又は(それらのGSPを含むチップ500が有線同期インタフェース上でローカルにアクセス可能な場合)物理同期インタフェースA~Fの1つ又は複数の上から受信することができる。
【0141】
同期伝播ノードとして機能する場合、同期コンバイナ回路70は、インタフェースIS0からIS29の自らに関連するものから同期要求を受信するように構成される。同期コンバイナ回路70は、同期コンバイナ回路70に関連する同期ゾーンに関して定義される同期ネットワーク内の自らの位置に応じて、1つ又は複数の他のチップ500上の1つ又は複数のGSPから1つ又は複数の同期要求を受信することもできる。別のGSPからの同期要求は、(そのGSPを含むチップ500がネットワーク上でリモートにアクセス可能な場合)仮想同期コントローラ71によって受信することができ、又は(それらのGSPを含むチップ500が有線インタフェース上でローカルにアクセス可能な場合)1つ若しくは複数の物理同期インタフェースA~F上から受信することができる。少なくとも一部の実施形態例では、仮想同期(外部パケットベースの同期と呼ぶこともある)が物理同期(外部配線ベースの同期と呼ぶこともある)と組み合わされず、従ってバリア同期に対する同期要求が別のGSPから受信される場合、i)仮想同期コントローラ71から単一の同期要求が同期コンバイナ70において受信され(同期が仮想同期の場合)、又はii)物理同期インタフェースA~Fの1つ又は複数の上から1つ又は複数の同期要求が同期コンバイナ70において受信される(同期が物理同期の場合)。
【0142】
同期伝播ノードとして機能する同期コンバイナ70は、予期される同期要求の全てを受信した後、別のチップ500上のGSPに対して同期ネットワーク内の上流に同期要求を伝播する。この同期要求は、(同期ネットワーク内の上流のGSPを含むチップ500がネットワーク上でリモートにアクセス可能な場合)仮想同期コントローラ71によって上流に伝播することができ、又は(同期ネットワーク内の上流のGSPを含むチップ500が有線インタフェース上でローカルにアクセス可能な場合)物理同期インタフェースA~Fの1つの上で送信することができる。
【0143】
図7Aでは、同期コンバイナ回路70が異なる組に分割されて示されている。第1の1組の同期コンバイナ回路70(同期コンバイナ#0から#21とラベル付けされる)は、有線接続によってローカルにアクセス可能なチップ500と物理同期インタフェース(PSI A~F)上で通信するように構成される。同期コンバイナ#0から#21のそれぞれは、物理同期インタフェースの何れかの上で同期要求を送受信することができる。同期コンバイナ#0から#21のそれぞれは、物理的同期インタフェースの何れかの上で同期肯定応答を送受信することができる。より詳細に説明するように、第1の1組の同期コンバイナの1つがどの(もしある場合)物理同期インタフェース上で同期メッセージを送受信するように構成されるのかは、GSP58内に保持される構成設定に依存する。
【0144】
同期伝播ノードとして機能する場合、第1の1組の同期コンバイナ70の1つは、処理ユニット2aからの同期要求、及び任意で同期物理同期インタフェースの0個から5個からの同期要求を受信する。同期要求が受信される物理同期インタフェースは、同期コンバイナ70が関連する同期ゾーンに関して定義される同期ネットワークに依存する。1つ又は複数の同期要求を受信することに応答し、同期コンバイナ70は物理同期インタフェースの1つの上で同期ネットワーク内の上流に同期要求を転送する。後の時点において、同期コンバイナ70は、同期要求を送信したのと同じ物理同期インタフェース上から同期肯定応答を受信する。同期コンバイナ70は、同期要求を受信したインタフェース(処理ユニット2aとのインタフェース及び任意の物理同期インタフェースを含む)のそれぞれの上で同期肯定応答を伝播する。
【0145】
同期マスタノードとして機能する場合、第1の1組の同期コンバイナ回路70の1つは、処理ユニット2aからの同期要求及び同期物理同期インタフェースの1個から6個からの同期要求を受信する。同期要求が受信される物理同期インタフェースは、同期コンバイナ70が関連する同期ゾーンに関して定義される同期ネットワークに依存する。2つ以上の同期要求を受信することに応答し、同期コンバイナ70は、同期要求を受信したインタフェース(処理ユニット2aとのインタフェース及び物理同期インタフェースを含む)のそれぞれの上で同期肯定応答を伝送することによって同期要求を肯定応答する。
【0146】
第2の1組の同期コンバイナ回路70(同期コンバイナ#22から#29とラベル付けされる)は、イーサネットネットワーク上でアクセス可能なチップ500との仮想インタフェース(VS0からVS7)上で通信するように構成される。第2の1組の同期コンバイナ70のうち、これらの同期コンバイナ70のそれぞれが仮想同期コントローラ71のインタフェース(VS0からVS7)の異なるものに関連付けられる。例えば、インタフェースVS0は同期コンバイナ回路#22に関連付けることができ、インタフェースVS1は同期コンバイナ回路#23に関連付けること等ができる。第2の1組の同期コンバイナ回路70の同期コンバイナ70のそれぞれは、仮想同期コントローラ71との自らの関連するインタフェース上で同期要求を送受信し、仮想同期コントローラ71との自らの関連するインタフェース上で同期肯定応答を送受信するように動作可能である。より詳細に説明するように、仮想同期コントローラ71は、第2の1組の同期コンバイナ70と他のチップ500上の更なるGSPとの間の同期要求及び肯定応答の交換を可能にする。
【0147】
マスタノードとして機能する場合、第2の1組の同期コンバイナ回路70の1つは、仮想同期インタフェースの自らの関連するものの上からの同期要求及び処理ユニット2aからの同期要求を受信するように構成される。これらの同期要求を受信することに応答し、同期コンバイナ回路70は処理ユニット2aに対して、及び仮想同期コントローラ71への自らの関連する仮想同期インタフェース上で同期肯定応答を伝送する。
【0148】
同期伝播ノードとして機能する場合、第2の1組の同期コンバイナ回路70の1つは、処理ユニット2aから同期要求を受信するように構成される。この同期要求を受信することに応答し、同期コンバイナ回路70は、自らの関連する仮想同期インタフェース上で同期ネットワーク内の上流に同期要求を送信する。これに続いて、同期コンバイナ回路70は、自らの関連する仮想同期インタフェース上から同期肯定応答を受信する。これに応答し、同期コンバイナ回路70は同期肯定応答を処理ユニット2aに対して下流に伝播する。
【0149】
仮想同期インタフェース及び物理同期インタフェースを制御するために、1つ又は複数の制御レジスタ(図7Aには不図示)がGSP58内で定義される。制御レジスタはGCP76によって書き込み可能である。制御レジスタへの書き込み要求はCbusターゲット75によって受信される。1つ又は複数の制御レジスタは、仮想同期インタフェース及び物理同期インタフェースのそれぞれに関連する構成設定を含む。
【0150】
構成設定は、仮想同期インタフェース(VS0からVS7)のそれぞれについて、そのインタフェースが有効化又は無効化されているかどうかの指示を含む。構成設定は、仮想同期インタフェース(VS0からVS7)のそれぞれについて方向性の指示を含む。本明細書で使用するとき「方向性」という用語は、同期要求がGSP58に対して移動する方向を指す。換言すれば、方向性の指示は、インタフェースが別のチップ500上のGSPからGSP58の同期コンバイナ70に同期要求を渡すのか、又はGSP58の同期コンバイナ70から別のチップ上のGSPに向けて同期要求を渡すのかを決定する。
【0151】
仮想同期インタフェースの方向性を定義することにより、1つ又は複数の制御レジスタ内に保持される構成設定は、特定の同期コンバイナ回路70が、自らが関連する同期ゾーンの同期伝播ノードとして機能するのか又は同期マスタとして機能するのかを定義する。
【0152】
構成設定は、物理同期インタフェース(PSI A~F)のそれぞれについて、そのインタフェースが有効化又は無効化されているかどうかの指示も含む。構成設定は、物理的同期インタフェース(PSI A~F)のそれぞれについて方向性の指示を含む。仮想同期インタフェースと同様に、「方向性」という用語は同期要求がGSP58に対して移動する方向を指す。物理同期インタフェースについて、構成設定レジスタは、物理同期インタフェースのそれぞれが関連する同期ゾーン(もしある場合)の指示を含む。
【0153】
物理同期インタフェースの方向性、及び物理同期インタフェースが関連する同期ゾーンを定義することにより、1つ又は複数の制御レジスタ内に保持される構成設定はGSP58による同期要求及び肯定応答の伝播を制御する。インタフェースの方向性及び(物理同期インタフェースについて)それらが関連する同期ゾーンを定義することにより、1つ又は複数の制御レジスタ内に保持される構成設定は、特定の同期コンバイナ回路70が、自らが関連する同期ネットワークの同期伝播ノードとして機能するのか、又は同期マスタとして機能するのかを定義する。第1の1組の同期コンバイナ70のそれぞれは、物理同期インタフェースであって、その同期コンバイナ70と同じ同期ゾーンに関連し、その物理同期インタフェース上から同期コンバイナ70において同期要求が受信されるべきことを方向性が示す、物理同期インタフェースの全ての上で同期要求を受信した後、(伝播ノードとして機能する場合)同期要求を上流に伝播するように、又は(マスタとして機能する場合)同期肯定応答を発行するように動作可能である。第1の1組の同期コンバイナ70のそれぞれは、物理インタフェースであって、その同期コンバイナ70と同じ同期ゾーンに関連し、その物理同期インタフェース上でGSP58から同期要求が送信されるべきことを方向性が示す、物理インタフェース上で同期要求を伝播するように動作可能である。第1の1組の同期コンバイナ70のそれぞれは、物理インタフェースであって、その同期コンバイナ70と同じ同期ゾーンに関連し、その物理同期インタフェース上でGSP58から同期肯定応答が送信されるべきことを方向性が示す、物理インタフェース上で同期肯定応答を伝播するように動作可能である。
【0154】
集合的に、同期ゾーンをサポートするチップ500の全てにわたるGSPの構成設定が同期ゾーンの同期ネットワークを定義する。
【0155】
一例として、構成設定は所与の同期ゾーン(例えば同期コンバイナ#2に関連する同期ゾーン3)が物理同期インタフェースC及びEに関連することを示し得る。構成設定は、物理同期インタフェースCの方向性は、同期要求が物理同期インタフェースC上でGSP58において受信され、同期コンバイナ70(この事例では同期ゾーン3に関連するので同期コンバイナ#2となる)に渡されるものであることを加えて示し得る。構成設定は、物理同期インタフェースEの方向性は、同期コンバイナ70(この事例では同期ゾーン3に関連するので同期コンバイナ#2となる)が、異なるチップ500に送信される同期要求をこのインタフェース上で発行するものであることを更に示し得る。構成設定の結果、バリア同期において、同期コンバイナ#2は物理同期インタフェースCからの同期要求及び処理ユニット2aからの同期要求を受信する。これに応答し、同期コンバイナ#2は物理同期インタフェースE上で同期ネットワーク内の上流に同期要求を伝播する。後の時点において、同期コンバイナ#2は物理同期インタフェースE上から同期肯定応答を受信し、これを物理同期インタフェースC上で同期ネットワーク内の下流に転送し、処理ユニット2aにも転送して、同期ゾーン3に関して定義された同期グループに属するチップ500a上のタイル4の全てに同期肯定応答を提供する。
【0156】
有効化された物理同期インタフェースの何れも、どの時点においても単一の同期ゾーンにのみ関連し得る。これは、物理同期インタフェースの何れも単一の同期ゾーンについてのみ同期メッセージを搬送できることを意味する。各物理同期インタフェースの構成設定は0から22までの値を指定することができ、1から22までの値は個々の物理同期インタフェースが関連する22個の同期ゾーンの1つを識別し、0は物理同期インタフェースが現在何れの同期ゾーンにも関連していないことを指定する。
【0157】
図7Aに示すように、第1の1組の同期コンバイナ回路70は2つのサブセットを含む。サブセットの第1のもの(同期コンバイナ#2から#21)は同期要求を受信し、それに応答し、上述のように同期ネットワーク内の上流に同期要求を伝播し及び/又は肯定応答する。第2のサブセット(同期コンバイナ#0から#1)も、上述のように同期要求を伝播するために及び/又は肯定応答するために同じ動作を実行する。加えて、同期コンバイナ70の第2のサブセットのそれぞれは、(伝播ノードとして機能する場合)同期ネットワーク内の上流に同期要求を伝播する前、又は(同期マスタとして機能する場合)同期ネットワーク内の下流に同期肯定応答を発行する前に、ホスト同期プロキシモジュール(HSP)のクレジットをチェック及びデクリメントすることができる。同期コンバイナ70の第2のサブセットは、HSPをチェックして同期にホストの関与が必要かどうかを判定する。同期コンバイナ回路70によってホストの関与が必要とされるかどうかは、同期要求と共に処理ユニット2aから受信される状態情報に依存して決定される。HSPの使用については、参照により援用する我々の先の米国特許出願第15/886065号明細書の中でより詳細に記載されている。
【0158】
説明してきたように、処理ユニット2aは複数の異なるグローバル同期グループに同時に参加するように動作可能であるため、異なる同期コンバイナ回路70によって実行されるものとして上述した同期伝播動作は時間的に重複し得る。例えば説明したように、物理同期インタフェースC及びEは同期ゾーン3に関連し、同期コンバイナ#2からの同期要求/肯定応答を伝播するように構成され得る。同時に、1つ又は複数の他の物理同期インタフェースが異なる同期ゾーンに関連し、その別の同期ゾーンに関連する同期コンバイナ回路70との間で同期要求/肯定応答を伝播するように構成され得る。
【0159】
図7Aには、GSP58のレジスタ501も示されている。このレジスタ501は、各同期ゾーンが内部として構成されるのか外部として構成されるのかを定義する構成情報を記憶する。これらの指示はインタフェース502上でIPU同期コントローラ55に提供され、IPU同期コントローラ55が、自らが属する処理ユニット2aのタイル4から生じる同期要求を肯定するかどうか判定するために使用される。レジスタ501は、制御バス72上から受信される書き込みによって書き込み可能である。これらの書き込みは、例えばホストシステム上で実行されるソフトウェアから生じ得る。
【0160】
次に、同期メッセージの伝送についてより詳細に説明する。同期要求は、同期ハンドシェイクと呼ばれるプロトコルに従って伝送及び肯定応答される。同期ハンドシェイクは、同期メッセージを交換する同期ネットワーク内のノードのそれぞれの間で行われる。
【0161】
同期ハンドシェイクは2つの異なる信号を使用し、その一方は同期要求がアサートされたかどうかを示すために使用され、他方は同期肯定応答がアサートされたかどうかを示すために使用される。これらの信号は、別々の配線を伝わって伝送されてもよく、又はレジスタの専用ビット内に情報を記憶することによって伝送することができる。例えば同期要求信号は、図5Cに示すタイル4と同期集約回路56との間の配線上で伝送され得る。回路56において生成される集約された同期要求は、回路56とGSP58との間の配線上で送信され得る。同期要求信号は、GSP58の同期コンバイナ回路70において受信されると、同期ネットワーク内の上流に(例えば仮想同期コントローラ71に、又は物理同期インタフェースの1つの上で)伝播され、又は肯定応答される。同様に同期肯定応答信号は、GSP58と同期分配回路57との間の配線上で伝送された後、同期分配回路57とタイル4のそれぞれとの間の配線上で分配され得る。
【0162】
図8を参照すると、同期ネットワーク内の下流の伝播ノードと上流の伝播ノードとの間の同期ハンドシェイクの一例が示されている。上流の伝播ノードは例えば仮想同期コントローラ71とすることができ、下流の伝播ノードは仮想同期コントローラ71とインタフェースするための同期コンバイナ70(例えば同期コンバイナ#22から#29)の1つとすることができる。或いは上流の伝播ノードは同期コンバイナ70とすることができ、仮想同期コントローラ71を下流の伝播ノードとすることもできる。
【0163】
図8では、同期要求信号を「X」としてラベル付けするのに対し、同期肯定応答信号を「Y」としてラベル付けしている。同期ハンドシェイクの開始時に、下流の伝播ノードが同期要求信号をアサートする(1.同期要求のアサートとして図示する)。このことは上流の伝播ノードにおいて同期要求が検出されることを引き起こす。上流の伝播ノードは、肯定応答を受信するまで信号をアサートし続ける。事実上、上流の伝播ノードは同期肯定応答を受信するまでストールする。同期要求に応答し、上流の伝播ノードは同期肯定応答信号をアサートする(2.同期肯定応答のアサートとして図示する)。このことは下流の伝播ノードにおいて同期肯定応答が検出されることを引き起こす。同期肯定応答に応答し、下流の伝播ノードは同期要求信号をデアサートする(3.同期要求のデアサートとして図示する)。上流の伝播ノードは、同期要求信号がデアサートされたことを検出し、同期要求信号のデアサートに応答して同期肯定応答信号をデアサートする(4.同期肯定応答のデアサートとして図示する)。同期肯定応答信号がデアサートされると、同期ネットワークの2つのノード間の同期ハンドシェイクが完了する。
【0164】
図8に例示する)同期要求信号及び同期肯定応答信号は1組の配線上で同期伝播ノードの一部の間で伝送され、配線の少なくとも1つは同期要求の伝送専用であり、配線の少なくとも1つは同期肯定応答の伝送専用である。図7Aに示すGSP58では、インタフェースIS0~IS29のそれぞれが、同期コンバイナ回路70と処理ユニット2aとの間で同期要求/肯定応答信号を運ぶための複数組の配線の1つを含む。同様に、物理同期インタフェースPSI A~Fのそれぞれは、同期コンバイナ回路70と別のチップ500の同期コンバイナ回路との間で同期要求/肯定応答信号を運ぶための複数組の配線の1つを含む。
【0165】
パケット交換ネットワーク上の同期ハンドシェイクを広げるために、同期要求又は肯定応答を表す専用信号のアサートに応答し、同期要求又は肯定応答を表すパケットが生成される。このことは、ハードウェアの専用アイテム(例えば配線)上でアサートされる信号によって表される同期メッセージからデータパケットによって表される同期メッセージへの変換を可能にする。第2の同期伝播回路は、第1の同期伝播回路から受信される信号の1つ又は複数の変化を検出し、検出した変化に応答してネットワーク上でパケットをディスパッチさせるように構成され、パケットは信号の1つ又は複数の変化によって表される同期要求又は同期要求に対する肯定応答を示す。ネットワーク上でディスパッチされるパケットは、信号それぞれの状態の指示を含む。このことは、パケットを受信する同期伝播回路がパケットから信号それぞれの状態の指示を抽出すること、及びハードウェアの専用アイテム上で信号を適宜アサートすることによって同期要求/肯定応答を伝播することを可能にする。
【0166】
図9Aを参照すると、専用信号とパケットとの間で変換を行うための機器の一例が示されている。機器900は、第1の同期伝播回路910及び第2の同期伝播回路920を含む。第2の同期伝播回路920は、第2の同期伝播回路920によって実行されるものとして本明細書に記載する動作を実行するための処理回路960を含む。処理回路960は、これらの動作の少なくとも一部を実行するためのコンピュータ可読命令を実行するように構成されるプロセッサを含み得る。処理回路960は有限状態機械を実装する。処理回路960は、これらの動作の少なくとも一部を実行するための書替え可能ゲートアレイ(FPGA)又は特定用途向け集積回路(ASIC)を含み得る。
【0167】
第1の同期伝播回路910と第2の同期伝播回路920との間のインタフェースは、第1の配線930及び第2の配線940を含む。第1の同期伝播回路910を第2の同期伝播回路920に接続する第1の配線930を図9Aに示す。第1の配線930は、第1の同期伝播回路910と第2の同期伝播回路920との間で同期要求信号を提供するように構成される。第1の同期伝播回路910は、配線930上で信号をアサートすることによって第2の同期伝播回路920に同期要求を送信することができる。第2の同期伝播回路920は、配線930上で信号をアサートすることによって第1の同期伝播回路910に同期要求を送信することができる。同期要求が送信される方向はインタフェースの方向性に依存する。
【0168】
図9Aには、第1の同期伝播回路910を第2の同期伝播回路920に接続する第2の配線940も示されている。第2の配線940は、第1の同期伝播回路910と第2の同期伝播回路920との間で同期肯定応答信号を提供するように構成される。第1の同期伝播回路910は、配線940上で信号をアサートすることによって第2の同期伝播回路920に同期肯定応答を送信することができる。第2の同期伝播回路920は、配線940上で信号をアサートすることによって第1の同期伝播回路910に同期肯定応答を送信することができる。同期肯定応答が送信される方向はインタフェースの方向性に依存する。
【0169】
第2の同期伝播回路920は、同期要求及び同期肯定応答の状態情報を記憶するための記憶域950を保持する。記憶域950は、第1の同期伝播回路910によって配線930、940上の信号が更新されるとき更新される。第1の同期伝播回路910が同期要求信号をアサートすると、第2の同期伝播回路920は同期要求信号がアサートされたことを示すように記憶域950を更新する。第1の同期伝播回路910が同期要求信号をデアサートすると、第2の同期伝播回路は同期要求信号がデアサートされたことを示すように記憶域950を更新する。第1の同期伝播回路910が同期肯定応答信号をアサートすると、第2の同期伝播回路920は同期肯定応答信号がアサートされたことを示すように記憶域950を更新する。第1の同期伝播回路910が同期肯定応答信号をデアサートすると、第2の同期伝播回路920は同期肯定応答信号がデアサートされたことを示すように記憶域950を更新する。
【0170】
第1の同期伝播回路910が配線930、940の何れかの上で信号の1つをアサート又はデアサートすると、第2の同期伝播回路920はネットワーク91上でパケットをディスパッチすることによって応答し、パケットは配線930、940上の信号の更新された状態の指示を含む。このことは、同期要求、同期肯定応答、同期要求のデアサート、又は同期肯定応答のデアサートの1つをパケットが示すことを可能にする。パケットは同じ同期ゾーンに属する別の装置にネットワーク91上でディスパッチされる。
【0171】
第2の同期伝播回路920は、別の装置上の同期要求/肯定応答信号の状態変化を示すパケットをネットワーク91から受信することができる。このようにして、パケットはネットワーク91上で送信される同期要求/肯定応答を表すことができる。パケットを受信することに応答し、第2の同期伝播回路920は、パケットからの状態更新を記憶域950内に記録する。第2の同期伝播回路920は、パケット内で示される状態更新に応じて配線930、940上で信号をアサートする。例えば同期要求の状態がアサートされることをパケットが示す場合、第2の同期伝播回路920は配線930上で同期要求信号をアサートする。同期要求の状態がデアサートされることをパケットが示す場合、第2の同期伝播回路920は配線930上で同期要求信号をデアサートする。同期肯定応答の状態がアサートされることをパケットが示す場合、第2の同期伝播回路920は配線940上で同期要求信号をアサートする。同期肯定応答の状態がデアサートされることをパケットが示す場合、第2の同期伝播回路920は配線940上で同期肯定応答信号をデアサートする。
【0172】
次に、同期変換処理が実行される第1の実施形態例について説明する。この例では、同期変換プロセスは、図7Aに関して上記で論じたGSP58及びGCP76によって実行される。この第1の実施形態例では、第1の同期伝播回路910が同期コンバイナ回路70を含むのに対し、第2の同期伝播回路920は仮想同期コントローラ71及びGCP76を含む。
【0173】
第1の1組の同期コンバイナ回路70の1つが仮想同期コントローラ71に対して発行するための同期要求又は同期肯定応答を有する場合、同期コンバイナ回路70は、同期要求又は肯定応答を表す信号の1つを仮想同期インタフェースVS0からVS7の1つの上でアサートする。
【0174】
仮想同期コントローラ71は、仮想同期インタフェースの関連するものの上での同期要求/肯定応答のアサートを示すための複数のレジスタビットを記憶するための記憶域を含む。後述するように、この記憶域は、関連する同期ゾーンに対する同期要求/肯定応答のネットワーク上での受信を示すために設定され得る1組のレジスタビットも記憶する。表1はレジスタビットを示す。VSOUT22~29とラベル付けされたビットは、仮想同期コントローラ71における同期コンバイナ70からの同期要求/肯定応答の受信を示す。VSIN22~29とラベル付けされたビットは、チップ500aにおけるネットワーク91上からの同期要求/肯定応答の受信を示す。
【0175】
【表1】
【0176】
図9Bを参照すると、専用ハードウェア上の同期要求/肯定応答ハンドシェイク信号から同期パケットに変換するための、及びその逆を行うためのチップ500a上の機器が示されている。図示のように、仮想同期コントローラ71は表2に示すレジスタビットを記憶するための記憶域93を含む。記憶域93は、VSINビットを保持する仮想同期インタフェースデータ入力レジスタ(VSIDIR)及びVSOUTビットを保持する仮想同期インタフェースデータレジスタ(VSIDR)としてラベル付けされた2つのレジスタを含むものとして示す。
【0177】
VSINビット及びVSOUTビットの値は、仮想同期インタフェースの現在の状態を示す。VSINビット及びVSOUTビットのそれぞれは、その対応する同期ゾーンに対して同期要求又は同期肯定応答がアサートされていないときの状態を表すデフォルト値(例えば0)を有する。VSINビット及びVSOUTビットのそれぞれは、同期要求又は肯定応答がアサートされたと指示するように(例えば1に)設定され得る。VSIN及びVSOUTビットのそれぞれは、自らの設定を引き起こした同期要求又は肯定応答のデアサートに応答して自らのデフォルト値に戻される。
【0178】
図9Bにグローバル通信プロキシ(GCP)76を示す。GCP76はパケット交換ネットワーク91とインタフェースし、別のチップ500において受信するためのパケットをネットワーク91上で送信するように、及び別のチップ500からネットワーク91上でパケットを受信するように構成される。GCP76が送受信するように構成されるパケットは、チップ500間でネットワーク91上で同期要求及び同期肯定応答を伝えるための同期メッセージパケットを含む。
【0179】
GCP76は、表2に示すレジスタビットを記憶するための記憶域94も含む。記憶域94内に保持されるレジスタビットは、記憶域93内に保持されるレジスタビットのミラーである。仮想同期コントローラ71は、自らの仮想同期インタフェースVS0からVS7の1つの上で受信される同期要求/肯定応答に応じて記憶域93内のVSOUTビットの1つを設定するたびに、GCP76に書き込み要求を発行する。この書き込み要求は、図7Aに示すCBUSイニシエータ74を介してCBUS72上で送信され得る。GCP76は、仮想同期コントローラ71から書き込み要求を受信し、仮想同期コントローラ71において同期要求/肯定応答が受信されていることを示すように自らの記憶域94内に保持される同じVSOUTビットを設定させる。
【0180】
記憶域94の更新後、GCP76はネットワーク91上でパケットをディスパッチさせる。このパケットは、その同期ゾーンに対する同期要求/肯定応答信号がアサートされていることを示すように関連するVSOUTビットが設定されていることを示す状態の指示を含む。パケットは別のチップ500にディスパッチされる。GCP76がパケットをディスパッチするチップ500は、設定されたVSOUTビットが関連する同期ゾーンに依存する。
【0181】
同期メッセージパケットがディスパッチされるアドレスを決定するために、GCP76は仮想同期ゾーンそれぞれのMACアドレスを示すテーブルを記憶する。それぞれの仮想同期ゾーンについて、MACアドレスは、その同期ゾーンに関して定義された同期グループに属するタイル4を含む他のチップ500のMACアドレスである。更新されたVSOUTビットを含むための書き込みを仮想同期コントローラ71から受信することに応答し、GCP76は、VSOUTビットに関連する同期ゾーンに関して定義された同期グループに属するタイル4を含むチップ500のMACアドレスを検索する。GCP76は、決定されたMACアドレスを有するそのチップ500にパケットをディスパッチする。パケットは、仮想同期コントローラ71において同期要求/肯定応答が受信されていることの指示(VSOUTの更新値の形を取る)と、その同期要求/肯定応答が関連する同期ゾーンの指示とを含む。このパケットは、他方のチップ500において受信されると、その他方のチップ500の記憶域内のVSINビットをパケット内で指示されるVSOUTビットと同じ値に設定させる。この設定されるVSINビットは、VSOUTビットと同じ同期ゾーンに関連する。従って、或るチップ500上のVSOUTビットの更新が、別のチップ500上の対応するVSINビットの更新を引き起こすのでネットワーク91にわたる方向性の逆転がある。
【0182】
GCP76は、ネットワーク91から同期メッセージを含むパケットも受信するようにも構成される。同期メッセージは、別のチップ500上の対応する回路によって発行された同期要求又は同期肯定応答(他のチップ500内に保持されるVSOUTビットの更新値の形を取る)を表す。かかるパケットは、同期要求又は肯定応答が関連する同期ゾーンの指示を含む。かかる同期メッセージを表すパケットを受信することに応答し、GCP76は同期要求/肯定応答と同じ同期ゾーンに関連する自らの記憶域94内のVSINビットの1つを設定する。ビットを設定した後、GCP76は、仮想同期コントローラ71の記憶域93内の対応するビットを更新するための書き込み要求を仮想同期コントローラ71にディスパッチする。
【0183】
書き込み要求を受信することに応答し、仮想同期コントローラ71は自らの記憶域93内の対応するVSINビットを更新する。次いで仮想同期コントローラ71は、自らの記憶域93内で更新されるVSINビットと同じ同期ゾーンに関連する自らの仮想同期インタフェースVS0からVS7の1つの上で同期要求/肯定応答をディスパッチする。同期要求/肯定応答は、この仮想同期インタフェースの適切な配線上で信号をアサートすることによって同期コンバイナ70の1つに送信される。
【0184】
説明したように、VSOUTビット及びVSINビットの設定は、同期要求又は同期肯定応答を表すために使用することができる。VSOUTビット又はVSINビットが同期要求又は同期肯定応答を表すかどうかは、同期要求/肯定応答が受信される仮想同期インタフェースの方向性に依存する。この方向性はGSP58内に保持される構成設定に依存し、同期要求又は同期肯定応答が関連する仮想同期インタフェース上で同期コンバイナ70から仮想同期コントローラ71に伝播されるかどうかを定義する。換言すれば、構成設定は、VSOUT又はVSINに関連する同期ゾーンに対して、同期要求又は同期肯定応答がGSP58から他のチップ500に送信されるかどうかを定義する。
【0185】
仮想同期インタフェースの方向性が、同期要求が同期コンバイナ70から仮想同期コントローラ71に送信される(即ち関連する同期ゾーンの同期要求がGSP58から他のチップ500に送信される)ものである場合、その仮想同期インタフェースに関連するVSOUTビットの設定は、関連する仮想同期インタフェース上で同期要求が受信されていることを示す。仮想同期インタフェースの方向性が、同期要求が仮想同期コントローラ71から同期コンバイナ70に送信される(即ち関連する同期ゾーンの同期要求が他のチップ500からGSP58において受信される)ものである場合、その仮想同期インタフェースに関連するVSOUTビットの設定は、関連する仮想同期インタフェース上で同期肯定応答が受信されていることを示す。
【0186】
インタフェースの方向性を示す構成設定は、VSINビットの設定に応答し、同期要求又は同期肯定応答を仮想同期インタフェース上で同期コンバイナ70に送信すべきかどうかを判定するために仮想同期コントローラ71によって使用される。チップ500aにおいて受信された同期メッセージパケットに応答し、チップ500aにおいて同期要求/肯定応答が受信されたことを示すために自らのVSINビットの1つを仮想同期コントローラ71が設定する場合、仮想同期コントローラ71は、同期メッセージパケットによって示される同期ゾーンの仮想同期インタフェースに関連する構成設定に応じて、同期メッセージを同期要求として解釈するのか又は同期肯定応答として解釈するのかを決定する。同期ゾーンの仮想同期インタフェースの方向性が、同期要求が仮想同期コントローラ71からコンバイナ70に伝播される(即ち関連する同期ゾーンの同期要求が他のチップ500からGSP58において受信される)ものであることを構成設定が示す場合、同期メッセージパケットは同期要求として解釈され、同期要求が仮想同期インタフェースの同期要求配線上でアサートされる。同期ゾーンの仮想同期インタフェースの方向性が、同期要求が同期コンバイナ70から仮想同期コントローラ71に伝播される(即ち関連する同期ゾーンの同期要求がGSP58から他のチップ500に送信される)ものであることを構成設定が示す場合、同期メッセージは同期肯定応答として解釈され、その結果、同期肯定応答が仮想同期インタフェースの同期肯定応答配線上でアサートされる。
【0187】
少なくとも一部の実施形態では、記憶域94内のVSOUTビットの変化に応答してネットワーク91上でディスパッチされる同期メッセージパケットが(変化したVSOUTビットの値だけでなく)記憶域94内に保持されるVSOUTビットの全ての値を含む。
【0188】
同期ネットワークをパケット交換ネットワーク上に広げることにより、チップ500aは他のチップ500b、500cと、それらのチップがかかるネットワーク上でリモートにアクセス可能である場合に同期することができる。
【0189】
処理装置を1つ又は複数の更なる処理装置と同期するための方法2300を示す図10を参照する。
【0190】
S2310で、第1の1組のプロセッサの各プロセッサが、第1の1組のプロセッサ及び第1の更なる処理装置に属する第3の1組のプロセッサを含む第1の同期グループ間で強制される第1のバリア同期に参加する。第1のバリア同期は、第1の同期グループの計算段階を第1の同期グループの第1の交換段階と分離する。
【0191】
S2320で、第1の1組のプロセッサのうちのプロセッサの少なくとも一部のそれぞれが、第1の交換段階中に第3の1組のプロセッサとデータを交換する。
【0192】
S2330で、第2の1組のプロセッサの各プロセッサが、第2の1組のプロセッサ及び第2の更なる処理装置に属する第4の1組のプロセッサを含む第2の同期グループ間で強制される第2のバリア同期に参加する。第2のバリア同期は、第2の同期グループの計算段階を第2の同期グループの第2の交換段階と分離する。
【0193】
S2340で、第2の1組のプロセッサのうちのプロセッサの少なくとも一部のそれぞれが、第2の交換段階中に第4の1組のプロセッサとデータを交換する。
【0194】
本願の実施形態を実装するために記載したチップ500の構成要素のそれぞれは、記載した機能を実装するのに必要なデータ処理回路及びメモリを含む。データ処理回路は、非限定的な例としてマイクロプロセッサ、特定用途向け集積回路(ASIC)、書替え可能ゲートアレイ(FPGA)、及びマルチコアプロセッサアーキテクチャに基づくプロセッサの1つ又は複数を含み得る。データ処理は、幾つかのデータ処理回路モジュールにわたって分散させることができる。記載した各々の動作を実行するのに適したデータ処理回路を含む構成要素は、これだけに限定されないがGCP76、Cbusイニシエータ74、Cbusターゲット7、仮想同期コントローラ71、及びIPU同期コントローラ55を含む。
【0195】
図面を参照して本明細書に記載した実施形態の少なくとも一部の側面は処理システム又はプロセッサ内で実行されるコンピュータプロセスを含むが、本発明はコンピュータプログラム、とりわけ本発明を実施するように適合されるキャリア上の又はキャリア内のコンピュータプログラムにも及ぶ。プログラムは、非一時的ソースコード、オブジェクトコード、部分的にコンパイルされた形式等のコード中間ソース及びオブジェクトコード、又は本発明によるプロセスを実装する際に使用するのに適した他の任意の非一時的形態の形を取り得る。キャリアは、プログラムを運ぶことができる任意のエンティティ又は装置であり得る。例えばキャリアは、ソリッドステートドライブ(SSD)又は他の半導体ベースのRAM、ROM、例えばCD ROM又は半導体ROM、磁気記録媒体、例えばフロッピディスク又はハードディスク、光学メモリ装置全般等の記憶媒体を含み得る。
【0196】
本明細書に記載した例は、本発明の実施形態の説明のための例として理解すべきである。更なる実施形態及び例が考えられる。任意の1つの例又は実施形態に関して記載した任意の特徴は、単独で又は他の特徴と組み合わせて使用することができる。加えて、任意の1つの例又は実施形態に関して説明した任意の特徴は、例又は実施形態の他の任意のものの1つ又は複数の特徴、又は例若しくは実施形態の他の任意のものの任意の組み合わせと組み合わせて使用することもできる。更に、本明細書に記載していない等価物及び修正形態も、特許請求の範囲の中で定義する本発明の範囲内で採用することができる。
図1
図2
図3
図4
図5A
図5B
図5C
図5D
図5E
図6A
図6B
図7A
図7B
図8
図9A
図9B
図10
【手続補正書】
【提出日】2024-03-11
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数のプロセッサを含む処理ユニットを含む処理装置であって、前記複数のプロセッサは第1の1組のプロセッサと第2の1組のプロセッサとを含み、
前記第1の1組のプロセッサの各プロセッサは、前記第1の1組のプロセッサ及び第1の更なる処理装置に属する第3の1組のプロセッサを含む第1の同期グループ間で強制される第1のバリア同期に参加するように構成され、前記第1のバリア同期は前記第1の同期グループの計算段階を前記第1の同期グループの第1の交換段階と分離し、
前記第1の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれは、前記第1の交換段階中に前記第3の1組のプロセッサとデータを交換するように構成され、
前記第2の1組のプロセッサの各プロセッサは、前記第2の1組のプロセッサ及び第2の更なる処理装置に属する第4の1組のプロセッサを含む第2の同期グループ間で強制される第2のバリア同期に参加するように構成され、前記第2のバリア同期は前記第2の同期グループの計算段階を前記第2の同期グループの第2の交換段階と分離し、
前記第2の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれは、前記第2の交換段階中に前記第4の1組のプロセッサとデータを交換するように構成され、
前記第1の交換段階は前記第2の交換段階と時間的に重複する、
処理装置。
【請求項2】
前記第3の1組のプロセッサが属する前記第1の更なる処理装置が、前記第4の1組のプロセッサが属する前記第2の更なる処理装置と異なる、請求項1に記載の処理装置。
【請求項3】
前記第3の1組のプロセッサが属する前記第1の更なる処理装置が、前記第4の1組のプロセッサが属する前記第2の更なる処理装置と同じである、請求項1に記載の処理装置。
【請求項4】
前記第1の1組のプロセッサ及び前記第2の1組のプロセッサの各プロセッサが、
前記第1の交換段階及び前記第2の交換段階の後、前記第1の1組のプロセッサ及び前記第2の1組のプロセッサを含む第3のバリア同期に参加すること、及び
前記第3のバリア同期の後、前記第1の同期グループ及び前記第2の同期グループと異なる1つ又は複数の新たな同期グループを含む1つ又は複数の更なるバリア同期に参加すること
を行うように構成される、請求項1に記載の処理装置。
【請求項5】
前記処理装置が、
第1の同期メッセージを前記第1の更なる処理装置と交換することによって前記第1の同期グループのプロセッサ間の前記第1のバリア同期を調整すること、及び
第2の同期メッセージを前記第2の更なる処理装置と交換することによって前記第2の同期グループのプロセッサ間の前記第2のバリア同期を調整すること
を行うように構成される回路を含む外部同期コントローラを含む、請求項1に記載の処理装置。
【請求項6】
前記第1の同期メッセージが第1の同期要求及び同期肯定応答の対を含み、前記第2の同期メッセージが第2の同期要求及び同期肯定応答の対を含む、請求項5に記載の処理装置。
【請求項7】
前記外部同期コントローラが、
前記第1のバリア同期を調整するための前記第1の同期メッセージの少なくとも1つが送信される宛先を決定すること、及び
前記第2のバリア同期を調整するための前記第2の同期メッセージの少なくとも1つが送信される宛先を決定すること
を行うための構成設定を保持する記憶域を含む、請求項5に記載の処理装置。
【請求項8】
前記外部同期コントローラの前記回路が、
前記外部同期コントローラの1つ又は複数のインタフェースを前記第1の同期グループに関連付けることにより、前記第1のバリア同期を調整するための前記第1の同期メッセージの前記少なくとも1つが送信される前記宛先を決定すること、及び
前記外部同期コントローラの1つ又は複数の更なるインタフェースを前記第2の同期グループに関連付けることにより、前記第2のバリア同期を調整するための前記第2の同期メッセージの前記少なくとも1つが送信される前記宛先を決定すること
を行うように構成される、請求項7に記載の処理装置。
【請求項9】
どの処理装置がどのバリア同期に参加するのかを修正するように前記構成設定が書き込み可能である、請求項7に記載の処理装置。
【請求項10】
前記外部同期コントローラが前記処理ユニットとの複数のインタフェースを含み、前記複数のインタフェースの少なくとも一部のそれぞれが異なる同期グループに関連し、前記外部同期コントローラが、
前記第1の同期グループに関連する前記複数のインタフェースの1つの上で前記処理ユニットから第1の同期要求を受信することに応答し、前記第1の同期グループのプロセッサ間の前記第1のバリア同期を調整する前記ステップを実行すること、及び
前記第2の同期グループに関連する前記複数のインタフェースの1つの上で前記処理ユニットから第2の同期要求を受信することに応答し、前記第2の同期グループのプロセッサ間の前記第2のバリア同期を調整する前記ステップを実行すること
を行うように構成される、請求項5に記載の処理装置。
【請求項11】
前記外部同期コントローラの前記回路が複数の同期伝播回路を含み、前記複数の同期伝播回路の少なくとも一部のそれぞれがプロセッサの同期グループに関連し、前記個々の同期グループに属するプロセッサを含む少なくとも1つの追加の処理装置に同期メッセージを伝播するように構成可能であり、
第1の同期メッセージを前記第1の更なる処理装置と交換することによって前記第1の同期グループのプロセッサ間の前記第1のバリア同期を前記調整することが、前記第1の同期グループに関連する前記複数の同期伝播回路の1つによって実行される、
請求項5に記載の処理装置。
【請求項12】
前記外部同期コントローラの前記回路は、
前記第1の1組のプロセッサが前記第1のバリア同期に達したことを示す、前記第1の1組のプロセッサからの第1の少なくとも1つの同期要求を受信すること、及び
前記第1の少なくとも1つの同期要求に応答して前記第1の1組のプロセッサのそれぞれを前記第1の交換段階に入れるように前記第1の1組のプロセッサのそれぞれに同期肯定応答を提供すること、
前記第2の1組のプロセッサが前記第2のバリア同期に達したことを示す、前記第2の1組のプロセッサからの第2の少なくとも1つの同期要求を受信すること、及び
前記第2の少なくとも1つの同期要求に応答して前記第2の1組のプロセッサのそれぞれを前記第2の交換段階に入れるように前記第2の1組のプロセッサのそれぞれに同期肯定応答を提供すること
を行うように構成される、請求項5に記載の処理装置。
【請求項13】
前記外部同期コントローラの前記回路が、
前記第1の更なる処理装置との前記第1の同期メッセージの前記交換に応答して前記第1の1組のプロセッサのそれぞれに前記同期肯定応答を提供すること、及び
前記第2の更なる処理装置との前記第2の同期メッセージの前記交換に応答して前記第2の1組のプロセッサのそれぞれに前記同期肯定応答を提供すること
を行うように構成される、請求項12に記載の処理装置。
【請求項14】
前記複数のプロセッサの少なくとも一部が、異なるバリア同期に参加するために使用される複数の異なる同期グループに属する、請求項1に記載の処理装置。
【請求項15】
前記複数のプロセッサのそれぞれは、前記個々のプロセッサが複数の同期グループのどれに属するのかに関する指示を記憶するレジスタを含む、請求項14に記載の処理装置。
【請求項16】
前記複数のプロセッサのそれぞれについて、前記個々のプロセッサの前記レジスタ内に記憶される前記指示は前記個々のプロセッサが複数の構成可能な同期ゾーンのどれに属するのかに関する指示である、請求項15に記載の処理装置。
【請求項17】
前記複数のプロセッサのそれぞれが複数の配線を有し、前記複数の配線の少なくとも一部のそれぞれが複数の同期グループの異なるものに関連し、
前記第1の1組のプロセッサのうちの前記プロセッサのそれぞれは、自らのコンパイル済みコード内で前記第1のバリア同期に達すると、前記第1の同期グループに関連する前記個々の複数の配線の1つの上で同期要求信号をアサートするように構成され、
前記第2の1組のプロセッサのうちの前記プロセッサのそれぞれは、自らのコンパイル済みコード内で前記第2のバリア同期に達すると、前記第2の同期グループに関連する前記個々の複数の配線の1つの上で同期要求信号をアサートするように構成される、
請求項1に記載の処理装置。
【請求項18】
前記複数のプロセッサのそれぞれは、前記個々のプロセッサが属さない同期グループに関連する前記複数の配線の何れかの上で同期要求信号を継続的にアサートするように構成される、請求項17に記載の処理装置。
【請求項19】
前記第1の1組の複数のプロセッサの少なくとも一部のそれぞれが、前記第1の同期グループを識別するオペランドを含む同期命令を実行することによって前記第1のバリア同期用の前記第1の同期グループを選択するように構成される、請求項1に記載の処理装置。
【請求項20】
前記オペランドが、前記第1の同期グループの同期をサポートする構成可能な同期ゾーンを識別することによって前記第1の同期グループを識別する、請求項19に記載の処理装置。
【請求項21】
前記第1の同期グループが、前記複数のプロセッサの異なるグループ分けを含むように前記複数の前記プロセッサのそれぞれの中で保持される設定に基づいて構成可能な第1の同期ゾーンに関連し、前記第2の同期グループが、前記複数のプロセッサの異なるグループ分けを含むように複数の前記プロセッサのそれぞれの中で保持される前記設定に基づいて構成可能な第2の同期ゾーンに関連する、請求項1に記載の処理装置。
【請求項22】
前記複数のプロセッサのそれぞれの中で保持される前記設定は、前記個々のプロセッサが前記第1の同期ゾーンに属するのかどうか及び前記個々のプロセッサが前記第2の同期ゾーンに属するのかどうかを指定する、請求項21に記載の処理装置。
【請求項23】
前記処理装置が集積回路であり、前記第1の更なる処理装置が第1の更なる集積回路であり、前記第2の更なる処理装置が第2の更なる集積回路である、請求項1に記載の処理装置。
【請求項24】
前記第3の1組のプロセッサとデータを前記交換することが、前記処理装置と前記第1の更なる処理装置との間のパケット交換ネットワーク上で伝送するための1つ又は複数のデータパケットをディスパッチすることを含み、前記第4の1組のプロセッサとデータを前記交換することが、前記処理装置と前記第2の更なる処理装置との間のパケット交換ネットワーク上で伝送するための1つ又は複数のデータパケットをディスパッチすることを含む、請求項1に記載の処理装置。
【請求項25】
請求項1~24の何れか一項に記載の処理装置と、
第1の更なる処理装置と、
第2の更なる処理装置と、
を含む、データ処理システム。
【請求項26】
処理装置を1つ又は複数の更なる処理装置と同期するための方法であって、前記処理装置は複数のプロセッサを含む処理ユニットを含み、前記複数のプロセッサは第1の1組のプロセッサ及び第2の1組のプロセッサを含み、
前記第1の1組のプロセッサ及び第1の更なる処理装置に属する第3の1組のプロセッサを含む第1の同期グループ間で強制される第1のバリア同期に前記第1の1組のプロセッサの各プロセッサが参加することであって、前記第1のバリア同期は前記第1の同期グループの計算段階を前記第1の同期グループの第1の交換段階と分離して参加することと、
前記第1の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれが、前記第1の交換段階中に前記第3の1組のプロセッサとデータを交換すること、
前記第2の1組のプロセッサ及び第2の更なる処理装置に属する第4の1組のプロセッサを含む第2の同期グループ間で強制される第2のバリア同期に前記第2の1組のプロセッサの各プロセッサが参加することであって、前記第2のバリア同期は前記第2の同期グループの計算段階を前記第2の同期グループの第2の交換段階と分離して参加することと、
前記第2の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれが、前記第2の交換段階中に前記第4の1組のプロセッサとデータを交換することと、
を含み、
前記第1の交換段階は前記第2の交換段階と時間的に重複する、方法。
【請求項27】
処理ユニットの複数のプロセッサによって実行されるとき、処理装置を1つ又は複数の更なる処理装置と同期するための方法を実行させる複数組のコンピュータ可読命令を含むコンピュータプログラムであって、前記処理装置は前記処理ユニットを含み、前記複数のプロセッサは第1の1組のプロセッサ及び第2の1組のプロセッサを含み、前記方法は
前記第1の1組のプロセッサ及び第1の更なる処理装置に属する第3の1組のプロセッサを含む第1の同期グループ間で強制される第1のバリア同期に前記第1の1組のプロセッサの各プロセッサが参加することであって、前記第1のバリア同期は前記第1の同期グループの計算段階を前記第1の同期グループの第1の交換段階と分離して参加することと、
前記第1の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれが、前記第1の交換段階中に前記第3の1組のプロセッサとデータを交換すること、
前記第2の1組のプロセッサ及び第2の更なる処理装置に属する第4の1組のプロセッサを含む第2の同期グループ間で強制される第2のバリア同期に前記第2の1組のプロセッサの各プロセッサが参加することであって、前記第2のバリア同期は前記第2の同期グループの計算段階を前記第2の同期グループの第2の交換段階と分離して参加することと、
前記第2の1組のプロセッサのうちの前記プロセッサの少なくとも一部のそれぞれが、前記第2の交換段階中に前記第4の1組のプロセッサとデータを交換することと、
を含み、
前記第1の交換段階は前記第2の交換段階と時間的に重複する、
コンピュータプログラム。
【国際調査報告】