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.
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]
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 |