GRAPE-6 では 0.25ミクロンのプロセスを使って、 800万トランジスタを1チッ
プにし1チップ当り 30Gflops 相当のピーク性能をだしました。チップが完成
したのは 99年のことですから、2006年の現在からは既に7年前です。汎用のマイクロプロセッサは、
1チップでは2006年になって出荷が始まった Intel Core 2 Duoが、クロック
3GHz だと 8 演算で 24 Gflops となり、ほぼ GRAPE-6 の1チップ程度、消費
電力は5倍程度となり 7 年前のプロセスを使っているのにいまだ GRAPE-6 の
ほうが効率でも優れています。
半導体プロセスは現在では 65nm となっていて、GRAPE-6 に比べて 20倍程度
の数のトランジスタを使い、 3-4倍のクロックで動作するものをつくることが
できます。つまり、大体 100倍性能を向上させ、 1 チップで 3 Tflops、
GRAPE-6 のように 32 チップのったボードを作ればそれ1枚で GRAPE-6 全体よ
りも速く、最大構成の BG/L にもボード 4 枚で勝つことができるようなもの
を作るのは不可能ではありません。次をつくる、というのを考えはじめたのは
2002年です。この時にはまだ 130nm ですが 500 Gflops 程度のものは作れる
わけで、同じプロセスルールの BG/L チップに比べると大体 100 倍の性能に
なります。
が、ここでの問題は、どうやって予算をとってくるか、ということになります。
GRAPE-6 までは要するに杉本がお金をとってきていて私はあんまり役に立って
なかったのですが、さすがに杉本にお願いしてなんとかしてもらうわけにもい
きません。
もうひとつの問題は、必要な予算額自体がどんどん増えてきている、というこ
とです。 GRAPE-4 の時には、2500万円ほどで LSI ロジックが 14mm角の LSI
の試作までやってくれて、ダイ1つの量産価格は1万円以下だったのですが、
GRAPE-6 では試作コストが1億以上、チップ量産価格が3万円くらいになりまし
た。大雑把にいって試作コストはプロセスルールに反比例して上がってきてい
て、90nm で3億、 65nm で 5億といった辺りになります。これはどこのメーカー
と話をするかでも変わってくるのですが、現在カスタム LSI では TSMC が世
界最大のシェアをもっていて、さすがに安いです。 IBM はこれよりずっと高
いですが開発ツールとかは信用できます。国内メーカーは現状では価格は高い
てプロセスルールやライブラリの充実度では海外メーカーに1歩遅れる、とい
う感じになってしまっています。
これはこれで日本の半導体産業の将来、というよりは現在の大問題なのですが、
GRAPE プロジェクトとしては元々日本の半導体メーカーはあまり使えなかった
のであまり関係ありません。いずれにしても問題は LSI 試作までの費用が莫
大になってきたということです。つまり、1億円程度までなら文部省の科学技
術研究費補助金という、研究者が文部科学省に申請する種類のお金でなんとか
なります。 GRAPE-4 はそういう研究費でやりました。 GRAPE-6 では、既に述
べたように運良くもうちょっと大きな額の予算を使うことができました。しか
し、その次にはもっと大きな予算が必要になります。チップを作るだ
けで5億円とするなら、10億円くらい使わないと全体としての価格性能比が
あまり良くならないからです。
日本の天文学も、野辺山の45m、ミリ波干渉計やハワイのすばる望遠鏡でビッ
グサイエンスになってきたとはいえ、なかなか1研究室の理論研究に10億円と
いうのは難しいです。というわけで、どうするのがいいかを色々考えてみまし
た。
一つの方法は、少なくとも研究レベルで専用プロセッサをつくるとかはやめて
しまうことです。2006年の現時点でも GRAPE-6 チップは汎用プロセッサに比
べて電力当りの性能、価格当りの性能の両方でかなり優れていますので、まだ
数年は使えます。従って、このプロセッサを使ってまだしばらくは世界をリー
ドする研究ができます。その後のことはまた数年後に考えればいいでしょう。
もうひとつは、 FPGA を使うことです。 FPGA もどんどん実現可能な回路規模
が大きくなり、2005年時点だと GRAPE-6 相当はまだ無理にしてもそれに近く
なっています。 後数年すれば GRAPE-6 よりも性能が高いものが初期の開発費
ゼロでできるようになるわけです。なので、これを使うことである程度のこと
はできます。 が、これは言い換えると 10年ほど進歩が止まるということでも
あってどうも面白くありません。
全く別な可能性として、天文学で使えそうな研究費以外のところからお金をとっ
てくる、というものがあります。もちろん、そのためには天文研究以外にも使
える、といえなければいけません。天文以外に分子動力学によってタンパク質
とかの研究に使えるというのは理研で戎崎や泰地が進めていて成果もでていま
すから、それと同じことを東大天文学教室でやるわけにはいきません。そうす
ると、もっと違う方法はないか?というのが問題です。
結局、なるべくいろんなことができるようにしたいわけで、一つの方向は
FPGA のようなプログラマブルなものにすることです。この方向での研究は実
は我々の他にも色々あって、10年ほど前から reconfigurable computing とい
う名前で盛んになってきています。
例えばの話、GRAPE-2 や HARP-1 では汎用の浮動小数点 LSI を基板上で並べ
て専用パイプラインを作ったわけで、それと同様なことが LSI のなかででき
ればある程度の性能は出るはずです。つまり、汎用の浮動小数点回路を多数もっ
た FPGA のようなものを作るということが考えられます。実際に、そのような
方向の研究は例えば九州大学の村上先生を中心とするグループによって
提案されています。
この方法の問題は、ハードウェアの設計、ソフトウェアの開発の両方がとても
大変であるということです。GRAPE-2 の場合、基本的には浮動小数点演算なの
ですが逆数平方根には専用回路を作っています。また、メモリやレジスタも
それなりに必要です。そういったものをどういう割合でチップに配分するか、
また演算器間で必要なプログラム可能な配線をどういうふうに準備しておくか、
というのはハードウェアを設計する上で重要な決定ですが、どういう基準です
ればいいのかよくわかりません。また、多数の演算器の間にプログラム可能な
配線がある、というものになるので、動作クロックを上げることは非常に難し
くなります。例えば、 2004年にアイピーフレックスが富士通と共通開発した
DAP/DNA2 のクロックは 166MHz にとどまり、これは 16 ビットの乗算器を
56個しかもたないので乗算の理論ピーク性能は 7GOPS 程度となっています。
同じように演算器を沢山1チップにいれるもうひとつの方法は SIMD 動作させ
ることです。つまり、複数の演算器をつないでパイプラインを構成するのでは
なく、それぞれの演算器を単純なプログラム可能なプロセッサにして、それら
が同じ演算を同じプログラムに従って実行するのです。
これは、気分としては TMC の CM-2 のようなものを1チップで作る、というこ
とになります。1988 年には CM-2 のような SIMD アーキテクチャはベクトル
プロセッサよりもはるかに高い価格性能比を実現していたのですが、その後い
くつかのシステムが開発されましたが90年代前半には完全に消えてしまいます。
これが何故か、というのを理解しておかないと、 SIMD プロセッサを作っても
上手くいくはずがありません。
90年代初めに SIMD 並列計算機が成り立たなくなった理由は簡単で、演算器を
多数チップに内蔵させることはできるようになったとして、メモリバンド幅を
必要なだけつける方法がなかったからです。 SIMD 計算機のプログラミングモ
デルはヒリスやスティールによるデータ・パラレルモデルというもので、ここ
では、大雑把にいうとベクトル計算機のベクトル化と同じように、例えば大き
な配列全体を読み書きするような形のプログラムになってしまいます。この形
では、メモリアクセスのバンド幅がネックになって、沢山演算器をいれても有
効に使えないのです。
しかし、私達が考えてるのは、そもそも GRAPE でやっているような演算のわ
りにデータ量が少ないものを扱おうという話です。この場合はプロセッサを大
きなメモリに対して高速で接続する必要は全然なくて、例えば重力計算なら20
語程度のレジスタファイルがあれば 2 粒子間の力を計算するのには十分です。
力を受ける粒子のデータはレジスタにいれておき、力を及ぼす粒子のデータは
メモリから全プロセッサに放送すればいいわけです。実際、 CM-2 で直接計算
のプログラムを書いた時にはそういうふうにしたわけですから、違うところは
全くありません。
SIMD の計算機でも、プロセッサ間をどのようにつなぐかは問題ですが、GRAPE
のように使う、ということを考えると特につなぐ必要はなく、単純に制御部か
らデータとプログラムが放送でき、結果は各プロセッサを指定して読み出す機
能があれば十分です。まあ、GRAPE-4 や 6 ですでにやっている、複数のプロ
セッサからの結果を合計しながら出力できるようなツリーネットワークがある
と色々便利です。これも実は CM-2 であった便利な機能の1つです。
CM-2 では、1チップに16プロセッサが入っていて、ネットワークはチップ間だっ
たので16プロセッサが1つの出力ポートを共有し、その中での合計はネットワー
クとは別に行うようになっていました。これと同様に、チップ内でもプロセッ
サを適当ににグループ各して、ツリーネットワークにはグループから1本しか
出力をつけないようにすることでツリーネットワークの部分のハードウェアは
小さくなります。これは、この部分の演算器の数がプロセッサの数ではなくグ
ループの数程度になるからです。
この、ツリーネットワークは結構色々な場合に有効であることがあとになって
わかりました。特に、 Top 500 で必要な LINPACK ベンチマークで高い性能を
出すためにはこのネットワークが有効でした。
ということで、このやり方で結構色々できそう、という気がしてきました。
演算器毎にレジスタファイルをつけないといけないので、純粋な専用回路で作
る GRAPE に比べると5倍程度は損になりますが、まあそれでも他のやり方より
は圧倒的に良いでしょう。
この考え方で研究費に応募してみたのですが、面接での審査員の対応は、「こ
んなの本当にできるの?」という感じのもので、結局採択られませんでした。
これは、考えてみるとまあ当然で、今までプログラム可能な計算機を作ったこ
とがない全くの素人が、突然世界最高速でしかもプログラム可能な計算機を作
りますから 15億円よこせ、といってきても私が審査員だったら絶対信用しま
せん。
ではどうすれば信用できる提案になるか、というのが問題です。結局、審査員
が見るのは過去の実績ですから、こちらにプログラム可能な計算機を作った実
績がなければ決して認められることはありません。なので、そういう実績があ
る人との共同研究にすることを考えました。日本の大学で計算機アーキテクチャ
研究について実績があり、また動く計算機を作ったことがある人といえば東大
情報の平木です。早速、平木にこういうのを共同でやってみませんか?という
お伺いを立ててみました。幸いなことに平木はのってきてくれて、 GRAPE-DR
プロジェクトが始まったわけです。2003年に、科学技術研究費補助金の特別推
進研究の枠(こちらは牧野が代表で申請)と、振興調整費の枠(こちらは平木が
代表)での申請をしました。幸運なことに、振興調整費の枠は面接までいき、
そこで平木が非常にインパクトがあり設定力があるプレゼンテーションを行っ
たことで予算獲得に成功しました。
こうして、GRAPE-DR プロジェクトが始まりました。その後の開発過程につい
てはまたの機会に書くことにしたいですが、とりあえず2006年11月現在で
チップは完成し、1つ載ったボードができて実際に GRAPE の役割をするプログ
ラムも実行でき、そこそこの性能もでている、という状況です。 GRAPE-6
の開発と同じようなスケジュールで進んでいます。
できあがったチップは 500MHz 動作の 512 プロセッサを集積し、単精度だと
512Gflops のピーク性能、倍精度だとその半分の 256 Gflops となりました。
消費電力は 60W 前後です。とりあえず、現在動作しているチップとしては世
界最高の演算性能を持つプログラム可能プロセッサ、といえるでしょう。
SIMD 並列プロセッサという私達のアイディアは基本的には実証された、といっ
ていいと思います。