ここまで、特定のマシン、あるいは特定のアーキテクチャについて色々論評し
てきました。ここで、改めて、計算機開発プロジェクトが「成功」である条件とは
どういうものかを考えてみます。
私の考えを単純にいってしまうと、それは、計算機が成功するための必要条件は
完成時に他の計算機よりも高い価格性能比を実現できる応用が、開発にかかっ
たコストを正当化するのに十分なだけあることです。
ここで、「正当化」という意味がはっきりしない言葉を使ったのは、必要なこ
とは必ずしも商業的にペイすることではないからです。例えば GRAPE や格子
QCD 専用計算機の場合には、仮に作ったマシンが1台だけであったとしても、
-
同じ計算を汎用計算機でやったよりも予算が安く済み
-
計算によってでた科学的成果が予算に見合ったものであれば
成功であるといえるでしょうし、この場合にはいくつかの研究グループがコピー
を作ろうとするものです。この意味では、 GRAPE-6 や QCDOC は十分に成功し
ているといえます。GRAPE-6 を使って私たちがあげた科学的成果が素晴らしい
ものかどうかというのは私が客観的に判断することはできませんが、少なくと
も GRAPE-6 のかなり大規模なコピーを買ったり、私たちが開発したチップを
使って新しいシステムを作ったりしたグループが国内外にかなりの数あり、
それらのシステムの性能のトータルは我々が作ったものに匹敵するほどになっ
ています。 QCDOC も同様に、 QCD 計算に関しては BG/L よりもかなり良い価
格性能比を実現し、いくつかの研究グループが使い始めています。
商業的に成功するためにはもうちょっといろんなことがあります。開発費を回
収できるだけの価格をつけても価格性能比で勝負できないといけないので、狭
いマーケットでもなんとかなるだけの極めて高い性能を実現するか、あるいは
マーケットを広くするかのどちらかが必要になるからです。さらに、開発費に
含まれる範囲が広くなる(給料を払う範囲が増える)とか、営業費とかそういう
のもいるとかでどんどんコストが上がります。
まあ、現時点では、最先端のプロセスでカスタムプロセッサチップを開発
して計算機を作る、というやり方で成り立っている企業は事実上存在しない
(Cray は X1 で商売できているわけではないし、 NEC もスパコン事業が単体
で成り立ってはいない。富士通、日立は既に撤退した)、ということが PC ク
ラスタ以外の方法で商売するのは不可能、ということを証明しているようにも
見えます。
しかし、今までに何度か述べたように、 NEC や Cray のベクトル計算機、と
いうのはそもそも PC クラスタと価格性能比で対抗できるアーキテクチャでは
ありません。商売になるためにはそもそも開発費とか量産効果とかのハンディ
キャップをはね返せるだけ価格性能比が良くないと話にならない、というのは
当然のことであり、 1970 年代には Cray-1 はそういう存在であったわけです。
Cray-1 がそういう存在でありえた理由は、 Cray が天才であったから、とい
う面はありますが、それではどういう意味で天才であったかというと、結局は
当時の半導体技術を有効に使い、比較的小規模なハードウェアで高い実効性能
を出すことができたから、ということになります。
つまり、 Cray が活躍した 60年代から 70年代前半というのは、計算機を単体
トランジスタや、集積回路といってもその中のトランジスタの数が数十個と
いう程度のもので構成していた時代です。メモリについては、磁気コアや、論
理 IC よりは集積度が高いメモリ IC を使っていました。
この時代には、計算機の速度を上げるには、トランジスタの数が実現可能な範囲で
-
なるべく大きな(スループット1に近い)乗算器を
-
なるべく高いクロックで
-
なるべく高い効率で
動かす、というのが設計のゴールであったわけです。ベクトルアーキテクチャ
というものがこれを満たすものであったのは既に述べた通りです。
半導体技術のその後の進歩は、基本的にはトランジスタのサイズが小さくなり、
それに反比例して速度があがる、というものでした。もちろん、速度も比例し
てあがるのは CMOS の場合で、1990年代前半までベクトル計算機では主流であっ
た ECL 素子では必ずしもそういう話にはなりません。このために、 Cray の
ベクトル計算機では、最初の Cray-1 から実際上最後といっていい (T90 は殆
ど売れなかったので) C90 までで 15年間でクロックは 3 倍程度にしかなって
いません。これに対して、 CMOS マイクロプロセッサのクロックは同じ 15年
間だと 8080 の 2 MHz から例えば HP-PA の 66MHz へと 2-30 倍速くなった
のと状況が全く違うことがわかるかと思います。 2005 年の現在に振り返って
みると、トランジスタ数と速度の積で CMOS LSI が ECL LSI を上回るのは
1980 年代前半であり、この時点で並列性を生かすことが出来れば CMOS LSIを
使った計算機のほうが価格性能比が良い、という状況が生まれたということに
なります。
もちろん、この状況があったことが、 1980年代の並列計算機の研究やベンチャー
が多数生まれた背景にあるわけです。但し、殆どの並列計算機は、そうはいっ
てもベクトル計算機に比べて圧倒的な価格性能比を実現するというところまで
はいっていませんでした。その理由は色々ありますが、割合大きなものは、単
に当時のマイクロプロセッサの設計が浮動小数点演算に重点を置いていなかっ
たからです。
例えば、 Intel 80386 は 30万トランジスタを集積していますが、そもそも浮
動小数点演算機能はなくて、 コプロセッサ 80387 は倍精度乗算に 100 クロッ
クくらいかかるという気合いの入らない設計でした。Intel が汎用プロセッサ
にまともな浮動小数点演算ユニットをつけたのは i860 が最初で、トランジス
タ数は 80386 の 4 倍しかないのに浮動小数点演算の性能は 100倍近くになり
ました。この辺は半導体技術の問題ではなく設計思想の問題ですが、とにかく
i860 以前の汎用マイクロプロセッサ、あるいはそれ用の数値演算コプロセッ
サは大量に使えるCMOS トランジスタを有効に生かした設計にはなっておらず、
このためベクトル計算機に対抗できる価格性能比を提供できていませんでした。
i860 自身はアーキテクチャがかなり変で使いにくかったこともあり広く普及
するにはいたりませんでしたが、1990 年代のマイクロプロセッサは基本的に
i860 と同様なパイプライン化した浮動小数点ユニットをもつようになりまし
た。ここで CMOS マイクロプロセッサがベクトル計算機より良い価格性能比を
初めて実現したわけです。
この、マイクロプロセッサが良い価格性能比を実現した時期、というのは、同
時に殆どの並列計算機ベンチャーがつぶれた時期でもあります。この理由も振
り返ってみると明らかなことで、ただのワークステーションや PC を沢山買っ
てネットワークでつないだほうが同じ性能のものを安く買えるようになったか
らです。
つまり、 1990 年前後というのは、独自アーキテクチャで並列計算機をつくる
のが非常に困難だった時期です。何故そうであったかというと、当時のマイク
ロプロセッサはかなりの割合のトランジスタを浮動小数点演算に使っていたの
で、どういう設計をしてもそれよりチップ単体での性能を上げる、というのは
困難だったからです。また、マイクロプロセッサのコストは既に計算機コスト
の有意な部分を占めていたので、マイクロプロセッサを買ってきてなんとか、
では大して価格性能比を良くすることはできませんでした。
この状況は、しかし、現在も続いているわけではありません。ベクトル計算機
が ECL による高速ロジックにしがみついて CMOS に移行するのが 10 年遅れ
たように、マイクロプロセッサの設計も、1コアの性能を上げるという方向に
しがみついてマルチコア化が 10 年は遅れているからです。つまり、トランジ
スタ数 100 万でパイプライン化した浮動小数点ユニットをもつマイクロプロ
セッサが実現できるのに、マルチコア化したのはトランジスタ数が 200万になっ
た時ではなく、億を超えて初めてそうなってきているわけです。
もっとも、マイクロプロセッサの場合、増えたトランジスタは、クロッ
クを上げること、大きなキャッシュをつけることで多少でもメ
モリアクセスを減らすこと、等に使っているわけで全く無意味というわけでは
ないのですが、最も有効な使いかたか?というとまあ必ずしもそうではないか
な、という気もします。
こうやってみると、広く使われる計算機アーキテクチャを決めているのは、比
較的単純な技術的要因と、それに適したアーキテクチャがでてくるまでの時間
遅れだ、といえるように思います。 Cray のベクトルアーキテクチャも、i860
でのシングルチップ化したパイプラインプロセッサも、技術的にそれが有効に
なった時期より 5-10 年遅れて現れています。1995年以降の CMOS VLSI の技
術トレンドに適合したアーキテクチャはまだ現れていない、ということでしょ
う。
現在の技術トレンドの特徴は、
にあります。 GRAPE-DR は少なくともいくつかのアプリケーションに対してこ
の状況に最適な、プロセッサチップのトランジスタの有意な部分を演算に使え
る設計になっています。もうちょっとましな、つまり、性能は落とさないでも
うちょっと使える計算機を作るアプローチはないか?というのが現代の計算機
アーキテクトの考えるべき問題です。まあ、 HPC でなんかする気があるなら、
の話で、 HPC はそもそもマーケットとして成り立たないからそんなの知らな
い、というのが普通なのかもしれません。