CN101504613B - 用于受限系统的分布式动态二进制翻译方法 - Google Patents
用于受限系统的分布式动态二进制翻译方法 Download PDFInfo
- Publication number
- CN101504613B CN101504613B CN2009100474740A CN200910047474A CN101504613B CN 101504613 B CN101504613 B CN 101504613B CN 2009100474740 A CN2009100474740 A CN 2009100474740A CN 200910047474 A CN200910047474 A CN 200910047474A CN 101504613 B CN101504613 B CN 101504613B
- Authority
- CN
- China
- Prior art keywords
- client
- translation
- code
- service end
- binary
- 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
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种用于受限系统的分布式动态二进制翻译方法,对传统动态二进制翻译器做改进,将翻译器的翻译和执行模块做划分,分别安置于服务端和受限客户端,服务端完成翻译功能,客户端完成执行功能。客户端在执行异构平台代码时,向服务端发送翻译请求,服务端翻译完成后,将翻译后代码返回给客户端,由客户端执行此代码,直至遇到未翻译的代码,重新开始一轮请求,翻译,执行的过程。本发明通过划分翻译模块和执行模块,大大减轻了瘦客户端执行异构代码的负担,使动态二进制翻译同样使用于瘦客户端。本发明不受限于任何特定的硬件平台,适用于一切受限系统的分布式二进制翻译器,并能取得理想的效果。
Description
技术领域
本发明涉及一种用于受限系统的分布式的动态二进制翻译方法,具体涉及一种采用分布式架构,适用于在瘦客户端等受限系统上使用的动态二进制翻译方法。本发明属于动态二进制翻译技术领域。
背景技术
动态二进制翻译技术可以在不重新编译源代码的情况下,自动翻译异构平台的二进制代码,达到运行异构平台的二进制代码的目的。动态二进制翻译技术可以使硬件生产商在构建新系统结构时,不用更多考虑兼容之前的体系结构。同时使用动态二进制翻译技术也能更好地维护之前遗留的二进制代码,特别是那些硬件已经不再生产的平台上的二进制代码,又可以加强单个体系架构的应用范围,使单个体系结构(如Intel平台)运行多个体系结构(如MIPS,SPARC,PowerPC平台)的二进制代码。
一般动态二进制翻译器必定包括翻译模块,执行模块。翻译模块将源平台的二进制代码直接翻译到目标平台可执行代码,对于翻译复杂的源平台的二进制代码,如Intel IA32平台的二进制代码,其对应的翻译模块必定是复杂而庞大的,在进行指令翻译过程中,翻译模块会消耗比较多的计算资源以及内存资源,对于一个动态二进制翻译器是一个不小的负担。执行模块主要功能是执行经过翻译模块翻译后的目标平台可执行代码。
目前已经开发出一些商用的动态二进制翻译器,如Intel的IA32EL、Hp的Dynamo等,但所有这些动态二进制翻译器都并非针对于一个受限系统(如手机,ARM平台等计算能力、内存容量都相对比较弱的系统)。对于瘦客户端等受限系统来说,直接移植传统动态二进制翻译器会带来非常大的开销,并且效果也会非常低效。原因就是受限系统的运算能力,内存都相对较弱,而翻译器中的复杂模块,如翻译模块等在受限系统中的运行,将消耗巨大的系统资源,带来额外开销,使本来资源就有限的受限系统更难承受。
发明内容
本发明的目的在于针对现有技术的不足,提供一种用于受限系统的分布式动态二进制翻译方法,适用于处理器、内存资源都有限的受限系统,加强受限系统执行异构平台程序的能力。
为实现上述目的,本发明对传统动态二进制翻译器做改进,将翻译器的翻译和执行模块做划分,分别安置于服务端和受限客户端,服务端完成翻译功能,客户端完成执行功能。客户端在执行异构平台代码时,向服务端发送翻译请求,服务端翻译完成后,将翻译后代码返回给客户端,由客户端执行此代码,直至遇到未翻译的代码,重新开始一轮请求,翻译,执行的过程。通过这种模块划分,减轻动态二进制翻译器在受限系统的负担,加快动态二进制翻译器在受限系统运行速度。
本发明用于受限系统的分布式动态二进制翻译方法的步骤如下:
1.客户端加载异构平台的二进制代码,与服务端建立连接,完成各自初始化。
受限系统动态二进制翻译器的客户端加载异构平台的二进制代码,完成初始化,并通过网络连接与受限系统动态二进制翻译器的服务端连接,发送二进制代码和同步信息。服务端根据此二进制行代码所属指令集平台,初始化翻译器服务端对应的翻译模块,完成服务端的初始化。
2.服务端接收客户端翻译请求,翻译指定的源二进制代码块至客户端的目标代码块。
受限系统动态二进制翻译的客户端在执行一个未翻译过的基本块时,发送翻译请求至动态二进制翻译器服务端。服务端接收到客户端的翻译请求后,先在已翻译代码缓存中查找是否存在已经翻译过的代码块,如果存在,则对代码块做修改后,将代码块发送回客户端;否则开始一个翻译过程,翻译完成后将起始地址和翻译好的代码块存入服务端的已翻译代码缓存区中,并将翻译后代码块传送给客户端。
3.客户端等待服务端的回应,接收翻译后的代码块。
在服务端完成翻译前,客户端一直处于等待状态,直到服务端翻译过程完成,通知客户端后,客户端开始接收翻译后的代码块,将其存入客户端本地代码缓存区中。
4.客户端执行翻译后代码块。
客户端在接收到翻译后的代码块后,开始对其做基本块连接,保存机器运行状态,然后开始执行连接后的基本块;如果遇到未翻译的代码块,则开始新一轮的请求、翻译、执行过程。
5.程序运行结束,退出程序,客户端和服务端释放各自的内存资源等。
本发明的所涉及的方法的优点在于采用分布式架构,分离一个动态二进制翻译器的翻译模块和执行模块,翻译模块放在服务端,执行模块放在客户端,使得对系统资源有较高要求的翻译模块与受限系统分离,大大减轻了作为客户端的受限系统的负担。本发明这种分布式动态二进制翻译方法更加合适于受限系统,加强了受限系统执行异构平台程序的能力。
附图说明
图1是分布式动态二进制翻译器的框架图。
具体实施方式
为了更好的理解本发明的技术方案,以下通过具体的实施例作进一步描述。以下实施例不构成对本发明的限定,该方法适合一切受限系统分布式动态二进制翻译器的设计。
实施例以一个分布式的动态二进制翻译器DVEE为例。DVEE分为服务端和客户端两个部分,如图1所示。服务端主要负责代码的翻译,客户端负责源程序的加载,和执行翻译后的代码块。服务端的目标代码缓存区,即服务端的已翻译代码缓存区,用于存放服务端每次翻译后的代码块;客户端的目标缓存区,即客户端本地缓存区,用于接收服务端发送来的翻译后的代码块。服务端接收到客户端的翻译请求,完成翻译,并将翻译后的代码块传送给客户端,客户端在接收到翻译后的代码块后,开始对其做基本块连接,然后开始执行连接后的基本块。
服务端和客户端通过网络连接通信,通信协议用SOCKET编程接口构建于TCP/IP协议之上。通信时消息采用的数据包格式如表1所示,一共包括五个部分,消息头,消息类型,消息长度,消息内容,消息尾。
表1传输协议数据包格式
消息头 | 消息类型 | 消息长度 | 消息内容 | 消息尾 |
0xA5 | / | / | / | 0x5A |
本发明分布式的动态二进制翻译方法的具体步骤如下:
1、客户端加载异构平台的二进制代码,与服务端建立连接,完成各自初始化。受限系统动态二进制翻译器客户端加载异构平台的二进制代码,获得程序入口地址,将此地址赋值给某一全局变量SPC(源程序初始基本块入口地址),同时创建一个空的目标代码缓存区,将此缓存区的起始地址赋值给全局变量TPC(目标平台基本块入口地址)。之后客户端通过网络连接与动态二进制翻译器服务端连接,发送二进制代码和同步信息。客户端将二进制代码和同步信息(客户端所属平台,仿真寄存器组在客户端的内存地址)构建成一个初始化类型消息,将此消息发送给服务端。服务端接收到此消息后,读取消息内容,保存在服务端。服务端根据此二进制行代码所属指令集平台,初始化翻译器服务端对应的翻译模块,同时开辟一个足够大的目标代码缓存区,完成服务端的初始化。
2、服务端接收客户端翻译请求,翻译指定的源二进制代码块至客户端的目标代码块。受限系统动态二进制翻译的客户端在执行一个未翻译过的基本块时,发送翻译请求至动态二进制翻译器服务端。客户端以全局变量SPC作为关键字在本地目标代码缓存区中查找对应的翻译后的目标代码块。如果查找命中,则本地目标代码缓存区已保留翻译后的代码块,将代码块起始地址赋值给TPC,转步骤4;如果查找没有命中,则首先检查客户端翻译代码缓存区是否已经满,满的话全部将缓存区全部清空,将TPC设置为缓存区的首地址,否则将TPC设置为缓存区空闲区域起始地址。将此时的SPC和TPC构建一个翻译请求类型的消息发送个服务端。服务端接收到客户端的翻译请求后,读取SPC和TPC,先在目标代码缓存区中查找是否存在已经翻译过的代码块,查找的关键字就是SPC,如果存在,根据TPC的值对翻译过的代码块中的地址偏移指令做修改,构建翻译应答类消息,将代码块发送回客户端;否则开始一个翻译过程,从初始化时得到的源平台二进制代码中逐一取出指令,对指令解码,生成中间指令,直到遇到的指令满足基本块结束条件,如遇到跳转指令等。再将这些中间指令序列翻译成目标代码块,翻译完成后将起始地址(SPC)和翻译好的代码存入服务端的目标代码缓存区中,并构建翻译应答消息,将翻译后代码块传送给客户端,完成此次请求,转步骤3。
3、客户端等待服务端的回应,接收翻译后的代码块。当服务端完成翻译前,客户端一直处于等待状态,直到服务端翻译过程完成,通知客户端。客户端开始接收翻译后代码,将其放置在TPC所指向的目标代码缓存区中,这样在本地就保存了与SPC所指向的源平台基本块所对应的翻译后的目标平台代码块,同时将TPC的值加上目标代码块大小后的值作为缓存区空闲区起始地址,可以作为下一次翻译后代码放置位置的起始地址,转步骤4。
4、客户端执行翻译后代码块。客户端在接收到翻译后代码块后,开始对其做基本块连接(连接指将上个目标代码块末端跳转的目的地址修改为这个基本块的入口地址),保存机器运行状态,即将目标平台中通用寄存器保存到栈中,然后开始执行连接后的基本块。如果遇到未翻译的代码块,则将下次要执行的基本块的首地址赋给SPC,转步骤2,则开始新一轮的请求、翻译、执行过程。直到任务结束,转步骤5。
5、程序运行结束,退出程序,客户端和服务端释放各自的内存资源等。当程序正常结束,返回翻译器后,客户端释放本地翻译代码缓存区,向服务端发送结束类型消息,并且结束客户端进程。服务端在接收到结束消息后,释放服务端翻译代码缓存区,删除源程序二进制代码。至此一次完整的受限系统运行异构平台二进制代码过程全部完成。
Claims (1)
1.一种用于受限系统的分布式动态二进制翻译方法,其特征在于包括如下步骤:
1)受限系统动态二进制翻译器的客户端加载异构平台的二进制代码,完成初始化,并通过网络与受限系统动态二进制翻译器的服务端连接,发送二进制代码和同步信息;服务端根据此二进制代码所属指令集平台,初始化服务端对应的翻译模块,完成服务端的初始化;
2)客户端在执行一个未翻译过的基本块时,发送翻译请求至服务端;服务端接收到客户端的翻译请求后,先在已翻译代码缓存中查找是否存在已经翻译过的代码块,如果存在,则对代码块做修改后,将代码块发送回客户端;否则开始一个翻译过程,翻译完成后将起始地址和翻译后的代码块存入服务端的已翻译代码缓存区中,并将翻译后的代码块传送给客户端;
3)在服务端完成翻译前,客户端一直处于等待状态,直到服务端翻译过程完成,通知客户端后,客户端开始接收翻译后的代码块,将其存入客户端本地代码缓存区中;
4)客户端在接收到翻译后的代码块后,开始对其做基本块连接,保存机器运行状态,然后开始执行连接后的基本块;如果遇到未翻译的代码块,则开始新一轮的请求、翻译、执行过程;
5)程序运行结束,退出程序,客户端和服务端释放各自的内存资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100474740A CN101504613B (zh) | 2009-03-12 | 2009-03-12 | 用于受限系统的分布式动态二进制翻译方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100474740A CN101504613B (zh) | 2009-03-12 | 2009-03-12 | 用于受限系统的分布式动态二进制翻译方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101504613A CN101504613A (zh) | 2009-08-12 |
CN101504613B true CN101504613B (zh) | 2011-09-28 |
Family
ID=40976868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100474740A Expired - Fee Related CN101504613B (zh) | 2009-03-12 | 2009-03-12 | 用于受限系统的分布式动态二进制翻译方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101504613B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193788B (zh) * | 2010-03-12 | 2016-08-03 | 复旦大学 | 基于动态二进制翻译的跨平台驱动程序复用方法 |
CN101937355A (zh) * | 2010-09-03 | 2011-01-05 | 复旦大学 | 基于动态二进制翻译的异构程序交互方法 |
CN103838614B (zh) | 2014-02-19 | 2017-12-22 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN116501450B (zh) * | 2023-06-25 | 2023-10-17 | 中国科学院计算技术研究所 | 翻译控制方法、二进制翻译方法、指令执行方法及装置 |
-
2009
- 2009-03-12 CN CN2009100474740A patent/CN101504613B/zh not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
胡坤等."Crossbit中的代码Cache管理".《计算机科学》.2007,第34卷(第9A期),281-283. * |
Also Published As
Publication number | Publication date |
---|---|
CN101504613A (zh) | 2009-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1890640B (zh) | 高效的系统管理同步方法和系统 | |
CN104731569B (zh) | 一种数据处理方法及相关设备 | |
CN102591726B (zh) | 一种多进程通信方法 | |
CN102880494B (zh) | 一种用于微小卫星系统的局部代码更新方法及其系统 | |
CN1494690A (zh) | 用于宽带网络的计算机体系结构和软件单元 | |
CN1496517A (zh) | 用于宽带网络的计算机体系结构的数据同步系统和方法 | |
CN101504613B (zh) | 用于受限系统的分布式动态二进制翻译方法 | |
CN103793255B (zh) | 可配置的多主模式多os内核实时操作系统架构的启动方法 | |
CN101609406A (zh) | 一种多bios映像并行初始化的方法 | |
CN104683472A (zh) | 一种支持大数据量的数据传输方法 | |
CN103209119A (zh) | 一种低功耗嵌入式云智能网关 | |
CN104361296A (zh) | 一种并行的大容量访问控制列表的查找方法 | |
CN107209663A (zh) | 数据格式转换装置、缓冲芯片及方法 | |
CN114327477A (zh) | 智能合约执行方法、装置、电子装置和存储介质 | |
US11784946B2 (en) | Method for improving data flow and access for a neural network processor | |
CN115202573A (zh) | 数据存储系统以及方法 | |
CN102427420B (zh) | 基于图模式匹配的虚拟网络映射方法及装置 | |
CN106445472A (zh) | 一种字符操作加速方法、装置、芯片、处理器 | |
CN103916316A (zh) | 网络数据包线速捕获方法 | |
CN112925586A (zh) | 一种小程序路由方法、装置、计算机设备及存储介质 | |
CN109743350B (zh) | 一种科学计算应用影像区交换通信模式的卸载实现方法 | |
CN116680209A (zh) | 基于wasm的多智能合约实例管理方法 | |
CN111653317A (zh) | 基因比对加速装置、方法及系统 | |
CN113691466A (zh) | 一种数据的传输方法、智能网卡、计算设备及存储介质 | |
CN108075989B (zh) | 一种基于可扩展协议的负载均衡网络中间件实现方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110928 Termination date: 20180312 |