ECC 메모리
IT 위키
더 많은 작업
- 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 와는 따로인 특성이다
- 검사 비트를 계산하는 만큼 일반 메모리보다 아주 조금 느리고 값이 비싸다