「世界で最初」と呼ばれたコンピューター
世界で最初のコンピューターはなにか,という問いは簡単なようで難問です。
コンピューター数学者の間でも意見が割れていますし,そこに特許や軍事機密などの法律問題が絡むと,さらにややこしくなります。
しかし,厳密な定義はともかく,一番「最初と一般に信じられている」ものは,ENIACと言う事になるでしょう。
今回は,世界で最初と呼ばれたコンピューター,ENIACの話です。
ENIAC開発の背景
ENIACは,一般には,弾道計算のために開発されたということになっています。
実際,開発の資金を提供した陸軍は,弾道計算のために資金提供したのでした。
しかし,ENIACの構想を考え出したモークリーは,趣味の気象予測のために強力な計算機を必要としていたようです。
当時,「気象は十分な計算パラメータがあれば完全に予測できる」とする仮説が話題となっており,多くの人が実際の予測に取り組んでいました。
物理学者であったモークリーもその一人で,アメリカの降水と太陽の回転の関係について,仮説を立てていました。しかし,この仮説が本当かどうか調べるための計算は,あまりにも膨大で当時の計算機では間に合わなかったのです。
モークリーはさまざまな計算機を調べ,自分でも試作し,やがて真空管を使うと高速な計算機を作れると言うアイディアにたどりつきます。
真空管計算機を作るために電子工学を学ぶ中で,モークリーは若き天才電子工学者,エッカートと出会います。陸軍が開催した電子工学の特別講座で,エッカートは最年少の研究助手,モークリーは最年長の受講者でした。
ふたりは意気投合し,電子計算機の設計にかかります。
モークリーは真空管については素人でした。そして,エッカートは怖いもの知らずの若者でした。
そんな二人だから,こんなたいそれたことを考えついたのです。当時,身近なもので真空管を使った一番複雑な機器はテレビで,30本の真空管を使っていました。しかし真空管は電球や蛍光灯と同じように寿命のあるもので,30本も使うとよく故障するのです。真空管を何百本も使う,複雑な計算機など,理論上は可能でも現実的ではありませんでした。
そのころ,陸軍将校ゴールドスタインは,射表作成のために高速な計算機を探していました。
大砲をうつために必要な「射表」は,ある気温,ある湿度,ある風向きと風速の時に,狙った距離に落とすには,角度と火薬をどれだけの量にすれば良いか,という計算結果をたくさん並べた表です。
ENIAC以前は,数表の作成に微分解析機というアナログ計算機が使われていました。これは円盤とモーターの組みあわせによって積分計算を行う物ですが,速度が非常に遅いと言う欠点が有りました。
歯車ではなく,自由に移動できる円盤を利用して計算を行うため,速度を上げると円盤がすべってしまい,計算結果が狂ってしまうのです。
この微分解析機の作成者であるバーニバー・ブッシュは,コンピューター開発の初期から現在にいたるまで,大きな影響を与えつづけています。
もっとも,彼自身はデジタル計算機を嫌っていた節があります。
このため,射表を作るのには,急いでもおよそ1ヶ月の期間が必要でした。
しかし,戦局が変わり,大砲が使用される土地が変わると,湿度や風速などに必要な条件が変わります。新兵器が開発されたときも,新たな条件で表を作る必要があります。1ヶ月もかかっていては間に合いません。
陸軍が射表作成を委託していた大学に,たまたまモークリーとエッカートがいました。そして,ゴールドスタインの耳にも,二人が作ろうとしているコンピューターの話が入ります。
ENIACの開発は,そうしてはじまりました。
■ENIACの構造
ENIAC(Electronic numerical Integrator and Computer)には17,468本もの真空管素子,1500個のリレー,17万の抵抗,1万のコンデンサ,6千のスイッチ,4千のネオン管,数百のダイヤルが使われています。
総重量は30トンで,高さ2.5メートル,奥行き0.9メートル,幅24メートルで,消費電力は140Kw,放出する熱を冷やすために24馬力の換気システムを必要とするという,非常に大規模な装置でした。
真空管素子と言うものを見た事が無い,と言う方もすでに多いとは思いますが,この素子使うと,電流を増幅したり,スイッチのように流したり流さなかったりの制御が出来るようになります。
増幅したりする機能を持たなくても,真空中で放電を行うものは真空管の一種です。
とくに,この放電で光を得る物を「陰極線管(Cursord Ray Tube)」と呼びます。パソコンのCRTモニタなどは,まさしくこれです。
コンピューターの基本はスイッチングですので,ENIACでは真空管のスイッチ特性を利用しているわけです。
しかし,現在のコンピューターではスイッチの On Off を利用した2進法で計算を行うのに対し,ENIACでは10進法で計算が行われていました。
これには訳があります。モークリーは2進法で計算ができることを知っていたのですが,それでは先進的過ぎて周囲を説得できず,資金が集められないと考えたのです。
そのため,従来の歯車型計算機を「ただ電子に置き換えただけ」に見えるように10進法を採用したのです。
また,2進法への理解不足もあり,「2進法では必要な桁が増えすぎ,装置が膨大になる」とも考えていたようです。実際にはこれは誤りで,2進法を採用したほうが簡単なのですが…
これについては,ENIACの開発中に誤りに気づいたようですが,2進法の採用は次のマシンで,ということになります。
■基本回路
その仕組みはこうです。
ENIACの計算・記憶の単位は,真空管を組みあわせて作った「リングカウンタ」と呼ばれる回路です。
リングカウンタは10個のフリップフロップ(状態保持回路)を使って作られており,1つのフリップフロップは2個の真空管で作られます。つまり,リングカウンタ1つには,20個の真空管が使用されます。
リングカウンタは外部からのパルスで状態を順番に変化させるように出来ており,その状態は10通りあります。この状態を,それぞれ数字の0?9に対応させて考えます。
リングカウンタが9から0に変化する時,パルスを出力します。このパルスを上の桁のリングカウンタに入力してやれば,桁上がりが処理されます。
リングカウンタの模式図
リングカウンタ自身は,0?9の10の状態をもち,外部からのパルス(太い赤矢印)によってその状態を順番に変えていく。(黒矢印で書かれたように,0?9をくりかえす)
9から0に変わる時,カウンタ自身もパルスを発する。このパルスは,1桁上のカウンタへ送られ,桁上がりを処理することとなる。
これは,リングカウンタを歯車,パルスを歯車の個々の歯と見ると,まさしく歯車計算機であることがわかります。
この計算単位が出来上がれば,あとはこれを沢山並べ,読みだしが行えるようにしてやれば良いだけです。
足し算を行うには,パルスとして読み出された各桁を,別のカウンタに入力してやるだけです。
リングカウンタには,真空管の故障を検出する仕組みも内蔵されていました。
上の図を見れば判るとおり,リングカウンタは10個の「フリップフロップ」のうち,どれかひとつだけが ON になるように設計されています。
逆にいえば,複数がONになったり,ひとつもONがなかったりすると真空管の故障が考えられます。そのようなときには,エラー信号を出すようになっているのです。
また,リングカウンタはユニットとして作られ,故障時には故障を検査するのでなく,リングカウンタユニットを丸ごと交換するようにしました。
こうすることで,故障しやすい真空管を大量に使っても,ENIACは十分信頼できる装置となったのです。
■システム構造
ENIACは,このような方式ですから,俗に言う「プログラム」と言う物には広く対応出来ません。とはいえ,配線の組替えや,パンチカードによるパルス制御,さらにはプログラム内蔵によってかなり汎用性の高い計算機になっています。
ENIAC は,単一の回路ではなく,別々に設置されたいくつかのユニットが協調して動作する仕組みになっていました。これらの個々のユニットは並列動作が可能であり,ユニット間はパルスによって情報のやり取りが行われていました。
始動ユニットは,人間とのインターフェイス部分です。プログラムをそろえ,開始ボタンを押せばプログラムが実行されますし,結果はプリンタから出力されます。
マスタープログラマはプログラムの実行を制御します。プログラムと言うのは現在で言うプログラムとはニュアンスがことなり,「どの順序でアキュムレータを呼び出すか」だと思って良いでしょう。
実際には「どの」アキュムレータを呼び出すかは,マスタープログラマとアキュムレータを結ぶ配線によっても決定されますので,マスタープログラマの仕事は「いつ」呼び出すかのタイミング制御と,くり返し制御でした。
ENIAC は後に改造され,これから述べる定数転送ユニット内の数値を命令と解釈して,配線を論理的に切り替えるような機構を備えることになる。
「ENIAC はプログラム内蔵方式ではない」という言葉は,実際には誤っていることになる。
アキュムレータは,計算を行うユニットです。基本的には値を累積していくもので,計算に使う数字は他のアキュムレータからもらうことも出来ますし,マスタープログラマを通してパンチカードからもらうことも出来ます。
1つのアキュムレータは10進数10桁を符号付で記憶することが出来,アキュムレータを二つ使うことで20桁の数字を扱うことも可能になっていました。
ENIAC のシステムとしては全部で20台のアキュムレータが用意されていました。
定数転送ユニットは,計算に使う様々な定数を記憶してあるメモリ装置です。
ユニット内では抵抗マトリックス回路によって,任意の関数表3つを記憶しておくことが出来ました。
全体としては,定数記憶ユニットは10進数12桁300語の容量を持ちます。
アキュムレータ,および定数転送ユニットは,マスタープログラマからのパルス以外に,ディジットトランクと呼ばれる線でも結ばれていました。
この線は,現在で言うデータバスのようなものです。
アキュムレータや定数転送ユニットは,マスタープログラマからの指示に応じて,自分の持っている値をディジットトランクを通じて別のアキュムレータに送ることが出来ました。この際,ディジットトランクの配線次第で,データをシフト(10の累乗倍に当たる)することも可能でした。
アキュムレータ自体は独立した累積計算機であり,他のアキュムレータと独立して動作することが出来ますので,プログラムによっては並列計算を行うことも可能でした。
基本的には,これらの組み合わせによってENIAC は計算を行います。全体の同期信号であるパルスは1秒間に5千回送られていたそうです。…簡単には比べられませんが,クロック周波数5kHz ということになります。
このような仕組みで弾道計算を行った時,弾道1つについての計算を完了するのにかかる時間は,バーニバー・ブッシュのアナログ計算機の10?20分に対し,ENIAC ではわずか20秒しか掛からなかったと言います。
ひとつの表を作るのにはおよそ3,000本の弾道計算が必要でした。そう考えると,ブッシュのアナログ計算機では1枚の表を作るのに1ヶ月を要していたものが,ENIACでは半日でできることになります。
■ENIACとフォン・ノイマン
ENIAC の開発は,当初陸軍のプロジェクトとして陸軍弾道研究所で始まりました。しかし,ENIAC 作成の提案と実際の作成はペンシルバニア大学ムーア校で行われています。
ENIAC開発スタッフ
作成したのは,ムーア校に着任したばかりのモークリー,大学院研究生のエッカート,弾道研究所軍将校のゴールドスタインを中心としたメンバーです。
左は開発スタッフの写真。左端がエッカート,2人おいてゴールドスタイン,つづいてモークリー。
プロジェクトは1943年6月に開始されましたが,完成したのは戦争終結後の1946年2月でした。
完成後公開された ENIAC。139平方メートルの部屋に,コの字型に設置されていた。
この部屋は空調が行き届き,真空管が安定して動作できるように管理されていた。もちろん,虫などが入り込むことは出来ない。
手前の男は配線を切り替えるパッチパネルを使い,プログラムを行っている。
完成して最初のテストは,弾道計算ではありませんでした。加減乗除,正弦余弦関数の表を作る簡単なプログラムと一緒にテストされたのは,水爆の爆縮時の衝撃波の計算でした。
当時の新聞によれば,人間の計算手にやらせれば100年はかかると見積もられるこの問題を,ENIACは2時間で解いたそうです。
この応用問題は,ENIAC 開発開始から1年程たったころ,開発中心者のひとりであったゴールドスタインが,水爆開発を行っていたロス・アラモス研究所の顧問と出会ったことから行われたものでした。
研究所顧問とは,当時衝撃波の専門家としてしられた数学者,フォン・ノイマンでした。
ノイマンはゴールドスタインから電子計算機の話を聞き,強い興味を持ってENIAC開発現場を何度か訪れていたのです。
ノイマンは,この後別のコンピューターの開発に携わり,コンピューターの父と呼ばれるようになります。
■ENIAC にまつわる伝説
ENIAC にまつわる数多くの逸話の中に「ENIAC は故障率が非常に高く,連続して運用出来るのはせいぜい15分だった」というものがあります。真空管の寿命と,ENIAC に使われた真空管の本数から確率計算を行うとこうなるのだそうです。
しかし,実際にはペンシルバニア大学においてある間には90%以上の時間動作していたという記録が残っています。先に書いたように,万が一故障したときにすぐにユニットを交換し,稼動を続けられる工夫も万全でした。
さらに,実はENIACの真空管は,メーカーが規定する電圧よりもずっと低い…たった1割の電圧で駆動されていました。これは,製作前の事前実験で,性能には問題を出さずに,寿命をずっと伸ばす方法として考えられた方法でした。
ENIACは最初から「故障しにくいように」するための設計が随所に盛り込まれており,安定した性能を示していたのです。
一説によれば,陸軍ではENIACを「使うときだけ電源をいれていた」とも言われています。真空管は電源を入れてから安定するまでに時間がかかり,電源のON OFFを繰り返すと速く劣化しますから,あるいはこれが「故障しやすい」という説の元かもしれません。
「真空管は光を発するため,蛾が集まって来てショートする事がある。これがバグという言葉の由来」という逸話もありますが,これも嘘です。
ENIAC は空調の行き届いた密室に設置されており,蛾が入り混む余地はありませんでした。
蛾によって計算ミスを引きおこしたのは,リレー式コンピューターのハーバードMark-II です。
1955年10月2日,ENIAC の電源は落とされました。ENIAC の役目は終わったのです。
その後 ENIAC は解体されます。その一部はスミソニアン博物館,スミソニアン・アメリカ歴史博物館,そして ENIAC の生まれ故郷であるペンシルバニア大学などに収蔵されました。
しかし,これは計算機の終わりではありませんでした。この頃までには ENIAC に触発されて各国で計算機の研究が始まり,成果を見せ始めていたのです。
これが,計算機時代の幕明けでした。
参考文献
誰がどうやってコンピューターを作ったのか?
トロンへの道程
ENIAC 世界最初のコンピューター開発秘話
追記 2006.02.15
ENIAC のニュース動画が公開されていました。
参考にリンクしておきます。
追記 2020.06.22
ENIAC の速度について,ファミコンとの比較を日記に書きました。
当記事を書いた際にはまだ僕自身 ENIAC の動作を理解できていなかったので,プログラム方法などの補佐的な情報も書いています。
魔法使いの森
https://www.wizforest.com/
https://www.wizforest.com/OldGood/