A barreira dos 3 GB

Novidades, reclamações e ajuda aqui!!!
Post Reply
Nilton

A barreira dos 3 GB

Post by Nilton »

De uma forma geral, não é recomendável utilizar mais de 3 GB de RAM ao utilizar um sistema operacional de 32 bits. Ao utilizar 4 GB, a maior parte do último GB acaba não sendo utilizado, tornando-o um grande desperdício de dinheiro. Entenda por quê.Carlos E. Morimoto
25/06/2007

Assim como no caso dos HDs, existiram diversos limites com relação ao endereçamento da memória RAM durante a história dos micros PCs, causados por limitações do sistema operacional, limitações do chipset e limitações dos processadores. Mesmo os processadores e sistemas operacionais de 64 bits possuem limites com relação à quantidade máxima de memória que pode ser endereçada, embora muito mais elevados. As versões originais do Athlon 64 são capazes de endereçar até 1 terabyte de memória RAM (independentemente da placa-mãe usada) e este limite pode ser expandido no futuro. O grande problema são os processadores e sistemas operacionais de 32 bits.

Tudo começou com o limite de 640 KB de memória do processador 8088, usado nos primeiros PCs. Na verdade, o 8088 utilizava um total de 20 bits para o endereçamento da memória, divididos em 16 bits "nativos", que permitiam endereçar páginas de 64 KB e mais 4 bits adicionais, que permitiam endereçar 16 páginas, totalizando 1 MB.

Por decisão da equipe de desenvolvimento, apenas os primeiros 640 KB (chamados de memória convencional) ficavam disponíveis para uso do sistema operacional e aplicativos. Os 384 MB restantes (chamados de memória extendida) eram usados para endereçar a memória presente em outros dispositivos, como o BIOS da placa mãe e a memória da placa de vídeo.

Na época dos primeiros PCs, a memória RAM era muito cara, de forma que não era comum o uso de mais do que 256 KB, mas, mesmo que fosse utilizado 1 MB completo, apenas os primeiros 640 KB ficariam disponíveis. Os 384 KB adicionais podiam ser utilizados para fazer cache do BIOS e da memória da placa de vídeo (o que melhorava o desempenho) mas não para uso geral.

Para manter compatibilidade com os aplicativos antigos, mesmo os processadores atuais são capazes de operar em modo real, onde simulam o funcionamento de um 8088, acessando apenas os primeiros 640 KB de memória. É dentro deste limite que rodam o MS-DOS e aplicativos antigos. Quando o Windows, Linux ou qualquer sistema operacional é carregado, o processador passa para o modo protegido, onde é capaz de acessar toda a memória disponível.

Desde o 386, todos os processadores utilizam 32 bits para o endereçamento da memória, o que permite endereçar até 4 GB. Este 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 topo de linha, usando 4 GB de memória RAM e duas placas de vídeo GeForce 7950 GX2 em SLI. A 7950 GX2 possui nada menos do que 1 GB de memória RAM, de forma que duas placas totalizam 2 GB. Como a memória das placas de vídeo consomem 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), de forma que usar 4 GB acabam sendo um desperdício de dinheiro.

Isso ocorre não apenas ao utilizar um processador de 32 bits, mas também ao utilizar 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.

De uma forma geral, não é recomendável utilizar mais do que 3 GB ao utilizar um sistema operacional de 32 bits, pois é justamente a área entre os 3 e 4 GB do Virtual Address Space que são utilizadas 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 invadam áreas reservadas a outros dispositivos simplesmente não sejam vistas pelo sistema.

Você pode verificar as áreas de memória reservadas através do gerenciador de dispositivos do Windows, usando a opção Exibir > Recursos por tipo > Memória:
index_html_2b9d2874
Os endereços fornecidos aqui estão em hexa, mas você pode usar a própria calculadora do Windows para convertê-los em números decimais. No caso, por exemplo, tenho a placa de vídeo utilizando os endereços C8000000 a CFFFFFFF, que correspondem aos bytes de 3.355.443.200 a 3.489.660.927 e uma série de dispositivos a partir do "Recursos da placa mãe" que ocupam praticamente todos os endereços do byte 3.758.096.384 ao 4.294.967.295 (que corresponde justamente ao final da área de 4 GB endereçada pelo sistema). Se instalasse uma placa 3D offboard, com 256 MB, ela ocuparia os bytes de 3.221.225.472 a 3.489.660.927, que correspondem justamente aos 256 MB da placa.

Se você se contentar em utilizar uma placa de vídeo low-end, pode ficar com até 3.5 GB de endereços disponíveis, dependendo do sistema operacional usado. No caso das versões de 32 bits do Vista, por exemplo, o limite máximo (segundo o http://support.microsoft.com/kb/929605) é de 3.12 GB. Ou seja, na maioria dos casos, não vale à pena pagar por mais 4 GB de memória, já que apenas uma pequena parte do último GB seria utilizado. Melhor se contentar com 3 GB.

Mesmo ao utilizar um processador de 64 bits, combinado com um sistema operacional de 64 bits, um grande volume de endereços entre os 3 e 4 GB de memória continuam reservados, de forma a manter compatibilidade com os programas de 32 bits, fazendo com que, novamente, pelo menos 512 MB entre os 3 e 4 GB da memória não sejam usados. A vantagem neste caso é que você pode instalar mais de 4 GB de memória. Com 8 GB, por exemplo, você ficaria com de 7 a 7.5 GB utilizáveis.

Algumas placas de 64 bits oferecem a opção "Memory Hole Remapping" (ou similar) no setup. Ao ativar esta opção, as áreas de memória reservadas aos dispositivos é movida para uma área mais alta do Virtual Address Space (que nos processadores de 64 bits é muito maior), liberando a maior parte da memória antes inacessível por causa eles.

Outras placas suportam o Memory Hoisting, um recurso que segue outro princípio, deixando os endereços dos dispositivos onde estão e remapeando os trechos de memória subscritos por eles para áreas mais altas do espectro de endereços, permitindo que o sistema tenha acesso a elas.

Uma observação é que estas duas opções causam muitos problemas de compatibilidade com aplicativos, por isso você só deve utilizá-las caso realmente faça questão de ter acesso à toda a memória instalada.

Além destas limitações relacionadas ao Virtual Address Space, existem outros limites de memória, impostos pelo chipset ou por limitações do sistema operacional usado.

A maioria dos chipsets antigos, para placas soquete 7, por exemplo, eram capazes de endereçar apenas 128 ou 256 MB de memória RAM. O chipset Intel i815, usado em uma grande parte das placas para processadores Pentium III e Celeron era capaz de endereçar apenas 512 MB, enquanto o 915GL (para o Pentium 4) era capaz de endereçar 2 GB. Até pouco tempo atrás, o suporte a 4 GB ou mais de memória estava restrito a alguns chipsets destinados a servidores.

O Windows 95/98/SE é capaz de endereçar até 512 MB de memória RAM. Programas como o cacheman permitem utilizar estas versões antigas do Windows em PCs com mais de 512 MB de RAM, mas o desempenho acaba sendo pior do que com apenas 512.

O Windows XP e as versões de 32 bits do Vista são capazes de endereçar 4 GB, de forma que o limite fica por conta do Virtual Address Space. O maior problema são as versões "populares" do Windows, onde o limite é artificialmente limitado, de forma a limitar seu uso aos PCs de baixo custo. O XP Starter possui um limite de 256 MB, enquanto o Vista Starter está limitado a 1 GB.

Nas versões de 64 bits do Vista, os limites são estendidos, mas ainda existem limitações. O Vista Home Basic esta limitado a 8 GB, o Home Premium a 16 GB e as demais versões (Business, Enterprise e Ultimate) a 128 GB.

A memória swap não entra na conta pois ela é acessada através de um componente especializado incluído no processador, chamado de MMU (Memory Management Unit) que permite justamente que dados armazenados na memória RAM física sejam movidos para a memória swap (que é na verdade um arquivo ou partição no HD), conforme necessário.

Você pode usar quanta memória swap quiser. Poderia usar um arquivo de swap de 10 GB, por exemplo. A principal questão é que o uso da memória swap é muito limitado em um PC atual, já que ela é muito lenta.
Post Reply