arquitetura e organização de computadores - ufersa.edu.br · esse código foi projetado por...

21
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

Upload: vonhan

Post on 04-Nov-2018

212 views

Category:

Documents


0 download

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