Intel CPU Bug in den 90ern

Oct 12 2020

Mein Lehrer, der an der Universität "Logik" unterrichtet, erzählte uns eine Geschichte über Intel-Prozessoren: In den 90er Jahren hatte Intel einen Fehler bei der Berechnung mathematischer Funktionen wie sin / cos, die im Prozessor codiert sind. Dieser Fehler führte zu Inkonsistenzen bei einigen Bankkonten und veranlasste Intel, Logiker einzustellen, um die Richtigkeit des Codes zu demonstrieren.

Ich habe versucht, diese Geschichte im Internet zu durchsuchen, aber nichts gefunden. Weiß jemand etwas darüber oder kann mir jemand Quellen geben?

Antworten

74 StephenKitt Oct 12 2020 at 21:35

Ich vermute, Ihr Lehrer bezog sich auf den FDIVPentium-Fehler , der zu der Zeit zu einem großen Aufschrei in den Medien führte und für den Intel einen Rückruf herausgab.

Dieser Fehler führte in einigen Fällen dazu, dass die Gleitkommadivision falsche Ergebnisse zurückgab. Es war nicht nur FDIVbetroffen, einige verwandte Anweisungen waren betroffen: die anderen Teilungs- und Restanweisungen und FPTANund FPATAN. Andere trigonometrische Anweisungen wurden mit Argwohn behandelt, aber letztendlich gelöscht, einschließlich FSINund FCOS.

Es ist jedoch unwahrscheinlich, dass dies zu Problemen bei Banken führen würde: Finanzanwendungen vermeiden normalerweise Gleitkomma-Darstellungen, sodass Fehler in einer Gleitkomma-Anweisung sie wahrscheinlich nicht beeinflussen.

Siehe auch den Wikipedia-Eintrag zu diesem Fehler . Ein weiterer berühmter Pentium-Fehler war der F00F-Fehler , der keine Berechnungsfehler verursachte. Dies konnte zu Abstürzen führen und wurde durch die spezifische Handhabung in Betriebssystemen umgangen.

28 Bagnus Oct 13 2020 at 17:56

Stephen Kitt hat bereits eine gute Antwort bezüglich des FDIV-Fehlers gegeben. Ich werde einige Details über Intel, das Logiker beschäftigt, eintragen:

Aufgrund dieses Fehlers musste Intel viele Prozessoren ersetzen, was sehr teuer war. Um dies nicht zu wiederholen, stellten sie eine Reihe von Informatikern mit Hintergrundwissen in formaler Logik ein, um die Richtigkeit der Algorithmen zu beweisen, die in Nachfolgern des Pentiums implementiert werden sollen. Wenn Sie mehr über ihre Forschung erfahren möchten, lesen Sie die Veröffentlichungen von zwei dieser Wissenschaftler:https://www.cl.cam.ac.uk/~jrh13/papers/index.html, https://scholar.google.com/citations?user=MACCA0cAAAAJ&hl=en

20 supercat Oct 13 2020 at 23:19

Intel verfügte über eine ziemlich komplexe Hardware, um einen Gleitkomma-Quotienten so zu berechnen, dass zwei Bits pro Iteration erhalten wurden. Dies erforderte eine ziemlich große Tabelle, in der alle Kombinationen von Bitmustern aufgelistet waren, bei denen ein Teil des Quotienten 11 [statt 11 sein sollte Wenn alle Muster einzeln aufgelistet würden, hätte die Tabelle Einträge gehabt, bei denen jedes Bit 0, 1 oder X sein könnte, so dass beispielsweise ein Bitmuster von 100X01X mit 1000010, 1000011, 1001010 oder 1001011 übereinstimmt, sodass die Tabelle keine benötigt unglaublich große Anzahl von Einträgen]. Leider wurde ein Teil der Tabelle beschädigt, als sie von einem beliebigen Tool, mit dem sie generiert wurde, in das Chip-Design übertragen wurde.

Ich finde diesen Ansatz zur Division etwas merkwürdig, da es schnell gewesen wäre, den Divisor zu untersuchen und einen Wert zu erzeugen, der, wenn er sowohl mit dem Divisor (Aufrunden) als auch mit der Dividende (Abrunden) multipliziert würde, den neuen Divisor zwingen würde, seinen zu haben obere Bits gleich 0,1111 oder 0,11111111, was es einfach machen würde, 4 oder 8 Bits pro Iteration zu extrahieren. Der endgültige Quotient wäre wahrscheinlich etwas kleiner als der korrekte Wert [angesichts der früheren Rundungsrichtungen niemals größer], aber er wäre nahe genug, dass am Ende nur zwei oder drei paar aufeinanderfolgende Approximationsschritte erforderlich sein sollten, um die Dinge zu reinigen oben.

Auf jeden Fall ist die ultimative Ironie mit dem Intel FDIV-Fehler, dass es früher in der Ära 386/387 ein Konkurrenzprodukt von Weitek gab, das Gleitkomma-Berechnungen mit einfacher Genauigkeit viel schneller als Intels Chips durchführen konnte, dies aber nicht tat. Ich mache überhaupt keine Mathematik mit doppelter Genauigkeit. Einige Programme, die normalerweise Mathematikversionen mit doppelter Genauigkeit verwendet hätten, wurden für den Weitek ausgeliefert, die Mathematik mit einfacher Genauigkeit verwendeten und daher weniger genaue Ergebnisse lieferten. Das Marketing-Team von Intel entschied sich, diesen (entworfenen und als akzeptabel angesehenen) Mangel an Präzision auszunutzen, indem es eine Anzeige produzierte, die ein Motherboard mit einem Dime-Store-Rechner zeigte, der mit Clown-Grafiken verziert war, wo die CPU hätte sein sollen, und die Überschrift "Ask for echt" Intel Math CoProcessors, oder wer weiß, auf welche Mathematik Sie zählen müssen ".

2 another-dave Oct 12 2020 at 21:34

Ich denke, dies bezieht sich wahrscheinlich auf den Pentium FDIV-Fehler (Gleitkomma-Divide-Fehler).

Ich erinnere mich an keine spezifischen Probleme mit Trigonometrie-Anweisungen.