CN105474227B - 安全存储器重新分区 - Google Patents
安全存储器重新分区 Download PDFInfo
- Publication number
- CN105474227B CN105474227B CN201480046935.1A CN201480046935A CN105474227B CN 105474227 B CN105474227 B CN 105474227B CN 201480046935 A CN201480046935 A CN 201480046935A CN 105474227 B CN105474227 B CN 105474227B
- Authority
- CN
- China
- Prior art keywords
- page
- processor
- area
- convertible
- security
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/45587—Isolation or security of virtual machine instances
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/10—Providing a specific technical effect
- G06F2212/1048—Scalability
-
- 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/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
Abstract
描述了安全存储器重新分区技术。处理器包含处理器核以及耦合在处理器核与主存储器之间的存储器控制器。主存储器包括包含可转换成安全页或不安全页的可转换页的区的存储器范围。处理器核响应于页转换指令而根据该指令确定要转换的存储器范围内的可转换页,并将可转换页转换成安全页或不安全页中的至少一个。存储器范围还可包含响应于区转换指令而可转换的硬件保留区。
Description
技术领域
本公开涉及计算机系统,更具体地说,涉及存储在计算机系统的存储器中的数据的保护。
背景技术
现代处理器设计成保护存储器中的敏感数据免于硬件和软件攻击。一些处理器提供了用于加密、完整性和重放保护的密码机制。存储器加密保护了存储器驻留的数据的保密性。另一方面,完整性保护防止了攻击者引起对存储器中密文(即,加密数据,与是未加密数据的明文相对)的任何隐藏的修改,并且回放保护消除了密文的任何未检测到的时间上替换。在缺乏此类保护的情况下,对系统进行物理访问的攻击者可记录数据线的快照,并在以后时间点重放。
附图说明
图1是图示根据一个实施例实现用于实现安全存储器的存储器加密引擎(MEE)的计算系统的框图。
图2图示了根据一个实施例包含多个存储器范围的灵活保护范围200的概念层。
图3图示了根据一个实施例的灵活保护范围内的存储器的可转换区和存储器的不可转换区。
图4A是图示根据一个实施例的灵活保护范围的可转换页的状态转变的状态图。
图4B是图示根据一个实施例的灵活保护范围的可转换区的状态转变的状态图。
图5A是根据一个实施例的可转换页的安全存储器重新分区的方法的流程图。
图5B是根据一个实施例的可转换区的安全存储器重新分区的方法的流程图。
图6A是图示根据一个实施例的有序流水线和寄存器重命名阶段、无序发出/执行流水线的框图。
图6B图示了根据一个实施例实现安全存储器重新分区的处理器的微架构的框图。
图7图示了根据一个实施例的处理器的微架构的框图,其包含执行安全存储器重新分区的逻辑电路。
图8是根据一个实现的计算机系统的框图。
图9是根据另一实现的计算机系统的框图。图10是根据一个实现的片上系统的框图。
图11图示了计算系统的框图的另一实现。
图12图示了计算系统的框图的另一实现。
具体实施方式
描述了安全存储器重新分区技术。处理器包含处理器核以及耦合在处理器核与主存储器之间的存储器控制器。存储器范围包括可被转换成安全页或不安全页的可转换页的多个区。处理器上的软件执行可标识要转换的主存储器中的页,并且可使用页转换指令来转换该页。处理器核响应于页转换指令而根据该指令确定要转换的存储器范围内的可转换页,并将可转换页转换成安全页或不安全页。标识可被转换的页是系统软件(例如OS或VMM)的责任。例如,如果OS需要不安全页,则它标识安全页(如果不安全页不可用的话),并在此安全页上执行页转换指令。存储器范围还可包含可响应于本文所描述的区转换指令而转换的多个可转换区(本文也称为硬件保留区)。
存储器加密保护了存储器驻留的数据的保密性。存储器加密主要设计成保护不受被动攻击,其中当数据线移入和移出处理器管芯时,攻击者尝试默默地观察数据线。一些处理器包含加密模块,加密模块在数据被存储到存储器的保护区域中之前对敏感数据加密。在对保护区域进行存储器读取时,对数据线解密,之后馈送到处理器。加密和解密算法可基于用户需要的安全性等级选择。
本文描述的实施例可用于创建安全容器,本文称为安全飞地(enclave)(SE)。SE被设计成保护第三方秘密免于硬件和软件攻击。SE可通过确保飞地秘密当驻留在平台存储器中时被加密存储来保护飞地秘密的保密性。为了提供免于硬件攻击的完全保护,SE需要提供完整性保护和重放保护。在缺乏此类保护的情况下,对系统进行物理访问的攻击者可记录飞地高速缓存线的快照,并在以后时间点重放。为了实现这些保护,SE采用存储器加密引擎(MEE),其提供了用于加密、完整性和重放保护的密码机制。MEE是实现当页在存储器中时保护它们安全的密码功能性的硬件单元。更确切地说,MEE可对被驱逐出处理器的任何高速缓存线加密,如果它属于安全页的话,并且MEE还提供对于安全页的完整性保护和重放保护。常规策略在引导时间静态保留平台存储器范围,并且仅在这个存储器范围上施加密码保护。这个安全存储器范围被称为飞地页高速缓存(EPC)。从EPC满足飞地存储器请求。
如果分区要求随时间改变,则存储器的静态分区可能产生问题。作为一个示例,数据中心在白天执行事务处理和在晚上切换到电影流播基于运行在数据中心上的这些工作负荷可对于安全存储器具有大大不同的要求。在一个实现中,128MB的系统存储器被保留为EPC。然而,为了允许安全服务器应用有效地使用SE,将需要大EPC。用当前的静态分区,这将要求系统存储器的多吉字节分区被保留为EPC,其不能被收回用于不安全使用。此外,具有有限系统存储器的移动装置可要求存储器的动态重新分区允许安全存储器被收回用于不安全用途。
本文描述的实施例提供了灵活EPC架构,该架构提供了操作系统(OS)可访问的页粒度(或区粒度)转换指令。灵活EPC架构将EPC定义为可以是安全或不安全的平台上的可转换存储器,并引入了新保护机制,诸如用于可转换存储器管理的新环0叶功能。使用灵活EPC的本文描述的实施例允许EPC存储器的动态重新分区,进行需要大量EPC存储器的服务器上和具有有限存储器系统的移动平台上的更有效SE实现。
图1是图示根据一个实施例实现用于实现安全存储器的存储器加密引擎(MEE)150的计算系统100的框图。在引导时间由基本输入输出系统(BIOS)设置安全存储器范围(也称为可转换范围)。处理器110执行指令以转换由在处理器110(诸如本文所描述的操作系统(OS)或虚拟机监视器(VMM))上执行的软件所指导的这些可转换范围内的页。还有,由MEE提供的存储器保护在处理器不必须执行用于提供保密性、完整性和重放保护的任何指令的意义上是透明的。例如,当属于安全页的任何高速缓存线被驱逐时,MEE自动向那个高速缓存线提供这些保护。处理器110可用在系统中,该系统包含但不限于台式计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算装置、智能电话、因特网设施或任何其它类型的计算装置。在另一实施例中,处理器110可用在片上系统(SoC)系统中。
计算系统100表示基于从加利福尼亚圣塔克拉拉的英特尔公司可得到的PENTIUMIII™、PENTIUM 4™、Xeon™、Itanium、XScale™ 和/或StrongARM™微处理器的处理系统,不过也可使用其它系统(包含具有其它微处理器的PC、工程设计工作站、机顶盒等)。在一个实施例中,样本系统100执行从华盛顿雷蒙德的微软公司可得到的WINDOWS™操作系统的某个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户界面。从而,本发明的实施例不限于硬件电路和软件的任何特定组合。
处理器110包含执行系统指令的一个或多个处理器核140。处理器核140包含但不限于取指令的预取逻辑、解码指令的解码逻辑、执行指令的执行逻辑等。处理器110包含高速缓存指令和/或数据的高速缓存160。高速缓存160包含但不限于级1、级2和最后一级高速缓存(LLC)165或处理器110内的高速缓冲存储器的任何其它配置。在另一实施例中,计算系统100包含按照本文描述的实施例采用包含执行用于处理数据的算法的逻辑的执行单元的组件,诸如处理器110。
存储器控制器130执行使处理器110能够访问包含易失性存储器和/或非易失性存储器的主存储器120并与之通信的功能。在一个实施例中,存储器控制器130耦合到包含MEE150的系统代理180。在一个实施例中,MEE 150位于最后一级高速缓存165与存储器控制器130之间,以执行移入和移出主存储器120的保护区域125的数据线的加密、解密和认证。MEE150位于处理器管芯上,而存储器120位于处理器管芯外。
根据本发明的一个实施例,MEE 150处理多个存储器读取请求,同时改进对保护区域125的访问等待时间。MEE 150执行计数器模式加密,这要求加密种子对于数据线在时间上和空间上都是唯一的。空间唯一性可通过使用要访问的数据线的地址来实现,而时间唯一性可通过使用充当该版本数据线的计数器来实现。在一个实施例中,MEE 150还使用计数器树结构来保护主存储器120的保护区域125中的数据线,其中仅树的根被存储在管芯上并形成信任的根(即信任边界)。数据线的版本是此计数器树结构的一部分。备选地,可使用其它保护机制用于重放保护。例如,与安全高速缓存线关联的消息认证代码(MAC)可被存储在管芯上,因为成功重放攻击将需要重放数据线及其关联的MAC。然而,这个解决方案具过分高的管芯上存储要求。
对于如下描述,使用如下术语用于主存储器120:主存储器120被划分成区域,包含一个或多个保护区域125(在本文也称为安全存储器范围或MEE区域)。每个区域都具有多个区,EPC区(其在页粒度上是可转换的)、重放保护和完整性元数据的硬件保留区(其在区粒度上是可转换的)以及另一硬件保留区(其是内部实现的,并且不可用于转换)。在一个实施例中,保护区域(MEE区域)可以是固定范围,或者多个保护区域(MEE区域)可以是多个固定范围的集合。在另一实施例中,整个存储器可配置为灵活存储器,划分成多个MEE区域。在启动时,整个存储器开始作为不安全的,并且系统软件如系统上的安全存储器的需求所指导的转换它。如本文所描述的,主存储器120可包含多个安全MEE区域,并且还可包含不安全存储器范围。
在一个实施例中,处理器110包含一个或多个处理器核140。在处理器核140上执行的软件(例如OS或VMM)可标识主存储器120中的存储器范围(标记为保护区域125)中的可转换页,并使用页转换指令来转换可转换页。处理器核140响应于页转换指令而根据页转换指令确定保护区域125中的哪个可转换页要转换,并将可转换页转换成安全页或不安全页中的至少一个。在一个实施例中,页转换指令是第一转换指令或第二转换指令中的一个。响应于第一转换指令,处理器核140将可转换页从不安全页转换成安全页。响应于第二转换指令,处理器核140将可转换页从安全页转换成不安全页。例如,在操作期间,页转换在具体时间可由对存储器系统的需求指导。如果OS/VMM确定它在不安全存储器上低速运行(例如由于大量飞地运行引起的),并且需要向非飞地应用分配存储器,则OS/VMM将确定它想要从安全转换成不安全的页,并执行本文所描述的用于转换的过程。应该指出,本文的描述互换地使用不安全和非安全。
在一个实施例中,处理器核140响应于从不安全转换到安全的第一转换指令而执行如下操作:1)确保作为参数传给指令的页的地址指向可转换成安全页的页;2)验证对应于可转换页的页高速缓存映射条目(未图示)的安全位被设置成不安全;3)使来自处理器110的高速缓存160的所高速缓存的页内容无效;4)将页高速缓存映射条目的安全位设置成安全;以及5)使处理器核140的地址的变换无效。应该指出,在具有两个线程的超线程处理器中,存在两个逻辑处理器。在此情况下,将被无效的变换用于来自当前逻辑处理器的地址。应该指出,如下描述指示,处理器核的变换可用于当前逻辑处理器的地址变换。
在一个实施例中,处理器核140响应于从安全转换到不安全的第二指令而执行如下操作:1)确保作为参数传给指令的页的地址指向可转换成不安全页的页;2)验证对应于所述可转换页的页高速缓存映射条目的安全位被设置成安全;3)验证页高速缓存映射条目的有效位被设置成无效,其中有效位指示该页当前是否映射到飞地;4)使来自所述处理器的高速缓存的所高速缓存的页内容无效;5)将页高速缓存映射条目的安全位设置成不安全;以及使所述处理器核的所述地址的变换无效。
在另外实施例中,安全存储器范围(保护区域125)进一步包含第二区,在本文称为硬件保留区。硬件保留区是可转换区。主存储器130还可包含不可转换的另一硬件保留区。处理器核140响应于区转换指令而配置成将硬件保留区转换成安全区或不安全区中的至少一个。在一个实施例中,区转换指令是第三转换指令或第四转换指令中的一个。响应于从不安全转换到安全的第三转换指令,处理器核140将硬件保留区从不安全区转换成安全区。响应于从安全转换到不安全的第四转换指令,处理器核140将硬件保留区从安全区转换成不安全区。硬件保留区当转换成安全时存储那个安全存储器范围的重放保护和完整性元数据(即具体MEE区域)。软件(OS/VMM)负责判定转换的区域。一旦进行了判定,OS/VMM就执行区转换指令以将该区转换成不安全或安全。处理器核140需要转换的区中的任何页的地址。
在一个实施例中,处理器核140响应于将硬件保留区从不安全转换到安全的第三指令而执行如下操作:1)确保作为参数传给指令的页的地址指向硬件保留区中的页;2)确保硬件保留区被设置为可转换,当前不安全;3)指令所述MEE安装所述硬件保留区的重放保护过滤器;以及4)指令所述MEE将所述硬件保留区置于初始化状态。应该指出,重放保护过滤器(例如重放保护树过滤器)不同于重放保护机制。例如,重放保护树包含用于提供完整性和重放保护的元数据。作为其操作的一部分,MEE高速缓存其内部高速缓存中的这个元数据。然而,当同一区被用作不安全区时,就像系统上的任何其它数据,来自这个区的数据可在处理器高速缓存中高速缓存。现在转换时,理想上,应该使在处理器高速缓存中高速缓存的不安全数据无效。然而,由于重放保护区由多页构成,因此它变得刷新来自处理器高速缓存的所有页的内容非常低效。因此,是硬件过滤器的重放保护过滤器可安装在MEE。重放保护过滤器在将重放保护区从不安全转换成安全时激活,而在转换回到不安全时去激活。当激活时,重放保护过滤器可放弃从处理器高速缓存到已经安装它的区的任何写回,由此确保现在用于存储重放保护元数据的区数据不被破坏。
在一个实施例中,处理器核140响应于将硬件保留区从安全转换到安全的第四指令而执行如下操作:1)确保作为参数传给指令的页的地址指向硬件保留区中的页;2)确保对应于被转换的硬件保留区的EPC区中的所有页都处于不安全状态;3)指令MEE卸载硬件保留区的重放保护过滤器;以及4)指令MEE刷新来自其内部高速缓存的硬件保留区(例如重放保护区)的内容。刷新来自MEE内部高速缓存的内容确保,当它被用作不安全区时,内容驱逐将不破坏该区。
应该指出,主存储器120可包含多个安全存储器范围(本文称为MEE区域)。主存储器120还可包含不安全存储器范围。下面参考图2详细描述存储器120的灵活保护范围的实施例,包含多个MEE区域和不安全存储器范围。
实施例不限于计算机系统。本发明的备选实施例可用在其它装置诸如手持装置和嵌入式应用中。手持装置的一些示例包含蜂窝电话、因特网协议装置、数字相机、个人数字助理(PDA)和手持PC。嵌入式应用可包含微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可执行按照至少一个实施例的一个或多个指令的任何其它系统。
一个实施例可在单个处理器台式计算机或服务器系统的上下文中描述,而备选实施例可包含在多处理器系统中。系统100可以是“集线器”系统架构的示例。计算机系统100包含处理数据信号的处理器110。作为一个说明性示例,处理器110包含复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或其它处理装置,诸如例如数字信号处理器。处理器110耦合到处理器总线,处理器总线在处理器110与系统100中的其它组件(诸如存储指令、数据或它们的任何组合的存储器120)之间传送数据信号。系统100的其它组件可包含图形加速器、存储器控制器集线器、I/O控制器集线器、无线收发器、闪速BIOS、网络控制器、音频控制器、串行扩展端口、I/O控制器等。这些元件执行本领域技术人员众所周知的它们的常规功能。
在一个实施例中,处理器110包含级1(LI)内部高速缓存存储器160。根据该架构,处理器110可具有单个内部高速缓存或内部高速缓存的多级。其它实施例根据具体实现和需要包含内部和外部高速缓存的组合。寄存器文件将不同类型的数据存储在各种寄存器中,包含整数寄存器、浮点寄存器、向量寄存器、堆积寄存器、阴影寄存器、检查点寄存器、状况寄存器、配置寄存器和指令点寄存器。
应该指出,执行单元可具有或没有浮点单元。在一个实施例中,处理器110包含存储微代码的微代码(ucode)ROM,微代码当执行时执行用于某些宏指令的算法或处置复杂情形。在此,微代码潜在地可更新以处置处理器110的逻辑漏洞/修补。
执行单元的备选实施例也可用在微控制器、嵌入式处理器、图形装置、DSP以及其它类型逻辑电路中。系统100包含存储器120。存储器120包含动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存装置或其它存储器装置。存储器120存储由数据信号表示的要由处理器110执行的指令和/或数据。处理器110经由处理器总线耦合到存储器120。系统逻辑芯片,诸如存储器控制器集线器(MCH),可耦合到处理器总线和存储器120。MCH可提供到存储器120的高带宽存储器路径,用于指令和数据存储以及存储图形命令、数据和文本。MCH可用于指引处理器110、存储器120和系统100中的其它组件之间的数据信号,并例如桥接处理器总线、存储器120和系统I/O之间的数据信号。MCH可通过存储器接口耦合到存储器120。在一些实施例中,系统逻辑芯片可提供图形端口,以便通过加速图形端口(AGP)互连耦合到图形控制器。系统100还可包含I/O控制器集线器(ICH)。ICH可经由本地I/O总线提供到一些I/O装置的直接连接。本地I/O总线是用于将外围连接到存储器120、芯片集和处理器110的高速I/O总线。一些示例是音频控制器、固件集线器(闪速BIOS)、无线收发器、数据存储装置、含有用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线(USB))和网络控制器。数据存储装置可包括硬盘驱动器、软盘驱动器、CD-ROM装置、闪存装置或其它大容量存储装置。
对于系统的另一实施例,由上述处理器核140执行的指令可用于片上系统。片上系统的一个实施例包括处理器和存储器。一个此类系统的存储器是闪存。闪存可位于与处理器和其它系统组件相同的管芯上。此外,诸如存储器控制器或图形控制器的其它逻辑块也可位于片上系统上。
图2图示了根据一个实施例包含多个安全存储器范围的灵活保护范围200的概念层。支持安全飞地的安全存储器重新分区的中央处理单元(CPU)允许BIOS(未图示)保留称为处理器保留存储器(PRM)的存储器范围。PRM可被组织成多个安全存储器范围201-207,标记为MEE区域。每一个安全存储器区域201-207各包含三个区202、204、206。第一区202(标记为EPC)包含可转换页(例如用于飞地页)。第二区204(标记为硬件保留(重放保护机制))是当配置为安全区时可用于存储具体安全存储器范围(MEE区域)的重放保护和完整性元数据但可转换用于不安全使用的可转换区,如本文所描述的。此区在本文中也被称为重放保护区。第三区206(标记为硬件保留(实现机制))可用于存储用于内部记账和特定实现的硬件的信息。灵活保护范围200还可包含不安全存储器208,标记为非EPC存储器。这个存储器总是被设置成不安全,并且绝不能被用作EPC 202。
如本文所描述的,灵活EPC通过给OS提供转换指令以在安全存储器与不安全存储器之间移动EPC来允许EPC 202的动态重新分区。
在另一实施例中,每个MEE区域(例如201-207)由两个区构成:EPC区202和硬件保留区,其可被进一步划分成两个子区204、206。子区204随后被称为重放保护区204。EPC区202被用作安全代码(例如飞地代码)和安全数据(例如飞地数据)的EPC存储器,并且对应硬件保留区204用于存储MEE 150的重放保护机制实现的密码元数据。重放保护机制提供了EPC区202的完整性和重放保护。存储器的子区206由硬件保留用于内部记账和实现。从MEE角度,每个MEE区域都是自含的。实质上,为了满足来自MEE区域201的EPC请求,MEE 150仅需要访问位于那个具体MEE区域201中的重放保护区204。
在一个实现中,对于具有本文所描述的可转换页和区的灵活EPC,整个灵活保护范围200在启动时可被设置为不安全存储器。MEE区域201-207可使用指令EENUM枚举。EENUM可被视为安全飞地指令的叶函数。如本文所描述的,存储器内侧EPC区202和硬件保留区204可从不安全转换成安全,并且反之亦然。然而,灵活EPC架构可对存储器转换施加某些限制,如下面所描述的。
系统上的安全存储器的需求与可随时间改变的在系统上运行的工作负荷类型强相关。为了允许OS在安全用途与不安全(或平常)用途之间的EPC 202的动态重新分区,向OS提供一组指令以便于转换。如上面所指出的,整个灵活保护范围200是不可转换的,如图3中所图示的。
图3图示了根据一个实施例的灵活保护范围200内的存储器的可转换区300和存储器的不可转换区350。在MEE区域201内,EPC区202在页粒度302是可转换的,而重放保护区204在区粒度304是不可转换的。为了许可灵活保护范围200内的转换,使用用于EPC区202的页粒度转换302的两个指令EMKSEC和EMKREG和用于重放保护区204的区粒度转换304的两个指令ERPTSEC和ERPTREG。在一个实施例中,EMKSEC指令由OS用于将EPC区202中的不安全页转换成安全页,并且EMKREG指令用于将EPC区202中的安全页转换成不安全页。在另外实施例中,ERPTSEC由OS用于将重放保护区204从规则转换成安全,并且ERPTREG由OS用于将重放保护区204从安全转换成不安全。重放保护区在区粒度是可转换的。因此,在具体时间,重放保护区在其整体上是安全的或不安全的。
在一个实施例中,SE架构使用页高速缓存映射,称为飞地页高速缓存映射(EPCM),其用于跟踪EPC区202中页的安全属性。SE架构扩充EPCM以指示EPC区202中每一个可转换页的当前状况。安全位被添加到EPCM,其当设置用于具体EPCM条目时,指示对应页当前是安全的。EMKSEC和EMKREG指令适当地切换此位。对于重放保护区204,由于它在整体上可以是安全的或不安全的,因此各个页的EPCM中的安全位没有意义。硬件内部跟踪区的状况,并且为了让软件(OS/VMM)知道当前状况,提供了EENUM指令,其指示具体重放区当前不安全或安全。
在另一实施例中,灵活保护范围200还可包含不可转换区350,包含不可转换安全306和不可转换不安全308。例如,每个MEE区域201内侧的硬件保留区206可总是被视为安全的,并且对软件不可见,即,不可转换安全306。区206可用于内部记账。MEE区域201外侧的存储器,即硬件保留区208,总是被保持为不安全存储器,并且不能转换成安全,即不可转换不安全208。
图4A是图示根据一个实施例的灵活保护范围的可转换页的存储器状态转变的状态图400。在这个实施例中,存在两种状态:页是可转换的并且当前安全的第一状态402(标记为“可转换,当前安全”或“CSS”)和页是可转换的并且当前不安全的第二状态404(标记为“可转换,当前正常”或者“CCR”)。在此实施例中,使用两个指令EMKREG 401和EMKSEC 403在两个状态402、404之间切换页的状况。当
执行EMKREG 401时,页的状况从第一状态402转变到第二状态404。当执行EMKSEC403时,页的状况从第二状态404转变到第一状态402。
图4B是图示根据一个实施例的灵活保护范围的可转换区的存储器状态转变的状态图。在这个实施例中,存在两种状态:区是可转换的并且当前安全的第一状态452(标记为“重放区,当前安全”或“RCS”)和区是可转换的并且当前不安全的第二状态404(标记为“重放区,当前正常”或者“RCR”)。在此实施例中,使用两个指令ERPTREG 451和ERPTSEC 453在两个状态452、454之间切换区的状况。当执行ERPTREG 451时,区的状况从第一状态452转变到第二状态454。当执行ERPTSEC 453时,区的状况从第二状态454转变到第一状态452。
虽然EPC区202和重放保护区204都是可转换的,但架构通过转换指令对EPC页和重放保护区的转换施加了限制。对转换的限制如下:限制1:如果MEE区域中的任何数据页当前都安全,则那个区域中的重放保护区必须安全;以及限制2:如果重放保护区不安全,则那个区域中的EPC区202中的所有PEC页也必须不安全。
由架构施加的限制确保EPC页总是受重放保护机制密码保护。灵活EPC架构除了提供转换指令还提供附加指令EENUM。EENUM指令可由系统软件用于枚举平台上的MEE区域,并且还枚举对转换的限制。具体地说,EENUM可由系统软件用于获得有关MEE区域的如下信息:1.该区域中EPC和重放保护区的基址;2.每一个区的大小;以及3.指示区的可转换性的区状况:a)区当前可转换成不安全还是安全的指示;b)区曾经可转换成不安全还是安全的指示。除了提供这个信息之外,EENUM指令还可由系统软件用于获得系统上的MEE区域的总数。
下面更详细描述EPC页和重放保护区的转换过程的实施例。
将不安全页转换成安全:
在一个实施例中,OS可使用如下过程将不安全页转换成安全:
1.OS移除要转换的页的用户映射
2.OS通过发出处理器间中断(IPI)来执行必要的变换后备缓冲器(TLB)无效。这确保了当它被用作不安全时,没有到该页的状态TLB映射。
3.OS在选择的页上执行EMKSEC。EMKSEC可将要转换的页的线性地址看作参数。
在成功执行EMKSEC时,例如通过设置EPCM中的安全位将目标页转换成安全。OS现在可创建此页的新映射用于飞地使用。
在其它实施例中,更多或更少的操作可用于将不安全页转换成安全。
将安全页转换成不安全:
在一个实施例中,OS可使用如下过程将安全页转换成不安全:
1.OS移除要转换的页的用户映射
2.OS通过发出IPI来执行必要的TLB无效。这确保了当它被用作安全时,没有到该页的陈旧的TLB映射。
3.OS在选择的页上执行EMKSEC。EMKREG将要转换的页的线性地址看作参数。
在成功执行EMKREG时,例如通过将EPCM中的安全位清除来将目标页转换成不安全。OS现在可创建此页的新映射用于不安全(例如非飞地)使用。
在其它实施例中,更多或更少的操作可用于将安全页转换成不安全。
将重放保护区从不安全转换成安全:
在一个实施例中,OS确保,在分配来自EPC区的页用于飞地使用之前,MEE区域的重放保护区是安全的(限制1)。在来自对应EPC区的任何页可被转换成安全并且分配用于飞地使用之前,这是架构要求的。OS可使用如下过程将重放保护区从不安全转换成安全:
1.如果重放保护机制中的任何页都被用作不安全,则OS需要使它们写完。
2.OS不必分配来自此区的任何页以满足新的非飞地页请求。
3.OS在选择的区上执行ERPTSEC。ERPTSEC将重放保护区中的页的线性地址(例如,4K对准的线性地址)看作参数。在重放保护区中的任何页上执行ERPTSEC将整个区的状态从不安全转变成安全。
在成功执行ERPTSEC时,目标重放保护区被转换成安全。OS现在可将来自对应EPC区的页分配用于安全使用。
在其它实施例中,更多或更少的操作可用于将重放保护区从不安全页转换成安全。
将重放保护区从安全转换成不安全:
在一个实施例中,OS可使用如下过程将MEE区域中的重放保护区从安全转换成不安全:
1.确保MEE区域的EPC区中的所有页都是不安全的(限制2);a)如果任何页都被用在飞地内侧,则OS需要使用用于写回安全页的SE机制写完它们,其中SE架构提供了这么做的指令;以及b)OS不应该分配来自此EPC区202的任何页以满足来自飞地的新请求。
2.OS在选择的区上执行ERPTREG。ERPTREG将重放保护区中的页的线性地址(例如,4K对准的线性地址)看作参数。在重放保护区中的任何页上执行ERPTREG将整个区的状态从安全转变成不安全。
在成功执行ERPTREG时,目标重放保护区被转换成不安全。OS现在可将此区中的页分配用于不安全使用。
在其它实施例中,更多或更少的操作可用于将重放保护区从安全页转换成不安全。
应该指出,本文描述的实施例也可用在虚拟化环境中。
虚拟化灵活的EPC:
虚拟机监视器(VMM),也称为管理程序,需要能够确保较低特权的实体(例如恶意或行为不当的访客OS)不能引起VMM的不稳定性。对页转换的不正确TLB管理可导致系统不稳定。作为一个示例,在将页从不安全转换成安全时,如果OS不移除用于不安全页的陈旧TLB映射,则这个陈旧TLB映射可用于从存储器加载数据。这个数据当驻留在高速缓存中时随后可被修改,其在驱逐时破坏了安全存储器,这导致系统不稳定(MEE引起完整性失效)。因此,VMM必须确保对页转换的正确TLB管理,以防止访客OS引起系统不稳定。灵活EPC支持三个模式或虚拟化:禁用模式、访客透明模式和访客可见模式。在禁用模式,VMM不启用灵活EPC。在访客透明模式,VMM使用灵活EPC将传统EPC暴露于访客OS。在访客可见模式,VMM将灵活EPC暴露于访客OS。下面描述的实施例是可被执行的示例过程,但在其它实施例中,在不同虚拟化模式中可使用比所描述的操作更多或更少的操作。
禁用模式:
在禁用模式,VMM不知晓灵活EPC,或者不想使用它。VMM隐藏灵活EPC不让访客OS发现。在一个实施例中,可通过指令CPUID (CPU标识符)来枚举灵活EPC特征存在。对于这些系统,VMM通过虚拟化CPUID指令来隐藏灵活EPC的存在。此外,VMM防止访客OS执行本文所描述的灵活EPC指令。这通过将新的次级基于处理器的控制(例如ENABLE_FLEXEPC控制)清除来实现。访客OS执行ENABLE_FLEXEPC清除的灵活EPC指令的任何尝试都导致未定义的操作代码错误#UD,这发生在指令操作代码未定义时。
访客透明模式:
在访客透明模式,VMM使用灵活EPC,但不将它暴露于访客。VMM使用灵活EPC将传统静态EPC暴露于访客。类似于禁用模式,VMM通过虚拟化CPUID来隐藏灵活EPC功能性,并通过将E ABLE_FLEXEPC控制清除来防止访客执行灵活EPC指令。此外,VMM虚拟化对传统静态EPC范围寄存器和CPUID.SE_LEAF (类似于EENUM)的读请求,以枚举访客OS的虚拟EPC。VMM使用表(例如EPT)将访客EPC映射到由VMM管理的灵活EPC中的安全页。VMM使用灵活EPC指令例如EMKREG、EMKSEC、ERPTREG、ERPTSEC来管理对于多个访客OS上的安全和不安全页的需求。由VMM在访客透明模式使用的转换流程类似于朴素OS流程。
访客可见模式:
在访客可见模式,VMM通过CPUID将灵活EPC暴露于访客,并允许访客通过将ENABLE_FLEXEPC控制设置成1来执行灵活EPC指令。如下描述针对虚拟化环境中的可转换页和可转换区的转换的实施例。
虚拟化安全到不安全转换:
用于将安全页转换成不安全页的EMKREG指令确保仅当该页被标记为在EPCM中不有效时,才允许该操作。这确保没有用于页的陈旧TLB条目,即,当该页被用作安全时,没有被高速缓存的TLB条目。这由SE架构确保。当从飞地未映射飞地页时,使其TLB条目无效,因为保持TLB条目施加了安全威胁。因此,对于转换的这个方向,硬件确保正确的TLB管理,并且访客不能引起VMM的不稳定。因此,当访客将安全页转换成不安全时,VMM不需要进行任何附加操作。
虚拟化不安全到安全转换:
对于这个转换方向,软件必须刷新陈旧TLB条目,即,当该页被用作不安全时高速缓存的条目。所以,行为不当或恶意的OS可通过使用EMKSEC指令将不安全页转换成安全而无需刷新陈旧TLB条目,来引起VMM不稳定。因此,为了确保系统稳定性,VMM可确保在访客OS上将不安全页转换成安全时刷新TLB。如下示出了由VMM执行的虚拟化到安全页的转换的操作序列:
1)VMM钩入EMKSEC指令,以接收在访客上执行EMKSEC指令的VMExit。
2)在访客上执行EMKSEC时,VMM接收VMExit,
3)VMM不映射来自EPT的页;
4)VMM使在其上曾经执行访客的所有CPU上的TLB无效;
5)VMM代表访客执行EMKSEC指令以将该页转换成安全;以及
6)VMM将该页映射回EPT中,并重新开始访客。
在其它实施例中,可对于页转换执行其它操作。VMM不需要对于区转换操作做任何事情,因为区转换指令使用硬件过滤器确保系统稳定性。
如下描述提供了灵活EPC的指令集架构(ISA)的概述,如本文所描述的。
EMKSEC:
目的:将EMKSEC提供给OS以将页从不安全转换成安全。参数:数据段中的RCX寄存器(DS:RCX):要转换的页的逻辑地址。
操作:
1)确保到可转换成安全页的页的地址点;
2)验证EPCM.S=0;
3)(WB)使来自高速缓存层级的高速缓存的页内容无效;
4)设置EPCM.S =1;
5)使来自当前LP的DS:RCX的变换无效;
EMKREG:
目的:将EMKREG提供给OS以将页从安全转换成不安全;
参数:DS:RCX:要转换的页的逻辑地址;
操作:
1)确保到可转换成不安全页的页的地址点;
2)验证EPCM.S=1;
3)验证EPCM.V=0;
4)(WB)使来自高速缓存层级的页内容无效;
5)设置EPCM.S=0;
6)使来自当前LP的DS:RCX的变换无效;
EMKRPTSEC:
目的:将EMKRPTSEC提供给OS以将重放保护区从不安全转换成安全。
参数:DS:RCX:要转换的重放保护区中的页的逻辑地址。
操作:
1)确保到重放保护页(例如重放保护树(RPTree)页)的地址点;
2)指令系统上的MEE安装重放保护过滤器。重放保护过滤器被安装在MEE,以确保当重放保护区被OS用作不安全时高速缓存的重放保护区数据不被驱逐,并且引起重放保护的破坏。过滤器确保系统稳定性,不必刷新来自处理器高速缓存的重放保护区中的所有页。
3)指令MEE使重放保护区处于其初始状态,例如可转换、当前不安全状态。
EMKRPTREG:
目的:将EMKRPTSEC提供给OS以将重放保护区从安全转换成不安全。
参数:DS:RCX:要转换的重放保护区中的页的逻辑地址。
操作:
1)确保地址指向重放保护区页,并且对应于这个重放保护区的所有数据页都可转换、当前不安全状态;
2)指令系统上的MEE卸载这个重放保护区的重放保护过滤器;以及
3)指令系统上的MEE刷新来自它们的高速缓存的重放保护区的重放保护机制的内容。
EEENUM:
目的:将EENUM提供给OS以枚举平台上的MEE区域。它还可枚举由输入参数所指导的MEE区域内侧的一个区的细节。
参数:ECX:区域ID和区ID组合
操作:
1)如果区域/区ID不是有效的,则返回在平台上支持的最大区域/区ID;
2)如果区域/区ID有效,则返回如下信息:a)该区的基址;b)该区中的页数(例如4K页);以及
3)状况位指示该区(或来自此区的页)当前可被转换成不安全还是安全。
图5A是根据一个实施例的可转换页的安全存储器重新分区的方法500的流程图。方法500可由处理逻辑执行,处理逻辑可包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如由MCU执行的操作)、固件或它们的组合。在一个实施例中,方法500由图1的处理器110执行。在另一实施例中,方法500由相对于图6a-12描述的任一过程执行。备选地,计算系统100的其它组件(或在处理器110上执行的软件)可执行方法500的其中一些或所有操作。
参考图5A,方法500开始于处理逻辑解码页转换指令以转换耦合到处理器核的主存储器中的可转换页(块502)。处理逻辑根据该指令确定可转换页是要从安全页转换成不安全页还是从不安全页转换成安全页(块504)。OS/VMM判定哪个页要从不安全转换成安全或是从安全转换成不安全,并且处理逻辑解码该指令以确定该页要从不安全转换成安全还是从安全转换成不安全。在一个实施例中,当解码两个页转换指令之一时,处理逻辑进行这个确定,如本文所描述的。该指令可标识要转换的页的地址。还应该指出,尽管描绘为两个单独块,但块502和504可作为解码指令的一部分一起执行。
当该页从不安全转换成安全时,处理逻辑确保页地址指向可转换页(块506),并验证安全位被设置成不安全(块508)。安全位可以是对应于可转换页的页高速缓存映射条目。当安全位被设置时,页是安全的,而当安全位被清除时,页是不安全的。处理逻辑使对应于可转换页的高速缓存中的任何高速缓存的页内容无效(块510)。处理逻辑将安全位设置成安全(块512),并使处理器核的地址的变换无效(块514);并且方法500结束。如果在块504转换从安全到不安全,则处理逻辑确保页地址指向可转换页(块516),并验证安全位被设置成安全(块518)。处理逻辑验证有效位无效(即,有效位清除)(块520)。有效位也可以是页高速缓存映射位。处理逻辑使高速缓存中的任何高速缓存的页内容无效(块522),将安全位设置成不安全(块524),并使处理器核的地址的变换无效(块526);并且方法500结束。
在另一实施例中,处理逻辑响应于页转换指令而标识耦合到一个或多个处理器的主存储器中的存储器范围内的可转换页。安全存储器范围包含可被转换成安全页或不安全页的可转换页的第一区。处理逻辑将可转换页转换成安全页或不安全页中的至少一个。OS/VMM可直接指令处理逻辑转换作为参数传到指令叶的具体页或区,如本文所述。在一个实施例中,当页转换指令是第一转换指令时,处理逻辑将可转换页从不安全页转换成安全页,而当页转换指令是第二转换指令时,将可转换页从安全页转换成不安全页。
在一个实施例中,响应于第一转换指令,处理逻辑确保可转换页的地址指向可转换成安全页的页。处理逻辑验证对应于可转换页的页高速缓存映射条目的安全位被设置成不安全,并使来自处理器高速缓存的高速缓存的页内容无效。处理逻辑将页高速缓存映射条目的安全位设置成安全,并使处理器核的地址的变换无效。
在一个实施例中,响应于第二转换指令,处理逻辑确保可转换页的地址指向可转换成不安全页的页。处理逻辑验证对应于所述可转换页的页高速缓存映射条目的安全位被设置成安全。处理逻辑验证页高速缓存映射条目的安全位被设置成无效,并使来自处理器高速缓存的高速缓存的页内容无效。处理逻辑将页高速缓存映射条目的安全位设置成不安全,并使处理器核的地址的变换无效。
图5B是根据一个实施例的可转换区的安全存储器重新分区的方法550的流程图。方法550可由处理逻辑执行,处理逻辑可包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如由MCU执行的操作)、固件或它们的组合。在一个实施例中,方法550由图1的处理器110执行。在另一实施例中,方法550由相对于图6a-12描述的任一过程执行。备选地,计算系统100的其它组件(或在处理器110上执行的软件)可执行方法550的其中一些或所有操作。
参考图5B,方法550开始于处理逻辑解码区转换指令以转换存储器范围内的硬件保留区(块552)。处理逻辑确定硬件保留区是要从不安全区转换成安全区还是从安全区转换成不安全区(块554)。OS/VMM判定哪个区要从不安全转换成安全或是从安全转换成不安全,并且处理逻辑解码该指令以确定该区要从不安全转换成安全还是从安全转换成不安全。在一个实施例中,当解码两个区转换指令之一时,处理逻辑进行这个确定,如本文所描述的。还应该指出,尽管描绘为两个单独块,但块552和554可作为解码指令的一部分一起执行。
当在块554该区从不安全转换成安全时,处理逻辑确保指令的地址指向硬件保留区中的页(块556)。处理逻辑确保硬件保留区被设置为可转换,当前不安全(块558)。处理逻辑指令MEE安装硬件保留区(块560)的重放保护过滤器(块560)。处理逻辑指令MEE将硬件保留区置于初始化状态(块562);并且方法550结束。
当在块554该区从安全转换成不安全时,处理逻辑确保指令的地址指向硬件保留区中的页(块566)。处理逻辑确保对应于硬件保留区的EPC区中的页处于不安全状态(块568)。处理逻辑指令MEE卸载硬件保留区(块570)的重放保护过滤器,并指令MEE刷新来自其内部高速缓存(块572)的硬件保留区的内容;并且方法550结束。
在另一实施例中,安全存储器范围包含硬件保留区。处理逻辑解码区转换指令以转换安全存储器范围内的硬件保留区,并执行区转换指令以将硬件保留区转换成安全区或不安全区中的至少一个。在另外实施例中,当区转换指令是第三转换指令时,处理逻辑将硬件保留区从不安全区转换成安全区,而当区转换指令是第四转换指令时,将硬件保留区从安全区转换成不安全区。
在另外实施例中,处理逻辑响应于将硬件保留区从不安全转换成安全的第三转换指令,确保第三转换指令的地址指向硬件保留区中的页。处理逻辑确保存储器范围的硬件保留区被设置为可转换当前不安全,并指令MEE安装硬件保留区的重放保护过滤器。处理逻辑指令MEE将硬件保留区置于初始化状态。
在另外实施例中,处理逻辑响应于将硬件保留区从安全转换成不安全的第四转换指令,确保第四转换指令的地址指向硬件保留区中的页。处理逻辑确保对应于硬件保留区的EPC区中的页处于不安全状态。处理逻辑指令MEE卸载硬件保留区的重放保护过滤器,并指令MEE刷新来自其内部高速缓存的硬件保留区(例如重放保护区)的内容。
图6A图示了根据一个实施例实现安全存储器重新分区的处理器600的微架构的框图。确切地说,处理器600描绘根据本公开至少一个实施例要包含在处理器中的有序架构核和寄存器重命名逻辑、无序发出/执行逻辑。在处理器600可实现转换页和区的实施例。
处理器600包含耦合到执行引擎单元650的前端单元630,二者都耦合到存储器单元670。处理器600可包含缩减指令集计算(RISC)核、复指令集计算(CISC)核、超长指令字(VLIW)核或者混合或备选核类型。作为又一选项,处理器600可包含专用核,诸如例如网络或通信核、压缩引擎、图形核等等。在一个实施例中,处理器600可以是多核处理器,或可以是多处理器系统的一部分。
前端单元630包含耦合到指令高速缓存单元634的分支预测单元632,高速缓存单元234耦合到指令变换后备缓冲器 (TLB) 636,TLB 236耦合到指令取单元638,指令取单元238耦合到解码单元660。解码单元660(也称为解码器)可解码指令,并且作为输出的一个或多个微操作生成微代码入口点、微指令、其它指令或其它控制信号,它们从原始指令中解码,或以别的方式反映,或从中导出。可使用各种不同机制实现解码器660。适合机制的示例包含但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元634进一步耦合到存储器单元670。解码单元660耦合到执行引擎单元650中的重命名/分配器单元652。
执行引擎单元650包含耦合到退隐单元654的重命名/分配器单元652和一个或多个调度器单元656的集合。调度器单元656表示任何数量的不同调度器,包含保留站(RS)、中央指令窗口等。调度器单元656耦合到物理寄存器文件单元658。每一个物理寄存器文件单元658表示一个或多个物理寄存器文件、存储一个或多个不同数据类型(诸如标量整数、标量浮点、填充整数、填充浮点、向量整数、向量浮点等)的不同单元、状况(例如是要执行的下一指令的地址的指令指针)等。物理寄存器文件单元658由退隐单元654交叠,以图示可实现寄存器重命名和无序执行的各种方式(例如,使用记录器缓冲器和退隐寄存器文件;使用将来文件、历史文件和退隐寄存器文件;使用寄存器图和寄存器池等)。
一般而言,架构寄存器从处理器的外侧或从编程人员的角度是可见的。寄存器不限于任何已知的具体类型电路。各种不同类型的寄存器是适合的,只要它们能够存储和提供本文所描述的数据。适合寄存器的示例包含但不限于专用物理寄存器、使用寄存器重命令动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。退隐单元654和物理寄存器文件单元658耦合到执行群集660。执行群集660包含一个或多个执行单元662的集合和一个或多个存储器存取单元664的集合。执行单元662可执行各种运算(例如移位、加、减、乘),并对各种类型数据(例如标量浮点、填充整数、填充浮点、向量整数、向量浮点)进行运算。
虽然一些实施例可包含专用于特定功能或功能集的若干执行单元,但其它实施例可仅包含一个执行单元或全都执行所有功能的多个执行单元。调度器单元656、物理寄存器文件单元658和执行群集660被显示为可能是复数的,因为某些实施例为某些类型的数据/运算创建单独流水线(例如,标量整数流水线、标量浮点/填充整数/填充浮点/向量整数/向量浮点流水线和/或存储器存取流水线,各具有它们自己的调度器单元、物理寄存器文件单元和/或执行群集器——并且在单独存储器存取流水线的情况下,实现了这个流水线的执行群集仅具有存储器存取单元664的某些实施例)。还应该理解到,在使用单独流水线的情况下,这些流水线中的一个或多个可以是无序发出/执行,而其余是有序的。
该组存储器存取单元664耦合到存储器单元670,其可包含数据预取器680、数据TLB单元672、数据高速缓存单元(DCU)674和级2 (L2)高速缓存单元676,只举了几个示例。在一些实施例中,DCU 674也被称为第一级数据高速缓存(L1高速缓存)。DCU 674可处置多个未解决的高速缓存未中,并继续服务于进来的存储和加载。它还支持维持高速缓存一致性。数据TLB单元672是用于通过映射虚拟和物理地址空间来改进虚拟地址变换速度的高速缓存。在一个示范实施例中,存储器存取单元664可包含加载单元、存储地址单元和存储数据单元,其中的每个都耦合到存储器单元670中的数据TLB单元672。L2高速缓存单元676可耦合到一个或多个其它级高速缓存,并且最终耦合到主存储器。
在一个实施例中,数据预取器680通过自动预测程序将要消耗哪些数据来推测性地向DCU 674加载/预取数据。预取可指的是,在处理器实际需求数据之前,将存储在存储器层级的一个存储器位置(例如位)(例如,较低级高速缓存或存储器)中的数据传送到更靠近(例如得出较低访问等待时间)处理器的较高级存储器位置。更确切地说,预取可指的是,在处理器发出返回特定数据的命令之前,从其中一个较低级高速缓存/存储器向数据高速缓存和/或预取缓冲器早早地检索数据。
处理器600可支持一个或多个指令集(例如,x86指令集(具有已经用较新版本添加的一些扩展);加利福尼亚,圣尼威尔的MIPS技术的MIPS指令集;加利福尼亚圣尼威尔的ARM控股公司的ARM指令集(具有可选的附加扩展诸如NEON))。
应该理解到,核可以支持多线程操作(执行运算或线程的两个或更多并行集),并且可用各种各样方式这么做,包含时间分片的多线程操作、同时多线程操作(其中单个物理核为物理核同时多线程操作的每一个线程提供逻辑核)或它们的组合(例如,时间分片的取和解码以及同时多线程操作,诸如在Intel®超线程操作技术中)。
虽然寄存器重命名在无序执行的上下文中描述,但应该理解到,寄存器重命名可用在有序架构中。虽然所图示的处理器实施例还包含单独的指令和数据高速缓存单元以及共享L2高速缓存单元,但备选实施例可具有用于指令和数据的单个内部高速缓存,诸如例如级1(L1)内部高速缓存或多级内部高速缓存。在一些实施例中,系统可包含内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。备选地,所有高速缓存都可以在核和/或处理器的外部。
图6B是图示根据本公开一些实施例由图6A的处理器600实现的有序流水线和寄存器重命名阶段、无序发出/执行流水线的框图。图6B中的实线框图示有序流水线,而虚线框图示寄存器重命名、无序发出/执行流水线。在图6B中,处理器流水线600包含取阶段602、长度解码阶段604、解码阶段606、分配阶段608、重命名阶段610、调度(也称为分派或发出)阶段612、寄存器读/存储器读阶段614、执行阶段616、写回/存储器写阶段618、异常处置阶段622和提交阶段624。在一些实施例中,阶段602-624的排序可与所图示的不同,并不局限于在图6B中示出的特定排序。
图7图示了根据一个实施例的处理器700的微架构的框图,其包含执行安全存储器重新分区的逻辑电路。在一些实施例中,可实现按照一个实施例的指令,以对具有字节、字、双字、四字等大小以及数据类型(诸如单和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端701是处理器700的一部分,其取要执行的指令,并准备让它们以后在处理器流水线中使用。在处理器700中可实现转换页和区的实施例。
前端701可包含几个单元。在一个实施例中,指令预取器716从存储器中取指令,并将它们馈送到指令解码器718,其又解码或解释它们。例如,在一个实施例中,解码器将接收的指令解码成机器可执行的一个或多个操作,称为“微指令”或“微操作”(也称为微op或uop)。在其它实施例中,解码器将指令解析成操作码和对应数据以及控制字段,它们由微架构用于执行按照一个实施例的操作。在一个实施例中,追踪高速缓存730获取解码的uop,并将它们汇编成uop队列734中的程序排序的序列或追踪。当追踪高速缓存730遇到复指令时,微代码ROM 732提供完成操作所需的uop。
一些指令被转换成单个微操作,而其它指令需要几个微操作完成整个操作。在一个实施例中,如果需要多于四个微操作完成指令,则解码器718存取微代码ROM 732以完成指令。对于一个实施例,指令可被解码成小数量的微操作,以便在指令解码器718进行处理。在另一实施例中,指令可被存储在微代码ROM 732内,如果需要若干微操作来完成操作的话。追踪高速缓存730指的是入口点可编程逻辑阵列(PLA),以确定正确的微指令指针以便读取微代码序列,以完成来自微代码ROM 732的按照一个实施例的一个或多个指令。在微代码ROM 732完成指令的定序微操作之后,机器的前端701重新开始从追踪高速缓存730中取微操作。
无序执行引擎703是指令准备执行的地方。当它们沿流水线行进并被调度进行执行时,无序执行逻辑具有若干缓冲器以平滑消除并重新排序指令流程以优化性能。分配器逻辑分配每个uop需要以便执行的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名成寄存器文件中的条目。分配器还为两个uop队列(一个用于存储器操作,并且一个用于非存储器操作)之一中的每个uop分配条目,在指令调度器前面,存储器调度器、快速调度器702、慢速/通用浮点调度器704和简单浮点调度器706。uop调度器702、704、706确定uop何时准备好基于它们的相关输入寄存器操作数资源的读取和uop需要完成它们的操作的执行资源的可用性来执行。一个实施例的快速调度器702可在主时钟循环的每半个循环上进行调度,而其它调度器可每主处理器时钟循环仅调度一次。调度器对于分派端口进行仲裁以调度uop以便执行。
寄存器文件708、710位于调度器702、704、706与执行块711中的执行单元712、714、716、718、710、712、714之间。对于整数运算和浮点运算分别存在单独的寄存器文件708、710。一个实施例的每个寄存器文件708、710还包含可向新的相关uop旁路或转发尚未写入寄存器文件中的刚刚完成的结果的旁路网络。整数寄存器文件708和浮点寄存器文件710还能够与另一个进行数据通信。对于一个实施例,整数寄存器文件708被分成两个单独的寄存器文件,一个寄存器文件用于数据的低阶32位,而第二寄存器文件用于数据的高阶32位。一个实施例的浮点寄存器文件710具有128位宽的条目,因为浮点指令通常具有宽度从64位到128位的操作数。
执行块711含有执行单元712、714、716、718、710、712、714,在此指令被实际执行。此区包含存储微指令需要执行的整数和浮点数据操作数值的寄存器文件708、710。一个实施例的处理器700由若干执行单元组成:地址生成单元(AGU) 712、AGU 714、快速ALU 716、快速ALU 718、慢速ALU 710、浮点ALU 712、浮点移动单元714,。对于一个实施例,浮点执行块712、714执行浮点MMX、SIMD和SSE或其它运算。一个实施例的浮点ALU 712包含64位*64位浮点除法器以执行除法、平方根和余数微运算。对于本公开的实施例,可用浮点硬件处置涉及浮点值的指令。
在一个实施例中,ALU运算去到高速ALU执行单元716、718。一个实施例的快速ALU716、718可以时钟循环一半的有效等待时间执行快速运算。对于一个实施例,当慢ALU 710包含用于长等待时间类型的运算(诸如乘法器、移位、标志逻辑和分支处理)的整数执行硬件时,最复杂的整数运算去到慢ALU 710。存储器加载/存储操作由AGU 712、714执行。对于一个实施例,在对64位数据操作数执行整数运算的上下文中,描述整数ALU 716、718、710。在备选实施例中,可实现 ALU 716、718、710以支持各种各样的数据位,包含16、32、128、256等。类似地,可实现浮点单元712、714以支持具有各种宽度位的一系列操作数。对于一个实施例,浮点单元712、714可对128位宽填充数据操作数结合SIMD和多媒体指令进行操作。
在一个实施例中,在母载荷已经完成执行之前,uop调度器702、704、706分派相关操作。当在处理器700中推测性地调度和执行uop时,处理器700还包含处置存储器未中的逻辑。如果数据载荷在数据高速缓存中未中,则在已经留下具有在时间上不正确数据的调度器的流水线中可能存在相关操作。重放机制跟踪并重新执行使用不正确数据的指令。仅相关操作需要被重播,并且允许不相关操作完成。处理器的一个实施例的调度器和重放机制还设计成捕捉用于文本串比较操作的指令序列。
处理器700还包含根据一个实施例实现安全存储器重新分区的逻辑。在一个实施例中,处理器700的执行块711可包含MCU 115,以执行根据本文描述的安全存储器重新分区。
术语“寄存器”可指的是被用作标识操作数的指令的一部分的板上处理器存储位置。换句话说,寄存器可以是从处理器的外部(从编程人员的角度)有用的寄存器。然而,实施例的寄存器应该不限于具体类型电路的意思。而是,实施例的寄存器能够存储和提供数据,并执行本文描述的功能。本文描述的寄存器可由处理器内的电路使用任何数量的不同技术(诸如,专用物理寄存器、使用寄存器重命名动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等)实现。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器文件还含有用于填充数据的8个多媒体SIMD寄存器。
对于本文的论述,寄存器被理解为是设计成保存填充数据的数据寄存器,诸如用来自加利福尼亚圣塔克拉拉的英特尔的MMX™技术实现的微处理器中的64位宽MMX寄存器(在一些实例中也称为“mm”寄存器)。在整数和浮点形式都可用的这些MMX寄存器可与伴随SIMD和SSE指令的填充数据元素一起操作。类似地,与SSE2、SSE3、SSE4或以上(一般称为“SSEx”)技术相关的128位宽XMM寄存器也可用于保存此类填充数据操作数。在一个实施例中,在存储填充数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实施例中,整数和浮点包含在相同寄存器文件中,或不同寄存器文件中。另外,在一个实施例中,浮点数据和整数数据可存储在不同寄存器中或相同寄存器中。
可用许多不同系统类型实现实施例。现在参考图8,示出了按照本发明实施例的多处理器系统800的框图。如图8所示,多处理器系统800是点对点互连系统,并且包含经由点对点互连850耦合的第一处理器870和第二处理器880。如图8所示,每一个处理器870和880都可以是多核处理器,包含第一和第二处理器核(即,处理器核874a和874b以及处理器核884a和884b),不过在处理器中可存在潜在的许多更多核。按照本公开实施例,处理器各可包含混合写模式逻辑。在处理器870、处理器880或二者中可实现转换页和区的实施例。
虽然示出具有两个处理器870、880,但要理解到,本公开的范围不限于此。在其它实现中,在给定处理器中可存在一个或多个附加处理器。
显示处理器870和880分别包含集成存储器控制器单元882和882。处理器870还包含点对点(P-P)接口876和888作为其总线控制器单元的一部分;类似地,第二处理器880包含P-P接口886和888。处理器870、880可经由点对点(P-P)接口850使用P-P接口电路888、888交换信息。如图8中所示,IMC 882和882将处理器耦合到相应存储器,即存储器832和存储器834,它们可以是局部附连到相应处理器的主存储器的部分。
处理器870、880各可经由各个P-P接口852、854使用点对点接口电路876、894、886、898与芯片集890交换信息。芯片集890还可经由高性能图形接口839与高性能图形电路838交换信息。
共享高速缓存(未示出)可被包含在任一处理器中或两个处理器外侧,仍经由P-P互连与处理器连接,使得任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中,如果处理器处于低功率模式的话。
芯片集890可经由接口896耦合到第一总线816。在一个实施例中,第一总线816可以是外围组件互连(PCI)总线,或诸如PCI快速总线的总线,或另一个第三代I/O互连总线,不过本公开的范围不限于此。
如图8所示,各种I/O装置814可耦合到第一总线816,以及将第一总线816耦合到第二总线820的总线桥818。在一个实施例中,第二总线820可以是低管脚计数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线820,例如包含键盘和/或鼠标822、通信装置827和存储单元828,诸如盘驱动器或可包含指令/代码和数据830的其它大容量存储装置。另外,音频I/O 824可耦合到第二总线820。要指出,其它架构是可能的。例如,代替图8的点对点架构,系统可实现多点总线或其它此类架构。
现在参考图9,示出了根据本发明实施例的第三系统900的框图。图8和图9中的相似元件带有相似附图标记,并且已经从图9中省略了图8的某些方面,以便避免使图9的其它方面模糊不清。
图9图示了处理元件970、980,它们可分别包含集成存储器和I/O控制逻辑(“CL”)972和982。对于至少一个实施例,CL 972、982可包含集成存储器控制器单元,诸如本文描述的。此外, CL 972、982还可包含I/O控制逻辑。图9图示了存储器932、934耦合到CL 972、982,并且I/O装置914也耦合到控制逻辑972、982。传统I/O装置915耦合到芯片集990。在处理器970、处理器980或二者中可实现转换页和区的实施例。
图10是可包含一个或多个核1002的示范片上系统(SoC)。在本领域已知的用于膝上型电脑、台式电脑、手持PC、个人数字助理、工程设计工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置和各种其它电子装置的其它系统设计和配置也是适合的。一般而言,能够合并处理器和/或本文所公开的其它执行逻辑的各种各样系统或电子装置一般是适合的。
现在参考图10,示出了按照本公开实施例的SoC 1000的框图。图5中的类似元件带有相似附图标记。还有,虚线框是更高级SoC上的特征。在图10中,互连单元1002耦合到:应用处理器1010,其包含一个或多个核1002A-N的集合和共享高速缓存单元1006;总线代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个媒体处理器1020,其可包含集成图形逻辑1008、用于提供静止和/或视频相机功能性的图像处理器1024、用于提供硬件音频加速的音频处理器1026以及用于提供视频编码/解码加速的视频处理器1028;静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及耦合到一个或多个外部显示器的显示单元1040。在SoC 1000中可实现转换页和区的实施例。
接下来转到图11,描绘了按照本公开实施例的片上系统(SoC)设计的实施例。作为说明性示例,SoC 1100包含在用户设备(UE)中。在一个实施例中,UE指的是由最终用户用于通信的任何装置,诸如手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本或任何其它类似通信装置。UE可连接到基站或节点,其本质上对应于GSM网络中的移动台(MS)。在SoC 1100中可实现转换页和区的实施例。
在此,SOC 1100包含2个核——1106和1107。类似于如上论述,核1106和1107可符合指令集架构,诸如具有Intel®架构Core™的处理器、高级微装置公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其顾客以及它们的被许可方或采用者。核1106和1107耦合到高速缓存控制器1108,其与总线接口单元1109和 L2高速缓存1110关联以与系统1100的其它部分通信。互连1111包含片上互连,诸如IOSF、AMBA或上面论述的其它互连,其可实现所描述公开的一个或多个方面。
互连1111提供了到其它组件提供通信信道,诸如与SIM卡对接的订户身份模块(SIM)1130、保存引导代码以便由核1106和1107执行以初始化和引导SoC 1100的引导ROM1135、与外部存储器(例如DRAM 1160)对接的SDRAM控制器1140、与非易失性存储器(例如闪存1165)对接的闪存控制器1145、与外围装置对接的外围控制器1150(例如串行外围接口)、显示和接收输入(例如触摸启用的输入)的视频编解码器1120和视频接口1125、执行图形相关计算的GPU 1115等。这些接口中的任何接口都可合并本文描述的实施例的各方面。
此外,系统图示了用于通信的外围装置,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180和Wi-Fi 1185。如上所述指出的,UE包含用于通信的无线电。因此,这些外围通信模块可不全都包含。然而,在UE中,应该包含用于外部通信的某种形式的无线电。
图12图示了以计算系统1200的示例形式的机器的图解表示,在其内可执行指令集以便使机器执行本文讨论的任一个或多个方法论。在备选实施例中,机器可连接(例如连网)到LAN、内联网、外联网或因特网中的其它机器。机器可在客户端-服务器网络环境下以服务器或客户端装置的身份操作,或者在对等(或分布式)网络环境下作为对等机器操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、万维网设施、服务器、网络路由器、交换机或桥或者能够执行规定那个机器要采取的动作的指令集(顺序或以其它方式)的任何机器。另外,虽然仅图示了单个机器,但术语“机器”也将被视为包含单独或联合执行指令集(或多个指令集)以执行本文讨论的任何一个或多个方法论的机器的任何集合。在计算系统1200中可实现转换页和区的实施例。
计算系统1200包含处理装置1202、主存储器1204(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如闪存、静态随机存取存储器(SRAM)等)和数据存储装置1218,它们经由总线1230彼此通信。
处理装置1202表示一个或多个通用处理装置,诸如微处理器、中央处理单元等等。更具体地说,处理装置可以是复指令集计算(CISC)微处理器、缩减指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器或实现其它指令集的处理器或实现指令集组合的处理器。处理装置1202也可以是一个或多个专用处理装置,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。在一个实施例中,处理装置1202可包含一个或多个处理器核。处理装置1202配置成执行用于执行本文讨论的操作的处理逻辑1226。在一个实施例中,处理装置1202可以是图1计算系统100的一部分。备选地,计算系统1200可包含本文所描述的其它组件。应该理解到,核可以支持多线程操作(执行运算或线程的两个或更多并行集),并且可用各种各样方式这么做,包含时间分片的多线程操作、同时多线程操作(其中单个物理核为物理核同时多线程操作的每一个线程提供逻辑核)或它们的组合(例如,时间分片的取和解码以及同时多线程操作,诸如在Intel®超线程操作技术中)。
计算系统1200可进一步包含以通信方式耦合到网络1220的网络接口装置1208。计算系统1200还可包含视频显示单元1210(例如液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置1212(例如键盘)、光标控制装置1214(例如鼠标)、信号生成装置1216(例如扬声器)或其它外围装置。另外,计算系统1200可包含图形处理单元1222、视频处理单元1228和音频处理单元1232。在另一实施例中,计算系统1200可包含芯片集(未图示),其指的是一组集成电路或芯片,它们设计成与处理装置1202一起工作,并控制处理装置1202与外部装置之间的通信。例如,芯片集可以是母板上的一组芯片,母板将处理装置1202链接到超高速装置(诸如主存储器1204和图形控制器)以及将处理装置1202链接到外围装置的较低速外围总线诸如USB、PCI或ISA总线。
数据存储装置1218可包含在其上存储包含本文描述的功能的任一个或多个方法论的软件1226的计算机只读存储介质1224。软件1226还可在其由计算系统1200执行期间完全或至少部分驻留在主存储器1204内作为指令1226,和/或驻留在处理装置1202内作为处理逻辑1226;主存储器1204和处理装置1202还构成计算机可读存储介质。
利用处理装置102(诸如相对于图1所描述的)和/或含有调用以上应用的方法的软件库,计算机可读存储介质1224还可用于存储指令1226。虽然计算机可读存储介质1224在示例实施例中被显示为单个介质,但是术语“机器可读存储介质”应该被视为包含存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或关联的高速缓存和服务器)。术语“计算机可读存储介质”还将被视为包含能够存储、编码或携带由机器执行并使机器执行目前实施例的任一个或多个方法论的指令集的任何介质。术语“计算机可读存储介质”相应地将被视为包含但不限于固态存储器以及光介质和磁介质。
如下示例涉及另外实施例。
示例1是处理器,包括:1)处理器核;以及2)存储器控制器, 耦合在处理器核与主存储器之间,其中主存储器包括包含可转换成安全页或不安全页的可转换页的区的存储器范围,并且其中处理器核响应于页转换指令而:a)根据指令确定要转换的存储器范围内的可转换页;以及b)将可转换页转换成安全页或不安全页中的至少一个。
在示例2中,示例1的页转换指令是第一转换指令,并且处理器核响应于第一转换指令而将可转换页从不安全页转换成安全页。
在示例3中,示例1-2中任一示例的处理器核都响应于第一转换指令而执行如下操作:a)确保可转换页点的地址指向可转换成安全页的页;b)验证对应于所述可转换页的页高速缓存映射条目的安全位被设置成不安全;c)使来自所述处理器的高速缓存的所高速缓存的页内容无效;d)将页高速缓存映射条目的安全位设置成安全;以及e)使所述处理器核的所述地址的变换无效。
在示例4中,示例1-3中任一示例的处理器中的页转换指令是第二转换指令,并且处理器核响应于第二转换指令而将可转换页从安全页转换成不安全页。
在示例5中,示例1-4中任一示例的处理器核都响应于第二转换指令而执行如下操作:a)确保所述可转换页的地址指向可转换成不安全页的页;b)验证对应于所述可转换页的页高速缓存映射条目的安全位被设置成安全;c)验证所述页高速缓存映射条目的有效位被设置成无效;d)使来自所述处理器的高速缓存的所高速缓存的页内容无效;e)将页高速缓存映射条目的安全位设置成不安全;以及f)使所述处理器核的所述地址的变换无效。
在示例6中,示例1-5中任一示例的存储器范围包括硬件保留区,其中处理器核响应于区转换指令而将硬件保留区转换成安全区或不安全区中的至少一个。
在示例7中,示例1-6中任一示例的区转换指令是第三转换指令,并且处理器核响应于第三转换指令而将硬件保留区从不安全区转换成安全区。
在示例8中,示例1-7的处理器进一步包括耦合在处理器核与主存储器之间的MEE,并且处理器核响应于第三转换指令而执行如下操作:a)确保第三转换指令的地址指向所述硬件保留区中的页;b)确保所述存储器范围的所述硬件保留区被设置为可转换,当前不安全;c)指令所述MEE安装所述硬件保留区的重放保护过滤器;以及d)指令所述MEE将所述硬件保留区置于初始化状态。
在示例9中,示例1-9中任一示例的区转换指令是第四转换指令,并且其中处理器核响应于第四转换指令而将硬件保留区从安全区转换成不安全区。
在示例10中,示例1-9中任一示例的处理器进一步包括耦合在处理器核与主存储器之间的MEE,其中硬件保留区存储用于存储器范围的重放保护和完整性元数据,其中处理器核响应于第四转换指令而执行如下操作:a)确保第四转换指令的地址指向硬件保留区中的页;b)确保对应于硬件保留区的EPC区中的页处于不安全状态;c)指令所述MEE卸载所述硬件保留区的重放保护过滤器;以及d)指令MEE刷新来自其内部高速缓存的硬件保留区(例如重放保护区)的内容。
在示例11中,示例1-10中任一示例的存储器范围进一步包括不能被转换的另一硬件保留区。
在示例12中,示例1-11中任一示例的主存储器包括不安全存储器范围。
各种实施例可具有上面描述的结构特征的不同组合。比如,上面描述的计算系统的所有可选特征也可相对于本文描述的方法或过程实现,并且示例中的具体细节可用在一个或多个实施例中的各处。
在示例13中,方法包括:1)由处理器的处理器核解码页转换指令以转换耦合到所述处理器核的主存储器中的存储器范围内的可转换页,其中所述存储器范围包括可转换成安全页或不安全页的可转换页的区;以及2)由所述处理器核执行所述页转换指令以将所述可转换页转换成安全页或不安全页中的至少一个。
在示例14中,示例13的方法进一步包括:当所述页转换指令是第一转换指令时,由所述处理器核将所述可转换页从不安全页转换成安全页;以及当所述页转换指令是第二转换指令时,由所述处理器核将所述可转换页从所述安全页转换成所述不安全页。
在示例15中,示例13-14中任一示例的方法进一步包括:响应于第一转换指令而:a)确保可转换页的地址指向可转换成安全页的页;b)验证对应于所述可转换页的页高速缓存映射条目的安全位被设置成不安全;c)使来自所述处理器的高速缓存的所高速缓存的页内容无效;d)将页高速缓存映射条目的安全位设置成安全;以及e)使所述处理器核的所述地址的变换无效。
在示例16中,示例13-15中任一示例的方法进一步包括:响应于第二转换指令而:a)确保可转换页的地址指向可转换成不安全页的页;b)验证对应于所述可转换页的页高速缓存映射条目的安全位被设置成安全;c)验证所述页高速缓存映射条目的有效位被设置成无效;d)使来自所述处理器的高速缓存的所高速缓存的页内容无效;e)将页高速缓存映射条目的安全位设置成不安全;以及f)使所述处理器核的所述地址的变换无效。
在示例17中,在示例13-16中任一示例的方法中,存储器范围进一步包括硬件保留区,所述方法进一步包括:a)由所述处理器核解码区转换指令以转换所述存储器范围内的所述硬件保留区;以及b)执行所述区转换指令以将所述硬件保留区转换成安全区或不安全区中的至少一个。
在示例18中,示例13-17中任一示例的方法进一步包括:当所述区转换指令是第三转换指令时,由所述处理器核将所述硬件保留区从不安全区转换成安全区;以及当所述区转换指令是第四转换指令时,由所述处理器核将所述硬件保留区从所述安全区转换成所述不安全区。
在示例19中,示例13-18中任一示例的方法进一步包括:响应于第三转换指令将硬件保留区从不安全转换成安全:a)确保第三转换指令的地址指向硬件保留区中的页;b)确保所述存储器范围的所述硬件保留区被设置为可转换,当前不安全;c)指令耦合在所述处理器核与所述主存储器之间的存储器加密引擎(MEE)安装所述硬件保留区的重放保护过滤器;以及d)指令所述MEE将所述硬件保留区置于初始化状态;以及响应于第四转换指令将硬件保留区从安全转换成不安全:e)确保第四转换指令的地址指向硬件保留区中的页;f)确保对应于硬件保留区的EPC区中的页处于不安全状态;g)指令所述MEE卸载硬件保留区的重放保护过滤器;以及h)指令MEE刷新来自其内部高速缓存的硬件保留区(例如重放保护区)的内容。
各种实施例可具有上面描述的结构特征的不同组合。比如,上面描述的处理器和方法的所有可选特征也可相对于本文描述的系统实现,并且示例中的具体细节可用在一个或多个实施例中的各处。
示例20是一种系统,所述系统包括:1)处理器,包括执行指令的多个功能单元;以及2)存储器装置,耦合到所述处理器,其中所述存储器装置可操作以存储代码存储器和数据存储器,并且包括包含可转换成安全页或不安全页的可转换页的区的存储器范围,其中所述处理器核配置成:a)解码页转换指令以转换所述存储器范围内的可转换页;以及b)执行所述页转换指令以将所述可转换页转换成安全页或不安全页中的至少一个。
在示例21中,在示例20的系统中,页转换指令是第一转换指令,并且其中处理器核响应于第一转换指令将所述可转换页从不安全页转换成安全页,并且其中处理器核响应于第一转换指令而执行如下操作:a)确保可转换页点的地址指向可转换成安全页的页;b)验证对应于所述可转换页的页高速缓存映射条目的安全位被设置成不安全;c)使来自所述处理器的高速缓存的所高速缓存的页内容无效;d)将页高速缓存映射条目的安全位设置成安全;以及e)使所述处理器核的所述地址的变换无效。
在示例22中,在示例20-21中任一示例的系统中,页转换指令是第二转换指令,并且其中处理器核响应于第二转换指令将所述可转换页从安全页转换成不安全页,并且其中处理器核响应于第二转换指令而执行如下操作:a)确保所述可转换页的地址指向可转换成不安全页的页;b)验证对应于所述可转换页的页高速缓存映射条目的安全位被设置成安全;c)验证所述页高速缓存映射条目的有效位被设置成无效;d)使来自所述处理器的高速缓存的所高速缓存的页内容无效;e)将页高速缓存映射条目的安全位设置成不安全;以及f)使所述处理器核的所述地址的变换无效。
在示例23中,在示例20-22中任一示例的系统中,存储器范围进一步包括硬件保留区,其中处理器核响应于区转换指令而:a)解码区转换指令以转换所述硬件保留区;以及b)执行所述区转换指令以将所述硬件保留区转换成安全区或不安全区中的至少一个。
在示例24中,示例20-23中任一示例的系统进一步包括耦合在处理器核与主存储器之间的MEE,其中所述区转换指令是第三转换指令,并且其中所述处理器核响应于第三转换指令将所述硬件保留区从不安全区转换成安全区,其中所述处理器核响应于第三转换指令而执行如下操作:a)确保第三转换指令的地址指向所述硬件保留区中的页;b)确保所述存储器范围的所述硬件保留区被设置为可转换,当前不安全;c)指令所述MEE安装所述硬件保留区的重放保护过滤器;以及d)指令所述MEE将所述硬件保留区置于初始化状态。
在示例25中,示例20-24中任一示例的系统进一步包括耦合在处理器核与主存储器之间的MEE,其中所述区转换指令是第四转换指令,并且其中MEE响应于第四转换指令将所述硬件保留区从安全区转换成不安全区,其中所述处理器核响应于第四转换指令而执行如下操作:a)确保第四转换指令的地址指向硬件保留区中的页;b)确保对应于硬件保留区的EPC区中的页处于不安全状态;c)指令所述MEE卸载所述硬件保留区的重放保护过滤器;以及d)指令所述MEE刷新来自其内部高速缓存的所述硬件保留区的内容。
各种实施例可具有上面描述的操作特征的不同组合。比如,上面描述的方法的所有可选特征也可相对于非暂时性计算机可读存储介质实现。在一个或多个实施例中的任何地方都可使用示例中的详情。
示例26是包含指令的非暂时性计算机可读存储介质,所述指令当由处理器执行时使处理器执行示例13-19中任一示例的方法。
示例27是包括片上系统(SoC)的系统,SoC包括执行指令的处理器核以及耦合到处理器核的存储器控制器单元(MCU),其中处理器核配置成执行示例15-21的方法。
在示例28中,示例27的SoC进一步包括示例1-14和22-27的主题。
示例29是设备,设备包括:1)处理器的处理器核;2)用于解码页转换指令以转换耦合到处理器核的主存储器中的存储器范围内的可转换页的部件,其中存储器范围包括可转换成安全页或不安全页的可转换页的区;以及3)用于执行页转换指令以将可转换页转换成安全页或不安全页中的至少一个的部件。
在示例30中,示例29的设备进一步包括示例1-14和22-27的主题。
示例31是系统,所述系统包括:存储器装置和包括存储器加密引擎(MEE)的处理器,其中所述处理器配置成执行示例13-19中任一示例的方法。
在示例32中,示例31的处理器进一步包括示例1-12和20-25中任一示例的主题。
虽然已经相对于有限数量的实施例描述了本发明,但本领域技术人员将认识到对其的各种修改和变化。意图是,所附权利要求书涵盖落入本发明的真实精神和范围内的所有此类修改和改变。
在本文的描述中,阐述了众多特定细节,诸如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线阶段和操作等示例,以便提供本发明的透彻理解。然而,本领域技术人员要明白,不需要采用这些特定细节来实施本发明。在其它实例中,未详细描述众所周知的组件和方法,诸如特定和备选处理器架构、用于所描述算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、用代码的算法的特定表述、特定掉电和门控技术/逻辑以及计算机系统的其它特定操作细节,以便避免不必要地使本发明模糊不清。
实施例参考特定集成电路(诸如计算平台或微处理器)中的安全存储器重新分区来描述。实施例还可应用于其它类型集成电路和可编程逻辑装置。例如,所公开的实施例不限于台式计算机系统或便携式计算机,诸如Intel® Ultrabooks™计算机。并且,还可用在其它装置中,诸如手持装置、平板电脑或其它薄笔记本、片上系统(SoC)装置和嵌入式应用中。手持装置的一些示例包含蜂窝电话、因特网协议装置、数字相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包含微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可执行下面教导的功能和操作的任何其它系统。描述了该系统可以是任何种类的计算机或嵌入式系统。所公开的实施例特别可用于低端装置,像可穿戴装置(例如手表)、电子植入物、传感和控制基础设施装置、控制器、监督控制和数据获取(SCAD A)系统等。而且,本文描述的设备、方法和系统不限于物理计算装置,而且可涉及用于节能和效率的软件优化。如在以下描述中将变得容易明白的,本文描述的方法、设备和系统的实施例(不管是关于硬件、固件、软件还是它们的组合)对将来与性能考虑平衡的“绿色技术”都是至关重要的。
尽管本文的实施例参考处理器描述,但其它实施例可应用于其它类型集成电路和逻辑装置。本发明实施例的类似技术和教导可应用于可受益于更高流水线吞吐量和改进性能的其它类型电路或半导体装置。本发明实施例的教导可应用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可应用于执行数据的操纵或管理的任何处理器和机器。此外,本文描述提供了示例,并且附图为了说明目的示出了各种示例。然而,这些示例不应被视为限制意义,因为它们仅仅意图提供本发明实施例的示例,而不是提供本发明实施例的所有可能实现的详尽列表。
尽管以下示例在执行单元和逻辑电路的上下文中描述了指令处置和分布,但本发明的其它实施例可通过存储在机器可读有形介质上的数据或指令实现,所述指令当由机器执行时使机器执行与本发明的至少一个实施例一致的功能。在一个实施例中,与本发明实施例关联的功能被嵌入在机器可执行指令中。指令可用于使得用指令编程的通用或专用处理器执行本发明的步骤。本发明的实施例可提供为计算机程序产品或软件,其可包含机器或计算机可读介质,其上存储有可用于对计算机(或其它电子装置)编程以执行根据本发明实施例的一个或多个操作的指令。备选地,本发明实施例的操作可由含有用于执行操作的固定功能逻辑的特定硬件组件执行,或由已编程计算机组件和固定功能硬件组件的任何组合执行。
用于对逻辑编程以执行本发明实施例的指令可被存储在系统中的存储器内,诸如DRAM、高速缓存、闪存或其它存储装置中。另外,指令可经由网络或通过其它计算机可读介质分布。从而,机器可读介质可包含用于存储或传送机器(例如计算机)可读形式的信息的任何机制,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或在因特网上经由电、光、声或其它形式传播信号(例如载波、红外信号、数字信号等)传送信息时使用的有形机器可读存储装置。相应地,计算机可读介质包含适合于存储或传送机器(例如计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计从创建到仿真到制作可经过各种阶段。表示设计的数据可用若干方式表示该设计。首先,这在仿真上是有用的,硬件可使用硬件描述语言或另一功能描述语言表示。附加地,在设计过程的某些阶段,可产生具有逻辑和/或晶体管门的电路级模型。另外,大多数设计在某个阶段达到用硬件模型表示各种装置物理布局的数据级。在使用常规半导体制作技术的情况下,表示硬件模型的数据可以是规定在用于产生集成电路的掩膜的不同掩膜层上各种特征的存在或缺乏的数据。在设计的任何表示中,数据可存储在任何形式的机器可读介质中。存储器或者磁或光存储装置诸如盘可以是机器可读介质,以存储经由调制的或以别的方式生成的光波或电波传送的信息以传送此类信息。当指示或携带代码或设计的电载波被传送到执行电信号的拷贝、缓冲、重发的程度时,进行新拷贝。从而,通信供应商或网络供应商可在有形机器可读介质上至少暂时存储实施本发明实施例的技术的制品,诸如编码到载波中的信息。
本文所使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包含与非暂时性介质关联的硬件(诸如微控制器),以存储适合于由微控制器执行的代码。因此,在一个实施例中,提到模块指的是硬件,其专门配置成识别和/或执行在非暂时性介质上保存的代码。此外,在另一实施例中,使用模块指的是包含代码的非暂时性介质,其特别适合于由微控制器执行以执行预定操作。并且可以推断,在又一实施例中,术语模块(在此示例中)可指的是微控制器和非暂时性介质的组合。被图示为单独的常见模块边界通常改变并潜在地交叠。例如,第一和第二模块可以共享硬件、软件、固件或它们的组合,不过潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包含硬件,诸如晶体管、寄存器或其它硬件,诸如可编程逻辑装置。
使用短语“配置成”在一个实施例中指的是布置、放在一起、制造、提供销售、进口和/或设计设备、硬件、逻辑或元件以执行指定或预定任务。在此示例中,不操作的设备或其元件仍“配置成”执行指定任务,如果它被设计、耦合和/或互连以执行所述指定任务的话。作为纯说明性示例,逻辑门可在操作期间提供0或1。但“配置成”向时钟提供使能信号的逻辑门不包含可提供1或0的每个潜在逻辑门。相反,逻辑门是以某种方式耦合的,在操作期间1或0输出启动时钟。再次指出,使用术语“配置成”不需要操作,而是相反聚焦在设备、硬件和/或元件的潜伏状态,其中在潜伏状态,当设备、硬件和/或元件操作时,设备、硬件和/或元件设计成执行具体任务。
另外,使用短语“以”、“能够”和/或“可操作以”在一个实施例中指的是以此类方式设计的某个设备、逻辑、硬件和/或元件,以使能够以规定方式使用设备、逻辑、硬件和/或元件。如上面指出的,使用“以”、“能够”或“可操作以”在一个实施例中指的是设备、逻辑、硬件和/或元件的潜伏状态,其中设备、逻辑、硬件和/或元件不操作,但以此类方式设计成使能够以规定方式使用设备。
本文使用的“值”包含数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。经常,逻辑级、逻辑值或逻辑的值的使用也被称为1和0,其简单地表示二进制逻辑状态。例如,1指的是高逻辑级,而0指的是低逻辑级。在一个实施例中,存储单元,诸如晶体管或闪存单元,可能能够保存单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其它表示。例如,十进制数10也可表示为二进制值1010和十六进制字母A。因此,值包含能够在计算机系统中保存的信息的任何表示。
而且,状态可由值或部分值表示。作为一个示例,第一值,诸如逻辑1,可表示默认或初始状态,而第二值,诸如逻辑0,可表示非默认状态。此外,术语“重置”和“设置”在一个实施例中分别指的是默认和更新的值或状态。例如,默认值潜在地包含高逻辑值,即重置,而更新的值潜在地包含低逻辑值,即设置。要指出,可利用值的任何组合来表示任何数量的状态。
上面阐述的方法、硬件、软件、固件或代码的实施例可经由存储在机器可存取、机器可读、计算机可存取或计算机可读介质上的可由处理元件执行的指令或代码实现。非暂时性机器可存取/可读介质包含提供(即存储和/或传送)机器(诸如计算机或电子系统)可读形式的信息的任何机制。例如,非暂时性机器可存取介质包含随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存装置;电存储装置;光存储装置;声存储装置;用于保存从暂时性(传播)信号(例如载波、红外信号、数字信号)接收的信息的其它形式存储装置等,它们有别于可从那儿接收信息的非暂时性介质。
用于对逻辑编程以执行本发明实施例的指令可被存储在系统中的存储器内,诸如DRAM、高速缓存、闪存或其它存储装置中。另外,指令可经由网络或通过其它计算机可读介质分布。从而,机器可读介质可包含用于存储或传送机器(例如计算机)可读形式的信息的任何机制,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或在因特网上经由电、光、声或其它形式传播信号(例如载波、红外信号、数字信号等)传送信息时使用的有形机器可读存储装置。相应地,计算机可读介质包含适合于存储或传送机器(例如计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
此说明书通篇提到“一个实施例”或“实施例”意味着结合该实施例描述的具体特征、结构或特性可包含在本发明的至少一个实施例中。从而,在此说明书通篇各处出现的短语“在一个实施例中”或“在实施例中”不一定全都指的是同一实施例。而且,在一个或多个实施例中,可以任何适合的方式组合具体特征、结构或特性。
在前述说明书中,已经参考特定示范实施例给出了详细描述。然而,将显然的是,在不脱离所附权利要求书中所阐述的本发明的更广泛精神和范围的前提下可对其进行各种修改和改变。相应地,说明书和附图要被视为说明性意义,而非限制意义。另外,前面使用实施例以及其它示范语言不一定指的是相同实施例或相同示例,而是可指的是不同实施例或截然不同实施例,以及潜在地相同实施例。
详细描述的一些部分依据对计算机存储器内的数据位的操作的算法和符号表示呈现。这些算法描述和表示是数据处理领域的技术人员用于最有效地将它们工作的实质传达给本领域技术人员所用的手段。算法在此并且一般地被视为得到预期结果的操作的自身一致序列。这些操作是需要物理量的物理操纵的那些操作。通常,不过不是必需的,这些量采取能够被存储、转移、组合、比较以及以其它方式操控的电信号或磁信号的形式。已经证明方便的是,有时主要由于常见用法的原因,将这些信号称为位、值、单元、符号、字符、项、数字等等。本文描述的块可以是硬件、软件、固件或它们的组合。
然而,应该牢记的是,所有这些以及类似的术语都与适当的物理量关联,并且仅仅是应用于这些量的方便标签。除非特别声明,否则根据上面论述显然的是,要认识到,在说明书通篇利用诸如“定义”、“接收”、“确定”、“发出”、“链接”、“关联”、“获得”、“认证”、“禁止”、“执行”、“请求”、“通信”等术语的论述是指计算系统或类似电子计算装置的动作和过程,其将计算系统的寄存器和存储器内表示为物理(例如电子)量的数据操控并变换成在计算系统存储器或寄存器或其它此类信息存储、传送或显示装置内类似地表示为物理量的其它数据。
词“示例”或“示范”在本文中用于指的是充当示例、实例或说明。本文描述为“示例”或“示范”的任何方面或设计不一定都解释为比其它实现优选或有利。而是,使用词“示例”或“示范”意图以具体方式呈现概念。如此申请中所使用的,术语“或者”意图表示包含性“或者”而不是排他性“或者”。也就是,除非另有说明,或从上下文显然的是,“X包含A或B”意图指的是任何自然包含性置换。也就是,如果X包含A;X包含B;或X包含A和B,则在任何前述实例下满足“X包含A或B”。此外,在此申请和所附权利要求书中所使用的冠词“一个”一般应该被视为指的是“一个或多个”,除非另有说明或者从上下文显然是针对单数形式。而且,通篇使用术语“实施例”或“一个实施例”或“实现”或“一个实现”不意图指的是相同实施例或实现,除非像这样描述。还有,本文所使用的术语“第一”、“第二”、“第三”、“第四”等意味着作为区分不同元件的标记,并且可能不一定具有根据它们的数字命名的序数意义。
Claims (36)
1.一种由处理器执行的方法,包括:
由所述处理器的处理器核对页转换指令进行解码以转换耦合到所述处理器核的主存储器中的存储器范围中的可转换页,其中所述存储器范围包括可转换成安全页或不安全页的可转换页的区;以及
由所述处理器核执行所述页转换指令以将所述可转换页转换成安全页或不安全页中的一个。
2.如权利要求1所述的方法,其中所述执行所述页转换指令包括由所述处理器核将所述可转换页从不安全页转换成所述安全页。
3.如权利要求1所述的方法,其中所述执行所述页转换指令包括由所述处理器核将所述可转换页从安全页转换成所述不安全页。
4.如权利要求2所述的方法,进一步包括:
响应于所述页转换指令,
确保所述可转换页的地址指向可转换成所述安全页的页;
验证对应于所述可转换页的安全条目的安全位被设置成不安全;
使来自所述处理器的高速缓存的所高速缓存的页内容无效;
将所述安全条目的所述安全位设置成安全;以及
使所述处理器核的所述地址的变换无效。
5.如权利要求3所述的方法,进一步包括:
响应于所述页转换指令,
确保所述可转换页的地址指向可转换成所述不安全页的页;
验证对应于所述可转换页的安全条目的安全位被设置成安全;
验证所述安全条目的有效位被设置成无效;
使来自所述处理器的高速缓存的所高速缓存的页内容无效;
将所述安全条目的所述安全位设置成不安全;以及
使所述处理器核的所述地址的变换无效。
6.如权利要求1所述的方法,其中所述存储器范围进一步包括硬件保留区,所述方法进一步包括:
由所述处理器核对区转换指令进行解码以转换所述存储器范围中的所述硬件保留区;以及
执行所述区转换指令以将所述硬件保留区转换成安全区或不安全区中的一个。
7.如权利要求6所述的方法,其中所述执行所述区转换指令包括由所述处理器核将所述硬件保留区从安全区转换成所述不安全区。
8.如权利要求6所述的方法,其中所述执行所述区转换指令包括由所述处理器核将所述硬件保留区从不安全区转换成所述安全区。
9.如权利要求8所述的方法,进一步包括:
响应于所述区转换指令:
确保所述区转换指令的地址指向所述硬件保留区中的页;
确保所述存储器范围的所述硬件保留区被设置为可转换、当前不安全;
指令耦合在所述处理器核与所述主存储器之间的存储器加密引擎(MEE)为所述硬件保留区安装重放保护过滤器;以及
指令所述MEE将所述硬件保留区置于初始化状态。
10.如权利要求7所述的方法,进一步包括:
响应于所述区转换指令:
确保所述区转换指令的地址指向所述硬件保留区中的页;
确保对应于所述硬件保留区的区中的所述可转换页处于不安全状态;
指令存储器加密引擎(MEE)卸载所述硬件保留区的重放保护过滤器;以及
指令所述MEE刷新来自其内部高速缓存的所述硬件保留区的内容。
11.至少一个计算机可读介质,包括多个指令,所述指令响应于在计算装置上执行而使所述计算装置执行如权利要求1至10中任一项所述的方法。
12.一种计算机系统,包括:
存储器装置和包括存储器加密引擎(MEE)的处理器,其中所述处理器配置成执行如权利要求1-10中任一项所述的方法。
13.如权利要求12所述的计算机系统,进一步包括如权利要求1-11中任一项所述的主题。
14.一种处理器,包括:
所述处理器的多个功能单元;
用于响应于页转换指令而标识将耦合到所述处理器的主存储器中的安全存储器范围中将存储的第一可转换页的部件,其中所述安全存储器范围将包括可被转换成安全页或不安全页的可转换页的第一区;以及
用于将所述第一可转换页转换成安全页或不安全页中的一个的部件。
15.如权利要求14所述的处理器,其操作以执行如权利要求1-10中任一项所述的方法。
16.一种包括片上系统(SOC)的系统,所述片上系统包括多个功能单元以及耦合到所述多个功能单元的存储器控制器单元(MCU),其中所述MCU包括存储器加密引擎(MEE),其中所述MEE配置成执行权利要求1-10中的任一项所述的方法。
17. 一种处理器,包括:
解码单元,用于对页转换指令进行解码,所述页转换指令用于指示将存储在主存储器中的存储器范围中的可转换页,所述存储器范围包括能够在安全页和不安全页之间转换的可转换页的区;以及
执行单元,其响应于所述页转换指令而将所指示的可转换页转换成安全页和不安全页中的一个。
18.如权利要求17所述的处理器,其中响应于所述页转换指令,所述执行单元将把所指示的可转换页从不安全页转换成所述安全页。
19.如权利要求18所述的处理器,其中响应于所述页转换指令,所述执行单元将:
确保所述可转换页的地址指向可转换成所述安全页的页;
验证对应于所述可转换页的安全条目的安全位是不安全;
使来自所述处理器的一个或多个高速缓存的所高速缓存的页内容无效;
使所述安全条目的所述安全位变成安全;以及
使所述地址的变换无效。
20.如权利要求17所述的处理器,其中响应于所述页转换指令,所述执行单元将把所述可转换页从安全页转换成所述不安全页。
21.如权利要求20所述的处理器,其中响应于所述页转换指令,所述执行单元将:
确保所述可转换页的地址指向可转换成所述不安全页的页;
验证对应于所述可转换页的安全条目的安全位是安全;
验证所述安全条目的有效位是无效;
使来自所述处理器的一个或多个高速缓存的所高速缓存的页内容无效;
使所述安全条目的所述安全位变成不安全;以及
使所述地址的变换无效。
22. 如权利要求17所述的处理器,其中所述存储器范围进一步包括硬件保留区,并且其中:
所述解码单元将对区转换指令进行解码以转换所述存储器范围中的所述硬件保留区;以及
响应于所述区转换指令,所述处理器将把所述硬件保留区转换成安全区和不安全区中的一个。
23.如权利要求22所述的处理器,其中响应于所述区转换指令,所述处理器将把所述硬件保留区从不安全区转换成所述安全区。
24.如权利要求23所述的处理器,其中响应于所述区转换指令,所述处理器将:
确保所述区转换指令的地址指向所述硬件保留区中的页;
确保所述存储器范围的所述硬件保留区将是可转换、当前不安全;
指令存储器加密引擎(MEE)为所述硬件保留区安装重放保护过滤器;以及
指令所述MEE将所述硬件保留区置于初始化状态。
25.如权利要求22所述的处理器,其中响应于所述区转换指令,所述处理器将把所述硬件保留区从安全区转换成所述不安全区。
26.如权利要求25所述的处理器,其中响应于所述区转换指令,所述处理器将:
确保所述区转换指令的地址指向所述硬件保留区中的页;
确保对应于所述硬件保留区的区中的所述可转换页将处于不安全状态;
指令存储器加密引擎(MEE)卸载所述硬件保留区的重放保护过滤器;以及
指令所述MEE刷新来自其内部高速缓存的所述硬件保留区的内容。
27.一种与处理器一起使用的装置,包括:
用于由所述处理器的处理器核对页转换指令进行解码以转换耦合到所述处理器核的主存储器中的存储器范围中的可转换页的部件,其中所述存储器范围包括可转换成安全页或不安全页的可转换页的区;以及
用于由所述处理器核执行所述页转换指令以将所述可转换页转换成安全页或不安全页中的一个的部件。
28.如权利要求27所述的装置,其中所述执行所述页转换指令包括由所述处理器核将所述可转换页从不安全页转换成所述安全页。
29.如权利要求27所述的装置,其中所述执行所述页转换指令包括由所述处理器核将所述可转换页从安全页转换成所述不安全页。
30.如权利要求28所述的装置,进一步包括:
响应于所述页转换指令,
用于确保所述可转换页的地址指向可转换成所述安全页的页的部件;
用于验证对应于所述可转换页的安全条目的安全位被设置成不安全的部件;
用于使来自所述处理器的高速缓存的所高速缓存的页内容无效的部件;
用于将所述安全条目的所述安全位设置成安全的部件;以及
用于使所述处理器核的所述地址的变换无效的部件。
31.如权利要求29所述的装置,进一步包括:
响应于所述页转换指令,
用于确保所述可转换页的地址指向可转换成所述不安全页的页的部件;
用于验证对应于所述可转换页的安全条目的安全位被设置成安全的部件;
用于验证所述安全条目的有效位被设置成无效的部件;
用于使来自所述处理器的高速缓存的所高速缓存的页内容无效的部件;
用于将所述安全条目的所述安全位设置成不安全的部件;以及
用于使所述处理器核的所述地址的变换无效的部件。
32.如权利要求27所述的装置,其中所述存储器范围进一步包括硬件保留区,所述装置进一步包括:
用于由所述处理器核对区转换指令进行解码以转换所述存储器范围中的所述硬件保留区的部件;以及
用于执行所述区转换指令以将所述硬件保留区转换成安全区或不安全区中的一个的部件。
33.如权利要求32所述的装置,其中所述执行所述区转换指令包括由所述处理器核将所述硬件保留区从不安全区转换成所述安全区。
34.如权利要求32所述的装置,其中所述执行所述区转换指令包括由所述处理器核将所述硬件保留区从安全区转换成所述不安全区。
35.如权利要求34所述的装置,进一步包括:
响应于所述区转换指令:
用于确保所述区转换指令的地址指向所述硬件保留区中的页的部件;
用于确保所述存储器范围的所述硬件保留区被设置为可转换、当前不安全的部件;
用于指令耦合在所述处理器核与所述主存储器之间的存储器加密引擎(MEE)为所述硬件保留区安装重放保护过滤器的部件;以及
用于指令所述MEE将所述硬件保留区置于初始化状态的部件。
36.如权利要求33所述的装置,进一步包括:
响应于所述区转换指令:
用于确保所述区转换指令的地址指向所述硬件保留区中的页的部件;
用于确保对应于所述硬件保留区的区中的所述可转换页处于不安全状态的部件;
用于指令存储器加密引擎(MEE)卸载所述硬件保留区的重放保护过滤器的部件;以及
用于指令所述MEE刷新来自其内部高速缓存的所述硬件保留区的内容的部件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/034,813 US9767044B2 (en) | 2013-09-24 | 2013-09-24 | Secure memory repartitioning |
US14/034813 | 2013-09-24 | ||
PCT/US2014/055807 WO2015047789A1 (en) | 2013-09-24 | 2014-09-16 | Secure memory repartitioning |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105474227A CN105474227A (zh) | 2016-04-06 |
CN105474227B true CN105474227B (zh) | 2019-10-11 |
Family
ID=52692072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480046935.1A Expired - Fee Related CN105474227B (zh) | 2013-09-24 | 2014-09-16 | 安全存储器重新分区 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9767044B2 (zh) |
EP (1) | EP3049992B1 (zh) |
JP (1) | JP6225395B2 (zh) |
KR (1) | KR101817021B1 (zh) |
CN (1) | CN105474227B (zh) |
WO (1) | WO2015047789A1 (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150113643A1 (en) * | 2013-10-17 | 2015-04-23 | National Tsing Hua University | Information security method |
US9218891B2 (en) * | 2013-11-27 | 2015-12-22 | Silicon Motion, Inc. | Data storage device and flash memory control method |
KR20150070890A (ko) * | 2013-12-17 | 2015-06-25 | 삼성전자주식회사 | 파일 처리 방법 및 이를 지원하는 전자 장치 |
US9274823B1 (en) * | 2014-12-24 | 2016-03-01 | Parallels IP Holdings GmbH | Thin hypervisor for native execution of unsafe code |
US9875189B2 (en) | 2015-06-12 | 2018-01-23 | Intel Corporation | Supporting secure memory intent |
US20160378684A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Multi-page check hints for selective checking of protected container page versus regular page type indications for pages of convertible memory |
US9710401B2 (en) | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
US9959418B2 (en) | 2015-07-20 | 2018-05-01 | Intel Corporation | Supporting configurable security levels for memory address ranges |
US10664179B2 (en) | 2015-09-25 | 2020-05-26 | Intel Corporation | Processors, methods and systems to allow secure communications between protected container memory and input/output devices |
US10031861B2 (en) * | 2015-09-25 | 2018-07-24 | Intel Corporation | Protect non-memory encryption engine (non-mee) metadata in trusted execution environment |
US10585809B2 (en) * | 2016-04-01 | 2020-03-10 | Intel Corporation | Convolutional memory integrity |
US10210323B2 (en) * | 2016-05-06 | 2019-02-19 | The Boeing Company | Information assurance system for secure program execution |
US10671744B2 (en) * | 2016-06-23 | 2020-06-02 | Intel Corporation | Lightweight trusted execution for internet-of-things devices |
US10261919B2 (en) * | 2016-07-08 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Selective memory encryption |
US11675659B2 (en) * | 2016-07-15 | 2023-06-13 | Advanced Micro Devices, Inc. | DDR memory error recovery |
US10346641B2 (en) | 2016-09-23 | 2019-07-09 | Intel Corporation | Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory |
US10089247B2 (en) * | 2016-09-30 | 2018-10-02 | Intel Corporation | System and method for coupling a host device to secure and non-secure devices |
EP3336698B1 (en) * | 2016-12-19 | 2021-08-18 | OpenSynergy GmbH | System comprising a plurality of virtualization systems |
CN110268392A (zh) * | 2017-01-10 | 2019-09-20 | 瑞萨电子美国有限公司 | 安全架构和方法 |
US10552153B2 (en) * | 2017-03-31 | 2020-02-04 | Intel Corporation | Efficient range-based memory writeback to improve host to device communication for optimal power and performance |
US10540291B2 (en) | 2017-05-10 | 2020-01-21 | Intel Corporation | Tracking and managing translation lookaside buffers |
CN111259380B (zh) * | 2017-08-22 | 2021-02-12 | 海光信息技术股份有限公司 | 内存页转移方法和函数调用方法 |
US20190065405A1 (en) * | 2017-08-29 | 2019-02-28 | Qualcomm Incorporated | Security aware non-speculative memory |
US10628315B2 (en) * | 2017-09-28 | 2020-04-21 | Intel Corporation | Secure memory repartitioning technologies |
US20190102324A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Cache behavior for secure memory repartitioning systems |
US11119947B2 (en) | 2017-10-30 | 2021-09-14 | Hewlett-Packard Development Company, L.P. | Secure hardware initialization |
US10867092B2 (en) * | 2017-12-16 | 2020-12-15 | Intel Corporation | Avoiding asynchronous enclave exits based on requests to invalidate translation lookaside buffer entries |
US11082231B2 (en) * | 2017-12-29 | 2021-08-03 | Intel Corporation | Indirection directories for cryptographic memory protection |
WO2019180675A1 (en) * | 2018-03-22 | 2019-09-26 | Trulyprotect Oy | Systems and methods for hypervisor-based protection of code |
WO2019212580A1 (en) | 2018-04-30 | 2019-11-07 | Google Llc | Enclave interactions |
CN112005230B (zh) | 2018-04-30 | 2024-05-03 | 谷歌有限责任公司 | 通过统一的安全区接口管理安全区创建 |
CN112005237B (zh) | 2018-04-30 | 2024-04-30 | 谷歌有限责任公司 | 安全区中的处理器与处理加速器之间的安全协作 |
US11281595B2 (en) * | 2018-05-28 | 2022-03-22 | Intel Corporation | Integration of disparate system architectures using configurable isolated memory regions and trust domain conversion bridge |
US11093272B2 (en) | 2018-06-27 | 2021-08-17 | International Business Machines Corporation | Virtual machine allocation and migration between hardware devices by destroying and generating enclaves using transmitted datafiles and cryptographic keys |
CN111295645B (zh) * | 2018-08-10 | 2023-09-22 | 深圳市汇顶科技股份有限公司 | 一种SoC芯片及总线访问控制方法 |
GB2579034B (en) * | 2018-11-15 | 2021-05-05 | Trustonic Ltd | Software installation method |
CN109635401A (zh) * | 2018-12-04 | 2019-04-16 | 中国航空工业集团公司西安航空计算技术研究所 | 一种动态可配置存储控制器设计方法 |
US11487906B2 (en) * | 2019-03-08 | 2022-11-01 | International Business Machines Corporation | Storage sharing between a secure domain and a non-secure entity |
US11283800B2 (en) | 2019-03-08 | 2022-03-22 | International Business Machines Corporation | Secure interface control secure storage hardware tagging |
US11176054B2 (en) | 2019-03-08 | 2021-11-16 | International Business Machines Corporation | Host virtual address space for secure interface control storage |
US11531627B2 (en) | 2019-03-08 | 2022-12-20 | International Business Machines Corporation | Secure storage isolation |
US11088846B2 (en) * | 2019-03-28 | 2021-08-10 | Intel Corporation | Key rotating trees with split counters for efficient hardware replay protection |
US11288213B2 (en) * | 2019-03-29 | 2022-03-29 | Intel Corporation | Memory protection with hidden inline metadata |
US11720495B2 (en) * | 2019-05-24 | 2023-08-08 | Texas Instmments Incorporated | Multi-level cache security |
US11030120B2 (en) | 2019-06-27 | 2021-06-08 | Intel Corporation | Host-convertible secure enclaves in memory that leverage multi-key total memory encryption with integrity |
US11436187B2 (en) * | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6233667B1 (en) * | 1999-03-05 | 2001-05-15 | Sun Microsystems, Inc. | Method and apparatus for a high-performance embedded memory management unit |
US6775779B1 (en) * | 1999-04-06 | 2004-08-10 | Microsoft Corporation | Hierarchical trusted code for content protection in computers |
US7426644B1 (en) * | 2001-12-05 | 2008-09-16 | Advanced Micro Devices, Inc. | System and method for handling device accesses to a memory providing increased memory access security |
JP3866597B2 (ja) * | 2002-03-20 | 2007-01-10 | 株式会社東芝 | 内部メモリ型耐タンパプロセッサおよび秘密保護方法 |
US20040003321A1 (en) * | 2002-06-27 | 2004-01-01 | Glew Andrew F. | Initialization of protected system |
KR101099463B1 (ko) * | 2002-11-18 | 2011-12-28 | 에이알엠 리미티드 | 보안 도메인과 비보안 도메인을 갖는 시스템 내에서 가상메모리 어드레스의 물리적 메모리 어드레스로의 매핑 |
US7146477B1 (en) * | 2003-04-18 | 2006-12-05 | Advanced Micro Devices, Inc. | Mechanism for selectively blocking peripheral device accesses to system memory |
US7444523B2 (en) * | 2004-08-27 | 2008-10-28 | Microsoft Corporation | System and method for using address bits to signal security attributes of data in the address space |
JP4956922B2 (ja) * | 2004-10-27 | 2012-06-20 | ソニー株式会社 | 記憶装置 |
US7412579B2 (en) * | 2004-12-30 | 2008-08-12 | O'connor Dennis M | Secure memory controller |
JP2007129482A (ja) * | 2005-11-02 | 2007-05-24 | Nippon Telegr & Teleph Corp <Ntt> | ネットワーク攻撃防御方法、ネットワーク攻撃防御システム、中継装置、防御装置、中継装置用プログラムおよび防御装置用プログラム |
US7900059B2 (en) * | 2005-12-13 | 2011-03-01 | International Business Machines Corporation | Sealing of data for applications |
GB2442023B (en) * | 2006-09-13 | 2011-03-02 | Advanced Risc Mach Ltd | Memory access security management |
US8276201B2 (en) * | 2007-03-22 | 2012-09-25 | International Business Machines Corporation | Integrity protection in data processing systems |
GB2449454B (en) * | 2007-05-22 | 2011-08-24 | Advanced Risc Mach Ltd | Control data modification within a cache memory |
US8607034B2 (en) | 2008-05-24 | 2013-12-10 | Via Technologies, Inc. | Apparatus and method for disabling a microprocessor that provides for a secure execution mode |
US8122514B2 (en) * | 2008-07-30 | 2012-02-21 | Microsoft Corporation | Software enhanced trusted platform module |
US8301863B2 (en) | 2008-11-17 | 2012-10-30 | International Business Machines Corporation | Recursive logical partition real memory map |
US8578175B2 (en) * | 2011-02-23 | 2013-11-05 | International Business Machines Corporation | Secure object having protected region, integrity tree, and unprotected region |
BRPI0924512A2 (pt) | 2009-12-22 | 2016-03-01 | Intel Corp | método e aparelho de fornecimento de execução de aplicativos seguros |
US20110191562A1 (en) * | 2010-02-02 | 2011-08-04 | Broadcom Corporation | Apparatus and method for partitioning, sandboxing and protecting external memories |
US8296538B2 (en) * | 2010-02-17 | 2012-10-23 | Arm Limited | Storing secure mode page table data in secure and non-secure regions of memory |
US8589650B2 (en) * | 2010-05-17 | 2013-11-19 | Texas Instruments Incorporated | Dynamically configurable memory system |
US8972746B2 (en) * | 2010-12-17 | 2015-03-03 | Intel Corporation | Technique for supporting multiple secure enclaves |
US8832452B2 (en) | 2010-12-22 | 2014-09-09 | Intel Corporation | System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves |
US9208319B2 (en) * | 2011-12-15 | 2015-12-08 | Microsoft Technology Licensing, Llc | Code base partitioning system |
US8775757B2 (en) * | 2012-09-25 | 2014-07-08 | Apple Inc. | Trust zone support in system on a chip having security enclave processor |
-
2013
- 2013-09-24 US US14/034,813 patent/US9767044B2/en active Active
-
2014
- 2014-09-16 KR KR1020167003842A patent/KR101817021B1/ko active IP Right Grant
- 2014-09-16 WO PCT/US2014/055807 patent/WO2015047789A1/en active Application Filing
- 2014-09-16 JP JP2016543947A patent/JP6225395B2/ja not_active Expired - Fee Related
- 2014-09-16 EP EP14849831.4A patent/EP3049992B1/en not_active Not-in-force
- 2014-09-16 CN CN201480046935.1A patent/CN105474227B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP3049992A4 (en) | 2017-05-03 |
US20150089173A1 (en) | 2015-03-26 |
JP6225395B2 (ja) | 2017-11-08 |
WO2015047789A1 (en) | 2015-04-02 |
KR101817021B1 (ko) | 2018-01-09 |
EP3049992B1 (en) | 2019-07-03 |
US9767044B2 (en) | 2017-09-19 |
EP3049992A1 (en) | 2016-08-03 |
JP2016536720A (ja) | 2016-11-24 |
KR20160031541A (ko) | 2016-03-22 |
CN105474227A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105474227B (zh) | 安全存储器重新分区 | |
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
TWI697804B (zh) | 安全區之平台遷移 | |
US11531772B2 (en) | Support for increased number of concurrent keys within multi-key cryptographic engine | |
CN109508555A (zh) | 使用可信域在虚拟化系统中提供隔离 | |
CN106575261A (zh) | 受保护的区域中的存储器初始化 | |
CN111353164A (zh) | 用于信任域创建和摧毁的方法和装置 | |
TWI575380B (zh) | 用於虛擬化之細粒度位址重新映射 | |
US11886906B2 (en) | Dynamical switching between EPT and shadow page tables for runtime processor verification | |
CN110472444A (zh) | 防止对加密存储器的未授权访问 | |
CN117931376A (zh) | 信任域架构内的信任域内部的可缩放虚拟机操作 | |
US10540291B2 (en) | Tracking and managing translation lookaside buffers | |
US20190095357A1 (en) | Hardware support for static mode of protected memory management on flexibly-convertible enclave platform | |
US20190102324A1 (en) | Cache behavior for secure memory repartitioning systems | |
CN111353156A (zh) | 可缩放多密钥总存储器加密引擎 | |
CN109643283A (zh) | 管理飞地存储器页 | |
US20210399882A1 (en) | Restricting usage of encryption keys by untrusted software | |
CN110321729A (zh) | 使用信任域支持虚拟化系统中的存储器分页 | |
CN111355574A (zh) | 信任域中的安全加密密钥管理 | |
WO2018063719A1 (en) | Supporting oversubscription of guest enclave memory pages | |
CN110968394A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20191011 Termination date: 20200916 |