(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-09
(54)【発明の名称】同期ゾーンへの加入
(51)【国際特許分類】
G06F 9/52 20060101AFI20240702BHJP
G06F 15/173 20060101ALI20240702BHJP
【FI】
G06F9/52 150A
G06F15/173 660D
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024501746
(86)(22)【出願日】2022-07-08
(85)【翻訳文提出日】2024-02-20
(86)【国際出願番号】 EP2022069053
(87)【国際公開番号】W WO2023285304
(87)【国際公開日】2023-01-19
(32)【優先日】2022-06-30
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2021-07-14
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】518371892
【氏名又は名称】グラフコアー リミテッド
【氏名又は名称原語表記】Graphcore Limited
【住所又は居所原語表記】11-19 Wine Street,Bristol,BS1 2PH,United Kingdom
(74)【代理人】
【識別番号】100169904
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】リチャード オズボーン
(72)【発明者】
【氏名】スティーブン フィリックス
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045CC06
5B045GG11
(57)【要約】
(同期ゾーンと呼ばれ得る)構成可能な同期群のセットが定義される。任意のプロセッサが任意の同期ゾーンに属し得る。プロセッサの各々は、それが属する同期ゾーンを示すレジスタを含む。プロセッサが同期ゾーンに属さない場合、プロセッサは、その同期ゾーンに対する同期要求を同期コントローラに対して継続的にアサートする。プロセッサが同期ゾーンに属する場合、プロセッサは、そのコンパイルされたコードセットに示されるその同期ゾーンの同期点に達した場合にのみ、その同期ゾーンに対するその同期要求をアサートする。
【特許請求の範囲】
【請求項1】
データ処理デバイスであって、
複数のプロセッサと、
前記プロセッサから、同期に参加する要求を受信し、前記要求を受信することに応答して、肯定応答を前記プロセッサに返信するように構成された回路を含む同期コントローラと、
を含み、前記プロセッサの各々は、
それぞれのプロセッサのメモリに保持されたコンピュータ可読命令のセットを実行するように構成された実行ユニットと、
構成可能な同期群のセットの各々について、それぞれのプロセッサがそれぞれの構成可能な同期群に属するか否かに関する指示を記憶するレジスタと、
を含み、前記プロセッサのうちの第1のプロセッサについて、
前記構成可能な同期群のうちの第1の同期群についての前記指示は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属さないことを示し、
前記構成可能な同期群のうちの第2の同期群についての前記指示は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第2の同期群に属することを示し、
前記プロセッサのうちの前記第1のプロセッサは、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属さないことを示す、前記構成可能な同期群のうちの前記第1の同期群についての前記指示に応答して、前記構成可能な同期群のうちの前記第1の同期群の同期に参加する要求を前記同期コントローラに対してアサートするように構成された回路を含み、
前記プロセッサのうちの前記第1のプロセッサの前記回路は、前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットが、前記プロセッサのうちの前記第1のプロセッサの前記コンピュータ可読命令のセットにおいて示される、前記構成可能な同期群のうちの前記第2の同期群の同期点に達することに応答して、前記構成可能な同期群のうちの前記第2の同期群の同期に参加する要求を前記同期コントローラに対してアサートするように構成される、データ処理デバイス。
【請求項2】
前記同期コントローラの前記回路は、前記データ処理デバイスの前記プロセッサの全てが、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する要求を発行することに応答して、対応する肯定応答を前記プロセッサの各々に発行するように構成される、請求項1に記載のデータ処理デバイス。
【請求項3】
前記同期コントローラの前記回路は、
前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する前記要求に応答して、前記プロセッサが、更なるデバイスに属する更なるプロセッサと同期するための更なる要求を外部同期コントローラに発行することと、
続けて、前記外部同期コントローラからの前記更なる要求の更なる肯定応答の受信に応答して、前記プロセッサの各々に、前記プロセッサの各々への前記対応する肯定応答を返信することと、
を行うように構成される、請求項2に記載のデータ処理デバイス。
【請求項4】
前記外部同期コントローラを含み、前記外部同期コントローラは、
前記構成可能な同期群のうちの前記第1の同期群の構成設定のセットを記憶するストレージと、
前記同期コントローラから受信された前記更なる要求に応答して、前記構成可能な同期群のうちの前記第1の同期群の前記構成設定に応じて、1つ又は複数の追加の要求及び1つ又は複数の追加の肯定応答を更なるデバイスと交換するように構成された回路と、
を含む、請求項3に記載のデータ処理デバイス。
【請求項5】
前記構成可能な同期群のうちの前記第1の同期群に属する前記プロセッサの各々について、それぞれのプロセッサの前記実行ユニットは、前記構成可能な同期群のうちの前記第1の同期群に属するプロセッサ間で実施される第1のバリア同期に達すると、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する要求を発行するように構成され、
前記プロセッサのうちの前記第1のプロセッサについて、それぞれの実行ユニットは、前記構成可能な同期群のうちの前記第1の同期群に属する前記プロセッサの各々の前記実行ユニットが一時停止され、前記第1の同期バリアで待機している間、前記第1のバリア同期で待機せずに計算又はデータ交換を進めるように構成される、請求項1~4のいずれか一項に記載のデータ処理デバイス。
【請求項6】
前記構成可能な同期群のうちの前記第2の同期群の同期は、第2のバリア同期であり、前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求に対する肯定応答の受信に応答して、前記第2のバリア同期を越えて進むように構成される、請求項1~5のいずれか一項に記載のデータ処理デバイス。
【請求項7】
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記プロセッサのうちの前記第1のプロセッサがデータの送信又は受信の少なくとも一方を行う交換フェーズに入ることにより、前記第2のバリア同期を越えて進むように構成される、請求項6に記載のデータ処理デバイス。
【請求項8】
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する前記要求のアサート後、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属することを指定するように、前記構成可能な同期群のうちの前記第1の同期群についての前記指示を更新する更新命令を実行するように構成される、請求項1~7のいずれか一項に記載のデータ処理デバイス。
【請求項9】
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求のアサート後、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第2の同期群に属さないことを指定するように、前記構成可能な同期群のうちの前記第2の同期群についての前記指示を更新する更新命令を実行するように構成される、請求項1~8のいずれか一項に記載のデータ処理デバイス。
【請求項10】
集計回路を含み、前記集計回路は、
前記プロセッサの全てが、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加するそれぞれの要求を提供することに応答して、第1の集計同期要求を前記同期コントローラに提供することと、
前記プロセッサの全てが、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求を提供することに応答して、第2の集計同期要求を前記同期コントローラに提供することと、
を行うように構成され、前記同期コントローラの前記回路は、前記第1の集計同期要求及び前記第2の集計同期要求の各々に応答して、肯定応答を前記プロセッサに返信するように構成される、請求項1~9のいずれか一項に記載のデータ処理デバイス。
【請求項11】
前記プロセッサのうちの前記第1のプロセッサに接続された第1の同期要求ワイヤと、
前記プロセッサのうちの前記第1のプロセッサに接続された第2の同期要求ワイヤと
を含み、
前記プロセッサのうちの前記第1のプロセッサの前記回路は、前記第1の同期要求ワイヤ上で信号をアサートすることにより、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する前記要求をアサートするように構成され、
前記プロセッサのうちの前記第2のプロセッサの前記回路は、前記第2の同期要求ワイヤ上で信号をアサートすることにより、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求をアサートするように構成される、請求項1~10のいずれか一項に記載のデータ処理デバイス。
【請求項12】
前記プロセッサのうちの前記第1のプロセッサの前記回路は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属さないという前記指示に応じて、第1の入力を選択して、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する前記要求を表す第1の信号を出力するように構成された第1のマルチプレクサを含む、請求項1~11のいずれか一項に記載のデータ処理デバイス。
【請求項13】
前記プロセッサのうちの前記第1のプロセッサの前記回路は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第2の同期群に属するという前記指示に応じて、第2の入力を選択して、前記実行ユニットによって制御される第2の信号を出力するように構成された第2のマルチプレクサを含む、請求項1~12のいずれか一項に記載のデータ処理デバイス。
【請求項14】
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記同期点に達すると、同期命令を実行して、前記構成可能な同期群のうちの前記第2のプロセッサの前記同期に参加する前記要求を表す状態に前記第2の信号を設定させるように構成される、請求項13に記載のデータ処理デバイス。
【請求項15】
前記構成可能な同期群のうちの前記第2の同期群は、1つ又は複数の更なるデータ処理デバイスに属する更なるプロセッサを含み、
前記プロセッサのうちの前記第1のプロセッサは、更なるプロセッサの1つ又は複数とデータを交換することにより、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加するように構成される、請求項1~14のいずれか一項に記載のデータ処理デバイス。
【請求項16】
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記構成可能な同期群のうちの前記第2の同期群の前記同期点に達すると、同期命令を実行して、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求の前記アサートを生じさせるように構成される、請求項1~15のいずれか一項に記載のデータ処理デバイス。
【請求項17】
前記プロセッサのうちの前記第1のプロセッサの前記回路は、
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットから、前記実行ユニットが前記同期点に達したことを示す制御信号を受信することと、
前記制御信号を、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求に変換することと
を行うように構成される、請求項1~16のいずれか一項に記載のデータ処理デバイス。
【請求項18】
前記プロセッサのうちの前記第1のプロセッサは、前記構成可能な同期群のうちの前記第1の同期群の第1の肯定応答信号を受信するように構成された第1のインタフェースを含み、
前記プロセッサのうちの前記第1のプロセッサの前記回路は、前記第1の肯定応答信号を反転させて、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する前記要求を生成するように構成され、
前記プロセッサのうちの前記第1のプロセッサは、前記構成可能な同期群のうちの前記第2の同期群の第2の肯定応答信号を受信するように構成された第2のインタフェースを含み、
前記プロセッサのうちの前記第2のプロセッサの前記回路は、前記第2の肯定応答信号を反転させて、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求を生成するように構成される、請求項1~17のいずれか一項に記載のデータ処理デバイス。
【請求項19】
集積回路である、請求項1~18のいずれか一項に記載のデータ処理デバイス。
【請求項20】
複数のプロセッサを含むデータ処理デバイスで実施される方法であって、前記プロセッサの各々において、
構成可能な同期群のセットの各々について、それぞれのプロセッサがそれぞれの構成可能な同期群に属するか否かに関する指示を記憶することと、
それぞれのプロセッサのメモリに保持されたコンピュータ可読命令のセットを実行することと、
を含み、前記プロセッサのうちの第1のプロセッサについて、
前記構成可能な同期群のうちの第1の同期群についての前記指示は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属さないことを示し、及び
前記構成可能な同期群のうちの第2の同期群についての前記指示は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第2の同期群に属することを示し、
前記方法は、
同期コントローラにおいて、同期に参加する要求を前記プロセッサから受信し、前記要求を受信することに応答して、肯定応答を前記プロセッサに返信することと、
前記プロセッサのうちの第1のプロセッサにおいて、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属さないことを示す、前記構成可能な同期群のうちの前記第1の同期群についての前記指示に応答して、前記構成可能な同期群のうちの前記第1の同期群の同期に参加する要求を前記同期コントローラに対してアサートすることと、
前記プロセッサのうちの前記第1のプロセッサの実行ユニットが、前記プロセッサのうちの前記第1のプロセッサの前記コンピュータ可読命令のセットにおいて示される、前記構成可能な同期群のうちの前記第2の同期群の同期点に達することに応答して、前記構成可能な同期群のうちの前記第2の同期群の同期に参加する要求を前記同期コントローラに対してアサートすることと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、複数のプロセッサを含むデータ処理デバイスに関し、特に、複数のプロセッサのうちのプロセッサを伴う同期の調整に関する。
【背景技術】
【0002】
複雑な又は大量のアプリケーションのデータの処理に関連して、そのデータの処理を実行する処理デバイスが提供され得る。処理デバイスは、特定のデータの処理がホストシステムからアンロードされる作業アクセラレータとして機能し得る。そのような処理ユニットは、特定のタイプの処理を実行するための専用ハードウェアを有し得る。
【0003】
一例として、そのような専用アクセラレータサブシステムが使用され得る1つの計算分野は、機械知能に見出される。機械知能の分野の当業者に周知であるように、機械知能アルゴリズムは、「知識モデル」に対する反復更新の実行を中心とし、知識モデルは、複数の相互接続されたノードのグラフによって表すことができる。各ノードの実施は、データの処理を含み、グラフの相互接続は、ノード間で交換されるデータに対応する。典型的には、各ノードの処理の少なくとも幾らかは、グラフ内の幾つか又は全ての他のノードから独立して実行することができ、したがって、大きいグラフは、マルチスレッド処理の多大な機会を顕在化させる。したがって、機械知能アプリケーションに特化した処理デバイスは、高度のマルチスレッド処理を有し得る。ある形態の並列化は、同じチップ(即ち同じダイ)上の複数のプロセッサタイルの構成によって達成することができ、各プロセッサタイルは、それ自体の別個の各実行ユニット並びにメモリ(プログラムメモリ及びデータメモリを含む)を含む。したがって、プログラムコードの別個の部分は、異なるタイルで並列に実行することができる。
【0004】
並列動作する複数のプロセッサを含む処理デバイスが提供される場合、あるプロセッサで実行されるコードが、別のプロセッサで実行される別のコードによって提供される、そのコードが依存するデータよりも先に実行されることを防ぐ技法が必要とされる。これを達成するための可能な幾つかの方式があり、その1つは、本明細書において例として「BSP」バルク同期並列として説明される。BSPによれば、各処理ユニットは、計算フェーズ及び交換フェーズを交互サイクルで実行する。計算フェーズ中、各処理ユニットは、1つ又は複数の計算タスクを処理ユニットでローカルに実行するが、その計算のいかなる結果も他の処理ユニットと通信しない。交換フェーズでは、各処理ユニットは、前の計算フェーズからの計算の1つ又は複数の結果を1つ又は複数の他の処理ユニットに及び/又は処理ユニットから交換することを許容される。更に、BSP原理によれば、計算フェーズから交換フェーズに遷移する連結点、交換フェーズから計算フェーズに遷移する連結点又はその両方にバリア同期が配置される。
【0005】
プロセッサ間で同期(例えば、バリア同期)を調整するために、中央同期コントローラが提供されて、ともに同期されるプロセッサの各セットから同期要求を受信し、ともに同期に参加する全てのプロセッサから同期要求が受信されると、同期肯定応答を返信し得る。
【発明の概要】
【発明が解決しようとする課題】
【0006】
幾つかの場合、処理デバイスに属する全てのプロセッサが同期に参加し得る。しかしながら、幾つかの同期点において、プロセッサの幾つかは、他のプロセッサと交換するデータを有しないことがある。したがって、処理デバイスの幾つかのプロセッサが処理デバイスの他のプロセッサと非同期で動作できるようにすることが提案されてきた。しかしながら、後の時点において、互いに非同期で挙動し得るプロセッサの2つ以上の群が同期点でともに同期することが求められ得る。したがって、タイルの異なる群が柔軟に同期できるようにするメカニズムを提供することが望ましい。
【課題を解決するための手段】
【0007】
第1の態様によれば、データ処理デバイスが提供され、本データ処理デバイスは、複数のプロセッサと、プロセッサから、同期に参加する要求を受信し、要求を受信することに応答して、肯定応答をプロセッサに返信するように構成された回路を含む同期コントローラとを含み、プロセッサの各々は、それぞれのプロセッサのメモリに保持されたコンピュータ可読命令のセットを実行するように構成された実行ユニットと、構成可能な同期群のセットの各々について、それぞれのプロセッサがそれぞれの構成可能な同期群に属するか否かに関する指示を記憶するレジスタと、を含み、プロセッサのうちの第1のプロセッサについて、構成可能な同期群のうちの第1の同期群についての指示は、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第1の同期群に属さないことを示し、及び構成可能な同期群のうちの第2の同期群についての指示は、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第2の同期群に属することを示し、プロセッサのうちの第1のプロセッサは、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第1の同期群に属さないことを示す、構成可能な同期群のうちの第1の同期群についての指示に応答して、構成可能な同期群のうちの第1の同期群の同期に参加する要求を同期コントローラに対してアサートするように構成された回路を含み、プロセッサのうちの第1のプロセッサの回路は、プロセッサのうちの第1のプロセッサの実行ユニットが、プロセッサのうちの第1のプロセッサのコンピュータ可読命令のセットにおいて示される、構成可能な同期群のうちの第2の同期群の同期点に達することに応答して、構成可能な同期群のうちの第2の同期群の同期に参加する要求を同期コントローラに対してアサートするように構成される。
【0008】
(同期ゾーンと呼ばれ得る)構成可能な同期群のセットが定義される。任意のプロセッサが任意の同期ゾーンに属し得る。プロセッサの各々は、それが属する同期ゾーンを示すレジスタを含む。プロセッサが同期ゾーンに属さない場合、プロセッサは、その同期ゾーンに対する同期要求を同期コントローラに対して継続的にアサートする。プロセッサが同期ゾーンに属する場合、プロセッサは、そのコンパイルされたコードセットに示されるその同期ゾーンの同期点に達した場合にのみ、その同期ゾーンに対するその同期要求をアサートする。このようにして、同期コントローラは、特定の同期ゾーンに属する全てのプロセッサが同期点に達した場合にのみ、デバイス内の全てのプロセッサ(そのゾーンに属するプロセッサ及びそのゾーンに属さないプロセッサを含む)からその同期ゾーンへの同期要求を受信したことになり、同期肯定応答をデバイスのプロセッサに送信させることに進み得る。
【0009】
幾つかの実施形態では、同期コントローラの回路は、データ処理デバイスのプロセッサの全てが、構成可能な同期群のうちの第1の同期群の同期に参加する要求を発行することに応答して、対応する肯定応答をプロセッサの各々に発行するように構成される。
【0010】
幾つかの実施形態では、同期コントローラの回路は、構成可能な同期群のうちの第1の同期群の同期に参加する要求に応答して、プロセッサが、更なるデバイスに属する更なるプロセッサと同期するための更なる要求を外部同期コントローラに発行することと、続けて、外部同期コントローラからの更なる要求の更なる肯定応答の受信に応答して、プロセッサの各々に、プロセッサの各々への対応する肯定応答を返信することとを行うように構成される。
【0011】
幾つかの実施形態では、データ処理デバイスは、外部同期コントローラを含み、外部同期コントローラは、構成可能な同期群のうちの第1の同期群の構成設定のセットを記憶するストレージと、同期コントローラから受信された更なる要求に応答して、構成可能な同期群のうちの第1の同期群の構成設定に応じて、1つ又は複数の追加の要求及び1つ又は複数の追加の肯定応答を更なるデバイスと交換するように構成された回路とを含む。
【0012】
幾つかの実施形態では、構成可能な同期群のうちの第1の同期群に属するプロセッサの各々について、それぞれのプロセッサの実行ユニットは、構成可能な同期群のうちの第1の同期群に属するプロセッサ間で実施される第1のバリア同期に達すると、構成可能な同期群のうちの第1の同期群の同期に参加する要求を発行するように構成され、プロセッサのうちの第1のプロセッサについて、それぞれの実行ユニットは、構成可能な同期群のうちの第1の同期群に属するプロセッサの各々の実行ユニットが一時停止され、第1の同期バリアで待機している間、第1のバリア同期で待機せずに計算又はデータ交換を進めるように構成される。
【0013】
幾つかの実施形態では、構成可能な同期群のうちの第2の同期群の同期は、第2のバリア同期であり、プロセッサのうちの第1のプロセッサの実行ユニットは、構成可能な同期群のうちの第2の同期群の同期に参加する要求に対する肯定応答の受信に応答して、第2のバリア同期を越えて進むように構成される。
【0014】
幾つかの実施形態では、プロセッサのうちの第1のプロセッサの実行ユニットは、プロセッサのうちの第1のプロセッサがデータの送信又は受信の少なくとも一方を行う交換フェーズに入ることにより、第2のバリア同期を越えて進むように構成される。
【0015】
幾つかの実施形態では、プロセッサのうちの第1のプロセッサの実行ユニットは、構成可能な同期群のうちの第1の同期群の同期に参加する要求のアサート後、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第1の同期群に属することを指定するように、構成可能な同期群のうちの第1の同期群についての指示を更新する更新命令を実行するように構成される。
【0016】
幾つかの実施形態では、プロセッサのうちの第1のプロセッサの実行ユニットは、構成可能な同期群のうちの第2の同期群の同期に参加する要求のアサート後、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第2の同期群に属さないことを指定するように、構成可能な同期群のうちの第2の同期群についての指示を更新する更新命令を実行するように構成される。
【0017】
幾つかの実施形態では、データ処理デバイスは、集計回路を含み、集計回路は、プロセッサの全てが、構成可能な同期群のうちの第1の同期群の同期に参加するそれぞれの要求を提供することに応答して、第1の集計同期要求を同期コントローラに提供することと、プロセッサの全てが、構成可能な同期群のうちの第2の同期群の同期に参加する要求を提供することに応答して、第2の集計同期要求を同期コントローラに提供することとを行うように構成され、同期コントローラの回路は、第1の集計同期要求及び第2の集計同期要求の各々に応答して、肯定応答をプロセッサに返信するように構成される。
【0018】
幾つかの実施形態では、データ処理デバイスは、プロセッサのうちの第1のプロセッサに接続された第1の同期要求ワイヤと、プロセッサのうちの第1のプロセッサに接続された第2の同期要求ワイヤとを含み、プロセッサのうちの第1のプロセッサの回路は、第1の同期要求ワイヤ上で信号をアサートすることにより、構成可能な同期群のうちの第1の同期群の同期に参加する要求をアサートするように構成され、プロセッサのうちの第2のプロセッサの回路は、第2の同期要求ワイヤ上で信号をアサートすることにより、構成可能な同期群のうちの第2の同期群の同期に参加する要求をアサートするように構成される。
【0019】
幾つかの実施形態では、プロセッサのうちの第1のプロセッサの回路は、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第1の同期群に属さないという指示に応じて、第1の入力を選択して、構成可能な同期群のうちの第1の同期群の同期に参加する要求を表す第1の信号を出力するように構成された第1のマルチプレクサを含む。
【0020】
幾つかの実施形態では、プロセッサのうちの第1のプロセッサの回路は、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第2の同期群に属するという指示に応じて、第2の入力を選択して、実行ユニットによって制御される第2の信号を出力するように構成された第2のマルチプレクサを含む。
【0021】
幾つかの実施形態では、プロセッサのうちの第1のプロセッサの実行ユニットは、同期点に達すると、同期命令を実行して、構成可能な同期群のうちの第2の同期群の同期に参加する要求を表す状態に第2の信号を設定させるように構成される。
【0022】
幾つかの実施形態では、構成可能な同期群のうちの第2の同期群は、1つ又は複数の更なるデータ処理デバイスに属する更なるプロセッサを含み、プロセッサのうちの第1のプロセッサは、更なるプロセッサの1つ又は複数とデータを交換することにより、構成可能な同期群のうちの第2の同期群の同期に参加するように構成される。
【0023】
幾つかの実施形態では、プロセッサのうちの第1のプロセッサの実行ユニットは、構成可能な同期群のうちの第2の同期群の同期点に達すると、同期命令を実行して、構成可能な同期群のうちの第2の同期群の同期に参加する要求のアサートを生じさせるように構成される。
【0024】
幾つかの実施形態では、プロセッサのうちの第1のプロセッサの回路は、プロセッサのうちの第1のプロセッサの実行ユニットから、実行ユニットが同期点に達したことを示す制御信号を受信することと、制御信号を、構成可能な同期群のうちの第2の同期群の同期に参加する要求に変換することとを行うように構成される。
【0025】
幾つかの実施形態では、プロセッサのうちの第1のプロセッサは、構成可能な同期群のうちの第1の同期群の第1の肯定応答信号を受信するように構成された第1のインタフェースを含み、プロセッサのうちの第1のプロセッサの回路は、第1の肯定応答信号を反転させて、構成可能な同期群のうちの第1の同期群の同期に参加する要求を生成するように構成され、プロセッサのうちの第1のプロセッサは、構成可能な同期群のうちの第2の同期群の第2の肯定応答信号を受信するように構成された第2のインタフェースを含み、プロセッサのうちの第2のプロセッサの回路は、第2の肯定応答信号を反転させて、構成可能な同期群のうちの第2の同期群の同期に参加する要求を生成するように構成される。
【0026】
幾つかの実施形態では、データ処理デバイスは、集積回路である。
【0027】
第2の態様によれば、複数のプロセッサを含むデータ処理デバイスで実施される方法が提供され、本方法は、プロセッサの各々において、構成可能な同期群のセットの各々について、それぞれのプロセッサがそれぞれの構成可能な同期群に属するか否かに関する指示を記憶することと、それぞれのプロセッサのメモリに保持されたコンピュータ可読命令のセットを実行することとを含み、プロセッサのうちの第1のプロセッサについて、構成可能な同期群のうちの第1の同期群についての指示は、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第1の同期群に属さないことを示し、及び構成可能な同期群のうちの第2の同期群についての指示は、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第2の同期群に属することを示し、本方法は、同期コントローラにおいて、同期に参加する要求をプロセッサから受信し、要求を受信することに応答して、肯定応答をプロセッサに返信することと、プロセッサのうちの第1のプロセッサにおいて、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第1の同期群に属さないことを示す、構成可能な同期群のうちの第1の同期群についての指示に応答して、構成可能な同期群のうちの第1の同期群の同期に参加する要求を同期コントローラに対してアサートすることと、プロセッサのうちの第1のプロセッサの実行ユニットが、プロセッサのうちの第1のプロセッサのコンピュータ可読命令のセットにおいて示される、構成可能な同期群のうちの第2の同期群の同期点に達することに応答して、構成可能な同期群のうちの第2の同期群の同期に参加する要求を同期コントローラに対してアサートすることと、を含む。
【0028】
幾つかの実施形態では、本方法は、同期コントローラにおいて、データ処理デバイスのプロセッサの全てが、構成可能な同期群のうちの第1の同期群の同期に参加する要求を発行することに応答して、対応する肯定応答をプロセッサの各々に発行することを含む。
【0029】
幾つかの実施形態では、本方法は、同期コントローラにおいて、構成可能な同期群のうちの第1の同期群の同期に参加する要求に応答して、プロセッサが、更なるデバイスに属する更なるプロセッサと同期するための更なる要求を外部同期コントローラに発行することと、続けて、外部同期コントローラからの更なる要求の更なる肯定応答の受信に応答して、プロセッサの各々に、プロセッサの各々への対応する肯定応答を返信することとを含む。
【0030】
幾つかの実施形態では、本方法は、外部同期コントローラにおいて、構成可能な同期群のうちの第1の同期群の構成設定のセットを記憶することと、同期コントローラから受信された更なる要求に応答して、構成可能な同期群のうちの第1の同期群の構成設定に応じて、1つ又は複数の追加の要求及び1つ又は複数の追加の肯定応答を更なるデバイスと交換することとを含む。
【0031】
幾つかの実施形態では、本方法は、構成可能な同期群のうちの第1の同期群に属するプロセッサの各々について、構成可能な同期群のうちの第1の同期群に属するプロセッサ間で実施される第1のバリア同期に達すると、構成可能な同期群のうちの第1の同期群の同期に参加する要求を発行することと、プロセッサのうちの第1のプロセッサについて、構成可能な同期群のうちの第1の同期群に属するプロセッサの各々の実行ユニットが一時停止され、第1の同期バリアで待機している間、第1のバリア同期で待機せずに計算又はデータ交換を進めることと、を含む。
【0032】
幾つかの実施形態では、構成可能な同期群のうちの第2の同期群の同期は、第2のバリア同期であり、本方法は、プロセッサのうちの第1のプロセッサにおいて、構成可能な同期群のうちの第2の同期群の同期に参加する要求に対する肯定応答の受信に応答して、第2のバリア同期を越えて進むことを含む。
【0033】
幾つかの実施形態では、本方法は、プロセッサのうちの第1のプロセッサにおいて、プロセッサのうちの第1のプロセッサがデータの送信又は受信の少なくとも一方を行う交換フェーズに入ることにより、第2のバリア同期を越えて進むことを含む。
【0034】
幾つかの実施形態では、本方法は、プロセッサのうちの第1のプロセッサにおいて、構成可能な同期群のうちの第1の同期群の同期に参加する要求のアサート後、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第1の同期群に属することを指定するように、構成可能な同期群のうちの第1の同期群についての指示を更新する更新命令を実行することを含む。
【0035】
幾つかの実施形態では、本方法は、プロセッサのうちの第1のプロセッサにおいて、構成可能な同期群のうちの第2の同期群の同期に参加する要求のアサート後、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第2の同期群に属さないことを指定するように、構成可能な同期群のうちの第2の同期群についての指示を更新する更新命令を実行することを含む。
【0036】
幾つかの実施形態では、本方法は、プロセッサの全てが、構成可能な同期群のうちの第1の同期群の同期に参加するそれぞれの要求を提供することに応答して、第1の集計同期要求を同期コントローラに提供することと、プロセッサの全てが、構成可能な同期群のうちの第2の同期群の同期に参加する要求を提供することに応答して、第2の集計同期要求を同期コントローラに提供することと、第1の集計同期要求及び第2の集計同期要求の各々に応答して、同期コントローラが肯定応答をプロセッサに返信することとを含む。
【0037】
幾つかの実施形態では、データ処理デバイスは、プロセッサのうちの第1のプロセッサに接続された第1の同期要求ワイヤと、プロセッサのうちの第1のプロセッサに接続された第2の同期要求ワイヤとを含み、本方法は、プロセッサのうちの第1のプロセッサが、第1の同期要求ワイヤ上で信号をアサートすることにより、構成可能な同期群のうちの第1の同期群の同期に参加する要求をアサートすることと、プロセッサのうちの第2のプロセッサが、第2の同期要求ワイヤ上で信号をアサートすることにより、構成可能な同期群のうちの第2の同期群の同期に参加する要求をアサートすることと、を含む。
【0038】
幾つかの実施形態では、本方法は、プロセッサのうちの第1のプロセッサに属する第1のマルチプレクサにおいて、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第1の同期群に属さないという指示に応じて、第1の入力を選択して、構成可能な同期群のうちの第1の同期群の同期に参加する要求を表す第1の信号を出力することを含む。
【0039】
幾つかの実施形態では、本方法は、プロセッサのうちの第2のプロセッサに属する第2のマルチプレクサにおいて、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第2の同期群に属するという指示に応じて、第2の入力を選択して、実行ユニットによって制御される第2の信号を出力することを含む。
【0040】
幾つかの実施形態では、本方法は、プロセッサのうちの第1のプロセッサが、同期点に達すると、同期命令を実行して、構成可能な同期群のうちの第2の同期群の同期に参加する要求を表す状態に第2の信号を設定させることを含む。
【0041】
幾つかの実施形態では、構成可能な同期群のうちの第2の同期群は、1つ又は複数の更なるデータ処理デバイスに属する更なるプロセッサを含み、本方法は、プロセッサのうちの第1のプロセッサが、更なるプロセッサの1つ又は複数とデータを交換することにより、構成可能な同期群のうちの第2の同期群の同期に参加することを含む。
【0042】
幾つかの実施形態では、本方法は、プロセッサのうちの第1のプロセッサが、構成可能な同期群のうちの第2の同期群の同期点に達すると、同期命令を実行して、構成可能な同期群のうちの第2の同期群の同期に参加する要求のアサートを生じさせることを含む。
【0043】
幾つかの実施形態では、本方法は、プロセッサのうちの第1のプロセッサにおいて、プロセッサのうちの第1のプロセッサの実行ユニットから、実行ユニットが同期点に達したことを示す制御信号を受信することと、制御信号を、構成可能な同期群のうちの第2の同期群の同期に参加する要求に変換することとを含む。
【0044】
幾つかの実施形態では、プロセッサのうちの第1のプロセッサは、第1のインタフェースを含み、本方法は、第1のインタフェースにおいて、構成可能な同期群のうちの第1の同期群の第1の肯定応答信号を受信することと、プロセッサのうちの第1のプロセッサにおいて、第1の肯定応答信号を反転させて、構成可能な同期群のうちの第1の同期群の同期に参加する要求を生成することとを含み、プロセッサのうちの第1のプロセッサは、第2のインタフェースを含み、本方法は、第2のインタフェースにおいて、構成可能な同期群のうちの第2の同期群の第2の肯定応答信号を受信することと、プロセッサのうちの第2のプロセッサにおいて、第2の肯定応答信号を反転させて、構成可能な同期群のうちの第2の同期群の同期に参加する要求を生成することとを含む。
【0045】
幾つかの実施形態では、データ処理デバイスは、集積回路である。
【0046】
本発明のよりよい理解のため、及び本発明がどのように実施され得るかを示すために、ここで、例として添付図を参照する。
【図面の簡単な説明】
【0047】
【
図2】マルチタイル処理ユニット内の計算フェーズ及び交換フェーズを示す概略図である。
【
図3】バルク同期並列システムにおけるデータの交換を示す。
【
図4】内部同期バリア及び外部同期バリアの概略図である。
【
図5】マルチタイル処理ユニット及び同期コントローラ回路を含む集積回路の概略図である。
【
図7】タイルの同期要求ワイヤの状態及びそのタイルの対応する同期肯定応答ワイヤの時系列を示す。
【
図8A】同期要求を処理ユニットの同期コントローラに向けて出力するタイルの同期出力インタフェースの概略図である。
【
図8B】同期肯定応答信号におけるエッジに応答して同期肯定応答パルスを生成する回路を含む同期入力インタフェースの概略図である。
【
図9】同期コントローラに送るために処理ユニットの全てのタイルの同期要求状態を集計する同期集計回路の概略図である。
【
図10】同期肯定応答信号を処理ユニットの全てのタイルに送る同期配信配線の概略図である。
【
図11】2対のタイルによって出力された同期要求状態を上流同期要求状態と集計する回路の概略図である。
【
図12】タイルの列の同期要求状態を集計する回路の概略図である。
【
図13】タイルの複数の列からの同期要求状態を集計する回路の概略図である。
【
図14A】同期要求の受信に応答して同期肯定応答を処理ユニットに提供する同期コントローラ内の回路の概略図である。
【
図14B】外部同期要求及び肯定応答のシグナリングに使用される同期シグナリング方式の概略図である。
【
図15】異なる同期ゾーン間の処理ユニットのタイルの分割及びそれらのゾーンのタイルによる同期要求の伝送の概略図である。
【
図16】異なる同期ゾーン間の処理ユニットのタイルの分割及びそれらのゾーンのタイルへの同期肯定応答の送出の概略図である。
【
図17】システム内のGSP間の同期要求及び肯定応答の交換の概略図である。
【
図18】外部同期ゾーンが実施されるシステムの概略図である。
【
図20】プロセッサの異なる構成可能な同期群間で同期を実行する方法の一例を示す。
【
図21】同期要求をシグナリングする方法の一例を示す。
【発明を実施するための形態】
【0048】
図1を参照すると、
図1は、複数のプロセッサ4を含む一例の処理ユニット2を示す。説明される実施形態では、プロセッサ4は、タイル4であるものとして提示される。しかしながら、タイル4は、より一般的には、プロセッサ4であるものとして説明することができる。そのような各処理ユニット2は、集積回路に形成される。示されるマルチタイル処理ユニット2は、参照により援用される米国特許出願公開第15/886065号明細書に記載されている。
【0049】
処理ユニット2は、複数の処理タイル4のアレイ6と、タイル4間を接続する相互接続34とを含む。処理ユニット2は、単独で、同じICパッケージにパッケージングされる複数のダイの1つとして実装され得る。相互接続34は、タイル4が互いにデータを交換できるようにするため、本明細書では「交換ファブリック」34と呼ばれることもある。各タイル4は、実行ユニット及びメモリの各インスタンスを含む。例えば、例示として、処理ユニット2は、数百ほどのタイル4又は更に千を超えるタイル4で構成され得る。完全を期すために、本明細書で参照される「アレイ」は、必ずしもタイル4のいかなる特定の数の寸法又は物理的レイアウトも暗示しないことにも留意されたい。
【0050】
実施形態では、各処理ユニット2は、処理ユニット2を1つ又は複数の他の処理ユニット(例えば、同じ処理ユニット2の1つ又は複数の他のインスタンス)に接続できるようにする1つ又は複数の外部リンクも含む。これらの外部リンクは、処理ユニット2をホストシステム及び同じICパッケージ若しくはカード上又は異なるカード上の処理ユニット2の1つ又は複数の他のインスタンスに接続できるようにし得る。処理ユニット2は、処理するアプリケーションデータの形態でホストから作業を受け取る。
【0051】
相互接続34は、アレイ6内の異なるタイル4が互いに通信できるようにするように構成される。しかしながら、同じタイル4上のスレッド間に潜在的に依存性が存在するのと同様に、アレイ6内の異なるタイル4で実行中のプログラムの部分間にも依存性が存在し得る。したがって、あるタイル4上のコードが、別のタイル4上の別のコードによって提供される、そのコードが依存するデータよりも先に実行されることを防ぐ技法が必要とされる。これは、データ一貫性モデルを使用して達成される。
【0052】
AI及びデータサイエンスの並列プログラミングモデルは、通常、3フェーズ反復実行モデル:計算、バリア及び交換に従う。プロセッサ間及び各プロセッサと外部ストレージとの間にデータ一貫性を提供するために、プロセッサとのデータのやり取りは、通常、バリアに依存するようである。典型的に使用されるデータ一貫性モデルは、バルク同期並列(BSP)、ストール同期並列(SSP)及び非同期である。本明細書に記載の処理ユニット2は、BSPモデルを使用するが、他の同期モデルを代替として利用し得ることが理解されるであろう。
【0053】
図2及び
図3を参照すると、
図2及び
図3は、各タイル4が計算フェーズ33及び交換フェーズ32を、交互サイクルにおいて、タイル4間をバリア同期30で隔てて実行するBSP交換方式の実装形態を示す。
図2及び
図3に示される事例では、バリア同期は、各計算フェーズ33と、続く交換フェーズ32との間に配置される。計算フェーズ33中、各タイル4は、1つ又は複数の計算タスクをタイル上でローカルに実行するが、これらの計算のいかなる結果もタイル4のいかなる他のタイルにも通信しない。交換フェーズ32では、各タイル4は、先行する計算フェーズからの計算の1つ又は複数の結果をタイル4の1つ又は複数の他のタイルに及び/又はから交換することを許容されるが、他のタイル4から、タスクが依存する任意のデータを受信するまでいかなる新しい計算も実行しない。交換フェーズ32において内部制御関連動作等の他の動作を実行し得ることも除外されない。タイル群外の通信は、任意にBSPメカニズムを利用し得るが、代替的にBSPを利用しなくてもよく、代わりにそれ自体の何らかの他の同期メカニズムを使用し得る。
【0054】
BSP原理によれば、バリア同期30は、計算フェーズ33から交換フェーズ32に遷移する連結点、交換フェーズ32から計算フェーズ33に遷移する連結点又は両方に配置される。即ち、(a)群内のいずれのタイルも次の交換フェーズ32に進むことを許容されるには、全てのタイル4が先に各計算フェーズ33を完了する必要があるか、又は(b)群内のいずれのタイルも次の計算フェーズ33に進むことを許容されるには、群内の全てのタイル4が先に各交換フェーズ32を完了する必要があるか、又は(c)これらの条件の両方が強制される。3つ全ての変形形態において、フェーズ間で変わるのは、個々のタイル4及び同期するアセンブリである。交換フェーズ及び計算フェーズのシーケンスを次いで複数の反復にわたり繰り返すことができる。BSP用語では、交換フェーズ及び計算フェーズの各反復は、「スーパーステップ」と呼ばれることがある(しかし、文献において、この用語は、常に一貫して使用されているわけではなく、個々の各交換インタフェース及び計算フェーズがスーパーステップと呼ばれることもある一方、他の場合、本明細書で採用される用語のように、交換フェーズ及び計算フェーズが一緒にスーパーステップと呼ばれることに留意されたい)。
【0055】
図3は、(a)計算フェーズ33から交換フェーズ32へのバリア同期(上記を参照されたい)を課す場合、アレイ6内のタイルの幾つか又は全ての群4i、4ii、4iii間で実施されるBSP原理を示す。なお、この構成では、幾つかのタイル4は、幾つかの他のタイル4が依然として交換している間、計算33を開始することを許容される。
【0056】
BSPモデルは、処理ユニット2におけるタイル4間のデータ交換に使用され得る。処理ユニット2のタイル4間の通信は、時間決定的に生じ、データパケットは、本発明者らの先の出願である米国特許出願公開第15/886065号明細書のようにヘッダなしで伝送される。更に、BSPモデルは、処理ユニット2間のデータ交換に使用することもできる。
【0057】
図4を参照すると、
図4は、内部同期(即ち単一の処理ユニット2のタイル4間)及び外部同期(即ち処理ユニット2間)の両方が関わる一例のBSPプログラムフローを示す。示されるように、フローは、(同じ処理ユニット2のタイル4間のデータの)内部交換50及び(異なる処理ユニット2のタイル4間のデータの)外部交換50’を含む。
図4のプログラムフローは、第1の処理ユニット2i及び第2の処理ユニット2iiのプログラムフローを示す。
【0058】
図4に示されるように、内部BSPスーパーステップ(同じ処理ユニット2のタイル4間のデータの内部交換50を含む)は、外部同期及び交換(異なる処理ユニット2のタイル4間のデータの外部交換50’を含む)から別個に保たれる。
【0059】
プログラムは、以下の順に、(i)まず計算フェーズ、次いで(ii)内部バリア同期30、次いで(iii)内部交換フェーズ50、次いで(iv)外部バリア同期80、次いで(v)外部交換フェーズ50’を含む同期、交換フェーズ及び計算フェーズのシーケンスを実行するように構成され得る。外部バリア80は、内部交換フェーズ50後に課され、それにより、プログラムは、内部交換50後にのみ外部交換50’に進む。
図4の処理ユニット2Iに関して示されるように、任意に、計算フェーズは、(iii)内部交換と、(iv)外部バリアとの間に含まれ得ることにも留意されたい。
【0060】
この全体シーケンスは、プログラム(例えば、それ自体がコンパイラによって生成される)によって実施される。実施形態では、プログラムは、タイル4によって実行される同期命令によってこのように動作するようにプログラムされる。内部同期及び交換は、別の処理ユニット2上のいかなるタイル又は他のエンティティにも拡張されない。シーケンス(i)~(v)((iii)と(iv)との間に含まれる、上述した任意の計算フェーズと共に)は、一連の全体反復で繰り返すことができる。1反復につき、外部同期及び交換前に内部計算、同期及び交換(i)~(iii)の複数のインスタンスが存在し得る。即ち、(i)~(iii)の複数のインスタンス(その順序を維持する)、即ち複数の内部BSPスーパーステップは、(iv)~(v)、即ち外部同期及び交換前に実施され得る。タイル4のいずれも、それぞれ他のタイル4と並列して内部同期及び交換(ii)~(iii)のそれ自体のインスタンスを実行し得ることにも留意されたい。
【0061】
したがって、全体BSPサイクル(i)~(v)につき、同期が内部でのみ実行されるように制約される少なくとも1つの部分がサイクル(ii)~(iii)に存在する。
【0062】
なお、外部交換50中、通信は、外部のみに制限されない。幾つかのタイル4は、内部交換のみを実行し得、幾つかは、外部交換のみを実行し得、幾つかは、それらの混合を実行し得る。
【0063】
図4に示されるように、幾つかのタイル4は、計算フェーズ中、ローカル入力/出力も実行し得る。例えば、それらは、ホスト又は他のタイプの外部ストレージとデータを交換し得る。
【0064】
なお、
図4に示されるように、任意又は全てのタイルが任意の所与のBSPスーパーステップにおいてヌル計算フェーズ52又はヌル交換フェーズ50を有することが一般に可能であることにも留意されたい。
【0065】
内部バリア同期及び外部バリア同期の両方について、バリア同期に参加するタイル4は、同期群と呼ばれる。構成可能な同期群のセットが処理ユニット2によってサポートされ、これらの構成可能な同期群の各々は、本明細書では同期ゾーンと呼ばれる。タイル4の各々は、特定の同期ゾーンに加入し得、それによりタイルの任意の群を一緒に同期させることができる。各同期ゾーンは、個々に、各同期ゾーンの設定に応じてタイル4の異なる同期群を含むように構成可能である。これらの設定を変更することにより、タイル4を同期ゾーンと関連付けるか又は関連付け解除し得る。特定の処理ユニット2にサポートされる同期ゾーンは、内部として構成され得、その場合、そのゾーンに加入するその処理ユニット2のタイル4は、互いにのみ同期する。他方で、特定の処理ユニット2にサポートされる同期ゾーンは、外部として構成され得、その場合、ゾーンは、複数の処理ユニット2にわたって広がり、そのゾーンに参加しているある処理ユニット2のタイル4は、そのゾーンに参加している別の処理ユニット2のタイル4と同期する。
【0066】
ある同期ゾーンに属する処理ユニット2のタイル4の各々について、そのタイル4は、バリア同期に達すると、同期要求を発行する。タイル4によって発行された同期要求は、集計されて内部同期要求を形成し、これは、処理ユニット2の同期論理に提供される。実施形態では、同期論理は、内部同期コントローラ55及び外部同期コントローラ58を含み、これらについてより詳細に後述する。内部同期要求の受信に応答して、要求への肯定応答前にその同期ゾーンの更なるエンティティに外部同期要求を伝播させ得る。更なるエンティティは、ホストシステム又は別の処理ユニット2と関連する同期論理とデータを交換するためのプロキシであり得る。
【0067】
外部同期要求が、別の処理ユニット2と関連する同期論理に伝播する場合、外部同期要求に応答して上記別の処理ユニット2と関連する同期論理が取る動作は、その論理が同期ゾーンのマスタとして定義されているか、又は同期ゾーンの伝播ノードとして定義されているかに依存する。同期ゾーンの伝播ノードは、受信した外部同期要求を、同期ゾーンに定義されたマスタに向けて伝播させる。同期マスタは、その同期ゾーンに属するタイル4を含む処理ユニット2の各々への外部同期要求を受信すると、その同期ゾーンに属するタイル4を含むそれらの別の処理ユニット2(それ自体の処理ユニット2とは別)の各々と関連する同期論理に外部同期肯定応答を返信する。同期マスタは、それ自体の処理ユニット2内のタイル4の各々にも同期肯定応答を返信させる。各処理ユニット2と関連する同期論理(伝播ノードを含む)は、同期マスタを発端とする外部同期肯定応答を受信すると、その処理ユニット2のそれらのタイル4に同期肯定応答を返信する。同期肯定応答を受信したことに応答して、同期ゾーンのタイル4は、バリア同期を通過し、交換フェーズ中に互いにデータを交換する。異なる処理ユニット2間のデータのこの交換は、本発明者らの先の出願である米国特許出願公開第15/886,065号明細書に記載されている非時間決定方式で行われる。
【0068】
この説明では、同期ネットワークという用語は、同期要求/肯定応答を交換して、同期ゾーンに属するタイル4間のバリア同期を調整するために使用される同期ゾーンの接続された同期伝播ノード/回路を指す。同期ネットワークで定義されるマスタノードに向けて送信された同期要求は、同期ネットワークにおいて「上流」に送信されたと言える。同期ネットワークで定義されるスレーブノードに向けて送信される同期肯定応答は、同期ネットワークにおいて「下流」に送信されたと言える。同期ネットワークの概念について、
図19に関して更に詳述する。
【0069】
図5を参照すると、
図5は、一例の集積回路500a(即ちチップ500a)を示す。複数の同様のそのようなチップを一緒に接続し得る。この説明の残りの部分では、一例のチップ500aがその1つである接続されたチップは、チップ500と呼ばれる。各チップ500は、タイル4を含む処理ユニット2を含む。各チップ500の処理ユニット2は、ホストシステムによって提供される処理作業負荷のアクセラレータとして機能するため、各チップ500は、処理デバイス500又はアクセラレータサブシステム500と呼ばれることもある。処理デバイス500は、この説明全体を通してチップ500として説明されるが、幾つかの実施形態では、そのような処理デバイス500が同じ集積回路で実装され得ることを除外しない。
【0070】
複数のチップ500の中から識別するために、
図5に示された特定のチップをチップ500aと呼ぶ。同様に、複数の処理ユニット2から識別するために、
図5に示された特定の処理ユニットを処理ユニット2aと呼ぶ。後述するチップ500a及び処理ユニット2aの特徴は、チップ500及び処理ユニット2の各々の特徴でもある。
【0071】
処理ユニット2aにおけるタイル4の各々は、異なるタイプのバリア同期に参加し得る。第1のタイプのバリア同期は、内部同期であり、同じ処理ユニット2aのタイル4のみが参加する。
【0072】
第2のタイプの同期は、外部有線同期であり、同期の同期ゾーンは、処理ユニット2aのタイル4を含むことに加えて、ローカル有線接続を経由してアクセス可能な1つ又は複数のチップ500におけるタイル4も含む。外部有線同期の場合、同期メッセージは、異なるタイプの同期メッセージの伝送に使用される専用ワイヤを経由してチップ500間で交換される。外部有線同期で交換フェーズ中にチップ500間で交換されるアプリケーションデータは、その同期に参加しているチップ500間のPCIe接続を経由して送られる。
【0073】
第3のタイプの同期は、ホストが関わる外部同期である。この場合、ホスト同期プロキシ(HSP)は、データがホストと処理ユニット2aのタイル4との間で交換される交換フェーズ前に、処理ユニット2aと同期メッセージを交換することによってバリア同期に参加する。
【0074】
第4のタイプの同期は、外部パケットベース同期であり、外部パケットベース同期では、その同期の同期群は、処理ユニット2aのタイル4を含むことに加えて、パケット交換ネットワーク(例えば、Ethernet(登録商標)ネットワーク)を経由してアクセスされる1つ又は複数のチップ500におけるタイル4も含む。外部パケットベース同期の場合、パケット交換ネットワークを経由してアプリケーションデータをチップ500間で送ることに加えて、同じパケット交換ネットワークを経由して同期メッセージも送られる。
【0075】
処理ユニット2aにおける各タイル4が異なるタイプの同期に参加できるようにするために、複数の同期ゾーンが処理ユニット2aに提供される。実施形態では、30個の異なる同期ゾーンが処理ユニット2aに提供され、これらの同期ゾーンの各々は、処理ユニット2aのタイル4の1つ又は複数を含むように構成可能である。各同期ゾーンは、個々に、タイル4の異なる同期群を含むように構成可能である。
【0076】
各同期ゾーンは、外部バリア同期の外部同期ゾーンとして(この場合、対応する同期群は、他の処理ユニット2のタイル4を含む)又は内部バリア同期の内部同期ゾーンとして(この場合、その同期ゾーンの同期群は、処理ユニット2aのタイル4に制限される)構成され得る。
【0077】
同期ゾーンは、その同期ゾーンに提供されるハードウェア、したがってその同期ゾーンを使用して実施され得る同期のタイプに応じて異なるセットに分類され得る。同期ゾーンの第1のセットは、上述した第1のタイプの同期(即ち内部同期)又は上述した第2のタイプの同期(即ち外部有線同期)のいずれかに使用されるように構成され得る同期ゾーンである。処理ユニット2aに30個の同期ゾーンが定義される実施形態では、これらのゾーンの最初の22個(同期ゾーン1~22と記される)は、同期ゾーンの第1のセットに属する。
【0078】
同期ゾーンの第1のセットのうち、これらの同期ゾーンのサブセットは、ホスト関与との通信に使用することもでき、即ち上述した第3のタイプの同期に使用することができる。同期ゾーンの第1のセットが22この同期ゾーンを含む実施形態では、これらの同期ゾーンの2つ(同期ゾーン1及び2と記される)は、バリア同期に使用し得、それに続いてデータ交換がホストと処理ユニット2aのタイル4との間で実行される。
【0079】
同期ゾーンの第2のセットは、上述した第1のタイプの同期(即ち内部同期)又は上述した第4のタイプの同期(即ち外部パケットベース同期)に使用され得る同期ゾーンである。処理ユニット2aに30個の同期ゾーンが定義される実施形態では、これらのゾーンの最後の8つ(同期ゾーン23~30と記される)は、同期ゾーンの第2のセットに属する。
【0080】
上述したように、同期ゾーンの一部である異なるタイル4間の同期を調整するために、同期要求及び同期肯定応答の交換がタイル4間で実行される。同期要求が伝播され、肯定応答がなされる同期ネットワークの経路は、同期群に属するタイル4間の同期を調整するために、使用中の同期ゾーンの構成設定に依存することになる。
【0081】
以下の説明では、複数のタイプの同期要求及び肯定応答信号が同期ネットワークの異なる部分で使用される場合について説明する。これらの信号を区別するために、以下の用語を採用する。
【0082】
各タイル4は、各同期ゾーンのための同期要求ワイヤを有する。このワイヤの状態は、本明細書ではタイル同期要求状態と呼ばれる。ワイヤの状態が、同期要求がタイル4によってアサートされることを示すように設定される場合、生成される同期要求は、タイル同期要求と呼ばれる。各タイル4は、実行ユニット52を含み、実行ユニット52は、同期要求ワイヤの状態を制御し得る。任意のそのようなワイヤでは、実行ユニット52によって出力され、そのワイヤでのタイル同期要求をアサートするために使用される信号は、同期制御信号と呼ばれる。
【0083】
各タイル4は、各同期ゾーンのための同期肯定応答ワイヤも有する。このワイヤの状態は、本明細書では内部同期肯定応答状態と呼ばれる。ワイヤの状態が、同期肯定応答がタイル4によってアサートされることを示す場合、生成される同期肯定応答は、内部同期肯定応答と呼ばれる。実行ユニット52は、内部同期肯定応答状態におけるエッジに応答して生成されるパルスに応答する。そのようなパルスは、本明細書では同期肯定応答パルスと呼ばれる。
【0084】
処理ユニット2aにおける全てのタイル4の同期要求状態を集計するために、集計回路が処理ユニット2aに提供される。集計回路のそのような各ユニットによって出力される信号の状態は、本明細書では集計同期要求状態と呼ばれ、集計同期要求状態によってシグナリングされる同期要求は、集計同期要求と呼ばれる。処理ユニット2aの全てのタイル4の集計同期要求状態は、内部集計同期要求状態と呼ばれ、そのような状態によってシグナリングされる同期要求は、内部同期要求と呼ばれる。そのような内部同期要求は、入力として内部同期コントローラ55に提供され、内部同期コントローラ55は、それに応答して、対応する内部同期肯定応答を出力する。この内部同期肯定応答は、処理ユニット2aの全てのタイル4に伝播する。
【0085】
構成された特定の同期ゾーンの内部同期コントローラ55は、内部同期要求に応答して、同期要求を外部同期コントローラ(GSP58)に出力する。この同期要求は、外部同期要求と呼ばれる。GSP58は、それに応答して、同期肯定応答を内部同期コントローラ55に返信する。この返信された肯定応答は、外部同期肯定応答と呼ばれる。
【0086】
図5は、処理ユニット2aがタイル4とGSP58との間に同期コントローラ回路55(IPU同期コントローラ55として示される)を含むことを示す。IPU同期コントローラ55は、GSP58からの入力を必要とせずに内部バリア同期に対する内部同期要求に肯定応答するため、内部同期コントローラ55と呼ばれることもある。IPU同期コントローラ55は、タイル4によって出力された集計同期要求状態によって表される内部同期要求を受信し、GSP58のレジスタ501における設定に応じて動作を実行する。レジスタ501における設定は、各同期ゾーンについて、その同期ゾーンが内部として定義されているか、又は外部として定義されているかを定義する。レジスタ501における設定の指示は、GSP58とIPU同期コントローラ55との間のインタフェース502を経由してIPU同期コントローラ55に提供される。30個の同期ゾーンのいずれも外部又は内部のいずれかとして定義され得る。
【0087】
内部同期要求がIPU同期コントローラ55で受信され、その同期要求の同期ゾーンがレジスタ501において外部同期ゾーンとして定義されている場合、IPU同期コントローラ55は、それに応答して、外部同期要求をGSP58に、その同期に特定の同期ゾーンと関連するGSP58のインタフェース上で提供する。
図5に示されるように、GSP58は、幾つかのインタフェース(IS0~IS29と記される)を有し、その各々は、処理ユニット2aに提供される同期ゾーンの1つと関連する。同期コントローラ55は、内部同期要求と同じ同期ゾーンと関連するインタフェース(IS0~IS29)の1つを経由して外部同期要求を提供する。それに応答して、GSP58は、外部同期肯定応答を返信し、これは、外部同期要求が提供されたときに経由したものと同じインタフェースIS0~IS29の1つのインタフェースを経由して送られる。GSP58から返信された外部同期肯定応答に応答して、同期コントローラ55は、内部同期肯定応答を処理ユニット2aにおける各タイル4に出力する。
【0088】
特定の同期ゾーンと関連する内部同期要求がIPU同期コントローラ55で受信されると、その同期ゾーンがレジスタ501において内部同期ゾーンとして定義されている場合、IPU同期コントローラ55は、内部同期肯定応答を処理ユニット2aのタイル4に送らせる。IPU同期コントローラ55は、GSP55からの外部同期肯定応答を待つことなくこの動作を実行する。しかしながら、IPU同期コントローラ55は、外部同期要求信号をGSP58にも渡し得、それにより同期ゾーンと関連するGSP58のインタフェースでアサートされる。これにより、GSP58は、その同期のトレースデータを記録することができる。
【0089】
内部同期要求及び内部同期肯定応答を送信及び受信するために、IPU同期コントローラ55は、複数のワイヤセットを含み、各ワイヤセットは、異なる同期ゾーンと関連する。各ワイヤセットは、少なくとも、各同期ゾーンの内部同期要求が受信される同期要求ワイヤと、各同期ゾーンの内部同期肯定応答がタイル4に送られる同期肯定応答ワイヤとを含む。
【0090】
外部同期要求及び外部同期肯定応答を送信及び受信するために、IPU同期コントローラ55は、複数のワイヤセットを含み、各ワイヤセットは、異なる同期ゾーンと関連する。各ワイヤセットは、GSP58のインタフェースIS0~IS29の異なる1つとも関連し、外部同期要求をGSP58に渡し、外部同期肯定応答を各同期ゾーンのGSP58から受信するために使用される。
【0091】
各タイル4がいずれの同期ゾーンに参加すべきかを示すことを保証するために、個々の各タイル4は、処理ユニット2aに定義された同期ゾーンの1つとそれぞれ関連する複数の専用同期要求ワイヤも有する。各タイル4は、特定の同期ゾーンと関連するバリア同期に参加すべき場合、その同期ゾーンと関連する同期要求ワイヤ上でタイル同期要求を発行する。各タイル4は、処理ユニット2aに定義された同期ゾーンの1つとそれぞれ関連する複数の専用同期肯定応答ワイヤも有する。各タイル4は、同期ゾーンの同期要求ワイヤ上で大利得同期要求を発行した後、その同期ゾーンと関連する同期肯定応答ワイヤ上で同期コントローラ55から内部同期肯定応答を受信する。それに応答して、タイル4は、バリア同期に続く交換フェーズに進む。
【0092】
図6を参照すると、
図6は、アプリケーションの一例の実施形態によるタイル4の一例を示す。タイル4は、実行ユニット52によって実行される命令及び命令を実行するとき、実行ユニット52が動作を実行するように構成されるデータの両方を記憶するメモリ51を含む。メモリ51は、その各タイル4のローカルプログラムを含み、そのローカルプログラムは、実行ユニット52によって実行される命令を含む。各タイル4の命令(又はコード)セットは、タイル4がバリア同期に参加すべき同期点の指示を含む。指示は、同期命令を含み、同期命令は、タイル4がローカルプログラムにおいて同期点に達したとき、各実行ユニット52によって実行されるためのものである。後述するそのような各同期命令は、各タイル4の実行ユニット52が所与の同期点に達したときに実行され、その同期点で実行されるべきバリア同期に関連して同期要求を同期コントローラに発行させる。
【0093】
タイル4は、同期ゾーンレジスタ53を含み、同期ゾーンレジスタ53は、処理ユニット2に定義される複数の同期ゾーンの各々について、タイル4が各同期ゾーンに属するか否かに関する指示を記憶する。同期ゾーンレジスタ53は、ビットマップを含み、各ビットは、タイル4が複数の同期ゾーンのうちの異なる同期ゾーンに属するか否かを示す。
【0094】
属する同期ゾーンを変更するために、タイル4の実行ユニット52は、同期ゾーンレジスタ53に保持された指示を変更する命令を実行し得る。幾つかの実施形態では、処理ユニット2aの各タイル4が属する同期ゾーンは、特定のアプリケーションにおいて固定される。他の実施形態では、アプリケーションの実行中、処理ユニット2aの1つ又は複数のタイル4の実行ユニット52は、レジスタ53に保持された同期ゾーン指示を変更する命令を実行して、属する同期ゾーンを変更する。
【0095】
タイル4は、データ出力インタフェース54を含み、データ出力インタフェース54は、内部交換フェーズ中、同じ処理ユニット2aに属する他のタイル4にデータを送り、外部交換フェーズ中、デバイス500a外部の宛先にデータを送るために使用される。タイル4は、データ入力インタフェース59を含み、データ入力インタフェース59は、内部交換フェーズ中、同じ処理ユニット2aに属する他のタイル4からデータを受信し、外部交換フェーズ中、デバイス500a外部のソースからデータを受信するために使用される。
【0096】
タイル4は、複数の同期出力インタフェース60を含み、同期出力インタフェース60は、タイル同期要求状態をタイル4から内部同期コントローラ55に向けて出力するために使用される。タイル4は、内部同期肯定応答を同期コントローラ55から受信し、実行ユニット52に通知するための複数の同期入力インタフェース61も含む。各同期出力インタフェース60は、異なる同期ゾーンと関連し、関連する同期ゾーンのタイル同期要求を対応する同期要求ワイヤ上で送るために使用される。各同期入力インタフェース61は、異なる同期ゾーンと関連し、関連する同期ゾーンの内部同期肯定応答を対応する同期肯定応答ワイヤ上で受信するために使用される。簡潔にするために、タイル4は、2つのみの同期出力インタフェース60及び2つの同期入力インタフェース61のみを含んで示されているが、実際には、タイル4は、3つ以上(例えば、30個)の各タイプのインタフェース60、61を含むであろう。
【0097】
タイル4は、関連する同期要求ワイヤの状態を、その同期ゾーンの対応する同期肯定応答ワイヤの状態の逆に設定することにより、同期ゾーンへのタイル同期要求を出力するように構成される。例えば、特定の同期ゾーンの内部同期肯定応答信号がローに設定される場合、タイル同期要求をアサートするために、対応する同期要求ワイヤ上の信号は、ハイに設定される。逆に、特定の同期ゾーンの内部同期肯定応答信号がローに設定される場合、タイル同期要求をアサートするために、対応する同期要求ワイヤ上の信号は、ハイに設定される。
【0098】
図7を参照すると、
図7は、複数のタイル同期要求がタイル4によって発行される時系列を示す。示される同期要求及び肯定応答信号は、タイル4が参加するように構成された、「z」と記される特定の同期ゾーンに対するものである。したがって、考察される同期要求ワイヤ、出力インタフェース60、同期肯定応答ワイヤ及び入力インタフェース61は、同期ゾーンzのものである。
【0099】
まず、タイル4の同期肯定応答ワイヤの状態は、ローに保持される。タイル4の実行ユニット52は、同期命令を実行して、タイル同期要求(即ちreq1)を同期要求ワイヤ上でアサートさせる。出力インタフェース60の回路は、同期要求ワイヤの状態を同期肯定応答ワイヤの状態の逆に設定することにより、タイル同期要求(即ちreq1)を発行させる。肯定応答ワイヤは、ロー状態に保持されるため、タイル同期要求は、同期要求ワイヤの状態をハイに設定することによって発行される。タイル同期要求は、ローからハイへの同期要求信号の遷移によって表される。
【0100】
タイル同期要求のアサート後のある時点において、内部同期肯定応答(即ちack1)がタイル4の入力インタフェース61で受信される。内部同期肯定応答は、同期肯定応答ワイヤが状態を変えるとき、即ち受信された同期肯定応答におけるエッジが検出されるときに検出される。タイル同期要求「req1」の発行に続いて、タイル4の同期要求ワイヤは、ハイ状態に保持される。同期肯定応答ワイヤもハイ状態に設定されると、内部同期肯定応答「ack1」がタイル4で受信される。「ack1」の受信を反映した遷移が生じると、同期要求ワイヤ及び同期肯定応答ワイヤは、両方ともハイ状態に保持される。両方のワイヤが同じ状態に保持されるため、タイル同期要求(即ちreq1)は、もはやアサートされない。ack1が受信される遷移点が受信され、したがってreq1がデアサートされるポイントも反映する。
【0101】
ack1が受信された後、実行ユニット52は、交換フェーズに移り、交換フェーズにおいて1つ又は複数の送信命令を実行して、データをメモリ51からデータ出力インタフェース54を経由して送らせ得る。
【0102】
更なるバリア同期に参加するために、実行ユニット52は、更なる同期命令を実行して、更なるタイル同期要求(即ちreq2)を発行させる。この場合、対応する同期肯定応答ワイヤは、ハイ状態に設定されるため、更なるタイル同期要求(即ちreq2)は、同期要求ワイヤをロー状態に設定することによって発行される。同期肯定応答ワイヤがローに設定されるときである、対応する肯定応答(即ちack2)が受信されるまで、タイル同期要求は、アサートされたままである。
【0103】
ack2の受信に続いて、実行ユニット52は、同期要求ワイヤを設定することによって発行される次のタイル同期要求(即ちreq3)をハイ状態に設定させる更なる同期命令を実行することに進む。このタイル4の同期要求は、ack3の受信を示す、同期肯定応答ワイヤもハイ状態に設定されるまでアサートされたままである。
【0104】
図6に示されるように、実行ユニット52に加えて、同期ゾーンレジスタ53の値を使用して、同期要求ワイヤの状態を制御することもできる。同期ゾーンレジスタ53内の値に応じた同期要求ワイヤの状態の制御は、タイル4がその特定の同期ゾーンに属さず、参加するように構成されない場合でも、特定の同期ゾーンのバリア同期を進めさせることができる。特定の同期ゾーンについて、同期ゾーンレジスタ53が、タイル4がその同期ゾーンに属さないという指示を含むと考える。その場合、その特定の同期ゾーンの同期出力インタフェース60は、タイル4がその同期ゾーンに属さないというレジスタ53における指示に応答して、タイル同期要求を出力するように構成される。レジスタ53における指示が、タイル4がその同期ゾーンに属さないというようなものである限り、同期出力インタフェース60は、実行ユニット52の活動を問わず、タイル同期要求を引き続き出力する。実行ユニット52は、計算フェーズ中、計算を実行する追加の命令を引き続き実行し得るか、又は他の同期ゾーンのバリア同期に参加する同期命令を実行し得る。このようにして、タイル4は、
図6のタイル4が参加していない同期ゾーンに属する他のタイル4の計算-交換サイクルと非同期で動作し得る。
【0105】
図8Aを参照すると、
図8Aは、一例の同期出力インタフェース60を示す。同期出力インタフェース60は、内部同期肯定応答信号を反転させて、タイル4が、インタフェース60と関連する同期ゾーンに参加していないとき、タイル同期要求を提供するために出力し得る信号を提供するように構成されたインバータ82を含む。同期出力インタフェース60は、マルチプレクサ81を含み、マルチプレクサ81は、レジスタ53内の指示に応じて制御されて、インバータ82によって供給される内部同期肯定応答の反転形態を出力するか、又は実行ユニット52による同期命令の実行によって制御される同期信号を出力するかいずれかを選択する。
【0106】
タイル4が、
図8Aに示されるインタフェース60と関連する同期ゾーンに参加しない場合、タイル4が参加しないというレジスタ53における指示を反映した制御信号がマルチプレクサ81で受信され、内部同期肯定応答の反転形態を選択するようにマルチプレクサ81を制御する。インタフェース60は、内部同期肯定応答のこの反転形態を同期要求ワイヤ上で出力する。内部同期肯定応答の反転形態は、アサートされたタイル同期要求を反映するため、このようにして、タイル4がその同期ゾーンに参加していない場合、実行ユニット52の活動を問わず、その同期ゾーンのタイル同期要求が続けてアサートされる。
【0107】
タイル4が、
図8Aに示されるインタフェース60と関連する同期ゾーンに参加する場合、タイル4が参加するというレジスタ53における指示を反映した制御信号がマルチプレクサ81で受信され、同期要求ワイヤの状態が実行ユニット52によって制御されるようにマルチプレクサ81を制御する。この実行ユニット52は、同期信号を提供し、タイル同期要求をアサートするためにこの同期信号をハイに設定し、同期要求をデアサートするために同期信号をローに設定する。XORゲート83を使用して、同期要求を同期コントローラ55にシグナリングするためのシグナリング方式に従ってタイル同期要求を提供する。XORゲート83は、内部同期肯定応答信号を受信し、実行ユニット52が同期制御信号をアサートしていない場合にこの同期肯定応答を出力するか、又は実行ユニットが同期制御信号をアサートしている場合に内部同期肯定応答の反転形態を出力する。このようにして、マルチプレクサ81がXORゲート83から出力を選択するように制御される場合、マルチプレクサ81、したがって出力インタフェース60は、実行ユニット52によってタイル同期要求を出力するように制御された場合、タイル同期要求を出力する。タイル同期要求を発行するために、実行ユニット52は、同期命令を実行し、それによりインタフェース60から出力される同期要求ワイヤの状態を同期肯定応答ワイヤの現在状態の逆に設定させる。
【0108】
一例の同期入力インタフェース61を示す
図8Bを参照すると、同期入力インタフェース61は、内部同期肯定応答信号を受信し、この信号の状態に応じて同期肯定応答パルスを実行ユニット52に出力する。一例の同期入力インタフェース61は、任意の同期ゾーンと関連し得、異なる同期ゾーンの各同期入力インタフェース61は、同じ回路を含む。一例の同期入力インタフェース61は、
図8Aに示される一例の同期出力インタフェース60と同じ同期ゾーンと関連し得る。
【0109】
インタフェース61は、フリップフロップ85を含み、フリップフロップ85は、インタフェース61で受信された内部同期肯定応答信号の状態を記憶する。フリップフロップ85は、このラッチされた状態を出力する。インタフェース61は、XORゲート86も含み、XORゲート86は、1つの入力として同期肯定応答ワイヤの状態を受信し、別の入力としてフリップフロップ85の出力を受信する。XORゲート86は、これらの2つの入力が異なる場合、ハイ信号を出力する。インタフェース61の同期肯定応答ワイヤの状態が変わる場合、この同期肯定応答ワイヤの状態は、一時的にフリップフロップ85の出力と一致しないことになる。その結果、XORゲート86は、1つのハイ入力及び1つのロー入力を受信し、その結果、ハイ信号を出力する。1クロックサイクル後、フリップフロップ85の状態が、同期肯定応答ワイヤの更新された状態に一致するように更新された場合、フリップフロップ85の出力は、同期肯定応答ワイヤの状態と一致することになる。その結果、XORゲート86は、ロー信号を出力する。このようにして、インタフェース61は、受信した同期肯定応答信号のエッジに応答してパルス(同期肯定応答パルス)を提供する。同期肯定応答パルスは、インタフェース61から実行ユニット52に出力される。実行ユニット52は、同期肯定応答パルスに対応する同期ゾーンの同期命令を実行した場合、この同期肯定応答パルスを待っている間にストールする。同期肯定応答パルスの受信に応答して、実行ユニット52は、バリアを通過して交換フェーズに進み、交換フェーズでは、データは、そのタイル4と他のタイル4との間で交換される。実行ユニット52がそのような同期命令を実行しておらず、同期肯定応答パルスと関連する同期ゾーンに参加していないとして同期ゾーンレジスタ53で示されているタイル4の一部である場合、実行ユニット52は、同期肯定応答パルスを無視する。
【0110】
同様に
図8Bに示されているように、インタフェース61で受信された内部同期肯定応答信号は、同期入力インタフェース61と関連する対応する同期出力インタフェース60にも提供される。
図8Aに示されるように、この内部同期肯定応答信号は、入力としてXORゲート83及びインバータ82の両方に提供され、このようにしてタイル同期要求信号を提供するために使用される。
【0111】
処理ユニット2aにおける各タイル4は、同様に動作して、同期肯定応答ワイヤの状態に応じてタイル同期要求をアサートする。集計回路が処理ユニット2aに提供されて、タイル4によって出力されたタイル同期要求を集計して、同期コントローラ55に提供される内部同期要求を提供する。集計回路は、各同期ゾーンに対してそのような集計を実行して、各同期ゾーンの集計同期要求状態を提供する。集計回路は、各タイル4のタイル同期要求状態の状態を変えたことに応答して、集計信号が状態を変えるように、タイル同期要求出力の状態を集計するように構成される。例えば、処理ユニット2における特定の同期ゾーンの各タイル4の同期要求ワイヤの状態がロー状態に設定される場合、集計信号もローになる。集計回路は、その同期ゾーンのタイル同期要求ワイヤの全ての状態がハイ状態に設定されることに応答して、集計信号に状態をハイ状態に変えさせる。
【0112】
図9を参照すると、
図9は、タイル同期要求が処理ユニット2aにわたってどのように集計されるかについての一例を示す。示されるように、タイル4は、対で配置され(「対タイル」と呼ばれる)、対は、列に配置される。集計回路は、回路910及び回路920のセットを含む。各対タイルは、関連するタイル4からの同期要求を集計するように構成された回路910のセットと関連する。回路910の各セットは、同期要求状態を同期ネットワークの上流から受信し、この状態を、関連する対タイル4によって出力された同期要求状態と集計する。列間において、回路920は、異なる列から集計された同期要求状態を受信するように構成される。
【0113】
説明したように、集計回路910、920は、その同期ゾーンの内部同期肯定応答信号(同期コントローラ55によって出力される)の状態に応じて同期要求状態の集計を実行するように構成される。
【0114】
図10を参照すると、
図10は、内部同期肯定応答を処理ユニット2aの異なるタイル4及び集計回路910、920にどのように分散させ得るかを示す。より詳細に説明するように、同期コントローラ55は、内部同期要求の受信に応答して内部同期肯定応答信号の状態を変更する。
【0115】
示されるように、内部同期肯定応答信号は、タイル4、集計回路910及び集計回路920の全てに提供される。同期コントローラ55によって出力された内部同期肯定応答信号は、タイル4及び回路910、920に信号を分配するために使用される全ての同期肯定応答ワイヤ上で同じ状態で提供される。
【0116】
図11を参照すると、
図11は、一例の実施形態による一例の集計回路910を示す。集計回路910は、ORゲート1100及びANDゲート1110を含む。各ゲート1100、1110は、回路910と関連する2対のワイヤ4の各々から同期要求状態を受信する。各ゲート1100、1110は、関連する列の更に上のタイル4の集計された同期要求状態を反映した上流同期要求信号を更に受信する。
【0117】
回路910は、マルチプレクサ1120を含み、マルチプレクサ1120は、内部同期肯定応答信号に応じて制御されて、ORゲート1100の出力又はANDゲート1110の出力のいずれかを選択する。内部同期肯定応答信号がハイである場合、ORゲート1100が選択される一方、内部同期肯定応答信号がローである場合、ANDゲート1110が選択される。この選択の結果として、回路910は、回路910で受信された全てのタイル同期要求(即ちタイル4及び上流同期要求信号の両方からの信号)が内部同期肯定応答信号とは逆の状態を有する場合、内部同期肯定応答信号とは逆の信号のみを出力する。例えば、内部同期肯定応答信号がハイである場合、ORゲート1100が選択され、したがってORゲート1100への全ての入力がローになるまで、回路910によって出力される同期要求状態もハイになる。他方で、内部同期肯定応答信号がローである場合、ANDゲート1110が選択され、したがってANDゲート1110への全ての入力がハイになるまで、回路910によって出力されるタイル同期要求状態もローになる。
【0118】
回路910の複数のインスタンスが一緒に連結されて、列の集計同期要求状態を提供する。
【0119】
図12を参照すると、
図12は、集計同期要求状態をタイル4の列1200にどのように提供し得るかを示す。回路910b~eの各セットは、
図11に示されるように、その関連するタイル4によって出力されたタイル同期要求状態を受信し、回路910の隣接セットによって提供される集計同期要求状態(上流同期要求状態とも呼ばれる)を更に受信するように構成される。例えば、回路910bは、回路910aによって出力された上流同期要求状態を受信し、回路910cは、回路910bによって出力された上流同期要求状態を受信し、以下同様である。回路910aは、列1200の上部に配置され、その上にもはや集計回路910が配置されないため、回路910aは、上流同期要求状態としてインバータ1210の出力を受信する。インバータ1210は、同期肯定応答信号を反転させ、そうするに当たり、出力として、アサートされた同期要求信号を提供する。回路910a~eの各セットは、関連するタイル4からアサートされたタイル同期要求を受信し、列1200内のより高いところからアサートされた同期要求を受信すると、アサートされた同期要求を出力することになる。このようにして、全てのタイル4もアサートされた同期要求信号を提供すると、回路910eによって出力される集計も、同じアサートされた同期要求信号になる。
【0120】
図13を参照すると、
図13は、一例の集計回路920を示すと共に、回路920が異なる列の同期要求状態をどのように集計するかを示す。回路910と同様に、回路920は、ORゲート1300及びANDゲート1310を含む。ANDゲート1310及びORゲート1300は、両方とも入力として集計同期要求状態を複数の列のうちの2つの列から受信すると共に、更なる集計同期要求状態を受信する。更なる集計同期要求状態は、列に直交して延びるデータ交換配線方向において状態が集計されるため、
図13では「交換集計同期要求状態」として示されている。交換集計同期要求状態は、同期ネットワークの上流にある回路920の更なるインスタンスによって出力され得るか、又は上流にある回路920の更なるインスタンスが存在しない場合、内部同期肯定応答信号の反転形態によって提供され得る。
【0121】
回路920は、マルチプレクサ1320を含み、マルチプレクサ1320は、内部同期肯定応答信号に応じて制御されて、ORゲート1300の出力及びANDゲート1310の出力のうちから一方を選択する。内部同期肯定応答信号がハイである場合、ORゲート1300が選択される一方、内部同期肯定応答信号がローである場合、ANDゲート1310が選択される。この選択の結果として、回路920は、回路920で受信された集計同期要求状態(即ち関連する両方の列からの集計同期要求状態及び交換集計同期要求状態)の全てが内部同期肯定応答信号の逆の状態を有する場合、内部同期肯定応答信号の逆である信号のみを出力する。例えば、内部同期肯定応答信号がハイである場合、ORゲート1300が選択され、したがってORゲート1300への全ての入力がローでない限り、回路920によって出力される集計同期要求状態もハイである。他方で、内部同期肯定応答信号がローである場合、ANDゲート1310が選択され、したがってANDゲート1310への全ての入力がハイでない限り、回路920によって出力される集計同期要求状態もローである。
【0122】
回路920の複数のインスタンスは、一緒に連結されて集計同期要求状態を処理ユニット2aに提供する。回路910のインスタンス及び回路920のインスタンスによって実行される集計の結果として、提供される集計同期要求状態は、タイル4の全てが同期要求出力信号を適宜設定している場合に内部同期要求を表す。
【0123】
図14Aを参照すると、
図14Aは、同期コントローラ55内の回路を示す。
図14Aは、単一の同期ゾーンと関連する同期コントローラ55に提供される回路を示す。しかしながら、同期コントローラ55は、各同期ゾーンにそのような回路の別個のインスタンスを含むことが認識されるであろう。同期コントローラ55内の回路は、内部同期要求の受信に応答して内部同期肯定応答を提供する。同期コントローラ55の回路は、GSP58とも通信して、外部同期要求及び肯定応答信号を送信及び受信する。外部同期要求及び肯定応答信号は、
図14Bを参照してより詳細に説明される代替の同期シグナリング方式に従って提供される。
【0124】
レジスタ501がGSP58に提供され、処理ユニット2aにサポートされる各同期ゾーンについて、これらのゾーンのいずれが内部として構成され(処理ユニット2aのタイル4のみを含む)、いずれが外部として構成される(他の処理ユニット2のタイル4も含む)かを示す。
【0125】
回路が
図14Aに示される同期ゾーンが内部として構成される場合、そのようなことを示す信号(「内部同期有効化」信号として示されている)は、GSP58の回路によってORゲート1440に提供される。したがって、ORゲート1440は、ハイ信号をマルチプレクサ1450に出力する。信号は、内部同期要求状態(即ちコントローラ55で受信された集計同期要求状態)を出力するようにマルチプレクサ1450を制御するために使用される。したがって、内部同期肯定応答状態は、内部同期要求状態と同じ状態であるように設定される。このようにして、同期ゾーンが内部であるように構成される場合、同期コントローラ55は、内部同期肯定応答状態を内部同期要求状態と同じに設定することにより、内部同期要求に対して即座に肯定応答する。
【0126】
回路が
図14Aに示される同期ゾーンが外部として構成される場合、内部同期有効化信号は、ローに設定され、したがって、ORゲート1440の出力は、GSP58が外部同期肯定応答信号を提供するまでローに設定されることになる。外部同期肯定応答がGSP58から受信される前、同期コントローラ55は、外部同期要求をGSP58に提供する。
【0127】
外部同期要求及び同期肯定応答は、タイル同期要求及び肯定応答並びに内部同期要求及び肯定応答に使用される方式(
図7に例示される)と異なる同期方式に従って表される。
図14Bを参照すると、
図14Bは、外部同期要求及び肯定応答をシグナリングするための方式を示す。この図は、同期ネットワークにおける下流伝播ノードと上流伝播ノードとの間の同期ハンドシェークの一例を示す。下流伝播ノードは、例えば、あるチップ500上のGSP58であり得る一方、上流伝播ノードは、別のチップ500上のGSP58である。
【0128】
図14Bは、外部同期要求信号の状態及び外部同期肯定応答信号の状態を示す。これらは、それぞれ別個のワイヤで提供され、したがって、信号の状態は、ワイヤの状態を反映する。同期ハンドシェークの開始時、下流伝播ノードは、外部同期要求信号をハイに設定することによって外部同期要求(1.アサートされた同期要求として示されている)を提供する。これは、外部同期要求を上流伝播ノードで検出させる。下流伝播ノードは、外部同期肯定応答を受信するまで外部同期要求をアサートされた状態に保つことになる。実際に、下流伝播ノードは、外部同期肯定応答を受信するまでストールする。上流伝播ノードは、外部同期要求に応答して、外部同期肯定応答信号をハイに設定することによって外部同期肯定応答(2.アサートされた同期肯定応答として示されている)を提供する。これは、外部同期肯定応答を下流伝播ノードで検出させる。下流伝播ノードは、外部同期肯定応答に応答して、外部同期要求信号をローに設定することによって外部同期要求(3.デアサートされた同期要求として示されている)をデアサートする。上流伝播ノードは、同期要求信号がデアサートされていることを検出し、同期要求信号のデアサートに応答して、外部同期肯定応答信号の状態をローに設定することによって外部同期肯定応答(4.デアサートされた同期肯定応答として示されている)をデアサートする。外部同期肯定応答信号がデアサートされた状態で、同期ネットワークの2つのノード間の同期ハンドシェークが完了する。
【0129】
同期コントローラ55は、内部同期要求を外部同期要求に変換し、外部同期肯定応答を内部同期肯定応答に変換するための回路を含む。回路は、XORゲート1410を含み、XORゲート1410は、内部同期要求から外部同期要求を生成するための回路の一部である。XORゲート1410は、1つの入力として処理ユニット2aの集計同期要求状態を受信し、別の入力として内部同期肯定応答信号の現在状態を受信する。XORゲート1410は、この集計同期要求状態と同期肯定応答状態とが不一致である場合、ハイ信号(同期要求を示す)を出力する。そのような不一致は、タイル同期要求が処理ユニット2aの全てのタイル4によってアサートされたことを示す。ハイ信号がXORゲート1410から出力される場合、これは、ORゲート1420に提供され、これに応答して、ORゲート1420もハイ信号を発行し、これは、ANDゲート1430に提供される。ANDゲート1430は、1つの入力としてORゲート1420の出力を受信し、別の入力として外部同期肯定応答信号の反転状態を受信する。したがって、ANDゲート1430は、外部同期肯定応答信号が現在ローである(外部同期肯定応答が現在アサートされていないことを示す)場合、ハイ信号のみを出力する。ANDゲート1430の出力は、外部同期要求信号をGSP58に提供する。
【0130】
以下で
図17に関連してより詳細に説明するように、GSP58は、外部同期要求及び肯定応答をシステム550内の追加のGSP58と交換するように構成される。このプロセスに続いて、GSP58は、外部同期肯定応答信号を提供し、これは、インバータ1460及びORゲート1440に提供される。インバータ1460は、外部同期肯定応答信号(この時点ではハイに設定されている)を反転させてロー信号を生成し、これは、ANDゲート1430に提供される。それに応答して、ANDゲート1430は、ロー信号を出力し、外部同期要求をデアサートさせる。ORゲート1440は、ハイ出力をマルチプレクサ1450に提供する。この信号は、内部同期要求状態がマルチプレクサ1450から出力されるようにマルチプレクサ1450を制御するために使用される。したがって、外部同期肯定応答信号に応答して、マルチプレクサ1450は、内部同期肯定応答状態を内部同期要求状態と同じに設定するように構成され、それにより内部同期肯定応答をタイル4に送らせる。
【0131】
図15を参照すると、
図15は、タイル4の異なる群が3つの異なる同期ゾーンにどのように加入し得るかを示す。
図15は、これらの3つの同期ゾーンのレジスタ53の各々を示す。示されるように、タイル4a及びタイル4bのレジスタ53は、第1の同期ゾーン(「Z1」と記される)及び第3の同期ゾーン(「Z3」と記される)に属するが、第2の同期ゾーン(「Z2」と記される)に属さない。同様に示されるように、タイル4c及び4dのレジスタ53は、第2の同期ゾーン(「Z2」と記される)及び第3の同期ゾーン(「Z3」と記される)に属するが、第1の同期ゾーン(「Z1」と記される)に属さない。
図15に示される同期集計回路1500は、上述した集計回路910及び920を含み得る。
【0132】
実際には、処理ユニット2の3つ以上のタイル4が各同期ゾーンに参加する可能性が高いが、
図15では、Z1は、2つのタイル4a、4bの群1510aを含むものとして示され、Z2は、2つのタイル4c、4dの群1510bを含むものとして示されている。
【0133】
タイル4c及び4dは、Z1に属さないため、これらのタイル4c、4dは、Z1と関連する同期要求ワイヤ上でタイル同期要求を継続的にアサートする。これらの同期要求は、
図15においてSRZ1として示されている。上述したように、実施形態では、タイル同期要求のアサートは、関連する同期要求ワイヤの状態を関連する同期肯定応答ワイヤの状態に設定することによって表される。
【0134】
タイル4a及び4bは、Z1に属するため、これらのタイル4a、4bは、コンパイルされたコードセットにおいてZ1と関連するバリア同期に達した場合にのみ、Z1の同期要求ワイヤ上でタイル同期要求をアサートする。この時点において、各タイル4a、4bの実行ユニット52は、演算子としてZ1の指示を取って同期命令を実行し、それによりZ1と関連するタイル4の同期要求ワイヤ上でタイル同期要求をアサートさせる。
【0135】
Z1に属するタイル4a、4bがバリア同期に達すると、処理ユニット2aにおける全てのタイル4(Z1に属さないものも含む)は、Z1のタイル同期要求をアサートする。同期集計回路1500は、タイル同期要求を集計して、Z1の内部同期要求(AZ1として示されている)を同期コントローラ55に提供する。
【0136】
図16を参照すると、
図16は、内部同期肯定応答がタイル4にどのように返信されるかを示す。
図16に示される同期分配配線は、内部同期肯定応答をタイル4に提供するための、
図10に示される配線を含み得る。AZ1の受信に応答して、同期コントローラ55は、Z1と関連する内部同期肯定応答信号(SAZ1に示されている)をアサートする。SAZ1は、同期分配配線1600によってタイル4a~dの各々に提供される。この内部同期肯定応答信号の受信に応答して、タイル4a、4bの実行ユニット52は、バリア同期を通過し、交換フェーズに進む。交換フェーズが内部交換フェーズである場合、タイル4a、4bの実行ユニット52の1つ又は複数は、命令を実行してタイル4a及び4b間でデータを交換する。交換フェーズが外部交換フェーズである場合、タイル4a、4bの実行ユニット52の1つ又は複数は、命令を実行して、デバイス500a外部のデバイスとデータを交換する。
【0137】
SRZ1が、Z2に属するタイル4c、4dで受信された場合、これらのタイル4c、4dの実行ユニット52は、SRZ1に応答して何らの行動も取らず、Z1の計算及び交換サイクルに対して非同期で動作し続ける。
【0138】
再び
図15を参照して、Z2を有する状況を考える。タイル4a及び4bは、Z2に属さないため、これらのタイル4a、4bは、Z2と関連する同期要求ワイヤ上でタイル同期要求を継続的にアサートする。この同期要求は、
図15においてSRZ2として示されている。
【0139】
タイル4c及び4dは、Z2に属するため、これらのタイル4c、4dは、コンパイルされたコードセットにおいてZ2と関連するバリア同期に達した場合にのみ、Z2の同期要求ワイヤ上でタイル同期要求をアサートする。この時点において、タイル4c、4dの実行ユニット52は、それぞれ演算子としてZ2の指示を取って同期命令を実行する。そのような各同期命令は、各タイル4における論理にZ2の同期要求ワイヤ上で内部同期要求をアサートさせる。
【0140】
Z2に属するタイル4c、4dがバリア同期に達すると、処理ユニット2aにおける全てのタイル4(Z2に属さないものも含む)は、Z2のタイル同期要求をアサートする。同期集計回路1500は、Z2の集計同期要求(AZ2として示されている)を同期コントローラ55に提供する。
【0141】
再び、Z2同期への同期肯定応答がタイル4にどのように返信されるかを示す
図16を参照する。AZ2の受信に応答して、同期コントローラ55は、Z2と関連する内部同期肯定応答信号(SAZ2として示されている)をアサートする。SAZ2は、同期分配配線1600によって各タイル4a~dに提供される。この同期肯定応答信号の受信に応答して、タイル4c、4dの実行ユニット52は、バリア同期を通過し、交換フェーズに進む。交換フェーズが内部交換フェーズである場合、タイル4c、4dの実行ユニット52の1つ又は複数は、命令を実行してタイル4c及び4d間でデータを交換する。交換フェーズが外部交換フェーズである場合、タイル4c、4dの実行ユニット52の1つ又は複数は、命令を実行して、デバイス500a外部のデバイスとデータを交換する。
【0142】
再び
図15を参照して、Z3を有する状況を考える。示されるように、処理ユニット2aのタイル4a~dの各々では、各レジスタ53は、タイル4がZ3に属することを示す。その結果、タイル4a~dの各々は、Z3と関連するバリア同期に達した場合、タイル同期要求を発行する。このバリアに達すると、各タイル4の実行ユニット52は、演算子としてZ3の指示を取って同期命令を実行し、それによりタイル同期要求を各タイル4の同期要求ワイヤ上で発行させる。同期集計回路1500は、同期要求ワイヤの状態を集計し、内部同期要求(AZ3)を同期コントローラ55に提供する。
図16に示されるように、AZ3の受信に応答して、同期コントローラ55は、内部同期肯定応答を処理ユニット2aにおける各タイル4a~dに返信させる。同期分配配線1600は、内部同期肯定応答信号をZ3と関連する同期肯定応答ワイヤ上でアサートさせる。これらのタイル4a~dは、全てZ3に属するため、内部同期肯定応答に応答して、各タイル4a~dの実行ユニット52は、バリア同期を通過し、交換フェーズに入る(内部交換フェーズ又は外部交換フェーズであり得る)。
【0143】
上述したように、同期コントローラ55は、内部同期要求が受信された同期ゾーンが内部同期ゾーンとして構成される場合、外部同期要求をGSP58に提供せずに同期要求に対して肯定応答する。しかしながら、同期ゾーンが外部同期ゾーンとして構成される場合、同期コントローラ55は、外部同期要求をGSP58に転送し、内部同期肯定応答をタイル4に転送する前に、GSP58から外部同期肯定応答を受信するのを待つ。GSP58自体は、外部同期要求が異なる外部同期ゾーンでどのように伝播されるべきかを示す異なる構成設定を含む。
【0144】
同期マスタノード、同期伝播ノード及びスレーブノードを含む同期ネットワークの概念を示すために、同期ゾーンの一例の同期ネットワーク700を示す
図19を参照する。同期ネットワーク700は、同期マスタ710と、複数の同期伝播ノード720a、720b、720cとを含む。一例の実施形態では、同期マスタ710及び同期伝播ノード720a、720b、720cの各々は、GSP58である。同期ネットワーク700は、同期要求を発するスレーブノード730a、730b、730c、730dの複数のセットを更に含む。スレーブノード730a、730b、730c、730dは、一緒に、同期ネットワーク700に定義された同期群を形成する。本明細書に記載の実施形態では、タイル4は、バリア同期のスレーブノードとして機能し、それらのスレーブノードを発端とする同期要求は、上述したタイル同期要求である。スレーブノードは、異なるセットに分割される。例えば、スレーブノード730aの第1のセット、スレーブノード730bの第2のセット、スレーブノード730cの第3のセット及びスレーブノード730dの第4のセットがある。これらの実施形態では、スレーブノード730a、730b、730c、730dの各セットは、異なる処理ユニット2aのタイル4である。各スレーブノードは、同期ネットワーク700の上流で同期要求を発行する。スレーブノード群からの同期要求は、集計され、同期ネットワークのより高いノードに提供される。
【0145】
図19に示されるように、同期マスタ710及び同期伝播ノード720a、720b、720cの各々は、受信する各バリア同期の集計同期要求の送信元であるスレーブノードの関連する下流セットを有する。例えば、同期伝播ノード720aは、スレーブノード730aの第1のセットと関連する。同期マスタ710及び同期伝播ノード720a、720b、720cがGSP58である実施形態では、スレーブノードの各セットは、関連するGSP58における同じチップ500上のタイル4である。
【0146】
同期伝播ノード720b、720cは、関連するスレーブノード730b、730cから発せられた集計同期要求を受信するが、他の同期伝播ノードから同期要求を受信しない。関連するスレーブノード730b、730cから発せられた同期要求の受信に応答して、各同期伝播ノード720b、720cは、同期ネットワーク700の上流同期要求を同期伝播ノード720aに伝播させる。
【0147】
同期伝播ノード720aは、同期要求を各下流ノードから受信するまで待つ。これらの下流ノードは、同期伝播ノード720b、720c及び同期伝播ノード720aと関連するスレーブノード730aのセットを含む。同期伝播ノード720aは、各下流ノードから全ての同期要求を受信した場合、同期要求を同期マスタ710に発行する。
【0148】
同期マスタ710は、同期要求を各下流ノードから受信するまで待つ。これらの下流ノードは、同期伝播ノード720aと、同期マスタ710と関連するスレーブノード730dのセットとを含む。同期マスタ710は、各下流ノードから全ての同期要求を受信した場合、同期肯定応答を同期伝播ノード720a及びスレーブノード730dに発行する。
【0149】
同期伝播ノード720aは、同期マスタ710から同期肯定応答を受信すると、同期肯定応答を各下流同期伝播ノード720b、720c及び関連するスレーブノード730aに発行する。同様に、同期伝播ノード720b、720cは、これらの同期肯定応答の受信に応答して、同期肯定応答を関連するスレーブノード730b、730cにそれぞれ発行する。同期ネットワーク700の全てのスレーブノード730a~dは、同期肯定応答の受信に応答して、バリア同期を通過し、交換フェーズ中にデータを交換する。
【0150】
図19における例は、同期マスタ710が同期要求を1つのみの下流同期伝播ノード720aから受信する特定の構成の同期ネットワーク700を示す。しかしながら、他の例では、同期マスタ710は、2つ以上の下流同期伝播ノードから同期要求を受信し得る。同様に、一例の同期伝播ノード720aは、同期要求を2つの下流同期伝播ノード720b、720cから受信するが、代替的に同期要求を異なる数の下流同期伝播ノードから受信し得る。
【0151】
図17を参照すると、
図17は、複数のデバイス500a~cを含むシステム550を示す。
図17は、これらのデバイス500a~cのGSP58が外部バリア同期において外部同期要求及び外部同期肯定応答をどのように交換するかを示す。
【0152】
各処理ユニット2a~cは、関連するGSP58に外部同期要求を発行する。そのような外部同期要求は、処理ユニット2の各タイル4がタイル同期要求を発行したことを示す集計同期要求状態(即ち内部同期要求)を処理ユニット2の同期コントローラ55が受信した場合、処理ユニット2の同期コントローラ55によって発行される。同期コントローラ55によってGSP58に送られているものとして
図17に示されている内部同期要求の各々は、同じ同期ゾーンと関連する。
【0153】
各GSP58は、異なる同期ゾーンからの外部同期要求の受信に応答してどのように応答するかを示す、それらのゾーンの構成設定を記憶する。これらの構成設定は、GSP58のいずれのインタフェースが特定の同期ゾーンで有効化されるか、及び有効化されるインタフェースの方向性(即ちそれらのインタフェースで同期要求が送信されるか又は受信されるか)を示す。
図17の例では、デバイス500bのGSP58は、処理ユニット2bの同期コントローラ55からの外部同期要求の受信に応答して、デバイス500aのGSP58の上流に外部同期要求を伝播させる。デバイス500aのGSP58は、処理ユニット2aの同期コントローラ55からの外部同期要求及びデバイス500bのGSP58からの外部同期要求の両方の受信に応答して、外部同期要求を上流のデバイス500cのGSP58に伝播させるように構成される。したがって、デバイス500a及び500bのGSP58は、両方とも同期ネットワークにおける中間ノード(即ち伝播ノード)として機能する。デバイス500cのGSP58は、デバイス500aのGSP58から外部同期要求を受信し、デバイス500cの同期コントローラ55から外部同期要求を受信するように構成される。これらの外部同期要求の受信に応答して、デバイス500cのGSP58は、外部同期肯定応答をデバイス500cの同期コントローラ55に発行し、外部同期肯定応答をデバイス500aのGSP58に発行する。したがって、デバイス500cのGSP58は、同期ネットワークのマスタノードとして機能する。外部同期肯定応答の受信に応答して、デバイス500aのGSP58は、外部同期肯定応答をデバイス500aの同期コントローラ55及びデバイス500bのGSP58に発行する。デバイス500aのGSP58からの外部同期肯定応答の受信に応答して、デバイス500bのGSP58は、外部同期肯定応答をデバイス500bの同期コントローラ55に発行する。デバイス500a~cの各同期コントローラ55は、各同期肯定応答の受信に応答して、
図14Aに関して上述したように、各処理ユニット2~cの全てのタイル4に同期肯定応答を発行する。その同期ゾーン(それらの同期ゾーンレジスタ53に示される)に属するタイル4は、そのような外部同期肯定応答の受信に応答して外部交換フェーズに進む。
【0154】
図17に示される外部同期要求及び外部同期肯定応答が交換される同期ゾーンは、
図15及び
図16を参照して上述した同期ジーンZ3であり得る。
【0155】
図18を参照すると、
図18は、同期ゾーンZ1及びZ2の外部交換フェーズ中、データ交換を異なる処理ユニット2間でどのように実行し得るかを示す。この例では、
図15及び
図16を参照して上述した同期ゾーンZ1は、タイル4a及び4bに加えて、処理ユニット2bに属するタイル4e及び4fを含む。タイル4e及び4fのレジスタ53は、これらのタイルが同期ゾーンZ1に属するという指示を含む。タイル4a及び4bは、Z1のバリア同期に達すると、
図15に関して上述したように、外部同期要求をデバイス500aの同期コントローラ55に向けてそれぞれ発行する。同じように、タイル4e及び4fは、Z1のバリア同期に達すると、タイル同期要求をデバイス500bの同期コントローラ55に向けてそれぞれ発行する。それに応答して、これらの同期コントローラ55は、それぞれ外部同期要求をそれらのデバイス500a、500bのGSP58に転送する。
図17を参照して上述したように、デバイス500a、500bのGSP58は、外部同期要求及び外部同期肯定応答を交換し、次いでそれらが属するデバイス500a、500bのタイル4a、4b、4e、4fに内部同期肯定応答を送らせる(デバイス500a、500bの同期コントローラ55を介して)。次いで、データ交換は、タイル4a、4bの1つ又は複数とタイル4e、4fの1つ又は複数との間でデバイス500a、500b間のインタフェース580を介して行われる。
図18では、データ交換の一例は、タイル4bがデータ590aをタイル4fに送る状態で示されている。
【0156】
同様に
図18のこの例に示されるように、
図15及び
図16を参照して上述した同期ゾーンZ2に属するのは、タイル4である。示されるように、同期ゾーンZ2は、
図15に関して上述したタイル4c及び4dに加えて、処理ユニット2cに属するタイル4h及び4gを含む。タイル4h及び4gのレジスタ53は、これらのタイルが同期ゾーンZ2に属するという指示を含む。タイル4c及び4dは、Z2のバリア同期に達すると、
図15に関連して上述したように、タイル同期要求をデバイス500aの同期コントローラ55に向けてそれぞれ発行する。同じように、タイル4h及び4gは、Z2のバリア同期に達すると、タイル同期要求をデバイス500cの同期コントローラ55に向けてそれぞれ発行する。それに応答して、これらの同期コントローラ55は、それらのデバイス500a、500cのGSP58に外部同期要求をそれぞれ転送する。
図17を参照して上述したように、デバイス500a、500cのGSP58は、外部同期要求及び外部同期肯定応答を交換し、次いでそれらが属するデバイス500a、500cのタイル4c、4d、4h、4gに内部同期肯定応答を送らせる(それらのデバイス500a、500bの同期コントローラ55を介して)。次いで、データ交換は、デバイス500a及び500c間のインタフェース580を介してタイル4c、4dの1つ又は複数とタイル4h、4gの1つ又は複数との間で行われる。
図18の例では、タイル4dは、データ590bをタイル4gに送るものとして示されている。
【0157】
図20を参照すると、
図20は、構成可能な同期群(即ち上述した同期ゾーン)に基づいてプロセッサ4間の同期を調整する方法2000を示す。方法は、単一のデバイス500で実行される。
【0158】
S2010では、各プロセッサ4について、各プロセッサ4がいずれの同期ゾーンに属するかについての指示がプロセッサのレジスタ53に記憶される。各プロセッサ4は、レジスタ53に、各同期ゾーンについて、そのプロセッサ4が各同期ゾーンに属するか否かの指示を記憶する。
【0159】
S2020では、各プロセッサ4は、メモリ51に保持された命令を実行する。S2020は、方法2000の他のステップが実行されるのと同時に実行され得る。
【0160】
S2030では、デバイス500の同期コントローラ55は、プロセッサ4から同期要求を受信し、それに応答して同期肯定応答を返信する。同期要求は、個々のタイル同期要求に起因する集計(又は内部)同期要求の形態において同期コントローラ55で受信される。これらのタイル同期要求は、S2040及びS2050で発行される要求を含む。したがって、S2040及びS2050が実行されるとき、S2030は、完了していない。
【0161】
S2040では、複数のプロセッサ4のうち、第1の同期ゾーンに属さない第1のプロセッサは、第1の同期ゾーンに対する同期要求を発行する。プロセッサ4のうちの第1のプロセッサは、プロセッサ4のうちの第1のプロセッサのレジスタ53における、プロセッサ4のうちの第1のプロセッサが第1の同期ゾーンに属さないという指示に応答して要求をアサートする。S2040が実行されるプロセッサ4のうちの第1のプロセッサは、例えば、
図15に示されるタイル4cであり得、第1の同期ゾーンは、Z1である。
【0162】
S2040後、同期コントローラ55は、全てのプロセッサがZ1に対する同期要求をアサートすると、肯定応答をデバイス500内の全てのプロセッサ4に返信する。
【0163】
S2050では、第2の同期ゾーンに属する、プロセッサ4のうちの第1のプロセッサは、第2の同期ゾーンへの同期要求を発行する。プロセッサ4のうちの第1のプロセッサは、実行ユニット52がメモリ51内のコードにおける第2の同期ゾーンの同期点(例えば、バリア)に達することに応答して要求をアサートする。この同期点に達した場合、実行ユニット52は、同期命令を実行して、同期要求をアサートさせる。S2040が実行されるプロセッサ4のうちの第1のプロセッサは、例えば、
図15に示されるタイル4cであり得、第2の同期ゾーンは、Z2である。
【0164】
S2050では、同期コントローラ55は、全てのプロセッサが第2の同期ゾーンに対する同期要求をアサートすると、肯定応答をデバイス500における全てのプロセッサ4に返信する。
【0165】
図21を参照すると、
図21は、同期要求及び肯定応答をシグナリングするための新しい方式を使用して同期を調整する方法2100を示す。方法2100は、単一のデバイス500によって実行される。
【0166】
S2110では、各プロセッサ4は、各プロセッサ4の同期肯定応答ワイヤの状態を表す信号を受信する。信号がS2110で受信されるそのような各同期肯定応答ワイヤは、同じ同期ゾーンと関連する。各プロセッサで受信されるそのような各信号は、同じ状態(即ちハイ又はローのいずれか)を表す。
【0167】
S2120では、各プロセッサ4は、受信信号に応じて各プロセッサの同期要求ワイヤの状態を各プロセッサ4の同期肯定応答ワイヤの状態の逆に設定することにより、同期要求をアサートする。
【0168】
S2130では、集計回路920、910は、各同期要求ワイヤが同期肯定応答ワイヤの状態の逆に設定されたことを検出したことに応答して、バリア同期のうちの第1のバリア同期に対する集計同期要求(即ち内部同期要求)を同期コントローラ55に出力する。
【0169】
S2140では、集計同期要求に応答して、同期コントローラ55は、同期肯定応答を各プロセッサ4に返信する。これは、各プロセッサ4で、各プロセッサ4の同期肯定応答ワイヤの状態を各プロセッサ4の同期要求ワイヤの状態と同じに設定することによって達成される。
【0170】
上記の実施形態は、単なる例として説明されたことが理解されるであろう。特に、同期点がBSPバリア同期である実施形態について説明したが、他の実施形態では、同期点は、異なるタイプの同期点であり得ることが理解されるであろう。
【手続補正書】
【提出日】2024-02-20
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
データ処理デバイスであって、
複数のプロセッサと、
前記プロセッサから、同期に参加する要求を受信し、前記要求を受信することに応答して、肯定応答を前記プロセッサに返信するように構成された回路を含む同期コントローラと、
を含み、前記プロセッサの各々は、
それぞれのプロセッサのメモリに保持されたコンピュータ可読命令のセットを実行するように構成された実行ユニットと、
構成可能な同期群のセットの各々について、それぞれのプロセッサがそれぞれの構成可能な同期群に属するか否かに関する指示を記憶するレジスタと、
を含み、前記プロセッサのうちの第1のプロセッサについて、
前記構成可能な同期群のうちの第1の同期群についての前記指示は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属さないことを示し、
前記構成可能な同期群のうちの第2の同期群についての前記指示は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第2の同期群に属することを示し、
前記プロセッサのうちの前記第1のプロセッサは、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属さないことを示す、前記構成可能な同期群のうちの前記第1の同期群についての前記指示に応答して、前記構成可能な同期群のうちの前記第1の同期群の同期に参加する要求を前記同期コントローラに対してアサートするように構成された回路を含み、
前記プロセッサのうちの前記第1のプロセッサの前記回路は、前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットが、前記プロセッサのうちの前記第1のプロセッサの前記コンピュータ可読命令のセットにおいて示される、前記構成可能な同期群のうちの前記第2の同期群の同期点に達することに応答して、前記構成可能な同期群のうちの前記第2の同期群の同期に参加する要求を前記同期コントローラに対してアサートするように構成される、データ処理デバイス。
【請求項2】
前記同期コントローラの前記回路は、前記データ処理デバイスの前記プロセッサの全てが、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する要求を発行することに応答して、対応する肯定応答を前記プロセッサの各々に発行するように構成される、請求項1に記載のデータ処理デバイス。
【請求項3】
前記同期コントローラの前記回路は、
前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する前記要求に応答して、前記プロセッサが、更なるデバイスに属する更なるプロセッサと同期するための更なる要求を外部同期コントローラに発行することと、
続けて、前記外部同期コントローラからの前記更なる要求の更なる肯定応答の受信に応答して、前記プロセッサの各々に、前記プロセッサの各々への前記対応する肯定応答を返信することと、
を行うように構成される、請求項2に記載のデータ処理デバイス。
【請求項4】
前記外部同期コントローラを含み、前記外部同期コントローラは、
前記構成可能な同期群のうちの前記第1の同期群の構成設定のセットを記憶するストレージと、
前記同期コントローラから受信された前記更なる要求に応答して、前記構成可能な同期群のうちの前記第1の同期群の前記構成設定に応じて、1つ又は複数の追加の要求及び1つ又は複数の追加の肯定応答を更なるデバイスと交換するように構成された回路と、
を含む、請求項3に記載のデータ処理デバイス。
【請求項5】
前記構成可能な同期群のうちの前記第1の同期群に属する前記プロセッサの各々について、それぞれのプロセッサの前記実行ユニットは、前記構成可能な同期群のうちの前記第1の同期群に属するプロセッサ間で実施される第1のバリア同期に達すると、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する要求を発行するように構成され、
前記プロセッサのうちの前記第1のプロセッサについて、それぞれの実行ユニットは、前記構成可能な同期群のうちの前記第1の同期群に属する前記プロセッサの各々の前記実行ユニットが一時停止され、前記第1の同期バリアで待機している間、前記第1のバリア同期で待機せずに計算又はデータ交換を進めるように構成される、
請求項1に記載のデータ処理デバイス。
【請求項6】
前記構成可能な同期群のうちの前記第2の同期群の同期は、第2のバリア同期であり、前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求に対する肯定応答の受信に応答して、前記第2のバリア同期を越えて進むように構成される、
請求項1に記載のデータ処理デバイス。
【請求項7】
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記プロセッサのうちの前記第1のプロセッサがデータの送信又は受信の少なくとも一方を行う交換フェーズに入ることにより、前記第2のバリア同期を越えて進むように構成される、請求項6に記載のデータ処理デバイス。
【請求項8】
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する前記要求のアサート後、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属することを指定するように、前記構成可能な同期群のうちの前記第1の同期群についての前記指示を更新する更新命令を実行するように構成される、
請求項1に記載のデータ処理デバイス。
【請求項9】
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求のアサート後、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第2の同期群に属さないことを指定するように、前記構成可能な同期群のうちの前記第2の同期群についての前記指示を更新する更新命令を実行するように構成される、
請求項1に記載のデータ処理デバイス。
【請求項10】
集計回路を含み、前記集計回路は、
前記プロセッサの全てが、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加するそれぞれの要求を提供することに応答して、第1の集計同期要求を前記同期コントローラに提供することと、
前記プロセッサの全てが、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求を提供することに応答して、第2の集計同期要求を前記同期コントローラに提供することと、
を行うように構成され、前記同期コントローラの前記回路は、前記第1の集計同期要求及び前記第2の集計同期要求の各々に応答して、肯定応答を前記プロセッサに返信するように構成される、
請求項1に記載のデータ処理デバイス。
【請求項11】
前記プロセッサのうちの前記第1のプロセッサに接続された第1の同期要求ワイヤと、
前記プロセッサのうちの前記第1のプロセッサに接続された第2の同期要求ワイヤと
を含み、
前記プロセッサのうちの前記第1のプロセッサの前記回路は、前記第1の同期要求ワイヤ上で信号をアサートすることにより、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する前記要求をアサートするように構成され、
前記プロセッサのうちの前記第2のプロセッサの前記回路は、前記第2の同期要求ワイヤ上で信号をアサートすることにより、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求をアサートするように構成される、
請求項1に記載のデータ処理デバイス。
【請求項12】
前記プロセッサのうちの前記第1のプロセッサの前記回路は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属さないという前記指示に応じて、第1の入力を選択して、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する前記要求を表す第1の信号を出力するように構成された第1のマルチプレクサを含む、
請求項1に記載のデータ処理デバイス。
【請求項13】
前記プロセッサのうちの前記第1のプロセッサの前記回路は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第2の同期群に属するという前記指示に応じて、第2の入力を選択して、前記実行ユニットによって制御される第2の信号を出力するように構成された第2のマルチプレクサを含む、
請求項1に記載のデータ処理デバイス。
【請求項14】
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記同期点に達すると、同期命令を実行して、前記構成可能な同期群のうちの前記第2のプロセッサの前記同期に参加する前記要求を表す状態に前記第2の信号を設定させるように構成される、請求項13に記載のデータ処理デバイス。
【請求項15】
前記構成可能な同期群のうちの前記第2の同期群は、1つ又は複数の更なるデータ処理デバイスに属する更なるプロセッサを含み、
前記プロセッサのうちの前記第1のプロセッサは、更なるプロセッサの1つ又は複数とデータを交換することにより、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加するように構成される、
請求項1に記載のデータ処理デバイス。
【請求項16】
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットは、前記構成可能な同期群のうちの前記第2の同期群の前記同期点に達すると、同期命令を実行して、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求の前記アサートを生じさせるように構成される、
請求項1に記載のデータ処理デバイス。
【請求項17】
前記プロセッサのうちの前記第1のプロセッサの前記回路は、
前記プロセッサのうちの前記第1のプロセッサの前記実行ユニットから、前記実行ユニットが前記同期点に達したことを示す制御信号を受信することと、
前記制御信号を、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求に変換することと
を行うように構成される、
請求項1に記載のデータ処理デバイス。
【請求項18】
前記プロセッサのうちの前記第1のプロセッサは、前記構成可能な同期群のうちの前記第1の同期群の第1の肯定応答信号を受信するように構成された第1のインタフェースを含み、
前記プロセッサのうちの前記第1のプロセッサの前記回路は、前記第1の肯定応答信号を反転させて、前記構成可能な同期群のうちの前記第1の同期群の前記同期に参加する前記要求を生成するように構成され、
前記プロセッサのうちの前記第1のプロセッサは、前記構成可能な同期群のうちの前記第2の同期群の第2の肯定応答信号を受信するように構成された第2のインタフェースを含み、
前記プロセッサのうちの前記第2のプロセッサの前記回路は、前記第2の肯定応答信号を反転させて、前記構成可能な同期群のうちの前記第2の同期群の前記同期に参加する前記要求を生成するように構成される、
請求項1に記載のデータ処理デバイス。
【請求項19】
集積回路である、請求項1~18のいずれか一項に記載のデータ処理デバイス。
【請求項20】
複数のプロセッサを含むデータ処理デバイスで実施される方法であって、前記プロセッサの各々において、
構成可能な同期群のセットの各々について、それぞれのプロセッサがそれぞれの構成可能な同期群に属するか否かに関する指示を記憶することと、
それぞれのプロセッサのメモリに保持されたコンピュータ可読命令のセットを実行することと、
を含み、前記プロセッサのうちの第1のプロセッサについて、
前記構成可能な同期群のうちの第1の同期群についての前記指示は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属さないことを示し、及び
前記構成可能な同期群のうちの第2の同期群についての前記指示は、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第2の同期群に属することを示し、
前記方法は、
同期コントローラにおいて、同期に参加する要求を前記プロセッサから受信し、前記要求を受信することに応答して、肯定応答を前記プロセッサに返信することと、
前記プロセッサのうちの第1のプロセッサにおいて、前記プロセッサのうちの前記第1のプロセッサが、前記構成可能な同期群のうちの前記第1の同期群に属さないことを示す、前記構成可能な同期群のうちの前記第1の同期群についての前記指示に応答して、前記構成可能な同期群のうちの前記第1の同期群の同期に参加する要求を前記同期コントローラに対してアサートすることと、
前記プロセッサのうちの前記第1のプロセッサの実行ユニットが、前記プロセッサのうちの前記第1のプロセッサの前記コンピュータ可読命令のセットにおいて示される、前記構成可能な同期群のうちの前記第2の同期群の同期点に達することに応答して、前記構成可能な同期群のうちの前記第2の同期群の同期に参加する要求を前記同期コントローラに対してアサートすることと、
を含む、方法。
【国際調査報告】