CN104246695A - 嵌套仿真和动态链接环境 - Google Patents
嵌套仿真和动态链接环境 Download PDFInfo
- Publication number
- CN104246695A CN104246695A CN201280071653.8A CN201280071653A CN104246695A CN 104246695 A CN104246695 A CN 104246695A CN 201280071653 A CN201280071653 A CN 201280071653A CN 104246695 A CN104246695 A CN 104246695A
- Authority
- CN
- China
- Prior art keywords
- storehouse
- isa
- call
- source
- additionally
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
各种实施例包括对于源应用和源仿真器的嵌套仿真。复制源ISA库使源仿真器库调用重定向到目标库,由此迫使本机仿真器通过第一与第二ISA之间的正确仿真通道。其它实施例关于通过确定某些函数调用相反在不需要PLT代码转换的情况下直接被调用而不是通过PLT代码的仿真来处理来使动态链接加速。一些实施例解决嵌套仿真和加速动态链接两者但其它实施例包括嵌套仿真和加速动态链接中的一个。本文中还描述了其它实施例。
Description
背景技术
计算设备可由它的指令集架构(ISA)表征。典型地,计算设备可包括操作系统(OS)服务,并且OS服务可包括为计算设备的ISA开发的运行时库(LIB)服务,用于帮助应用开发者开发在计算设备上操作的应用。如果对不是计算设备的ISA的ISA编写应用,可能需要仿真应用。具体地,仿真允许应用(为第一ISA编写的)在计算设备的架构(其使用第二ISA)上执行。应用的依赖于ISA的部分可包括对源LIB服务的函数调用,其需要使用目标LIB服务来仿真。此外,应用的依赖于ISA的部分可包括回调函数(例如,从依赖于ISA的运行时LIB回调到仿真应用的函数、回调到需要仿真的源LIB服务的函数)。这样的回调可直到运行时才被发现,由此使在桥接两个ISA方面传统方法(例如,二进制转换)低效。
为了执行上文的应用,应用可需要链接。链接通过分辨互连参考(例如,由应用调用的库例程之间的互连)而从编译模块(例如,库)产生可执行程序。该链接(在本文有时也叫作“加载”)可经由二进制转换系统(BT)动态进行。动态链接使大部分的链接过程推迟到程序开始运行。动态链接器可以是在执行可执行文件时加载并且链接对于该可执行文件的共享库的OS的部分。技术可使用规程链接表(PLT)、全局偏移表(GOT)和间接跳跃来使应用的库调用指向动态链接库中的目标函数。
附图说明
本发明的实施例将通过示范性实施例而非限制的方式描述、在附图中图示,其中类似的标号指代相似的元件,并且其中:
图1图示在本发明的实施例中包括ISA桥接的计算设备;
图2进一步详细图示图1的ISA桥接层;
图3和4图示在本发明的实施例中用于桥接源ISA的应用与目标ISA的库服务之间的调用和回调的方法;
图5图示在本发明的一个实施例中的BT系统。
图6和7分别图示在本发明的实施例中用于使动态链接加速的方法和伪代码。
具体实施方式
各种操作将进而采用对于理解说明性实施例最有帮助的方式描述为多个分立操作;然而,描述的顺序不应该解释为暗示这些操作必定依赖于顺序。特别地,这些操作不需要按呈现的顺序执行。此外,作为单独操作的操作的描述不应解释为需要操作一定独立地和/或由单独实体执行。作为单独模块的实体和/或模块的描述应同样不解释为需要模块是单独的和/或执行单独操作。在各种实施例中,图示和/或公开的操作、实体、数据和/或模块可合并、分解成进一步的子部分和/或省略。重复使用短语“实施例”。该短语一般不指相同的实施例;然而,它可指相同的实施例。术语“包括”、“具有”和“包含”是同义的,除非上下文另外指示。短语“A/B”意思是“A或B”。短语“A和/或B”意思是“(A)、(B)或(A和B)”。短语“A、B和C中的至少一个”意思是“(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)”。
各种实施例包括对于源应用和源仿真器的嵌套仿真。复制源ISA库重定向对目标库的源仿真器库调用,由此迫使本机仿真器通过第一与第二ISA之间的正确仿真通道。其它实施例关于通过确定某些函数调用不是通过PLT代码的仿真来处理而是在不需要PLT代码转换的情况下直接被调用来使动态链接加速。一些实施例解决嵌套仿真和加速动态链接两者但其它实施例包括嵌套仿真和加速动态链接中的一个。
图1图示实施例中的示例计算设备,其包括ISA桥接(可选地具有回调)。计算设备102可包括处理器和存储器布置104,其包括或耦合于OS 122、ISA桥接层123、应用120、图形处理单元(GPU)106、显示单元108和联网接口110,它们彼此如示出的那样耦合(即,直接或间接)。OS 122可包括服务124的库(其细分成库127、128,共同包括符号“A”至“H”)。计算设备102还可包括应用120与OS 122之间可选的中间件121。如将在下文更详细描述的,ISA桥接层123可配置有各种运行时特征和服务(其包括但不限于,动态绑定)以使应用120能够全部或部分地在源ISA中实现(例如,在也使用独立于ISA的中间件121时),而OS 122(其包括库服务124)可在与源ISA不同的目标ISA中实现。此外,应用120可以是这样的应用(特别地,使用源ISA实现的部分),其包括需要库服务124的各种元素(例如,函数)在各种条件下“回调”应用120的各种回调函数125的库服务124的使用特性。ISA桥接层123在本文也可称为过程虚拟机(PVM)。
计算设备102可以是服务器、台式计算机、膝上型计算机、平板计算机、智能电话、个人数字助理、游戏控制台、因特网家电、移动互联网设备、手机、移动联网设备、移动计算节点或其它计算设备。处理器和存储器布置104代表广泛的处理器和存储器布置,其包括具有各种执行速度和功耗的单核或多核处理器以及具有各种架构(例如,具有一级或多级高速缓存)和各种类型(例如,动态随机存取、FLASH,等)的存储器的步骤。在各种实施例中,GPU 106可配置成向OS 122提供视频解码和/或图形处理功能,而显示单元108可配置成使多媒体内容(例如,HD视频)能够在其上渲染。相似地,GPU 106和显示单元108意在代表本领域内已知的广泛图形处理器和显示元件。同样,网络134意在代表本领域内已知的广泛网络。网络134的示例可包括有线或无线、局域或广域、专用或公共网络,其包括因特网。OS 122(其包括库服务124)代表本领域内已知的广泛OS元件,但除了限定库服务124的调用的应用编程接口(API)之外。OS 122可包括常规组件,例如配置成管理存储器资源、调度任务执行等的内核,和配置成管理各种设备资源的设备驱动器。在实施例中,OS 122可包括支持可选中间件121的虚拟机(例如,支持Android?应用框架的Android?虚拟机)。除限定库服务124的调用外,为了促进应用120的回调函数125的调用,库服务124的API还包括应用120的回调函数125的对应存根和签名。OS 122的示例可包括Windows?操作系统、Linux?、Android?、iOS?及类似物。相似地,可选中间件121意在代表广泛的中间件元件,其包括但不限于,独立于ISA的中间件。中间件121的示例可包括但不限于,Android?应用框架、Java?或其它应用框架或独立于ISA的执行环境。同样,应用120(其包括回调函数125)代表广泛的应用,其包括对于个人助理、生产率、社交联网应用、日程安排、字处理、电子制表、Twitter?、Facebook?、浏览器的应用及类似物。
图1的剩余元件在论述图2之后在下文进一步论述。
在图2中,ISA桥接层123可包括ISA桥接加载器202、源ISA仿真器204和目标ISA库仿真器206(其配置成提供各种运行时特征和服务,包括动态绑定服务)。源ISA仿真器204可包括源ISA上下文212,和二进制转换引擎215。源ISA仿真器204可在源ISA上下文212中维持源ISA架构的执行上下文,其包括例如当前执行指令指针(IP)。二进制转换器引擎215可配置成将源ISA指令转换成目标ISA指令。LIB仿真器206可包括目标ISA LIB上下文222、门224(例如,由处理器使用来控制对特权函数的访问的数据结构、改变数据段、开关表及类似物)和包装器函数226。LIB仿真器206可在目标ISA LIB上下文222中维持目标ISA库124的执行上下文。在各种实施例中,对于每个库服务124(例如,函数)可存在对应的门224和包装器函数226对,其中该对配置成促进由应用120跨源和目标ISA架构调用库服务124。相似地,每回调函数125可存在一个对应的门224和包装器函数226对,其配置成促进由库服务124跨目标和源ISA架构回调回调函数125。
ISA桥接加载器202可以是公用事业,其配置成将应用120加载到存储器内。在加载应用120中,ISA桥接加载器202可配置成分辨与库(其对应于源应用120)关联的应用120的任何未分辨符号126。符号可以是寄存器、存储器地址及类似物的标识符(例如,文本串)。ISA桥接加载器202可配置成修改符号(对于回调函数125),并且使对于回调函数125的符号与对应的包装器函数226关联。ISA桥接加载器202可采用许多已知方式(其包括在受到OS 122或中间件121支持时使用基于二进制格式的控制传输或加载/预先加载变量)中的任一个从OS 122(或中间件121,如采用的话)的加载器(未示出)获得加载控制。在其它实施例中,可修改OS 122(或中间件121,如采用的话)的加载器来促进对ISA桥接加载器202的控制的传输。
源ISA仿真器204可仿真目标ISA 122“顶部上”的源ISA 120来运行源ISA应用120。如之前描述的,源ISA仿真器204可配置成维持源ISA执行上下文212。例如,源ISA仿真器204可配置成在应用120的执行期间跟踪源ISA IP(指令指针)。在应用120试图调用库服务124时,源ISA仿真器204可以在监视源ISA执行并且相反可调用执行控制并且将其传输到LIB仿真器206。在各种实施例中,源ISA仿真器204可调用执行控制并且将其传输到库服务124的对应门224(在下文进一步论述)。
LIB仿真器206可通过映射到目标LIB 124来仿真源LIB(或任何其它LIB)。LIB仿真器206还可配置成维持目标ISA库(LIB)执行上下文222。对应于库服务124的门224可配置成相应地重定向对库服务124和对应包装器函数226(其处理并且设置调用)的调用。对应于回调函数125的门224可配置成相应地将对回调的执行控制从对应包装器函数226传输到源ISA仿真器204。在各种实施例中,每个门224可包括指令,其配置成实行到对应包装器函数226或源ISA仿真器204的重定向。在各种实施例中,每个门224的指令可以是源ISA指令,其配置成与二进制转换引擎215配合来实行执行控制重定向。在各种实施例中,每个门224可进一步包括识别对应包装器函数226的指示符。
在各种实施例中,为了处理并且设置对对应库服务124的调用,对应于库服务124的每个包装器函数226可配置成从源ISA上下文212检索关联的调用的参数值、将调用从源ISA应用二进制接口(ABI)格式转换成目标ISA ABI格式并且将具有参数值的转换调用保存在LIB上下文222中。在回调回调函数125时,执行控制可传输到回调函数125的对应包装器函数226。在各种实施例中,为了处理并且设置对应用120的回调函数125的回调,对应于回调函数125的每个包装器函数226可配置成将回调从目标ISA ABI格式转换成源ISA ABI格式、使回调的关联参数值附连并且将具有参数值的转换回调保存在源ISA上下文212中。对应于回调函数125的门224可配置成调用具有源ISA上下文212的源ISA仿真器204(由包装器函数226准备并且对应于回调函数125)来实行目标ISA 104上的源ISA格式中呈现的回调函数。
参考图1和2两者,在一些应用环境中,ISA桥接层123可拦截系统加载器160的动作。系统加载器可作为源ISA 120上的LIB服务的部分、作为目标ISA 122上的LIB服务124的配对物而提供。系统加载器160不仅仅专用于应用120而与应用120层处的各种组件(例如,多个应用)一起操作。ISA桥接层123可拦截从应用120对系统加载器160的函数调用并且使这样的调用重定向到ISA桥接加载器202,其使源应用120链接到ISA门224而不是其它起初针对的库。在运行时,当应用120调用库(定位在源ISA 120中或别的地方)时,ISA门224使控制重定向到目标ISA 122上的语义相同的库124。然而,在一些实例中,应用120(例如,LIBmono)可配置成依靠它自己的加载器131(例如,来加载库)并且分辨未定义符号126。这样的加载器可专用于仿真器130和/或应用120并且代替系统加载器160来服务或附加于系统加载器160来服务。ISA桥接层123可未配置成监视加载器131(或甚至知道存在加载器131)。因此,应用120可试图直接链接到目标库LIB1 127(其可具有这样的库或符号:它们具有与应用120起初针对的库的名称相同的名称)。ISA桥接层123可能不能在运行时截止加载器131(其可使用与系统加载器160的不同的调用)。这可导致加载器131不正确地加载和与目标ISA库LIB1 127链接、绕过仿真器204和206,从而导致不正确的应用执行。
为了解决该问题,本发明的实施例对仿真器130和对应用120提供嵌套(即,多层)仿真。在一个示例中,应用120(仿真层3)由仿真器130(仿真层2)仿真,该仿真器130由ISA桥接层123(仿真层1)仿真,该ISA桥接层123在目标ISA 122(仿真层0)“顶部上”。
一个实施例包括特殊源ISA库140,其包括要由仿真器130加载的库LIB1 141、LIB2 142。如在图1中示出的,源ISA 120包括未定义符号126“A”、“B”、“C”和“D”。库LIB1 141、LIB2 142可使用与对应目标库127、128相同的库名称(其包括相同的函数名称或多个名称)。例如,源库141和目标库127两者都叫“LIB1”并且都包括叫“A”、“B”、“C”和“D”的函数。在仿真器130尝试分辨未定义符号126“A”、“B”、“C”和“D”时,它在特殊库141中找到对应符号。然后仿真器130使它的未定义符号(例如符号“A”)与由特殊库LIB1 141揭示的对应符号“A”链接。对于函数“A”、“B”、“C”和“D”中的每个,特殊库LIB1 141(以及对于函数“E”、“F”、“G”和“H”的LIB2 142)实现对于函数的门(参见门251、252)而不是实际函数。例如,库141的函数“A”仅包括对于函数“A”的ISA门(参见门251的门“A”,其包括门但实际上未包括函数“A”),其使控制重定向到目标ISA 122上的语义相同的库LIB1 127。在一个实施例中,特殊源ISA库140仅包含ISA门。
如在图1中指示的,在一个实施例中,ISA门在单独库141、142(其可根据需要加载)中组织。例如,如果应用120需要对应于LIB2 142的函数时,仿真器130在等待加载LIBS 142(和其它库)时可仅加载(即,链接)LIB1 141。
图3-4图示根据本发明的实施例具有回调的示例ISA桥接方法。方法300可包括两个部分:用于桥接从(源ISA的)应用120到(目标ISA的)库服务124的调用的部分300a,和用于桥接从(目标ISA的)库服务124到(源ISA的)应用120的回调函数125的回调的部分300b。部分300a和300b可独立于彼此实现。而且,各种实施例不必关于包装器函数和/或回调函数而相反可聚焦在嵌套仿真的其它方面上,例如特殊源ISA库141、142。
在图3中,在框302处,ISA桥接加载器202可加载源应用120。在加载应用120中,ISA桥接加载器202可分辨对于库服务124的语义名称或参考126,并且修改回调函数125的语义名称或参考,如之前描述的。在框304中,在执行过程中,应用120可能调用库服务124中的一个。在各种实施例中,应用120可需要由调用的库服务124回调它的回调函数125中的一个。在实施例中,应用120可包括对回调函数125的指针,作为对调用库服务124的调用的部分。代替传递对于回调函数125的指针,库服务124的包装器函数226可传递回调函数125的对应包装器函数226。在框305处,仿真器130试图链接到库并且在这样做时链接到LIB1 141(其等同地叫作LIB1 127)。LIB1 141包括将函数调用(例如,函数“A”)重定向到源ISA仿真器204的门。在框306处,源ISA仿真器204(例如,通过监视源ISA IP并且确定IP在参考目标库的地址范围内的地址)在检测到调用时可使调用重定向到以及将执行控制传输到LIB仿真器206中的库服务124的对应门224。例如,对于函数“A”,LIB1 141的门“A”可使回调重定向到源ISA仿真器204并且然后到门251的门“A”。在框308处,来自门224的合适的门可进一步使调用重定向到以及将执行控制传输到调用库服务124的对应包装器函数226。在框310处,调用的库服务124的包装器函数226可处理调用,并且在LIB上下文222中设置调用以供调用的库服务124执行,如之前描述的。在框312处,调用的库服务124的门224可从LIB上下文222收集调用的返回值、更新源ISA上下文212并且将执行控制传输到源ISA仿真器202。
从而,图3图示嵌套仿真形式,其中应用(例如,游戏)在仿真器(例如,仿真器130)顶部上执行,其中该应用对于第一ISA而格式化。仿真器可在ISA桥接层123的顶部上运行(即,被ISA桥接层123嵌套),该ISA桥接层123执行应用的透明二进制转换并且在与第一ISA不同的第二ISA上运行仿真器。这使用ISA桥接层123和一个或多个特殊源ISA库(例如,141、142)完成,该一个或多个特殊源ISA库使用它自己的加载器131而与仿真器130链接。在仿真器130调用库时,仿真器130调用ISA门(例如,141、142),其然后经由门251、252(其是门224的一般集合的单独库)将函数调用映射到目标ISA库127、128。实施例可扩展来涵盖任意数量的仿真层(例如,2、3、4、5个,等)。每个仿真层与重定向到下一级仿真层的特殊ISA库(其包括或耦合于ISA门)链接。
在图4(部分300b)中,在框404处,在完成调用库服务124的过程中或时,库服务124可回调应用120的回调函数125(例如,通过调用由应用120传递的回调指针)。在框406处,根据修改的参考,执行控制可传输到回调函数125的对应包装器函数226。在框408处,包装器函数226可处理回调、在源ISA上下文212中设置回调以供应用120的回调函数125执行(如之前描述的),并且之后将执行控制传输到回调函数125的对应门224。在框410处,对应于回调函数125的门224可使回调重定向到以及将执行控制传输到ISA仿真器,其具有由包装器函数226准备的源ISA上下文。在框412处,源ISA仿真器204可根据源ISA上下文内的IP开始回调函数的仿真。在框414处,回调函数125的门224可从源ISA上下文212收集回调的返回值、更新LIB上下文222并且将执行控制传输到LIB仿真器204来向库服务124返回回调函数125的返回值。
为了便于理解,各种实施例已经用使一个源ISA桥接到一个目标ISA的一个ISA桥接层123描述。然而,本公开不这样受限制。在实施例中,多个ISA桥接层123可使多个源ISA桥接到目标ISA或多个ISA。在这些实施例中的一些中,可另外提供调度器来检测需要的桥接,并且例示合适的ISA桥接层或多个层123来提供需要的ISA桥接。此外,在各种实施例中,本公开可用对于应用120的部分(在源ISA中)的替代二进制文件(在目标ISA中)实践来减少需要的桥接量。在其它实施例中,用于桥接的资源中的一些(例如,包装器函数中的一些)可定位在对于ISA桥接层123可访问的远程服务器上。再进一步地,为了便于理解,ISA桥接层123已经描述为配置成使源ISA桥接到不同的目标ISA。然而,对于各种应用,可采用ISA桥接层123来桥接相同的源ISA和目标ISA。在这样的应用中,可能不需要描述的元件中的一个或多个(例如,二进制转换引擎215)。这样的应用的示例可向计算设备102提供增强操作安全性。其它应用可同样从这样的桥接中获益。因此,本公开可以是具有支持为另一个ISA开发的应用的一个ISA的计算设备的技术问题的解决方案,其中这些应用具有有时需要来自调用库服务的回调的使用特性。本公开的优势可包括避免在计算设备的ISA中完全转换或重新实现应用的需要。
本发明的实施例不限于嵌套仿真或上文描述的其它特征中的任何特征。例如,一个实施例关于使BT仿真动态链接加速来使这样的链接与静态链接相当(例如,在速度方面)。
传统的动态链接系统可关于源ISA应用(例如,应用120),其必须链接到库。为了这样做,应用可使用调用方代码(利用其来调用库)、PLT代码(其包含用于读取GOT的代码)和GOT(其可包括未分辨符号和函数位置列表)。BT系统可使用可执行加载器、转换器和运行时环境来仿真应用以在目标ISA上运行。如上文指出的,基于PLT和GOT的方法的使用可需要间接跳跃来将应用的库调用指向动态链接库中的目标函数。然而,动态链接的间接跳跃与静态链接相比时带来额外的运行时开销。图5描述用于使动态链接加速的实施例,其可使用BT系统中的动态链接加速器(DLA)来执行。
BT系统515(其包括可执行加载器520、转换器525和运行时环境530)仿真目标ISA 535上的源ISA应用505。可执行加载器520加载源ISA应用505和源ISA库510,其要动态链接到应用505。转换器525将来自应用505的加载指令分组成转换单元(例如转换单元526),并且在每个转换单元上进行源ISA到目标ISA二进制转换。运行时环境530提供支持环境和助手库(未示出)以在目标ISA 535上运行转换代码。
图5的实施例通过例如使用DLA加载器521和DLA优化器527来增强BT。DLA加载器521使用库地址范围表522来存储每个动态链接库的地址范围。表522用于地址验证并且用于控制哪些库调用应加速。例如,对某些系统库(例如,LIBc或LIBm)的调用因为它们可能被加载并且在应用505执行期间保持加载而是良好的加速候选者。然而,其它用户库(其可能频繁被加载和卸载)由于将伴随重复加载和卸载的重复转换的操作耗费而可能不是良好的候选者。从而,为加速选择的那些库调用可存储在表522中,而其它库调用未存储在表522中。
如在下文更详细解释的,DLA优化器527分析源ISA应用505中的PLT代码507并且计算对于源库511的地址。该地址然后与存储在表522(例如,LIBc是在地址范围0x4000-0x5000中)中的地址范围比较。如果地址与任何地址范围匹配,DLA优化器527然后用对库函数的直接调用来替换PLT代码507。利用该DLA增强,PLT代理在BT系统515中不再被仿真。因此,动态链接可与静态链接一样快(或在对于传统动态链接时至少得到提高)。用于执行动态链接的实施例关于图6详细提出。
图6包括对于使用DLA加载器521和DLA优化器527的加速动态链接的过程600。在框605中,当源ISA应用505在BT系统515上执行时,可执行加载器520加载应用505和它的动态链接库(例如,库510,其可包括例如LIBc、LIBm、LIBc++及类似物)。在框610中,DLA加载器521记录每个加载库的存储器地址范围并且将地址或多个地址存储在库地址范围表522中(例如,LIBc是在地址范围0x4000-0x5000中)。在框615中,转换器525在应用的仿真执行流后将加载代码505分组成一个或多个转换单元(例如,单元526)。例如,转换器525可将指令添加到一个转换单元直到满足控制传输指令。在满足控制传输指令时,转换器525可根据与控制传输指令关联的启发或历史信息继续在控制传输指令的目标地址后添加指令(参见例如图5的框526)。在分组期间,当转换器525满足调用指令(例如,CALL 0X123PLT)时,转换器525向DLA优化器527发送调用目标地址(例如,0X123)。在框620中,DLA优化器527使用代码模式匹配(在下文进一步解决)来确定调用目标地址(例如,0X123)是否包括在PLT代码中。如果调用目标确定为在PLT代码中,则DLA优化器527计算PLT代码并且从GOT(未示出但包括在代码505中)调用(例如,“CALL malloc”,其如由调用规定的那样对存储器分配函数)库函数地址。在框625中,DLA优化器527将该库函数地址发送到DLA加载器521用于地址验证(参见图5的箭头529)。在框630中,DLA加载器521将由DLA优化器527供应的库函数地址与库地址范围表522中的内容比较来确保供应的地址是加速的有效候选者。一旦执行验证,在框635中,DLA优化器527用对库函数511的直接调用来替换对PLT 507的原始调用并且从转换单元去除PLT代码(参见单元528,其不包括来自单元526的PLT代码)。因此,PLT代码在BT系统515中不再被仿真(由此避免仿真开销)。
图7包括用于使用例如DLA加载器521和DLA优化器527以及图6的过程的部分来实现动态链接加速的伪代码。为了简洁起见,未论述代码的每个行。行706-707关于识别调用指令和它的目标地址。在行708中,如果目标地址和它的周边地址定位在PLT代码中,则该模式匹配指示调用可能针对PLT代码。在行709-711中,找到正确的库地址并且验证它。在行712-713中,用直接调用替换PLT代码以由此避免PLT代码的高代价仿真和它关联的间接跳跃和查找。不再需要动态链接来遍历PLT和GOT用于库函数地址计算。
实施例可在代码中实现并且可存储在存储介质上,该存储介质具有存储在其上的指令,其可以用于对系统编程来执行指令。存储介质可包括但不限于任何类型的盘,这些盘包括软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)和磁光盘;例如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)等半导体器件、磁或光卡或适合于存储电子指令的任何其它类型的介质。本发明的实施例可在本文关于例如指令、函数、规程、数据结构、应用程序、配置设置、代码等数据来描述。当数据被机器访问时,该机器可通过执行任务、限定抽象数据类型、建立低级硬件上下文和/或进行其它操作而作出响应,如在本文更详细描述的。数据可存储在易失性和/或非易失性数据存储中。为了该公开的目的,术语“代码”或“程序”涵盖广泛的组件和构造,其包括应用、驱动器、进程、例程、方法、模块和子程序。从而,术语“代码”或“程序”可用于指代指令的任何集合,这些指令在被处理系统执行时进行期望的操作或多个操作。另外,备选实施例可包括使用比公开操作中的全部更少的进程、使用额外操作的进程、使用处于不同序列的相同操作的进程以及其中本文公开的个体操作组合、细分或用别的方式更改的进程。在一个实施例中,术语控制逻辑的使用包括例如晶体管、寄存器等硬件,或例如可编程逻辑设备(535)等其它硬件。然而,在另一个实施例中,逻辑还包括软件或代码(531)。这样的逻辑可与例如固件或微代码(536)等硬件集成。处理器或控制器可包括意在代表本领域内已知的很多种控制逻辑中的任何控制逻辑的控制逻辑,并且如此,可很好地实现为微处理器、微控制器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程逻辑设备(PLD)及类似物。
参考图1,对于一个实施例,处理器和存储器布置104的处理器中的至少一个可与配置成实践图3、4、6、7的方法的操作(或其子集)的ISA桥接层123的计算逻辑(或其子集)封装在一起。对于一个实施例,处理器和存储器布置104的处理器中的至少一个可与配置成实践图3、4、6、7的操作(或其子集)的ISA桥接层123的计算逻辑(或其子集)封装在一起来形成系统级封装(SiP)。对于一个实施例,处理器和存储器布置104的处理器中的至少一个可集成在与配置成实践图3、4、6、7的操作(或其子集)的ISA桥接层123的计算逻辑(或其子集)相同的芯片上。对于一个实施例,处理器和存储器布置104的处理器中的至少一个可集成在与ISA桥接层123的计算逻辑(或其子集)相同的芯片上来形成片上系统(SoC)。对于至少一个实施例,SoC可在台式计算机、膝上型计算机、智能电话、计算平板、因特网家电、个人数字助理(PDA)、便携式游戏设备、服务器或其它计算设备中使用。
实施例包括由至少一个处理器执行的方法,其包括:加载具有源指令集架构(ISA)的应用;使调用(其是对于源ISA库的库服务)重定向到第一库,因此调用未触及源ISA库;使调用从第一库定向到目标ISA库的库服务;以及经由目标ISA库仿真应用。该方法可进一步包括分辨对于应用的未定义符号。分辨未定义符号包括经由第一库的第一门间接链接到目标ISA库的目标门。第一门可具有第一名称并且目标门可具有目标名称,其包括第一名称。例如,名称(不管文件扩展)可相同或仅仅相差前缀、后缀及类似物。使调用重定向到第一库可包括使调用从专用于应用的仿真器重定向。使调用重定向到第一库可包括使调用从专用于应用并且不是通用系统加载器的仿真器重定向。方法可包括:对与应用关联的额外库服务提供额外调用;该额外调用指向规程链接表(PLT)中包括的代码;以及用对源ISA库和额外源ISA库中的一个的直接额外调用(其绕过PLT)替换额外调用。方法可包括识别对于额外调用的地址;以及基于识别对于额外调用的地址来确定额外调用指向PLT中包括的代码。权利要求1的方法可包括对与应用关联的额外库服务提供额外调用;该额外调用指向代码,其配置成定位规程;以及用对源ISA库和额外源ISA库中的一个的直接额外调用(其绕过配置成定位规程的代码)替换额外调用。
在实施例中,装置可包括至少一个存储器和耦合于该至少一个存储器的至少一个处理器,以用于进行这样的操作,其包括:加载具有源指令集架构(ISA)的应用;对与应用关联的库服务提供调用,额外调用指向配置成定位规程的代码;用对源ISA库的直接调用(其绕过配置成定位规程的代码)替换调用;以及经由目标ISA库仿真应用。配置成定位规程的代码可包括在规程链接表(PLT)中。实施例可进行这样的操作,其包括:识别对于调用的地址;以及基于识别对于调用的地址来确定调用指向PLT中包括的代码。实施例可执行这样的操作,其包括:使额外调用(其是对于源ISA库和额外源ISA库中的一个的额外库服务)重定向到第一库,因此额外调用未触及源ISA库和额外源ISA库中的一个;以及使额外调用从第一库定向到目标ISA库和额外目标ISA库中的一个。实施例可进行这样的操作,其包括分辨对于应用的未定义符号。在实施例中,分辨未定义符号包括经由第一库的门链接到目标ISA库和额外目标ISA库中的一个的门。在实施例中,使额外调用重定向包括使额外调用从专用于应用的仿真器重定向。在实施例中,使额外调用重定向包括使额外调用从专用于应用并且不是通用系统加载器的仿真器重定向。
从而,各种实施例包括对于源应用和源仿真器的嵌套仿真。复制源ISA库使源仿真器库调用重定向到目标库,由此迫使本机仿真器通过第一与第二ISA之间的正确仿真通道。这提供导致正确仿真的优势。各种实施例的优势也在于增加的动态链接效率和速度。例如,效率通过与基于PLT和GOT的方法的先用关联的间接跳跃得到。
将意识到本公开可能是向计算设备提供增强安全性的技术问题的解决方案。本公开的优势可包括但不限于,提供的隔离的鲁棒性。
Claims (20)
1. 一种由至少一个处理器执行的方法,其包括:
加载具有源指令集架构(ISA)的应用;
使调用重定向到第一库,所述调用是对于源ISA库的库服务,因此所述调用未触及所述源ISA库;
使所述调用从所述第一库定向到目标ISA库的库服务;以及
经由所述目标ISA库仿真所述应用。
2. 如权利要求1所述的方法,其包括分辨对于所述应用的未定义符号。
3. 如权利要求2所述的方法,其中分辨所述未定义符号包括经由所述第一库的第一门间接链接到所述目标ISA库的目标门。
4. 如权利要求3所述的方法,其中所述第一门具有第一名称并且所述目标门具有目标名称,其包括所述第一名称。
5. 如权利要求1所述的方法,其中使所述调用重定向到所述第一库包括使所述调用从专用于所述应用的仿真器重定向。
6. 如权利要求1所述的方法,其中使所述调用重定向到所述第一库包括使所述调用从专用于所述应用并且不是通用系统加载器的仿真器重定向。
7. 如权利要求1所述的方法,其包括:
对与所述应用关联的额外库服务提供额外调用;所述额外调用指向规程链接表(PLT)中包括的代码;以及
用对所述源ISA库和额外源ISA库中的一个的直接额外调用替换所述额外调用,所述直接额外调用绕过所述PLT。
8. 如权利要求1所述的方法,其包括:
识别对于所述额外调用的地址;以及
基于识别对于所述额外调用的地址来确定所述额外调用指向所述PLT中包括的代码。
9. 如权利要求1所述的方法,其包括:
对与所述应用关联的额外库服务提供额外调用;所述额外调用指向代码,所述代码配置成定位规程;以及
用对所述源ISA库和额外源ISA库中的一个的直接额外调用替换所述额外调用,所述直接额外调用绕过配置成定位规程的所述代码。
10. 一种装置,其包括用于执行权利要求1至9中的任一项的部件。
11. 至少一个机器可读介质,其包括多个指令,所述指令响应于在计算设备上执行而促使所述计算设备实施如权利要求1至9中任一项所述的方法。
12. 一种装置,其包括:
至少一个存储器和耦合于所述至少一个存储器的至少一个处理器,用于进行这样的操作,其包括:
加载具有源指令集架构(ISA)的应用;
对与所述应用关联的库服务提供调用,所述额外调用指向配置成定位规程的代码;
用对源ISA库的直接调用替换所述调用,所述直接调用绕过配置成定位规程的代码;以及
经由目标ISA库仿真所述应用。
13. 如权利要求12所述的装置,其中配置成定位规程的代码包括在规程链接表(PLT)中。
14. 如权利要求13所述的装置,其中所述至少一个处理器进行这样的操作,其包括:
识别对于所述调用的地址;以及
基于识别对于所述调用的地址来确定所述调用指向所述PLT中包括的代码。
15. 如权利要求12所述的装置,其中所述至少一个处理器进行这样的操作,其包括:
使额外调用重定向到第一库,所述额外调用是对于所述源ISA库和额外源ISA库中的一个的额外库服务,因此所述额外调用未触及所述源ISA库和所述额外源ISA库中的一个;以及
使所述额外调用从所述第一库定向到所述目标ISA库和额外目标ISA库中的一个。
16. 如权利要求12所述的装置,其中所述至少一个处理器执行这样的操作,其包括分辨对于所述应用的未定义符号。
17. 如权利要求16所述的装置,其中分辨未定义符号包括经由所述第一库的门链接到所述目标ISA库和所述额外目标ISA库中的一个的门。
18. 如权利要求12所述的装置,其中使所述额外调用重定向包括使所述额外调用从专用于所述应用的仿真器重定向。
19. 如权利要求12所述的装置,其中使所述额外调用重定向包括使所述额外调用从专用于所述应用并且不是通用系统加载器的仿真器重定向。
20. 一种计算机系统,其包括权利要求12至19所述的至少一个处理器,所述计算机系统进一步包括至少一个显示器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/072770 WO2013139014A1 (en) | 2012-03-22 | 2012-03-22 | Nested emulation and dynamic linking environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104246695A true CN104246695A (zh) | 2014-12-24 |
CN104246695B CN104246695B (zh) | 2019-05-10 |
Family
ID=49221814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280071653.8A Expired - Fee Related CN104246695B (zh) | 2012-03-22 | 2012-03-22 | 嵌套仿真和动态链接环境 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9851987B2 (zh) |
EP (1) | EP2828739A4 (zh) |
JP (1) | JP5976917B2 (zh) |
KR (1) | KR101665219B1 (zh) |
CN (1) | CN104246695B (zh) |
AU (1) | AU2012373895B2 (zh) |
WO (1) | WO2013139014A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461227A (zh) * | 2022-04-13 | 2022-05-10 | 飞腾信息技术有限公司 | 运行软件的方法、装置以及机器可读存储介质 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098355B2 (en) * | 2012-01-06 | 2015-08-04 | Intel Corporation | Method and apparatus for substituting compiler built-in helper functions with machine instructions |
US9830176B2 (en) * | 2013-04-19 | 2017-11-28 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for binary compatible graphics support in mobile operating systems |
CN106528188B (zh) * | 2015-09-09 | 2019-08-30 | 腾讯科技(深圳)有限公司 | 一种应用加速方法及装置 |
US10268465B2 (en) * | 2016-10-24 | 2019-04-23 | International Business Machines Corporation | Executing local function call site optimization |
US10713213B2 (en) * | 2016-12-21 | 2020-07-14 | Intel Corporation | Systems and methods for multi-architecture computing |
US10552207B2 (en) | 2016-12-21 | 2020-02-04 | Intel Corporation | Systems and methods for multi-architecture computing including program stack translation |
US10684984B2 (en) | 2016-12-21 | 2020-06-16 | Intel Corporation | Computing devices and server systems with processing cores having different instruction set architectures |
US11275709B2 (en) | 2017-05-02 | 2022-03-15 | Intel Corporation | Systems and methods for multi-architecture computing |
US10706193B1 (en) * | 2018-12-04 | 2020-07-07 | Xilinx, Inc. | Computer processing during simulation of a circuit design |
US11231918B1 (en) | 2020-08-31 | 2022-01-25 | Microsoft Technologly Licensing, LLC | Native emulation compatible application binary interface for supporting emulation of foreign code |
US11403100B2 (en) * | 2020-08-31 | 2022-08-02 | Microsoft Technology Licensing, Llc | Dual architecture function pointers having consistent reference addresses |
WO2022137458A1 (ja) | 2020-12-24 | 2022-06-30 | 三菱電機株式会社 | データ処理装置、データ処理方法及びデータ処理プログラム |
WO2024069678A1 (ja) * | 2022-09-26 | 2024-04-04 | 日立Astemo株式会社 | 電子制御装置 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3086623A (en) | 1959-07-20 | 1963-04-23 | David F Cole | Pneumatic timer |
US5774694A (en) * | 1996-09-25 | 1998-06-30 | Intel Corporation | Method and apparatus for emulating status flag |
US6086623A (en) * | 1997-06-30 | 2000-07-11 | Sun Microsystems, Inc. | Method and implementation for intercepting and processing system calls in programmed digital computer to emulate retrograde operating system |
US6631514B1 (en) * | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
KR100518584B1 (ko) * | 2003-07-12 | 2005-10-04 | 삼성전자주식회사 | 공유 라이브러리 시스템 및 상기 시스템 구축 방법 |
GB0316531D0 (en) * | 2003-07-15 | 2003-08-20 | Transitive Ltd | Method and apparatus for performing native binding |
US7434209B2 (en) * | 2003-07-15 | 2008-10-07 | Transitive Limited | Method and apparatus for performing native binding to execute native code |
US7415701B2 (en) | 2005-02-17 | 2008-08-19 | Intel Corporation | Methods and apparatus to support mixed-mode execution within a single instruction set architecture process of a virtual machine |
US7634768B2 (en) * | 2005-02-17 | 2009-12-15 | Intel Corporation | Methods and apparatus to support mixed-mode execution within a single instruction set architecture process of a virtual machine |
GB2426840A (en) | 2005-06-04 | 2006-12-06 | Transitive Ltd | Method of executing program code where a portion of the target code calls a native code portion which then calls a second target code portion. |
EP1889158B1 (en) * | 2005-06-04 | 2015-04-22 | International Business Machines Corporation | Method and apparatus for combined execution of native code and target code during program code conversion |
US7596540B2 (en) * | 2005-12-01 | 2009-09-29 | Exent Technologies, Ltd. | System, method and computer program product for dynamically enhancing an application executing on a computing device |
US7768518B2 (en) * | 2006-09-27 | 2010-08-03 | Intel Corporation | Enabling multiple instruction stream/multiple data stream extensions on microprocessors |
KR101308781B1 (ko) * | 2006-10-02 | 2013-09-17 | 인터내셔널 비지네스 머신즈 코포레이션 | 프로그램 코드 변환과 관련된 링크된 함수 호출을 동적으로 처리하는 방법 및 장치 |
GB2442495B (en) * | 2006-10-02 | 2009-04-01 | Transitive Ltd | Method and apparatus for handling dynamically linked function cells with respect to program code conversion |
CN101295265A (zh) * | 2007-04-25 | 2008-10-29 | 国际商业机器公司 | 全系统isa仿真系统及其识别进程的方法 |
US8775153B2 (en) * | 2009-12-23 | 2014-07-08 | Intel Corporation | Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment |
JP5546023B2 (ja) | 2011-06-16 | 2014-07-09 | 日本電信電話株式会社 | 光ファイバ無切断型光入出力装置及び光ファイバ無切断型光入出力方法 |
KR101691063B1 (ko) * | 2012-01-10 | 2016-12-29 | 인텔 코포레이션 | 콜백을 이용하는 isa 브리징 |
US10120663B2 (en) * | 2014-03-28 | 2018-11-06 | Intel Corporation | Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture |
-
2012
- 2012-03-22 WO PCT/CN2012/072770 patent/WO2013139014A1/en active Application Filing
- 2012-03-22 CN CN201280071653.8A patent/CN104246695B/zh not_active Expired - Fee Related
- 2012-03-22 US US13/994,725 patent/US9851987B2/en not_active Expired - Fee Related
- 2012-03-22 AU AU2012373895A patent/AU2012373895B2/en not_active Ceased
- 2012-03-22 EP EP12871825.1A patent/EP2828739A4/en not_active Withdrawn
- 2012-03-22 JP JP2015500737A patent/JP5976917B2/ja not_active Expired - Fee Related
- 2012-03-22 KR KR1020147026067A patent/KR101665219B1/ko active IP Right Grant
-
2017
- 2017-12-15 US US15/843,822 patent/US10761867B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461227A (zh) * | 2022-04-13 | 2022-05-10 | 飞腾信息技术有限公司 | 运行软件的方法、装置以及机器可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP5976917B2 (ja) | 2016-08-24 |
US9851987B2 (en) | 2017-12-26 |
JP2015511041A (ja) | 2015-04-13 |
AU2012373895A1 (en) | 2014-09-11 |
US20180173545A1 (en) | 2018-06-21 |
US20130338993A1 (en) | 2013-12-19 |
WO2013139014A1 (en) | 2013-09-26 |
KR20140127332A (ko) | 2014-11-03 |
AU2012373895B2 (en) | 2016-01-21 |
KR101665219B1 (ko) | 2016-10-11 |
EP2828739A4 (en) | 2015-12-09 |
EP2828739A1 (en) | 2015-01-28 |
US10761867B2 (en) | 2020-09-01 |
CN104246695B (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104246695A (zh) | 嵌套仿真和动态链接环境 | |
CN107291480B (zh) | 一种函数调用方法及装置 | |
US8607211B2 (en) | Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization | |
US8615746B2 (en) | Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization | |
JP5602597B2 (ja) | 外来情報を区分けすることにより仮想マシン・コードをメモリ最適化する方法、コンピュータ・プログラム、およびシステム | |
CN103443763B (zh) | 包含对重写虚拟函数的调用的支持的isa桥接 | |
US7389500B2 (en) | Selective pre-compilation of virtual code to enhance boot time emulator performance | |
CN106648755B (zh) | 一种在安卓art环境中动态加载dex的方法及装置 | |
CN111399990B (zh) | 解释执行智能合约指令的方法及装置 | |
CN104951274A (zh) | 用于控制流安全性的二进制转换机制的指令和逻辑 | |
US10809988B2 (en) | Processor emulation using multiple translations | |
CN104205049B (zh) | 混合模拟和内核函数处理系统和方法 | |
CN104025046A (zh) | 利用调回的isa桥接 | |
Choi et al. | x86‐Android performance improvement for x86 smart mobile devices | |
KR101083271B1 (ko) | 액티브엑스 컨트롤 변환 시스템 및 방법 | |
CN102446113B (zh) | 底层消息接口模拟方法及模拟装置 | |
CN114461306A (zh) | 运行软件的方法、装置及机器可读存储介质 | |
CN117170674A (zh) | 游戏引擎确定方法、计算机可读存储介质和电子装置 | |
CN114327497A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190510 Termination date: 20210322 |
|
CF01 | Termination of patent right due to non-payment of annual fee |