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
- Entrada de dados (M): É o fluxo de dados que entra na memória para ser armazenado.
- 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.
- Memória: Onde os dados (M) e o código de verificação (K) são armazenados.
- 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).
- 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.
- Correção: Um módulo que tenta corrigir os erros detectados, se possível.
- Saída de dados (M’): Os dados que são recuperados da memória após a verificação e possível correção.
- 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.