Return to Bits (1024-Bit | 1024, 512-Bit | 512, 256-Bit | 256, 128-Bit | 128, 64-Bit | 64, 48-Bit | 48, 32-Bit | 32, 16-Bit | 16, 8-Bit | 8, 4-Bit | 4,), Bytes, Hardware Architectures, CPUs, Hardware, Hardware Bibliography, Hardware Courses, Hardware Glossary, Hardware Topics, Awesome Hardware
128-bitWhile there are currently no mainstream general-purpose processors built to operate on 128-bit integers or 128-bit addresses, a number of processors do have specialized ways to operate on 128-bit chunks of data.
128-bit processors could be used for addressing directly 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 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 Value and representation | 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 (signedness | 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 floating-point format | Quadruple precision (128-bit) floating-point arithmetic | floating-point numbers can store 113-bit fixed-point arithmetic | fixed-point numbers or integer (computer science) | integers accurately without losing significant figures | precision (thus 64-bit integers in particular). Quadruple precision floats can also represent any position in the observable universe with at least micrometer precision.
Decimal128 floating-point numbers can represent numbers with up to 34 significant digits.
A 128-bit multicomparator was described by researchers in 1976.<ref>
</ref>
The IBM System/360 Model 85,<ref>
</ref> 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.<ref>
</ref>
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.<ref>
</ref>
The Dreamcast and the PlayStation 2 among the Sixth generation of video game consoles used the term “128-bit” in their marketing to describe their capability. The Playstation 2's CPU had 128-bit Single instruction, multiple data | SIMD capabilities.<ref name=“CAAQA”>John L. Hennessy and David Patterson (scientist) | David A. Patterson. “Computer Architecture: A Quantitative Approach, Third Edition”.
</ref><ref name=“MPR”>Keith Diefendorff. “Sony's Emotionally Charged Chip”. Microprocessor Report, Volume 13, Number 5, April 19, 1999. Microdesign Resources.</ref> Neither console supported 128-bit addressing or 128-bit integer arithmetic.
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 memory systems.<ref name=“isa”>
</ref>
Graphics processing unit (GPU) chips commonly move data across a 128-bit bus.<ref>
</ref>
In 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 GNU Compiler Collection | GCC C compiler 4.6 and later has a 128-bit integer type
__int128
for some architectures.<ref>
</ref> GCC and compatible compilers signal the presence of 128-bit arithmetic when the macro
__SIZEOF_INT128__
is defined.<ref>
</ref> 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) | Rust programming language has built-in support for 128-bit integers (originally via LLVM), which is implemented on all platforms.<ref>
</ref> A 128-bit type provided by a C compiler can be available in Perl via the
Math::Int128
module.<ref>
</ref>
</ref><ref>
</ref>