ENIAC:第一臺通用電子計算機

研制背景

計算,是現(xiàn)代化武器的靈魂。

一顆看似做著簡單的自由落體運動的炮彈,其實在出發(fā)前就被設(shè)定好了精確的飛行軌道。彈道的計算十分復(fù)雜,發(fā)射速度和角度的確定不僅要考慮炮彈本身的類型和炸藥特性,還要考慮風(fēng)向、風(fēng)速、氣壓、氣溫、濕度和當(dāng)?shù)刂亓铀俣鹊拳h(huán)境因素,作戰(zhàn)時在瞬間完成這些因子的綜合分析顯然不是人力所能及的。因此,科學(xué)家會在使用前為炮手準備好一份彈道表,炮手對照表中參數(shù)操作火炮,炮彈便基本能落到指定的目標(biāo)點。

于是二戰(zhàn)期間,軍方遇到了和當(dāng)年人口調(diào)查一樣的難題,每種型號的炮彈都需要計算2000~4000條彈道,每條彈道都涉及復(fù)雜的微積分運算,轉(zhuǎn)換成四則運算平均涉及750次乘法和更多次加減,普通計算員使用機械計算器平均需要20個小時才能算完。多型新型火炮的投入使用給美國陸軍的彈道研究實驗室?guī)砹撕艽蟮闹票韷毫?,他們雇傭?00多名女計算員,以滿足阿伯丁試驗場每天6張彈道表的需求??鄤谑亲鲎懔?,一旦出錯卻沒了功勞。實驗室很快意識到,磨刀不誤砍柴工,他們急需一臺強大的計算機器。

這個創(chuàng)造歷史的項目,交給了與彈道研究實驗室相距僅120公里的位于費城的賓夕法尼亞大學(xué)莫爾電氣工程學(xué)院。其實論起資歷與聲望,600公里開外的麻省理工學(xué)院會是更好的選擇,但莫爾學(xué)院“近水樓臺先得月”,早與彈道研究實驗室建立了友好的合作關(guān)系,那些計算彈道的計算員就是由莫爾學(xué)院負責(zé)培訓(xùn)的。

1937年,費城一位名為普雷斯伯·??颂兀↗. Presper Eckert)的天才少年收到了夢寐以求的麻省理工學(xué)院錄取通知書,但他的母親不希望自己唯一的兒子離家太遠,他的父親則不希望他學(xué)理工,還騙他說麻省理工的學(xué)費高昂,支付不起,百般無奈之下,埃克特只好“屈就”賓夕法尼亞大學(xué)的金融學(xué)院。不多久,對金融實在提不起興趣的??颂貙で筠D(zhuǎn)專業(yè)的機會,可是他最想去的物理系已經(jīng)招滿了,再一次的無奈之下,他來到了莫爾學(xué)院。那時的埃克特并不會料到,正是這個他“屈就”了再“屈就”的地方,給了他名垂青史的機會。

普雷斯伯·埃克特(J. Presper Eckert),1919-1995,美國電氣工程師、計算機先驅(qū)。(圖片來自網(wǎng)絡(luò))

1943年4月9日,恰好是??颂?4歲生日的這一天,莫爾學(xué)院和彈道研究實驗室所屬的陸軍軍械部簽訂了6.17萬美元的研制合同,年輕的??颂仉m然還是一名在讀研究生,但由于杰出的專業(yè)能力被任命為項目總工程師。

這臺計算機就是大名鼎鼎的電子數(shù)字積分器與計算機(Electronic Numerical Integrator and Computer),簡稱ENIAC。由于是為了處理彈道計算中的微積分而設(shè)計的,起初,它的名字是電子數(shù)字積分器(Electronic Numerical Integrator),但由于它的通用性,后來被用于各種其他計算,才有了追加的“and Computer”。

和??颂卮顧n的,是年齡大他一輪的約翰·莫奇利(John Mauchly),時年36歲的莫奇利已是烏爾辛納斯學(xué)院(同在賓夕法尼亞州)的物理系主任,擁有約翰·霍普金斯大學(xué)物理學(xué)博士學(xué)位。他被委任為ENIAC項目顧問,由于教學(xué)工作不能投入全部精力,但只要一有時間就會鉆進項目里,最終出色地完成了ENIAC的總體設(shè)計,與主要負責(zé)工程實現(xiàn)的??颂夭⒎Q“ENIAC之父”。他們共同領(lǐng)導(dǎo)莫爾學(xué)院50人的兼職團隊,一個主理論、一個主工程的黃金搭檔模式像極了實現(xiàn)ABC的阿塔納索夫和貝里。

約翰·莫奇利(John Mauchly),1907-1980,美國物理學(xué)家。(圖片來自網(wǎng)絡(luò))

ENIAC于1945年底竣工,在1946年2月14日晚正式亮相,并于日次交付。它的最終造價是48.7萬美元,相當(dāng)于今天的700多萬美元。

組成結(jié)構(gòu)與工作原理

ENIAC比巨人機更加龐大,總長約30米,高約4米,厚約0.9米,占地約167平米,需要布置在一個很大的房間。這臺重達27噸的電子巨獸體內(nèi)大約包含著18000個電子管、70000個電阻、10000個電容和1500個繼電器,以及500萬個焊接點,每小時吞掉150kW電量。功耗之大,一度傳出夸張的謠言:ENIAC一啟動,整個費城的燈光都要暗下一截。

ENIAC在莫爾學(xué)院(圖片來自維基百科)

ENIAC主要由40塊模塊化的功能面板組成,貼著機房的3面墻壁呈U型排布,面板之間通過下側(cè)的接插線板相連。它們的相對位置不是固定的,可根據(jù)使用需要或習(xí)慣進行調(diào)換。此外,有3臺可移動函數(shù)表通過接插線板與這些面板相連,讀卡器和穿孔機直接連接至輸入和輸出模塊的面板。

ENIAC在莫爾學(xué)院的模塊分布示意圖(俯視)

初始化模塊顧名思義,負責(zé)完成整臺機器在開始使用前的所有準備工作,比如機器上下電和累加器清零,等等。

時鐘周期模塊是同步機器所有模塊的關(guān)鍵,以每10μs一個電脈沖的頻率指揮著各元器件的等周期工作,就像軍訓(xùn)時喊著“121”口令的教官,有了統(tǒng)一的節(jié)奏,整個隊伍的步伐才不至于亂套。

主編程模塊占據(jù)2塊面板,其上分布著密密麻麻的旋鈕,使用者可以在此編程,設(shè)置各個電信號的走向和先后順序。如果把匆忙的電信號比作車輛,主編程模塊就好比十字路口的交警,引導(dǎo)著車流,車駛到不同模塊就完成不同的使命。同時,將這些車流按段劃分,以車流段為單位指揮交通,安排它們的執(zhí)行次序,就實現(xiàn)了所謂的結(jié)構(gòu)化編程,即程序不再只能從頭到尾順序執(zhí)行,它可以有條件分支和循環(huán)分支等復(fù)雜結(jié)構(gòu)。

程序員與前4塊功能面板(圖片來自維基百科,圖中兩位女程序員分別是貝蒂·吉恩·詹寧斯(左)和弗朗西絲·比拉斯(右)。)

兩位程序員之間的4塊面板即初始化模塊、時鐘周期模塊和主編程模塊。

函數(shù)表有3個,每個占據(jù)2塊面板,通過其上的旋鈕可以預(yù)置一些供其他模塊反復(fù)使用的常數(shù),這樣的常數(shù)可不少,因此又添置了3臺可移動的函數(shù)表(上圖右側(cè)即一臺可移動函數(shù)表),每臺有1456個旋鈕??梢苿雍瘮?shù)表除了用于擴充3個固定的函數(shù)表,還可以直接與其他模塊相連,供其查表。一次查表耗時5個加法時間。

累加器有20個,每個累加器可存放1個10位長度的十進制數(shù)(包括負數(shù)),供其他模塊使用,兩個累加器連接可組成一個支持20位十進制數(shù)的大累加器。累加器的線路設(shè)計為,每當(dāng)從其他模塊接收到數(shù)據(jù),即將其累加到當(dāng)前的存儲值之上,故名累加器。累加器之間可互相傳遞自己的存儲值,以此實現(xiàn)加法,也可傳遞存儲值的補碼,以此實現(xiàn)減法,因此ENIAC沒有加減法的功能面板。一次數(shù)據(jù)傳輸或加減運算耗時200μs,這個時間被稱為“加法時間”,是我們討論ENIAC運算速度的基準時間。

比起諸多早已使用二進制或混合編碼的前輩,仍然使用十進制的ENIAC就顯得有些原始了。埃克特和莫奇利從機械計算器中的十齒齒輪獲得靈感,用10個電子管電路存儲1個數(shù)位,分別表示0~9,同一時間只有1個電路導(dǎo)通,以表示該數(shù)位上的值。這意味著,每個累加器需要100個這樣的電路,并且,事實上每個電路平均要用到3.6個電子管。雖然比較浪費,但至少降低了設(shè)計難度。

高速乘法器占據(jù)3塊面板,一次n位數(shù)(n≤10)乘法的耗時是n+4個加法時間。之所以強調(diào)“高速”,是因為它不是靠重復(fù)加法實現(xiàn)乘法的,而是直接查找預(yù)置在函數(shù)表里的部分積,然后將它們加起來。

除法和開平方運算支持20位數(shù),它們都是靠重復(fù)減法實現(xiàn)的,因此它們共用一塊功能面板。一次除法或開平方運算的耗時取決于計算結(jié)果,結(jié)果為n位時,耗時平均為13n個加法時間。

數(shù)據(jù)的輸入輸出設(shè)備是現(xiàn)成的IBM讀卡器和穿孔機,分別受控于輸入模塊和輸出模塊。每張穿孔卡片可存8個10位十進制數(shù),讀取一張卡片需要0.48秒,穿孔一張卡片需要0.6秒。輸入、輸出模塊分別占據(jù)3塊面板,均使用繼電器臨時存儲數(shù)據(jù),它們是連接機器外部和內(nèi)部的數(shù)據(jù)緩存池,比起內(nèi)部的運算速度,讀卡和制卡動作是如此之慢,所以沒有必要使用電子管,畢竟繼電器要便宜得多。

后話

就這樣,ENIAC帶著空前的計算能力來到了世上,拿下一條彈道僅需30秒,速度是人的2400倍。ENIAC團隊毫不夸張地類比道:我們得出彈道所需的時間,比導(dǎo)彈實際飛行的時間還要短。不過此時,二戰(zhàn)已經(jīng)結(jié)束,ENIAC并沒有達成最初被寄予的厚望。好在莫奇利的設(shè)計是圖靈完備的,人們很快為ENIAC找到了其他用武之地,比如氣流分析和天氣預(yù)測等,最重要的還是在氫彈研制中的應(yīng)用。研制出廣島和長崎原子彈的洛斯·阿拉莫斯國家實驗室將ENIAC用于氫彈相關(guān)的計算,消耗了100萬張穿孔卡片。
起初,ENIAC的可靠性非常糟糕,每天都會燒壞幾個電子管,機器幾乎只有一半時間能正常工作,剩下的一半時間都在尋找和替換這些罷工的電子管。不多久,工程師們發(fā)現(xiàn)電子管子在工作期間的可靠性其實很高,只是在加熱和冷卻階段容易失效,而彈道研究實驗室為了節(jié)省能源和值班人力,每天夜里都會關(guān)機,卻不料揀了芝麻丟了西瓜。保持常開后,ENIAC的可靠性大幅提升,平均每兩天才有1個電子管失效,并且只要15分鐘就能找到它。ENIAC持續(xù)運行時間最長的一次是在1954年,它一口氣跑了116個小時,接近5天。

ENIAC使用了大量電纜,為了防止老鼠啃咬上面的絕緣層,工程師們想到了一個很有意思的辦法:將裹著各種絕緣材料的電纜一起扔到老鼠面前,觀察哪種材料是老鼠不愛吃的,就選用這種材料的電纜。

ENIAC的存儲能力近乎為零,20個累加器只夠存放幾類基礎(chǔ)運算所需的參數(shù)和結(jié)果,對于復(fù)雜問題,使用者還往往不得不將中間結(jié)果輸出到穿孔卡片,回頭再讀進來。因此,ENIAC的程序和巨人機一樣是存在于旋鈕和接插線板上的,盡管在研制過程中,存儲程序的概念已經(jīng)萌生,但機器的存儲容量并不允許他們將程序塞進累加器里,而進度上的壓力又允許為此再做改動。結(jié)果是,ENIAC團隊在兼具技術(shù)和想法的情況下,不得已把“第一臺存儲程序計算機”的名頭乃至存儲程序思想提出者的身份拱手讓人。

ENIAC有著比巨人機更多的旋鈕和接插線孔位,在它上面編程十分復(fù)雜。ENAIC最早的6位程序員是從莫爾學(xué)院培養(yǎng)的女計算員中選拔出來的,她們不僅聰慧過人,而且細致耐心。經(jīng)過一段時間的學(xué)習(xí),她們對ENIAC的工作機制了如指掌,將數(shù)學(xué)家們的想法精準地轉(zhuǎn)換為旋鈕和接插線的位置組合。她們的認真與細致最大程度上減少了BUG的出現(xiàn),是ENIAC正常運行的重要保障。1946年2月14日,ENIAC第一次公開演示的程序就出自她們之手。ENIAC之后,她們還參與到其他具有歷史意義的計算機項目中(比如最早的商業(yè)電子計算機UNIVAC和BINAC),繼續(xù)發(fā)揮不可替代的作用。

然而,可怕的偏見剝奪了她們應(yīng)得的認可和尊重,ENIAC的交付儀式和慶功宴甚至沒有邀請她們中的任何一位。在當(dāng)時的人們眼中,她們和使用機械計算器的計算員并沒有什么不同,甚至曾被認為是站在ENIAC旁邊的模特,如果要說貢獻,那就是為男性省下了更多時間和經(jīng)歷,以從事更有技術(shù)含量的工作罷了。(在那個年代,包括計算機研制在內(nèi)的高科技工作都是由男性承擔(dān)的,如果不是戰(zhàn)爭造成的勞動力短缺,女性其實根本沒有參與的機會。)

1997年,6位程序員入選國際科技女性名人堂,歷史最終為她們正名,可惜的是其中有1位沒能在有生之年等到這一天。讓我們記住她們的名字:凱瑟琳·安東內(nèi)利(Kathleen Antonelli)、貝蒂·吉恩·詹寧斯(Betty Jean Jennings)、弗朗西斯·伊麗莎白·霍爾伯頓(Frances Elizabeth Holberton)、馬琳·梅爾澤(Marlyn Meltzer)、弗朗西絲·比拉斯(Frances V. Bilas)、露絲·泰特爾鮑姆(Ruth Teitelbaum)。

最早操作ENIAC的6位女程序員(圖片來自維基百科)

1947年6月27日,??颂厝〉昧薊NIAC的專利。阿塔納索夫?qū)Υ舜鬄檎痼@,他與莫奇利在美國科學(xué)促進協(xié)會(AAAS)1940年的冬季會議上認識,并在第二年邀請過莫奇利前去參觀他們正在研制的ABC,兩人就計算機的設(shè)計做了一星期的深入交流,這意味著,莫奇利很可能從ABC中得到許多啟示。而長久以來,人們都誤認為第一臺電子計算機是ENIAC,而對ABC一無所知。1967年,美國兩家公司為此打了一場官司,經(jīng)過長時間的取證和前后135天的聽證會,法院最終在1973年10月19日宣布ENIAC的專利——這份長達207頁、凝聚了無數(shù)智慧和心血的專利——無效。這稱得上是一次著名的“冤假錯案”了,畢竟此前阿塔納索夫并沒有為ABC申請專利,而打官司的也不是ABC和ENIAC的設(shè)計者本人,最重要的是,ENIAC實現(xiàn)了許多ABC所沒有的功能,并且切實地投入了實際應(yīng)用(而ABC更接近于一臺未能完整實現(xiàn)的原型機)。時過境遷,歷史終會給出更公正的判決:ABC名至實歸是第一臺電子計算機,而ENIAC是第一臺通用電子計算機,兩者并無沖突。

1955年10月2日23:55分,運行了近10年的ENIAC正式退役,如今,其部件散藏于賓夕法尼亞大學(xué)、美國陸軍軍械博物館、美國計算機歷史博物館、史密森學(xué)會等多家機構(gòu)。1996年,ENIAC誕辰50周年之際,賓夕法尼亞大學(xué)出資在一塊長7.44毫米、寬5.29毫米的芯片上實現(xiàn)了ENIAC的全部功能,完成一次寓意深長的隔空致敬。

芯片上的ENIAC(圖片來自維基百科)

參考文獻

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 2、放下是結(jié)局嗎? 佛曰:放下,即可得到你心中所想。 我們都過于執(zhí)著,所以我們都茫然過活。我一直在想是什么讓我們?nèi)?..
    Ty小希閱讀 372評論 0 1
  • 去了上海一周,主要目的是去跟開發(fā)的同事對齊一些事情,心態(tài)還是發(fā)生了不少的變化的。 1、人物篇 1.1 岳闖 前XX...
    張_凱閱讀 1,189評論 5 7
  • 昨天我們到學(xué)校去義務(wù)勞動。 雖然是學(xué)校安排的,但是有的班級還是沒有按時到校。雖然這也是一種義務(wù)勞動。去與不去完...
    寂寞撕扯閱讀 678評論 7 3

友情鏈接更多精彩內(nèi)容