一种基于重用距离的数据亲缘性分析方法

文档序号:9911158阅读:1580来源:国知局
一种基于重用距离的数据亲缘性分析方法
【技术领域】
[0001] 本发明属于计算机程序优化技术领域,特别涉及了一种数据亲缘性分析方法。
【背景技术】
[0002] 在过去几十年的技术发展中,相对于内存存取速度,CPU的计算性能已经取得了明 显改善。1982发明的英特尔80286处理器处理一个指令操作延迟320ns和内存访问延迟 225ns,而英特尔Core i 7处理器只有4ns的操作延迟和37ns内存访问延迟,这说明处理器操 作延迟和内存访问延迟已经不在一个数量级了。在这两个处理器的处理吞吐量峰值和内存 带宽峰值方面,英特尔80286处理器是2MIPS和13MBytes/sec,英特尔Core i7处理器是 50000MIPS和16000MBytes/sec,所以这两个处理器吞吐量峰值的比值和内存访问带宽峰值 的比值也不在一个数量级。因为处理器的操作延迟与吞吐量和内存访问延迟与访问带宽之 间的差距,所以现代计算机体系结构中广泛采用cache来降低这种影响。
[0003] 现在个人电脑和工作站中使用的cache块大小至少64个字节,如果每个cache块中 只有很少的数据能命中,那么cache块中的其他数据就起不到预取的作用,cache中数据起 不到预取的作用时形成的cache失效会引起较长时间的内存存取,最终影响程序的性能。实 际中,cache能否有效地利用取决于程序局部性和数据的重用模式。
[0004] 重用距离是程序局部性的度量标准之一,但重用距离分析具有较高的时空代价, 目前在精确分析程序数据的重用距离的各种算法中,最好的时间和空间复杂度分别为〇 (NlogM)和0(M),其中N和Μ分别为访问数据的次数和访问数据集的大小。分析的复杂度仍然 很高,并且Ν和Μ都与程序及其输入相关;当Μ比较大,如达到上亿时,很容易导致系统物理内 存甚至32位地址空间溢出。
[0005] 利用重用距离分析算法可以得到程序中变量的重用距离序列,我们把变量之间的 相关性定义为数据亲缘性,数据亲缘性分析其实就是利用变量的重用距离序列来分析变量 之间的相关性,如果这两个变量的亲缘性比较好,则表示这两个变量之间的空间局部性较 好,相互临近访问的概率很大,这样就可以把这两个变量进行内存布局优化来提高程序的 空间局部性,从而提高cache命中率,所以研究数据亲缘性分析方法对提高程序的性能具有 重要意义。

【发明内容】

[0006] 为了解决上述【背景技术】提出的技术问题,本发明旨在提供一种基于重用距离的数 据亲缘性分析方法,通过分析程序中变量之间的关系,为数据布局优化提供指导,从而提高 cache命中率,优化程序性能。
[0007] 为了实现上述技术目的,本发明的技术方案为:
[0008] -种基于重用距离的数据亲缘性分析方法,包括以下步骤:
[0009] (1)定义程序中按访问时间顺序形成的变量地址序列A = aia2. · .ax. · .ay. · .an,其 中,n表示程序中按访问时间顺序形成的变量地址序列的长度,且序列A中存在同一个变量 地址在不同时间被访问,即ax=ay,x矣y;
[0010] (2)根据序列A得到程序中所有不相同的变量地址集合AD= {ai,a2, . . .,az, ...am},其中,azeA,m表示程序中所有不相同的变量地址的个数;
[0011] (3)根据重用距离的定义、序列A以及集合AD,得到程序中所有不相同的变量地址 的重用距离序列集合AR= {ari,ar2,. . .,ari,. . .,arm},其中,Μ 2 ..?.."气v,ari表示 变量地址ai的重用距离序列,&#40,&^表示重用距离序列&^中的第1^个重用距离值^表 示重用距离序列&^的长度;
[0012] (4)根据集合AR得到所有不相同的变量地址的重用距离序列的长度集合NA = {nai,na2, · · ·,nai,· · ·,nam},其中,nai = si,l《i《m,si是变量地址ai的重用距离序列ari的 长度;
[0013] (5)定义集合L={ai,a2, · · ·,ar,· · ·,au}表示集合AR的项的集合,集合AR的项的集 合是指把集合AR中所有重用距离序列中不相同的重用距离值取出来组成一个新集合,其 中,&1^&;1^,11表示集合1^中元素的个数;
[0014] (6)定义集合AR的所有序列元素集合SE= {sei,se2,…,set,…,seq},其中,set = cijcik, JzLcij E L,ak E L,j 矣 k;
[0015] (7)定义变量地址&1的重用距离序列an的所有序列元素集合SE(a ri),其中,集合 SE ( ?Τ i ) - {se(ari) I Se(ari) - ai,jai,k,&i,j^ ?Τ i , Si, k ^ ?Τ i , j k, 1 ^ i ^ rn};
[0016] (8)使用q维向量Vi= {vii,vi,2, . . .,vi,t, . . .,vi,q}表示集合SE(ari)中的序列元素 对集合SE中的序列元素的包含关系,其中,q是集合SE中序列元素的个数;
[0017] (9)对任意的i、j,i矣j并且1 < i, j <m,计算重用距离序列ari和重用距离序列arj 所共有的序列元素的个数;
[0018] (10)计算重用距离序列ardn重用距离序列a巧中的全部序列元素的个数;
[0019] (11)根据重用距离序列重用距离序列所共有的序列元素的个数和重用距 离序列ardP重用距离序列ar冲的全部序列元素的个数,得到变量地址&1和^之间的数据 亲缘性。
[0020] 在步骤(8)中,向量Vi中的元素
[0021] 在步骤(9)中,使用|SE(ari)ΛSE(arj)|表示重用距离序列ari和a rj所共有的序列 元素的个数,其中,SE(a;ri)ΛSE(a;rj) = {vi,lΛvj,l,Vi,2Λvj,2,…,Vi,tΛvj,t,…,Vi,qΛ "表示与运算。
I =1
[0022] 在步骤(10)中,使用| SE(ari) VSE(arj) |表示重用距离序列ari和arj所包含的全 部序列元素的个数,其中,SE(ari) VSE(ar.i) = {vi,iVvj,i,Vi,2Vvj,2, · · ·,Vi,tVvj,t,· · ·, 表示或运算。
?-Υ
[0023] 在步骤(11)中,变量地址m和a」之间的数据亲缘怛
其中,|nai_naj | 表示nai和naj相减的绝对值,0<=affinity(ai,aj)< = l,affinity(ai,aj) 越接近1说明这两个变量地址数据亲缘性越高,affinity (ai,aj)等于0表示这两个变量地址 没有数据亲缘性。
[0024] 采用上述技术方案带来的有益效果:
[0025] 本发明较目前主流的数据亲缘性分析方法而言的主要优势在于,现在主流的数据 亲缘性分析方法主要有两种:一种是k-means聚类方法,另一种是k %-clustering方法。在 k-means方法中,任何具有亲缘性的变量地址的确定不是由它们自己的特征确定,而是由所 有其他变量地址的特征决定的。所以k-means方法是相对的数据亲缘性分析方法;在k % -clustering方法中,它可以绝对地比较两个变量地址之间的数据亲缘性,但是要求这两个 变量地址的复用距离序列的个数相同,最重要的是不能排除复用距离序列中干扰序列的影 响。本方法中的I nai-naj |不必要求变量地址的重用距离序列个数相同,本方法是根据变量 地址的重用距离序列的序列元素比较数据亲缘性,可以排除复用距离序列中干扰序列对数 据亲缘性结果的影响。
【附图说明】
[0026] 图1是本发明的流程图。
【具体实施方式】
[0027] 以下将结合附图,对本发明的技术方案进行详细说明。
[0028]如图1所示本发明的基于重用距离的数据亲缘性分析方法,具体步骤如下:
[0029] 步骤1、定义程序中按访问时间顺序形成的变量地址序列A=aia2. . .ax. . .ay. . .an, 其中,n表示程序中按访问时间顺序形成的变量地址序列的长度,且序列A中存在同一个变 量地址在不同时间被访问,即ax=a y,X矣y;
[0030] 步骤2、根据序列A得到程序中所有不相同的变量地址集合AD={ai,a2, . . .,az, ...am},其中,azeA,m表示程序中所有不相
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1