테크노아
> 기획&벤치 > 강좌
패리티 메모리와 ECC
테크노아  |  webmaster@technoa.co.kr
폰트키우기 폰트줄이기 프린트하기 메일보내기 신고하기
승인 2002.07.17  12:10:22
트위터 페이스북 미투데이 요즘 네이버 구글 msn

패리티 메모리와 ECC


삼성전자의 PC133 ECC SDRAM

패리티 메모리

PC가 출시되었던 초기에는 메모리의 오류를 막기 위해서 모든 컴퓨터에 패리티 방식이 사용되었다. 패리티라는 것은 8bit당 1bit의 패리티 비트를 두어서 데이터의 전달과정중에 오류가 생긴 것을 검출하는 방식을 지칭한다. 즉, 시스템에서 나타날 수 있는 오류를 방지하고자 패리티 메모리를 포함시켰고, 이것은 그 역할을 충분히 해냈다.

그런데, 1994년부터 분위기가 조금씩 달라졌다. 메모리 기술의 발달로 메모리의 오류 발생 확률이 점점 적어지자 일부 PC 제조사에서 패리티가 포함되지 않은 메모리를 탑재한 컴퓨터를 내놓기 시작한 것이다. 물론 오류 발생 확률은 일반 사용자들이 신경쓸 필요가 없을 정도로 적었으며, 패리티를 제거함으로써 패리티 메모리에 필요한 약 10~15%의 추가 메모리 비용 부담을 줄일 수 있어서 제조사 측에서는 즐거운 일이었다. 하지만, 대단히 중요한 데이터를 다루는 사용자들에게는 역시 패리티는 필요한 것이었으며 그러한 사용자는 별도로 요청을 해야만 했다.

이러한 추세를 급격히 가속시킨 것은 일부 대형 PC 제조사들이 패리티가 없는(넌패리티 : non-parity) 메모리를 탑재한 채로 PC를 출하한 것이다. 대형 PC 제조사들이 이러한 정책을 펴나가자 너도나도 이 정책을 따랐으며, 그 결과 넌 패리티 메모리가 거의 표준으로 굳어진다. 그리고 이것을 완전히 굳어지게 한 것이 인텔의 430FX 칩셋의 출시였다.

인텔 430FX 칩셋은 아예 패리티라는 것을 지원하지 않았다. 칩셋 레벨에서의 패리티 지원은 사실 원가상승에는 그다지 기여하지 않는다. 있으나 없으나 가격은 어차피 비슷하며, 회로도 복잡하지 않기에 만들기도 만만했다. 하지만 430FX는 패리티를 외면해버렸고, 인텔이 그러한 정책을 펼치자 다들 그냥 그러려니 하고 이를 따라갔다. 결국 일반 사용자용 메모리에서는 패리티가 사라졌고, 이것은 ECC까지 그대로 이어졌다.

하지만, 웍스테이션이나 서버, 그리고 대단히 중요한 작업을 하는 시스템들은 가격보다는 시스템의 안정성과 신뢰도가 절대적으로 우선되기 때문에 패리티 메모리나 ECC 메모리를 요구한다.

패리티 메모리와 ECC 메모리의 원리

SDRAM이 나오기 전까지, EDO 메모리나 FPM 등이 사용한 에러 정정방식은 패리티(parity) 방식이었다. 이것과 지금의 ECC를 혼동하는 사용자들도 많다. 우선 패리티가 무엇인지부터 정리해보자.

패리티의 원리는 다음과 같다.

PC에서 사용되는 것은 홀수 패리티(odd parity)이다. 홀수 패리티라는 것은 전송되는 데이터들의 합이 홀수가 되도록 패리티 비트가 정해진다.(보다 정확하게는, 전체의 XOR 값이 1이 되어야 한다고 정의된다. 그러나 이해를 편하게 하기 위해서 전체 합을 홀수가 되어야 한다는 것으로 표현하였다.) 예를 들어서 다음과 같은 데이터가 전송된다고 하자.

전송되는 8bit 내에 1이 다섯개 있어서 전체의 합은 홀수가 된다. 이를 홀수로 유지시키기 위해서는 0이 더해져야만 하며, 그래서 패리티 비트가 0이 된다. 한편, 데이터 안에 1이 짝수개가 있다면 패리티 비트가 1이 되어서 전체의 합을 홀수로 유지시킨다.

데이터를 수신하는 측에서는 수신된 데이터와 패리티 비트를 합해서 그 결과가 홀수가 나오는지, 짝수가 나오는지를 살펴보고, 홀수가 나온다면 무사히 지나가고 짝수가 나온다면 사용자에게 에러가 발생했다는 것을 통보한다.

패리티를 사용하면 시스템의 어디서 문제가 발생했는지를 검출할 수 있다. 데이터가 전달되는 부분마다 패리티 검사를 수행하기 때문에 만약 메모리 컨트롤러에서 문제가 생겼는지, 메모리 자체에서 문제가 생겼는지 등이 검출되어서 시스템을 수리하는 과정도 보다 용이해진다.

물론 단점도 있다. 만약 2개의 bit에서 동시에 문제가 발생했다면, 데이터에 문제가 있다고 할지라도 데이터의 합계의 홀/짝은 그대로 유지된다. 즉, 이러한 경우에는 데이터 오류가 검출되지 않는다. 물론, 메모리 자체의 오류도 적게 일어나거니와, 전체 메모리 오류 중에서 97% 이상이 단일 bit에서 발생하는 문제이기 때문에 패리티가 잡아낼 수 없는 문제점은 거의 없다고 보아도 좋다. 그러나 확률적으로 문제가 있는 데이터가 그대로 전달되는 상황이 발생하기도 한다.

이러한 문제를 해결한 것이 ECC(Error Correcting Code)이다. ECC는 단지 에러를 검출하기만 하는 패리티에서 대폭 향상되어서 단일 bit의 에러에 대해서는 이를 검출하여 직접 교정할 수 있는 능력을 가지고 있다. 즉, 패리티에서는 데이터에 오류가 있을 경우 이의 재전송을 요구하거나 동작을 중지하였던 것에 반해서 절대 다수를 차지하는 단일 bit의 에러에서는 시스템의 정지 없이 바로 교정하면서 연속적인 동작이 가능하다.

ECC의 종류에는 여러가지가 있는데, PC용 메모리에 적용되어 있는 ECC는 '단일 bit 에러 교정, 2bit 에러 검출(SEC-DED : Single-bit Error Correcting, Double-bit Error Detecting)' 방식이다. 그래서 하나의 bit에서 문제가 발생했다면 이를 직접 교정하고, 2개의 bit에서 문제가 발생한다고 해도 이를 검출하여 사용자에게 통보할 수 있다.

ECC의 구현원리는 다음과 같다.

먼저, 데이터를 기록할 때, 메모리 컨트롤러는 체크 비트를 만들어내어 이를 같이 기록한다.

이때 만들어진 체크 비트는 메모리에 같이 저장되었다가 이를 메모리 컨트롤러가 읽어낼 때 같이 읽혀진다.

이 과정에서, 메모리 컨트롤러는 저장되어 있는 데이터와 체크 비트를 비교하면서 서로 맞는 것인가를 확인한다. 이 때, 데이터와 체크 비트가 서로 맞는 것이라면 그대로 데이터가 출력되고, 만약, 데이터 내에 1bit의 오류가 발생했다면 이를 자동으로 정정한다. 2bit 이상의 오류가 발견될 경우 이를 사용자에게 알리고 그 이상의 시스템 운영을 정지시킨다.

그래서 ECC 메모리는 패리티에 비해서 높은 데이터 신뢰도를 구현하면서 동시에 단일 bit에 대해서는 직접적으로 정정을 수행함으로 인해 성능저하를 줄일 수 있게 되었다.

물론, ECC 메모리 컨트롤러 내에서 체크 비트를 연산하고, 이를 사용하여 검사하는 과정에서 성능의 하락이 일어난다. 하지만 이것은 수 % 내외이므로 큰 폭의 성능하락은 일어나지 않으며, 안정성의 극대화라는 측면에서 본다면 실보다는 득이 훨씬 크다.

SIMM에서는 패리티이고, DIMM에서는 ECC가 사용된다는데..


이제는 과거의 유물이 되어버린 72pin SIMM

i430TX 칩셋까지 사용되었던 72pin SIMM과 현재 사용되고 있는 168pin SDRAM DIMM 및 184pin DDR SDRAM DIMM의 근본적인 차이점은 단면(SIMM - Single Inline Memory Module), 양면(DIMM - Double~) 이라는 차이 외에도, 메모리 인터페이스의 폭에 있다. 72핀 메모리는 32bit의 메모리 버스를 가졌고, DIMM은 64bit의 메모리 버스를 가지고 있었다.(펜티엄에 72pin 메모리를 사용하기 위해서 2개의 메모리를 꽂는 것은 바로 이 버스 폭을 맞추기 위함이었다. 펜티엄 프로세서는 64bit의 메모리버스를 갖고 있기 때문이다. 즉, 당시의 72pin 메모리는 듀얼채널로 동작했다는 놀라운 사실!!!)

패리티의 경우 8bit당 1bit의 패리티 비트를 필요로 한다. 버스폭이 넓어진다면 이 역시 16bit에 2bit, 64bit에 8bit 하는 식으로 커지면 된다. 그런데, ECC는 연산 방법이 좀 복잡해서, 32bit의 메모리가 한번에 전송된다면 여기에 7bit의 체크 비트를 필요로 한다. 만약, 32bit의 버스폭을 가지는 메모리에서 32MB의 메모리 용량을 구현한다면 여기에 7MB의 메모리가 추가로 장착되어야만 ECC가 구현된다는 것이다. 한편, 64bit가 한번에 전송된다면 8bit의 체크 비트를 필요로 한다. 이것은 결국 패리티와 같은 수준의 추가 메모리만을 요구한다는 것이다.

이러한 이유 때문에, 32bit의 버스폭을 갖는 72핀 메모리에서는 패리티가 사용되었지만, 64bit의 버스폭을 갖는 168핀 DIMM 부터는 패리티 대신에 ECC가 사용되고 있는 것이다.

테크노아의 다른기사 보기  
폰트키우기 폰트줄이기 프린트하기 메일보내기 신고하기
트위터 페이스북 미투데이 요즘 네이버 구글 msn 뒤로가기 위로가기
이 기사에 대한 댓글 이야기 (0)
자동등록방지용 코드를 입력하세요!   
확인
- 200자까지 쓰실 수 있습니다. (현재 0 byte / 최대 400byte)
- 욕설등 인신공격성 글은 삭제 합니다. [운영원칙]
이 기사에 대한 댓글 이야기 (0)
e피플
[e피플] 나이가 대수? 공조냉동기계기능사 필기시험 100점 맞은 NCS교육생
[e피플] 나이가 대수? 공조냉동기계기능사 필기시험 100점 맞은 NCS교육생
나이가 들면 들수록 공부하기가 어렵다는 말이 있다. 더군다나 실업인 상태에서 공부하는 것이라면 부담이 더 클 수 밖에 없다.하지만 이를 비웃듯이 극복하고, 올해 2월 공조냉동기능사...

제호 : 테크노아  |  발행인 : 김필규  |  편집인 : 김필규  |  청소년보호책임자 : 박상규
서울지사 : 서울특별시 구로구 디지털로32가길 18, 7F | 제보 : it@technoa.co.kr
발행소 : 전라북도 전주시 완산구 전룡6길 6 3F | 등록번호 : 전라북도 아00057
등록일자 : 2008년 1월 14일  |  대표전화 : 070-8755-6291  |  FAX : 02-6280-9562
Copyright © 1999-2017 테크노아. All rights reserved. mail to technoa@technoa.co.kr