一种多核处理器共享缓存分配方法

文档序号:6440232阅读:897来源:国知局
专利名称:一种多核处理器共享缓存分配方法
技术领域
本发明属于计算机软件领域,具体涉及到一种多核CPU共享缓存分配方法。
背景技术
随着处理器频率逐渐逼近瓶颈,体系结构研究者与工业界都转向了多核领域,利用多个处理器核来提升计算机系统的整体性能,从而缓解了计算机系统对高频率的需求。 位于处理器核与内存之间有一层高速缓存结构,它的读写速度要比内存快。数据被缓存到 CPU缓存中,当CPU读写数据时,可避免从较慢的内存中存取数据,而直接从高速缓存中操作数据,从而提升了计算机系统的性能。当前市场的计算机体系结构有两种缓存设计方式,共享缓存和私有缓存。私有缓存是每个处理器核拥有自己的一块私有的缓存,这种结构不利于核之间的通信,并且因为存在数据副本而降低了缓存利用率。共享缓存结构是多个核共享一块缓存,这种架构提升了缓存利用率并降低了核之间的通信开销。因此,许多处理器厂商选择了共享最后一级缓存的体系结构,比如htel Core, IBM Power5和Sun Niagara等等。但是,共享的缓存结构带来了缓存竞争的问题。一般处理器缓存采用最近最少使用LRU替换算法,LRU替换算法平等对待并行执行的多个应用,当一个应用的缓存失效时, 可能替换另外一个应用在缓存中的数据,反之亦然,最终导致双方性能下降。因此共享缓存的管理问题成为当前研究热点。当前,共享缓存分配方法主要有(1)静态的缓存分配方法,这种方法在程序运行之前就确定缓存管理的策略。或者是通过编译时的信息,标记它的数据的局部性、访存类型等特征,对标记的数据区域实施特定的管理策略;或者是由用户自己定制;或者由操作系统为应用制定缓存管理计划,赋予应用不同的优先级,优先级高的应用获取较多缓存且不易被替换。(2)基于反馈信息的动态缓存分配方法,这是一种利用运行时信息动态管理缓存的方法。根据程序运行时的反馈信息,比如缓存缺失率,动态分配应用缓存大小,以达到要求的性能指标。这种方法需要添加额外的性能监控硬件。这些方法都是需要改变现有的硬件结构,添加额外的硬件才能达到管理缓存的目标。现在还仅仅在学术界被用来研究,还没有在真实机器上实现。

发明内容
本发明提供一种多核处理器体系结构下的共享缓存分配方法,该方法不需要添加额外的硬件资源,能很好的应用在真实机器上。一种多核处理器共享缓存分配方法,涉及两个共享CPU缓存的应用程序a和b,该方法具体为(1)缺失率曲线预测(11)收集应用程序i的采样点的缺失间距数据,i = a,b;
(12)依据缺失间距数据获取累计缺失次数-累计访问次数曲线;(13)对累计缺失次数-累计访问次数曲线作线性拟合,拟合得到的曲线的斜率记为分维Qi,拟合得到的曲线的截距记为截距Ai;(14)计算缺失率曲线Mi^. =4^"^,其中C为缓存大小;(2)分配缓存程序a 的缓存 Alloc_a = min{MRCa(χ) +MRCb(C-χ), χ e [1,C_l]}程序b 的缓存 Alloc_b = c-Alloc_a,其中,C为CPU的总缓存。本发明方法主要应用在两个程序竞争使用缓存的场景中。共享缓存的处理器体系结构中,两程序会竞争地使用缓存,互相驱逐对方的数据,最终导致双方的性能都下降。本发明隔离程序对缓存的使用,分配给不同的程序不同的缓存区域,运行时分析程序对缓存大小的需求,制定缓存划分策略。本发明的特点主要有个方面(1)实用性这种缓存管理方法不需要添加硬件,利用真实机器上普遍存在的硬件计数器部件,就可以在真实机器上实现。(2)透明性不需要修改程序源代码或者可执行文件,也不需要对可执行文件进行插桩。(3)开销小利用硬件计数器实现对程序的监控,最小化了缓存管理单元对程序性能的影响。并通过分形预测模型预测程序对缓存的需求,只需要运行一次程序就能得到程序的缓存缺失率曲线。


图1为本发明的总体框架图;图2为获取累计缺失次数-累计访问次数数据的方法。
具体实施例方式下面结合附图和实例对本发明作进一步详细的说明。一般存在两个应用程序共享使用CPU缓存,本发明所述的CPU共享缓存分配方法就是合理的给该两个应用程序划分缓存。为了实现本发明目的,本发明首先对两个应用程序进行缺失率曲线预测,再依据这两个缺失率曲线预测结果获取对应的最小平均缺失率, 进而依据获得最小平均缺失率时的划分点制定缓存划分策略,最终实现全软件形式的共享
缓存管理。图1给出了本发明整体流程图(1)对两应用程序按照相同方式进行缺失率曲线预测,具体为(11)收集应用程序各采样点的缺失间距数据;收集缺失间距数据可采用插桩法、模拟器收集法、硬件计数器等等方式,本发明优选硬件计数器,其开销小,适用于运行时的预测。具体说明如下在程序运行的时候收集程序的缓存访问信息,即缺失间距数据。为了不修改程序源代码并降低信息收集的开销,利用硬件计数器记录这一数据。利用硬件计数器的采样功能,监控 LAST_LEVEL_CACHE_MISSES,LAST_LEVEL_CACHE_REFERENCES 这两个事件。设置 LAST_LEVEL_CACHE_MISSES事件的阀值为1,因此每一次最后一级缓存缺失都会记录一次 LAST_LEVEL_CACHE_REFERENCES数值,这个数值就是缺失间距。利用硬件计数器的PEBS功能记录缺失间距,缺失间距被记录在一块内存缓冲中,当缓冲填满时发出溢出中断通知读线程读取缓冲数据,清空缓冲。具体实现时是通过Iibpfm库的接口设置事件并读取硬件计数器。(12)依据缺失间距数据获取累计缺失次数-累计访问次数曲线;累计缺失次数就是指被采样的缺失间距个数,累计访问次数是缺失间距的和值。 通过缺失间距数据,可以得到累计缺失次数与累计访问次数数据,通过统计应用程序中所有采样点的累计缺失次数与累计访问次数获得程序的累计缺失次数-累计访问次数曲线。 图2给出一个示例,缺失间距数据集G = {1,4,5},缺失间距个数为3,则累计缺失次数为 3+1 = 4,累计访问次数为1+4+5 = 10。(13)计算分形模型预测参数;分形模型预测参数包括分维θ和截距Α。对累计缺失次数-累计访问次数曲线作线性拟合,拟合得到的曲线的斜率即为分维θ,拟合得到的曲线的截距即为截距A。(14)计算缺失率曲线MRC = A0C(1_0)/ θ,其中C为缓存大小;(2)制定缓存划分分配策略本发明提出一种简单的缓存划分策略,目的是达到最低的平均缓存缺失率。对于两应用程序a和b的缓存缺失率曲线MRCa和MRCb,缓存的全部缓存大小为C, 划分给程序a 的缓存大小为 Alloc_a,则 Alloc_a = min {MRCa (χ) +MRCb (C-χ),χ e [1,C_l]}, 剩余的缓存都划分给程序b即Alloc_b = C-All0C_a。实例在一个双核处理器上分别运行两个应用,应用运行时读取硬件计数器记录缺失间距,并通过缺失间距数据转化成累计缺失次数-累计访问次数。当数据量达到足以代表程序行为时,我们这里取64M缓存访问次数,对数据进行线性拟合,得到模型的两个参数,分维和截距。将两个参数代入分形预测模型,便可得到程序运行在某一缓存大小时,程序的缓存缺失率,即缓存缺失率曲线。为了达到最低的平均缓存缺失率,取使平均缓存缺失率最小的划分点分配缓存。由上分析可以发现本发明方法隔离程序使用缓存区域,不同的程序使用不同的缓存区域,双方不会相互影响对方的性能。利用硬件计数器在运行时分析程序对缓存的需求, 动态决定分配给程序的缓存大小,达到最低的平均缓存缺失率,提升共享缓存系统的平均性能。
权利要求
1.一种多核处理器共享缓存分配方法,涉及两个共享CPU缓存的应用程序a和b,该方法具体为(1)缺失率曲线预测(11)收集应用程序i的采样点的缺失间距数据,i=a,b;(12)依据缺失间距数据获取累计缺失次数-累计访问次数曲线;(13)对累计缺失次数-累计访问次数曲线作线性拟合,拟合得到的曲线的斜率记为分维Qi,拟合得到的曲线的截距记为截距Ai;(14)计算缺失率曲线WM,其中C为缓存大小;(2)分配缓存程序 a 的缓存 Alloc_a = min {MRCa(x)+MRCb (C-χ),χ e [1,C_l]} 程序 b 的缓存 Alloc_b = c-Alloc_a, 其中,C为CPU的总缓存。
2.根据权利要求1所述的多核处理器共享缓存分配方法,其特征在于,所述步骤(11) 采用插桩法、模拟器收集法和硬件计数器中的任意一种进行缺失间距数据统计。
全文摘要
本发明提供了一种多核处理器共享缓存分配方法,具体为首先对两应用程序进行缺失率曲线预测,再依据这两个缺失率曲线预测结果分别获取对应的最小平均缺失率,进而依据获得最小平均缺失率时的划分点制定缓存分配策略,最终实现全软件形式的共享缓存管理,有效提升共享缓存系统的平均性能。
文档编号G06F12/08GK102521153SQ201110402029
公开日2012年6月27日 申请日期2011年12月7日 优先权日2011年12月7日
发明者喻之斌, 贺露露, 金海 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1