編譯 滕慧月
計(jì)票電腦突然出錯(cuò)、普通玩家突然表現(xiàn)非凡、飛機(jī)突然下墜……原因竟然都可能與它有關(guān)。
計(jì)算機(jī)內(nèi)部的數(shù)制是二進(jìn)制
2003 年5 月18 日,比利時(shí)舉行四年一度的聯(lián)邦議會(huì)選舉。在所有選民中,有近一半的人領(lǐng)到了投票專(zhuān)用磁卡。他們將自己的選擇錄入磁卡,計(jì)票人員再用計(jì)算機(jī)讀取每張磁卡中的數(shù)據(jù)。當(dāng)日深夜,工作人員在完成某地區(qū)的選票統(tǒng)計(jì)后,發(fā)現(xiàn)結(jié)果不太對(duì)勁——維得佛加是一位沒(méi)什么名氣的候選人,而她的得票數(shù)卻超過(guò)了理論上限。于是工作人員取出所有磁卡,一張張重新計(jì)票。在這一次的計(jì)票結(jié)果中,維得佛加比之前少了4096 票。到底是哪里出了問(wèn)題呢?
為了找到計(jì)票故障的源頭,工作人員請(qǐng)來(lái)計(jì)算機(jī)專(zhuān)家,對(duì)硬件和軟件做了大量測(cè)試,卻仍然毫無(wú)頭緒,甚至無(wú)法重現(xiàn)和第一次相同的計(jì)票結(jié)果。就在大家百思不得其解的時(shí)候,有人從4096 這個(gè)數(shù)字中發(fā)現(xiàn)了疑點(diǎn)。
地球時(shí)刻受到宇宙線(xiàn)的攻擊
眾所周知,計(jì)算機(jī)內(nèi)部的數(shù)制是二進(jìn)制,元件接通代表“1”,斷開(kāi)則代表“0”。例如,某處有三個(gè)元件,它們分別代表從高到低的三位數(shù),其在電路中的狀態(tài)分別是接通、斷開(kāi)、斷開(kāi)。那么,此時(shí)這三個(gè)元件所反映的二進(jìn)制數(shù)就是100,轉(zhuǎn)換成十進(jìn)制數(shù)則是4(1×22+0×21+0×20)。計(jì)算機(jī)的運(yùn)算結(jié)果之所以可靠,是因?yàn)榫w管的狀態(tài)只有在接受人的操作后才會(huì)轉(zhuǎn)變。
4096 這個(gè)數(shù)的特殊之處在于,它恰好是2 的12 次方!這意味著,維得佛加額外獲得4096 票很可能是因?yàn)榈?3 位元件狀態(tài)意外地由“0”變?yōu)榱恕?”。如果這次計(jì)錯(cuò)票的事件真的是由元件狀態(tài)變化導(dǎo)致的,那么是“誰(shuí)”進(jìn)行了這項(xiàng)操作呢?更奇怪的是,比利時(shí)官方在調(diào)查時(shí)發(fā)現(xiàn),英特爾公司早在幾十年前就出具過(guò)類(lèi)似問(wèn)題的報(bào)告。
1978 年,英特爾公司報(bào)告稱(chēng),其研發(fā)的一款半導(dǎo)體存儲(chǔ)器上的“1”有時(shí)會(huì)莫名其妙地自動(dòng)歸“0”。通過(guò)調(diào)查,英特爾公司將問(wèn)題源頭鎖定在用于封裝芯片的半導(dǎo)體陶瓷上。20 世紀(jì)70 年代,在熱火朝天的半導(dǎo)體市場(chǎng)環(huán)境中,在美國(guó)科羅拉多州的格林河沿岸也建立起一家半導(dǎo)體制造廠(chǎng),該廠(chǎng)在成立不久后便成了英特爾公司的供應(yīng)商。然而,該廠(chǎng)錯(cuò)誤地將廠(chǎng)址定在了一家鈾礦廠(chǎng)的下游。放射性原子順著河流來(lái)到制造半導(dǎo)體的流水線(xiàn)上,最終混入英特爾公司的產(chǎn)品中。調(diào)查這一事件的科學(xué)家指出,即便半導(dǎo)體陶瓷中只存在極微量的鈾原子和釷原子,也能夠發(fā)射出足量的高能粒子影響元件的工作狀態(tài)。
英特爾事件發(fā)生后,芯片制造行業(yè)將嚴(yán)控放射性物質(zhì)污染列為生產(chǎn)的重中之重。因此,比利時(shí)大選發(fā)生計(jì)票錯(cuò)誤不太可能是因?yàn)橛?jì)算機(jī)元件本身含有放射性原子。也就是說(shuō),罪魁禍?zhǔn)缀芸赡苁黔h(huán)境中的輻射。
當(dāng)時(shí),人們已經(jīng)發(fā)現(xiàn)了宇宙線(xiàn)的存在。宇宙線(xiàn)是來(lái)自外太空的高能粒子,有的來(lái)自太陽(yáng),有的則來(lái)自更遙遠(yuǎn)的宇宙空間,甚至黑洞。這些宇宙粒子可不好惹,原因在于:首先,它們帶電,這意味著它們可能會(huì)攻擊我們的DNA,甚至導(dǎo)致不可控制的復(fù)制錯(cuò)誤,并最終引發(fā)癌癥;其次,它們速度極快,可以四處亂竄,無(wú)差別攻擊每一個(gè)物體?;谝陨险J(rèn)識(shí),比利時(shí)計(jì)票事件的調(diào)查人員懷疑正是某個(gè)宇宙粒子擊中了計(jì)票計(jì)算機(jī)中的元件,讓第13位數(shù)從“0”翻轉(zhuǎn)為“1”,導(dǎo)致計(jì)算機(jī)多計(jì)了4096 張選票。
游戲角色跳到了游戲界面的天花板上
有了比利時(shí)計(jì)票事件的先例,人們陸續(xù)將很多難以解釋的計(jì)算機(jī)狀態(tài)突變事件歸因于宇宙線(xiàn)。
2013 年的一天,一位游戲玩家正在接受超級(jí)馬里奧游戲官方發(fā)起的快速通關(guān)挑戰(zhàn)。他操作平常,游戲水平毫不引人注目。然而,在某個(gè)關(guān)卡,他操縱的角色突然跳到了游戲界面的天花板上,這里暢通無(wú)阻,沒(méi)有設(shè)置任何游戲障礙,這為他節(jié)省了不少通關(guān)時(shí)間。當(dāng)時(shí),很多人都以為他在無(wú)意間觸發(fā)了新的游戲漏洞。然而,游戲官方卻怎么也找不出可能出錯(cuò)的游戲代碼,遂懸賞1000美元,獎(jiǎng)勵(lì)能夠重現(xiàn)這一操作的玩家。直到今天,這則懸賞令也無(wú)人揭榜。不過(guò),有人從另一角度入手實(shí)現(xiàn)了這一效果——正常情況下,游戲角色所處高度的坐標(biāo)表示為“11000101”,若把最后一位翻轉(zhuǎn)成“0”,就能讓游戲角色恰好處在界面中天花板的高度上。這種解釋目前被官方和玩家廣為接受,而導(dǎo)致坐標(biāo)改變的始作俑者則很有可能是宇宙線(xiàn)。
雖然超級(jí)馬里奧游戲中飛上天花板的事件至今只發(fā)生過(guò)一次,但宇宙線(xiàn)造成的原件狀態(tài)變化其實(shí)并不少見(jiàn)。很多人都遭遇過(guò)電腦無(wú)端藍(lán)屏,事后卻找不出任何原因,這種情況就疑似宇宙線(xiàn)的“所作所為”。如今,芯片制造商開(kāi)發(fā)出了許多方法來(lái)減少宇宙線(xiàn)的干擾,比如賦予內(nèi)存條檢查和糾正錯(cuò)誤的能力。然而,技術(shù)的進(jìn)步并不能完全避免宇宙線(xiàn)的影響。
在飛機(jī)上比在地表遭受宇宙線(xiàn)攻擊的可能性更大
科學(xué)家建立的宇宙線(xiàn)實(shí)驗(yàn)裝置
2008 年10 月7 日,一架空客A330 從新加坡起飛。僅僅過(guò)了三個(gè)小時(shí),飛機(jī)就突然開(kāi)始?jí)合聶C(jī)頭,在20 秒內(nèi)下墜了近200 米。期間,機(jī)內(nèi)人員承受了巨大的加速度,有的人甚至被甩出了座位。最終,飛機(jī)在沿途的機(jī)場(chǎng)緊急降落。后來(lái)的調(diào)查顯示,故障似乎出現(xiàn)在記錄飛行數(shù)據(jù)的器件上。當(dāng)時(shí),計(jì)算機(jī)疑似誤將器件中的高度數(shù)據(jù)當(dāng)成迎角數(shù)據(jù),進(jìn)而認(rèn)為飛機(jī)在失速,于是降下機(jī)頭。調(diào)查人員分析了軟件漏洞、軟件損壞、硬件故障和物理環(huán)境等一系列可能的原因,但這些原因都一一被排除了。這起事件的禍?zhǔn)滓苍S是高空中的一個(gè)高能帶電宇宙粒子,它擊中了CPU 模塊里的集成電路,隨后消失無(wú)蹤。
上述事件中的空客A330 是在1992 年建造的,建造當(dāng)初并沒(méi)有具體的規(guī)定要求設(shè)計(jì)飛機(jī)時(shí)必須考慮宇宙線(xiàn)的影響。但在航天器領(lǐng)域,這類(lèi)規(guī)定從一開(kāi)始就已制定。航天器一般配備多臺(tái)電腦同時(shí)控制飛行系統(tǒng),如果其中一臺(tái)電腦出現(xiàn)故障,另外幾臺(tái)就會(huì)接管它的工作。航天領(lǐng)域之所以如此重視這類(lèi)規(guī)定,是因?yàn)樘罩械挠钪婢€(xiàn)密度和能量都遠(yuǎn)大于地球表面。在美國(guó)一次為期五天的航天任務(wù)中,陸續(xù)出現(xiàn)了161 次元件狀態(tài)改變的情況。太空中宇宙線(xiàn)的能量之大,甚至能憑肉眼卻“看”到。據(jù)一名航天員親述,有好幾次他已經(jīng)上床閉眼,準(zhǔn)備進(jìn)入夢(mèng)鄉(xiāng),但片刻之后緊閉的眼睛卻“看”見(jiàn)了閃光。這種閃光是質(zhì)量較大的宇宙粒子穿過(guò)眼球或感光神經(jīng)導(dǎo)致的。