• Drano Rauteon

O Passado - Memórias RAM FPM e EDO

Atualizado: há 5 dias

Nos PCs XT, 286 e nos primeiros 386 ainda não eram utilizados módulos de memória RAM. Ao invés disso, os chips eram instalados diretamente na placa-mãe, encaixados individualmente em colunas de soquetes (ou soldados), onde cada coluna formava um banco de memória.

Esse era um sistema antiquado e que trazia várias desvantagens, por dificultar upgrades ou a substituição de chips com defeito. Este sistema também é conhecido como "memória RAM regular". As memórias regulares são as mais primitivas quando falamos sobre memórias RAM.

Nelas, o acesso é feito da forma comum, enviando o endereço RAS, depois o CAS, um comando que indica se é uma escrita ou leitura (WE#) e aguardando o resultado para cada ciclo.

Isso funcionava bem nos microcomputadores XT e 286, onde o clock do processador era muito baixo, de forma que a memória RAM era capaz de funcionar de forma sincronizada com ele. Em um 286 de 8 MHz, eram usados chips com tempo de acesso de 125 ns (nanossegundos) e em um de 12 MHz eram usados chips de 83 ns.

O problema era que a partir daí as memórias da época atingiram seu limite e passou a ser necessário fazer com que elas operassem de forma assíncrona, onde o processador trabalha numa frequência mais alta que a memória RAM.

A partir do 386, a diferença passou a ser muito grande, de forma que as placas-mãe passaram a trazer chips de memória cache, dando início à corrida que conhecemos. Com o passar dos anos, a memória Cache passou a ficar dentro do processador, e assim se perpetua até hoje.

Quando começou a escalada por sistemas mais eficientes que não "atrasassem" o processador, também se implantou o conceito de modularidade de memória RAM. Com a chegada do padrão FPM, módulos SIPP e SIMM começaram a tomar o mercado...


Mas o que seriam estas siglas FPM, EDO, SIPP, SIMM e DIMM?

É isto que veremos neste texto!

Aqui serão apresentados as duas tecnologias de memória RAM que se perpetuaram nos anos 1990 em placas mãe AT...


FPM


A primeira melhora significativa na arquitetura das memórias veio com o FPM, sigla para Fast-Page Mode, ou em bom português "modo de paginação rápida".

A ideia é que, ao ler um bloco de instruções ou arquivo gravado na memória, os dados estão quase sempre gravados sequencialmente. 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 uma sequência de até quatro endereços CAS (coluna), realizando uma série rápida de quatro leituras.

O burst (sequência de acessos rápidos) de quatro leituras pode ser prolongado para oito, ou até mesmo dezesseis leituras consecutivas, desde que sejam lidos dados gravados em endereços adjacentes, da mesma linha.


Veja abaixo um diagrama de blocos internos de um chip de memória RAM com tecnologia FPM:

Diagrama 1 - Memória RAM FPM: Diagrama de blocos d'um chip da Micron com barramento de 16 bits


O primeiro ciclo de leitura continua tomando o mesmo tempo, mas as três leituras seguintes passam a ser bem mais rápidas. Graças a essa pequena otimização, as memórias FPM conseguem ser até 30% mais rápidas que as memórias regulares, sem grandes alterações nos chips de memória ou na técnica de fabricação.

Segundo dados obtidos num datasheet da Micron, o mesmo de onde foi retirado o Diagrama 1, "o ciclo FAST-PAGE-MODE é sempre iniciado com um endereço de linha sinalizado por RAS#, seguido por um endereço de coluna sinalizado em nível HIGH por CAS#. Colunas adicionais podem ser acessadas fornecendo endereços válidos e sinalizando pela entrada CAS#, segurando RAS# em nível LOW, executando assim

ciclos de memória mais rápidos. Retornar RAS# para nível HIGH encerra a operação FAST-PAGE-MODE. Levar RAS# e deixar CAS# em nível HIGH encerra um

ciclo de memória e diminui a corrente do chip para um nível de espera. O chip também é pré-condicionado para o próximo ciclo durante o tempo em que RAS# está em HIGH."


As memórias FPM foram utilizadas em PCs 386, 486 e nos primeiros Pentium, implementadas através de módulos SIPP / SIMM de 30 ou SIMM de 72 vias, com tempos de acesso de 80, 70 ou 60 ns, sendo as de 70 ns as mais comuns.

Instaladas em uma placa-mãe soquete 7, que trabalhe com barramento de 66 MHz, os intervalos de espera de memórias FPM podem ser de até 6-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 três ciclos para cada leitura subsequente.


CURIOSIDADE: Os tempos de espera das memórias podiam ser configurados no setup, através da opção "Memory Timing" ou termo similar, onde ficavam disponíveis opções como "slow", "normal" e "fast", que substituem os valores numéricos.


No caso das placas para 486, que operavam a clocks mais baixos (30, 33 ou 40 MHz), os tempos de espera podiam ser configurados com valores mais baixos, como 4-3-3-3 ou 3-2-2-2, já que, com menos ciclos por segundo, é natural que os tempos de resposta dos módulos correspondam a um número menor de ciclos da placa-mãe.

 

EDO


As memórias EDO, sigla para Extended Data Output (Saída de Dados Estendidos), foram introduzidas a partir de 1994 e trouxeram mais uma melhoria significativa no modo de acesso aos dados. Nas memórias FPM, uma leitura não pode ser iniciada antes que a anterior termine, mesmo dentro do burst de quatro leituras dentro da mesma linha. O controlador precisa esperar que os dados referentes à leitura anterior cheguem, antes de poder ativar endereço CAS seguinte.

Nas memórias EDO, o controlador faz a leitura enviando o endereço RAS, como de costume, e depois enviando os quatro endereços CAS numa frequência predefinida, sem precisar esperar que o acesso anterior termine. Os sinais chegam às células de memória na sequência em que foram enviados e, depois de um pequeno espaço de tempo, o controlador recebe de volta as quatro leituras.

O resultado acaba sendo exatamente o mesmo, no entanto, é feito de forma mais rápida. Usadas em uma placa soquete 7, operando a 66 MHz, as memórias EDO são capazes de trabalhar com tempos de acesso de apenas 6-2-2-2, ou mesmo 5-2-2-2 (nos módulos de 60 ns). Nos bursts de oito ou mais leituras, o ganho acaba sendo ainda maior, com um módulo FPM realizando a leitura dos oito endereços em 27 ciclos (6-3-3-3-3-3-3-3) e o EDO em 20 (6-2-2-2-2-2-2-2). Veja que o ganho é maior em leituras de vários endereços consecutivos, por isso alguns aplicativos se beneficiam mais do que outros.


O ciclo de página é sempre iniciado com um endereço de linha inserido por RAS#, seguido por um endereço de coluna inserido por CAS#. Colunas adicionais podem ser acessadas fornecendo endereços de coluna sinalizados por CAS# em nível HIGH e segurando RAS# em LOW, executando assim ciclos de memória mais rápidos. Retornando RAS# para HIGH termina o modo de operação de página, ou seja, fecha a página.

Em termos técnicos, a vantagem do EDO é a disponibilidade de saída de dados mesmo com CAS# em nível HIGH. O EDO prevê que o tempo de pré-carga do CAS# (tCP) ocorra sem que os dados sejam invalidados. Esta eliminação do controle de saída a partir da entrada CAS# fornece leituras em pipeline. As DRAMs FPM tradicionalmente desligam os Data Out Buffers (High-Z - Alta impedância) com a borda ascendente do sinal CAS#. DRAMs EDO-PAGE-MODE funcionam como DRAMs FPM, exceto que os dados permanecerão válidos ou se tornarão válidos enquanto CAS# estiver em nível HIGH durante leituras na memória, desde que RAS# e OE# sejam mantidos em nível LOW.


Em geral, o diagrama interno de um chip DRAM EDO é quase idêntico ao seu antecessor, o FPM. Note-o no próximo diagrama:

Diagrama 2 - Memória RAM EDO: Diagrama de blocos d'um chip da Siemens com barramento de 16 bits


Os módulos de memória EDO foram produzidos em versões com tempos de acesso de 70, 60 e 50 ns, com predominância dos módulos de 60 ns. Eles foram implementados principalmente em módulos SIMM de 72 vias, utilizados nos PCs 486 e Pentium fabricados a partir de 1995.

Existiram ainda alguns módulos EDO DIMM de 168 vias. Eles foram bastante raros, pois foram logo substituídos pelos módulos de memória SDR SDRAM.


CURIOSIDADE: No final da era Pentium, as memórias EDO enfrentaram a concorrência das memórias BEDO (Burst EDO), que utilizavam um sistema de pipeline para permitir acessos mais rápidos que as EDO. Em um barramento de 66 MHz, as memórias BEDO eram capazes de funcionar com temporização de 5-1-1-1, quase 30% mais rápido que as memórias EDO convencionais.

Em teoria as memórias BEDO eram interessantes, todavia, elas nunca foram usadas em grande escala. A tecnologia era propriedade da Micron Technology, que ansiava por cobrar royalties dos demais fabricantes caso fosse adotada em grande escala. Os fabricantes de memória trabalham com margens de lucro incrivelmente apertadas, de forma que a palavra “royalties” os dava tonturas :v. Ao invés se deixar levar pela Micron, eles investiram pesado no padrão SDR, que além de ser aberto, era tecnicamente superior, sendo o precursor daquilo que seria o DDR tempos depois...


Apesar dos diagramas mostrados anteriormente indicarem que ambas as tecnologias permaneceram muito semelhantes, as melhorias na arquitetura das memórias EDO tornaram-nas incompatíveis com placas-mãe equipadas com chipsets mais antigos. Em resumo, 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 para 486 “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.


CURIOSIDADE: Nesta época fazia-se necessário uma entrada OE# para indicar a saída de dados do buffer do chip FPM ou EDO para o controlador. O pino OE# é o contraponto da linha WE#. Enquanto WE# indica uma leitura quando em nível HIGH e uma gravação quando em nível LOW, OE# indica a liberação (Low-Z) do Data Out Buffer para enviar os dados ao controlador. Seria como um sinal de destravamento do buffer de saída:

Tabela 1 - Uma linha de controle excluída dos sistemas atuais...


As demais entradas e saídas do chip são utilizadas até hoje em sistemas DDR e GDDR...


Durante um ciclo de escrita, a entrada de dados (pinos DQ) é travada pela borda descendente de WE# ou CAS# (CASL# ou CASH#), o que ocorrer por último. A

"escrita antecipada" ocorre quando WE# é colocado em LOW antes CAS# ou com ele caindo para LOW. Durante os ciclos de "escrita antecipada", as saídas de dados (Data Out Buffer) permanecerão em High-Z, independentemente do estado de OE#.

Uma "escrita atrasada" ou "READ-MODIFYWRITE" ocorre quando WE# cai após CAS# (CASL# ou CASH#) ter sido colocado em LOW. Durante os ciclos de "escrita atrasada" ou READ-MODIFYWRITE, o OE# deve estar em HIGH para

desativar as saídas de dados do chip de RAM antes de aplicar os dados de entrada.


Todos os módulos de 30 vias são de memórias DRAM FPM, enquanto (com exceção de alguns módulos antigos) todos os de 168 vias são de memórias SDR. A confusão existe apenas nos módulos de 72 vias, que podem ser tanto de memórias EDO quanto de memórias FPM.

Para saber quem é quem, basta verificar o tempo de acesso. Todo módulo de memória traz seus dados estampados nos chips, na forma de alguns códigos.

O tempo de acesso é indicado no final da primeira linha. Se ela terminar com -7, -70, ou apenas 7, ou 70, o módulo possui tempo de acesso de 70 ns. Se por outro lado a primeira linha terminar com -6, -60, 6 ou 60 o módulo é de 60 ns.

Como quase todos os módulos de 70 ns são de memórias FPM, e quase todos os módulos de memórias EDO são de 60 ns, você pode usar esse método para determinar com 95% de certeza o tipo de memória utilizada.

Aqui vão algumas informações técnicas que descrevem o funcionamento destes dois tipos de memória RAM...


RAM Refresh


Como você já deve ter visto se pesquisou o básico sobre memórias RAM, suas células de memória se descarregam por completo na ausência de energia, retendo dados apenas quando houver alimentação elétrica. Pois bem, os estados 0 e 1 possíveis em cada célula de memória devem ser mantidos através do comando “Refresh” aplicado a cada pouco intervalo de tempo, que é definido também pela JEDEC e difere para cada tipo de RAM. Como exemplo, posso citar as memórias DDR2, onde um refresh é dado, no mínimo, a cada 64 milissegundos.


O processo de leitura na DRAM também é destrutivo e remove a 'carga' das células de memória em uma linha inteira, portanto, há um bloco de hardware no chip chamado de "amplificadores de sentido" (veja-os no Diagrama 1 e Diagrama 2) que abrange todas as colunas de cada matriz de memória, para armazenar temporariamente os dados.

Após uma leitura e travamento dos dados, os amplificadores de sentido reescrevem os dados na linha acessada antes de enviar o bit de uma única coluna para a saída. Isso significa que a leitura normal no chip pode atualizar uma linha inteira de memória em paralelo, acelerando significativamente o processo de atualização.

Um ciclo normal de leitura ou gravação atualiza uma linha de memória, mas não se pode confiar nos acessos normais para atingir todas as linhas dentro do tempo necessário, necessitando de um processo de atualização separado, e é aí que entra o "ciclo de atualização". O ciclo de atualização é semelhante ao ciclo de leitura, mas é executado mais rapidamente por dois motivos:

-> Para uma atualização, apenas o endereço da linha é necessário, portanto, um endereço de coluna não precisa ser aplicado aos circuitos de endereço do chip.

-> Os dados lidos nas células não precisam ser colocados nos buffers de saída ou no barramento de dados para serem enviados ao controlador de RAM.


Normalmente, o circuito de atualização consiste em um "contador de atualização" que contém o endereço da linha a ser atualizada - e que é aplicado nas entradas de endereço do chip - e um temporizador, que incrementa o contador para percorrer as linhas das matrizes. Este contador pode fazer parte do circuito do controlador de RAM ou então ser embutido no próprio chip de memória.

Independente disso, duas estratégias de agendamento foram criadas:

-> Atualização contínua: Uma série de ciclos de atualização são executados um após o outro até que todas as linhas tenham sido atualizadas. Ocorrem então acessos normais à memória, até que a próxima atualização total seja necessária.


-> Atualização distribuída: Os ciclos de atualização são realizados em intervalos regulares, intercalados com acessos à memória.


A atualização intermitente resulta em longos períodos quando a memória está indisponível, portanto, a atualização distribuída tem sido usada na maioria dos sistemas modernos, particularmente em sistemas de tempo real. Na atualização distribuída, o intervalo entre os ciclos de atualização é:

Onde:

-> iCR: Intervalo do ciclo de Refresh (medido em ns);

-> tR: Tempo de Refresh (medido em ns);

-> nL: Número de linhas da matriz de memória.


Os chips com tecnologia FPM e EDO empregam três maneiras padronizadas para fazer o refresh nas células, selecionadas por diferentes sequências de sinais nas linhas CAS e RAS, como pode ser evidenciado em um datasheet da Hyundai e da Micron:

Imagem 1 - Página inicial de folha de dados de duas grandes fabricantes mostrando as funcionalidades e características de seus produtos


Agora, a explicação de cada modo refresh:

-> RAS Only Refresh (Apenas atualização RAS): Neste modo, o endereço da linha a atualizar é fornecido pelas linhas do barramento de endereço, portanto, é usado com contadores externos presentes no controlador de memória;


-> CAS-Before-RAS (CAS antes da atualização do RAS): Abreviado por "CBR", este modo permite que o contador do chip mantenha o controle da linha a ser atualizada e o circuito externo apenas inicia os ciclos de atualização. Este modo usa menos energia porque os buffers de barramento de endereço de memória não precisam ser energizados;


-> Hidden Refresh (Atualização oculta): Esta é uma versão alternativa do CBR que pode ser combinada com um ciclo de leitura ou gravação anterior. A atualização é feita em paralelo durante a transferência de dados, economizando tempo.


Um CAS# para cada conjunto de oito linhas DQ


Tanto em sistemas FPM quanto em sistemas EDO, para cada 8 linhas DQ, isto é, um barramento paralelo com 8 linhas bidirecionais para transferências de dados, há uma respectiva entradas CAS#.

Isto significa que, num módulo, caso o barramento de cada chip seja de 4 bits, uma única entrada CAS# irá alimentar dois chips, fechando assim um barramento de 8 bits. Observe o Diagrama 3 e note que para dois chips x4 há apenas uma entrada CAS#.

Por outro lado, caso um único chip de RAM tenha um barramento de 16 bits, isto significa duas entradas CAS#, comumente referidas como "CASL#" e "CASH#".


Aprecie a figura abaixo, de uma memória EDO da Micron:

Tabela 2 - Para cada oito trilhas de dados há uma entrada CAS#


As matrizes de memória estão diretamente relacionadas com o barramento de dados, portanto, há a opção de acesso "BYTE" (8 bits) e "WORD" (16 bits). Para o modo de acesso "BYTE" apenas uma entrada CAS# é habilitada, sinalizando o endereço de coluna enviado ao chip pelas linhas Address. Quando o modo de acesso é "WORD", as duas entradas CAS# são habilitadas, uma após a outra, sinalizando o envio de dois endereços de coluna para o chip.


OBSERVAÇÃO: Lembre-se que é necessário um endereço de linha e outro de coluna para se mapear um único bit.


O detalhe principal é que cada entrada CAS# (CASL# e CASH#) controla sua correspondente lógica tri-state das linhas DQ (em conjunto com OE# e WE#). Em outras palavras:

-> Quando CASL# faz transição para LOW, seleciona um ciclo de acesso para o

barramento DQ0~DQ7, ou seja, sinaliza os endereços de coluna de matriz para os bits transmitidos entre as linhas DQ0~DQ7;

-> Quando CASH# faz transição para LOW, seleciona um ciclo de acesso para o barramento superior DQ8~DQ15, ou seja, CASH# sinaliza os endereços de coluna de matriz para os bits transmitidos entre as linhas DQ8~DQ15.


OBSERVAÇÃO: Para recordarmos, a logica tri-state pode tornar uma linha de sinal 'surda-muda', isto é, incapaz de 'escutar' ou 'falar' os zeros e uns, dando assim sentido ao nome, que em português é "lógica dos três estados", ou seja, zero, um e 'nada'. Este terceiro estado é gerado por uma alta impedância (soma das resistências ohmicas proporcionadas por resistores, capacitores e indutores do circuito).


CURIOSIDADE: Quando nos referimos ao "High-Z", estamos querendo dizer "alta impedância", já que a letra "Z" simboliza tal grandeza.


Numa explicação mais básica, é como se cada conjunto de oito trilhas de dados fosse conectada numa matriz de células de memória. Como o chip possui dezesseis trilhas então ele agrupa duas matrizes. O mapeamento pode ser feito mandando um endereço RAS# que vale pras duas matrizes e dois endereços CAS#, um para cada matriz.

Na vida real, um chip de memória RAM, independente se for FPM ou EDO, pode ter muito mais que duas matrizes de células. Internamente, como é possível ver no Diagrama 1 e Diagrama 2, ambas as entradas CASL# e CASH# são processadas, gerando um único sinal, assim como em outras memórias que operam apenas em x8 ou x4. Isto ocorre pois, uma função CAS# é determinada pelo primeiro CAS# (seja o CASL# ou CASH#) a fazer a transição para LOW e o último a fazer a transição de volta para HIGH. Neste meio tempo os endereços CAS# são mandados.


Aqui já adentramos na conexão entre memória e o controlador de memória RAM, portanto, precisamos conhecer as interfaces de forma mais abrangente.


Módulos SIPP / SIMM de 30 vias


De início, surgiram os módulos SIPP, sigla para "Single In Line Pin Package", que em português significa "pacote único de pinos em linha". Observe a figura abaixo:

Imagem 2 - Desenho de um módulo SIPP


Esse tipo de memória foi utilizado em alguns sistemas 80286 e 80386 (80386SX). Estes pinos eram similares aos utilizados pelos circuitos integrados, o que causava mau contato, permitia que terminais dobrassem ou partissem e ainda não impediam que o usuário encaixasse o módulo invertido no slot, tanto que o padrão SIMM (Single In Line Memory Module) foi o que se tornou popular.

Os módulos SIPP eram compatíveis com os módulos SIMM de 30 pinos, o que explicava o fato de alguns módulos SIPP serem na verdade módulos SIMM com pinos soldados nos contatos. Observe o desenho abaixo:

Imagem 3 - Desenho de um módulo SIMM


Este sistema SIMM, independente da quantidade de pinos, é chamado de "Single In Line" justamente porque existe uma única fila 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, de forma a aumentar a área de conexão com os terminais do slot. Examinando o módulo, você verá um pequeno orifício em cada contato, que serve justamente para unificar os dois lados:

Imagem 4 - Módulos SIMM de 30 vias


Num módulo SIPP ou SIMM de 30 pinos / contatos, existe um barramento com apenas 8 bits de largura, capaz de transmitir um Byte no período de um ciclo de clock.

Mas, se um módulo FPM possui um barramento de 8 bits, isto significa que existem duas formas de configuração possíveis, correto? Note:

-> Dois chips de RAM na configuração x4 (2 x 4 = 8 bits de barramento);

-> ou oito chips de RAM na configuração x1 (8 x 1 = 8 bits de barramento - veja o Diagrama 4).


Por qual motivo então os módulos SIMM da imagem acima possuem três chips?

O terceiro chip armazena os bits de paridade. Ao transferir 8 bits pelo barramento, um nono bit é enviado junto, e ele vai ser necessário para reduzir o índice de corrupção de dados.

Num módulo com oito chips também é comum que exista um nono chip com a mesma função.


Este sistema possui apenas uma linha CAS# e uma linha RAS#, obviamente (sem contar a linha especial CASP# para o chip responsável pelo bit de paridade).

Veja a seguinte tabela de pinos:

Tabela 3 - Pinagem dos módulos SIPP e SIMM de 30 vias


Isto faz com que, logicamente, todos os chips do módulo sejam ligados em série quando se tratam de linhas de endereço (Ax) e controle (CAS#, RAS# e WE#). Lembre-se que o chip do sistema de paridade não usa a entrada CAS#, mas sim a entrada CASP#, exclusiva pra ele.

O barramento DQ0~DQ7 é distribuído entre todos os chips que compõem o módulo.

Para compreender melhor, situe-se apreciando este diagrama da NEC para um módulo SIMM FPM:

Diagrama 3 - Módulo SIMM de 30 contatos com apenas dois chips de memória FPM e um terceiro chip para bit de paridade


Um endereço de linha e um endereço de coluna acessa uma determinada célula de memória em todos os chips. Isto é análogo á um sistema DDR, onde um grupo de chips é selecionado e aplicado apenas um endereço de linha e um de coluna para todos.

O que se pode fazer neste limitado módulo é colocar oito chips em paralelo, e cada um deles ser responsável por uma linha de entrada e saída de dados:

Diagrama 4 - módulo de memória RAM FPM com oito chips + um de paridade


Note que é comum a existência de um nono chip para o bit de paridade.


CURIOSIDADE: O envio de 8 bits com um nono bit de paridade era comum no século passado, sendo implementado em várias interfaces, tanto que, se quiseres ter um panorama maior sobre, leia o texto sobre a interface RS-232 e PS/2. Hoje em dia os módulos de memória são mais confiáveis, de forma que a paridade não é mais usada. No lugar dela, temos o ECC, um sistema mais complexo e avançado, usado principalmente em módulos de memória destinados a servidores.


Os módulos mais comuns foram os com 1 MB de capacidade, mas era possível encontrar também módulos de 512 kB, 2 MB e 4 MB. Existiram também módulos de 8 e 16 MB, mas eles eram muito raros devido ao custo.

Os processadores 386 e 486 utilizavam um barramento de 32 bits para o acesso à memória, o que tornava necessário combinar quatro módulos de 30 vias para ocupar toda a capacidade do barramento e formar um 'banco' de memória. Sim, aqui o conceito de "bancos de memória" ainda era o de conjuntos de chips.


Os quatro módulos eram então acessados pelo processador como se fossem um só. O sistema funciona da forma descrita anteriormente: Uma linha CAS# para cada 8 bits e uma linhas RAS# para cada 16 bits do barramento. Com isso, era preciso usar os módulos em quartetos: quatro ou oito módulos, mas nunca um número diferente destes dois.


A exceção ficava por conta dos micros equipados com processadores 386SX, onde são necessários apenas dois módulos, já que o 386SX acessa a memória usando palavras de 16 bits:

Imagem 5 - Como o barramento de memória era feito em placas-mae que implementavam estas CPUs


OBSERVAÇÃO: A ilustração acima é genérica. Lembre-se: CPUs desta época ainda não integravam um controlador de memória RAM. O gerenciamento de memória era feito pelo chipset.


Apesar de serem muito mais práticos do que manipular diretamente uma 'plantação' de chips DIP soldados ou encaixados na placa-mãe, os módulos SIPP / SIMM de 30 vias ainda eram bastante inconvenientes, já que era preciso usar quatro módulos idênticos para formar cada 'banco' de memória. Eles foram desenvolvidos pensando mais na questão da simplicidade e economia de custos do que na praticidade.

Para solucionar o problema, os fabricantes criaram um novo tipo de módulo de memória SIMM de 32 bits, que possui 72 vias. Os módulos de 72 vias substituíram rapidamente os antigos nas placas para 486 e se tornaram o padrão nos PCs com CPU Pentium.


Módulos SIMM de 72 vias


Um módulo SIMM de 72 contatos suporta um barramento com 32 bits de largura, capaz de transmitir quatro Bytes no período de um ciclo de clock, ou seja, ele faz o papel de quatro módulos SIMM de 30 pinos.

Imagem 6 - Desenho de um módulo SIMM de 72 vias


Na época, era possível encontrar módulos SIMM-72 com ou sem paridade. Os módulos com paridade também eram conhecidos como "módulos de 36 bits”. Para saber se o módulo tem ou não paridade, assim como nos SIMM de 30 vias, veja se o número de chips é impar. Se o módulo, por exemplo, tiver três ou nove chips, significa que há o sistema de paridade.

Ao utilizar módulos sem paridade, era necessário desabilitar o teste de paridade no setup do BIOS.

Para usar o esquema de correção de erros ECC, você precisará utilizar módulos SIMM-72 com ECC. Esses módulos eram também conhecidos como "módulos de 40 bits". Além disso, o chipset da placa-mãe deverá suportar essa tecnologia e o usuário deve habilitá-lo corretamente no setup do BIOS.


Agora, observe a tabela de pinos sem a implementação do ECC:

Tabela 4 - pinagem do slot SIMM de 72 vias sem ECC


Neste padrão há um sistema de detecção de presença estático. Mas o que isto significa?

Tal sistema permite que a placa-mãe consiga identificar a capacidade do módulo e seu timing principal através da tabela da verdade feita para as linhas PD1, PD2, PD3 e PD4. Observe como o sistema é rudimentar:

Tabela 5 - O Presence Detect


CURIOSIDADE: Além destes pinos, há mais algumas maneiras de se distinguir a capacidade:

-> A entrada "A9" é "NC" em módulos de 256kB e 512kB;

-> A entrada "A10" é "NC" em módulos de 256kB, 512kB, 1MB e 4MB;

-> A entrada "RAS#1" e "RAS#3" são "NC" em módulos de 256kB, 1MB e 4MB.


Como já foi dito, num chip x16 como aquele da Micron mostrado na Tabela 2, apenas uma entrada RAS# faz-se necessária para cada duas entradas CAS#, pois ela seleciona uma linha e em seguida duas colunas podem ser identificadas. Um chip deste jamais poderá ser implementado num módulo SIMM de 30 pinos (pois tem apenas 8 bits), porém, esta ideia, ao ser colocada em prática num módulo de RAM de 72 pinos, pode ficar como no caso deste SIMM EDO apresentado abaixo:

Diagrama 5 - Note a organização das linhas CAS# e RAS#. Lembre-se que as linhas RAS# e CAS# também comandam os chips U2 e U5, que são para os bits de paridade


Perceba que os quatro chips principais (U1, U3, U4 e U6) são x16. U1 e U3 compartilham as mesmas 16 linhas de dados. U4 e U6 também compartilham suas 16 linhas de dados, totalizando um link de 32 bits.

Ao sinalizar o envio de um endereço por RAS#0, quatro endereços CAS# podem ser enviados, acessando assim U1 e U3. Sinalizando envio de endereços por RAS#1, U4 e U6 podem ser acessados da mesma forma.


Agora, um diagrama onde os chips são x4 e também faz-se uso de duas linhas RAS# e quatro linhas CAS# para todos:

Diagrama 6 - Chips Micron num módulo SIMM de 72 vias EDO com capacidade de 16 MB


Para dobrar a capacidade deste chip, basta fazer agrupamentos de chips dois-a-dois através das linhas de dados:

Diagrama 7 - Chips Micron num módulo SIMM de 72 vias EDO com capacidade de 32 MB


No Diagrama 7 a lógica segue igual, porém, com duas linhas RAS# a mais. Note no seguinte Diagrama resumido:

Diagrama 8 - Cada chip tem um barramento de 4 bits


Note que cada entrada RAS# controla quatro chips.

Num exemplo prático, quando RAS#0 sinaliza um endereço de linha de matriz de memória, quem o recebe são os chips U1, U2, U3 e U4. No entanto, se CAS#1 sinalizar endereço(s) de coluna(s) de matriz de memória, apenas U3 e U4 vão operar dados. Caso RAS#1 sinalize o envio de endereço de linha, os endereços sinalizados por CAS#1 só serão visíveis para os chips U11 e U12. Desta forma, cada CAS# vai continuar sendo associado aos seus respectivos 8 bits de barramento.


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 as placas-mãe que implementam o Intel Pentium fazem acesso a memória usando um barramento de 64 bits, são necessários dois módulos para usar toda a largura do barramento. É por isso que nos PCs com Pentium 1 precisamos sempre usar os módulos de memória em pares:

Imagem 7 - Como o barramento de memória era implementado


O acesso de 64 bits à memória foi introduzido para permitir que o processador conseguisse acessar grandes quantidades de dados mais rapidamente. 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 (afinal estas CPUs eram x86), mas a poupança ajuda bastante.

Dentro de um banco, todos os módulos são acessados ao mesmo tempo, como se fossem um só, por isso era sempre recomendável usar dois módulos iguais. Ao usar quatro módulos, o importante era que cada par seja composto por dois módulos iguais. Não existe problema em usar dois pares de módulos diferentes, como ao usar dois de 16 MB e mais dois de 8 MB para totalizar 48 MB, por exemplo.


CURIOSIDADE: Algumas placas-mãe para Pentium podem trabalhar com apenas um módulo de 72 vias. Nesse caso, o controlador de RAM embutido no chipset da placa engana o processador, fazendo dois acessos de 32 bits consecutivos, entregando os dados de uma só vez para o processador. Apesar de funcionar, esse esquema reduz bastante a velocidade do PC, pois a taxa de transferência ao ler dados a partir da memória é efetivamente reduzida à metade.


CURIOSIDADE: Nesta época surgiu um dos primeiros formatos SODIMM (Small Outline Dual Inline Memory Module, em português "Módulo de Memória em Linha Dupla de Contorno Pequeno") com 72 vias. Era, na verdade, uma versão compacta do SIMM de 72 vias. Sua pinagem segue uma tabela parecida:

Tabela 6 - Pinagem do SODIMM de 72 vias


Este sistema pode operar tanto com módulos de 3,3 Volts quanto com módulos de 5 Volts. Existem vários pinos PD (Presence Detect) que fazem uma identificação estática do módulo inserido na placa-mãe.

Tal formato é um tanto quanto raro, sendo utilizado em alguns PCs compactos. Observe as imagens abaixo:

Imagem 8 - Um módulo SODIMM de 72 vias com memória EDO. Opera com 3,3 Volts


Módulos SIMM / DIMM de 168 vias


Existem placas-mãe que implementam um ou mais slots de 168 vias para memórias EDO. Estes módulos possuem um formato denominado DIMM (Dual In Line Memory Module), que se tornou muito comum nas RAMs SDR e DDR, havendo contatos elétricos independentes dos dois lados da PCB do módulo (exceto linhas GND e linhas VCC, que possuem contatos interligados em pares), diferente dos módulos SIPP / SIMM de 30 e 72 vias.

Na tabela abaixo, veja que as linhas GND e VCC quase sempre são encontradas em pares:

Tabela 7 - A pinagem do raro slot de 168 vias para RAMs EDO


O princípio de funcionamento deste sistema segue o do Diagrama 5, com duas entradas CAS# para cada entrada RAS#. Note que há oito entradas CAS# e quatro entradas RAS#;


Existem duas entradas WE#. A WE#0 comanda DQ0~DQ31 e WE#1 comanda DQ32~DQ63;

Existem duas linhas OE#, uma para DQ0~DQ31 e a outra para DQ32~DQ63;


O barramento de dados é composto por sessenta e quatro linhas (64 bits, ou seja, 8 Bytes). Há um bit de paridade para cada um dos 8 Bytes;


Perceba que este módulo "une" dois módulos SIMM de 72 vias. Num PC com processador Pentium, ao invés de se utilizar dois módulos SIMM de 72 vias, poderia ser utilizado apenas um DIMM de 168 vias.


Um novo sistema de redução de erros foi inserido, o Check bit. Este sistema de checagem de bit abrange os oito Bytes (DQ0~DQ63). A linhas P / CBx e CBx são bidirecionais (assim como as linhas de paridade em módulos de 72 vias), diferente do sistema SIMM de 30 pinos, que possui um par In / Out para a troca de bit de paridade em paralelo aos sinais de dados.


Este foi uma das primeiras interfaces de RAM a suportar um sistema de detecção de presença dinâmica, isto é, uma memória EEPROM com interface SMBus embutida no módulo, capaz de informar ao BIOS da placa-mãe as especificações técnicas da peça (marca, modelo, lote, revisão, latências, capacidade, data de fabricação e etc.).


Note que o terminal 163 é uma linha de clock denominada "CK3". Pois bem, no sistema SDR há também o CK0, CK1 e CK2 implementado em alguns dos terminais que são "NC" para módulos EDO. Devido a falta de necessidade, apenas uma linha CK foi mantida para um sinal de sincronismo, e nem tão útil, afinal, sistemas EDO possuem um barramento assíncrono e implementam um PLL independente e interno aos chips, e a prova disso é que nem os slots de 72 e de 30 vias possuem uma linha de clock.


Tanto para RAMs SDR quanto para RAMs EDO que utilizam módulos SIMM / DIMM de 168 vias, existem versões que operam com 5 Volts e outras que operam com 3,3 Volts. Diferente de um barramento PCI, que pode detectar a tensão nominal da placa-filha conectada, uma interface de memória RAM não trabalha assim. Portanto, para que não houvesse a queima dos chips ao conectar um módulo de 3,3 Volts num slot que oferece 5 V um sistema anti-burro foi criado, e ele pode ser notado visualmente abaixo:

Imagem 9 - Diferenças entre conexões de 168 vias para 5 e 3,3 Volts


Com isso, podemos concluir que módulos de 168 vias para memórias EDO não vão encaixar em placas-mãe que implementam slot para memórias SDR. E isso não serve apenas para a tensão elétrica, já que o controlador de RAM SDR difere completamente de um controlador EDO. Existem RAMs EDO que operam com 3,3 Volts também, no entanto, a posição da chave deve permanecer inalterada, impedindo sua aplicação em placas com controlador de RAM SDR.

Alguns detalhes que complementam tudo o que foi dito...

Para isso, contemple a primeira página de um documento técnico da HANBit:

Imagem 10 - Do que é feito uma PCB?


A PCB e o slot


Já que o assunto integrou até a pinagem dos slots onde os módulos são encaixados, nada melhor que dissertar sobre a confecção destes componentes.

Vamos começar pela PCB, que serve de substrato para a soldagem dos chips e demais componentes.

Em geral, a placa de circuito impresso pode ter uma ou mais camadas, todas feitas em FR4, isto é, cada camada é composta por uma fina folha de poliepóxido reforçado com um tecido de lã de vidro (fibra de vidro). Isto pode ser evidenciado no trecho grifado em verde no documento da HANBit.


As trilhas são feitas de Cobre puro (CU1100) depositado sobre a superfície polimérica. Já os contatos elétricos do módulo podem ser feitos de Cobre puro galvanizado com Ouro.

Já o slot também é plástico, obviamente, mais especificamente LCP, sigla para "Liquid Crystal Polymer", um material muito utilizado em slots e conectores de placas de circuito devido a sua boa rigidez dielétrica e resistência a altas temperaturas. Em alguns casos pode ser evidenciado em alto relevo a sigla "PPA-GF", que significa resina de Poliftalamida reforçada com até 30% de lã de vidro.

CURIOSIDADE: O PPA, apesar de ser chamado popularmente pelo nome comercial "Nylon" (nome das Poliamidas comuns), têm suas diferenças e pode ser incluído na classe das Amidas Aromáticas (Aramidas), ou seja, não deixa de ser um cristal líquido.


De qualquer forma, a indústria faz uso apenas de termoplásticos, e que devem seguir a norma UL 94V-0. Para saber mais sobre tal norma, CLIQUE AQUI! e leia o tópico "Indicador de Flamabilidade".


Já os terminais destes slots podem ser feitos a base de ligas de Cobre com algum tipo de galvanização:

-> Bronze fosforado com dupla galvanização a frio (Estanho sobre Níquel);

-> Bronze fosforado com dupla galvanização a frio (Ouro sobre Níquel);

-> Bronze fosforado galvanizado a frio com Estanho ou Ouro;

-> Cobre galvanizado a frio com Estanho ou com Ouro (como é o caso dos pinos de processadores).


Nos PDFs seguintes, trago especificações técnicas sobre os slots explanados neste texto:

Slot 30 vias (SIMM) - Desenho técnico e especs.
.pdf
Download PDF • 73KB

Slot 72 vias (SIMM) 72 - Desenho técnico e especs.
.pdf
Download PDF • 167KB

Slot 168 vias (SIMM~DIMM) 168 - Desenho técnico e especs.
.pdf
Download PDF • 107KB

CURIOSIDADE: Este último PDF mostra um slot de 168 vias cujo material da carcaça é chamado de "High Temperature Nylon 94V-0", sendo nada mais que um nome bonito para o PPA.


Para saber mais sobre polímeros e elastômeros, comece CLICANDO AQUI!

Para saber mais sobre cristais líquidos, CLIQUE AQUI!

Para saber mais sobre as ligas não-ferrosas com base no Cobre, CLIQUE AQUI!

Para saber mais sobre o FR4, CLIQUE AQUI! (exemplos de uso de polímeros e elastômeros) e CLIQUE AQUI! (aditivações em compósitos).


Os barramentos e a Lógica TTL


Este conteúdo veio a calhar como exemplo para outro texto do blog: Aquele sobre "Pares Diferenciais". Para acessa-lo, basta CLICAR AQUI!

Note que, no documento da HANBit está grifado em vermelho "entradas e saídas compatíveis com TTL". O TTL (Lógica Transistor-Transistor) é um circuito simples, muito conhecido no meio dos entusiastas e técnicos em eletrônica, sendo demasiadamente utilizado em barramentos com várias linhas de dados em paralelo.

Chips de RAM FPM e EDO que trabalham com 3,3 Volts utilizam a lógica LVTTL (Low Voltage), uma versão que opera em tensão mais baixa, igual a tensão de alimentação do circuito.

-> Vamos partir do módulo de 168 vias para entender tudo:

Perceba que um módulo de 168 vias é nada mais que a junção de oito módulos SIMM de 30 vias, literalmente. Isto liberou muito espaço nas placas-mãe e é um excelente exemplo de evolução da tecnologia.


-> A diferença entre FPM e EDO é que a segunda permite que dados sejam enviados mesmo se a memória ainda estiver recebendo os endereços CAS# do burst de leituras sequenciais. Isto também representa a incompatibilidade entre as duas tecnologias.


-> No que se refere ao refresh da células de memória...

De acordo com documentos da Micron para memórias FPM e EDO, os dados da célula de memória são retidos em seu estado correto, mantendo a energia quando for executado:

> qualquer ciclo RAS# (seja para Leituras ou Escritas);

> ou o ciclo RAS# Refresh (conhecido como RAS# Only);

> ou CBR Refresh (CAS-Before-RAS Refresh);

> ou Hidden Refresh Capability.


Para que assim, todas as combinações de endereços RAS# possíveis para o chip em questão sejam executados dentro de tREF (MAX) - este valor pode variar entre os tipos de RAM, bem como ser drasticamente diferente de acordo com o modo de atualização -, independentemente da sequência.

O ciclo CBR Refresh também invocará o contador de atualização e o controlador de memória para controle de endereço de linha, executando de forma automática as combinações possíveis.


-> As memórias FPM foram implementadas em módulos SIMM de 30 vias e também de 72 vias.

Módulos SIMM de 72 vias, bem como os raros SODIMM de 72 vias foram utilizados tanto para memórias FPM quanto para as EDO. Para driblar as confusões, basta olhar a etiqueta por cima dos chips e conferir a latência, medida em nanosegundos.

As últimas EDO foram implementadas também em módulos de 168 vias, no entanto, foram muito incomuns, sendo o padrão SDR dominante neste formato.

A evolução exponencial das memórias RAM começou na virada do século com o desenvolvimento do padrão DDR e GDDR. No entanto, muitas informações ainda precisam ser estudadas sobre os padrões antigos e incluídas aqui antes de estudarmos os atuais. Portanto, muito mais informações serão inseridas neste texto ao longo do tempo, assim como acontece com os outros artigos do HC.


Se gostou do conteúdo e quer que ele seja aprimorado cada vez mais, nos dê incentivo compartilhando nas redes sociais!


Para dúvidas, correções ou sugestões, mande um e-mail para hardwarecentrallr@gmail.com.

 

FONTES e CRÉDITOS:


Texto: Leonardo Ritter.

Diagramas e Imagens: Leonardo Ritter; Google Imagens.

Fontes: NEC Electronics, Siemens Electronics AG; Hyundai Electronics; Micron Tecnology, HANBit Electronics; bootblockbios.wordpress.com; hardware.com (antigo Guia do Hardware); Clube do Hardware; es.rs-online.com; pinouts.ru; Tec Mundo; Wikipedia (Somente artigos com fontes verificadas!).


Última atualização: 24 de Abril de 2022.

114 visualizações