電子數值積分計數機

**電子數值積分計算機**（英語：Electronic Numerical Integrator And Computer），由其縮寫，簡稱為**伊尼亞克**（英語：ENIAC，發音： /ˈɛni.æk/，也可稱**埃尼阿克**）是世界上第一台通用計算機。它是圖靈完全的電子計算機，能夠重新編程，解決各種計算問題。

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 里程碑之一。

## 描述

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 打孔卡片的打孔）、「常數傳送器」，還有三個「函數表」。

羅哈斯和 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 用作線路驅動器，驅動著脈衝從機架組件間通過電纜傳遞。

當時，一些電子方面的專家預言管件會經常壞，導致機器根本沒法使用。這個預言後來被部分證實了：每天都有幾個管件燒壞，使 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 計算機發明者阿塔納索夫寫信給當時的美國總統老布希，希望公眾能承認他自己才是電子計算機之父。於是，老布希向他頒發了一個美國國家工藝技術金質獎章，以表彰他發明了世界上第一台電子數字計算機。

## 展覽的部件

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

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

## 參見

* 計算機硬體歷史
* 楚澤 Z3

## 腳註

## 參考文獻

## 延伸閱讀

## 外部連結

* 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 號報告（國內電子數字計算系統的調查研究）。
* 美國專利第 3,120,606 號 關於 ENIAC，在 1964 年發布（TIFF 圖像），還有 PDF 版本 （頁面存檔備份，存於網際網路檔案館） (18,305kB, 207 頁)
* 計算機誕生了 （頁面存檔備份，存於網際網路檔案館），麥可・Kanellos，60 周年新聞故事，《CNet》，2006 年 2 月 13 日
* Gumbrecht, 傑米。重新发现二战时期的 “计算机”. CNN.com. 2011 年 2 月 8 日 [2011 年 2 月 9 日]. （原始內容存檔於 2020 年 9 月 15 日）.