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

Ähnliche Dokumente
E Zahlendarstellungen und Rechnerarithmetik

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

Teil 2: Rechnerorganisation

Teil 2: Rechnerorganisation

Inhalt. Zahlendarstellungen

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

in vielen technischen und wissenschaftlichen Anwendungen erforderlich: hohe Präzision große Dynamik möglich durch Verwendung von Gleitkommazahlen

Zahlendarstellungen und Rechnerarithmetik*

Algorithmen zur Division

in vielen technischen und wissenschaftlichen Anwendungen erforderlich: hohe Präzision große Dynamik möglich durch Verwendung von Gleitkommazahlen

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

Algorithmen zur Division

Algorithmen zur Integer-Multiplikation

Rechnergrundlagen SS Vorlesung

Carry-Lookahead Addierer (CLA)

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

Grundlagen der Rechnerarchitektur

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

6. Zahlendarstellungen und Rechnerarithmetik

3 Rechnen und Schaltnetze

Motivation 31. Mai 2005

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

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

Wertebereiche, Overflow und Underflow

Kapitel 5: Darstellung von Daten im Rechner

Grundlagen der Technischen Informatik. 4. Übung

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

Informatik I Modul 5: Rechnerarithmetik (2)

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

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

Grundlagen der Technischen Informatik. 4. Übung

Rechnerstrukturen WS 2012/13

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

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

2.1.2 Gleitkommazahlen

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

2 Darstellung von Zahlen und Zeichen

6.2 Kodierung von Zahlen

Rechnergrundlagen SS Vorlesung

Integrierte Schaltungen

Das negative Zweierkomplementzahlensystem. Ines Junold 23. Februar 2010

5 Zahlenformate und deren Grenzen

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

Computer Arithmetik. Computer Arithmetik Allgemein

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

Einführung in die Informatik I

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

Übung Praktische Informatik II

Einführung in die Informatik I

Grundlagen der Rechnerarchitektur. Binäre Logik und Arithmetik

Einführung in die Programmiertechnik

3 Verarbeitung und Speicherung elementarer Daten

Teil V. Programmierbare Logische Arrays (PLAs)

Vorlesung Programmieren

Lösung 2. Übungsblatt

Computerarithmetik (1)

Grundlagen der Betriebssysteme

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

RO-Tutorien 3 / 6 / 12

ALU ALU. ALU-Aufbau. Eine ALU (arithmetisch-logische Einheit) besteht in der Regel aus. Addierer. Logischer Einheit. Shifter

2 Darstellung von Zahlen und Zeichen

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

Binäre Darstellung ganzer Zahlen

Technische Informatik - Eine Einführung

Mathematische Werkzeuge für Computergrafik 2016/17. Gleitkommzahlen

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

Binäre Gleitkommazahlen

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

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

Zahlendarstellung und Rechnerarithmetik

Rechnergrundlagen SS Vorlesung

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

DuE-Tutorien 16 und 17

Mikroprozessor als universeller digitaler Baustein

Rechnergrundlagen SS Vorlesung

Schriftliche Prüfung

1.5 Einführung und Zahlensysteme/Darstellung gebrochener Zahlen

Datendarstellung Teil 2

HaDePrak WS 05/ Versuch

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

Seminararbeit Sommersemester 2017

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

Zahlen in Binärdarstellung

2.Vorlesung Grundlagen der Informatik

Grundstrukturen: Speicherorganisation und Zahlenmengen

Durch das Borgen steht an der Zehner-Stelle jetzt nur noch eine 1 statt einer 2

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

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

Zum Nachdenken. Welche Eigenschaften einer Vorzeichendarstellung. erreichen? Wie könnte man Vorzeichenzahlen darstellen?

B: Basis des Zahlensystems 0 a i < B a i є N 0 B є (N > 1) Z = a 0 B 0 + a 1 B 1 + a 2 B a n-1 B n-1

II. Grundlagen der Programmierung

Kapitel 2. Zahlensysteme, Darstellung von Informationen

Grundlagen der Technischen Informatik. 3. Übung

Datendarstellung Teil 2

Darstellung von negativen binären Zahlen

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

Durch das Borgen steht an der Zehner-Stelle jetzt nur noch eine 1 statt einer 2

Informatik I Modul 2: Rechnerarithmetik (1)

Transkript:

Computer and Communication Systems (Lehrstuhl für Technische Informatik) Arithmetik Zahlendarstellung, Addition und Subtraktion Multiplikation, Division, Fest- und Gleitkommazahlen [TI] Winter 2013/2014 Arithmetik 1

Lernziele Realisierung von Rechenwerken für alle vier arithmetischen Grundoperationen (+,, *, /) auf ganzen Zahlen mit Implementierung als Schaltnetz bzw. Schaltwerk Abschätzung des Zeitbedarfs für eine Operation Möglichkeiten der Beschleunigung Behandlung negativer Zahlen Darstellung und Rechnen von/mit Festkommazahlen Verständnis von Gleitkommazahlen Aufbau gemäß IEEE 754 Standard Algorithmen für Grundoperationen Realisierung von Rechenwerken [TI] Winter 2013/2014 Arithmetik 2

ZAHLENDARSTELLUNG [TI] Winter 2013/2014 Arithmetik 3

Zahlendarstellungen im Rechner Ausschließliche Verwendung von Binärzahlen, die auf Worte einer Breite von n Bit abgebildet werden. Im Prozessor stehen zur Speicherung ganzer Zahlen mehrere n- Bit Register (realisiert durch n Flip-Flops) zur Verfügung. Typische Wortbreiten: n = 8: n = 16: n = 32: n = 64: Byte, in Mikroprozessoren der ersten Generation, wie z.b. Intel 8080 oder Z80 Halbwort (bei Intel: Wort) in Minicomputern und Mikroprozessoren der zweiten Generation, wie z.b. PDP-11, Intel 8086, Motorola 68000 Wort (bei Intel: Doppelwort) in Mikroprozessoren der dritten Generation, z.b. Intel Pentium, Motorola 68030 Doppelwort (bei Intel: Quadwort) in aktuellen Hochleistungsprozessoren, z.b. PowerPC, AMD Opteron. [TI] Winter 2013/2014 Arithmetik 4

Darstellung von Zahlen (Wiederholung) Darstellung positiver ganzer Zahlen in positionaler Notation (auch als Stellenwertsystem bezeichnet). Jede natürliche Zahl z mit 0 z b n 1 ist eindeutig als n-stellige Zahl zur Basis b darstellbar. Darstellung negativer ganzer Zahlen: Vorzeichen und Betrag (b-1)-komplement (Bei Binärzahlen: Einerkomplement) b-komplement (Bei Binärzahlen: Zweierkomplement) Details: Siehe Vorlesung Praktische Informatik! [TI] Winter 2013/2014 Arithmetik 5

ADDITION UND SUBTRAKTION [TI] Winter 2013/2014 Arithmetik 6

Addition (1) Addition zweier positiver n-stelliger Binärzahlen a und b kann stellenweise von rechts nach links durchgeführt werden. Der handschriftlichen Addition zweier Dezimalzahlen entsprechend! In jeder Stelle i kann ein Übertrag c i = 1 auftreten (Carry). Gilt für die Summe s = a + b 2 n, so kann das Ergebnis nicht mehr als n-bit Zahl dargestellt werden. Es entsteht ein (n+1)-tes Summenbit, das als Überlauf (Overflow) bezeichnet wird. [TI] Winter 2013/2014 Arithmetik 7

Addition (2) Addition der niedrigstwertigen Bits von a und b erfordert einen Halbaddierer, der aus a 0 und b 0 sowohl die Summe s 0 als auch den Übertrag (Carry) c 0 ermittelt. Verzögerung für c 0 : τ (mit τ = Laufzeit eines elementaren Gatters) Verzögerung für s 0 : 2τ [TI] Winter 2013/2014 Arithmetik 8

Addition (3) Addition von a i, b i und c i 1 an den Bitpositionen i = 1,..., n 1 erfordert einen Volladdierer (FA = Full Adder), der die Summe s i und den Übertrag c i bestimmt: Verzögerung je nach Pfad und Realisierung: 2τ bis 4τ [TI] Winter 2013/2014 Arithmetik 9

Einfache Addierwerke (1) Serielles binäres Addierwerk: Benötigt nur einen Volladdierer, ein Flip-Flop und drei n-bit Schieberegister (für Summanden a, b und Ergebnis s): Synchrones Schaltwerk Flip-Flop muss jedoch zuvor initialisiert werden. In Takt i wird Ergebnisbit s i aus a i, b i und c i 1 bestimmt. Addition von zwei n-bit Zahlen benötigt n Taktzyklen. [TI] Winter 2013/2014 Arithmetik 10

Einfache Addierwerke (2) Paralleles binäres Addierwerk: n Volladdierer ermöglichen Addition zweier n-bit Zahlen: An Bitposition 0 genügt bei der Addition zweier positiver Zahlen auch ein Halbaddierer. Im ungünstigen Fall kann ein an Position 0 entstehender Übertrag die Bitstellen 1 bis n 1 durchlaufen und s 1 bis s n 1 verändern. Wird daher auch als Ripple Carry - Addierer (RCA) bezeichnet. Resultierende maximale Verzögerung: 2τ + (n 1) 2τ = 2nτ [TI] Winter 2013/2014 Arithmetik 11

Carry Look-Ahead Addierwerk (1) Für eine schnelle Addition ist RCA mit einer maximalen Verzögerung von 2nτ ungeeignet. Gibt es auch eine schnellere Möglichkeit, zwei n-bit Zahlen zu addieren? Idee: Ersetzung des sequentiellen Übertragdurchlaufs durch eine parallele Vorausberechnung aller Überträge c i. Ansatz: Betrachte i-ten Volladdierer eines RCA. Es gilt: c i = a i b i + (a i + b i ) c i 1 := G i + P i c i 1 Generate : G i = a i b i gibt an, ob in Stelle i ein Übertrag erzeugt wird. Propagate : P i = a i + b i gibt an, ob in Stelle i ein Übertrag propagiert wird (P i = 1) oder nicht (P i = 0). [TI] Winter 2013/2014 Arithmetik 12

Carry Look-Ahead Addierwerk (2) Für die Überträge c i ergibt sich somit: c 0 = a 0 b 0 := G 0 c 1 = a 1 b 1 + (a 1 + b 1 )c 0 := G 1 + P 1 G 0 c 2 = G 2 + P 2 G 1 + P 2 P 1 G 0 c 3 = G 3 + P 3 G 2 + P 3 P 2 G 1 + P 3 P 2 P 1 G 0 c 4 = G 4 + P 4 G 3 + P 4 P 3 G 2 + P 4 P 3 P 2 G 1 + P 4 P 3 P 2 P 1 G 0 c 5 =... Verzögerung Zur Bestimmung aller P i und G i : τ Zur Bestimmung aller Signale c i bei gegebenen P i und G i : 2τ Jedoch werden zur Bestimmung von c i mehrere große UND-Gatter mit max. i +1 Eingängen und ein großes ODER-Gatter mit i +1 Eingängen benötigt. Annahme eines einheitlichen τ ist unrealistisch! [TI] Winter 2013/2014 Arithmetik 13

Carry Look-Ahead Addierwerk (3) Aufbau eines Carry Look-Ahead Addierers (CLA) für n = 4 Bit: hier mit P i = a i b i anstatt P i = a i + b i [TI] Winter 2013/2014 Arithmetik 14

Carry Look-Ahead Addierwerk (4) Ein vollständiger n-bit CLA benötigt zur Addition zweier n-bit Zahlen die Zeit 5τ (unabhängig von n)! Probleme des vollständigen n-bit CLA Hoher Aufwand für große n Gatter mit bis zu n + 1 Eingängen erforderlich. Hoher fan-in Gatterausgänge P i und G i sind mit bis zu (n +1) 2 / 4 Gattereingängen verschaltet. Hoher fan-out Vollständiger CLA ist nicht praktikabel! Kombination von RCA und CLA als Alternative: [TI] Winter 2013/2014 Arithmetik 15

Subtraktion (1) Statt der Entwicklung eines eigenen Subtrahierwerkes kann bei Verwendung des Zweierkomplements jedes Addierwerk auch zur Subtraktion verwendet werden. Ansatz: a b = a + ( b) Realisierung für zwei n-stellige Zahlen a und b: Invertierung aller Bits b i Addition von 1 zur Bildung des Zweierkomplements b Kann z.b. in den zuvor besprochenen Addierwerken durch Setzen von c in = 1 ohne zusätzlichen Hardwareaufwand erreicht werden! Addition von a und ( b) Summe ist korrekt, wenn Überlaufbit c n 1 ignoriert wird. Überlauf v tritt nur dann ein, wenn gilt: c n 1 c n 2 [TI] Winter 2013/2014 Arithmetik 16

Subtraktion (2) Realisierung eines n-bit Addier-/Subtrahierwerkes Addition a + b bei S = 0, Subtraktion a b bei S = 1 Invertieren der Bits b i bei S = 1 durch XOR-Gatter Intern ist jedes beliebige n-bit Addierwerk verwendbar! [Herold 2007] [TI] Winter 2013/2014 Arithmetik 17

Subtraktion (3) Einige Beispiele zur Addition von im Zweierkomplement kodierten positiven und negativen 8-Bit Zahlen: [TI] Winter 2013/2014 Arithmetik 18

Subtraktion (4) Drei Fälle bei der Addition im Zweierkomplement: 1) Zahlen a und b positiv (d.h. a n-1 = b n-1 = 0) Überlauf bei s n-1 = 1 (tritt auf bei c n-1 = 0, c n-2 = 1) 2) Zahlen a und b negativ (d.h. a n-1 = b n-1 = 1) nun sind a = a und b = b positiv, somit gilt: sum = a + b = (2 n a ) + (2 n b ) = 2 2 n (a + b ) korrektes Ergebnis wäre jedoch: s = 2 n (a + b ) = sum 2 n erforderliche Korrektur: Überlaufbit c n-1 ignorieren Überlauf bei s n-1 = 0 (tritt auf bei c n-1 = 1, c n-2 = 0) 3) Vorzeichen von a und b unterschiedlich (b sei negativ): sum = a + b = a + (2 n b ) = 2 n (b a) ist korrekt für b > a, korrektes Ergebnis für b < a wäre jedoch: s = a b = sum 2 n erforderliche Korrektur: Überlaufbit c n-1 ignorieren kein Überlauf möglich! [TI] Winter 2013/2014 Arithmetik 19

ALU (1) ALU = Arithmetic Logic Unit Realisiert die Elementaroperationen eines Rechners (arithmetische Operationen wie Addition und Subtraktion als auch logische Operationen wie AND und OR). Aus zwei Eingangswerten X und Y wird ein Ergebniswert Z gebildet. X, Y und Z sind meist Register. Typische Registerbreiten sind 8, 16, 32, 64 Bits. Dementsprechend spricht man von 8-, 16-, 32- und 64-Bit-Rechner. Bei der Ausführung von Operationen können bestimmte Zusatzinformationen anfallen. Deshalb gibt es noch ein Flag-Register, in dem entsprechende Bits gesetzt werden, wenn bei der ausgeführten Operation ein entsprechendes Ergebnis aufgetreten ist. [TI] Winter 2013/2014 Arithmetik 20

ALU (2) [Herold 2007] [TI] Winter 2013/2014 Arithmetik 21

ALU (3) [Herold 2007] s2 unterscheidet zwischen arithmetischen und logischen Operationen bzw. zwischen Konstanten 0 und 1. s1 und s0 wählen konkrete Operation (arithmetisch bzw. logisch). [TI] Winter 2013/2014 Arithmetik 22

Schaltungsrealisierung einer n-bit-alu [TI] Winter 2013/2014 Arithmetik 23 [Herold 2007]

MULTIPLIKATION [TI] Winter 2013/2014 Arithmetik 24

Multiplikation (1) Algorithmus zur Multiplikation zweier positiver Binärzahlen a und b entspricht der handschriftlichen Multiplikation zweier positiver Dezimalzahlen. Produkt p zweier positiver n-bit Binärzahlen hat 2n Bitstellen. Algorithmus ist zurückführbar auf wiederholte bedingte Additionen und Schiebeoperationen. [TI] Winter 2013/2014 Arithmetik 25

Multiplikation (2) Modifizierter Algorithmus: Beispiel für n = 5 (vgl. letzte Folie): In der 2n-Bit Variablen p werden n partielle Produkte addiert. Rechtsschieben von p ersetzt das Linksschieben von a. [TI] Winter 2013/2014 Arithmetik 26

Multiplizierwerke (1) Implementierung A: Serielles Schaltwerk Direkte Umsetzung des modifizierten Algorithmus in digitaler Logik Bedingte Addition mittels UND Steuerwerk muss Signale erzeugen: clear p: setze p = 0 shift right: schiebe b um eine Position nach rechts load and shift right: schiebe p um eine Position nach rechts und lade p 2n-1... p n parallel Zur Berechnung von p sind n Taktzyklen erforderlich! [TI] Winter 2013/2014 Arithmetik 27

Multiplizierwerke (2) Implementierung B: Feldmultiplizierer ( array multiplier ) Direkte Realisierung des handschriftlichen Multiplikationsschemas für Binärzahlen a und b in digitaler Logik. Es werden zunächst alle Bitprodukte a j b i ermittelt. Für jedes Multiplikatorbit b i wird hieraus ein partielles Produkt q i = (a n 1 b i a n 2 b i... a 1 b i a 0 b i ) 2 = a b i gebildet. Die n partiellen Produkte q i werden jeweils um i Bitpositionen nach links verschoben und aufaddiert. Beispiel für n = 4: [TI] Winter 2013/2014 Arithmetik 28

Multiplizierwerke (3) Einfache Implementierung mittels Multipliziererzellen aus jeweils einem Volladdierer und einem UND-Gatter: Maximale Zeit zur Multiplikation zweier 4-Bit Zahlen: 21τ Maximale Zeit zur Multiplikation zweier n-bit Zahlen: (6n 3)τ [TI] Winter 2013/2014 Arithmetik 29

Multiplizierwerke (4) Implementierung C: CSA-Kette / CSA-Baum Zur Bildung des Produktes p zweier n-bit Zahlen müssen n partielle Produkte q i = a b i aufaddiert werden. Zur schnellen Addition vieler Zahlen bieten sich Carry Save Addierer (CSA) an, bei denen entstehende Überträge erst bei der Addition des nächsten Summanden berücksichtigt werden. Ein m-bit CSA-Baustein ermöglicht eine partielle Addition von drei m-bit Zahlen. Für eine Addition von k Zahlen werden k 2 CSA-Bausteine benötigt. Ein zusätzlicher RCA oder CLA dient der Addition der am Ende noch verbleibenden Überträge. [TI] Winter 2013/2014 Arithmetik 30

Multiplizierwerke (5) Beispiel: 4-Bit CSA zur Addition von fünf 4-Bit Zahlen u, v, w, x, y [TI] Winter 2013/2014 Arithmetik 31

Multiplizierwerke (6) Zur Addition der n partiellen Produkte q i = a b i werden n 2 schnelle CSA-Addierer benötigt. Anordnung der Addierer z.b. als CSA-Kette, hier für n = 6. In jeder Stufe sind einige Bits des Produkts p berechnet. Zeit zur Multiplikation zweier n-bit Zahlen: (2n 3)τ + t Add Für einen CLA gilt z.b. t Add = 5τ Weitere Beschleunigung durch Anordnung als CSA-Baum. [TI] Winter 2013/2014 Arithmetik 32

Multiplizierwerke (7) Implementierung D: Zweistufiges Schaltnetz Idee: Realisierung eines n n Bit Multiplizierers als zweistufiges Schaltnetz mit 2n Eingängen und 2n Ausgängen. Sehr geringe Zeitverzögerung: nur 2τ. Implementierung z.b. durch ein ROM oder PROM mit 2 2n Zeilen aus 2n-Bit Worten. Jedoch sehr hoher Speicheraufwand: n Produkt 2n Zeilen 2 2n PROM Größe 2 4 16 64 Bit 4 8 256 256 Byte 8 16 65536 128 KByte 16 32 4.3 10 9 1.6 GByte [TI] Winter 2013/2014 Arithmetik 33

Multiplikation negativer Zahlen (1) Bislang Betrachtung ausschließlich positiver Multiplikatoren und Multiplikanden. Was passiert bei negativen im Zweierkomplement kodierten n-bit Multiplikatoren bzw. n-bit Multiplikanden? a ( b) = a (2 n b) = a 2 n a b (statt 2 2n a b) ( a) b = (2 n a) b = b 2 n a b (statt 2 2n a b) ( a) ( b) = (2 n a) (2 n b) = 2 2n a 2 n b 2 n + a b (statt a b) Ohne besondere Maßnahme liefert binärer Multiplizierer falsche Ergebnisse! Jedoch aufwendige Addition von Korrekturtermen möglich. Man addiert Term um auf das gewünschte Ergebnis zu kommen. Alternative: Trennung von Vorzeichen und Betrag. Hoher Aufwand für Umwandlung von Zahlen vor/nach der Multiplikation. [TI] Winter 2013/2014 Arithmetik 34

Multiplikation negativer Zahlen (2) Idee: Vereinfachung der Multiplikation, wenn Multiplikator eine 1-Folge repräsentiert: a 111 = a 1000 a 0001 Auch innerhalb längerer Bitfolgen möglich. z.b. a 0011100 = a 0100000 a 0000100 Multiplikation mit einer 1-Folge lässt sich stets durch eine Addition und eine Subtraktion ersetzen. Der Algorithmus nach Booth analysiert zwei benachbarte Bits b i und b i 1 des Multiplikators: (b i b i 1 ) 2 = 01 2 : Addition von a 2 i (b i b i 1 ) 2 = 10 2 : Subtraktion von a 2 i (b i b i 1 ) 2 = 00 2 oder (b i b i 1 ) 2 = 11 2 : keine Addition Ergänzung von b 1 = 0 erforderlich. [TI] Winter 2013/2014 Arithmetik 35

Multiplikation negativer Zahlen (3) Realisierung der Subtraktion von a 2 i durch Addition des Zweierkomplements (vorzeichenrichtig ergänzt). Beispiele (mit n = 5): Funktioniert für beliebige positive und negative Multiplikanden und Multiplikatoren! [TI] Winter 2013/2014 Arithmetik 36

DIVISION [TI] Winter 2013/2014 Arithmetik 37

Division (1) Umkehrung der Multiplikation: Berechnung von q = a / b durch wiederholte bedingte Subtraktionen und Schiebeoperationen. In jedem Schritt wird Divisor b testweise vom Dividenden a subtrahiert: q i = 1, falls a b > 0 q i = 0 und Korrektur durch a = a + b, falls a b < 0 Dieses Verfahren wird auch als Restoring - Division bezeichnet. Allgemein gilt: Dividend / Divisor = Quotient + Rest / Divisor bzw.: Dividend = Divisor Quotient + Rest [TI] Winter 2013/2014 Arithmetik 38

Division (2) Beispiel: 29 10 / 5 10 = 5 10 mit Rest 4 10 [TI] Winter 2013/2014 Arithmetik 39

Division (3) Aufgabenstellung hier: n-bit Dividend a, n-bit Divisor b Ergebnis: n-bit Quotient q, n-bit Rest r Es wird intern eine 2n-Bit Variable q = (q 2n-1,...,q 0 ) verwendet. Algorithmus zur Restoring-Division (für positive Zahlen a und b). (q 2n-1,...,q n ) = 0, (q n-1,...,q 0 ) = a for i=0 to n-1 { shift left q by 1 (q 2n-1,...,q n ) = (q 2n-1,...,q n ) - b if (q 2n-1 == 0) q 0 = 1 else { q 0 = 0 (q 2n-1,...,q n )=(q 2n-1,...,q n ) + b } } Variable q enthält dann nach n Schritten sowohl den Rest r in den Bits 2n 1,..., n als auch den Quotienten in Bits n 1,..., 0. [TI] Winter 2013/2014 Arithmetik 40

Direkte Implementierung in digitaler Logik ergibt serielles Dividierwerk: Dividierwerk Steuerwerk muss entsprechende Signale generieren: load q: lade q mit Dividenden a in (q n 1,...,q 0 ) add/sub: addiere/subtrahiere b zu/von (q 2n 1,...,q n ) in Abhängigkeit von q 2n-1 shift left: schiebe q um eine Stelle nach links Effizientere Dividierwerke arbeiten ohne Korrektur ( Non- Restoring ) und bestimmen je Schritt mehrere Quotientenbits. [TI] Winter 2013/2014 Arithmetik 41

FEST- UND GLEITKOMMAZAHLEN [TI] Winter 2013/2014 Arithmetik 42

Fest- und Gleitkommazahlen Sollen rationale oder reelle Zahlen auf einem Rechner bearbeitet werden, so hat der Rechnerarchitekt oder Programmierer zwei Möglichkeiten zur Auswahl: Festkommazahlen Jede Kommazahl z wird durch Skalierung auf ganze Zahl z' abgebildet; Rechner arbeitet nur auf ganzer Zahl. Gleitkommazahlen Darstellung der Kommazahl durch Mantisse und Exponent; spezielle Rechenwerke erforderlich! [TI] Winter 2013/2014 Arithmetik 43

Festkommazahlen (Wiederholung) Zahl zur Basis b mit einer festen Zahl von k Nachkommastellen: z = (z n k 1 z n k 2... z 1 z 0, z 1 z 2... z k+1 z k ) b = z n k 1 b n k 1 + z n k 2 b n k 2 +... + b 1 z 1 + b 0 z 0 + b 1 z 1 + b 2 z 2 +... + b k +1 z k +1 + b k z k n k 1 i= k z i b Die Ziffern z n k 1 z n k 2... z 1 z 0 stellen den ganzzahligen Teil, die Ziffern z 1 z 2... z k stellen den gebrochenen Teil von z dar. Die feste Kommaposition k kennt nur der Anwender, der Rechner arbeitet mit skalierten ganzen Binärzahlen z = z 2 k. = i Beispiel: Ein 8-Bit Register enthält die Binärzahl z = 01101110; für k = 3 gilt: z = 01101,110 2 = 2 3 + 2 2 + 2 0 + 2 1 +2 2 = 13,75 10. Alle bislang betrachteten Rechenwerke sind somit auch für Operationen auf Festkommazahlen geeignet! [TI] Winter 2013/2014 Arithmetik 44

Gleitkommazahlen (Wiederholung) In vielen technischen und wissenschaftlichen Anwendungen wird bei Zahlen eine große Dynamik benötigt. Sehr kleine und sehr große Zahlen sollen einheitlich dargestellt werden. Dies wird möglich durch die Verwendung von Gleitkommazahlen. Allgemeine Gleitkommazahl zur Basis r ( radix ) ist definiert durch x = a r e mit: Argument oder Mantisse a Exponent oder Charakteristik e Eine Gleitkommazahl zur Basis r heißt normalisiert, wenn für die Mantisse a gilt: 1 a < r. Beispiele (für r = 10): Die Zahl 0,0000002345 kann dargestellt werden als 2,345 10 7. Die Zahl 1024500000,0 kann dargestellt werden als 1,0245 10 9. [TI] Winter 2013/2014 Arithmetik 45

Gleitkommazahlen (Wiederholung) Eine binäre Gleitkommazahl x ist definiert durch x = a 2 e mit m-stelliger Mantisse a und p-stelligem Exponent e Eine binäre Gleitkommazahl x 0 heißt normalisiert, wenn für die Mantisse a gilt: 1 a < 2 Häufig Darstellung des Exponenten mit Bias b: x = a 2 e b Wahl von b = 2 p 1 1 bewirkt Transformation des Bereiches für den Exponenten e von 0... 2 p 1 in (2 p 1 1)... 2 p 1. einfache Kodierung positiver und negativer Exponenten! Früher unterschiedliches Gleitkommaformat in jedem Prozessor, heute überwiegend Verwendung des IEEE 754 Standard. [TI] Winter 2013/2014 Arithmetik 46

IEEE 754 Standard (1) Allgemeine Definition: x = ( 1) s 1.f 2 e b Mantisse aus Vorzeichen s und normalisiertem Betrag a = 1.f im Bereich 1.00..00 bis 1.11..11 1 vor dem Komma wird jedoch nicht kodiert erhöhte Präzision Aufbau einer n-bit IEEE Gleitkommazahl: p-stelliger Exponent mit Bias b = 2 p 1 1, gültiger Exponent e nur im Bereich e min = 0 < e < e max = 2 p 1 = 2b+1 Darstellbarer Zahlenbereich: ± 2 1 b... (2 2 m ) 2 b Zwischen 2 e b und 2 e b+1 gibt es stets 2 m Gleitkommazahlen: Abstand benachbarter Gleitkommazahlen ist abhängig von e. [TI] Winter 2013/2014 Arithmetik 47

IEEE 754 Standard (2) Drei verschiedene Formate spezifiziert: single precision double precision quad precision n 32 64 128 m 23 52 112 s 1 1 1 p 8 11 15 e min 0 0 0 e max 255 2047 32767 b 127 1023 16383 x min 2 126 10 38 2 1022 10 308 2 16382 10 4932 x max (2 2 23 ) 2 127 10 38 (2 2 52 ) 2 1023 10 308 (2 2 112 ) 2 16383 10 4932 [TI] Winter 2013/2014 Arithmetik 48

IEEE 754 Standard (3) e = e min = (00..00) 2 = 0 und e = e max = (11..11) 2 werden zur Kodierung besonderer Zahlen verwendet: x = +0 ( positive Zero ): e = 0, f = 0, s = 0 x = 0 ( negative Zero ): e = 0, f = 0, s = 1 x = + ( positive Infinity ): e = e max, f = 0, s = 0 x = ( negative Infinity ): e = e max, f = 0, s = 1 x = NaN ( Not a Number ): e = e max, f 0, s beliebig x = ( 1) s 0.f 2 1 b ( Denormalized Number ): e = 0, f 0 Denormalisierte Gleitkommazahlen ermöglichen die Darstellung sehr kleiner Werte im Bereich 2 1 b m... 2 1 b. [TI] Winter 2013/2014 Arithmetik 49

IEEE 754 Standard (4) Behandlung von Ausnahmesituationen: Überlauf tritt ein, wenn nach Normalisierung für x gilt: e e max Generierung von +, falls x > 0 Generierung von, falls x < 0 Einige Rechenregeln für : + x = (falls x ), x = (falls x ), ± x / 0 = ± (falls x 0), x = ± (falls x 0) Einige Operationen liefern ein unbestimmtes Ergebnis, z.b.: 0 = NaN, 0 / 0 = NaN, = NaN, Ferner gilt für alle Operationen: f (x, NaN) = NaN Unterlauf tritt ein, wenn nach Normalisierung für x gilt: e = 0 Generierung von x = 0 ( flushing to zero ) Generierung einer denormalisierten Darstellung von x [TI] Winter 2013/2014 Arithmetik 50

Gleitkomma-Multiplikation Algorithmus zur Multiplikation zweier IEEE- Gleitkommazahlen x = ( 1) s a 2 α bias und y = ( 1) t b 2 β bias : 1) Multipliziere Mantissen als Festkommazahlen: c = a b a = 1.f a und b = 1.f b haben m + 1 Stellen c hat 2m + 2 Stellen! 2) Addiere Exponenten: γ = α + β bias 3) Berechne Vorzeichen des Produktes: u = s t 4) Normalisiere Ergebnis: z = ( 1) u c 2 γ-bias a) Falls c 2, schiebe c um 1 nach rechts und inkrementiere γ. b) Setze c = 1.f c = 1.(c 2m 1 c 2m 2... c m ) 2 mit Rundung. 5) Behandlung von Ausnahmesituationen: a) Überlauf, falls γ e max = 2 p 1 z := ± (abhängig von u). b) Unterlauf, falls γ e min = 0 Denormalisierung durchführen! c) Zero, falls c = 0 z := ±0 (abhängig von u). [TI] Winter 2013/2014 Arithmetik 51

Gleitkomma-Addition (1) Algorithmus zur Addition zweier IEEE-Gleitkommazahlen x = ( 1) s a 2 α bias und y = ( 1) t b 2 β bias : 1) Sortiere x und y, so dass x die Zahl mit kleinerem Exponenten ist. 2) Anpassung der Exponenten: Bestimme x = ( 1) s a 2 β bias durch Rechtsschieben von a um β α Bitpositionen. 3) Addiere Mantissen: a) Falls nötig, bilde Zweierkomplement von a oder b. b) Führe Festkomma-Addition c = a + b aus. c) Falls c < 0, setze u = 1 und bilde Zweierkomplement von c. 4) Normalisiere Ergebnis: z = ( 1) u c 2 β bias a) Falls c 2, schiebe c nach rechts und inkrementiere β. b) Falls c < 1, schiebe c nach links und dekrementiere β. ggf. wiederhole b), bis 1 c < 2. 5) Behandlung von Ausnahmesituationen: Überlauf, Unterlauf, c=0 [TI] Winter 2013/2014 Arithmetik 52

Gleitkomma-Addition (2) Möglicher Aufbau eines Gleitkomma-Addierwerks: [TI] Winter 2013/2014 Arithmetik 53

Literatur [Herold 2007] H. Herold, B. Lurz, J. Wohlrab, Grundlagen der Informatik, Pearson, 1. Auflage, 2007 [TI] Winter 2013/2014 Arithmetik 54