Pergunta

Tenho certeza de que todos nós já ouvimos os termos 64 bits e 32 bits, mas o que eles realmente significam?

Tenho certeza que eles têm a ver com o tamanho de um endereço de memória.Em uma máquina de 64 bits, uma referência a um objeto tem 64 bits.Mas quero cavar um pouco mais fundo....

  1. Freqüentemente ouve a frase "máquina de 64 bits". Que parte do computador é realmente voltada para o número de bits?Processador?Sistema operacional?

  2. Qual é a vantagem de ter endereços de memória maiores?

Eu poderia adicionar mais perguntas, mas acho que breve é ​​melhor.

Obrigado pessoal :D

Foi útil?

Solução

64 bits refere-se à largura dos registros, espaço de endereçamento de memória, etc.Um benefício é a capacidade de endereçar mais de 4 GB de memória.

A Wikipédia tem um artigo sobre computação de 64 bits com mais detalhes.

Editar:O vantagens para mais memória são que o sistema operacional e os programas tenham mais espaço de endereçamento virtual - 16 exabytes (17,2 bilhões de GB) - e, mais importante, que mais memória física possa ser adicionada a um sistema e endereçada, causando menos troca de memória virtual de e para o disco.

A vantagem de registros e barramentos de dados mais amplos é que é mais fácil e rápido movimentar a mesma quantidade de dados.Uma operação que exigia dois ou mais registros agora pode ser realizada com um.

Portanto, o desempenho normalmente aumenta quando o software é recompilado para 64 bits.

A desvantagem é que dados mais amplos podem significar mais espaço ocupado pelos mesmos dados.Por exemplo, armazenar o número 300 requer nove bits.Se for armazenado em um número inteiro de 32 bits, 23 bits serão desperdiçados.Em 64 bits, esse desperdício passa a ser de 55 bits.Portanto, sem reequipar, uma simples recompilação para 64 bits pode gerar um software mais rápido, mas um pouco mais inchado.

Editar:Também existem Páginas de tecnologia de 64 bits aqui:

Outras dicas

A diferença é exatamente de 32 bits ;-)

Você precisa de hardware (processador) de 64 bits para executar um sistema operacional de 64 bits.Você precisa de um sistema operacional de 64 bits para executar software de 64 bits.Estas são as dependências.

  • Em um sistema de 32 bits você está limitado a endereçar memória de 4 GiByte (2 ^ 32), em um sistema de 64 bits há um limite teórico de 2 ^ 64 bytes.
  • O software de 64 bits precisa de um pouco mais de memória, principalmente porque os ponteiros têm 8 bytes em vez de 4
  • em x86_64, executáveis ​​de 64 bits precisam de mais memória, pois há um opcode adicional para muitas instruções e, portanto, podem ser executados mais lentamente
  • em x86_64, software de 64 bits pode usar mais registros e tem potencial para rodar mais rápido
  • Os sistemas de 64 bits podem endereçar diretamente significativamente mais memória
  • Os sistemas de 64 bits podem processar dados em blocos duas vezes maiores que os de 32 bits, o que ajuda algumas operações a serem mais rápidas

Para alguns programas, como suítes de automação de escritório, 32 bits versus 64 bits faz pouca diferença observável.

Mas para outras aplicações, como bancos de dados, processamento de gráficos/vídeo ou hospedagem de máquinas virtuais, ser capaz de alcançar mais memória física de uma vez e processar mais informações com cada instrução pode fazer uma enorme diferença no desempenho.

Observe que hoje, muitos chips de 32 bits possuem funções de extensão de 64 bits, já que muitos PUF (matemática) ou SSMD As operações (vetoriais) já são feitas no modo de 64 bits.

Ver 32 bits vs.Sistemas de 64 bits:Qual é a diferença? para mais.

  1. Registros de CPU e endereçamento de memória.

  2. O sistema pode referenciar (ver) muito mais memória.

Acho que a melhor resposta seria uma comparação em assembler x86 bit x64

Quando seu programa de x32 bits registra uma variável, por exemplo um número inteiro (5), o código é equivalente a este:

push 5

Para entender melhor as coisas, 'push X' é um atalho para:

sub esp,4 //substracts esp with 4(4*8=32 bits.That's the size of a pointer in x32 executables) in order to make space for our variable
mov [esp],X //moves variable in @esp

Esses registradores têm 32 bits (4 bytes de comprimento), que é o tamanho de um ponteiro em qualquer linguagem de programação de 32 bits.

No código de 64 bits, porém, o tamanho é duas vezes maior, assim como os registros. Nosso registro ESP existe em executáveis ​​​​x64, mas não é amplamente utilizado como em executáveis ​​​​x32.

Em vez disso, todos os registradores recebem um "R" na frente de seus nomes (EAX se torna RAX, ESP se torna RSP, EDX se torna RDX e assim por diante).

Portanto, nosso código no executável x64 não será diferente, exceto que o atalho para 'push X' será

sub esp,8
mov [rsp],X

O RSP tem o dobro do tamanho do ESP - 64 bits,8 bytes.

O resultado final é que os executáveis ​​​​de x64 bits usam mais memória do que os executáveis ​​​​de x32 bits.

Vamos voltar ao básico.

99% dos computadores hoje em dia são baseados no que é chamado de Arquitetura de Von Neumann.Essencialmente, o computador está em um ciclo constante de:

  1. Buscando um comando da RAM
  2. Executando o comando na CPU

alt text
(fonte: wikimedia.org)

Ao se referir ao sistema de 32/64 bits (ou qualquer outro tamanho de bit), você está falando essencialmente sobre a arquitetura e implementação do computador:

  • tamanho do espaço de memória (RAM)
  • tamanho dos registros da CPU
  • tamanho do ônibus (ou seja,entre CPU, RAM, E/S, etc...)

Se você tiver um sistema de 64 bits, terá um espaço de endereço de 2^64.É por isso que o sistema de 32 bits não pode ter mais de 4 GB de RAM.Como você pode endereçar um espaço de memória maior que 2^32?

Com relação às diferenças de desempenho, não há uma resposta clara (assim como não há uma resposta clara se a arquitetura CISC ou RISC é melhor).Depende muito dos aplicativos que você está usando.

Para resumir:uma arquitetura de 64 bits é simplesmente uma maneira diferente de construir um computador.Isso não significa que seja melhor ou pior, ou que faça as coisas de maneira diferente (em um nível baixo, todo computador está executando fetch-execute).É simplesmente uma maneira diferente de implementar um computador.

Exatamente as referências de 64 bits ou 32 bits apenas à largura do barramento principal.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top