IntelのTeraFlopsプロトタイプ

Intelの80コアTeraFlopsプロトタイプのタイル。(Intelの発表資料を元に作成)

IntelのTeraFlopsプロトタイプのコアは、上の図に示すように32bitの浮動小数点数の積とそれを累算するFPMACを2個持ち、3KBの命令RAMと2KBのデータRAMから構成されている。命令長は96bitのVLIWである。そして、コアは、上下、左右の隣接コアと接続するためのRouterに接続され、これが1個のタイルとなっている。

コアは1サイクルに乗算2回と加算2回の合計4演算を実行でき、80コア合計では320演算を実行できる。従って、これらを3GHz強のクロックで動作させれば、チップとして1TFlopsのピーク性能が得られる。

通常の浮動小数点加算器は、入力から結果が得られるまでに数サイクルを必要とし、このレーテンシに1回しか累算をおこなうことが出来ない。しかし、このFPMACは、浮動小数点の累算の過程では正規化を行わず最終結果に対してだけ正規化を行う構成とし、かつ、桁合わせのシフトも固定長とすることにより加算を15FO4(Fan Out 4のインバータ15段分の遅延)まで短縮し、毎クロックサイクル累算が行える構造となっている。但し、このような演算方式を採ると、一般にはIEEE 754規格に規定された演算結果とは完全には一致しない。

ルータの各ポートは4バイト幅であり、2本のVirtual Channelをサポートしている。また、ルータのクロックはコアと同じであり、通過時間は5サイクルである。ルーティング経路はソースが指定し、各ルータはワームホールルーティングを行う。そして、フローコントロールは単純なOn/Off方式を使っている。伝送が隣接タイルまでであり距離が短いので、クレジットベースのフローコントロールは必要ないと思われる。

このチップは、多数のタイルが3GHz以上という高クロックで動作するので、省電力化のためのクロックゲートを徹底した設計を行っている。また、ルータの各ポートも、使用されていない場合はディスエーブルされ、電力消費を抑えている。更に、各タイルは21個の領域に分割してスリープコントロールが出来るようになっており、電源電圧1.2Vで4.27GHzクロックでフルに動作すると160W程度を消費するが、全タイルがアイドルの場合には消費電力は13Wまで減少する。

今年2月のISSCCではチップの構造だけの発表であったが、今回、初めて性能評価結果が発表された。それによると、4.27GHzクロックにおいて、隣接のタイルとだけ通信すれば良いStencil処理の場合には1TFlopsの性能が得られ、これはピークFlopsの73.3%にあたる。

しかし、同じく隣接タイルとの通信が主となる処理を行っている行列積(sgemm)の場合は、0.51TFlopsでピークの37.5%に低下する。そして、Spreadsheetの場合は0.45TFlopsでピークの33.2%の性能となっている。これはデータのロードストアが多く、毎サイクル演算が出来ないことによるという。

そして、2DFFT(2次元の高速フーリエ変換)の場合は、距離の長い通信が多く、かつ、80コアの内の64コアしか使用できないというハンディキャップがあり、得られた性能は0.02TFlopsで、これはピークの2.73%の性能に留まっている。

アドレス計算などの部分がどうなっているのか不明であるが、どうもロードストア命令が多くなると、かなり性能が低下するようであり、この部分のマイクロアーキテクチャに問題があるのではないかという気がする。

また、TeraFlopsプロトタイプの3KBの命令メモリには256命令しか格納できず、また、2KBのデータメモリには512個のデータしか格納できない。性能が発揮できるのはこのメモリの中に格納できる規模の小さな問題に限定されるところが、このチップがプロトタイプであるゆえんである。

なお、Routerのポートは5個と発表されたが、Intelは、このプロセサチップと大容量のキャッシュとなるRAMチップを貼り合わせ、このキャッシュチップから高バンド幅のバスでメインメモリやIOに接続するという構想を発表しており、実際のチップには、図中で灰色の線で描いた6番目のポートが存在している可能性もある。