いままで、「最初」と広く考えられているコンピューターを2つ紹介して来ました。
しかし、広く知られている最初のコンピューターである「ENIAC」は、10進法を採用しており、プログラムにも制限があるなど、単に歯車計算機を電子化しただけの域を出ませんでした。
それ以前に作られていた ABC マシンも、2進法が採用されていたと言う先進性はありますが、プログラムの概念すらなく、ガウス消去法による連立1次方程式の解を求めるだけの専用計算機でした。
それでは、現在我々が知っているようなコンピューターは、一体いつ登場したのでしょうか?
使用する数とメモリ 逐次処理 数学的裏づけ ノイマン型コンピューターの誕生
現在我々が使っているようなコンピューターモデルを考案したのは、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 の技術的側面しか見ていない事にいらだちを感じ、論理的な側面を研究しはじめたのです。
EDVAC は軍が資金援助し、軍事機密として開発されていました。情報を公開する事は出来ませんので、特許も申請せず、完全な極秘状態で作業が進められていました。
しかし、ノイマンは EDVAC の論理的側面を、設計思想や技術と共にレポートにまとめ、ノイマンの名前で発表してしまったのです。
彼はこの中で、この設計思想を自分が考えたとも、自分がプロジェクトの中心人物だとも言ってはいません。しかし、世間の人々は彼こそがこの素晴らしい機械の設計者で、プロジェクトの中心人物だと信じて疑いませんでした。
ここに、「ノイマン型コンピューター」という言葉が登場します。現在、コンピューターと言う言葉はほぼ間違いなくノイマン型を意味します。
しかし、彼はその発明を彼の名前で世に知らせた・・・悪く言えば横取りしただけで、重要なアイデアはなにも出していません。
また、ノイマンはEDVACの論理面にのみ興味があり、技術面には興味がないどころか理解を示しませんでした。そのことから元々プロジェクトの中心人物であり、技術に詳しいモークリーと対立するようになって行きます。
勝手な論文発表と不理解から、モークリーはノイマンが自分の手柄を横取りし、EDVACを自分のものにしようとしているのだと考えるようになります。二人は事あるごとに対立し、EDVACプロジェクトは前に進むことが出来なくなっていきます。
この事件から時をおかずして、別の問題も発生します。ENIAC計画の開始時には無関心だったムーア校の監督責任者が、ENIACを自分の手柄にしようとし始めたのです。また、大学もENIACの特許を大学に寄与するように求めてきました。
結局、EDVAC プロジェクトはこのころを境に崩壊していくのです。
途中から参加して、すべてを独り占めするような男とは仕事をしたくない、という感情は当然の物でしょうし、おいしいところだけ持っていこうとする大学の態度にも問題がありました。
そのうえ、ノイマンの発表を受けて、世界各地で EDVAC 方式のコンピューターの開発が始まってしまいました。EDVAC は、「世界初」の名声すらも危うくなってしまったのです。
モークリーとエッカートはプロジェクトを捨てて大学を辞めました。その後も主要人物が抜けて行き、EDVAC 開発は、大きく遅れる事になります。
|
開発中の EDVAC。完成後は綺麗なキャビネットに納められ、配線などは見えないようになっていた。 これは配線むき出し状態の珍しい写真。 |
そうやって EDVAC の開発が難航する中、ついに EDVAC 型の設計で実際に稼動する世界最初のマシンが、イギリスのケンブリッジ大学で誕生します。
製作者はモーリス・ウィルクス(Maulice Wilkes)。初稼動は1949年5月でした。
名前は EDSAC(Electronic Delay Storage Automatic Calculator)。EDVACが必要としたメモリ量よりはずっと少ないですが、32bit 512word のメモリを備え、3000本の真空管が使用されていました。
EDSAC が EDVACと違う点は、プログラムとデータを判別する 1bit をつけなかったことです。このことによりプログラムをデータと同じように書き換えることが可能になり、柔軟なプログラムが可能となりました。
EDSAC は18個の命令を持ちます。プログラムでは、その18個の命令を英字1文字で示し、命令には演算対象の番地とそのアドレスのサイズを指定するようになっていました。
|
EDSAC。 棚状に作られた本体に並んでいるのは、ほとんど真空管である。おそらく演算部の写真。 |
EDSAC により、科学者は初めて「プログラムというものが、予想されていたよりもはるかに難しいものだ」ということを認識します。EDSAC では多くのプログラムが作られ、始めて「プログラムの教科書」とも言える本が出版されました。
それらの中で一番有名なプログラムは、ウィーラー(Wheeler)のイニシャルオーダーと呼ばれるプログラムでしょう。
イニシャルオーダーとは、コンピューターを起動した時に最初に動くプログラムで、EDSAC では紙テープからデータを入力する時に、10進数から2進数へ変換を行い、英字で示されたプログラムを内部形式に変換し、相対アドレスを絶対アドレスに直し、必要なライブラリを結合し、そうして入力されたプログラムを実行できるようにコンピューターを初期化するものです。
つまり、今で言えば BootROM 兼 OS 兼 アセンブラ 兼 リンカ 兼 ローダだと思って良いでしょう。このプログラムは、わずか 41 ステップで書かれていました。
EDSAC は、たしかに現代型のコンピューターとして実用になる最初の機械だったかもしれません。
しかし、それよりも早く、英国マンチェスター大学では Baby Mark-I と呼ばれる EDVAC 型コンピューターの試作がなされていました。開発者はウィリアムス(F.C.Williams)とキルバーン(T.Kilburn)です。
このマシンはENIAC や EDVAC の影響で作られたのではありません。COLOSSUS の延長上にあるのです。プロジェクトは COLOSSUS に参加していたニューマン(M.H.A. Newman)が開始したもので、一時期チューリングも参加していたようです。
初稼動は、EDSACよりも早い1948年 6月 21日。2の18乗の最大素因数を見つけだすプログラムを、52分間で終了しています。そのため、これを世界最初のコンピューターだと主張する向きもあります。
|
Makr1 コンピューター。 むき出しの真空管の中、写真中央右に丸く窓の開いた部分が見えます。ここに「ウィリアムス管」が入れられていました。 マンチェスター Baby Mark-I は、単に「The Baby」とも呼ばれます。 |
しかし、Baby Mark-I は、開発者の一人であるウィリアムスが明言するように、コンピューターアーキテクチャの試作と言うよりは、メモリのアイデアが実際に動作するかどうかの試作だったという意味合いが強いです。
Baby Mark-I には、彼の設計による「ウィリアムス管」がメモリとして採用されていましたが、その容量は 32bit 32wordしかありませんでした。
テレビのブラウン管というのは、電子ビームを磁場によってカーブさせ、蛍光面に当てる事で絵を描いています。
テレビならばこのビームを、左上から横方向に、右端まで行ったら少し下がって左へ、という風に、面を被い尽くすように動かします。しかし、なにも磁場をそのように動かさなくてはならない、という決まりはありません。
ここで、この磁場をメモリの持つアドレスに応じて決定するようにすると、アドレスを指定した時に常に同じ点を描く事になります。(図中緑色のコイルがアドレスを決定することになります)
このとき、蛍光面の手前に絶縁シート(図中赤色)を置き、さらに蛍光面との間に、金属の網の様な物を置いてやります。(図中省略。出力は金属網に接続されている形になります)
ビームは電子の流れですから、こうしてやればシートに電価がたまります。電価がたまっているところにさらに電価を与えれば、電価は追いだされて金網に当たります。
金網に当たった電価は、金網に接続された線に電圧を与え、「シートから電価が追いだされた」ことを知る事が出来ます。よって、ビームの強さと当てる時間により、電価を書き込むことも、読み取ることも自由に出来るのです。
(この方法では読み出しによってメモリの内容が破壊されるため、その後で同じ内容を書き込む必要があります。これも、水銀遅延管やABCマシンと同じ考え方です。)
3回にわたり、世界で最初のコンピューターを追ってきました。登場したコンピューターは、ENIAC、ABCマシン、EDVAC、EDSAC、そして Baby Mark-I。
さて、どれが本当の「最初」なのでしょうか?
難しい問題です。私は少なくとも ENIACや ABCは最初では無いと考えます。EDVACが発想の面では最初なのですが、稼動したのは EDSAC が最初と言うことになっています。しかし、メモリが少なくて実用で無かったとはいえ、Baby Mark-I はそれよりも早いのです。
結局、コンピューターと言うのは誰かが急にひらめいたものでは無く、同じものをめざしてみんなが少しづつ工夫を積み重ねたものだ、と言うことだけは言えます。
ノイマン型、といわれる現代のコンピューターも、本当はノイマンが作ったわけではないのです。
ノイマン以外の人が個々に着想を思い付き、ノイマンの業績はそれをまとめて数学的な裏づけを行った、と言うことだけなのです。
| 参考文献 | |||
| 誰がどうやってコンピューターを作ったのか? | 星野力 | 1995 | 共立出版 |
| トロンへの道程 | NHK取材班 | 1988 | 角川書店 |
| ENIAC 世界最初のコンピューター開発秘話 | スコット・マッカートニー著/日暮雅通訳 | 2001 | パーソナルメディア |
このページの誤字脱字発見・情報提供・意見などありましたら、下の一行掲示板へどうぞ。樫樹の広場から全体を見ることも出来ます。