CN109643283A - 管理飞地存储器页 - Google Patents
管理飞地存储器页 Download PDFInfo
- Publication number
- CN109643283A CN109643283A CN201780046094.8A CN201780046094A CN109643283A CN 109643283 A CN109643283 A CN 109643283A CN 201780046094 A CN201780046094 A CN 201780046094A CN 109643283 A CN109643283 A CN 109643283A
- Authority
- CN
- China
- Prior art keywords
- counter
- count value
- subpage
- memory
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0824—Distributed directories, e.g. linked lists of caches
-
- 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/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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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/1008—Correctness of operation, e.g. memory ordering
-
- 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/1052—Security improvement
-
- 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
-
- 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/60—Details of cache memory
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/032—Protect output to user by software means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
处理设备包括第一计数器,具有多个子页中的存在于第一虚拟机(VM)的飞地存储器中的子页的数量的第一计数值。多个子页与飞地存储器中的父页相关联。处理设备包括第二计数器,具有多个子页中的不存在于飞地存储器中并且由第二VM共享的子页的数量的第二计数值,其中第二VM不同于第一VM。第一计数器或第二计数器中的至少一个的非零值阻止从该飞地存储器驱逐该父页。
Description
技术领域
本公开的实现方式一般涉及计算机系统,并且更具体地涉及但不限于管理飞地存储器页。
背景技术
现代处理器设计为保护存储器中的敏感数据免受硬件和软件攻击的破坏。一些处理器提供能够保留存储器的一部分并且在存储器的这一部分上实施密码保护的策略。存储器的这一部分可以包括在安全平台上可访问的多个安全存储器页。
附图说明
通过下文给出的具体实施方式并通过本公开各种实现方式的附图,将更完整地理解本公开。然而,不应当认为这些附图将本公开限制为特定实现方式,而是这些附图仅用于说明和理解。
图1示出根据本公开的实现方式的实现飞地存储器的处理设备的框图。
图2示出根据本公开的实现方式的用于管理飞地存储器中的飞地存储器页的虚拟机监视器。
图3示出根据本公开的实现方式的用于管理飞地存储器页的方法的流程图。
图4示出根据本公开的实现方式的用于管理飞地存储器页的另一方法的流程图。
图5示出根据本公开的实现方式的用于管理飞地存储器页的进一步的方法的流程图。
图6A是示出根据本公开的实现方式的用于处理器的微架构的框图。
图6B是示出根据本公开的实现方式的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图7是示出根据本公开的一个实现方式的用于处理器的微架构的框图。
图8是示出系统的框图,在该系统中可以使用本公开的实现方式。
图9是示出系统的框图,在该系统中本公开的实现方式可以操作。
图10是示出系统的框图,在该系统中本公开的实现方式可以操作。
图11是示出根据本公开的实现方式的芯片上系统(SoC)的框图;
图12是示出根据本公开的实现方式的SoC设计的框图;以及
图13示出根据本公开的实现方式示出计算机系统的框图。
具体实施方式
本公开的实现方式提供对飞地存储器页的管理。
诸如处理器的处理设备可以实现由飞地存储器(EM)表示的受信任的执行环境。受信任的执行环境是处理设备的安全区域,其确保在内部加载的应用和数据在机密性和完整性方面将被保护。处理设备可以执行驻留在EM中的指令并且访问驻留在该受保护的存储器中的数据,同时防止对受保护的存储器的未授权的访问。来自未驻留在EM中的应用的对与EM相关联的存储器页的访问被阻止,即使这种访问是由有特权的应用(诸如基本输入/输出系统(BIOS)、操作系统或虚拟机监视器)尝试的。
可以将活跃的EM分成加密部分和解密部分。加密部分可以驻留在未受保护的存储器(诸如主存储器或盘)中。解密部分可以驻留在与EM相关联的飞地页面高速缓存(EPC)中。EPC是处理设备用于临时地存储EM页的受保护的存储器。EPC包括EM页,诸如父页,以及与父页相关联的多个子页。父页包括关于EPC的元数据。这种元数据可以包括但不限于,EPC的EPC基址的尺寸、子页的总数、等等。多个子页中的每一个包括指向父页的地址的地址。
处理设备可以实现用于管理EPC中的EM页的若干过程。这种管理可以包括用于将EM页(父页和对应的子页)安全地移入和移出EPC的分页指令。分页指令可以包括但不限于,将EM页加载到EPC中、访问EPC中的EM页、以及从EPC中驱逐EM页。
在受信任的执行环境中,除非在EPC中存在对应的父页,否则不允许将一个或多个子页加载到EPC中。通常,为了支持超额订阅(在多个VM之间共享父页和一个或多个子页),管理多个VM的虚拟机监视器(VMM)(也称为管理程序)可以从VM的EPC物理地移除一个或多个子页以将它们提供给另一个VM。在一个实现方式中,通过移除子页的内容并以加密形式将内容存储在存储器中来物理地移除子页,因此子页完全是空的并且可用于从EPC中被驱逐或移除。如果VMM和VMare的访客OS都执行对EM页的管理,则可能出现即使存在从EPC中被物理地移除、但虚拟地存在于EPC中的一个或多个子页,VM的访客OS也可能尝试从(VM的)EPC中移除父页的情况。在常规的解决方案中,访客OS将检查与父页相关联的第一计数器(也称为物理计数器)的值,其中当一个或多个子页被物理地加载到EPC中时第一计数器的值递增并且当一个或多个子页从EPC中被物理地驱逐时值递减。因此,当VMM从EPC中物理地移除所有子页时,计数器的值变为0,这指示在访客的EPC中不存在与父页相关联的子页。然而,即使子页从VM的EPC中被移除,由于用于与另一个VM共享子页的VMM分页指令,这些被物理地移除的子页未被虚拟地移除。VMM在从VM的EPC中物理地移除子页之前存储VM的EPC的子页的内容。如上文所讨论的,子页的内容以加密形式存储在存储器中。VMM可以将子页给予另一个VM,因为子页的内容是空的并且被另一个VM请求用作另一个VM的EPC中的资源。然而,VM的访客OS不知道被物理地移除的子页用于与另一个VM共享,并且这些子页继续虚拟地存在于VM的EPC中。因此,VM的访客OS能够移除父页(因为第一计数器值是0)。然而,当父页从EPC中被移除时,VM的访客OS不能访问EPC的一部分,并且VMM不能将子页加载回VM的EPC中。
在当前的实现方式中,为了防止访客OS从仍然具有虚拟地存在于EPC中的子页的EPC中移除父页,VMM应当退出访客OS的所有分页指令并且当该OS尝试从EPC中移除父页时注入失败。此外,通过退出所有分页指令,VMM跟踪父页在EPC中位于何处。
根据本公开的实现方式,当父页具有虚拟地存在于EPC中的一个或多个子页时,VMM防止访客OS从EPC中移除父页。在一个实现方式中,将第二计数器(也称为虚拟计数器)添加到父页中的元数据,以跟踪由于VMM分页而虚拟地存在于EPC中但当前未物理地存在于EPC中的子页的数量。如上文所讨论的,VMM分页支持超额订阅。在一个实现方式中,在从EPC中物理地移除一个或多个子页时递增第二计数器的值。在一个实现方式中,在物理地加载一个或多个子页时递减第二计数器的值。因此,在本公开的实现方式中,VMM在允许访客OS从EPC中移除父页之前检查两个计数器(即,第一和第二计数器)的值。由此,VMM能够防止移除EPC中的父页,以支持超额订阅而不会给VMM带来额外的退出和跟踪负担。
图1是示出根据一个实现方式的支持管理飞地存储器页的处理设备100的框图。处理设备100一般可以称为“处理器”或“CPU”。此处的“处理器”或“CPU”将指能够执行对算术、逻辑或I/O操作进行编码的指令的设备。在一个说明性示例中,处理器可以包括算术逻辑单元(ALU)、控制单元以及多个寄存器。在进一步的方面中,处理器可以包括一个或多个处理核,并且因此,处理器可以是通常能够处理单个指令流水线的单核处理器,或可以是可以同时处理多个指令流水线的多核处理器。在另一方面中,处理器可以实现为单个集成电路、两个或更多个集成电路,或可以是多芯片模块(例如,其中,各个微处理器管芯被包括在单个集成电路封装中,并且因此,这些微处理器管芯共享单个插槽)的组件。
如图1中所示,处理设备100可包括各种组件。在一个实现方式中,处理设备100可包括一个或多个处理器核110以及其他组件,如所示地彼此耦合。处理设备100还可包括通信组件(未示出),其可用于处理设备100的各组件之间的点对点通信。处理设备100可用在包括但不限于台式计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网设备或任何其他类型的计算设备的计算系统(未示出)中。在另一实现方式中,处理设备100可用在芯片上系统(SoC)系统中。
处理器核110可以执行处理设备100的指令。处理器核110包括但不限于用于取出指令的预取逻辑、用于解码指令的解码逻辑、用于执行指令的执行逻辑等。处理器核110包括用于高速缓存指令和/或数据的高速缓存(未示出)。高速缓存包括但不限于第一级、第二级和末级高速缓存(LLC),或处理设备100内的高速缓存存储器的任何其他配置。处理器核110可以与计算系统的单个集成电路(IC)芯片上计算系统一起使用。芯片上计算系统的一个实现方式可以包括处理器和存储器。一个这样的系统的存储器是闪存。闪存可以位于与处理器和其他系统组件相同的管芯上。另外,诸如存储器控制器或图形控制器的其他逻辑块也可以位于芯片上系统上。这些指令可包括但不限于:用于取出指令的预取逻辑、用于解码指令的解码逻辑、用于执行指令的执行逻辑等等。
在一个实现方式中,处理设备100可以包括VMM 120。VMM 120还可以被称为管理程序。VMM 120可以是可以包括处理设备100的主机计算机系统的硬件平台的抽象的物理层,并且将该抽象呈现给由主机计算机系统托管的VM(也可以称为“访客”)130。VMM 120为VM130提供虚拟操作平台,并且管理VM 130的执行。在一些实现方式中,VMM 120可以管理多于一个VM 130。
VM 130可以是执行程序的机器的软件实现,如同它是实际的物理机器。程序可以包括访客操作系统(OS)(诸如访客OS150)以及其他类型的软件和/或应用。在一个实现方式中,VM 130包括EPC存储器140。EPC存储器140为VM 130的应用提供安全位置,以在OS进程的上下文内执行代码并存储数据。在一个实现方式中,EPC存储器140包括飞地存储器页,诸如父页142和与父页142相关联的多个子页144a-144n。父页142包括关于EPC存储器140的元数据。这种元数据包括EPC存储器140的尺寸、EPC存储器140的基址、子页144的总数,等等。多个子页144a-144n中的每一个包括指向父页142的地址的地址。在一个实现方式中,可以将父页142和/或子页144a-144n从存储器(未示出)经由总线(未示出)加载到VM 130的EPC存储器140中。
在一个实现方式中,可以将父页142和/或子页144a-144n从EPC存储器140经由总线驱逐到存储器中。在一个实现方式中,VMM 120加载和/或驱逐父页142和/或子页144a-144n,而VM 130不知道父页142和/或子页144a-144n的加载和/或驱逐。在一个实现方式中,VM 130在VMM 120的管理下加载和驱逐父页142和/或子页144a-144n。
在一个实现方式中,父页142包括第一子计数器160(也称为物理计数器),其包括物理地存在于EPC存储器140中的子页144a-144n的总数的第一值。第一子计数器160可以是父页142中的元数据的一部分。由此,被包括在EPC存储器140中的每个父页142可以具有其自己的第一子计数器160。在一个实现方式中,第一子计数器160对从EPC存储器140中被物理地驱逐的子页144a-144n的数量计数。在一个实现方式中,通过移除子页的内容并以加密形式将该内容存储在存储器中来物理地驱逐子页,因此子页完全是空的并且可用于从EPC中被驱逐或移除。在一个实现方式中,在对各个子页144a-144n中的一个的物理驱逐后,将第一子计数器160中的子页144a-144n的总数的第一值减1值。在一个实现方式中,第一子计数器160对被物理地加载到EPC存储器140中的子页144a-144n的数量计数。在一个实现方式中,当各个子页144a-144n中的任一个被物理地加载到EPC存储器140中时,将第一子计数器160中的子页144a-144n的总数的第一值增加1值。
在第一示例中,EPC存储器140最初可以包括5个子页144a-144n,所有这些子页最初被物理地加载到EPC存储器140中。由此,第一子计数器160的第一值最初被设置为5。每当5个子页144a-144n中的子页从EPC存储器140中被物理地驱逐时,将第一子计数器160的第一值减1,直到所有5个子页144a-144n从EPC存储器140中被物理地驱逐。结果,随着子页144a-144n从EPC存储器140中被物理地驱逐,第一子计数器160的第一值从5变为0。
在另一第二示例中,EPC存储器140可以不包括任何子页144a-144n。结果,第一子计数器160的第一值被初始化为0。此后,任何时候子页144a-144n被物理地加载到EPC存储器140中,将第一子计数器160的第一值增加1值,直到所有5个子页144a-144n被物理地加载到EPC存储器140中。这导致随着子页144a-144n被物理地添加到EPC存储器140,第一子计数器160的第一值从0变为5。
在一个实现方式中,父页142包括第二子计数器(也称为虚拟计数器)170,其包括当前不存在于EPC存储器140中(例如,由于VMM 120的分页)的子页144a-144n的总数的第二值。第二子计数器170可以是父页142中的元数据的一部分。由此,被包括在EPC存储器140中的每个父页142可以具有其自己的第二子计数器170。如上文所讨论的,VMM分页可以包括但不限于,将父页142和子页144a-144n加载到EPC存储器140中、访问EPC存储器140中的父页142和子页144a-144n、以及从EPC存储器140中驱逐父页142和子页144a-144n。在一个实现方式中,对子页144a-144n的VMM分页支持超额订阅。如上文所讨论的,超额订阅包括在多个VM之间共享EPC页,即父页142和子页144a-144n。因此,当前不在VM 130中的子页144a-144n可能正被另一VM(未示出)使用。在一个实现方式中,第二子计数器170与第一子计数器160类似地操作,通过对从EPC存储器140中被物理地驱逐但虚拟地存在于EPC存储器140中的子页144a-144n的数量计数,以及通过对被物理地加载到EPC存储器140中但虚拟地不存在于EPC存储器140中的子页144a-144n的数量计数。在一个实现方式中,与第一子计数器160的计数相比,第二子计数器170反向计数。在一个实现方式中,在仅由于VMM分页的对各个子页144a-144n中的一个或多个的物理驱逐后,将第二子计数器170中的子页144a-144n的总数的第二值增加1值。
返回参考上面的第一示例,其中EPC存储器140最初包括被物理地加载到EPC存储器140中的5个子页144a-e,第一子计数器的第一值被初始化为5。相应地,在该第一示例中,第二子计数器170的第二值被初始化为0,因为这5个子页中没有一个不虚拟地存在于EPC存储器140中。第二子计数器170的该初始值0也指示物理地存在于EPC存储器140中的所有5个子页144a-144e当前都不用于VMM分页。每当5个子页144a-144n中的子页从EPC存储器140中被物理地驱逐以用于VMM分页时,将第二子计数器170的第二值增加1,直到所有5个子页144a-144n从EPC存储器140中被物理地驱逐以用于VMM分页。当所有5个子页144a-144n从EPC存储器140中被物理地驱逐时,第二子计数器170的第二值处于值5。由此,第二值指示所有5个子页144a-144n从EPC存储器140中被物理地驱逐以用于VMM分页,但虚拟地存在于EPC存储器140中。
返回参考上面的第二示例,其中EPC存储器140最初包括0个子页144a-144n,第一子计数器的第一值被初始化为0。相应地,在该第二示例中,由于5个子页144a-144n中没有一个物理地存在于EPC存储器中,因此VMM 120确定所有5个子页被从EPC存储器140中物理地移除以用于VMM分页、但虚拟地存在于EPC存储器中,并且因此将第二子计数器170的第二值初始化为5。此后,任何时候子页144a-144n被物理地加载回EPC存储器140中,将第二子计数器170的第二值减1值,直到所有5个子页144a-144n被物理地加载到EPC存储器140中。这导致第二子计数器170的第二值从5变为0。
在一个实现方式中,VMM 120管理对父页142和对应的子页144a-144e的物理加载和物理驱逐。在一个实现方式中,即使当对应的子页144a-144n中的一个或多个已经从存储器中被物理地驱逐以用于VMM分页时,VMM 120也防止移除EPC存储器140中的父页142。
在一个实现方式中,VMM 120可以接收来自VM 130的驱逐父页142的请求。响应于所接收的驱逐父页142的请求,VMM 120检查第一子计数器160的第一计数值。在一个实现方式中,VMM 120确定第一子计数器160的第一计数值不是0(即,一个或多个子页144a-144n物理地存在于EPC存储器140中)。响应于第一子计数器160的非零值,VMM 120可以生成第一错误代码。在一个实现方式中,当第一子计数器160的第一计数值大于0时,生成第一错误代码。第一错误代码指示一个或多个对应的子页144a-144n物理地存在于EPC存储器140中。在一个实现方式中,第一错误代码被发送到VM 130。在一个实现方式中,当与父页142相关联的子页144a-144n物理地存在于EPC存储器140中时,第一错误代码阻止VM 130驱逐父页142。
在一个实现方式中,VMM 120确定第一子计数器160中的第一计数值是0(即,子页144a-144n中没有一个物理地存在于EPC存储器140中)。在一个实现方式中,在确定第一计数值为0后,VMM 120进一步检查第二子计数器170中的第二计数值。在一个实现方式中,VMM120确定第二子计数器170中的第二计数值不是0。第二子计数器170的第二计数值的该非零值指示与父页142相关联的(先前物理地存在于EPC存储器140中的)一个或多个子页144a-144n当前不物理地存在于EPC存储器140中但虚拟地存在于EPC存储器140中,因为它们正在被用于VMM分页(即由另一个VM共享)。在一个实现方式中,当第二子计数器170的第二计数值不为0(例如,非零或大于零)时,VMM生成第二错误代码。
第二错误代码指示一个或多个子页144a-144n虚拟地存在于EPC存储器140中,因为它们正在被用于VMM分页。在一个实现方式中,第二错误代码被发送到VM 130。在一个实现方式中,当EPC存储器140中的与父页142相关联的一个或多个子页144a-144n正在被用于VMM分页(诸如与另一个VM共享一个或多个子页144a-144n)时,第二错误代码阻止VM 130驱逐父页142。在一个实现方式中,第二子计数器170的第二计数值是0。第二子计数器170的第二计数值的该0值指示与父页142相关联的子页144a-144n中没有一个正在被用于VMM分页。在一个实现方式中,当第一计数值为0从而没有子页144a-144n物理地存在于EPC存储器中时并且当第二计数值为0从而子页144a-144n因为它们未被用于VMM分页而不虚拟地存在于EPC存储器140中时,VMM 120从EPC存储器140中移除父页142。在一个实现方式中,当未存在于EPC存储器140中的子页144a-144n可能先前已经被驱逐时,允许从EPC存储器140中移除父页142。
图2示出根据本公开的一个实现方式的处理设备200,其包括VMM 220、第一VM230、第一子计数器260、第二子计数器270、和第二VM 280以实现指令集架构环境。在一个实现方式中,处理设备200与上文参考图1描述的处理设备100相同。在一个实现方式中,第一子计数器260与上文参考图1描述的第一子计数器160相同。在一个实现方式中,第二子计数器270与参考图1描述的第二子计数器170相同。在一个实现方式中,VMM 220与上文参考图1描述的VMM 120相同。
在一个实现方式中,第一VM 230与上文参考图1描述的VM 130相同。在一个实现方式中,第一EPC存储器240与参考图1描述的EPC存储器140相同。在一个实现方式中,第一父页242与参考图1的第一父页142相同。在一个实现方式中,第一子页244a-244n与参考图1的子页144a-144n相同。第一子计数器260和第二子计数器270可以是图2中的父页242的元数据的一部分。
在一个实现方式中,第二VM 280与第一VM 230类似地起作用。在一个实现方式中,第二VM 280包括第二EPC存储器290,其类似于第一EPC存储器240。在一个实现方式中,第二EPC存储器290与第一EPC存储器240类似地包括飞地存储器页。
VMM 220可以包括驱逐组件222、加载组件224、第一计数组件226、和第二计数组件228。在一个实现方式中,这些组件中的每一个执行某些操作。在不失一般性的情况下,更多或更少的组件可以被包括在VMM 220中。
在一个实现方式中,VMM 220标识一个或多个子页(例如,子页244a-244n)中的将从第一EPC存储器240中被物理地驱逐的子页。当哪个子页的内容已经被移除并且因此该子页为空的并且可用的时,VMM 220可以标识该子页将被物理地驱逐。如上文所讨论的,子页的内容可以以加密形式存储在存储器中。在一个实现方式中,VMM 220接收来自第二VM 280的访问来自第一VM 230的第一EPC存储器240的一个或多个子页244a-244n中的子页的请求。在一个实现方式中,驱逐组件222物理地移除子页(其内容已经被移除并且因此是空的并且可用的)。例如,第一子页244n从第一VM 230的第一EPC存储器240中被物理地驱逐。在一个实现方式中,计数器组件226将第一子计数器260的第一计数值减1,因为少一个第一子页244n物理地存在于第一EPC存储器240中。在一个实现方式中,计数器组件226将第二子计数器270的第二计数值加1,因为存在虚拟地存在于EPC存储器240中、可以用于VMM分页(诸如由第二VM 280共享)的一个第一子页244n。在一个实现方式中,VMM 220从第一EPC存储器中物理地移除第一子页244n并且将其物理地放置在第二VM 280的第二EPC存储器290中。
在一个实现方式中,VMM 220进一步标识子页何时将被物理地加载到EPC存储器中。在一个实现方式中,VMM 220接收来自第一VM 230的访问来自第一EPC存储器240的第一子页的请求。在一个实现方式中,VMM 220确定由第二VM请求的子页与第一子页相同,即先前从第一EPC存储器240中被物理地移除并且被提供给第二VM 280的第一子页244n。在一个实现方式中,VMM 220确定第二VM 280不再使用从第一VM 230的第一EPC存储器240中被移除的第一子页244n。在一个实现方式中,VMM 220从第二VM 280中检取第一子页244n。在一个实现方式中,加载组件224将第一子页244n物理地加载回第一EPC存储器240中。在一个实现方式中,计数器组件226递增第一子计数器260的第一计数值,因为现在有一个子页被物理地添加到第一EPC存储器240中。在一个实现方式中,计数器组件226递减第二子计数器270的第二计数值,因为少一个子页虚拟地存在于第一EPC存储器240中。
在一个实现方式中,VMM 220接收来自第一VM 230的从第一EPC存储器240中物理地驱逐第一父页242的请求。在一个实现方式中,第一计数组件226确定第一子计数器260中的第一计数值。在一个实现方式中,当第一子计数器260中的第一计数值不为0时,VMM 220生成第一错误代码。如上文所讨论的,第一错误代码指示一个或多个子页物理地存在于EPC存储器240中。由此,当第一子页244a-244n中的一个或多个物理地存在于EPC存储器中时,不允许移除第一父页242。在一个实现方式中,第一错误代码被发送到第一VM 230。
此外,响应于接收来自第一VM 230的驱逐第一父页242的指令/请求并且确定第一子计数器的第一计数值为0,第二计数组件228确定第二子计数器270中的第二计数值。在一个实现方式中,响应于第二计数组件228确定第二子计数器270中的第二计数值不为0,VMM220生成第二错误代码。如上文所讨论的,第二错误代码指示第一EPC存储器240的第一子页244a-244n中的一个或多个虚拟地存在于EPC存储器240中,因为其当前正在被用于VMM分页,诸如由第二VM 280共享。由此,当EPC存储器140的一个或多个第一子页244a-244n因为其正在经历VMM分页而虚拟地存在于EPC存储器140中时,不允许移除第一父页242。在一个实现方式中,第二错误代码被发送到第二VM。
在一个实现方式中,响应于计数组件220确定第二子计数器270中的第二计数值为0(除了第一子计数器270的第一计数值为0之外),这指示一个或多个第一子页244a-244n未物理地存在于EPC存储器240中并且因为未经历VMM分页也未虚拟地存在于EPC存储器240中。在一个实现方式中,当第二子计数器260的第二计数值为0(并且第一子计数器270的第一计数值为0)时,VMM 220从第一EPC存储器240中移除第一父页242。
图3是根据本公开的实施例的用于管理处理设备中的VM的飞地存储器页的方法300的流程图。方法300可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理设备、通用计算机系统、或专用机器上运行的指令)、固件或其组合。在一个实施例中,方法300可以部分地由上文参考图1和2描述的VMM120和220执行。
为了简化说明,方法300被描绘以及被描述成一系列动作。然而,根据本公开的动作可以按各种顺序发生,并且/或者可以同时发生,并且伴随本文未呈现和描述的其他动作发生。此外,并不是所有示出的动作可以被执行以实现根据所公开主题的方法300。此外,本领域技术人员将会理解并领会,方法300可以替代地经由状态图被表示为一系列相关的状态或者被表示为事件。
在框302处,处理逻辑标识多个子页中的将被物理地加载到多个VM中的VM的EPC存储器中的子页。如上文所讨论的,EPC存储器是用于VM的应用的安全位置,以在OS进程的上下文内执行代码并存储数据。此外,如上文所讨论的,EPC存储器包括诸如父页和多个子页的飞地存储器页。父页包括关于EPC存储器的元数据。这种元数据包括EPC存储器的尺寸、EPC存储器的基址、子页的总数,等等。多个子页中的每一个包括指向父页的地址的地址。
在一个实现方式中,作为接收来自该VM的访问来自该VM的EPC存储器的子页的请求的一部分,处理逻辑标识该子页。在框304处,处理逻辑确定所标识的子页先前被从该VM的EPC存储器中物理地移除,但是虚拟地存在于EPC存储器中,因为其正在被与另一个VM共享。在框306处,处理逻辑确定先前被从该VM的EPC存储器中物理地移除的该子页当前未被该另一个VM使用。
在框308处,处理逻辑将子页物理地加载回VM的EPC存储器中。在一个实现方式中,在将子页物理地加载到VM的EPC存储器中之前,处理逻辑从另一个VM的EPC存储器中物理地驱逐子页。在一个实现方式中,当子页被标记为无效时,从VM的EPC存储器中驱逐子页。在框310处,处理逻辑递增第一子计数器的第一计数值。如上文所讨论的,第一子计数器对物理地存在于EPC存储器中的子页的数量计数。此外,如上文所讨论的,第一计数值是物理地存在于EPC存储器中的子页的总数。在框310处,处理逻辑递减第二子计数器的第二计数值。如上文所讨论的,第二子计数器对因为正在被另一个VM共享而虚拟地存在的EPC存储器的子页的数量计数。此外,如上文所讨论的,第二计数值是因为正在被另一个VM共享而虚拟地存在于VM的EPC存储器中的子页的总数。
图4是根据本公开的实施例的用于管理处理设备中的VM的飞地存储器页的另一方法400的流程图。方法400可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理设备、通用计算机系统、或专用机器上运行的指令)、固件或其组合。在一个实施例中,方法400可以部分地由上文参考图1和2描述的VMM 120和220执行。
为了简化说明,方法400被描绘以及被描述成一系列动作。然而,根据本公开的动作可以按各种顺序发生,并且/或者可以同时发生,并且伴随本文未呈现和描述的其他动作发生。此外,并不是所有示出的动作可以被执行以实现根据所公开主题的方法400。此外,本领域技术人员将会理解并领会,方法400可以替代地经由状态图被表示为一系列相关的状态或者被表示为事件。
在框402处,处理逻辑标识多个子页中的将从多个VM中的VM的EPC存储器中被物理地驱逐的子页。在一个实现方式中,处理逻辑通过接收来自多个VM中的另一个VM的访问来自该VM的EPC存储器的该子页的请求来标识该子页。在框404处,处理逻辑确定VM未使用被标识为将被物理地驱逐的该子页。在框406处,处理逻辑从VM的EPC存储器中物理地驱逐该子页。在一个实现方式中,当子页被标记为无效时,从VM的EPC存储器中驱逐该子页。在框408处,处理逻辑递减第一子计数器的第一计数值。如上文所讨论的,第一计数值是物理地存在于EPC存储器中的子页的总数。在框410处,处理逻辑递增第二子计数器的第二计数值。如上文所讨论的,第二计数值是因为正在被另一个VM共享而虚拟地存在于VM的EPC存储器中的EPC存储器的子页的总数。
图5是根据本公开的实施例的用于管理处理设备中的虚拟机的飞地存储器页的另一方法500的流程图。方法500可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理设备、通用计算机系统、或专用机器上运行的指令)、固件或其组合。在一个实施例中,方法500可以部分地由上文参考图1和2描述的VMM 120和220执行。
为了简化说明,方法500被描绘以及被描述成一系列动作。然而,根据本公开的动作可以按各种顺序发生,并且/或者可以同时发生,并且伴随本文未呈现和描述的其他动作发生。此外,并不是所有示出的动作可以被执行以实现根据所公开主题的方法500。此外,本领域技术人员将会理解并领会,方法500可以替代地经由状态图被表示为一系列相关的状态或者被表示为事件。
在框502处,处理逻辑接收来自多个VM中的VM的从该VM的EPC存储器中驱逐父页的请求。在框504处,处理逻辑检查第一子计数器中的第一计数值。如上文所讨论的,第一计数值是物理地存在于EPC存储器中的子页的总数。在框506处,处理逻辑确定第一计数值是否等于0。在框508处,当确定第一计数值不等于0时,处理逻辑生成第一错误代码。如上文所讨论的,第一错误代码指示物理地存在于该VM的EPC存储器中的一个或多个子页。由此,当子页存在于EPC存储器中时,不会移除父页。
在框510处,处理逻辑将第一错误代码发送到该VM。在框512处,当确定第一计数值等于0时(在框506处),处理逻辑检查第二子计数器中的第二计数值。在框514处,处理逻辑确定第二计数值是否等于0。如上文所讨论的,第二计数值是当前未物理地存在于该VM的EPC存储器中但由于VMM分页而虚拟地存在于VMM的EPC存储器中的子页的总数。此外,如上文所讨论的,VMM分页包括与不同于该VM的另一个VM共享EPC页,即该VM的父页和子页。在框516处,当确定第二计数值不等于0时,处理逻辑生成第二错误代码。如上文所讨论的,第二错误代码指示一个或多个子页虚拟地存在于该VM的EPC存储器中,因为它们正在被用于VMM分页。在框518处,处理逻辑将第二错误代码发送到该VM。在框520处,当确定第二计数值等于0时,处理逻辑从EPC存储器中移除父页。
图6A是示出用于根据本公开的一个实现方式实现的处理器600的微架构的框图。具体地,处理器600描绘根据本公开的至少一种实现方式的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。
处理器600包括前端单元630,该前端单元630耦合至执行引擎单元650,前端单元630和执行引擎单元650两者耦合至存储器单元670。处理器600可包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,处理器600可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在一个实现方式中,处理器600可以是多核处理器或者可以是多处理器系统的一部分。
前端单元630包括耦合至指令高速缓存单元634的分支预测单元632,该指令高速缓存单元634耦合至指令转换后备缓冲器(TLB)636,该指令转换后备缓冲器636耦合至指令取出单元638,该指令取出单元638耦合至解码单元640。解码单元640(也称为解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码器640可使用各种不同的机制来实现。合适机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元634进一步耦合至存储器单元670。解码单元640耦合至执行引擎单元650中的重命名/分配器单元652。
执行引擎单元650包括重命名/分配器单元652,该重命名/分配器单元652耦合至引退单元654和一个或多个调度器单元的集合656。引退单元654可以包括虚拟机监视器503,用于根据本发明的实现方式管理处理设备的受信任执行环境中的飞地存储器页。调度器单元656表示任何数目的不同调度器,包括预留站(RS)、中央指令窗等。调度器单元656耦合至物理寄存器堆单元658。物理寄存器堆单元658中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等。(多个)物理寄存器堆单元658与引退单元654重叠以图示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。执行引擎单元650可包括例如管理功能单元的功率功能的功率管理单元(PMU)690。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。各种不同类型的寄存器可适用,只要它们能够存储并提供如本文中所描述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元654和物理寄存器堆单元658耦合至执行集群660。(多个)执行集群660包括一个或多个执行单元662的集合和一个或多个存储器访问单元664的集合。执行单元662可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)进行操作。
尽管一些实现方式可以包括专用于特定功能或功能集合的多个执行单元,但其它实现方式可包括仅一个执行单元或全部执行所有功能的多个执行单元。调度器单元656、物理寄存器堆单元658以及执行集群660示出为可能是复数个,因为某些实现方式为某些类型的数据/操作创建单独的流水线(例如,各自都具有其自身的调度器单元、物理寄存器堆单元和/或执行集群的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线——并且在单独的存储器访问流水线的情况下,实现了其中仅此流水线的执行集群具有存储器访问单元664的某些实现方式)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序发布/执行。
存储器访问单元664的集合耦合至存储器单元670,该存储器单元670可包括数据预取器680、数据TLB单元672、数据高速缓存单元(DCU)674、第二级(L2)高速缓存单元676,仅举数例。在一些实现方式中,DCU 674也称为第一级数据高速缓存(L1高速缓存)。DCU 674可处置多个未决的高速缓存未命中,并继续服务传入的存储和加载。它还支持维护高速缓存一致性。数据TLB单元672是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实现方式中,存储器访问单元664可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元670中的数据TLB单元672。L2高速缓存单元676可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实现方式中,数据预取器680通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到DCU 674。预取可以指在存储在存储器层级结构(例如,较低等级的高速缓存或存储器)的一个存储器位置中的数据被处理器实际要求之前,将该数据传送至更靠近(例如,产生更少访问等待时间)处理器的较高等级的存储器位置。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器中的一个到数据高速缓存和/或预取缓冲器的早期检取。
在一个实现方式中,处理器600可以与参考图1描述的用于支持在参考本公开的实现方式描述的处理设备中的对SE的平台迁移的处理设备100相同。
处理器600可以支持一个或多个指令集(例如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述寄存器重命名,但应当理解,寄存器重命名可在有序架构中被使用。虽然处理器的所示出的实现方式也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代的实现方式也可具有用于指令和数据的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实现方式中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存都可在核和/或处理器的外部。
图6B是示出根据本公开的一些实现方式的由图6A的处理器600实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图6B中的实线框图示出有序流水线,而虚线框图示出寄存器重命名、乱序发布/执行流水线。在图6B中,处理器流水线601包括取出级602、长度解码级604、解码级606、分配级608、重命名级610、调度(也被称为分派或发布)级612、寄存器读取/存储器读取级614、执行级616、写回/存储器写入级618、异常处置级622和提交级624。在一些实现方式中,各个级602-624的排序可以与所示的不同,并且不限于图6B中所示的特定排序。
图7示出根据本公开的一个实现方式的用于处理器700的微架构的框图,处理器700包括用于支持对SE的平台迁移的逻辑电路。在一些实现方式中,根据一个实现方式的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一种实现方式中,有序前端701是处理器700的一部分,其取出将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。
前端701可包括若干单元。在一种实现方式中,指令预取器726从存储器取出指令,并将指令馈送至指令解码器728,指令解码器728随后解码或解释指令。例如,在一种实现方式中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实现方式中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一种实现方式的操作。在一种实现方式中,追踪高速缓存730接受经解码的微操作,并将它们组装为微操作队列734中的程序有序序列或踪迹,以用于执行。当跟踪高速缓存730遇到复杂指令时,微代码ROM 732提供完成操作所需的微操作。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一种实现方式中,如果需要超过四个微操作来完成指令,则解码器728访问微代码ROM732以进行该指令。对于一种实现方式,指令可被解码为少量的微操作以用于在指令解码器728处进行处理。在另一实现方式中,如果需要若干微操作来完成操作,则可将指令存储在微代码ROM 732中。追踪高速缓存730参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 732读取微代码序列以完成根据一种实现方式的一条或多条指令。在微代码ROM 732完成对于指令的微操作序列化之后,机器的前端701恢复从跟踪高速缓存730提取微操作。
乱序执行引擎703是将指令准备好用于执行的地方。乱序执行逻辑具有数个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器702、慢速/通用浮点调度器704、以及简单浮点调度器706)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器702、704、706基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一种实现方式的快速调度器702可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度用于执行的微操作。
寄存器堆708、710位于调度器702、704、706以及执行块711中的执行单元712、714、716、718、720、722、724之间。存在分别用于整数和浮点操作的分开的寄存器堆708、710。一个实现方式的每个寄存器堆708、710也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆708和浮点寄存器堆710也能够彼此传递数据。对于一个实现方式,整数寄存器堆708被划分为两个单独的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实现方式的浮点寄存器堆710具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块711包括执行单元712、714、716、718、720、722、724,在这些执行单元712、714、716、718、720、722、724中实际执行指令。该区块包括寄存器堆708、710,寄存器堆708、710存储微指令需要执行的整数和浮点数据操作数值。一个实现方式的处理器700由以下数个执行单元所组成:地址生成单元(AGU)712、AGU 714、快速ALU 716、快速ALU 718、慢速ALU720、浮点ALU 722、浮点移动单元724。对于一种实现方式,浮点执行块722、724执行浮点、MMX、SIMD、SSE或其他操作。一种实现方式的浮点ALU 722包括64位/64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的多种实现方式,涉及浮点值的指令可使用浮点硬件来处理。
在一个实现方式中,ALU操作进入高速ALU执行单元716、718。一种实现方式的快速ALU 716、718可执行快速操作,有效等待时间为半个时钟周期。对于一种实现方式,大多数复杂整数操作进入慢速ALU720,因为慢速ALU 720包括用于长等待时间类型的操作的整数执行硬件,诸如,乘法器、移位器、标志逻辑和分支处理。存储器加载/存储操作由AGU712、714来执行。对于一种实现方式,整数ALU 716、718、720在对64位数据操作数执行整数操作的上下文中进行描述。在替代实现方式中,ALU716、718、720可被实现为支持多种数据位,包括16位、32位、128位、256位等等。类似地,浮点单元722、724可被实现为支持具有多种宽度的位的一系列操作数。对于一种实现方式,浮点单元722、724可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实现方式中,在父加载完成执行之前,微操作调度器702、704、706就分派依赖性操作。因为在处理器700中微操作被推测地调度和执行,所以处理器700也包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖操作。重放机制追踪使用错误数据的指令,并重新执行这些指令。仅依赖操作需要被重放,而允许独立操作完成。处理器的一种实现方式的调度器和重放机制也设计成用于捕捉用于文本串比较操作的指令序列。
根据本公开的实现方式,处理器700还包括用于实现用于存储器消歧的存储地址预测的逻辑。在一个实现方式中,处理器700的执行块711可以包括用于支持对SE的平台迁移的存储地址预测器(未示出)。
处理器700可以包括耦合至执行块711的引退单元754。引退单元754可以包括虚拟机监视器703,用于根据本公开的实现方式管理处理设备的受信任执行环境中的飞地存储器页。
术语“寄存器”可以指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,实现方式的寄存器不限于意指特定类型的电路。相反,实现方式的寄存器能够存储并提供数据,并能够执行本文中所述的功能。本文所描述的寄存器可以由处理器中的电路使用任何数量的不同技术来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实现方式中,整数寄存器存储32位整数数据。一个实现方式的寄存器堆也包含八个多媒体SIMD寄存器,用于紧缩数据。
对于以下讨论,寄存器应理解为设计成用于保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽MMXTM寄存器(在一些实例中,也称为‘mm’寄存器)。这些MMX寄存器(可用在整数和浮点形式中)可以与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一种实现方式中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实现方式中,整数和浮点可被包含在同一寄存器堆中,或被包含在不同的寄存器堆中。进一步地,在一个实现方式中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
实现方式可在许多不同的系统类型中实现。现在参考图8,所示的是示出了系统800的框图,在系统800中可使用本公开的实现方式。如图8中所示,多处理器系统800是点对点互连系统,并且包括经由点对点互连850耦合的第一处理器870和第二处理器880。虽然仅以两个处理器870和880示出,但是应当理解,本公开的实现方式的范围不限于此。在其他实现方式中,在给定处理器中可存在一个或多个附加处理器。在一个实现方式中,多处理器系统800可以支持本文所述的对SE的平台迁移。
处理器870和880被示为分别包括集成存储器控制器单元872和882。处理器870还包括作为其总线控制器单元的一部分的点对点(P-P)接口876和878;类似地,第二处理器880包括P-P接口886和888。处理器870、880可以经由使用点对点(P-P)接口电路878、888的P-P接口850来交换信息。如图8中所示,IMC 872和882将处理器耦合到相应的存储器,即存储器832和存储器834,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器870、880可使用点对点接口电路876、894、886、898经由单独的P-P接口852、854与芯片组890交换信息。芯片组890还可经由高性能图形接口839来与高性能图形电路838交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组890可经由接口896耦合至第一总线816。在一个实现方式中,第一总线816可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图8中所示,各种I/O设备814可连同总线桥818一起耦合至第一总线816,总线桥818将第一总线816耦合到第二总线820。在一个实现方式中,第二总线820可以是低引脚数(LPC)总线。在一个实现方式中,各种设备可以耦合至第二总线820,包括例如,键盘和/或鼠标822、通信设备827以及存储单元828(诸如,可包括指令/代码和数据830的盘驱动器或其他大容量存储设备)。此外,音频I/O 824可被耦合至第二总线820。注意,其他架构是可能的。例如,代替图8的点对点架构,系统可实现多分支总线或其他此类架构。
现在参考图9,所示的是系统900的框图,在系统900中本公开的一个实现方式可以操作。系统900可包括耦合至图形存储器控制器中枢(GMCH)920的一个或多个处理器910、915。附加处理器915的任选性在图9中利用虚线来表示。在一个实现方式中,根据本公开的实现方式,处理器910、915支持对SE的平台迁移。
每个处理器910、915可以是如上所述的电路、集成电路、处理器和/或硅集成电路的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制单元不可能出现在处理器910、915中。图9图示出GMCH 920可被耦合至存储器940,该存储器940可以是例如动态随机存取存储器(DRAM)。对于至少一个实现方式,DRAM可以与非易失性高速缓存相关联。
GMCH 920可以是芯片组或芯片组的部分。GMCH 920可与(多个)处理器910、915通信,并控制(多个)处理器910、915与存储器940之间的交互。GMCH 920还可担当(多个)处理器910、915和系统900的其他元件之间的加速总线接口。对于至少一个实现方式,GMCH 920经由诸如前端总线(FSB)995之类的多点总线与处理器910、915进行通信。
此外,GMCH 920被耦合至显示器945(诸如平板或触摸屏显示器)。GMCH 920可包括集成图形加速器。GMCH 920被进一步耦合至输入/输出(I/O)控制器中枢(ICH)950,该输入/输出(I/O)控制器中枢(ICH)950可用于将各种外围设备耦合至系统900。在图9的实现方式中作为示例示出了外部图形设备960以及另一外围设备970,外部图形设备960可以是耦合至ICH 950的分立图形设备。
替代地,附加的或不同的处理器也可存在于系统900中。例如,(多个)附加的处理器915可包括与处理器910相同的(多个)附加的处理器、与处理器910异构的或不对称的(多个)附加的处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在包括架构、微架构、热、功耗特征等一系列品质度量的方面,(多个)处理器910、915之间存在各种差异。这些差异可将其自身有效显示为处理器910和915之间的不对称性和异构性。对于至少一个实现方式,各种处理器910和915可驻留在同一管芯封装中。
现在参考图10,所示的是系统1000的框图,在系统1000中本公开的实现方式可以操作。图10图示出处理器1070和1080。在一个实现方式中,处理器1070、1080可以支持如上所述的对SE的平台迁移。处理器1070、1080可以分别包括集成存储器和I/O控制逻辑(“CL”)1072和1082,并且分别经由点对点(P-P)接口1078和1088之间的点对点互连1050彼此相互通信。如所示,处理器1070、1080各自通过相应P-P接口1076至1094以及1086至1098经由点对点互连1052和1054与芯片组1090通信。对于至少一个实现方式,CL 1072、1082可以包括集成存储器控制器单元。CL 1072、1082可包括I/O控制逻辑。如所描绘,存储器1032、1034耦合至CL 1072、1082,并且I/O设备1014也耦合至控制逻辑1072、1082。传统I/O设备1015经由接口1096耦合至芯片组1090。
实现方式可在许多不同的系统类型中实现。图11是根据本公开的实现方式的SoC1100的框图。虚线框是更先进的SoC的任选特征。在图11中,(多个)互连单元1112耦合至:应用处理器1120,包括一个或多个核1102A-N的集合以及(多个)共享高速缓存单元1106;系统代理单元1110;(多个)总线控制器单元1116;(多个)集成存储器控制器单元1114;一组或一个或多个媒体处理器1118,可包括集成图形逻辑1108、用于提供静态和/或视频照相功能的图像处理器1124、用于提供硬件音频加速的音频处理器1126、用于提供视频编码/解码加速的视频处理器1128;静态随机存取存储器(SRAM)单元1130;直接存储器存取(DMA)单元1132;以及用于耦合至一个或多个外部显示器的显示单元1140。在一个实现方式中,存储器模块可以被包括在集成存储器控制器单元1114中。在另一个实现方式中,存储器模块可以被包括在可以被用来访问和/或控制存储器的SoC1100的一个或多个其他组件中。应用处理器1120可以包括用于实现静默存储器指令和未命中率跟踪的PMU以优化如本文的实现方式所述的对线程的切换策略。
存储器层级结构包括核内的一个或多个级别的高速缓存、一组或一个或多个共享高速缓存单元1106、以及耦合至集成存储器控制器单元1114的集合的外部存储器(未示出)。共享高速缓存单元1106的集合可包括一个或多个中间级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合,中间级别的高速缓存诸如第2级(L2)、第3级(L3)、第4级(L4)或其他级别的高速缓存。
在一些实现方式中,一个或多个核1102A-N能够实现多线程。系统代理1110包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1102A-N以及集成图形逻辑1108的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1102A-N在架构和/或指令集方面可以是同构或异构的。例如,核1102A-N中的一些可以是有序的,而另一些是乱序的。作为另一示例,核1102A-N中的两个或更多个能够执行同一指令集,而其他核仅能够执行该指令集的子集或不同的指令集。
应用处理器1120可以是通用处理器,诸如,酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、凌动(AtomTM)或QuarkTM处理器,这些处理器均可以从加利福尼亚州圣克拉拉市的英特尔TM公司获得。替代地,应用处理器1120可以来自另一公司,诸如ARM控股TM公司、MIPSTM等。应用处理器1120可以是专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等等。应用处理器1120可被实现在一个或多个芯片上。应用处理器1120可以是一个或多个衬底的部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS之类的数种工艺技术中的任何技术实现在一个或多个衬底上。
图12是根据本公开的芯片上系统(SoC)设计的实现方式的框图。作为特定的说明性示例,SoC 1200被包括在用户装备(UE)中。在一种实现方式中,UE是指可由终端用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本、或任何其他类似的通信设备。UE通常连接到基站或节点,该基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。
此处,SOC 1200包括2个核——1206和1207。核1206和1207可符合指令集架构,诸如,基于架构酷睿(CoreTM)的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1206和1207被耦合至高速缓存控件1208,该高速缓存控件1208与总线接口单元1209和L2高速缓存1210相关联以与系统1200的其他部分通信。互连1210包括潜在地实现所描述公开的一个或多个方面的芯片上互连,诸如IOSF、AMBA或以上所讨论的其他互连。在一个实现方式中,核1206、1207可以支持本文实现方式所述的对SE的平台迁移。
互连1210提供到其他组件的通信信道,其他组件诸如用于与用户身份模块(SIM)卡对接的SIM 1230、用于保存供核1206和1207执行以初始化和引导SoC 1200的引导代码的引导ROM 1235、用于与外部存储器(例如,DRAM 1260)对接的SDRAM控制器1240、用于与非易失性存储器(例如,闪存1265)对接的闪存控制器1245、用于与外围设备对接的外围控制装置1250(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1220和视频接口1225、用于执行图形相关的计算的GPU 1215等等。这些接口中的任何一者可包括本文中所描述公开的多个方面。另外,系统1200图示出用于通信的外围设备,诸如蓝牙模块1270、3G调制解调器1275、GPS1280以及Wi-Fi 1185。
图13图示出计算机系统1200的按照示例形式的机器的示意图,在该计算机系统1200内,可执行用于使机器执行本文中所讨论的方法中的任何一者或多者的一组指令。在替代实现方式中,可以在LAN、内联网、外联网或因特网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(顺序的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是,术语“机器”也应当认为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一种或更多种方法的机器的任何集合。
计算机系统1300包括处理设备1302、主存储器1304(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1306(例如,闪存、静态随机存取存储器(SRAM)等)以及数据存储设备1318,它们经由总线1330彼此通信。
处理设备1302表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1302也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。在一个实现方式中,处理设备1302可包括一个或处理核。处理设备1302被配置成执行用于执行本文中所讨论的操作和步骤的处理逻辑1326。在一个实现方式中,处理设备1302与参考图1描述的实现根据本公开的实现方式地实现本文所述的对SE的平台迁移的处理器架构100相同。
计算机系统1300可以进一步包括通信地耦合至网络1320的网络接口设备1308。计算机系统1300还可包括视频显示单元1310(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1312(例如,键盘)、光标控制设备1314(例如,鼠标)、以及信号生成设备1316(例如,扬声器)。此外,计算机系统1300可包括图形处理单元1322、视频处理单元1328以及音频处理单元1332。
数据存储设备1318可包括非暂态机器可访问存储介质1324,在其上存储软件1326,软件1326实现本文中所描述的功能的方法中的任何一者或多者,诸如实现静默存储器指令和未命中率追踪以优化以上所描述的对处理设备中的线程的切换策略。在由计算机系统1300对软件1326的执行期间,软件1326也可完全或至少部分地作为指令1326驻留在主存储器1304内和/或作为处理逻辑1326驻留在处理设备1302内;该主存储器1304和处理设备1302也构成机器可访问存储介质。
非暂态机器可读存储介质1324也可被用来存储实现静默存储器指令和未命中率追踪以优化对诸如参考图1中的处理设备100所述的处理设备中的线程的切换策略的指令1326,和/或包含调用以上应用的方法的软件库。虽然非暂态机器可访问存储介质1324在示例实现方式中被示出为单个介质,但术语“机器可访问存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“机器可访问存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行本公开的任何一个或多个方法的一组指令的任何介质。应当相应地认为术语“机器可访问存储介质”包括但不限于:固态存储器以及光和磁介质。
以下示例涉及进一步的实现方式。
示例1是一种处理设备,包括:第一计数器,具有多个子页中的存在于第一虚拟机(VM)的飞地存储器中的子页的数量的第一计数值,其中多个子页与飞地存储器中的父页相关联;以及第二计数器,具有多个子页中的不存在于飞地存储器中并且由第二VM共享的子页的数量的第二计数值,其中第二VM不同于第一VM,其中第一计数器或第二计数器中的至少一个的非零值阻止从飞地存储器驱逐该父页。
在示例2中,示例1的主题可以可选地包括:其中处理设备用于执行虚拟机监视器(VMM)以响应于从飞地存储器移除多个子页中的一个而进行以下操作:递减第一计数器的第一计数值;以及递增第二计数器的第二计数值。
在示例3中,示例1-2的主题可以可选地包括:其中处理设备用于执行VMM以响应于从飞地存储器加载多个子页中的一个而进行以下操作:递增第一计数器的第一计数值;以及递减第二计数器的第二计数值。
在示例4中,示例1-3的主题可以可选地包括:其中VMM用于响应于驱逐父页的请求而确定第一计数器的第一计数值。
在示例5中,示例1-4的主题可以可选地包括:其中VMM用于在确定第一计数器的第一计数值不为0后生成第一错误代码,其中第一错误代码指示一个或多个子页存在于飞地存储器中。
在示例6中,示例1-5的主题可以可选地包括:其中VMM用于在确定第一计数器的第一计数值为0后确定第二计数器的第二计数值是否为0。
在示例7中,示例1-6的主题可以可选地包括:其中VMM用于在确定第二计数器的第二计数值不为0后生成第二错误代码,其中第二错误代码指示一个或多个子页当前由第二VM共享。.
在示例8中,示例1-7的主题可以可选地包括:其中VMM用于在确定第二计数器的第二计数值为0后从飞地存储器驱逐该父页。
示例9是一种芯片上系统(SoC),包括:存储器;以及处理设备,可通信地耦合至存储器,其中处理设备包括:第一计数器,具有多个子页中的存在于第一虚拟机(VM)的飞地存储器中的子页的数量的第一计数值,其中多个子页与飞地存储器中的父页相关联;以及第二计数器,具有多个子页中的不存在于飞地存储器中并且由第二VM共享的子页的数量的第二计数值,其中第二VM不同于第一VM,其中第一计数器或第二计数器中的至少一个的非零值阻止从飞地存储器驱逐该父页。
在示例10中,示例9的主题可以可选地包括:其中处理设备用于执行虚拟机监视器(VMM)以响应于从飞地存储器移除多个子页中的一个而进行以下操作:递减第一计数器的第一计数值;以及递增第二计数器的第二计数值。
在示例11中,示例9-10的主题可以可选地包括:其中处理设备用于执行VMM以响应于从飞地存储器加载多个子页中的一个而进行以下操作:递增第一计数器的第一计数值;以及递减第二计数器的第二计数值。
在示例12中,示例9-11的主题可以可选地包括:其中VMM用于响应于驱逐父页的请求而确定第一计数器的第一计数值。
在示例13中,示例9-12的主题可以可选地包括:其中VMM用于在确定第一计数器的第一计数值不为0后生成第一错误代码,其中第一错误代码指示一个或多个子页存在于飞地存储器中;以及用于在确定第一计数器的第一计数值为0后确定第二计数器的第二计数值是否为0。
在示例14中,示例9-13的主题可以可选地包括:其中VMM用于在确定第二计数器的第二计数值不为0后生成第二错误代码,其中第二错误代码指示一个或多个子页当前由第二VM共享。.
在示例15中,示例9-14的主题可以可选地包括:其中VMM组件用于在确定第二计数器的第二计数值为0后从飞地存储器驱逐该父页。
示例16是一种方法,包括:确定多个子页中的存在于第一虚拟机(VM)的飞地存储器中的子页的数量的第一计数值,其中多个子页与飞地存储器中的父页相关联;以及确定多个子页中的不存在于飞地存储器中并且由第二VM共享的子页的数量的第二计数值,其中第二VM不同于第一VM,其中第一计数器或第二计数器中的至少一个的非零值阻止从飞地存储器驱逐该父页。
在示例17中,示例16的主题可以可选地包括:其中响应于从飞地存储器移除多个子页中的一个,递减第一计数器的第一计数值并且递增第二计数器的第二计数值;以及响应于从飞地存储器加载多个子页中的一个,递增第一计数器的第一计数值并且递减第二计数器的第二计数值。
在示例18中,示例16-17的主题可以可选地包括:在确定第一计数器的第一计数值不为0后生成第一错误代码,其中第一错误代码指示一个或多个子页存在于飞地存储器中。
在示例19中,示例16-18的主题可以可选地包括:在确定第一计数器的第一计数值为0后确定第二计数器的第二计数值是否为0;以及在确定第二计数器的第二计数值不为0后生成第二错误代码,其中第二错误代码指示一个或多个子页当前由第二VM共享。
在示例20中,示例16-19的主题可以可选地包括:在确定第二计数器的第二计数值为0后从飞地存储器驱逐该父页。
示例21是一种非暂态机器可读存储介质,包括指令,指令在由处理设备访问时使处理设备执行操作,操作包括:确定多个子页中的存在于第一虚拟机(VM)的飞地存储器中的子页的数量的第一计数值,其中多个子页与飞地存储器中的父页相关联;以及确定多个子页中的不存在于飞地存储器中并且由第二VM共享的子页的数量的第二计数值,其中第二VM不同于第一VM,其中第一计数器或第二计数器中的至少一个的非零值阻止从飞地存储器驱逐该父页。
在示例22中,示例21的主题可以可选地包括:其中操作进一步包括:响应于从飞地存储器移除多个子页中的一个,递减第一计数器的第一计数值并且递增第二计数器的第二计数值;以及响应于从飞地存储器加载多个子页中的一个,递增第一计数器的第一计数值并且递减第二计数器的第二计数值。
在示例23中,示例21-22的主题可以可选地包括:其中操作进一步包括:在确定第一计数器的第一计数值不为0后生成第一错误代码,其中第一错误代码指示一个或多个子页存在于飞地存储器中。
在示例24中,示例21-23的主题可以可选地包括:其中操作进一步包括:在确定第一计数器的第一计数值为0后确定第二计数器的第二计数值是否为0;以及在确定第二计数器的第二计数值不为0后生成第二错误代码,其中第二错误代码指示一个或多个子页当前由第二VM共享。
在示例25中,示例21-24的主题可以可选地包括:其中操作进一步包括:在确定第二计数器的第二计数值为0后从飞地存储器驱逐该父页。
各实现方式可以具有上文所描述的操作特征的不同的组合。例如,以上所描述的方法的所有任选特征也可参考非暂态计算机可读存储介质来实现。这些示例中的细节可以在一个或多个实现方式中的任何地方被使用。
尽管已参考有限数量的实现方式描述了本公开,但是,本领域技术人员将从其中理解很多修改和变型。所附权利要求书旨在涵盖落入本公开的真实精神和范围内的所有此类修改和变型。
设计可经历从创造到仿真到制造的各阶段。表示设计的数据可用数种方式来表示该设计。首先,如仿真中有用的,可使用硬件描述语言或另一功能性描述语言来表示硬件。另外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某一阶段都达到表示硬件模型中各种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁或光存储(诸如,盘)可以是存储经由光学或电学波来传送的信息的机器可读介质,这些光学或电学波被调制或以其他方式生成以传送这些信息。当指示或承载代码或设计的电学载波被传送达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实现方式的技术的制品(诸如,编码在载波中的信息)。
如本文中所使用的模块指硬件、软件、和/或固件的任何组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一种实现方式中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实现方式中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微控制器执行以进行预定操作。并且可推断,在又一实现方式中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被图示为分开的模块的边界一般不同并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一种实现方式中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实现方式中,使用短语“被配置成”指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然“被配置成”执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实现方式中,使用短语‘用于’、‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如以上所注意,在一个实现方式中,用于、能够、或能用于的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是高逻辑电平,0指的是低逻辑电平。在一种实现方式中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其他表示。例如,十进制数10还可以被表示为二进制值910和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实现方式中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置,而已更新的值潜在地包括低逻辑值,即,置位。注意,可利用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实现方式可以经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可访问/可读介质包括提供(即,存储和/或发送)诸如由计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些非瞬态机器可访问介质与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本公开的诸个实现方式的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或传送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实现方式”或“实现方式”的引用意味着结合该实现方式描述的特定特征、结构或特性被包括在本公开的至少一个实现方式中。因此,在整个说明书的多个位置出现短语“在一种实现方式中”或“在实现方式中”不一定全部是指同一实现方式。此外,在一种或多种实现方式中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实现方式给出了具体实施方式。然而,将显而易见的是,可对这些实现方式作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。因此,应当认为说明书和附图是说明性的而不是限制性的。此外,实现方式和其他示例性语言的上述使用不一定指的是同一实现方式或同一示例,而可能指的是不同和独特的实现方式,也有可能是同一实现方式。
Claims (25)
1.一种处理设备,包括:
第一计数器,具有多个子页中的存在于第一虚拟机(VM)的飞地存储器中的子页的数量的第一计数值,其中所述多个子页与所述飞地存储器中的父页相关联;以及
第二计数器,具有所述多个子页中的不存在于所述飞地存储器中并且由第二VM共享的子页的数量的第二计数值,其中所述第二VM不同于所述第一VM,其中所述第一计数器或所述第二计数器中的至少一个的非零值阻止从所述飞地存储器驱逐所述父页。
2.如权利要求1所述的处理设备,其特征在于,所述处理设备用于执行虚拟机监视器(VMM)以:
响应于从所述飞地存储器移除所述多个子页中的一个而进行以下操作:
递减所述第一计数器的所述第一计数值;以及
递增所述第二计数器的所述第二计数值。
3.如权利要求2所述的处理设备,其特征在于,所述处理设备用于执行所述VMM以:
响应于从所述飞地存储器加载所述多个子页中的一个而进行以下操作:
递增所述第一计数器的所述第一计数值;以及
递减所述第二计数器的所述第二计数值。
4.如权利要求3所述的处理设备,其特征在于,所述VMM用于响应于驱逐所述父页的请求而确定所述第一计数器的所述第一计数值。
5.如权利要求4所述的处理设备,其特征在于,所述VMM用于在确定所述第一计数器的所述第一计数值不为0后生成第一错误代码,其中所述第一错误代码指示一个或多个子页存在于所述飞地存储器中。
6.如权利要求4所述的处理设备,其特征在于,所述VMM用于在确定所述第一计数器的所述第一计数值为0后确定所述第二计数器的第二计数值是否为0。
7.如权利要求6所述的处理设备,其特征在于,所述VMM用于在确定所述第二计数器的所述第二计数值不为0后生成第二错误代码,其中所述第二错误代码指示一个或多个子页当前由所述第二VM共享。
8.如权利要求6所述的处理设备,其特征在于,所述VMM用于在确定所述第二计数器的所述第二计数值为0后从所述飞地存储器驱逐所述父页。
9.一种芯片上系统(SoC),包括:
存储器;以及
处理设备,可通信地耦合至所述存储器,其中所述处理设备包括:
第一计数器,具有多个子页中的存在于第一虚拟机(VM)的飞地存储器中的子页的数量的第一计数值,其中所述多个子页与所述飞地存储器中的父页相关联;以及
第二计数器,具有所述多个子页中的不存在于所述飞地存储器中并且由第二VM共享的子页的数量的第二计数值,其中所述第二VM不同于所述第一VM,其中所述第一计数器或所述第二计数器中的至少一个的非零值阻止从所述飞地存储器驱逐所述父页。
10.如权利要求9所述的SoC,其特征在于,所述处理设备用于执行虚拟机监视器(VMM)以:
响应于从所述飞地存储器移除所述多个子页中的一个而进行以下操作:
递减所述第一计数器的所述第一计数值;以及
递增所述第二计数器的所述第二计数值。
11.如权利要求10所述的SoC,其特征在于,所述处理设备用于执行所述VMM以:
响应于从所述飞地存储器加载所述多个子页中的一个而进行以下操作:
递增所述第一计数器的所述第一计数值;以及
递减所述第二计数器的所述第二计数值。
12.如权利要求11所述的SoC,其特征在于,所述VMM用于响应于驱逐所述父页的请求而确定所述第一计数器的所述第一计数值。
13.如权利要求11所述的SoC,其特征在于,所述VMM用于:
在确定所述第一计数器的所述第一计数值不为0后生成第一错误代码,其中所述第一错误代码指示一个或多个子页存在于所述飞地存储器中;以及
用于在确定所述第一计数器的所述第一计数值为0后确定所述第二计数器的第二计数值是否为0。
14.如权利要求13所述的SoC,其特征在于,所述VMM用于在确定所述第二计数器的所述第二计数值不为0后生成第二错误代码,其中所述第二错误代码指示一个或多个子页当前由所述第二VM共享。
15.如权利要求13所述的SoC,其特征在于,所述VMM组件用于在确定所述第二计数器的所述第二计数值为0后从所述飞地存储器驱逐所述父页。
16.一种方法,包括:
确定多个子页中的存在于第一虚拟机(VM)的飞地存储器中的子页的数量的第一计数值,其中所述多个子页与所述飞地存储器中的父页相关联;以及
确定所述多个子页中的不存在于所述飞地存储器中并且由第二VM共享的子页的数量的第二计数值,其中所述第二VM不同于所述第一VM,其中所述第一计数器或所述第二计数器中的至少一个的非零值阻止从所述飞地存储器驱逐所述父页。
17.如权利要求16所述的方法,其特征在于,进一步包括:
响应于从所述飞地存储器移除所述多个子页中的一个,递减所述第一计数器的所述第一计数值并且递增所述第二计数器的所述第二计数值;以及
响应于从所述飞地存储器加载所述多个子页中的一个,递增所述第一计数器的所述第一计数值并且递减所述第二计数器的所述第二计数值。
18.如权利要求17所述的方法,其特征在于,进一步包括:
在确定所述第一计数器的所述第一计数值不为0后生成第一错误代码,其中所述第一错误代码指示一个或多个子页存在于所述飞地存储器中。
19.如权利要求18所述的方法,其特征在于,进一步包括:
在确定所述第一计数器的所述第一计数值为0后确定所述第二计数器的第二计数值是否为0;
在确定所述第二计数器的所述第二计数值不为0后生成第二错误代码,其中所述第二错误代码指示一个或多个子页当前由所述第二VM共享;以及
在确定所述第二计数器的所述第二计数值为0后从所述飞地存储器驱逐所述父页。
20.一种非暂态机器可读存储介质,包括指令,所述指令在由处理设备访问时使所述处理设备执行操作,所述操作包括:
确定多个子页中的存在于第一虚拟机(VM)的飞地存储器中的子页的数量的第一计数值,其中所述多个子页与所述飞地存储器中的父页相关联;以及
确定所述多个子页中的不存在于所述飞地存储器中并且由第二VM共享的子页的数量的第二计数值,其中所述第二VM不同于所述第一VM,其中所述第一计数器或所述第二计数器中的至少一个的非零值阻止从所述飞地存储器驱逐所述父页。
21.如权利要求20所述的非暂态机器可读存储介质,其特征在于,所述操作进一步包括:
响应于从所述飞地存储器移除所述多个子页中的一个,递减所述第一计数器的所述第一计数值并且递增所述第二计数器的所述第二计数值;以及
响应于从所述飞地存储器加载所述多个子页中的一个,递增所述第一计数器的所述第一计数值并且递减所述第二计数器的所述第二计数值。
22.如权利要求21所述的非暂态机器可读存储介质,其特征在于,所述操作进一步包括:
在确定所述第一计数器的所述第一计数值不为0后生成第一错误代码,其中所述第一错误代码指示一个或多个子页存在于所述飞地存储器中。
23.如权利要求22所述的非暂态机器可读存储介质,其特征在于,所述操作进一步包括:
在确定所述第一计数器的所述第一计数值为0后确定所述第二计数器的第二计数值是否为0;
在确定所述第二计数器的所述第二计数值不为0后生成第二错误代码,其中所述第二错误代码指示一个或多个子页当前由所述第二VM共享;以及
在确定所述第二计数器的所述第二计数值为0后从所述飞地存储器驱逐所述父页。
24.至少一种机器可读介质,包括多条指令,所述多条指令响应于在计算设备上执行而使得所述计算设备执行根据权利要求16至19中的任一项所述的方法。
25.一种设备,包括用于执行如权利要求16至19中的任一项所述的方法的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/252,719 | 2016-08-31 | ||
US15/252,719 US9977743B2 (en) | 2016-08-31 | 2016-08-31 | Managing enclave memory pages |
PCT/US2017/044961 WO2018044475A1 (en) | 2016-08-31 | 2017-08-01 | Managing enclave memory pages |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109643283A true CN109643283A (zh) | 2019-04-16 |
CN109643283B CN109643283B (zh) | 2023-07-11 |
Family
ID=61242706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780046094.8A Active CN109643283B (zh) | 2016-08-31 | 2017-08-01 | 用于管理飞地存储器页的设备、方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9977743B2 (zh) |
EP (1) | EP3507700A1 (zh) |
CN (1) | CN109643283B (zh) |
WO (1) | WO2018044475A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10455045B2 (en) | 2016-09-06 | 2019-10-22 | Samsung Electronics Co., Ltd. | Automatic data replica manager in distributed caching and data processing systems |
US10467195B2 (en) * | 2016-09-06 | 2019-11-05 | Samsung Electronics Co., Ltd. | Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system |
US10509733B2 (en) | 2017-03-24 | 2019-12-17 | Red Hat, Inc. | Kernel same-page merging for encrypted memory |
US10209917B2 (en) | 2017-04-20 | 2019-02-19 | Red Hat, Inc. | Physical memory migration for secure encrypted virtual machines |
US10379764B2 (en) * | 2017-05-11 | 2019-08-13 | Red Hat, Inc. | Virtual machine page movement for encrypted memory |
US11354420B2 (en) | 2017-07-21 | 2022-06-07 | Red Hat, Inc. | Re-duplication of de-duplicated encrypted memory |
US11614956B2 (en) | 2019-12-06 | 2023-03-28 | Red Hat, Inc. | Multicast live migration for encrypted virtual machines |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1574747A (zh) * | 2003-05-23 | 2005-02-02 | 微软公司 | 高速缓存后的置换 |
US20090248958A1 (en) * | 2008-03-31 | 2009-10-01 | Spansion Llc | Flash memory usability enhancements in main memory application |
US20130159726A1 (en) * | 2009-12-22 | 2013-06-20 | Francis X. McKeen | Method and apparatus to provide secure application execution |
JP2014112383A (ja) * | 2013-12-19 | 2014-06-19 | Intel Corp | セキュアなアプリケーションの実行を提供するプロセッサ |
US20150186659A1 (en) * | 2013-12-27 | 2015-07-02 | Rebekah Leslie-Hurd | Modifying memory permissions in a secure processing environment |
US20150378941A1 (en) * | 2014-06-27 | 2015-12-31 | Carlos V. Rozas | Instructions and logic to interrupt and resume paging in a secure enclave page cache |
US20160246720A1 (en) * | 2015-02-23 | 2016-08-25 | Intel Corporation | Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7165147B2 (en) | 2003-07-22 | 2007-01-16 | International Business Machines Corporation | Isolated ordered regions (IOR) prefetching and page replacement |
US8095770B2 (en) | 2009-05-08 | 2012-01-10 | Oracle America Inc. | Method and system for mapping data to a process |
US9323686B2 (en) * | 2012-12-28 | 2016-04-26 | Intel Corporation | Paging in secure enclaves |
KR102146334B1 (ko) | 2013-01-17 | 2020-08-20 | 삼성전자 주식회사 | 동적 페이지 할당자 변경 방법 및 시스템 |
-
2016
- 2016-08-31 US US15/252,719 patent/US9977743B2/en active Active
-
2017
- 2017-08-01 CN CN201780046094.8A patent/CN109643283B/zh active Active
- 2017-08-01 EP EP17847166.0A patent/EP3507700A1/en not_active Withdrawn
- 2017-08-01 WO PCT/US2017/044961 patent/WO2018044475A1/en unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1574747A (zh) * | 2003-05-23 | 2005-02-02 | 微软公司 | 高速缓存后的置换 |
US20090248958A1 (en) * | 2008-03-31 | 2009-10-01 | Spansion Llc | Flash memory usability enhancements in main memory application |
US20130159726A1 (en) * | 2009-12-22 | 2013-06-20 | Francis X. McKeen | Method and apparatus to provide secure application execution |
JP2014112383A (ja) * | 2013-12-19 | 2014-06-19 | Intel Corp | セキュアなアプリケーションの実行を提供するプロセッサ |
US20150186659A1 (en) * | 2013-12-27 | 2015-07-02 | Rebekah Leslie-Hurd | Modifying memory permissions in a secure processing environment |
CN104881596A (zh) * | 2013-12-27 | 2015-09-02 | 英特尔公司 | 在安全处理环境中修改存储器权限 |
US20150378941A1 (en) * | 2014-06-27 | 2015-12-31 | Carlos V. Rozas | Instructions and logic to interrupt and resume paging in a secure enclave page cache |
US20160246720A1 (en) * | 2015-02-23 | 2016-08-25 | Intel Corporation | Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache |
Non-Patent Citations (3)
Title |
---|
REENU SARA GEORGE等: "Data anonymization and integrity checking in cloud computing", 《2013 FOURTH INTERNATIONAL CONFERENCE ON COMPUTING, COMMUNICATIONS AND NETWORKING TECHNOLOGIES (ICCCNT)》 * |
刘玲: "虚拟机内存轻量级检查点的研究", 《中国优秀硕士学位论文全文数据库》 * |
郑婷婷等: "云计算环境下的虚拟机快速克隆技术", 《计算机工程与应用》 * |
Also Published As
Publication number | Publication date |
---|---|
EP3507700A1 (en) | 2019-07-10 |
CN109643283B (zh) | 2023-07-11 |
WO2018044475A1 (en) | 2018-03-08 |
US20180060237A1 (en) | 2018-03-01 |
US9977743B2 (en) | 2018-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
CN106716434B (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
US11995001B2 (en) | Supporting secure memory intent | |
CN107851170A (zh) | 支持用于存储器地址范围的可配置安全级别 | |
CN109643283A (zh) | 管理飞地存储器页 | |
CN108351786B (zh) | 在指令集架构中对数据进行排序并且合并经排序数据 | |
CN108388528A (zh) | 基于硬件的虚拟机通信 | |
CN108463826A (zh) | 用于在环转变期间保护栈的处理器扩展 | |
CN108475193A (zh) | 字节排序指令和四位组排序指令 | |
CN106575261A (zh) | 受保护的区域中的存储器初始化 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN108334400A (zh) | 为安全飞地管理存储器 | |
US10019262B2 (en) | Vector store/load instructions for array of structures | |
US11507699B2 (en) | Processor with private pipeline | |
CN106575284A (zh) | 用于内核模块的多核存储器数据记录器 | |
CN108369517A (zh) | 聚合分散指令 | |
US10452423B2 (en) | Method and apparatus for light-weight virtualization contexts | |
CN109690546A (zh) | 支持对客户机飞地存储器页的超额订阅 | |
CN108369508A (zh) | 使用处理器指令前缀的二进制转换支持 | |
CN108475253A (zh) | 用于执行共轭置换指令的处理设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |