Com isso, chegamos ao x86-64, que foi a resposta da AMD. Em vez de repetir o mesmo erro da Intel, lançando uma plataforma incompatível com os softwares já existentes, a AMD decidiu desenvolver um projeto mais simples, adicionando o suporte a instruções de 64 bits no Athlon (incluindo novos registradores, suporte a endereços de memória de 64 bits, etc.) sem entretanto quebrar a compatibilidade com os softwares de 32 bits, nem prejudicar o desempenho do processador ao executá-los.
Com isso chegaram a uma arquitetura de processadores de 64 bits que desfruta de um número maior de registradores e maior capacidade de endereçamento de memória, mas que é capaz também de rodar aplicativos de 32 bits nativamente, sem perda de desempenho.
Este slide de apresentação da AMD mostra os novos registradores adicionados. Os 8 registradores x86 foram expandidos de 32 para 64 bits e foram adicionados 8 novos registradores de 64 bits, o que resultou em um espaço de armazenamento 4 vezes maior. Foram adicionados ainda 8 novos registradores para instruções SSE ou SSE2, mas neste caso não houve expansão, já que o SSE utiliza registradores de 128 bits:
No modo “legacy”, o processador funciona como um processador x86 comum, executando instruções de 32 bits e utilizando apenas os registradores padrão. Ao mudar para o modo “long”, o processador tem acesso a 16 registradores de 64 bits cada um e passa a suportar as instruções e endereços de memória de 64 bits.
O chaveamento entre os dois modos é feito de maneira muito rápida, o que permite ao processador executar aplicativos de 32 bits dentro de um sistema operacional de 64 bits sem um grande overhead. Essa é uma função fundamental, pois permite usar softwares de 32 bits dentro das versões de 64 bits do Windows e Linux de forma suave, com o sistema precisando apenas manter carregadas algumas bibliotecas de compatibilidade.
O conjunto de instruções da AMD foi batizado de x86-64 (e posteriormente renomeado para AMD64) e acabou sendo adotado também pela Intel, na forma do EM64T, um conjunto compatível, incluído sem muito alarde a partir do Pentium 4 com core Prescott. Pela primeira vez na história, a AMD ditou o novo padrão e a Intel se viu obrigada a segui-lo.
O grande mérito do x86-84 foi o e possibilitar uma migração suave, permitindo que os sistemas de 32 bits continuassem sendo utilizados nos primeiros anos, até que as limitações no acesso à memória começassem a se tornar um problema.
Ao usar as versões de 32 bits do Windows ou Linux em par com aplicativos de 32 bits, o processador não utiliza os novos registradores ou outras melhorias incluídas no novo conjunto de instruções, mas isso tem um efeito pequeno sobre o desempenho. A principal limitação é que operando em modo de 32 bits o processador não é capaz de endereçar mais do que 4 GB de memória, o que limita o uso às configurações mais básicas.
A segunda possibilidade é utilizar um sistema operacional de 64 bits. Neste caso, você tem um pequeno ganho de desempenho devido ao uso dos novos registradores e o processador passa a suportar mais de 4 GB de memória RAM. A maior parte dos aplicativos não exibe grandes ganhos de desempenho ao serem recompilados para rodarem em modo 64 bits, mas alguns (sobretudo bancos de dados) podem obter 15 ou mesmo 20% de ganho de desempenho em alguns casos.
Embora no início tenham existido muitos problemas (sobretudo em relação aos drivers), as versões de 64 bits das distribuições Linux, assim como do Windows Vista e Windows 7 já estão bastante maduras, o que torna a migração bastante suave, desde que você não tenha periféricos antigos cujos drivers existam apenas em versão de 32 bits.
No caso dos aplicativos, a solução é mais simples, já que é possível executar aplicativos de 32 bits lado a lado com os aplicativos de 64 bits. Existe um certo overhead em executar aplicativos de 32 bits sobre um sistema de 64 bits, pois o sistema precisa de mais memória para manter carregadas as bibliotecas de legado, mas o desempenho do processador não é prejudicado. Existem casos de incompatibilidades com aplicativos específicos, mas eles estão se tornando cada vez mais raros.
Como vimos, os aplicativos de 32 bits podem utilizar apenas 4 GB de memória (que na prática acabam se transformando em apenas 3 ou 3.5 GB devido aos endereços reservados aos dispositivos). Um efeito colateral interessante é que, em um PC com 8 GB de memória, por exemplo, os aplicativos de 32 bits enxergam e utilizam apenas os primeiros 4 GB. A memória adicional pode ser usada pelo sistema operacional e aplicativos de 64 bits, mas não ajuda muito em casos em que os aplicativos de 32 bits sejam os aplicativos principais.
Com relação à memória, os processadores AMD64 são capazes de endereçar até 1 terabyte de memória física, o que corresponde a 40 bits de endereços. Os 64 bits completos não são usados por questões relacionadas ao desempenho, já que não existem módulos e placas que permitam utilizar tanta memória atualmente.
Apesar de o AMD64 reservar “apenas” 40 bits para o endereçamento da memória física, estão disponíveis 48 bits de endereçamento para o virtual address space, o que permite endereçar até 256 terabytes. Esse limite não tem apenas a ver com o uso de memória swap, mas indica o volume total de memória que o processador é capaz de endereçar, incluindo não apenas a memória RAM, mas também a memória da placa de vídeo (e outros dispositivos) e está relacionado também com o suporte a arquivos grandes, como bancos de dados. Você poderia imaginar esses dois limites em ação no caso de um grande servidor, com muita memória RAM e diversos HDs em RAID, que armazenam um grande banco de dados.
Quando criamos um array RAID, o sistema passa a enxergar um único e grande disco, ao invés de vários HDs separados, de forma que podemos usar todo o espaço somado para armazenar um único e gigantesco arquivo. Com o sistema de endereçamento do AMD64, o nosso hipotético servidor poderia ter até 1 TB de memória RAM, e o sistema operacional seria capaz de gerenciar um banco de dados de até 256 TB espalhado pelos diversos HDs, sem que fosse necessário recorrer a truques para aumentar o espaço de endereçamento, como é necessário ao acessar mais do que 4 GB de RAM, ou gerenciar arquivos maiores do que 4 GB em um processador de 32 bits.
Quando esse limite se tornar um empecilho, daqui a mais alguns anos, novas revisões dos processadores podem estender os limites de endereçamento para 56 ou mesmo 64 bits completos, permitindo gerenciar volumes virtualmente ilimitados de endereços.
Deixe seu comentário