奔腾浮点除错误

(重定向自Pentium FDIV bug

奔腾浮点除错误(英語:Pentium FDIV bug)是英特爾公司的舊版本Pentium浮点运算器的一個錯誤。错误起源于奔腾系列的浮点除(FDIV)指令。這錯誤所引發的後續效應導致了英特爾的公關災難,並導致英特爾在1994年受到4.75億美元的損失。[1]

圖片顯示受FDIV bug影響的66 MHz Intel Pentium (內部型號SX837)

發現编辑

1994年10月,美國弗吉尼亞州林奇堡學院英语University of Lynchburg數學系教授托馬斯·尼科利(Thomas Nicely)為研究孿生質數,發現用電腦處理長除法時一直出錯[2] 。他用一個數字去除以824,633,702,441時,答案一直是錯誤的。事後發現原因是英特爾為了加速運算,將整個乘法表燒錄在處理器上面,但是2048個乘法數字中,有5個輸入錯誤。這些錯誤其實不容易出現,在運算過程中,它會自動修復錯誤,只有幾個二進位的數字組,才會造成完全錯誤的結果。

影響编辑

根據工程師指出,大約90億個長除法中會有一個錯誤[3]。依照計算,平均故障間隔(MTBF)大概是七百年,所以幾乎是不可能發生。但是同样有人声称实际上遭遇到这个错误的频率要高得多。英特尔公司后来召回了有缺陷的产品。

受影響型號编辑

此問題僅在原先Pentium處理器的某些型號上出現[4]。該錯誤只在某些Pentium系列處理器低於120 MHz的時鐘速度出現[4]。在受影響的型號上,英特爾處理器頻率ID程式會檢查是否存在此錯誤。

下面列出了10個受影響的處理器。這些處理器的39個S-spec並未列在英特爾處理器規格網頁中。

Pentium P5 800 nm 5V
FamilyModelSteppingCore steppingClock rate前端匯流排速率S-spec
513B160 MHz60 MHzQ0352, Q0412, SX753
513B166 MHz66 MHzQ0353, Q0413, SX754
515C160 MHz60 MHzQ0466, SX835, SZ949
515C166 MHz66 MHzQ0467, SX837, SZ950
Pentium P54C 600 nm 3.3V
FamilyModelSteppingCore steppingClock rate前端匯流排速率S-spec
521B175 MHz50 MHzQ0601
521B190 MHz60 MHzQ0542, Q0613, Q0543, SX879, SX885, SX909, SX874
521B1100 MHz66 MHzQ0563, Q0587, Q0614, SX886, SX910
522B375 MHz50 MHzQ0606, SX951
522B390 MHz60 MHzQ0628, Q0611, Q0612, SX923, SX922, SX921, SX942, SX943, SX944, SZ951
522B3100 MHz66 MHzQ0677, SX960

参考文献编辑

  1. ^ 1994 - Annual Report. Intel. June 20, 2020 [June 20, 2020]. (原始内容存档于February 26, 2017). 
  2. ^ Nicely, Thomas. Pentium FDIV flaw FAQ. trnicely.net. August 19, 2011 [June 18, 2019]. (原始内容存档于2019-06-18). 
  3. ^ An error in a lookup table created the infamous bug in Intel's latest processor. [1995-03-01]. (原始内容存档于2006-12-19). 
  4. ^ 4.0 4.1 FDIV Replacement Program: Frequently asked questions. Intel. 2009-03-20 [2009-11-10]. Solution ID CS-012748. (原始内容存档于2009-05-11). 

參見编辑

外部連結编辑