지난 포스팅에서는 동일한 bank 주소에서 서로 다른 행 주소에 접근하여 연속적인 읽기 명령을 수행할 때 어떠한 지연이 발생할 수 있는지에 대해 살펴보았습니다. 그렇다면 bank의 주소가 다를 때, 서로 다른 행 주소에 연속적인 읽기 명령을 수행하는 경우엔 어떤 파라미터를 고려해야 할까요? 이것과 관련하여 이번 글에서는 서로 다른 뱅크를 연속적으로 접근할 때 어떤 일이 발생할 수 있는지 살펴보겠습니다. 특히, 타이밍이 불충분한 조건을 갖춘 경우에 연속적인 읽기 명령이 요청되었을 때 해당 bank에서는 어떻게 명령을 처리할 수 있는지에 집중하여 살펴보겠습니다.
Bank Interleave가 없을 때
우선 동일한 rank의 주소에서, 서로 다른 bank에 대한 두 개의 연속적인 읽기 명령을 요청하는 경우를 예로 들어보겠습니다. 첫 번째 읽기 명령은 0번 bank라고 하였을 때, 두 번째 읽기 명령은 0번이 아닌 다른 bank로 접근한다고 하겠습니다. 또한, 이 두 번째 읽기 명령의 행 주소는, 첫 번째 읽기 명령에서 요청된 bank의 sense amplifier의 array에서 활성화된 행이 아닌 다른 행 주소라고 하겠습니다. 이때 암묵적으로 가정되는 3가지의 요소가 있습니다. 첫 번째로는 0번 bank와 그 외에 두 번째 읽기 명령이 요청된 bank는 모두 오픈되어 있는 상태라는 것입니다. 여기서 발생한 두 번째 읽기 명령이 0번 bank가 아닌 다른 bank의 sense amplifier의 array가 해당 데이터를 유지하고 있는 행이 아닌 다른 행 주소로 접근한 경우입니다. 이러한 경우, 0번 bank가 아닌 다른 bank에 요청되는 precharge 명령은, 0번 bank를 향한 읽기 명령에 대한 접근이 동시에 진행될 수 있습니다. 즉, 한 bank에서는 precharge 명령이 수행되고 있을 때, 다른 bank에 대하여 행 접근 명령이 요청되는 경우입니다. 두 번째 가정으로, 0번 bank가 아닌 다른 bank에서 tRAS 시간에 대한 조건이 완료된 시간을 들 수 있습니다. 이때 0번 bank가 아닌 다른 bank는 바로 precharge가 가능합니다. 마지막으로 세 번째 가정은, DRAM 컨트롤러가 다른 명령에 대한 처리 요청 간의 간격을 재 정렬하는 명령이나, 재정렬 처리를 지원하지 않는 경우입니다. 즉, 이를 다시 정리하면, 읽기 명령 중 첫 번째 요청과 관련된 모든 DRAM의 명령들이 처리되어야지만, 두 번째 요청에 대해 관련된 DRAM 명령이 처리될 수 있는 경우입니다.
이와 같은 경우, 0번 bank가 아닌 다른 bank 주소에서 읽기 명령에 대한 세 개의 DRAM 명령 순서를 생각해 볼 수 있습니다. 해당 순서에 대한 첫 번째 명령의 경우, 0번 bank가 아닌 다른 bank의 sense amplifier들이 precharge 됩니다. 두 번째 명령의 경우, 해당 sense amplifier로 선택된 행 주소를 전송하는 역할입니다. 마지막 명령의 경우에는 실제로 이루어지는 읽기 명령에 대한 요청을 수행하고, DRAM 디바이스로부터 DRAM 컨트롤러로 해당 데이터를 전달하게 됩니다. 이와 같이 연속적인 읽기 요청이 다른 행 주소에서 수행되고, 두 번째 읽기 요청이 동일한 bank의 다른 행 주소에 적용될 때, DRAM 명령 순서는 메모리 컨트롤러에 의하여 동적으로 재 정렬되지 않는 경우에 한하여, 서로 다른 읽기 명령에 대해 tRP + tRCD 시간만큼의 최소 타이밍 간격을 유지하게끔 스케줄링됩니다.
Bank Interleave 할 경우
위와는 반대로, DRAM 컨트롤러가 다른 명령을 수행하려고 할 때, bank interleave 방식으로 동작할 수 있는 상황에 대하여 살펴보겠습니다. 이는 DRAM 메모리 시스템이 대역폭 활용을 사용할 수 있는 상황과 동일합니다. DRAM 컨트롤러가 0번 bank에 대한 열 주소의 읽기 명령을 처리하기 전에, 0번 bank 주소가 아닌 다른 bank 주소에 대하여 precharge 명령을 허가하게 됩니다. 이러한 경우에 서로 다른 두 개의 명령들이 각각의 bank에서 다른 자원을 사용하기 때문에, 0번 bank에 대한 읽기 명령과, 다른 bank에 대한 precharge 명령에 대하여 병렬 처리가 가능합니다. DRAM 메모리 시스템을 더 효율적으로 사용하기 위해서는 DRAM 컨트롤러가 서로 다른 명령을 처리할 경우에, 그 명령들을 재 정렬할 수 있는 능력에 대하여 회로 설계 시에 고려되어야 합니다. 이와 같은 상황에서, bank interleave 능력이 고려되었을 때, 서로 다른 두 개의 읽기 명령에 대한 타이밍 파라미터는 tRP + tRCD - tCMD와 같은 타이밍을 가질 수 있게 되고, 해당 메모리 컨트롤러가 스케줄링될 수 있습니다. 그리고 이처럼 향상된 방식으로 DRAM 컨트롤러가 설계되었을 때, 해당 메모리의 대역폭을 보다 효율적으로 사용할 수 있게 됩니다.
정리해보자면, DRAM의 bank interleave 설계 방식은 해당 메모리를 구성하는 데 있어서 각 bank에 연속된 행 주소를 지정하여 주고, 이를 순차적으로 접근하게 되는 방법으로써, 일종의 파이프라인 방식을 활용한 개념입니다. 기존에는 각각의 읽기 명령을 수행하는 데 있어서 필요한 지연 시간에 의하여 메모리 대역폭이 제한될 수밖에 없었지만, 이와 같은 방식으로 설계함에 따라 메모리 대역폭을 증가할 수 있고, 이는 마치 고속 메모리와 같은 데이터 처리 속도 달성을 가능하게 해 줍니다. 더불어, 기존에 수행되던 tRP 파라미터 시간을 단축시키는 효과도 얻을 수 있습니다.
-참고문헌-
- Memory Systems: Cache, DRAM and Cross-Cutting Issue, Bruce Jacob 외, Elsevier.
'DRAM' 카테고리의 다른 글
DRAM은 어떻게 발전했을까? - Intel 1103, Asynchronous DRAM (0) | 2022.06.12 |
---|---|
복잡한 DRAM 명령의 상호작용 - (2) (0) | 2022.06.08 |
복잡한 DRAM 명령의 상호작용 - (1) (0) | 2022.06.06 |
댓글