一种多核环境下的共享缓存动态划分方法

文档序号:6580536阅读:120来源:国知局
专利名称:一种多核环境下的共享缓存动态划分方法
技术领域
本发明属于多核体系结构和程序行为分析领域,更具体地,涉及一种多核环境下的共享缓存动态划分方法。
背景技术
片上多核处理器(Chip Multi Processors, CMP)以其高性能、低功耗的优势成为微处理器主流。高速缓存作为处理器的核心部件,对处理器系统的性能起着至关重要的作用。在多核架构下,处理器采用多级缓存的设计方式,所有处理器核共享最后一级缓存或者每个处理器核拥有自己私有的最后一级缓存。私有最后一级缓存的结构,芯片扩展性好,控制逻辑相对简单,但是无法做到对系统资源的高效利用。相比较而言,共享最后一级缓存的结构具有资源利用率高、节约能耗等优点,是目前多核处理器架构发展的主流趋势。但是,共享缓存的结构带来了缓存污染的问题。在多道任务环境下,对于并行执行的多个应用,当一个应用的缓存失效时,根据页面置换算法,可能替换另一个应用在缓存中的数据。因此,多个应用互相污染对方的数据,从而导致系统的整形性能降低。为此,缓存划分的方法被提出来用于共享缓存的管理。但如何高效地划分与管理多核体系结构的共享缓存,成为了当前的一个研究热点。当前,主要有两种缓存划分的算法,即静态缓存划分和动态缓存划分。静态缓存划分在程序运行之前就确定好缓存的划分策略,在程序运行过程中,共享缓存划分保持不变。但是,这种方法对于行为复杂的程序并不适用,在一些情况下不能有效提升系统的性能。动态缓存划分方法利用程序运行时的反馈信息,动态划分应用缓存的大小。但是,动态缓存划分的方法带来了如何决定缓存划分时机的问题。研究发现,大部分程序在执行过程中,它们的运行特征(如cache缺失率、CPI等)都不是一成不变的。由于程序中循环、递归等结构的大量存在,程序在执行过程中的行为往往会随时间呈现不规则的周期性变化,这就是程序的阶段行为。与此同时,程序的缓存需求也随着程序阶段的变化而变化,程序的阶段不同,程序对缓存的需求也有可能不一样。利用程序的阶段行为可以有效地指导缓存的动态划分,当检测到程序的阶段发生转变,那么在下一阶段就可以对程序的缓存进行重新调整。在多任务环境下,缓存划分能够有效解决缓存的污染问题,但是,传统的动态的缓存划分方法都是每隔一定的时间对程序的缓存做一次调整,并且在制定缓存划分策略时,需要添加额外的性能监控硬件或者改变现有的硬件结构,还只是在学术界被用来研究,并没有在真实的机器上实现。目前,共享缓存的动态划分机制存在两个主要的问题(I)并不能在最恰当的时机调整程序的缓存,由于程序的缓存需求与程序的阶段行为相关,而程序的阶段行为并不是均匀有规律的,目前这种每隔固定时间对程序的缓存进行调整并不能在程序的缓存需求发生变化的最佳时机对其缓存进行调整;(2)动态调整缓存需要给程序划分合适大小的缓存,而要确定缓存大小是否合适,现有的机制需要添加额外的硬件对程序的访存行为进行监控,这种方法还不能应用在真实 的机器上。

发明内容
针对现有技术的缺陷,本发明的目的在于提供一种多核环境下的共享缓存动态划分方法,其能感知程序的缓存需求变化,从而在最佳时机对程序的缓存作调整,此外,与现有的阶段行为分析方法相比,本发明对程序的性能几乎没有影响,能有效提高系统的整体性能。为实现上述目的,本发明提供了一种多核环境下的共享缓存动态划分方法,包括以下步骤(I)初始化硬件计数器,启动多个应用程序,并利用硬件计数器对应用程序的运行信息进行采样;(2)利用硬件计数器获取程序的基本块信息分析应用程序的阶段行为,通过提取应用程序的IPC变异系数来判断应用程序的阶段是否发生变化,若是则进入步骤(3),否则进入步骤(5);(3)利用硬件计数器获取应用程序的缓存缺失间距,以得到缺失率曲线,并根据缺失率曲线制定应用程序的缓存划分策略;(4)根据制定的缓存划分策略并利用动态页着色方法对应用程序的缓存进行重新分配;(5)判断应用程序是否运行结束,若是则过程结束,否则返回步骤(2)。步骤(I)是通过I ibpfm库的接口设置事件并读取硬件计数器,应用程序的运行信息包括有SBBV、IPC、以及缓存缺失间距。针对SBBV的采样周期是任意正整数,IPC的采样周期是1000万、I亿或者10亿条指令,缓存缺失间距的采样周期是每一次缓存访问失效。步骤(2)包括以下子步骤(2-1)将各应用程序划分为固定长度的程序段;具体而言,程序段是包含固定数目指令的一段程序,在本发明中固定数目为1000万、I亿或者10亿条指令;(2-2)判断应用程序当前执行的程序段是否是该应用程序的第一个程序段,若是则进入步骤(2-3),否则进入步骤(2-10);(2-3)根据SBBV的采样周期来采样应用程序在各采样点的条件分支指令地址和条件分支指令间执行的指令数;(2-4)利用采样到的条件分支指令地址和条件分支指令间执行的指令数建立稀疏
基本块向量;(2-5)判断应用程序当前执行的程序段是否是该应用程序的第一个程序段,若是则进入步骤(2-6),否则进入步骤(2-7);(2-6)为该程序段设置一个新的阶段,并保存该阶段对应的稀疏基本块向量,过程结束;(2-7)获得该程序段的稀疏基本块向量与该应用程序以往出现的每一个阶段的稀疏基本块向量之间的对比结果;(2-8)从获得的对比结果中取出与该程序段的稀疏基本块向量距离最小的阶段,并判断对应的最小距离是否大于阈值Y,若是则返回步骤(2-6),否则进入步骤(2-9);(2-9)将该程序段与距离最小的阶段归为一类阶段,过程结束;(2-10)采样应用程序在该程序段的IPC ;(2-11)根据采样得到的IPC计算该程序段的IPC变异系数COV ;(2-12)判断IPC变异系数COV是否大于阈值Y,若是则返回步骤(2-3),否则表示应用程序的阶段没有发生变化,过程结束。对比结果是通过计算该程序段的稀疏基本块向量与以往出现的每一个阶段的稀疏基本块向量之间的欧拉距离或曼哈顿距离的方式得以获得。IPC变异系数COV是采用以下计算公式获得:
权利要求
1.一种多核环境下的共享缓存动态划分方法,其特征在于,包括以下步骤: (1)初始化硬件计数器,启动多个应用程序,并利用硬件计数器对应用程序的运行信息进行采样; (2)利用硬件计数器获取程序的基本块信息分析应用程序的阶段行为,通过提取应用程序的IPC变异系数来判断应用程序的阶段是否发生变化,若是则进入步骤(3),否则进入步骤(5); (3)利用硬件计数器获取应用程序的缓存缺失间距,以得到缺失率曲线,并根据缺失率曲线制定应用程序的缓存划分策略; (4)根据制定的缓存划分策略并利用动态页着色方法对应用程序的缓存进行重新分配; (5)判断应用程序是否运行结束,若是则过程结束,否则返回步骤(2)。
2.根据权利要求1 所述的共享缓存动态划分方法,其特征在于, 步骤(I)是通过Iibpfm库的接口设置事件并读取硬件计数器; 应用程序的运行信息包括有SBBV、IPC、以及缓存缺失间距。
3.根据权利要求2所述的共享缓存动态划分方法,其特征在于,针对SBBV的采样周期是任意正整数,IPC的采样周期是1000万、I亿或者10亿条指令,缓存缺失间距的采样周期是每一次缓存访问失效。
4.根据权利要求1所述的共享缓存动态划分方法,其特征在于,步骤(2)包括以下子步骤: (2-1)将各应用程序划分为固定长度的程序段;具体而言,程序段是包含固定数目指令的一段程序,在本发明中固定数目为1000万、I亿或者10亿条指令; (2-2)判断应用程序当前执行的程序段是否是该应用程序的第一个程序段,若是则进入步骤(2-3),否则进入步骤(2-10); (2-3)根据SBBV的采样周期来采样应用程序在各采样点的条件分支指令地址和条件分支指令间执行的指令数; (2-4)利用采样到的条件分支指令地址和条件分支指令间执行的指令数建立稀疏基本块向量; (2-5)判断应用程序当前执行的程序段是否是该应用程序的第一个程序段,若是则进入步骤(2-6),否则进入步骤(2-7); (2-6)为该程序段设置一个新的阶段,并保存该阶段对应的稀疏基本块向量,过程结束; (2-7)获得该程序段的稀疏基本块向量与该应用程序以往出现的每一个阶段的稀疏基本块向量之间的对比结果; (2-8)从获得的对比结果中取出与该程序段的稀疏基本块向量距离最小的阶段,并判断对应的最小距离是否大于阈值Y,若是则返回步骤(2-6),否则进入步骤(2-9); (2-9)将该程序段与距离最小的阶段归为一类阶段,过程结束; (2-10)采样应用程序在该程序段的IPC ; (2-11)根据采样得到的IPC计算该程序段的IPC变异系数COV ; (2-12)判断IPC变异系数COV是否大于阈值Y,若是则返回步骤(2-3),否则表示应用程序的阶段没有发生变化,过程结束。
5.根据权利要求4所述的共享缓存动态划分方法,其特征在于,对比结果是通过计算该程序段的稀疏基本块向量与以往出现的每一个阶段的稀疏基本块向量之间的欧拉距离或曼哈顿距离的方式得以获得。
6.根据权利要求4所述的共享缓存动态划分方法,其特征在于,IPC变异系数COV是采用以下计算公式获得:
7.根据权利要求1所述的共享缓存动态划分方法,其特征在于,步骤(3)包括以下子步骤: (3-1)判断应用程序是否出现新的阶段,若是则进入步骤(3-2),否则进入步骤(3-5);(3-2)根据缓存缺失间距的采样周期获取应用程序在各采样点的缓存缺失间距数据;(3-3)依据缓存缺失间距数据对累计缺失次数-累计访问次数曲线作线性拟合,拟合得到的曲线的斜率即为分维9,拟合得到的曲线的截距即为截距A ; (3-4)根据线性拟合的结果计算缺失率曲线MRC = AeC(1_0)/ 0,其中c为cpu的最后一级缓存大小,然后进入步骤(3-6); (3-5)根据步骤(2-9)的分类结果将当前程序段对应的阶段分类的缺失率曲线作为当前程序阶段的缺失率曲线; (3-6)根据当前程序阶段的缺失率曲线制定新的缓存分配方案,过程结束。
8.根据权利要求7所述的共享缓存动态划分方法,其特征在于,步骤(3-6)中,划分给一个应用程序 a 的缓存大小 Alloc_a = {MRCa(x) |min(MRCa(x)+MRCb(C_x)),x G [I, C-l]},划分给另一个应用程序b的缓存大小Alloc_b = C-AlloC_a,其中MRCa和MRCb分别为应用程序a和b的缓存缺失率曲线。
全文摘要
本发明公开了一种多核环境下的共享缓存动态划分方法,包括初始化硬件计数器,启动多个应用程序,并利用硬件计数器对应用程序的运行信息进行采样,利用硬件计数器获取程序的基本块信息分析应用程序的阶段行为,通过提取应用程序的IPC变异系数来判断应用程序的阶段是否发生变化,若是则利用硬件计数器获取应用程序的缓存缺失间距,以得到缺失率曲线,并根据缺失率曲线制定应用程序的缓存划分策略.根据制定的缓存划分策略并利用动态页着色方法对应用程序的缓存进行重新分配。本发明能感知程序的缓存需求变化,从而在最佳时机对程序的缓存作调整,此外,与现有的阶段行为分析方法相比,本发明对程序的性能几乎没有影响,能有效提高系统的整体性能。
文档编号G06F9/50GK103077128SQ201210592360
公开日2013年5月1日 申请日期2012年12月29日 优先权日2012年12月29日
发明者金海 , 廖小飞, 余丹萍 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1