【技术实现步骤摘要】
一种二进制翻译的寄存器映射方法
[0001]本专利技术涉及一种二进制翻译的寄存器映射方法,属于计算机
技术介绍
[0002]动态二进制翻译旨在将源架构指令翻译为目标架构指令,以达到二进制软件跨架构兼容运行的目的。在动态翻译过程中,同时需要将源架构资源,如内存、寄存器等,映射到目标架构。由于源架构与目标架构寄存器数量、约定存在差异,翻译系统设计虚拟寄存器实现源寄存器功能。
[0003]QEMU作为最为流行的二进制翻译器,其基于转移控制指令将源ISA应用程序划分为基本块,采用边翻译边执行的及时翻译策略。为兼顾多平台处理器兼容运行,采用一段虚拟内存单元作为虚拟寄存器,实现源架构寄存器功能,并通过一个数据结构维护虚拟寄存器状态。
[0004]在每个基本块的翻译过程中,QEMU为采用虚拟寄存器翻译源汇编指令语义,按需求分配目标平台寄存器作为中间寄存器,将源汇编指令中对寄存器的访问翻译为,对目标平台虚拟寄存器,即虚拟内存单元的访问。由此,该内存模拟寄存器的方法,将源寄存器访问指令,翻译为了内存访问指令。该方法虽具有较强可移植性,但现代存储器结构对内存访问要比对寄存器访问慢得多,基于内存模拟寄存器会引入高昂的访存代价,影响程序整体性能。
技术实现思路
[0005]本专利技术的目的在于克服现有技术中的不足,提供一种二进制翻译的寄存器映射方法,解决基于内存模拟寄存器会引入高昂的访存代价,影响程序整体性能的技术问题。
[0006]为达到上述目的,本专利技术是采用下述技术方案实现的: />[0007]第一方面,本专利技术提供了一种二进制翻译的寄存器映射方法,包括:
[0008]获取目标平台中预设数量n的约定寄存器作为专用寄存器;
[0009]获取源平台中通用寄存器的使用频率,将通用寄存器按使用频率降序排列;
[0010]将各专用寄存器与前n个通用寄存器一一映射。
[0011]可选的,所述目标平台采用申威平台,所述源平台采样x86平台。
[0012]可选的,所述约定寄存器为callee saved属性的寄存器。
[0013]第二方面,本专利技术提供了一种二进制翻译的寄存器映射装置,所述装置包括:
[0014]寄存器选取模块,用于获取目标平台中预设数量n的约定寄存器作为专用寄存器;
[0015]寄存器排序模块,用于获取源平台中通用寄存器的使用频率,将通用寄存器按使用频率降序排列;
[0016]寄存器映射模块,用于将各专用寄存器与前n个通用寄存器一一映射。
[0017]第三方面,本专利技术提供了一种二进制翻译的寄存器映射装置,包括处理器及存储介质;
[0018]所述存储介质用于存储指令;
[0019]所述处理器用于根据所述指令进行操作以执行根据上述方法的步骤。
[0020]第四方面,本专利技术提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
[0021]与现有技术相比,本专利技术所达到的有益效果:
[0022]本专利技术提供的一种二进制翻译的寄存器映射方法,充分分析了源平台与目标平台的寄存器数量和约定的特点,从目标平台中选定部分约定寄存器作为专用寄存器,与源平台等量通用寄存器实现直接映射,将内存访问操作转化为寄存器访问操作,有效提高了二进制翻译的总体性能,提高了翻译生成代码的质量。
附图说明
[0023]图1是本专利技术实施例一提供的一种二进制翻译的寄存器映射方法的流程图;
[0024]图2是本专利技术实施例一提供的QEMU寄存器映射优化前后上下文切换示意图。
具体实施方式
[0025]下面结合附图对本专利技术作进一步描述。以下实施例仅用于更加清楚地说明本专利技术的技术方案,而不能以此来限制本专利技术的保护范围。
[0026]实施例一:
[0027]如图1所示,本专利技术实施例提供了一种二进制翻译的寄存器映射方法,包括以下步骤:
[0028]1、获取目标平台中预设数量n的约定寄存器作为专用寄存器;
[0029]2、获取源平台中通用寄存器的使用频率,将通用寄存器按使用频率降序排列;
[0030]3、将各专用寄存器与前n个通用寄存器一一映射。
[0031]在本实施例中,目标平台采用申威平台,源平台采样x86平台;选择x86平台的4个使用频率高的通用寄存器RAX、RBX、RCX、RDX与申威平台的callee saved属性的寄存器R10、R11、R12、R13一一映射。
[0032]如图2所示,由于申威平台编译器的寄存器分配规则的修改,编译生成的翻译器不再调用R10、R11、R12、R13,这些寄存器仅用于取代涉及原虚拟寄存器的操作。又由于这些寄存器具有callee saved属性,因此翻译线索和执行线索进行切换的上下文部分,需将涉及R10、R11、R12、R13的访问操作删除,以避免影响翻译效果。
[0033](1)、QEMU原本采用内存模拟寄存器的方法,将源平台的通用寄存器映射到虚拟寄存器,在翻译器后端分配目标平台的物理寄存器,作为中间寄存器,更新虚拟寄存器中数据。虚拟寄存器是一片连续的内存区域。
[0034]此映射方案,具体表现为通过一个CPUArchState结构体类型的全局变量env来保存该段内存区域的首地址,然后用env首地址加偏移量访问到对应的虚拟寄存器。申威平台使用TCG_AREG0(即$r9)保存env首地址,通过$r9加偏移量访问到虚拟寄存器env
‑
>regs。如RAX对应的虚拟寄存器为env
‑
>regs[R_EAX],即0($r9);RDX对应的虚拟寄存器为env
‑
>regs[R_EDX],即16($r9)。以x86平台的mov指令为例,如表1所示:
[0035]表1:mov指令翻译过程
[0036][0037]x86汇编指令:
[0038]mov%rdx,%rax
[0039]该指令的语义为,将寄存器RDX中数据传输到RAX中。QEMU为在申威平台采用申威主机资源实现这一汇编指令的语义,设计虚拟寄存器env
‑
>regs[R_EAX],env
‑
>regs[R_EDX]实现x86寄存器RAX、RDX的功能,将该指令语义翻译为等价语义:
[0040]TCG_mov env
‑
>regs[R_EDX],env
‑
>regs[R_EAX],
[0041]即TCG_mov 16($r9),0($r9)
[0042]由于申威架构无法直接实现两个内存单元之间的数据传输。因此,QEMU通过TCG(动态二进制翻译)前端翻译,生成TCG中间码,如表1所示,增加中间变量tmp0。在TCG后端翻译中,从可分配寄存器列表中分配申威寄存本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种二进制翻译的寄存器映射方法,其特征在于,包括:获取目标平台中预设数量n的约定寄存器作为专用寄存器;获取源平台中通用寄存器的使用频率,将通用寄存器按使用频率降序排列;将各专用寄存器与前n个通用寄存器一一映射。2.根据权利要求1所述的一种二进制翻译的寄存器映射方法,其特征在于,所述目标平台采用申威平台,所述源平台采样x86平台。3.根据权利要求1所述的一种二进制翻译的寄存器映射方法,其特征在于,所述约定寄存器为callee saved属性的寄存器。4.一种二进制翻译的寄存器映射装置,其特征在于,所述装置包括:寄存器选取模块,用于获取目标平台...
【专利技术属性】
技术研发人员:罗巧玲,林媛,谢汶兵,费扬,高清,
申请(专利权)人:无锡先进技术研究院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。