コンピューター技術の確立
いままで、「最初」と広く考えられているコンピューターを2つ紹介して来ました。
しかし、広く知られている最初のコンピューターである「ENIAC」は、10進法を採用しており、プログラムにも制限があるなど、単に歯車計算機を電子化しただけの域を出ませんでした。
それ以前に作られていた ABC マシンも、2進法が採用されていたと言う先進性はありますが、プログラムの概念すらなく、ガウス消去法による連立1次方程式の解を求めるだけの専用計算機でした。
それでは、現在我々が知っているようなコンピューターは、一体いつ登場したのでしょうか?
目次
解説
EDVACという思想
現在我々が使っているようなコンピューターモデルを考案したのは、ENIAC の設計者である、エッカートとモークリーでした。
彼らはまだ ENIAC のプロジェクトが続いているうち・・・基本設計が終わり、制作に取りかかりはじめた1944年、はやくも、新しいマシンを設計しはじめます。それが EDVAC (Electronic Discrete VAriable Calculator)でした。
EDVAC の設計目標は、ENIAC よりも速く、ENIAC よりもコンパクトで、ENIAC よりも柔軟な計算が出来る事でした。
採用する数とメモリ
ENIACの設計前に、ABCマシンをはじめとして、すでにいくつか2進法の計算機は存在しました。電気を使った計算では、2進法のほうが扱いやすいためです。
EDVAC でも、2進法が採用される事になりました。ENIAC で使われていた 10進法は、人間にはわかりやすいのですが、計算回路も記憶回路も無駄が多すぎるのです。
2進法を採用する事で、計算回路はかなり単純化する事が出来ました。
次の問題は、大量のメモリをどう確保するかでした。
EDVAC では高速性を確保するために、プログラムをパンチカードで指示するのではなく、メモリに格納する予定でした。
このためには、データ、プログラムそれぞれにメモリが必要になりますから、大量のメモリを確保する必要が出て来ます。
EDVAC設計時にはメモリに8つの応用
- 乗除算の中間結果
- 命令
- 特殊関数表
- 偏微分方程式の初期条件と境界条件
- 双曲型または放物型偏微分方程式の積分中の中間結果
- 全微分方程式における同様の記憶
- 楕円型偏微分方程式を逐次近似で解く時の同様の記憶
- ソーティング
が想定され、その必要メモリ量は8000 wordと見積もられました。
EDVAC では、当時アイデアが出されていたいくつかのメモリから検討をした結果、主記憶として「水銀遅延管メモリ」が採用される事になりました。
水銀遅延管メモリのアイディアは、エッカートが以前レーダーの改良を手がけた経験から生まれたものでした。
レーダーは電波が反射して戻ってくるまでの時間で物体の位置を測定します。ということは、その時間を正確に測る必要があるということです。
エッカートは、ここで「音波」を利用しました。液体を満たしたタンクの中に音波を通し、短い区間を音波が通った回数によって時間を計るというアイディアでした。
水銀遅延管メモリはこのアイディアを応用したものです。長い水槽の片側のスピーカーから超音波のパルスを発生させ、逆側でマイクを使ってパルスを読み出すようにします。
図中赤い部分はデータをを超音波パルスとして、青い部分は電気として扱います。スピーカーとマイク(実際には、どちらもピエゾ素子を使用)は、電気と音波を変換する役目を持ちます。 |
マイクで拾いだしたパルスはすぐにしきい値論理回路を通し、ふたたびスピーカーにフィードバックされます。ここらへんは ABCマシンの記憶装置と同じ考え方です。
パルスがスピーカーからマイクに届くのに時間がかかる事を考えると、これは「一定時間記憶していた」ことになります。パルスを連続して流せば、水銀槽は数 bit を記録するメモリとして機能するのです。
EDVAC では、プログラムとデータのメモリを物理的に分けて考える事はやめました。そうすれば、プログラム量とデータ量の兼ね合いを考える事が可能になり、汎用性が増します。
そこで、同じ遅延管にデータとプログラムをいっしょくたにして入れてしまい、その代わりに後で区別するために 1bit のフラグをつける、と言う方法が考え出されました。
EDVAC の word 長は、数値 30bit 符号 1bit に、この判別 bit を足して、32bitとなっています。
逐次処理
しかし、こうすることでまた別の問題も発生します。
遅延管は音波をつかって記録を行うため、欲しいデータがマイクに入るまで待たなくてはならない事があるのです。
データだけならまだしも、プログラムも遅延管に入れるとなると、速度が低下する恐れがあります。
そこで、EDVAC では、ENIAC についていた並列実行の機能をなくし、順次実行のみに機能を限定しました。
遅延管からは順次プログラムが入って来るため、その順番に順次実行を行っていれば速度の低下は起こらなくなります。そして、EDVAC は十分高速であるため、並列実行無しでも ENIAC よりも速いのです。
2進法の採用、プログラムのメモリ内蔵、順次実行・・・現代のコンピューターの基礎が、ここに完成しました。
数学的裏付け
ちょうど設計の検討が終わったころ、ENIAC プロジェクトに一人の亡命数学者が加わる事になりました。彼はロスアラモスで原爆の研究をやっており、衝撃波の計算が出来る高速なマシンが欲しかったのです。 そして、ENIAC プロジェクトの主要メンバーというのは、そのまま EDVAC プロジェクトの主要メンバーでも有りました。数学者は、EDVAC についても知る事になります。 彼の名は、ジョン・フォン・ノイマン。 現在ではコンピューターの父と呼ばれています。 |
彼はアラン・チューリングという学者とあった事が有りました。
チューリングといえば、現在では「チューリングマシン」や「チューリングテスト」で有名ですが、当時はCOLOSSUSと言う軍事機密を扱った仕事をしていたこともあり、その業績は一般には知られていませんでした。
無限の長さの自由に送り戻しが出来る紙テープと、紙テープに文字を書くペンと、紙テープの文字を読み取るヘッドを備えています。
ここで、紙テープに「1+1」という文字が書かれている事を、ヘッドが読み取ります。マシンは紙テープを走査して、別の所に書かれていた「1+1」は「2」だという情報を読み取ります。
そして、最初の位置に戻って、ペンで「2」と書き込むのです。これで、計算が出来た事になります。
チューリングは、1936年発表の「計算可能な数について」という論文の中でこの機械を考案し、この原理を使えば、ありとあらゆる数がこの機械で計算出来ることを示しました。そして、紙テープに記録する情報を数字に限らなければ、この機械が考えを持っているように振る舞う事も可能だと考えたのです。
本来のチューリングマシンについては、いつか書ければ…と思います。
ノイマンは、EDVAC の設計指針を見て、これはチューリングマシンにほかならない事を感じました。
そして、エッカートやモークリーらが EDVAC の技術的側面しか見ていない事にいらだちを感じ、論理的な側面を研究しはじめたのです。