利用重新排序型控制器提升DDR SDRAM的效率

时间:2022-09-29 10:21:52

利用重新排序型控制器提升DDR SDRAM的效率

高速双倍数据速率(DDR) SDRAM厂商一般均使用峰值数据传输速率来指定器件规格。比如,如果某厂商把产品命名为DDR3-1600,则意味着该厂商将规定该SDRAM器件的峰值传输速率定为 1,600 MT/s。

虽然这些器件确实能够达到所规定的传输速率,但在实际工作负载情况下却不能持续保持该速率。原因在于行地址冲突、数据总线转换损耗、写恢复等都会降低器件的峰值传输速率。

更为糟糕的是,随着速度更快的新一代SDRAM的诞生,上述性能衰减情况造成的不良影响会进一步加剧。为此,采用简单顺序调度算法的存储控制器可能达到的持续传输速率基本上会低于指定的峰值。不过,采用更先进的重新排序调度技术可以克服这些性能衰减因素,确保您的存储器在实际应用中能够提供出色的持续数据传输速率。

利用 Virtex?-6,赛灵思推出了首款专为 FPGA 而优化的重新排序型 DDR SDRAM 存储控制器。该新型控制器使 Virtex-6 用户能够充分利用最新一代 DDR SDRAM 技术所带来的大容量、高性能及低功耗等优势。

从表面上看,DDR SDRAM 器件不过是个读/写存储器。但事实上,当前的 DDR SDRAM 器件非常复杂。DDR SDRAM 必须生成非常精确的地址、命令和数据序列,并同时满足大量时序要求。实现高DDR SDRAM 性能还要求在允许的最短时序内执行指令流水线。

1DDR SDRAM内外

影响存储器性能的衰减因素具有什么特性?为何提升峰值传输速率会加剧其影响?

如图1所示,基本的 DDR SDRAM 存取是让存储控制器向存储器发送一个带有激活命令的行地址,等待RAS到CAS延迟时间(即行地址和列地址选通脉冲之间的时钟周期数),然后发送列地址以及一个读取或写入命令。完成这一请求需要等待CAS延迟时间,然后对数据采样用于读取或提供数据用于写入。一旦数据传输完毕,控制器会发出一条预充电命令来关闭活动行。在预充电间隔之后,控制器可能会再发出一条激活命令。

此后,控制器可能会在无预充电―激活序列的情况下发出多条读取或写入命令。这种情况一般被称为快页模式访问。

由于快页模式避开了费时耗电的激活预充电序列,因此其效率极高,但这种访问仅限于同一行地址内。如果工作负载要求访问多个不同的行地址,则每次访问之间都必须产生激活―预充电序列。在这种情况下,持续传输速率就会比较低,甚至远远低于峰值传输速率。

DDR SDRAM 被排列(或分割)成一系列相同大小的准独立区域。DDR3 DRAM 有8个库。对不同库的存取可能会出现交叠。比如,如果工作负载要求在读取库1之后立即读取库2,存储控制器会先向库 1 发送行地址和激活命令,然后向库2发送行地址和激活命令。在RAS到CAS延迟时间之后,控制器会为首次读取发送列地址和命令,然后为第二次读取发送列地址和命令,等待CAS时延,然后传输两个无缝的数据突发。假定工作负载逐步通过上述两个库,就可以持续峰值传输速率进行扩展。

除了能够避免因行地址冲突导致的大幅性能衰减,重新排序存储控制器还可以应对写恢复和总线转换导致的性能衰减。

实现较高DRAM性能的最佳方法则是设法将工作负载进入快页模式或滚动库(rolling-bank)模式。不过这种方法在很多情况下都不可行。处理器一般会生成很难用这种方式加以处理的准随机工作负载。

如果工作负载要求接连访问同一库中的不同行地址(行地址冲突)之后,接着访问某个不同的库,则简单的顺序存储控制器会对所有三次访问进行串行化处理。由于第二次访问需要经过预充电―激活过程,这样做会导致效率严重下降。与此相反,重新排序型存储控制器可以先为第一次访问发送激活命令,然后再为第三次访问发送激活命令。重叠这些访问即可提升效率。

图2阐述了这一构想。如图所示,先按序执行,然后把第二次请求移到第三次之前。可以看出,重新排序序列比顺序序列先完成。

除了能够避免行地址冲突导致的大幅性能衰减,重新排序型存储控制器还可以应对写恢复和总线转换导致的性能衰减。在写入周期末期,DRAM内部正忙于将数据写入阵列。虽然相邻的写入操作可以按照峰值速率处理,写入操作之后的读取操作必须等到DRAM阵列中的写入完全结束。而这就引发了写入恢复规范问题。

DDR SDRAM采用双向共享总线结构。该总线的一端连接控制器,另一端一般连接2至4个双列直插内存模块(DIMM)。该总线的电气长度为大约5英寸,会导致约1 ns的总线传输延迟。总线驱动器停止驱动的时候,会在总线上形成一个短时脉冲干扰。一般来说,需要两倍的总线延迟时间这种短时脉冲干扰才会消失。

DDR SDRAM协议中内建的数据前同步码由一个 DDR SDRAM 时钟或两个单位间隔构成。在前同步码段不传输数据。如果同一驱动器向两个相邻的地址发送数据,则可以抑制前同步码。实际上,如果要实现峰值传输速率,就必须抑制前同步码。

写恢复和数据总线衰减对性能造成的影响较大。简单的顺序存储控制器完全受制于工作负载。不断进行读/写交替变换的工作负载类型会导致性能严重低于峰值传输速率。

不过重新排序型存储控制器可以在总线驱动器的基础上对访问进行分组。采用简单的单库配置,重新排序型存储控制器可以把读取和写入进行集中分组,然后以突发模式发出。采用多库配置时,重新排序型存储控制器可以对访问进行组织,对每个库的读取进行分组,并以突发模式发出。

图3显示了重新排序对于避免总线转换和写恢复导致的性能衰减的影响。在这个例子中,对库0的顺序读取与对库1的顺序写入交叉进行。使用两个DMA控制器对存储器进行读写可以非常容易地生成该类工作负载。

在顺序情况下,每次读取和写入的转换都会造成总线带宽严重下降。而重新排序则可以避免这些损失,显著提高吞吐量。

读写处理的重新排序往往会引发数据破坏和不足。针对同一地址,把写操作提前到读操作之前会破坏存储器的内容,因此必须予以避免。无休止地推迟读取操作会造成数据不足,也必须予以避免。

从存储控制器返回的重新排序数据对某些应用来说,可能会是个问题。但解决该问题也很简单,只需给存储控制器分配一个重新排序返回发送指令缓冲区即可。

在某些边界情况下,重新排序可能会增加某些读取访问的延迟。不过,由于重新排序可以提升效率,降低存储控制器的占用,因而可以缩短平均读取延迟。

表1显示的是DDR SDRAM 技术的发展情况。该表选取了有关DDR1、DDR2 和DDR3 比较值得关注的部分规格。选取的速度等级旨在反映中等寿命、大批量生产的产品。

传输速率以几何级速度增长,而核心器件特性,如 RAS 周期,提升的速度非常缓慢,写恢复甚至完全没有改善。按单位间隔来说,每一代器件的相对性能衰减情况都有显著改善。

其它的 DDR SDRAM 参数也体现出类似的量度特征。该表选择的三种参数仅作说明之用。

2顺序和重新排序模式

现在让我们看看可展示新推出的 Virtex-6 DDR SDRAM存储控制器功能的两种工作负载情况。由于该器件既可以顺序模式工作,也可以重新排序模式工作,故重新排序的影响显而易见。

第一种工作负载模型有两种主控方式。第一种主控方式是由CPU执行一个通过矩阵的代码序列。通过矩阵的“步长”会产生指向单库的存储请求,不过行地址随着每次请求都会增加。这种“不良步长”会形成指向单 DRAM 库、但行地址各不相同的许多读取组成的请求流。另一种主控方式是由DMA引擎生成指向一个不同DRAM库的简单串行读取访问流。

顺序方式和重新排序方式将实际执行整体上并不相同的请求流。DRA的行周期时间限制了 CPU的流完成率。同时,DMA的工作负载可以单独处理。在顺序模式下,DMA流按照CPU流进行串行化。在重新排序模式下,DMA流会把有用的工作插入尚未使用的DQ总线周期。由于CPU流的吞吐量受DRAM行周期时间的限制,这样做并不能实现明显改善。不过,如果使用重新排序,DMA 流的执行速率会有所提升。

第二种工作负载模式采用两个DMA引擎,一个用于生成串行读取流,另一个用于生成串行写入流。假定存储控制器交替接收到读取请求或写入请求。为了避免发生其它冲突,所有读取都指向库0,行0。所有的写入都指向库1,行1。

我们在禁用重新排序功能的情况下运行了每个工作负载,然后启用重新排序功能,再次运行。我们使用了默认的存储控制器参数,不过禁用了刷新、ZQ及其它DRAM维护功能。

表2是对两种示例工作负载在一段稳定运行后的效率情况总结。我们以一段时间内携带有效负荷的单位间隔数除以单位间隔总数的方法来计算效率。在启用重新排序功能后,存储控制器的效率有显著提升。

随着峰值数据传输速率的不断攀升,非量度DDR SDRAM参数的趋势将继续得以强化。将来的存储控制器需要不断改进调度算法,以充分发挥今后DDR SDRAM器件的潜力。

上一篇:CADENCE混合信号/MEMS协同设计技术 下一篇:一种基于DSP+FPGA的高速数据采集系统设计