DDR基础知识

简介

内存是计算机中重要的组成部分,主要为CPU计算时提供一个数据的临时存储的场所。CPU在处理数据前,会将数据从外存复制到内存中,然后再处理内存中的数据,如果需要将结果保存,则一次性写回外存,这样便大大提高CPU的处理效率。

图1

数据为什么要先被复制到内存中呢?因为CPU每秒执行的速度可达几十亿次,处理的数据量非常庞大,而这些数据必定要从存储设备流向CPU,然后再从CPU流向存储设备。如果要最大限度发挥CPU的性能,存储数据的设备便要支持CPU的高速读写。打个比方,把CPU当作一辆跑车,如果它在普通的道路行驶,那它是跑不快的,但如果在高速高路上,那便可以发挥它最大的性能。内存是一种动态随机存储器,相对外存,有着更高的读写效能,所以被用来当作临时存储器或中转站。

在计算机上使用的内存是DDR SDRAM,全称Double Data Rate SDRAM,译为双倍速率同步动态随机存储器,简称DDR。目前DDR已经发展到了第五代,即DDR5,其最高带宽达57.6GB/s,目前PCIE 5.0 X4的SSD最高也就10多G每秒,速度上的差距还是比较大的。如果有一天SSD的速度足够快(当然前提还要解决其它如把SSD当作内存引起的问题),那它或许有机会当作内存来使用。

图2

还有一种内存称为LPDDR,全称Low Power Double Data Rate SDRAM,中文意为低功耗双倍数据速率内存,又称为mDDR(Mobile DDR SDRM),主要针对于移动端电子产品。LPDDR4X可以看作是LPDDR4的省电优化版本,比LPDDR4功耗更低、更省电。

内存模组

内存模组即我们常说的内存条,由DDR颗粒,EEPROM,外围线路和金手指组成。

图3

DDR颗粒

在图1的内存条中,从标签纸中知道是容量为4GB,有4个DDR颗粒,每个1GB,共同组成了一条内存。DDR颗粒的厂商不多,常见的有三星(samsung),镁光(micron),海力士(hynix)等,市面上大多数内存条品牌厂商都是直接采购这些颗粒,然后自己搭线路组装的。

EEPROM

EEPROM用来存储内存条的参数信息,如工作频率、工作电压、速度、容量、电压与行、列地址带宽等,这些参数称为SPD,它在内存条生产时便会将对应DDR的信息写入其中。SPD一般是挂在SMBUS上,CPU在初始化内存时,会通过SMBUS去读取SPD信息,完成后续一序列的初始化流程。

外围线路

内存条中的辅助性线路,保证内存可以稳定运行。

金手指

金手指是DDR颗粒组成一个完整的内存后留给CPU访问的接口,主板上有对应的内存插槽,将金手指内存插槽后,CPU就可以访问内存了。

DDR的组成

了解完内存条的组成,接下来再看看DDR的相关概念及其内部组成。在DDR内部中,涉及多个概念,下面说几个比较常见的。

图4

Die

Die指的是芯片晶圆单元。

Package

将die按照一定形式封装起来便称为Package,通俗的讲就是DDR颗粒,如图3所示。

Channel

首先需要指出的是,这里的channel是DDR端的,而非内存控制器中的channel,请注意区分。channel指的是一组die的信号,如果多个die并联共用一组信号,那也算是一个channel。

图5

图5中,分别有两个die共用Channel A和Channel B,既有两个channel。

Rank

在搭建DDR线路时,一个内存控制器通道中DQ的信号需要一一对应到DDR的DQ信号中,而所使用的DDR颗粒容量较低,可能导致组合成一个所需的容量时,DDR颗粒的DQ信号数量超出内存控制器的DQ信号。这种情况便可以使用多Rank的设计方法,将DQ信号并联起来,同一个Rank的die的CS信号也连接在一起,然后便能通过CS信号来选择使用哪一个rank了,当然这是内存控制器自动处理的。

举个例子,比如现在需要生产一条8GB的内存,目前只有1GB,16bit的DDR颗粒。如果是设计成单Rank,4个颗粒便组成了64bit,但只有4GB,此时设计成双Rank,同样还是64bit,容量可以增大一倍,达到8GB,这样就能满足需求了。

Bank

Bank位于Die内部中,由行列解码器,传感放大器和存储阵列组成。在阵列中,行称为Page。行和列交叉的单元为最小的存储单位,称为cell,一个可存储一定位宽的数据,如8bit,16bit。一个die通常有多个bank,如图4中,有8个bank。

容量计算

知道了上述的几个概念后,我们便可以计算一个DDR模组的容量了。假如有一个die的列地址有10bit,行地址有17bit,bank数8个,位宽16,那可以计算die的容量为:2^10 * 2^17 * 8 * 16bit = 1024 * 131072 * 16 byte = 131072 * 16KB = 2048MB = 2GB

即此die容量为2GB,如果要组成单rank的DDR模组,可组成8GB;如果组成双rank,则可达16GB。

双通道内存组合

在CPU中,一般会有两个内存控制器,这两个内存控制器可相互独立工作,每个控制器控制一个内存通道。在这两个内存通道CPU可分别寻址、读取数据,从而使内存的带宽增加一倍,数据存取速度也相应增加一倍(理论上)。

流行的双通道内存构架是由两个64bit DDR内存控制器构筑而成的,其带宽可达128bit。因为双通道体系的两个内存控制器是独立的、具备互补性的智能内存控制器,因此二者能实现彼此间零等待时间,同时运作。两个内存控制器的这种互补“天性”可让有效等待时间缩减50%,从而使内存的带宽翻倍。

虽然这项新规格主要是芯片组与主机板端的变化,然而双通道存在的目的,也是为了解决内存频宽的问题,使主机板在即使只使用DDR400内存的情况下,也可以达到频宽6.4GB/s。双通道是一种主板芯片组所采用新技术,与内存本身无关,任何DDR内存都可工作在支持双通道技术的主板上。