Cray-2（クレイ ツー）は、1985年にクレイ・リサーチ社が提供したベクトル型スーパーコンピュータである。リリース当時、世界最高速の座をNEC SX-2から取り戻した。Cray-2は1990年、ETA-10Gにその座を明け渡した。

背景 
Cray-1の成功と同時に、シーモア・クレイは直ちにその後継機の設計に入った。1979年、大企業となったクレイ・リサーチの中で彼は絶え間ない雑事の割り込みに悩まされ、以前にもあったように管理職を辞任して新たな研究所を設立することにした。ミネアポリスのCDCからウィスコンシン州チペワ・フォールズに移ったときと同様、クレイ社の上層部は彼の要望を理解し、コロラド州ボルダーの新たな研究所開設をサポートした。この新たなCray Labsで独立コンサルタントとして働きつつ、彼はチームをまとめて完全に新しい設計に取り組み始めた。この研究所は後に閉鎖され、10年後にコロラドスプリングスに新たな研究所が開設されることになる。

クレイは以前に高速化に関して3つの改良を同時に行うという問題に取り組んだことがある。(1)機能ユニット数を増やして並列性を増し、(2)高密度実装によって信号遅延を短くし、(3)各コンポーネントを高速化することによって全体のクロックを高速化する。このような設計の典型例としてCDC 8600がある。ECL技術で高速化した4台のCDC 7600を1m四方のサイズに詰め込み、8ナノ秒のサイクル時間(125MHz)で駆動した。しかし、このサイクル時間を達成するために必要な高密度実装のせいで、マシンは頻繁にダウンした。回路基板が稠密に実装されたため、一つのトランジスタの誤動作がモジュール全体の障害を引き起こし、基板上のトランジスタ数が多いために全体としての故障率が極めて高くなってしまったのである。

この問題の解決策として他の業者が既に採用していたのは、集積回路(IC)を使うことであった。各ICは自動化された製造プロセスによって複数の部品を組み込んだ回路を内部に構成している。ICが故障したら別のICに差し替えるのである。8600がデザインされた頃、単純なMOSFETベースの技術ではクレイが必要とした性能を達成できなかった。しかし着実な改良により、1970年代中盤にはCray-1で 12.5nsの速度(80MHz)で動作できるまでになった。実際、Cray-1 ではICによるサイズの低減効果で回路を 8600 よりも多く搭載でき、性能も若干向上した。

ICは進化し続けたが、ICの物理的な大きさは主に機械的な限界に制限された。つまり、部品としてのICを半田付けするためには、ある程度の大きさが必要だったのである。マイクロプロセッサの進化を見ればわかるとおり、そのような密度的な進化も可能なのだが、クレイが使っていたICの頃はIC自体の実装密度が低く（内蔵する回路が小さい）、改良は停滞期にあった。クレイが常に課していた目標である Cray-1 の10倍の性能を達成するには、マシンはさらに複雑化する。そのため、彼は再び 8600 の時のような解決策を採用した。すなわち、高密度実装によってクロックを倍にして、プロセッサ数を増やし、それによって発生する熱の問題に対処しようとした。

開発 
クレイはまた、シリコン技術の進歩がほとんど終息したと思っていた。Cray-1 の 12.5ns というサイクル時間を半分にすることは可能だろうとは思っていたが、簡単とは思えなかった。しかし、代わりにガリウムヒ素(GaAs)ベースの回路を使うという可能性があった。GaAsでは、少なくとも10倍のスイッチング速度を低電力で達成でき、結果として発熱も少ない。1970年代終盤から80年代初期にかけて、コンピュータ業界全体が GaAs を広範囲に採用しかけているように見えた。クレイ社のチームは他社を打ち負かすためにロックウェル・インターナショナルの半導体部門と共に働いた。しかし、チップは生産可能な状態ではなく、Cray-2は既存のシリコンベースの設計で行くしかなかった。

別の設計問題はプロセッサと主記憶装置の間の増大する性能差である。CDC 6600の時代にはメモリはプロセッサと同じスピードで動き、主要な問題はデータを如何にしてメモリに送り込むか、であった。CDC660の時にはクレイは小型のコンピュータを10台追加して、それらが低速な外部記憶装置（ディスクやテープ）を制御し、メインのプロセッサが演算している間にそれら（入出力コントローラ）がメモリ上にデータを一気に書き込むことでそれを解決した。しかしこの解決策は、Cray-2ではもはや何の役にも立たない。メモリは、データセット全体を読み込めるくらい大容量になったが、プロセッサはメモリよりずっと速く動作し、しばしばメモリからデータが到着するのをずっと待つことになってしまう。4つのプロセッサを追加することはこの問題をさらに悪化させた。

この問題を避けるために、新たな設計では 128Kバイトの極めて高速なメモリを中心に置き、「バックグラウンド・プロセッサ」を4個それぞれ独立した高速なパイプでその高速メモリに接続するようになった。いわゆるキャッシュメモリであり、「フォアグラウンド・プロセッサ」がメインメモリとキャッシュメモリの間に置かれ、複数のGビットレベルのチャネルでデータをやり取りした。フォアグラウンド・プロセッサはコンピュータ全体を制御し、記憶装置と複数のチャネルを効率的に動作させる。バックグラウンド・プロセッサが実行すべき命令はデータ用のパイプとは別に8個の16ワードバッファ（256バイト）で供給される。現在では、このフォアグラウンド・プロセッサは「ロード/ストア・ユニット」と呼ばれ、CPUの中に組み込まれている。

主記憶装置は同時並行的に異なる領域にアクセスできるようになっており、プログラマは高い並列性を得るためにデータを分散させて配置することができた。この手法の問題点は、フォアグラウンド・プロセッサにデータを集めさせたり、分散させたりする機能を組み込むことがコストを増大させる点である。また、データセットが非常に小さく、分散させることができない場合、単純なアーキテクチャのマシンよりも性能が悪化する。

Cray-2 ではICを目一杯実装した大型の回路基板を使うよう設計された。そのため、半田付けが極めて困難となったが、実装密度は性能目標を達成するにはまだ不十分であった。チームはこの設計問題に関して二年間働き、誰もがシーモア・クレイが「あきらめた」と言ってプロジェクトを中止して全員をクビにしてくれないだろうかと思い始めた。レス・デイビス（シーモア・クレイの以前の設計協力者でクレイ社本部にいた）は、この問題の優先順位を低くすることを決めた。いくつかの小さな人員移動の後、チームは以前のように作業を続行した。

6ヶ月後、クレイは解決策を得た。彼は主要な技術者を集めて会議を開き、問題の新しい解決策を見せた。大きなひとつの回路基板ではなく、8枚のカードを三次元的に積み重ね、それらの間をピン（pogo とか z-pin と呼ばれる）で縦に繋ぐのである。カードは互いに接するように実装されたので、高さはわずか3インチ程度だった。しかし、この実装密度では従来の冷却方式が全く使い物にならない。ICの周囲に空気が流れる隙間がほとんどなかった。代わりにシステム全体を3Mが開発した新しい不活性液体フロリナート (Fluorinert) のタンクに浸すことになった。液体は熱せられると筐体の上部に上がっていくので、ポンプで蒸発冷却を使った別の装置に送り込み、冷却した後で再度コンピュータ側の筐体に戻す。この新しい設計が開始されたのは1982年であり、最初の設計開始から数年が経っていた。

リリースとその後 
その間、スティーブ・チェンらはクレイ社本部でCray X-MPを開発しており、それが Cray-2 の売れ行きに重大な影響を及ぼすと思われた。この内部の脅威と日本から出てきたいくつかの Cray-1 風のマシンに対抗するため、Cray-2 のメモリシステムは改良され、サイズを増やすと共に各プロセッサのパイプ数を増やし、性能は劇的に改善された。1985年に Cray-2 がリリースされた時、開発の遅れはあまりにも大きく、性能上の利点はメモリの高速性だけとなっていて、大きなデータセットを処理する場合以外には購入する意味は無かった。

この大型のメモリは軽視すべきではない。最初に出荷された Cray-2 に搭載されたメモリ容量（256Mワード）は、それまでに出荷された全クレイ製品（Cray-1、Cray X-MP、2台の Cray-2プロトタイプ）に搭載されたメモリの合計よりも大容量だった。シミュレーションは、2-D領域や劣悪な3-Dから、より素晴らしい3-D領域に進展した。というのも遅い仮想記憶に依存しない計算が可能だったからである。スペース（メモリ）を時間（スピード）と交換するこの単純さは、スーパーコンピュータそのものである。

Cray-2はアメリカ国防総省とアメリカ合衆国エネルギー省のために主に開発された。用途は核兵器研究や海洋学（ソナーの開発）が想定された。しかしそれだけに留まらず、Cray-2 は軍用以外の機関（NASAのエイムズ研究センターなど）、大学、企業など世界中で導入された。

Cray-2の後継としてCray-3が開発されたものの、開発時の問題のために1つのシステムが構築されたのみで開発資金は回収できなかった。Cray-2の精神はクレイ社のCray X1 (英語版) に受け継がれた。

外部リンク 

 Cray-2 (and -3) instruction set notes（英語）
 Cray-2 module pictures（英語）

2