JEDEC 스펙으로 비교하는 DDR3와 DDR4
이 글을 쓰는 현재 시장에서 판매되는 거의 모든 PC가 DDR4를 탑재하는 상황인데다 내년에는 DDR5 메모리도 등장할 예정이라 좀 많이 늦긴 헸습니다만 한 번 정리는 해두고 싶어 글을 남깁니다. 벤치마크 테스트 비교 결과는 이미 여러 하드웨어 리뷰 사이트에서 다양한 자료를 공개하고 있기 때문에 저는 칩 설계자의 관점에서 JEDEC 스펙을 바탕으로 DDR3와 DDR4를 비교하고 스펙이 바뀐 배경에는 어떤 점들이 고려되었는지 살펴 보도록 하겠습니다.
먼저 스펙상의 차이점을 간단히 비교해 본 뒤에 하나씩 차이점을 짚어 볼 할 생각인데, 아래는 제가 중요하다고 생각하는 몇 가지에 항목에대해 DDR3와 DDR4의 차이점을 정리한 표 입니다.
DDR3 | DDR4 | |
---|---|---|
전원전압 (VDD/VDDQ/VPP) | 1.5V/1.5V/없음
(DDR3L – 1.35V/1.35V/없음) |
1.2V/1.2V/2.5V |
Data 1 pin당 전송속도 (MT/s) | 800/1066/1333/1600/1866/2133 | 1600/1866/2133/2400/2666/3200 |
Burst Length | 8 | 8 |
Bank Group | 없음 | 4(x4, x8) or 2(x16) |
Bank 수 | 8 | 16(x4, x8) or 8(x16) |
Page Size | 1KB or 2KB | 512B, 1KB, or 2KB |
Data Bus Inversion (DBI) | 미지원 | 지원 |
Fine Granularity Refresh | 미지원 | 지원 |
Low-power Auto Self Refresh
(LP ASR) |
미지원 | 지원 |
Reliability Features | 미지원 | CA Parity, Write CRC |
1. 전압전압
스펙비교에서 가장 먼저 눈에 띄는 부분은 DDR3에서 1.5V이던 코어(VDD)와 I/O 전압(VDDQ)가 1.2V로 줄어든 점 입니다. DDR->DDR2->DDR3->DDR4 메모리를 거치면서 전원전압은 2.5V->1.8V->1.5V->1.2V로 계속 줄어들었는데 공정 미세화에 힘입은 바가 큽니다. 메모리 업계에서는 “Power Neutrality”라는 표현을 사용하여 DRAM 세대가 교체될 때 마다 대역폭이 2배로 늘더라도 전력소모는 줄어들거나 적어도 비슷해야 한다는 암묵적인 규칙을 세웠놓았습니다. 전력소모는 전원전압의 제곱에 비례하여 줄어들기 때문에 늘어난 전송속도로 인한 전력소모 증가분을 상쇄하여 Power Neutrality를 지키기 위해서는 전원전압을 줄이는 것이 가장 강력한 방법입니다. 전원 전압의 감소덕으로 DDR 메모리는 세대가 바뀔 때 마다 대역폭이 계속 늘었어도 평균적인 전력소모는 줄어들어 왔습니다.
DDR4에서는 2.5V를 사용하는 VPP 전원이 추가 되었는데 word line을 구동하기 위한 전원으로 전체 전력소모에서 아주 작은 부분만을 차지 합니다. DRAM 셀의 capacitor에 VDD 만큼의 전압을 충전하려면 word line에 적어도 VDD+Vth(NMOS 트랜지스터의 turn-on threshold 전압) 만큼을 가해줘야 하기 때문에 VDD보다 높은 전압이 필요한데 DDR3의 경우에는 DRAM 내부의 charge pump를 통해 VDD+Vth 이상의 전압을 만들었습니다. DDR4에서는 charge pump를 제거하고 이를 외부에서 공급하도록 바꾸었는데 대략 2~4%가량 DRAM 칩의 면적이 줄어드는 이점이 있습니다.
2. Data 1 pin 당 전송속도
DDR3에서 DDR4로 옮겨가는 가장 큰 이유는 보다 높은 메모리 대역폭을 얻기 위함일 것입니다. DDR3의 경우 처음 스펙이 정해질 때는 data pin 한개당 800MT/s ~ 1600MT/s (DDR이기 때문에 I/O 클럭은 400~800MHz)의 전송속도를 가졌고 추후 1866, 2133MT/s 전송률도 스펙에 추가되었습니다. DDR4의 경우 전송속도가 최대 3200MT/s로 2133MT/s 지원이 추가되기 이전의 DDR3 최대 스펙에 비해 딱 2배의 전송률을 가지고 있습니다. JEDEC스펙상에서 DDR4의 전송속도는 1600MT/s 부터 시작하지만, DDR3와 전송률이 겹치기 때문인지 이 글을 쓰는 2017년 4월 현재 시장에서 2133MT/s 이하의 전송속도를 가진 DDR4 메모리는 찾기가 힘듭니다.
3. Burst Length
DDR->DDR2->DDR3로 세대가 바뀔 때는 burst length가 2->4->8로 계속 증가해 왔습니다만 DDR4에서는 burst length가 16으로 증가하지 않고 그대로 8로 유지되었습니다. 제 생각으로는 DDR4 메모리의 주 사용처인 인텔 프로세서의 메모리 인터페이스가 64-bit이고 LLC(Last Level Cache)의 line size가 64-Byte이기 때문에 8-burst로 접근할 때 64-bit x 8-burst = 64-Byte로 프로세서의 메모리 읽기/쓰기 단위와 딱 맞아 떨어지기 때문으로 추측됩니다. Burst size를 8로 유지하면 DRAM 내부의 prefetch buffer size를 작게 가져갈 수 있는 장점도 있습니다.
4. Bank Group, Bank 수
DRAM에는 tCCD(CAS-to-CAS delay)라는 parameter가 있는데 연속된 읽기 또는 쓰기 명령어 사이에 필요한 최소 시간간격을 말합니다. DDR3의 경우 tCCD가 4싸이클로 고정되어 있어 burst length와 tCCD가 균형을 이루고 있습니다. 8개의 data burst를 DDR로 전송할 경우 4 싸이클이 걸리므로 tCCD에 맞춰 4싸이클 마다 읽기/쓰기 명령을 내리면 data pin에 쉬는 시간 없이 연속적으로 data가 실릴 수 있습니다. tCCD 시간 동안 DRAM 내부에서는 읽기/쓰기 명령과 컴럼주소가 I/O 버퍼를 통과하여 셀 어레이로 전달되어 컬럼 디코딩이 수행되는데 이 때 필요한 시간은 회로의 물리적인 한계에 의해 I/O 클럭속도와 상관없이 거의 일정합니다. DDR3의 경우 I/O 최대 클럭속도가 1066MHz 이기 때문에 4 싸이클에 해당하는 시간이 적어도 3.75ns가 확보 되지만 DDR4의 경우 최대 1600MHz까지 I/O 클럭을 사용하기 때문에 4 싸이클에 해당하는 시간이 2.5ns 까지 줄어듭니다.
DDR4의 bank group은 이러한 문제를 피하기 위해 제안 되었는데, tCCD를 되도록이면 4싸이클로 유지하기 위해 위의 그림과 같이 bank를 4개(x16의 경우 2개)의 group으로 묶어서 사용합니다. 명령어가 각 bank로 전달되고 컬럼 주소가 디코딩 되는 수행단계를 나누어 읽기/쓰기 명령이 bank group 밖에서 수행되는 시간인 tCCD_S는 4싸이클로 유지하되 각 bank에서 최종적으로 명령이 완료되는 시간인 tCCD_L은 메모리 클럭 속도에 따라 최대 8싸이클까지 늘어나도록 스펙을 정했습니다(아래 표 참조). 이렇게 할 경우 연속된 명령이 다른 bank group으로 전달 될 경우 tCCD_S가 적용되어 data pin에 쉬는 시간없이 data가 실릴 수 있지만 같은 bank group으로 연속된 명령이 전달되면 tCCD_L이 적용되어 data pin에는 쉬는 시간이 발생하게 됩니다. 이러한 이유로 DDR4 메모리 컨트롤러를 설계할 때에는 연속된 명령어의 스케쥴링이 최대한 다른 bank group으로 분산되도록 신경써야 합니다.
Data Rate (MT/s) | 1333 | 1600 | 1866 | 2133 | 2400 | 2667 | 2933 | 3200 |
---|---|---|---|---|---|---|---|---|
tCCD_S(싸이클) | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
tCCD_L (싸이클) | 4 | 5 | 5 | 6 | 6 | 7 | 7 | 8 |
함께 DDR3에서 8개이던 bank의 수는 DDR4에서 16개로 늘어났는데(x4, x8의 경우), bank수를 늘리면 전체 DRAM에서 동시에 동작하는 부분의 비율이 줄어들어 전력소모를 줄이는데 유리하며 동작속도를 높이는데도 도움이 됩니다.
5. Page Size
DDR3나 DDR4의 경우 용량에 따라 하나의 word line에 1024 또는 2048개의 셀이 연결되어 있고 Activate 동작시에 word line을 공유하는 모든 셀들에 대해 sense amplifier가 켜져 읽기 또는 쓰기 동작을 준비합니다. Page size는 한번에 켜져야하는 sense amplifier의 수를 나타내는데 page size가 작으면 보다 적은 수의 sense amplifier만 동작시켜도 되어 전력소모를 줄이는데 유리합니다. 아래는 8Gb DDR4에 입력되는 주소를 어떻게 해석할지 나타내는 표인데 컬럼 주소는 x4, x8, x16인지에 상관없이 A0부터 A9까지 10-bit으로 하나의 word line에는 1024(=2^10)개의 셀이 연결되어 있습니다. Word line에 연결된 cell 개수인 1024에 data width인 4, 8, 16을 각각 곱하면 page size를 얻을 수 있지요. DDR3의 경우 최소 page size가 1KB이지만, DDR4의 경우 흔히 쓰이는 x4 칩에 대해 512B page size를 정의하여 DDR3에 비해 동작중의 전력소모를 줄일 수 있는 여지를 주고 있습니다.
6. Data Bus Inversion
아래 그림은 DDR3와 DDR4의 termination 방법의 차이를 보여주고 있습니다. DDR3의 경우 termination 저항이 VDD와 ground 양쪽에 연결되어 있기 때문에 driver가 1을 전송할 때(왼쪽 빨간 실선)나 0을 전송할 때(왼쪽 초록색 실선) 모두 VDD와 ground사이에 전류가 흐르게 되어 전력소모가 발생합니다. 반면에 DDR4의 경우 termination 저항이 VDD에만 연결되어 있기 때문에 driver가 0을 전송할 때는 전류가 흐르지만 (오른쪽 녹색 실선) 1을 전달할 때는 VDD와 VDD가 연결되기 때문에 전류가 흐르지 않습니다 (오른쪽 빨간색 점선).
DDR4의 Data Bus Inversion(DBI)는 1을 전송할 때 전력소모가 작은 성질을 이용해 8-bit data 마다 DBI 사용 여부를 나타내는 DBI_n 핀을 하나 더 두고 8-bit data상에 0의 갯수가 1의 갯수보다 더 많을 경우 0과 1을 뒤집어 보내고 DBI_n 핀을 0으로 표시합니다. 이렇게 하면 data pin에서 항상 0을 전송하는 경우보다 1을 전송하는 경우가 많아지므로 data 전송시의 전력소모가 줄어들게 되지요.
DBI의 또다른 이점은 8-bit data 상에서 최대한 1을 유지하려는 성질 때문에 n번째와 n+1번째 data 사이의 평균적인 transition이 줄어 SSO(Simultaneous Switching Outputs) noise도 줄어든다는 점 입니다. 아래 그림의 C와 D를 비교해 보면 “11101111″ 다음에 “00010000″을 전송할 때 DDR3의 경우 모든 data bit의 0과 1 뒤바뀌고 0->1로 바뀌는 왼쪽 4번째 bit은 1->0으로 바뀌는 다른 7-bit들에 의해 영향을 받아 data에 잡음이 생깁니다. 반면 DDR4의 경우 동일한 data를 전송할 때 8-bit data는 그대로 “11101111”이 유지되면서 DBI_n핀만 1->0으로 변하기 때문에 data pin에 SSO noise가 생길 확률이 훨씬 줄어듭니다.
7. Fine Granularity Refresh
DRAM의 셀 capacitor에 충전된 전하는 시간이 지나면서 계속 새어나가기 때문에 data를 잃지 않기 위해서는 각 셀의 data를 읽어서 그대로 다시 써주는 refresh 동작이 필요합니다. DRAM 컨트롤러에서는 보통의 경우 7.8us인 tREFI 마다 refresh 명령을 내리는데 DRAM 셀 하나가 refresh없이 data를 유지할 수 있는 시간인 64ms 동안 8,192(=64ms/7.8us)번의 refresh 명령을 내릴 수 있습니다. DRAM은 refresh 명령을 받을 때 마다 순차적으로 (전체 row 개수/8192)개의 row에 대한 refresh를 수행합니다. 예를 들어 x8 8Gb DDR4 DRAM의 경우 65,536개의 row가 있고 refresh 명령을 받을 때 마다 한번에 8(=65,536/8,192)개 row에 대한 refresh를 수행 하지요. Refresh 명령을 받은후에 refresh 동작을 수행중이라 다른 명령을 받을 수 없는 시간을 tRFC라고 하는데 문제는 이 시간이 DRAM의 평상시의 latency에 비해 꽤나 길다는 점에 있습니다. 앞에서 예로 든 8Gb DDR4 DRAM의 경우 refresh 명령을 받은 후 350ns 동안 다른 명령을 받을 수 없는데 CPU측에서 예상하는 일반적인 latency는 대략 수십ns 정도이므로 프로그램 수행중 짦은 latency가 중요한 순간에 예상치 못한 긴 delay가 발생할 수 있습니다.
DDR4의 Fine Granularity Refresh(FGR)는 이러한 문제점을 피하기 위해 제안 되었는데 DRAM의 전체적인 효율과 worst case latency를 trade-off 할 수 있는 기능입니다. DDR4에서는 refresh를 2배 또는 4배 더 자주하는 대신 매 refresh명령마다 refresh 할 row의 갯수를 1/2 또는 1/4로 줄이는 FGR 2x 모드와 4x 모드를 제공하는데, FGR을 사용할 때 주의할 점은 refresh할 row의 갯수를 1/2 또는 1/4로 줄여도 tRFC가 똑같이 줄어들지 않는다는 점 입니다. 이는 refresh 명령을 준비하고 마무리하기 위한 시간이 row 갯수와 상관없이 고정적으로 필요하기 때문인데, 위의 표를 보시면 2Gb DDR4의 경우 1X mode에서 160ns이던 tRFC가 4X mode를 사용하더라도 40ns가 아닌 90ns까지 밖에 줄지 않습니다. FGR 1X 모드에서는 tREFI당 160ns 만큼의 시간동안만 DRAM을 사용할 수 없었지만 4X 모드에서는 360ns(=90ns x 4회)동안 DRAM을 사용하지 못하는 단점이 생깁니다. 대신에 FGR 4X 모드에서는 wort case latency가 70ns 만큼 줄어드는 장점이 있습니다.
8. Low Power Auto Self Refresh
시스템이 대기모드에서 동작하게 되면 메모리 컨트롤러는 DRAM에 주기적으로 refresh 명령을 주는 대신 DRAM을 메모리 스스로 refresh를 수행하는 Self Refresh 모드로 들어가게 한 다음 저전력 모드로 들어가 DRAM을 제어하지 않습니다. DRAM 셀에서 새어나가는 전하의 양은 온도에 비례하기 때문에 7.8us가 기본인 refresh 주기(tREFI)는 온도에 따라 변할 수 있는데, DDR4 JEDEC 스펙에 따르면 DRAM의 온도가 85도 이상일 경우 tREFI가 3.9us로 줄어 refresh를 두배 자주 해야하며 온도가 45이하일 경우 얼마만큼인지는 DRAM 제조사의 재량이지만 tREFI를 7.8us보다 길게 할 수 있습니다.
Low Power Auto Self Refresh(LP ASR) 기능은 DDR4 메모리에 온도센서를 내장하여 Self Refresh 모드에서 DRAM의 온도에 따라 가능한 한도내에서 refresh 빈도를 줄여 대기모드의 전력소모를 줄여주는 기능인데, 배터리로 동작하는 모바일 기기에 대한 DDR4의 적용을 고려한 기능입니다. LPDDR에는 예전부터 이미 적용되어 있었던 Temperature Compensated Self Refresh(TCSR)와 동일한 기능이 DDR4부터 일반 DDR SDRAM에도 채용되었다고 생각하시면 되겠습니다.
9. Reliability Features
DDR4의 경우 DDR3에 비해 I/O 클럭속도가 크게 빨라졌으므로 안정성을 높이기 위한 기능이 추가 되었는데 Command/Address(CA) 버스에 even parity가 추가되었고, data 쓰기시에도 CRC check가 추가 되었습니다. CA parity나 CRC에 문제가 생길경우 DRAM은 Alert_n핀을 사용하여 메모리 컨트롤러에 문제가 생겼음을 알리는데 두 가지 기능 모두 매모리 접근시에 parity와 CRC체크를 수행하는데 필요한 시간 때문에 적지않은 가용 대역폭의 저하를 동반하므로 설계하려는 시스템의 특성에 맞춰 반드시 필요한 경우에만 사용해야 겠습니다.
글을 마무리 하며…
DDR3와 DDR4의 차이점을 나름 열심히 비교해 봤습니다만, DDR4에서 새로 추가된 기능이 워낙 많아서 이 글에서 미처 다루지 못한 부분도 분명히 있습니다. 특히 I/O의 signal integrity 향상등과 같은 부분은 제 전문분야인 디지털 회로 설계와 거리가 있어서 다루지 않았습니다만, 현재 DDR4에 대해 워낙 자료가 많이 나와 있는 상태라 추가로 궁금한 부분이 있을 경우 어렵지 않게 원하는 내용을 찾을 수 있을겁니다. 웹 검색에서 흔히 찾을 수 있는 PC사용자 관점에서의 DDR3/DDR4 비교와는 좀 다른 관점에서 글을 써 봤는데 아무래도 글을 쓰는 시점이 아쉽네요. 내년에 DDR5 표준이 공개되면 제 때 비교글을 쓸 수 있기를 빌어봅니다. 긴 글 읽어주셔서 감사합니다.
매우 좋은 자료 감사합니다.
감사합니다!!! 퍼갈게요!!
정말 잘 봤습니다! 명쾌한 설명 감사드려요!!!
DDR5와의 비교 부탁드립니다.
Very good! I am a SW developer on DRAM, after i read your article, i feel excited!
감사합니다 잘 봤습니다!
감사합니다.