CN102713847A - 处理器内核的监管程序隔离 - Google Patents
处理器内核的监管程序隔离 Download PDFInfo
- Publication number
- CN102713847A CN102713847A CN2010800598208A CN201080059820A CN102713847A CN 102713847 A CN102713847 A CN 102713847A CN 2010800598208 A CN2010800598208 A CN 2010800598208A CN 201080059820 A CN201080059820 A CN 201080059820A CN 102713847 A CN102713847 A CN 102713847A
- Authority
- CN
- China
- Prior art keywords
- kernel
- operating system
- collection
- kernels
- work
- 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
Images
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/46—Multiprogramming arrangements
-
- 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/4406—Loading of operating system
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
Abstract
利用处理器内核的技术包括将所使用处理器内核与操作系统独立隔离。在本发明至少一个实施方案中,一种方法包括:在包括计算机系统的多个内核中的一个或多个内核的第一内核子集上执行操作系统。所述操作系统在虚拟机监控程序控制下作为来宾执行。所述方法包括:在包括所述多个内核中的一个或多个内核的第二内核子集上为应用执行工作。所述第一内核子集和第二内核子集互斥,并且所述第二内核子集对所述操作系统不可见。在至少一个实施方案中,所述方法包括:将所述第二内核子集与所述操作系统隔离。
Description
技术领域
本发明涉及计算机系统,更具体地说,涉及多内核计算机系统。
发明背景
一般而言,计算机系统中包含的中央处理单元(CPU)内核(即,处理器内核)以及/或者处理器数目正在迅速增加。参考图1,示例性计算系统100包括多个处理器102,所述处理器每个包括一个或多个处理器内核(例如,处理器内核104)。处理器102通过一个或多个集线器集成电路(例如,内存控制器集线器以及I/O控制器集线器)、总线(例如,PCI总线、ISA总线和SMB总线)、其它适当通信接口或其组合来耦合至其它处理器102、内存106、器件108以及存储器110。操作系统(例如,微软Windows、Linux和Unix)提供介于硬件与用户(即,计算应用,例如应用114)之间的界面。操作系统112的执行可跨多个内核104而分布。
虽然计算系统包括多个处理器内核,但是典型计算系统可能无法利用全部处理器内核或者有效利用全部处理器内核。例如,操作系统可能可以访问和控制一定数目的CPU内核,使计算机系统中其它内核闲置。
发明概要
因此,利用处理器内核的技术包括将所使用处理器内核与操作系统独立隔离。在本发明至少一个实施方案中,一种方法包括:在包括计算机系统的多个内核中的一个或多个内核的第一内核子集上执行操作系统。所述操作系统在虚拟机监控程序控制下作为来宾执行。所述方法包括:在包括所述多个内核中的一个或多个内核的第二内核子集上为应用执行工作。所述第一内核子集和第二内核子集互斥,并且所述第二内核子集对所述操作系统不可见。在至少一个实施方案中,所述方法包括:将所述第二内核子集与所述操作系统隔离。在本方法的至少一个实施方案中,所述隔离第二内核子集包括:将共享系统内存的一部分贡献给所述第二内核集。在本方法的至少一个实施方案中,所述应用在所述第二内核子集上、在所述操作系统外部并且独立于所述操作系统执行。在本方法的至少一个实施方案中,所述应用正在所述操作系统上执行,并且所述第二内核子集中内核被配置为计算加速器。在本方法的至少一个实施方案中,所述应用经由所述虚拟机监控程序间接访问所述第二内核子集。在至少一个实施方案中,所述方法还包括:将与可用计算加速器有关的信息提供至在所述操作系统上执行的驱动程序。在至少一个实施方案中,所述方法还包括以下步骤:将工作调度为由所述可用计算加速器的目标加速器来完成。在本方法的至少一个实施方案中,所述执行包括:为了方便所述应用,请求由所述计算加速器完成的工作;向所述操作系统指示已完成的工作;以及处理由工作项产生的页面错误。在至少一个实施方案中,所述方法还包括由所述第二内核集访问由所述操作系统提供的应用程序接口。在本方法的至少一个实施方案中,所述应用程序接口为操作系统内存分配例程和异常处理例程之一。
在本发明的至少一个实施方案中,一种装置包括多个内核以及编码在所述多个内核可访问的一个或多个介质中的操作系统软件。所述装置包括编码在所述多个内核可访问的一个或多个介质中并且可在所述多个内核中的一个或多个内核上执行的监管程序软件。所述监管程序软件可执行为在包括所述多个内核中的一个或多个内核的第一内核集上控制执行所述操作系统软件作为来宾,以及在包括所述多个内核中的一个或多个内核的第二内核集上执行应用的至少一些工作。所述第二内核集对所述操作系统不可见。在本装置的至少一个实施方案中,所述监管程序软件包括代码,所述代码可在所述多个内核上执行以将所述第二内核集与所述操作系统隔离,并且所述第一内核集和第二内核集互斥。在至少一个实施方案中,所述装置还包括由所述多个内核共享的共享系统内存。在至少一个实施方案中,所述装置还包括加速计算驱动程序,其编码在所述第一内核集可访问的一个或多个介质中,其中,所述加速计算驱动程序被配置来调度所述应用对所述第二内核集的工作。在至少一个实施方案中,所述装置还包括用于所述应用与所述第二内核集之间通信的至少一个队列。在本装置的至少一个实施方案中,所述至少一个队列包括:命令队列,其被配置来从加速计算驱动程序通信至所述监管程序;响应队列,其被配置来从所述监管程序通信至所述加速计算驱动程序;错误队列,其被配置来从所述监管程序通信至所述加速计算驱动程序;以及工作队列,其被配置来从加速计算应用程序接口通信至所述监管程序。在至少一个实施方案中,所述装置还包括:加速计算应用程序接口,其编码在所述第一内核集可访问的一个或多个介质中。在至少一个实施方案中,所述装置还包括:应用软件,其编码在所述多个内核可访问的一个或多个介质中,其中所述监管程序软件包括可在所述多个内核上执行的代码,以在所述监管程序控制下在所述第二内核集上独立于在所述第一内核集上执行所述操作系统而执行所述应用软件。在至少一个实施方案中,所述装置还包括:可在所述操作系统上执行的应用软件,其编码在所述多个内核可访问的一个或多个介质中,其中所述监管程序软件包括可执行为将所述第二内核集配置为计算加速器的代码以及用于在所述第二内核集上为所述应用软件执行工作的代码。
在本发明的至少一个实施方案中,一种计算机程序产品包括:一个或多个功能序列,可执行为虚拟机监控程序或者可与虚拟机监控程序结合执行,并且被配置来在所述虚拟机监控程序控制下在包括多个内核中的一个或多个内核的第一内核集上执行操作系统序列作为来宾。所述计算机程序产品包括一个或多个功能序列,所述一个或多个功能序列用于在包括所述多个内核中的一个或多个内核的第二内核集上执行应用的至少一些工作。所述第二内核集对所述操作系统不可见。在本计算机程序产品的至少一个实施方案中,所述一个或多个功能序列被配置来在所述监管程序控制下在所述第二内核集上独立于在所述第一内核集上执行所述操作系统而执行应用序列。在本计算机程序产品的至少一个实施方案中,所述一个或多个功能序列被配置来将所述第二内核集与操作系统代码隔离,并且将所述第二内核集配置为用于在所述第二内核集上执行应用代码工作的计算加速器。在本计算机程序产品的至少一个实施方案中,所述计算机程序产品编码在选自由磁盘、磁带或者其它磁性、光学或者电子存储介质组成的集中的至少一个计算机可读介质中。
附图简述
通过参考附图,可更好地理解本发明,并且本发明的许多目的、特征和优点对于所属领域技术人员而言变得显而易见。
图1示出示例性多内核计算系统的功能方框图。
图2示出示例性虚拟化系统的功能方框图。
图3示出与本发明至少一个实施方案一致的示例性虚拟化系统的功能方框图。
图4示出在图3的虚拟化系统上执行的示例性虚拟机监控程序的功能方框图,其中隔离的处理器内核被配置为与本发明至少一个实施方案一致的实际加速器。
图5示出在图3虚拟化系统中的示例性信息和控制流,其中,隔离的处理器内核被配置为与本发明至少一个实施方案一致的实际加速器。
图6示出用于图3的虚拟化系统中的工作单元处理流程的示例性信息和控制流,其中隔离的处理器内核被配置为与本发明至少一个实施方案一致的实际加速器。
图7示出用于图3的虚拟化系统中的工作单元页面错误处理的示例性信息和控制流,其中隔离的处理器内核被配置为与本发明至少一个实施方案一致的实际加速器。
图8示出用于图3的虚拟化系统中的工作单元命令完成的示例性信息和控制流,其中隔离的处理器内核被配置为与本发明至少一个实施方案一致的实际加速器。
图9示出图3的虚拟化系统中的示例性信息和控制流,所述虚拟化系统被配置用于与本发明至少一个实施方案一致的即通型应用用途。
在不同图中使用相同参考符号指示相似或者相同项。
具体实施方式
参考图2,计算机系统虚拟化用于从用户(即,在计算机系统上执行的软件)隐藏计算机系统的物理特性,并且相反,呈现抽象仿真计算系统(即,虚拟机(VM))给用户。计算机系统100的物理硬件资源作为一个或多个相对应隔离、明显独立的虚拟机(例如,VM 204)暴露给一个或多个来宾(例如,来宾206)。例如,虚拟机可包括一个或多个虚拟资源(例如,VCPU、VMEMORY和VDEVICES),所述虚拟资源是通过计算机系统100的物理资源来实施,虚拟机监控程序(VMM)(即,监管程序,例如VMM 202)分配所述物理资源至虚拟机。
如本文中指出,“虚拟机监控程序(VMM)”或者“监管程序”为提供虚拟化能力的软件。VMM提供介于来宾软件与物理资源之间的接口。通常,VMM提供给每个来宾关于完整计算机系统(即,内存、中央处理单元(CPU)和所有外围器件)的全控制外观。类型1(即,本地)VMM为在物理资源上执行的独立软件程序并且为一个或多个来宾提供虚拟化。来宾操作系统在VMM之上的层上执行。类型2(即,宿主)VMM集成至操作系统中或者在操作系统上执行,操作系统组件直接在物理资源上执行并且不通过VMM来虚拟化。VMM被视为独特软件层,并且来宾操作系统可在硬件之上的第三软件层上执行。虽然以下描述是指示例性类型1VMM,但是本文中所述的技术可在类型2VMM中实施。
回到参考图2,虽然VM 204具有虚拟机204的虚拟资源上的全控制,但是VMM 202保留对物理资源的控制。来宾系统(例如操作系统的实例(例如,Windows、Linux和Unix))在相对应虚拟机上执行,并且与在其它虚拟机上执行的其它来宾系统共享物理资源。因此,多个操作系统(例如,相同操作系统的多个实例或者不同操作系统的多个实例)可共同存在于同一计算系统上,但是彼此隔离。
VMM 202通过物理资源中的一些或者全部处理器内核来执行。个别来宾通过物理资源中包括的处理器内核集来执行。所述处理器在VMM 202执行与一个或多个来宾206执行之间切换。如本文中指出,“全域切换”为介于来宾执行与VMM执行之间的切换。一般而言,全域切换可通过VMMCALL指令或者通过其它适当技术(例如,下文描述由控制块定义的中断机制或者预定指令)来起始。虽然特定全域切换在本文中可被描述为使用特定技术来起始,但是可使用其它合适技术。在全域切换期间,当前处理器内核环境(例如,来宾或者VMM)保存其状态信息,并且恢复处理器内核执行切换的目标内核环境(例如,VMM或者来宾)的状态信息。例如,当VMM执行被调度用于执行的来宾时,VMM执行全域切换。相似地,当VMM行使物理资源上的控制时,例如,当来宾试图访问外围器件时,当内存新页面分配给来宾时,或者当VMM准备调度另一来宾时等,作出从执行来宾至执行VMM的全域切换。
可仅使用软件(其包括固件)或者通过软件和硬件的组合来实施虚拟化技术。例如,一些处理器包括虚拟化硬件,所述虚拟化硬件允许简化VMM代码并且提高系统全虚拟化性能(例如,由AMD-V和Intel VT-x提供的硬件虚拟化扩展)。如本文中所述,软件可编码在选自由磁盘、磁带或者其它磁性、光学或者电子存储介质组成的集中的至少一个计算机可读介质中。
虚拟化技术可用于将计算机系统的一个或多个处理器内核与操作系统隔离或者隔开,所述操作系统在VMM控制下在计算机系统的一个或多个其它处理内核上作为来宾执行。在虚拟化系统的至少一个实施方案中,隔离内核可被配置为实际加速器。即,隔离内核由VMM用于完成从操作系统环境内起始的工作。虽然宿主内核以及隔离内核驻留在共享内存环境内,但是隔离内核并非由操作系统直接管理。VMM被配置为用于在隔离内核与宿主内核之间通信的媒介物。示例性VMM实施基于内存的解决方案,用于使用在共享内存空间内实施且基于队列的架构来传播工作请求、页面错误和完成信息。计算工作可在来宾操作系统范围内起始。VMM然后协调操作系统与隔离内核之间的工作。因此,VMM可用于实施一般计算加速。VMM以及隔离内核可用于实施即通型应用用途。此外,VMM可用于将隔离内核配置为网络器件加速器。
由来宾操作系统使用的内核(即,宿主内核)数目可以是可选择的。例如,宿主内核数目可为特定来宾操作系统能够利用的最大内核数目。然而,在虚拟化系统的至少一个实施方案中,由来宾操作系统使用的内核数目并不限于此,且系统可利用操作系统预定内核数目来构成,所述数目为小于最大内核数目。
参考图3,示例性计算系统400包括VMM 402。VMM 402仿真解耦合架构,即,VMM 402隔离内核以执行应用或者应用任务。在至少一个实施方案中,VMM 402将内核406与内核404隔离。在至少一个实施方案中,VMM 402将分开的虚拟内存空间指派给宿主内核404并且隔离内核406。在至少一个实施方案中,VMM 402将共享虚拟内存空间指派给宿主内核404和隔离内核406。用于实施共享虚拟内存空间的技术在以下美国专利申请中描述:由发明人PatrykKaminski、Thomas Woller、Keith Lowery和Erich Boleyn于2010年12月29日申请,题目为“SYSTEMS AND METHODSIMPLEMENTING NON-SHARED PAGE TABLES FOR SHARINGMEMORY RESOURCES MANAGED BY A MAIN OPERATINGSYSTEM WITH ACCELERATOR DEVICES”的美国专利申请12/648,550以及由发明人Patryk Kaminski、Thomas Woller、KeithLowery和Erich Boleyn于2009年12月29日申请,题目为“SYSTEMSAND METHODS IMPLEMENTING SHARED PAGE TABLES FORSHARING MEMORY RESOURCES MANAGED BY A MAINOPERATING SYSTEM WITH ACCELERATOR DEVICES”的美国专利申请12/648,556。
在至少一个实施方案中,VMM 402保持控制块集,所述控制块集包括用于执行宿主内核404上的来宾执行的状态和控制信息,以及用于执行隔离内核406上的工作单元的状态和控制信息集。在至少一个实施方案中,这些控制块被称为虚拟机控制块(VMCB)。每个来宾和实际加速器可与相对应控制块相关。示例性控制块可存储在内存中以及/或者在宿主硬件存储器中,并且包括相对应来宾或者实际加速器的状态和控制信息以及/或者VMM的状态和控制信息。例如,控制块包括与来宾最后退出时的内核状态相对应的状态信息。示例性控制块可通过特定指令来访问,且信息可存储在预定数据结构的特定字段中。
在计算系统400的至少一个实施方案中,VMM 402被配置为将所使用的至少一个内核(例如,隔离内核406)隔离为实际加速器。操作系统408(例如,Microsoft Windows)作为来宾在宿主内核404(例如,x86内核)上执行,且应用414在操作系统408上执行。在操作系统408上执行的内核模式驱动程序410与VMM 402交换信息以提供用户应用414间接访问实际加速器。来宾操作系统可使用内核模式驱动程序410(例如,使用调用)来利用隔离内核406。介于VMM402与来宾操作系统408之间以及介于VMM 402与实际加速器之间的通信使用共享虚拟内存中的队列(例如,工作队列424、命令队列418、错误队列422和响应队列420)来完成。
调度程序416包括线程池,工作项跨所述线程池分布至可用隔离内核406。在调度程序416的至少一个实施方案中,使用轮询调度将工作单元指派给可用隔离内核;然而,在调度程序416的其它实施方案中可使用其它适当调度算法(例如,动态优先级调度等)。在计算系统400的至少一个实施方案中,调度程序416为用户模式调度程序,所述用户模式调度程序允许独立于操作系统执行调度。然而,在计算系统400的至少一个实施方案中,调度程序416为内核模式调度程序,所述内核模式调度程序要求修改操作系统的内核层部分。在计算系统400的至少一个实施方案中,调度程序416的至少一些功能是通过VMM 402来执行,且/或者调度程序416的至少一些功能是通过内核模式驱动程序410来执行。VMM 402保持内核模式驱动程序410可见的信息或者控制结构中的相关拓扑结构和架构信息。VMM 402至少提供与可用实际加速器有关的信息给内核模式驱动程序410。
在计算系统400的至少一个实施方案中,错误队列422、命令队列418、响应队列420和工作队列424在共享虚拟内存空间中实施。这些队列全部都需要操作系统访问(例如,内核模式访问)。在计算系统400的至少一个实施方案中,所述队列必须可以从创建应用的进程上下文的外部访问。因此,操作系统408必须提供内存解译。只有工作队列需要用户模式访问。在至少一个实施方案中,队列418、420、422和424使用非锁定实施,并且被配置用于单个读取程序和单个写入程序。虚拟机监控程序402加入队列至错误队列422和响应队列420。内核模式驱动程序410从错误队列422和响应队列420退出队列。内核模式驱动程序410加入队列至命令队列418,以及VMM 402从命令队列418退出队列。应用414加入队列至工作队列424。调度程序416从工作队列424退出队列,所述调度程序416可使用VMM402以及/或者内核模式驱动程序410来实施。
在计算系统400的至少一个实施方案中,应用414调用排队应用编程接口(API)412以初始化排队接口。排队API 412将内核模式驱动程序410实例化并且作出已记载的输入/输出控制(ioctl)调用以分配队列。内核模式驱动程序410接收ioctl命令,并且与上文所述一致分配可由适当实体(例如,VMM 402和内核模式驱动程序410)读取或者写入的队列。内核模式驱动程序410创建使工作队列424与地址空间相关的内部工作表。内核模式驱动程序410还创建页面表并且为实际加速器分配堆栈。内核模式驱动程序410创建内核模式线程,并且还将指针返回至应用414使用的工作队列424。
在计算系统400的至少一个实施方案中,轮询技术是用于处理队列。在计算系统400的至少一个实施方案中,并不是使用轮询技术,而是使用门铃技术来实现VMM 402与来宾操作系统408之间以及VMM 402与配置为实际加速器的隔离内核406之间的通信。一般而言,对队列的任何写入程序(例如,内核模式驱动程序410、排队API 412或者VMM 402)将按门铃以通知可用队列项的接收(例如,内核模式驱动程序410或者VMM 402)。在本计算系统的至少一个实施方案中,VMM 402支持作为特定队列门铃的VMM调用。指示哪个队列包含新条目的信息以及/或者其它适当信息被包括在VMM调用参数中。此外,VMM 402通过发出软件中断来按内核模式驱动程序410的门铃。不同软件中断可被用于区分不同门铃接收。
例如,应用414可经由排队API 412将条目推送至工作队列424中,且内核模式驱动程序410例如通过执行VMMCALL来按VMM402门铃,以指示所述工作队列有新条目。VMMCALL指令将控制从来宾操作系统408转移至VMM 402。相似地,当内核模式驱动程序410将命令推送至命令队列418中时,内核模式驱动程序410按VMM402的门铃(例如,通过执行VMMCALL)以指示所述命令队列有新条目。在另一实例中,当工作单元已经在配置为实际加速器的隔离内核406上完成时,VMM 402可将条目推送至错误队列422,以及经由本地高级可编程中断控制器(APIC)发送错误队列中断至宿主内核404。VMM 402可使用软件中断来按内核模式驱动程序410的门铃。所使用的特定中断号被存储在配置块中字段中,并且通过内核模式驱动程序410来保持。
应用414创建工作队列424,并且向工作队列表中条目点的内核模式驱动程序410注册。应用414使用排队API 412将工作项添加至工作队列424。排队API 412按调度程序416的门铃。在调度逻辑驻留在内核模式驱动程序410中的实施方案中,内核模式驱动程序410将读取工作队列424。因此,对VMM 402的调用将明确包括VMM 402应以哪个内核作为目标的指示符。响应门铃,调度程序416判定实际加速器是否为可用。如果无可用实际加速器,那么调度程序416更新状态以指示工作队列424为非空。如果实际加速器为可用,那么调度程序416读取工作队列424。调度程序416选择可用实际加速器,并且对VMM 402作出调度调用。
在计算系统400的至少一个实施方案中,当调度程序416与VMM402不同时,调度程序416可将命令写入至命令队列418并且按VMM402的门铃。然后VMM 402设置执行上下文,并且初始化配置为实际加速器的目标隔离内核406。VMM 402写入至响应队列420,且调度程序416处理响应队列420以保持对隔离内核406状态(例如,可用性)的可见性。当调度程序416将工作项从工作队列424退出队列时,调度程序416咨询配置为实际加速器的隔离内核406的可用实际加速器列表,并且选择目标隔离内核406。调度程序416然后创建并且将指示工作项和目标隔离内核406的命令队列条目加入队列。然后调度程序416按VMM 402的门铃。为了调度程序416保持资源可见性的精确视图,调度程序416应被通知工作项完成。在计算系统400的至少一个实施方案中,处理系统堆栈,使得来自工作项的返回作出VMM调用以通知VMM 402工作项完成。
参考图3、图4和图5,在系统重设之后,VMM 402启动系统400的内核(例如,宿主内核404和隔离内核406)(502)。在至少一个实施方案中,VMM 402独立于基本输入输出系统从内存(例如,在硬盘上)启动。虚拟机监控程序402然后在操作系统内核404以及与内核402隔离内核406上启动作为来宾的操作系统408(504)。例如,当启动操作系统408时,VMM 402将执行的内核数目告知操作系统408。然后,操作系统408不会试图访问隔离内核406。将内核406与操作系统内核404隔离的其它技术包括:修改BIOS表,使得操作系统408仅识别小于总内核数目的特定内核数目,其中虚拟机监控程序402控制两个内核集上的环境。这些BIOS表可从只读内存自动加载,或者通过VMM 402进行补丁。在将内核与操作系统隔离的另一技术中,VMM 402侦听操作系统命令以配置操作系统内核数目。
在隔离内核并且已经启动操作系统之后,操作系统408加载加速计算内核模式器件驱动程序410(508)。应用414在操作系统408上运行(510)。应用414产生工作单元,所述工作单元然后被调度为在隔离内核406上执行(512)。在完成之后,VMM 402通知操作系统408完成工作(514)。
参考图3、图4和图6,更详细描述工作单元起始过程。在计算系统400的至少一个实施方案中,内核模式驱动程序410创建内部工作表,所述内部工作表可被用于添加工作队列表条目(602)。应用414创建工作队列,并且向工作队列表中条目的内核模式驱动程序410注册(604)。执行时,应用414推送工作队列条目至工作队列424上(606)。内核模式驱动程序410使用如上所述门铃(例如,VMMCALL)或者其它适当通知技术来通知VMM 402工作队列424有新条目(608)。虚拟内存监控程序402在宿主内核404上处理门铃,并且发送INIT处理器间中断(IPI)至特定隔离内核406。虚拟机监控程序402在特定隔离内核406上处理VMM 402的退出(610)。如果特定隔离内核406为闲置(即,尚未处理工作单元),那么VMM 402从工作队列424拉取下一个工作单元条目(612),修改VMCB,并且开始执行用于处理所述工作单元的代码(614)。否则,特定隔离内核继续执行上一个推出的工作单元。在计算系统400的至少一个实施方案中,如果特定隔离内核406已经在执行工作单元,那么VMM 402不会利用VMM 402的退出来中断所述特定隔离内核406。
当处理工作单元时,配置为实际加速器的隔离内核406可能经历页面错误(即,隔离内核406访问映射在地址空间中但不加载至物理内存中的页面)。参考图3、图4和图7,在计算系统400的至少一个实施方案中,隔离内核406所经历的那些页面错误通过VMM 402来识别,并且对VMM 402进行全域切换(702)。虚拟机监控程序402从所述隔离内核获得页面错误信息,并且创建内核层页面错误条目,VMM 402将所述内核层页面错误条目推送至用户错误队列422(704)。虚拟机监控程序402经由本地APIC发出错误队列中断至宿主内核404之一(706)。内核模式驱动程序410中断处理程序处理所述中断,并且执行错误队列延迟程序调用并且读取系统错误队列428的错误。内核模式驱动程序410更新与用户进程相关的页面表(710),并且产生命令(例如,包括目标内核字段的CMD RESUME)以恢复通过配置为实际加速器的隔离内核406的执行(712)。内核模式驱动程序410将所述命令推送至命令队列418中(712),并且按VMM 402的门铃(例如,VMMCALL),所述门铃指示命令队列418有新条目(714)。虚拟机监控程序402在宿主内核404上处理所述VMMCALL,并且发出处理器间中断(即,INIT IPI)至包括队列处理程序412的隔离内核406(即,实际加速器内核0),所述队列处理程序412处理命令队列418。响应处理器间中断,实际加速器内核0读取命令队列418,并且处理所述命令(例如,CMD RESUME)(716),例如,通过发送处理器间中断至适当隔离内核406以恢复处理所述工作单元(718)。虚拟机监控程序402然后处理VMEXIT(例如,执行全域切换),并且隔离内核406恢复处理所述工作单元(720)。
参考图3、图4和图8,在计算系统400的至少一个实施方案中,一旦工作单元已经处理并且隔离内核406执行所述工作单元的最后指令,隔离内核406就执行包括一个或多个指令的例程,所述指令指示所述工作单元已经完成执行(例如,VMMCALL)(802)。因此,隔离内核406返回至VMM 402的执行,并且VMM 402处理工作单元完成指示符(804)。在计算系统400的至少一个实施方案中,VMM402判定是否配置为发出工作单元完成通知(808)。如果VMM未被配置为发出通知,那么VMM 402将继续处理下一个工作单元(810)作为替代,VMM将发出完成指令。在至少一个实施方案中,VMM 402将工作单元完成条目推送至系统错误队列428中,并且VMM 402发送错误队列中断(例如,经由本地APIC)至操作系统内核404(812)。
内核模式驱动程序410处理错误队列中断,并且从系统错误队列读取条目。内核模式驱动程序410定位与所述错误条目相关的用户处理上下文,并且将所述错误条目推送至所述处理上下文的特定用户错误队列422中(814)。内核模式驱动程序410中的用户工作线程处理程序从用户错误队列422拉取错误条目,并且完成所述工作单元(818)。
参考图9,在计算系统400的至少一个实施方案中,隔离内核406被配置用于即通型应用用途,而不是实际加速器。在系统重设之后,VMM 402启动系统400的内核(例如,宿主内核404和隔离内核406)(902)。例如,VMM 402可驻留在BIOS中,并且自动将内核406与内核402隔离(904)。虚拟机监控程序402被配置为访问文件系统,以及在隔离内核406中一个或多个内核上运行用户应用(906)。与此同时,VMM 402在宿主内核404上启动作为来宾的操作系统408(906)。虚拟机监控程序402包括一个或多个驱动程序或者基本输入输出系统(即,BIOS接口)功能以访问含有应用的介质,所述应用将在隔离内核406上初始化运行。
虽然VMM 402在一般而言被描述为虚拟机监控程序,但是在至少一个实施方案中,VMM 402为被配置来提供本文中所述的功能以及一些其它虚拟化功能的虚拟机监控程序的简约实施。在另一实施方案中,本文中所述的VMM 402功能被整合至提供其它典型虚拟机功能的通用虚拟机监控程序中。在计算系统400的至少一个实施方案中,虚拟机监控程序可被嵌套,例如,操作系统408为VMM机监控程序,所述VMM机监控程序通过与本文中所述功能一致的VMM 402来控制。在计算系统400的至少一个实施方案中,使用虚拟化技术来隔离内核不需要修改操作系统。
本文中所阐述的本发明的描述是说明性的,且无意限制以下权利要求中所阐述的本发明的范围。例如,虽然已经在隔离内核被配置为在VMM控制下在来宾操作系统上应用执行的实际加速器的实施方案中描述本发明,但是所属领域技术人员将明白,本文中的教案可用于即通型应用、网络器件加速以及一般计算加速。例如,VMM 402可与网络路由器器件协调以使用隔离内核406来加速封包检测功能。此外,虽然已经在一般计算系统中描述本发明,但是本文中所述教案的实施方案可包括在服务器、桌面系统(例如,个人计算机)、嵌入式应用(例如,移动通信器件)以及其它适当应用中。在不脱离以下权利要求中所阐述的本发明的范围和精神的情况下,可根据本文中所阐述的描述而作出本文中所公开实施方案的变动和修改。
Claims (15)
1.一种方法,其包括以下步骤:
在包括计算机系统的多个内核中的一个或多个内核的第一内核子集上执行操作系统,其中所述操作系统在虚拟机监控程序控制下作为来宾执行;以及
在包括所述多个内核中的一个或多个内核的第二内核子集上为应用执行工作,所述第一内核子集和第二内核子集互斥,并且所述第二内核子集对所述操作系统不可见。
2.根据权利要求1所述的方法,还包括:
将所述第二内核子集与所述操作系统隔离。
3.根据权利要求1所述的方法,其中所述应用在所述第二内核子集上、在所述操作系统外部并且独立于所述操作系统执行。
4.根据权利要求1所述的方法,其中所述应用在所述操作系统上执行,并且所述第二内核子集中的内核被配置为计算加速器,且其中所述应用经由所述虚拟机监控程序间接访问所述第二内核子集。
5.根据权利要求4所述的方法,还包括:
将与可用计算加速器有关的信息提供至在所述操作系统上执行的驱动程序;以及
将工作调度为由所述可用计算加速器的目标加速器来完成。
6.根据权利要求4所述的方法,其中所述执行包括:
为了方便所述应用,请求由所述计算加速器完成的工作;
向所述操作系统指示已完成的工作;以及
处理由工作项产生的页面错误。
7.一种装置,其包括:
多个内核;
操作系统软件,其编码在所述多个内核可访问的一个或多个介质中;以及
监管程序软件,其编码在所述多个内核可访问的一个或多个介质中并且可在所述多个内核中的一个或多个内核上执行,其中所述监管程序软件可执行为在包括所述多个内核中的一个或多个内核的第一内核集上控制执行所述操作系统软件作为来宾,以及在包括所述多个内核中的一个或多个内核的第二内核集上执行应用的至少一些工作,其中所述第二内核子集对所述操作系统不可见。
8.根据权利要求7所述的装置,其中所述监管程序软件包括代码,所述代码可在所述多个内核上执行以将所述第二内核集与所述操作系统隔离,且其中所述第一内核集和第二内核集互斥。
9.根据权利要求7所述的装置,还包括:
加速计算驱动程序,其编码在所述第一内核集可访问的一个或多个介质中,其中所述加速计算驱动程序被配置来调度所述应用对所述第二内核集的工作。
10.根据权利要求7所述的装置,还包括:
用于所述应用与所述第二内核集之间通信的至少一个队列,其中所述至少一个队列包括:
命令队列,其被配置来从加速计算驱动程序通信至所述监管程序;
响应队列,其被配置来从所述监管程序通信至所述加速计算驱动程序;
错误队列,其被配置来从所述监管程序通信至所述加速计算驱动程序;以及
工作队列,其被配置来从加速计算应用程序接口通信至所述监管程序。
11.根据权利要求7所述的装置,还包括:
应用软件,其编码在所述多个内核可访问的一个或多个介质中,其中所述监管程序软件包括可在所述多个内核上执行的代码,以在所述监管程序控制下在所述第二内核集上独立于在所述第一内核集上执行所述操作系统而执行所述应用软件。
12.根据权利要求7所述的装置,还包括:
可在所述操作系统上执行的应用软件,其编码在所述多个内核可访问的一个或多个介质中,其中所述监管程序软件包括可执行来将所述第二内核集配置为计算加速器的代码,以及用于在所述第二内核集上为所述应用软件执行工作的代码。
13.一种编码在至少一个计算机可读介质中的计算机程序产品,所述计算机程序产品包括:
一个或多个功能序列,其可执行为虚拟机监控程序或者可与虚拟机监控程序结合执行,并且被配置来在所述虚拟机监控程序控制下在包括所述多个内核中的一个或多个内核的第一内核集上执行操作系统序列作为来宾,以及在包括所述多个内核中的一个或多个内核的第二内核集上执行应用的至少一些工作,其中所述第二内核集对所述操作系统不可见。
14.根据权利要求13所述的计算机程序产品,其中所述一个或多个功能序列被配置来在所述虚拟机监控程序控制下在所述第二内核集上独立于在所述第一内核集上执行所述操作系统而执行应用序列。
15.根据权利要求13所述的计算机程序产品,其中所述一个或多个功能序列被配置来将所述第二内核集与操作系统代码隔离,并且将所述第二内核集配置为用于在所述第二内核集上执行应用代码工作的计算加速器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/648,592 | 2009-12-29 | ||
US12/648,592 US9058183B2 (en) | 2009-12-29 | 2009-12-29 | Hypervisor isolation of processor cores to enable computing accelerator cores |
PCT/US2010/060193 WO2011090596A2 (en) | 2009-12-29 | 2010-12-14 | Hypervisor isolation of processor cores |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102713847A true CN102713847A (zh) | 2012-10-03 |
CN102713847B CN102713847B (zh) | 2016-03-16 |
Family
ID=44189079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080059820.8A Active CN102713847B (zh) | 2009-12-29 | 2010-12-14 | 处理器内核的监管程序隔离 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9058183B2 (zh) |
EP (1) | EP2519877B1 (zh) |
JP (1) | JP2013516021A (zh) |
KR (1) | KR101668399B1 (zh) |
CN (1) | CN102713847B (zh) |
WO (1) | WO2011090596A2 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714843A (zh) * | 2013-12-17 | 2015-06-17 | 华为技术有限公司 | 多内核操作系统实例支持多处理器的方法及装置 |
CN105393218A (zh) * | 2013-06-25 | 2016-03-09 | 英派尔科技开发有限公司 | 通过虚拟机切换的重构 |
CN106462445A (zh) * | 2014-05-05 | 2017-02-22 | 国际商业机器公司 | 针对虚拟化实施一致性加速器功能隔离 |
CN106537336A (zh) * | 2014-07-15 | 2017-03-22 | 华为技术有限公司 | 云固件 |
WO2017114283A1 (zh) * | 2015-12-31 | 2017-07-06 | 华为技术有限公司 | 一种在物理主机中处理读/写请求的方法和装置 |
US9779473B2 (en) | 2013-03-15 | 2017-10-03 | Intel Corporation | Memory mapping for a graphics processing unit |
CN107430522A (zh) * | 2015-04-16 | 2017-12-01 | 谷歌公司 | 虚拟机系统 |
CN108228333A (zh) * | 2016-12-14 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多核系统的核间资源隔离方法 |
CN108664273A (zh) * | 2018-05-09 | 2018-10-16 | 歌尔股份有限公司 | 一种解决多个软件访问硬件资源冲突的方法及设备 |
CN112181626A (zh) * | 2020-10-16 | 2021-01-05 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 脱离Android操作系统调度CPU的系统、方法及介质 |
CN112236752A (zh) * | 2018-04-11 | 2021-01-15 | 康奈尔大学 | 用于改进软件容器性能和隔离的方法和系统 |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484653B2 (en) * | 2010-07-28 | 2013-07-09 | Red Hat Israel, Ltd. | Mechanism for delayed hardware upgrades in virtualization systems |
US8418177B2 (en) * | 2010-10-01 | 2013-04-09 | Microsoft Corporation | Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores |
US9529615B2 (en) * | 2010-11-24 | 2016-12-27 | International Business Machines Corporation | Virtual device emulation via hypervisor shared memory |
US9645823B2 (en) | 2011-03-03 | 2017-05-09 | Hewlett-Packard Development Company, L.P. | Hardware controller to choose selected hardware entity and to execute instructions in relation to selected hardware entity |
US9189283B2 (en) * | 2011-03-03 | 2015-11-17 | Hewlett-Packard Development Company, L.P. | Task launching on hardware resource for client |
US8966625B1 (en) | 2011-05-24 | 2015-02-24 | Palo Alto Networks, Inc. | Identification of malware sites using unknown URL sites and newly registered DNS addresses |
US8555388B1 (en) | 2011-05-24 | 2013-10-08 | Palo Alto Networks, Inc. | Heuristic botnet detection |
US9898316B1 (en) * | 2011-09-30 | 2018-02-20 | EMC IP Holding Company LLC | Extended fractional symmetric multi-processing capabilities to guest operating systems |
CN104106047B (zh) * | 2011-12-28 | 2017-10-13 | 英特尔公司 | 用于在操作系统启动后引导类型1虚拟机监视器的系统、方法以及计算机程序产品 |
US8789047B2 (en) | 2012-01-26 | 2014-07-22 | Empire Technology Development Llc | Allowing world switches between virtual machines via hypervisor world switch security setting |
US20150039873A1 (en) * | 2012-04-30 | 2015-02-05 | Gregg B. Lesartre | Processor providing multiple system images |
US9298504B1 (en) * | 2012-06-11 | 2016-03-29 | Amazon Technologies, Inc. | Systems, devices, and techniques for preempting and reassigning tasks within a multiprocessor system |
US9104870B1 (en) | 2012-09-28 | 2015-08-11 | Palo Alto Networks, Inc. | Detecting malware |
US9215239B1 (en) | 2012-09-28 | 2015-12-15 | Palo Alto Networks, Inc. | Malware detection based on traffic analysis |
US9448829B2 (en) | 2012-12-28 | 2016-09-20 | Intel Corporation | Hetergeneous processor apparatus and method |
US9361416B2 (en) * | 2013-01-30 | 2016-06-07 | Empire Technology Development Llc | Dynamic reconfiguration of programmable hardware |
JP6040101B2 (ja) * | 2013-05-31 | 2016-12-07 | 株式会社日立製作所 | ストレージ装置の制御方法、ストレージ装置及び情報処理装置 |
US9613210B1 (en) | 2013-07-30 | 2017-04-04 | Palo Alto Networks, Inc. | Evaluating malware in a virtual machine using dynamic patching |
US10019575B1 (en) | 2013-07-30 | 2018-07-10 | Palo Alto Networks, Inc. | Evaluating malware in a virtual machine using copy-on-write |
US9811665B1 (en) | 2013-07-30 | 2017-11-07 | Palo Alto Networks, Inc. | Static and dynamic security analysis of apps for mobile devices |
WO2015030717A1 (en) * | 2013-08-27 | 2015-03-05 | Empire Technology Development Llc | Consolidating operations associated with a plurality of host devices |
US10514942B2 (en) | 2014-02-24 | 2019-12-24 | Red Hat Israel, Ltd. | Using linker scripts for loading system configuration tables |
KR101595064B1 (ko) * | 2014-06-20 | 2016-02-18 | 고려대학교 산학협력단 | 트러스트 존 가상환경에서의 장치 공유 시스템 및 그 방법 |
US9489516B1 (en) | 2014-07-14 | 2016-11-08 | Palo Alto Networks, Inc. | Detection of malware using an instrumented virtual machine environment |
US9542554B1 (en) | 2014-12-18 | 2017-01-10 | Palo Alto Networks, Inc. | Deduplicating malware |
US9805193B1 (en) * | 2014-12-18 | 2017-10-31 | Palo Alto Networks, Inc. | Collecting algorithmically generated domains |
KR102309798B1 (ko) * | 2015-04-16 | 2021-10-06 | 삼성전자주식회사 | Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법 |
US9747122B2 (en) | 2015-04-16 | 2017-08-29 | Google Inc. | Virtual machine systems |
US9996357B2 (en) | 2015-10-30 | 2018-06-12 | International Business Machines Corporation | Resolving page faults out of context for shared contexts |
US10846117B1 (en) * | 2015-12-10 | 2020-11-24 | Fireeye, Inc. | Technique for establishing secure communication between host and guest processes of a virtualization architecture |
US10108446B1 (en) | 2015-12-11 | 2018-10-23 | Fireeye, Inc. | Late load technique for deploying a virtualization layer underneath a running operating system |
US10437623B2 (en) * | 2015-12-24 | 2019-10-08 | Intel IP Corporation | Fast switching between virtual machines without interrupt virtualization for high-performance, secure trusted-execution environment |
GB2549773B (en) * | 2016-04-28 | 2018-05-16 | Metaswitch Networks Ltd | Configuring host devices |
US10437616B2 (en) * | 2016-12-31 | 2019-10-08 | Intel Corporation | Method, apparatus, system for optimized work submission to an accelerator work queue |
US10416897B2 (en) | 2017-03-27 | 2019-09-17 | SK Hynix Inc. | Memory system with latency distribution optimization and an operating method thereof |
KR102028096B1 (ko) * | 2017-04-18 | 2019-10-02 | 한국전자통신연구원 | 하이퍼바이저 기반의 가상 머신 격리 장치 및 방법 |
EP3693853B1 (en) * | 2017-11-15 | 2022-02-23 | Huawei Technologies Co., Ltd. | Method and device for scheduling acceleration resources, and acceleration system |
GB2571922B (en) * | 2018-03-05 | 2020-03-25 | Advanced Risc Mach Ltd | External exception handling |
US10956573B2 (en) | 2018-06-29 | 2021-03-23 | Palo Alto Networks, Inc. | Dynamic analysis techniques for applications |
US11010474B2 (en) | 2018-06-29 | 2021-05-18 | Palo Alto Networks, Inc. | Dynamic analysis techniques for applications |
CN112740180B (zh) * | 2018-08-03 | 2024-06-25 | 辉达公司 | 适用于人工智能辅助的汽车应用的虚拟机存储器的安全访问 |
WO2020155005A1 (en) * | 2019-01-31 | 2020-08-06 | Intel Corporation | Shared memory mechanism to support fast transport of sq/cq pair communication between ssd device driver in virtualization environment and physical ssd |
US20220365729A1 (en) * | 2019-01-31 | 2022-11-17 | Intel Corporation | Shared memory mechanism to support fast transport of sq/cq pair communication between ssd device driver in virtualization environment and physical ssd |
US11196765B2 (en) | 2019-09-13 | 2021-12-07 | Palo Alto Networks, Inc. | Simulating user interactions for malware analysis |
US11755785B2 (en) | 2020-08-03 | 2023-09-12 | Nxp Usa, Inc. | System and method of limiting access of processors to hardware resources |
US11500668B2 (en) | 2020-10-15 | 2022-11-15 | Red Hat, Inc. | Page fault support for virtual machine network accelerators |
US20230033583A1 (en) * | 2021-07-30 | 2023-02-02 | Advanced Micro Devices, Inc. | Primary input-output queue serving host and guest operating systems concurrently |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1991768A (zh) * | 2005-12-29 | 2007-07-04 | 英特尔公司 | 与不同种类的资源通信的基于指令系统结构的内定序器 |
US20080222396A1 (en) * | 2007-03-09 | 2008-09-11 | Spracklen Lawrence A | Low Overhead Access to Shared On-Chip Hardware Accelerator With Memory-Based Interfaces |
US20090007104A1 (en) * | 2007-06-29 | 2009-01-01 | Zimmer Vincent J | Partitioned scheme for trusted platform module support |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030229794A1 (en) * | 2002-06-07 | 2003-12-11 | Sutton James A. | System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container |
US7484091B2 (en) * | 2004-04-29 | 2009-01-27 | International Business Machines Corporation | Method and system for providing a trusted platform module in a hypervisor environment |
US7810083B2 (en) * | 2004-12-30 | 2010-10-05 | Intel Corporation | Mechanism to emulate user-level multithreading on an OS-sequestered sequencer |
US8713574B2 (en) * | 2006-06-05 | 2014-04-29 | International Business Machines Corporation | Soft co-processors to provide a software service function off-load architecture in a multi-core processing environment |
US8510859B2 (en) | 2006-09-26 | 2013-08-13 | Intel Corporation | Methods and arrangements to launch trusted, co-existing environments |
US8561060B2 (en) * | 2007-04-26 | 2013-10-15 | Advanced Micro Devices, Inc. | Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine |
US8032897B2 (en) * | 2007-07-31 | 2011-10-04 | Globalfoundries Inc. | Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization |
US8763115B2 (en) * | 2007-08-08 | 2014-06-24 | Vmware, Inc. | Impeding progress of malicious guest software |
JP4775744B2 (ja) * | 2007-10-19 | 2011-09-21 | インテル・コーポレーション | 信頼できる共存環境をラウンチする方法およびプログラム |
US20090187726A1 (en) * | 2008-01-22 | 2009-07-23 | Serebrin Benjamin C | Alternate Address Space to Permit Virtual Machine Monitor Access to Guest Virtual Address Space |
US8819707B2 (en) * | 2009-06-18 | 2014-08-26 | Citrix Systems, Inc. | Methods and systems for importing a device driver into a guest computing environment |
US8910153B2 (en) * | 2009-07-13 | 2014-12-09 | Hewlett-Packard Development Company, L. P. | Managing virtualized accelerators using admission control, load balancing and scheduling |
-
2009
- 2009-12-29 US US12/648,592 patent/US9058183B2/en active Active
-
2010
- 2010-12-14 JP JP2012547104A patent/JP2013516021A/ja active Pending
- 2010-12-14 EP EP10796238.3A patent/EP2519877B1/en active Active
- 2010-12-14 KR KR1020127019346A patent/KR101668399B1/ko active IP Right Grant
- 2010-12-14 CN CN201080059820.8A patent/CN102713847B/zh active Active
- 2010-12-14 WO PCT/US2010/060193 patent/WO2011090596A2/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1991768A (zh) * | 2005-12-29 | 2007-07-04 | 英特尔公司 | 与不同种类的资源通信的基于指令系统结构的内定序器 |
US20080222396A1 (en) * | 2007-03-09 | 2008-09-11 | Spracklen Lawrence A | Low Overhead Access to Shared On-Chip Hardware Accelerator With Memory-Based Interfaces |
US20090007104A1 (en) * | 2007-06-29 | 2009-01-01 | Zimmer Vincent J | Partitioned scheme for trusted platform module support |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9779473B2 (en) | 2013-03-15 | 2017-10-03 | Intel Corporation | Memory mapping for a graphics processing unit |
CN104090849B (zh) * | 2013-03-15 | 2017-11-07 | 英特尔公司 | 用于图形处理单元的存储器映射的系统、方法、装置、电子设备以及机器可读介质 |
CN105393218A (zh) * | 2013-06-25 | 2016-03-09 | 英派尔科技开发有限公司 | 通过虚拟机切换的重构 |
CN105393218B (zh) * | 2013-06-25 | 2019-03-01 | 英派尔科技开发有限公司 | 用来重构可编程电路的方法、设备以及系统 |
CN104714843B (zh) * | 2013-12-17 | 2018-06-15 | 华为技术有限公司 | 多内核操作系统实例支持多处理器的方法及装置 |
CN104714843A (zh) * | 2013-12-17 | 2015-06-17 | 华为技术有限公司 | 多内核操作系统实例支持多处理器的方法及装置 |
CN106462445A (zh) * | 2014-05-05 | 2017-02-22 | 国际商业机器公司 | 针对虚拟化实施一致性加速器功能隔离 |
CN106462445B (zh) * | 2014-05-05 | 2019-10-01 | 国际商业机器公司 | 针对虚拟化实施一致性加速器功能隔离 |
CN106537336A (zh) * | 2014-07-15 | 2017-03-22 | 华为技术有限公司 | 云固件 |
CN106537336B (zh) * | 2014-07-15 | 2020-04-28 | 华为技术有限公司 | 云固件 |
CN107430522A (zh) * | 2015-04-16 | 2017-12-01 | 谷歌公司 | 虚拟机系统 |
CN107430522B (zh) * | 2015-04-16 | 2018-09-21 | 谷歌有限责任公司 | 虚拟机系统 |
US10579305B2 (en) | 2015-12-31 | 2020-03-03 | Huawei Technologies Co., Ltd. | Method and apparatus for processing read/write request in physical machine |
WO2017114283A1 (zh) * | 2015-12-31 | 2017-07-06 | 华为技术有限公司 | 一种在物理主机中处理读/写请求的方法和装置 |
CN108228333A (zh) * | 2016-12-14 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多核系统的核间资源隔离方法 |
CN112236752A (zh) * | 2018-04-11 | 2021-01-15 | 康奈尔大学 | 用于改进软件容器性能和隔离的方法和系统 |
US12001867B2 (en) | 2018-04-11 | 2024-06-04 | Cornell University | Method and system for improving software container performance and isolation |
CN108664273A (zh) * | 2018-05-09 | 2018-10-16 | 歌尔股份有限公司 | 一种解决多个软件访问硬件资源冲突的方法及设备 |
CN112181626A (zh) * | 2020-10-16 | 2021-01-05 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 脱离Android操作系统调度CPU的系统、方法及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2011090596A3 (en) | 2011-10-20 |
JP2013516021A (ja) | 2013-05-09 |
US9058183B2 (en) | 2015-06-16 |
CN102713847B (zh) | 2016-03-16 |
KR20120111734A (ko) | 2012-10-10 |
KR101668399B1 (ko) | 2016-10-21 |
WO2011090596A2 (en) | 2011-07-28 |
EP2519877A2 (en) | 2012-11-07 |
EP2519877B1 (en) | 2020-04-08 |
US20110161955A1 (en) | 2011-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102713847A (zh) | 处理器内核的监管程序隔离 | |
US8489789B2 (en) | Interrupt virtualization | |
US8261284B2 (en) | Fast context switching using virtual cpus | |
US10871982B2 (en) | Virtual processor scheduling via memory monitoring | |
US8612659B1 (en) | Hardware interrupt arbitration in virtualized computer systems | |
US9959134B2 (en) | Request processing using VM functions | |
US20180267825A1 (en) | Hypervisor-visible guest thread management | |
EP4220394A1 (en) | Chip system, method for processing virtual interrupt, and corresponding device | |
CN102981808A (zh) | 用于持续性用户级线程的设备、系统和方法 | |
KR20160033517A (ko) | 인터럽트 컨트롤러를 위한 하이브리드 가상화 방법 | |
US10949243B2 (en) | Reducing IPI overhead with CPU overcommit support via IPI broadcast | |
CN110447012B (zh) | 协作虚拟处理器调度 | |
US20220156103A1 (en) | Securing virtual machines in computer systems | |
WO2018040845A1 (zh) | 一种计算资源调度方法及装置 | |
US11281487B2 (en) | Managing processor overcommit for virtual machines | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
US11593159B2 (en) | External exception handling | |
US11726811B2 (en) | Parallel context switching for interrupt handling | |
US9547522B2 (en) | Method and system for reconfigurable virtual single processor programming model | |
CN113918272B (zh) | 分离式虚拟机及其虚拟机架构、构建方法和优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |