DRAM 리프레시와 로우해머, 전하 누설과 이웃 간섭의 원리

DRAM 리프레시와 로우해머, 전하 누설과 이웃 간섭의 원리

교실 칠판에 쓴 분필 글씨는 시간이 지나면 조금씩 번지고 흐려집니다. 수업이 길어지면 선생님은 읽기 어려워지기 전에 글씨 위를 다시 덧쓰면서 칠판 내용을 유지하죠.

DRAM도 비슷한 일을 합니다. 이 글의 주제인 DRAM 리프레시는 커패시터에서 새어 나가는 전하를 데이터가 사라지기 전에 주기적으로 다시 채우는 동작입니다. 여기에 이웃한 행을 반복해서 열고 닫을 때 생기는 로우해머 현상까지 이어서 살펴봅니다.

칠판과 다른 점이 있습니다. 칠판 글씨는 눈으로 보고 덧쓸 곳을 고르지만, DRAM은 전하량이 곧 정보라서 읽는 동작 자체가 셀을 흔들고 다시 써야 하는 동작이기도 합니다. 덧쓰기가 쉬지 않고 이어지기 때문에 성능과 전력의 비용도 따라옵니다.

DRAM 리프레시가 필요한 이유, 새는 전하

DRAM 셀은 트랜지스터 하나와 커패시터 하나로 이루어지고, 커패시터에 전하가 충분히 있으면 1, 거의 없으면 0으로 읽습니다. 그런데 커패시터와 연결된 트랜지스터의 접합 부분으로는 아주 작은 누설 전류가 계속 흐릅니다.

시간이 지나면 1로 저장해 둔 전하가 줄어들어 0과 구분하기 어려워지고, 이렇게 되기 전에 값을 다시 써 주는 동작이 리프레시(Refresh)입니다. 셀이 데이터를 지키는 시간은 셀마다 다르고 온도가 높을수록 짧아지는 경향이 있습니다.

그래서 표준은 가장 약한 셀을 기준으로 안전하게 정한 주기를 모든 셀에 똑같이 적용합니다. 일반적으로 상온 구간에서는 모든 셀을 64 ms 안에 한 번 이상 갱신하도록 하고, 고온 구간에서는 더 짧은 주기를 요구하는 경우가 많습니다.

여기서 DRAM은 전원만 켜져 있으면 값이 저절로 유지된다는 생각은 흔한 오해입니다. SRAM은 전원이 있는 한 값을 스스로 붙잡고 있지만, DRAM은 전하가 새어 나가는 구조라서 DRAM 리프레시가 멈추면 전원이 켜져 있어도 데이터가 사라집니다.

리프레시가 실제로 돌아가는 방식

리프레시는 새로운 종류의 동작이 아니라, 행 하나를 열어서 읽고 그대로 다시 쓰는 과정입니다. 메모리 컨트롤러가 일정 간격으로 리프레시 명령을 보내면 칩 안에서 다음 순서로 진행됩니다.

리프레시 한 번의 흐름

  1. 칩 안의 주소 카운터가 이번에 갱신할 행 번호를 정합니다. 컨트롤러는 행 주소를 직접 지정하지 않아도 됩니다.
  2. 해당 행의 워드라인이 켜지면 셀의 전하가 비트라인으로 흘러나옵니다.
  3. 센스 앰프(Sense Amplifier)가 미세한 전압 변화를 0 또는 1로 판정하고 증폭합니다.
  4. 증폭된 값이 셀로 되돌아가 커패시터가 원래 수준으로 충전되고, 프리차지로 행을 닫습니다.
  5. 카운터가 다음 행으로 넘어가며, 모든 행이 한 바퀴 돌 때까지 이 과정이 반복됩니다.

읽기 동작도 같은 이유로 셀의 전하를 건드리기 때문에, 센스 앰프가 읽은 값을 다시 써 넣는 복원 과정이 항상 함께 일어납니다. 리프레시는 이 복원 과정만 따로 떼어 모든 행에 돌려 주는 셈입니다.

전원을 아끼는 동작 상태에서는 칩이 컨트롤러의 도움 없이 스스로 리프레시를 이어 가는 셀프 리프레시를 씁니다. 스마트폰이나 노트북이 대기 중에도 메모리 내용을 유지하는 것이 이 덕분입니다.

리프레시의 비용, 가상 수치로 따져 보기

리프레시는 데이터를 지키는 데 꼭 필요하지만 공짜가 아닙니다. 리프레시를 하는 동안에는 그 영역이 읽기와 쓰기를 받을 수 없고, 전력도 쓰기 때문입니다.

가상 계산 예시, 리프레시가 차지하는 시간실제 제품 값이 아니라 설명을 위한 가정입니다. 행이 65,536개인 칩에서 모든 행을 64 ms 안에 한 번 갱신하고, 리프레시 명령 한 번에 행 8개를 처리한다고 둡니다.

명령은 65,536 ÷ 8 = 8,192번 필요하고, 명령 사이의 평균 간격은 64 ms ÷ 8,192 ≈ 7.8 µs입니다. 명령 한 번이 칩을 350 ns 동안 막는다고 가정하면 350 ns ÷ 7.8 µs ≈ 4.5%의 시간을 리프레시에 쓰는 셈입니다.

칩 용량이 커지면 같은 시간 안에 갱신할 행이 늘어나 명령 하나가 막는 시간이 길어지고, 이 비율이 커집니다. 이 때문에 고용량 DRAM에서는 리프레시가 성능과 지연의 흔들림을 만드는 요인으로 따로 관리됩니다.

로우해머, 이웃 행이 영향을 받는 현상

미세화로 셀과 배선 사이의 간격이 좁아지면서 새로운 문제가 눈에 띄게 되었습니다. 로우해머(Row Hammer)는 한 행을 짧은 시간에 매우 많이 반복해서 열고 닫을 때, 바로 옆 행의 셀 전하가 리프레시 주기가 오기 전에 줄어들어 비트가 뒤집힐 수 있는 현상입니다.

행 자체에는 아무 일도 없는데 옆 행이 피해를 입는다는 점이 핵심입니다. 물리적 원인은 인접 배선 사이의 전기적 결합 등 여러 메커니즘이 거론되며, 정확한 비중은 소자와 세대마다 다르게 설명됩니다.

이 현상은 보안 측면에서도 다루어집니다. 소프트웨어가 접근 권한이 없는 영역의 데이터가 바뀌는 효과를 낼 수 있기 때문입니다. 이 글은 원리와 대응의 개념만 다루고, 공격의 구체적인 방법은 다루지 않습니다.

그리고 로우해머는 우주 방사선이 일으키는 소프트 에러와 같은 현상이라는 이해는 정확하지 않습니다. 소프트 에러는 외부 입자가 셀을 때리는 우연한 사건이고, 로우해머는 이웃 행에 대한 접근 패턴이 원인이라서 같은 조건을 반복하면 재현될 수 있다는 점이 다릅니다.

로우해머를 막는 대표적인 방어 방식

가장 단순한 대응은 리프레시 주기를 더 짧게 하는 것입니다. 이웃 행이 손상되기 전에 값을 다시 써 주면 되지만, 앞에서 본 것처럼 리프레시가 차지하는 시간과 전력이 함께 늘어납니다.

대표적인 칩 안쪽 대응이 TRR(Target Row Refresh)입니다. 특정 행이 짧은 시간에 지나치게 자주 열리는 것을 감지하면 그 이웃 행에 추가 리프레시를 끼워 넣는 방식으로, 구현 방법은 제조사마다 다르고 공개되지 않은 경우도 많습니다.

그 밖에 메모리 컨트롤러 쪽에서 접근 횟수를 세어 대응하는 방법, ECC로 뒤집힌 비트를 고치는 방법, 셀 구조와 공정을 개선해 이웃 간섭을 줄이는 방법이 함께 쓰입니다. 어느 하나로 완벽히 막기보다는 여러 층의 방어로 위험을 낮추는 것이 일반적인 접근입니다.

리프레시와 로우해머 비교 표

구분DRAM 리프레시로우해머
정체정상 동작에 필요한 주기적 복원이웃 행 영향으로 생기는 오류 현상
원인커패시터의 누설 전류인접 행의 반복적인 열고 닫기
영향을 받는 곳칩 안의 모든 행자주 열린 행의 이웃 행
대응정해진 주기로 모든 행을 갱신추가 리프레시(TRR 등), ECC, 구조 개선
비용시간 점유와 전력 소모방어 회로와 추가 리프레시의 부담
놓치기 쉬운 점전원이 켜져 있으면 값이 유지된다는 오해소프트 에러와 같은 현상이라는 오해

핵심 정리

DRAM 리프레시는 누설 전류로 줄어드는 셀 전하를 가장 약한 셀이 버티는 시간 안에 다시 채우는 동작이고, 행을 열어 읽고 되쓰는 과정으로 이루어집니다. 로우해머는 같은 칩에서 미세화가 만든 이웃 행 간섭이며, 추가 리프레시와 ECC, 구조 개선을 겹쳐서 대응합니다.

칠판 글씨를 덧쓰는 데 쓰는 시간이 수업 시간을 갉아먹듯, 리프레시도 성능과 전력으로 대가를 치릅니다. 이 대가를 줄이면서 이웃 영향까지 막는 균형이 DRAM 설계의 숙제입니다.

면접 대비 질문

면접 대비 질문DRAM에서 리프레시가 필요한 이유와 리프레시가 시스템 성능에 주는 영향을 설명하고, 로우해머가 일반적인 리프레시 오류와 다른 점을 말해 보세요.

[답변 포인트] 1T1C 셀의 커패시터 전하가 누설로 줄어들기 때문에 일정 주기 안에 모든 행을 다시 써야 한다는 점으로 시작합니다. 리프레시가 행을 열어 센스 앰프로 읽고 복원하는 동작이며, 그동안 해당 영역이 막히고 전력이 쓰여서 용량이 커질수록 부담이 커진다는 점을 연결합니다. 로우해머는 리프레시 주기 안에서도 이웃 행의 반복 접근 때문에 전하가 더 빨리 줄어드는 현상이라는 점, 대응이 리프레시 보강, TRR 같은 방식, ECC, 구조 개선을 겹치는 방향이라는 점을 개념 수준에서 덧붙이면 좋습니다.