128-bits computing

In computerarchitectuur zijn 128-bits gehele getallen, geheugenadressen of andere data-eenheden 128 bits (16 octetten) breed. Ook zijn 128-bit CPU- en ALU-architecturen gebaseerd op registers, adresbussen of databussen van die grootte.

Hoewel er momenteel geen mainstream general-purpose processors zijn die zijn gebouwd om te werken met 128-bit gehele getallen of adressen, heeft een aantal processors wel gespecialiseerde manieren om te werken met 128-bit brokken gegevens. Het IBM System/370 kan worden beschouwd als de eerste eenvoudige 128-bit computer, omdat het gebruik maakte van 128-bit floating-point registers. De meeste moderne CPU’s beschikken over single-instruction multiple-data (SIMD) instructiesets (Streaming SIMD Extensions, AltiVec enz.) waarin 128-bit vectorregisters worden gebruikt om verschillende kleinere getallen op te slaan, zoals vier 32-bit floating-point getallen. Een enkele instructie kan dan al deze waarden parallel bewerken. Deze processoren werken echter niet op afzonderlijke getallen die 128 binaire cijfers lang zijn; alleen hun registers hebben de grootte van 128 bits.

De DEC VAX ondersteunde bewerkingen op 128-bits integer (‘O’ of octaword) en 128-bits floating-point (‘H-float’ of HFLOAT) datatypen. Ondersteuning voor dergelijke bewerkingen was een upgrade-optie in plaats van een standaardvoorziening. Aangezien de registers van de VAX 32 bits breed waren, gebruikte een 128-bits bewerking vier opeenvolgende registers of vier longwords in het geheugen.

De ICL 2900 Series had een 128-bits accumulator, en de instructieset bevatte 128-bits floating-point en packed decimal aritmetic.

Op dezelfde manier als compilers bijvoorbeeld 64-bits integer aritmetic emuleren op architecturen met registergroottes kleiner dan 64 bits, ondersteunen sommige compilers ook 128-bits integer aritmetic. Bijvoorbeeld, de GCC C compiler 4.6 en later heeft een 128-bit integer type __int128 voor sommige architecturen. GCC en compatibele compilers signaleren de aanwezigheid van 128-bit rekenkunde wanneer de macro __SIZEOF_INT128__ is gedefinieerd. Voor de programmeertaal C is 128-bit ondersteuning optioneel, bv. via het type int128_t, of het kan worden geïmplementeerd door een compilerspecifieke uitbreiding. De programmeertaal Rust heeft ingebouwde ondersteuning voor 128-bit gehele getallen, die op alle platforms wordt geïmplementeerd. Een 128-bits type dat door een C-compiler wordt geleverd, kan in Perl beschikbaar zijn via de Math::Int128 module.

Een 128-bits register kan 2128 (meer dan 3,40 × 1038) verschillende waarden opslaan. Het bereik van de gehele getalswaarden die in 128 bits kunnen worden opgeslagen, hangt af van de gebruikte representatie van het gehele getal. Met de twee meest voorkomende representaties is het bereik 0 t/m 340.282.366.920.938.463.374.607.431.768.211.455 (2128 – 1) voor representatie als een (niet-ondertekend) binair getal, en -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2127) tot en met 170,141,183,460,469,231,731,687,303,715,884,105,727 (2127 – 1) voor weergave als two’s complement.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *