128bitové výpočty - 128-bit computing

počítačové architektury , 128-bitová celá čísla , adresy paměti nebo jiných datových jednotek jsou ty, které jsou 128 bitů (16 oktety ) široký. 128bitové architektury CPU a ALU jsou také ty, které jsou založeny na registrech , adresových sběrnicích nebo datových sběrnicích této velikosti.

I když v současné době neexistují žádné běžné univerzální procesory postavené pro provoz na 128bitových celých číslech nebo adresách, řada procesorů má specializované způsoby, jak pracovat na 128bitových blocích dat.

Reprezentace

128bitové procesory lze použít k přímému adresování až 2 128 (více než3,40 × 10 38 ) bajtů, což by výrazně překročilo celkový počet dat zachycených, vytvořených nebo replikovaných na Zemi od roku 2018, který byl odhadován na přibližně 33  zettabytů (přes 2 74  bajtů).

128bitový registr může uložit 2 128 (přes 3,40 × 10 38 ) různých hodnot. Rozsah celočíselných hodnot, které lze uložit do 128 bitů, závisí na použité celočíselné reprezentaci . Se dvěma nejběžnějších reprezentací, rozsah je 0 až 340.282.366.920.938.463.463.374.607.431.768.211.455 (2 128 - 1) reprezentace jako ( bez znaménka ) binárního čísla , a -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2 127 ) přes 170,141,183,460,469,231,731,687,303,715,884,105,727 (2 127 - 1) reprezentace jako dvojkový doplněk .

Čtyřnásobná přesnost (128bitová) čísla s plovoucí desetinnou čárkou mohou přesně ukládat 113bitová čísla s pevným bodem nebo celá čísla bez ztráty přesnosti (konkrétně tedy 64bitová celá čísla). Čtyřnásobné přesné plováky mohou také představovat jakoukoli pozici v pozorovatelném vesmíru s přesností na mikrometry.

Desetinná čísla s plovoucí desetinnou čárkou mohou představovat čísla s až 34 platnými číslicemi.

Dějiny

128bitový multikomparátor popsali vědci v roce 1976.

IBM System / 370 by mohl být považován za první jednoduchý 128-bit počítač, protože používá 128-bit s plovoucí desetinnou čárkou registrů. Většina moderních procesorů obsahuje sady instrukcí s jednou instrukcí, více dat (SIMD) ( Streaming SIMD Extensions , AltiVec atd.), Kde jsou k ukládání několika menších čísel použity 128bitové vektorové registry, například čtyři 32bitová čísla s plovoucí desetinnou čárkou. Jedna instrukce pak může fungovat na všech těchto hodnotách paralelně. Tyto procesory však nepracují na jednotlivých číslech, která mají délku 128 binárních číslic; pouze jejich registry mají velikost 128 bitů.

Operace DEC VAX podporovaly operace s 128bitovými celočíselnými („O“ nebo oktaword) a 128bitovými datovými typy s plovoucí desetinnou čárkou („H-float“ nebo HFLOAT). Podpora těchto operací byla spíše možností upgradu než standardní funkce. Protože registry VAX byly 32 bitů široké, 128bitová operace používala v paměti čtyři po sobě jdoucí registry nebo čtyři dlouhá slova.

Řada ICL 2900 poskytovala 128bitový akumulátor a jeho instrukční sada obsahovala 128bitovou plovoucí desetinnou čárku a zabalenou desítkovou aritmetiku.

Výzkumníci v roce 1999 navrhli procesor se 128bitovými multimediálními rozšířeními.

Dreamcast a PlayStation 2 mezi šestou generaci herních konzolí používal termín „128bitové“ v jejich uvádění na trh popsat své schopnosti. CPU Playstation 2 mělo 128bitové možnosti SIMD . Žádná konzola nepodporovala 128bitové adresování ani 128bitovou celočíselnou aritmetiku.

Hardware

Specifikace RISC-V ISA z roku 2016 obsahuje rezervaci na 128bitovou verzi architektury, ale detaily zůstávají záměrně nedefinovány, protože s tak velkými paměťovými systémy je zatím tak málo praktických zkušeností.

Čipy grafických jednotek (GPU) běžně přenášejí data přes 128bitovou sběrnici.

Software

Stejným způsobem, jakým kompilátory emulují např. 64bitovou celočíselnou aritmetiku na architekturách s velikostmi registrů méně než 64 bitů, podporují některé kompilátory také 128bitovou celočíselnou aritmetiku. Například kompilátor GCC C 4.6 a novější má __int128pro některé architektury 128bitový celočíselný typ . Když je makro __SIZEOF_INT128__definováno, GCC a kompatibilní kompilátory signalizují přítomnost 128bitové aritmetiky . Pro programovací jazyk C je 128bitová podpora volitelná, např. Prostřednictvím int128_ttypu, nebo může být implementována rozšířením specifickým pro překladač. Rust programovací jazyk má vestavěnou podporu pro 128-bitová celá čísla (původně přes LLVM ), které je realizováno na všech platformách. 128bitový typ poskytovaný kompilátorem C může být k dispozici v Perlu prostřednictvím Math::Int128modulu.

Využití

Reference