その4 第3.5世代(1970年~):大規模集積回路(LSI) その1
本稿は、連載中のコンピュータの世代についての4回目、論理回路として大規模集積回路(Large Scale Integration、LSI)を用いたコンピュータのその1について解説します。
1.大規模集積回路(LSI)と第3.5世代
LSIは、半導体素子の集積度が1000〜10万個程度の集積回路の呼称である。
1970年に、IBM社からLSI(大規模集積回路)を採用したシステム/370が発表され、第3.5世代と呼ばれるようになった(メインフレーム 誕生と発展の歴史-コンピュータ博物館 (ipsj.or.jp))。
システム/370は当初ソフトウエア資産の継承が主体であまり変化がないと思われていたが、LSIの採用によって、コンピュータは単に性能が向上しただけではなくいろいろな変化をもたらすことになった。
(1)大規模・高性能コンピュータの出現と市場の変化
LSIの採用によって、コンピュータは高性能化され、より大規模のコンピュータが出現する。それによって、スーパーコンピュータ、メインフレーム、ミニコンピュータなどの境界は重なってくる。たとえば、メインフレームの下位はミニコンの上位によって浸食されるという、市場の変化が生じている。この現象はダウンサイジングと呼ばれた。
(2)業界の再編成
ICの登場によってコンピュータ業界に新たに参入した企業があったが、LSIによる市場の変化も相まって業界の再編成が生じている。
(3)主メモリの磁気コアから半導体メモリへの変化
コンピュータの主メモリ素子として、従来磁気コア素子が使われてきたが、ICの進化に伴って半導体メモリ素子がコストパフォーマンス的に磁気コア素子と対等になってきた。そのため、システム/370は信頼性の優れている半導体メモリ素子を新たに採用したと思われる。こうして、CPUは論理回路とメモリが半導体素子となった。その後の発展上からみると、重要なターニングポイントである。
(4)主メモリの実メモリ方式から仮想記憶方式への変化
主メモリは、実際のメモリ素子だけで構成する実メモリ方式よりも、相対的にビット単価の高い実メモリとビット単価の安いディスクとから構成する疑似的な主メモリ、すなわち仮想記憶方式が優れていることは、既存のMITのMulticsやAT&Tベル研究所のUNIXなどによって知られていたが、商用機では採用が遅れていた。
商用機ではバロースの例はあるが、システム/370の方式はそれとも異なり、新たな仮想記憶方式を採用し、その後の標準となった。
現在のコンピュータはストアードプログラム方式と呼ばれ、プログラムとデータを主メモリに配置することになっているが、プログラム動作には局所性があり、すべてのプログラムやデータが実メモリ(物理メモリ)に常駐している必要性はない。
ある時点で使われていない多くのプログラムやデータは、仮想記憶のディスク部分に一時的に格納しておき、実行中のプログラムからアクセスされた場合、それが物理メモリにないときにはディスクからその部分を含むページを単位として空の物理ページに読み出して(ページインという)実行する。また、空の物理ページが少なくなると、使用中の物理ページをディスクにページアウトして空の物理ページを補充する。このような処理をページング処理という。
プログラムやデータはアクセス時に、そのアドレスの実体が物理メモリに存在するか否かをチェックすること、ない場合にディスクからロードすること、のハードウエアやソフトウエアのオーバヘッドがあるが、物理メモリを増加するよりもコストパフォーマンスは高い。
また、LSIの性能向上によって、前述のオーバヘッドは軽減されるので、そういうタイミングで仮想記憶方式を導入することは、商業上望ましいアプローチと思われる。
そのほかにも、仮想記憶方式の良い点はある。
ページインやページアウトを繰り返していると、複数の空の物理ページは不連続になるが、仮想アドレス空間上では連続したページとして取り扱うことができ、プログラムの開発は容易になる。
実メモリ方式で大規模なアプリケーションプログラム(アプリ)を開発する場合、アプリの進行上から見てアプリを分割し、分割されたもの(セグメントまたはフェーズという)は互いに排他的に使用し、かつ同一の主メモリ領域に重ねて実行させる、オーバレイ構造と呼ばれる方式で構造化して、所定の実メモリで実行できるようにする。これも、アプリの開発を難しくしているといわれている。
仮想記憶方式では、実メモリ容量ではなくディスク容量に応じ、コンピュータ自身のアドレス長の限界までのアドレス空間(仮想アドレス空間)を実現できるので、実質的には実メモリ方式よりも広いアドレス空間を利用できる。そのため、オーバレイ構造の必要性が減少し、アプリの開発が容易になる。
また、OSはアドレス空間の占有量の制約を受けるが、実メモリ方式の場合その制約は厳しくOSの機能拡張が困難になるという問題が発生する。仮想記憶方式では、その制限が緩和され、OSの保守性が向上すると考えられる。
2.半導体メモリとは
半導体メモリは、半導体素子によって構成される記憶装置であり、RAM(Random Access Memory)とROMとがある。RAMという用語は本来Sequential Access Memoryに対比する用語であるが、ROMとの対比で使われる。ROMは「Once Write」が必要なので消去と書き込みができるという扱いである。
RAMには、DRAM (Dynamic Random Access Memory、ディーラム)とSRAM(Static Random Access Memory)とがある。
DRAMは、チップ中に形成された小さなキャパシタ(コンデンサ)に電荷を貯めることで情報を保持する記憶素子である。放置すると電荷が放電し情報が失われるため、常にリフレッシュ(記憶保持動作)を必要とする。
一方、SRAMはフリップフロップと呼ばれる論理回路で一時的に”0″または”1″の状態を保持する(記憶する)記憶素子である(『ウィキペディア』Static Random Access Memory)。
SRAMはリフレッシュが不要であるのに比べ、DRAMはリフレッシュのために常に電力を消費することが欠点であるが、SRAMに対して大容量を安価に提供できるという利点から使用される。
DRAMの概念は1966年にIBMトーマス・J・ワトソン研究所のロバート・デナード(Robert Dennard)によって考案され、1967年にIBMとデナードとによって特許申請され、1968年に特許化された。
1970年にインテルは世界最初のDRAMチップである1103を製造した。1103は3トランジスタセル設計を使用した1キロビットDRAMチップで、非常に成功した。その後、1970年代半ばまでに複数のメーカがデナードのシングルトランジスタセルを使用して4キロビットチップを製造し、ムーアの法則に従い大容量化が進展した。(『ウィキペディア』Dynamic Random Access Memory)。
3.System/370について
1970年に、IBMはSystem/360と上方互換性のあるSystem/370ファミリを発表したが、このアーキテクチャは20年間のライフサイクルの中で数回の改良を重ねた(『ウィキペディア』System/370、(IBM’s 360 and Early 370 Systems – Emerson W. Pugh, Lyle R. Johnson, John H. Palmer – Google ブックス))。
(1)初期モデル
IBMのメインフレームとして初めて論理回路にモノリシック集積回路が採用され、System/360の4~8倍の回路密度と10倍以上の信頼性が実現された(『ウィキペディア』IBM System/370)。主メモリとしてDRAMがコンピュータで初めて採用された。
OSとして、System/360のOSを機能拡張したDOS,OS/ MFT,OS/ MVT、CP/CMSが提供された(『ウィキペディア』System/370)。System/360のOS体系に比べて提供OS数が減少し簡略化されている。
(2)仮想記憶のサポート
1972年に、新たなセグメント/ページング方式の仮想記憶が初めて採用された。MITのタイムシェアリングシステム用OS Multicsでも、セグメント/ページング方式の仮想記憶が採用されたがそれとも異なり、ページアドレスとセグメントアドレスが連続するリニアアドレッシングと呼ばれる方式で、その後の仮想記憶方式の標準となった方式である。
ユーザはより広いアドレス空間を使用できるようになり、企業におけるデータベースやオンライン・トランザクション処理の用途が拡大したといわれるが、物理メモリ(実メモリ)、仮想メモリともに24ビットアドレスのままのため、その後も改良が続いた。これは、ムーアの法則に従ってメモリ単価が低下したことによる必然的傾向である(同上)。
OSとして、仮想記憶用OSが新たに提供された。DOSの後継のDOS/VS、OS/MFTの後継のOS/VS1(1つの仮想アドレス空間を複数の論理パーティションに分割しマルチタスキング処理をする方式)、OS/MVTの後継のOS/VS2(ジョブごとに仮想アドレス空間を割り当ててマルチタスキング処理をする方式。最初は SVS(Single Virtual Storage)であったが1974年に MVS(Multiple Virtual Storage) へと進化した)、CP/CMS の後継のVM(Virtual Machine)/370が提供された(同上、『ウィキペディア』Multiple Virtual Storage)。
このうち、VM/370は、一台の物理マシンの上に複数台の仮想コンピュータを実現できた。当時、コンピュータにOSをインストールするには数日を要しており、その間、エンドユーザはコンピュータを使うことができなかった。VM/370は、この作業を、エンドユーザの利用と並行して行うことができ、その結果、エンドユーザが使えない時間は数時間に短縮されたといわれる(『ウィキペディア』System/370)。
(3)物理メモリアドレス空間の拡大
1981年10月、3033 と 3081 プロセッサの物理記憶装置のアドレスが26ビットに拡張され、他のコンピュータにも適用されていった。しかし、個々の仮想アドレス空間は依然として24ビットであった(同上)。
(4)仮想アドレス空間を31ビットアドレスに拡張
System/370のアーキテクチャがSystem/370-XA (eXtended Architecture)となり、仮想アドレス空間が 24ビットから 31ビットアドレスに拡張され、3081 と 3083 プロセッサで1983年の初めに利用可能となった。
2つの仮想アドレス空間の間でデータを移動させる機能や入出力アーキテクチャの完全な再設計(動的チャネルサブシステム)などの大きな改良が行われた。
OSとして、DOS系のDOS/VSE, OS/VS2系のMVS/XA, VM系のVM/XAが提供された。(同上)。
(5)他の仮想アドレス空間のアクセス機能
XAアーキテクチャの後継のESA/370 アーキテクチャ(Enterprise System Architecture/370(後にESA/390 と改称)が1988年に発表され、32ビットのアクセスレジスタ16本が追加され、64ビットの仮想アドレス空間(データ専用仮想アドレス空間)にアクセスする機能が追加された。
OSとして、DOS系のVSE/ESA, OS/VS2系のMVS/ESA, VM系のVM/ESAが提供された。提供されるOSの種類が統合され簡略化された。(同上)。
System/370になってからのOSの変遷は次の通りである。
・DOS系 DOS(360)➱DOS(370)➱DOS/VS ➱DOS/VSE ➱VSE/ESA
・OS/MFT系 OS/MFT(360)➱OS/MFT(370)➱OS/VS1➱(MVS/XAに統合)
・OS/MVT系 OS/MVT(360)➱OS/MVT(370)➱OS/VS2➱MVS/XA➱MVS/ESA
・CP/CMS系 CP/CMS(360)➱CP/CMS(370)➱VM/370➱VM/XA➱VM/ESA
このOSの変遷を眺めると、System/360の開発時に1つのOSを目標としていたが果たせず、結果的に多数のOSを提供していた。しかし、この時期になって、その目標に近づいてきていることが窺える。OSを小型機から大型機まで1つのOSでカバーするには性能、主メモリ容量、ディスク容量などがコストパフォーマンス的にリーゾナブルになる時代まで待つことが必要なのであろう。
3.米国のメインフレームの状況
米国のメインフレームメーカは、IBMを中心にした「白雪姫と7人の小人」といわれた状況から、GEとRCAが撤退し、BUNCH(バロース、UNIVAC、NCR、CDC、ハネウエル後HIS)と呼ばれるようになった。
GEは。1964年にフランスのマシン-ブルを買収してブル-GEとし、またイタリアのオリベッティのコンピュータ部門を買収したが、その後コンピュータ部門をハネウエルに売却し撤退した。
ハネウエルは自社のコンピュータ部門と合わせてHIS(Honeywell Information Systems)とし、HISは1974年4月に60シリーズを発表した。
ユニバックは第2世代のUNIVAC1107に1108と1106を加え、シリーズに発展させた。また撤退したRCAの顧客ベースを引き取り、RCA系コンピュータと自社9000シリーズの後継の90シリーズを発表した。
バロースは第3世代機を変更した700シリーズを発表した。NCRは第3世代のCenturyシリーズに上位モデルを加え、1976年4月に仮想記憶方式のCriterionを発表した。
XDSはSigmaの後継の500シリーズを発表したが、1975年5月にゼロックスがコンピュータ事業から撤退したため、XDSは消滅した。
1986年には、バローズとスペリーランドが合併してユニシスとなった。(技術の系統化調査報告「コンピュータ開発史概要と資料保存状況について-第3世代と第3.5世代コンピュータおよびスーパーコンピュータについて-」 (kahaku.go.jp))。
4.日本のメインフレームの状況
日本では通産省の指導の下に、➀日立―富士通:IBM互換路線のMシリーズ、➁日電―東芝:ハネウェルと提携し、独自アーキテクチャのACOSシリーズ、③三菱電機―沖電気:独自路線のCOSMOシリーズ、の3つのグループが形成された(『ウィキペディア』メインフレーム)。しかし、その後、東芝、三菱電機、沖電気は撤退した。
IBMを1970年にスピンアウトしたジーン・アムダールはアムダール社を設立し、富士通と提携してSystem/370互換機を開発し1975年に出荷した。OSはIBMのOSを使った(同上)。
5.ヨーロッパにおけるメインフレームの状況
西ドイツでは政府の助成を得て1972年1月にAEGテレフンケンと二クスドルフの合弁でテレフンケンコンピューターズ(TC)ができた。シーメンスはCIIと開発販売協定を結び、1973年7月、これにフィリップスが加わってユニデータが発足した。
一方フランス政府は、GEの撤退によってできたハネウエル・ブル(HB)とCIIを合併させ、CII-HBを作らせた。そのため1975年12月にはユニデータは解散した。またTCは1974年にシーメンスに吸収された。
英国のICLは政府の助成を受け、1974年10月に仮想記憶方式の2900シリーズを発表した。(同上)。
6. スーパーコンピュータの状況
スーパーコンピュータは、科学技術計算用の大規模なマトリックス計算を高速に実行することを主たる目的としている。ベクトル型と並列型*)に大別されが、ベクトル型が先行して進化している。ベクトル型コンピュータはベクトル演算による高速演算方式を採用する。すなわち、➀一つのベクトル演算に対してベクトルデータ、すなわち複数の演算データをもつベクトル演算命令が導入される。このような命令はSIMD(Single Instruction Multiple Data)型の命令と呼ばれる。➁ベクトルデータを高速処理するために複数のベクトル演算ユニット(Array Processorとも呼ばれる)をもち、パイプラインと呼ばれる方式で並行処理されるベクトルコンピュータが付加される(『ウィキペディア』スーパーコンピュータ、ベクトル計算機)。
(1)最初のベクトル型スーパーコンピュータ
最初の独立したベクトルマシンは、1972年に発表されたCDCのSTAR-100とテキサスインスツルメントのASC(Advanced Scientific Computer)である。STAR-100は1972年に、ASCは1973年に完成された。これらはピーク性能値で50 ~ 80MFLOPS(浮動小数点データ演算を1秒間に実行できる数)の処理速度をもっていたが、その性能を十分に発揮できなかった(『ウィキペディア』STAR-100、ASC)。
(2)ベクトル型スーパーコンピュータの基本構成の確立
CDCを辞めたシーモア・クレイは、1972年にクレイリサーチを設立し、1976年 にピーク性能160MFLOPSのCray-1を発表した。このマシンは、a)64ビットのベクトルレジスタを64個持ち、メモリからベクトルレジスタにロードして演算するベクトルレジスタ方式を採用してメモリアクセス負荷を軽減した。b)ベクトル演算性能だけでなくスカラー演算性能もバランスさせたことがCray-1の成功した要因といわれている。c)FORTRAN文の動的解析を行ってベクトル演算命令を使うように翻訳を行う自動ベクトル化FORTRANコンパイラを提供したので広く普及し、スーパーコンピュータの名前を高めたといわれている。
Cray-1は、この種類のコンピュータの基本構成を確立した。当時世界最高速であり、その後のベクトルマシンの多くはCray-1のアーキテクチャをベースにしている。
(技術の系統化調査報告「コンピュータ開発史概要と資料保存状況について-第3世代と第3.5世代コンピュータおよびスーパーコンピュータについて-」 (kahaku.go.jp) 、『ウィキペディア』Cray-1)。
(3)日本におけるベクトル型スーパーコンピュータ
日本のコンピュータメーカもまた、ベクトル計算機の開発に乗り出した。まず富士通が1977年にFACOM 230-75 APUという同社のメインフレームに付加するアレイプロセッシングユニットを完成させている。次いで日立も1978年にHITAC M-180IAP(Internal Array Processor)を完成させた(ベクトル計算機 – Wikipedia)。
注*)スーパーコンピュータの並列型とベクトル型について
スーパーコンピュータは、科学技術計算用の大規模なマトリックス計算を高速に実行することを主たる目的としている。方式的には、並列型とベクトル型の2つの方式があり、歴史的には、前述のように、ベクトル型の基本構成が先行して確立される。(同上)
コンピュータアーキテクチャの話(389) Cray-1の計算セクション | TECH+(テックプラス) (mynavi.jp)
(1)並列型
並列型では、非常に多くのパソコンが並行して処理が行えるように構成し接続する。
ここで、FOTRAN風の配列計算式C(i)=A(i) + B(i)をi=1から10まで繰り返す程度のプログラムを考える。
並列型では、この計算式を10台のパソコンに展開し、10台が並列に処理する。たとえば、一台目のパソコンではC(1) = A(1) + B(1)の数式を処理する。2台目は、C(2) = A(2) + B(2)で、以下同様に数式を処理する。
(2)ベクトル型
ここでは、Cray-1に基づいたベクトルコンピュータを想定する。
- ベクトル型では、複数の演算データを指定するベクトル演算命令が導入される。(これに対して、1つの演算データを指定する通常の演算命令はスカラー演算命令と呼ばれる)。いろいろな演算命令が用意されている。
前述の数式が次のような演算命令列に翻訳された例を考えましょう。
a) Load VR1, A(1:10) A(1:10)の10個のデータをVR1という
ベクトレジスタにロードする。
b)Load VR2, B(1:10)
c)Add VR1, VR2, VR3 VR1とVR2の加算をしてVR3に格納する。
d)Store VR3, C(1:10) VR3の内容をC(1:10)に格納する。
- ベクトル演算命令は、付加されたベクトルコンピュータに送られて処理される。
ベクトルコンピュータは、複数の演算ユニットをもち、ベクトル演算命令で指定された同じ演算を各ユニットが実行する。ただし、演算データはユニット毎に異なる。実行は1台目のユニットの演算が終了すると2台目で演算され、パイプの中を水が流れるように、各ユニットが順番に同じ演算を行う。このような処理方式はパイプライン方式といわれる。 - ベクトルレジスタは演算を高速に実行するために導入されたものであり、VR1、VR2、VR3などの各ベクトルレジスタは、各ユニット毎に存在する。それゆえ、1台目のユニットのベクトルレジスタVR3はVR3(1)のように表現する。
- 1台目のユニットで演算が終わると、次の演算命令が送られてくる。たとえば、前述のa)のベクトル演算が終わると、b)のベクトル演算命令が1台目のユニットに送られる。b)が終了すると、続いてc)、d)と順番に送られる。
この時点では、ユニットの1台目で「Store VR3(1),C(1)」の演算が実行され、2台目では「Add VR1(2),VR2(2),VR3(2)」、3台目では「Load VR2(3)、A(3)」、4台目では「Load VR1(4),A(4)」、の演算が並行して実行される。 - 4台のユニットが並行して実行される状況は、時間の経過と共に次のユニット群に移動して演算は進行する。
- 10台目のユニットが「Store VR3(10),C(10)」の演算を終了した時、指定されたベクトル演算命令列の演算が終了したことになる。
- このベクトル演算命令列の総計算量は4×10=40である。これをベクトル型で処理すると、3+7+3=13サイクルで処理される(各演算は1サイクルで実行されるとして)。
並列型では、10台のパソコンを用いる場合原理的には、ベクトル演算命令列の長さに依存し4サイクルで終了する。原理的には並列型の方が速い。