首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 62 毫秒
1.
二进制翻译是不同体系结构之间软件移植的重要手段。体系结构和硬件环境上的差别,可以通过二进制翻译系统来弥补,在翻译过程中往往使用多条本地指令模拟一条目标指令,翻译代码规模随之显著增加,从而导致被翻译程序的执行效率下降。寄存器作为处理器和内存交换信息的重要存储部件,寄存器的模拟器方式对于程序的性能有着至关重要的影响。为了提高特定平台翻译后代码的执行效率,提出了在动态二进制翻译机制中使用全部寄存器直接映射方法,详细分析了二进制翻译中的上下文切换原理和寄存器访问范围,为异构平台之间寄存器直接映射提供方法指导。利用QEMU模拟器,把x86架构的8个通用寄存器全部的直接映射到MIPS架构的对应寄存器,在此基础上,进行大量的指令翻译规则的简化。实验数据表明,该方法可以有效简化指令翻译,降低代码膨胀率,使得SPEC CINT 2000测试程序在龙芯CPU上翻译后代码运行时间下降了30%-40%。  相似文献   

2.
针对二进制翻译器QEMU(quick emulator)在寄存器映射时未考虑基本块之间以及循环体之间对寄存器需求的差异,造成不必要的寄存器溢出而导致的冗余访存开销问题,引入全局寄存器静态映射和局部寄存器动态分配思想,提出高效的基于优先级的动静结合寄存器映射优化算法.该算法首先基于源平台不同寄存器使用的统计特征和各变量的生命周期,静态进行全局寄存器映射;然后依据中间表示与源平台寄存器之间的映射关系,获取基本块中间指令需求寄存器次数并排序确定寄存器分配的优先级;之后依据优先级顺序动态进行寄存器分配,从而减少寄存器溢出次数,降低生成的本地代码的膨胀率以及访存次数,提高目标程序性能.对NBENCH、典型的递归程序和SPEC2006的测试表明:该算法有效地减少了本地代码的访存次数,提高了程序性能,平均比优化前性能分别提升了8.67%, 825%, 8.10%.  相似文献   

3.
动态二进制翻译提供了无需重新编译源代码就能将源机器生成的可执行代码自动转换到目标机器的方法,很好地解决了代码兼容性问题.其核心思想是根据程序的动态运行信息找到反复执行的代码序列,对代码序列进行翻译和优化,并将结果多次重用.指令调度作为一种有效的编译优化手段,也适用于动态二进制翻译.在对gcc的指令调度器分析研究的基础上,结合动态二进制翻译的实时性特点,提出了适合动态二进制翻译的效率高、开销小的指令调度算法.  相似文献   

4.
动态二进制翻译技术可以使编译好的二进制代码无缝运行于其他架构下,目前得到越来越广泛的应用.由于在动态翻译执行的过程中缺少程序的原始语义信息而只能采用保守的策略来保证程序的正确性,从而制约到动态二进制翻译的性能.为了解决这种不足,本文提出一种基于静态编译阶段产生的对性能有影响的元数据进行动态翻译中的寄存器化优化算法,进而来提高动态翻译器的整体性能.实验数据表明优化方法对于SPECfp2000和SPECint2000测试集分别获得了15.03%和1.21%的性能提升,其中的一些测试包的加速比甚至达到了37.09%.  相似文献   

5.
二进制翻译是在不同硬件平台之间实现软件迁移的重要手段.在二进制翻译系统中,如何在没有标志位寄存器的目标平台上模拟实现源平台上标志位寄存器的功能,是影响系统性能的关键.现有的标志位分析技术通过对标志位的定值引用进行数据流分析,尽可能多地消除冗余的标志位定值.但是,对于那些会被引用的标志位定值,现有的技术仍然需要进行翻译.这不仅会导致翻译生成代码的膨胀,还会影响二进制翻译系统的性能.提出了一种二进制翻译中基于模式化的标志位翻译方法.该方法在标志位分析技术基础上,通过将源平台上标志位定值指令和引用指令组合成固定的标志位模式,然后根据模式的具体语义选择目标平台上具有相同语义功能的指令组合进行翻译.这种模式化的翻译方法,不仅可以降低因翻译标志位而引入的代码膨胀,还可以提升二进制翻译系统的性能.实验结果表明,对于SPEC CINT2006中的程序,该方法不仅可以使翻译生成的代码量平均减少7.5%,还可以将程序的性能平均提升10%.  相似文献   

6.
在二进制翻译中采用中间表示,可以适当隔离不同机器平台的特点,便于二进制翻译系统的移植。提出一种VINST中间表示方法,介绍其指令集与特点,运用SSA形式化和冗余指令删除等方法对VINST进行初步优化。优化前后的性能比较结果表明,相对简单高效的方法可以弥补优化的开销,提高系统性能。  相似文献   

7.
寄存器旋转技术为每一个循环迭代都提供一组专用的寄存器,从而减少对循环展开的需求。针对如何在IA-64二进制翻译中处理旋转寄存器的问题,提出一种在二进制翻译器的后端直接模拟寄存器旋转特性的解决方案,实验结果证明了该方法在二进制翻译中处理软件流水操作代码的有效性。  相似文献   

8.
提出动态二进制翻译的两种优化方案:基本块和热路径;分析了从代码中抽取值得优化部分的详细过程;同时也给出针对这两种方案的一些优化方法.最后简单介绍了当前一些动态二进制翻译系统所采用的优化技术.  相似文献   

9.
通过对比分析静态与动态二进制翻译系统,描述了基于机器状态的二进制翻译形式化模型。该形式化模型在实践上对于二进制翻译工程具有理论指导作用,并且可为保证翻译过程及结果的正确性提供理论基础。  相似文献   

10.
如何处理库函数调用问题直接关系到二进制翻译系统的性能。提出了一种系统库函数的分类处理方法,成功地解决了二进制翻译系统中的库函数调用处理问题。  相似文献   

11.
二进制翻译中的库函数处理   总被引:1,自引:1,他引:0  
在二进制翻译技术中,快速有效地处理系统库函数调用是一个值得研究的课题.基于动静结合二进制翻译技术,提出一种对系统库函数进行分类处理的算法,能够很好地利用动静结合二进制翻译的技术特点和目标机本地的函数调用约定,减少不必要的内存操作,提高源二进制代码在目标机上的执行效率.该算法能够在系统库函数和系统调用之间灵活地切换,并且对于系统库函数有较强的适用性.经过大量的测试验证,在应用该算法后,Digital Bridge Version2系统不仅能够正确有效地处理系统库函数调用,并且性能有了很大的改善.  相似文献   

12.
数据段映射是二进制翻译过程中源可执行文件和目标可执行文件数据关系的纽带。论文介绍了32位处理器二进制翻译的数据段映射技术,指出了这种映射技术在IA64二进制翻译中存在的缺陷,进而提出了改进方法,并解决了IA64二进制翻译的数据段映射问题。  相似文献   

13.
在无源跨平台移植的研究中,效率是制约动态二进制翻译技术发展的主要瓶颈.使用本地函数封装替换的翻译处理方式可以有效提高二进制翻译的性能.然而在实际应用中,随着源程序中库函数调用次数或者翻译器支持库函数数量的增长,库函数处理过程的无用查询开销随之增长,减弱了该方法的优化效果.针对此类问题,结合动态二进制库函数处理过程内在动静结合的性质,提出了将查询信息静态预处理,使用散列函数实现查询过程的优化方法,实现了源程序中库函数地址到相对应处理函数的快速映射,降低了查询开销.基于动态二进制翻译器QEMU实现并测试了优化方法,通过实验验证了该方法降低库函数处理过程中查询开销的有效性.  相似文献   

14.
动态函数调用跟踪技术是调试Linux内核的重要手段.针对现有动态跟踪工具存在支持平台有限、运行效率低的问题,基于二进制翻译,设计并实现支持多种指令集的动态函数调用跟踪工具.首先,使用二进制翻译进行系统加载、分析内核镜像,识别基本块的分支指令类型.然后,根据不同平台指令集,设计桩代码并在函数调用与返回指令翻译时插入桩指令,进而在程序执行和内核启动时实时获取时间戳、进程标识、线程标识、函数地址等信息.最后,内核加载完毕后,处理获取的信息,生成过程函数调用图.只需要根据平台指令集特点设计对应的信息获取桩代码并插入到函数调用指令翻译代码中,实现简单,易于移植支持多种平台.该方法基于二进制翻译,直接对程序或内核镜像中的指令段、代码段、符号表进行分析,不依赖源码.拓展的中间代码和额外的目标码,不影响基本块连接、冗余代码消除、热路径分析等二进制翻译的优化方法,降低了开销.基于QEMU的实验结果表明:跟踪分析结果与源代码行为一致,桩代码执行信息记录产生了15.24%的时间开销,而信息处理并输出到磁盘文件产生了165.59%的时间开销,与现有工具相比,性能有较大提升.  相似文献   

15.
动态二进制翻译与优化技术研究   总被引:2,自引:1,他引:2  
动态二进制翻译技术是一种即时编译技术,它将针对源体系结构编译生成的二进制代码(源机器码)动态翻译为可以在目的体系结构上运行的代码(翻译码).动态优化技术是指在运行时获取动态信息并进行代码优化的技术.动态二进制翻译及优化系统使得源软件无需重编译就可以直接在目标体系结构上高效地运行.目前几种比较有影响的动态二进制翻译及优化系统有Intel公司的IA-32 Execution Layer,IBM公司的DAISY,Transmeta的CMS及HP的Dynamo等.这些系统对动态二进制翻译系统关键技术有不同的实现.对动态二进制翻译和优化技术的研究是计算机领域的研究热点,具有深远的现实意义和应用前景.  相似文献   

16.
二进制翻译应用级异常处理   总被引:2,自引:2,他引:0  
二进制翻译可以用于解决遗产代码的迁移问题,也可以实现不同硬件平台之间软件的通用.异常处理是二进制翻译的一个重要方面,如何解决异常处理和二进制翻译效率的矛盾是问题的关键.提出了在库函数包装层面处理主动异常和被动异常的方法,一个算法可以高效处理信号异常,另一个算法使用栈展开技术,得到调用地址用于处理try catch异常.实验结果表明,上述方法能够正确处理异常函数,同时对于普通应用程序加入异常处理机制之后性能并不受影响.  相似文献   

17.
一个用户级动态二进制翻译系统的设计与实现   总被引:1,自引:0,他引:1  
本文介绍了一个x86 Linux系统下动态二进制翻译系统的设计与实现,该系统将IA-32用户级整数代码翻译到一个RISC指令集并由模拟器执行目标代码;详细描述了该系统的总体组成、目标结构模拟器、代码翻译过程以及翻译过的代码的执行。  相似文献   

18.
二进制翻译是指把一种机器平台上的二进制可执行程序经过转换后运行在另一个机器平台上的过程,它解决了二进制代码在异构机器平台上的迁移问题。该文介绍了二进制翻译的工作原理,阐述了CrossBit动态二进制翻译基础平台的设计思路与关键实现,包括其系统架构、工作流程和中间指令的设计。实验数据表明,二进制翻译技术的性能优于传统软件解释技术。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号