128-bit

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Bit
1 2 4 8 12 16 18 24 26 31 32 36 48 60 64 128 256 512
Application
8 16 32 64
Binary floating-point precision
16 32 40 64 80 128 256
×½ ×1 ×2 ×4 ×8
Decimal floating-point precision
32 64 128

In computer architecture, 128-bit integers, memory addresses, or other data units are those that are 128 bits (16 octets) wide. Also, 128-bit CPU and ALU architectures are those that are based on registers, address buses, or data buses of that size.

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. The IBM System/370 could be considered the first simple 128-bit computer, as it used 128-bit floating-point registers. 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 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.

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 GCC C compiler 4.6 and later has a 128-bit integer type __int128 for some architectures.[1] For the C programming language, this is a compiler-specific extension, as C11 itself does not guarantee support for 128-bit integers.

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.

Uses[edit]

  • Apache Avro uses a 128-bit random number as synchronization marker for efficient splitting of data files.[4]

History[edit]

A 128-bit multicomparator was described by researchers in 1976.[5]

A CPU with 128-bit multimedia extensions was designed by researchers in 1999.[6]

References[edit]

  1. ^ "GCC 4.6 Release Series - Changes, New Features, and Fixes". Retrieved 25 July 2016. 
  2. ^ Don Woligroski (July 2006). "The Graphics Processor". tomshardware.com. Retrieved 24 February 2013. 
  3. ^ Rich Miller (May 2010). "Digital Universe nears a Zettabyte". The Guardian. datacenterknowledge.com. Retrieved 16 September 2010. 
  4. ^ "Compression Formats and Delimiter Sequences". Stack Overflow. Retrieved 20 June 2018. 
  5. ^ Mead, C.A.; Pashley, R.D.; Britton, L.D.; Daimon, Y.T.; Sando, S.F. (1976). "128-bit multicomparator". IEEE Journal of Solid-State Circuits. 11: 692. doi:10.1109/JSSC.1976.1050799. 
  6. ^ Suzuoki, M.; Kutaragi, K.; Hiroi, T.; Magoshi, H.; Okamoto, S.; Oka, M.; Ohba, A.; Yamamoto, Y.; Furuhashi, M.; Tanaka, M.; Yutaka, T.; Okada, T.; Nagamatsu, M.; Urakawa, Y.; Funyu, M.; Kunimatsu, A.; Goto, H.; Hashimoto, K.; Ide, N.; Murakami, H.; Ohtaguro, Y.; Aono, A. (1999). "A microprocessor with a 128-bit CPU, ten floating-point MAC's, four floating-point dividers, and an MPEG-2 decoder". IEEE Journal of Solid-State Circuits. 34 (11): 1608. doi:10.1109/4.799870.