[发明专利]一种多核环境下的共享缓存动态划分方法有效
申请号: | 201210592360.6 | 申请日: | 2012-12-29 |
公开(公告)号: | CN103077128A | 公开(公告)日: | 2013-05-01 |
发明(设计)人: | 金海;廖小飞;余丹萍 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F12/08 | 分类号: | G06F12/08;G06F9/50 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 朱仁玲 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 多核 环境 共享 缓存 动态 划分 方法 | ||
技术领域
本发明属于多核体系结构和程序行为分析领域,更具体地,涉及一种多核环境下的共享缓存动态划分方法。
背景技术
片上多核处理器(Chip Multi Processors,CMP)以其高性能、低功耗的优势成为微处理器主流。高速缓存作为处理器的核心部件,对处理器系统的性能起着至关重要的作用。在多核架构下,处理器采用多级缓存的设计方式,所有处理器核共享最后一级缓存或者每个处理器核拥有自己私有的最后一级缓存。私有最后一级缓存的结构,芯片扩展性好,控制逻辑相对简单,但是无法做到对系统资源的高效利用。相比较而言,共享最后一级缓存的结构具有资源利用率高、节约能耗等优点,是目前多核处理器架构发展的主流趋势。
但是,共享缓存的结构带来了缓存污染的问题。在多道任务环境下,对于并行执行的多个应用,当一个应用的缓存失效时,根据页面置换算法,可能替换另一个应用在缓存中的数据。因此,多个应用互相污染对方的数据,从而导致系统的整形性能降低。为此,缓存划分的方法被提出来用于共享缓存的管理。但如何高效地划分与管理多核体系结构的共享缓存,成为了当前的一个研究热点。
当前,主要有两种缓存划分的算法,即静态缓存划分和动态缓存划分。静态缓存划分在程序运行之前就确定好缓存的划分策略,在程序运行过程中,共享缓存划分保持不变。但是,这种方法对于行为复杂的程序并不适用,在一些情况下不能有效提升系统的性能。动态缓存划分方法利用程序 运行时的反馈信息,动态划分应用缓存的大小。但是,动态缓存划分的方法带来了如何决定缓存划分时机的问题。
研究发现,大部分程序在执行过程中,它们的运行特征(如cache缺失率、CPI等)都不是一成不变的。由于程序中循环、递归等结构的大量存在,程序在执行过程中的行为往往会随时间呈现不规则的周期性变化,这就是程序的阶段行为。与此同时,程序的缓存需求也随着程序阶段的变化而变化,程序的阶段不同,程序对缓存的需求也有可能不一样。利用程序的阶段行为可以有效地指导缓存的动态划分,当检测到程序的阶段发生转变,那么在下一阶段就可以对程序的缓存进行重新调整。
在多任务环境下,缓存划分能够有效解决缓存的污染问题,但是,传统的动态的缓存划分方法都是每隔一定的时间对程序的缓存做一次调整,并且在制定缓存划分策略时,需要添加额外的性能监控硬件或者改变现有的硬件结构,还只是在学术界被用来研究,并没有在真实的机器上实现。目前,共享缓存的动态划分机制存在两个主要的问题:
(1)并不能在最恰当的时机调整程序的缓存,由于程序的缓存需求与程序的阶段行为相关,而程序的阶段行为并不是均匀有规律的,目前这种每隔固定时间对程序的缓存进行调整并不能在程序的缓存需求发生变化的最佳时机对其缓存进行调整;
(2)动态调整缓存需要给程序划分合适大小的缓存,而要确定缓存大小是否合适,现有的机制需要添加额外的硬件对程序的访存行为进行监控,这种方法还不能应用在真实的机器上。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种多核环境下的共享缓存动态划分方法,其能感知程序的缓存需求变化,从而在最佳时机对程序的缓存作调整,此外,与现有的阶段行为分析方法相比,本发明对程序的性能几乎没有影响,能有效提高系统的整体性能。
为实现上述目的,本发明提供了一种多核环境下的共享缓存动态划分方法,包括以下步骤:
(1)初始化硬件计数器,启动多个应用程序,并利用硬件计数器对应用程序的运行信息进行采样;
(2)利用硬件计数器获取程序的基本块信息分析应用程序的阶段行为,通过提取应用程序的IPC变异系数来判断应用程序的阶段是否发生变化,若是则进入步骤(3),否则进入步骤(5);
(3)利用硬件计数器获取应用程序的缓存缺失间距,以得到缺失率曲线,并根据缺失率曲线制定应用程序的缓存划分策略;
(4)根据制定的缓存划分策略并利用动态页着色方法对应用程序的缓存进行重新分配;
(5)判断应用程序是否运行结束,若是则过程结束,否则返回步骤(2)。
步骤(1)是通过libpfm库的接口设置事件并读取硬件计数器,应用程序的运行信息包括有SBBV、IPC、以及缓存缺失间距。
针对SBBV的采样周期是任意正整数,IPC的采样周期是1000万、1亿或者10亿条指令,缓存缺失间距的采样周期是每一次缓存访问失效。
步骤(2)包括以下子步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210592360.6/2.html,转载请声明来源钻瓜专利网。