末级高速缓存软硬件协作分区域管理系统及管理方法与流程

文档序号:12665697阅读:192来源:国知局
末级高速缓存软硬件协作分区域管理系统及管理方法与流程

本发明涉及计算机系统中的末级高速缓存管理领域,尤其涉及一种末级高速缓存软硬件协作分区域管理系统及管理方法。



背景技术:

高速缓存处于处理器访问的关键路径。随着处理器和存储器之间速度差距的不断扩大,高速缓存尤其是末级高速缓存失效产生的系统开销逐渐增大,成为制约计算机整体性能提高的重要瓶颈之一。

程序内部不同数据区域可能存在不同的访问模式和局部性特征。但是,当前处理器高速缓存通常采用单纯基于硬件实现的最近最少使用(LRU)替换算法。该算法不能有效识别访问数据的局部性特征并根据数据局部性的变化及时调整管理策略。未来不会被使用到的数据如果不能被有效识别并同局部性良好的数据相区分,就可能会将复用度高的数据替换出高速缓存,从而引发高速缓存污染问题。在采用多级高速缓存的系统中,由于上级高速缓存的过滤作用,使得末级高速缓存污染更加严重。现代计算机普遍采用虚拟存储系统。在支持分页机制的虚拟存储系统中,程序地址空间被划分为若干大小相同的页。在程序运行过程中,不同页之间的局部性特征可能存在较大差异。限制局部性差数据页的末级高速缓存访问空间可以减少其对其他数据页高速缓存空间的抢占,在高速缓存中保护局部性良好的数据,从而提高末级高速缓存的性能。

针对末级高速缓存污染问题,当前解决方案通常采用末级高速缓存软件划分的方法。该方法缺少软硬件交互接口,只能将末级高速缓存划分为若干区域,通过将失效率高、局部性差的数据页限制在范围较小的区域内,提高末级高速缓存命中率。此类方法在进行高速缓存划分时需要修改虚拟地址和物理地址的映射关系,从而引入大量的数据拷贝等开销,同时还需要预留一定的物理页框,占用较多的内存资源。

末级高速缓存相关硬件优化方法通过增加性能监视模块,分析并预测单个数据行的使用频率和局部性强度。在预测信息的指导下,该系列方法采用旁路等技术隔离局部性差的数据,在末级高速缓存中保护局部性良好的数据,从而提高末级高速缓存利用率,减少处理器访存延迟。但是,以高速缓存行为单位的、细粒度的优化方法实现较为复杂并且需要大量额外的存储空间,同时具有较高的设计开销和延迟代价。动态插入策略(DIP)采用锦标赛机制(Set Dueling),在两种不同的插入策略之间动态切换。该方法仅采用少量硬件逻辑就可以检测程序的访存行为。但是,由于记录的访存信息有限,该方法在面对混合模式(即,LRU友好模式、流模式、颠簸模式中任意模式的组合)时不能有效检测局部性差的数据,存在一定的误判现象。



技术实现要素:

本发明要解决的技术问题是:如何共同使用硬件和软件来有效管理末级高速缓存以提高处理器的访存性能,从而有效降低限制局部性差数据的末级高速缓存访问空间并降低末级高速缓存污染和系统开销。

为了解决上述技术问题,本发明提供了一种末级高速缓存软硬件协作分区域管理系统,包括:

分区域性能监视及末级高速缓存控制器,用于在线统计操作系统的应用程序内每个数据区域的末级高速缓存访问信息,并控制所述数据区域相对于末级高速缓存的旁路或插入位置;

分区域访存行为剖视分析模块,用于读取所述末级高速缓存访问信息并根据所述末级高速缓存访问信息来分析每个所述数据区域的访存行为和局部性特征;以及

分区域旁路及插入策略决策模块,用于根据每个所述数据区域的访存行为和局部性特征来为每个所述数据区域选择旁路策略或插入策略。

进一步地,所述末级高速缓存访问信息包括:末级高速缓存失效次数和末级高速缓存命中次数。

进一步地,所述分区域性能监视及末级高速缓存控制器包括:

末级高速缓存失效计数器,用于计数所述末级高速缓存失效次数;以及

末级高速缓存命中计数器,用于计数所述末级高速缓存命中次数。

进一步地,所述分区域性能监视及末级高速缓存控制器包括:旁路控制位和插入策略控制位,

并且所述管理系统还包括:

策略选择寄存器,用于与所述分区域性能监视及末级高速缓存控制器配合来控制所述数据区域相对于末级高速缓存的插入位置;以及

插入策略控制逻辑电路,包括:反向器,用于对插入策略控制位执行取反操作;以及与门控制逻辑,用于对经过取反操作的插入策略控制位和策略选择寄存器的最高位进行与操作,

并且所述控制所述数据区域相对于末级高速缓存的旁路或插入位置包括:

在选择所述旁路策略情况下通过所述旁路控制位来控制相应的数据区域被旁路,使得所述数据区域中的数据不访问末级高速缓存;以及

在选择所述插入策略情况下通过所述插入策略控制位和策略选择寄存器的最高位来控制相应的数据区域中的数据被插入到末级高速缓存中的位置。

进一步地,所述访存行为包括:最近最少使用友好模式、流模式、颠簸模式和混合模式。

进一步地,在所述访存行为是流模式或所述局部性特征较差的情况下为相应的所述数据区域选择旁路策略。

进一步地,在所述访存行为是最近最少使用友好模式、颠簸模式和混合模式或所述局部性特征较差的情况下为相应的所述数据区域选择插入策略。

进一步地,所述位置包括最近最多使用位置和最近最少使用位置,如果经过与操作的运算结果为1,则将相应的所述数据区域中的输入插入到末级高速缓存中的最近最多使用位置,否则将相应的所述数据区域中的输入插入到末级高速缓存中的最近最少使用位置。

为了解决上述技术问题,本发明还提供了一种末级高速缓存软硬件协作分区域管理方法,包括:

由分区域性能监视及末级高速缓存控制器在线统计操作系统的应用程序内每个数据区域的末级高速缓存访问信息,并控制所述数据区域相对于末级高速缓存的旁路或插入位置;

由分区域访存行为剖视分析模块读取所述末级高速缓存访问信息并根据所述末级高速缓存访问信息来分析每个所述数据区域的访存行为和局部性特征;以及

由分区域旁路及插入策略决策模块根据每个所述数据区域的访存行为和局部性特征来为每个所述数据区域选择旁路策略或插入策略。

进一步地,所述末级高速缓存访问信息包括:末级高速缓存失效次数和末级高速缓存命中次数。

进一步地,所述分区域性能监视及末级高速缓存控制器包括:

末级高速缓存失效计数器,用于计数所述末级高速缓存失效次数;以及

末级高速缓存命中计数器,用于计数所述末级高速缓存命中次数。

进一步地,所述分区域性能监视及末级高速缓存控制器包括:旁路控制位和插入策略控制位,

并且所述管理方法还包括:

由策略选择寄存器与所述分区域性能监视及末级高速缓存控制器配合来控制所述数据区域相对于末级高速缓存的插入位置;

由反向器对插入策略控制位执行取反操作;以及

由与门控制逻辑对经过取反操作的插入策略控制位和策略选择寄存器的最高位进行与操作,

并且所述控制所述数据区域相对于末级高速缓存的旁路或插入位置包括:

在选择所述旁路策略情况下通过所述旁路控制位来控制相应的数据区域被旁路,使得所述数据区域中的数据不访问末级高速缓存;以及

在选择所述插入策略情况下通过所述插入策略控制位和策略选择寄存器的最高位来控制相应的数据区域中的数据被插入到末级高速缓存中的位置。

进一步地,所述访存行为包括:最近最少使用友好模式、流模式、颠簸模式和混合模式。

进一步地,在所述访存行为是流模式或所述局部性特征较差的情况下为相应的所述数据区域选择旁路策略。

进一步地,在所述访存行为是最近最少使用友好模式、颠簸模式和混合模式或所述局部性特征较差的情况下为相应的所述数据区域选择插入策略。

进一步地,所述位置包括最近最多使用位置和最近最少使用位置,如果经过与操作的运算结果为1,则将相应的所述数据区域中的输入插入到末级高速缓存中的最近最多使用位置,否则将相应的所述数据区域中的输入插入到末级高速缓存中的最近最少使用位置。

本发明的有益效果是:本发明提出的末级高速缓存软硬件协作分区域管理系统和管理方法降低了末级高速缓存失效,提高了末级高速缓存命中率,使得未来经常被访问到的数据不会被替换出末级高速缓存,从而可以有效降低末级高速缓存造成的性能损失;软硬件协作还可以有效减少单纯基于硬件实现的DIP误判现象,进一步提高程序的性能;本发明在实现区域级软件控制末级高速缓存管理策略上仅需要在DIP基础上添加一个反向器和一个与门控制逻辑,较为简单;本发明设计的分区域性能监视及末级高速缓存控制器具有较小的硬件和性能开销,对系统的整体功耗影响不大;在性能提升的同时,本发明还可以减少末级高速缓存动态能耗,提高系统的能耗有效性;本发明提出的分区域性能监视及末级高速缓存控制器不在末级高速缓存访问的关键路径上,可以和末级高速缓存访问并发执行,从而本发明不增加末级高速缓存访问时延;采用本发明提出的分区域旁路和插入策略控制接口对局部性差的数据区域进行隔离时不需要调整操作系统物理页框分配策略,仅需要根据剖视信息设置区域一级旁路或插入策略控制位,软件改动较小。

附图说明

图1是本发明的末级高速缓存软硬件协作分区域管理系统的结构示意图;

图2是本发明的末级高速缓存软硬件协作分区域管理方法的流程图;

图3是本发明的分区域性能监视及末级高速缓存控制器的结构示意图;

图4是本发明的末级高速缓存分区域插入策略控制逻辑的逻辑示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

如图1所示,本发明实施例提供了一种末级高速缓存软硬件协作分区域管理系统,包括:

分区域性能监视及末级高速缓存控制器,用于在线统计操作系统的应用程序内每个数据区域的末级高速缓存访问信息,并控制所述数据区域相对于末级高速缓存的旁路或插入位置;

分区域访存行为剖视分析模块,用于读取所述末级高速缓存访问信息并根据所述末级高速缓存访问信息来分析每个所述数据区域的访存行为和局部性特征;以及

分区域旁路及插入策略决策模块,用于根据每个所述数据区域的访存行为和局部性特征来为每个所述数据区域选择旁路策略或插入策略。

进一步地,所述末级高速缓存访问信息包括:末级高速缓存失效次数和末级高速缓存命中次数。

进一步地,所述分区域性能监视及末级高速缓存控制器包括:

末级高速缓存失效计数器,用于计数所述末级高速缓存失效次数;以及

末级高速缓存命中计数器,用于计数所述末级高速缓存命中次数。

进一步地,所述分区域性能监视及末级高速缓存控制器包括:旁路控制位和插入策略控制位,

并且所述管理系统还包括:

策略选择寄存器,用于与所述分区域性能监视及末级高速缓存控制器配合来控制所述数据区域相对于末级高速缓存的插入位置;以及

插入策略控制逻辑电路,包括:反向器,用于对插入策略控制位执行取反操作;以及与门控制逻辑,用于对经过取反操作的插入策略控制位和策略选择寄存器的最高位进行与操作,

并且所述控制所述数据区域相对于末级高速缓存的旁路或插入位置包括:

在选择所述旁路策略情况下通过所述旁路控制位来控制相应的数据区域被旁路,使得所述数据区域中的数据不访问末级高速缓存;以及

在选择所述插入策略情况下通过所述插入策略控制位和策略选择寄存器的最高位来控制相应的数据区域中的数据被插入到末级高速缓存中的位置。

进一步地,所述访存行为包括:最近最少使用友好模式、流模式、颠簸模式和混合模式。

进一步地,在所述访存行为是流模式或所述局部性特征较差的情况下为相应的所述数据区域选择旁路策略。

进一步地,在所述访存行为是最近最少使用友好模式、颠簸模式和混合模式或所述局部性特征较差的情况下为相应的所述数据区域选择插入策略。

进一步地,所述位置包括最近最多使用位置和最近最少使用位置,如果经过与操作的运算结果为1,则将相应的所述数据区域中的输入插入到末级高速缓存中的最近最多使用位置,否则将相应的所述数据区域中的输入插入到末级高速缓存中的最近最少使用位置。

如图2所示,本发明实施例还提供了一种末级高速缓存软硬件协作分区域管理方法,包括:

步骤1:由分区域性能监视及末级高速缓存控制器在线统计操作系统的应用程序内每个数据区域的末级高速缓存访问信息,并控制所述数据区域相对于末级高速缓存的旁路或插入位置;

步骤2:由分区域访存行为剖视分析模块读取所述末级高速缓存访问信息并根据所述末级高速缓存访问信息来分析每个所述数据区域的访存行为和局部性特征;以及

步骤3:由分区域旁路及插入策略决策模块根据每个所述数据区域的访存行为和局部性特征来为每个所述数据区域选择旁路策略或插入策略。

进一步地,所述末级高速缓存访问信息包括:末级高速缓存失效次数和末级高速缓存命中次数。

进一步地,所述分区域性能监视及末级高速缓存控制器包括:

末级高速缓存失效计数器,用于计数所述末级高速缓存失效次数;以及

末级高速缓存命中计数器,用于计数所述末级高速缓存命中次数。

进一步地,所述分区域性能监视及末级高速缓存控制器包括:旁路控制位和插入策略控制位,

并且所述管理方法还包括:

由策略选择寄存器与所述分区域性能监视及末级高速缓存控制器配合来控制所述数据区域相对于末级高速缓存的插入位置;

由反向器对插入策略控制位执行取反操作;以及

由与门控制逻辑对经过取反操作的插入策略控制位和策略选择寄存器的最高位进行与操作,

并且所述控制所述数据区域相对于末级高速缓存的旁路或插入位置包括:

在选择所述旁路策略情况下通过所述旁路控制位来控制相应的数据区域被旁路,使得所述数据区域中的数据不访问末级高速缓存;以及

在选择所述插入策略情况下通过所述插入策略控制位和策略选择寄存器的最高位来控制相应的数据区域中的数据被插入到末级高速缓存中的位置。

进一步地,所述访存行为包括:最近最少使用友好模式、流模式、颠簸模式和混合模式。

进一步地,在所述访存行为是流模式或所述局部性特征较差的情况下为相应的所述数据区域选择旁路策略。

进一步地,在所述访存行为是最近最少使用友好模式、颠簸模式和混合模式或所述局部性特征较差的情况下为相应的所述数据区域选择插入策略。

进一步地,所述位置包括最近最多使用位置和最近最少使用位置,如果经过与操作的运算结果为1,则将相应的所述数据区域中的输入插入到末级高速缓存中的最近最多使用位置,否则将相应的所述数据区域中的输入插入到末级高速缓存中的最近最少使用位置。

为简化分析,本发明实施例在图1中仅采用两级高速缓存结构,即一级高速缓存(L1Cache)和末级高速缓存(L2Cache)。在图1中,处理器发出访存操作,访问一级高速缓存失效后,会继续访问末级高速缓存。在访问末级高速缓存前,系统会查询分区域性能监视及末级高速缓存控制器,判断该数据所在区域表项的旁路位是否被设置。如果该区域旁路位被设置,则处理器不再访问末级高速缓存,直接发起内存设备访问操作。否则,处理器继续访问末级高速缓存,并在分区域性能监视及末级高速缓存控制器中记录该次访问的状态计数。由于末级高速缓存容量有限,当所查找到的数据不在末级高速缓存时就会产生失效,在访问末级高速缓存失效后,系统会从内存中读取相应数据进入末级高速缓存。数据进入末级高速缓存时的插入位置由策略选择寄存器(PSEL)最高位同该区域的插入策略控制位共同决定。

每个数据区域的旁路和插入策略由软件基于在程序运行时刻通过在线剖视分析的方法进行配置。本发明将访存密集型程序虚拟地址空间划分为若干数据区域,并通过读取分区域性能监视及末级高速缓存控制器来获得不同数据区域的访存信息。同时,本发明采用比较判定的方法,根据单个数据区域选择不同的旁路和插入策略前后系统性能的变化来决定单个数据区域的访存行为和局部性特征,并为该数据区域选择合理的旁路和插入策略。程序地址空间由代码段、数据段、堆和栈组成。不同段之间的访存行为具有较大差异。本发明首先以段为单位划分为四个大的区域(分别对应代码段、数据段、堆和栈);然后,将每个段又进一步划分为多个大小相等的区域,每个区域的大小、起始地址和结束地址由所在段决定。在程序运行过程中,堆和栈的大小会发生动态变化。操作系统等系统软件可以通过监控brk系统调用来获得堆的大小变化信息,而通过定时读取栈指针寄存器获得栈的变化信息。当堆或栈的大小发生变化时,需要计算每个区域的起始地址和结束地址,并根据功能不同依据堆和栈大小的动态变化来重新配置分区域性能监视及末级高速缓存控制器,以适应程序运行状态的变化。同时,程序执行具有阶段性的特点,不同运行阶段的访存行为存在较大差异。本发明将程序运行过程划分为若干片段。每个片段由预热、检测和执行三个阶段组成。在预热阶段,本发明将每个区域的旁路控制位和插入策略控制位置零,统计每个区域的末级高速缓存访问信息;在检测阶段,分别判断每个数据区域设置旁路控制位和插入策略控制位后系统整体性能的变化。本发明将单指令周期数(IPC)作为衡量系统性能的指标,通过判断IPC是否增大,作为评价旁路和插入策略是否设置成功的标准。单指令数周期数可以通过读取指令高速缓存性能监视器的访问计数获得。指令高速缓存性能监视器已经被现代处理器广泛采用,关于该设备的实现细节不再详述;在执行阶段,根据检测阶段的分析结果确定每个区域的旁路和插入策略,并配置分区域性能监视及末级高速缓存控制器。设置每个阶段的时间长度需要权衡精度和时间代价。相关研究表明统计周期设置为500万个时钟周期可以在准确性和开销之间达到较好的平衡。因此,在本发明中执行阶段设置为500万个时钟周期,而预热和检测阶段设置为50万个时钟周期。

分区域性能监视及末级高速缓存控制器主要用于记录不同数据区域在末级高速缓存中的访问信息,并提供旁路和插入策略控制位由软件根据单个数据区域的访存行为进行配置。具体结构如图3所示。该设备由多个数据行组成。每个行表示一个数据区域,主要由以下六个域组成:

1)start_addr:标识该数据区域的起始地址;

2)end_addr:标识该数据区域的结束地址;

3)llc_miss:末级高速缓存失效计数器;

4)llc_hit:末级高速缓存命中计数器;

5)bypass_bit:旁路控制位;

6)insert_bit:插入策略控制位。

在系统运行过程中,每个末级高速缓存访问操作会同时访问该控制器。通过比较末级高速缓存访问地址和每个数据行起始地址及结束地址之间的大小关系,可以确定该地址所在的数据区域。如果该区域所在行的旁路控制位没有置1,说明该区域中的数据可以访问末级高速缓存,并根据访问状态更新末级高速缓存命中或失效计数器。否则,该次访问将被旁路。本文提出的分区域性能监视及末级高速缓存控制器不在末级高速缓存访问的关键路径上(即不需要串行访问),可以和末级高速缓存访问并发执行。因此,本发明不增加末级高速缓存访问时延。

分区域旁路控制实现较为简单,由分区域性能监视及末级高速缓存控制器所在行的旁路控制位决定。当该位置1时,表示该区域中的数据将会被旁路。插入策略控制应该考虑PSEL的状态,因此需要添加新的控制逻辑。具体结构如图4所示。本发明在DIP基础上添加了插入策略控制逻辑电路,其包括一个反向器和一个与门控制逻辑,用于实现分区域末级高速缓存插入策略控制。单个数据进入末级高速缓存时采用的插入策略,由PSEL最高位和该数据所在区域的插入策略控制位insert_bit位共同决定。采用该方式可以将两种不同粒度的插入策略控制方法相结合,更加有效地检测和隔离局部性差的数据。相关控制逻辑为插入策略控制位insert_bit执行取反操作后同PSEL最高位进行与操作。当运算结果为1时执行LRU替换算法,将进入末级高速缓存的数据放入到替换链表的MRU位置;否则执行BIP插入策略,将进入末级高速缓存的数据以较大的概率放入到LRU位置。

与现有技术相比,本发明设计了轻量级的末级高速缓存分区域性能监视器,在线统计程序内不同数据区域的末级高速缓存访问信息,例如命中次数和失效次数。同时,本发明还设计了末级高速缓存分区域旁路和插入策略控制接口。在运行时刻剖视分析不同数据区域访存行为的基础上,软件可以确定每个数据区域所采用的旁路和插入策略。通过配置相关的旁路和插入策略控制接口,软件可以控制单个数据区域中的数据是否访问末级高速缓存以及进入末级高速缓存后的插入位置,从而影响单个数据区域的末级高速缓存空间。

大体上,本发明提出的末级高速缓存软硬件协作分区域管理策略主要包括管理策略配置和实际运行两个阶段。在管理策略配置阶段,本方法首先利用分区域性能监视及末级高速缓存控制器统计程序内不同数据区域的末级高速缓存访问信息。软件可以通过读取该控制器中的数据来分析不同数据区域的访存行为和局部性特征;其次,在确定单个数据区域的访存行为后,软件通过旁路和插入策略决策模块为该区域选择合理的旁路和插入策略;最后,利用该控制器提供的控制接口设置单个数据区域的旁路和插入策略。

现有技术通常是离线方法即让程序先运行一遍,搜集访问踪迹,然后进行判定;而本发明是在程序运行阶段,根据前一阶段的访问信息,判定下一阶段的访存行为,更具有普适性。

在实际运行过程中,一级高速缓存失效后的数据在进入末级高速缓存前会被判断其所在的数据区域是否被旁路。如果旁路位置1,则该数据被旁路,直接访问主存不进入末级高速缓存中。此外,本发明还设置末级高速缓存分区域插入策略控制位及控制逻辑。本发明以DIP为基础在LRU和BIP两种插入策略中选择。DIP静态划分末级高速缓存,通过PSEL动态记录采用LRU替换算法测试组和采用双模式插入策略(BIP(Bimodal Insertion Policy))策略测试组的末级高速缓存失效次数比较结果。BIP策略在芯片内部维护一个伪随机数生成器用于决定该页中数据的首次插入位置。该策略以较小概率(本文设定为1/32)将新放入末级高速缓存中的数据插入到最近最多使用位置,其他情况下插入到替换链表的最近最少使用位置,从而满足颠簸模式的要求。该方法根据PSEL最高位变化动态调整其他末级高速缓存组的插入策略。在引入区域一级插入策略控制位后,末级高速缓存新加入数据所在替换链表中的插入位置将由该位同PSEL最高位共同决定。

作为存储层次结构的重要一级,末级高速缓存同其他高速缓存一样由硬件进行组织和管理。单纯基于硬件的末级高速缓存管理策略具有一定的问题,不能解决末级高速缓存污染,存在性能优化的空间。本发明在现有处理器末级高速缓存的结构上,添加少量硬件逻辑和存储单元,建立软硬件协作的末级高速缓存分区域管理策略。本发明可以根据程序内不同数据区域的访存行为针对性地配置每个数据区域的旁路或插入策略。本方法采用旁路技术将具有流访问模式的数据不经过末级高速缓存,直接访问内存设备。同时,本方法还通过配置单个数据区域的插入策略,影响不同高速缓存行的替换优先级,进而影响高速缓存中的数据。采用上述措施,可以有效降低限制局部性差数据的末级高速缓存访问空间,降低末级高速缓存污染。

虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

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