Entendendo a migração para os 64 bits, e por que ela demorou tanto

Entendendo a migração para os 64 bits, e por que ela demorou tanto

Nos PCs, a migração dos processadores de 16 bits para os 32 bits ocorreu ainda em 1985, com o lançamento do 386. Demorou uma década até que o software acompanhasse a evolução, mas com o lançamento do Windows 95 todos rapidamente migraram para os 32 bits e nunca mais olharam para trás.

Entretanto, em pleno ano de 2011, a migração para os 64 bits ainda está em curso, com muitos usuários ainda felizes com seus sistemas operacionais de 32 bits e muitas máquinas de fabricação recente (como no caso da maioria dos netbooks com o Atom) ainda limitadas aos 32 bits, sem possibilidade de atualização. Isso significa que daqui a dois ou três anos (senão mais), ainda teremos um grande parque de máquinas rodando sistemas operacionais de 32 bits. Considerando que os processadores x86-64 estão entre nós desde 2005, esta é uma migração que está demorando bem mais do que o previsto. Vamos tentar entender porquê.

Embora o uso de registradores de 64 bits não resulte em um ganho considerável de desempenho direto na maioria das situações, ele possibilita uma melhoria importante: o acesso a mais de 4 GB de memória RAM, que são um hard-limit para processadores de 32 bits. Mesmo que 4 GB pareçam ser o suficiente para você, na prática nem mesmo eles ficam disponíveis, devido à forma como os endereços de memória são utilizados.

Desde o 386, todos os processadores utilizam 32 bits para o endereçamento da memória, o que permite endereçar até 4 GB. Esse limite é chamado de VAS (Virtual Address Space) e indica justamente o total de memória que o sistema é 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. O problema reside justamente aí.

Imagine que você resolvesse montar um PC com 4 GB de memória RAM e duas placas de vídeo com 1 GB de memória RAM em CrossFire ou SLI. Como a memória das placas de vídeo consome espaço do Virtual Address Space, o sistema seria capaz de acessar apenas os primeiros 2 GB da memória (um pouco menos na prática, já que mais alguns blocos serão reservados a outros dispositivos). Isso ocorre não apenas ao utilizar um processador de 32 bits, mas também ao usar um processador de 64 bits em conjunto com um sistema operacional de 32 bits, incluindo o Windows XP e as versões de 32 bits do Vista e Windows 7.

De uma forma geral, não é recomendável utilizar mais do que 3 GB ao usar um sistema operacional de 32 bits, pois é justamente a área entre os 3 e 4 GB do Virtual Address Space que é utilizada pelo processador para endereçar a memória de dispositivos diversos. Assim como dois corpos não podem ocupar o mesmo espaço ao mesmo tempo, dois dispositivos não podem compartilhar a mesma área de endereços, o que faz com que porções da memória RAM que invadem áreas reservadas a outros dispositivos simplesmente não sejam vistas pelo sistema.

Este é um problema sobretudo para quem usa o PC para jogos, já que a grande maioria dos jogos atuais precisa de 3 GB de memória ou mais para rodar adequadamente e cada vez mais placas de vídeo utilizam 1 GB de memória RAM. Já em 2007 alguns títulos começaram a esbarrar neste limite, como o Supreme Commander, e desde então a lista dos títulos só fez aumentar.

Por serem sistemas open-source, o Linux e o BSD receberam rapidamente versões de 64 bits, que rapidamente passaram a ser usadas nos servidores. A migração nos desktops demorou mais devido à demora no lançamento de versões de 64 bits de aplicativos como o Flash e o OpenOffice, mas ela também logo começou. Hoje em dia, ainda existem muitos que preferem as versões de 32 bits por um motivo ou outro, mas praticamente todas as distribuições possuem versões de 64 bits em pé de igualdade.

No caso do Windows, por outro lado, a migração demorou um pouco mais. A Microsoft se esforçou em lançar uma versão de 64 bits do Windows XP, mas ela acabou não sendo bem recebida, pois embora fosse capaz de rodar aplicativos de 32 bits lado a lado com os de 32 bits, era necessário obter drivers de 64 bits para todos os dispositivos de hardware, uma tarefa inglória. Mesmo para quem estava montando um novo PC, a tarefa não era fácil, pois muitos drivers eram instáveis, resultando em problemas e travamentos inesperados que eram muito difíceis de diagnosticar. Como consequência, a maioria dos usuários acabou ficando na versão de 32 bits, que funcionava sem grandes percalços.

A tentativa seguinte de lançar um sistema de 64 foi o Vista. No caso dele o problema foi mais embaixo, já que o sistema foi tão mal recebido que tanto a versão de 32 bits quanto a de 64 bits despertaram desconfiança. Na época, máquinas com mais de 2 GB de memória também não eram ainda muito comuns, de foma que, com exceção das máquinas onde a versão de 64 bits já vinha instalada por default, a maioria preferiu continuar nos 32 bits.

Com o Windows 7 a Microsoft finalmente acertou. Não apenas o sistema foi melhor recebido, quanto a Microsoft fez seu dever de casa em relação aos drivers, disponibilizando também versões de teste gratuitas, que permitiram que um grande volume de usuários passassem a utilizar e a reportar problemas no sistema bem antes de ele ser finalizado. Isso se combinou com o fato de os PCs começarem a vir com 4 GB ou mais de memória RAM (com cada vez mais aplicativos e jogos realmente demandando isso) e as placas de vídeo com 1 GB de RAM, o que juntou a fome com a vontade de comer.

O Windows 7 de 64 bits carece de drivers para muitos dispositivos antigos, já descontinuados a temo o suficiente para que os fabricantes não se dignassem a atualizar os drivers, mas desde 2010 ela já é a instalação mais recomendada para PCs novos, onde os problemas de compatibilidade já são bastante incomuns e o suporte a mais RAM é necessário.

Entretanto, ainda existem situações que prendem os usuários aos sistemas de 32 bits. A primeira delas é o sucesso dos netbooks, que utilizam em geral apenas 1 ou 2 GB de memória RAM e até recentemente sequer utilizavam processadores compatíveis com as instruções de 64 bits (os modelos com versões 32-bit only do Atom já citados…). A segunda é o grande parque de PCs antigos, para os quais os sistemas de 64 bits não são interessantes devido à combinação do uso de periféricos antigos (muitos dos quais possivelmente não possuem drivers de 64 bits) e do uso de pouca memória RAM, o que assim como no caso dos netbooks elimina a necessidade de usar um sistema de 64 bits em primeiro lugar.

Finalmente, temos também a questão de aplicativos de 32 bits problemáticos, que não rodam bem sobre as versões de 64 bits do Windows devido ao uso de drivers de 32 bits incorporados e outros problemas. Eles têm se tornado um problema relativamente raro, já que alguns títulos receberam atualizações e outros caíram em desuso, mas ainda são um problema para muita gente. No mundo Linux, estes problemas de compatibilidade são muito mais raros, mas por outro lado temos o problema de alguns drivers proprietários que continuam disponíveis apenas em versão de 32 bits, bem como o maior uso das distribuições de 64 bits que (assim como no Windows), as torna desvantajosas para o uso em PCs com apenas 2 ou 3 GB de memória RAM. Tudo isso conspira para fazer com que as versões de 32 bits ainda continuem entre nós por algum tempo.

Não podemos nos esquecer também dos processadores ARM, que só bem recentemente ganharam suporte de 64 bits. Não apenas praticamente todos os processadores ARM em uso são ainda de 32 bits, quanto o fato de eles serem usados em dispositivos menores faz com que a urgência em ganhar suporte a mais de 4 GB de RAM seja muito menor.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X