[閒聊]幹古:Intel Pentium FDIV Bug

PC購物

標籤:閒聊
74561

上次Microcode那篇簡單的跟大家回顧了FDIV Bug的問題
今天看到Intel受訪的文章,有種熟悉的既視感,來跟大家幹個古
Intel出包是不太意外,現在電路、晶片設計的規模比以前大很多了
很多細節「人」沒注意到很正常,講這些不是要護航我個人也是受災戶,超頻用平台加上
主力工作站,我手上13~14th gen平台有很多組
講這個是因為Intel技術出包我能諒解,但在當年事件後公關處理居然還能那麼糟糕
目前Intel出過最大包的位置應該要讓給目前的事件了,規模看起來是這樣,實際商譽損失
和財務損失就不得而知了。

1. Bug的發現與背景
FDIV Bug是由University of Lynchburg(以前叫Lynchburg College)的數學系教授
Thomas Nicely在1994年進行prime(質數)相關研究時發現的,教授寫了一系列包含了
twin primes、prime triplet、prime quadruplet的程式碼,其中有計算Brun's
constant的程式(所有twin primes的倒數和會趨近一個constant),教授在計算Brun's
constant的時候發現不管怎麼算都結果都是錯誤的,研究是在6月進行的,一直到10月
底左右教授才排除其他bug發現是CPU的問題。
教授用的CPU是Pentium(P5),是當年世界上最先進的處理器之一,教授發現在計算
824,633,702,441和824,633,702,443
這兩個數字的倒數時,小數後10位會計算錯誤,為了確定是軟體還是硬體錯誤,他還使
用了前一代CPU i486進行計算,最後才確認是Pentium CPU的問題,並向Intel回報該
Bug

2. FDIV Bug的技術細節
Intel當年為了加速floating point除法的速度,使用了SRT algorithm取代了先前在
486上使用的shift-and-subtract algorithm,SRT在一個Clock cycle可以算出2 bits
的結果,後者只能算出一個,改用SRT algorithm也並不是錯誤的決定。
錯誤在哪裡呢? SRT algorithm使用了2048 cells的PLA(programmable logic array)來
implement,SRT的計算仰賴一張lookup table,這張lookup table要被填入PLA裡,其
中1066個cells應該填入-2、-1、0、+1、+2,原始的array在compile的時候出錯了5個
值應該要是+2但是變成了0,這個錯誤一路傳到到了蝕刻PLA進入chip的設備裡。

SRT的特性之一是recursive(遞迴),所以誤差會不斷累積,最糟的狀況會到第四有效位
數,大部分的錯誤只到第9、10有效位數而已。這邊給大家一個實例4,195,835除以3,14
5,727,正確答案是1.333820449136241002。
這兩個數字在運算的時候要轉換成hexadecimal(16進制),前者是0x4005FB,後者是
0x2FFFFF,0x4005FB的5會需要access前面提到錯誤的array cells,這導致結果是
1.333"739068902037589"

3. Intel的回應與處理
其實這個Bug在一般使用的情況下不太會遇到,統計是90億個長除法才會遇到一個錯誤
,而且也並不是所有的除法運算都會遇到這個bug,因此Intel在最初的回應中是「這
是個微不足道的錯誤,並不影響大多數的使用者,Intel願意向那些提出證據受到影響
的用戶更換CPU。」
10/24 教授向Intel報告
10/30 教授向學術界的其他人發了有關FDIV bug的報告,這個消息很快就透過網路傳開

11/7 該Bug首次出現在媒體上,發表在EE times上的一篇文章
11/22 被CNN報導,同時也被New York Times和the Boston Globe報導
12/20 Intel正式宣布召回所有有Bug的Pentium CPU
1995/1/17 Intel的年度報告中指出處理FDIV bug的成本是4.75億美元(應該相當於現在
的8.多億美元)

這件事件的影響很大,半導體業界使用formal verification的數量明顯增加
1996有一種針對SRT的技術問世,叫做"word-level model checking",Intel在開發
Pentium 4的時候用了STE等方式也發現了很多錯誤,這些沒被發現很可能是規模更大的
召回。但一直到2008年Intel才有架構使用了formal verification作為主要驗證方式
(Nehalem)。

這整件事件除了財務上的損失,公關處理得更是糟糕,Intel是禁止OEM和經銷商進行召
回的,理由是應該由end user決定該bug是否影響他們的使用。
John Romero(雷神之槌 Quake的開發者)曾經在一次的演講說他們當年也因為這個Bug花
費了許多時間在追蹤問題。
商業的部分IBM甚至宣布停賣Intel CPU的產品,當然IBM這個決策是有點爭議的(因為當
時IBM有PowerPC)。

回到一般消費者上,Intel一開始怎麼說呢? 「這件事情影響不大日常不可能受到影響
,除非你能證明你有被影響,才會更換你的CPU」,Intel的回應引起了不少業界人士的
反彈,到後來媒體和輿論開始發酵後,甚至平常用電腦都不會進行計算的人這類族群也
想採取行動,Intel才終於發現事情不對勁宣布全面召回,消費者對於Intel的信心明顯
是被動搖的。忘了寫補充一下,後續報導證明Intel在1994年6月就發現了問題,但選擇
不披露細節也不召回秘密修補,但最後還是被發現了。

相信看完的你也能明白為甚麼我會想起FDIV的事件,也回應我開頭所講,我很難相信Intel
這種公司在經歷過這種事件後還會犯一樣的公關錯誤。

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.165.47 (臺灣)※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1722102481.A.E84.html
wahaha991樓當年8億鎂(相對今日)解決 07/28 01:57
wahaha992樓現在如果全面召回 要不要花到80億... 07/28 01:58
wahaha993樓這次錯 坦白說intel現在的狀態 扛不起.. 07/28 01:58
autoupdate4樓筆電似乎沒這個問題!? 07/28 01:59
wahaha995樓查了一下 當年賠掉的是intel年淨利1/10? 07/28 02:03
wahaha996樓現在這賠下去不知道要多少錢 如果要賠掉 07/28 02:04
wahaha997樓1/3年淨利 那就非常痛了 07/28 02:04
wahaha998樓算錯 不到1/10... 07/28 02:06
現在還查的到當年的annual report,有興趣可以去查看看
KGSox9樓看來這間公司的本質就是傲慢 07/28 02:10
ekgs10樓悲劇的是即使用了形式化驗證還是做出有問題 07/28 02:13
ekgs11樓的東西 07/28 02:13
ekgs12樓AMD過去比較大包的應該就只有Phenom TLB bug 07/28 02:24
mrme94513樓推幹古,原po文章寫得挺不錯的 07/28 02:32
感謝
Cubelia14樓補充:後來Windows有提供偵測CPU型號 07/28 02:37
Cubelia15樓並可以選擇是否關閉FPU的功能 07/28 02:37
Cubelia16樓沒被回收的CPU反而成為收藏家的逸品 07/28 02:38
感謝補充,是的,當年有一系列的software patches,甚至連IEEE上都有一篇論文給出了 一種避免發生錯誤的algorithm
Clarkliu17樓可是20年前的主管早退休了 07/28 02:49
是沒錯,1994的CEO是Andrew Grove;但G叔當年也還在Intel,2001年就當上CTO了
a00000000018樓尼用當年角度看這就很微妙惹 07/28 03:20
a00000000019樓當年幾乎只有一種產品 07/28 03:20
a00000000020樓pc也好server也好都同一顆 07/28 03:21
a00000000021樓速度也沒有動態調節 07/28 03:21
a00000000022樓現在問題可以確定pc diy直接影響最大 07/28 03:22
a00000000023樓而這市場很小 最重要在筆電 07/28 03:22
a00000000024樓除非高階低功耗到商用全面大爆炸 07/28 03:23
a00000000025樓不然論危機還太早 07/28 03:23
確實寫文時忽略了當年的市場背景,規模最大這點我言之過早,但公關處理還是一樣糟糕就 是了...
lordlpg26樓有Quake有推 07/28 03:44
bhmagic27樓文組理工史 07/28 04:48
huckerbying28樓拿這件事情來對比也沒錯啊,當初FVI 07/28 07:22
huckerbying29樓B是在各種媒體推波助瀾下讓這種少見 07/28 07:22
huckerbying30樓用戶錯誤放大到大家都要抵制 07/28 07:22
延伸閱讀
[閒聊] 關於SSD壽命與寫入量
[閒聊] 英特爾挺得過這次的風波嗎
[閒聊] 電腦新手想問一些問題
[閒聊] MSI的尋找失落的微星會員活動
[閒聊] ICY MB322SP + GRAUGEAR 3.5" HUB
[閒聊] Microcode科普
[閒聊] 其實Intel cpu還是不錯吧
[閒聊] 雷蛇新鍵盤機制在國外引起爭議