데이터를 전송하는데 있어 통로(BUS)가 항상 안전한 것은 아닙니다. 전기적인 문제, 신호 간섭 그로 인한 노이즈 발생, 전파 방해 등 항상 위험에 노출되어 있습니다. 이는 라디오나 TV를 켤 때 난시청 지역, 또는 전파를 방해하는 여러가지 물건들로 인해 수신이 제대로 것과 동일합니다. 전송 중 데이터가 변질되면 수신측은 라디오에서 잡음이 나오거나 TV 화면이 깨지는 것과 같은 결과물을 받습니다. 그러나 TV나 라디오를 시청하는 사람과 달리 컴퓨터는 데이터를 검증하지 않은채 수행하기 때문에 이 데이터가 잘못 전달되면 큰 오류를 범합니다. 이런 오류를 막고자 데이터가 올바르게 전달되었는지 확인하기 위해 특별한 코드를 같이 전송합니다.
주 기억 장치인 메모리 중에 ECC가 붙어 있는 것을 확인하실 수 있습니다. 이것은 전달 받은 데이터 중 에러가 발생한 코드가 있는지 검출하여 정정하는 기능을 가진 제품이라는 뜻 입니다. 에러를 검출하는 방법에는 여러가지가 있으며 그 중 가장 기본적인 '패리티 검사'와 진보된 'CRC(Cyclic Redundancy Checking)'를 널리 사용합니다. 간혹 압축 파일을 풀거나 멀티미디어 파일을 재생하려할 때 CRC 에러가 났다는 메세지를 보여주는데 바로 전송 받은 파일내에 오류난 코드가 있다는 뜻 입니다. 이 때는 해당 파일을 다시 구하거나 시스템을 정비해 보아야 합니다.
<기본적인 메모리 칩 갯 수가 짝수입니다.>
<ECC 기능이 있는 메모리로 칩 갯 수가 홀 수 입니다. 추가된 칩이 바로 ECC 역할을 합니다>
패리티 검사 (Parity Check)
에러를 검출하는 가장 기본적인 방법인 패리티 검사는 전송하고자하는 데이터외에 '패리티 코드'를 같이 보냅니다. 패리티 코드는 홀수 패리티냐 짝수 패리티냐, 가로로 하느냐 세로로 하느냐에 따라 다르게 부여 됩니다. 홀수 패리티는 '1' 갯 수가 홀수가 되게끔 패리티 코드를 맞추고, 짝수 패리티는 반대로 짝수가 되도록 조정합니다.
코드a |
코드b |
코드c |
패리티 코드 |
송신 ---> 수신
홀수 패리티 코드 |
코드a |
코드b |
코드c |
패리티 코드 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 | |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 | |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 | |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
송신측에서 1이 홀수가 되도록 패리티 코드를 부여한 뒤 전송을 하면 수선측은 전송 받은 코드에 오류가 없는지 1갯 수로 검사합니다. 표 두 번째와 네 번째 줄을 살펴보면 1갯 수가 짝수이므로 오류가 발생한 사실을 알 수 있습니다. 그러나 패리티 검사는 정확히 어떤 코드(빨간색 숫자)에서 오류가 발생했는지 알아내기 어렵고, 스스로 오류가 발생한 코드를 정정하지 못한다는 단점이 있습니다. 때문에 오류난 부분의 모든 데이터를 다시 보내달라고 송신측에 신호를 보내거나 오류 검출 및 정정까지 할 수 있는 '해밍 코드(Hamming Code)'와 같은 더욱 진보된 방법을 사용합니다.
데이터를 전송할 때마다 오류를 검출하여 정정하는 과정을 거치기 때문에 그 만큼 처리 속도가 늦어진다는 단점이 있습니다. ECC 메모리가 일반 메모리에 비해 성능이 약간 처지는 이유이기도 합니다.
'IT' 카테고리의 다른 글
인텔 ® 코어™ i7 프로세서 익스트림 에디션 (0) | 2010.01.03 |
---|---|
동작 속도와 데이터 용량 단위 (0) | 2010.01.03 |
인텔 I975x 칩셋 (0) | 2010.01.02 |
ROM (Read Only Memory)-읽기 전용 기억 장치 (0) | 2010.01.02 |
RAMDAC이란? (0) | 2010.01.02 |