CN105320611B - 用于细粒存储器保护的方法和设备 - Google Patents
用于细粒存储器保护的方法和设备 Download PDFInfo
- Publication number
- CN105320611B CN105320611B CN201510289650.7A CN201510289650A CN105320611B CN 105320611 B CN105320611 B CN 105320611B CN 201510289650 A CN201510289650 A CN 201510289650A CN 105320611 B CN105320611 B CN 105320611B
- Authority
- CN
- China
- Prior art keywords
- subpage frame
- license
- subpage
- memory pages
- sppt
- 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.)
- Expired - Fee Related
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了用于细粒存储器保护的方法和设备。用于细粒存储器保护的设备和方法。例如,方法的一个实施例包括:使用虚拟地址来执行第一查找操作,以标识存储器页面的物理地址,所述存储器页面包括多个子页面;判断对于所述存储器页面,是否启用子页面许可;如果子页面许可被启用,那么,执行第二查找操作,以确定与所述存储器页面的所述子页面中的一个或多个相关联的许可;以及,实现与所述一个或多个子页面相关联的所述许可。
Description
背景技术
技术领域
本发明总体涉及计算机处理器领域。更具体而言,本发明涉及用于细粒存储器保护的设备和方法。
相关技术描述
虚拟机系统是包括支持一个或多个虚拟机(VM)的虚拟机监视器(VMM)的计算机系统。虚拟机监视器(VMM)是控制物理计算机硬件并给在虚拟机(VM)内执行的程序呈现它们正在在真正的物理计算机硬件上执行的假象的软件程序。每一个VM都通常充当由"访客"操作系统(OS)(即,由VMM托管的OS)控制的自包含平台,该平台执行时好像它在真实机器上运行,而不是在VM内。
为实现此模仿,VM内的某些操作(例如,配置设备硬件的企图)必须被VMM捕捉并模仿,VMM将执行模仿虚拟硬件资源(例如,被模仿的设备)以维持访客OS正在操纵真正硬件的假象的操作。如此,在虚拟机系统中,从VM到VMM的过渡以及反向过渡将以某种频率发生,该频率取决于VMM必须模仿的指令和事件的数量。
在虚拟存储器系统中,由软件("虚拟"地址)所生成的存储器地址被硬件转换为然后被用来引用存储器的物理地址。此转换过程叫做分页,用于执行转换的硬件叫做分页硬件。在许多虚拟存储器系统中,虚拟到物理地址转换由驻留在存储器中的一组数据结构(叫做“页面表”)中的系统软件进行定义。现代的虚拟存储器系统通常在系统的中央处理单元(CPU)中包括专门的缓存结构,常常叫做转换后备缓冲器(TLB),该结构存储有关虚拟到物理地址转换的信息,并能够比存储器快得多地被访问。
当OS停止执行一个进程并开始执行另一个进程时,它通常将通过指示硬件使用新的一组分页结构,来改变地址空间。这可以使用软件或硬件机制来实现,以使TLB的全部内容作废或删除。比进程之间的变化更频繁的是进程和OS软件之间的控制的过渡。由于此,如果TLB在每一个这样的过渡中被作废,则系统性能将受到严重损失。如此,现代的操作系统通常被构建为不要求地址空间的更改。每个地址空间中的(虚拟)存储器地址的一个或多个范围被保护,以便只有OS才可以访问那些范围中的地址。
某些虚拟机系统可以支持多层VMM。例如,有时被称为虚拟机扩展(VMX)根的单一VMM直接控制CPU。此VMX根可以在访客VM中支持本身可以支持访客VM的其他“访客”VMM。对于分层的支持可以通过软件、硬件,或两者的组合来提供。
VMM可以在页面级别监视运行时数据结构完整性。即,读/写特权及其他存储器策略在存储器页面的粒度实现,存储器页面通常是4k字节尺寸。OS内的带内(IB)代理通过VMX根来配置这些策略。对被监视的页面的写入访问生成虚拟化异常(VE)。利用现有的硬件,这会导致IB代理对存储器访问者进行检查/列出白名单。由于此架构,假共享的数据结构(相同4K页面上的数据)可能会导致必须被IB代理蛮力过滤的大量的VE事件。子页面(小于4K)区域保护适用的使用情况的其他示例是:用于虚拟化的存储器映射的输入/输出(MMIO)设备存储器区域;用于页面表中的稀疏映射的页面表保护;对VM存储器设立检查点;以及,支持存储器监视仅限于用于VM自省的4K粒度的应用程序编程接口(API)的任何VMM架构。
附图简述
结合以下附图,从以下具体实施方式中可获得对本发明更好的理解,其中:
图1A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图;
图1B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图;
图2是根据本发明的实施例的具有集成的存储器控制器和图形器件的单核处理器和多核处理器的框图;
图3示出根据本发明的一个实施例的系统的框图;
图4示出根据本发明的实施例的第二系统的框图;
图5示出根据本发明的实施例的第三系统的框图;
图6示出了根据本发明的实施例的芯片上系统(SoC)的框图;
图7示出根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图;
图8示出了用于细粒存储器保护的架构的一个实施例;
图9示出了用于细粒存储器保护的一个实施例中使用的更多细节;
图10示出了在一个实施例中在分层表结构中执行的查询;
图11示出了用于细粒存储器保护的方法的一个实施例;以及
图12示出了用64位向量表示读取(R)、写入(W)、执行禁用(XD),以及脏位的实施例。
具体实施方式
在下面的描述中,出于说明目的,阐述了众多具体细节以便提供对以下描述的本发明的实施例的全面理解。然而,对本领域的技术人员显而易见的是,可以在没有这些具体细节中的一些细节的情况下实施本发明的实施例。在其他实例中,公知的结构和设备以框图形式示出,以避免使本发明实施例的基本原理不清楚。
示例性处理器架构和数据类型
图1A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图1B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图1A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将描述无序方面。
在图1A中,处理器流水线100包括获取级102、长度解码级104、解码级106、分配级108、重命名级110、调度(也称为分派或发布)级112、寄存器读取/存储器读取级114、执行级116、写回/存储器写入级118、异常处理级122以及提交级124。
图1B示出了处理器核190,包括耦合到执行引擎单元150的前端单元130,该执行引擎单元和该前端单元两者都耦合到存储器单元170。核190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核190可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。
前端单元130包括耦合到指令高速缓存单元134的分支预测单元132,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)136,该指令转换后备缓冲器耦合到指令获取单元138,该指令获取单元耦合到解码单元140。解码单元140(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元140可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核190包括(例如,在解码单元140中或否则在前端单元130内的)微代码ROM或存储某些宏指令的微代码的其他介质。解码单元140耦合到执行引擎单元150中的重命名/分配器单元152。
执行引擎单元150包括耦合到引退单元154的重命名/分配器单元152和一组一个或多个调度器单元156。调度器单元156表示任意数量的不同的调度器,包括预留站、中心指令窗口等等。调度器单元156耦合到物理寄存器组单元158。每个物理寄存器组单元158表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元158包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元158与引退单元154重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元154和物理寄存器组单元158耦合到执行群集160。执行群集160包括一组一个或多个执行单元162和一组一个或多个存储器访问单元164。执行单元162可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能组的若干个执行单元,但是,其他实施例可以只包括一个执行单元或都执行所有功能的多个执行单元。调度器单元156、物理寄存器组单元158以及执行群集160被示为可能是多个,因为某些实施例对于某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线,每一个流水线都具有它们自己的调度器单元、物理寄存器组单元和/或执行群集——并且在单独的存储器访问流水线的情况下,实现了其中只有此流水线的执行群集具有存储器访问单元164的某些实施例)。还应该理解,使用单独的流水线,这些流水线中的一个或多个可以是无序发出/执行,其余的是有序的。
存储器访问单元164的集合耦合到存储器单元170,该存储器单元包括耦合到数据高速缓存单元174的数据TLB单元172,其中数据高速缓存单元耦合到二级(L2)高速缓存单元176。在一个示例性实施例中,存储器访问单元164可以包括加载单元、存储地址单元以及存储数据单元,其中每一个都耦合到存储器单元170中的数据TLB单元172。指令高速缓存单元134进一步耦合到存储器单元170中的2级(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))的逻辑,从而允许很多多媒体应用使用的操作能够使用紧缩数据来执行。
应该理解,核可以支持多线程(执行操作或线程的两个或更多并行组),并可以以各种方式达到这一目的,包括时间切片多线程,同时的多线程(其中,单个物理核为物理核同时正在多线程处理的每一个线程提供一种逻辑核),或其组合(例如,时间切片获取和解码和此后的同时的多线程处理,诸如在Hyperthreading技术中)。
尽管寄存器重命名是在无序执行的上下文中描述的,但是,应该理解,寄存器重命名可以用于有序架构中。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元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等的多个加工技术中的任何一个技术将处理器200实现在一个或多个衬底上。
存储器层次结构包括核内的一级或多级缓存,一组或一个或多个共享高速缓存器单元206,以及耦合到集成的存储器控制器单元214组的外部存储器(未示出)。共享高速缓存器单元206组可以包括一个或多个中级缓存,诸如2级(L2)、3级(L3)、4级(L4),或其他级别的缓存,末级缓存(LLC),和/或其组合。尽管在一个实施例中,基于环的互连单元212将集成图形逻辑208、共享高速缓存单元206的集合以及系统代理单元210/集成存储器控制器单元214互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,维持一个或多个高速缓存单元206和核202-A-N之间的一致性(coherency)。
在某些实施例中,核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(可以在单独的芯片上);GMCH 390包括耦合到存储器340和协处理器345的存储器和图形控制器;IOH350将输入/输出(I/O)设备360耦合到GMCH 390。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文中所描述的),存储器340和协处理器345直接耦合到处理器310以及控制器中枢320,该控制器中枢与IOH 350处于单个芯片中。
在图3中利用虚线表示额外的处理器315的可任选的本质。每一处理器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分别是处理器310和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所示,IMC 472和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 Express总线或另一第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图4所示,各种I/O设备414以及将第一总线416耦合到第二总线420的总线桥418可以耦合到第一总线416。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理器(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器415被耦合到第一总线416。在一个实施例中,第二总线420可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线420,在一个实施例中这些设备包括例如键盘/鼠标422、通信设备427以及诸如可包括指令/代码和数据430的盘驱动器或其他大容量存储设备的存储单元428。此外,音频I/O 424可以被耦合至第二总线420。请注意,其他架构也是可以的。例如,代替图4的点对点架构,系统可以实现多点分支总线或其他这样的架构。
现在请参看图5,所示是根据本发明的一个实施例的第二更具体的示例性系统500的框图。图4和5中的相同元素带有相同参考编号,从图5省略了图4的某些方面,以便不至于使图5的其他方面变得模糊。
图5示出了处理器470、480可以分别包括集成的存储器和I/O控制逻辑(“CL”)472和482。因此,CL 472、482包括集成存储器控制器单元并包括I/O控制逻辑。图5示出了不仅存储器432,434耦合到CL 472,482,而且I/O设备514也耦合到控制逻辑472,482。传统I/O设备515被耦合至芯片组490。
现在请参看图6,所示是根据本发明的实施例的SoC 600的框图。图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二进制代码706,该x86二进制代码706可以原生地由带有至少一个x86指令集核的处理器716来执行。具有至少一个x86指令集核的处理器716表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其他程序的目标代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器704表示用于生成x86二进制代码706(例如,目标代码)的编译器,该二进制代码706可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器716上执行。类似地,图7示出了可以使用替代指令集编译器708来编译高级语言702的程序以生成替代指令集二进制代码710,该替代指令集二进制代码720可以原生地由没有至少一个x86指令集核的处理器714(例如,带有执行位于CA的Sunnyvale的MIPSTechnologies的MIPS指令集和/或执行位于CA的Sunnyvale的ARM Holdings的ARM指令集的核的处理器)来执行。指令转换器712被用来将x86二进制代码706转换成可以由不具有x86指令集核的处理器714原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码710相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器712通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码706的软件、固件、硬件或其组合。
用于细粒存储器保护的设备和方法
本发明的一个实施例减少由于使用允许VMM写保护任何一个页面的子页面区域的技术的页面共享所导致的存储器违犯的量。在一个实施例中,每一个存储器页面都是4k尺寸,子页面区域是128B。然而,本发明的基础原理不仅限于任何特定子页面区域或页面尺寸。
在一个实施例中,每一个子页面区域的许可都维持在VMM管理的表中。对于子页面,利用128B粒度,可以用64位值表示“非写入”和“非执行”许可(例如,将2位分配给每一个子页面,一个指出“非写入”,一个指出“非执行”)。
图8示出了包括在处理器820上执行以为一个或多个OS内核801提供执行环境的VMM 810的一个实施例。在一个实施例中VMM内的子页面策略模块812(例如,VMX-根)实现此处所描述的技术,以生成子页面存储器视图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可以执行“页面步行(page walk)”操作,以使用虚拟地址来访问页面表900,并标识对应于该虚拟地址的物理地址。在一个实施例中,页面步行逻辑905包括集成在处理器的存储器管理单元内的页未命中处理程序(PMH)。一旦标识了物理地址,就可以在存储器中的指定的物理位置访问存储器页面的位置。
在图9中未示出通常用于虚拟到物理地址转换的各种其他组件,以避免模糊本发明的基础原理。例如,页面表条目可以被缓存在处理器内的转换后备缓冲器(TLB)中,以便更快地访问。如果页面表条目位于TLB内,则可以通过处理器的存储器管理单元(MMU)直接确定页面的物理地址,而无需页面步行(这通常涉及从系统存储器访问页面表900,因此,消耗更多周期)。本发明的基础原理相同,不管涉及页面的信息是从TLB 909中检索还是直接从页面表900中检索。
在本发明的一个实施例中,包括在每一个页面表条目内的SPP启用位903指出是否向对应的存储器页面应用子页面保护。例如,在图9中的页面表900中,对于与VA2和VA3相关联的条目,SPP启用位被设置为1。在一个实施例中,如果对于特定页面启用了SPP,那么,子页面保护(SPP)模块910实现此处所描述的技术,以在一个或多个子页面保护表915中执行查找。在一个实施例中,为执行查找,子页面保护模块910将页面的物理地址(从页面步行模块905或TLB 909提供的)与标识存储器中的SPPT 915的基址位置的子页面保护表指针(SPPTP)912组合。在一个实施例中,SPPTP 912是虚拟机控制结构(VMCS)911内的64位字段。然而,SPPTP可以以各种不同的方式实现,而仍符合本发明的基础原理。
在一个实施例中,也可以使用与每一个页面相关联的写入许可位904(潜在地,一个或多个其他许可位),来与子页面保护表915相结合,确定该页面的许可。例如,在一个实施例中,将页面级别许可904与子页面写入保护(在SPPT 915中指定的)组合,以确定每一个子页面的写入许可。例如,在一个实施例中,如果页面的写入许可904被设置为0,那么,对于子页面,写入不被准许,除非在子页面保护表中,写入许可位被设置为1。在另一个实施例中,如果页面的写入许可904被设置为0,那么,对于子页面,写入不被准许,不管在子页面保护表中指出的设置是什么。类似地,如果页面的写入许可914被设置为1,那么,对于子页面,写入被准许,除非在子页面保护表915中,写入许可位被设置为0。在另一个实施例中,如果页面的写入许可914被设置为1,那么,对于所有子页面,写入被准许,不管在子页面保护表中指出的设置是什么。如此,写入许可位904和子页面保护位可以以各种方式组合,以确定每一个子页面的写入许可。
在一个实施例中,SPPT 915包括表的层次结构,每一个表都通过存储器页面的物理地址的不同的部分来索引。在图10中用图形方式示出了根据一个这样的实施例的查询。如此实施例所示,SPPTP 912与物理地址的最高物理地址位组合,以标识级别5(L5)表中的条目。该条目中所包含的地址是级别4(L4)表的基本地址。L4表中的条目通过将基本地址与页面的物理地址位39-47组合来定位。L4条目标识L3表的基本地址,并与物理地址的位30-38组合,以标识L3表中的包含L2表的基本地址的条目。然后,位12-29与此基本地址相结合,以标识L2表中的标识L1表的基本地址的条目。包含页面的所有子页面许可的64位子页面(SP)向量通过组合L1表的基本地址与物理地址的位12-20来标识。然后,使用物理地址位7-11,在64位SP向量内标识写入许可位。在一个实施例中,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的懒惰的填充发生。在未命中时,在一个实施例中,物理地址可以被保存在VMCS中(用作用于随后的请求的缓存)。否则,VM退出将保存数据,如EPT违犯当前做的那样(例如,NMI阻止、IDT向量化等等)。
如果没有未命中,那么,SPPT步行可以标识页面的32位写入许可位图。处理器可以将位图缓存在数据转换后备缓冲器(DTLB)中或相关的/其他结构,用于随后的访问。
SPPT失效特征:
在一个实施例中,VMM可以修改SPPT中的子页面保护位,并可以通过INVEPT指令,使组合的映射作废。这也导致缓存的子页面许可的清空。在一个实施例中,扩展的页面表指针(EPTP)开关(例如,通过VMWRITE或VMFUNC指令的执行)可以导致缓存的关于子页面许可的任何信息。对于地址空间ID(ASID)未命中情况,这可能需要TLB清空(例如,分配新ASID)。在一个实施例中,在非ASID标记的结构(例如,数据TLB、扩展的页面目录指针(EPDP)和扩展的页面目录条目(EPDE)缓存)中也使条目作废。
地址(A)/数据(D)位更新处理:
在一个实施例中,对于访客分页结构和虚拟化高级可编程中断控制器(APIC)访问,子页面保护(SPP)页面被视为“只读”。对于Intel架构(IA)-32A/D位更新:(a)如果将对SPP页面作出访客A/D位更新,则生成EPT违犯;(b)退出资格与页面在EPT(非新的数据)中被只读的情况相同;(c)VMM可以利用现有的机制,处理这样的EPT违犯。对于EPT A/D位架构:(a)如果EPT A/D位被启用,则访客页面步行可以视为对于EPT的写入;(b)如果EPT A/D位被启用,那么,对SPP页面的访客页面行走导致EPT违犯;(c)与VMM连接以监视OS页面表的受启发OS可以通过在包含关键映射的页面上预先设置A/D位,以便VMM不必一定模仿具有子页面监视的区域中的写保护的页面上的A/D更新,来有效率地使用子页面保护。
向单页面的写入,多个子页面区域被访问:
这种情况的一个示例是8字节MOV,在页面内,它是4字节对齐的。在一个实施例中,处理器将检查两个子页面的可写入性。如果两个子页面都是可写入的,则写入被允许。如果任一子页面都不可写入,则写入导致EPT违犯。
跨多个页面的写入:
这种情况的一个示例是8字节MOV,它是4字节对齐的,跨在页面边界上。在一个实施例中,处理器将检查任一页面是否具有子页面保护。如果任一页面都没有子页面保护,则通常每个EPT地处理写入。如果任一子页面都具有子页面保护,则写入导致EPT违犯。
处理带有多个写入的指令
这种情况的一个示例是可以生成向多个页面的多个写入的FXSAVE指令。处理器可以对待存储探针,正如任何其他存储那样。在一个实施例中,如果探测的特定地址不可写入,则处理器将生成EPT违犯。这会导致EPT违犯在写入某些数据之后发生。
在一个实施例中,如果探测的页面具有子页面保护,则改变存储探测导致EPT违犯。在一个实施例中,在执行任何写入之前,处理器探测高和低字节。
APIC虚拟化交互:
如果VMM配置EPT PTE以使得物理地址位于“APIC-访问地址”中并且SPP=1,则可导致高级可编程中断控制器(APIC)交互。在一个实施例中,这被视为无效使用。在没有子页面保护的情况下,完全APIC虚拟化提供细粒度的控制。
带有EPTP切换的交互:
在一个实施例中,子页面保护表指针(SPPTP)不会应扩展的页面表指针(EPTP)开关而改变。当前使用情况要求特定EPT层次结构以访问!W子页面。对于这些EPT层次结构,这通过设置为0的EPTE SPP位来实现。
在一个实施例中,可以通过新VMFUNC指令来切换SPPT,VMFUNC指令通过存储器描述符,切换下列:
<CR3,EPT,SPPT>VMFUNC leaf 2
<CR3,EPT>VMFUNC leaf 1
<EPTP>VMFUNC leaf 0
额外的实施例:
上文所描述的架构可以被映射到各种实现。建议的架构到处理器实现的一个直接的映射是,由于处理器页未命中处理程序(PMH)步行在EPT结构中具有设置的SPP位的分页结构,对SPPT执行查询。不要求EPT中的SPP位的交替的实现实施例如下。VMM分配一块连续的存储器区域,它预留该区域,用作页面的“子页面可监视的池”。当OS或OS服务需要要求子页面监视或者被动态地设置为在子页面级别被监视的页面时,OS服务请求VMM分配这些池页面中的一个。VMM将OS映射的全局物理地址(GPA)(在OS PT中)映射到从页面的池分配的页面的隐藏的物理地址(HPA)。在某些环境中,VMM可以将内容从原始GPA页面复制到从此池分配的页面。VMM还编程处理器的范围寄存器基址和掩码中的一个,以覆盖连续的存储器区域。范围寄存器允许处理器检测何时对池中的页面中的一个作出RW或X访问。VMM另外还编程SPPT,如在上文的架构中定义的,以为此池内的所有页面指定每个页面的子页面策略。在一个实施例中,对存储器区域内的任何页面的任何RW或X访问都会导致处理器微代码协助,其中,CPU对照SPPT中的该HPA的子页面策略检查,并允许或禁止访问。
软件实现:
在一个实施例中,当对于一组页面需要子页面许可时,VMM利用此组页面的映射来填充SPPT,指定每一个页面的子页面许可位向量。对于落在写入禁止的子页面区域内的访问,VMM处理产生的EPT违犯或访客软件处理产生的虚拟化异常(#VE)。对于落在写入允许的子页面区域内的访问,不生成产生的EPT违犯或#VE。
嵌套的虚拟化交互:
在一个实施例中,对于SPPT,可能不启用根VMM。在此情况下,它不暴露它,并且不虚拟化它。在另一个实施例中,对于SPPT,根VMM被启用,但是,不使用SPPT其本身,而是虚拟化它。在另一个实施例中,对于SPPT,根VMM被启用,并且使用它其本身,但是,不向访客实体暴露它。这里,没有SPPT嵌套影响。在再一个实施例中,对于SPPT,根VMM被启用,并且使用它其本身,并且向访客实体暴露它(例如,虚拟化它)。在下面两部分比较详细地描述了这最后两个实施例。
对于SPPT,根VMM被启用,不使用它本身,而是虚拟化它:
在一个实施例中,根VMM遮蔽SPPT结构,以保留对HPA的所有引用(包括SPPT)。由于通过一般存储器访问指令来访问SPPT,因此,根VMM将需要编辑控制SPPT访客存储器页面。访客VMM必须在更新SPPT(可以从根VMM正确地虚拟化该SPPT)之后执行INVEPT指令(EPTP上下文)。在一个实施例中,INVEPT指令清除任何SPPT缓存(对于相同范围)、全局、EPTP以及特定地址(如果支持的话)。
对于SPPT,根VMM被启用,使用它本身,并向访客暴露它:
在此实施例中,根VMM遮蔽SPPT结构,以保留对HPA的所有引用(包括SPPT)。对于冲突的SPPT策略,对于由于访客SPPT的违犯,根VMM可以将最保守的组合编码为供处理器所使用的SPPT。根VMM可以向访客VMM,模仿#VE/VMexit。由于通过一般存储器访问指令来访问SPPT,因此,根VMM将需要编辑控制SPPT访客存储器页面。访客VMM可以在更新SPPT(可以从根VMM正确地虚拟化该SPPT)之后执行INVEPT指令(EPTP)。在一个实施例中,INVEPT指令可以清除任何SPPT缓存(对于相同范围)、全局、EPTP以及特定地址(如果支持的话)。
图12示出了用64位向量表示读取(R)、写入(W)、执行禁用(XD)以及脏(D)位的本发明的一个实施例中使用的SPP位向量。如图所示,在一个实施例中,偶数位用于确定W和XD指示符,奇数位用于确定R和D指示符。图12中所示出的表1202示出了R、W以及XD的不同的值的不同的结果(例如,1值表示启用,0值表示禁用)。在一个实施例中,CPU可以简单地更新向其写入的子页面的脏(D)位,并且可能不会导致错误。
本发明的实施例可以包括以上描述的各个步骤。这些步骤可在用于致使通用或专用处理器执行所述步骤的机器可执行指令中实现。另选地,这些步骤可由包含用于执行这些步骤的硬连线逻辑的专用硬件组件来执行,或由编程的计算机组件和自定义的硬件组件的任何组合来执行。
如在此所述的,指令可以指硬件的具体配置,如被配置成执行特定操作或具有预定功能的专用集成电路(ASIC)或者存储在嵌入非暂态计算机可读介质中的存储器中的软件指令。如此,图形中所示出的技术可以使用在一个或多个电子设备(例如,终端站、网络元件等等)上存储并执行的代码和数据来实现。此类电子设备通过使用诸如非暂态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)之类的计算机机器可读介质和暂态计算机机器可读通信介质(例如,电、光、声或其它形式的传播信号——诸如载波、红外信号、数字信号等)来(内部地和/或通过网络与其他电子设备)存储和传递代码和数据。另外,这类电子设备一般包括与一个或多个其它组件耦合的一组一个或多个处理器,所述一个或多个其它组件例如是一个或多个存储设备(非暂态机器可读存储介质)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)以及网络连接。该组处理器和其它组件的耦合一般是通过一个或多个总线和桥(也称总线控制器)实现的。存储设备和携带网络流量的信号分别表示一个或多个机器可读存储介质以及机器可读通信介质。因此,给定电子设备的存储设备通常存储代码和/或数据以供在该电子设备的一个或多个处理器上执行。当然,本发明的实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。贯穿此详细描述,为解释起见,阐明了众多具体细节以提供对本发明的全面理解。然而,本领域技术人员应当领会,没有这些具体细节中的一些细节也可实践本发明。在某些实例中,并不详细描述众所周知的结构和功能以免模糊本发明的主题。因此,本发明的范围和精神应根据所附权利要求书来判断。
Claims (24)
1.一种用于细粒存储器保护的方法,包括:
使用虚拟地址来执行第一查找操作,以标识存储器页面的物理地址,所述存储器页面包括多个子页面;
判断对于所述存储器页面,是否启用子页面许可;
如果子页面许可被启用,那么,执行第二查找操作,以确定与所述存储器页面的所述子页面中的一个或多个相关联的许可;以及,
实现与所述一个或多个子页面相关联的所述许可。
2.如权利要求1所述的方法,其特征在于,执行所述第一查找操作包括从存储在存储器中的页面表检索所述物理地址。
3.如权利要求1所述的方法,其特征在于,执行所述第一查找操作包括从转换后备缓冲器检索所述物理地址。
4.如权利要求1所述的方法,其特征在于,所述存储器页面是4k尺寸,所述子页面中的每一个是128B尺寸。
5.如权利要求1所述的方法,其特征在于,判断子页面许可是否启用包括:
标识与所述存储器页面相关联的页面表或转换后备缓冲器TLB中的条目;以及
读取与所述条目相关联的至少一个子页面许可启用位,如果许可被启用,则所述子页面许可启用位具有第一值,如果许可未被启用,则所述子页面许可启用位具有第二值。
6.如权利要求5所述的方法,其特征在于,所述第二查找包括:
确定子页面保护表SPPT的位置;以及
使用与所述存储器页面相关联的所述物理地址,查询所述子页面保护表SPPT,以标识与所述存储器页面的至少一个子页面相关联的至少一个子页面许可位。
7.如权利要求6所述的方法,其特征在于,实现与所述一个或多个子页面相关联的所述许可包括:
基于与所述子页面保护表SPPT中的所述子页面相关联的所述许可位的值,判断是否允许对子页面的写入操作。
8.如权利要求7所述的方法,其特征在于,确定所述子页面保护表SPPT的所述位置包括读取存储在虚拟机监视器VMM的虚拟机控制结构VMCS中的子页面保护表指针SPPTP,其中将所述存储器页面的所述物理地址的至少一部分与所述子页面保护表指针SPPTP组合,以定位所述子页面许可位。
9.如权利要求6所述的方法,其特征在于,所述子页面保护表SPPT包括表的分层的集合,其特征在于,所述存储器页面的所述物理地址的不同的部分用于索引所述表的分层的集合中的所述不同的表中的每一个。
10.一种用于细粒存储器保护的设备,包括:
处理器,用于执行程序代码并处理数据;
所述处理器上的地址转换逻辑,用于使用虚拟地址来执行第一查找操作,以标识存储器页面的物理地址,所述存储器页面包括多个子页面;
子页面许可逻辑,用于判断对于所述存储器页面,是否启用子页面许可;
所述子页面许可逻辑用于:如果子页面许可被启用,则执行第二查找操作,以确定与所述存储器页面的所述子页面中的一个或多个相关联的许可;以及
所述子页面许可逻辑用于实现与所述一个或多个子页面相关联的所述许可。
11.如权利要求10所述的设备,其特征在于,执行所述第一查找操作包括从存储在存储器中的页面表检索所述物理地址。
12.如权利要求10所述的设备,其特征在于,执行所述第一查找操作包括从转换后备缓冲器检索所述物理地址。
13.如权利要求10所述的设备,其特征在于,所述存储器页面是4k尺寸,其特征在于,所述子页面中的每一个是128B尺寸。
14.如权利要求10所述的设备,其特征在于,判断子页面许可是否启用包括:
标识与所述存储器页面相关联的页面表或转换后备缓冲器TLB中的条目;以及
读取与所述条目相关联的至少一个子页面许可启用位,如果许可被启用,则所述子页面许可启用位具有第一值,如果许可未被启用,则所述子页面许可启用位具有第二值。
15.如权利要求14所述的设备,其特征在于,所述第二查找包括:
确定子页面保护表SPPT的位置;以及
使用与所述存储器页面相关联的所述物理地址,查询所述子页面保护表SPPT,以标识与所述存储器页面的至少一个子页面相关联的至少一个子页面许可位。
16.如权利要求15所述的设备,其特征在于,实现与所述一个或多个子页面相关联的所述许可包括:
基于与所述子页面保护表SPPT中的所述子页面相关联的所述许可位的值,判断是否允许对子页面的写入操作。
17.如权利要求16所述的设备,其特征在于,确定所述子页面保护表SPPT的所述位置包括读取存储在虚拟机监视器VMM的虚拟机控制结构VMCS中的子页面保护表指针SPPTP,其特征在于,所述存储器页面的所述物理地址的至少一部分与所述子页面保护表指针SPPTP组合,以定位所述子页面许可位。
18.如权利要求15所述的设备,其特征在于,所述子页面保护表SPPT包括表的分层的集合,其特征在于,所述存储器页面的所述物理地址的不同的部分用于索引所述表的分层的集合中的所述不同的表中的每一个。
19.一种用于细粒存储器保护的系统,包括:
虚拟机监视器VMM;
一个或多个访客操作系统OS,在由所述虚拟机监视器VMM支持的一个或多个虚拟机VM内执行;
子页面许可逻辑,由所述虚拟机监视器VMM实现,用于判断对于存储器页面是否启用子页面许可;
所述子页面许可逻辑用于:如果子页面许可被启用,则执行查找操作,确定与所述存储器页面的所述子页面中的一个或多个相关联的许可;以及
应用,在所述操作系统OS中的一个内执行,用于实现与所述一个或多个子页面相关联的许可。
20.如权利要求19所述的系统,其特征在于,判断子页面许可是否启用包括:
标识与所述存储器页面相关联的页面表或转换后备缓冲器TLB中的条目;以及
读取与所述条目相关联的至少一个子页面许可启用位,如果许可被启用,则所述子页面许可启用位具有第一值,如果许可未被启用,则所述子页面许可启用位具有第二值。
21.如权利要求20所述的系统,其特征在于,所述查找操作包括:
确定子页面保护表SPPT的位置;以及
使用与所述存储器页面相关联的物理地址,查询所述子页面保护表SPPT,以标识与所述存储器页面的至少一个子页面相关联的至少一个子页面许可位。
22.如权利要求21所述的系统,其特征在于,实现与所述一个或多个子页面相关联的所述许可包括:
基于与所述子页面保护表SPPT中的所述子页面相关联的所述许可位的值,判断是否允许对子页面的写入操作。
23.如权利要求22所述的系统,其特征在于,确定所述子页面保护表SPPT的所述位置包括读取存储在所述虚拟机监视器VMM的虚拟机控制结构VMCS中的子页面保护表指针SPPTP,其中所述存储器页面的所述物理地址的至少一部分与所述子页面保护表指针SPPTP组合,以定位所述子页面许可位。
24.如权利要求21所述的系统,其特征在于,所述子页面保护表SPPT包括表的分层的集合,所述存储器页面的所述物理地址的不同的部分用于索引所述表的分层的集合中的所述不同的表中的每一个。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/320,334 | 2014-06-30 | ||
US14/320,334 US9335943B2 (en) | 2014-06-30 | 2014-06-30 | Method and apparatus for fine grain memory protection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105320611A CN105320611A (zh) | 2016-02-10 |
CN105320611B true CN105320611B (zh) | 2018-06-12 |
Family
ID=54930501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510289650.7A Expired - Fee Related CN105320611B (zh) | 2014-06-30 | 2015-05-29 | 用于细粒存储器保护的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9335943B2 (zh) |
CN (1) | CN105320611B (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9703703B2 (en) * | 2014-12-23 | 2017-07-11 | Intel Corporation | Control of entry into protected memory views |
US9880768B2 (en) | 2015-01-27 | 2018-01-30 | Barefoot Networks, Inc. | Dynamic memory reallocation for match-action packet processing |
US10944764B2 (en) * | 2015-02-13 | 2021-03-09 | Fisher-Rosemount Systems, Inc. | Security event detection through virtual machine introspection |
US9940056B2 (en) * | 2015-02-23 | 2018-04-10 | Barefoot Networks, Inc. | Coding scheme for identifying location of action entries |
US10515023B2 (en) * | 2016-02-29 | 2019-12-24 | Intel Corporation | System for address mapping and translation protection |
US9946657B1 (en) * | 2016-03-01 | 2018-04-17 | Nutanix, Inc. | Spilling small cache entries to a solid state device |
US20170255569A1 (en) * | 2016-03-01 | 2017-09-07 | Qualcomm Incorporated | Write-allocation for a cache based on execute permissions |
US10664183B1 (en) | 2016-07-25 | 2020-05-26 | Oracle International Corporation | Method and apparatus for storing memory attributes |
US10241931B2 (en) * | 2016-07-29 | 2019-03-26 | Advanced Micro Devices, Inc. | Controlling access to pages in a memory in a computing device |
US10169244B2 (en) | 2016-07-29 | 2019-01-01 | Advanced Micro Devices, Inc. | Controlling access to pages in a memory in a computing device |
US10810321B2 (en) | 2016-08-11 | 2020-10-20 | Intel Corporation | Secure public cloud |
US11989332B2 (en) | 2016-08-11 | 2024-05-21 | Intel Corporation | Secure public cloud with protected guest-verified host control |
US10303899B2 (en) | 2016-08-11 | 2019-05-28 | Intel Corporation | Secure public cloud with protected guest-verified host control |
US10691482B2 (en) | 2016-08-11 | 2020-06-23 | Intel Corporation | Systems, methods, and apparatus for securing virtual machine control structures |
US10176007B2 (en) | 2016-08-30 | 2019-01-08 | Red Hat Israel, Ltd. | Guest code emulation by virtual machine function |
US10180854B2 (en) * | 2016-09-28 | 2019-01-15 | Intel Corporation | Processor extensions to identify and avoid tracking conflicts between virtual machine monitor and guest virtual machine |
US10725807B2 (en) | 2016-10-13 | 2020-07-28 | Red Hat Israel, Ltd. | Page table entry caching for virtual device emulation |
US10635479B2 (en) * | 2016-12-19 | 2020-04-28 | Bitdefender IPR Management Ltd. | Event filtering for virtual machine security applications |
US10528746B2 (en) * | 2016-12-27 | 2020-01-07 | Intel Corporation | System, apparatus and method for trusted channel creation using execute-only code |
CN107450962B (zh) * | 2017-07-03 | 2020-04-24 | 北京东土科技股份有限公司 | 一种虚拟化运行环境下的异常处理方法、装置及系统 |
US10686605B2 (en) | 2017-09-29 | 2020-06-16 | Intel Corporation | Technologies for implementing mutually distrusting domains |
US10769272B2 (en) | 2017-09-29 | 2020-09-08 | Intel Corporation | Technology to protect virtual machines from malicious virtual machine managers |
US10671737B2 (en) | 2017-11-10 | 2020-06-02 | Intel Corporation | Cryptographic memory ownership table for secure public cloud |
US10664300B2 (en) | 2017-12-01 | 2020-05-26 | Red Hat, Inc. | Resetting persistent balloon memory for fragmentation reduction |
US11119926B2 (en) * | 2017-12-18 | 2021-09-14 | Advanced Micro Devices, Inc. | Region based directory scheme to adapt to large cache sizes |
US11520611B2 (en) | 2018-08-20 | 2022-12-06 | Intel Corporation | Secure public cloud using extended paging and memory integrity |
CN109446835A (zh) * | 2018-09-30 | 2019-03-08 | 龙芯中科技术有限公司 | 数据访问控制方法、装置及设备 |
KR20200099882A (ko) * | 2019-02-15 | 2020-08-25 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11544093B2 (en) | 2019-09-27 | 2023-01-03 | Intel Corporation | Virtual machine replication and migration |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740941A (zh) * | 2004-08-25 | 2006-03-01 | 微软公司 | 用于程序代码安全执行的系统和方法 |
CN102473092A (zh) * | 2009-07-24 | 2012-05-23 | 苹果公司 | 索引缓存树 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6907600B2 (en) * | 2000-12-27 | 2005-06-14 | Intel Corporation | Virtual translation lookaside buffer |
WO2009001153A1 (en) * | 2007-06-28 | 2008-12-31 | Nokia Corporation | Memory protection unit in a virtual processing environment |
-
2014
- 2014-06-30 US US14/320,334 patent/US9335943B2/en not_active Expired - Fee Related
-
2015
- 2015-05-29 CN CN201510289650.7A patent/CN105320611B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740941A (zh) * | 2004-08-25 | 2006-03-01 | 微软公司 | 用于程序代码安全执行的系统和方法 |
CN102473092A (zh) * | 2009-07-24 | 2012-05-23 | 苹果公司 | 索引缓存树 |
Also Published As
Publication number | Publication date |
---|---|
CN105320611A (zh) | 2016-02-10 |
US9335943B2 (en) | 2016-05-10 |
US20150378633A1 (en) | 2015-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320611B (zh) | 用于细粒存储器保护的方法和设备 | |
CN107683480B (zh) | 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令 | |
CN106716434B (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
KR101817021B1 (ko) | 보안 메모리 재파티셔닝 | |
CN105190572B (zh) | 用于防止未经授权的堆栈转移的系统和方法 | |
US9959409B2 (en) | Processors, methods, systems, and instructions to change addresses of pages of secure enclaves | |
CN104823173B (zh) | 对预留给处理器逻辑使用的存储器的访问类型保护 | |
CN109690484A (zh) | 在虚拟机进入时转换 | |
US9891936B2 (en) | Method and apparatus for page-level monitoring | |
TWI723080B (zh) | 用於子頁寫入保護的方法及設備 | |
CN108268282A (zh) | 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令 | |
CN109690552A (zh) | 用于判定是否将受保护容器页的加密副本加载到受保护容器存储器中的处理器、方法、系统和指令 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
US20160092371A1 (en) | Method and Apparatus For Deterministic Translation Lookaside Buffer (TLB) Miss Handling | |
CN104969199B (zh) | 实施黑名单分页结构指示值的处理器、方法,以及系统 | |
US20140201422A1 (en) | Determining policy actions for the handling of data read/write extended page table violations | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN104025027B (zh) | 结构访问处理器、方法、系统和指令 | |
CN105027137B (zh) | 用于针对增强型安全检查的页走查扩展的装置和方法 | |
CN107624182A (zh) | 用于选择性的检查针对可转换存储器的页的受保护容器页对常规页类型指示的多页检查提示 | |
CN110162380A (zh) | 用来防止软件侧通道的机制 | |
CN109791584B (zh) | 用于标识和避免虚拟机监视程序和客户虚拟机之间的跟踪冲突的处理器扩展 | |
EP3885921A1 (en) | Apparatuses, methods, and systems for dynamic bypassing of last level cache |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180612 |