128bitové počítače

V počítačové architektuře jsou 128bitová celá čísla, adresy paměti nebo jiné datové jednotky široké 128 bitů (16 oktetů). Také 128bitové architektury procesorů a ALU jsou takové, které jsou založeny na registrech, adresových sběrnicích nebo datových sběrnicích této velikosti.

Ačkoli v současné době neexistují žádné běžné univerzální procesory postavené tak, aby pracovaly se 128bitovými celými čísly nebo adresami, řada procesorů má specializované způsoby práce se 128bitovými kusy dat. Za první jednoduchý 128bitový počítač lze považovat IBM System/370, který používal 128bitové registry s plovoucí desetinnou čárkou. Většina moderních procesorů obsahuje instrukční sady SIMD (Single-Instruction Multiple-Data) (Streaming SIMD Extensions, AltiVec atd.), kde se 128bitové vektorové registry používají k uložení několika menších čísel, například čtyř 32bitových čísel s plovoucí desetinnou čárkou. Jediná instrukce pak může pracovat se všemi těmito hodnotami paralelně. Tyto procesory však nepracují s jednotlivými čísly o délce 128 binárních číslic, pouze jejich registry mají velikost 128 bitů.

Procesor DEC VAX podporoval operace se 128bitovými celočíselnými („O“ neboli octaword) a 128bitovými datovými typy s pohyblivou řádovou čárkou („H-float“ neboli HFLOAT). Podpora těchto operací byla spíše možností upgradu než standardní funkcí. Protože registry počítače VAX byly široké 32 bitů, 128bitová operace využívala čtyři po sobě jdoucí registry nebo čtyři dlouhá slova v paměti.

Řada ICL 2900 poskytovala 128bitový akumulátor a její instrukční sada obsahovala 128bitovou aritmetiku s pohyblivou řádovou čárkou a zabalenou desítkovou aritmetiku.

Stejně jako překladače emulují např. 64bitovou celočíselnou aritmetiku na architekturách s velikostí registru menší než 64 bitů, podporují některé překladače také 128bitovou celočíselnou aritmetiku. Například kompilátor GCC C 4.6 a novější má pro některé architektury 128bitový celočíselný typ __int128. Překladače GCC a kompatibilní překladače signalizují přítomnost 128bitové aritmetiky, když je definováno makro __SIZEOF_INT128__. U programovacího jazyka C je podpora 128 bitů volitelná, např. prostřednictvím typu int128_t, nebo ji lze implementovat pomocí rozšíření specifického pro kompilátor. Programovací jazyk Rust má vestavěnou podporu 128bitových celých čísel, která je implementována na všech platformách. Typ 128 bitů poskytovaný překladačem jazyka C může být v jazyce Perl dostupný prostřednictvím modulu Math::Int128.

V 128bitovém registru lze uložit 2128 (přes 3,40 × 1038) různých hodnot. Rozsah celočíselných hodnot, které lze uložit do 128 bitů, závisí na použité reprezentaci celého čísla. U dvou nejběžnějších reprezentací je rozsah 0 až 340 282 366 920 938 463 463 374 607 431 768 211 455 (2128 – 1) pro reprezentaci jako (nepodepsané) binární číslo, a -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2127) až 170,141,183,460,469,231,731,687,303,715,884,105,727 (2127 – 1) pro zobrazení jako dvojkový doplněk.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *