CDC STAR-100

STAR-100は、コントロール・データ・コーポレーション (CDC) のスーパーコンピュータであり、数値演算性能を向上させるためにベクトルプロセッサを使用した最初のマシンのひとつである。
概要.
STARという名称は STrings" と ARrays" に由来する。100は設計時点の性能である100MFLOPSを指している。1970年代初めに発表され、当時世界最高速だった CDC 7600（36MFLOPS）の数倍の性能だとされた。1971年8月17日、CDCはゼネラルモーターズがSTAR-100の最初の顧客となったことを発表した。
1974年に初めて商用に使用されたが、基本設計上の様々な問題のために期待されていた性能を実アプリケーションで発揮することができず、1975年に発表されたCray-1が数年後に登場したときにCDCがスーパーコンピュータ市場のシェアを失う原因になった。
解説.
STARの全体的な構成はCDCのそれ以前のスーパーコンピュータと似ており、単純なRISC的CPUに複数の周辺プロセッサを接続して雑多なタスクを肩代わりしており、CPUは数値演算に専念することができるようになっている。STARでは、従来よりもCPUも周辺プロセッサも単純化されていて、実装のコストと複雑さを低減させている。従来機種は60ビットだったが、STARでは64ビットアーキテクチャを採用しており、副次効果として8ビットのASCII処理が容易になった。また従来にはなかった特徴として、マイクロコードを多用しており、仮想記憶機能をサポートしている。
STARの最大の改良点は、ベクター処理のための命令を導入した点である。新たに導入された命令群はAPL言語の機能に近く、連続したメモリに格納された多数のオペランド群のベクターを処理する。CPUはそれらの命令を使って追加のハードウェアを設定し、主記憶から可能な限り素早くデータを取ってくるよう設計されている。例えば、ひとつの単純な命令にちょっとしたパラメータを添えることで、最大65,535個の数値の配列ふたつを加算することができる。CPUは1つの命令をデコードし、メモリハードウェアを設定し、入ってきたデータを数値演算ユニットに送り込む。パイプラインを導入したことによって、個々の命令の実行速度は低下したものの、複数の命令（あるいは複数のデータ）を並行して処理できるようになったため、多数のデータに同じ処理を行うようなタスクでは全体の性能が劇的に向上した。
主記憶は512ビットワード（SWORD、スーパーワード）単位で構成され、最大容量は65,536スーパーワードである。32ウェイインターリーブにより、メモリアクセスをパイプライン化している。物理的には磁気コアメモリを使っていて、アクセス時間は1.28μ秒である。主記憶は512ビットのバス経由でアクセスされ、ストリームユニット (stream unit) からの要求を処理するストレージ・アクセス・コントローラ (storage access controller, SAC) が制御する。ストリームユニットは3つの128ビットバス経由でSACを通して主記憶にアクセスし、3つのバスのうち2つはリード用、1つはライト用である。さらに命令フェッチ、入出力、ベクターアクセス制御のための128ビットのバスが別にある。ストリームユニットは制御ユニットであり、命令フェッチとデコード、パイプライン化機能ユニットからの要求に応じたメモリアクセス起動、命令実行の制御など、様々な仕事をこなす。また、実行ユニット群にデータを送り込むためのリードバッファ2つと実行結果を連続的に受け取るためのライトバッファ1つを備えている。
STAR-100は演算を行うパイプラインを2つ持っている。1つめのパイプラインは浮動小数点数の加算器と乗算器を持ち、2つめのパイプラインは多機能の各種スカラー命令実行ユニットを持つ。後者には浮動小数点数の加算器、乗算器、除算器も含まれる。どちらのパイプラインも浮動小数点演算は64ビット幅であり、マイクロコードで制御される。この2つのパイプラインを32ビットの4つのパイプラインとして使うこともでき、単精度であればピーク性能が100MFLOPSとなる。
I/Oプロセッサは入出力処理を分担する16ビットのミニコンピュータであり、16ビットワードで65,536ワードのローカルメモリが付属している（磁気コアメモリ）。I/Oプロセッサは128ビットのデータバスでSACと接続されている。
実際の性能とその影響.
STAR-100のアーキテクチャは、実世界の性能がピーク性能より低いことを意味している。いくつか理由があるが、第一の理由はベクター命令がメモリからメモリへの命令であるためで、メモリから演算ユニットまでのパイプラインが非常に長く、処理を開始するまでに相対的に長い時間がかかるためである。7600のパイプライン演算ユニットはレジスタベースであり、STARのパイプラインはそれよりも深い。さらにサイクルタイムが7600よりも遅いことで問題が悪化した（7600は27.5ns、STARは40ns）。そのために7600よりも高性能を発揮するにはベクターを50要素以上に長くする必要が生じた。データの要素数が少ないループの場合、ベクターの設定をするためのコストがベクター命令（群）の効果を上回ってしまう。
1974年にリリースされたとき、通常の性能が期待していたよりずっと低いことがすぐ明らかになった。効果的にベクター化できるプログラムはごく少数で、ほとんどのプログラムでは命令はその直前の命令の結果に依存しているために、前の命令の結果が出るまでパイプラインを止めなくてはならなかったのである。このためプログラムはベクターの設定に大きなコストを払わされた。問題を悪化させたのはベクター性能を向上させるためにスカラー性能が犠牲にされたことである。基本的な命令を実行しようとすると、全体の性能は劇的に低下した（アムダールの法則参照）。
STAR-100システムは、ローレンス・リバモア国立研究所 (LLNL) とNASAのラングレー研究所に納入される。LLNLではその納入前の準備としてSTARのベクター処理を7600上でエミュレートし、そこでSTACKLIBと名付けたサブルーチン群のライブラリを開発した。STACKLIB開発の過程で、STACKLIBを使ったアプリケーションを実行したとき、ベクターライブラリを統合したときよりも通常の7600上の方がむしろ高速であることが判明した。このためSTARの性能問題にさらなる圧力がかかることになった。
STAR-100 は関係者を失望させた。チーフデザイナーの Jim Thornton はCDCをやめ、Network Systems Corporation を設立した。改良版は CDC Cyber 203としてリリースされ、さらに性能を向上させた1980年の Cyber 205 に引き継がれていく。しかし、市場ではクレイ・リサーチのシステムの高性能にかなわなかった。STARの失敗によりCDCはスーパーコンピュータ市場での独占状態を失い、1982年にETAシステムズで再挑戦することにつながるのであった。