1993年,CPU 巨頭Intel推出了Pentium處理器。
新的品牌順利地擺脫了AMD等公司對286,386,486等數字系列的品牌“抄襲”,樹立了全新的領先者的形象。
再加上90年代初斥巨資成功推進的Intel Inside計劃, Intel 成功地從一家主要向電腦制造商供貨的公司,轉變成一家直接面向消費者的品牌。
不知道哪位天才把Pentium翻譯成霸氣的“奔騰”,真是驚豔全場的神來之筆。
新産品,新品牌,Intel 可謂意氣風發,準備一統天下。
但誰也沒想到的是,這個被寄予厚望的CPU内部居然隐藏着一個Bug!
1Bug被發現的過程也頗為傳奇,我們得從數學上的一個概念說起。
早在希臘時代,歐幾裡得就已經證明質數有無窮多個,并且數字越大,質數分布得越稀疏。
神奇的是,盡管分布得很稀疏,但隻要出現一個質數,就可以在附近找到另外一個, 例如41 和 43、101 和 103、10007 和 10009,他們之間相差都是2。
數學家給這些相差為2的連續質數起了一個名稱:孿生質數。
1919年,挪威數學家 Viggo Brun證明了一件有趣的事情,就算有無窮多的孿生質數,它們倒數的和會收斂于一個常數,這個常數被稱為“布朗常數”。
但是讓數學家頭疼的是:他們不知道這個布朗常數是不是無理數。
随着計算機的出現,有些人就想到一個招數:用計算機強大的算力,暴力求解。
美國 Lynchburg College 的數學教授Thomas Nicely就是其中的一員,他的實驗室恰巧裝備了新的奔騰計算機。
嚴謹的Nicely為了防止算錯,用了兩種算法做雙保險,如果答案不同,肯定是某個地方出了問題。
Nicely滿懷希望地開始了計算,可是結果讓他失望:兩種算法的結果真的不一樣!
深入研究以後,Nicely發現:824 633 702 441和824 633 702 443這兩個孿生質數,它們的倒數的小數點後的第10位被算錯了!
Nicely換了一台老舊的486電腦來計算,答案算對了。
他再用奔騰電腦來重新計算,錯誤重現。
到底是自己的程序寫錯了?還是電腦的問題?
Nicely開始做排除法,排除自己代碼的錯誤,Borland編譯器的錯誤,芯片組的錯誤,花了整整4個月的時間,終于找到了Bug的起源地:奔騰CPU。
21994年10月24号,Nicely打電話給Intel的技術支持部門,告知他們這個問題,Intel說幾天内就會有回複,但是從此杳無音信。
原因很簡單,Intel早在1994年6月就知道了這個問題:浮點除法運算(FDIV)出錯。
奔騰CPU的FDIV引入了一種全新的、快速的實現方法,使用了一個2048項的硬件查找表,但是由于意外,有5個值沒有被正确地設置,他們本應該是2,但是卻設置成了0。
這個Bug隻有在高精度計算的時候才會被觸發,普通用戶很難碰到,Byte雜志估計,出錯的概率是90億分之一。
既然影響不大,Intel的選擇是:隐瞞,悄悄修複,不公布任何細節。
畢竟已經售出幾百萬片CPU了,大規模召回損失太大。
又不是不能用!
3收不到回音的Nicely很不爽,10月30号,他開始給一些IT著名人士和雜志發郵件,包括Byte雜志,PC Week,InfoWorld,PC Magazine。
這件事情很快在網絡上發酵,一大批牛人開始了問題定位的接力賽:
第一棒選手是上面提到的Nicely。
第二棒則是挪威的Terje Mathis,他很快确認了Nicely的問題,并且寫了一個簡單的彙編測試程序,發到了comp.sys.intel新聞組中(沒錯,那時候别說社交網絡了,就連BBS還不流行)
第三棒是德國的Andreas Kaiser ,他找到了24個數字,它們的倒數在奔騰CPU隻能得到單精度的結果。
第四棒是一位設計FPU(floating-point-unit)的專業人士,加州Vitesse半導體設計師Tim Coe。
他根據24個數字的線索,推測出奔騰CPU采用了基數為 4 的 SRT 算法,每個時鐘周期可以生成兩位的商,使得速度比原來快兩倍。
事實也确實如此,内部專業人士的确厲害。
到了第五棒,一個超級大牛出現了,MATLAB之父:Cleve Moler
Moler總結了之前的數據,找到了Bug的規律。
可見犯了錯誤以後,想捂是捂不住的,你越想捂,這世界上越有人要把你扒個底朝天。
但是到目前為止,Intel奔騰這個硬件Bug還主要在科技圈中轉悠,破圈還需要等待一個重要時刻。
41994年11月24号,JPL(噴氣推進實驗室,錢學森是重要創始人)有兩名工程師得知了這個Bug,建議實驗室停購奔騰電腦。
CNN的記者史蒂夫·楊聽說了JPL的事情,嗅覺靈敏的他立刻聯系Moler,進行采訪,當天晚上JPL的新聞和Moler的采訪就在電視台播放,紐約時報、波士頓環球報等大肆報道,文章鋪天蓋地而來。
奔騰CPU這個本來很難出現的Bug一下子成為街頭巷尾的熱議話題。
在媒體的重壓之下,Intel終于承認了浮點計算的漏洞,但依然嘴硬,它聲稱并不嚴重,并且隻給那些能證明自己受到影響的用戶更換CPU。
這種想蒙混過關的處理态度引發衆怒,動搖了消費者對Intel CPU的信心。
其他廠商也順時而動,IBM暫停銷售裝有Intel CPU的個人電腦,導緻Intel股票大幅下跌。
1994年12月,撐不住的Intel終于宣布:召回所有有缺陷的處理器。
這也是曆史上第一次全面召回計算機芯片。
Intel為此付出的代價是:4.75億美元,名譽的損失更是難以估量。
5故事到此并沒有結束。
照理說硬件出了問題,無法修改,隻能替換。
但是不要忘了我們剛提到的那一群天才,MATLAB之父Cleve Moler ,Tim Coe,阿貢國家實驗室的 Peter Tang 以及來英特爾的幾位工程師,他們通力合作,在12月5号居然開發出了一個非常巧妙的軟件修複辦法。
細節這裡就不贅述了,大概是:在特定情況下,将被除數和除數都乘以15/16,就可以進入安全狀态。
這個修複辦法被發到新聞組中,讓所有人免費使用。
精明的Cleve Moler讓公司發布了一個可以檢測和糾正除法錯誤的MATLAB版本,并且立刻發了一個新聞稿《MathWorks修複了Intel奔騰浮點數Bug》。
就在奔騰的Bug鬧得沸沸揚揚,全國知的時候,新聞稿出現在了美國各大媒體的傳真機上。
Cleve Moler成功地實施了一次完美營銷,這一年,他的公司MathWorks隻是一家不到250人的小公司,随後便走上了快車道,成為這一領域的巨頭。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!