[发明专利]一种递归最大执行频度与深度的静态估计方法有效
| 申请号: | 201410589530.4 | 申请日: | 2014-10-28 |
| 公开(公告)号: | CN104317773A | 公开(公告)日: | 2015-01-28 |
| 发明(设计)人: | 汤恩义;刘璐;方园;李宣东;冯世宁;张庆垒 | 申请(专利权)人: | 南京大学 |
| 主分类号: | G06F17/10 | 分类号: | G06F17/10 |
| 代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 杨晓玲 |
| 地址: | 210093 江苏*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 递归 最大 执行 频度 深度 静态 估计 方法 | ||
1.一种递归最大执行频度与深度的静态估计方法,其特征在于通过静态程序分析的方法来收集程序的递归路径条件,并使用可满足性模理论来求解该递归路径条件,从而能高效准确的估计程序中递归作用域的最大执行深度,以及作用域中各递归函数的最大执行频度,具体步骤为:
1-1)、使用基于调用图的回路查找技术来检测程序中的递归作用域,所检测到的递归作用域为一个函数集合,集合中的各个函数相互调用,而构成递归,在检测过程中,使用强连通组件扩展技术来扩展调用图的回路,从而保证了所得到的函数集合包含当前递归作用域中的每一个函数;
1-2)、分别分析步骤1-1)所得到的各个递归作用域,收集作用域中各个递归函数调用和递归函数返回的分支条件与路径条件,并将相同递归函数的调用条件和返回条件合并,作为符号条件约束储存,以供步骤1-3)进行综合求解;
1-3)、将各递归作用域放回原始程序中进行综合分析与求解,即在原始程序中求得各个递归作用域的初始入口条件,并依据此入口条件与步骤1-2)给出的符号条件约束综合构建不同执行深度与执行频度的实际递归执行约束,最终使用可满足性模求解器对这些实际的递归执行约束求解。通过结合不同的递归深度与频度尝试策略,求解器能估计出递归实际可达的最大执行频度和深度。
2.根据权利要求1所述的一种递归最大执行频度与深度的静态估计方法,其特征在于所述的步骤1-1)中使用强连通组件扩展技术来扩展调用图的回路的递归检测方法,使得所得到的函数集合必然包含当前递归作用域中的每一个函数,具体如下:
2-1)、由程序源代码按照传统方法构建调用图,调用图是一个用来表示程序调用关系的有向图,图中每一条有向边(f,g)代表程序中存在函数f到函数g的调用关系,因此,调用图上的任意回路表明在程序中存在函数递归关系;
2-2)、查找调用图中的回路,具体方法为按次序从调用图中的节点出发,尝试是否能够沿图中的有向边回到当前节点,通过不断的迭代,算法能够遍历调用图中所有的可能而找到回路,或者证明图中不存在回路;
2-3)、在步骤2-2)找到回路以后,使用强连通组件扩展算法扩展在调用图中的回路,从而保证所找到的递归作用域完整包含了所有的相关函数,即当递归作用域中存在子递归回路时,本算法保证找到的是整个递归作用域,在由步骤2-1)生成的调用图上反复迭代步骤2-2)和步骤2-3),即可得到程序中的所有递归作用域。
3.根据权利要求1所述的一种递归最大执行频度与深度的静态估计方法,其特征在于通过静态程序分析的方法来收集程序的递归路径条件,以便后续的步骤来进一步求解递归的最大执行频度与深度,步骤2-1)到步骤2-3)所检测得到的递归作用域被标记为一个程序函数的集合{f1,f2,...,fn},这n个函数会通过相互调用而构成递归,特殊地,如果仅有单个函数参与递归,则n=1,在此基础上收集各递归条件,并构建符号约束的具体步骤如下:
3-1)、对于每一个递归作用域的每一个递归函数fi,扫描其源代码,定位其所有的函数出口即函数返回位置,和递归函数调用位置即调用当前递归作用域中的函数fj的位置;
3-2)、分析递归函数fi到其内部各个递归调用与函数出口的路径,并使用约束收集器收集路径上的分支条件,将每一条路径上的各个分支条件按逻辑合取式合并作为整个路径条件;
3-3)、对于递归函数fi中所有调用递归函数fj的不同路径的路径条件,将按逻辑析取式合并,记为条件约束ci,j;而对于递归函数fi到达所有出口的路径条件,也按逻辑析取式合并,记为条件约束c′i;这些条件约束信息将用于后续步骤的约束求解。
4.根据权利要求1所述的一种递归最大执行频度与深度的静态估计方法,其特征在于使用可满足性模理论来求解该递归路径条件,具体过程如下:
4-1)、首先要从程序入口开始,沿程序控制流找到各递归作用域的入口,并由此路径分析得到当前递归作用域的初始条件,以便结合步骤3-3)的条件约束构建当前程序在具体执行到某一递归深度或频度的实际约束条件;
4-2)、按照递推式策略确定一个可满足性模理论的求解验证目标,即以递归深度p为目标,或者以某一递归函数的执行频度q为目标,并按照这一目标从递归作用域入口向内构建调用过程链,在结合步骤4-1)的递归初始条件和步骤3-3)的条件约束的基础上,按照调用过程链生成验证目标的实际组合约束条件;
4-3)、将步骤4-2)生成的实际组合约束条件转换成可满足性模的求解公式,并交由求解器求解,求解结果会有两种可能:当求解结果为当前公式真时,即当前条件可满足,表示当前递归最大深度≥p,或者某一递归函数的执行频度≥q,在这种情况下,如果不知道递归最大深度或者最大执行频度的上界,则以递推式策略尝试更大的p或者q;当求解结果为假,当前条件不可满足,表示当前递归的最大深度一定达不到p或者执行频度<q,此时p或q为验证目标的上界,本方法将继续以二分查找的方式尝试更小的p或者q,迭代直到满足p-1≤递归最大深度<p或者q-1≤递归函数最大执行频度<q,由于目标值为整数,故而在此时我们能得到递归最大深度值=p-1或递归函数最大执行频度值=q-1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410589530.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种可调限位间距的传送链组及传送装置
- 下一篇:从动辊筒安装结构





