一种面向近似应用的低开销DRAM刷新方法及系统与流程

文档序号:11620138阅读:517来源:国知局
一种面向近似应用的低开销DRAM刷新方法及系统与流程

本发明涉及存储器设计技术领域,特别涉及一种面向近似应用的低开销dram刷新方法及系统。



背景技术:

当前处理器系统的很大一部分功耗都由dram主存储器产生,而且该趋势还在愈演愈烈。近期有研究表明,现代服务器系统中,主存系统产生的功耗占据了多达30~40%的比例,而主存功耗可以分为内存控制器功耗、背景功耗和动态功耗,背景功耗的产生和访存活动无关,它主要来源于主存外围电路,晶体管漏电以及刷新功耗,其中刷新功耗是由dram存储单元电容漏电导致的,dram控制器必须通过周期性的刷新操作补偿电容漏电电荷,从而保正存储数据的正确性。bhati等人的研究表明,超过20%的主存功耗是由dram的刷新操作产生的,因此,减少dram主存的刷新功耗对于系统能效优化非常重要。

尽管jedec规定了64ms的刷新间隔标准,但是实际研究表明,99%的dram单元保持时间能够达到将近10s,如图1所示,因此,传统内存系统的刷新机制还有很大的设计空间。

近似计算作为一种降低能耗的思路越来越多地受到重视,特别是当前移动和嵌入式设备的兴起,很多计算任务如媒体处理(视频、音频和图像等)、识别以及数据挖掘等并不要求计算结果完全正确,拥有着一定程度的差错容忍能力,然而,传统的内存系统所表现出来的“长尾效应”即将99%的努力花费在了消除1%的差错率上是对能耗的极大浪费。

在dram中,对存储单元的读写操作可以代替刷新操作,如果对同一个地址单元的连续两次读写时间间隔小于该单元的保持时间,就意味着该单元可以不进行刷新操作,从而节省刷新功耗,典型近似计算应用例如多媒体、游戏、音视频,只有一小部分与程序控制流相关的数据对程序执行的正确性起到关键性作用,这部分数据被称为关键数据,这部分数据中发生的保持时间故障对输出正确性影响很大,而其他的大量数据集,对包含保持时间故障在内的故障并不敏感,这一部分数据通常被称为非关键数据,因此为了尽量减少存储器的刷新操作,可以利用近似计算中非关键数据的访存模式对其在dram中的存储进行重映射,因此,结合dram存储器中保持时间偏差的分布,通过合理的数据重映射,可以在不影响应用用户体验的前提下,减少数据刷新操作,降低刷新功耗。

以下为现有技术,如下所示:

smartrefresh:由于内存单元存储数据的电容电荷的不断流失,内存单元每隔一段时间就要进行刷新以防止电荷流失过度造成数据错误,jedec制定了dram每隔64ms刷新一次的标准,当前的内存芯片遵循了这一标准,在dram内存控制器中设置了计数器,当计数器递减为零时表明已经过64ms时间,内存控制器将会重置计数器并发送刷新命令,如图2所示行刷新(rowrefresh)命令是固定发送的。

为保证数据正确的刷新操作,本质上则是对dram单元的读出和重新写回以恢复存储电容的电荷水平,而对内存的读出和写入操作本身就会将对应内存行单元的数据进行刷新,因此在访存操作之后的刷新操作是可以避免的,图2行访问(rowaccess)所示是smartrefresh最好情况,在每个行rk的刷新命令发送之前,该行均收到了访存请求ak,因此所有访存之后的刷新操作均可以取消从而节省能耗。

smartrefresh的基本思路是为bank中的每行设置一个2比特或3比特大小的关联计数器,计数器的值都在内存控制器中进行存储和更新,在一个刷新间隔内计数器的值将从最大值递减到零,并且当内存行被读写时相应计数器的值要重置到最大值重新开始递减,内存控制器只会对计数器为零的内存行进行刷新,如果计数器的值递减到零,此时意味该内存行必须要被刷新,因此访存操作通过引发计数器重置而将刷新操作推迟,最好情况如图2所示,内存中不会有刷新命令产生。

图3所示探讨了smartrefresh工作机制,如,图3中(a)图所示,使用2-bit大小的计数器,并且刷新间隔为64ms,假设整个过程中,没有任何程序对dram发起访存请求,内存控制器将会自动更新计数器的值,每隔16ms将其递减,当计数器递减为零时,相应内存行需要被刷新,此时所有内存行的计数器值都为零,内存控制器需要对所有行进行刷新,由于刷新命令无法并行执行,因此此时内存系统的性能将会受到严重的影响,图3中(b)图中计数器的值初始化时从0到3交错排列,可以一定程度上避免大量内存行同时需要被刷新的情况,然而这样的方案还是有一些问题,首先,将计数器随机初始化意味着每次都会有1/4的内存行需要被刷新,甚至是刚开始初始化时就有1/4的计数器值为0,其次,在运行过程中,由于访存的读写请求会将寄存器重置成最大值,因此会有可能面临图3中(a)图所示的情形。

为了解决以上问题,smartrefresh采取了将计数器初始值和递减操作同时错开的思路,如图3中(b)图中将内存行分为n组(n的大小取决于内存刷新队列的大小,图中n=4,每组包含16个内存行的计数器),原来的方案在0ms、16ms、32ms和48ms更新计数器,当前方案则是将之前的每次更新进一步分散,如原来在0ms时刻的计数器更新对应:

在0ms更新所有4个分组中第1个内存行的计数器,

在1ms更新所有4个分组中第2个内存行的计数器,

……

在15ms更新所有4个分组中第16个内存行的计数器。

上述方案的本质是将更新计数器的时间间隔粒度变小,从而将更新操作分散,同时需要刷新的行数目也相应减少,如图3所示每1ms都会有n个内存行需要刷新,而n是根据dram内存控制器的刷新命令请求队列的大小设置的,因此避免了大量刷新操作阻塞正常请求造成的性能下降。

flikker:flikker技术基于应用本身对差错的容忍性,将应用数据中对差错具有容忍能力的非关键数据分离出来并进行低频刷新从而降低功耗,flikker通过软件和硬件结合完成非关键数据的低频刷新。

硬件方面,flikker将每个drambank分成为了保证关键数据正确的正常刷新区域和为节省功耗针对非关键数据的低频刷新区域,如图4所示。

软件方面主要分为以下步骤,首先程序员在编写应用时需要对关键数据进行标注;其次,在程序运行过程中系统需要将关键数据和非关键数据分别存储到内存中的正常刷新区域和低频刷新区域;然后操作系统配置自主刷新计数器并将dram切换自主刷新模式(在移动操作系统中,处理器为节省功耗进入休眠时操作系统将刷新控制权交给dram自身的机制);最后,自主刷新控制器根据操作系统配置参数对dram不同区域分别进行不同频率的刷新。软件方面需要对应用程序源码、运行时系统和操作系统进行修改以协同工作,具体如图5所示。

针对近似计算应用的动态存储器dram刷新控制优化方法,国内外的研究成果较少,现有的研究成果主要存在以下问题:第一,如何在降低刷新频率减少刷新操作的前提下,保证计算机应用的正确运行并保证其服务质量;第二,如何设计动态存储器的dram不同地址区块的刷新频率,最小化刷新开销;第三,无法通过数据地址与存储器地址空间的一一匹配,结合内存地址分配,最小化刷新次数。以上三点直接导致现有的成果有三大缺陷:第一,刷新频率过高,不能充分利用近似应用的容错能力;第二,刷新方案不可靠,导致应用出现错误或影响输出质量;第三,较高的面积与功耗开销。

以下为现有技术中存在的技术问题,如下所示:

smartrefresh:1)smartrefresh为每一个edram(embeddeddram)行引入一个计时器,通过为每一个edram行记录其上一次刷新/访问时间戳,避免对edram行的多余刷新,但是该方法主要针对于片上edram,对于大容量的dram存储器,则引入的计数器开销过大;2)smartrefresh平均能够节省52.6%的刷新功耗,而本发明可以节省99%以上的刷新功耗。

flikker:flikker需要程序员标记非关键数据,并结合编译器操作系统等协同工作,技术过于复杂,应用难度较大。flikker对非关键数据降低刷新率,在dram中设置地刷新率区域,节省刷新功耗有限,本技术几乎可以节省绝大部分刷新功耗。



技术实现要素:

针对现有技术的不足,本发明提出一种面向近似应用的低开销dram刷新方法及系统。

本发明提出一种面向近似应用的低开销dram刷新方法,包括:

静态匹配映射步骤,离线获取应用的全局访存信息,分析所述全局访存信息中每个内存行的最大重用距离,将每个内存行中的内容迁移到保存时间大于所述最大重用距离的内存行中;

动态阈值调整步骤,每隔一段时间,周期性的根据历史映射结果预测每个映射周期的最大重用距离,并在dram保持时间分布中匹配相应的内存行。

所述静态匹配映射步骤包括

(1)所述全局访存信息包括:访存地址,访存类型,时间戳,并形成集合d,集合d中的每个元素为一个二元组(pi,tij),其中pi代表内存的页i的地址,tij表示第j次对页i进行访问的时间戳,根据集合d,获取集合v,集合v中的每个元素为一个二元组(pi,vij),其中pi代表内存的页i的地址,vij表示第j次与第j-1次对页i进行访问的时间戳的差值,所述差值为重用距离。

(2)对于dram的保持时间分布信息,通过集合r表示,其中每个元素为一个二元组(rk,rtk),rk代表内存行k的地址,rtk则代表内存行k的保持时间。

(3)为了给集合v中的每个pi在集合r中找到相应的内存行rk,对于某个页pi有集合(pi,vij),首先找出页pi所有访问重用距离的最大值,记为(pi,maxv),然后在保持时间分布集合(rk,rtk),寻找保持时间超过maxv的所有内存行中rtk最小的内存行rk,将页pi与rk进行匹配,重复(3)直到集合v中的所有页都寻找到相应的内存行映射。

所述动态阈值调整步骤包括:

1.在每个映射周期结束时,预测页面的阈值,其中获取页面当前映射周期的最大重用距离,评估上次映射周期预测的阈值错误率;

2.根据所述阈值,在所有保持时间大于所述阈值的内存行中,找出未分配并且保持时间最小的内存行;

3.将页面与所述保持时间最小的内存行进行匹配。

4.如权利要求1所述的面向近似应用的低开销dram刷新方法,其特征在于,还包括对所述动态阈值调整步骤进行差错控制。

所述差错控制具体包括:首先设置差错控制水平e,在每个控制周期中,统计所有页的错误率,假定当前为第k个控制周期tk,则页i的错误率为eik。在tk结束时,遍历评估所有页的统计信息决定是否迁移,其中对于页i,首先计算其在当前时间片段的相对错误率为reik=eik-e,然后获取控制权重值,如下

cwik=p*reik+i*(reik+rei(k-1))+d*(reik-rei(k-1))

根据控制权重值cwik的大小决定页i是否被迁移。

本发明还提出一种面向近似应用的低开销dram刷新系统,包括:

静态匹配映射模块,用于离线获取应用的全局访存信息,分析所述全局访存信息中每个内存行的最大重用距离,将每个内存行中的内容迁移到保存时间大于所述最大重用距离的内存行中;

动态阈值调整模块,用于每隔一段时间,周期性的根据历史映射结果预测每个映射周期的最大重用距离,并在dram保持时间分布中匹配相应的内存行。

所述静态匹配映射模块包括

(1)所述全局访存信息包括:访存地址,访存类型,时间戳,并形成集合d,集合d中的每个元素为一个二元组(pi,tij),其中pi代表内存的页i的地址,tij表示第j次对页i进行访问的时间戳,根据集合d,获取集合v,集合v中的每个元素为一个二元组(pi,vij),其中pi代表内存的页i的地址,vij表示第j次与第j-1次对页i进行访问的时间戳的差值,所述差值为重用距离。

(2)对于dram的保持时间分布信息,通过集合r表示,其中每个元素为一个二元组(rk,rtk),rk代表内存行k的地址,rtk则代表内存行k的保持时间。

(3)为了给集合v中的每个pi在集合r中找到相应的内存行rk,对于某个页pi有集合(pi,vij),首先找出页pi所有访问重用距离的最大值,记为(pi,maxv),然后在保持时间分布集合(rk,rtk),寻找保持时间超过maxv的所有内存行中rtk最小的内存行rk,将页pi与rk进行匹配,重复(3)直到集合v中的所有页都寻找到相应的内存行映射。

所述动态阈值调整模块包括:

1.在每个映射周期结束时,预测页面的阈值,其中获取页面当前映射周期的最大重用距离,评估上次映射周期预测的阈值错误率;

2.根据所述阈值,在所有保持时间大于所述阈值的内存行中,找出未分配并且保持时间最小的内存行;

3.将页面与所述保持时间最小的内存行进行匹配。

还包括对所述动态阈值调整步骤进行差错控制。

所述差错控制具体包括:首先设置差错控制水平e,在每个控制周期中,统计所有页的错误率,假定当前为第k个控制周期tk,则页i的错误率为eik。在tk结束时,遍历评估所有页的统计信息决定是否迁移,其中对于页i,首先计算其在当前时间片段的相对错误率为reik=eik-e,然后获取控制权重值,如下

cwik=p*reik+i*(reik+rei(k-1))+d*(reik-rei(k-1))

根据控制权重值cwik的大小决定页i是否被迁移。

由以上方案可知,本发明的优点在于:

本发明在进行程序数据在内存中存储的映射和迁移之后,静态匹配映射方法的错误率几乎为零,动态匹配映射方法的错误率可以控制在0.7%以内,两种方法均能够将原有刷新能耗节省99%以上。

附图说明

图1是dram保持时间分布图;

图2是smartrefresh示意图;

图3是smartrefresh计数器工作机制图;

图4是flikkerdrambank结构图;

图5是flikker系统框架图;

图6是考虑差错容忍特性的dram刷新控制方法总体思路图;

图7是基于静态/动态匹配映射的dram刷新控制方法总体结构图;

图8是pid差错控制器结构图。

具体实施方式

发明人在进行基于差错容忍的dram刷新控制研究时发现,dram的读写请求本身就会对被访存单元进行刷新,基于以上观察,发明人尝试利用读写请求代替刷新操作,提出静态、动态匹配映射方法将应用访问内存的间隔(重用距离)和dram的保持时间分布进行匹配,最终达到减少甚至消除刷新的目的,此时dram成为“非易失性”设备,即nv-dram。由于动态匹配映射无法保证匹配后的所有内存行在发生保持时间故障之前都会被访存,因此会出现一定的差错率,传统的应用会因为没有容忍能力最终导致程序崩溃或结果错误,近年来,随着近似计算以及大数据的出现,应用对于输出质量并不要求完全正确,而只需要控制差错在一定范围内,因此为读写请求代替刷新操作的思路提供了可能性,同时,为了确保匹配映射方法的差错率在可控范围内,发明人提出了基于工业控制理论的pid差错控制器。

对于一个正在运行的应用而言,能够搜集到其历史访存信息,经过简单的处理得到该应用的重用距离信息(连续两次访问同一内存行的时间间隔),同时可以离线获取dram不同行的保持时间分布信息,经过静态、动态匹配映射方法,将重用距离和保持时间分布进行匹配,即将访问间隔为t的内存行所存储的内容迁移到保持时间大于t的内存行进行保存,由于dram的读写操作均可以认为是对被读写行单元的刷新,因此在匹配之后,正常的读写操作取代了原有刷新机制,在完成读写请求的同时保证了数据的正确性,原有刷新机制的能耗也将会相应消失,如图6所示整个系统的输入对应重用距离和保持时间分布,经过静态、动态匹配映射方法,最终给出匹配映射结果指导应用在内存中的存储。

图7所示分别是基于静态匹配映射和动态匹配映射的dram刷新控制结构图,基于静态匹配映射的dram刷新控制结构的主要部件是smp(staticmapping)单元,其作用是通过离线获取的应用访存信息memorytrace和dram保持时间分布retentiontime在程序运行前给出其运行过程中数据在dram中存储的映射方案,如,图7中(a)图所示,图7中(b)图中基于动态匹配映射的dram刷新控制结构主要有三个部件,分别是dtp(dynamicthresholdmapping)、pid-ec以及迁移页/修改页表。dtp即动态阈值调整方法,其作用是结合应用运行过程中搜集的访存信息访存trace及以往的匹配映射效果(即图7中的错误率统计单元)动态地调整匹配映射结果,每当dtp给出匹配映射结果时,migration单元则要将对应的内容迁移到被匹配的行中去,进一步通过修改页表,从而保证操作系统能够通过原有的虚拟页地址找到迁移后的内存物理地址。pid-ec(piderrorcontrollor)即pid差错控制器,借鉴了工业界广泛使用的控制理论,pid-ec的目的是找出匹配映射过程中差错率较高的页,再通过迁移页单元将差错率较高的页迁移到正常刷新的区域,从而降低错误率并且保证应用输出质量。

以下为本发明的实施例,如下所示:

1.基于静态匹配映射的dram刷新控制方法

对于嵌入式等没有虚拟内存并且线性地址空间和物理地址空间的对应关系固定的系统中,由于运行的应用相对固定,应用的访存模式也具有很大的确定性,因此匹配映射的思路相对简单。首先离线获取应用的全局访存trace,分析每个内存行的最大重用距离,将每个内存行匹配到保持时间大于最大重用距离的dram行中。

静态匹配映射方法分为profiling和mapping两个阶段。profiling阶段我们首先需要离线运行目标应用并搜集其访存trace,进一步处理得到重用距离信息,其次要获取dram保持时间分布;mapping阶段将应用的重用距离信息和dram保持时间分布进行匹配。

a.profiling前期程序分析阶段

(1)应用重用距离信息。假设每次访问的trace格式(即全局访存信息)为:访存地址,访存类型(读/写),时间戳。那么离线搜集的应用访存trace为集合d,集合中的每个元素为一个二元组(pi,tij),其中pi代表访存的页i的地址,tij表示第j次对页i进行访问的时间戳。根据集合d,我们可以计算得到集合v,集合v中的每个元素为一个二元组(pi,vij),其中pi代表访存的页i的地址,vij表示第j次和第j-1次对页i进行访问的时间戳的差值,也就是访问的重用距离。

(2)dram保持时间分布。对于dram的保持时间分布信息,我们通过集合r表示,其中的每个元素为一个二元组(rk,rtk),rk表示内存行k的地址,rtk则代表内存行k的保持时间。

b.mapping存储对象映射阶段

静态匹配映射方法的思路是,为集合v中的每个页pi在集合r中找到合适的内存行rk,进行匹配,最终指导程序在运行过程中对应数据的存储,以达到“无刷新”的目的。

为了给集合v中的每个页pi在集合r中找到合适的内存行rk,对于某个页pi有集合(pi,vij),首先找出该页所有访问重用距离的最大值,记为(pi,maxv),然后在保持时间分布集合(rk,rtk),寻找保持时间超过maxv的所有内存行中rtk最小的内存行rk,将pi和该rk进行匹配。重复以上方法直到集合v中的所有页都寻找到合适的内存行映射。

为了避免某个页pi的最大重用距离maxv远远大于其它重用距离导致匹配效果变差,因此在找出maxv之后首先会对其合理性进行判断,如果不合理就会丢弃并重新搜索最大重用距离。尽管这会导致部分错误,但是由于近似计算应用拥有一定的差错容忍能力,因此对应用输出质量不会有本质的影响。

2.基于动态匹配映射的dram刷新控制方法

(1).动态阈值调整

在静态匹配映射方法中,首先找出页面的最大重用距离,然后将该页匹配到dram中保持时间大于该页面最大重用距离的内存行,就能够保证页面的读写操作在保持时间故障发生前刷新内存单元,原有的刷新操作可以完全消除。相应的,在动态匹配映射的每个映射周期如何预测随后映射周期内的最大重用距离,并在dram保持时间分布中匹配合适的内存行就成为关键问题,这个预测的最大重用距离称为阈值。

基于动态阈值调整的匹配映射主要分为以下几个步骤:

(以单个页面的匹配映射流程进行说明,实际运行过程中,需要对每个访问到的页面遍历重复以下映射过程)

1.在每个映射周期结束时,预测出页面的阈值。具体包括获取该页面当前映射周期的最大重用距离,评估上次映射周期预测的阈值错误率(匹配失效的次数占总访问次数的比例),结合以上信息分析预测页面的阈值。

2.利用上一步中得到的阈值,在所有保持时间大于阈值的内存行中,找出未分配并且保持时间最小的内存行。

3.将该页面和以上找到的内存行进行匹配。具体做法是:首先将该虚拟页对应的物理地址的数据迁移到匹配后的物理地址中去,然后修改页表使得原有虚拟页地址映射到新的物理地址以保证程序正常运行。

假设每次访问的trace格式为:访存地址,访存类型(读/写),时间戳。我们每隔一段时间tslot(称为映射周期)统计当前映射周期内的程序访存信息,评估映射的匹配效果,然后预测每个页的重用距离阈值走势从而进行匹配。假定在时刻t(t=n*tslot,n=1,2…),搜集到的应用访存trace为集合t,集合中的每个元素为一个二元组(pi,tij),其中pi代表访存的虚拟页i的地址,tij表示第j次对页i进行访问的时间戳。根据集合t计算得到集合v,集合v中的每个元素为一个二元组(pi,vij),其中pi代表访存的页i的地址,vij表示第j次和第j-1次对页i进行访问的时间戳的差值,即访问的重用距离。对于dram的保持时间分布信息,我们通过集合r表示,其中的每个元素为一个二元组(rk,rtk),rk表示内存行k的地址,rtk则代表内存行k的保持时间。

动态匹配映射的思路是,根据当前时间段tslot的统计信息,为每个页pi在集合r中匹配相应的内存行rk,而在匹配的过程中,根据当前映射周期和上一映射周期阈值效果的变化趋势进行预测,最终给出内存映射指导信息。

动态预测方法采用了一个简单的爬山算法来进行阈值的调整。具体来讲,每次当前映射周期tslot结束时,我们会统计上次映射周期阈值lastthresh在当前周期内的效果,计算错误率(errorrate=#(vij>lastthresh)/#tij,其中#(vij>lastthresh)表示访问距离超出阈值的次数,#tij表示该页面的总访问次数),如果错误率大于上次映射周期的错误率previouserrorrate,证明lastthresh效果较差,采用当前时间段的阈值。如果错误率小于previouserrorrate则需要根据阈值变化趋势进行抉择,具体流程如algorithm1所示。

(2).pid差错控制器

在实际的运行过程中,绝大部分的错误都会集中在某部分页之上。因此考虑将这些错误率较高的页迁移出去,进行正常刷新以保证数据正确。如果直接统计所有页的错误率,在每个映射周期结束时,将错误率最高的页迁移出去,对错误率的控制并不精确,这样造成的结果可能是错误率远小于给出的错误率控制上限,但同时由于过度地迁移内存页,造成迁移开销超过避免刷新而节省的功耗而最终得不偿失。

如图8所示是pid差错控制器结构,在pid的每个控制周期内,错误率统计部件将会统计当前所有页的差错率,根据以上差错率信息和给定的差错率控制器水平计算出每个页的相对错误率并交给pid差错控制器进行处理,pid差错控制器根据计算出的控制量决定哪些页需要被迁移,然后给dram发送迁移命令。

首先给出差错控制水平e,意味着pid要将系统的差错率控制在e附近。在每个控制周期中,统计所有页的错误率。假定当前为第k个控制周期tk,则页i的错误率为eik。在tk结束时,遍历评估所有页的统计信息决定是否迁移。例如,对于页i,首先计算其在当前时间片段的相对错误率为reik=eik-e,然后得到pid控制器的权重值,如下

cwik=p*reik+i*(reik+rei(k-1))+d*(reik-rei(k-1))

根据控制权重值cwik的大小决定页i是否被迁移。

本发明还提出一种面向近似应用的低开销dram刷新系统,包括:

静态匹配映射模块,用于离线获取应用的全局访存信息,分析所述全局访存信息中每个内存行的最大重用距离,将每个内存行中的内容迁移到保存时间大于所述最大重用距离的内存行中;

动态阈值调整模块,用于每隔一段时间,周期性的根据历史映射结果预测每个映射周期的最大重用距离,并在dram保持时间分布中匹配相应的内存行。

所述静态匹配映射模块包括

(1)所述全局访存信息包括:访存地址,访存类型,时间戳,并形成集合d,集合d中的每个元素为一个二元组(pi,tij),其中pi代表内存的页i的地址,tij表示第j次对页i进行访问的时间戳,根据集合d,获取集合v,集合v中的每个元素为一个二元组(pi,vij),其中pi代表内存的页i的地址,vij表示第j次与第j-1次对页i进行访问的时间戳的差值,所述差值为重用距离。

(2)对于dram的保持时间分布信息,通过集合r表示,其中每个元素为一个二元组(rk,rtk),rk代表内存行k的地址,rtk则代表内存行k的保持时间。

(3)为了给集合v中的每个pi在集合r中找到相应的内存行rk,对于某个页pi有集合(pi,vij),首先找出页pi所有访问重用距离的最大值,记为(pi,maxv),然后在保持时间分布集合(rk,rtk),寻找保持时间超过maxv的所有内存行中rtk最小的内存行rk,将页pi与rk进行匹配,重复(3)直到集合v中的所有页都寻找到相应的内存行映射。

所述动态阈值调整模块包括:

1.在每个映射周期结束时,预测页面的阈值,其中获取页面当前映射周期的最大重用距离,评估上次映射周期预测的阈值错误率;

2.根据所述阈值,在所有保持时间大于所述阈值的内存行中,找出未分配并且保持时间最小的内存行;

3.将页面与所述保持时间最小的内存行进行匹配。

还包括对所述动态阈值调整步骤进行差错控制。

所述差错控制具体包括:首先设置差错控制水平e,在每个控制周期中,统计所有页的错误率,假定当前为第k个控制周期tk,则页i的错误率为eik。在tk结束时,遍历评估所有页的统计信息决定是否迁移,其中对于页i,首先计算其在当前时间片段的相对错误率为reik=eik-e,然后获取控制权重值,如下

cwik=p*reik+i*(reik+rei(k-1))+d*(reik-rei(k-1))

其中,p和i分别为pid控制算法中的比例参数和积分参数,改参数的经验值可以通过实际情况,手动调整找寻错误率最低的值加以设置,k为时间参数,具体表示当前所在的控制周期数。

根据控制权重值cwik的大小决定页i是否被迁移。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1