X86-84 (AMD64) - Hardware.com.br X86-84 (AMD64) - Hardware.com.br
Home > Livros > Hardware, o Guia Definitivo > Capítulo 2: Processadores > Athlon 64 > Desenvolvendo um sucessor
Ao invés de repetir o mesmo erro da Intel, lançando uma plataforma completamente nova, incompatível com os softwares atuais, a AMD decidiu desenvolver um projeto mais simples, que adicionasse 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 um processador 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.
Novos registradores x86-64
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, de forma que o processador pode inclusive rodar aplicativos de 32 bits dentro de um sistema operacional de 64 bits, assim como era possível rodar aplicativos DOS ou Windows 3.x (de 16 bits) dentro do Windows 98 (que já era um sistema de 32 bits).
Ao utilizar um processador Athlon 64 ou um Intel equipado com o EM64T, existem 3 possibilidades.
A primeira é continuar usando as versões de 32 bits do Windows XP, Vista ou Linux, utilizando apenas aplicativos de 32 bits. Neste modo o processador se beneficia do controlador de memória integrado (no caso dos AMD) e outras melhorias na arquitetura, mas não utiliza os novos registradores, nem é capaz de endereçar mais do que 4 GB de memória nativamente.
A segunda possibilidade é utilizar um sistema operacional de 64 bits, como as versões de 64 bits do XP, Vista e de diversas distribuições Linux. 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.
A grande dificuldade em utilizar um sistema de 64 bits é encontrar versões nativas de todos os aplicativos. Chegamos então à terceira possibilidade, que é rodar um sistema de 64 bits, mas utilizar o modo de compatibilidade para executar aplicativos de 32 bits quando necessário. Neste modo, o sistema operacional precisa de mais memória, pois acaba tendo que manter carregadas muitas bibliotecas e componentes duplicados, mas o desempenho do processador não é prejudicado.
Como vimos, os aplicativos de 32 bits podem utilizar apenas 4 GB de memória (menos na prática, devido à limitações por parte dos sistemas operacionais). Um efeito colateral interessante é que, em um PC com 8 GB de memória, por exemplo, os aplicativos de 32 bits enxergarão e utilizarão apenas os primeiros 4 GB. A memória adicional poderá ser usada pelo sistema operacional e aplicativos de 64 bits, mas não ajudará muito em casos em que os aplicativos de 32 bits sejam os aplicativos principais.
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 ou gambiarras 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 talvez mais uma década, 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.
Esta tabela, divulgada pela AMD, mostra os diferentes modos de operação suportados. Note que, além dos três modos que citei (64-Bit mode, que corresponde ao modo de 64 bits nativo; Compatibility Mode, onde são usados aplicativos de 32 bits, sob um sistema operacional de 64 bits e Protected Mode, onde são executados um sistema operacional e aplicativos de 32 bits) existe suporte também ao modo Virtual-8086 e ao Real Mode, que são os modos de legado, também suportados pelos processadores atuais. Neles o processador executa aplicativos de 16 bits, escritos para o DOS ou Windows 3.x:
Modos de operação dos processadores x86-64
Tenha em mente que a migração para os aplicativos de 64 bits é similar à migração dos sistemas operacionais de 16 bits (DOS e Windows 3.x) para os sistemas de 32 bits que ocorreu a partir de 1995. Ela acontecerá de maneira gradual, de forma que daqui a 10 anos ainda estaremos rodando alguns aplicativos de 32, ou mesmo de 16 bits, utilizando o modo de compatibilidade.