別惹怒數學家!25 年前,「布朗常數」讓英特爾賠 145 億台幣

有一種人你絕對惹不起,那就是「數學家」;25 年前(1994 年),有個熱血的數學家,用英特爾的處理器計算布朗常數,意外發現處理器的 bug,讓英特爾賠了 4.75 億美金,換算成新台幣的話,大概是 145 億。

一個數學家的研究就讓科技巨頭賠 145 億,真的是太瘋狂了!而且它還成了程式界的專有名詞「Pentium FDIV bug」。在帶你看這個故事前,先幫你科普:什麼是布朗常數?

布朗常數:孿生質數的倒數和,會趨近於一個常數

早在希臘時代,歐幾里得就已經證明質數有無限多個;後代的數學家也發現,從 1 開始算,數字愈大,質數分布得愈稀疏;但很奇特的是,儘管分布得再稀疏,但只要出現一個質數,就可以在它附近找到另一個質數,例如 41 和 43、101 和 103、10007 和 10009,他們之間都相差 2 。

數學家將相差 2 的連續質數稱為「孿生質數」。

到了 1919 年,挪威數學家布朗(Viggo Brun)證明,所有孿生質數的倒數和會收斂於一個常數。這個數稱為布朗常數(Brun’s constant):

但布朗常數還有問題,就是數學家無法證明它是不是無理數,因為數學家無法證明孿生質數的數量是有限還是無限的。孿生質數的數量問題早已困擾數學家上千年,被稱為「孿生質數猜想」,是數學界的經典難題。

然而電腦出現之後,數學家就可以採用「暴力法」,用電腦硬算布朗常數,試圖解決孿生質數猜想難題。(只不過到現在也還是沒有解決)

數學家用英特爾的處理器計算布朗常數,意外發現 bug

1994 年,英特爾推出了 Pentium 處理器,這是當時最先進的處理器之一,當然就會有熱血的數學家,使用 Pentium 處理器瘋狂計算布朗常數。

英特爾 Pentium 系列處理器

那個熱血的數學家是 Thomas Nicely,是美國 Lynchburg College 的教授。

為了降低算錯的風險,Nicely 同時使用兩種方式計算布朗常數,若算出來的答案不同,很可能就是設備有問題。而實際計算之後,Nicely 發現兩種方式算出來的布朗常數真的差很多。

debug 之後,Nicely 發現問題出在電腦把這兩個數字:824,633,702,441 和 824,633,702,443 的倒數的小數點後第 10 位算錯了。

為了確認這個問題是出在硬體還是軟體,Nicely 用英特爾的舊版處理器 486 計算,發現 486 算出來的數字是對的;接著 Nicely 又用 Pentium 重新計算,同樣的問題再次出現。這也就是說,問題出在 Pentium 處理器。

英特爾召回 Pentium 處理器,損失高達 145 億台幣

Nicely 估算,Pentium 大概會把 10 億個倒數裡的 1 個算錯,而要計算布朗常數,的確會算超過 10 億個倒數,所以難免出錯。但 Nicely 聯繫英特爾,告知 Pentium 處理器的問題,卻遭到冷淡的對待。

於是 Nicely 就寫信,將這件事告訴他的朋友,接著就被 CNN 等各大媒體報導,英特爾不得不將市場上的 Pentium 處理器召回。當時英特爾已經銷售超過 100 萬台裝有 Pentium 處理器的電腦,因為召回,英特爾損失了 4.75 億美金(約新台幣  145 億元)。

後來英特爾承認,生產 Pentium 的時候就已經發現問題了,但英特爾認為 90 億個用戶只會有 1 個受影響,所以沒有召回。這個問題後來被稱為 Pentium FDIV bug,是程式界著名的 bug,也是英特爾的一段黑歷史。

一道上千年的數學難題,一個試圖解題的數學家,讓一個科技巨頭賠 145 億台幣。但真正讓英特爾賠的,不是數學難題,也不是數學家,而是他們面對問題的態度。世界上本來就沒有完美的程式與晶片,但使用者熱心指出錯誤,廠商是否有意願傾聽改正?

當時英特爾不願意聽,不只損失 145 億元,還在程式界留下了臭名:Pentium FDIV bug。這個名詞,會在教科書裡流傳著……

軟體、硬體工程師別驚!掌握最新電子製造、電動車、IT/OT 產業趨勢讓你工作不出錯>>報名 《 2022 智慧大工廠論壇

參考資料來源:
1. 《SciHi Blog》:〈The Pentium FDIV Bug
2. 《維基百科》:〈Brun’s theorem
3. 《把科學帶回家》:〈这个神秘的数,让芯片巨头因特尔赔了5亿美金,还留下了惨痛的黑历史
(本文提供合作夥伴轉載。首圖來源:Wikimedia Commons

延伸閱讀

台灣的「小」是競爭優勢!英特爾:人才網路緊密,解決問題效率超高
【全球 15 大半導體廠】台積電重登第 3、聯發科首進榜,英特爾奪回龍頭寶座
【模擬人腦】英特爾植入 800 萬個神經元到電腦,效率是普通 CPU 的一萬倍