一种缓存失效率的预测方法、装置、可读介质和设备与流程

文档序号:11230374
一种缓存失效率的预测方法、装置、可读介质和设备与流程

本发明涉及计算机领域的缓存失效率预测,特别是涉及在缓存分配技术下的共享缓存失效率的预测方法、装置、可读介质和设备。



背景技术:

高速缓存的作用在于加速访存速度,在现在多核处理器架构中,往往采用多级缓存架构。如Intel X86架构的CPU,每个核会有独占的L1,L2缓存,所有核会共享L3缓存。在实际使用中,不同的核上往往会运行不同的应用程序,它们会在共享缓存上产生竞争。而不同应用程序对缓存的敏感性和污染性也是不同的。预测出在竞争情况下,各个应用的缓存失效率情况,对分析系统的性能和瓶颈有着巨大作用,也是对缓存做调控和管理的基础。

现代CPU大多都含有性能监测功能(Performance Monitoring Units),可以在运行时监测出各级缓存的失效数目等信息,但是无法在运行前预测出失效率情况。

学术上也有一些研究针对竞争下的缓存预测问题,比如Chandra等基于概率的模型(D.Chandra et al.,“Predicting inter-thread cache contention on a chip multi-processor architecture,”in 11th International Symposium on High-Performance Computer Architecture.IEEE,2005,pp.340–351.),Hu等提出基于平均失效时间的模型(X.Hu et al.,“Kinetic modeling of data eviction in cache,”in 2016USENIX Annual Technical Conference(USENIX ATC 16).Denver,CO:USENIX Association,2016,pp.351–364.)。它们可以在完全竞争的情况下,比较准确地预测出各个程序的失效率。

但是,上述提到的预测方法只适用于完全竞争的情况下,在新款Intel Xeon CPU的缓存分配技术CAT(Cache Allocation Technology)下,可能会产生共享缓存的部分竞争,这些方法就不再适用了。

另外,上述的方法需要提前对程序进行采样,会有比较大的额外开销,不大适用于实时、在线地进行预测。



技术实现要素:

针对现有技术中的上述问题,本发明提供了一种共享缓存失效率的预测方法及装置。

根据本发明的共享缓存失效率的预测方法,包括对每个程序的访存序列进行采样;基于所述每个程序的访存序列,计算每个程序的缓存失效率曲线;基于所述每个程序的缓存失效率曲线,计算多个程序在CAT分配下的缓存失效率。

CAT技术允许部分重叠,导致了传统预测方法不再适用,本发明的方法通过缓存占有率和缓存失效率的互推关系,使用迭代策略找到均衡情况下每个程序的实际占有率,从而得到失效率,因此在CAT缓存分配技术中存在部分共享的情况下也能准确预测出失效率。

对每个程序的访存序列进行采样是静态采样或动态采样。

基于所述每个程序的访存序列,计算每个程序的缓存失效率曲线包括根据所述每个程序的访存序列,统计重用距离直方图;根据所述重用距离直方图,计算所述缓存失效率曲线。

根据以下公式,计算所述缓存失效率曲线

其中,x为缓存大小,i为重用距离。

基于所述每个程序的缓存失效率曲线,计算多个程序在CAT分配下的缓存失效率包括通过迭代算法计算所述多个程序在CAT分配下的缓存失效率。

迭代算法包括:设定所述每个程序的初始缓存占用;根据所述每个程序的缓存失效率曲线,计算所述每个程序的缓存失效率;推导出所述每个程序的实际缓存占用;判断缓存占用是否稳定,如果判断为否,将所述每个程序的实际缓存占用设为初始值,重新计算所述每个程序的缓存失效率,直至所述缓存占用稳定。

根据本发明的共享缓存失效率的预测装置,包括采样模块,所述采样模块对每个程序的访存序列进行采样;第一计算模块,基于所述每个程序的访存序列,计算每个程序的缓存失效率曲线;第二计算模块,基于所述每个程序的缓存失效率曲线,计算多个程序在CAT分配下的缓存失效率。

采样模块是静态采样模块或动态采样模块。

第一计算模块进一步包括统计模块,所述统计模块根据所述每个程序的访存序列,统计重用距离直方图;缓存失效率曲线计算模块,根据所述重用距离直方图,计算所述缓存失效率曲线。

缓存失效率曲线计算模块根据以下公式计算所述缓存失效率曲线

其中,x为缓存大小,i为重用距离。

第二计算模块进一步包括迭代算法模块,通过迭代算法计算所述多个程序在CAT分配下的缓存失效率。

迭代算法模块进一步包括设定模块,根据所述每个程序的缓存失效率曲线,设定每个程序的初始缓存占用;第三计算模块,计算每个程序的缓存失效率;推导模块,推导出每个程序的实际缓存占用;判断模块,判断缓存占用是否稳定,如果判断为否,将所述每个程序的实际缓存占用设为初始值,重新计算所述每个程序的缓存失效率,直至所述缓存占用稳定。

由于CAT技术允许部分重叠,导致了传统预测方法不再适用,本发明的方法通过缓存占有率和缓存失效率的互推关系,使用迭代策略找到均衡情况下每个程序的实际占有率,从而得到失效率,本发明可以较为准确地预测出在各种分配情况下,并发运行程序的缓存失效率,从而评估系统的综合性能。

附图说明

图1是根据本发明的实施例的共享缓存失效率的预测方法的示意图;

图2是根据本发明的实施例的共享缓存失效率的预测方法的迭代算法示意图;

图3是根据本发明的实施例的共享缓存失效率的预测装置的示意图。

具体实施方式

下面将结合附图,对本发明的实施例进行详细说明。

根据本发明实施例的共享缓存失效率的预测方法如图1所示。首先在步骤S1,对每个程序的访存序列进行采样,采样可以采用Intel Pin等工具进行静态采样;如果处理器有相关硬件,比如POWER(Performance Optimization With Enhanced RISC)支持,可以在运行时进行采样。

接下来,在步骤S2,根据采样结果的访存序列,计算缓存失效率曲线MRC(Miss Ratio Curve),即使用的缓存大小与失效率之间的关系。首先根据访存序列,统计出重用距离直方图。重用距离(Reuse Distance)定义为对同一数据的相邻两次访问之间所间隔的访问数,可以用一个直方图来统计一串访存序列中每次重用的重用距离的分布,其横坐标为重用距离,纵坐标为频率。

对于LRU(Least Recently Used)策略下的全相联缓存,该访存序列在不同缓存大小下的命中次数可以直接由重用距离直方图精准地推算出来。程序在理想状态下的缓存失效率可以由如下公式算出:

其中x是缓存大小,i是重用距离。

虽然真实硬件存在多级缓存、组相联设计、包含型缓存、数据预取以及非严格LRU等诸多影响因素,上述测量值会和真实值有所偏差,但上述方法仍能较为准确地刻画出真实情况下的缓存特性。

本发明根据直方图计算出MRC,通过直方图计算MRC是准确率相对较高的一种方法。也可以采用例如Rapid MRC的方法获得MRC(Tam D K,Azimi R,Soares L B,et al.Rapid MRC:approximating L2 miss rate curves on commodity systems for online optimizations[C]//ACM SIGARCH Computer Architecture News.ACM,2009,37(1):121-132.)。

接下来,如步骤S3所示,在得到MRC以后,通过迭代算法来计算在多个程序在CAT分配下的缓存失效率。迭代算法通过真实缓存占用与失效率的互相推导,在多次迭代以后找到均衡状态下,这个状态下的缓存占用和失效率即是真实结果。该算法实际上模拟了缓存预热的过程,每一轮迭代相当于模拟少量的访存,通过计算失效次数,可以推导出当轮结束以后,每个程序的实际占用,然后再用这个占用结果,来推导下一轮失效率,最终收敛的结果就是稳定状态下的失效率。

以下,参照图2对迭代算法进行简单说明。如图2所示,在步骤S21,设定每个程序的初始缓存占用,然后根据设定的初始值,根据得到的各个程序的MRC,在步骤S22计算缓存失效率,根据计算出的缓存失效率,步骤S23推导出每个程序的实际缓存占用的情况,然后在S24进行判断,判断缓存占用是否处于稳定状态,判断为否则转到步骤S25,将当前计算出的每个程序的实际缓存占用情况作为初始值,返回步骤S22重新计算缓存失效率,直至缓存占用处于稳定状态,程序结束。通过多轮的迭代计算,最终收敛的结果就是稳定状态下的各个程序的缓存失效率。

由于CAT技术允许部分重叠,导致了传统预测方法不再适用,本发明的方法通过缓存占有率和缓存失效率的互推关系,使用迭代策略找到均衡情况下每个程序的实际占有率,从而得到失效率,本发明可以较为准确地预测出在各种分配情况下,并发运行程序的缓存失效率,从而评估系统的综合性能。

图3是根据本发明的实施例的共享缓存失效率的预测装置的示意图。如图3所示,预测装置包括采样模块21,第一计算模块22,第二计算模块23。采样模块21对每个程序的访存序列进行采样。第一计算模块22基于采样模块21获得的每个程序的访存序列,计算每个程序的缓存失效率曲线。第二计算模块23基于第一计算模块22计算出的每个程序的缓存失效率曲线,根据迭代算法计算多个程序在CAT分配下的缓存失效率。

图3所示仅仅是本发明的一种实现方式,除了图中已经示出的单元外,系统还可以包括其他未示出的单元、模块和/或组件。

根据本发明的又一实施例,还包括一种计算机可读存储介质,该存储介质存储有共享缓存失效率的预测程序,预测程序被计算机执行以实施如参照图1所述的共享缓存失效率的预测方法。

根据本发明的又一实施例,还包括一种共享缓存失效率的预测设备,该预测设备包括存储器,在存储器中存储有共享缓存失效率的预测程序;以及处理器,处理器执行存储器中存储的共享缓存失效率的预测程序以实施如参照图1所述的共享缓存失效率的预测方法。

虽然经过对本发明结合具体实施例进行描述,对于本领域的技术技术人员而言,根据上文的叙述后作出的许多替代、修改与变化将是显而易见。因此,当这样的替代、修改和变化落入附后的权利要求的精神和范围之内时,应该被包括在本发明中。

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