指针别名关系判断方法和代码多版本优化方法技术

技术编号:8452812 阅读:288 留言:0更新日期:2013-03-21 13:29
本发明专利技术提供了一种指针别名关系判断方法和代码多版本优化方法。所述指针别名关系判断方法包括:判断第一循环体在执行一次循环操作时所述第一循环体内的第一指针所指向的第一地址段偏移和第二循环体在执行相同次循环操作时第二循环体内的第二指针所指向的第二地址段偏移是否重合,所述第一循环体和第二循环体是根据待优化循环体生成的两个不同版本;判断所述第一循环体在结束上一次循环操作转入下一次循环操作时所述第一指针指向的第一地址段跨步和所述第二循环体在结束上一次循环操作转入下一次循环操作时所述第二指针指向的第二地址段跨步是否相等;以及如果上述两个判断步骤结果均为是,则确定所述第一指针和所述第二指针互为指针别名关系。

【技术实现步骤摘要】

本专利技术涉及代码多版本优化技术,特别涉及一种。
技术介绍
随着计算机体系结构和硬件技术的发展,应用程序的代码量逐年增加,其程序行为在整个执行期间变化复杂,对编译优化的要求也越来也高。优化技术可分为两类静态优化和动态优化。其中,代码多版本技术是动态优化技术的一种,在编译时为指定的程序段利用不同算法或不同优化技术生成多个版本,在运行时根据输入数据集或执行环境等选择一个最佳的版本执行。因此,代码多版本技术的优点是能够为热点代码段动态选择最合适的目标码,实现静态分析时难以解决的优化问题。然而,代码多版本技术需增加额外计算以获得执行在版本间进行选择的条件信息。在C、C++和Fortran的语言编译环境中,由指针而引发的别名信息就是代码多版本技术执行在版本间进行选择的重要条件信息。在常用的指针别名关系判断方法中是以保守的方法计算近似的别名信息,也就是说所计算的结果中,会把一些本来不是别名的表达式视为别名。这些不精确的别名分析结果会导致冗余数据依赖关系的产生,限制了版本间的切换调度以及后继优化手段的效果, 从而降低了所生成的目标码的性能,使得目标码占用过多内存,以及导致目标码在执行时占用过大带宽,或处理速度慢。因此需要提出一种新的,以获得更为精确的别名信息,从而增强代码动态多版本优化的优化效率。
技术实现思路
本专利技术解决的问题是提出一种新的,以获得更为精确的别名信息,从而增强代码动态多版本优化的优化效率。为解决上述问题,本专利技术的实施例提供了一种指针别名关系判断方法,所述方法包括判断第一循环体在执行一次循环操作时所述第一循环体内的第一指针所指向的第一地址段偏移和第二循环体在执行相同次循环操作时第二循环体内的第二指针所指向的第二地址段偏移是否重合,所述第一循环体和第二循环体是根据待优化循环体生成的两个不同版本;判断所述第一循环体在结束上一次循环操作转入下一次循环操作时所述第一指针指向的第一地址段跨步和所述第二循环体在结束上一次循环操作转入下一次循环操作时所述第二指针指向的第二地址段跨步是否相等;以及如果上述两个判断步骤结果均为是, 则确定所述第一指针和所述第二指针互为指针别名关系。可选地,所述待优化循环体为循环体大小大于预定标准的循环体。可选地,所述待优化循环体为循环次数大于预定次数的循环体。可选地,所述待优化循环体为所包含的指针信息比重大于预定比重的循环体,所述指针信息比重为所述待优化循环体中所有指针读和指针写操作所指向的位置数的总和。可选地,判断所述第一地址段偏移和所述第二地址段偏移是否重合的方法包括 分别计算出在第一循环体执行一次循环操作时所述第一循环体内的第一指针所指向的第一地址段的上界和下界,和在第二循环体执行相同次循环操作时第二循环体内的第二指针所指向的第二地址段的上界和下界;判断所述第一地址段和第二地址段的上界和下界是否重合。本专利技术的实施例还提供了一种代码多版本优化方法,所述方法包括选择待优化的循环体;根据所述待优化循环体生成多个不同版本;生成在所述多个版本相互之间进行切换的测试条件;以及根据所述测试条件来在所述多个版本中进行切换。可选地,生成在所述多个版本相互之间进行切换的测试条件的方法包括判断所述多个版本之间的指针别名关系;以及根据所述指针别名关系进一步确定所述多个版本之间的选择和切换机制。可选地,选择待优化的循环体的方法包括选择循环体大小大于预定标准的循环体作为所述待优化循环体。可选地,选择待优化的循环体的方法包括选择循环次数大于预定次数的循环体作为所述待优化循环体。可选地,选择待优化的循环体的方法包括选择包含指针信息比重大于预定比重的循环体作为所述待优化循环体,且所述指针信息比重为所述待优化循环体中所有指针读和指针写操作所指向的位置数的总和。与现有技术相比,本专利技术的实施例具有以下优点不需要像现有技术那样比对所述第一和第二循环体在整个运算周期内每一次循环执行过程中所述第一和第二指针指向的第一和第二地址段偏移的上下界是否重合,只需要在确认所述第一和第二循环体在执行任意两次相邻循环操作之间所述第一和第二指针指向的第一和第二地址段跨步相等的前提下,进一步判断任意一次循环执行过程中所述第一和第二指针指向的第一和第二地址段偏移是否重合即可,不仅确保了指针别名关系判断的准确性,而且减少了判断指针别名关系过程中的运算量和比对操作,从而提高了多版本优化方法的效率。附图说明图I是现有技术中指针别名关系判断方法的过程示意图2为本专利技术一实施例中指针别名关系判断方法的流程图3为本专利技术一实施例中多版本优化方法的流程图。具体实施方式现有技术中,在判断根据待优化循环体生成的两个不同版本的循环体包含的指针是否互为别名关系时,需要比对所述两个循环体在整个运算周期内每一次循环执行过程中所述指针指向的地址段偏移上下界是否重合,例如,如图I所示,两个互为不同版本的循环体分别包含第一指针Pl和第二指针P2,如果通过现有技术来判断所述第一指针Pl和第二指针P2是否互为别名关系,需要依次比对在第一次循环过程中所述第一指针Pl的地址段偏移al至a2和在第一次循环过程中所述第二指针P2的地址段偏移bl至b2是否重合、第二次循环过程中所述第一指针Pl的地址段偏移a3至a4和在第二次循环过程中所述第二指针P2的地址段偏移b3至b4是否重合、以及后续每一次循环过程中第一指针Pl的地址段偏移和所述第二指针P2的地址段偏移是否重合。经研究,专利技术人发现,当所述待优化循环体的循环次数很大时,现有技术中的指针别名关系判断方法将相应地产生大量的获取指针地址段偏移的计算以及比对指针地址段偏移的操作,这不仅使得优化过程占用过多内存,而且优化速度慢,从而降低了优化过程的整体效率。针对上述问题,本专利技术的实施例提供了一种指针别名关系判断方法,图2为本专利技术一实施例中指针别名关系判断方法的流程图。为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图对本专利技术的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本专利技术,但是本专利技术还可以采用其他不同于在此描述的其它方式来实施,因此本专利技术不受下面公开的具体实施例的限制。首先,请参考图2,执行步骤S101,判断第一循环体在执行一次循环操作时所述第一循环体内的第一指针所指向的第一地址段偏移和第二循环体在执行相同次循环操作时第二循环体内的第二指针所指向的第二地址段偏移是否重合。所述第一循环体和第二循环体是根据待优化循环体生成的两个不同版本。下面将继续以图I为例对上述判断过程进行详细描述。如图I所述,所述第一循环体包含第一指针Pl,所述第二循环体包含第二指针P2, 当判断所述第一指针Pl和所述第二指针P2是否互为别名关系时,首先可以判断所述第一循环体在执行任意一次循环操作过程中所述第一指针Pl所指向的第一地址段偏移是否和所述第二循环体执行相同次循环操作过程中所述第二指针P2所指向的第二地址段偏移重八口 ο例如,在本专利技术的一实施例中,可以选择判断所述第一循环体执行第一次循环操作过程中所述第一指针Pi所指向的第一地址段偏移和所述第二循环体执行第一次循环操作过程中所述第二指针P2所指向的第二地址段偏移是否重合,在本专利技术的另一实施例中, 可以选择判断所述第一循环体执行第二次循环操作过程中所述第一指针Pl所指向的第本文档来自技高网...

【技术保护点】
一种指针别名关系判断方法,其特征在于,包括:判断第一循环体在执行一次循环操作时所述第一循环体内的第一指针所指向的第一地址段偏移和第二循环体在执行相同次循环操作时第二循环体内的第二指针所指向的第二地址段偏移是否重合,所述第一循环体和第二循环体是根据待优化循环体生成的两个不同版本;判断所述第一循环体在结束上一次循环操作转入下一次循环操作时所述第一指针指向的第一地址段跨步和所述第二循环体在结束上一次循环操作转入下一次循环操作时所述第二指针指向的第二地址段跨步是否相等;以及如果上述两个判断步骤结果均为是,则确定所述第一指针和所述第二指针互为指针别名关系。

【技术特征摘要】

【专利技术属性】
技术研发人员:李中升马晓东尉红梅吴佩华顾龙
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:

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

1