• Nenhum resultado encontrado

Capítulo 6. Montar um PC sem entender sobre memórias

N/A
N/A
Protected

Academic year: 2021

Share "Capítulo 6. Montar um PC sem entender sobre memórias"

Copied!
44
0
0

Texto

(1)

Capítulo

6

Memórias

Montar um PC sem entender sobre memórias

Acredite, é possível montar um computador sabendo apenas o seguinte a respeito das memórias: Encaixe o módulo de memória no soquete apropriado. Fim. Existem PCs que foram montados por pessoas que sabem apenas isso. Quando o computador apresenta problemas de mau funcionamento, colocam a culpa no... Windows!

Memórias são importantes

Até um leigo sabe que a memória de um computador é um item importante da sua configuração. Computador com pouca memória é ruim, com muita memória é bom. Tem até aquela piada, “meu computador não tem memória, tem uma vaga lembrança...”. Brincadeiras à parte, este capítulo apresenta informações valiosas a respeito de memórias, para que você saiba escolher o melhor tipo de memória para o seu computador, e também para conhecer as diversas famílias de memórias existentes.

Leitura e escrita

Podemos dividir as memórias em duas grandes categorias: ROM e RAM. Em todos os computadores encontramos ambos os tipos. Cada um desses dois tipos é por sua vez, dividido em várias outras categorias.

ROM

ROM significa read only memory, ou seja, memória para apenas leitura. É um tipo de memória que, em uso normal, aceita apenas operações de leitura, não permitindo a realização de escritas. Outra característica da ROM é que seus dados não são perdidos quando ela é desligada. Ao ligarmos

(2)

novamente, os dados estarão lá, exatamente como foram deixados. Dizemos então que a ROM é uma memória não volátil. Alguns tipos de ROM aceitam operações de escrita, porém isto é feito através de programas apropriados, usando comandos de hardware especiais. Uma típica aplicação da ROM é o armazenamento do BIOS do PC, aquele programa que entra em ação assim que o ligamos. Este programa testa a memória, inicializa o hardware e inicia a carga do sistema operacional.

RAM

Significa random access memory, ou seja, memória de acesso aleatório. Este nome não dá uma boa idéia da finalidade deste tipo de memória, talvez fosse mais correto chamá-la de RWM (read and write memory, ou memória para leitura e escrita). Entretanto o nome RAM continua sendo utilizado por questão de tradição. Em operação normal, o computador precisa fazer não apenas o acesso a dados e instruções, através de leituras na memória, mas também guardar resultados, através de operações de escrita na memória. Além de permitir leituras e escritas, a RAM tem outra característica típica: trata-se de uma memória volátil, ou seja, seus dados são apagados quando é desligada. Por isso quando desligamos o computador e o ligamos novamente, é preciso carregar o sistema operacional.

Resumindo, as principais características da ROM e da RAM são:

ROM RAM

Significado Read only memory Random access memory

Faz leituras SIM SIM

Faz escritas NÃO SIM

Perde dados ao ser desligada NÃO SIM

Em linhas gerais, essas são as características das memórias tipos ROM e RAM. Existem entretanto ROMs que permitem gravações, e RAM que não perdem dados, como veremos adiante.

Encapsulamentos de ROMs

Quase sempre você irá encontrar ROMs fabricadas com encapsulamento DIP cerâmico ou plástico, como vemos na figura 1.

(3)

Figura 6.1 ROM com encapsulamento DIP.

O encapsulamento DIP (dual in-line package) cerâmico é mais utilizado pelas ROMs do tipo EEPROM. Essas ROMs possuem uma janela de vidro, através da qual os dados podem ser apagados através de raios ultra-violeta. Depois de apagadas, podem ser novamente gravadas. Em uso normal esta janela deve permanecer tampada por uma etiqueta. Portanto nunca retire a etiqueta da ROM, ela pode ser apagada por exposição prolongada à luz natural.

Podemos ainda encontrar ROMs com outros encapsulamentos diferentes do DIP. Um encapsulamento relativamente fácil de encontrar é o PLCC (plastic leadless chip carrier).

Figura 6.2 ROM com encapsulamento PLCC.

Encapsulamento das RAMs

Os chips de memória RAM também podem ser encontrados em diversos formatos, sendo que o mais comum é o encapsulamento SOJ (small outline package J-lead), mostrado na figura 3. Você encontrará com freqüência este

(4)

encapsulamento nos chips que formam os módulos de memória e nos que forma a memória de vídeo, encontrados em placas de vídeo.

Figura 6.3 Chip de RAM com encapsulamento SOJ.

Também é comum encontrar chips de RAM com encapsulamento QFP (quad flatpack). São usados por chips que formam a cache L2 em placas de CPU com cache externa, e nos chips que formam a memória de vídeo.

Figura 6.4 Chip de RAM com encapsulamento QFP.

Não confunda chip de memória com módulo de memória. Os chips de RAM com encapsulamento SOJ que mostramos na figura 3 são montados em pequenas placas chamadas módulos de memória, que serão apresentados mais adiante.

Encapsulamento de módulos de memória

Até o início dos anos 90, as memórias dos PCs usavam encapsulamento DIP e eram instaladas, chip por chip. Trabalho fácil para um técnico, mas uma tarefa bastante complexa para um usuário que nunca fez este tipo de trabalho. Os módulos de memória foram criados para facilitar a sua

(5)

instalação, não por parte do usuário, mas pela indústria eletrônica. É muito mais rápido conectar um módulo de memória que instalar um grande número de chips avulsos.

Figura 6.5

Chip de memória com encapsulamento DIP e módulos de memória SIPP e SIMM.

Os primeiros módulos de memória eram chamados SIPP (single inline pin package), e foram lançados em meados dos anos 80. Este módulo era uma pequena placa com chips de memória e terminais (“perninhas”) para encaixe no soquete apropriado. O processo de fabricação foi simplificado com a adoção dos módulos SIMM (single inline memory module). Ao invés de utilizar terminais de contato como o SIPP, esses módulos têm um conector na sua borda. O soquete para este tipo de módulo é um pouco mais complicado, porém o processo de fabricação dos módulos tornou-se mais simples, e sua instalação mais rápida. Módulos SIPP caíram em desuso no início dos anos 90, sendo substituídos pelo formato SIMM. Esses módulos forneciam 8 bits simultâneos e precisavam ser usados em grupos para formar o número total de bits exigidos pelo processador. Por exemplo, processadores 386 e 486 utilizam memórias de 32 bits, portanto os módulos SIMM eram usados em grupos de 4. Por exemplo, 4 módulos iguais, com 4 MB cada um, formavam um banco de 16 MB, com 32 bits.

Os módulos SIMM usados até então tinham 30 contatos, portanto eram chamados de SIMM/30, ou módulos SIMM de 30 vias. Ainda eram bastante comuns em meados dos anos 90, mas já existiam na época, módulos SIMM de 72 vias (SIMM/72), que forneciam 32 bits simultâneos. Em placas de CPU 486, um único módulo SIMM/72 formava um banco de memória com 32 bits. Esses módulos, apesar de serem mais práticos que os SIMM/30, eram pouco utilizados, até o lançamento do processador Pentium. O Pentium trabalha com memórias de 64 bits, portanto seriam necessários 8 módulos SIMM/30 para formar um banco de memória. Isto tornaria a produção

(6)

complexa, além de ocupar uma grande área na placa de CPU apenas para os módulos de memória. Os fabricantes passaram então a adotar os módulos SIMM/72. Dois desses módulos eram suficientes para formar um banco de 64 bits. Já em 1996 era praticamente impossível encontrar à venda módulos SIMM/30, exceto no mercado de peças usadas.

Figura 6.6 Módulos SIMM/30 e SIMM/72.

Visando uma integração de componentes ainda maior, foram criados módulos que fornecem 64 bits simultâneos. Esses módulos são chamados DIMM/168 (dual inline memory module), e possuem 168 vias. Um único módulo DIMM/168 forma um banco de memória com 64 bits. É exatamente o número de bits utilizados pelos processadores modernos (Pentium III, Athlon, Duron, Celeron) e os não tão modernos, como K6, K6-2, K6-III, Pentium Pro, Pentium II, Pentium MMX, etc.

Figura 6.7 Módulo DIMM/168.

Se você precisar dar manutenção em uma placa de CPU Pentium produzida entre 1995 e 1997, tem grandes chances de encontrar um módulo COAST (Cache on a Stick). Este tipo de módulo era usado para formar a memória cache de algumas placas de CPU Pentium, e também de algumas placas de CPU 486 e 586 produzidas naquela época.

(7)

Figura 6.8 Módulo COAST.

A figura 9 mostra os principais módulos de memória descritos aqui.

Figura 6.9 Módulos de memória.

Dois novos tipos de memória prometem ser comuns nos computadores avançados, a partir de 2001. São as memórias RAMBUS (RDRAM) e as memórias DDR SDRAM. Memórias RAMBUS são em geral apresentadas com o encapsulamento RIMM de 184 vias (figura 10). Este tipo de módulo é muito parecido com os demais apresentados até aqui, exceto pelo fato de poder ter uma chapa metálica cobrindo seus chips. Esta chapa atua como um dissipador de calor. Esses módulos têm tamanho similar ao dos módulos DIMM/168, cerca de 13 centímetros. Entretanto não existe risco de conexão em um soquete errado, já que as duas fendas existentes do conector só se ajustam aos soquetes apropriados.

Figura 6.10 Módulo RIMM/184.

(8)

Também bastante parecidos são os módulos DIMM/184, utilizado pelas memórias DDR SDRAM. A medida é similar à dos módulos DIMM/168 e RIMM/184, mas esses módulos também possuem um chanfro característico que impede o seu encaixe em um soquete errado.

Figura 6.11 Módulo DIMM/184.

Módulos DIMM/168, DIMM/184 e RIMM/184 têm larguras semelhantes (13,3 cm), mas diferenças bastante sutis. A forma mais fácil de reconhecer a diferença é através dos chanfros existentes no seu conector. O DIMM/184 é o único que possui um único chanfro, enquanto o DIMM/168 e o RIMM/184 possuem dois chanfros. Os dois chanfros do DIMM/168 dividem os contatos do conector em três grupos, enquanto os dois chanfros do RIMM/184 ficam mais próximos do centro, mas não existem contatos entre os dois chanfros do RIMM/184. Uma outra diferença: os módulos DIMM/168 possuem um chanfro em forma de semi-circunferência em cada lateral. Os módulos DIMM/184 possuem dois chanfros em cada lateral.

Memórias RAM

Até agora abordamos os encapsulamentos usados pelos módulos de memória. Vamos agora apresentar, do ponto de vista eletrônico, os principais tipos de memória RAM. Não confunda tipo com formato. Memórias com formatos (encapsulamentos) iguais podem ser de tipos eletronicamente diferentes, portanto devemos tomar cuidado para não utilizar memórias inválidas, iludidos por formatos aparentemente corretos.

RAMs estáticas e dinâmicas

RAMs podem ser divididas em duas grandes categorias: RAMs estáticas (SRAM) e RAMs dinâmicas (DRAM). A DRAM é a memória usada em larga escala nos PCs. Quando dizemos que um PC possui, por exemplo, 128 MB, tratam-se de 128 MB de DRAM. São memórias baratas e compactas, o que é um grande atrativo. Por outro lado, são relativamente lentas, o que é uma grande desvantagem. Por esta razão, os PCs utilizam em conjunto com a DRAM, uma memória especial, mais veloz, chamada cache, que serve para acelerar o desempenho da DRAM. Há poucos anos, a chamada cache L2

(9)

era formada por chips de SRAM, localizados na placa de CPU. Atualmente a cache L2 faz parte do núcleo dos processadores modernos.

A DRAM por sua vez pode ser subdividida em outras categorias, sendo as principais:  DRAM  FPM DRAM  EDO DRAM  SDRAM  DDR SDRAM  RDRAM

Em termos cronológicos, a DRAM foi usada do final dos anos 70 até o final dos anos 80. Em meados dos anos 80 surgiu a FPM DRAM, bastante utilizada até meados dos anos 90. Passaram então a ser comuns as memórias EDO DRAM, que por sua vez foram substituídas pela SDRAM a partir de 1997. A partir de 2000, a SDRAM começou a dar lugar à DDR SDRAM e à RDRAM.

Memórias SRAM existem desde os anos 60, e memórias DRAM desde os anos 70. Ao contrário do que o nome sugere, a DRAM não é caracterizada pela rapidez, e sim pelo baixo custo, aliado à alta capacidade, em comparação com a SRAM. A alta capacidade é devida ao fato das suas células de memória serem mais simples. Com células mais simples, é possível criar chips com maior número de células de memória. Em compensação, o mecanismo de acesso às suas células de memória é mais complicado. Na RAM estática, basta fornecer o endereço e o comando (leitura, por exemplo), e depois de um certo tempo (tempo de acesso), os dados estarão presentes nas suas saídas. Da mesma forma, nas operações de escrita, basta fornecer ao chip o valor a ser armazenado e o endereço onde deve ser feito este armazenamento, acompanhado do comando de gravação. Passado o tempo apropriado (tempo de acesso), os dados estarão gravados.

(10)

Figura 6.12 Diagrama de uma SRAM.

Como dissemos, o mecanismo de acesso às células da DRAM é bem mais complexo. Suas células de memória são organizadas em uma matriz, formada por linhas e colunas. Por exemplo, uma DRAM com 1 Mbit é formada por uma matriz quadrada, com 1024 linhas e 1024 colunas. Para acessar uma dessas células de memória, é preciso primeiro fornecer à DRAM o endereço da linha, seguindo de um sinal chamado RAS (Row Address Strobe). Serve para indicar que o endereço da linha está pronto. A seguir deve ser fornecido à memória o endereço da coluna, seguido do sinal CAS (Collumn Address Strobe). Passado mais um pequeno tempo, o dado daquela célula de memória cujos números da linha e coluna foram fornecidos, estará presente e pronto para ser lido pelo processador ou pelo chipset.

Figura 6.13 Diagrama de uma DRAM.

Note que os processadores não “enxergam” a memória desta forma, não estão preparados para gerar sinais RAS e CAS, nem para dividir o endereço em linha e coluna. O processador simplesmente indica o endereço de memória que deseja acessar, e a seguir envia um comando de leitura ou

(11)

escrita. Cabe ao chipset converter os sinais de acesso à memória vindos do processador, em sinais compatíveis para a DRAM. Esta é a função de uma parte do chipset chamada Controlador de DRAM.

Figura 6.14 O Chipset é encarregado de controlar o acesso à DRAM.

O trabalho completo do chipset (controlador de DRAM) para obter um dado proveniente da DRAM é resumido na seguinte seqüência:

1) Chipset recebe do processador, o endereço da célula a ser acessada 2) Chipset desmembra o endereço em duas partes: linha e coluna 3) Chipset envia à DRAM, o endereço da linha

4) Chipset envia à DRAM o sinal RAS

5) Chipset envia à DRAM o endereço da coluna 6) Chipset envia à DRAM o sinal CAS

7) A DRAM acessa o dado armazenado nesta célula e o entrega ao chipset 8) Chipset obtém o dado e o encaminha para o processador

Cada uma dessas micro-etapas leva um pequeno tempo para ser executada. O tempo total necessário para que o processador receba o dado solicitado da memória é igual à soma desses tempos. É preciso que você entenda bem este mecanismo para que possa compreender as memórias mais novas.

FPM DRAM

Essas memórias foram usadas nos PCs antigos, em praticamente todos os PCs 386, 486 e 586 e nos primeiros PCs Pentium. No passado eram encontradas no encapsulamento DIP, depois foram produzidas em módulos SIPP e SIMM/30. É correto dizer que todos os módulos SIPP e SIMM eram formados por chips de FPM DRAM. Chips de FPM DRAM também foram utilizados em módulos SIMM/72, mas não é correto dizer que todo módulo SIMM/72 é do tipo FPM DRAM. Era comum encontrar módulos SIMM/72 tanto com FPM DRAM como com EDO DRAM.

(12)

Memórias FPM DRAM são capazes de operar no chamado Fast Page Mode. A idéia é muito simples. A maioria dos acessos à memória são feitos em células consecutivas. Considere por exemplo um grupo de 4 acessos às posições consectivas mostradas na figura 15.

Figura 6.15 Quatro células de memória consecutivas.

Os endereços dessas 4 células consecutivas são: Linha 277, coluna 320

Linha 277, coluna 321 Linha 277, coluna 322 Linha 277, coluna 323

Lembre-se que cada linha é acompanhada de um sinal RAS, e cada coluna é acompanhada de um sinal CAS. Ora, quando tomamos posições consecutivas de memória, as linhas são as mesmas (desde que cada grupo comece em um endereço múltiplo de 4, o que pode ser facilmente arranjado), e o que varia é apenas a coluna. Seria então uma perda de tempo repetir no segundo, terceiro e quarto acessos, o número da linha. Basta indicar o número da coluna. O chamado Fast Page Mode tem como principal característica, o acesso a várias colunas de uma mesma linha, bastando que sejam fornecidos os endereços das colunas, seguidos do sinal CAS, sem a necessidade de repetir o número da linha.

O acesso à primeira posição de memória de um grupo é feito pelo mesmo mecanismo já explicado para as DRAMs convencionais:

(13)

1) Chipset recebe do processador, o endereço da célula a ser acessada 2) Chipset desmembra o endereço em duas partes: linha e coluna 3) Chipset envia à DRAM, o endereço da linha

4) Chipset envia à DRAM o sinal RAS

5) Chipset envia à DRAM o endereço da coluna 6) Chipset envia à DRAM o sinal CAS

7) A DRAM acessa o dado armazenado nesta célula e o entrega ao chipset 8) Chipset obtém o dado e o encaminha para o processador

Os acessos seguintes são mais rápidos porque exigem menos etapas: não é preciso fornecer o sinal RAS nem o endereço da linha:

5) Chipset envia à DRAM o endereço da próxima coluna 6) Chipset envia à DRAM o sinal CAS

7) A DRAM acessa o dado armazenado nesta célula e o entrega ao chipset 8) Chipset obtém o dado e o encaminha para o processador

Digamos que o tempo total para realizar as 8 etapas (1 a 8) do acesso à primeira célula seja 100 ns, e que para cada um dos três acessos seguintes, o tempo das etapas (5 a 8) seja de 40 ns. Se a DRAM não fosse do tipo FPM, todos os acessos seriam iguais ao primeiro, e o tempo total seria de 100 + 100 + 100 + 100, ou seja, 400 ns. Com a FPM DRAM, o tempo total seria 100 + 40 + 40 + 40, ou seja, 220 ns, bem mais rápido.

Poderíamos a princípio pensar que o chipset “cronometra” 100 ns para o primeiro acesso, e depois 40 ns para cada um dos acessos seguintes. É mais ou menos isso o que ocorre, entretanto o chipset não conta o tempo em ns. Sua base de tempo é o ciclo de clock, a sua menor unidade de tempo. A duração de um ciclo de clock depende do clock utilizado pelo chipset, que em geral é o mesmo clock externo do processador:

Clock Período Clock Período

33 MHz 30 ns 95 MHz 10,5 ns 40 MHz 25 ns 100 MHz 10 ns 50 MHz 20 ns 133 MHz 7,5 ns 60 MHz 16,6 ns 166 MHz 6 ns 66 MHz 15 ns 200 MHz 5 ns 75 MHz 13,3 ns 266 MHz 3,75 ns 83 MHz 12 ns 400 MHz 2,5 ns

De um modo geral, para obter o valor do período, dado em ns, basta dividir 1000 pelo número de MHz. Considere por exemplo um Pentium-200, operando com clock externo de 66 MHz, ou seja, ciclos de 15 ns. Todas as

(14)

suas operações são feitas em múltiplos de 15 ns, ou seja, 15 ns é a sua unidade básica de tempo. Aquela FPM DRAM que precisa operar com a temporização 100/40/40/40, será controlada pelo chipset com a temporização 7-3-3-3. São 7x15 = 105 ns para o primeiro acesso e 3x15 = 45 ns para cada um dos acessos seguintes.

EDO DRAM

Bastante comum a partir de 1995, a EDO (Extended Data Out) DRAM é obtida a partir de um melhoramento de engenharia nas memórias FPM DRAM. A idéia é bastante simples. Após completar um ciclo de leitura e fornecer os dados lidos, pode dar início a um novo ciclo de leitura, mas mantendo em suas saídas, os dados da leitura anterior. O resultado é uma economia de tempo, o que equivale a um aumento de velocidade. É suportada por todas as placas de CPU Pentium, a partir das que apresentam o chipset i430FX. As primeiras placas de CPU Pentium II também as suportavam, porém essas memórias caíram em desuso, sendo logo substituídas pela SDRAM tão logo o Pentium II se tornou comum (1998). Módulos de memória EDO DRAM utilizaram muito o encapsulamento SIMM/72 (assim como a FPM DRAM). Também é possível encontrar módulos de memória EDO DRAM usando o encapsulamento DIMM/168, porém são mais raras nesta versão.

Memórias EDO DRAM são capazes de realizar seus acessos utilizando ciclos menores (ou seja, mais rápidos) que as memórias FPM DRAM similares. Tomando uma FPM DRAM e uma EDO DRAM, ambas com 60 ns de tempo de acesso, a FPM pode estar operando com a temporização 7-3-3-3, enquanto a EDO DRAM usa 7-2-2-2, ou dependendo da memória, até 6-2-2-2. Tomando o clock externo de 66 MHz, ou seja, períodos de 15 ns, a FPM DRAM demoraria um total de 16 ciclos (240 ns) para fazer o que a EDO DRAM precisa de apenas 12 ciclos (180 ns) para fazer. Neste exemplo, a EDO DRAM mostrou ser 33% mais rápida, apesar de ambas usarem o mesmo tempo de acesso.

SDRAM

Esta é a DRAM síncrona (Synchronous DRAM), muito utilizada nas placas de CPU produzidas entre 1997 e 2000. A principal diferença em relação às DRAMs dos tipos EDO e FPM é que seu funcionamento é sincronizado com o do chipset (e normalmente também com o processador), através de um clock. Por exemplo, em um processador com clock externo de 133 MHz, o chipset também opera a 133 MHz, assim como a SDRAM.

(15)

A SDRAM é mais veloz que a EDO DRAM, é suportada por todas as placas de CPU produzidas a partir de meados de 1997, e seus módulos usam o encapsulamento DIMM/168.

Internamente não existe diferença entre as células de memória DRAM comum, da FPM DRAM, da EDO DRAM e da SDRAM. A diferença está na forma como os dados dessas células são acessados. Uma SDRAM realiza suas transferências usando temporizações como x-1-1-1. O primeiro acesso é o mais demorado, mas os acessos seguintes ocorrem em apenas um ciclo. Essas memórias usam um velho truque para permitir acessos em um único ciclo. Este truque é utilizado pelas placas de vídeo gráfico, desde os anos 80. Dentro de um chip de memória SDRAM, existem 4 bancos de memória independentes. Quando são acessadas, as células de mesmos endereços em cada um dos 4 bancos internos do chip são acessadas. Terminado o primeiro acesso (digamos que este primeiro acesso demore 5 ciclos, portanto a memória estaria operando com a temporização 5-1-1-1), o dado do primeiro banco poderá ser transmitido ao chipset e ao processador, e os três dados dos outros três bancos poderão ser transmitidos imediatamente depois, sem ter que esperar pelo seu tempo de acesso tradicional. A demora está em chegar aos dados desejados. Uma vez acessados, podem ser rapidamente transmitidos. Portanto, 4 circuitos lentos operando em conjunto, apresentam o mesmo resultado de um circuito rápido.

Se a idéia parece complicada, façamos uma comparação bem simples. Vá a uma loja de suprimentos de informática e peça um cartucho de tinta preta para a sua impressora. Quando o vendedor trouxer o cartucho, peça um com tinta amarela. Quando trouxer o segundo cartucho, peça um de tinta cyan, por último um de tinta magenta. Digamos que o vendedor tenha demorado 20 segundos para buscar cada cartucho. Como os cartuchos de todas as cores estão todos na mesma prateleira, seria mais rápido pedir os quatro ao mesmo tempo. O vendedor demoraria os mesmos 20 segundos para chegar ao primeiro cartucho, mas imediatamente poderia pegar os outros três (já “acessados”), economizando bastante tempo.

Como vemos, a SDRAM não é um tipo de memória que usa uma nova tecnologia de fabricação extremamente mais veloz. É apenas uma nova forma de organizar as células de memória fazendo acessos simultâneos, para que a transferência dos dados seja mais rápida. Truques semelhantes são utilizados por memórias mais avançadas, como a DDR SDRAM e a RDRAM, como veremos mais adiante.

(16)

DDR SDRAM

Apesar de envolver um grande esforço de engenharia na sua implementação, a idéia da DDR (Double Data Rate) SDRAM é bastante simples. Ao invés de uma única SDRAM, coloque duas iguais, lado a lado. Quando uma for acessada, a outra também será. Cada SDRAM poderá entregar um dado a cada pulso de clock. Como temos duas memórias “em paralelo”, o conjunto poderá entregar dois dados a cada pulso de clock. O resultado é uma taxa de transferência duas vezes maior. Agora, ao invés de utilizar dois chips SDRAM iguais, lado a lado, constrói-se um único chip com os circuitos equivalentes aos das duas SDRAMs, e adiciona-se a ele, os circuitos necessários para fazer a transmissão dupla a cada pulso de clock. O chip resultante é uma DDR SDRAM.

Figura 6.16 Operação da SDRAM e da DDR SDRAM.

A figura 16 mostra a diferença, do ponto de vista externo, entre a SDRAM e a DDR SDRAM. Os períodos de clock são representados por T0, T1, T2 e T3. A SDRAM fornece um dado a cada período de clock, e o instante da subida deste clock (transição de “0” para “1”) indica que o dado está pronto para ser lido. Na DDR SDRAM, utilizando períodos iguais, cada transição de subida ou de descida indica a presença de um dado pronto. Portanto são dois dados a cada clock.

As memórias DDR SDRAM recebem nomes de acordo com o clock que trabalham, e também com a taxa de transferência. Por exemplo, uma SDRAM que opera com 100 MHz realiza 200 milhões de transferências por segundo, portanto é chamada de DDR200. Como se tratam de transferências de 64 bits (8 bytes), os 200 milhões de transferências resultam em 1,6 bilhões de bytes por segundo. Aqui comete-se mais uma vez, uma imprecisão típica de fabricantes de memórias e de discos rígidos: confundir bilhão com giga.

(17)

Como sabemos, 1 giga vale 1024 x 1024 x 1024, ou seja, 1.073,741.824. Entretanto, para não criar confusão, consideraremos nesta discussão sobre taxas de transferência de memórias, um “mega” como sendo igual a um milhão, e 1 “giga” como sendo 1 bilhão. Portanto diríamos que a taxa de transferência de uma DDR200 é 1,6 GB/s. Devido a esta taxa, essas memórias também são chamadas de PC1600.

A tabela que se segue mostra os diversos tipos de DDR, com seus clocks e suas taxas de transferência.

Tipo Clock Taxa de transferência

DDR200 ou PC1600 100 MHz 1,6 GB/s DDR266 ou PC2100 133 MHz 2,1 GB/s DDR300 ou PC2400 150 MHz 2,4 GB/s DDR333 ou PC2700 167 MHz 2,7 GB/s DDR400 ou PC3200 200 MHz 3,2 GB/s DDR800 ou PC6400 400 MHz 6,4 GB/s

OBS: Não confunda os termos PC66, PC100 e PC133, usados pela SDRAM, com os termos PC1600 e superiores, usados pela DDR SDRAM. Na DDR SDRAM, o número representa a taxa de transferência máxima, medida em MB/s, enquanto na SDRAM, o número indica a freqüência de operação. Uma SDRAM PC100, por exemplo, fornece 800 MB/s (já que trabalha com 64 bits = 8 bytes em cada acesso), portanto tem a metade do desempenho de uma DDR SDRAM padrão PC1600.

A figura 17 mostra mais uma vez a diferença entre um módulo DIMM/168, usado pelas memórias SDRAM, e um módulo DIMM/184, usado pelas memórias DDR SDRAM.

(18)

Figura 6.17 Módulos DIMM/168 (SDRAM) e DIMM/184 (DDR SDRAM).

RDRAM

A RDRAM utiliza um processo similar ao da SDRAM para aumentar a taxa de transferência. Como vimos, cada chip SDRAM possui no seu interior, quatro bancos que são acessados simultaneamente, e depois transferidos rapidamente para o chipset e para o processador. Nas memórias RDRAM, é usado um número ainda maior de bancos para obter uma taxa de transferência ainda mais elevada. São 16 ou 32 bancos, dependendo dos chips. As células de memória usadas nesses bancos, assim como ocorre nos demais tipos de DRAM apresentados aqui, não são muito diferentes das células usadas nas DRAMs convencionais, exceto pela sua voltagem e por uma pequena redução no tempo de acesso. Cada uma dessas células são tão lentas quanto as encontradas nas memórias FPM DRAM de 60 ns, por exemplo, usadas em meados dos anos 90. A grande diferença é que essas memórias modernas utilizam muitas células trabalhando em paralelo, visando obter mais bits de uma só vez, e assim transferi-los mais rapidamente para o processador.

Um típico chip de memória RDRAM opera com dados de 16 bits. Também são comuns os chips de 18 bits. Os dois bits adicionais são usados como paridade, e servem para implementar mecanismos de detecção e correção de erros, como mostraremos mais adiante neste capítulo. Para simplificar a discussão, consideremos apenas os chips de 16 bits.

A maioria das DRAMs atuais operam com 300 ou 400 MHz. Alguns fabricantes oferecem freqüências intermediárias, como 333 ou 350 MHz. Também para simplificar nossa explicação, consideremos os chips de 400 MHz. Assim como a DDR SDRAM, a RDRAM também realiza duas

(19)

transferências por cada ciclo de clock, portanto tudo se passa como se a operação fosse em 800 MHz. Esses 800 milhões de transferências por segundo, sendo cada uma de 16 bits (2 bytes), resultam na taxa de transferência de 1,6 GB/s – aqui estamos fazendo como os fabricantes, considerando por simplicidade, 1 GB como sendo igual a 1 bilhão de bytes. Note que esta taxa é bem maior que a exigida pela maioria dos processadores:

Processador bits clock Banda

Pentium III 64 100 MHz 800 MB/s

Pentium III B 64 133 MHz 1,07 GB/s

Athlon 64 200 MHz 1,6 GB/s

Athlon 64 266 MHz 2,13 GB/s

Pentium 4 64 400 MHz 3,2 GB/s

Um único canal de memória RDRAM oferece uma taxa de transferência suficiente para atender à maioria dos processadores, exceto os mais avançados. O Pentium 4, por exemplo, com seu barramento de 400 MHz e 64 bits, exige 3,2 GB/s, o dobro da taxa de transferência da RDRAM. Portanto nas placas de CPU para Pentium 4, são utilizados dois canais de RDRAM com 1,6 GB/s cada um, totalizando os 3,2 GB/s necessários. Um Athlon com barramento externo de 200 MHz poderia ser plenamente atendido por um canal RDRAM de 1,6 GB/s, mas o mesmo não ocorre com as novas versões, que usam o clock externo de 266 MHz. Seriam necessários dois canais de RDRAM, ou então o uso de uma RDRAM mais veloz, ou então utilizar RDRAMs de 532 MHz, ao invés dos modelos de 400 MHz. Na verdade não é o que ocorre. A AMD é uma das responsáveis pelo desenvolvimento da DDR SDRAM, e essas são as memórias usadas nas placas de CPU para os modelos mais avançados do Athlon.

Figura 6.18 O Pentium 4 necessita de dois canais de RDRAM.

Os processadores modernos operam com 64 bits simultâneos, enquanto a RDRAM fornece apenas 16. Cabe ao chipset, que faz a ligação entre o processador e a memória, obter 4 grupos consecutivos de 16 bits vindos da

(20)

RDRAM, formando os 64 bits exigidos pelo processador. Nas placas de CPU para Pentium 4, são dois canais de 16 bits, ambos a 800 MHz (lembre-se que são na verdade 400 MHz, mas com duas transferências por cada clock). Juntos formam 32 bits por 800 MHz. O chipset faz a composição para 64 bits e 400 MHz, exatamente como exige o Pentium 4.

A incrível velocidade de 800 MHz não existe entre as células de memória da RDRAM. Esta velocidade existe apenas nos circuitos de entrada e saída. Para fornecer nas suas saídas, 16 bits a 800 MHz, os circuitos internos da RDRAM buscam 128 bits simultâneos (8 vezes mais), na taxa de 100 MHz (8 vezes mais devagar). Esses 128 bits que chegam aos circuitos de saída a cada 10 ns (100 MHz) são transferidos em grupos de 16, tomando 1.25 ns para cada grupo (800 MHz). Portanto a RDRAM é rápida apenas do ponto de vista externo. Internamente é uma memória mais lenta, de apenas 100 MHz, mas que fornece um número de bits simultâneos muito grande. A própria operação interna em 100 MHz (ciclos de 10 ns) também é uma dificuldade para as células de memória, que necessitam de no mínimo 60 ns para encontrar os dados. Este aumento é por sua vez feito pelo acesso simultâneo a um grande número de bits. Os bancos de células existentes no interior da DRAM operam na verdade com clock de 12,5 MHz (ciclo de 80 ns), mas fornecem 1024 bits (128 bytes) simultâneos. Note que 128 bytes x 12,5 MHz são exatamente 1,6 GB/s. Essas células de memória operam portanto em uma freqüência baixa, mas com um elevado número de bits simultâneos, que uma vez acessados, são transmitidos em altíssima velocidade, em grupos de 16.

É muito difícil tecnologicamente, fazer as células de DRAM serem mais rápidas. Veja a evolução nos seus tempos de acesso ao longo das últimas décadas:

Ano Tempo de acesso Bits do barramento Processador

1980 250 ns 8 bits 5 MHz

1985 150 ns 16 bits 12 MHz

1990 100 ns 32 bits 25 MHz

1995 60 ns 64 bits 100 MHz

2000 50 ns 64 bits 1000 MHz

Neste período de 20 anos, as memórias tornaram-se 5 vezes mais rápidas, enquanto o clock dos processadores aumentou 200 vezes. Para compensar esta desigualdade, os processadores passaram a utilizar barramentos com mais bits. Um barramento de 64 bits com memórias de 50 ns é aproximadamente 40 vezes mais rápido que um barramento de 8 bits e 250

(21)

ns. Ainda assim este aumento de 40 vezes não aumentou tanto quanto o clock dos processadores. A situação é ainda pior quando consideramos que o aumento do desempenho dos processadores foi muito maior que o simples aumento de clock. Uma forma de solucionar o problema seria aumentar mais ainda a largura dos barramentos, passando a 128 ou 256 bits, mas isto tornaria os projetos de placas extremamente complexo devido ao grande número de trilhas de circuito. A solução mais simples e que foi realmente adotada, foi aumentar o número de bits do barramento interno das memórias. A RDRAM, por exemplo, busca 1024 bits simultâneos. Uma vez acessados, esses bits são transmitidos em alta velocidade, por um barramento externo que continua com 64 bits, porém com clock elevadíssimo.

Figura 6.19 Estrutura interna de uma RDRAM.

A figura 19 mostra a estrutura interna de um chip de RDRAM. A parte mais importante, e que ocupa a maior parte dos circuitos, são os bancos de DRAM em seu interior. Dependendo do chip, podem ser 16 ou 32 bancos. Esses bancos fazem acessos simultâneos a grupos de 1024 bits a cada período de 80 ns, enviando-os às saídas em grupos de 128 bits a cada 10 ns, que por sua vez são enviados para o barramento externo, em grupos de 16 bits a cada 1,25 ns.

Memórias ROM

A ROM (Read Only Memory, ou memória de apenas leitura) tem duas características principais. A primeira, trata-se de uma memória não volátil, ou seja, que não perde seus dados quando é desligada. Por isso é a memória

(22)

ideal para armazenar o BIOS, que precisa entrar em execução assim que o computador é ligado. A segunda característica, seu próprio nome já diz. É usada apenas para operações de leitura, não permitindo gravações. A maioria das ROMs utiliza o encapsulamento DIP (Dual In-line Package). O usuário nem mesmo precisa se preocupar com a instalação das ROMs. Já vêm instaladas e prontas para funcionar. As ROMs mais comuns são as que armazenam o BIOS da placa de CPU e o BIOS da placa VGA.

Shadow RAM

As ROMs são extremamente lentas para os padrões atuais de velocidade das memórias. Enquanto as DRAMs modernas apresentam tempos de acesso inferiores a 15 ns (PC66), as ROMs têm tempos de acesso de 100 ns ou mais. Uma outra limitação dos chips de ROM é que normalmente fornecem apenas 8 bits de cada vez. Os processadores modernos precisam ler 64 bits de cada vez, portanto os dados das ROMs precisam ser agrupados de 8 em 8, até formar 64 bits, para só então serem liberados para o processador. Como resultado do elevado tempo de acesso e dos seus singelos 8 bits, as ROMs usadas nos PCs são cerca de 100 vezes mais lentas que as RAMs. Existem ROMs rápidas, porém são muito caras. Seria também possível agrupar 8 ROMs para formar um grupo de 64 bits, mas esta é também uma solução bastante cara para o problema da sua lentidão.

Felizmente existe uma técnica bastante simples e econômica para a solução deste problema, técnica esta utilizada desde o tempo dos PCs 286: a Shadow RAM. A técnica consiste em, logo no início do processo de boot, copiar o conteúdo da ROM (que armazena o BIOS da placa de CPU) para uma área da RAM. Feita esta cópia, a área de RAM que recebeu a cópia dos dados da ROM tem suas operações de escrita desabilitadas. Isto faz com que o comportamento seja similar ao de uma ROM (Read Only). Finalmente, esta área de RAM é mapeada sobre o mesmo endereço antes ocupado pela ROM, ao mesmo tempo em que a ROM é desabilitada. A partir daí passa a vigorar a cópia da ROM, feita sobre a RAM.

A técnica da shadow RAM é utilizada para acelerar o BIOS da placa de CPU, o BIOS da placa de vídeo e outros BIOS eventualmente existentes em placas de expansão. A habilitação da shadow RAM é feita através do CMOS Setup.

ROM, PROM, EPROM

As ROMs são encontradas em diversas modalidades. As principais diferenças dizem respeito a como os dados originais são armazenados. Em

(23)

uso normal, a ROM aceita apenas operações de leitura, e não de escrita, mas antes disso, é preciso que alguém (normalmente o fabricante) armazene os seus dados.

A ROM é o tipo mais simples. Seus dados são gravados durante o processo de fabricação do chip. Um fabricante de placas de CPU, por exemplo, entrega ao fabricante de memórias, o conteúdo a ser gravado nas ROMs. A partir deste conteúdo, o fabricante de memórias produz uma matriz, com a qual serão construídos milhares de chips. Normalmente só vale a pena utilizar ROMs quando se tem certeza de que seus dados não precisarão ser alterados, e também quando são produzidas no mínimo 10.000 peças iguais. Nessas condições, o custo de fabricação de cada chip é bastante baixo. A PROM (Programable ROM) é um tipo de memória ROM, com uma diferença: pode ser programada em laboratório, através de um gravador especial. Este tipo de gravação é feito através da “queima” de microscópicos elementos, que são como pequenos fusíveis, feitos de material semicondutor. Uma PROM nova vem em estado “virgem”, ou seja, com todos os seus fusíveis intactos. O processo de gravação faz a queima seletiva desses fusíveis, a fim de representar os bits desejados. Este processo é irreversível. Uma vez “queimada”, ou seja, programada, uma PROM não pode mais ser modificada. No passado, as PROMs eram usadas em laboratório, durante o desenvolvimento de produtos que seriam posteriormente produzidos em larga escala, utilizando ROMs. Hoje existem métodos mais eficientes, mas as PROMs ainda são bastante utilizadas quando é necessário criar circuitos de alta velocidade.

A EPROM ou UV-EPROM (Eraseable PROM, ou Ultra Violet Eraseable PROM) é uma ROM programável, que pode ser reaproveitada. Seus dados podem ser apagados através de um feixe de luz ultra violeta de alta intensidade. As EPROMs possuem uma janela de vidro, através da qual podem incidir os raios ultra violeta usados no processo de apagamento. Esses raios são obtidos em um aparelho especial chamado “apagador de EPROMs”, que consiste basicamente em uma caixa plástica com uma lâmpada ultra violeta.

Devido ao seu baixo custo em comparação com as PROMs, as EPROMs foram muito utilizadas pela indústria de informática, para gravação de BIOS, geradores de caracteres e outros dados fixos. Um pequeno fabricante que produz apenas algumas centenas de unidades de um produto não tem escala de produção suficiente para utilizar ROMs, que precisam ser produzidas aos

(24)

milhares. Ao invés disso utilizam EPROMs, que mesmo sendo mais caras, podem ser utilizadas em pequenas quantidades.

Flash ROM

Desde os anos 80 existe no mercado um tipo especial de ROM, que pode ser programada e apagada eletricamente: a EEPROM ou E2PROM

(Eletrically Eraseable Programable ROM). Essas memórias são antecessoras das atuais Flash ROMs, que têm a mesma característica. São ROMs que podem ser regravadas através da aplicação de voltagens de programação especiais. Em uso normal, esta voltagem de programação não chega ao chip, e seus dados permanecem inalteráveis. Este tipo especial de ROM tem sido utilizado nas placas de CPU a partir de meados dos anos 90 para armazenar o seu BIOS. Pelo fato de serem alteráveis, permitem realizar atualizações do BIOS, através de programas especiais que ativam os seus circuitos de gravação. Este programa é fornecido pelo fabricante da placa de CPU.

Figura 6.20 O BIOS da placa de CPU é armazenado em uma Flash ROM.

As Flash ROMs também foram muito utilizadas para armazenar o “BIOS do modem”. Este termo é errado, o correto é dizer “o firmware do modem”. Trata-de de um software que é executado pelo processador (DSP, ou processador de sinais digitais) existentes no modem. Este software possui, entre outros módulos, os protocolos de comunicação. Logo que surgiram os primeiros modems de 56k bps, dois protocolos de fabricantes diferentes competiam para ser o padrão do mercado: o X2 e o K56Flex. Nenhum fabricante de modem tinha certeza sobre qual o protocolo seria adotado como padrão mundial, por isso passaram a escolher um deles e armazená-lo em uma Flash ROM no modem. Uma vez que fosse adotado o padrão definitivo, o novo protocolo poderia ser gravado nesta Flash ROM. No início de 1998 foi finalmente estabelecido o padrão V.90, e os fabricantes de modems passaram a oferecer através dos seus sites, um programa de atualização para o novo protocolo, a ser gravado na Flash ROM.

(25)

Figura 6.21 Flash ROM de um modem.

SPD – Serial Presence Detect

Este é um recurso que possibilita ao BIOS identificar corretamente as características dos módulos de memória, e desta forma configurar o chipset para realizar o acesso da forma mais eficiente. Foi introduzido nos módulos de memória SDRAM e mantido nos módulos de DDR SDRAM e RDRAM. É implementado através de um minúsculo chip de memória EEPROM existente nos módulos, onde estão armazenadas todas as suas características. Normalmente este chip tem 8 terminais e fica localizado na parte direita do módulo, como mostra a figura 22.

Figura 6.22

O chip SPD de um módulo de SDRAM.

Antes de existir o SPD, o BIOS precisava determinar através de contagem, a quantidade de memória instalada. Vários parâmetros relacionados com a temporização de acesso às memórias deviam ser obrigatoriamente programados no BIOS. Como existem módulos com características bem diferentes, os BIOS precisavam utilizar temporizações longas, compatíveis com maior variedade de módulos, e desta forma o desempenho não era otimizado. Com as memórias atuais, suas características são corretamente

(26)

detectadas através do SPD, e o BIOS pode programar o chipset para obter o máximo desempenho possível para as memórias instaladas.

A seguir apresentamos alguns dos diversos parâmetros armazenados na EEPROM SPD:

Alguns parâmetros armazenados

Capacidade do módulo Número de bits Tempo de acesso

Tipo da memória: SDRAM, DDR SDRAM, RDRAM Número de bancos

Voltagem

Detecção e correção de erros na memória

Todos os chips de memória estão sujeitos a erros. A probabilidade da ocorrência de erros é muito pequena, mas dependendo da aplicação, o erro pode ser tolerado ou não. Se um computador usado exclusivamente para jogos apresentar um erro por ano, isto não causará problema algum. Se um computador usado no monitoramento de uma planta de energia atômica, a taxa de um erro a cada 10 anos seria catastrófica. Existem mecanismos para detectar erros, e outros que permitem ainda corrigir o erro encontrado.

Paridade

A paridade é um recurso que serve para aumentar a confiabilidade das memórias DRAM (isto se aplica a qualquer tipo de DRAM: RDRAM, DDR, SDRAM, EDO e FPM). Nos anos 80, as DRAMs eram muito suscetíveis a erros, e a técnica da paridade foi amplamente utilizada com o objetivo de detectar eventuais erros na memória. Com o passar dos anos, as memórias DRAM foram aperfeiçoadas e tornaram-se mais confiáveis, fazendo com que o uso da paridade pudesse ser dispensado, pelo menos nas aplicações menos críticas. Ainda assim, computadores que necessitam de alta confiabilidade continuam utilizando módulos de memória com paridade para aplicar um outro método mais eficiente para correção de erros, conhecido como ECC – Error Correction Code.

A paridade nos PCs consiste em adicionar a cada grupo de 8 bits, um nono bit, chamado de bit de paridade. Este bit funciona como um dígito verificador, e permite detectar a maior parte dos erros na memória. Módulos SIMM/72 com paridade operam com 36 bits ao invés de 32, e módulos DIMM/168 (SDRAM) e DIMM/184 (DDR) com paridade operam com 72

(27)

bits ao invés de 64. Módulos RDRAM com paridade utilizam 18 bits, ao invés de 16. A paridade que já foi tão importante há alguns anos atrás, caiu de importância pelo fato das memórias terem se tornado mais confiáveis. Inclusive muitos chipsets para PCs de baixo custo não fazem checagem de paridade, nem usam ECC.

Os bits de paridade não são acessíveis ao processador. São usados por dois circuitos existentes no chipset: circuito gerador de paridade e circuito checador de paridade. O circuito gerador de paridade escreve o bit de paridade de cada grupo de 8 bits nas operações de escrita na memória. O circuito testador de paridade verifica a paridade em cada grupo de 8 bits lido da memória. Vejamos como funciona o bit de paridade e como é feita a detecção de erros na memória. Para simplificar a explicação, tomaremos apenas um grupo de 8 bits, mais um bit de paridade. Nas placas de CPU modernas, este mesmo circuito aparece repetido 8 vezes, completando assim 64 bits, ou 72 contando com os bits de paridade.

Figura 6.23 Geração do bit de paridade.

A figura 23 mostra como se procede uma operação de escrita na memória, com o uso do bit de paridade. O circuito gerador de paridade recebe o valor que o processador coloca na memória e "conta" quantos bits "1" estão sendo escritos. A partir dessa "conta", escreve um bit de paridade de tal forma que, ao considerar o conjunto de 9 bits, o número total de bits "1" será sempre ímpar. Portanto, o circuito gerador de paridade garante que em cada grupo de 9 bits da memória existirá sempre um número ímpar de bits "1".

(28)

Figura 6.24 Checagem da paridade.

Vejamos agora como funciona a operação de leitura da memória. Nesse caso, entra em jogo o circuito testador de paridade. Em cada operação de leitura, este circuito recebe os 8 bits que o processador está lendo e mais o bit de paridade, formando um total de 9 bits, e "conta" o número de bits "1" que existem neste conjunto. Se tudo correr bem, deverá existir obrigatoriamente um número ímpar de bits "1". Caso não exista um número ímpar de bits "1", significa que ocorreu um erro na memória. Este circuito gerará o que chamamos de interrupção do processador, que imediatamente suspenderá o processamento e apresentará uma mensagem de erro. Sob o Windows, este será um daqueles erros do tipo “tela azul”. Será preciso resetar o computador. Desta forma, o erro não será propagado, evitando que sejam causados danos aos dados.

Vejamos com detalhe como se procede esta detecção de erro. Suponha que o processador escreve na memória, um byte com valor binário 01000001. O circuito gerador de paridade, ao encontrar neste valor dois bits "1" gerará um bit de paridade igual a 1. Suponha que depois deste dado estar armazenado na memória, o segundo bit da direita para a esquerda transforma-se em "1", devido a um erro na memória. Ficará então armazenado o valor 01000011 e o bit de paridade será 1. Quando o processador ler este valor, o circuito testador de paridade encontrará um total de 4 bits "1" no grupo de 9 bits, o que caracteriza um erro na memória.

O circuito de paridade não é capaz de detectar um erro em que existem dois bits simultaneamente errados no mesmo grupo de 8 bits. Entretanto, o erro em um único bit é o mais comum. A probabilidade de existirem dois bits errados é milhares de vezes menor que a de existir apenas um errado. A paridade é a técnica mais simples para detectar erros na memória, mas é muito eficaz.

(29)

Caso seja detectado um erro na memória, o usuário deve providenciar sua manutenção. Será necessário substituir o módulo de memória defeituoso.

ECC

Uma outra técnica mais eficiente tem sido utilizada para detectar e corrigir erros na memória. Trata-se do ECC, e tem sido utilizada em placas de CPU de alta confiabilidade, como as usadas em servidores. Para cada grupo de 64 bits, 8 bits adicionais são usados para detecção e correção de erros. Por isso, dizemos que os módulos DIMM/168 de 72 bits não são ditos “com paridade”, e sim, “com ECC”.

Qualquer bit armazenado na memória apresenta uma pequena probabilidade de erro. Dentro de uma célula de memória, a probabilidade de ocorrer erro em apenas um de seus bits é muito maior que a probabilidade de ocorrerem erros simultâneos, ou seja, em dois ou mais bits. Cálculos de probabilidade podem ser feitos para mostrar que, sendo muito pequena a probabilidade de um bit apresentar falha, temos:

Tipo de falha Probabilidade Falha em um bit isolado p

Falha em 1 bits dentro de um grupo de 8 bits 8p Falha em 2 bits simultâneos em um grupo de 8 bits 28p2

Falha em 3 bits simultâneos em um grupo de 8 bits 56p3

Para simplificar os cálculos, suponha um chip de memória de baixíssima confiabilidade, com probabilidade de 1 em 1000 (p=0,001) de falha. As probabilidades de falhas em grupos de 1, 2 e 3 bits seriam:

Tipo de falha Probabilidade Falha em um bit isolado 0,001

Falha em 1 bits dentro de um grupo de 8 bits 0,008 Falha em 2 bits simultâneos em um grupo de 8 bits 0,000028 Falha em 3 bits simultâneos em um grupo de 8 bits 0,000000056

Comparando esses números, vemos que a probabilidade de dois bits falharem simultaneamente (0,008) é 285 vezes maior que a probabilidade de falharem dois bits simultaneamente. A chance de falharem 3 bits ao mesmo tempo é 142857 vezes menor que a de falhar apenas um bit. Na prática esta diferença é ainda maior, portanto todos os mecanismos de detecção e correção de erros são voltados a resolver problemas causados por erros do tipo single bit.

(30)

As falhas nas células de memória são causadas por bombardeamento de partículas alfa e raios cósmicos. Não só as memórias, chips em geral e os seres vivos são continuamente bombardeados por essas radiações, porém em intensidades baixíssimas e inofensivas. Periodicamente ocorrem tempestades eletromagnéticas, que são explosões solares que emitem grande quantidade de partículas alfa. Aparelhos eletrônicos podem ser afetados nessas ocasiões, através de raríssimos mas reais, erros nos bits armazenados nas suas células de memória.

No início dos anos 80, as células de DRAM eram muito sensíveis, e podiam apresentar em média, um erro a cada 30 horas. Note que este tempo médio entre falhas (MTBF) é menor, quanto maior é o número de células de memória. Nos PCs atuais, o MTBF de um bit é bem pequeno, mas quando levamos em conta memórias de 256 MB e superiores, comuns em servidores, chegamos a MTBFs que variam entre 1 mês e 1 ano. Portanto é real a probabilidade de ocorrência de um erro em um dos seus bits, em períodos razoavelmente pequenos, principalmente quando levamos em conta que um servidor fica ligado 24 horas por dia. Não quer dizer que é preciso ficar ligado um mês para o erro ocorrer. Em um grupo de 256 MB, o erro pode acontecer depois de um ano, em outro pode ser depois alguns meses ou semanas, em outro pode ocorrer até no primeiro dia de uso. É tudo estatístico, um MTBF de um mês significa que se tomarmos vários computadores e marcarmos o tempo transcorrido até aparecer o primeiro erro, a média será de um mês ou mais.

Esses erros não são permanentes, são apenas uma troca de bit (0 se transforma em 1 ou 1 se transforma em 0). Se o bit errado for detectado e corrigido, esta célula de memória continuará funcionando normalmente. Códigos de detecção e correção de erros são bastante utilizados em todos os tipos de armazenamento de dados, como:

Memória RAM Disco rígido Disquetes CD-ROM Fitas magnéticas

Sempre que as informações são guardadas em discos rígidos, disquetes e outros meios de armazenamento, são adicionados códigos para futura checagem de erros, o que aumenta a sua confiabilidade. Memórias RAM são bastante confiáveis, mas nas aplicações em que é necessária uma

(31)

confiabilidade ainda maior, também utilizam códigos de correção de erros (ECC). Esses códigos também são bastante utilizados em transmissão de dados, por exemplo:

Protocolos de comunicação em geral Transmissão de dados através de uma rede Transmissão de dados por satélite

Transmissão de dados por fibra ótica

Enfim, sempre que existe uma transmissão de dados, para cada bloco de dados são enviados bytes adicionais para detecção, ou mesmo correção de erros.

Como corrigir um erro na memória

Partimos do princípio de que, quando um erro ocorre em uma célula, este erro está em apenas um bit. A chance de ocorrerem dois erros simultâneos na mesma célula de memória é praticamente nula. Entretanto são usados códigos sofisticados que permitem detectar (mas não corrigir) erros em dois bits simultâneos. O funcionamento desses códigos é muito complexo, por isso mostraremos aqui como resolver o problema mais comum: detectar e corrigir erros do tipo single bit, ou seja, quando ocorrem em um único bit dentro de uma célula de memória. O método mais empregado é o chamado código de Hamming. Vamos apresentar um método mais simples, bastante parecido com o código de Hamming. Podemos chama-lo de método de Laercius. Ele não detecta erros em dois bits simultâneos, mas é de simples entendimento. Este método consiste em adicionar para cada dado, um grupo de bits de checagem. Quanto mais bits de dados, mais bits de checagem devem ser usados. A tabela abaixo mostra para dados de 8, 16, 32 e 64 bits, quantos bits devem ser usados para checagem:

Tamanho dos dados Bits adicionais usando o

código de Hamming Bits adicionais usando o“código de Laercius”

8 bits 5 5

16 bits 6 6

32 bits 8 7

64 bits 8 8

Mostraremos o funcionamento da correção de erros pelo código de Laercius usando dados de 8 bits, por ser mais fácil de entender. O funcionamento para 64 bits é semelhante, mas didaticamente é mais fácil explicar como funciona para 8 bits. Para o grupo de 8 bits são adicionados 5 bits de checagem. Note que na prática não é feita esta checagem para apenas 8 bits,

(32)

pois adicionando 5 bits, estamos quase dobrando o custo da memória. Para grupos de 64 bits, usados nos PCs modernos, bastam 8 bits para fazer a detecção e correção de erros, totalizando 72 bits, um aumento bastante viável que não afeta muito o custo das memórias.

Figura 6.25 Um código simples para correção de erros.

A figura 25 mostra um dado de 8 bits, representado por b7b6b5b4b3b2b1b0. Os

5 bits de controle são p1, p2, p4, pd e pp. Esses 5 bits são calculados da

seguinte forma:

p1: Paridade calculada entre b5, b7, b3 e b1

p2: Paridade calculada entre b4, b6, b2 e b0

p4: Paridade calculada entre b5, b7, b4 e b6

pd: Paridade calculada entre b7, b6, b5, b4, b3, b2, b1, b0

pp: Paridade calculada entre p1, p2, p4 e pd.

Quando é feita uma gravação na memória, são gerados e armazenados os 5 bits de checagem. Quando é feita uma leitura, são lidos os dados e os bits de checagem. Em função dos dados lidos, os bits de checagem são novamente calculados. São comparados os bits de checagem armazenados com os calculados. Se forem iguais, está tudo correto. Se existirem diferenças, temos um erro na memória.

É recalculada a paridade dos dados pd. Também é recalculada a paridade

dos bits de controle, pp. Se pd estiver correta, não existe erro nos 8 bits de

dados da memória. Se pd indicar erro, então existe um bit errado, ou entre

os 8 bits de dados, ou então o erro pode ser o próprio bit pd. Entrará então

em jogo o bit de paridade pp. Se estiver errado, significa que existe um bit

errado, que será necessariamente pd. Isto significa que os 8 bits de dados

(33)

corretos, então o erro está em um dos 8 bits de dados. A explicação pode ser melhor visualizada através da figura 26.

Figura 6.26 Correção de erros pelo método de Laercius.

O mais interessante de tudo é a forma pela qual o bit errado é identificado. Ele é indicado pelos valores de p1, p2 e p4 armazenados e calculados.

Quando esses bits armazenados são iguais aos calculados, recebem peso zero, quando são diferentes, recebem peso 1, 2 ou 4 respectivamente. Por exemplo, quando p1 calculado é igual ao p1 armazenado, p2 calculado é

diferente do p2 armazenado, e p4 calculado é igual ao p4 armazenado, temos

0+2+4=6. Isto significa que o bit b6 está errado. Basta invertê-lo (trocar de 0

para 1, ou de 1 para 0) e o erro estará corrigido.

Com dados de 64 bits, são usados os bits de checagem p1, p2, p4, p8, p16 e p32,

além de pd para indicar a paridade dos dados e pp para indicar a paridade

dos bits de checagem. São portanto 8 bits de checagem ao todo. O mesmo esquema da figura 26 é utilizado, e os bits p1, p2, p4, p8, p16 e p32 são usados

para indicar a posição do erro.

Essa história de código de Laercius é brincadeira. Não sou o criador deste método, estou apenas repetindo o que aprendi em alguma aula de circuitos digitais, lá pelo início dos anos 80...

Você não precisa conhecer os métodos utilizados pelos chipsets para detectar e corrigir erros na memória, mas precisa saber o seguinte:

a) para cada grupo de 64 bits, são necessários 8 bits adicionais para implementar o ECC, totalizando 72 bits.

b) Não adianta simplesmente usar memórias de 72 bits. É preciso que o chipset da sua placa de CPU utilize a geração e a checagem de erros. Muitos chipsets para PCs de baixo custo não operam com ECC.

(34)

Velocidade de memórias FPM e EDO

As memórias FPM e EDO, muito usadas nos PCs produzidos entre 1994 e 1997, apresentam em geral o encapsulamento SIMM/72, e são utilizadas aos pares. O tempo de acesso dessas memórias é medido em ns (nano-segundos). Em geral os tempos de acesso são de 50, 60, 70 e 80 ns, sendo que as de 60 e 70 ns são as mais comuns. Os fabricantes utilizam ao lado do número de cada chip, um indicador de tempo de acesso. Por exemplo, 60 ns pode ser indicado como –60, 06, -06 ou similar. A figura 27 mostra chips de um módulo SIMM/72, com tempo de acesso de 60 ns.

Figura 6.27

Chips de memória com tempo de acesso de 60 ns.

As marcações usadas pelos vários fabricantes, para memórias FPM e EDO, são indicadas na tabela abaixo.

Tempo de acesso Marcações 80 ns -80, -8, -08, -X8 70 ns -70, -7, -07, -X7 60 ns -60, -6, -06, -X6 50 ns -50, -5, -05, -X5

Por exemplo, os chips KM44C4104AK-6, mostrados na figura 27, são de 60 ns. Você poderá ainda ter dúvidas para diferenciar um módulo FPM e um módulo EDO. Isto pode ser resolvido facilmente, através do nosso guia de

(35)

memórias, encontrado em www.laercio.com.br/livro26.htm. Note que as marcações que indicamos dizem respeito a memórias FPM e EDO, encontradas em módulos SIMM/72 (e também em SIMM/30). Memórias SDRAM possuem marcações parecidas, mas os significados são outros. Por exemplo, uma SDRAM com marcação –8 não é de 80 ns, e sim, de 8 ns. Se um módulo de memória é SIMM/30, então certamente é FPM. Se é um módulo SIMM/72, então certamente é FPM ou EDO. Se o módulo é do tipo DIMM/168, então provavelmente trata-se de uma SDRAM, mas existem alguns raros casos de memórias FPM e EDO que usam o encapsulamento DIMM/168. O guia de memórias citado acima serve para resolver este tipo de dúvida.

EDO com encapsulamento DIMM/168

São bastante raras, mas existem algumas memórias EDO DRAM com encapsulamento DIMM/168, apesar deste encapsulamento ser mais usado pela SDRAM. É fácil esclarecer a dúvida, basta procurar pelo chip de EEPROM SPD, já mostrado na figura 22. Módulos de SDRAM possuem este chip, enquanto os raros módulos EDO DRAM com encapsulamento DIMM/168 não o possuem.

Escolhendo a SDRAM correta

Esta é mais uma fonte de confusão. As memórias SDRAM podem ser classificadas de acordo com o seu clock, ou de acordo com o tempo de acesso. Ambas as classificações são equivalentes. Por exemplo, um clock de 125 MHz resulta em um período de 8 ns, portanto o fabricante pode utilizar qualquer um dos indicadores para a velocidade: -125 ou –8, o que significa 125 MHz e 8 ns, respectivamente. A tabela abaixo mostra a correspondência entre os clocks e os tempos de acesso.

Clock Ciclo 66 MHz 15 ns 83 MHz 12 ns 100 MHz 10 ns 125 MHz 8 ns 133 MHz 7,5 ns 143 MHz 7 ns 166 MHz 6 ns

Ocorre que, na prática, nem sempre os clocks máximos indicados pelos fabricantes das memórias podem ser utilizados. O problema não está relacionado a enviar um dado a cada período de clock, e sim, ao longo

(36)

tempo necessário para enviar o primeiro dado. As primeiras memórias SDRAM operavam com temporizações como 7-1-1-1, 6-1-1-1 e 5-1-1-1, ou seja, precisavam de um tempo mais longo para encontrar o primeiro dado de um grupo, depois enviavam os dados seguintes na sua velocidade máxima, com um dado a cada ciclo de clock. As memórias atuais são ainda mais rápidas, e podem operar nos modos 3-1-1-1 e 2-1-1-1. Esses modos são diferenciados por um parâmetro chamado CAS Latency, e está relacionado ao tempo transcorrido entre o início do ciclo e o sinal de CAS. São indicados como “CL=3” e “CL=2”. A maioria das memórias consegue operar com facilidade usando CL=3, mas nem todas podem operar com CL=2. Um módulo de memória com marcação –75 (133 MHz) pode conseguir operar a 133 MHz usando CL=3, mas pode não conseguir operar com CL=2, sendo necessário utilizá-lo com clocks mais baixos. Tome por exemplo as informações apresentadas pela Mícron, fabricante de memórias (www.micron.com) sobre seus chips com ciclos de 7 e 7,5 ns:

Marcação Ao usar o clock Precisa de Latência do

CAS de... Classificação

-75 66 MHz 2 PC66

-75 100 MHz 2 PC100

-75 133 MHz 3 PC133

-7 133 MHz 2 PC133

-7 143 MHz 3

O chip de marcação –75 opera com ciclos de 7,5 ns, ou 133 MHz. Esta memória pode ser instalada em placas que exijam o funcionamento externo a 66, 100 e 133 MHz, entretanto, para 66 e 100 MHz pode utilizar CL=2 (resultando em temporizações 2-1-1-1). Estaria assim atendendo aos requisitos dos padrões PC66 e PC100. Para operar em placas com clock externo de 133 MHz, precisaria utilizar CL=3, operando então com a temporização 3-1-1-1, ainda assim atendendo à especificação PC133. O ideal entretanto é utilizar a temporização 2-1-1-1, obtida com CL=2. Segundo este fabricante, isto é possível com os seus chips de marcação –7. Esses chips podem operar ainda com o clock máximo de 143 MHz, porém usando CL=3. Note que essas regras não são gerais, sempre é preciso confirmar no manual do fabricante, qual é o CL que pode ser usado (2 ou 3) para cada clock. De um modo geral, para fazer um chip de SDRAM operar com a sua máxima freqüência é preciso usar CL=3.

Muitas placas de CPU possuem no CMOS Setup, especificamente na seção Advanced Chipset Setup, um item para indicar a latência do CAS, oferecendo as opções CL=2 e CL=3. Isto permite ao usuário fazer um

(37)

pequeno “envenenamento”, utilizando memórias mais rápidas que o necessário e programando CL=2. A configuração mais segura entretanto é utilizar o SPD (Serial Presence Detect). Esta identificação das memórias SDRAM informa ao BIOS os seus parâmetros temporais, e assim pode ser feita automaticamente a programação do CL e outros parâmetros de modo a obter o melhor desempenho e com segurança.

De um modo geral, memórias de 10 ns (100 MHz) podem operar a 66 MHz com CL=2. Essas memórias recebem a classificação PC66. Memórias de 8 ns (125 MHz) normalmente podem operar 100 MHz (padrão PC100) e CL=2, mas alguns chips requerem CL=3. Memórias de 7.5 ns (133 MHz) em geral funcionam a 133 MHz (PC133) com CL=3. Para utilizar 133 MHz com CL=2, em geral é preciso que as memórias sejam mais rápidas, como –7 ou –6 (143 MHz e 166 MHz, respectivamente). Use a tabela abaixo como referência:

Memórias de.... Podem operar com... Usando CL

166 MHz (6 ns) 133 MHz CL=2 100 MHz CL=2 66 MHz CL=2 143 MHz (7 ns) 133 MHz CL=2 100 MHz CL=2 66 MHz CL=2 133 MHz (7,5 ns) 133 MHz CL=3 100 MHz CL=2 66 MHz CL=2 125 MHz (8 ns) 100 MHz CL=2 66 MHz CL=2 100 MHz (10 ns) 100 MHz CL=3 66 MHz CL=2

Note que esta tabela tem a intenção de ajudar, mas dependendo do chip de memória utilizado, pode ser necessário usar CL=3 em situações nas quais a tabela recomenda CL=2. A palavra final é a do fabricante das memórias. Em caso de dúvida, usar CL=3 sempre funciona quando o clock da memória é igual ou superior ao clock da placa de CPU.

(38)

Figura 6.28

Acessos de leitura com CL=1, CL=2 e CL=3. para memórias Micro MT48LC1M16A1

A figura 28 mostra as operações de leitura em uma SDRAM modelo MT48LC1M16A1, produzida pela Micron, usando CL=1, CL=2 e CL=3. Os dados não devem ser generalizados para qualquer chip de SDRAM, são específicos para o chip citado. Na prática, CL=1 não é utilizado, pois as memórias SDRAM não podem operar com freqüências elevadas neste modo. Com CL=1, o dado (DQ) é acessado depois de apenas 1 ciclo de clock. Note na figura que com CL=1, o comando de leitura (READ) foi dado a subida do pulso de clock T0, e o dado (DQ) ficou pronto um ciclo depois, ou seja, na subida de T1. Com CL=2, o dado está pronto depois de dois ciclos de clock, e com CL=3, pronto com 3 ciclos de clock. Memórias operando com CL=2 e CL=3 operam com temporizações 2-1-1-1 e 3-1-1-1, respectivamente. A figura mostra ainda uma pequena tabela indicando a freqüência máxima que pode ser usada com CL=1, CL=2 e CL=3. A tabela mostra que usando CL=1, memórias –6 (166 MHz) podem operar no máximo a 50 MHz, memórias –7 (143 MHz) podem operar no máximo a 40 MHz, e memórias –8 (125 MHz) podem operar no máximo a 40 MHz, valores muito baixos. Já com CL=2 essas memórias operam de forma mais confortável: 125 MHz, 100 MHz e 77 MHz, respectivamente. Apenas com CL=3 essas memórias conseguem operar com suas freqüências máximas.

Escolhendo a DDR SDRAM correta

A DDR SDRAM é um produto bastante recente, começou a ser produzida em alta escala no ano 2000. Sendo um produto novo, maiores são as chances

(39)

de ocorrerem incompatibilidades, já que nem sempre todos os fabricantes seguem os mesmos padrões. Vamos então esclarecer os principais pontos.

Módulos Registered e Unbuffered

Um fato importante deve ser conhecido sobre as memórias DDR. Existem duas categorias:

1) Registered

2) Unregistered ou Unbuffered.

Os fabricantes de memórias normalmente produzem ambos os tipos. O segundo é mais barato e mais indicado para PCs comuns. O tipo registered é mais caro, mas tem a vantagem de poder ser instalado em maiores quantidades, sendo ideal para servidores. Cada módulo registered consome menos corrente nas suas entradas, portanto um mesmo chipset pode ser ligado a um número maior de módulos, o que resulta em maior quantidade de memória. O próprio chipset AMD 760, primeiro a operar com DDR, pode controlar o máximo de 2 GB de DDR tipo unbuffered, ou até 4 GB do tipo registered. Placas de CPU que suportam memórias DDR possuem em geral um jumper para a indicação do tipo de DDR, como é o caso da 7DXC, produzida pela Gigabyte (figura 29).

Figura 6.29

Jumper para indicar o tipo de DDR SDRAM (Registered / Unbuffered).

É fácil identificar a diferença entre memórias DDR nas versões Registered e Unbuffered. A diferença está mostrada na figura 30. Ambos utilizam os chips de memória similares, mas o módulo Registered possui chips adicionais localizados entre o conector e os chips de memória. Esses chips são os chamados Registers (registradores).

(40)

Figura 6.30

Módulos de DDR SDRAM DIMM/184 nas versões Unbuffered e Registered.

Voltagem da DDR SDRAM

Assim como as memórias SDRAM usadas na maioria dos PCs operam com 3,3 volts, as memórias DDR SDRAM mais usadas operam com 2,5 volts, mas existem ainda as versões de 1,8 volts, ainda pouco utilizadas. Existem diferenças no soquete e nos módulos, que impedem o uso de módulos de 1,8 volts em soquetes de 2,5 volts, e vice-versa. A diferença fica por conta do posicionamento do chanfro do soquete. A figura 31 mostra os chanfros para os atuais módulos de 2,5 volts (chanfro à esquerda) e para as futuras memórias de 1.8 volts (chanfro no centro). Existe ainda uma posição reservada para uso futuro (chanfro à direita), que poderá ser usada com um eventual novo padrão de voltagem.

Figura 6.31 O chanfro indica a voltagem do módulo de memória DDR.

Velocidade da DDR SDRAM

O selecionamento da DDR SDRAM começa pelo seu clock, de acordo com o apresentado na tabela abaixo. Note que as denominações DDRxxx são adotadas principalmente pelos chips de memória, enquanto nomenclaturas como PCXXXX (PC1600, PC2100, etc.) são usadas para designar módulo. O correto portanto seria dizer, por exemplo, que “um módulo de DDR PC1600 utiliza chips DDR200”.

Referências

Documentos relacionados

Assim, a id´eia central seria selecionar um c´odigo espec´ıfico que tenha um algoritmo de decodificac¸˜ao eficiente (para a vers˜ao original, C´odigos de Goppa), e,

Ponderam o STF e o STM que não se pode conciliar a vulneração da hierarquia e da disciplina com o princípio da insignificância, pois qualquer desrespeito àquelas, por definição,

E já que as novas sociabilidades, aumentadas pelas pequenas telas dos dispositivos móveis, nos impedem de formar fisicamente as redes de parcerias, Bauman diz que apelamos,

A teoria dos c´odigos ´e capaz de misturar conceitos e t´ecnicas importantes da ´ Algebra abstrata com aplica¸c˜oes imediatas da vida real, o que mostra como a

Os códigos gerados pelo codificador de canal são chamados códigos corretores de erros e podem ser classificados basicamente em códigos de bloco e códigos convolucionais [10]..

1º O Programa de Dupla Diplomação em Curso de Graduação visa permitir a complementaridade dos estudos e a obtenção simultânea de diploma na Universidade Federal de

As maiores taxas de aumento no comprimento da lâmina foliar e perfilhamento do capim-xaraés, comprimento de folíolo, largura de folíolo e altura do estilosantes Mineirão

Clique com o botão direito no ícone da área e selecione a opção Update para atualizar o arquivo de configuração.. Clique com o botão direito no ícone da área e clique