一种基于Bank划分的自适应页策略确定方法
【技术领域】
[0001]本发明属于计算机体系内存系统结构领域,具体涉及一种基于Bank划分的自适应页策略确定方法。
【背景技术】
[0002]现代的DRAM内存系统,主要是依靠访存请求的局部性原理来优化内存系统的功耗效率和性能,但是随着片上多核处理器集成了越来越多的核,核与核之间对共享内存资源的竞争越来越激烈,不同核之间的访存请求交织在一起,相互干扰,单个应用的访存请求的局部性逐渐消失,致使内存的功耗已接近甚至超过了处理器的功耗。而存储墙问题,也导致了存储器已经成为整个系统性能提升的瓶颈。因此,降低DRAM内存系统的功耗,提高系统性能已经是迫切需要解决的问题。
[0003]内存控制器会根据访存请求的物理地址和自身的地址映射机制,确定其在DRAM中具体的位置(包括访存请求的内存通道的地址,rank地址,Bank地址,行地址,列地址)。在DRAM内存系统中,Bank(存储体)是一个包含行和列的二维结构。每一个Bank只有一个数据区和一个行缓存。行缓存用来存储Bank中某一行的数据,Bank中的数据只能从该Bank中的行缓存中被访问。每一次访存请求都必须经历三个步骤:
[0004]I)行激活(row activat1n)。根据行地址把目标行中的数据写入行缓存。
[0005]2)列访问(column access) 0根据列地址对行缓存中的目标行进行列数据的读/与ο
[0006]3)预充电(precharge)。将存储在行缓存中的数据写回Bank的数据区,并清空行缓存使其处于空闲状态。
[0007]如果目标行已经在行缓存中,只须进行列访问,称为行命中;否则称为行冲突。行冲突需要首先进行预充电,行激活,然后才能进行列访问。显然,行冲突相比行命中,需要进行更多的行激活和预充电操作,这势必会引起更多的访存延迟和功耗消耗。因此增加行命中率也是优化内存系统的一个关键因素。
[0008]DRAM内存系统,功耗分成四类:背景功耗(background power),操作功耗(operat1n power),读 / 写功耗(read/write power)和输入 / 输出功耗(1/0 power) 0不管是否有访存请求,背景功耗一直被消耗;操作功耗只消耗在激活行和预充电的过程中;读/写功耗主要消耗在列访问读写数据的过程中;输入/输出功耗主要消耗在数据的输入/输出上。在DRAM中,rank是最小的功耗管理单位。当一个rank中所有的Bank处于空闲状态时,可以将该:rank处于低功耗模式(power-down mode),此时该rank的背景功耗最小。本发明所降低的功耗主要是指降低背景功耗和操作功耗。因此,增大rank处于低功耗状态的机会也是降低功耗的一种有效方法。
[0009]对行缓存的管理方法就是行缓存页策略,页策略对于DRAM系统的功耗和性能有很大的影响,不同的页策略可以提高内存系统的性能或者降低内存系统的功耗开销。有两种行缓存页策略:开放页策略和闭合页策略。这两种不同的页策略主要的不同在于进行预充电的时机不同。开放页策略是在列访问之后延缓对行缓存的预充电操作,保持该目标行继续有效直至新的目标行的访存请求到来,如果发生行命中,则避免了连续访问同一目标行需要进行再次激活造成的不必要延迟和功耗;如果发生行冲突,增加了额外的预充电和行激活的操作,也就增大了内存额外开销。闭合页策略是在列访问后,立刻将行缓存的数据写回到数据阵列,使行缓存处于空闲状态,接下来的访存请求就可以直接进行行激活操作。闭合页策略不需要考虑下一个访存请求是否发生行命中。开放页策略和闭合页策略各有特点,但随着片上处理器集成了越来越多的核,多个核对共享内存资源的争夺越来越激烈。不同的访存请求相互交织在一起,相互干扰,访存请求的局部性原理的逐渐消失使得单一的页策略不再适合多核共享的内存系统。研究表明,最好的页策略是根据访存请求的特点制定的,因此本发明提出自适应页策略来代替传统单一的策略来优化内存性能。
[0010]目前,已有一些研究致力于降低DRAM内存系统功耗或系统性能。Muralidhara等人提出基于内存通道的划分,其原理是监控应用运行时的访存行为,根据不同线程的访存行为给应用分配不同的内存通道,可以减少不同线程间使用内存通道的干扰,提高内存功耗效率。但是基于内存通道的划分,相对来说划分的粒度太大,因为系统中线程数一般比内存通道数要多,所以一部分线程必须被分配到同一内存通道中,共享通道的线程间的访存请求同样会相互干扰,影响内存的性能。Mingli Xie等人提出基于应用的页策略,其原理是根据每一个应用的访存行为特征,为不同的应用分配不同的页策略。此方法虽然也是动态的根据访存请求的特点动态的分配页策略,但是每一个应用的访存请求可以映射到的Bank的数目是相同的,每一个Bank接收的访存请求的特点是不同的,如果为一个应用所对应的所有Bank分配同一种页策略,就会大大降低每一个Bank的使用率。Xiaowei Shen等人提出了基于行地址的页策略,其原理是跟踪每一个访存请求的行地址并且根据行地址决定是否关闭行缓存。但是他并没有考虑多核访存请求之间的干扰,也并没有对内存的功耗有太多的优化。
【发明内容】
[0011]本发明提出了一种基于Bank划分的自适应页策略确定方法。首先进行Bank划分,使不同核的访存请求映射到不同的Bank,隔离多个核的访存请求,彻底消除了多个核访存请求的相互干扰,最大程度的保留了每一个核的访存请求的特点。在Bank划分的基础上,根据每一个Bank接收的访存请求的特点动态地分配最优的页策略。从而达到降低内存功耗,提升系统性能的目的。
[0012]为达到上述目的,本发明采用以下技术方案。
[0013]步骤I,实现Bank划分。
[0014]步骤1.1,跟踪访存请求,用线程ID标记来自不同核的访存请求。
[0015]步骤1.2,根据访存请求的线程ID决定该访存请求映射到的rank地址。
[0016]步骤1.3,根据内存控制器的地址映射机制,计算出访存请求对应的DRAM地址,所述DRAM地址包括内存通道地址、rank地址、Bank地址、行地址、列地址。
[0017]步骤1.4,根据步骤1.3得出的Bank地址和该访存请求的线程ID,重新计算新的Bank地址。
[0018]步骤1.5,通过以上几步对内存地址的重定向,将不同线程的访存请求映射到不同的Bank上。
[0019]步骤2,通过步骤1,隔离了各个核之间访存请求的相互干扰,保留了每一个核的访存请求的特点;收集统计每一个核访存请求的特点实现自适应页策略。
[0020]步骤2.1,监控访存请求,获取每一个Bank所接收的访存行为信息。分别统计每一个Bank接收的访存请求的数目(记为accesses),行命中率(记为hitRate)。
[0021]步骤2.2,根据每一个Bank的accesses和hitRate,为不同的Bank分配不同的页策略。方法如下:(accessest为判断Bank接收访存请求数目多少的临界值,hitRate t为判断Bank接收访存请求命中率高低的临界值):
[0022](I)如果所述Bank的accesses小于accessest,为该Bank的行缓存分配闭合页策略。
[0023](2)如果所述 Bank 的 accesses 大于 accessesJH hitRate 小于 hitRate t,为该Bank的行缓存分配闭合页策略。
[0024](3)如果所述 Bank 的 accesses 大于 accessesJH hitRate 大于 hitRate t,为该Bank的行缓存分配开放页策略。
[0025]步骤2.3,周期性执行步骤2.1,2.2,将根据当前周期的访存行为信息,在下一个周期开始时为相应的Bank分配最佳的页策略。
[0026]与现有技术相比,本发明具有以下优点:
[0027]以Bank为划分粒度,将不同核的访存请求映射到不同的Bank上,从根本上消除多个核之间访存请求的相互干扰。保留了每个核访存请求的原始特征。在Bank划分的基础上,用自适应的页策略代替了传统的单一的页策略。因为每一个Bank接收的访存请求的特点不一样,开放页策略和关闭页策略也都有各自的特点,所以就根据每一个Bank接收的访存请求的特点,为该Bank分配最佳的页策略。通过本方法可显著提高Bank的使用率,进而在降低DRAM功耗的基础上,达到提高系统性能的目的。
【附图说明】
[0028]为使本发明的目的,方案更加通俗易懂,下面将结合附图对本发明进一步说明。
[0029]图1为DRAM内存系统的层次结构图,内存晶粒之间依据层级由大到小:内存通道(channel) >双列直插式存储模块(DIMM) >存储体阵列(rank) >存储体(Bank),本方法主要研究Bank这一层;
[0030]图2为行缓存策略的示意图,行冲突的开销是行命中的2-5倍,要减少行冲突,充分利用行命中的优势;
[0031]图3为多核之间访存请求相互干扰的图;
[0032]图4为存储体划分方法的示意图;
[0033]图5为存储体划分方法消除干扰的示意图;
[0034]图6为本发明实施例方法使用的测试程序分组图;
[0035]图7为本发明实施例方法对行命中率影响的示意图;
[0036]图8为本发明实施例方法对内存性能影响示意图;
[0037]图9为本发明实施例方法对DRAM内存功耗的影响示意图;
【具体实施方式】
[0038]为使本发明的目的,技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。
[0039]本发明所涉及的是基于Bank划分的自适应页策略确定方法,以一个具有I个内存通道(channel), 2rank/channe1, 8Bank/rank的DRAM内存系统和4个核的处理器为例。运行的测试程序是单线程的SPEC CPU2006,每一个workload由4个测试程序组成,每一个核运行一个benchmark,共十组workload,如图6所示。具体步骤如下:
[0040]步骤1,为消除线程间访存请求的相互干扰,实现Bank划分。
[0041]运行一个workload group (4个测试程序),每个核上运行一个测试程序,这4个核的访存请求相互交织在一起,使得访存的局部性原理逐