Computerarithmetik

Werbung
Computerarithmetik (1)
Fragen:
• Wie werden Zahlen repräsentiert und konvertiert?
• Wie werden negative Zahlen und Brüche repräsentiert?
• Wie werden die Grundrechenarten ausgeführt?
• Was ist, wenn das Ergebnis einer Operation größer ist als die größte darzustellende
Zahl?
Hauptunterschied zwischen Computer- und menschlicher Arithmetik:
• Genauigkeit der sowie Platzbedarf für die Darstellung von Zahlen sind beim Computer
endlich und begrenzt.
• Computer arbeiten mit einer anderen Zahlendarstellung
Rechner speichern die Information (Zahlen) in Einheiten festgesetzter Bitlänge,
genannt Worte.
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (1a)
Mikroprozessor
Wortlänge (Bits
8085, Z80, 6809
8
8086, 68000
16
80386, 68020
32
Pentium, PowerPC
(Sun SPARC, IBM AIX)
32
typischer Mikrocontroller
4
Cray-1 Supercomputer
64
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (2)
Beispiel für Zahlendarstellung mit unterschiedlichen Basen:
binär
1
1
1
1
1
0
1
0
0
0
1
1 • 210 + 1 • 29 + 1 • 28 + 1 • 27 + 1 • 26 + 1 • 25 + 1 • 24 + 1 • 23 + 1 • 22 + 1 • 21 + 1 • 20
1024 + 512 + 256 + 128 + 64 + 0 + 16 +
0 +
0 +
0 +
1
oktal
3
7
2
1
3
2
1
3 • 8 + 7 • 8 + 2 • 8 + 1 • 80
1536 + 448 + 16 +
1
dezimal
2
0
0
1
3
2
1
2 • 10 + 0 • 10 + 0 • 10 + 1 • 100
2000 +
0 +
0 +
1
hexadezimal
7
D
1
7 • 163 + 13 • 162 + 1 • 16 1
1792 +
208 +
1
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (3)
Kollektion von Zahlendarstellungen mit den 4 verschiedenen Basen:
dezimal
0
1
2
3
7
8
10
11
12
15
16
20
50
60
80
100
1000
2989
binär
oktal
hexadezimal
0
1
10
11
111
1000
1010
1011
1100
1111
10000
10100
110010
111100
1010000
11001000
1111101000
101110101101
0
1
2
3
7
10
12
13
14
17
20
24
62
74
120
144
1750
5655
0
1
2
3
7
8
A
B
C
F
10
14
32
3C
50
64
3E8
BAD
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (4)
Beispiel für Konversion einer
Dezimalzahl in eine Binärzahl:
Tabelle für Umwandlung
binär - hexadezimal:
Hexabinär
dezimal
0
1
2
3
4
5
6
7
0000
0001
0010
0011
0100
0101
0110
0111
Quotient
Hexabinär
dezimal
8
9
a
b
c
d
e
f
1492
746
373
186
93
46
23
11
5
2
1
0
1000
1001
1010
1011
1100
1101
1110
1111
Rest
0
0
1
0
1
0
1
1
1
0
1
1 0 1 1 1 0 1 0 1 0 0
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (5)
BCD (Binary Coded Decimal):
weitere Möglichkeit der Zahlendarstellung auf der Basis von 2 Ziffern
Prinzip:
Jede Dezimalziffer wird für sich in die entsprechende Binärzahl konvertiert.
Vorteil:
sehr einfache Konvertierung von dezimaler zu binärer Darstellung
Nachteile:
– komplexere Arithmetik
– verschwenderische (ineffiziente) Ausnutzung der zur Verfügung stehenden
Wortbreite und damit des gesamten Speichers
Konsequenz:
Einsatz nur in Applikationen mit sehr geringem Speicherbedarf
Beispiele:
Taschenrechner, Digitaluhr
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (6)
Darstellung ganzer Zahlen (signed numbers)
1. Die Vorzeichen/Betrags - Darstellung (sign and magnitude):
Das höchstgewichtete Bit wird exklusiv für die Angabe des Vorzeichens genutzt.
Sei S das Vorzeichenbit und M der Betrag (Größe) einer ganzen Zahl Z,
dann ist ihr Wert gegeben durch: Z =: (-1) S M
Der Wertebereich bei einem gegebenen n-bit-Wort liegt im Intervall
[-(2n-1-1), 2n-1 -1]
Nachteile:
– keine eindeutige Darstellung der Null (-0, +0)
– erfordert separates Subtrahierwerk
– erfordert zusätzliche Logik, um zu entscheiden, ob eine Addition oder eine
Subtraktion durchzuführen ist
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (7)
2. Die Komplement - Darstellung
Der negative Wert einer Zahl ist in der Zahl selbst enthalten
• Das Vorzeichenbit ist Teil des Summanden und wird somit in eine
arithmetische Operation mit eingeschlossen
• Subtraktion wird auf die Addition zurückgeführt
• Keine Notwendigkeit für ein zusätzliches Subtrahierwerk
2a.
Einer - Komplement
Das Einer - Komplement -N einer binären Zahl N aus [0 , 2n-1-1] erreicht man durch
bitweises Invertieren von N
---> -N aus [-0, -2n-1-1]
---> -N = 2n - N - 1
Subtraktion:= Addition + end-around-carry, d.h. zu der Summe wird das „linke“ Bit
der Summe aufaddiert.
Vorteil:
zusätzliches Subtrahierwerk überflüssig
Nachteile:
• keine eindeutige Darstellung der Null
• kein echtes Komplement, da -x + x ? 0
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (7b)
2b.
Zweier - Komplement
Das Zweier - Komplement ist ein echtes Komplement
• -N = 2n - N
• -N = Einer - Komplement + 1
• -N = (bitweises Invertieren von N ) + 1
• -N aus [-1, -2n-1]
• Es gibt eine eindeutige Darstellung der Null
• Der Wertebereich des Zweier - Komplements ist [-2n-1, 2n-1-1]
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (8)
Visualisierung des Zweier - Komplements sowie der Addition
0000
1111
1110
-1
0001
-2
1101
0010
0 +1
+2
+3
-3
-4
1100
+4
+6
-6
-7 -8 +7
1010
1001 1000
Vorlesung Techn. Informatik II(1) SS 2001
0100
+5
-5
1011
0011
E. Nett
0111
0101
0110
Computerarithmetik (8a)
Einfache Additions (Subtraktions-) Regeln
x+y:
Addition der entsprechenden 2er - Komplemente ergibt korrekte Summe im
2er - Komplement, solange der Wertebereich nicht überschritten wird.
x-y:
Bilde das 2er - Komplement von y und führe Addition wie oben aus.
Konsequenz:
Die logische Einfachheit und die daraus resultierende Geschwindigkeit (arithm.
Operation erfolgt immer in einem Schritt) führt dazu, dass das Zweier - Komplement in
den ALU´s moderner Rechner eingesetzt wird.
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (9)
Overflow (Summe liegt außerhalb des Wertebereiches):
Wichtig: Erkennung des Overflows
• Bei Integer-Addition dient das carry-out-Bit als Overflow-Indikator.
• Bei Addition ganzer Zahlen (signed numbers) gilt dies nicht
• Addition von Summanden mit unterschiedlichem Vorzeichen ergibt nie einen
Overflow (Absoluter Wert ihrer Summe ist immer kleiner als der absolute Wert von
einem der beiden Summanden)
Folgerung: Overflow tritt auf, wenn beide Summanden das gleiche Vorzeichen haben
Prüfung auf Overflow:
O = an−1 bn −1 sn−1 + an−1 bn−1 sn−1
(Die Faktoren repräsentieren die Vorzeichenbits der Summanden
a und b sowie der Summe s)
Gilt O = 1
Es existiert ein Overflow!
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (10)
Symbol:
Wahrheitstabelle Halbaddierer:
A
B
S
C
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
1
A
Summe:
B
S = AB + AB = A ⊕ B
(Exklusiv-Oder)
HA
Carry:
C = AB
S
Cout
Implementierung:
A
A
A
B
S
B
S
S
C
C
C
Vorlesung Techn. Informatik II(1) SS 2001
B
E. Nett
Computerarithmetik (11)
Wahrheitstabelle Volladdierer:
Cin
A
B
S
Cout
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
1
0
1
1
1
A
B
Cin
HA 1
C1
S1
HA 2
C2
S2
A B Cin
Cout
Symbol:
S
FA
S
Implementierung eines
Volladdierers mittels
zweier Halbaddierer
Cout
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (12)
Schaltung für einen Volladdierers:
A
B
Cin
Cin
A
Cout
B
S
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (13)
Serieller Addierer:
A Shift-Register
Summen-Shift-Register
B Shift-Register
A
S
B FA
C in
Q
Carry
Flip Flop
Shift Takt
Cout
D
C
n Pulse pro Addition
Paralleladdierer:
A B Cin
A B Cin
A B Cin
A B Cin
Übertrag
1. Ebene
FA
FA
FA
FA
Übertrag
Cout
Sm-1
Vorlesung Techn. Informatik II(1) SS 2001
Cout
Sm-2
E. Nett
Cout
S1
Cout
S0
Computerarithmetik (14)
Rohrleitungsanalogie für Carry-lookahead:
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (14a)
Rechenzeit zur Addition zweier 32 Bit-Zahlen
A) serieller Addierer
3 GLZ pro Additionsschritt
(Mindestzeit, da Taktung entscheidend)
32 * 3 GLZ = 96 GLZ
B) Ripple Carry Adder (RCA)
31 * 2 GLZ (Ripple Carry)
1 * 3 GLZ (letzte Addition)
= 62 GLZ
= 3 GLZ
65 GLZ
C) Carry-Lookahead Adder (CLA)
Zusammenschaltung von 8 4-Bit CLA
1 * 1 GLZ (gi und pi)
8 * 2 GLZ (c1 ... C4)
1 * 3 GLZ (letzte Addition)
Vorlesung Techn. Informatik II(1) SS 2001
= 1 GLZ
= 16 GLZ
= 3 GLZ
20 GLZ
E. Nett
Computerarithmetik (15)
Multiplikation
„Multiplication is vexation, Division is as bad.
The rule of three doth puzzle me, And practice drives me mad.“
Anonymus, Elizabethan manuscript, 1570
1. Version einer Multiplikationshardware:
64 Bit Multiplikand
64-Bit ALU
Linksshift
Kontroll Test
Write
32 Bit Multiplikator
64 Bit Produkt
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Rechtsshift
Computerarithmetik (15a)
Dazugehöriger Algorithmus:
Start
Nein
1. Test
Multiplikator = 0?
Ja
1a. Addiere den Multiplikand zum Produkt speichere das
Ergebnis im Produktregister
2. Das Multiplikandenregister um 1 Bit nach links shiften
3. Das Multiplikatorregister um 1 Bit nach rechts shiften
32. Wiederholung?
Ja
Stop
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Nein
Computerarithmetik (15b)
Dazugehöriges Beispiel:
Schleife
Schritt
0
Anfangswerte
1
1a: 1 -> Produkt += Multiplikand
2: Shifte Multiplikand nach links
3: Shifte Multiplikator nach rechts
2
1a: 1 -> Produkt += Multiplikand
2: Shifte Multiplikand nach links
3: Shifte Multiplikator nach rechts
3
1: 0 -> Keine Operation nötig
2: Shifte Multiplikand nach links
3: Shifte Multiplikator nach rechts
4
1: 0 -> Keine Operation nötig
2: Shifte Multiplikand nach links
3: Shifte Multiplikator nach rechts
Vorlesung Techn. Informatik II(1) SS 2001
Multiplikator Multiplikand
0011
0000 0010
0011
0000 0010
0011
0000 0100
0001
0000 0100
0001
0000 0100
0001
0000 1000
0000
0000 1000
0000
0000 1000
0000
0001 0000
0000
0001 0000
0000
0001 0000
0000
0010 0000
0000
0010 0000
E. Nett
Produkt
0000 0000
0000 0010
0000 0010
0000 0010
0000 0110
0000 0110
0000 0110
0000 0110
0000 0110
0000 0110
0000 0110
0000 0110
0000 0110
Computerarithmetik (16)
2. Version einer Multiplikationshardware:
32 Bit Multiplikand
32 Bit Multiplikator
32-Bit ALU
Kontroll Test
Write
64 Bit Produkt
Vorlesung Techn. Informatik II(1) SS 2001
Rechtsshift
E. Nett
Rechtsshift
Computerarithmetik (16a)
Dazugehöriger Algorithmus:
Start
Nein
1. Test
Multiplikator = 0?
Ja
1a. Addiere den Multiplikand auf die linke Hälfte des
Produktes und schreibe das Ergebnis in die linke
Hälfte des Produktregisters
2. Das Produktregister um 1 Bit nach rechts shiften
3. Das Multiplikatorregister um 1 Bit nach rechts shiften
32. Wiederholung?
Ja
Stop
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Nein
Computerarithmetik (17)
Dazugehöriges Beispiel:
Schleife
Schritt
0
Anfangswerte
1
1a: 1 -> Produkt += Multiplikand
2: Shifte Produkt nach rechts
3: Shifte Multiplikator nach rechts
2
1a: 1 -> Produkt += Multiplikand
2: Shifte Produkt nach rechts
3: Shifte Multiplikator nach rechts
3
1: 0 -> Keine Operation nötig
2: Shifte Produkt nach rechts
3: Shifte Multiplikator nach rechts
4
1: 0 -> Keine Operation nötig
2: Shifte Produkt nach rechts
3: Shifte Multiplikator nach rechts
Vorlesung Techn. Informatik II(1) SS 2001
Multiplikator Multiplikand
0011
0010
0011
0010
0011
0010
0001
0010
0001
0010
0001
0010
0000
0010
0000
0010
0000
0010
0000
0010
0000
0010
0000
0010
0000
0010
E. Nett
Produkt
0000 0000
0010 0000
0001 0000
0001 0000
0011 0000
0001 1000
0001 1000
0001 1000
0000 1100
0000 1100
0000 1100
0000 0110
0000 0110
Computerarithmetik (18)
3. Version einer Multiplikationshardware:
32 Bit Multiplikand
32-Bit ALU
Write
64 Bit
Produkt
Kontroll Test
Rechtsshift
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (18a)
Dazugehöriger Algorithmus:
Start
Nein
1. Test
Produkt = 0?
Ja
1a. Addiere den Multiplikand auf die linke Hälfte des
Produktes und schreibe das Ergebnis in die linke
Hälfte des Produktregisters
2. Das Produktregister um 1 Bit nach rechts shiften
32. Wiederholung?
Ja
Stop
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Nein
Computerarithmetik (18b)
Dazugehöriges Beispiel:
Schleife
Schritt
0
Anfangswerte
1
1a: 1 -> Produkt += Multiplikand
2: Shifte Produkt nach rechts
2
1a: 1 -> Produkt += Multiplikand
2: Shifte Produkt nach rechts
3
1: 0 -> Keine Operation nötig
2: Shifte Produkt nach rechts
4
1: 0 -> Keine Operation nötig
2: Shifte Produkt nach rechts
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Multiplikand
0010
0010
0010
0010
0010
0010
0010
0010
0010
Produkt
0000 0011
0010 0011
0001 0001
0011 0001
0001 1000
0001 1000
0000 1100
0000 1100
0000 0110
Computerarithmetik (19)
Signed multiplication (Multiplikation mit Vorzeichen)
Beispiel für normale Multiplikation:
0
0 0
0 0 0
0 0 0 1
0
1
0
0
0
0
1
0
0
0
1
0
1
0
1
0
0
0
0
0
0
1
0
1
1
0
0
1
1 0 1 1 0 1
0+1+1+1+1 0
0 0 0 0 0 0
0 1 1 0 1
1 1 0 1
1 0 1
0 1
0
0 0 0 1 1 0
Das gleiche Beispiel mit Booth-Algorithmus:
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
1
0
1
0
1
0
0
0
0
0
0
0
1
0
0
0
1
0
1
0
1
0
0
0
1
0
0
0 1
0+1
0 0
0 1
0 0
0 0
0 0
0 0
0
1 0
0
0
0
0
0
0
0
1
0
0
0
0
0
1 0 1
0-1 0
0 0 0
1 1
0
0 0 1 1 0
Beobachtung:
• Es sind wesentlich weniger Teiladditionen notwendig.
• Es können positive und negative Faktoren verarbeitet werden.
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (19a)
Der Booth-Algorithmus
Idee:
• Darstellung des Multiplikators durch eine größere Zahl abzüglich einer Differenz
• Größere Zahl wird so gewählt, dass möglichst wenig Einsen, d.h. 2er Potenz
• Größere Zahl und Differenz zum Multiplikator sind neue Multiplikatoren
7
8
-1
0
1
0
+1
1
0
0
0
1 1
0 0
0 -1
0 -1
Zahlen werden von rechts beginnend umcodiert:
• Bei Wechsel von 0 auf 1 schreibe -1 unter die 1
• Bei Wechsel von 1 auf 0 schreibe +1 unter die 0
• Erfolgt kein Wechsel, so schreibe 0
0 0
0 +1
1
0
1
0
1 1
0 –1
Vorlesung Techn. Informatik II(1) SS 2001
0
0
0
0
(0)
E. Nett
0 1
+1
„0 +1 = 1“
1 0
-1
„1 -1 = 0“
0 0
0
„0 +0 = 0“
1 1
0
„1 +0 = 1“
Computerarithmetik (20)
Vergleich am Beispiel 2 x 6:
0
1
2
3
4
Multiplikand
0010
0010
0010
0010
0010
0010
0010
0010
0010
Ursprünglicher Algorithmus
Schritt
Produkt
Anfangswerte
0000 0110
1: 0 -> keine Operation nötig
0000 0110
2: Shifte Produkt nach rechts
0000 0011
1a: 1 -> Produkt +=
0010 0001
Multiplikand
2: Shifte Produkt nach rechts
0001 0001
1a: 1 ->Produkt += Multiplikand
0011 0001
2: Shifte Produkt nach rechts
0001 1000
1: 0 -> Keine Operation nötig
0001 1000
2: Shifte Produkt nach rechts
0000 1100
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Booth-Algorithmus
Schritt
Produkt
Anfangswerte
0000 0110 0
1a: 00 -> keine Operation nötig
0000 0110 0
2: Shifte Produkt nach rechts
0000 0011 0
1c: 10 -> Produkt -= Multiplikand
1110 0011 0
2: Shifte Produkt nach rechts
1111 0001 1
1d: 11 -> keine Operation nötig
1111 0001 1
2: Shifte Produkt nach rechts
1111 1000 1
1b: 01 -> Produkt += Multiplikand
0001 1000 1
2: Shifte Produkt nach rechts
0000 1100 0
Computerarithmetik (20a)
Beispiel 2 x (-3):
Schleife
Schritt
Multiplikand
Produkt
0
Anfangswerte
0010
0000 1101 0
1
1c: 10 -> Produkt -=
Multiplikand
0010
1110 1101 0
2: Shifte Produkt nach rechts
0010
1111 0110 1
1b: 01 -> Produkt +=
Multiplikand
0010
0001 0110 1
2: Shifte Produkt nach rechts
0010
0000 1011 0
1c: 10 -> Produkt -=
Multiplikand
0010
1110 1011 0
2: Shifte Produkt nach rechts
0010
1111 0101 1
0010
1111 0101 1
0010
1111 1010 1
2
3
4
1d: 11
->
keine Operation nötig
2: Shifte Produkt nach rechts
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
1
Computerarithmetik (20b)
Schnelle Multiplikation
A) Beschleunigung der Berechnung durch Verringerung der Anzahl von Teilprodukten
Bit Pair Recoding
Ausgabgspunkt: Codierung nach Booth-Algorithmus
Folgende Bit-Kombinationen treten auf und können umcodiert werden:
+2n –n = +n
+2n +0 = +2n
+1 -1
0 +1
-2n +1 = -n
+1
0
+0 +1 = +1
0 +1
0+0= 0
0
-2n +0 = -2n
-1 +1
0 -1
-1
0
0
+0 -1 = -1
0 -1
Ergebnis:
1 Stelle ist stets 0 ----->somit Halbierung der maximalen Summandenanzahl
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (20c)
Schnelle Multiplikation
B) Beschleunigung der Berechnung schnelle Addition
Ripple-Carry-Adder:
0
an
FA
zn+1
zn
wn-1 x n-1
w1 x1
w0 x 0
FA
FA
FA
yn-1
an-1
FA
z n-1
y1
a1
y0
0
a0
FA
FA
z1
z0
0
Nachteil: Carry-Bit muss durch alle Stellen „durchgereicht“ werden
Dadurch lange Rechenzeit
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (20d)
Schnelle Multiplikation
B) Beschleunigung der Berechnung schnelle Addition
Beispiel für eine Implementierung mit CSA:
wn-1 xn-1 yn-1
carry-save
addition
w1 x1
FA
cn
0
FA
s2
sn-1
cn-1
FA
zn+1
zn
w0 x0
w0 x0
FA
FA
s1
c2
FA
zn-1
E. Nett
s0
c1
FA
FA
z2
z1
z=w+x+y
Vorlesung Techn. Informatik II(1) SS 2001
y 21
0
z0
y0
Computerarithmetik (21)
Division
Beispiel:
13
21
274
26
14
13
1
1101
10101
100010010
1101
10000
1101
1110
1101
1
1. Version einer Divisionshardware:
64 Bit Divisor
Rechtsshift
32 Bit Quotient
64-Bit ALU
Linksshift
64 Bit Rest
Vorlesung Techn. Informatik II(1) SS 2001
Schreiben
E. Nett
Kontroll Test
Computerarithmetik (22)
Dazugehöriger Algorithmus:
Start
1. Subtrahiere das Divisorregister vom Restregister und
speichere das Ergebnis im Restregister
Nein
1. Test
Rest < 0?
2a. Linksshift des Quotientenregisters um 1 Bit, setze das
neue rechte Bit auf 1
Ja
2b. Restauriere den ursprünglichen Wert durch Addition
des Divisorregisters zum Restregister und speichere das
Ergebnis im Restregister. Shifte dann das
Quotientenregister nach links um 1 Bit und setze das
neue rechte Bit auf 0.
3. Shifte das Divisorregister 1 Bit nach rechts
33. Wiederholung?
Ja
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Nein
Computerarithmetik (22a)
Dazugehöriges Beispiel:
Schleife
Schritt
0
Anfangswerte
1
1: Rest -= Divisor
2b: wenn Rest < 0 -> +Divisor
Shifte Quotient nach links, Q0=0
3: Shifte Divisor nach rechts
2
1: Rest -= Divisor
2b: wenn Rest < 0 -> +Divisor
Shifte Quotient nach links, Q0=0
3: Shifte Divisor nach rechts
3
1: Rest -= Divisor
2b: wenn Rest < 0 -> +Divisor
Shifte Quotient nach links, Q0=0
3: Shifte Divisor nach rechts
4
1: Rest -= Divisor
2a: wenn Rest = 0 ->
Shifte Quotient nach links, Q0=1
3: Shifte Divisor nach rechts
5
1: Rest -= Divisor
2a: wenn Rest = 0 ->
Shifte Quotient nach links, Q0=1
3: Shifte Divisor nach rechts
Vorlesung Techn. Informatik II(1) SS 2001
Quotient
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0001
0001
0001
0011
0011
E. Nett
Divisor
0010 0000
0010 0000
0010 0000
0001 0000
0001 0000
0001 0000
0000 1000
0000 1000
0000 1000
0000 0100
0000 0100
0000 0100
0000 0010
0000 0010
0000 0010
0000 0001
Rest
0000 0111
1110 0111
0000 0111
0000 0111
1111 0111
0000 0111
0000 0111
1111 1111
0000 0111
0000 0111
0000 0011
0000 0011
0000 0011
0000 0001
0000 0001
0000 0001
Computerarithmetik (23)
2. Version einer Divisionshardware:
Linksshift
32 Bit Divisor
Linksshift
Linksshift
32 Bit Quotient
32-Bit ALU
64 Bit Rest
Vorlesung Techn. Informatik II(1) SS 2001
Linksshift
Schreiben
E. Nett
Kontroll Test
Computerarithmetik (24)
3. Version einer Divisionshardware:
32 Bit Divisor
Linksshift
32-Bit ALU
64 Bit Rest
Vorlesung Techn. Informatik II(1) SS 2001
Links-/Rechtsshift
Schreiben
E. Nett
Kontroll Test
Computerarithmetik (25)
Start
Dazugehöriger Algorithmus:
1. Das Restregister um 1 Bit nach links shiften
2. Subtrahiere das Divisorregister von der linken Hälfte
des Restregisters und speichere das Ergebnis in der
linken Hälfte des Restregisters
Nein
1. Test
Rest <= 0?
3a. Linksshift des Restregisters um 1 Bit, setze das neue
rechte Bit auf 1
Ja
3b. Restauriere den ursprünglichen Wert durch Addition
des Divisorregisters zur linken Hälfte des Restregisters
und speichere das Ergebnis in der linken Hälfte des
Restregisters. Shifte dann das Restregister nach links um
1 Bit und setze das neue rechte Bit auf 0.
32. Wiederholung?
Nein
Ja
Shifte die linke Hälfte des Restregisters 1 Bit nach rechts
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (25)
Dazugehöriges Beispiel:
Schleife
0
Schritt
Anfangswerte
Rest nach links shiften
1
2: Rest -= Divisor
3b: wenn Rest < 0 -> +Divisor
Shifte Rest nach links, R0= 0
2
2: Rest -= Divisor
3b: wenn Rest < 0 -> +Divisor
Shifte Rest nach links, R0= 0
3
2: Rest -= Divisor
3a: wenn Rest = 0 ->
Shifte Rest nach links, R0= 1
4
2: Rest -= Divisor
3a: wenn Rest < 0 ->
Shifte Rest nach links, R0= 1
5
Shifte linke Hälfte des Restes 1 nach rechts
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Divisor
0010
0010
0010
0010
0010
0010
0010
0010
0010
0010
0010
Rest
0000 0111
0000 111 0
1110 111 0
0001 11 0 0
1111 11 00
0011 1 00 0
0001 1 000
0011 000 1
0001 0001
001 0 001 1
0001 0011
Computerarithmetik (26)
Nichtwiederherstellender (nonrestoring) Algorithmus:
Prinzip: Ersetze (r+d) x 2 - d durch r x 2 + d
Division mit Vorzeichen (signed division):
• Operanden werden mit positiven Vorzeichen dargestellt
• Division wird durchgeführt
• Hatten Operanden unterschiedliche Vorzeichen
– Quotient wird mit negativem Vorzeichen dargestellt
– Vorzeichen des Restes:= Vorzeichen des Dividenden
Kriterien für die Qualität der Zahlendarstellung:
• Größe des darstellbaren Zahlenbereichs (range)
• Genauigkeit (precision) der Zahlendarstellung
Diese beiden Kriterien sind prinzipiell unabhängig voneinander.
Wissenschaftliche Notation: n = a x rE
a Mantisse (Argument), r Radix (Basis), E Exponent (Charakteristik)
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (27)
Floating point - Zahlen in normierter Form:
n = (-1)s x a x 2E mit s als Vorzeichenbit und 1 = a < 2
Parameter für mögliche Darstellungen von Floating point - Zahlen :
• Anzahl der insgesamt verfügbaren Bits (Worte)
• jeweils für Mantisse bzw. Exponent:
– Darstellung
– Anzahl der verfügbaren Bits (Trade-off!)
– Lokalisierung
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (27a)
Darstellung im IEEE Standard 754:
32 Bits
Einfache Genauigkeit:
S
Vorzeichen
der Zahl
0 = “+”
1 = “-”
M
E’
23 Bit Mantisse
8 Bit vorzeichenbehafteter
Exponent
Excess-127
Darstellung
Darstellung entspricht:
Beispiel mit
Einfacher Genauigkeit:
±1,M · 2
E’-127
0 00101000 001010…
-87
Darstellung entspricht: 1,001010...0 · 2
64 Bits
Doppelte Genauigkeit:
S
E’
Vorzeichen 11 Bit
Excess-1023
Exponent
Darstellung entspricht:
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
M
52 Bit Mantisse
±1,M · 2
E’-1023
Computerarithmetik (28)
Truncation: Kappung überzähliger Bits durch
• chopping
• von Neuman - runden
• runden
Verallgemeinerter Additions/Subtraktions - Algorithmus:
• Rechtsshift auf der Mantisse des kleineren Operanden zur Angleichung der
Exponenten
• Exponent der Summe/Differenz := Exponent des größten Operanden
• Addition/Subtraktion der Mantissen und Bestimmung des Vorzeichens
• Wenn nötig, Normalisierung des Ergebnisses
Verallgemeinerter Multiplikations/Divisions- Algorithmus:
• Addiere/Subtrahiere die Exponenten und subtrahiere/addiere 127 10
• Multipliziere/Dividiere die Mantissen und bestimme das Vorzeichen
• Wenn nötig, normalisiere das Ergebnis
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Computerarithmetik (29)
Beispiel für die HW - Implementierung einer Addition/Subtraktion:
32 Bit Operanden
A: SA, E’A , M A
B: SB, E’B , MB
{
E’A
}
E’B
MA
8 Bit
Subtrahierer
Vertauscher
Vorzeichen
SA SB
n = [E’A - E’B ]
Addition /
Subtraktion
Addition
Subtraktion
kombinatorisches
SteuerungsNetzwerk
E’A
MB
Vorzeichen
Schieberegister
n Bit nach rechts
M von Zahlen
mit kleinerem E’
M von Zahlen
mit größerem E’
Mantisse
add. / sub.
E’B
Größe M
VornullenErkennung
Multiplexer
X
E’
Normalisieren
und Runden
8 Bit
Subtrahierer
E’ - X
{
R:
SR
E’R
Vorlesung Techn. Informatik II(1) SS 2001
MR
E. Nett
}
32 Bit Ergebnis:
R=A+B
Computerarithmetik (30)
Zusammenfassung:
•
Computerarithmetik ist endlich und kann folglich nicht übereinstimmen mit der
natürlichen Arithmetik
•
Selbst der IEEE 754 - Standard für die floating point - Darstellung, wie jede andere
auch, ist fast immer eine Approximation der realen Zahlen.
•
Rechnersysteme müssen dafür sorgen, den daraus resultierenden Unterschied
zwischen Computerarithmetik und Arithmetik in der realen Welt möglichst zu
minimieren, so etwa im einzelnen durch folgende Techniken:
– Carry-lookahead - Techniken für Addierer mit hoher Performanz
– Für schnelle Multiplizierer: Booth-Algorithmus und Methode des Bit-pairing zur
Reduzierung der Anzahl der benötigten Operationen für die Erzeugung des
Produkts, Carry-save - Addition zur nochmaligen substantiellen Reduzierung auf
letztlich zwei zu addierende Summanden nach der carry-lookahead - Technik.
•
Programmierer sollten sich dieser Zusammenhänge bewußt sein.
Vorlesung Techn. Informatik II(1) SS 2001
E. Nett
Herunterladen