128비트

컴퓨터 구조에서 128비트 정수, 메모리 주소, 기타 데이터 단위는 128비트(16옥텟) 너비에 속하는 것들이다. 또, 128비트 CPU와 ALU 아키텍처들은 해당 크기의 레지스터, 주소 버스, 데이터 버스에 기반한 것들이다.

128비트 정수나 주소로 동작하는 주류의 범용 프로세서가 현재 존재하지 않지만 수많은 프로세서는 128비트 덩어리의 데이터에서 동작하기 위한 특수한 방식들을 사용한다. IBM 시스템/370은 128비트 부동소수점 레지스터를 사용하였으므로 최초의 단순 128비트 컴퓨터로 간주할 수 있다. 현대의 대부분의 CPU들은 SIMD 명령어 집합(스트리밍 SIMD 확장, AltiVec 등)을 지원하며 여기에서 128비트 벡터 레지스터를 사용하여 4개의 32비트 부동 숫자와 같은 더 작은 여러 수들을 저장한다. 그 뒤 하나의 명령어로 이러한 값들을 모두 병렬로 처리할 수 있다. 그러나 이러한 프로세서들은 길이가 128개의 이진 숫자인 개개의 숫자로 동작하지는 않는다. 오직 레지스터만이 크기가 128비트이다.

DEC의 VAX는 128비트 정수('O', 즉 옥타워드)와 128비트 부동소수점(H-float 또는 HFLOAT) 자료형을 지원하였다. 이러한 명령의 지원은 표준 기능이 아닌 업그레이드 옵션이었다. VAX의 레지스터들이 32비트 너비였기 때문에 128비트 동작은 메모리에 4개의 연속된 레지스터나 4개의 롱워드(longword)를 사용하였다.

ICL 2900 시리즈는 128비트 누산기를 제공하였으며 명령어 집합에는 128비트 부동소수점 및 이진화 십진법 산술을 포함하였다.

이를테면 컴파일러가 64비트 미만의 레지스터 크기를 갖춘 아키텍처에서 64비트 정수 산술을 에뮬레이트하는 방식과 동일하게 일부 컴파일러들 또한 128비트 정수 산술을 지원한다. 이를테면 GNU C 컴파일러 4.6 이상은 128비트 정수형 __int128을 일부 아키텍처용으로 갖추고 있다. C의 경우 이것은 컴파일러에 특화된 확장 기능이며, C11 자체는 128비트 정수의 지원을 보장하지 않는다.

128비트 레지스터는 2128(3.40 × 1038 초과)개의 다른 값들을 저장할 수 있다. 128비트에 저장할 수 있는 정수값의 범위는 사용되는 정수형에 따라 다르다. 가장 일반적인 2개의 정수형을 사용한다면 그 범위는 (unsigned) 이진수의 경우 0부터 340,282,366,920,938,463,463,374,607,431,768,211,455 (2128 - 1)이며 2의 보수로 표현할 경우 -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2127)부터 170,141,183,460,469,231,731,687,303,715,884,105,727 (2127 - 1)까지이다.

이용 
 RISC-V 구조를 구현하기 위해 사용되는 자유 소프트웨어는 32, 64, 128비트의 정수 데이터 너비로 정의된다.
 범용 고유 식별자(UUID)는 128비트 값을 이룬다.
 IPv6는 128비트 너비의 주소 간에 컴퓨터 네트워크 트래픽을 라우팅한다.
 ZFS은 128비트 파일 시스템이다.
 그래픽 처리 장치 칩은 일반적으로 128비트 버스를 통해 데이터를 전송한다.
 암호학에서 128비트는 대칭 키 암호를 위한 일반적인 키 크기이며 블록 암호의 일반적인 블록 크기이기도 하다.
 128비트 프로세서를 사용하면 최대 2128 (3.40 × 1038 초과) 바이트를 주소에 할당할 수 있으며 이는 2010년 지구에 저장되는 총 데이터를 훨씬 초과하며 약 1.2 제타바이트(1.42 × 1021 바이트)로 추산되고 있다.
 4배 정도(128비트) 부동소수점의 수들은 정확도를 잃지 않고 정확하게 64비트 고정소수점 수나 정수로 저장할 수 있다.
 IBM 시스템 i 가상 명령어 집합은 모든 포인터를 128비트로 정의한다.
 MD5 알고리즘은 128비트 해시값을 만들어내는, 널리 사용되는 해시 함수이다.

역사 
128비트 멀티컴퍼레이터는 1976년 연구원들에 의해 기술되었다.

128비트 멀티미디어 확장 기능을 갖춘 CPU는 1999년 연구원들에 의해 설계되었다.

각주 

데이터 단위