(58)【調査した分野】(Int.Cl.,DB名)
前記送信命令には明示的に送信アドレスが定義されておらず、前記データパケットは、前記送信命令によって暗黙的に定義されたレジスタで定義された送信アドレスから送信される、請求項1に記載のコンピュータ。
前記スイッチング回路は、その処理ユニットに接続された出力ワイヤの出口セットと、前記スイッチングファブリックに接続された入力ワイヤの複数のセットとを有するマルチプレクサを備え、
前記入力ワイヤの複数のセットのうちの1つが、前記処理ユニットによって制御されるように選択される、請求項1〜5のいずれか1項に記載のコンピュータ。
前記受信側処理ユニットは、前記データパケットを受信し、メモリポインタによって識別されるメモリ位置でそれを前記データ記憶装置にロードするように構成される、請求項1〜6のいずれか1項に記載のコンピュータ。
前記送信命令は、送信されるべきデータパケットの数を識別し、各データパケットは、異なる送信時間に紐付けられる、請求項1〜9のいずれか1項に記載のコンピュータ。
前記受信側処理ユニットは、より早い時間に送信命令を実行した前記処理ユニットと同じ処理ユニットであり、これにより、同じ前記処理ユニットがデータパケットを送信し、後にそのデータパケットを受信するように構成される、請求項1〜11のいずれか1項に記載のコンピュータ。
複数の処理ユニットは、個別のデータパケットを送信するために個別の送信命令を実行するように構成され、前記データパケットのうちの少なくともいくつかは、いずれの受信側処理ユニットにも向けられない、請求項1〜12のいずれか1項に記載のコンピュータ。
前記処理ユニットの少なくとも2つは送信ペアで協同し、第1のデータパケットは接続ワイヤのその出力セットを介して前記ペアの第1処理ユニットから送信され、第2のデータパケットは前記ペアの第2処理ユニットの接続ワイヤの前記出力セットを介して前記ペアの前記第1処理ユニットから送信されて、ダブル幅伝送を行う、請求項1〜13のいずれか1項に記載のコンピュータ。
少なくとも2つの前記処理ユニットが受信ペアとして動作し、前記ペアの各処理ユニットは、そのスイッチング回路を制御して、ワイヤのその個別の入力セットをスイッチングファブリックに接続し、送信ペアの個別のタイルから個別のデータパケットを受信する、請求項1〜14のいずれか1項に記載のコンピュータ。
ローカルプログラムを保持する命令記憶部を各々が有する複数の処理ユニットと、前記ローカルプログラムを実行する実行ユニットと、データを保持するためのデータ記憶装置と、入力ワイヤのセットを有する入力インターフェース及び出力ワイヤのセットを有する出力インターフェースと、前記出力ワイヤの個別のセットによって前記処理ユニットの各々に接続され、各処理ユニットによって制御可能なスイッチング回路を介して、それらの個別の入力ワイヤによって前記処理ユニットの各々に接続可能なスイッチングファブリックと、コンピュータを制御して計算段階と交換段階とを切り替えるため同期信号を生成するように動作可能な同期モジュールとを備えるコンピュータにおける関数を計算する方法であって、
前記処理ユニットが共通クロックに従って前記計算段階でそれらのローカルプログラムを実行し、ここで、前記交換段階において、少なくとも1つの処理ユニットがそのローカルプログラムからの送信命令を実行して送信時間にデータパケットを接続ワイヤの出力セットに送信し、前記データパケットは少なくとも1つの受信側処理ユニットに宛てられているが、通信先識別子を有しておらず、
所定のスイッチ時間において、前記受信側処理ユニットがそのローカルプログラムからのスイッチ制御命令を実行して前記スイッチング回路を制御し、ワイヤの入力セットを前記スイッチングファブリックに接続して受信時間に前記データパケットを受信し、
前記送信時間、スイッチ時間、及び受信時間は、前記同期信号に関して前記共通クロックによって管理される、方法。
前記計算段階では、各コードレットは結果を生成するためにデータ処理し、前記結果のいくつかは後続の計算段階には必要とされず、いずれの受信側処理ユニットによっても受信されない、請求項17に記載の方法。
前記交換段階では、前記データパケットが前記スイッチングファブリック及びスイッチング回路を介して処理ユニット間で送信される、請求項16〜18のいずれか1項に記載の方法。
各処理ユニットは、自体の計算段階が完了したことを前記同期モジュールに示し、前記交換段階を開始するために、すべての処理ユニットが自体の計算段階が完了したことを示すと、前記同期信号が前記同期モジュールによって生成される、請求項16〜19のいずれか1項に記載の方法。
前記交換段階では、データパケットは一連の一時記憶装置を介して、パイプライン方式で前記スイッチングファブリックを通過して送信され、各記憶装置が前記共通クロックの1サイクル分のデータパケットを保持する、請求項16〜21に記載の方法。
【発明を実施するための形態】
【0026】
図1は、単一チッププロセッサ2のアーキテクチャを概略的に示す。プロセッサは、本明細書では、インテリジェンス処理ユニット(Intelligence Processing Unit)と呼ばれ、機械知能アプリケーションへの適応性を示す。コンピュータでは、チップ上のリンクを使用して、後述して説明するように、単一チッププロセッサを互いに接続してコンピュータを形成することができる。本明細書では、単一チッププロセッサ2のアーキテクチャに焦点を当てている。プロセッサ2は、タイルと呼ばれる複数の処理ユニットを備える。一実施形態では、アレイ6a、6bに編成された1216個のタイルが存在し、これらは本明細書において「ノース」及び「サウス」と称される。記述された実施例では、各アレイは76個のタイルを8列有している(実際には、冗長目的のために一般に80個のタイルが配列されている)。本明細書で説明される概念は、多数の異なる物理的アーキテクチャに拡張され、理解を支援するためにここでは1つの実施例が示されていることが理解されよう。チップ2は、2つのチップ対ホストリンク8a、8bと、チップ2の「ウエスト」エッジ上に配置された4つのチップ対チップリンク30a、30bと、を有する。チップ2は、チップ2によって処理されるべき入力データの形態でカード−ホスト間リンクの1つを介してチップに接続されたホスト(図示せず)からワーク(work)を受け取る。チップは、チップの「イースト」側に沿って配置されたさらに6つのチップ間リンク30a、30bによって、カードに一緒に接続することができる。ホストは、ホストアプリケーションからのワークロード(workload)に応じて、本明細書で説明されるような単一チッププロセッサ2又は複数の相互接続された単一チッププロセッサ2のグループとして構築されたコンピュータにアクセスすることができる。
【0027】
チップ2は、チップ動作のタイミングを制御するクロック3を有する。クロックは、チップ回路及びコンポーネントのすべてに接続されている。チップ2は、全てのタイルとリンクが接続ワイヤのセットによって接続された時間決定性スイッチングファブリック34を含む。スイッチングファブリックはステートレスであり、すなわちプログラム可視状態を有しない。接続ワイヤの各セットは、端部から端部まで固定されている。ワイヤはパイプライン化されている。この実施形態では、1セットは32本のデータワイヤと制御ワイヤからなっており、例えば有効ビットである。各セットは32ビットのデータパケットを運ぶことができるが、ここでは、「パケット」という用語は、1つ又は複数の有効ビットを有するデータ(本明細書ではデータアイテムと称することもある)を表すビットのセットを意味することに留意されたい。「パケット」は、意図された受信側を一意に識別できるヘッダ又は任意な形式の宛先識別子を持たず、パケット終端情報を有しない。その代わりに、それぞれがタイルに入力又はタイルから出力される数値又は論理値を表す。各タイルはそれ自体のローカルメモリを有している(後述する)。タイルはメモリを共有しないのである。スイッチングファブリックは、後述するように、マルチプレクサ及びタイルにのみ接続される十字セットの接続ワイヤを構成し、プログラムの可視状態を保持しない。スイッチングファブリックはステートレスと看做され、メモリを使用しない。タイル間のデータ交換は、本明細書で説明するように時間決定論的ベースで行われる。パイプライン接続ワイヤは、一連のテンポラリストア、例えば、次の記憶装置に解放する前にクロックサイクルのためにデータを保持するラッチ又はフリップフロップである。ワイヤに沿った移動時間は、これらのテンポラリストアによって判定され、各自が任意な2つのポイント間のパスでクロックサイクルの時間を使い切る。
【0028】
図2は、本開示の実施形態による例示的なタイル4を示す。タイルでは、複数のスレッドが1つの実行パイプラインを経由してインターリーブされる。タイル4は、それぞれが複数のスレッドの異なる個別のスレッドの状態を表すように構成された複数のコンテキスト26と、複数のスレッドに共通な共有命令メモリ12と、複数のスレッドにも共通な共有データメモリ22と、複数のスレッドにも同様に共通な共有実行パイプライン14、16、18と、インターリーブされた方法で共有パイプラインを介して実行するために複数のスレッドをスケジューリングするためのスレッドスケジューラ24とを含む。スレッドスケジューラ24は、タイムスロットS
0・・・S
5のシーケンスによって図に概略的に示されているが、実際には、それらのタイムスロットに関連してスレッドのプログラムカウンタを管理するハードウェア機構である。実行パイプラインは、フェッチステージ14、デコードステージ16、実行ユニット(EXU)及びロード/ストアユニット(LSU)を備える実行ステージ18からなる。コンテキスト26の各々は、それぞれのスレッドのプログラム状態を表すレジスタR
0、R1
1・・・のセットを含む。
【0029】
フェッチステージ14は、スレッドスケジューラ24の制御下で、命令メモリ12から実行されるフェッチ命令に接続されている。スレッドスケジューラ24は、フェッチステージ14を制御して、以下でより詳細に説明するように、各タイムスロットにおける実行のためにローカルプログラムから命令をフェッチするように構成される。
【0030】
フェッチステージ14は、現在タイムスロットに割り当てられている各スレッドのプログラムカウンタ(PC)にアクセスする。所与のスレッドの場合、フェッチステージ14は、スレッドのプログラムカウンタによって示されるように、そのスレッドの次の命令を命令メモリ12の次のアドレスからフェッチする。本明細書で言及される命令は、機械コード命令、すなわち、オペコード及び0又はそれ以上のオペランドで構成された、コンピュータ命令セットにおける基本命令の1つのインスタンスを意味することに留意されたい。各タイルにロードされるプログラムは、サポートされている機械知能モデルのグラフに基づいて作業を割り当てるプロセッサ又はコンパイラによって判定されることにも留意されたい。
【0031】
次に、フェッチステージ14は、フェッチした命令をデコードするためにデコードステージ16に渡し、次にデコードステージ16は、命令内で指定した現在のコンテキストの任意のオペランドレジスタのデコードしたアドレスと共に、命令が実行されるように、デコードした命令の指示を実行ステージ18に渡す。
【0032】
この実施例では、スレッドスケジューラ24は、ラウンドロビン方式に従ってスレッドをインターリーブし、これにより、スキームの各ラウンド内で、ラウンドはタイムスロットS
0、S
1、S
2、S
3のシーケンスに分割され、それぞれが個別のスレッドを実行する。典型的には、各スロットは1プロセッササイクル長であり、異なるスロットは均一に形成される(すべての可能な実施形態において必ずしもそうであるとは限らないが)。その後、このパターンは繰り返され、各ラウンドは各タイムスロットの個別のインスタンスを含む(ある実施形態では毎回同じ順序であるが、必ずしも全ての可能な実施形態でそうであるとは限らない)。従って、本明細書で言及されるタイムスロットは、シーケンスの所与の反復におけるタイムスロットの特定なインスタンスではなく、シーケンスにおける反復割り当てされた場所を意味することに留意されたい。図示の実施形態では、8つのタイムスロットが存在するが、他の数も可能である。各タイムスロットは、ハードウェアリソース、例えば、レジスタに紐付けられ、実行中のスレッドのコンテキストを管理する。
【0033】
SVとラベル付けされたコンテキスト26のうちの1つには、「ワーカー」スレッドの実行を調整することがそのジョブである「スーパーバイザ」(SV)の状態を表すために特別な機能が確保されている。スーパーバイザは、同時に実行することができる1つ以上のスーパーバイザスレッドとして編成されたプログラムとして実装することができる。スーパーバイザスレッドは、後述するバリア同期を実行する役割を担うこともあり、あるいは、タイルをオンオフするとともにローカルメモリの内外でデータ交換の責任を負い、計算の間にワーカースレッド間で共有することができるようになる。スレッドスケジューラ24は、全体としてプログラムが起動すると、すべてのタイムスロットにスーパーバイザスレッドを割り当てることによって開始されるように、すなわち、スーパーバイザSVが全タイムスロットS0〜S5で実行を開始するように構成される。しかし、スーパーバイザスレッドには、後続のある時点(1つ又は複数のスーパーバイザタスクを実行すると直ぐに又は直後に)で、実行中の各スロットを一時的にワーカースレッドC
0、C
1に放棄し、これらにはワーカースレッドが割り当てられたスロットを意味するメカニズムが具備される。これは、スーパーバイザスレッドが本明細書における一例として「RUN」と呼ばれる放棄命令を実行することによって達成される。実施形態では、この命令は、命令メモリ12内のワーカースレッドのアドレスと、データメモリ22内のそのスレッドのためのいくつかのデータのアドレスとの2つのオペランドを取る。すなわち、RUN task_addr,data_addr。
【0034】
各ワーカースレッドは、グラフの頂点を表し、アトミックに実行するためのコードレットである。すなわち、それが消費する全てのデータが起動時に使用可能となり、生成するすべてのデータは、終了するまで他のスレッドには見えない。これは完了するまで実行される(但し、エラー条件を除く)。データアドレスは、コードレットによって処理されるいくつかのデータを指定してもよい。あるいは、放棄命令は、コードレットのアドレスを指定する単一のオペランドのみを取り、データアドレスをコードレットのコードに含めてもよいし、又は、単一のオペランドがコードレット及びデータのアドレスを指定するデータ構造を指し示してもよい。コードレットは、互いに同時に独立して実行してもよい。
【0035】
いずれにせよ、この放棄命令(「RUN」)はスレッドスケジューラ24上で動作し、現行タイムスロット、すなわち、この命令が実行されるタイムスロットをオペランドによって指定されたワーカースレッドに放棄する。放棄命令では、放棄されるのがこの命令が実行されたタイムスロットであることが暗示されていることに留意されたい(機械語命令の文脈において暗示とは、これを指定するためにオペランドを必要としないことを意味し、オペコード自体から暗黙に理解されるということである)。従って、手放されたスロットは、スーパーバイザが放棄命令を実行したスロットである。別の言い方をすれば、スーパーバイザはそれが手放されるのと同じスペースで実行している。スーパーバイザは「このタイムスロットでこのコードレットを実行する」と言うと、その時点以降、スロットが関連するワーカースレッドによって(一時的に)所有される。スーパーバイザがスロットを使用する場合、スーパーバイザはそのスロットに紐付けられるコンテキストを使用せず、それ自体のコンテキストSVを使用することに留意されたい。
【0036】
スーパーバイザスレッドSVは、タイムスロットの各々において同様な動作を実行して、全てのそのスロットC
0、C
1をワーカースレッドの異なる個別のものに放棄する。最後のスロットでこれが実行されると、スーパーバイザは実行すべきスロットを持たないため、実行を一時停止する。スーパーバイザはすべてのスロットを手放さず、それ自体のためにいくつかを保持していてもよいことに留意されたい。
【0037】
スーパーバイザスレッドは、コードレットを実行するタイミングであると判断すると、放棄命令(RUN)を使用して、このコードレットを、これが「RUN」命令を実行するスロットに割り当てる。
【0038】
スロットC
0、C
1内の各ワーカースレッドは、1つ又は複数の計算タスクの実行へと進む。そのタスクの終了時に、ワーカースレッドは、実行中のタイムスロットをスーパーバイザスレッドに手渡す。
【0039】
これは、終了命令(「EXIT」)を実行するワーカースレッドによって達成される。一実施形態では、EXIT命令は、終了時に個別のコードレットの状態を示すためにプログラマが所望する任意の目的に使用される少なくとも1つのオペランド、好ましくは単一のオペランド、終了状態(例えば2進値)をとる。
【0041】
一実施形態では、EXIT命令は、これが実行されるタイムスロットがスーパーバイザスレッドに戻されるように、スケジューラ24に作用する。その後、スーパーバイザスレッドは、1つ以上のその後のスーパーバイザタスクを実行することができる(例えば、バリア同期及び/又はワーカースレッド間のデータ交換を容易にするためにメモリ内でのデータ移動)、及び/又は、別の放棄命令を実行し続けて、当該スロットに新しいワーカースレッド(W4など)を割り当てる。従って、命令メモリ12内のスレッドの総数は、バレルスレッド処理ユニット10がどの時点においてもインターリーブすることができる数よりも大きくてもよいことに再度留意されたい。スーパーバイザスレッドSVの役割は、プログラム全体のどの段階で命令メモリ12からワーカースレッドW0・・・Wjのどれを実行するかをスケジュールすることである。
【0042】
別の実施形態では、EXIT命令は終了状態を定義する必要はない。
【0043】
この命令は、スレッドスケジューラ24に作用し、これが実行されるタイムスロットがスーパーバイザスレッドに戻されるようになる。その後、スーパーバイザスレッドは、1つ又は複数のスーパーバイザ後続タスク(例えば、バリア同期及び/又はデータ交換)を実行し、及び/又は別の放棄命令を実行し続けること等々が可能となる。
【0044】
簡単に上述したように、データはチップ内のタイル間で交換される。各チップは、計算段階及び交換段階を含むバルク同期並列プロトコルを動作させる。このプロトコルは、例えば
図3に示されている。
図3の左側の図は、ステートフルコードレットがローカルメモリ(12、22)上で実行する段階に各タイル4が置かれている計算段階を表している。
図3では、タイル4が円に配列されて示されているが、これは説明のためにのみ描かれたものであって、実際のアーキテクチャを反映していない。
【0045】
計算段階の後、矢印30によって示される同期が存在する。これを達成するために、プロセッサの命令セットにSYNC(同期)命令が提供される。SYNC命令は、現在実行中のすべてのワーカーWがEXIT命令によって終了するまでスーパーバイザスレッドSVを待機させる効果を有している。実施形態では、SYNC命令は、オペランド(実施形態ではその唯一のオペランド)としてモードをとり、モードはSYNCが、同じプロセッサモジュール4上、例えば、同じタイル上でローカルに動作するそれらのワーカースレッドのみに対してローカルにのみ動作するか、あるいは、代わりに複数のタイルに又は複数のチップにわたって適用するかどうかを指定する。
【0046】
SYNC mode//mode ∈ {tile, chip, zone_1, zone_2}
【0047】
BSPそれ自体は当技術分野で公知である。BSPによれば、各タイル4は、交互サイクルにおいて、計算段階52及び交換(時には、通信又はメッセージパッシングと呼ばれる)段階50を実行する。計算段階及び交換段階は、タイル実行命令によって実行される。計算段階52の間に、各タイル4は、タイル上でローカルに1つ以上の計算タスクを実行するが、これら計算の結果をタイル4の他のものと通信しない。交換段階50において、各タイル4は、群内におけるタイルの1つ以上の他のタイルへ、及び/又は1つ以上の他のタイルから、前段の計算段階からの1つ以上の計算結果を交換(通信)することを許可されが、別のタイル4上で実行されるタスクに潜在的な依存性を有するか、又は、別のタイル4上のタスクが潜在的に依存性を有する可能性のある新たな計算をまだ実行しない(交換段階において内部統制関連作業のような他の作業が行われることを排除するものではない)。さらに、BSPの原理によれば、バリア同期は、計算段階52から交換段階50へ、又は交換段階50から計算段階52へ、あるいは、その両方へ移行する分岐に置かれる。すなわち、(a)群内のいずれかが次の交換段階50に進むことが許可される前に、全てのタイル4がそれぞれの計算段階52を完了する必要があるか、(b)群内のいずれかのタイルが次の計算段階52に進むことが許可される前に、群内の全てのタイル4がそれぞれの交換段階50を完了することが要求されるか、(c)これらの条件の両方が実行されるかのいずれかである。交換及び計算段階のこのシーケンスは、複数回にわたって繰り返されてもよい。BSP用語では、交換段階と計算段階の各繰り返しは、本明細書では「スーパーステップ」と称するが、BSPのいくつかの既存の記述で使用されているものと一致している。本明細書では、用語「スーパーステップ」は、交換段階及び計算段階のそれぞれを示すために当技術分野で使用される場合もあることに留意されたい。
【0048】
実行ステージ18の実行ユニット(EXU)は、SYNC命令のオペコードに応答して、オンチップ(タイル間)オペランドによって修飾されたときに、アレイ6内の全てのタイル4がワーカーの実行を終了するまで、「SYNC chip」が実行されたスーパーバイザスレッドに一時停止されるよう命じる。これは、次のBSPスーパーステップへのバリアを実装するために使用でき、すなわち、チップ2上の全てのタイル4がバリアを通過した後、全体としてクロスタイルプログラムは次の交換段階50に進むことができる。
【0049】
各タイルは、その同期状態を同期モジュール36に指示する。各タイルがデータを送信する準備が整うと、同期プロセス30は、システムに
図3の右側に示される交換段階に入らせる。この交換段階では、データ値がタイル間で移動する(実際には、メモリ間のデータ移動ではタイルのメモリ間で移動するが)。交換段階では、タイルプログラム間における同時処理ハザードを引き起こす可能性のある計算は存在しない。交換段階では、各データは、送信タイルから1つ又は複数の受信側タイルに向かってタイルを抜け出ていく接続ワイヤに沿って移動する。各クロックサイクルでは、データはパイプライン方式でそのパス(ストアからストアへ)に沿って一定の距離を移動する。タイルからデータが発行されると、受信側タイルを識別するヘッダを伴っては発行されない。代わりに、受信側タイルは、特定の時間に特定の送信タイルからのデータを予期していることが分かっている。従って、本明細書に記載のコンピュータは時間決定論的である。各タイルは、プログラマによって、又はコンパイラの演習によって割り当てられたプログラムを操作し、ここで、プログラマ又はコンパイラ機能は、特定の時間において特定のタイルによって何が送信されるのか、特定の時間において受信側のタイルによって受信される必要があるものについて把握している。これを達成するために、各タイルのプロセッサによって実行されるローカルプログラムにSEND命令が含まれ、ここでは、SEND命令の実行時間は、コンピュータ内の他のタイル上で実行されている他の命令のタイミングに対して予め定められている。これについては後述してより詳細に説明するが、先ず、受信側タイルが所定の時間にデータを受信できるメカニズムについて説明する。各タイル4は、それ自体のマルチプレクサ210に紐付けられており、従って、チップは1216個のマルチプレクサを有する。各マルチプレクサは1216個の入力を持ち、各入力は32ビット幅である(必要に応じていくつかの制御ビットを加えたもの)。各入力は、スイッチングファブリック34内の接続ワイヤ140
x inの個別のセットに接続される。スイッチングファブリックの接続ワイヤはまた、各タイル(後述する放送交換バス)からの接続ワイヤ218のデータアウトセットに接続されているので、この実施形態では、チップを横切る方向に延在する1216セットの接続ワイヤが存在する。例示を容易にするために、サウスアレイ6bにおいて
図2には示されていないタイルからのデータアウトワイヤ218sに接続された単一の誇張したワイヤセット140
sが示されている。このワイヤセットは、それがクロスワイヤ140
0〜140
1215の多数のセットの1つであることを示すために140
xとラベル付けされている。
図2に示すように、マルチプレクサ210が220
xとラベル付けされた入力に切り替えられたとき、クロスワイヤ140
xに接続され、結果的にサウスアレイ6bからタイル(
図2には示されていない)のデータアウトワイヤ218
sに接続されることとなるのが理解されよう。ある時点でマルチプレクサがその入力(220
sc)に切り替わるように制御されている場合、接続ワイヤ140xのセットに接続されたデータアウトワイヤ上で受信されたデータは、ある時点でマルチプレクサ210の出力230に現出するであろう。その後、タイル4に到達すると、その遅延はタイルからのマルチプレクサの距離に依存する。マルチプレクサがスイッチングファブリックの一部を形成するため、タイルからマルチプレクサへの遅延は、タイルの位置に応じて変化し得る。スイッチングを実装するために、タイル上で実行されるローカルプログラムには、マルチプレクサ制御信号214を発行させ、そのタイルに紐付けられたマルチプレクサを制御して、特定のデータがタイルで受信されると予期される時間よりも前の一定時間において入力を切り替えるスイッチ制御命令(PUTi)が含まれる。交換段階では、マルチプレクサが切り替えられ、スイッチングファブリックを使用してタイル間でパケット(データ)が交換される。この説明から、スイッチングファブリックは状態を有さないことが明らかであり、各データの移動は、各マルチプレクサの入力が切り替えられる特定のワイヤセットによって予め定められる。
【0050】
交換段階では、すべてのタイルとすべてのタイル通信が有効となる。交換段階は複数のサイクルを有することができる。各タイル4は、それ自体の固有の入力マルチプレクサ210の制御を有する。チップ内の他のタイル、又は接続リンクの1つからの入トラフィックを選択できる。マルチプレクサが「ヌル」入力、つまり、その特定の交換段階における他のタイルからの入力を受信しないように設定することが可能であることに留意されたい。選択は、交換段階内でサイクルごとに変更することができ、それは全体を通して一定である必要はない。データは、選択されたリンクに応じて、チップ上で交換することも、チップ間で交換することも、チップとホスト間で交換してもよい。本出願は、主としてチップ上のタイル間通信に関するものである。チップ上で同期を実行するために、少数のパイプライン信号がすべてのタイルからチップ上の同期コントローラ36に供給され、パイプライン同期信号が同期コントローラからすべてのタイルに送信される。一実施形態では、パイプライン信号は、1ビット幅のデイジーチェーンAND/OR信号である。タイル間の同期化が達成される1つの機構は、上述のSYNC命令であるか、又は以下で説明される。他のメカニズムを利用してもよいが、重要なのは、すべてのタイルをチップの計算段階とチップの交換段階(
図3)で同期させることができることである。SYNC命令は、以下の機能性のタイル4上の専用同期ロジック及び同期コントローラ36内での始動をトリガする。同期コントローラ36は、ハードウェア相互接続34内に、又は図示のように別個のオンチップモジュール内に実装してもよい。オンタイル同期ロジックと同期コントローラ36の両方のこの機能性は専用ハードウェア回路に実装され、一担SYNCチップが実行されると、残りの機能性はそれを実行するさらなる命令を実行することなく進行する。
【0051】
先ず、オンタイル同期ロジックは、当該タイル4上のスーパーバイザに対する命令発行を自動的に一時停止させる(フェッチステージ14及びスケジューラ24にスーパーバイザの発行命令を中断させる)。一旦ローカルタイル4上のすべての未処理のワーカースレッドがEXITを実行すると、同期ロジックは自動的に同期化要求「Sync_req」を同期コントローラ36に送る。次に、ローカルのタイル4は、スーパーバイザ命令の発行が一時停止した状態で待機し続ける。アレイ6内の他のタイル4(それぞれが同期ロジックのそれ自体のインスタンスを含む)の各々にも同様なプロセスが実行される。従って、ある時点で、現行の計算段階52における最終ワーカーがアレイ6内のすべてのタイル4上を抜け出ると、同期コントローラ36はアレイ6内のすべてのタイル4から個別の同期要求(Sync_req)を受信することになる。その時初めて、同じチップ2上のアレイ6内のすべてのタイル4からSync_reqを受信することに応答して、同期コントローラ36は同期肯定応答信号「Sync_ack」を各タイル4上の同期ロジックに送り返す。この時点まで、タイル4の各々は、同期肯定応答信号(Sync_ack)を待機しているスーパーバイザ命令の発行を一時停止させていた。Sync_ack信号を受信すると、タイル4内の同期ロジックは、自動的に、そのタイル4上の個別のスーパーバイザスレッドについてのスーパーバイザ命令発行を解除する。その後、スーパーバイザは、後続の交換段階50において相互接続34を介して他のタイル4とのデータ交換を自由に進めることができる。
【0052】
好ましくは、Sycn_req及びSync_ack信号は、各タイル4を相互接続34内の同期コントローラ36に接続する1つ又は複数の専用同期ワイヤを介して、同期コントローラとの間でそれぞれ送受信される。
【0053】
次に、タイルの接続構造についてより詳細に説明する。
各タイルには3つのインターフェース:
スイッチングファブリック34からタイル4にデータを送るexinインターフェース224と、
ブロードキャスト交換バス218を介してタイルからスイッチングファブリックにデータを送る出力インターフェース226と、
タイル4からそのマルチプレクサ210へ制御マルチプレクサ信号214(mux−select)を送るexmuxインターフェース228と、
を有する。
【0054】
個々のタイルがSEND命令を実行し、適切な時間に制御命令を切り替えて正しいデータを送受信するためには、交換スケジューリングの要件は、個々のプログラムをコンピュータの個々のタイルに割り当てるプログラマ又はコンパイラによって満たされる必要がある。この機能は、以下の交換タイミング(BNET)パラメータを認識する必要がある交換スケジューラによって遂行される。パラメータを理解するために、
図2の簡略版を
図4に示す。同様に
図4は、送信タイルだけでなく受信タイルも示している。
【0055】
I.各タイルの相対SYNC肯定応答遅延、BNET_RSAK(TID)。TIDは、後述するTILE_IDレジスタに保持されるタイル識別子である。これは、各タイルが同期制御コントローラ36から最も早い受信タイルに対してACK信号を受信する時を示す常に0より大きいか同等のサイクル数である。タイルIDがそのタイルのチップ上の特定の位置を示し、従って物理的な距離を反映していることに注目し、タイルIDから計算することができる。
図4は、1つの送信タイル4
T及び1つの受信タイル4
Rを示す。模式的で縮尺通りではないが、タイル4
Tは同期コントローラの近傍に示され、タイル4Rは遠くに存在するように示されており、同期肯定応答遅延がタイル4
Rに対してよりもタイル4
Tには短くなる結果となる。同期肯定応答遅延のために、各タイルに特定の値が紐付けさせられることもある。これらの値は、例えば遅延テーブルに保持することもできるし、タイルIDに基づきオンザフライで毎回計算することもできる。
【0056】
II.交換マルチプレクサ制御ループ遅延、BNET_MXP(受信タイルのTID)。これは、タイルの入力マルチプレクサの選択を変更させる命令(PUTi−MUXptr)の発行と、同一のタイルが新たなマルチプレクサ選択の結果としてメモリに記憶された交換データの(仮定の)ロード命令を発行することがあり得る最も早い時点間のサイクル数である。
図4を見ると、この遅延は、受信側タイル4
Rのexmuxインターフェース228
Rからそのマルチプレクサ210
Rへの制御信号の遅延と、マルチプレクサの出力からデータ入力exinインターフェース224へのラインの長さからなる。
【0057】
III.タイル間交換遅延、BNET_TT(送信タイルのTID、受信タイルのTID)。これは、1つのタイルで発行されたSEND命令と、受信タイルがそれ自体のメモリ内の送信値を指す(仮定の)ロード命令を発行することがあり得る最も早い時点間のサイクル数である。これは、既に説明したようなテーブルにアクセスするか、又は計算によって、送信及び受信タイルのタイルIDから判定されている。再び
図4を見ると、この遅延は、データが送信タイル4
Tからex_outインターフェース226
Tからスイッチングファブリック34へ、その交換バス218Tに沿って移動し、次に受信タイル4
Rの入力マルチプレクサ210
Rを介して受信タイルのex_inインターフェース224
Rへ移動するのに費やす時間を含む。
【0058】
IV.交換トラフィックメモリポインタ更新遅延、BNET_MMP()。これは、タイルの交換入力トラフィックメモリポインタを変更させる命令(PUTi−MEMptr)の発行と、新たなポインタの結果としてメモリに記憶された交換データのために、その同じタイルが(仮定の)ロード命令を発行することがあり得る最も早い時点間のサイクル数である。これは僅かで固定されたサイクル数である。メモリポインタは未だ議論されていないが、
図2に符号232で示されている。これは、データメモリ202へのポインタとして機能し、ex_inインターフェース224からの着信データがどこに記憶されるべきかを示す。これについては、後述して詳しく説明する。
【0059】
図5は交換タイミングをより詳細に示す。
図4の左側には、0〜30のIPUクロックサイクルが示されている。送信タイル4
Tに対する動作は、送信命令(SEND (F3))の発行から開始され、IPUクロックサイクル0〜9の間で発生する。IPUクロックサイクル10〜24では、データはスイッチングファブリック34を通過してパイプライン方式で実行される。
【0060】
IPUクロックサイクル11内の受信タイル4
Rを見ると、タイル入力マルチプレクサ選択:PUTi−MXptr(F3)を変更するPUTi命令が実行される。
図5では、このPUTi命令は「PUTi INCOMING MUX(F3)」と表示されている。
【0061】
サイクル18では、メモリポインタ命令PUTi−MEMptr(F3)が実行され、ITUクロックサイクル25内のロード命令を可能にさせる。
図5では、このPUTi命令には「PUTi INCOMING ADR(F3)」というラベル付けがされている。
【0062】
送信タイル4
T上では、IPUクロックサイクル1、3及び5が「TRANSPORT( )」とマークされる。これは、SEND命令の発行とexoutインターフェースF4、E1、E3などにおけるSEND命令のデータの発現との間の内部タイル遅延であり、exoutインターフェースへの転送における前のSEND命令からのデータを示す。IPUクロックサイクル2は、SEND命令に対するアドレスEOを形成するために割り当てられる。これは、その宛先アドレスではなくEOがフェッチされるべき場所であることに留意されたい。IPUクロックサイクル4では、メモリマクロがE2をメモリからフェッチするために実行される。IPUクロックサイクル6では、パリティチェックがE4に対して実行される。IPUクロックサイクル7では、E5を送信するためにMUX出力命令が実行される。IPUクロックサイクル8では、E6が符号化され、IPUクロックサイクル9では、E7が出力される。
【0063】
スイッチングファブリック34において、IPUクロックサイクル10から24に至るまでは、「EXCHANGE PIPESTAGE」とラベル付けされている。各サイクルで、データはパイプラインに沿って(テンポラリストア間で)「ワンステップ」移動する。
【0064】
サイクル25〜28は、exinインターフェース(Mem Macro(E2) for Excを参照)でデータを受信する間の受信側タイル4
R上における遅延を示す一方、サイクル25〜29は、exinインターフェースでデータを受け取り、LDのためにそれをメモリ(Mem Macro(E2)を参照)にロードするまでの間の遅延を示す。その遅延で他の機能を実行することができる − Earliest LD(F3)、Reg file rd(F4)、Form addr(EO)、TRANSPORT(E1)を参照のこと。
【0065】
単純に言えば、受信タイル4
Rのプロセッサが送信タイル4
T上のプロセス出力であったデータ(例えばF3)に作用したい場合、送信タイル4
TはSEND命令[SEND(F3)]をある決まった時間に(例えば、
図5のIPUクロックサイクル0に)実行しなければならず、受信タイルは送信タイル上のSEND命令[SEND(F3)]の実行に対してある時間だけスイッチ制御命令PUTi EXCH MXptr(IPUクロックサイクル11におけるように)を実行する必要がある。これにより、受信側タイルで実行されているコードレットで使用するために、データが受信側タイルに確実に到達して[Earliest LD(F3)]がIPUサイクル25でロードされることが保証される。
【0066】
受信側タイルにおける受信プロセスは、命令PUTi MEMptrのようにメモリポインタを設定する必要はないことに留意されたい。代わりに、メモリポインタ232(
図2)は、各データがexinインターフェース224で受信された後に自動的にインクリメントする。受信したデータは、次に使用可能なメモリ位置にロードされる。しかし、メモリポインタを変更する能力により、受信側タイルは、データが書き込まれるメモリ位置を変更することができる。これらすべては、それらが適切に通信するように、個々のプログラムを個々のタイルに書き込むコンパイラ又はプログラマによって判定することができる。これにより、内部交換(チップ上の相互交換)のタイミングが完全に時間決定論的になる。この時間決定論は、交換スケジューラによって交換シーケンスを高度に最適化するために使用することができる。
【0067】
図6は、本明細書で開示されるプロセッサアーキテクチャの応用例、すなわち機械知能へのアプリケーションを示す。
【0068】
前述したように、機械知能の当業者には周知のように、機械知能は機械知能アルゴリズムが知識モデルを学習する学習段階から始まる。このモデルは、相互接続されたノード102及びリンク104のグラフ60として表すことができる。ノード及びリンクは、頂点及び辺と呼ぶこともある。グラフ内の各ノード102は、1つ以上の入力エッジと1つ以上の出力エッジとを有し、いくつかのノード102の入力エッジのいくつかは、他のいくつかのノードの出力エッジであり、これにより、ノードを相互接続してグラフを形成する。さらに、1つ又は複数のノード102の1つ又は複数の入力エッジが全体としてグラフへの入力を形成し、1つ又は複数のノード102の出力エッジの1つ又は複数が、全体としてグラフの出力を形成する。各エッジ104は、テンソル(n次元行列)の形態で共通に値を通信し、これらは入力エッジ及び出力エッジ上でノード102へ提供され且つノード102から提供される入力及び出力を形成する。
【0069】
各ノード102は、その1つ又は複数の入力エッジで受信されたその1つ又は複数の入力の関数を表し、この関数の結果は1つ又は複数の出力エッジに提供される出力である。これらの結果は、アクティベーションと呼ばれることもある。各関数は、1つ又は複数のそれぞれのパラメータ(必ずしも乗算型重みである必要はないが、時には重みとも呼ばれる)によってパラメータ化される。一般に、異なるノード102によって表される機能は、異なる形態の機能であってもよく、及び/又は異なるパラメータによってパラメータ化されてもよい。
【0070】
さらに、各ノードの機能の1つ又は複数のパラメータの各々は、個別のエラー値によって特徴付けられる。加えて、それぞれのエラー状態は、各ノード102のパラメータ内のエラーに関連する可能性がある。単一のエラーパラメータによってパラメータ化された機能を表すノード102については、エラー状態は単純な閾値であってもよく、すなわち、エラーが指定された閾値内にあればエラー状態が満たされているが、エラーが閾値を超えていれば満たされていない。2つ以上の個別のパラメータによってパラメータ化されたノード102について、そのノード102のエラー状態はより複雑であり得る。例えば、エラー状態は、そのノード102の各パラメータが個別の閾値内にある場合にのみ満たされ得る。別の実施例として、結合されたメトリックは、同じノード102に対する異なるパラメータのエラーを組み合わせて定義することができ、結合されたメトリックの値が指定された閾値内にあるという条件の下でエラー状態が満たされてもよく、しかし、そうでなければ結合されたメトリックの値が閾値を超えている場合(又はメトリックの定義に応じてその逆の場合)、エラー状態は満たされない。エラー状態が何であっても、これは、ノードのパラメータ内のエラーが一定のレベル又は受容度以下になるかどうかの尺度を与える。
【0071】
学習段階では、アルゴリズムは経験データ、すなわち、グラフへの入力の異なる可能な組み合わせを表す複数のデータポイントを受け取る。より多くの経験データが受信されるにつれて、アルゴリズムは、経験データに基づいてグラフ内の様々なノード102のパラメータを徐々に調整して、パラメータの誤差を最小限に抑えるようにする。目標は、グラフの出力が所望の結果に可能な限り近づくようなパラメータ値を探し出すことである。グラフ全体がこのような状態に向かうにつれて、計算は収束すると言われる。
【0072】
例えば、教師付きアプローチでは、入力経験データはトレーニングデータ、すなわち既知の出力に対応する入力の形をとる。各データポイントで、アルゴリズムは、出力が所与の入力に対して既知の出力にさらに近づくようにパラメータを調整することができる。その後の予測段階では、グラフを使用して、入力クエリーを近似予測出力に(又は推論する場合にはその逆で)マッピングすることができる。他のアプローチも可能である。例えば、教師なしアプローチでは、入力データごとに参照結果の概念がなく、代わりに機械知能アルゴリズムが出力データ内でそれ自体の構造を識別するために残される。あるいは、補強手法では、アルゴリズムは、入力経験データ内の各データポイントに対して少なくとも1つの可能な出力を試行し、この出力が正か負か(そして潜在的にそれが正又は負である度合い)、例えば、勝利又は敗北、報酬又は罰、又はそのようなものを通知される。多くの試行を経て、アルゴリズムは、ポジティブなアウトカムをもたらすかもしれない入力を予測し得るように、グラフのパラメータを徐々に調整することができる。グラフを学習するための様々なアプローチ及びアルゴリズムは、多分、機械学習の当業者には周知であると思われる。
【0073】
本明細書に開示された技術の例示的な適用によれば、各ワーカースレッドは、機械知能グラフにおいてノード102のそれぞれ個別の1つに紐付けられた計算を実行するようにプログラムされる。この場合、ノード102間のエッジ104は、スレッド間のデータの交換に対応し、少なくともその一部は、タイル間の交換を伴い得る。
【0074】
図7は、コンパイラ70の機能を示す概略図である。コンパイラは、このようなグラフ60を受け取り、グラフ内の関数を多数のコードレットにコンパイルし、これらのコードレットは、
図7の72とラベル付けされたローカルプログラムに収容される。各ローカルプログラムは、コンピュータの特定のタイルにロードされるように設計されている。各プログラムは、それぞれが一連の命令で形成された1つ以上のコードレット72a、72b・・・とスーパーバイザサブプログラム73とを含む。コンパイラは、プログラムが時間内に互いにリンクされるように、すなわち時間決定論的であるように、プログラムを生成する。これを行うために、コンパイラは、タイルの位置、これにより、ローカルプログラムを生成するためにコンパイラが理解する必要がある遅延を示すタイル識別子を含むタイルデータ74にアクセスする。遅延は既に上述した通りであり、タイルデータに基づいて計算することができる。あるいは、タイルデータは、これらの遅延がルックアップテーブルを介して利用可能なデータ構造を組み込むことができる。
【0075】
ここで、本明細書で定義されるコンピュータアーキテクチャのための命令セットの一部として開発された新規命令の説明を続ける。
図8は、32ビットのSEND命令を示している。SEND命令は、タイルメモリからのデータ送信を示す。これは、タイルのローカルメモリ22内で特定のアドレスに記憶された1つ以上のデータを、タイルの外部インターフェースで送信させる。各データ(命令内の「アイテム(item)」と呼ばれる)は、1つ以上のワード長であってもよい。SEND命令は、1ワード又は複数ワードに作用して送信機能を実装する。SEND命令は、オペコード80、メッセージカウント、アドレスフィールド84に示されるSENDアドレスから1つ以上のパケットの形式で送信されるアイテムの数を示すフィールド82を有する。フィールド84は、ローカルメモリ内のどのアドレスからアイテムが送信されるかを、ローカルアドレスレジスタに記憶されたベース値に加算される即値の形態で定義する。また、SEND命令は、4及び8バイトのうちの1つとして選択されたワードサイズを示す送信制御フィールド86(SCTL)を有する。パケットに通信先識別子はない。つまり、アイテムを受け取る受信側タイルは、命令で一意に識別されない。送信機能は、送信アドレスからの指定された数のデータアイテムがローカルメモリからアクセスされ、次のクロックサイクルで送信されるべきタイルのex_outインターフェースに置かれる。SEND命令の別の変形例では、アイテムが送信されるアドレスが暗黙的となる可能性があり、ベースアドレスレジスタのベース値と、出力デルタレジスタのデルタ値とから得られる。デルタ値は、前回のSEND命令の情報に基づいて設定することができる。意図された受信側タイルの一意識別子の代わりに、コンパイラは、正しい受信側タイルが、本明細書で既に説明したように、正しい時間にそのローカルマルチプレクサを切り替えてデータ(データ項目)を受信するように構成する。意図された受信側タイルは、場合によっては送信タイル自体であってもよいことに留意されたい。
【0076】
この目的のために、上述したようにスイッチ制御機能が設けられている。
図9は、この機能を実行するPUT−i−MUX命令を示している。オペコードフィールド90は、命令をPUTi−MUX命令として定義する。遅延時間は、遅延即値92によって指定することができる。この遅延値は、「no op」命令を置き換えるために使用することができ、コード圧縮を最適化する方法である。この命令は、実行されると、マルチプレクサ210のどの入力が別のタイルから送られたアイテムのために「リスンする(listen)」ように設定されるべきであるかを、incoming_muxフィールド98で定義する。コンパクト化のため、
図10に示すように、このマルチプレクサ制御機能を、上記で定義した送信機能と結合して単一命令とすることもあり得る。タイルを送信タイルとして動作させる送信機能と、タイルが受信側タイルとして動作しているときの機能であるスイッチ制御機能との間には接続が存在せず、それ以外の場合は、同一タイル上で単一の実行サイクルで遂行されることに留意されたい。
【0077】
図10は、「マージ」命令の実施例である。この文脈において、「マージ」命令は、1つのタイル上で(1実行サイクルにおいて)同時に実行され得る2つ以上の機能を定義する命令を意味する。
【0078】
図10は、「マージ」送信命令の一形態を示し、ここで送信機能は、タイルにおけるレジスタに保持された状態を変更することができる第2の機能と組み合わせられる。1つの機能は、そのタイルで受信したデータのメモリポインタを変更することである。別の機能は、着信MUXを設定することである。PUTi_MEMptr機能により、タイルによって受信された次のデータがロードされるべきローカルメモリ内のメモリ位置を識別できる。この機能は、専用の「受信」命令によって実行できるが、その機能はデータの受信を有効にするのではなく、メモリポインタを変更することである。実際に、タイルでデータを受信するために特定の命令を実行する必要はない。exinインターフェースに到達するデータは、exinインターフェースの制御下で、メモリポインタによって識別される次のメモリ位置にロードされることになる。
図10の命令は、オペコードフィールド100と、送信されるアイテム数フィールド102とを有する。着信状態変更(incoming state modification)フィールド106の即値は、フィールド104によって指定される交換構成状態レジスタに書き込まれる。1つの形態では、状態変更フィールド106は、メモリポインタが設定される受信アドレスを計算するための入力デルタを書き込むことができる。別の形態では、交換構成状態は、マルチプレクサ入力を設定する着信MUX値で書き込まれる。
【0079】
この形式の「マージ」命令の場合、送信関数は、命令に暗黙的である1つ又は複数のレジスタに記憶された値から判定される送信アドレスを使用する。例えば、送信アドレスは、ベースレジスタ及びデルタレジスタから判定することができる。
【0080】
図11は、交換命令(EXCH)と呼ばれる「ダブル幅」命令を示している。この命令は、タイルメモリ内の指定されたアドレスからのデータ送信を開始し、着信交換構成状態(incoming exchange configuration state)(データを受信するためのマルチプレクサ及び/又はメモリポインタ)を設定する。EXCH命令は、インライン32ビットペイロードがこの命令の直後に続き、この命令の直後のメモリ位置に配置されるという点でユニークである。EXCH命令は、交換命令EXCHを示すオペコードフィールド110を有する。ペイロードは、「coissue」フラグ119を有する。
【0081】
EXCH命令は、着信フォーマットデータ幅(32ビット又は64ビット)を指定する単一ビットを有するフォーマットフィールド112を含む。データ幅は、後述するように、マルチプレクサラインの設定に影響を与える可能性がある。アイテムフィールド114は、交換指示によって送信されるアイテム数を定義する。これらのアイテムは、
図9の送信命令のようにフィールド116の即値を使用して計算された送信アドレスから送信される。このフィールドの値はベースレジスタの値に加算される。
【0082】
参照符号118は、送信データのワードサイズを定義する制御フィールドを示す。ペイロードは、
図9に関連して上述したように、入力マルチプレクサのスイッチ制御を行うスイッチ制御フィールド120を含む。符号122は、
図10の命令に関連して上述したように、着信データが記憶されるアドレスを計算するための着信デルタを定義するペイロードのフィールドを示す。
図11の64ビット幅交換命令EXCHは、クロックサイクルごとに実行することができ、従って、同時に:
・特定のアドレスからの送信、
・着信マルチプレクサの更新、
・受信アドレスの更新、
の実行を可能にする。
【0083】
このようにして、任意の交換スケジュールを単一の命令で符号化することができる。
図8、
図9及び
図10の命令は同様の機能を果たすが、各タイルのローカルメモリ内の交換コードのサイズを最小限に抑えるために32ビットの長さしか使用できない。特定のコンテキストにおいてどの命令を使用するかについての決定は、ローカルプログラム72のためのコードレットを構築するときにコンパイラ70で行われる。
【0084】
上記の命令をサポートするための重要なレジスタとそのセマンティクスのリストを続けて記載する。これらのレジスタは、これらは各タイルのレジスタファイルの一部から記録する。
【0085】
【表1】
INCOMING_DELTAとINCOMING_MUXレジスタは、タイルの交換状態の一部を形成することに留意されたい。
【0086】
ここからは
図12及び
図13を参照して、組み合わされた交換リソースをより有効に使用するためにタイルの物理的なペアが協働することができることが特徴であるタイルペアリングを説明する。タイルペアリングは、近傍の伝送バスを借用することによって単一タイルの伝送帯域幅を倍増させるために使用することもでき、あるいは、近隣の受信されたバス及び関連する着信マルチプレクサを共有することによってタイルペア内の両方のタイルの受信帯域幅を2倍にすることもできる。
【0087】
図12は、ダブル幅伝送を実行するためのタイルペアにおけるタイルに紐付けられたロジックを示す。ダブル幅伝送は、SENDの持続時間中に隣接の発信交換リソースを借用することによって達成される。隣接タイルは、この時間中にそれ自体のデータ伝送を実行することができない。SEND命令は、シングル又はダブル幅のデータ転送を実行することができるとともに、転送幅はレジスタ内の値又は即値フィールドにより特定される。幅は、このフィールドが0の値を有する場合には32ビット(1ワード)として指示でき、又は、このフィールドが1の値を有する場合には64ビット(2ワード)として指示できる。他の論理的定義も可能である。指定された幅は、チップ4上のレジスタからタイルのExOutインターフェース226内の制御ストア(store)1200に渡される。
図12は、そのような2つのペアのタイルTID00とTID01を示している。ExOutインターフェース226は、最下位ワード(LSW)及び最上位ワード(MSW)を収容するためのバッファを有する。この文脈において、各ワードは32ビットである。最下位ワードは、幅制御マルチプレクサ1202の入力に直接接続される。マルチプレクサの出力は、交換バス34の対応するクロスワイヤに接続され、クロスワイヤはその特定のタイルの出力ワイヤに対応する。送信幅が32ビットに設定されている場合、幅制御マルチプレクサ1202は、ペアになったタイルの個別のLSWからの入力を受信するように設定され、これにより、ペアのタイルが個別の32ビットワードを同時に送信することが可能となる。
【0088】
ペアの1つのメンバーが64ビットワードを送信したい場合、隣接するタイルの幅制御マルチプレクサ1202は、送信タイルからの最上位ワード出力を受信し、それをマルチプレクサの出力に渡すように設定される。これにより、送信タイルからの64ビット出力の最上位ワードが、隣接するタイルに紐付けされた交換バスのクロスワイヤ上に置かれる(この時点で一切の送信が抑制される)。明確にするために、送信タイルTID00のストア1200内で幅制御フラグからのMUX制御ラインは、隣接する(非送信の)タイルTID01のマルチプレクサ1202の制御入力に接続されて示されている。同様に、隣接するタイルTID01は、その制御ストア1200からそのペアになったタイルの幅制御マルチプレクサ1202の入力に接続されたMUX制御ラインも有するが、明瞭化のためこれは
図12には示されていない。
【0089】
ここで、
図13を参照して、ペアになったタイルを使用するダブル幅受信を説明する。
図13のペアになったタイルはTID03及びTID04とラベル付けされているが、TID00のようなタイルが例えばTID03に示された機能性を有することもあり得るように、この機能性をダブル幅送信機能性と組み合わせて使用できることは容易に理解されるであろう。ダブル幅の受信は、転送中に隣接の着信交換リソースを共有することで達成される。ダブル幅の受信用に設定されている場合、タイルペア内の各タイルは、着信データのサンプリング又は無視を選択できる。どちらもサンプリングを選択すると、両方のタイルが同じ着信データを見る。ダブル幅受信は、着信データが32ビットか64ビットかを識別する前述のINCOMING_FORMAT値を介して隣接タイルが連携した状態で有効になる。タイルペアの一次タイルの入力マルチプレクサ210の値は、送信タイルのタイルIDに設定されなければならない。タイルペア内の二次タイルの入力マルチプレクサ210の「リスン(listen)入力」は、送信ペア内の他のタイルのタイルIDに設定されなければならない。この場合、厳密に言えば、送信タイルペア(例えばTID01)の「送信」タイルは実際には送信していないが、タイルTID00の交換リソースを使用する最上位ワードを提供していた。したがって、受信タイルペアのタイルの入力マルチプレクサ210は、送信ペアのダブル幅送信出力の個々のワードが配置されるクロスワイヤにそれぞれ接続されなければならない。
【0090】
尚、いくつかの実施形態では、着信マルチプレクサ210が交換の個別のクロスワイヤを同時にリスン(listen)するように切り替えられたとしても、交換と個々のタイルとの間における移動の異なるレイテンシに起因して、これは必ずしも入来値が受信タイルペアのタイルで同時に受信されることを意味するものではない。このように、受信ペアのタイルにおいて考慮すべき3つの可能性がある。
【0091】
第1の可能性では、Exinインターフェースの2つの着信バスは独立して取り扱われる(タイルペアのいずれのタイルもダブル幅受信に参加していない)。
【0092】
第2の可能性によれば、ローカル着信交換バスは、ダブル幅アイテムの初期コンポーネントを転送するために使用されている(そして、そのコンポーネントは今や遅延されるはずである)。これは、隣接のバスが同じダブル幅アイテムの非初期コンポーネントを転送するために使用されるであろうことを暗示する。
【0093】
第3の可能性によれば、ローカル着信交換バスは、ダブル幅アイテムの非初期コンポーネントを転送するために使用されている。これは、隣接のバスが同じダブル幅アイテムの初期コンポーネントを転送するために使用されたことを暗示する(そしてその結果、隣接のバス上で初期データコンポーネントは遅延したはずだった)。
【0094】
図13は、マルチプレクサ1302及び1304を使用するこれらのシナリオを扱う回路1300を示す。回路1300は、受信タイルペアの各タイルの入力に複製されるが、明瞭化のためTID03の入力にのみ示されていることに留意されたい。
【0095】
マルチプレクサの制御は、レジスタからExinインターフェース224に供給される着信フォーマット制御からのものである。タイルTID03が32ビットモードで動作する場合、マルチプレクサ1302がパイプラインステージ1306及び制御バッファ1308を介して、
図13のマルチプレクサの上位入力で32ビットワードを通過するように制御する。
【0096】
受信タイルが対として動作している場合、マルチプレクサ1302は、その上位入力をブロックし、下位入力からの最下位ワードをパイプラインステージ1306に通過させるように制御される。次のサイクルで、パイプラインステージ1306を介してクロックされた最下位ワードとともに、最上位ワードは、マルチプレクサ1304を介して制御バッファ1308に渡されるように選択される。制御バッファ1308は、64ビットワードを受信するか否かを決定することができる。ロジックに従って、64ビットワードは、隣接するタイル(TID04)において同時に受信されることに留意されたい。状況によっては、両方のタイルが同じ64ビット値を読み込むことを欲する場合があるが、他の状況ではタイルの1つがこれを無視する可能性がある。
【0097】
64ビット転送のLSW及びMSWが、それらのペアになった受信タイルで同時に受信され得る場合、パイプラインステージ1306の相対遅延が必要とされないであろう実施形態が存在し得ることに留意されたい。
【0098】
本明細書では、機械学習のための知識モデルの文脈において特に有効な新規なコンピュータパラダイムを説明してきた。非常に大量のデータを効率的に処理するためのBSPパラダイムの交換段階におけるような時間決定論を利用するアーキテクチャが提供される。特定の実施形態について説明してきたが、開示された技術の他の適用及び分散は、一旦開示聴聞を受ければ当業者には明らかになるであろう。本開示の範囲は、記載された実施形態によって制限されるのではなく、添付の特許請求の範囲によってのみ限定される。