阿提米絲2號的容錯機制:NASA 如何打造冗餘系統
這篇文章探討了 NASA 阿提米絲2號任務中複雜的容錯架構,詳細介紹了其多層級的 CPU 冗餘、確定性錯誤檢查,以及旨在應對災難性故障的獨立備用飛行軟體系統。
背景
本文探討 NASA 阿提米絲二號(Artemis II)獵戶座太空船的容錯電腦架構。該系統透過多層級的硬體冗餘、確定性錯誤檢查以及異質備援軟體,確保在極端輻射環境或硬體故障下,太空船仍能維持飛行控制與生命維持功能。
社群觀點
針對 NASA 採用的八核心平行運作與「失效靜默」(fail-silent)設計,Hacker News 社群展開了深入的技術辯論。許多討論聚焦於「八」這個數字的決策邏輯,專業網友指出,這類航太規格通常是根據預期的任務失敗率反向推算,在成本、重量與風險之間取得平衡。然而,也有觀點質疑,單純增加硬體數量並非萬靈丹,因為許多歷史上的航太事故並非源於硬體損壞,而是源於功能完好的組件之間產生了意料之外的交互作用。針對這種「未知故障」,機率統計往往難以發揮作用,更需要透過極限測試來挖掘潛在問題。
關於「自我檢查對」(self-checking pair)的運作機制,社群成員解釋這與常見的三機投票機制不同。在這種架構下,當一對處理器輸出不一致時,系統會直接將該模組視為失效並進行重置,而非試圖判斷誰對誰錯。這種設計雖然簡潔,卻也引發了關於系統複雜度的擔憂。有評論者指出,過度追求冗餘所帶來的系統複雜性,有時反而會成為事故的間接誘因,因為複雜的切換邏輯與同步需求可能產生新的失效模式。
此外,針對 NASA 採用的「異質冗餘」(Dissimilar Redundancy)——即使用不同的硬體與獨立開發的備援軟體,社群內存在明顯的分歧。支持者認為這能有效避免軟體臭蟲或編譯器錯誤導致的共模失效;但反對者引用 Knight 與 Leveson 在 1986 年的研究指出,即使由不同團隊開發,程式員往往會在處理複雜邏輯時犯下極其相似的錯誤,因此異質軟體防禦邏輯錯誤的效果可能不如預期。儘管如此,這種開發思維在軟體工程中仍有價值,例如在不同作業系統環境下編譯程式,往往能提早發現隱藏的未定義行為或錯誤假設。
最後,討論也觸及了太空人培訓的挑戰。隨著系統自動化與冗餘層級提升,太空人面對故障時的應變邏輯也變得更加複雜。網友回顧了阿波羅時代的軼事,當時太空人曾自嘲,如果連電腦維修都要學,那乾職連腦外科手術也一併學了。這反映出在極端環境下,如何在高度自動化的容錯系統與人類手動干預之間取得平衡,始終是航太工程的核心難題。
延伸閱讀
- Knight and Leveson (1986):關於 N 版本程式設計(N-version programming)在獨立性假設上的實驗研究,探討不同團隊是否真的會產生不同的軟體錯誤。
- Lockstep Computing:留言中提到的鎖步處理器技術,解釋了微控制器如何透過硬體層級的同步對比來達成高安全性需求。
- SPC574K72E5 Datasheet:STMicroelectronics 生產的汽車級鎖步微控制器規格文件,可作為現代工業容錯硬體的參考實例。
相關文章