編譯 滕慧月
計票電腦突然出錯、普通玩家突然表現非凡、飛機突然下墜……原因竟然都可能與它有關。


計算機內部的數制是二進制
2003 年5 月18 日,比利時舉行四年一度的聯邦議會選舉。在所有選民中,有近一半的人領到了投票專用磁卡。他們將自己的選擇錄入磁卡,計票人員再用計算機讀取每張磁卡中的數據。當日深夜,工作人員在完成某地區的選票統計后,發現結果不太對勁——維得佛加是一位沒什么名氣的候選人,而她的得票數卻超過了理論上限。于是工作人員取出所有磁卡,一張張重新計票。在這一次的計票結果中,維得佛加比之前少了4096 票。到底是哪里出了問題呢?
為了找到計票故障的源頭,工作人員請來計算機專家,對硬件和軟件做了大量測試,卻仍然毫無頭緒,甚至無法重現和第一次相同的計票結果。就在大家百思不得其解的時候,有人從4096 這個數字中發現了疑點。

地球時刻受到宇宙線的攻擊
眾所周知,計算機內部的數制是二進制,元件接通代表“1”,斷開則代表“0”。例如,某處有三個元件,它們分別代表從高到低的三位數,其在電路中的狀態分別是接通、斷開、斷開。那么,此時這三個元件所反映的二進制數就是100,轉換成十進制數則是4(1×22+0×21+0×20)。計算機的運算結果之所以可靠,是因為晶體管的狀態只有在接受人的操作后才會轉變。
4096 這個數的特殊之處在于,它恰好是2 的12 次方!這意味著,維得佛加額外獲得4096 票很可能是因為第13 位元件狀態意外地由“0”變為了“1”。如果這次計錯票的事件真的是由元件狀態變化導致的,那么是“誰”進行了這項操作呢?更奇怪的是,比利時官方在調查時發現,英特爾公司早在幾十年前就出具過類似問題的報告。
1978 年,英特爾公司報告稱,其研發的一款半導體存儲器上的“1”有時會莫名其妙地自動歸“0”。通過調查,英特爾公司將問題源頭鎖定在用于封裝芯片的半導體陶瓷上。20 世紀70 年代,在熱火朝天的半導體市場環境中,在美國科羅拉多州的格林河沿岸也建立起一家半導體制造廠,該廠在成立不久后便成了英特爾公司的供應商。然而,該廠錯誤地將廠址定在了一家鈾礦廠的下游。放射性原子順著河流來到制造半導體的流水線上,最終混入英特爾公司的產品中。調查這一事件的科學家指出,即便半導體陶瓷中只存在極微量的鈾原子和釷原子,也能夠發射出足量的高能粒子影響元件的工作狀態。

英特爾事件發生后,芯片制造行業將嚴控放射性物質污染列為生產的重中之重。因此,比利時大選發生計票錯誤不太可能是因為計算機元件本身含有放射性原子。也就是說,罪魁禍首很可能是環境中的輻射。
當時,人們已經發現了宇宙線的存在。宇宙線是來自外太空的高能粒子,有的來自太陽,有的則來自更遙遠的宇宙空間,甚至黑洞。這些宇宙粒子可不好惹,原因在于:首先,它們帶電,這意味著它們可能會攻擊我們的DNA,甚至導致不可控制的復制錯誤,并最終引發癌癥;其次,它們速度極快,可以四處亂竄,無差別攻擊每一個物體。基于以上認識,比利時計票事件的調查人員懷疑正是某個宇宙粒子擊中了計票計算機中的元件,讓第13位數從“0”翻轉為“1”,導致計算機多計了4096 張選票。


游戲角色跳到了游戲界面的天花板上
有了比利時計票事件的先例,人們陸續將很多難以解釋的計算機狀態突變事件歸因于宇宙線。
2013 年的一天,一位游戲玩家正在接受超級馬里奧游戲官方發起的快速通關挑戰。他操作平常,游戲水平毫不引人注目。然而,在某個關卡,他操縱的角色突然跳到了游戲界面的天花板上,這里暢通無阻,沒有設置任何游戲障礙,這為他節省了不少通關時間。當時,很多人都以為他在無意間觸發了新的游戲漏洞。然而,游戲官方卻怎么也找不出可能出錯的游戲代碼,遂懸賞1000美元,獎勵能夠重現這一操作的玩家。直到今天,這則懸賞令也無人揭榜。不過,有人從另一角度入手實現了這一效果——正常情況下,游戲角色所處高度的坐標表示為“11000101”,若把最后一位翻轉成“0”,就能讓游戲角色恰好處在界面中天花板的高度上。這種解釋目前被官方和玩家廣為接受,而導致坐標改變的始作俑者則很有可能是宇宙線。
雖然超級馬里奧游戲中飛上天花板的事件至今只發生過一次,但宇宙線造成的原件狀態變化其實并不少見。很多人都遭遇過電腦無端藍屏,事后卻找不出任何原因,這種情況就疑似宇宙線的“所作所為”。如今,芯片制造商開發出了許多方法來減少宇宙線的干擾,比如賦予內存條檢查和糾正錯誤的能力。然而,技術的進步并不能完全避免宇宙線的影響。

在飛機上比在地表遭受宇宙線攻擊的可能性更大

科學家建立的宇宙線實驗裝置
2008 年10 月7 日,一架空客A330 從新加坡起飛。僅僅過了三個小時,飛機就突然開始壓下機頭,在20 秒內下墜了近200 米。期間,機內人員承受了巨大的加速度,有的人甚至被甩出了座位。最終,飛機在沿途的機場緊急降落。后來的調查顯示,故障似乎出現在記錄飛行數據的器件上。當時,計算機疑似誤將器件中的高度數據當成迎角數據,進而認為飛機在失速,于是降下機頭。調查人員分析了軟件漏洞、軟件損壞、硬件故障和物理環境等一系列可能的原因,但這些原因都一一被排除了。這起事件的禍首也許是高空中的一個高能帶電宇宙粒子,它擊中了CPU 模塊里的集成電路,隨后消失無蹤。
上述事件中的空客A330 是在1992 年建造的,建造當初并沒有具體的規定要求設計飛機時必須考慮宇宙線的影響。但在航天器領域,這類規定從一開始就已制定。航天器一般配備多臺電腦同時控制飛行系統,如果其中一臺電腦出現故障,另外幾臺就會接管它的工作。航天領域之所以如此重視這類規定,是因為太空中的宇宙線密度和能量都遠大于地球表面。在美國一次為期五天的航天任務中,陸續出現了161 次元件狀態改變的情況。太空中宇宙線的能量之大,甚至能憑肉眼卻“看”到。據一名航天員親述,有好幾次他已經上床閉眼,準備進入夢鄉,但片刻之后緊閉的眼睛卻“看”見了閃光。這種閃光是質量較大的宇宙粒子穿過眼球或感光神經導致的。