IBM onaltılık kayan nokta - IBM hexadecimal floating-point

Onaltılık kayan nokta (şimdi IBM tarafından HFP olarak adlandırılır), ilk olarak IBM System/360 bilgisayarlarındatanıtılan kayan nokta sayılarını kodlamak için bir biçimdirve bu mimariye dayalı sonraki makinelerde ve uygulama olması amaçlanan makinelerde desteklenir. Sistem/360 ile uyumludur.

IEEE 754 kayan nokta ile karşılaştırıldığında , HFP formatı daha uzun bir anlamlılığa ve daha kısa bir üsse sahiptir . Tüm HFP formatları 64 önyargılı 7 bit üs içerir. Normalleştirilmiş temsil edilebilir sayılar aralığı 16 −65 ila 16 63 arasındadır (yaklaşık 5.39761 × 10 −79 ila 7.237005 × 10 75 ).

Sayı aşağıdaki formülle temsil edilir: (−1) işaret × 0. anlam ve × 16 üs−64 .

Tek duyarlıklı 32 bit

Bir tek hassasiyetli (IBM tarafından "kısa" olarak adlandırılır) HFP numarası 32-bit kelimenin depolanır:

1 7 24 (bit cinsinden genişlik)
S Tecrübe kesir  
31 30 ... 24 23 ... 0 (bit dizini) *
* IBM belgeleri, bitleri soldan sağa doğru numaralandırır, böylece en önemli bit, bit numarası 0 olarak belirlenir.

Bu biçimde, ilk bit bastırılmaz ve sayı tabanı (onaltılık) noktası, anlamlının (IBM belgelerinde ve şekillerdeki kesir) soluna ayarlanır.

Taban 16 olduğundan, bu formdaki üs, IEEE 754'teki eşdeğerden yaklaşık iki kat daha büyüktür, ikili sistemde benzer üs aralığına sahip olmak için 9 üs biti gerekir.

Örnek

−118.625 değerini HFP tek duyarlıklı kayan nokta değeri olarak kodlamayı düşünün.

Değer negatiftir, bu nedenle işaret biti 1'dir.

İkili sistemde 118.625 10 değeri 1110110.101 2'dir . Bu değer, taban noktası en soldaki basamak sıfır olana kadar dört bit (bir onaltılık basamak) sola kaydırılarak normalleştirilir ve 0.01110110101 2 elde edilir . Kalan en sağdaki basamaklar sıfırlarla doldurulur ve 24 bitlik bir .0111 0110 1010 0000 0000 0000 2 kesri verir .

Normalleştirilmiş değer, sayı tabanı noktasını iki onaltılık basamak sola taşıyarak, bir çarpan ve 16 +2 üssü verdi . (+2) üssüne +64'lük bir sapma eklenir ve 100 0010 2 olan +66 elde edilir .

İşareti, üs artı önyargıyı ve normalleştirilmiş kesri birleştirmek şu kodlamayı üretir:

S Tecrübe kesir  
1 100 0010 0111 0110 1010 0000 0000 0000  

Başka bir deyişle, temsil edilen sayı −0.76A000 16 × 16 66 − 64 = −0.4633789… × 16 +2 = −118.625

En büyük temsil edilebilir sayı

S Tecrübe kesir  
0 111 1111 1111 1111 1111 1111 1111 1111  

Temsil edilen sayı +0.FFFFFF 16 × 16 127 − 64 = (1 − 16 −6 ) × 16 63 ≈ +7.2370051 × 10 75

En küçük pozitif normalleştirilmiş sayı

S Tecrübe kesir  
0 000 0000 0001 0000 0000 0000 0000 0000  

Temsil edilen sayı +0.1 16 × 16 0 − 64 = 16 −1 × 16 −64 ≈ +5.397605 × 10 −79 .

Sıfır

S Tecrübe kesir  
0 000 0000 0000 0000 0000 0000 0000 0000  

Sıfır (0.0) 0,0 değeri, aritmetik olan hepsi sıfır bit olarak normalleştirilmiş şekilde temsil edilir 16 x 16 64-0 = + 0 x 16 -64 ≈ 0,000000 * 10 -79 = 0 all bir kısmını Verilen bit sıfır, herhangi bir pozitif veya negatif işaret biti ve sıfır olmayan taraflı bir üs kombinasyonu, aritmetik olarak sıfıra eşit bir değer verecektir. Ancak, CPU donanımı tarafından sıfır için oluşturulan normalleştirilmiş form, tüm bitler sıfırdır. Bu, üç kayan nokta hassas biçiminin tümü için geçerlidir. Diğer üs değerleriyle toplama veya çıkarma, sonuçta kesinliği kaybedebilir.

Hassasiyet sorunları

Taban 16 olduğundan, ikili anlamlıda en fazla üç sıfır bit olabilir. Bu, sayı ikiliye dönüştürüldüğünde, 21 bit kadar az kesinlik olabileceği anlamına gelir. "Yalpalama hassasiyeti" etkisi nedeniyle bu, bazı hesaplamaların çok hatalı olmasına neden olabilir. Bu ciddi eleştirilere neden oldu

Yanlışlığa iyi bir örnek, 0.1 ondalık değerinin temsilidir. Kesin bir ikili veya onaltılık gösterimi yoktur. Onaltılık biçimde, 0.19999999... 16 veya 0.0001 1001 1001 1001 1001 1001 1001... 2 olarak temsil edilir , yani:

S Tecrübe kesir  
0 100 0000 0001 1001 1001 1001 1001 1010  

Bu sadece 21 bit'e sahipken, ikili versiyon 24 bit hassasiyete sahiptir.

Altı onaltılık kesinlik basamağı kabaca altı ondalık basamağa eşittir (yani (6 − 1) log 10 (16) ≈ 6,02). Tek duyarlıklı onaltılık kayan noktanın ondalık dizgeye dönüştürülmesi, aynı onaltılık kayan nokta değerine geri dönüştürmek için en az 9 anlamlı basamak (yani 6 log 10 (16) + 1 ≈ 8.22) gerektirir.

Çift duyarlıklı 64 bit

Çift kesinlikli (IBM tarafından "uzun" olarak da adlandırılır) HFP biçimi kesir alan geniş olduğu ve çift duyarlı sayı çift sözcük (8 byte) depolanır dışında "kısa" biçimi aynıdır:

1 7 56 (bit cinsinden genişlik)
S Tecrübe kesir  
63 62 ... 56 55 ... 0 (bit dizini) *
* IBM belgeleri, bitleri soldan sağa doğru numaralandırır, böylece en önemli bit, bit numarası 0 olarak belirlenir.

Bu biçimin üssü, karşılık gelen IEEE ikili biçimi olarak aralığın yalnızca dörtte birini kapsar.

14 onaltılık basamak kesinlik kabaca 17 ondalık basamağa eşittir. Çift duyarlıklı onaltılık kayan noktanın ondalık dizgeye dönüştürülmesi, aynı onaltılık kayan nokta değerine geri dönüştürmek için en az 18 anlamlı basamak gerektirir.

Genişletilmiş hassasiyet 128 bit

IBM tarafından genişletilmiş hassasiyet olarak adlandırılan , System/370 serisine dörtlü hassasiyetli bir HFP formatı eklendi ve bazı S/360 modellerinde (S/360-85, -195 ve diğerlerinde özel istek üzerine veya işletim sistemi yazılımı tarafından simüle edildi) mevcuttu. ). Genişletilmiş kesinlik kesir alanı daha geniştir ve genişletilmiş kesinlik sayısı iki double word (16 bayt) olarak depolanır:

Yüksek dereceli parça
1 7 56 (bit cinsinden genişlik)
S Tecrübe Kesir (yüksek dereceli 14 basamak)  
127 126 ... 120 119 ... 64 (bit dizini) *
Düşük dereceli parça
8 56 (bit cinsinden genişlik)
kullanılmamış Kesir (düşük sıralı 14 basamak)  
63 ... 56 55 ... 0 (bit dizini) *
* IBM belgeleri, bitleri soldan sağa doğru numaralandırır, böylece en önemli bit, bit numarası 0 olarak belirlenir.

28 onaltılık basamak kesinlik kabaca 32 ondalık basamağa eşittir. Genişletilmiş hassas HFP'nin ondalık dizgeye dönüştürülmesi, aynı HFP değerine geri dönüştürmek için en az 35 anlamlı basamak gerektirir. Düşük dereceli kısımda saklanan üs, sıfırdan küçük olmadıkça, yüksek dereceli kısımdan 14 daha azdır.

Aritmetik işlemler

Kullanılabilir aritmetik işlemler, hem normalleştirilmiş hem de normalleştirilmemiş toplama ve çıkarma işlemleridir ve karşılaştırır. Üs farkına göre prenormalizasyon yapılır. Önceden normalleştirilmemiş değerleri çarpın ve bölün ve sonucu bir koruma basamağından sonra kısaltın. İkiye bölmeyi basitleştirmek için bir yarı işlemi vardır. ESA/390'dan başlayarak bir karekök işlemi vardır. Kesinlik kaybını önlemek için tüm işlemlerde bir onaltılık koruma basamağı bulunur. Çoğu aritmetik işlem, basit cep hesap makineleri gibi kısaltılır. Bu nedenle, 1 − 16 −8 = 1. Bu durumda, sonuç sıfırdan uzağa yuvarlanır.

IBM ana bilgisayarlarında IEEE 754

1998'de S/390 G5 ile başlayarak , IBM ana bilgisayarları, IEEE 754 Kayan Nokta Aritmetiği Standardına uyan IEEE ikili kayan nokta birimlerini de içeriyordu . Kayan nokta IEEE ondalık eklendi IBM z9 kullanarak 2007 yılında GA2 millicode ve 2008 yılında IBM System z10 donanım.

Modern IBM ana bilgisayarları, 3 onaltılık (HFP) biçim, 3 ikili (BFP) biçim ve 3 ondalık (DFP) biçime sahip üç kayan nokta kökünü destekler. Çekirdek başına iki kayan nokta birimi vardır; biri HFP ve BFP'yi destekler ve diğeri DFP'yi destekler; 3 formatı da tutan bir kayıt dosyası, FPR'ler var. 2015 yılında z13 ile başlayarak , işlemciler, her biri 128 bit genişliğinde 32 vektör kaydı içeren bir vektör tesisi ekledi; bir vektör kaydı, iki adet 64-bit veya dört adet 32-bit kayan noktalı sayı içerebilir. Geleneksel 16 kayan nokta kaydı, yeni vektör kayıtlarının üzerine bindirilir, böylece bazı veriler geleneksel kayan nokta talimatlarıyla veya daha yeni vektör talimatlarıyla manipüle edilebilir.

Özel kullanımlar

IBM HFP biçimi şu durumlarda kullanılır:

  • Yeni İlaç Uygulaması (NDA) çalışması gönderimleri için Gıda ve İlaç Dairesi (FDA) tarafından gerekli görülen SAS 5 Taşıma dosyaları (.XPT) ,
  • GRIB (gridded İkili) veri dosyaları (IEEE hava tahmin modellerinin çıkışını alışverişinde tek duyarlıklı kayan noktalı biçimi , geçerli sürümünde)
  • GDS II (Grafik Veritabanı Sistemi II) formatındaki dosyalar ( OASIS'in yerine geçer) ve
  • SEG Y (Society of Exploration Geophysicists Y) format dosyaları (2002'de formata IEEE tek kesinlikli kayan nokta eklendi).

IBM, HFP biçimini kullanan geriye kalan tek donanım sağlayıcısı olduğundan ve bu biçimi destekleyen tek IBM makineleri, ana bilgisayarları olduğundan, birkaç dosya biçimi bunu gerektirir. Bir istisna, FDA'nın gerektirdiği SAS 5 Transport dosya formatıdır; bu biçimde, "Dosyadaki tüm kayan noktalı sayılar IBM anabilgisayar gösterimi kullanılarak depolanır. [...] Çoğu platform kayan noktalı sayılar için IEEE temsilini kullanır. [...] Size okuma ve/veya veya taşıma dosyaları yazarken, IEEE temsilinden (büyük endian veya küçük endian) taşıma temsiline ve tekrar geri dönüştürmek için rutinler sağlıyoruz." IBM'in biçimine ilişkin kod, LGPLv2.1 altında da mevcuttur .

IBM kayan nokta biçimini kullanan sistemler

Ayrıca bakınız

Referanslar

daha fazla okuma