quinta-feira, 27 de setembro de 2012

ECC e Paridade

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 factores, que vão desde interferências momentâneas a defeitos físicos nos módulos de memória. Um dado adulterado pode causar os mais diversos efeitos colaterais. Para aumentar o grau de confiabilidade dos sistemas, foram criados métodos de diagnóstico e correcção de erros. Talvez, num computador doméstico, um sistema de correcção de erros não seja tão importante, pois um erro na memória no máximo causaria o bloqueamento da máquina. Em aplicações críticas porém, como num banco, qualquer erro de processamento pode causar grandes prejuízos.

Actualmente, os métodos usados para a detecção de erros nas memórias são a Paridade e o ECC (“Error Correcting Code” ou “código de correcção de erros”), que se baseiam em técnicas totalmente diferentes: 

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 correcçã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 verificação 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 um valor “1” e caso seja ímpar, o 9º bit assume um valor “0”. Quando requisitados pelo processador, os dados são verificados 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 este 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.
O uso da paridade não torna o computador mais lento, pois os circuitos responsáveis pela
verificação dos dados são independentes do restante do sistema. O seu único efeito colateral, é o encarecimento das memórias, que ao invés de 8 bits por byte, passam a ter 9, tornando-se cerca de 12% mais caras.

Antigamente quase não se fabricavam memórias sem paridade. As memórias EDO e SDRAM actuais porém, apresentam um bom nível de confiabilidade, o que torna o uso da paridade dispensável.

De facto, poucos fabricantes ainda produzem memórias com o 9º bit.

Para sistemas destinados a operações críticas, foi desenvolvido o ECC, um método de diagnóstico bem mais eficiente, por ser capaz de além de identificar erros nos dados, corrigi-los através de algoritmos especiais. Numa memória com ECC encontramos mais 1, 2 ou até 3 bits para cada byte de memória. Quanto maior a quantidade de bits destinados ao ECC, mais complexos serão os códigos armazenados, e maior será a possibilidade de um eventual erro ser corrigido.

Apesar de ainda não ser muito usado em memórias RAM, justamente devido à boa confiabilidade das memórias actuais, o ECC é item obrigatório em discos rígidos e CD-ROMs, pois neles o corrompimento de dados é muito comum.
in Manual de Hardware Completo
de Carlos E Marimoto

Sem comentários: