Hoppa till innehållet

Pentiums FDIV-bugg

Från Wikipedia
66 MHz Intel Pentium (sSpec=SX837) med FDIV buggen.

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
  1. ^ ”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. 
  2. ^ 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. 
  3. ^ ”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. 
  4. ^ ”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. 
  1. Alexander Wolfe. Intel fixes a Pentium FPU glitch