新聞 > 科教 > 正文

史上最貴計算機bug 如何讓英特爾損失數十億刀

在過去的幾個世紀,英特爾一直是世界上最大且最具影響力的處理器晶片製造商不過追溯到20世紀90年代,英特爾竟因為浮點故障而損失數十億美元。一位數學家發現了一個威脅英特爾整個處理器線程的方程式,而這恰恰是在計算成為主流之前。

英特爾的奔騰處理器問題像是由錯誤的人在海里撈針頭造成的

接下來讓我們回顧下浮點故障,這個使奔騰變成了一個笑柄的故障。這篇報導最先出現在《Tedium》上。

1919

挪威數學家Viggo Brun證明了雙質數(相差為2的兩個質數,如3和5)的倒數值之和收斂為有限值,即稱為布倫常數。根據前林奇堡大學數學系教授Thomas Nicely的說法,通過計算所有雙質數到10的14次冪時,常數約為1.902160578。Nicely在我們的故事中扮演了一個重要角色。

為了找到這個故事的根源,讓我們來玩一個邏輯練習:

There is somethIng wrong with this sentence.

當輸入上面的句子時,犯了什麼錯誤嗎?明顯嗎?會影響你的理解嗎?

你可能注意到了:在"somethIng"中的大寫字母"I"。這或許是我們生活中會犯的錯誤。現在,想像一下,如果這是這整個網站上唯一的拼寫或語法錯誤(雖然並不是這樣)。也許,你複製了這個網站幾次,糾正了"I",所以在這個詞上它沒有大寫。但是原網站的版本上,該錯誤仍然存在。現在想像一下,如果數以百萬計的人搜索我在網站上分享的每一個短語,比較多的人發現了這一個錯誤,而且這些人中有一個是有影響力的編輯。

雖然這個錯誤非常微小,但是足以威脅一個作家的聲譽。這與1994年10月Nicely拿到新的奔騰處理器後,不知不覺中發現的錯誤是相同的情況。在尋找布倫常數時,他使用英特爾處理器及其浮點功能,意識到處理器給出的答案有點偏差。

THOMAS NICELY,如1984的圖所示。圖片:林奇堡大學

對於絕大多數人來說,這一個小錯誤是不會被注意到的。畢竟,奔騰的這一錯誤不是世界末日。但是對於Nicely來說是一個例外,因為這破壞了他的研究,且在他的等式中創建了很多問題。在1994年的CNN的一次敘述Usenet的採訪中,Nicely講述了這個傳奇的故事:

我一直從事純數學方面的研究;這涉及到雙質數的運算,並且在計算過程中會執行很長時間的除法運算。我發現一個異常的點,花費了數月去追蹤它。事實證明了源頭是最不可能被懷疑的對象:晶片。

Nicely手中的60 MHz奔騰晶片是罪魁禍首,他花了幾個月的時間才正確診斷出該問題要歸結為於CPU。對於Nicely和其他數學家來說,去解決這樣的問題是一個讓人非常頭痛的事情。但即使是像這樣一個簡單的錯誤,也足以損害備受矚目的奔騰晶片在極其技術性的數學領域的聲譽。

1994年10月30日,Nicely在CompuServe上報導了這個錯誤之後,它成為第一批真正通過網際網路傳播的故事之一。僅僅幾天後,有人在 Usenet中 comp.sys.intel組上發布了關於這個問題的消息,確認了浮點錯誤。從那開始,這篇報導被工程行業出版物EE Times在新聞中報導後,這個故事便傳遍各地。挪威程式設計師Terje Mathisen寫道:「在我看來,在60~90MHz型號的奔騰只是將浮點分割進行到單精度。」

從此,這個故事開始引起工程和數學空間的注意。但真正的問題可能是英特爾在應對此問題時犯了一個更大的錯誤,一個商業性的錯誤。

到11月底和12月初,這個故事開始引起大家的注意,爆炸性地成為1994年最大的技術故事之一。這一年,網際網路開始第一次進入主流領域,雖然以稍微有些尷尬的方式。但值得注意的是,雖然這一問題出在晶片設計錯誤,但真正的問題出在因特爾處理。簡單來說,就是英特爾最好的用戶沒有得到應有的尊重。

1913

數學家émileBorel首次提出無限猴子定理的那一年——這個著名的理論認為,如果一百萬隻猴子每天用一百萬台打字機打字10個小時,他們最終會寫出一份偉大的文學作品。在許多意義上,Nicely偶然發現的問題是學術領域上同樣的事情。

英特爾奔騰晶片

這一故事對英特爾照成影響的真正原因歸結於英特爾的反應

對於英特爾這一問題不在於問題本身,而在於如何處理這一問題的出現。回到之前提到的案例,如果你收到一封來自一位非常牛的編輯的電子郵件,告訴你在整個網站中不小心誤寫了一個大寫字母,你會有什麼反應?

可能你會悄悄地找到這一錯誤,且修正它。但英特爾沒有做到這一點。就像報紙上的修正一樣,晶片中的錯誤基本上是決定性的。(嗯,除非你使用類似可編程數組的東西。)他們能夠做到的最好方式就是在將來的版本中消除這一錯誤。雖然軟體可以在一定程度上緩解這一問題,但如果晶片出現問題,也無法完全修正它,除非替換晶片。說白了,浮點誤差雖然糟糕,但宏觀上看是微小的。

這就像你擁有一台計算器,在你使用計算器的整段時間裡,它都會給你一個錯誤答案。根據現代處理器對比,最近的處理器都受到Meltdown和Spectre的困擾,(在過去20年中發布的大多數Intel,Power Architecture和ARM晶片的設計中都包含了前者),這些缺陷總體上的破壞性非常大。

它們不是理論上的問題,它們是基本的安全風險。修復這兩個缺陷所發現問題的解決方案意味著硬體和軟體製造商必須關閉處理器的一些功能,從而導致人們的計算機運行速度變慢。在某些使用(如雲端運算)中,這樣的更改實際上意味著使用同一處理器將花費您更多的錢和時間來執行相同的工作。除了重複性損害之外,英特爾仍然試圖修復這些缺陷。

那麼又該如何看待浮點錯誤呢?發現它的學者Thomas Nicely認為,雖然這對他來說的確是個問題,但是當時的計算機處理器非常複雜。這意味著如果他沒有特意探索的話,這個問題可能不會被人發現。「目前這一代的微型處理器已經變得非常複雜,已經不可能完全調試一個處理器了。」他在1995年初告訴《PC雜誌》。但英特爾當然可以把事情處理得更好。正如數學家和MATLAB開發人員Cleve Moler在2013年所回憶的那樣,英特爾最初給客戶的回應有很多需要改進的地方。

按照Moler的說法,以下是客戶支持機構發給客戶的內容:

最近網上有很多關於奔騰處理器浮點缺陷的交流。對於大多數的用戶來說,這不是問題。

事情是這樣的,英特爾檢測到奔騰處理器的除法運算精度存在一個微妙的缺陷。對於極少數情況(九十億次中出現一回),結果的精度會降低。英特爾在對奔騰處理器進行持續測試的過程中,經過幾萬億次浮點運算後,發現了這個細微的缺陷。英特爾立即對使用浮點單元的最嚴格的技術應用進行了測試,歷時數月,我們一直未能發現任何錯誤。事實上,在經過大量的測試和數百萬個基於奔騰處理器的系統的出貨後,據我們所知,只有一個影響用戶的報告實例。在這個案例中,一位數學家在做質數和倒數的理論分析時,看到小數點右邊第9位的精度降低。

事實上,廣泛的工程測試表明,一個普通的電子表格用戶在每27000年的使用過程中可能會遇到一次使得精度降低的細微缺陷。基於這些經驗觀察和我們的大量測試,使用常規軟體的用戶不會受到影響。如果你有這種質數生成的精度問題或其他複雜的數學問題,請撥打1800628-8686(國際)或者916356-3551。如果沒有的話,您的基於奔騰處理器的系統不會遇到任何問題。在計算機的使用過程中,一旦出現這樣的情況,英特爾公司將與客戶共同解決。

正如我在上面指出的,英特爾非常容易遇到百萬猴子問題。這段話所強調的問題是,英特爾在Nicely伸出援手之前就知道了這件事,並且有點放任自流。這之所以有問題,部分原因是焦點從關心這個問題的技術群體轉移到了不關心它的普通消費者身上。英特爾試圖把所有的壓力放在消費者身上,並在當年推出了英特爾Inside品牌活動,以及奔騰晶片的消費者友好(和商標友好)品牌。但在試圖贏得普通觀眾的時候,英特爾似乎暗示它不再認真對待現有的用戶群。

對於那些專注於技術應用程式的人來說,浮點除法的情況造成了不確定性,而英特爾的回應不盡如人意。在1994年《華爾街日報》的一篇文章中,噴氣推進實驗室研究員戴夫·貝爾(Dave Bell)明確指出,科學界可能會因為對晶片的困擾停止使用奔騰。

「有很多人做研究,必須站在計算機模擬的基礎上發表結果,」貝爾說。「也許現在的一個問題會是,『它是不是在有問題的晶片上做出來的『?」

已故英特爾執行長安迪·格羅夫(Andy Grove),他於2016年去世。

最終在1994年底的時候,英特爾CEO安迪-格羅夫(Andy Grove)在社交媒體comp.sys.intel上發布了一篇回應。這件事情並不順利,尤其是對於像格羅夫這樣的所謂技術型人物來說。起初,英特爾的理察·維特(Richard Wirt)發布了這個帖子,導致人們指責這個回應是冒牌的。然後,格羅夫又以他個人的名義發了出來,強調他很重視這個問題,並指出這個問題是在處理器最初發布一年多後,他們這邊才出現的。「我們將晶片的推出時間推遲了幾個月,以便有更多的時間來檢查晶片和系統」他寫道,同時強調沒有任何晶片是完美的,「為此,我們也與許多軟體公司進行了廣泛的合作。」作為回應,它擺出了比激怒眾多技術用戶的客服信息更好的姿態。但如果你看一下這個帖子,你會發現格羅夫還是有很多表達憤怒的帖子要處理。

「這真的讓我很生氣,我花了很多錢買這個晶片,」一個回復者寫道,「但是,因為我不為一些可能會批發奔騰產品的大公司做大量複雜的數學工作,所以我什麼都不是。」這種動態可能跟你今天在Twitter上看到的壞話差不多。大約在1994年感恩節過後,格羅夫的消息就在網上傳開了,主串流媒體開始大肆報導這件事,公司的股票也受到了很大的衝擊。

這個時機在很多方面都很糟糕:1994年是很多家庭第一次將多媒體、網際網路功能的家用電腦帶回家的一年,很多家庭都採用了奔騰晶片。這些產品已經明確地標記為普通消費者可以購買的東西。而格羅夫在黑色星期五的第二天,不得不設法緩解技術用戶和學者們的擔憂。而主串流媒體實際上向公眾淡化了這個晶片的傳奇色彩。一些人則利用這種情況,比如IBM公司當時正在向公眾發布首批PowerPC機器,它從其設備中移除了奔騰晶片,並公開宣稱,普通消費者每24天就會遇到錯誤,而不是27000年。也許真相是在這中間的某個時間?這對英特爾來說並不是什麼好時候。公關危機最終看到了它不可避免的結局。在聖誕節前夕,英特爾看到了失敗的徵兆,並召回了這些晶片。布倫的常數扣動了扳機。

4.75億美元

英特爾召回奔騰晶片必須重新計算有關的註銷費用,畢竟任何想要更換新處理器的消費者都可以得到新版本的處理器。儘管這筆費用產生了,但在1994年的節日期間,英特爾看到其486和奔騰處理器的銷售量在需求中飛速增長。也許額外的新聞是件好事吧。「壞公司被危機摧毀;好公司在危機中生存;偉大的公司因危機而改進。」

對於奔騰浮點除法缺陷的傳奇時間,你會怎麼評價?英特爾找到了一個很好的方法,把這次危機變成了一種重要的學習時刻。這突出表現在該公司決定將臭名昭著的破損晶片轉換成關鍵的一環。其中,格魯夫的一句話被引用,也就是時刻提醒員工他們並不完美,他們需要從錯誤中學習。

即使有缺陷,但奔騰處理器也成為90年代發布的最重要的技術之一,將CPU在計算機中從一個單純的藏在盒子裡的組件升級為一個家喻戶曉的名字,成功地實現了目標。而且可以這樣說,雖然肯定有一些技術性較強的用戶感到了不快,但這個傳奇事件卻提升了公司在普通計算用戶中的形象,這也是公司強調品牌建設所要達到的目的。值得一提的是,這個傳奇事件實際上讓一個數學家出名了,這不是通常能做到的。

在那個讓英特爾損失了5億美元的致命方程之前,Thomas Nicely的成名之作是一款預測足球范特西的棋牌遊戲。他承認自己沒有預見到這一點。「數學家一般都有非常私密的生活,」他在醜聞高峰期接受美聯社採訪時說,「我覺得看到自己的名字出現在印刷品上有點尷尬。」

去年去世的Nicely被同行視為傳奇人物,在2000年退休前,他在林奇堡大學工作了大約30年。

或許醜聞的副作用之一就是曾經一度改變了他的生活吧。他將布倫常數的精確度再增加了一些。

責任編輯: 夏雨荷  來源:大數據文摘 轉載請註明作者、出處並保持完整。

本文網址:https://tw.aboluowang.com/2020/1008/1509599.html