ENIACについて

この記事はIS18er Advent Calendar 2017の2日目の記事として書かれました。

先日大学の図書館でたまたまENIACについての本が目に入り,借りて読んでみたのですが,予想外に面白かったので, 今日はENIACの歴史とか技術的特徴について紹介する記事を書こうと思います。 書き終わってみると割とポエムだしその本の(雑な)要約みたいな感じになっていて恥ずかしいんですが,まあ暇な時にでも読んでください…

因みにきっかけとなった本はこちら。

エニアック ― 世界最初のコンピュータ開発秘話

エニアック ― 世界最初のコンピュータ開発秘話

  • 作者: スコット・マッカートニー
  • 出版社/メーカー: パーソナルメディア
  • 発売日: 2001/08/10
  • メディア: 単行本(ソフトカバー)
  • 購入: 1人 クリック: 17回
  • この商品を含むブログ (9件) を見る

ENIACとは

概要

ご存知の通り,ENIACは世界最初の電子式デジタルコンピューターと言われています(これには様々な反論があります)。当時の世の中はまだアナログ式・機械式コンピュターが主流だった時代です。機械式コンピューターというのは,例えばチャールズ・バベッジ階差機関とか解析機関のようなものがありますが,歯車や回転盤などでできたものをイメージしてもらえればいいと思います。物理的な力で情報の伝達を行っているコンピューターということですね。

ENIACは第2次世界大戦中,弾道計算を高速化するための軍事プロジェクトとして進められていきました。最初はジョン・モークリープレス・エッカートの2人を中心に開発が行われており,のちのENIAC2号機(EDVAC)からはかの有名な数学者フォン・ノイマンも加わりました。

ENIAC(EDVAC)の技術的特徴

ENIACのコンピュータ全体の大まかな構造としてはこんな感じらしい(下のENIAC simulation: index内のマニュアルから抜粋)。

f:id:momohatt:20171130134754p:plain

ACCというのが累算器(Accumulator)で,レジスタの古い呼び名です。このアキュミュレーターと演算回路が一体化したものが20個図の上半分に並んでいます(ENIACの頃はアキュミュレーターはまだ20個でしたが,後のEDVACやUNIVACでは数が増えます)。またCycling Unitはクロックパルスをシステム全体に提供している所,Master Programmerはループ回数を制御する所,Constant Transmitterは定数を表すパルスを送る所,などとなっています。

以下では,個人的に面白いと思った実装上の特徴などを書いていきます。

データが10進法だった

現代のコンピューターでは当たり前のように2進数が使われていますが,ENIACは10進数を採用していました。2進数を使うという発想は当時既に存在していましたが,アナログ式コンピュータが普通だった時代には斬新過ぎて受け入れられないことを恐れたためと,2進法にすると10進法より沢山の真空管が必要となってしまうそうであったことから,10進法を採用していました。(とはいえやはり2進法よりは回路配線が複雑になってしまっていたようです。)

どのようにして10進法を実現していたのかですが,基本的には10進のリングカウンタのような原理を採用していました。数字の各桁についてフリップフロップのようなものを10個用意し,そのうちの1つだけがオンになるようにすることで,0, 1, ... ,9の状態を表すようにしていたそうです。そのフリップフロップのようなもの自体は2つの真空管からできていたため,数字の一桁を表すために20個もの真空管を使っていたことになります。

またデータを転送する際には,10進法は電気パルスの数で表されていました。例えば5という数字が格納されているアキュミュレーター(レジスタ)にパルスを3回送ると8になるとかいうことですね。現代のものとかなり違う仕組みになっていて面白いなあと思いました。

こちらの記事も分かりやすいでしょう。

真空管の大量使用

前述の通り,ENIACには真空管が大量に使用されていました。その数は,開発当初の時点で既に5,000本であったのですが,その後アキュミュレーターを追加していくうちに18,000本にまでのぼっていました。真空管は燃え尽きるのが早く,真空管が30本しか使われていなかった当時のテレビですら頻繁に修理が必要だったような状況であったため,ENIACを完動させるのは不可能だと思われていましたが,エッカートが真空管の質を追究したこと,及び真空管に流す電圧を通常の10%以下に収めることによってなんとか動かしていたようです。

水銀遅延線

ENIACにはこのように記憶容量やその方法などについて改善の余地が大きく残っていたこともあり,ENIACの最終配線図が完成してまだ間もない頃から,2号機EDVACの構想が練られはじめました。

EDVACから採用された画期的な技術の1つに,エッカートが考案した,水銀遅延線を利用したメモリシステムがあります。このあたりの分野は明るくないのでよくわかりませんが,電気パルスを水銀中の超音波に変え,それを水晶発振子圧電効果によって増幅させることによって保存するという技術のようです。エッカートがENIACに携わる前に取り組んでいた研究で得た,音波に関する知見が活かされています。

水銀遅延線を利用したメモリの容量は管の長さに比例するそうですが,真空管を使った場合より圧倒的に省スペースであり,また安価であったようです。

プログラム内蔵方式

上記のように記憶装置の質が改善したこと,および途中からEDVAC開発に加わったフォン・ノイマンが設計の理論面において大きく貢献したことから,EDVACの記憶容量はENIACに比べて格段に増えました。このような状況の中で,命令をケーブルの組み換えによってではなくメモリ中のデータによって実現するプログラム内蔵方式が,世界で初めて可能となりました。

閑話休題ENIAC Simulatorなどの紹介〜

説明を省略したENIACアーキテクチャを知りたい,あるいはとりあえずなんか動かしてみたいという方にいくつか紹介しておきます。これ以外にもきっとググったら出てくることでしょう。

ENIAC simulation: index

ベルリン自由大学の学生が卒業研究で作ったENIACのシミュレーターが公開されています。いくつかサンプルプログラムがあるので,走らせてみると面白いかもしれません。

因みにこんな感じ。頑張れば自分で配線してプログラムできるはずなんですが,そこまではやる気が起きませんでした。

f:id:momohatt:20171130134548p:plain

Edsac Simulator

EDVACの開発報告書の草稿が発表された時に,それを元にしてケンブリッジ大学がEDSACと呼ばれるコンピュータを開発したのですが,そのEDSACのシミュレーターがこちらになります。

Eniac-on-a-Chip Project

また,ENIAC発祥の地であるペンシルベニア大学ムーア・スクールで,ENIACを1つのIC上に再現してみよう!というプロジェクトが過去にあったらしく(すごい),公開されています。

ENIAC絡みの利権問題

ENIAC及びEDVACは,初の電子式・デジタル式コンピューターであったという点や,プログラム内蔵方式を実現したという点などにおいて,コンピュータ開発史にパラダイムシフトをもたらしたことで有名ですが,その利権問題が泥沼であったことも割と有名なようです。

EDVACの『草稿』

1945年の6月ごろ,フォン・ノイマンはEDVACの構想をまとめた『EDVACに関する報告書の第一草稿』をまとめました。これは内部文書とされましたが,軍によって研究家達に広く配布されました。その中では,EDVACでの成果のほとんどがノイマン自身のアイデアであるとされており,元からENIACに関わっていたモークリーとエッカートの貢献は微々たるものとして描写されていました。

元々EDVACの開発において,モークリーとエッカートらエンジニアとノイマンとの間に若干の人間関係のわだかまりがあったこと,および,軍としてはノイマン知名度にあやかって,プログラム内蔵方式などといったEDVACの先進的なアイデアを流行らせたかったということが背景にあるのでしょう。このことによって,プログラム内蔵方式は完全にノイマンの発想ということになり,ノイマンアーキテクチャという別名が付くまでになってしまいました。

そして奪われたENIACの特許

EDVACの開発が終了したのち,モークリーとエッカートの2人はENIACプロジェクトから手を引き,電子コンピュータを商業分野に応用する道を模索すべく,会社を設立します。他の大学などの競合相手が多くいる中でようやく政府機関などとの契約をこぎつけ,モークリーの妻の事故死などの困難を乗り越えながら,2人は新しいコンピューターであるUNIVACを開発していきました。このとき,後にCOBOLを発明した名プログラマであるグレイス・ホッパーなども協力していました。

しかし,資金が集まらずに経営困難に陥り始めたころからエンジニアが減っていき,労働環境は過酷を極めていきました。2人の会社は一度あるタイプライターの会社レミントン・ランドに買収され,その中でUNIVACが完成しました。国勢調査局に納入されたUNIVACは,ある時テレビの娯楽番組ででその性能が特集され,一躍有名になりました。

会社の経営もこの時は順調だったのですが,その後徐々にIBMがコンピューター業界で存在感を増すようになりました。IBMのコンピューターは性能こそUNIVACに劣っていましたが,記憶媒体として元からオフィスにあるようなパンチカードを利用できたため,オフィスを対象に売上を積み重ねていき,ついにコンピューター市場は「IBM7人の小人」と呼ばれるまでにIBMに独占されるようになります。

この独占状態が違法だとして,IBMは1952年に米国司法省により訴えられるのですが,それを皮切りとしたその後の一連の裁判の中で,最終的にモークリーとエッカートが所有していたENIAC特許権が剥奪されてしまいました(このあたりの詳しい説明は上に紹介した本に詳しく書かれています…)。

おわりに

最初はENIACの歴史に興味を持って語り始めましたが,徐々に面倒くさくなったのでこの程度にしておきます。まあ上にあげた本は本当に面白かったので読んでみてください。というか映画化してほしい。