본문 바로가기
전공수업/컴퓨터 구조

[컴퓨터 구조] 내부 기억장치 #2 - 오류 정정

by JooRi 2023. 11. 28.
728x90
SMALL

* 참고 교재

컴퓨터 시스템 구조론 - 예스24 (yes24.com)

 

컴퓨터 시스템 구조론 - 예스24

컴퓨터 시스템 구조론

www.yes24.com

 

* 반도체 기억장치 시스템의 오류

반도체 기억장치 시스템의 오류는 하드 장애(Hard Failure)와 소프트 오류(Soft Error)로 분류될 수 있다.

 

하드 장애

- 영구적인 물리적 결함으로서, 기억 소자가 안정되게 데이터를 저장할 수 없다.

- 0 또는 1로 고정되어 있거나 0과 1 사이의 값을 불규칙하게 가진다.

- 원인: 열악한 환경에서의 남용, 제조상의 결함

 

소프트 오류

- 기억장치의 내용이 일시적으로 변경되는 가벼운 오류이다.

- 원인: 전원공급장치의 결함이나 알파 입자

 

* 오류 검출 및 정정 시스템

오류 정정 코드(f)를 이용하여 오류를 검출하고 정정한다.

오류 정정 코드의 기능

저장될 데이터가 M비트 단어이고 생성되는 코드가 K비트이면 실제로 저장되는 단어의 크기는 M+K비트이다.

인출된 코드 비트들은 M개의 데이터 비트들로부터 생성된 새로운 K개의 코드 비트들과 비교된다.

 

비교된 결과로는 아래 3가지가 있다.

1. 오류 미검출 인출된 데이터 비트들을 그대로 내보낸다.

2. 오류 검출, 정정 가능 - 데이터 비트들과 오류 정정 비트들이 정정기로 되돌아오며, 정정된 M비트들이 보내진다.

3. 오류 검출, 정정 불가능 - 오류 신호를 보낸다.

 

 

해밍 코드(Hamming Code)

해밍 코드는 Bell 연구소의 Richard Hamming에 의해 고안된 가장 간단한 오류 정정 코드이다.

해밍 코드 - 4비트 단어(M = 4)

위 그림은 4비트 단어(M = 4)에 대해 해밍 코드가 사용된 경우를 보여주는 벤 다이어그램이다.

먼저 내부 구획에 4개의 데이터 비트를 배정한 다음, 원 안의 1의 개수가 짝수가 되도록 나머지 구획을 채운다.

이때 나머지 영역에 채워진 값을 패리티비트라고 한다.

만약 데이터 비트 중 오류가 발생하면 그 구획의 비트를 변경하여 오류를 정정할 수 있다.

 

 

신드롬 단어(Syndrome Word)

오류 검출 및 정정 시스템에서 2개의 K비트 값을 입력으로 받아들이고 둘을 비교한다.

비트들 간의 비교는 두 입력들 간에 XOR를 수행하면 되는데, 이때의 결과값을 신드롬 단어라고 부른다.

즉, 신드롬 단어는 비교 논리의 입력으로 2개의 K비트 값을 XOR 한 결과값이다.

 

신드롬의 각 비트는 두 입력들의 같은 위치에 있는 비트들이 일치하는지 여부에 따라 0 또는 1이 된다.

따라서 신드롬 단어는 폭이 K비트가 되며 0 ~ 2^K - 1 사이의 값을 가진다.

신드롬 단어가 0이면 오류가 검출되지 않은 것이고, 오류가 있는 경우 2^K - 1이 오류 비트의 위치를 가리킨다.

 

오류는 M개의 데이터 비트와 K개의 검사 비트 중 어느 것에도 발생 가능하기 때문에 아래 식을 만족해야 한다.

아래 식은 M개의 데이터 비트들을 가진 단어에 1개의 오류 발생 시, 그것을 정정하기 위해 필요한 코드의 길이이다.

예를 들어 8개의 데이터 비트(M = 8)를 가진 단어의 경우,

K = 4일 때부터  식을 만족하므로 4개의 검사 비트들이 필요하다.

 

 

8비트 데이터 단어에 대한 해밍코드

데이터 비트와 검사 비트의 각 위치는 1~12번까지 지정된다.

이 위치 번호들 중 2의 멱수(2^n)가 되는 위치에 검사비트가 놓이며, XOR 연산을 가리킨다.

데이터 비트와 검사 비트의 배치도
검사 비트 계산 과정

각 검사 비트는 그 비트의 위치 번호와 같은 위치의 값이 1인 위치에 있는 데이터 비트에 대해서 동작한다.

 

 

ex) 8비트 데이터 00111001가 기억장치에서 00111101로 변경됐을 때 신드롬 단어를 구하고 오류를 정정하라.

 

 

SEC-DED(Single-Error-Correcting, Double-Error-Detection: 단일 오류 정정, 이중 오류 검출)

지금까지 설명한 코드는 SEC(단일 오류 정정) 코드이다.

일반적으로 반도체 기억장치는 2개의 오류가 동시에 발생할 경우에도 검출이 가능한 SEC-DED 코드를 갖추고 있다.

SEC-DED 코드 동작 과정

 

 

성결대학교 정보통신공학과 컴퓨터구조 강의(2023)
Wiilliam Stallings, 「컴퓨터시스템구조론(10판)」

본 게시물은 위 강의 및 교재를 기반으로 정리한 글입니다.
728x90
LIST

댓글