随机替换缓存的高效模拟方法

文档序号:6606372阅读:163来源:国知局
专利名称:随机替换缓存的高效模拟方法
技术领域
本发明涉及计算机领域的缓存模拟技术,尤其涉及一种采用随机替换策略的缓存 的高效模拟方法。
背景技术
缓存在计算机系统中被广泛应用于提高性能。缓存将地址映射到值。由于访问 缓存的代价小于访问内存,所以把最近经常访问的值放到缓存里有利于降低访问内存的开 销。当缓存接受到对一个地址的访问请求时,它会查找自身内容,寻找与该地址对应的缓存 行。如果这样的行存在,则称发生了命中事件该事件下返回存储在缓存里的对应的值;如 果这样的行不存在,则称发生了缺失事件该事件下通过某种备份机制获得需要的值,然后 依照替换策略在备选缓存行中选出一个行逐出缓存从而制造一个空闲行,并把地址与新获 得的值存到新空闲行。替换策略是在备选缓存行中选出驱逐对象的策略。随机替换策略在 备选缓存行中随机选出驱逐对象。缓存模拟是评估缓存作用的重要技术。缓存模拟通过使用模拟器模拟目标缓存的 参数与替换策略,来了解缓存处理某一地址序列后生成的命中缺失事件序列。但对于采用 随机替换策略的缓存而言,传统的蒙特卡洛模拟方法一轮运行只能给出多种可能之一,所 以一轮模拟不能完全反映一个地址序列对应的命中缺失事件序列,因而需要多轮模拟以评 估缓存影响。比如假设<a,e>代表一个内容包含a和e的2大小的全相联缓存,这里不同 的字母代表不同的缓存行。当面对一个访问序列d,a时首先由于d不在缓存中,所以发生 缺失事件,此后视驱逐对象的不同,缓存状态可能有两种<d,e>或者<a,d〉。此时再接受 对a的访问时,若缓存状态为<d,e>,则发生缺失事件;若缓存状态为<a,d>,则发生命中事 件。因此d,a对应的命中缺失事件序列有“缺失、缺失”和“缺失、命中”两种,但是显然这 不能在一轮模拟中被观察到。所以蒙特卡洛模拟方法有以下问题一次运行不能给出访存 序列中每点的命中概率,而只能通过多轮模拟求平均概率的方法来得到每点的命中概率。由于组相联缓存等效于一个全相联缓存的阵列,所以以下只讨论全相联缓存的模 拟。设访存队列为aQ,ai,···%。下标代表逻辑时间。设Xc^X1,…XnS缺失事件的指 标随机变量。那么E(Xi)就是 的缺失概率,I-E(Xi)就是 的命中概率,其中E(x)为χ的 数学期望。定义重用窗口为从 的值上一次出现到i之间的访存子队列。比如对于a,b,c, a, d, a, b最后一个b所对应的重用窗口从上一个b开始,包括c,a, d,a。定义Zi如下如果 的值此前未出现过,则Zi ;如果 的值此前出现过,则 Zi =JAai的值上一次出现到i之间的缺失事件次数。通过数学分析,对于相联度为M的缓存可以得到以下精确公式E(Xi)=I-E((I-IZM)Zi);
E(Zi)=①;如果Bi的值此前未出现过;或E (Zi) =Σ」.E(Xp,其中Xj属于屮的重用窗口。

发明内容
本发明的一目的在于提供一种随机替换缓存的高效模拟方法,用于解决传统的蒙 特卡洛模拟方法存在的一次运行不能给出访存序列中每点的命中概率的问题。为了实现上述目的,本发明提供一种随机替换缓存的高效模拟方法,其特征在于, 包括步骤一,通过对E(Xi) = l-E((l_l/M)Zi)的近似,得到估算公式(1)或估算公式 ⑵E(Xi) ^ l-(l-l/M)E(Zi)(1)E (Xi) ^ 1- Π j (1+E (Xj) / (M-I))(2)步骤二,根据由估算公式(1)或估算公式(2)得到的E(Xi)计算访存序列中每点 的命中概率;其中,Xi为缺失事件的指标随机变量,E (Xi)为Xi的数学期望,M为缓存的相联度, Xj属于Xi的重用窗口,为从 的值上一次出现到i之间的所有缺失事件,如果访存序列中 点 的值此前未出现过,则Zi =⑴;如果ai的值此前出现过,则Zi =从 的值上一次出现 到i之间的缺失事件次数。所述的随机替换缓存的高效模拟方法,其中,所述步骤二中,进一步包括以如下公式计算所述访存序列中每点的命中概率每点的命中概率=1-估算公式⑴得到的E(Xi);或每点的命中概率=1-估算公式⑵得到的E(Xi)。所述的随机替换缓存的高效模拟方法,其中,所述步骤二中,进一步包括通过带偏移的包含h',h〃,b,c元素的双哈希表计 算所述访存序列中每点的命中概率,具体为步骤31,b — 0,c — 0,h'和h〃指向两个不同的空哈希表,其中“一”表示给一个 变量赋值,选择估算公式计算K值;步骤32,根据 所处的哈希表返回sum值;步骤33,根据sum值、所选择的估算公式计算出E(Xi);步骤34,根据计算出的E(Xi)、所选择的估算公式计算偏移值delta ;步骤35,根据delta值,进行如下处理b ^ b+delta, c ^ c+delta, h' [aj ^ ~h0所述的随机替换缓存的高效模拟方法,其中,所述步骤31中,进一步包括当选择估算公式(1)时,则K = In ( ε )/In (1-1/Μ);或当选择估算公式⑵时,则K = -In ( ε )/In (1+1/(M-I));其中In为自然对数,ε控制精度,取0.01。
所述的随机替换缓存的高效模拟方法,其中,所述步骤32中,进一步包括当&1处于h'指向的哈希表时,sum = h' [aj+b ;或当Bi处于h"指向的哈希表时,sum = h" [aj+b ;或当ai既不处于h'指向的哈希表又不处于h"指向的哈希表时,sum=-;其中h'[ ]为 在11'指向的哈希表中的值,h〃 [aj为 在11"指向的哈希表中 的值。所述的随机替换缓存的高效模拟方法,其中,所述步骤33中,进一步包括当 sum =⑴时,E(Xi) = 1 ;或当sum乒⑴且选择估算公式(1)时,E(Xi) ^ 1-(1-1/M严),E(Zi) = sum ;或当sum兴①且选择估算公式⑵时,E(Xi) ^ l-exp(_sum*ln (1+1/(M-I)));其中exp是以欧拉数为底的指数函数。所述的随机替换缓存的高效模拟方法,其中,所述步骤34中,进一步包括当选择估算公式(1)时,则delta = E(Xi);或当选择估算公式(2)时,则delta = In (1+E (Xi) / (M-I))/In (1+1/(M-I))。所述的随机替换缓存的高效模拟方法,其中,所述步骤35中,进一步包括判断c是否大于K,如大于,则进行处理c — c-K,清空h〃指向的哈希表,并交换 h'和h"指向的哈希表。所述的随机替换缓存的高效模拟方法,其中,h'和h"指向的哈希表的大小之和为O(K),0为计算机科学中常用的渐近上界。所述的随机替换缓存的高效模拟方法,其中,所述M为大于或等于2的整数。与现有技术相比,本发明的有益技术效果在于本发明解决了现有技术中一次运行不能给出访存序列中每点的命中概率的问题。 通过使用概率模型的估算公式,可以通过一轮模拟得到一访存序列中每点的命中概率的估 计;估算精度相当于五十轮传统的蒙特卡洛模拟;计算可以在线性时间和准线性空间中完 成。


图1是本发明的随机替换缓存的高效模拟方法流程图;图2是本发明的随机替换缓存的高效模拟的一实施例;图3是本发明的每点命中概率的绝对误差与传统蒙特卡洛法的绝对误差的概率 分布6
图4是本发明与传统蒙特卡洛法的程序运行时间与输入地址序列长度的关系图;图5是本发明的程序占用内存的峰值与所模拟缓存的大小的关系图。
具体实施例方式以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。如图1所示,是本发明的随机替换缓存的高效模拟方法流程图。该方法流程包括步骤101,通过对E(Xi) = l-E((l-l/M)Zi)的近似,得到估算公式(1)E(Xi) ^ l-(l-l/M)E(Zi)(1)利用这一估算,可以与E(Zi)的定义形成迭代式;该步骤形成迭代式,从而能估算E(Xi),进而计算访存序列中每点的命中概率;步骤102,通过对E (Xi) = l-E((l-l/M)Zi)的近似,得到估算公式(2)E (Xi) ^ 1- Π j(l+E (Xj) /(M-I))"1(2)利用这一估算,本身即形成迭代式,从而能估算E (Xi),进而计算访存序列中每点 的命中概率。相比于估算公式(1),该估算公式(2)的精度得到进一步提高。 其中,Xi为缺失事件的指标随机变量,E (Xi)为Xi的数学期望,M为相联度,X^属于 Xi的重用窗口,为从%的值上一次出现到i之间的所有缺失事件,如果访存序列中点ai的 值此前未出现过,则Zi =⑴;如果ai的值此前出现过,则Zi =从%的值上一次出现到i之 间的缺失事件次数。步骤103,根据由估算公式(1)或估算公式(2)得到的E(Xi)计算访存序列中每点 的命中概率。具体地每点的命中概率=1-估算公式⑴得到的E(Xi);或每点的命中概率=1-估算公式⑵得到的E(Xi)。进一步地,在步骤103中,通过带偏移的双哈希表计算访存序列中每点的命中概 率。包含h',h",b,c四个元素。h'和h〃相当于滑动窗口法里面的两个窗口,用来减少 程序使用的空间。采用双哈希表的方式使计算可以在线性时间和相对缓存大小准线性的空间中完 成。如图2所示,是本发明的随机替换缓存的高效模拟的一实施例,结合该实施例对 随机替换缓存的高效模拟方法的过程进行描述步骤201、程序初始化时,b — 0,c — 0,h'和h〃指向两个不同的空哈希表。其 中“一”表示给一个变量赋值。选定一个估算公式。如选中的估算公式为公式(1),则K = 1η( ε )/ln(l-l/M);如选中的估算公式为公式(2),则 Κ = -1η(ε )/In(1+1/(M-I))。其中 In为自然对数,ε控制精度,可取0.01。步骤202、判断访存队列中的所有 是否已被处理,如已被处理,则结束;否则进 行如下处理首先判断 能否在h'中找到,如果 能在h'中找到,则返回h' [aj+b的值; 如果不能在h'中找到,则查找h",判断 能否在h"中找到,如果能在h"中找到,则返 回h〃 [aj+b的值;如果不能在h〃中找到,则返回⑴。
其中,h'[ ]为 在11'指向的哈希表中的值,h〃 [aj为 在11"指向的哈希 表中的值。步骤203、设步骤202中的返回值为sum,根据sum值、所选择的估算公式计算出 E(Xi);判断sum =①?如果sum =①,则E (Xi) = 1 ;如果sum乒①,如选中的估算公式为 公式(I)JlME(Zi) =sum代入估算公式(1)计算出E(Xi);如选中的估算公式为公式(2), 则以E(Xi) ^ l-exp(-sum*ln(1+1/(M-I)))计算出E(Xi),其中exp是以欧拉数为底的指数 函数。相应地,可得到三种情况下每点的命中概率每点的命中概率=1-1=0;每点的命中概率=1-(1-(1-1/M)sum)= (1-1/ΜΓ ;每点的命中概率=l-(l-exp(-Sum*ln(l+l/(M-l))))= exp(_sum*ln(1+1/(M-I)))。步骤204、根据计算出的E(Xi)、所选择的估算公式计算偏移值delta ;如果使用估算公式(I)JUdelta = E(Xi);如果使用估算公式(2),则delta = In (1+E (Xi) / (M-I))/In (1+1/(M-I)),其中 In 为自然对数;步骤205、根据delta值,进行如下处理b — b+delta,c 一 c+delta,h' [aj — _b。如果 c>K,则 c 一 c_K,清空 h〃,交换 h'和h"指向的哈希表。跳转到步骤202继续。因为要处理的是一个地址序列,所以通过 跳转步骤不断循环直到把序列处理完毕。通过上述步骤204、205实现维护数据结构,即带偏移的双哈希表,保证表中数据 的正确性。可以证明,h'和h〃指向的哈希表的大小之和在任一时刻都是O(K)的,且算法时 间为线性,其中0为计算机科学中常用的渐近上界。相联度M为大于或等于2的整数。当 M较大时,无论估算公式⑴、(2),算法所用空间为0(Μ*1η(1/ ε)),即相对于缓存相联度为 准线性。由于组相联缓存的各组的命中缺失事件序列互相独立,所以可以证明对于组相联 缓存,算法所用时间仍为线性并且所用空间相对于缓存的大小为准线形。结合图3,比较对于M = 4时的全相联随机替换缓存,传统的蒙特卡洛算法的多次 平均与本算法所给出的某一访存序列每点命中概率的精度。图3中以500次传统算法的平 均作参照。X轴为每点命中概率的绝对误差,Y轴为绝对误差的概率分布。曲线从左到右下 降越快,则误差越集中于较小情形,精度越好。比如图中“估算式2,ε =0.01”曲线在χ = 0. 1时的值约0.00001,表明当本发明算法使用估算公式(2)并取ε =0.01时,估算命中 概率的绝对误差等于0. 1的情况平均约100000次才会发生一次。图3中5次平均和50次 平均分别指的是求5次和50次传统蒙特卡洛算法的平均而得到的数据。图3中可见,无论 估算公式(1)还是估算公式(2),当ε =0. 01时,精度都好于5次甚至50次传统算法的平 均。图3中估算公式(1)的ε = 0. 01和ε = 0. 1的两条曲线基本重合。图4和图5显示本算法的时间与空间使用。图4中,X轴为输入地址序列的长度, Y轴为程序运行时间。图中可见采用ε =0.01时,估算公式(1)和估算公式(2)的运行时 间与输入地址序列的长度,即问题的规模成线性,并好于传统蒙特卡洛算法。图5中,X轴 为所模拟缓存的大小,Y轴为程序占用内存的峰值。图中可见采用ε =0.01时,估算公式(1)和估算公式(2)使用的内存与所模拟缓存的大小成准线性关系。本发明方法解决了传统的蒙特卡洛模拟方法的以下问题一次运行不能给出访存 序列中每点的命中概率。本发明的方法是通过使用概率模型,可以在一轮运行中完成对一 访存序列中每点的命中概率的估计。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟 悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变 形都应属于本发明所附的权利要求的保护范围。
权利要求
一种随机替换缓存的高效模拟方法,其特征在于,包括步骤一,通过对E(Xi)=1 E((1 1/M)Zi)的近似,得到估算公式(1)或估算公式(2)E(Xi)≈1 (1 1/M)E(Zi)(1)E(Xi)≈1 ∏j(1+E(Xj)/(M 1)) 1(2)步骤二,根据由估算公式(1)或估算公式(2)得到的E(Xi)计算访存序列中每点的命中概率;其中,Xi为缺失事件的指标随机变量,E(Xi)为Xi的数学期望,M为缓存的相联度,Xj属于Xi的重用窗口,为从ai的值上一次出现到i之间的所有缺失事件,如果访存序列中点ai的值此前未出现过,则Zi=∞;如果ai的值此前出现过,则Zi=从ai的值上一次出现到i之间的缺失事件次数。
2.根据权利要求1所述的随机替换缓存的高效模拟方法,其特征在于, 所述步骤二中,进一步包括以如下公式计算所述访存序列中每点的命中概率 每点的命中概率=1-估算公式(1)得到的E(Xi);或每点的命中概率=1-估算公式⑵得到的E(Xi)。
3.根据权利要求1或2所述的随机替换缓存的高效模拟方法,其特征在于,所述步骤二中,进一步包括通过带偏移的包含h',h",b,c元素的双哈希表计算所 述访存序列中每点的命中概率,具体为步骤31,b —0,c —0,h'和h〃指向两个不同的空哈希表,其中“一”表示给一个变量 赋值,选择估算公式计算K值;步骤32,根据 所处的哈希表返回sum值;步骤33,根据sum值、所选择的估算公式计算出E(Xi);步骤34,根据计算出的E(Xi)、所选择的估算公式计算偏移值delta ;步骤35,根据delta值,进行如下处理b b+delta, c c+delta, h' [aj --b。
4.根据权利要求3所述的随机替换缓存的高效模拟方法,其特征在于,所述步骤31中, 进一步包括当选择估算公式(1)时,则K= ln(0/ln(l-l/M);或 当选择估算公式(2)时,则K = -ln(0/ln(l+l/(M-l)); 其中In为自然对数,ε控制精度,取0.01。
5.根据权利要求3所述的随机替换缓存的高效模拟方法,其特征在于,所述步骤32中, 进一步包括当 处于h'指向的哈希表时,sum = h' [aj+b;或 当 处于h"指向的哈希表时,sum = h" [aj+b;或 当 既不处于h'指向的哈希表又不处于h"指向的哈希表时,sum =C ; 其中h' [aj为 在『指向的哈希表中的值,h" [aj为 在11"指向的哈希表中的值。
6.根据权利要求3所述的随机替换缓存的高效模拟方法,其特征在于,所述步骤33中,进一步包括 当 sum =⑴时,E(Xi) = 1 ;或 当sum兴⑴且选择估算公式(1)时, E(Xi) ^ l-(l-l/M)E(Zi), E(Zi) = sum;或 当sum兴⑴且选择估算公式(2)时, E(Xi) ^ l-exp(-sum*ln (1+1/(M-I))); 其中exp是以欧拉数为底的指数函数。
7.根据权利要求4、5或6所述的随机替换缓存的高效模拟方法,其特征在于, 所述步骤34中,进一步包括当选择估算公式(1)时,则delta = E(Xi);或当选择估算公式(2)时,则 delta = In(HE(Xi)AM-I))/In(1+1/(M-I))。
8.根据权利要求4、5或6所述的随机替换缓存的高效模拟方法,其特征在于, 所述步骤35中,进一步包括判断c是否大于K,如大于,则进行处理c — c-K,清空h"指向的哈希表,并交换h' 和h"指向的哈希表。
9.根据权利要求4、5或6所述的随机替换缓存的高效模拟方法,其特征在于,h'和h"指向的哈希表的大小之和为O(K),0为计算机科学中常用的渐近上界。
10.根据权利要求1、4、5或6所述的随机替换缓存的高效模拟方法,其特征在于, 所述M为大于或等于2的整数。
全文摘要
本发明有关于一种随机替换缓存的高效模拟方法,包括步骤一,通过对E(Xi)=1-E((1-1/M)Zi)的近似,得到估算公式(1)或估算公式(2)E(Xi)≈1-(1-1/M)E(Zi)(1)E(Xi)≈1-∏j(1+E(Xj)/(M-1))-1(2)步骤二,根据由估算公式(1)或估算公式(2)得到的E(Xi)计算访存序列中每点的命中概率1-E(Xi);其中,Xi为缺失事件的指标随机变量,E(Xi)为Xi的数学期望,M为缓存的相联度,Xj属于Xi的重用窗口,即从ai的值上一次出现到i之间的所有缺失事件。如果访存序列中点ai的值此前未出现过,则Zi=∞;如果ai的值此前出现过,则Zi=从ai的值上一次出现到i之间的缺失事件次数。本发明通过使用概率模型的估算公式,可以通过一轮模拟得到一访存序列中每点的命中概率的估计。
文档编号G06F12/08GK101916229SQ20101023359
公开日2010年12月15日 申请日期2010年7月16日 优先权日2010年7月16日
发明者周舒畅 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1