CN109690546A - 支持对客户机飞地存储器页的超额订阅 - Google Patents

支持对客户机飞地存储器页的超额订阅 Download PDF

Info

Publication number
CN109690546A
CN109690546A CN201780053578.5A CN201780053578A CN109690546A CN 109690546 A CN109690546 A CN 109690546A CN 201780053578 A CN201780053578 A CN 201780053578A CN 109690546 A CN109690546 A CN 109690546A
Authority
CN
China
Prior art keywords
page
memory
target memory
data structure
processor
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
Application number
CN201780053578.5A
Other languages
English (en)
Other versions
CN109690546B (zh
Inventor
R·M·勒斯列-赫德
F·X·麦克金
C·V·罗扎斯
G·奈格
A·K·玛里克
I·安奈蒂
I·埃里克山德洛维奇
V·尚伯格
S·查卡拉巴蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN109690546A publication Critical patent/CN109690546A/zh
Application granted granted Critical
Publication of CN109690546B publication Critical patent/CN109690546B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开的实现方式提供支持对客户机飞地存储器页的超额订阅。在一个实现方式中,处理设备包括:存储器控制器单元,用于访问安全飞地;以及处理器核,可操作地耦合至该存储器控制器单元。该处理设备用于在存储器中标识目标存储器页。该目标存储器页与虚拟机(VM)的安全飞地相关联。接收包括与目标存储器页对应的上下文信息的数据结构。基于所接收的数据结构来确定目标存储器页的状态。该状态指示目标存储器页是否与以下各项中的至少一项相关联:VM的子存储器页或父存储器页。随即,基于所确定的状态生成用于从安全飞地驱逐目标存储器页的指令。

Description

支持对客户机飞地存储器页的超额订阅
技术领域
本公开的实现方式总体上涉及计算机系统,并且更具体地涉及但不限于支持对客户机飞地存储器页的超额订阅。
背景技术
现代处理器设计成用于保护存储器中的敏感数据免受硬件和软件攻击两者。一些处理器提供能够保留存储器的部分并且在存储器的该部分上实施密码保护的策略。存储器的该部分可包括在安全平台上可访问的多个安全存储器页。
附图说明
通过下文给出的具体实施方式并通过本公开各实现方式的附图,将更完整地理解本公开。然而,不应当认为这些附图将本公开限制为特定实现方式,而是这些附图仅用于解释和理解。
图1图示出根据本公开的实现方式的用于支持对飞地存储器页的超额订阅的处理设备的框图。
图2图示出根据本公开的实现方式的包括用于支持驱逐飞地存储器页的数据结构的系统。
图3图示出根据本公开的实现方式的包括用于支持加载飞地存储器页的另一数据结构的系统。
图4是根据本公开的实现方式的用于驱逐飞地存储器页的方法的流程图。
图5是根据本公开的实现方式的用于加载飞地存储器页的方法的流程图。
图6A是图示出根据本公开的实现方式的用于处理器的微架构的框图。
图6B是图示出根据本公开的实现方式的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图7是图示出根据本公开的一个实现方式的用于处理器的微架构的框图。
图8是图示出可在其中使用本公开的实现方式的系统的框图。
图9是图示出本公开的实现方式可在其中操作的系统的框图。
图10是图示出本公开的实现方式可在其中操作的系统的框图。
图11是图示出根据本公开的实现方式的芯片上系统(SoC)的框图;
图12是图示出根据本公开的实现方式的SoC设计的框图;以及
图13图示出根据本公开的实现方式图示出计算机系统的框图。
具体实施方式
本公开的实现方式提供支持对客户机飞地存储器页的超额订阅。诸如处理器之类的处理设备可实现受信任的执行环境,该受信任的执行环境也被称为飞地存储器(EM)。受信任的执行环境是处理设备的安全区域,其确保在内部加载的应用和数据在机密性和完整性方面将被保护。处理设备可执行驻留在EM中的指令并访问驻留在该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页。
在一些实现方式中,处理设备可实现虚拟机监视器(VMM)(也被称为管理程序),该VMM管理多个虚拟机(VM)以访问与EM相关联的硬件平台的资源。由处理设备执行的VMM可实现针对VM的超额订阅。超额订阅是其中VMM使得比硬件平台上实际可用的平台资源更多的平台资源(例如,存储器、处理器等)例如对VM可用的机制。超额订阅可扩展到共享EM,诸如,在多个VM之间对EPC的相同的一个或多个子页的共享。
在常规系统中,为了支持针对VM的对EPC的此类超额订阅,VMM可尝试从与第一VM相关联的EPC移除子页以将该页提供给另一VM。然而,如果VMM和VM两者都正在对EM页执行操作,则其中即使仍然存在与该父页相关联的一个或多个子页而VM可能从EPC移除父页的情形可能出现。在此类情形下,当从EPC移除父页时,VMM可能不能够将与该父页相关联的子页往回加载到EPC中,因为在EPC中不存在对应的父页。在其他情形下,VM可能不能够访问EPC的与父页相关联的那部分,由此导致页错误。
在常规系统中,为了防止VM从EPC移除仍然具有子页的父页,VMM可使得VM在分页指令发生时退出。这是因为VMM缺乏关于VM对EPC页的使用的知识。随后,VMM可响应于VM从EPC移除父页的尝试而注入失败警告,该警告可阻止VM执行任何指令。在其他情形下,VMM可跟踪由VM对EPC页的使用,该跟踪通过将此类信息存储在VMM中来进行。由VMM进行的对VM对EPC页的使用的该跟踪可能导致对系统开销和性能的不利影响。
本公开的实现方式通过向VMM提供有关客户机OS对给定EPC页的使用的活动信息而不使VMM导致与EPC页相关联的VM退出来解决常规系统的缺点。在一个实现方式中,提供用于执行某个指令的处理器模块。在一些实现方式中,该指令可被用于确定有关EPC页的某些上下文信息而不使VMM招致维护上下文信息的开销。该上下文信息可包括例如,各种页属性、父位置信息以及其他有关信息。在其他实现方式中,提供用于执行不同的指令的另一处理器模块。该不同的指令允许VMM应用有关飞地存储器之内的EPC页的某些上下文信息。该信息可包括例如,飞地父指针以及用于保持对EPC页的父/子关系的跟踪的其他有关信息。在此方面中,处理器指令允许VMM控制客户机不移除或驱逐飞地存储器页。
本公开的实现方式对于允许VMM超额订阅分配给特定VM的EPC存储器页可能是有利的。通过向VMM提供使用权和调整对EPC页的使用的能力,VMM可以能够将EPC页从一个VM分配到另一VM而不必影响系统性能,例如,通过停止由VMM管理的全部VM以便作出分配改变。另外,本文中所提供的技术允许VMM确定有关EPC页的使用的按需信息而不增加在VMM内跟踪和维护该使用信息的系统开销。
图1是图示出根据一个实现方式的处理设备100的框图,该处理设备100可支持对飞地存储器页的超额订阅。处理设备100一般可被称为“处理器”或“CPU”。本文中的“处理器”或“CPU”将指代能够执行对算术、逻辑或I/O操作进行编码的指令的设备。在一个说明性示例中,处理器可以包括算术逻辑单元(ALU)、控制单元以及多个寄存器。在进一步的方面中,处理器可以包括一个或多个处理核,并且因此,处理器可以是通常能够处理单个指令流水线的单核处理器、或可同时处理多个指令流水线的多核处理器。在另一方面中,处理器可被实现为单个集成电路、两个或更多个集成电路,或者可以是多芯片模块(例如,其中各个微处理器管芯被包括在单个集成电路封装中,并且因此,这些微处理器管芯共享单个插槽)的组件。
如图1中所示,处理设备100可包括各种组件。在一个实现方式中,处理设备100可包括一个或多个处理器核110和存储器控制器单元(MCU)120以及其他组件,这些组件如所示地彼此耦合。处理设备100还可包括通信组件(未示出),其可用于处理设备100的各组件之间的点对点通信。处理设备100可在计算系统(未示出)中使用,该计算系统包括但不限于台式计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网设备或任何其他类型的计算设备。在另一实现方式中,处理设备100可在芯片上系统(SoC)系统中使用。在一个实现方式中,SoC可包括处理设备100和存储器。用于一个此类系统的存储器是DRAM存储器。DRAM存储器可以与处理器和其他系统组件位于同一芯片上。另外,诸如存储器控制器或图形控制器之类的其他逻辑块也可以位于该芯片上。
(多个)处理器核110可执行处理设备100的指令。这些指令可包括但不限于:用于取出指令的预取逻辑、用于解码指令的解码逻辑、用于执行指令的执行逻辑等等。计算系统可以代表基于可从美国加利福尼亚州圣克拉拉市的公司获得的族处理器和/或微处理器的处理系统,不过也可使用其他系统(包括具有其他微处理器的计算设备、工程工作站、机顶盒等等)。在一个实现方式中,样本计算系统可执行操作系统、嵌入式软件和/或图形用户界面的版本。因此,本公开的实现方式不限于硬件电路和软件的任何特定组合。
在说明性示例中,处理核110可具有微架构,该微架构包括用于实现指令集架构(ISA)的处理器逻辑和电路。具有不同微架构的多个处理器核可共享公共指令集的至少一部分。例如,ISA的同一寄存器架构在不同的微架构中可使用各种技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)、以及引退寄存器堆)的一个或多个动态分配物理寄存器。
MCU 120可协调使得处理器设备100能够访问包括易失性存储器和/或非易失性存储器的主存储器(未示出)并与之进行通信的功能。在一个实现方式中,MCU 120可包括或可耦合至存储器加密引擎(未示出)。该加密引擎为主存储器中的安全页提供了用于加密、完整性和重放保护的密码机制。存储器中的安全页可指在其中实现加密、完整性和重放保护以保护页免受硬件和软件攻击两者的存储器的页,该存储器诸如,飞地页高速缓存(EPC)存储器167。
MCU 130可包括转换后备缓冲器(TLB)130和高速缓存单元140等等。高速缓存单元140可包括但不限于:第一级高速缓存(L1)142、第二级高速缓存(L2)144和/或末级高速缓存(146),或处理设备120内的高速缓存存储器的任何其他配置。在一些实现方式中,L2 144和其他高速缓存层级(诸如,末级高速缓存146)可位于处理设备100之外。如所示,高速缓存单元140可被集成到处理设备100中。替代地,可使用共享总线将高速缓存单元140耦合至处理设备100。高速缓存单元140可存储由处理设备100的一个或多个组件利用的数据(例如,包括指令)。例如,高速缓存单元142可本地地对存储在TLB 130中的数据进行高速缓存,以用于由处理设备100的组件的更快的访问。处理器100的各种组件可直接地、通过总线和/或存储器控制器或中枢与高速缓存单元140通信。
如本文中所描述,参考图1,如由被实现为在处理设备100上执行的指令的软件(诸如,操作系统(OS)或虚拟机监视器(VMM))所引导,处理器设备100可执行用于标识并请求对来自EPC 167页的存储器页的访问的指令。处理器设备100可支持包括所请求的存储器页的存储器位置的虚拟地址空间。存储器空间位置可由指令使用虚拟地址来引用,这些指令包括加载和存储指令。虚拟地址进而被转换为主存储器中的物理地址。在一个实现方式中,MCU 120可生成并检取数据和其他信息,以通过将存储器请求的虚拟地址转换为物理地址来满足处理器设备100的这些存储器请求。例如,TLB 130维护虚拟地址与对应的物理地址之间的地址转换的映射。当存储器访问请求(诸如对于EPC 167页)被接收时,该请求可能被MCU 120拦截,MCU 120对TLB 130执行查找。该查找可判定TLB 130是否包含与EPC 167页的虚拟地址对应的物理地址。
在一个实现方式中,处理设备100可包括VMM 150。VMM 150还可被称为管理程序。VMM 150可以使可包括处理设备100的主机计算机系统的硬件平台的物理层抽象,并且将该抽象呈现给由主机计算机系统托管的VM(也可以称为“客户机VM”)160。VMM 150为VM 160提供虚拟操作平台,并且管理VM 150的执行。虽然图1中示出了仅一个VM 160,但VMM 150还可管理多个其他VM。VM 160可以是执行程序的机器的软件实现,如同它是实际的物理机器。程序可包括客户机操作系统(OS)(诸如客户机OS 165)以及其他类型的软件和/或应用。
在一个实现方式中,VM 160包括EPC存储器167。EPC存储器167为VM 160的应用提供安全位置,以在OS进程的上下文内执行代码并存储数据。在一个实现方式中,EPC存储器167包括飞地存储器页,诸如父页162和与父页162相关联的多个子页164a-164n。父页162包括关于EPC存储器167的元数据。此类元数据包括EPC存储器167的尺寸、EPC存储器167的基址、子页164a-n的总数量,等等。多个子页164a-164n中的每个子页包括指向父页162的地址的地址。在一个实现方式中,可将父页162和/或子页164a-164n从存储器(未示出)经由总线(未示出)加载到VM 160的EPC存储器167中。
在一些实现方式中,EPC 167的一些页可存储安全飞地控制结构(SECS),诸如SECS169。例如,SECS 169可通过由VM(诸如,VM 160)执行ECREATE指令来创建,以便生成将由硬件使用并由硬件访问(即,不可由不论在飞地内还是飞地外运行的软件读取、写入或以其他方式访问)的数据结构,以定义、维护并保护飞地。SECS 169可包括具有任何尺寸(例如,256或512位)的一个或多个字段,该一个或多个字段存储与飞地存储器和/或加载到飞地存储器中的一个应用或多个应用相关联的指令和/或数据。当应用试图加载飞地时,该应用执行与VM 160相关联的命令。VM 160随后可使用ECREATE命令将SECS 169添加到飞地。在SECS169被创建之后,当与VM 160相关联的应用请求时,VM 160可向飞地添加页并从飞地驱逐页。
在一些实现方式中,VMM 150支持超额订阅,诸如,在多个VM(诸如,VM 160)之间对EPC存储器167的一个或多个子页(例如,子页164a-n)的共享。为了支持超额订阅,VMM 150包括用于确定有关EPC页的上下文信息的飞地信息(info)模块170以及用于在飞地内应用有关EPC页的所确定的上下文信息的飞地设置上下文模块180。该上下文信息可包括用于维护EPC存储器167中子页到父页的关系的信息。例如,模块170、180可允许VMM 150将与父页有关的信息存储在被加载到与该页相关联的EPC存储器167中的SECS 169的字段中。模块170和180能以比所示出的模块更少或更多数量的模块来实现,其中,此类模块驻留在一个或多个处理设备处。如下文更详细地讨论,模块170和180可与VMM 150结合进行操作,以接收并确定EPC存储器167的有关信息,以用于超额订阅与客户机OS 165相关联的EPC页。
图2图示出包括用于支持驱逐飞地存储器页的数据结构210的系统200,例如,该系统200可被用于超额订阅。在该示例中,系统200包括存储器201,该存储器201可包括与图1的处理设备100相关联的易失性或非易失性存储器。存储器201可包括组成EPC 203的一系列安全存储器页。使用参考图1所描述的处理设备100、使用加密、完整性和重放保护来保护驻留在主存储器201中的EPC 203的存储器页。VMM 120可将EPC 203分派给客户机(例如,客户机VM 160),该客户机独立于VMM 120而自由地管理EPC 203的存储器页。根据一些实现方式,VMM 120可包括用于执行允许VMM 120超额订阅已经被分派给客户机VM的EPC 203的存储器页的某些指令或操作的组件。
在一个实现方式中,VMM包括驱逐模块207和飞地信息模块170。驱逐模块208可从存储器201驱逐存储器页。飞地信息模块170可执行允许VMM 120在任何时间获取有关的EPC使用信息的处理器指令(也被称为“ERDINFO”)以支持客户机飞地页的分页。例如,飞地信息模块170向VMM120提供关于所给定的EPC页的信息,诸如,页类型、属性、SECS上下文等。
为了提供关于所给定的EPC页的信息,飞地信息模块170在由VMM 120执行时标识数据结构,诸如数据结构210。在一些实现方式中,数据结构210也被称为ERDINFO结构。数据结构210可被存储在与所给定的EPC页相关联的SECS 169的字段中。在一个实现方式中,指向该数据结构的存储器地址指针可被存储在SECS 169的该字段中。数据结构210可包括数个字段(例如,字段210a-c),这些字段可包括有关EPC 203中的所给定的EPC页的相关信息。每个字段可以具有所确定的尺寸(例如,64位的)。在一些实现方式中,字段可包括例如状态字段210a、标志字段210b和飞地上下文字段210c。
在一些实现方式中,状态字段210a可包括一个或多个位,诸如,状态位标志220a-220c。例如,状态位标志中的每个状态位标志可包括被设置以指示EPC页是否与任何子页相关联的位。例如,如果状态位标志220a被设置(例如,被设置为值1),则这指示EPC页具有存在于EPC中的一个或多个子页。在此方面中,对于非EPC页,该值一直被设置为值0。如果状态位标志220b被设置(例如,被设置为子页的计数),则这指示EPC页具有存在于EPC中的一个或多个虚拟子页。在此方面中,对于非EPC页,该值一直被设置成值0。虚拟子页可指属于VM但由VMM管理的EPC页。在一些实现方式中,状态字段210a可包括保留位(诸如,位220c),以提供有关EPC 203存储器页的父-子关系的进一步的信息。
数据结构210可包括有关EPC页的各种其他字段。例如,标志字段210b可包括指示EPC页的状态的64位的字段。例如,标志字段210b可包括反映存储在EPC 203内的飞地页高速缓存映射(EPCM)的信息。EPCM由飞地存储器使用,以跟踪EPC页的安全属性。EPCM信息可被存储在与标志字段210b相关联的上下文数据结构230中。上下文数据结构230可包括多个位标志(例如,位标志230a-j),这些位标志可包括有关EPC页的状态的信息。例如,位标志230a-j可包括但不限于:指示对该页的读取许可的位标志230a;指示对该页的写入许可的位标志230b;指示对该页的执行许可的位标志230c;指示针对该页的待决状态的位标志230d;指示针对该页的已修改状态的位标志230e;指示针对该页的有特权状态的位标志230f;指示可具有与该页相关联的安全信息(SECINFO)的页类型的位标志230h;指示该页的阻止状态的位标志230j;以及可被保留以用于有关EPC页230的进一步的EPCM信息的其他位标志(例如,位标志230g和230i)。
在一些实现方式中,数据结构210的飞地上下文字段210c可包括有关EPC页的父页的信息。例如,飞地上下文字段210c可包括指向EPC页的父页的存储器地址的指针。在一些实现方式中,当VM 160成功地执行ECREATE指令以创建新的SECS或将SECS从主存储器加载到EPC 203中时,处理设备100将SECS的地址存储在飞地上下文字段210c中。在一个实现方式中,SECS 169的地址可以是作为针对与EPC 203相关联的VM的对存储器进行分页的结果所确定的SECS页的客户机物理地址(GPA)。例如,当VM 160执行用于加载SECS 169的指令时,飞地上下文字段210c可包含GPA。在一些实现方式中,VMM 120可执行用于覆写存储在飞地上下文字段210c中的SECS的地址的指令。例如,当VMM 120执行用于加载SECS的指令时,飞地上下文字段可包含主机物理地址(HPA)。在此方面中,VMM 120可将HPA改变为GPA,以避免使客户机VM混淆。
在一些实现方式中,VMM 120可标识将从EPC 203被物理地驱逐的目标页230。例如,目标页230可以是VM的EPC页,VMM正在使用该EPC页以向另一VM提供存储器的超额订阅。当某个目标页230的内容已经被移除并且因此该目标页230为空的并且可用的时,VMM 120可以标识该目标页230将被物理地驱逐。在此方面中,VMM可执行驱逐模块207以物理地移除目标页(该目标页的内容已经被移除并且因此是空的且可用的)。
为了判定目标页230是否可以被驱逐,VMM 120可相对于目标页230执行飞地信息模块170。作为响应,VMM 120可接收包括与目标存储器页有关的上下文信息的数据结构210。VMM 120随后可检查数据结构210的字段(例如,210a-c),以确定目标页230的状态(诸如,来自EPC 203内的EPCM状态)以及目标存储器页是否与父页相关联。例如,数据结构210可指示指向如由数据结构210的标志字段210b所指示的父页的地址指针。
基于数据结构210,VMM 120还可判定目标页230是否具有存在于飞地中的一个或多个子页或虚拟子页。例如,数据结构的状态位标志220a或状态位标志220b可分别被设置为与目标页230相关联的任何子页或虚拟子页的计数。如果子页或虚拟子页的计数不被设置为0,则不允许VMM驱逐目标页230。在此类情况下,VMM 220可生成错误代码,例如,以提供给VM,或选择另一目标页230以用于超额订阅。如果子页和虚拟子页两者的计数都被设置为0,则目标页230可以被驱逐。在此情况下,VMM准备好产生用于从EPC 203物理地驱逐目标存储器页的指令,以便由另一VM使用该页。
图3图示出根据本公开的实现方式的包括用于支持加载飞地存储器页的数据结构的系统。在从诸如存储器201中的EPC 203之类的EPC驱逐目标页230之后,目标页230随后可由VMM 120往回加载到EPC 203中。在此方面中,VMM包括飞地设置上下文模块180以及用于将存储器页加载到存储器201中的加载模块308。
在一些实现方式中,VMM 120可将存储器页加载到存储器201中,以标识将加载到EPC 203中的目标页230。例如,目标页230可以是VM的EPC页,VMM曾使用该EPC页向另一VM提供存储器的超额订阅。为了将目标页230往回加载到EPC 203中,VMM必须能够定位与目标页相关联的SECS页。这可能是必要的,因为用于加载SECS的指令需要该SECS的地址。在此方面中,VMM 120可执行处理器指令ERDINFO,以针对目标页来标识存储在数据结构210的飞地上下文字段210c中的SECS的地址。一旦针对目标页的SECS父被标识,则加载模块108可将目标页映射到SECS。例如,VMM120可创建用于将目标页映射到与SECS相关联的VM的映射。
在一些实现方式中,如果目标页被恢复到EPC 203,则VMM可执行飞地上下文模块180以恢复该页的上下文。例如,飞地上下文模块180可执行处理器指令(也被称为“ESETCONTEXT”),以将由VMM 120恢复的目标页230的上下文信息往回加载到EPC 203中。在一个实现方式中,该上下文信息可包括存储在数据结构210中的EPCM状态信息,以使得目标页203可被恢复到其从EPC 203被驱逐之前的它的先前的状态。
图4是根据本公开的实现方式的用于实现处理设备的控制指令以支持驱逐飞地存储器页的方法400的流程图。方法400可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,在处理设备上运行的指令)、固件或其组合的处理逻辑来执行。在一个实现方式中,图1的处理设备100的核110可执行方法400。虽然以特定顺序或次序示出,但是除非以其他方式指定,否则这些过程的次序可被修改。因此,所图示的实现方式应被理解成仅作为示例,并且所图示的过程可按不同次序来执行,并且一些过程可被并行地执行。另外,在各实现方式中可以省略一个或多个过程。因此,不在每一实现方式中要求所有过程。其他过程流程是可能的。
方法400开始于框402,在框402中,在存储器中标识目标存储器页。目标存储器页与虚拟机(VM)的安全飞地相关联。在框404中,接收包括与目标存储器页对应的上下文信息的数据结构。在框406中,基于该数据结构来确定目标存储器页的状态。该状态指示目标存储器页是否与以下各项中的至少一项相关联:VM的子存储器页或父存储器页。在框408中,基于所确定的状态产生用于从安全飞地驱逐目标存储器页的指令。
图5是根据本公开的实现方式的用于实现处理设备的控制指令以支持加载飞地存储器页的方法500的流程图。方法500可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,在处理设备上运行的指令)、固件或其组合的处理逻辑来执行。在一个实现方式中,图1的处理设备100的核110可执行方法500。虽然以特定顺序或次序示出,但是除非以其他方式指定,否则这些过程的次序可被修改。因此,所图示的实现方式应被理解成仅作为示例,并且所图示的过程可按不同次序来执行,并且一些过程可被并行地执行。另外,在各实现方式中可以省略一个或多个过程。因此,不在每一实现方式中要求所有过程。其他过程流程是可能的。
方法500开始于框502,在框502中,标识将在虚拟机(VM)的安全飞地中恢复的目标存储器。在框504中,接收包括与VM的父存储器页对应的上下文信息的数据结构。父存储器页存在于安全飞地中。在框506中,基于数据结构来确定目标存储器页与来自安全飞地的父存储器页相关联。在框508中,基于所确定的内容将目标存储器页映射到父存储器页。
图6A是图示出根据本公开的一个实现方式的用于处理器600的微架构的框图,该处理器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。(多个)调度器单元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高速缓存)。DCU674可处置多个未决的高速缓存未命中,并继续服务传入的存储和加载。它还支持维护高速缓存一致性。数据TLB单元672是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实现方式中,存储器访问单元664可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元670中的数据TLB单元672。L2高速缓存单元676可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实现方式中,数据预取器680通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到DCU 674。预取可以指在存储在存储器层级结构(例如,较低等级的高速缓存或存储器)的一个存储器位置中的数据被处理器实际要求之前,将该数据传送至更靠近(例如,产生更少访问等待时间)处理器的较高等级的存储器位置。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器中的一个到数据高速缓存和/或预取缓冲器的早期检取。
在一个实现方式中,处理器600可以与参考本公开的实现方式描述的处理设备中参考图1所描述的用于支持对客户机飞地存储器页的超额订阅的处理设备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包括用于支持对客户机飞地存储器页的超额订阅的逻辑电路。在一些实现方式中,根据一个实现方式的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸如单精度和双精度整数和浮点数据类型之类的数据类型的数据元素执行操作。在一个实现方式中,有序前端701是处理器700的部分,该有序前端701取出将要被执行的指令并准备这些指令以供稍后在处理器流水线中使用。
前端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可执行快速操作,有效等待时间为半个时钟周期。对于一个实现方式,大多数复杂整数操作进入慢速ALU 720,因为慢速ALU 720包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 712、714来执行。对于一个实现方式,整数ALU 716、718、720被描述为对64位数据操作数执行整数操作。在替代实现方式中,可以实现ALU 716、718、720,以支持包括16、32、128、256等的各种数据位。类似地,可以实现浮点单元722、724,以支持具有各种宽度的位的多个操作数。对于一个实现方式,浮点单元722、724可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实现方式中,在父加载完成执行之前,微操作调度器702、704、706就分派依赖操作。因为在处理器700中微操作被推测地调度和执行,所以处理器700也包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖操作。重放机制追踪使用错误数据的指令,并重新执行这些指令。仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实现方式的调度器和重放机制也被设计成用于捕捉用于文本串比较操作的指令序列。
根据本公开的实现方式,处理器700还包括用于实现用于存储器消歧的存储地址预测的逻辑。在一个实现方式中,处理器700的执行块711可包括用于支持对客户机飞地存储器页的超额订阅的存储地址预测器(未示出)。
术语“寄存器”可以是指被用作标识操作数的指令的部分的板上(on-board)处理器存储位置。换言之,寄存器可以是从处理器外部(从编程者的角度来看)可用的那些处理器存储位置。然而,实现方式的寄存器不限于意指特定类型的电路。相反,实现方式的寄存器能够存储并提供数据,并能够执行本文中所描述的功能。本文所描述的寄存器可以由处理器中的电路使用任何数量的不同技术来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实现方式中,整数寄存器存储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可支持如本文中所描述的对客户机飞地存储器页的超额订阅。
处理器870和880被示为分别包括集成存储器控制器单元872和882。处理器870还包括作为其总线控制器单元的部分的点对点(P-P)接口876和878;类似地,第二处理器880包括P-P接口886和888。处理器870、880可经由点对点(P-P)接口850使用P-P接口电路878、888来交换信息。如图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以及可包括指令/代码和数据830的存储单元828(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 824可被耦合至第二总线820。注意,其他架构是可能的。例如,代替图8的点对点架构,系统可实现多分支总线或其他此类架构。
现在参考图9,所示的是系统900的框图,在系统900中本公开的一个实现方式可以操作。系统900可包括耦合至图形存储器控制器中枢(GMCH)920的一个或多个处理器910、915。附加处理器915的任选性在图9中利用虚线来表示。在一个实现方式中,处理器910、915支持根据本公开的实现方式的对客户机飞地存储器页的超额订阅。
每个处理器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可支持如以上所描述的对客户机飞地存储器页的超额订阅。处理器1070、1080可分别包括集成存储器以及I/O控制逻辑(“CL”)1072和1082,并且分别经由点对点(P-P)接口1078和1088之间的点对点互连1050彼此相互通信。如所示,处理器1070、1080各自通过相应P-P接口1076至1094以及1086至1098经由点对点互连1052和1054与芯片组1090通信。对于至少一个实现方式,CL1072、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中。在另一个实现方式中,存储器模块可以被包括在可被用来访问和/或控制存储器的SoC 1100的一个或多个其他组件中。应用处理器1120可包括用于实现静默存储器指令和未命中率追踪的PMU,以优化如本文中的实现方式所描述的对线程的切换策略。
存储器层级结构包括核内的一个或多个高速缓存级别、一组或一个或多个共享高速缓存单元1106、以及耦合至集成存储器控制器单元1114的集合的外部存储器(未示出)。共享高速缓存单元1106的集合可包括一个或多个中间级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合,中间级别的高速缓存诸如第二级(L2)、第三级(L3)、第四级(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可符合指令集架构,诸如,基于架构核TM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1206和1207被耦合至高速缓存控件1208,该高速缓存控件1208与总线接口单元1209和L2高速缓存1210相关联以与系统1200的其他部分通信。互连1210包括潜在地实现所描述公开的一个或多个方面的芯片上互连,诸如IOSF、AMBA或以上所讨论的其他互连。在一个实现方式中,核1206、1207可支持如在本文中的实现方式中所描述的对客户机飞地存储器页的超额订阅。
互连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、GPS 1280以及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描述的实现如本公开的实现方式所述的对客户机飞地存储器页的超额订阅的处理器架构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包括一种处理设备,该处理设备包括:1)存储器控制器单元,用于访问安全飞地;以及2)处理器核,可操作地耦合至存储器控制器单元,该处理器核用于:a)在存储器中标识目标存储器页,其中,该目标存储器页与虚拟机(VM)的安全飞地相关联;b)接收包括与目标存储器页对应的上下文信息的数据结构;c)基于所接收的数据结构来确定目标存储器页的状态,该状态指示目标存储器页是否与以下各项中的至少一项相关联:VM的子存储器页或父存储器页;以及d)基于所确定的状态生成用于从安全飞地驱逐目标存储器页的指令。
示例2包括如示例1所述的处理设备,其中,处理器核进一步用于:1)确定目标存储器页与父存储器页相关联;以及2)标识指向安全飞地内的父存储器页的地址指针。
示例3包括如示例2所述的处理设备,其中,处理器核进一步用于更新数据结构以将目标存储器页与指向存储器父页的地址指针相关联。
示例4包括如示例1所述的处理设备,其中,处理器核进一步用于:1)确定目标存储器页与一个或多个子存储器页相关联;以及2)基于所接收的数据结构来标识该一个或多个子存储器页的计数。
示例5包括如示例4所述的处理设备,其中,处理器核进一步用于基于所接收的数据结构来标识一个或多个子存储器页包括虚拟子存储器页。
示例6包括如示例4所述的处理设备,其中,处理器核进一步用于:响应于检测到一个或多个子存储器页的计数为零而执行用于从存储器驱逐目标存储器页的指令。
示例7包括如示例4所述的处理设备,其中,处理器核进一步用于:响应于检测到一个或多个子存储器页的计数不为零而基于所接收的数据结构来判定该一个或多个子存储器页是否存在于安全飞地中。
示例8包括一种方法,该方法包括:1)在存储器中标识目标存储器页,其中,该目标存储器页与虚拟机(VM)的安全飞地相关联;2)由处理设备接收包括与目标存储器页对应的上下文信息的数据结构;3)由处理设备基于所接收的数据结构来确定目标存储器页的状态,该状态指示目标存储器页是否与以下各项中的至少一项相关联:VM的子存储器页或父存储器页;以及4)基于所确定的状态生成用于从安全飞地驱逐目标存储器页的指令。
示例9包括如示例8所述的方法,该方法进一步包括:1)确定目标存储器页与父存储器页相关联;以及2)标识指向安全飞地内的父存储器页的地址指针。
示例10包括如示例9所述的方法,该方法进一步包括:更新数据结构以将目标存储器页与指向存储器父页的地址指针相关联。
示例11包括如示例8所述的方法,该方法进一步包括:1)确定目标存储器页与一个或多个子存储器页相关联;以及2)基于所接收的数据结构来标识该一个或多个子存储器页的计数。
示例12包括如示例11所述的方法,该方法进一步包括:基于所接收的数据结构来标识一个或多个子存储器页包括虚拟子存储器页。
示例13包括如示例11所述的方法,该方法进一步包括:响应于检测到一个或多个子存储器页的计数为零而执行用于从存储器驱逐目标存储器页的指令。
示例14包括如示例11所述的方法,该方法进一步包括:响应于检测到一个或多个子存储器页的计数不为零而基于所接收的数据结构来判定该一个或多个子存储器页是否存在于安全飞地中。
示例15包括一种芯片上系统(SoC),该SoC包括:1)存储器控制器单元(MCU);以及2)处理器,可操作地耦合至MCU,该处理器用于:a)在存储器中标识目标存储器页,其中,该目标存储器页与虚拟机(VM)的安全飞地相关联;b)接收包括与目标存储器页对应的上下文信息的数据结构;c)基于所接收的数据结构来确定目标存储器页的状态,该状态指示目标存储器页是否与以下各项中的至少一项相关联:VM的子存储器页或父存储器页;以及d)基于所确定的状态生成用于从安全飞地驱逐目标存储器页的指令。
示例16包括如示例15所述的SoC,其中,处理器进一步用于:1)确定目标存储器页与父存储器页相关联;以及2)标识指向安全飞地内的父存储器页的地址指针。
示例17包括如示例16所述的SoC,其中,处理器进一步用于更新数据结构以将目标存储器页与指向存储器父页的地址指针相关联。
示例18包括如示例15所述的SoC,其中,处理器进一步用于:1)确定目标存储器页与一个或多个子存储器页相关联;以及2)基于所接收的数据结构来标识该一个或多个子存储器页的计数。
示例19包括如示例18所述的SoC,其中,处理器进一步用于基于所接收的数据结构来标识一个或多个子存储器页包括虚拟子存储器页。
示例20包括如示例18所述的SoC,其中,处理器进一步用于:响应于检测到一个或多个子存储器页的计数为零而执行用于从存储器驱逐目标存储器页的指令。
示例21包括如示例18所述的SoC,其中,处理器进一步用于:响应于检测到一个或多个子存储器页的计数不为零而基于所接收的数据结构来判定该一个或多个子存储器页是否存在于安全飞地中。
示例22包括一种非瞬态机器可读存储介质,包括指令,这些指令在由处理设备执行时使得该处理设备用于:1)由该处理设备在存储器中标识目标存储器页,其中,该目标存储器页与虚拟机(VM)的安全飞地相关联;2)接收包括与目标存储器页对应的上下文信息的数据结构;3)基于所接收的数据结构来确定目标存储器页的状态,该状态指示目标存储器页是否与以下各项中的至少一项相关联:VM的子存储器页或父存储器页;以及4)基于所确定的状态生成用于从安全飞地驱逐目标存储器页的指令。
示例23包括如示例22所述的非瞬态机器可读存储介质,其中,处理设备进一步用于:1)确定目标存储器页与父存储器页相关联;以及2)标识指向安全飞地内的父存储器页的地址指针。
示例24包括如示例23所述的非瞬态机器可读存储介质,其中,处理设备进一步用于更新数据结构以将目标存储器页与指向存储器父页的地址指针相关联。
示例25包括非瞬态机器可读存储介质23,其中,处理设备进一步用于:1)确定目标存储器页与一个或多个子存储器页相关联;以及2)基于所接收的数据结构来标识该一个或多个子存储器页的计数。
示例26包括如示例23所述的非瞬态机器可读存储介质,其中,处理器进一步用于基于所接收的数据结构来标识一个或多个子存储器页包括虚拟子存储器页。
示例27包括如示例23所述的非瞬态机器可读存储介质,其中,处理器进一步用于:响应于检测到一个或多个子存储器页的计数为零而执行用于从存储器驱逐目标存储器页的指令。
示例28包括如示例23所述的非瞬态机器可读存储介质,其中,处理器进一步用于:响应于检测到一个或多个子存储器页的计数不为零而基于所接收的数据结构来判定该一个或多个子存储器页是否存在于安全飞地中。
示例29包括一种非瞬态计算机可读存储介质,包括指令,这些指令在由处理器执行时使得处理器执行如示例8-14所述的方法。
示例30包括一种设备,该设备包括:1)处理器的多个功能单元;2)用于在存储器中标识目标存储器页的装置,其中,该目标存储器页与虚拟机(VM)的安全飞地相关联;3)用于接收包括与目标存储器页对应的上下文信息的数据结构的装置;4)用于基于所接收的数据结构来确定目标存储器页的状态的装置,该状态指示目标存储器页是否与以下各项中的至少一项相关联:VM的子存储器页或父存储器页;以及5)用于基于所确定的状态生成用于从安全飞地驱逐目标存储器页的指令的装置。
示例31包括如示例30所述的设备,该设备进一步包括如示例1-7和15-21中的任一项所述的主题。
示例32包括一种系统,该系统包括:1)存储器设备;以及2)包括存储器控制器单元的处理器,其中该处理器被配置成用于执行如示例8-14中任一项所述的方法。
示例33包括如示例32所述的系统,该系统进一步包括如示例1-7和15-21中的任一项所述的主题。
示例34包括一种处理设备,该处理设备包括:1)存储器控制器单元,用于访问安全飞地;以及2)处理器核,可操作地耦合至存储器控制器单元,该处理器核用于:a)标识将在虚拟机(VM)的安全飞地中恢复的目标存储器;b)接收包括与该VM的父存储器页有关的上下文信息的数据结构,其中,该父存储器页存在于安全飞地中;c)基于该数据结构确定目标存储器页与来自安全飞地的父存储器页相关联;以及d)基于所确定的内容将目标存储器页映射到父存储器页。
示例35包括如示例34所述的处理设备,其中,处理器核进一步用于:利用来自与父存储器页有关的数据结构的上下文信息来恢复与目标存储器相关联的信息。
示例36包括一种方法,该方法包括:1)由处理设备标识将在虚拟机(VM)的安全飞地中恢复的目标存储器;2)由处理设备接收包括与该VM的父存储器页有关的上下文信息的数据结构,其中,该父存储器页存在于安全飞地中;3)基于该数据结构确定目标存储器页与来自安全飞地的父存储器页相关联;以及4)由处理设备基于所确定的内容将目标存储器页映射到父存储器页。
示例37包括如示例34所述的处理设备,进一步包括:利用来自与父存储器页有关的数据结构的上下文信息来恢复与目标存储器相关联的信息。
示例38包括一种芯片上系统(SoC),包括:1)存储器控制器单元(MCU);以及2)处理器,可操作地耦合至MCU,该处理器用于:a)标识将在虚拟机(VM)的安全飞地中恢复的目标存储器;b)接收包括与该VM的父存储器页有关的上下文信息的数据结构,其中,该父存储器页存在于安全飞地中;c)基于该数据结构确定目标存储器页与来自安全飞地的父存储器页相关联;以及d)基于所确定的内容将目标存储器页映射到父存储器页。
示例39包括如示例38所述的SoC,其中,处理器进一步用于:利用来自与父存储器页有关的数据结构的上下文信息来恢复与目标存储器相关联的信息。
示例40包括一种非瞬态机器可读存储介质,包括指令,这些指令在由处理设备执行时使得该处理设备用于:1)由该处理设备标识将在虚拟机(VM)的安全飞地中恢复的目标存储器;2)接收包括与该VM的父存储器页有关的上下文信息的数据结构,其中,该父存储器页存在于安全飞地中;3)基于该数据结构确定目标存储器页与来自安全飞地的父存储器页相关联;以及4)基于所确定的内容将目标存储器页映射到父存储器页。
示例41包括如示例40所述的非瞬态机器可读存储介质,其中,处理设备进一步用于:利用来自与父存储器页有关的数据结构的上下文信息来恢复与目标存储器相关联的信息。
示例42包括一种非瞬态计算机可读存储介质,包括指令,这些指令在由处理器执行时使得处理器执行如示例36-37所述的方法。
示例43包括一种设备,该设备包括:1)处理器的多个功能单元;2)用于标识将在虚拟机(VM)的安全飞地中恢复的目标存储器的装置;3)用于接收包括与该VM的父存储器页有关的上下文信息的数据结构的装置,其中,该父存储器页存在于安全飞地中;4)用于基于该数据结构确定目标存储器页与来自安全飞地的父存储器页相关联的装置;以及5)用于基于所确定的内容将目标存储器页映射到父存储器页的装置。
示例44包括如示例43所述的设备,该设备进一步包括如示例34-35和38-39中的任一项所述的主题。
示例45包括一种系统,该系统包括:1)存储器设备;以及2)包括存储器控制器单元的处理器,其中该处理器被配置成用于执行如示例36-37中任一项所述的方法。
示例46包括如示例45所述的系统,该系统进一步包括如示例34-35和38-39中的任一项所述的主题。
尽管已参考有限数量的实现方式描述了本公开,但是,本领域技术人员将从其中理解很多修改和变型。所附权利要求书旨在涵盖落入本公开的真实精神和范围内的所有此类修改和变型。
设计可经历从创造到仿真到制造的各阶段。表示设计的数据能以数种方式来表示该设计。首先,如在仿真中有用的,可使用硬件描述语言或另一功能性描述语言来表示硬件。另外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据的水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或者磁或光存储(诸如,盘)可以是存储经由光学或电学波来传送的信息的机器可读介质,这些光学或电学波被调制或以其他方式生成以传送这些信息。当指示或承载代码或设计的电学载波被传送达到实现电信号的复制、缓冲或重新发送的程度时,即产生新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的实现方式的技术的制品(诸如,编码在载波中的信息)。
如本文中所使用的模块是指硬件、软件、和/或固件的任何组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实现方式中,对模块的引用是指硬件,该硬件被专门配置成用于识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实现方式中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微控制器执行以进行预定操作。并且如可以推断的,在又一实现方式中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被图示为分开的模块的边界一般不同并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实现方式中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实现方式中,使用短语‘被配置成’指的是安排、合在一起、制造、许诺销售、进口和/或设计装置、硬件、逻辑或元件以执行所指定或所确定的任务。在此示例中,没有操作的装置或其元件仍然‘被配置成’执行所指定的任务,如果它被设计、耦合、和/或互连以执行所述所指定的任务的话。作为纯说明性示例,在操作期间,逻辑门可提供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的子存储器页或父存储器页;以及
基于所确定的状态生成用于从所述安全飞地驱逐所述目标存储器页的指令。
2.如权利要求1所述的处理设备,其中,所述处理器核进一步用于:
确定所述目标存储器页与所述父存储器页相关联;以及
标识指向所述安全飞地内的所述父存储器页的地址指针。
3.如权利要求2所述的处理设备,其中,所述处理器核进一步用于更新所述数据结构以将所述目标存储器页与指向所述存储器父页的所述地址指针相关联。
4.如权利要求1所述的处理设备,其中,所述处理器核进一步用于:
确定所述目标存储器页与一个或多个子存储器页相关联;以及
基于所接收的数据结构来标识所述一个或多个子存储器页的计数。
5.如权利要求4所述的处理设备,其中,所述处理器核进一步用于基于所接收的数据结构来标识所述一个或多个子存储器页包括虚拟子存储器页。
6.如权利要求4所述的处理设备,其中,所述处理器核进一步用于:响应于检测到所述一个或多个子存储器页的所述计数为零而执行用于从存储器驱逐所述目标存储器页的所述指令。
7.如权利要求4所述的处理设备,其中,所述处理器核进一步用于:响应于检测到所述一个或多个子存储器页的所述计数不为零而基于所接收的数据结构来判定所述一个或多个子存储器页是否存在于所述安全飞地中。
8.一种方法,包括:
在存储器中标识目标存储器页,其中,所述目标存储器页与虚拟机(VM)的安全飞地相关联;
由处理设备接收包括与所述目标存储器页对应的上下文信息的数据结构;
由所述处理设备基于所接收的数据结构来确定所述目标存储器页的状态,所述状态指示所述目标存储器页是否与以下各项中的至少一项相关联:所述VM的子存储器页或父存储器页;以及
基于所确定的状态生成用于从所述安全飞地驱逐所述目标存储器页的指令。
9.如权利要求8所述的方法,进一步包括:
确定所述目标存储器页与所述父存储器页相关联;以及
标识指向所述安全飞地内的所述父存储器页的地址指针。
10.如权利要求9所述的方法,进一步包括:更新所述数据结构以将所述目标存储器页与指向所述存储器父页的所述地址指针相关联。
11.如权利要求8所述的方法,进一步包括:
确定所述目标存储器页与一个或多个子存储器页相关联;以及
基于所接收的数据结构来标识所述一个或多个子存储器页的计数。
12.如权利要求11所述的方法,进一步包括:基于所接收的数据结构来标识所述一个或多个子存储器页包括虚拟子存储器页。
13.如权利要求11所述的方法,进一步包括:响应于检测到所述一个或多个子存储器页的所述计数为零而执行用于从存储器驱逐所述目标存储器页的所述指令。
14.如权利要求11所述的方法,进一步包括:响应于检测到所述一个或多个子存储器页的所述计数不为零而基于所接收的数据结构来判定所述一个或多个子存储器页是否存在于所述安全飞地中。
15.一种芯片上系统(SoC),包括:
存储器控制器单元(MCU);以及
处理器,能操作地耦合至所述MCU,所述处理器用于:
在存储器中标识目标存储器页,其中,所述目标存储器页与虚拟机(VM)的安全飞地相关联;
接收包括与所述目标存储器页对应的上下文信息的数据结构;
基于所接收的数据结构来确定所述目标存储器页的状态,所述状态指示所述目标存储器页是否与以下各项中的至少一项相关联:所述VM的子存储器页或父存储器页;以及
基于所确定的状态生成用于从所述安全飞地驱逐所述目标存储器页的指令。
16.如权利要求15所述的SoC,其中,所述处理器进一步用于:
确定所述目标存储器页与所述父存储器页相关联;以及
标识指向所述安全飞地内的所述父存储器页的地址指针。
17.如权利要求16所述的SoC,其中,所述处理器进一步用于更新所述数据结构以将所述目标存储器页与指向所述存储器父页的所述地址指针相关联。
18.如权利要求15所述的SoC,其中,所述处理器进一步用于:
确定所述目标存储器页与一个或多个子存储器页相关联;以及
基于所接收的数据结构来标识所述一个或多个子存储器页的计数。
19.如权利要求18所述的SoC,其中,所述处理器进一步用于:基于所接收的数据结构来标识所述一个或多个子存储器页包括虚拟子存储器页。
20.如权利要求18所述的SoC,其中,所述处理器进一步用于:响应于检测到所述一个或多个子存储器页的所述计数为零而执行用于从存储器驱逐所述目标存储器页的所述指令。
21.如权利要求18所述的SoC,其中,所述处理器进一步用于:响应于检测到所述一个或多个子存储器页的所述计数不为零而基于所接收的数据结构来判定所述一个或多个子存储器页是否存在于所述安全飞地中。
22.一种非瞬态机器可读存储介质,包括指令,所述指令在由处理设备执行时使所述处理设备用于:
由所述处理设备在存储器中标识目标存储器页,其中,所述目标存储器页与虚拟机(VM)的安全飞地相关联;
接收包括与所述目标存储器页对应的上下文信息的数据结构;
基于所接收的数据结构来确定所述目标存储器页的状态,所述状态指示所述目标存储器页是否与以下各项中的至少一项相关联:所述VM的子存储器页或父存储器页;以及
基于所确定的状态生成用于从所述安全飞地驱逐所述目标存储器页的指令。
23.如权利要求22所述的非瞬态机器可读存储介质,其中,所述处理设备进一步用于:
确定所述目标存储器页与所述父存储器页相关联;以及
标识指向所述安全飞地内的所述父存储器页的地址指针。
24.如权利要求23所述的非瞬态机器可读存储介质,其中,所述处理设备进一步用于更新所述数据结构以将所述目标存储器页与指向所述存储器父页的所述地址指针相关联。
25.如权利要求23所述的非瞬态机器可读存储介质,其中,所述处理设备进一步用于:
确定所述目标存储器页与一个或多个子存储器页相关联;以及
基于所接收的数据结构来标识所述一个或多个子存储器页的计数。
CN201780053578.5A 2016-09-30 2017-08-30 支持对客户机飞地存储器页的超额订阅 Active CN109690546B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/282,300 2016-09-30
US15/282,300 US10324862B2 (en) 2016-09-30 2016-09-30 Supporting oversubscription of guest enclave memory pages
PCT/US2017/049431 WO2018063719A1 (en) 2016-09-30 2017-08-30 Supporting oversubscription of guest enclave memory pages

Publications (2)

Publication Number Publication Date
CN109690546A true CN109690546A (zh) 2019-04-26
CN109690546B CN109690546B (zh) 2024-04-05

Family

ID=61758208

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780053578.5A Active CN109690546B (zh) 2016-09-30 2017-08-30 支持对客户机飞地存储器页的超额订阅

Country Status (4)

Country Link
US (1) US10324862B2 (zh)
EP (1) EP3520010A1 (zh)
CN (1) CN109690546B (zh)
WO (1) WO2018063719A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110321695A (zh) * 2019-07-11 2019-10-11 成都卫士通信息产业股份有限公司 大数据系统密码服务方法、装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628315B2 (en) * 2017-09-28 2020-04-21 Intel Corporation Secure memory repartitioning technologies
US11113400B1 (en) * 2017-12-26 2021-09-07 Virtuozzo International Gmbh System and method for providing distributed compute platform on untrusted hardware
US10970390B2 (en) * 2018-02-15 2021-04-06 Intel Corporation Mechanism to prevent software side channels

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120159184A1 (en) * 2010-12-17 2012-06-21 Johnson Simon P Technique for Supporting Multiple Secure Enclaves
US20130198853A1 (en) * 2009-12-22 2013-08-01 Francis X. McKeen Method and apparatus to provide secure application execution
CN104769605A (zh) * 2012-11-30 2015-07-08 英特尔公司 用于图形处理单元的安全环境
CN104881596A (zh) * 2013-12-27 2015-09-02 英特尔公司 在安全处理环境中修改存储器权限
WO2015163898A1 (en) * 2014-04-24 2015-10-29 Hewlett-Packard Development Company, L.P. Structuring pages images in a memory
US20160085695A1 (en) * 2014-09-24 2016-03-24 Intel Corporation Memory initialization in a protected region
US20160283409A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Apparatus and Method for Implementing A Forked System Call In A System With A Protected Region

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7367024B2 (en) 2004-09-21 2008-04-29 University Of Maryland Compiler-driven dynamic memory allocation methodology for scratch-pad based embedded systems
US20140007087A1 (en) * 2012-06-29 2014-01-02 Mark Scott-Nash Virtual trusted platform module
JP6055561B2 (ja) * 2013-03-06 2016-12-27 インテル・コーポレーション 仮想マシンの測定のための信頼の起点
US9251090B1 (en) 2014-06-03 2016-02-02 Amazon Technologies, Inc. Hypervisor assisted virtual memory obfuscation
US9588796B2 (en) 2014-06-28 2017-03-07 Vmware, Inc. Live migration with pre-opened shared disks

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130198853A1 (en) * 2009-12-22 2013-08-01 Francis X. McKeen Method and apparatus to provide secure application execution
US20120159184A1 (en) * 2010-12-17 2012-06-21 Johnson Simon P Technique for Supporting Multiple Secure Enclaves
CN104769605A (zh) * 2012-11-30 2015-07-08 英特尔公司 用于图形处理单元的安全环境
CN104881596A (zh) * 2013-12-27 2015-09-02 英特尔公司 在安全处理环境中修改存储器权限
WO2015163898A1 (en) * 2014-04-24 2015-10-29 Hewlett-Packard Development Company, L.P. Structuring pages images in a memory
US20160085695A1 (en) * 2014-09-24 2016-03-24 Intel Corporation Memory initialization in a protected region
US20160283409A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Apparatus and Method for Implementing A Forked System Call In A System With A Protected Region

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
肖建青等: "SPARC V8处理器中存储管理单元的设计", 《科学技术与工程》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110321695A (zh) * 2019-07-11 2019-10-11 成都卫士通信息产业股份有限公司 大数据系统密码服务方法、装置
CN110321695B (zh) * 2019-07-11 2021-07-20 成都卫士通信息产业股份有限公司 大数据系统密码服务方法、装置

Also Published As

Publication number Publication date
US20180095894A1 (en) 2018-04-05
CN109690546B (zh) 2024-04-05
US10324862B2 (en) 2019-06-18
EP3520010A1 (en) 2019-08-07
WO2018063719A1 (en) 2018-04-05

Similar Documents

Publication Publication Date Title
CN104954356B (zh) 保护共享的互连以用于虚拟机
TWI712887B (zh) 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體
TWI697804B (zh) 安全區之平台遷移
CN106716434B (zh) 具有独立的用户域与管理程序域的存储器保护密钥架构
CN105474227B (zh) 安全存储器重新分区
US10572395B2 (en) Non-enclave access prevention
CN106575261A (zh) 受保护的区域中的存储器初始化
US11531772B2 (en) Support for increased number of concurrent keys within multi-key cryptographic engine
CN109508555A (zh) 使用可信域在虚拟化系统中提供隔离
CN108463826A (zh) 用于在环转变期间保护栈的处理器扩展
US10922241B2 (en) Supporting secure memory intent
CN109960665A (zh) 用于在分页期间逆转页阻止的解除阻止指令
CN109643283A (zh) 管理飞地存储器页
CN110472444A (zh) 防止对加密存储器的未授权访问
CN109564552A (zh) 增强基于每页当前特权等级的存储器访问许可
CN108334400A (zh) 为安全飞地管理存储器
US11507699B2 (en) Processor with private pipeline
CN110162380A (zh) 用来防止软件侧通道的机制
CN106575284A (zh) 用于内核模块的多核存储器数据记录器
CN109690546A (zh) 支持对客户机飞地存储器页的超额订阅
CN110321729A (zh) 使用信任域支持虚拟化系统中的存储器分页
CN110968394A (zh) 虚拟机与其监视器之间的页面属性的分割控制方法和系统
CN107924442A (zh) 用于轻量级虚拟化上下文的方法和设备
CN108369508A (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