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 modeBANK架构概述总体说明LPDDR5/5X 器件,协议上支持多个bank架构可静态配置;配置在MR3: 几个模式简要描述:
三种模式的示意图BG模式图示
8B模式图示
16B模式图示
burst操作波形,以读为例BG模式 BL16 4:1模式的读波形
BG模式 BL32 4:1模式的读波形
8B模式 BL32 4:1模式的读波形
16B模式 BL16 4:1模式的读波形
16B模式 BL32 4:1模式的读波形
|
|
来自: AMS1117LIB > 《DDR》