읽기가 끝났어도 DRAM 행을 바로 닫을 수 없는 이유
읽기 데이터가 이미 나왔는데 DRAM 행은 아직 닫을 수 없다. 다음 요청이 다른 행을 원한다면 이 대기 시간이 답답하게 보인다. 그러나 출력으로 데이터를 꺼낸 시점과 저장 셀의 전하를 충분히 되돌린 시점은 다를 수 있다. tRAS는 ACT로 행을 활성화한 뒤 PRE로 닫기 전까지 지켜야 하는 최소 active 시간이다.
DRAM 읽기는 셀 상태를 외부에서 가볍게 관찰하는 일이 아니다. 작은 셀 커패시터를 bitline에 연결하면 두 곳의 전하가 공유되고 셀 전압도 변한다. 센스 증폭기는 그 작은 차이를 판별한 뒤 bitline을 높은 값 또는 낮은 값으로 밀어 준다. 셀이 계속 연결되어 있으므로 이 동작은 셀의 전하를 복원하는 역할도 한다.
데이터 전달과 저장 상태 복원의 다른 완료점
읽기 경로는 증폭 중 충분히 판별 가능한 상태가 되면 선택한 column의 데이터를 꺼낼 수 있다. 셀을 다음 접근까지 버틸 상태로 만드는 작업은 그 뒤까지 이어질 수 있다. AL-DRAM 원 논문 그림 2·3는 read/write가 가능한 중간 단계와 fully restored 단계의 차이를 설명한다. 여기서 tRAS의 물리적 의미가 보인다. 단순히 “출력이 끝난 뒤 쉬는 시간”이 아니라 활성화부터 복원까지 확보하는 시간이다.
PRE는 행 선택을 해제하고 다음 활성화를 위해 bitline을 기준 상태로 되돌리는 명령이다. 충분한 복원이 끝나기 전에 행을 닫으면 방금 데이터를 읽는 데 성공했더라도 이후 보존 여유를 줄일 수 있다. 즉 즉시 읽은 값만 확인하는 검사는 너무 짧은 active 시간이 미래 접근에 미치는 영향을 놓칠 수 있다.
다만 “버스 데이터가 끝날 때까지 언제나 행을 열어 둔다”는 규칙으로 바꾸면 또 틀린다. 내부 column 동작과 외부 데이터 출력은 pipeline으로 나뉜다. 합법 PRE 시점은 외부 burst 완료 시각을 직관적으로 골라 정하는 것이 아니라 명령 timing으로 판정한다. Alliance DDR4 데이터시트의 Burst Read followed by Precharge 설명은 READ→PRE 조건과 ACT→PRE 조건을 함께 만족하도록 요구한다.
PRE를 보낼 수 있는 가장 이른 시간을 계산하기
가상 조건으로 tRAS=32ns, tRTP=8ns, AL=0을 놓자. tRTP는 내부 READ 뒤 PRE까지의 최소 간격이다. ACT를 0ns에 보낸 bank에서 READ가 14ns에 나왔다면 두 제약은 다음과 같다.
- ACT 기준: PRE ≥ 0+32=32ns
- READ 기준: PRE ≥ 14+8=22ns
가장 이른 PRE는 큰 쪽인 32ns다. READ를 빨리 보냈어도 tRAS가 행 닫기를 제한한다. 반대로 같은 행을 더 읽다가 마지막 READ를 30ns에 보냈다면 READ 기준은 38ns가 된다. 이때는 tRAS가 이미 충족되었어도 tRTP 때문에 38ns까지 기다린다.
| 가상 명령열 | ACT 기준 한계 | 마지막 READ 기준 한계 | 가장 이른 PRE |
|---|---|---|---|
| ACT 0ns, READ 14ns | 32ns | 22ns | 32ns |
| ACT 0ns, READ 30ns | 32ns | 38ns | 38ns |
여기에 WRITE가 있었다면 write recovery도 추가된다. 따라서 최소 active 시간이 끝났다는 사실만으로 PRE를 항상 즉시 발행할 수는 없다. timing을 볼 때는 각 제약을 동일 시간축의 후보 시점으로 바꾸고 그중 가장 늦은 시점을 찾는 편이 안전하다. 위 값은 설명용이며 특정 speed bin의 합법 설정을 제안하는 표가 아니다.
tRAS를 길게 잡는 것과 행을 오래 열어 두는 것
tRAS는 최소값이지 controller가 항상 그 시점에 행을 닫으라는 명령이 아니다. 같은 행의 column 요청이 계속 있다면 행을 유지해 ACT와 PRE 비용을 아낄 수 있다. 반대로 다음 요청들이 모두 다른 행이라면 현재 행을 오래 붙잡는 정책은 지연을 늘린다. 최소 복원 시간을 지키는 문제와 row-buffer locality를 활용하는 문제는 구분해야 한다.
또한 더 긴 active 시간이 모든 측면에서 안전을 끝없이 높이는 것은 아니다. 제품에는 최대 active 시간 등 별도 조건이 있을 수 있으며, disturbance를 고려하는 시스템에서는 행의 open duration 자체도 관리 대상이 된다. tRAS minimum을 만족했다는 사실은 나머지 명령·운용 제약을 모두 만족했다는 뜻이 아니다.
timing 연구가 특정 조건에서 tRAS를 줄였다고 해서 모든 제품의 충분한 복원 상태가 같은 시간에 만들어지는 것도 아니다. 셀의 저항·커패시턴스 편차와 온도·저장 전하 상태가 내부 복원 속도와 필요한 여유에 영향을 준다. vendor가 지정한 최소값을 어긴 결과와 합법적인 스케줄에서 PRE를 빨리 배치한 결과를 동일한 최적화로 설명해서는 안 된다.
읽기 완료를 보면 “데이터는 받았는데 왜 못 닫지?”라는 의문이 생긴다. 답은 저장 상태 복원이 별도 목적을 가진다는 데 있다. 실무적으로는 ACT→PRE 최소값을 하나의 후보 시점으로 계산하고 마지막 READ·WRITE의 후속 조건을 겹쳐 보자. 그러면 tRAS가 실제로 기다리게 하는 구간과 다른 timing이 막는 구간이 정확히 나뉜다.