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 Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (2) Mikroprozessor Wortlänge (Bits 8085, Z80, 6809 8 8086, 68000 16 80386, 68020 32 Pentium, PowerPC (Sun SPARC, IBM AIX) 32 typischer Mikrocontroller (4), 8, 16, (32) Cray-1 Supercomputer, Intel Itanium, AMD Opteron 64 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (3) Beispiel: Rechnung mit Menge aller dreistelligen positiven Zahlen Zahlenbereich: 000, 001, ... 998, 999 • • • • 600 + 600 = 1200 002 − 005 = −2 050 ⋅ 800 = 2500 Ergebnis zu groß, Überlauf Ergebnis zu klein, Unterlauf Ergebnis zu groß, Überlauf Folglich: bei Zahlen mit endlicher Genauigkeit gilt die Abgeschlossenheit nicht Aus Sicht der klassischen Mathematik können Ergebnisse entstehen, die falsch sind Allerdings werden sie völlig korrekt vom Rechner ermittelt Ursache: endliche Natur des Gerätes Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (4) Beispiel: Assoziativgesetz Zahlenbereich: 000, 001, ... 998, 999 • Reihenfolge der Berechnung hängt ab, ob von rechts nach links oder links nach rechts ausgewertet wird 𝑎+ 𝑏−𝑐 = 𝑎+𝑏 −𝑐 700 + 400 − 300 = 700 + 400 − 300 700 + 100 = 1100 − 300 800 = ? Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 mit a = 700, b = 400, c = 300 Ergebnis zu groß, Überlauf T. Ihme Computerarithmetik (5) Beispiel: Distributivgesetz Zahlenbereich: 000, 001, ... 998, 999 • Obwohl mathematisch gleichwertig, hängt das Einhalten des Zahlenbereiches von der konkreten Umsetzung der Rechnung ab 𝑎⋅ 𝑏−𝑐 =𝑎⋅𝑏−𝑎⋅𝑐 5 ⋅ 210 − 192 = 5 ⋅ 210 − 5 ⋅ 192 5 ⋅ 18 = 1050 − 960 90 = ? Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 mit 𝑎 = 5, 𝑏 = 210, 𝑐 = 192 Ergebnis zu groß, Überlauf T. Ihme Computerarithmetik (6) 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 + 0 • 25 + 1 • 24 + 0 • 23 + 0 • 22 + 0 • 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 • 162 + 13 • 161 + 1 • 160 1792 + 208 + 1 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (7) 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 0 1 10 11 111 1000 1010 1011 1100 1111 10000 10100 110010 111100 1010000 1100100 1111101000 101110101101 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 oktal hexadezimal 0 1 2 3 7 8 A B C F 10 14 32 3C 50 64 3E8 BAD 0 1 2 3 7 10 12 13 14 17 20 24 62 74 120 144 1750 5655 T. Ihme Computerarithmetik (8) 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 Hexabinär dezimal 8 9 a b c d e f 1000 1001 1010 1011 1100 1101 1110 1111 Quotient 1492 746 373 186 93 46 23 11 5 2 1 0 Rest 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 0 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (9) Beispiel: Umwandlung Dezimal zu Binär Variante 1: Subtraktion der nächsten passenden Zweierpotenz 1500 476 220 92 28 12 4 - 1024 256 128 64 16 8 4 (210) (28) (27) (26) (24) (23) (22) = = = = = = = 476 220 92 28 12 4 2 150010 = 101110111002 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (10) Beispiel: Umwandlung Dezimal zu Binär Variante 2: Divisionsmethode 1500 : 2 = 750 R 750 : 2 = 375 R 375 : 2 = 187 R 187 : 2 = 93 R 93 : 2 = 46 R 46 : 2 = 23 R 23 : 2 = 11 R 11 : 2 = 5 R 5:2= 2R 2:2= 1R 1:2= 0R 0 0 1 1 1 0 1 1 1 0 1 10111011100 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (11) Beispiel: Umwandlung Dezimal zu Hexadezimal Divisionsmethode 1500 : 16 = 93 R 12 → C 93 : 16 = 5 R 13 → D 5 : 16 = 0 R 5 → 5 5 D C 16 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (12) Beispiel: Umwandlung Binär zu Hexadezimal Bilden von Tetraden 0101 1101 11002 5 D C16 Beispiel: Umwandlung Binär zu Oktal Bildung von Triaden 010 111 011 1002 2 7 3 88 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (13) Beispiel: Umwandlung Binär zu Dezimal 2 ((((( 1 ) 2 + 0) 2 + 1) 2 + 1) 2 + 0) =2 =5 = 11 = 2210 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (14) Beispiel: Umwandlung Binär zu Dezimal 8 (((( 2 ) 8 + 7) 8 + 3) 8 + 4) = 23 = 187 = 150010 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (15) Beispiel: Umwandlung Binär zu Dezimal 16 ((( 5 ) 16 + 13) 16 + 12) = 93 = 150010 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (16) BCD (Binary Coded Decimal): • • • weitere Möglichkeit der Zahlendarstellung auf der Basis von 2 Ziffern Es wird mit 4 Binärstellen jeweils eine Dezimalstelle codiert Eine reine Binärrechnung führt nicht zum korrekten Ergebnis, wie folgende Rechnung zeigt: 473910 + 128710 602610 0100 0111 0011 1001 + 0001 0010 1000 0111 0101 1001 1100 0000 =59?010 510 910 1210 010 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (17) BCD (Binary Coded Decimal): • Da von den 16 möglichen Binärcodierungen nur 10 genutzt werden, müssen die nicht genutzten Codes durch eine zusätzliche Korrekturrechnung übersprungen werden, sobald diese bei der Rechnung erreicht oder übersprungen werden Bisheriges falsches Ergebnis: Richtiges Ergebnis 602610 • 0101 1001 1100 0000 0110 0101 1001 1100 0110 1 0110 0101 1010 0010 0110 1 0110 0110 0000 0010 0110 Übertrag Ungültige BCD-Ziffer Ungültige BCD-Ziffer Viele Prozessoren und Mikrocontroller besitzen Spezialbefehle für BCDRechnungen Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (18) 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 Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (19) 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 𝑆 das Vorzeichenbit und 𝑀 der Betrag (Größe) einer ganzen Zahl 𝑍, dann ist ihr Wert gegeben durch: 𝑍 ≔ −1 𝑆 ⋅ 𝑀 Der Wertebereich bei einem gegebenen 𝑛-bit-Wort liegt im Intervall −(2−1 − 1), + 2𝑛−1 − 1 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (20) Darstellung ganzer Zahlen (signed numbers) 1. Die Vorzeichen/Betrags - Darstellung (sign and magnitude): Fall 1 2 3 4 Operanden +x,+y -x,-y +x,-y mit x ≥ y oder Auszuführende Operationen +(x+y) Addition -(x+y) Addition Subtraktion + ( x − y) -x,+y mit y ≥ x + ( y − x) +x,-y mit x < y oder − ( x − y) -x,+y mit y < x − ( y − x) Subtraktion 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 Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (21) 2. Die Komplement - Darstellung Komplement: „Ergänzung“ 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 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (22) 2a. Einer - Komplement b-1 - Komplement: 𝑧 + 𝑧𝐸𝐸 = 𝑏 𝑛 − 1 mit 𝑧𝐸𝐾 = −𝑧 𝑛 = Länge der Darstellung von 𝑧 𝑏 = Basis Das Einer - Komplement −𝑧 = 𝑧𝐸𝐸 einer binären Zahl 𝑧 ∈ 0, 2𝑛−1 − 1 erreicht man durch bitweises Invertieren von 𝑧 • • • • 𝑧 ∈ 0, 2𝑛−1 − 1 𝑧𝐸𝐸 ∈ − 2𝑛−1 − 1 , 0 𝑧𝐸𝐸 = 2𝑛 − 𝑧 − 1 Der Wertebereich des Zweier - Komplements ist − 2𝑛−1 − 1 , + 2𝑛−1 − 1 Subtraktion:= Addition + end-around-carry, d.h. zu der Summe wird das „linke“ Bit der Summe aufaddiert. Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (23) 2a. Einer - Komplement Fall 1: x–y mit x>y x = +9 = +010012 = 01001 y = −4 = −001002 = 11011 01001 + 11011=1 00100 00100 +1 = 00101 = 510 Das Carry-out ist bei x>y immer 1. x − y = x + (2n − y − 1) = 2n + ( x − y ) − 1 . Dies ist aber genau x-y, wenn man das Carry-out streicht und den Wert Eins dazuaddiert. Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (24) 2a. Einer - Komplement Fall 2: x–y mit x<y x = +4 = +00100 2 = 00100 y = −9 = − 0 1 0 0 12 = 10110 00100+ 0 10110 = 11010 11010+ 0 = 11010 = −00101 = −510 Das Carry-out ist bei x<y immer 0.Wir haben eben gesehen, dass x − y = 2 n + ( x − y ) − 1 . Wegen x<y ist die rechte Seite negativ, also − ( x − y ) = 2 n − (2 n − ( x − y ) + 1) − 1 = −( x − y ) . Daraus folgt, dass die Addition ohne weitere Korrektur immer das richtige Ergebnis ergibt, nachdem man bitweise invertiert hat. Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (25) 2a. Einer - Komplement Fall 3: Addition zweier negativer Zahlen x = −4 = − − 00100 2 = 11011 y = −9 = − 0 1 0 0 12 = 10110 11011 + 10110=1 10001 10001+1 = 10010 = −01101 = −1310 Das Carry-out ist bei zwei negativen Zahlen immer 1. − x + ( − y ) = ( 2 n − x − 1) + ( 2 n − y − 1) = 2n − 1 + 2n − 1 − ( x + y) = 2 n − 1 + 2 n − 1 − ( 2 n − ( x + y ) − 1) = 2n − 1 + 2n − 1 − 2n − ( x + y) − 1 = 2n − ( x + y) − 1 = −( x + y ) Hier hat man die Rechnung auf obigen Fall 1. zurückgeführt, es muss nur noch invertiert werden. Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (26) 2a. Einer - Komplement Vorteil: • zusätzliches Subtrahierwerk überflüssig Nachteile: • keine eindeutige Darstellung der Null (+0, −0) • kein echtes Komplement, da −𝑥 + 𝑥 = 0 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (27) 2b. Zweier - Komplement b - Komplement: 𝑧 + 𝑧𝑍𝐾 = 𝑏 𝑛 mit 𝑧𝑍𝑍 = −𝑧 𝑛 = Länge der Darstellung von 𝑧 𝑏 = Basis Das Zweier - Komplement ist ein echtes Komplement I: 𝑧 + 𝑧𝑍𝑍 = 𝑏 𝑛 • 𝑧𝑍𝑍 = 2𝑛 − 𝑧 II: 𝑧 + 𝑧𝐸𝐸 = 𝑏 𝑛 − 1 • 𝑧𝑍𝑍 = 𝑧𝐸𝐸 + 1 I-II: 𝑧𝑍𝑍 = 𝑧𝐸𝐸 + 1 • 𝑧𝑍𝑍 = (bitweises Invertieren von 𝑁) +1 • 𝑧𝑍𝑍 ∈ −2𝑛 • Es gibt eine eindeutige Darstellung der Null • Der Wertebereich des Zweier - Komplements ist −2𝑛−1 , +2𝑛−1 − 1 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (28) 2b. Zweier - Komplement 1. x–y mit x>y x = 5 = 0101 y = −3 = 1101 = −(0011 + 1) 0101 + 1101=1 0010 = 2 Wie man sieht, kann man das Carry-out einfach ignorieren, es ist keine Korrekturaddition mehr notwendig. 2. –x–y x = −3 = 1101 y = −4 = 1100 1101 + 1100 =1 1001 = −7 Auch hier ist die Berücksichtigung des Carry-Out nicht notwendig. Vorteil: • zusätzliches Subtrahierwerk überflüssig • eindeutige Null • keine Korrekturrecvhnung Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (29) Visualisierung des Zweier - Komplements sowie der Addition 0000 1111 1110 -1 0001 -2 1101 0010 0 +1 +2 +3 -3 -4 1100 1011 0011 +4 0100 +5 -5 -6 +6 -7 -8 +7 1010 1001 1000 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 0101 0110 0111 T. Ihme Computerarithmetik (30) Einfache Additions- (Subtraktions-) Regeln 𝑥 + 𝑦: Addition der entsprechenden 2er - Komplemente ergibt korrekte Summe im 2er - Komplement, solange der Wertebereich nicht überschritten wird. 𝑥 − 𝑦: 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 Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (31) Overflow (Summe liegt außerhalb des Wertebereiches): Wichtig: Erkennung des Overflows • Bei vorzeichenloser Integer-Addition dient das carry-out-bit als Überlauf-Indikator. mit der Wortbreite nicht mehr darstellbarer Überrag • 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: 𝑉 = 𝑎𝑛−1 𝑏𝑛−1 𝑠𝑛−1 + 𝑎𝑛−1 𝑏𝑛−1 𝑠𝑛−1 (Die Faktoren repräsentieren die Vorzeichenbits der Summanden 𝑎 und 𝑏 sowie der Summe 𝑠) Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (32) Symbol: Wahrheitstabelle Halbaddierer: A B S C 0 0 1 1 0 1 0 1 0 1 1 0 0 0 0 1 𝑆 =𝐴𝐵+𝐴𝐵 (Exklusiv-Oder) B 1 1 HA Carry: 𝐶 =𝐴𝐵 Implementierung: A & A ≥1 B S ≥1 & & & S 1 & S & B C 1 C Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 Cout & A S & & B A Summe: T. Ihme C Computerarithmetik (34) 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 Symbol: FA S Cout Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 Implementierung eines Volladdierers mittels zweier Halbaddierer T. Ihme Computerarithmetik (35) Schaltung für einen Volladdierers: B A C 1 1 1 & & C B & ≥1 & A S & & & Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme ≥1 C Computerarithmetik (36) Serieller Addierer (SA): A Shift-Register Summen-Shift-Register B Shift-Register A S B FA Cin Q Carry Flip Flop Shift Takt Cout D C n Pulse pro Addition Paralleladdierer (RCA): A B Cin A B Cin A B Cin A B Cin Übertrag 1. Ebene FA FA FA FA Übertrag Cout Sm-1 Cout Sm-2 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 Cout S1 Cout T. Ihme S0 Computerarithmetik (37) Implementierung eines 4-Bit-Carry-Lookahead-Addierers g2 p2 p3 x0 y0 x1y1 x2 y2 x3 y3 g0 p0 g1 p1 c0 / cin c3 c4 c2 2 GLZ c1 c4 / cout FA FA FA FA s3 s2 s1 s0 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 1 GLZ T. Ihme 3 GLZ Computerarithmetik (38) Implementierung eines 4-Bit-Carry-Lookahead-Addierers Verkettung mehrerer Teiladdierer x31 y31 … x28 y28 x7 y7 … x4 y4 x3 y3 … x0 y0 s31 … s28 s7 … s4 s3 … s0 Resultierende Laufzeit s0 … s3 … … s4 … s7 … s28 … s31 … 0 1 2 3 4 5 6 7 8 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 15 T. Ihme 17 20 GLZ Computerarithmetik (39) Rechenzeit zur Addition zweier 32 Bit-Zahlen B) Ripple Carry Adder (RCA) A) Serial Addier 3 GLZ pro Additionsschritt (Mindestzeit, da Taktung entscheidend) 31 * 2 GLZ (Ripple Carry) 1 * 3 GLZ (letzte Addition) 65 GLZ 32 ⋅ 3 𝐺𝐺𝐺 = 96 𝐺𝐺𝐺 C) 4-Bit Carry-Lookahead Adder (CLA) = 62 GLZ = 3 GLZ D) hierarchical Carry-Lookahead Adder Zusammenschaltung von 8 4-Bit CLA CLA mit 8x 4-Bit CLA 1 ⋅ 1 𝐺𝐺𝐺 (𝑔𝑖 𝑢𝑢𝑢 𝑝𝑖) 8 ⋅ 2 𝐺𝐺𝐺 (𝑐1 … 𝑐4) 1 ⋅ 3 𝐺𝐺𝐺 letzte Addition 1 * 1 GLZ (gi und pi) 1 * 2 GLZ (Gi und Pi) 2 * 2 GLZ (C1 ... C4) 1 * 2 GLZ (c31) 1 * 3 GLZ (letzte Addition) = 1 𝐺𝐺𝐺 = 16 𝐺𝐺𝐺 = 3 𝐺𝐺𝐺 20 𝐺𝐺𝐺 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 = = = = = 1 GLZ 2 GLZ 4 GLZ 2 GLZ 3 GLZ 12 GLZ T. Ihme Computerarithmetik (40) Multiplikation 1. Version einer Multiplikationshardware: 64 Bit Multiplikand 64-Bit ALU Linksshift Kontroll Test Write 64 Bit Produkt Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 32 Bit Multiplikator T. Ihme Rechtsshift Computerarithmetik (41) 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? Nein Ja Stop Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (42) Dazugehöriges Beispiel: Schleife Schritt 0 Anfangswerte 1 1a: 1 Produkt += Multiplikator 2: Shifte Multiplikand nach links 3: Shifte Multiplikator nach rechts 2 1a: 1 Produkt += Multiplikator 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 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 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme 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 (43) 2. Version einer Multiplikationshardware: 32 Bit Multiplikand 32 Bit Multiplikator 32-Bit ALU Kontroll Test Write 64 Bit Produkt Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 Rechtsshift T. Ihme Rechtsshift Computerarithmetik (44) 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? Nein Ja Stop Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (45) 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 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 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme 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 (46) 3. Version einer Multiplikationshardware: 32 Bit Multiplikand 32-Bit ALU Write 64 Bit Produkt Kontroll Test Rechtsshift Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (47) 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? Nein Ja Stop Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (48) 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 Rechnerarchitektur und Rechnertechnik WS 2017 Multiplikand 0010 0010 0010 0010 0010 0010 0010 0010 0010 T. Ihme Produkt 0000 0011 0010 0011 0001 0001 0011 0001 0001 1000 0001 1000 0000 1100 0000 1100 0000 0110 Computerarithmetik (49) Signed multiplication (Multiplikation mit Vorzeichen) Prinzip der Multiplikation mit Vorzeichen: a) Fallunterscheidung entsprechend der Vorzeichen der Faktoren. +𝑎 (+𝑎) (−𝑎) (−𝑎) · · · · (+𝑏) (−𝑏) (+𝑏) (−𝑏) Ergebnis hat positives Vorzeichen Ergebnis hat negatives Vorzeichen Ergebnis hat negatives Vorzeichen Ergebnis hat positives Vorzeichen b) Nutzung eines Algorithmus, der vorzeichenbehaftete Zahlen verarbeitet Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (50) Der Booth-Algorithmus • Darstellung einer Zahl durch eine größere Zahl abzüglich einer Differenz • Größere Zahl wird so gewählt, dass möglichst wenig Einsen • Differenz zwischen darzustellender Zahl und größerer Zahl 7 8 -1 0 1 0 +1 1 0 0 0 1 1 0 0 0 -1 0 -1 Merkhilfe: 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 0 0 0 0 0 1 +1 „0 +1 = 1“ 1 0 -1 „1 -1 = 0“ 0 0 0 „0 +0 = 0“ 1 1 0 „1 +0 = 1“ (0) Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (51) 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 1 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. • Tatsächliche Anzahl ist nicht bekannt. • Es können positive und negative Faktoren verarbeitet werden. Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (52) 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 += Multiplikand 0010 0001 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 Rechnerarchitektur und Rechnertechnik WS 2017 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 T. Ihme Computerarithmetik (53) Beispiel 2 x (-3): Schleife Schritt 0 Anfangswerte 1 1c: 10 Produkt –= Multiplikand 2: Shifte Produkt nach rechts 2 1b: 01 Produkt += Multiplikand 2: Shifte Produkt nach rechts 3 1c: 10 Produkt –= Multiplikand 2: Shifte Produkt nach rechts 4 1d: 11 keine Operation nötig 2: Shifte Produkt nach rechts Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 Multiplikand 0010 0010 0010 0010 0010 0010 0010 0010 0010 T. Ihme Produkt 0000 1101 0 1110 1101 0 1111 0110 1 0001 0110 1 0000 1011 0 1110 1011 0 1111 0101 1 1111 0101 1 1111 1010 1 Computerarithmetik (54) Schnelle Multiplikation A) Beschleunigung der Berechnung durch Verringerung der Anzahl von Teilprodukten Bit Pair Recoding Ausgangspunkt: Codierung nach Booth-Algorithmus Folgende Bit-Kombinationen treten auf und können umcodiert werden: +2𝑛 – 𝑛 = +𝑛 +1 -1 0 +1 – 2𝑛 + 𝑛 = −𝑛 -1 +1 0 -1 +2𝑛 + 0 = +2𝑛 +1 0 0 +2 – 2𝑛 + 0 = – 2𝑛 -1 0 0 -2 +0 + 𝑛 = +𝑛 0 +1 0 +1 +0 – 𝑛 = – 𝑛 0 0 0 0 0 -1 0 -1 Ergebnis: 1 Stelle ist stets 0 5 Fallunterscheidungen: +2, +1, 0, -1, -2 somit Halbierung der Summandenanzahl Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 0 + 0 = 0 Verarbeitung: „2“ entspricht einem Linksschift Fälle +1, 0, -1 wie bei Booth T. Ihme Computerarithmetik (55) Schnelle Multiplikation B) Beschleunigung der Berechnung schnelle Addition Ripple-Carry-Adder: wn-1 xn-1 FA 0 an FA zn+1 zn yn-1 an-1 FA zn-1 w1 x1 w0 x0 FA FA y1 a1 0 a0 y0 FA FA z1 z0 0 Nachteil: Carry-Bit muss durch alle Stellen „durchgereicht“ werden Dadurch lange Rechenzeit Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (56) Schnelle Multiplikation B) Beschleunigung der Berechnung schnelle Addition Prinzip Carry Save Adder (CSA) Volladdierer addiert eigentlich 3 Bits , erzeugt 2 Ergebnisbits (S + 2C) somit Reduzierung der Operanden von 3 auf 2 Vermeidung des „Durchreichens“ des Carry-Bits Carry-Vektor wird Summand 1 2 Addition mit Carry 8 Σ 3 C 8 S 7 C10 n 4 5 … Carry-Vektor wird Summand Σ C n+1 C 8n Σ S 9 C 10 S 11 C 12 Σ Σ Ergebnis C12 n C12 n+1 6 Beispiel zur Addition mehrerer Summanden der Stellen 10 C n+1 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (57) Schnelle Multiplikation B) Beschleunigung der Berechnung schnelle Addition Beispiel für eine Implementierung mit CSA: wn-1 xn-1 yn-1 carry-save addition FA cn 0 FA zn+1 zn w 1 x1 zn-1 FA s1 c2 FA s0 c1 FA FA z2 z1 z=w+x+y Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 w 0 x0 y1 FA s2 sn-1 cn-1 FA y2 x2 w2 T. Ihme 0 z0 y0 Computerarithmetik (58) Division a) Beispiel Schriftliche Division im Dezimalsystem 274 26 14 13 1 : 13 = 21 b) Beispiel Division im Binärsystem Testsubtraktion Testsubtraktion Wiederherstellen Testsubtraktion Testsubtraktion Wiederherstellen Testsubtraktion Rest ZK(01101)= 10011 100010010 10011 001000 10011 11011 01101 010000 10011 000111 10011 11010 01101 001110 10011 00001 Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 : 01101 = 10101 (>0) Q= 1 (<0) Q= (>0) Q= (<0) Q= (>0) Q= T. Ihme 0 1 0 1 Computerarithmetik (59) 1. Version einer Divisionshardware: 64 Bit Divisor Rechtsshift 32 Bit Quotient 64-Bit ALU Linksshift 64 Bit Rest Schreiben Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 Kontroll Test T. Ihme Computerarithmetik (60) 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? Nein Ja Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (61) 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 Rechnerarchitektur und Rechnertechnik WS 2017 Quotient 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0001 0001 0011 0011 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 T. Ihme 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 (62) 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 Rechnerarchitektur und Rechnertechnik WS 2017 Quotient 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0001 0001 0011 0011 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 T. Ihme 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 (63) 2. Version einer Divisionshardware: 32 Bit Divisor Linksshift 32 Bit Quotient 32-Bit ALU 64 Bit Rest Linksshift Schreiben Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 Kontroll Test T. Ihme Computerarithmetik (64) 3. Version einer Divisionshardware: 32 Bit Divisor 32-Bit ALU 64 Bit Rest Links-/Rechtsshift Schreiben Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 Kontroll Test T. Ihme Computerarithmetik (65) 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 3. Test Rest < 0? Nein 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. 31. Wiederholung? Nein Ja Shifte die linke Hälfte des Restregisters 1 Bit nach rechts Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (66) 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 3b: wenn Rest ≥ 0 Shifte Rest nach links, R0=1 4 2: Rest –= Divisor 3b: wenn Rest ≥ 0 Shifte Rest nach links, R0=1 5 Shifte linke Hälfte des Restes nach links Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 Divisor 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 Rest 0000 0111 0000 1110 1110 1110 0001 1100 1111 1100 0011 1000 0001 1000 0011 0001 0001 0001 0010 0011 0001 0011 T. Ihme Computerarithmetik (67) Nichtwiederherstellender (non restoring) Algorithmus zur Division: Prinzip: Ersetze 𝑟 + 𝑑 ⋅ 2 − 𝑑 durch 2𝑟 + 𝑑 auf Basis folgender Überlegung: • • Falls Ergebnis der Testsubtraktion negativ, also 𝑟 − 𝑑 < 0, erfolgt eine Wiederherstellung des ursprünglichen Restes durch Addition von 𝑑, daraus ergibt sich 𝑟+𝑑 Bei Übergang zur nächsten Stelle erfolgt Verschiebung des Restes eine Stelle nach links, das entspricht einer Multiplikation mit 2 𝑟+𝑑 ⋅2 • Nun erfolgt die nächste Testsubtraktion • 𝑟+𝑑 ⋅2−𝑑 • Vereinfachung: 𝑟 + 𝑑 ⋅ 2 − 𝑑 = 2𝑟 + 2𝑑 − 𝑑 = 2𝑟 + 𝑑 Folglich kann die Wiederherstellung mit folgender Testsubtraktion durch eine Testaddition in der nächsten Stelle mit 𝑟 + 𝑑 ersetzt werden Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (68) Beispiel zum nichtwiederherstellenden Algorithmus zur Division: ZK(01101)= 10011 Testsubtraktion Testsubtraktion Testaddition Testsubtraktion Testaddition Rest 100010010 10011 001000 10011 110110 01101 0000111 10011 110100 01101 00001 : 01101 = 10101 (>0) Q= 1 (<0) Q= (>0) Q= (<0) Q= (>0) Q= Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 0 1 0 1 T. Ihme Computerarithmetik (69) 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: 𝑛 = 𝑎 ⋅ 𝑟𝐸 𝑎 - Mantisse (Argument) 𝑟 - Radix (Basis) 𝐸 - Exponent (Charakteristik) Floating point - Zahlen in normierter Form: 𝑛 = −1𝑠 ⋅ 𝑎 ⋅ 2𝐸 mit 𝑠 als Vorzeichenbit und 1 ≤ 𝑎 < 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 Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (70) 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 ±1,M · 2 Darstellung entspricht: Beispiel mit Einfacher Genauigkeit: E’-127 0 00101000 001010… Darstellung entspricht: 1,001010...0 · 2 64 Bits Doppelte Genauigkeit: S Vorzeichen 11 Bit Excess-1023 Exponent Darstellung entspricht: Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 M E’ 52 Bit Mantisse ±1,M · 2 T. Ihme E’-1023 -87 Computerarithmetik (71) Truncation: Kappung überzähliger Bits durch • chopping • von Neuman - Runden • runden Kappung überzähliger Bits - Chopping Prinzip • Abschneiden der zu rundenden Stellen Beispiel: 0, b1 b2 b3 b4 b5 b6 Rundung auf 3 Nachkommastellen 0, b1 b2 b3 b4 b5 b6 0, b1 b2 b3 Fehler: • Zwischen 0 ≤ e < 1 der letzten verbleibenden Stelle (hier b3) • unsymmetrischer Fehler Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (72) Kappung überzähliger Bits – Von-Neumann-Runden Prinzip • Wenn zu rundende Stellen ungleich 0 letzte verbleibende Stelle = 1 • Wenn alle zu rundende Stellen gleich 0 letzte verbleibende Stelle = 0 Beispiel: 0, b1 b2 b3 b4 b5 b6 Rundung auf 3 Nachkommastellen a) 0, b1 b2 b3 1 0 1 0, b1 b2 1 b) 0, b1 b2 b3 0 0 0 0, b1 b2 0 Fehler • -1 < e < +1 der letzten verbleibenden Stelle, (hier b3) • symmetrischer Fehler Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (73) Kappung überzähliger Bits – Runden Prinzip • Unverzerrte oder mathematische Rundung • Runden zur nächstgelegenen gekürzten Darstellung • Falls eindeutige Bestimmung der nächstgelegenen gekürzten Darstellung nicht möglich, d.h. erste zu rundende Stelle = 1 und alle anderen zu rundenden Stellen = 0 Runden zur nächsten „geraden“ Zahl Beispiel: 0, b1 b2 b3 b4 b5 b6 Rundung auf 3 Nachkommastellen a) 0, b1 b2 b3 1 0 1 0, b1 b2 b3 + 0, 0 0 1 0, b1 b2 b3 0 1 1 0, b1 b2 b3 b) 0, b1 b2 b3 1 0 0 Fallunterscheidung b1) falls b3 = 0 0, b1 b2 0 b2) falls b3 = 1 0, b1 b2 1 + 0, 0 0 1 Fehler: • -0,5 < e < +0,5 der letzten verbleibenden Stelle (hier b3) • symmetrischer Fehler Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Wiederholung Mathematik 4. Klasse: Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (74) 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 12710 • Multipliziere/Dividiere die Mantissen und bestimme das Vorzeichen • Wenn nötig, normalisiere das Ergebnis Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme Computerarithmetik (75) Beispiel für die HW - Implementierung einer Addition/Subtraktion: 32 Bit Operanden A: SA , E’A , MA B: SB , E’B , MB { E’A } MA E’B 8 Bit Subtrahierer Vorzeichen SA SB Vertauscher 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 Rechnerarchitektur und Rechnertechnik WS 2017 MR } T. Ihme 32 Bit Ergebnis: R=A+B Computerarithmetik (76) 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 Bit-pair recoding 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 bewusst sein. Vorlesung Rechnerarchitektur und Rechnertechnik WS 2017 T. Ihme