128 bites számítástechnika

A számítógép-architektúrában a 128 bites egész számok, memóriacímek vagy más adategységek 128 bit (16 oktett) szélesek. Szintén 128 bites CPU- és ALU-architektúrák azok, amelyek ilyen méretű regisztereken, címbuszokon vagy adatbuszokon alapulnak.

Míg jelenleg nincsenek olyan általános célú processzorok, amelyek 128 bites egész számokkal vagy címekkel dolgoznának, számos processzor rendelkezik speciális módszerekkel a 128 bites adatdarabok kezelésére. Az IBM System/370 tekinthető az első egyszerű 128 bites számítógépnek, mivel 128 bites lebegőpontos regisztereket használt. A legtöbb modern CPU egyutasításos, többadatú (SIMD) utasításkészletekkel rendelkezik (Streaming SIMD Extensions, AltiVec stb.), ahol a 128 bites vektorregisztereket több kisebb szám, például négy 32 bites lebegőpontos szám tárolására használják. Egyetlen utasítás ezután mindezekkel az értékekkel párhuzamosan operálhat. Ezek a processzorok azonban nem operálnak 128 bináris számjegy hosszúságú egyedi számokkal; csak a regisztereik mérete 128 bit.

A DEC VAX támogatta a 128 bites egész szám (“O” vagy octaword) és 128 bites lebegőpontos (“H-float” vagy HFLOAT) adattípusokon végzett műveleteket. Az ilyen műveletek támogatása inkább egy frissítési lehetőség volt, mintsem alapfunkció. Mivel a VAX regiszterei 32 bit szélesek voltak, egy 128 bites művelet négy egymást követő regisztert vagy négy hosszúszót használt a memóriában.

Az ICL 2900 sorozat 128 bites akkumulátorral rendelkezett, és az utasításkészlete tartalmazott 128 bites lebegőpontos és csomagolt tizedes aritmetikát.

Ahogyan a fordítók emulálják például a 64 bites egészértékű aritmetikát a 64 bitnél kisebb regisztermérettel rendelkező architektúrákon, néhány fordító is támogatja a 128 bites egészértékű aritmetikát. Például a GCC C fordító 4.6 és újabb verziói 128 bites egész számtípussal __int128 rendelkeznek egyes architektúrákhoz. A GCC és a kompatibilis fordítók a __SIZEOF_INT128__ makró definiálásakor jelzik a 128 bites aritmetika jelenlétét. A C programozási nyelv esetében a 128 bites támogatás opcionális, például a int128_t típuson keresztül, vagy egy fordítóspecifikus kiterjesztéssel megvalósítható. A Rust programozási nyelv beépített támogatással rendelkezik a 128 bites egész számok számára, amely minden platformon implementálva van. A C fordító által biztosított 128 bites típus Perlben a Math::Int128 modulon keresztül érhető el.

A 128 bites regiszter 2128 (több mint 3,40 × 1038) különböző értéket tárolhat. A 128 bitben tárolható egész számértékek tartománya az alkalmazott egész szám reprezentációtól függ. A két leggyakoribb ábrázolás esetén a tartomány 0-tól 340,282,366,920,938,463,463,374,607,431,768,211,455-ig (2128 – 1) terjed (előjel nélküli) bináris számként való ábrázolás esetén, és -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2127) – 170,141,183,460,469,231,731,687,303,715,884,105,727 (2127 – 1) a kettes komplementként való ábrázoláshoz.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük