论文部分内容阅读
二进制翻译技术指将运行在源指令系统上的二进制程序翻译为可运行在目标指令系统上的二进制程序的技术。该技术在发展初期主要被用于实现不同指令系统二进制程序的兼容,进而被广泛用于程序行为分析、动态优化、异构多核计算等领域,成为构建高性能软件系统的重要基础技术。 本文针对二进制翻译技术的应用领域及优化技术进行了总结,发现对间接转移指令的处理开销是二进制翻译系统性能损失的主要原因。在二进制翻译系统中,控制转移指令获取到的转移目标为源二进制程序计数器(SourcebinaryProgramCounter,SPC)地址,必须将其转换为翻译后的目标代码程序计数器(TargetProgramCounter,TPC)地址才可正常执行。间接转移指令的转移目标在运行时才可确定,且转移目标不固定,因此每次执行时均需进行SPC至TPC的地址转换操作,导致巨大的性能开销。 本文所做研究致力于改进二进制翻译系统的性能,首先通过结合并改进现有技术,设计实现了一套称为UniTrans的二进制翻译系统,进而针对翻译系统中的间接转移处理过程提出4种优化技术,可在不同场景下降低间接转移指令的处理开销。主要研究内容与创新点可概括如下: (1)提出一种基于SPC索引的重定向表的二进制翻译系统间接转移指令优化技术(SPc-indexedIndirectbranchREdirecting,SPIRE)。SPIRE技术可通过复用源二进制文件代码空间构建一个间接转移重定向表。在处理间接转移指令时,无需进行地址转换,可直接跳转至SPC地址,由预先放置在SPC地址处的重定向表表项将控制流重定向至相应的TPC地址处。SPIRE技术仅需2-6条指令即可处理1次间接转移指令的执行。实验数据表明,与哈希查找技术与软件预测技术相比,SPIRE技术分别可改进系统性能13.7%与6.4%。 (2)提出一种源程序结构制导的基于直接TPC表的二进制翻译系统间接转移指令优化技术(DirectTPCTable,DTT)。通过深入分析间接转移的处理过程及转移目标特征,本文发现大多数间接转移指令的转移目标在指令运行前便以某种表的形式存储在内存中,称为“目标地址表”。DTT技术可以在程序的运行过程中挖掘出间接转移指令对应的目标地址表,并将其转换为相应的TPC表。翻译后的间接转移指令可通过复用源指令的目标选择规则,从TPC表中直接获取到转移目标的TPC值,无需每次执行时均执行地址转换。实验数据表明,与哈希查找技术与软件预测技术相比,DTT技术分别可改进系统性能16.6%与9.1%。 (3)提出一种面向二进制翻译系统中间接转移指令的低开销关联软件预测技术(LowOverheadCorrelatedSoftwarePrediction,LOCSP)。LOCSP技术通过基于路径历史的关联预测技术来改进软件预测的准确率,从而改进系统性能。该技术通过代码复制策略,使处于不同转移场景的间接转移指令进入到不同的代码副本,利用静态路径信息表达了关联预测所需的动态路径历史信息,在不增加动态指令数目的前提下实现了关联软件预测。实验数据表明,LOCSP技术可将软件预测技术的预测准确率从58.3%提升至86.2%。与哈希查找技术与软件预测技术相比,LOCSP技术分别可改进系统性能12.4%与5.2%。 (4)提出一种基于转移目标阶段更新策略的高性能软件预测技术(SoftwarePredictionwithTargetUpdating,SPTU)。由于软件预测的目标更新过程开销较大,难以频繁执行,导致不活跃的预测目标不能被及时换出,影响预测准确率。SPTU技术分析了转移目标的阶段特性,并基于此特性提出一种粗粒度的目标更新策略,仅在转移目标阶段发生变化时触发目标更新操作。在显著提高软件预测的预测准确率的同时,通过降低目标更新频率减少了平均更新开销。SPTU可将软件预测技术的预测准确率从58.3%提升至84.2%,实验数据表明,与哈希查找技术与软件预测技术相比,SPTU技术分别可改进系统性能12.8%与5.6%。SPTU技术还可与LOCSP技术相结合,获取更高的预测准确率与性能改进。 以上4种二进制翻译系统中的间接转移指令处理技术互为补充,本文针对不同场景下的组合优化策略进行了讨论,从而获取更好的性能改进。实验数据表明,与哈希查找法相比,最佳的优化策略可改进系统性能21.6%。基于上述技术,本文实现了一个高性能二进制翻译系统,为未来工作中的动态优化、异构多核计算等研究提供了基础平台。本文提出的优化技术均无需修改硬件设计,可广泛用于其他已有的二进制翻译系统。