UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DEPARTAMENTO DE CIÊNCIAS CIÊNCIAS EXATAS E E NATURAIS NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO CURSO DE CIÊNCIA DA COMPUTAÇÃO Arquitetura e Organização de Computadores 04 - Memória Principal II Prof. Sílvio Fernandes
Detecção e Correção de Erros Todo sistema de memória baseado em semicondutor está sujeito a erros Tipos: Falhas graves: células são inutilizadas Erros moderados: células não são inutilizadas A maioria dos sistemas de memória principal modernos inclui uma lógica de detecção e correção de erros 2
Detecção e Correção de Erros Um código de correção é caracterizado pelo número de bits incorretos que ele é capaz de detectar e corrigir em uma única palavra O código de correção de erros mais simples é o Código de Hamming Esse código foi projetado por Richard Hamming na Bell Labs 3
Detecção e Correção de Erros Visualização do Código de Hamming Palavras de 4 bits Diagramas de Venn 4
Detecção e Correção de Erros Diagrama de Venn é construído assim: Os 4 bits de dados são colocados nas regiões internas (a) Os bits de paridades são colocados de modo que a quantidade de bits 1 em um círculo seja par (b) Se um dos círculos apresentar um número impar de bits 1, então um erro é detectado (c) e (d) e pode ser corrigido 5
Detecção e Correção de Erros Sinal de erro Saída de dados M Correção Entrada de dados f M K Memória M K f K' Comparação Resultados possíveis: ( azul Nenhum erro é detectado (linha ( amarela Um erro é detectado e é possível corrigi-lo (linha ( vermelha Um erro é detectado, mas é impossível corrigi-lo (linha 6
Projeto de um Código de Correção de Erro ( SEC ) Único Memória M K f K ' Comparação Se todos os bits da Palavra Síndrome forem 0s, não houve erro K + K' = Palavra Síndrome Se a Palavra Síndrome contiver apenas um bit 1, ocorreu erro em um dos bits de teste nenhuma correção é necessária Se a Palavra Síndrome contiver mais de um bit 1, o valor numérico da Palavra Síndrome indica a posição do bit em que ocorreu erro a palavra é corrigida invertendo-se o valor desse bit de dado 7
Projeto de um Código de Correção de Erro ( SEC ) Único Como pode ocorrer erro em qualquer um dos M bits de dados ou dos K bits de teste, deve-se ter: 2 K 1 M K Aumento no tamanho da Palavra com a correção de erros: Bits de dados Bits de teste Aumento (%) 8 4 50,00 16 5 31,25 32 6 18,75 64 7 10,94 128 8 6,25 256 9 3,52 8
Projeto de um Código de Correção de ( SEC ) Erro Único A nova palavra será formada pelos bits de dados e os bits de teste Os bits de teste devem ficar nas posições 2 n 1, 2, 4, 8, 16, etc da direita para esquerda Os outros bits são dos dados propriamente ditos Os bits de teste serão chamados de C1, C2, C4, C8... Os bits de dados são M1, M2, M3, M4, M5, M6, M7, M8... 9
Projeto de um Código de Correção de ( SEC ) Erro Único Exemplo Palavra de 8 bits, M = 8, qual o valor de K? 2 k 1 M + K Se K = 3 2 3 1 = 7 < 8 + 3 Se K = 4 2 4 1 = 15 > 8 + 4 Se K = 5 2 5 1 = 31 > 8 + 5 K = 4 é suficiente! 10
Projeto de um Código de Correção de Erro ( SEC ) Único Posição do bit 10 Posição do bit 2 Bits de Teste Bits de Dados 12 1100 M8 11 1011 M7 10 1010 M6 9 1001 M5 8 1000 C8 7 0111 M4 6 0110 M3 5 0101 M2 4 0100 C4 3 0011 M1 2 0010 C2 1 0001 C1 11
Projeto de um Código de Correção de ( SEC ) Erro Único O cálculo dos bits de teste (C1, C2, C3, C4) : C1 = XOR dos bits cuja posição tenha o bit menos significativo igual a 1 (posições 1, 3, 5, 7, 9, 11 ou M1, M2, M4, M5, M7) C2 = XOR dos bits cuja posição tenha o 2º. bit menos significativo igual a 1 (posições 3, 6, 7, 10, 11 ou M1, M3, M4, M6, M7) 12
Projeto de um Código de Correção de ( SEC ) Erro Único O cálculo dos bits de teste (C1, C2, C3, C4) : C4 = XOR dos bits cuja posição tenha o 3º. bit menos significativo igual a 1 (posições 5, 6, 7, 12 ou M2, M3, M4, M8) C8 = XOR dos bits cuja posição tenha o 4º. bit menos significativo igual a 1 (posições 9, 10, 11, 12 ou M5, M6, M7, M8) 13
Projeto de um Código de Correção de Erro ( SEC ) Único Posição do bit 10 Posição do bit 2 Bits de Teste Bits de Dados 12 1100 M8 11 1011 M7 Cálculo dos Bits de Teste: 10 1010 M6 C1 = M1 + M2 + M4 + M5 + M7 9 8 7 1001 1000 0111 C8 M5 M4 C2 = M1 + M3 + M4 + M6 + M7 C4 = M2 + M3 + M4 + M8 6 0110 M3 C8 = M5 + M6 + M7 + M8 5 0101 M2 4 0100 C4 3 0011 M1 2 0010 C2 1 0001 C1 14
Projeto de um Código de Correção de Erro ( SEC ) Único Exemplo: M8 M7 M6 M5 M4 M3 M2 M1 0 0 1 1 1 0 0 1 Cálculo dos Bits de Teste: C1 = M1 + M2 + M4 + M5 + M7 = 1 + 0 + 1 + 1 + 0 = 1 C2 = M1 + M3 + M4 + M6 + M7 = 1 + 0 + 1 + 1 + 0 = 1 C4 = M2 + M3 + M4 + M8 = 0 + 0 + 1 + 0 = 1 C8 = M5 + M6 + M7 + M8 = 1 + 1 + 0 + 0 = 0 15
Projeto de um Código de Correção de Erro ( SEC ) Único Supondo-se um erro em M3, M8 M7 M6 M5 M4 M3 M2 M1 0 0 1 1 1 1 0 1 Cálculo dos Bits de Teste: C1 = M1 + M2 + M4 + M5 + M7 = 1 + 0 + 1 + 1 + 0 = 1 C2 = M1 + M3 + M4 + M6 + M7 = 1 + 1 + 1 + 1 + 0 = 0 C4 = M2 + M3 + M4 + M8 = 0 + 1 + 1 + 0 = 0 C8 = M5 + M6 + M7 + M8 = 1 + 1 + 0 + 0 = 0 16
Projeto de um Código de Correção de Erro Cálculo da Palavra Síndrome: ( SEC ) Único + C8 C4 C2 C1 0 1 1 1 0 0 0 1 0 1 1 0 6 10 Conclusão: há um erro na 6 a posição (bit M3)! 12 11 10 9 8 7 6 5 4 3 M8 M7 M6 M5 C8 M4 M3 M2 C4 M1 0 0 1 1 0 1 1 0 1 1 2 C2 1 1 C1 1 17
Projeto de um Código de Correção de ( SEC ) Erro Único Forma alternativa C1 C2 C4 C8 = XOR entre os valores em binário das posições dos dados (M1, M2,..., M8) iguais a 1 12 11 10 9 8 7 6 5 4 3 M8 M7 M6 M5 C8 M4 M3 M2 C4 M1 0 0 1 1? 1 0 0? 1 2 C2? 1 C1? + As posições são: 3, 7, 9 e 10 que correspondem a: 3: 0011 7: 0111 9: 1001 10: 1010 0111 = C8 C4 C2 C1 18
Projeto de um Código de Correção de ( SEC ) Erro Único Forma alternativa No exemplo o dado 00111001 será codificado como 0011C8100C41C2C1 = 001111001110 Posição do bit 10 12 11 10 9 8 7 Posição do bit 2 1100 1011 1010 1001 1000 0111 Bits de Teste C8 Bits de Dados M8 M7 M6 M5 M4 6 0110 M3 5 0101 M2 4 0100 C4 3 0011 M1 2 0010 C2 1 0001 C1 19
Perguntas de Revisão 1. Quais são as principais propriedades das memórias semicondutoras? 2. Qual é a diferença entre DRAM e SRAM em termos de aplicação? 3. O que é o bit de paridade? 4. Como é interpretada a palavra síndrome para o código de Hamming? 20
Referências STALLINGS, W. Arquitetura e organização de computadores: projeto para o desempenho. 8. ed. Prentice Hall, 2009. DELGADO, J.; RIBEIRO, C. Arquitetura de Computadores. 2 ed. LTC, 2009. PATTERSON, D. A. ; HENNESSY, J.L. Organização e projeto de computadores a interface hardware software. 3. ed. Editora Campus, 2005. 21