所謂的宇宙射線,也叫空間輻照,主要對CMOS體矽工藝的器件會有比較大的影響。很不幸地,我們大部份的電腦芯片都屬於這個範疇。空間輻照主要考慮有這樣幾個影響:總劑量效應和單粒子效應。總劑量效應是一個類似電子遷移一樣的累積過程,比如會造成一個反相器的翻轉電壓降低,最後不能工作。這個效應在地球上基本不必考慮,一是因為到達地球大氣層的高能粒子數量較少,第二大部份電子器件的壽命沒有設計的過長。但是在空間就不一定了,在空間環境裏長期的粒子能量積累,最終會造成器件的損傷。總劑量效應的度量單位是拉德(材料),一般按照nasa的要求,近地軌域要求在器件生命周期內能抗200k拉德(矽)的輻照量,而深空環境裏面,一般都是要求抗1M拉德(矽)以上的總輻照劑量。那麽在地球上,其實不必特別考慮總劑量的影響。其次是單粒子效應。單粒子效應就是指一個高能粒子打穿CMOS的某些敏感區域,造成器件的失效。這種失效有硬失效有軟失效。硬失效就是器件損傷了。一般這種硬失效表現為閂鎖。閂鎖的現象就是器件電流突然增大,最終被燒毀。閂鎖就是CMOS中襯底和阱之間的pnpn接面被導通,最終形成一個正反饋回路。閂鎖在地面也會發生,但不一定是高能粒子造成的,也有可能是相鄰兩個cell靠的比較近產生互感。這個一般芯片設計商在設計的時候都會考慮這個效應,但是不會細致到考慮高能粒子擊穿器件那個地步,所以閂鎖在地面會發生,但機率不大,即使發生了也不一定會燒毀器件(閂鎖在某些條件下是可以結束的),屬於小機率事件。然後,單粒子效應還會造成軟失效,就是所謂單粒子翻轉或單粒子脈沖。單粒子脈沖的發生也是需要高能粒子打在cmos器件上,然後形成一個毛刺,這個毛刺如果運氣好,可以被下一級的DFF吸收掉,運氣不好,正打在DFF的建立保持時間窗內,寄存器就翻轉了。最可怕的是打在時鐘樹的根節點上,那就會造成大面積的寄存器錯誤翻轉。即使被打中,這個會不會造成bug也是個機率問題,假設打中了某個通用寄存器,但是這個寄存器可能不會被使用,或下一拍就被重新整理了,那就和沒打中一樣。除了單粒子脈沖,還有單粒子翻轉,這個發生的粒子能量閾值條件是最低的,因此是軟失效中最常見的現象。這種軟失效不一定會由宇宙射線造成,在地球上發生的機率也很大。記得很久以前,某次太陽黑子爆發,某廠家的伺服器的CPU因為沒有做軟失效加固,造成大面積失效,遺失大量市場份額。在這方面現在做的最好的是SUN,他家的伺服器以穩定著稱,但是當我知道他們的CPU做的加固手段之全面,也還是被折服了。一般來講所有的軟失效的發生是個機率事件,發生了會不會造成bug也是個機率事件,造成了bug你會不會觀察到,又是個機率事件,觀察到了對主功能會不會造成影響還是個機率事件。針對軟失效,芯片廠家會在硬體上進行加固,所謂的加固,一般來說就是增加校驗,你看很多伺服器的記憶體都是帶ECC的,這種校驗一般可以糾正一位錯誤,檢查到兩位錯誤。還有一個就是在記憶體上進行交織設計,就是讓一個word的bit盡量分散在不同區域,不要一個粒子打中後一下錯一片。所有不重要的寄存器做parity,重要的做ecc,反正就是能想到的全給你加上。抗單粒子軟失效還有一個手段就是換材料和工藝,比如在矽上再生長一層,被稱為外延增長技術的矽片,或者幹脆換成絕緣體上矽材料,這個是IBM研發的,AMD曾經有幾條產線,以前所有的powerpc都是基於這個材料工藝的。這個工藝的初衷是降功耗和面積,後來還發現他有個抗單粒子效應的內建內容,後來就被美國軍方關註了,再後來因為這個工藝成本還是比較大,逐漸就被商業棄用了。所以總體上來講,宇宙射線對bug還是有一定的影響的,但取決於你的可靠性要求。在某一個閾值上任何增加可靠性的設計都是昂貴的,軟失效設計是一門系統工程,如果只是想簡單防一下,其實采用高等級的伺服器,多加校驗方式,還是提升比較明顯的。