[发明专利]结合静态优化的动态二进制翻译方法有效
申请号: | 200810207804.3 | 申请日: | 2008-12-25 |
公开(公告)号: | CN101452396A | 公开(公告)日: | 2009-06-10 |
发明(设计)人: | 管海兵;梁阿磊;徐超;顾静辉;林凌 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 上海交达专利事务所 | 代理人: | 毛翠莹 |
地址: | 200240*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 结合 静态 优化 动态 二进制 翻译 方法 | ||
技术领域
本发明涉及一种结合静态优化的动态二进制翻译方法,用于提高源机器平台的程序在翻译器上的执行性能。本发明属于二进制翻译技术领域。
背景技术
动态二进制翻译用于将对应源机器平台的二进制代码动态翻译为可在目标机器平台上运行的二进制代码,从而对软件移植和改善系统性能提供了途径。动态二进制翻译器运行时仅对执行到的代码片段进行翻译,对用户完全透明。利用程序运行时的剖分信息可以对翻译好的代码做有针对性的优化,而这些动态执行的信息在静态是无法被收集到的。
Profiling(剖分)是指通过对运行中的程序进行监测,对体现程序执行行为、特征的数据信息进行收集的过程。这些剖分信息可以用作对翻译好的目标代码进行优化的依据。常用的profiling方法有以下两种:
1、采用instrumentation(插装)的方式,这种方法通过在代码中插入探针指令或直接利用支持profiling技术的硬件来采集与程序执行行为、特性有关的数据信息。
2、采用sampling(采样)的方式,这种方法以一定的时间间隔对程序运行的相关数据进行数据收集,而不需要对程序进行修改。
现在动态二进制翻译器的优化一般都是利用收集到的剖分信息在程序动态执行的过程中做优化,这样在动态可以做一些静态翻译器无法完成的优化工作,比如指令分支跳转预测,超级块的生成,以及针对超级块的优化。这些优化通常会带来明显的性能提升。
但是受制于以下几个方面,动态期间进行的这些优化带来的性能提升很难再有大的突破:
1、收集剖分信息的过程是动态进行的,不管是采用instrumentation技术还是sampling技术,收集过程本身都会有一定的性能开销。如果想做一些更深入的优化,必然需要关于程序运行的更详细的剖分信息,比如要想生成高质量的超级块,需要对程序的执行路径做profiling,这样会带来很大的性能开销。也就是说收集剖分信息和利用剖分信息做优化是矛盾的两个过程,动态做优化要想取得理想的效果就要在两者之间寻找一个平衡点。
2、优化程序本身会消耗性能,而且如要获得更好的优化结果,优化算法一般也会更复杂,这就会使性能开销增加。
3、在动态时无法取得对程序整个运行期间的行为信息,动态优化利用的剖分信息一般只是程序运行到某一阶段的行为信息,不能反映程序运行行为的全貌,这会导致一些动态优化(比如指令分支跳转预测等)的优化效果打折扣。
4、假如同一个程序要在动态二进制翻译器上运行多次,将对应源机器平台的二进制代码翻译成目标机器平台的二进制代码的过程在程序每次运行时都会存在,这部分翻译时间也会带来开销。
针对上述缺点,一般的解决方案是简化profiling的实现,抛弃复杂的优化算法,从而降低性能的开销。显而易见,这种妥协性质的方案无法获得较优的优化效果。
除此之外,另一种解决方案是分阶段翻译,其主要的步骤是:首先,模拟执行源程序获取剖分信息;然后,根据获得的信息,优化翻译过程,产生较优的目标代码,同时将目标代码保存;最后,在之后的执行中,利用现有的目标代码提高性能。这一方案虽能提高执行性能,但其优势仅在于利用剖分信息产生较优的目标代码,而不是对目标代码或执行流本身的优化,无法大幅度提高实际执行性能。
发明内容
本发明的目的在于针对现有技术的不足,提供一种结合静态优化的动态二进制翻译方法,把一些动态期间执行的优化操作放在静态执行,降低程序运行时翻译和优化的开销,使程序执行性能有较大的提升。
为实现上述目的,本发明在源程序第一遍执行时在翻译后的代码中插入探测指令,收集丰富的剖分信息,并在程序运行结束时将剖分信息和翻译后的目标代码持久化,利用保存的剖分信息对翻译后的目标代码在静态期间做各种优化,在此程序以后的运行中直接加载这些经过优化的目标代码。
本发明的结合静态优化的动态二进制翻译方法的具体步骤如下:
1、以基本块为单位划分程序,跳转指令的下一条指令到下一个跳转指令为一个基本块。
2、收集翻译后代码的重定位信息。二进制翻译器以基本块为单位,将源机器代码翻译成目标代码,收集翻译后的目标代码的重定位信息,生成一个重定位信息表,重定位信息表中记录下每条需要重定位指令在内存中的偏移、重定位类型、回填地址时要使用的详细信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810207804.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种自适应电子地图符号的系统及方法
- 下一篇:一价到底房屋贷款的方法与平台