Computerarithmetik (1)

Ähnliche Dokumente
Computerarithmetik (1)

Zahlen und Zeichen (1)

(eindimensionaler) Paritätscode: Codes (8a)

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

Rechnergrundlagen SS Vorlesung

Multiplizierer. Beispiel komplexer arithmetischer Schaltung. Langsamer als Addition, braucht mehr Platz. Sequentielle Multiplikation

6. Zahlendarstellungen und Rechnerarithmetik

Grundlagen der Technischen Informatik. 3. Übung

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke

Informationsmenge. Maßeinheit: 1 Bit. 1 Byte. Umrechnungen: Informationsmenge zur Beantwortung einer Binärfrage kleinstmögliche Informationseinheit

Kapitel 5: Darstellung von Daten im Rechner

Inhalt. Zahlendarstellungen

Zahlendarstellungen und Rechnerarithmetik*

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen

E Zahlendarstellungen und Rechnerarithmetik

Teil 2: Rechnerorganisation

Teil 2: Rechnerorganisation

Einführung in die Informatik I

Motivation 31. Mai 2005

Rechnergrundlagen SS Vorlesung

Grundlagen der Technischen Informatik. 3. Übung. Christian Knell Keine Garantie für Korrekt-/Vollständigkeit

Computer Arithmetik. Computer Arithmetik Allgemein

Arithmetik. Zahlendarstellung, Addition und Subtraktion Multiplikation, Division, Fest- und Gleitkommazahlen

Algorithmen zur Division

Wandeln Sie die folgenden Zahlen in Binärzahlen und Hexadezimalzahlen. Teilen durch die Basis des Zahlensystems. Der jeweilige Rest ergibt die Ziffer.

Rechnergrundlagen SS Vorlesung

Aufgabe 1. Aufgabe 2. Abbildung 1: Schaltung für die Multiplikation mit 4

3 Rechnen und Schaltnetze

Wertebereiche, Overflow und Underflow

Vorlesung Programmieren

Rückblick. Zahlendarstellung zu einer beliebigen Basis b. Umwandlung zwischen Zahlendarstellung (214) 5 = (278) 10 =(?) 8

6.2 Kodierung von Zahlen

Rechnergrundlagen SS Vorlesung

Musterlösung 1. Mikroprozessortechnik und Eingebettete Systeme 1 WS2015/2016

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = binär

Dipl.-Ing. Halit Ünver Datenbanken/Künstliche Intelligenz FAW/n. Zahlensysteme

Zahlensysteme und Kodes. Prof. Metzler

HaDePrak WS 05/ Versuch

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

Kapitel 6 Darstellung von Daten im Rechner. Kapitel 6: Darstellung von Daten im Rechner Seite 1 / 63

Lösungsvorschlag 4. Übung Technische Grundlagen der Informatik II Sommersemester 2009

2 Darstellung von Zahlen und Zeichen

Arithmetik: Vorzeichenregeln und Überlauf, Exponenten & Normalisierung, Umrechnungen. Architektur: - Rechnerarchitektur, Instruktionssatz, Assembler

Arithmetik. Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck

Einführung in die Informatik I

Rechnerstrukturen. Michael Engel und Peter Marwedel SS TU Dortmund, Fakultät für Informatik

Rechnerstrukturen. Michael Engel und Peter Marwedel WS 2013/14. TU Dortmund, Fakultät für Informatik

Rechnerstrukturen WS 2012/13

Datendarstellung Teil 2

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben

2.1.2 Gleitkommazahlen

Algorithmen zur Integer-Multiplikation

Übung Praktische Informatik II

Das negative Zweierkomplementzahlensystem. Ines Junold 23. Februar 2010

Rechnerstrukturen, Teil 1. Vorlesung 4 SWS WS 14/15

Das Rechnermodell - Funktion

2.Vorlesung Grundlagen der Informatik

Grundlagen der Technischen Informatik. 4. Übung

Datendarstellung Teil 2

Zahlensysteme. Formale Methoden der Informatik WiSe 2008/2009 Folie 1 (von 54)

Algorithmen zur Division

Grundlagen der Rechnerarchitektur

G Zahlendarstellung und Rechnerarithmetik

Kapitel 2 Grundlegende Konzepte. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Die Zahl ist: (z 2, z 1, z 0 ) (z ) : 7 = 0 Rest z 2

Informatik I Modul 5: Rechnerarithmetik (2)

1. Vorzeichen und Betrag (engl. Sign-/Magnitude) 2. Stellenkomplement 3. Basiskomplement

DuE-Tutorien 16 und 17

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Division

5 Zahlenformate und deren Grenzen

Binäre Gleitkommazahlen

GTI ÜBUNG 4 BINÄR-, HEX- UND GLEITKOMMAZAHLEN-ARITHMETIK

1. Tutorium Digitaltechnik und Entwurfsverfahren

Repräsentation von Daten: Binär-, Oktal- u. Hexadezimalcodierung von ganzen und rationalen Zahlen

Grundlagen der Informatik 2 Grundlagen der Digitaltechnik. 1. Zahlensysteme

Das Maschinenmodell Datenrepräsentation

Einführung in die Informatik I

Zwischenklausur Informatik, WS 2014/15

Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer?

Einführung in die Informatik

Übung Programmieren - Zahlendarstellung, SSH, SCP, Shellskripte -

Numerisches Programmieren, Übungen

Grundlagen der Technischen Informatik. 4. Übung

Grundlagen der Technischen Informatik Wintersemester 12/13 J. Kaiser, IVS-EOS

01 - Zahlendarstellung

Kapitel 2. Zahlensysteme

Gleitkommaarithmetik. Erhöhen der Genauigkeit. Grundlagen der Rechnerarchitektur Logik und Arithmetik 124

Grundlagen der Technischen Informatik. 4. Übung

Lösung 1. Übungsblatt

Grundlagen der Rechnerarchitektur. Binäre Logik und Arithmetik

RO-Tutorien 3 / 6 / 12

Binäre Division. Binäre Division (Forts.)

Zahlen in Binärdarstellung

, 2014W Übungstermin: Fr.,

BB/CS- SS00 Rechner im Überblick 1/1. Ein Stellenwertsystem (Zahlensystem) ist ein Tripel S = (b, Z, δ) mit den folgenden Eigenschaften:

Darstellung von negativen binären Zahlen

Zum Nachdenken. Wenn die Zahl (123) hat, was könnte dann (123,45) 10

II. Grundlagen der Programmierung

Integrierte Schaltungen

Transkript:

Computerarithmetik () 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.

Computerarithmetik (2) Mikroprozessor Wortlänge (Bits 885, Z8, 689 8 886, 68 6 8386, 682 32 Pentium, PowerPC 32 (Sun SPARC, IBM AIX) typischer Mikrocontroller (4), 8, 6, (32) Cray-, Intel Itanium, AMD Opteron, IA X86-64 64

Computerarithmetik (3) Beispiel: Rechnung mit Menge aller dreistelligen positiven Zahlen Zahlenbereich:,,... 998, 999 6 + 6 = 2 Ergebnis zu groß, Überlauf 2 5 = 3 Ergebnis zu klein, Unterlauf 5 5 = 25 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 rechnerinternen Zahlenrepräsentation

Computerarithmetik (4) Beispiel: Assoziativgesetz Zahlenbereich:,,... 998, 999 Reihenfolge der Berechnung hängt ab, ob von rechts nach links oder links nach rechts ausgewertet wird a + b c = a + b c mit a = 7, b = 4, c = 3 7 + 4 3 = 7 + 4 3 7 + = 3 Ergebnis zu groß, Überlauf 8 =?

Computerarithmetik (5) Beispiel: Distributivgesetz Zahlenbereich:,,... 998, 999 Obwohl mathematisch gleichwertig, hängt das Einhalten des Zahlenbereiches von der konkreten Umsetzung der Rechnung ab a b c = a b a c mit a = 5, b = 2, c = 92 5 2 92 = 5 2 5 92 5 8 = 5 96 Ergebnis zu groß, Überlauf 9 =?

Computerarithmetik (6) Beispiel für Zahlendarstellung mit unterschiedlichen Basen: binär 2 + 2 9 + 2 8 + 2 7 + 2 6 + 2 5 + 2 4 + 2 3 + 2 2 + 2 + 2 24 + 52 + 256 + 28 + 64 + + 6 + + + + oktal 3 7 2 3 8 3 + 7 8 2 + 2 8 + 8 536 + 448 + 6 + dezimal 2 2 3 + 2 + + 2 + + + hexadezimal 7 D 7 6 2 + 3 6 + 6 792 + 28 +

Computerarithmetik (7) Kollektion von Zahlendarstellungen mit den 4 verschiedenen Basen: dezimal binär oktal hexadezimal 2 3 7 8 2 5 6 2 5 6 8 2989 2 3 7 2 3 4 7 2 24 62 74 2 44 75 5655 2 3 7 8 A B C F 4 32 3C 5 64 3E8 BAD

Computerarithmetik (8) Tabelle für Umwandlung binär - hexadezimal: Beispiel für Konversion einer Dezimalzahl in eine Binärzahl: Hexadezimal 2 3 4 5 6 7 binär Hexadezimal 8 9 a b c d e f binär Quotient 492 746 373 86 93 46 23 5 2 Rest

Computerarithmetik (9) Beispiel: Umwandlung Dezimal zu Binär Variante : Subtraktion der nächsten passenden Zweierpotenz 5-24 (2 ) = 476 476-256 (2 8 ) = 22 22-28 (2 7 ) = 92 92-64 (2 6 ) = 28 28-6 (2 4 ) = 2 2-8 (2 3 ) = 4 4-4 (2 2 ) = 2 5 = 2

Computerarithmetik () Beispiel: Umwandlung Dezimal zu Binär Variante 2: Divisionsmethode 5 : 2 = 75 R 75 : 2 = 375 R 375 : 2 = 87 R 87 : 2 = 93 R 93 : 2 = 46 R 46 : 2 = 23 R 23 : 2 = R : 2 = 5 R 5 : 2 = 2 R 2 : 2 = R : 2 = R

Computerarithmetik () Beispiel: Umwandlung Dezimal zu Hexadezimal Divisionsmethode 5 : 6 = 93 R 2 93 : 6 = 5 R 3 5 : 6 = R 5 C D 5 5 D C 6

Computerarithmetik (2) Beispiel: Umwandlung Binär zu Hexadezimal Bilden von Tetraden 2 5 D C 6 Beispiel: Umwandlung Binär zu Oktal Bildung von Triaden 2 2 7 3 8 8

Computerarithmetik (3) Beispiel: Umwandlung Binär zu Dezimal 2 ((((( ) 2 + ) 2 + ) 2 + ) 2 + ) = 2 = 5 = = 22

Computerarithmetik (4) Beispiel: Umwandlung Binär zu Dezimal 8 (((( 2 ) 8 + 7) 8 + 3) 8 + 4) = 23 = 87 = 5

Computerarithmetik (5) Beispiel: Umwandlung Binär zu Dezimal 6 ((( 5 ) 6 + 3) 6 + 2) = 93 = 5

Computerarithmetik (6) 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 Beispielrechnung zeigt: 4739 +287 + 626 = 59? 5 9 2 Das Problem entsteht dadurch, dass mit 4 Bit zwar 6 Ziffern codiert werden könnten, jedoch nur benötigt werden

BCD (Binary Coded Decimal): Computerarithmetik (7) Da von den 6 möglichen Binärcodierungen nur genutzt werden, müssen die nicht genutzten Codes durch eine zusätzliche Korrekturrechnung übersprungen werden, sobald dieser Codebereich erreicht oder übersprungen wird Bisheriges falsches Ergebnis: Übertrag Ungültige BCD-Ziffer Ungültige BCD-Ziffer Richtiges Ergebnis 626 Viele Prozessoren und Mikrocontroller besitzen Spezialbefehle für BCD- Rechnungen

Computerarithmetik (8) 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

Computerarithmetik (9) Darstellung ganzer Zahlen (signed numbers). 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 S M Der Wertebereich bei einem gegebenen n-bit-wort liegt im Intervall (2 ), + 2 n

Computerarithmetik (2) Darstellung ganzer Zahlen (signed numbers). Die Vorzeichen/Betrags - Darstellung (sign and magnitude): Fall Operanden Auszuführende Operationen +xx,+yy +(xx + yy) Addition 2 xx, yy (xx + yy) Addition 3 +xx, yy mit [xx] [yy] oder xx,+yy mit [yy] [xx] 4 +xx, yy mit [xx] < [yy] oder xx,+yy mit [yy] < [xx] +(xx yy) +(yy xx) (xx yy) (yy xx) Subtraktion Subtraktion Nachteile: keine eindeutige Darstellung der Null (-, +) erfordert separates Subtrahierwerk erfordert zusätzliche Logik, um zu entscheiden, ob eine Addition oder eine Subtraktion durchzuführen ist

Computerarithmetik (2) 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

Computerarithmetik (22) 2a. Einer - Komplement b - Komplement: z + z EE = b n mit z EK = z n = Länge der Darstellung von z b = Basis Das Einer-Komplement z = z EE einer binären Zahl z, 2 n erreicht man durch bitweises Invertieren von z z, 2 n z EE 2 n, z EE = 2 n z Der Wertebereich des Einer-Komplements ist 2 n, + 2 n Subtraktion:= Addition + end-around-carry, d.h. zu der Summe wird das linke Bit der Summe aufaddiert.

Computerarithmetik (23) 2a. Einer - Komplement Fall : xx yy mit xx > yy xx = +9 = + 2 = yy = 4 = 2 = + = + = = 5 Das ist genau xx yy, wenn man das Carry-out streicht und hinzuaddiert

Computerarithmetik (24) 2a. Einer - Komplement Fall 2: xx yy mit xx < yy xx = +4 = + 2 = yy = 9 = 2 = + = + = = 2 = 5 Das Carry-Out ist bei xx < yy immer. Daraus folgt, dass die Addition ohne weitere Korrektur immer das richtige Ergebnis ergibt, nachdem man bitweise invertiert hat.

Computerarithmetik (25) 2a. Einer - Komplement Fall 3: Addition zweier negativer Zahlen xx = 4 = 2 = yy = 9 = 2 = + = + = = 2 = 3 Das Carry-out ist bei zwei negativen Zahlen immer. Hier hat man die Rechnung auf obigen Fall. zurückgeführt, es muss nur noch invertiert werden

Computerarithmetik (26) 2a. Einer - Komplement Vorteil: zusätzliches Subtrahierwerk überflüssig Nachteile: keine eindeutige Darstellung der Null (+, ) kein echtes Komplement, da xx + xx =

Computerarithmetik (27) 2b. Zweier - Komplement b - Komplement: z + z ZK = b n mit z ZZ = z n = Länge der Darstellung von z b = Basis Das Zweier - Komplement ist ein echtes Komplement z ZZ = 2 n z z ZZ = z EE + z ZZ = (bitweises Invertieren von z) + Es gibt eine eindeutige Darstellung der Null I: II: I II: z + z ZZ = b n z + z EE = b n z ZZ = z EE + Der Wertebereich des Zweier - Komplements ist 2 n, +2 n

Computerarithmetik (28) 2b. Zweier - Komplement Fall : xx yy mit xx > yy xx = +9 = + 2 = yy = 4 = 2 = + = 2 = +5 Wie man sieht, kann man das Carry-out einfach ignorieren, es ist keine Korrekturaddition mehr notwendig. Fall 2: Addition zweier negativer Zahlen xx = 9 = 2 = yy = 4 = 2 = + = = 2 = 3 Auch hier ist die Berücksichtigung des Carry-Out nicht notwendig.

Computerarithmetik (29) 2b. Zweier - Komplement Fazit: das Zweier-Komplement liefert ohne jegliche Fallunterscheidung immer das korrekte Ergebnis (ohne Korrekturrechnungen). Vorteil: Nachtel: zusätzliches Subtrahierwerk überflüssig eindeutige Null keine Korrekturrechnung unsymmetrischer Zahlenbereich

Computerarithmetik (3) Visualisierung des Zweier - Komplements sowie der Addition -2-3 - + +2 +3-4 +4-5 +5-6 +6-7 -8 +7

Computerarithmetik (3) Einfache Additions- (Subtraktions-) Regeln xx + yy: xx yy: Addition der entsprechenden 2er - Komplemente ergibt korrekte Summe im 2er - Komplement, solange der Wertebereich nicht überschritten wird. Bilde das 2er-Komplement von yy 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.

Computerarithmetik (32) 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: V = a n b n s n + a n b n s n (Die Faktoren repräsentieren die Vorzeichenbits der Summanden a und b sowie der Summe s)

Computerarithmetik (33) Wahrheitstabelle Halbaddierer: Symbol: A B S C Summe: A B S = A B + A B (Exklusiv-Oder) Carry: HA C = A B S C out Implementierung: A B & & S A B & & S A B & & & & S & C C C

Computerarithmetik (34) Wahrheitstabelle Volladdierer: C ii A B S C ooo A B C in Symbol: FA S C out Implementierung eines Volladdierers mittels zweier Halbaddierer

Computerarithmetik (35) Schaltung für einen Volladdierers: A B C S = A B C ii + A B C ii + A B C ii + A B C ii C ooo = A B C ii + A B C ii + A B C ii + A B C ii = A + A B C ii + A B + B C ii + A B C ii + C ii & = B C ii + A C ii + A B & & S C B A & & C & 3 GLZ 2 GLZ &

Computerarithmetik (36) Serieller Addierer (SA): A Shift-Register Summen-Shift-Register B Shift-Register A B FA S C in C out Shift Takt Carry Flip Flop Q D C n Pulse pro Addition Rechenzeit 3 GLZ pro Additionsschritt (Mindestzeit, da Taktung entscheidend) 32 3 GLZ = 96 GLZ

Computerarithmetik (37) Paralleladdierer (RCA): A B C in A B C in C in A B A B C in Übertrag. Ebene FA FA FA FA Übertrag C out S m- C out S m-2 C out S C out S Rechenzeit 3 2 GLZ (Ripple Carry) 3 GLZ (letzte Addition) = 62 GLZ = 3 GLZ 65 GLZ

Computerarithmetik (38) Implementierung eines 4-Bit-Carry-Lookahead-Addierers c i+ = xx i yy i + xx i c i + yy i c i Folie 35 c i+ = xx i yy i + xx i + yy i c i c i+ = g i + p i c i mit g i = xx i yy i p i = xx i + yy i g i und p i sind jeweils ein Gatter und können sofort berechnet werden, da es sich um die Summandenbits handelt Die Gleichung für den Übertrag ist rekursiv und kann durch schrittweises Einsetzen aufgelöst werden, so dass pro Stelle eine DNF entsteht c = g + p c c 2 = g + p c c 3 = g 2 + p 2 c 2 c 4 = g 3 + p 3 c 3 c = g + p c c 2 = g + p g + p p c c 3 = g 2 + p 2 g + p 2 p g + p 2 p p c c 4 = g 3 + p 3 g 2 + p 3 p 2 g + p 3 p 2 p g + p 3 p 2 p p c

Computerarithmetik (39) Implementierung eines 4-Bit-Carry-Lookahead-Addierers x 3 y 3 x 2 y 2 x y x y p 3 g 2 p 2 g p g p c / c in GLZ c / c 4 out c 4 c 3 c 2 c FA FA FA FA 2 GLZ 3 GLZ s 3 s 2 s s

Computerarithmetik (39) Implementierung eines 4-Bit-Carry-Lookahead-Addierers Verkettung mehrerer Teiladdierer mit Übertragsvorschau y 28 y 7 y x 3 3 x 28 y x 7 x 4 y 4 x 3 y 3 x s 3 s 28 s 4 s s 7 s 3 Resultierende Laufzeit s s 3 s s 4 7 s s 28 3 2 3 4 5 6 7 8 5 7 2 GLZ

Computerarithmetik (4) Implementierung eines 4-Bit-Carry-Lookahead-Addierers Alle gg und pp können sofort berechnet werden GLZ Pro Carry wird eine DNF berechnet 2 GLZ Die letzte Stelle benötigt noch einen Volladdierer 3 GLZ Man macht das aber nicht für alle 32 Stellen sondern es werden nur für jeweils 4 Stellen eine Carry-Vorschau berechnet Bei 32 Stellen werden 8 Blöcke benötigt, die nacheinander berechnet werden (ähnlich zum RCA) Rechenzeit Zusammenschaltung von 8 4-Bit CLA GLZ (g i uuu p i ) 8 2 GLZ (c c 4 ) 3 GLZ (letzte Addition) = GLZ = 6 GLZ = 3 GLZ 2 GLZ

Computerarithmetik (4) Rechenzeit zur Addition zweier 32 Bit-Zahlen A) Serial Addier 3 GLZ pro Additionsschritt (Mindestzeit, da Taktung entscheidend) 32 3 GLZ = 96 GLZ B) Ripple Carry Adder (RCA) 3 2 GLZ (Ripple Carry) 3 GLZ (letzte Addition) = 62 GLZ = 3 GLZ 65 GLZ C) 4-Bit Carry-Lookahead Adder (CLA) Zusammenschaltung von 8 4-Bit CLA D) hierarchical Carry-Lookahead Adder CLA mit 8x 4-Bit CLA GLZ (g i und p i ) 8 2 GLZ (c c 4 ) 3 GLZ (letzte Addition) = GLZ = 6 GLZ = 3 GLZ 2 GLZ GLZ (g i und p i ) 2 GLZ (G i und P i ) 2 2 GLZ (C... C 4 ) 2 GLZ (c 3 ) 3 GLZ (letzte Addition) = GLZ = 2 GLZ = 4 GLZ = 2 GLZ = 3 GLZ 2 GLZ

Computerarithmetik (42) Multiplikation. Version einer Multiplikationshardware: 64 Bit Multiplikand Linksshift 64-Bit ALU Kontroll Test Write 64 Bit Produkt 32 Bit Multiplikator Rechtsshift

Computerarithmetik (43) Dazugehöriger Algorithmus: Start Nein. Test Multiplikator =? Ja a. Addiere den Multiplikand zum Produkt speichere das Ergebnis im Produktregister 2. Das Multiplikandenregister um Bit nach links shiften 3. Das Multiplikatorregister um Bit nach rechts shiften 32. Wiederholung? Nein Ja Stop

Computerarithmetik (44) Dazugehöriges Beispiel: Schleife Schritt Multiplikator Multiplikand Produkt Anfangswerte a: Produkt += Multiplikator 2: Shifte Multiplikand nach links 3: Shifte Multiplikator nach rechts 2 a: Produkt += Multiplikator 2: Shifte Multiplikand nach links 3: Shifte Multiplikator nach rechts 3 : Keine Operation nötig 2: Shifte Multiplikand nach links 3: Shifte Multiplikator nach rechts 4 : Keine Operation nötig 2: Shifte Multiplikand nach links 3: Shifte Multiplikator nach rechts

Computerarithmetik (45) 2. Version einer Multiplikationshardware: 32 Bit Multiplikand 32 Bit Multiplikator Rechtsshift 32-Bit ALU Kontroll Test Write 64 Bit Produkt Rechtsshift

Computerarithmetik (46) Dazugehöriger Algorithmus: Start Nein. Test Multiplikator =? Ja a. 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 Bit nach rechts shiften 3. Das Multiplikatorregister um Bit nach rechts shiften 32. Wiederholung? Nein Ja Stop

Computerarithmetik (47) Dazugehöriges Beispiel: Schleife Schritt Multiplikator Multiplikand Produkt Anfangswerte a: Produkt += Multiplikand 2: Shifte Produkt nach rechts 3: Shifte Multiplikator nach rechts 2 a: Produkt += Multiplikand 2: Shifte Produkt nach rechts 3: Shifte Multiplikator nach rechts 3 : Keine Operation nötig 2: Shifte Produkt nach rechts 3: Shifte Multiplikator nach rechts 4 : Keine Operation nötig 2: Shifte Produkt nach rechts 3: Shifte Multiplikator nach rechts

Computerarithmetik (48) 3. Version einer Multiplikationshardware: 32 Bit Multiplikand 32-Bit ALU 64 Bit Produkt Write Rechtsshift Kontroll Test

Computerarithmetik (49) Dazugehöriger Algorithmus: Start Nein. Test Produkt =? Ja a. 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 Bit nach rechts shiften 32. Wiederholung? Nein Ja Stop

Computerarithmetik (5) Dazugehöriges Beispiel: Schleife Schritt Multiplikand Produkt Anfangswerte a: Produkt += Multiplikand 2: Shifte Produkt nach rechts 2 a: Produkt += Multiplikand 2: Shifte Produkt nach rechts 3 : Keine Operation nötig 2: Shifte Produkt nach rechts 4 : Keine Operation nötig 2: Shifte Produkt nach rechts

Computerarithmetik (5) Signed multiplication (Multiplikation mit Vorzeichen) Prinzip der Multiplikation mit Vorzeichen: a) Fallunterscheidung entsprechend der Vorzeichen der Faktoren. (+a) (+b) Ergebnis hat positives Vorzeichen (+a) ( b) Ergebnis hat negatives Vorzeichen ( a) (+b) Ergebnis hat negatives Vorzeichen ( a) ( b) Ergebnis hat positives Vorzeichen b) Nutzung eines Algorithmus, der vorzeichenbehaftete Zahlen verarbeitet

Computerarithmetik (52) 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 - - + - Zahlen werden nach folgender Regel umcodiert: xx i = a i a i mit a = Von rechts beginnen Bei Wechsel von auf schreibe unter die Bei Wechsel von auf schreibe + unter die Erfolgt kein Wechsel, so schreibe + ()

Computerarithmetik (53) Der Booth-Algorithmus Umcodierung: xx i = a i a i mit a = Multiplikation jeder umcodierten Stelle mit dem zweiten Faktor b: a a b 2 + a a b 2 + a a 2 b 2 2 + a 29 a 3 b 2 3 + a 3 a 3 b 2 3 Vereinfachung: a i 2 i + a i 2 i+ = a i + 2a i 2 i = 2a i a i 2 i = a i 2 i Da a =, lässt sich die Rechnung wie folgt zusammenfassen: b a 3 2 3 + a 3 2 3 + + a 2 + a 2 Wenn a 3 gesetzt, dann ist das Ergebnis negativ Zweierkomplement-Multiplikation Booth-Algorithmus behandelt positive und negative Zahlen gleich

Computerarithmetik (54) Multiplikation mit Vorzeichen Beispiel für normale Multiplikation: ++++ Das gleiche Beispiel mit Booth-Algorithmus: + - Beobachtung: Es sind wesentlich weniger Teiladditionen notwendig. Tatsächliche Anzahl ist nicht bekannt. Es können positive und negative Faktoren verarbeitet werden.

Computerarithmetik (55) Vergleich am Beispiel +2 +6 : Multiplikand Ursprünglicher Algorithmus Booth-Algorithmus Schritt Produkt Schritt Produkt Anfangswerte Anfangswerte : Keine Operation nötig a: keine Operation nötig 2: Shifte Produkt nach rechts 2: Shifte Produkt nach rechts 2 a: Produkt += Multiplikand c: Produkt = Multiplikand 2: Shifte Produkt nach rechts 2: Shifte Produkt nach rechts 3 a: Produkt += Multiplikand d: keine Operation nötig 2: Shifte Produkt nach rechts 2: Shifte Produkt nach rechts 4 : Keine Operation nötig b: Produkt += Multiplikand 2: Shifte Produkt nach rechts 2: Shifte Produkt nach rechts

Computerarithmetik (56) Beispiel +2 ( 3) : Schleife Schritt Multiplikand Produkt Anfangswerte c: Produkt = Multiplikand 2: Shifte Produkt nach rechts 2 b: Produkt += Multiplikand 2: Shifte Produkt nach rechts 3 c: Produkt = Multiplikand 2: Shifte Produkt nach rechts 4 d: keine Operation nötig 2: Shifte Produkt nach rechts

Computerarithmetik (57) 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: +2n n = +n +2n + = +2n + + n = +n + - + 2n + n = n + +2 2n + = 2n + + + n = n + = - + - - -2 - - Ergebnis: Eine Stelle ist stets somit Halbierung der Summandenanzahl Verarbeitung 2 entspricht einem Linksschift Fälle +,, - wie bei Booth

Computerarithmetik (58) Schnelle Multiplikation B) Beschleunigung der Berechnung durch Einsparen von Überträgen Situation mit Ripple-Carry-Adder (RCA): w n- x n- w x w x FA FA FA a n y n- a n- y a y a FA FA FA FA z n+ z n z n- z z Nachteil: Carry-Bit muss durch alle Stellen durchgereicht werden Dadurch lange Rechenzeit

Computerarithmetik (59) Schnelle Multiplikation B) Beschleunigung der Berechnung durch Einsparen von Überträgen 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 Carry-Vektor wird Summand Addition mit Carry 2 3 4 5 6 Σ Σ C S C S C n 8 7 9 C C 8 n+ Σ n+ S C C n Σ Σ Ergebnis 2 2 C C 8 n 2 n+ Beispiel zur Addition mehrerer Summanden der Stellen

Computerarithmetik (6) Schnelle Multiplikation B) Beschleunigung der Berechnung schnelle Addition Rechenzeit Carry Save Adder (CSA): Referenz: Zusammenfassen mit Carry-Lookahead, 64 Bit Zusammenfassung mit CSA bis auf die letzten beiden Summanden, dann mittels CLA GLZ: 36 36 36 36 GLZ: 3 3 3 3 3 3 gesamt: 44 GLZ gesamt: 54 GLZ 36

Computerarithmetik (6) Schnelle Multiplikation B) Beschleunigung der Berechnung schnelle Addition Beispiel für eine Implementierung mit CSA: carry-save addition w n- y n- x n- w 2 x 2 y 2 w x y w x FA FA FA FA y c n s n- c n- s 2 c 2 s c s FA FA FA FA z n+ z n z n- z 2 z z z=w+x+y

Computerarithmetik (62) Division a) Beispiel Schriftliche Division im Dezimalsystem 274 26 4 3 : 3 = 2 b) Beispiel Division im Binärsystem Testsubtraktion Testsubtraktion Wiederherstellen Testsubtraktion Testsubtraktion Wiederherstellen Testsubtraktion Rest ZK()= : = (>) Q = (<) Q = (>) Q = (<) Q = (>) Q =

Computerarithmetik (63). Version einer Divisionshardware: 64 Bit Divisor Rechtsshift 64-Bit ALU 32 Bit Quotient Linksshift 64 Bit Rest Schreiben Kontroll Test

Computerarithmetik (64) Dazugehöriger Algorithmus: Start. Subtrahiere das Divisorregister vom Restregister und speichere das Ergebnis im Restregister Nein. Test Rest <? Ja 2a. Linksshift des Quotientenregisters um Bit, setze das neue rechte Bit auf 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 Bit und setze das neue rechte Bit auf. 3. Shifte das Divisorregister Bit nach rechts 33. Wiederholung? Nein Ja

Computerarithmetik (65) Dazugehöriges Beispiel: Schleife Schritt Quotient Divisor Rest Anfangswerte : Rest = Divisor 2b: wenn Rest < +Divisor Shifte Quotient nach links, Q= 3: Shifte Divisor nach rechts 2 : Rest = Divisor 2b: wenn Rest < +Divisor Shifte Quotient nach links, Q= 3: Shifte Divisor nach rechts 3 : Rest = Divisor 2b: wenn Rest < +Divisor Shifte Quotient nach links, Q= 3: Shifte Divisor nach rechts 4 : Rest = Divisor 2a: wenn Rest = Shifte Quotient nach links, Q = 3: Shifte Divisor nach rechts 5 : Rest = Divisor 2a: wenn Rest = Shifte Quotient nach links, Q = 3: Shifte Divisor nach rechts

Computerarithmetik (66) Dazugehöriges Beispiel: Schleife Schritt Quotient Divisor Rest Anfangswerte : Rest = Divisor 2b: wenn Rest < +Divisor Shifte Quotient nach links, Q= 3: Shifte Divisor nach rechts 2 : Rest = Divisor 2b: wenn Rest < +Divisor Shifte Quotient nach links, Q= 3: Shifte Divisor nach rechts 3 : Rest = Divisor 2b: wenn Rest < +Divisor Shifte Quotient nach links, Q= 3: Shifte Divisor nach rechts 4 : Rest = Divisor 2a: wenn Rest Shifte Quotient nach links, Q = 3: Shifte Divisor nach rechts 5 : Rest = Divisor 2a: wenn Rest Shifte Quotient nach links, Q = 3: Shifte Divisor nach rechts

Computerarithmetik (67) 2. Version einer Divisionshardware: 32 Bit Divisor Linksshift 32-Bit ALU 32 Bit Quotient 64 Bit Rest Linksshift Schreiben Kontroll Test

Computerarithmetik (68) 3. Version einer Divisionshardware: 32 Bit Divisor 32-Bit ALU 64 Bit Rest Links-/Rechtsshift Schreiben Kontroll Test

Computerarithmetik (69) Dazugehöriger Algorithmus: Start. Das Restregister um 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 3. Test Rest <? Ja 3a. Linksshift des Restregisters um Bit, setze das neue rechte Bit auf 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 Bit und setze das neue rechte Bit auf. 3. Wiederholung? Nein Shifte die linke Hälfte des Restregisters Bit nach rechts Ja

Computerarithmetik (7) Dazugehöriges Beispiel: Schleife Schritt Divisor Rest Anfangswerte Rest nach links shiften 2: Rest = Divisor 3b: wenn Rest < +Divisor Shifte Rest nach links, R = 2 2: Rest = Divisor 3b: wenn Rest < +Divisor Shifte Rest nach links, R = 3 2: Rest = Divisor 3b: wenn Rest Shifte Rest nach links, R = 4 2: Rest = Divisor 3b: wenn Rest Shifte Rest nach links, R = 5 Shifte linke Hälfte des Restes nach links

Computerarithmetik (7) Nichtwiederherstellender (non restoring) Algorithmus zur Division: Prinzip: Ersetze r + d 2 d durch 2r + d auf Basis folgender Überlegung: Falls Ergebnis der Testsubtraktion negativ, also r d <, erfolgt eine Wiederherstellung des ursprünglichen Restes durch Addition von d, daraus ergibt sich r + d Bei Übergang zur nächsten Stelle erfolgt Verschiebung des Restes eine Stelle nach links, das entspricht einer Multiplikation mit 2 r + d 2 Nun erfolgt die nächste Testsubtraktion r + d 2 d Vereinfachung: r + d 2 d = 2r + 2d d = 2r + d Folglich kann die Wiederherstellung mit folgender Testsubtraktion durch eine Testaddition in der nächsten Stelle mit r + d ersetzt werden

Computerarithmetik (72) Beispiel zum nichtwiederherstellenden Algorithmus zur Division: Testsubtraktion Testsubtraktion Testaddition Testsubtraktion Testaddition Rest ZK()= : = (>) Q = (<) Q = (>) Q = (<) Q = (>) Q =

Computerarithmetik (73) Festkomma-Zahlen Zahlen haben definierte Anzahl Vorkommastellen und Nachkommastellen Komma bleibt an der definierten Position, Anzahl Vorkomma- und Nachkommastellen muss festgelegt werden Diese beiden Kriterien sind prinzipiell unabhängig voneinander. a - Mantisse (Argument) r - Radix (Basis) Wissenschaftliche Notation: n = a r E E - Exponent (Charakteristik) Floating point - Zahlen in normierter Form: n = s a 2 E mit s als Vorzeichenbit und 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

Computerarithmetik (73) 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 r E a - Mantisse (Argument) r - Radix (Basis) E - Exponent (Charakteristik) Floating point - Zahlen in normierter Form: n = s a 2 E mit s als Vorzeichenbit und 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

Computerarithmetik (74) Darstellung im IEEE Standard 754: Einfache Genauigkeit: 32 Bits S E M (ca. 5-7 Dezimalstellen) Vorzeichen der Zahl = + = - 8 Bit vorzeichenbehafteter Exponent Excess-27 Darstellung 23 Bit Mantisse Darstellung entspricht: ±,M 2 E -27 Doppelte Genauigkeit: (ca. 2 Dezimalstellen) Darstellung entspricht:,... 2-87 64 Bits S E M Vorzeichen Bit Excess-23 Exponent 52 Bit Mantisse Darstellung entspricht: ±,M 2 E -23

Computerarithmetik (75) Truncation: Kappung überzähliger Bits durch Chopping von Neuman - Runden Runden Kappung überzähliger Bits - Chopping Prinzip Abschneiden der zu rundenden Stellen Beispiel:, b b 2 b 3 b 4 b 5 b 6 Rundung auf 3 Nachkommastellen, b b 2 b 3 b 4 b 5 b 6, b b 2 b 3 Fehler: Zwischen e < der letzten verbleibenden Stelle (hier b 3 ) unsymmetrischer Fehler

Computerarithmetik (76) Kappung überzähliger Bits Von-Neumann-Runden Prinzip Wenn zu rundende Stellen ungleich letzte verbleibende Stelle = Wenn alle zu rundende Stellen gleich letzte verbleibende Stelle = Beispiel:, b b 2 b 3 b 4 b 5 b 6 Rundung auf 3 Nachkommastellen a), b b 2 b 3, b b 2 b), b b 2 b 3, b b 2 Fehler < e < + der letzten verbleibenden Stelle, (hier b 3 ) symmetrischer Fehler

Computerarithmetik (77) Kappung überzähliger Bits mathematisches Runden Prinzip Unverzerrte Rundung, mathematische Rundung, round to nearest even 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 = und alle anderen zu rundenden Stellen = Runden zur nächsten geraden Zahl Falls letzte verbleibende Stelle = Abrunden Falls letzte verbleibende Stelle = Aufrunden Beispiel:, b b 2 b 3 b 4 b 5 b 6 Rundung auf 3 Nachkommastellen a), b b 2 b 3, b b 2 b 3 +, Aufrunden b), b b 2 b 3, b b 2 b 3 Abrunden c), b b 2 b 3 Fallunterscheidung c ) falls b 3 =, b b 2 gerade, Abrunden c 2 ) falls b 3 =, b b 2 +, ungerade, Aufrunden Fehler:,5 < e < +,5 der letzten verbleibenden Stelle (hier b 3 ) symmetrischer Fehler

Wiederholung Mathematik 4. Klasse:

Computerarithmetik (78) Beispiel zu IEEE 754 Umwandlung +3,3 in IEEE 754, einfache Genauigkeit (32 Bit, 8 Bit Exponent). Vorkommastallen 3 = 2 2. Nachkommastellen,3 2 =,6,6 2 =,2,2 2 =,4,4 2 =,8,8 2 =,6, Periode =, 2 3. Gebrochen binäre Zahl m =, 2 4. Vorzeichen + S = 5. Normalisieren m =, 2 2 =, 2 2 3 e = 3 6. Mantisse und Rundung (mathematisch, Folie 77) M = 7. Exponent Exponent-Bias: b = 2 k = 2 8 = 27 Exponent: E = b + e = 27 + 3 = 28 + 2 = 2 8. Zusammensetzen 9. Hexadezimal (z.b. Speicherauszug) = 4 54 CC CD FFFF

Computerarithmetik (79) Beispiel zu IEEE 754 Umwandlung 4 54 CC CD FFFF zu dezimal. Konvertieren zu Binär 2. Umgruppieren 3. Exponent E = b + e = 2 = 28 + 2 = 27 + 3 e = E b = 27 + 3 27 = 3 5. Mantisse M = m =, 2 3 6. De-Normalisierung m =, 2 7. Dezimal Vorkommastellen m v = 2 = 3 8. Dezimal Nachkommastellen m n = i m n,i 2 i = m 2 + + m 2 2 2 = 2 2 + 2 3 + 2 5 + + 2 2 =,397348632825 4. Vorzeichen S = + 9. Zusammensetzen und runden d = S m v + m n = 3 +.397348632825 = 3, 397348632825 3,3 (Rundung nach 6-7 Ziffern)

Computerarithmetik (8) 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 27 bzw. 23 Multipliziere / Dividiere die Mantissen und bestimme das Vorzeichen Wenn nötig, normalisiere das Ergebnis

Computerarithmetik (8) Beispiel für die HW - Implementierung einer Addition / Subtraktion: 32 Bit Operanden A: SA, E A, MA { B: S, E, M } B B B E A E B M A M B Addition / Subtraktion 8 Bit Subtrahierer Vorzeichen S A S B n = [ E - E ] kombinatorisches Steuerungs- Netzwerk A B Addition Subtraktion Vorzeichen Vertauscher Schieberegister n Bit nach rechts Mantisse add. / sub. M von Zahlen mit kleinerem E M von Zahlen mit größerem E E A E B Multiplexer E X Vornullen- Erkennung Normalisieren und Runden Größe M 8 Bit Subtrahierer { R: S R E R E - X M R } 32 Bit Ergebnis: R = A + B

Computerarithmetik (82) 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.