CN106030558A - 用于处理器的协同设计动态语言加速器 - Google Patents
用于处理器的协同设计动态语言加速器 Download PDFInfo
- Publication number
- CN106030558A CN106030558A CN201580010721.3A CN201580010721A CN106030558A CN 106030558 A CN106030558 A CN 106030558A CN 201580010721 A CN201580010721 A CN 201580010721A CN 106030558 A CN106030558 A CN 106030558A
- Authority
- CN
- China
- Prior art keywords
- accelerator
- bytecode
- dynamic language
- language accelerator
- local
- 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
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- 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/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
在实施例中,处理器包括至少一个核和动态语言加速器,其用以响应于对与动态语言加速器相关联的文件描述符的存储器映射输入/输出(MMIO)操作而执行字节码。处理器可在动态语言加速器执行字节码的同时阻断本地代码的执行。描述并要求保护其它实施例。
Description
背景技术
所谓的硬件(HW)/软件(SW)协同设计技术使得能够在没有x86指令集架构(ISA)向后兼容性问题的情况下实现性能高效的处理器(例如,中央处理单元(CPU))设计。性能高效CPU实现内部实现ISA(例如,以未操作(uop)的形式),并且内部代码变形软件(CMS)通过将x86代码翻译成内部实现ISA的代码以用于执行来模拟CPU上的x86代码执行。然而,在执行此类翻译时存在可能影响处理器效率的许多复杂性。在这些复杂性当中是在虚拟机中执行即时(JIT)编译以使得诸如Java/JavaScript/PHP之类的动态语言(其被设计成在不同的平台上运行可移植字节码)能够实现到内部实现ISA的翻译的开销。
附图说明
图1是用于加速代码执行的计算设备的至少一个实施例的简化框图。
图2是图1的计算设备的环境的至少一个实施例的简化框图。
图3是根据本发明的另一实施例的处理器的框图。
图4是根据本发明的实施例的方法的流程图。
具体实施方式
在各种实施例中,在处理器中提供HW/SW协同设计动态语言加速器以允许字节码经由加速器接口而高效地运行而不需要虚拟机(VM)中的JIT编译。
现在参考图1,可将计算设备100体现为能够加速代码执行并执行本文所述功能的任何类型的计算设备。例如,可将计算设备100体现为移动电话、智能电话、平板计算设备、个人数字助理、通讯设备、消费电子设备、手机、膝上型计算机、台式计算和/或任何其它计算/通信设备。如图1中所示,说明性计算设备100包括处理器102、输入/输出(I/O)子系统104、存储器106、硬件加速器108、一个或多个外围设备110以及数据储存器112。当然,在其它实施例中,计算设备100可包括其它或附加组件,诸如一般地在计算设备中找到的那些(例如,各种输入/输出设备)。另外,在一些实施例中,说明性组件中的一个或多个可被结合在另一组件中或者以其它方式形成另一组件的一部分。例如,在一些实施例中,存储器106或其各部分可被结合在处理器102中。
处理器102可被体现为能够执行本文所述功能的任何类型的处理器。例如,处理器可被体现为(多个)单核或多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。类似地,存储器106可被体现为能够执行本文所述功能的任何类型的易失性或非易失性存储器或数据储存器。在操作中,存储器106可存储在计算设备100的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库以及驱动器。存储器106经由I/O子系统104被通信地耦合到处理器102,该I/O子系统104可被体现为用以促进用处理器102、存储器106以及计算设备100的其它组件的输入/输出操作的电路和/或组件。例如,I/O子系统104可被体现为或者以其它方式包括存储器控制器集线器、输入/输出控制集线器、固件设备、通信链路(例如,点到点链路、总线链路、导线、电缆、光导、印刷电路板迹线等)和/或其它组件和子系统以促进输入/输出操作。在一些实施例中,I/O子系统104可形成SoC的一部分,并且被连同处理器102、存储器106以及计算设备100的其它组件一起结合在单个集成电路芯片上。此外,在一些实施例中,处理器102包括用以加速代码执行的字节码加速支持114。字节码加速支持114可被体现为能够加速在处理器102上执行的一个或多个指令或字节码的执行并能够执行本文所述功能的任何类型的组件或电路。
硬件加速器108可被体现为能够加速与软件应用相关联的一个或多个指令或字节码的执行且能够执行本文所述功能的任何类型的硬件设备或组件。例如,硬件加速器108可被体现为或者以其它方式包括图形加速器、浮点加速器或其它硬件加速器设备。如下面所讨论的,在一些实施例中,硬件加速器108可被配置成加速并未取决于计算设备100的操作系统(OS)的代码。在一些实施例中,硬件加速器108可连同计算设备100的一个或多个其它组件一起形成SoC的一部分。
计算设备100的外围设备110可包括任何数目的外围或接口设备或组件。例如,外围设备110可包括用以与远程设备通信的通信电路。包括在外围设备110中的特定设备可取决于例如计算设备100的预期用途。数据储存器112可被体现为被配置成用于数据的短期或长期存储的任何类型的一个或多个设备,诸如例如,存储器设备和电路、存储卡、硬盘驱动器、固态驱动器或其它数据存储设备。
如图2中所示,计算设备100可建立用于加速代码的环境200。说明性实施例中的环境200提供软件环境,其包括虚拟机202、加速器运行时间库204、OS加速器设备驱动器206、加速器虚拟设备208以及内部动态二进制翻译模块210。
虚拟机202可使用例如I/O指令或其它软件I/O接口来探测计算设备100以确定加速器虚拟设备208是否被计算设备100支持。加速器运行时间库204可实现加速器虚拟设备208的应用编程接口(API)。在这样做时,加速器运行时间库204可允许通过OS加速器设备驱动器206且通过存储器映射I/O来访问加速器虚拟设备208。如下面所讨论的,在一些实施例中,OS加速器设备驱动器206仅被用来将加速器虚拟设备208初始化。此后,可经由存储器映射I/O来访问加速器虚拟设备208以触发代码加速。OS加速器设备驱动器206可被用来使用例如标准操作系统I/O指令将加速器虚拟设备208初始化。加速器虚拟设备208可包括内部动态二进制翻译模块210,其可被用来加速代码执行。在一些实施例中,内部动态二进制翻译模块210通过使用硬件加速器108和/或字节码加速支持114来将非ISA代码(例如,Dalvik字节码、JavaScript、HTML5等)透明地翻译成内部ISA代码来将加速器虚拟设备208虚拟化。在一些实施例(包括说明性实施例)中,内部动态二进制翻译模块210在处理器102内部且对于外部软件(包括计算设备100的操作系统)而言是透明的。照此,外部软件可识别加速器虚拟设备208,但不识别内部动态二进制翻译模块210。此外,在一些实施例中,内部动态二进制翻译模块210可以利用内部ISA中的各种硬件加速器支持来透明地从不同的语言翻译代码。
现在参考图3,示出了根据本发明的另一实施例的处理器的框图。如图3中所示,处理器300被配置成通过HW/SW协同设计动态语言加速器来执行字节码执行。在图3的说明中,处理器300包括多个接口,包括用以使VM/OS 310经由I/O操作与处理器对接的x86 ISA接口。另外,存在动态语言加速器接口以启用例如从协调地工作的VM和加速器设备驱动器接收到的字节码315的通信。
如图3中进一步所示,输入操作被提供给代码变形软件(CMS)单元320,其可执行各种翻译以便以内部实现ISA格式生成代码,其可被存储在临时储存器340(其在实施例中可以是给定高速缓冲存储器、缓冲器等)中。另外,为了触发字节码模拟,输入字节码被提供给字节码CMS单元330,其可执行字节码模拟以因此在内部实现ISA中生成代码。如看到的,此代码被提供给CPU 350,其可包括一个或多个核及其它逻辑,并进一步例如经由如本文所述的动态语言加速器来提供字节码加速支持。虽然在图3的实施例中在此高层级示出,但应理解的是许多变体是可能的。
在图3的实现中,x86代码按照惯例通过x86 ISA接口在VM/OS 310中执行,x86 ISA接口通过内部CMS单元320模拟x86代码执行。除x86 ISA接口之外,还存在动态语言加速器接口。使用实施例,VM/OS 310可使用标准x86 I/O操作来管理动态语言加速器,正如在其它处理器中管理常规硬件加速器一样。然而,在这里,作为向I/O总线305发送I/O信号的替代,用于动态语言加速器的x86 I/O操作触发通过内部字节码CMS 330实现的字节码执行的模拟,该内部字节码CMS 330将字节码翻译成内部实现ISA的代码以便在具有专用字节码加速支持的性能高效的CPU上执行。
在此HW/SW协同设计动态语言加速器中存在许多新性质,其使得在该加速器上的编程不同于常规加速器上的编程。本文所述的实施例使得能够以灵活且高效的方式实现此类编程。
使用本文所述的实施例和技术,使用HW/SW协同设计动态语言加速器的VM实现可实现:ISA透明性,因为未提供ISA变化或扩展以支持动态语言加速器(换言之,对动态语言加速器的访问是通过标准x86 I/O操作);OS透明性,因为未实现对现有OS实现的改变以支持动态语言加速器(然而,应注意,OS内核加速器驱动器可被可选地插入现有OS中以管理动态语言加速,如下所述);可移植性,因为VM可在没有复杂的不可移植JIT编译的情况下实现可移植字节码解释器(应注意,在一些实施例中,可提供微小的变化以持有(port)现有VM实现以通过动态语言加速器来运行字节码);以及灵活性,因为动态语言加速器可以灵活地支持不同的VM实现。
动态语言程序在用户层级虚拟机中执行。类似于其它HW加速器,用户层级应用(诸如VM)通过对OS内核加速器设备驱动器的标准OS调用来访问动态语言加速器设备。下表1示出了用于示例性系统(其可以是基于LINUX™的系统)上的加速器设备的打开/关闭的示例性VM实现。如果VM不能打开加速器设备(由于在CPU中缺少动态语言加速器支持或者缺少用于加速器的OS内核驱动器),则VM可以常规地执行字节码。否则,当支持可用时,VM使用如下表1中的调用使用动态语言加速器来执行字节码。
表1
使fd与加速器相关联
使用动态语言加速器来运行字节码直到字节码结束为止
在动态语言加速器中存在多个独有性质,其使得其编程不同于对常规HW加速器进行编程。例如,HW加速器可支持阻塞I/O操作和非阻塞I/O操作两者。非阻塞I/O操作可对OS/运行时间高效地管理HW加速器以便在CPU上与x86代码同时地运行有用。然而,动态语言加速器在与x86代码相同的CPU上共享执行。照此,动态语言加速器可仅支持阻塞I/O操作,这简化了VM编程和CMS实现两者而不考虑用于非阻塞I/O操作的复杂的同步。
此外,不同于通常通过共享物理存储器上的直接存储器存取(DMA)而与x86代码通信的HW加速器,动态语言加速器像协处理器一样运行,协处理器直接地对x86上下文/状态(例如,x86寄存器和虚拟存储器)起作用。此布置不仅简化了动态语言加速器上的编程而不需要加速器执行与x86代码执行之间的明确通信,而且提供用于字节码执行的安全控制,因为字节码将仅在VM进程特权层级中运行。
在没有任何x86 ISA改变或扩展的情况下,可将加速器上的字节码执行实现为函数调用。也就是说,如在下表2中所示,可使用x86阻塞存储器映射I/O操作来触发加速器上的字节码的执行。在触发之后,x86代码执行被阻断,并且加速器开始执行字节码,正如对字节码的正常函数调用一样。在字节码执行结束之后,被阻断的x86代码执行重新开始,正如函数调用返回一样。
表2
使fd与加速器相关联
加速器上的字节码执行使用x86状态来模拟字节码状态,其取决于从字节码状态到x86状态的映射。例如,如果字节码寄存器R0被映射到x86寄存器EAX,则为了模拟修改R0的字节码,加速器将相应地修改x86寄存器EAX。在内部,字节码CMS将再次地将x86状态映射到其内部实现ISA状态,正如x86代码执行中的x86状态的模拟一样。
不同的VM可实现从字节码状态到x86状态的不同映射。为了支持不同的VM实现,多个VM中的每一个可通过OS加速器设备驱动器来灵活地配置动态语言加速器上的映射。下表3示出了示例性VM实现,其中,使用OS系统调用(ioctl)来配置加速器,使得多个VM被灵活地支持。
表3
使fd与加速器相关联
配置与fd相关联的加速器
虽然触发加速器执行的x86存储器映射I/O操作阻塞到加速器执行完成为止,但此类操作可能由于加速器执行中的潜在地长等待时间而不阻断HW中断处理。因此,在HW中断的情况下,加速器执行可停止,并且被阻断的x86代码执行重新开始(即,阻塞I/O操作结束)。虽然中断可与加速器执行异步地发生,但加速器可在字节码指令边界处以精确的状态停止。这样,VM可在中断处理之后正确地重新开始字节码执行。可使用各种HW/SW协同设计技术来实现字节码执行中的精确中断状态,正如x86执行中的精确中断状态一样。
由于中断,动态语言加速器执行可不确定地停止。为此,VM可在环路中重复地触发字节码加速直至发生字节码的结尾为止,如表4中所见。
表4
使fd与加速器相关联
配置与fd相关联的加速器
重复触发加速器
独有加速器访问可对使用加速器的软件加以限制。例如,软件不能打开独有加速器,除非没有其它软件正在使用该独有加速器。OS通常支持共享加速器访问,使得代码可以在时间共享的情况下在加速器上运行。针对共享加速器访问,如上表4中的加速器执行的重复触发器之间的HW中断可促使上下文开关使用加速器运行另一(可能不同的)虚拟机。照此,没有字节码状态(包括加速器的配置)可被跨动态语言加速器执行的重复触发器(例如,作为无状态加速)而内部地保持在加速器内(例如,具有字节码CMS)。换言之,字节码加速的每次触发可明确地将整个字节码状态(用x86状态模拟)提供为加速器执行的输入,并且在加速器停止之后,从加速器输出整个字节码状态。
表5示出了具有无状态加速的示例性VM实施方式。字节码加速的每次触发都提供通过加速器的配置与虚拟机状态(包括字节码状态)相关联的标识符。然后,字节码加速器将对与标识符相关联的字节码状态起作用。
表5
使fd与加速器相关联
配置与fd相关联的加速器
//在完成虚拟机状态的情况下
在加速器执行期间也可能发生异常。例如,在VM应用的虚拟存储器中执行的字节码可触发分页异常而交换虚拟页面。这种异常可能甚至随着被管理的运行时间在字节码执行中发生。加速器执行期间的异常处理可能是复杂的,因为异常处理程序可期待看到x86指令而不是字节码指令唤起OS异常处理。因此,在实施例中,为了提供OS透明性,在加速器执行期间不唤起OS异常处理。替代地,加速器执行在引起异常的字节码指令之前以精确的字节码状态停止。
由于加速器执行不唤起任何OS异常处理,所以如果加速器执行停止是由异常引起的,则表5中的加速器执行的重复触发可能不会做出向前进展。为此,VM的可移植解释程序可被用于向前进展,如表6中所示。在加速器执行的重复触发之间,解释一个字节码,正如没有动态语言加速器的常规VM中的字节码的解释一样。这样,在字节码解释期间唤起并处理异常。
表6
使fd与加速器相关联
用虚拟机状态配置加速器
关于动态语言加速器的另一问题是某个字节码执行指令可调用VM/OS相关本地库。例如,存储器分配字节码指令可调用该库以便分配新的存储器,其可取决于VM/OS存储器管理。作为另一示例,同步字节码指令可调用运行时间库用于线程之间的同步,其可取决于VM/OS线程/同步管理。在这种情况下,I/O字节码指令调用该库用于I/O操作,其可取决于VM/OS I/O管理。字节码还可支持直接本地库调用(例如,Java本地接口或JNI)。为了用以支持不同VM和OS的灵活性,此类VM/OS相关库代码可不在动态语言加速器中执行。
可使用各种方法来处理VM/OS相关库。首先,在要调用VM/OS相关库的字节码之前在字节码边界处以精确的状态停止加速器执行,正如由于异常而引起的加速器执行的停止一样。然后,在加速器执行之后的字节码解释可如在上表6中一样发生以在VM中自然地执行这些库调用。
用以与VM/OS相关库相交互的另一且可能更高效的方式是在加速器执行期间回调本地函数。然而,在加速器执行期间对本地函数的直接回调存在两个问题。首先,本地库调用接口可以是VM相关的。其次,本地函数就ISA透明性而言不能直接地返回到加速器执行,加速器执行可仅被存储器映射I/O操作触发。因此,在一些实施例中,可定义加速器本地接口,使得在加速器执行期间,其可以回调至用于本地库调用的此加速器本地接口。
表7示出了示例性加速器本地接口。可用此加速器本地接口来配置给定加速器。然后,在本地库调用的情况下,加速器用被置于native_func的本地函数指针来调用加速器本地接口。在本地函数的执行之后,加速器本地接口可通过存储器映射I/O触发到加速器的返回。
表7
当然,应领会到的是上文所讨论的表1-7及其中的伪代码指向特定实现并为了说明而被提供。本文所讨论的概念不被如此限制,并且可创建具有与上文所讨论的伪代码不同的伪代码的其它实现。
使用本文所述的实施例和技术,动态语言加速器进行操作以通过加速器接口和CMS中的内部字节码翻译来加速字节码执行。可利用动态语言加速器中的独有性质来提供用于对动态语言加速器进行编程的方法以实现ISA透明性、OS透明性、可移植性和灵活性。
现在参考图4,示出了根据本发明的实施例的方法的流程图。一般地,图4描述了一种如本文所述的用于使用动态语言加速器在字节码加速中执行各种操作的方法。一般地,可结合给定处理器上的VM的执行而执行方法400的各种操作。
方法400通过确定VM是否能够打开加速器(菱形405)而开始。在实施例中,可如上文在表1中所述地做出此确定,其中,通过使文件描述符与加速器相关联来向动态语言加速器提供路径名。应注意,如果不存在用于加速器的支持和驱动器,则控制转到方框410,在方框410中,可使用VM本身例如通过字节码解释来执行字节码。
替代地,当确定VM能够打开加速器时,控制转到方框415,在方框415中可配置加速器。更具体地,加速器可用从字节码状态到x86状态的映射来配置并进一步使VM状态与标识符相关联。接下来,控制转到菱形420,在菱形420中,确定已到达要执行的字节码的结尾。如果是这样,则控制转到方框425,在方框425中控制可返回到VM。
否则,控制转到方框430,在方框430中,可执行MMIO操作以触发加速器执行并阻断x86代码进行操作。照此,为了便于实现,设备语言加速器在阻塞环境中操作。因此,在这一点上,加速器执行在方框435处发生,在加速器执行期间执行字节码的至少一部分。如在图4中看到的,在此类加速器执行期间,可以确定是否发生给定的一组事件中的一个或多个。
更具体地,仍参考图4,在加速器执行期间,控制接下来转到菱形440,在菱形440中可以确定是否已发生硬件中断。如果是这样,则可将与标识符相关联的字节码状态存储例如在中间储存器(诸如高速缓冲存储器)中(方框450)。接下来,控制转到方框455,在方框455中加速器执行可停止,并且可执行被阻断的x86代码。此类x86代码可与中断相关联,并且可对应于中断处理程序或其它x86代码。
在此本地代码(例如,中断处理程序)结束时,控制转到方框495,在方框495中可在VM内解释字节码的至少一个字节码。应注意经由VM的可移植解释器的此字节码解释使得能够在其中出现中断或其它此类情况的条件下做出向前进展。如看到的,控制然后传递回至上文所讨论的菱形420。
在加速器执行期间,如果在菱形440处确定未接收到硬件中断,则控制转到菱形460,在菱形460中可确定已发生硬件异常。如果是这样,则控制转到方框465,在方框465中,可将与标识符相关联的字节码状态存储例如在高速缓冲存储器中。此后,可停止加速器执行(方框470)。更具体地,可在异常之前的指令处停止加速器执行,使得异常被掩蔽。这时,可执行x86代码。更具体地,x86代码执行将触发异常发生,并且因此触发诸如异常处理程序之类的本地异常代码处理异常事件。在此类执行之后,控制转到上文所讨论的菱形420,用于进一步的加速器执行(如果未到达字节码的结尾的话)。
仍参考图4,如果在菱形460处确定未发生硬件异常,则控制替代地转到菱形480。在那里可确定是否期望对本地库的调用。如果是这样,则控制转到方框490,在方框490中,经由加速器本地接口,可发生对本地库的回调。在此本地库中,可执行期望的函数,并且其中,函数的结果可被用于动态语言加速器中的进一步字节码执行。在此类执行之后,控制转到菱形492以确定是否发生了字节码的结尾。如果是这样,则控制返回到VM。否则控制转到方框453以便在加速器内进一步执行字节码,如上文所讨论的。虽然在图4的实现中在此高层级示出,但应理解的是变化是可能的,并且本发明的范围在这方面不受限制。
因为HW/SW协同设计动态语言加速器在OS下面运行,所以加速器因此可处理中断/异常问题。相比之下,常规虚拟机在OS之上运行,并且不受诸如中断/异常处理之类的系统问题的影响,因为OS透明地对其进行处理。并且,与仅运行x86代码的CMS相反(其语义被给定ISA很好地定义),根据实施例的动态语言加速器在没有任何x86 ISA改变或扩展的情况下通过CMS来运行字节码。使用本文所述的实施例和技术,动态语言加速器可被透明地、可移植地且灵活地编程。使用公开的实施例,HW/SW协同设计动态语言加速器可在不需要VM中的即时编译的情况下且在没有任何x86改变的情况下加速字节码执行。可特别地结合使用非x86代码(例如,Java、Javascript、HTML5、ARM等)的移动和便携式设备(诸如平板计算机、智能电话等)来使用实施例以便以优越的每瓦特性能高效地执行此类代码。
以下示例涉及另外实施例。
示例1是一种系统,该系统包括:处理器,用以执行指令,该处理器包括至少一个核和动态语言加速器,其用以响应于对与动态语言加速器相关联的文件描述符的MMIO操作而执行字节码,其中,所述处理器要在动态语言加速器执行字节码的同时阻断本地代码的执行;以及系统存储器,被耦合到所述处理器。
在示例2中,示例1的处理器要可选地经由系统调用来配置处理器的本地状态到要触发动态语言加速器的虚拟机的虚拟机状态的映射,该虚拟机状态包括字节码状态。
在示例3中,示例2的处理器要可选地使标识符与虚拟机状态相关联。
在示例4中,示例1-3中的一个的动态语言加速器要可选地响应于硬件中断而停止执行,并且所述处理器要执行本地代码以处理硬件中断,其中,所述处理器要在硬件中断被处理之后重新触发动态语言加速器。
在示例5中,示例1-4中的一个的动态语言加速器要可选地在本地代码执行之前存储与标识符相关联的字节码状态。
在示例6中,示例4的虚拟机用以可选地在硬件中断被处理之后解释至少一个字节码,并且此后重新触发动态语言加速器。
在示例7中,加速器本地接口可选地被耦合到动态语言加速器,其中,该动态语言加速器用以经由加速器本地接口回调至本地库,并且所述处理器用以使用本地库来执行用于虚拟机的函数并在函数被执行之后在动态语言加速器中继续字节码的执行。
在示例8中,示例1-7中的一个的动态语言加速器,响应于在动态语言加速器执行期间发生的异常,用以可选地在引起异常的字节码指令之前的字节码的指令处停止执行,其中,所述处理器用以此后解释字节码的至少一个字节码指令,并执行本地异常处理程序以处理异常,并且然后重新触发动态语言加速器。
在示例9中,一种方法包括:针对处理器的动态语言加速器配置加速器映射和虚拟机状态,并且使虚拟机状态与用于虚拟机的标识符相关联;执行输入/输出操作以触发动态语言加速器中的字节码的执行,并阻断本地代码的执行;以及在字节码的至少一部分的动态语言加速器执行之后解释虚拟机中的字节码的至少一个字节码。
在示例10中,示例9的方法可选地包括响应于硬件中断,存储与标识符相关联的字节码状态,并且此后停止动态语言加速器以及执行本地代码以处理硬件中断。
在示例11中,示例10的方法可选地包括在执行本地代码以处理硬件中断之后,解释至少一个字节码,并且此后重新触发动态语言加速器以进一步执行字节码。
在示例12中,示例9-11中的任一项的方法可选地包括响应于异常而存储与标识符相关联的字节码状态,并且此后在该异常之前的指令处停止动态语言加速器,以及执行本地异常处理程序以处理异常。
在示例13中,示例9-12中的任一项的方法可选地包括经由动态语言加速器的加速器本地接口来调用本地库以处理用于动态语言加速器的函数。
在示例14中,至少一个计算机可读存储介质包括指令,该指令在被执行时使得系统能够:针对处理器的动态语言加速器配置加速器映射和虚拟机状态,并且使虚拟机状态与用于虚拟机的标识符相关联;执行输入/输出操作以触发动态语言加速器中的字节码的执行,并阻断本地代码的执行;以及在字节码的至少一部分的动态语言加速器执行之后解释虚拟机中的字节码的至少一个字节码。
在示例15中,示例14的所述至少一个计算机可读介质可选地还包括使得系统能够确定动态语言加速器是否能够被打开且如果不能、则在虚拟机中解释字节码的指令。
在示例16中,示例14-15中的任一项的所述至少一个计算机可读介质可选地还包括
使得系统能够在虚拟机中的所述至少一个字节码的解释之后重新触发动态语言加速器中的字节码的执行的指令。
在示例17中,示例14-16中的任一项的所述至少一个计算机可读介质可选地还包括
使得系统能够响应于硬件中断而存储与标识符相关联的字节码状态且此后停止动态语言加速器并执行本地代码以处理硬件中断的指令。
在示例18中,示例17的所述至少一个计算机可读介质可选地还包括使得系统能够在执行本地代码以处理硬件中断之后解释所述至少一个字节码且此后重新触发动态语言加速器以进一步执行字节码的指令。
在示例19中,示例14-18中的任一项的所述至少一个计算机可读介质可选地还包括
使得系统能够响应于异常而存储与标识符相关联的字节码状态且此后在该异常之前的指令处停止动态语言加速器以及执行本地异常处理程序以处理异常的指令。
在示例20中,示例14-19中的任一项的所述至少一个计算机可读介质可选地还包括
使得系统能够经由动态语言加速器的加速器本地接口来调用本地库以处理用于动态语言加速器的函数的指令。
可在许多不同类型的系统中使用实施例。例如,在一个实施例中,可以将通信设备布置成执行本文所述的各种方法和技术。当然,本发明的范围不限于通信设备,并且替代地,其它实施例可以针对用于处理指令的其它类型的装置或者一个或多个机器可读介质,其包括指令,该指令响应于在计算设备上被执行而促使设备执行本文所述的方法和技术中的一个或多个。
实施例可用代码实现,并且可存储在非临时存储介质上,该非临时存储介质在其上存储有指令,该指令可以用来对系统进行编程以执行指令。存储介质可包括但不限于任何类型的盘,包括软盘、光盘、固态驱动(SSD)、紧凑式磁盘只读存储器(CD-ROM)、可重写紧凑式磁盘(CD-RW)以及磁光盘、半导体器件,诸如只读存储器(ROM)、随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡或适合于存储电子指令的任何其它类型的介质。
虽然已关于有限数目的实施例描述了本发明,但本领域的技术人员将领会到来自于其的许多修改和变化。意图在于所附权利要求涵盖落在本发明的真实精神和范围内的所有此类修改和变化。
Claims (22)
1.一种系统,包括:
处理器,用以执行指令,所述处理器包括至少一个核和动态语言加速器,其用以响应于对与动态语言加速器相关联的文件描述符的存储器映射输入/输出(MMIO)操作而执行字节码,
其中,所述处理器用以在所述动态语言加速器执行字节码的同时阻断本地代码的执行;以及
系统存储器,被耦合到所述处理器。
2.权利要求1的系统,其中,所述处理器用以经由系统调用来配置处理器的本地状态到用以触发动态语言加速器的虚拟机的虚拟机状态的映射,所述虚拟机状态包括字节码状态。
3.权利要求2的系统,其中,所述处理器用以使标识符与虚拟机状态相关联。
4.权利要求3的系统,其中,所述动态语言加速器用以响应于硬件中断而停止执行,并且所述处理器用以执行本地代码以处理硬件中断,其中,所述处理器用以在硬件中断被处理之后重新触发动态语言加速器。
5.权利要求4的系统,其中,所述动态语言加速器用以在本地代码执行之前存储与标识符相关联的字节码状态。
6.权利要求4的系统,其中,所述虚拟机用以在硬件中断被处理之后解释至少一个字节码,并且此后重新触发动态语言加速器。
7.权利要求2的系统,还包括加速器本地接口,所述加速器本地接口被耦合到动态语言加速器,其中,动态语言加速器用以经由加速器本地接口而回调至本地库,其中,所述处理器用以使用本地库来执行用于虚拟机的函数,并且在执行函数之后在动态语言加速器中继续字节码的执行。
8.权利要求1的系统,其中,所述动态语言加速器响应于在动态语言加速器执行期间发生的异常用以在引起异常的字节码指令之前的字节码的指令处停止执行,其中,所述处理器用以此后解释字节码的至少一个字节码指令,并执行本地异常处理程序以处理异常,并且然后重新触发动态语言加速器。
9.一种方法,包括:
针对处理器的动态语言加速器配置加速器映射和虚拟机状态,并且使虚拟机状态与用于虚拟机的标识符相关联;
执行输入/输出操作以触发动态语言加速器中的字节码的执行,并阻断本地代码的执行;以及
在字节码的至少一部分的动态语言加速器执行之后解释虚拟机中的字节码的至少一个字节码。
10.权利要求9的方法,还包括响应于硬件中断而存储与标识符相关联的字节码状态且此后停止动态语言加速器并执行本地代码以处理硬件中断。
11.权利要求10的方法,还包括在执行本地代码以处理硬件中断之后,解释至少一个字节码,并且此后重新触发动态语言加速器以进一步执行字节码。
12.权利要求9的方法,还包括响应于异常而存储与标识符相关联的字节码状态且此后在该异常之前的指令处停止动态语言加速器以及执行本地异常处理程序以处理异常。
13.权利要求9的方法,还包括经由动态语言加速器的加速器本地接口来调用本地库以处理用于动态语言加速器的函数。
14.一种包括用以执行如权利要求9至13中的任一项所要求保护的方法的构件的装置。
15.一种包括机器可读指令的机器可读存储介质,所述机器可读指令在被执行时实现如权利要求9至13中的任一项所要求保护的方法。
16.一种系统,包括:
用于针对处理器的动态语言加速器配置加速器映射和虚拟机状态,并且使虚拟机状态与用于虚拟机的标识符相关联的构件;
用于执行输入/输出操作以触发动态语言加速器中的字节码的执行,并且阻断本地代码的执行的构件;以及
用于在字节码的至少一部分的动态语言加速器执行之后解释虚拟机中的字节码的至少一个字节码的构件。
17.权利要求16的系统,还包括用于确定动态语言加速器是否能够被打开且如果不能、则在虚拟机中解释字节码的构件。
18.权利要求16的系统,还包括用于在虚拟机中的至少一个字节码的解释之后重新触发动态语言加速器中的字节码的执行的构件。
19.权利要求16的系统,还包括响应于硬件中断而用于存储与标识符相关联的字节码状态且此后停止动态语言加速器并执行本地代码以处理硬件中断的构件。
20.权利要求19的系统,还包括在执行本地代码以处理硬件中断之后用于解释至少一个字节码且此后重新触发动态语言加速器以进一步执行字节码的构件。
21.权利要求16的系统,还包括响应于异常而用于存储与标识符相关联的字节码状态且此后在该异常之前的指令处停止动态语言加速器并执行本地异常处理程序以处理异常的构件。
22.权利要求16的系统,还包括用于经由动态语言加速器的加速器本地接口来调用本地库以处理用于动态语言加速器的函数的构件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/225755 | 2014-03-26 | ||
US14/225,755 US9542211B2 (en) | 2014-03-26 | 2014-03-26 | Co-designed dynamic language accelerator for a processor |
PCT/US2015/022613 WO2015148741A1 (en) | 2014-03-26 | 2015-03-26 | Co-designed dynamic language accelerator for a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106030558A true CN106030558A (zh) | 2016-10-12 |
CN106030558B CN106030558B (zh) | 2019-10-11 |
Family
ID=54190452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580010721.3A Active CN106030558B (zh) | 2014-03-26 | 2015-03-26 | 用于处理器的协同设计动态语言加速器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9542211B2 (zh) |
EP (1) | EP3123341A4 (zh) |
JP (1) | JP6458959B2 (zh) |
KR (1) | KR101879113B1 (zh) |
CN (1) | CN106030558B (zh) |
WO (1) | WO2015148741A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112352220A (zh) * | 2019-01-04 | 2021-02-09 | 百度时代网络技术(北京)有限公司 | 保护由数据处理加速器处理的数据的方法和系统 |
CN114253694A (zh) * | 2022-02-25 | 2022-03-29 | 杭州雄迈集成电路技术股份有限公司 | 一种基于神经网络加速器的异步处理方法与装置 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9639382B2 (en) * | 2014-05-15 | 2017-05-02 | Microsoft Technology Licensing, Llc. | Interactive viewer of intermediate representations of client side code |
US10567517B2 (en) * | 2015-06-05 | 2020-02-18 | Apple Inc. | Web resource load blocking API |
US9996379B2 (en) * | 2016-01-25 | 2018-06-12 | International Business Machines Corporation | Program execution without the use of bytecode modification or injection |
US10459751B2 (en) * | 2017-06-30 | 2019-10-29 | ATI Technologies ULC. | Varying firmware for virtualized device |
US10281669B2 (en) | 2017-07-14 | 2019-05-07 | Senko Advance Components, Inc. | Ultra-small form factor optical connectors |
US10725839B2 (en) * | 2018-07-12 | 2020-07-28 | International Business Machines Corporation | Helping a hardware accelerator using software |
US11806831B2 (en) | 2018-11-21 | 2023-11-07 | Senko Advanced Components, Inc. | Fixture and method for polishing fiber optic connector ferrules |
US11175464B2 (en) | 2018-11-25 | 2021-11-16 | Senko Advanced Components, Inc. | Open ended spring body for use in an optical fiber connector |
JP2022021554A (ja) * | 2020-07-22 | 2022-02-03 | 富士通株式会社 | アセンブリ命令変換プログラム、アセンブリ命令変換方法、及び情報処理装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040236927A1 (en) * | 2001-09-12 | 2004-11-25 | Naohiko Irie | Processor system having java accelerator |
US20060026565A1 (en) * | 2004-07-27 | 2006-02-02 | Texas Instruments Incorporated | Method and system for implementing an interrupt handler |
CN101763265A (zh) * | 2010-01-19 | 2010-06-30 | 湖南大学 | 一种过程级软硬件协同设计自动化开发方法 |
CN101963918A (zh) * | 2010-10-26 | 2011-02-02 | 上海交通大学 | 实现cpu/gpu异构平台的虚拟执行环境的方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010072477A (ko) | 1998-08-13 | 2001-07-31 | 썬 마이크로시스템즈, 인코포레이티드 | 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치 |
US20050149694A1 (en) * | 1998-12-08 | 2005-07-07 | Mukesh Patel | Java hardware accelerator using microcode engine |
KR20020028814A (ko) * | 2000-10-10 | 2002-04-17 | 나조미 커뮤니케이션즈, 인코포레이티드 | 마이크로코드 엔진을 이용한 자바 하드웨어 가속기 |
US20030023958A1 (en) * | 2001-07-17 | 2003-01-30 | Patel Mukesh K. | Intermediate language accelerator chip |
US8769508B2 (en) * | 2001-08-24 | 2014-07-01 | Nazomi Communications Inc. | Virtual machine hardware for RISC and CISC processors |
JP4035004B2 (ja) * | 2002-06-26 | 2008-01-16 | 株式会社ルネサステクノロジ | 情報処理装置 |
JP4224430B2 (ja) * | 2003-07-07 | 2009-02-12 | 株式会社ルネサステクノロジ | 情報処理装置 |
JP4602047B2 (ja) * | 2004-10-29 | 2010-12-22 | ルネサスエレクトロニクス株式会社 | 情報処理装置 |
CA2614217A1 (en) * | 2005-07-06 | 2007-01-11 | Matsushita Electric Industrial Co., Ltd. | Recording and reproduction apparatus |
US9836316B2 (en) * | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
-
2014
- 2014-03-26 US US14/225,755 patent/US9542211B2/en active Active
-
2015
- 2015-03-26 CN CN201580010721.3A patent/CN106030558B/zh active Active
- 2015-03-26 KR KR1020167023036A patent/KR101879113B1/ko active IP Right Grant
- 2015-03-26 EP EP15769489.4A patent/EP3123341A4/en not_active Withdrawn
- 2015-03-26 WO PCT/US2015/022613 patent/WO2015148741A1/en active Application Filing
- 2015-03-26 JP JP2016550253A patent/JP6458959B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040236927A1 (en) * | 2001-09-12 | 2004-11-25 | Naohiko Irie | Processor system having java accelerator |
US20060026565A1 (en) * | 2004-07-27 | 2006-02-02 | Texas Instruments Incorporated | Method and system for implementing an interrupt handler |
CN101763265A (zh) * | 2010-01-19 | 2010-06-30 | 湖南大学 | 一种过程级软硬件协同设计自动化开发方法 |
CN101963918A (zh) * | 2010-10-26 | 2011-02-02 | 上海交通大学 | 实现cpu/gpu异构平台的虚拟执行环境的方法 |
Non-Patent Citations (1)
Title |
---|
CHENG WANG: "Acceldroid:Co-designed acceleration of Android bytecode", 《CODE GENERATION AND OPTIMIZATION(CGO),2013 IEEE/ACM INTERNATIONAL SYMPOSIUM ON》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112352220A (zh) * | 2019-01-04 | 2021-02-09 | 百度时代网络技术(北京)有限公司 | 保护由数据处理加速器处理的数据的方法和系统 |
CN112352220B (zh) * | 2019-01-04 | 2024-05-10 | 百度时代网络技术(北京)有限公司 | 保护由数据处理加速器处理的数据的方法和系统 |
CN114253694A (zh) * | 2022-02-25 | 2022-03-29 | 杭州雄迈集成电路技术股份有限公司 | 一种基于神经网络加速器的异步处理方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106030558B (zh) | 2019-10-11 |
EP3123341A1 (en) | 2017-02-01 |
KR20160111996A (ko) | 2016-09-27 |
WO2015148741A1 (en) | 2015-10-01 |
US20150277866A1 (en) | 2015-10-01 |
US9542211B2 (en) | 2017-01-10 |
JP2017508208A (ja) | 2017-03-23 |
JP6458959B2 (ja) | 2019-01-30 |
EP3123341A4 (en) | 2017-10-25 |
KR101879113B1 (ko) | 2018-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106030558A (zh) | 用于处理器的协同设计动态语言加速器 | |
Kivity et al. | kvm: the Linux virtual machine monitor | |
US8966477B2 (en) | Combined virtual graphics device | |
KR101521778B1 (ko) | 가상화 환경에서 i/o 동작을 처리하는 방법 및 장치 | |
EP2901266B1 (en) | Flexible acceleration of code execution | |
Amiri Sani et al. | I/O paravirtualization at the device file boundary | |
ES2745709T3 (es) | Notificación de instrumentación en tiempo de ejecución | |
CN106575237A (zh) | 用于在退出虚拟机器后暴露当前处理器指令的结果的系统及方法 | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
Lim et al. | NEVE: Nested virtualization extensions for ARM | |
US20210042138A1 (en) | Computing devices | |
CN106796507A (zh) | 无需内容转换支持计算设备中的多操作系统环境 | |
US11301283B1 (en) | Virtualization extension modules | |
CN106030548A (zh) | 用于可信计算的多节点中枢 | |
US20160034300A1 (en) | Information processing devicing and method | |
Rossier | Embeddedxen: A revisited architecture of the xen hypervisor to support arm-based embedded virtualization | |
CN100514298C (zh) | 异构硬件体系间软件移植的系统 | |
US20220075639A1 (en) | Executing an application with multiple processors | |
Xia et al. | Investigating virtual passthrough I/O on commodity devices | |
US9766918B2 (en) | Virtual system device identification using GPU to host bridge mapping | |
CN100530084C (zh) | 异构虚拟处理器 | |
CN104166633B (zh) | 用于存储器访问保护的方法和系统 | |
Šubic | Implementacija minimalnega operacijskega sistema | |
CN117075974A (zh) | 一种基于risc-v服务器cpu的新型edk2启动引导方法 | |
Bugnion et al. | Virtualization Support in ARM Processors |
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 |