[閒聊]幹古:Intel Pentium FDIV Bug
看板PC_Shopping (個人電腦購買)作者benmei99 (K1NG0DyR)時間9月前 (2024/07/28 01:48)推噓60(61推 1噓 102→)留言164則, 61人參與討論串1/1
上次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
※ 編輯: benmei99 (36.227.165.47 臺灣), 07/28/2024 01:49:55
推
07/28 01:57,
9月前
, 1F
07/28 01:57, 1F
→
07/28 01:58,
9月前
, 2F
07/28 01:58, 2F
→
07/28 01:58,
9月前
, 3F
07/28 01:58, 3F
推
07/28 01:59,
9月前
, 4F
07/28 01:59, 4F
推
07/28 02:03,
9月前
, 5F
07/28 02:03, 5F
→
07/28 02:04,
9月前
, 6F
07/28 02:04, 6F
→
07/28 02:04,
9月前
, 7F
07/28 02:04, 7F
→
07/28 02:06,
9月前
, 8F
07/28 02:06, 8F
現在還查的到當年的annual report,有興趣可以去查看看
推
07/28 02:10,
9月前
, 9F
07/28 02:10, 9F
推
07/28 02:13,
9月前
, 10F
07/28 02:13, 10F
→
07/28 02:13,
9月前
, 11F
07/28 02:13, 11F
※ 編輯: benmei99 (36.227.165.47 臺灣), 07/28/2024 02:25:20
→
07/28 02:24,
9月前
, 12F
07/28 02:24, 12F
推
07/28 02:32,
9月前
, 13F
07/28 02:32, 13F
感謝
推
07/28 02:37,
9月前
, 14F
07/28 02:37, 14F
→
07/28 02:37,
9月前
, 15F
07/28 02:37, 15F
→
07/28 02:38,
9月前
, 16F
07/28 02:38, 16F
感謝補充,是的,當年有一系列的software patches,甚至連IEEE上都有一篇論文給出了
一種避免發生錯誤的algorithm
※ 編輯: benmei99 (36.227.165.47 臺灣), 07/28/2024 02:43:05
→
07/28 02:49,
9月前
, 17F
07/28 02:49, 17F
是沒錯,1994的CEO是Andrew Grove;但G叔當年也還在Intel,2001年就當上CTO了
※ 編輯: benmei99 (36.227.165.47 臺灣), 07/28/2024 02:55:40
※ 編輯: benmei99 (36.227.165.47 臺灣), 07/28/2024 03:10:27
噓
07/28 03:20,
9月前
, 18F
07/28 03:20, 18F
→
07/28 03:20,
9月前
, 19F
07/28 03:20, 19F
→
07/28 03:21,
9月前
, 20F
07/28 03:21, 20F
→
07/28 03:21,
9月前
, 21F
07/28 03:21, 21F
→
07/28 03:22,
9月前
, 22F
07/28 03:22, 22F
→
07/28 03:22,
9月前
, 23F
07/28 03:22, 23F
→
07/28 03:23,
9月前
, 24F
07/28 03:23, 24F
→
07/28 03:23,
9月前
, 25F
07/28 03:23, 25F
確實寫文時忽略了當年的市場背景,規模最大這點我言之過早,但公關處理還是一樣糟糕就
是了...
※ 編輯: benmei99 (36.227.165.47 臺灣), 07/28/2024 03:29:28
推
07/28 03:44,
9月前
, 26F
07/28 03:44, 26F
→
07/28 04:48,
9月前
, 27F
07/28 04:48, 27F
→
07/28 07:22,
9月前
, 28F
07/28 07:22, 28F
→
07/28 07:22,
9月前
, 29F
07/28 07:22, 29F
→
07/28 07:22,
9月前
, 30F
07/28 07:22, 30F
→
07/28 07:27,
9月前
, 31F
07/28 07:27, 31F
→
07/28 07:27,
9月前
, 32F
07/28 07:27, 32F
→
07/28 07:27,
9月前
, 33F
07/28 07:27, 33F
還有 94 則推文
還有 11 段內文
推
07/28 16:41,
9月前
, 128F
07/28 16:41, 128F
→
07/28 16:41,
9月前
, 129F
07/28 16:41, 129F
→
07/28 16:41,
9月前
, 130F
07/28 16:41, 130F
→
07/28 16:41,
9月前
, 131F
07/28 16:41, 131F
→
07/28 16:41,
9月前
, 132F
07/28 16:41, 132F
→
07/28 16:43,
9月前
, 133F
07/28 16:43, 133F
推
07/28 16:43,
9月前
, 134F
07/28 16:43, 134F
→
07/28 16:43,
9月前
, 135F
07/28 16:43, 135F
推
07/28 16:58,
9月前
, 136F
07/28 16:58, 136F
推
07/28 19:09,
9月前
, 137F
07/28 19:09, 137F
就是玩梗沒有發功,Dell 2006年收購了一家叫Alienware的公司
※ 編輯: benmei99 (106.64.136.54 臺灣), 07/28/2024 19:16:53
→
07/28 19:20,
9月前
, 138F
07/28 19:20, 138F
推
07/28 20:38,
9月前
, 139F
07/28 20:38, 139F
→
07/28 20:39,
9月前
, 140F
07/28 20:39, 140F
→
07/28 20:40,
9月前
, 141F
07/28 20:40, 141F
推
07/28 21:57,
9月前
, 142F
07/28 21:57, 142F
推
07/28 22:04,
9月前
, 143F
07/28 22:04, 143F
推
07/28 22:24,
9月前
, 144F
07/28 22:24, 144F
→
07/28 22:24,
9月前
, 145F
07/28 22:24, 145F
推
07/28 22:58,
9月前
, 146F
07/28 22:58, 146F
這個問題我也不知道,你要去問當年參與P5設計的工程師
※ 編輯: benmei99 (36.227.165.47 臺灣), 07/28/2024 23:05:49
推
07/29 04:48,
9月前
, 147F
07/29 04:48, 147F
→
07/29 04:48,
9月前
, 148F
07/29 04:48, 148F
※ 編輯: benmei99 (106.64.128.246 臺灣), 07/29/2024 05:10:20
推
07/29 05:31,
9月前
, 149F
07/29 05:31, 149F
→
07/29 05:32,
9月前
, 150F
07/29 05:32, 150F
→
07/29 05:33,
9月前
, 151F
07/29 05:33, 151F
→
07/29 05:33,
9月前
, 152F
07/29 05:33, 152F
推
07/29 08:27,
9月前
, 153F
07/29 08:27, 153F
推
07/29 11:45,
9月前
, 154F
07/29 11:45, 154F
推
07/29 11:56,
9月前
, 155F
07/29 11:56, 155F
推
07/29 22:07,
9月前
, 156F
07/29 22:07, 156F
→
07/29 22:08,
9月前
, 157F
07/29 22:08, 157F
→
07/29 22:08,
9月前
, 158F
07/29 22:08, 158F
推
07/30 01:17,
9月前
, 159F
07/30 01:17, 159F
推
07/30 02:49,
9月前
, 160F
07/30 02:49, 160F
推
07/30 02:51,
9月前
, 161F
07/30 02:51, 161F
→
07/30 02:52,
9月前
, 162F
07/30 02:52, 162F
推
08/02 08:11,
9月前
, 163F
08/02 08:11, 163F
推
08/10 19:52,
9月前
, 164F
08/10 19:52, 164F
PC_Shopping 近期熱門文章
PTT數位生活區 即時熱門文章