韦 祎,杨任花,林殷茵
(复旦大学 专用集成电路与系统国家重点实验室,上海 201203)
通过边界行标记的低刷新功耗内存
韦祎,杨任花,林殷茵
(复旦大学 专用集成电路与系统国家重点实验室,上海 201203)
摘要:提出一种通过数个边界行地址寄存器,将DRAM内存按照行地址划分为正常刷新区域、低频刷新区域和无需刷新区域的方案.当数据被集中于DRAM中连续行时,该方案不刷新未存放数据的DRAM行,并且对非关键数据区域采取比正常更低的频率进行刷新,从而可以将刷新功耗按比例降低至内存占用率以下.最后用gem5+DRAMSim2仿真平台对这种方案的硬件部分进行建模并仿真,实验显示如果搭配合适的数据分配算法,该做法能够在很低的硬件开销下有效降低内存功耗.
关键词:DRAM刷新功耗; 内存仿真; DRAMSim2
对于现代数据中心而言,硬件成本只占总开销的一半,大量成本花在供电.在主流服务器中,内存功耗已经占到系统总功耗的30%,与CPU功耗相当,是耗电量最大的部件之一[1].而对于移动设备而言,内存耗电问题也影响着设备使用时间[2].传统DRAM依靠电容电荷存放数据,电荷会因为漏电而流失,在不补充电荷情况下DRAM电容能够保持数据不丢失的时间称为保持时间(retention time).为了补偿漏电损失的电荷,DRAM芯片必须每隔一段时间对所有单元刷新一次,该时间间隔被称为刷新周期(refresh period),刷新周期需要小于DRAM单元的保持时间才能确保数据不丢失.JEDEC规定的标准DDR刷新周期为64ms,通常内存控制器每7.8us向DRAM发送一条自动刷新(auto refresh)指令,一次刷新一行或多行,使得64ms内所有行都被刷新到.随着DRAM容量增大行数增多,每次刷新操作需要刷新的行数增大,功耗和延时也会等比增长,按照趋势,32Gb DRAM芯片刷新功耗将占据总功耗的1/3,且刷新操作会降低DRAM 30%的带宽[3].解决刷新问题是DRAM内存向更大容量发展的重大挑战之一.有两类方法能够降低DRAM内存不必要的刷新操作: 1) 根据保持时间特性降低大部分DRAM行的刷新频率;2) 根据存储内容特性减少刷新.
研究发现,DRAM阵列中绝大多数存储单元保持时间都远大于256ms,如果对大多数DRAM行采用256ms刷新周期而仅对保持时间小于256ms的DRAM行以更高频率刷新,则可以大大提高刷新操作的效率.Liu等[3]提出一种事先测试出DRAM每行保持时间并通过Bloom filter进行标记,将DRAM所有行划分为多个刷新频率档,按照不同频率进行刷新的策略,其研究显示99.9%的行处于256ms刷新档,可以认为该方案将刷新频率降低至约1/4,即降低约75%的刷新功耗.但文献[4]指出,根据测试向量不同和时间推移,DRAM行表现出的保持时间也会变化,很难通过几次简单实验得到DRAM阵列中每行保持时间特性,因此这种基于器件随机特性的方案在可操作性上存在问题.
实际应用中计算机系统并非总是满载运行,然而当前计算机系统在低负载下功耗并不随负载等比下降[1].内存占用率通常远低于100%,但传统刷新方式无论该DRAM行是否存放数据,都进行刷新,这就带来不必要的开销.在LPDDR标准中有partial-array self-refresh(PASR)模式,当DRAM中某个阵列没有存放数据时,可以忽略该阵列的刷新[2],这样的划分方法粒度较粗,如果数据分散在多个阵列中则基本无法启用.Isen等[5]在DRAM控制器中增加额外的存储空间来标记DRAM各区域是否存放有效数据即是否需要刷新,通过操作系统的malloc和free指导硬件进行内存标记,不刷新未被分配到数据的DRAM区域,如果标记粒度足够细,则可以将刷新功耗等比降低至内存占用率.这种做法的额外存储开销与标记粒度成反比,一般几个GB的DRAM内存有上万行,如果对每行进行标记会带来很大的存储开销,因此需要在标记精度和硬件开销之间取舍.Liu等[6]将内存地址划分为正常刷新区域和低频率刷新区域刷新两部分,将对可靠性要求高的关键数据放在正常刷新区域,将能够容纳一定错误的数据(例如图像和音频)放在低频率刷新区域,从而降低刷新功耗,这需要操作系统在数据分配上的支持,尽可能紧凑放置正常刷新区域的数据以免越界到低频刷新区域而出现错误.
本文提出一种用数个边界行地址寄存器将内存划分为正常刷新区域、低频刷新区域和无需刷新区域的方案,当内存地址连续分配时,该方案能够结合文献[5-6]的好处,并且硬件开销很小.本文使用gem5体系结构仿真平台配合DRAMSim2内存仿真器,用小规模SPEC CPU2006测试程序对传统DRAM、Liu等[3]中256ms周期刷新DRAM、类似Isen等[5]中进行每行标记的刷新方案和本文通过行地址边界来划分刷新区域的DRAM内存进行仿真对比.
1通过边界行标记刷新的内存方案
1.1不同刷新区域的标记方法
如果内存数据集中于相邻DRAM行,则可以使用一个或多个行地址寄存器来标记需要刷新的DRAM行,当且仅当待刷新DRAM行处于标记范围之内时,才发送刷新指令.图1列举了几种标记方式: (a) 当数据集中于低物理地址时,用一个最高刷新行边界标记需要刷新区域,需要刷新的区域处于最低行到最高刷新行之间;(b) 当数据集中于高物理地址时,用一个最低刷新行边界标记需要刷新的区域,需要刷新的区域处于最低刷新行到最高物理行之间;(c) 当数据集中于中间物理地址时,用两个边界标记需要刷新的区域,需要刷新的区域处于最低刷新行到最高刷新行之间;(d) 当数据集中于高地址和低地址时,用两个边界标记不需要刷新的区域,需要刷新的区域处于最低行到最低不刷新行之间,以及最高不刷新行到最高物理行之间.
结合文献[6]提出的按照程序数据容错特性划分正常刷新区和低频刷新区的思想,该方案可以进一步延伸为通过正常刷新行边界和低频率刷新行边界,将内存划分为正常刷新区、低频刷新区和无需刷新区3部分.32位Linux系统中,虚拟地址的0~3G为用户空间,3G~4G地址为内核空间,而内核空间又被划分为ZONE_DMA、ZONE_NORMAL 和ZONE_HIGHMEM,其中高端内存ZONE_HIGHMEM不经过页表映射,直接对应最高128MB物理地址.根据Linux已有特性,本方案选择将高地址作为正常刷新区域,将低地址作为低频刷新区域,使分配数据向两边靠拢,而中间区域则没有数据无需刷新.图2是这种改进方案的地址划分示意图.
内存控制器常见的物理地址到阵列内行列地址的映射方式有channel∶row∶column∶bank∶rank、channel∶rank∶row∶col∶bank、row∶col∶rank∶bank∶channel等几种,这几种映射方式的共同特点是列地址和bank地址在行地址的低位,因此会优先填充完一整行数据后才开启下一行.因此只要做到分配的物理地址连续,就能使分配的DRAM连续,以最大化标记效率.在实际计算机应用中,内存资源是在不断分配和释放的,实际操作时不仅需要集中分配内存,还需要在内存释放时动态压缩内存,才能起到最好的标记效果,我们暂时只讨论如何对已标记完成的内存进行硬件刷新操作,软件分配算法留作以后讨论.
1.2DRAM接口和时序修改
判断对DRAM行进行刷新的流程如图3所示.假设低频刷新区域的刷新周期是正常刷新周期的N倍,当内存控制器产生tREFI脉冲时(传统内存控制器受此激励发送刷新指令),判断待刷新行是否在正常刷新区域,或者是否在低频刷新区域且周期计数器下降为0(即已经经过N个刷新周期),以决定是否发送刷新指令.
该方案需要对DRAM接口稍做改动,图4展示了两种方案: (a) 在DRAM芯片内部也增加边界行寄存器,并额外增加更新指令以保持与内存控制器同步,当接收到自动刷新指令时,DRAM芯片通过内部边界行寄存器计算出当前需要刷新的行;(b) 不对DRAM芯片进行任何改动,但是采用ACTIVATE/PRECHARGE指令替代默认的AUTO REFRESH指令,同样可以起到刷新阵列的作用,这也是Liu等[3]采取的刷新方案.两种做法各有优缺点: 方案(a)硬件开销更大,且需要更新DRAM芯片内部边界行寄存器,而优点在于能够采用更高效的自动刷新指令,而且可以使DRAM在处于自刷新(SELF REFRESH)模式下也能进行选择性刷新;方案(b)硬件改动小,可以直接用现有的DRAM芯片,但ACTIVATE/PRECHARGE指令在接口的开销较大.
2gem5+DRAMSim2仿真环境设置
2.1系统参数设置
我们用gem5系统仿真器配合DRAMSim2内存仿真器作为实验平台,用5个SPEC CPU2006测试程序对传统DRAM内存、本文用边界行标记实现的低刷新内存、Liu等[3]的低刷新频率内存和Isen等[5]的通过每行标记的低刷新内存进行测试.系统设置如表1所示,为了节约仿真时间,我们设定最大指令执行条数均为500000000.
2.2低刷新频率建模
gem5本身并没有自带页表,程序的逻辑地址直接对应物理地址.而测试程序地址分配一般从0开始连续往高地址方向增长,如图1(a).这样,在我们仿真时,只需在内存控制器读写内存时及时扩展行边界即可.由于我们目前还不能鉴别测试程序中数据关键与否,暂时只仿真图1的正常刷新区域与无需刷新区域,而不仿真图2中的低频刷新区域.
对于文献[3]中提到的低频率刷新模式,由于据称99.9%的DRAM行处于256ms刷新档,因此可以认为它将刷新频率降低至1/4,只要在DRAM配置文件中把刷新指令发送间隔tREFI改至1/4即可.
对于文献[5]中每行进行标记是否刷新的方案,我们在内存控制器模块中添加该行是否被访问到的数组,通过判断当前行对应数组值是否为true来决定是否发送刷新指令.
3仿真结果与分析
3.1行标记效率
表2统计了各测试程序执行前500000000条指令下内存占用情况,其中DRAM行跨度和行跨度分别代表访问过的最低/最高字节/行地址差值,这也是在操作系统不干预内存分配下,本文方案需要刷新的DRAM容量和行数.实际使用行数表示所有被读写访问过的行数.可以看到,我们的标记方法在bzip2、hmmer和mcf上效率非常高,而在gcc上效率较差.
表1 仿真系统设置
表2 各测试程序前500000000条指令的内存占用情况
3.2各方案执行时间和功耗
表3列举传统DRAM刷新策略、Liu等[3]、Isen等[5]和本文方案仿真的延时和功耗结果.图5~图7分别展示各策略相对于传统DRAM的归一化延时、刷新能耗和总能耗.
如图6,本文提出的刷新策略能够将bzip2、gcc、hmmer、mcf和soplex的刷新能量分别降低至8.96%、3.74%、0.29%、0.46%和0.34%,它们对应2GB内存的占用率分别为9.8%、3.9%、0.22%、0.45%和0.72%,可以看到刷新功耗比例基本上等于被标记的内存占内存容量的比例,由于内存占用量增长是递进的过程,因此大多数测试程序归一化刷新功耗比内存占用率略低.降低刷新频率后总功耗降低程度与刷新功耗占总功耗的比例有关,内存读写越少,则刷新功耗占内存总功耗比例越大,我们发现bzip2和mcf内存读写次数远高于其他3个测试程序,因此如图7,其他3个内存读写较少的测试程序的总功耗降低效果更为显著,刷新功耗占总功耗的比例在2GB内存并不突出,如果换成32GB以上内存,则总功耗的降低也会非常明显.减少不必要的刷新后,刷新指令与读写指令发生冲突的几率降低,因此执行时间会得到改进,如图5,bzip2和mcf这两个内存负载较高的测试程序在执行时间上的改善更明显.
表3 性能/功耗仿真结果
由于我们测试的程序内存占用量较小,本文方案比Liu等[3]表现更好,实际上通过数据分配来降低刷新功耗的方案与Liu等[3]通过保持时间特性降低刷新频率的方案相正交,两者可以结合使用.本文方案更适用于内存占用量较少时,操作系统可以定期清理内存中最近没有使用的程序(如Android系统),来降低刷新功耗.
由于其他程序内存分配相对紧凑,本文方案在除了gcc之外的测试程序上与Isen等[5]效果相差无几,但存储标记位的开销从2^NUM_ROWS下降到NUM_ROWS.要在实际使用时提高本文方案的标记效率,必须使操作系统连续分配内存,并定期整理内存碎片,使占用行集中于标记范围之内,这比Isen等[5]的软件开销大.数据集中分配的另一个好处是可以同时引入文献[6]的将数据分为正常刷新和低频刷新区域做法,使刷新功耗进一步降低至内存占用率以下.理想情况下本文方案刷新功耗降低比例计算式如下:
表4总结了几种降低刷新内存功耗方案的特点和代价,本文方案硬件开销小,在合适数据分配方法支持下,拥有文献[5-6]的结合效果.
表4 各方案对比
4结语
本文提出了一种通过边界行地址将DRAM内存划分为正常刷新区域、低频刷新区域和无需刷新区域的低功耗内存方案,将关键数据集中放置在正常刷新区域,非关键数据集中放置在低频刷新区域,从而结合Isen等[5]、Liu等[6]的效果,在内存占用率低或可以低频刷新的数据比例较高时有效降低刷新功耗.我们通过gem5+DRAMSim2对该硬件方案仿真,结果显示在运行单个spec2006测试程序时,本文方案能够做到接近Isen等[5]的效果,将刷新功耗降低至内存占用率,而硬件开销小,仅需要两个行边界地址寄存器就能实现数据标记而不是开销等比于DRAM行数.在实际操作中,本文的硬件刷新方案需要搭配合适的数据分配算法支持,具体算法留作以后讨论.
参考文献:
[1]BARROSO L A, CLIDARAS J, HÖLZLE U. The datacenter as a computer: An introduction to the design of warehouse-scale machines [J].SynthesisLecturesonComputerArchitecture, 2013,8(3): 1-154.
[2]Micron Technology, Inc. TN-46-12: Mobile DRAM power-saving features/calculations[S/OL]. https:∥www.micron.com/~/media/documents/products/technical-note/dram/tn4612.pdf, 2005.
[3]LIU J, JAIYEN B, VERAS R,etal. RAIDR: Retention-aware intelligent DRAM refresh[C]∥International Symposium on Computer Architecture (ISCA). Portland, USA: IEEE, 2012: 1-12.
[4]LIU J, JAIYEN B, KIM Y,etal. An experimental study of data retention behavior in modern DRAM devices: Implications for retention time profiling mechanisms[C]∥International Symposium on Computer Architecture (ISCA). Tel-Aviv, Israel: ACM, 2013: 60-71.
[5]ISEN C, JOHN L. ESKIMO—energy savings using semantic knowledge of inconsequential memory occupancy for DRAM subsystem[C]∥MICRO. New York, USA: IEEE, 2009: 337-346.
[6]LIU S, PATTABIRAMAN K, MOSCIBRODA T,etal. Flikker: Saving DRAM refresh-power through critical data partitioning[C]∥ASPLOS. California, USA: ACM, 2011: 213-224.
[7]Micron Technology, Inc. TN-41-01: Calculating memory system power for DDR3 introduction[S/OL]. https:∥www.micron.com/~/media/documents/products/technical-note/dram/tn41_01ddr3_power.pdf, 2007.
[8]JACOB B, NG S, WANG D. Memory systems: Cache, DRAM, disk [M]. Massachusetts, USA: Morgan Kaufmann Publishers, 2010: 428-429.
文章编号:0427-7104(2016)03-0347-07
收稿日期:2015-04-20
作者简介:韦祎(1990—),男,硕士研究生,E-mail: fakemoongod@163.com.
中图分类号:TP 303
文献标志码:A
Lowering Main Memory Refresh Energy by Using Boundary Row Address Registers
WEI Yi, YANG Renhua, LIN Yinyin
(StateKeyLaboratoryofASICandSystem,FudanUniversity,Shanghai201203,China)
Abstract:A DRAM refresh solution is proposed to solve the refresh power problem of DRAM, which uses several boundary row address registers to divide memory space into normal-refresh region, low-frequency-refresh region and no-refresh region. When data are allocated to continuous rows in DRAM, this solution can skip the refresh of DRAM rows without data and refresh DRAM rows containing non-critical data with a lower frequency, so refresh power consumption can be reduced below memory occupancy rate. gem5+DRAMSim2 simulation platform is used to model the hardware behavior of this solution. Experiment shows that this solution can efficiently reduce energy consumption with low hardware cost.
Keywords:DRAM refresh energy; main memory system simulation; DRAMSim2