时间:2024-05-04
孙光辉 王丽娟
摘要:在动态二进制翻译系统的基本块级,有三种优化机会:死码删除、冗余加载/存储删除和内存访问优化,这些优化机会均可在译码阶段发现。为此,提出了一种优化机制,基于译码制导的动态翻译技术,分为译码和翻译两阶段工作,译码阶段充分收集信息, 翻译阶段直接生成优化后的代码,从而提高AB(Architecture Bridge)系统的启动和执行速度。实验结果表明,在X86体系结构下,该机制使得申威平台上的SPEC CPU2000 INT测试套件的翻译执行时间平均缩短了 10%-20%。
关键词:动态二进制翻译;译码制导;动态优化
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2019)24-0256-02
开放科学(资源服务)标识码(OSID):
Research on Decoding-directed Dynamic Binary Translation Optimization
SUN Guang-hui , WANG Li-juan
(College of Computer and Electrical Engineering, Hunan University of Arts and Science, Changde 415000, China)
Abstract: The basic block level in the dynamic binary translation system is mainly Dead code deleted, redundant load/store delete, access to optimize the three kinds of optimization opportunities, These optimization opportunities can be found in the decoding phase. For this purpose, an instruction dynamic translation optimization mechanism based on decoding-directed is proposed, and the two phase operation mode is adopted, In the decoding phase to collect information fully, in the translation phase directly to generate the target code optimization, so as to improve the speed of the AB system and the speed of implementation. Experimental analysis shows that the mechanism makes the SPEC architectfure CPU2000 INT X86 test set in the application platform to translate the execution time on average reduced by 10%-20%.
Key words: Dynamic binary translation; Decoding-directed; Dynamic optimization
1 引言
動态二进制翻译技术用来解决软件兼容性的问题,具有良好的平台移植性,可以对不同体系之间的二进制程序动态地翻译,大大减少软件开发成本,扩大软件应用范围,在许多领域得到广泛应用。然而,动态二进制翻译依然存在一些问题,例如:翻译速度慢、冗余码扩展等。如何改进翻译性能和更好地服务于软件跨平台迁移,已成为一个热点研究领域。许多研究表明,基本块之间的跳转指令的处理是影响动态二进制翻译系统性能的一个重要因素。对于不同的问题,提出不同的解决方案,例如:动态优化方面,优化重复寄存器存取指令和读取操作以避免冗余负载/存储器命令的生产等,译码阶段指令的识别和存取,确定不会发生异常,可以大大减少冗余码。
2 标志位信息识别
制导优化技术通过扩展基本块结构,完成译码阶段的信息收集。在基本块中,给每条指令添加MS标识,用来指示标志位是否有效,添加US标识,用来判断是否使用标志位,添加IS标识,检查寄存器信息,添加OS标识,输出寄存器信息,以及ES是否触发异常标识指令导致异常。
如图1所示,在x86处理器中,这是一个用于存储条件标志和控制标志的寄存器,0号位放置进位标志CF(Carry Flag)、2号位放置奇偶标志PF (Parity Flag)、4号位放置AF (Auxiliary Carry Flag)辅助进位标志、6号位放置零标志ZF (Zero Flag)、7号位放置符号标志SF (Sign Flag)、11号位放置溢出标志OF (Overflow Flag)、8号位放置陷阱标志TF (Trap Flag)、9号位放置中断标志IF (Interrupt Flag)、10号位放置方向标志DF (Direction Flag)。译码阶段,识别指令信息分两个步骤,首先,统计指令是否影响标志位;其次,通过对统计结果进行分析,找出对标志位的操作有效的指令。
标志位信息收集算法流程如图2所示:
使用上述算法,AB系统对标志位信息进行分析,统计出对修改标志位有效的操作指令,在翻译模块中,生成相应指令的目标码。
3 异常信息识别
在x86体系结构中,正常情况下,处理器对寄存器的操作不会出错。但是,在访问内存时,可能会出错,例如:缺页、内存保护等。
在源处理器体系结构中,大多数异常都可以由硬件解决。但是,对AB系统而言,可以用软件替代硬件过程,对异常进行处理由高级语言实现。在传统的动态二进制翻译系统中,访存出现异常时,调用异常处理函数。通常将源处理器中的数据进行转移,保存到目标机器中去,同时,对寄存器信息进行恢复,执行异常处理函数。这个过程中会产生较多的目标代码,这些代码会被循环执行,导致代码执行效率低下。在操作系统中,异常的发生通常是小概率事件,因此,如果能够首先对异常情况进行识别,那么,在翻译时就可以避开异常,不需要时时调用异常处理函数,能够大幅提升AB系统执行效率。
4 测试与分析
实验方案在Alpha处理器上进行测试,翻译系统为优化后的基于Alpha处理器的系统级动态二进制翻译平台,图3表示运用优化技术前后,加载操作系统时的代码膨胀率对比,我们可以很明显的发现,经过优化后,代码膨胀率有明显下降。
使用优化技术后,翻译系统在加载不同操作系统所用的时间和原来用时的对比如表1所示,通过对比,我们可以发现,优化后的執行速度提升了12%左右。
5 结语
本文通过对基本块结构的扩充分析,提出了一种优化机制,釆用译码制导技术对动态翻译过程进行优化,整个过程分译码和翻译两个阶段,译码阶段充分收集信息,翻译阶段直接生成优化的代码。在申威平台上的测试结果表明,该优化能有效提高翻译过程执行效率。
参考文献:
[1] 李剑慧,马湘宁,朱传琪.动态二进制翻译与优化技术研究[J].计算机研究与发展,2007,44(1):161-168.
[2] 徐金龙,蒋烈辉,董卫宇,等. 动态二进制翻译缓存的分区管理机制研究[J]. 计算机工程,2012,38(2):60-62.
[3] 张龙龙. 动态二进制翻译优化技术研究[D].杭州:解放军信息工程大学,2013.
[4] 董卫宇,王瑞敏,戚旭衍,等. 译码制导的动态二进制翻译优化[J].计算机科学,2015,42(6):189-192.
[5] 包云程,梁阿磊,管海兵. 动态二进制翻译基础平台crossbit的设计与实现[J].计算机工程,2007,33(23):100-101.
【通联编辑:梁书】
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!