Calcul pe 128 de biți

În arhitectura calculatoarelor, numerele întregi pe 128 de biți, adresele de memorie sau alte unități de date sunt cele care au o lățime de 128 de biți (16 octeți). De asemenea, arhitecturile CPU și ALU pe 128 de biți sunt cele care se bazează pe registre, magistrale de adrese sau magistrale de date de această dimensiune.

În timp ce în prezent nu există procesoare mainstream de uz general construite pentru a opera cu numere întregi sau adrese pe 128 de biți, o serie de procesoare au modalități specializate de a opera cu bucăți de date pe 128 de biți. IBM System/370 ar putea fi considerat primul calculator simplu pe 128 de biți, deoarece folosea registre în virgulă mobilă pe 128 de biți. Majoritatea procesoarelor moderne dispun de seturi de instrucțiuni SIMD (Single-instruction multiple-data) (Streaming SIMD Extensions, AltiVec etc.) în care registrele vectoriale pe 128 de biți sunt utilizate pentru a stoca mai multe numere mai mici, cum ar fi patru numere în virgulă mobilă pe 32 de biți. O singură instrucțiune poate apoi să opereze în paralel cu toate aceste valori. Cu toate acestea, aceste procesoare nu operează asupra numerelor individuale care au o lungime de 128 de cifre binare; doar registrele lor au dimensiunea de 128 de biți.

DEC VAX a suportat operații pe tipuri de date de 128 de biți întregi („O” sau octaword) și de 128 de biți în virgulă mobilă („H-float” sau HFLOAT). Suportul pentru astfel de operații a fost o opțiune de actualizare, mai degrabă decât să fie o caracteristică standard. Deoarece registrele VAX-ului aveau o lățime de 32 de biți, o operațiune pe 128 de biți folosea patru registre consecutive sau patru cuvinte lungi în memorie.

Seria ICL 2900 oferea un acumulator pe 128 de biți, iar setul său de instrucțiuni includea aritmetică în virgulă mobilă și aritmetică zecimală împachetată pe 128 de biți.

În același mod în care compilatoarele emulează, de exemplu, aritmetica numerelor întregi pe 64 de biți pe arhitecturi cu dimensiuni ale registrelor mai mici de 64 de biți, unele compilatoare acceptă și aritmetica numerelor întregi pe 128 de biți. De exemplu, compilatorul GCC C 4.6 și versiunile ulterioare are un tip de numere întregi pe 128 de biți __int128 pentru unele arhitecturi. Compilatoarele GCC și cele compatibile semnalează prezența aritmeticii pe 128 de biți atunci când este definită macroul __SIZEOF_INT128__. Pentru limbajul de programare C, suportul pentru 128 de biți este opțional, de exemplu, prin intermediul tipului int128_t, sau poate fi implementat printr-o extensie specifică compilatorului. Limbajul de programare Rust are un suport integrat pentru numere întregi pe 128 de biți, care este implementat pe toate platformele. Un tip pe 128 de biți furnizat de un compilator C poate fi disponibil în Perl prin intermediul modulului Math::Int128.

Un registru pe 128 de biți poate stoca 2128 (peste 3,40 × 1038) de valori diferite. Gama de valori întregi care pot fi stocate în 128 de biți depinde de reprezentarea numerelor întregi utilizată. Cu cele două reprezentări cele mai comune, intervalul este de la 0 la 340.282.366.920.938.463.463.374.607.431.768.211.455 (2128 – 1) pentru reprezentarea ca număr binar (fără semn), și -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2127) până la 170,141,183,460,469,231,731,687,303,715,884,105,727 (2127 – 1) pentru reprezentarea ca complement la doi.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *