[发明专利]一种面向虚拟化的基于规则学习的二进制翻译方法在审
申请号: | 202010625228.5 | 申请日: | 2020-07-01 |
公开(公告)号: | CN113885883A | 公开(公告)日: | 2022-01-04 |
发明(设计)人: | 张为华;梁龙飞;蒋金虎 | 申请(专利权)人: | 复旦大学;上海新氦类脑智能科技有限公司 |
主分类号: | G06F8/52 | 分类号: | G06F8/52;G06F40/16 |
代理公司: | 上海德昭知识产权代理有限公司 31204 | 代理人: | 郁旦蓉 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 虚拟 基于 规则 学习 二进制 翻译 方法 | ||
本发明提供一种一种面向虚拟化的基于规则学习的二进制翻译方法。本发明属于系统虚拟化领域,具体通过对翻译学习模型完成基于待翻译代码和目标代码的预先翻译训练,进一步地,可以用于自动获取翻译规则、加速动态二进制翻译系统速度。本发明提出一种面向虚拟化的基于规则学习的二进制翻译方法。通过自动学习过程为翻译规则添加约束条件的,并在动态翻译过程中通过轻量级的验证保证有约束条件的翻译方法正确使用。本发明相较于传统的动态二进制翻译工具减轻了开发人员的工作负担,并有效的提高了性能。同时相较于原始的基于学习的动态二进制翻译方法提高了学习的效率和实际翻译的性能。
技术领域
本发明属于系统虚拟化领域,具体涉及到一种面向虚拟化的基于规则学习的二进制翻译方法。
背景技术
动态二进制翻译技术是系统虚拟化中重要的技术,是一种即时地将源指令集架构的二进制代码翻译成目标指令集架构的二进制代码的方法,可以不需要任何的转换即可直接将源指令集架构的编译生成的二进制代码直接地运行在另外一种指令集架构上。
对于一个二进制翻译系统,一个重要的指标就是翻译生成的目标二进制码的执行效率,在跨平台虚拟化中尤为关键,通过二进制翻译,例如可以在x86指令机构平台上虚拟出ARM指令架构虚拟机运行ARM应用。然而常见的二进制翻译系统通过开发人员手动编写的方式构建翻译规则,然而,由于现代指令集架构设计的复杂性和不透明性,通过开发人员手动构建高质量的翻译规则是极大的挑战,手动构建翻译规则和中间表示的翻译方法会带来很多额外的执行开销,从而导致目前的大部分二进制翻译系统执行效率极低,额外开销很大。
为了提高翻译规则的质量,同时减少手动编写翻译规则带来的大量的编程工作,Wenwen Wang等人提出了一种新型的通过自动学习的方式生成翻译规则的二进制翻译系统。该二进制翻译系统首先利用源指令集架构和目标指令集架构的编译器分别对一段源码进行优化编译,然后利用在两种架构上编译生成的二进制代码之间建立对应关系来获取候选的翻译规则,最后对候选的翻译规则的正确性进行验证,从而实现自动地构建出正确的翻译规则。然而,原有的学习过程的正确性验证环节非常严格,当且仅当源二进制码和目标二进制码所有指令严格一一对应时,正确性验证才能通过,该条翻译规则才被认为是一条合法的翻译规则。表面上看,这种严格的等价验证是非常必要且有效的。然而,这种严格的等价关系和严格的等价验证过程在一些情况下是一种过度的要求,会导致很多高质量的翻译规则因为无法通过严格的等价验证从而在验证过程中被筛掉。
发明内容
为解决上述问题,提供一种一种面向虚拟化的基于规则学习的二进制翻译方法,本发明采用了如下技术方案:数据准备步骤,获取需要翻译的多行二进制的待翻译代码;代码翻译步骤,将待翻译代码输入到预先完成翻译训练的翻译学习模型,该翻译学习模型通过最终翻译规则获得与待翻译代码对应的目标代码;其中,对翻译学习模型进行的翻译训练的具体步骤包括:构建训练用数据集步骤,翻译学习模型将基于同一段多行源代码且由两种不同编译方式对该源代码分别编译获得的训练用待翻译代码和训练用目标代码作为训练用数据集;构建范围步骤,基于预定的源代码行数规则将多行源代码依序分为多个部分,并基于每个部分中的源代码与训练用待翻译代码和训练用目标代码的对应关系将训练用数据集划分为相应的多个待处理范围;当前状态获取步骤,将多个待处理范围中的第一个待处理范围作为当前范围,以及对当前范围内的二进制代码通过二进制指令解析获取当前翻译规则;中间状态设定步骤,将当前范围设定为中间范围,并将当前规则设定为中间规则;状态更新步骤,依序从多个待处理范围中获得中间范围后的一个待处理范围作为新的当前范围,并在新的当前范围内的二进制代码通过二进制指令解析获取新的当前翻译规则;规则判断步骤,进入中间状态获取步骤直至当前翻译规则与暂存翻译规则的相似度达到预设的预值;翻译规则执行步骤,将当前规则作为翻译规则,并运用翻译规则对数据集中的训练用待翻译代码进行逐行翻译得到待验证目标代码;训练完成判断步骤,判断每一行待验证目标代码与对应的训练用目标代码完全一致,则将翻译规则作为翻译学习模型的最终翻译规则,并将该翻译学习模型作为完成预设的翻译学习模型输出。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学;上海新氦类脑智能科技有限公司,未经复旦大学;上海新氦类脑智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010625228.5/2.html,转载请声明来源钻瓜专利网。