一种基于时间局部性的DRAM缓存管理方法及系统与流程

文档序号:11620445阅读:165来源:国知局
一种基于时间局部性的DRAM缓存管理方法及系统与流程

本发明属于计算机缓存技术领域,更具体地,涉及一种基于时间局部性的dram缓存管理方法及系统。



背景技术:

随着处理器核数的不断增加,现代应用所需的缓存容量也越来越大,传统的基于sram的缓存已无法满足需求,sram的低密度、高功耗特点使得进一步增大sram容量变得不切实际。虽然dram能够提供相对于sram几倍的带宽,但是由于它的高延迟特点,dram一直以来仅仅被用作主存。然而,最近采用一些新技术,如die-stacking技术大大提高了dram的性能,堆叠dram可以提供片外dram几倍的带宽优势,同时延迟降为原来的一半甚至三分之一。

要想更好的利用dram缓存,需要解决一些挑战。由于sram与dram性质存在很大区别,dram缓存的设计主要分为细粒度和粗粒度,细粒度一般是以64b的块进行组织的,粗粒度则是以kb级的页进行组织的:

细粒度的设计会导致很高的标签存储开销,这个开销远大于最后一级sram缓存,这强迫设计者将标签存放在dram缓存之中,串行化标签、数据访问和使用组相连缓存会进一步增大命中延迟开销,目前,主要有两个方案来解决标签和数据串行化访问带来的延时问题:一是将标签和数据放置在同一行,通过行缓冲命中来降低dram缓存的命中时延;另一个通过直接组相连的方式,将标签和数据紧紧的放置在一起,通过一次访问将标签和数据同时流出从而完全消除标签、数据串行化的问题;细粒度的设计无法利用应用的空间局部性,这使得其命中率相对较低,细粒度是优势在于有效的使用片外主存带宽和缓存容量;

粗粒度的设计使标签的存储开销大大降低,这使得标签可以存放在sram之中,进而加快访问时间。通过利用空间局部性,它可以较细粒度提高命中率。粗粒度设计的限制在于带宽浪费和排队竞争的问题。同时,粗粒度的缓存块会降低缓存的有效容量,使多线程应用性能下降。随着dram缓存容量的不断提高,所需的标签存储不断加大,即使使用粗粒度技术,也无法将标签存储在sram之中。

盲目的将优秀的sram缓存管理策略应用到dram缓存上可能会导致性能下降。因此,应该根据dram的特性,使用新奇的技术应用在dram缓存之上:对于几十兆和几百兆的dram缓存,可以提供片外主存2倍的带宽和低于一半的命中延时,然而dram缓存的设计需要执行一些附加的操作,这些附加操作包括:写回更新、写回填充、不命中填充等。这些附加操作会导致大量的带宽消耗,而带宽消耗带来的最直接影响就是dram缓存的排队时延增大。对于dram缓存,它的命中时延由两部分组成,dram缓存的访问时延和排队时延,当dram缓存的带宽消耗过大时,排队时延甚至要超过访问时延成为决定dram缓存命中时延的主要因素。现有的一些dram缓存管理策略虽然可在一定程序上缓解该问题,但存在硬件开销过大、没有考虑cpu上各个核之间的差异性等问题,目前还缺乏一种在通用计算机上的在线低开销的堆叠dram缓存管理机制。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种基于时间局部性的dram缓存管理方法及系统,其目的在于实时监测用户请求的时间局部性,根据监测结果计算写回和填充概率,之后采用组决斗的方法以核为单位动态的决定下一阶段是否部署时间局部性管理策略,避免了由于写回和填充过滤带来的dram缓存命中率下降的问题,使系统性能更加的稳定,由此解决现有方法中存在的开销过大、没有考虑cpu上各个核之间的差异性等技术问题。

为实现上述目的,按照本发明的一个方面,提供了一种基于时间局部性的dram缓存管理方法,该方法包括:

(1)监测时间局部性:每个核都分别部署读监控器和写监控器,实时对片上缓存的读和写请求的命中情况进行采样监控,根据监控结果计算填充概率和写回概率;

(2)动态决策:以设定的时间间隔对dram缓存进行抽样,对每个抽样组采用不同的概率过滤策略进行填充或写回,以cpu核为单位对抽样组进行命中率对比;

(3)调度管理:根据时间局部性监测结果和动态决策结果来管理数据写回和填充到dram缓存的请求。

进一步地,所述步骤(1)中填充概率或写回概率的计算方法为:

pi=(n1×w1+n2×w2+…+nk×wk)/n,

其中,pi为填充概率或写回概率;nk为第k路的命中数量;wk为第k路的权重;n为命中数量与未命中数量的和。

进一步地,所述步骤(2)具体包括:

(21)以设定的时间间隔对dram缓存进行抽样,获得(cpu核数+1)×2个抽样组;

(22)一个cpu核i对应2个抽样组:一组设为ci,其中核i采用步骤(1)所得填充概率或写回概率进行填充或写回,其他核采用当前概率进行填充或写回;另一组设为fi,其中核i采用全填充或全写回,其他核采用当前概率进行填充或写回;

(23)剩下其中1个抽样组设为pbs,采用当前概率进行填充或写回,另1个抽样组设为cs,采用全填充或全写回;

(24)计算对比,若

(pbs未命中率-cs未命中率)≤第一设定阈值,

则设定标记modebit=0;否则modebit=1;

(25)若cpu核i对应的两个抽样组

ci未命中率-fi未命中率≤第二设定阈值,

则设定标记corebiti=0;否则corebiti=1。

进一步地,所述步骤(3)具体包括:

(31)对于写回和填充到dram缓存的请求,若modebit=0,则跳转步骤(33);若modebit=1,则跳转步骤(32);

(32)若corebiti=0,则跳转步骤(33);若corebiti=1,则生成一个0到1之间的随机数r,若r<pi,则跳转步骤(33),否则,若是填充请求则跳转步骤(35),若是写回请求则跳转步骤(34);

(33)写回或填充到dram缓存,跳转步骤(36);

(34)写回到片外主存,跳转步骤(36);

(35)填充到片上缓存,跳转步骤(36);

(36)调度结束。

按照本发明的另一方面,提供了一种基于时间局部性的dram缓存管理系统,该系统包括:

时间局部性监测模块,用于在每个核上都分别部署读监控器和写监控器,实时对片上缓存的读和写请求的命中情况进行采样监控,根据监控结果计算填充概率和写回概率;

动态决策模块,用于以设定的时间间隔对dram缓存进行抽样,对每个抽样组采用不同的概率过滤策略进行填充或写回,以cpu核为单位对抽样组进行命中率对比;

调度管理模块,用于根据时间局部性监测结果和动态决策结果来管理数据写回和填充到dram缓存的请求。

进一步地,所述时间局部性监测模块中填充概率或写回概率的计算方法为:

pi=(n1×w1+n2×w2+…+nk×wk)/n,

其中,pi为填充概率或写回概率;nk为第k路的命中数量;wk为第k路的权重;n为命中数量与未命中数量的和。

进一步地,所述动态决策模块具体包括:

抽样单元,用于以设定的时间间隔对dram缓存进行抽样,获得(cpu核数+1)×2个抽样组;

核抽样组分配单元,用于分配一个cpu核i对应2个抽样组:一组设为ci,其中核i采用时间局部性监测模块所得填充概率或写回概率进行填充或写回,其他核采用当前概率进行填充或写回;另一组设为fi,其中核i采用全填充或全写回,其他核采用当前概率进行填充或写回;

其他抽样组分配单元,用于将剩下其中1个抽样组设为pbs,采用当前概率进行填充或写回,另1个抽样组设为cs,采用全填充或全写回;

第一对比单元,用于计算对比,若

(pbs未命中率-cs未命中率)≤第一设定阈值,

则设定标记modebit=0;否则modebit=1;

第二对比单元,用于计算对比,若cpu核i对应的两个抽样组

ci未命中率-fi未命中率≤第二设定阈值,

则设定标记corebiti=0;否则corebiti=1。

进一步地,所述调度管理模块具体包括:

第一判断单元,用于判断,对于写回和填充到dram缓存的请求,若modebit=0,则跳转到dram缓存单元;若modebit=1,则跳转到第二判断单元;

第二判断单元,用于判断若corebiti=0,则跳转到dram缓存单元;若corebiti=1,则生成一个0到1之间的随机数r,若r<pi,则跳转到dram缓存单元,否则,若是填充请求则跳转到片上缓存单元,若是写回请求则跳转到片外主存单元;

dram缓存单元,用于写回或填充到dram缓存,跳转到结束单元;

片外主存单元,用于写回到片外主存,跳转到结束单元;

片上缓存单元,用于填充到片上缓存,跳转到结束单元;

结束单元,用于结束调度。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:

(1)以cpu上核为单位进行监测,充分考虑了不同核之间的差异性,监测器通过请求在标签缓存的命中位置评估应用的时间局部性,使用均匀的抽样法大幅降低硬件开销,同时,监测器不位于请求访问的关键路径上,几乎对性能没有任何影响;

(2)对dram缓存均匀抽样,以核为单位通过组决斗的方法使系统性能更加稳定,消除了由于应用重用距离大于标签缓存和应用访存颠簸引起的命中率大大下降的问题,不会再因为一个核的过滤引起整个系统性能的明显下降;

(3)在调度管理机制的最上层决定系统当前阶段是否部署时间局部性管理策略,当部署管理策略导致系统命中率下降过多时,系统使用全填充策略,否则部署时间局部性管理策略,这可以有效的避免时间局部性管理策略相对于传统策略性能下降;

(4)如果某个核由于过滤导致了dram缓存整体命中率下降过多,使这个核采用全填充策略,其它核保持原有策略,这有效的避免了由于某个核的不适用过滤而引起的系统性能下降;

(5)由于本发明工作时不需要对用户层程序进行代码级的分析或更改,整个工作过程对上层完全透明,具有很强的通用性和可移植性。

附图说明

图1是本发明方法步骤流程图;

图2是本发明实施例系统框架示意图;

图3为本发明实施例时间局部性监测细节图;

图4为本发明实施例动态决策中抽样组数据分配示意图;

图5为本发明实施例dram缓存写回和填充请求调度管理示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

如图1所示,本发明方法包括:

(1)监测时间局部性:每个核都分别部署读监控器和写监控器,实时对片上缓存的读和写请求的命中情况进行采样监控,根据监控结果计算填充概率和写回概率;

(2)动态决策:以设定的时间间隔对dram缓存进行抽样,对每个抽样组采用不同的概率过滤策略进行填充或写回,以cpu核为单位对抽样组进行命中率对比;

(3)调度管理:根据时间局部性监测结果和动态决策结果来管理数据写回和填充到dram缓存的请求。

如图2所示,本发明实施例中两个核都分别部署读监控器和写监控器,时间局部性监测模块对用户层程序l3缓存不命中的读请求进行采样监测,同时对l3缓存写回到下层的请求进行采样监测,每过一段时间,根据读写监控器的结果分别计算填充和写回概率,并将概率值发往管理模块然后开启下一阶段的监控。

所述步骤(1)中填充概率或写回概率的计算方法为:

pi=(n1×w1+n2×w2+…+nk×wk)/n,

其中,pi为填充概率或写回概率;nk为第k路的命中数量;wk为第k路的权重;n为命中数量与未命中数量的和。

如图3所示,本发明实施例时间局部性监测器标签缓存是多路组相连的,根据请求在缓存中的命中情况,命中区域是靠近lru端还是mru端,靠近lru端权重比值低,mru端权重比值高;评估应用的时间局部性强弱,通过抽样技术大大降低标签缓存的硬件开销,同时保证监控的精确度。

所述步骤(2)具体包括:

(21)以设定的时间间隔对dram缓存进行抽样,获得(cpu核数+1)×2个抽样组;

(22)一个cpu核i对应2个抽样组:一组设为ci,其中核i采用步骤(1)所得填充概率或写回概率进行填充或写回,其他核采用当前概率进行填充或写回;另一组设为fi,其中核i采用全填充或全写回,其他核采用当前概率进行填充或写回;

(23)剩下其中1个抽样组设为pbs,采用当前概率进行填充或写回,另1个抽样组设为cs,采用全填充或全写回;

(24)进行对比,若

(pbs未命中率-cs未命中率)≤第一设定阈值,

则设定标记modebit=0;否则modebit=1;

(25)若cpu核i对应的两个抽样组

ci未命中率-fi未命中率≤第二设定阈值,

则设定标记corebiti=0;否则corebiti=1。

如图4所示,本发明实施例中动态决策模块通过对dram缓存进行抽样,对每个抽样组部署不同的填充和写回策略,核i对应两个抽样组,用于判定该核是否使用过滤策略,对于组1,核i采用概率pi进行填充,其它核采用当前的策略ki,对于组2,核i使用全填充,其它核采用当前的策略ki。以此类推组2到组7,最后组8和组9用于对比时间局部性管理策略和传统全填充策略,其中一个对每个核都部署当前策略ki,称这个组为pbs,另一个对每个核都全填充,称这个组为cs。

步骤(3)具体包括:

(31)对于写回和填充到dram缓存的请求,若modebit=0,则跳转步骤(33);若modebit=1,则跳转步骤(32);

(32)若corebiti=0,则跳转步骤(33);若corebiti=1,则生成一个0到1之间的随机数r,若r<pi,则跳转步骤(33),否则,若是填充请求则跳转步骤(35),若是写回请求则跳转步骤(34);

(33)写回或填充到dram缓存,跳转步骤(36);

(34)写回到片外主存,跳转步骤(36);

(35)填充到片上缓存,跳转步骤(36);

(36)调度结束。

如图5所示,本发明实施例中,调度管理模块根据监测模块和动态决策模块的结果来管理写回和填充到dram缓存的请求,对于从片外主存返回的填充请求管理模块决定填充到dram缓存还是跳过dram缓存直接发往l3sram缓存,对于从l3缓存发往下层的写回请求管理模块决定写回到dram缓存还是跳过dram缓存直接写回到片外主存。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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