
Arquitetura do computador atualizada de 16 bits para 32 bits e para 64 bits. Qual foi a lógica para pular 48 bits? Qual raciocínio foi usado para atualizar para 64 bits e não algum outro expoente?
As tabelas a seguir ilustram: 2 ^ 32 é 65.536 vezes maior que 2 ^ 16. Portanto, parece lógico usar 2 ^ 48, que também é 65.536 vezes maior que 2 ^ 32. Usar 2 ^ 64 parece um grande salto em comparação. (10 anos após a introdução do AMD64, os computadores desktop são vendidos com GB de RAM de dois dígitos, enquanto os servidores usam GB de RAM de três dígitos.)
2^16 65.536
2^32 4.294.967.296 2^16 X 65536
2^48 281.474.976.710.656 2^32 X 65536
2^64 18.446.744.073.709.600.000 2^32 X 4294967296
EDITAR ABAIXO
Eu usei umconversor online de decimal para binárioe eu obtenho esses resultados. Aparentemente, 2 ^ 48 está no máximo com 48 1s binários.
1111111111111111 65535 2^16 - 1 (16 ones)
10000000000000000 65536 2^16
11111111111111111111111111111111 4294967295 2^32 - 1 (32 ones)
100000000000000000000000000000000 4294967296 2^32
111111111111111111111111111111111111111111111111 281474976710655 2^48 - 1 (48 ones)
1000000000000000000000000000000000000000000000000 281474976710656 2^48
1111111111111111111111111111111111111111111111111111111111111111 18446744073709551615 2^64 - 1 (64 ones)
10000000000000000000000000000000000000000000000000000000000000000 18446744073709551616 2^64
Responder1
64 bits é o próximo passo lógico.
A razão é principalmente porque o passo para dobrar (ou metade) o número de bits é fácil de manusear em software e hardware para sistemas que operam nativamente em tamanhos diferentes. Os sistemas de 32 bits já lidavam rotineiramente com valores de 64 bits internamente, antes que as CPUs de 64 bits se tornassem disponíveis.
Por exemplo: Um sistema de 32 bits pode facilmente lidar com um número de 64 bits armazenando-o em 2 variáveis/registros de 32 bits.
Lidar com um número de 48 bits é estranho: você precisaria usar uma variável de 32 bits e uma variável de 16 bits juntas ou usar apenas parte de uma variável de 32 bits ou usar 3 variáveis de 16 bits. Nenhuma dessas soluções para 48 bits é ideal.
Em geral: Qualquer sistema que funcione em X bits pode facilmente lidar com tamanhos de (N * X) e (X / N), onde N é uma potência de 2. Portanto, a lógica é 1, 2, 4, 8, 16, 32 , 64, 128, 256, 512 e assim por diante.
Qualquer outro tamanho requer um manuseio mais complicado em hardware e/ou software e é, portanto, abaixo do ideal.
Portanto, ao optar por um tamanho de bits maior na arquitetura de hardware, faz sentido usar a mesma progressão, pois serão necessárias apenas pequenas atualizações nos sistemas operacionais, software e compiladores para suportar o novo tamanho de bits.
(Tudo isso se aplica ao tamanho de bits nativo dos registros da CPU. Quando você considera o "número de linhas de endereço" que endereçam os chips de RAM, você pode de fato ver um número menor do que o que é natural para a arquitetura.
Internamente, essas CPUs usam mais bits, mas nem todos os bits estão conectados a linhas de endereço reais.
Por exemplo: 20 linhas em CPUs 8088 e 8086, 20 linhas em 80286 e 36 linhas em Pentium II)
Responder2
O que aconteceu, basicamente, foi o endereçamento de bytes. Antes disso, não havia nenhuma razão convincente para que os processadores tivessem uma potência de duas palavras (embora geralmente houvesse razões físicas para um múltiplo de 2 ou 4, porque os circuitos vinham em tais múltiplos).
Antes do endereçamento de bytes, a palavra da memória tinha a mesma largura que a palavra do processador, e a memória era (principalmente) endereçada em palavras. Mas com o endereçamento de bytes, havia uma vantagem em ter o comprimento da "palavra" como uma potência de dois do tamanho do byte, de modo que os limites da "palavra" caíssem em uma boa progressão binária (bom para humanos e para hardware de computador).
(Quanto ao motivo pelo qual o endereçamento de bytes se tornou "a moda", não posso oferecer nenhum argumento convincente agora.)
Provavelmente, se o caractere padrão fosse 10 bits em vez de 8, teríamos processadores de 20, 40, 80 bits, em vez de 16, 32, 64.