LPDDR4와 LPDDR3의 비교
– 이 글은 2016년 8월 30일 이글루스 블로그에 올렸던 글인데 서비스 종료로 옮겨 온 글입니다.
작년만 해도 삼성 갤럭시 S6나 애플의 iPhone 6S 등 플래그쉽 스마트폰에나 탑재되던 LPDDR4 메모리가 어느덧 중국산 중저가폰에도 탑재되는 시기가 되었으니 한번 LPDDR4 메모리에 대해 정리할 때가 되었다 싶어서 글을 시작했습니다. 2년 전쯤에 DDR3와 LPDDR3를 비교하는 글을 썼었는데, 당시의 글과 연속성을 이어가려면 DDR4와 LPDDR4를 비교해야 겠습니다만 현재 모바일 시장에 비해 PC시장은 워낙 재미가 없어진 상태라 DDR4 대신에 LPDDR3와 LPDDR4를 비교하는 글을 쓰기로 마음을 정했습니다.
모바일 기기의 특성상 배터리의 용량이나 발열성능은 크게 변화가 없으면서도 새 제품이 나올 때 마다 성능은 향상되어야 하는데, LPDDR4로 세대가 교체될 때도 마찬가지로 지원하는 대역폭을 2배로 늘리면서도 전력소모는 LPDDR3와 비슷한 수준을 유지하는 것을 염두에 두고 JEDEC 표준이 정해졌습니다. (업계에서는 Power Neutrality라는 표현을 씁니다.) 우선 LPDDR3와 LPDDR4의 스펙을 표로 간단히 비교해 본 다음에 각 항목을 살펴 보면서 어떤 부분이 대역폭 향상과 전력소모 감소에 기여하는지 하나씩 살펴 보도록 하겠습니다.
위의 표에서 먼저 전력소모를 줄이는 데 영향이 큰 전원 전압이 1.2V에서 1.1V로 줄어든 부분이 눈에 띄는데 이는 멈출 듯 하면서도 계속 진행되고 있는 공정 미세화에 힘입은 바가 큽니다. LPDDR(1.8V) -> LPDDR2(1.2V) 때의 변화 만큼 큰 폭으로 전원전압을 떨어뜨리지는 못했습니다만, LPDDR2에서 LPDDR3로의 이행 때 전원전압에 변화가 없었던 점을 생각하면 둔화되긴 했어도 전압이 감소하는 추세는 아직 유지하고 있습니다.
스펙상으로 드러나는 LPDDR3와 LPDDR4의 가장 큰 차이는 지원하는 대역폭인데 LPDDR3에서 I/O 한 pin당 2133Mbps까지 지원하던 최대 전송속도가 LPDDR4에서는 4266Mbps로 두 배 늘었습니다. 다만 이 전송속도는 JEDEC 표준에서 정의하는 최대 전송속도이고 제가 이 글을 쓰는 2016년 8월 시점에는 LPDDR3는 1866Mpbs까지 LPDDR4는 3733Mbps까지 지원하는 제품까지 나와있는 것으로 알고 있습니다.
전송속도와 함께 한 번에 순차적으로 읽어야만 하는 data 갯수인 burst length는 8에서 16(32도 가능)으로 늘었는데, 이는 내부 메모리 셀의 동작속도는 물리적인 한계 때문에 LPDDR의 세대가 바뀌어도 변화가 없지만 I/O 전송속도는 세대가 바뀔 때 마다 2배씩 증가하는 추세를 이어가기 위해서 입니다. 메모리 셀의 동작속도를 높이는 것은 어려운 일이지만 한번에 여러개의 메모리셀을 동시에 접근하는 것은 상대적으로 쉽기 때문에, LPDDR3에서는 주소가 연속된 data 8개를 동시에 접근하여 내부 메모리 셀의 동작속도에 비해 8배(DDR이기 때문에 클럭 기준으로는 4배) 빠른 I/O 전송속도와 균형을 맞췄습니다. LPDDR4의 경우 LPDDR3 대비 2배 늘어난 I/O 전송속도를 맞추기 위해 burst length도 함께 2배로 늘어났습니다. LPDDR4에서 16-burst에 더해 32-burst까지 지원하는 이유는 모바일 기기에서 카메라, GPU 등의 사용이 늘면서 메모리상에 연속적으로 위치한 data를 접근하는 application의 비중이 늘어났기 때문으로 생각됩니다.
LPDDR4에서는 전력소모를 줄이기위해 내부 구조에 큰 변화가 있었는데, 실리콘 die 한 개당 1개의 channel을 가지던 구조가 2개의 channel을 가지는 구조로 변경된 것입니다. 예를 들어, 8Gb LPDDR3의 경우 하나의 메모리 칩 전체가 1개의 channel로 이루어져 있는 반면 8Gb LPDDR4의 경우 하나의 칩에 독립적인 4Gb 메모리 2개가 있고 각 메모리가 1개 씩의 channel을 이루는 dual channel 구조로 이루어져 있습니다. 이렇게 channel을 나누면 아래 그림과 같이 Command/Address 입력으로 부터 data 입출력 까지의 평균적인 wire 길이가 짧아지기 때문에 내부 wire의 parasitic capcitance가 줄어들어 data 읽기/쓰기에 필요한 전력이 줄어드는 장점이 있습니다. 링크의 자료에 따르면 LPDDR4 에서 dual channel 구조를 가져간 덕분에 burst read/write시에 필요한 전류(IDD4)가 20%정도 감소하는 효과가 있다고 합니다. (LPDDR4의 경우 channel당 bit width가 16-bit으로 고정되어 있기 때문에, LPDDR3 x32와 LPDDR4 x16 2-channel 동시 사용의 두 경우를 비교했습니다.)
Dual channel 구조의 또 다른 장점은 메모리 구성상의 유연함이 늘어난다는 점입니다. 높은 throughput이 필요한 경우에는 메모리 컨트롤러에서 두 channel에 같은 Command/Address를 인가하여 32-bit data width를 가지는 1 channel 메모리 처럼 사용할 수도 있고 (Lockstep mode), random access가 많이 필요한 경우에는 메모리를 두 channel로 나누어 독립적으로 제어함으로서 (Multi-channel mode) LPDDR4 메모리의 utilization 향상을 노릴 수도 있습니다. Multi-channel 모드에서는 메모리 command를 두 channel에 나누어 scheduling 할 수 있기 때문에 각 command 사이의 timing constraint에 걸릴 확률이 줄어들기 때문이지요.
LPDDR4의 두 channel을 어떻게 구성해서 사용할 수 있는지와 각 구성별 장단점에 대해서 Synopsys의 메모리 컨트롤러 개발 director인 Marc Greenberg씨가 쓴 “Optimizing LPDDR4 Performance and Power with Multi-Channel Architectures” 라는 제목의 white paper가 있는데 design-reuse.com 사이트에 가입한 후 자신이 하고 있는 일에 대한 몇 가지 정보를 제공하면 링크를 통해 다운로드 받아보실 수 있습니다. 아래의 그림은 white paper중에 수록된 LPDDR4의 dual channel을 활용하여 메모리 컨트롤러와의 연결을 구성할 수 있는 경우의 수를 나타낸 그림인데 괜찮은 자료이니 관심이 있으신 분은 읽어 보시기를 권합니다.
LPDDR3에 비해 LPDDR4의 전력소모를 줄이기 위한 또 다른 구조상의 변화는 page size의 변경입니다. Page size는 data 읽기/쓰기를 위해 동시에 활성화 되어야 하는 memory cell의 갯수를 나타내는데 page size 만큼의 sense amplifier가 동시에 동작해야 하기 때문에 active/precharge 명령 수행시의 전력소모에 영향을 미칩니다. LPDDR3의 경우 용량에 따라 2KB/4KB/8KB로 변화하던 page size가 LPDDR4에서는 용량에 관계 없이 2KB(Word line당 1024 memory cell x 16-bit = 2KB) 로 고정 되었는데 이 때문에 1 channel 사용시의 active/precharge에 필요한 전류(IDD0)가 약 10% 줄어드는 효과가 있다고 합니다. 다만 이렇게 page size를 줄일 수 있었던 이유는 LPDDR4가 dual channel 구조를 채택했던 부분이 크기 때문에 16-bit 두 channel을 하나의 32-bit channel로 묶어 쓰는 Lockstep mode의 경우에는 page size에 의한 잇점이 없어집니다. 두 channel을 Multi-channel 모드로 사용할 때는 두 channel에서 active또는 precharge command가 동시에 수행되는 경우가 드물어지기 때문에 전력소모의 peak 값이 줄어드는 효과가 있습니다.
중간에 dual channel구조를 설명하면서 얘기가 잠깐 옆으로 세긴 했습니다만 계속 제일 처음에 보여드렸던 스펙비교표의 항목을 하나씩 짚어보고 있는데, LPDDR3에서 10-pin이던 command/address pin이 LPDDR4에서 6-pin으로 줄어든 대신 2-clock 동안 command/address 입력을 받아들이는 방식으로 변경된 것도 눈에 띄입니다. Burst size가 8에서 16으로 증가했기 때문에 command/address phase가 차지하는 시간이 두배로 늘어나는 것이 command scheduling에 별로 부담을 주지않았고 dual channel 구조 때문에 늘어난 pin-count가 메모리 생산단가에 미치는 영향을 최소로 하기 위해 이렇게 표준이 정해진 것으로 추측됩니다.
이제 드디어 표의 마지막 항목인데 LPDDR4에서 지원하는 DBI(Data Bus Inversion) 기능은 termination으로 인한 전력 소모를 줄이기 위한 기능입니다. 아래는 LPDDR4의 I/O driver 회로를 간단히 나타낸 그림인데 전송선과 VSSQ 사이에 termination 저항 Rterm이 존재하기 때문에 data 1을 전송할 때는 VDDQ와 VSSQ가 연결되어 전류가 흐르고(그림의 빨간선) data 0을 전송할때는 같은 전압의 VSSQ와 VSSQ가 연결되어 전류가 흐르지 않습니다(그림의 파란선). LPDDR4의 1channel 에서는 16-bit의 DQ-pin에 8-bit 단위로 DBI를 적용할 수 있고, DQ pin이 inversion 됐는지 여부를 표시하는 DMI pin이 8-bit당 1-pin씩 총 2-pin 있습니다. DBI가 동작하면 8-bit의 단위로 DQ pin에 실릴 data를 살펴보고 1이 5개 이상 존재하면 data를 반전시키고 DMI pin에 1을 전송하는 방법으로 (DQ 8-bit + DMI 1-bit)의 9-bit 중에서 1의 갯수가 5개를 넘지 않도록 조절합니다. DBI기능을 사용하면 전력소모는 줄어들지만 read/write latency가 늘어나는 단점이 있기 때문에 application 특성에 맞는 선택이 중요할 것으로 보입니다. 참고로 LPDDR4에 적용된 DBI는 DC mode이고 DDR4에는 이전 data와 현재 data를 비교하여 1이나 0의 갯수 대신에 data line상의 1<->0 변화를 줄이는 AC mode DBI가 적용되어 있어 LPDDR4와는 차이가 있습니다.
지금까지는 표로 비교하기 좋은 항목들을 살펴 봤는데, 글을 마무리 하기 전에 표로 비교하기엔 애매하지만 중요하다고 생각되는 LPDDR4의 특징에 대해서도 몇 가지 짚고 넘어가겠습니다. LPDDR4의 경우 시스템의 저전력화를 용이하게 하기 위해 메모리 클럭을 동작중에 변경하기 위한 기능을 지원하는데, 이를 위해 동작속도 별 timing constraint 관련 값을 저장하는 register의 집합인 latency set을 2개 제공합니다. LPDDR4 메모리 컨트롤러 입장에서는 메모리를 초기화 할 때 두 가지 동작속도에 대해서 training을 수행해야 하기 때문에 메모리 초기화 과정은 복잡해 집니다만, 동작속도를 변경할 때는 별도의 training sequence를 거치지 않고 어떤 latency set을 사용할지만 결정하면 되기 때문에 메모리 사용량이 적어질 때 메모리의 동작속도를 떨어뜨려 전력소모를 줄이기가 훨씬 용이해 졌습니다. 뿐만 아니라 LPDDR4은 low-speed 모드로 LPDDR3 보다 느린 속도에서의 동작도 지원하는데 이 때는 signal integrity가 문제되지 않으므로 ODT(On-Die Termination)를 꺼서 추가로 전력소모를 줄일 수도 있습니다.
정리하면 LPDDR3대비 LPDDR4의 가장 큰 특징은 dual channel 메모리 구조의 채택이라고 할 수 있는데, 이를 통해 전력소모 상의 이점도 얻고 있지만, 메모리 구성상의 자유도가 높아진 것은 보다 큰 장점입니다. 이 글에서는 자세히 설명하지 않았습니다만 메모리 구성을 다양하게 가져갈 수 있는 장점에 더해서 메모리 command를 scheduling 하기 위한 자유도도 함께 늘어났기 때문에 LPDDR4의 잠재력을 최대한 끌어 내려면 메모리 컨트롤러의 설계가 보다 중요해 졌습니다. 거기에 메모리의 동작속도까지 중간중간 변경할 수 있게 되었기 때문에 똑같은 LPDDR4를 채용했다고 해도 SoC 제조사나 IP 공급사의 메모리 컨트롤러 설계 실력에 따라 utilization과 전력소모가 큰 폭으로 차이가 나게 되었지요. LPDDR의 세대가 거듭 될수록 메모리와 메모리 컨트롤러 설계자가 생각할 변수가 많아지는 건 항상 변함이 없습니다. 긴글 읽어 주셔서 감사합니다.