arquitetura e organização de computadores - ufersa.edu.br · esse código foi projetado por...
TRANSCRIPT
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIA DA COMPUTAÇÃO
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS
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
f
Correção
Comparação Memória
Detecção e Correção de Erros
Sinal de erro
Saída de dados
Entrada de dados
f
M
M
K' M
K K
Resultados possíveis: Nenhum erro é detectado (linha azul) Um erro é detectado e é possível corrigi-lo (linha amarela) Um erro é detectado, mas é impossível corrigi-lo (linha vermelha)6
Projeto de um Código de Correção de Erro Único (SEC)
f
Comparação Memória
K ' M
K
K + K' = Palavra Síndrome
Se todos os bits da Palavra Síndrome forem 0s, não houve erro
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
Aumento (%) Bits de teste Bits de dados
Projeto de um Código de Correção de Erro Único (SEC)
Como pode ocorrer erro em qualquer um dos M bits de dados ou dos K bits de teste, deve-se ter:
8
16
32
64
128
256
4
5
6
7
8
9
50,00
31,25
18,75
10,94
6,25
3,52
Aumento no tamanho da Palavra com a correção de erros:
8
KMK 12
Projeto de um Código de Correção de Erro Único (SEC)
A nova palavra será formada pelos bits de dados e os bits de teste
Os bits de teste devem ficar nas posições 2n
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 Erro Único (SEC)
Exemplo
Palavra de 8 bits, M = 8, qual o valor de K?
2k – 1 ≥ M + K
Se K = 3
23 – 1 = 7 < 8 + 3
Se K = 4
24 – 1 = 15 > 8 + 4
Se K = 5
25 – 1 = 31 > 8 + 5
K = 4 é suficiente ! 10
Posição do bit10
Projeto de um Código de Correção de Erro Único (SEC)
12
11
10
9
8
7
6
5
4
3
2
1
Posição do bit2
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
Bits de Teste
C8
C4
C2
C1
Bits de Dados
M8
M7
M6
M5
M4
M3
M2
M1
11
Projeto de um Código de Correção de Erro Único (SEC)
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 Erro Único (SEC)
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
Posição do bit10
Projeto de um Código de Correção de Erro Único (SEC)
12
11
10
9
8
7
6
5
4
3
2
1
Posição do bit2
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
Bits de Teste
C8
C4
C2
C1
Bits de Dados
M8
M7
M6
M5
M4
M3
M2
M1
C1 = M1 + M2 + M4 + M5 + M7
C2 = M1 + M3 + M4 + M6 + M7
C4 = M2 + M3 + M4 + M8
C8 = M5 + M6 + M7 + M8
Cálculo dos Bits de Teste:
14
Projeto de um Código de Correção de Erro Único (SEC)
M8 M7 M6 M5 M4 M3 M2 M1
0 0 1 1 1 0 0 1
Exemplo:
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 Único (SEC)
M8 M7 M6 M5 M4 M3 M2 M1
0 0 1 1 1 1 0 1
Supondo-se um erro em M3,
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 Único (SEC)
Cálculo da Palavra Síndrome:
C8 C4 C2 C1
0 1 1 1
0 0 0 1
0 1 1 0
+
610
M8 M7 M6 M5 M4 M3 M2 M1
0 0 1 1 1 1 0 1
C2
1
C1
1
C4
1
C8
0
1 2 3 4 5 6 7 8 9 10 11 12
Conclusão: há um erro na 6a posição (bit M3)!
17
Projeto de um Código de Correção de Erro Único (SEC)
Forma alternativa
C1 C2 C4 C8 = XOR entre os valores em binário das posições dos dados (M1, M2, ..., M8) iguais a 1
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
M8 M7 M6 M5 M4 M3 M2 M1
0 0 1 1 1 0 0 1
C2
?
C1
?
C4
?
C8
?
1 2 3 4 5 6 7 8 9 10 11 12
+
Projeto de um Código de Correção de Erro Único (SEC)
Forma alternativa
No exemplo o dado 00111001 será codificado como 0011C8100C41C2C1 =
001111001110
19
Posição do bit10
12
11
10
9
8
7
6
5
4
3
2
1
Posição do bit2
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
Bits de Teste
C8
C4
C2
C1
Bits de Dados
M8
M7
M6
M5
M4
M3
M2
M1
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