Pentium FDIV fejl - Pentium FDIV bug

66 MHz Intel Pentium (sSpec = SX837) med FDIV -fejlen

Den Pentium FDIV bug er en hardware-fejl påvirker floating-point unit (FPU) af de tidlige Intel Pentium-processorer . På grund af fejlen ville processoren returnere forkerte resultater af binære flydende punkter ved deling af visse par med højpræcisionstal . Fejlen blev opdaget i 1994 af Thomas R. Nicely, professor i matematik ved Lynchburg College . Manglende værdier i en opslagstabel, der blev brugt af FPU's floating-point division-algoritme, førte til, at beregninger fik små fejl. Selvom disse fejl i de fleste brugstilfælde kun forekommer sjældent og resulterer i små afvigelser fra de korrekte outputværdier, kan fejlene under visse omstændigheder forekomme ofte og føre til mere betydelige afvigelser.

Alvorligheden af ​​FDIV -bug debatteres. Selvom de fleste brugere sjældent støder på ( Byte magazine anslår, at 1 ud af 9 milliarder flydende punktopdelinger med tilfældige parametre ville give unøjagtige resultater), blev både fejlen og Intels indledende håndtering af sagen stærkt kritiseret af teknologisamfundet.

I december 1994 tilbagekaldte Intel de defekte processorer i den første fulde tilbagekaldelse af en computerchip. I januar 1995 annoncerede Intel "et gebyr før skat på $ 475 millioner mod indtjeningen, tilsyneladende de samlede omkostninger forbundet med udskiftning af de mangelfulde processorer."

Beskrivelse

Graf, der viser en manifestation af FDIV -fejlen. Hvert datapunkt skal være ~ 3.1789 x 10 −8 højere på y-aksen end forgængeren til venstre, men i området 4195834.4 <x <4195835.9 adskiller resultatet sig fra den forventede værdi med ~ 8.14 x 10 −5 .

For at forbedre hastigheden af ​​floating-point-divisionsberegninger på Pentium-chippen over 486DX valgte Intel at erstatte shift-and-subtract division-algoritmen med Sweeney, Robertson og Tocher (SRT) algoritmen. SRT -algoritmen kan generere to bits af divisionsresultatet pr. Urcyklus , hvorimod 486's algoritme kun kunne generere en. Det implementeres ved hjælp af et programmerbart logisk array med 2.048 celler, hvoraf 1.066 celler skulle have været udfyldt med en af ​​fem værdier: -2, -1, 0, +1, +2 . Da den originale matrix til Pentium blev kompileret, blev fem værdier ikke korrekt downloadet til udstyret, der ætser matrixerne i chipsene - således indeholdt fem af arraycellerne nul, når de skulle have indeholdt +2.

Som et resultat opnår beregninger, der er afhængige af disse fem celler, fejl; disse fejl kan akkumuleres gentagne gange på grund af den rekursive karakter af SRT -algoritmen. I patologiske tilfælde kan fejlen nå det fjerde betydende ciffer i resultatet, selvom dette er sjældent. Fejlen er normalt begrænset til det niende eller tiende betydende ciffer.

Kun visse kombinationer af tæller og nævner udløser fejlen. Et almindeligt rapporteret eksempel er at dividere 4.195.835 med 3.145.727. Udførelse af denne beregning i enhver software, der brugte floating-point-coprocessoren, f.eks. Windows Calculator , ville give brugerne mulighed for at opdage, om deres Pentium-chip blev påvirket.

Beregningens korrekte værdi er:

Når den konverteres til den hexadecimale værdi, som processoren bruger, er 4.195.835 = 0x4005FB og 3.145.727 = 0x2FFFFF. '5' i 0x4005FB udløser adgangen til de 'tomme' matrixceller. Som følge heraf er værdien, der returneres af en defekt Pentium -processor, forkert på eller over fire cifre:

Opdagelse og reaktion

Thomas Nicely, professor i matematik ved Lynchburg College, havde skrevet kode til at opregne primtal , tvillingetal , primær -trillinger og primær firduer . Pænt bemærket nogle uoverensstemmelser i beregningerne den 13. juni 1994, kort efter at have tilføjet et Pentium -system til sin gruppe computere, men var ude af stand til at fjerne andre faktorer (såsom programmeringsfejl, bundkortchipsæt osv.) Indtil den 19. oktober 1994. Den 24. oktober 1994 rapporterede han problemet til Intel. Intel var efter sigende blevet opmærksom på problemet uafhængigt i juni 1994 og var begyndt at rette det på dette tidspunkt, men valgte ikke at offentliggøre detaljer eller tilbagekalde berørte CPU'er.

Den 30. oktober 1994 sendte Nicely en e-mail med en beskrivelse af fejlen til forskellige akademiske kontakter og anmodede om rapporter om test for fejlen på 486-DX4'er , Pentiums og Pentium-kloner . Fejlen blev hurtigt verificeret af andre, og nyheder om den spredte sig hurtigt på Internettet . Fejlen erhvervet navnet "Pentium FDIV bug" fra x86 assembler huskeregel for f loating-punkt div ision, det mest brugte instruktion påvirket.

Historien dukkede først op i pressen den 7. november 1994 i en artikel i Electronic Engineering Times , "Intel fixes a Pentium FPU glitch" af Alexander Wolfe, og blev efterfølgende afhentet af CNN i et segment, der blev sendt den 22. november. også rapporteret af New York Times og Boston Globe , hvilket gør forsiden i sidstnævnte.

På dette tidspunkt erkendte Intel floating-point-fejlen, men hævdede, at det ikke var alvorligt og ikke ville påvirke de fleste brugere. Intel tilbød at udskifte processorer til brugere, der kunne bevise, at de var påvirket. Selvom de fleste uafhængige skøn fandt ud af, at fejlen ville have en meget begrænset indvirkning på de fleste brugere, forårsagede det betydelig negativ presse for virksomheden. IBM satte salget på pc'er indeholdende Intel -CPU'er på pause, og Intels aktiekurs faldt markant. Motivet bag IBMs beslutning blev stillet spørgsmålstegn ved nogle i branchen; IBM producerede PowerPC -CPU'er på det tidspunkt og kunne potentielt drage fordel af enhver omdømmeskade for Pentium eller Intel som virksomhed. Beslutningen førte imidlertid til, at virksomhedskøbere af pc -udstyr krævede udskiftninger af eksisterende Pentium -CPU'er, og kort tid efter begyndte andre pc -producenter at tilbyde "ingen spørgsmål" udskiftninger af fejlbehæftede Pentium -chips.

Den voksende utilfredshed med Intels svar førte til, at virksomheden tilbød at udskifte alle mangelfulde Pentium-processorer efter anmodning den 20. december. 17. januar 1995 meddelte Intel "et gebyr før skat på $ 475 millioner mod indtjeningen, tilsyneladende de samlede omkostninger forbundet med udskiftning af de mangelfulde processorer. " Det svarer til $ 743 millioner i 2019. Intel blev kritiseret for at forhindre forhandlere og OEM'er i at deltage i tilbagekaldelsesprogrammet, hvilket kræver, at slutbrugere selv udskifter chips. Intels begrundelse for dette, der blev lagt på sin supportwebside, var, at "det er slutbrugerens individuelle beslutning at afgøre, om fejlen påvirker deres applikationsnøjagtighed".

En artikel i Science fra 1995 beskriver værdien af ​​talteoriske problemer ved at opdage computerfejl og giver den matematiske baggrund og historie for Bruns konstante problem, Nicely arbejdede på, da han opdagede fejlen.

Intels svar på FDIV -fejlen er blevet nævnt som et tilfælde af public relations -virkningen af et problem, der overskygger den praktiske virkning af problemet på kunderne. Selvom det var usandsynligt, at de fleste brugere ville støde på fejlene i deres daglige computing, forårsagede virksomhedens første reaktion på ikke at erstatte chips, medmindre kunder kunne garantere, at de blev påvirket, forårsaget tilbageslag fra et vokalt mindretal af branchens eksperter. Den efterfølgende publicitet, der blev genereret, rystede forbrugernes tillid til CPU'erne og førte til et krav om handling, selv fra folk, der sandsynligvis ikke ville blive påvirket af problemet. Andrew Grove, Intels administrerende direktør på det tidspunkt blev citeret i Wall Street Journal for at sige "Jeg tror, ​​at kernen i det problem, vi savnede [...] var, at vi formodede at fortælle nogen, hvad de burde eller ikke burde bekymre sig om, eller skal eller ikke skal gøre ".

I kølvandet på fejlen og efterfølgende tilbagekaldelse var der en markant stigning i brugen af formel verifikation af hardware floating point -operationer på tværs af halvlederindustrien. Tilskyndet til opdagelsen af ​​fejlen blev en teknik, der kunne anvendes på SRT-algoritmen, kaldet "ordkontrol af model", blev udviklet i 1996. Intel fortsatte med at bruge formel verifikation i vid udstrækning i udviklingen af ​​senere CPU-arkitekturer. I udviklingen af Pentium 4 blev der anvendt symbolsk baneevaluering og sætningsbevis til at finde en række fejl, der kunne have ført til en lignende tilbagekaldelse, hvis de var blevet opdaget. Den første Intel mikroarkitektur, der brugte formel verifikation som den primære valideringsmetode, var Nehalem , udviklet i 2008.

Berørte modeller

FDIV -fejlen påvirker 60 og 66 MHz Pentium P5 800 i trin trin før D1 og 75, 90 og 100 MHz Pentium P54C 600 i trin før B5. 120 MHz P54C og P54CQS CPU'erne påvirkes ikke.

Softwarerettelser

Forskellige softwarepatches blev produceret af producenter for at omgå fejlen. En specifik algoritme, der er skitseret i et papir i IEEE Computational Science & Engineering , er at kontrollere for tællere og nævnere, der vil udløse adgangen til de programmerbare logiske array -celler, der fejlagtigt indeholder nul, og hvis de findes, multiplicere begge tal med 15/16. Dette tager dem ud af 'buggy' serien. Imidlertid har dette en betydelig hastighedsstraf - i nogle tilfælde fordobles den tid, det tager at udføre beregningen.

Den største udfordring for softwarevirksomheder var at implementere rettelsen i allerede eksisterende software, hvoraf mange var afhængige af biblioteker uden for deres kontrol. Nogle virksomheder, som f.eks. Wolfram Research , valgte at direkte lappe maskinkoden for eksisterende eksekverbare filer for at erstatte FDIV -opkoden med en ulovlig instruktion. Dette ville derefter udløse en undtagelse, som en undtagelseshandler (også patched in) ville fange. Herfra kunne vilkårlig kode udføres for at omgå fejlen.

Microsoft tilbød løsninger på operativsystemniveau i versioner af Windows op til Windows XP. Hjælpeprogrammer blev inkluderet i operativsystemet for at kontrollere, om fejlen var til stede, og deaktivere FPU'en, hvis den blev fundet.

Se også

Referencer

eksterne links