본문 바로가기
DRAM

DRAM 타이밍 파라미터 (Timing Parameter) - (2)

by 토리윤 2022. 6. 1.

 이번 글에서는 DRAM 동작 파라미터 중에서 Precharge와 Refresh 명령에 대하여 살펴보겠습니다. 각 명령을 수행하는데 필요한 파라미터가 무엇이 있고, 어떻게 정의되며, 해당 파라미터들이 기존의 다른 파라미터와 어떠한 연관성을 갖게 되는지에 집중하여 정리해 보겠습니다.


 Precharge 명령: DRAM의 여러 동작 중 precharge 명령은 행 동작이 끝남을 알리게 됩니다. 즉, DRAM 셀 array에 읽기 또는 쓰기 동작을 수행 후에, 해당 행에 더 이상의 접근 명령이 없게 된다면, 또는 특정 조건을 만족하여서 강제로 해당 행의 동작을 마쳐야 할 때, 이 precharge 명령이 수행되는 것입니다. 보통 DRAM의 경우 데이터를 접근할 때 크게 두 가지의 과정으로 분류할 수 있습니다. 첫 번째는 행 주소 접근 명령으로써, 해당 명령에 따라 DRAM 셀 array에 접근하여 타깃 sense amplifier로 전달하게 됩니다. 이 행 명령에 의하여 모든 셀의 값이 전달되면, 데이터는 sense amplifier에 의하여 증폭되게 됩니다. 이후에 열 주소 접근 명령에 의하여 해당 디바이스로부터 DRAM의 컨트롤러에 해당 셀들의 정보가 이동하게 됩니다. 이때 중요한 명령이 바로 precharge 명령입니다. 행 주소 접근 명령이 끝날 때 수행되는 precharge 명령에 의하여 sense amplifier와 해당 bit line을 리셋하게 되고, 이후에 올 다음 행 주소 접근 명령을 수행할 준비를 하는 것입니다. 이 과정을 수행하게 되는 precharge 명령 시간을 나타내는 파라미터가 바로 tRP입니다. 정확하게는, 메모리 컨트롤러로부터 precharge 명령이 입력된 이후부터, 선택된 bit line과 sense amplifier가 precharge 전압에 다다르기까지 걸리는 시간을 의미합니다. 그렇기 때문에, precharge 명령 이후에 행 주소 접근 명령을 수행할 수 있도록 DRAM 셀의 bank가 전부 precharge 되는 시간을 나타냅니다. 또한, 이러한 행 주소 접근에 관련된 파라미터로는, 앞서 살펴본 tRAS 도 연관되어 있습니다. 즉, tRP를 수행하는 시간과 tRAS를 수행하는 데 걸리는 시간을 합하여 Row Cycle 시간인 tRC 파라미터로 정의됩니다. DRAM의 경우 이 tRC 시간 안에, 해당 디바이스의 cell array에 있는 sense amplifier로부터 해당 셀들의 값을 전송하고, DRAM 셀의 전압 레벨을 원래 값으로 복원시킨 이후에, 해당 bit line에 대한 전압 레벨로 precharge를 수행하여 그다음에 오게 될 행 접근 명령을 준비하는 데 걸리는 시간, 그것도 최소 시간을 나타내는 것입니다. 그렇기 때문에 이 tRC 파라미터의 경우, 한 개의 DRAM chip 내부에서, 같은 bank 주소에 위치하는 행 주소에 대한 명령을 수행하는데 걸리는 최소 제한시간의 기준이 되기도 합니다. 그렇기에 tRC 파라미터의 값이 크다는 것은, 결국 해당 DRAM chip의 동작 속도가 느리다는 것과 같습니다.

 

 Refresh 명령: DRAM의 동작 방식을 결정하는 가장 큰 특성을 꼽으라고 한다면, 바로 cell capacitor에서 발생하는 자연적인 누설전류 즉, leakage current 일 것입니다. 우리가 DRAM을 휘발성 메모리로 분류하는 이유가 바로 이 cell을 이루고 있는 capacitor 때문입니다. 누설전류가 발생하는 원인으로는 여러 가지 복잡한 이유가 있지만, 대표적으로 gate 역할을 하는 트랜지스터에 의해 발생하게 됩니다. 그렇기 때문에 모든 DRAM은 정기적이고 주기적으로 모든 셀들의 값을 읽은 후, 원래 그 값을 써주는 refresh 동작이 필요합니다. 만약, 이 과정이 어떤 특정한 시점보다 늦게 이루어진다면 어떻게 될까요? 이러한 경우에는 아무리 refresh 명령을 수행하여도, 이미 cell array에 있는 남은 전하량으로는 원래 어떠한 값이 쓰여 있었는지 알 수가 없기 때문에, 해당 cell의 값은 원래 값과 다른 값으로 refresh 되게 됩니다. 즉, 1이 원래 값이었다고 했을 때, refresh 주기를 지키지 못하고 refresh 동작을 수행하게 된다면 0이라는 값으로 판독하여 원래의 1의 값을 0으로 잘못 덮어쓰게 되는 것입니다. 그렇기에 흔히 refresh 명령을 DRAM 디바이스에서 데이터 read out과 데이터 복구 역할로 보게 됩니다. 그렇기 때문에 이러한 refresh 명령을 목표하는 DRAM의 행으로 전달하는 간격이, 해당 셀에서 데이터 손실이 발생하는 시간 대비 더 빠르게 이루어져야 하는 것입니다. 그렇다면 무조건 refresh 많이 하면 좋을까요? 당연히 아닙니다. DRAM의 refresh 동작은 다른 명령들과 비교했을 때, 제일 큰 파워 소모를 하게 됩니다. 또한 refresh가 이루어지는 시간 동안 해당 bank에 있는 다른 셀에 접근을 할 수 없기 때문에, 이로 인한 명령 지연시간이 발생하게 됩니다. 이 refresh와 관련된 회로는 복잡하게 구성되어 있고, 내부에는 해당 DRAM 디바이스의 refresh 행 주소를 저장하게 됩니다. 대부분의 메모리 컨트롤러는 단일 refresh 명령을 DRAM 디바이스로 전달하여 refresh 행 주소 레지스터의 값을 증가하는 방식으로써, 해당 bank의 모든 행 주소를 refresh 하게 됩니다. 이때 정의되는 파라미터가 바로 Refresh Cycle 시간인 tRFC입니다. 당연하게도 DRAM 디바이스의 밀도가 증가함에 따라, refresh를 수행해야 하는 셀의 수가(행의 수) 증가하였습니다. 그렇기에 단일의 refresh 명령에 복수의 행 주소에 존재하는 셀들에 대하여 refresh를 수행하게 됩니다. 이는 DRAM의 크기가 증가할수록 tRFC의 값도 증가하여야 한다는 것을 의미합니다. 단일 명령에 refresh를 해야 하는 면적이 커진다면, 그만큼 단일 refresh 명령을 수행하는 데 있어서 시간이 더 걸린다는 것이죠. 물론 DRAM의 모든 bank를 개별로 refresh 하지는 않습니다. 즉, 서로 다른 bank 주소에 대해서는 유동적인 시간을 갖고 refresh를 수행하게 됩니다.


 이처럼 refresh 동작은 DRAM의 신뢰성을 보장하고, 해당 chip이 메모리로써 동작하게끔 하는 매우 중요한 명령입니다. 추후에 기술하겠지만, 대부분의 DRAM 신뢰성 문제는 바로 여기서 발생하게 됩니다. 간단한 예시로, 어떤 임의의 셀에 1을 쓰고, 해당 셀의 값을 나중에 읽었을 때 0이 나오는 경우를 말합니다. 이와 같은 DRAM의 신뢰성 이슈 또는 문제에 대해서는 다른 포스팅에서 깊게 다루도록 하겠습니다.


-참고문헌-

  • Memory Systems: Cache, DRAM and Cross-Cutting Issue, Bruce Jacob 외, Elsevier.

댓글