Arithmetik
Einführung in die Technische Informatik
Falko Dressler, Stefan Podlipnig
Universität Innsbruck
Übersicht
•
•
•
•
•
Zahlendarstellung
Addition und Subtraktion
Multiplikation
Division
Fest- und Gleitkommazahlen
Einführung in die Technische Informatik - WS 11/12
Arithmetik
2
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
Einführung in die Technische Informatik - WS 11/12
Arithmetik
3
ZAHLENDARSTELLUNG
Einführung in die Technische Informatik - WS 11/12
Arithmetik
4
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 68040.
Doppelwort (bei Intel: Quadwort) in aktuellen
Hochleistungsprozessoren, z.B. PowerPC, AMD Opteron.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
5
Darstellung von Zahlen (Wiederholung)
• Darstellung positiver ganzer Zahlen in positionaler Notation (auch
als Stellenwertsystem bezeichnet).
• Jede natürliche Zahl z mit 0 z bn –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!
Einführung in die Technische Informatik - WS 11/12
Arithmetik
6
ADDITION UND SUBTRAKTION
Einführung in die Technische Informatik - WS 11/12
Arithmetik
7
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 ci = 1 auftreten (Carry).
• Gilt für die Summe s = a + b 2n, 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.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
8
Addition (2)
• Addition der niedrigstwertigen Bits von a und b erfordert einen
Halbaddierer, der aus a0 und b0 sowohl die Summe s0 als auch den
Übertrag (Carry) c0 ermittelt.
• Verzögerung für c0: (mit = Laufzeit eines elementaren Gatters)
Verzögerung für s0: 2
Einführung in die Technische Informatik - WS 11/12
Arithmetik
9
Addition (3)
• Addition von ai, bi und ci–1 an den Bitpositionen i = 1, ... , n–1
erfordert einen Volladdierer (FA = Full Adder), der die Summe si
und den Übertrag ci bestimmt:
• Verzögerung je nach Pfad und Realisierung: 2 bis 4
Einführung in die Technische Informatik - WS 11/12
Arithmetik
10
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 si aus ai, bi und ci–1 bestimmt.
Addition von zwei n-Bit Zahlen benötigt n Taktzyklen.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
11
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 s1 bis sn–1 verändern.
Wird daher auch als „Ripple Carry“ - Addierer (RCA) bezeichnet.
Resultierende maximale Verzögerung: 2 + (n –1) 2 = 2n
Einführung in die Technische Informatik - WS 11/12
Arithmetik
12
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 ci.
• Ansatz: Betrachte i-ten Volladdierer eines RCA.
Es gilt: ci = ai bi + (ai + bi) ci–1 Gi + Pi ci–1
„Generate“: Gi = ai bi gibt an, ob in Stelle i ein Übertrag erzeugt wird.
„Propagate“: Pi = ai + bi gibt an, ob in Stelle i ein Übertrag propagiert wird (Pi
= 1) oder nicht (Pi = 0).
Einführung in die Technische Informatik - WS 11/12
Arithmetik
13
Carry Look-Ahead Addierwerk (2)
• Für die Überträge ci ergibt sich somit:
c0 = a0b0 G0
c1 = a1b1 + (a1 + b1)c0 G1 + P1G0
c2 = G2 + P2G1 + P2P1G0
c3 = G3 + P3G2 + P3P2G1 + P3P2P1G0
c4 = G4 + P4G3 + P4P3G2 + P4P3P2G1 + P4P3P2P1G0
c5 = ...
• Verzögerung
Zur Bestimmung aller Pi und Gi :
Zur Bestimmung aller Signale ci bei gegebenen Pi und Gi : 2
Jedoch werden zur Bestimmung von ci 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!
Einführung in die Technische Informatik - WS 11/12
Arithmetik
14
Carry Look-Ahead Addierwerk (3)
• Aufbau eines Carry Look-Ahead Addierers (CLA) für n = 4 Bit:
hier mit Pi = ai bi
anstatt Pi = ai + bi
Einführung in die Technische Informatik - WS 11/12
Arithmetik
15
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 Pi und Gi 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:
Einführung in die Technische Informatik - WS 11/12
Arithmetik
16
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 bi
Addition von 1 zur Bildung des Zweierkomplements –b
Kann z.B. in den zuvor besprochenen Addierwerken durch Setzen von cin = 1 ohne
zusätzlichen Hardwareaufwand erreicht werden!
Addition von a und (b)
Summe ist korrekt, wenn Überlaufbit cn–1 ignoriert wird.
• Überlauf v tritt nur dann ein, wenn gilt: cn–1 cn–2
Einführung in die Technische Informatik - WS 11/12
Arithmetik
17
Subtraktion (2)
• Realisierung eines n-Bit Addier-/Subtrahierwerkes
• Addition a + b bei S = 0, Subtraktion a – b bei S = 1
• Invertieren der Bits bi bei S = 1 durch XOR-Gatter
• Intern ist jedes beliebige n-Bit Addierwerk verwendbar!
Einführung in die Technische Informatik - WS 11/12
Arithmetik
18
Subtraktion (3)
• Einige Beispiele zur Addition von im Zweierkomplement kodierten
positiven und negativen 8-Bit Zahlen:
Einführung in die Technische Informatik - WS 11/12
Arithmetik
19
Subtraktion (4)
•
Drei Fälle bei der Addition im Zweierkomplement:
1) Zahlen a und b positiv (d.h. an-1= bn-1= 0)
Überlauf bei sn-1 = 1 (tritt auf bei cn-1 = 0, cn-2 = 1)
2) Zahlen a und b negativ (d.h. an-1= bn-1= 1)
nun sind a´= a und b´= b positiv, somit gilt:
sum = a + b = (2n – a´) + (2n – b´) = 2 2n – (a´+ b´)
korrektes Ergebnis wäre jedoch: s = 2n – (a´+ b´) = sum – 2n
erforderliche Korrektur: Überlaufbit cn-1 ignorieren
Überlauf bei sn-1 = 0 (tritt auf bei cn-1 = 1, cn-2 = 0)
3) Vorzeichen von a und b unterschiedlich (b sei negativ):
sum = a + b = a + (2n – b´) = 2n – (b´ a) ist korrekt für |b| > |a|, korrektes
Ergebnis für |b| < |a| wäre jedoch: s = a b´ = sum – 2n
erforderliche Korrektur: Überlaufbit cn-1 ignorieren
kein Überlauf möglich!
Einführung in die Technische Informatik - WS 11/12
Arithmetik
20
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.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
21
ALU (2)
Einführung in die Technische Informatik - WS 11/12
Arithmetik
22
ALU (3)
• s2 unterscheidet zwischen arithmetischen und logischen
Operationen bzw. zwischen Konstanten 0 und 1.
• s1 und s0 wählen konkrete Operation (arithmetisch bzw. logisch).
Einführung in die Technische Informatik - WS 11/12
Arithmetik
23
Schaltungsrealisierung einer n-Bit-ALU
Einführung in die Technische Informatik - WS 11/12
Arithmetik
24
MULTIPLIKATION
Einführung in die Technische Informatik - WS 11/12
Arithmetik
25
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.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
26
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.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
27
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 p2n-1 ... pn parallel
• Zur Berechnung von p sind n Taktzyklen erforderlich!
Einführung in die Technische Informatik - WS 11/12
Arithmetik
28
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 aj bi ermittelt.
Für jedes Multiplikatorbit bi wird hieraus ein partielles Produkt qi = (an–1bi
an–2bi ... a1bi a0bi)2 = a bi gebildet.
Die n partiellen Produkte qi werden jeweils um i Bitpositionen nach links
verschoben und aufaddiert.
Beispiel für n = 4:
Einführung in die Technische Informatik - WS 11/12
Arithmetik
29
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)
Einführung in die Technische Informatik - WS 11/12
Arithmetik
30
Multiplizierwerke (4)
• Implementierung C: CSA-Kette / CSA-Baum
Zur Bildung des Produktes p zweier n-Bit Zahlen müssen n partielle Produkte
qi = a bi 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.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
31
Multiplizierwerke (5)
• Beispiel: 4-Bit CSA zur Addition von fünf 4-Bit Zahlen u, v, w, x, y
Einführung in die Technische Informatik - WS 11/12
Arithmetik
32
Multiplizierwerke (6)
• Zur Addition der n partiellen
Produkte qi = a bi 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) + tAdd
• Für einen CLA gilt z.B. tAdd = 5
• Weitere Beschleunigung durch
Anordnung als CSA-Baum.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
33
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 22n Zeilen aus 2n-Bit
Worten.
Jedoch sehr hoher Speicheraufwand:
n
Produkt
2n
Zeilen
22n
PROM
Größe
2
4
16
64 Bit
4
8
256
256 Byte
8
16
65536
128 KByte
16
32
4.3 109
1.6 GByte
Einführung in die Technische Informatik - WS 11/12
Arithmetik
34
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 (2n – b) = a 2n – a b
(– a) b = (2n – a) b = b 2n – a b
(– a) (– b) = (2n – a) (2n – b) = 22n – a 2n – b 2n + a b
(statt 22n – a b)
(statt 22n – 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.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
35
Multiplikation negativer Zahlen (2)
• Idee: Vereinfachung der Multiplikation, wenn Multiplikator eine 1Folge 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 bi
und bi–1 des Multiplikators:
(bibi–1)2 = 012 : Addition von a 2i
(bibi–1)2 = 102 : Subtraktion von a 2i
(bibi–1)2 = 002 oder (bibi–1)2 = 112 : keine Addition
• Ergänzung von b–1 = 0 erforderlich.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
36
Multiplikation negativer Zahlen (3)
• Realisierung der Subtraktion von a 2i durch Addition des
Zweierkomplements (vorzeichenrichtig ergänzt).
• Beispiele (mit n = 5):
• Funktioniert für beliebige positive und negative Multiplikanden
und Multiplikatoren!
Einführung in die Technische Informatik - WS 11/12
Arithmetik
37
DIVISION
Einführung in die Technische Informatik - WS 11/12
Arithmetik
38
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: qi = 1, falls a – b > 0
qi = 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
Einführung in die Technische Informatik - WS 11/12
Arithmetik
39
Division (2)
• Beispiel: 2910 / 510 = 510 mit Rest 410
Einführung in die Technische Informatik - WS 11/12
Arithmetik
40
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 = (q2n-1,...,q0) verwendet.
• Algorithmus zur Restoring-Division (für positive Zahlen a und b).
(q2n-1,...,qn) = 0, (qn-1,...,q0) = a
for i=0 to n-1 {
shift left q by 1
(q2n-1,...,qn) = (q2n-1,...,qn) - b
if (q2n-1 == 0)
q0 = 1
else {
q0 = 0
(q2n-1,...,qn)=(q2n-1,...,qn) + 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.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
41
Dividierwerk
• Direkte Implementierung
in digitaler Logik
ergibt serielles Dividierwerk:
• Steuerwerk muss entsprechende Signale generieren:
load q:
add/sub:
lade q mit Dividenden a in (qn–1,...,q0)
addiere/subtrahiere b zu/von (q2n–1,...,qn)
in Abhängigkeit von q2n-1
shift left: schiebe q um eine Stelle nach links
• Effizientere Dividierwerke arbeiten ohne Korrektur („NonRestoring“) und bestimmen je Schritt mehrere Quotientenbits.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
42
FEST- UND GLEITKOMMAZAHLEN
Einführung in die Technische Informatik - WS 11/12
Arithmetik
43
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!
Einführung in die Technische Informatik - WS 11/12
Arithmetik
44
Festkommazahlen (Wiederholung)
• Zahl zur Basis b mit einer festen Zahl von k Nachkommastellen:
z
= (zn– k–1 zn– k–2 ... z1 z0 , z–1 z–2 ... z–k+1 z–k )b
= zn– k–1 bn– k–1 + zn– k–2 bn– k–2 + ... + b1 z1 + b0 z0
n k 1
+ b–1 z–1 + b2 z2 + ... + bk +1 zk +1 + bk zk zi b i
i k
Die Ziffern zn– k–1 zn– k–2 ... z1 z0 stellen den ganzzahligen Teil, die Ziffern z1
z2 ... zk 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 2k.
• Beispiel: Ein 8-Bit Register enthält die Binärzahl z´ = 01101110; für
k = 3 gilt: z = 01101,1102 = 23 + 22 + 20 + 2–1 +2–2 = 13,7510.
• Alle bislang betrachteten Rechenwerke sind somit auch für
Operationen auf Festkommazahlen geeignet!
Einführung in die Technische Informatik - WS 11/12
Arithmetik
45
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 re 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 109.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
46
Gleitkommazahlen (Wiederholung)
• Eine binäre Gleitkommazahl x ist definiert durch x = a 2e
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 2eb
Wahl von b = 2 p–1 – 1 bewirkt Transformation des Bereiches für den
Exponenten e von 0 ... 2 p – 1 in –(2p–1 –1) ... 2p–1.
einfache Kodierung positiver und negativer Exponenten!
• Früher unterschiedliches Gleitkommaformat in jedem Prozessor,
heute überwiegend Verwendung des IEEE 754 Standard.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
47
IEEE 754 Standard (1)
• Allgemeine Definition: x = (–1)s 1.f 2e–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 = 2p–1–1, gültiger Exponent e nur im Bereich
emin= 0 e emax = 2p–1 = 2b+1
Darstellbarer Zahlenbereich: 21–b ... (2–2–m) 2b
Zwischen 2e–b und 2eb+1 gibt es stets 2m Gleitkommazahlen:
Abstand benachbarter Gleitkommazahlen ist abhängig von e.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
48
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
emin
0
0
0
emax
255
2047
32767
b
127
1023
16383
| xmin |
2–126 10–38
2–1022 10–308
2–16382 10–4932
| xmax | (2–2–23)2127 1038 (2–2–52)21023 10308
Einführung in die Technische Informatik - WS 11/12
Arithmetik
(2–2–112)216383 104932
49
IEEE 754 Standard (3)
• e = emin = (00..00)2 = 0 und e = emax = (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 = emax , f = 0, s = 0
x = („negative Infinity“): e = emax , f = 0, s = 1
x = NaN („Not a Number“): e = emax , f 0, s beliebig
x = (–1)s 0.f 21b („Denormalized Number“): e = 0, f 0
• Denormalisierte Gleitkommazahlen ermöglichen die Darstellung
sehr kleiner Werte im Bereich 21bm ... 21b.
Einführung in die Technische Informatik - WS 11/12
Arithmetik
50
IEEE 754 Standard (4)
• Behandlung von Ausnahmesituationen:
Überlauf tritt ein, wenn nach Normalisierung für x gilt: e emax
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
Einführung in die Technische Informatik - WS 11/12
Arithmetik
51
Gleitkomma-Multiplikation
• Algorithmus zur Multiplikation zweier IEEE-Gleitkommazahlen
x = (–1)s a 2bias und y = (–1)t b 2–bias :
1) Multipliziere Mantissen als Festkommazahlen: c = a b
a = 1.fa und b = 1.fb 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.fc = 1.(c2m–1 c2m–2 ... cm)2 mit Rundung.
5) Behandlung von Ausnahmesituationen:
a) Überlauf, falls emax = 2p – 1 z := (abhängig von u).
b) Unterlauf, falls emin = 0 Denormalisierung durchführen!
c) Zero, falls c = 0 z := 0 (abhängig von u).
Einführung in die Technische Informatik - WS 11/12
Arithmetik
52
Gleitkomma-Addition (1)
• Algorithmus zur Addition zweier IEEE-Gleitkommazahlen
x = (–1)s a 2bias und y = (–1)t b 2bias :
1) Sortiere x und y, so dass x die Zahl mit kleinerem Exponenten ist.
2) Anpassung der Exponenten: Bestimme x´ = (– 1)s a´ 2bias
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
Einführung in die Technische Informatik - WS 11/12
Arithmetik
53
Gleitkomma-Addition (2)
• Möglicher Aufbau eines Gleitkomma-Addierwerks:
Einführung in die Technische Informatik - WS 11/12
Arithmetik
54