blank blank

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 fatores, que vão desde interferências momentâneas à 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 correção de erros. Talvez, num micro doméstico, um sistema de correção de erros não seja tão importante, pois um erro na memória no
máximo causaria o travamento da máquina. Em aplicações críticas porém, como num banco, qualquer erro de processamento pode causar grandes prejuízos.

Atualmente, 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 correçã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 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 um valor “1” e caso seja impar, o 9º bit assume um 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 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.

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 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 atuais porém, apresentam um bom nível de confiabilidade, o que torna o uso da paridade dispensável. De fato, 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 atuais, o ECC é item obrigatório em discos rígidos e CD-ROMs, pois neles o corrompimento de dados é muito comum.

Sobre o Autor

Redes Sociais:

Deixe seu comentário