[发明专利]一种实现间接转移关联软件预测的方法及装置在审
申请号: | 201611208034.5 | 申请日: | 2016-12-23 |
公开(公告)号: | CN106843812A | 公开(公告)日: | 2017-06-13 |
发明(设计)人: | 程旭;黄明凯;刘先华 | 申请(专利权)人: | 北京北大众志微系统科技有限责任公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京安信方达知识产权代理有限公司11262 | 代理人: | 韩辉峰,李丹 |
地址: | 100080 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 间接 转移 关联 软件 预测 方法 装置 | ||
技术领域
本发明涉及动态翻译技术,尤指一种动态翻译系统中实现间接转移关联软件预测的方法及装置。
背景技术
动态二进制翻译技术(dynamic translation)广泛应用于指令系统模拟、二进制插桩、动态优化、程序行为分析等领域。在多种应用场景下,性能是翻译系统需考虑的重要指标。其中,控制转移指令的处理方法是影响动态翻译系统性能的重要因素。当控制转移指令执行时,其获取到的转移目标是一个源程序计数器地址(SPC,Source Program Counter,简称为源地址),需要将其转换为相应的目标程序计数器地址(TPC,Target Program Counter,简称为目标地址),翻译系统才可正常执行。控制转移指令一般可分为条件转移指令、直接跳转指令与间接转移指令(IB,Indirect Branch)。对于转移目标固定的条件转移指令与直接跳转指令,翻译系统可使用代码块链接技术来降低开销;而间接转移指令的转移目标在运行时才可以确定,且转移目标不固定,因此每次执行时均需进行一次源地址(SPC)到目标地址(TPC)的地址转换操作。图1为现有翻译系统处理间接转移指令的流程示意图,如图1所示,由于间接转移指令在每次执行时都需根据其当前的转移目标进行地址转换,因此进行大量的地址转换操作导致了巨大的性能开销,使得间接转移指令的处理过程成为主要的系统性能开销。
动态二进制翻译系统一般会维护一个SPC-TPC的映射表,在源地址产生后,运行一个哈希(Hash)查表例程来进行地址转换,然后再跳转至相应的目标地址。但进行一次哈希查表需要10条以上指令,导致较大的开销。
软件预测法可以在一定程度上避免哈希查表带来的额外开销,即在转移目标的SPC产生后,进入一条软件预测链与预设的若干目标进行匹配,若匹配成功则直接跳转,称为预测成功。但是,软件预测法的预测准确率一般较低,从而制约了其对整体性能的提升。图2为现有软件预测的方法示意图,如图2所示,在获取到间接转移指令的转移目标的源地址后,需要进行若干次的比较-跳转的预测操作。其中,每一个比较跳转语句称为一个预测槽(Prediction Slot),所比较的目标称为预设目标,多个串行比较的预测槽称为一条“预测链”。若预测成功,则直接跳转到相应的目标代码块,如果预测失败,则按照图1所示的现有的翻译系统处理间接转移指令的方法进行处理。现有软件预测法的主要问题是预测准确率较低,直接增加软件预测链上的预测槽个数可一定程度上提升准确率,但同时增加了预测时需进行的“比较”操作的次数,导致单次预测开销上升,无法提升性能。
此外,目前还出现了一些软硬件协同的优化方案,如在CPU流水线中新增一个跳转地址查找表,或者新增一个按内容访问的相联存储器(CAM,Content-Associated Memory),但这些方案均需改动硬件或指令系统,通用性较差,无法直接在已有平台上实现。
综上所述,在现有的动态翻译系统中,间接转移指令往往占用大量的系统性能开销,现有的处理方法存在指令开销过大、预测准确率低及平台应用的通用性较差等问题,间接转移指令占用主要系统开销的问题依旧未得到有效处理。
发明内容
为了解决上述技术问题,本发明提供一种实现间接转移关联软件预测的方法及装置,能够简单、有效的降低间接转移指令对系统性能开销的占用。
为了达到上述发明目的,本发明公开了一种实现间接转移关联软件预测的方法,包括:
对每条间接转移指令进行软件预测,当软件预测失败次数大于热点指令阈值时,确定该间接转移指令为难预测的热点间接转移指令;
对所述难预测的热点间接转移指令的控制流图进行宽度遍历,获取到达该热点间接转移指令的路径;
当获取到达热点间接转移指令的路径满足预先设置的路径条数时,为到达所述热点间接转移指令的每一路径复制相应的代码副本;
为每一代码副本在预测槽中填入相应的预测目标,以形成相应的软件预测链。
进一步地,为每一代码副本在预测槽中填入相应的预测目标具体包括:为每一代码副本的热点间接转移指令,统计其转移目标,当转移目标出现的次数大于热点目标阈值时,在每一代码副本的预测槽填入相应的预测目标。
进一步地,当软件预测链形成后,该方法还包括:在软件预测失败时,进入哈希Hash查表例程。
另一方面,本申请还提供一种实现间接转移关联软件预测的装置,包括:预测判断单元、路径获取单元、代码复制单元及预测链单元;其中,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京北大众志微系统科技有限责任公司,未经北京北大众志微系统科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611208034.5/2.html,转载请声明来源钻瓜专利网。