The Electronic Delay Storage Automatic Calculator (EDSAC) was an early British computer.[1] Inspired by John von Neumann's seminal First Draft of a Report on the EDVAC, the machine was constructed by Maurice Wilkes and his team at the University of Cambridge Mathematical Laboratory in England to provide a service to the university. EDSAC was the second electronic digital stored-program computer, after the Manchester Mark 1, to go into regular service.[2]
Later the project was supported by J. Lyons & Co. Ltd., intending to develop a commercially applied computer and resulting in Lyons' development of the LEO I, based on the EDSAC design. Work on EDSAC started during 1947,[3] and it ran its first programs on 6 May 1949, when it calculated a table of square numbers[4] and a list of prime numbers.[5][6] EDSAC was finally shut down on 11 July 1958, having been superseded by EDSAC 2, which remained in use until 1965.[7]
The conception of the EDSAC I can be traced back to 1945, during early planning of the EDVAC. In June of that year, John von Neumann wrote his First Draft of a Report on the EDVAC after taking on a consulting role while J. Presper Eckert and John Mauchly were the designers. The document described the concept of a stored-program computer, where both the program and data are stored in the same memory, which is now known as the Von Neumann architecture; it briefly explains the idea that computer instructions, or the program, could be stored in the same memory as the data, allowing for flexibility and automation in computation.
その後、1946 年 8 月、ウィルクスはムーア スクール講義の最終週に参加し、エッカートとモークリーの以前の発明であるENIACの原理と、彼らが提案した次のプロジェクトである EDVAC について知った。 [ 8 ]彼は、コンピュータの論理設計を簡素化するシステムであるマイクロ プログラミングの概念を提案し、これは後に業界で広く採用されるようになった。講義で EDVAC の動作概念について得た知識を利用して、彼はその年の 10 月に EDSAC I の開発を開始した。[ 9 ] [ 10 ]


EDSACは稼働開始と同時に大学の研究ニーズに応え始めた。メモリには水銀遅延線、ロジックには定格を下げた真空管を使用した。消費電力は11kWだった。 [ 11 ] [ 12 ]サイクルタイムは通常の命令で1.5ms、乗算で6msだった。入力は5穴パンチテープ、出力はテレプリンターだった。
当初、レジスタはアキュムレータと乗算器レジスタに限られていた。1953年、イリノイ大学での滞在から戻ったデビッド・ウィーラーは、オリジナルのEDSACハードウェアの拡張機能としてインデックスレジスタを設計した。
1952年に磁気テープドライブが追加されたが、実用的に使えるほど十分に機能することはなかった。[ 12 ]
1952年までは、使用可能なメインメモリ(命令とデータ)は512ワードの18ビットのみで、バックアップストアはありませんでした。[ 13 ]遅延線(または「タンク」)は、それぞれ512ワードを提供する2つのバッテリーに配置されていました。2番目のバッテリーは1952年に稼働を開始しました。[ 12 ]
1024ワードの遅延線ストアが完全に利用可能になったのは1955年か1956年の初め頃で[ 14 ] 、それまではプログラムは約800ワードに制限されていた。
ジョン・リンドレー(1958~1959年度卒業学生)は、「50年代後半に入手可能だった粗雑で信頼性の低い自家製のパンチ、印刷、検証装置では、正しい紙テープを1枚でも作成するのは信じられないほど困難だった」と述べている。[ 15 ]


EDSACのメインメモリは1024個のロケーションで構成されていましたが、最初にインストールされたのは512個のロケーションのみでした。各ロケーションは18 ビットでしたが、タイミングの問題により最上位ビットは常に使用できなかったため、17 ビットのみが使用されました。命令は、5ビットの命令コード、1つの予備ビット、10ビットのオペランド(通常はメモリアドレス)、および命令が17ビットまたは35ビットのオペランド(連続する2つのワード、リトルエンディアン)を使用するかどうかを制御する1つの長さビットで構成されていました。すべての命令コードは、設計上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 ]
この機械は大学の他のメンバーによって実際の問題を解決するために使用され、現在オペレーティングシステムに組み込まれている多くの初期の技術が開発されました。[ 20 ]
ユーザーは、アセンブラで作成したプログラムを紙テープにパンチして準備しました。すぐに、紙テープを光にかざしてコードを読み取ることに習熟しました。プログラムが完成すると、紙テープリーダーの近くに張られたラインに吊るされました。日中は機械オペレーターがラインから次のテープを選択し、EDSACにロードしました。これはもちろん、今日ではジョブキューとしてよく知られています。何かが印刷された場合は、テープと印刷物がユーザーに返却され、そうでない場合は、どのメモリ位置で停止したかが通知されました。デバッガはまだ登場していませんでしたが、陰極線管スクリーンを設定して特定のメモリ領域の内容を表示することができました。これは、たとえば数値が収束しているかどうかを確認するために使用されました。スピーカーはアキュムレータの符号ビットに接続されていました。熟練したユーザーは、プログラム、特にループで「ハング」したプログラムの正常な音と異常な音を識別できました。
勤務時間外には、特定の「許可されたユーザー」が機械を自分で操作することが許されており、バルブが破裂するまで深夜まで稼働していた。あるユーザーによると、バルブが破裂するのはよくあることだったという。[ 21 ]これはフレッド・ホイルの小説『黒い雲』でほのめかされている。

初期のプログラマーは、今日では好ましくない手法、特に自己書き換えコードの使用を余儀なくされた。インデックスレジスタがずっと後になるまで存在しなかったため、配列にアクセスする唯一の方法は、特定の命令が参照するメモリ位置を変更することだった。
このプロジェクトに携わり、世界初のコンピュータサイエンス博士号を取得したデビッド・ウィーラーは、サブルーチンの概念を発明した人物として知られています。ユーザーは、アキュムレータに格納された戻りアドレス(つまり、ジャンプした位置から1つ上のアドレス)を使ってサブルーチンの先頭にジャンプすることでルーチンを呼び出すプログラムを作成しました(ウィーラージャンプ)。慣例として、サブルーチンはこの動作を想定しており、最初に最後のジャンプ命令をその戻りアドレスに変更しました。ユーザーは、ジャンプ先の位置を計算するために各サブルーチンの長さを知っていれば、複数のサブルーチンやネストされたサブルーチンを呼び出すことができました。再帰呼び出しは禁止されていました。ユーザーは、自身のプログラムの終了後、マスターテープからサブルーチンのコードを自身のテープにコピーしました。 (しかし、アラン・チューリングは1945年のNPL ACEの設計提案に関する論文でサブルーチンについて論じ、再帰を可能にするリターンアドレススタックの概念を考案するまでに至った。[ 23 ])
インデックスレジスタがないことも、サブルーチンの作成者にとって問題となった。サブルーチンがメモリのどこにロードされるかを事前に知ることができず、したがって、データ格納に使用されるコード領域(いわゆる「擬似命令」)のアドレス指定方法もわからなかったからである。この問題は、パンチテープからメモリにサブルーチンをロードする役割を担う初期入力ルーチンを使用することで解決された。サブルーチンをロードすると、開始位置を記録し、必要に応じて内部メモリ参照をインクリメントした。したがって、ウィルクスが書いたように、「機械の外部で命令を表すために使用されるコードは、内部で使用されるコードとは異なり、その違いは、一方ではプログラマの要求、他方では機械の制御回路の要求の違いによって決まる」。[ 24 ]
EDSACのプログラマーは、限られたメモリを最大限に活用するために特別な手法を用いました。例えば、パンチテープからサブルーチンをメモリにロードする際に、特定の定数を計算する必要が生じる場合がありました。この定数は、その後再計算する必要はありません。このような場合、定数は「インターリュード」と呼ばれる処理の中で計算されます。定数を計算するために必要なコードは、完全なサブルーチンとともに提供されます。最初の入力ルーチンが計算コードをロードした後、このコードに制御を移します。定数が計算されメモリに書き込まれると、制御は最初の入力ルーチンに戻り、サブルーチンの残りの部分をメモリに書き込み続けますが、まず開始点を調整して定数を計算したコードを上書きします。これにより、汎用サブルーチンに対して非常に複雑な調整を行うことが可能になり、最終的なメモリ使用量は特定の状況に合わせて調整した場合よりも大きくなることはありませんでした。[ 25 ]
ウィーラーとウィルクスは、スタンレー・ギルと共に、1951年にEDSACのプログラミングに関する書籍『電子デジタルコンピュータのためのプログラムの準備』を出版した。これは最初のプログラミング教科書であった。 [ 26 ]
サブルーチンの概念により、膨大なサブルーチンライブラリが利用可能になりました。1951 年までに、浮動小数点演算、複素数演算、チェック、除算、べき乗、関数関連のルーチン、微分方程式、特殊関数、べき級数、対数、その他、印刷とレイアウト、求積法、読み込み(入力)、n乗根、三角関数、カウント演算(repeat until ループ、whileループ、for ループのシミュレート) 、ベクトル、行列など、さまざまなカテゴリの 87 個のサブルーチンが一般的に使用できるようになりました。
最初のアセンブリ言語はEDSAC向けに登場し、他のいくつかのアセンブリ言語に影響を与えた。
EDSACは、数学研究所の計算支援サービスの一部として特別に設計されました。[ 27 ]ロナルド・フィッシャーは、ウィルクスとウィーラーと共同で、EDSACを使用して遺伝子頻度に関する微分方程式を解きました。これは、生物学の研究にコンピュータを初めて応用した例です。[ 28 ] [ 29 ] 1951年、ミラーとウィーラーはこのマシンを使用して、当時知られていた最大の79桁の素数を発見しました。 [ 30 ]
ノーベル賞受賞者3名――ジョン・ケンドリューとマックス・ペルーツ(化学賞、1962年)、アンドリュー・ハクスリー(医学賞、1963年)、マーティン・ライル(物理学賞、1974年)――は、EDSACの革新的な計算能力の恩恵を受けた。受賞スピーチの中で、彼らはそれぞれ、EDSACが自身の研究において果たした役割を認めている。
1960年代初頭、ピーター・スウィナートン=ダイアーはEDSACコンピュータを用いて、ランクが既知の楕円曲線上の多数の素数pに対するpを法とする点の数(N pと表記)を計算した。これらの数値結果に基づき、バーチとスウィナートン=ダイアー(1965)は、ランクrの曲線Eに対するN pが漸近法則に従うと予想した。これはバーチとスウィナートン=ダイアーの予想であり、 2024年現在、数学における最も未解決の問題の1つと考えられている。
いつか「頭脳」(コンピューター)が私たち一般人のレベルにまで降りてきて、所得税や簿記の計算を手伝ってくれるようになるかもしれない。しかし、これはあくまで憶測であり、今のところそのような兆候は全く見られない。
—イギリスの新聞「ザ・スター」は、パーソナルコンピュータの時代よりもはるか以前の1949年6月のEDSACコンピュータに関する記事の中でこう述べている。[ 31 ]
1952年、サンディ・ダグラスはEDSAC用の三目並べ(ティックタックト)のバージョンであるOXOを開発し、グラフィック出力はVCR97 6インチ陰極線管に行いました。これはおそらく世界初のビデオゲームだったでしょう。[ 32 ] [ 33 ]
スタンリー・ギルが作成した別のビデオゲームでは、点(羊と呼ばれる)が2つのゲートのうち1つが開く線に近づくというものでした。[ 34 ]スタンリー・ギルのゲームは、EDSACの紙テープリーダーの光線によって制御されていました。[ 34 ]光線を遮ると(例えば、プレイヤーが光線の中に手を入れるなど)、上のゲートが開きます。[ 34 ]光線を遮らないと、下のゲートが開きます。[ 34 ]
EDSACの後継機であるEDSAC 2は、1958年に就役した。
1961年、科学者や技術者向けのALGOLに似た高水準プログラミング言語であるAutocodeのEDSAC 2版が、David Hartleyによって開発された。
1960年代半ば、EDSAC 2の後継機が計画されたが、代わりにマンチェスター大学、フェランティ、プレッシーのアトラスコンピュータをベースに開発されたアトラス2のプロトタイプであるタイタンへと移行した。
2011 年 1 月 13 日、コンピュータ保存協会は、ブレッチリー パークキャンパスにある国立コンピューティング博物館(TNMoC)に EDSAC の動作するレプリカを構築する計画を発表しました。このプロジェクトは、モーリス ウィルクスの下で学んだアンドリュー ハーバートが主導しています。[ 35 ]レプリカの最初の部分は 2014 年 11 月に電源が入れられました。[ 36 ] [ 37 ] EDSAC の論理回路は、シミュレータの開発と再発見されたオリジナルの回路図の再調査を通じて綿密に再構築されました。このドキュメントはクリエイティブ コモンズ ライセンスの下で公開されています。[ 38 ]進行中のプロジェクトは博物館の訪問者に公開されています。2016 年、オリジナルの EDSAC オペレーター 2 名、マーガレット マーズとジョイス ウィーラーがプロジェクトを支援するために博物館を訪れました。[ 39 ] 2016年11月時点では、レプリカが完全に完成し稼働状態になるのは2017年の秋と推定されていた。[ 40 ]しかし、予期せぬプロジェクトの遅延により、完成して完全に稼働する機械の日付は不明となっている。
{{cite journal}}: CS1 メンテナンス: その他 (リンク){{cite web}}: CS1 maint: タイトルとしてアーカイブされたコピー (リンク)<ref>タグに不明なパラメータ "#" があります。サポートされているパラメータは dir、follow、group、name です (ヘルプ ページを参照してください)。