目次]   [1ページ目] [前ページ] [次ページ]  [Q&A
科学技術計算分科会「サイエンティフィック・コンピューティングの最前線」

「GRAPE-DRとスーパーコンピューティングの未来」


(4/8)

4. GRAPE-DR へ
  GRAPE-6の開発プロジェクトが完了したのは 2002年度である。次をどうするかが問題になる。分子動力学用専用計算機では既に述べたように後継の開発が始まっていた。しかし、天文シミュレーション用では一つ大きな問題があった。それは、LSI開発コストの指数関数的な上昇である。GRAPE-4の時には 2000万円前後で LSIの開発が可能だったが、GRAPE-6では億を超えた。2003年頃には 5億円程度が必要になっていた。これは GRAPE-4の開発予算総額の倍以上であり、重力多体問題計算専用計算機に日本国内で獲得できそうな研究費ではない。

  一方、前々節でみたように汎用マイクロプロセッサは停滞してきており、GRAPEの考え方は一つの解決を与えている。解決といっても、それは、「外付のメモリバンド幅が必要でないアプリケーションなら 1チップに多数の演算器がはいっていても有効に使える」というものであって完全に汎用な解決というわけではない。しかし、ベクトル計算機や分散メモリ並列計算機にしても完全に汎用なわけではなく、それらをが有効な問題、あるいは有効なアルゴリズムにしか使えないのだから、さらにもう一つ制約が増えてもそれで扱える問題がいくつかあれば十分ではないだろうか?

  GRAPEの考え方であるメモリバンド幅を増やすことなく演算器を増やす、という方針のまま、ある程度汎用なシステムにする 1つの方法は、演算パイプラインを多数の単純な要素プロセッサに置き換え、それらを SIMD動作させることである。単純に GRAPEの代わりをさせるならば、要素プロセッサには大規模なメモリは不要であり、数十語のレジスタがあれば中間結果を格納できる。もっとも単純には、これらが全て 1つのメモリにつながり、同じ粒子から複数の粒子への力を計算すればよい。

  もっとも、これでは力を受ける粒子の数が大きくなりすぎる。要素プロセッサを適当にグループ化し、それらがメモリを共有するようにするほうが実際的である。この場合は、GRAPE-4の複数のボード間でそうしたのと同じように、違うグループは違う粒子から同じ粒子セットへの力を計算する。粒子データは外付メモリから供給される必要があるが、粒子データ 1つにつき数十演算するので、グループの数が 10〜20なら必要なメモリバンド幅は極めて小さい。

  このようなグループ化をすると、1つの粒子への力が別グループの複数のプロセッサに分かれて求まるので、これらを縮約してホスト計算機に送り返すための加算器ツリーが必要になる。この部分はグループの数程度のハードウェアなので、グループ内にある程度の数のプロセッサがあれば面積的には無視できる。

  このようなプロセッサの概念を 図1 に示す。我々は、このアーキテクチャを GRAPE-DR(Greatly Reduced Arrey of Processor Elements with Data Reduction)と命名した。

図1「GRAPE-DR の基本構成」

  2004年度から実際にこのアーキテクチャに基づいたシステムの開発を始めることができた。これは、東京大学情報理工の平木教授との共同プロジェクトである。このプロジェクトでは
  • 1チップに 512プロセッサを集積、500MHz動作で 512Gflopsを達成
  • 4096チップを並列動作させて 2Pflopsのピーク性能を実現
を目標とした。現在、チップは完成しており(図2 左)、チップ 1つ、制御・通信用FPGA、外付メモリを搭載したボードも完成し、チップ動作の検証も終了した。4チップを搭載して PCIe 16レーンインターフェースをつけたボードの設計がほぼ終了している。最終的には 1台の PCにこのボードを 2枚搭載したノード 512台からなるクラスタ構成で 2Pflopsを実現する。
 

図2「GRAPE-DR チップレイアウト(左) とチップ評価ボード(右)」

  図3に要素プロセッサの構成を示す。プロセッサの構成は近代的なプロセッサ設計の考え方からはかなり常識外れに見えるかもしれない。まず、命令語、デコーダといった概念は存在しない。各部の制御信号が基本的にはそのままチップ外の制御回路から全要素プロセッサに放送される。但し、そのままでは命令に必要なチップ間通信バンド幅が大きくなりすぎるので、4サイクル単位の固定長ベクトル命令とし、レジスタ、メモリ等のアクセスには連続アクセス、固定アドレス、ストライドアクセス、間接アクセス等のモードをつけた。また、全ての演算器は固定かつ同一ステージのパイプライン動作をする。演算器の内部ステージは1段であり、4サイクル後の次の命令では前の命令の実行結果を直接利用することが可能である。このために中間結果にレジスタを消費することがなく、また命令スケジューリングの必要もほぼなくなっている。
 

図3「要素プロセッサの構成」

  浮動小数点加減算器は倍精度である。乗算器は単精度×倍精度であり、倍精度語の下半分を演算器に供給する制御フラグがある。これにより、2命令で倍精度乗算を行うことができる。また、演算結果からフラグビットを生成してマスクレジスタに格納し、その値によって結果をメモリ等に格納するかどうかを制御できる、これにより条件付き実行ができる。

  レジスタファイルは 3ポート(2R1W)32語である。これに対してメモリは 1ポート 256語であり、読み書きは同時には行えないし書いた直後の命令では読出しはできない。Tレジスタは汎用レジスタのポート数の不足を補うための補助レジスタである。

  チップ物理設計は Alchip社、製造は TSMCの 90nmプロセスで行った。チップサイズは 18mm角とかなり巨大であるが、消費電力はフル動作時の実装で 65Wとそれほど高くはない。クロックが 500MHzと低いのでこの程度であろう。むしろ、クロックが低い割には消費電力が大きくなっている。これは、チップ上のトランジスタのかなり大きな割合が演算器であり、毎サイクルスイッチングするからである。

  しかし、演算能力あたりの消費電力では、倍精度で 0.25W/Gflopsとなり現時点で存在している何に比べても数倍良い。例えば Intelや AMDの 4コアプロセッサは 40Gflopsに対して 100W近くであり、ほぼ10 倍の電力を消費する。

目次]   [1ページ目] [前ページ] [次ページ]  [Q&A

All Rights Reserved, Copyright©サイエンティフィック・システム研究会 2007