Introdução

As memórias são as responsáveis pelo armazenamento de dados e instruções em forma de sinais digitais em computadores. Para que o processador possa executar suas tarefas, ele busca na memória todas as informações necessárias ao processamento.

Um chip de memória é um exército de clones, formado por um brutal número de células idênticas, organizadas na forma de linhas e colunas, de forma similar a uma planilha eletrônica.

O chip de memória em si serve apenas para armazenar dados, não realizando nenhum tipo de processamento. Por isso, é utilizado um componente adicional, o controlador de memória, que pode ser incluído tanto no chipset da placa mãe, quanto dentro do próprio processador, como no caso do Athlon 64.

Para acessar um determinado endereço de memória, o controlador primeiro gera o valor RAS (Row Address Strobe), ou o número da linha da qual o endereço faz parte, gerando em seguida o valor CAS (Column Address Strobe), que corresponde à coluna.

Quando o RAS é enviado, toda a linha é ativada simultaneamente; depois de um pequeno tempo de espera o CAS é enviado, fechando o circuito e fazendo com que os dados do endereço selecionado sejam lidos ou gravados:

Figura 1 – Mapa de Memória


Não existe um caminho de volta, ligando cada endereço ao controlador de memória. Ao invés disso, é usado um barramento comum, compartilhado por todos os endereços do módulo. O controlador de memória sabe que os dados que está recebendo são os armazenados no endereço X, pois ele "lembra" que acabou de acessá-lo.

Antigamente (na época dos módulos de 30 vias), cada chip de memória se comportava exatamente desta forma, lendo um bit de cada vez. Apesar disso, o processador lia 32 bits de dados a cada ciclo, de forma que eram usados 4 pentes, com 8 chips cada um.

Do ponto de vista do processador, não existia divisão, os chips eram acessados como se fossem um só. O processador não via 32 endereços separados, em 32 chips diferentes, mas, sim, um único endereço, contendo 32 bits.

Nos módulos DIMM atuais, são geralmente usados 8 chips de 8 bits cada um, formando os 64 bits fornecidos ao processador. Existem ainda, módulos com 16 chips de 4 bits cada, ou ainda, módulos com 4 chips de 16 bits (comuns em notebooks). Do ponto de vista do processador, não faz diferença, desde que, somados os chips totalizem 64 bits.

Imagine que o controlador de memória envia seqüências com 4, 8 ou 16 pares de endereços RAS e CAS e recebe de volta o mesmo número de pacotes de 64 bits. Em casos onde o processador precisa de apenas alguns poucos bytes, contendo uma instrução ou bloco de dados, ele precisa ler todo o bloco de 64 bits adjacente, mesmo que seja para descartar os demais.

Nas placas dual-channel, continuamos tendo acessos de 64 bits, a única diferença é que agora a placa mãe é capaz de acessar dois endereços diferentes (cada um em um pente de memória) a cada ciclo de clock, ao invés de apenas um. Isso permite transferir o dobro de dados por ciclo, fazendo com que o processador necessite esperar menos tempo ao transferir grandes quantidades de dados.

Na verdade, nos PCs atuais, praticamente qualquer dispositivo pode acessar a memória diretamente, através dos canais de DMA (Direct Memory Access) disponíveis através do barramento PCI, AGP, PCI Express e até mesmo a partir das portas SATA, IDE e USB. Naturalmente, todos os acessos são coordenados pelo processador, mas como a memória é uma só, temos situações em que o processador precisa esperar para acessar à memória, que está sendo acessada por outro dispositivo.

Existem algumas formas de melhorar o desempenho da memória RAM:

1. Aumentar o número de bits lidos por ciclo, tornando o barramento mais largo como o aumento de 32 para 64 bits, introduzida pelo Pentium 1, que continua até os dias de hoje. O problema em usar um barramento mais largo é que o maior número de trilhas necessárias, tanto na placa mãe, quanto nos próprios pentes de memória, aumentam o custo de produção.

2. Acessar dois ou mais módulos de memória simultaneamente, como nas placas dual-channel. O problema é que neste caso precisamos de dois pentes, além de circuitos e trilhas adicionais na placa mãe.

3. Criar pentes de memória mais rápidos, como nas memórias DDR e DDR2. A questão da velocidade pode ser dividida em dois quesitos complementares: o número de ciclos por segundo e a latência, que é o tempo que a primeira operação numa série de operações de leitura ou escrita demora para ser concluída. O tempo de latência poderia ser comparado ao tempo de acesso de um HD.

É aqui que entram as diferentes tecnologias de memórias que foram introduzidas ao longo das últimas décadas, começando pelas memórias regulares, usadas nos XTs e 286, que evoluíram para as memórias FPM (Fast Page Mode), usadas em PCs 386 e 486, em seguida para as memórias EDO (Extended Data Out), usadas nos últimos micros 486 e no Pentium. Essas três primeiras tecnologias foram substituídas pelas memórias SDRAM, seguidas pelas memórias DDR e DDR2 usadas atualmente.