Memória RAM
Sexta-Feira, 10 de Agosto de 2001
Por: Carlos E. Morimoto
Se o processador é o principal
componente de qualquer computador, a memória RAM é a sua principal ferramenta de
trabalho. Desde uma calculadora xing-ling, até um grande mainframe, não existe
nenhum tipo que computador que não utilize memória RAM. O processador utiliza a
memória RAM para armazenar programas e dados que estão em uso e fica
impossibilitado de trabalhar sem ter pelo menos uma quantidade mínima dela.
Aliás, nos computadores atuais, a velocidade de acesso à memória RAM é um dos
principais determinantes da performance, daí a vital importância do uso da
memória cache.
A sigla "RAM" significa "Ramdom Access Memory" ou
"memória de acesso aleatório". Este nome é mais do que adequado, pois a
principal característica da memória RAM é a capacidade de fornecer dados
anteriormente gravados, com um tempo de resposta e uma velocidade de
transferência centenas de vezes superior à dos dispositivos de memória de massa,
como o disco rígido.
Mais uma característica marcante da memória RAM é o
fato dela ser volátil: precisa ser constantemente reenergizada para conservar os
dados gravados. Como numa calculadora, perdemos todos os dados nela armazenados
quando desligamos o micro. Se, por exemplo, você estiver escrevendo uma carta no
Word e, de repente, houver um pico de tensão e o micro reinicializar, sem lhe
dar tempo de salvar a carta no disco rígido, você perderá todo seu trabalho.
Existem claro, tipos de memória RAM não voláteis, como por exemplo as
memórias Flash, que são utilizadas nos Palm Pilots e em outros computadores de
mão, celulares, etc. O problema das memórias Flash é o preço. Enquanto escrevo,
é possível comprar um módulo de memória SDRAM de 256 MB por R$ 200, com o dólar
nas cucuias como está, isso corresponde a menos de 80 dólares, a preços de
Brasil. Isso dá pouco mais de 30 centavos por megabyte. As memória Flash já são
bem mais caras que isso, custam entre 5 e 10 dólares por megabyte, dependendo da
aplicação. Isso sem contar o fato delas serem bem mais lentas.
Na
verdade, pode ser que no futuro algum tipo de memória não volátil venha a
definitivamente substituir a memória RAM. A IBM por exemplo vem desenvolvendo as
memórias MRAM, que armazenam dados na forma de sinais magnéticos. A promessa é
que além de conservarem os dados gravados por anos a fio, elas sejam tão rápidas
e baratas quanto as memórias atuais. Normalmente as promessas dos fabricantes
são tão confiáveis quanto as promessas dos políticos em campanha, mas sempre
existe uma esperança :-)
Já que vamos continuar usando memória RAM
volátil durante mais alguns (ou vários) anos, que tal estudarmos sua história e
as tecnologias se memória disponíveis atualmente? Puxe uma cadeira e seja meu
convidado.
Preço x quantidade Antigamente, os módulos
de memória RAM custavam muito caro. Há poucos anos atrás, pagávamos mais de 40
dólares por megabyte. Em pleno início da década de 90, o preço da memória chegou
a bater a marca dos 100 dólares por megabyte.
Com a memória custando
este fortuna, é compreensível que a grande maioria dos PCs 386 e 486 viessem
equipados com apenas 8 ou mesmo 4 MB de memória, sendo que o recomendável para
rodar sistemas gráficos como o Windows 95, ou mesmo o XFree86 do Linux seriam
pelo menos 16.
Felizmente, tivemos nos últimos anos uma queda
vertiginosa no preço das memórias. Assim como os processadores evoluem,
incorporando mais transístores, operando a frequências maiores e ainda assim
custando cada vez mais baratos, com o passar do tempo os fabricantes de memória
conseguem produzir chips de memória com transístores cada vez menores. Com isto,
é possível aumentar a quantidade de memória em cada chip e o preço por megabyte
despenca.
Voltando ao ramo dos processadores, um 486 tinha apenas
1.200.000 transístores, enquanto um Athlon Thunderbird tem 37 milhões. Mesmo
assim, um Athlon custa hoje bem menos que um 486 custava na época em que era
novidade. A chave para este salto é a miniaturização dos transístores.
Na memória RAM, cada transístor representa um bit de dados. Um módulo de
memória com 64 MB é formado por cerca de 512 milhões de transístores. Conforme
os fabricantes desenvolvem novas tecnologias, passam a ser capazes de produzir
transístores menores. Com isso é possível incluir mais transístores, e
consequentemente mais memória em cada chip. Os primeiros chips de memória RAM
tinham apenas 1 Kb (um Kbit e não um Kbyte, preste atenção no B minúsculo :-),
enquanto atualmente a moda é produzir chips com 128 Mb (megabits). Juntando 8
chips temos um pente de memória com 128 MB, juntando 16 temos um módulo de 256
MB e assim por diante. Chegamos assim aos 30 centavos por megabyte.
Os
módulos de memória ainda não dão em árvore, mas estão perto disso, pelo menos em
termos de preço.
O baixo preço atual, justifica o uso de 128 ou mesmo
256 MB de memória. Alguns usuários de aplicativos mais pesados já vão mais além,
definindo 512 MB como o ideal. A quantidade e velocidade das memórias são mais
importantes que a própria velocidade do processador, principalmente para quem
costuma trabalhar com vários aplicativos abertos ao mesmo tempo, ou trabalha com
arquivos pesados, imagens, vídeo, etc..
A equação é simples. Qualquer
programa ou arquivo em uso precisa ser armazenado na memória. O processador
começa a usar a memória RAM que é razoavelmente rápida, o suficiente para que
(com a ajuda do cache) o processador possa usar todo o seu potencial. Mas, e
quando a memória RAM se esgota? Bem, o que você prefere, ver uma mensagem de
"não há memória suficiente", ou ver o aplicativo rodando, mesmo que lentamente?
Se você ficou com a segunda opção, agradeça ao engenheiro da Intel que trabalhou
para incluir o recurso de memória virtual apartir 386.
A memória virtual
é só um quebra galho. Serve para permitir que o processador simule mais memória
RAM criando um arquivo no disco rígido e armazenando nele os dados que não
couberam na memória. O problema é que o processador processa bilhões de
instruções por segundo, enquanto um HD rápido tem tempos de acesso em torno de
10 milésimos de segundo.
Como o processador não pode fazer nada se não
tiver dados para processar, precisa esperar até que o disco rígido possa lhe
entregar o trabalho a ser feito. De nada adianta ter um processador muito
rápido, se por falta de memória RAM ele é subtilizado devido ao uso de memória
virtual, ficando limitado à performance do disco rígido.
Para você ter
uma idéia do quanto a quantidade de memória RAM é importante, um simples
486DX4-100, com uma quantidade razoável de memória RAM (32 MB ou mais) é capaz
de rodar o Windows 95/98 e a maioria dos aplicativos mais rápido do que um
Pentium III de 1 GHz equipado com apenas 8 MB de memória. Afinal, o que é mais
rápido, um processador 486, ou o disco rígido usado no Pentium III? :-)
Claro que o ideal é sempre termos um sistema equilibrado; não adianta
também querer instalar 64 MB de memória RAM em um 386.
Como
funciona Os chips de memória RAM possuem uma estrutura extremamente
simples. Para cada bit 1 ou 0 a ser armazenado, temos um minúsculo capacitor;
quando o capacitor está carregado eletricamente temos um bit 1 e quando ele está
descarregado temos um bit 0. Para cada capacitor temos um transístor,
encarregado de ler o bit armazenado em seu interior e transmiti-lo ao
controlador de memória. A memória RAM é volátil justamente devido ao capacitor
perder sua carga muito rapidamente, depois de poucos milésimos de segundo.
A produção de chips de memória é similar ao de processadores: também
utilizamos um waffer de silício como base e um laser para marcá-lo. A diferença
é que os chips de memória são compostos basicamente de apenas uma estrutura
básica: o conjunto capacitor/transístor, que é repetida alguns milhões de vezes,
enquanto os processadores são formados por estruturas muito mais complexas.
Devido a esta simplicidade, um chip de memória é muito mais barato de se
produzir do que um processador. Um módulo de 128 MB tem pouco mais de 1 bilhão
de transístores, quase 40 vezes mais que um processador Pentium III Coppermine.
Apesar disso, o módulo de memória é mais barato.
Acesso a
dados Para ler e gravar dados na memória, assim como controlar todo
o trânsito de dados entre a memória e os demais componentes do micro, é usado
mais um circuito, chamado controlador de memória, que faz parte do chipset
localizado na placa mãe.
Para facilitar o acesso a dados, dividimos os
módulos de memória em linhas e colunas. Para acessar um determinado transístor
(seja para gravar ou ler dados), o controlador de memória primeiro gera o valor
RAS (Row Address Strobe), ou o número da linha da qual o transístor faz parte,
sendo gerado em seguida o valor CAS (Collum Address Strobe), que corresponde à
coluna.
Formato Os chips de memória são
frágeis placas de silício, que precisam ser encapsulados em alguma estrutura
mais resistente antes de serem transportados e encaixados na placa mãe. Assim
como temos vários tipos de encapsulamento diferentes para processadores, (SEPP e
PPGA por exemplo) temos vários formatos de módulos de memória. Inicialmente os
chips são encapsulados em módulos DIP, que os protegem e facilitam a dissipação
do calor gerado pelos chips. Estes por sua vez são soldados em placas de
circuito, formando os módulos de memória. Existem atualmente 3 tipos de módulos
de memória: os módulos SIMM de 30 vias, os módulos SIMM de 72 vias e,
finalmente, os módulos DIMM de 168 vias.
Módulos DIP
Os módulos DIP são encapsulamentos de plástico ou cerâmica, que protegem
os chips de memória, facilitam a dissipação do calor gerado durante seu
funcionamento, e tornam mais acessíveis seus terminais, facilitando o encaixe ou
a soldagem. O encapsulamento DIP também é usado em vários outros tipos de
componentes.
Em PCs antigos, principalmente XTs, 286s e os primeiros
386s, os módulos DIP eram soldados diretamente à placa mãe, ou em alguns casos,
encaixados individualmente em soquetes disponíveis na placa. Este era um sistema
antiquado, que trazia várias desvantagens, por dificultar upgrades de memória ou
a substituição de módulos com defeito. Imagine você, fazendo um upgrade de
memória numa placa como a da foto abaixo:
Módulos SIMM de 30 vias Não é só
você que não achou muito atraente a idéia de ficar catando chips de memória um a
um. Foi questão de tempo até que alguém aparecesse com uma alternativa mais
prática, capaz de tornar a instalação fácil até mesmo para usuários
inexperientes.
Os módulos de memória são pequenas placas de circuito
onde os chips DIP são soldados, que são encaixados em soquetes disponíveis na
placa mãe.
Os primeiros módulos de memória criados são chamados de
módulos SIMM, sigla que significa "Single In Line Memory Module", justamente por
que existe uma única via de contatos. Apesar de existirem contatos também na
parte de trás do módulo, eles servem apenas como uma extensão dos contatos
frontais, existindo apenas para aumentar a área de contato com o soquete.
Examinando o módulo, você verá um pequeno orifício em cada contato, que serve
justamente para unificar os dois lados.
Os primeiros módulos SIMM
possuíam 30 vias e eram capazes de transferir 8 bits por ciclo. Estes módulos
foram utilizados em micros 386 e 486, e foram fabricados em varias capacidades,
os mais comuns foram os módulos de 512 KB, 1MB e 4 MB, apesar de terem existido
módulos de até 16 MB, raros e caríssimos. (lembra-se dos 45 dólares por
megabyte? ;-)
Como tanto o 386 quanto o 486 são processadores que
acessam a memória usando palavras de 32 bits, é preciso combinar 4 módulos de 30
vias para formar cada banco de memória. Basicamente, o processador acessa os 4
módulos como se fossem um só, obtendo os 32 bits por acesso de que precisa.
Temos então que usar estes módulos em quartetos: 4 módulos ou 8 módulos,
mas nunca um número quebrado. Nos micros equipados com processadores 386SX são
necessários apenas 2 módulos, já que o 386SX acessa a memória usando palavras de
16 bits (para manter compatibilidade com os componentes de placas de 286, usados
para baratear os PCs equipados com o 386SX).
Módulo SIMM de 72 vias Apesar de
serem muito mais práticos do que os chips DIP, os módulos SIMM de 30 vias ainda
eram bastante inconvenientes, já que era preciso usar 4 módulos idênticos para
formar cada banco de memória. Quem os criou devia achar que os processadores de
8 bits eram o futuro...
Para solucionar este problema, os fabricantes
criaram um novo tipo de módulo de memória SIMM, de 32 bits, que possui 72 vias.
Esse tipo de memória foi usado em micros 486 mais modernos e tornou-se padrão em
micros Pentium, deixando de ser utilizados apenas depois do advento dos módulos
de 168 vias, os mais usados atualmente.
Ao invés de quatro módulos, é
preciso apenas um módulo SIMM de 72 vias para formar cada banco de memória nos
micros 486. Como o Pentium acessa a memória usando palavras de 64 bits, são
necessários 2 módulos em cada banco.
Na verdade, depois do Pentium,
praticamente todos os processadores acessam a memória a 64 bits. Apesar do
Pentium II, Pentium III, Celeron, Athlon, Duron, etc. serem todos processadores
de 32 bits, acessar 64 bits por vez na memória ajuda a melhorar o desempenho. O
processador é tão mais rápido que a memória RAM, que depois de esperar vários
ciclos para poder acessá-la, o melhor a fazer é pegar a maior quantidade de
dados possível e guardar tudo no cache. Naturalmente os dados serão processados
em blocos de 32 bits, mas a poupança ajuda bastante. Não é à toa que quase dois
terços dos transístores de um Pentium III Coppermine são usados nos caches L1 e
L2.
Módulo DIMM de 168 vias Ao
contrario dos módulos SIMM de 30 e 72 vias, os módulos DIMM possuem contatos em
ambos os lados do módulo, o que justifica seu nome, "Double In Line Memory
Module" ou "módulo de memória com duas linhas de contato". Como Os módulos DIMM
trabalham com palavras binárias de 64 bits, um único módulo é suficiente para
preencher um banco de memória em um micro Pentium ou superior, dispensando seu
uso em pares. Caso você deseje instalar 64 MB de memória em um Pentium II, por
exemplo, será preciso comprar apenas um único módulo DIMM de 64 MB.
Os
módulos DIMM de 168 vias são os únicos fabricados atualmente. Você dificilmente
encontrará módulos de 72 vias, ou placas mãe novas que os suportem à venda,
apenas componentes usados. Veja na foto abaixo as diferenças de formato e
tamanho entre os três formatos:
Bancos de Memória Um processador
x86 pode trabalhar com qualquer quantidade de memória, a partir de um mínimo de
64 KB. Porém, é preciso que exista um barramento de dados suficiente. Uma
quantidade qualquer de memória, que atenda às exigências do processador quanto à
largura de barramento é chamada de banco de memória.
No Pentium, cada
banco de memória deve ser capaz de permitir o acesso de 64 bits de dados por
vez, enquanto nos processadores 386 e 486 é necessário um barramento de 32 bits.
Caso o módulo de memória possua um barramento de dados mais estreito que o
necessário, é preciso combinar dois ou mais módulos para formar cada banco.
Como os módulos SIMM de 30 vias possuem um barramento de apenas 8 bits,
são necessários 4 módulos para formar um banco de memória em um micro 386 ou
486. Se estes módulos antigos chegassem a ser utilizados em micros Pentium,
seriam necessários 8 módulos para formar cada banco.
Os módulos SIMM de
72 vias já possuem um barramento de 32 bits, sendo um único módulo suficiente
para completar um banco de memória em um 486, e 2 módulos necessários para
completar os 64 bits exigidos pelo Pentium.
Finalmente, os módulos DIMM
possuem um barramento de 64 bits, sendo necessário apenas um módulo para formar
um banco em micros equipados com processadores Pentium ou superiores.
Dentro de um banco, todos os módulos são acessados ao mesmo tempo, como
se fossem um só. Por isso, é necessário que todos os módulos sejam capazes de
responder aos chamados do controlador de memória sincronizadamente, como uma
orquestra. A mínima falta de sincronia entre os módulos irá causar instabilidade
no sistema, que poderá levar a travamentos. Por isso, é altamente recomendável
que sejam utilizados sempre módulos idênticos dentro de um mesmo banco (mesma
marca, mesma capacidade, mesmo tempo de acesso, etc.), de preferência comprados
juntos.
Geralmente temos numa placa mãe, dois ou três bancos de memória,
que são numerados a partir de 0 (banco 0, banco 1, banco 2, etc.). Não existe
problema em usar módulos de memória diferentes em bancos diferentes. Você pode
até mesmo misturar módulos de diferentes velocidades, de 70 e 60 nanos, por
exemplo, desde que configure os tempos de espera no Setup para a velocidade do
módulo mais lento.
Uma curiosidade é que algumas placas mãe para
Pentium, podem trabalhar com apenas um módulo de 72 vias. Neste caso, a placa
engana o processador, fazendo dois acessos de 32 bits consecutivos, e entregando
os dados de uma só vez para o processador. Apesar de funcionar, este esquema
reduz bastante a velocidade do micro, pois a velocidade de acesso à memória fica
reduzida à metade.
Fonte: GuiaDoHarware.net