14

LJgibbs · 10月9日 · 广东

DDR 学习时间 (Part B - 8):DRAM DBI 特性

image.png

本期我们将讨论 DDR4 的 DBI 数据总线翻转(Data Byte Inversion)特性。

基于 JESD79-4B(4C) / 4.11 节

本系列连载于 OpenIC SIG,除了 DDR 学习时间专栏外,OICG 目前正在陆续上线 HDLBits 中文导学的优化版本,欢迎关注/支持/加入我们

DDR 学习时间 - OpenIC SIG 开源数字IC技术分享

导言

DDR4 相较于 DDR3 的一项重要改进是将数据总线 IO 更新成伪开漏(POD, pseudo open drain)标准,取代了前代的 SSTL 标准。在伪开漏电路中,总线驱动高电平时并不会产生功耗,只在驱动低电平时产生功能,因此一项通过尽可能在数据总线上驱动高电平的省电特性 DBI 由此产生。

DDR4 POD IO 标准

在 POD 中,接收器将信号终结(terminated)到 VDD 的高电平,而不是像前代一样终结到一半的 VDD 电压。在低电平状态下,SSTL 和 POD 都有电流消耗,如下图中的绿线所示。实际上,POD 可能会消耗略高的电流,因为其终结电压是 VDD 电压,而SSTL的终结电压仅为 VDD 电压的一半。这在一定程度上被 DDR4 稍低的电源电压所抵消,DDR4 VDD 电压为 1.2V,比 DDR3 的 1.5V 显著降低。

这两种驱动选项之间的主要区别在驱动高电平时突显出来。当驱动高电平时,SSTL 继续以大约等于驱动低电平时的速率消耗电流,电流方向为接收端的 GND 到发送端的 VDD/2,如下图中的红线所示,而 POD 在驱动高电平时不消耗功率,因为收发两端的电压都是 VDDQ。

因此,降低 DDR4 系统功耗的方法是最大化驱动高电平的数量。这时,数据总线反转(DBI)功能就派上了用场。

image.png

DBI 特性原理

DBI 是数据总线翻转(Data Byte Inversion)的缩写。通过前文我们知道 DDR4 的 POD IO 标准电路在驱动高电平时不会消耗功耗,因此发送方会最大化驱动高电平 IO 的数量,比如一个 8bit 数据通道上要传输一个 0b0001_0011 的字节,此时 8 bit 中有 5bit 为低电平,为了最小化功耗,发送方将数据翻转为 0b1110_1100, 转为只有 3bit 低电平。

显然,发送方进行极性翻转后,需要通知接收方此次传输的数据已经经过翻转,不然接收方将接收到错误的数据。DDR4 为每个数据通道(8 或 16 比特)引入一个 DBI 引脚,当发送方将数据翻转为 0b1110_1100 后,DBI 引脚被拉低以指示数据已经经过翻转,接收方需要将数据再次翻转然后使用。

在驱动 DRAM 的 SoC 这一侧,DBI 功能一般由 DDR 控制器实现,DDR PHY 一般不负责此事。写操作时,控制器完成比特翻转后通过 DFI DBI 信号送给 PHY,PHY 只负责原样输出 DQ 和 DBI 信号给 DRAM。读操作时也是同理,PHY 在 DBI 特性上是甩手掌柜

使能 DBI

通过 MR5 使能或者关闭读写 DBI 功能,读写 DBI 功能分别由 1 比特控制。

image.png

DBI 省电性能分析

首先,DBI 省电多少取决于具体数据间的比特翻转情况,也就是平均每次传输中,DBI 能够减少多少次低电平比特传输。以 x8 器件为例,可能的排列组合如下,表格中的 +1 表示算上了此时为低电平的 DBI 引脚:

image.png

假设所有比特出现低电平的概率完全随机,那么平均低电平比特数量减少的数学期望

1/256 x 7 + 8/256 x 5 + 28/256 x 3 + 56/256 x 1 = 187/256 = 0.73

由于完全随机情况下,发生比特跳转的数学期望是 4 次,因此 DBI 平均能够减少 0.73/4 = 18.25% 的比特跳转。

援引美光 DDR4 功耗计算示例中的数据,这大致相当于每个器件节省 18.25% 的读写 IO 动态功耗,大约 28mW,占 DRAM 整体功耗的 7%。具体计算的方法以及场景请参考参考文献中的美光 DDR4 功耗计算 PDF。

另外,DBI 特性也可以节省 SoC 端的 IO 跳转功耗,这个需要另行计算,但笔者个人认为大致和 DRAM 节省的 IO 动态功耗相同。

DBI 省电的代价:DBI 特性开销

DBI 很好很省电,那么,代价是什么呢?

Read DBI 导致读延迟显著增加

当 read DBI 使能时,读数据返回会有额外 tDBI 个时钟周期延迟。Spec 中在规定 CL 的时候,额外规定了 read DBI 使能时的 CL,比正常 CL 数值大 2 - 4,所以笔者认为这里额外的 tDBI 是 2 - 4 个周期。

image.png
image.png

Write DBI 与 DM 不可兼得

事实上,DDR4 并没有为 DBI 新增引脚,而是让他和 DM (Data Mask)功能复用同一个引脚。那么在写数据时,DM 和 DBI 只能选择其一。因为 DM 功能只在写数据时会用到,所以读数据时没有这样的困扰,可以同时使能写 DM 和读 DBI 功能。

如果一定要使用写 DBI,并且也要使用写 Mask 功能,也有办法。可以通过控制器的 RMW (Read-Modify-Write)功能,先读回数据,修改要写的比特再写回去,来替代 DM 引脚功能。

增大 DDR 控制器 DFI 逻辑深度

写 DBI 使能时,DDR 控制需要增加相应逻辑判断高电平比特数,以及实现比特翻转的逻辑。读 DBI 时,DDR 控制器也需要根据 PHY 送回来的 dfi_dbi_xxx 信号,翻转读数据比特逻辑。因此 DBI 功能会增加 DDR 控制 DFI 通路逻辑深度,影响 DFI 通路时序收敛。

DFI 作为一组高频率、超大比特位宽的总线,它的时序收敛一般都是 DDR 子系统,甚至 SoC 时序收敛的要点。解决办法也比较直观,在 DDR 控制器输出输入级增加 DFI Pipeline,但这又增加了 DDR 访问的时延,而 DDR 时延又是整个系统时延的关键...

结语

本期我们讨论了:

  • DDR4 DQ IO 标准变化
  • DBI 功能的作用
  • DBI 功能原理
  • DBI 省电也不完全免费:DBI 特性开销

在一项功耗敏感的应用,可以使用 DBI 功能来节省 DRAM IO 动态功耗,节约的功耗大约在 50mW 量级 (DRAM+SoC/PHY),具体节约的功耗大小取决于数据比特跳转的频率。但 DBI 的开销主要是写方向不能使用 DM 引脚,读方向会增加 2-4 个周期延迟。

参考文献

https://static.sw.cdn.siemens.com/siemens-disw-assets/public/82737/en-US/Siemens-SW-DDR4-board-design-and-signal-WP-82737-C1.pdf
https://www.mouser.com/pdfDocs/tn_4003_ddr4_network_design_guide.pdf
TN-40-07: Calculating Memory Power for DDR4 SDRAM

作者:ljgibbs
原文:知乎

相关文章推荐

更多FPGA干货请关注FPGA的逻辑技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
10613
内容数
577
FPGA Logic 二三事
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息