DRAM은 왜 전원을 켜 놓고도 기억을 다시 써야 할까?
전기가 들어온다고 물컵이 저절로 차지는 않는다
DRAM을 물이 조금씩 새는 작은 컵들의 집합으로 생각해 보자. 물높이를 두 상태로 나누어 0과 1을 적어 두었는데, 시간이 지나면 구별하기 어려워진다. 건물에 수도가 들어온다고 닫힌 컵마다 자동으로 물이 채워지지는 않는다. DRAM에 전원을 계속 공급해도 주기적인 ‘리프레시’가 필요한 이유가 여기 있다.
일반적인 DRAM 셀은 접근용 트랜지스터 하나와 커패시터 하나로 한 비트를 저장한다. 트랜지스터는 통로를 여닫고, 커패시터는 전하를 저장한다. 실제 전압과 논리값의 대응은 회로에 따라 다르므로 ‘전하가 있으면 무조건 1’이라고 외울 필요는 없다. 핵심은 두 상태를 나중에도 구별할 수 있느냐다. MIT의 DRAM 동작 설명
기억의 유효기간을 정하는 간단한 식
커패시터의 기본 관계는 다음과 같다.
Q = C × V
Q는 저장 전하, C는 정전용량, V는 커패시터 양단의 전압이다. C나 구별에 쓸 수 있는 전압 차가 작아지면 읽기 때 활용할 전하의 여유도 줄어든다. 그런데 꺼진 트랜지스터와 절연 구조는 완벽한 벽이 아니다. 아주 작은 누설이 계속되면 저장 상태가 변한다.
누설전류가 일정하다고 단순화하면 다음 관계로 감을 잡을 수 있다.
t ≈ C × ΔV / I_leak
t는 허용한 전압 변화에 도달하기까지의 시간, ΔV는 읽기가 불안정해지기 전까지 허용하는 전압 변화, I_leak는 누설전류다. 실제 유지시간을 보장하는 설계식은 아니다. 누설은 온도·전압·소자의 상태에 따라 달라지고, 판독 회로의 잡음도 영향을 준다. 그래도 ‘작게 만들수록 더 오래 기억한다’는 직관이 왜 틀릴 수 있는지는 보여준다.
읽기 역시 단순히 눈으로 보는 작업이 아니다. 셀을 긴 비트선에 연결하면 양쪽의 전하가 나뉘며 작은 전압 차가 생긴다. 감지 증폭기가 이를 판별하고 충분한 전압으로 키워 셀의 상태까지 복원한다. 저장 전하가 너무 줄었다면 신호와 잡음을 구별하지 못한다. 완전히 빈 컵이 되기 전에도 정보는 이미 읽기 어려워질 수 있다. Liu 외, DRAM 유지시간 실측 연구, §2
평균적으로 잘 기억해도 안심할 수 없다
모든 컵이 같은 속도로 새면 관리가 쉽다. 실제 셀에는 제조 편차가 있어 유지시간의 분포가 생긴다. 오래 버티는 셀들이 많아도 일찍 무너지는 일부 셀을 무시할 수 없다. 데이터 무결성은 평균 기억력보다 약한 셀과 설계 여유에 민감하다.
더 까다로운 것은 셀의 성격이 고정돼 있지 않을 수 있다는 점이다. 2013년 연구진이 다섯 제조사의 DDR3 칩 248개를 측정한 연구에서는 주변에 저장된 데이터 패턴의 영향과, 같은 셀의 유지시간이 시간에 따라 바뀌는 VRT를 조사했다. 이는 당시 제품의 실측 결과이며 최신 DRAM의 수치를 대신하지는 않는다. 다만 한 번 측정한 ‘안전한 대기시간’을 영구적인 정답으로 삼기 어렵다는 문제를 선명하게 보여준다. 원 연구의 실험과 분석
자주 되쓰면 안전하지만, 공짜는 아니다
리프레시는 행을 열어 저장 상태를 판독·복원하는 작업을 주기적으로 수행한다. 에너지가 들고 접근에 쓸 자원과 시간도 차지한다. 그래서 모든 행을 같은 간격으로 관리하기보다 유지시간 특성에 맞춰 덜 자주 갱신하려는 연구가 나온다. RAIDR은 이런 차이를 이용해 리프레시의 에너지·성능 부담을 줄이려는 접근이다. 대신 어떤 행이 얼마나 버티는지 파악하고 그 정보의 신뢰성을 유지해야 한다. RAIDR 원 논문
‘주기적으로 다시 쓴다’고 해서 CPU가 파일을 열어 저장하는 것은 아니다. 메모리 장치와 컨트롤러가 수행하는 물리적인 유지 작업이다. 모든 제품과 온도 조건에 똑같은 갱신 주기가 적용되는 것도 아니다.
DRAM의 높은 집적도는 작은 셀이라는 이점과 주기적으로 상태를 보살펴야 한다는 부담을 함께 가져온다. 공정 기술이 해결하는 것은 컵을 더 작게 만드는 문제만이 아니다. 얼마나 새는지, 얼마나 작게 읽을 수 있는지, 수많은 컵 가운데 약한 것까지 어떻게 관리할지를 함께 푸는 문제다.