用于子页写入保护的方法和装置与流程

文档序号:14958946发布日期:2018-07-18 00:08阅读:188来源:国知局

本发明总体上涉及计算机处理器领域。更具体地,本发明涉及一种用于子页写入保护的装置和方法。

相关技术的说明

虚拟机系统是包括支持一个或多个虚拟机(vm)的虚拟机监视器(vmm)的计算机系统。虚拟机监视器(vmm)是软件程序,所述软件程序控制物理计算机硬件并且为在虚拟机(vm)内执行的程序呈现所述程序在真实的物理计算机硬件上执行的错觉。每个vm通常充当由“客户机”操作系统(os)——即由vmm托管的os——控制的独立平台,所述os如同在真实机器上而不是在vm内运行那样执行。

在一些实施方式中,虚拟执行环境由在计算硬件上原生地执行的“主机”操作系统(os)支持。主机os可以支持多个不同的“客户机”os,每个客户机os都可能运行多个不同的应用。在本实施方式中,由应用执行的非原生指令被主机os内的逻辑拦截、解码并转换为原生指令。原生指令的结果然后从主机os提供回应用。除了非原生通用指令之外,还可能需要将非原生图形指令拦截、解码并转换成原生图形指令以供在图形处理单元(gpu)上执行。

基于扩展页表(ept)的子页保护允许vmm以子页(128字节)粒度为客户机物理存储器指定写入保护。当利用这种能力时,cpu将为4k页的子页区域强制执行如由vmm指定的写入访问权限。基于ept的子页保护旨在通过vmm实现细粒度的存储器写入实施,从而实现安全性(客户机os监控)和诸如设备虚拟化和存储器检查点设置等用途。

附图说明

可以结合以下附图根据以下详细说明获得对本发明的更好理解,在附图中:

图1a是框图,展示了根据本发明的实施例的示例性有序流水线和示例性寄存器重命名无序发布/执行流水线两者;

图1b是框图,展示了根据本发明的实施例的将包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名无序发布/执行架构核两者;

图2是根据本发明的实施例的具有集成存储器控制器和图形的单核处理器和多核处理器的框图;

图3展示了根据本发明的一个实施例的系统的框图;

图4展示了根据本发明的实施例的第二系统的框图;

图5展示了根据本发明的实施例的第三系统的框图;

图6展示了根据本发明的实施例的片上系统(soc)的框图;

图7展示了根据本发明的实施例的对照使用软件指令转换器来将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图;

图8展示了用于细粒度存储器保护的架构的一个实施例;

图9展示了在细粒度存储器保护的一个实施例中采用的附加细节;

图10展示了在一个实施例中的分层表结构中执行的查找;

图11展示了用于细粒度存储器保护的方法的一个实施例;

图12展示了其中在64位向量中表示读取(r)位、写入(w)位、执行禁用(xd)位、以及脏(dirty)位的实施例;

图13展示了用于实施子页保护的装置的一个实施例;并且

图14展示了根据本发明的一个实施例的子页控制寄存器内的值;并且

图15展示了根据本发明的一个实施例的一种方法。

具体实施方式

在以下描述中,出于解释的目的,阐述了许多具体的细节以便提供对以下所述的本发明的实施例的透彻理解。然而,对于本领域技术人员而言,可以在不具有这些具体细节中的一些具体细节的情况下实践本发明的实施例将是明显的。在其他实例中,以框图的形式示出了公知的结构和设备以避免模糊本发明的实施例的基本原理。

示例性处理器架构和数据类型

图1a是展示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图1b是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图1a-图1b中的实线框展示有序流水线和有序核,而虚线框的任选增加展示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。

在图1a中,处理器流水线100包括取出级102、长度解码级104、解码级106、分配级108、重命名级110、调度(也被称为分派或发布)级112、寄存器读取/存储器读取级114、执行级116、写回/存储器写入级118、异常处置级122和提交级124。

图1b示出处理器核190,该处理器核190包括前端单元130,该前端单元130耦合到执行引擎单元150,并且前端单元130和执行引擎单元150两者都耦合到存储器单元170。核190可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核、或混合或替代的核类型。作为又一选项,核190可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(gpgpu)核、图形核,等等。

前端单元130包括分支预测单元132,该分支预测单元132耦合到指令高速缓存单元134,该指令高速缓存单元134耦合到指令转换后备缓冲器(tlb)136,该指令转换后备缓冲器136耦合到指令取出单元138,该指令取出单元138耦合到解码单元140。解码单元140(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元140可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。在一个实施例中,核190包括存储用于某些宏指令的微代码的微代码rom或其他介质(例如,在解码单元140中,或以其他方式在前端单元130内)。解码单元140耦合到执行引擎单元150中的重命名/分配器单元152。

执行引擎单元150包括重命名/分配器单元152,该重命名/分配器单元152耦合到引退单元154和一个或多个调度器单元的集合156。(多个)调度器单元156表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元156耦合到(多个)物理寄存器堆单元158。(多个)物理寄存器堆单元158中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元158包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元158由引退单元154重叠,以展示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元154和(多个)物理寄存器堆单元158耦合到(多个)执行集群160。(多个)执行集群160包括一个或多个执行单元的集合162以及一个或多个存储器访问单元的集合164。执行单元162可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元156、(多个)物理寄存器堆单元158和(多个)执行集群160示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元164的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。

存储器访问单元的集合164耦合到存储器单元170,该存储器单元170包括数据tlb单元172,该数据tlb单元172耦合到数据高速缓存单元174,该数据高速缓存单元174耦合到第二级(l2)高速缓存单元176。在一个示例性实施例中,存储器访问单元164可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元170中的数据tlb单元172。指令高速缓存单元134还耦合到存储器单元170中的第二级(l2)高速缓存单元176。l2高速缓存单元176耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。

作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线100:1)指令取出138执行取出级102和长度解码级104;2)解码单元140执行解码级106;3)重命名/分配器单元152执行分配级108和重命名级110;4)(多个)调度器单元156执行调度级112;5)(多个)物理寄存器堆单元158和存储器单元170执行寄存器读取/存储器读取级114;执行集群160执行执行级116;6)存储器单元170和(多个)物理寄存器堆单元158执行写回/存储器写入级118;7)各单元可牵涉到异常处置级122;以及8)引退单元154和(多个)物理寄存器堆单元158执行提交级124。

核190可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的mips技术公司的mips指令集;加利福尼亚州桑尼维尔市的arm控股公司的arm指令集(具有诸如neon的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核190包括用于支持紧缩数据指令集扩展(例如,avx1、avx2和/或下文所描述的某种形式的通用向量友好指令格式(u=0和/或u=1))的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。

应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。

尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所展示的处理器的实施例还包括分开的指令和数据高速缓存单元134/174以及共享的l2高速缓存单元176,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(l1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。

图2是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器200的框图。图2中的实线框展示具有单个核202a、系统代理210、一个或多个总线控制器单元的集合216的处理器200,而虚线框的任选增加展示具有多个核202a-n、系统代理单元210中的一个或多个集成存储器控制器单元的集合214以及专用逻辑208的替代处理器200。

因此,处理器200的不同实现可包括:1)cpu,其中专用逻辑208是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核202a-n是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核202a-n是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核202a-n是大量通用有序核。因此,处理器200可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量的集成众核(mic)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器200可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,bicmos、cmos、或nmos)中的任何技术被实现在一个或多个基板上。

存储器层次结构包括核内的一个或多个高速缓存级别、一个或多个共享高速缓存单元的集合206、以及耦合到集成存储器控制器单元的集合214的外部存储器(未示出)。共享高速缓存单元的集合206可包括一个或多个中间级别的高速缓存,诸如,第二级(l2)、第三级(l3)、第四级(l4)或其他级别的高速缓存、末级高速缓存(llc)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元212将集成图形逻辑208、共享高速缓存单元的集合206以及系统代理单元210/(多个)集成存储器控制器单元214互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元206与核202a-n之间维持一致性。

在一些实施例中,一个或多个核202a-n能够实现多线程化。系统代理210包括协调和操作核202a-n的那些部件。系统代理单元210可包括例如功率控制单元(pcu)和显示单元。pcu可以是对核202a-n以及集成图形逻辑208的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。

核202a-n在架构指令集方面可以是同构的或异构的;即,核202a-n中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。在一个实施例中,核202a-n是异构的,并且包括下文中描述的“小型”核和“大型”核两者。

图3-6是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。

现在参考图3,所示出的是根据本发明一个实施例的系统300的框图。系统300可以包括一个或多个处理器310、315,这些处理器耦合到控制器中枢320。在一个实施例中,控制器中枢320包括图形存储器控制器中枢(gmch)390和输入/输出中枢(ioh)350(其可以在分开的芯片上);gmch390包括存储器和图形控制器,存储器340和协处理器345耦合到该存储器和图形控制器;ioh350将输入/输出(i/o)设备360耦合到gmch390。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器340和协处理器345直接耦合到处理器310,并且控制器中枢320与ioh350处于单个芯片中。

附加的处理器315的任选性在图3中通过虚线来表示。每一处理器310、315可包括本文中描述的处理核中的一个或多个,并且可以是处理器200的某一版本。

存储器340可以是例如动态随机存取存储器(dram)、相变存储器(pcm)或这两者的组合。对于至少一个实施例,控制器中枢320经由诸如前端总线(fsb)之类的多分支总线、诸如快速路径互连(qpi)之类的点对点接口、或者类似的连接395来与(多个)处理器310、315进行通信。

在一个实施例中,协处理器345是专用处理器,诸如例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。在一个实施例中,控制器中枢320可以包括集成图形加速器。

在物理资源310、315之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。

在一个实施例中,处理器310执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器310将这些协处理器指令识别为具有应当由附连的协处理器345执行的类型。因此,处理器310在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器345。(多个)协处理器345接受并执行所接收的协处理器指令。

现在参见图4,所示出的是根据本发明的实施例的第一更具体的示例性系统400的框图。如图4中所示,多处理器系统400是点对点互连系统,并且包括经由点对点互连450耦合的第一处理器470和第二处理器480。处理器470和480中的每一个都可以是处理器200的某一版本。在本发明的一个实施例中,处理器470和480分别是处理器410和315,而协处理器438是协处理器345。在另一实施例中,处理器470和480分别是处理器310和协处理器345。

处理器470和480示出为分别包括集成存储器控制器(imc)单元472和482。处理器470还包括作为其总线控制器单元的一部分的点对点(p-p)接口476和478;类似地,第二处理器480包括p-p接口486和488。处理器470、480可以经由使用点对点(p-p)接口电路478、488的p-p接口450来交换信息。如图4中所示,imc472和482将处理器耦合到相应的存储器,即存储器432和存储器434,这些存储器可以是本地附连到相应处理器的主存储器的部分。

处理器470、480可各自经由使用点对点接口电路476、494、486、498的各个p-p接口452、454来与芯片组490交换信息。芯片组490可以任选地经由高性能接口439来与协处理器438交换信息。在一个实施例中,协处理器438是专用处理器,诸如例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。

共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由p-p互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。

芯片组490可以经由接口496耦合到第一总线416。在一个实施例中,第一总线416可以是外围部件互连(pci)总线或诸如pci快速总线或另一第三代i/o互连总线之类的总线,但是本发明的范围不限于此。

如图4中所示,各种i/o设备414可连同总线桥418一起耦合到第一总线416,该总线桥418将第一总线416耦合到第二总线420。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu、加速器(诸如例如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器415耦合到第一总线416。在一个实施例中,第二总线420可以是低引脚数(lpc)总线。在一个实施例中,各种设备可耦合到第二总线420,这些设备包括例如键盘和/或鼠标422、通信设备427以及存储单元428,该存储单元428诸如可包括指令/代码和数据430的盘驱动器或者其他大容量存储设备。此外,音频i/o424可以被耦合到第二总线420。注意,其他架构是可能的。例如,代替图4的点对点架构,系统可以实现多分支总线或其他此类架构。

现在参考图5,示出的是根据本发明的实施例的第二更具体的示例性系统500的框图。图4和图5中的类似元件使用类似的附图标记,并且从图5中省略了图4的某些方面以避免混淆图5的其他方面。

图5展示处理器470、480可分别包括集成存储器和i/o控制逻辑(“cl”)472和482。因此,cl472、482包括集成存储器控制器单元,并包括i/o控制逻辑。图5展示不仅存储器432、434耦合到cl472、482,而且i/o设备514也耦合到控制逻辑472、482。传统i/o设备515被耦合到芯片组490。

现在参考图6,示出的是根据本发明的实施例的soc600的框图。图2中的类似要素使用类似的附图标记。另外,虚线框是更先进的soc上的任选的特征。在图6中,(多个)互连单元602被耦合到:应用处理器610,其包括一个或多个核的集合202a-n的集合以及(多个)共享高速缓存单元206;系统代理单元210;(多个)总线控制器单元216;(多个)集成存储器控制器单元214;一个或多个协处理器的集合620,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元630;直接存储器访问(dma)单元632;以及用于耦合到一个或多个外部显示器的显示单元640。在一个实施例中,(多个)协处理器620包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、或嵌入式处理器,等等。

本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。

可将程序代码(诸如,图4中展示的代码430)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器。

程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“ip核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。

此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(cd-rom)、可重写紧致盘(cd-rw)以及磁光盘;半导体器件,诸如,只读存储器(rom)、诸如动态随机存取存储器(dram)和静态随机存取存储器(sram)的随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、闪存、电可擦除可编程只读存储器(eeprom);相变存储器(pcm);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。

因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(hdl),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。

在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。

图7是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所展示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图7示出可使用x86编译器704来编译高级语言702形式的程序,以生成可由具有至少一个x86指令集核的处理器716原生执行的x86二进制代码706。具有至少一个x86指令集核的处理器716表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器704表示可操作用于生成x86二进制代码706(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器716上执行。类似地,图7示出可以使用替代的指令集编译器708来编译高级语言702形式的程序,以生成可以由不具有至少一个x86指令集核的处理器714(例如,具有执行加利福尼亚州桑尼维尔市的mips技术公司的mips指令集、和/或执行加利福尼亚州桑尼维尔市的arm控股公司的arm指令集的核的处理器)原生执行的替代的指令集二进制代码710。指令转换器712用于将x86二进制代码706转换成可以由不具有x86指令集核的处理器714原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码710相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器712通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码706的软件、固件、硬件或其组合。

用于细粒度存储器保护的装置和方法

本发明的一个实施例使用允许vmm对任何页的子页区域进行写入保护的技术来减少由于页共享而引起的存储器违例的量。在一个实施例中,每个存储器页的大小为4k,并且子页区域为128b。然而,本发明的基本原理不限于任何特定的子页区域或页大小。

在一个实施例中,在vmm管理的表中保持了每个子页区域的权限。在128b粒度的情况下,对于子页而言,可以在64位值中表示无写入权限和无执行权限(例如,其中,向每个子页分配2个位,一个指示无写入并且一个指示无执行)。

图8展示了包括在处理器820上执行以向一个或多个客户机提供执行环境的vmm810的一个实施例,所述客户机可以是os内核801。在一个实施例中,vmm(例如,vmx根)内的子页策略模块812实施本文所述的技术以生成指示每个存储器页内的子页的权限的子页存储器视图813。在os内核801内执行的安全代理803(例如,带内代理)利用子页存储器视图813来判定需要监控哪些页和子页。例如,如以下详细讨论的,每个子页都可以具有用于指示是否允许对该子页进行写入的写入权限位。可替代地,写入保护位可以被设置成指示不允许写入。

因此,代替对针对存储器页802的每个ve事件进行处理,安全代理803提供有允许所述安全代理仅对针对存储器页802内的特定子页的那些事件(例如,写入操作)进行处理的信息。例如,在图8中,只有存储器页802的突显区域805内的(多个)子页与安全代理803相关。因此,安全代理803对在此区域内发生的ve事件进行处理,但过滤掉在其他区域中发生的事件(例如,由于为那些子页设置了写入权限)。由vmm管理的其他存储器视图811表示传统地由vmm向客户机系统(例如,如内核801)提供的标准存储器页视图。

图9中展示了本发明的一个实施例的附加细节,所述图示出了具有存储器页虚拟地址901(有时也被称为线性地址)与物理地址902(有时也被称为实际地址)之间的映射的页表900。在一个实施例中,页表900包括在当前x86架构中采用的扩展页表(ept)。页遍历逻辑905可以使用虚拟地址来执行“页遍历(pagewalk)”操作以访问页表900并且识别与该虚拟地址相对应的物理地址。在一个实施例中,页遍历逻辑905包括集成在处理器的存储器管理单元(mmu)内的页未命中处置程序(pmh)。一旦物理地址被识别,就可以在存储器中的指定物理位置处访问存储器页的位置。

页表条目可以被高速缓存在处理器内的转换后备缓冲器(tlb)909中以供更快的访问。如果页表条目位于tlb内,则所述页的物理地址可以直接通过处理器的存储器管理单元(mmu)来确定而无需进行页遍历(页遍历通常涉及从系统存储器访问页表900并且因此消耗显著更多个周期)。无论与页相关的信息是从tlb909中检索的还是直接从页表900中检索的,本发明的基本原理都是相同的。为了避免模糊本发明的基本原理,图9中未展示通常用于虚拟到物理地址转换的各个其他组件。

在本发明的一个实施例中,包括在页表条目中的每个条目内的spp启用位903指示子页保护是否适用于相应的存储器页。例如,在图9中的页表900中,对于与va2和va3相关联的条目,spp启用位被设置为1。在一个实施例中,如果针对特定页启用了spp,则子页保护(spp)模块910实施本文所描述的技术以在一个或多个子页保护表915中执行查找。在一个实施例中,为了执行查找,子页保护模块910将页的物理地址(从页遍历模块905或tlb909提供)与标识sppt915在存储器中的基位置的子页保护表指针(spptp)912组合。在一个实施例中,spptp912是虚拟机控制结构(vmcs)911内的64位字段。然而,spptp可以以各种不同的方式实施,同时仍然符合本发明的基本原理。

在一个实施例中,与每个页相关联的写入权限位904(以及可能地一个或多个其他权限位)还可以用于组合(多个)子页保护表915来确定该页的权限。例如,在一个实施例中,页级权限904与子页写入保护(在sppt915中指定)组合以确定每个子页的写入权限。例如,在一个实施例中,如果页的写入权限904被设置为0,则除非在子页保护表中写入权限位被设置为1,否则不允许对子页进行写入。在另一个实施例中,如果页的写入权限904被设置为0,则无论在子页保护表中指示的设置如何,都不允许对子页进行写入。类似地,如果页的写入权限904被设置为1,则除非在子页保护表915中写入权限位被设置为0,否则允许对子页进行写入。在另一个实施例中,如果页的写入权限904被设置为1,则无论在子页保护表中指示的设置如何,都允许对所有子页进行写入。因此,写入权限位904和子页保护位可以以各种方式组合以确定每个子页的写入权限。

在一个实施例中,sppt915包括表的层级结构,所述表中的每一个都通过存储器页的物理地址的不同部分来索引。图10中用图形展示了根据一个这种实施例的查找。如在此实施例中所展示的,spptp912与物理地址的最高物理地址位组合以标识5级(l5)表中的条目。包含在该条目中的地址是4级(l4)表的基地址。l4表中的条目通过将所述基地址与页的物理地址的位39至47组合来定位。l4条目标识l3表的基地址并且与物理地址的位30至38组合以标识l3表中包含l2表的基地址的条目。位12至29然后与此基地址组合以标识l2表中标识l1表的基地址的条目。通过将l1表的基地址与物理地址的位12至20组合来标识包含页的所有子页权限的64位子页(sp)向量。然后在64位sp向量内使用物理地址位7至11来标识写入权限位。在一个实施例中,64位sp向量包含与每个子页相关联的两个位,一个用于指示写入权限(例如,1=写入允许;0=写入保护),并且另一个用于指示子页的一个或多个附加权限(例如,执行保护和/或权限)。

应当注意,出于解释本发明的一个实施例的目的,图10中示出了具体细节。然而,本发明的基本原理并不限于图10中所示的具体细节。例如,与每个存储器页相关联的不同地址位可以以交替的方式组合以便在各种不同类型的表结构(非分层的以及分层的)中执行查找,同时仍然符合本发明的基本原理。

图11中展示了根据本发明的一个实施例的用于确定子页保护的方法。所述方法可以在以上所述的架构内实施,但不限于任何特定的系统架构。

在1001处,检索与存储器页相关联的页表条目。例如,如以上所讨论的,页表条目可以从tlb中读取或者可以从存储在存储器中的页表中取出。在1102处,进行关于子页保护是否被启用的判定。例如,如上所述,可以在页表条目中将子页保护位设置成指示子页保护。如果子页保护未被启用,则在1105处,仅实施页级权限/保护。

如果启用了子页保护,则在1103处,在子页保护表(sppt)中执行查找以确定与每个子页相关联的权限/保护。如上所述,这可以包括写入权限、执行权限、或能够关于子页实施的任何其他权限/保护。在1104处,将子页保护指示与页级权限/保护(如果有的话)组合以得出每个子页的最终一组权限。

在本发明的一个实施例中,以下具体细节被实施以提供子页保护/权限。然而,应当注意的是,本发明的基本原理不限于这些具体细节。

在一个实施例中,页表中使用的spp位包括仅针对映射页的ept分页结构条目(例如,4kb扩展页表(ept)页表条目)定义的位。所述位在其他ept分页结构条目中被忽略。

如所提及的,可以将累积的页级ept写入权限/保护与子页写入权限/保护组合以确定该子页的写入权限/保护。在一个实施例中,处理器检查此写入权限并且在适当时生成ept违例。

附加sppt查找特征:

如果sppt条目不存在,则这可能引起新的虚拟机退出。在一个实施例中,将仅针对由vmm进行的对sppt的怠惰填充(lazypopulation)而发生这种情况。在未命中时,在一个实施例中,物理地址可以保存在vmcs(有待用作随后请求的高速缓存)中。否则,vm退出将像ept违例当前进行那样(例如,nmi阻塞、idt向量化等)保存数据。

如果不存在未命中,则sppt遍历可以标识页的32位写入权限位图。处理器可以将所述位图高速缓存在数据转换后备缓冲器(dtlb)或相关/其他结构中以供后续访问。

sppt无效化特征:

在一个实施例中,vmm可以修改sppt中的子页保护位并且可以通过invept指令使组合的映射无效。这还引起对经高速缓存的子页权限的转储清除。在一个实施例中,扩展页表指针(eptp)切换(例如,通过执行vmwrite指令或vmfunc指令)可能引起对经高速缓存的关于子页权限的任何信息的转储清除。对于地址空间id(asid)未命中情况(例如,其中,新的asid被分配),这可能需要tlb转储清除。在一个实施例中,还在非asid标记的结构(例如,数据tlb、扩展页目录指针(epdp)高速缓存以及扩展页目录条目(epde)高速缓存)中使条目无效。

地址(a)/数据(d)位更新处置:

在一个实施例中,对于客户机分页结构和虚拟化高级可编程中断控制器(apic)访问而言,子页保护(spp)页被认为是“只读”的。对于英特尔架构(ia)-32a/d位更新:(a)如果将对spp页进行客户机a/d位更新,则生成ept违例;(b)退出条件(exitqualification)是相同的,就好像页在ept中一直是只读的(无新数据);(c)vmm可以使用现有机制来处置这种ept违例。对于epta/d位架构:(a)如果epta/d位被启用,则客户机页遍历可以被认为是对ept的写入;(b)如果epta/d位被启用,则对spp页的客户机页遍历引起ept违例;(c)与vmm接口连接以监控os页表的启蒙os可以通过以下方式高效地使用子页保护:在包含关键映射的页上预设a/d位,使得vmm不必仿真在具有子页监控区域的写入保护页上的a/d更新。

对单个页进行写入,其中多个子页区域被访问:

这种情况的一个示例是在页内4字节对齐的8字节mov。在一个实施例中,处理器将检查这两个子页的可写入性。如果这两个子页是可写入的,则允许写入。如果任一子页不可写入,则写入引起ept违例。

跨多个页进行写入:

这种情况的一个示例是跨页边界4字节对齐的8字节mov。在一个实施例中,处理器将检查任一页是否具有子页保护。如果两个页都不具有子页保护,则按照ept来正常处置写入。如果任一页具有子页保护,则写入引起ept违例。

使用多个写入的处置指令:

这种情况的一个示例是可以生成对多个页的多个写入的fxsave指令。处理器可以就像对待任何其他存储一样对待存储探查。在一个实施例中,如果所探查的特定地址不可写入,则处理器将生成ept违例。这可能导致在一些数据被写入之后发生ept违例。

在一个实施例中,如果所探查的页具有子页保护,则变化存储进行探查以导致ept违例。在一个实施例中,处理器在进行任何写入之前探查高字节和低字节。

apic虚拟化交互:

如果vmm将eptpte配置成使得物理地址处于“apic-accessaddress(apic访问地址)”中并且spp=1,则可能引起高级可编程中断控制器(apic)交互。在一个实施例中,这被认为是无效使用。完全apic虚拟化在不具有子页保护的情况下提供细粒度控制。

使用eptp切换的交互:

在一个实施例中,子页保护表指针(spptp)在扩展页表指针(eptp)切换时不发生变化。当前使用情况需要特定ept层级结构可以访问!w子页。这是通过针对这些ept层级结构而将eptespp位设置为0来实现的。

在一个实施例中,sppt可以通过新的vmfunc指令进行切换,所述指令通过存储器描述符切换以下各项:

<cr3,ept,sppt>vmfuncleaf2(<cr3,ept,sppt>vmfunc叶2)

<cr3,ept>vmfuncleaf1(<cr3,ept>vmfunc叶1)

<eptp>vmfuncleaf0(<eptp>vmfunc叶0)

附加实施例:

上述架构可以映射到各种实施方式。所提出架构到处理器实施方式的直接映射是由于处理器页未命中处置程序(pmh)遍历具有在ept结构中设置的spp位的分页结构而对sppt执行查找的映射。在ept中不需要spp位的替代实施方式实施例如下。vmm分配其保留用作页的“子页可监控池”的一块连续存储器区域。当os或os服务想要或者需要子页监控或者被动态设置为在子页级别下进行监控的页时,os服务请求vmm分配这些池页之一。vmm将os映射(在ospt中)的全局物理地址(gpa)映射至所分配页的来自页池的隐藏物理地址(hpa)。在一些环境中,vmm可以将来自原始gpa页的内容复制到从这个池中分配的页。vmm将处理器的范围寄存器基址和掩码之一编程为覆盖连续存储器区域。范围寄存器允许处理器检测何时对所述池中的页之一进行rw或x访问。另外,vmm将如在上述架构中所定义的sppt编程成为这个池内的所有页指定每页子页策略。在一个实施例中,对存储器区域内的任何页的任何rw或x访问都会引起处理器微代码辅助,其中,cpu对子页策略进行检查以找到sppt中的那个hpa并且允许或拒绝所述访问。

软件实施方式:

在一个实施例中,当需要一组页的子页权限时,vmm使用这组页的映射来填充sppt,所述映射指定每个页的子页权限位向量。对于落入写入拒绝子页区域内的访问,vmm处置所引起的ept违例,或者客户机软件处置所引起的虚拟化异常(#ve)。对于落入写入允许子页区域内的访问,不生成所引起的ept违例或#ve。

嵌套虚拟化交互:

在一个实施例中,可以不对sppt启用根vmm。在这种情况下,所述根vmm不暴露sppt并且不使其虚拟化。在另一实施例中,对sppt启用根vmm,但根vmm不使用sppt自身,而是使其虚拟化。在另一实施例中,对sppt启用根vmm,并且根vmm使用sppt自身,但不将其暴露于客户机实体。此处,不存在sppt嵌套暗示。在又另一实施例中,对sppt启用根vmm,根vmm使用sppt自身并且将其暴露于客户机实体(例如,使其虚拟化)。以下章节中更详细地描述了最后的这两个实施例。

对sppt启用根vmm,根vmm不使用sppt自身,但使其虚拟化:

在一个实施例中,根vmm遮蔽sppt结构以保持对hpa(包括sppt)的所有引用。由于sppt是通过通用存储器访问指令来访问的,所以根vmm将需要对sppt客户机存储器页进行编辑控制。客户机vmm必须在更新可以由根vmm正确虚拟化的sppt之后执行invept指令(eptp上下文)。在一个实施例中,invept指令清除任何sppt高速缓存(对于相同范围)、全局、eptp、以及特定地址(如果支持的话)。

对sppt启用根vmm,根vmm使用sppt自身,并且将其暴露于客户机:

在本实施例中,根vmm遮蔽sppt结构以保持对hpa(包括sppt)的所有引用。对于冲突的sppt策略,根vmm可以将最保守的组合编码成由处理器针对由于客户机sppt引起的违例而使用的sppt。根vmm可以仿真对客户机vmm的#ve/vm退出。由于sppt是通过通用存储器访问指令来访问的,所以根vmm将需要对sppt客户机存储器页进行编辑控制。客户机vmm可以在更新可以由根vmm正确虚拟化的sppt之后执行invept指令(eptp上下文)。在一个实施例中,invept指令可以清除任何sppt高速缓存(对于相同范围)、全局、eptp、以及特定地址(如果支持的话)。

图12展示了在本发明的一个实施例中采用的spp位向量,其中,可以在64位向量中表示读取(r)位、写入(w)位、执行禁用(xd)位、以及脏(d)位。如所展示的,在一个实施例中,偶数位用于确定w指示符和xd指示符,并且奇数位用于确定r指示符和d指示符。图12中所展示的表1202示出了不同的r值、w值和xd值的不同结果(例如,其中,值1指示启用,并且值0指示禁用)。在一个实施例中,cpu可以简单地更新被写入的子页的脏(d)位并且可能不会引起错误。

用于子页扩展页表(ept)写入保护的方法和装置

基于扩展页表(ept)的子页保护允许vmm以子页(例如,128字节)粒度为客户机物理存储器指定写入保护。当利用这种能力时,cpu将为4k页的子页区域强制执行如由vmm指定的写入访问权限。基于ept的子页保护旨在通过vmm实现细粒度的存储器写入实施,从而实现安全性(客户机os监控)和诸如设备虚拟化和存储器检查点设置等用途。

当前处理器在存储器子系统中实施tlb高速缓存以高速缓存线性地址到物理地址转换。在某些处理器上,转换的最细粒度为4k字节,所述粒度也是可以在其下设置页表转换的最小粒度。ept子页使用32个写入权限位——一个用于该页中的每个128b区域——而不是用于整个页的单个写入权限位来对此进行扩展。支持这种架构的自然扩展将在处理器中具有保持这32个新的写入权限位的新型tlb并且根据通过加载或存储uop指定的地址和操作数大小来测试适当的写入权限位。然而,提供全新的tlb结构或增强tlb结构(其中,数据tlb的每个条目现在都具有32个附加权限)是昂贵的。

另一种技术是,在访问具有子页权限的tlb时,由页未命中处置程序(pmh)调用微代码辅助。微代码辅助验证访问的偏移量和数据大小,并且如果如由写入权限位确定的,访问是有效访问,则在将pmh硬件编程为不使对下一存储的微代码辅助命中该tlb条目之后重新启动所述指令。然而,在缺乏保证指令高速缓存包括所有微操作——包括机器中正在运行的加载/存储——的某些微架构上,这种解决方案是不可行的。因此,如果在这些核之一上重新启动指令,则可能无法在指令高速缓存134中找到重新启动的指令,并且可能需要前端单元130再次从存储器中取出指令,并且该地址处的指令可能在存储器中已经改变。如果所述指令已经改变并且如果重新取出的指令访问子页中的无效位置,则访问将通过,因为硬件将允许下一次访问页中的任何偏移量。

本发明的实施例引入了一种新颖的解决方案以将子页匹配实施为使得在不具有指令包括保证的情况下可以执行正确的操作。具体地,一个实施例包括在不需要指令包括保证的情况下使用微代码辅助来执行子页粒度访问控制的微架构。

如图13中所展示的,在一个实施例中,存储器集群1300(例如,处理器的存储器管理单元)被扩展成允许使用子页控制寄存器1301(cr_sub_page,cr_子_页)来匹配ept子页页915上的可编程偏移量,所述子页控制寄存器利用如图14中所展示的以下字段来控制本发明的实施例的操作:

1.valid(有效)1401——指示控制寄存器是否有效的位。

2.guest_phys_addr(客户机_物理_地址)1402——ept子页的客户机物理地址。

3.addr_osize(地址_操作数大小)1403——当所述地址指向其地址被编程到guest_phys_addr字段1402中的页时应当被允许完成的存储的操作数大小。

4.addr_offset(地址_偏移量)1404——当所述地址指向其地址被编程到guest_phys_addr字段1402中的页时应当被允许完成的存储的第一字节的偏移量。

在一个实施例中,pmh1310执行ept页遍历并且检测包含客户机物理地址(gpa)的页映射有ept中的子页权限。如果映射有子页权限,则pmh判定gpa是否与被编程到子页控制寄存器1301(cr_sub_page)中的gpa相匹配。若是,则pmh1310向tlb909发送转换,其中,spp位被设置成指示这是子页tlb条目。如果未找到匹配,则调用微代码辅助1305(如以下所描述的)。

具体地,本发明的一个实施例执行以下一组操作:

因此,如果对映射有ept中的子页属性的页的遍历的gpa与被编程到cr_sub_page1301中的gpa相匹配,则pmh1310向具有被设置成指示这是子页tlb条目的spp位的tlb909发送转换。如果未找到匹配,则调用微代码辅助1305。

在一个实施例中,当加载或存储与具有所设置的spp位的tlb条目相匹配时,可以在spp控制寄存器1301中匹配偏移量和操作数大小。如果偏移量和操作数大小不匹配,则微代码辅助1305可以被调用以执行错误检查。具体地,可以由tlb909针对匹配而执行以下动作:

在一个实施例中,当pmh1310或tlb909调用微代码辅助时,微代码遍历子页权限表915,并且如果子页权限表915指示由辅助存储访问的偏移量可写入,则使用偏移量和操作数大小对cr_sub_page寄存器1301进行编程。否则,其导致ept违例错误以通知vmm。在一个实施例中,当pmh1310触发了微代码辅助时,则微代码将这32个写入权限位高速缓存到写入允许(wa)的暂存寄存器1320中。根据以下代码来实施一个实施例:

根据上述实施例,如果指令被重新启动并且进行与被编程到cr_子_页中的偏移量和操作数大小不匹配的访问,则所述指令将再次引起对微代码1305的辅助。

图15中展示了根据本发明的一个实施例的方法。所述方法可以在以上所述的系统架构的上下文中实施,但不限于任何特定的系统架构。

在1501处,pmh执行ept页遍历并且检测包含gpa的页映射有ept中的子页权限。如果在1502处确定gpa被编程在子页控制寄存器中,则在1503处,pmh向具有被设置成指示这是子页tlb条目的spp位的tlb发送转换。如果gpa未被编程在子页控制寄存器中,则在1506处调用微代码辅助。在1504处,执行tlb查找。在1505处,如果子页保护位等于1并且存在操作数大小和偏移量匹配,则过程完成。若否,则在1506处调用微代码辅助。

本发明的实施例提供了高效、准确的子页管理,而无需指令包括性质或具有子页权限的特殊tlb。

虽然为了简单起见,在图13中仅示出了单个子页控制寄存器1301,但在一些实施例中,可以存在多个子页控制寄存器1301以同时支持tlb中的多个子页转换。

本发明的实施例可以包括以上已经描述的各步骤。这些步骤可以被具体化为机器可执行指令,所述机器可执行指令可以用于使通用或专用处理器执行这些步骤。可替代地,这些步骤可以由包含用于执行这些步骤的硬接线逻辑的特定硬件部件来执行,或者由程序化计算机部件和自定义硬件部件的任意组合来执行。

如本文所述,指令可以是指硬件的具体配置,如被配置成执行某些操作或具有存储在非暂态计算机可读介质中实施的存储器中的预定功能或软件指令的专用集成电路(asic)。因此,可使用在一个或多个电子设备(例如,端站、网络元件等)上存储并执行的代码和数据来实施附图中示出的技术。这种电子设备使用计算机机器可读介质来存储和传达(在内部和/或通过网络与其他电子设备)代码和数据,诸如非暂态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)以及暂态计算机机器可读通信介质(例如,电、光、声或其他形式的传播信号——如载波、红外信号、数字信号等)。此外,这样的电子设备典型地包括耦合至一个或多个其他部件的一组一个或多个处理器,所述一个或多个其他部件如一个或多个存储设备(非暂态机器可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏和/或显示器)、以及网络连接。所述一组处理器和其他部件的耦合通常通过一个或多个总线和桥接器(也被称为总线控制器)进行。承载网络业务量的存储设备和信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子设备的存储设备典型地存储用于在该电子设备的所述一组一个或多个处理器上执行的代码和/或数据。当然,可以使用软件、固件、和/或硬件的不同组合来实施本发明的实施例的一个或多个部分。贯穿本详细说明,出于解释的目的,阐述了大量的具体细节以便提供对本发明的透彻理解。然而,对于本领域的技术人员而言将明显的是,可以在没有这些具体细节中的一些的情况下实践本发明。在某些实例中,未详细描述公知结构和功能以避免模糊本发明的主题。因此,本发明的范围和精神应根据以下权利要求书来判定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1