论文部分内容阅读
动态二进制翻译解决了软件的跨平台问题,使得不同处理器之间的二进制程序可以很容易地相互移植,同时扩大了软硬件的适用范围,打破了处理器和支持软件之间互相依赖的局面,因此在近年来得到了越来越广泛的关注和研究。动态二进制翻译器边翻译边执行,并在翻译的过程中根据运行时收集的信息对频繁执行的关键代码区域进行动态优化,以提高动态二进制翻译系统的运行性能。基于热路径的动态优化技术是动态二进制翻译器中提高软件运行效率的一种有效方法,如何利用基本块中已有的有限历史运行信息(Profile)来识别热路径,并提高它的预测命中率,同时控制计算开销不增加是研究的重点。已有的热路径识别算法中基于模型进行预测的方法非常少,或者算法实现复杂。本文基于隐马尔科夫模型提出了改进的热路径预测方法。首先对基于基本块的程序进行图解。以基本块为基础,用流程图的方式表示程序的流转,更方便于对程序执行路径的研究。然后基于隐马尔科夫模型对程序图解进行扩展,使得程序的图解满足隐马尔科夫性质,从中研究基于隐马尔科夫模型的热路径预测模型。之后基于隐马尔科夫模型进行建模,提出改进的热路径识别算法。由于状态转移序列唯一,该算法实现简单。最后,基于实验平台天目(SkyEye)对该算法进行了验证,实验结果证明了算法的有效性。该算法在保持预测延迟没有增加的情况下,能提高热路径预测的命中率,改善动态二进制翻译器的性能。动态二进制翻译系统在翻译执行过程中需要不断的在翻译与执行引擎之间切换,产生了大量的调度开销。指令跳转是产生切换的主要原因,因此,若能有效处理指令跳转,则能大大减少翻译执行开销。SkyEye的动态二进制翻译(DBCT)中对直接跳转进行了处理,但由于直接跳转只占跳转指令的少部分,并不能有效减少SkyEye中由跳转带来的开销。只有在对跳转指令中占有比例较高的条件分支跳转进行一定优化后,才能有效减少由指令跳转产生的开销。因此,本文基于DynamoRIO系统中对分支跳转处理的方法,对DBCT中的条件分支跳转进行了相应的处理。最后的实验表明,条件分支跳转优化的运用有效改善了SkyEye的运行效率。