Memórias de Computador

3. TIPOS DE MEMÓRIA

Um dos grande problemas enfrentados pelo processador do micro era o acesso à memória RAM. Como o processador é mais rápido do que a memória, ele tem de ficar esperando a memória ficar pronta quando precisa enviar dois dados consecutivos à memória. O grande problema é com o desempenho do micro. Essa espera - chamada wait state - faz com que o processador seja subutilizado, pois em grande parte do tempo ele fica fazendo absolutamente nada, apenas esperando a memória RAM ficar pronta para conversar com ele. Esse problema foi resolvido com o uso do cache de memória, porém às vezes o controlador de cache não é rápido o suficiente para copiar os dados da memória RAM para o cache de memória antes do processador precisar desses dados. Quando isso ocorre, o processador tem de ler os dados diretamente na RAM - que é mais lenta que ele. Esse tipo de acesso diminui o desempenho do micro. Por esse motivo, novas tecnologias de memória RAM foram inventadas, para que o desempenho do micro não seja prejudicado toda a vez que o processador precisar buscar dados diretamente na RAM. Entre essas tecnologias estão a FPM, a EDO e a SDRAM.

MEMÓRIAS FPM (FAST PAGE MODE)

A primeira melhora significativa na arquitetura das memórias veio com o FPM, ou modo de acesso rápido. A idéia é que, ao ler um arquivo qualquer gravado na memória, os dados estão na maioria das vezes gravados seqüencialmente. Não seria preciso então enviar o endereço RAS e CAS para cada bit a ser lido, mas simplesmente enviar o endereço RAS (linha) uma vez e em seguida enviar vários endereços CAS (coluna). Devido ao novo método de acesso, as memórias FPM conseguem ser cerca de 30% mais rápidas que as memórias regulares, e apesar de já não serem fabricadas hà bastante tempo, foram utilizadas em micros 386, 486 e nos primeiros micros Pentium. Você encontrará memórias FPM na forma de pentes SIMM de 30 ou 72 vias e com velocidades de acesso de 80, 70 e 60 nanos, sendo as de 70 nanos as mais comuns. Os tempos de acesso representam em quanto tempo a memória pode disponibilizar um dado requisitado. Quanto mais baixos forem os tempos de espera, mais rápidas serão as memórias. Instaladas em uma placa mãe que funcione com BUS de 66 MHz, os intervalos de espera de memórias FPM (Wait States) não podem ser menores do que 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.

MEMÓRIAS EDO (EXTENDED DATA OUTPUT)

As memórias EDO foram criadas em 1994, e trouxeram mais uma melhoria significativa no modo de acesso a dados. Além de ser mantido o modo de acesso rápido das memórias FPM, foram feitas algumas modificações para permitir mais um pequeno truque, através do qual um acesso à dados pode ser iniciado antes que o anterior termine, permitindo aumentar perceptivelmente a velocidade dos acessos. O novo modo de acesso permite que as memórias EDO funcionem com tempos de acesso de apenas 5-2-2-2 em uma placa mãe com BUS de 66 MHz, um ganho de 25%. Apesar de já ultrapassado, este tipo de memória ainda é muito usado atualmente, sendo fabricado em velocidades de 70, 60 e 50 nanos, com predominância dos módulos de 60 nanos. As memórias EDO são encontradas em módulos de 72 vias, existindo também alguns casos raros de memórias EDO na forma de módulos DIMM. As melhorias na arquitetura das memórias EDO tornaram-nas incompatíveis com placas mãe equipadas com chipsets mais antigos. Basicamente, apenas as placas para processadores Pentium e algumas placas mãe para 486 com slots PCI (as mais recentes) aceitam trabalhar com memórias EDO. Existem também placas tolerantes que funcionam com memórias EDO, apesar de não serem capazes de tirar proveito do modo de acesso mais rápido, e finalmente, as placas incompatíveis, que nem chegam a inicializar caso sejam instaladas memórias EDO.

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. O mais interessante é que o custo de produção das memórias BEDO é praticamente o mesmo das memórias EDO e FPM. O maior impedimento à popularização das memórias BEDO foi a falta de suporte por parte dos chipsets Intel, que suportavam apenas memórias EDO e SDRAM (no caso dos mais modernos). No final, as sucessoras das memórias EDO acabaram sendo as memórias SDRAM, que apesar de um pouco mais caras, oferecem uma performance levemente superior às BEDO e desfrutam de compatibilidade com todos os chipsets modernos.

MEMÓRIAS SDRAM (SYNCHRONOUS DYNAMIC RAM)

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 ou 33 MHz), rodam sem problemas em placas para processadores Pentium, que funcionam a 66 MHz. Na verdade, as memórias continuam funcionando 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 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 de uma memória SDRAM é sempre de uma leitura por ciclo. Independentemente da velocidade de barramento utilizada, a temporização das memórias SDRAM poderá ser de 5-1-1-1. 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 FMP, consumindo 5 ciclos. Como é preciso que a memória SDRAM a ser usada seja rápida o suficiente para acompanhar a placa mãe, encontramos no mercado versões com tempos de acesso entre 15 e 6 nanossegundos. Para determinar a velocidade máxima de operação de uma memória SDRAM, basta dividir 1000 pelo seu tempo de acesso: uma memória SDRAM com tempo de acesso de 15 nanos poderia funcionar com BUS de apenas 66 MHz, já que 1000/15 = 66. Outra com tempo de acesso de 12 nanos já poderia funcionar com BUS de 75 ou até 83 MHz, já que 1000/12 = 83. Para confirmar a validade deste cálculo, basta dividir 1 segundo por 83.000.000 de ciclos da placa mãe e teremos justamente 12 nanos. Vale lembrar que estes valores são apenas teóricos; uma memória SDRAM comum, com tempo de acesso de 10 nanos por exemplo, não tem garantido o seu funcionamento com BUS de 100 MHz, pois foi projetada para ter seu funcionamento garantido a apenas 66 MHz. Justamente o fato de funcionarem sincronizadas com os ciclos da placa mãe torna as memórias SDRAM muito mais rápidas que suas antecessoras. Uma memória SDRAM com tempo de acesso de 12 nanossegundos consegue ser cerca de 30% mais rápida que uma memória EDO de 60 nanos num BUS de 66 MHz (5 + 1 + 1 + 1 = 8 ciclos por 4 acessos na memória SDRAM contra 5 + 2 + 2 + 2 = 11 ciclos por 4 acessos da memória EDO) e quase 50% mais rápida num BUS de 83 MHz (5 + 1 + 1 + 1 = 8 da memória SDRAM contra 6 + 3 + 3 + 3 = 15 da memória EDO). Caso fosse utilizado um barramento de 100 MHz (neste caso precisaríamos de memórias PC-100), as memórias EDO se mostrariam quase 2,5 vezes mais lentas (5 + 1 + 1 + 1 = 8 contra 7 + 4 + 4 + 4 = 19). Por não trabalharem sincronizadas com o clock da placa mãe, as memórias FPM e EDO poderiam trabalhar com qualquer velocidade 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 velocidades de barramento superiores a 75 MHz, apenas memórias SDRAM.

SDRAM II (DDR)

(SDRAM II, Double Data Rate - Taxa de Dados Dupla) é a nova geração da SDRAM. A DDR usa novos circuitos de sincronização, mais avançados, que aumentam ainda mais a sua velocidade. DDR basicamente é duas vezes mais rápida que a SDRAM, sem aumentar a velocidade nominal em MHz, que se mantém em 66 ou 100MHz. Esta memória estará em produção ainda em 1998.

SLDRAM (SyncLink)

É um consórcio de fabricantes de DRAM que pode ser o competidor mais próximo da memória Rambus®. Está sendo desenvolvida por 12 fabricantes de DRAM e de computadores. SLDRAM é uma extensão da linha SDRAM que estende o número de bancos existentes de 4 para 16. Além disto, utiliza novas interfaces e lógica de controle, e terá de 50 a 60 pinos. Atualmente está em fase de desenvolvimento e deverá ser produzida em 1999.

RDRAM® (Rambus DRAM)

É um novo design que envolve todo o sistema, chip a chip, utilizando um bus simplificado em alta freqüência. Entenda RDRAM como um desenho integrado, em nível de sistema, e não um desenho em nível de chip como as memórias convencionais. Foi utilizada a princípio em estações gráficas em 1995, e trabalha com uma lógica de sinal de 600 MHz. Está atualmente em produção, e é utilizada por exemplo no jogo Nintendo 64®, placas de som Creative Labs® e em alguns sistemas da Gateway® e da Micron®. A Intel® tem um acordo com a Rambus para início de produção de placas baseadas nesta arquitetura já em 1999. As Rambus Concomitantes e Diretas, evoluções deste novo padrão, não estão previstas para entrar em operação antes de 1999.

Memórias

SDRAM

DDR SRAM

SLDRAM

RDRAM

RDRAM Concomitante

RDRAM Direta

Velocidade

125MB/Seg

200Mb/Seg

400Mb/Seg

600Mb/Seg

600Mb/Seg

1.6Gb/Seg

MHz

125

200

400

600

600

800

Circuito*

JEDEC

JEDEC

Consórcio SLDRAM

Rambus

Rambus

Rambus

Disponibilidade

1997

1998

1999

1995

1997

1999

Voltagem

3.3v

3.3v

2.5v

3.3v

3.3v

2.5v

(*) JEDEC: Joint Electronic Device Engineering Council, órgão que controla os padrões de produção como tamanho das placas, número de contatos, espessura, etc.

MEMÓRIAS PC-100 (MEMÓRIAS DE 100 MHZ)

O Padrão PC-100, desenvolvido pela IBM, consiste numa série de especificações que visam a fabricação de memórias capazes de funcionar estavelmente com velocidade de barramento de 100 MHz. Teoricamente, qualquer memória SDRAM com tempo de acesso abaixo de 10 nanos poderia funcionar a 100 MHz, pois 1000/10 = 100. O problema é que, apesar das memórias SDRAM comuns (chamadas de PC-66, por terem funcionamento garantido a apenas 66 MHz) oferecerem tempos de acesso de até 9 ou mesmo 8 nanos, elas muitas vezes possuem um tempo de latência muito alto, falhando quando obrigadas a funcionar a 100 MHz. Apesar de inicialmente os fabricantes terem encontrado dificuldades para produzir as memórias PC-100, com a proliferação dos processadores que rodam com BUS de 100 MHz, como as versões de 350, 400 e 450 MHz do Pentium II e os K6-2 de 300, 350, 400 e 450 MHz, essas memórias vêm se tornando populares. Encontramos à venda atualmente, memórias PC-100 com tempos de acesso de 10, 9, 8, 7 ou até mesmo 6 nanos. Quando dizemos "tecnologia de memória RAM", estamos nos referindo à tecnologia de construção dos circuitos de memória. Esses circuitos são vendidos soldados em pequenos módulos de memória. Atualmente existem dois módulos de memória no mercado: SIMM-72 e DIMM.

O módulo SIMM-72 possui 72 terminais e é um módulo de 32 bits. Os circuitos desse tipo de memória podem ser FPM ou EDO. Como é um módulo de 32 bits, devemos instalá-lo de dois em dois em micros a partir do Pentium, pois todos os novos processadores acessam a memória a 64 bits por vez. Isto quer dizer que, se você quiser instalar mais 32 MB de memória EDO em seu micro, precisará comprar dois módulos EDO de 16 MB cada.

Fig. 9 - Memória SIMM-72

Já o módulo DIMM possui 168 terminais e é um módulo de 64 bits. Atualmente os circuitos desse tipo de memória são SDRAM. Como é um módulo de 64 bits, sua instalação é mais descomplicada: basta apenas um único módulo instalado no micro.

Fig. 10 - Memória DIMM-72

A estrutura interna da memória SDRAM é bem diferente da FPM e da EDO. Todas as memórias dinâmicas (tipo de memória usada para compor a RAM) armazenam seus dados internamente em uma matriz de capacitores. As memórias FPM e EDO possuem uma única matriz de capacitores. Já a memória SDRAM possui duas matrizes. Com isso, dois dados podem ser lidos ou armazenados por vez. Essa é a principal diferença da SDRAM para as demais tecnologias e que faz com que ela seja mais rápida.

Memória Cache

cache é uma memória especial de alta velocidade projetada para acelerar o processamento das instruções dadas à memória principal pela CPU. A CPU pode acessar instruções e dados localizados na memória cache muito mais rapidamente do que na memória principal. Por exemplo, um típico sistema de 100 mhz, leva 180 nanosegundos para obter uma informação da memória principal e somente 45 nanosegundos para obtê-las da memória cache. O cache consiste em dois conjuntos de chips de RAM estática (SRAM). O primeiro é igual ao chip de memória tradicional e o segundo consiste, geralmente, em chips de encapsulamento DIPP (Dual In-Line Package) chamados de TAG RAM. A função da TAG RAM é armazenar informações sobre os dados contidos nos chips de armazenamento. Apesar de todos os processadores a partir do 486 possuírem uma pequena quantidade de cache incorporado ao próprio núcleo do processador, chamado de cache primário ou L1, ele é muito pequeno (justamente pelas memórias usadas no cache L1 serem extremamente caras), por isso, usamos também uma quantidade um pouco maior de tipos um pouco mais baratos de memória cache na placa mãe. Este cache é chamado de cache secundário, ou L2. Ambos trabalham em conjunto, formando uma espécie de escada de três degraus para os dados. O cache armazena dados em linhas, e cada linha é composta por 16 bytes. No cache L1, também chamado cache direito, a memória é dividida em blocos do mesmo tamanho que o próprio cache, e cada bloco é subdividido em linhas. Quando um dado é solicitado à memória principal e não está no cache, as linhas do dados são copiadas para o cache ao mesmo tempo que a informação é lida na memória principal. No cache as linhas de vários dados diferentes podem estar embaralhadas, sem o risco de uma 'confusão' dos dados, pois toda a informação sobre os índices dos blocos de onde cada linha foi copiada pode ser encontrada na TAG RAM. Quando o cache está cheio de dados e a CPU solicita alguma leitura em determinado espaço da memória o controlador do cache intercepta o endereço paralelamente ou mesmo antes que o circuito controlador da memória RAM comece a procurar o dado. Em seguida, consulta a TAG e verifica se na posição correspondente à linha solicitada está armazenado o número do bloco no qual a CPU solicitou a leitura. Se os números coincidirem, ocorre o chamado 'cache hit', ou seja, o cache contém uma cópia exata da linha onde está o dado solicitado e fornece o referido dado à CPU numa mínima fração de tempo que seria gasto para buscá-lo e lê-lo na memória RAM, e qualquer processo de procura ou leitura que o controlador de RAM tenha iniciado é interrompido. Na verdade, quando se está trabalhando com determinado aplicativo, as solicitações à RAM ocorrem com muita freqüência e o cache vai se enchendo de dados localizados em endereços muito próximos. O resultado é uma probabilidade de 98% da ocorrência de um cache hit, mesmo em sistemas que contenham pouco cache secundário. Como no geral a maior parte do tempo gasto por nossas máquinas é consumido em acessos à memória, o cache melhora consideravelmente o seu desempenho.

Escrita

Há dois tipos de cache: o 'write back' e o 'write through'. As boas placas-mãe trazem o cache 'write back'. O 'write through' é um cache que funciona apenas nas operações de leitura, não interferindo nas operações de escrita. Quando se trata de escrever um dado na memória RAM, isto é feito do modo convencional: envolvendo os eventuais estados de espera da RAM principal, mas copiado também para o cache, ou seja, escrito ao mesmo tempo no cache. Assim, no que diz respeito à escrita na memória, a única diferença entre as máquinas que utilizam o cache write through e as que não utilizam cache algum é que, nas primeiras, enquanto o dado é escrito na memória RAM, toda a linha onde ele foi gravado é copiada no cache. Assim, quando o dado for solicitado para leitura, ele já estará no cache. O cache 'write back' é mais caro (devido à lógica mais complexa de controle), porém acelera tanto o procedimento de leitura quando o de escrita já que, quando a CPU ordena que certo dado seja escrito em algum endereço da memória RAM, o circuito controlador do cache intercepta a solicitação e, ao invés de escrever o dado na lenta DRAM da memória principal, o escrevem nos chips no rápido SRAM do cache e, assim que os acessos à memória diminuírem, a memória principal será atualizada copiando-se nela os dados previamente escritos no cache. Evidentemente, controlar um sistema 'write back' é muito mais complicado, já que o controlador de cache tem que manter um rigoroso controle do que está no cache e do que está na memória RAM, pois, enquanto a memória RAM não é atualizada, posições de memória de mesmo endereço no cache e na memória RAM contém valores diferentes e não cópias do mesmo dado. É preciso então recorrer a um bit adicional na TAG RAM, o chamado 'bit sujo', que tem o funcionamento bastante similar ao de um bit de paridade: sempre que um dado é escrito apenas no cache, faz o 'bit sujo' correspondente assumir o valor 1. Assim que a memória RAM é atualizada o 'bit sujo' reassume valor zero. Desta forma, para saber se o mesmo endereço no cache e na memória principal contém dados iguais ou diferentes, basta verificar o 'bit sujo': se estiver valendo 1, os dados são diferentes e devem ser atualizados. Se estiver com o valor zero, são cópias idênticas.

voltar