IEEE 754-2008 revizyonu - IEEE 754-2008 revision

IEEE 754-2008 (önceden IEEE 754r olarak biliniyordu ) Ağustos 2008'de yayınlandı ve IEEE 754-1985 kayan nokta standardının önemli bir revizyonudur ve onun yerini alır, 2019'da küçük bir revizyonla güncellenmiştir IEEE 754-2019 . 2008 revizyonu, gerektiğinde önceki standardı genişletti, ondalık aritmetik ve biçimler ekledi, orijinal standardın tanımsız bırakılan belirli alanlarını sıkılaştırdı ve IEEE 854'te (radix bağımsız kayan nokta standardı) birleştirildi.

İkili kayan nokta aritmetiğinin daha katı tanımlarının mevcut bazı uygulamalarla performans açısından uyumsuz olabileceği birkaç durumda, bunlar isteğe bağlı hale getirildi.

Revizyon süreci

Standart, 2000 yılından beri revizyon altındaydı ve hedeflenen tamamlanma tarihi Aralık 2006 idi. Bir IEEE standardının revizyonu genel olarak üç aşamayı takip eder:

  1. Çalışma grubu – bir standart taslağı oluşturan bir komite
  2. Oy pusulası – ilgili taraflar oylama grubuna üye olur ve taslağa oy verir (taslağın ilerlemesi için grubun %75'inin katılması ve %75'inin onaylaması gerekir); Oylardan elde edilen yorumlar bir Oylama Karar Komitesi (BRC) tarafından karara bağlanır ve yapılan değişiklikler esaslıysa yeni bir oy pusulası ile yeniden dağıtılmalıdır.
  3. Tüm yorumlar çözümlendiğinde ve başka bir değişiklik olmadığında, taslak gözden geçirilmek, onaylanmak ve yayınlanmak üzere IEEE'ye gönderilir (bu, nadiren de olsa değişikliklere ve oylamalara neden olabilir).

11 Haziran 2008 tarihinde, IEEE Revizyon Komitesi (RevCom) tarafından oybirliği ile onaylandı ve 12 Haziran 2008 tarihinde IEEE-SA Standartlar Kurulu tarafından resmi olarak onaylandı. 29 Ağustos 2008 tarihinde yayınlandı.

754r Çalışma Grubu aşaması

Standardın hazırlanmasına katılım, kayan nokta aritmetiği konusunda sağlam bilgiye sahip kişilere açıktı. Silikon Vadisi'nde gerçekleştirilen aylık toplantılardan en az birine 90'dan fazla kişi katıldı ve daha pek çoğu da mail listesi aracılığıyla katıldı.

Zaman zaman ilerleme yavaştı ve başkanın 15 Eylül 2005'teki toplantısında "hiçbir ilerleme kaydedilmediğini, bu gerekçelerle bu toplantıları bir sonraki duyuruya kadar askıya alıyorum" açıklamasına yol açtı. Aralık 2005'te komite, Aralık 2006'da bir hedef tamamlama tarihi ile yeni kurallar altında yeniden organize edildi.

Şubat 2006'da yeni politikalar ve prosedürler kabul edildi. Eylül 2006'da, düzenleme için ana sponsor komitesine (IEEE Mikroişlemci Standartları Komitesi veya MSC) gönderilmek ve sponsor oylamasına gönderilmek üzere bir çalışma taslağı onaylandı.

754r Oy pusulası aşaması

MSC'ye sunulan taslağın son versiyonu olan 1.2.5 versiyonu 4 Ekim 2006'daydı. MSC taslağı 9 Ekim 2006'da kabul etti. Taslak oylama sürecinde ayrıntılı olarak önemli ölçüde değiştirildi.

İlk sponsor oylaması 29 Kasım 2006'dan 28 Aralık 2006'ya kadar yapıldı. Oylama organının 84 üyesinden %85,7'si yanıt verdi - %78,6'sı onay oyu verdi. Olumsuz oylar (ve 400'den fazla yorum) vardı, bu nedenle Mart 2007'de bir yeniden dolaşım oylaması yapıldı; bu %84 onay aldı. O sandıktan, Nisan 2007'nin ortalarında başlayan 15 günlük ikinci oylama için üçüncü bir taslağın hazırlandığına dair yeterli yorum (130'dan fazla) vardı. Teknik bir nedenle, oylama süreci Ekim ayında 4. oylama ile yeniden başlatıldı. 2007; 650 seçmenin yorumlarından ve sponsordan (IEEE MSC) gelen taleplerden kaynaklanan taslakta önemli değişiklikler de vardı; bu oylama gerekli %75 onayına ulaşamadı. 5. oylama, nispeten küçük değişikliklere yol açan yorumlarla birlikte, %91.0 onay ile %98,0 yanıt oranına sahipti. 6., 7. ve 8. oylamalar, her taslakta giderek daha az yorumla %90'ın üzerinde onay derecelendirmesini sürdürdü; 8. (kapsam içi yorum içermeyen: 9'u önceki yorumların tekrarıydı ve bir tanesi taslakta olmayan materyale atıfta bulundu), IEEE standardı olarak onaylanmak üzere IEEE Standartları Revizyon Komitesi'ne ('RevCom') sunuldu.

754r İnceleme ve Onay aşaması

IEEE Standartları Revizyon Komitesi (RevCom) Haziran 2008 toplantısında IEEE 754r taslağını inceledi ve oybirliğiyle onayladı ve 12 Haziran 2008'de IEEE-SA Standartlar Kurulu tarafından onaylandı. Son düzenleme tamamlandı ve belge şimdi şuraya gönderildi. IEEE Standartları Yayınları Departmanına yayın için.

IEEE Std 754-2008 yayını

Yeni IEEE 754 (resmi olarak IEEE Std 754-2008, Kayan Nokta Aritmetiği için IEEE Standardı) IEEE Computer Society tarafından 29 Ağustos 2008'de yayınlandı ve IEEE Xplore web sitesinden edinilebilir

Bu standart, IEEE 754-1985'in yerini alır . IEEE 854, Radix-Bağımsız kayan nokta standardı Aralık 2008'de geri çekildi.

Revizyonların özeti

Standarttaki en belirgin geliştirmeler, 16-bit ve 128-bit ikili tip ve üç ondalık tip, bazı yeni işlemler ve önerilen birçok fonksiyonun eklenmesidir. Bununla birlikte, baştan sona terminolojide önemli açıklamalar yapılmıştır. Bu özet, standardın her bir ana maddesindeki temel farklılıkları vurgulamaktadır.

Madde 1: Genel Bakış

Kapsam (standartın sponsoru tarafından belirlenir) ondalık biçimleri ve aritmetiği içerecek şekilde genişletildi ve genişletilebilir biçimler eklendi.

Madde 2: Tanımlar

Tanımların çoğu, netlik ve tutarlılık için yeniden yazılmıştır. Açıklık sağlamak için birkaç terim yeniden adlandırıldı (örneğin, denormalized , subnormal olarak yeniden adlandırıldı ).

Madde 3: Formatlar

Formatların tanımı, aritmetik formatlar (aritmetiğin gerçekleştirilebildiği) ve değişim formatları (standart bir kodlamaya sahip olan ) arasında bir ayrım yapılarak daha düzenli hale getirilmiştir . Standarda uygunluk artık bu terimlerle tanımlanmaktadır.

Aşağıdakiler arasındaki farkı netleştirmek için kayan nokta biçiminin belirtim düzeyleri sıralanmıştır:

  1. teorik gerçek sayılar (genişletilmiş bir sayı doğrusu)
  2. biçimde temsil edilebilen varlıklar ( -0 , sonsuzluklar ve NaN ile birlikte sonlu bir sayı kümesi )
  3. varlıkların belirli temsilleri: işaret-üs-anlamlı, vb.
  4. kullanılan bit deseni (kodlama).

Temsil edilebilir varlık kümeleri daha sonra, bunların bir kesir veya bir tamsayı olarak kabul edilen anlamla ele alınabileceklerini göstererek ayrıntılı olarak açıklanır. Temel formatlar olarak bilinen belirli kümeler tanımlanır ve ikili ve ondalık formatların değişimi için kullanılan kodlamalar açıklanır.

İkili değişim biçimleri, bazı daha geniş biçimler için genelleştirilmiş formüllerle birlikte " yarı kesinlik " (16-bit depolama biçimi) ve " dörtlü kesinlik " (128-bit biçim) eklenmiştir; temel biçimler 32-bit, 64-bit ve 128-bit kodlamalara sahiptir.

32–128 bitlik ikili biçimlerin uzunluklarıyla eşleşen üç yeni ondalık biçim tanımlanmıştır. Bunlar, normalleştirilmiş veya normalleştirilmemiş olabilen 7, 16 ve 34 basamaklı anlamlı ondalık değişim biçimleri verir. Maksimum aralık ve kesinlik için biçimler, üs ve anlamlının bir kısmını bir kombinasyon alanında birleştirir ve anlamlının geri kalanını bir ondalık tamsayı kodlaması ( Densely Packed Decimal veya DPD, sıkıştırılmış bir BCD biçimi kullanır ) kullanarak sıkıştırır. veya geleneksel ikili tamsayı kodlaması. Temel biçimler, 64-bit ve 128-bit kodlamalara sahip iki büyük boyuttur. Diğer bazı değişim biçimleri için genelleştirilmiş formüller de belirtilmiştir.

Genişletilmiş ve genişletilebilir formatlar, diğer kesinlik ve aralıklarda aritmetik yapılmasına izin verir.

Madde 4: Nitelikler ve yuvarlama

Bu madde, kayan nokta işlemlerini kontrol etmek için statik özniteliklerin kullanımını teşvik etmek ve (gerekli yuvarlama özniteliklerine ek olarak) alternatif istisna işlemeye, ara sonuçların genişletilmesine, değer değiştiren optimizasyonlara ve yeniden üretilebilirliğe izin vermek için değiştirilmiştir.

En yakına, sıfır yuvarlamadan uzağa bağlar özelliği eklendi (yalnızca ondalık işlemler için gereklidir).

Madde 5: İşlemler

Bu bölümde (özellikle karşılaştırmalar alanında) çok sayıda açıklama vardır ve daha önce önerilen birkaç işlem (kopyalama, olumsuzlama, abs ve sınıf gibi) artık gereklidir.

Yeni işlemler, kaynaşmış çarpma-ekleme (FMA), açık dönüştürmeler, sınıflandırma yüklemleri (isNan( x ), vb.), çeşitli min ve maks işlevleri, bir toplam sıralama yüklemi ve iki ondalık basamağa özgü işlemi (aynı kuantum ve niceleme) içerir.

Minimum ve maksimum

Min ve Maks işlemleri tarif edildiği gibidir ancak girişler değeri eşittir, ancak temsil farklılık örneği için de hareket alanı terk eder. Özellikle:

  • min(+0,−0)veya min(−0,+0)sıfır değerine sahip bir şey üretmelidir, ancak her zaman ilk argümanı döndürebilir.

Bir NaN girişinin sessizce bitiş noktalarından biriyle değiştirilmesi gereken pencereleme gibi işlemleri desteklemek için, sessiz bir NaN yerine min ve max bir sayı seçmek için tanımlanır, x :

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

Bu işlevlere, sessiz bir NaN yerine bir sayı tercihlerini belirtmek için minNum ve maxNum adı verilir . Ancak, bir sinyalleme NaN girişinin varlığında, olağan işlemlerde olduğu gibi sessiz bir NaN döndürülür. Standardın yayınlanmasından sonra, bu kuralların bu işlemleri ilişkisel olmayan hale getirdiği fark edildi; bu nedenle IEEE 754-2019'da bunların yerini yeni operasyonlar almıştır .

ondalık aritmetik

Java , C# , PL/I , COBOL , Python , REXX vb. ile uyumlu ondalık aritmetik de bu bölümde tanımlanmıştır. Genel olarak, ondalık aritmetik, ikili aritmetik ile aynı kuralları izler (sonuçlar doğru bir şekilde yuvarlanır, vb.), bir sonucun üssünü tanımlayan ek kurallarla (birçok durumda birden fazla mümkündür).

Doğru yuvarlatılmış temel dönüştürme

854'ten farklı olarak, 754-2008 , biçime bağlı bir aralık içinde ondalık ve ikili kayan nokta arasında doğru yuvarlatılmış taban dönüşümü gerektirir .

Madde 6: Sonsuzluk, NaN'ler ve işaret biti

Bu madde gözden geçirilmiş ve netleştirilmiştir, ancak önemli bir ekleme yapılmamıştır. Özellikle, sinyalleşme/sessiz NaN durumunun kodlanması için resmi önerilerde bulunur .

Madde 7: Varsayılan istisna işleme

Bu madde gözden geçirilmiş ve önemli ölçüde açıklığa kavuşturulmuş, ancak önemli bir ekleme yapılmamıştır.

Madde 8: Alternatif istisna işleme

Bu madde, tuzaklar ve try/catch gibi diğer modeller dahil olmak üzere çeşitli biçimlerde isteğe bağlı istisna işlemeye izin vermek için önceki Madde 8'den ('Tuzaklar') genişletilmiştir. Tuzaklar ve diğer istisna mekanizmaları, IEEE 754-1985'te olduğu gibi isteğe bağlı kalır.

Madde 9: Önerilen işlemler

Bu madde yenidir; dil standartlarının tanımlaması gereken log, güç ve trigonometrik işlevler dahil elli işlemi önerir. Bunların tümü isteğe bağlıdır (standartlara uymak için hiçbiri gerekli değildir). İşlemler, nitelikler için bazı dinamik modları ve ayrıca bir dizi indirgeme işlemini (toplam, ölçeklenmiş ürün, vb.) içerir.

Madde 10: İfade değerlendirmesi

Bu madde yenidir; dil standartlarının işlem dizilerinin semantiğini nasıl belirlemesi gerektiğini önerir ve bir sonucun değerini değiştiren gerçek anlamların ve optimizasyonların inceliklerine işaret eder.

Madde 11: Tekrarlanabilirlik

Bu madde yenidir; dil standartlarının, tekrarlanabilir programlar (yani, bir dilin tüm uygulamalarında aynı sonucu üretecek programlar) yazmak için bir araç sağlaması gerektiğini tavsiye eder ve tekrarlanabilir sonuçlara ulaşmak için ne yapılması gerektiğini açıklar.

Ek A: Bibliyografya

Bu ek yenidir; bazı faydalı referansları listeler.

Ek B: Program hata ayıklama desteği

Bu ek yenidir; kayan nokta kodunun hata ayıklamasını desteklemek için istenen özellikler için hata ayıklayıcı geliştiricilerine rehberlik sağlar .

operasyon dizini

Bu, standartta açıklanan (gerekli veya isteğe bağlı) tüm işlemleri listeleyen yeni bir dizindir.

Tartışıldı ancak dahil edilmedi

CPU tasarımı ve geliştirmesindeki değişiklikler nedeniyle, 2008 IEEE kayan nokta standardı, yerini aldığı 1985 standardı kadar tarihi veya modası geçmiş olarak görülebilir. Standardizasyon sürecinde kapsanmayan birçok dış tartışma ve madde vardı, aşağıdaki maddeler kamuya açık hale gelen maddelerdir:

  • Ek "L", dil geliştiricilere standarttaki öğelerin bir dildeki özelliklere nasıl bağlanacağını önerir.
  • Ek "U", sayısal alt akış tanımlarının seçimine ilişkin rehberlik sağlamıştır.
754'te yetersiz akışın tanımı, sonucun küçük olması ve doğruluk kaybıyla karşılaşmasıydı.
'Küçük' koşulun belirlenmesi için iki tanıma izin verildi: sonsuz kesin sonucun sınırsız üs ile çalışma kesinliğine yuvarlanmasından önce veya sonra.
Doğruluk kaybının iki tanımına izin verildi: kesin olmayan sonuç veya yalnızca denormalizasyondan kaynaklanan kayıp. Bilinen hiçbir donanım sistemi ikincisini uygulamamıştır ve bir seçenek olarak revize edilmiş standarttan çıkarılmıştır.
754r'nin Ek U'su, yalnızca yuvarlamadan sonra küçüklüğün ve doğruluk kaybı olarak tam olmamasının, yetersiz akış sinyalinin bir nedeni olmasını tavsiye etti.
  • Ek "Z", diğer sabit genişlikli kayan nokta biçimlerinin yanı sıra isteğe bağlı kesinlik biçimlerini (yani gösterim ve yuvarlama hassasiyetinin yürütme zamanında belirlendiği) desteklemek için isteğe bağlı veri türlerini tanıttı - bu malzemenin bir kısmı 5. bölüm genelleştirilerek taslak gövde taslağının kesinliği keyfi bırakıldı.
  • Modların (istisna işleme, ön ikame, yuvarlama) ve bayrakların (kesin olmayan, yetersiz, taşma, sıfıra bölme, geçersiz) kalıtımı ve yayılması. Arzu, arayan kişiye bayrakların yayılmasını sağlamaktır; ve mod değişiklikleri bir aranan tarafından devralınabilir, ancak arayanı etkilemez.
  • Aralık ve diğer aritmetikler tartışıldı, ancak kapsam dışında (ve kendi başlarına büyük bir çalışma) olarak dahil edilmedi. Aralık aritmetiği için önerilen bir IEEE standardı üzerinde çalışmalar 2008'de başlıyor.

Referanslar

Dış bağlantılar