Memória – parte 1
Caros amigos do FórumPCs:
Quem leu meu perfil na página Sobre Abel Alves já sabe que atualmente estou morando fora do Rio e trabalhando em uma universidade. Continuo escrevendo para o Globo e para outros jornais, mas agora também me dedico a ensinar informática e engenharia para meus alunos. Uma das matérias que leciono tem a ver com hardware de computadores. Para fazer uma apostila atualizada para esta matéria tenho pesquisado bastante.
Já consegui elaborar boas apostilas sobre vários assuntos relacionados a hardware de PCs. Assim como fiz no artigo sobre placas-mãe, vou apresentar um artigo sobre a memória do PC em várias partes. Escolhi o assunto memória, porque minha apostila sobre este assunto ainda está atualizada (do jeito que a tecnologia avança não sei se ainda estará ao final da série!). Algumas partes deste artigo serão bem simples. Outras serão um pouco mais complexas, mas acho que todos que acompanharem a séria vão aprender mais sobre a memória do PC.
Então vamos parar de papo furado e começar logo a trabalhar!
Uma das confusões mais comuns que o usuário iniciante de micros tem diz respeito à definição de memória do micro. A definição mais simples que eu conheço é: “Memória é um local onde se armazena informação”. De uma maneira geral, podemos dizer que a memória de um microcomputador pode ser dividida em três categorias:
- Memória de armazenamento,
- Memória ROM (do inglês Read Only Memory),
- Memória RAM (do inglês: Random Access Memory).
Memória de Armazenamento
A memória de armazenamento é constituída pelos dispositivos de armazenamento permanente do micro, como os disquetes, discos rígidos, CD-ROMs, DVDs, Zip disks, etc. Note que a memória é onde fica a informação armazenada e não o dispositivo utilizado para armazená-la. Por isso é que, por exemplo, o Zip disk é memória de armazenamento e o Zip drive não é. A grande vantagem da memória de armazenamento é que ela é permanente, ou seja, não é volátil. Assim as informações gravadas na memória de armazenamento não se perdem quando desligamos o micro. Infelizmente, por usar dispositivos eletromecânicos com tecnologia magnética/ótica, a gravação e a recuperação das informações se faz de forma muito mais lenta que nas memórias RAM ou ROM, que são totalmente eletrônicas.
Vou abordar os dispositivos de armazenamento num artigo futuro e nele vou detalhar melhor a memória de armazenamento. Mas é sempre bom lembrar que, quando usamos apenas a palavra “memória”, na maior parte das vezes, estamos querendo nos referir à memória RAM e não à memória de armazenamento. Por isso é considerado errado falar: “Meu PC tem 120 GB de memória”. O correto seria dizer: “Meu micro possui 120 GB de capacidade para o disco rígido”.
Memória ROM
A memória ROM é um tipo de memória presente no micro que, normalmente, só pode ser lida (como o próprio nome diz) e não pode ser escrita (não de maneira simples), ao contrário da memória RAM que permite a leitura e a escrita. Existem dois motivos para que a memória ROM seja usada em um PC:
- Ela não é volátil, ou seja, a informação contida nela permanece mesmo que desliguemos o computador. Na verdade, mesmo que o chip de memória ROM seja retirado do micro e guardado em um armário a informação continuará armazenada dentro dele.
- A segurança de uma memória ROM é bastante grande, já que ela não pode ser facilmente modificada. Na verdade, alguns tipos de ROM nem podem ser modificados.
Uma das funções mais comuns desempenhadas pelas memórias ROM no PC é o armazenamento do BIOS/SETUP do micro. Mais tarde, quando falarmos de SETUP, voltaremos a abordar as memórias ROM. Além da placa-mãe, também encontramos memórias ROM na Placa de vídeo e em algumas placas de rede. Os principais tipos de memória ROM são:
- ROM (propriamente dita) – este tipo de ROM é feita na fábrica para desempenhar uma função pré-determinada e não pode ser programada ou modificada de nenhuma forma. Alguns dispositivos como calculadoras e telefones celulares costumas utilizá-las. Poderíamos compará-la ao CD-ROM comercial, aquele que compramos com um determinado programa pré-gravado.
- PROM (Programmable ROM) – Este tipo de ROM pode ser programada através de um equipamento especial usado em laboratórios. Porém, uma vez programada, não pode ser modificada de nenhuma forma. Muito útil para quem trabalha com hardware em laboratório e para quem precisa de segurança máxima. É como se fosse um disco “virgem” de CD-R.
- EPROM (Erasable PROM) – É uma PROM que pode ser apagada e programada novamente. Só que este tipo de PROM só pode ser apagada e programada utilizando-se aparelhos existentes em laboratório eletrônicos, como emissores de luz ultravioleta, etc. Mantendo a analogia com CDs, seria o disco de CD-RW.
- EEPROM (Eletrical Erasable PROM) – Esta PROM pode ser apagada e reprogramada sem o uso de aparelhos específicos. Na verdade, basta um programa especial para apagá-la e reprogramá-la. Atualmente, quase todos as placas mães disponíveis no mercado possuem EEPROMs para armazenar o BIOS, permitindo assim o famoso “upgrade” ou atualização de BIOS. As memórias EEPROM encontradas nas atuais placas-mãe são chamadas de Flash-ROM ou Flash-BIOS.
Memória – parte 2
Memória RAM
A memória RAM é memória utilizada para armazenar os programas e dados que estão sendo usados naquele momento pelo microcomputador. Ela foi a escolhida pela sua velocidade e pela versatilidade, já que, ao contrário da ROM, pode ser lida e escrita facilmente. O problema da memória RAM é que ela é volátil, ou seja, se não houver energia alimentando os chips da memória RAM, toda a informação armazenada nestes chips se perderá. É por esta razão que temos que “salvar” um arquivo texto que foi digitado por nós antes de desligar o micro. Enquanto está sendo digitado, o arquivo fica guardado na memória RAM. O ato de “salvar” o arquivo nada mais é do que armazená-lo na memória de armazenamento (disquete, HD, etc.) que é permanente. Quando precisamos usar um programa que não está na memória RAM este é “carregado”, ou melhor, transferido da memória de armazenamento para a memória RAM.
Apesar de ambas serem eletrônicas a memória RAM é mais rápida que a memória ROM. Alguns críticos acham que o nome RAM (Random Access Memory) não é adequado para o tipo de memória, pois ele apenas define que a informação pode ser acessada em qualquer posição de memória. Uma maneira simples de se manter a sigla seria substituir “Random Access Memory” por “Read and Alter Memory”, que significa “memória que pode ser lida e modificada”.
A memória RAM, apesar de ser volátil, é muito mais rápida que a memória de armazenamento. Só para se ter uma idéia de sua velocidade, podemos dizer que, em micros modernos, o processador gasta cerca de 120 ns (nanosegundos, ou bilionésimos do segundo) para acessar uma informação gravada nela. Se o processador for acessar a memória de armazenamento, por exemplo, um HD, vai gastar 12 ms (milisegundos, ou milésimos do segundo). Fazendo uma conta rápida, podemos dizer que, em média, a memória RAM é 100.000 vezes mais rápida que a memória de armazenamento.
Quando o Windows percebe que um micro possui um baixa quantidade de memória RAM ele usa uma técnica chamada Memória Virtual. O Windows “simula” a memória RAM na memória de armazenamento, ou seja, ele complementa a memória RAM “real” com uma memória RAM “virtual” no HD. Essa memória RAM “virtual” nada mais é do que um arquivo que simula a memória. No Windows XP ele tem o nome de PAGEFILE.SYS, mas dependendo da versão do Windows também pode ser chamado de 386PART.PAR, WIN386.SWP, etc.
A técnica da memória virtual; é interessante, mas, como a memória de armazenamento é muito mais lenta que a memória RAM, se o micro tiver pouca memória e usar muito a memória virtual seu desempenho será baixo. Quanto menos o Windows utilizar a memória virtual, melhor para o desempenho. Isso quer dizer que quanto mais memória RAM, melhor será o desempenho do Windows e também de outros sistemas como Linux, etc. É bom lembrar que, apesar de ser possível, mesmo que se tenha uma enorme quantidade de memória RAM no micro a memória virtual não deve ser desabilitada no Windows, sob pena de perda de desempenho. O truque nestes casos; é criar uma memória virtual fixa e de tamanho reduzido.
Quanto de memória RAM um micro precisa? Isto depende muito do sistema e dos programas que vão rodar neste micro. Uma máquina com Windows 98 funciona muito bem com 128 MB de RAM. Mas se o sistema for o Windows XP, 128 MB pode ser muito pouco. O usuário percebe logo que a quantidade de memória RAM é baixa quando a memória virtual é muito utilizada e o sinal de que a memória virtual está sendo exigida demais é uma atividade intensa d disco rígido. Máquinas em que o disco rígido praticamente não para de ser acessado, necessitam urgentemente de um aumento da quantidade de RAM. Porém, não se assustem à toa, pois, quando a máquina é ligada, é normal atividade intensa no disco rígido, já que os programas estão sendo carregados na memória. O problema ocorre quando, após o carregamento do sistema e principais programas, o disco continua sendo acessado freneticamente.
Memória - Parte 3
Como reconhecemos a memória RAM?
A memória RAM pode ser encontrada em vários formatos diferentes. Atualmente o mais comum é encontrarmos a memória num formato de módulo, também chamado de “pente” de memória. Um típico módulo de memória pode ser visto na figura abaixo.

Um módulo de memória
Os principais componentes do módulo de memória são:
Chip de memória DRAM – Existem basicamente dois tipos de memória RAM: DRAM (ou RAM dinâmica) e SRAM (ou RAM estática). Para que uma memória RAM do tipo SRAM consiga armazenar a informação basta que haja uma corrente elétrica alimentando os chips de SRAM. Já as memórias DRAM também precisam da mesma eletricidade, porém, além disso, as DRAM precisam de um sinal elétrico específico que as faz “lembrar” da informação que estão armazenando. Este sinal é chamado de sinal de “refresh”. Como a SRAM não precisa deste sinal, ela é mais rápida que a DRAM. Em compensação as DRAM são muito mais baratas e os chips de memória DRAM são bem menores em tamanho. Por serem mais rápidas, as SRAM são normalmente utilizadas em aplicações específicas no microcomputador como a memória cache, tanto a cache L1 como a cache L2. Infelizmente por serem caras e ocuparem um espaço físico muito grande, as SRAM só costumam ser usadas para memória cache. Já as memórias DRAM é que compõe o que chamamos de memória RAM do micro. Ou seja, quando alguém fala que o seu PC possui 128 MB de memória, quer dizer que este micro tem 128 MB de memória composto por chips de memória DRAM.
Placa de circuito impresso (em inglês: Printed Circuit Borad – PCB) – É a placa onde os chips de DRAM são colocados. Possui várias camadas e em cada uma delas existem trilhas internas que são usadas para se conectar os vários chips de DRAM presentes no módulo.
Contatos metálicos – São os contatos que o módulo de memória possui para que o mesmo possa ser conectado à placa-mãe. Normalmente estes contatos elétricos são banhados com uma fina camada de ouro.
Encapsulamento dos chips
Encapsulamento é o nome que se dá ao formato físico dos chips. Os antigos chips de memória, da época do PC-XT usavam um encapsulamento do tipo DIP. Este encapsulamento também é muito comum em chips de memória ROM usados nas placas-mãe. Vamos conhecer os principais tipos de encapsulamento para chips de memória DRAM.
DIP (Dual In-line Package) – Quando se fala em chips de computador, normalmente a primeira imagem que se faz em nossa mente é de um dispositivo retangular com um monte de “perninhas” em dois de seus lados. Este é o encapsulamento DIP e que hoje em dia já está caindo em desuso. Ele é feito para se encaixar em pequenos buracos do PCB.

Encapsulamento DIP
SOJ (Small Outline J-Lead) – Este encapsulamento tem este nome porque as perninhas do chip se dobram em forma de “J”. Este chip não de encaixa em furos do PCB. Ao invés disso é montado num processo mais parecido com uma “colagem” do chip e muito usado atualmente nas placas de circuito. Este processo é chamado de tecnologia de montagem em superfície (SMT).

Encapsulamento SOJ
TSOP (Thin Small Outline Package) – No Encapsulamento TSOP, o chip tem uma espessura muito pequena, bem menor que a do chip com encapsulamento SOJ. Foi usado pela primeira vez em cartões de memória para notebooks.

Encapsulamento TSOP
sTSOP (Shrink Thin Small Outline Package) – Uma variação do encapsulamento TSOP com a metade de seu tamanho. Permite mais memória em menos espaço.

Encapsulamento sTSOP
CSP (Chip Scale Package) – Ao contrário dos encapsulamentos já apresentados o CSP não usa pinos para se conectar ao PCB. Ao invés disso ele possui pequenas esferas de metal em sua parte inferior. Este padrão de encaixe é chamado de BGA (Ball Grid Array). As memórias do tipo RDRAM e DDR-II usam este tipo de encapsulamento.

Encapsulamento CSP
Empilhamento de chips
O empilhamento de chips é usado para conseguir chips com quantidades de memória maiores. Pode ser interno ou externo. Nos empilhamentos externos podemos ver claramente os chips um em cima do outro. Já no empilhamento interno isto não é possível.

Exemplo de chips empilhados externamente
Memória – Parte 4
Como funciona a memória
Vamos detalhar agora como o processador acessa a memória para obter as informações de que precisa. Algumas definições são úteis tais como:
CPU – Como já vimos é o principal componente do PC e centraliza todos os processos que ocorrem na máquina.
Chipset – É o principal componente da placa-mãe. Normalmente é composto por dois chips principais: O controlador de memória (chamado também de “Northbridge”) e o Controlador de barramento (chamado também de “Southbridge”). É o chipset que faz a interface entre o processador o resto dos componentes da placa-mãe.
Controlador de memória (“Northbridge”) – É responsável pela comunicação entre Cpu e memória RAM.
Barramento – São vias de comunicação entre componentes distintos. O FSB, também chamado de Barramento Frontal, conecta o processador com o controlador de memória.
O Barramento de memória conecta o controlador de memória com a memória RAM. Existem outros barramentos no micro, tais como Barramento PCI, AGP, etc.

Principais componentes da placa-mãe de um PC.
Velocidade da Memória
Quando o processador precisa de uma informação ele envia um pedido ao controlador de memória que por sua vez faz a leitura das informações armazenadas nos bancos de memória e entrega a informação para o processador. Este ciclo completo: CPU/Chipset/RAM/Chipset/CPU é necessário para obtermos as informações da memória. Quanto mais rápido ele acontecer, mais rápido a CPU vai poder processar a informação, melhorando seu desempenho.
A velocidade da memória é indicada pelo tempo que um módulo de memória demora em fornecer uma informação a partir do momento que esta é solicitada pelo controlador de memória, chamado tempo de acesso. O tempo de acesso é normalmente expresso em ns (nanosegundos), pois as memórias RAM são extremamente rápidas. Como hoje as memórias usam uma tecnologia sincronizada a um sinal de clock, também se usa o clock para definir a velocidade da memória RAM. Assim, um módulo de memória síncrona com tempo de acesso de 10 ns opera com um clock de 100 MHz (1/10ns, pois clock=1/tempo de acesso). É importante lembrar que este clock é específico para o acesso à memória RAM. O processador costuma trabalhar com outro clock, chamado de clock da CPU.

Exemplo de leitura da memória RAM. Neste caso o tempo de acesso dos módulos (70 ns) é apenas uma parte do tempo total de acesso, pois ainda existe o tempo que o controlador de memória perde para fornecer as informações para a CPU (125 ns).
Desempenho do micro e memória
Com o passar do tempo o desempenho dos processadores tem crescido de forma alucinante. A lei de Moore ainda está valendo. Porém, quando se fala em memórias, a coisa muda um pouco de figura. Apesar de terem evoluído muito, elas simplesmente não estão conseguindo acompanhar o ritmo dos processadores. Isso é um problema, pois não adianta nada o processador trabalhar rápido se não conseguir acessar os dados de forma rápida também. Ou seja, o desempenho do micro é bastante dependente da velocidade de trabalho das memórias.
Uma das formas de minimizar a perda de desempenho é aumentar a velocidade das memórias. Porém, este abordagem pode ser um pouco demorada, pois já vimos que a tecnologia das memórias não evolui com a mesma velocidade da tecnologia dos processadores. Outra forma, que é usada desde que os processadores começaram a ficar mais rápidos (lá pela época do 80386), é o uso de memória cache.
Memória - Parte 5
Memória Cache
Memória cache é um tipo de memória de alta velocidade que fica próxima à CPU e consegue acompanhar a velocidade de trabalho da CPU. Por ser uma memória de alta velocidade ela é difícil de ser produzida e por isso mesmo muito cara. Por isso é que raramente encontramos quantidades de memória cache maiores que 1 MB. É bom lembrar que, ao invés da tecnologia DRAM, usa-se a tecnologia SRAM para a produção de chips de memória cache.
A idéia por trás do cache é muito simples: colocar na memória cache os dados e instruções que são mais comumente utilizados pelo processador. É a regra 80/20, ou seja, 20% dos dados/instruções/etc. são usados 80% das vezes no micro. Assim se estes dados/instruções/etc. estiverem no cache, que é muito mais rápido que a memória RAM “normal”, o desempenho do micro será muito melhor. O usuário não precisa se preocupar em colocar os dados mais utilizados na memória cache. Existe um circuito especifico que faz isso automaticamente chamado Controlador de cache. Este circuito tenta, inclusive, “adivinhar” quais serão os dados solicitados pelo processador.
Se o processador precisa de uma informação e ela está no cache, ótimo, a informação é acessada e o desempenho é alto. Quando isso acontece, chamamos de cache “hit” ("acerto"). Porém se a informação não estiver no cache, ela vai ter que ser lida da memória RAM “normal”, o que é um processo mais lento. Este caso é chamado de cache “miss” ("erro"). A idéia é fazer com que o número de cache hits seja muito maior que o número de cache misses.
Níveis de cache
De acordo com a proximidade do processador são atribuídos níveis de cache. Assim, a memória cache mais próxima da CPU recebe o nome de cache L1 (do inglês "level 1" ou nível 1). Se houver outro cache mais distante da CPU este receberá o nome de cache L2 e assim por diante.
Na época do 8088 e 80286 era raro encontrar um micro com memória cache. Mas com o surgimento do 80386 começaram a aparecer micros com placas-mãe que possuíam memórias cache. Naquela época quase ninguém usava a nomenclatura de caches por níveis. Falava-se simplesmente “memória cache” se referindo a memória que estava na placa-mãe..
Com o lançamento do 80486 a Intel incorporou memória cache a seus processadores, dentro do próprio chip. Por sua vez, as placas-mãe também possuíam memória cache. Par diferenciar, e também pela localização do cache, essas memórias cache ficaram conhecidas como: cache interno (que seria o cache L1 – dentro da CPU) e cache externo (que ficava na placa-mãe e deveria se chamar L2). Isso valeu até o lançamento do Pentium II quando a Intel “incorporou” o cache externo (ou melhor, L2) ao cartucho que formava o processador. Atualmente a maior parte dos processadores incorpora a memória cache em seu chip propriamente dito e por isso a nomenclatura cache L1, L2, L3, etc. é mais correta e também mais usada.

Exemplo de memórias cache L1 (“interna”) e L2 (“externa”)
Memória - Parte 6
Diferentes tecnologias e formatos de módulos de memória
Como veremos agora, existem diferentes formatos para os módulos de memória. Além disso, os chips de memória destes módulos também podem possuir tecnologias diferentes. É bastante comum as pessoas confundirem formatos de módulos (SIMM, DIMM, etc.) com a tecnologia das memórias que os compões (FPM, EDO, SRAM, etc.)
Formatos dos módulos de memória
Os formatos dos módulos de memória são padronizados e estabelecidos por organismos internacionais. A razão para termos módulos de formatos diferentes é simples: à medida que a tecnologia dos chips que compõe o módulo avança é necessário fazer uma atualização da forma do módulo de modo que este possa desempenhar melhor suas funções.
Formato SIPP
SIPP é a sigla de Single Inline Pin Package. O módulo SIPP foi a primeira idéia de se criar um módulo mais fácil de manipular que os chips de memória no formato DIP que existiam na época. Ele, porém, continuava a usar as “perninhas” presentes nos chips de memória do formato DIP, apesar dos chips de memória estarem fixados a uma placa (PCB). Por não ter um manuseio simples ele foi logo substituído por um formato mais interessante batizado de SIMM.

Exemplo de módulo no formato SIPP
Formato SIMM
A sigla SIMM quer dizer Single Inline Memory Module. Em um módulo SIMM os chips de memória são fixados em um PCB (placa de circuito) retangular que possui um fila de contatos elétricos dispostos simetricamente nos dois lados do PCB. Mas, no módulo SIMM, o contato elétrico de um lado é exatamente igual ao do outro lado.
Os primeiros módulos no formato SIMM tinha 30 contatos elétricos de cada lado do PCB e, podemos perceber pela semelhança, uma modificação do módulo no formato SIPP onde as “perninhas” foram removidas. Aliás, até existem adaptadores que transformam módulos SIPP em SIMM de 30 vias. Talvez por ser parecido com o módulo SIPP algumas pessoas se refiram ao SIMM de 30 vias como SIMM de 30 “pinos”. Apesar de ser aceita amplamente, esta denominação está errada, pois não existem pinos (“perninhas”) nos módulos SIMM.

Exemplo de módulo no formato SIMM 30 vias
Os módulo SIMM de 30 vias são capazes de fornecer grupos de 8 bits de cada vez para a CPU. Assim dependendo do processador são necessários 2, 4 e até oito módulos SIMM para compor um banco de memória. Se um dos módulos estiver faltando ou queimado o banco não será “enxergado” pelo o processador. Para processadores que acessam a memória em 32 bits, como o 386 ou 486 são necessários 4 módulos SIMM de 30 vias para completar um banco de memória.
Para facilitar a vida de quem instalava memória nos micro, foi criado o módulo SIMM de 72 vias (ou “pinos”). A diferença é mais do que somente o número de contatos e a maior largura do PCB: o módulo SIMM é capaz de fornecer 32 bits de cada vez para a CPU. Assim um banco de memória para processadores 386 ou 486 é composto de apenas 1 módulo de memória SIMM de 72 vias. Mas se processador for da classe Pentium ou superior são necessários dois módulos SIMM de 72 vias, pois estes processadores acessam a memórias em 4 bits.

Exemplo de módulo no formato SIMM 72 vias
Memória - Parte 7
Formato DIMM
DIMM é a sigla para Dual Inline Memory Module. Diferente dos módulos SIMM onde os contatos dos dois lados do módulo eram iguais, no módulo DIMM este contatos são independentes. Isto exigiu que os soquetes onde os módulos são encaixados na placa-mãe fossem redesenhados.
Além disso, os módulos DIMM são capazes de transferir 64 bits de cada vez para o processador. Desta forma os bancos de memória são compostos de apenas um módulo DIMM a não ser quando usamos a técnica de “Dual-channel” que veremos mais adiante.
Atualmente existem 3 formatos de módulos DIMM no mercado: DIMM de 168 vias (84 contatos em cada lado), DIMM de 184 vias (92 contatos em cada lado) e DIMM de 240 vias (120 contatos de cada lado). O DIMM 168 é composto normalmente por memórias com tecnologia SDRAM, o DIMM 184 usa memórias com tecnologia DDR e o DIMM 240 usa memórias com tecnologia DDR2.

Exemplo de módulo no formato DIMM 168 vias

Exemplo de módulo no formato DIMM 184 vias

Exemplo de módulo no formato DIMM 240 vias
Formato SODIMM
O Formato SODIMM é usado em notebooks onde o espaço ocupado por um módulo DIMM seria muito grande. SODIMM vem de Small Outine DIMM, ou seja, um DIMM num formato menor. Temos módulos no formato SODIMM de 72 vias (pinos) que fornecem apenas 32 bits para o processador e dos formatos SODIMM de 144 vias (pinos) e 200 vias (pinos) que fornecem 64 bits para o processador. O formato SODIMM de 72 vias usa memórias com tecnologias mais antigas como FPM e EDO. Já o formato SODIMM de 144 vias também pode ter chips de memória SDRAM e o SODIMM de 200 pinos usam memórias DDR.
Formato RIMM
O Formato RIMM é usado somente nos módulos de memória que utilizam os chips com tecnologia Rambus, que veremos mais adiante. RIMM é a sigla de Rambus Inline Memory Module. Cada módulo só é capaz de transferir 16 bits de cada vez, mas o controlador de memória agrupa 4 acessos à memória antes de entregar os dados para a CPU, formando assim os 64 bits necessários. Desta forma os bancos de memória podem ser compostos de apenas 1 módulo. Uma característica marcante dos módulos RIMM é o fato de eles possuírem um dissipador metálico envolvendo os chips de memória. Isto ocorre porque estes chips trabalham em velocidades de clock muito altas e geram calor. O módulo RIMM possui 184 pinos. Existe uma versão mais compacta batizada de SORIMM (Small Outline RIMM) para ser usada em notebooks.

Exemplo de módulo no formato RIMM 184 vias
Uma peculiaridade do formato RIMM é que, devido à tecnologia RDRAM, todos os encaixes de memória existentes na placa-mãe têm que estar preenchidos para que a memória funcione. Como nem sempre é possível comprar vários módulos de RIMM, usa-se um módulo “falso” que serve apenas pra preencher os encaixes (slots) vazios. Este módulo “falso” é chamado de C-RIMM. A figura abaixo mostra o exterior e o interior de um módulo RIMM e também um módulo C-RIMM.

Exemplo de módulo no formato RIMM 184 vias (externo/interno) e o C-RIMM.
Comparando formatos
A figura a seguir mostra os principais formatos de módulos de memória usando a mesma proporção (escala). Ela permite uma boa idéia do tamanho de cada um deles.

Vários módulos de memória usando a mesma escala.
Outros formatos
Existem outros formatos menos comuns, tais como o CompactFlash Card, SmartMedia, SecureDigital, etc. mas estes tipos de memória são normalmente utilizadas como dispositivo de armazenamento de dispositivos tais como Palmtops, Câmeras digitais etc. Neste casos, eles utilizam um tipo de memória RAM não volátil chamada Flash-RAM. Na prática funcionam com se fossem pequenos HDs, mas com tempo de acesso de memória RAM.
Memória - Parte 8
Tecnologia das memórias RAM
Até agora só falamos dos formatos usados pelos módulos de memória. Mas estes módulos são formados por chips de memória RAM com várias tecnologias diferentes. Desde a antiga tecnologia FPM até a moderna DDR2. Vamos detalhar um pouco mais essas tecnologias usadas em memória RAM, mostrando suas principais características.
FPM – Fast Page Mode
Quando os módulos de memória começaram a aparecer a tecnologia FPM foi a mais usada. A FPM é uma tecnologia que permite rápido acesso aos dados que estão na mesma linha da memória. Neste momento é bom explicar que um chip de memória RAM é formado por conjunto de matrizes de células de memória. Estas células recebem sinais de endereçamento e controle e fornece ou recebem um dado. Na prática, essas matrizes nada mais são tabelas com linhas e colunas.
Assim, simplificando, podemos dizer que um chip de memória é formado por um conjunto de tabelas de linhas e colunas. A figura abaixo exemplifica melhor o que foi dito. Estas tabelas também (ou matrizes) também são chamadas de bancos. Mas, cuidado! Estes bancos se referem à parte “interna” dos chips de memória! Não têm a ver com os bancos de memória que veremos mais adiante.
Por isso, na maioria das vezes, vou chamar os “bancos” dos chips de memória de “tabelas” para não confundir com os bancos formados pelo conjunto de módulos de memória.

Diagrama esquemático do funcionamento de um chip de memória com matrizes (tabelas) de 4096 linhas e 1024 colunas.
Os chips com tecnologia FPM são geralmente encontrados em módulos SIMM (30 e 72 vias). Mas também podem ser achados em módulos DIMM de 168 vias e SODIMM.
EDO – Extended Data Out
A tecnologia EDO é uma evolução da tecnologia FPM. Nela a leitura de dados da memória é otimizada, fazendo com que os chips com tecnologia EDO sejam cerca de 10 a 20% mais rápidos que os chips FPM. Chips com tecnologia EDO são achados comumente em módulos SIMM de 72 vias e também em módulos DIMM de 168 vias e SODIMM.
SDRAM – Synchronous DRAM
As memórias com tecnologias FPM e EDO não são sincronizadas com o processador. Assim, muitas vezes, o processador é obrigado a esperar um tempo até que estas memórias estejam prontas para poderem fornecer um dado. Por outro lado a tecnologia SDRAM permite que as memórias sejam sincronizadas com o processador. Assim o controlador de memória sabe exatamente em que ciclo de clock a informação estará disponível para o processador, evitando que o processador espere os dados.
A maioria dos micros atuais usa memórias DRAM síncronas (SDRAM) ou derivadas desta tecnologia (DDR, etc.). Isto significa que a memória funciona sincronizada pelo sinal de clock. A mudança no sinal é registrada na subida ou descida do sinal de clock. No intervalo entre a subida e a descida do sinal de clock o mesmo permanece num estado imutável ou instável. O uso do clock do sistema com memórias DRAM permite que o sistema trabalhe de maneira bastante rápida, pois este é previsível. O clock da memória tem dois parâmetros básicos:
- O período do clock – que é a quantidade de tempo gasta em um ciclo de clock
- A freqüência do clock – que é o número de ciclos de clock por segundo, clock/seg = hertz.
A relação entre eles é: f = 1/T. A figura abaixo mostra a representação do sinal de clock usado nas memórias SDRAM.

Sinal de clock usado nas memórias SDRAM
As memórias FPM e EDO vêm com códigos que indicam o seu tempo de acesso, medido em nanosegundos. As memórias SDRAM também vêm com estes códigos, mas na verdade eles não indicam o tempo de acesso e sim o tempo de ciclo, melhor dizendo, o clock com o qual a SDRAM trabalha. Encontramos memórias SDRAM de 66 MHz, 100 MHz e 133 MHz. Essas memórias são também conhecidas por PC66, PC100 e PC133 respectivamente. Os chips de memória SDRAM são montados em módulos DIMM de 168 vias.
Memória - Parte 9
Direct Rambus (Rambus DRAM)
A Direct Rambus é uma tecnologia de DRAM inovadora em relação aos principais projetos de memória convencionais. Quando foi lançada, a Direct Rambus era extraordinariamente rápida se comparada com tecnologias antigas de memória. Ela transfere dados a velocidades de até 800 MHz em um barramento de 16-bits chamado Direct Rambus Channel. Esta alta taxa de transferência é possível devido a uma facilidade chamada "double clocked," que permite que operações ocorram tanto no lado de subida como o de descida do clock. Assim, cada dispositivo de memória em um módulo RDRAM provê uma largura de banda de até 1,6 Gigabytes por segundo, duas vezes a largura de banda das memórias SDRAM de 100 MHz. Porém é uma tecnologia proprietária e cara e por isso seu usa não se difundiu muito.
A tecnologia RDRAM continua evoluindo e já temos módulos que transferem 32 bits a 1066 MHz. Mas, por ser uma tecnologia proprietária, é cada vez mais difícil encontrar placas-mãe que suportem este tipo de memória.
DDR-SDRAM – Double Data Rate SDRAM
A tecnologia DDR-SDRAM é um avanço em relação ao padrão SDRAM simples. As memórias Single Data Rate (as SDRAM) só transferem dados na subida do sinal de clock. As memórias DDR-SDRAM transferem dados na subida E na descida do sinal de clock, dobrando a taxa de transferência de dados (data rate). Assim uma memória DDR-SDRAM operando num clock de 100 MHz (real) consegue desempenho equivalente a 200 Hz (efetivo).
A seguinte tabela mostra os vários termos usados quando classificamos memórias DDR. E essa quantidade de termos é que confunde a maioria dos usuários. Clock é o clock “real” das memórias. O clock “efetivo” é o dobro do clock real pois as memórias são DDR. Esses são valores para os chips de memória. Já os módulos são classificados pela taxa de transferência de dados. Como cada módulo tem 8 bytes (64 bits) as taxas variam de 1600 MB/s (200 MHz DDR) a 3200 MB/s (400 MHz DDR). O último termo é o tempo de acesso e está relacionado ao clock real.

Os chips com tecnologia DDR são encontrados em módulos no formato DIMM de 184 vias que são PC1600 (DDR 200), PC2100 (DDR 266), PC2700 (DDR 333) e PC3200 (DDR400)
DDR2
A tecnologia DDR2 é muito recente e ainda são poucas as placas-mãe que têm suporte às memórias DDR2. O princípio é bastante interessante. Na verdade, é uma aplicação de DDR duas vezes (daí o nome DDR2). Nas memórias SDRAM, 64 bits saem das células de memória e entram em um circuito especial do módulo de memória chamado buffer de Entrada e Saída (E/S). É esse circuito que entrega ou recebe dados que vão para o chipset. Num módulo SDRAM de 100 MHz tanto o clock do chip de memória quanto o clock do buffer de entrada e saída valem 100 MHz. E como os dados são lidos somente na subida do clock, o clock do módulo também é de 100 MHz.
Nas memórias DDR que funcionam a 100 MHz de clock real, o clock do chip de memória e do buffer de E/S também é de 100 MHz. O módulo DDR trabalha com um clock de 100 MHz, mas o clock dos dados “efetivo” de 200 MHz, pois as transferências de dados são fitas na subida e na descida do sinal de clock.
Já nas memórias DDR2 com chips de trabalham a 100 MHz de clock real, o buffer de E/S usa a técnica de DDR para dobrar o clock do módulo para 200 MHz. E o DDR age novamente dobrando os 200 MHz e fazendo com que o clock dos dados efetivo chegue a 400 MHz.
O truque tanto no caso do DDR como no caso do DDR2 fica por conta dos buffers de E/S que têm que ser projetados adequadamente para funcionar nestas freqüências. A figura abaixo mostra o esquema de funcionamento das memórias DDR e DDR2. As primeiras memórias DDR2 serão de 400 e 533MHz. Mas logo teremos DDR2 de 667 MHz e 800 MHz. A DDR2 de 533 MHz está sendo chamada de PC2 4200, pois sua taxa de transferência chega a 4200 MB/seg.
O quadro a seguir compara algumas das características das memórias DDR com as novas DDR2:


Comparativo da forma de funcionamento das memórias SDRAM, DDR e DDR2.
Memória - Parte 10
Outras tecnologias relacionadas à memória RAM
Verificação de erros
A verificação de erros que podem ocorrer nos chips de memória é uma grande preocupação dos fabricantes. Existem no mercado, basicamente, dois tipos de verificação de erro nos módulos de memória: paridade e ECC. Normalmente as memórias com paridade ou ECC são usadas somente onde a confiabilidade da máquina é imprescindível, tais como servidores de empresas, Workstations para computação cientifica, etc. Não se preocupe se seu micro não possui memórias com verificação de erros, pois a probabilidade de um erro ocorrer num módulo de memória atualmente é quase zero.
Paridade
A paridade é um método de verificação de erros de memória que apenas indica que houve um erro. Ela não é capaz de corrigi-lo. Quando se usa paridade em um módulo de memória, um bit extra é armazenado na memória a cada byte (8 bits), ou seja, a “célula” de memória passa a ter 9 bits ao invés de apenas 8. Existem dois tipos de paridade: paridade par e paridade ímpar.
O processo de verificação de paridade pode ser resumido no quadro abaixo:

A paridade tem suas limitações. Ela é capaz de detectar erros nos bits, mas não pode corrigi-los. Além disso, se houver erros em mais de um bit, a paridade poderá falhar no reconhecimento deste erro. Felizmente essa situação de erro é muito rara.
ECC (Error Correction and Control)
O ECC é o método de verificação de integridade de dados mais usado atualmente. A grande diferença entre o ECC e a paridade é que com a técnica ECC podemos verificar e corrigir erros de 1 bit. Com uso de memórias com ECC, erros em um só bit são corrigidos de forma automática, sem que o usuário saiba que eles ocorreram. Dependendo da forma de que o controlador de memória for implementado, podemos também detectar os raríssimos erros em mais de um só bit. Mas, neste caso, a técnica ECC não vai conseguir corrigi-los.
Usando um algoritmo matemático e trabalhando em conjunto com o controlador de memória, o circuito ECC acrescenta os bits ECC aos dados e os armazena na memória. Quando a CPU lê os dados dos módulos que usam ECC, o controlador de memória lê os bits de ECC e determina se um ou mais bits estão corrompidos. Se apenas um bit estiver errado ele é corrigido e os dados são enviados para a CPU. Se houver mais de um bit errado é gerado um erro.
Registradores e Buffers
Os Registradores e os Buffers são circuitos eletrônicos especiais que melhoram a confiabilidade das memórias “reforçando” o nível dos sinais que controlam a operação dos chips de memória. Estes circuitos podem ser encontrados fora (na placa-mãe) ou dentro do próprio módulo de memória. Quando os Registradores ou Buffers estão presentes no próprio módulo de memória eles permitem que as placas-mãe possam trabalhar com módulos de memória com maior capacidade e também com um número maior de módulos.
É por este motivo que os módulos “registrados” ou “buferizados” só são encontrados normalmente em servidores ou Workstations (que costumam usar maiores quantidades de RAM). É importante lembrar que módulos não registrados/buferizados não podem ser instalados junto com módulos registrados/buferizados.
Quando usamos memórias do tipo EDO ou FPM o processo de reforço de sinais é chamado de buferização (usamos circuitos chamados buffers). A buferização não implica em perda de desempenho.
Já quando usamos memórias do tipo SDRAM ou DDR o processo de reforço de sinais é conseguido com o uso de registradores. Esse registradores causam um atraso de um ciclo de clock na leitura/escrita da memória. Ë um preço a se pagar pela maior quantidade de memória a ser usada.
Módulo de memória registrados e não-registrados
Memória - Parte 11
Bancos de Memória
A memória RAM do PC costuma ser organizada na forma de bancos de memória. Um banco de memória é formado por um ou mais módulos de memória, dependendo do tipo de placa-mãe e da tecnologia usada. Por exemplo, nas antigas placas para Pentium que trabalhavam quase sempre com memórias do tipo EDO e formato SIMM de 72 Vias, os bancos de memória eram formados por dois módulos de igual capacidade.
Se o banco de memória não estiver completo, o processador não consegue usar a memória daquele banco. Atualmente, cada encaixe (slot) de memória existente na placa-mãe pode conter um ou dois bancos de memória. Pode parecer estranho um encaixe possuir dois bancos de memória, mas é que hoje temos módulos de memória com um banco (“single-bank”) ou dois bancos (“dual-bank”) como veremos no próximo tópico.
Podem existir também algumas regras específicas para os bancos de memória tais como: o primeiro banco de memória tem que estar preenchido com o módulo de maior capacidade, etc. A tabela abaixo foi retirada de um manual de placa-mãe. Ela mostra que no encaixe para módulos no formato DIMM número 1 (DIMM1) podemos ter dois bancos de memória (0 e 1). Se o módulo encaixado for single-bank, o banco 0 será preenchido e o banco 1 ficará vazio. Neste exemplo, o banco 1 só será preenchido se usarmos um módulo de memória dual-bank.

Módulos “Single-Bank” e “Dual-Bank”
Acabamos de ver que os módulos de memória também podem ser divididos em módulos “single-bank” e “dual-bank”. Num módulo “single-bank” só existem um conjunto de chips de memória, ou melhor, um banco de memória RAM. Já o módulo “dual-bank” possui o dois conjuntos de chips de RAM e usa um processo conhecido como chip-select (CS) para alternar entre os bancos ativos e não-ativos de memória. Essa arquitetura de bancos é independente do módulo ser registrado/não-registrado e/ou ECC/não-ECC. É importante notar que o suporte a memória no nível de chipset é determinada pelo número de bancos de memória suportados em cada encaixe de memória (slot) e não tem a ver com o número de módulos que podem ser instalados na placa-mãe.

Comparativo da forma de funcionamento dos módulos single-bank e dual-bank.
Outra coisa muito importante: “single-bank” não é sinônimo de “single-side”. Módulos “single-side” são aqueles que só possuem chips em um lado do PCB, ficando o outro lado vazio. Da mesma forma, “dual-bank” não é sinônimo de “dual-side”. Módulos “dual-side” são aqueles que possuem chips nos dois lados do PCB.
Arquitetura “Single-Channel” e “Dual-Channel”
Já vimos que a CPU se comunica com o chip controlador de memória (chamado de “northbridge”) através de um conjunto de “fios” chamado de FSB (Front Side Bus) ou barramento frontal. O northbridge é um dos chips que compõe o chipset da placa-mãe. Por sua vez o northbridge se comunica e controla a memória RAM através de um conjunto de sinais chamado de Memory Bus ou Barramento de Memória. O Barramento de memória é independente do FSB e pode ou não funcionar na mesma velocidade que ele.

Esquema de funcionamento da memória.
Uma nova arquitetura de memória que está se tornando bastante popular é a chamada “Dual-Channel” Memory ou Canal de memória duplo. Como no exemplo anterior a CPU se comunica com o northbridge através do FSB de 64 bits. Porém, nesta arquitetura, o northbridge se comunica com a memória através de dois barramentos de memória completamente independentes, cada um com 64 bits de largura. O segundo barramento de memória permite uma maior transferência de dados entre os módulos de memória e o northbridge. Esta técnica reduz o tempo que a CPU espera pelos dados da memória. Este tempo de espera é chamado também de latência.

A arquitetura “Dual-Channel” reduz a latência com que a CPU recebe os dados da memória.
A arquitetura “dual-channel” depende do chipset, ou seja, para poder usar “dual-channel” a minha placa-mãe tem que suportar essa tecnologia. Não basta apenas colocar dois módulos iguais de memória em dois slots livres da placa-mãe. Aliás, mesmo nas placas que possuem suporte à memórias “dual-channel”, para este ser “ativado” os módulos de memória tem que ser encaixados em slots especialmente designados para isso. Se o encaixe for feito de em qualquer slot, sem cuidado, as memórias poderão trabalhar em modo “single-channel” ao invés de “dual-channel”.

Para a arquitetura “Dual-Channel” funcionar devemos colocar módulos iguais nos encaixes 1 e 3 (“azuis”). Se quisermos aumentar a memória e continuar com “Dual-channel” temos que preencher os encaixes 2 e 4 com módulos iguais. Se colocarmos módulos iguais nos encaixes 1 e 2 (ou 3 e 4) as memórias funcionarão no modo “single-channel”.


