一种针对受限制的索引寻址模式的偏移量分配优化方法技术

技术编号:2847322 阅读:285 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种针对受限制的索引寻址模式的偏移量分配优化方法。本发明专利技术在对访问图进行划分的时候,考虑了多个顶点与当前子图内所有顶点构成的边上的权重之和相等的情况下,若当前组中节点的数量小于可允许最大数量的一半,则优先选取与当前子图外所有顶点构成的边上的权重之和值最大的节点,有助于减少不同子图间的顶点构成的边的权重;而对于每个组最后一个节点,选择与组内部的所有节点的总权重减去节点x与组外部的所有未分配节点的总权重的差值是所有未分配节点中最大的节点;对前述差值相等的多个节点,选择与当前组内所有节点构成的边上的权重之和最大的节点。

【技术实现步骤摘要】

本专利技术涉及一种寻址操作编译优化、偏移量分配(Offset Assignment)优化方法,特别涉及一种针对“受限制的索引寻址模式”的偏移量分配优化方法。
技术介绍
由于嵌入式处理器的片上存储容量有限,因此如何减少代码大小是编译器为嵌入式处理器生成代码时需要考虑的一个因素。偏移量分配优化,就是通过重新分配变量在存储器中的位置,从而最大化的利用处理器提供的特定寻址模式来优化寻址代码的一种优化方法。偏移量分配优化最早由文献1[S.Liao,S.Devadas,K.Keutzer,S,Tjiang,A.Wang.Storage Assignment to Decrease Code Size.ACM SIGPLAN Conferenceon Programming Language Design and Implementation,1995]提出,是针对部分嵌入式处理器提供的自增/自减(autoincrement/autodecrement)寻址模式的一种优化方法。自增/自减寻址模式是指指令在访问地址寄存器所指向地址的同时,地址寄存器的值自增或自减k(通常k=1)。充分利用自增/自减寻址模式来访存,可以减少显式的地址计算。所以,通过重新分配变量在存储器中的位置,使得尽可能多的利用自增/自减寻址模式来进行访存,能够减少代码大小,提高代码效率。有一些嵌入式处理器,如Intel IXP 2400,除了支持自增/自减寻址模式外,还支持一种特殊的索引寻址模式,即基地址+偏移量的寻址模式,我们将这种特殊的索引寻址模式称为“受限制的索引寻址模式”。不同于一般的通用处理器中索引寻址模式的是,“受限制的索引寻址模式”对基地址和偏移量有一定的限制偏移量为0到m-1之间的一个常数(m为一个常数,比如16),而基地址必须是m字(word)的倍数。如果将要访问的变量的地址与基地址的偏移量不在0到m-1之间,则我们需要重新设定基地址,即重新设定地址寄存器。针对这种“受限制的索引寻址模式”,也可以进行偏移量分配优化,但目前尚未有文献公开。文献2[Y.choi,T.Kim,H.Han.Memory Layout Techniques for VariablesUtilizing Efficient DRAM Access Modes in Embedded System Design.IEEETransactions on Computer-Aided Design of Integrated Circuits and Systems,Vol.24,NO.2,Feb 2005]曾对类似的问题进行过研究。该文献2是针对一些嵌入式系统中对访问动态随机存储器(DRAM)提供的一种页模式(page mode)优化方法。页模式是指当前访问动态随机存储器中的变量和上一次访问的变量处在同一页时,可以使用的一种比普通模式更为高效的一种访存模式。与“受限制的索引寻址模式”有所不同的是,页模式的使用是由硬件来负责的,在生成的代码中没有体现。所以,针对这种页模式的偏移量分配优化不能减少代码大小,仅可以提高程序性能。文献2提出的针对页模式的优化方法主要思想如下首先提取出动态随机存储器中变量的访问序列(access sequence);再根据访问序列构造访问图(accessgraph),图上的顶点对应访问序列中出现的变量,边上的权重代表相应两个顶点在访问序列中出现相邻的次数;然后根据一定的算法将访问图划分成若干个顶点数目不超过m的子图(m为页模式中一页的大小),使得各个子图之内的顶点构成的子图之内边的权重之和最大;最后,变量在动态随机存储器中的位置就按上一步中确定的划分进行分配,每个子图的顶点相应的分成一页。文献2优化方法的核心算法就是将访问图划分成若干个子图的算法,给出了一个启发式算法,算法进行的是循环求解,每个循环划分出一个子图。用attract_in(P,x)表示顶点x与当前子图P内所有顶点构成的边上的权重之和,用attract_out(P,x)表示顶点x与当前子图P外所有顶点构成的边上的权重之和。在每个循环的开始,找出权重最大的一条边,将这条边的两个节点加入P。以后每次选择attract_in值最大的节点加入到P中。当attract_in值最大的节点有多个的时候,如果当前选择的不是子图中的最后一个节点,则随机选这些节点中的一个;否则,选择这些节点中attract_out值较小的那个。由于实际程序中出现有多个attract_in值最大的节点的情况比较多,对这些节点的选择采用随机的方法并不合理,降低了优化的效果。同时,当选择子图中的最后一个节点时,文献2公开的方法中也存在问题,实际上,这最后一个节点并不是选择attract_in值越大的越好。如图1(a)、(b)所示,说明了文献2的不足之处按照文献2的算法,先将顶点a,c加入页,在考虑加本组的最后一个节点的时候,因为顶点d的attract_in值大于b的attract_in值,所以选择顶点d,形成了顶点a、c、d在一个页,顶点b、e在另一个页的布局,两个子图之间的顶点构成的边的权重之和为4,如图1(a)所示。但是,如果最后一步选择顶点b,则两个子图之间的顶点构成的边的权重之和为3,如图1(b)所示,显然比前一选择更好。综上所述,在现有针对页模式的偏移量分配优化方法中,存在对页划分不合理的问题,从而降低了编译优化的性能。
技术实现思路
本专利技术的目的是克服现有针对页模式的偏移量分配优化方法中存在对页划分不合理的问题,从而提供一种采用改进图划分算法的针对“受限制的索引寻址模式”的偏移量分配优化方法。为了实现上述目的,本专利技术采取如下技术方案,包括以下步骤1.对存储器中的所有变量形成访问图;2.新建一个组group,找出当前访问图中权重最大的一条边,将它的两个顶点加入组group,并将这两个顶点标记为已分配;3.选取一个未分配的节点x,判断是否满足下列四种情况之一(1)将要选取的节点不是组group的最后一个节点;且节点x是所有未分配节点中与当前组group内所有节点构成的边上的权重之和最大的节点;(2)当前组group中节点的数目小于“受限制的索引寻址模式”中利用同一个基地址最多能访问变量的数目m的1/2;且节点x是所有未分配节点中与当前组group内部所有节点构成的边上的权重之和最大的节点之一;且节点x是所有未分配节点中与当前组group外部所有节点构成的边上的权重之和最大的节点;(3)将要选取的节点是组group的最后一个节点;且节点x与组group内部的所有节点的总权重减去节点x与组group外部的所有未分配节点的总权重的差值是所有未分配节点中最大;(4)将要选取的节点是组group的最后一个节点;且节点x是所有未分配节点中与组group内部节点和外部节点的总权重差值最大的节点之一;且节点x是所有未分配节点中与当前组group内所有节点构成的边上的权重之和最大的节点;将满足上述四种情况之一的节点x加入组group,并将节点x在访问图中标记为已分配;4.重复执行步骤3,直到组group中的变量数已满,即达到一个基地址最多能访问变量的数目m; 5.组group中的变量形成一个子图,将组group中的变本文档来自技高网
...

【技术保护点】
一种针对受限制的索引寻址模式的偏移量分配优化方法,包括以下步骤:    1)对存储器中的所有变量形成访问图;    2)新建一个组group,找出当前访问图中权重最大的一条边,将它的两个顶点加入组group,并将这两个顶点标记为已分配;    3)选取一个未分配的节点x,判断是否满足下列四种情况之一:    (a)将要选取的节点不是组group的最后一个节点;且节点x是所有未分配节点中与当前组group内所有节点构成的边上的权重之和最大的节点;    (b)当前组group中节点的数目小于“受限制的索引寻址模式”中利用同一个基地址最多能访问变量的数目m的1/2;且节点x是所有未分配节点中与当前组group内部所有节点构成的边上的权重之和最大的节点之一;且节点x是所有未分配节点中与当前组group外部所有节点构成的边上的权重之和最大的节点;    (c)将要选取的节点是组group的最后一个节点;且节点x与组group内部的所有节点的总权重减去节点x与组group外部的所有未分配节点的总权重的差值是所有未分配节点中最大;    (d)将要选取的节点是组group的最后一个节点;且节点x是所有未分配节点中与组group内部节点和外部节点的总权重差值最大的节点之一;且节点x是所有未分配节点中与当前组group内所有节点构成的边上的权重之和最大的节点;    将满足上述四种情况之一的节点x加入组group,并将节点x在访问图中标记为已分配;    4)重复执行步骤3),直到组group中的变量数已满,即达到一个基地址最多能访问变量的数目m;    5)组group中的变量形成一个子图,将组group中的变量在存储器中相应地分成一组,将组group中的所有节点以及相应的边从访问图上删除;    6)重复执行步骤2),直到将访问图中的节点全部分配完毕。...

【技术特征摘要】
1.一种针对受限制的索引寻址模式的偏移量分配优化方法,包括以下步骤1)对存储器中的所有变量形成访问图;2)新建一个组group,找出当前访问图中权重最大的一条边,将它的两个顶点加入组group,并将这两个顶点标记为已分配;3)选取一个未分配的节点x,判断是否满足下列四种情况之一(a)将要选取的节点不是组group的最后一个节点;且节点x是所有未分配节点中与当前组group内所有节点构成的边上的权重之和最大的节点;(b)当前组group中节点的数目小于“受限制的索引寻址模式”中利用同一个基地址最多能访问变量的数目m的1/2;且节点x是所有未分配节点中与当前组group内部所有节点构成的边上的权重之和最大的节点之一;且节点x是所有未分配节点中与当前组group外部所有节点构成的边上的权重之和最大的节点;(c)将要选取的节点是组group的最后一个节点;且节点x与组group内部的所有节点的总权重减去节点x与组group外部的所有未分配节点的总权重的差值是所有未分配节点中最大;(d)将要选取的节点是组group的最后一个节点;且节点x是所有未分配节点中与组group内部节点和外部节点的总权重差值最大的节点之一;且节点x是所有未分配节点中与当前组group内所有节点构成的边上的权重之和最大的节点;将满足上述四种情况之一的节点x加入组group,并将节点x在访问图中标记为已分配;4)重复执行步骤3),直到组group中的变量数已满,即达到一个基地址最多能访问变量的数目m;5)组group中的变量形成一个子图,将组group中的变量在存储器中相应地分成一组,将组group中的所有节点以及相应的边从访问图上删除;6)重复执行步骤2),直到将访问图中的节点全部分配完毕。2.根据权利要求1所述的针对受限制的索引寻址模式的偏移量分配优化方法,其特征在于,所述步骤1)的执行过程为遍历要编译的程序单元,遇到对存储器中变量v的一次访问,假设上一次访问到的存储器中变量为u,则将新增边<u,v>加入访问图。3.根据权利要求2所述的针对受限制的索引寻址模式的偏移量分配优化方法,其特征在于,所述新增边<u,v>的权重设为1。4.根据权利要求2所述的针对受限制的索引寻址模式的偏移量分配优化方法,其特征在于,所述新增边<u,v>的权重设为其所在基本块的执行频率,或者为两个变量分别所在的两个基本块之间控制边的执行频率。5.一种针对受限制的索引寻址模式的偏移量分配优化方法,包括以下步骤1)置变量last_access_variable的值为-1;2)判断程序单元中所有指令是否都已处理过?如果是,执行步骤7);如果否,执行下一步;3)读入一条指令,判断指令中是否存在对存储器的访问?若是,执行下一步;若否,执行步骤2);4)记录当前指令中访问的变量v,判断last_access_variable的值是否为-1?若否,执行下一步...

【专利技术属性】
技术研发人员:包斌吴承勇刘弢张兆庆
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1