太空梭的機載計算機有什麼特點?


硬體

  1. 高度冗餘
    太空梭上備有五台相同的 AP-101(後升級為 AP-101s)電腦,其中四台在執行任務的過程中共同運作,另外一台作為備用。如果四台中的一台出現故障,另外三台通過投票將其排除出系統(頗像新世紀福音戰士里的三賢人...)。
  2. 沒有硬碟
    將筆記本電腦帶上太空會出現什麼狀況?你可能會先想到硬碟...沒錯,硬碟需要氣流在碟片和磁頭間形成的一層割離但窄小的空間,如果沒有空氣,機器一啟動硬碟就會被磁頭刮傷。如果艙內失去壓力,硬碟首先會受到擾動,所以推測過去這可能是 NASA 使用磁帶的原因。磁帶的一個好處是適合讀寫連續的數據,太空梭把軟體從磁帶中載入內存,並不需要頻繁的讀寫操作(待求證)。
  3. 磁芯存儲器
    軌道中的宇宙輻射強大,在軌道中使用 RAM 做主存會讓意外的故障比在地面上高很多,太空梭最早選用了體積龐大的磁芯存儲器,宇宙射線對其沒有影響,而且磁芯處理器沒電之後仍維持之前的存儲狀態,適合太空梭對可靠性的要求。但也許是因為半導體保護技術的進步,在 AP-101s 中磁芯存儲器被換成了半導體存儲器。
  4. 速度
    AP-101 處理器的速度不快,每秒執行 40 萬條指令,AP-101s 的加入為太空梭提供了更多的處理能力,相比之下,火箭的處理器可要慢得多,但其實處理性能能夠完成任務就好,軌道器重要的還是穩定,複雜的數據處理可以傳輸給地面龐大的計算機來完成。



軟體
我對太空梭的軟體了解很少,只知道它和 IBM 有淵源,有了一些資料後再補充 :)


正好畢業設計做這方面相關的,雖然不是太空梭的飛控計算機,但都有相通之處。就做一做這方面的科普了。在硬體方面,我認為相對於我們常見的PC等,航天航空類的飛控計算機主要有兩個特點:1.高度定製;2.冗餘容錯
高度定製
個人PC、手持設備(手機等)計算機功能大都是固定的,因此各個模塊相對固定。而飛控計算機不一樣,需要根據具體的任務需求定製。由於面向的場合不同,因此對飛控系統的主控晶元的選型的側重點也不同,大家在看一些航空和航天領域的主控晶元指標時經常會發現主控晶元的主頻非常低(相對於PC),一方面是由於功耗方面和晶元抗輻射方面的限制,一方面也說明實際上一般的飛控計算機對計算能力的要求並不高。飛控計算機系統需求量比較大的是通訊介面、IO埠等。另外,大家都知道航空航天領域的計算機最重要的一個需求特點是它要求要有很高的可靠性,理論上在同樣的外部條件(環境工藝等)下,一塊晶元的集成的晶體管越多,晶元的可靠度越低。因此飛控計算機設計的一個準則就是剛剛好夠用即可,並且系統越簡單越好,複雜的系統容易失效。
冗餘容錯:
幾乎所有的高可靠計算機系統都採用了冗餘容錯系統架構。包括飛機、火箭、航天飛船等。冗餘技術簡單來說就是用多台的計算機系統提高可靠度,一台計算機掛了,另外一台計算機自動替換上。這裡簡單給出幾種典型的冗餘容錯方案。下面這張圖是60,70年代美國鼎鼎大名的土星V號火箭的飛控計算機示意框圖[1]。


這種冗餘方案屬於被動式3冗餘方案。圖中的V是投票器模塊。C1,C2,C3是三個不同的輸入通道。投票器模塊通過比較這3個通道的結果,利用少數服從多數的原則得到輸出結果。很明顯,當3個通道中有一個通道出現故障時投票器可以屏蔽該故障,仍然可以輸出正確結果。而如果有2個通道同時故障時,那麼整個系統就故障了。另外從圖中可以看出,由於當時還沒成熟的微處理器,因此整個電子控制系統是由非常多的小模塊構成的,不像現在的系統有一個很明顯的處理器核心。從電子系統角度來講,現在的飛控系統的可靠度可以比土星V號高好幾個量級。因此,現在想想當時敢載人登月確實有很大的風險。
再看一下我國2011年發射的「天宮一號」的飛控計算機示意圖[2]:


圖中AOCC-A,AOCC-B組成雙冗餘冷備份子系統,BCD作為AOCC子系統的冷備份模塊。冷備份就是備用機一般情況下處於斷電狀態,只有主機故障後才會上電接管工作。具體到天宮一號的計算機:一般狀態下AOCC-A處於工作狀態,AOCC-B ,BCD都斷電。當AOCC-A掛了,AOCC-B上電接管工作,BCD仍然斷電。AOCC-B也掛了,BCD才上電接管工作。BCD也掛了,那就是掛了……
對可靠度要求更高的是大客機的飛控計算機。請看下面波音公司逆天的3*3非相似的冗餘計算機[3]。

注意看,這個計算機系統不僅是9冗餘的,而且採用了3種不同架構和公司生產的主控晶元:AMD 摩托羅拉 INTEL。這種架構叫做非相似冗餘,即採用完全不同的軟體和硬體,可以避免共模失效。由於需要分別研發這三種架構的計算機硬體和軟體,因此這套計算機系統的研發和生產成本都非常。

注意看,這個計算機系統不僅是9冗餘的,而且採用了3種不同架構和公司生產的主控晶元:AMD 摩托羅拉 INTEL。這種架構叫做非相似冗餘,即採用完全不同的軟體和硬體,可以避免共模失效。由於需要分別研發這三種架構的計算機硬體和軟體,因此這套計算機系統的研發和生產成本都非常。
參考文獻:

[1] HAEUSSERMANN W. Description
and performance of the Saturn launch vehicle"s navigation, guidance and control
system,NASA TN D-5869[R], 1970.

[2] 劉波,林宇,彭飛,等.天宮一號目標飛行器控制計算機的設計與驗證[J].空間控制技術與應用,2011(06):28-33.

[3] 陳宗基,秦旭東,高金源.非相似余度飛控計算機[J].航空學報,2005(03):320-327


操作系統用的是實時操作系統,用通俗的話來說不會卡頓。另外核電站和武器的操作系統均遵循這種設計。

除此之外,更值得一提的應該是在開發航天軟體的過程中,開發過程極為嚴格,體現在測試過程的嚴謹和繁複,基本上必須測試到每一個單元,每一個函數。當然這些軟體在設計的時候肯定就已經設計為非常容易test,以此來提高軟體的可靠性。

其他的歡迎大家補充。


IBM AP-101的體系結構繼承自System/360


所有到計算存儲系統都有防輻射和ECC校驗機制,防止高能宇宙射線引起各種量子效應造成計算誤差,畢竟是高精度的航空器,一點點誤差都有可能致命


穩定可靠壓倒一起指標 寧願用奔騰MMX 也不用I7


個人PC、手持設備(手機等)計算機功能大都是固定的,因此各個模塊相對固定。而飛控計算機不一樣,需要根據具體的任務需求定製。由於面向的場合不同,因此對飛控系統的主控晶元的選型的側重點也不同,大家在看一些航空和航天領域的主控晶元指標時經常會發現主控晶元的主頻非常低(相對於PC),一方面是由於功耗方面和晶元抗輻射方面的限制,一方面也說明實際上一般的飛控計算機對計算能力的要求並不高。飛控計算機系統需求量比較大的是通訊介面、IO埠等。另外,大家都知道航空航天領域的計算機最重要的一個需求特點是它要求要有很高的可靠性,理論上在同樣的外部條件(環境工藝等)下,一塊晶元的集成的晶體管越多,晶元的可靠度越低。因此飛控計算機設計的一個準則就是剛剛好夠用即可,並且系統越簡單越好,複雜的系統容易失效。


系統極其極其古老,不換是怕出問題。


推薦閱讀:

什麼樣的外部存儲技術有可能跟內存 (RAM) 讀取速度一樣快?
為什麼硬碟空閑的時候也要保持旋轉?
為什麼有關計算機 CPU 的知識不解密?
你碰到過的最難調試的 Bug 是什麼樣的?
電腦取隨機數是什麼原理,是真正的隨機數嗎?

TAG:太空梭 | 計算機 | 航天 |