Por melhor que seja a qualidade, todos os tipos de memória são passíveis de erros, que podem ser causados por inúmeros fatores, desde variações na tensão da tomada que não são completamente absorvidos pela fonte de alimentação, estática, diversos tipos de interferências eletromagnéticas e, por incrível que possa parecer, até mesmo raios cósmicos (que num PC doméstico causam um soft-error a cada poucos meses), como você pode ver neste estudo da IBM: http://www-1.ibm.com/servers/eserver/pseries/campaigns/chipkill.pdf
Ao contrário dos “hard-errors”, que são danos físicos nos módulos de memória, causados por eletricidade estática ou outros tipos de descargas, os soft-erros são erros momentâneos, onde um ou alguns poucos bits são alterados, sem que os chips de memória sejam danificados.
Eles podem causar os mais diversos efeitos colaterais, como travamentos de programas, pequenos danos em arquivos salvos e assim por diante. Num desktop eles não costumam ser catastróficos, mas podem causar efeitos sérios em sistemas que manipulam informações sensíveis, como no caso dos bancos, por exemplo, onde um soft-error poderia mudar o saldo da sua conta bancária.
Para aumentar o grau de confiabilidade dos sistemas, foram criados métodos de diagnóstico e correção de erros. Tudo começou com os sistemas de paridade, usados em muitos módulos de 30 e 72 vias.
A paridade é um método mais antigo, que somente é capaz de identificar alterações nos dados depositados nas memórias, sem condições de fazer qualquer tipo de correção. A paridade consiste na adição de mais um bit para cada byte de memória, que passa a ter 9 bits, tendo o último a função de diagnosticar alterações nos dados.
A operação de checagem dos dados na paridade é bem simples: são contados o número de bits “1” de cada byte. Se o número for par, o bit de paridade assume o valor “1” e caso seja ímpar, o 9º bit assume o valor “0”. Quando requisitados pelo processador, os dados são checados pelo circuito de paridade que verifica se o número de bits “1” corresponde ao depositado no 9º bit.
Caso seja constatada alteração nos dados, ele envia ao processador uma mensagem de erro. Claro que esse método não é 100% eficaz, pois não é capaz de detectar a alteração de um número de bits que mantenha a paridade. Caso, por exemplo, dois bits zero retornassem alterados para bits um, o circuito de paridade não notaria a alteração nos dados. Felizmente, a possibilidade da alteração de dois ou mais bits ao mesmo tempo é remota.
Exemplo de Byte de dados
|
Número de Bits “1” no Byte
|
Bit de paridade
|
00000000
|
0
|
1
|
10110011
|
5
|
0
|
00100100
|
2
|
1
|
11111111
|
8
|
1
|
O uso da paridade não torna o computador mais lento, pois os circuitos responsáveis pela checagem dos dados são independentes do restante do sistema. Seu único efeito colateral é o encarecimento dos módulos de memória, que em vez de 8 ou 16 chips, passam a ter 9 ou 18, tornando-se pelo menos 12% mais caros.
Além do aumento no custo, o grande problema da paridade é que ela apenas permite identificar erros, sem corrigi-los. Isso acaba fazendo com que a utilidade prática não seja tão grande. Conforme os módulos de memória foram tornando-se mais confiáveis, os módulos com paridade entraram em desuso.
Em seguida temos o ECC, o sistema atual, que permite não apenas identificar, mas também corrigir erros simples. O ECC acaba sendo a solução perfeita, pois permite que um servidor continue funcionando, sem interrupções e de forma confiável, mesmo com um grande número de soft-errors, causados por fatores diversos.
O número de bits necessários para implementar o ECC decresce conforme aumenta a largura do barramento usado pelo módulo. Em um módulo de 32 bits (como os antigos módulos de 72 vias), são necessários 7 bits adicionais para cada 32 bits de memória, mas nos módulos DIMM de 64 bits atuais, são necessários apenas 8 bits para cada 64 bits de memória, ou seja, o mesmo que seria necessário para usar paridade.
Os módulos DIMM com ECC são fáceis de identificar, pois eles possuem 5, 9 ou 18 chips, em vez de 4, 8 ou 16. O uso de ECC é mais comum em módulos registered, que são específicos para servidores, mas também é possível encontrar alguns módulos unbuffered com ECC:
Módulo com ECC (note que o módulo possui 9 chips)
Continuando, temos os módulos registered DIMM, que são também fonte de dúvidas frequentes.
Os módulos de memória que usamos nos PCs domésticos são chamados de unbuffered. Eles usam um layout simples e eficiente, onde o controlador de memória tem acesso direto aos chips de memória, garantindo tempos de latência mais baixos.
Essa simplicidade tem um custo, que é uma limitação no número de chips por módulo e também no número de módulos que podem ser instalados na mesma placa-mãe. Salvo raras exceções, os módulos unbuffered possuem no máximo 16 chips de memória e é possível projetar placas-mãe com suporte para até 4 módulos.
Isso não é um problema nos desktops, onde normalmente não precisamos de mais do que 2 ou 4 GB de RAM, mas é uma grave limitação nos servidores, onde é comum o uso de mais memória.
Os módulos registered incluem chips adicionais (registradores) que funcionam como uma interface adicional entre o controlador e os chips. Eles permitem que o controlador suporte um número maior de módulos de memória e também que sejam usados módulos com mais chips, permitindo a instalação de quantidades muito maiores de memória. Muitas placas para servidores incluem 8 slots de memória, e existem módulos registered com 32 ou até mesmo 48 chips (sem contar os chips adicionais no caso dos módulos com ECC). É fácil reconhecer os módulos registered, devido à presença dos chips adicionais:
A desvantagem é que o uso dos registradores retarda a transmissão dos sinais, aumentando a latência e consequentemente reduzindo o desempenho dos módulos. A maioria das placas com suporte a módulos registered não suporta módulos unbuffered, de forma que seu uso não é uma opção. Também não é possível usar módulos registered, muito menos misturá-los com módulos unbuffered nas placas para desktop que não os suportam.
O suporte a módulos registered está disponível apenas em placas-mãe destinadas a servidores e workstations, onde a possibilidade de usar mais memória supera as desvantagens. É possível encontrar tanto módulos de memória SDRAM quanto módulos DDR e DDR2 em versão registered. Por utilizarem componentes adicionais e serem produzidos em pequena quantidade, eles normalmente custam o dobro do preço dos módulos unbuffered, de forma que você só deve considerar seu uso quando realmente necessário.
Deixe seu comentário