Motivation 31. Mai 25 Zuletzt behandelt: Zahlendarstellung und Rechnerarithmetik Festkommazahlen: Vorzeichen/Betrag-Darstellung Einerkomplement, Zweierkomplement Rückführung der Subtraktion auf die Addition Gleitkommazahlen Heute: Mantisse, Exponent, Basis des Exponenten normalisierte Darstellung, Hidden Bit Der IEEE 754-Standard für Gleitkommazahlen Multiplikation von Festkommazahlen Rechnen mit Gleitkommazahlen Kapitel 5: Darstellung von Daten im Rechner Seite 36
Wiederholung: Gleitkommadarstellung Bei der Gleitkommadarstellung (halblogarithmische Darstellung) wird jede Zahl in der Form dargestellt. m heißt Mantisse, d Exponent und b ist die Basis für den Exponenten z = ± m b ±d Als Basis des Exponenten wird üblicherweise 2 gewählt. Das Vorzeichen wird explizit durch ein Bit codiert. Eine Gleitkommazahl ist dann eine n-stellige Bitfolge, die Vorzeichen, Mantisse und Exponent enthält. Beispiel: 32 Bit Gleitkommazahl (1 Bit Vorzeichen, 8 Bit Exponent, 23 Bit Mantisse) Kapitel 5: Darstellung von Daten im Rechner Seite 37
Vorteile der Gleitkommadarstellung Verteilung von Festkommazahlen auf dem Zahlenstrahl: Verteilung von Gleitkommazahlen auf dem Zahlenstrahl: Bei der Festkommadarstellung ist der Abstand zur nächsten darstellbaren Zahl überall gleich. Bei der Gleitkommadarstellung wird die prozentuale Abweichung gering gehalten (große Zahlen werden etwas gröber approximiert als kleine Zahlen). Kapitel 5: Darstellung von Daten im Rechner Seite 38
Vergleich Festkomma-/Gleitkommadarstellung Festkommadarstellung (32 Bit) Gleitkommadarstellung (32 Bit, wie oben vorgestellt) Größte darstellbare Zahl 2 32-1 2 127 Genauigkeit 32 Bits - ca. 1 Dezimalstellen 23 Bits - ca. 7 Dezimalstellen Unter der Verwendung von Gleitkommazahlen ist ein erheblich größerer Zahlenbereich darstellbar als mit der Festkommadarstellung. Allerdings leidet darunter die Genauigkeit, die bei der Festkommadarstellung höher ist. Die Diskrepanz zwischen Genauigkeit und darstellbarem Zahlenbereich der Gleitkommadarstellung wird durch Verwendung einer anderen Basis als 2 vergrößert. Kapitel 5: Darstellung von Daten im Rechner Seite 39
Excess-Darstellung Die Exponenten werden häufig nicht im Zweier-Komplement, sondern in der Excess-Darstellung (auch Biased-Notation genannt) dargestellt. Beispiel: Excess-Darstellung Betrachten wir wir durch 8 Bits Bits dargestellte Exponenten d, d, für für welche bei bei Verwendung des des Zweier-Komplementes -128-128 d 127 127gilt. Durch Addition von von 128=2 8-1 8-1 zu zu jedem d erhält man man einen Exponenten d d im im Bereich d 255. Durch diese Verschiebung wird wird der der Vergleich zweier Exponenten vereinfacht (z.b. (z.b. für für die die Anpassung zweier Operanden bei bei der der Addition), gilt gilt d 1 1 d 2, 2, dann gilt gilt das das auch für für die die gewöhnlichen Dualdarstellungen von von d 1 und 1 und d 2. 2. Allgemein erhält man die Excess-Darstellung d eines Exponenten d bei g Bits durch: d =d+2 g-1. Für g=8 spricht man von der Excess-127-Darstellung. Kapitel 5: Darstellung von Daten im Rechner Seite 4
IEEE 754 Das IEEE 754 Standard Floating Point Number Format ist eine häufig verwendete Gleitkommadarstellung für Binärzahlen. Ziel der Einführung war, dass identische Rechenwege auf unterschiedlichen Platformen auch zu identischen Ergebnissen kommen sollten Standard wurde nach öffentlicher Diskussion 1985 vom Institute of Electrical and Electronics Engineers (IEEE) als Standard definiert 1987 wurde mit IEEE 854 der Standard auf Dezimalzahlen erweitert. Interessante Verweise: http://www.h-schmidt.net/floatapplet/ieee754de.html http://grouper.ieee.org/groups/754/ IEEE 754 kennt zwei grundlegende Gleitkommazahlenformate: einfache Genauigkeit (32 Bit) doppelte Genauigkeit (64 Bit) Kapitel 5: Darstellung von Daten im Rechner Seite 41
IEEE 754: einfache Genaugkeit Einfache Genauigkeit (32 Bit) ist definiert wie folgt: Das erste Bit ist ein Vorzeichenbit: steht für eine positive Zahl, 1 für eine negative Zahl. Die folgenden acht Bit nehmen den Exponenten auf Er ist in der Excess-127-Darstellung gespeichert. Von dem Exponenten muss der Wert 127 subtrahiert werden, um den tatsächlichen Exponenten zu ermitteln. Die Basis des Exponenten ist 2. Die letzten 23 Bits nehmen die Mantisse auf: sie ist normalisiert als 1, (die erste 1 steht also vor dem Komma!) und hat als hidden Bit die 1 vor dem Komma. 1 8 9 31 VZ Exponent E Mantisse M Kapitel 5: Darstellung von Daten im Rechner Seite 42
IEEE 754: doppelte Genaugkeit Doppelte Genauigkeit (64 Bit) ist definiert wie folgt: Das erste Bit ist ein Vorzeichenbit: steht für eine positive Zahl, 1 für eine negative Zahl. Die folgenden 11 Bit (statt 8) nehmen den Exponenten auf Er ist in der Excess-123-Darstellung gespeichert. Die Basis des Exponenten ist 2. Die letzten 52 Bits (statt 23) nehmen die Mantisse auf: sie ist normalisiert als 1, (die erste 1 steht also vor dem Komma!) und hat als hidden Bit die 1 vor dem Komma. 1 11 12 63 VZ Exponent E Mantisse M Kapitel 5: Darstellung von Daten im Rechner Seite 43
IEEE 754 Eine 32-Bit Gleitkommazahl im IEEE 754-Format repräsentiert die Zahl N mit: N = (-1) VZ 1,M 2 E-127. Beispiel: Die Die Zahl Zahl N=-,15 wird wird dargestellt als als 1 111111 1-126-127=-1 1,5 Für das Rechnen mit Zahlen im IEEE 754-Format gelten die gleichen Regeln, wie für die bisher bekannte Gleitkommadarstellung. Kapitel 5: Darstellung von Daten im Rechner Seite 44
Weitere Beispiele Gegeben: 1 1 1 11 Gesucht: dezimale Darstellung! Gegeben: Dezimalzahl -,625 Gesucht: Darstellung als 32-Bit IEEE 754 Gleitkommazahl Kapitel 5: Darstellung von Daten im Rechner Seite 45
Sonderfälle Die Null ist nicht im regulären IEEE 754-Format darstellbar: Ausnahmeregelung: Wenn E = und M = wird die Zahl Null dargestellt Denormalisierte Zahlen: Zwischen der kleinsten darstellbaren positiven Zahl und der größten darstellbaren negativen Zahl liegen im regulären IEEE 754-Format keine weiteren Zahlen Gerade um die Null herum sollte man möglichst genau rechnen können Falls E = und M ist die Zahl denormalisiert, d.h. mit ihr wird wie mit einer Festkommazahl gerechnet Die Zahl hat dann den Wert (-1) VZ,M 2-126 Die denormalisierten Zahlen partitionieren den Zahlenbereich um Null herum äquidistant (die Null wird auch zu einer denormalisierten Zahl) Kapitel 5: Darstellung von Daten im Rechner Seite 46
IEEE 754 - reservierte Zahlen Im IEEE 754-Format werden einige Fehler- und Sonderfälle durch bestimmte Zahlen dargestellt. Es gibt solche reservierte Zahlformate für die folgenden Fälle: M= M/= E= Null Denormalisiert E=255 NaN Unendlich Not a Number (NaN) wird verwendet, wenn das Ergebnis einer Operation keine gültige Zahl erzeugt (z.b. Division durch Null). Unendlichkeit: Wird verwendet als ±, je nach Vorzeichen. Denormalisiert: Die Zahl ist nicht Null, aber zu klein, um sie normalisiert zu speichern, dann wird sie denormalisiert, also als.m dargestellt. Null: stellt die Zahl dar. Kapitel 5: Darstellung von Daten im Rechner Seite 47
5.3 Multiplikation In Kapitel 3 und 5 wurden Addiernetze und -werke vorgestellt. Diese können im Allgemeinen auch zur Multiplikation und zur Division verwendet werden. Grundsätzlich wird die Multiplikation im Dualsystem in der gleichen Weise durchgeführt wie im Dezimalsystem nach der Schulrechenmethode: Der Multiplikand wird nacheinander mit jedem einzelnen Bit des Multiplikators multipliziert, dabei entsteht jeweils ein Teilprodukt. Beginnt man mit dem am weitesten rechts stehenden Bit, so wird ab der zweiten Stelle das Teilprodukt um jeweils eine Stelle nach links verschoben. Das Ergebnis erhält man durch Summation aller Teilprodukte. Kapitel 5: Darstellung von Daten im Rechner Seite 48
Multiplikation Beispiel 5.2: Multiplikation im im Dualsystem Wir Wir betrachten die die Aufgabe 12 12 9: 9: 1 1 Multiplikand 1 2 9 1 8 9 1 8 Multiplikand Multiplikator Teilprodukte Ergebnis 1 1 1 1 1 1 1 1 1 1 Multiplikator Teilprodukte Ergebnis Kapitel 5: Darstellung von Daten im Rechner Seite 49
Multiplikation Die Multiplikation erfordert einen höheren physikalischen Aufwand als die Addition: Es ist ein doppelt so langes Ergebnisregister erforderlich. Die Hardware muss in der Lage sein, Shift-Operationen durchzuführen. Zudem ist die Schulmethode nicht effizient: Nullen im Multiplikator erfordern den gleichen Aufwand beim Multiplizieren wie die Einsen, tragen aber nichts zum Ergebnis bei. Teilprodukte müssen zwischengespeichert werden, um sie anschließend zu addieren. Kapitel 5: Darstellung von Daten im Rechner Seite 5
Multiplikation - Verbesserung der Methode Formal ist das Schulrechenverfahren wie folgt beschreibbar: Sei x der Multiplikant, y=(y n-1, y ) der Multiplikator, dann ist In der Praxis ist es sinnvoll jeden Term zu addieren, sobald er generiert wurde, so dass die Multiplikation wie folgt ausgeführt wird: Idee: Sukzessive Addition von Zweierpotenzen des Multiplikators ist durch Addition und Schiebeoperationen realisierbar. Kapitel 5: Darstellung von Daten im Rechner Seite 51
Multiplikation - Schaltung Wir beschränken Eingaben auf halbe Wortlänge. Dann kommt man ohne ein doppelt so langes Register zur Aufnahme des Ergebnisses aus. Akku soll am Ende das Ergebnis enthalten. Rechtsshift des Multiplikators steuert Addierwerk. Linksshift des Multiplikanden sorgt für Potenzierung (und anschliessende Addition auf die richtigen Stellen des Akkus). Kapitel 5: Darstellung von Daten im Rechner Seite 52
Multiplikation - Funktionsweise der Schaltung Die Multiplikation mit der Schaltung läuft wie folgt ab: Der Akku-Inhalt wird gelöscht. Die rechten 4 Bits des X-Registers nehmen den Multiplikanden auf, Y den Multiplikator. Eine zusätzliche Logik (in der Abbildung nicht gezeigt), überprüft das Bit Null von Y. Ist dieses Bit =1, dann wird der Inhalt von X zum Akku-Inhalt addiert. Ist das Bit =, dann bleibt der Akku-Inhalt unverändert. Anschließend wird der Inhalt von Y um ein Bit nach rechts, der Inhalt von X um ein Bit nach links geschoben und wieder Bit von Y überprüft. Stehen im Register Y nur noch Nullen, ist die Rechnung beendet, das Ergebnis der Multiplikation steht im Akku. Kapitel 5: Darstellung von Daten im Rechner Seite 53
Beispielablauf Multiplikation Akku löschen, Operanden laden: Hier X = 111, Y = 11 Akku X Y Kapitel 5: Darstellung von Daten im Rechner Seite 54
Beschleunigung der Schulmethode Die dargestellte Multiplikation nach der Schulmethode lässt sich beschleunigen. Verwendung eines Addiernetzes mit schneller Carry-Berechnung Zwischenspeicherung des bei der Addition auftretenden Übertrags und Verarbeitung desselben erst in späteren Schritten Malnehmen des Multiplikanden in jedem Schritt nicht nur mit einem Bit des Multiplikators, sondern mit k > 1 benachbarten Bits. Grundlage schneller Multiplizierer sind schnelle Addierer. Betrachten zunächst die Carry-Save-Multiplikation, weitere Spezialverfahren nächste Woche. Kapitel 5: Darstellung von Daten im Rechner Seite 55
Carry-Save-Multiplikation Wir verwenden als Addiernetz nun den Carry-Save-Adder und entwerfen damit ein Carry-Save-Multiplikationsnetz. Man kann die Multiplikation vierstelliger Dualzahlen in tabellarischer Form darstellen: Die Multiplikation lässt sich nun durch Addition der Zeilen implementieren. Bei vier Summanden reicht dazu ein zweistufiges Carry- Save-Addiernetz aus. Kapitel 5: Darstellung von Daten im Rechner Seite 56
Multiplikation mit größerer Stellenzahl Wenn die Stellenzahl der Operanden sehr groß ist, kann man mit einer baumartigen Anordnung der CSA eine schnelle Reduktion der Anzahl der Summanden herbeiführen (sogenannter Wallace-Tree): Tiefe der Schaltung ist logarithmisch in der Stellenzahl. Kapitel 5: Darstellung von Daten im Rechner Seite 57
Rechenoperationen auf Gleitkommazahlen Die bisherigen Verfahren und Schaltungen lassen sich auch zur Multiplikation von Gleitkommazahlen verwenden, indem man die Mantissen und die Exponenten nacheinander in der Hardware verarbeitet: Zur Multiplikation sind die Mantissen zu multiplizieren und die Exponenten zu addieren. Bei der Division werden die Mantissen dividiert, die Exponenten subtrahiert. Bei der Addition und der Subtraktion muss man darauf achten, dass die Operanden den gleichen Exponenten haben, dafür wird üblicherweise der Operand mit dem niedrigsten Exponenten denormalisiert. Durch die feste Wortlänge und die festgelegte Anzahl von Bits für Mantisse und Exponent gelten für Gleitkommazahlen im Rechner nicht alle üblichen Rechengesetze. Kapitel 5: Darstellung von Daten im Rechner Seite 58
Rechenoperationen auf Gleitkommazahlen Beispiel: Assoziativgesetz Sei Sei x=+,1567 1 1 3 3,, y=+,4322 1 1 5 5,, z=-,4323 1 1 5 5 So gilt für (x+y)+z: Für x+(y+z): x+y = +,1567 1 3 +,4322 1 5 y+z = +,4322 1 5 -,4323 1 5 = +,15 1 5 +,4322 1 5 = -,1 1 5 = +,4337 1 5 = -,1 1 2 (x+y)+z = +,4337 1 5 -,4323 1 5 x+(y+z) = +,1567 1 3 -,1 1 2 = +,14 1 5 = +,1567 1 3 -,1 1 3 = +,14 1 3 = +,1467 1 3 Also Also folgt: (x+y)+z x+(y+z). Das Das Assoziativgesetz gilt gilt also also nicht! Kapitel 5: Darstellung von Daten im Rechner Seite 59
Rechenoperationen auf Gleitkommazahlen Für das Rechnen mit Gleitkommazahlen gelten die folgenden Regeln: Seien dann gilt: Kapitel 5: Darstellung von Daten im Rechner Seite 6
Rechenoperationen auf Gleitkommazahlen Sollen diese Operationen mit den bereits bekannten Addierwerken durchgeführt werden, muss die Behandlung von Exponenten und Mantissen im Allgemeinen softwaremäßig erfolgen. Für eine Addition sind das die folgenden Operationen: Vergleich der Exponenten Shift der Mantisse der Zahl mit dem kleineren Exponenten Ausführung der eigentlichen Addition Ggf. Normalisierung des Ergebnisses. Um dies über die Hardware zu steuern und damit die Ausführungszeit von Gleitkomma-Operationen in ähnliche Dimensionen wie Festkomma- Operationen zu bringen, sind viele Rechenanlagen mit separaten Gleitkomma- Rechenwerken (Floating-Point-Prozessoren) ausgestattet. Diese verfügen über hinreichend lange Register zur Aufnahme von Operanden bzw. Ergebnissen, über eine geeignete Verknüpfungslogik und über ein eigenes Steuerwerk. Kapitel 5: Darstellung von Daten im Rechner Seite 61
Overflow und Underflow Bei Gleitkomma-Operationen können sowohl Over- als auch Underflows auftreten: Beispiel: Over- und und Underflow Die Addition,622 +,381 1 2 1 2 1,3 1 2 führt zu einem Overflow, da die Mantisse des Ergebnisses eine signifikante Stelle links vom Komma besitzt. Die Subtraktion,622 Beides ist ist durch eine eine Normalisierung zu zu beheben.,23 1 2 führt zu einem Underflow, da eine Null unmittelbar rechts vom Komma auftritt. Da der Zwang zur Normalisierung evtl. ein Abschneiden signifikanter Stellen erfordert, ist in der Gleitkomma-Arithmetik mit Rundungsfehlern zu rechnen. -,599 1 2 1 2 Kapitel 5: Darstellung von Daten im Rechner Seite 62
Ausblick Als nächstes (aus dem Skript von Spaniol, Popien, Schuba): weitere Varianten der beschleunigten Multiplikation Division Anschliessend: Darstellung alphanumerischer Zeichen (Oberschelp/Vossen, Kap 5.4) Am Donnerstag: Weiterführung des MMIX-Crash-Kurses Kapitel 5: Darstellung von Daten im Rechner Seite 63