Vorlage:Short description Vorlage:Use dmy dates Vorlage:N-bit
While there are currently no mainstream general-purpose processors built to operate on 128-bit integers or addresses, a number of processors do have specialized ways to operate on 128-bit chunks of data.
Representation
Bearbeiten128-bit processors could be used for addressing directly up to 2128 (over Vorlage:Val) bytes, which would greatly exceed the total data captured, created, or replicated on Earth as of 2018, which has been estimated to be around 33 zettabytes (over 274 bytes).[1]
A 128-bit register can store 2128 (over 3.40 × 1038) different values. The range of integer values that can be stored in 128 bits depends on the integer representation used. With the two most common representations, the range is 0 through 340,Vorlage:Zwsp282,Vorlage:Zwsp366,Vorlage:Zwsp920,Vorlage:Zwsp938,Vorlage:Zwsp463,Vorlage:Zwsp463,Vorlage:Zwsp374,Vorlage:Zwsp607,Vorlage:Zwsp431,Vorlage:Zwsp768,Vorlage:Zwsp211,Vorlage:Zwsp455 (2128 − 1) for representation as an (unsigned) binary number, and −170,Vorlage:Zwsp141,Vorlage:Zwsp183,Vorlage:Zwsp460,Vorlage:Zwsp469,Vorlage:Zwsp231,Vorlage:Zwsp731,Vorlage:Zwsp687,Vorlage:Zwsp303,Vorlage:Zwsp715,Vorlage:Zwsp884,Vorlage:Zwsp105,Vorlage:Zwsp728 (−2127) through 170,Vorlage:Zwsp141,Vorlage:Zwsp183,Vorlage:Zwsp460,Vorlage:Zwsp469,Vorlage:Zwsp231,Vorlage:Zwsp731,Vorlage:Zwsp687,Vorlage:Zwsp303,Vorlage:Zwsp715,Vorlage:Zwsp884,Vorlage:Zwsp105,Vorlage:Zwsp727 (2127 − 1) for representation as two's complement.
Quadruple precision (128-bit) floating-point numbers can store 113-bit fixed-point numbers or integers accurately without losing precision (thus 64-bit integers in particular). Quadruple precision floats can also represent any position in the observable universe with at least micrometer precision.Vorlage:Citation needed
Decimal128 floating-point numbers can represent numbers with up to 34 significant digits.
History
BearbeitenA 128-bit multicomparator was described by researchers in 1976.[2]
The IBM System/360 Model 85,[3] and IBM System/370 and its successors, support 128-bit floating-point arithmetic.
The Siemens 7.700 and 7.500 series mainframes and their successors support 128-bit floating-point arithmetic.[4]
Most modern CPUs feature single instruction, multiple data (SIMD) instruction sets (Streaming SIMD Extensions, AltiVec etc.) where 128-bit vector registers are used to store several smaller numbers, such as four 32-bit floating-point numbers. A single instruction can then operate on all these values in parallel. However, these processors do not operate on individual numbers that are 128 binary digits in length; only their vector registers have the size of 128 bits.
The DEC VAX supported operations on 128-bit integer ('O' or octaword) and 128-bit floating-point ('H-float' or HFLOAT) datatypes. Support for such operations was an upgrade option rather than being a standard feature. Since the VAX's registers were 32 bits wide, a 128-bit operation used four consecutive registers or four longwords in memory.
The ICL 2900 Series provided a 128-bit accumulator, and its instruction set included 128-bit floating-point and packed decimal arithmetic.
A CPU with 128-bit multimedia extensions was designed by researchers in 1999.[5]
Among the sixth generation of video game consoles, the Dreamcast and the PlayStation 2 used the term "128-bit" in their marketing to describe their capability. The Playstation 2's CPU had 128-bit SIMD capabilities.[6][7] Neither console supported 128-bit addressing or 128-bit integer arithmetic.
Modern Graphics processing unit (GPU) chips may operate data across a 128-bit bus.[8]
Hardware
BearbeitenThe RISC-V ISA specification from 2016 includes a reservation for a 128-bit version of the architecture, but the details remain undefined intentionally, because there is yet so little practical experience with such large word size.[9]
Software
BearbeitenIn the same way that compilers emulate e.g. 64-bit integer arithmetic on architectures with register sizes less than 64 bits, some compilers also support 128-bit integer arithmetic. For example, the GCC C compiler 4.6 and later has a 128-bit integer type __int128
for some architectures.[10] GCC and compatible compilers signal the presence of 128-bit arithmetic when the macro __SIZEOF_INT128__
is defined.[11] For the C programming language, 128-bit support is optional, e.g. via the int128_t
type, or it can be implemented by a compiler-specific extension. The Rust programming language has built-in support for 128-bit integers (originally via LLVM), which is implemented on all platforms.[12] A 128-bit type provided by a C compiler can be available in Perl via the Math::Int128
module.[13]
Uses
Bearbeiten- The free software used to implement RISC-V architecture is defined for 32, 64 and 128 bits of integer data width.
- Universally unique identifiers (UUID) consist of a 128-bit value.
- IPv6 routes computer network traffic amongst a 128-bit range of addresses.
- ZFS is a 128-bit file system.
- 128 bits is a common key size for symmetric ciphers and a common block size for block ciphers in cryptography.
- The IBM i virtual instruction set defines all pointers as 128-bit. This gets translated to the hardware's real instruction set as required, allowing the underlying hardware to change without needing to recompile the software. Past hardware was 48-bit CISC, while current hardware is 64-bit PowerPC. Because pointers are defined to be 128-bit, future hardware may be 128-bit without software incompatibility.
- Increasing the word size can speed up multiple precision mathematical libraries, with applications to cryptography, and potentially speed up algorithms used in complex mathematical processing (numerical analysis, signal processing, complex photo editing and audio and video processing).
- MD5 is a hash function producing a 128-bit hash value.
- Apache Avro uses a 128-bit random number as synchronization marker for efficient splitting of data files.[14][15]
== References == {{Reflist}} {{CPU technologies}} [[Category:Data unit]]
==========================
BearbeitenVorlage:Kurzbeschreibung Vorlage:Dmy-Daten verwenden Vorlage:N-bit
Während es derzeit keine Mainstream-Allzweckprozessoren gibt, die für den Betrieb mit 128-Bit-Ganzzahlen oder -Adressen ausgelegt sind, verfügen einige Prozessoren über spezielle Methoden für den Betrieb mit 128-Bit-Datenblöcken.
Darstellung
Bearbeiten128-Bit-Prozessoren könnten für die direkte Adressierung von bis zu 2128 (über Vorlage:Val) Bytes verwendet werden, was die gesamten erfassten, erstellten oder replizierten Daten bei weitem übersteigen würde auf der Erde im Jahr 2018, was schätzungsweise etwa 33 zettabytes (über 274 Byte) entspricht.[16]
Ein 128-Bit-Register kann 2128 (über 3,40 × 1038) verschiedene Werte speichern. Der Bereich der Ganzzahl-Werte, die in 128 Bits gespeichert werden können, hängt von der verwendeten Ganzzahldarstellung ab. Bei den beiden häufigsten Darstellungen liegt der Bereich zwischen 0 und 340,Vorlage:Zwsp282,Vorlage:Zwsp366,Vorlage:Zwsp920,Vorlage:Zwsp938,Vorlage:Zwsp463,{ {Zwsp}}463,Vorlage:Zwsp374,Vorlage:Zwsp607,Vorlage:Zwsp431,Vorlage:Zwsp768,Vorlage:Zwsp211,Vorlage:Zwsp455 (2< 128 − 1) für die Darstellung als (unsigned) Binärzahl und −170,Vorlage:Zwsp141,Vorlage:Zwsp183,Vorlage:Zwsp460,Vorlage:Zwsp469,Vorlage:Zwsp231,Vorlage:Zwsp731,Vorlage:Zwsp687,Vorlage:Zwsp303,Vorlage:Zwsp715,Vorlage:Zwsp884,Vorlage:Zwsp105,Vorlage:Zwsp728 (−2127) bis 170,Vorlage:Zwsp141,Vorlage:Zwsp183,{{Zwsp} }460,Vorlage:Zwsp469,Vorlage:Zwsp231,Vorlage:Zwsp731,Vorlage:Zwsp687,Vorlage:Zwsp303,Vorlage:Zwsp715,Vorlage:Zwsp 884,Vorlage:Zwsp105,Vorlage:Zwsp727 (2127 − 1) für die Darstellung als Zweierkomplement.
Vierfache Genauigkeit (128-Bit) Gleitkomma-Zahlen können 113-Bit-Festkomma-Zahlen speichern oder Ganzzahlen genau, ohne Präzision 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. Vorlage:Quellenangabe erforderlich
Decimal128 Gleitkommazahlen können Zahlen mit bis zu 34 signifikanten Ziffern darstellen.
Geschichte
Ein 128-Bit-Multikomparator wurde 1976 von Forschern beschrieben.[17]
Das IBM System/360 Model 85,[18] und IBM System/370 und seine Nachfolger unterstützen 128-Bit-Gleitkomma-Arithmetik.
Die Mainframes der Serien 7.700 und 7.500 von Siemens und ihre Nachfolger unterstützen 128-Bit-Gleitkomma-Arithmetik -Z125-2-7600|year=1993|url=https://bs2manuals.ts.fujitsu.com/download/manual/959.1}}</ref>
Die meisten modernen CPUs verfügen über SIMD-Befehlssätze (Streaming SIMD Extensions, AltiVec usw.), bei denen 128-Bit-Vektorregister zum Speichern mehrerer Befehle verwendet werden kleinere Zahlen, beispielsweise vier 32-Bit-Gleitkommazahlen. Ein einzelner Befehl kann dann alle diese Werte parallel bearbeiten. Allerdings verarbeiten diese Prozessoren keine einzelnen Zahlen mit einer Länge von 128 Binärziffern; nur ihre Vektorregister haben die Größe von 128 Bit.
Der DEC VAX unterstützte Operationen mit 128-Bit-Ganzzahldatentypen ('O' oder Oktawort) und 128-Bit-Gleitkommadatentypen ('H-float' oder HFLOAT). Die Unterstützung solcher Vorgänge war eine Upgrade-Option und keine Standardfunktion. Da die Register des VAX 32 Bit breit waren, wurden bei einer 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 Dezimalzahlen-Arithmetik.
Eine CPU mit 128-Bit-Multimedia-Erweiterungen wurde 1999 von Forschern entwickelt.[19][20] Keine der Konsolen unterstützte 128-Bit-Adressierung oder 128-Bit-Ganzzahlarithmetik.
Moderne GPU-Chips (Graphics Processing Unit) können Daten über einen 128-Bit-Bus verarbeiten.[21]
Hardware
BearbeitenDie RISC-V ISA-Spezifikation aus dem Jahr 2016 enthält einen Vorbehalt für eine 128-Bit-Version der Architektur, die Details bleiben jedoch absichtlich undefiniert, da es noch so wenige praktische Erfahrungen mit so großen Wortgrößen gibt.<ref name= "isa">Andrew Waterman, Krste Asanović: Das RISC-V-Befehlssatzhandbuch, Band I: Basis-ISA auf Benutzerebene Version 2.2. University of California, Berkeley, abgerufen am 25. Mai 2017 (EECS-2016-118). </ref>
Software
BearbeitenAuf die gleiche Weise, wie Compilers z.B. 64-Bit-Ganzzahlarithmetik auf Architekturen mit Registergrößen von weniger als 64 Bit; einige Compiler unterstützen auch 128-Bit-Ganzzahlarithmetik. Beispielsweise verfügt der GCC C-Compiler 4.6 und höher für einige Architekturen über einen 128-Bit-Ganzzahltyp __int128
.[22] GCC und kompatible Compiler signalisieren das Vorhandensein von 128-Bit-Arithmetik, wenn das Makro __SIZEOF_INT128__
definiert ist.[23] Für die Programmiersprache C ist die 128-Bit-Unterstützung optional, z. B. über den Typ int128_t
oder kann durch eine Compiler-spezifische Erweiterung implementiert werden. Die Programmiersprache Rust verfügt über integrierte Unterstützung für 128-Bit-Ganzzahlen (ursprünglich über LLVM), die auf allen Plattformen implementiert ist.[24] Ein von einem C-Compiler bereitgestellter 128-Bit-Typ kann in Perl über das Modul Math::Int128
verfügbar sein.[25]
Verwendungen
Bearbeiten- Die zur Implementierung von RISC-V Architektur verwendete freie Software ist für 32, 64 und 128 Bit ganzzahlige Datenbreite definiert.
- Universally Unique Identifiers (UUID) bestehen aus einem 128-Bit-Wert.
- IPv6 leitet den Computernetzwerkverkehr über einen 128-Bit-Adressbereich weiter.
- ZFS ist ein 128-Bit-Dateisystem.
- 128 Bit ist eine übliche Schlüsselgröße für symmetrische Chiffrens und eine übliche Blockgröße für Blockchiffrens in der Kryptographie.
- Der virtuelle Befehlssatz von IBM i definiert alle Zeiger als 128-Bit. Dies wird nach Bedarf in den tatsächlichen Befehlssatz der Hardware übersetzt, sodass sich die zugrunde liegende Hardware ändern kann, ohne dass die Software neu kompiliert werden muss. Frühere Hardware war ein 48-Bit-CISC, während die aktuelle Hardware ein 64-Bit-PowerPC ist. Da Zeiger als 128-Bit definiert sind, kann zukünftige Hardware ohne Software-Inkompatibilität 128-Bit sein.
- Durch Erhöhen der Wortgröße können mathematische Bibliotheken mit Mehrfachgenauigkeit beschleunigt werden, mit Anwendungen für Kryptografie, und möglicherweise werden Algorithmen beschleunigt, die bei der komplexen mathematischen Verarbeitung verwendet werden (numerische Analyse, [ [Signalverarbeitung]], komplexe Fotobearbeitung und Audio und Videoverarbeitung).
- MD5 ist eine Hash-Funktion, die einen 128-Bit-Hash-Wert erzeugt.
- Apache Avro verwendet eine 128-Bit-Zufallszahl als Synchronisationsmarkierung für eine effiziente Aufteilung von Datendateien.[26][27]
Einzelnachweise
Bearbeiten- ↑ David Reinsel, John Gantz, John Rydning: The Digitalization of the World from Edge to Core. In: Seagate Technology. IDC, November 2018, S. 3, archiviert vom am 7. September 2021; abgerufen am 14. September 2021 (englisch).
- ↑ Carver A. Mead, Richard D. Pashley, Lee D. Britton, Yoshiaki T. Daimon, Stewart F., Jr. Sando: 128-Bit Multicomparator. In: IEEE Journal of Solid-State Circuits. 11. Jahrgang, Nr. 5, Oktober 1976, S. 692–695, doi:10.1109/JSSC.1976.1050799, bibcode:1976IJSSC..11..692M (caltech.edu [PDF]).
- ↑ Padegs A: Structural aspects of the System/360 Model 85, III: Extensions to floating-point architecture. In: IBM Systems Journal. 7. Jahrgang, 1968, S. 22–29, doi:10.1147/sj.71.0022.
- ↑ Vorlage:Cite manual
- ↑ M. Suzuoki, K. Kutaragi, T. Hiroi, H. Magoshi, S. Okamoto, M. Oka, A. Ohba, Y. Yamamoto, M. Furuhashi, M. Tanaka, T. Yutaka, T. Okada, M. Nagamatsu, Y. Urakawa, M. Funyu, A. Kunimatsu, H. Goto, K. Hashimoto, N. Ide, H. Murakami, Y. Ohtaguro, A. Aono: A microprocessor with a 128-bit CPU, ten floating-point MAC's, four floating-point dividers, and an MPEG-2 decoder. In: IEEE Journal of Solid-State Circuits. 34. Jahrgang, Nr. 11, November 1999, S. 1608–1618, doi:10.1109/4.799870, bibcode:1999IJSSC..34.1608S.
- ↑ John L. Hennessy, David A. Patterson: Computer Architecture: A Quantitative Approach. Third Auflage. 2003, ISBN 1-55860-724-2 (englisch).
- ↑ Keith Diefendorff: Sony's Emotionally Charged Chip. In: Microprocessor Report. 13. Jahrgang, Nr. 5. Microdesign Resources, 19. April 1999.
- ↑ Don Woligroski: The Graphics Processor. In: Tom's Hardware. 24. Juli 2006, abgerufen am 24. Februar 2013.
- ↑ Andrew Waterman, Krste Asanović: The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.2. University of California, Berkeley, abgerufen am 25. Mai 2017 (EECS-2016-118).
- ↑ GCC 4.6 Release Series - Changes, New Features, and Fixes. Abgerufen am 25. Juli 2016.
- ↑ Marc Glisse: 128-bit integer - nonsensical documentation? GCC-Help, 26. August 2015, abgerufen am 23. Januar 2020.
- ↑ i128 - Rust. In: doc.rust-lang.org. Abgerufen am 25. Juni 2020.
- ↑ Math::Int128. In: metacpan.org. Abgerufen am 25. Juni 2020.
- ↑ Martin Kleppmann: Re: Synchronization Markers. 24. Januar 2013 .
- ↑ Apache Avro 1.8.0 Specification. Apache Software Foundation
- ↑ David Reinsel, John Gantz, John Rydning: Die Digitalisierung der Welt vom Rand bis zum Kern. In: Seagate Technology. IDC, November 2018, S. 3, archiviert vom am 7. September 2021; abgerufen am 14. September 2021 (englisch).
- ↑ Carver A. Mead, Richard D. Pashley, Lee D. Britton, Yoshiaki T. Daimon, Stewart F., Jr. Sando: 128-Bit Multicomparator. In: IEEE Journal of Solid-State Circuits. 11. Jahrgang, Nr. 5, Oktober 1976, S. 692– 695, doi:10.1109/JSSC.1976.1050799, bibcode:1976IJSSC..11..692M (https: //authors.library.caltech.edu/53685/1/01050799.pdf).
- ↑ Padegs: Strukturelle Aspekte des System/360-Modells 85, III: Erweiterungen der Gleitkommaarchitektur. In: IBM Systems Journal. 7. Jahrgang, 1968, S. 22–29, doi:10.1147/sj.71.0022.
- ↑ Vorlage:Cite Journal< /ref> Unter den sechsten Generationen von Videospielkonsolen verwendeten Dreamcast und PlayStation 2 in ihrem Marketing den Begriff „128-Bit“, um ihre Leistungsfähigkeit zu beschreiben. Die CPU der Playstation 2 verfügte über 128-Bit-SIMD-Fähigkeiten.<ref name="CAAQA">{{cite book |first1=John L. |last1=Hennessy |author1-link=John L . Hennessy |first2=David A. |last2=Patterson |author2-link=David Patterson (Wissenschaftler) |title=Computer Architecture: A Quantitative Approach |year=2003 |edition=Third |isbn=1-55860-724-2} }
- ↑ Keith Diefendorff: Sony's Emotionally Charged Chip. In: Microprocessor Report. 13. Jahrgang, Nr. 5. Microdesign Resources, 19. April 1999.
- ↑ Don Woligroski: Der Grafikprozessor. In: Tom's Hardware. 24. Juli 2006, archiviert vom am 11. April 2013; abgerufen am 24. Februar 2013.
- ↑ GCC 4.6 Release Serie – Änderungen, neue Funktionen und Korrekturen. Abgerufen am 25. Juli 2016.
- ↑ https://gcc.gnu.org/ml/gcc-help/2015-08/msg00185.html
- ↑ i128 - Rust. In: doc.rust-lang.org. Abgerufen am 25. Juni 2020.
- ↑ Math::Int128. In: metacpan.org. Abgerufen am 25. Juni 2020.
- ↑ Martin Kleppmann: Re: Synchronisationsmarkierungen. 24. Januar 2013, archiviert vom am 27. September 2015 .
- ↑ https://avro.apache.org/docs/1.8.0/spec.html# Object+Container+Files