본문으로 건너뛰기
HMYHardware Wiki

HMY-Wiki

하드웨어 / 메모리

ECC 메모리

오류 정정 코드(Error-Correcting Code, ECC) 메모리는 저장한 데이터 옆에 검사 비트를 함께 기록한다. 읽을 때 이 비트를 대조하면 일부 오류를 찾아내고 고칠 수 있다. 일반적인 SECDED 구성은 한 데이터 단위에서 단일 비트 오류는 수정하고 이중 비트 오류는 검출한다. 다만 어디까지 보호되는지는 메모리 컨트롤러와 플랫폼 구현에 따라 달라진다.

보호 범위

시스템 ECC
CPU·보드·모듈이 모두 지원해야 켜진다
On-Die ECC
칩 내부 보호 — 시스템 ECC를 대신하지 않는다
오류 기록
정정 오류 증가는 모듈·슬롯 점검 신호
확인
플랫폼별 지원 여부를 매뉴얼에서 확인

ECC는 ECC 모듈만 꽂는다고 켜지는 기능이 아니다. CPU의 메모리 컨트롤러와 메인보드 배선, UEFI, 모듈 종류가 모두 ECC 동작을 지원해야 한다. 어느 한쪽이라도 어긋나면 오류 정정을 기대할 수 없다. ECC UDIMM, RDIMM, LRDIMM도 신호 버퍼 구조와 대상 플랫폼이 달라 서로 섞어 쓰지 않는다.

DDR5 DRAM 칩의 On-Die ECC가 처리하는 범위는 칩 내부 셀 배열이다. 시스템 ECC는 메모리 버스와 모듈, CPU까지 이어지는 데이터 경로의 오류를 운영체제에 보고하는 쪽에 더 가깝다. 보호 범위가 다르므로 DDR5 비ECC UDIMM에 On-Die ECC가 들어 있어도 시스템 ECC와 같은 보호를 제공한다고 판단하면 안 된다.

Chipkill과 같은 고급 RAS 기능은 여러 DRAM 장치에 데이터를 나누어 배치한다. 그래서 일부 칩이 고장 나도 데이터를 복구할 수 있도록 설계할 수 있다. 서버 플랫폼의 메모리 미러링·스페어링은 ECC와 별개로 가용성을 높이는 기능이다.

오류 수정 횟수는 하드웨어가 보내는 상태 신호다. 수정 가능 오류가 반복해 늘어나면 특정 DIMM·슬롯·채널·온도와의 관계를 기록해야 원인이 되는 조건을 좁힐 수 있다. 수정 불가 오류는 데이터 무결성과 시스템 중단 가능성이 걸려 있어 더 우선한다. “ECC가 고쳤으니 문제없다”고 넘기면 이상 징후를 놓칠 수 있다.

DRAM 내부 ECC 참고: Micron DDR5 New Features

오류 정정과 오류 보고

수정 가능 오류(Correctable Error)는 데이터가 전달되기 전에 복구됐다는 의미이며, 수정 불가 오류(Uncorrectable Error)는 해당 보호 방식으로 복구하지 못했다는 뜻이다. 운영체제와 BMC가 표시하는 카운터는 플랫폼이 노출하는 정보를 바탕으로 하므로, 값이 없다는 사실이 오류가 한 번도 없었다는 증거는 아니다.

메모리 검사 프로그램의 오류 주소를 그대로 특정 DIMM 위치로 바꾸는 것도 어렵다. 채널 인터리빙과 주소 매핑이 사이에 있기 때문이다. 플랫폼이 제공하는 DIMM 식별 정보와 하드웨어 오류 로그를 연결하고, 같은 조건에서 증가하는지 보아야 물리 위치에 대한 근거가 생긴다.

함께 읽기: DRAM 구조, 메모리 문제 진단, WHEA 오류 분석 (Microsoft)

참고 링크