论文部分内容阅读
二进制翻译技术是用软件方法解决代码移植问题的重要手段.二进制翻译技术的研究,不仅在遗产代码移植而且在程序性能提高等其它方面都有重要的意义.本文全面调研了二进制翻译技术领域的研究工作,综述了二进制翻译的研究现状以及基本原理和方法.本文设计和实现了两个二进制翻译系统:Linux下系统应用程序级的动态二进制翻译器Digital Bridge Ⅰ和动静结合的二进制翻译器Digital Bridge Ⅱ.本文着重研究了二进制翻译中浮点翻译优化技术,提出了Trace上基于DAG(Directed Acyclic Graph)图的浮点翻译优化方案和扩展虚拟栈(Extending Virtual Stack)方案两种浮点翻译优化方案.本文还针对代码Cache的管理提出了CPB(Cache-Piece-Block)策略,它具有全清空、FIFO和LRU策略的优点,并且考虑到程序的时间空间局部性和Cache替换开销,从而实现了对代码Cache的高效管理.另外本文还对面向多核体系结构的二进制技术和龙芯3虚拟机进行了初步的探索. 本文的主要贡献如下: 1.提出了Trace上基于DAG图的浮点翻译优化方案.它的总体思想就是利用DAG图在Trace上对源X86二进制程序中浮点指令的语义进行提升,在DAG图上根据提升出来的语义消除那些由于X86浮点寄存器栈而导致的浮点栈寄存器之间相互拷贝的指令.另外我们在DAG图上进行寄存器分配,把源X86二进制程序中内存存储的变量分配到目标机器的硬件浮点寄存器中,这样减少了大量的浮点访存操作.由于使用了DAG图,我们可以进行公共子表达式删除,冗余指令删除等常规优化.使用这个算法,我们就解决了X86浮点寄存器栈的映射问题.
2.针对X86浮点寄存器栈的特征,提出了一种扩展虚拟栈处理方案,能够在保证正确实现其功能的前提下,获得更好的执行效率.该方案采用归一的方法,保证了每个基本块中的运算所涉及到的浮点寄存器可以直接映射到目标机器中的浮点寄存器,确保了翻译的效率,并利用翻译时的分析避免了在入口处不必要的判断;同时还给出了在基本块入口处判别一个基本块是否会出现浮点栈上溢和下溢的充分必要条件,为生成更加高效的代码提供了条件.总的来讲,该方案提高了浮点栈的翻译效率.
3.就代码Cache的管理提出了CPB策略,它具有全清空、FIFO和LRU策略的优点,并且考虑到程序的时间、空间局部性和Cache替换开销,从而实现了对代码Cache的高效管理.
4.上述技术,均已在DigitalBridge Ⅰ和.DigitalBridge Ⅱ系统中实现,实验结果表明上述技术对系统性能有明显提升.
5.对面向多核体系结构的二进制技术进行了初步的探索,提出了一个多核体系结构二进制翻译的总体框架.6.基于二进制翻译技术,对龙芯3虚拟机的设计方案进行了初步探索.