Pentiums FDIV-bugg
Pentiums FDIV-bugg är en bugg i flyttalsdelen i första generationens Pentiumprocessorer (P5) från Intel. Vissa divisioner med flyttal som utförs med dessa processorer genererar felaktiga resultat. Enligt Intel berodde buggen på saknade poster i uppslagstabellen som används av divisionsoperationen (FDIV).[1]
Felaktigheten upptäcktes oberoende och publicerades i oktober 1994 av Thomas R. Nicely vid Lynchburg College i Virginia i USA.[2] Intels hantering av buggen kritiserades. Företaget hade känt till den sedan maj samma år. Det slutade med att de felaktiga processorerna fick återkallas.
Exempelsymptom
[redigera | redigera wikitext]Buggen kan enkelt framkallas genom att utföra följande operation i Windowskalkylatorn eller Microsoft Excel i Windows 95/98:
Korrekt resultat är:
När detta omvandlas till hexadecimal talbas i processorn blir 4195835 = 0x4005FB och 3145727 = 0x2FFFFF. Det är siffran '5' i 0x4005 som utlöser felet i FPU:ns kontrollogik. Detta resulterar i fel värde bortom den fjärde decimalsiffran:[3]
Det som beräknas är:
=
Ett annat sätt att påvisa buggen är att använda verktyget pentnt som inkluderas med Windows NT 3.51, NT 4.0, 2000 och XP.[4]
Påverkade modeller
[redigera | redigera wikitext]Tio processormodeller i P5-generationen påverkades av buggen.
Familj | Modell | Stepping | Core-stepping | Klockfrekvens | FSB-frekvens | sSpec (specifikationsnummer) |
---|---|---|---|---|---|---|
Pentium P5 800 nm 5V | ||||||
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 |
Pentium P54C 600 nm 3.3V | ||||||
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 |
Se även
[redigera | redigera wikitext]- 0xF00FC7C8 (F00F-buggen)
- Cyrix coma
Referenser
[redigera | redigera wikitext]- ^ ”FDIV Replacement Program: Description of the Flaw”. Solution ID CS-013007. Intel. 9 juli 2004. Arkiverad från originalet den 18 december 2006. https://web.archive.org/web/20061218064810/http://support.intel.com/support/processors/pentium/sb/CS-013007.htm. Läst 19 december 2006.
- ^ Professor Thomas Nicely. ”Pentium FDIV flaw FAQ”. Arkiverad från originalet den 15 mars 2012. https://www.webcitation.org/66AzslMxs?url=http://www.trnicely.net/pentbug/pentbug.html. Läst 5 april 2012.
- ^ ”Pentium FDIV bug - a Picture”. Kansas University Institute for Policy and Social Research. 30 november 1994. Arkiverad från originalet den 3 november 2021. https://web.archive.org/web/20211103175303/http://www.ipsr.ku.edu/stafffil/hoyle/pentium_fdiv/. Läst 3 november 2010.
- ^ ”Pentnt”. Arkiverad från originalet den 19 september 2016. https://web.archive.org/web/20160919025024/https://technet.microsoft.com/en-us/library/bb490967.aspx. Läst 18 juli 2016.
- Alexander Wolfe. Intel fixes a Pentium FPU glitch