EDSAC
EDSAC
電子延遲存儲自動計算器(英文:Electronic Delay Storage Auto-matic Calculator、EDSAC)是英國的早期計算機。1946年,英國劍橋大學數學實驗室的莫里斯·威爾克斯教授和他的團隊受馮·諾伊曼的First Draft of a Report on the EDVAC的啟發,以EDVAC為藍本,設計和建造EDSAC,1949年5月6日正式運行,是世界上第一台實際運行的存儲程序式電子計算機。
項目的投資方是英國的J. Lyons & Co. Ltd.,該公司後來推出基於EDSAC設計的第一代商業應用電子計算機LEO I。
EDSAC(電子延遲存儲自動計算機Electronic Delay Storage Automatic Calculator)
EDSAC由英國劍橋大學莫里斯。文森特.威爾克斯(Maurice Vincent Wilkes)領導、設計和製造的,並於1949年投入運行。它使用了水銀延遲線作存儲器,利用穿孔紙帶輸入和電傳打字機輸出。
EDSAC建成於1949年5月6日,是世界上第一台“商用的程序內藏式電子計算機(the world’s first stored-program computer tooperate a regularcomputing service)”,所有現代電腦的鼻祖之一。
EDSACPC是它的模擬程序。可以拿來玩玩。同捆還有一些為這個計算機編寫的程序,及程序編寫方法等。運行方式可以選擇“原始速度”,可以體驗一把上世紀50年代美國人的電腦節奏。
項目的投資方是英國的J. Lyons & Co. Ltd.,該公司後來推出基於EDSAC設計的第一代商業應用電子計算機LEO I。
戰後,威爾克斯回到劍橋大學,擔任數學實驗室(后改名計算機實驗室)主任。1946年5月,他獲得了馮·諾伊曼起草的EDVAC計算機的設計方案的一份複印件。EDVAC是ElectronicDiscrete Variable Automatic Computer的縮寫,是賓夕法尼亞大學莫爾學院於1945年開始研製的一台計算機,是按存儲程序式思想設計的,並能對指令進行運算和修改,因而可自動修改其自身的程序。但由於工程上遇到困難,EDVAC遲至1952年才完成,造成“研製開始在前,完工在後”的局面,而讓威爾克斯佔去先機。威爾克斯仔細研究了EDVAC的設計方案,8月又親赴美國參加了莫爾學院舉辦的計算機培訓班,廣泛地與EDVAC的設計研製人員進行接觸、討論,進一步弄清了它的設計思想與技術細節。
回國以後,威爾克斯立即以EDVAC為藍本設計自己的計算機並組織實施,起名為EDSAC(Electronic Delay Storage Auto-matic Calculator,但有的文獻寫成Electronic DiscreteSequential AutomaticComputer)。EDSAC採用水銀延遲線作存儲器,可存儲34恤字長的字512個,加法時間1.5 ms,乘法時間4 ms。威爾克斯還首次成功地為EDSAC設計了一個程序庫,保存在紙帶上,需要時送入計算機。但是EDSAC在工程實施中同樣遇到了困難:不是技術,而是資金缺乏。在關鍵時刻,威爾克斯成功地說服了倫敦一家麵包公司J.Lyons&Co。.的老闆投資該項目,終於使計劃絕處逢生。1949年5月6日,EDSAC首次試運行成功,它從帶上讀人一個生成平方表的程序並執行,正確地列印出結果。作為對投資的回報,LyOHS公司取得了批量生產EDSAC的權利,這就是於1951年正式投入市場的LEO計算機(Lyons Electronic Office),這通常被認為是世界上第一個商品化的計算機型號,因此這也成了計算機發展史上的一件趣事:第一家生產出商品化計算機的廠商原先竟是麵包房。Lyons公司後來成為英國著名的“國際計算機有限公司”即ICL的一部分。
EDSAC的成功當然不在於它能生成平方表。還在試運行期間,它就完成了一系列重大任務,向世人展示了計算機的巨大潛力。著名的數學家和統計學家菲歇爾(R.A.Fisher,因在20世紀20年代創建方差分析法——varianceanalysis而聞名於世)拿來一個二階非線性微分方程,當程序員編出程序,輸入EDSAC很快就給出了解以後,菲歇爾驚奇得簡直無法相信。
EDSAC還為劍橋大學著名的生物學家肯德烈(J.Kendrew)分析了成百上千張有關分子結構的X射線衍射圖案的照片,肯德烈因為這方面的成就而榮獲1962年諾貝爾獎,他多次提到EDSAC在他的研究工作中所發揮的無可比擬的作用。
![當年一起建設的團隊合影](https://i1.twwiki.net/cover/w200/m9/9/m9988ef30931dbaeb7f34a3baa8bc23f2.jpg)
當年一起建設的團隊合影
在設計與建造EDSAC的過程中,威爾克斯決不是簡單地模仿和照搬EDVAC的設計,而是創造和發明了許多新的技術和概念。諸如“變址”(威爾克斯當時稱之為“浮動地址"----floating address);“宏指令“(威爾克斯當時稱為“綜合指令"--synthetic order);微程序設計(將每一條機器指令的執行分解為一系列更基本的微命令。將可同時執行的微命令組合在一起形成微指令。
所謂微程序就是用微指令編寫出來的一段微指令序列);子常式及子常式庫,所謂子常式即subroutine,就是可用於一個或多個計算機程序中,也可用在一個計算機程序的一處或多處的子程序,其目的在於將複雜的任務分解成若干較小的單位,以便於分別處理;高速緩衝存儲器即Cache(位於中央處理器與主存儲器之間,對程序員透明的一種高速小容量存儲器,以提高處理速度),等等。所有這些都對現代計算機的體系結構和程序設計技術產生了深遠的影響。
EDSAC和LEO計算機的成功奠定了威爾克斯作為計算機大師和先驅在學術界的地位,而EDSAC(LEO)以及其後在英國國家物理實驗室NPL由圖靈進行設計、而由威爾金森(J.H.Wilkinson,1970年圖靈獎獲得者)主持實現的Pilot ACE及其商品化產品DEUCE一起,則使英國的計算機技術在20世紀50年代處於世界領先地位,可以與美國平起平坐。
電子延遲存儲自動計算器(英文:Electronic Delay Storage Auto-matic Calculator、EDSAC)是英國的早期計算機。1946年,英國劍橋大學數學實驗室的莫里斯·威爾克斯教授和他的團隊受馮·諾伊曼的FirstDraft of a Report on the EDVAC的啟發,以EDVAC為藍本,設計和建造EDSAC,1949年5月6日正式運行,是世界上第一台實際運行的存儲程序式電子計算機。
物理組件
EDSAC使用了約3000個真空管,排在12個櫃架上,佔地5×4米,功率消耗12Kw。
EDSAC的內存槽5英尺長,內含32個內存位置。使用水銀延遲線作存儲器,分佈在32個槽中,每個槽5英尺長,裡面包含32個內存位置,共1024個位置。建造時只實現了一半,512個字,第二組於1952年添加。1952年增加一個磁帶存儲,但實際使用中不能良好工作。
陰極射線管輸入採用5路的穿孔紙帶,使用電子紙帶讀入機,速度為每秒個字元,1949年10月改進為每秒16字元,1950年使用光電閱讀器,達到50字元每秒。
輸出使用電傳打字機,速度字元每秒,1951年添加一個16字元每秒的紙帶打孔機
另外,EDSAC可以外接陰極射線管(CRT),可以用來觀察寄存器的值。
EDSAC的原始設計基於EDVAC,概念上是一台十分簡單的機器,這是它的一個良好特徵,與1960-1970年代的RISC體系很相似。
包含5部分:運算器(ALU)、控制器、存儲器、輸入和輸出。運算器和控制器現在一般合稱CPU。
工作在500kHz,平均每秒運行650指令
共1024字(word),每字18位(bit)。但一般只能使用17bit,第一個bit由於電路的建立時間(set-up time)而不能使用。
5bit的指令代碼,11bit內存地址(由於EDSAC內存只有1024,所以實際有1bit保留),餘下1bit在某些指令中,用於指示操作子是單字還是雙字(word)。
存放數據是,EDSAC採用二進位補碼,可表示正負整數和正負真分數。單字17bit,其中第一個bit用於符號位;雙字35bit,此時,第二個字可用滿18bit。 EDSAC的內部結構EDSAC的處理器包含5個基本寄存器:
![EDSAC佔地5×4米](https://i1.twwiki.net/cover/w200/mb/c/mbccb422eaf20a918d2e4e2a14b9df43b.jpg)
EDSAC佔地5×4米
順序存儲器
被乘數寄存器
乘數寄存器
累加器
EDSAC和同時代的計算機均沒有變址寄存器(en:Index_register)。
指令集
平均每條指令運行時間1.5ms,乘法4.5ms,軟體除法大約需要200ms。
完整的指令集可以在這裡的p41找到。
轉移指令
轉移指令只有E-和G-(分別表示累加器的符號位為0和1時轉移),而沒有無條件轉移。因此無條件轉移就需要使用兩條指令;同樣的原因,使得判斷兩個數相等需要八條指令。1952年,指令集添加了無條件轉移,但許多程序和子程序庫需要重寫。
算術指令
加法指令將存放的數據按整數處理。而乘法指令將數據解釋為真分數,兩個17bit的分數相乘得到一個35bit的分數存入累加器。
EDSAC缺少邏輯運算指令,只有AND,也缺少字元處理指令。
![EDSAC的內存槽5英尺長,內含32個內存位置](https://i1.twwiki.net/cover/w200/mf/7/mf7217ad1e1529e2afde4db41bfa0f6a8.jpg)
EDSAC的內存槽5英尺長,內含32個內存位置
第二個版本在1949年8月安裝,佔用了41條指令,使得子程序的重定位和協作變得簡單易用(D.J. Wheeler的重要發明)。
1949年5月6日,第一個在EDSAC程序是列印0-99的平方表。
EDSAC的非凡的特徵是提供了大量的子程序。到1951年,EDSAC含有87個子程序,涵蓋:
EDSAC的應用EDSAC早期應用集中在解決氣象學、遺傳學和X光結晶學等方面的問題。
1951年,Miller和Wheeler利用EDSAC發現了一個當時最大的79位素數。
1951年,A.S. Douglas開發出OXO(井字遊戲),輸出到陰極射線管,是最早的電子計算機視頻遊戲。
1960年代,EDSAC用於收集橢圓曲線解的數值現象,這引出了貝赫和斯維訥通-戴爾猜想。
![EDSAC](https://i1.twwiki.net/cover/w200/m3/0/m305e975f26f5d47996d429822afb8b5f.jpg)
EDSAC