軟性錯誤

軟性錯誤是电子学及電腦運算中的錯誤，是因為一個信號或資料不正確造成的錯誤。軟性錯誤可能是因為缺陷而造成，多半認為是因為設計或是架構上的錯誤，或者是因零件損壞而產生。軟性錯誤也是指信號或資料有錯，但沒有造成系統的異常動作。在確認軟性錯誤及其影響後，無法得到有軟性錯誤後的系統比原系統來的不可靠的結論。在航太領域中，這類錯誤稱為单粒子翻转。

在電腦的記憶體中，軟性錯誤會造成程式一個指令或是一個資料的改變。若將電腦冷啟動後，軟性錯誤造成的影響就會消失。軟性錯誤不會破壞系統的硬體，唯一破壞的是當時正在處理的資料。

軟性錯誤有兩種：積體電路層級的軟性錯誤，以及系統層級的軟性錯誤。積體電路層級的軟性錯誤一般是因為有高能粒子撞擊到積體電路，例如積體電路本身材料中放射性原子的衰變，會放出α粒子撞擊積體電路，因為α粒子帶有正電荷以及能量，因此若撞擊到某個記憶體單元，記憶體單元中的數值就可能會變化。上述例子中的原子反應非常小，不會影響到積體電路的硬體結構。系統層級的軟性錯誤多半是在要處理的資料被雜訊所影響，多半是在資料在匯流排時發生此情形，電腦會將雜訊解讀為資料位元，因此會造成程式定址或是處理程式碼的錯誤。而有錯的資料也可能會存到記憶體中，因此造成後續的問題。

若軟性錯誤立刻就偵測到，可以直接重寫正確的資料即可消除軟性錯誤的影響。高可靠度的系統會用錯誤修正機制，直接在運作中修正錯誤。不過在大部份系統中，無法確定哪一個資料是正確的，甚至完全無法偵測軟性錯誤。而且在修正軟性錯誤前，系統可能已經崩溃，因此需包括重新启动。軟性錯誤包括儲存電路中資料的變化（例如儲存電路中的電子），但沒有影響到實際電路（原子）。只要重寫正確的資料，電路就會恢復正常工作。軟性錯誤可能發生在傳輸線、數位邏輯、類比電路、磁性儲存媒介等，不過最常見的還是在積體電路中的軟性錯誤。
軟性錯誤的原因
 封裝材料中的α粒子衰變 
自從1970年代開始使用动态随机存取存储器後，軟性錯誤開始廣為人知。在早期的元件中，陶瓷的晶片封裝材料中含有少量的放射性污染物。若要避免軟性錯誤，其衰變率需要非常低，而晶片廠商有時就會遇到因為α粒子衰變產生的問題。非常難維持材料到所需要的純度。對於大部份的晶體電路來說，若要維持其性能可靠，需要控制其關鍵封裝材料的α粒子放射率，要小到每小時每平方公分0.001次計數（0.001 cph/cm2），一般鞋底材料的放射率是在0.1到10 cph/cm2之間。

 宇宙射線產生的高能中子和質子 
當電子產業決心要控制封裝材料的污染時，也就很清楚可以找到有其他造成軟性錯誤的原因。James F. Ziegler在IBM有一個團隊，累積出版了許多論文（Ziegler and Lanford, 1979）說明宇宙射線也會造成軟性錯誤。在現代的零件中，宇宙射線是造成軟性錯誤的主要原因。宇宙射線的粒子本身多半無法到達地球表面，會在大氣層中會造成空气簇射，產生許多高能量的粒子。地球表面會造成軟性錯誤的粒子中，有95%是高能量的中子，並餘的則是質子和π介子。
IBM曾估計過，在1996年的桌上電腦中，每月每256MiB的RAM裡，就會有一次軟性錯誤。
在軟性錯誤的文獻中，常會稱這些高能中子通量為「宇宙射線」。中子本身不帶電，也不會影響電路，但會讓晶片裡原子的原子核產生中子俘获，之後會產生帶電子的粒子，例如α粒子或是氧原子核，這些都會造成軟性錯誤。
相關條目
单粒子翻转

毛刺
冒险 (数字电路)

參考資料

Category:電腦記憶體
Category:数字电子