1 DDR技术衍进
1.1 RAM和ROM
- Eagle RAM是可读可写,并且速度很快,而ROM只能事先写,然后就只能读取,所以程序在运行过程中必须读写,就必须要有RAM存在
- ROM只作为储存用途,断电不会丢失数据;而RAM在断电的时候会丢失数据
对于RAM而言,分为SRAM和DRAM
类型 |
作用 |
特点 |
SRAM(Static Random Access Memory) |
它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据 |
优点是速度快,不必配合内存刷新电路,可提高整体的工作效率。缺点是集成度低,功耗较大,相同的容量体积较大,而且价格较高,少量用于关键性系统以提高效率。 |
DRAM(Dynamic Random Access Memory) |
DRAM只能将数据保持很短的时间。为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失 |
必须刷新,后面衍生出DDR,DDR2,DDR3,DDR4 |
刷新DRAM意味着从DRAM读取数据并直接将 其写回DRAM。DRAM由数百万个非常小的电 容器组成。这些电容器中的每一个都有一个 晶体管来让能量进出。电容器慢慢地失去能 量,如果DRAM不刷新,最终一个或多个电 容器会让能量消失,例如,1将变为0,因此 数据将丢失或损坏。几乎所有的计算机每秒 刷新DRAM很多次
1.2 DDR历代对比
SDR内存数据接口是一种完全同步的设计,其中数据仅在正时钟边缘捕获。(不支持DM DQS等)
DDR内存数据是一种真正的source synchronous设计,每个时钟周期使用双向数据选通捕捉两次数据。
DDR的历代衍进规律是电压更低,速度更快,容量更大。具体如下表:
GEN |
Re year |
Voltage |
Data rate |
Density |
Num of bank |
Prefetch |
Burst length |
DDR1 |
2000 |
2.5/2.6v |
200~400MT/s |
64Mb~1Gb |
4 |
2n |
2,4,8 |
DDR2 |
2003 |
1.8V |
400~800MT/s |
256Mb~4Gb |
4,8 |
4n |
4,8 |
DDR3 |
2007 |
1.5/1.35V |
800~2133MT/s |
512Mb~8Gb |
8 |
8n |
BC4,BL8 |
DDR4 |
2014 |
1.2V |
1600~3200MT/s |
2Gb~16Gb |
8,16 |
8n-prefetch+bank grouping |
BC4,BL8 |
DDR5 |
2020 |
1.1V |
3200~6400MT/s |
8Gb~32Gb |
8,16,32 |
16n-prefetch+bank grouping |
BC8,BL16,BL32 |
2 DDR关键技术
2.1 预取
除了电压,容量和IO的速率变化之外,DDR的衍进还包括Bank, Bank Group,Prefetch(预取)和Burst Length的演进,bank数越来越多,到DDR4出现bank group,prefetch也从2n增加到4n,8n。DRAM通过prefetch实现用比较低的核心传输频率来满足日益高涨的高速IO传输速率的需求。
在一个时钟周期中,同时将相邻列地址的数据一起取出来,这个是并排取出来的,相当于拓宽车道。并行取出DRAM数据,再由列地址0/1/2(DDR1使用列0,DDR2使用列0和列1,DDR3使用列0,1和2)选择输出。
- 核心频率:即内部存储颗粒工作的频率,现在很难提升,提升的花费也很大。n-prefetch需要内部存储单元在核心频率下多读n倍的数据(通过多条线来实现)。
- 时钟频率:指的是I/O缓存区的时钟频率,根据n-bites的prefetch,时钟频率是核心频率的n/2倍。
- 等效频率:即外部接口需要的频率,由于采用上下沿双触发,所以是时钟频率的两倍
从DDR1开始到DDR3很好理解,Prefetch相当于DRAM core同时增加了多条通路连到外面的IO口,来解决IO速率比内部核心速率快的问题,IO数据速率跟核心频率的倍数关系就是prefetch。
burst length的长度跟CPU的cache line大小有关。Burst length的长度有可能大于或者等于prefetch。但是如果prefetch的长度大于burst length的长度,就有可能造成数据浪费,因为CPU一次用不了那么多。所以从DDR3到DDR4,如果在保持DDR4内存data lane还是64的前提下,继续采用增加prefetch的方式来提高IO速率的话,一次prefetch取到的数据就会大于一个cache line的大小 (512bits),对于目前的CPU系统,反而会带来性能问题。
由于DDR3的8n预取体系结构,一个突发必须是8位。Burst Chop 4(BC4)模式使用内部控制信号仅选择要读取或写入的前4位数 据。因此,BL8和BC4的整个命令执行时间是相同的。如果使用 有效的数据周期和总时钟周期来计算效率,BC4的效率非常低 (低于50%)。对于大数据传输和高带宽应用,BC4不适合。burst chop机制的唯一真正好处是,它允许在Dual Rank存储器系 统中更好地利用数据总线
DDR4出现了Bank Group,这就是DDR4在不改变prefetch的情况下,能继续提升IO速率的原因。两组8位宽度的车道作MUX,相当于达到了16n预取的速度。DDR4 SDRAM可以对其内部银行组进行时分复用.
根据Bank Group的特性可知,如果要访问的数据都在同一个Bank Group中,那么Bank Group并不能带来性能上的提升。对于Bank Group,一个Bank Group预取8个,另一个独立的Bank Group预取8个。 Bank Group是独立的实体,因此它们允许一个列循环在一个银行组中完成,但是这个列循环不会影响另一个银行组中正在发生的事情。
2.2 DDR信号驱动
- DDR1-DDR3中使用SSTL接口
- DDR1中使用片外短接电阻,DDR2开始使用ODT
- DDR2-DDR3对于DQS/DQ/DM,使用ODT,对于CA,CLOCK使用片外端接
- DDR4 使用POD接口,仅有DQ/DQS/DM信号使用POD,并带有ODT
- DDR5 CK/CS/CA/DQS/DM信号均用POD接口,并带有ODT
ODT(On-Die Termination,片内终结)所谓的终结(端接),就是让信号被电路的终端吸收掉,而不会在电路上形成反射,ODT就是将端接电阻移植到了芯片内部,主板上不再有端接电路。
如果先前发出的信号不能被电路终端完全吸收掉而在电路上形成反射现象,就会对后面信号的影响造成运算出错。
ODT所终结的信号包括DQS、DQS#、DQ、DM等。这样可以产生更干净的信号品质,从而产生更高的内存时钟频率速度。而将终结电阻设计在内存芯片之上还可以简化主板的设计,降低了主板的成本。
Gen |
Data Group |
CA Group |
Control Group |
Clock Group |
Low-speed Group |
Loopback Group |
DDR1 |
SSTL |
SSTL |
SSTL |
SSTL |
CMOS |
NA |
DDR2 |
SSTL |
SSTL |
SSTL |
SSTL |
CMOS |
NA |
DDR3 |
SSTL |
SSTL |
SSTL |
SSTL |
CMOS |
NA |
DDR4 |
POD |
SSTL |
SSTL |
SSTL |
CMOS |
NA |
DDR5 |
POD |
POD |
POD |
POD |
CMOS |
POD |
SSTL(Stub Series Terminated Logic)接口标准也是JEDEC所认可的标准之一。该标准专门针对高速内存(特别是SDRAM)接口。SSTL规定了开关特点和特殊的端接方案。
SSTL标准规定了IC供电,IO的DC和AC输入输出门限,差分信号门限,Vref电压(固定为VDDQ/2)等。SSTL_3是3.3V标准,SSTL_2是2.5V标准,SSTL_18是1.8V标准,SSTL_15是1.5V。
SSTL最大的特点是需要终端匹配电阻,也叫终端终结电阻,上拉到VTT(VDDQ/2)。这个短接电阻最大的作用是为了信号完整性,特别是在1拖多的Fly-by走线拓扑下,还能增强驱动能力。
POD(Pseudo Open-Drain )是伪漏极开路电平,内部上拉到VDDQ,而不是SSTL的VDDQ/2,当驱动端的上拉电路导通,电路处于高电平时(也即传输的是“1”),此时两端电势差均等,相当于回路上没有电流流过,但数据“1”还是照样被传输,这样的设计减少了功率消耗。当驱动端输出低电平时,POD由于上拉电压高功耗会稍大于SSTL.
由于POD电平的这一特性,DDR4设计了DBI(数据总线翻转)功能。当一个字节里的“0”比特位多于“1”时,可以使能DBI,将整个字节的“0”和“1”反转,这样“1”比“0”多,相比原(反转前)传输信号更省功耗,如下表所示。
由于POD参考电平Vref大小会随着驱动强度,负载,传输线特性等不同而改变,DDR4数据信号的参考电平VrefDQ是由芯片内部产生,无对外管脚,只有地址信号的参考电平VrefCA. POD的VrefDQ通过配置寄存器值来调整,也就是VrefDQ training.
2.3 T型拓扑和FLY BY拓扑
DDR3 DDR4开始,主控外挂多个芯片时通常由两种布局方式,T型和fly by
T型:地址、命令和时钟到达每个DDR芯片的距离等长,意味着信号到达每个DDR芯片的时刻是同时的,同步切换噪声会叠加在一起。同时,走线分支较多,对信号完整性不利。好处是正因为地址、命令和时钟到达每个DDR芯片的距离等长,T型拓扑不需要做Write leveling。
Fly by:地址、命令和时钟的布线依次经过每一颗DDR芯片,信号依次到达每个DDR芯片,有效降低了同步切换噪声。减少了信号线的分支,借助于端接电阻,有效保证了信号的完整新。因为地址、命令和时钟到达每一颗DDR3芯片的距离不一样,需要进行Write leveling。
2.4 write leveling
Write Leveling是个完全自动的过程。写均衡调节过程描述:DDR控制器不停地调整DQS信号相对于CLK的延迟,DRAM芯片在每个DQS上升沿采样CLK管脚上的时钟信号,如果采样值一直低,则会将所有的DQ[n]保持为低电平来告知DDR控制器,tDQSS(DQS, DQS# rising edge to CK, CK# rising edge,在标准中要求为+/-0.25 tCK。tCK为CLK时钟周期)相位关系还未满足,如果发现在某个DQS上升沿,采样到此时的CLK电平发现了迁越(由之前的低跳变为高),则认为此时DQS和CLK已经满足tDQSS,同时通过DQ[n]向DDR控制器发送一个高,表征一个写均衡成功,同时DDR控制器会锁住这个相位差。
这样,在每个DRAM端,看到的CLK和DQS信号都是边沿对齐的。
t1:将ODT拉起,使能on die termination;
t2:等待tWLDQSEN时间后(保证DQS管脚上的ODT已设置好),DDR控制器将DQS置起;DDR memory在DQS上升沿采样CK信号,发现CK=0,则DQ保持为0。
t3:DDR控制器将DQS置起;DDR memory在DQS上升沿采样CK信号,发现CK=0,则DQ仍然保持为0。
t4:DDR控制器将DQS置起;DDR memory在DQS上升沿采样CK信号,发现CK=1,则等待一段时间后,DDR memory将dq信号置起。
CPU内部的内存控制器只能对DQS信号做延迟,不能做超前处理,所以CK要大于DQS信号线的长度,否则将不能满足tDQSS。
Write Leveling 需要主控支持,对于不支持Write Leveling的主控,只能采用T型布局,否正DDR3会通信失败或达不到额定频率,只能降频运行。
写均衡的进一步说明如下图
颗粒1的CK飞行时间1ns,颗粒2的CK飞行时间2ns,颗粒1和颗粒2的DQS飞行时间均为1ns. 如果不作写均衡,颗粒2的CK和DQS飞行时间偏差1ns,未对齐。经过调整后,控制器在发送颗粒1的DQS后,延迟1ns再发送颗粒2的DQS, 则颗粒1在1ns后收到对齐的DQS和CK,颗粒2在2ns后收到对齐的DQS和CK, 满足时序要求。
2.5 差分时钟
由于数据是在CK的上下沿触发,造成传输周期缩短了一半,因此必须要保证传输周期的稳定以确保数据的正确传输,这就要求CK的上下沿间距要有精确的控制。
为了提高时钟抖动引起的精度问题,DDR增加了一个差分时钟。 SDR设备使用上升时钟边缘的中点来锁存数据,因此会受到漂移 的影响。DDR使用CK和CK#的交叉点。使用交叉点而不是中点 有助于消除抖动的影响并增加边距。
CK#起到触发校准作用,因为温度、电阻性能的改变等原因,CK上下沿间距可能发生变化,此时与其反相的CK#(CKN)就起到纠正的作用(CK上升快下降慢,CK#则是上升慢下降快)。
2.6 数据选取脉冲DQS
DQS功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗8bit DRAM芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由主控芯片发来的DQS信号,读取时,则由DRAM芯片生成DQS向主控发送。
读时是输出,边缘与读出的数据对齐。写时是输入,中心与写数据对齐。
DDR为什么要有DQS呢?在纯同步系统中,数据输出和捕获引用一个公共的、自由运行的系统时钟。然而,当输出访问时间和飘移时间之和接近数据bit传 输时间(数据速率的倒数)时,此时就到达这种系统的最大数据速率了。
尽管为早期数据发射允许提高数据速率,但由于温度、电压或负载的变化,这些技术不考虑数据有效窗口(或数据眼)相对于任何固定时钟信号移动的事实。 因此,为了实现更高的数据速率,数据选通信号被添加到DDR设备中。
假设所有信号飞行时间是1ns控制器仅传输一个clk的情况:
- 在写的过程中没有问题。数据信号可以与时钟信号同步,一切正常。如果轨迹长度匹配,则可以使用比飞行时间更紧的计时公差。
- 在读的过程中出现了一个问题。控制器必须首先将时钟发送到内存,是在1ns后到达内存。然后内存向控制器发送数据位,这需要另一纳秒的时间。有2纳秒的偏差,这限制了传输速度
2.7 TDQS
功能与DQS相同,只是当两种不同的DIMM混合应用在同一个系统时,DQS的负载就会不同,这样会造成信号完整性问题,TDQS就是为了解决这个问题的。当TDQS使能时,DM禁止,TDQS和TDDS提供终端电阻。TDQS与DM共用一个物理引脚。读时是输出,边缘与读出的数据对齐。写时是输入,中心与写数据对齐。
X8的内存条中每8bit需要一对DQS,而X4的内存条中每4bits需要一对DQS.即8bits的X4内存条需要两对DQS,而X8内存条需要1对DQS,这就造成DQS信号的负载不均衡,从而引起SI问题。因此,X4内存条的其中一对DQS信号连接X8内存条的TDQS上进行端接,并开启TDQS功能,从而保证负载均衡。
2.8 数据掩码技术
数据掩码技术不是DDR所特有的,但对于DDR来说也是比较重要的技术 为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。
DQM(Data I/O Mask)信号的作用就是对于突发写入,如果其中有不想存入的数据,就可以运用DQM信号进行屏蔽。DQM信号和数据信号同时发出,接收方在DQS的上升与下降沿来判断DQM的状态,如果DQM为高电平,那么之前从DQS中部选取的数据就被屏蔽了。
DQM由主控芯片控制,为了精确屏蔽一个P-Bank位宽中的每个字节,每个64bit位宽的数据中有8个DQM信号线,每个信号针对一个字节。这样,对于4bit位宽芯片,两个芯片共用一个DQM 信号线,对于8bit位宽芯片,一个芯片占用一个DQM信号,而对于16bit位宽芯片,则需要两个DQM引脚。
读取时数据掩码操作
写入时数据掩码操作
在读取时DQM发出两个时钟周期后生效,而在写入时,DQM与写入命令一样是立即生效。
2.9 RESET和ZQ
RESET是DDR3新增的一项重要功能,并为此专门准备了一个引脚。这一引脚将使DDR3的初始化处理变得简单。当Reset命令有效时,DDR3 内存将停止所有的操作,并切换至最少量活动的状态,以节约电力。在Reset期间,DDR3内存将关闭内在的大部分功能,所有数据接收与发送器都将关闭,且所有内部的程序装置将复位,DLL(延迟锁相环路)与时钟电路将停止工作,甚至不理睬数据总线上的任何动静。
通常,复位引脚采用有效的低输入。复位引脚的主要用途是监测供应给 微控制器的电源波动。当电源高于/低于阈值电压时,复位电路触发复位 引脚上的低电平有效信号。
低: 类比为系统供电异常,需要做reset.
ZQ也是一个新增的引脚,在这个引脚上接有一个240欧姆的低公差参考电阻。这个引脚通过一个命令集,通过片上校准引擎(ODCE,On-Die Calibration Engine)来自动校验数据输出驱动器导通电阻与ODT的终结电阻值。当系统发出这一指令之后,将用相应的时钟周期(在加电与初始化之后用512个时钟周期,在退出自刷新操作后用256时钟周期、在其他情况下用64个时钟周期)对导通电阻和ODT电阻进行重新校准。
为什么ZQ电阻是240欧姆
- 可以更方便设置34,40,60欧姆驱动或阻抗
- 这些阻值是DDR2/DDR3/DDR4预期设定的阻值
3 DDR设计
从SI的角度看,各个信号组之间的时序等长要求比较宽松,组内等长会严格一点。
组内等长相对容易实现,可以把更多的时序裕量留给其他更难控制的因素(PI)
设计时关注真正的等长---等时
- 不同层传播延时不同
- 同组尽量同层
- 同样换层结构,关注换层前后的等时
- Z轴延时
- PIN DELAY
针对skew的设计要求如下:
针对crosstalk的设计要求如下: