Ir ao conteúdo
  • Cadastre-se

Processadores 32 bits vs. 64 bits


Ricardo RRY

Posts recomendados

@Gabriel Torres Boa noite , gostaria de mencionar um novo tópico , não achei no site , nem sei se está na categoria certa, o tema se chama "bits" tanto em software quanto em hardware. 

 

Porque não lançaram processador de 128 bits?

 

Porque um programa de 32 bits roda em processador 64 bits e porque um programa 64 bits não roda em programa 32 bits?

 

Qual a diferença de 32 bits e 64 bits em programas , jogos  etc.

 

Tem algum ganho de performance? 

 

Tem algum ganho de segurança? 

 

Tem algum ganho de estabilidade?

 

Os programas de 64 bites em relação ao aquecimento de hardware eles aquecem mais ou menos o hardware?

 

Consumo de energia em mais ou menos?

 

Não consegui a achar um tópico ideal no fórum pra encaixar essa dúvida , agradeço desde já.

 

 

Link para o comentário
Compartilhar em outros sites

  • Administrador

@Ricardo RRY Está em meus planos gravar um vídeo "mitos do hardware" justamente sobre esse assunto. Pois a maioria das pessoas não compreende corretamente esta questão e há tantos equívocos e gente falando bobagem que não está no mapa...

 

Se você quiser realmente entender o tema, a leitura do meu livro "HARDWARE" (capa verde) explica isto em detalhes na seção "Arquitetura x86". São vários capítulos para explicar o tema, então vou tentar resumir o máximo possível. Sei que o livro está esgotado, mas se você puder comprá-lo em sebo ou de um amigo, seria o ideal.

 

Isto é, tem muito mais detalhes do que isso. Mas em linhas gerais é o que se segue.

 

Vou tentar responder tudo o que você perguntou, mas o "x" da questão é entender que esta nomenclatura de "processador de x bits" e "instruções de x bits" está equivocada. Pois fica parecendo que as instruções têm fisicamente este número de bits, o que não procede.

 

A arquitetura x86 é uma arquitetura CISC, onde instruções não tem tamanhos padronizados. Instruções podem ter desde 8 bits até centenas de bits.

 

Por exemplo, a instrução mov eax, ebx, que copia o conteúdo do registrador EBX para o registrador EAX (ambos de 32 bits de comprimento) possui como opcode 89D8h, ou seja, tem 16 bits de comprimento.

 

A instrução mov ax, 1234h, que guarda o valor 1234h no registrador AX (que é um registrador de 16 bits) será, em linguagem de máquina, B8 1234h, com 24 bits de comprimento.

 

Já a instrução mov eax, 12345678h guarda o valor 12345678h no registrador EAX (que é um registrador de 32 bits). Em linguagem de máxima esta instrução será B8 12345678h, com 40 bits de comprimento.

 

Portanto, o "número de bits" do processador não tem absolutamente nada a ver com o comprimento das instruções do processador, pelo menos na arquitetura CISC. (Na arquitetura RISC é diferente.)

 

O que este "número de bits" indica na realidade não é o comprimento da instrução, mas o uso de registradores de uso geral com este comprimento. O que chamamos de "processadores de 32 bits" significa que os registradores de uso geral (EAX, EBX, ECX, EDX e R8D a R15D) têm 32 bits de comprimento. Além disso, o sistema de paginação tradicional utiliza endereços de 32 bits, fazendo com que o processador só consiga acessar até 4 GiB de memória (RAM). Alguns processadores "de 32 bits" trazem modos especiais, como o PAE, que aumentam o comprimento dos endereços, permitindo o acesso a mais de 4 GiB (por exemplo, nos processadores Xeon de 32 bits).

 

No que chamamos de "processadores de 64 bits", os registradores de uso geral passaram a ter 64 bits, e o sistema de paginação passou a usar um endereçamento de 48 bits. (Para você ver que o "número de bits" de uma coisa não tem nada a ver com outra.)

 

Porém, a unidade de ponto fluturante do processador já usa registradores maiores "desde sempre": desde o 486DX os registradores de ponto flutuante (R0 a R7) têm 80 bits de comprimento, e a partir dos processadores com tecnologia SSE, os registradores de ponto flutuante passaram a ter 128 bits de comprimento (os registradores R0 a R7 foram renomeados para XMM0 a XMM7 e no modo de 64 bits oito novos registradores foram adicionados, XMM8 a XMM15).

 

Toda esta explicação é para dizer que essa coisa de "processador de x bits" ou "programa de x bits" está equivocada e é uma hyper simplificação (e padronização para o público leigo conseguir assimilar) de algo muito mais complexo. Tudo isso porque a arquitetura x86 é CISC (isto é, não há padronização no tamanho e funcionalidade das instruções).

 

A maioria das suas perguntas, portanto, não faz sentido algum, mas as respondo abaixo.

 

7 horas atrás, Ricardo RRY disse:

Porque não lançaram processador de 128 bits?

 

Porque até o momento não se viu necessidade de haver registradores de uso geral de 128 bits, sendo que os registradores de ponto flutuante já são de 128 bits.

 

7 horas atrás, Ricardo RRY disse:

Porque um programa de 32 bits roda em processador 64 bits e porque um programa 64 bits não roda em programa 32 bits?

 

Porque dados de 32 bits cabem em registradores de 64 bits, mas dados de 64 bits não cabem em registradores que só têm 32 bits de comprimento. Esta é a explicação mais simples, mas o caso é ainda mais complexo. O conjunto de instruções do "modo de 64 bits" têm mais instruções, e um código dito de "64 bits" na realidade é um código que faz uso dessas instruções que simplesmente não existem na arquitetura x86 padrão ("de 32 bits"). Não é possível rodar no processador instruções que ele não conhece.

 

7 horas atrás, Ricardo RRY disse:

Qual a diferença de 32 bits e 64 bits em programas , jogos  etc.

 

O uso de registradores de 32 bits ou de 64 bits. Na prática, a possibilidade de se endereçar mais do que 4 GiB de RAM.

 

7 horas atrás, Ricardo RRY disse:

Tem algum ganho de performance? 

 

Pergunta complicada, mas vou tentar explicar.

 

Se um programa precisar manipular um dado de comprimento maior do que o registrador, esta operação precisará ser quebrada em várias outras operações. Com o aumento do tamanho do registrador, a probabilidade disso acontecer será menor e haverá um ganho de desempenho por haver menos instruções a serem executadas... Em teoria! Porém, isso depende de outros fatores:

 

1. se um programa não tem o problema descrito (por exemplo, um programa que só manipula dados de até 32 bits de comprimento), não haverá ganho algum de desempenho, pois os registradores de 32 bits já são suficientes para este programa e aumentar o tamanho dos registradores para 64 bits não mudará isto.

 

2. na explicação acima, disse que em teoria menos instruções serão executadas, mas não necessariamente ter menos instruções sendo executadas torna o processador mais rápido. Cada instrução demora um determinado número de ciclos de máquina (pulsos de clock) para ser executada. Então a nova instrução que manipula um registrador maior pode (em teoria) demorar mais tempo para ser executada. Pode haver casos onde a substituição do que antes demorava várias instruções por menos instruções não dar ganho de desempenho pelo fato de, de repente, rodar mais instruções menores ser mais rápido do que rodar poucas instruções mais longas (e mais lentas). Inclusive este conceito é o ponto-chave da arquitetura RISC.

 

Obs: o caso é ainda mais complicado, pois os processadores desde o Pentium Pro utilizam uma arquitetura híbrida CISC/RISC: o front-end o processador aceita instruções x86, que são decodificadas em microinstruções RISC nativas do processador. Instruções mais simples (e mais usuais) são decodificadas em menos microinstruções enquanto que instruções mais complexas são decodificadas em mais microinstruções. Então rodar no programa uma instrução mais complexa para substituir instruções mais simples não necessariamente traz maior desempenho. Note que isso tudo que estou falando é a nível de compilador. Bons compiladores são programados de forma a levar tudo isso em consideração para um código executável mais otimizado (isto é, que dará o maior desempenho).

 

Isso tudo eu estou falando em nível de instruções. Para o usuário final, processadores de "64 bits" serão mais rápidos por permitir mais do que 4 GiB de RAM, o que acaba sendo mais importante para evitar o uso da técnica de memória virtual (troca de páginas de memória com um arquivo no disco rígido, onde o usuário nota uma lentidão no computador).

 

7 horas atrás, Ricardo RRY disse:

Tem algum ganho de segurança? 

 

Indiferente.

 

7 horas atrás, Ricardo RRY disse:

Tem algum ganho de estabilidade?

 

Indiferente. "32 bits" e "64 bits" tem a ver com a arquitetura das instruções e não com o processo de fabricação do processador ou das peças do computador.

 

7 horas atrás, Ricardo RRY disse:

Os programas de 64 bites em relação ao aquecimento de hardware eles aquecem mais ou menos o hardware?

 

Idem.

 

7 horas atrás, Ricardo RRY disse:

Consumo de energia em mais ou menos?

 

Idem.

 

@Ricardo RRY Espero que eu tenha conseguido, de forma suscinta, dar esta pequena aula sobre o que realmente significa um "processador de x bits". Como você sabe, eu normalmente não dou respostas tão longas por aqui, mas realmente tenho visto tanta gente falando bobagem que eu resolvi gastar este tempo para educá-los.

 

Como disse, o ideal é você conseguir o meu livro para entender todas essas questões mais a fundo -- há muito mais detalhes.

 

Abraços,

Gabriel.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...