一种计算机程序的优化方法及系统技术方案

技术编号:4271034 阅读:173 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种计算机程序的优化方法及系统。该优化方法包括:步骤1,通过值编号分析计算得到每个变量和表达式的值编号;步骤2,将静态单赋值形式的计算机程序转换为半稀疏值流图形式的计算机程序;步骤3,计算半稀疏值流图形式的计算机程序进行标量优化所需的初始属性;如果初始属性已经包含所有所需优化信息则执行步骤4,否则扩展半稀疏值流图形式的计算机程序为稀疏值流图形式的计算机程序,并计算进行标量优化所需的属性,直到所有所需属性计算完毕,执行步骤4;步骤4,根据计算得到的属性对半稀疏值流图形式的计算机程序或稀疏值流图形式的计算机程序进行程序变换以优化计算机程序。本发明专利技术能够提高程序优化的效率。

【技术实现步骤摘要】

本专利技术涉及计算机程序,尤其涉及一种计算机程序的优化方法及系统
技术介绍
计算机系统中运行的程序通常是使用高级语言编写,经编译器翻译和优化得到的 结果。对程序的优化处理效果决定了程序在计算机系统上的运行性能。使用有些语言(比 如等)编写的程序需要在程序运行期间对其进行翻译和优化。此时优化方法本 身的执行效率也会影响到整个程序的运行时间。因此,计算机系统中需要运行效率高且优 化效果好的优化方法。标量优化是相对于并行优化(包括指令级、数据级、线程级等)的一类优化技术。 常见的很多优化,比如公共子表达式消除、循环不变代码移动、常数传播、复制传播、强度削 弱、部分冗余消除和死代码消除等都属于标量优化。它们都具有共同的优化目标减少程序 中的计算数量和降低计算强度,从而提高程序的执行效率。各种优化技术通常都是工作在程序的某种中间表示上的。传统的标量优化技术使 用普通的命令式语言作为中间表示,优化中需要的各种属性信息由数据流分析方法计算得 到,运行效率较低。静态单赋值(Static Single Assignment, SSA)形式是命令式语言的一 种特殊形式,要求每个变量在程序中只有一个被赋值(定义)的语句,且一个变量的所有使 用语句都被该变量的定义语句所支配,即从程序入口出到达每个使用语句的所有控制流路 径都经过该变量的定义语句。将一个程序变换为静态单赋值形式需要对变量进行换名和在 适当的合并节点处(假设有m条入边)插入特殊的语句,phi节点x_0 = phi(x_l,…,x_ m)来合并不同路径的值。其语义是当程序执行路径沿第i个前驱进入该phi节点所在的 程序节点,则x_0 = x_i。静态单赋值形式的程序中的所有变量的定义-使用关系都被显式表示出来,通过 追溯变量的赋值语句即可得到数据流信息。因此,采用静态单赋值形式作为中间表示,使很 多传统的标量优化技术得到了简化,运行效率更高,实现也更容易。美国专利号为6026241 和6128775的两个专利技术分别为采用静态单赋值形式进行部分冗余消除和寄存器提升的两 个优化方法。美国专利号为6301704的专利技术描述了一种采用静态单赋值形式作为中间表示 进行多种标量优化的方法和系统。然而,上述采用静态单赋值的优化方法都是基于“语法”等值关系的优化方法,即 只能消除语法上完全相同的表达式间的冗余计算或访存语句,优化能力受到很大限制。通 常需要同时采用多种辅助方法(值编号、表达式重结合等)对程序进行一系列预处理以尽 量增加标量优化方法的优化机会。比这种组合方案更彻底的解决方案是采用基于“语义”等 值关系的优化方法。但现有的基于“语义”等值的方法采用的仍然是传统的非静态单赋值 形式的中间表示,通过构造一个庞大的值流图并在其上进行数据流分析来计算如何对输入 程序进行变换,运行效率非常低下,因而无法实际应用。如何将“语义”等值关系显式表示 在程序中间表示中以提高优化方法的效率仍然没有得到解决。
技术实现思路
为了解决上述的技术问题,提供了一种计算机程序的优化方法及系统,其目的在 于,利用“稀疏值流图”(Sparse Value Flow Graph, SVFG)形式,将程序中的“语义”等值关 系显式包含在程序的中间表示中,并在此基础上进行高效率的标量优化以实现效率高且优 化效果更好的优化方法。本专利技术提供了一种计算机程序的优化方法,包括步骤1,通过值编号分析计算得到每个变量和表达式的值编号;步骤2,将静态单赋值形式的计算机程序转换为半稀疏值流图形式的计算机程 序;步骤3,计算半稀疏值流图形式的计算机程序进行标量优化所需的初始属性;如 果初始属性已经包含所有所需优化信息则执行步骤4,否则扩展半稀疏值流图形式的计算 机程序为稀疏值流图形式的计算机程序,并计算进行标量优化所需的属性,直到所有所需 属性计算完毕,执行步骤4;步骤4,根据计算得到的属性对半稀疏值流图形式的计算机程序或稀疏值流图形 式的计算机程序进行程序变换以优化计算机程序;半稀疏值流图形式的计算机程序中所有的值传输流都不能越过与其“语义”等值 的计算,具有相同值编号的程序节点间的全局等值关系被连接起来;稀疏值流图形式的计算机程序中所有的值传输流都不能越过与其“语义”等值的 计算,所有的全局等值关系都必须被一值传输流所连接。步骤2中,半稀疏值流图为每个值编号插入phi节点并使用静态单赋值的变量将 在不同位置的同一个值编号连接起来。步骤3中,半稀疏值流图形式的计算机程序的变量作为半稀疏值流图的节点;稀 疏值流图形式的计算机程序的变量作为稀疏值流图的节点;半稀疏值流图或稀疏值流图的 边由变量引用关系建立,半稀疏值流图形式的计算机程序或稀疏值流图的形式的计算机程 序的中间表示是表示等值关系的值流图;进行标量优化所需的属性附加在半稀疏值流图形 式的计算机程序或稀疏值流图的形式的计算机程序的变量上。半稀疏值流图或稀疏值流图是一个边标记的有向图Gs = (Ns, Es,V5,VE),包含开始节点集合V5包含所有存在的值编号对应的伪变量(1 ;结束节点集合VE包含所有存在的值编号对应的伪变量£ 1 ;节点集合Ns包含所有开始节点、结束节点和程序中所有变量的集合;边集合Es为包含三元组(x,i,y)的集合,其中x、y为节点,i为自然数。步骤2中,对于静态单赋值形式的计算机程序中出现的每个值编号t执行下列步 骤步骤201,对每个程序节点n G J(t)-{Def(x) x G V A vl[x] = 4,创建变量叉, 并设置vl[x] = t ;然后向每个程序节点n中插入phi节点x=cp(x,...,x);步骤202,对于每个程序节点 中插入 phi 节点 步骤203,将ζ 1压入栈P ;步骤204,调用函数 Search(t,n);步骤205,删除未使用的phi节点; 步骤204包括步骤2041,令h =栈P的高度;步骤2042,如果η为静态单赋值形式的计算机程序的合并节点,则将η中所有值编 号为t的phi节点的结果变量压入栈P ;步骤2043,否则,如果η为赋值语句,且其结果变量的值编号为t,将η的右侧表达 式替换为栈P的栈顶变量,并将η的左侧结果变量压入栈P ;步骤2044,对于succ (η)中的每个合并节点nl,将nl中的每个phi节点的对应于 节点η的值编号为t的变量替换为栈P的栈顶变量;步骤2045,对每个 children (η)中的节点 η,,执行 Search (t,η,);步骤2046,如果栈P的高度大于h,将多出的变量弹出;其中,DF(S)表示所有S中节点的支配边界的并集,S表示任意程序节点集合; DF+(S)表示S的迭代支配边界;J(t) = {n|ne DF+(J0(t)) Λ t的定义节点严格支配η}, 对于一个值编号t e V,用JtlU)表示包含所有需要使用t的值的程序节点集合,V = {V (χ) χ e V}表示所有变量的值编号集合;Def(X)表示变量χ的定值语句;dn(t)表示值 编号t的定义节点,在该节点执行之后,具有值编号t的一个表达式被计算;Vl为值编号算 法计算得到的每个变量的值编号数组;ζ 1表示一个恰好在t的定义节点dn (t)之后被赋值 的值编号为t的伪变量;ε tn表示一本文档来自技高网
...

【技术保护点】
一种计算机程序的优化方法,其特征在于,包括:步骤1,通过值编号分析计算得到每个变量和表达式的值编号;步骤2,将静态单赋值形式的计算机程序转换为半稀疏值流图形式的计算机程序;步骤3,计算半稀疏值流图形式的计算机程序进行标量优化所需的初始属性;如果初始属性已经包含所有所需优化信息则执行步骤4,否则扩展半稀疏值流图形式的计算机程序为稀疏值流图形式的计算机程序,并计算进行标量优化所需的属性,直到所有所需属性计算完毕,执行步骤4;步骤4,根据计算得到的属性对半稀疏值流图形式的计算机程序或稀疏值流图形式的计算机程序进行程序变换以优化计算机程序;半稀疏值流图形式的计算机程序中:所有的值传输流都不能越过与其“语义”等值的计算,具有相同值编号的程序节点间的全局等值关系被连接起来;稀疏值流图形式的计算机程序中:所有的值传输流都不能越过与其“语义”等值的计算,所有的全局等值关系都必须被一值传输流所连接。

【技术特征摘要】
一种计算机程序的优化方法,其特征在于,包括步骤1,通过值编号分析计算得到每个变量和表达式的值编号;步骤2,将静态单赋值形式的计算机程序转换为半稀疏值流图形式的计算机程序;步骤3,计算半稀疏值流图形式的计算机程序进行标量优化所需的初始属性;如果初始属性已经包含所有所需优化信息则执行步骤4,否则扩展半稀疏值流图形式的计算机程序为稀疏值流图形式的计算机程序,并计算进行标量优化所需的属性,直到所有所需属性计算完毕,执行步骤4;步骤4,根据计算得到的属性对半稀疏值流图形式的计算机程序或稀疏值流图形式的计算机程序进行程序变换以优化计算机程序;半稀疏值流图形式的计算机程序中所有的值传输流都不能越过与其“语义”等值的计算,具有相同值编号的程序节点间的全局等值关系被连接起来;稀疏值流图形式的计算机程序中所有的值传输流都不能越过与其“语义”等值的计算,所有的全局等值关系都必须被一值传输流所连接。2.如权利要求1所述的计算机程序的优化方法,其特征在于,步骤2中,半稀疏值流图 为每个值编号插入Phi节点并使用静态单赋值的变量将在不同位置的同一个值编号连接 起来。3.如权利要求1所述的计算机程序的优化方法,其特征在于,步骤3中,半稀疏值流图 形式的计算机程序的变量作为半稀疏值流图的节点;稀疏值流图形式的计算机程序的变量 作为稀疏值流图的节点;半稀疏值流图或稀疏值流图的边由变量引用关系建立,半稀疏值 流图形式的计算机程序或稀疏值流图的形式的计算机程序的中间表示是表示等值关系的 值流图;进行标量优化所需的属性附加在半稀疏值流图形式的计算机程序或稀疏值流图的 形式的计算机程序的变量上。4.如权利要求1所述的计算机程序的优化方法,其特征在于,半稀疏值流图或稀疏值流图是一个边标记的有向图Gs = (Ns, Es,V5,VE),包含 开始节点集合包含所有存在的值编号对应的伪变量(1 ; 结束节点集合VE包含所有存在的值编号对应的伪变量£ 1 ; 节点集合Ns包含所有开始节点、结束节点和程序中所有变量的集合; 边集合Es为包含三元组(x,i,y)的集合,其中x、y为节点,i为自然数。5.如权利要求4所述的计算机程序的优化方法,其特征在于,步骤2中,对于静态单赋 值形式的计算机程序中出现的每个值编号t执行下列步骤步骤201,对每个程序节点n G J(t)-{Def(x) x G V A vl[x] = 4,创建变量^并设 置vl [x] : = t ;然后向每个程序节点n中插入phi节点x =cp(x,...,x);步骤202,对于每个程序节点 向n中插A phi 节点 步骤203,将^压入栈卩; 步骤204,调用函数Search (t,n); 步骤205,删除未使用的phi节点; 步骤204包括步骤2041,令h=栈P的高度;步骤2042,如果n为静态单赋值形式的计算机程序的合并节点,则将n中所有值编号为 t的phi节点的结果变量压入栈P ;步骤2043,否则,如果n为赋值语句,且其结果变量的值编号为t,将n的右侧表达式替 换为栈P的栈顶变量,并将n的左侧结果变量压入栈P ;步骤2044,对于suCC(n)中的每个合并节点nl,将nl中的每个phi节点的对应于节点 n的值编号为t的变量替换为栈P的栈顶变量;步骤2045,对每个children (n)中的节点n,,执行Search (t,n,); 步骤2046,如果栈P的高度大于h,将多出的变量弹出;其中,DF(S)表示所有S中节点的支配边界的并集,S表示任意程序节点集合;DF+(S) 表示S的迭代支配边界;J(t) = {n|nGDF+(J0(t)) A t的定义节点严格支配n},对于一个 值编号t e V,用Jjt)表示包含所有需要使用t的值的程序节点集合,V = {V(x) x g V} 表示所有变量的值编号集合;Def(x)表示变量x的定值语句;dn(t)表示值编号t的定义节 点,在该节点执行之后,具有值编号t的一个表达式被计算;Vl为值编号算法计算得到的每 个变量的值编号数组;(1表示一个恰好在t的定义节点dn (t)之后被赋值的值编号为t的 伪变量;£ \表示一个在程序节点n G DF({dn(t)})处被一个伪phi节点赋值的值编号为 t的伪变量;P是一个变量栈,用于构造值传输流;succOi)表示程序节点n e N在程序控制 流图中的所有后继节点的集合;children(n)表示程序节点n G N在支配树上所有子节点 的集合。6.如权利要求5所述的计算机程序的优化方法,其特征在于,三元组(x,i,y)表示一 条标记的边;三元组(x,i,y) G Es表示一条从变量x到变量y的值传输流。7.如权利要求6所述的计算机程序的优化方法,其特征在于,步骤3中,首先按如下公 式计算半移动向下安全属性 其中,suCCna(X) = {(i,Def(y)) | (x,i,y) G Es A desc (Def (x),Def (y))},对于任意程 序节点叫和 G N,谓词deSC(ni,n2) = true当且仅当叫二 或叫在控制流G的以开始节 点为根节点的深度优先搜索树上是n2的子孙节点;SUCCna(x)中的每个序偶(i,n) G coXN 表示稀疏值流图节点x的值沿一条值传输流经过n的第i个前驱节点,传入至少一个在节 点n处定值的稀疏值流图节点,《是自然数集合,N是所有程序节点集合;SUCCv(X,i,n)= {y (x,i,y) G Es A Def(y) = n}为包含所有对应于给定序偶(i, n) G succna(x)的在节 点n处定值的变量集合;局部属性COmp(x)为真当且仅当Def(x) G队,队是赋值语句组成 的程序节点集合。8.如权利要求7所述的计算机程序的优化方法,其特征在于,步骤4中,对于值编号集 合{t 11 e B且smds* D}中的值编号进行扩展,包括步骤401,创建一个新的变量x并设置vl[x] = t ;步骤402,向dn(t)中插入phi节点x=小(4,...,O,其中ti为x对应于第i条入边的值编号;步骤403,将半稀疏值流图形式的计算机程序中所有(1替换为x ; 步骤404,对每个值编号(”执行步骤201-步骤205 ;其中,B = {t|dn(t)为半稀疏值流图形式的计算机程序合并节点,且其中不包含结果 变量的值编号为t的phi节点} ;smds*表示半移动向下安全属性方程组的最大解。9.如权利要求8所述的计算机程序的优化方法,其特征在于,步骤3中,按照如下公式 计算移动向下安全属性 mds(y) 否贝ll 按照如下公式计算向上安全属性 其中succn(x) = {(i,Def(y)) | (x,i,y) G Ej ;公式中的mds*表示移动向下安全属性 方程组的最大解;predv(x) = {y (y,i,x) G Es}为x在稀疏值流图上所有前驱节点的集10.如权利要求9所述的计算机程序的优化方法,其特征在于,步骤4中,按照下述集合 选取插入计算的位置信息 其中cus*表示向上安全属性方程组的最大解;步骤4中,进行...

【专利技术属性】
技术研发人员:程旭聂久焘刘先华
申请(专利权)人:北京北大众志微系统科技有限责任公司
类型:发明
国别省市:11[中国|北京]

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

1