IEEE 754-2008

IEEE 754-2008

Der Standard IEEE 754-2008, der früherer Arbeitstitel lautete IEEE 754r, ist eine notwendig gewordene Revision des 1985 verabschiedeten Gleitkommastandards IEEE 754. Der alte Standard war sehr erfolgreich und wurde in zahlreichen Prozessoren und Programmiersprachen übernommen. Die Diskussion über die Revision begann im Jahr 2001; im Juni 2008 wurde der Standard angenommen und im August 2008 verabschiedet.[1]

Inhaltsverzeichnis

Hauptziele

Die Hauptziele des verabschiedeten Standards konnten in

  • das Zusammenführen von IEEE 754 und IEEE 854,
  • die Reduktion von Implementierungsalternativen,
  • die Entfernung von Mehrdeutigkeiten aus IEEE 754,
  • ein zusätzliches kumulierendes Produkt (fused multiply-add: FMA(A, B, C) = A·B + C),
  • halbe und vierfache Genauigkeit (Formate für 16, 32, 64 und 128 Bit),
  • die von der Finanzwirtschaft als notwendig erachteten Dezimalformate (IEEE 854),
  • weitere variable und Austauschformate,
  • min und max mit Spezifikationen für die Spezialfälle ±0 und ±∞ sowie
  • Kosmetik (ab sofort soll „denormalisiert“ „subnormal“ heißen)

aufgeteilt werden. Der Standard soll Formate und Methoden für Gleitkommaarithmetik sowie eine Mindestqualität definieren.

Formate

Formate umfassen halbgenaue (16 Bit), einfach, doppelt und vierfach genaue (128 Bit) Gleitkommazahlen. Die Halbformate werden auch als Minifloat bezeichnet. Ergänzt werden die Grundformate durch erweiterte (extended) und erweiterbare (neu) Formate. Ebenfalls neu aufgenommen werden Datenaustauschformate.

Dicht gepackte Dezimalformate (3 Ziffern in 10 Bit) sind geplant. Die Dezimalformate werden hauptsächlich von der Finanzwirtschaft gefordert. Hier prallen zwei gegensätzliche Standpunkte aufeinander. Auf der einen Seite werden die Speicher-, Rechenzeit- und Kosten-Vorteile, sowie die gleichmäßigere Zahlenverteilung eines dualen Formates herausgestellt. Auf der anderen Seite wird argumentiert, dass exakte Ergebnisse (meist sind Ergebnisse wie bei Handrechnungen gemeint) nur mit Dezimalarithmetik möglich sind und in Zeiten schneller Prozessoren und billiger Speicher die Nachteile nicht mehr ins Gewicht fallen. Manche Experten gehen sogar soweit, zu behaupten, dass duale Arithmetik in Zukunft kaum noch eine Rolle spielen wird. Ein zugegeben polemisches Zitat zu diesem Thema stammt vom „Gleitpunktaltmeister“ William Kahan: [2]

englisch Why is decimal floating-point hardware a good idea anyway? Because it can help our industry avoid errors designed not to be found.
Übersetzung: Warum ist dezimale Gleitkommahardware auf jeden Fall eine gute Idee? Weil sie unserer Industrie hilft die Fehler zu vermeiden, die verfahrensbedingt nicht gefunden werden können.

Das konzipierte Dezimalformat (DFP) weicht gegenüber „klassischen BCD-Formaten“ folgendermaßen ab:

  • Die Kapazität der nutzbaren Bits wird gut ausgenutzt, wenn 3 Dezimalziffern (1000 Werte) in jeweils 10 Bit (1024 mögliche Werte mit 1000 genutzten) gespeichert werden. Der Verschnitt ist im Gegensatz zu BCD-Zahlen (16,95 %) hervorragend. Die letzte Spalte der Tabelle enthält den Informationsgehalt in Bit, der nur geringfügig geringer ist als der Speicherplatz (Bei d=7 Mantissenziffern und einem Exponentenwertebereich von emin - emax unter Berücksichtigung der Vorzeichenbits 1 + d * ln 10 / ln 2 + ln (emax-emin) / ln 2).
  • Die Verarbeitung der Dezimalziffern in Dreiergruppen kommt der üblichen Gruppierungsgewohnheit (23'223'456; 24 W, 24 kW, 24 MW) entgegen.
  • Die Zahl 0 hat auch das Bitmuster „0000…0“.
  • Die Zahlen 0 bis 9 haben in den 6 führenden Bits eine 0.
  • Die Zahlen 10 bis 99 haben in den 3 führenden Bits eine 0.
  • Ungerade Zahlen können mit Hilfe eines einzelnen Bits erkannt werden.
  • Die 24 unbenutzten Bitmuster ddx11x111x mit dd = 01, 10 oder 11 können leicht identifiziert werden.
  • Die so mit Declets gepackten Zahlen (Densely Packed) sind nicht mehr binär sortierbar, im Gegensatz zu „klassischen BCD-Formaten“.

Signaling NaNs wurden zur Streichung vorgeschlagen (3. Februar 2003), später aber wieder in den Vorschlag aufgenommen (21. Februar 2003).

(NZ: normalisierte Zahl)

Typ Größe Mantisse m Mant. bei NZ Exponent e emin emax Werte der Ch. bei NZ Bias Informationsgehalt in Bit
b16 16 Bit 10 Bit 11 Bit 5 Bit –14 15 1 ≤ E ≤ 30 15 16
b32 (single) 32 Bit 23 Bit 24 Bit 8 Bit –126 127 1 ≤ E ≤ 254 127 32
b64 (double) 64 Bit 52 Bit 53 Bit 11 Bit –1022 1023 1 ≤ E ≤ 2046 1023 64
b128 128 Bit 112 Bit 113 Bit 15 Bit –16382 16383 1 ≤ E ≤ 32766 16383 128
d32 32 Bit 20+ Bit 7 Ziffern 6 Bit –95 96 101 31,83
d64 64 Bit 50+ Bit 16 Ziffern 8 Bit –383 384 398 63.73
d128 128 Bit 110+ Bit 34 Ziffern 12 Bit –6143 6144 6176 127.53

(20+ in Spalte 3 bedeutet die Speicherung von 6 Dezimalstellen in diesen Bits (3 Stellen in je 10 Bit) und die Speicherung der Normalisierungsziffer in zusätzlichen Bits.)

Rundungen

Zu den vier alten IEEE 754 Rundungen kommt eine zusätzliche hinzu, so dass folgende Rundungen gefordert werden:

  • vergrößernd (in Richtung +Unendlich)
  • verkleinernd (in Richtung –Unendlich)
  • betragsverkleinernd (in Richtung 0)
  • bestmöglich und in der Mitte zur nächsten geraden Zahl (to next or to even)
  • bestmöglich und in der Mitte betragsvergrößernd (to next – neu in IEEE 754r, eigentlich nur die klassische Handrechnungsrundung)

Die IEEE 754-Rundung (next even) wurde schon von Carl Friedrich Gauß vorgeschlagen und vermeidet ein statistisches Ungleichgewicht bei längeren Rechnungen zu größeren Zahlen hin.

In der Diskussion um den neuen Standard wird diese Erkenntnis offensichtlich wieder verworfen und die „Handrechnungsrundung“ (to next) wieder eingeführt.

Ausnahmen

Ausnahmebedingungen und Ausnahmebehandlung werden spezifiziert.

Neue Funktionen sind Prädikatfunktionen (größer gleich) und Operatoren für Maximum und Minimum. Hier wird vor allem über die Ergebnisse bei den Sonderwerten (NaN, Inf) diskutiert.

Dezimalarithmetik

Eine Dezimalzahl kann mehrere verschiedene Darstellungsbitmuster haben (nichteindeutige Darstellung). Die Bitmuster, die eine Zahl repräsentieren, heißen die Kohorte dieser Zahl. Die Darstellungen (s, q, c) und (s, q+1, c/10) gehören zur selben Kohorte, wenn c durch 10 teilbar ist. (Strenggenommen ist die Menge {+0, –0} in der alten IEEE 754 Norm die Kohorte der Zahl 0. Der Standard IEEE 754R sagt jedoch explizit, dass +0 und -0 in verschiedene Kohorten gehören sollen.)

Die Darstellung erfolgt in vier Bitfeldern S, G, F und J. S ist 1 Bit breit und enthält das Vorzeichen der Zahl. G enthält bei allen Dezimalformaten in 5 Bit zwei Exponentenbit und die führende Mantissenziffer. Der restliche Exponent steht in w Bit der Feldes F. Den Abschluss bilden die restlichen Mantissenziffern im Feld J mit j Declets, 10j Bit und 3j Ziffern.

S G0 G1 G2 G3 G4 F2 F3 … F[w+1] J1, J2, … Jj

G = 11111: r = NaNq oder r = NaNs; v = NaN

G = 11110: r = v = (–1)^s Infinity

G < 11110: r = (S, E–B, c); v = (–1)^s 10^(E–B) c, mit c = d0 d1 … d[p–1]

G = 110xx | G = 1110x: d0 = 8 + G4 in {8, 9}; E = G2G3 in {0, 1, 2}

G = 0xxxx | G = 10xxx: d0 = G2G3G4 in {0, 1, 2, 3, 4, 5, 6, 7}; E = G0G1 in {0, 1, 2}

Exponent: ggf...f besteht aus w Bit im Feld F plus zwei Bit im Feld G. Die zwei Bit aus Feld G können nur die drei Werte {00, 01, 10} annehmen. Damit stehen nur 3/4 der rechnerischen Exponentenwerte zur Verfügung. (Beispiel: d32, w=6, w+2 = 8, was rechnerisch 256 verschiedene Exponentenwerte bedeuten würde. Da der Exponent nie mit 11f...f beginnen darf, sind es lediglich 3/4*256=192 Werte. Unter Berücksichtigung des Bias von 101 ist der Wertebereich des Exponenten 0-101 .. 191-101 = -101 .. 90. Da bei d32 sieben dezimale Stellen in der Mantisse stehen, und man davon ausgeht, dass nach der ersten Ziffer ein Punkt steht (D0. D1 bis D6), kann dem Exponenten +6 dazugezählt werden. Somit kommt man auf die in der obigen Tabelle geschriebenen Werte -95..+96.

J besteht aus den restlichen 10j Bit oder 3j Dezimalziffern mit Werten zwischen 0 und 999, die in je 10 Bit (0…1024) Cowlishaw-codiert sind.

Alternativ können Dezimalzahlen auch binär codiert sein. Aus dem 5bittigen G-Feld werden wie bei dezimaler Codierung 2 führende Exponentenbits und 4 führende Mantissenbits extrahiert. Nach Verkettung mit den restlichen Mantissenbits aus dem J-Feld wird die gesamte Mantisse als Dualzahl interpretiert. Ist eine solche Mantisse ausnahmsweise ≥ 10^p, dann gilt sie als nichtkanonische Darstellung der Null.

Einzelnachweise

  1. IEEE 754-2008: Standard for Floating-Point Arithmetic, IEEE Standards Association, 2008, doi:10.1109/IEEESTD.2008.4610935
  2. Floating-Point Arithmetic Besiegedby “Business Decisions”, IEEE-Sponsored ARITH 17 Symposium on Computer Arithmetic, 2007, engl.

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • IEEE 754-2008 — The IEEE Standard for Floating Point Arithmetic (IEEE 754) is the most widely used standard for floating point computation, and is followed by many hardware (CPU and FPU) and software implementations. Many computer languages allow or require that …   Wikipedia

  • IEEE 754-2008 — IEEE 754 широко распространённый стандарт формата представления чисел с плавающей точкой, используемый как в программных реализациях арифметических действий, так и во многих аппаратных (CPU и FPU) реализациях. Многие компиляторы языков… …   Википедия

  • IEEE-754 — L’IEEE 754 est un standard pour la représentation des nombres à virgule flottante en binaire. Il est le plus employé actuellement pour le calcul des nombres à virgule flottante dans le domaine informatique, avec les CPU et les FPU. Le standard… …   Wikipédia en Français

  • Ieee 754 — L’IEEE 754 est un standard pour la représentation des nombres à virgule flottante en binaire. Il est le plus employé actuellement pour le calcul des nombres à virgule flottante dans le domaine informatique, avec les CPU et les FPU. Le standard… …   Wikipédia en Français

  • IEEE 754 — Die Norm IEEE 754 (ANSI/IEEE Std 754 1985; IEC 60559:1989 International version) definiert Standarddarstellungen für binäre Gleitkommazahlen in Computern und legt genaue Verfahren für die Durchführung mathematischer Operationen, insbesondere für… …   Deutsch Wikipedia

  • IEEE 754 revision — This article describes the revision process of the IEEE 754 standard, 2000 2008, and the changes included in the revision. For a description of the standard itself, see IEEE 754 2008. IEEE 754 2008 (previously known as IEEE 754r ) was published… …   Wikipedia

  • IEEE 754 — L’IEEE 754 est un standard pour la représentation des nombres à virgule flottante en binaire. Il est le plus employé actuellement pour le calcul des nombres à virgule flottante dans le domaine informatique, avec les CPU et les FPU. Le standard… …   Wikipédia en Français

  • IEEE 754-1985 — The IEEE Standard for Binary Floating Point Arithmetic (IEEE 754) is the most widely used standard for floating point computation, and is followed by many CPU and FPU implementations. The standard defines formats for representing floating point… …   Wikipedia

  • IEEE 854 — Die Norm IEEE 854 (ANSI/IEEE Std 854 1987) definiert Standarddarstellungen für basis unabhängige Gleitkommazahlen in Computern und legt genaue Verfahren für die Durchführung mathematischer Operationen, insbesondere für Rundungen, fest. Als Basis… …   Deutsch Wikipedia

  • IEEE 754r — ist eine notwendig gewordene Revision des vor etwa 20 Jahren (1985) verabschiedeten Gleitkommastandards IEEE 754. Der alte Standard war sehr erfolgreich und wurde in zahlreichen Prozessoren und Programmiersprachen übernommen. Die Diskussion über… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”