ENIAC
ENIAC(エニアック、Electronic Numerical Integrator and Computer)は、アメリカで開発された黎明期の電子計算機。
電子式でディジタル式だがプログラム内蔵方式とするにはプログラムのためのメモリはごくわずかで、パッチパネルによるプログラミングは煩雑ではあったものの、必ずしも専用計算機ではなく広範囲の計算問題を解くことができた。しかし、任意の計算可能な問題について計算できるという能力が当初の時点で基本的にはあったわけではなく(後述)、アナログ機械式計算機の一種類である微分解析機と同様に、微分方程式で表すことができるような多くの種類の問題について積分法によって数値的な解を得る(ただしこちらは数値的(ディジタル)に)、という機械である。後の改良により、ごく小規模だがプログラミング的な使い方も可能になり、円周率の桁数向上記録の歴史で有名な1949年の2037桁という記録は、そのような改良後の機能を活用したものである。
当初は、アメリカ陸軍の弾道研究所での砲撃射表の計算を第一の目的として設計されたが、その初期に行われた計算で射表の計算とは全く違うもののひとつに、マンハッタン計画についてのものがある。1946年に発表されたとき、報道には「巨大頭脳」(Giant Brain) といった呼称が見られる。なお、新技術に "Brain" という比喩を使うのは、戦時中から見られる。例えば、ライフ誌1937年8月16日の p.45 に Overseas Air Lines Rely on Magic Brain (RCA Radiocompass)、1942年3月9日の p.55 に the Magic Brain - is a development of RCA engineers (RCA Victrola)、1942年12月14日の p.8 に Blanket with a Brain does the rest! (GE Automatic Blanket)、1943年11月8日の p.8 に Mechanical brain sights gun (How to boss a BOFORS!) といった記事があり、また、各種の計算機械を扱ったエドモンド・バークレーの啓蒙書 "Giant Brains, or Machines That Think"(邦題『人工頭脳』)などといった例もあるように、これは何ら特記事項ではない。
第二次世界大戦中、ENIACの設計と製作の資金はアメリカ陸軍が支出した。その契約は1943年6月5日に結ばれ、ペンシルベニア大学電気工学科(ムーア・スクール)にて "Project PX" の名で秘密裏に設計が開始された。1946年2月14日の夕方に完成したマシンが公開され、翌日にはペンシルベニア大学で正式に使用が開始された。開発にかかった総額は50万ドル弱だった。アメリカ陸軍に正式に引き渡されたのは1946年7月のことである。1946年11月9日、改造と記憶装置のアップグレードのためにシャットダウンされ、1947年にはメリーランド州のアバディーン性能試験場に移送された。そこで1947年7月29日に電源を入れ、1955年10月2日の午後11時45分まで運用された。
ENIACを考案・設計したのはペンシルベニア大学のジョン・モークリーとジョン・プレスパー・エッカートである。設計開発に加わった技術者としては、ロバート・F・ショー(Robert F. Shaw/ファンクションテーブル)、ジェフリー・チュアン・チュー(除算器/平方根計算器)、アーサー・バークス(乗算器)、ハリー・ハスキー(入出力)、ジャック・デイヴィス(Jack Davis/アキュムレータ)らがいる。
1987年、ENIACはIEEEマイルストーンに選ばれた。
ENIACはモジュラー構造で、個々のパネルがそれぞれ異なる機能を担っている。そのうち20のモジュールはアキュムレータと呼ばれ、十進法で10桁の数値を記憶し、加減算しかできない。数値はそれらモジュール間を結ぶいくつかの汎用バスを通して渡される。高速性を実現するため、数値の転送も計算も結果の格納も次の操作へのトリガも全て可動部品を使わずに行われる。その汎用性の鍵となったのは分岐する能力で、計算結果の符号によって次の操作を選択できるようになっていた。
ENIACは17,468本の真空管、7,200個のダイオード、1,500個のリレー、70,000個の抵抗器、10,000個のコンデンサ等で構成されていた。人手ではんだ付けされた箇所は約500万に及ぶ。幅30m、高さ2.4m、奥行き0.9m、総重量27トンと大掛かりな装置で、設置には倉庫1個分のスペース(167m2)を要した。消費電力は150kW。そのため、ENIACの電源を入れるとフィラデルフィア中の明かりが一瞬暗くなったという噂が生まれた。入出力にはIBMのパンチカード(読み取り装置とパンチ)を使用可能だった。出力されたパンチカードをIBMのタビュレーティングマシン(IBM 405 など)に読み込ませて印字することができる。
ENIACでは当時一般的だった8ピンソケットの真空管を使っている。アキュムレータのフリップフロップには双三極管 6SN7 が使われ、他の論理回路には 6L7、6SJ7、6AC7 が使われている。モジュール間を結ぶケーブル上でのパルスを駆動するのに 6L6 と 6V6 が使われている。
現在のコンピュータは二進法で計算を行うものがほとんどだが、ENIACは内部構造に十進法を採用した。1桁の十進数を格納するのに、10ビットのリング・カウンタを使用しており、1桁の記憶に36本の真空管を必要とする。そのうち10本は双三極管で、フリップフロップでリング・カウンタを構成している。演算は、リング・カウンタが入力パルスをカウントする形で行われ(リング・カウンタのビット列は二進数を表しているのではなく、"1"の個数がその桁の値である)、あふれるとキャリーパルスを発生する。これは機械式計算機で数を表す歯車を電子的にエミュレートしたものである。全部で20の10桁のアキュムレータがあり、10の補数表現で負の値を表し、毎秒5,000回の加減算を行える。複数のアキュムレータを接続して同時並行的に動作させることができるので、最高性能はさらに高い。
1つのアキュムレータのキャリーをもう1つのアキュムレータへの入力とし、全体で20桁の演算となるよう構成することもできるが、回路のタイミングの関係で3つ以上のアキュムレータをキャリーで接続することはできない(30桁などは不可能)。アキュムレータのうち4台は「乗算器」の制御下にあり、毎秒385回の乗算が可能である。また5台のアキュムレータは「除算器/平方根計算器」の制御下にあり、毎秒40回の除算または毎秒3回の平方根計算が可能である。
他に、始動ユニット(処理の始動・停止を行う)、サイクリングユニット(クロックパルスを他のユニットに供給)、マスタープログラマ(ループ回数を制御するユニット)、リーダー(IBM製パンチカード読取装置の制御)、プリンター(IBM製カードパンチ機の制御)、定数転送ユニット、ファンクションテーブルといったユニットで構成されている。
Rojas and Hashagen またはウィルクスは、より詳細に内部の動きを説明しており、それは上述のものとは若干異なる。基本マシンサイクルは200マイクロ秒(サイクリングユニットの100kHzのクロックパルスの20サイクルに相当)で、10桁の数値を毎秒5,000回操作できる。その1サイクルで数値をレジスタに書き込んだり、レジスタから数値を読み出したり、2つの数値の加減算を行ったりできる。10桁の数値と d 桁の数値(d の最大値は10)の乗算には d+4 サイクルを必要とするので、10桁の数値同士の乗算は14サイクル(2800マイクロ秒)かかり、毎秒357回ということになる。どちらか一方の数値の桁数が少なければ乗算はもっと短時間で終了する。除算と平方根計算には 13(d+1) サイクルかかり、この場合の d は結果(商または平方根)の桁数である。したがって最大143サイクル(28,600マイクロ秒)かかるので毎秒35回となる(ウィルクスは、10桁の商を求めるのに6ミリ秒かかるとしている)。こちらも演算結果の桁数が少なければもっと短時間で完了する。
当初、真空管は毎日数本が壊れ、修理には毎回30分ほどかかった。特殊な高信頼真空管が使えるようになったのは1948年のことである。故障の大部分は電源の投入・切断時に起きていた。これは真空管のヒーターとカソードの加熱と冷却の際にもっともストレスがかかるためである。そこで、真空管のフィラメントを定格の10%未満という低い電圧で動作させ、加熱と冷却でフィラメントが膨張と収縮を繰り返さないよう電源は落とさない等、多くの工夫を行った。それにより真空管の故障率を2日に1本という割合にまで低減させた。エッカートは1989年のインタビューで「真空管の故障はだいたい2日に1本の割合で、修理は15分で完了した」と述べている。1954年、116時間(ほぼ5日間)という連続運転記録を達成している。
メモリがごくわずかなため、プログラム内蔵能力は事実上はほぼ無く、パンチカードなどの外部デバイスからプログラムを取り込む方式である。
ENIACは複雑なプログラムも組むことができ、ループ、分岐、サブルーチンが可能である。プログラミングは複雑な作業で、通常1週間ほどかかった。紙上でプログラムが完成したら、次にパッチパネルでスイッチ群やケーブルの配線を変更することでプログラムをENIACに設定する必要があり、それに数日かかる。そして設定ミスがないかを検証・デバッグするのに、ENIACの「シングルステップ」動作機能を活用する。
ENIACのスポンサーは弾道研究所だったが、プロジェクト開始から1年後、ロスアラモス国立研究所でマンハッタン計画に従事していた著名な数学者ジョン・フォン・ノイマンがこの計算機のプロジェクトに気付いた。ロスアラモス研究所はENIACに深く関与するようになり、最初にENIACで計算した問題も砲撃射表ではなく水素爆弾に関するものだった。その計算の入出力には約100万枚のパンチカードを必要とした。
1997年、ENIACのプログラミングを担当していた6人の女性がWomen in Technology International(WITI)の殿堂入りを果たした。1946年当時の呼び名で言えば、キー・マクナルティ、ベティ・ジェニングス、ベティ・スナイダー、マーリン・ウェスコフ、フラン・バイラス、ルース・リターマンの6人である。ジェニファー・S・ライトのエッセイ "When Computers Were Women" では、計算機科学史で女性の果たした役割が軽視されてきたことの概略とENIACでの女性の果たした役割について書かれている。また、LeAnn Erickson による2010年のドキュメンタリー映画でもENIACのプログラマ達が果たした役割を描いている。
ENIACの設計は一種独特であり、決して他では採用されなかった。1943年に設計が完了しているため、その後間もなく発展した技術革新を採り入れておらず、特にプログラム内蔵能力を欠いていた。エッカートとモークリーはより単純で強力な新設計を開始し、それが後にEDVACと呼ばれるようになる。1944年、エッカートはデータとプログラムの両方を格納する記憶装置(水銀遅延線)を説明する文書を書いた。ペンシルベニア大学ムーアスクール(工学部)のコンサルタントだったジョン・フォン・ノイマンは、プログラム内蔵方式が議論され構築されたミーティングに参加している。フォン・ノイマンは、そのミーティングでの議論をまとめたような内容の文書である、EDVACに関する報告書の第一草稿(First Draft of a Report on the EDVAC)を書いた。同文書は学会の論文や書籍のような手続きを経て出版されたものではなく、(知られている限りでは)ノイマンによる手書きの草稿と、それを元にしたタイプライタによる原稿がある。後者はENIACの管理責任者だったハーマン・ゴールドスタインがそのコピーをいくつかの政府機関や教育機関に配布し、また当時の何人かの研究者(たとえばイギリスのモーリス・ウィルクス)が何らかの機会を得て読んでいる。それにより各地で新世代の電子計算機を構築することへの関心が高まり、イギリスのケンブリッジ大学のEDSACやアメリカ国立標準局のSEACなどが生まれることになる。
1948年以降、ENIACにもいくつかの改良が施され、例えば簡単なリードオンリーのプログラム格納機構が加えられた。これは本来数表を設定するファンクションテーブルをプログラムを格納するROMに流用したもので、ENIACの特許にも含まれているアイデアである。また、弾道研究所のリチャード・クリッピンガーも独自に提案していた。フォン・ノイマンの助力を得てクリッピンガーは実装すべき命令セットを考えた。クリッピンガーは3アドレス方式を考えていたが、フォン・ノイマンはより実装が簡単な1アドレス方式を提案。6番のアキュムレータの3桁をプログラム・カウンタとして使い、15番のアキュムレータを主アキュムレータとし、8番のアキュムレータをファンクションテーブルからデータを読み込む際のアドレスポインタとして使用する。他のアキュムレータの大部分(1-5、7、9-14、17-19)はデータメモリとして使用する。ENIACでのプログラム内蔵方式のプログラミングはベティ・ジェニングス、クリッピンガー、アデル・ゴールドスタイン(ハーマン・ゴールドスタインの妻)が行った。1948年9月16日、プログラム内蔵方式でのENIACが初公開されている。このときのプログラムはフォン・ノイマンが基本設計しアデル・ゴールドスタインがプログラミングした。この改造によってENIACの性能は6分の1となり並行計算能力も失われたが、何日もかかっていたプログラミング作業が数時間に短縮され、性能低下を考慮しても価値のある改造だった。また、計算は電子式だが入出力はパンチカードによる電気機械式であり、この性能差の影響も分析した。それによると、実際の問題は例外なくI/Oバウンド(入出力が性能のボトルネックとなる状態)であり、本来の並行計算能力を使わない場合でもそれは変わらなかった。プログラム内蔵方式に改造して性能が低下してもI/Oバウンド状態は変わっていない。1952年、高速シフタが追加され、シフト性能が5倍になった。1953年7月、100ワードの磁気コアメモリが追加され、数値表現を3増し符号の二進化十進表現とした。この拡張メモリをサポートするため、新たなファンクションテーブル・セレクター、メモリアドレス・セレクター、パルス成形回路が加えられ、プログラミング機構にも3つの新命令が加えられた。
機械式および電気式の計算機械は19世紀から登場しているが、ここでは現代的な(計算理論の用語で「万能」(universal)である)電子式コンピュータが誕生する前夜と言える、1930年代から1940年代の計算機械から話を始めることとする。
1939年から1940年にかけて、ベル研究所ではジョージ・スティビッツがリレー計算機 Complex Number Calculator を開発し、1940年にはダートマス大学とベル研究所を電話回線で結び、遠隔からその計算機を操作してみせた。
ドイツではコンラート・ツーゼがZ3を設計(1941年5月には稼働)。これが世界初のプログラム可能な計算機で二進数を使っていたが、リレーによる電気機械式である。さん孔テープでプログラムを供給するものでプログラム内蔵方式ではなく、条件分岐命令が無いため現代的なプログラミングが普通にできるわけではない。すなわち、チューリング完全を意図して設計されてはいない。後になって1998年に、チューリング完全である、とする報告が書かれているが、数値演算のトリッキーな組み合わせによって「条件付きの計算」に相当するような結果が得られる、とするハック的なものであり、近年の「x86はmov命令だけでチューリング完全である」といったような主張と同様な、実用的ではないものである。1943年12月、ベルリン空襲により現物は失われた。
アメリカでは初の完全な電子計算機械としてアタナソフ&ベリー・コンピュータ (ABC) が開発された(1941年夏に稼働)。真空管による二進演算回路を実装しているが汎用性はなく、連立一次方程式を解くことに特化している。また、記憶装置が機械的に回転するため、性能がその回転速度に制限されていた。また入力がパンチカードだったため、それによっても性能が制限されていた。制御は手動であり、プログラム能力はない。
イギリスではトミー・フラワーズがColossusを設計し、1943年から暗号解読に使われた。Colossusはデジタル式・電子式でENIACのようにスイッチと配線でプログラムを設定するが、暗号解読専用であり汎用性はない。
ハワード・エイケンの Harvard Mark I(1944年)はリレーを使った電気機械式の計算機で、さん孔テープでプログラムを供給する。様々な計算が可能だが、分岐命令がない。
ENIACは任意の演算を実行可能という点では Z3 や Mark I と同等だが、さん孔テープからプログラムを読み込むという点は欠けている。Colossus とはプログラムの設定方法が共通である。ENIACの利点は、チューリング完全性と電子的処理速度にある。ABCとENIACとColossusはいずれも真空管で演算回路を構成している。また、Z3やABCは二進法を採用していたが、ENIACは十進法だった。
1948年まで、ENIACでのプログラミングはColossusのように配線変更で行われていた。プログラムとデータを共通の記憶装置に格納するというプログラム内蔵方式はENIAC開発中に考案されたが、戦時中だったため完成が優先され、当初のENIACにそれが実装されることはなかった。また、ENIACには電子的な記憶装置が20カ所しかなく、データやプログラムの格納には小さすぎた。
Z3とColossusはそれぞれ独自に開発され、ABCやENIACとも無関係である。Z3は1943年のベルリン空襲により、存在が知られることはなく破壊された。Colossusはイギリスの戦時中の諜報活動に使われたため、1970年代までその存在は明かされなかった。ABCは、ジョン・アタナソフがアメリカ海軍での研究開発に招集され放置されたため、アイオワ州立大学で廃棄状態になっていた。そのため、それらのコンピュータは国民に知らされることはなかった。一方、ENIACは1946年に報道によって一般に知られるようになった。そのため、一般にはENIACが「世界初のコンピュータ」と見なされることが多い。こと日本では、「電子計算機」=「コンピュータ」という意訳的解釈による所も大きい(逐語的には「コンピュータ」という語に「電子」の意味は無い)。
専門家は一般に、初の実用的なプログラム内蔵方式のコンピュータであるEDSAC、ないし、実用性には難があったがプログラム内蔵方式としてそれより先に稼働したManchester SSEM(Manchester Baby)を挙げる。
ENIACに関する特許(米国特許番号3,120,606号)は1964年に発効した。後に、この特許を盾にしたスペリーランドによる寡占が問題となり、1973年10月19日にミネアポリス連邦地方裁判所の判決で、審判中にいくつかの手続き上の問題点が発見されたことから、特許の一部が無効とされた。このためENIACは現在「世界最初の電子式コンピュータ」ではなく、(ABCが「汎用」とするには機能が限定されていた、という点から鑑みて)「世界最初の汎用電子式コンピュータ(the first general-purpose electronic computer)」と呼ばれることが多い。なお、この件を『ENIAC神話の崩れた日』などとして、あたかも歴史が書き換えられたかのごとく扱う者もいる。いずれにせよENIACが、コンピュータの黎明期において歴史的に重要な役割を果たしたものの1つであることに変わりはない。
ペンシルベニア大学工学部では、40台のパネルのうちの4台と、3台のファンクションテーブルのうちの1台を所有している。スミソニアン博物館の国立アメリカ歴史博物館は5台のパネルを所有。ロンドンのサイエンス・ミュージアムも一部を展示している。マウンテンビューのコンピュータ歴史博物館では、3台のパネルと1つのファンクションテーブルを展示している(スミソニアンから貸与)。ミシガン大学はアーサー・バークスが保管していた4台のパネルを所有している。ENIACが使われていたアバディーン性能試験場のアメリカ陸軍兵器博物館はファンクションテーブルを1台所有している。またテキサス州プレイノの Perot Group には7台のパネルがあり、ENIACの歴史や仕組みについての詳細な展示がある。
ニューヨーク州ウェストポイントの陸軍士官学校にはENIACで使われていたデータ入力端末がある。
ペンシルベニア大学の学生は、1995年に、7.44 mm x 5.29 mmのシリコン基板上に0.5 µmのCMOS技術でトランジスタを174,569個形成することにより、ENIACを再現した。