본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Error Correction Code Memory; ECC 메모리, 오류 정정 메모리
데이터와 함께 검사 비트를 저장해 두었다가, 읽을 때 생긴 비트 오류를 스스로 찾아 고치는 메모리

DRAM 의 기억 소자는 우주선(宇宙線)이나 전기적 잡음 때문에 저장된 비트가 드물게 뒤집힌다. 일반 PC 에서는 이런 오류가 프로그램 이상이나 파일 손상으로 조용히 넘어가지만, 오래 켜 두고 많은 데이터를 다루는 서버에서는 무시할 수 없다. ECC 메모리는 데이터를 쓸 때 해밍 코드 계열의 검사 비트를 함께 저장하고, 읽을 때 다시 계산해 맞춰 본다. 한 비트가 틀렸으면 그 자리를 찾아 바로 고치고, 두 비트가 틀렸으면 고치지는 못하지만 오류로 알린다(SECDED, Single Error Correction Double Error Detection).

SDRAM 이후 PC 메모리 모듈의 데이터 폭은 64비트다. ECC 메모리는 64비트마다 검사 비트 8비트를 더 두어 모듈의 폭이 72비트가 된다. 그래서 ECC 모듈에는 일반 모듈보다 메모리 칩이 하나 더(8개 대신 9개, 16개 대신 18개) 붙어 있다.

종류 데이터 검사 비트 모듈 폭 할 수 있는 것
일반(Non-ECC) 64비트 없음 64비트 오류를 알지 못한다
패리티 메모리 64비트 8비트(바이트마다 1비트) 72비트 1비트 오류를 검출만 한다
ECC 메모리 64비트 8비트(해밍 코드) 72비트 1비트 오류를 정정, 2비트 오류를 검출
  • 32비트는 예전 72핀 SIMM 의 데이터 폭이다(패리티를 붙이면 36비트)
  • 128비트는 모듈 두 개를 짝지어 쓰는 듀얼 채널의 합친 폭이지 모듈 하나의 폭이 아니다 → 메모리 모듈
  • DDR5 모듈은 32비트 서브채널 두 개로 나뉘어, ECC 모듈은 서브채널마다 8비트를 더한 40비트 두 개(합쳐 80비트)가 된다. DDR5 칩 안에 들어간 온다이(on-die) ECC 는 칩 내부 오류만 고치는 기능으로, 메모리 컨트롤러가 검사하는 모듈 ECC 와는 다르다
  • 메모리 컨트롤러(지금은 CPU 안에 있다)와 메인보드가 ECC 를 지원해야 한다. 지원하지 않는 보드에 꽂으면 검사 비트를 쓰지 않는 일반 메모리로 동작하거나 아예 인식되지 않는다
  • 서버·워크스테이션용 CPU(인텔 제온, AMD 에픽 등)가 주로 지원한다
  • 서버용 레지스터드(RDIMM) 모듈은 대부분 ECC 다. 다만 '레지스터드'는 신호를 다시 구동하는 버퍼 칩이 있다는 뜻이고, ECC 와는 따로인 특성이다
  • 검사 비트를 계산하는 만큼 일반 메모리보다 아주 조금 느리고 값이 비싸다