阿波羅大腦:指引人類抵達月球的計算機
據外媒報導,當阿波羅11號於1969年7月20日降落在“寧靜之海(Sea of Tranquility)”的時候,它代表的是不僅僅是人類精神的勝利,同時還是講述了一個關於叫做阿波羅制導計算機(AGC)的控制論奇蹟的故事。
據悉,該計算機能幫助阿波羅宇航員安全地導航到月球並返回至地面。這是一台當時非常先進的電腦,以致於創造它的工程師們說–如果他們知道自己會陷入什麼境地,他們可能就不會嘗試這麼做了。
阿波羅制導計算機是太空競賽中未受到歌頌的成功之一,這可能是因為它非常成功,幾乎沒有什麼飛行中的問題,其中大部分則都是因人為失誤造成。據了解,這台計算機搭載在指揮服務模塊(CSM)和登月艙(LM)中,它總共執行了15次載人任務包括9次月球飛行、6次登月、3次Skylab太空任務和1975年的阿波羅-聯盟號測試任務。
當時,它是最新、最先進的有線飛行和慣性制導系統、是第一台數字飛行計算機、是迄今為止最先進的微型計算機、是第一台使用矽芯片的計算機,同時也是第一台機組人員生命依賴於其功能的機載計算機。
據了解,阿波羅制導計算機乍一看就像是一個由兩部分組成的黃銅手提箱,總長24×12.5×6.5英寸(61×32×17厘米)、重70磅(14公斤)。在內部則是並不像現代計算機那麼吸人眼球。可以這麼說,很難將它跟現代設備作比較,因為ACG算不上一台通用計算機,它只能算是為一個特定任務設計的硬連接,其能執行20世紀80年代早期的Commodore 64或ZX Spectrum。
計算機方面的工作
所有阿波羅任務都至少攜帶一台這樣的電腦的原因是,月球任務涉及的製導不同於地球。在地球上,制導最簡單的方法就是從地球上的一個固定點到另一個固定點,然而在月球上,這一切就像站在步槍上的轉盤上,變得複雜萬分。也就是說,太空制導對於宇航員來說太過複雜且不能依靠直覺。
一項新技術
當阿波羅計劃開始時,計算機仍然是巨大的機器,它們佔據了整個房間。全球只有少數幾個想把信息輸入或輸出到一個如此復雜、以致於需要一批知識淵博的頂級數學家才能完成的設備的國家。然而,這是一個快速發展的領域,當AGC的工作開始的時候,這項技術已經為計算機革命爆發做好準備。
除了計算技術,基礎電子技術也在飛速發展。所有這些新技術不僅在計算機設計上產生了協同效應還震動了整個電子行業。不過這給AGC帶來了無盡的麻煩。你如何設計一台在技術不斷變化的六年內都不會航行來的計算機?更糟糕的是,當行業預計一切將在18個月內發生變化時,你如何獲得行業對一台必須在生產和使用中保持10年的計算機的支持?
麻省理工學院(MIT)儀器實驗室
1961年8月,當NASA決定將阿波羅制導計算機合同授予MIT儀器實驗室而不是該機構經常合作的供應商IBM時,該學院陷入了巨大漩渦。
很多人對此感到有些忐忑不安,但實驗室主任Charles Stark Draper則表現出了極大的信心,他表示其團隊能夠按時交付電腦並達到規格要求,為此,他自願參加了第一次飛行任務。到了1962年,雙方達成協議,MIT將在通用汽車交流火種塞部門、Kollsman Instrument Corporation和雷神公司的支持下率先開展這項工作。
對於MIT來說,其面臨最大的障礙是AGC的規格,因為沒有人建造過這樣的東西,也沒有人知道該怎麼做,它就相當於一張白紙。
除此之外,計算還機必須符合阿波羅的一般規格,即必須堅固耐用、足以承受太空飛行,而且還必須使用最少的晶體管。此外,它還需要一個簡單的控制界面供宇航員使用。
如何運轉
需要記住的一件事是,AGC的設計是前沿的、構建方式則是非常老式的–兩者都提出了各自的挑戰。與現代計算機不同的是,AGC都是手工製造,過程緩慢且費力。據悉製造這些電腦總共花了2000人一年的工作量。
AGC集成了許多前沿技術,比如成為第一個在邏輯電路上依賴芯片組件的計算機–特別是一個三輸入NOR門。而其使用的芯片雖然都剛剛上市,但到了1963年,MIT儀器實驗室購買了美國60%的芯片生產。
計算機
AGC的最終形態不是一台通用計算機,而是一台專門用來執行特定任務的計算機,而且還是有線的。它由兩個金屬托盤組成–一個用於存儲,另一個用於邏輯電路,總共有30000個組件。由於該技術的局限性,儘管它非常複雜,但在設計上還是做到盡可能的簡單化,部件也要盡可能地少,這樣才能得到更低的重量和更大的可靠性。
由於AGC必須在距離最近的修理廠25萬英里的地方運行,因此可靠性是重中之重。有一次,有人建議在飛船上安裝一台複製的電腦,但這一建議被拒絕了,取而代之的是強有力的、積極的測試,然後測試人員對組件進行了密封以防止灰塵和水分進入。
繩子的記憶
一個主要的設計關注點是如何在AGC中存儲程序和數據。計算機記憶已經從使用穿孔紙帶輸入數據或通過裝滿水銀的管道發送聲波來存儲數據的時代走了很長一段路,但這項技術仍處於起步階段,當時的存儲技術對阿波羅來說仍都不夠實用。
相反,MIT提出了一種新的方法,將軟件真正地編織到內存庫中。他們利用一種叫做“繩子記憶”的技術,當一根導線穿過圓環中心時,它表示二進制數1;當它在外面則是0。
為了給這些繩狀記憶編程,MIT使用了他們所謂的LOL(小老太太)法。得到的成果是一個不可摧毀的內存,它不能被刪除,改變或損壞。然而這也存在缺點,比如打造這樣一塊內存非常困難,另外在發現錯誤時很難糾正。不過這算是一個優勢,因為這意味著最後一刻的“好主意”可以被忽略。
優先於分時
除了上面提到的這個內存這台計算機還有另外一個2000字的RAM存儲庫,在電腦運行程序時,它就像一個臨時數據記事本。
在20世紀60年代,多人使用或運行多個程序的計算機的常見做法就是分時。對於大學的大型機來說這可能沒問題,但對於阿波羅號來說,這可能是致命的,因為計算機最終可能會被生死攸關的瑣事佔據,或以今天的計算機用戶非常熟悉的方式崩潰。
而就在那個時候,計算機先驅Halcombe Laning提出了一個解決方案–AGC被編程為優先級,而不是分時。換句話說,每個項目都是按照任務時間表上任何特定時間點的重要性進行編號的。如果一個優先級更高的程序需要計算機,其他程序就會停止,等待它完成,然後繼續。與此同時,臨時存儲器以一種類似於現代計算機進入睡眠模式的方式將數據保存到中斷狀態。
DSKY
數據來自一個包括六分儀、望遠鏡、慣性測量單元(IMU)、宇航員使用的手動控制器、指揮模塊交會雷達、月球模塊登陸雷達、主引擎和反映控制系統在內的大量設備。不過最重要的輸入還是顯示和鍵盤(DSKY)單元,宇航員用它來跟計算機通信。這個用戶界面非常龐大以致於很多今天看到它的人都以為是計算機本身,但實際上它只不過是一組警告和狀態燈、按鈕和數字顯示。
DSKY由MIT的Alan Green設計,乍一看似乎很難使用。實際上宇航員們也這麼認為,但經過練習,他們很快就對這個設備的實際性能感到驚訝並成為它的忠實粉絲。
令人著迷的是DSKY獨特的工作方式。宇航員們使用了一種特殊的“名詞”和“動詞”數字語言,而不是鍵入單詞命令或點擊圖標。操作時,宇航員首先要按下防止意外按下按鈕的解鎖鍵,然後再輸入名詞數字代碼和動詞代碼。
結果將是一個類似於display-gimbal angle或load-star number的命令。如果命令要求宇航員輸入數據,計算機就會發出一個準備好的信號並等待數據。其中一個艙壁上甚至印著一張小抄,上面列出了計算機命令。
軟件
很顯然,一台計算機的性能取決於它的軟件,在首次登月之前,總共有350名工程師參與了AGC軟件開發工作,這相當於1400人一年的工作量。由於程序員沒有任何規範,並且對軟件概念沒有一個堅實的理解,所以這項工作開始時並不順利。
與現在不同的是,這些代碼是手工編寫的然後轉移到大量穿孔卡片上進行測試。儘管使用了這種原始的方法,但該軟件仍算是一個巨大的飛躍,它成為了第一個必須處理實時問題的軟件,因為有三個人的生命將依賴於此。
投入使用的阿波羅計算機
在實踐中,AGC在阿波羅飛行任務中表現得尤其完美,唯一的問題是輸入錯誤的代碼或轉動了錯誤的開關。而其實力得到真正展示的則是在阿波羅11號任務。
在歷史性的“寧靜之海”降落過程中,由於交會雷達被意外打開,電腦突然“大發脾氣”。雷達開始向計算機發送大量無意義的數據,這要是在現代計算機中很有可能會導致設備崩潰。相反,AGC為過載錯誤發出“1202”信號,然後關掉了除優先級1以外的所有程序並重新啟動。由於避免了可能的中止,任務指揮官尼爾·阿姆斯特朗接到了繼續著陸的命令。