一种基于CAT的共享缓存分配方法、装置、介质以及设备与流程

文档序号:11774406阅读:339来源:国知局
一种基于CAT的共享缓存分配方法、装置、介质以及设备与流程

本发明涉及计算机领域的共享缓存调控,特别是涉及在缓存分配技术下的共享缓存的分配方法、装置、介质以及设备。



背景技术:

高速缓存的作用在于加速访存速度,在现在多核处理器架构中,往往采用多级缓存架构。如intelx86架构的cpu,每个核会有独占的l1,l2缓存,所有核会共享l3缓存。在实际使用中,不同的核上往往会运行不同的线程,它们会在共享缓存上产生竞争。传统的lru策略对所有访存一视同仁,这会导致缓存污染的问题,即某一个程序可能会侵占大量缓存,导致其他程序性能下降。学术界对此进行了大量研究,但大部分都需要在硬件层进行改动,无法在商用处理器得到应用。2016年intel在第四代xeon处理器全线引入了缓存分配技术(cacheallocationtechnology,cat),在硬件层面对共享缓存管理提供了支持。如何利用新型的cat工具,对缓存进行调控和优化是一个很有意义的问题。

因为现在的处理器并不是顺序把物理地址映射到高速缓存上,而是采用哈希的算法。所以“页面着色”在现在的处理器架构下已经不再适用。这样操作系统就无法通过“着色”来控制缓存的位置。同时该方法的额外开销较大,也没有被linux内核所采用。



技术实现要素:

针对现有技术中的上述问题,本发明提供了一种新的共享缓存的分配方法,可以利用cat高效地管理共享缓存。

根据本发明实施例的基于cat的共享缓存的分配方法,该方法包括获得多个程序在cat分配下的缓存失效率;基于所述多个程序在cat分配下的缓存失效率,计算共享缓存的分配方案;根据所述共享缓存的所述分配方案分配所述多个程序的缓存。

本发明的方法使用英特尔的缓存分配技术,对并发执行的程序进行自动化的缓存分配调优,可以适用于多种多样的优化目标,比如增大吞吐量、降低失效率或者保证qos(服务质量,qualityofservice)。

根据本发明实施例的基于cat的共享缓存的分配方法,进一步包括通过模拟退火算法计算所述共享缓存的分配方案。

根据本发明实施例的分配方法的模拟退火算法包括,初始化温度值并随机产生分配方案;产生所述分配方案的相邻分配方案;c.判断所述相邻分配方案的指标数值是否优于所述分配方案的指标数值,如果判断为是,则选择所述相邻分配方案;如果判断为否,则以概率判断是否选择所述相邻分配方案;d.降低温度值,并判断所述温度值是否低于预定的阈值,如果判断为是,则选择当前的分配方案,如果判断为否,则返回步骤b。

根据本发明实施例的模拟退火算法进一步包括以概率判断是否选择所述相邻分配方案包括做如下的概率判断exp(-△/(kt))≤random(0,1),其中δ是所述相邻分配方案的指标数值与所述分配方案的指标数值的差值,k是常数,t是温度值;如果判断为是,则选择所述相邻分配方案,如果判断为否,则转到步骤d。

通过搜索算法寻找近似最优解,而不是直接计算出最优解。基于模拟退火算法,实现针对多种优化目标的搜索近似最优解算法,在较小的时间空间开销内,产生一个优化决策。模拟退火算法通过随机走动和逐渐降温,找到一个全局较优分配。该算法可以有效地避免陷入局部最优解,它能在较短地时间内找出一个全局的较优解。

根据本发明实施例的基于cat的共享缓存的分配装置包括获取模块,获得多个程序在cat分配下的缓存失效率;计算模块,基于所述多个程序在cat分配下的缓存失效率,计算共享缓存的分配方案;以及分配模块,根据所述共享缓存的分配方案分配所述多个程序的缓存。

其中,计算模块包括模拟退火算法模块。

其中,模拟退火算法模块进一步包括初始化模块,初始化温度值并随机产生分配方案;产生模块,产生所述分配方案的相邻分配方案;判断模块,判断所述相邻分配方案的指标数值是否优于所述分配方案的指标数值,如果判断为是,则选择所述相邻分配方案;如果判断为否,则以概率判断是否选择所述相邻分配方案;第二判断模块,降低温度值,并判断所述温度值是否低于预定的阈值,如果判断为是,则选择当前的分配方案,如果判断为否,则由所述产生模块产生新的相邻分配方案。

其中,判断模块进一步包括概率判断模块,所述概率判断模块做出以下概率判断

exp(-△/(kt))≤random(0,1)

其中δ是所述相邻分配方案的指标数值与所述分配方案的指标数值的差值,k是常数,t是温度值;如果判断为是,则选择所述相邻分配方案,如果判断为否,则由所述第二判断模块进行判断。

根据本发明的技术方案,对并发执行的程序的共享缓存的分配方案进行计算,并且通过模拟退火算法,在较短地时间内找出一个全局的较优解,并且可以适用于多种多样的,如增大吞吐量、降低失效率或者保证qos的优化目标。

附图说明

图1是根据本发明的实施例的共享缓存分配方法示意图;

图2是根据本发明的实施例的共享缓存分配方法的模拟退火算法示意图;

图3是根据本发明的实施例的共享缓存分配装置的示意图。

具体实施方式

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

根据本发明实施例的共享缓存分配方法如图1所示。该方法包括以下步骤,在步骤s1,获得多个程序在cat分配下的缓存失效率;步骤s2基于所述多个程序在cat分配下的缓存失效率,计算共享缓存的分配方案;最后步骤s3根据所述共享缓存的所述分配方案分配所述多个程序的缓存。

其中,步骤s1获得多个程序在cat分配下的缓存失效率可以通过以下的方式进行。

首先,对每个程序的访存序列进行采样,采样可以采用intelpin等工具进行静态采样;如果处理器有相关硬件,比如power(performanceoptimizationwithenhancedrisc)支持,可以在运行时进行采样。

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

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

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

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

本发明根据直方图计算出mrc,通过直方图计算mrc是准确率相对较高的一种方法。也可以采用例如rapidmrc的方法获得mrc(tamdk,azimir,soareslb,etal.rapidmrc:approximatingl2missratecurvesoncommoditysystemsforonlineoptimizations[c]//acmsigarchcomputerarchitecturenews.acm,2009,37(1):121-132.)。

接下来,在得到mrc以后,通过迭代算法来计算在多个程序在cat分配下的缓存失效率。迭代算法通过真实缓存占用与失效率的互相推导,在多次迭代以后找到均衡状态下,这个状态下的缓存占用和失效率即是真实结果。该算法实际上模拟了缓存预热的过程,每一轮迭代相当于模拟少量的访存,通过计算失效次数,可以推导出当轮结束以后,每个程序的实际占用,然后再用这个占用结果,来推导下一轮失效率,最终收敛的结果就是稳定状态下的失效率。还可以根据失效率进一步推导出程序的执行效率,程序的执行效率用周期指令数(instructionspercycle,ipc)来表示。

对于本领域的技术技术人员而言,获得多个程序在cat分配下的缓存失效率不仅限于上述的方法。

以下,对根据本发明实施例的共享缓存分配方法进行进一步说明。根据本发明实施例的方法,基于上述获得的多个程序的缓存失效率,通过模拟退火算法来计算对于多个程序的缓存分配方案。

由于潜在的分配数量极其巨大,无法通过朴素的搜索来找到最优分配。通过模拟退火算法,在较小的时间空间开销下,找到一个近似最优解。该算法基于多个程序的缓存失效率,通过随机走动和逐渐降温,找到一个全局较优分配。如果把一个分配看成一个状态,如果另一个分配与它相差一个分配单位,可以认为两个分配为相邻状态(在cat下,缓存的路多一个或少一个)。模拟退火算法从一个初始的随机状态开始,每一轮找一个相邻状态进行尝试,如果相邻的状态更优,则跳到该状态,否则有一定概率依然跳转,该概率决定于当前的温度。初始温度较高时,所以跳到更差状态的概率较大,随着温度逐渐降低,跳跃到较差解的概率也逐渐降低。该算法可以有效地避免陷入局部最优解,它能在较短地时间内找出一个全局的较优解。

图2是根据本发明实施例的模拟退火算法的流程图。如图2所示,在步骤s21,设定初始的温度值t,然后在步骤s22随机产生一个分配方案s,并且根据该分配方案计算器指标数值m,指标数值m可以是吞吐量、缓存失效数、ipc等。接下来,步骤s23中,随机生成一个分配方案s’,该分配方案s’是分配方案s的相邻分配方案。同样,s’的指标数值m’也要被计算出来,即步骤s24。通过在步骤s25中比较两个分配方案的指标数值,对这两种分配方案的优劣做出判断。如果步骤s25中判断为是,就表示相邻分配方案s’优于随机生成的方案s,这时,在步骤s26中,选择相邻分配方案s’作为当前的分配方案。

进一步的,由于温度t是一个递减的函数,通过降低温度t,降低得到较差解的概率,最终找到一个全局最优解。如图2所示,在步骤s27中,降低温度值t,并且在步骤s28判断温度值t是否低于预定的阈值,该阈值可以根据实际情况来调整。如果步骤s28的判断为是,则表示当前生成的分配方案能够满足业务需求,将当前的方案作为结果输出。如果s28的判断为否,则返回步骤s23,根据当前的分配方案重新生成相邻分配方案,程序循环,直至输出最终的分配方案。

在上述过程中,如果步骤s25的判断为否,则需要进一步在步骤s30做出如下概率判断。

exp(-△/(kt))≤random(0,1)

其中,△是两个分配方案的指标数值的差值,k是根据具体业务和实际需要设定的常数。

如果s30的判断为是,则表示跳到更差状态的概率较小,则程序转到步骤s26,更新当前的分配方案,如果s30的判断为否,则表示跳到更差状态的概率较大,程序转到步骤s27,通过降低温度以减小跳到更差状态的概率。

图3是根据本发明的实施例的共享缓存分配装置的示意图。如图3所示,预测装置包括获取模块31,计算模块32以及分配模块33。获取模块31获得多个程序在cat分配下的缓存失效率;计算模块32基于所述多个程序在cat分配下的缓存失效率,计算共享缓存的分配方案;分配模块33根据所述共享缓存的所述分配方案分配所述多个程序的缓存。

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

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

根据本发明的又一实施例,还包括一种基于cat的共享缓存的分配设备,该设备包括存储器,存储器存储有基于cat的共享缓存的分配程序;以及处理器,该处理器执行基于cat的共享缓存的分配程序以实施如上所述的基于cat的共享缓存的分配方法。

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

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