Itanium e o x86-64

A primeira tentativa de criar um sucessor de 64 bits para a plataforma x86 veio da Intel, que em 2001 lançou o Itanium, um processador de 64 bits destinado a servidores. O Itanium quebrou a compatibilidade com a família x86, passando a utilizar o IA-64, um novo conjunto de instruções, desenvolvido a partir do zero. O plano inicial era popularizar a arquitetura primeiro nos servidores (onde os benefícios de um processador de 64 bits são mais evidentes) e, em seguida, lançar também versões destinadas a desktops.

O problema com o Itanium (além do fato de o processador ser muito caro) era que não existiam softwares capazes de se beneficiar da nova plataforma. Ele incluía um sistema de emulação, que permitia rodar softwares de 32 bits, mas neste caso o desempenho era muito ruim, o que eliminou qualquer possibilidade do uso em larga escala nos desktops.

As duas versões iniciais do Itanium (com o core Merced, produzido usando uma técnica de 180 nanômetros) operavam a 733 e 800 MHz. Elas foram seguidas pelas diferentes versões do Itanium 2 single-core (McKinley, Madison, Deerfield e Fanwood), que foram vendidas em versões de 900 MHz a 1.67 GHz e também pelo Montecito, que foi uma versão dual-core, com 12 MB de cache L2, produzido usando uma técnica de 90 nm.

Itanium 2

Embora tenha obtido algum sucesso no ramo dos servidores, o Itanium logo se revelou um beco sem saída, devido à estagnação do desenvolvimento dos chips e da popularização dos processadores dual-core e quad-core produzidos usando técnicas mais avançadas. Mesmo para os adeptos do novo conjunto de instruções, fazia pouco sentido pagar caro por um Itanium 2, se um Core 2 Quad era capaz de oferecer um desempenho consideravelmente superior a um preço mais baixo.

Segundo o Gartner, foram vendidos apenas 55 mil servidores com o Itanium em 2007 (contra os vários milhões de servidores x86 vendidos anualmente) e em 2009 as vendas já haviam caído ainda mais.

Em fevereiro de 2010 a Intel lançou o Itanium com core Tukwila (usado na família 9300), que herdou várias características dos processadores da família Core, incluindo o controlador de memória integrado, barramento PQI, suporte a Hyper-Threading e adotou o uso de quatro núcleos. O Tukwila foi originalmente anunciado em 2007, mas o lançamento foi sucessivamente adiado, resultando em um atraso de quase dois anos. Um reflexo disso é o fato de ele ser ainda fabricado usando uma técnica de produção de 65 nm, obsoleta em relação aos Core 2 baseados no Penryn e ao Core i7, que já são produzidos usando a técnica de 45 nm.

Embora a Intel ainda mantenha uma equipe trabalhando no desenvolvimento de novas versões do Itanium e publicamente defenda os méritos da plataforma, o futuro do Itanium é incerto, já que o uso de técnicas obsoletas de fabricação (consequência do pequeno volume de vendas) limita o clock dos chips e anula qualquer potencial benefício da arquitetura. A menos que algo muito surpreendente aconteça, a tendência é que o Itanium continue definhando até ser finalmente descontinuado, assumindo seu lugar no rodapé das páginas da história.

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 e 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:

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, 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 de 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 se refere apenas ao uso de memória swap, mas indica o volume total de memória que o processador é capaz de endereçar, incluindo não somente 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.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X