问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

DDR内存技术详解:从SDRAM到DDR5的发展历程

创作时间:
作者:
@小白创作中心

DDR内存技术详解:从SDRAM到DDR5的发展历程

引用
CSDN
1.
https://blog.csdn.net/weixin_38345163/article/details/140062879

DDR(Double Data Rate)内存技术是现代计算机系统中不可或缺的一部分,从最初的SDRAM发展到现在的DDR5,经历了多次技术革新。本文将详细介绍DDR内存的技术发展历程、内部结构、预取机制、突发长度、预充电和写均衡等关键技术点,帮助读者深入了解DDR内存的工作原理。

DDR的技术发展

下表总结了从SDRAM到DDR5的主要技术参数:

标准名称
内核时钟(MHz)
I/O时钟(MHz)
工作电压(v)
预取位数
突发长度
数据速率(MT/s)
数据带宽(GB/s)
拓扑
SDRAM
100-166
100-166
3.3
1
/
100-166
0.8-1.3
T
DDR
133-200
133-200
2.5
2n
2
266-400
2.1-3.2
T
DDR2
133-200
266-400
1.8
4n
4
533-800
4.2-6.4
T
DDR3
133-200
533-800
1.5
8n
8
1066-1600
8.5-14.9
Fly-by
DDR4
133-200
1066-1600
1.2
8n
8
2133-3200
17-21.5
Fly-by
DDR5
?
1600-3200
1.1
16n
/
3200-6400
32
Fly-by

值得注意的是,DDR4引入了bank group的概念,使得在相同的预取位数下,I/O时钟可以加倍。由于上下边沿采样数据,数据速率又是IO时钟的2倍关系。数据速率和带宽的关系是:数据速率 * 位宽 = 数据带宽。

DDR4内部框图


图:MT40A1G8 的内部框图

1Gx8表示SDRAM具有8位的I/O数据位宽度(参见图中右侧的DQ[7:0]信号)。所以8G也有2Gx4,4位I/O宽度,512M x 16的16位I/O数据位宽度。

每个内存阵列为65536x128x64,称为一个bank,4个bank组成一个bank组,共有4个bank组,所以总容量为655361286444= 8Gb。这里注意存储的最小单元就是1bit。

具体来说,在65536x128x64的每个存储阵列规格中,65536代表行数,每行存储128*64=8192位的数据,同时也是图中Sense放大器与I/0栅极、DM掩码逻辑之间传输的位宽。每行有1024列,每列包含8位数据。由于DDR4预取宽度为8n,一次访问需要8列数据,即64位。所以每一行都有128个64位,这就是65536x128x64位中的128x64的来源。

DDR3内部框图


图:MT41J256M8 的内部框图

DDR3中没有bank组的概念,只有8个bank。

32768x128x64的每个存储阵列规格中,32768代表行数,每行存储128*64=8192位的数据,同时也是图中Sense放大器与I/O栅极、DM掩模逻辑之间传输的位宽。每行有1024列,每列包含8位数据。DDR3预取宽度为8n,一次访问需要8列数据,即64位。所以每一行都有128个64位。

容量计算:

以256Meg x 8这个规格的内存计算,32k *128 * 8 *8 *8 = 2Gb,这3个8分别来自bank,位宽,prefetch。

DDR的Prefetch预取

以下面的DDR3读取为例,下图中共有8条数据线,每一条数据线都是一个8选1模拟开关的输出,每个输出前面还有8个输入,这个8个输入分别来自8个bank,8个输入会先存在fifo中缓存,MUX读出的时钟就是内核时钟的4倍,由于DDR的时钟上下边沿采样,所以读出8个数据的时间就是1个内核时钟,8个输出就对应64个输入,prefetch的8n的n是指DQ的IO位宽,表示以位宽的8倍来预取数据,n也就是DQ的数量一般可以是4,8,16,对应预取数据就是32,64,128。

读取流程是先激活行地址,锁存行数据到Sense放大器,激活列地址,数据送到输出缓存,利用Sense放大器值刷新行数据,关闭位线,关闭行线,位线预充电。

DDR的bank grounp

标准型DDR的总线位宽是64bit,若进行16倍预取,总共有128Byte的数据,超过了目前主流处理器的 Cacheline size(用 于处理器缓存的基本数据单元64Byte 的数据通道,由于Cacheline的 限制,DDR4 没有将预取加倍,而是使用 Bank Group 技术,通过两个不同 Bank Group 的8倍预取来拼凑出一个16倍的预取,当DRAM获得了两份数据的读命令,并且这两份数据的内容分布在不同的Bank Group中时, 由于每个Bank Group可以独立完成读取操作,两个Bank Group 几乎可以同时准备好这两份8倍数据。然后这两份8倍数据被拼接成16倍的数据,数据的传输速度达到内部时钟频率的16倍,较DDR3提升2倍。

DDR的突发长度Burst Length

突发长度BL是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度,DDR3内部配置采用了8n prefetch(预取)来实现高速读写,这也导致了DDR3的BL一般都是8。当然也有为4的设置(BC4),是指另外4笔数据是不被传输的或者被认为无效。BL8还是BC的配置在MR0寄存器配置,这里也可以看出A0~A2是用在了burst的配置上,所以DDR3、4的列地址前三位不用做寻址。

预充电Precharge

以下图DDR3的BL8读取为例,在发出当前读取的read指令后的第5个周期后发送PRE指令,经过tRP时间后可以激活Row b行操作,图中的tRP为8个时钟周期,比较耗时。

图:ddr3的read操作

下图为DDR的单个CELL的示意图,预充电就是把位线上充电到vcc / 2 ,读的过程是选通字线;

如果Cbit电容有电且大于vcc / 2 ,Cbit电容放电,位线上的电压会大于vcc / 2 ,再与vcc / 2 经过差分放大后输出1。

如果Cbit电容没电且小于vcc / 2 , 给Cbit电容充电,位线上的电压会小于vcc / 2 ,再与vcc / 2 经过差分放大后输出0。


图:单CELL的示意图

写均衡Write leveling

DDR3引入Fly-by拓扑,导致地址、命令和时钟不同时到达每个DDR芯片,所以引入写均衡Write leveling来解决时序问题。

Write leveling 是一个完全自动的过程。控制器(CPU或FPGA)不停的发送不同时延的DQS 信号,DDR3 SDRAM 颗粒在DQS-DQS#的上升沿采样CK 的状态,并通过DQ 线反馈给DDR3 控制器。控制器端反复的调整DQS-DQS#的延时,直到控制器端检测到DQ 线上0 到1 的跳变(说明tDQSS参数得到了满足),控制器就锁住此时的延时值,此时便完成了一个Write leveling过程;同时在Leveling 过程中,DQS-DQS#从控制器端输出,所以在DDR3 SDRAM 侧必须进行端接;同理,DQ 线由DDR3 SDRAM颗粒侧输出,在控制器端必须进行端接;

图:写均衡过程示意图

参考资料

  1. SDRAM part detail | Micron Technology Inc.
  2. DDR3基本概念6 - Write leveling(写入均衡)-CSDN博客
  3. 介绍DDR3和DDR4的write leveling以及DBI功能 - 嵌入式技术论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛!
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号