IEEE 754-2008-Revision - IEEE 754-2008 revision

IEEE 754-2008 (früher bekannt als IEEE 754r ) wurde im August 2008 veröffentlicht und ist eine bedeutende Überarbeitung des IEEE 754-1985- Gleitkomma- Standards und ersetzt diesen , während er 2019 mit einer geringfügigen Überarbeitung IEEE 754-2019 aktualisiert wurde . Die Überarbeitung von 2008 erweiterte den bisherigen Standard, wo es nötig war, fügte Dezimalarithmetik und Formate hinzu, verschärfte bestimmte Bereiche des ursprünglichen Standards, die undefiniert blieben, und fusionierte in IEEE 854 (dem radix-unabhängigen Gleitkomma-Standard).

In einigen Fällen, in denen strengere Definitionen der binären Gleitkommaarithmetik mit einigen vorhandenen Implementierungen nicht kompatibel sein könnten, wurden sie optional.

Überarbeitungsprozess

Der Standard wurde seit dem Jahr 2000 überarbeitet, mit einem geplanten Fertigstellungstermin im Dezember 2006. Die Überarbeitung eines IEEE-Standards folgt im Wesentlichen drei Phasen:

  1. Arbeitsgruppe – ein Gremium, das einen Normentwurf erstellt
  2. Stimmzettel – Interessierte unterzeichnen die Stimmzettelgruppe und stimmen über den Entwurf ab (75 % der Gruppe müssen teilnehmen und 75 % müssen dem Entwurf zustimmen); Kommentare aus den Abstimmungen werden von einem Ballot Resolution Committee (BRC) beschlossen und vorgenommene Änderungen müssen mit einem neuen Stimmzettel rezirkuliert werden, wenn sie substanziell sind
  3. Wenn alle Kommentare geklärt sind und keine weiteren Änderungen vorliegen, wird der Entwurf dem IEEE zur Prüfung, Genehmigung und Veröffentlichung vorgelegt (dies kann auch zu Änderungen und Abstimmungen führen, obwohl dies selten vorkommt).

Am 11. Juni 2008 wurde es vom IEEE Revision Committee (RevCom) einstimmig genehmigt und am 12. Juni 2008 vom IEEE-SA Standards Board offiziell genehmigt. Es wurde am 29. August 2008 veröffentlicht.

754r Arbeitsgruppenphase

Die Teilnahme an der Ausarbeitung der Norm stand Personen mit soliden Kenntnissen der Gleitkomma-Arithmetik offen. Mehr als 90 Personen nahmen an mindestens einem der monatlichen Treffen teil, die im Silicon Valley stattfanden , und viele weitere nahmen über die Mailingliste teil.

Die Fortschritte waren zeitweise langsam, so dass der Vorsitzende auf der Sitzung vom 15. September 2005 erklärte, dass "keine Fortschritte erzielt werden, ich unterbreche diese Sitzungen aus diesen Gründen bis auf weiteres". Im Dezember 2005 reorganisierte sich der Ausschuss nach neuen Regeln mit einem angestrebten Fertigstellungstermin im Dezember 2006.

Im Februar 2006 wurden neue Richtlinien und Verfahren verabschiedet. Im September 2006 wurde ein Arbeitsentwurf genehmigt, der dem übergeordneten Sponsoring-Komitee (dem IEEE Microprocessor Standards Committee, oder MSC) zur Bearbeitung und zur Abstimmung des Sponsors zugesandt werden sollte.

754r Abstimmungsphase

Die letzte Version des Entwurfs, Version 1.2.5, wurde dem MSC vom 4. Oktober 2006 vorgelegt. Der MSC hat den Entwurf am 9. Oktober 2006 angenommen. Der Entwurf wurde während der Abstimmung im Detail wesentlich geändert.

Die erste Sponsorenwahl fand vom 29. November 2006 bis 28. Dezember 2006 statt. Von den 84 Mitgliedern des Stimmgremiums antworteten 85,7% – 78,6% stimmten zu. Da es negative Stimmen (und über 400 Kommentare) gab, gab es im März 2007 eine Rezirkulationsabstimmung; dies erhielt eine Zustimmung von 84 %. Es gab genügend Kommentare (über 130) aus diesem Wahlgang, dass ein dritter Entwurf für den zweiten, 15-tägigen Rezirkulationswahlgang ab Mitte April 2007 erstellt wurde. Aus technischen Gründen wurde der Wahlgang mit dem 4. Wahlgang im Oktober wieder aufgenommen 2007; es gab auch wesentliche Änderungen im Entwurf, die sich aus den Kommentaren von 650 Wählern und aus Anfragen des Sponsors (der IEEE MSC) ergaben; dieser Wahlgang hat gerade nicht die erforderliche Zustimmung von 75 % erreicht. Der 5. Wahlgang hatte eine Rücklaufquote von 98,0 % bei einer Zustimmung von 91,0 %, wobei Kommentare zu relativ kleinen Änderungen führten. Die 6., 7. und 8. Wahlgänge erreichten Zustimmungswerte von über 90 % mit zunehmend weniger Kommentaren zu jedem Entwurf; der 8. (der keine Kommentare im Geltungsbereich enthielt: 9 waren Wiederholungen früherer Kommentare und einer bezog sich auf Material, das nicht im Entwurf enthalten war) wurde dem IEEE Standards Revision Committee ('RevCom') zur Genehmigung als IEEE-Standard vorgelegt.

754r Überprüfungs- und Genehmigungsphase

Das IEEE Standards Revision Committee (RevCom) hat den IEEE 754r-Entwurf auf seiner Sitzung im Juni 2008 geprüft und einstimmig genehmigt und am 12. Juni 2008 vom IEEE-SA Standards Board genehmigt das IEEE Standards Publications Department zur Veröffentlichung.

Veröffentlichung IEEE Std 754-2008

Der neue IEEE 754 (ehemals IEEE Std 754-2008, der IEEE Standard for Floating-Point Arithmetic) wurde am 29. August 2008 von der IEEE Computer Society veröffentlicht und ist auf der IEEE Xplore-Website verfügbar

Dieser Standard ersetzt IEEE 754-1985 . IEEE 854, der Radix-Independent Floating Point Standard, wurde im Dezember 2008 zurückgezogen.

Zusammenfassung der Überarbeitungen

Die offensichtlichsten Verbesserungen des Standards sind die Hinzufügung eines 16-Bit- und eines 128-Bit-Binärtyps und dreier Dezimaltypen, einige neue Operationen und viele empfohlene Funktionen. Allerdings gab es durchweg erhebliche Klarstellungen in der Terminologie. Diese Zusammenfassung hebt die Hauptunterschiede in den einzelnen Hauptabschnitten des Standards hervor.

Abschnitt 1: Übersicht

Der Anwendungsbereich (vom Sponsor des Standards festgelegt) wurde um Dezimalformate und Arithmetik erweitert und um erweiterbare Formate erweitert.

Abschnitt 2: Definitionen

Viele der Definitionen wurden zur Verdeutlichung und Konsistenz umgeschrieben. Einige Begriffe wurden aus Gründen der Übersichtlichkeit umbenannt (z. B. wurde denormalized in subnormal umbenannt ).

Klausel 3: Formate

Die Beschreibung der Formate wurde regelmäßiger gemacht, wobei zwischen arithmetischen Formaten (in denen arithmetisch ausgeführt werden kann) und Austauschformaten (mit einer Standardcodierung) unterschieden wird. Die Konformität mit der Norm ist nun in diesen Begriffen definiert.

Die Spezifikationsebenen eines Gleitkommaformats wurden aufgezählt, um den Unterschied zu verdeutlichen zwischen:

  1. die theoretischen reellen Zahlen (ein erweiterter Zahlenstrahl)
  2. die Entitäten, die im Format dargestellt werden können (eine endliche Menge von Zahlen zusammen mit −0 , Unendlichkeiten und NaN )
  3. die besonderen Darstellungen der Entitäten: Vorzeichen-Exponent-Signifikant usw.
  4. das verwendete Bitmuster (Kodierung).

Die Mengen der darstellbaren Entitäten werden dann im Detail erklärt, wobei gezeigt wird, dass sie mit dem Signifikanten behandelt werden können, der entweder als Bruch oder als ganze Zahl betrachtet wird. Die einzelnen als Basisformate bekannten Sets werden definiert und die für den Austausch von Binär- und Dezimalformaten verwendeten Codierungen erläutert.

Die binären Austauschformate haben die " halbe Genauigkeit " (16-Bit-Speicherformat) und die " Quad-Genauigkeit " (128-Bit-Format) hinzugefügt, zusammen mit verallgemeinerten Formeln für einige breitere Formate; die Grundformate haben 32-Bit-, 64-Bit- und 128-Bit-Kodierungen.

Es werden drei neue Dezimalformate beschrieben, die den Längen der 32–128-Bit-Binärformate entsprechen. Diese ergeben dezimale Austauschformate mit 7, 16 und 34-stelligen Vorzeichen, die normalisiert oder nicht normalisiert sein können. Für maximale Reichweite und Genauigkeit führen die Formate einen Teil des Exponenten und des Signifikanten in ein Kombinationsfeld zusammen und komprimieren den Rest des Signifikanten entweder mit einer dezimalen Integer-Codierung (die Densely Packed Decimal oder DPD, einer komprimierten Form von BCD ) Codierung oder eine konventionelle binäre Integer-Codierung. Die Grundformate sind die beiden größeren Formate mit 64-Bit- und 128-Bit-Kodierung. Verallgemeinerte Formeln für einige andere Austauschformate werden ebenfalls angegeben.

Erweiterte und erweiterbare Formate ermöglichen Arithmetik mit anderen Genauigkeiten und Bereichen.

Abschnitt 4: Attribute und Rundungen

Diese Klausel wurde geändert, um die Verwendung statischer Attribute zur Steuerung von Gleitkommaoperationen zu fördern und (zusätzlich zu den erforderlichen Rundungsattributen) eine alternative Ausnahmebehandlung, Erweiterung von Zwischenergebnissen, wertändernde Optimierungen und Reproduzierbarkeit zu ermöglichen.

Das Rundung -auf- Nächstes-Attribut wurde hinzugefügt (nur für Dezimaloperationen erforderlich).

Klausel 5: Betrieb

Dieser Abschnitt enthält zahlreiche Klarstellungen (insbesondere im Bereich der Vergleiche) und mehrere zuvor empfohlene Operationen (wie Kopieren, Negieren, abs und Klasse) sind jetzt erforderlich.

Zu den neuen Operationen gehören fusioniertes Multiply-Add (FMA), explizite Konvertierungen, Klassifizierungsprädikate (isNan( x ) usw.), verschiedene Min- und Max-Funktionen, ein Gesamtordnungsprädikat und zwei dezimalspezifische Operationen (samequantum und quantize).

Min und Max

Die Min- und Max- Operationen sind definiert, lassen jedoch etwas Spielraum für den Fall, dass die Eingaben den gleichen Wert haben, sich aber in der Darstellung unterscheiden. Bestimmtes:

  • min(+0,−0)oder min(−0,+0)muss etwas mit einem Wert von Null produzieren, kann aber immer das erste Argument zurückgeben.

Um Operationen wie Windowing zu unterstützen, bei denen eine NaN-Eingabe still durch einen der Endpunkte ersetzt werden soll, werden min und max definiert, um eine Zahl x vor einer stillen NaN auszuwählen :

  • min(x,qNaN) = min(qNaN,x) = x
  • max(x,qNaN) = max(qNaN,x) = x

Diese Funktionen werden minNum und maxNum genannt, um anzuzeigen, dass sie eine Zahl gegenüber einem ruhigen NaN bevorzugen. Bei Vorhandensein eines signalisierenden NaN-Eingangs wird jedoch wie bei den üblichen Operationen ein ruhiges NaN zurückgegeben. Nach der Veröffentlichung des Standards wurde festgestellt, dass diese Regeln diese Operationen nicht assoziativ machen; Aus diesem Grund wurden sie in IEEE 754-2019 durch neue Operationen ersetzt .

Dezimalarithmetik

In diesem Abschnitt wird auch die Dezimalarithmetik definiert, die mit der in Java , C# , PL/I , COBOL , Python , REXX usw. Im Allgemeinen folgt die dezimale Arithmetik den gleichen Regeln wie die binäre Arithmetik (Ergebnisse werden korrekt gerundet usw.), mit zusätzlichen Regeln, die den Exponenten eines Ergebnisses definieren (in vielen Fällen sind mehrere möglich).

Richtig gerundete Basisumrechnung

Im Gegensatz zu 854 erfordert 754-2008 eine korrekt gerundete Basiskonvertierung zwischen dezimaler und binärer Gleitkommazahl innerhalb eines vom Format abhängigen Bereichs.

Abschnitt 6: Unendlichkeit, NaNs und Vorzeichenbit

Diese Klausel wurde überarbeitet und präzisiert, jedoch ohne größere Ergänzungen. Insbesondere gibt es formale Empfehlungen für die Codierung des Signalisierungs-/ruhigen NaN- Zustands.

Klausel 7: Standardmäßige Ausnahmebehandlung

Diese Klausel wurde überarbeitet und deutlich präzisiert, jedoch ohne wesentliche Ergänzungen.

Klausel 8: Alternative Ausnahmebehandlung

Diese Klausel wurde von der vorherigen Klausel 8 ('Traps') erweitert, um eine optionale Ausnahmebehandlung in verschiedenen Formen zu ermöglichen, einschließlich Traps und anderen Modellen wie Try/Catch. Traps und andere Ausnahmemechanismen bleiben optional, wie es in IEEE 754-1985 der Fall war.

Abschnitt 9: Empfohlene Operationen

Diese Klausel ist neu; es empfiehlt fünfzig Operationen, einschließlich logarithmischer, Potenz- und trigonometrischer Funktionen, die Sprachstandards definieren sollten. Diese sind alle optional (keine erforderlich, um dem Standard zu entsprechen). Die Operationen umfassen einige dynamische Modi für Attribute sowie eine Reihe von Reduktionsoperationen (Summe, skaliertes Produkt usw.).

Abschnitt 10: Ausdrucksbewertung

Diese Klausel ist neu; Es empfiehlt, wie Sprachstandards die Semantik von Operationsfolgen spezifizieren sollten, und weist auf die Feinheiten wörtlicher Bedeutungen und Optimierungen hin, die den Wert eines Ergebnisses ändern.

Klausel 11: Reproduzierbarkeit

Diese Klausel ist neu; es empfiehlt, dass Sprachstandards ein Mittel zum Schreiben reproduzierbarer Programme (dh Programme, die in allen Implementierungen einer Sprache das gleiche Ergebnis liefern) bieten und beschreibt, was getan werden muss, um reproduzierbare Ergebnisse zu erzielen.

Anhang A: Bibliographie

Dieser Anhang ist neu; es listet einige nützliche Referenzen auf.

Anhang B: Programm-Debugging-Unterstützung

Dieser Anhang ist neu; Es bietet Debugger- Entwicklern eine Anleitung für Funktionen, die für die Unterstützung des Debuggens von Gleitkommacode erwünscht sind.

Betriebsverzeichnis

Dies ist ein neuer Index, der alle im Standard beschriebenen Operationen auflistet (erforderlich oder optional).

Besprochen, aber nicht enthalten

Aufgrund von Änderungen in CPU-Design und -Entwicklung konnte der IEEE-Gleitkommastandard von 2008 als historisch oder veraltet angesehen werden, da er 1985 ersetzt wurde. Es gab viele externe Diskussionen und Punkte, die nicht im Standardisierungsprozess behandelt wurden. Die folgenden Punkte sind diejenigen, die öffentlich bekannt wurden:

  • Anhang "L" empfiehlt Sprachentwicklern, wie man Elemente im Standard an Features in einer Sprache bindet.
  • Anhang "U" enthält eine Anleitung zur Auswahl von numerischen Unterlaufdefinitionen.
754 war die Definition von Unterlauf, dass das Ergebnis winzig ist und an Genauigkeit verliert.
Für die Bestimmung der 'winzigen' Bedingung wurden zwei Definitionen zugelassen: vor oder nach Rundung des unendlich genauen Ergebnisses auf Arbeitsgenauigkeit, mit unbegrenztem Exponenten.
Zwei Definitionen von Genauigkeitsverlust waren zulässig: ungenaues Ergebnis oder Verlust nur aufgrund der Denormalisierung. Letzteres wurde von keinem bekannten Hardwaresystem implementiert und als Option aus dem überarbeiteten Standard entfernt.
Anhang U von 754r empfahl, dass nur eine Winzigkeit nach dem Runden und Ungenauigkeit als Verlust an Genauigkeit eine Ursache für das Unterlaufsignal sein sollte.
  • Anhang "Z" führte optionale Datentypen zur Unterstützung anderer Gleitkommaformate mit fester Breite sowie Formate mit beliebiger Genauigkeit ein (dh bei denen die Genauigkeit der Darstellung und Rundung zur Ausführungszeit bestimmt wird) – ein Teil dieses Materials wurde in den Hauptteil des Entwurfs durch Verallgemeinerung von Abschnitt 5. Auf willkürliche Präzision wurde verzichtet.
  • Vererbung und Weitergabe von Modi (Ausnahmebehandlung, Vorsubstitution, Rundung) und Flags (ungenau, Unterlauf, Überlauf, Division durch Null, ungültig). Der Wunsch besteht darin, dass sich Flags an einen Anrufer ausbreiten; und Modusänderungen können von einem Angerufenen geerbt werden, wirken sich jedoch nicht auf den Anrufer aus.
  • Intervall- und andere Arithmetiken wurden besprochen, aber nicht als außerhalb des Rahmens (und als eigenständiges großes Stück Arbeit) eingeschlossen. 2008 beginnt die Arbeit an einem vorgeschlagenen IEEE-Standard für Intervallarithmetik.

Verweise

Externe Links