Atlas (コンピュータ)

Atlas Computer（アトラスコンピュータ）は、1962年から1971年に稼働した世界初のスーパーコンピュータの1つ。当時は世界で最も高性能なコンピュータとされた。Atlasの稼働が止まるとイギリスが持つ全コンピュータの能力の半分が失われると言われた。ページング方式を使った仮想メモリ機能(当時は1レベルストアと呼んだ)を搭載した世界初のマシン(ページサイズは512-word)として有名であり、この方式は急速に拡散し、今日では当然なものになった。 Atlasは真空管ではなく電子部品のバイポーラトランジスタを使用した第2世代のコンピュータだった。マンチェスター・ビクトリア大学、フェランティ、プレッシーが共同でAtlasを開発した。Atlasは他にも2台あり、うち1台はブリティッシュ・ペトロリアムとロンドン大学のために作られ、もう1台はオックスフォード近くのチルトンにあるアトラスコンピュータ研究所に納入された。 フェランティはケンブリッジ大学のために改良版を製作した。これはTitanまたはAtlas 2と呼ばれ、メモリ構成が異なり、ケンブリッジ大学コンピュータ研究所が開発したタイムシェアリングシステムに対応したOSが動作した。Atlas 2は他にも2台あり、1台はケンブリッジのCADセンター(後のCADCentreで、さらに後にのAVEVA)に、もう1台はアルダーマストンにあるイギリス核兵器研究所(AWRE)に納入された。 マンチェスター大学のAtlasは1971年に撤去された。CADCentreにあった最後のAtlasは1976年の年末に運用を終えた。チルトンのAtlasの部品がエディンバラにあるスコットランド国立博物館に保存されている他、2014年7月に発見されたメインコンソールがオックスフォード近くのチルトンにあるラザフォードアップルトン研究所に保管されている。 1956年はコンピュータの開発でイギリスがアメリカに後れを取っているとの認識が高まっていた。フェンティのB.W.ポラードは4月にコンピュータのカンファレンスで「イギリスには中規模のコンピュータが複数台あり、真に高速なコンピュータはケンブリッジのEDSAC 2とManchester Mark 2だけしかないが、2台ともアメリカで最も早いマシンよりはるかに遅い」と話した。5月にも科学産業研究省調査会の高速計算機検討委員会で同様の懸念が報告された。 その頃マンチェスター大学のトム・キルバーンとそのチームはトランジスタベースのシステムを試しており、様々な技術を検証するために2台の小さなマシンを製作していた。この技術が非常に優れていたことは明らかで、キルバーンはトランジスタベースのマシンにどのような機能を装備すべきかについて1956年に購入希望者からの聞き取り調査を開始した。商用利用を予定しているユーザーは様々な周辺機器に対応することを希望する一方で、イギリス原子力エネルキー省は1マイクロ秒で1命令を実行できる高速なマシン(現代の表現で1MFLOPSの性能)を希望した。この要求からMicroSecond Engineを意味するMuseの名前が付けられた。 数多くの周辺機器をサポートすることと、高速に動作するということは相反する要求だった。例えばパンチカードリーダーからデータを読み込むプログラムは、リーダーがデータを送信してくるのを待つことにほとんどの時間を費やす。こうした周辺機器をサポートしつつCPUの効率も維持するため、新機種にはデータをバッファリングするための大量のメモリが必要であり、システム上のデータの流れを制御するオペレーティングシステム(OS)も必要だった。 米国がさらに高速なUNIVAC LARCとIBM STRETCHを開発しているとの情報を得たバーント委員会(旧高速計算機検討委員会)は、軍用技術の民間への転用を検討するイギリス研究開発公社（英語版）(NRDC)に問題を報告した。18ヶ月間かけて見込みユーザー、フェンティやEMIの技術者チーム、マンチェスター大学やイギリス国防省レーダー研究所の設計チームらと会議を重ねた。 こうした努力があったにもかかわらず、NDRCからの資金は1958年夏の時点では提供されていなかった。キルバーンは話を前進させるため、小型のMuseを製作して様々な設計を実験で試してみることにした。マンチェスター大学はMark 1を時間貸しすることによって得られたお金を基金に貯めており、これを原資にして開発が始まった。このプロジェクトが始まってすぐの1958年10月に、フェンティも開発に参加することを決めた。1959年にNDRCからシステム開発費用として30万ポンドの資金が提供された。これはシステムが成功したら返却する約束だった。マシンの名前はプロジェクトの途中でAtlasに変更された。 詳細設計は1959年末に完成し、コンパイラの開発が進んでいた。しかしスーパーバイザ・オペレーティングシステムの開発はかなり遅れていた。フェランティが新たに採用したデビッド・ハワースがチームに参加してプログラマの人数が2人から6人に増えた。パワフルでエネルギッシュなハワーズらが不眠不休の努力を続けた結果、周辺機器の問題を解決するマルチプログラミング(マルチタスク)機能を搭載した、アセンブリ言語で35,000行のスーパーバイザ(OS)が完成した。 Atlasの第1号機は1962年にマンチェスター大学に設置された。フェランティ・マーキュリーの運用が12月末に終了する予定になっており、設置はこれに間に合わせることが求められた。Atlasは予定通りに設置され、12月7日にAEAのディレクターであるジョン・コッククロフトに正式に引き渡された。このシステムで動作したのは初期バージョンのスーパーバイザだけで、コンパイラはAutocodeだけしかなかった。1964年1月にALGOL 60とFORTRANを搭載したスーパーバイザの最終バージョンがインストールされるまでこの状況は続いた。 1号機は1日20時間の運用スケジュールで1960年代中頃まで使われ、1000本以上のプログラムが動作した。使用時間はマンチェスター大学とフェランティが共有し、フェランティは1時間500ポンドで顧客企業に使わせた。収益の一部は大学のコンピュータ収益基金に返還された。もし仮に大学がコンピュータ時間を民間企業から借りていたら累計で72万ポンドを支払う必要があったと1969年に推計された。このマシンは1971年11月30日に運用を終えた。 フェランティは2台のAtlasを販売しており、1台は1963年にロンドン大学とブリティッシュ・ペトロリアムの合弁企業に、もう1台は1964年12月にイギリス核エネルギー研究所(ハーウェル)に納入された。AEAのマシンは、ハーウェルの敷地からわずか数ヤード離れたチルトンのアトラスコンピュータ研究所に移設され、民有地に設置されて利用しやすくなった。このマシンは拡張され、48ビットで48Kワードのコアメモリと32台のテープドライブを搭載する最大のAtlasとなった。コンピュータ時間はイギリスの全大学が占有できた。1974年3月に運用を終了した。 フェランティは1962年2月にAtlasマシンのパーツの一部をケンブリッジ大学に提供し、その見返りとして大学はシステムのコストダウン版を開発することになった。その成果はTitanとなり1963年夏に稼働した。フェランティはこれをAtlas 2の名前で2台販売し、うち1台を1963年にイギリス核兵器研究所(アルダーマストン)に、もう1台を1966年にイギリス政府が支援しているCADセンターに納入した。 AltasはアメリカのLARCとSTRETCHに対抗するコンピュータとして設計された。いずれもAtlasより先に運用が始まり、LARCは1961年から、STRETCHもAtlasより数か月前から稼働した。AtlasはLARCより4倍高速で、STRETCHより若干遅かった。Atlasに追加された浮動小数点演算器は1.59µsで処理できた一方、STRETCHは同じ仕事を1.38µsから1.5µsで処理できた。LARCの販売は試みられておらず、STRETCHも最終的に何台製造されたのか明らかではない。 1964年に登場したCDC 6600で初めてAtlasが明らかな敗北を喫した。CDCは1959年にMuseの解説を読んだことからインスピレーションを得ており、おかげで開発が大幅に加速して当初の予定よりも早く完成したことを後に明らかにした。オーストラリアの科学産業研究所CSIROは元々Atlasを購入する方向で打ち合わせていたが、結果的にCDCが契約を獲得するに至った。 フェランティは1960年代初頭に深刻な経営難に直面し、1963年にコンピュータ部門をICTへ売却した。ICTはカナダのFerranti-Packard 6000をベースにした構成で中型機であるICT 1900シリーズの販売に注力した。 ハードウェアには数多くの斬新な機能があったが、運用上特に重要な機能のみを以下に示す(ここで示すストレージのサイズはマンチェスター大学に設置されたオリジナルの物であれ、別の場所に設置したマシンでは拡張された)。 48ビットのワード長。1ワードの内容は「浮動小数点数１つ」「命令1つ」「24ビットのアドレス2つ」「整数2つ」「6ビットの文字コードで8文字」のいずれか。 キャリー伝播時間を最小限に抑えるために新しい回路を採用した高速加算器。 24ビット (200万ワード、1600万文字)のアドレス空間。スーパーバイザ(不可侵)ストア、Vストア、固定ストア、ユーザーストアで構成される。 16Kワードのコアストア(96KBに相当)。奇数アドレスと偶数アドレスでインターリーブしている。 8Kワードの読み取り専用メモリ(固定ストア)。ここにはスーパーバイザ(OS)やエクストラコードルーチン(ライブラリ関数)が含まれる。 96Kワードのドラムストア(最大576KB相当)。4つのドラムに分割されているが、仮想メモリ機能により1つのコアストアとして扱われる。 主に二重修飾命令(インデックス修飾)で使われる128本の高速インデックスレジスタ(Bライン)。レジスタアドレス空間にはエクストラコード(システムサービスルーチン)のオペランドアドレス(引数として渡すアドレス)を指定するレジスタや、浮動小数点アキュムレータに指数を渡すレジスタなどの特別なレジスタも含まれる。128本のうち3本はプログラムカウンタ(PC)レジスタで、第125レジスタはスーパーバイザ(割り込み)のPC、第126レジスタはエクストラコードのPC、第127レジスタはユーザーPCだった。第0レジスタは常に0の値を保持していた。 磁気テープなどの当時としては最新の周辺機器を接続可能で、ダイレクトメモリアクセス（DMA)機能を搭載。 メモリの一部として参照できるデバイスの配線を読み書きすることによる、Vストアアドレス(メモリマップドI/O)、割り込み、エクストラコードルーチンによる周辺機器の制御。 目的の仮想メモリがコアストアに存在するかどうかを決定するページアドレスレジスタの連想メモリ。 命令パイプライン Atlasはクロックによる同期を使わない非同期プロセッサであったため、その処理能力を一言で表すのは難しい。以下に例を示す。 固定小数点数のレジスタ加算 – 1.59µs 浮動小数点数の加算(修飾なし) – 1.61µs 浮動小数点数の加算(二重修飾) – 2.61µs 浮動小数点数の乗算(二重修飾) – 4.97µs エクストラコードはAtlasの機能の1つで、複雑な命令をソフトウェアで実装する技術だった。エクストラコードルーチンの呼び出しや戻りと、オペランドへのアクセスを、専用のハードウェアで処理した。またエクストラコードルーチンはROMに格納されており、コアストアよりもアクセスが速かった。 48ビット機であるAlrasでは上位10ビットがオペコードだった。最上位ビットが0の命令はハードウェアが直接実行する通常のマシン語命令だった。最上位ビットが1の命令はエクストラコードで、固定ストア(ROM)内にある特別な種類のサブルーチンジャンプとして実装され、呼び出し先アドレスは残りの9ビットにより決まった。最大512個のエクストラコードが実装可能であり、うち約250個が実装された。 エクストラコードは現代のコンピュータ用語でいう所のソフトウェア割り込みまたはトラップである。三角関数、対数、平方根など、ハードウェアで実装すると効率が悪い数学系のサブルーチンが定義されていた。しかしエクストラコードの約半分はOSを処理するスーパーバイザ関数に使われた。例えば「指定のストリームから特定の文字を印刷する」「論理テープNから512ワードを読み込む」などの指示ができた。エクストラコードはユーザープログラムがスーパーバイザと通信できる唯一の手段だった。フェランティ・オニオンなどの当時のイギリスのマシンはOSのサービスを呼び出すのに同様のメカニズムを採用した。 Atlasは今日のソフトウェアに使われている数多くの概念のパイオニアであり、そのうちの1つであるAtlas Supervisorは現代の定義で言う所のオペレーティングシステムの最初の実装であると考えられている。 Atlasで最初の高水準言語はAtlas Autocodeで、ALGOL 60とは同世代の言語であり、主にトニー・ブルッカーがALGOL 60の欠点を解決する目的で開発した。しかしAtlasはALGOL 60も後にサポートし、FORTRAN、COBOL、ABL (Atlas Basic Language、マシン語に近い言語)などもサポートした。数多くの学生が在籍する大学ではOSが保護される形でマシンコードによる開発ができる開発環境として支持を得ていた。 一部のコンパイラはコンパイラ・コンパイラで開発されており、このやり方で開発されたコンパイラとしては初期のものと見られている。 SPG (System Program Generator)というプログラミング言語も搭載していた。SPGで書かれたプログラムは実行時に別のプログラムを動的に生成してコンパイルできた。ユーザー定義マクロ機能があった。変数は<山括弧>で括られ、テキストパーサーを備えており、SPGプログラムのソースコードはバッカス・ナウア記法に似ていた。 Atlasは当初からOSをマシンの一部として考えたスーパーコンピュータとして設計された。ハードウェアにはOSの動作に役立つ特殊な機能が備わっていた。例えばエクストラコードのルーチンと割り込みルーチンはそれぞれ個別に専用のストレージ、レジスタ、プログラムカウンタが割り当てられていたため、ユーザーモードからエクストラモードやエグゼクティブモードへの、またはエクストラモードからエグゼクティブモードへのコンテキストスイッチは非常に高速だった。