ILLIAC IV

ILLIAC IV（イリアック・フォー）は、イリノイ大学アーバナ・シャンペーン校の一連の研究から生み出された最後のコンピュータである。パターソン＆ヘネシーは本機を「間違いなく、スーパーコンピューター・プロジェクトの歴史上で最も不名誉なものであろう。」としている。ILLIAC IV の設計の鍵は、256 プロセッサによる高い並列性で、後にSIMDと呼ばれる、同時に多数のデータセットを処理することを指向していた。マシンは十年の開発期間を経て1975年に完全に稼働した。

背景

1960年代初頭、コンピュータの設計は収穫逓減の時期に差し掛かっていた。ハードウェアが直接実行する命令を増やせば性能が上がることは判っていたが、それにはコストがかかり過ぎるのである。実際、性能は電気信号の速度に限定されるため、ある速度を維持するには信号経路長が問題となり、ハードウェアを追加すると全体の速度は若干低下したのである。当時の先端技術であるトランジスタを使った論理回路設計では回路の増加はマシンのサイズの増加に直結していた。CPUの速度は安定期に達しつつあったのである。
1960年代、それらの問題を解決する手法がいくつか研究された。当時オーバーラップ（overlap）と呼ばれた命令パイプラインは、ひとつのCPUがいくつかの命令を同時に実行するものである。通常、CPUは命令をメモリからフェッチして、デコードして、実行し、結果をメモリに書き戻す。従来のCPUでは、たとえばデコードをしている最中にはCPUのその他の部分は全く働いていなかった。パイプラインはシーモア・クレイがCDC 6600で初めて実現した限界を破る手法であった。そのマシンが登場したとき、他のマシンに対して約十倍の性能を発揮した。
別の解決方法は並列コンピューティングである。多数の汎用CPUを使ってコンピュータを構築する手法である。このタイプのコンピュータは各CPUが同時並行して動作して初めて効果を発揮する。そのためには処理を小さな部分に分割して並列に実行し、結果を集めて答えを出さなければならない。どんな問題でもこのような手法が使えるとは限らない。プログラムから並列性を引き出して並列実行することは現在でも問題として残っており、この並列コンピューティングという手法はCPUを追加しさえすれば性能が（理論的には無限に）向上するのが魅力である。汎用CPUは非常に高価であるため、超並列マシンは非常に高価になるか、単純な設計のCPUを使用してコストを抑えるのが通例である。
ウェスティングハウス・エレクトリックは後者の解決策を採用したSolomonプロジェクトを実施した。高性能を要求されているコンピュータは科学技術演算用途であることから、彼らはCPUの設計を数値演算の高速化に特化させた。"control unit" (CU)と呼ばれるひとつのメインCPUが命令の流れを処理し、単純な "processing element" (PE、現在で言うところの実行ユニット) を複数配置して、演算を並行して実行するようにした。各PEは同じ命令をそれぞれ異なるデータに対して実行する。今日ではSIMDとして知られている手法である。全体はCUが制御するマスタークロックにしたがって動作する。アメリカ空軍のローム研究所(RADC)との契約により、ブレッドボードを使ったプロトタイプが 1964 年に製作されたが、RADCとの契約期間が終了するとウェスティングハウスは研究を打ち切った。

開発と運用

Solomonプロジェクトの研究者ダニエル・スロトニックはイリノイ大学に移り、プロジェクトを続行した。1964年、イリノイ大学はDARPAと契約を結び、ILLIAC IV の開発資金を得た。その名称はイリノイ大学でそれまで研究開発されたマシンの名称を受け継いだものである。バロースが共同開発に加わり、高速ハードディスクシステムと装置自体の製作を担当した。同社のメインフレーム Burroughs B6500 がフロントエンドとして使用されている。テキサス・インスツルメンツ社は様々なECL 集積回路の開発を請け負い、ILLIACは ECL を全面的に採用した最初のマシンとなった。開発は1965年に開始され、第一段階の設計は1966年に完成している。
設計目標は毎秒10億命令を実行する性能を達成することであり、今風に言えば 1GFLOPS である。これを達成するために 13MHzで動作する256個のPEを4つのCUで制御する構成が基本となっている。ILLIAC IV は 64ビット設計で、各PEには 2048ワードの 240ns 薄膜メモリ（後に半導体メモリに置換された）が装備されている。PEは自身に接続されたメモリにのみアクセスできるのに対して、CUは全部のメモリにアクセスできた。この単純化によってPEのコストをさらに抑えている。各PEには6個の汎用レジスタがあり、別途用意した特別なレジスタを周りの8個のPEと共有することができる。
もともとは、256個のPEをひとつの大きな筐体に入れることを想定していたが、プロジェクトはどんどん遅延し、64個のPEとひとつのCUをひとつの筐体に収めるように変更された。さらに、現実的な時間内では筐体ひとつ（64PE+1CU）を完成させるのがやっとであることが判明する。このため、達成可能な性能は 1GFLOPS から 200MFLOPS にダウンした。
大学で研究したことは、いかにしてデータをPEにばらまくかである。この問題（SIMD設計）を解決しなければ、ILLIAC IV の存在価値はない。これをなるべく容易にするためにいくつかのプログラミング言語が開発された。IVTRAN と TRANQUIL はFORTRANを並列化した言語であり、Glypnir はALGOLを並列化したものである。これらの言語は配列データをPEにばらまき、並列に処理をするもので、配列に対するループ処理を並列実行するように展開する機能を持つものもあった。
1960年代後半に製作が開始されたとき、大学と国防総省との関係が問題視され始め、抗議活動が始まった。1970年5月9日、"Illiaction" と呼ばれるこの日に抗議活動が頂点に達した。ウィスコンシン大学での8月24日の爆破事件をきっかけとしてイリノイ大学は ILLIAC IV の開発をもっと安全な場所に移すことを決定した。これにはNASAが手を挙げた。NASAはアポロ後で金が余っていて、様々な先端技術に興味を持っていた。NASAは新たにコンピュータ部門を立ち上げ、ILLIAC IV をカリフォルニア州のエイムズ研究センターに移した。
この移転でさらに開発は遅れて、1972年までに完成しなかった。この時点で1966年の当初予算 800万ドルは、性能目標が低下したにも関わらず 3100万ドルにまで膨れ上がっていた（この時点の性能目標はピークで 150MFLOPS、平均で 100MFLOPS 程度）。並列性の問題があってもその性能は当時の世界最高速であり、CDC 7600の二倍から六倍である。NASAから見れば、このマシンは計算流体力学に最適のアーキテクチャだった。
1972年に ILLIAC IV が動作したとき、非常に不安定でほとんど連続して使うことができなかった。信頼性向上の努力の結果、1974年に連続して動作しプログラムを最後まで動かすことができるようになり、1975年に完全動作するようになった。ただし「完全動作」といっても制限されたもので、使えるのは月曜から金曜までで、週に40時間のメンテナンスを必要とした。完全なアプリケーションが動作したのは1976年で、同じ年にCray-1がリリースされ、ほぼ同じ性能を発揮した。ILLIAC IV はその後数年間使われ、エイムズ研究センターでは独自のFORTRANコンパイラである　CFD を開発したりもしている。1982年、マシンはついに廃棄された。

影響

ILLIAC IV は良い結果を残せなかったが、何故うまくいかなかったのかを理解することで並列コンピューティングの研究が進んだ。それによってシンキングマシンズ社のCM-1 と CM-2 のような超並列マシンの成功例が出てきたのである。
商用のスーパコンピュータは、ILLIAC IVの開発と同時期およびその後10年ほどは、複数の演算装置を並列化するのではなく、高速動作するパイプラインによりベクトル演算を行うベクトル計算機として発達した。CDC Star、TI ASC（en:TI Advanced Scientific Computer）、そして有名な Cray-1 はベクトル型（パイプライン型）の高性能マシンである。