1948年6月のEDSAC I | |
| 開発者 | ケンブリッジ大学数学研究所のモーリス・ウィルクスと彼のチーム |
|---|---|
| メーカー | ケンブリッジ大学 |
| 世代 | 1 |
| 発売日 | 1949年5月6日 (1949年5月6日) |
| 寿命 | 1949–1958 |
| 製造中止 | はい |
| 出荷ユニット数 | 1 |
| オペレーティング·システム | なし |
| CPU | 定格出力の熱電子バルブ |
| メモリ | 512 17 ビットワード、1952 年に 1024 17 ビットワードにアップグレード(温度安定化水銀遅延線) |
| 画面 | テレプリンター |
| 入力 | 5穴パンチテープ |
| 力 | 11kW |
| 下位互換性 | なし |
| 後継 | EDSAC 2とLEO I |
| 関連している | エドバック |
電子遅延記憶式自動計算機(EDSAC)は、初期のイギリス製コンピュータでした。[ 1 ]ジョン・フォン・ノイマンのEDVACに関する報告書の第一草稿に触発され、モーリス・ウィルクスと彼のチームがイギリスのケンブリッジ大学数学研究所で大学にサービスを提供するために構築されました。EDSACは、マンチェスター・マーク1に続いて、通常運用された2番目の電子デジタルプログラム記憶式コンピュータでした。 [ 2 ]
その後、このプロジェクトはJ. Lyons & Co. Ltd.の支援を受け、商業用コンピュータの開発を目指しました。その結果、LyonsはEDSACの設計に基づいてLEO Iを開発しました。EDSACの開発は1947年に開始され[ 3 ]、1949年5月6日に最初のプログラムが実行され、平方数の表[ 4 ]と素数のリスト[ 5 ]が計算されました。[ 6 ] EDSACは最終的に1958年7月11日に廃止され、EDSAC 2に取って代わられました。EDSAC 2は1965年まで使用されました[ 7 ] 。
EDSAC I の構想は、 EDVACの初期計画段階であった1945年にまで遡ります。同年6月、ジョン・フォン・ノイマンは、 J・プレスパー・エッカートとジョン・モークリーが設計者を務めていた当時、コンサルタントとしてEDVAC に関する報告書の第一稿を執筆しました。この文書では、プログラムとデータの両方が同じメモリに格納される、現在フォン・ノイマン・アーキテクチャとして知られるプログラム格納型コンピュータの概念が説明されています。この文書では、コンピュータ命令、つまりプログラムをデータと同じメモリに格納することで、計算の柔軟性と自動化を実現するという考え方を簡単に説明しています。
1946年8月後半、ムーア・スクールの講義の最終週にウィルクスは参加し、エッカートとモークリーが以前に発明したENIACと、彼らが提案した次期プロジェクトであるEDVACの原理を目の当たりにした。 [ 8 ]彼はマイクロプログラミングの概念を提案した。これはコンピュータの論理設計を簡素化するシステムであり、後に産業界で広く採用されることになる。講義で得たEDVACの原理に関する知識を活用し、同年10月にEDSAC Iの開発を開始した。[ 9 ] [ 10 ]
.jpg/440px-EDSAC_(5).jpg)
.jpg/440px-EDSAC_(20).jpg)
EDSACは稼働開始と同時に、大学の研究ニーズに応え始めました。メモリには水銀遅延線、ロジックには低消費電力の真空管を使用しました。消費電力は11kWでした 。 [ 11 ] [ 12 ]サイクルタイムは、通常の命令で1.5ミリ秒、乗算で6ミリ秒でした。入力は5穴パンチテープ、出力はテレプリンターで行われました。
当初、レジスタはアキュムレータレジスタと乗算レジスタに限定されていました。1953年、イリノイ大学滞在から戻ったデイビッド・ウィーラーは、オリジナルのEDSACハードウェアの拡張として インデックスレジスタを設計しました。
1952年に磁気テープドライブが追加されましたが、実際に使用できるほど十分に動作しませんでした。[ 12 ]
1952年まで、利用可能なメインメモリ(命令とデータ)は512ワード(18ビット)しかなく、バッキングストアは存在しなかった。[ 13 ]遅延線(または「タンク」)は2つのバッテリーに分割され、それぞれ512ワードのデータを供給していた。2つ目のバッテリーは1952年に運用を開始した。[ 12 ]
完全な1024ワードの遅延線記憶装置は1955年か1956年初頭まで利用できず、[ 14 ]それまでプログラムは800ワード程度に制限されていました。
ジョン・リンドリー(1958年から1959年にかけて卒業証書課程の学生)は、「50年代後半に入手可能だった粗雑で信頼性の低い自家製のパンチング、印刷、検証機器で、正しい紙テープを1枚でも作成するのは信じられないほど困難でした」と述べています。[ 15 ]
.jpg/440px-EDSAC_(9).jpg)
.jpg/440px-EDSAC_(12).jpg)
EDSACのメインメモリは1024のアドレスで構成されていましたが、当初は512のアドレスしか実装されていませんでした。各アドレスは18ビットで構成されていましたが、最上位ビットはタイミングの問題で常に使用できなかったため、実際には17ビットのみが使用されました。命令は、5ビットの命令コード、1つの予備ビット、10ビットのオペランド(通常はメモリアドレス)、そして命令が17ビットまたは35ビットのオペランド(連続する2ワード、リトルエンディアン)を使用するかどうかを制御する長さビットで構成されていました。すべての命令コードは設計上、1つのニーモニック文字で表現されていました。そのため、例えばAdd命令は文字Aを表すEDSAC文字コードを使用していました。
EDSACは内部的に2の補数形式の2進数を使用していました。数値の長さは17ビット(1ワード)または35ビット(2ワード)でした。特筆すべき点として、乗算器は数値を-1 ≤ x < 1の範囲の固定小数点小数として扱うように設計されていました。つまり、2進小数点は符号のすぐ右にありました。アキュムレータは符号を含めて71ビットを保持できるため、2つの長い(35ビット)数値を精度を損なうことなく乗算することができました。
利用できる手順は次のとおりです。
除算命令は存在しなかった(ただし、様々な除算サブルーチンは提供されていた)。また、アキュムレータに直接数値をロードする方法もなかった(これには「アキュムレータにゼロを格納」命令とそれに続く「加算」命令が必要だった)。無条件ジャンプ命令も手続き呼び出し命令も存在しなかった。これらは当時まだ発明されていなかったのだ。
モーリス・ウィルクスは1953年に発表した論文でEDSACの相対アドレッシングモードについて議論した。彼はサブルーチンの使用を容易にするための提案をしていた。[ 16 ]
初期の命令は、ユニセレクタスイッチ群にハードワイヤードで接続され、起動時にメモリの下位ワードにロードされました。1949年5月までに、初期の命令は、前述のニーモニック設計を活用した原始的な再配置アセンブラを31ワードで提供しました。これは世界初のアセンブラであり、世界的なソフトウェア産業の始まりとも言えるでしょう。EDSACのシミュレーションが公開されており、初期の命令と最初のプログラムの詳細な説明も提供されています。[ 17 ]
EDSACによる最初の計算は、1949年5月6日に実行された平方数を計算するプログラムでした。[ 18 ]このプログラムは、この機械を研究するためにカナダから来ていたベアトリス・ワースリーによって書かれました。[ 19 ] [ 18 ]
このマシンは大学の他のメンバーによって実際の問題を解決するために使用され、現在ではオペレーティング システムに組み込まれている多くの初期の技術が開発されました。
ユーザーは、プログラムを(アセンブラで)紙テープに打ち込むことで準備しました。彼らはすぐに、紙テープを光にかざしてコードを読み取るのが上手になりました。プログラムが完成すると、紙テープリーダーの近くに張られた長いラインに掛けられました。日中そこにいた機械オペレータは、ラインから次のテープを選び、EDSACにロードしました。これはもちろん、今日ではジョブキューとしてよく知られています。何か印刷された場合は、テープと印刷物がユーザーに返され、そうでない場合は、どのメモリ位置で停止したかを通知されました。デバッガが登場するまでにはしばらく時間がかかりましたが、ブラウン管画面を設定して特定のメモリ領域の内容を表示することができました。これは、例えば数値が収束しているかどうかを確認するために使用されました。アキュムレータの符号ビットにはスピーカーが接続されており、経験豊富なユーザーは、特にループで「ハング」したプログラムの正常な音と異常な音を知っていました。
勤務時間外には、特定の「許可されたユーザー」が独自にマシンを操作することが許可され、それは夜遅くまで続き、バルブが破裂した。あるユーザーによると、これはよくあることだったという。[ 20 ]これはフレッド・ホイルの小説『黒い雲』で言及されている。
.jpg/440px-EDSAC_(23).jpg)
初期のプログラマーは、今日では忌み嫌われるような手法、特に自己書き換えコードの使用を余儀なくされました。インデックスレジスタはずっと後になってから登場したため、配列にアクセスする唯一の方法は、特定の命令が参照しているメモリ位置を変更することでした。
このプロジェクトに携わり、世界初のコンピュータサイエンスの博士号を取得したデイビッド・ウィーラーは、サブルーチンの概念を発明したとされている。ユーザーは、アキュムレータに戻りアドレス(つまり、ジャンプ自体の位置プラス1)を入れてサブルーチンの先頭にジャンプすることでルーチンを呼び出すプログラム(ウィーラージャンプ)を作成した。慣例的にサブルーチンはこれを想定しており、まず最終ジャンプ命令をその戻りアドレスに変更する。ジャンプ先の位置を計算するためにユーザーが各サブルーチンの長さを知っていれば、複数のネストされたサブルーチンを呼び出すことができた。再帰呼び出しは禁止されていた。ユーザーは自分のプログラムの終了後に、サブルーチンのコードをマスターテープから自分のテープにコピーした。 (しかし、アラン・チューリングは1945年のNPL ACEの設計提案に関する論文でサブルーチンについて議論し、再帰を可能にするリターンアドレススタックの概念を発明するまでに至った。[ 22 ])
インデックスレジスタがないことは、サブルーチンの作成者にとって問題でした。サブルーチンがメモリのどこにロードされるかを事前に知ることができず、したがって、データの格納に使用されるコード領域(いわゆる「疑似命令」)をどのようにアドレス指定すればよいか分からなかったのです。これは、パンチテープからサブルーチンをメモリにロードする初期入力ルーチンを使用することで解決されました。サブルーチンをロードする際には、開始位置を記録し、必要に応じて内部メモリ参照をインクリメントします。したがって、ウィルクスが述べているように、「マシンの外部で命令を表すために使用されるコードは、内部で使用されるコードとは異なり、その違いは、プログラマの要件とマシンの制御回路の要件の違いによって決まる」のです。[ 23 ]
EDSACのプログラマーは、限られたメモリを最大限に活用するために特別な技術を用いていました。例えば、パンチテープからサブルーチンをメモリにロードする時点で、特定の定数を計算しなければならない場合があります。この定数は、その後再計算する必要はありません。このような状況では、定数は「インタールード」で計算されます。定数を計算するために必要なコードは、サブルーチン全体と共に提供されます。最初の入力ルーチンが計算コードをロードした後、制御はこのコードに移されます。定数が計算され、メモリに書き込まれると、制御は最初の入力ルーチンに戻り、サブルーチンは残りのサブルーチンをメモリに書き込み続けますが、まず開始位置を調整して、定数を計算したコードを上書きします。これにより、汎用サブルーチンに非常に複雑な調整を加えることができ、最終的なメモリ使用量は、特定の状況に合わせて調整した場合よりも大きくなりません。[ 24 ]
ウィーラーとウィルクスは、スタンレー・ギルと共同で、1951年にEDSACのプログラミングに関する書籍『The Preparation of Programs for an Electronic Digital Computer』を出版しました。これは最初のプログラミング教科書でした。 [ 25 ]
サブルーチンの概念により、膨大なサブルーチンライブラリが利用可能になりました。1951年までに、以下のカテゴリーに属する87個のサブルーチンが汎用的に利用可能になりました。浮動小数点演算、複素数演算、チェック、除算、指数演算、関数関連ルーチン、微分方程式、特殊関数、べき級数、対数、その他、印刷とレイアウト、求積法、読み取り(入力)、n乗根、三角関数、計数演算(repeat untilループ、whileループ、forループのシミュレーション)、ベクトル、行列。
最初のアセンブリ言語はEDSAC 用に登場し、他のいくつかのアセンブリ言語に影響を与えました。
| 年 | 名前 | 会社のチーフ開発者 |
|---|---|---|
| 1951 | 地域アセンブリ言語 | モーリス・ウィルクス |
| 1951 | 旋風アセンブラ | MITのチャールズ・アダムスとジャック・ギルモア |
| 1951 | ロチェスターのアセンブラ | ナット・ロチェスター |
EDSACは数学研究所の計算支援サービスの一部として特別に設計されました。[ 26 ]ロナルド・フィッシャーはウィルクスとホイーラーと共同で、遺伝子頻度に関する微分方程式を解くためにEDSACを使用しました。これは生物学研究へのコンピュータの最初の応用でした。[ 27 ] [ 28 ] 1951年、ミラーとホイーラーはこのマシンを使用して79桁の素数を発見しました[ 29 ] -当時 最大の素数でした。
3人のノーベル賞受賞者―― ジョン・ケンドリューとマックス・ペルーツ(1962年化学賞)、アンドリュー・ハクスリー(1963年医学賞)、マーティン・ライル(1974年物理学賞)――は、EDSACの革新的な計算能力の恩恵を受けました。受賞スピーチでは、受賞者はそれぞれ、自身の研究におけるEDSACの役割を称えました。
1960年代初頭、ピーター・スウィナートン=ダイアーはEDSACコンピュータを用いて、階数が既知の楕円曲線上の多数の素数pについて、 pを法とする点の数(N pと表記)を計算しました。これらの数値結果に基づき、バーチとスウィナートン=ダイアー(1965)は、階数rの曲線EのN pが漸近法則に従うと予想しました。この予想はバーチとスウィナートン=ダイアーの予想と呼ばれ、 2024年現在 、数学における未解決問題のトップ1つと考えられています。
いつか「脳」(コンピュータ)が私たち(一般の人々)のレベルまで降りてきて、所得税や簿記の計算を手伝ってくれるかもしれません。しかし、これはあくまで推測であり、今のところその兆候はありません。
— イギリスの新聞「スター」は、パーソナルコンピュータの時代よりずっと前の1949年6月にEDSACコンピュータに関するニュース記事を掲載しました。[ 30 ]
1952年、サンディ・ダグラスはEDSAC向けに、VCR97 6インチブラウン管にグラフィック出力できる三目並べ(tic-tac-toe)のバージョンであるOXOを開発しました。これはおそらく世界初のビデオゲームだったでしょう。[ 31 ] [ 32 ]
スタンレー・ギルが作成した別のビデオゲームでは、点(羊と呼ばれる)が線に近づくと、2つのゲートのうち1つが開きます。[ 33 ]スタンレー・ギルのゲームは、EDSACの紙テープリーダーの光線を介して制御されました。[ 33 ]プレーヤーが手を置くなどしてそれを中断すると、上のゲートが開きます。[ 33 ]光線を中断せずに放置すると、下のゲートが開きます。[ 33 ]
EDSAC の後継機であるEDSAC 2は 1958 年に就役しました。
1961 年、科学者やエンジニア向けのALGOLに似た高水準プログラミング言語であるAutocodeのEDSAC 2 バージョンがDavid Hartleyによって開発されました。
1960 年代半ばには、 EDSAC 2 の後継機が計画されましたが、代わりにマンチェスター大学、フェランティ、プレッシーのAtlas Computerから開発された Atlas 2 のプロトタイプであるTitanに移行しました。
2011年1月13日、コンピュータ保存協会は、ブレッチリー・パーク・キャンパスの国立コンピューティング博物館(TNMoC)にEDSACの実用的なレプリカを構築する計画を発表した。このプロジェクトは、モーリス・ウィルクスに師事したアンドリュー・ハーバートが主導している。 [ 34 ]レプリカの最初の部分は2014年11月に稼働した。[ 35 ] [ 36 ] EDSACの論理回路は、シミュレータの開発と再発見されたオリジナルの回路図の再調査を通じて、細心の注意を払って再構築された。この文書はクリエイティブ・コモンズ・ライセンスの下で公開されている。[ 37 ]進行中のプロジェクトは博物館の訪問者に公開されている。2016年には、2人の元EDSACオペレーター、マーガレット・マーズとジョイス・ウィーラーがプロジェクトを支援するために博物館を訪れた。[ 38 ] 2016年11月時点では、レプリカが完全に完成し運用可能な状態になるのは2017年秋と見積もられていました。[ 39 ]しかし、予期せぬプロジェクトの遅延により、機械が完成し完全に運用可能になる日付は不明となっています。
{{cite journal}}: CS1 メンテナンス: その他 (リンク){{cite web}}: CS1 maint: アーカイブされたコピーをタイトルとして (リンク)