スパコンでの利用に向けた改良点

IBMがBlueGene/Lの次のスパコンを開発するに当たって、このCell BEをベースに使ったといっても、Cell BEは科学技術計算用では無いので、浮動小数点演算は32bitの単精度の演算器で、単精度では204.8GFlopsと高い性能を持っていたが、科学技術計算で用いられる倍精度のベクトル演算では13.65GFlopsと大幅に低い性能であった。

また、PlayStation 3(PS3)では高速のXDP DRAMを使ったが、4個のRAMチップで256MBのメモリであった。これでは大規模な問題をメモリに載せられず、ハードディスクとの出し入れを行うと非常に遅くなるという問題があった。さらに、Cell BEチップに搭載されているPPE(Power PC Element)は小型低電力で、OpteronのCPUコアの1/4程度の性能しかなかった。

このため、スパコンに使用するために、まず、Cell BEの浮動小数点演算器を64bitの倍精度の演算器に変更した。また、Cell BEは90nmプロセスで作られていたが、スパコン用チップを開発するにあたり、1世代進んだ65nmプロセスを採用した。大容量のメモリを搭載するため、メモリコントローラはCell BEのXDRメモリインタフェースから800MHzのDDR2に変更した。しかし、PPEの性能向上は簡単ではないので、デュアルコアのOpteronチップをプリント基板に搭載するという方法をとった。

また、図2のブロック図から分かるように、SPEはローカルメモリのデータしかアクセスできない。したがって、データは、まず、4GBのCell eDPのメモリに持ってきて、そこからDMAで256KBのローカルメモリに持ってきてやっとSPEで使えるようになる。キャッシュではなく、ローカルメモリであるので、明示的にデータの移動を行わなければならないので、プログラミングは大変そうなマシンである。しかし、その分、ハードウェア的には軽いマシンであるので、2008年にこれだけの性能のマシンが作れたとも言える。

このRoadrunner用のチップは正式には「PowerXCell 8i」と名付けられたが、社内ではCellプロセサの倍精度版ということで、Cell eDPとも呼ばれていた。図2のCell BEと図3のCell eDPの写真を見比べると、図3では倍精度浮動小数点演算器が大きくなり、チップの上下方向に張り出して配置されていることが分かる。

また、左端の領域にDDR2コントローラと書かれている。

ゲーム機の場合はCell BEチップ1個でシステムを作ることができるが、スパコンを作るためには多数のCell eDPチップが必要であり、どのようにそれらを接続するかが問題になる。Roadrunnerの場合は、Cell eDPを計算ノードとして、計算ノードを集めてクラスタを作るというやり方ではなく、AMDのOpteron CPUの個々のコアをノードとして、それを集めてクラスタを作り、それぞれのノードにアクセラレータとして、Cell eDPを付けるという方式を取っている。Roadrunnerの時代には、この構成は珍しかったのであるが、 GPUをアクセラレータとして使うスパコンが多くなっている現状では、珍しい形態では無い。ということで、この記事を書くにあたってCell BEの資料を見直すと、Cell BEはGPUによく似ている。

  • Roadrunner

    図4 Roadrunnerは、まず、Opteronの1つのプロセサコアをノードとするクラスタを作り、クラスタの各ノードにCell eDPチップをアクセラレータとして接続するという構成になっていた

(次回は2月26日の掲載予定です)