CN104969199A - 实施黑名单分页结构指示值的处理器、方法,以及系统 - Google Patents
实施黑名单分页结构指示值的处理器、方法,以及系统 Download PDFInfo
- Publication number
- CN104969199A CN104969199A CN201380062295.9A CN201380062295A CN104969199A CN 104969199 A CN104969199 A CN 104969199A CN 201380062295 A CN201380062295 A CN 201380062295A CN 104969199 A CN104969199 A CN 104969199A
- Authority
- CN
- China
- Prior art keywords
- blacklist
- virtual machine
- instruction
- value
- point
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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
-
- 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/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
一个方面的方法包括接收由虚拟机将分页结构标识存储位置修改为具有给定值的企图的指示。判断给定值匹配一组一个或多个黑名单值中的至少一个。由虚拟机将分页结构标识存储位置修改为具有给定值的企图被诱捕到虚拟机监视器。也公开了其他方法、设备以及系统。
Description
背景技术
技术领域
各实施例涉及处理器领域。具体而言,各实施例涉及使用分页的处理器的领域。
背景信息
许多处理器以及系统支持虚拟存储器以及分页。分页可以允许软件限制并控制进程或任务对被称为页面的存储器的区域的访问。分页可以被用来为每一个进程或任务创建单独的或独立的虚拟地址空间。这可以被用来防止一个进程或任务修改其他进程或任务的存储器。
通常,可以通过分页结构层次结构或分页结构的组,诸如页面目录和页面表,访问页面。页面目录可以具有若干个页面目录条目。每一个页面目录条目都可以存储页面表的指示(例如,指针)。页面表可以表示用于将虚拟地址映射到物理地址的数据结构。进程或任务可以访问带有虚拟地址的页面表,并使用页面表来确定它寻求的数据的物理地址。每一个页面表都可以具有若干个页面表条目。每一个页面表条目都可以存储页面的物理地址的指示(例如,指针)。
许多处理器具有控制寄存器,该控制寄存器用于存储定位适合于每一个进程或任务的独立虚拟地址空间和/或分页结构的信息。例如,页面目录基址寄存器(PDBR)可以被用来存储页面目录基址和/或页面目录条目的物理地址。当调度进程或任务时,当发生进程或任务切换时等等,进程或任务可以修改存储对应页面目录基址的进程或任务的PDBR。
通常,为安全目的,监测对PDBR或其他控制寄存器的企图的修改。然而,对PDBR修改的无效率的监测往往可能会导致显著的性能下降。
附图的若干视图的简要说明
通过参考用来说明本发明的实施例的以下描述和附图,可最好地理解本发明。在附图中:
图1是适用于实现本发明的各实施例的虚拟机设备的实施例的框图。
图2是虚拟机设备的实施例的框图。
图3是判断是否允许虚拟机修改分页结构标识(PSI)存储位置的企图的方法的实施例的流程框图。
图4是处理试图修改分页结构标识(PSI)存储位置的指令的方法的实施例的流程框图。
图5是虚拟机设备的详细示例实施例的框图。
图6是配置虚拟机设备的方法的实施例的流程框图。
图7是CR3控制寄存器的实施例的框图。
图8A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。
图8B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。
图9A是根据本发明实施例的单处理器核连同其到管芯上互连网络的连接以及其2级(L2)高速缓存的本地子集的框图。
图9B是根据本发明的各实施例的图9A中的处理器核的一部分的展开图。
图10是根据本发明的实施例的可具有超过一个的核、可具有集成的存储器控制器、并且可具有集成图形的处理器的框图。
图11所示为根据本发明的一个实施例的系统的框图。
图12所示为根据本发明的实施例的第一更具体示例性系统的框图。
图13示出根据本发明的实施例的第二更具体的示例性系统1300的框图。
图14所示为根据本发明的一实施例的SoC的框图。
图15是根据本发明的多个实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在以下描述中,阐述了大量具体细节(例如,特定操作序列、逻辑实现、处理器配置、微架构细节、逻辑分区/集成细节、系统组件的类型和相互关系,等等)。然而应理解,本发明的实施例在没有这些具体细节的情况下也可实践。在其它实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。
图1是适用于实现本发明的各实施例的虚拟机设备100的实施例的框图。虚拟机设备包括多个虚拟机(VM)101、虚拟机监视器(VMM)104以及平台硬件105。
平台硬件105可包括在台式计算机、膝上型计算机、手持式计算机、蜂窝电话、手持式设备、服务器、网络元件、机顶盒,或其他类型的电子设备中发现的那些。平台硬件包括至少一个处理器106、至少一个存储器109以及可任选的一个或多个输入和/或输出(I/O)设备112。处理器可以是能够执行软件的任何类型的处理器。在某些实施例中,处理器可以是通用处理器(例如,用于台式机、膝上型计算机等计算机的类型的)。替换地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举数例。还可以可任选地使用相同或者不同类型的两个或更多处理器。至少一个存储器可包括硬盘、软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪存或可由处理器读取的任何其他类型的机器可读取的介质,或其组合。存储器可以存储指令和/或数据以执行本文其它位置所公开的一个或多个实施例。
虚拟机设备也包括虚拟机监视器(VMM)104。VMM可以以软件、硬件、固件、或其组合来实现。在示图中,示出了单一VMM,虽然在其他实施例中,可以使用两个或更多VMM。VMM可以仿真并输出到较高级别的软件的裸机接口。这样的较高级别的软件可包括,例如,标准或实时操作系统(OS)、具有有限的OS功能的高度精简的操作设备,不一定包括传统的OS功能和/或设施的软件等等。VMM可以向其他软件(例如,在VM上和/或内运行的来宾软件)介绍虚拟机(VM)101的抽象。
所示出的实施例包括第一虚拟机(VM1)101-1到第N虚拟机(VMN)101-N,其中,数字N可以是任何合适的数字。每一个VM都具有其自己的来宾软件。如图所示,第一VM可以具有第一来宾操作系统(OS1)102-1和可任选的第一来宾应用程序(APP1)103-1,而第N VM可以具有第N操作系统(OSN)102-N和可任选的第N来宾应用程序(APPN)103-N。每一个VM上的来宾软件可以预期访问平台硬件中的至少某些(例如,处理器106、存储器109、I/O设备112等等)。VMM可以促进来宾软件对平台硬件的访问,而保持对平台硬件和/或某些事件(例如,中断)的最后控制,以帮助提供来宾软件的正确操作,以及帮助提供来自来宾软件以及在来宾软件之间的保护。
可以说VMM在根操作模式下运行,而可以说VM(例如,来宾软件)在非根操作模式下运行。VM和/或非根操作模式特权没有VMM和/或根操作模式那么大。可以防止VMM免于全部来宾软件。VM中的来宾软件可能不必须知道VMM存在和/或它正在与其他VM共享平台硬件。VMM可以彼此隔离不同的VM的来宾软件堆栈。VMM还可以在发生某些类型的事件时接管控制。
转换到VM操作和/或将控制从VMM转移到VM(例如,到来宾软件)被称为VM进入。在一个实施例中,VM进入通过执行特殊指令来实现,虽然这不是必需的。从VM操作转换回到VMM操作和/或将控制从VM转移到VMM在本文中被称为VM退出。VM退出的潜在的原因包括,但不仅限于,某些类型的有特权的异常、平台事件或虚拟化事件。如下面进一步说明的,在某些实施例中,VM退出可能由修改控制寄存器的非法尝试导致。在一个实施例中,当发生VM退出时,在特定入口点(例如,指令指针值),例如,在虚拟机控制结构(VMCS)110中指出的,将控制传递到VMM。
在另一个实施例中,在通过重定向结构矢量化之后,将控制传递到VMM。可另选地,可以使用任何其他合适的机制来将将控制从VM或来宾软件转移到VMM。
再次参考图1,存储器存储至少一个虚拟机控制结构(VMCS)110。VMCS可以控制与虚拟机设备的操作相关联的某些方面(例如,VM操作和/或VM操作和VMM操作之间的转换的某些方面)。应该理解,有许多不同的可能的实现VMCS的方式。在某些实施例中,不同的VMCS可以用于每一个不同的VM,或在其他实施例中,VMCS可以用于多个VM。在某些实施例中,不同的VMCS可以用于VM内的每一个不同的逻辑或虚拟处理器,或在其他实施例中,VMCS可以用于多个逻辑或虚拟处理器和/或多个VM。可构想其他示例。
处理器具有一组一个或多个控制寄存器107以控制与处理器的操作相关联的某些方面。如图所示,在某些实施例中,控制寄存器可包括页面目录基址寄存器(PDBR)108。PDBR可操作,以页面目录基址的形式存储分页结构标识信息。可另选地,分页结构标识信息和/或页面目录基址可以被存储在另一位置,诸如,存储在存储器109中。在某些实施例中,页面目录基址和/或分页结构标识信息可以提供到存储器109中的分页结构和/或分页结构111的分层集合的进入点。
图2是虚拟机设备200的实施例的框图。在某些实施例中,图2的虚拟机设备可以在图1的虚拟机设备内实现。在这样的实施例中,上文对于图1所描述的特征和选项中的任何一个都可以可任选地和图2的虚拟机设备一起使用。可另选地,图2的虚拟机设备可以被包括在与如图1所示的虚拟机设备类似的或完全不同的虚拟机设备内。
虚拟机设备200包括虚拟机(VM)201。在某些实施例中,VM可能企图修改215分页结构标识(PSI)存储位置208,诸如,页面目录基址寄存器(PDBR)。例如,当调度一个进程(例如,操作系统任务)时,VM可能企图执行将值(由指令的操作数指定的或以别的方式指出的)存储在PSI存储位置的指令。在某些实施例中,值可以对应于企图执行指令的进程(例如,值可以指出对应于该进程的分页目录或其他分页结构)。在某些实施例中,PSI存储位置可以可任选地被包括在处理器206的一组控制寄存器207内。可另选地,PSI存储位置可以被包括在别处(例如,在处理器的配置空间内,在存储器内,在VMCS内等等)。
PSI黑名单实施逻辑216可以注意,观察,截取或以别的方式接收VM企图修改215PSI存储位置208的指示。PSI黑名单实施逻辑可以可操作,以判断是否允许VM修改PSI存储位置的企图。PSI黑名单实施逻辑与一组一个或多个PSI黑名单值217耦合或以别的方式进行通信。如图所示,在所示实施例中,该组PSI黑名单值可包括第一PSI黑名单值217-1到第N PSI黑名单值217-N,其中,整数N可以具有适合于特定实现的任何值。通常,数字N大约是几十或较少和/或小于虚拟机设备中的进程的数量(例如,通常大约一百或更多)。在各示例实施例中,数字N的范围可以从大约1到大约20(包括),或从大约1到大约10(包括),或从大约1到大约4(包括),虽然本发明的范围不如此限制。在某些实施例中,若干个(例如,整数N的大小)当前正在被使用的PSI黑名单值也可以可任选地被存储,并由PSI黑名单实施逻辑使用。如图所示,在某些实施例中,一个或多个PSI黑名单值217的组,以及若干个PSI黑名单值218,可以可任选地被存储在一个或多个虚拟机控制结构(VMCS)210中,该虚拟机控制结构210可以与PSI黑名单实施逻辑耦合或以别的方式进行通信。
在某些实施例中,PSI黑名单实施逻辑216可以操作,以至少部分地基于对应于修改PSI存储位置的企图的值(例如,由企图修改PSI存储位置的指令的操作数指出的值)与一个或多个PSI黑名单值217的组的比较,判断是否允许修改215PSI存储位置208的企图。例如,可以进行比较,以判断该值是否匹配或等于PSI黑名单值中的一个。如果PSI黑名单值的可选数量被指定为N,那么,可以只考虑最初的N个PSI黑名单值。在某些实施例中,如果值不等于或匹配PSI黑名单值的组中的任何一个,则PSI黑名单实施逻辑可操作,以允许修改PSI存储位置的企图。这可以在没有必要诱捕到VMM和/或产生VM退出的情况下进行。如果PSI黑名单值的可选数量被指定为N等于零,那么,可以允许修改PSI的企图,不管要被存储在PSI存储位置的值是什么。在这样的情况下,值可以被写入到或存储在PSI存储位置。
相反,在某些实施例中,如果值等于或匹配PSI黑名单值217的组中的任何一个,则PSI黑名单实施逻辑216可操作,以产生、请求、导致或以别的方式导致诱捕到VMM和/或VM退出。在诱捕到VMM之后,VMM可以执行进一步处理(例如,根据配置的策略或规则),以便判断是否允许修改215PSI存储位置208的企图。例如,VMM可以检测对应于企图的修改的进程。如果VMM感觉到进程是可信赖的,那么,VMM可以判断允许企图的修改和/或VMM可以潜在地作出企图的修改本身。可另选地,如果VMM感觉到进程是不能信赖的和/或怀疑进程正在企图做非法的事情,那么,VMM可以阻止企图的修改和/或优雅地删除进程。VMM可以可任选地记录这样的事件。如此,PSI黑名单值可以表示一组VM不被允许写入或存储在PSI存储位置的值,无需预先的监测和来自VMM的批准。
在某些实施例中,黑名单值可以表示分页结构标识的物理地址和/或所感兴趣的进程或任务的页面目录基址,用于更近的监测目的。例如,当未签名的程序、未标识的程序、来自未知源的程序、web浏览器进程、其它不受信任的程序等等即将运行或正在运行时,这可以有用。可以由用户或有特权的软件在运行时向黑名单值添加这样的类型的进程的分页结构标识和/或页面目录基址。这可以允许对这些程序的行为的更紧密的监测,当它们匹配黑名单时,允许对PSI存储位置的企图的修改被诱捕到VMM。然后,VMM可以分析企图的修改,并基于不限制本发明的各种不同的准则,判断是否允许企图的修改。
在各实施例中,PSI黑名单实施逻辑可以以硬件(例如,集成电路、晶体管等等)、固件(例如,微代码)、软件(例如,VMM的一部分),或其组合,来实现。在某些实施例中,PSI黑名单实施逻辑可以以永久性管芯上的处理器逻辑,例如,硬件、固件,或其组合,来实现。
图3是判断是否允许虚拟机修改分页结构标识(PSI)存储位置的企图的方法320的实施例的流程框图。在一些实施例中,图3的操作和/或方法可由图1-2的虚拟机设备中的任何一个执行和/或在其内执行。在这样的实施例中,上文对于图1-2所描述的特征和选项中的任何一个可以可任选地和图3的方法一起使用,和/或上文对于图3的方法所描述的特征和选项中的任何一个可以可任选地和图1-2的虚拟机设备一起使用。替换地,图3的操作和/或方法可由类似的或完全不同的虚拟机设备执行,和/或在类似的或完全不同的虚拟机设备内执行。此外,图1-2的虚拟机设备可执行与图3相同、相似或者完全不同的操作和/或方法。
参考图示,在框321,注意、观察、截取或以别的方式接收VM将PSI存储位置修改为具有给定值的企图的指示。在某些实施例中,这可包括接收VM的执行指令以将由指令指定的或以别的方式指出的值存储到PSI存储位置的企图的指示。例如,当在VM上调度进程(例如,操作系统任务)时,可以执行这样的企图,值可以对应于与进程的虚拟地址空间相对应的页面目录或结构。在某些实施例中,可以在PSI黑名单实施逻辑中接收VM修改PSI存储位置的企图的指示。
在框322,判断给定值是否匹配或等于(可任选地配置的数量的)PSI黑名单值中的任何一个。这可包括将给定值与可任选地配置的数量的PSI黑名单值中的每一个进行比较。在某些实施例中,这可包括访问配置的数量的黑名单值的组,并将给定值只与配置的数量的黑名单值的组进行比较。允许PSI黑名单值的数量可被配置是可选的,而不是必需的。
假设配置了至少一个PSI黑名单值,如果判断给定值匹配或等于配置的PSI黑名单值中的任何一个(即,在框322,判断是“是”),那么,在框323,这可以导致诱捕到VMM和/或VM退出。如上文所提及的,VMM可以基于其配置的策略或规则,判断是否允许企图的修改。例如,如果VMM感觉到正在企图的进程是不能信赖的或怀疑非法或不希望的行为,那么,VMM可以阻止企图的修改,在某些情况下,优雅地删除进程。
相反,如果判断给定值不匹配或等于配置的PSI黑名单值中的任何一个(即,在框322,判断是“否”),那么,在框324,可以允许或准许对PSI存储位置的企图的修改。在某些实施例中,如果当前配置了零个PSI黑名单值和/或如果可任选地关闭PSI黑名单实施机制,那么,还可以允许将PSI存储位置修改到给定值的企图。
图4是处理企图修改分页结构标识(PSI)存储位置的指令的方法430的实施例的流程框图。在一些实施例中,图4的操作和/或方法可由图1-2的虚拟机设备中的任何一个执行和/或在图1-2的虚拟机设备中的任何一个内执行。在这样的实施例中,上文对于图1-2所描述的特征和选项中的任何一个可以可任选地和图4的方法一起使用,和/或上文对于图4的方法所描述的特征和选项中的任何一个可以可任选地和图1-2的虚拟机设备一起使用。替换地,图4的操作和/或方法可由类似的或完全不同的虚拟机设备执行,和/或在类似的或完全不同的虚拟机设备内执行。此外,图1-2的虚拟机设备可执行与图4相同、相似、或者完全不同的操作和/或方法。
参考图示,在框431,接收指令。在某些实施例中,指令可以指出给定值为源操作数,指出PSI存储位置作为目的地操作数。可以显式地指定(例如,通过一个或多个字段)或通过指令以别的方式指出(例如,隐式地指出)给定值和PSI存储位置中的每一个。源操作数可以标识通用寄存器、存储器位置、其他存储位置,可以是立即数。在某些实施例中,可在处理器、或者其一部分(例如,指令解码器、指令队列等)处接收该指令。
在框432,可以解码指令。例如,指令可以表示相对较高级别的计算机指令或宏指令,它们可以由指令解码器解码为一个或多个较低级别的微操作、微代码入口点、微指令,或其他相对较低级别的指令或控制信号。可另选地,并非解码,可以模仿、转换、变形、解释,或以别的方式转换,或其组合(例如,模仿和解码)指令。
在框433,可以判断由指令指出的给定值是否匹配或等于(可任选地配置的数量的)PSI黑名单值中的任何一个。这可包括将给定值与可任选地配置的数量的PSI黑名单值中的每一个进行比较。允许PSI黑名单值的数量可被配置是可选的,而不是必需的。
假设配置了至少一个PSI黑名单值,如果判断给定值匹配或等于配置的PSI黑名单值中的任何一个(即,在框433,判断是“是”),那么,这可以导致诱捕到VMM和/或VM退出。如上文所提及的,VMM可以基于其配置的策略或规则,判断是否允许企图的修改。例如,如果VMM感觉到正在企图的进程是不能信赖的或怀疑非法或不希望的行为,那么,VMM可以阻止企图的修改,且在某些情况下,可优雅地删除进程。
相反,如果判断由指令指出的给定值不匹配或等于配置的PSI黑名单值中的任何一个(即,在框433,判断是“否”),那么,在框435,由指令指出的给定值可以被写入到或存储在PSI存储位置,而不会诱捕到VMM。在某些实施例中,如果当前配置了零个PSI黑名单值和/或如果可任选地关闭PSI黑名单实施机制,那么,由指令指出的给定值还可以被写入到或存储在PSI存储位置。存储到PSI存储位置可以通过写入、加载、移动,或其他类型的存储操作来实现。在需要时,这样的存储操作还可以可任选地与已知的由指令执行的其他类型的操作组合。
图5是虚拟机设备500的详细示例实施例的框图。在某些实施例中,图5的虚拟机设备可以在图1-2的虚拟机设备内实现。在这样的实施例中,上文对于图1-2所描述的特征和选项中的任何一个都可以可任选地和图5的虚拟机设备一起使用。可另选地,图5的虚拟机设备可以被包括在与如图1-2所示的虚拟机设备类似的或完全不同的虚拟机设备内。此外,图5的虚拟机设备可执行与图3-4的操作或方法,或或相似、或者完全不同的方法。
虚拟机设备500包括虚拟机(VM)501。在某些实施例中,VM可能企图执行MOV到CR3指令(或其他移动到控制寄存器指令或存储在控制寄存器中指令),以企图将一个值存储在由指令指出的CR3控制寄存器508中,由指令的源操作数所指定的通用寄存器中。在某些实施例中,每一个进程或任务(例如,每一个操作系统任务)都可以具有不同的对应的唯一CR3和/或引用其对应的单独的虚拟地址空间页面表的页面目录基值。当有进程或任务切换时,VM的操作系统可能企图将不同的页面目录基值存储在CR3寄存器中。CR3控制寄存器是处理器506的一组控制寄存器507中的一个。CR3控制寄存器表示分页结构标识(PSI)存储位置的示例实施例和/或页面目录基址寄存器(PDBR)的示例实施例。可另选地,可以使用其他PSI存储位置、PDBR和/或指令。
在某些实施例中,CR3加载退出控制544可以可任选地被包括,以允许CR3加载退出逻辑540的用户可配置的激活和/或去激活,虽然这不是必需的(例如,可以静态地激活它)。在某些实施例中,CR3加载退出控制可以是单个比特,虽然这不是必需的。CR3加载退出控制可以具有第一值(例如,二进制1)以激活或启用CR3加载退出逻辑,或第二值(例如,二进制零)以去激活或禁用CR3加载退出逻辑。当激活时,CR3加载退出逻辑可操作以监测,并当合适时,阻止MOV到CR3指令将非法值存储在CR3寄存器中(即,阻止对CR3寄存器的非法修改)。如图所示,在某些实施例中,CR3加载退出控制可以被包括在一组虚拟机控制结构(VMCS)510的主要虚拟机执行控制结构(PVMXCS)542中,虽然这不是必需的(例如,它可以被包括在别处,诸如在处理器的控制寄存器内)。作为示例,CR3加载退出比特可以表示PVMXCS中的比特15。
CR3加载退出逻辑可以与一组一个或多个CR3黑名单和/或白名单值517耦合或进行通信。如图示所示,CR3黑名单/白名单值组可包括第一CR3黑名单/白名单值517-1到第N CR3黑名单/白名单值517-N,其中,N可以具有类似于在别处所描述的那些值的值。如图所示,在某些实施例中,CR3黑名单/白名单值可以被存储在PVMXCS中,虽然这不是必需的。在某些实施例中,CR3黑名单/白名单值可以表示CR3目标值。在各实施例中,CR3黑名单/白名单值中的每一个都可以具有32比特、64比特,或某种其他比特数(例如,16比特、128比特,等等)。在某些实施例中,若干个(例如,CR3目标计数)的当前配置的CR3黑名单/白名单值518还可以可任选地存储在PVMXCS中,虽然这不是必需的。
CR3加载退出逻辑540包括CR3黑名单实施逻辑516的实施例,并可任选地,包括CR3白名单实施逻辑541。在示图中,黑名单和白名单实施逻辑被示为单独的,虽然,在另一个实施例中,集成的黑名单和白名单实施逻辑可交替地包括黑名单和白名单能力。控件545(例如,一个或多个比特)的实施例可以可任选地被包括,以允许用户配置或控制CR3黑名单/白名单值517的组是否将被解释为黑名单或白名单值。可另选地,如果白名单解释不受支持,那么,可以可任选地省略如前所述的控件(例如,处理器可以隐式地理解使用黑名单解释)。在一个特定实施例中,控件545可以是单个比特。控件545可以具有第一配置或值(例如,根据一个可能的约定,二进制1),以导致CR3黑名单实施逻辑516将CR3黑名单/白名单值517的组解释为黑名单值,或第二配置或值(例如,根据一个可能的约定,二进制零),以导致CR3白名单实施逻辑541将CR3黑名单/白名单值517的组解释为白名单值。在某些实施例中,控件545可以被包括在VMCS 510的组的辅助虚拟机执行控制结构(SVMXCS)543中,虽然这不是必需的(例如,它可以被包括在别处,诸如在PVMXCS 542内,或在处理器的控制寄存器内)。
如果控件545被配置成导致对CR3黑名单/白名单值517的组的黑名单解释,那么,CR3黑名单实施逻辑516可以接收VM的执行MOV到CR3指令的企图的指示。CR3黑名单实施逻辑可操作,以判断是否诱捕到VMM和/或导致VM退出。如图所示,在某些实施例中,如果由MOV到CR3指令的源操作数指出的值不等于或匹配可任选地配置的数量的CR3黑名单/白名单值的组中的任何一个,则可以允许由MOV到CR3指令企图的对CR3寄存器的修改,而不诱捕到VMM。如果CR3黑名单值的可选配置的数量被指定为N,那么,可以只考虑最开始的N个CR3黑名单值。如果CR3黑名单值的可选数量被指定为N等于零(即,没有配置的黑名单值),那么,允许修改CR3寄存器的企图,不管要被存储在CR3寄存器中的值是什么。相反,如果由MOV到CR3指令的源操作数指出的值等于或匹配CR3黑名单/白名单值的组中的任何一个,则可以将由MOV到CR3指令企图的对CR3寄存器的修改诱捕到VMM,和/或可以执行VM退出。然后,VMM可以判断是否允许或阻止企图的修改。
可另选地,如果控件545被配置成导致对CR3黑名单/白名单值517的组的白名单解释,那么,CR3白名单实施逻辑541可以接收由VM执行MOV到CR3指令的企图的指示。
如图所示,在某些实施例中,如果由MOV到CR3指令的源操作数指出的值不等于或匹配CR3白名单值的组中的任何一个,则可以将由MOV到CR3指令企图的对CR3寄存器的修改诱捕到VMM,和/或可以执行VM退出。如果CR3白名单值的可选配置的数量被指定为N,那么,可以只考虑最开始的N个CR3白名单值。如果CR3白名单值的可选数量被指定为N等于零(即,没有配置的白名单值),那么,可以将修改CR3寄存器的企图诱捕到VMM,和/或可以执行VM退出,不管要被存储在CR3寄存器中的值是什么。在某些实施例中,在诱捕到VMM和/或VM退出之后,VMM可以判断不允许对CR3寄存器的企图的修改,并可以阻止企图的修改。相反,如果由MOV到CR3指令的源操作数指出的值等于或匹配CR3黑名单/白名单值的组中的任何一个,则可以允许由MOV到CR3指令企图的对CR3寄存器的修改,而没有诱捕到VMM或VM退出。如前所述,如果可选的配置的数量的CR3白名单值被指定为N,那么,可以只考虑最开始的N个CR3白名单值。
这只是合适的虚拟机设备的一个详细示例实施例。也可以构想对这些实施例的许多额外的变体。例如,其他实施例可以以不同的方式(例如,在一个或多个VMCS之间和/或在处理器的控制寄存器中,以不同的方式)存储CR3加载退出控件,CR3黑名单/白名单值的组,若干个CR3黑名单/白名单值,启用黑名单/白名单解释控件,或其任何组合。作为另一个示例,其他实施例可以使用不同类型的指令来修改PSI存储位置。
图6是配置虚拟机设备的方法650的实施例的流程框图。在一些实施例中,图6的操作和/或方法可由图1、2或5的虚拟机设备中的任何一个执行或在其内执行。在这样的实施例中,上文对于图1,2,或5所描述的特征和选项中的任何一个可以可任选地和图6的方法一起使用,和/或上文对于图6的方法所描述的特征和选项中的任何一个可以可任选地和图1,2或5的虚拟机设备一起使用。替换地,图6的操作和/或方法可由类似的或完全不同的虚拟机设备执行,和/或在类似的或完全不同的虚拟机设备内执行。此外,图1,2,或5的虚拟机设备可以执行与图6的操作和/或方法相同、类似或者完全不同的操作和/或方法。
参考图示,在框651,虚拟机设备可以被配置成使用分页结构指示(PSI)存储位置修改监测机制。例如,在一个特定实施例中,主要虚拟机执行控制结构(PVMXCS)的CR3负载退出控制比特可以被设置为二进制1。在框652,PSI存储位置修改监测机制可以被配置成使用一组PSI值的黑名单解释。例如,在一个特定实施例中,单一比特控件可以被设置或以别的方式被配置成预定值,以允许黑名单解释。在框653,可以指定PSI黑名单值的配置的数量。例如,在一个特定实施例中,可以将CR3目标计数指定为数字N。在框654,可以指定配置的数量的PSI黑名单值中的每一个。例如,在一个特定实施例中,可以指定最开始的N个CR3目标计数值。
这只是配置虚拟机设备的合适的方法的一个示例实施例。所描述的方法的许多变体也是可以构想的。例如,替换实施例可以可任选地以与所示出的不同的顺序执行操作、可以重叠某些操作,可以组合某些操作等等。作为另一个示例,替换实施例可以省略某些操作,诸如,省略框651,652,或653处的操作中的任何一个或多个。
图7是CR3控制寄存器708的一实施例的框图。CR3控制寄存器表示合适的PSI存储位置和/或PDBR的一个示例实施例。在32比特模式下,CR3寄存器可以是32比特。在64比特模式下,CR3寄存器可以被扩展为64比特。CR3寄存器可以被用来存储分页结构层次结构的基址的物理地址。32比特模式下的比特31:12,或64比特模式下的比特63:12,可以存储页面目录基值。可以只指定基本地址的最高有效位,减去较低的12比特。可以假定地址的较低的12比特是零。如此,第一分页结构可以被校准到页面(例如,4千字节)边界。当使用物理地址扩展时,CR3寄存器可包括页面目录指针表的基本地址。在一种模式下(例如,IA-32e模式),CR3寄存器可包括页面映射级别4(PML4)表的基本地址。PML4表中的条目包含页面目录指针表的基址的物理地址、访问权限,以及存储器管理信息。PML4的基址物理地址存储在CR3中。CR3寄存器可以被用来将控制分页结构的缓存的两个标志存储在处理器的内部数据缓存中。CR3的比特4是可以一页一页地控制缓存的页面级别的缓存禁用(PCD)标志或比特。CR3的比特3是可以一页一页地控制写通/写回缓存策略的页面级别的写通(PWT)标志或比特。MOV到CR3指令可以被用来操纵CR3寄存器的内容。
本文其它位置所公开的对一组PSI值的黑名单解释可能倾向于提供对于某些用途的某些优点。一方面,它可以允许一组PSI值被预留或阻止一个或多个虚拟机使用。其次,它可能倾向于在一定条件下提供相对于白名单解释的改善的性能。通常,根据白名单解释,VMM软件可以向白名单值的组添加某些进程PSI、PDBR,或CR3值,以便帮助改善性能。例如,可以向CR3目标值VMCS字段添加Windows OS中的系统进程,PID=4,以便通过避免VM退出来帮助改善性能。然而,VMM可能需要监测对PSI存储位置、PDBR或CR3控制寄存器的全部企图的修改,即使只有一个特定进程感兴趣。此外,在某些实现中,将全部无害的PSI、PDBR,或CR3值(即,用于不感兴趣的进程)包括在白名单(例如,向CR3目标值VMCS字段)中是困难的或昂贵的,特别是当几十个到几百个这样的进程正在运行时。结果,根据白名单解释,利用不是白名单的值来修改PSI存储位置、PDBR,或CR3控制寄存器的企图可能倾向于频繁地发生,结果,可能倾向于有频繁的或很多VM退出。这可能倾向于显著降低性能。一般而言,利用未包括在白名单内的PSI、PDBR,或CR3值运行的进程越多,性能下降可能倾向于越大。
然而,在对PSI、PDBR,或CR3值的黑名单解释的情况下,可以降低性能下降。只有将PSI存储位置、PDBR或CR3控制寄存器修改到匹配黑名单值的组中的一个的值的企图才会导致VM退出。可以基于正在被监测的一个或多个进程,在运行时更新黑名单值的组。这可能倾向于允许VMM软件能够通过显著降低VM退出的数量,更有效率地运行。在某些实施例中,这可以与来宾进程特定的资源保护一起使用和/或扩展来宾进程特定的资源保护。例如,它可以由受信任的存储器服务层(TMSL)(这是用于McAfee DeepSafe Technology中的轻量基于VMM的保护引擎)使用,以应用对关键资源的进程特定的保护。例如,当调度进程时,可以触发对PSI存储位置、PDBR,或CR3控制寄存器的企图的修改。然后,TMSL可以通过切换到具有合适的权限的指定的扩展的页面表视图,建立隔离的存储器沙箱。
为了避免混淆本描述,已示出和描述了相对简单的处理器和虚拟机设备。在其他实施例中,处理器和虚拟机设备可可选地包括其他公知组件。在其他实施例中,处理器可包括指令提取单元、指令调度单元、分支预测单元、指令和数据的高速缓存、指令和数据的翻译后备缓冲器(translation lookaside buffer)、预提取缓冲器、微指令队列、微指令定序器、总线接口单元、第二或更高级高速缓存、引退单元(retirement unit)、寄存器重命名单元、处理器中所包括的其他组件、以及上述的各种组合。实施例可具有多个核、逻辑处理器或执行引擎。实际上在处理器中存在组件的多种不同的组合和配置,并且各实施例不限于任何特定组合或配置。处理器可以表示集成电路或者一个或多个半导体管芯或芯片的集合(例如,单个管芯或芯片、或合并两个或更多个管芯或芯片的封装)。在某些实施例中,处理器可以表示片上系统(SOC)。
示例性核架构、处理器和计算机架构
可在不同的处理器中,出于不同的目的,以不同的方式来实现处理器核。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。此类不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核框图
图8A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图8B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图8A-B中的实线框示出有序流水线和有序核,而可选增加的虚线框示出寄存器重命名的、无序发布/执行流水线和核。
考虑到有序方面是无序方面的子集,将描述无序方面。
在图8A中,处理器流水线800包括取出级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、写回/存储器写入级818、异常处理级822和提交级824。
图8B示出了包括耦合到执行引擎单元850的前端单元830的处理器核890,且执行引擎单元和前端单元两者都耦合到存储器单元870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核890可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、或图形核等等。
前端单元830包括耦合到指令高速缓存单元834的分支预测单元832,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)836,该指令转换后备缓冲器耦合到指令取出单元838,该指令取出单元耦合到解码单元840。解码单元840(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元840可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包括(例如,在解码单元840中或否则在前端单元830内的)微代码ROM或存储某些宏指令的微代码的其他介质。解码单元840耦合至执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括重命名/分配器单元852,该重命名/分配器单元耦合至引退单元854和一个或多个调度器单元856的集合。调度器单元856表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元856耦合到物理寄存器组单元858。每个物理寄存器组单元858表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元858包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元858被引退单元854覆盖,以示出可实现寄存器重命名和无序执行的多种方式(例如,使用重排序缓冲器和引退寄存器组;使用未来文件(futurefile)、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等)。引退单元854和物理寄存器组单元858耦合到执行群集860。执行群集860包括一个或多个执行单元862的集合和一个或多个存储器访问单元864的集合。执行单元862可对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可包括专用于特定功能或功能集的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元856、物理寄存器组单元858、执行群集860被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,以及在单独的存储器访问流水线的情况下特定实施例被实现为仅仅该流水线的执行群集具有存储器访问单元864)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,并且其余流水线可以是有序的。
存储器访问单元864的集合耦合至存储器单元870,该存储器单元包括数据TLB单元872,该数据TLB单元耦合至高速缓存单元874,该高速缓存单元耦合至第二级(L2)高速缓存单元876。在一个示例性实施例中,存储器访问单元864可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元870中的数据TLB单元872。指令高速缓存单元834还耦合到存储器单元870中的二级(L2)高速缓存单元876。L2高速缓存单元876耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构按如下方式实现流水线800:1)指令取出器838执行取出和长度解码级802和804;2)解码单元840执行解码级806;3)重命名/分配器单元852执行分配级808和重命名级810;4)调度器单元856执行调度级812;5)物理寄存器组单元858和存储器单元870执行寄存器读取/存储器读取级814;执行群集860实现执行级816;6)存储器单元870和物理寄存器组单元858执行写回/存储器写入级818;7)多个单元可被牵涉在异常处理级822中;以及8)引退单元854和物理寄存器组单元858执行提交级824。
核890可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核890包括用于支持紧缩数据指令集扩展(例如SSE、AVX1、AVX2等等)的逻辑,由此允许许多多媒体应用所使用的操作利用紧缩数据来执行。
应当理解,核可支持多线程化(执行两个或更多并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,包括,时分多线程化、同步多线程化(其中单个物理核为物理核正在同步进行多线程化的多个线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术进行的同步多线程化)。
尽管在无序执行的上情境中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元834/874以及共享L2高速缓存单元876,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图9A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图9A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络902的连接及其二级(L2)高速缓存的本地子集904的框图。在一个实施例中,指令解码器900支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存906允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元908和向量单元910使用分开的寄存器集合(分别为标量寄存器912和向量寄存器914),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存906读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集904是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存904的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集904中,并且可以与其它处理器核访问其自己的本地L2高速缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的L2高速缓存子集904中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图9B是根据本发明的各实施例的图9A中的处理器核的一部分的展开图。图9B包括L1高速缓存904的L1数据高速缓存906A部分,以及关于向量单元910和向量寄存器914的更多细节。具体地说,向量单元910是16宽向量处理单元(VPU)(见16宽ALU 928),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元920支持对寄存器输入的混合、通过数值转换单元922A-B支持数值转换、并通过复制单元924支持对存储器输入的复制。写掩码寄存器926允许断言所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图10是根据本发明的多个实施例可能具有多余一个的核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器1000的框图。图10的实线框示出了处理器1000,处理器1000具有单个核1002A、系统代理1010、一个或多个总线控制器单元1016的集合,而可选附加的虚线框示出了替换处理器1000,其具有多个核1002A-N、系统代理单元1010中的一个或多个集成存储器控制器单元1014的集合以及专用逻辑1008。
因此,处理器1000的不同实现可包括:1)CPU,其中专用逻辑1008是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1,002A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核1,002A-N是旨在主要用于图形和/或科学(吞吐量)的大量的专用核;以及3)协处理器,其中核1,002A-N是大量的通用有序核。因此,处理器1000可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1000可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将该处理器实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元1006的集合、以及耦合至集成存储器控制器单元1014的集合的外部存储器(未示出)。该共享高速缓存单元1006的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元1012将集成图形逻辑1008、共享高速缓存单元1006的集合以及系统代理单元1010/集成存储器控制器单元1014互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元1006和核1002A-N之间的一致性(coherency)。
在一些实施例中,一个或多个核1,002A-N能够实现多线程。
系统代理1010包括协调和操作核1,002A-N的那些组件。系统代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调整核1,002A-N和集成图形逻辑1008的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1,002A-N在架构指令集方面可以是同构的或异构的;即,这些核1,002A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图11-14是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其他执行逻辑的多种系统和电子设备通常是合适的。
现在参考图11,所示出的是根据本发明一实施例的系统1100的框图。系统1100可以包括一个或多个处理器1110、1115,这些处理器耦合到控制器中枢1120。在一个实施例中,控制器中枢1120包括图形存储器控制器中枢(GMCH)1190和输入/输出中枢(IOH)1150(其可以在分开的芯片上);GMCH 1190包括存储器和图形控制器,存储器1140和协处理器1145耦合到该存储器和图形控制器;IOH 1150将输入/输出(I/O)设备1160耦合到GMCH1190。替换地,存储器和图形控制器中的一个或两个集成到处理器(如本文中所描述的)中,存储器1140和协处理器1145直接耦合到处理器1110、以及在单个芯片中具有IOH 1150的控制器中枢1120。
附加的处理器1115的可选性质在图11中通过虚线来表示。每一处理器1110、1115可包括本文中描述的处理核中的一个或多个,并且可以是处理器1000的某一版本。
存储器1140可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1120经由诸如前侧总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接与处理器1110、1115进行通信。
在一个实施例中,协处理器1145是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1120可以包括集成图形加速器。
按照包括架构、微架构、热、功耗特征等等优点的度量谱,物理资源1110、1115之间存在各种差别。
在一个实施例中,处理器1110执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1110将这些协处理器指令识别为应当由附连的协处理器1145执行的类型。因此,处理器1110在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1145。协处理器1145接受并执行所接收的协处理器指令。
现在参照图12,所示出的是根据本发明一个实施例的更具体的第一示例性系统1200的框图。如图12所示,多处理器系统1200是点对点互连系统,且包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个都可以是处理器1000的某一版本。在本发明的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一实施例中,处理器1270和1280分别是处理器1110和协处理器1145。
处理器1270和1280被示出为分别包括集成存储器控制器(IMC)单元1272和1282。处理器1270还包括作为其总线控制器单元的一部分的点对点(P-P)接口1276和1278;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可以经由使用点对点(P-P)接口电路1278、1288的P-P接口1250来交换信息。如图12所示,IMC 1272和1282将处理器耦合到相应的存储器(即存储器1232和存储器1234),这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1270、1280可各自经由使用点对点接口电路1276、1294、1286、1298的各个P-P接口1252、1254与芯片组1290交换信息。芯片组1290可以可选地经由高性能接口1239与协处理器1238交换信息。在一个实施例中,协处理器1238是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组1290可经由接口1296耦合至第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图12所示,各种I/O设备1214可连同总线桥1218一起耦合到第一总线1216,总线桥1218将第一总线1216耦合到第二总线1220。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器的一个或多个附加处理器1215耦合到第一总线1216。在一个实施例中,第二总线1220可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1220,在一个实施例中这些设备包括例如键盘和/或鼠标1222、通信设备1227以及诸如可包括指令/代码和数据1230的盘驱动器或其他大容量存储设备的存储单元1218。此外,音频I/O 1224可以被耦合至第二总线1220。注意,其他架构是可能的。例如,代替图12的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参照图13,所示出的是根据本发明实施例的更具体的第二示例性系统1300的框图。图12和13中的相同元件使用相同附图标记,且在图13中省略了图12的某些方面以避免混淆图13的其它方面。
图13示出处理器1270、1280可分别包括集成存储器和I/O控制逻辑(”CL”)1272和1282。因此,CL 1272、1282包括集成存储器控制器单元并包括I/O控制逻辑。图13示出不仅存储器1232、1234耦合至CL 1272、1282,而且I/O设备1314也耦合至控制逻辑1272、1282。传统I/O设备1315被耦合至芯片组1290。
现在参照图14,所示出的是根据本发明一个实施例的SoC 1400的框图。与图10中相似的部件具有同样的附图标记。
另外,虚线框是更先进的SoC上的可选特征。在图14中,互连单元1402被耦合至:应用处理器1410,该应用处理器包括一个或多个核202A-N的集合以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个协处理器1420,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1430;直接存储器存取(DMA)单元1432;以及用于耦合至一个或多个外部显示器的显示单元1440。在一个实施例中,协处理器1420包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的多个实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的多个实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图12中示出的代码1230)应用于输入指令,以执行本文描述的多个功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。可将被称为“IP核”的此类表示存储在有形的机器可读介质上,并将其提供给各种客户或生产设施,以便将此类表示加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的多个实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。也可将此类实施例称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式将指令转换成将由核来处理的一条或多条其他指令。指令转换器可在软件、硬件、固件、或其组合中实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图15是根据本发明的多个实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但替代地,可在软件、固件、硬件或其各种组合中实现该指令转换器。图15示出可使用x86编译器1504来编译利用高级语言1502的程序,以生成可由具有至少一个x86指令集核的处理器1516原生执行的x86二进制代码1506。具有至少一个x86指令集核的处理器1516表示能够通过兼容地执行或以其他方式处理下列各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1504表示可用于生成x86二进制代码1506(例如目标代码)的编译器,该x86二进制代码能够通过附加的链接处理或无需附加的链接处理而在具有至少一个x86指令集核的处理器1516上被执行。类似地,图15示出可以使用替代的指令集编译器1508来编译利用高级语言1502的程序,以生成可以由不具有至少一个x86指令集核的处理器1514(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码1510。该指令转换器1512被用于将x86二进制代码1506转换为可由不具有x86指令集核的处理器1514原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1510相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1512通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1506的软件、固件、硬件或其组合。
在说明书和权利要求书中,可能使用了术语“逻辑”。如本文中所使用的,术语“逻辑”可包括,但不限于,硬件、固件、软件或者其各种组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、包括指令的存储器设备等。在某些实施例中,硬件设备可包括晶体管和/或门控,并潜在地包括其他电路组件。
在说明书和权利要求书中,可能使用了术语“耦合的”和“连接的”及其衍生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在具体实施例中,“连接的”用于指示两个或更多个要素彼此直接物理或电接触。“耦合的”可表示两个或更多个元件直接物理或电接触。然而,“耦合的”也可表示两个或更多个元件并未彼此直接接触,但是仍然彼此协作、彼此相互作用。
术语“和/或”可能已被使用。如本文中所使用的,术语“和/或”意指一个或其他或两者(例如,A和/或B意指A或B或者A和B两者)。
在以上描述中,为解释起见,阐明了众多具体细节以提供对本发明的实施例的透彻理解。然而,将对本领域技术人员明显的是,没有这些具体细节中的一些也可实践一个或多个其他实施例。所描述的具体实施例不是为了限制本发明而是为了说明本发明。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。在附图中显示且在说明书中描述的关系的所有等效关系都被涵盖在本发明的实施例内。在其它实例中,以方框图形式而非以细节地示出了公知的电路、结构、设备和操作以避免使说明书的理解变得晦涩。
在认为适宜之处,附图标记的结尾部分在诸附图当中被重复以指示可选地具有类似特性或相同特征的对应或类似的要素,除非以其他方式来指定或显而易见。在示出和描述了多个组件的一些情况下,它们可被结合到单一组件中。在示出和描述了单一组件的其他情况下,它可被分割成两个或更多个组件。在附图中,箭头表示耦合,双向箭头表示双向耦合。
已描述了各种操作和方法。已经以流程图方式以相对基础的方式对一些方法进行了描述,但这些操作可选择地被添加至这些方法和/或从这些方法中移去。另外,尽管流程图示出根据示例性实施例的操作的特定顺序,但要理解该特定顺序是示例性的。替代实施例可选择地以不同顺序执行操作、合并某些操作、重叠某些操作,等等。可对这些方法作出和构想出许多修正和调整。
某些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。该介质可包括以机器可读的形式提供(例如,存储)信息的机制。机器可读介质可提供或者已存储有一个或多个指令或指令序列,这些指令如果被机器执行,用于引起该机器执行和/或导致该机器执行本文中公开的一个或多个操作、方法或技术。在某些实施例中,机器可读介质可包括有形的、非短暂的机器可读存储介质。例如,有形的、非短暂的机器可读存储介质可包括软盘、光存储介质、光盘、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器或它们的组合。有形的介质可包括一种或多种固体或有形的物理材料,诸如,例如,半导体材料、相变材料、磁性材料等等。合适的机器的示例包括,但不限于,计算机系统、台式机、膝上型计算机、笔记本电脑、上网本、迷你桌上型设备、移动网络设备(MID)、服务器、网络元件(例如,路由器、交换机等等)、蜂窝电话、媒体播放器、迷你桌上型设备、机顶盒、视频游戏控制器、及其他具有一个或多个处理器的电子设备。
还应当理解,贯穿说明书全文的对“一个实施例”、“一实施例”或“一个或多个实施例”的引用例如表示特定特征可包含在本发明实施例的实践中。类似地,应当理解,在本说明书中,为了使本公开变得流畅并帮助理解各个创新性方面,各个特征有时被一起编组在单个实施例、附图或其描述中。然而,该公开方法不应被解释成反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如随附的权利要求反映的,各创新性方面可体现于比单个所公开的实施例的全部特征更少的特征。因此,所附权利要求因此被明确纳入该说明书中,每一项权利要求独自作为本发明单独的实施例。
Claims (22)
1.一种方法,包括:
接收由虚拟机将分页结构标识存储位置修改为具有给定值的企图的指示;
判断所述给定值匹配一组一个或多个黑名单值中的至少一个;以及
将由所述虚拟机将所述分页结构标识存储位置修改为具有所述给定值的企图诱捕到虚拟机监视器。
2.如权利要求1所述的方法,进一步包括配置控件以具有允许对于所述黑名单值的组的黑名单解释的第一配置,其中所述控件也能够具有允许所述值的组的白名单解释的第二配置。
3.如权利要求2所述的方法,其特征在于,配置所述控件以具有所述第一配置包括将虚拟机控制结构中的单一比特设置为二进制1。
4.如权利要求1所述的方法,其特征在于,接收包括接收由所述虚拟机将页面目录基址寄存器修改为具有所述给定值的所述企图的所述指示。
5.如权利要求1所述的方法,其特征在于,接收包括接收所述虚拟机的执行移动到控制寄存器指令,以将由所述指令的源操作数指出的所述给定值存储在所述分页结构标识存储位置的所述企图的所述指示,所述分页结构标识存储位置是被指出为所述指令的目的地操作数的处理器的控制寄存器。
6.如权利要求1所述的方法,进一步包括所述虚拟机监视器阻止所述虚拟机将所述分页结构标识存储位置修改为具有所述给定值的所述企图。
7.如权利要求1所述的方法,进一步包括:
访问配置的数量的所述黑名单值的所述组;以及
将所述给定值只与所述配置的数量的所述黑名单值的所述组进行比较。
8.如权利要求1所述的方法,其特征在于,进一步包括:
接收第二虚拟机将所述分页结构标识存储位置修改为具有第二给定值的第二企图的第二指示;
判断所述第二给定值不匹配所述黑名单值的所述组中的任何一个;以及
允许所述第二虚拟机将所述分页结构标识存储位置修改为具有所述第二给定值的所述企图,而不诱捕到所述虚拟机监视器。
9.一种设备,包括:
分页结构标识存储位置;以及
与所述分页结构标识存储位置耦合的黑名单实施逻辑,所述黑名单实施逻辑接收虚拟机将所述分页结构标识存储位置修改为具有给定值的企图的指示,并当所述给定值匹配一组一个或多个黑名单值中的至少一个时,导致所述企图被诱捕到虚拟机监视器。
10.如权利要求9所述的设备,其特征在于,所述黑名单实施逻辑将判断控件具有允许对于所述黑名单值的组的黑名单解释的第一配置,其中所述控件也能够具有允许所述值的组的白名单解释的第二配置。
11.如权利要求10所述的设备,进一步包括白名单实施逻辑,用于当所述控件具有所述第二配置时,将所述值的所述组解释为白名单值。
12.如权利要求9所述的设备,其特征在于,所述分页结构标识存储位置包括处理器的页面目录基址寄存器。
13.如权利要求9所述的设备,其特征在于,所述黑名单实施逻辑将接收所述虚拟机执行移动到控制寄存器指令,以将由所述指令的源操作数指出的所述给定值存储在所述分页结构标识存储位置的所述企图的所述指示,所述分页结构标识存储位置是被指出为所述指令的目的地操作数的处理器的控制寄存器。
14.如权利要求9所述的设备,其特征在于,当所述给定值匹配一组一个或多个黑名单值中的至少一个时,所述黑名单实施逻辑将导致虚拟机退出。
15.如权利要求9所述的设备,其特征在于,所述黑名单实施逻辑将访问配置的数量的所述黑名单值的所述组,并将所述给定值只与所述配置的数量的所述黑名单值的所述组进行比较。
16.如权利要求9所述的设备,其特征在于,所述黑名单实施逻辑将接收第二虚拟机将所述分页结构标识存储位置修改为具有第二给定值的第二企图的第二指示,并且当所述第二给定值不匹配所述黑名单值的所述组中的任何一个时,允许所述第二企图,而不会导致诱捕到所述虚拟机监视器。
17.一种系统,包括:
处理器,所述处理器具有分页结构标识存储位置;以及
与所述处理器耦合的存储器,所述存储器存储一个或多个虚拟机控制结构,所述一个或多个虚拟机控制结构存储:
一组一个或多个黑名单值;以及
控件,当所述给定值匹配所述黑名单值的所述组中的至少一个时,所述控件导致所述处理器将虚拟机将所述分页结构标识存储位置修改为具有给定值的企图诱捕到虚拟机监视器。
18.如权利要求17所述的系统,其特征在于,所述控件也能够具有允许对于所述值的组的白名单解释的配置。
19.如权利要求17所述的系统,其特征在于,所述一个或多个黑名单值的所述组处于主要虚拟机执行控制结构中,其中所述控件处于辅助虚拟机执行控制结构中。
20.一种方法,包括:
接收指令,所述指令将给定值指定为源操作数,将分页结构标识存储位置指定为目的地操作数;
判断所述给定值是否匹配一组一个或多个黑名单值中的任何一个;以及
如果所述给定值不匹配所述黑名单值的所述组中的任何一个,将所述给定值存储在所述分页结构标识存储位置;或
如果所述给定值匹配所述黑名单值的所述组中的至少一个,则不将所述给定值存储在所述分页结构标识存储位置。
21.如权利要求20所述的方法,进一步包括配置一个控件以具有允许对于所述黑名单值的组的黑名单解释的第一配置,其中所述控件也能够具有允许所述值的组的白名单解释的第二配置。
22.如权利要求20所述的方法,其特征在于,接收包括从虚拟机接收移动到控制寄存器指令,所述移动到控制寄存器指令指出处理器的页面目录基址寄存器,作为其源操作数,并进一步包括如果所述给定值匹配所述黑名单值的所述组中的至少一个,则将控制从所述虚拟机转移到虚拟机监视器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/730,798 | 2012-12-28 | ||
US13/730,798 US9223602B2 (en) | 2012-12-28 | 2012-12-28 | Processors, methods, and systems to enforce blacklisted paging structure indication values |
PCT/US2013/047910 WO2014105185A1 (en) | 2012-12-28 | 2013-06-26 | Processors, methods, and systems to enforce blacklisted paging structure indication values |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104969199A true CN104969199A (zh) | 2015-10-07 |
CN104969199B CN104969199B (zh) | 2018-04-10 |
Family
ID=51018902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380062295.9A Expired - Fee Related CN104969199B (zh) | 2012-12-28 | 2013-06-26 | 实施黑名单分页结构指示值的处理器、方法,以及系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9223602B2 (zh) |
CN (1) | CN104969199B (zh) |
WO (1) | WO2014105185A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114143083A (zh) * | 2021-11-30 | 2022-03-04 | 北京天融信网络安全技术有限公司 | 黑名单策略匹配方法、装置、电子设备及存储介质 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223602B2 (en) | 2012-12-28 | 2015-12-29 | Intel Corporation | Processors, methods, and systems to enforce blacklisted paging structure indication values |
US20150278512A1 (en) * | 2014-03-28 | 2015-10-01 | Intel Corporation | Virtualization based intra-block workload isolation |
US9760712B2 (en) * | 2014-05-23 | 2017-09-12 | Vmware, Inc. | Application whitelisting using user identification |
US10228969B1 (en) | 2015-06-25 | 2019-03-12 | Amazon Technologies, Inc. | Optimistic locking in virtual machine instance migration |
US10970110B1 (en) * | 2015-06-25 | 2021-04-06 | Amazon Technologies, Inc. | Managed orchestration of virtual machine instance migration |
US11442760B2 (en) | 2016-07-01 | 2022-09-13 | Intel Corporation | Aperture access processors, methods, systems, and instructions |
US10536391B1 (en) | 2016-07-07 | 2020-01-14 | Binaris Inc | Systems and methods for intelligently directing a service request to a preferred place of execution |
US10621001B1 (en) | 2017-07-06 | 2020-04-14 | Binaris Inc | Systems and methods for efficiently expediting execution of tasks in isolated environments |
US10417043B1 (en) | 2017-07-06 | 2019-09-17 | Binaris Inc | Systems and methods for executing tasks adaptively |
US11157609B1 (en) * | 2019-05-09 | 2021-10-26 | Juniper Networks, Inc | Apparatus, system, and method for secure execution of unsigned scripts |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7640543B2 (en) * | 2004-06-30 | 2009-12-29 | Intel Corporation | Memory isolation and virtualization among virtual machines |
US20100306766A1 (en) * | 2009-05-28 | 2010-12-02 | James Paul Schneider | Adding aspects to virtual machine monitors |
CN101952807A (zh) * | 2008-02-25 | 2011-01-19 | 国际商业机器公司 | 管理计算环境的多个可分页客户端对存储装置的使用 |
US8015562B2 (en) * | 2004-12-03 | 2011-09-06 | Stmicroelectronics S.R.L. | Process for managing virtual machines in a physical processing machine, corresponding processor system and computer program product therefor |
US20110219447A1 (en) * | 2010-03-08 | 2011-09-08 | Vmware, Inc. | Identification of Unauthorized Code Running in an Operating System's Kernel |
US8245227B2 (en) * | 2008-05-30 | 2012-08-14 | Vmware, Inc. | Virtual machine execution using virtualization software with shadow page tables and address space interspersed among guest operating system address space |
US20120226903A1 (en) * | 2005-06-30 | 2012-09-06 | David Durham | Secure platform voucher service for software components within an execution environment |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7127548B2 (en) * | 2002-04-16 | 2006-10-24 | Intel Corporation | Control register access virtualization performance improvement in the virtual-machine architecture |
US7124327B2 (en) * | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
US7073042B2 (en) * | 2002-12-12 | 2006-07-04 | Intel Corporation | Reclaiming existing fields in address translation data structures to extend control over memory accesses |
US7318141B2 (en) * | 2002-12-17 | 2008-01-08 | Intel Corporation | Methods and systems to control virtual machines |
US7496961B2 (en) * | 2003-10-15 | 2009-02-24 | Intel Corporation | Methods and apparatus to provide network traffic support and physical security support |
US7296139B1 (en) * | 2004-01-30 | 2007-11-13 | Nvidia Corporation | In-memory table structure for virtual address translation system with translation units of variable range size |
US7401230B2 (en) * | 2004-03-31 | 2008-07-15 | Intel Corporation | Secure virtual machine monitor to tear down a secure execution environment |
US7802250B2 (en) * | 2004-06-28 | 2010-09-21 | Intel Corporation | Support for transitioning to a virtual machine monitor based upon the privilege level of guest software |
US7840962B2 (en) * | 2004-09-30 | 2010-11-23 | Intel Corporation | System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time |
US7694298B2 (en) * | 2004-12-10 | 2010-04-06 | Intel Corporation | Method and apparatus for providing virtual server blades |
US7395405B2 (en) * | 2005-01-28 | 2008-07-01 | Intel Corporation | Method and apparatus for supporting address translation in a virtual machine environment |
JP2007004661A (ja) * | 2005-06-27 | 2007-01-11 | Hitachi Ltd | 仮想計算機の制御方法及びプログラム |
US8312452B2 (en) * | 2005-06-30 | 2012-11-13 | Intel Corporation | Method and apparatus for a guest to access a privileged register |
US7840398B2 (en) * | 2006-03-28 | 2010-11-23 | Intel Corporation | Techniques for unified management communication for virtualization systems |
US8095931B1 (en) * | 2006-04-27 | 2012-01-10 | Vmware, Inc. | Controlling memory conditions in a virtual machine |
US7882318B2 (en) * | 2006-09-29 | 2011-02-01 | Intel Corporation | Tamper protection of software agents operating in a vitual technology environment methods and apparatuses |
US8171255B1 (en) * | 2007-02-06 | 2012-05-01 | Parallels IP Holdings GmbH | Optimization of paging cache protection in virtual environment |
US7596677B1 (en) * | 2007-02-06 | 2009-09-29 | Parallels Software International, Inc. | Paging cache optimization for virtual machine |
US8856782B2 (en) * | 2007-03-01 | 2014-10-07 | George Mason Research Foundation, Inc. | On-demand disposable virtual work system |
JP4864817B2 (ja) * | 2007-06-22 | 2012-02-01 | 株式会社日立製作所 | 仮想化プログラム及び仮想計算機システム |
US8763115B2 (en) * | 2007-08-08 | 2014-06-24 | Vmware, Inc. | Impeding progress of malicious guest software |
US8370559B2 (en) * | 2007-09-28 | 2013-02-05 | Intel Corporation | Executing a protected device model in a virtual machine |
US20090172346A1 (en) * | 2007-12-31 | 2009-07-02 | Ravi Sahita | Transitioning between software component partitions using a page table pointer target list |
US8099541B2 (en) * | 2008-01-22 | 2012-01-17 | Globalfoundries Inc. | Minivisor entry point in virtual machine monitor address space |
JP5405799B2 (ja) * | 2008-10-30 | 2014-02-05 | 株式会社日立製作所 | 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム |
JP4961459B2 (ja) * | 2009-06-26 | 2012-06-27 | 株式会社日立製作所 | 仮想計算機システムおよび仮想計算機システムにおける制御方法 |
US9189620B2 (en) * | 2009-06-30 | 2015-11-17 | Intel Corporation | Protecting a software component using a transition point wrapper |
US20110016290A1 (en) * | 2009-07-14 | 2011-01-20 | Arie Chobotaro | Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment |
US8495628B2 (en) * | 2009-08-23 | 2013-07-23 | International Business Machines Corporation | Para-virtualization in a nested virtualization environment using reduced number of nested VM exits |
US8560758B2 (en) * | 2009-08-24 | 2013-10-15 | Red Hat Israel, Ltd. | Mechanism for out-of-synch virtual machine memory management optimization |
US8661213B2 (en) * | 2010-01-06 | 2014-02-25 | Vmware, Inc. | Method and system for frequent checkpointing |
JP5493125B2 (ja) * | 2010-02-05 | 2014-05-14 | 株式会社日立製作所 | 仮想化方法及び計算機 |
US9038176B2 (en) * | 2011-03-31 | 2015-05-19 | Mcafee, Inc. | System and method for below-operating system trapping and securing loading of code into memory |
US20120255031A1 (en) * | 2011-03-28 | 2012-10-04 | Mcafee, Inc. | System and method for securing memory using below-operating system trapping |
US9201612B1 (en) * | 2011-10-20 | 2015-12-01 | Amazon Technologies, Inc. | Utilizing shared storage for efficient VM-HA |
US20130326519A1 (en) * | 2011-12-30 | 2013-12-05 | Andrew V. Anderson | Virtual machine control structure shadowing |
US9330013B2 (en) * | 2012-06-28 | 2016-05-03 | Industrial Technology Research Institute | Method of cloning data in a memory for a virtual machine, product of computer programs and computer system therewith |
US8856789B2 (en) * | 2012-09-06 | 2014-10-07 | Assured Information Security, Inc. | Facilitating execution of a self-modifying executable |
US9275223B2 (en) * | 2012-10-19 | 2016-03-01 | Mcafee, Inc. | Real-time module protection |
US9354916B2 (en) * | 2012-11-29 | 2016-05-31 | Red Hat Israel, Ltd. | Detection of guest disk cache |
US9032157B2 (en) * | 2012-12-11 | 2015-05-12 | International Business Machines Corporation | Virtual machine failover |
US20140181402A1 (en) * | 2012-12-21 | 2014-06-26 | Advanced Micro Devices, Inc. | Selective cache memory write-back and replacement policies |
US9223602B2 (en) | 2012-12-28 | 2015-12-29 | Intel Corporation | Processors, methods, and systems to enforce blacklisted paging structure indication values |
-
2012
- 2012-12-28 US US13/730,798 patent/US9223602B2/en active Active
-
2013
- 2013-06-26 CN CN201380062295.9A patent/CN104969199B/zh not_active Expired - Fee Related
- 2013-06-26 WO PCT/US2013/047910 patent/WO2014105185A1/en active Application Filing
-
2015
- 2015-11-20 US US14/947,416 patent/US10360055B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7640543B2 (en) * | 2004-06-30 | 2009-12-29 | Intel Corporation | Memory isolation and virtualization among virtual machines |
US8015562B2 (en) * | 2004-12-03 | 2011-09-06 | Stmicroelectronics S.R.L. | Process for managing virtual machines in a physical processing machine, corresponding processor system and computer program product therefor |
US20120226903A1 (en) * | 2005-06-30 | 2012-09-06 | David Durham | Secure platform voucher service for software components within an execution environment |
CN101952807A (zh) * | 2008-02-25 | 2011-01-19 | 国际商业机器公司 | 管理计算环境的多个可分页客户端对存储装置的使用 |
US8245227B2 (en) * | 2008-05-30 | 2012-08-14 | Vmware, Inc. | Virtual machine execution using virtualization software with shadow page tables and address space interspersed among guest operating system address space |
US20100306766A1 (en) * | 2009-05-28 | 2010-12-02 | James Paul Schneider | Adding aspects to virtual machine monitors |
US20110219447A1 (en) * | 2010-03-08 | 2011-09-08 | Vmware, Inc. | Identification of Unauthorized Code Running in an Operating System's Kernel |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114143083A (zh) * | 2021-11-30 | 2022-03-04 | 北京天融信网络安全技术有限公司 | 黑名单策略匹配方法、装置、电子设备及存储介质 |
CN114143083B (zh) * | 2021-11-30 | 2023-11-14 | 北京天融信网络安全技术有限公司 | 黑名单策略匹配方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20160077864A1 (en) | 2016-03-17 |
US20140189683A1 (en) | 2014-07-03 |
WO2014105185A1 (en) | 2014-07-03 |
CN104969199B (zh) | 2018-04-10 |
US10360055B2 (en) | 2019-07-23 |
US9223602B2 (en) | 2015-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104969199A (zh) | 实施黑名单分页结构指示值的处理器、方法,以及系统 | |
TWI751731B (zh) | 用以支援保護容器的即時遷移之處理器、方法、系統和指令 | |
TWI697804B (zh) | 安全區之平台遷移 | |
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
CN105320611B (zh) | 用于细粒存储器保护的方法和设备 | |
CN104951697B (zh) | 来自过程指令的返回-目标限制性返回、处理器、方法及系统 | |
TWI516937B (zh) | 用於資料讀取/寫入延伸分頁表違例之處理的決策動作決定技術之方法、裝置及非暫態機器可讀媒體 | |
CN107667372A (zh) | 用于保护影子栈的处理器、方法、系统和指令 | |
CN104951296A (zh) | 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块 | |
CN105320612A (zh) | 验证虚拟地址转换 | |
CN105224865A (zh) | 用于在安全飞地页高速缓存中进行中断和恢复分页的指令和逻辑 | |
CN104484284A (zh) | 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 | |
CN106575261A (zh) | 受保护的区域中的存储器初始化 | |
CN109690552A (zh) | 用于判定是否将受保护容器页的加密副本加载到受保护容器存储器中的处理器、方法、系统和指令 | |
CN104603745A (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
CN104603795A (zh) | 用于实现用于用户级线程的即时上下文切换的新指令和高效的微架构 | |
CN104050012A (zh) | 指令模拟处理器、方法和系统 | |
CN105264513A (zh) | 用于过程返回地址验证的系统和方法 | |
US9405937B2 (en) | Method and apparatus for securing a dynamic binary translation system | |
CN104823173A (zh) | 对预留给处理器逻辑使用的存储器的访问类型保护 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN104205088A (zh) | 用于实现页级自动二进制转换的硬件剖析机制 | |
CN104603746A (zh) | 由读和写掩码控制的向量移动指令 | |
CN104969178A (zh) | 用于实现便笺式存储器的装置和方法 | |
CN105453030A (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180410 Termination date: 20210626 |
|
CF01 | Termination of patent right due to non-payment of annual fee |