亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現(xiàn)在的位置是:首頁 > 技術(shù)閱讀 >  一臺4分鐘死機5次的電腦,讓人類第一次登上月球

一臺4分鐘死機5次的電腦,讓人類第一次登上月球

時間:2024-01-09
圖片:TOM HAUGOMAT | Wired

1969年7月20日,人類第一次登上了月球。這當然不是個能輕松拿下的任務,但是當兩位宇航員離開阿波羅 11 的指揮艙、進入月球著陸器時,恐怕誰都沒想到,他們會在一個4分鐘內(nèi)連續(xù)死機5次的制導電腦的幫助下,成為踏上月面的第一批人類。

看不懂的警報

1969年7月20日,尼爾·阿姆斯特朗(Neil Armstrong)和巴茲·奧爾德林(Buzz Aldrin)正在距離月球地面上方 110 千米的空間軌道上工作:他們需要將自己乘坐的著陸器從阿波羅 11 號指揮艙中分離出來,向那個地球唯一的衛(wèi)星下降,邁克爾·柯林斯(Michael Collins)則從指揮艙的窗口中目送他們離開。在狹窄的月球著陸器艙內(nèi),他們可以通過小小的三角形窗戶看到月球的地表,手邊則是設(shè)備控制臺,安放在其中的是接下來那個讓他們名垂青史的行動的控制中樞——阿波羅制導計算機
大部分太空航行中,宇航員都是乘客。航天器能自動導航,將其位置轉(zhuǎn)接到任務控制中心的 IBM 大型機——這種精密的裝置和小型冷庫差不多大,1969 年人們普遍認知里的“計算機”就是這個模樣。當時,航天領(lǐng)域剛剛引入了“微型計算機”,和冰箱差不多大。阿波羅的制導計算機大概就這么大,在指揮艙和著陸器上各有一個。它大約 30 公斤,是人類當時所能設(shè)計出來的最復雜的設(shè)備。
阿波羅計算機使用的不是笨重的真空管,而是被稱為芯片的硅薄片。每個芯片包含一對邏輯門,每個門是一個簡單的電子開關(guān),對三個輸入進行監(jiān)測,如果其中有輸入為“開”,輸出便為“關(guān)”。約 5600 個這樣的原始集成電路按順序排列,組成了計算機“大腦”中的數(shù)字級聯(lián)。它安裝在宇航員身后艙壁上一個硬化金屬容器中,用導線和他們面前的控制臺相連。
這些芯片是由加利福尼亞帕洛阿爾托的一個科技初創(chuàng)公司——仙童半導體(Fairchild Semiconductor)設(shè)計的。20 世紀 60 年代初,計算機行業(yè)相對分散,貝爾實驗室、麻省理工學院等研究集團是東海岸的主要力量;仙童半導體則在西海岸異軍突起。在小型化的需求下,仙童的研發(fā)主管戈登·摩爾(Gordon Moore)提出了一個著名的假說,預測集成電路上的元件數(shù)量每年都會增加一倍。NASA率先使用了硅,宇航員身后艙壁上的計算機就是對摩爾定律(Moore's law)的概念性證明。
計算機的控制臺連帶著數(shù)字鍵盤,看上去和微波爐很相似,小小的顯示屏從后部投射出詭異的綠光。奧爾德林輸入背下來的兩位數(shù)命令管理這臺設(shè)備,三個小面板會返回五位數(shù)代碼——他接受過解讀這些數(shù)字的訓練。
當宇航員開始下降的第一階段時,發(fā)動機點火,計算機將著陸器送入距月面 15.24 千米的橢圓軌道。而后,奧爾德林會輸入一個新程序,將著陸器從當前軌道送入與之相交的月球軌道。
接下來的三分鐘,著陸器離月面隕石坑越來越近,到還有 14 千米的時候,阿姆斯特朗旋轉(zhuǎn)飛行器,將著陸雷達對準月球表面,宇航員則面對地球。月球引力是不均勻的,為應對這一情況,宇航員必須再次進行測量:奧爾德林向控制臺輸入了一個命令,想要比較著陸器的計算位置和雷達上的讀數(shù)。
得到的反饋是一聲刺耳的警報。奧爾德林匆忙輸入“5-9-enter”的兩位數(shù)代碼,大致可以翻譯成“顯示警報”。控制臺返回了錯誤代碼“1202”。盡管已經(jīng)接受了好幾個月的模擬訓練,奧爾德林還是不知道這個代碼是什么意思。同樣一頭霧水的阿姆斯特朗隨即用無線電聯(lián)系任務控制中心請求解釋。他的聲音中充滿壓力,但是直到后來兩個人才意識到情況到底有多糟糕。在那個關(guān)鍵時刻,在這個像被扔到月球表面的飛鏢一樣的著陸器里,阿波羅制導計算機崩潰了。

帶重啟保護的系統(tǒng)

時間退回幾年前,麻省理工學院儀器實驗室的計算機科學家哈爾·蘭寧(Hal Laning)被邀請設(shè)計登月操作系統(tǒng)他遇到了從未有過的限制:為節(jié)省時間,阿波羅的操作系統(tǒng)在處理輸入、提供輸出之間不能有明顯的延遲。為完成著陸,系統(tǒng)必須有足夠的彈性,無論發(fā)生人為失誤還是其他錯誤,都要能恢復過來。
蘭寧的同事因為這項任務對他肅然起敬。他辦公室在一間放著兩臺大型計算機、占據(jù)了樓層一大半的空調(diào)房隔壁。程序員通過桌面大小的控制面板與計算機進行交互,遇到困難了他們就得穿過大廳和蘭寧討論。計算機代碼不在顯示器上顯示——沒有任何顯示器——而是印在一摞成為“列表”的特大號紙上,程序員用記號筆在上面手寫修改。蘭寧的辦公室被這些列表塞得滿滿的,來討論問題的人連把能坐的椅子都找不到。
蘭寧曾為計算設(shè)定過一次范式。20 世紀 50 年代,他開始為麻省理工第一臺數(shù)字計算機編程,當時這項任務剛剛完工。編程需要用到復雜的數(shù)學符號,為減小自己的工作量,蘭寧設(shè)計出一個助手“喬治”(George),它能將高階代數(shù)方程轉(zhuǎn)換為計算機可以理解的語言。這個早期的編譯器演化出了 Fortran 語言,而后者又衍生出了當今使用的大多數(shù)主要計算機編程語言。
做阿波羅的項目時,蘭寧又這么做了一次。沒有歷史實例可參考的情況下,他根據(jù)直覺決定給阿波羅操作系統(tǒng)中的每個程序分配一個優(yōu)先級編號。像指導和控制這樣的工作分配的數(shù)字較低,會在后臺持續(xù)運行。它們可以被更高級別的工作打斷,比如來自宇航員的數(shù)據(jù)請求。最后他做出了一個可以在中央處理器上運行的虛擬并行處理器。
勾勒出原型機的草圖后,蘭寧回到了自己的辦公室;他的學生查爾斯·蒙茲(Charles Muntz)接手了大部分實際的編程工作。蘭寧方案中的一個問題是,程序中斷太多次可能會堵塞 CPU。蒙茲設(shè)計了一種叫做重啟保護(restart protection)的解決方案。如果發(fā)送給處理器的任務過多,某些受保護的程序?qū)阉鼈兊臄?shù)據(jù)吐入內(nèi)存庫,而后處理器隊列重置,計算機立即重啟,恢復受保護的任務并放棄其余任務。
蒙茲的團隊設(shè)計完成后,操作系統(tǒng)會被裝在一臺大型機上,然后被作為指令打印出來,送到附近一臺國防承包商雷聲公司(Raytheon)的設(shè)施中。將代碼轉(zhuǎn)換為機器可讀的二進制編碼,意味著用一種織機將銅線穿過磁芯。大多數(shù)織工都是女性,她們的工作要一點點完成:導線穿過磁芯是 1 ;導線在磁芯外面是 0。
一捆做好的導線叫做纜線。包含操作系統(tǒng)信息的所有纜線做完之后,就把它們插入計算機,進行一系列測試。錯誤代碼 1202 表示處理器過載,蘭寧構(gòu)造的計算機范式會被強制重啟。在阿波羅 11 號登月前的幾個月,計算機科學家們故意在模擬中引入了大量重啟,操作系統(tǒng)從未丟失關(guān)鍵數(shù)據(jù)。
從阿波羅 11 號指揮艙拍攝的登月艙。圖片來源:NASA

“繼續(xù)”還是“中止”?

可阿姆斯特朗和奧爾德林不知道這些。計算機控制臺上方,有一個寫著“中止”(ABORT)的圓形按鈕,按下這個按鈕航天器就會被分成兩部分,爆炸后上半段將被送回軌道,其余部分則沖入月球。兩位宇航員接受過各種情境下計算機錯誤的訓練,但可能的錯誤代碼有幾十種,他們并沒有全部記住。有些錯誤一個“繼續(xù)”(go)的命令就能覆蓋,有些需要按“中止”。怎么解決得由位于休斯頓的地面指揮中心決定。
控制中心聽到阿姆斯特朗緊張地請求解釋的時候,事情像反復排練過的那樣進行下去。飛行指揮吉恩·克蘭茲(Gene Kranz)把決定權(quán)交給制導官史蒂夫·鮑爾斯(Steve Bales),鮑爾斯向任務專家杰克·加曼(Jack Garman)和拉塞爾·拉森(Russell Larson)求助,專家又查閱了加曼手寫的錯誤代碼。而后加曼和拉森共同證實,錯誤代碼 1202 意味著計算機在崩潰之前已經(jīng)保存了著陸器的導航數(shù)據(jù)。“繼續(xù)”命令就能解決問題。
但如果計算機再冒出意料之外的問題怎么辦?除了運行著陸器的制導系統(tǒng),計算機還得協(xié)助阿姆斯特朗進行轉(zhuǎn)向和控制。在一定高度(30.48米)以下,不可能再使用“中止”命令,即便計算機發(fā)生了故障,阿姆斯特朗也將被迫嘗試著陸。他幾乎沒有犯錯的余地。如果是硬著陸,宇航員可能當場遇難;情況稍微好點的話,宇航員沒準能幸存,但會被困在月球上。在這場噩夢般的場景中,控制中心要向阿姆斯特朗和奧爾德林告別,在兩人窒息前切斷通訊,留在指揮艙的邁克爾·柯林斯將獨自返航回地球。
終止登月?或者不終止登月,而后向國會解釋兩名宇航員為何遇難?權(quán)衡過后,24 歲的杰克·加曼給出了繼續(xù)的信號,而拉爾森害怕得說不出話,只能豎起大拇指表態(tài)。貝爾斯做出了最后的決定。直到最近他才透露:“那是個調(diào)試警報,飛行時永遠也不該出現(xiàn)。”貝爾斯面前有個顯示器,衡量計算機各項重要指標的的數(shù)字看起來沒受影響。“繼續(xù)。”他指揮道休斯頓把這個決定傳達給阿姆斯特朗的時候,時間已經(jīng)過去了 30 秒。
阿姆斯特朗重新開始評估路線。此前,阿波羅 10 號已經(jīng)對著陸區(qū)域進行了偵察,這些照片阿姆斯特朗已經(jīng)研究了很長時間,把地標都刻進了腦海里。在這之前他發(fā)現(xiàn)飛行軌跡有點長,但在他真正做出反應之前,奧爾德林向計算機查詢了高度數(shù)據(jù)。和上次一樣,他得到的是一聲警報,電腦又死機了
回到麻省理工,一個通過開放線路連接到控制中心的對講機周圍,圍了好幾十人。其中包括 26 歲的唐·埃爾斯(Don Eyles),著陸器最終降落的軟件是他和同事艾倫·克倫普(Allan Klumpp)一起編寫的。第一次重啟讓埃爾斯吃了一驚,第二次則讓他嚇壞了。這不是僅僅一個小故障,而是一串小故障,他擔心任務控制中心沒有完全意識到事情的嚴重后果。
這一階段的制導程序占用了計算機處理能力的 87% 左右。奧爾德林的請求又占了大約 3%。中間某段一個不知名的程序占用了剩下的 10%,再多一點,處理隊列就會超載,引發(fā)強制重啟下一階段著陸占用的處理能力會更多,那時即使沒有奧爾德林的輸入,計算機也會死機。埃爾斯在回憶錄中寫道:“有些可怕的東西在計算機中運行著,我們不知道它是什么,也不知道下一步會引發(fā)什么。”
控制中心發(fā)布第二道命令的時候,埃爾斯和同事面面相覷。埃爾斯沒在指揮隊伍里,但他比休斯頓的任何一個人都了解這臺計算機的工作方式。它很可能會再次重啟,阿姆斯特朗和奧爾德林離月球表面越近,問題就越嚴重。埃爾斯那時到底推斷出了什么,可能他未來幾年內(nèi)也不會公開披露;對他而言,這種情況的解決方法不是“繼續(xù)”,而是“中止”。

1969 年的登月任務中,奧爾德林在登月艙。圖片來源:NASA

又雙叒死機了

接下來的 3 分鐘,著陸器下降了大概 6 千米。掃描過月球荒涼的表面后,阿姆斯特朗開始繪制月球上平原的特征。計算機自動進入下一階段的降落——它再次重啟,任務中心又給出了“繼續(xù)”的指令。但是,距離月球表面不足 610 米的時候,最嚴重的死機發(fā)生了。
警報響起,著陸器的讀數(shù)失靈了。將近 10 秒鐘,控制臺沒有任何顯示——沒有高度數(shù)據(jù),沒有錯誤代碼,只有三塊空白。阿姆斯特朗的心跳加速到每分鐘 150 次,和剛剛完成一次加速沖刺一樣。所幸控制臺最后終于正常了。控制中心確認:又是 1202 錯誤。阿姆斯特朗后來說:“我從沒想過控制臺能恢復。”
警報消除,但幾秒之后又出現(xiàn)了一次重啟,示數(shù)再次消失,這最后一次事故發(fā)生在距月面約 244 米的地方。這四分鐘內(nèi)總共發(fā)生了五次事故,而休斯頓的命令是繼續(xù)下降地面指揮員把信心寄托在艙壁的匣子里。貝爾斯告訴我:“‘中止’指令也沒那么安全,高度越低,越不安全。我一直有種想法沒說出來,在 305 米以下不管多高,阿姆斯特朗會自己采取行動。”
控制中心靜悄悄的;他們已經(jīng)不能再給出有用的建議了。依照程序,阿姆斯特朗接管了部分控制權(quán)。這一操作減少了計算機的處理負荷,結(jié)束了錯誤,但注意力的分散使得阿姆斯特朗超出了指定的降落范圍好幾英里。先前用來熟悉阿波羅 10 號拍下來的照片的那么多時間都被浪費了。阿姆斯特朗現(xiàn)在可以依靠的只有自己的眼睛
阿姆斯特朗駕駛著陸器大致沿月面平行飛行,飛過一個大隕石坑和一塊不合適的碎石地,找到了一塊平坦的、充滿灰塵的區(qū)域。奧爾德林近向計算機查詢了能對最后幾秒的著陸進行導航的數(shù)據(jù),而且不知道它會不會再次變成空白。
寧靜海的月面圖像。圖片來源:NASA
計算機最后一次重啟后僅 40 秒,阿姆斯特朗減小了著陸器的前進動力,而后旋轉(zhuǎn)支架對準月球表面。發(fā)動機揚起了一團阻礙視線的塵埃,奧爾德林大聲報出控制臺不斷涌出的數(shù)字。由于幾乎沒有多余燃料,著陸器十分緩慢地降落到了月球表面。揚起的塵埃懸浮在陽光下,直到月球的微弱重力將它們拉回地表。
地球上,計算機科學家們爭先恐后地想要弄清楚處理器過載的原因。奧爾德林和阿姆斯特朗正在月球上行走,但如果計算機一直死機,他們就很難回地球了。如果不想讓宇航員在進入登月艙后爆炸,他們還有 13 個小時
在還剩兩三個小時的時候,麻省理工學院的團隊找到了錯誤的來源。由于預感到可能會出現(xiàn)“中止”,奧爾德林一直讓登陸器的交會雷達保持開啟狀態(tài)。這一系統(tǒng)指向上級設(shè)備,允許計算機跟蹤指令艙中的柯林斯。在降落過程中,交會雷達的轉(zhuǎn)盤轉(zhuǎn)到了錯誤的位置。通常這不會引起問題,但由于設(shè)計缺陷,系統(tǒng)每過一陣就會向計算機發(fā)送大量不必要的請求這是最糟糕的一種錯誤:不穩(wěn)定,具有微妙的危險性,而又難以復現(xiàn)。
阿波羅 11 號的交會雷達系統(tǒng)觸發(fā)了這一罕見的錯誤,在著陸過程中最艱難的部分,13% 的計算機資源都被這根指向太空的天線偷走了。幸運的是,程序員認為這些零散的請求是可以舍棄的,每次重啟,它們都會被暫時拒絕。相反,計算機能集中處理導航、制導、控制等關(guān)鍵任務。阿波羅計算機的程序員已經(jīng)確定,這些事是所有程序中最重要的,甚至比運行顯示器的軟件還重要。計算機在清空寄存器時,會試圖保留導航數(shù)據(jù),指導航天器接下來去哪。蘭寧和蒙茲設(shè)計的范式交織地密密實實,挽救了登陸過程。
根據(jù)控制中心的命令,離開月球之前,阿姆斯特朗和奧爾德林將交會雷達的旋鈕轉(zhuǎn)到正確的位置,并切斷了它的電源完成這一粗略的修復之后,在一聲炸響中他們被發(fā)射到了月球軌道,留下了空著的下半部分著陸器,還掀翻了之前插在月球表面的美國國旗。他們與柯林斯匯合的三天后,阿波羅 11 號掉落進了太平洋。接下來,等待他們的就成了榮耀。柯林斯在回憶錄中承認任務有多危險。當自己看著阿姆斯特朗和奧爾德林準備從月面返回的時候,他這樣寫到:“如果他們不能從月面飛起來,或者又撞回月面,我承認我不會自殺。我還是會回來,但我知道自己會在議論中活一輩子。”

榮耀與藍圖

征服了太空飛行的哈爾·蘭寧退居幕后,轉(zhuǎn)而涉足 3D 建模領(lǐng)域。阿波羅號應用之后,他設(shè)計的操作系統(tǒng)又用到了美國海軍的 F-8 戰(zhàn)斗機上,證明計算機制導飛行控制是可行的。戈登·摩爾在觀察到了阿波羅號對微型硅芯片的無限需求后,離開了仙童,與人聯(lián)合創(chuàng)辦了英特爾(Intel)1971 年,《電子新聞》(Electronic News)的記者唐·赫弗勒(Don Hoefler)調(diào)查了在仙童之后如雨后春筍般涌現(xiàn)出的數(shù)十家灣區(qū)公司,并寫成了一系列文章。它們的標題是“美國硅谷”(Silicon Valley)
最后還有唐·埃爾斯——要不是因為沒有得到允許,他肯定會放棄這個任務。在沉淀了 50 年之后,我終于在今年 4 月份趕著見到了他。任務控制中心的指令是否正確?他說:“我認為,在麻省理工,我們的計算機缺點東西,某些未知的東西嚴重影響了我們的軟件。也沒準是我們知道的太多了!控制中心的人只能從外部進行判斷。某種程度上這對他們更容易,我覺得他們的指令下對了。”他停頓了一會。“無論如何,降落任務完成了,所以他們做的肯定沒錯。”
接著埃爾斯指出了另一個事實:“這是人類第一次駕駛由電腦控制的飛行器。”在降落的最關(guān)鍵階段,計算機在 4 分鐘內(nèi)經(jīng)歷了 5 次意外重啟但它的運行穩(wěn)定性比程序員預想的要好。阿波羅宇宙飛船又承擔了六次任務,但公眾的興趣逐漸減弱。在也許阿波羅登月計劃的真正遺產(chǎn)不是刻在月塵中,而是刻在硅芯片上。奧爾德林和阿姆斯特朗獲得了榮耀,但在著陸器艙壁后的一個金屬盒子里,保存著現(xiàn)代世界的藍圖

原文鏈接:

https://www.wired.com/story/apollo-11-mission-out-of-control/

文章來源:科研圈


IEEE Spectrum

《科技縱覽》

官方微信公眾平臺



往期推薦

澳大利亞光纖亂象

人工智能走向應用前沿

ABB和西門子著手測試海底電網(wǎng)

主站蜘蛛池模板: 长海县| 开封县| 凤山县| 河津市| 娄底市| 阿拉善盟| 红安县| 临泉县| 嘉善县| 阿拉善左旗| 漠河县| 平乐县| 酒泉市| 彰武县| 肥西县| 横山县| 报价| 清远市| 都江堰市| 土默特右旗| 神池县| 道真| 靖宇县| 永川市| 兴义市| 遂宁市| 治县。| 岢岚县| 南涧| 镇康县| 梁河县| 通山县| 阿巴嘎旗| 乐山市| 长海县| 应城市| 玉门市| 文水县| 郓城县| 昌黎县| 年辖:市辖区|