DDR学习笔记1

DDR的演进

DDR发展到现在已经经历了五代。

  • DDR (DDR1): 第一代 DDR 内存。奠定了双倍速率的基础。
  • DDR2: 进一步提高了时钟频率和带宽,降低了工作电压(1.8V),改进了封装和信号完整性。引入了 Prefetch 技术(通常是 4-bit)。
  • DDR3: 再次大幅提升频率和带宽,电压进一步降低到 1.5V(后期有 1.35V 低电压版 DDR3L)。Prefetch 增加到 8-bit。成为长期的主流标准。
  • DDR4: 频率、带宽和容量(单条可达 32GB+)再次飞跃,工作电压降至 1.2V(也有 DDR4L)。改进了内部架构和可靠性。引入了 Bank Group 设计提升效率。
  • DDR5: 当前最新一代主流标准。
    • 核心电压进一步降至 1.1V。
    • 带宽再次翻倍(甚至更高): 通过将每个内存模块(DIMM)的通道拆分成两个独立的 32-bit 子通道(相当于每个 DIMM 有 2 个 32-bit 通道),并显著提升基础频率。
    • 容量巨大提升: 单条容量可达 128GB 甚至更高。
    • 集成电源管理芯片: 将原本主板上的电压调节模块移到内存条本身,提高稳定性和供电效率。
    • 更强的纠错能力: 支持片内 ECC(并非所有消费级条都有,但架构支持)。
    • 更高的密度和能效比。

DDR到DDR5的主要变化主要表现在DDR的性能、容量、省电三个方面:IO的速率也越来越高,规范的工作电压越来越低,芯片容量越来越大。
除了电压,容量和IO的速率变化之外,还包含Bank、Bank Group、Prefetch和Burst Length的演进,bank数越来越多,到DDR4出现bank group,prefetch也从2n增加到4n、8n。
在这里插入图片描述

  • Device Width:颗粒位宽,常见为4/8/16bit。
  • Die Density:颗粒密度,也就是容量,随着DDR代数迭代,容量越来越大。
  • Bank:DDR4以前是没有Bank Group的,所以该值就表示整个颗粒中Bank数量。但是在DDR4和DDR5中,就表示每个Bank Group中Bank的数量,整个颗粒Bank数量 = Bank Group * Bank。
  • Bank Group:Bank分组数量,该特性只存在于DDR4和DDR5中。

DIMM、Chip、RANK、CHANNEL

DIMM

DIMM(Dual Inline Memory Module)双列直插内存模块,也就是我们常见的内存条。
在这里插入图片描述

Chip

Chip是内存条上的一个芯片,俗称内存颗粒。

RANK

我们知道,CPU与内存之间的数据接口位宽是64bit,也就意味着CPU在一个时钟周期内会向内存发送或从内存读取64bit的数据。

可是,单个内存颗粒的位宽仅有4bit、8bit或16bit,个别也有32bit的。显然发送方和接收方的位宽必须一致,不能说我发了64位数据出来,你才收到前面的16位,后面的就丢掉了。因此,必须把多个颗粒并联起来,组成一个位宽为64bit的数据集合,才可以和CPU互连。

我们可以,把这样一个由多个颗粒组成的64bit位宽集合,称为一个RANK。

比如,128MB内存芯片,其位宽为8bit,那么需要8块芯片才能组成64bit位宽,将这些芯片焊接到一块DIMM上,插到主板上就可以使用了。这时,该DIMM的总容量就是128MB*8=1GB。

假设,该主板只有一个DIMM插槽,并且我们还想将DIMM扩容至2GB,并且还只能使用128MB,位宽为8bit的内存颗粒。那么应该如何实现呢?

回答:在一个DIMM上放两个RANK,然后用片选信号来选择访问RANK0或RANK1,RANK0和RANK1的其他信号线全部连在一起。
在这里插入图片描述

为了保证和CPU的沟通,一个DIMM中至少要有一个RANK。但是,为了保证有一定的内存容量,经常是采用一个DIMM两个RANK的结构。

CHANNEL

内存控制器(Memory Controller)是计算机系统内部控制内存并且负责内存与CPU之间数据交换的重要组成部分。

CHANNEL即内存通道,实际上是一种内存的带宽加速技术。一个DDR控制器中可能有一个内存通道,也可能有两个内存通道。最常见的是双通道,民用级电脑都支持,服务器还有3通道和4通道等。

内存通道实际是对应一组时钟、命令、地址、数据线,这组总线也就是所谓的内存通道。一般一个内存通道,可以连接若干个DIMM(多个DIMM通过片选控制)。

从内存控制器到内存颗粒内部逻辑,笼统上讲从大到小为:channel>DIMM>rank>chip>bank>row/column:
在这里插入图片描述

DDR的引脚定义(以DDR3/MT41J256M16HA-15E为例)

在这里插入图片描述

  • CK、CK#:差分时钟输入
  • CKE:时钟使能输入。CKE为高时,使能时钟正常工作;CKE为低时,使能Power-down模式或自刷新功能。
  • CS# :片选信号
  • ODT:阻抗匹配使能。ODT使能DDR3内部的终结电阻,当其为高时有效,优化DQ/DM/DQS 的信号质量。
  • RAS#、CAS#、WE# :命令输入。定义 DDR3 芯片的操作命令。
  • LDM、UDM:写入数据掩码。在写入操作时,如果DM信号为高,则写入数据被屏蔽;如果DM 信号为低,则写入数据正常锁存;LDM控制DQ0~DQ7,UDM控制DQ8~DQ15。
  • BA[2:0]:BANK地址输入。在激活、读取、写入或预充电命令操作时,提供 BANK 地址;在加载模式寄存器命令的时候,决定设置哪种模式寄存器。
  • A[14:0]:地址输入。在激活命令的时候提供 Row 地址; 在读取/写入命令的时候提供Column 地址和预充电位(A10) ;
    在加载模式寄存器命令的时候提供 op-code;
    Row 地址:A[14:0] ;
    Column 地址:A[9:0] ;
    A12/BC#:当在模式寄存器中使能后,A12 在读取/写入命令的时候决定是否执行突发突变(burst chop)功能。
  • RESET#:复位输入。
  • DQ[15:0] :数据总线。
  • LDQS、 LDQS#:低字节数据选通。
    作为输出信号时,与读取的数据同步,边沿对齐;
    作为输入信号时,与写入的数据同步,中心对齐;
    LDQS#是否使用,需要在模式寄存器中设置。
  • UDQS、 UDQS#:高字节数据选通。
    作为输出信号时,与读取的数据同步,边沿对齐;
    作为输入信号时,与写入的数据同步,中心对齐;
    UDQS#是否使用,需要在模式寄存器中设置。
  • VDD:供电电源:1.5V±0.075V。
  • VDDQ:DQ 供电电源:1.5V±0.075V。
  • VREFCA:电源 控制、命令和地址信号的参考电压。
  • VREFDQ:电源 数据信号的参考电压。
  • VSS:电源 地。
  • VSSQ:电源 DQ 地。
  • ZQ:输出驱动校正的外部参考点。

DDR3框图

在这里插入图片描述

固定突发长度(BL):8
4-bit 突发突变(Burst Chop)功能

功能说明

命令真值表

在这里插入图片描述

芯片初始化

DDR3 芯片在上电以后,必须运行初始化时序对芯片进行必要的功能配置后,才能进行正常的读写操作,其初始化时序如图 9 所示。
图 9 芯片初始化时序
需要把MR2、MR3、MR1、MR0配置好。

模式寄存器(MR0-MR3)

模式寄存器(MR0-MR3)用来定义 DDR3 SDRAM 的工作模式,利用加载模式寄存器(MRS)命令进行设置,芯片会一直保持所设置的信息直到重新设置、芯片复位或掉电,重新设置模式寄存器不会修改芯片内部所存储的数据。

MR0 模式寄存器

MR0 模式寄存器用来定义 DDR3 SDRAM 的突发长度(Burst Length)、突发类型(Burst Type)、CAS 延迟(CAS latency)、操作模式、DLL 复位、写恢复和预充电 Power_down 模式,如图 5 所示。
① Burst Length(BL):突发长度。DDR3 的读写操作都是突发类型的,突发长度决定了在读取操作或写入操作中列空间的最大个数,可根据要求设置为 4(突变模式),8(固定)或利用 A12 管脚在读写命令的时候进行设置(on-the-fly)。
② Burst Type:突发类型。突发类型分为 sequential 或 interleaved,只在读取操作中有用。由 M3 决定。
③ CAS Latency(CL):列地址选通脉冲时间延迟。指在读取数据时,读取命令到数据输出需要等待的时钟周期数,可设置为 5~11。
④ DLL Reset:DLL 复位设置,当设置 M8 为 1 时,激活 DLL 复位功能。
⑤ Write Recovery:定义写恢复时间,WR= tWR/tCK,可设置为 5~12。
⑥ Precharge Power-Down 模式:当 M12 设置为 0 时,在预充电 Power-Down模式下,DLL 关闭,芯片处于待机模式;当 M12 设置为 1 时,在预充电 Power-Down模式下,DLL 打开,芯片处于快速退出预充电 Power-Down 模式。
⑦ Mode Register Definition:模式寄存器定义,由 BA1 和 BA0 决定 LMR 命令所操作的模式寄存器属于哪种模式寄存器。
在这里插入图片描述

MR1 模式寄存器

MR1 模式寄存器定义 DDR3 SDRAM 额外的一些设置,有数据输出使能(QOFF)、 DLL 使能/禁止、 ODT 的电阻值、写入均衡控制、 CAS 附加延迟设置和输出驱动强度选择等,如图 6 所示。
① DLL Enable/Disable: DLL 使能控制。在正常操作时, DLL 必须被使能,在上电初始化的时候进行使能设置。
② Output Drive Strength:输出驱动强度。正常情况下设置为 RZQ/7( 34Ω[NOM]),为了校准输出驱动阻抗,外部需要有 RZQ 电阻(240Ω± 10%)连接到ZQ 管脚上。
③ CAS# Additive Latency(AL): CAS 附加延迟,可设置为 0、 CL-1、 CL-2。
④ RTT: ODT 电阻的设置和 RZQ 电阻相关,可按需求设置。
⑤ WL: 写入均衡功能使能,通过 MR1[7]设置。
⑥ TDQS 使能控制:只有在 8bit 模式下才使用。
⑦ 数据输出使能控制: M12 设置是否正常输出, M12=0 时正常输出,否则输出禁止。
⑧ Mode Register Definition:模式寄存器定义,由 BA1 和 BA0 决定 LMR 命令所操作的模式寄存器属于哪种模式寄存器。
在这里插入图片描述

MR2 模式寄存器

MR2 模式寄存器定义了 DDR3 SDRAM 的其他一些设置,有 CAS 写入延迟、自动自刷新(ASR)、温度自刷新(SRT)、动态 ODT 等,如图 7 所示。
① CWL: CAS 写入延迟。定义在写入操作中,在附件延迟( AL)后增加的CWL 延迟时钟数,可设置为 5~8。
② ASR:自动自刷新使能。
③ SRT:自刷新温度范围使能。
④ 动态 ODT:动态 ODT 使能。如果动态 ODT 使能,则在写入操作的时候,DRAM 从正常的 ODT 模式切换到动态 ODT 模式进行工作。
⑤ Mode Register Definition:模式寄存器定义,由 BA1 和 BA0 决定 LMR 命令所操作的模式寄存器属于哪种模式寄存器。
在这里插入图片描述

MR3 模式寄存器

MR3 定义了 MULTIPURPOSE REGISTER(MPR)功能的控制位,如图 8 所示。
在这里插入图片描述

激活操作

激活操作(ACTIVATE)是指在读取或者写入操作之前,芯片需要将要操作的Bank 和 Row 进行激活,方便后续的操作。激活操作是通过激活命令实现的,在激活命令经过时间 tRCD 后,可以进行读取或写入操作,而在不同 Bank 之间激活命令的间隔时间是 tRRD,如图 10 所示。
图 10 tRCD 和 tRRD 时序

读取操作

突发读取操作是通过读取命令实现的,在读取命令中提供开始读取数据的Column 和 Bank,然后经过读取延迟(Read Latency)后,连续读出指定数量的数据。RL 的值由 AL 和 CL 定义, RL=AL+CL。 AL 和 CL 的值可通过 MRS 命令进行定义。图 11 展示了 CL=8, AL=0 设置下的 RL 时序。
图 11 读取延迟(Read Latency)
在读取操作中, DQS/DQS#与输出数据同步,在 DQS/DQS#的上升/下降沿都会读取到数据。 DDR3 SDRAM 的突发读取操作不允许中断或者删减。在突发读取操作后,需要添加一个预充电(PRECHARGE)命令,来关闭激活的 Row。根据 A10管脚的不同,决定了预充电命令需要手动添加还是自动添加。在读取操作时,如果地址线 A10 为高,则在读取操作后自动会加一个预充电命令;而如果地址线 A10为低,则需要在读取命令之后,按照要求添加一个预充电命令,相应时序波形如图12 和图 13 所示。
图 12 读取操作-不带自动预充电
图 13 读取操作-带自动预充电

写入操作

突发写入操作通过写入命令实现, DDR3 利用 WL(Write Latency)来表明其延迟时间,与读取操作的 RL 功能一致,而WL=AL+CWL。在写入操作的时候,提供要写入的起始 Column 地址和 Bank 地址,同时是否加入自动预充电命令。如果加入自动预充电命令,则完成突发写入操作以后,就会自动关闭激活的 Row。
图 14 突发写入操作时序
在突发写入操作中,第一个可用的输入数据在 WL 延时后的 DQS 的第一个上升沿被锁存,而后续的输入数据在每个 DQS 的上升沿/下降沿被锁存。
在写入命令和 DQS 的第一个上升沿之间的时间为 WL±tDQSS,图 14 中所表示的即为 tDQSS 的值处于正常情况和极限情况下的突发写入操作时序。
图 15 是当 BL=8 时的写入操作到预充电时序,可以看出,数据写入之后,需要等待 tWR 延时后才能加入预充电命令。
图 15 写入操作-预充电时序

预充电操作(PRECHARGE)

预充电命令是用来关闭某个 BANK 已经激活的 Row 或者所有 BANK 已经激活的 Row。 A10 管脚用来检测是所有激活的 Row 被预充电还是单个 BANK 的 Row 被预充电,当 A10 管脚为高时,表明所有激活的 Row 都需要被预充电, BANK 地址无意义;而 A10 管脚为低时,单一 BANK 的 Row 被预充电,这时 BANK 地址所指代的就是需要预充电 Row 的 BANK 地址。

一旦 BANK 被预充电以后,则整个 BANK 的 Row 都被关闭,处于空闲状态,如果后续需要对 Row 进行读写操作,则需要重新激活后才能使用。

刷新操作(REFRESH)

DRAM 需要每隔一段时间执行一次刷新操作,以保证存储数据不丢失。刷新操作时,地址由内部刷新控制器自动产生。刷新操作时序如图 16 所示。
图 16 刷新操作时序

自刷新操作(SELF REFRESH)

自刷新操作也是用来刷新 DRAM 以保存所存储的数据。在自刷新方式下,为了降低功耗,刷新地址和刷新时间全部由器件内部产生。只有通过 CKE 变低才能激活自刷新方式,其他的任何输入都将不起作用。给出退出自刷新方式命令后必须保持一定节拍的空操作输入,以保证器件完成从自刷新方式的退出。如果在正常工作期间采用集中式自动刷新方式,则在退出自刷新模式后必须进行一遍集中的自动刷
新操作,以保证 DRAM 的数据不丢失。自刷新时序图如图 17 所示。
图 17 自刷新进入/退出时序
DDR3 SDRAM 采用了两项新的自刷新设计功能,称为自动自刷新( ASR,Automatic Self-Refresh)和自刷新温度范围(SRT, Self-Refresh Temperature)。当开始 ASR 之后,将通过一个内置于 DRAM 芯片的温度传感器来控制刷新的频率,因为刷新频率高的话,耗电就大,温度也随之升高,而温度传感器则在保证数据不丢失的情况下,尽量减少刷新频率,降低工作温度。自刷新温度范围(SRT, Self-Refresh Temperature)可通过模式寄存器选择两个温度范围,一个是普通的温度范围(例如0℃至 85℃),另一个是扩展温度范围,比如最高到 95℃。对于 DRAM 内部设定的这两种温度范围, DRAM 将以恒定的频率和电流进行刷新操作,其对应的设置和功
能说明见表 5。
在这里插入图片描述

输入时钟频率改变

在 DDR3 初始化以后,外部时钟必须保持稳定,才能保证芯片正常工作。如果
需要改变外部输入的时钟频率,只有两种方式:自刷新模式或预充电 Power-down
模式。在自刷新模式下,外部时钟无意义,则可以在退出自刷新模式之前,改变输
入的时钟频率。而在预充电 Power-down 模式下, CKE 为低,同样外部时钟不使能,
则可以改变输入时钟频率,当在退出预充电 Power-down 模式以后,必须执行一次
MRS 命令,设置复位 DLL,如图 18 所示。
图 18 预充电 Power-down 过程中,改变时钟频率

Power-Down模式

当 CKE 拉低后执行 NOP 或 DES 指令,芯片就进入 Power-down 模式。进入
Power-down 模式以后,芯片禁止所有的输入输出信号,包括 CK、 CK#、 ODT、 CKE
和 RESET#。
假如 Power-Down 模式发生的时候,所有 BANK 处于空闲状态,此时的
Power-Down 模式称为预充电 Power-Down,如图 19 所示;而当 Power-Down 模式发
生的时候,有任何 Row 激活在任意 BANK,此 Power-Down 模式称为激活
Power-Down,如图 20 所示。
图 19 预充电 Power-down 过程进入/退出
图 20 激活 Power-down 过程进入/退出

复位操作

当外部复位管脚 RESET#拉低,保持 100ns 的时间,芯片就执行复位操作。在
此过程中,芯片输出禁止, ODT 关闭,芯片复位。当退出复位操作以后,芯片必须
重新初始化后才能工作,内部计数器也复位,而芯片内部数据也会变化。复位时序
图如图 21 所示。
图 21 复位操作时序

终端电阻(ODT)设置

DRAM 存储控制器利用终端电阻(ODT)功能打开或者关闭 DRAM 芯片某些
信号的终端电阻,包括 DQ、 DQS、 DM 信号,用来提高 DRAM 存储器的信号完整
性,其示意图如图 22 所示。
图 22 ODT 功能示意图
终端电阻 RTT 的电阻值在模式寄存器中进行设置。当芯片进入自刷新模式或者
在模式寄存器中将 ODT 功能禁止时,外部的 ODT 控制管脚就无意义。 ODT 包括普
通 ODT 模式和动态 ODT 模式,正常情况下 DRAM 都工作在普通 ODT 模式,此时
的 RTT 电阻值为 RTT.nom;当写入命令或者需要 ODT 功能转换的时候,就会用到
动态 ODT 模式,此时的电阻值变为 RTT.WR,当完成写入命令以后, RTT 值又回到
RTT.nom,如图 23 所示。
图 23 动态 ODT 操作, BC4

时序图

图 24 数据输出时序
在这里插入图片描述

图 25 数据输入时序
在这里插入图片描述
图 26 DQS 时序-读取操作
在这里插入图片描述
图 27 tFAW 时序
在这里插入图片描述
图 28 写入操作到读取操作时序序(BL8)
在这里插入图片描述
图 29 连续写入操作(BL8)
在这里插入图片描述
图 30 ZQ 校准时序((ZQCL and ZQCS)
在这里插入图片描述
图 31 DLL Disable 模式到 DLL enable 模式
在这里插入图片描述
图 32 读命令/读命令加预充电后进入 Power-Down 时序(RDAP)
在这里插入图片描述
图 33 写命令后进入 Power-Down 时序
在这里插入图片描述
图 34 写命令加自动预充电后进入 Power-Down 时序(WRAP)
在这里插入图片描述
图 35 刷新后进入 Power-Down 时序
在这里插入图片描述
图 36 激活后进入 Power-Down 时序
在这里插入图片描述
图 37 预充电后进入 Power-Down 时序
在这里插入图片描述
图 38 模式寄存器设置后进入 Power-Down 时序
在这里插入图片描述
图 39 同步 ODT 时序
在这里插入图片描述
图 40 异步 ODT 时序
在这里插入图片描述
图 41 动态 ODT 时序
在这里插入图片描述
图 42 写入均衡时序
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值