研制背景
計(jì)算奥溺,是現(xiàn)代化武器的靈魂硬耍。
一顆看似做著簡(jiǎn)單的自由落體運(yùn)動(dòng)的炮彈,其實(shí)在出發(fā)前就被設(shè)定好了精確的飛行軌道蹦肴。彈道的計(jì)算十分復(fù)雜,發(fā)射速度和角度的確定不僅要考慮炮彈本身的類型和炸藥特性猴娩,還要考慮風(fēng)向阴幌、風(fēng)速、氣壓卷中、氣溫裂七、濕度和當(dāng)?shù)刂亓铀俣鹊拳h(huán)境因素,作戰(zhàn)時(shí)在瞬間完成這些因子的綜合分析顯然不是人力所能及的仓坞。因此背零,科學(xué)家會(huì)在使用前為炮手準(zhǔn)備好一份彈道表,炮手對(duì)照表中參數(shù)操作火炮无埃,炮彈便基本能落到指定的目標(biāo)點(diǎn)徙瓶。
于是二戰(zhàn)期間,軍方遇到了和當(dāng)年人口調(diào)查一樣的難題嫉称,每種型號(hào)的炮彈都需要計(jì)算2000~4000條彈道侦镇,每條彈道都涉及復(fù)雜的微積分運(yùn)算,轉(zhuǎn)換成四則運(yùn)算平均涉及750次乘法和更多次加減织阅,普通計(jì)算員使用機(jī)械計(jì)算器平均需要20個(gè)小時(shí)才能算完壳繁。多型新型火炮的投入使用給美國(guó)陸軍的彈道研究實(shí)驗(yàn)室?guī)?lái)了很大的制表壓力,他們雇傭了100多名女計(jì)算員荔棉,以滿足阿伯丁試驗(yàn)場(chǎng)每天6張彈道表的需求闹炉。苦勞是做足了润樱,一旦出錯(cuò)卻沒了功勞渣触。實(shí)驗(yàn)室很快意識(shí)到,磨刀不誤砍柴工壹若,他們急需一臺(tái)強(qiáng)大的計(jì)算機(jī)器嗅钻。
這個(gè)創(chuàng)造歷史的項(xiàng)目皂冰,交給了與彈道研究實(shí)驗(yàn)室相距僅120公里的位于費(fèi)城的賓夕法尼亞大學(xué)莫爾電氣工程學(xué)院。其實(shí)論起資歷與聲望养篓,600公里開外的麻省理工學(xué)院會(huì)是更好的選擇秃流,但莫爾學(xué)院“近水樓臺(tái)先得月”,早與彈道研究實(shí)驗(yàn)室建立了友好的合作關(guān)系柳弄,那些計(jì)算彈道的計(jì)算員就是由莫爾學(xué)院負(fù)責(zé)培訓(xùn)的舶胀。
1937年,費(fèi)城一位名為普雷斯伯·坝镉克特(J. Presper Eckert)的天才少年收到了夢(mèng)寐以求的麻省理工學(xué)院錄取通知書,但他的母親不希望自己唯一的兒子離家太遠(yuǎn)席怪,他的父親則不希望他學(xué)理工应闯,還騙他說(shuō)麻省理工的學(xué)費(fèi)高昂,支付不起挂捻,百般無(wú)奈之下碉纺,埃克特只好“屈就”賓夕法尼亞大學(xué)的金融學(xué)院刻撒。不多久骨田,對(duì)金融實(shí)在提不起興趣的埃克特尋求轉(zhuǎn)專業(yè)的機(jī)會(huì)声怔,可是他最想去的物理系已經(jīng)招滿了态贤,再一次的無(wú)奈之下,他來(lái)到了莫爾學(xué)院醋火。那時(shí)的坝破克特并不會(huì)料到,正是這個(gè)他“屈就”了再“屈就”的地方芥驳,給了他名垂青史的機(jī)會(huì)柿冲。
1943年4月9日宿饱,恰好是埃克特24歲生日的這一天脚祟,莫爾學(xué)院和彈道研究實(shí)驗(yàn)室所屬的陸軍軍械部簽訂了6.17萬(wàn)美元的研制合同刑棵,年輕的埃克特雖然還是一名在讀研究生愚铡,但由于杰出的專業(yè)能力被任命為項(xiàng)目總工程師蛉签。
這臺(tái)計(jì)算機(jī)就是大名鼎鼎的電子數(shù)字積分器與計(jì)算機(jī)(Electronic Numerical Integrator and Computer)胡陪,簡(jiǎn)稱ENIAC。由于是為了處理彈道計(jì)算中的微積分而設(shè)計(jì)的碍舍,起初柠座,它的名字是電子數(shù)字積分器(Electronic Numerical Integrator),但由于它的通用性片橡,后來(lái)被用于各種其他計(jì)算妈经,才有了追加的“and Computer”。
和芭跏椋克特搭檔的吹泡,是年齡大他一輪的約翰·莫奇利(John Mauchly),時(shí)年36歲的莫奇利已是烏爾辛納斯學(xué)院(同在賓夕法尼亞州)的物理系主任经瓷,擁有約翰·霍普金斯大學(xué)物理學(xué)博士學(xué)位爆哑。他被委任為ENIAC項(xiàng)目顧問,由于教學(xué)工作不能投入全部精力舆吮,但只要一有時(shí)間就會(huì)鉆進(jìn)項(xiàng)目里揭朝,最終出色地完成了ENIAC的總體設(shè)計(jì),與主要負(fù)責(zé)工程實(shí)現(xiàn)的吧剑克特并稱“ENIAC之父”潭袱。他們共同領(lǐng)導(dǎo)莫爾學(xué)院50人的兼職團(tuán)隊(duì),一個(gè)主理論锋恬、一個(gè)主工程的黃金搭檔模式像極了實(shí)現(xiàn)ABC的阿塔納索夫和貝里屯换。
ENIAC于1945年底竣工,在1946年2月14日晚正式亮相癣防,并于日次交付蜗巧。它的最終造價(jià)是48.7萬(wàn)美元,相當(dāng)于今天的700多萬(wàn)美元蕾盯。
組成結(jié)構(gòu)與工作原理
ENIAC比巨人機(jī)更加龐大幕屹,總長(zhǎng)約30米,高約4米级遭,厚約0.9米望拖,占地約167平米,需要布置在一個(gè)很大的房間挫鸽。這臺(tái)重達(dá)27噸的電子巨獸體內(nèi)大約包含著18000個(gè)電子管说敏、70000個(gè)電阻、10000個(gè)電容和1500個(gè)繼電器丢郊,以及500萬(wàn)個(gè)焊接點(diǎn)盔沫,每小時(shí)吞掉150kW電量医咨。功耗之大,一度傳出夸張的謠言:ENIAC一啟動(dòng)架诞,整個(gè)費(fèi)城的燈光都要暗下一截拟淮。
ENIAC主要由40塊模塊化的功能面板組成,貼著機(jī)房的3面墻壁呈U型排布谴忧,面板之間通過(guò)下側(cè)的接插線板相連很泊。它們的相對(duì)位置不是固定的,可根據(jù)使用需要或習(xí)慣進(jìn)行調(diào)換沾谓。此外委造,有3臺(tái)可移動(dòng)函數(shù)表通過(guò)接插線板與這些面板相連,讀卡器和穿孔機(jī)直接連接至輸入和輸出模塊的面板均驶。
初始化模塊顧名思義昏兆,負(fù)責(zé)完成整臺(tái)機(jī)器在開始使用前的所有準(zhǔn)備工作,比如機(jī)器上下電和累加器清零辣恋,等等亮垫。
時(shí)鐘周期模塊是同步機(jī)器所有模塊的關(guān)鍵模软,以每10μs一個(gè)電脈沖的頻率指揮著各元器件的等周期工作伟骨,就像軍訓(xùn)時(shí)喊著“121”口令的教官,有了統(tǒng)一的節(jié)奏燃异,整個(gè)隊(duì)伍的步伐才不至于亂套携狭。
主編程模塊占據(jù)2塊面板,其上分布著密密麻麻的旋鈕回俐,使用者可以在此編程逛腿,設(shè)置各個(gè)電信號(hào)的走向和先后順序。如果把匆忙的電信號(hào)比作車輛仅颇,主編程模塊就好比十字路口的交警单默,引導(dǎo)著車流,車駛到不同模塊就完成不同的使命忘瓦。同時(shí)搁廓,將這些車流按段劃分,以車流段為單位指揮交通耕皮,安排它們的執(zhí)行次序境蜕,就實(shí)現(xiàn)了所謂的結(jié)構(gòu)化編程,即程序不再只能從頭到尾順序執(zhí)行凌停,它可以有條件分支和循環(huán)分支等復(fù)雜結(jié)構(gòu)粱年。
兩位程序員之間的4塊面板即初始化模塊台诗、時(shí)鐘周期模塊和主編程模塊完箩。
函數(shù)表有3個(gè),每個(gè)占據(jù)2塊面板拉庶,通過(guò)其上的旋鈕可以預(yù)置一些供其他模塊反復(fù)使用的常數(shù)嗜憔,這樣的常數(shù)可不少氏仗,因此又添置了3臺(tái)可移動(dòng)的函數(shù)表(上圖右側(cè)即一臺(tái)可移動(dòng)函數(shù)表),每臺(tái)有1456個(gè)旋鈕皆尔。可移動(dòng)函數(shù)表除了用于擴(kuò)充3個(gè)固定的函數(shù)表慷蠕,還可以直接與其他模塊相連珊拼,供其查表流炕。一次查表耗時(shí)5個(gè)加法時(shí)間。
累加器有20個(gè)每辟,每個(gè)累加器可存放1個(gè)10位長(zhǎng)度的十進(jìn)制數(shù)(包括負(fù)數(shù))剑辫,供其他模塊使用,兩個(gè)累加器連接可組成一個(gè)支持20位十進(jìn)制數(shù)的大累加器渠欺。累加器的線路設(shè)計(jì)為,每當(dāng)從其他模塊接收到數(shù)據(jù)胳岂,即將其累加到當(dāng)前的存儲(chǔ)值之上舔稀,故名累加器。累加器之間可互相傳遞自己的存儲(chǔ)值产园,以此實(shí)現(xiàn)加法,也可傳遞存儲(chǔ)值的補(bǔ)碼淆两,以此實(shí)現(xiàn)減法拂酣,因此ENIAC沒有加減法的功能面板婶熬。一次數(shù)據(jù)傳輸或加減運(yùn)算耗時(shí)200μs埃撵,這個(gè)時(shí)間被稱為“加法時(shí)間”虽另,是我們討論ENIAC運(yùn)算速度的基準(zhǔn)時(shí)間。
比起諸多早已使用二進(jìn)制或混合編碼的前輩谣拣,仍然使用十進(jìn)制的ENIAC就顯得有些原始了族展。埃克特和莫奇利從機(jī)械計(jì)算器中的十齒齒輪獲得靈感贵涵,用10個(gè)電子管電路存儲(chǔ)1個(gè)數(shù)位恰画,分別表示0~9拴还,同一時(shí)間只有1個(gè)電路導(dǎo)通,以表示該數(shù)位上的值坟奥。這意味著拇厢,每個(gè)累加器需要100個(gè)這樣的電路晒喷,并且,事實(shí)上每個(gè)電路平均要用到3.6個(gè)電子管衣盾。雖然比較浪費(fèi)爷抓,但至少降低了設(shè)計(jì)難度蓝撇。
高速乘法器占據(jù)3塊面板,一次n位數(shù)(n≤10)乘法的耗時(shí)是n+4個(gè)加法時(shí)間虽抄。之所以強(qiáng)調(diào)“高速”,是因?yàn)樗皇强恐貜?fù)加法實(shí)現(xiàn)乘法的迈窟,而是直接查找預(yù)置在函數(shù)表里的部分積车酣,然后將它們加起來(lái)。
除法和開平方運(yùn)算支持20位數(shù)躯肌,它們都是靠重復(fù)減法實(shí)現(xiàn)的破衔,因此它們共用一塊功能面板。一次除法或開平方運(yùn)算的耗時(shí)取決于計(jì)算結(jié)果嫡丙,結(jié)果為n位時(shí)读第,耗時(shí)平均為13n個(gè)加法時(shí)間怜瞒。
數(shù)據(jù)的輸入輸出設(shè)備是現(xiàn)成的IBM讀卡器和穿孔機(jī),分別受控于輸入模塊和輸出模塊吴汪。每張穿孔卡片可存8個(gè)10位十進(jìn)制數(shù)漾橙,讀取一張卡片需要0.48秒,穿孔一張卡片需要0.6秒脾歇。輸入淘捡、輸出模塊分別占據(jù)3塊面板,均使用繼電器臨時(shí)存儲(chǔ)數(shù)據(jù)激况,它們是連接機(jī)器外部和內(nèi)部的數(shù)據(jù)緩存池,比起內(nèi)部的運(yùn)算速度宦棺,讀卡和制卡動(dòng)作是如此之慢黔帕,所以沒有必要使用電子管成黄,畢竟繼電器要便宜得多。
后話
就這樣思瘟,ENIAC帶著空前的計(jì)算能力來(lái)到了世上闻伶,拿下一條彈道僅需30秒,速度是人的2400倍光绕。ENIAC團(tuán)隊(duì)毫不夸張地類比道:我們得出彈道所需的時(shí)間畜份,比導(dǎo)彈實(shí)際飛行的時(shí)間還要短爆雹。不過(guò)此時(shí),二戰(zhàn)已經(jīng)結(jié)束慧起,ENIAC并沒有達(dá)成最初被寄予的厚望完慧。好在莫奇利的設(shè)計(jì)是圖靈完備的剩失,人們很快為ENIAC找到了其他用武之地拴孤,比如氣流分析和天氣預(yù)測(cè)等甲捏,最重要的還是在氫彈研制中的應(yīng)用。研制出廣島和長(zhǎng)崎原子彈的洛斯·阿拉莫斯國(guó)家實(shí)驗(yàn)室將ENIAC用于氫彈相關(guān)的計(jì)算芒粹,消耗了100萬(wàn)張穿孔卡片化漆。
起初,ENIAC的可靠性非常糟糕疙赠,每天都會(huì)燒壞幾個(gè)電子管朦拖,機(jī)器幾乎只有一半時(shí)間能正常工作,剩下的一半時(shí)間都在尋找和替換這些罷工的電子管捍岳。不多久睬隶,工程師們發(fā)現(xiàn)電子管子在工作期間的可靠性其實(shí)很高理疙,只是在加熱和冷卻階段容易失效,而彈道研究實(shí)驗(yàn)室為了節(jié)省能源和值班人力砖顷,每天夜里都會(huì)關(guān)機(jī)赃梧,卻不料揀了芝麻丟了西瓜。保持常開后物咳,ENIAC的可靠性大幅提升览闰,平均每?jī)商觳庞?個(gè)電子管失效巷折,并且只要15分鐘就能找到它。ENIAC持續(xù)運(yùn)行時(shí)間最長(zhǎng)的一次是在1954年油吭,它一口氣跑了116個(gè)小時(shí),接近5天歌豺。
ENIAC使用了大量電纜心包,為了防止老鼠啃咬上面的絕緣層谴咸,工程師們想到了一個(gè)很有意思的辦法:將裹著各種絕緣材料的電纜一起扔到老鼠面前,觀察哪種材料是老鼠不愛吃的血巍,就選用這種材料的電纜珊随。
ENIAC的存儲(chǔ)能力近乎為零叶洞,20個(gè)累加器只夠存放幾類基礎(chǔ)運(yùn)算所需的參數(shù)和結(jié)果,對(duì)于復(fù)雜問題螟炫,使用者還往往不得不將中間結(jié)果輸出到穿孔卡片艺晴,回頭再讀進(jìn)來(lái)封寞。因此,ENIAC的程序和巨人機(jī)一樣是存在于旋鈕和接插線板上的碗淌,盡管在研制過(guò)程中抖锥,存儲(chǔ)程序的概念已經(jīng)萌生,但機(jī)器的存儲(chǔ)容量并不允許他們將程序塞進(jìn)累加器里宁改,而進(jìn)度上的壓力又允許為此再做改動(dòng)还蹲。結(jié)果是,ENIAC團(tuán)隊(duì)在兼具技術(shù)和想法的情況下潭兽,不得已把“第一臺(tái)存儲(chǔ)程序計(jì)算機(jī)”的名頭乃至存儲(chǔ)程序思想提出者的身份拱手讓人斗遏。
ENIAC有著比巨人機(jī)更多的旋鈕和接插線孔位诵次,在它上面編程十分復(fù)雜。ENAIC最早的6位程序員是從莫爾學(xué)院培養(yǎng)的女計(jì)算員中選拔出來(lái)的,她們不僅聰慧過(guò)人遵堵,而且細(xì)致耐心陌宿。經(jīng)過(guò)一段時(shí)間的學(xué)習(xí),她們對(duì)ENIAC的工作機(jī)制了如指掌舶得,將數(shù)學(xué)家們的想法精準(zhǔn)地轉(zhuǎn)換為旋鈕和接插線的位置組合扩灯。她們的認(rèn)真與細(xì)致最大程度上減少了BUG的出現(xiàn)霜瘪,是ENIAC正常運(yùn)行的重要保障。1946年2月14日捻撑,ENIAC第一次公開演示的程序就出自她們之手缤底。ENIAC之后个唧,她們還參與到其他具有歷史意義的計(jì)算機(jī)項(xiàng)目中(比如最早的商業(yè)電子計(jì)算機(jī)UNIVAC和BINAC),繼續(xù)發(fā)揮不可替代的作用犁河。
然而桨螺,可怕的偏見剝奪了她們應(yīng)得的認(rèn)可和尊重,ENIAC的交付儀式和慶功宴甚至沒有邀請(qǐng)她們中的任何一位魏烫。在當(dāng)時(shí)的人們眼中肝箱,她們和使用機(jī)械計(jì)算器的計(jì)算員并沒有什么不同煌张,甚至曾被認(rèn)為是站在ENIAC旁邊的模特,如果要說(shuō)貢獻(xiàn)罚舱,那就是為男性省下了更多時(shí)間和經(jīng)歷绎谦,以從事更有技術(shù)含量的工作罷了窃肠。(在那個(gè)年代,包括計(jì)算機(jī)研制在內(nèi)的高科技工作都是由男性承擔(dān)的碧囊,如果不是戰(zhàn)爭(zhēng)造成的勞動(dòng)力短缺纤怒,女性其實(shí)根本沒有參與的機(jī)會(huì)泊窘。)
1997年,6位程序員入選國(guó)際科技女性名人堂瓜贾,歷史最終為她們正名祭芦,可惜的是其中有1位沒能在有生之年等到這一天憔鬼。讓我們記住她們的名字:凱瑟琳·安東內(nèi)利(Kathleen Antonelli)胃夏、貝蒂·吉恩·詹寧斯(Betty Jean Jennings)构订、弗朗西斯·伊麗莎白·霍爾伯頓(Frances Elizabeth Holberton)、馬琳·梅爾澤(Marlyn Meltzer)囊榜、弗朗西絲·比拉斯(Frances V. Bilas)卸勺、露絲·泰特爾鮑姆(Ruth Teitelbaum)。
1947年6月27日碍庵,熬苍。克特取得了ENIAC的專利挤渐。阿塔納索夫?qū)Υ舜鬄檎痼@浴麻,他與莫奇利在美國(guó)科學(xué)促進(jìn)協(xié)會(huì)(AAAS)1940年的冬季會(huì)議上認(rèn)識(shí),并在第二年邀請(qǐng)過(guò)莫奇利前去參觀他們正在研制的ABC宫纬,兩人就計(jì)算機(jī)的設(shè)計(jì)做了一星期的深入交流漓骚,這意味著向抢,莫奇利很可能從ABC中得到許多啟示挟鸠。而長(zhǎng)久以來(lái),人們都誤認(rèn)為第一臺(tái)電子計(jì)算機(jī)是ENIAC硼身,而對(duì)ABC一無(wú)所知。1967年营袜,美國(guó)兩家公司為此打了一場(chǎng)官司荚板,經(jīng)過(guò)長(zhǎng)時(shí)間的取證和前后135天的聽證會(huì)吩屹,法院最終在1973年10月19日宣布ENIAC的專利——這份長(zhǎng)達(dá)207頁(yè)煤搜、凝聚了無(wú)數(shù)智慧和心血的專利——無(wú)效。這稱得上是一次著名的“冤假錯(cuò)案”了嘲驾,畢竟此前阿塔納索夫并沒有為ABC申請(qǐng)專利辽故,而打官司的也不是ABC和ENIAC的設(shè)計(jì)者本人婶希,最重要的是喻杈,ENIAC實(shí)現(xiàn)了許多ABC所沒有的功能,并且切實(shí)地投入了實(shí)際應(yīng)用(而ABC更接近于一臺(tái)未能完整實(shí)現(xiàn)的原型機(jī))缴啡。時(shí)過(guò)境遷业栅,歷史終會(huì)給出更公正的判決:ABC名至實(shí)歸是第一臺(tái)電子計(jì)算機(jī)谬晕,而ENIAC是第一臺(tái)通用電子計(jì)算機(jī)攒钳,兩者并無(wú)沖突。
1955年10月2日23:55分文兢,運(yùn)行了近10年的ENIAC正式退役姆坚,如今,其部件散藏于賓夕法尼亞大學(xué)兔辅、美國(guó)陸軍軍械博物館幢妄、美國(guó)計(jì)算機(jī)歷史博物館茫负、史密森學(xué)會(huì)等多家機(jī)構(gòu)忍法。1996年榕吼,ENIAC誕辰50周年之際羹蚣,賓夕法尼亞大學(xué)出資在一塊長(zhǎng)7.44毫米顽素、寬5.29毫米的芯片上實(shí)現(xiàn)了ENIAC的全部功能,完成一次寓意深長(zhǎng)的隔空致敬型型。
參考文獻(xiàn)
- Wikipedia. ENIAC[EB/OL].
- IDG. Q&A: A lost interview with ENIAC co-inventor J. Presper Eckert[EB/OL].
- 胡守仁. 計(jì)算機(jī)技術(shù)發(fā)展史(一)[M]. 長(zhǎng)沙: 國(guó)防科技大學(xué)出版社, 2004.
- 崔林, 吳鶴齡. IEEE計(jì)算機(jī)先驅(qū)獎(jiǎng)(1980-2014)(第三版):計(jì)算機(jī)科學(xué)與技術(shù)中的發(fā)明史[M]. 北京: 高等教育出版社, 2014.
- Eckert J P. Electronic Numerical Integrator and Computer: US3120606[P]. 1947-06-26.