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

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

Info

Publication number
CN101387969B
CN101387969B CN2008102012563A CN200810201256A CN101387969B CN 101387969 B CN101387969 B CN 101387969B CN 2008102012563 A CN2008102012563 A CN 2008102012563A CN 200810201256 A CN200810201256 A CN 200810201256A CN 101387969 B CN101387969 B CN 101387969B
Authority
CN
China
Prior art keywords
virtual machine
instruction
spc
tpc
hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008102012563A
Other languages
English (en)
Other versions
CN101387969A (zh
Inventor
李庭涛
管海兵
梁阿磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN2008102012563A priority Critical patent/CN101387969B/zh
Publication of CN101387969A publication Critical patent/CN101387969A/zh
Application granted granted Critical
Publication of CN101387969B publication Critical patent/CN101387969B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

软硬件协同设计的动态二进制翻译方法 
技术领域
本发明涉及一种软硬件协同设计的动态二进制翻译方法,用于使单个处理器上支持多指令集,解决异构处理器的指令兼容问题。本发明属于进程级虚拟机、二进制翻译技术领域。 
背景技术
一种新处理器的流行离不开相应软件的支持。当前的处理器,兼容性主要通过软硬件之间指令集(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,目标代码缓存管理单元请求虚拟机协处理器的二进制翻译单元进行翻译; 
2)虚拟机协处理器的目标代码缓存管理单元在获得来自主处理器的查询请求时,查询虚拟机协处理器维护的SPC-TPC映射表;如果映射表存在SPC-TPC这样的一对映射,则将命中状态寄存器标志为Hit,并将查询的SPC所对应的TPC写入查询结果寄存器;如果映射表不存在SPC-TPC这样的一对映射,则将命中状态寄存器标志为Miss,目标代码缓存管理单元请求虚拟机协处理器的二进制翻译单元进行翻译;所述SPC-TPC这样的一对映射是指入口地址SPC到目标代码地址TPC的映射; 
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复杂的操作数寻址,主要包括立即数状态、比例变址基址状态、地址偏移状态,将操作数放置于临时寄存器中。第二个阶段主要是指令本身的语义翻译,主要包括语义译码状态,这时所有的操作数是寄存器或者是立即数。

Claims (1)

1.一种软硬件协同设计的动态二进制翻译方法,其特征在于包括如下步骤:
1)主处理器上运行的软件层加载异构的可执行程序到Loader的地址空间中,并初始化虚拟机协处理器,通过解析可执行程序,获得程序的入口地址,将该入口地址SPC写入虚拟机协处理器的查询寄存器,向虚拟机协处理器提出查询请求;
2)虚拟机协处理器的目标代码缓存管理单元在获得来自主处理器的查询请求时,查询虚拟机协处理器维护的SPC-TPC映射表;如果映射表存在SPC-TPC这样的一对映射,则将命中状态寄存器标志为Hit,并将查询的SPC所对应的TPC写入查询结果寄存器;如果映射表不存在SPC-TPC这样的一对映射,则将命中状态寄存器标志为Miss,目标代码缓存管理单元请求虚拟机协处理器的二进制翻译单元进行翻译;所述SPC-TPC这样的一对映射是指入口地址SPC到目标代码地址TPC的映射;
3)主处理器读取命中状态寄存器标志,如果命中状态寄存器标志为Miss,则等待二进制翻译单元的翻译结果;如果命中状态寄存器标志为Hit,则读取查询结果寄存器中的TPC值,跳转到TPC地址处执行对应的基本块指令;如果执行到退出指令,则完成整个程序的执行,否则将下一个基本块的指令的地址作为待查询的SPC,写入虚拟机协处理器的查询寄存器,向虚拟机协处理器提出查询请求,转步骤2)执行;
4)虚拟机协处理器的二进制翻译单元在获得翻译请求时,依次取基本块中的源指令翻译为目标指令,翻译好的指令存放到目标代码缓存中;完成指令的翻译之后,更新SPC-TPC映射表;主处理器再次向虚拟机协处理器提出查询请求;转步骤2)执行。
CN2008102012563A 2008-10-16 2008-10-16 软硬件协同设计的动态二进制翻译方法 Expired - Fee Related CN101387969B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008102012563A CN101387969B (zh) 2008-10-16 2008-10-16 软硬件协同设计的动态二进制翻译方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008102012563A CN101387969B (zh) 2008-10-16 2008-10-16 软硬件协同设计的动态二进制翻译方法

Publications (2)

Publication Number Publication Date
CN101387969A CN101387969A (zh) 2009-03-18
CN101387969B true CN101387969B (zh) 2011-04-13

Family

ID=40477401

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008102012563A Expired - Fee Related CN101387969B (zh) 2008-10-16 2008-10-16 软硬件协同设计的动态二进制翻译方法

Country Status (1)

Country Link
CN (1) CN101387969B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101546271B (zh) * 2009-04-30 2012-01-04 上海交通大学 动态二进制翻译系统中超级块的寄存器分配方法
CN101620546B (zh) * 2009-08-13 2013-03-27 上海交通大学 寄存器窗口切换在二进制翻译中的实现方法
CN101996082B (zh) 2009-08-28 2014-06-11 国际商业机器公司 协处理器系统和在本地存储器上加载应用程序的方法
CN102193788B (zh) * 2010-03-12 2016-08-03 复旦大学 基于动态二进制翻译的跨平台驱动程序复用方法
CN101847195B (zh) * 2010-06-26 2012-01-04 上海交通大学 基于Cache时间特性的防御攻击方法
CN101923492B (zh) * 2010-08-11 2013-05-01 上海交通大学 面向嵌入式异构多核上执行动态分配指令的方法
CN102087609B (zh) * 2011-02-23 2013-06-05 中国人民解放军国防科学技术大学 多处理器平台下的动态二进制翻译方法
CN106325819B (zh) * 2015-06-17 2019-08-02 华为技术有限公司 计算机指令处理方法、协处理器和系统
CN116932044A (zh) * 2022-03-31 2023-10-24 华为技术有限公司 一种指令翻译方法及其相关设备
CN116501450B (zh) * 2023-06-25 2023-10-17 中国科学院计算技术研究所 翻译控制方法、二进制翻译方法、指令执行方法及装置
CN118069222A (zh) * 2023-10-24 2024-05-24 上海芯联芯智能科技有限公司 一种指令执行方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145109A (zh) * 2007-11-01 2008-03-19 上海交通大学 利用中间指令集的二进制翻译方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101145109A (zh) * 2007-11-01 2008-03-19 上海交通大学 利用中间指令集的二进制翻译方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
包云程.构建基于动态二进制翻译技术的进程虚拟机.中国优秀硕士学位论文全文数据库.2007,第11页至第21页. *
官孝峰.基于CrossBit二进制翻译引擎的优化多线程引擎的研究与实现.中国优秀硕士学位论文全文数据库.2008,全文. *
李增祥
李增祥;管海兵;李晓勇.动态二进制翻译的优化.计算机应用与软件.2007,24(7),第12页至第14页. *
李晓勇.动态二进制翻译的优化.计算机应用与软件.2007,24(7),第12页至第14页.
管海兵

Also Published As

Publication number Publication date
CN101387969A (zh) 2009-03-18

Similar Documents

Publication Publication Date Title
CN101387969B (zh) 软硬件协同设计的动态二进制翻译方法
JP5506049B2 (ja) 部分的なエミュレーション環境におけるソース命令セットアーキテクチャ(isa)コードから、変換済みコードへの遷移
JP3820261B2 (ja) データ処理システムの外部および内部命令セット
US10318322B2 (en) Binary translator with precise exception synchronization mechanism
US6820255B2 (en) Method for fast execution of translated binary code utilizing database cache for low-level code correspondence
Ebcioğlu et al. DAISY: Dynamic compilation for 100% architectural compatibility
US10146545B2 (en) Translation address cache for a microprocessor
US20040148491A1 (en) Sideband scout thread processor
US11176055B1 (en) Managing potential faults for speculative page table access
WO2007095642A2 (en) Dynamic incremental compiler and method
JP2015530683A (ja) 異種計算システムにおけるコールド変換索引バッファミスを低減させること
CN101689123A (zh) 利用事务存储器硬件来加速虚拟化和仿真
US7168076B2 (en) Facilitating efficient join operations between a head thread and a speculative thread
KR102268601B1 (ko) 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템
WO2017020600A1 (zh) 一种微处理器存储管理方法
JP2009064217A (ja) オブジェクトを記憶・管理するシステム
WO2003085520A2 (en) Time-multiplexed speculative multi-threading to support single-threaded applications
JP2003140965A (ja) 分散共有メモリ型並列計算機および命令スケジューリング方法
KR100597413B1 (ko) 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터
Hong et al. Efficient and retargetable dynamic binary translation on multicores
US9342303B2 (en) Modified execution using context sensitive auxiliary code
CN103150196B (zh) 动态二进制翻译中代码Cache管理方法
Tsai et al. A Java processor IP design for embedded SoC
Hsu et al. A dynamic binary translation system in a client/server environment
Li et al. A hardware/software codesigned virtual machine to support multiple ISAS

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110413

Termination date: 20151016

EXPY Termination of patent right or utility model