Computação de 128 bits

Na arquitetura de computador, inteiros de 128 bits, endereços de memória ou outras unidades de dados são aqueles que têm 128 bits (16 octetos) de largura. Além disso, as arquiteturas de CPU e ALU de 128 bits são aquelas que são baseadas em registros, barramentos de endereços ou barramentos de dados desse tamanho.

Embora não existam atualmente processadores de uso geral construídos para operar com inteiros ou endereços de 128 bits, vários processadores têm formas especializadas de operar com blocos de dados de 128 bits. O IBM System/370 poderia ser considerado o primeiro computador simples de 128 bits, pois usava registros de ponto flutuante de 128 bits. A maioria das CPUs modernas possui conjuntos de instruções de múltiplos dados de uma única instrução (SIMD) (Streaming SIMD Extensions, AltiVec etc.) onde são usados registros vetoriais de 128 bits para armazenar vários números menores, como quatro números de ponto flutuante de 32 bits. Uma única instrução pode então operar em todos estes valores em paralelo. No entanto, estes processadores não operam em números individuais que têm 128 dígitos binários; apenas os seus registos têm o tamanho de 128 bits.

As operações suportadas pelo DEC VAX em números inteiros de 128 bits (‘O’ ou octaword) e datatypes de ponto flutuante de 128 bits (‘H-float’ ou HFLOAT). O suporte para tais operações foi uma opção de atualização ao invés de ser uma característica padrão. Como os registros do VAX tinham 32 bits de largura, uma operação de 128 bits usava quatro registros consecutivos ou quatro palavras longas na memória.

A série ICL 2900 forneceu um acumulador de 128 bits, e seu conjunto de instruções incluía ponto flutuante de 128 bits e aritmética decimal empacotada.

Da mesma forma que os compiladores emulam, por exemplo, aritmética inteira de 64 bits em arquiteturas com registros com tamanhos inferiores a 64 bits, alguns compiladores também suportam aritmética inteira de 128 bits. Por exemplo, o compilador GCC C 4.6 e posteriormente tem um inteiro de 128 bits tipo __int128 para algumas arquiteturas. GCC e compiladores compatíveis sinalizam a presença de aritmética de 128 bits quando a macro __SIZEOF_INT128__ está definida. Para a linguagem de programação C, o suporte a 128 bits é opcional, por exemplo através do tipo int128_t, ou pode ser implementado através de uma extensão específica do compilador. A linguagem de programação Rust tem suporte incorporado para inteiros de 128 bits, que é implementado em todas as plataformas. Um tipo 128-bit fornecido por um compilador C pode estar disponível em Perl através do Math::Int128 module.

A 128-bit register pode armazenar 2128 (mais de 3.40 × 1038) valores diferentes. O intervalo de valores inteiros que podem ser armazenados em 128 bits depende da representação de números inteiros utilizada. Com as duas representações mais comuns, o intervalo é de 0 a 340.282.366.920.938.463.463.374.607.431.768.211.455 (2128 – 1) para representação como um número binário (não assinado), e -170.141.183.460.469.231.731.687.303.715.884.105.728 (-2127) até 170.141.183.460.469.231.731.631.687.303.715.884.105.727 (2127 – 1) para representação como complemento de dois.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *