大容量DRAM的刷新开销问题及优化技术综述

2016-07-31 23:32崔泽汉陈明宇
计算机研究与发展 2016年2期
关键词:存储单元功耗命令

崔泽汉 陈明宇

1(计算机体系结构国家重点实验室(中国科学院计算技术研究所) 北京 100190)2(中国科学院大学 北京 100049)(cuizehan@ict.ac.cn)

大容量DRAM的刷新开销问题及优化技术综述

崔泽汉1,2陈明宇1

1(计算机体系结构国家重点实验室(中国科学院计算技术研究所) 北京 100190)2(中国科学院大学 北京 100049)(cuizehan@ict.ac.cn)

动态随机存储器(DRAM)具有速度快、密度高、成本低的优势,被广泛应用于计算机的主存.DRAM采用电容作为存储单元,电容电荷的多少表示数字“0”或“1”.由于存在漏电现象,电容里的电荷会缓慢流失,造成数据丢失.为保证数据正确性,DRAM采用周期性的刷新操作,在数据丢失前,把数据读出然后重新写入存储单元.刷新操作会阻碍正常访存的执行,造成性能上的开销;同时刷新操作会消耗额外的功耗,带来功耗上的开销.刷新的开销与DRAM密度相关:在过去,当DRAM密度较小时,需要刷新的存储单元数较少,刷新开销很小,并未引起关注;但是,随着摩尔定律的发展,DRAM密度越来越大,目前已发展到千兆比特级别,其刷新周期并没有改善,单位时间内需要刷新的存储单元数越来越多,从而使刷新带来的性能和功耗开销越来越严重.刷新问题目前得到了工业界和学术界的广泛关注.首先介绍了目前DRAM的刷新方式和开销,以及工业界已经实现的一些改进;然后把工业界和学术界提出的众多优化方法分为“减轻刷新操作对访存的阻塞”和“减少不必要的刷新操作”两大类,分别进行了分析和总结;最后给出了关于智能刷新管理的总结和展望.

主存;动态随机存储器;刷新;性能;功耗;保持时间;不必要刷新

DRAM具有速度快、密度高、成本低的特性,因此近几十年来一直是计算机主存的首选.随着摩尔定律的发展,处理器的频率越来越高、核数越来越多,虽然DRAM的密度越来越高,但是其延迟、带宽增长却很缓慢,越来越成为制约系统性能的瓶颈[1-2].与此同时,随着内存容量需求的逐渐增大,DRAM占系统整体功耗的比例可达40%[3-4].

图1显示了DRAM系统的层次结构,从顶层到底层包含Rank,Chip,Bank,Sub-array,MAT,Cell.一个Rank由多个Chip并列组成,同步工作,共同驱动内存总线.一个Chip内部包含多个Bank,它们包含独立的行地址译码器(row decoder)和感应放大器(sense amplifier),可以并发访问.通常认为,Bank是DRAM完成独立操作的最小单元.但事实上,每个Bank又可进一步分割为很多Sub-array(纵向),每个Sub-array包含很多MAT(横向).每个MAT有独立的局部感应放大器.一个典型的MAT包含512×512个Cell,即存储单元.每个存储单元由1个电容和1个晶体管组成:电容的电荷多少表示数字“1”或“0”;晶体管的栅极与字线(wordline)相连,由字线控制晶体管的导通;晶体管的漏极与位线(bitline)相连,导通时由位线表示单元里存储的数据.

Fig.1 The hierarchy of DRAM system[5].图1 DRAM系统的层次结构[5]

访问DRAM时,首先需要“激活”1行,即提供行地址,由行地址译码器选通1个Sub-array中的1行,使其字线电平拉高;与字线相连的所有存储单元的晶体管打开,电容与位线连通,电容电荷流向位线,造成细微的电压变动;每个Sub-array的局部感应放大器可以感知到位线上的电压变动,并将其驱动到一定的高电平或低电平(与位线相连的电容也进行了充?放电).当局部感性放大器进一步将数据驱动到全局感应放大器后,才能进行“读写”,根据提供的列地址,从全局感应放大器中选中相应的数据,进行读取或修改.在需要读取另一行的数据前,需要对当前行进行“预充电”,拉低字线电平,关闭晶体管,使存储单元与位线断开,然后将位线电平驱动到中间状态.

DRAM数据能被正常读取的关键在于上述激活过程中,电容电荷对位线造成的细微电压变动可以被感应放大器识别.但是,由于电容存在漏电,电容电荷会随着时间而流失,从而导致激活过程中的电压变动变小,直至不可识别.因此,DRAM需要被定期“刷新”,以补充流失的电荷,保证在激活过程中可以造成足够显著的电压变动.

刷新操作会阻碍正常访存的执行,造成性能上的开销;同时刷新操作会消耗额外的功耗,带来功耗上的开销.在过去,DRAM密度较小,刷新造成的影响很小,因此并未受到关注.但是,随着摩尔定律不断发展,DRAM密度不断增大[6],目前已达千兆比特的量级,刷新造成的性能和功耗开销指数增加,渐渐引起了工业界和学术界的重视.近年来,工业界的一些标准和学术界的一些研究工作都对刷新进行了一些优化,以减轻其性能和功耗开销.本文标题中的“大容量”即指目前千兆比特量级的DRAM,以及未来更高密度的DRAM,如无特殊说明,下文所述的DRAM都是指大容量DRAM.

本文首先简介了目前DRAM刷新存在的问题以及工业界已经提出的一些解决方案;然后把工业界和学术界的优化方法分为“减轻刷新操作对访存的阻塞”和“减少不必要的刷新操作”两大类,进行了分析和总结;最后给出了关于DRAM刷新的研究展望.

1 DRAM刷新现状

1.1 刷新要求

以JEDEC①DDRx规范[7-10]为例,要求在常温下每64ms(高温下为32ms)刷新一遍所有DRAM存储单元.DDRx规范定义了一种刷新方式AR(auto refresh),为了简化DRAM控制器设计,使其方便支持不同类型的DRAM芯片,DRAM控制器只需在每个刷新周期(比如64ms)内向每个Rank发送8 192个刷新命令,由DRAM芯片内部维护刷新的行指针,并根据自身密度决定要刷新的行数.DRAM控制器发送2个刷新命令之间的间隔为刷新周期的1?8192,定义为tREFI;DRAM芯片执行1个刷新命令的时间取决于DRAM芯片的密度,定义为tRFC.表1列出了DDR3DRAM在常温(85℃以下)?高温(85℃~95℃)下的刷新参数,在高温下刷新周期减半为32ms,相应的刷新间隔tREFI也减半.随着DRAM密度增大,其行大小保持不变,而总行数增多,因此每个间隔内需要刷新的行数增多,导致tRFC不断增大,刷新所占的时间比例tRFC?tREFI不断增大.

Table 1 Parameters of DDR3DRAM AR(Normal?Extended Temperature)表1 DDR3DRAM AR参数(常温?高温)

JEDEC协议只是规定了刷新时间,但并没有规定刷新操作具体如何实现.以4Gb DDR3DRAM为例,要求300ns内完成对64行(8个Bank,每个Bank刷新8行)的刷新操作.本文在接下来的章节中先介绍单行的刷新操作是如何执行的,然后介绍如何在规定时间完成对多行的刷新.

1.2 单行刷新原理

一般来讲,对DRAM单行的刷新操作是这样执行的:1)起始状态,所有的位线电平被预充电至VDD?2;2)行地址译码器选通该行,拉高字线电平,该行所有存储单元的晶体管导通,使电容和位线连通;3)根据电容电平为高或低,电荷从电容流向位线或者从位线流入电容,从而在位线上造成细微的电平变动VDD?2±Δ,其变动方向被感应放大器识别;4)局部感应放大器根据变动方向,对位线进行充电或放电,将其电平拉至VDD或0,在此过程中,由于位线和电容连通,电容也被重新充电至VDD或放电至0,即进行了刷新操作.

上述过程类似于激活操作,在DDR3协议中激活操作的延迟定义为tRAS,约为35ns.在刷新下一行之前,还必须先断开晶体管,将位线电平重新预充电至VDD?2.此过程类似于预充电操作,在DDR3协议中预充电操作的延迟定义为tRP,约为15ns.因此Joint Electron Device Engineering Council.http:??www.jedec.org可认为单行刷新等效于激活操作和预充电操作的组合,其延迟大致为50ns.

1.3 AR实现

由于单行刷新的延迟大致为50ns,以4Gb DRAM为例,AR要求在300ns内完成对64行的刷新操作,因此只能通过并行方式实现.但是,并行刷新所消耗的叠加电流必须在DRAM容许范围内.比如,DDR3协议为了避免多个并行的激活操作带来的电流叠加,规定了在tFAW时间(约30ns)内只能执行4个激活操作.如1.2节所述,单行刷新类似于激活操作,也会受到DRAM最大容许电流的限制.

目前,DRAM执行AR时利用了Bank内Subarray级的并发度,而不是Bank间的并发度(8个Bank并行刷新造成的电流叠加会超出DRAM的电流限制).由于刷新只需要使用每个Sub-array的局部感应放大器(区别于激活操作),使得多个Subarray可以并行刷新,而且Bank内多个Sub-array的并行刷新可以共用很多电路,从而使其消耗的电流大大低于线性叠加.

具体地,DRAM将一次刷新操作内要刷新的行分为若干个组,每个组包含1个Bank内的多行①,位于不同的Sub-array.组内的多行利用每个Subarray的局部感应放大器,并行进行刷新.在电流限制范围内,组与组之间的刷新过程可以有一定的重叠.图2显示了多行刷新实现的示例:

Fig.2 Implementation of DRAM AR.图2 DRAM AR实现

在AR执行期间,DRAM Rank的所有Bank都无法处理正常访存请求.最坏情况下,访存的等待时间为tRFC.

1.4 ROR(RAS-only Refresh)实现

另一种没有在JEDEC协议中定义、但是在学术研究中经常被提到的刷新实现方式是利用DRAM激活操作实现刷新功能.如1.2节所述,单行刷新操作等效于对其的激活操作,由于激活操作在早期被称为行地址选通(row address strobe,RAS),因此这种刷新实现方式被称为ROR[11].

不同于AR只需控制器在每个刷新间隔内向DRAM发送1个刷新命令,即可完成对多行的刷新;ROR要求控制器向DRAM的每个待刷新的行发送1个激活命令.激活命令的粒度更小,可以指定刷新的行地址,实现对单行进行控制,因此其刷新实现方式更灵活.比如为了避免在时间tRFC里集中刷新多行从而长时间占用整个Rank,可以将对多行的激活操作尽量分散到整个刷新间隔中;同时,当一个Bank执行激活操作时,其他Bank仍然可以执行正常访存操作,减少访存的等待时间.

由于ROR以行为粒度进行刷新控制,因此经常被使用于一些智能刷新管理方法中.其缺点是不能充分利用Sub-array级的并发刷新在时间和功耗上的优势.同时,由于需要发送大量的激活命令,DRAM的命令总线更容易饱和,从而影响正常访存命令的发送.

1.5 DRAM刷新开销

刷新操作会阻塞正常访存的执行,造成性能的开销.AR执行期间,DRAM Rank的所有Bank都无法响应访存请求.ROR执行过程中,正在刷新的Bank无法接受访存请求.不论哪种刷新方式,都会导致访存被堵塞,延迟增大,最终导致CPU流水线堵塞,性能降低.

同时,刷新是非常消耗功耗的操作.表2显示了DRAM一些操作所消耗的平均电流[12].可见刷新操作是功耗最高的操作,而且持续时间很长.

Table 2 Power Parameters of 4Gb DDR3-1600DRAM表2 4Gb DDR3-1600DRAM功耗参数

随着工艺缩进,DRAM密度仍将以2~3年的速度成倍增长,但是每64ms需要将整个DRAM刷新一遍的约束并没有得到改善,因此,每个刷新间隔内需要刷新的行数相应地成倍增加,刷新所导致的性能和功耗开销随着密度增大而指数增长.图3预测了DRAM密度从4Gb增长到32Gb(tRFC为640ns),相比于理想无刷新的DRAM,上述2种刷新方式所带来的性能和功耗开销[13].在32Gb时,AR使性能下降23.8%,功耗增长114%(ROR由于命令总线饱和,而无法完成刷新要求).

Fig.3 The normalized performance and energy of AR and ROR relative to an ideal refresh-less system.图3 2种刷新方式相比于理想无刷新DRAM的归一化性能和功耗

1.6 工业界关于刷新的一些优化

1)Self Refresh.JEDEC DDRx协议[7-10]和LPDDRx[14-16]协议都支持一种Self Refresh模式,是一种低功耗模式.在这种模式下,DRAM的时钟、DLL、输入?输出缓冲等部件停止工作,只有维持刷新的电路仍然工作,因此这种刷新方式相比于AR更加节省功耗.但是,这种模式的退出要耗费很长时间(≥500ns),如果有访存到来,会被阻塞得更久,更加影响性能,因此一般只用于DRAM长期休眠的场景.

2)Postponed Refresh.JEDEC的DDRx协议[7-10]支持灵活的刷新调度,允许将AR命令推迟最多8个刷新间隔,以避免阻塞访存请求.但这种方式一般只适用于访存不密集的场景,对于访存密集的场景,无论如何推迟,总是会阻塞访存请求.

3)Per-Bank Refresh.JEDEC的LPDDR2协议[14]和LPDDR3协议[15]支持以Bank为单位进行刷新.这种方式有2个好处:①把每次耗时较长的刷新操作分成了多个耗时较短的刷新操作,从而减少阻塞访存的时间;②一个Bank刷新时,其他Bank可以并行处理正常访存请求.但是,完成同样多行的刷新,多个Per-Bank Refresh的总执行时间要长于单个All-Bank Refresh(即AR)的执行时间,这是因为每个Per-Bank Refresh后都需要一段恢复时间,而且Bank间的刷新过程不能重叠.以Bank数为8、容量为4Gb的LPDDR3DRAM为例,AR的持续时间tRFCab=130ns,而单个Bank的刷新持续时间tRFCpb=60ns.因此,这种方式有优势也有劣势,其效果取决于具体的应用场景.

4)Fine Granularity Refresh.JEDEC的DDR4协议[7]支持1x,2x,4x的刷新模式.1x同上述的AR模式,每个刷新周期发送8192个刷新命令;2x,4x模式每个刷新周期发送的刷新命令个数增加2倍和4倍.相应地,2x,4x的单次刷新行数也减少为1x的1?2,1?4,刷新时间tRFC有一定程度的减少.这种方式也是把一个耗时较长的刷新操作分解为多个耗时较短的刷新操作(每个操作仍以Rank为单位),但是,2x,4x模式的刷新操作后都需要一段恢复时间,其刷新消耗的总时间长于1x模式.以容量为4Gb的DDR4DRAM为例,1x模式的刷新持续时间tRFC1为260ns,而2x,4x模式的刷新持续时间tRFC2,tRFC4分别为160ns,110ns,大于1x模式的1?2,1?4.

5)Temperature Controlled Refresh.JEDEC的DDR4协议[7]支持在温度低于45℃时,由DRAM内部按一定的比率选择性地跳过一些刷新命令的执行,从而达到降低刷新功耗的目的.这主要是得益于温度低时,电容的漏电速度减慢,保持数据的时间变长,从而可以降低刷新的频率.但是,对于访存密集的场景,DRAM的温度通常会高于85℃[17],使得这种改进只能在访存很不密集并且散热很好的场景下才能起作用.

6)Partial Array Self Refresh.JEDEC的LPDDRx协议[14-16]支持在Self Refresh模式下禁止DRAM里的部分Bank以及Bank里的部分阵列的刷新操作,从而减少刷新的次数,降低功耗.这种方式不能保证未刷新的存储单元里的数据的正确性,因此适用于不存储有效数据的场景.虽然目前这种方式只适用于类似休眠的Self Refresh模式,但是其工作原理很容易能扩展到正常工作的AR模式.但是,要实际应用这种方式,需要操作系统事先回收相应的存储空间,迁移出有效数据,才能禁止对其的刷新操作.

2 减轻刷新操作对访存的阻塞

如上所述,刷新操作对性能的影响主要归咎于其阻塞了正常访存的执行.因此,如何从命令调度以及刷新实现方式上避免刷新操作对正常访存的阻塞,是降低刷新的性能开销的一个研究方向.

2.1 刷新命令调度

刷新命令调度主要是DRAM控制器调整刷新操作的执行时机,以避开正常的访存命令执行.图4显示了DRAM控制器对1个DRAM Rank进行命令调度的基本原理.在不调度的情况下,DRAM控制器每隔tREFI生成1个刷新命令,并立即执行该刷新操作.如果访存命令队列不空,那么队列中的这些访存将至少被延迟tRFC时间.JEDEC DDRx协议的Postponed Refresh[7-10]允许将AR命令推迟最多8tREFI,从而为调度刷新命令执行时机提供了可能.

Fig.4 Principle of request scheduling in DRAM controller.图4 DRAM控制器的命令调度原理

一种基本的调度策略是推迟刷新操作的执行,优先执行队列中的访存命令.新生成的刷新命令并不立即执行,而是先填入刷新命令队列,只有当访存命令队列为空或者刷新命令已经被推迟了8tREFI时,才执行刷新命令.这种策略降低了刷新操作的优先级,从而减轻其对正常访存请求的阻塞.但是这种基于访存命令队列是否为空的策略存在一个风险,即有可能当前访存命令队列为空并因此执行了刷新操作,但是马上又有访存请求到来,那么新到来的访存请求最多将被推迟tRFC时间.

ER(elastic refresh)[18]改进了上述调度策略:当访存命令队列为空时,不立即执行刷新操作,而是等待一段空闲时间(idle delay),如果没有访存请求到来,才执行刷新操作.其基本思想是,访存命令队列为空后,访存请求有可能在idle delay的时间内到达,因此再适当地推迟刷新操作,进一步降低阻塞访存请求的概率.其idle delay值的选取是动态进行的,当刷新被推迟的时间较短时(小于2tREFI),idle delay值设置为较大的预测值,允许多等待一段时间;随着刷新被推迟的时间增长(2tREFI~6tREFI),idle delay值线性下降,表示刷新的优先级不断提高;当刷新被推迟足够长时间后(大于6tREFI),Idle Delay设置为0.上述idle delay的变化过程,体现了刷新操作的优先级从低到高的转变过程.

上述2种调度策略在访存不是很密集、访存命令队列有可能为空的场景下比较有效,但是在访存很密集的场景下,比如多核,访存命令队列基本不会为空,所有的刷新操作都将被推迟8tREFI然后强制执行,因此并不能有效改善对访存命令的阻塞问题[6].

2.2 访存命令调度

除了对刷新命令进行调度外,DRAM控制器还可以对正常的访存命令进行调度,使其避开刷新操作的执行,避免被阻塞.主存系统通常拥有多个Rank,一个Rank执行刷新操作时,其他Rank仍然可以正常工作,从而为访存命令调度提供了可能.

PCD(preemptive command drain)策略[19]提前执行访存命令队列中属于即将要刷新的Rank的访存请求.由于刷新有很强的周期性和规律性,DRAM控制器很容易预测即将刷新的Rank.这样当这个Rank进入刷新状态时,可以尽量减少访存命令队列中属于这个Rank的访存请求,减轻队列中访存请求与刷新的冲突概率和等待时间.

DCE(delayed command expansion)策略[19]在将访存请求填入访存命令队列时,推迟填入那些属于正在刷新的Rank的访存请求,避免它们占用访存命令队列的调度资源.这样可以将更多可执行的访存请求填入访存命令队列进行调度.

PCD和DCE策略的目标都是当一个Rank正在执行刷新操作时,尽量减少访存命令队列里中属于该Rank的访存请求.因为这些访存请求在访存命令队列中并不会被调度执行,反而占用了队列资源,减少了队列中其他Rank可调度请求的数目,降低了其他Rank的命令调度效率,甚至是占满队列后阻塞其他Rank的命令执行.

2.3 减少单次刷新的阻塞时间

除了利用命令调度避免访存与刷新冲突外,如何通过刷新实现方式的改进,在发生冲突时减少单次刷新阻塞访存的时间也是一个的研究方向.

FGR(fine granularity refresh)[7]通过提高刷新频率,减少每次刷新的工作量,以降低每次刷新阻塞访存的时间.但是FGR增加了总的刷新时间,实验评估显示对于大多数应用,4x模式的性能不如1x模式的性能[19].

RP(refresh pausing)[20]是基于基本的AR所做的改进.由于AR需要一次刷新很多行,如果访存命令在此期间到来,就会被阻塞很长时间.RP通过修改DRAM,允许在访存命令到来时,立即暂停当前的AR,优先执行访存命令,等访存命令执行完后,再接着执行未完成的刷新操作.但是,在访存密集的场景下,RP的效果有限,其会导致刷新操作被频繁暂停,并且最终需要被强制执行(推迟的时间超过8tREFI).

2.4 刷新与访存并发

如何尽量使正常访存和刷新并发进行,是降低刷新影响的另一种方法.

ROR[11]利用激活操作进行刷新,一次只刷新一个Bank的1行,允许刷新操作和访存命令在Bank级并发执行:一个Bank执行刷新操作时,其他Bank可以并发执行访存命令.对于低密度的DRAM,这种方式降低了刷新操作和访存命令的冲突概率,可以减少访存的平均等待时间,因此其性能优于AR.但是,由于不能利用Sub-array级的并发刷新,需要更多次刷新操作完成1次AR的工作量,在高密度的DRAM场景下其刷新效率不高的劣势体现出来[13],一方面,频繁的激活操作反而增大了冲突概率,另一方面,也会严重影响系统的访存并发度,因此其性能反而不如AR,如图3(a)所示;另外,由于同样的原因,其功耗开销要更大,如图3(b)所示.

PBR(per-bank refresh)[14-15]同样支持刷新操作和访存命令在Bank级并发执行,而且可以在一定程度上利用Sub-array级的并发刷新,改善ROR刷新效率不高的劣势.实验评估显示PBR的性能总是好于AR[21].但是受最大电流的限制,刷新操作执行时,可以并发执行的访存命令数相应地减少,降低了系统的访存并发度;而且由于Bank个数较少,仍然会有相当概率导致访存命令和刷新操作冲突,因此这种方式依然会带来一定的性能开销[21].

SALR(sub-array-level refresh)[6,21]在PBR基础上,更进一步的改进是在Sub-array级支持刷新操作和访存命令的并发执行.由于刷新只需要使用每个Sub-array的局部感应放大器,因此可以通过修改DRAM硬件的方式,使一些Sub-array在执行刷新时其他Sub-array可以进行正常的激活、读写、预充电操作.由于Sub-array的个数远大于Bank的个数,因此访存命令和刷新操作的冲突概率极小,可以基本做到不阻塞访存命令.不过,由于最大电流的限制,执行刷新操作时,会减少可并发执行的访存命令个数,从而仍在一定程度上影响性能.另外,这种方式需要对DRAM硬件进行较大改动.

2.5 小 结

表3对本节所述方法进行了归纳:

Table 3 Summary of Reducing the Blocking of Memory Accesses Due to Refresh表3 减轻刷新操作对访存阻塞的方法汇总

不管是刷新命令调度还是访存命令调度,其思想是不修改DRAM本身,而是改进DRAM控制器的调度策略,使刷新命令和访存命令相互避开,降低冲突导致的访存延迟增加,减少性能开销.上述策略都是基于一定的先验信息,对刷新或者访存命令的执行时机进行调度.不同的是,ER所依据的先验信息(idle delay)由访存历史信息预测得来,而PCD和DCE所依据先验信息(即将刷新的Rank)由刷新的规律性很容易准确得到,因此相比而言,后者更具优势.虽然后者可以成功地使访存命令避开刷新操作,提高吞吐量,但是其不可避免地推迟了某些访存命令的执行,使其等待时间增长,从而可能造成性能上的损失.因此,更加智能的调度算法仍然是未来的研究方向.

刷新实现的改进可分2类:FGR和RP尽量减少单次刷新操作阻塞访存的时间(更短的刷新操作或者可暂停的刷新操作);ROR,PBR,SALR则是寻求刷新和正常访存可并发执行的机会,使得刷新操作在“后台”进行,尽量把其对正常访存的干扰降至最低.FGR,RP在访存很密集的情况下效果有限,因为其堵塞访存的总时间没变,甚至有所增长.ROR虽然实现最简单,不需要修改DRAM,但是不能利用Bank内多个Sub-array实现并行刷新,因此在高密度

场景下效率不高,性能反而不如AR.PBR的实现简单(LPDDRx已经支持),而且可以利用多Bank并发.SALR的性能最好,但是需要对DRAM进行加大改动.PBR和SALR可能是未来的发展方向.值得注意的是,将刷新与访存并发执行并不是完美的解决方案,即使完全没有冲突,由于DRAM最大电流的限制,刷新操作的“后台”执行会影响“前台”可并发执行的访存请求数,仍带来一定的性能开销.

上述方法在一定程度上降低了刷新操作对性能的影响,但是并没有改变刷新操作的总量,执行刷新操作消耗的功耗并没有得到改善.

3 减少不必要的刷新操作

从图3(b)来看,随着DRAM密度进一步增大,刷新操作所消耗的功耗将超过执行正常访存命令所消耗的功耗.因此,如何识别并减少不必要的刷新操作,省去其消耗的功耗,是降低刷新的功耗开销的一个研究方向;与此同时,由于刷新操作的减少,其对性能的影响也能得到改善.

事实上所有的DRAM行并不需要以同样的周期刷新,有很多方法可以利用各种信息,减少不必要的刷新操作.根据所利用信息的不同,本节将从信息是什么、如何获取相关信息、以及如何利用相关信息减少刷新操作等方面展开介绍.

3.1 利用单元保持时间差异性

保持时间指DRAM存储单元从被写入数据到仍然可以读出正确数据所持续的时间,即一个存储单元不刷新而能保持数据正确的最长时间.由于制造工艺的偏差(process variation),不同存储单元的保持时间有较大差异,而JEDEC规范对所有存储单元规定了统一的刷新周期,其实是为了保证保持时间最短的存储单元不丢失数据.事实上,保持时间的概率分布呈现为2部分:主要分布和长尾分布.前者涵盖了普通的存储单元,其平均保持时间通常长于40s;后者包括那些有缺陷的存储单元,其保持时间较短[22].图5显示了不同工艺下保持时间的累计分布.从图5可见,除了极少数存储单元需要64ms刷新周期外,大部分的存储单元都可以忍受更长的刷新周期.

Fig.5 The cumulative distribution of retention time at different technology nodes[22].图5 不同工艺下保持时间的累计分布[22]

每个单元的保持时间可以通过软件测试获取.一种简单的测试方法是,把所有单元的保持时间初始化为0,然后执行下面流程:

1)设置刷新周期为T;

2)把所有存储单元初始化为特定的数据,比如全0、全1或其他模式;

3)等待一定时间,比如10×T;

4)检查所有存储单元的值是否为初始值,如果是,则更新该单元的保持时间为T;

5)把T设置为T+ΔT,重新执行上述流程.

由于刷新以行为粒度,每个行的保持时间可以定义为该行中所有存储单元的保持时间最小值.根据保持时间的差异性,不同的DRAM行实际所需要的刷新周期是不同的.利用这个信息,以下这些方式可以从硬件上对不同的行以不同的周期刷新,或者从软件上对不同的行加以区分.

VRA(variable refresh period architecture)[23]将每行所需要的刷新周期值存储在DRAM芯片内部的寄存器或者非易失性存储单元中,比如存储N,表示该行需要的刷新周期为N×64ms;然后由DRAM芯片内部的刷新执行逻辑根据存储的信息减少某些行的刷新频率.具体地,在DRAM内部维护计数器,记录当前经过了多个64ms.DRAM控制器仍按正常频率发送AR命令,但DRAM芯片在对相应行执行刷新命令时,检查其刷新周期值(N)和计数器,只有当后者为N的整数倍时,才执行该行的刷新命令.这种方式由于需要在DRAM芯片内增加存储和控制开销,会造成约7%~20%的面积开销.

RAIDR(retention-aware intelligent DRAM refresh)[24]采用和VRA类似的思想,区别在于不修改DRAM芯片,而是将每行所需要的刷新周期值存储在DRAM控制器内部,由DRAM控制器对不同的行以不同的周期生成刷新命令.更进一步地,RAIDR为了优化控制器的存储开销,并不精确存储每行的刷新周期,而是将所有行按所需刷新周期分为若干个桶,每个桶用1个Bloom Filter表示.对于某一行,按照刷新周期从小到大的顺序依次查找各级Bloom Filter,如果在某一级命中,则说明需要以该周期进行刷新.根据Bloom Filter的假阳性(false positive),不属于其中的元素也可能查找命中,但这只会导致少部分行以比需求更高的频率刷新,并不会带来正确性问题.根据保持时间的分布,前2个桶只包含极少数的行,那么可以以极小的开销只维护这2级Bloom Filter,从而把所有内存行分为3个刷新等级.由于RAIDR需要通过控制刷新命令的生成,控制相应行的刷新执行,因此只能采用ROR方式.

DTail-R[13]也采用类似VRA的思想,区别在于把每行所需要的刷新周期值作为普通数据存储在DRAM存储单元中(而非特殊寄存器或者非易失性存储单元);然后由DRAM控制器适时从DRAM中读取出存储的周期值,控制刷新命令的生成以减少特定行的刷新频率.相比于DRAM芯片的容量,这种方式的存储开销很低.另外,由于刷新的顺序性和周期性,可以设计简单的缓存和预取机制,掩盖DRAM控制器读取存储周期值的开销.同RAIDR一样,DTail需要由DRAM控制器跳过某些行的刷新,因此采用ROR方式是一种直接的做法.同时,DTail还提出了一种silent refresh命令,DRAM在收到这种命令后,只增加内部计数器,不执行刷新操作,从而允许在AR模式下跳过刷新.

ProactiveDRAM[25]降低AR的频率,同时对那些保持时间较短的行使用额外的ROR进行刷新.ProactiveDRAM将这些保持时间较短的行的信息以Bloom Filter的形式存储在DRAM硬件中.DRAM硬件定期检查Bloom Filter,将保持时间较短的行的地址通过旁路信号反馈给DRAM控制器,然后触发DRAM控制器生成相应的ROR命令,进行额外的刷新操作.通过这种方式,对不同的行采用不同的刷新频率.

RAPID(retention-aware placement in DRAM)[26]修改操作系统的内存管理系统,尽量不使用保持时间较小的物理页面,以增大AR的刷新周期.首先,RAPID禁用那些保持时间特别小的物理页面,这些页面永远不会被使用,因此增大刷新周期导致的错误也不会产生影响.通过删除1%的物理页面可以把刷新周期提高到3.2s.进一步地,RAPID把剩余的物理页面按其保持时间大小分为几个桶,分配内存时优先从保持时间较大的桶里分配物理页面,当其中页面使用完时,再从下一个保持时间较小的桶里分配.通过这种分配策略,RAPID可以把刷新周期设置为已经使用的桶里的最小保持时间.那些保持时间更小的桶里的页面由于未被使用,所以即使出错也不会产生影响.然而,RAPID删除物理页面的做法有实用性的缺陷——通常内核、驱动等需要使用大页面(2MB),而在删除了1%的物理页面(4KB)后,很难找到可用的大页面.

RIO(refresh incessantly but occasionally)[27]采用和RAPID类似的思想,即删除那些保持时间特别小的物理页面,以增大AR刷新周期.为了避免RAPID的缺陷,RIO做出了折衷,只删除0.1%的物理页面,这样既能保证很容易找到可用的大页面,又能适当地增大刷新周期.

3.2 利用单元数据有效性

数据有效性指DRAM存储单元里是否存储了有效数据.系统初始状态下,所有存储单元的数据都是无效.随着存储单元被分配给进程,并被写入有效数据,这些存储单元里的数据才变得有意义.而随着这些存储单元被进程释放,其存储的数据也变得无效.那么,对于这些不存储有效数据的存储单元,其数据正确性不需要被维护,对其的刷新操作是不必要的.

每行的数据有效性与物理内存的分配与释放相关.通常,操作系统以页面为粒度分配和回收内存,而内存的1行包含1个或多个物理页面.因此,可以通过监控操作系统分配页面和回收页面的例程,得到物理页面的数据有效性,进而转换为DRAM行的数据有效性信息.

SRA(selective refresh architecture)[23,28]在DRAM芯片内部为每行增加1位寄存器,表示该行是否存储有效数据;然后由DRAM芯片内的刷新执行逻辑在接收到AR刷新命令时,根据相应行的寄存器值,决定是否执行刷新操作.这种方式由于需要在DRAM芯片内增加存储和控制开销,会造成约5%的面积开销.

PARIS(placement-aware refresh in situ)[27]在DRAM控制器内部维护bitmap,每行或每几行对应1b,表示是否存储有效数据.DRAM控制器的刷新控制器逻辑在生成刷新命令时,检查bitmap,确定是否发送相应行的刷新命令.这种方式需要在DRAM控制器内增加bitmap存储空间,为了减少存储开销,可以使1b表示更多的行.由于需要DRAM控制器跳过某些行的刷新,因此PARIS采用ROR作为基本的刷新方式.

DTail-V[13]类似于上述的DTail-R,把每行是否存储有效数据的信息存储在DRAM存储阵列中;然后由DRAM控制器适时从DRAM中读取出相应行的信息,控制刷新命令的生成,从而选择是否对相应行进行刷新.如3.1节所述,DTail既可以采用ROR,又可以支持AR.

PASR(partial array self refresh)[14-16]在硬件上将DRAM分为2个分区:一个分区正常刷新,另一个分区不刷新,分区比例可调.操作系统可以使用一定的机制,将分配的页面迁移到正常刷新的分区中,从而关闭另一个分区的刷新,节省功耗.虽然PASR目前只支持Self Refresh,但是其原理很容易被扩展到AR.

3.3 利用单元数据容错性

数据容错性指对某些应用(如多媒体、机器学习等),有些数据出现一定的误差只会影响结果的精度,并不影响正确性.那么,可以利用应用的这一特性,对不同的数据以不同的周期进行刷新,允许其出现一定的错误.

每行的数据容错性通常需要由程序员提供信息,因为哪些数据可以容忍错误依赖于具体应用,程序员将数据标注为“关键”和“可容错”的.

Flikker[29]将DRAM Bank分为上下2个分区(比例可调):其中一个分区以正常周期刷新,另一分区以多倍的正常周期刷新.这种简单的划分方法只需要很少的硬件开销.它需要操作系统在分配页面时,根据程序员的标注,把“关键”的数据映射到正常刷新的分区中,把“可容错”的数据映射到低频率刷新的分区中.虽然Flikker只支持Self Refresh,但是其原理很容易被扩展到AR.

DTail-T[13]不需要修改操作系统的页面分配策略,而是分配完物理页面后,将程序员的标注信息进一步传递到具体的物理页面,最终再标注到DRAM行.DTail-T类似于DTail-R,将标注信息存储在DRAM存储阵列中,然后由内存控制器从中读出标注信息,根据容错能力进行多周期刷新.如3.1节所述,DTail既可以采用ROR,又可以支持AR.

3.4 利用单元访问历史

访问历史指DRAM存储单元在多久之前被访问过.由于对DRAM存储单元的访问需要先对其所在的行进行激活操作,而激活操作相当于对该行进行了刷新,因此对于那些刚刚访问过的行,其刷新操作可以被适当推迟.

Smart Refresh[30]把内存刷新周期分成4个阶段,在内存控制器里为每行维护2b的减1计数器.当该行被访问时,对应计数器值被复位为3,然后每经过1?4周期,所有计数值减1.内存控制器的刷新控制逻辑每个阶段检查所有行的计数值,只有那些计数值为0(说明距其上次被访问或刷新至少经历了3?4周期的时间)的行才执行刷新,并把计数器复位为3.通过这种机制,Smart Refresh可以避免重复刷新那些刚刚被访问的行.由于需要DRAM控制器跳过某些行的刷新,因此Smart Refresh只支持采用ROR作为基本的刷新方式.

3.5 利用单元冗余信息

JEDEC之所以要求DRAM以64ms为周期刷新,是为了保证数据正确性.而为了保证数据正确性,另一种常用的做法是存储冗余信息,如纠错码.比如,为了更高的可靠性,现在的服务器通常使用ECC内存(可以纠正1位错误,检测2位错误).因此,只要我们使用足够强的纠错机制,即使放松64ms的刷新周期,导致一定的错误,也可以恢复出正确数据.

SEC(selective error correction)[31]降低整体刷新频率,使得少部分存储单元出现错误,然后对这部分内存单元采用针对性的纠错方式,保证其数据正确性.SEC采用ECP(error correcting pointer)[32]方式进行纠错,每个ECP保存了1个错误单元的地址,以及1个额外单元用于替换错误单元,这种方式的存储开销与出错单元的个数成正比.SEC需要事先知道所有由于降低刷新频率而可能出现错误的内存单元,然后构造相应的ECP.在每次读取数据时,首先通过一定的方式检查当前访问的存储单元是否存在对应的ECP;如果存在ECP,则利用其中的替换单元替换从内存中读出的数据;如果不存在ECP,则直接返回从内存中读出的数据.在每次写入数据时,也需要先检查是否存在ECP,如果存在,则把数据写入ECP的替换单元中.

ArchShield[33]是一个体系结构级容忍内存错误的框架,也支持降低刷新频率,其思想与SEC类似.区别是SEC利用ECP进行单元级的替换,而Arch-Shield则利用Fault Map进行字级的替换(selective word-level replication).Fault Map相当于一个表格,记录了当前地址是否存在错误,以及替换字的位置.每次访问数据时,需要先检查Fault Map,如果不存在错误,则访问原始位置,否则访问替换字.

SEC和ArchShield需要在每次数据访问时检查ECP和Fault Map,为了加速查找过程,2种方法都需要在DRAM控制器内增加Cache结构,缓存最近使用过的部分ECP和Fault Map.

3.6 利用温度信息

DRAM存储单元的保持时间与温度相关,当温度较低时,单元漏电速度减慢,因此可以适当地降低刷新频率.

TCR(temperature controlled refresh)[7]在DRAM颗粒内增加温度传感器,当温度低于45℃时,由DRAM颗粒的控制逻辑按一定比例跳过一些刷新命令的执行,达到节省功耗的目的.但这时DRAM控制器仍认为DRAM处于刷新状态,因此这种方式并不能降低性能开销.

曾峰等人提出了一种温度自适应的DRAM刷新时钟电路[34],频率随温度上升而上升.该电路应用于内存控制器中,当温度降低时,降低刷新频率.

殷万君提出了在DRAM存储阵列中加入与温度相关的PTAT冗余单元作为温度传感监测单元[35].利用该传感电路的输出作为控制刷新时钟频率的输入,从而根据温度调节刷新频率.

3.7 小 结

上述所利用的各种信息可以统称为元数据.表4总结了本节所述的各种方法:

Table 4 Summary of Reducing Unnecessary Refresh表4 减少不必要刷新操作的方法汇总

①“DRAM Chip”means that metadata is stored in extra circuit;“DRAM Array”means that metadata is stored in existing array.

②Bitmap can be considered as a table with 1bentry.

③Though PASR and Flikker are designed for Self Refresh,it is easy to implement them with AR.

利用保持时间差异性的方法最有潜力.因为从保持时间的分布[22]来看,只有很少一部分内存单元需要64ms周期刷新,大部分内存单元的刷新频率可以降得很低,因此目前研究最多的也是这种方法.VRA[23],RAIDR[24],DTail-R[13],ProactiveDRAM[25]这4种硬件方法思想类似,都是对不同行采用不同的刷新频率,区别在于智能控制和元数据的实现位置不同:VRA把元数据和控制逻辑都实现在DRAM电路中;RAIDR把元数据和控制逻辑都实现在DRAM控制器中;DTail-R把元数据存储在DRAM存储单元中,把控制逻辑实现在DRAM控制器中;ProactiveDRAM把元数据存储在DRAM电路中,把控制逻辑实现在DRAM电路和DRAM控制器中.RAPID[26],RIO[27]都是通过把保持能力差的行在操作系统中隔离起来,不存储有效数据,从而降低整个DRAM的刷新频率.

这些基于保持时间的方法都面临2个挑战:1)这些方法都需要知道DRAM所有单元的保持时间分布,但是保持时间受很多因素影响,其中最难以预测的2个因素是DPD(data pattern dependence)[36]和VRT(variable retention time)[36-39].前者指单元的保持时间和周围单元所存储的数据相关,后者指单元的保持时间会随着时间而变化.因此,必须在保持时间测试中,测试更多的数据组合以尽量消除DPD的影响,测试更长的时间尽量覆盖VRT的变化周期.但是这无形中增加了测试的成本,而且测试的准确性(可靠性)很难保证.2)这些方法都是以行为单位进行管理,即假设只有很少一部分行需要64 ms刷新周期.但是随着制造工艺向20nm以下缩进,保持时间较短的单元数会增加[40],从而导致包含这样单元的行数增加,即需要64ms刷新的行数增加.极端情况下,只要每行包含1个这样的存储单元,那么所有的内存行都需要以64ms为周期进行刷新.这个趋势会减弱这些以行为粒度管理的方法的效果,而那些从操作系统中删除行的做法将变得更加不可行.针对第1个挑战,如何解决测试的可靠性问题,是采用更严格(成本更高)的测试,还是运行时动态检测,是未来需要研究的问题.针对第2个挑战,如何以其他粒度管理刷新,或者进一步利用不同单元保持时间的空间分布特性,是可能的研究方向.

利用数据有效性的方法最可靠,只有使用的内存才需要刷新,其效果取决于系统的内存使用量.因此,在内存利用率很高的系统中,其效果非常有限.不过,这种方法适宜和其他方法结合使用,空闲内存完全不刷新,使用的内存通过其他方式减少刷新.

利用数据容错性的方法依赖于具体的应用程序,对有些应用程序(多媒体、机器学习等)会有比较大的应用潜力.但是,这种方法必须保证程序能正确执行,即某些数据的错误只带来结果的精度误差,而不能导致程序的控制流出错.因此,如何在保证程序正确执行的前提下,在应用层面更好地发掘数据的容错性,是未来需要研究的问题.

利用访问历史的方法的效果取决于刷新周期时间内被访问的行的比例,然而随着内存密度增大,总行数越来越多,但是刷新周期内被访问的行数受限于应用程序的footprint,却是很有限的,因此这种方式的效果随着密度增大变得越来越有限.不过这种方式非常适用于作为高速缓存的eDRAM,因为其总行数很小,且访问频度很高[41].

利用冗余信息的方法,其纠错机制的性能、成本开销需要在可承受的范围内.盲目地为所有存储单元增强纠错能力并不可取,更好的做法是选择性地为最可能出现错误的单元增强纠错能力.但是这种选择性的机制都需要事先知道哪些单元在降低刷新频率时会出现错误,然后才能为其提供冗余信息[31,33],从而也面临着与保持时间测试同样的挑战——其测试的可靠性是需要解决的问题.

利用温度的方法实现简单,只需简单的传感器和频率调节功能.不过,随着温度的下降,刷新频率的降低比例是一个重要的参数.如果频率降低过多,有可能导致单元丢失数据,造成可靠性的问题.

对于利用保持时间差异性、数据有效性、数据容错性这3类元数据的方法,其元数据的更新和使用都相对不频繁,只需在初始测试或数据分配?释放时设置,在执行刷新命令时使用.DTail[13]提供了一种比较好的解决方案,把这些元数据存储在DRAM阵列中,相比于DRAM容量,其存储开销可忽略不计.另外,由于刷新有很强的规律性,并且相对不频繁,可以设计简单的预取和缓存机制,掩盖元数据的访问开销.

对于利用访问历史信息和冗余信息这2类元数据的方法,其元数据的更新或使用很频繁,比如Smart Refresh[30]需要在每次访问时更新计数器,SEC[31],ArchShield[33]需要在每次访问时检查ECP,Fault Map.由于元数据的数据量过大,在DRAM控制器内维护的成本很高,而将其维护在DRAM阵列中又会带来很大的访问开销.因此,一种解决思路[31,33]是将其维护在DRAM阵列中,同时在DRAM控制器内维护简单的Cache结构缓存最近使用的元数据.但是,由于元数据的数据量与内存容量成正比,随着内存容量的增大,Cache的命中率势必会下降,从而导致元数据访问开销增大.目前的Cache解决方案比较简单,而且最大只评估了8GB的内存容量[33],但是,对于更大容量的内存系统其效果如何值得商榷(目前主流的服务器内存配置远大于8GB).因此,评估内存容量对于DRAM控制器中的元数据Cache的影响,以及如何设计对内存容量可扩展的Cache机制,是未来值得研究的问题.

4 总结与展望

虽然在过去,DRAM刷新的性能和功耗开销很小,并未受到太多关注.但是,随着摩尔定律的发展,DRAM密度持续增大,刷新所造成的性能和功耗开销指数增加.而且,随着3D堆叠技术的兴起[42-43],DRAM芯片的工作温度进一步提升,导致刷新频率进一步提高(95℃~115℃温度范围内,刷新周期进一步减小为8ms[43]),其开销也进一步增大.因此,近几年工业界和学术界越来越重视刷新问题的研究.

本文将工业界和学术界提出的众多优化方案归纳为两大类进行了分析和总结.首先,可以通过控制器调度或改进刷新实现机制的方法,降低正常访存和刷新操作冲突的概率和时间,发掘两者并发执行的可能,从而减轻刷新操作对访存的阻塞.其次,可以利用各种指导信息(元数据),对不同的内存单元采用不同的刷新策略,减少不必要的刷新.前者可以改善性能,后者可同时降低功耗.

其中,利用保持时间的方法最具吸引力,因为工艺偏差使得绝大部分单元都可以容忍更低的刷新频率.但是,这种方法有2个问题,目前尚没有得到很好的解决:1)由于DPD和VRT问题的存在,使得准确获取保持时间比较困难,基于不准确的测试结果进行刷新控制会带来可靠性的问题.因此需要从测试方法或者容错方向进行优化,提高可靠性.2)DRAM以行为粒度刷新,虽然保持时间很短的单元占单元总数的比例很小,但是如果它们在空间上分布很随机,且数量足够多,那么有可能大部分行都会包含这些单元,从而无法降低刷新频率.因此需要研究这些单元的空间分布特性,或者改进刷新的粒度,从而避免这种情况.

综合现有的研究情况,目前已经有很多不同的优化方案,这些方案从研究走向实用,面临着效果、成本和可靠性的问题.一个比较容易接受的方案:首先,应该硬件改动较小;其次,应该把改动尽量限制在一个层次,并对其他层次透明,否则可能需要对接口协议进行扩展;另外,最好能同时兼顾多种方法同时发挥效果;最重要的是,那些放松64ms刷新约束的方案必须保证可靠性不受影响.

[1]Wulf W A,McKee S A.Hitting the memory wall:Implications of the obvious[J].ACM SIGARCH Computer Architecture News,1995,23(1):20 24

[2]Rogers B M,Krishna A,Bell G B,et al.Scaling the bandwidth wall:Challenges in and avenues for CMP scaling[C]??Proc of the Int Symp on Computer Architecture(ISCA).New York:ACM,2009:371 382

[3]Barroso L A,H lzle U.The datacenter as a computer:An introduction to the design of warehouse-scale machines[J].Synthesis Lectures on Computer Architecture,2009,4(1):1 108

[4]Lefurgy C,Rajamani K,Rawson F,et al.Energy management for commercial servers[J].IEEE Computer,2003,36(12):39 48

[5]Zhang T,Poremba M,Xu C,et al.CREAM:A concurrentrefresh-aware DRAM memory system[C]??Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2014:368 379

[6]ITRS.ITRS report 2012update[R?OL].Int Technology Roadmap for Semiconductors,2012[2014-12-11].http:??www.itrs.net?ITRS%201999-2014%20Mtgs,%20Presentations% 20&%20Links?2012ITRS?Home2012.htm

[7]JEDEC.JESD79-4:DDR4SDRAM[S].Arlington,VA:JEDEC Solid State Technology Association,2012

[8]JEDEC.JESD79-3D:DDR3SDRAM[S].Arlington,VA:JEDEC Solid State Technology Association,2009

[9]JEDEC.JESD79-2C:DDR2SDRAM[S].Arlington,VA:JEDEC Solid State Technology Association,2006

[10]JEDEC.JESD79C:Double Data Rate(DDR)SDRAM[S].Arlington,VA:JEDEC Solid State Technology Association,2003

[11]Micron.Various methods of DRAM refresh,TN-04-30[R].Boise,ID:Micron Technology,Inc,1999

[12]Micron.4Gb:x4,x8,x16DDR3SDRAM features[R].Boise,ID:Micron Technology,Inc,2009

[13]Cui Z,McKee S A,Zha Z,et al.DTail:A flexible approach to DRAM refresh management[C]??Proc of the Int Conf on Supercomputing(ICS).New York:ACM,2014:43 52

[14]JEDEC.JESD209-2E:Low Power Double Data Rate 2(LPDDR2)[S].Arlington,VA:JEDEC Solid State Technology Association,2010

[15]JEDEC.JESD209-3:Low Power Double Data Rate 3(LPDDR3)[S].Arlington,VA:JEDEC Solid State Technology Association,2012

[16]JEDEC.JESD209B:Low Power Double Data Rate(LPDDR)[S].Arlington,VA:JEDEC Solid State Technology Association,2010

[17]Liu S,Leung B,Neckar A,et al.Hardware?software techniques for DRAM thermal management[C]??Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2011:515 525

[18]Stuecheli J,Kaseridis D.Elastic refresh:Techniques to mitigate refresh penalties in high density memory[C]??Proc of the Int Symp on Microarchitecture(MICRO).Los Alamitos,CA:IEEE Computer Society,2010:375 384

[19]Mukundan J,Hunter H,Kim K H,et al.Understanding and mitigating refresh overheads in high-density DDR4 DRAM systems[C]??Proc of the Int Symp on Computer Architecture(ISCA).New York:ACM,2013:48 59

[20]Nair P,Chou C C,Qureshi M K.A case for refresh pausing in DRAM memory systems[C]??Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2013:627 638

[21]Chang K K W,Lee D,Chishti Z,et al.Improving DRAM performance by parallelizing refreshes with accesses[C]?? Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2014:356 367

[22]Kim K,Lee J.A new investigation of data retention time in truly nanoscaled DRAMs[J].IEEE Electron Device Letters,2009,30(8):846 848

[23]Ohsawa T,Kai K,Murakami K.Optimizing the DRAM refresh count for merged DRAM?logic LSIs[C]??Proc of the Int Symp on Low Power Electronics and Design(ISLPED).New York:ACM,1998:82 87

[24]Liu J,Jaiyen B,Veras R,et al.RAIDR:Retention-aware intelligent DRAM refresh[C]??Proc of the Int Symp on Computer Architecture(ISCA).Piscataway,NJ:IEEE,2012:1 12

[25]Wang J,Dong X,Xie Y.ProactiveDRAM:A DRAM-initiated retention management scheme[C]??Proc of the Int Conf on Computer Design(ICCD).Piscataway,NJ:IEEE,2014:22 27

[26]Venkatesan R K,Herr S,Rotenberg E.Retention-aware placement in DRAM(RAPID):Software methods for quasinon-volatile DRAM[C]??Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2006:155 165

[27]Baek S,Cho S,Melhem R.Refresh now and then[J].IEEE Trans on Computers,2013,63(12):3114 3126

[28]Isen C,John L.ESKIMO:Energy savings using semantic knowledge of inconsequential memory occupancy for DRAM subsystem[C]??Proc of the Int Symp on Microarchitecture(MICRO).New York:ACM,2009:337 346

[29]Liu S,Pattabiraman K,Moscibroda T,et al.Flikker:Saving DRAM refresh-power through critical data partitioning[C]??Proc of the Int Conf on Architectural Support for Programming Languages and Operating Systems(ASPLOS).New York:ACM,2011:213 224

[30]Ghosh M,Lee H H S.Smart refresh:An enhanced memory controller design for reducing energy in conventional and 3D die-stacked DRAMs[C]??Proc of the Int Symp on Microarchitecture(MICRO).Los Alamitos,CA:IEEE Computer Society,2007:134 145

[31]Lin C H,Shen D Y,Chen Y J,et al.SECRET:Selective error correction for refresh energy reduction in DRAMs[C]??Proc of the Int Conf on Computer Design(ICCD).Piscataway,NJ:IEEE,2012:67 74

[32]Schechter S,Loh G H,Straus K,et al.Use ECP,not ECC,for hard failures in resistive memories[C]??Proc of the Int Symp on Computer Architecture(ISCA).New York:ACM,2010:141 152

[33]Nair P J,Kim D H,Qureshi M K.ArchShield:Architectural framework for assisting DRAM scaling by tolerating high error rates[C]??Proc of the Int Symp on Computer Architecture(ISCA).New York:ACM,2013:72 83

[34]Zeng Feng,Ren Mingming,Yi Maoxiang,et al.Temperature controlled DRAM refresh clocking circuit[J].Modern Electronics Technique,2009,32(15):181 183(in Chinese)(曾锋,任明明,易茂祥,等.温度自适应性DRAM刷新时钟电路[J].现代电子技术,2009,32(15):181 183)

[35]Yin Wanjun.Design of DRAM refresh clock generation circuit based on temperature[D].Chengdu:Southwest Jiaotong University,2014(in Chinese)(殷万君.基于温度的DRAM刷新时钟产生电路设计[D].成都:西南交通大学,2014)

[36]Liu J,Jaiyen B,Kim Y,et al.An experimental study of data retention behavior in modern DRAM devices:Implications for retention time profiling mechanisms[C]??Proc of the Int Symp on Computer Architecture(ISCA).New York:ACM,2013:60 71

[37]Yaney D,Lu C,Kohler R,et al.A meta-stable leakage phenomenon in DRAM charge storage—Variable hold time[C]??Proc of the Int Electron Devices Meeting(IEDM).Piscataway,NJ:IEEE,1987:336 339

[38]Restle P,Park J,Lloyd B.DRAM variable retention time[C]??Proc of the Int Electron Devices Meeting(IEDM).Piscataway,NJ:IEEE,1992:807 810

[39]Kim H,Oh B,Son Y,et al.Characterization of the variable retention time in dynamic random access memory[J].IEEE Trans on Electron Devices,2011,58(9):2952 2958

[40]Kim K,Chung U I,Park Y,et al.Extending the DRAM and FLASH memory technologies to 10nm and beyond[C]?? Proc of the SPIE Advanced Lithography.San Jose,CA:Int Society for Optics and Photonics,2012:1 11

[41]Agrawal A,Jain P,Ansari A,et al.Refrint:Intelligent refresh to minimize power in on-chip multiprocessor cache hierarchies[C]??Proc of the Int Symp on High-Performance Computer Architecture(HPCA).Piscataway,NJ:IEEE,2013:400 411

[42]HMCC.Hybrid Memory Cube Specification 1.0[S].Beaverton,OR:Hybrid Memory Cube Consortium,2013

[43]Tezzaron.OctopusTM8-port DRAM for die-stack applications[R].Naperville,IL:Tezzaron Semiconductor Corp,2010

Cui Zehan,born in 1989.PhD.Member of China Computer Federation.His main research interests include computer architecture,memory system,performance optimization and low power(cuizehan@ict.ac.cn).

Chen Mingyu,born in 1972.Professor and PhD supervisor.Member of China Computer Federation.His main research interests include architecture,operating system and algorithm optimization for high performance computers and datacenter networks(cmy@ict.ac.cn).

Problems and Optimizations of Refresh for Large-Capacity DRAM

Cui Zehan1,2and Chen Mingyu11(State Key Laboratory of Computer Architecture(Institute of Computing Technology,Chinese Academy of Sciences),Beijing100190)2(University of Chinese Academy of Sciences,Beijing100049)

DRAM(dynamic random access memory)is widely used as main memory of computer system,which is of fast speed,high density and low cost.DRAM uses capacitors as basic storage cells,and uses the amount of charges to represent digital“0”and“1”.However,the capacitor charges leak over time,causing data lost.To maintain data integrity,DRAM periodically refreshes all cells-read data out before lost and rewrite into cells.Refresh operations block normal memory requests,causing performance overhead;refresh operations also consume extra power,causing energy overhead.The refresh overheads are related to DRAM density.In the past,DRAM density was relative small,and the amount of cells needing to be refreshed was not that large,so the overheads gain little attention.But as the evolving of Moore s Law,DRAM density grows to Gigabits today,and more cells need to be refreshed during the same period,exacerbating the performance and energy overheads.The problem of refresh has now been an important concern for both industry and academia.In this paper,we first introduce how refreshes are performed,its overheads,and some improvements from industry;then we classify the many improvements from industry and academia into two categories-reducing the blocking of memory requests,and reducing the unnecessary refreshesand give our analysis and summaries,respectively;finally,we conclude the research work and point out the possible research directions.

main memory;dynamic random access memory(DRAM);refresh;performance;power;retention time;unnecessary refresh

TP333.1

2014-12-11;

2015-04-28

国家自然科学基金项目(61221062,61272132,61331008);国家“九七三”重点基础研究发展计划基金项目(2011CB302502);中国科学院战略性先导专项课题(XDA06010401)

This work was supported by the National Natural Science Foundation of China(61221062,61272132,61331008),the National Basic Research Program of China(973Program)(2011CB302502),and the State Priority Research Program of the Chinese Academy of Sciences(XDA06010401).

①根据具体实现和电流限制,每个组也可能包含少数几个(比如2个)Bank的行.

猜你喜欢
存储单元功耗命令
基于任务映射的暗硅芯片功耗预算方法
一种28 nm工艺下抗单粒子翻转SRAM的12T存储单元设计
只听主人的命令
一种新型密集堆垛式仓储系统设计
浮点类型有效位数计算与应用分析
数据在计算机内存中的存储形式及实验验证
移防命令下达后
揭开GPU功耗的面纱
数字电路功耗的分析及优化
这是人民的命令