128-bit computing
This article needs additional citations for verification. (April 2023) |
Computer architecture bit widths |
---|
Bit |
Application |
Binary floating-point precision |
Decimal floating-point precision |
In
General home computing and gaming utility emerged at
Representation
A processor with 128-bit byte addressing could directly address up to 2128 (over 3.40×1038) 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
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,282,366,920,938,463,463,374,607,431,768,211,455 (2128 − 1) for representation as an (unsigned) binary number, and −170,141,183,460,469,231,731,687,303,715,884,105,728 (−2127) through 170,141,183,460,469,231,731,687,303,715,884,105,727 (2127 − 1) for representation as two's complement.
Quadruple precision (128 bits) 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.[citation needed]
History
A 128-bit
The
The
Most modern CPUs feature
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
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
The 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
In the same way that
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
- 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 symmetric ciphers and a common block size for block ciphers in cryptography.
- The IBM i Machine Interface defines all pointers as 128-bit. The Machine Interface instructions are translated to the hardware's real instruction set as required, allowing the underlying hardware to change without needing to recompile the software. Past hardware had a CISC instruction set with 48-bit addressing, while current hardware is 64-bit PowerPC/Power ISA. In the PowerPC/Power ISA implementation, the first four bytes contain information used to identify the type of the object being referenced, and the final eight bytes are used as a virtual memory address.[14] The remaining four bytes are unused, and would allow IBM i applications to be extended to 96-bit addressing in future without requiring code changes.
- Increasing the word size can speed up 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.[15][16]
References
- IDC. p. 3. Archived(PDF) from the original on 7 September 2021. Retrieved 14 September 2021.
- (PDF) from the original on 3 November 2018.
- .
- ^ Assembler Instructions (BS2000/OSD). 1993.
- doi:10.1109/4.799870.
- ISBN 1-55860-724-2.
- ^ Diefendorff, Keith (19 April 1999). "Sony's Emotionally Charged Chip". Microprocessor Report. 13 (5). Microdesign Resources.
- ^ Woligroski, Don (24 July 2006). "The Graphics Processor". Tom's Hardware. Archived from the original on 11 April 2013. Retrieved 24 February 2013.
- ^ Waterman, Andrew; Asanović, Krste. "The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.2". University of California, Berkeley. EECS-2016-118. Retrieved 25 May 2017.
- ^ "GCC 4.6 Release Series – Changes, New Features, and Fixes". Retrieved 25 July 2016.
- ^ Marc Glisse (26 August 2015). "128-bit integer – nonsensical documentation?". GCC-Help. Retrieved 23 January 2020.
- ^ "i128 – Rust". doc.rust-lang.org. Retrieved 25 June 2020.
- ^ "Math::Int128". metacpan.org. Retrieved 25 June 2020.
- ISBN 978-1-882419-66-1.
- ^ Kleppmann, Martin (24 January 2013). "Re: Synchronization Markers". Archived from the original on 27 September 2015.
- Apache Software Foundation.