论文部分内容阅读
二进制翻译技术是使用软件方法解决代码移植问题的重要手段。随着微处理器技术的发展,二进制翻译及其优化技术已被广泛应用在程序动态性能提升、动态插桩、动态投机和并行化、系统安全等领域。
在跨平台的二进制翻译系统中,对源平台上独有的硬件进行模拟比较困难。当大型科学计算程序成为二进制翻译的对象以后,二进制翻译中对浮点运算的高效模拟变得十分重要。在二进制翻译系统中,扩展双精度格式浮点数据的传统处理方式,减少了性能损失,但是会导致在某些硬件平台上无法正确模拟源平台浮点运算。因此如何使二进制翻译器在这些目标平台上正确模拟扩展双精度浮点运算,同时不损失很大性能,是一个很大的挑战。
本文针对运行在龙芯平台上,输入为X86二进制代码的二进制翻译器中扩展双精度浮点数据的软件模拟进行了研究。通过使用浮点运行时库保证了二进制翻译后浮点运算的精度不会丢失,通过区分进行浮点运算时操作数的不同精度来选择将浮点指令翻译成不同的代码,以优化二进制翻译后产生的本地码的效率。
本文的主要贡献如下:
1、分析了使用不同指令集系统的处理器对扩展双精度浮点运算的硬件支持及其互相模拟方案,研究了在无相应硬件指令支持的平台上通过软件方法模拟扩展双精度浮点运算的三种方案及其优缺点。
2、提出了在二进制翻译系统中使用浮点运行时库来软件模拟扩展双精度浮点运算的方案。该方案能够保证二进制翻译对浮点运算的模拟不丢失精度。
3、提出了在二进制翻译过程中将浮点运算按精度区分,根据控制流进行精度传递的浮点运算模拟方案,既保证了浮点运算的精度不丢失,又保证了浮点运算模拟的高效。
4、提出了在寄存器紧缺的情况下,在二进制翻译中利用浮点栈的运算局部性,有区分的浮点寄存器分配策略。使用该策略能够有效减少二进制翻译系统的访存指令数目。