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