(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-10-28
(54)【発明の名称】同期ネットワーク
(51)【国際特許分類】
G06F 15/173 20060101AFI20221021BHJP
G06F 9/52 20060101ALI20221021BHJP
【FI】
G06F15/173 660D
G06F9/52 150A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022512773
(86)(22)【出願日】2020-11-25
(85)【翻訳文提出日】2022-02-24
(86)【国際出願番号】 EP2020083278
(87)【国際公開番号】W WO2021129992
(87)【国際公開日】2021-07-01
(32)【優先日】2019-12-23
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】518371892
【氏名又は名称】グラフコアー リミテッド
【氏名又は名称原語表記】Graphcore Limited
【住所又は居所原語表記】11-19 Wine Street,Bristol,BS1 2PH,United Kingdom
(74)【代理人】
【識別番号】100169904
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】ラーズ ポール ヒューズ
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045BB18
5B045CC06
5B045JJ28
(57)【要約】
同期ネットワーク内における破断したケーブル等の故障に対して同期ネットワークを保護する、同期ネットワークにおける冗長性を提供する。ゲートウェイは、同期ネットワーク内で異なる経路に沿って送信される冗長同期要求を提供するように構成された同期伝播モジュールを含む。これらの同期要求は、同期ネットワーク内の異なるマスタに向かって送信される。故障がパスの1つにおける点で生じる場合、ゲートウェイは、他のパスに沿って返された同期肯定応答を依然として受信する。更に、異なるパスにわたって同期要求を伝播させる冗長同期ネットワークの使用は、配線の故障検出が検出されることを可能にする。
【特許請求の範囲】
【請求項1】
少なくとも1つのホストを、前記少なくとも1つのホストに対してワークアクセラレータとして作用する1つ又は複数のサブシステムと接続し、前記サブシステムの計算フェーズと交換フェーズとの間のバリアとして作用する、前記サブシステムによって到達される事前コンパイル済みデータ交換同期点において、前記1つ又は複数のサブシステムへの及びサブシステムからのデータの転送を可能にするゲートウェイであって、
1つ又は複数の同期伝播回路を含み、
前記同期伝播回路の少なくとも1つは、
後の事前コンパイル済みデータ交換同期点において前記同期ネットワークのサブシステム間で同期を実行するための1つ又は複数の同期要求を、同期ネットワーク内の1つ又は複数の下流パスから受信することと、
1つ又は複数の同期要求の受信に応答して、複数の同期要求を前記同期ネットワーク内で異なるパスに沿って上流に伝播させることと、
前記複数の同期要求の伝播に続いて、異なるパスの少なくとも1つから少なくとも1つの同期肯定応答を受信することと、
少なくとも1つの同期肯定応答の受信に応答して、1つ又は複数の同期要求が受信された1つ又は複数の下流パスの各々に沿って同期肯定応答を伝播させることと、
を実行するように構成される、
ゲートウェイ。
【請求項2】
前記同期伝播回路の少なくとも1つは、
少なくとも1つの同期肯定応答のうち、最初の同期肯定応答の受信に応答して、タイマを開始することと、
異なるパスの全てから同期肯定応答を受信することなく、前記タイマによって定義された所定の期限が切れたことに応答して、続けて、前記タイマが切れる前に同期肯定応答が受信されなかった前記同期ネットワーク内の異なるパスの各々に沿って同期要求を伝播させることなく、更なるデータ交換同期点のための1つ又は複数の同期要求を前記同期ネットワーク内で上流に伝播させることと、
を実行するように構成される、請求項1に記載のゲートウェイ。
【請求項3】
1つ又は複数の同期要求が受信された1つ又は複数の下流パスの各々に沿って同期肯定応答を伝播させるステップは、前記タイマによって定義された前記所定の期限が切れたことに応答して実行される、請求項2に記載のゲートウェイ。
【請求項4】
複数の同期要求を前記同期ネットワーク内で異なるパスに沿って上流に伝播させることは、複数の同期要求の少なくとも1つをゲートウェイに送信することを含む、請求項1~3の何れか一項に記載のゲートウェイ。
【請求項5】
1つ又は複数の同期伝播回路の少なくとも1つは、
1つ又は複数の同期要求を前記1つ又は複数のサブシステムから受信することと、
1つ又は複数の同期要求に応答して、単一の同期要求を前記同期ネットワーク内で上流に伝播させることと、
を実行するように構成される、請求項1~4の何れか一項に記載のゲートウェイ。
【請求項6】
前記単一の同期要求を前記同期ネットワーク内で上流に伝播させることは、前記同期伝播回路の少なくとも1つのうちの1つに前記単一の同期要求を伝播させることを含む、請求項5に記載のゲートウェイ。
【請求項7】
前記ゲートウェイは、少なくとも1つのストレージを含み、
前記ストレージは、少なくとも1つの同期伝播回路において1つ又は複数の同期要求を受信する前に、1つ又は複数のサブシステムから、前記同期ネットワークの少なくとも一部の構成設定の指示を受信するように構成され、
少なくとも1つの同期伝播回路は、前記構成設定の前記指示に応じて、複数の同期要求を上流に伝播させる異なるパスを選択するように構成される、請求項1~6の何れか一項に記載のゲートウェイ。
【請求項8】
前記構成設定の指示は、前記構成設定を含む、請求項7に記載のゲートウェイ。
【請求項9】
前記構成設定の指示は、少なくとも1つのストレージに保持された構成設定の組の識別子を含む、請求項7に記載のゲートウェイ。
【請求項10】
少なくとも1つのストレージは、1つ又は複数のレジスタを含む、請求項7~9の何れか一項に記載のゲートウェイ。
【請求項11】
1つ又は複数の同期伝播回路の1つは、受信された同期要求を更なる同期伝播モジュールに伝播させることなく、受信された同期要求に対して肯定応答するように構成される、請求項1~10の何れか一項に記載のゲートウェイ。
【請求項12】
前記ゲートウェイは、システムオンチップである、請求項1~11の何れか一項に記載のゲートウェイ。
【請求項13】
少なくとも1つの同期伝播回路は、1つ又は複数の同期要求の受信に応答して、複数の同期要求を前記同期ネットワーク内で異なるパスに沿って上流に伝播させるステップを実行するように構成された2つの同期伝播回路を含む、請求項1~12の何れか一項に記載のゲートウェイ。
【請求項14】
複数のゲートウェイを含むシステムであって、前記複数のゲートウェイは、請求項1~13の何れか一項に記載のゲートウェイを含む、システム。
【請求項15】
前記複数のゲートウェイは、前記同期ネットワークのための複数のマスタゲートウェイを含み、マスタゲートウェイの各々は、少なくとも1つの同期要求を受信し、少なくとも1つの同期要求の受信に応答して、少なくとも1つの同期肯定応答を返すように構成された同期伝播回路を含む、請求項14に記載のシステム。
【請求項16】
少なくとも1つのホストを、少なくとも1つのホストに対してワークアクセラレータとして作用する1つ又は複数のサブシステムと接続するためのゲートウェイで実行される方法であって、前記ゲートウェイは、前記サブシステムの計算フェーズと交換フェーズとの間のバリアとして作用する、前記サブシステムによって到達される事前コンパイル済みデータ交換同期点において、前記1つ又は複数のサブシステムへの及びそれからのデータの転送を可能にし、前記方法は、
後の事前コンパイルデータ交換同期点において前記同期ネットワークのサブシステム間で同期を実行するための1つ又は複数の同期要求を、同期ネットワーク内の1つ又は複数の下流パスから受信することと、
1つ又は複数の同期要求の受信に応答して、複数の同期要求を前記同期ネットワーク内で異なるパスに沿って上流に伝播させることと、
複数の同期要求の伝播に続いて、異なるパスの少なくとも1つから少なくとも1つの同期肯定応答を受信することと、
少なくとも1つの同期肯定応答の受信に応答して、1つ又は複数の同期要求が受信された1つ又は複数の下流パスの各々に沿って同期肯定応答を伝播させることと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ワークアクセラレータとして作用するコンピュータサブシステムに接続されるゲートウェイに関し、特にゲートウェイにおける同期要求及び肯定応答の伝播の制御に関する。
【背景技術】
【0002】
複雑な又は大量のアプリケーションのためのデータ処理に関して、ワークアクセラレータは、特定のデータの処理がホストシステムからオフロードされる(offloaded)サブシステムである。そのようなワークアクセラレータは、特定のタイプの処理を実行する専用ハードウェアを有する。
【0003】
一例として、そのような専用アクセラレータサブシステムが有用である計算の1つの分野は、機械知能に見出される。機械知能の当業者によく知られているように、機械知能アルゴリズムは、複数の相互接続されたノードのグラフによって表すことができる「知識モデル」に対して反復的更新を実行することに基づく。各ノードの実施は、データの処理を含み、グラフの相互接続は、ノード間で交換されるデータに対応する。典型的には、各ノードの処理の少なくとも幾らかは、グラフ内の他のノードの幾つか又は全てから独立して実行することができ、したがって、大きいグラフは、マルチスレッド処理への大きい機会を明らかにする。したがって、機械知能用途に特化したワークアクセラレータは、大きい度合いのマルチスレッド処理を含み得る。並列処理の一形態は、同じチップ(すなわち同じダイ)上に複数のタイルの配置を含むプロセッサによって達成することができ、各タイルは、それ自体の別個の処理ユニット及びメモリ(プログラムメモリ及びデータメモリを含む)を含む。したがって、プログラムコードの別個の部分は、複数のタイルのうちの異なるタイルで並列に実行することができる。タイルは、データをその間で交換できるようにするオンチップ相互接続を介して一緒に接続される。そのようなアクセラレータは、提供されたデータセットの並列処理を実行する、ホストシステムのサブシステムとして機能し得る。
【0004】
一般に、異なるタイルで実行されるプログラムの部分間に依存性が存在し得る。したがって、あるタイル上の1つのコードが、依存するデータが別のタイル上の別のコードによって提供されるよりも先に実行されないようにする技法が必要とされる。これを達成する幾つかのかの方式があり、その1つは、例として本明細書では「BSP」バルク同期並列化(bulk synchronous parallel)として説明される。BSPによれば、各タイルは、計算フェーズ及び交換フェーズを交互サイクルで実行する。計算フェーズ中、各タイルは、1つ又は複数の計算タスクをタイルでローカルに実行するが、その計算のいかなる結果もいかなる他のタイルにも通信しない。交換フェーズにおいて、各タイルは、先の計算フェーズからの計算の1つ又は複数の結果をグループ内の他の1つ又は複数のタイルと交換することが許されるが、次の計算フェーズには依然として進まない。更に、BSP原理によれば、バリア同期は、計算フェーズから交換フェーズに遷移する接合点、交換フェーズから計算フェーズに遷移する接合点又はこれらの両方に配置される。すなわち、(a)グループ内の任意のタイルが次の交換フェーズに進むことが許されるには、全てのタイルが先にそれぞれの計算フェーズを完了する必要があるか、若しくは(b)グループ内の任意のタイルが次の計算フェーズに進むことが許されるには、グループ内の全てのタイルが先にそれぞれの交換フェーズを完了する必要があるか、又は(c)それらの両方の何れかである。幾つかのシナリオでは、計算を実行中のタイルは、グループ内の他のタイルとの通信が関わらない限り、ネットワークカード又はストレージディスク等の他のシステムリソースと通信することが許されないことがある。
【0005】
交換フェーズ中、データ交換は、アクセラレータ内で内部的に(すなわちタイル間で)行われる必要があるのみならず、幾つかの状況では複数のアクセラレータ間でも行われる必要がある。これらのアクセラレータの一部は、異なるゲートウェイに結合されるか、又は同じゲートウェイに結合され得る。
【0006】
サブシステムを一緒に(直接又は間接的に)結合することによってサブシステムをスケーリングする場合、どのようにして、同期を、同期信号の伝送に使用されるケーブルの破断等のシステムにおける故障に対して耐性を有するようにできるかとの問題が生じ得る。
【発明の概要】
【課題を解決するための手段】
【0007】
本発明は、データを外部ストレージからアクセラレータに提供し、それらを相互接続して、ワークアクセラレータとして作用するサブシステムをスケーリングすることができるゲートウェイの概念を使用する。アクセラレータは、交換フェーズにおいてデータをゲートウェイから受信し、続く計算フェーズにおいてデータを計算する。幾つかの形態のゲートウェイでは、ゲートウェイ自体がデータのアクティブプロセッサであり、そのデータフローを自律的に管理する。ゲートウェイは、外部ストレージと1つ又は複数のアクセラレータとの間の仲介として作用する。
【0008】
ゲートウェイを使用して一緒にリンクし得る異なるサブシステムの数は、システムを通した1つ又は複数の同期信号の伝送を妨げ得る故障が生じた場合でも、データの同期をシステムにおいてどのように実行するかという課題を生じさせる。
【0009】
ゲートウェイは、同期ネットワークにおける冗長性をサポートする。ゲートウェイは、同期ネットワーク内で異なる経路に沿って送信される冗長同期要求を提供するように構成された同期伝播モジュールを含む。これらの同期要求は、同期ネットワーク内の異なるマスタに向かって送信される。故障がパスの1つにおける点で生じる場合、ゲートウェイは、他のパスに沿って返された同期肯定応答を依然として受信する。したがって、同期ネットワークのパスの1つに故障がある場合でも、同期を完了することが可能である。
【0010】
第1の態様によれば、少なくとも1つのホストを、少なくとも1つのホストに対してワークアクセラレータとして作用する1つ又は複数のサブシステムと接続するためのゲートウェイが提供され、本ゲートウェイは、サブシステムの計算フェーズと交換フェーズとの間のバリアとして作用する、サブシステムによって到達される事前コンパイル済みデータ交換同期点において、1つ又は複数のサブシステムへの及びそれからのデータの転送を可能にし、本ゲートウェイは、1つ又は複数の同期伝播回路を含み、同期伝播回路の少なくとも1つは、後の事前コンパイル済みデータ交換同期点において同期ネットワークのサブシステム間で同期を実行するための1つ又は複数の同期要求を同期ネットワーク内の1つ又は複数の下流パスから受信することと、1つ又は複数の同期要求の受信に応答して、複数の同期要求を同期ネットワーク内で異なるパスに沿って上流に伝播させることと、複数の同期要求の伝播に続いて、異なるパスの少なくとも1つから少なくとも1つの同期肯定応答を受信することと、少なくとも1つの同期肯定応答の受信に応答して、1つ又は複数の同期要求が受信された1つ又は複数の下流パスの各々に沿って同期肯定応答を伝播させることとを行うように構成される。
【0011】
幾つかの実施形態では、同期伝播回路の少なくとも1つは、少なくとも1つの同期肯定応答のうち、最初の同期肯定応答の受信に応答して、タイマを開始することと、異なるパスの全てから同期肯定応答を受信することなく、タイマによって定義された所定の期限が切れたことに応答して、続けて、タイマが切れる前に同期肯定応答が受信されなかった同期ネットワーク内の異なるパスの各々に沿って同期要求を伝播させることなく、更なるデータ交換同期点のための1つ又は複数の同期要求を同期ネットワーク内で上流に伝播させることと、を実行するように構成される。このようにしてタイマを使用することにより、同期ネットワーク内の故障したパスを検出し得る。システムは、もはや故障したパスに沿って同期要求を伝播させないことにより、これらの故障したパスに応答することが可能である。
【0012】
本発明をよりよく理解し、本発明をどのように実施し得るかを示すために、ここで、添付の図面を例として参照する。
【図面の簡単な説明】
【0013】
【
図1】複数のタイルを含むプロセッサチップの概略ブロック図である。
【
図2】バルク同期並列(BSP)計算モデルの概略図である。
【
図4】アクセラレータとゲートウェイとの間の同期要求/肯定応答の交換の概略図である。
【
図5】複数のプロセッサチップのシステムの別の概略図である。
【
図6】ホストとの同期が関わるプログラムフローを概略的に示す。
【
図7】アクセラレータ、ゲートウェイ及びホストを含むシステムを概略的に示す。
【
図8】ゲートウェイを通る異なるデータパスの概略図である。
【
図9】ゲートウェイを使用したアクセラレータ及びホストの集約を概略的に示す。
【
図10】ゲートウェイを通るデータフローの概略図である。
【
図11】アクセラレータ、ゲートウェイ及びホストを含むシステムの概略図である。
【
図12】複数のアクセラレータ及びゲートウェイを含む機械の概略図である。
【
図14】データをデプロイし、計算する一例の方法を示す。
【
図15】3つのゲートウェイ間の同期要求及び肯定応答の交換の概略図である。
【
図16】アクセラレータによってプルされるゲートウェイ転送メモリにデータをプリロードすることの概略図である。
【
図17】ゲートウェイがプルモデルに従って動作する、ゲートウェイを通してデータをアクセラレータにストリーミングする方法を示す。
【
図18】シャーシグループ内の複数のシャーシの概略図である。
【
図19】システム内の複数のシャーシグループの概略図である。
【
図20】シャーシグループ内のゲートウェイ間の冗長同期要求の伝送を示す。
【
図21】冗長性を実施する4シャーシグループシステム内の同期配線を示す。
【
図22】ゲートウェイ内の同期伝播回路例の概略図である。
【
図23】第4のゲートウェイのモジュールによる同期要求の伝播を示す。
【
図24】第1のゲートウェイ又は第2のゲートウェイのモジュールによる同期要求の伝播を示す。
【
図25】第3のゲートウェイのモジュールによる同期要求の伝播を示す。
【
図26】第3のゲートウェイのモジュールによる同期肯定応答の伝播を示す。
【
図27】第1のゲートウェイ又は第2のゲートウェイのモジュールによる同期肯定応答の伝播を示す。
【
図28】第4のゲートウェイのモジュールによる同期肯定応答の伝播を示す。
【
図29】冗長性を実施する16シャーシグループシステム内の同期配線を示す。
【発明を実施するための形態】
【0014】
以下の説明で本願の種々の実施形態を更に詳細に説明する。本願は、ホストシステムのワークアクセラレータとして作用するサブシステム、及び、複数のそのようなサブシステムの組合せに関する。サブシステムは、主に反復処理を受ける大量のデータを必要とするプロセスを実行中であるホストによって割り振られたデータセット(ワーク)に対して、所定の処理ステップを実行するアクセラレータとして作用する。各サブシステムは、いわゆる知的処理ユニット(IPU)又は任意のクラスのアクセラレータ(XPU)であり得る。本明細書に記載の技法は、その内容が参照により本明細書に援用される、本願と同じ出願人による先の米国特許出願公開第15/885925号明細書に記載されているIPUと併用することができるが、任意のアクセラレータに適用することも可能である。より詳細に説明するように、幾つかのアクセラレータを結合して、アクセラレータ機又は設備を形成し得る。幾つかのアクセラレータ設備は、シャーシ内で組み合わされ得る。複数のシャーシは、ラックに配置することができるグループに編成され得る。その結果としてのアクセラレータの組合せは、並列動作を実行する大量の処理力を有するシステムを生成することができる。これは、特に、人工知能用途でニューラルネットワーク処理を実施するために有用である。本明細書で展開される原理は、同様に、潜在的に単一のラックを超えてスケーリングするために使用することもできる。
【0015】
本願は、そのようなアクセラレータの有効性を改善するにあたり、幾つかの利点を有する新規のゲートウェイに関する。ゲートウェイは、アクセラレータによる処理のためのデータセットを提供する1つ又は複数のホストシステムからアクセラレータを分離することを可能にする。これには、幾つかの利点がある。第1に、1ホスト当たりのアクセラレータの数をユーザ構成可能にすることができ、ホストの物理的容量を超えて増大可能とする。第2に、アクセラレータI/Oをホストから切り離せるようにし、I/O容量をアクセラレータの数の関数としてスケーリングできるようにする。第3に、分離により、複数のホストが、アクセラレータリソース及び関連するホストのライフサイクル管理をサポートする明確に定義されたAPIを通して、需要に応じてホストに割り振られ、グループ化されるアクセラレータリソースの組を利用できるようになる。
【0016】
各アクセラレータは、単一のチッププロセッサであり得る。
図1は、複数のプロセッサタイル4のアレイ6と、タイル4間を接続するオンチップ相互接続34とを含む単一のチッププロセッサ2、すなわち単一のダイを示す。プロセッサタイル4は、集合的に、1つ又は複数のAIモデルの計算を実行し得る。チップ2は、単一のチップ集積回路パッケージ上に単独で実装され得るか、又は同じICパッケージにパッケージされた複数のダイの1つとして実装され得る。オンチップ相互接続は、タイル4がデータを交換できるようにするため、本明細書では「交換ファブリック」34と呼ばれることもある。各タイル4は、ローカル命令メモリからの命令(コード)を実行し、ローカルデータメモリ内のデータを取り扱うことが可能な処理ユニットである。タイル4は、バレルスレッドの処理ユニット10及びメモリ11の各インスタンスを含み得る。例えば、例示として、チップ2は、約数百枚のタイル4又は千を超えるタイル4で構成され得る。完全を期すために、本明細書で参照する「アレイ」は、必ずしもタイル4のいかなる具体的な数の寸法又は物理的レイアウトも暗示しないことにも留意されたい。
【0017】
各チップ2は、1つ又は複数の外部リンク8も含み、チップ2を1つ以上の他のもの(例えば、同じチップ2の1つ又は複数の他のインスタンス)上の外部プロセッサに接続できるようにする。これらの外部リンク8は、同じICパッケージ若しくはカード又は異なるカード上のチップ2の1つ又は複数の他のインスタンスと一緒に接続するためのチップ間リンクとして作用し得る。チップ2の複数のインスタンスをチップ間リンクによって一緒に接続して、(後述する
図12に示すように)カードにすることができる。チップは、詳細に後述するゲートウェイにチップを接続するコネクタ9も有する。本明細書に記載の目的のために、全てのアクセラレータがゲートウェイコネクタ9を有する必要があるわけではなく、少なくとも幾つかがゲートウェイコネクタ9を有する必要があることに留意されたい。一構成例では、チップ2は、チップ2によって処理される入力データの形態において、ホストによって割り振られたゲートウェイからワークを受け取る。ホストへの言及は、代わりに、ネットワーク接続ストレージ(NAS)等のオフチップストレージシステムへの言及も暗示し得ることに留意されたい。ゲートウェイは、ホスト又はNASからのデータを、単一のチッププロセッサ2として又は場合により複数の相互接続されたカードに配置された複数の単一のチッププロセッサ2として設計された1つ又は複数のアクセラレータに提供できるようにする。ゲートウェイは、以下で詳述するように、アクセラレータとホストとの間の中継及び離解を可能にする。
【0018】
相互接続34は、アレイ6内の異なるプロセッサタイル4がチップ2上で互いに通信できるようにするように構成される。本出願人による先の特許出願に記載のIPUでは、アクセラレータ2上のタイル4間の通信は、時間決定論的に行われる。しかしながら、他の形態のタイル間交換も可能である。アレイ6内の異なるタイル4上で実行中のプログラムの部分間に依存性があり得る。すなわち、あるタイルでのデータ処理は、別のタイルからの結果に依存し得、例えば、あるタイルでのデータ処理は、結果を提供し得、別のタイルは、その結果に依存する。したがって、あるタイル4上の1つのコードが、依存するデータが別のタイル4上の別のコードによって提供されるよりも先に実行されないようにする技法が必要とされる。
【0019】
AI及びデータサイエンスの並列プログラミングモデルは、通常、計算、バリア、交換との3フェーズ反復実行モデルに従う。アクセラレータとのデータ転送が、通常、アクセラレータ間及び各アクセラレータとホストとの間にデータ一貫性を提供するためにバリア依存であることが含意されている。典型的に使用されるデータ一貫性モデルは、バルク同期並列(BSP)、陳腐化同期並列(SSP)(Stale Synchronous Parallel)、及び、非同期(Asynchronous)である。
【0020】
SSPでは、複数のワーカスレッドのうちの高速ワーカスレッドを、低速ワーカスレッドよりも数クロックサイクル分先んじて実行することが許される。ワーカスレッドは、ある範囲のタイムスタンプを有する共有パラメータに対して行われた更新を見ることが可能である。例えば、クロックtにおけるワーカは、t-Δのタイムスタンプを有する更新までのワーカからの全ての更新を見ることが可能である。
【0021】
BSPは、Δ=0であり、複数のワーカが互いに先んじて実行されることが禁止されているSSPの特殊な場合である。
【0022】
非同期データ一貫性モデルでは、共有パラメータは、随時読み出し及び/又は書き込みされ得る。
【0023】
本明細書に記載の本発明の実施形態は、BSPモデルを使用するが、他のデータ一貫性モデルを代替として利用できることが明らかになるであろう。
【0024】
図2及び
図3を参照すると、
図2及び
図3は、各タイル4がタイル間のバリア同期30によって互いに隔てられた計算フェーズ33及び交換フェーズ32を交互サイクルで実行するBSP交換方式の一実装形態を示す。
図2及び
図3によって示される実施例では、バリア同期は、各計算フェーズ33と、続く交換フェーズ32との間に配置される。計算フェーズ33中、各タイル4は、1つ又は複数の計算タスクをタイル上でローカルに実行するが、これらの計算の何れの結果も何れの他のタイル4とも通信しない。交換フェーズ32では、各タイル4は、先の計算フェーズからの計算の1つ又は複数の結果を1つ又は複数の他のタイルと交換することが許されるが、そのタスクが依存する任意のデータを他のタイル4から受信するまで、いかなる新しい計算も実行しない。先の計算フェーズで計算されたもの以外、いかなるデータもいかなる他のタイルにも送信しない。内部制御関連の動作等の他の動作が交換フェーズで実行され得ることも除外されない。同期中のグループ内の他のタイル4との通信をしない限りにおいては、計算を実行中のタイル4は、計算フェーズ33中、同期中のタイル4のアレイの外側にあるゲートウェイと通信することが許され得ることにも留意されたい。タイルグループの外部の通信は、任意に、BSPメカニズムを利用し得るが、代替的に、BSPを利用せず、代わりに何らかの他の同期メカニズムを利用し得る。
【0025】
BSP原理によれば、バリア同期30は、計算フェーズ33から交換フェーズ32に遷移する接合部若しくは交換フェーズ32から計算フェーズ33に遷移する接合部又はそれらの両方に配置される。すなわち、(a)グループ内の任意のタイルが次の交換フェーズ32に進むことが許されるには、全てのタイル4が先にそれぞれの計算フェーズ33を完了する必要があるか、若しくは、(b)グループ内の任意のタイルが次の計算フェーズ33に進むことが許されるには、グループ内の全てのタイル4が先にそれぞれの交換フェーズ32を完了する必要があるか、又は、(c)それらの両方の条件が満たされるかの何れかである。3つ全ての変形において、フェーズ及び同期するアセンブリ全体を変更するのは、個々のプロセッサである。交換フェーズ及び計算フェーズのシーケンスは、次いで、複数の反復にわたり繰り返され得る。BSP用語では、交換フェーズ及び計算フェーズの各反復は、「スーパーステップ」と呼ばれることがある(しかし、文献でこの用語が一貫して常に使用されるわけではないことに留意されたい。個々の各交換フェーズ及び計算フェーズが個々にスーパーステップと呼ばれることもあれば、他の箇所では、本明細書に採用される用語と同様に、交換フェーズ及び計算フェーズが一緒にスーパーステップと呼ばれることもある)。
【0026】
同じチップ2又は異なるチップ上のタイル4の複数の異なる独立グループは、互いに非同期で動作する別個の各BSPグループをそれぞれ形成できることが除外されないことにも留意されたく、計算、同期及び交換のBSPサイクルは、所与の各グループ内のみに課されるが、各グループは、他のグループから独立してそれを行い、すなわち、マルチタイルアレイ6は、各々が独立し、他のグループと非同期に動作する複数の内部同期グループを含み得る。幾つかの実施形態では、より詳細に後述するように、同期及び交換の階層グループ化がある。
【0027】
図2は、(a)計算フェーズ33から交換フェーズ32へのバリア同期(上記を参照されたい)を課す場合にアレイ6内のタイルの幾つか又は全てのグループ4i、4ii、4iii内で実施されるBSP原理を示す。この構成では、幾つかのタイル4は、他の幾つかのタイルが依然として交換中である間、計算33を開始することが許されることに留意されたい。
【0028】
本明細書に開示の実施形態によれば、このタイプのBSPは、機械コード命令に、バリア同期を実行する追加の特別な専用機能、すなわち同期命令を組み込むことによって促進され得る。同期命令は、タイルのプロセッサで実行され得、それによりデータが交換されて、タイルのメモリに記憶されたデータを同期させる交換フェーズを開始する。
【0029】
上記のように、幾つかのアクセラレータ、例えばIPUを組み合わせて、単一のアクセラレータと比較して改善された処理力を有するアクセラレータ機161を生成することが可能である。そのようなアクセラレータ機161を
図12に示す。アクセラレータ機161は、リンク8によって近隣に接続された各アクセラレータ及びアレイ状に接続された複数(この例では4つ)のアクセラレータ162を含む。アクセラレータ機161は、アクセラレータ機161を1つ又は複数のホスト(図示せず)に接続するように構成された2つのゲートウェイ163も含む。各ゲートウェイ163は、ゲートウェイリンク9を介して4つのアクセラレータ162の2つに接続される。
【0030】
更に詳細に説明するように、ゲートウェイ163は、データ交換同期点に続いて、交換フェーズにおいて接続されたアクセラレータ162とデータを交換することが可能である。データ交換同期点は、アクセラレータで実行中の事前コンパイルされたコードの一部である同期命令の実行の結果としてトリガーされる。データ交換同期点の開始時、同期命令をタイルのプロセッサで実行し得る。アクセラレータ162の1つ又は複数のタイルによる1つ又は複数の同期命令の実行は、1つ又は複数の同期要求を1つ又は複数のタイルによって発行させる。これらの同期要求は、アクセラレータ162によって集計され、アクセラレータ162は、次いで、関連するゲートウェイ163に集計同期要求を発行する。ゲートウェイは、接続されて、ゲートウェイ間で同期信号を伝送し、複数のゲートウェイ及びアクセラレータで同期ゾーンを形成できるようにし得る。同期信号の一機能は、BSPモデルの交換フェーズにおいてゲートウェイ163と関連するアクセラレータ162との間でのデータ交換を促進することであるが、他の非データ関連用途も有する。各ゲートウェイ163は、ローカルメモリを有し、データ交換同期点でアクセラレータに送信されるデータを取得(ホストから、リモートストレージから又は別のゲートウェイから)し記憶するように構成される。データは、アクセラレータ162からの同期要求前にローカルメモリに記憶され、したがってアクセラレータに転送される準備ができている。ゲートウェイの一機能は、アクセラレータがデータを必要とするとき、要求されたデータをアクセラレータに供給することである。データは、後に論考する異なるメカニズムによりホスト又はリモートストレージからゲートウェイによって取得することができる。
【0031】
各ゲートウェイ163は、他のゲートウェイとデータを交換するようにも構成される。ゲートウェイ163は、アクセラレータ162に送信されるデータのコピーを他のゲートウェイに配信し得る。これらの他のゲートウェイは、次いで、接続されたアクセラレータ162にデータを配信し得る。したがって、データのコピーを受信する他のゲートウェイは、ストレージ(例えば、ホスト又はリモートストレージ)からデータを独立して取得する必要がなく、それにより冗長データが複数のゲートウェイによってストレージから検索されないようにする。これについて、より詳細に後述する。更に、より詳細に後述するように、ゲートウェイ163は、複数の異なるタイプのデータ転送を可能にするように構成される。ゲートウェイ163は、他のゲートウェイとデータを交換するように構成される。ゲートウェイ163は、結合された1つ又は複数のアクセラレータ162とデータを交換するように構成される。ゲートウェイ163は、1つ又は複数のホスト(図示せず)とデータを交換するように構成される。
【0032】
図4を参照すると、
図4は、アクセラレータ51の1つ又は複数のタイル53が同期要求をゲートウェイ52に発行する場合、同期要求/肯定応答メカニズムがどのように機能するかの一例を示す。
【0033】
ゲートウェイ52は、実行されるその後の同期の同期ゾーンの指示を含むゲートウェイ同期レジスタ59を含む。レジスタ59は、ゲートウェイ52内の共有レジスタブロック(SRB)で実施され得る。ゲートウェイ52は、通信する別個のアクセラレータに別個のゲートウェイ同期レジスタを含む。
図4は、アクセラレータ51のゲートウェイ同期レジスタを示す。バリア同期前に、アクセラレータ51のタイル53は、その後の同期について属する同期ゾーンの指示32を送信するように構成される。より詳細に後述するように、本願の実施形態によれば、同期ゾーンの指示は、ゲートウェイにおける同期要求及び肯定応答(acknowledgment)の伝播を制御することによって同期ゾーンを確定する。アクセラレータ51のタイル53の多くは、同じ同期ゾーンに属し得るため、コンパイラは、指示32の書き込みに対して特定の同期ゾーンに属するタイルをノミネートする。同期ゾーンは、何れのタイルが一緒に同期に関わるべきかを示す。幾つかの場合、同期ゾーンは、同じチップ上のタイル53のみを含み得、その場合、ゲートウェイが関わらないことが理解される。他の場合、同期ゾーンは、異なるチップ上のタイル53を含む外部同期であり得る。幾つかの場合、同期ゾーンは、異なるアクセラレータ上のタイルを含む。幾つかの場合、同期ゾーンは、ゲートウェイ、ホスト及び/又はリモートストレージを含む。
【0034】
同期ゾーンの指示は、ここでは、同期要求とは別個に送信されるものとして提示されるが、幾つかの他の実施形態では、指示は、アクセラレータ51から受信される同期要求56の一部として又は同期要求がアサートされる前に提供される帯域外(例えば、PCIe書き込み)同期情報の一部として提供され得る。
【0035】
データ交換同期点は、アクセラレータ51のタイル53で実行中のコードで事前コンパイルされた同期命令の結果としてトリガーされる。データ交換同期点の開始時、1つ又は複数の同期命令は、タイル53の1つ又は複数のタイルのプロセッサで実行され得る。同期命令を実行する各タイルは、同期要求を送信し、同期要求は、アクセラレータ51の同期ロジック54において受信される。同期ロジック54は、これらの同期要求55を集計し、集計された同期要求56をゲートウェイ52に送信する。
【0036】
ゲートウェイ52は、アクセラレータ51から同期要求56を受信し、同期バリアを通過できるようにし得る。これは、同期要求56に応答して同期肯定応答57をアクセラレータ51に送信することを含む。同期バリアを通過できるようにすると、アクセラレータ51のタイル53と互いに、幾つかの状況ではゲートウェイ52自体とデータを交換させる。ゲートウェイ52とのデータ交換は、ホスト(図示せず)からゲートウェイ52において受信されたデータがアクセラレータ51の1つ又は複数のタイル53に転送されることを含み得る。ゲートウェイ52とのデータ交換は、別のゲートウェイ(図示せず)からゲートウェイ52において受信したデータがアクセラレータの1つ又は複数のタイル53に転送されることを含み得る。他のゲートウェイから受信したデータは、別のアクセラレータから発信されたものであり得る。これは、ゲートウェイを介してアクセラレータ間のデータ交換を達成し得る1つのメカニズムである。他のゲートウェイから受信したデータは、別のホストから発信されたものであり得る。別のメカニズムは、ゲートウェイの設備を通して、ゲートウェイに接続された1つのアクセラレータが、ゲートウェイ間のファブリックポートを介して、別のゲートウェイに接続された別のアクセラレータに直接書き込めるようにする。これを達成するために、アクセラレータ/ゲートウェイの各グループ(すなわちシャーシ/グループ/ラック等)内の全ての記憶場所は、単一のグローバルアドレス空間の一部を形成する。
【0037】
ゲートウェイ52は、3つのデータ交換境界、(i)ゲートウェイ-アクセラレータ、(ii)ゲートウェイ-外部、及び(iii)ゲートウェイ-ゲートウェイ、を有する。これらは、異なる要件を有し、したがって異なるプロトコルによって管理される。しかしながら、アクセラレータ51によって要求されたとき(すなわち同期時)、アクセラレータ51のデータがゲートウェイメモリで利用可能であるが、ゲートウェイ52のデータを記憶するゲートウェイメモリがオーバーフローしないようにコーディネートされる必要がある。
【0038】
述べたように、同期前に、アクセラレータのタイル53のグループの同期ゾーンについての指示がレジスタ59に記憶される。幾つかの実施形態では、このレジスタ59への書き込み50は、好ましくは、同期要求56をゲートウェイ52に発行する前に行われる。好ましくは、タイルは、前の交換フェーズの終了時又は対応する同期が行われる交換フェーズ前の計算ステップの開始時に指示を送信する。レジスタ59への別個の書き込み50が各同期バリアで実行される。同期要求56を受信すると、ゲートウェイ52は、レジスタ59から、同期要求に対応する指示を消費するように構成される。ゲートウェイ52は、同期要求56に対応する指示がレジスタ59に書き込まれた場合にのみ、同期要求の肯定応答57をアクセラレータ51に送信するように構成される。換言すれば、ゲートウェイ52は、最後のバリアから値がリフレッシュされた場合にのみ、同期要求への肯定応答57をアクセラレータ51に送信する。
【0039】
例えば、アクセラレータの1つ又は複数のタイル53が計算フェーズの終わりまで同期ゾーンを決定することができなかったために同期ゾーンの指示のレジスタ59への書き込みに遅延が生じた場合、レジスタが同期ゾーンの対応する指示で更新される前に同期要求を受信し得る。この場合、ゲートウェイ52は、レジスタ59が同期ゾーンの対応する指示を受信するまで肯定応答57の送信を待つ。したがって、システムは、レジスタ59がリフレッシュされることを待つ間、小さいレイテンシヒットを受け得る。
【0040】
ゲートウェイ52は、レジスタ59に記憶された同期ゾーンの指示を使用して同期肯定応答57を生成し、正しいタイル、チップ及び/又はアクセラレータに送信する。例えば、同期ゾーンの指示が、同期ゾーンがアクセラレータ51を含み、加えて更なるアクセラレータ(図示せず)を含むというものである場合、ゲートウェイ52は、同期要求の受信に応答して、同期肯定応答をアクセラレータ51に送信するとともに、更なるアクセラレータにも送信する。ゲートウェイ52は、同期ゾーンの指示をレジスタ59から読み取り、この指示に応じて、同期肯定応答又は要求57をそれに従って伝播させ得る。
【0041】
アクセラレータ51によってレジスタ59に書き込まれる情報は、ゲートウェイ52自体からのデータ転送が同期の一環として要求されるか否かの指示を含む。この指示は、レジスタ59に記憶された同期ゾーンの指示から暗示され得る。データ転送が要求されるとゲートウェイ52が判断する場合、ゲートウェイ52は、クレジット制御メカニズムを適用して、同期バリアの通過を許すか否かを判断する。データ転送が要求されないとゲートウェイ52が判断する場合、ゲートウェイ52は、クレジット制御メカニズムを適用せずに同期肯定応答57をアクセラレータ51に送信する。クレジット制御メカニズムについて、ゲートウェイ52のストレージ(後述するローカル同期バリアモジュール(LSBM))に第1の組のクレジット(ESP(交換同期点)クレジットと呼ばれる)の1つ又は複数がある場合、ゲートウェイ52は、同期肯定応答57をアクセラレータ51に送信し、同期のデータをゲートウェイメモリ(
図4に示さず)からアクセラレータ51に転送することにより、同期要求56の受信に応答して同期バリアを通過させるように構成される。利用可能なESPクレジットがゼロである場合、ゲートウェイ52は、同期要求56に対して肯定応答57せず、データは、ゲートウェイメモリ(
図4に示さず)からアクセラレータ51に転送されず、したがって同期をストールさせる。このクレジット制御メカニズムについては、より詳細に後述し、このメカニズムは、ゲートウェイ52及びアクセラレータ51が互いに関してBSPプロトコルで同期された状態を保てるようにする。
【0042】
幾つかの実施形態では、ゲートウェイ52及びアクセラレータ51は、ゲートウェイ52が要求されたデータを正しいときにアクセラレータ51に提供できるようにする事前コンパイルされたコードをそれぞれ含む。
【0043】
アクセラレータ51の同期ロジック54が同期要求56を送信した後、同期ロジック54は、ゲートウェイ52からの同期肯定応答(sync_ack)57を待つ。アクセラレータ51の同期ロジック54は、同期肯定応答57をゲートウェイ52から受信すると、同期肯定応答信号57(sync_ack)を、同期要求55を発行したタイル53に返す。同期を要求した全てのタイル53は、自動的に、外部の同期ロジック54からの同期肯定応答58(sync_ack)が返されるまで一時停止する。同期肯定応答58に応答して、タイル53は、スーパーバイザの命令発行を再開し、すなわち計算フェーズに再び入る。
【0044】
実際のデータ(コンテンツ)は、同期要求55/56及び同期肯定応答57/58への異なるチャネルによってアクセラレータタイル53とゲートウェイ52との間で送信され得る。更に、当業者であれば、本明細書に開示する同期及び集計機能の仕様を所与として、開示される同期及び集計機能を実施する異なるタイプの回路を構築可能であることを理解するであろう。例えば、同期ロジック54は、同期要求56及び同期肯定応答57/58の送信に専用配線を使用することができる。同期ロジック54は、専用配線の代替として、代わりに相互接続を経由して運ばれるパケットを使用することもできる。例えば、同期要求55/56及び/又は同期肯定応答57/58は、それぞれ1つ又は複数のパケットの形態で送信することができる。例えば、同期要求55/56及び/又は同期肯定応答57/58は、それぞれ1つ又は複数のパケットの形態で送信することができる。
【0045】
図5を参照すると、
図5は、同期ゾーンの概念をより詳細に示す。
図5は、2つの異なる可能な同期ゾーン、例えばゾーン1又はゾーン2を示す。実施形態では、これらは、異なる階層レベルに対応する。すなわち、各上位階層レベル92(例えば、ゾーン2)は、少なくとも1つの下位階層レベルの2つ以上のゾーン91A、91Bを包含する。
図9を一例として使用すると、2つの左端のゲートウェイ及びアクセラレータは、2つのゲートウェイの一方がマスタである同期ゾーン0を有し得る。同様に、右端の2つのゲートウェイ及びアクセラレータも、2つのゲートウェイの一方がマスタである同期ゾーン0を有し得る。次いで、図全体である同期ゾーン1が更に存在し得る(次いで、何れかの任意のゲートウェイが同期マスタとしてノミネートされ得る)。
【0046】
その場合、同期の幾つかの階層がプログラムにより利用可能となる。
1.内部アクセラレータのみ同期 - 同じアクセラレータ上のタイルが同期し得る。
2.IPU+ゲートウェイのみ(データ)同期 - (例えば、データ交換を調整するために)ゲートウェイに同期を求める単一のアクセラレータ。
3.左端同期ゾーン0(各ゲートウェイにクレジットあり又はなし)。
4.右端同期ゾーン0(各ゲートウェイにクレジットあり又はなし)。
5.同期ゾーン1(各ゲートウェイにクレジットあり又はなし)。
【0047】
レジスタ59に書き込まれる情報は、同期へのゲートウェイの関与(すなわちそのデータがゲートウェイ52とアクセラレータ51との間で転送されるべきであること)を示し得る。したがって、対応する同期命令が実行されるとき、アクセラレータ51とゲートウェイ52との間のデータ交換が行われる。指示は、ゲートウェイ52以外の更なるゲートウェイの関与を示し得、その場合、アクセラレータ51は、ゲートウェイ52を介してその更なるゲートウェイと通信し得る。更なるゲートウェイの関与が示される場合、アクセラレータ51からの同期要求は、(ゲートウェイ52で受信した他の同期要求と集計された後)更なるゲートウェイに向かって上流に渡され得る。ゲートウェイ52は、更なるゲートウェイからの同期肯定応答を待ってから、同期肯定応答をアクセラレータに提供する。このシナリオについて、
図8に関連してより詳細に後述する。
【0048】
アクセラレータ51から同期要求を受信したことに応答して、ゲートウェイ52は、同期肯定応答57をアクセラレータ51に送信する。アクセラレータ内の専用ハードウェア同期論理54は、ゲートウェイから同期肯定応答(sync_ack)57を受信し、同期肯定応答58を同期ゾーンのタイル4に送信する。同期論理54は、同期要求(sync_req)55がそのゾーン内の全てのタイル4から受信されてからのみ、同期肯定応答信号58(sync_ack)をシグナリングされた同期ゾーン内のタイルに返す(しかし、グローバル同期でない場合、そのゾーン外部のいかなる他のタイルも待たない)。
【0049】
他の実施形態では、レジスタ59内の指示によって指定することができる同期ゾーンは、階層を有する性質のものに限定されないことに留意されたい。一般に、レジスタ59内の指示は、任意の種類のグループ化に対応するモードで提供し得る。例えば、モードは、1つの非階層グループのみ又は階層グループ及び1つ又は複数の非階層グル-プ(少なくとも1つのグループは、別のグループ内に完全にはネストされない)の混合の中からの選択を可能にし得る。これにより、有利には、最小のコード密度で、プログラマ又はコンパイラが、より広い同期が要求されるまで、互いに非同期で実行することができる内部同期グループの異なるレイアウト間で選択する柔軟性が可能になる。
【0050】
説明したように、同期バリアによっては、ゲートウェイを介して提供されるホストからのデータとのアクセラレータのタイルの同期に関わるものもあれば、関わらないものもある。グローバル同期ゾーン92の例を
図6に概略的に示す。システムは、ホスト63によって提供されるデータとの同期も求めるバリア90が課される前にN個のスーパーステップを実行し、N個の同期バリア80を通過することが許される。同期バリア90において、ホスト63からゲートウェイ52に転送されたデータは、ゲートウェイ52からアクセラレータ51に転送される。N個の同期バリアは、関連する同期グループ92内の全ての(非棄権)タイル4からの同期要求を要求する。これらの同期要求は、集計され、ゲートウェイ52に渡され、ゲートウェイ52は、集計された要求に対して肯定応答する。続く同期バリア80も、同期グループ92内の全ての(非棄権)タイル4からの同期要求を要求する。これらの同期要求は、集計され、ゲートウェイ52に渡され、ゲートウェイ52は、適したESPクレジットがゲートウェイ52で利用可能である場合にのみ、集計された要求に肯定応答する。換言すれば、同期バリア80を通過するには、ゲートウェイが特定のバリアを通過するために少なくとも1つのESPクレジットを記憶していることが求められる。このバリア90後、例えばタイル4の1つ又は複数が計算結果をホスト63に報告するために、交換50’’をゲートウェイとタイル4の1つ又は複数との間で実行し得る。
【0051】
ここで、
図7を参照すると、
図7は、ホスト63がアクセラレータ51とどのように対話し、データを交換するかを更に詳細に示す。ホスト63は、アクセラレータ51が処理するデータを提供するように構成される。アクセラレータ51は、そのデータを処理し、処理の結果をホスト63に送るように構成される。ゲートウェイ52は、データ交換のためにホスト63とアクセラレータ51との間で管理される様式でデータをストリーミングすることを担当する。例では、アクセラレータ51は、先の図を参照して上述したようにIPUであり得る。しかしながら、ゲートウェイ52は、他のタイプのアクセラレータ51とのホスト63のインターフェースとして使用することも可能である。
【0052】
交換同期点を通したホスト63、ゲートウェイ52及びアクセラレータ51間のデータ同期は、ゲートウェイデータ一貫性及びI/O動作の迅速さを保証する。ゲートウェイ52とアクセラレータ51との間のデータの可用性は、ESPクレジットのクレジットメカニズムを介して扱われる。1つのクレジットは、1つのESPを通過させることができる。ESP前のゲートウェイメモリ114の準備は、ゲートウェイ52が「事前ワーク」命令を実行することによって扱われる。ESP後のデータ扱いは、「事後ワーク」命令を実行することによって実行される。後述のPPE実行エンジン123が事前ワーク及び事後ワーク命令を実行する。
【0053】
図7に示すように(及び
図5も参照すると)、ゲートウェイ52は、少なくとも1つの「ローカル同期伝播モジュール(Local Sync Propagation Module)」(LSPM)117及び少なくとも1つの「ローカル同期バリアモジュール」(LSBM)118を含む。LSBM 118は、PPEへの一種のプロキシと見なすことができ、アクセラレータで実行中のプログラムがホストから切り離されるデータのバッチを処理できるようにする。アクセラレータ51/ゲートウェイ52の同期は、データをゲートウェイ52に提供するにあたり、ホスト63の活動から非同期で実行することができる。LSBM 118は、上述したESPクレジットを記憶するように構成される。LSBMは、LSPM 117にアクセス可能である。
【0054】
LSBM 118は、LSBM 118がPPEへのプロキシとして作用するように構成された各同期グループ92にホスト63が参加できるようにするように構成されたハードウェア回路を含む。タイル4によって発せられた同期要求56は、ゲートウェイが関与する同期である場合、ゲートウェイ52のLSPM 117及びLSBM 118の両方を利用する一方、ゲートウェイ52とアクセラレータ51との間のデータ転送を含まない同期のための同期要求56は、LSPM 117によって受信され、LSBM 118が関わることなく要求側タイルに返される。したがって、タイル4はプログラムにより、アクセラレータ51がLSBM 118を介してゲートウェイと対話する必要があった場合、それをいつ実行するかを判断する。
【0055】
アクセラレータ51がゲートウェイと対話する必要がある場合、LSPM 117は、LSBM 118内のESPクレジットの数がゼロよりも大きいとの判断に応答して、同期要求56が受信されたときに同期バリアを通過させるように構成される。同期バリアを通過させることは、同期肯定応答(図示せず)の生成及びこの同期肯定応答のアクセラレータ51への送信を含む。
【0056】
先に説明したように、ゲートウェイ52は、LSBM 118に、それ自体とアクセラレータ51と間のインターフェースに関連するクレジットの組を記憶する。これらのクレジットは、本説明では交換同期点(ESP)クレジットと呼ばれる。しかしながら、この名称がクレジットを適宜識別するためにのみ使用され、クレジットの性質への限定を暗示しないことを当業者であれば理解する。ESPクレジットは、データ交換動作をあるバリアに対して実行し得るか否かを制御するため、バリアクレジットと呼ばれることもある。
【0057】
LSBM 118内のESPクレジットの数がゼロである場合、同期要求56が受信され、レジスタ59内の対応する指示が、ゲートウェイとのデータ転送が要求されるようなものであるとき、LSPM 117は、同期バリアを通過させず、したがってESPクレジットの数がゼロよりも大きくなるまで、グループ92内のタイル4に再度実行を継続させない。ESPクレジットの生成は、交換同期点においてアクセラレータ51に転送するためのデータがゲートウェイ52で利用可能になったときに達成され得る。幾つかの場合、このデータは、ホスト63、取り付けられたネットワーク又は他の外部ストレージから転送されている結果として利用可能になり得る。他の場合、このデータは、別のゲートウェイから転送されている結果として利用可能になり得る。他のゲートウェイから受信されるデータは、別のアクセラレータ又は別のホスト若しくはリモートストレージからのデータであり得る。
【0058】
幾つかの実施形態では、ゲートウェイ52によって保持される複数の組のESPクレジットがあり得る。異なる同期グループに異なる組のクレジットがあり得る。この場合、1つの同期グループに対応する同期要求56は、ゲートウェイ52に要求に肯定応答させ得る(そのグループのESPクレジットの数が非ゼロである場合)一方、別の同期グループに対応する同期要求56は、ゲートウェイ52に要求に肯定応答させなくてよい(そのグループのESPクレジットの数がゼロである場合)。ゲートウェイ52と通信するように構成された異なるアクセラレータに対して異なる組のクレジットもあり得る。
図12に示すように、各ゲートウェイ163は、2つのアクセラレータ162と通信するように構成され、したがって、ゲートウェイ52は、各アクセラレータ162にESPクレジットの2つの組を記憶し得る。各アクセラレータ162が、ゲートウェイデータ転送を要求する2つの可能な同期グループを有する場合、これは、各ゲートウェイ163によってクレジットの合計で4つの組が保持されることに繋がる。
【0059】
幾つかの実施形態では、アクセラレータの異なる同期ゾーンに対して確立される異なる組のクレジットは、LSBM 118内の単一のESPクレジットレジスタによって制御され得る。この場合、1同期ゾーン当たりの全ての組のESPクレジットは、所与のアクセラレータについてGW内の全てのクレジットを制御する単一のESPクレジットレジスタと同一である。同期バリアが通過される場合、アクセラレータの単一のESPクレジットレジスタのESPクレジットは、デクリメントされる。
【0060】
同期グループのタイル4は、ゲートウェイのESPクレジットのチェック実行を必要とせずに、同期された(同期要求がLSPM 117に転送され、LSPM 117により肯定応答されて)N個のバリアを通して実行を継続することが許され得、その後、LSBM 118を介してゲートウェイと同期しなければならない(次いで、データをゲートウェイと交換し得る)。例えば、
図6を参照されたい。
【0061】
先に説明したように、タイル4で実行中のソフトウェアは、ゲートウェイ関与が同期に必要であるか否かについての指示(同期要求に含まれるか又は別個に送信され得る)を送信することにより、ゲートウェイとの同期を要求するようにプログラムされる。この指示は、ゲートウェイ52のレジスタ59に記憶される。そのような実施形態では、上述したクレジット制御メカニズムは、ゲートウェイの関与を必要とするものとして記された同期に対応するバリアのLSBM 118によってのみ適用される(任意の所与のバリアへのゲートウェイの「関与」は、ホストの代理としてのLSPM118による同期肯定応答のプロキシ認可(LSBM)又はときにLSBM 118へのより多くのESPクレジットの明示的な認可の何れかである)。
【0062】
実施形態では、ゲートウェイによって実行されるバリアの準備は、モデル学習における次の段階のためにアクセラレータ51によって必要とされる経験データセット等、アクセラレータ51によってフェッチされるデータの準備を含み得る。これに関連して、準備は、ストレージディスク又は他の媒体からのデータのフェッチ、アクセラレータ51で実行中のトレーニングアルゴリズムによって要求される形態へのデータのフォーマット又はイメージデータの分解を含み得る。更に、バリアの準備は、アクセラレータ51によって生成される出力データの消費を含み得る。後述するように、この準備の幾らか又は全ては、ゲートウェイ52で行われる。最低限でも、ゲートウェイ52は、ストレージディスク又は他の媒体とアクセラレータ51との間の経路にある。
【0063】
LSPM 117への同期要求56は、ネットワーク(又はPCIe)パケットとして処理要素から送ることができ、及び/又は、同期肯定応答57は、ネットワーク(又はPCIe)パケットとして返すことができる。一般に、ゲートウェイは、同期の階層レベルの1つ又は複数に関わり得る。
【0064】
一般に、ESPクレジットの概念は、本明細書に開示するアーキテクチャ例のみならず、任意のマルチタイルアーキテクチャに適用可能であり得る。また、それは、必ずしもBSP適用状況に限定されない。開示される技法は、BSP等の単一のランデブー点を利用するシステム又はホスト若しくは他の外部世界システムと、対象の機械との間の別個のランデブー点の数が1つのみのランデブー又は非常に少ない数(例えば、CSPとは対照的に)に制限される場合、特定の相乗効果を有する。それにも関わらず、本開示の適用可能性は、これに関して絶対的に限定されない。任意のシステム又は用途において、タイルがゲートウェイに関与せずに特定の数の同期バリアを通過できるようにし、したがってゲートウェイと対話する必要があるマルチタイルサブシステムの数を低減し、したがってそれを行うための待ち時間ペナルティが発生する回数を低減することにより、待ち時間の節減を達成することができる。
【0065】
更に、カード間又はホスト63との間のPCIeインターフェースに関して実施形態を例示したが、これは、限定ではなく、他のタイプのインターフェース、例えばEthernet(登録商標)を使用することもできる。
【0066】
更に、実装形態は、本発明を用いない場合に非同期で実行される、ホストシステム63とアクセラレータ51との間の通信の同期に限定されない。実施形態では、ゲートウェイ52は、内部で同期して実行されるが、互いに関して非同期で実行される2つの独立したBSP間又は他の並列処理サブシステム間の同期に利用することができる。ゲートウェイ52は、同期グループのサイズを遙かに大きいサイズに増大させることができ、それらのより大きいグループに対してより効率的なツリー構造を可能にする。
【0067】
ゲートウェイ52において受信されるデータのバッチは、メモリ114に記憶される。メモリ114は、ゲートウェイ52による使用に確保されたローカルメモリ(例えば、DRAM)である。同期要求56に応答して、データは、ゲートウェイ52によりメモリ114から検索され、アクセラレータ51に転送され得る。パス116は、データの各バッチのフローを示す。データの各バッチは、バッチ毎に異なり得る期間にわたりメモリ114に保持されることに留意されたい。それは、バッチがゲートウェイ52に入る時間及びアクセラレータ51にプッシュされる時間に依存し、これらは、必ずしも関連しない。
【0068】
LSPM 117は、メモリ114からアクセラレータ51に又はアクセラレータ51からメモリ114にデータを転送するタイミングをゲートウェイ52に示すように構成され得る。これにより、LSPM 117は、ゲートウェイメモリ114のオーバーフローを回避するように、アクセラレータ61からメモリ114へのデータのデプロイ(deploy)に適切なタイミングを指示することができる。
【0069】
更に、ホスト/リモートストレージからゲートウェイメモリ114へのデータフローは、ゲートウェイメモリ114のオーバーフローを回避するように管理される。
【0070】
図7では、アクセラレータ51により処理されるデータは、ホスト63からゲートウェイ52に転送され、ゲートウェイ52は、それをローカルメモリ114に記憶する。データは、RDMA読み出しを介してゲートウェイ52によってプルされ得るか、又はホスト63によって行われるゲートウェイ52へのRDMA書き込みを介して書き込まれ得る。
【0071】
図11を参照すると、
図11は、データ116がゲートウェイ52によってネットワーク接続ストレージ151から検索される代替の方式を示す。ネットワーク接続ストレージ151は、本明細書ではリモートストレージとも呼ばれる。
図11では、
図11の要素と同様の要素は、同様の参照番号で示される。
【0072】
図11では、ホスト63は、記述子119をゲートウェイ52に送信する。記述子119は、ゲートウェイ52がアクセス可能なネットワーク接続ストレージ151のロケーションを識別する。ゲートウェイ52は、記述子119と呼ばれるデータフェッチ命令を実行する場合、データ116をネットワーク接続ストレージ151から検索する。ゲートウェイ52は、次いで、データ116をメモリ114に記憶し、それからデータ116をアクセラレータ51に転送する。
【0073】
幾つかの実施形態では、記述子119をホスト63からゲートウェイ52に転送する代わりに、ゲートウェイ52によって記憶された事前コンパイルされたコードが記述子を含む。この場合、ゲートウェイ52は、ホストの介在なしでリモートストレージ151からデータを自律的に検索する。本願の幾つかの例では、ゲートウェイ52は、外部ホスト63が必要とされないようにスタンドアロン設備として機能するシステムオンチップ(SoC)を含む。アプリケーションスタック全体は、直接SoC上で又はより広いシステム内の複数のSoCの1つで実行される。ゲートウェイ52は、外部ホスト63のプロセッサと対話する第1のモード及びそのような外部ホスト63が必要とされない第2のモードで動作するように構成可能である。ゲートウェイ52の残りの部分(例えば、
図8に関して説明するストリーミングエンジン)は、ゲートウェイ52が動作するように構成されたこれらのモードの何れかであるかに関係なく、同じ機能を実行する。スタンドアロン設備を実行中のゲートウェイ52は、ネットワーク接続ストレージデバイス151等の外部ストレージからデータを検索する。
【0074】
図8を参照すると、
図8は、ゲートウェイ52をより詳細に示す。
図8は、データがゲートウェイ52を通るために取る種々のパスを示す。
【0075】
図8は、アクセラレータ51により処理されるデータ120がどのようにホスト63又はリモートストレージ151からメモリ114に転送されるかを示す。既に述べたように、幾つかの例では、データ120は、ホスト63からゲートウェイ52に転送される。他の例では、データ120は、ゲートウェイ52によって行われたリモートストレージ151からの読み出し要求に応答して、ローカル又はリモートストレージ151(例えば、ネットワーク接続ストレージ)から受信される。ゲートウェイ52は、RDMAを介してリモートストレージ151からデータ120を検索する。データ120は、データ中心ポートを介して受信される。更に、データ検索と同様に、ゲートウェイ52は、データ(図示せず)をホスト63/リモートストレージ151に書き込む。データ書き込みは、データ中心ポートを介して行われる。交換フェーズ中、データは、ゲートウェイメモリ114からアクセラレータ51に転送され得る。
【0076】
交換フェーズ中、ゲートウェイメモリ114からアクセラレータ51へのデータ転送の代わりに又は追加として、データは、アクセラレータ51からゲートウェイ52に転送され得る。アクセラレータ51は、データパケットの形態でデータをゲートウェイ52に送信するように構成され、各データパケットは、アドレスを示すヘッダを含む。ゲートウェイ52は、データパケットのアドレスを使用して、パケットを送信する場所を特定する。例えば、データパケットは、ローカルメモリ114に記憶され得る。データパケットは、更なるゲートウェイ128に送信され得る。データパケットは、更なるゲートウェイ128に接続されたアクセラレータに発送され得る。データパケットは、ホスト63/リモートストレージ151に送信され得る。
【0077】
データ120は、ストリーミングエンジン124(アクセラレータ51に送るためのメモリ114からのデータ121の検索も担当する)の制御下でゲートウェイ52からメモリ114に巡回する。ストリーミングエンジン124は、データストリーミング動作を行う。データバッチのこれらの動作は、ワーク記述子(WD)によって指定され得る。ストリーミングエンジン124は、2つの実行エンジン及びコードメモリ(図示せず)を含む。実行エンジンの1つは、データムーバエンジン(DME)122であり、他方は、事前/事後ワークエンジン(PPE)123である。それらは、コンパイラによって生成される実行可能イメージとしてコードメモリにロードされる命令を実行する。ストリーミングエンジン124は、DME 122により実行されるワーク命令の組及びPPE 123によって実行されるワーク命令の組を有する。DME及びPPEの命令の組は、コンパイル時にセットアップされるWDによって調整される。単一のデータ交換同期点のこれらの命令は、単一のWDに一緒にグループ化され得る。DME 124は、実行可能イメージのDMEセクションで見られる特定のDME命令によって動作する。DME 124は、所与のESPに関するデータムーバ(DMOV)命令の組へのナビゲートにWDを使用する。PPE 123は、実行可能イメージのPPEセクションで見られる特定のPPE命令によって動作する。PPE 123は、所与のESPに関する事前/事後ワーク命令の組へのナビゲートにWDを使用する。
【0078】
PPEの事前ワークは、アクセラレータ51とのデータ交換前に使用可能でなければならない。WDでのPPEの事後ワークは、交換が完了した後にのみ開始することができる。データ交換は、同期要求56が肯定応答され、アクセラレータ51及びストリーミングエンジン124の両方にシグナリングされた直後に行われる。この要求/肯定応答は、「交換同期点」(ESP)をシグナリングする。
【0079】
ストリーミングエンジン124は、異なるデータストリーミングモデルをサポートする。
【0080】
全てのモデルは、ホストがESPクレジットの消費を密に制御することが許される構成をサポートする。これは、ホスト63、ゲートウェイ52及びアクセラレータ51間のI/O動作の調整並びにゲートウェイメモリ114を利用しない他のアクセラレータレベルI/Oメカニズムに必要な場合にアクセラレータ51をストールさせるメカニズムをサポートする。それは、ブレークポイントの設定又はアクセラレータの全ファブリックの単一のステッピングに使用されるメカニズムでもあり得る。ホスト63からの密なフロー制御下で任意のモデルを実行する場合、ホスト63によって認可されるESPクレジットは、PPEスケジューラにより「ESPクレジットレジスタ」(LSBM 118の部分)に転送される。ESPクレジットレジスタは、ゲートウェイ52のハードウェア及びファームウェアによって読み出し/書き込みすることができる。
【0081】
ここで、異なるストリーミングモデルについて論考する。ストリーミングモデルが相互に排他的ではなく、本願の実施形態によるゲートウェイが2つ以上のモデルに従って動作し得ることが当業者に理解される。
【0082】
ストリーミングエンジン124によってサポートされる第1のストリーミングモデルは、「アドバンストゲートウェイ(GW)プッシュ」と呼ばれる。アドバンストGWプッシュでは、PPE 123は、外部ストレージ及びゲートウェイ(GW)メモリ114から/にデータをストリーミングする一方、DME 122は、データをアクセラレータ51にプッシュする。実行は、ゲートウェイによって保持されるコンパイルされた実行可能イメージからの命令に基づく。ストリーミングエンジン124の実行可能イメージの生成は、アクセラレータコンパイラと統合される。コンパイラは、2つの関連するコンパイルされたコードシーケンス又は実行可能イメージを生成する。これらの第1のものは、アクセラレータ51で実行される一方、第2のものは、ゲートウェイ52で実行される。幾つかの実施形態では、ホスト63は、コンパイルされたコードシーケンスをアクセラレータ51及びゲートウェイ52に提供し得る。
【0083】
「ゲートウェイプッシュモデル」は、ゲートウェイ52がデータをプッシュするものである使用モデルである。このモデルは、データを合意時点(合意ESP)でアクセラレータ51にプッシュするという点で「ゲートウェイプルモデル」(後述)と異なる。この一般プッシュモデルは、並列プログラミングに異なるタイプのメモリ一貫性プロトコル又はブリッジングモデルをサポートすることができる。例には、バルク同期並列(BSP)、陳腐化同期並列(SSP)及び非同期並列がある。
【0084】
アドバンストゲートウェイ(GW)プッシュモデルは、(アクセラレターに対する)プッシュされるデータ入力の可能性及びデータを出力するアクセラレータ51のゲートウェイ52データバッファの可用性の制御にクレジットメカニズムを使用する。ゲートウェイ52は、外部ノード(ホスト、NAS又は他のゲートウェイ)とのデータ転送のためにデータムーバ命令(DME 122は、データをアクセラレータ51にプッシュしている)及び事前/事後ワークエンジン命令の両方を実行する。PPE 123は、外部I/Oボトルネックに起因してアクセラレータ入力データが利用可能でない場合、ESPクレジットがないことを通してDME 122を効率的にストールさせることを担当する。外部I/Oボトルネックに起因してアクセラレータ出力データ(リモートホスト/ストレージを宛先とする)がゲートウェイ52のメモリ114に蓄積されている場合でも、同様のストールが求められる。
【0085】
データは、アクセラレータ51へのプッシュが生じる前に、GWメモリ114から高速ゲートウェイ転送メモリ127(例えば、SRAM)へのデータのプリフェッチにより、低い待ち時間で送ることができる。
【0086】
上述したメモリ一貫性モデル(BSP、SSP、非同期等)は、プッシュモデルと組み合わせることができる。その場合、アクセラレータ51のランタイムは、外部バリアがDME 122及びPPE 123のデータ移動をトリガーすることを確実にする必要がある。プッシュ動作の場合、ESPクレジットは、ゲートウェイ52により1だけデクリメントされる。
【0087】
上述したストリーミングプッシュモデルでは、ゲートウェイ52は、オンチップストリーミングバッファとしてゲートウェイメモリ114を使用することによってアクセラレータメモリアクセス待ち時間を隠す。ストリーミングエンジン124の全体的な利点は、データ移動がアクセラレータ計算と重なることができ、計時プッシュ動作前にゲートウェイ52のメモリ114にプリロードできることである。
【0088】
第2のストリーミングモデルは、アドバンストアクセラレータプルと呼ばれる。このストリーミングモデルでは、PPE 123がデータを外部ストレージに/からゲートウェイメモリ114にストリーミングする。アクセラレータ51は、次いで、PCIe読み取り動作を介してゲートウェイ52からデータをプルする。PPE 123の実行は、コードメモリ内の実行可能イメージからの命令に基づく。
【0089】
このモデルでは、PPE 123は、アクティブであり、外部ストレージから「プル要求」(すなわち読み出し要求)を発行することによりデータを取得してメモリ114に記憶する。アクセラレータ51は、次いで、所定のESPにおいてゲートウェイからデータをプルする。アドバンストアクセラレータプルモデルは、DMOVプッシュ命令なしで事前/事後ワーク命令を含む実行可能イメージを利用する。しかしながら、論考するように、DME 122は、依然として実行可能イメージからの命令を実行して、高速ゲートウェイ転送メモリ(例えば、SRAM)にデータをプリロードし得、高速ゲートウェイ転送メモリからデータをアクセラレータ51により低待ち時間でプルすることができる。
【0090】
プルモデルでは、ホスト63は、ゲートウェイメモリ114で準備された有効データを予期されるESPにおいてプルするように、ESPクレジットメカニズムを介してアクセラレータ51を同期させる。このモデルでは、PPE 123は、外部IOボトルネックに起因してアクセラレータ51の入力データが利用可能でない場合、LSPMのストール(クレジットメカニズムを介する)も担当する。外部IOボトルネックに起因してアクセラレータ51の出力データ(リモートホスト/ストレージを宛先とする)がゲートウェイメモリ114に蓄積されている場合にも、同様のストールを実行し得る。
【0091】
プルモデルでは、その後のESPにおいてアクセラレータ51に転送されるデータの幾らか又は全ては、アクセラレータ51によってゲートウェイ転送メモリからプルされる前に、メモリ114からゲートウェイ転送メモリ(例えば、SRAM)にプリロードされる。このゲートウェイ転送メモリは、
図8に示され、アクセラレータ51にプッシュされるデータの記憶に使用されるゲートウェイ転送メモリ127と同じであるか又は異なり得る。
【0092】
図16を参照すると、
図16は、プルモデルが使用される場合のゲートウェイ52とアクセラレータ51との間の対話を示す。示すように、ゲートウェイ52は、ゲートウェイ転送メモリ1610を含む。ゲートウェイ転送メモリ1610は、一連のストリーミングバッファ(仮想FIFOとして示される)を含む。
【0093】
幾つかの実施形態では、プリロードを実行するために、ストリーミングエンジン124の少なくとも1つのプロセッサは、実行可能イメージの命令を実行するように構成される。幾つかの実施形態では、ホスト63又はアクセラレータ51空のコマンドは、ストリーミングエンジンにプリロードを実行させ得る。DME 122は、プルモデルの以下の説明では、これらの動作を実行するものとして説明される。しかしながら、幾つかの実施形態では、メモリ1610に転送する動作は、DME 122以外のハードウェアによって実行され得ることが理解される。プリロード動作を実行するハードウェアは、フィールドプログラマブルゲートアレイ(FPGA)であり得る。
【0094】
DME 122は、所定の数のその後のESPでのデータをメモリ1610にプリロードする。アクセラレータ51は、ESPに到達することに応答してメモリ1610から直接、プリロードされたデータを読み出す読み出し要求を発行するように構成される。
図16に示すように、アクセラレータ51は、メモリ114からデータを更にプルし得る。
【0095】
ゲートウェイ52からプルされたデータは、複数のアクセラレータ入力ストリームに編成され得る。アクセラレータ入力ストリームは、固定順でアクセラレータメモリに転送される複数の組のデータとして定義される。各組のデータは、何れかの任意のサイズであり得、単一のストリームは、何れかの任意の数の組のデータであり得る。複数の組のデータは、データバッファに配置される(メモリ1610の仮想FIFOと混同すべきではない)。ここで論考するプルモデルでは、これらの組のデータは、IPU発行の読み出しによってIPUに送られる。任意の2つの入力ストリーム間に順序はない。
【0096】
メモリ1610は、バッファ(仮想FIFOとして示される)の組に編成される。バッファは、好ましくは、メモリ1610内の物理的範囲のメモリアドレス(連続又は不連続であり得る)にマッピングされる仮想アドレス空間によって定義される仮想データバッファである。仮想バッファは、読み出しポインタ及び書き込みポインタのそれぞれを使用して示されるメモリ1610内のロケーションから読み取られ、書き込まれる。ポインタは、ゲートウェイのメモリ(メモリ1610と同じ又は別個であり得る)に保持される。仮想バッファは、好ましくは、
図16に示すように仮想FIFOである。
【0097】
各バッファは、異なる入力ストリームに対応する。アクセラレータの視点から、特定の入力ストリームは、メモリ114内の特定のロケーションに配置される。しかしながら、その入力ストリームからのデータの少なくとも幾らかは、メモリ1610のバッファにプリロードされている可能性がある。その入力ストリームのデータをゲートウェイからプルするために、アクセラレータは、メモリ114のアドレスへの連続読み出しを発行する。読み出し要求は、その入力ストリームに読み出されるバイト数も含む。ゲートウェイ52が読み出し要求を受信する場合、ゲートウェイ52のロジックは、読み出し要求内に配置されたアドレス情報に基づいて、読み出し要求が読み出されている入力ストリームを特定する。この入力ストリームのバッファがロード済み状態である場合、データは、メモリ114の代わりにそのバッファから読み出される。バッファがロード中である場合、ロードが完了すると、データがそのバッファから読み出される。バッファがロードされていないか又はロード中でない場合、データは、要求において示されたアドレスにおいてメモリ114から読み出される。
【0098】
アクセラレータ51は、メモリ114内の特定のメモリアドレスからの読み出す要求を発行しており、FIFO構造がメモリ1610に使用されているため、あたかも読み出しがメモリ114から行われているかのように同じデータが返されることを保証し得る。2つのタイルが同じ入力ストリームから読み出すことが許される場合、一方のタイルは、他方のタイルが読み出しプロセスの何れの箇所にいるかの知識を有さず、したがって他のタイルがFIFOから既に読み出した、特定のアドレスから特定のデータを読み出す要求を発行し得るため、それは、保証されない。この問題は、特定の入力ストリームの読み出しの全てが、メモリ1610において受信された読み出しが適切な順序であるように同じアクセラレータ51の同じタイルによって発行されることを保証することによって対処される。
【0099】
ゲートウェイ52は、各入力ストリームの状態を記憶するように構成される。入力ストリームの記憶される状態は、ベースアドレス及びサイズを含む。これは、アクセラレータが入力ストリームにアクセスするために使用するメモリ1610のアドレス範囲を示す。これは、ストリーミングバッファ/ポート論理に維持される。
【0100】
入力ストリームの記憶される状態は、入力ストリームに関連するバッファにロードされたバイト数を含み得る。
【0101】
入力ストリームの記憶される状態は、入力ストリームに関連するバッファのロード状態を含み得る。ロード状態は、アクセラレータ51に転送されるデータがバッファにプリロードされているか否かの指示である。
【0102】
入力ストリームのバッファの組を管理する幾つかの手法がある。幾つかの実施形態では、各バッファのバッファアドレス及びサイズは、固定される。アクセラレータは、同じバッファから繰り返し読み出しを発行するように構成される。
【0103】
幾つかの実施形態では、バッファアドレス及びサイズは、DME 122の制御及びステータスレジスタ(CSR)に記憶される値によって決定される。CSRに記憶される値は、DME 122による関連するプリロード命令の実行前に決定される。
【0104】
幾つかの実施形態では、バッファアドレス及びサイズは、DME 122によって実行されるプリロード命令において示される。これらの指示は、プリロードプロセスの一環としてDME 122からゲートウェイ転送メモリ1610に渡される。指示は、例えば、メモリ1610にプリロードされるデータのヘッダにおいて渡すことができる。この手法は、高レベルの柔軟性を提供する。
【0105】
述べたように、ゲートウェイ転送メモリ1610は、バッファの組として実施され、1つのバッファは、1つのアクセラレータ入力ストリームに対応する。
図16に示す例では、メモリ1610は、4つのそのような仮想FIFOをサポートするように構成されるが、別の数の仮想FIFOを使用し得る。単一のPCIEリンクを飽和されるために十分な帯域幅の通信を生成するために必要なアクセラレータタイルの数が4であるため、この例では4が選択される。
【0106】
メモリ1610にロードされるデータは、ゲートウェイ52で実行されるエンジン(例えば、DME 122)によってロードされる。エンジンは、ハードウェア(例えば、FPGAにおいて)又はソフトウェア(例えば、CPUで実行されるコードとして)で実施され得る。
【0107】
ESP前に、DME 122は、次のステップについてのデータとともにデータをメモリ1610内の仮想FIFOの1つにロードする。次いで、バッファの状態は、バッファにデータがロードされていることを示すように設定される。ゲートウェイ52がアクセラレータ51から読み出し要求を受信する場合、対応するバッファがロード済み状態であるとの判断に応答して、データがアクセラレータ51に転送される。判断は、ゲートウェイ上のFPGA論理によって行われる。バッファがロード済み状態であるとの判断の代わりに、ロードが進行中であると判断される場合、バッファのロードが完了したとき、データは、バッファから転送されることになる。バッファにロードされておらず、ロード中でもないと判断される場合、データは、メモリ114から読み出されることになる。
【0108】
幾つかの場合、その後のESP前にデータの全てがメモリ1610にプリロードされるわけではない。この場合、ESPが発生し、アクセラレータ51がメモリ1610から入力ストリームのデータの読み出しを開始するとき、DME 122は、ESPに続く交換フェーズ中、アクセラレータ51に転送される入力ストリームの任意の残りのデータをプリロードする。したがって、入力ストリームの残りのデータのプリロードは、入力ストリームのデータがメモリ1610からプルされているのと同時に行われる。データは、交換フェーズ中にプリロードされている残りのデータのための余地を作るために十分に高速にメモリからプルされる。
【0109】
メモリ1610は、アクセラレータにより発行される読み出しによって空になる。特定の入力ストリームのアクセラレータからの読み出しは、アドレス順にゲートウェイ52に到着する。読み出しは、バッファのベースアドレスから開始され、バッファのアドレス範囲全体を通して続く。
【0110】
ゲートウェイ52は、読み出しを受信すると、アドレスを入力ストリームのメモリ114内のバッファアドレス範囲の組と比較する。その入力ストリームに指定された範囲内に読み出しがある場合、読み出しは、メモリ1610の入力ストリームに関連するバッファからアクセラレータ51に次の所定の数のバイト(読み出し要求において指定される)を転送することによって実行される。アドレスのオフセット部分は、無視され得、データは、FIFO様式でバッファから読み出される。
【0111】
バッファの各々は、バッファから読み出された合計データ量を示す読み出しカウントに関連付けられる。特定の入力ストリームに関するアクセラレータ読み出しが処理されるにつれて、このカウントは、増大する。カウントがバッファ全体のサイズに達したとき、バッファの状態は、バッファが空であることを示すように変更される。DME 122に次いで、バッファからのデータの読み出しが完了したことが通知される。
【0112】
図16に示す例としてのゲートウェイ転送メモリ1610は、4つの入力ストリームのデータを記憶するように構成される。アクセラレータに転送されたデータの入力ストリームが5つ以上である場合、アクセラレータは、ゲートウェイ転送メモリ1610の代わりにメモリ114からそれらの追加のストリームのデータをプルする。入力ストリームが大きすぎて、そのストリームのデータをゲートウェイ転送メモリ1610に記憶することができないと判断される場合、アクセラレータは、代わりに、メモリ114からそのストリームのデータをプルする。
【0113】
アクセラレータ51によりメモリ1610の代わりにメモリ114からストリームが読み出される場合、DME 122には、このストリームに関する命令がロードされず、このストリームでバッファがメモリ1610に割り振られない。このストリームに関する読み出しは、次いで、ゲートウェイ52により直接メモリ114に対するものであろう。
【0114】
図4に関連して論考したように、アクセラレータ51の1つ又は複数のタイル53は、ゲートウェイとデータを交換する必要がある場合、同期要求55を送信し、同期要求55は、集計され、同期論理54を介してゲートウェイ52に渡される。したがって、ゲートウェイ52は、同期肯定応答を同期論理54に送信し、同期論理54は、同期肯定応答を、同期要求を送信したタイル53に返す。
図16は、タイル53がデータをゲートウェイ内のメモリ1610からプルする場合、この同期要求/肯定応答方式に続けて生じるメッセージングを示す。
【0115】
同期肯定応答の受信に続いて、
図16に示すように、タイル53は、1つ又は複数の制御パケット1620を送信する。1つ又は複数の制御パケットは、タイル53のスーパーバイザスレッドの読み出し命令の実行に応答してタイルによって送信され得る。制御パケットは、アクセラレータ51の読み出し要求論理1640に送信される。読み出し要求ロジック1640は、PCIeコントローラであり得る。1つ又は複数の制御パケットに応答して、読み出し要求ロジック1640は、ゲートウェイ52のメモリ1610に送信される読み出し要求1650を生成するように構成される。読み出し要求1650は、DMA読み出し要求である。DMA読み出し要求1650は、PCIe読み出しであり得る。読み出し要求1650に応答して、データ1630は、メモリ1610のロジックによって読み出され、読み出し要求ロジックに送信される。読み出し要求ロジックは、データ1630を、読み出し命令を発効したタイル53に転送する。更に、これらの動作は、メモリ114からデータをプルするために実行し得る。
【0116】
図17を参照すると、
図17は、本願の実施形態による方法1700の一例を示す。方法1700は、ゲートウェイ52がプルモデルに従って動作する場合に実行されるステップを示す。これらのステップは、データが外部ストレージからゲートウェイメモリ114に転送された後に行われる。
【0117】
S1710において、DME 122は、ゲートウェイ転送メモリ1610に、データの所与のストリームをメモリ1610にプリロードするためのスペースがあるか否かを判断する。メモリ1610がデータを記憶することができる最大数のストリーム(すなわち
図16に示す例では4)を超えず、データストリームが許される最大サイズを超えない場合、スペースがあると判断される。
【0118】
スペースが利用可能である場合、S1720において、ストリームのデータは、メモリ114からメモリ1610にプリロードされる。プリロードされるストリームのデータは、複数のその後の交換フェーズ中、アクセラレータ51に転送されるデータを含み得る。
【0119】
十分な空間が利用可能でない場合、S1730において、ストリームのデータは、プリロードされずにメインゲートウェイメモリ114に残る。
【0120】
S1740において、同期要求がアクセラレータ51からゲートウェイ52において受信される。
【0121】
S1750において、ゲートウェイLSBM 118に記憶されているESPクレジットのチェックが行われる。関連するアクセラレータ及び同期グループに非ゼロ数のクレジットが利用可能であると仮定すると、方法1700は、S1760に進む。
【0122】
S1760において、ゲートウェイ51は、同期肯定応答をアクセラレータ51に送信する。
【0123】
S1770において、同期肯定応答の受信に応答して、アクセラレータ51は、データをゲートウェイ52からプルする読み出し要求を発行する。アクセラレータ51は、メインメモリ114及びゲートウェイ転送メモリ1610の少なくとも一方からデータを読み出す。アクセラレータ51は、メモリ1610から、メモリ1610にプリロードされたストリームのデータを読み出す。アクセラレータ51は、メモリ114から、メモリ1610にプリロードされなかったストリームのデータを読み出す。
【0124】
S1780において、アクセラレータがデータをメモリ1610から読み出している間、DME 122は、引き続き、アクセラレータ51によって読み出されるデータをメモリ1610にプリロードする。アクセラレータ51は、ストリームのバッファから読み出し得、DME 122は、メモリ114からのストリームの追加のデータで、バッファから読み出されたデータを上書きする。アクセラレータ51による読み出し中にプリロードされたデータは、現在の交換フェーズ中、アクセラレータ51に転送される残りデータである。
【0125】
プリロードを使用したプルモデルには、その後の事前コンパイルされた交換同期点前に、ゲートウェイ52が高速転送メモリ1610にデータを準備することが可能であり、したがってデータがアクセラレータ51によるプルにより適時に提供されるという利点がある。したがって、データをゲートウェイ52からより短い待ち時間でプルし得る。更に、高速転送メモリ1610にデータをプリロードすることは、データ転送の帯域幅を改善する。
【0126】
第3のストリーミングモデルは、簡易アクセラレータプルと呼ばれる。このストリーミングモデルでは、ホスト63がゲートウェイメモリ114に/からデータをストリーミングする。アクセラレータ51は、PCIe読み出し動作を介してゲートウェイ52からデータをプルする。この場合、ゲートウェイ52は、PPE命令を実行せず、代わりにホスト63とゲートウェイ52との間の所定のI/Oスキームのスレーブである。
【0127】
このモデルでは、ゲートウェイメモリ114は、メモリ領域として機能し、ホスト63は、その内容を制御する。データをメモリ114にロードするために、ゲートウェイ52で命令が実行されない。PPE 123は、命令を実行しておらず、依然としてESPクレジットを更新し、データが利用可能なときをアクセラレータ51が発見するためにホスト63によって与えられるプリロード動作についてDMEに命令するプロキシとして機能している。
【0128】
データのストリーミングに割り振られたゲートウェイメモリ114は、あたかもPCIe接続メモリであるかのようにホスト63によって維持され、唯一の違いは、RDMAがPCIeの代わりに使用されることである。
【0129】
簡易プルモデルでも、データは、
図16及び
図17を参照してアドバンストプルモデルについて上述したように、ゲートウェイ転送メモリ1610にプリロードされる。簡易プルモデルでは、PPE 123は、データをメモリ1610にプリロードするように命令するコマンドをホスト63及び/又はアクセラレータ51から受信する。コマンドの受信に応答して、PPE 123は、DME 122に、データをメモリ1610にプリロードさせる。したがって、PPE 123は、ホスト63及び/又はアクセラレータ51から到来したプリロードコマンドのプロキシとして作用する。
【0130】
更に、簡易プルモデルは、簡易プルモデルではPPE 123がホスト又は他の外部ストレージからデータを検索する命令を実行しないという点において、アドバンストアクセラレータプルモデルと異なる。
【0131】
ゲートウェイ52におけるデータストリーミング動作の実行は、ストリーミングエンジン124によって実行され、ストリーミングエンジン124は、動作モデルに応じて、ゲートウェイ52の命令セットの全てを実行するか(アドバンストプッシュモデル)、ゲートウェイ52の命令セットのサブセットを実行するか(アドバンストプルモデル)、又はゲートウェイ52の命令セットの何れも実行しない(簡易プルモデル)。簡易プルモデルでは、ゲートウェイ52は、ホスト63又はアクセラレータ51からのコマンドに応答してストリーミング動作を実行する。
【0132】
ゲートウェイ52が命令セットの全て又は幾つかを実行する場合、命令は、実行可能イメージとしてゲートウェイメモリ114にロードされる。ストリーミングエンジン124の実行可能イメージの生成は、コンパイラがアクセラレータ51及びゲートウェイ52で実行される関連するコードを生成する特定のアクセラレータ/ゲートウェイコンパイラ環境と統合される。
【0133】
ストリーミングエンジン124は、一緒に機能して、アクセラレータにデータI/Oが性能最適に供給されることを保証するハードウェア及びソフトウェア構成要素の組を含むものと見ることができる。ゲートウェイ52又はストリーミングエンジン124の動作モードに応じて、ストリーミングエンジン124は、データを「ジャストインタイム」様式において、すなわち次のアクセラレータ計算ステップへの条件付きエントリ点を表す計画されたデータ交換フェーズにおいてプッシュし得るか、又はアクセラレータ51が同じ「ジャストインタイム」様式でプルするためにゲートウェイメモリ114及び/又はメモリ1610においてデータを利用可能にし得る。データ交換フェーズ前にゲートウェイメモリ114において関連データを準備することは、ゲートウェイストリーミングエンジン124によって実行される予めスケジュールされたデータストリーミング命令を介して行われる。プッシュモデルは、データ交換フェーズ中の待ち時間を短縮するために、ゲートウェイメモリ114からゲートウェイ転送メモリ127(例えば、SRAM)にデータを更に予めフェッチすることができる。データをゲートウェイメモリ114に「ジャストインタイム」で運ぶ概念は、ゲートウェイメモリ114が、アクセラレータ計算アルゴリズムが必要とする全てのデータを保持するために十分に大きくない場合に有用である。
【0134】
PPEエンジンは、所与のESPに関する事前ワーク(PRW)及び事後ワーク(POW)命令の組にナビゲートするためにWDを使用する。「事前」及び「事後」という用語は、動作が、アクセラレータ又は他のターゲットとのWDのデータ交換フェーズ前に行われるか又は後に行われるかを示す。PRW命令は、主な担当として又は1つ若しくは複数のDMOVプッシュ命令への準備として、データをホスト63から(例えば、ホスト63、リモートストレージ151又は更なるゲートウェイ128から)ゲートウェイメモリ114に運ぶことを有する。「事後ワーク」は、その主な担当として、GWメモリ114からデータを移動する(例えば、ホスト63又はリモートストレージ151に)移すことを有する。PPE命令は、PPE固有のイメージセクションに配置される。
【0135】
DME 122は、上述した「ゲートウェイプッシュ」動作モデルにおいてゲートウェイからアクセラレータにデータを転送するためにアクティブであるとともに、このプリロード最適化がイネーブルされる場合、メモリ1610 VFIFOをプリロードするために両方のプルモデルでもアクティブである。プッシュモデルでは、DME 122は、所与のESPに関するデータムーバ(DMOV)命令の組にナビゲートするためにWDを使用する。DMOV命令は、データをアクセラレータに向かってプッシュする。WD及びDME関連命令は、DME固有のイメージセクションに配置される。ゲートウェイ52の物理的DDRメモリ内のイメージを源とするDME命令は、DMOV命令の一環としてDMEのDMA機によって実行されるDMA記述子リストに変換される。DME 122は、アクセラレータ51との各バッチデータ交換のサイズの完全制御を可能にする停止基準によって制御される幾つかの計画されたデータ交換のためにDMA記述子を準備する。
【0136】
DME 122は、アクセラレータメモリに対してデータをストリーミングするように設計された高水準プログラマブルマルチチャネルDMA装置を使用する。DME 122は、負荷分散を使用して、1つ又は2つの高速データバスを経由した単一のアクセラレータ51へのデータのストリーミングをサポートする。アクセラレータ51がデータロードシーケンスに依存しない場合、負荷分散は、ローカルDME決定によった達成され、交換可能イメージで見られる情報によって制御されない。
【0137】
WDは、WDの全ての事前ワーク関連命令及びWDの終了基準を有する全ての事後ワーク命令が完了した場合、「実行準備ができている」(又は完全に準備された)と見なされる。その場合にのみ、WDのESPクレジットは、LSBM 118内のESPクレジットの組に追加される。
【0138】
WDは、「交換終了」基準が満たされた場合、「完了した」と見なされる。これは、全てのデプロイメント(deployment)動作(DMOV)が完了し、アクセラレータ51から受信した全ての出力データが、予期された出力サイズに等しいと判断されたときである。予期される出力サイズは、WDにおいて示される。
【0139】
ゲートウェイ52は、WDが完全に準備されたとき、PPE 123がDME 122にシグナリングする方法を必要とし、これは、ESPクレジットをDME 122に追加することによって行われる(これをWDクレジット又は交換クレジットとも同様に呼ぶことができる)。DME 122前に、幾つかのWDを実行中のPPE 123エンジンは、幾つかのESPクレジットを追加することが許される。これは、各ESPにおいてPPEワークの完了をアクセラレータが待つ必要がないようにする。最適には、アクセラレータをストールさせずにバリアを通過することができるように、各ESP遷移において、ESPクレジットが既に利用可能であるべきである。
【0140】
1つのクレジットは、アクセラレータ52との第1のデータ交換で全てのデータを転送するDME 122の能力を表す。PPE 123は、PPEが次のシーケンシャルESPへのデータプリフェッチを完了(すなわち事前ワークを完了)するたびに、新しいクレジットを追加することによってESPクレジットをインクリメントする。PPE 123による外部ノードからのデータプリロードがESPに間に合うように完了しない場合、DME 122は、そのESPクレジットがゼロであることを発見することになり、PPE 123がクレジットカウントをインクリメントするまで、実行がストールする。データ欠損に起因して1つのアクセラレータ51をストールさせることは、事実上、同期して(すなわち同じバリア同期ネットワークを共有して)実行中の協働しているアクセラレータの組全体をストールさせることになる。
【0141】
各DMOV命令は、DMA動作としてハードウェア内でDME 122によって実行される。これらのDMOV命令は、ゲートウェイプッシュモデルが適用される場合に実行される。DMOV命令は、参照されたデータバッファ(ゲートウェイメモリ114内)に存在するデータをその宛先に移動させる。それは、通常、アクセラレータ51のメモリであるが、他の宛先も同様にサポートされる。
【0142】
データのストリーミングは、ESP毎にバッチされるため、DME 122は、ゲートウェイメモリ114からの必要とされる数のバッファが転送されるとき、データ転送を停止することになる。ESPバッチ毎に交換されるバイト数は、1)ストリーミングエンジン124のプッシュ動作、及び、2)ゲートウェイメモリ114への書き込みの両方のパラメータフィールドによってWDにおいて示される。プッシュするバイト数は、同じWDにスケジュールされた全てのバッファ内のバイト数に等しいと予期される。不一致がある場合、これは、例外状況に繋がる。
【0143】
DME 122は、メモリ管理ユニット(MMU)のサポートなしでメモリ114からデータを検索するために物理メモリアドレスを使用するように構成される。
【0144】
ゲートウェイ52へのデュアルバス接続を有するアクセラレータ51の場合、DMOVには、データを何れのバスに向けるべきかを示す情報がない。DME 122は、2つのバスを経由して送信されるトラフィックのバランスを取るようにバスの選択を制御する。
【0145】
DMOVは、ゲートウェイメモリ114内の予め初期化されたデータバッファにリンクし得、したがって、この場合、関連する事前ワーク命令がバッファを埋める必要がない。
【0146】
代替的に、単一のDMOV(メモリ114内に単一のメモリデータバッファを有する)は、データ収集動作で事前ワーク命令の組にリンクし得る。そのような参照された各事前ワーク命令は、データを、特定のソース及びロケーションから、異なるオフセットにある同じデータバッファに運び、したがって収集動作を形成する。事前ワーク命令は、データを準備する対象であるDMOVと同じWDにおいてスケジュールされる。単一の事前ワーク動作は、幾つかのDMOV動作によってプッシュされるデータを提供し得る。
【0147】
事前/事後ワークエンジン命令セットは、ソフトウェアで実施される事前/事後ワークエンジンによって実行される。所与のESPに関連して「事前ワーク」を実行する必要があり、所与のESPに関連して「事後ワーク」を実行する必要がある。
【0148】
PPEによる命令の自律実行は、「ゲートウェイプッシュ」及び「アドバンストアクセラレータプル」動作モデルで実施され得る。PPE 123は、ゲートウェイ外部メモリ/ストレージ114とデータをやりとりするために、RDMA、NFS、NVMoF、iSCSI又は任意の他のサポートされるファイルアクセスプロトコルを使用する。ストリーミング動作の実行は、実行可能イメージの「事後/事前ワークセクション」で見られるPPE命令によって直接制御される。PPE 123は、イメージファイルから命令を取り、これをローカル/リモートストレージ動作に変換するソフトウェアベースのストリーミングプロセッサとして見ることができる。これらの転送は、ゲートウェイメモリ114と外部メモリ/ストレージとの間である。
【0149】
PPE 123は、DME 122と並列に実行し、DME 122はPPE 123の結果に依存するため、PPE 123は、DME 122によって実行されるデータムーバ動作がスケジュールされる前にワークを完了させる必要がある。これは、ワーク記述子を使用して、同じデータ交換同期点に属するDME 122及びPPE 123を一緒にグループ化することによって実行可能イメージにおいて対処される。
【0150】
各PRW命令は、データを外部ストレージから検索し、PRW命令が指す予めコンパイルされたデータバッファ(ゲートウェイメモリ114内)にデータを記憶する。PRW命令は、データソースに応じて様々なバリアント(variant)で到来する。これらのバリアントは、外部I/O動作に対処する異なるパラメータセットを必要とする。これらの詳細は、実行開始前に、ゲートウェイ制御チャネルを介して制御プレーンによってセットアップされた参照されるI/Oパラメータにおいて調べられる。
【0151】
コンパイラは、PRW命令によって参照されるバッファにメモリ114の領域を予め割り当てる。これらのバッファは、PRW命令が実行されるとき、外部ストレージから検索されるデータの記憶に使用される。
【0152】
ESPクレジットの組は、このWDにスケジュールされた全ての事前ワーク関連命令が完了したとき及び前の全てのWDにスケジュールされた全ての事前ワーク関連命令も完了し、このWDに終了基準を有する全ての事後ワーク関連命令も完了した場合のみ、各WDについてPPE 123によってインクリメントされる。
【0153】
PRW命令は、データのソース/宛先に応じて様々なバリアントで到来する。
【0154】
PRW命令の実行順序は、実行可能イメージ内で表現される順序である。しかしながら、PRW命令のより小さいバッチは、並列で実行されて、リモートロケーションからのI/O性能を最適化する。1つ又は複数のWDからの1つ又は複数のPRW命令は、データが必要とされる場合、WDよりも先に実行される。これは、WDが消費するデータ「パイプライン」を埋めるために必要とされる。ゲートウェイ52は、事前ワークのための並列実行エンジンを有し、並列実行エンジンがデータ「パイプライン」を埋めるこの事前ワークを行うことができるようにする。
【0155】
PRW命令の完了順序は、実行可能イメージ内の命令の順序と同じではないことがある。しかしながら、データは、ゲートウェイメモリ114内でシーケンス要件なしで終わるため、そのような順序通りではない完了は、問題ではない。アクセラレータ51へのこのデータのデプロイメントシーケンスが到来したとき、DME 122は、命令順序が実行可能イメージによって表現された順序であることを保証する。
【0156】
PRW命令は、常に終了基準を有する。PRW命令は、供給されたデータが、アクセラレータ51によって必要となる所与のWDよりも先の期限時間までに完了するようにGW52によってスケジュールされる。終了基準は、PRW命令が含まれるWDによって表される。データをWDに間に合うように供給することができない場合、データ交換フェーズは、データが利用できるようになるまで遅延する。これは、事実上、データが利用可能になるまでアクセラレータ51の計算フェーズをストールさせる。そのようなストールの発生は、カウントされ、そのような監視からのフィードバックは、ゲートウェイ及び/又はコンパイラの最適化に役立つ。
【0157】
POW命令は、所与のESPに関する「事後ワーク」を行う。その主な機能は、データをゲートウェイメモリ114から外部ストレージ(例えば、ホスト63又はリモートストレージ151)に移すことである。ゲートウェイメモリ114に記憶されるデータは、アクセラレータ51から受信されたデータである。POW命令は、データの宛先に応じて様々なバリアントで到来する。これらのバリアントは、外部I/O動作に対応する異なるパラメータセットを必要とする。
【0158】
POW命令を動作するメモリ114内のデータバッファにリンクすることは、コンパイラ次第である。
【0159】
事後ワークの場合、結果は、アクセラレータ51に通信されず、代わりにホスト63、リモートストレージ151ストレージ又はゲートウェイメモリ114に記憶されるため、命令は、順序通りに実行されなくてよく、純粋なデータの書き込み順序に関するセマンティクスは、暗示されない。
【0160】
POW命令は、常に必須開始基準を有し、必須開始基準は、命令を実行し得る最速時点を表す。POW命令は、必須開始点よりも後に実行することができるが、必須開始点よりも先に実行することができない。したがって、POW命令は、所与のWDでの開始のためにトリガーされる。このトリガーWDは、POW命令が含まれるWDとして表される。前のWDの完了時、アクセラレータ51は、POW命令のバッファへの書き込みを終えていなければならない。
【0161】
異なるタイプのPOW命令がある。第1のタイプのPOW命令は、データをローカルGWメモリ114からリモートストレージ151に移すことに関わる。これは、制御チャネルを介して送信される命令(例えば、記述子119)によりホスト63によって構成することができる。第2のタイプのPOW命令は、データをローカルゲートウェイメモリ114からホスト63に移すことに関わる。これも、制御チャネルを介して送信される命令によりホスト63によって構成することができる。第3のタイプのPOW命令は、ゲートウェイメモリ114に記憶されたデータの操作に関わる。
【0162】
POW命令は、POW命令のパラメータによって表される任意の終了基準を有することもできる。これは、以下の用途を有し得る。第1に、この任意の終了基準は、事前ワーク命令が、一部をなすWDによって暗黙的に与えられる終了基準を有するのとほぼ同じように、POW命令が特定のWDのためにデータを準備できるようにし得る。第2に、ゲートウェイコンパイラが、外部ノードにエクスポートするためにPOW命令によって使用される「出力」バッファを再使用している場合、保存されていないデータを依然として保持しているバッファをアクセラレータ51による上書きから保護することが重要である。この場合、プログラムは、全てのPOWがバッファのフラッシュを完了し、それにより、再使用及びそれ以上のアクセラレータ51の出力動作のためにバッファを自由にするまで、いわゆる名前付き実行バリア(NEB)命令をDME命令ストリームに停止点として配置することによりバッファを保護することができる。これらのNEB命令について後に説明する。
【0163】
POW命令が終了基準を満たすことができない場合、PPE 123は、ローカルDME 122を一時停止し、したがって、全てのアクセラレータは、同じ同期レベルに同期される。PPE 123は、POW命令を一時停止し、終了基準を見つける。同じ停止基準を有するか、異なる停止基準を有するか又は停止基準を有さない幾つかのPOW命令があり得る。
【0164】
上述したように、コンパイラは、停止/通過「実行バリア」を所与の実行時点に配置し得る。(NEB)命令は、完了時(例えば、POW命令)に名前付き「実行バリア」完了済み(NEB)にシグナリングするように命令されたオブジェクトからの完了リポート数を収集するNEBCオブジェクトを参照する。
【0165】
NEB命令は、常にWDに属し、すなわちWDによってエンベロープ(envelope)される。それは、3つ全ての命令ストリーム(DME、PPE_PRE及びPPE_POST)に挿入することができる。
【0166】
「停止」状態は、WD内の命令の実行に進まないようにするDME/PPEへの停止信号を表す。他の可能な状態は、「通過」であり、DME/PPEがWD内の命令の実行に進めるようにし、したがってNEB命令を通過する。この終了基準にリンクされた全ての命令が、NEBCオブジェクト内の「completions_seen」カウンタをインクリメントすることによって完了を報告した場合、状態は、「停止」から「通過」に変わる。
【0167】
「実行バリア」の概念は、バルク同期並列(BSP)メモリ一貫性モデルでバリア制御に使用され得るESP同期の従来のもの(primitive)と混同されるべきではない。幾つかの例では、NEB命令挿入点は、アクセラレータプログラムの特定のESPと相関付けられるが、そのような直接的要件はない。NEBは、全ての種類の同期の一般停止点として使用することができる。
【0168】
NEB命令がDME命令ストリームの開始点においてWDに挿入されるNEB命令の第1の使用例を与えることができる。NEBは、DME命令を実行する前提条件を表す。前提条件は、POW命令を介して外部ノード(例えば、ホスト63又はリモートストレージ151)へのアクセラレータ出力バッファのフラッシュ(又はリングバッファ充填閾値)を制御するために使用される。ESPクレジットの組は、NEB前提条件が満たされ、PRW命令が完了するまでインクリメントされない。これは、利用可能なESPクレジットがない場合、WDがDMEによりキャッシュすることができるが、それ以上実行できないことを意味する。PPE 122がPRW命令の実行を完了した場合、PPE 122は、まず、WD内の全てのNEB命令が「通過」状態であるか否かをチェックする。「通過」状態であり、クレジットを与えるための他の全ての前提条件が満たされる場合、クレジットは、インクリメントされる。DME実行エンジンは、NEB命令が停止状態であることが分かる場合、例外を生じさせる。この例外は、「停止」状態であるにも関わらず、PPEがクレジットを誤って追加したこと又はDME/PPE実装に何らかの発生条件があることを示す。
【0169】
NEB命令が、ゲートウェイ52からホスト63へのデータエクスポートをフロー制御するために事後ワーク命令ストリームに挿入されるNEB命令の第2の使用例を与えることができる。この場合、ホスト63は、NEBCの状態を制御する。このモデルでは、ホストは、PPE 123が、データをホスト63に転送し、したがってNEB命令を通過させるPOW命令の実行を許すか否かを制御する。これは、ホストが、「リンクされた」NEBCオブジェクトの状態に更新を提供して、状態を「通過」状態に設定することによって制御される。ホストは、リンクされた全てのPOW命令が完了した場合のみ、「通過」状態を設定することが許される。
【0170】
終了基準は、常に、命令ストリーム内でNEBが「次に発生」するときに配置される。「次の発生」は、POWの実行に関連して理解されるべきである。
【0171】
NEB命令が、ホスト63から供給されるデータインポートをフロー制御するために事前ワーク命令ストリームに挿入されるNEB命令の第3の使用例を与えることができる。この場合、ホスト63は、NEBCの状態を制御している。このモデルでは、ホストは、PPE 123が、ホスト63又はリモートストレージ151からメモリ114にデータを転送し、したがってNEB命令を通過させるPRW命令の実行を許すか否かを制御する。これは、ホスト63が、「リンクされた」NEBCオブジェクトの状態に更新を提供して、状態を「通過」状態に設定することによって制御される。
【0172】
NEBCオブジェクトは、常に、プログラム実行の開始時に停止状態で初期化される。NEB後に次の命令を開始する際にも同じ再初期化が実行される。状態を「停止」に設定する場合、「completions_seen」も同様にゼロに設定される。
【0173】
DMEの場合、DME 122は、それ自体、NEBが見られる実行に依然として至っていないことがあり、NEB命令が見られるときまでに、リンクされた全ての命令が完了している場合、「completions_seen」は、「expected_completions」と同一であり、状態は、「通過」として観測され、したがって待つことなく実行が続く。他の場合、DME 122は、リンクされた全ての命令が完了するまで待つ。
【0174】
ゲートウェイ52には、アクセラレータ51毎に1つのストリーミングエンジン124があり、各ストリーミングエンジン124は、説明した種々のモードで実行し得る。
【0175】
ファブリックにわたり提供される幾つかのストリーミングエンジンインスタンスがある。アクセラレータ51毎に1つのストリーミングエンジン124があり、各ストリーミングエンジン124は、イメージを実行している。各ストリーミングエンジン124は、1つ又は複数の高速バス(例えば、PCIe Gen4)を介してアクセラレータ51にデータを供給する。
【0176】
ストリーミングエンジン124を使用して実施し得る複数の異なる可能なストリーミングフローがある。例えば、第1の可能なストリーミングフローでは、ゲートウェイ52は、アクセラレータ51へのデータのストリーミングを可能にし得る。データのこのストリーミングは、データを提供するように構成された更なるアクセラレータによって開始し得る。代替的に、データのストリーミングは、ゲートウェイ52のDME 122によって開始しでき、DME 122は、命令を実行して、データをメモリ114からアクセラレータ51に転送する。そのようなデータは、ホスト63又はリモートストレージ151からゲートウェイ52において受信されていた可能性がある。
【0177】
第2の可能なストリーミングフローでは、ゲートウェイ52は、リモートアクセラレータへのデータのストリーミングを可能にし得る。アクセラレータ51は、グローバルアドレス空間においてリモートアクセラレータを識別するアドレスを有するパケットをゲートウェイ52に提供し得る。ゲートウェイ52は、このアドレスを使用して、リモートアクセラレータに送るためにデータパケットを更なるゲートウェイ128に転送するように構成される。
【0178】
第3の可能なストリーミングフローでは、ゲートウェイ52は、ローカルゲートウェイメモリ114へのデータのストリーミングを可能にし得る。これは、ローカルゲートウェイオフロードの結果であり得る。メモリ114へのデータの転送は、ESPにおけるアクセラレータ51からであり得る。メモリ114へのデータの転送は、ローカルRDMA又はホストRDMAの結果であり得る。データは、ホスト63、NAS151又は更なるゲートウェイ128等の外部ストレージからメモリ114に転送し得る。そのような外部ストレージからメモリ114へのデータの転送は、PPE 123によって実行される事前ワークの一環である。
【0179】
第4の可能なストリーミングフローでは、ゲートウェイ52は、更なるゲートウェイ128のメモリへのデータのストリーミングを可能にし得る。データ転送は、ゲートウェイ52自体によって開始し得る。データ転送は、アクセラレータ51によって開始し得、アクセラレータ51は、グローバルアドレス空間において更なるゲートウェイ128を識別するアドレスを有するパケットをゲートウェイ52に提供する。更なるゲートウェイ128へのデータの転送は、更なるゲートウェイ128によって実行される、ゲートウェイメモリ114からデータをプルする事前ワーク命令の結果であり得る。
【0180】
第5の可能なストリーミングフローでは、ゲートウェイ52は、リモートストレージ151へのデータのストリーミングを可能にし得る。データは、RDMA、ネットワークファイルシステム(NFS)プロトコル、不揮発性メモリオーバファブリック(Non-Volatile Memory over Fabrics)(NVMoF)及びインターネット小型コンピュータシステムインターフェース(internet Small Computer System Interface)(iSCSI)プロトコルの1つ又は複数によってゲートウェイメモリ114からリモートストレージ151に転送される。データ転送は、ゲートウェイによって開始される。リモートストレージ151へのこの転送は、PPE 123による事後ワーク命令の実行から生じ得る。
【0181】
第6の可能なストリーミングフローでは、ゲートウェイ52は、ホスト63へのデータのストリーミングを可能にし得る。データは、ゲートウェイメモリ114からピン留めされたホストメモリ又はRDMAアクセス可能なホストメモリの何れかに転送される。ホスト63へのこの転送は、PPE 123による事後ワーク命令の実行から生じ得る。
【0182】
第7の可能なストリーミングフローでは、ゲートウェイ52は、1つ又は複数のリモートNFSサーバからのデータのストリーミングを可能にし得る。これらのサーバからのデータ転送は、ゲートウェイ52によって送信される要求に応答して行われ得る。
【0183】
先に述べたように、AI及びHPCの並列プログラミングモデルは、通常、3フェーズインタラクティブ実行モデル、すなわち、計算、バリア及び交換(データ転送、コレクティブ及びブロードキャスト)に従う。含意されるのは、アクセラレータが、通常、予めコンパイルされたデータ交換同期点及び/又はアクセラレータ要求時に実行されるコレクティブにおいてアクセラレータとデータ転送を行う必要があることである。要求は、アクセラレータ51が利用可能なデータの処理を終えた同期点を表し、ここで、いくらかのデータのエクスポートを要求するとともに、いくらかのデータのインポートを要求する。ゲートウェイ52は、アクセラレータが、肯定応答されたアクセラレータ要求を交換した直後にデータ移動をスケジュールする。
【0184】
ゲートウェイストリーミングエンジン124は、データ移動を最適化し、したがって、データバッファ「オブジェクト」は、データ保持に重要な役割を果たす。実行中、ポインタをバッファ(ゲートウェイメモリ114内)に渡すことにより、システムは、動作中、ゼロコピーセマンティクスを実施する。データバッファは、ロードされたイメージで予め初期化されているか又はPPE 123によって充填される。両方の事例において、メモリ114内のバッファへの参照は、ESPでのアクセラレータ51へのデータ転送のためにDME 122によって使用され得る。
【0185】
データが既に準備され、ロードされた実行可能イメージに埋め込まれている場合等、アクセラレータデータを準備するために事前ワークが必要ない場合があり得る。そのような場合、PPE 123は、ESPクレジットをDME 122にポストすることも担当する。
【0186】
アクセラレータ51に向かうデータ移動がない(例えば、アクセラレータ出力データのみ)ESPが存在することもでき、そのような場合、PPE 123は、ESPクレジットをDME 122にポストすることも担当する。この場合、PPE 123は、その後のESP中にアクセラレータ51に向かうデータ移動がないとの判断に応答して、その後のESPのためにESPクレジットをインクリメントする。
【0187】
ESPクレジットを追加するのは、常にPPE 123である。
【0188】
事前ワーク命令のみの場合:WDの事前ワークが、先に発行されたWD内の事前ワークと比較して時間的に先に完了する場合、設計は、事前ワーク完了情報をキューに入れ、前の全てのWDが完了したとき、前の全てのWDの処理後、ESPクレジットの数を増大させる必要がある。
【0189】
アクセラレータデータインポート(すなわちゲートウェイ52からアクセラレータ51へのデータ転送)の場合、WDは、交換中、両方向(すなわちアクセラレータ51とゲートウェイ52との間)で転送されるバイト数を記述する。プッシュモデルでのアクセラレータ51は、編集の結果として同じ情報を有し、したがってこの交換で予期された全てのデータが受信されたときを知り、全てのデータが受信された直後、計算フェーズを開始する。プルモデルでは、アクセラレータ51は、ゲートウェイ52からのデータの読み出しを停止することにより、交換が終わるときを制御する。
【0190】
アクセラレータデータエクスポートの場合:アクセラレータ51は、コンパイルされたコードから、所与のESPについてゲートウェイ52に送信されるデータ量を知り、ゲートウェイ52は、この情報をWDから読み出すことによってどの程度が予期されるかを知る。
【0191】
ゲートウェイ52は、アクセラレータ51から予期される厳密な数のバイトを受信すると、次のWDの実行に移る。次のWDを実行するにあたり、ゲートウェイ52は、ゲートウェイメモリ114内のデータに対して、ローカル動作を含む事後ワークを実行し得る。追加又は代替として、ゲートウェイ52は、データをその最終宛先に転送する事後ワークを実行し得る。代替として、ゲートウェイ52は、事後ワークを実行しなくてもよい。例えば、データをゲートウェイメモリ114に留まらせ、メモリ114が後のリードバックのためにオフアクセラレータデータキャッシュとして機能できるようにし得る。次のWDを実行するにあたり、ゲートウェイ52は、次のESP前に完了する必要がある事前ワークを実行し得る。追加又は代替として、ゲートウェイ52は、次のESP後に実行されるDMOV命令を実行し得る。利用可能なESPクレジットがある場合、DMOV命令は、ESP前にゲートウェイ転送メモリ127にデータをプリロードするために使用される。ESPクレジットがない場合、DME 122は、ESPクレジットを待ち、ESPクレジットが利用可能になったときにプリロードを実行する。
【0192】
PPE命令、すなわち、事後ワーク(POW)及び事前ワーク(PRW)命令の両方が、ストレージノードで既に利用可能であることが分かっている静的データについてリモートストレージ114をターゲットとしている場合、ゲートウェイがデータへの直接アクセスするためのストレージプロトコルをサポートする限り、そのノードとのデータ同期の必要はない。
【0193】
ホスト63のメモリは、ゲートウェイ52及びアクセラレータ51に転送されるデータ量よりも小さく、したがって、ホスト63は、データをメモリに「1つずつ」運ぶ必要がある。この「1つずつ」の性質に起因して、ゲートウェイ52とホスト63との間には、ゲートウェイ52開始のRDMA読み出し(ゲートウェイデータインポート)にいつデータが利用可能になるかを制御する同期メカニズムが必要とされる。同様に、ゲートウェイ52開始のRDMA書き込み(すなわちゲートウェイデータエクスポート)の場合でも、同様の同期が必要である。トータルAI設備の課題は、ゲートウェイ/アクセラレータ内外への連続したデータストリーミングを有することであり、したがって、そのような同期メカニズムは、AI性能にとって極めて重要である。システムは、大きいAIファブリックにスケーリングするために、このためのオーバーヘッドが最小である良好に設計された解決策を必要とする。
【0194】
ストリーミングエンジン123は、ゲートウェイとホストとの間でデータを移動させる幾つかの動作モードを有する。
【0195】
第1の動作モードでは、ストリーミングエンジン124は、ホスト63からのコマンド下でホスト63のスレーブとして実行される。第2の動作モードでは、ストリーミングエンジン124は、そのコードメモリに記憶された予めコンパイルされた命令に基づいて実行される。
【0196】
第1の動作モードでは、ストリーミングエンジン124は、ホスト63のスレーブとして動作し、ホスト63の制御下において、データをメモリ114に記憶し、アクセラレータ51に送るために上記データをメモリ114から検索する動作を実行する。
【0197】
第2の動作モードでは、ストリーミングエンジン124は、アクセラレータ及びゲートウェイで構成された完全なシステムのコードの生成に使用される、コンパイラから導出された予めコンパイルされた実行可能ファイルに依存して、ホスト63又はリモートストレージ151からデータをプリフェッチする。コンパイラは、アクセラレータ51に送られるデータをフェッチするコードをゲートウェイ52に生成するために使用され、アクセラレータ51は、データを処理し、ホスト63、ゲートウェイ52及びアクセラレータ51は、互いに同期して動作することが可能である。ゲートウェイ52のファイルは、アクセラレータ51が必要とするデータを予期し、それをメモリ114に記憶することにより、関連する計算フェーズ前にデプロイのためにそのデータを準備する。ゲートウェイ52は、コンパイラによって生成されたコードに依存して、適切な時間に転送するためにデータを準備する。DME 122は、アクセラレータ51からの同期要求56に応答して、アクセラレータ51にとって厳密な正しい時間に待ち時間を最適化した様式でアクセラレータ51にそのデータを転送する。DME 122は、待ち時間を最適化した発送のためにアクセラレータ51の近傍に配置される。
【0198】
第3の動作モードでは、アクセラレータ51は、次のN個のバリア前に、対応するN個のバリアについてメモリ114からアクセラレータ51への転送のために何れのデータを準備すべきかをゲートウェイ52に通知する。この動作モードでは、アクセラレータコンパイラは、将来のI/O動作を予見し、したがってゲートウェイ52がデータ発送に適切な時間を有するようにそのようなコマンドをゲートウェイ52にスケジュールすることができる。
【0199】
コンパイラは、アクセラレータ51によって実行されるコンピュータコード命令の組を生成する。これらの組のコンピュータコード命令は、実行可能イメージと呼ぶことができる。幾つかの実施形態(例えば、上述した第2の動作モード)では、コンパイラは、ゲートウェイ52によって実行される関連する組のストリーミングエンジンデータ移動/処理コマンドを生成することもできる。
【0200】
コンパイラは、ストリーミングエンジン毎に1つの実行可能イメージを生成する。実行可能イメージは、アクセラレータから見られるようにフラットで連蔵した(contiguous)XPU仮想アドレス(XVA)空間を参照する。このXVA空間は、内部アクセラレータメモリ及び同じXVA空間へのメモリ管理ユニット(MMU)マッピングを介してマッピングされる「ストリーミングエンジンサンドボックス」メモリをカバーする。実行イメージは、ストリーミングエンジン122がアクセス可能である、必要とされるホストメモリをカバーする「ホストサンドボックス」仮想アドレス(HSVA)空間も参照する。このHSVA空間は、GW動作モデル、すなわち、「GWプッシュモデル」及び「アドバンストXPUプルモデル」において関連する。
【0201】
これらの2つの仮想アドレス空間(XVA及びHSVA)内では、コンパイラは、ストリーミングエンジン122、アクセラレータ51及びホスト63が必要とするバッファリソース及びアドレス可能要素の存在の定義を担当する。
【0202】
コンパイラは、適切であるように見え、限られたゲートウェイメモリ114に起因して必要になるとき、WDの反復間及びシーケンス間でのメモリ114内のゲートウェイバッファの再使用の定義も担当する。バッファ再使用最適化は、十分なメモリがゲートウェイ52に割り当てられる限り必要ない。
【0203】
2つ以上のアクセラレータと通信するように構成されたゲートウェイ52の場合、現在、あるアクセラレータが、他のアクセラレータに割り当てられたストリーミングエンジンサンドボックスにアクセスすることは可能ではない。これは、各アクセラレータ又はアクセラレータサポートチップ内部のMMUセットアップによって強いられる。異なるアクセラレータのXVA空間は、物理的ゲートウェイメモリと重複しない。ストリーミングエンジンは、別個の「XPUサンドボックス」で実行され、全てのアクセスは、それ自体のサンドボックス内に留まるように実行時に強いられる。アクセラレータのオンボードMMUに起因して、これらのストリーミングエンジン間で共有される共通メモリ領域を構築することが可能であり得る。
【0204】
図7に示すアクセラレータへのデータ転送を再び参照すると、幾つかの例では、ゲートウェイ52は、データをホスト63又はリモートストレージ151から受信し、アクセラレータ51への転送のために高速ゲートウェイ転送メモリ127に提供する前にメモリ114に記憶する。DME 122は、DME命令に依存して、メモリ114から高速ゲートウェイ転送メモリ127にプリロードする。ゲートウェイ転送メモリ127の内容は、ハンドシェーク要求の完了に応答してアクセラレータ51に転送される。ゲートウェイ転送メモリ127へのこのプリロードは、上述したプッシュモデルで使用される。同様に、プルモデルでも、ゲートウェイ転送メモリ1610へのプリロードが実行される。幾つかの例では、ゲートウェイ転送メモリ127/1610の何れか又は両方へのプリロードは、ESPクレジットの数がゼロよりも大きい場合のみ実行される。
【0205】
図14を参照すると、
図14は、データの準備、ゲートウェイ52とアクセラレータ51との間でのデータの交換及びこのデータの処理がどのように関連するかを示す。準備段階及びデプロイ段階は、ゲートウェイ52によって実行される一方、計算段階は、アクセラレータ51によって実行される。データは、関連する計算フェーズ前にゲートウェイ52によって準備される。データは、アクセラレータ51の可能な限り近くに記憶される。アクセラレータ51がデータを受け入れることが可能であり、同期要求56をゲートウェイ52に送信することによってそれを示す場合、ゲートウェイ52は、外部に依存することなく、アクセラレータ51にリンクされたポートの全容量を使用してデータをデプロイする。デプロイされたデータがアクセラレータ51によって処理されているとき、ゲートウェイ52は、デプロイするデータの次のフェーズを準備する。エンジンは、利用可能な全てのゲートウェイデータセンタポートにわたりその動作をスケーリングする。
【0206】
ゲートウェイ52は、データをホスト63又はリモートストレージ151から受信し、追加のゲートウェイによって必要とされるデータの記憶及び増強を実行することが可能である。このデータは、追加のゲートウェイに転送され得る。追加のゲートウェイに転送されたデータは、次いで、それらの追加のゲートウェイに関連するアクセラレータに提供され得る。これは、ボトルネックの回避に有用であり得る。例えば、各ゲートウェイが独立してリモートストレージ151からデータを検索し、したがってリモートストレージ151へのアクセスにおいてボトルネックを生じさせる代わりに、あるゲートウェイ52は、データをリモートストレージ151から検索し、上記データを複数のゲートウェイに提供し得る。これは、リモートストレージ151にアクセスするときのボトルネック問題に対処し得る。
【0207】
ゲートウェイ52がデータをホスト63又はリモートストレージ151から受信すると、このデータをアクセラレータ51に提供する前に、ゲートウェイ52は、データを処理する。この処理は、ストリーミングエンジン124によって実行され得る。処理は、データ増強(ノイズ注入)、圧縮解除、(例えば、JPEGフォーマットイメージ及びH264フォーマットビデオ等のイメージ及びビデオデータの)デコードの1つ又は複数を含み得る。この処理は、上述した簡易アクセラレータプルモデルでは実行されない。
【0208】
メモリの使用を最小にするために、データは、ゲートウェイ52にロードされるとき、圧縮され、アクセラレータ51に送られる前の可能な限り遅い時間に圧縮解除される。ゲートウェイ52は、待ち時間最適化されたハードウェア圧縮解除エンジン(図示せず)を特定のタイプの圧縮に提供し得る。更に、圧縮解除は、ゲートウェイソフトウェアで実施されて、拡張サポートを任意の圧縮アルゴリズムに提供することができる。
【0209】
データ増強(例えば、ノイズ注入)をゲートウェイ52で実行することにより、元データは、一度元のフォーマットで記憶され、一度フェッチされ得る。そのデータは、次いで、複数のアクセラレータに複製することができ、ゲートウェイ52によって各複製コピーに異なる増強設定が適用される。ゲートウェイ52は、増強方法の組をハードウェアで提供し、上記増強に異なるアルゴリズムを実施するゲートウェイソフトウェアの能力を提供する。
【0210】
一実施形態では、ストリーミングエンジン124は、2つのデータ加速特徴を提供する。ストリーミング機能は、複製特徴並びに複製及び転置特徴を提供する。これにより、トレーニングデータを1つのゲートウェイから多くの他のゲートウェイに複製することができ、それによりI/O接続ニーズを低減する。
【0211】
データは、ホスト63又はリモートストレージ151からゲートウェイ52において受信され、PPE 123によってメモリ114に記憶される(巡回パス120後)。DME 122は、メモリ114からパス121に沿って送信されるデータを検索し、そのデータをアクセラレータ51に送信させる。データは、示されたアクセラレータポートを介してメモリ114からアクセラレータ51に送信される。パス121に沿ったデータ転送は、既に述べた同期信号によってトリガーされる。
【0212】
ゲートウェイ52は、アクセラレータ51へのデータ提供(パス121を経由したデータの転送を含む)をホスト63又はリモートストレージ151からのデータの検索から切り離せるようにする。換言すれば、ゲートウェイ52は、アクセラレータ51により実行される計算前にホスト63又はリモートストレージ151からのデータ転送を進められるようにする。
【0213】
図8は、ゲートウェイ52と更なるゲートウェイとの間でデータを交換できるようにする2つの更なるデータパスを示す。ゲートウェイ52は、パス125を含み、パス125から、データを(示されるアクセラレータポートによってゲートウェイ52に結合される)アクセラレータ51と更なるアクセラレータ(図示せず)との間で、(示されるファブリックポートによってゲートウェイ52に結合される)更なるゲートウェイ128を介して転送され得る。ゲートウェイ52及び更なるゲートウェイ128は、このパス125上のスイッチとして動作し、アクセラレータ間での拡張データ交換ファブリックを可能にする。更なるゲートウェイ128は、接続された更なるホストとデータを転送するように構成され得る。このパス125に沿ったデータ転送は、ユニキャスト(すなわち単一のアクセラレータに向けられたデータ)、ブロードキャスト(特定のアクセラレータに向けられずに送信されるデータ)及びマルチキャスト(複数の指定されたアクセラレータに向けられるデータ)であり得る。ブロードキャストモードでは、ファブリックポートで送信されたパケットは、マルチキャストグループIDを含む。各ゲートウェイは、各マルチキャストグループIDの宛先リストを含むテーブルを有する。ゲートウェイは、そのようなパケットを受信すると、テーブルにおいてパケットに含まれるマルチキャストグループIDに対応する宛先のリストを調べ、パケットをそれらの宛先に送信する。
【0214】
一実施形態では、XPUポートは、専用データ移動能力を提供するカスタムルートコンプレックス実装(custom Root Complex inplementation)である。パケットをゲートウェイメモリ114と転送することに加えて、XPUポートは、ファブリックポートとのピアツーピア能力も提供する。リモートアクセラレータへのメモリ空間マッピングをターゲットとしているパケットは、XPUポートにおいて検出され、適切なファブリックポートに向けられる。受信ファブリックポートは、パケットを正しい宛先のアクセラレータポートに向ける。ゲートウェイは、パケットをあるファブリックポートから別のファブリックポートに転送することもできる。これにより、任意の大きいファブリックを巡回することができる。このようにして、ゲートウェイファブリックを通して完全なアクセラレータ間交換が可能になる。
【0215】
図8は、ゲートウェイ52と更なるゲートウェイとの間でデータを交換するデータパス126も示す。データパス126は、ゲートウェイ52と更なるゲートウェイ128との間の同期及び管理メッセージの交換に使用される。更に、データパス126は、ゲートウェイ52に関連するメモリ114と、更なるゲートウェイ128に関連するメモリとの間でデータを交換するために使用される。データパス126を介して交換されるデータは、事前ワーク命令がPPE 123によって実行される場合、事前ワークの一環として交換される。
【0216】
データは、PPE 123による事前ワーク命令の実行に応答して、更なるゲートウェイ128のメモリからメモリ114に転送され得る。このデータは、次いで、その後のESPでのアクセラレータ52への転送のために(例えば、アクセラレータからのPCIe読み出し動作により又はDME 122によるDMOV命令の実行により)メモリ114で利用可能になる。PPE 123は、メモリ114にデータを転送する事前ワーク命令の実行を完了すると、その組のESPクレジットをインクリメントする。
【0217】
先に記したように、同期ゾーン/グループは、複数のゲートウェイを含み得る。そのような場合、同期要求を関連するアクセラレータ51から受信することの代替又は追加として、同期要求は、更なるゲートウェイ128からゲートウェイ52において受信され得る。この場合、この他のゲートウェイ128は、「下流ゲートウェイ」と呼ぶことができる。
【0218】
ここで、
図15を参照すると、
図15は、更なるゲートウェイ128及び更に第3のゲートウェイ152と通信するゲートウェイ52を示す。同期要求129が更なるゲートウェイ128から受信されると、ゲートウェイ52は、ゲートウェイ52が同期マスタではない(すなわちゲートウェイ52が同期スレーブである)場合、同期要求153を上流の第3のゲートウェイに送信することによって同期バリアを通過させることができる。同期要求129は、まず、ローカルアクセラレータ(例えば、アクセラレータ51)から受信した1つ又は複数の同期要求(例えば、同期要求56)と集計され得る。この場合、上流の第3のゲートウェイに送信されるのは、この集計された同期要求153である。
【0219】
代替的に、例えば同期要求129が他のゲートウェイ128から受信されるとき、ゲートウェイ152がゲートウェイ52の同期ゾーンの一部ではない場合、ゲートウェイ52は、ゲートウェイ52がマスタゲートウェイである場合、同期肯定応答154を更なるゲートウェイ128に送信することにより同期バリアを通過させ得る。ゲートウェイ52がマスタゲートウェイである場合、同期要求は、構成された全ての下流ゲートウェイから受信されるため、ローカルアクセラレータ(例えば、アクセラレータ51)からの受信される任意の同期要求も、(例えば、肯定応答155を送信することにより)肯定応答される。
【0220】
ゲートウェイ52によって保持されるLSBM 118内のESPクレジットは、ゲートウェイ52と更なるゲートウェイ128との間で同期要求転送の制御に使用され得る。アクセラレータ51とゲートウェイ52との間のバリアと同様に、ESPクレジットは、同期要求155をゲートウェイ52に送信するローカルアクセラレータ(例えば、アクセラレータ51)によってゲートウェイの関与が示される場合、ゲートウェイ52と更なるゲートウェイ128との間の同期要求転送の制御にのみ使用される。この指示は、上述したようにレジスタ59に記憶され得る。ゲートウェイの関与がレジスタ59において示されない場合、同期要求129が受信されたとき、同期要求153は、上流に送信され、同期肯定応答154が返され、LSBM 118からのESPクレジットを要求せずに同期バリアが通過される。
【0221】
アクセラレータ51によるゲートウェイ関与が示されると仮定すると、アクセラレータ51に関連するESPクレジットの数が非ゼロであり、ゲートウェイ52が同期要求129を下流ゲートウェイ128から受信しており、ゲートウェイ52が同期マスタゲートウェイではない(すなわち同期スレーブゲートウェイである)場合、バリアは、上流に通過される。同期要求129は、アクセラレータ51からの同期要求56と集計されて、上流ゲートウェイ152に送信される同期要求153を形成する。ゲートウェイ関与を要求する同期での同期要求153に対応する同期肯定応答156を受信すると、同期チェーン内の各LSBM 118内のESPクレジットは、デクリメントされる。
【0222】
アクセラレータ51によるゲートウェイ関与が示されると仮定すると、アクセラレータ51に関連するESPクレジットの数が非ゼロであり、ゲートウェイ52が同期要求129を下流ゲートウェイから受信しており、ゲートウェイ52が同期マスタゲートウェイである場合、ゲートウェイ52は、同期肯定応答154を下流ゲートウェイ128及びそれ自体のストリーミングエンジン124に送信する。同期肯定応答を受信すると、ストリーミングエンジン124は、LSBM 118によって保持されるESPクレジットの数をデクリメントする。
【0223】
したがって、ゲートウェイ52のLSPM 117は、LSBM 118内にESPクレジットがない場合、同期要求及び肯定応答の他のゲートウェイ(すなわちLSPM)への伝播を阻止することができる。これは、肯定応答が同期マスタによって最終的に生成されるとき、全てのアクセラレータが同時にスーパーステップの実行を開始することを保証する。
【0224】
ゲートウェイ52は、複数のインターフェース、例えばアクセラレータ51へのインターフェース、更なるゲートウェイ128へのインターフェース、第3のゲートウェイ152へのインターフェースを含む。これらのインターフェースは、同期伝播モジュールの一部である。ゲートウェイ52は、同期目的でのこれらの各インターフェースの方向性、すなわち更なるゲートウェイ128等のエンティティがゲートウェイ52の上流であるか又は下流であるかを示すレジスタを含む。したがって、レジスタは、ゲートウェイ52が同期要求を下流エンティティから受信したことに応答して、ゲートウェイ52により同期要求を何れのインターフェースに送り出すべきかを示す。何れのインターフェースも同期要求の送信用ではないことをレジスタ59が示す場合、これは、ゲートウェイ52が同期マスタであることを示す。この場合、ゲートウェイ52は、同期要求の受信時に経由した全てのインターフェースを経由して同期肯定応答を送信する。
【0225】
ゲートウェイ52は、スレーブゲートウェイとして機能する場合、ゲートウェイ52に関連するアクセラレータ(例えば、アクセラレータ51)から1つ又は複数の同期要求を受信し得る。これらの同期要求は、ゲートウェイ52によって集約され、ゲートウェイ52は、次いで、集計された同期要求を上流の更なるゲートウェイ128に渡す(それが同期要求を受信するゲートウェイ関与を示す各ローカルアクセラレータでESPクレジットが利用可能であると仮定した場合)。更なるゲートウェイ128もスレーブであると仮定すると、その更なるゲートウェイは、その要求及びそれ自体のローカルアクセラレータからの全ての同期要求を収集し、次いで新しい集約された同期要求を次のゲートウェイに転送する(それが同期要求を受信するゲートウェイ関与を示す各ローカルアクセラレータでESPクレジットが利用可能であると仮定した場合)。
【0226】
これは、同期ネットワークにわたり並列して発生する。最終的に、マスタゲートウェイは、全ての下流ゲートウェイ及びそれ自体に関連するアクセラレータから同期要求を受信する。そうして初めて同期が完了し、(それが同期要求を受信するゲートウェイ関与を示す各ローカルアクセラレータでESPクレジットが利用可能であると仮定した場合)同期肯定応答が、マスタゲートウェイによって生成され、受信した同期要求を発信した下流のエンティティ(すなわちローカルアクセラレータ又は下流のゲートウェイ)に送信される。同期肯定応答を受信した下流の各ゲートウェイは、受信した同期要求を発信したエンティティに同期肯定応答を送信する。
【0227】
述べたように、同期要求は、複数のローカルアクセラレータ(例であるアクセラレータ51のみならず)からゲートウェイ52において受信され得る。各アクセラレータは、異なる組のESPクレジットと関連付けられる。受信した同期要求の送信元である(及びゲートウェイ関与を示す)各アクセラレータの全てのESPクレジットが非ゼロである場合のみ、ゲートウェイ52は、集約された同期要求を上流に渡す(この場合、ゲートウェイは、スレーブである)か、又は同期要求に肯定応答し得る(この場合、ゲートウェイは、マスタである)。
【0228】
論考したように、ゲートウェイは、一緒に接続されて、同期要求及び肯定応答を交換し、複数のアクセラレータ間でデータを交換する同期ネットワークを提供し得る。しかしながら、同期ネットワークのサイズが大きくなる(すなわち同期グループ内で同期するアクセラレータの数が増える)につれて、同期ネットワークが故障する確率が高くなるという問題が生じ得る。そのような故障は、例えば、ゲートウェイ間のケーブル破断又はゲートウェイの故障によって生じ得る。そのような故障の場合、同期マスタは、同期ネットワーク内の下流から予期される同期要求の全てを受信することができないことがあるため、同期マスタは、予期される同期肯定応答を返さないことがある。任意のそのような故障は、同期の失敗を生じさせる。したがって、実施形態によれば、冗長性メカニズムがゲートウェイで実施されて、そのような故障の確率を下げる。
【0229】
冗長メカニズムは、同期ネットワーク内の上流に送信する同期要求を複製するように構成された1つ又は複数の新しい同期伝播モジュールをゲートウェイに提供することを含む。このゲートウェイ同期ロジックは、各々が同期ネットワーク内の下流から1つ又は複数の同期要求を受信し、同期要求を集約し(2つ以上ある場合)、少なくとも2つの同期要求を同期ネットワーク内の異なる宛先に伝播させる1つ又は複数の新しい同期伝播モジュールを含む。少なくとも2つの同期要求は、同一の冗長同期要求である。少なくとも2つの同期要求は、異なるゲートウェイに送信される。2つの同期要求をこのようにして同期ネットワーク内の異なるパスに沿って送信することにより、冗長性を同期ネットワークに組み込む。同期要求は、2つの異なる同期伝播モジュールにおいて受信され、これらは、肯定応答を返すことによってマスタとして機能し得るか、又は各々が更に2つの冗長同期要求を同期ネットワーク内の上流の異なる宛先に送信することによって伝播ノードとして機能し得る。したがって、同期ネットワーク内の各ゲートウェイにおいて、冗長同期要求の数は、2倍になる。各ゲートウェイで生成される冗長同期要求は、異なる同期マスタに向かって上流に送信される。同期ネットワーク内の何れかのリンクが故障した場合、それでもなお、同期要求は、ネットワークの少なくとも1つのマスタに到達することになり、肯定応答が同期ネットワーク内の下流の全てのゲートウェイ及びアクセラレータに伝播される。
【0230】
冗長マスタ及び同期要求のこのモードは、高可用性モード(HAモード)と呼ぶことができる。ゲートウェイの新しい同期伝播モジュール(高可用性同期複製モジュールと呼ばれる)は、このモード又は単一の同期要求のみが上流の単一のマスタに送信される非HAモードで動作し得る。
【0231】
ここで、実施形態について、
図18~
図28を参照してより詳細に説明する。
図18を参照すると、
図18は、本明細書ではシャーシグループと呼ばれるゲートウェイ52a、52b、52c、52d(まとめてゲートウェイ52と呼ばれる)及びアクセラレータのグループの一例を示す。シャーシは、単一のゲートウェイと、そのゲートウェイが接続されるアクセラレータとを含む。シャーシグループは、複数のシャーシを含む。シャーシグループという用語は、本明細書では、単に1つ又は複数のアクセラレータと接続されるゲートウェイのグループを指すために使用される。
【0232】
この例では、各ゲートウェイは、4つのアクセラレータ(「IPU」と記される)と通信するものとして示されているが、他の数のアクセラレータも可能である。したがって、
図18は、1~4と記された4つのシャーシを示す。4つ全てのシャーシは、一緒になってシャーシグループを構成する。ゲートウェイ52の各々は、ゲートウェイ同期ロジック1810を含み、ゲートウェイ同期ロジック1810は、同期ネットワーク内の下流から1つ又は複数の同期要求を受信し、受信した同期要求を集約し(2つ以上ある場合)、複数の同期要求を同期ネットワーク内の上流に送信するように構成された1つ又は複数の同期伝播回路を含む。したがって、同期要求の上流への送信に続いて、より多くの同期伝播回路は、同期ネットワーク内の上流パスから1つ又は複数の同期肯定応答を受信するように構成される。1つ又は複数の同期伝播回路は、同期肯定応答を同期ネットワーク内の下流に提供する。
【0233】
図19を参照すると、
図19は、シャーシグループが、複数のシャーシグループを含むシステム1900にどのように配置され得るかの一例を示す。このシステム1900は、A~Dと記された4つのシャーシグループを含む。しかしながら、16のシャーシグループ等の他の数のシャーシグループがシステム1900に存在し得る。異なるシャーシは、同期配線及びデータ接続(図示せず)を介して一緒に接続される。同期配線は、同期要求及び肯定応答を同期ネットワークに従ってシャーシ間で交換できるようにする。同期ネットワークは、システム内のシャーシの幾つか又は全てのゲートウェイ同期論理及びアクセラレータを含み得る。同期ネットワークは、更なるゲートウェイ及びアクセラレータを含むようにシステム1900を超えて拡張され得る。
【0234】
同期ネットワークは、アクセラレータ間及び任意にアクセラレータとゲートウェイメモリとの間の同期を調整するために、同期要求及び肯定応答がその間で渡されるシステム内の一連のノードを含むものとして理解される。同期ネットワークのこれらの「ノード」は、ゲートウェイの同期伝播モジュールを含むとともに、アクセラレータ及びDMEを更に含む。ノードは、3つの異なるタイプのノードの1つである。第1のタイプは、スレーブノードである。このタイプのノードは、同期ネットワークでの一番下の葉(leaf)である。スレーブノードは、同期要求を受信せず、同期要求を生成して他のノードに渡すのみである。同期要求は、マスタノードとして知られる第2のタイプのノードに向かって同期ネットワーク内の上流に渡されると言える。同期ネットワークにおけるスレーブノードは、アクセラレータ及びDMEである。
【0235】
マスタノードは、同期要求を他のノードに渡さず、同期ネットワークでマスタノードから下流に位置する他のノードから同期要求を受信するのみである。マスタノードに接続されたノードの全てのインターフェースは、(無効化されていない限り)同期要求をマスタノードに渡す。マスタノードは、その後のESPに予期される全ての同期要求を受信すると、同期要求を受信したノードに同期肯定応答を返すように構成される。同期肯定応答は、同期要求を発信したスレーブノードに向かって同期ネットワーク内の下流に渡されると言える。
【0236】
マスタノードを含むゲートウェイは、本明細書ではマスタゲートウェイと呼ばれ得る。マスタゲートウェイは、同期肯定応答を下流ゲートウェイに返す。
【0237】
第3のタイプのノードは、伝播ノードである。このタイプのノードは、同期ネットワークの葉でもなく、幹(trunk)でもなく、それらの間の枝(branch)である。伝播ノードは、1つ又は複数の同期要求を下流ノードから受信し、同期要求を集約し(2つ以上ある場合)、集約された同期要求を上流のマスタノードに向かって渡す。したがって、伝播ノードは、1~Nの下流ノード(それら自体は、同期ノード又は他の伝搬ノードであり得る)から同期要求を受信するように構成された1~Nのインターフェースと、少なくとも1つの同期要求を上流ノード(マスタノード又は別の伝播ノードであり得る)に送信するように構成された少なくとも1つのインターフェースとを有する。マスタノードが同期肯定応答を伝播ノードに送信すると、伝播ノードは、同期肯定応答を受信し、受信した同期要求を発信した1つ又は複数の各下流ノードに同期肯定応答を送信する。
【0238】
したがって、各同期ネットワークは、スレーブノード、伝播ノード及びマスタノードを含む。同期ネットワークは、同期/肯定応答ハンドシェークを使用して動作する。同期ネットワーク内の全てのスレーブノードは、実行において、同期する必要があるポイントに達するまで非同期で実行する。スレーブノードは、それぞれ独立して、別個の時間にその同期ポイントに達する。同期ポイントに達すると、スレーブノードは、それぞれ同期要求を上流のマスタノードに向かって送信し、その後、同期肯定応答を受信するまでストールする。同期ネットワークにおけるゲートウェイ同期伝播モジュールは、受信した要求を集約し、集約した要求を上流のマスタノードに向かって転送し、同期肯定応答を下流の1つ又は複数のスレーブノードに向かって転送することを担当する。スレーブは、予期された同期肯定応答を受信すると、同期要求ラインをデアサート(deassert)し、実行を続けることができる。同期伝播モジュールは、同期要求を転送すると、対応する同期肯定応答を待ち、それから、受信した更なる同期肯定応答を処理する。
【0239】
説明したシステムでは、アクセラレータ(例えば、
図7に示すアクセラレータ51)及びDME(例えば、
図8に示すDME 122)の両方は、常にスレーブノードとして動作するように構成される。他方では、
図18に示すゲートウェイ同期ロジック1810の一部である同期伝播モジュールの各々は、同期ネットワークにおいてマスタノード、伝播ノード又はスレーブノードの1つとして動作するように構成することができる。各同期伝播モジュールがどのように構成されるかは、同期ネットワーク、したがってアクセラレータのグループ/ゾーンを定義する。
【0240】
したがって、上流という用語は、マスタノードに向かうことを意味する一方、下流は、スレーブノードに向かうことを意味することが理解される。
【0241】
この応用の実施形態では、新しい伝播ノードは、それぞれが異なる上流パスに沿って異なるマスタに向かって送信される複数の同期要求を提供する複数のインターフェースを有する。したがって、同期ネットワークに複数のマスタノードが提供される。各ゲートウェイにおいて、新しい同期伝播モジュールの少なくとも1つは、ゲートウェイから出力された同期要求の複製を提供する。これらの同期要求の1つは、同期ネットワーク内の第1のマスタノードに向かって第1の上流パスに沿って送信される一方、同期要求の別の1つは、第2の上流パス上で第2のマスタノードに向かって送信される。したがって、同期ネットワークに冗長パス及び冗長同期要求が存在する。少なくとも1つの新しい同期伝播モジュールは、同期要求を送信したノードの何れか一方から同期肯定応答を受信すると、1つ又は複数の肯定応答をスレーブノードに向かって下流に伝播させる。したがって、少なくとも1つの新しい同期伝播モジュールは、マスタノードの1つから発せられた1つの同期肯定応答を受信するのみでよい。したがって、同期ネットワーク内のあるポイントで故障があった場合、それでもなおネットワーク内の冗長パスに起因して同期肯定応答を返すことができる。
【0242】
したがって、ゲートウェイは、同期要求の複製を実施して、完全冗長同期ネットワークを構築する同期伝播モジュールを含む。このモジュールは、続けて説明する例では高可用性同期複製モジュール(HRSM)と呼ばれる。HRSMは、ゲートウェイの別の同期伝播モジュールへの単一の内部同期/肯定応答インターフェースを有する。HRSMは、1~Mの外部同期ポートへのインターフェースを更に有し、ここで、Mは、同期ファブリックに必要とされる冗長の程度である。Mは、通常、2である。上述したように、モジュールは、HAモードと非HAモードとの2つのモードのうち1つで動作することができる。HAモードに関係なく、モジュールは、常に、内部同期ポートで受信した同期伝播モジュールからの同期要求を外部同期ポートの少なくとも1つに伝播させるように構成される。内部同期ポートは、同じゲートウェイの一部である同期伝播モジュールへの内部インターフェースを提供する一方、外部ポートは、同期要求/肯定応答を異なるゲートウェイに提供する外部インターフェースを提供する。
【0243】
非HAモードで動作しているとき、2つの外部ポートの一方は、アクティブポートと記される。モジュールは、アクティブ外部ポートを経由して内部ポートで受信した同期要求を伝播させる。同様に、非HAモードで動作しているとき、モジュールは、内部ポートを経由して、アクティブ外部ポートにおいて受信した同期肯定応答を伝播させる。
【0244】
HAモードで動作しているとき、モジュールは、内部同期入力から同期要求を受け入れ、その同期要求を複数の外部出力ポートに伝播させる。モジュールは、次いで、全ての外部出力ポート上の同期肯定応答を待つ。最初の肯定応答をポートの1つで受信すると、その同期肯定応答は、下流に渡される。最初の同期肯定応答を受信したとき、モジュールのタイマも開始される。タイマが切れる前に、肯定応答の全てを残りのアクティブ外部ポートで受信しなかった場合、故障した外部ポートが記録される。続けて、モジュールは、故障したと記された外部ポートを経由して更なる同期要求を送信しない。故障していない1つのみの外部ポートがある場合、モジュールは、非HAモードに遷移し、故障していないポートをアクティブポートとして使用する。ソフトウェア介入によりモジュールをHAモードに移すことができる。
【0245】
幾つかの実施形態では、非HAモードへの切り替えへのタイマの使用は、任意である。タイマは、非HAモードへの切り替えに使用されない場合でも、依然として故障の検出及び報告に使用し得る。
【0246】
幾つかの実施形態では、最初の肯定応答が受信されると、同期伝播モジュールは、タイマが切れるか、又は同期肯定応答が同期伝播モジュールの全てのアクティブインターフェースで受信されるまで同期肯定応答を下流に伝播させない。
【0247】
図20を参照すると、
図20は、同期要求がシャーシグループ2000においてどのように伝播し得るかの一例を示す。ゲートウェイの各々において、ゲートウェイ同期ロジックは、ローカル同期論理及びスケールアウト同期伝播モジュール(SSPM)を含むものとして示されている。ローカル同期ロジックは、上述したLSPM及びLSBMを含む。各アクセラレータに関連する1つのLSPM及びLSBM対がある。
【0248】
図20の同期ネットワーク例では、シャーシ1及びシャーシ2は、それぞれ冗長同期要求をシャーシ3及びシャーシ4から受信する。これらは、次いで、それら自体の冗長同期要求を集計してシステム内の他のシャーシに伝播させる。シャーシ1のゲートウェイは、ここでは、第1のゲートウェイ52aと呼ばれ、シャーシ2のゲートウェイは、ここでは、第2のゲートウェイ52bと呼ばれる等である。
【0249】
第4のゲートウェイ52dは、接続されたアクセラレータの1つ又は複数から1つ又は複数の同期要求を受信する。第4のゲートウェイ52dは、次いで、これらの要求を集約し(必要に応じて)、2つの冗長同期要求を形成する。これらの冗長同期要求の第1のものは、第1のゲートウェイ52aに渡され、これらの冗長同期要求の第2のものは、第2のゲートウェイ52bに渡される。
【0250】
第3のゲートウェイ52cは、接続されたアクセラレータの1つ又は複数から1つ又は複数の同期要求を受信する。第3のゲートウェイ52cは、次いで、これらの要求を集約し(必要に応じて)、2つの冗長同期要求を形成する。これらの冗長同期要求の第1のものは、第1のゲートウェイ52aに渡され、これらの冗長同期要求の第2のものは、第2のゲートウェイ52bに渡される。
【0251】
第2のゲートウェイ52bは、接続されたアクセラレータの1つ又は複数から1つ又は複数の同期要求を受信する。第2のゲートウェイ52bは、次いで、これらの要求を集約し(必要に応じて)、2つの冗長同期要求を形成する。これらの冗長同期要求の第1のものは、第1のゲートウェイ52aに渡される。冗長同期要求の第2のものは、第2のゲートウェイ52bへの外部入力の1つに提供される。したがって、冗長同期要求の第2のものは、第2のゲートウェイ52b自体のゲートウェイ同期ロジックへの入力として提供される。冗長同期要求の第2のものは、第2のゲートウェイ52bから出力され、第2のゲートウェイ52bの外部インターフェースに提供されて示されているが、幾つかの例では、冗長同期要求の第2のものは、内部接続を介して第2のゲートウェイ52bのゲートウェイ同期ロジックに提供し得る。
【0252】
第1のゲートウェイ52aは、接続されたアクセラレータの1つ又は複数から1つ又は複数の同期要求を受信する。第1のゲートウェイ52aは、次いで、これらの要求を集約し(必要に応じて)、2つの冗長同期要求を形成する。これらの冗長同期要求の第1のものは、第2のゲートウェイ52bに渡される。冗長同期要求の第2のものは、第1のゲートウェイ52aへの外部入力の1つに提供される。したがって、冗長同期要求の第2のものは、第1のゲートウェイ52a自体のゲートウェイ同期ロジックへの入力として提供される。冗長同期要求の第2のものは、第1のゲートウェイ52aから出力され、第1のゲートウェイ52aの外部インターフェースに提供されて示されているが、幾つかの例では、冗長同期要求の第2のものは、内部接続を介して第1のゲートウェイ52aのゲートウェイ同期論理に提供することができる。
【0253】
したがって、第1及び第2のゲートウェイ52a、52bの各々は、シャーシグループ2000内の全てのゲートウェイから同期要求を受信する。ゲートウェイの2つの間のリンクの1つが故障した場合でも、第1及び第2のゲートウェイ52a、52bの一方は、第1及び第2のゲートウェイ52a、52bの他方が同期要求を受信しない場合でも、シャーシグループ2000内の全てのゲートウェイから全ての同期要求を依然として受信する。
【0254】
第1のゲートウェイ52a及び第2のゲートウェイ52bが同期ネットワークのマスタノードを構成する場合、第1及び第2のゲートウェイ52a、52bは、同期要求を受信した同期ネットワーク内の下流パスに沿って同期肯定応答を返す。しかしながら、
図20に示すこの例では、同期ネットワークは、シャーシグループ2000を超えて拡張し、したがって、第1及び第2のゲートウェイ52a、52bは、シャーシグループ2000を超えて更なるゲートウェイまで同期要求を伝播させる。シャーシグループ2000内の各ゲートウェイから同期要求を受信した後、第1のゲートウェイ52aは、これらの同期要求を集約して、2つの更なる冗長同期要求を形成する。第1のゲートウェイ52aは、冗長同期要求の1つをシャーシグループ2000の第3のゲートウェイ52cに提供し、冗長同期要求の別の1つを第2のシャーシグループの第3のゲートウェイに提供する。同様に、シャーシグループ2000内の各ゲートウェイから同期要求を受信した後、第2のゲートウェイ52bは、これらの同期要求を集約して、2つの更なる冗長同期要求を形成する。第2のゲートウェイ52bは、冗長同期要求の1つを第3のシャーシグループの第3のゲートウェイに提供し、冗長同期要求の別の1つを第4のシャーシグループの第3のゲートウェイに提供する。したがって、それらの間において、第1及び第2のゲートウェイ52a、52bは、4つの冗長同期要求を出力し、各要求は、異なるマスタに向かって異なる上流パスに沿って伝播する。
【0255】
図21を参照すると、
図21は、4つのシャーシグループを含むシステム1900において同期要求がどのように交換されるかを示す。シャーシグループの各々は、「A」、「B」、「C」及び「D」と記される。「a」、「b」、「c」及び「d」と記されたポートは、システム1900の各ゲートウェイへの入力ポートである。「e」及び「f」と記されたポートは、冗長同期要求を他のシャーシグループに出力し得る際に経由する出力ポートである。「g」及び「h」と記されたポートは、冗長同期要求を同じシャーシグループ内のゲートウェイに出力する際に経由する出力ポートである。シャーシグループの各々は、4つのゲートウェイを含む。各シャーシグループにおいて、そのシャーシグループの4つのゲートウェイは、本明細書では、各シャーシグループの第1のゲートウェイ、第2のゲートウェイ、第3のゲートウェイ及び第4のゲートウェイと呼ばれる。
【0256】
図21に示すシャーシグループAのシャーシ1、2、3及び4は、
図20に示すシャーシ1及びシャーシ2に対応し得る。これらの2つのシャーシの出力「e」及び「f」は、ローカル同期出力A/B及びローカル同期出力C/Dと記された4つの冗長出力に対応する。示すように、シャーシグループA内の第1のゲートウェイ52aからの2つの出力は、シャーシグループA内の第3のゲートウェイ52c及びシャーシグループB内の第3のゲートウェイに提供される。これも示すように、シャーシグループA内の第2のゲートウェイ52bからの2つの出力は、シャーシグループC内の第3のゲートウェイ及びシャーシグループD内の第3のゲートウェイに提供される。
【0257】
図21から、各シャーシグループ内の第3のゲートウェイは、あらゆるシャーシグループ(それ自体を含む)内のゲートウェイから同期要求を受信することを理解し得る。
図20では、その図に示される第3のゲートウェイ52cにおいて受信されるこれらの同期要求は、「Ext Sync0 In」と記される。各シャーシグループ内の第3のゲートウェイが同期ネットワークのマスタノードを構成する場合、これらの第3のゲートウェイは、同期要求を受信した同期ネットワーク内の下流パスに沿って同期肯定応答を返す。この場合、同期ネットワークは、システム1900に制限される。しかしながら、
図21によって示す例では、同期ネットワークは、システム1900を超えて拡張し、したがって、各シャーシグループ内の第3のゲートウェイは、システム1900を超えて更なるゲートウェイまで同期要求を伝播させる。4つの同期要求を受信した後、各第3のゲートウェイは、これらの同期要求を集約して2つの更なる同期要求を形成する。各第3のゲートウェイは、同期要求の1つを1つのシステム内のゲートウェイに提供し、別の1つを異なるシステム内のゲートウェイに提供する。それらの間において、第3のゲートウェイは、8つの冗長同期要求を提供し、各要求は、異なるマスタに向かって異なる上流パスに沿って伝播する。これらの8つの要求は、
図21では、「Out0」、「Out1」、「Out2」、「Out3」、「Out4」、「Out5」、「Out6」及び「Out7」と記されている。
【0258】
したがって、「ファンアウト(fan out)」があり、同期階層内の新しい各レベルにおいて、冗長同期要求の数は、2倍になることが理解される。したがって、同期ネットワーク内の任意の単一の故障点は、同期肯定応答がネットワーク内の全てのスレーブノードに返されることを妨げない。
【0259】
図22~
図28を参照すると、これらの図は、ゲートウェイの同期伝播モジュールをより詳細に示すとともに、同期ネットワークに冗長性を実施する際、これらの同期伝播モジュールの幾つかによって実行される動作を示す。これらの同期伝播モジュールの各々は、適切な回路によって提供される。したがって、同期伝播モジュールは、同期伝播回路と呼ぶこともできる。各モジュールを提供する回路は、例えば、FPGA又はASICを含むハードウェア処理ユニットであり得る。各モジュールを提供する回路は、非一時的コンピュータ可読媒体に記憶されるコンピュータ可読命令を実行するように構成されたプロセッサであり得る。
図22~
図28に示す同期伝播回路は、LSPM、SSPM及びHRSMを含む。
図22は、ゲートウェイ52と、ゲートウェイ52内の同期伝播モジュール間の接続とを示す。この図は、ゲートウェイ52内の全ての同期伝播モジュールの導入概要を提供し、同期要求及び肯定応答の交換に使用し得る、これらのモジュール間の接続を示す。
図23~
図28は、
図20に示すシャーシグループ2000の異なるゲートウェイにおける同期要求及び肯定応答の交換を示す。
【0260】
図22を参照すると、
図22は、ゲートウェイ52と、ゲートウェイ52内の同期伝播モジュール間の接続とを示す。
【0261】
ゲートウェイ52は、複数のLSPM 117を含み、LSPM 117の各々は異なるアクセラレータ51と関連付けられる。LSPM 117は、マスタノード又は伝播ノードとして動作することができる。ESP前に、LSPM 117は、同期要求をそれに関連するアクセラレータ51及びそれに関連するDME(図示せず)から受信する。同期が、ゲートウェイメモリと関連するアクセラレータとの間でのデータ交換を必要とする(すなわち同期がI/O同期である)場合、DMEからLSPM 117で受信した同期要求は、同期完了前に、少なくとも1つのESPクレジットがそのLSPMに関連するLSBM(図示せず)に存在しなければならないことの指示をLSPM 117に提供する。同期要求は、LSPM 117のメモリに記憶されるlsbm_requiredビットを設定する。そのような指示に応答して、LSPM 117は、同期肯定応答を関連するアクセラレータ51及び関連するDMEに提供する前に、LSBM 118からESPクレジットを要求するように構成される。ESPクレジットの数が非ゼロである場合、LSPM 117は、同期肯定応答を関連するアクセラレータ51及びDMEの両方に伝播させる。
【0262】
LSPM 117の各々は、高可用性同期複製モジュール(high availability sync replication module)(HRSM)2230に接続される。HRSM 2230は、同期要求をLSPM 117から受信し、それらの要求を集約し(2つ以上ある場合)、2つの冗長同期要求を送信する。HRSM 2230は、同期肯定応答も受信し、それに応答して、要求をHRSM 2230に提供したLSPM 117に同期肯定応答を提供する。特定のHRSM 2230は、冗長同期要求を同じシャーシグループ内の他のゲートウェイに送信する。
【0263】
ゲートウェイ52は、スケールアウト同期伝播モジュール(scaleout sync propagation module)(SSPM)2210を含む。SSPM 2210は、他のゲートウェイから、また幾つかの場合、同じゲートウェイ2210のHRSM 2230から同期要求を受信する。SSPM 2210は、受信した同期要求を集約し、集約した同期要求をHRSM 2220に提供する。HRSM 2220から同期肯定応答を受信したことに応答して、SSPM 2210は、同期要求を受信したパスに沿って同期肯定応答を下流に返す。
【0264】
ゲートウェイ52は、第2のHRSM 2220を更に含み、第2のHRSM 2220は、同期要求をSSPM 2210から受信し、2つの冗長同期要求を提供し、これらは、他のゲートウェイに送信される。HRSM 2220は、これらのゲートウェイから肯定応答も受信し、それに応答して肯定応答を下流のSSPM 2210に提供する。
【0265】
同期伝播モジュールがマスタとして、スレーブとして又は伝播ノードとして動作するように構成されるかは、ゲートウェイステータスレジスタ(例えば、
図7に示すレジスタ59)内の値(同期伝播設定)に依存する。ゲートウェイステータスレジスタに同期伝播設定の指示を書き込んだことに続いて、ゲートウェイは、これらの同期伝播設定に依存して、制御設定を同期伝播モジュールの幾つか、すなわちLSPM及びHRSMのレジスタ(制御及びステータスレジスタ(CSR))に記憶する。これらの同期伝播モジュールの各々は、同期伝播モジュールが、受信した同期要求及び/又は肯定応答をどのように伝播させるかを制御する制御及びステータスレジスタ(CSR)を含む。各同期伝播モジュールのCSRに記憶される設定は、そのインターフェースの各々について、そのインターフェースが有効化(enabled)/無効化(disabled)されているかどうか、及び、(有効化されている場合)インターフェースの方向性を制御する。したがって、各伝播モジュールのCSRに記憶される設定は、そのモジュールがマスタノードとして、同期伝播ノードとして又はスレーブノードとして機能するかを制御する。1つ又は複数のアクセラレータ51によりゲートウェイ52の1つ又は複数のレジスタ(例えば、
図4及び
図7に示すレジスタ59)に書き込まれる構成設定の指示は、同期要求の発行前に書き込まれる。これらのレジスタ内の設定は、LSPM 117及びHRSM 2220、2230のインターフェースの構成に使用される。設定は、これらのモジュールのインターフェースが有効化/無効化されているかどうか、及び、有効化された各インターフェースの方向性(すなわち同期要求が伝播する方向)を構成する。SSPMの構成設定は、ハードコードされ、アクセラレータ51により構成可能ではない。SSPM 2210は、受信した任意の同期要求をHRSM 2220に伝播させ、HRSM 2220からの同期肯定応答の受信に続いて、4つのインターフェースの1つを経由して、受信した任意の同期要求に肯定応答する。
【0266】
図23を参照すると、
図23は、同期要求を他のゲートウェイに送信する際、第4のゲートウェイ52dの同期伝播モジュールの各々によって実行され得る動作を示す。
【0267】
アクセラレータ51の1つ又は複数は、同期要求を関連するLSPM 117に提供する。そのような各LSPM 117は、アクセラレータ51に関連するDMEから同期要求も受信する。同期要求の受信に応答して、そのような各LSPM 117は、同期要求を同期ネットワーク内の上流のHRSM 2230に送信する。HRSM 2230は、LSPM 117からの1つ又は複数の同期要求の受信に応答して、2つの同期要求を他のゲートウェイに送信する。HRSM 2230は、同期の構成設定に従い、インターフェースを有効化したLSPM 117の全てから同期要求を受信した場合、2つの同期要求を送信する。2つの同期要求は、冗長同期要求であり、これらは、それぞれ異なるゲートウェイに送信される。これらの1つは、第1のゲートウェイ52aに送信され、別の1つは、第2のゲートウェイ52bに送信される。
【0268】
図23に示すように、第4のゲートウェイ52d内のSSPM 2210及びHRSM 2220は、その後のESPで同期要求を送受信しない。
【0269】
図24を参照すると、
図24は、同期要求を受信して他のゲートウェイに送信する場合、第1のゲートウェイ52a及び第2のゲートウェイ52bの同期伝播モジュールの各々によって実行され得る動作を示す。図に示すゲートウェイは、示される同じ動作が第1のゲートウェイ52a及び第2のゲートウェイ52bによって実行されるため、ゲートウェイ52a/52bと記される。
【0270】
アクセラレータ51の1つ又は複数は、同期要求を関連するLSPM 117に提供する。LSPM 117は、アクセラレータ51に関連するDMEからも同期要求を受信する。同期要求の受信に応答して、各LSPM 117は、同期要求を同期ネットワーク内の上流のHRSM 2230に送信する。HRSM 2230は、LSPM 117からの1つ又は複数の同期要求の受信に応答して、2つの同期要求をネットワーク内の上流に送信する。HRSM 2230は、インターフェースを有効化したLSPM 117の全てから同期要求を受信した場合、2つの同期要求を送信する。2つの同期要求は、冗長同期要求である。
【0271】
同期要求の1つは、HRSM 2230によって別のゲートウェイに送信される。例えば、示すゲートウェイ52a/52bが第1のゲートウェイ52aに対応する場合、要求の1つは、ゲートウェイ52bに送信される。同様に、示すゲートウェイ52a/52bが第2のゲートウェイ52bに対応する場合、要求の1つは、第1のゲートウェイ52aに送信される。
【0272】
HRSM 2230によって送信された同期要求の別の1つは、ゲートウェイ52a/52b自体のSSPM 2210に送信される。この同期要求は、ゲートウェイ52a/52b外部の配線を介して送信し得る。同期要求は、HRSM 2230に接続された出力ポート及びSSPM 2210に接続された入力ポートを介して送信される。代替的に、HRSM 2230は、ゲートウェイ52a/b内部の接続を介してSSPM 2210に同期要求を提供する。
【0273】
ゲートウェイ52a/52bのSSPM 2210は、複数の同期要求を受信する。この複数の同期要求は、ゲートウェイ52a/52bの他方のHRSM 2230からの同期要求を含む。例えば、ゲートウェイ52a/52bが第1のゲートウェイ52aに対応する場合、要求は、第2のゲートウェイ52bから受信される。他方、ゲートウェイ52a/52bが第2のゲートウェイ52bに対応する場合、要求は、第1のゲートウェイ52aから受信される。ゲートウェイ52a/52bで受信した複数の同期要求は、第3及び第4のゲートウェイ52c、52dの各々からの同期要求も含む。
【0274】
複数の同期要求の全てを受信したことに応答して、SSPM 2210は、同期要求を上流のHRSM 2220に提供する。HRSM 2220は、下流のSSPM 2210から同期要求を受信したことに応答して、2つの同期要求を異なるゲートウェイに送信する。これらは、冗長同期要求である。2つの同期要求の各々は、異なるシャーシグループ内のゲートウェイに送信される。
図21に与える例から理解し得るように、これらの2つの同期要求は、2つのシャーシグループの第3のゲートウェイに送信される。
【0275】
図25を参照すると、
図25は、同期要求を受信して他のゲートウェイに送信する場合、第3のゲートウェイ52cの同期伝播モジュールの各々によって実行され得る行為を示す。
【0276】
アクセラレータ51の1つ又は複数は、同期要求を関連するLSPM 117に提供する。LSPM 117は、アクセラレータ51に関連するDMEからも同期要求を受信する。同期要求の受信に応答して、各LSPM 117は、同期要求を同期ネットワーク内の上流のHRSM 2230に送信する。HRSM 2230は、LSPM 117からの1つ又は複数の同期要求の受信に応答して、2つの同期要求を他のゲートウェイに送信する。HRSM 2230は、インターフェースを有効化したLSPM 117の全てから同期要求を受信した場合、2つの同期要求を送信する。2つの同期要求は、冗長同期要求であり、各要求は、異なるゲートウェイに送信される。それらの1つは、第1のゲートウェイ52aに送信され、別の1つは、第2のゲートウェイ52bに送信される。
【0277】
第3のゲートウェイ52cのSSPM 2210は、複数の同期要求を受信する。
図21に示すように、複数の同期要求の各々は、シャーシグループの各々の第1のゲートウェイの1つから受信される。
【0278】
複数の同期要求の全てを受信したことに応答して、SSPM 2210は、同期要求を上流のHRSM 2220に提供する。この例では、HRSM 2220は、下流のSSPM 2210から同期要求を受信したことに応答して、2つの同期要求を送信する。これらは、冗長同期要求である。2つの同期要求の各々は、システム1900外部のゲートウェイに送信される。
【0279】
図25に示す例では、HRSM 2220は、同期要求をシステム1900の外部に送信するが、他の場合、HRSM 2220は、システムのマスタノードとして機能し得、SSPM 2210からの同期要求の受信に応答して、同期要求を伝播させる代わりに、同期肯定応答をSSPM 2210に返し得る。この場合、第3のゲートウェイ52cは、システム1900のマスタゲートウェイであると見なすことができる。
【0280】
図26を参照すると、
図26は、同期肯定応答を受信して伝播させる場合、第3のゲートウェイ52cの同期伝播モジュールの各々によって実行され得る行為を示す。
【0281】
同期要求の送信に続いて、特定の時間後、HRSM 2220は、1つ又は複数の同期肯定応答を1つ又は複数の上流エンティティから受信する。これらは、同期ネットワーク内の冗長マスタから送信された冗長同期肯定応答である。典型的には、2つの冗長同期肯定応答がHRSM 2220に返される。しかしながら、故障、例えばシャーシ間のケーブル破断がある場合、単一の同期肯定応答のみがHRSM 2220に返されることがあり得る。HRSM 2220は、タイマを含む。HRSM 2220が同期肯定応答を受信すると、HRSM 2220は、この同期肯定応答を下流のSSPM 2210に伝播させ、HRSM 2220は、タイマを開始する。(プログラマブルクロックサイクルの数をカウントすることによって測定され得る)特定の時間期間が過ぎた後、第2の肯定応答がHRSM 2220で受信されない場合、HRSM 2220は、第2の肯定応答が予期された外部ポートが故障していると記録する。HRSM 2220は、次いで、非高可用性モード(非HAモード)に遷移し、故障したポートを経由して同期要求を送信せず、アクティブポートを経由して単一の同期要求のみを送信する。
【0282】
SSPM 2210は、単一の同期肯定応答をHRSM 2220から受信し、それに応答して、受信した同期要求を発信したゲートウェイの各々に同期肯定応答を提供する。したがって、SSPM 2210は、これらの同期肯定応答をシャーシグループの各々内の第1のゲートウェイに提供する。
【0283】
HRSM 2230は、続けて、同期要求を提供したゲートウェイの1つ又は複数、すなわち第1及び第2のゲートウェイ52a、52bから1つ又は複数の同期肯定応答を受信する。HRSM 2230は、1つの同期肯定応答の受信に応答して肯定応答を下流に伝播させる。HAモードで動作しているとき、HRSM 2230は、1つの同期肯定応答の受信に続いて、タイマを開始する。他の同期肯定応答を受信する前にタイマが切れた場合、HRSM 2230は、将来のESPについて非HAでの動作に移る。非HAモードで動作しているとき、HRSM 2230は、もはや冗長同期要求を伝播させず、単一の同期要求のみを上流に送信する。単一の同期要求は、第1の同期肯定応答を受信したパスに沿って上流に伝播する。
【0284】
HRSM 2230による下流への同期肯定応答の伝播は、同期要求を受信した各LSPM 117に同期肯定応答を提供することを含む。各LSPM 117は、そのような同期肯定応答の受信に応答して、同期肯定応答を関連するアクセラレータ51に提供する。各LSPM 117は、同期肯定応答を関連する各DMEにも提供する。
【0285】
図27を参照すると、
図27は、同期肯定応答を受信して送信する場合、第1のゲートウェイ52a及び第2のゲートウェイ52bの同期伝播モジュールの各々によって実行され得る動作を示す。図に示すゲートウェイは、示される同じ行為が第1のゲートウェイ52a及び第2のゲートウェイ52bによって実行されるため、ゲートウェイ52a/52bと記される。
【0286】
HRSM 2220は、1つ又は複数の同期肯定応答を1つ又は複数の上流エンティティから受信する。これらの同期肯定応答は、HRSM 2220が同期要求を送信したゲートウェイ、すなわち異なるシャーシグループ内の第3のゲートウェイから受信される。HRSM 2230は、第1の同期肯定応答の受信に応答して肯定応答をSSPM 2210に提供する。HAモードで動作しているとき、HRSM 2230は、1つの同期肯定応答の受信に続いて、タイマを開始する。HRSM 2230が他の肯定応答を受信する前にタイマが切れた場合、HRSM 2230は、将来のESPについて非HAでの動作に移る。非HAモードで動作しているとき、HRSM 2230は、冗長同期要求を提供しない。
【0287】
SSPM 2210は、HRSM 2220からの同期肯定応答の受信に応答して、ゲートウェイ52a/52bのHRSM 2230を含むシャーシグループ内の各ゲートウェイのHRSM 2230に同期肯定応答を提供する。
【0288】
HRSM 2230は、1つ又は複数の同期肯定応答を受信する。これらの1つは、第1のゲートウェイ52aのSSPM 2210から受信し得、他の1つは、第2のゲートウェイ52bのSSPM 2210から受信し得る。HRSM 2230は、第1の同期肯定応答の受信に応答して肯定応答を下流に伝播させる。HAモードで動作しているとき、HRSM 2230は、1つの同期肯定応答の受信に続いて、タイマを開始する。他の同期肯定応答を受信する前にタイマが切れた場合、HRSM 2230は、将来のESPについて非HAでの動作に移る。非HAモードで動作しているとき、HRSM 2230は、もはや冗長同期要求を伝播させず、単一の同期要求のみを上流に送信する。単一の同期要求は、第1の同期肯定応答を受信したパスに沿って上流に伝播する。
【0289】
同期肯定応答の伝播は、受信した同期要求を発信した各LSPM 117に同期肯定応答を提供することを含む。各LSPM 117は、そのような同期肯定応答の受信に応答して、同期肯定応答を関連するアクセラレータ51に提供する。各LSPM 117は、同期肯定応答を関連する各DMEにも提供する。
【0290】
図28を参照すると、
図28は、同期肯定応答を受信して伝播させる場合、第4のゲートウェイ52dの同期伝播モジュールの各々によって実行され得る動作を示す。
【0291】
HRSM 2230は、1つ又は複数の同期肯定応答を受信する。これらの1つは、第1のゲートウェイ52aのSSPM 2210から受信し得、他の1つは、第2のゲートウェイ52bのSSPM 2210から受信し得る。HRSM 2230は、第1の同期肯定応答の受信に応答して肯定応答を下流に伝播させる。HAモードで動作しているとき、HRSM 2230は、1つの同期肯定応答の受信に続いて、タイマを開始する。他の同期肯定応答を受信する前にタイマが切れた場合、HRSM 2230は、将来のESPについて非HAでの動作に移る。非HAモードで動作しているとき、HRSM 2230は、もはや冗長同期要求を伝播させず、単一の同期要求のみを上流に送信する。単一の同期要求は、第1の同期肯定応答を受信したパスに沿って上流に伝播する。
【0292】
同期肯定応答の伝播は、HRSM 2230が受信した同期要求を発信した各LSPM 117に同期肯定応答を提供することを含む。各LSPM 117は、そのような同期肯定応答の受信に応答して、同期肯定応答を関連するアクセラレータ51に提供する。各LSPM 117は、同期肯定応答を関連する各DMEにも提供する。
【0293】
したがって、同期肯定応答は、シャーシ間のケーブルの破断又は他の故障の場合でも、同期ネットワーク内のスレーブモジュールの各々に返される。
【0294】
図21に示す(及び
図22~
図28を参照してより詳細に説明する)同期ネットワークの配置例は、単なる一例であり、複数のゲートウェイを含む他の可能な同期ネットワークも可能である。
図29を参照すると、
図29は、16のシャーシグループを含むシステム2900での同期書き込みを示す。この図は、2つのラックの簡易図を示し、各ラックに8つのシャーシグループがあり、4つのシャーシグループセットからの出力(ポートe/fの上部セット)のみを示し、残りのポートは、
図21に示す4シャーシグループ例では使用されなかった。この例では、ポートa~dは、8つの上位レベルシャーシへの入力として機能し、下位レベルアグリゲータの出力に接続される。これらの8つの上位レベルシャーシは、次いで、16個の冗長出力を生成する。
【0295】
図30を参照すると、
図30は、本願の実施形態による方法3000の一例を示す。
【0296】
S3010において、同期伝播回路、例えばHRSMは、1つ又は複数の同期要求を同期ネットワーク内の下流パスから受信する。HRSMで受信される同期要求の数は、その後のESPの同期グループに依存する。同期グループは、同期伝播モジュールの構成設定の各々に保持される構成設定によって定義される。HRSM内の同期伝播設定は、同期伝播設定を示すアクセラレータからのゲートウェイのレジスタへの書き込みに依存する。HRSMの構成設定は、そのインターフェースの何れがその後のESPのために有効化されるかを定義する。HRSMは、有効化されたインターフェースの全てで同期要求を受信したとの判断に応答してS3020に移る。
【0297】
S3020において、1つ又は複数の同期要求の受信に応答して、同期ネットワーク内の異なるパスに沿って2つの同期要求を上流に提供する。これらの2つの同期要求は、異なるパスに沿って異なる冗長マスタに送信される冗長同期要求である。
【0298】
S3030において、続けて同期伝播回路は、同期要求が送信された異なるパスの1つ又は複数上で1つ又は複数の同期肯定応答を受信する。同期伝播回路は、同期肯定応答の1つ又は複数の受信に応答して又は受信したパス上で受信する所定の数の同期肯定応答の受信に応答して開始されたタイマが切れたことに応答して、次のステップに進み得る。
【0299】
S3040において、同期伝播回路は、S3010において受信した同期要求を発信した下流のパス上で同期肯定応答を提供する。
【0300】
図10を参照すると、
図10は、ストリーミングエンジン124によって実施されるゲートウェイ機能を示す。PPE 123は、DME 122と並列に実行されるが、DME 122は、PPE 123の結果に依存するため、PPE 123は、DME動作がスケジュールされる前にその結果を提供する必要がある。これは、予めコンパイルされる実行可能イメージ又はアクセラレータ51からゲートウェイ52に送られるコマンドのユーザプログラムシーケンシングを通して対応付けられる。
【0301】
図10に示すように、PPE 123とネットワークスタック141との間にモジュール142がある(GD×SMモジュールとして示される)。GD×SMモジュール142は、2つのモジュール、すなわちGWデータインポート同期モジュール(GDISM)及びGWデータエクスポート同期モジュール(GDESM)を含む。両方のモジュールは、ゲートウェイとホストとの間のI/Oバッファ要素の同期に対処する。
【0302】
同期は、フロー制御され、交換同期点(ESP)でのI/O動作でのGWデータ一貫性及び準備を保証する。
【0303】
第1の組のクレジット(既に詳細に論考した)は、ESPクレジットである。ESPクレジットは、アクセラレータ51とゲートウェイ52との間又はゲートウェイ52と更なるゲートウェイ128との間の何れかの同期バリアの通過を支配する。ESPクレジットを使用して、バリアクレジットメカニズムが使用されて、ゲートウェイ52とアクセラレータ51との間のデータ転送を制御する。ESPクレジットが利用可能であることは、データ交換動作を1つのバリアに対して実行できることを暗示する。
【0304】
第2の組のクレジットは、ゲートウェイ52へのデータの転送(ホスト63、リモートストレージ151又は更なるゲートウェイ128からの)を支配する。これらのクレジットは、GD×SM 142によって記憶される。より具体的には、これらのクレジットは、GB×SM 142のGDISMに記憶される。第2の組のクレジットは、GDISMクレジットと呼ぶことができる。「GDISMクレジット」という用語が名前のみであり、このクレジットの性質がこの名前によって限定されないことを当業者であれば理解する。
【0305】
ゲートウェイ52は、利用可能なGDISMクレジットの数が非ゼロであるとの判断に応答して、事前ワーク命令を実行して、データをホスト63、リモートストレージ151又は更なるゲートウェイ128から検索する。ゲートウェイ52は、利用可能なGDISMクレジットがゼロであると判断する場合、データを検索しない。ホスト63は、命令の送信にRDMAを使用してGDISMクレジットを更新/インクリメントする命令を送信する。ストリーミングエンジン124に、ホスト63からのRDMA書き込みを介してGDISMクレジットレジスタへの更新が通知されると、ストリーミングエンジン124は、それに従ってクレジットレジスタを更新する。ゲートウェイ52は、事前ワークがPPE 123によって完了したことに応答して、記憶されているGDISMクレジットの数をデクリメントする。事前ワークは、外部ストレージからゲートウェイ52にデータを転送することである。
【0306】
GDISMクレジット制御メカニズムは、事前ワーク(PRW)命令の早過ぎる実行を回避し得る。GDISMは、現在実行中のESPのWD何個分先に事前ワーク(PRW)エンジンが機能することが可能になるかを制御する。
【0307】
ホスト63は、ゲートウェイのグループに対してGDISMクレジットの同じクレジット更新を実行するように構成され得る。クレジット更新は、RDMA及びRDMAの上のプロトコルを使用して、信頼性の高いブロードキャストを行う。これは、同期グループが複数のゲートウェイを含む場合に必要になり得る。この場合、ゲートウェイのグループは、同じ数の利用可能なGDISMクレジットを有する必要があり得、同じ数の利用可能なGDISMクレジットを有さない場合、アクセラレータの1つがストールし、したがって他の全てのアクセラレータが停止し得る。
【0308】
幾つかの例では、GDISMクレジットは、ゲートウェイからホストへのデータ転送の制御にも使用される。外部ストレージからゲートウェイ52へのデータ転送に使用される同じ組のGDISMクレジット(すなわち上述した第2の組)は、ゲートウェイ52から外部ストレージ(例えば、ホスト63、リモートストレージ151)へのデータ転送の制御に使用され得る。ゲートウェイ52がデータを外部ストレージに送信することに応答して、インポートクレジット及びエクスポートクレジットの両方を表すこれらのGDISMクレジットは、PPE 123がWD内のコマンドを完了するとデクリメントされる。ゲートウェイ128は、GDISMクレジットの数が非ゼロである場合のみ、データを外部ストレージに送信する。
【0309】
このようにして、GDISMクレジットは、POW命令及びPRW命令の調整に使用し得る。GDISMクレジットの数が非ゼロである場合、POW命令は、実行することができない。GDISMクレジットが外部ストレージへのデータ転送及び外部ストレージからのデータ転送の両方を制御する場合、全てのPOW命令及びPRW命令が所与のESPに対して完了した場合のみ、1つのGDISMクレジットが消費される。
【0310】
幾つかの例では、第3の組のクレジットは、ゲートウェイ52からホスト63又はリモートストレージ151へのデータ転送を支配する。これらのクレジットは、GD×SM 142によって記憶される。より具体的には、これらのクレジットは、GB×SM 142のGDESMに記憶される。第3の組のクレジットは、GDESMクレジットと呼ぶことができる。「GDESMクレジット」という用語が名前のみであり、このクレジットの性質がこの名前によって限定されないことを当業者であれば理解する。
【0311】
ゲートウェイ128は、GDESMクレジットの数が非ゼロである場合のみ、データを外部ストレージに送信する。ゲートウェイ52がデータを外部ストレージに送信したことに応答して、GDESMクレジットは、デクリメントされる。このようにして、GDESMクレジットは、POW命令の調整に使用され得る。GDESMクレジットの数が非ゼロである場合、POW命令は、実行することができない。ゲートウェイ52は、POW命令の完了に応答してGDESMクレジットの数をデクリメントする。
【0312】
ホスト63は、命令の送信にRDMAを使用して、GDISMクレジットを更新/インクリメントする命令を送信する。ストリーミングエンジン124に、ホスト63からのRDMA書き込みを介してGDISMクレジットレジスタへの更新が通知されると、ストリーミングエンジン124は、それに従ってクレジットレジスタを更新する。
【0313】
GDISMクレジットとESPクレジットとの間には関係がある。GDISMクレジットは、ゲートウェイ52に、1つのスーパーステップでホストメモリからゲートウェイメモリ114にデータを転送する許容を与える。ゲートウェイ52は、このスーパーステップのデータをメモリ114にロードした場合、GDISMクレジットをデクリメントし、1クレジットをESPクレジットに追加する。ここで、ESPクレジットの数がゼロよりも大きい場合、LSPM 117及び/又はLSBM 118は、同期要求に肯定応答するため、アクセラレータ51は、このデータのプル(任意のプルモデルに従ったプルを含む)を実行することができるか、又はゲートウェイ52は、アクセラレータ51へのデータのプッシュ(任意のプッシュモデルに従ったプッシュ)を行うことができる。
【0314】
図9を参照すると、
図9は、複数のアクセラレータ131、複数のゲートウェイ132及び複数のホスト133を含むシステム130の一例を示す。ゲートウェイ132は、互いに通信するため、ゲートウェイ132は、集合的にEthernet(登録商標)ネットワーク134を形成する。ゲートウェイ132間の通信は、アクセラレータとホストとの離解を可能にする。換言すれば、システム130内の任意のホスト133は、任意のアクセラレータ131と通信することが可能である。
【0315】
図9は、通信するホスト133と関連付けられた各ゲートウェイ132を示すが、幾つかの実施形態では、ゲートウェイ毎に1つのホストがない。幾つかの実施形態では、
図9に示すゲートウェイ132の1つのみがホスト133と直接通信し得る。その1つのホスト133は、複数のゲートウェイ134を制御することができる。ホストに結合されたゲートウェイは、データをホストから残りのゲートウェイ134に配布し得る。代替的に、複数のゲートウェイ134は、データをリモートストレージ151から検索し得る。
【0316】
1つのみのゲートウェイ134がホスト133と通信する場合、その1つのゲートウェイ134は、複数のゲートウェイ134のうち、ネットワークインターフェースデバイスを含む唯一のゲートウェイ134であり得る。これには、残りのゲートウェイの構築に必要な構成要素数を下げることによるコスト削減という利点がある。残りのゲートウェイは、データをホストに提供する場合、ホストと通信するためのネットワークインターフェースデバイスを含むゲートウェイにそのデータを提供する前にまずデータ増強動作をデータに対して実行し得る。
【0317】
幾つかの実施形態では、システム130に外部ホスト133は存在せず、むしろ、ホストシステムは、ゲートウェイ134の1つ又は複数で実行される。この場合、コンパイラは、ゲートウェイ134で実行される。
【0318】
幾つかの例では、ゲートウェイ132は、データをホスト133から受信し、このデータを1つ又は複数の他のゲートウェイ132に配布する。他の例では、ゲートウェイ132のサブセットがデータを1つ又は複数のホスト133から受信し、受信したデータを1つ又は複数の他のゲートウェイに配布する。1つ又は複数の他のゲートウェイ132の各々は、配布されたデータを関連するアクセラレータ131に提供し得る。そうすることにより、ゲートウェイ132の全てがホスト133からデータを受信する必要があるわけではない。この場合、ゲートウェイの全てに全帯域幅を提供する必要があるわけではないため、この方法は、コストを削減することができる。効率を改善することもできる。幾つかの例では、アクセラレータのグループ内の各アクセラレータ131は、同一のデータを受信し処理する。この場合、データは、ホスト133から1回のみフェッチするのみでよい。したがって、ゲートウェイ132は、上記データをホスト133から受信し、このデータのコピーを1つ又は複数のゲートウェイ132に配布し、1つ又は複数のゲートウェイ132は、関連するアクセラレータ131にデータをそれぞれ配布するように構成される。したがって、同じデータをホスト133から複数回フェッチする必要がないため、効率利得が実現される。更に、これは、ゲートウェイによるデータの検索にリモートストレージ151の使用と組み合わせることができる。検索へのリモートストレージ151の使用は、コスト削減を達成することができ、ゲートウェイが全帯域幅を有し得ることを意味する。ホストは、ストレージ記述子を多くのゲートウェイに送信し得、ゲートウェイは、並列してこれらの記述子に対して作用し、ゲートウェイ毎に独立したネットワーク接続を経由してリモートストレージ151からデータをプル/プッシュし得る。この技法は、ゲートウェイの数の関数としてI/Oをスケーリングする。
【0319】
幾つかの場合、ゲートウェイ132から1つ又は複数の他のゲートウェイ132に配布されたデータは、1つ又は複数の他のゲートウェイ132において変更される。例えば、1つ又は複数の他のゲートウェイ132は、データ増強(data augmentation)を1つ又は複数の他のゲートウェイ132に適用する。このデータ増強は、各ゲートウェイ内のDMEによって実行される。1つ又は複数の他のゲートウェイ132の各々が、受信したデータを変更した場合、データは、関連するアクセラレータ131に転送プッシュされる。プッシュモデルで動作しているゲートウェイは、DMOV命令を実行して、データを関連するアクセラレータ131にプッシュするように構成される。プルモデルで動作しているゲートウェイは、関連するアクセラレータから読み出し要求を受信し、それにより、データは、関連するアクセラレータ131にプルされる。
【0320】
予めコンパイルされたゲートウェイソフトウェアは、何れのアクセラレータ52が、ゲートウェイ132によってメモリ114に保持されている、何れのホストからの何れのデータを取得するかを指定する。アクセラレータコードのコンパイラは、データをアクセラレータ間でどのように分けるか及びそれによりアクセラレータ間でワークをどのように分けるかを決定する。ゲートウェイ132は、アクセラレータに向かって有する2つのPCIeポートにわたりI/Oトラフィックを負荷平衡する。
【0321】
システムのゲートウェイ及びアクセラレータ層は、システムのスケーリングを可能にするように複製される。
図12を参照すると、
図12は、複数のアクセラレータ162及び複数のゲートウェイ163を含む装置161の一例を示す。装置161は、機械161と呼ばれる。機械161は、4つのアクセラレータ162及び2つのゲートウェイ163を含む。ゲートウェイ163の各々は、1つ又は複数のホスト(図示せず)にも結合される。
【0322】
図13を参照すると、
図13は、
図12に示す複数の機械161を含む装置170の一例を示す。複数の機械161は、クラスタ171と呼ばれる装置171に配置される。各クラスタ171は、4つまでの機械161を含む。複数のクラスタ171は、ポッド171と呼ばれる装置170に配置される。各ポッド171は、32までの機械161を含む。このようにしてシステムをスケーリングすることにより、結果として生成されるポッド171は、128個のアクセラレータを含み、16PFLops及び8TBのDRAMを有するシステムを生成する。
【0323】
図12及び
図13に示すこのモデルでは、各ゲートウェイ163は、低遅延ブリッジをアクセラレータ162の2つ以上のグループ間に提供し、異なるゲートウェイ163に接続されたアクセラレータ162があたかも同じ内部ファブリックで接続されているかのように互いに通信できるようにする。パケットは、ゲートウェイ163のXPUポート(
図8に示される)においてアクセラレータ162から受信される。リモートアクセラレータにマッピングされるメモリ空間をターゲットとしているパケットは、XPUポートにおいて検出され、ゲートウェイ163の適切なファブリックポート(
図8に示される)に向ける。適切なアクセラレータポートで受信されたパケットは、適切なゲートウェイに転送される。そこから、ゲートウェイは、パケットを、パケットによってターゲットとされるメモリ空間によって示されるリモートアクセラレータに転送する。
【0324】
各ゲートウェイ163は、PCIeポートを含む。これらのPCIeポートの4つは、パケットをアクセラレータ162とやりとりするように構成される。各PCIeポート(
図12に示される)は、異なるアクセラレータ固有プロトコルを使用するように構成することができる。カスタムゲートウェイトランザクション層は、次いで、そのプロトコルとゲートウェイ内部プロトコルとの間の変換を行う。カスタムゲートウェイ層は、アドレスマップを実施し、コレクティブ及ブロードキャスト/マルチキャストオフロードサポートを提供する。各ゲートウェイ163は、アドレスマッピングスキームを提供し、グローバルアドレス空間において参加している全てのアクセラレータ162を露出する。アクセラレータ162からゲートウェイ163において受信したパケットは、パケットをルーティングする宛先ゲートウェイを識別するゲートウェイIDを含む。
【0325】
グローバルアドレス空間は、ポッド170に属する全てのアクセラレータ162及び全てのゲートウェイ163のメモリリソースを包含する。アクセラレータは、グローバルアドレス空間内のアドレスを指定するパケットを送り得る。アドレスの幾つかの部分は、ターゲットゲートウェイでリソースを選択するために使用される。アドレスの幾つかの部分は、アドレス指定されているゲートウェイの識別に使用される。幾つかの他の部分は、ゲートウェイメモリ又は関連するアクセラレータのタイルメモリ内のメモリにおけるアドレスを識別するために使用される。アクセラレータのタイルメモリは、タイルインデックス及びメモリオフセットによってアドレス指定可能である。アドレスは、データパケットのデータが記憶されるアクセラレータ内のロケーションを識別するために、このタイルインデックス及びメモリオフセットを含み得る。
【0326】
パケットが受信されると、アドレス内のゲートウェイの識別情報がこのゲートウェイのグローバルIDと比較される。一致がある場合、要求は、このゲートウェイに属するリソース(ローカルアクセラレータ又はローカルメモリ)をターゲットとしている。一致がない場合、アドレスの部分は、ルーティングテーブルのインデックス付けに使用される。ルーティングテーブルの内容は、システム内のターゲットポートを示す。アドレスの幾つかのビットは、ゲートウェイルーティングテーブルと照合されて、パケットを何れにルーティングするかを判断する。
【0327】
進入パケットパイプラインは、必要とされる特徴の実施に必要なパイプライン段以外にバッファがないカットスルーパイプラインであることが意図される。パケットは、まず、マルチキャスト/ブロードキャスト、コレクティブ及びユニキャスト/メモリ書き込みとのタイプによって分類される。これらは、次いで、処理のために個々のブロックに分割される。ゲートウェイ52は、ユニキャストパケットを処理するためのユニキャストモジュール及びマルチキャストグループ化テーブルを含み得る。ユニキャストパケットルーティングテーブルは、ユニキャストパケット、すなわち単一のアクセラレータに向けられたパケットのルーティングを実行するためにゲートウェイ52によって使用される。入力アドレスは、復号化され、選択されたビットが宛先の特定に使用される。これは、2ステッププロセスである。まず、ゲートウェイIDビットを使用して、このパケットがこのゲートウェイをターゲットとするか否かを判断する。このゲートウェイをターゲットとしていない場合、ゲートウェイIDビットは、このパケットの出力ファブリックポートを返すルーティングテーブルのインデックス付けに使用される。
【0328】
パケットがゲートウェイ52をターゲットとしている場合、パケットアドレス内のローカルアドレスビットを使用して、複数の領域からなるローカルゲートウェイベースアドレスレジスタ(BAR)の組、すなわちゲートウェイメモリに1つのBAR及び各アクセラレータポートに1つのBARを調べる。パケットがゲートウェイメモリ、例えばメモリ114に記憶されるものであることをローカルアドレスビットが示す場合、パケットは、ゲートウェイメモリのBAR内のアドレスに従ってゲートウェイメモリに記憶される。パケットがアクセラレータに送られるものであることをローカルアドレスビットが示す場合、パケットは、ゲートウェイ52のDME 122に転送される。そこから、データパケットは、関連するアクセラレータポートのBAR内のアドレスに従ってアクセラレータに転送され得る。
【0329】
マルチキャスト/ブロードキャストサービスを指定するパケットは、マルチキャストグループテーブルにおいて処理される。各ファブリックポートは、各グループのコピーを取得するポートのリストを有するそれ自体のテーブルを有する(ブロードキャストを含む)。3つの組の宛先がある。第1に、パケットは、パケットがゲートウェイと同じvファブリックに属する場合のみ、ローカルアクセラレータに送信される。第2に、全ての入力ブロードキャスト/マルチキャストパケットは、ファブリックテーブルと突き合わせてチェックされて、転送されなければならないか否かを調べる。第3に、コピーがローカルDRAMに送信される。宛先ポートベクトルが構築されると、ベクトル及びパケットは、複製サービスを提供するスイッチ相互接続に転送される。
【0330】
本願の実施形態の実施について記載されたシステム、すなわちゲートウェイ及びコンピュータサブシステムは、1つ又は複数のデータプロセッサによって提供され得る必要とされるデータ処理装置及び機能を含む。ストリーミングエンジン及び同期伝播モジュール等のゲートウェイの異なる構成要素は、そのようなデータプロセッサによって提供し得る。データプロセッサは、ローカル技術環境に適する任意のタイプであり得、非限定的な例として、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)及びマルチコアプロセッサアーキテクチャに基づくプロセッサの1つ又は複数を含み得る。データ処理は、幾つかのデータ処理モジュールにわたり分散し得る。
【0331】
図面を参照して本明細書に記載した実施形態の少なくとも幾つかの態様は、処理システム又はプロセッサで実行されるコンピュータプロセスを含むが、本発明は、本発明を実施するように適合されたコンピュータプログラム、特にキャリア上又はキャリア内のコンピュータプログラムにも拡張する。プログラムは、非一時的ソースコード、オブジェクトコード、部分的にコンパイルされた形態等のコード中間ソース及びオブジェクトコードの形態又は本発明によるプロセスの実施での使用に適した任意の他の非一時的形態であり得る。キャリアは、プログラムを搬送することが可能な任意のエンティティ又はデバイスであり得る。例えば、キャリアは、ソリッド・ステート・ドライブ(SSD)又は他の半導体ベースのRAM、ROM、例えばCD-ROM又は半導体ROM、磁気記録媒体、例えばフロッピーディスク又はハードディスク、光メモリデバイス全般等を含み得る。
【0332】
本明細書の記載の例は、本発明の実施形態の説明のための例として理解されたい。更なる実施形態及び例が考えられる。任意の1つの例又は実施形態に関連して説明された任意の特徴は、単独で又は他の特徴と組み合わせて使用され得る。加えて、任意の1つの例又は実施形態に関連して説明された任意の特徴は、任意の他の例若しくは実施形態又は任意の他の例若しくは実施形態の任意の組合せの1つ又は複数の特徴と組み合わせて使用され得る。更に、特許請求の範囲に規定される本発明の範囲内において、本明細書に記載されていない均等物及び変更形態を利用することもできる。
【0333】
上記実施形態が単なる例として説明されたことが理解されるであろう。
【0334】
本明細書における開示を所与として、開示された技法の他の変形形態及び/又は用途が当業者に明らかになり得る。本開示の範囲は、記載の実施形態によって限定されず、添付の特許請求の範囲によってのみ限定される。
【0335】
上記実施形態は、単なる例として記載されたことが理解されるであろう。より一般には、本明細書に開示される一態様によれば、1.少なくとも1つのホストを、少なくとも1つのホストに対してワークアクセラレータとして作用する1つ又は複数のサブシステムと接続し、サブシステムの計算フェーズと交換フェーズとの間のバリアとして作用する、サブシステムによって到達される事前コンパイル済みデータ交換同期点において、1つ又は複数のサブシステムへの及びサブシステムからのデータの転送を可能にするゲートウェイであって、1つ又は複数の同期伝播回路を含み、同期伝播回路の少なくとも1つは、後の事前コンパイル済みデータ交換同期点において同期ネットワークのサブシステム間で同期を実行するための1つ又は複数の同期要求を同期ネットワーク内の1つ又は複数の下流パスから受信することと、1つ又は複数の同期要求の受信に応答して、複数の同期要求を同期ネットワーク内で異なるパスに沿って上流に伝播させることと、複数の同期要求の伝播に続いて、異なるパスの少なくとも1つから少なくとも1つの同期肯定応答を受信することと、少なくとも1つの同期肯定応答の受信に応答して、1つ又は複数の同期要求が受信された1つ又は複数の下流パスの各々に沿って同期肯定応答を伝播させることとを行うように構成される、ゲートウェイを含むゲートウェイが提供される。
【0336】
幾つかの実施形態では、同期伝播回路の少なくとも1つは、少なくとも1つの同期肯定応答のうち、最初の同期肯定応答の受信に応答して、タイマを開始することと、異なるパスの全てから同期肯定応答を受信することなく、タイマによって定義された所定の期限が切れたことに応答して、続けて、タイマが切れる前に同期肯定応答が受信されなかった同期ネットワーク内の異なるパスの各々に沿って同期要求を伝播させることなく、更なるデータ交換同期点のための1つ又は複数の同期要求を同期ネットワーク内で上流に伝播させることと、を実行するように構成される。
【0337】
幾つかの実施形態では、1つ又は複数の同期要求が受信された1つ又は複数の下流パスの各々に沿って同期肯定応答を伝播させるステップは、タイマによって定義される所定の期限が切れたことに応答して実行される。
【0338】
幾つかの実施形態では、複数の同期要求を同期ネットワーク内で異なるパスに沿って上流に伝播させることは、複数の同期要求の少なくとも1つをゲートウェイに送信することを含む。
【0339】
幾つかの実施形態では、1つ又は複数の同期伝播回路の少なくとも1つは、1つ又は複数の同期要求を1つ又は複数のサブシステムから受信することと、1つ又は複数の同期要求に応答して、単一の同期要求を同期ネットワーク内で上流に伝播させることと、を実行するように構成される
【0340】
幾つかの実施形態では、単一の同期要求を同期ネットワーク内で上流に伝播させることは、同期伝播回路の少なくとも1つのうちの1つに単一の同期要求を伝播させることを含む。
【0341】
幾つかの実施形態では、ゲートウェイは、少なくとも1つのストレージを含み、ストレージは、少なくとも1つの同期伝播回路において1つ又は複数の同期要求を受信する前に、1つ又は複数のサブシステムから、同期ネットワークの少なくとも一部の構成設定の指示を受信するように構成され、少なくとも1つの同期伝播回路は、構成設定の指示に応じて、複数の同期要求を上流に伝播させる異なるパスを選択するように構成される。
【0342】
幾つかの実施形態では、構成設定の指示は、構成設定を含む。
【0343】
幾つかの実施形態では、構成設定の指示は、少なくとも1つのストレージに保持された構成設定の組の識別子を含む。
【0344】
幾つかの実施形態では、少なくとも1つのストレージは、1つ又は複数のレジスタを含む。
【0345】
幾つかの実施形態では、1つ又は複数の同期伝播回路の1つは、受信された同期要求を更なる同期伝播モジュールに伝播させることなく、受信された同期要求に対して肯定応答するように構成される。
【0346】
幾つかの実施形態では、ゲートウェイは、システムオンチップである。
【0347】
幾つかの実施形態では、少なくとも1つの同期伝播回路は、1つ又は複数の同期要求の受信に応答して、複数の同期要求を同期ネットワーク内で異なるパスに沿って上流に伝播させるステップを実行するように構成された2つの同期伝播回路を含む。
【0348】
幾つかの実施形態では、任意の先行する請求項に記載のゲートウェイを含む複数のゲートウェイである。
【0349】
幾つかの実施形態では、複数のゲートウェイは、同期ネットワークのための複数のマスタゲートウェイを含み、マスタゲートウェイの各々は、少なくとも1つの同期要求を受信し、少なくとも1つの同期要求の受信に応答して、少なくとも1つの同期肯定応答を返すように構成された同期伝播回路を含む。
【0350】
第2の態様によれば、少なくとも1つのホストを、少なくとも1つのホストに対してワークアクセラレータとして作用する1つ又は複数のサブシステムと接続するためのゲートウェイで実行される方法が提供され、ゲートウェイは、サブシステムの計算フェーズと交換フェーズとの間のバリアとして作用する、サブシステムによって到達される事前コンパイル済みデータ交換同期点において、1つ又は複数のサブシステムへの及びそれからのデータの転送を可能にし、方法は、後の事前コンパイルデータ交換同期点において同期ネットワークのサブシステム間で同期を実行するための1つ又は複数の同期要求を同期ネットワーク内の1つ又は複数の下流パスから受信することと、1つ又は複数の同期要求の受信に応答して、複数の同期要求を同期ネットワーク内で異なるパスに沿って上流に伝播させることと、複数の同期要求の伝播に続いて、異なるパスの少なくとも1つから少なくとも1つの同期肯定応答を受信することと、少なくとも1つの同期肯定応答の受信に応答して、1つ又は複数の同期要求が受信された1つ又は複数の下流パスの各々に沿って同期肯定応答を伝播させることとを含む。
【国際調査報告】