Yarı hassas kayan nokta biçimi - Half-precision floating-point format

Bilgi işlemde , yarı kesinlik (bazen FP16 olarak adlandırılır ), bilgisayar belleğinde 16 bit (modern bilgisayarlarda iki bayt) kaplayan bir ikili kayan noktalı bilgisayar sayı biçimidir .

1'in üzerindeki minimum değer 1 + 1/1024 olmak üzere ±65,504 aralığında değerleri ifade edebilirler.

Olarak , IEEE 754-2008 standart 16-bit ana-2 biçimi olarak adlandırılır binary16 . Aritmetik hesaplamaları gerçekleştirmek için daha yüksek hassasiyetin gerekli olmadığı uygulamalarda kayan noktalı değerlerin depolanması için tasarlanmıştır.

IEEE yarı hassas kayan nokta uygulamaları nispeten yeni olmasına rağmen, Hitachi'nin 1982 HD61810 DSP'si, Scott'ın WIF'si ve 3dfx Voodoo Graphics işlemcisi dahil olmak üzere daha önceki birkaç 16 bit kayan nokta formatı mevcuttu .

Nvidia ve Microsoft tanımlanan yarım veri türü içinde Cs dilinde erken 2002 yılında piyasaya, ve de silikon bunu uygulamaya GeForce FX sonlarında 2002 yılında piyasaya, ILM geniş ele verebilir bir resim biçiminde arıyordu dinamik aralığı , ama olmadan kayan nokta hesaplaması için yaygın olarak kullanılan kayan nokta gösterimlerinin sabit sürücü ve bellek maliyeti (tek ve çift kesinlik). SGI'da (Silicon Graphics) John Airey tarafından yönetilen donanım hızlandırmalı programlanabilir gölgeleme grubu , 'bali' tasarım çabasının bir parçası olarak 1997'de s10e5 veri türünü icat etti. Bu, bir SIGGRAPH 2000 belgesinde açıklanmıştır (bkz. bölüm 4.3) ve ayrıca 7518615 sayılı ABD patentinde belgelenmiştir.

Bu biçim, MATLAB , OpenEXR , JPEG XR , GIMP , OpenGL , Cg , Direct3D ve D3DX dahil olmak üzere çeşitli bilgisayar grafik ortamlarında kullanılır . 8-bit veya 16-bit ikili tam sayılara göre avantajı, artırılmış dinamik aralığın , görüntüler için vurgularda ve gölgelerde daha fazla ayrıntının korunmasına izin vermesidir . 32 bit tek duyarlıklı ikili biçimlere göre avantajı , depolama ve bant genişliğinin yarısını gerektirmesidir (hassasiyet ve aralık pahasına).

F16C uzantısı 86 işlemcileri ve yarım-hassas yüzen dönüştürmek sağlar tek duyarlıklı yüzer .

Bilgisayara bağlı olarak, yarım hassasiyet, çift hassasiyetten bir büyüklük sırasının üzerinde olabilir, örneğin bir bulut sağlayıcısında yarım hassasiyet için 550 PFLOPS ve çift hassasiyet için 37 PFLOPS.

IEEE 754 yarı hassas ikili kayan nokta biçimi: ikili16

IEEE 754 standardı , aşağıdaki biçime sahip bir ikili 16'yı belirtir :

Format aşağıdaki gibi düzenlenmiştir:

IEEE 754r Yarım Kayan Nokta Formatı.svg

Üs alanı tüm sıfırlarla saklanmadıkça, formatın 1 değerine sahip örtük bir ön bite sahip olduğu varsayılır. Bu nedenle, sadece 10 bit significand bellek biçiminde görünür ancak toplam hassas 11 bittir. IEEE 754 dilinde, 10 bit anlamlı vardır, ancak 11 bit anlamlı ve kesinlik vardır (log 10 (2 11 ) ≈ 3.311 ondalık basamak veya 4 basamak ± son sırada 5 birimden biraz az ).

Üs kodlaması

Yarı kesinlikli ikili kayan nokta üssü, sıfır ofseti 15 olacak şekilde bir ofset-ikili gösterimi kullanılarak kodlanır ; IEEE 754 standardında üs yanlılığı olarak da bilinir.

  • E min = 00001 2 − 01111 2 = −14
  • E maks = 11110 2 − 01111 2 = 15
  • Üs sapması = 01111 2 = 15

Bu nedenle, ofset ikili gösterimi tarafından tanımlandığı gibi, gerçek üssü elde etmek için 15'in ofsetinin depolanan üste çıkarılması gerekir.

Depolanan üsler 00000 2 ve 11111 2 özel olarak yorumlanır.

Üs anlamlı = sıfır önemli ≠ sıfır Denklem
00000 2 sıfır , -0 normal altı sayılar (−1) işaret biti × 2 −14 × 0.önemli bitler 2
00001 2 , ..., 11110 2 normalleştirilmiş değer (−1) işaret biti × 2 üs−15 × 1.önemli bitler 2
11111 2 ± sonsuzluk NaN (sessiz, sinyalizasyon)

Minimum kesinlikle pozitif (normalin altında) değer 2 −24 ≈ 5,96 × 10 −8'dir . Minimum pozitif normal değer 2 −14 ≈ 6,10 × 10 −5'tir . Maksimum temsil edilebilir değer (2−2 −10 ) × 2 15 = 65504'tür.

Yarı hassas örnekler

Bu örnekler, kayan nokta değerinin bit temsili olarak verilmiştir. Buna işaret biti, (önyargılı) üs ve önemli değer dahildir.

0 00000 00000000012 = 000116 =  ≈ 0.000000059604645
                              (smallest positive subnormal number)
0 00000 11111111112 = 03ff16 =  ≈ 0.000060975552
                              (largest subnormal number)
0 00001 00000000002 = 040016 =  ≈ 0.00006103515625
                              (smallest positive normal number)
0 11110 11111111112 = 7bff16 =  = 65504
                              (largest normal number)
0 01110 11111111112 = 3bff16 =  ≈ 0.99951172
                              (largest number less than one)
0 01111 00000000002 = 3c0016 =  = 1
                              (one)
0 01111 00000000012 = 3c0116 =  ≈ 1.00097656
                              (smallest number larger than one)
0 01101 01010101012 = 355516 =  = 0.33325195
                              (the rounding of 1/3 to nearest)
1 10000 00000000002 = c00016 = −2
0 00000 00000000002 = 000016 = 0
1 00000 00000000002 = 800016 = −0
0 11111 00000000002 = 7c0016 = infinity
1 11111 00000000002 = fc0016 = −infinity

Varsayılan olarak, anlamlıdaki tek sayıdaki bit nedeniyle, çift ​​duyarlık için olduğu gibi 1/3 aşağı yuvarlar . Yuvarlama noktasının ötesindeki bitler , son sırada0101... bir birimin 1/2'sinden daha az olan bitlerdir .

[0, 1]'deki ondalık değerlerde kesinlik sınırlamaları

  • 2 -24 (minimum pozitif normal altı) ve 2 -14 (maksimum normal altı) arasındaki ondalık sayılar: sabit aralık 2 -24
  • 2 -14 (minimum pozitif normal) ile 2 -13 arasındaki ondalık sayılar : sabit aralık 2 -24
  • 2 -13 ve 2 -12 arasındaki ondalık sayılar : sabit aralık 2 −23
  • 2 −12 ve 2 −11 arasındaki ondalık sayılar : sabit aralık 2 −22
  • 2 −11 ve 2 −10 arasındaki ondalık sayılar : sabit aralık 2 −21
  • 2 −10 ve 2 −9 arasındaki ondalık sayılar : sabit aralık 2 −20
  • 2 -9 ve 2 -8 arasındaki ondalık sayılar : sabit aralık 2 -19
  • 2 −8 ve 2 −7 arasındaki ondalık sayılar : sabit aralık 2 −18
  • 2 −7 ve 2 −6 arasındaki ondalık sayılar : sabit aralık 2 −17
  • 2 −6 ve 2 −5 arasındaki ondalık sayılar : sabit aralık 2 −16
  • 2 −5 ve 2 −4 arasındaki ondalık sayılar : sabit aralık 2 −15
  • 2 −4 ve 2 −3 arasındaki ondalık sayılar : sabit aralık 2 −14
  • 2 −3 ve 2 −2 arasındaki ondalık sayılar : sabit aralık 2 −13
  • 2 −2 ve 2 −1 arasındaki ondalık sayılar : sabit aralık 2 −12
  • 2 −1 ve 2 −0 arasındaki ondalık sayılar : sabit aralık 2 −11

[1, 2048]'deki ondalık değerlerde kesinlik sınırlamaları

  • 1 ile 2 arasındaki ondalık sayılar: 2 -10 sabit aralık (1+2 -10 , 1'den sonraki en büyük kayan noktadır)
  • 2 ile 4 arasındaki ondalık sayılar: sabit aralık 2 -9
  • 4 ile 8 arasındaki ondalık sayılar: sabit aralık 2 -8
  • 8 ile 16 arasındaki ondalık sayılar: sabit aralık 2 -7
  • 16 ile 32 arasındaki ondalık sayılar: sabit aralık 2 −6
  • 32 ile 64 arasındaki ondalık sayılar: sabit aralık 2 -5
  • 64 ile 128 arasındaki ondalık sayılar: sabit aralık 2 -4
  • 128 ve 256 arasındaki ondalık sayılar: sabit aralık 2 −3
  • 256 ile 512 arasındaki ondalık sayılar: sabit aralık 2 −2
  • 512 ile 1024 arasındaki ondalık sayılar: sabit aralık 2 -1
  • 1024 ile 2048 arasındaki ondalık sayılar: sabit aralık 2 0

Tamsayı değerlerinde kesinlik sınırlamaları

  • 0 ile 2048 arasındaki tamsayılar tam olarak temsil edilebilir (ve ayrıca -2048 ile 0 arasında)
  • 2048 ile 4096 arasındaki tam sayılar 2'nin katına yuvarlanır (çift sayı)
  • 4096 ile 8192 arasındaki tam sayılar 4'ün katına yuvarlanır
  • 8192 ile 16384 arasındaki tam sayılar 8'in katına yuvarlanır
  • 16384 ile 32768 arasındaki tam sayılar 16'nın katına yuvarlanır
  • 32768 ile 65519 arasındaki tam sayılar 32'nin katına yuvarlanır
  • 65519'un üzerindeki tamsayılar, çifte yuvarlama kullanılıyorsa "sonsuz"a, sıfıra yuvarlama kullanılıyorsa 65535'in üstüne veya sonsuza yuvarlanıyorsa 65504'ün (gösterilebilir en büyük sonlu değer) üzerindeki tam sayılar.

ARM alternatif yarı hassas

(Kayan nokta ile ARM işlemciler destek kontrol yazmacı biti), 31 (11111 bir üst değerinden uzakta özel bir durum ile yok "alternatif bir yarı-hassas" biçiminde, 2 ). IEEE biçimiyle neredeyse aynıdır, ancak sonsuzluk veya NaN'ler için kodlama yoktur; bunun yerine, 31'lik bir üs, 65536 ila 131008 aralığındaki normalleştirilmiş sayıları kodlar.

kullanır

Makine öğrenimi veya sinir ağları için donanım ve yazılımlar yarı kesinlik kullanma eğilimindedir: bu tür uygulamalar genellikle büyük miktarda hesaplama yapar, ancak yüksek düzeyde hassasiyet gerektirmez.

Bir seferde 8 veya 16 bite erişen eski bilgisayarlarda (çoğu modern bilgisayar bir seferde 32 veya 64 bite erişir), yarı duyarlıklı aritmetik, tek duyarlıktan daha hızlıdır ve çift kesinlikten önemli ölçüde daha hızlıdır. Tek bir komutla birden çok kayan noktalı sayıyı işleyebilen komutlara sahip sistemlerde, yarı kesinlik genellikle daha yüksek bir ortalama verim sunar.

Ayrıca bakınız

Referanslar

daha fazla okuma

Dış bağlantılar