Computación de 128 bits - 128-bit computing

En  la arquitectura de la computadora , los enteros de 128 bits , las direcciones de memoria u otras unidades de datos son aquellos que tienen 128 bits (16 octetos ) de ancho. Además, las arquitecturas de CPU y ALU de 128 bits son aquellas que se basan en registros , buses de direcciones o buses de datos de ese tamaño.

Si bien actualmente no hay procesadores convencionales de propósito general diseñados para operar con números enteros o direcciones de 128 bits , varios procesadores tienen formas especializadas de operar con fragmentos de datos de 128 bits.

Representación

Los procesadores de 128 bits se pueden utilizar para direccionar directamente hasta 2 128 (más3,40 × 10 38 ) bytes, lo que superaría en gran medida el total de datos capturados, creados o replicados en la Tierra a partir de 2018, que se ha estimado en alrededor de 33  zettabytes (más de 274  bytes).

Un registro de 128 bits puede almacenar 2 128 (más de 3,40 × 10 38 ) valores diferentes. El rango de valores enteros que se pueden almacenar en 128 bits depende de la representación de enteros utilizada. Con los dos más comunes las representaciones, el rango es de 0 a 340,282,366,920,938,463,463,374,607,431,768,211,455 (2 128 - 1) para la representación como una ( sin signo ) número binario , y -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2 127 ) a través de 170,141,183,460,469,231,731,687,303,715,884,105,727 (2 127 - 1) para la representación como complemento a dos .

Los números de coma flotante de precisión cuádruple (128 bits) pueden almacenar números enteros o números de coma fija de 113 bits con precisión sin perder precisión (por lo tanto, enteros de 64 bits en particular). Los flotadores de precisión cuádruple también pueden representar cualquier posición en el universo observable con al menos una precisión micrométrica.

Los números de coma flotante Decimal128 pueden representar números con hasta 34 dígitos significativos.

Historia

Un multicomparador de 128 bits fue descrito por investigadores en 1976.

El IBM System / 370 podría considerarse la primera computadora simple de 128 bits, ya que utiliza registros de coma flotante de 128 bits . La mayoría de las CPU modernas cuentan con una sola instrucción, conjuntos de instrucciones de datos múltiples (SIMD) ( Extensiones de Streaming SIMD , AltiVec , etc.) donde se utilizan registros vectoriales de 128 bits para almacenar varios números más pequeños, como cuatro números de coma flotante de 32 bits. Entonces, una sola instrucción puede operar en todos estos valores en paralelo. Sin embargo, estos procesadores no funcionan con números individuales de 128 dígitos binarios de longitud; solo sus registros tienen un tamaño de 128 bits.

El DEC VAX admitía operaciones en tipos de datos enteros de 128 bits ('O' u octapalabra) y de punto flotante de 128 bits ('H-float' o HFLOAT). El soporte para tales operaciones era una opción de actualización en lugar de ser una característica estándar. Dado que los registros del VAX tenían 32 bits de ancho, una operación de 128 bits usaba cuatro registros consecutivos o cuatro palabras largas en la memoria.

La serie ICL 2900 proporcionó un acumulador de 128 bits y su conjunto de instrucciones incluía aritmética decimal empaquetada y de coma flotante de 128 bits .

Los investigadores diseñaron una CPU con extensiones multimedia de 128 bits en 1999.

La Dreamcast y PlayStation 2, entre la sexta generación de consolas de juegos de vídeo utilizan el término "128 bits" en su comercialización para describir su capacidad. La CPU de la Playstation 2 tenía capacidades SIMD de 128 bits . Ninguna consola admitía direccionamiento de 128 bits ni aritmética de números enteros de 128 bits.

Hardware

La especificación RISC-V ISA de 2016 incluye una reserva para una versión de 128 bits de la arquitectura, pero los detalles permanecen sin definir intencionalmente, porque todavía hay muy poca experiencia práctica con sistemas de memoria tan grandes.

Los chips de la unidad de procesamiento de gráficos (GPU) comúnmente mueven datos a través de un bus de 128 bits.

Software

De la misma manera que los compiladores emulan, por ejemplo, la aritmética de enteros de 64 bits en arquitecturas con tamaños de registro inferiores a 64 bits, algunos compiladores también admiten la aritmética de enteros de 128 bits. Por ejemplo, el compilador de GCC C 4.6 y posterior tiene un tipo entero de 128 bits __int128para algunas arquitecturas. Los compiladores GCC y compatibles señalan la presencia de aritmética de 128 bits cuando __SIZEOF_INT128__se define la macro . Para el lenguaje de programación C , el soporte de 128 bits es opcional, por ejemplo, a través del int128_ttipo, o puede implementarse mediante una extensión específica del compilador. El lenguaje de programación Rust tiene soporte integrado para enteros de 128 bits (originalmente a través de LLVM ), que se implementa en todas las plataformas. Un tipo de 128 bits proporcionado por un compilador de C puede estar disponible en Perl a través del Math::Int128módulo.

Usos

Referencias