Kapitel 1: Übersicht und Motivation (PDF, Handouts)
Transcription
Kapitel 1: Übersicht und Motivation (PDF, Handouts)
Inhalt 1 Motivation 2 Integer- und Festkomma-Arithmetik – – – – Zahlendarstellungen Algorithmen für Integer-Operationen Rechnen bei eingeschränkter Präzision Integer-Rechenwerke 3 Gleitkomma-Arithmetik – – – – – Zahlendarstellungen Algorithmen für Gleitkomma-Operationen Rundung und Ausnahmesituationen Fehleranalyse Gleitkomma-Rechenwerke Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 2 Inhalt (Forts.) 4 5 6 7 Unkonventionelle Zahlensysteme Intervall-Arithmetik Rechnen mit Zahlen beliebig hoher Stellenzahl Realisierung elementarer Funktionen – Reihenentwicklung – Interpolationsverfahren 8 Umsetzung in aktuellen Prozessoren – x86 Gleitkomma-Einheiten in AMD Athlon und Intel Pentium – SIMD-Einheiten: MMX, SSE, 3DNow! und SSE2 Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 3 1 Literatur • A.R. Omondi, Computer Arithmetic Systems – Algorithms, Architecture and Implementations, Prentice Hall, 1994 • I. Koren, Computer Arithmetic Algorithms, 2. Auflage, Peters Ltd., 2002 • K. Hwang, Computer Arithmetic – Principles, Architecture and Design, Wiley&Sons, 1979 • O. Spaniol, Arithmetik in Rechenanlagen, Teubner, 1976 • J.L Hennessy und D.A. Patterson, Rechnerarchitektur, Vieweg, 1994, insbesondere Anhang A: Rechnerarithmetik • D.E. Knuth, Arithmetik, Springer, 2001 Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 4 Organisatorisches • Vorlesung (2V): Fr., 8.30–10, Raum O27/121 • Übung (1Ü): nach Vereinbarung ... Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 5 2 Motivation • Simulation künstlicher neuronaler Netze stellt oft recht hohe Anforderungen an die Computer-Arithmetik • Beispiel: Radiales Basisfunktionen-Netzwerk (RBF) m LernAlgorithmus: x j = ∑ (ui − cij )² i =1 y j = h j (x j ) = e−x j / 2ó j ² = e−x j ⋅s j h z k = ∑ y j ⋅ w jk j =1 δ ( z) k = (t k − z k ) δ ( y) j = ∑ δ k( z ) ⋅ w jk n k =1 w jk = w jk + η w ⋅ y j ⋅ δ k( z ) s j = s j + η s ⋅ x j ⋅ y j ⋅ δ (j y ) cij = cij + η c ⋅ (ui − cij ) ⋅ δ (j y ) ⋅ y j ⋅ s j Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 6 Ungenauigkeiten • Ungenauigkeiten entstehen in der Computer-Arithmetik z.B. durch Rundungsfehler, Überlauf und Unterlauf • Beispiel 1: Formelauswertung unter Verwendung des Typs double : 10 20 − 10 20 + 19 − 10 + 120 → Ergebnis: 129 (richtig !) 10 20 + 19 − 10 + 120 − 10 20 → Ergebnis: 0 10 20 + 19 − 10 20 − 10 + 120 10 20 + 19 + 120 − 10 20 − 10 → Ergebnis: 110 → Ergebnis: − 10 ⇒ Ergebnis abhängig von Reihenfolge der Auswertung ! Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 7 3 Ungenauigkeiten (Forts.) • Beispiel 2: iterative Berechnung von x i + 1 = 3.75 · x i ·(1 – x i ) mit x 0 = 0.5 : exakte Arithmetik Java double x 60 0.7990863343 0.79908633 70 x 70 0.4521952998 0.4521952 586 x 80 0.8561779966 0.85617 59906 x 90 0.7399137486 0.7 400517104 x 100 0.8882939922 0. 9017659679 x 110 0.7156795292 0. 2201217854 (aus: U. Kulisch: Memorandum über Computer, Arithmetik und Numerik, 1996) Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 8 Ungenauigkeiten (Forts.) • Beispiel 3: Lösen des linearen Gleichungssystems A · x = b mit Lösungsformeln: x 1 = a 22 / (a 11 · a 22 – a 12 ·a 21 ) x 2 = – a 21 / (a 11 · a 22 – a 12 ·a 21 ) Lösung ( double ): x 1 = 102558961 , x 2 = 41869520.5 Lösung (exakt): x 1 = 205117922 , x 2 = 83739041 (aus: U. Kulisch, Memorandum über Computer, Arithmetik und Numerik, 1996) Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 9 4 Ungenauigkeiten (Forts.) • Beispiel 4: Wieso gibt das kleine C++ Programm #include <iostream.h> int main() { long int x=3, i; for (i=0; i<100; i++) { x=x*x; cout << x << endl; } folgende eher zufällig aussehende Sequenz aus ? 9, 81, 6561, 43046721, -501334399, 2038349057, -1970898431, 120648705, 1995565057, -187601183, ... Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 10 Arithmetik in Mikroprozessoren • Wortbreite bei Integer-Registern und Integer-Rechenwerken erhöhte sich in den letzten 25 Jahren – – – – von 8 Bit (z.B. Intel 8080, 1975) über 16 Bit (z.B. Intel 80286, 1982) bis auf 32 Bit (z.B. Intel Pentium, 1994). Hochleistungs-Mikroprozessoren bieten 64 Bit Wortbreite (z.B. Sun UltraSparc II/III, Dec Alpha 21264) • Hardware für Integer-Multiplikation seit ca. 1990 und für Integer-Division seit ca. 1994 (zuvor nur als Mikrocode) • seit ca. 1990 (z.B. Intel 80486DX) auch integrierte Gleitkommaeinheiten für 32 Bit, 64 Bit und 80 Bit Gleitkommazahlen • Spezialprozessoren: DSPs, Multimedia- und Grafik-Prozessoren ⇒ zunehmende Verlagerung arithmetischer Operationen von Software in die Hardware Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 11 5 Arithmetik in Programmiersprachen • viele unterschiedliche elementare Datentypen • einheitliche Operatoren ( + , − , ∗ , /, %, ++ , −− ) • elementare Funktionen aus Mathematik-Bibliothek (zumeist nur für double , z.B. in libm.a oder java.lang.math ) • Beispiel 1: C / C++ – – – – – signed/unsigned char (8 bit) signed/unsigned [short] int (16 bit) signed/unsigned long [int] (32 bit) signed/unsigned long long [int] (64 bit) float (32 Bit) und double (64 bit) • Beispiel 2: Java – byte (8 bit), short (16 bit), int (32 bit), und long (64 bit) – float (32 Bit) und double (64 bit) – viele Restriktionen zur hohen Reproduzierbarkeit von Rechenergebnissen Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 12 Fehler in Computer-Arithmetik • Beispiel 1: Explosion der Ariane-5 Rakete am 4. Juni 1996 – Explosion der ESA Rakete 37 Sekunden nach Start – Ursache: 1. Messcomputer schaltete sich nach Software-Fehler ab, ausgelöst durch Überlauf bei der Konversion einer 64-Bit GleitkommaVariablen in eine 16-Bit Integer-Variable – Folge: zentraler Bordcomputer befragte zunächst 2. Messcomputer, der sich aufgrund identischer Software ebenfalls abgeschaltet hatte und löste Selbstzerstörung der nicht mehr steuerbaren Rakete aus Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 13 6 Fehler in Computer-Arithmetik (Forts.) • Beispiel 2: Patriot-Scud-Vorfall am 25.2.1991 – Patriot Abwehrrakete verfehlte ein Scud Missile, traf US-Lager und tötete 28 Soldaten – Ursache: Interne Systemzeit (Auflösung 100 ms) wurde mit Faktor 0.1 multipliziert, um Zeit in s zu erhalten. Da der Wert 0.1 jedoch nicht exakt in einer 24-Bit Festkomma-Variablen darstellbar ist, akkumulierte sich in 100 Betriebsstunden ein Fehler von 0.34 s – Folge: falsche Berechnung des Zeitpunkts des Zusammentreffens (in 0.34 s legt Rakete mehr als 0.5 km zurück) Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 14 Fehler in Computer-Arithmetik (Forts.) • Beispiel 3: Bug im Intel Pentium P5 Chip, 1994 – integrierter Hardware-Dividierer für Gleitkommazahlen benötigt eine Lookup-Tabelle mit 1066 Einträgen – jedoch waren nur 1061 Einträge im entsprechenden PLA gespeichert – Instruktion fdiv arbeitete für einige wenige Operanden fehlerhaft – fehlerhafte Division: x – (x/y) ∗ y mit x = 4195835 und y = 3145727 liefert 256 anstatt 0 – Häufigkeit: 1x in 27000 Jahren (Intel) 1x in 24 Tagen (IBM) – Verlust für Intel: 400 Mill. Dollar Computer-Arithmetik, WS 2002/2003 A. Strey, Universität Ulm Kapitel 1 : Motivation 15 7