EDSAC (Electronic Delay Storage Automatic Calculator)
EDSACは、1940年代後半にケンブリッジ大学の
モーリス・ウィルクスとそのチームによって開発された、初期の
イギリスの
コンピュータです。
ジョン・フォン・ノイマンのEDVACに関する報告書に大きな影響を受け、世界初のプログラム内蔵式電子計算機の一つとして知られています。しかし、プログラム内蔵方式で最初に稼働したマシンではありません。
開発の背景と初期の応用
プロジェクトはJ. Lyons & Co. Ltd.によって資金提供され、EDSACのデザインは初の商用
コンピュータLEO Iの開発へと繋がりました。
1949年5月6日、EDSACで最初に実行されたプログラムは、0から99までの整数の二乗表と
素数リストを作成するものでした。
EDSACは、その開発直後から大学の研究に活用され、3000本の
真空管を使用し、12kWの電力を消費しました。
主記憶装置には水銀遅延管が用いられ、入力には5孔の
紙テープ、出力には
テレタイプ端末が使われました。
ハードウェア構成
初期のEDSACには、アキュムレータと乗算器用レジスタのみが搭載されていましたが、
1953年にデビッド・ホイーラーがインデックスレジスタを設計し、ハードウェアが拡張されました。
記憶装置と命令セット
主記憶容量は1024ワード(1ワードは17ビット)でしたが、実際には512ワードまで実装されました。35ビットのロングワードは、2つのショートワードを「サンドイッチビット」と呼ばれるビットで区切って使用されました。数値は2の補数表現の二進数で表されました。
EDSACは18個の命令を備えており、17ビットのショートワードの先頭5ビットが命令コードとして機能しました。
紙テープの文字コードをそのまま命令コードとして使用しており、例えば「Add」命令は「A」の文字コードで表現されました。命令コードの後には1ビットの未使用ビットがあり、10ビットのメモリアドレスと、オペランドがショートワードかロングワードかを指定する1ビットが続きました。
乗算器は数値を
固定小数点数として扱い、-1 ≤ x < 1 の範囲で動作するように設計されていました。アキュムレータは71ビット幅で、35ビットのロングワード同士の乗算でも情報が失われないように設計されました。
命令セットには、加算、減算、乗算、照合、シフト、ロード、ストア、条件付きスキップ、入出力、丸め、停止などが含まれていました。除算命令は
サブルーチンで実装され、アキュムレータに直接メモリからロードする命令はありませんでした。
システムソフトウェア
EDSACの起動時には、スイッチ群で実装されたイニシャルオーダがメモリの先頭にロードされました。
1949年5月には、アセンブラの機能が31ワードのイニシャルオーダに搭載され、世界初のアセンブラとなりました。
EDSACはケンブリッジ大学の様々な問題解決に使用され、今日の
オペレーティングシステムに見られるような多くの技術が考案されました。ユーザーは
アセンブリ言語でプログラムを記述し、
紙テープに入力しました。オペレーターは
紙テープを読み取り装置にかけ、ジョブキューのように処理しました。プログラム実行後、結果と
紙テープがユーザーに返却されました。エラーが発生した場合は、停止したメモリ位置がユーザーに伝えられました。
デバッガは存在しませんでしたが、ブラウン管でメモリの内容を表示し、プログラムの進行状況を確認することができました。通常業務時間外には、許可されたユーザーが深夜までEDSACを使用することができましたが、
真空管の故障が頻繁に発生したと言われています。
プログラミング技法
初期のプログラマーは、コード書き換えなどの現代では推奨されない手法を使用していました。インデックスレジスタがなかったため、配列にアクセスするには命令のアドレス部分を実行時に変更する必要がありました。デビッド・ホイーラーは
サブルーチンの概念を発明し、そのアドレスを格納して
サブルーチンにジャンプする手法(Wheeler jump)を考案しました。
サブルーチンは最後にジャンプ命令のアドレス部を書き換えることで、入れ子構造も実現できました。ただし、当時はリロケータブルバイナリなどはなく、プログラマーがジャンプ先を計算する必要がありました。
EDSACの使用経験に基づいて、プログラムと手法をまとめた書籍『The Preparation of Programs for an Electronic Digital Computer』が出版され、世界的に「プログラミング」の実例が広まり、その後の
コンピュータ設計の指針となりました。
アプリケーションソフトウェア
サブルーチンの概念からライブラリが形成され、1951年には浮動小数点演算、複
素数演算、除算、べき乗、各種関数、
微分方程式、
冪級数、対数、印字レイアウト、
数値積分、入出力、反復処理、ベクトル、
行列などの87の
サブルーチンが広く使用されました。
EDSACの利用例
1950年、ウィルクスとホイーラーは遺伝子頻度に関する
微分方程式をEDSACで解き、生物学分野での最初の
コンピュータ利用となりました。1951年には79桁の
素数が発見され、1952年には
三目並べのグラフィック版である『OXO』が開発され、世界初の
コンピュータゲームとなりました。また、EDSACの後継機であるEDSAC 2は、1960年代に
楕円曲線に関する計算に使用されました。
その後の開発
EDSACの後継機であるEDSAC 2は
1958年に稼働を開始し、
1961年には
高水準言語Autocodeが開発されました。1960年代半ばにはEDSAC 2の後継機が計画されましたが、結局Atlas 2の
プロトタイプであるTitanが導入されました。
復元プロジェクト
2011年、Computer Conservation SocietyがEDSACの稼働レプリカを製作し、2015年からは定期的な動作デモンストレーションを行う予定です。このプロジェクトは、
モーリス・ウィルクスの下で学んだAndrew Herbertが指揮しています。
参考資料
50th Anniversary of EDSAC Site
An EDSAC simulator
Oral history interview with David Wheeler
Cambridge's Golden Jubilee