Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
Memória RAM: evolução e novas tecnologias
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.
2
Preço x quantidade
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.
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..
3
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 é
sub-utilizado 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
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.
4
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
5
substituição de módulos com defeito. Imagine você, fazendo um upgrade de
memória numa placa como a da foto abaixo:
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.
6
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.
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).
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...
7
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.
8
Bancos 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.
9
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.
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.
Tecnologias utilizadas
10
Memórias Regulares
Este tipo de memória foi fabricado com velocidades de acesso a partir de 150
nonosegundos (bilhonésimos de segundo), mais do que suficientes para suportar o
bus de 4.77 MHz do PC original. Foram desenvolvidas posteriormente versões de
120, 100 e 80 nanos para serem utilizadas em micros 286.
Devido ao novo método de acesso, as memórias FPM conseguem ser cerca de 30%
mais rápidas que as memórias regulares.
Instaladas em uma placa mãe que trabalhe com Bus de 66 MHz, os intervalos de
espera de memórias FPM podem ser de até 5-3-3-3, o que significa que o
processador terá de esperar cinco ciclos da placa mãe para a memória efetuar a
primeira leitura de dados e somente mais 3 ciclos para cada leitura subsequente. O
primeiro acesso demora mais tempo, pois nele é preciso enviar os dois endereços,
enquanto nos subsequentes é necessário enviar apenas os endereços de coluna.
11
acessos por ciclo, era natural que cada acesso à memória demorasse menos ciclos
da placa mãe. Nas placas para processadores Pentium o mais comum são opções
“slow”, “normal” e “fast”, que substituem os valores numéricos.
Como quase todos os módulos de 70 nanos são de memórias FPM, e quase todos os
módulos de memórias EDO são de 60 nanos, você pode usar este método para
determinar com 95% de certeza o tipo de memória usada.
12
Memórias BEDO (Burst Extended Data Output RAM)
As memórias BEDO utilizam uma espécie de Pipeline para permitir acessos mais
rápidos. Em um Bus de 66 MHz, as memórias BEDO são capazes de funcionar com
temporização de 5-1-1-1, quase 30% mais rápido que as memórias EDO
convencionais. O mais interessante é que o custo de produção das memórias BEDO
é praticamente o mesmo das memórias EDO e FPM.
Na verdade, as BEDO nunca foram utilizadas em larga escala. Incluí esta tecnologia
apenas como curiosidade.
Tanto as memórias FPM quanto as memórias EDO são assíncronas, isto significa
que elas trabalham em seu próprio ritmo, independentemente dos ciclos da placa
mãe. Isso explica por que memórias FPM que foram projetadas para funcionar em
placas para processadores 386 ou 486 (que trabalham com Bus de 25, 30, 33 ou
40 MHz), funcionam sem problemas em placas para processadores Pentium, que
funcionam a 66 MHz. Na verdade, as memórias continuam trabalhando na mesma
velocidade, o que muda são os tempos de espera que passam a ser mais altos.
Assim, ao invés de responder a cada 2 ciclos da placa mãe, por exemplo, elas
podem passar a responder a cada 3 ou 4 ciclos, funcionando normalmente.
As memórias SDRAM por sua vez, são capazes de trabalhar sincronizadas com os
ciclos da placa mãe, sem tempos de espera. Isto significa, que a temporização das
memórias SDRAM é sempre de uma leitura por ciclo. Independentemente da
velocidade de barramento utilizada, os tempos de acesso poderão ser de 5-1-1-1.
13
Observe que apenas a partir do segundo ciclo a memória é capaz de manter um
acesso por ciclo, o primeiro acesso continua tão lento quanto em memórias EDO e
FPM, consumindo 5 ciclos.
Como é preciso que a memória SDRAM a ser usada seja rápida o suficiente para
acompanhar a placa mãe, é possível encontrar versões com tempos de acesso
entre 15 e 6 nanossegundos.
Por não trabalharem sincronizadas com o clock da placa mãe, as memórias FPM e
EDO poderiam trabalhar com qualquer freqüência de barramento: 100, 133, 200
MHz, ou até mais, desde que os tempos de espera fossem setados corretamente.
Porém, quanto mais alta a velocidade, maiores teriam que ser os tempos de espera
e pior seria o desempenho das memórias. Por isso, não se costuma utilizar
memórias EDO ou FPM em frequências de barramento superiores a 75 MHz, apenas
memórias SDRAM.
14
Memórias PC-100
Memórias PC-133
Com a evolução das técnicas de fabricação, foi sendo possível produzir módulos de
memória SDRAM com tempos de acesso cada vez mais baixos. Apesar do processo
de evolução ser bastante lento se comparado ao de outros componentes,
atualmente já é possível produzir memórias SDRAM capazes de funcionar acima de
133 MHz.
Estas novas memórias, chamadas PC-133 são utilizadas pelas versões de 133 MHz
do Pentium III e do AMD Athlon, e justamente por permitirem um acesso a dados
mais rápido, contribuem para o aumento da performance global do micro. Vale
lembrar que memórias PC-133 funcionam normalmente em placas mãe com bus de
66 ou 100 MHz, assim como as memórias PC-100 trabalham normalmente a 66
MHz. Existe uma freqüência máxima mas freqüências menores também são
suportadas. Você pode inclusive misturar módulos DIMM de tempos diferentes na
mesma placa mãe, desde que nivele por baixo, ou seja, utilize uma freqüência de
barramento compatível com o módulo mais lento.
15
Identificando módulos de memória
Novas Tecnologias
DDR vem de double data rate, o que enfatiza a principal característica das
memórias DDR: permitir duas transferências de dados por ciclo de clock, um
esquema semelhante ao usado no AGP 2x. Enquanto num módulo de memória
SDRAM PC-100 temos transferidos 64 bits por ciclo de clock, resultando em uma
taxa de transferência de 800 MB/s, num módulo de DDR-SDRAM também de 100
MHz teríamos duas transferências de 64 bits em cada ciclo, alcançando 1.6 GB/s de
transferência, simplesmente o dobro.
16
Este tipo de memória está sendo bastante utilizado atualmente em placas de vídeo
3D. Uma das primeiras foi a Nvidia GeForce DDR.
Trabalhando a 400 MHz com duas transferências por ciclo, sua velocidade máxima,
as memórias Rambus permitem uma banda total de 1.6 Gigabytes por segundo.
Diferentemente das memórias DDR e SLD que são apenas evoluções das memórias
SDRAM, as memórias Direct Rambus trazem uma arquitetura completamente nova,
que exige modificações muito maiores nos chipsets destinados a suportá-la,
significando maiores custos de desenvolvimento e produção.
Devido a isto, muitos especialistas não acreditam que esta tecnologia de memória
possa ser realmente viável, e apontam as memórias DDR como uma alternativa
muito mais prática. Apesar de tudo, as memórias Rambus são as únicas
nativamente suportadas pelos chipsets i820 (atualmente extinto) i840 e i850 (que
antes do i845 era o único chipset disponível para processadores Pentium 4).
17
atuais comunicam-se com a memória usando palavras de 64 bits. Para superar esta
limitação, é preciso que o controlador de memória (embutido no chipset) faça
vários acessos consecutivos aos módulos de memória e entregue os dados ao
processador na forma de palavras de 64 bits. Quando é necessário gravar dados é
feito o processo inverso; o controlador de memória recebe os dados do processador
na forma de palavras de 64 bits, e tem de fazer vários acesos consecutivos aos
módulos de memória para armazenar cada palavra de 64 bits.
Por exemplo, um módulo de memória SDRAM PC-100 típico, opera a 100 MHz, ou
seja, realiza 100 milhões de transferências por segundo. A cada transferência de
dados são transmitidos 64 bits de dados enquanto o tempo de latência, ou seja o
valor CAS, é de 2 ou 3 tempos, dependendo do módulo. Com isto, temos um
módulo capaz de transferir, em condições ideais, 800 MB de dados por segundo,
mas bem menos que isso na prática.
Um módulo de memória DDR PC-2100 por sua vez opera a 266 MHz (133 MHz com
duas transferências por ciclo), também transmite 64 bits de dados por transferência
e novamente tem (num módulo típico) um tempo de latência de 2 ou 3 ciclos. Com
18
isto temos um módulo capaz de transferir, em condições ideais, 2.1 GB de dados
por segundo, bem menos na prática novamente.
A sigla DDR vem de double data rate. A sigla indica justamente a capacidade das
memórias DDR transmitirem dados duas vezes por ciclo, uma transferência no
início do ciclo de clock e uma segundo transferência no final do pulso. Um módulo
DDR de 266 MHz por exemplo, não trabalha a 266 MHz, mas sim a apenas 133
MHz, entretanto, como são feitas duas transferências por ciclo, o desempenho é
equivalente ao que seria alcançado por um módulo de 266 MHz.
Dentro de cada banco de memória, apenas uma linha pode permanecer ativa de
cada vez, mas nada impede que seja feito mais de um acesso simultâneo, desde
que a endereços diferentes.
Para isto não é necessário mudar a estrutura do módulo, apenas realizar algumas
mudanças no circuito de acesso dentro dos módulos e no controlador de memória
da placa mãe. Já existem no mercado tecnologias de memória que permitem 4
acessos por ciclo. Teoricamente seriam possíveis tecnologias ainda mais rápidas,
porém, quanto maior a quantidade de dados sendo transferidos por ciclo, maior o
nível de ruído eletromagnético, e mais difícil é fazer tudo funcionar.
É por isso que se diz que produzidas em grande quantidade, as memórias custam
pouco mais que as memórias SDRAM comuns, as diferenças de arquitetura são
pequenas.
19
memórias DDR, você poderá usar somente memórias DDR e vice-versa. Terá que
trocar seus módulos de memória, e comprar apenas módulos DDR em upgrades
futuros. É quase como um casamento :-)
Existem algumas placas mãe híbridas, que tragam por exemplo dois soquetes para
memórias SDRAM comuns e dois encaixes para memórias DDR, permitindo escolher
qual tipo utilizar.
O grande trunfo das memórias DDR é um grande apoio da indústria, que vem
ganhando força depois do lançamento dos chipsets DDR para o Athlon (o AMD 760
foi o primeiro da lista) e para o Pentium III (liderados pelo Via Apollo 266). O
primeiro chipset para Pentium 4 a suportar memórias DDR é o i845, seguido pelo
SiS SiS645 e Ali M1671.
Isto vale para uma processador atual, um Athlon de 1.33, um Pentium 4, etc.
Conforme os processadores forem evoluindo, o uso de memórias DDR trará ganhos
de desempenho cada vez mais tangíveis, já que serão usados multiplicadores cada
vez mais altos, aumentando o abismo entre a velocidade do processador e a
velocidade da memória.
Um exemplo atual é o Celeron. Em suas primeiras versões, a 333, 366, 400 MHz, o
Celeron, mesmo usando barramento de 66 MHz rivalizava em desempenho com os
Pentium II de 350 e 400 MHz, que já utilizavam bus de 100, simplesmente por que
a 366 MHz o Celeron ainda não era muito penalizado pela memória mais lenta.
Porém, conforme o Celeron foi sendo lançado em versões cada vez mais rápidas, o
barramento de 66 MHz começou a limitar severamente a performance. A Intel
resolveu então lançar no mercado o Celeron de 800 MHz usando bus de 100 MHz. A
diferença de desempenho entre um Celeron 766 (que usa bus de 66) e um Celeron
800 (que usa bus de 100) chega a ser de quase 20% em alguns aplicativos, mesmo
a freqüência do processador sendo quase a mesma. Afinal, o Celeron 766 usa
20
multiplicador de incríveis 11.5 x, enquanto o Celeron 800 usa multiplicador de
apenas 8 x, perdendo muito menos tempo ao acessar a memória.
Por outro lado, isto pode ser vantajoso do ponto de vista dos fabricantes de placas
mãe, pois se os módulos de memória possuem apenas 16 vias de dados, será
preciso usar menos trilhas na placa mãe, o que significa custos de desenvolvimento
e produção mais baixos. Existe inclusive a possibilidade de aumentar o número de
vias, de 16 para 32 e acessar dois módulos ao mesmo tempo. Com isto a
velocidade de acesso a memória dobra.
Cada módulo transmite dados (limite teórico) a 1.6 GB/s, então dois módulos
juntos transmitirão a 3.2 GB/s. Este sistema é usado no Pentium 4, onde é
necessário usar os módulos RDRAM em pares. Mais dor de cabeça, mais gastos,
porém acesso à memória mais rápido. Estes 3.2 GB/s de barramento com a
memória são um dos principais motivos para o Pentium 4 ser muito rápido no
Quake 3, um jogo que depende muito da velocidade do acesso à memória, mas não
ajuda tanto em outros aplicativos.
A organização mais complexa e o circuito de controle mais lento, faz com que os
acesso demorem muito mais tempo. O primeiro acesso à memória demora muito
mais que num módulo DDR, apesar dos seguintes demorarem apenas um ciclo
cada.
21
Isto explica por que um Pentium III espetado numa placa mãe o com o chipset
i820, que usa memórias Rambus, é mais lento que um Pentium III usando
memórias PC-100 comuns em muitos aplicativos, ganhando em outros. Apesar de
transferir mais dados por ciclo, os módulos RDRAM demoram mais para começar a
transferir dados, o que significa mais ciclos de processamento desperdiçados.
Memórias VC-SDRAM
22
essencialmente memórias SDRAM mais o conjunto de registradores e circuito de
controle, também existe a divisão em memórias PC-100 e PC-133.
O chipset KT-133 da Via, que era utilizado por exemplo na Abit KT7 Raid oferecia
suporte a este tipo de memória, porém, já que ninguém utiliza memórias VC de
qualquer maneira, a Via, a fim de cortar custos, retirou o suporte no KT-133A, a
versão mais recente do mesmo chipset.
ECC e Paridade
Por melhor que seja a qualidade, todos os tipos de memória são passíveis de erros,
que podem ser causados por inúmeros fatores, que vão desde interferências
momentâneas à defeitos físicos nos módulos de memória. Um dado adulterado
pode causar os mais diversos efeitos colaterais. Para aumentar o grau de
confiabilidade dos sistemas, foram criados métodos de diagnóstico e correção de
erros. Talvez, num micro doméstico, um sistema de correção de erros não seja tão
importante, pois um erro na memória no máximo causaria o travamento da
máquina. Em aplicações críticas porém, como num banco, qualquer erro de
processamento pode causar grandes prejuízos.
Caso seja constatada alteração nos dados, ele envia ao processador uma
mensagem de erro. Claro que este método não é 100% eficaz, pois não é capaz de
detectar a alteração de um número de bits que mantenha a paridade. Caso por
exemplo, dois bits zero retornassem alterados para bits um, o circuito de paridade
não notaria a alteração nos dados. Felizmente, a possibilidade da alteração de dois
ou mais bits ao mesmo tempo é remota.
23
O uso da paridade não torna o computador mais lento, pois os circuitos
responsáveis pela checagem dos dados são independentes do restante do sistema.
Seu único efeito colateral, é o encarecimento das memórias, que ao invés de 8 bits
por byte, passam a ter 9, tornando-se cerca de 12% mais caras.
Apesar de ainda não ser muito usado em memórias RAM, justamente devido à boa
confiabilidade das memórias atuais, o ECC é item obrigatório em discos rígidos e
CD-ROMs, pois neles o corrompimento de dados é muito comum.
24