用于细粒存储器保护的方法和设备的制造方法
【专利说明】用于细粒存储器保护的方法和设备 【背景技术】 技术领域
[0001] 本发明总体涉及计算机处理器领域。更具体而言,本发明涉及用于细粒存储器保 护的设备和方法。
[0002] 相关技术描述
[0003] 虚拟机系统是包括支持一个或多个虚拟机(VM)的虚拟机监视器(VMM)的计算机 系统。虚拟机监视器(VMM)是控制物理计算机硬件并给在虚拟机(VM)内执行的程序呈现 它们正在在真正的物理计算机硬件上执行的假象的软件程序。每一个VM都通常充当由〃 访客"操作系统(OS) (即,由VMM托管的OS)控制的自包含平台,该平台执行时好像它在真 实机器上运行,而不是在VM内。
[0004] 为实现此模仿,VM内的某些操作(例如,配置设备硬件的企图)必须被VMM捕捉 并模仿,VMM将执行模仿虚拟硬件资源(例如,被模仿的设备)以维持访客OS正在操纵真 正硬件的假象的操作。如此,在虚拟机系统中,从VM到VMM的过渡以及反向过渡将以某种 频率发生,该频率取决于VMM必须模仿的指令和事件的数量。
[0005] 在虚拟存储器系统中,由软件(〃虚拟〃地址)所生成的存储器地址被硬件转换为 然后被用来引用存储器的物理地址。此转换过程叫做分页,用于执行转换的硬件叫做分页 硬件。在许多虚拟存储器系统中,虚拟到物理地址转换由驻留在存储器中的一组数据结构 (叫做"页面表")中的系统软件进行定义。现代的虚拟存储器系统通常在系统的中央处理 单元(CPU)中包括专门的缓存结构,常常叫做转换后备缓冲器(TLB),该结构存储有关虚拟 到物理地址转换的信息,并能够比存储器快得多地被访问。
[0006] 当OS停止执行一个进程并开始执行另一个进程时,它通常将通过指示硬件使用 新的一组分页结构,来改变地址空间。这可以使用软件或硬件机制来实现,以使TLB的全部 内容作废或删除。比进程之间的变化更频繁的是进程和OS软件之间的控制的过渡。由于 此,如果TLB在每一个这样的过渡中被作废,则系统性能将受到严重损失。如此,现代的操 作系统通常被构建为不要求地址空间的更改。每个地址空间中的(虚拟)存储器地址的一 个或多个范围被保护,以便只有OS才可以访问那些范围中的地址。
[0007] 某些虚拟机系统可以支持多层VMM。例如,有时被称为虚拟机扩展(VMX)根的单一 VMM直接控制CPU。此VMX根可以在访客VM中支持本身可以支持访客VM的其他"访客'?ΜΜ。 对于分层的支持可以通过软件、硬件,或两者的组合来提供。
[0008] VMM可以在页面级别监视运行时数据结构完整性。即,读/写特权及其他存储器策 略在存储器页面的粒度实现,存储器页面通常是4k字节尺寸。OS内的带内(IB)代理通过 VMX根来配置这些策略。对被监视的页面的写入访问生成虚拟化异常(VE)。利用现有的硬 件,这会导致IB代理对存储器访问者进行检查/列出白名单。由于此架构,假共享的数据 结构(相同4K页面上的数据)可能会导致必须被IB代理蛮力过滤的大量的VE事件。子 页面(小于4K)区域保护适用的使用情况的其他示例是:用于虚拟化的存储器映射的输入 /输出(MMIO)设备存储器区域;用于页面表中的稀疏映射的页面表保护;对VM存储器设立 检查点;以及,支持存储器监视仅限于用于VM自省的4K粒度的应用程序编程接口(API)的 任何VMM架构。
[0009] 附图简述
[0010] 结合以下附图,从以下【具体实施方式】中可获得对本发明更好的理解,其中:
[0011] 图IA是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命 名的无序发布/执行流水线的框图;
[0012] 图IB是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性 实施例和示例性的寄存器重命名的无序发布/执行架构核的框图;
[0013] 图2是根据本发明的实施例的具有集成的存储器控制器和图形器件的单核处理 器和多核处理器的框图;
[0014] 图3示出根据本发明的一个实施例的系统的框图;
[0015] 图4示出根据本发明的实施例的第二系统的框图;
[0016] 图5示出根据本发明的实施例的第三系统的框图;
[0017] 图6示出了根据本发明的实施例的芯片上系统(SoC)的框图;
[0018] 图7示出根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二 进制指令转换成目标指令集中的二进制指令的框图;
[0019] 图8示出了用于细粒存储器保护的架构的一个实施例;
[0020] 图9示出了用于细粒存储器保护的一个实施例中使用的更多细节;
[0021] 图10示出了在一个实施例中在分层表结构中执行的查询;
[0022] 图11示出了用于细粒存储器保护的方法的一个实施例;以及
[0023] 图12示出了用64位向量表示读取(R)、写入(W)、执行禁用(XD),以及脏位的实施 例。 【具体实施方式】
[0024] 在下面的描述中,出于说明目的,阐述了众多具体细节以便提供对以下描述的本 发明的实施例的全面理解。然而,对本领域的技术人员显而易见的是,可以在没有这些具体 细节中的一些细节的情况下实施本发明的实施例。在其他实例中,公知的结构和设备以框 图形式示出,以避免使本发明实施例的基本原理不清楚。
[0025] 示例性处理器架构和数据类型
[0026] 图IA是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命 名的无序发布/执行流水线的框图。图IB是示出根据本发明的各实施例的要包括在处理 器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的 框图。图IA-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命 名的无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将描述无序 方面。
[0027] 在图IA中,处理器流水线100包括获取级102、长度解码级104、解码级106、分配 级108、重命名级110、调度(也称为分派或发布)级112、寄存器读取/存储器读取级114、 执行级116、写回/存储器写入级118、异常处理级122以及提交级124。
[0028] 图IB示出了处理器核190,包括耦合到执行引擎单元150的前端单元130,该执 行引擎单元和该前端单元两者都耦合到存储器单元170。核190可以是精简指令集计算 (RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又 一选项,核190可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图 形处理器单元(GPGPU)核、或图形核等等。
[0029] 前端单元130包括親合到指令高速缓存单元134的分支预测单元132,该指令高速 缓存单元耦合到指令转换后备缓冲器(TLB) 136,该指令转换后备缓冲器耦合到指令获取单 元138,该指令获取单元耦合到解码单元140。解码单元140 (或解码器)可解码指令,并生 成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个 微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元140可使用 各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵 列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核190包括(例如,在解码单元 140中或否则在前端单元130内的)微代码ROM或存储某些宏指令的微代码的其他介质。 解码单元140耦合到执行引擎单元150中的重命名/分配器单元152。
[0030] 执行引擎单元150包括耦合到引退单元154的重命名/分配器单元152和一组一 个或多个调度器单元156。调度器单元156表示任意数量的不同的调度器,包括预留站、中 心指令窗口等等。调度器单元156耦合到物理寄存器组单元158。每个物理寄存器组单元 158表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据 类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作 为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元158包 括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构 向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元158与引退单元154重叠 以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和 引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器 池等等)。引退单元154和物理寄存器组单元158耦合到执行群集160。执行群集160包括 一组一个或多个执行单元162和一组一个或多个存储器访问单元164。执行单元162可以 对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点)执行各种 操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能组 的若干个执行单元,但是,其他实施例可以只包括一个执行单元或都执行所有功能的多个 执行单元。调度器单元156、物理寄存器组单元158以及执行群集160被示为可能是多个, 因为某些实施例对于某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标 量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线,每 一个流水线都具有它们自己的调度器单元、物理寄存器组单元和/或执行群集一一并且在 单独的存储器访问流水线的情况下,实现了其中只有此流水线的执行群集具有存储器访问 单元164的某些实施例)。还应该理解,使用单独的流水线,这些流水线中的一个或多个可 以是无序发出/执行,其余的是有序的。
[0031] 存储器访问单元164的集合耦合到存储器单元170,该存储器单元包括耦合到数 据高速缓存单元174的数据TLB单元172,其中数据高速缓存单元耦合到二级(L2)高速缓 存单元176。在一个示例性实施例中,存储器访问单元164可以包括加载单元、存储地址单 元以及存储数据单元,其中每一个都耦合到存储器单元170中的数据TLB单元172。指令高 速缓存单元134进一步耦合到存储器单元170中的2级(L2)高速缓存单元176。L2高速 缓存单元176耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。
[0032] 作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线 100 :1)指令取出138执行取出和长度解码级102和104 ;2)解码单元140执行解码级106 ; 3)重命名/分配器单元152执行分配级108和重命名级110 ;4)调度器单元156执行调度 级112 ;5)物理寄存器组单元158和存储器单元170执行寄存器读取/存储器读取级114 ; 执行