一种无损压缩系统依赖图的方法及装置制造方法及图纸

技术编号:10168375 阅读:201 留言:1更新日期:2014-07-02 10:47
本发明专利技术的实施例提供一种无损压缩系统依赖图的方法及装置,涉及计算机领域,能够实现系统依赖图的无损压缩,并降低系统依赖图的规模,从而降低以系统依赖图为基础的切片算法的开销。其方法为:首先提取程序中所有变量之间的等价关系,而后通过该等价关系将程序中所有变量分为不同的等价类,并根据这些等价类为系统依赖图中的节点设置键值,而后根据系统依赖图中的节点的键值压缩系统依赖图。本发明专利技术实施例用于对系统依赖图进行压缩。

【技术实现步骤摘要】
一种无损压缩系统依赖图的方法及装置
本专利技术涉及计算机领域,尤其涉及一种无损压缩系统依赖图的方法及装置。
技术介绍
程序静态切片是一种重要的程序分析技术,广泛应用于程序理解、测试、调试、验证、维护,能够帮助程序员提取所关注代码,降低程序分析、错误验证、维护等领域。目前,主流的切片工具均采用基于系统依赖图的图可达算法。系统依赖图(SystemDependenceGraph,SDG)是一个有向图,是对程序依赖图(ProgramDependenceGraph,PDG)的扩展。以系统依赖图为基础的程序切片算法,是通过遍历系统依赖图,从中提取出可能影响某个变量在程序中某个位置上的取值的程序代码。但是现有的切片算法开销与精度都无法满足大规模使用程序的需求。因此,为了解决上述问题,现有技术通常采用的技术包括:一、通过提高别名分析精度降低SDG的规模,因为SDG的规模不仅决定其自身的计算与存储的时空开销,还直接影响切片的效率。其中,别名分析,也称指针分析,是一种识别程序中可能用两种以上的方法访问的存储位置的静态分析技术。别名分析所得出的结果是基于SDG的程序切片技术中用于创建系统依赖图时所需的输入之一。二、通过限制切片算法的上下文敏感性(ContextSensitivity)来减少切片算法遍历SDG的开销。在实现上述降低SDG规模和减少切片算法的时空开销的过程中,专利技术人发现现有技术中至少存在如下问题:提高指针分析的精度虽然可以适度降低SDG的规模,但高精度的指针分析算法本身不仅需要高昂的时空开销,也几乎无助于切片精度的提高。而采用限制切片算法的上下文敏感性来缓解遍历SDG的开销,会使切片的精度降低。
技术实现思路
本专利技术的实施例提供一种无损压缩系统依赖图的方法及装置,能够实现系统依赖图的无损压缩,并降低系统依赖图的规模,从而降低以系统依赖图为基础的切片算法的开销。为达到上述目的,本专利技术的实施例采用如下技术方案:第一方面,提供一种无损压缩系统依赖图的方法,包括:根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类,其中,所述别名分析信息是根据别名分析算法得到的;根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值;根据所述系统依赖图中的各个节点的键值对所述系统依赖图进行压缩。在第一种可能的实现方式中,结合第一方面,所述根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类包括:根据所述别名分析信息建立从第一变量集合到指向所述变量集合中每个变量的指针集合的幂集的映射f,所述第一变量集合为程序中所有变量的集合;根据所述映射f建立从所述指针集合的幂集到第二变量集合的映射f′,以将所有变量分为不同的等价类;所述第二变量集合为被同一组指针所指向的变量的集合。在第二种可能的实现方式中,结合第一方面或第一方面的第一种可能的实现方式,所述根据所述别名分析信息建立从第一变量集合到指向所述变量集合中每个变量的指针集合的幂集的映射f包括:为程序中的每个指针变量建立一个由该指针变量所指向的变量构成的指向集,为所有指向集中出现的每个变量建立一个空集合;将每个指针变量添加到该指针变量所指向的变量对应的空集合中,以得到所述映射f。在第三种可能的实现方式中,结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,根据所述映射f建立从所述指针集合的幂集到第二变量集合的映射f′,以将所有变量分为不同的等价类包括:建立第i个空集合,将所述映射f的定义域中一个变量var,以及所有被映射到f(var)的变量添加到所述第i个空集合中,得到第i个等价类,并对所述第i个等价类设置唯一的编号,并从所述映射f的定义域中删除添加到所述第i个空集合中的变量,直至映射f的定义域中的变量个数为0;其中,i的起始值为1,所述变量var表示映射f的定义域中的任意一个变量。在第四种可能的实现方式中,结合第一方面或第一方面的第一种可能的实现方式至第一方面的第三种可能的实现方式,所述根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值包括:将所述系统依赖图上的各个节点所代表的变量所属的等价类的编号对应设置为所述各个节点的键值。在第五种可能的实现方式中,结合第一方面或第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式,所述根据所述系统依赖图中的各个节点的键值对所述系统依赖图进行压缩包括:若所述系统依赖图上的任意一个节点的前驱节点集合或者后继节点集合中的任意两个节点拥有相同的键值,并且所述任意两个节点中有一个是副作用节点,则将所述任意两个节点中的副作用节点的出入边依次转化为所述任意两个节点中另外一个节点的出入边;删除所述系统依赖图中所有孤立的节点;合并所述系统依赖图上具有相同的源点和汇点的有向边。第二方面,提供一种系统依赖图无损压缩装置,包括:等价类获取模块,用于根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类,其中,所述别名分析信息是根据别名分析算法得到的;键值设置模块,用于根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值;依赖图压缩模块,用于根据所述系统依赖图中的各个节点的键值对所述系统依赖图进行压缩。在第一种可能的实现方式中,结合第二方面,所述等价类获取模块包括:映射建立子模块,用于根据所述别名分析信息建立从第一变量集合到指向所述变量集合中每个变量的指针集合的幂集的映射f,所述第一变量集合为程序中所有变量的集合;等价类获取子模块,用于根据所述映射f建立从所述指针集合的幂集到第二变量集合的映射f′,所述第二变量集合为被同一组指针所指向的变量的集合。在第二种可能的实现方式中,结合第二方面或第二方面的第一种可能的实现方式,所述映射建立子模块具体用于:为程序中的每个指针变量建立一个由该指针变量所指向的变量构成的指向集,为所有指向集中出现的每个变量建立一个空集合;将每个指针变量添加到该指针变量所指向的变量对应的空集合中,以得到所述映射f。在第三种可能的实现方式中,结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,所述等价类获取子模块具体用于:建立第i个空集合,将所述映射f的定义域中一个变量var,以及所有被映射到f(var)的变量添加到所述第i个空集合中,得到第i个等价类,并对所述第i个等价类设置唯一的编号,并从所述映射f的定义域中删除添加到所述第i个空集合中的变量,直至映射f的定义域中的变量个数为0;其中,i的起始值为1,所述变量var表示映射f的定义域中的任意一个变量。在第四种可能的实现方式中,结合第二方面或第二方面的第一种可能的实现方式至第二方面的第三种可能的实现方式,所述键值设置模块具体用于:将所述系统依赖图上的各个节点所代表的变量所属的等价类的编号对应设置为所述各个节点的键值。在第五种可能的实现方式中,结合第二方面或第二方面的第一种可能的实现方式至第二方面的第四种可能的实现方式,所述依赖图压缩模块包括:出入边转化子模块,用于若系统依赖图上的某个节点的前驱节点集合或者后继节点集合中的任意两个节点本文档来自技高网
...
一种无损压缩系统依赖图的方法及装置

【技术保护点】
一种无损压缩系统依赖图的方法,其特征在于,包括:根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类;其中,所述别名分析信息是根据别名分析算法得到的;根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值;根据所述系统依赖图中的各个节点的键值对所述系统依赖图进行压缩。

【技术特征摘要】
1.一种无损压缩系统依赖图的方法,其特征在于,包括:根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类;其中,所述别名分析信息是根据别名分析算法得到的;根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值;根据所述系统依赖图中的各个节点的键值对所述系统依赖图进行压缩。2.根据权利要求1所述的无损压缩系统依赖图的方法,其特征在于,所述根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类包括:根据所述别名分析信息建立从第一变量集合到指向所述变量集合中每个变量的指针集合的幂集的映射f,所述第一变量集合为程序中所有变量的集合;根据所述映射f建立从所述指针集合的幂集到第二变量集合的映射f',将所有变量分为不同的等价类;所述第二变量集合为被同一组指针所指向的变量的集合。3.根据权利要求2所述的无损压缩系统依赖图的方法,其特征在于,所述根据所述别名分析信息建立从第一变量集合到指向所述变量集合中每个变量的指针集合的幂集的映射f包括:为程序中的每个指针变量建立一个由该指针变量所指向的变量构成的指向集,为所有指向集中出现的每个变量建立一个空集合;将每个指针变量添加到该指针变量所指向的变量对应的空集合中,以得到所述映射f。4.根据权利要求2所述的无损压缩系统依赖图的方法,其特征在于,根据所述映射f建立从所述指针集合的幂集到第二变量集合的映射f',将所有变量分为不同的等价类包括:建立第i个空集合,将所述映射f的定义域中一个变量var,以及所有被映射到f(var)的变量添加到所述第i个空集合中,得到第i个等价类,并对所述第i个等价类设置编号,并从所述映射f的定义域中删除添加到所述第i个空集合中的变量,直至映射f的定义域中的变量个数为0;其中,i的起始值为1,所述变量var表示映射f的定义域中的任意一个变量。5.根据权利要求1至4任意一项所述的无损压缩系统依赖图的方法,其特征在于,所述根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值包括:将所述系统依赖图上的各个节点所代表的变量所属的等价类的编号对应设置为所述各个节点的键值。6.根据权利要求1至4任意一项所述的无损压缩系统依赖图的方法,其特征在于,所述根据所述系统依赖图中的各个节点的键值对所述系统依赖图进行压缩包括:若所述系统依赖图上的任意一个节点的前驱节点集合或者后继节点集合中的任意两个节点拥有相同的键值,并且所述任意两个节点中有一个是副作用节点,则将所述任意两个节点中的副作用节点的出入边依次转化为所述任意两个节点...

【专利技术属性】
技术研发人员:李丰霍玮陈聪明衷璐洁张兆庆冯晓兵
申请(专利权)人:华为技术有限公司中国科学院计算技术研究所
类型:发明
国别省市:广东;44

网友询问留言 已有1条评论
  • 来自[美国] 2015年01月27日 20:48
    所谓无损压缩格式,是利用数据的统计冗余进行压缩,可完全恢复原始数据而不引起任何失真,但压缩率是受到数据统计冗余度的理论限制,一般为2:1到5:1.这类方法广泛用于文本数据,程序和特殊应用场合的图像数据(如指纹图像,医学图像等)的压缩。
    0
1