JP6722251B2 - マルチタイル処理アレイにおける同期化 - Google Patents

マルチタイル処理アレイにおける同期化 Download PDF

Info

Publication number
JP6722251B2
JP6722251B2 JP2018197245A JP2018197245A JP6722251B2 JP 6722251 B2 JP6722251 B2 JP 6722251B2 JP 2018197245 A JP2018197245 A JP 2018197245A JP 2018197245 A JP2018197245 A JP 2018197245A JP 6722251 B2 JP6722251 B2 JP 6722251B2
Authority
JP
Japan
Prior art keywords
processing unit
data
tile
instruction
data packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018197245A
Other languages
English (en)
Other versions
JP2019079529A (ja
Inventor
クリスチャン ノウルズ サイモン
クリスチャン ノウルズ サイモン
ジョン ペルハム ウィルキンソン ダニエル
ジョン ペルハム ウィルキンソン ダニエル
ルーク サウスウェル オズボーン リチャード
ルーク サウスウェル オズボーン リチャード
グラハム アレクサンダー アラン
グラハム アレクサンダー アラン
フィリックス スティーブン
フィリックス スティーブン
マングナル ジョナサン
マングナル ジョナサン
レイシー デイヴィッド
レイシー デイヴィッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Graphcore Ltd
Original Assignee
Graphcore Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Graphcore Ltd filed Critical Graphcore Ltd
Publication of JP2019079529A publication Critical patent/JP2019079529A/ja
Application granted granted Critical
Publication of JP6722251B2 publication Critical patent/JP6722251B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

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

Claims (22)

  1. コンピュータであって、
    各々がローカルプログラムを保持する命令記憶装置を有する複数の処理ユニットと、前記ローカルプログラムを実行する実行ユニットと、データを保持するデータ記憶装置と、一組の入力ワイヤを有する入力インターフェースと、一組の出力ワイヤを有する出力インターフェースと、
    前記出力ワイヤの個別のセットによって前記処理ユニットの各々に接続され、各処理ユニットによって制御可能なスイッチング回路を介して、個別の前記入力ワイヤによって前記処理ユニットの各々に接続可能なスイッチングファブリックと、
    前記コンピュータを制御して計算段階と交換段階とを切り替えるために同期信号を生成するように動作可能な同期モジュールと、
    を備え、
    前記処理ユニットは、共通のクロックに従ってそれらのローカルプログラムを実行するように構成され、前記ローカルプログラムは、前記交換段階において、少なくとも1つの処理ユニットがそのローカルプログラムから送信命令を実行して送信時間にデータパケットを接続ワイヤのその出力セットに送信するものであり、前記データパケットは、少なくとも1つの受信側処理ユニットに宛てられているが、所定のスイッチ時間において、通信先識別子を有しておらず、
    前記受信側処理ユニットは、そのローカルプログラムからのスイッチ制御命令を実行してそのスイッチング回路を制御して、ワイヤのその入力セットを前記スイッチングファブリックに接続し、受信時間において前記データパケットを受信し、前記送信時間及びスイッチ時間と受信時間は、前記同期信号に関して前記共通クロックによって管理されるコンピュータ。
  2. 前記送信命令は、前記データパケットが送信されるべき前記データ記憶装置内の位置を識別する送信アドレスを明示的に定義する、請求項1に記載のコンピュータ。
  3. 前記送信命令には明示的に送信アドレスが定義されておらず、前記データパケットは、前記送信命令によって暗黙的に定義されたレジスタで定義された送信アドレスから送信される、請求項1に記載のコンピュータ。
  4. 前記ローカルプログラムは、前記暗黙のレジスタ内で前記送信アドレスを更新するための送信アドレス更新命令を含む、請求項3に記載のコンピュータ。
  5. 前記送信時間は、前記命令が実行される前記送信時間に後続する既知のクロックサイクル数である、請求項1〜4のいずれか1項に記載のコンピュータ。
  6. 前記スイッチング回路は、その処理ユニットに接続された出力ワイヤの出口セットと、前記スイッチングファブリックに接続された入力ワイヤの複数のセットとを有するマルチプレクサを備え、
    前記入力ワイヤの複数のセットのうちの1つが、前記処理ユニットによって制御されるように選択される、請求項1〜5のいずれか1項に記載のコンピュータ。
  7. 前記受信側処理ユニットは、前記データパケットを受信し、メモリポインタによって識別されるメモリ位置でそれを前記データ記憶装置にロードするように構成される、請求項1〜6のいずれか1項に記載のコンピュータ。
  8. 前記メモリポインタは、各データパケットが前記データ記憶装置にロードされた後に自動的にインクリメントされる、請求項7に記載のコンピュータ。
  9. 前記受信側処理ユニットの前記ローカルプログラムは、前記メモリポインタを更新するメモリポインタ更新命令を含む、請求項7に記載のコンピュータ。
  10. 前記送信命令は、送信されるべきデータパケットの数を識別し、各データパケットは、異なる送信時間に紐付けられる、請求項1〜9のいずれか1項に記載のコンピュータ。
  11. 前記入力ワイヤのセットの1つは、ヌル入力に接続される、請求項6に記載のコンピュータ。
  12. 前記受信側処理ユニットは、より早い時間に送信命令を実行した前記処理ユニットと同じ処理ユニットであり、これにより、同じ前記処理ユニットがデータパケットを送信し、後にそのデータパケットを受信するように構成される、請求項1〜11のいずれか1項に記載のコンピュータ。
  13. 複数の処理ユニットは、個別のデータパケットを送信するために個別の送信命令を実行するように構成され、前記データパケットのうちの少なくともいくつかは、いずれの受信側処理ユニットにも向けられない、請求項1〜12のいずれか1項に記載のコンピュータ。
  14. 前記処理ユニットの少なくとも2つは送信ペアで協同し、第1のデータパケットは接続ワイヤのその出力セットを介して前記ペアの第1処理ユニットから送信され、第2のデータパケットは前記ペアの第2処理ユニットの接続ワイヤの前記出力セットを介して前記ペアの前記第1処理ユニットから送信されて、ダブル幅伝送を行う、請求項1〜13のいずれか1項に記載のコンピュータ。
  15. 少なくとも2つの前記処理ユニットが受信ペアとして動作し、前記ペアの各処理ユニットは、そのスイッチング回路を制御して、ワイヤのその個別の入力セットをスイッチングファブリックに接続し、送信ペアの個別のタイルから個別のデータパケットを受信する、請求項1〜14のいずれか1項に記載のコンピュータ。
  16. ローカルプログラムを保持する命令記憶部を各々が有する複数の処理ユニットと、前記ローカルプログラムを実行する実行ユニットと、データを保持するためのデータ記憶装置と、入力ワイヤのセットを有する入力インターフェース及び出力ワイヤのセットを有する出力インターフェースと、前記出力ワイヤの個別のセットによって前記処理ユニットの各々に接続され、各処理ユニットによって制御可能なスイッチング回路を介して、それらの個別の入力ワイヤによって前記処理ユニットの各々に接続可能なスイッチングファブリックと、コンピュータを制御して計算段階と交換段階とを切り替えるため同期信号を生成するように動作可能な同期モジュールとを備えるコンピュータにおける関数を計算する方法であって、
    前記処理ユニットが共通クロックに従って前記計算段階でそれらのローカルプログラムを実行し、ここで、前記交換段階において、少なくとも1つの処理ユニットがそのローカルプログラムからの送信命令を実行して送信時間にデータパケットを接続ワイヤの出力セットに送信し、前記データパケットは少なくとも1つの受信側処理ユニットに宛てられているが、通信先識別子を有しておらず、
    所定のスイッチ時間において、前記受信側処理ユニットがそのローカルプログラムからのスイッチ制御命令を実行して前記スイッチング回路を制御し、ワイヤの入力セットを前記スイッチングファブリックに接続して受信時間に前記データパケットを受信し、
    前記送信時間、スイッチ時間、及び受信時間は、前記同期信号に関して前記共通クロックによって管理される、方法。
  17. 前記関数は、複数の相互接続されたノードを含む静的なグラフの形態で提供され、各ノードは前記ローカルプログラムのコードレットによって実装される、請求項16に記載の方法。
  18. 前記計算段階では、各コードレットは結果を生成するためにデータ処理し、前記結果のいくつかは後続の計算段階には必要とされず、いずれの受信側処理ユニットによっても受信されない、請求項17に記載の方法。
  19. 前記交換段階では、前記データパケットが前記スイッチングファブリック及びスイッチング回路を介して処理ユニット間で送信される、請求項16〜18のいずれか1項に記載の方法。
  20. 各処理ユニットは、自体の計算段階が完了したことを前記同期モジュールに示し、前記交換段階を開始するために、すべての処理ユニットが自体の計算段階が完了したことを示すと、前記同期信号が前記同期モジュールによって生成される、請求項16〜19のいずれか1項に記載の方法。
  21. 前記グラフは機械学習機能を表す、請求項17に記載の方法。
  22. 前記交換段階では、データパケットは一連の一時記憶装置を介して、パイプライン方式で前記スイッチングファブリックを通過して送信され、各記憶装置が前記共通クロックの1サイクル分のデータパケットを保持する、請求項16〜21に記載の方法。
JP2018197245A 2017-10-20 2018-10-19 マルチタイル処理アレイにおける同期化 Active JP6722251B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB1717295.8 2017-10-20
GBGB1717295.8A GB201717295D0 (en) 2017-10-20 2017-10-20 Synchronization in a multi-tile processing array
GB1816892.2A GB2569430B (en) 2017-10-20 2018-10-17 Synchronization in a multi-tile processing array
GB1816892.2 2018-10-17

Publications (2)

Publication Number Publication Date
JP2019079529A JP2019079529A (ja) 2019-05-23
JP6722251B2 true JP6722251B2 (ja) 2020-07-15

Family

ID=60481682

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018197245A Active JP6722251B2 (ja) 2017-10-20 2018-10-19 マルチタイル処理アレイにおける同期化

Country Status (9)

Country Link
US (1) US10936008B2 (ja)
JP (1) JP6722251B2 (ja)
KR (1) KR102167059B1 (ja)
CN (1) CN109697185B (ja)
CA (1) CA3021450C (ja)
DE (1) DE102018126001A1 (ja)
FR (1) FR3072801B1 (ja)
GB (2) GB201717295D0 (ja)
TW (1) TWI708186B (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11455190B2 (en) 2016-02-05 2022-09-27 Sas Institute Inc. Implicit status in many task computing
GB2569275B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Time deterministic exchange
GB2580165B (en) 2018-12-21 2021-02-24 Graphcore Ltd Data exchange in a computer with predetermined delay
US11704270B2 (en) 2019-03-27 2023-07-18 Graphcore Limited Networked computer with multiple embedded rings
GB201904263D0 (en) 2019-03-27 2019-05-08 Graphcore Ltd A networked computer
GB201904266D0 (en) 2019-03-27 2019-05-08 Graphcore Ltd A networked computer with embedded rings
GB201904267D0 (en) 2019-03-27 2019-05-08 Graphcore Ltd A networked computer with multiple embedded rings
GB201904265D0 (en) 2019-03-27 2019-05-08 Graphcore Ltd A partitionable networked computer
JP7338354B2 (ja) 2019-09-20 2023-09-05 富士通株式会社 情報処理装置,情報処理システム及び通信管理プログラム
CN113222126B (zh) * 2020-01-21 2022-01-28 上海商汤智能科技有限公司 数据处理装置、人工智能芯片
EP3973406A1 (en) 2020-03-26 2022-03-30 Graphcore Limited Embedding rings on a toroid computer network
US11336383B2 (en) * 2020-06-24 2022-05-17 Mellanox Technologies, Ltd. Packet scheduling system with desired physical transmission time for packets
GB2608180A (en) * 2021-06-25 2022-12-28 Graphcore Ltd Control of data send from a multi-processor device

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434861A (en) 1989-02-02 1995-07-18 Pritty; David Deterministic timed bus access method
DE68928980T2 (de) * 1989-11-17 1999-08-19 Texas Instruments Inc Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
US5734826A (en) 1991-03-29 1998-03-31 International Business Machines Corporation Variable cyclic redundancy coding method and apparatus for use in a multistage network
US5408646A (en) 1991-03-29 1995-04-18 International Business Machines Corp. Multipath torus switching apparatus
KR100304063B1 (ko) 1993-08-04 2001-11-22 썬 마이크로시스템즈, 인코포레이티드 2지점간상호접속통신유틸리티
US5541921A (en) * 1994-12-06 1996-07-30 National Semiconductor Corporation Isochronous serial time division multiplexer
GB2303274B (en) * 1995-07-11 1999-09-08 Fujitsu Ltd Switching apparatus
CN101110664A (zh) * 1999-07-09 2008-01-23 范德雷布玛里纳公司 Tcp/ip以数据包为中心的无线传输系统结构
US6876652B1 (en) 2000-05-20 2005-04-05 Ciena Corporation Network device with a distributed switch fabric timing system
US20020165947A1 (en) * 2000-09-25 2002-11-07 Crossbeam Systems, Inc. Network application apparatus
US20040172631A1 (en) 2001-06-20 2004-09-02 Howard James E Concurrent-multitasking processor
US7100021B1 (en) 2001-10-16 2006-08-29 Cisco Technology, Inc. Barrier synchronization mechanism for processors of a systolic array
JP2005032018A (ja) 2003-07-04 2005-02-03 Semiconductor Energy Lab Co Ltd 遺伝的アルゴリズムを用いたマイクロプロセッサ
JP2005167965A (ja) * 2003-11-12 2005-06-23 Matsushita Electric Ind Co Ltd パケット処理方法および装置
US7904905B2 (en) 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs
US7635987B1 (en) 2004-12-13 2009-12-22 Massachusetts Institute Of Technology Configuring circuitry in a parallel processing environment
US8018849B1 (en) * 2005-03-25 2011-09-13 Tilera Corporation Flow control in a parallel processing environment
US7818725B1 (en) 2005-04-28 2010-10-19 Massachusetts Institute Of Technology Mapping communication in a parallel processing environment
US7577820B1 (en) * 2006-04-14 2009-08-18 Tilera Corporation Managing data in a parallel processing environment
US8194690B1 (en) * 2006-05-24 2012-06-05 Tilera Corporation Packet processing in a parallel processing environment
JP5055942B2 (ja) 2006-10-16 2012-10-24 富士通株式会社 計算機クラスタ
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
JP5304194B2 (ja) * 2008-11-19 2013-10-02 富士通株式会社 バリア同期装置、バリア同期システム及びバリア同期装置の制御方法
US8571021B2 (en) * 2009-06-10 2013-10-29 Microchip Technology Incorporated Packet based data transmission with reduced data size
GB2471067B (en) 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
GB201001621D0 (en) 2010-02-01 2010-03-17 Univ Catholique Louvain A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms
JP5568048B2 (ja) 2011-04-04 2014-08-06 株式会社日立製作所 並列計算機システム、およびプログラム
JP2013069189A (ja) 2011-09-26 2013-04-18 Hitachi Ltd 並列分散処理方法および並列分散処理システム
US8990497B2 (en) * 2012-07-02 2015-03-24 Grayskytech, LLC Efficient memory management for parallel synchronous computing systems
US9116738B2 (en) 2012-11-13 2015-08-25 International Business Machines Corporation Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system
EP2929434B1 (en) * 2012-12-06 2019-01-16 Coherent Logix Incorporated Processing system with synchronization instruction
US9733847B2 (en) 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
US20160164943A1 (en) 2014-12-05 2016-06-09 Qualcomm Incorporated Transport interface for multimedia and file transport
TWI580199B (zh) 2015-12-18 2017-04-21 瑞昱半導體股份有限公司 接收裝置及其封包處理方法
JP6450330B2 (ja) 2016-02-03 2019-01-09 日本電信電話株式会社 並列計算処理装置および並列計算処理方法

Also Published As

Publication number Publication date
CA3021450C (en) 2021-11-02
KR102167059B1 (ko) 2020-10-16
TWI708186B (zh) 2020-10-21
FR3072801A1 (fr) 2019-04-26
CN109697185B (zh) 2023-06-20
GB2569430A (en) 2019-06-19
US20190121387A1 (en) 2019-04-25
GB201816892D0 (en) 2018-11-28
CA3021450A1 (en) 2019-04-20
GB2569430B (en) 2021-03-24
DE102018126001A1 (de) 2019-04-25
FR3072801B1 (fr) 2024-01-05
US10936008B2 (en) 2021-03-02
KR20190044574A (ko) 2019-04-30
TW201928666A (zh) 2019-07-16
GB201717295D0 (en) 2017-12-06
JP2019079529A (ja) 2019-05-23
CN109697185A (zh) 2019-04-30

Similar Documents

Publication Publication Date Title
JP6722251B2 (ja) マルチタイル処理アレイにおける同期化
US11262787B2 (en) Compiler method
US20220253399A1 (en) Instruction Set
US10963003B2 (en) Synchronization in a multi-tile processing array
US11416440B2 (en) Controlling timing in computer processing
US10817459B2 (en) Direction indicator
JP6895487B2 (ja) コンピュータのデータ交換

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190218

AA79 Non-delivery of priority document

Free format text: JAPANESE INTERMEDIATE CODE: A24379

Effective date: 20190226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200507

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200602

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200619

R150 Certificate of patent or registration of utility model

Ref document number: 6722251

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250