모든 이야기

선택하지 않은 DRAM rank도 종단 역할을 맡는 이유

두 rank가 같은 DDR4 데이터 배선을 공유한다. 지금은 rank A만 선택해 읽는데 rank B의 termination 설정을 바꾸니 A의 eye도 달라진다. chip select가 꺼진 장치는 전기적으로도 사라질 것 같지만, 명령을 받는 역할과 배선을 종단하는 역할은 다르다. RTT_PARK는 선택되지 않은 장치가 이 두 번째 역할을 맡게 하는 설정이다.

명령 관점에서 rank 선택은 어느 DRAM 집합이 데이터를 주고받는지 정한다. 전송선 관점에서는 동일 net에 연결된 모든 pin, branch와 termination이 여전히 보인다. B가 출력 data를 구동하지 않아도 연결 지점의 load나 반사는 A의 전달 경로에 영향을 줄 수 있다. 그래서 비활성 rank를 단순한 “없는 장치”로 모델링하면 채널 해석이 맞지 않는다.

Alliance DDR4 데이터시트 149~150쪽 ODT State Table은 RTT_PARK를 parked 상태의 종단값으로 나누고 RTT_NOM·RTT_WR 및 read 구동 상태와의 우선순위를 설명한다. 단순히 모든 rank의 resistor가 항상 켜진다는 구조는 아니다. 동작 종류와 ODT 상태에 따라 실제 impedance가 바뀐다.

연결된 저항을 더 강하게 만들면 생기는 일

가상으로 같은 전기적 지점에 120Ω termination 하나가 켜져 있다고 하자. 두 번째 120Ω가 그 지점에 병렬로 켜지면 등가값은 60Ω다. 50Ω 전송선의 단순 끝점이라면 반사계수 Γ=(R-Z0)/(R+Z0)는 120Ω에서 약0.412, 60Ω에서 약0.091이다. 이 아주 단순한 모델에서는 두 번째 종단이 matching에 도움이 된다.

그러나 실제 multi-rank의 resistor는 같은 한 지점에 있지 않다. branch 길이와 flight time이 있으므로 두 저항을 병렬로 합쳐 하나의 끝점으로 바꾸는 계산만으로 eye를 예측할 수 없다. 또한 더 낮은 termination은 신호 amplitude와 driver 부담을 바꾼다. 반사 하나를 줄였다고 voltage margin과 전력이 모두 개선됐다는 결론은 나오지 않는다.

이 계산의 쓸모는 “선택되지 않은 rank의 impedance도 총 경로에 들어간다”는 사실을 확인하는 데 있다. 구체적인 최적값을 선택하려면 실제 topology를 사용하고 read/write 방향별 eye와 전류를 비교해야 한다.

parked라는 이름에도 상태 전환이 들어 있다

B를 RTT_PARK로 유지하다가 다음 요청이 B의 read가 되면 B는 데이터를 구동해야 한다. 해당 구간에는 자신의 data termination을 꺼야 한다. A는 그때 parked termination의 후보가 된다. write에서는 선택된 rank의 RTT_WR가 우선할 수 있다. 같은 값들이라도 누가 구동하고 누가 수신하는지에 따라 다른 구성이 된다.

따라서 rank 전환 근처 오류를 조사할 때는 chip select만 보면 부족하다. command latency와 output burst 구간, ODT on/off 및 impedance 적용 지연을 겹쳐 봐야 한다. 너무 일찍 termination을 없애면 이전 burst의 끝이 영향을 받고, 너무 늦게 켜면 다음 burst의 앞이 취약해질 수 있다. steady state eye는 좋은데 전환 직후 첫 burst만 실패하는 경우가 이 차이를 드러낸다.

문서에서는 Self Refresh에 들어가면 설정과 관계없이 ODT가 Hi-Z가 되는 동작도 설명한다. 비활성 rank가 어느 power state에 있는지에 따라 사용할 수 있는 종단이 달라진다. 절전 정책을 바꾸면서 동일 channel model을 유지하면 예상했던 RTT_PARK가 실제로 존재하지 않는 구간을 놓칠 수 있다.

rank 수를 바꿀 때 새로 확인할 것

single-rank에서 통과한 setting을 dual-rank에 그대로 복사하는 것은 검증이 필요하다. 새 장치가 연결돼 capacitance와 branch가 늘고, parked impedance를 활용할 선택지가 생긴다. unpopulated connector와 장치가 꽂힌 branch 역시 같은 부하가 아니다. 제품 옵션별 population을 channel 조건에 넣어야 한다.

RTT_PARK가 주는 자유도는 data를 처리하지 않는 rank도 신호 전달을 도울 수 있다는 점이다. 그 자유도가 좋은 결과로 이어지는지는 topology·동작 방향·전환 timing이 결정한다. 선택된 rank의 동작표 옆에 연결된 모든 rank의 impedance 상태를 그려 보면, 다른 장치의 설정이 현재 eye를 바꾸는 이유를 설명할 수 있다.