Revize IEEE 754-2008 - IEEE 754-2008 revision

IEEE 754-2008 (dříve známý jako IEEE 754r ) byl vydáván v srpnu 2008 a je významným revize, a nahrazuje, tím IEEE 754-1985 s plovoucí desetinnou čárkou standardně , zatímco v roce 2019 to byl aktualizován s revizí menší IEEE 754-2019 . Revize z roku 2008 rozšířila předchozí standard tam, kde to bylo nutné, přidala desetinnou aritmetiku a formáty, zpřísnila určité oblasti původního standardu, které zůstaly nedefinovány, a sloučila je v IEEE 854 (standard s plovoucí desetinnou čárkou nezávislý na radixu).

V několika případech, kde přísnější definice binární aritmetiky s pohyblivou řádovou čárkou mohou být nekompatibilní s některou stávající implementací, byly provedeny jako volitelné.

Proces revize

Norma byla revidována od roku 2000, s cílovým datem dokončení v prosinci 2006. Revize standardu IEEE obecně sleduje tři fáze:

  1. Pracovní skupina - výbor, který vytváří návrh normy
  2. Hlasování - zúčastněné strany se přihlásí k hlasovací skupině a hlasují o návrhu (75% skupiny se musí zúčastnit a 75% musí schválit, aby návrh postoupil); komentáře z hlasování řeší Výbor pro řešení hlasování (BRC) a provedené změny musí být zaslány zpět s novým hlasováním, pokud jsou věcné
  3. Když jsou všechny komentáře vyřešeny a nejsou žádné další změny, je návrh odeslán IEEE ke kontrole, schválení a zveřejnění (to může také vést ke změnám a hlasování, i když je to vzácné).

Dne 11. června 2008 byl jednomyslně schválen revizním výborem IEEE (RevCom) a formálně byl schválen radou IEEE-SA pro standardy dne 12. června 2008. Byl zveřejněn 29. srpna 2008.

Fáze pracovní skupiny 754r

Účast na tvorbě standardu byla otevřena lidem se solidními znalostmi aritmetiky s pohyblivou řádovou čárkou. Více než 90 lidí se zúčastnilo alespoň jednoho z měsíčních setkání, která se konala v Silicon Valley , a mnoho dalších se zúčastnilo mailing listu.

Pokrok byl občas pomalý, což vedlo předsedu k tomu, aby na zasedání dne 15. září 2005 prohlásil, že „žádného pokroku není dosaženo, tyto schůzky z těchto důvodů do odvolání pozastavuji“. V prosinci 2005 výbor reorganizoval podle nových pravidel s cílovým datem dokončení v prosinci 2006.

V únoru 2006 byly přijaty nové zásady a postupy. V září 2006 byl schválen pracovní návrh, který bude zaslán mateřské sponzorské komisi (IEEE Microprocessor Standards Committee, MSC) k úpravám a bude zaslán do hlasování sponzora.

754r Hlasovací fáze

Poslední verze návrhu, verze 1.2.5, předložená výboru MSC, byla ze dne 4. října 2006. MSC přijal návrh dne 9. října 2006. Návrh byl během procesu hlasování podrobně výrazně změněn.

První hlasování sponzorů se konalo od 29. listopadu 2006 do 28. prosince 2006. Z 84 členů hlasovacího orgánu odpovědělo 85,7% - 78,6% hlasovalo pro schválení. Byly záporné hlasy (a více než 400 komentářů), takže v březnu 2007 proběhlo hlasování o recirkulaci; toto obdrželo 84% souhlas. Z tohoto hlasování bylo dost připomínek (více než 130), že třetí návrh byl připraven pro druhé, 15denní, recirkulační hlasování, které začalo v polovině dubna 2007. Z technického důvodu byl proces hlasování znovu zahájen 4. hlasováním v říjnu 2007; v návrhu rovněž došlo k podstatným změnám, které byly způsobeny připomínkami 650 voličů a žádostmi sponzora (IEEE MSC); tento hlasovací lístek právě nedosáhl požadovaného 75% schválení. 5. hlasování mělo 98,0% míru odezvy s 91,0% schválením, přičemž komentáře vedly k relativně malým změnám. Šestý, sedmý a osmý hlasovací lístek si udržely schválení o více než 90% a postupně méně komentářů ke každému návrhu; 8. (který neměl žádné připomínky v rozsahu: 9 bylo opakování předchozích komentářů a jeden odkazoval na materiál, který nebyl v návrhu) byl předložen výboru pro revizi standardů IEEE („RevCom“) ke schválení jako standard IEEE.

Fáze kontroly a schválení 754r

Výbor pro revizi standardů IEEE (RevCom) zvážil a jednomyslně schválil návrh IEEE 754r na svém zasedání v červnu 2008 a byl schválen radou IEEE-SA pro standardy dne 12. června 2008. Konečná úprava je dokončena a dokument byl nyní předán publikační oddělení standardů IEEE.

Publikace IEEE Std 754-2008

Nový IEEE 754 (formálně IEEE Std 754-2008, IEEE standard pro aritmetiku s pohyblivou řádovou čárkou) byl publikován IEEE Computer Society dne 29. srpna 2008 a je k dispozici na webových stránkách IEEE Xplore

Tato norma nahrazuje IEEE 754-1985 . IEEE 854, standard Radix-Independent s plovoucí desetinnou čárkou, byl stažen v prosinci 2008.

Shrnutí revizí

Nejviditelnější vylepšení standardu je přidání 16bitového a 128bitového binárního typu a tří desetinných typů, některé nové operace a mnoho doporučených funkcí. V celé terminologii však došlo k významnému objasnění. Toto shrnutí zdůrazňuje hlavní rozdíly v každé hlavní klauzuli normy.

Kapitola 1: Přehled

Rozsah (určený sponzorem standardu) byl rozšířen o desetinné formáty a aritmetiku a přidává rozšiřitelné formáty.

Kapitola 2: Definice

Mnoho definic bylo přepsáno kvůli objasnění a konzistenci. Několik výrazů bylo kvůli jasnosti přejmenováno (například denormalized byl přejmenován na subnormální ).

Kapitola 3: Formáty

Popis formátů byl pravidelnější, přičemž se rozlišovalo mezi aritmetickými formáty (ve kterých lze provádět aritmetiku) a výměnnými formáty (které mají standardní kódování). V těchto podmínkách je nyní definována shoda se standardem.

Byly vyjmenovány úrovně specifikací formátu s plovoucí desetinnou čárkou, aby se vyjasnil rozdíl mezi:

  1. teoretická reálná čísla (rozšířená číselná řada)
  2. entity, které mohou být reprezentovány ve formátu (konečná množina čísel spolu s −0 , nekonečny a NaN )
  3. konkrétní reprezentace entit: znaménko-exponent-význam atd.
  4. použitý bitový vzor (kódování).

Sady reprezentovatelných entit jsou pak podrobně vysvětleny a ukazují, že s nimi lze zacházet tak, že s významem se uvažuje buď jako zlomek, nebo jako celé číslo. Jsou definovány konkrétní sady známé jako základní formáty a jsou vysvětlena kódování použitá pro výměnu binárních a desítkových formátů.

Formáty binární výměny mají přidanou „ poloviční přesnost “ (16bitový formát úložiště) a „ čtyřnásobnou přesnost “ (128bitový formát) spolu s generalizovanými vzorci pro některé širší formáty; základní formáty mají 32bitové, 64bitové a 128bitové kódování.

Jsou popsány tři nové desetinné formáty, které odpovídají délkám 32–128bitových binárních formátů. Ty poskytují formáty desítkové výměny se 7, 16 a 34 číslicemi, které mohou být normalizovány nebo nenormalizovány. Pro maximální rozsah a přesnost sloučí formáty část exponentu a významu do kombinačního pole a zbývající část významu zkomprimují buď pomocí dekadického celočíselného kódování (které používá hustě zabalené desetinné číslo , nebo DPD, komprimovaná forma BCD ). nebo konvenční binární celočíselné kódování. Základní formáty jsou dvě větší velikosti, které mají 64bitové a 128bitové kódování. Rovněž jsou specifikovány zobecněné vzorce pro některé jiné výměnné formáty.

Rozšířené a rozšiřitelné formáty umožňují aritmetiku v jiných přesnostech a rozsazích.

Kapitola 4: Atributy a zaokrouhlování

Tato klauzule byla změněna, aby podporovala používání statických atributů pro řízení operací s plovoucí desetinnou čárkou, a (kromě požadovaných atributů zaokrouhlování) umožňovala zpracování alternativních výjimek, rozšiřování průběžných výsledků, optimalizaci měnící hodnoty a reprodukovatelnost.

Round-to-nejbližších, kravaty daleko od nuly byl přidán (vyžadováno pouze desetinných operací) zaokrouhlování atributu.

Kapitola 5: Operace

Tato část obsahuje řadu vysvětlení (zejména v oblasti srovnání) a nyní je požadováno několik dříve doporučených operací (jako je kopírování, negace, abs a třída).

Nové operace zahrnují fúzované násobení-přidání (FMA), explicitní převody, klasifikační predikáty (isNan ( x ) atd.), Různé funkce min a max, predikát celkového uspořádání a dvě operace specifické pro desetinná místa (stejné množství a kvantování).

Min. A max

Operace min a max jsou definovány, ale ponechávají určitou volnost pro případ, že vstupy mají stejnou hodnotu, ale liší se v reprezentaci. Zejména:

  • min(+0,−0)nebo min(−0,+0)musí produkovat něco s hodnotou nula, ale vždy může vrátit první argument.

Aby byly podporovány operace, jako je vytváření oken, ve kterých by měl být vstup NaN potichu nahrazen jedním z koncových bodů, jsou definovány min a max pro výběr čísla, x , před tichým NaN:

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

Tyto funkce se nazývají minNum a maxNum k označení jejich preference pro číslo před tichým NaN. V přítomnosti signalizačního vstupu NaN se však vrátí tichý NaN jako u obvyklých operací. Po zveřejnění standardu bylo zjištěno, že tato pravidla činí tyto operace neasociativní; z tohoto důvodu byly v IEEE 754-2019 nahrazeny novými operacemi .

Desítková aritmetika

V této části je také definována desítková aritmetika, kompatibilní s tou používanou v jazycích Java , C# , PL/I , COBOL , Python , REXX atd. Desítková aritmetika se obecně řídí stejnými pravidly jako binární aritmetika (výsledky jsou správně zaokrouhleny atd.) S dalšími pravidly, která definují exponent výsledku (v mnoha případech je možné více než jedno).

Správně zaokrouhlená konverze základny

Na rozdíl od 854 vyžaduje 754-2008 správně zaokrouhlený základní převod mezi desetinnou a binární plovoucí desetinnou čárkou v rozsahu, který závisí na formátu.

Klauzule 6: Nekonečno, NaN a znakový bit

Tato doložka byla revidována a objasněna, ale bez zásadních dodatků. Zejména poskytuje formální doporučení pro kódování signalizačního/ klidového stavu NaN .

Kapitola 7: Výchozí zpracování výjimek

Tato doložka byla revidována a značně objasněna, ale bez zásadních dodatků.

Klauzule 8: Alternativní zpracování výjimek

Tato klauzule byla rozšířena z předchozí klauzule 8 („pasti“), aby umožňovala zpracování nepovinných výjimek v různých formách, včetně pastí a dalších modelů, jako je try/catch. Pasti a další mechanismy výjimek zůstávají volitelné, jako tomu bylo v IEEE 754-1985.

Kapitola 9: Doporučené operace

Tato doložka je nová; doporučuje padesát operací, včetně logových, výkonových a trigonometrických funkcí, které by měly definovat jazykové standardy. Všechny jsou volitelné (žádné nejsou nutné, aby odpovídaly standardu). Operace zahrnují některé z dynamických režimů pro atributy a také sadu redukčních operací (součet, škálovaný produkt atd.).

Kapitola 10: Hodnocení výrazů

Tato klauzule je nová; doporučuje, jak by jazykové standardy měly specifikovat sémantiku posloupností operací, a poukazuje na jemnosti doslovných významů a optimalizací, které mění hodnotu výsledku.

Doložka 11: Reprodukovatelnost

Tato doložka je nová; doporučuje, aby jazykové standardy poskytovaly prostředky k psaní reprodukovatelných programů (tj. programů, které budou poskytovat stejný výsledek ve všech implementacích jazyka), a popisuje, co je třeba udělat pro dosažení reprodukovatelných výsledků.

Příloha A: Bibliografie

Tato příloha je nová; uvádí některé užitečné odkazy.

Příloha B: Podpora ladění programu

Tato příloha je nová; poskytuje návod pro ladicí vývojáře pro funkce, které jsou požadovány pro podporu ladění s plovoucí desetinnou čárkou kódu.

Index operací

Toto je nový index, který uvádí všechny operace popsané ve standardu (povinné nebo volitelné).

Diskutováno, ale není zahrnuto

Kvůli změnám v designu a vývoji CPU mohl být standard IEEE s plovoucí desetinnou čárkou v roce 2008 považován za historický nebo zastaralý jako standard z roku 1985, který nahradil. Proběhlo mnoho vnějších diskusí a položky, které nebyly zahrnuty do procesu normalizace, níže uvedené položky jsou ty, které se staly veřejně známými:

  • Příloha „L“ doporučila vývojářům jazyků, jak vázat položky ve standardu na funkce v jazyce.
  • Příloha „U“ poskytla vodítko pro výběr numerických definic podtečení.
V roce 754 byla definice podtečení taková, že výsledek je malý a dochází ke ztrátě přesnosti.
Ke stanovení „malé“ podmínky byly povoleny dvě definice: před nebo po zaokrouhlení nekonečně přesného výsledku na pracovní přesnost s neomezeným exponentem.
Byly povoleny dvě definice ztráty přesnosti: nepřesný výsledek nebo ztráta způsobená pouze denormalizací. Žádné známé hardwarové systémy implementovaly ten druhý a byl z revidovaného standardu odstraněn jako volitelná výbava.
Příloha U 754r doporučila, aby příčinou signálu podtečení byla pouze drobnost po zaokrouhlení a nepřesnost jako ztráta přesnosti.
  • Příloha „Z“ zavedla volitelné datové typy pro podporu dalších formátů s plovoucí desetinnou čárkou s pevnou šířkou a také formátů libovolné přesnosti (tj. Kde je přesnost zobrazení a zaokrouhlování určena v době provádění)-část tohoto materiálu byla přesunuta do tělo návrhu zobecněním části 5. Svévolná přesnost byla vypuštěna.
  • Dědičnost a šíření režimů (zpracování výjimek, presubstituce, zaokrouhlování) a příznaků (nepřesné, podtečené, přetečené, dělené nulou, neplatné). Touha je nechat vlajky šířit volajícímu; a změny režimu mohou být zděděny volaným, ale neovlivňují volajícího.
  • Intervaly a další aritmetika byly diskutovány, ale nebyly zahrnuty jako mimo rozsah (a velký kus práce samy o sobě). Práce začínají v roce 2008 na navrhovaném standardu IEEE pro intervalovou aritmetiku.

Reference

externí odkazy