Esquema básico de detecção e correção de erros


O esquema básico de detecção e correção de erros em um sistema de memória é essencial para garantir a integridade dos dados armazenados e manipulados em sistemas de computação, prevenindo e corrigindo erros que podem ocorrer devido a diversas causas, como interferências eletromagnéticas, falhas transitórias, etc.

Componentes

  1. Entrada de dados (M): É o fluxo de dados que entra na memória para ser armazenado.
  2. Função de código (f): Um processo que calcula um código de verificação (K) baseado nos dados de entrada (M). Este código é utilizado posteriormente para verificar a integridade dos dados.
  3. Memória: Onde os dados (M) e o código de verificação (K) são armazenados.
  4. Função de verificação (f): Um processo que recalcula o código de verificação (K’) quando os dados são lidos da memória para comparação com o código original (K).
  5. Comparação: Um módulo que compara o código de verificação recalculado (K’) com o código armazenado (K) para detectar possíveis erros.
  6. Correção: Um módulo que tenta corrigir os erros detectados, se possível.
  7. Saída de dados (M’): Os dados que são recuperados da memória após a verificação e possível correção.
  8. Sinal de erro: Indica se um erro foi detectado e se foi possível corrigi-lo ou não.

Passo a Passo do Funcionamento

1. Armazenamento de dados e código de verificação

  • Os dados de entrada (M) são enviados para a memória.
  • A função de código (f) calcula um código de verificação (K) com base nos dados de entrada (M).
  • Tanto os dados (M) quanto o código de verificação (K) são armazenados na memória.

2. Leitura e verificação dos dados

  • Quando os dados precisam ser recuperados, eles são lidos da memória como M’ e o código de verificação original (K) é também recuperado.
  • A função de verificação (f) recalcula o código de verificação (K’) com base nos dados lidos (M’).

3. Comparação

  • O código de verificação recalculado (K’) é comparado com o código original (K) pela unidade de comparação.
  • Existem três resultados possíveis desta comparação:
    • Nenhum erro detectado: Se K’ é igual a K, significa que não há erro nos dados. Os dados M’ são enviados diretamente para a saída de dados. (Linha azul no diagrama)
    • Erro detectado e corrigível: Se K’ é diferente de K, um erro foi detectado. O módulo de correção tenta corrigir os dados. Se a correção for bem-sucedida, os dados corrigidos são enviados para a saída. (Linha amarela no diagrama)
    • Erro detectado e não corrigível: Se o erro não puder ser corrigido, um sinal de erro é enviado para indicar a falha. (Linha vermelha no diagrama)

4. Correção dos dados

  • Se um erro é detectado, a unidade de correção tenta corrigir os dados com base na diferença entre K e K’.
  • Caso a correção seja bem-sucedida, os dados corrigidos são enviados como saída.
  • Se a correção não for possível, um sinal de erro é gerado.

Resultados possíveis

  • Linha Azul: Nenhum erro foi detectado, os dados lidos da memória (M’) são válidos e são enviados diretamente como saída.
  • Linha Amarela: Um erro foi detectado, mas foi possível corrigi-lo. Os dados corrigidos são enviados como saída.
  • Linha Vermelha: Um erro foi detectado e não foi possível corrigi-lo. Um sinal de erro é gerado para indicar a falha.

Referências


Aula 06 - Código de Correção de Erros