基于当代DRAM结构的存储器控制器设计
1、引言
当代计算机系统越来越受存储性能的限制。处理器性能每年以60%的速率增长,存储器芯片每年仅仅增加10%的带宽,本文就如何设计一种符合当代DRAM结构的高效存储器控制器进行研究。
本文第二部分介绍当代DRAM结构特点;第三部分介绍存储器控制器结构以及调度算法;第四部分介绍模拟环境以及性能表现。
2、当代DRAM结构
为了提高存储器的性能,存储器控制器的设计必须充分利用当代DRAM的特点。DRAM是3D的存储器(体行列),每个体独立于其他体操作并且一次存取整行。当存储阵列的一行被存取(行激活),存储阵列的整行被传输到这个体的行缓冲。当一行在行缓冲中处于激活态,任何的读写(列存取)可以执行。当完成所有可利用的列存取,被缓冲的行必须依靠外在的操作(体预充电)写回存储阵列,为后来的行激活操作做准备。
存储器存取调度者必须满足DRAM时序和资源限制。共享的地址和数据线资源使存取串行化到不同的DRAM体,但是每个体的状态机是独立的。因此,调度者必须仲裁要使用单一资源的预充电、行、列操作。要充分利用存储带宽,必须每次行激活下有足够的列存取并且隐藏其他体的预充电/激活延迟。
3、存储器控制器结构及调度算法
存储器存取调度是排序DRAM操作(体预充电,行激活,列存取)完成当前挂起的存储器存取的过程。操作表示一个命令(如行激活、列存取),被存储器控制器发射到DRAM。访问表示由处理器产生的存储器访问(如读访问或者写访问)。一个访问产生一个或者多个存储器操作。
图1.存储器控制器结构
图1显示采用存取调度算法的控制器结构。每个体有预充电管理器,行仲裁器。预充电管理器决定什么时候对与他相关的体预充电。每个体的行仲裁器决定哪一行被激活。列仲裁器被所有体共享,授权共享的数据线资源给来自所有挂起的访问的列存取。最后,预充电管理器、行仲裁器、列仲裁器发射选择的操作给单一的地址仲裁器,地址仲裁器授予共享地址资源给一个或者多个操作。
预充电管理器,行仲裁器,列仲裁器可以使用多个不同的策略选择DRAM操作。由于地址线资源的是共享的,地址仲裁器策略决定哪个预充电、激活、列操作被执行。跟其他调度策略一样,按序或者优先权策略可用来作为地址仲裁器策略。列优先调度策略可以减少到激活行的访问延迟,然而预充电优先或者行优先调度策略会增加体并行性。
下面介绍几种预充电管理器,行仲裁器,列仲裁器可能使用的调度策略:
In order:DRAM操作只会执行最早请求挂起的访问;
Ordered:越老的访问优先级越高;
Open:只有在其他行有挂起的访问而激活行没有挂起的访问才进行体预充电。当有显著的行局部性使得后来的访问命中前面访问的行,Open策略应该采用;
Closed:只要激活行没有挂起的访问体就预充电。后来的访问不太会命中前面访问的行,closed策略应该采用。
4、控制器性能表现
传输带宽而不是访问延迟驱动流处理器性能。因此流媒体处理系统是首要的需要存储器存取调度。为了评价存储器存取调度对于媒体处理器的性能影响,通过模拟运行典型的基准程序。
4.1模拟环境及基准
Imagine流存储系统包括2个地址产生器,4个交叉存储体控制器,2个记录缓冲按正确顺序放置流数据在SRF。所有这些单元在同一芯片Imagine处理器核中。地址产生器支持3种地址模式:常量跨步,间接寻址,位翻转。地址产生器可以产生任何长度的存储器访问流,只要数据适合SRF。对于跨步访问,地址产生器利用基址、跨步、长度,连续的地址依照基地址增加跨步常量。对于间接寻址,基地址加上来自SRF的变址计算地址。实验运行在一组微基准上,如表1。
4.2性能表现分析
存储器控制器以执行没有重排序作为性能比较的基础。即控制器使用按序策略:列存取只执行最早挂起的访问。如图2黑色的条状代表按序策略性能。unit load取得DRAM峰值带宽(2GB/s)的97%,3%的开销是有时预充电/激活延迟;unit load到unit持续带宽14%的下降是因为读和写交叉,读访问和写访问转换需要1周期的数据引脚高阻态;unit conflict由于体内行来回交换使得带宽下降到峰值得51%;random只有unit load 的15%带宽,因为存取一个字需要7 DRAM周期。
4.3.1 简单调度
简单的First-ready存取调度策略平均提高25%性能。First-ready调度采用ordered优先,如表1,来决定所有的调度。First-ready调度者考虑所有的挂起访问并且为不违反时序和资源限制的最早挂起的访问调度1个DRAM操作。这个调度算法最明显的好处就是当等待为了最早挂起访问的预充电或者激活操作时,可以同时对其他体进行存取,DRAM内部多体并行。
图2. 按序和first-ready存取调度下的存储器带宽
图2,first-ready调度算法比按序在微基准最多增加性能79%。unit load提高较小;Random提高125%,因为他们能够显著提高每次行激活列存取的数量。
4.3.2 复杂调度
更加具有挑战性的调度算法能够进一步提高性能,这部分将研究4种调度算法进一步提高存储器带宽。如图3,包含random的基准偏向关预充电策略,这种策略只要激活行没有挂起访问就进行体预充电。对于大部分其他基准,开和关预充电策略相差甚微。除了Unit load用col/closed算法表现差,其他基准都有较大性能提高。
图3.各种存取调度算法情况下的存储器带宽
5、结论
本文创新点:存储器存取调度大大地增加了DRAM存取带宽的利用,缓冲存储器访问命令,按照某个顺序选择执行,既有体间并行又最大化利用每个行命令的列存取数量,使得系统性能提高。在大部分基准下,关闭页调度策略是有利的。这部分地因为DRAM有合并最后列存取请求的体预充电的能力。调度算法是否行优先或者列优先在性能上差异较小。最后,调度读优先于写可提高性能。存储器存取调度是最大利用日益宝贵的存储器带宽资源的重要技术。