[发明专利]一种非对齐访存的处理方法有效
申请号: | 200810115202.5 | 申请日: | 2008-06-18 |
公开(公告)号: | CN101299192A | 公开(公告)日: | 2008-11-05 |
发明(设计)人: | 李建军;武成岗;陈龙 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京泛华伟业知识产权代理有限公司 | 代理人: | 王勇 |
地址: | 100190北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 对齐 处理 方法 | ||
技术领域
本发明涉及计算机领域内的二进制翻译技术领域,更具体地,本发明涉及二进制翻译中的一种非对齐访存的处理方法。
背景技术
二进制翻译是解决软件移植问题的一种重要技术手段,可以将一种指令集体系结构(ISA)上的可执行程序翻译到另一种指令集体系结构的计算机上执行,并且具备很高的执行效率。二进制翻译已经用来将一种ISA上的可执行程序翻译到同种ISA的较高版本上执行,以在同一个系列的计算机中使用高档次的机器高效地运行低档次机器上开发的软件。特别是随着虚拟机技术的普及,二进制翻译技术的重要性也越来越明显,很多虚拟机软件中都不同程度的运用了二进制翻译技术以保障虚拟机的运行效率。
IA32体系结构(或称为X86体系结构)是以Intel、AMD公司为主导开发的一种指令集体系结构,是目前市场上应用最广泛的指令集体系结构之一,目前流行的大量软件是基于IA32体系结构的,因此,针对IA32的二进制翻译技术研究也格外受到重视,新推出处理器的很多厂家希望借助二进制翻译技术或虚拟机技术在自己的计算机上运行IA32软件。
在x86体系结构到Alpha、MIPS等RISC体系结构的二进制翻译系统中,非对齐内存访问(即非对齐访存,访存地址不是所访问数据单元字节数的整数倍)会对二进制翻译系统的性能产生非常大的影响。这是因为在x86体系结构的机器上有专门处理非对齐访存的硬件,处理非对齐访存的代价非常低,所以编译器编译生成目标代码时不会保证访存指令的目标地址是对齐的。但是在Alpha、MIPS等RISC体系结构的机器上使用访存指令读取或写入数据单元时,目标地址必须是地址对齐的,否则将会引发异常。操作系统检测到非对齐异常后,会调用相应的异常处理程序对其进行处理,这个处理过程一般需要上千个系统时钟周期。如果程序中有大量的非对齐访存,那么将会对程序性能产生非常大的影响。
因此在以IA-32为源体系结构,ALPHA、MIPS等为目标体系结构的二进制翻译器中,如何有效的消除上述非对齐访存带来的性能影响是一个非常重要的问题。一个简单的方法是将所有的访存指令都翻译为目标平台上对齐的访存指令序列,但这种方法的一个明显的缺点就是带来很大的代码膨胀,使程序中非对齐访存操作较少的程序的运行时间明显变长。另外,在DIGITAL FX!32、IA-32Execution Layer(EL)和Transmeta’s Code Morphing Software等二进制翻译系统中都有对非对齐访存指令的处理。其中Transmeta’s Code MorphingSoftware采用的是硬件处理的方法,可以有效的处理非对齐内存访问,但需要软硬件协同设计,只适用于特定的系统;DIGITAL FX!32和IA-32EL采用软件的方法来处理程序中的非对齐访存指令,虽然它们可以有效的处理程序中大部分的非对齐内存访问,但是对于代码执行行为随执行时间或不同输入集而变化的程序的处理效果不明显。
发明内容
为克服现有二进制翻译系统对非对齐访存处理的普适性差、实时处理能力低的缺陷,本发明提出一种非对齐访存的处理方法。
根据本发明的一个方面,提出了一种非对齐访存的处理方法,包括:
步骤10)、在解释器中对访存指令进行插桩,得到非对齐访存指令的信息;
步骤20)、当翻译单元的执行次数大于预设的翻译门限时,根据所述非对齐访存指令的信息指导翻译器将翻译单元翻译成本地码;
步骤30)、在所述本地码执行过程中,如果发生非对齐访存,则利用异常处理机制,在异常处理函数中根据操作系统保存的异常上下文信息生成相应的非对齐访存指令序列,并将所述指令序列插入到本地可执行代码中。
其中,步骤10)中,所述目标体系结构包括ALPHA、MIPS和Itanium体系结构。
其中,步骤10)进一步包括:解释执行访存指令时,确定所述访存指令发生非对齐内存访问,记录所述访存指令的相关信息;在当前执行的翻译单元解释执行完成后,保存所述访存指令的相关信息。
其中,通过判断访存地址是否对齐来确定所述指令是否发生非对齐内存访问。
其中,所述访存指令的相关信息可以包括所述访存指令的地址、访存地址的对齐方式、发生对齐访存的次数和非对齐访存的次数。
其中,步骤20)进一步包括:
步骤210)、根据所述非对齐访存指令的信息确定当前指令发生非对齐访存,将当前指令中的访存操作翻译为非对齐访存指令序列;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810115202.5/2.html,转载请声明来源钻瓜专利网。