IBMの「Stretch」プロジェクト

LARCの契約を獲得できなかったIBMは、より高性能のマシンを提案し、別の契約を獲得した。このマシンがIBM 704の100倍の性能を持つという触れ込みの「Stretch」である。Stretchは開発コードネームで、IBM製品の正式名称は「IBM 7030」である。なお、Stretchは1961年に完成したが、この性能を達成することはできなかった。

  • IBM 7030 Stretchのコンソール

    図1.15 IBM 7030 Stretchのコンソール (Computer History Museumで筆者が撮影)

Stretchの開発は、Stephen DunwellとGene Amdahlが中心になって進められた。Dunwell氏は、将来の時点でどのような製品が必要になるかという点ではビジョナリーで大きな新製品開発を推進するプロと言われる。一方、Amdahl氏はコンピュータアーキテクトで、Stretchのアーキテクチャを考えたのはAmdahl氏であると言われる。

後に、Dunwell氏がStretchプロジェクトの責任者に選ばれたことを不満として、Amdahl氏は1955年にIBMを去る。しかし、1960年に、また、IBMに戻り、IBMの最大の成功となるSystem/360メインフレームを開発することになる。

Stretchの概略の構造は、図1.16のようになっている。

  • Stretchの全体構成

    図1.16 Stretchの全体構成。2バンクの命令メモリと4バンクのオペランドメモリにCPUと高速のディスクコントローラと基本I/Oのコントローラが接続されている。各メモリバンクは16K語で、合計では96K語の容量で、アクセスサイクルは2μs (出典:Design and Performance Goals of the Stretch Computer Instruction Unit R.T.Blosk TR 00.722)

StretchのCPUのブロックダイアグラムは、図1.17のようになっている。Stretchの最大の特徴は、Lookaheadというユニットが中心になっているという点である。Instructionユニットは、メモリから4命令を並列に読出し、インデックスレジスタを足し込んでアドレス計算を行い、オペランドの読出しを開始したり、インデックスレジスタの変更などを行う。これにより、オペランドのメモリからの読み出し時間が短縮でき、早く実行を開始することができる。

  • Stretch CPUの構造

    図1.17 Stretch CPUの構造 (出典:Design and Performance Goals of the Stretch Computer Instruction Unit R.T.Blosk TR 00.722)

Lookaheadユニットは、4エントリの命令バッファを持ち、インストラクションユニットでデコードされ、オペランドのフェッチなどを開始した命令を保持する。そして、メモリからオペランドが到着すると、演算を開始する。また、条件分岐も、Not Taken(あるいは、前回と同じ)と予測して投機実行を行う機能を備えていた。

この設計により、Index Unitは最大6命令、Parallel Arithmetic Unitは最大5命令が仕掛中で、最大では11命令が実行中になることができた。このアーキテクチャはOut-of-Order実行や投機実行の始まりである。

しかし、この機構は非常に複雑で、StretchのCPUは、最初の設計では21万トランジスタを必要としたという。これをLookaheadバッファのエントリ数の削減などを行って、最終的には11万5000トランジスタと約半分の規模まで縮小している。なお、Lookaheadユニットは全体の1/6程度のトランジスタを使っているとのことである。

(次回は2月9日に掲載します)