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). |