CN115769188A - 用于执行二进制翻译的系统和方法 - Google Patents

用于执行二进制翻译的系统和方法 Download PDF

Info

Publication number
CN115769188A
CN115769188A CN202180044320.5A CN202180044320A CN115769188A CN 115769188 A CN115769188 A CN 115769188A CN 202180044320 A CN202180044320 A CN 202180044320A CN 115769188 A CN115769188 A CN 115769188A
Authority
CN
China
Prior art keywords
translation
application
binary
execution
translations
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.)
Pending
Application number
CN202180044320.5A
Other languages
English (en)
Inventor
C·兹瓦里切
D·帕尔曼斯
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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of CN115769188A publication Critical patent/CN115769188A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Abstract

用于执行二进制翻译的系统和方法包括能够将为在源执行环境中使用而编写的二进制文件翻译成与目标执行环境兼容的二进制文件的系统。根据一些实施方案,二进制翻译系统包括系统服务和存在于应用程序存储器地址空间中的运行时代码模块。所述二进制翻译系统翻译对应于可执行程序、链接器、库等的对象级二进制文件,并且将该翻译存储在翻译高速缓存中,该翻译高速缓存被加密地保护以确保只有具有特定密钥的系统能够访问该翻译。如果自从执行该翻译以来已经修改该应用程序或应用程序二进制文件,则该系统服务将确保从该高速缓存移除该翻译,执行新翻译,并且将访问该翻译的所有线程更新为该新翻译。

Description

用于执行二进制翻译的系统和方法
背景技术
技术领域
本文所述的实施方案涉及二进制翻译。具体地,本文描述的实施方案涉及将已翻译二进制文件高速缓存在翻译高速缓存中以供管理已高速缓存翻译的系统服务快速检索。
相关技术描述
开发者使得针对第一执行环境编写的应用程序能够在第二执行环境执行的标准方式是将应用程序端口传送到第二执行环境,这涉及针对第二执行环境重建和重新编译应用程序。端口对于大型应用程序可能花费大量时间和努力,并且可涉及第二执行环境的良好工作知识以及用于为该执行环境重新编译的校正工具。为了在应用程序被重建和重新编译时弥补间距,开发者经常使用仿真器(例如,解释器和/或翻译器)以在不同执行环境上运行代码。解释器通常在第一或源执行环境中迭代地读取应用程序指令,并且在第二或目标执行环境内执行在软件环境中运行的源执行环境中的操作。其他仿真器以类似方式操作,但将利用第二环境的底层硬件的部分来优化解释。例如,仿真器可使用底层存储器以及底层处理器和系统,使得应用程序可表现为在第二环境中本地运行,其中应用程序以由底层硬件的能力和解释器的性能确定的速度运行。二进制翻译器将应用程序的各种指令和代码从第一执行环境翻译到第二执行环境。
二进制翻译器通常可以是静态的或动态的。静态二进制翻译器尝试将所有应用程序代码从第一执行环境翻译到第二执行环境,而无需预先实际执行代码。动态二进制翻译在执行期间翻译离散代码块,并且高速缓存已翻译块以用于在包含该代码的应用程序的执行期间使用。用于将PowerPC应用程序翻译成x86的Rosetta动态翻译层是动态二进制翻译器的示例。虽然动态二进制翻译器可能更准确,因为其可考虑需要翻译的所有代码,但其通常在应用程序的执行期间由于动态翻译而导致较大硬件开销,该动态翻译可致使应用程序以用户可察觉的滞后缓慢执行。此外,如果正被翻译的应用程序包括需要翻译的即时(JIT)编译,则这将进一步包括应用程序中的用户可察觉的延迟,因为它正在经历动态二进制翻译。
发明内容
在一个实施方案中,系统可包括存储操作系统和一个或多个应用程序二进制文件的存储器。该一个或多个应用程序二进制文件可被编写以用于在第一执行环境中执行。该系统还可包括一个或多个处理器,该一个或多个处理器被配置为在与该第一执行环境不同的第二执行环境中执行应用程序二进制文件。该系统还可包括二进制翻译器,该二进制翻译器包括可在与该应用程序二进制文件分开的地址空间中执行的系统服务,以及可在具有该应用程序二进制文件的地址空间中执行的运行时代码模块。该系统服务可被配置为管理该应用程序二进制文件的翻译,并且该运行时代码模块可被配置为管理该系统服务针对其缺少对应翻译的该应用程序二进制文件的即时(JIT)翻译。在一个实施方案中,该系统服务还可管理库二进制文件(例如,由操作系统提供的库和/或用户提供的库)。该系统还可包括存储在该存储器内的永久翻译高速缓存。该永久翻译高速缓存可存储一个或多个翻译,其中给定翻译对应于该一个或多个应用程序二进制文件的至少一部分。该一个或多个翻译可用于在该第二执行环境中执行,其中:该一个或多个应用程序二进制文件的该翻译可包括在执行由该一个或多个应用程序二进制文件表示的该一个或多个应用程序之前生成的该一个或多个应用程序二进制文件的对象级翻译;并且该一个或多个处理器可被配置为当该操作系统调用该一个或多个应用程序二进制文件的该执行时,在该运行时代码模块内执行该一个或多个应用程序二进制文件的该已高速缓存的翻译。
在一个实施方案中,该第一执行环境可包括源指令集,并且该第二执行环境可包括与该源指令集不同的目标指令集。在一个实施方案中,可为包括该一个或多个应用程序二进制文件的翻译的至少一部分的每个页面生成代码签名。存储该代码签名的数据结构可通过对该系统唯一的密钥来加密(例如,耦接到一个或多个处理器和存储器的安全飞地处理器可被配置为生成该唯一密钥)。在一个实施方案中,该对象级翻译可包括在执行期间由该一个或多个应用程序二进制文件使用的库的翻译。在一个实施方案中,该对象级翻译可包括在执行期间由该一个或多个应用程序二进制文件使用的插件的翻译。
在一个实施方案中,该系统服务可被配置为基于与该一个或多个应用程序二进制文件相关联的信息来生成散列值。该系统服务可将所生成的散列值存储在该存储器中的关联阵列中。所生成的散列值可用于确定该一个或多个应用程序二进制文件在该永久翻译高速缓存中是否可用并且确定该一个或多个应用程序二进制文件是否已被修改。当该一个或多个应用程序二进制文件已经被修改时,该系统可被配置为:从该永久翻译高速缓存中移除该一个或多个应用程序二进制文件的该翻译;以及生成新翻译。
在一个实施方案中,该运行时代码模块可被配置为确定对应于该正在执行的翻译的该一个或多个应用程序二进制文件是否已变得可写入。当该一个或多个应用程序二进制文件已经变得可写入时,该系统可被进一步配置为:从全局间接分支表中移除与该一个或多个应用程序二进制文件相关联的目标地址;取消链接存储在该运行时翻译高速缓存中的直接跳转到该已移除翻译的翻译;使全局计数器提前;暂停与该一个或多个应用程序二进制文件相关的线程的该执行;将与该一个或多个应用程序二进制文件相关的该线程强制为由该运行时代码模块执行的该一个或多个应用程序二进制文件的即时(JIT)翻译;以及恢复该线程的该执行。
在一个实施方案中,如果该一个或多个应用程序二进制文件包括自修改代码,则该系统可被配置为:写保护其中存储有该一个或多个应用程序二进制文件的该存储器中的页面;在异常处理程序中捕获对该受保护页面的写入;从全局间接分支表中移除与该一个或多个应用程序二进制文件相关联的目标地址;取消链接存储在该运行时翻译高速缓存中的直接跳转到该已移除翻译的翻译;使全局计数器提前;请求与该自修改代码相关的线程处理该无效;执行该自修改代码的JIT翻译;将该全局计数器值记录在与该翻译相关联的元数据中;将执行线程更新为该全局间接分支表的新版本;从与该执行线程相关联的返回堆栈中清除已移除翻译;经由对该全局间接分支表的查找将该分支的目标地址插入该翻译中;以及当所有线程达到该全局计数器值时,释放翻译。
在一个实施方案中,一种系统可包括一个或多个处理器,该一个或多个处理器被配置为执行在第一指令集架构中定义的指令;非暂态计算机可访问存储介质,该非暂态计算机可访问存储介质耦接到该一个或多个处理器。该非暂态计算机可访问存储介质可存储:一个或多个应用程序二进制文件,该一个或多个应用程序二进制文件具有与该第一指令集架构不同的第二指令集架构中定义的指令;永久翻译高速缓存,该永久翻译高速缓存存储对应于该一个或多个应用程序二进制文件的一个或多个部分的一个或多个已翻译代码序列,其中该一个或多个已翻译代码序列在被执行时执行与该一个或多个应用程序二进制文件的该一个或多个部分执行的操作基本上相同的操作;和二进制翻译器,该二进制翻译器包括在与该应用程序二进制文件分开的地址空间中执行的系统服务,以及可在具有该应用程序二进制文件的地址空间中执行的运行时代码模块。该系统服务可被配置为管理该永久翻译高速缓存,并且该运行时代码模块可被配置为管理针对其在该永久翻译高速缓存中不存在已翻译代码序列的应用程序二进制文件的即时(JIT)翻译。
在一个实施方案中,该系统服务可被配置为:响应于启动该一个或多个应用程序二进制文件中的给定应用程序二进制文件,针对对应的已翻译代码序列检查该永久翻译高速缓存,以及基于在该永久翻译高速缓存中检测到该对应的已翻译代码序列,将该对应的已翻译代码序列提供给该运行时代码模块。类似地,由该给定应用程序二进制文件使用的库可具有已翻译序列,该系统服务可针对由该启动的应用程序使用的已翻译库检查该永久翻译高速缓存。该已翻译库可被提供用于启动应用程序二进制文件。检查该永久翻译高速缓存可基于散列值,该散列值是基于该给定应用程序/库二进制文件而生成的。如果在生成了该对应的已翻译代码序列之后已经修改该给定应用程序二进制文件,则该散列值可不同于先前生成的散列值。在一个实施方案中,当对应的应用程序二进制文件被安装在该系统中时,生成该翻译高速缓存中的该一个或多个已翻译代码序列中的第一已翻译代码序列。在一个实施方案中,当在该系统中初始启动对应的应用程序二进制文件时,生成该永久翻译高速缓存中的该一个或多个已翻译代码序列中的第一已翻译代码序列。在一个实施方案中,当在系统中先前启动该对应的应用程序二进制文件时,该运行时翻译高速缓存中的该一个或多个已翻译代码序列中的第一已翻译代码序列被生成为对应应用程序二进制文件的JIT翻译。
在一个实施方案中,一种方法可包括启动第一应用程序二进制文件以用于在系统中执行。该第一应用程序二进制文件可以是针对第一执行环境编写的,并且该系统中的一个或多个处理器可被配置为在与该第一执行环境不同的第二执行环境中执行应用程序二进制文件。该方法还可包括确定由二进制翻译器生成的已翻译代码序列是否存储在该系统中的永久翻译高速缓存中。该二进制翻译器可包括可在该应用程序二进制文件的地址空间中执行的运行时代码模块和可在不同进程中执行的系统服务,并且确定该已翻译代码序列是否存储在该永久翻译高速缓存中可由该系统服务执行。该方法还可包括基于未被高速缓存在该翻译高速缓存中的该已翻译代码序列,由该运行时代码模块执行该第一应用程序二进制文件的即时翻译。该方法还可包括基于高速缓存在该翻译高速缓存中的该已翻译代码序列,在该运行时代码模块内执行该高速缓存的已翻译代码序列。
附图说明
以下详细描述参考附图,现在对这些附图进行简要描述。
图1是与一些实施方案一致的包括二进制翻译器的系统。
图2是示出与一些实施方案一致的图1的系统的磁盘存储器内的二进制翻译系统的图。
图3是与一些实施方案一致的在执行期间的系统存储器中的二进制翻译系统的一个实施方案的图。
图4是示出与一些实施方案一致的处理已高速缓存的二进制翻译的方法的流程图。
图5是示出与一些实施方案一致的处理对与已高速缓存的翻译相关联的二进制文件的修改的方法的流程图。
图6是示出与一些实施方案一致的用于处理自修改代码的方法的流程图。
图7是示出与一些实施方案一致的处理对与正在执行的已高速缓存的翻译相对应的原始二进制文件的修改的方法的流程图。
图8是示出处理已翻译代码中的异常或其他中断(代码停止)的方法的一个实施方案的流程图。
尽管本公开中所述的实施方案可受各种修改形式和另选形式的影响,但其具体实施方案在附图中以举例的方式示出并将在本文中详细描述。然而,应当理解,附图和对其的具体实施方式不旨在将实施方案限制为所公开的特定形式,而相反,本发明旨在涵盖落入所附权利要求书的实质和范围内的所有修改、等同物和另选方案。本文所使用的标题仅用于组织目的,并不旨在用于限制说明书的范围。
具体实施方式
图1是与一些实施方案一致的包括二进制翻译器的系统100。如图1所示,系统100包括处理器102、主存储器104、输入/输出(I/O)电路106、GPU 108、各种外围设备110和磁盘存储器112。处理器102、系统存储器104、I/O 106、GPU 108、外围设备110和磁盘存储器112可通过总线114彼此耦接,使得系统部件102-112是总线114的代理。
处理器102可包括一个或多个核心116-1-116-N和处理器高速缓存118。处理器102可表示执行计算操作的通用处理器。例如,处理器102可以为中央处理单元(CPU),诸如微处理器、微控制器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)。处理器102可以为独立部件,或者可以与其他部件(例如,其他处理器或片上系统(SOC)中的其他部件)一起集成到集成电路上。处理器102可以为具有其他部件的多芯片模块(MCM)中的部件。
根据一些实施方案,处理器102可被配置为执行在由处理器102和处理器核心116-1-116-N实现的执行环境(诸如指令集架构(ISA))中定义的指令。ISA可包括由Intel开发的x86 ISA original和由AMD和Intel开发的相关x86-64 ISA、来自安谋控股公司(ARMHoldings)的ARM和AArch64 ISA、来自IBM/Motorola的PowerISA和PowerPC ISA、RISC-VISA等。指令在指令集架构中定义,包括其在存储器中的编码、其操作,以及其对寄存器、存储器位置和/或其他处理器状态的影响。ISA的给定具体实施可直接执行每个指令,但其形式可通过处理器102中的解码和其他操纵来改变。另一个具体实施可将至少一些指令解码成多个指令操作以供核心116-1-116-N执行。在一些实施方案中,一些指令可被微编码。因此,术语“指令操作”在本文中可用于指核心116-1-116-N被配置为作为单个实体来执行的操作。指令可以与指令操作具有一一对应的关系,并且在一些情况下,指令操作可以是指令。指令还可以与指令操作具有一对多(一对多)的对应关系。指令操作在本文中可以更简单地称为“操作”。
核心116-1-116-N可包括各种执行单元,每个执行单元被配置为执行各种类型(例如,整数、浮点、向量、多媒体、加载/存储等)的操作。核心116-1-116-N可包括不同数量的流水线阶段以及诸如分支预测的各种其他性能增强特征。核心116-1-116-N可包括指令解码单元、调度器或保留站、重排序缓冲器、存储器管理单元、I/O接口等中的一者或多者。
处理器高速缓存118可以是易失性存储器或非易失性存储器。在一些实施方案中,处理器高速缓存118可以是静态随机存取存储器(SRAM)。另外的处理器高速缓存可包括指令高速缓存和数据高速缓存。处理器高速缓存118可被组织为一个或多个高速缓存级别(诸如级别1(L1)、L2、L3等)的层次结构。
在一些实施方案中,处理器102还可包括安全飞地处理器(SEP)119。SEP可以是处理器102内的自含式片上系统(SOC),包括其自身的处理器和一个或多个安全外围设备。SEP119可与处理器102的其余部分隔离,使得可严格地控制对SEP 119的访问。例如,处理器102可以仅能够通过邮箱机制与SEP 119通信,其中处理器102可将消息写入邮箱,SEP 119可通过邮箱读取该消息并且响应于该消息。
在一个实施方案中,SEP 119可管理系统100的密码密钥。在一个实施方案中,在系统100上执行的软件可请求密钥,并且系统100可对于请求软件生成“经包装”密钥。经包装密钥是使用包装密钥来加密的,该包装密钥在硬件中传输到SEP 119中的密码硬件。使用包装密钥,SEP中的接收密码硬件可解密由软件提供的经包装密钥,从而获得要使用的实际密钥。不安全的软件无法访问实际密钥。
磁盘存储器112可包括易失性和/或非易失性存储器并且可用作系统100的长期存储设备。磁盘存储器112可存储一个或多个应用程序120,该一个或多个应用程序在由处理器102执行时可致使系统100执行一个或多个步骤、操作或功能,并且可包括软件应用程序。应用程序120可包括一个或多个二进制文件。应用程序120可被编写以用于在特定执行环境(诸如特定指令集架构)中执行。在一些实施方案中,针对其编写应用程序120的执行环境是与处理器102被设计成执行的执行环境不同的执行环境。在此类实施方案中,应用程序120被认为是针对源执行环境编写的,而处理器能够在目标执行环境中执行。如贯穿全文所讨论的,系统100可以能够翻译为第一或源执行环境编写的应用程序二进制文件以用于在第二或目标执行环境中使用。返回图1,磁盘存储器112可包括永久翻译高速缓存122和操作系统124。操作系统124可包括用于任何众所周知的操作系统(诸如MacOS X等)的指令和框架。
更一般地,磁盘存储器112和/或主存储器104可以是计算机可访问存储介质的示例。一般来讲,计算机可访问存储介质可包括在使用期间能够被计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质可包括诸如磁性或光学介质的存储介质,例如,盘(固定或可拆卸)、带、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光。存储介质还可包括易失性或非易失性存储器介质,诸如RAM(例如,同步动态RAM(SDRAM)、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、ROM或闪存存储器。存储介质可被物理地包括在存储介质将指令/数据提供至其的计算机内。另选地,存储介质可连接至计算机。例如,存储介质可通过网络或无线链路诸如网络附接存储装置而被连接至计算机。存储介质可通过外围接口诸如通用串行总线(USB)而被连接。通常,计算机可访问存储介质可以非暂态方式存储数据,其中非暂态在该上下文中可指不通过信号传输指令/数据。例如,非暂态存储装置可为易失性的(并且响应于断电事件而可能会丢失所存储的指令/数据)或为非易失性的。计算机可访问存储介质可存储图1中示出的各种部件,诸如永久翻译高速缓存122、应用程序120和/或操作系统124。
I/O电路106和/或外围设备110可以是包括在系统100中的附加硬件功能的任何集合。例如,外围设备110可包括视频外围设备,诸如被配置以处理来自相机或其他图像传感器的图像捕获数据的图像信号处理器、图形处理单元(GPU)(诸如图1所示的GPU 108)、视频编码器/解码器、缩放器、旋转器、混合器、视频显示控制器、显示器(诸如液晶显示器(LCD))、发光二极管显示器(LED)(诸如有机LED(OLED))、等离子体显示器等,包括与触摸感测技术集成以充当输入设备的显示器。外围设备可包括视频外围设备诸如麦克风、扬声器、麦克风和扬声器的接口、音频处理器、数字信号处理器、混合器等。I/O电路106可包括用于系统外部的各种接口的接口控制器,该各种接口包括接口诸如通用串行总线(USB)、包括外围部件互连件标准(PCIe)的PCI、串行端口以及并行端口等等。外围设备可包括联网外围设备诸如媒体访问控制器(MAC)。任何硬件集合可被包括作为外围设备110和/或I/O电路106。外围设备可包括其他用户接口设备,诸如键盘、鼠标或其他指向设备等。
总线114可以是通信结构的示例。通常,通信结构可为用于在系统100的部件间进行通信的任何通信互连器和协议。通信结构可为基于总线(例如,总线114)的,包括共享总线配置、交叉开关配置、和具有桥的分层总线。通信结构也可为基于分组的,并且可为具有桥的分层、交叉开关、点到点、或其他互连器。
主存储器104可包括存储器控制器和一个或多个存储器设备。存储器控制器通常可包括用于从系统100的其他部件接收存储器操作并用于访问存储器设备以完成存储器操作的电路。存储器控制器可被配置为访问任何类型的存储器设备。例如,存储器设备可以是静态随机存取存储器(SRAM)、动态RAM(DRAM)诸如包括双倍数据速率(DDR、DDR2、DDR3、DDR4等)DRAM的同步DRAM(SDRAM)。可支持DDR DRAM的低功率/移动版本(例如,LPDDR、mDDR等)。存储器控制器可包括存储器操作队列,以用于对这些操作进行排序(并且可能重新排序),并将这些操作呈现至存储器设备。存储器控制器还可包括用于存储等待写到存储器设备的写数据和等待返回给存储器操作来源的读数据的数据缓冲器。在一些实施方案中,存储器控制器可包括用于存储最近访问的存储器数据的存储器高速缓存。在一些情况下,存储器高速缓存也可被称为系统高速缓存,其与私有高速缓存诸如处理器高速缓存118不同,该私有高速缓存只服务于某些部件。主存储器104可存储用于执行的各种代码,诸如应用程序120、从永久翻译高速缓存122读取的对应翻译、操作系统124等。在一个实施方案中,各种运行时数据结构也可在主存储器104中。例如,主存储器104可存储全局间接分支表117。全局间接分支表117可以是由二进制翻译器管理以将来自应用程序120的间接分支目标地址映射到对应的已翻译代码序列中的间接分支目标地址的数据结构。
在一些实施方案中,永久翻译高速缓存122可包括为一个执行环境开发或编写的二进制文件到与第一执行环境不同的第二执行环境的翻译。二进制文件可包括可执行文件、应用程序、链接器、库等。在一些实施方案中,二进制文件可包括Mach-O对象。在一些实施方案中,存储在翻译高速缓存中的已翻译二进制文件可使用由SEP 119生成的对系统100唯一的密钥来签名,使得除非翻译被签名,否则翻译对于系统100将为不可用的。此外,永久翻译高速缓存122可与操作系统124一起驻留在磁盘存储器112的读/写分区中。更具体地,当由处理器102执行时,给定二进制文件的翻译可致使系统100在系统100中执行的操作与系统在针对其编写二进制文件的第一执行环境(例如,ISA)中执行的操作基本上相同。由于第二执行环境不同于第一执行环境,因此在操作中可能存在一些差异。例如,在一些情况下,可使用由处理器120实现的ISA中的多个指令来执行与二进制文件被写入的ISA中的单个指令相同的操作。因此,与在其原始执行环境中执行原始二进制文件相比,在二进制文件的执行期间流逝的时间量可能不同。然而,原始二进制文件的功能可被维持,例如,在已翻译二进制文件中相同地维持。
图2是示出与一些实施方案一致的系统100的磁盘存储器112内的二进制翻译系统200的图。如图2所示,二进制翻译系统(或仅“二进制翻译器”)200包括系统服务202和运行时代码模块204。在一些实施方案中,运行时代码模块204是存在于与磁盘存储器112内的应用程序120相对应的地址空间中的运行时服务,并且是在第二执行环境中执行已翻译应用程序120的位置。系统服务202可负责管理对存储在永久翻译高速缓存122中的翻译的访问,以及在自修改代码或其他动态修改代码的情况下存储在永久翻译高速缓存122中的翻译的一致性。系统服务202可在已高速缓存的翻译不存在或无效时管理翻译的调度,并且可执行翻译。具体地,系统服务202可负责处理对永久翻译高速缓存122的调用、确定与应用程序120的一个或多个二进制文件206-1-206-N(下文中称为二进制文件206)相关联的散列值、以及向全局散列表208写入查找并且从该全局散列表执行查找。在一些实施方案中,系统服务202可经由来自操作系统124的过程间通信(IPC)调用来处理对二进制翻译器202的请求。运行时代码模块204可负责处理即时(JIT翻译)并且还可负责监测由应用程序在执行期间更新的寄存器(例如,在源ISA或应用程序120最初被写入的执行环境中定义的寄存器)的状态。
如图2中进一步示出的,应用程序120包括应用程序二进制文件206。如前所讨论,二进制文件206可包括可执行文件、应用程序、链接器、库等。在一些实施方案中,二进制文件206可包括Mach-O对象。在一些实施方案中,磁盘存储器还可包括共享库和/或共享高速缓存210,其可存储可由多个应用程序、服务和/或操作系统124本身利用的库和高速缓存。
在一些实施方案中,二进制文件206可在它们经由与操作系统124相关联的标准或可信安装过程来安装到系统100上时被翻译。翻译过程可作为安装的一部分来执行(例如,安装可直到翻译完成才完成),或者作为在安装期间和/或之后的后台过程来执行。对于其他安装,诸如侧加载或通过可移除盘介质,二进制翻译器200可在应用程序120的第一次启动或任何二进制文件206的第一次使用时翻译二进制文件206。如果由于错误或由于错误预测而导致的翻译失败而不能翻译二进制文件206,则运行时代码模块204包括即时(JIT)翻译过程,当系统100尝试执行应用程序120时,该即时(JIT)翻译过程将翻译与该二进制文件206相关联的较小指令集。当操作系统124被更新时,系统服务202可删除永久翻译高速缓存122内的所有已高速缓存的翻译,并且发起后台过程以重新翻译先前已高速缓存的所有二进制文件206。此外,当二进制翻译器200被添加到系统100时,二进制翻译器100可翻译与操作系统124相关的共享库和共享高速缓存210。
为了执行为在第一执行环境中执行而编写的二进制文件的翻译以用于在第二执行环境中使用,系统服务202可识别进入二进制文件206的一个或多个入口点以确定可能是代码并需要翻译的二进制文件的潜在部分。在一些实施方案中,第一执行环境可包括对可变大小指令的支持,而第二执行环境可仅包括对固定大小指令的支持。在这些实施方案中,系统服务202可在沿途的多个步骤找到用于翻译的潜在有效指令,因为它可能基于指令的大小不知道指令边界。系统服务202可使用由静态链接器为动态链接器提供的信息来识别进入二进制文件206的入口点。具体地,在一些实施方案中,操作系统124可包括动态链接器,该动态链接器将应用程序链接到共享库210并且将特定代码放置在磁盘存储器112中的地址点处,应用程序120在链接时通过该特定代码来编码,这允许应用程序120在其需要利用动态链接器而不是直接与动态链接器交互时使用机器特定调用或将指令跳到那些地址点中的一者。系统服务202可利用这些特定地址点作为用于识别需要翻译的代码的入口点。一旦入口点已被识别并且需要翻译的代码已被识别,系统服务202就可将针对第一执行环境编写的已识别代码翻译成可在第二执行环境中执行的代码。系统服务202可将翻译保存在磁盘存储器112中的永久翻译高速缓存122中,并且通过执行应用程序二进制文件206的散列并将该散列存储在阵列208中来更新关联阵列208。
图3是示出在操作期间的主存储器104的一个实施方案的框图。地址空间的各个部分可由操作系统124映射为系统服务空间320和用户(或无特权)空间322。例如,操作系统124可将存储器的页面定义为虚拟到物理地址翻译机制中的特权空间或用户空间322,作为翻译中的页面属性之一。特权空间可以是操作系统124本身在其中执行的地址空间,或者在基于内核的实施方案中至少是操作系统124的内核部分。用户空间322可以是应用程序120在其中执行的空间。系统服务空间320也可以是用户空间,但可与已翻译应用程序在其中运行的地址空间分离(例如,系统服务可以是与已翻译应用程序不同的过程,而运行时代码模块204可在已翻译应用程序的地址空间中执行)。一般而言,在用户空间322中执行的代码可能不被准许执行操作系统124为其自身保留的控制关键处理器状态的某些指令。
如前所述,系统服务202可在系统服务空间320中执行,并且可维持永久翻译高速缓存122。永久翻译高速缓存122。永久翻译高速缓存122可在用户空间中以使得已翻译代码可由处理器102执行,但对永久翻译高速缓存122的访问可由系统服务202控制(例如,当给定应用程序120被调用以供执行时生成散列并检查以用于翻译)。另选地,当启动对应的应用程序或者调用对应于高速缓存翻译的入口点时,来自永久翻译高速缓存122的翻译可被映射到存储器中。翻译可被加载到存储器中并且指向翻译的指针可被提供给运行时代码模块204。翻译可被加载到用户空间322中的应用程序的地址空间中。如果多个线程正在执行相同翻译,则翻译可被映射到每个线程的地址空间中。另选地,线程可共享翻译的公共副本。可存在从永久翻译高速缓存122加载翻译的其他时间点。例如,动态链接器可将各种动态链接库链接到应用程序。如果针对第一执行环境写入动态链接库,则动态链接器可请求运行时代码模块204确定在永久翻译高速缓存122中是否存在翻译。运行时代码模块204可查询系统服务以确定是否存在翻译,并且可确定翻译的大小。另选地,动态链接器可查询系统服务并且将大小提供给运行时代码模块以分配用于已翻译库的存储器。动态链接器可加载原始库代码,并且可请求运行时代码模块204加载对应翻译并且提供指向该翻译的指针。
如上所述,运行时代码模块204在用户空间322中执行(并且更具体地,当应用程序120被写入与处理器102的ISA不同的ISA时,在应用程序120的地址空间中执行)。当在永久翻译高速缓存122中未找到应用程序120的对应翻译或其一部分时,运行时代码模块204可针对由运行时代码模块204生成的JIT翻译维持运行时翻译高速缓存122。
在一个实施方案中,由运行时代码模块204生成的JIT翻译也可作为翻译安装在永久翻译高速缓存122中。虽然JIT翻译通常可覆盖当执行应用程序120时动态生成的该应用程序的小部分,但如果JIT翻译开始覆盖整个应用程序的足够大的部分(例如,阈值量),则JIT翻译可由系统服务202安装在永久翻译高速缓存122中并且被保持以供稍后执行。在其他实施方案中,JIT翻译可不安装在永久翻译高速缓存122中,并且因此可在每次调用对应应用程序时由运行时代码模块204生成。在又另一个实施方案中,JIT翻译的生成可用作对二进制翻译器200的提示以考虑要在永久翻译高速缓存122中安装的翻译。如果二进制翻译器200确定应当执行翻译,则二进制翻译器200可执行与JIT翻译分开的翻译并且可将分开生成的翻译安装在永久翻译高速缓存122中。各种因素可确定JIT翻译是否导致针对永久翻译高速缓存122的翻译(例如,使用JIT翻译,或在应用程序的不同执行期间随时间生成JIT翻译的频率;JIT翻译是否由于自修改代码,由此自修改代码可不安装在永久翻译高速缓存122中;等)。
共享库/高速缓存210还可在用户空间322中,或者可在特权空间或空间的组合中(例如,库210可在逐个库的基础上处于特权空间或用户空间322中)。
图4是示出与一些实施方案一致的处理已高速缓存的二进制翻译的方法400的流程图。如图4所示,当调用应用程序120时(步骤402),可进行检查以确定应用程序120是否是针对第一执行环境编写的(步骤404)。在一些实施方案中,应用程序诸如应用程序120可包括一个或多个二进制文件206,该一个或多个二进制文件被编写以用于在第一执行环境(诸如x86或x86-64等)中执行,这需要能够执行那些指令的处理器。如果应用程序120不是针对第一执行环境编写的并且替代地能够在第二执行环境(其例如可以是ARM或AArch64)内本地运行,则应用程序120可本地运行(步骤406)。如果应用程序120是针对第一执行环境编写的,则可将它传递到二进制翻译系统200的系统服务202(步骤408)。在一些实施方案中,用于将应用程序传递到系统服务202的代码可以是运行时代码模块204的一部分。系统服务202可基于与应用程序的一个或多个二进制文件206相关联的元数据和/或二进制文件206自身来计算散列值,并且将所生成的散列与关联阵列208中的一个或多个散列值进行比较以确定在永久翻译高速缓存122中是否存在已高速缓存的翻译,或者期望的已高速缓存的翻译是否不可用(步骤410)。如果在阵列208中发现匹配,则可通过准许对已高速缓存的翻译的访问(由系统服务202对运行时模块204的访问)来使用已高速缓存的翻译。可使用标准操作系统调用将已高速缓存的翻译映射到存储器中(例如,在如图3所示的应用程序的用户地址空间322中)(步骤412)。然后,可在运行时代码模块204内的第二执行环境中执行已翻译应用程序二进制文件(步骤414)。当散列不匹配时,应用程序120可能先前未被翻译。在这种情况下,系统服务202可开始翻译应用程序二进制文件206的后台过程(步骤416)并且将所得的翻译安装在永久翻译高速缓存122中。并行地,运行时代码模块204可生成用于当前执行的代码的JIT翻译。然后,可在运行时代码模块204内的第二执行环境中执行JIT翻译(步骤414)。
图5是示出与一些实施方案一致的处理对与已高速缓存的翻译相关联的二进制文件的修改的方法500的流程图。如图5所示,当调用应用程序120时(步骤502),可进行检查以确定应用程序是否是针对第一执行环境编写的(步骤504)(例如,类似于图4的实施方案)。在一些实施方案中,应用程序诸如应用程序120可包括一个或多个二进制文件206,该一个或多个二进制文件被编写以用于在第一执行环境(诸如x86或x86-64等)中执行,这需要能够执行那些指令的处理器。如果应用程序120不是针对第一执行环境编写的并且替代地能够在第二执行环境(其例如可以是ARM或AArch64)内本地运行,则应用程序可本地运行(步骤506)。如果应用程序是针对第一执行环境编写的,则可由运行时代码模块204将它传递到二进制翻译系统200的系统服务202(步骤508)。系统服务202可基于与应用程序的一个或多个二进制文件206相关联的元数据或二进制文件206本身来计算散列值,并且将该散列值与关联阵列208中的一个或多个值进行比较以确定在永久翻译高速缓存122中是否存在已高速缓存的翻译或者应用程序是否已经被修改(步骤510)。如果在阵列208中发现匹配,则可通过准许对已高速缓存的翻译的访问来使用已高速缓存的翻译,该已高速缓存的翻译然后可使用标准操作系统调用将该特定应用程序映射到存储器上(步骤512)。可通过运行时代码模块204在第二执行环境中执行翻译(步骤520)。当散列不匹配时,应用程序120可能已经被修改并且需要新翻译。在这种情况下,系统服务202可移除已高速缓存的翻译(步骤514),并且系统服务202可生成新翻译(步骤516),然后将所生成的新翻译发送到运行时代码模块204(步骤518)以用于在运行时代码模块204内在第二执行环境内执行(步骤520)。
与一些实施方案一致,二进制翻译系统200还可管理多线程资源。在一些实施方案中,运行时代码模块204可使用特定的基于时间的处理来管理其资源,这被称为基于时期的回收。在基于时期的回收中,系统100上的每个执行线程可与当前时期相关联,该当前时期指示线程何时最后退出运行时代码模块204并且丢弃进入共享状态的任何指针。线程可异步地请求其他线程提前其时期,或者它们执行少量任务中的一者。当所有线程已经前进到足够近的时期时,可以解除分配共享资源。
图6是示出与一些实施方案一致的用于处理自修改代码的方法600的流程图。一些执行环境(例如x86和x86-64)允许应用程序采用自修改代码,并且二进制翻译系统200还可以能够处理自修改代码。在一些实施方案中,第一执行环境可积极地维持数据和指令高速缓存之间的相干性以及指令流水线,其可在生成时调用自修改代码。为了处理这种自修改代码,二进制翻译系统200可初始地写保护针对第一执行环境编写的二进制文件206的存储器中的任何代码页面,该二进制文件已经被翻译成针对第二执行环境编写的代码(步骤602)。然后,如果发生写入(其可以是存储指令,或者经由系统调用等修改存储器中的该页面的尝试),则系统服务202可将该写入捕获到运行时代码模块204中的异常处理程序(步骤604)。然后,运行时代码模块204中的异常处理程序可从全局间接分支表117中移除对该页面的任何分支目标(步骤606),并且取消链接直接跳转到受影响的翻译的任何翻译(步骤608)。然后,异常处理程序可使全局时期计数器提前(步骤610),异步地请求所有其他线程处理该代码无效(步骤612),并且将提前的全局时期计数器值记录在每个受影响翻译的元数据中(步骤614)。当处理异步请求时,其他线程更新到间接分支表117的最新版本,从其返回堆栈高速缓存清除任何已移除的翻译(或者简单地清除整个高速缓存)(步骤616),并且通过执行来自间接分支表117的新查找来输入已翻译代码(步骤618)。然后,原始线程的执行可继续进行捕获写入。当所有其他线程到达新更新的时期时,受影响的翻译可从锁中释放并且继续执行(步骤620)。应当注意,在一个实施方案中,方法600可由运行时代码模块204在应用程序的地址空间中处理。
图7是示出与一些实施方案一致的处理对与正在执行的已高速缓存的翻译相对应的原始二进制文件的修改的方法700的流程图。如图6所示,当已高速缓存的翻译正在运行时代码模块204内执行时(步骤702),运行时代码模块204可确定对应于当前正在执行的已高速缓存的翻译的原始二进制文件已经是可写入的(步骤704)。在一些情况下,与已高速缓存的翻译相对应的应用程序120可在执行期间通过使二进制文件可写入来修改二进制文件206,从而指示它可能被修改,这可使得二进制文件206的先前已高速缓存的翻译无效。然后,运行时代码模块204中的异常处理程序可从全局间接分支表117中移除对该页面的任何分支目标(步骤706),并且取消链接直接跳转到受影响的翻译的任何翻译(步骤708)。在一个实施方案中,二进制翻译器200可维持从作为翻译入口点的原始(未翻译)代码地址到对应翻译本身的映射。映射允许二进制翻译器200有效地执行有序查询。当受影响的翻译对于对给定页面中的代码的写入无效时,可使该时期的对任何地址的映射无效。异常处理程序可使全局时期计数器提前(步骤710)。然后,运行时代码模块204可向操作系统124发送消息以暂停所有执行线程(步骤712)。然后,运行时代码模块204可检查是否有任何线程正在运行已高速缓存的翻译,并且如果它们是这样的话,则运行时代码模块204强制地将它们重定向到由运行时代码模块204生成的JIT翻译(步骤714)。例如,每个线程的线程特定上下文可包括指示线程所观察到的最后全局时期改变的变量。变量可由线程以原子方式写入并且由其他线程以原子方式读取。运行时代码模块可恢复在运行时代码模块204内在第二执行环境中执行所有线程(步骤716)。在一些实施方案中,JIT翻译不被高速缓存在磁盘存储器112中,而是仅被临时保存在运行时代码模块204的可写入地址空间内。
在一些实施方案中,二进制翻译系统200还可以能够处理间接分支。具体地,可使用全局间接分支表117来执行间接分支查找,其中多个线程可在没有同步的情况下读取该表,但是写入器采取锁来修改它。当表117的大小增加时,则只有更新其本地表指针以指向最新版本的线程才得到新版本,这当线程从运行时代码模块204返回到已翻译代码时发生(如果必要的话)。在一些实施方案中,使用基于时期的回收来处理旧表117版本的回收(在表生长之后)。可原位处理删除,因为表117被线性探测。存在竞争条件,其中一个线程可能正在读取而另一个线程正在删除,从而错误地检测高速缓存未命中。这可通过使永久翻译高速缓存122未命中代码路径采用正由写入器使用的相同锁来处理。函数返回是特定类型的间接分支,其可通过使用返回堆栈分支预测器的软件版本来处理。来自第一执行环境的程序计数器和用于第二执行环境的已翻译程序计数器的对被存储在堆栈中。在返回时,检查返回地址以查看其是否匹配与用于第一执行环境的程序计数器相关联的已存储地址,并且如果匹配,则返回所保存的已翻译程序计数器。否则,如正常那样处理间接分支处理。
在一些实施方案中,当系统100正在执行已翻译应用程序120时,运行时代码模块204可监测已翻译指令的执行以通过确保指令执行的异常、陷阱和其他中断发生在目标执行环境中的对应于源执行环境中的指令的开始或结束(“指令边界”)的指令处来改善翻译的准确性。也就是说,源ISA中的给定指令可翻译为目标ISA中的多个指令。如果已翻译指令序列中的指令执行在不表示源指令的边界的指令中的一者处中断,则处理器102的寄存器状态和/或其他架构化状态可反映源ISA指令的部分执行,这在本地执行源ISA的处理器上是不可能的。例如,操作系统124可包括各种机制以在停止已翻译指令序列中的执行之后查询寄存器(例如,为了调试目的)。运行时代码模块204可监测已翻译指令的执行以确保在第二执行环境中的每个执行点处,运行时代码模块可使执行快进或倒回少量指令以根据第一执行环境产生准确的寄存器状态,如同二进制文件实际上正相对于第一执行环境中观察到的指令边界精确地执行。在一些实施方案中,该过程可允许已翻译指令的执行表现为如同它们正被以原子方式执行,如同在第一执行环境内执行而不是使用为第二执行环境设计的指令在第二执行环境中执行。
图8是示出处理已翻译代码中的异常或其他中断(代码停止)的方法800的一个实施方案的流程图。异常可以是由于相对于执行指令检测到的状况而导致的代码的同步停止。在一些情况下,中断可与指令执行异步(例如,源自设备的外部中断,或由另一个线程发出的中断)。当指令完成执行时,采取中断,但中断可与该指令的执行无关。当异常和中断在已翻译代码的执行期间发生时,它们在已翻译指令之间发生,但可能不在对应源指令的指令边界处发生,因为可能存在用于仿真源指令的多于一个已翻译指令。
因此,正在执行翻译(步骤802)。如果没有检测到代码停止(判定步骤804,“否”分支),则翻译执行可继续(步骤802)。另一方面,如果检测到代码停止(判定步骤804,“是”分支),则运行时代码模块204可检查代码序列以确定代码停止是否在源指令边界处发生(步骤806)。例如,在一个实施方案中,二进制翻译器200可遵循一组规则而生成翻译,并且因此对代码序列的检查(在停止附近分解指令)可允许二进制翻译器200确定给定源指令的边界在哪里以及源指令在停止时的进展是什么。如果停止发生在指令边界上(判定步骤808,“是”分支),则可在指令边界处,处理停止(步骤816)。如果否(判定步骤808,“否”分支),则运行时代码模块204可确定源执行环境的任何架构化状态是否已被修改(以及该修改是否可被逆转以恢复源指令的开始时的状态)(判定步骤810)。如果没有架构化状态已经被修改,或者如果架构化状态已经被修改并且逆转是可能和期望的而不是前滚(判定步骤810,“否”分支),则运行时代码模块204可将状态回滚到源指令的开始(步骤820)并且可处理停止(步骤816)。如果架构化状态已经被不可逆地修改,或者如果不期望回滚(判定步骤810,“是”分支),则运行时代码模块可经由运行时代码模块204仿真源指令执行的剩余部分、利用指令的结果修改架构化状态来确定是否能够进行前滚(判定步骤812)。如果前滚是可能的(判定步骤812,“是”分支),则运行时代码模块204可前滚到下一个指令边界(框814)并且可在该指令边界处,处理停止(步骤816)。如果前滚不是可能的(判定步骤812,“否”分支),则可终止已翻译代码序列执行(步骤818)。
***
本公开包括对“实施方案”或“实施方案”的组(例如,“一些实施方案”或“各种实施方案”)的引用。实施方案是所公开概念的不同具体实施或实例。对“实施方案”、“一个实施方案”、“特定实施方案”等的引用并不一定是指相同的实施方案。设想了大量可能的实施方案,包括具体公开的那些,以及落入本公开的实质或范围内的修改或替代。
本公开可讨论可由所公开的实施方案产生的潜在优点。并非所有这些实施方案的具体实施都将必然表现出任何或所有潜在优点。特定具体实施是否实现了优点取决于许多因素,其中一些因素在本公开的范围之外。事实上,存在许多原因导致落入权利要求范围内的具体实施可能不表现出任何所公开的优点中的一些或全部。例如,特定具体实施可包括在本公开的范围之外的其他电路,结合所公开的实施方案中的一个实施方案,该其他电路否定或减弱一个或多个所公开的优点。此外,特定具体实施(例如,具体实施技术或工具)的次优设计执行也可能否定或减弱所公开的优点。即使假设有技术的具体实施,优点的实现仍可取决于其他因素,诸如部署具体实施的环境情况。例如,提供给特定具体实施的输入可防止本公开中解决的一个或多个问题在特定场合发生,结果可能无法实现其解决方案的益处。考虑到本公开外部的可能因素的存在,本文所述的任何潜在优点都不应理解为是为了证明侵权行为而必须满足的权利要求限制。相反,此类潜在优点的识别旨在示出受益于本公开的设计者可用的一种或多种改进类型。永久性地描述此类优点(例如,陈述特定优点“可能出现”)并非旨在传达关于此类优点实际上是否可被实现的疑问,而是认识到此类优点的实现通常取决于附加因素的技术现实。
除非另行指出,否则实施方案是非限制性的。也就是说,所公开的实施方案并非旨在限制基于本公开起草的权利要求的范围,即使仅针对特定特征描述单个示例的情况下也是如此。本发明所公开的实施方案旨在为示例性的而非限制性的,而无需在本发明中进行任何相反的陈述。因此本申请意在允许涵盖所公开实施方案的权利要求、以及此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
例如,本申请中的特征可以任何合适的方式组合。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地讲,参照所附权利要求,从属权利要求的特征在适当的情况下可与其他从属权利要求的特征组合,包括从属于其他独立权利要求的权利要求。类似地,在适当的情况下,可组合来自相应独立权利要求的特征。
因此,虽然所附从属权利要求可撰写成使得每个从属权利要求从属于单个其他权利要求,但也可设想附加从属关系。可设想符合本公开的从属特征的任何组合,并且这些组合可在本专利申请或另一专利申请中受权利要求书保护。简而言之,组合不限于所附权利要求中具体列举的那些。
在适当的情况下,还预期以一种格式或法定类型(例如,装置)起草的权利要求旨在支持另一种格式或法定类型(例如,方法)的对应权利要求。
***
因为本公开是法律文件,所以各种术语和短语可受到管理和司法解释的约束。特此给出公告,以下段落以及贯穿本公开提供的定义将用于确定如何解释基于本公开起草的权利要求。
除非上下文另有明确规定,否则对单数形式的项目的引用(即,前面有“一个”、“一种”或“该”的名词或名词短语)旨在表示“一个或多个”。因此,在不伴随上下文的情况下,对权利要求中的“项目”的引用并不排除该项目的附加实例。“多个”项目是指两个或更多个项目的集合。
词语“可”在本文中在允许的意义上(即,具有潜在可能的,能够的)进行使用,而不是在强制意义上(即,必须)进行使用。
术语“包含”和“包括”及其形式是开放式的,并且意指“包括但不限于”。
当在本公开中相对于选项列表使用术语“或”时,除非上下文另有提供,否则一般将理解为以包含性意义使用。因此,表述“x或y”等同于“x或y,或两者”,因此涵盖1)x但不是y,2)y但不是x,以及3)x和y两者。另一方面,短语诸如“x或y中的任一者,但不是两者都”使得清楚“或”以排他性意义使用。
表述“w、x、y或z,或它们的任何组合”或“...w、x、y和z中的至少一者”旨在涵盖涉及最多至该集合中元件总数的单个元件的所有可能性。例如,给定集合[w,x,y,z],这些短语涵盖集合中的任何单个元素(例如,w但不是x、y或z)、任何两个元素(例如,w和x,但不是y或z)、任何三个元素(例如,w、x和y,但不是z)以及所有四个元素。短语“...w、x、y和z中的至少一者”因此是指集合[w,x,y,z]中的至少一个元素,从而涵盖该元素列表中的所有可能的组合。该短语不应被解释为要求存在w的至少一个实例、x的至少一个实例、y的至少一个实例和z的至少一个实例。
在本公开中,各种“标签”可先于名词或名词短语。除非上下文另有提供,否则用于特征(例如,“第一电路”、“第二电路”、“特定电路”、“给定电路”等)的不同标签是指特征的不同实例。除此之外,除非另有说明,否则标签“第一”、“第二”和“第三”在应用于特征时并不暗示任何类型的排序(例如,空间、时间、逻辑等)。
短语“基于”或用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。此短语也旨在覆盖A仅基于B来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
短语“响应于”和“响应”描述了触发效应的一个或多个因素。该短语不排除附加因素可影响或以其他方式触发效应的可能性,这些因素与指定因素联合使用或独立于指定因素。也就是说,效果可以仅仅响应于这些因素,或者可以响应于指定的因素以及其他未指定的因素。考虑短语“响应于B执行A”。该短语指定B是触发A的执行或触发A的特定结果的因素。该短语不排除执行A也可能响应于某些其他因素,诸如C。该短语也不排除执行A可响应于B和C而联合执行。此短语也旨在覆盖A仅响应于B而执行的实施方案。如本文所用,短语“响应”与短语“至少部分地响应于”是同义的。类似地,短语“响应于”与短语“至少部分地响应于”是同义的。
***
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被说成“被配置为”执行某个任务,即使该结构当前并非正被操作。因此,被描述或表述为“被配置为”执行某个任务的实体指代用于实施该任务的物理的事物,诸如设备、电路、具有处理器单元的系统和存储有可执行程序指令的存储器等。此短语在本文中不被用于指代无形的事物。
在一些情况下,各种单元/电路/部件在本文中可被描述为执行一组任务或操作。应当理解,这些实体“被配置为”执行那些任务/操作,即使没有具体指出。
术语“被配置为”并不旨在意指“可配置为”。例如,未编程的FPGA不会被认为是“被配置为”执行特定功能。然而,该未编程的FPGA可以“可配置为”执行该功能。在适当编程之后,FPGA然后可认为“被配置为”执行特定功能。
出于基于本公开的美国专利申请的目的,在权利要求中陈述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求要素不援引35U.S.C.§112(f)。如果申请人在基于本公开的美国专利申请的申请过程中想要援引112(f)部分,则其将使用“用于[执行功能]的装置”结构来表述权利要求的要素。
在本公开中可描述不同的“电路”。这些电路或“电路”构成硬件,该硬件包括各种类型的电路元件,诸如组合逻辑、时钟存储设备(例如,触发器、寄存器、锁存器等)、有限状态机、存储器(例如,随机存取存储器、嵌入式动态随机存取存储器)、可编程逻辑阵列等。电路可为定制设计的,或取自标准库。在各种具体实施中,电路可视情况包括数字部件、模拟部件或两者的组合。某些类型的电路可通常被称为“单元”(例如,解码单元、算术逻辑单元(ALU)、功能单元、存储器管理单元(MMU)等)。此类单元也指电路或电路。
因此,在附图中示出并在本文中描述的所公开的电路/单元/部件和其他元件包括硬件元件,诸如前面段落中描述的那些硬件元件。在许多情况下,硬件元件在特定电路中的内部布置可通过描述该电路的功能来指定。例如,特定的“解码单元”可被描述为执行“处理指令的操作码并将该指令路由到多个功能单元中的一个或多个”的功能,这意味着解码单元“被配置为”执行该功能。对于计算机领域的技术人员而言,该功能规范足以暗示用于电路的一组可能的结构。
在各种实施方案中,如前述段落中所讨论的,电路、单元和由其被配置为实施的功能或操作定义的其他元件。相对于彼此的此类电路/单元/部件的布置以及它们进行交互的方式形成硬件的微架构定义,该硬件最终在集成电路中制造或被编程到FPGA中以形成微架构定义的物理具体实施。因此,微架构定义被本领域的技术人员认为是可导出许多物理具体实施的结构,所有这些物理具体实施均落入由微架构定义所描述的更广泛的结构中。即,具有根据本公开提供的微架构定义的技术人员可在没有过度实验的情况下并且利用普通技术人员的应用,通过以硬件描述语言(HDL)诸如Verilog或VHDL编码电路/单元/部件的描述来实现该结构。HDL描述常常以可显现为功能性的方式来表达。但是对于本领域的技术人员而言,该HDL描述是用于将电路、单元或部件的结构转换为下一级具体实施细节的方式。此类HDL描述可采用以下形式:行为代码(其通常为不可合成的)、寄存器传输语言(RTL)代码(其与行为代码相比通常为可合成的)、或结构代码(例如,指定逻辑门及其连接性的网表)。可针对为给定集成电路制造技术设计的单元库来顺序地合成HDL描述,并可出于定时、功率和其他原因而被修改,以获得被传输到工厂以生成掩模并最终产生集成电路的最终的设计数据库。一些硬件电路或其部分也可在示意图编辑器中被定制设计并与合成电路一起被捕获到集成电路设计中。该集成电路可包括晶体管和其它电路元件(例如,无源元件,诸如电容器、电阻器、电感器等),以及晶体管和电路元件之间的互连件。一些实施方案可实现耦接在一起的多个集成电路,以实现硬件电路,和/或可在一些实施方案中使用离散元件。另选地,HDL设计可被合成为可编程逻辑阵列诸如现场可编程门阵列(FPGA)并且可在FPGA中实现。一组电路的设计与这些电路的后续低级具体实施之间的这种解耦通常导致这样的情形:其中电路或逻辑设计者从来不指定超出对电路被配置为做什么的描述的用于低级具体实施的一组特定结构,因为该过程是在电路实施过程的不同阶段执行的。
可使用电路元件的许多不同低级组合来实现电路的相同规格的事实导致该电路的大量等效结构。如所指出的那样,这些低级电路具体实施可根据制造技术、被选择用于制造集成电路的铸造厂、为特定项目提供的单元库等的变化而变化。在许多情况下,通过不同设计工具或方法进行的产生这些不同具体实施的选择可以是任意的。
此外,对于给定实施方案,电路的特定功能规范的单个具体实施通常包括大量设备(例如,数百万个晶体管)。因此,该信息的剪切体积使得提供用于实现单个实施方案的低级结构的完整叙述是不切实际的,更不用说大量等同的可能具体实施。为此,本公开描述了使用工业中常用的功能简写的电路的结构。
一旦充分了解了上面的公开,许多变型和修改对于本领域的技术人员而言将变得显而易见。本公开旨在使以下权利要求书被阐释为包含所有此类变型和修改。

Claims (16)

1.一种系统,包括:
存储器,所述存储器存储操作系统和一个或多个应用程序二进制文件,所述一个或多个应用程序二进制文件被写入以用于在第一执行环境中执行;
一个或多个处理器,所述一个或多个处理器被配置为在与所述第一执行环境不同的第二执行环境中执行应用程序二进制文件;
二进制翻译器,所述二进制翻译器包括能够在所述应用程序二进制文件的第一地址空间中执行的系统服务和能够在所述应用程序二进制文件的第二地址空间中执行的运行时代码模块,其中所述第一地址空间与所述第二地址空间分离,其中所述系统服务被配置为管理所述应用程序二进制文件的翻译,并且其中所述运行时代码模块被配置为管理所述系统服务针对其缺乏对应翻译的所述应用程序二进制文件的即时(JIT)翻译;和
翻译高速缓存,所述翻译高速缓存存储在所述存储器内,所述翻译高速缓存存储一个或多个翻译,其中给定翻译对应于所述一个或多个应用程序二进制文件的至少一部分,并且其中所述一个或多个翻译用于在所述第二执行环境中执行,其中:
所述一个或多个应用程序二进制文件的所述翻译包括在执行由所述一个或多个应用程序二进制文件表示的所述一个或多个应用程序之前生成的所述一个或多个应用程序二进制文件的对象级翻译;并且
所述一个或多个处理器被配置为当所述操作系统调用所述一个或多个应用程序二进制文件的所述执行时,在所述运行时代码模块内执行所述一个或多个应用程序二进制文件的所述已高速缓存的翻译。
2.根据权利要求1所述的系统,其中所述第一执行环境包括源指令集,并且所述第二执行环境包括与所述源指令集不同的目标指令集。
3.根据权利要求1或2所述的系统,其中所述一个或多个应用程序二进制文件的所述翻译通过对所述系统唯一的密钥来加密。
4.根据权利要求3所述的系统,还包括:
耦接到所述一个或多个处理器和所述存储器的安全飞地处理器,所述安全飞地处理器被配置为生成所述唯一密钥。
5.根据权利要求1至4中任一项所述的系统,其中所述对象级翻译包括在执行期间由所述一个或多个应用程序二进制文件使用的库的翻译。
6.根据权利要求1至5中任一项所述的系统,其中所述对象级翻译包括在执行期间由所述一个或多个应用程序二进制文件使用的插件的翻译。
7.根据权利要求1至6中任一项所述的系统,其中所述系统服务被配置为基于与所述一个或多个应用程序二进制文件相关联的信息来生成散列值。
8.根据权利要求7所述的系统,其中所述系统服务将所生成的散列值存储在所述存储器中的关联阵列中,并且其中所生成的散列值用于确定所述一个或多个应用程序二进制文件在所述翻译高速缓存中是否可用并且确定所述一个或多个应用程序二进制文件是否已被修改。
9.根据权利要求8所述的系统,其中当所述一个或多个应用程序二进制文件已经被修改时,所述系统被配置为:
从所述翻译高速缓存中移除所述一个或多个应用程序二进制文件的所述翻译;以及
生成新翻译。
10.根据权利要求1所述的系统,其中所述运行时代码模块被配置为确定对应于所述执行翻译的所述一个或多个应用程序二进制文件是否已变为可写入,其中当所述一个或多个应用程序二进制文件已变为可写入时,所述系统被进一步配置为:
从全局间接分支表中移除与所述一个或多个应用程序二进制文件相关联的翻译;
取消链接存储在所述翻译高速缓存中的直接跳转到所述已移除翻译的翻译;
使全局计数器提前;
暂停与所述一个或多个应用程序二进制文件相关的线程的所述执行;
将与所述一个或多个应用程序二进制文件相关的所述线程强制为由所述运行时代码模块执行的所述一个或多个应用程序二进制文件的即时(JIT)翻译;以及
恢复所述线程的所述执行。
11.根据权利要求1所述的系统,其中如果所述一个或多个应用程序二进制文件包括自修改代码,则所述系统被配置为:
写保护其中存储有所述一个或多个应用程序二进制文件的所述存储器中的页面;
在异常处理程序中捕获对所述受保护页面的写入;
在所述处理器中从全局间接分支表中移除与所述一个或多个应用程序二进制文件相关联的翻译;
取消链接存储在所述翻译高速缓存中的直接跳转到所述已移除翻译的翻译;
使全局计数器提前;
请求与所述自修改代码相关的线程处理所述无效;
执行所述自修改代码的JIT翻译;
将所述全局计数器值记录在与所述翻译相关联的元数据中;
将执行线程更新为所述全局间接分支表的新版本;
从与所述执行线程相关联的返回堆栈中清除已移除翻译;
经由对所述全局间接分支表的查找将所述翻译插入所述线程中;以及
当所有线程达到所述全局计数器值时,释放翻译。
12.根据权利要求1至11中任一项所述的系统,其中:
所述一个或多个处理器被配置为执行在第一指令集架构中定义的指令;并且
所述给定翻译在被执行时执行与所述一个或多个应用程序二进制文件的所述部分执行的操作基本上相同的操作。
13.根据权利要求12所述的系统,其中所述系统服务被配置为:
响应于启动所述一个或多个应用程序二进制文件中的给定应用程序二进制文件,针对对应的已翻译代码序列检查所述翻译高速缓存,以及
基于在所述翻译高速缓存中检测到所述对应的翻译,将所述对应的已翻译代码序列提供给所述运行时代码模块。
14.根据权利要求12或13所述的系统,其中当对应的应用程序二进制文件被安装在所述系统中时,生成所述翻译高速缓存中的所述一个或多个翻译中的第一翻译。
15.根据权利要求12或13所述的系统,其中当在所述系统中初始启动对应的应用程序二进制文件时,生成所述翻译高速缓存中的所述一个或多个翻译中的第一翻译。
16.一种方法,包括:
启动用于在系统中执行的第一应用程序二进制文件,其中所述第一应用程序二进制文件是针对第一执行环境编写的,并且所述系统中的一个或多个处理器被配置为在与所述第一执行环境不同的第二执行环境中执行应用程序二进制文件;
确定由二进制翻译器生成的已翻译代码序列是否存储在所述系统中的翻译高速缓存中,其中所述二进制翻译器包括能够在所述应用程序二进制文件的第一地址空间中执行的系统服务和能够在所述应用程序二进制文件的第二地址空间中执行的运行时代码模块,其中所述第一地址空间与所述第二地址空间分离,并且其中确定所述已翻译代码序列是否存储在所述翻译高速缓存中由所述系统服务执行;
基于未被高速缓存在所述翻译高速缓存中的所述已翻译代码序列,由所述运行时代码模块执行所述第一应用程序二进制文件的即时翻译;以及
基于高速缓存在所述翻译高速缓存中的所述已翻译代码序列,在所述运行时代码模块内执行所述高速缓存的已翻译代码序列。
CN202180044320.5A 2020-06-22 2021-06-10 用于执行二进制翻译的系统和方法 Pending CN115769188A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063042228P 2020-06-22 2020-06-22
US63/042,228 2020-06-22
US17/343,484 US20210397425A1 (en) 2020-06-22 2021-06-09 Systems and Methods for Performing Binary Translation
US17/343,484 2021-06-09
PCT/US2021/036751 WO2021262444A1 (en) 2020-06-22 2021-06-10 Systems and methods for performing binary translation

Publications (1)

Publication Number Publication Date
CN115769188A true CN115769188A (zh) 2023-03-07

Family

ID=79023519

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180044320.5A Pending CN115769188A (zh) 2020-06-22 2021-06-10 用于执行二进制翻译的系统和方法

Country Status (5)

Country Link
US (1) US20210397425A1 (zh)
EP (1) EP4168891A1 (zh)
KR (1) KR20230013277A (zh)
CN (1) CN115769188A (zh)
WO (1) WO2021262444A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116610325A (zh) * 2023-07-20 2023-08-18 龙芯中科技术股份有限公司 二进制翻译方法、装置、电子设备及存储介质
CN117827286A (zh) * 2024-03-05 2024-04-05 先进计算与关键软件(信创)海河实验室 Risc-v架构二进制转译文件复用方法、装置及存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11625247B2 (en) 2020-12-29 2023-04-11 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11803383B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11803381B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. Instruction simulation device and method thereof
US11669328B2 (en) 2020-12-29 2023-06-06 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for converting instructions
US11604643B2 (en) 2020-12-29 2023-03-14 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11803387B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11914997B2 (en) 2020-12-29 2024-02-27 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11789736B2 (en) 2020-12-29 2023-10-17 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6820255B2 (en) * 1999-02-17 2004-11-16 Elbrus International Method for fast execution of translated binary code utilizing database cache for low-level code correspondence
US7107580B2 (en) * 2003-01-07 2006-09-12 Intel Corporation Binary translation of self-modifying code
US8402224B2 (en) * 2005-09-20 2013-03-19 Vmware, Inc. Thread-shared software code caches
US9417855B2 (en) * 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US9619229B2 (en) * 2012-12-27 2017-04-11 Intel Corporation Collapsing of multiple nested loops, methods and instructions
US9448788B1 (en) * 2014-01-22 2016-09-20 SecondWrite LLC Binary rewriting system
US10162616B2 (en) * 2015-06-26 2018-12-25 Intel Corporation System for binary translation version protection
US9904805B2 (en) * 2015-09-23 2018-02-27 Intel Corporation Cryptographic cache lines for a trusted execution environment
US10282182B2 (en) * 2016-09-23 2019-05-07 Intel Corporation Technologies for translation cache management in binary translation systems
US10599835B2 (en) * 2018-02-06 2020-03-24 Vmware, Inc. 32-bit address space containment to secure processes from speculative rogue cache loads
WO2020174428A2 (en) * 2019-02-26 2020-09-03 Marvell Asia Pte, Ltd. Cache management of logical-physical translation metadata
US11029958B1 (en) * 2019-12-28 2021-06-08 Intel Corporation Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116610325A (zh) * 2023-07-20 2023-08-18 龙芯中科技术股份有限公司 二进制翻译方法、装置、电子设备及存储介质
CN116610325B (zh) * 2023-07-20 2023-11-10 龙芯中科技术股份有限公司 二进制翻译方法、装置、电子设备及存储介质
CN117827286A (zh) * 2024-03-05 2024-04-05 先进计算与关键软件(信创)海河实验室 Risc-v架构二进制转译文件复用方法、装置及存储介质
CN117827286B (zh) * 2024-03-05 2024-04-26 先进计算与关键软件(信创)海河实验室 Risc-v架构二进制转译文件复用方法、装置及存储介质

Also Published As

Publication number Publication date
JP2023531650A (ja) 2023-07-25
KR20230013277A (ko) 2023-01-26
EP4168891A1 (en) 2023-04-26
US20210397425A1 (en) 2021-12-23
WO2021262444A1 (en) 2021-12-30

Similar Documents

Publication Publication Date Title
US20210397425A1 (en) Systems and Methods for Performing Binary Translation
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
US10409603B2 (en) Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
JP5944417B2 (ja) トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
US8990786B2 (en) Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture
JP6138142B2 (ja) 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構
JP2017532643A (ja) 永続ストアフェンスプロセッサ、方法、システム、及び命令
US20120216015A1 (en) System and method to concurrently execute a plurality of object oriented platform independent programs by utilizing memory accessible by both a processor and a co-processor
JP2001504957A (ja) 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置
US11119925B2 (en) Apparatus and method for managing capability metadata
US10031697B2 (en) Random-access disjoint concurrent sparse writes to heterogeneous buffers
TWI742120B (zh) 用以識別及避免在虛擬機器監控器與客端虛擬機器之間追蹤衝突的處理器延伸的處理系統、晶片上系統及方法
US10209991B2 (en) Instruction set and micro-architecture supporting asynchronous memory access
JP7483950B2 (ja) バイナリ変換を実行するためのシステム及び方法
KR20220086590A (ko) 스레드 저장에 대한 섀도우 래치 구성 레지스터 파일의 섀도우 래치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination