Der Pentium Bug Vortrag: Boris Ljepoja 30. Oktober 2002

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Definition [1]: Sei S eine endliche Menge und sei p eine Abbildung von S in die positiven reellen Zahlen Für einen Teilmenge ES von S sei p definiert.
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Kapitel 3 Arithmetische Schaltkreise
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Schnelle Matrizenoperationen von Christian Büttner
Zusammenfassung der Vorwoche
TECHNISCHE UNIVERSITÄT DARMSTADT Naive Bayes for Ranking
6. Digitale Datendarstellung
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
Sortierverfahren Richard Göbel.
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
Forschungsstatistik II Prof. Dr. G. Meinhardt SS 2005 Fachbereich Sozialwissenschaften, Psychologisches Institut Johannes Gutenberg Universität Mainz KLW-24.
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27-Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Kapitel 5 Stetigkeit.
Kapitel 2 Die rationalen und die irrationalen Zahlen.
Hypothesen testen: Grundidee
Algorithmen des Internets 2005 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität 1 Materialien zu Übung 9 Bälle in Körbe Ranged.
6 Normalformen Normalisieren Schlüssel
Addierwerke.
Berechnung des Osterdatums
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
Zahlensysteme und Dualarithmetik copyleft: munz
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Effiziente Algorithmen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Diskrete Mathematik II
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Polynome und schnelle Fourier-Transformation
Präsentation läuft auch vollautomatisch ab … wie du möchtest
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
1 Stichprobenverfahren zur Qualitätssicherung Hilfestellung der Statistik in der Wirtschaftsprüfung.
Das Binär-System Alles ist davon abhängig, ob Strom fließt oder nicht!
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Technische Informatik II Übung 2: Konvertieren von Zahlen
Im Vergleich der Addition und Subtraktion mit der Multiplikation und Division in der Bruchrechnung erkennen Sie, dass die Multiplikation und Division.
Excel Grundlagen.
Der Erotik Kalender 2005.
Grundlegendes zu Formeln u. Funktionen
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Technische Informatik II (INF 1211) Aufgabenteil (Mit Unterlagen)
Methoden der Sozialwissenschaften
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Wesentlichkeit im Rahmen
Division mit Rest Fortbildungsveranstaltung am 5. Juni 2009 Innsbruck
Division Grundvorstellungen, halbschriftliches und schriftliches Dividieren, Schülerfehler, …
Aufgabe 5 Gegeben sei folgende Graphik mit den zugehörigen Merkmalsdefinitionen. – Erstellen Sie die zugehörige Kontingenztabelle der absoluten Häufigkeiten.
Reihenfolge der Operatoren
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
ETI-Praktikum: Mikroprogrammierung Vorzeichenlose 32-Bit-Division Gruppe 27: Jakob Klein Arne Wirtz Gerrit Blöss SS 2006.
oder: wie Computer die Welt sehen
► Zahlen kleiner 0 heissen negative Zahlen.
Grundlagen und Grundbegriffe
Prof. J. Walter Bitte römische Zahlen im Geschichtsunterricht!
 Präsentation transkript:

Der Pentium Bug Vortrag: Boris Ljepoja 30. Oktober 2002 Ausarbeitung: Thomas Pfennig & Stefan Rosenegger 30. Oktober 2002

Was ist der Bug? Fließkommadivision kann falsche bzw. ungenaue Ergebnisse liefern Abhängigkeit von den Eingabewerten Fehler frühestens ab der vierten (Dezimal-)Stelle

Überblick Zeitlicher Hergang SRT-Divisionsalgorithmus Look-up-Tabelle Entstehung eines Fehlers Bitmuster

Vorgeschichte Ende 1993: Markteinführung des Intel Pentium™ als 486-Nachfolger Bis dahin umfangreichste Marketing-Kampagne um neuen Markennamen „Pentium“ bekannt zu machen U.a. schnellerer Dividierer in der FPU, 5x schneller als 486 gleichen Takts

Zeitlicher Hergang Entdeckung: 1994 Prof. Thomas Nicely untersucht numerisch Primzahleigenschaften Pentium-System liefert abweichende Ergebnisse Juni 94: Ursachenlokalisation in FPU des Pentium (Befehl FDIV) nach Elimination aller übrigen Fehlerquellen Nicelys Bsp.: 1/824633702441 (ab der 8. Stelle falsch)

Zeitlicher Hergang 24. Oktober: Nicely kontaktiert Intel Intel ohne Lösung, neuere Chips durch Revision aber fehlerfrei 30. Oktober: Nicely fragt in verschiedenen Foren nach Lösungsvorschlägen Nicely unterzeichnet NonDisclosure Agreement mit Intel

Coes Funktionsmodell Timothy Coe, FPU Designer, entwickelt ein Modell des FP-Dividierers Genaue Aussagen über die auftretenden Fehler: Entstehung eines Fehlers Bestimmung kritischer Operanden Wahrscheinlichkeiten für Fehlerauftreten Fehler ermöglicht Einblick in die Funktionsweise des Pentium-FDIV

Fehlerhäufigkeit Vaughan Pratt führt basierend auf Coes Modell empirische Untersuchungen durch 1 Million Divisionen ganzzahlige Eingabegrößen {1...1000} 627 fehlerhafte Ergebnisse, davon 427 mit einem relativen Fehler größer als 10-7 und 14 größer als 10-5

Ausmaß Extrembeispiel: 4195835 : 3145727 relativer Fehler ≈ 6∙10-5 = 1,33382045 (korrekt) = 1,33373907 (fehlerhafter Pentium) relativer Fehler ≈ 6∙10-5 vermutlich größtmöglicher Fehler f(x,y) = x - (x/y)∙y f(4195835,3145727) = = 0 = 256

3D-Fehlerdarstellung

Wahrscheinlichkeiten Firmenanalysen: INTEL: P(FDIV-Error) = 1 : 9 Mio. zufällig verteilte Daten 15 min intensiver FPU Nutzung täglich => ein Fehler alle 27 000 Jahre IBM: eine FDIV-Instruktion pro 1000 Maschinentakte => ein Fehler alle 28 Tage Pratt: Verwendung problematischer Operanden häufige Divisionen => mehr als ein Fehler pro Millisekunde

Verhalten bei Intel 27. November 1994: Intel räumt unter Vorbehalt „gefährdeten“ Kunden nach Prüfung der Berechtigung ein Umtauschrecht ein „Nicht alle User seien von der Ungenauigkeit betroffen, und wenn, dann sei es vertretbar“

Folgen Pentiumbesitzer verstehen die Haftungsausschluss-Politik bzw. selektiven Umtauschaktionen nicht Medien berichten ausführlich, so dass Empörung weit über die „Computer-Welt“ hinaus herrscht Mitte Dezember: Intel versucht Rufschädigung zu begrenzen und bietet bedingungslosen Austausch aller defekten Pentium CPUs an

Non-Restoring-Division Probesubtraktion des Divisors: Positives Ergebnis = Weiterrechnen Negatives Ergebnis = Ursprünglichen Wert wiederherstellen (restore) & neue Subtraktion Non-Restoring-Division Akzeptierung von negativen Resten und spätere Korrektur

Schuldivision ,2 - 8 2 4 - 16 1 5 - 20 – 17 : 4 = ← „Shift“ um eine Dezimalstelle = 4∙100 + 2∙10-1 + 5∙10-2 + 0∙10-3 + …

Bezeichnungen p Dividend d Divisor q Quotient pk Divisionsrest im (k+1)-ten Schritt qk Quotientenbit im (k+1)-ten Schritt o.B.d.A.: 1 ≤ p, d < 2 (Radix 4)

Divisionsalgorithmus Basis r = 10: Basis r: (2a +1 ≥ r) p0 := p for k = 0,1,... { Wähle Quotientenziffer qk є als Funktion von pk und d, so dass gilt: pk+1 := (pk - qk∙d) pk+1 є [0,10d[ } p/q = q0 + q1∙10-1 + q2∙10-2 + ... {0,...,9} {-a,...,0,...,a} 10 r |pk+1| ≤ adr/(r-1) p/q = q0 + q1∙r-1 + q2∙r-2 + ...

Radix 4-SRT-Division Basis r = 4 p0 := p for k = 0,1,... { Wähle Quotientenziffer qk є {-2,-1,0,1,2} als Funktion von pk und d, so dass gilt: pk+1 := 4(pk - qk∙d) |pk+1| ≤ 8/3d } p/q = q0 + q1∙4-1 + q2∙4-2 + ...

Radix 4-SRT-Division Bedingungen für Korrektheit: pk+1 := 4(pk - qk∙d) |pk+1| ≤ 8/3d Gültige (nicht eindeutige) Darstellung von p/d: p/d = q0.q1q2q3q4q5... (Basis 4)

Radix 4-SRT-Division Vorteile: Multiplikation mit {-2,-1,0,1,2} einfach auf Rechnern realisierbar Redundanz ermöglicht Berechnung zweier (binärer) Quotientenbits in einem Takt Kompatibilität mit rechnerüblicher Carry-Save-Addition

Ziffernauswahl Bestimmung der aktuellen Quotientenziffer aus 2-dim PD-Table Indizierung durch Näherungswerte für d (fest) und pk (variabel) Festlegung: D = x.yyyy P = xxxx.yyy D ≤ d < D+ = D + 1/16 Pk ≤ pk < Pk + 1/4

Auswahlfunktion Look-up-Table: grün blau violett rot braun ~ 2 1 - 1 - 1 - 2

FDIV D := floor1/16[d]; for k = 0,1,...,N { Pk := floor1/4[pk]; qk := table-lookup(Pk,D); Berechne (-qkd) über Nullierung oder Shift und/oder 1-Komplement; pk+1 := 4(pk + (-qkd)); // 2x Shift Korrigiere 1-Komplement falls qk < 0 durch Einfügen von „1“ am LSB von ck+1 } p/q = q0 + q1∙4-1 + q2∙4-2 + ... + qN∙4-N

Physische Ursache 5 Einträge am oberen Ende des erreichbaren Bereichs des PLA sind fehlerhaft Zellen wurden bei der Produktion mit „0“ anstelle der korrekten „2“ belegt Auslesen der falschen Werte produziert fortschreitend falsche Quotientenbits

Physische Ursache Steuerungsskript übertrug nur 1061 von 1066 Einträgen des Entwurfs Grund war laut Intel zu kurze FOR-Schleife Fehlerhafte Einträge entsprechen unterer Schranke für Obergrenze Korrespondenz mit 5 unerreichbaren Einträgen am anderen Ende

Fehlercharakteristika Kritische Divisorwerte: 2/3D+ = n∙1/8 mit n є {1,2,...} D = 17/16 = 1.0001 D = 20/16 = 1.0100 D = 23/16 = 1.0111 D = 26/16 = 1.1010 D = 29/16 = 1.1101 Fehlerhafte Einträge: PBad = 8/3D+ - 1/8

Erreichbarkeit Beschreibung Symbol Wert P-2max - 1/4 - 4/3D+ P-1max PBad nur vom Eintrag unmittelbar unterhalb (Foothold) erreichbar Foothold nur auf vier Wegen erreichbar Beschreibung Symbol Wert oberes Ende q = - 2 Bereich P-2max - 1/4 - 4/3D+ oberes Ende q = - 1 Bereich P-1max - 1/4 - 1/3D+ Eintrag unterhalb Foothold PBad - 1/4 - 3/8 + 8/3D+ Foothold PBad - 1/8 - 1/4 + 8/3D+

Fehlerentstehung nur erstere beiden Wege können über Foothold unmittelbar im folgenden Schritt zu PBad führen Fehlerentstehungsmuster P: P-2max/P-1max → PBad - 1/8 PBad q: - 2/- 1 2

Bitmuster Erreichen des Footholds führt nicht zwingend zu PBad Fehlerentstehung funktioniert nur mit bestimmten Bitmustern Notwendiges Bitmuster: d = d1d2d3d4... d1 bis d4 ergeben kritischen Divisor d5 bis d10 müssen „1“ sein

Bitmuster Analyse der Bitmuster zeigt: frühestens im 7. Schritt kann zum ersten Mal qk < 0 auftreten Fehler kann daher frühestens im 9. Schritt entstehen (q0 bis q7 stets korrekt) Ursache für obere absolute Fehlerschranke bei ca. 5∙10-5, meist deutlich darunter

Erfahrungen Immenser Imageschaden für Intel Kosten für Austauschaktion lagen bei $464 Mio. Pentium späterer Baureihen nach Revision korrigiert „The bug in the Pentium was an easy mistake to make, and a difficult one to catch.“

Carry-Save-Addition Speicherung der Übertragbits in zusätzlichem „carry-word“ Vermeidung der „carry-propagation“ Darstellung des Rests im Carry-Save-Format: pk = sk + ck

Divisionsrest Bestimmung des neuen Näherungswertes Pk+1 durch: - - Bestimmung des neuen Näherungswertes Pk+1 durch: Pk+1 := 4(Pk - qkD+) + Rk Korrekturterm Rk ≤ Rkmax: q = 2: Rkmax = 5/4 q = 1: Rkmax = 1 q = 0: Rkmax = 7/8 q = 1: Rkmax = 3/4 q = 2: Rkmax = 3/4