首页> 中国专利> 软硬件协同设计的动态二进制翻译方法

软硬件协同设计的动态二进制翻译方法

摘要

本发明涉及一种软硬件协同设计的动态二进制翻译方法,在硬件层面实现处理器芯片的虚拟机协处理器,包括二进制翻译器及TCache管理器等单元,Tcache的管理和查找由硬件实现,以指令的形式快速查找;二进制翻译单元由硬件实现,使得执行目标指令的主处理器不必切换去做翻译,并且启动时间和Misss时间也得到很好的缓解。软件部分包括异构可执行程序的加载、目标指令的执行、热代码的优化等。本发明通过软件硬件的紧密耦合有效控制整个虚拟机和原有系统之间的共存问题,达到内在的并行性。在单个处理器上支持多指令集,解决异构处理器的指令兼容问题,并较传统的纯软件的虚拟机提高性能和透明性,使虚拟机达到接近于本地执行速度。

著录项

  • 公开/公告号CN101387969A

    专利类型发明专利

  • 公开/公告日2009-03-18

    原文格式PDF

  • 申请/专利权人 上海交通大学;

    申请/专利号CN200810201256.3

  • 发明设计人 李庭涛;管海兵;梁阿磊;

    申请日2008-10-16

  • 分类号G06F9/45;G06F9/455;

  • 代理机构上海交达专利事务所;

  • 代理人毛翠莹

  • 地址 200240 上海市闵行区东川路800号

  • 入库时间 2023-12-17 21:36:28

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-11-30

    未缴年费专利权终止 IPC(主分类):G06F9/45 授权公告日:20110413 终止日期:20151016 申请日:20081016

    专利权的终止

  • 2011-04-13

    授权

    授权

  • 2009-05-13

    实质审查的生效

    实质审查的生效

  • 2009-03-18

    公开

    公开

说明书

技术领域

本发明涉及一种软硬件协同设计的动态二进制翻译方法,用于使单个处理器上支持多指令集,解决异构处理器的指令兼容问题。本发明属于进程级虚拟机、二进制翻译技术领域。

背景技术

一种新处理器的流行离不开相应软件的支持。当前的处理器,兼容性主要通过软硬件之间指令集(ISA)接口层来保证。然而,这种方法导致软硬件交互中的低效率。从硬件的角度来看,处理器设计者被迫要适应最广泛使用的ISA,而不管其是否低效。否则,就要冒险因为软件兼容问题而被市场拒绝;从软件的角度看,软件开发商只愿意为用户数最多、最流行的机器开发软件,因为把代码移植到新机器上既耗时又费力。上述因素实际上限制了体系结构的创新。如MIPS处理器,由于不和目前最流行的指令集x86兼容,用户可用的软件就较少。另一方面,直接在硬件层面实现兼容指令集,将面临专利权壁垒,需要相应公司(Intel和AMD)的授权。

动态二进制翻译技术实现的进程级虚拟机使得不同处理器之间的二进制程序可以很容易地相互兼容,扩大了硬件、软件的使用范围,有助于打破处理器和支持软件之间互相制约而影响创新的局面。目前该领域内已经开发出一些商用的二进制翻译系统,如Intel的IA32EL、HP的Dynamo、DEC公司的FX!32,以及本项目组自主开发的CrossBit等。但这些系统都基于纯软件实现,相比源机器执行性能下降明显,不能达到“近本地”执行的性能,特别是一些计算密集型、实时性要求比较高的程序,对这些用户来说是无法接受的。尽管存在一系列的优化措施(如:QEMU),其性能仍然比本地执行慢四倍至十几倍。

在硬件支持的虚拟机方面,研究的还不多,起步较晚。Intel的VT技术针对的是VMware、Xen等系统级虚拟机。Transmeta的Crusoe和IBM公司的Daisy将软硬件协同设计的虚拟机应用于新型处理器的设计。Kenneth B.Kent对软硬件协同设计的java虚拟机做了研究,通过在PCI总线上添加FPGA实现的协处理器来提高java虚拟机的性能,并对不同软硬件划分的java虚拟机模型的性能进行了比较和分析。美国Northwestern University的Gaurav Mittal研究了将DSP的二进制代码直接转化为FPGA实现的面向专用程序的硬件,利用FPGA内在的并行性,使程序性能提高2-3倍。

上述是目前硬件支持的虚拟化的典型案例,但他们也有些不同。Intel和AMD的硬件支持虚拟化技术针对的是Vmware、Xen的系统级虚拟机,Transmeta的Crusoe、IBM公司的Daisy以及James E.Smith教授的研究的是将软硬件协同设计的虚拟机用于新型处理器的设计,Kenneth B.Kent针对的却是面向高级语言的虚拟机,并不适合通用处理器指令集,Gaurav Mittal将二进制代码直接综合生成底层的硬件,综合生成硬件开销较大,而且不具有动态特性。

发明内容

本发明的目的在于针对现有纯软件的进程级虚拟机性能和实时性的不足,提供一种软硬件协同设计的动态二进制翻译方法,提高进程级虚拟机的性能和实时性。

为实现上述目的,本发明基于自主开发的进程级虚拟机CrossBit,采用软硬件协同设计方法,在硬件层面实现处理器芯片的虚拟机协处理器(包括二进制翻译器以及TCache管理器等部件单元),通过软件和硬件的紧密耦合有效控制整个虚拟机和原有系统之间的共存问题,达到内在的并行性。在单个处理器上支持多指令集,解决异构处理器的指令兼容问题,并较传统的纯软件的虚拟机提高性能和透明性,使虚拟机达到接近于本地执行速度,给用户提供可以接受的性能。

本发明采用软硬件协同设计的动态二进制翻译方法具体步骤如下:

1)主处理器上运行的软件层加载异构的可执行程序到Loader的地址空间中,并初始化虚拟机协处理器,通过解析可执行程序,获得程序的入口地址,将该入口地址写入虚拟机协处理器的查询寄存器,向虚拟机协处理器提出查询请求;

2)虚拟机协处理器的目标代码缓存管理单元在获得来自主处理器的查询请求时,查询虚拟机协处理器维护的SPC-TPC映射表;如果映射表存在SPC-TPC这样的一对映射,则将命中状态寄存器标志为Hit,并将查询的SPC所对应的TPC写入查询结果寄存器;如果映射表不存在SPC-TPC这样的一对映射,则将命中状态寄存器标志为Miss,目标代码缓存管理单元请求虚拟机协处理器的二进制翻译单元进行翻译;

3)主处理器读取命中状态寄存器标志,如果命中状态寄存器标志为Miss,则等待二进制翻译单元的翻译结果;如果命中状态寄存器标志为Hit,则读取查询结果寄存器中的TPC值,跳转到TPC地址处执行对应的基本块指令;如果执行到退出指令,则完成整个程序的执行,否则将下一个基本块的指令的地址作为待查询的SPC,写入虚拟机协处理器的查询寄存器,向虚拟机协处理器提出查询请求,转步骤2)执行;

4)虚拟机协处理器的二进制翻译单元在获得翻译请求时,依次取基本块中的源指令翻译为目标指令,翻译好的指令存放到目标代码缓存中;完成指令的翻译之后,更新SPC-TPC表;主处理器再次向虚拟机协处理器提出查询请求;转步骤2)执行。

本发明这种采用软硬件协同设计的虚拟机设计方法中:

1)软件部分主要完成复杂和灵活性比较强的工作,具体包括异构可执行程序的加载,目标指令的执行,虚拟机协处理器的驱动程序,热代码的优化。

2)Tcache的管理和查找由硬件实现,以指令的形式实现查找操作,这样将lookup time减少到10条指令左右的时间。SPC到TPC的映射类似于虚拟地址到物理地址的映射,采用硬件实现大大减少lookup时间。在查找的过程中也可以收集执行信息,以利于将来profiling优化程序中的热路径。

3)二进制翻译单元独立出来由硬件来实现,这样很好的解决了Context switchtime和Translation time,这样使得执行目标指令的主处理器不必切换去做翻译,并且启动时间和Misss时间也得到很好的缓解。独立的翻译单元引入超前翻译机制后,Tcache miss率将降低明显。

这种软硬件协同设计的进程级虚拟机,不仅仅是硬件取代软件的瓶颈部分,而是从构架上对原有的功能做合理的软硬件功能划分,达到内在的并行性。本发明的意义体现为提出了一套虚拟机设计的新方法(软硬件协同设计)。同时,鉴于国外公司对于传统处理器指令集的专利权限制,自主研发的新型处理器缺少应用软件的支持,本发明的研究成果也为新型处理器兼容传统指令集提供了一种新的理论和方法。

附图说明

图1是系统的总体结构。

图2是硬件实现的SPC到TPC查找结构图。

图3是基本块间的执行流程图。

图4是翻译单元状态转换图。

具体实施方式

为更好地理解本发明的技术方案,以下通过具体的实施例作进一步描述。以下实施例不构成对本发明的限定。

本发明选用x86作为具体实施方式的源指令平台,PowerPC作为目标平台,系统的总体结构分为三部分如图1所示:软件层包括x86的可执行文件的加载器和虚拟机协处理器驱动程序以及Linux操作系统,硬件部分包括PowerPC处理器、内存和虚拟机协处理器。其中虚拟机协处理器主要由两部分组成:二进制翻译器和Tcache管理器。

图1是系统的总体结构,如图1所示,系统的软硬件协同设计的动态二进制翻译方法具体步骤如下:

1)主处理器上运行的软件层加载异构的可执行程序到加载器Loader的地址空间中,主要工作包括elf各个段的提取,并映射代码段和数据段到加载器进程地址空间。由于x86是小端,而PowerPC是大端,还要涉及大小端的变换和处理。加载成功后,源机器程序的数据以及运行时所需要的栈和堆空间将位于Loader进程地址空间的适当位置。通过解析可执行程序,获得程序的入口地址。初始化虚拟机协处理器,将异构可执行程序的入口地址写入虚拟机协处理器的查询寄存器,向虚拟机协处理器提出查询请求。

2)虚拟机协处理器的目标代码缓存管理单元在获得来自主处理器的查询请求时,查询虚拟机协处理器维护的SPC-TPC映射表。如图2所示,首先以SPC做散列查找该SPC是否存在于映射表中,如果SPC存在,则表明该SPC对应的目标指令存在于目标缓存代码中,可以直接执行目标代码缓存中的指令,则将命中状态寄存器标志为Hit,并将查询的SPC所对应的TPC写入查询结果寄存器;如果映射表不存在SPC-TPC这样的一对映射,则将命中状态寄存器标志为Miss,目标代码缓存管理单元请求虚拟机协处理器的二进制翻译单元进行翻译。

Tcache查找和管理对性能影响很大,而软件实现的Tcache查找和管理算法较慢。本发明的Tcache管理和查找由硬件实现,以指令的形式实现查找操作,这样将lookup time减少到10条指令左右的时间。对于SPC到TPC的映射,本发明采用类似于硬件TLB的方法(SPC到TPC的映射类似于虚拟地址到物理地址的映射),采用硬件实现大大减少lookup时间,实现快速查找。在查找的过程中也可以收集执行信息,以利于将来profiling优化程序中的热路径。对于Tache的管理算法,采用易于用硬件实现的简单高效的FIFO策略。

3)基本块的执行流程如图3所示。主处理器读取命中状态寄存器标志,如果命中状态寄存器标志为Miss,则等待二进制翻译单元的翻译结果;如果命中状态寄存器标志为Hit,则读取查询结果寄存器中的TPC值,跳转到TPC地址处执行对应的基本块指令;如果执行到退出指令,则完成整个程序的执行,否则将下一个基本块的指令的地址作为待查询的SPC,写入虚拟机协处理器的查询寄存器,向虚拟机协处理器提出查询请求,转步骤2)执行。

在软件层,主处理器以指令的形式查找映射表。这样lookup time的开销将非常小。查找过程如下:先将SPC写入查找寄存器,然后在此循环等待,直到命中为止。在等待的过程中,Tcache单元以很少的cycle完成SPC—TPC查找,命中则hit_miss_register为hit标志,不命中则通知翻译单元翻译,翻译完成后,hit_miss_register将变为hit,这时PowerPC就可以跳转到TPC处执行了。这个过程可以用如下的伪代码表示。

                write SPC,look_up_register

loop_here:     BRNZ   loop_here,hit_miss_register

                JMP   TPC_register

4)虚拟机协处理器的二进制翻译单元在获得翻译请求时,依次取基本块中的源指令翻译为目标指令,翻译好的指令存放到目标代码缓存中;完成指令的翻译之后,更新SPC-TPC表;主处理器再次向虚拟机协处理器提出查询请求;转步骤2)执行。

对于具体实施中的x86到PowerPC的翻译,为使结构清晰,易于综合,二进制翻译单元采用状态机的设计。总体状态转换图如图4所示(个别状态会被拆分为几个小状态)。

等待状态:系统Reset后或者一个基本块翻译结束后进入的状态,根据翻译请求标志判断是否进入开始翻译基本块阶段。

开始翻译状态:判断指令是否存在前缀,是单字节操作码指令还是双字节操作码指令。

1字节操作码状态:单字节操作码指令根据指令码可能进入语义译码状态(如操作数都是寄存器的指令)、立即数状态、寻址方式状态。

2字节操作码状态:和1字节操作码的状态转换类似。

立即数状态:对于存在立即数的指令,需要生成PowerPC指令以装载立即数进临时寄存器。

寻址方式状态:根据寻址方式字段判断是否是寄存器方式,是否带比例变址基址(SIB),是否有立即数进入语义译码状态、比例变址基址状态、立即数状态。

比例变址基址状态:比例变址基址域的地址计算。

地址偏移状态:带偏移的地址处理。

语义译码状态:这时所有的操作数在寄存器中或者是立即数。根据操作码语义进行译码生成PowerPC指令。

基本块结束状态:一个基本块的结束,主要进行基本块在Tcache中存放地址的计算,更新TPC映射表,下一个基本块的地址等。

开始下一条指令翻译状态:一条指令翻译完成后,转开始翻译状态。

总的来说,指令翻译分为两个阶段:寻址操作数翻译阶段和语义翻译阶段。第一个阶段主要完成x86复杂的操作数寻址,主要包括立即数状态、比例变址基址状态、地址偏移状态,将操作数放置于临时寄存器中。第二个阶段主要是指令本身的语义翻译,主要包括语义译码状态,这时所有的操作数是寄存器或者是立即数。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号