一种异构程序执行方法、装置、计算设备及可读存储介质制造方法及图纸

技术编号:34622664 阅读:22 留言:0更新日期:2022-08-20 09:30
本发明专利技术公开了一种异构程序执行方法,适于在模拟器中执行,模拟器适于驻留在计算设备中,模拟器上安装有目标异构程序,方法包括:当模拟器启动时,获取模拟器上的目标异构程序;将目标异构程序加载到模拟器进程的内存地址空间;根据目标异构程序的启动请求创建虚拟CPU;通过虚拟CPU执行目标异构程序。本发明专利技术一并公开了相应的装置、计算设备及可读存储介质。质。质。

【技术实现步骤摘要】
一种异构程序执行方法、装置、计算设备及可读存储介质
[0001]本申请是2021年05月14日提交的专利技术专利申请的分案申请,原申请的申请号:2021105285290,专利技术名称:一种异构程序执行方法、装置、计算设备及可读存储介质。


[0002]本专利技术涉及计算机
,尤其涉及一种异构程序执行方法、装置、计算设备及可读存储介质。

技术介绍

[0003]应用程序软件成为人们应用计算机实现各种生活、工作需求的重要工具,软件资源非常丰富,但是,目前大部分软件资源都是基于X86架构实现的,而对于其他架构平台(例如:ARM、PowerPC),软件厂商并未提供其他平台的版本,软件资源并不完善。虽然应用软件通过wine实现了不同操作系统平台之间的兼容,例如,微信、QQ等常用软件都只提供了X86下的Windows版本,借助wine提供的Windows兼容层,可以在X86的linux系统上一定程度地使用这些程序,但wine并未提供CPU级别的仿真,因此通过wine也无法在非X86的平台上执行X86的程序。
[0004]在现有的技术中,Qemu的user mode能够提供异构机器码的仿真执行,但是Qemu并未提供对外的二次开发接口,无法直接使用。Unicorn通过对Qemu的改造和封装,实现了一个轻量级并支持多平台、多体系结构的CPU仿真器框架,支持JIT,通过Unicorn能够在本地模拟执行异构机器码。Unicorn翻译引擎因为本身基于Qemu2.0的版本,且开发者长期未更新,设计思想已经落后,执行性能整体不高,BUG较多,实际使用过程中效果不好。同时,Unicorn的内存管理机制使用的一整套模拟物理CPU内存内存访问机制对GVA进行地址空间管理,在每次取指令或者取数据时,都需要通过SoftMMU将GVA转换成HVA,从HVA获取指令数据,这套机制复杂而且低效。

技术实现思路

[0005]为此,本专利技术提供了一种异构程序执行方法、装置、计算设备及可读存储介质,以力图解决或者至少缓解上面存在的问题。
[0006]根据本专利技术的一个方面,提供一种异构程序执行方法,适于在模拟器中执行,模拟器适于驻留在计算设备中,模拟器上安装有目标异构程序,方法包括:当模拟器启动时,获取模拟器上的目标异构程序;将目标异构程序加载到模拟器进程的内存地址空间;根据目标异构程序的启动请求创建虚拟CPU;通过虚拟CPU执行目标异构程序。
[0007]可选的,在根据本专利技术的异构程序执行方法中,将目标异构程序加载到模拟器进程的内存地址空间包括:将目标异构程序的代码段、数据段以及依赖的库文件加载到模拟器进程的内存地址空间;记录目标异构程序的入口地址。
[0008]可选的,在根据本专利技术的异构程序执行方法中,根据目标异构程序的启动请求创建虚拟CPU包括:当接收到用户启动目标异构程序的启动请求时,创建虚拟CPU,虚拟CPU的
特征信息包括通用寄存器、PC寄存器、浮点寄存器、状态寄存器、段寄存器。
[0009]可选的,在根据本专利技术的异构程序执行方法中,计算设备为第一处理器架构,目标异构程序适于在第二处理器架构中执行,通过虚拟CPU执行目标异构程序包括:根据第二处理器架构中CPU的反汇编规则将目标异构程序的原机器码翻译成中间字节码;将中间字节码翻译成本地机器码,本地机器码适于在第一处理器架构中执行;根据目标异构程序的入口内存地址执行本地机器码。
[0010]可选的,在根据本专利技术的异构程序执行方法中,还包括:当虚拟CPU执行完目标异构程序时,返回模拟器进程对应的内存地址空间。
[0011]可选的,在根据本专利技术的异构程序执行方法中,模拟器是基于Qemu实现的。
[0012]根据本专利技术的又一个方面,提供一种异构程序执行装置,适于驻留在模拟器中,模拟器适于驻留在计算设备中,异构程序执行装置包括加载器模块、执行模块、CPU模块,其中,加载器模块,适于当模拟器启动时,获取模拟器上的目标异构程序;将目标异构程序加载到模拟器进程的内存地址空间;CPU模块,适于根据目标异构程序的启动请求创建虚拟CPU;执行模块,适于通过虚拟CPU执行目标异构程序。
[0013]可选的,在根据本专利技术的异构程序执行装置中,将目标异构程序加载到模拟器进程的内存地址空间包括:将目标异构程序的代码段、数据段以及依赖的库文件加载到模拟器进程的内存地址空间;记录目标异构程序的入口地址。
[0014]根据本专利技术的又一个方面,提供一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行如上的任一项异构程序执行方法的指令。
[0015]根据本专利技术的又一方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行如上的任一项异构程序执行方法。
[0016]根据本专利技术的异构程序执行方法,当模拟器启动时,获取模拟器上的目标异构程序,将目标异构程序直接加载到模拟器进程的内存地址空间中,当接收到目标异构程序的启动指令时,通过创建虚拟CPU直接从模拟器进程的内存地址空间中读取应用程序指令,实现了透明内存访问,可以在宿主进程的内存地址空间直接访问应用程序指令,避免了Unicorn中内存地址映射过程,降低了异构进程管理的复杂性,没有了地址映射过程,提升了异构程序运行效率和性能,也不会出现地址内存缺失的情况。
附图说明
[0017]为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
[0018]图1示出了根据本专利技术一个实施例的计算设备100的框图;
[0019]图2示出了根据本专利技术一个实施例的异构程序执行方法200的流程图;
[0020]图3示出了根据本专利技术一个实施例的异构程序执行装置300的示意图;
[0021]图4示出了根据本专利技术一个实施例的目标异构程序加载至模拟器进程地址空间的
示意图;
[0022]图5示出了根据本专利技术一个实施例的目标异构程序机器码翻译过程示意图。
具体实施方式
[0023]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0024]基于目前X86架构中丰富的应用程序,为了便于将这些应用程序软件移植到其他架构上运行,于是,一款广泛应用于Linux系统平台的模拟处理器Qemu出现了,其通过软件实现CPU操作,Qemu有两种模式,用户模式和系统模式,其中,用户模式能够提供异构程序本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种异构程序执行方法,适于在模拟器中执行,所述模拟器适于驻留在计算设备中,所述计算设备为第一处理器架构,所述模拟器上安装有目标异构程序,所述目标异构程序适于在第二处理器架构中执行,所述方法包括:当所述模拟器启动时,获取所述模拟器上的目标异构程序;将所述目标异构程序加载到所述模拟器进程的内存地址空间;根据所述目标异构程序的启动请求创建虚拟CPU;通过所述虚拟CPU执行所述目标异构程序。2.如权利要求1所述的方法,其中,所述将所述目标异构程序加载到所述模拟器进程的内存地址空间包括:将所述目标异构程序的代码段、数据段以及依赖的库文件加载到所述模拟器进程的内存地址空间;记录所述目标异构程序的入口地址。3.如权利要求1或2所述的方法,其中,所述根据所述目标异构程序的启动请求创建虚拟CPU包括:当接收到用户启动所述目标异构程序的启动请求时,创建虚拟CPU,所述虚拟CPU的特征信息包括通用寄存器、PC寄存器、浮点寄存器、状态寄存器、段寄存器。4.如权利要求1所述的方法,其中,所述通过所述虚拟CPU执行所述目标异构程序包括:根据所述第二处理器架构中CPU的反汇编规则将所述目标异构程序的原机器码翻译成中间字节码;将所述中间字节码翻译成本地机器码,所述本地机器码适于在所述第一处理器架构中执行;根据所述目标异构程序的入口内存地址执行所述本地机器码。5.如权利要求1

4中任意一项所述的方法,还包括:当所述虚拟CPU执行完所述目标...

【专利技术属性】
技术研发人员:吕果黄林
申请(专利权)人:武汉深之度科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1