128-Bit-Computing

In der Computerarchitektur sind 128-Bit-Ganzzahlen, Speicheradressen oder andere Dateneinheiten 128 Bit (16 Oktette) breit. Außerdem sind 128-Bit-CPU- und ALU-Architekturen solche, die auf Registern, Adressbussen oder Datenbussen dieser Größe beruhen.

Während es derzeit keine allgemeinen Mainstream-Prozessoren gibt, die mit 128-Bit-Ganzzahlen oder -Adressen arbeiten, gibt es eine Reihe von Prozessoren, die über spezielle Möglichkeiten verfügen, mit 128-Bit-Datenpaketen zu arbeiten. Das IBM System/370 könnte als der erste einfache 128-Bit-Computer angesehen werden, da es 128-Bit-Gleitkommaregister verwendete. Die meisten modernen CPUs verfügen über SIMD-Befehlssätze (Streaming SIMD Extensions, AltiVec usw.), bei denen 128-Bit-Vektorregister verwendet werden, um mehrere kleinere Zahlen zu speichern, beispielsweise vier 32-Bit-Gleitkommazahlen. Ein einziger Befehl kann dann auf all diesen Werten parallel arbeiten. Diese Prozessoren operieren jedoch nicht auf einzelnen Zahlen, die 128 Binärziffern lang sind; nur ihre Register haben die Größe von 128 Bit.

Die DEC VAX unterstützte Operationen auf 128-Bit-Ganzzahl- (‚O‘ oder Octaword) und 128-Bit-Gleitkomma- (‚H-float‘ oder HFLOAT) Datentypen. Die Unterstützung für solche Operationen war eher eine Upgrade-Option als eine Standardfunktion. Da die VAX-Register 32 Bit breit waren, wurden für eine 128-Bit-Operation vier aufeinanderfolgende Register oder vier Langwörter im Speicher verwendet.

Die ICL 2900-Serie verfügte über einen 128-Bit-Akkumulator, und ihr Befehlssatz umfasste 128-Bit-Gleitkomma- und gepackte Dezimalarithmetik.

In der gleichen Weise, wie Compiler z. B. 64-Bit-Integer-Arithmetik auf Architekturen mit Registergrößen von weniger als 64 Bit emulieren, unterstützen einige Compiler auch 128-Bit-Integer-Arithmetik. Der GCC C-Compiler 4.6 und spätere Versionen haben zum Beispiel einen 128-Bit-Integer-Typ __int128 für einige Architekturen. GCC und kompatible Compiler signalisieren das Vorhandensein von 128-Bit-Arithmetik, wenn das Makro __SIZEOF_INT128__ definiert ist. In der Programmiersprache C ist die 128-Bit-Unterstützung optional, z. B. über den Typ int128_t, oder sie kann durch eine compilerspezifische Erweiterung implementiert werden. Die Programmiersprache Rust hat eine eingebaute Unterstützung für 128-Bit-Ganzzahlen, die auf allen Plattformen implementiert ist. Ein 128-Bit-Typ, der von einem C-Compiler bereitgestellt wird, kann in Perl über das Math::Int128-Modul verfügbar sein.

Ein 128-Bit-Register kann 2128 (über 3,40 × 1038) verschiedene Werte speichern. Der Bereich der Ganzzahlwerte, die in 128 Bit gespeichert werden können, hängt von der verwendeten Ganzzahldarstellung ab. Bei den beiden gebräuchlichsten Darstellungen reicht der Bereich von 0 bis 340.282.366.920.938.463.463.374.607.431.768.211.455 (2128 – 1) bei Darstellung als (vorzeichenlose) Binärzahl, und -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2127) bis 170,141,183,460,469,231,731,687,303,715,884,105,727 (2127 – 1) für die Darstellung als Zweierkomplement.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.