電子數值積分電腦

<image>

<image>

電子數值積分電腦（Electronic Numerical Integrator And Computer），由其縮寫，簡稱為伊尼亞克（ENIAC，icon，也可稱埃尼阿克）是世界上第一台通用電腦，誕生於美國賓夕法尼亞大學。它是圖靈完全的電子計算機，能夠重新編程，解決各種計算問題。

ENIAC為美國陸軍的彈道研究實驗室（BRL）所使用，用於計算火炮的火力表。ENIAC在1946年公布的時候，就被當時的新聞讚譽為「巨腦」。它的計算速度比機電機器提高了一千倍。這是一個飛躍，之前沒有任何一台單獨的機器達到過這個速度。它的數學能力和通用的可編程能力，令當時的科學家和實業家非常激動。發明它的人為了進一步推廣這些新思想，舉辦了一系列關於計算機體系結構的講座。

在二戰期間，美國陸軍資助了ENIAC的設計和建造。建造合約在1943年6月5日簽訂，實際的建造在7月以「PX項目」為代號秘密開始，由賓夕法尼亞大學穆爾電氣工程學院進行。建造完成的機器在1946年2月14日公布，並於次日在賓夕法尼亞大學正式投入使用。建造這台機器花費了將近五十萬美元（考慮通貨膨脹，相當於2011年的六百五十萬美元）。1946年7月，它被美國陸軍軍械兵團正式接受。為了翻新和升級存儲器，ENIAC在1946年11月9日關閉，並在1947年轉移到了馬里蘭州的阿伯丁試驗場。1947年7月，它在那裡重新啟動，繼續工作到1955年10月2日晚上11點45分。

ENIAC是賓夕法尼亞大學的約翰·莫奇利（John Mauchly）和約翰·皮斯普·埃克特（J. Presper Eckert）構思和設計。協助開發的設計工程師團隊包括羅伯特·F·肖（函數表）、朱傳榘（除法器/平方-平方根器）、托馬斯·凱特·夏普勒斯（主程序器）、阿瑟·伯克斯（乘法器）、哈利·赫斯基（讀取器/列印器），還有傑克·戴維斯（累加器）。ENIAC在1987年被評為IEEE里程碑之一。

## 描述

<image>

ENIAC是模塊化電腦，由執行不同功能的獨立面板組成。其中二十個模塊是累加器，這些累加器不僅能做加減運算，還能存儲十位十進位數。當數被調用的時候，它們通過一些通用的總線在這些單元間傳遞。為了實現高速，面板需要獨立完成發送和接受數、計算、儲存結果、觸發下一個操作，這一系列的操作都不需要任何移動部件。它的多功能性關鍵在於「分支」的能力——能根據計算結果的符號觸發不同的操作。

除了速度之外，ENIAC最引人注目的就是它的體積和複雜性。ENIAC包含了17468個真空管、7200個晶體二極體、1500個繼電器、10000個電容器，還有大約五百萬個手工焊接頭。它的重量達27噸（30美噸），體積大約是2.4m×6m×30.48m（8×30×100英尺），占地167平方米（1800平方英尺），重30英噸，耗電150千瓦（導致有傳言說，每當這台電腦啟動的時候，費城的燈都變暗了）。IBM的卡片閱讀器用於輸入，打卡器用於輸出。使用IBM會計機（比如IBM 405）可將這些卡片用於離線產生輸出。

ENIAC使用十位環形計數器存儲數字，每個數字使用36個真空管，其中10個是雙三極體，它們組成了環形計數器的觸發器。算數運算通過對環形計數器脈衝的計數進行，如果計數器被脈衝「環繞」了，則產生一個進位脈衝。「環繞」的思想在電子領域模擬了機械加法機數字滾輪的操作。ENIAC有20個帶符號的十位累加器，它們使用10的補碼表示方法，每秒可在它們和數字源（例如另一個累加器，或者常數傳送器）進行5000次簡單加減操作。因為幾個累加器可以同時運行，所以潛在的速度峰值由於這種並發操作而比上述數字高得多。

通過將兩個累加器用線連接起來，可以實現雙精度計算，不過累加器進行電路時序控制，這阻止了三個或更多的累加器被連接起來讓精度更高的擴充可能。ENIAC中的四個累加器被一個特殊的「乘法器」單元所控制，每秒可進行385次乘法操作。還有五個累加器被一個特殊的「除法器/平方-平方根器」單元，每秒可進行四十次除法運算或三次求平方根運算。

ENIAC中其他九個單元是「初始化單元」（啟動和停止機器）、「循環單元」（用於同步其他單元）、「主程序器」（控制「循環」序列）、「讀取器」（控制IBM打孔卡片讀取器）、「列印器」（控制IBM打孔卡片的打孔）、「常數傳送器」，還有三個「函數表」。

<image>

羅哈斯和Hashagen（或者威爾克斯）對於各種操作的時間給出了更多細節，這些時間與上述不同。基本機器周期是200微秒（循環單元中100kHz時鐘的20個周期），進行十位數運算時每秒種5000個周期。在一個周期內，ENIAC可以向寄存器內寫入一個數，從寄存器內讀取一個數，或者加/減兩個數。10位數乘以d位數（「d」最大是10）的運算占用d+4個周期，所以10位數乘以10位數的運算占用14個周期，也就是2800微秒（每秒357次）。如果其中一個數不足10位，則操作進行得更快。除法和求平方根的操作占用13×(d+1)個周期，「d」是運算結果（商或平方根）的位數。所以，除法和求平方根操作最多占用143個周期，也就是28600微秒（每秒35次）。（威爾克斯說，產生10位數商的除法操作僅需要6毫秒。）如果結果的位數不足10，則速度更快。

### 可靠性

ENIAC使用普通的八腳電子管，十進位累加器用6SN7觸發器製成，6L7、6SJ7、6SA7，和6AC7用於邏輯功能。無數的6L6和6V6用作線路驅動器，驅動著脈衝從機架組件間通過電纜傳遞。

<image>

當時，一些電子方面的專家預言管件會經常壞，導致機器根本沒法使用。這個預言後來被部分證實了：每天都有幾個管件燒壞，使ENIAC有差不多一半的時間功能受損。1948年以前並沒有特殊的高可靠性管件。然而，這些損壞多數時候發生在預熱和冷卻時期，在這兩個時期，管件加熱器和陰極承受著最大的壓力。於是，工程師採用了一種簡單但是代價昂貴的手段，就是永遠不把機器關掉，由此把ENIAC的管件損壞頻率降低到了可接受的程度——每兩天損壞一個管件。根據1989年對Eckert的採訪，不斷損壞管件的故事因此幾乎成了一個神話：「我們每兩天就有一個管件壞掉，但是我們能在15分鐘內定位到問題出現的地方。」1954年，沒有損壞持續運作最長的時間是116小時（接近五天）。

### 編程

雖然彈道研究實驗室是ENIAC的發起者，但是直到這個三年的項目進行了一年以後，約翰·馮·諾伊曼才注意到這台電腦，當時他在洛斯阿拉莫斯國家實驗室研究氫彈。這個實驗室隨後深入參與了ENIAC項目，以至於對ENIAC的第一次測試運行是計算氫彈相關數據，而不是火力表。這次測試的輸入、輸出數據是一百萬張卡片。

ENIAC可以編程，執行複雜的操作序列，可以包含循環、分支和子程序。獲取一個問題並把問題映射到機器上是一個複雜的任務，通常要用幾個星期的時間。當問題在紙上搞清楚之後，通過操作各種開關和電纜把問題「弄進」ENIAC還要用去幾天的時間。然後，還要有一個驗證和測試階段，由機器的「單步執行」能力協助測試。

當時在ENIAC編程方面做得最多的六位女士，1997年入選國際科技名人堂。根據她們在1946年互相的稱呼，她們是凱·麥克納爾蒂（凱薩琳·安東內利）、貝蒂·詹寧斯（讓·Bartik）、貝蒂·斯奈德（貝蒂·Holberton）、Marlyn·Wescoff（Marlyn·梅爾策）、弗蘭·Bilas（弗朗西絲·斯賓塞），和露絲·Lichterman（露絲·泰特鮑姆）。珍妮弗·S.·萊特的文章《當電腦是女人》記錄和闡述了操作ENIAC的女士們的角色，以及歷史上對女性在電腦科學歷史中角色的遺漏或淡化。ENIAC程式設計師的角色也在2010年的一個紀錄片中被正視。

ENIAC是個獨一無二的設計，從來沒被復製過。1943年設計的凍結意味著，電腦設計缺乏創新，發展得不好，尤其是缺乏存儲程序的能力。Echert和Mauchly開始了一個新的設計工作，後來被稱為EDVAC，這個設計不但更簡單，而且更強大了。特別是在1944年，Eckert寫了他對於存儲單元的描述（汞的延遲線存儲器）。這種存儲單元既存儲數據，又存儲程序。馮·諾伊曼向穆爾學校徵詢EDVAC，並旁聽了穆爾學校的會議。存儲程序的概念在這個會議上提出來了，他寫下了不完整的筆記（《關於EDVAC的報告初稿》），擬用作內部的備忘錄，描述、說明會議上提出的關於正規邏輯預言的思想。ENIAC的管理員和安全人員赫爾曼·戈德斯坦向一些政府和教育機構分發了《初稿》的副本，廣泛地帶動了對構建新一代電子計算機（包括EDSAC和SEAC）的興趣。

從1948年期，ENIAC進行了若干次升級，其中就包括原始的只讀程序存儲機制。這個機制以函數表作為程序的只讀存儲器，由理察·Clippinger博士提出，並包含在了ENIAC的專利中。Clippinger向馮·諾伊曼詢問實現什麼樣的指令集。Clippinger想出了一種三地址結構，而馮·諾伊曼提出了一地址結構，因為實現起來更簡單。一個累加器（6）的三個數字用作程序計數器，另一個累加器（15）用作主累加器，第三個累加器（8）用作從函數表中讀取數據的地址指針，另外的大部分累加器（1-5、7、9-14、17-19）用作數據存儲。ENIAC中存儲的程序的編程工作是由貝蒂·詹寧斯、Clippinger和阿黛勒·戈德斯坦完成的。1948年9月16日，ENIAC運行了一個由阿黛勒·戈德斯坦寫給馮·諾伊曼的程序，因此成為了第一個存儲程序電腦。這個修改在六個因素上降低了ENIAC的速度，並且限制了並行計算能力，但是因為把重新編程的時間從幾天減少到了幾個小時，所以性能上有些損失也是值得的。分析也顯示，因為電子計算速度和機電輸入/輸出速度的巨大差異，即使不利用原始機器的並行功能，幾乎所有現實世界的問題也完全是輸入/輸出綁定（I/O bound）的，即使因為上述修改，速度降低了之後仍然是這樣。1952年的早些時候，ENIAC上添加了一個高速移位器，在五個因素上提高了移位速度。1952年7月，添加了一個100字的核心存儲擴展，此存儲體採用BCD碼和Excess-3數字表示。為了支持這個擴展存儲器，ENIAC配備了一個新函數表選擇器、一個存儲器地址選擇器、脈衝整形電路，還給編程機制增加了三個新指令。

## 與其他早期電腦的比較

機械和電子計算機器從19世紀就開始出現了，但是20世紀30、40年代被看作是現代電腦時代的開端。

- 德國Z3電腦（1941年5月公布）是康拉德·楚澤設計的。這是第一台通用的數字電腦。但是它是機電電腦，而不是電子計算機，因為所有功能都使用繼電器。它使用二進位數學進行邏輯地計算。它可用打孔紙帶編程，但是沒有邏輯分支。儘管當初設計的不是圖靈完全的，但是在1998年人們發現它是圖靈完全的（但是如果要利用這種圖靈完全性質，需要複雜、聰明的破解）。1943年，這台電腦在柏林毀於轟炸襲擊。
- 美國阿塔納索夫-貝瑞電腦（ABC，1941年夏天公布）是第一台電子計算設備。它使用真空管實現了二進位計算，但是不是通用的，而是僅僅用於求解線性方程組。這台電腦也沒有利用電子計算的速度優勢。有兩方面限制了它的速度：一是旋轉電容鼓存儲器，另一個是它的輸入輸出系統要把中間結果寫出到紙片上。這台電腦是手動控制的，並且不可編程。
- 英國的巨人計算機（Colossus computer，1943年用於密碼分析）是湯米·弗勞爾設計的。這些電腦是數字的、電子的，可用插板和開關編程，但是僅用於密碼破譯，並不是通用的。
- 霍華德·艾肯在1944年設計的馬克一號電腦使用繼電器，可用打孔紙帶編程。可以計算一般的數學函數，但是沒有分支結構。
- 就像Z3和馬克一號一樣，ENIAC可以運行任意數學運算序列，但是並不是從紙帶上讀取數據。像Colossus一樣，它可以用插板和開關編程。ENIAC將全面、圖靈完全的可編程能力與電子計算的高速性結合在一起。

ABC、ENIAC和巨人計算機都使用真空管。ENIAC的寄存器採用十進位運算，而不是像Z3或ABC那樣的二進位運算。

1948年以前，ENIAC像巨人計算機一樣，重新編程的時候需要重新布線。存儲程序，以及存儲器既用於存儲程序，又用於存儲數據的思想在開發ENIAC的時候就構想出來了，不過在ENIAC沒有初步實現，因為二戰需要這台機器儘快完成投入使用，並且ENIAC的20個存儲位置也太小了，不足以同時存儲數據和程序。

### 公眾認知

Z3和巨人計算機都是獨立於彼此，並且獨立於ABC和ENIAC開發的。Z3電腦毀於1943年盟軍轟炸柏林。巨人計算機是英國戰爭成就的一部分。它們的存在直到1970年才為公眾所知，雖然它們的能力仍然只有開發它們的英國相關人員以及被邀請的美國人才知道。這些機器中，只有兩台一直在英國政府通信總部（GCHQ）使用到了1960年，其餘的都在1945年毀壞了。ABC電腦是在約翰·阿塔納索夫被徵召去華盛頓為美國海軍做物理研究後，被艾奧瓦州立大學拆掉了。相比之下，ENIAC在1946年大展它的能力，「吸引了全世界的想像力」。或許正因如此，更古老的電腦歷史與這個時期相比，在其覆蓋和分析上並不是很全面。

### 專利

莫齊利曾經擁有ENIAC的專利。1973年，經過法院宣判，因莫齊利對於ENIAC的設計思想部分來源於約翰·阿塔納索夫和克利福德·貝里設計的ABC電腦，所以專利被認定為無效，ENIAC的發明被放入公有領域。

然而，公眾領域內普遍將ENIAC認定為世界上第一台電子計算機，將莫齊利認定為電子計算機之父。為此，20世紀90年代初，時年87歲的ABC電腦發明者阿塔納索夫寫信給當時的美國總統老布希，希望公眾能承認他自己才是電子計算機之父。於是，老布希向他頒發了一個美國國家工藝技術金質獎章，以表彰他發明了世界上第一台電子數字電腦。

## 展覽的部件

<image>

賓夕法尼亞大學工程和應用科學學院擁有ENIAC原始的四十個面板中的四個，和三個函數表中的一個。史密森尼學會在美國國家歷史博物館擁有五個面板。倫敦科學博物館展覽著一個面板。密西根大學在Ann Arbor校園擁有阿瑟·伯克斯搶救的四個面板。位於美國馬里蘭州阿伯丁試驗場的美國陸軍軍械博物館，也就是ENIAC使用的地方，擁有一個函數表。另外還有一個面板在位於美國德克薩斯州普萊諾市的佩羅系統展覽。

1997年，賓夕法尼亞大學的團隊製作了一塊邊長8毫米（0.25英寸）的矽制方形晶片，其功能與占了一大間屋子的ENIAC相同。雖然這個20MHz的晶片比ENIAC快多了，但是仍然比20世紀90年代後期的現代微處理器慢很多。

## 外部連結

- ENIAC模擬
- 晶片上的ENIAC
- 電腦詞典中的ENIAC
- 問與答：對ENIAC合作發明者J.·Presper·埃克特遺失的採訪
- 對埃克特的採訪 1988年2月2日，史密森學會的大衛·艾利森對埃克特關於美國國家歷史博物館的採訪影片。對ENIAC深入、技術性的討論，包括設計背後的思考過程。
- 對J.·Presper·埃克特的口頭歷史訪談，美國明尼蘇達大學查爾斯·巴貝奇研究所。ENIAC的合作發明人埃克特談論他在賓夕法尼亞大學穆爾電子工程學院時對ENIAC的開發；描述了ENIAC安全專利權上的困難，以及約翰·馮·諾伊曼1945年的《關於EDVAC的報告初稿》造成的困難，因為這份稿件將ENIAC投入了公共領域。這次採訪是南希·斯特恩在1977年10月28日進行的。
- 對卡爾·錢伯斯的口頭歷史訪談，美國明尼蘇達大學查爾斯·巴貝奇研究所。錢伯斯談論了在賓夕法尼亞大學穆爾電子工程學院的時候，ENIAC項目的啟動的發展。這次採訪是南希·斯特恩在1977年11月30日進行的。
- 對Irven·A.·特拉維斯的口頭歷史訪談，美國明尼蘇達大學查爾斯·巴貝奇研究所。特拉維斯描述了在賓夕法尼亞大學的時候（1941-1946年）ENIAC項目的情況，總工程師埃克特的技術和領導能力，約翰·莫齊利和埃克特的工作關係，專利權糾紛，以及它們退出大學的事情。這次採訪是南希·斯特恩在1977年10月21日進行的。
- 對S.·里德·沃倫的口頭歷史訪談，美國明尼蘇達大學查爾斯·巴貝奇研究所。沃倫擔任EDVAC的項目總監；他談論了約翰·馮·諾伊曼和約翰·莫齊利，以及他們與管理員之間關於專利權的意見分歧；談論了約翰·馮·諾伊曼在1945年關於EDVAC的報告稿，以及缺乏對所有EDVAC貢獻者的了解。
- ENIAC編程項目
- ENIAC中的女士們
- ENIAC編程
- 模函數的編程示例
- ENIAC怎樣計算平方根
- 邁克·Muuss：ENIAC文檔集
- ENIAC 卡爾·肯普夫的章節，《軍械兵團中的電子計算機》，1961年11月。
- ENIAC的歷史，馬丁·H.·Weik，軍械彈道研究實驗室, 1961年。
- ENIAC博物館 位於賓夕法尼亞大學
- ENIAC的規格 來自彈道研究實驗室1955年第971號報告（國內電子數字計算系統的調查研究）。
- 關於ENIAC，在1964年發布（TIFF圖像），還有 PDF版本 (18,305kB, 207頁)
- 電腦誕生了，麥可·Kanellos，60周年新聞故事，《CNet》，2006年2月13日

39.9522 -75.1905