電子式のスーパーコンピュータ「ENIAC」

大砲の弾丸がどのように飛んで行くかは、風の方向や速度、気温、湿度、気圧に加えて大砲のタイプ、弾丸のタイプ、さらには個々の大砲のクセに影響される。正しく、目標に命中させるには、これらの影響を補正して、撃つ方向や、角度を調整する必要がある。このため、射表という表が作られるのであるが、この計算には微分方程式を解く必要があり、人手で計算するのは大変である。

米国陸軍の弾道研究所は、大勢のComputer(計算人)を雇っていたが、それでも間に合わず、計算の効率化を探っていた。その一環として、ペンシルバニア大学のMoore Schoolに電子式の計算機の研究、開発を委託した。これが「ENIAC(Electronic Numerical Integrater and Computer)」である。この開発の主任エンジニアに指名されたのがJohn W. Mauchley(38才)で、主任コンサルタントとなったJ. Presper Eckert Jr.(26才)という若いコンビがENIACの設計製作の中心になった。ENIACは、1942年6月に陸軍との契約が結ばれて設計を開始し、1946年2月に完成した。

  • 30フィート×50フィートの大きな部屋を占有したENIAC

    図1.8 30フィート×50フィートの大きな部屋を占有したENIAC (出典:Rose、 Allen (April 1946)、"Lightning Strikes Mathematics". Popular Science: 83–86.)

ENIACは1万8000本の真空管と7200個のダイオード、1500個のリレー、抵抗を7万個、キャパシタを1万個使い、50万か所のはんだ付けで組み立てられた。このマシンは、9フィート×2フィート、厚み1フィートの42枚のパネルで構成され、30フィート×50フィートの部屋を占有していた。図1.9にENIACの真空管を使って作られた電子回路のパネルの写真を示す。このマシンの開発コストは約50万ドルで、現在の価値に換算すると7億円程度に相当する。

なお、入力にはIBMのカードリーダーを使用し、出力にはIBMのカードパンチを使用していた。

  • ENIACの真空管の並んだパネル

    図1.9 ENIACの真空管の並んだパネル (Computer History Museumで筆者が撮影)

ENIACのブロックダイアグラムを図1.10に示す。ENIACは、アキュムレータ(20台)、イニシエータ、マスタープログラマ、マルチプライア、ディバイド/SQRT、ゲート、バッファ、ファンクションテーブル(3台)という8種の基本コンポーネントからなっている(ただし、ゲートとバッファは図1.10には書かれていない)。

  • ENIACのブロックダイアグラム

    図1.10 ENIACのブロックダイアグラム (出典:http://doi.ieeecomputersociety.org/10.1109/MAHC.2006.40)

アキュムレータは10進10桁のレジスタを持ち、加算、減算を実行する。図1.10に見られるように、ENIACでは20個のアキュムレータが実装されている。イニシエータは、パワーオン、オフやクリアや計算の開始を行う。マルチプライアとDiv/SQRTはアキュムレータと組み合わせて、乗除算や開平演算を行う。

ゲートは論理AND、バッファは論理OR演算を実行する。ファンクションテーブルは、表を記憶しておき、それをひいて値を読み出すことができるユニットで、原理的には、logでも三角関数でも近似できるのであるが、同時に使える表は3つであり、行う計算に応じて、計算開始前に表の値を設定して置く必要がある。

ENIACのプログラミングはプラグボードの接続やスイッチで行われたが、マスタープログラマーで繰り返しの制御などを設定することができた。

図1.11は、ENIACのプログラムに相当する基本コンポーネントの接続図で、横方向のデータバスに基本コンポーネント(大きな箱)の入出力を縦方向の線で接続して、実行する計算に対応する回路を作っている。

  • ENIACのプログラミングに相当する基本コンポーネントの接続図

    図1.11 ENIACのプログラミングに相当する基本コンポーネントの接続図 (出典:Eames,Charles and Ray,A Computer Perspective: Background to the Computer Age、Harvard University Press. First Edition 1973; Second Edition 1990. )

そして、図1.12に示すように、基本コンポーネントの入出力を、昔の手動の電話交換機のように、プラグボードで接続を変更したり、スイッチを切り替えたりして所望の回路を作る。図1.12に写っている女性は大学の数学科を出たプログラマで、単なる作業員ではなく、計算アルゴリズムをハードウェアにマッピングし、どのような接続を作って計算を行うかを考えるという役割も担っていたという。

  • プラグボードとスイッチでプログラムの入力と確認を行う女性プログラマ

    図1.12 プラグボードとスイッチでプログラムの入力と確認を行う女性プログラマ (出典:http://www.columbia.edu/cu/computinghistory/eniac.html)

計算を行うための接続の設計には何週間もかかり、配線変更によるプログラミングには数日を要した。さらに動作検証や命令単位でステップ実行してのデバグが必要であり、正しく動作するプログラムの開発は大変であった。

マシンのクロックは100KHzで、加算には20クロックを必要とした。したがって、2つの10桁の数の加算を毎秒5000回行うことができた。また、乗算は10桁×10桁の場合で毎秒357回(乗数の桁数が少ない場合は、実行時間は短くなり、より多くの計算を実行できる)実行することができた。また、割り算とSQRTは毎秒35回実行することができた。この計算速度はENIAC以前のHarvard Mark IやZuse Z3などと比較すると2桁かそれ以上速いもので、ENIACはこの時代のスーパーコンピュータと言える。

消費電力は200kWで、稼働するとフィラデルフィアの街の電灯が暗くなるのではないかと心配する向きもあったが、実際にはそんなことは無かったようである。

なお、ENIACは、1948年にJohn von Neumannのアドバイスでストアードプログラム方式に改良され、プログラミングが大幅に容易になった。また、1952年には高速シフタが加えられ、マシン速度を80%向上、その次の年には、バローズの100語の磁気コアメモリが実装されて記憶容量を拡大し、20語のアキュムレータだけの場合に比べて計算できる問題の範囲を大きく拡大した。しかし、後継のEDVACなどの多くのより新しいマシンが開発されて陳腐化し、ENIACは1955年10月に運転を終了した。

(次回は1月12日に掲載します)