分享

DDR的Bank Group机制

 AMS1117LIB 2024-03-19 发布于上海

DDR4 SDRAM 中使用的bank group(后文简称“BG”)功能是从 GDDR5 图形存储器中借用的。 为了理解对 BG的需求,必须了解 DDR SDRAM 预取的概念。 预取表示每次使用 DDR 存储器执行列命令时提取word的数量。 因为 DRAM 的内核比接口慢得多,所以会通过并行访问信息然后将其从接口串行化输出来弥补时钟频率差。 例如,DDR3 预取 8 个word,这意味着每次执行读取或写入操作时,都会处理8 个word的数据,并在4个时钟周期的8个时钟沿上burst进或出 SDRAM。可以认为, DDR3 的 8 预取,使得接口比 DRAM 内核快 8 倍。

预取的缺点是它固定了 SDRAM 的最小突发长度。例如,在 DDR3 的预取为 8 的情况下,很难实现4 个word的突发长度。BG功能允许设计人员在提高性能的同时保持较小的预取。

由于 DRAM 的核心速度在一代与一代之间没有显着变化,因此每代 DDR 都增加预取,以提供更高的 SDRAM 接口速度。然而,继续使用 DDR4 的趋势将需要 DDR4 采用 16 的预取。线的增多显然将使 DRAM 更大。设计人员的设计目标是不使用16预取。更重要的是,16 word预取与当今计算机中常见的 64 字节cache行大小(line size)不匹配。在使用 64 字节cache行的典型环境中,使用 64 位或 72 位接口,预取 8 和突发长度 8匹配得更好。任何此类cache行大小和突发长度的不对齐都会对嵌入式系统的性能产生负面影响。

DDR4 Prefetch & Performance

了解预取如何影响性能之前,先来了解 SDRAM 随着时间的推移发生了什么。图 1 显示了与最大列周期相比,每一代 SDRAM 的最大数据速率。随着时间的推移,SDRAM 的内核(等同列周期?)并没有变得更快,这主要是因为较小工艺带来的任何好处都被更大的 SDRAM 所抵消,因为它具有更大的容量。 设计人员最终要与不断增加的容量作斗争,而工艺的小型化对此进行了补充。 但是,每一代的 I/O 始终更快。怎么做到呢,这就是预取的用武之地。

Figure 1: SDRAM Performance Scaling

原始的 SDR SDRAM不需要预取。 每次执行一个列周期时,它访问一个word数据,并将其推出 SDRAM。 现在,虽然 SDRAM 实际上确实有一个称为 2N 规则的东西,它可以容纳 2 的预取,但 2N 被视为规范的限制性部分,所有最终成为商品设备的 SDRAM 设备都具有 1 的预取。然而,引入 DDR SDRAM后,内核就无法跟上 SDRAM 所需的带宽。这是引脚上的最大数据速率与内部列周期之间分离的开始,如图 2 所示。

Figure 2: SDRAM Performance Scaling Enabled by Prefetch

这种分离随着时间的推移而扩大。DDR2 使用预取 4 ,DDR3使用预取 8, DDR4 仍然使用预取8,但引入了bank group的概念,以避免更大的预取带来的负面影响。

图 3 显示了从 SDR SDRAM 到 DDR3 SDRAM 的四代 SDRAM 预取是如何演变的。对于任何单列操作(例如,读或写),一次访问的word数由存储器阵列的数量以及将这些word从存储器跟SDRAM的核心之间进或出所需的大致周期时间 (MHz) 表示。

在 90 年代中期,内存阵列速度与 I/O 速度相匹配。很快,DDR 的 2N 预取(也适用于 LPDDR)被引入,以实现比 SDRAM 内核更高的数据速率。下图第二行所示的多路mux可以访问2个word,然后它们在接口上复用,在时钟的一个上升沿和一个下降沿。DDR3/LPDDR3 的8N 预取也是同理。

Figure 3: Historical DRAM Prefetch

DDR4 and Bank Groups

问题变成了:这如何应用于 DDR4 及其 8N 预取? 如果 DDR4 遵循图 3的趋势,则 DDR4 将具有 16 个预取,这是不可取的。 DDR4 通过引入BG的概念避免了这个问题。 对于BG,一组8的预取在一个BG中执行,另一组8的预取可以在另一个独立的BG中执行。BG是独立的实体,因此它们允许在一个BG内完成一个列循环,但该列循环不会影响另一个BG中正在发生的事情。 实际上,DDR4 SDRAM 可以时分复用其内部BG,以隐藏内部 SDRAM 内核周期时间比接口上需要的 8 个突发所需的时间更长的事实。 图 4 显示了该过程如何寻找具有两个bank group的 x16 DDR4 SDRAM,这通常用于嵌入式应用程序。Effectively, the DDR4 SDRAM can time division multiplex its internal bank groups in order to hide the fact that the internal SDRAM core cycle time takes longer than a burst of eight requires on the interface. Figure 4 shows how this process looks for a x16 DDR4 SDRAM with two bank groups, which are often used in embedded applications.

Figure 4: DDR4 Solution to Prefetch of Eight

New Bank Groups Specifications

DDR4 的新规范引入BG。两个关键规格是 tCCD_S 和 tCCD_L。 “CCD” 代表“column to column delay”或“command to command delay” on the column side. “_S”代表“短”,“_L”代表“长”。

当一个命令在一个具有 8N 预取的BG中启动时,必须允许预取完成,需要该group的整个周期时间才能完成。从一个BG转到另一个BG则没有约束。使用tCCD_S规范就是这种情况,它在四个时钟周期内不受限制, 类似于 DDR3。

然而,有一个大问题。在同一个BG内执行命令到命令需要注意 DDR4 的新tCCD_L 规范,该规范通常大于四个时钟周期。图 5 突出显示了 tCCD_S 和 tCCD_L 之间的区别。

Figure 5: tCCD_L and tCCD_S in DDR4 Bank Groups

New tCCD Specifications, Big Impact

如图 6 所示,使用 DDR4 在不同的BG之间传输需要四个时钟周期的延迟。四个时钟周期与 8 个突发长度相匹配。因为四个时钟周期是八个时钟边沿,包括上升沿和下降沿,所以 8 个突发长度在这四个时钟周期内的每个时钟沿上非常有效地输出或接收数据。在这种情况下,不会浪费总线带宽。一个命令可以跟随另一个命令,而不会在没有传输数据的总线上浪费任何周期。

Figure 6: Bank Group Defines tCCD Parameters Differently Between the Same Bank Group and a Different Bank Group

但在同一个 BG中,速率提升到1600 Mbps后,tCCD_L 规范需要四个以上的时钟。1,600 和 1,866 Mbps 需要 5 个时钟,而 2,133 Mbps 需要 6 个时钟。 图 6下方的时序图显示,在不同的 BG之间进行访问可以在访问点之间有四个时钟周期。在同一个BG中,以2,133 Mbps为例,需要在列命令之间有六个时钟周期。 但是,传输数据只需要 4 个时钟周期,即33% 的总线带宽被浪费。

Scheduling Traffic for Efficient Bank Group Use

图 7 中的时序图显示了 DDR4 的BG在 1600 Mbps中的影响。 tCCD_L 长规格为 5 意味着在同一 BG内的列命令之间需要 5 个时钟周期。圈起的区域可以看出:当使用五个时钟周期时,有一个时钟周期被浪费,没有任何数据。在更高的数据速率下,浪费越来越厉害。 在八个的情况下,试图留在同一个BG内浪费了一半的带宽。

Figure 7: Potential Wasted Clock Cycles Between Column Commands1

原文链接:

DDR4 Bank Groups | Interface IP | DesignWare IP | Synopsys

What are DDR4 SDRAM Bank Groups?

LPDDR5/5X BG mode,8B mode和16B mode

BANK架构概述

总体说明

LPDDR5/5X 器件,协议上支持多个bank架构可静态配置;配置在MR3:
在这里插入图片描述

几个模式简要描述:

模式说明协议要求速率要求BL
BG模式每CH 4BG, 4BALPDDR5/5X>3200MbpsBL16 & 32
8B模式每CH 8BALPDDR5任何速率BL32
16B模式每CH 16BALPDDR5/5X<=3200MbpsBL16 & 32

三种模式的示意图

BG模式图示

在这里插入图片描述
如图,可以看出:

  • LPDDR 单通道16bit,即2Byte;

  • BANK是per byte划分的,每个byte都有其bank存储资源,每个bank一行一列选中8bit;

  • 每个byte预取资源是128bit,对应BL = 128bit / x8 = 16;(为啥BG模式能支持BL32? 后面会讲);

  • 由于BG和BA都单独寻址,所以单byte而言,一次仅操作一个特定bank;

  • 不得不说,这只是一个示意图,一般情况下,x16模式下,一个bank选中一行一列的数据位宽就是16bit, 况且address mapping章节也会讲,x16模式,BG模式的器件,4个Bg,4个bank;这个图有两种理解:1,上图中BG0,Bank0对应两个框框,两个框是一个物理BANK; 2,两个框框就是两个物理bank,只是device逻辑上把他们拼成了一个bank。 本文以第二种理解方式展开描述。

8B模式图示

在这里插入图片描述

  • 每个byte预取资源是256bit,对应BL = 32, 所以此模式仅支持BL32的应用;

  • 由于没有BG, 当我们指定一个bank地址时,其实是在并发操作两个BA(单byte而言),这两组BA都有128bit预取资源;

16B模式图示

在这里插入图片描述

  • 每个byte而言,预取128bit, 对应BL=16;

  • 每个byte而言,16个bank都是可以单独寻址的,单次操作仅针对一个特定bank;

  • 由于只有bank,没有BG,所以对于高速应用,个人猜测可能bank切换不及时导致数据存在气泡,所以仅支持低速应用场景;

burst操作波形,以读为例

BG模式 BL16 4:1模式的读波形

在这里插入图片描述

  • BG交织访问,数据无气泡

BG模式 BL32 4:1模式的读波形

在这里插入图片描述

  • BG交织访问呢,命令间隔适用BL/n = 2;

  • 由于上面框图中的预取资源仅够burst16, 所以BL32实际上需要两个读命令的数据以BL16交织的形式出现;

  • 第三次读由于没人跟他交织,所以中间空了8tWCK的时序;

  • BL16和BL32的读命令可以混发,但是要注意BL32数据出来的时序,防止DQ线多驱;

8B模式 BL32 4:1模式的读波形

在这里插入图片描述

  • 由于8B模式配置,本身就有256bit预取,对应BL = 32, 所以读数据BL32直接吐出来,无需和其他读命令交织;

16B模式 BL16 4:1模式的读波形

在这里插入图片描述

  • 没啥特别的,标准的数据背靠背操作;

16B模式 BL32 4:1模式的读波形

在这里插入图片描述

  • 这里为啥128bit预取可以实现BURST32, 是因为速率比较低,这里BL32其实就相当于两次背靠背的BL16读;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多