奔腾浮点除错误
Pentium FDIV bug(奔腾浮点除错误)是英特爾公司的舊版本Pentium浮点运算器的一個錯誤。错误起源于奔腾系列的FDIV(浮点除)指令。

圖片顯示受FDIV bug影響的66 MHz Intel Pentium (內部型號SX837)
發現
1994年10月,美國弗吉尼亞州Lynchburg College數學系教授Thomas Nicely為研究孿生質數,發現用電腦處理長除法時一直出錯[1] 。他用一個數字去除以824,633,702,441時,答案一直是錯誤的。事後發現原因是英特爾為了加速運算,將整個乘法表燒錄在處理器上面,但是2048個乘法數字中,有5個輸入錯誤。這些錯誤其實不容易出現,在運算過程中,它會自動修復錯誤,只有幾個二進位的數字組,才會造成完全錯誤的結果。
影響
根據工程師指出,大約90億個長除法中會有一個錯誤[2]。依照計算,平均故障間隔(MTBF)大概是七百年,所以幾乎是不可能發生。但是同样有人声称实际上遭遇到这个错误的频率要高得多。英特尔公司后来召回了有缺陷的产品。
受影響型號
此問題僅在原先Pentium處理器的某些型號上出現[3]。該錯誤只在某些Pentium系列處理器低於120 MHz的時鐘速度出現[3]。在受影響的型號上,英特爾處理器頻率ID程式會檢查是否存在此錯誤。
下面列出了10個受影響的處理器。這些處理器的39個S-spec並未列在英特爾處理器規格網頁中。
Family | Model | Stepping | Core stepping | Clock rate | 前端匯流排速率 | S-spec |
---|---|---|---|---|---|---|
5 | 1 | 3 | B1 | 60 MHz | 60 MHz | Q0352, Q0412, SX753 |
5 | 1 | 3 | B1 | 66 MHz | 66 MHz | Q0353, Q0413, SX754 |
5 | 1 | 5 | C1 | 60 MHz | 60 MHz | Q0466, SX835, SZ949 |
5 | 1 | 5 | C1 | 66 MHz | 66 MHz | Q0467, SX837, SZ950 |
Family | Model | Stepping | Core stepping | Clock rate | 前端匯流排速率 | S-spec |
---|---|---|---|---|---|---|
5 | 2 | 1 | B1 | 75 MHz | 50 MHz | Q0601 |
5 | 2 | 1 | B1 | 90 MHz | 60 MHz | Q0542, Q0613, Q0543, SX879, SX885, SX909, SX874 |
5 | 2 | 1 | B1 | 100 MHz | 66 MHz | Q0563, Q0587, Q0614, SX886, SX910 |
5 | 2 | 2 | B3 | 75 MHz | 50 MHz | Q0606, SX951 |
5 | 2 | 2 | B3 | 90 MHz | 60 MHz | Q0628, Q0611, Q0612, SX923, SX922, SX921, SX942, SX943, SX944, SZ951 |
5 | 2 | 2 | B3 | 100 MHz | 66 MHz | Q0677, SX960 |
参考文献
- Nicely, Thomas. . trnicely.net. August 19, 2011 [June 18, 2019]. (原始内容存档于2019-06-18).
- Tom R. Halfhill. . BYTE. March 1995, (March 1995) [2006-12-19]. (原始内容 (– Scholar search)存档于February 9, 2006).
- . Intel. 2009-03-20 [2009-11-10]. Solution ID CS-012748. (原始内容存档于2009-05-11).
外部連結
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.