DDR4和DDR5

Created
Dec 23, 2021 01:28 AM
Tags
Property
Property 1
 
最近,网络上关于DDR5的介绍越来越多了。本文根据网络上搜集到一些信息,汇总并翻译成了中文,其中有不少是本人自己的理解,不对之处,还望来信指正。
 
速度和频率(Speed and Clock Rate
根据DDR4规范,DDR4数据传输的最高速度为3200MT/s,即一秒钟可以传输3200M笔数据,如果是一颗x4的颗粒(Device),那么一秒钟就可以传输3200Mx4 bits的数据。如果要换算成Byte单位,只需要除8即可得到,为1.6GB/s。由于DDR类型颗粒上下边沿都会传输数据,实际Clock的频率为3200MT/s的一半,即1.6GHz的频率。
对比DDR5来说,根据网上信息,最高数据传输速度为6400MT/s,为DDR4的一倍。时钟频率也一样,翻了一倍,为3.2GHz。所以DDR5从速度和频率的角度上来看,比DDR4有了明显的提升。
 
预取(Prefetch
DDR5是如何实现速度和频率均翻倍的呢?其实从DDR开始,基本上数据传输速度的增加都是通过翻倍预取(prefetch)来实现的。例如:
SDR SDRAM
SDRAM中的S是Sychronous的意思,其含义是指DRAM工作采用的时钟为外部的同步时钟。DRAM的含义是Dynamic Random Access Memory的意思。Dynamic主要是相对SRAM的S来说的,S的意思是Stastic,静态的意思。SRAM通常被用来制造芯片内部的Cache。Random Access的意思是读写延迟并不随访问存储空间的具体物理位置不同而不同。SDR是指SDRAM没有采用预取功能,所以DRAM的核心(Core)频率与IO频率一致。任何时候当DRAM选中的某行某一列吐出一笔数据的时候,这笔数据就会被直接放到了IO接口上输出。此时数据传输的频率与DRAM核心频率一致,最高可以达到133Mhz。
DDR SDRAM
当到了DDR时代,每当访问DRAM选中的某行中的某一列的时候,DRAM颗粒直接预取下一列,这时每一个Core的时钟周期,都将产生两笔数据。当把这两笔数据以串行的方式放到IO接口上的时候,你需要两倍于Core时钟的频率才能采样到两笔数据。或者,仍然采用Core的时钟频率,但需要上下边沿均采样才能获得这两笔数据。因此,这种可以2n(两倍)预取的SDRAM被称为DDR SDRAM,其中DDR是Double Data Rate的意思。由于DRAM的核心速度有所发展,可以从100MHz到200MHz。所以,DDR时代数据传输速度可以从200MT/s到400MT/s。其产品规格从DDR200到DDR400不等。
DDR2
当发展到了DDR2,DRAM的核心频率并没有比DDR时代有显著增加,最高频率从原来的200MHz增加到266MHz。但由于预取从2n增加到了4n,数据传输的速度还是有显著的增加,从400MT/s (DDR)到1066MT/s(LPDDR2)。由于IO口仍然采用上下边沿采样数据,所以数据传输所使用到的时钟信号仍然为接口速度的一半,例如1066MT/s的颗粒,我们需要提供533MHz的时钟。但要完成4笔数据的传输,我们需要两个时钟周期才可以完成。而DRAM核心内部,其时钟频率只有266MHz。所以,每一个DRAM核心时钟周期,DRAM都会产生4笔数据。而IO口时钟是533MHz,因此,每个IO口时钟周期要完成两笔数据传输,又因为上下边沿均可采样,那么IO口一个时钟周期就正好能够完成两笔数据的传输。
DDR3
DDR3的预取增加到了8n,即每当读取某一列的时候,都会一共读取8列的数据。然后,8笔数据将以串行的方式放到IO口上。所以当DRAM的核心频率变化不大的时候,预取的越多,IO口的速度就会越快。如果DDR3的核心频率从100MHz到266Mhz,根据8n预取的关系,其数据传输速度可以达到800MT/s到2133MT/s。当全世界开始使用DDR3内存条的时候,主流处理器的Cacheline size都已经达到了64Byte。当内存条位宽为64bit的时候,8n预取,BL8都正好吻合一个Cacheline的大小。例如,一个核心时钟周期内,DDR3内存条所有DRAM颗粒将会产生8笔64-bit,总共有512-bit数据(64-Byte)。这些数据将会透过DRAM的IO口输出,由于上下边沿采样,所以IO口的频率应该是核心时钟频率的4倍。如266Mhz的核心频率,IO频率应该是266Mhz乘以4得到1066Mhz,数据传输速度将会是这个IO频率的两倍2133MT/s。
DDR4
按照道理来说,如果DDR4需要获得更快的数据传输速度,根据发展来看,预取需要增加到16n。但是这样一来,与BL8(Burst Length为8),64bit的位宽以及Cacheline Size矛盾。解决方案可以是:
一、预取16n,修改内存条位宽到32bit。
二、预取16n,不改变内存条位宽和BL8,内部丢掉后面的8n数据。
三、预取16n,BL16,不改变内存条位宽,修改cacheline大小。
四、预取16n,BL16,不改变内存条位宽,不修改cacheline大小,修改内存控制器尽量使用后8n数据。写操作可能需要先读后改等。
第一种方案对内存条以及内存控制器改动均大。第二种方案明显没有必要因为性能并没有提升。第三种方案如果修改cacheline大小则整个系统的架构要变化。第四种方案改动方案居中,需要获得性能和改动之间的一个平衡点。
最终,DDR4放弃了16n预取而保持了8n预取。但此时引入了新的概念 - Bank Group。这个概念的核心思想是通过两个不同Bank Group的8n预取来拼凑出一个16n的预取。当DRAM颗粒获得了两笔数据的读命令,并且这两笔数据的内容分布在不同的Bank Group中。由于Bank Group可以独立完成读取操作,两个Bank Group几乎可以同时准备好这两笔8n数据。然后,这两笔8数据被拼接成16n数据放到IO口上。IO口的数据传输速度就可以达到DDR3的两倍了。
但这种设计存在一个问题,如何保证下一读操作的Bank Group与当前Bank Group不是同一个?虽然在内存控制器地址解码的时候,我们可以把连续Cacheline分到不同的Bank Group,但是如果是Random的读操作,两个连续读操作的Bank Group可能恰好是同一个。那么就会出现,在一个Core时钟周期内,DRAM颗粒无法准备好两笔8n数据。这样,两笔读操作之间就会产生额外的等待时间。这些较长的等待时间在DDR4规范中被标注为_L,无需等待的被标注为_S。例如tCCD,列到列的等待时间,例如两笔读操作之间的时间,如果是相同的Bank Group,该时间标注为tCCD_L(6 clock),而如果是不同的Bank Group,则标注为tCCD_S(4 clock)。如果BL8需要4clock传输8笔数据,连续读操作对于不同的Bank Group就刚好达到16n预取性能。但如果是相同的Bank Group,则每向外吐8笔数据,要停4笔数据的时间,才能继续传输8笔。拿DDR4 3200MT/s DRAM来说,实际性能只有3200x8/12 = 2133MT/s。除了读操作外,写也会遇到类似问题。
DDR5
终于,到了DDR5时代,预取从8n增加到了16n,并且一个通道的数据位宽从原来的64bit降为32bit。这样一来,通过16n预取,配合BL16就仍然保证了Cacheline的大小还是64Byte。
32bitxBL16/8 = 64Byte
需要注意的是Bank Group的概念并没有移除,所以DDR5对比DDR4,在数据传输速度上,因为16n的原因,仍然有一倍的提升。目前规范最高能够支持到6400MT/s,为DDR4规范定义的两倍。
 
电源
DDR5在电源方面也有了一些变化。首先,核心的VDD电压从DDR4时代的1.2v降低到现在的1.1v。这无疑会带来一定程度的节能,但也增加了DRAM的设计难度。除了核心电压有所改变外,DDR5的供电模块也从系统主机板移到了DDR5内存条上。该功能模块(PMIC)主要采用12v为输入,提供例如DRAM颗粒主电源,寄存器(RCD)电源,SPD芯片电源等等。更近的电源芯片无疑会带来更好的电源布局和更短的电源传输路径,但也会增加不少成本。
 
通道(Channel
在DDR4时代,数据通道的宽度为64-bit数据加上8-bit ECC,总共72条信号线。因为16n预取,DDR5的数据宽度降到了DDR4的一半,为32-bit,ECC还是8个bit。因此DDR5内存条面临两个选择,一是沿用原来DDR4差不多Size的DIMM,又或者换成比较短的规格。最后,DDR5选择了前者,但多出来的Pin被设计成了另一个通道。所以,在DDR5内存条上,设计了两个子通道(Sub-Channel)分布在DIMM的两边。每个子通道都有32-bit的数据加8-bit ECC。
 
命令与地址(Command/Address)
由于DDR5采用了两个子通道在同一根DIMM上,这导致每个子通道除了要提供40-bit的数据线外,还要额外提供命令与地址线。如果按照DDR4的设计,那么DIMM的pin将不够用。为了解决这个问题,DDR5开始命令与地址线将会进行混合编码,同时有些命令将会采用双cycle进行采样。即如果有10根信号线,那么一次传输通过双cycle进行采样,将会得到20个不同的命令与地址信号。这样有效的解决了DIMM上信号管脚不足的问题。
 
新功能(New Feature
根据Rambus网站介绍,DDR5在原来DDR4的基础上,增加或者增强了以下功能:
On-die ECC
Error Transparency mode
Post-package repair
read and write CRC mode
Reference:
https://www.eeweb.com/profile/ddan2025/articles/transitioning-from-ddr4-to-ddr5-dimm-buffer-chipsets
https://www.rambus.com/memory-and-interfaces/server-dimm-chipsets/ddr5-dimm-chipset/
https://blogs.synopsys.com/vip-central/2019/02/27/ddr5-4-3-2-how-memory-density-and-speed-increased-with-each-generation-of-ddr/
 
notion image
 
 
notion image