軟性錯誤是电子学及電腦運算中的錯誤,是因為一個信號或資料不正確造成的錯誤。軟性錯誤可能是因為缺陷而造成,多半認為是因為設計或是架構上的錯誤,或者是因零件損壞而產生。軟性錯誤也是指信號或資料有錯,但沒有造成系統的異常動作。在確認軟性錯誤及其影響後,無法得到有軟性錯誤後的系統比原系統來的不可靠的結論。在航太領域中,這類錯誤稱為单粒子翻转。
在電腦的記憶體中,軟性錯誤會造成程式一個指令或是一個資料的改變。若將電腦冷啟動後,軟性錯誤造成的影響就會消失。軟性錯誤不會破壞系統的硬體,唯一破壞的是當時正在處理的資料。
軟性錯誤有兩種:積體電路層級的軟性錯誤,以及系統層級的軟性錯誤。積體電路層級的軟性錯誤一般是因為有高能粒子撞擊到積體電路,例如積體電路本身材料中放射性原子的衰變,會放出α粒子撞擊積體電路,因為α粒子帶有正電荷以及能量,因此若撞擊到某個記憶體單元,記憶體單元中的數值就可能會變化。上述例子中的原子反應非常小,不會影響到積體電路的硬體結構。系統層級的軟性錯誤多半是在要處理的資料被雜訊所影響,多半是在資料在匯流排時發生此情形,電腦會將雜訊解讀為資料位元,因此會造成程式定址或是處理程式碼的錯誤。而有錯的資料也可能會存到記憶體中,因此造成後續的問題。
若軟性錯誤立刻就偵測到,可以直接重寫正確的資料即可消除軟性錯誤的影響。高可靠度的系統會用錯誤修正機制,直接在運作中修正錯誤。不過在大部份系統中,無法確定哪一個資料是正確的,甚至完全無法偵測軟性錯誤。而且在修正軟性錯誤前,系統可能已經崩溃,因此復原程序需包括重新启动。軟性錯誤包括儲存電路中資料的變化(例如儲存電路中的電子),但沒有影響到實際電路(原子)。只要重寫正確的資料,電路就會恢復正常工作。軟性錯誤可能發生在傳輸線、數位邏輯、類比電路、磁性儲存媒介等,不過最常見的還是在積體電路中的軟性錯誤。
軟性錯誤的原因
封裝材料中的α粒子衰變
自從1970年代開始使用动态随机存取存储器後,軟性錯誤開始廣為人知。在早期的元件中,陶瓷的晶片封裝材料中含有少量的放射性污染物。若要避免軟性錯誤,其衰變率需要非常低,而晶片廠商有時就會遇到因為α粒子衰變產生的問題。非常難維持材料到所需要的純度。對於大部份的晶體電路來說,若要維持其性能可靠,需要控制其關鍵封裝材料的α粒子放射率,要小到每小時每平方公分0.001次計數(0.001 cph/cm2),一般鞋底材料的放射率是在0.1到10 cph/cm2之間。
宇宙射線產生的高能中子和質子
當電子產業決心要控制封裝材料的污染時,也就很清楚可以找到有其他造成軟性錯誤的原因。James F. Ziegler在IBM有一個團隊,累積出版了許多論文(Ziegler and Lanford, 1979)說明宇宙射線也會造成軟性錯誤。在現代的零件中,宇宙射線是造成軟性錯誤的主要原因。宇宙射線的粒子本身多半無法到達地球表面,會在大氣層中會造成空气簇射,產生許多高能量的粒子。地球表面會造成軟性錯誤的粒子中,有95%是高能量的中子,並餘的則是質子和π介子[1]。 IBM曾估計過,在1996年的桌上電腦中,每月每256MiB的RAM裡,就會有一次軟性錯誤[2]。 在軟性錯誤的文獻中,常會稱這些高能中子通量為「宇宙射線」。中子本身不帶電,也不會影響電路,但會讓晶片裡原子的原子核產生中子俘获,之後會產生帶電子的粒子,例如α粒子或是氧原子核,這些都會造成軟性錯誤。
相關條目
參考資料
- ^ Ziegler, J. F. Terrestrial cosmic rays. IBM Journal of Research and Development. January 1996, 40 (1): 19–39. ISSN 0018-8646. doi:10.1147/rd.401.0019.
- ^ Simonite, Tom. Should every computer chip have a cosmic ray detector?. New Scientist. March 2008 [26 November 2019]. (原始内容存档于2 December 2011).