128-Bit-Computing - 128-bit computing

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

Während es derzeit keine Mainstream-Allzweckprozessoren gibt, die für den Betrieb mit 128-Bit- Ganzzahlen oder -Adressen gebaut sind, haben eine Reihe von Prozessoren spezielle Möglichkeiten, mit 128-Bit-Datenblöcken zu arbeiten.

Darstellung

128-Bit-Prozessoren können zur direkten Adressierung von bis zu 2 128 (über3,40 × 10 38 ) Byte, was die Gesamtzahl der auf der Erde erfassten, erstellten oder replizierten Daten von 2018, die auf etwa 33 Zettabyte (über 2 74  Byte) geschätzt wurde, weit übersteigen würde  .

Ein 128-Bit-Register kann 2 128 (über 3,40 × 10 38 ) verschiedene Werte speichern . Der Bereich der Integer- Werte, der in 128 Bit gespeichert werden kann, hängt von der verwendeten Integer-Darstellung ab . Mit den beiden häufigsten Darstellungen ist der Bereich von 0 bis 340,282,366,920,938,463,463,374,607,431,768,211,455 (2 128 - 1) für die Darstellung als ( unsigned ) Binärzahl und -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2 127 ) durch 170,141,183,460,469,231,731,687,303,715,884,105,727 (2 127 - 1) für die Darstellung als Zweierkomplement .

Gleitkommazahlen mit vierfacher Genauigkeit (128-Bit) können 113-Bit- Festkommazahlen oder ganze Zahlen genau speichern, ohne die Genauigkeit zu verlieren (also insbesondere 64-Bit-Ganzzahlen). Floats mit vierfacher Präzision können auch jede Position im beobachtbaren Universum mit einer Genauigkeit von mindestens Mikrometern darstellen.

Dezimal128 Gleitkommazahlen können Zahlen mit bis zu 34 signifikanten Stellen darstellen.

Geschichte

Ein 128-Bit- Multikomparator wurde 1976 von Forschern beschrieben.

Das IBM System/370 könnte als der erste einfache 128-Bit-Computer angesehen werden, da er 128-Bit- Gleitkommaregister verwendet . Die meisten modernen CPUs verfügen über SIMD-Befehlssätze ( Single Instruction, Multiple Data ) ( Streaming SIMD Extensions , AltiVec usw.), in denen 128-Bit-Vektorregister verwendet werden, um mehrere kleinere Zahlen zu speichern, z. B. vier 32-Bit-Gleitkommazahlen. Ein einzelner Befehl kann dann alle diese Werte parallel verarbeiten. Diese Prozessoren arbeiten jedoch nicht mit einzelnen Zahlen, die 128 Binärziffern lang sind; nur ihre Register haben die Größe von 128 Bit.

Der DEC VAX unterstützte Operationen mit 128-Bit-Integer- ('O' oder Octaword) und 128-Bit-Gleitkomma-('H-float' oder HFLOAT)-Datentypen. Die Unterstützung solcher Operationen war eher eine Upgrade-Option als eine Standardfunktion. Da die Register des VAX 32 Bit breit waren, verwendete eine 128-Bit-Operation vier aufeinanderfolgende Register oder vier Langwörter im Speicher.

Die ICL 2900-Serie bot einen 128-Bit-Akkumulator und ihr Befehlssatz umfasste 128-Bit-Gleitkomma- und gepackte Dezimalarithmetik.

Eine CPU mit 128-Bit-Multimedia-Erweiterungen wurde 1999 von Forschern entwickelt.

Die Dreamcast und die PlayStation 2 unter den Videospielkonsolen der sechsten Generation verwendeten in ihrem Marketing den Begriff "128-Bit", um ihre Fähigkeiten zu beschreiben. Die CPU der Playstation 2 verfügte über 128-Bit- SIMD- Fähigkeiten. Keine der Konsolen unterstützte 128-Bit-Adressierung oder 128-Bit-Integer-Arithmetik.

Hardware

Die RISC-V ISA-Spezifikation von 2016 sieht eine Reservierung für eine 128-Bit-Version der Architektur vor, Details bleiben aber bewusst undefiniert, da es noch so wenig praktische Erfahrungen mit so großen Speichersystemen gibt.

Grafikprozessor- (GPU)-Chips bewegen Daten üblicherweise über einen 128-Bit-Bus.

Software

So wie Compiler zB 64-Bit-Integer-Arithmetik auf Architekturen mit Registergrößen von weniger als 64 Bit emulieren, unterstützen einige Compiler auch 128-Bit-Integer-Arithmetik. Beispielsweise hat der GCC C-Compiler 4.6 und höher __int128für einige Architekturen einen 128-Bit-Integer-Typ . GCC und kompatible Compiler signalisieren das Vorhandensein von 128-Bit-Arithmetik, wenn das Makro __SIZEOF_INT128__definiert wird. Für die Programmiersprache C ist die 128-Bit-Unterstützung optional, zB über den int128_tTyp, oder kann durch eine Compiler-spezifische Erweiterung realisiert werden. Die Programmiersprache Rust hat eine integrierte Unterstützung für 128-Bit-Ganzzahlen (ursprünglich über LLVM ), die auf allen Plattformen implementiert ist. Ein von einem C-Compiler bereitgestellter 128-Bit-Typ kann in Perl über das Math::Int128Modul zur Verfügung gestellt werden.

Verwendet

  • Die zur Implementierung der RISC-V- Architektur verwendete kostenlose Software ist für 32, 64 und 128 Bit ganzzahliger Datenbreite definiert.
  • Universally Unique Identifier (UUID) bestehen aus einem 128-Bit-Wert.
  • IPv6 leitet Computernetzwerkverkehr über einen 128-Bit-Adressbereich weiter.
  • ZFS ist ein 128-Bit-Dateisystem.
  • 128 Bit sind eine übliche Schlüsselgröße für symmetrische Chiffren und eine übliche Blockgröße für Blockchiffren in der Kryptographie .
  • Der virtuelle Befehlssatz von IBM i definiert alle Zeiger als 128-Bit. Dies wird bei Bedarf in den realen Befehlssatz der Hardware übersetzt, sodass sich die zugrunde liegende Hardware ändern kann, ohne die Software neu kompilieren zu müssen. Frühere Hardware war 48-Bit- CISC , während aktuelle Hardware 64-Bit- PowerPC ist . Da Zeiger als 128-Bit definiert sind, kann zukünftige Hardware 128-Bit ohne Software-Inkompatibilität sein.
  • Die Erhöhung der Wortgröße kann mathematische Bibliotheken mit mehrfacher Präzision mit Anwendungen für die Kryptographie beschleunigen und möglicherweise Algorithmen beschleunigen, die bei der komplexen mathematischen Verarbeitung ( numerische Analyse , Signalverarbeitung , komplexe Fotobearbeitung und Audio- und Videoverarbeitung ) verwendet werden.
  • MD5 ist eine Hash-Funktion, die einen 128-Bit-Hash-Wert erzeugt.
  • Apache Avro verwendet eine 128-Bit-Zufallszahl als Synchronisationsmarker zum effizienten Aufteilen von Datendateien.

Verweise