5. メニーコアのプロセサ間接続
多数のプロセサコアを接続するネットワークとしては、他のプロセサへのデータ伝送にかかる時間が短く、かつ、データ伝送バンド幅が大きく大量のデータが送れることが望ましい。このような特性を実現するため、色々な接続形態のネットワークが考案されているが、チップ上のプロセサコア間の接続に使われているのは、図5.1のクロスバ、図5.2のリング、図5.3の2次元メッシュなどである。
ネットワークの性能を示す重要なパラメタとして、ネットワーク直径(Diameter)と2分バンド幅(Bisection Band Width)がある。
ネットワークで接続されたプロセサコア間でデータをやり取りして処理を進める場合、通信遅延時間が問題となる。そして、すべてのプロセサコアがデータを受け取り終わるのを待って次の処理が開始されるというケースが多く、通信遅延時間が一番長いデータ伝送が性能を決めることになる。この一番、通信時間が長い部分をネットワークの直径という。一般には直径は、実際の通信遅延時間ではなく、送り元のコアから受け手のコアまで、何ホップ(いくつのスイッチを経由するか)の伝送が必要かという整数で表される。
3次元の高速フーリエ変換処理などでは、すべてのプロセサコアがすべての他のプロセサコアにデータを送るという処理が出てくる。このようなケースでは、ネットワークに含まれるプロセサコアを等分に2分する仮想的な面(2次元ネットワークの場合は線)を考え、この面を通過するデータ伝送バンド幅で性能が決まる。ネットワークを等分に2分するやり方は、色々と考えられるが、その中で、2分面を通過するバンド幅が最も小さくなる切り方を行った時のバンド幅を2分バンド幅(Bi-section Band Width)と呼ぶ。
クロスバネットワークの特徴
クロスバネットワークは、メニーコアプロセサのコア数(実際は、これに加えて、メモリコントローラやI/Oコントローラが加わるのが普通である)のポートを持つ多ポートのスイッチですべてのコアを接続する形態である。
クロスバ接続は、どのコア間でもスイッチを1回通るだけでデータを送ることができ、ネットワーク直径は1である。
2分バンド幅は、例えば中央の赤の破線(2分面)のように、一方に8コア、他方に8コアと全体を半分ずつに分けた場合の、赤の破線を通過できる最大データバンド幅と定義される。各コアとスイッチ間のバンド幅をbとすると、左側の8コアが右側の8コアにデータを送り、同時に、右側の8コアが左側の8コアにデータを送ることが出来るので、この構成では、2分面を16bのデータが通過することができる。なお、クロスバは完全に対称であるので、どのような2分面を考えてもバンド幅は同じである。
このようにクロスバは小さいネットワーク直径と高い2分バンド幅を持つが、クロスバスイッチのサイズがポート数の2乗に比例して大きくなるので、多数のプロセサコアを接続するクロスバスイッチのコストが大きくなってしまうという問題がある。
リングネットワークの特徴
リングネットワークはCELLプロセサで採用され、最近では、IntelのXeonプロセサもリングネットワークでプロセサコア間を接続する構成となっている。
図5.2に示した16コア双方向リングは、各プロセサコアに小さなスイッチが付いた構造で、それらのスイッチ間をリング状に接続している。
ネットワーク直径は、あるプロセサノードから他のプロセサノードまでに経由するスイッチの数であり、データを伝送する際には、時計、半時計方向の近い方向に送るようにすれば、最も遠いプロセサ間の距離は8となる。つまり、ネットワーク直径は8ということになる。
赤、あるいは青の破線のように全プロセサコアを2分する面を考えると、これらの破線をまたぐリング接続は2本であり、2分バンド幅はリング接続のバンド幅Bの2倍ということになる。ただし、リングは多数のプロセサのデータを運ぶので、リングのバンド幅Bは、プロセサとスイッチ間のバンド幅bよりも大きく設計されるのが一般的であるが、仮にB=2bとすると2分バンド幅は4bである。リングは接続が簡単で、スイッチの通過遅延時間はクロスバのスイッチに比べて短い。しかし、16コアの場合、ネットワーク直径に8倍の違いがあり、ネットワーク直径×スイッチ遅延時間や2分バンド幅の点ではリングはクロスバと比べると劣っている。
図5.2は双方向のリングであるが、Intelの4コアチップでは1方向だけのリングを使っている。1重リングの場合はデータ伝送バンド幅が半減するだけでなく、最大のスイッチ通過段数も倍増して16段となり、双方向リングに比べてネットワーク直径が倍増する。このため、Intelは4コア以下のチップでは単方向リング、それ以上のコア数のチップでは双方向リングと使い分けを行っている。
一方、プロセサ数が増えると、クロスバの場合はスイッチを作り直す必要があるが、リングネットワークの場合はプロセサとスイッチのペアをリングに繋ぎ込んでいくだけで済むので、プロセサコア数の異なる多種の製品を作る場合の手間が少なくて済む。また、リングの接続は隣接したモジュール間の短い配線で済み、キャッシュメモリの上の配線の無い部分に置くことが出来るため、実装上のオーバヘッドが小さいというメリットがある。