Arquitetura de 64 bits da AMD (x86-64)
Por Ricardo Zelenovsky e Alexandre Mendonça em 09 de julho de 2001
Introdução
Continuando o estudo dos artigos anteriores, neste artigo exporemos a arquitetura de 64 bits da AMD. Ao longo dos últimos quatro meses, vimos o surgimento dos computadores, dos microcomputadores e a consolidação dos seus princípios fundamentais. Em seguida, estudamos como esses princípios evoluíram para o processamento paralelo e os novos problemas que daí surgiram. De posse dessas idéias, pudemos melhor compreender a complexidade das modernas máquinas de alto desempenho. Constatamos também que o processamento paralelo não está limitado às máquinas sofisticadas, mas é empregado em diversos processadores. Mesmo nossos “velhos” PCs-Pentium fazem uso de um paralelismo, mas a nível de instrução, ou seja, executam mais de uma instrução por vez.
Agora, neste artigo e no próximo, abordaremos os processadores de 64 bits que irão impulsionar nossos próximos computadores pessoais. Os projetos da Intel e AMD são inovadores e, se as promessas forem cumpridas, em menos de um ano deverão estar nas prateleiras das lojas. Essas novas arquiteturas prometem levar o paralelismo ainda mais longe, fornecendo mecanismos para que os compiladores passem para as CPUs não só as instruções arrumadas de forma eficiente, mas principalmente como e quais podem ser executadas em paralelo.
Quando se fala de CPUs de 64 bits, é importante elucidar uma certa confusão que se faz com processadores atuais. Devemos ter claro que todos os atuais processadores, Intel ou AMD, são CPUs de 32 bits. O Pentium 4 ou o Athlon têm barramento de dados de 64 bits, porém a arquitetura da CPU é de 32 bits. Neste artigo, vamos ver o que a AMD está planejando para a sua arquitetura de 64 bits. No mês que vem, será a vez da Intel.
Arquitetura x86-64 da AMD
Iniciamos com uma pergunta: como fazer a transição das CPUs de 32 bits para 64 bits? A AMD está respondendo a esta pergunta com uma arquitetura que, além do ambiente 64 bits, promete compatibilidade com todos os programas desenvolvidos para 16 e 32 bits. O objetivo é oferecer um caminho de baixo custo para que os usuários façam essa transição de forma bastante suave. Com uma arquitetura compatível com o mundo x86, os fabricantes de placas, de software e os usuários podem gerenciar mais facilmente seus investimentos. A idéia é oferecer uma ponte segura para a transição de 32 para 64 bits. A computação de 64 bits está voltada para aplicações que têm uma grande “fome” por memória, como as grandes bases de dados, as ferramentas CAD e as simulações que, de acordo com os recursos atuais, estão limitadas pelo espaço de endereçamento de 4 GB.
Até há pouco tempo, dizia-se que as CPUs RISC ultrapassariam de forma definitiva as arquiteturas CISC. Porém, isso não aconteceu e as atuais máquinas CISC se equiparam às RISC, em termos de operações com inteiros, e já diminuíram bastante desvantagem que tinham em operações com ponto-flutuante. Por isso, afirma a AMD, os próximos ganhos de desempenho terão mais a ver com as técnicas de implementação (ex: paralelismo) do que com o conjunto de instruções: RISC, CISC-64 ou VLIW. Na verdade, há um certo abuso com esses nomes, pois as atuais CPUs x86 só têm uma casca CISC, sendo seu núcleo formado por máquinas RISC.
A AMD está denominando sua nova arquitetura de “x86-64” e ela será iniciada com uma família de processadores que tem o nome código “Hammer”. As promessas apontam para a comercialização ainda no final deste ano. A estratégia de 64 bits da AMD é a extensão das atuais CPUs x86 para trabalharem em 64 bits, com a introdução do chamado Modo Longo. Essa solução é segura pois já foi empregada por ocasião da transição de 16 bits (CPUs 8088 e 286) para 32 bits (CPUs 386 e diante). Desde há muito tempo, as CPUs de 32 bits operam em dois modos. Quando em modo real, elas ficam iguais ao antigo 8088, porém, quando em modo protegido, elas oferecem recursos de 32 bits, junto com gerenciadores de tarefas e de memória. A arquitetura x86-64 oferece um novo modo denominado “Modo Longo”, em inglês “long mode”, que serve para colocar a CPU operando a 64 bits. Quando em Modo Longo, além dos recursos de 64 bits, são oferecidos registradores estendidos para 64 bits e, além disso, novos registradores foram adicionados. Passemos ao estudo desse novo modo.
Modos de Operação
O Modo Longo é ativado através de um bit de controle chamado LMA, do inglês “Long Mode Active”. Quando o LMA estiver desativado, o processador operará no modo padrão x86 e será compatível com os sistemas operacionais e aplicativos de 16 e 32 bits, ou seja, será compatível com tudo que existe nos dias de hoje. Quando o LMA for ativado (Modo Longo), a extensão de 64 bits estará habilitada, oferecendo uma nova CPU de 64 bits. O Modo Longo é ainda dividido em dois submodos: o Modo 64-bits e o Modo Compatível. Esses dois submodos são controlados pelos bits D e L, presentes no descritor apontado pelo registrador CS (Segmento de Código). O Modo Compatível é interessante porque permite que, a nível de programa, se rodem aplicativos de 16 ou 32 bits dentro do Modo 64-bits. É algo semelhante ao modo virtual 86 dos processadores 386. A Figura 1 apresenta um quadro explicativo desses modos.
clique para ampliar
Figura 1: Modos de operação da família x86-64.O antigo modo x86 (32 ou 16 bits) é denominado Modo Legal (LMA=0). Quando nesse modo, as CPUs x86-64 podem trabalhar com dados de 16 ou 32 bits. Note que, quando nesse modo, o estado do bit CS.L não tem significado, ou seja, ele é um “don’t care”.
Quando colocado em Modo Longo 64-bits (LMA=1, CS.L=1 e CS.D=0), o tamanho padrão do operando é de 32 bits e o tamanho padrão para o endereçamento é de 64 bits. Com o uso de prefixos de instrução, o tamanho do operando pode ser alterado para 64 ou 16 bits e o tamanho do endereço para 32 bits.
Se colocado no Modo Longo Compatível (LMA=1 e CS.L=0), passa a existir a compatibilidade binária com as aplicações escritas em 16 e 32 bits x86. Isso é interessante, pois um sistema operacional em Modo Longo pode rodar os atuais programas de 16 e 32 bits apenas colocando em zero o bit CS.L do descritor apontado pelo segmento de código desses aplicativos. No submodo Compatível, o bit CS.D continua a selecionar entre os modos de 16 e 32 bits. Deve ainda ser notado que, quando o processador está no Modo Legal, o estado do bit CS.L não tem significado, ou seja, é um “don’t care”. A Figura 2 apresenta os detalhes de programação dessa nova arquitetura.
clique para ampliar
Figura 2: Características de programação da arquitetura x86-64 da AMD.Detalhes do Modo Longo
Vamos agora dar uma olhada mais cuidadosa no Modo Longo. Como já foi visto, o Modo Longo permite o uso dos recursos de 64 bits, ao mesmo tempo que oferece o submodo Compatível para rodar aplicações de 16 ou 32 bits. Esse modo traz uma grande quantidade de recursos, que estão listados a seguir:
- Endereçamento virtual de 64 bits;
- Registradores estendidos para 64 bits;
- Adição de 8 registradores (R8-R15);
- Adição de 8 registradores para SIMD (XMM8-XMM15);
- Ponteiro de instruções com 64 bits;
- Modo de endereçamento absoluto (“flat”).
A adição de novos registradores para operações SIMD torna disponível um total de 16 registradores multimídia. Os novos registradores de finalidade geral vêm a diminuir um pouco uma das deficiências da arquitetura x86, que é a pequena quantidade de registradores.
Para definir sua lógica de registradores, a AMD simplesmente estendeu o esquema usado para os registradores de 16 e 32 bits. Assim, continua sendo possível acessar de forma fracionada os registradores herdados do antigo 8086. Por exemplo, o registrador RAX pode ser acessado como um único bloco de 64 bits, mas também é possível acessar somente sua metade inferior através do registrador EAX. Além disso, também está acessível uma porção de 16 bits (AX) e duas porções de 8 bits (AH e AL). É claro que AX é formado pela justaposição dos registradores AH com AL. Assim é mantida toda compatibilidade com os antigos ambientes x86. A Figura 3 ilustra esses possíveis fracionamentos.
clique para ampliar
Figura 3: Esquema de fracionamento dos registradores herdados da arquitetura x86-64.Os avanços da tecnologia de integração e o aumento de velocidade do relógio deverão possibilitar um maior desempenho destas CPUs, mesmo quando operando no Modo Legal. Com essa arquitetura, a AMD espera oferecer um caminho tranqüilo para a transição de 32 para 64 bits. No passado, uma transição não tão tranqüila, devido ao novo modelo de memória, permitiu uma evolução dos 16 bits (8086 e 286) para os 32 bits (386 em diante). A AMD aposta que, ao invés de mudar completamente a arquitetura, o sucesso estará com quem mantiver a compatibilidade.
Originalmente em http://www.clubedohardware.com.br/artigos/376
© 1996-2008, Clube do Hardware. Todos os direitos reservados.
É expressamente proibida a reprodução total ou parcial do conteúdo deste site e dos textos disponíveis, seja através de mídia eletrônica, impressa, ou qualquer outra forma de distribuição. Os infratores serão indiciados e punidos com base na lei nº 9.610 de 19/02/1998.
Não nos responsabilizamos por danos materiais e/ou morais de qualquer espécie promovidos pelo uso das informações contidas no Clube do Hardware.