descadastro
site NCE
 
 
Plataformas Computacionais
 
artigos publicados

Computação de 64 bits

 

Roberto José Rodrigues , M.Sc.
Analista de Sistemas, NCE/UFRJ

     
 

Em termos de arquitetura de computadores, o termo “64 bits” é uma expressão usada para descrever inteiros, endereços de memória ou qualquer outro tipo de dado que tenha um tamanho de 64 bits, ou então para descrever arquiteturas de CPU e ALU baseadas em registradores, barramentos de dados e endereços com o tamanho de 64 bits.
Embora uma CPU possa ser de 64 bits internamente, seu barramento de dados, ou endereços, podem ter tamanhos diferentes (maiores ou menores). Muitas CPUs atuais de 32 bits utilizam barramentos de 64 bits, que as vezes são tratadas como 64 bits confundindo os usuários. Este termo também pode se referir ao tamanho de uma instrução no conjunto de instruções de uma arquitetura. Sem uma qualificação definida, podemos dizer que uma arquitetura de computador descrita como sendo de 64 bits geralmente tem registradores inteiros de 64 bits que suporta dados (de 64 bits) tanto interna como externamente. (http://en.wikipedia.org/wiki/64-bit)

A primeira CPU de 64 bits foi lançada comercialmente em 1990 pela MIPS Technologies. Em 1992, a DEC lança o chip Alpha para servidores atraindo a atenção de um mercado dominado pelas grandes mainframes.
Com a extinção da DEC (comprada pela Compaq e posteriormente absorvida pela HP) a computação em 64 bits em micros “ressurgiu” com o desenvolvimento do processador Itanium (IA-64) pela Intel (http://www.intel.com) junto com a HP (http://www.hp.com) em 1994 sendo introduzido, depois de um longo período de gestação, no mercado por volta de 2001. Já na versão 2 (Itanium 2) seu uso ainda não está "popularizado" pois, devido ao seu alto custo, está limitado à servidores e grandes estações de trabalho.

O início da computação de 64 bits para desktop (PC de mesa) iniciou em 2003 com o lançamento do processador Opteron (para servidores) da AMD (http://www.amd.com). O AMD Opteron não utiliza o conjunto de instruções do IA-64, mas extensões de 64 bits no conjunto existente da IA-32. Isto permitiu uma grande compatibilidade com os programas existentes e tornou fácil a coexistência da computação de 32 e 64 bits na mesma plataforma. Mas, infelizmente, o Opteron ainda era caro demais para uso popular e também ficou restrito ao uso em servidores.

Linha de tempo:

1990
MIPS Technologies A primeira CPU de 64 bits comercialmente lançada em 1991.
1992
A DEC lança o Alpha 21064, um processador de 64 bits (RISC) rodando à 200MHz.
1995
Primeira geração do SPARC64 (Fujitsu/Sun Microsystems).
1999
Lançamento da tecnologia x86-64 da AMD.
2001
Lançamento comercial do Itanium (Intel) para servidores. A Microsoft lança uma versão do Windows Server, específica para o Itanium.
2003
A AMD lança o Opteron e logo após o Athlon 64. A Apple aproveita o embalo lançando uma nova geração (g5) de suas máquinas com o chip PowerPC 970 da IBM/Motorola.
2004
Intel segue o sucesso da AMD lançando EM64T direcionando para PC desktop.
2005
A Intel lança o primeiro chip de núcleo duplo e a Microsoft lança a versão do Windows XP Professional x64. A Apple anuncia a migração para a plataforma Intel.


“64 bits” x “extensões de 64 bits”


Até então, os processadores de 64 bits estavam restritos apenas ao uso em servidores e grandes estações de trabalho (para computações gráficas, científicas e outras). Porém, em setembro de 2003, a AMD lançou o Athlon 64, que foi o primeiro processador “popular” para PC de mesa com suporte a 64 bits. Este lançamento deu início à real computação de 64 bits para o usuário comum despertando a atenção de desenvolvedores de hardware/software para o novo "petisco" do mercado. A Microsoft, por sua vez, iniciou o desenvolvimento do Windows XP x64 para os novos processadores de 64 bits.
O conjunto de instruções da arquitetura IA-64 (Intel Architecture 64 bits) é completamente diferente do conjunto de instruções da arquitetura IA-32 (Intel Architecture 32 bits) utilizado nos processadores padrão AMD e Intel. O Itanium foi desenvolvido com uma arquitetura real de 64 bits, já os novos processadores da AMD (Opteron e Athlon 64) e da Intel (extensões EM64T), são “extensões” da arquitetura IA-32.

Embora ambos processadores Opteron e Athlon 64 suportem as extensões de 64 bits, a característica mais curiosa em torno deste lançamento é que a AMD liberou estas extensões antes da Intel. Na época, a grande dúvida era se a Intel ia ficar parada ou iria lançar outro conjunto de instruções para invalidar a estratégia da AMD. Mas para surpresa geral, em 2004, a Intel lançou o primeiro Pentium 4 com extensão 64 bits, que usava as mesmas extensões da AMD!

A AMD chama suas extensões de tecnologia AMD64 enquanto que a Intel chama as suas de EM64T (Extended Memory 64 Technology). A Microsoft e outros desenvolvedores se referem às mesmas extensões como x64, principalmente para diferenciá-las da arquitetura IA-64, que é completamente diferente.


Diferenças entre os processadores AMD64 x EM64T

De um modo geral, podemos descrever um processador de 64 bits como um processador capaz de endereçar 64 bits de espaço “virtual” de memória podendo armazenar dados em um formato de 64 bits e realizar operações aritméticas com operandos de 64 bits. Além disso, um processador de 64 bits possui registros “genéricos” (general purpose register - GPR), e unidades (ALU) com tamanho de 64 bits.

O Itanium possui todas estas características o que, por definição, coloca-o na categoria de um processador de 64 bits. A discussão se as extensões AMD64 e EM64T são realmente processadores de 64 bits pode ser confusa para alguns, pois a Intel chama sua arquitetura de "Extended Memory 64 Technology”, que se sabe ser apenas uma extensão do conjunto de instruções da arquitetura IA-32. Enfim, estes processadores são realmente de 64 bits? Se a visão do processamento de 64 bits corresponder aos elementos citados anteriormente, então podemos aceitar sem problemas um sim como resposta. Quando estes processadores operam no modo 64 bits, o endereçamento é de 64 bits, os registros genéricos GPRs são de 64 bits e todas as unidades ALU são capazes de processar dados de 64 bits. É bom notar que, embora as arquiteturas IA-64, EM64T e AMD64 sejam todas de 64 bits, elas não são compatíveis!!

As extensões de 64 bits usadas pela AMD e Intel são virtualmente idênticas (com exceção de umas poucas instruções como 3Dnow! da AMD), e não devem apresentar muitos problemas de compatibilidade nos programas. Programas escritos e compilados para um, geralmente rodarão corretamente no outro. Como a arquitetura IA-64 utiliza um conjunto de instruções completamente diferente dos estendidos, os programas de 64 bits escritos para o Itanium não rodarão nos processadores estendidos, e vice-versa.

Apenas duas instruções foram identificadas em uma versão da arquitetura AMD64 que não aparecem na arquitetura EM64T, como informa Tom Halfhill, editor chefe da MicroProcessor Report (http://www.mdronline.com/mpr_public/about.asp). A AMD64 utiliza duas instruções para melhorar a execução multi-tarefas entre programas (e outras atribuições). Quando um usuário muda de um programa para outro, o sistema operacional armazena dados temporariamente em certas “áreas” do processador. Estes dados são recarregados quando o usuário volta para o programa anterior. Estas duas instruções extras permitem que os dados sejam armazenados (ou lidos) em grupos e não como elementos individuais. Segundo Halfhil, isto melhora muito pouco o desempenho geral do sistema.

A migração para o endereçamento de 64 bits aumenta o espaço de memória exponencialmente. O pico teórico de endereçamento em 64 bits é de 16 EB (exabytes(1)), que é considerado um número extremamente grande. Na prática, o processador AMD64 permite um endereçamento físico de até 40 bits, ou 1 TB (terabyte), e de até 48 bits, ou 256 TB de endereçamento virtual. Já dá para perceber que estes valores só terão algum sentido válido se o sistema tiver instalado estes números exorbitantes de memória física!

Um outro problema com a arquitetura IA-32 é o número de registradores genéricos GPRs (General-purpose-registers) disponíveis. Basicamente, os registradores são “áreas” locais dentro do processador onde os programas podem armazenar dados com acesso super rápido. Os dados armazenados nos registradores são rapidamente acessíveis para reutilização, sendo mais rápidos que caches em chips. A arquitetura IA-32 só fornece 8 registradores GPRs, e o que, geralmente, é considerado um número pequeno. Só para comparação, a arquitetura do processador PowerPC 604 (RISC) tem 32 registradores GPRs. Sem um número suficiente de registradores para tarefas, os compiladores para a IA-32 acabam gastando mais tempo montando códigos direcionados a espalhar os dados na memória para permitir que os dados certos estejam disponíveis para uma determinada operação. Este procedimento acaba criando um overhead que diminui o desempenho do processamento.
Para aliviar este gargalo, as extensões AMD64 e EM64T incluem mais 8 registradores GPRs totalizando 16, e não estão limitados ao tamanho de 32 bits - todos os 16 podem armazenar dados com 64 bits. Além destes novos registradores, as extensões 64 também incluem 8 novos registradores SSE/SSE2 (2) de 128 bits (totalizando 16).

O ganho de desempenho com os 16 registradores GPRs disponíveis irá variar dependendo da complexidade do código em execução. Programas que requerem um processamento mais intenso com loops profundos, como na maioria dos programas científicos, irão experimentar níveis mais altos de uso dos registradores do que os algoritmos mais simples utilizados pela maioria dos programas. Isto significa que programas de 64 bits podem não apresentar vantagem de desempenho sobre as mesmas versões de 32 bits.

A FPU (Floating Point Unit) x87 da arquitetura IA-32 sempre foi considerada como sendo um ponto fraco das arquiteturas x86 se comparada ao design da arquitetura RISC. O conjunto de instruções SSE2 (2) substituiu o modelo do x87 por um mais moderno, mas na prática, as extensões 64 rodando no modo 64 bits produzirão resultados de ponto flutuante como a maioria das CPUs RISC.

Com a migração para 64 bits (e a eliminação de funcionalidades como MMX, 3DNow! e da FPU x87), os programas na plataforma MS-Windows que tiverem trechos de código assembler em linha na codificação final não irão rodar no Windows x64. Isto significa que estes programas, incluindo jogos, com estes tipos de segmentos de código inline poderão ter que sacrificar estas otimizações quando portados para 64 bits.
É importante notar que as operações nativas destas extensões AMD64 e EM64T requerem não apenas um processador com suporte 64 bits, mas também um chipset, BIOS, sistema operacional e drivers compatíveis (64 bits).

 
avançar >>
         
 
    página principal
 
Núcleo de Computação Eletrônica
Universidade Federal do Rio de Janeiro
Prédio do Centro de Ciências Matemáticas e da Natureza Bloco C
Caixa Postal: 2324 - CEP: 20.010-974
Cidade Universitária - Ilha do Fundão, Rio de Janeiro - RJ Tel: 2598-3333