JEDEC 스펙으로 비교하는 DDR4와 DDR5

인텔의 12세대 Alder Lake 프로세서가 발표된지도 1년 반 정도가 지났고, 데스크탑 PC의 DDR5 DRAM 탑재도 보편화 된 시점이라 JEDEC 스펙을 바탕으로 DDR4와 DDR5에 어떤 차이점이 있는지 비교해 보려 합니다. 스펙들 중 제가 중요하다고 생각하는 항목들을 표로 비교한 후 순서대로 자세히 살펴 보겠습니다.

 

DDR4

DDR5

최대전송속도

3200 Mbps/pin

6400 Mbps/pin

전원전압
(VDD/VDDQ/VDDP)

1.2/1.2/2.5 V

1.1/1.1/1.8 V

칩당 용량

2 ~ 16Gb

8 ~ 64Gb

On-die ECC

Error Check and Scrub (ECS)

미지원

지원

Bank 구조

4BG x 4 banks

8 BG x 2 banks (8Gb x4/x8)

4 BG x 2 banks (8Gb x16)

8 BG x 4 banks (16-64Gb x4/x8)

4 BG x 4 banks (16-64Gb x16)

Channel Bit-width

64-bit

32-bit

Burst Length

BL8

BL16

Command/Address pin

(CS/CKE 제외)

26-pin

(ACT, BG, BA, C pin 포함)

14-pin

Bus Inversion

Data Bus Inversion (DBI)

Command/Address Inversion (CAI)

Refresh command

All Bank

All Bank / Same Bank

 

전송속도 및 전원전압

DRAM 메모리의 스펙은 세대가 바뀔 때 마다 최대 전송속도를 두배씩 향상시키는 것이 일반적입니다. DDR4에서 pin당 3200Mbps였던 최대 전송 속도가 DDR5에서는 pin당 6400Mbp로 두배가 빨라 졌습니다. DIMM 모듈은 64-bit의 data width를 가지고 있으므로 DIMM 모듈 기준 최대 대역폭(bandwidth)은 DDR4가 3.2Gbps x 64-bit(=8Byte) = 25.6GB/s, DDR5가 6.4Gbps x 64-bit(=8Byte) = 51.2GB/s가 됩니다. DDR5 JEDEC 스펙문서에는 6400Mbps를 넘어 8400Mbps까지도 언급은 하고 있지만 이 글을 쓰는 시점에선 6400Mbps 이상에 대해서는 구체적인 스펙이 기재되어 있지 않습니다.

DDR 메모리 내의 회로가 동작하는 전압인 VDD와 IO 전압인 VDDQ는 DDR4에서 DDR5로 세대가 넘어가면서 1.2V 에서 1.1V로 줄어들었고 word line을 구동하는데 필요한 전압인 VDDP는 2.5V에서 1.8V로 줄어 들었습니다. VDDP 전압이 많이 줄어들었지만 VDDP를 사용하는 회로가 전체 DRAM에서 차지하는 부분이 많지 않아 VDDP 변화에 의한 전력소모 감소보다는 오히려 VDD/VDDQ가 0.1V 줄어든 것이 전력소모 감소에 기여하는 바가 클 것으로 생각됩니다.

 

칩당 용량증가 및 on-die ECC/ECS 지원

DDR5의 die 하나당 최대 용량은 64Gb로 DDR4의 16Gb에 비해 4배 증가했습니다. DRAM의 칩면적은 세대가 바뀌더라도 큰 변화가 없기 때문에 결국 데이터의 저장 밀도가 4배 가량 높아진 것인데, 고밀도로 저장된 데이터의 신뢰성을 확보하기 위해 DDR5에 on-die ECC(Error Correction Code)와 ECS(Error Check and Scrub) 기능이 추가 됐습니다.

On-die ECC는 128-bit data에 8-bit의 ECC check bit을 추가하여 128-bit data에 발생하는 1-bit 까지의 오류를 DRAM이 알아서 수정하는 기능입니다 (SEC, Single Error Correction). 메모리 컨트롤러에서 on-die ECC에 대해 특별한 고려 없이 read/write 동작을 수행하더라도 DRAM 내부에서 알아서 write 동작시에 ECC check bit을 계산하여 저장하고 read 동작시에 계산했던 check bit을 이용하여 syndrome을 계산하고 error가 있을 경우 1-bit에 대해 오류를 수정해서 데이터를 출력합니다. (아래 그림 참조) ECC Check-bit을 저장하기 위한 메모리 cell은 자유롭게 원하는 data를 읽거나 쓸 수 없고 check-bit 만을 저장할 수 있기 때문에 메모리 용량을 말할 때는 제외하게 됩니다. 예를 들어 64Gb DDR5 DRAM 칩의 경우 64Gb의 data를 저장할 수 있는 cell array와 4Gb의 ECC check-bit을 저장할 수 있는 cell array를 가지고 있어 실제로는 68Gb의 용량에 해당하는 cell array를 가지고 있습니다.

On-die ECC는 Data와 check-bit의 비율이 16:1이라 2-bit에 대해 error가 발생하면 이를 알 수 없는 한계가 있어, SECDED(Single Error Correction Double Error Detection) 수준의 보호가 필요하다면 메모리 컨트롤러에서 지원하는 ECC기능을 사용하고 DIMM에도 Data 저장 용량의 1/8에 해당하는 ECC check bit 저장용 DRAM 칩을 추가로 장착해야 합니다. 이러한 이유로 일반 DIMM 모듈은 64-bit의 data width를 가지지만 ECC를 지원하는 DIMM module은 72-bit의 data width를 가지고 있습니다. DRAM의 on-die ECC는 컨트롤러의 동작과 상관없이 항상 적용되기 때문에 메모리 컨트롤러의 ECC기능과 함께 사용할 수 있습니다.

JEDEC 스펙으로 비교하는 DDR4와 DDR5

DDR5 On-die ECC의 개요(자료 출처 – JEDEC DDR5 spec. JESD79-5A)

ECS는 DDR5의 on-die ECC 기능을 활용한 기능인데, DRAM이 사용되지 않을 때 DDR5 DRAM 내부에서 스스로 address를 증가시켜 가면서 저장된 data를 읽어보고 1-bit error가 검출되면 이를 수정하여 다시 data를 저장하는 기능입니다. DRAM이 self-refresh 모드에 들어가서 사용되지 않을 때 자동으로 ECS가 동작하게 할 수도 있고, DRAM에 대한 read/write 동작이 수행되는 중에도 메모리 컨트롤러가 DRAM이 사용되지 않는 시점을 찾아 ECS 동작의 실행을 요청할수도 있습니다. JEDEC 스펙은 적어도 24시간안에 모든 address를 순회 할 수 있는 빈도 이상으로 ECS 기능을 수행할 것을 권장합니다.

 

Bank 구조

DRAM 구조에서 Bank는 용량은 작지만 DRAM으로서의 동작이 가능한 세부 단위이기 때문에 다른 Bank 끼리는 서로 독립적으로 동시에 read/write 동작을 수행할 수 있습니다. 다만 DRAM 패키지의 패드로 부터 각 Bank 까지의 회로는 공유되기 때문에 다른 Bank로 가는 read/write 명령 사이에 tCCD 만큼의 시간 간격은 확보해야 합니다. DDR의 세대가 발전하면서 Bank의 개수는 계속 늘어났고 많은 수의 Bank를 효율적으로 구현하기 위해 DDR4 부터 Bank를 4개씩 묶은 단위인 Bank Group이라는 단위가 등장하게 되었습니다. Bank Group을 만들면 얻을 수 있는 장점은 다른 Bank Group에 속한 Bank 끼리는 회로를 공유하는 부분이 적기 때문에 명령어 사이의 시간 간격을 같은 Bank Group내의 Bank들 보다 짧게 할 수 있다는 점 입니다. 다른 Bank Group 사이에 속한 Bank 사이의 명령어간 시간 간격을 tCCD_S, 같은 Bank Group에 속한 Bank 사이의 명령어간 시간 간격을 tCCD_L 이라고 정의하는데, tCCD_S < tCCD_L 이므로 Bank Group을 여러개로 나눌 수록 보다 짧은 간격으로 DRAM에 read/write 명령을 보낼 수 있는 확률이 늘어 납니다.

DDR4에서는 용량과 패키지당 data width (x4/x8/x16)와 상관없이 16개의 Bank가 4개의 Bank Group으로 나뉘어 있었습니다. DDR5에서는 용량과 패키지당 data width에 따라 Bank 수와 Bank Group의 수가 바뀌는데 Bank Group의 수가 8개까지 늘어날 수도 있기 때문에 DDR4 대비 명령어를 보다 효율적으로 스케쥴링 할 수 있는 가능성이 열렸습니다.

 

Channel 당 Bit-width 및 Burst Length

DRAM은 구조상 cell array의 동작속도를 높이는 것은 쉽지 않기 때문에 DRAM을 읽고 쓰는 단위인 Burst Length(BL)를 늘리는 방향으로 진화해 왔습니다. Cell array의 동작 속도가 변하지 않더라도 한번에 연속된 cell을 2개/4개/8개/16개씩 읽거나 쓰면서 IO를 cell array보다 2배/4배/8배/16배 빠르게 동작시키면 DRAM의 대역폭은 IO 동작속도 향상에 의해 늘어나게 됩니다. 앞에서 DDR4 대비 DDR5의 최대 대역폭이 두 배로 늘어났다고 언급했는데, IO 동작속도를 두배로 늘리기 위해 BL도 8에서 16으로 증가했습니다.

다만 이 경우 64-bit data width를 기준으로 BL이 16으로 늘어나면 한번에 읽고 쓰는 단위가 64-bit(= 8Byte) x BL16 = 128 Byte로 늘어나고 Intel/AMD CPU의 일반적인 cache line 크기인 64B보다 커져서 비효율이 발생하게 됩니다. 이 문제를 해결하기 위해 DDR5에서는 한 channel의 data-width가 64-bit에서 32-bit으로 줄어들었습니다. 따라서 64-bit DIMM 하나에 DDR4는 1개의 64-bit channel이 포함되며 DDR5는 2개의 32-bit channel로 구성되게 됩니다.

 

Command/Address Pin 수와 Bus Inversion

앞에서 DDR4 대비 DDR5의 BL이 8에서 16으로 두 배 늘어났다고 했는데, 이 경우 clock cycle수 기준 명령어간의 최소 간격은 두 배로 늘어나게 됩니다. (DDR5의 clock 속도가 두 배 빨라졌기 때문에 명령어 간의 물리적 시간은 늘어나지 않습니다.) Clock의 rising/falling edge를 모두 사용하는 DDR 전송을 고려할 때, BL8의 data를 전송할 때 필요한 시간은 4 cycle, BL16의 data를 전송할 때 필요한 시간은 8 cycle이 되는데 연속적으로 read나 write 명령을 인가하면서 BL 단위에 overlap이 발생하지 않으려면 명령어 사이의 최소 간격도 4 cycle에서 8 cycle로 늘어나야 합니다.

DDR5에서는 cycle수 기준으로 늘어난 명령어 간격을 command/address pin수를 줄이는데 활용했습니다. 시간 간격에 여유가 생겼기 때문에 DDR4에서 1cycle 에 전달되던 command/address가 DDR5에서는 2 cycle 동안 전달됩니다. 덕분에 DDR4에서 26-pin이던 command/address pin수는 DDR5에서는 14-pin으로 줄었고, 줄어든 pin 수는 패키지 사이즈와 볼 수를 줄여 가격을 낮추고 PCB 설계를 용이하게 하는데 도움이 됩니다.

Command/address가 2 cycle에 걸쳐 전달되는 변화와 함께 Bus Inversion을 적용하는 방식에도 변화가 생겼습니다. DDR4에서는 data pin에 bus inversion (DBI)을 적용했는데 DDR5는 data pin 대신 command/address pin에 bus inversion(CAI)을 적용합니다. (DBI에 대한 자세한 설명은 이전 글 참고) Bus inversion의 효율을 높이려면 bus width가 넓어야 하는데 가장 많이 쓰이는 x8 패키지 기준으로 DDR4의 command/address pin은 26-pin으로 data pin의 8-bit보다 넓은 width를 가지더라도 command/address 전송이 1 cycle 만에 끝나버려 연속된 cycle 사이에서 bus transition을 줄이는 방식인 DBI를 적용할 수 없었습니다. DDR5에서는 command/address가 2 cycle에 전송되는 변화가 생겼기 때문에 8-bit width를 가지는 data 보다 넓은 14-bit의 width를 가지는 command/address쪽에 CAI를 적용할 수 있었습니다.

 

Self Refresh 방법의 개선

DRAM은 data를 잃지 않기 위해서 일정한 시간안에 모든 address를 한번씩 읽어주는 refresh 동작이 필요합니다. Refresh 동작은 DDR의 종류와 용량에 따라 다르지만 대략 4000~8000ns의 refresh interval(tREFI) 마다 200~400ns의 refresh cycle (tRFC) 동안 이루어 지며, refresh 동작이 이루어 지는 동안 DRAM은 read/write 동작을 수행할 수 없습니다. DDR4에서는 refresh 동작을 모든 bank에 대해서 동시에 수행(All Bank Refresh)해야 했지만 DDR5에서는 각 Bank Group 마다 하나의 Bank만 refresh를 수행할 수 있는 Same Bank Refresh명령이 추가 됐습니다. (Same Bank Refresh의 Bank Group/Bank mapping 예제는 아래 그림 참조) Same Bank Refresh명령을 사용할 경우 refresh 명령은 Bank Group의 있는 Bank 수만큼 더 자주 수행해야 하지만 반대 급부로 Bank Group 마다 refresh 동작중인 Bank를 제외한 나머지 Bank들은 계속 read/write를 수행할 수 있는 장점을 얻을 수 있습니다. 메모리 컨트롤러의 구현에 달려있긴 하지만 Bank 마다 사용되지 않는 시간을 잘 찾아서 Same Bank Refresh 명령을 인가하고 나머지 Bank 들은 계속해서 동작할 수 있다면 refresh 동작으로 인한 성능저하를 피할 수 있습니다.

JEDEC 스펙으로 비교하는 DDR4와 DDR5

DDR5의 Same Bank Refresh 동작이 이루어지는 예 (모든 Bank Group에서 Bank 2만 refresh) – 그림 출처: Micron White Paper – Micron DDR5 SDRAM: New Features (Reference 4.)

 

마치며…

이 글에서 다룬 항목들 외에도 DDR4/DDR5 사이에는 많은 차이점이 존재 하지만 아날로그 회로의 특성과 관련된 항목 및 test/repair와 관련된 항목은 DDR4/5의 유저 관점에서는 중요하지 않을 것으로 판단되어 다루지 않았습니다. 보다 자세한 차이점을 알고 싶다면 References 섹션의 항목들을 함께 확인하는 것도 좋을 것 같습니다. JEDEC spec.을 보기 위해서는 돈을 지불해야 하지만 Micron에서 공개한 white paper는 누구나 읽어 볼 수 있습니다.

 

References

  1. JEDEC DDR5 spec.
  2. JEDEC DDR4 spec.
  3. Micron white paper – DDR5 SDRAM: More Than a Generational Update
  4. Micron white paper – Micron DDR5 SDRAM: New Features

You may also like...

7 Responses

  1. 이훈 댓글:

    안녕하세요!! 우선, 양질의 정보가 담긴 글을 정말 잘 읽었습니다!! 덕분에 DDR5, DDR4의 차이점을 쉽게 이해할 수 있었어요. 궁금한 사항이 생겨서 댓글을 남겼습니다. DDR5와 DDR4에서 아날로그/디지털 회로적인 차이점에 대해 설명해주실 수 있나요?? 간단하게라도 설명해주신다면 정말 감사합니다…!!

    • 골수공돌이 댓글:

      질문의 범위가 넓어서 대답을 드리기는 힘드네요. DDR4/5 내부회로 구현과 관련된 내용이 궁금하시면 ISSCC나 JSSC에 게재된 논문을 DDR4나 DDR5 키워드로 검색해서 읽어보시는 것을 추천드립니다.

  2. 영석 댓글:

    안녕하세요, 좋은 글 잘 읽었습니다. 궁금한 점이 있는데, BL이 16이 될 때 ddr4와 같은 freq면 일반적으로 2배 더 느려질 것(늘어난 BG 수를 고려하지 않았을 때) 같은데도 불구하고 대역폭이 향상된 것은 I/O frequency 또한 높아졌기 때문인 건가요?

    • 골수공돌이 댓글:

      제가 질문하신 내용을 잘 이해했는지 자신은 없지만 일단 이해한대로 답을 드리면, data rate (IO frequency)도 두배로 늘어났기 때문에 DDR4에서 8개의 burst(BL8)를 전송할 시간동안 DDR5는 16개의 burst(BL16)를 보낼 수 있습니다.

  3. 도망자 댓글:

    안녕하세요. 글 잘 봤습니다. 중간에 tCCD 관련 내용이 있는데, tCCD_L 을 늘리면 max Frequency를 높일 수 있다고 알고있는데 높아지는 이유가 뭔지 알 수 있을까요?

    • 골수공돌이 댓글:

      DRAM은 외부와의 인터페이스인 IO 회로는 클럭 주파수에 맞춰서 동작하지만 내부는 클럭 주파수가 아니라 회로 사이의 상대적인 delay 관계에 의해 동작하며 이 delay는 클럭 주파수에 상관없는 일정한 값입니다. 예를 들어 tCCD_L의 절대값이 2ns 라고 가정하면 (실제값은 아닙니다) 1GHz clock(1ns 주기)을 사용할 땐 tCCD_L은 2 cycle이 되고 2GHz clock(0.5ns 주기)을 사용할 땐 tCCD_L이 4 cycle이 되는 것입니다.

댓글 남기기