CN108334400A - 为安全飞地管理存储器 - Google Patents

为安全飞地管理存储器 Download PDF

Info

Publication number
CN108334400A
CN108334400A CN201810045711.9A CN201810045711A CN108334400A CN 108334400 A CN108334400 A CN 108334400A CN 201810045711 A CN201810045711 A CN 201810045711A CN 108334400 A CN108334400 A CN 108334400A
Authority
CN
China
Prior art keywords
vmm
conflict
trace command
enclave
instruction
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
CN201810045711.9A
Other languages
English (en)
Other versions
CN108334400B (zh
Inventor
R·M·勒斯列-赫德
F·X·麦克金
C·V·罗扎斯
G·奈格
A·玛里克
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 CN108334400A publication Critical patent/CN108334400A/zh
Application granted granted Critical
Publication of CN108334400B publication Critical patent/CN108334400B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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
    • 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/45587Isolation or security of virtual machine instances
    • 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/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Landscapes

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

Abstract

本申请公开了为安全飞地管理存储器。一种处理设备,包括冲突化解逻辑电路以发起跟踪阶段来跟踪到安全飞地的飞地存储器高速缓存(EPC)页的转换后备缓冲器(TLB)映射。冲突化解逻辑电路进一步用于执行作为跟踪阶段的一部分的跟踪指令,其中跟踪指令将安全飞地中的任何页作为跟踪指令的变量参数。

Description

为安全飞地管理存储器
技术领域
本公开的实现方式一般涉及计算机系统,并且更具体地涉及但不限于为安全飞地管理存储器。
背景技术
现代处理器设计为保护存储器中的敏感数据免受硬件和软件攻击的破坏。一些处理器提供能够保留存储器的一部分并且在存储器的这一部分上实施密码保护的策略。存储器的这一部分可以包括在安全平台上可访问的多个安全存储器页。
附图说明
通过下文给出的具体实施方式并通过本公开各种实现方式的附图,将更完整地理解本公开。然而,不应当认为这些附图将本公开限制为特定实现方式,而是这些附图仅用于说明和理解。
图1示出根据本公开的实现方式的处理系统的框图。
图2示出根据本公开的实现方式的用于管理飞地存储器中的飞地存储器页的分页冲突的处理系统。
图3示出根据本公开的实现方式的用于管理飞地存储器页的分页冲突的方法的流程图。
图4示出根据本公开的实现方式的用于管理飞地存储器页的分页冲突的另一方法的系统。
图5A是示出根据本公开的实现方式的用于处理器的微架构的框图。
图5B是示出根据本公开的实现方式的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图6是示出根据本公开的一个实现方式的用于处理器的微架构的框图。
图7是示出系统的框图,在该系统中可以使用本公开的实现方式。
图8是示出系统的框图,在该系统中本公开的实现方式可以操作。
图9是示出系统的框图,在该系统中本公开的实现方式可以操作。
图10是示出根据本公开的实现方式的芯片上系统(SoC)的框图;
图11是示出根据本公开的实现方式的SoC设计的框图;以及
图12示出根据本公开的实现方式示出计算机系统的框图。
具体实施方式
本公开的实现方式提供为安全飞地管理存储器。
尽管现代处理器系统可以保护为在较高特权等级运行的应用保留的存储器区域免受在较低(或相等)特权等级运行的应用的未经授权的访问,但是处理器系统不保护较低特权等级的应用使用的数据免受在较高特权等级运行的应用的访问。在某些情况下,在较高特权等级运行的应用(例如,操作系统或虚拟机监视器(VMM))可能已经被恶意攻击损害。被损害的应用可能对在较低特权等级运行的应用使用的数据进行进一步的攻击。在一些实现方式中,可以为在处理器上以较低特权等级运行的应用提供受架构化保护的存储器区域以存储对应用私有的代码和数据并且不能被较高特权等级应用访问。因此,处理器可以在受架构化保护的执行环境中执行较低特权应用的一部分或全部而免受恶意攻击者的攻击。
在一些实现方式中,可以以安全飞地的形式提供受架构化保护的执行环境。安全飞地(本文中也称为“飞地”)可以包括与应用相关联的存储器地址空间内的受保护的区域。其他软件对飞地存储器区域的访问被禁止,即使这种访问是由系统软件尝试的。
在一些实现方式中,安全飞地实现在处理器保留存储器(PRM)上,处理器保留存储器由处理器保护免受非飞地存储器访问,包括来自操作系统的内核或虚拟机监视器(VMM)的那些访问。PRM可以包括飞地页面高速缓存(EPC),飞地页面高速缓存包括固定尺寸的页(例如,每页4KB)以存储与不同的安全飞地相关联的代码和数据。安全飞地可以与可以被处理器通过数据结构(称为飞地页面高速缓存映射(EPCM))跟踪的一组EPC页相关联。EPCM可以包括多个条目,其中每个条目存储与安全飞地相关联的对应的EPC页的属性。
EPC由管理计算机的虚拟和物理存储器以及高速缓存存储的剩余部分的系统软件管理。系统软件可以是虚拟机监视器(VMM)和/或VMM支持的操作系统(包括客户机操作系统(OS))的内核。
可以通过与处理器相关联的处理器扩展逻辑电路和微代码(称为飞地逻辑)实现用于实现安全飞地及其功能的指令。为了改善安全飞地的效率,飞地逻辑可以实现用于将未使用的EPC页分配给飞地并且释放先前经分配的EPC页的指令。当EPC页首先被飞地软件访问时,转换后备缓冲器(TLB)可以用于存储与安全飞地相关联的EPC页的地址映射,其中映射可以包括应用采用的虚拟地址与存储器的物理地址之间的对应关系。当使用VMM时,两级地址转换可以用于将虚拟地址转换为物理地址,两级地址转换包括虚拟地址到客户机物理地址转换以及然后的客户机物理地址到物理地址转换。
在一些实现方式中,客户机OS和VMM均可以执行用于发起驱逐与来自主存储器的安全飞地相关联的EPC页的过程的指令。由于EPC页的地址映射可能已经在可能已经被多个逻辑处理器使用的TLB条目中高速缓存,所以在不特殊处理客户机OS和VMM对EPC页的驱逐的情况下可能导致安全漏洞。例如,当第一逻辑处理器保持到EPC页的TLB条目时,如果该EPC页仍属于在第一逻辑处理器上运行的安全飞地,则第一逻辑处理器可以继续使用该TLB条目。如果该EPC页被第二逻辑处理器驱逐并且稍后被分配给另一安全飞地,则第一逻辑处理器仍然可以经由该TLB条目访问该EPC页,即使该EPC页不属于第一安全飞地。这是严重的安全漏洞。
在一些实现方式中,飞地逻辑可以为跟踪阶段提供硬件支持,跟踪阶段跟踪到EPC页的TLB映射并且确保安全飞地的任何变化(例如,EPC页写出、许可变化或类型变化)反映在执行安全飞地内的应用的逻辑处理器所使用的TLB上。对跟踪阶段的支持可以包括用于标记(阻止指令,例如,EBLOCK)、跟踪(跟踪指令,例如,ETRACK)和驱逐(驱逐指令,例如,EWB)的指令。阻止指令在与EPC页相关联的飞地页面高速缓存映射(EPCM)条目中设置阻止位(例如,BLOCKED位为“1”)以阻止进一步创建到EPC页的新的TLB映射并且允许系统软件(例如,VMM或客户机OS)发出对转储清除与EPC页相关联的TLB条目的请求。
尽管期望系统软件移除TLB映射,但是不能信任系统软件转储清除TLB映射。由此,系统软件可以发出跟踪指令并且处理器可以执行跟踪指令以监视当执行指令被执行时TLB映射是否已经被转储清除。例如,跟踪指令可以采用一组计数器来存储引用TLB的逻辑处理器的数量。驱逐指令可以利用这些计数器的内容来确定EPC页不具有任何TLB映射。在经由跟踪指令初始化的一组计数器确定没有逻辑处理器保持用于EPC页的TLB条目之后,驱逐指令在被执行时可以将该EPC页从安全飞地释放。如果已经正确地转储清除了TLB映射,则允许另一安全飞地在驱逐指令完成后使用该EPC页。
在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间可能出现冲突。例如,在VMM向安全飞地的EPC页发出阻止指令和跟踪指令之后,客户机OS对这些EPC页发出的第二跟踪指令可能导致重大错误,其可能是在包括客户机OS的虚拟机(客户机)中的代码的执行中不可恢复的(即,该错误可能使得客户机OS崩溃)。在常规系统中,为了避免跟踪阶段中的这个潜在冲突,当发出跟踪指令时,VMM可以挂起客户机中的所有飞地相关活动,并且VMM可以代表客户机OS仿真指令。然而,挂起客户机OS中的所有飞地活动和代表客户机OS仿真指令不是使用安全飞地的高效方法。
本公开的实现方式通过提供冲突化解逻辑来减少上述缺陷和其他缺陷,冲突化解逻辑为在上述冲突出现时阻止客户机OS崩溃提供硬件支持。本公开的实现方式提供用于阻止客户机OS崩溃的双管齐下的方法。本公开的实现方式的第一方面包括冲突化解逻辑为实现允许VMM检测多个VMM线程与客户机OS线程之间的跟踪结构上的竞争的指令提供硬件支持。本公开的实现方式的第二方面包括冲突化解逻辑为对VMM提供阻止客户机OS观察跟踪结构上的竞争的能力的指令提供硬件支持。由于客户机OS被阻止观察竞争,所以客户机OS不知道冲突的出现(客户机OS不知道如何处理该冲突)。由此,本公开的实现方式阻止客户机OS中出现重大错误。根据本公开的实现方式,当出现冲突而不是重大错误时,客户机OS如下文详细描述的遇到跟踪指令错误。
关于第一方面的检测跟踪结构上的竞争,冲突化解逻辑包括用于利用跟踪指令的新变型(诸如冲突阻止变型)来减少VMM和客户机OS之间的冲突的硬件支持。跟踪指令的冲突阻止变型(为在VMM中使用而设计的)将飞地中的任何页作为其变量。跟踪指令然后使用(用作参数中的变量的EPC页的)后指针来定位跟踪数据结构位于其中的SECS。如果VMM在开始跟踪过程之前将驱逐目标页从客户机地址空间解除映射(这在驱逐中是常见的),则VMM可以将该页的地址作为变量传递给跟踪指令并且完全避免与客户机OS的锁冲突。如此,跟踪指令的页参数充当硬件用于固定飞地的句柄。
关于第二方面的对VMM提供阻止客户机OS观察跟踪结构上的竞争的能力,冲突化解逻辑提供新类型的VM退出(诸如冲突执行控制VM退出),当在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间出现冲突时执行该VM退出。在一个实现方式中,当客户机OS遇到跟踪指令错误时执行冲突执行控制VM退出,允许VMM在客户机OS不知情的情况下化解冲突。在一个实现方式中,当在跟踪阶段期间在VMM和客户机OS之间出现冲突时客户机OS遇到跟踪指令错误。在一个实现方式中,VM不知道冲突。在一个实现方式中,上述跟踪指令的冲突阻止变型产生跟踪指令错误。冲突执行控制VM退出可以阻止在跟踪指令竞争时客户机OS崩溃。为了实现冲突执行控制VM退出,VMM配置当客户机OS遇到跟踪指令错误时强制客户机OS退出到主机VMM的执行控制。由此,执行流从客户机传递至VMM。VMM然后化解冲突并且恢复客户机的执行。这种执行可以包括但不限于,将EPC页加载到飞地中、访问飞地中的EPC页以及从飞地驱逐EPC页。因此,当客户机OS丢失与VMM竞争执行跟踪指令时,VMM阻止客户机OS接收重大错误并且阻止客户机OS崩溃。在一个实现方式中,一旦恢复客户机OS的执行,VMM允许客户机OS恢复或重试跟踪指令。因此,在检测到冲突之后,本公开的实现方式提供对VMM和客户机OS两者的恢复。这种恢复通过减少错误的出现和减少可能出现的VM退出的数量而产生更好的处理器性能。
图1示出根据本公开的实现方式的处理系统。如图1所示,处理系统100(例如,芯片上系统(SOC))可以包括处理器102和通信地耦合至处理器102的存储器设备(存储器)104。处理器102可以是硬件处理设备,诸如例如,中央处理单元(CPU)或图形处理单元(GPU),其包括一个或多个处理核(未示出)以执行软件应用。处理器102可以进一步包括一个或多个处理核106和用于为处理核106执行存储器地址转换的存储器管理单元(MMU)108。处理核106可以与包括层级L1–L3高速缓存的多个层级的高速缓存(未示出)相关联。
各种实现方式中的处理核106可以由有序核或乱序核提供。在说明性示例中,处理核106可以具有微架构,其包括用于实现指令集架构(ISA)的处理器逻辑和电路。具有不同微架构的处理器102可共享公共指令集的至少一部分。例如,ISA的相同寄存器架构在不同的微架构中可使用各种技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)、以及引退寄存器堆)的一个或多个动态分配物理寄存器,如图6-7所示。
处理器102可以进一步包括处理器执行逻辑电路110以实现扩展指令集来支持处理器102的附加功能。在一个实现方式中,处理器扩展逻辑电路110可以支持对一组虚拟化指令(例如,虚拟机扩展(VMX))的执行以提供对位于主机上的一个或多个虚拟化环境的支持。VMX可以为虚拟机提供处理器级的支持。在一个实现方式中,VMX可以包括用于生成虚拟机监视器(VMM)130的指令,虚拟机监视器是允许一个或多个执行环境(或虚拟机(VM)132)在主机上运行的主机程序。VMM 130可以创建和运行虚拟机(VM)132。
VM 132对于终端用户可以表现得像硬件计算设备一样。例如,VM 132各自可以包括仿真硬件处理器的虚拟处理器(未示出)。与VM 132相关联的虚拟处理器可以支持相应的客户机操作系统(客户机OS)134。客户机应用146可以在客户机操作系统134的环境内运行。客户机操作系统134(包括内核)可以包括多个客户机OS组件(或内核组件)以向客户机应用136提供多个服务。在一个实现方式中,这些客户机OS组件在相同的处理器特权等级运行。在一个实现方式中,客户机OS提供的服务可以包括调度器、进程管理、I/O管理、存储器管理、驱动程序(例如,文件系统和卷驱动程序、大容量存储驱动程序和总线驱动程序)和代码完整性管理服务。较高特权等级通常被称为管理程序模式,而较低特权等级通常被称为用户模式。
客户机OS 134可以向客户机应用136的执行提供调度服务(调度器),并且调度服务可以允许应用的执行在多个线程中进行。执行线程是OS(例如,客户机OS 134)的任务调度器可以独立地管理的最小序列的程序指令。对线程的执行由逻辑处理器实现。与VM 132相关联的逻辑处理器的数量可以定义客户机OS 134能处理的线程的最大数量。当执行与客户机应用136的程序代码相关联的线程时,所有这些逻辑处理器可以共享可以被存储器管理单元108映射到存储器104的物理地址空间的客户机物理地址空间。
VM 132包括客户机OS 134,并且客户机应用136可以通过一系列存储器地址映射访问存储器104。客户机OS 134可以构建客户机虚拟地址(GVA)空间并且将GVA空间映射到VM 132的对应的客户机物理地址(GPA)空间。可以根据各自具有预定义尺寸的客户机存储器页组织GPA空间。客户机存储器页中的每一个可以与唯一地标识客户机存储器页的标识符相关联。存储器管理单元108可以将与VM 132相关联的GPA空间映射到主机的存储器104的主机物理地址(HPA)空间。在客户机应用136的执行期间,响应于访问存储器104的请求,存储器管理单元108可以将应用使用的虚拟地址映射到主机物理地址,从而应用可以访问存储器104。可以根据各自具有预定义尺寸的存储器帧来组织HPA空间。存储器帧中的每一个可以与唯一地标识存储器帧的标识符(例如存储器帧编号)相关联。如上文所讨论的,可以在共享被映射到存储器的HPA空间的GPA空间的多个逻辑处理器上的多个线程中进行客户机应用136的执行。
在一个实现方式中,除了VMX扩展之外,处理器扩展逻辑电路110包括逻辑电路、飞地逻辑电路(下文中“飞地逻辑”)118以实现软件保护扩展(SGX)指令,软件保护扩展指令在被执行时可以执行与安全飞地相关的服务。SGX指令可以包括用于创建(ECREATE)、加载(EADD)和初始化(EINIT)的指令。系统软件可以执行飞地创建指令来创建安全飞地。对安全飞地的创建可以生成新的SGX飞地控制结构(SECS),其包括用于存储与安全飞地相关联的属性的字段。在一个实现方式中,SECS可以存储在特殊EPC页(称为SECS页)中,该特殊EPC页不可被不驻留在安全飞地中的应用寻址。SECS页的属性可以包括唯一地标识安全飞地的飞地标识符。对飞地创建指令的执行将新创建的SECS标记为未初始化的。
尽管在未初始化状态中,但是系统软件可以执行飞地加载指令以将代码和数据添加到安全飞地中。与安全飞地相关联的EPC页可以包括用于存储代码和数据的常规EPC页以及存储在专用EPC页中的线程控制结构(TCS)页(称为TCS页)。每个TCS页可以包括用于存储与用于执行飞地中的代码的线程的逻辑处理器相关联的属性的字段。在完成加载安全飞地后,系统软件可以执行飞地启动指令以发动安全飞地。一旦发动安全飞地,安全飞地中的代码和数据不可被包括系统软件应用的其他应用访问。
可以将活跃的安全飞地(在初始化之后)分成加密部分和解密部分。加密部分可以驻留在未受保护的存储器(诸如主存储器或盘)中。解密部分驻留在EPC 126中。EPC 126是受保护的存储器区域,由处理系统使用以当EPC页(包括SECS页、常规EPC页和TCS页)未被加密地保护时暂时地存储这些EPC页。
MMU 108可以访问驻留在分配给存储在存储器104中的安全飞地的飞地地址空间122内的EPC 126。也驻留在飞地地址空间122中的EPCM 128是由处理系统采用的用于存储EPC的属性的受保护的结构。存储器104还可以包括非飞地地址空间124可以引用的区域。在一个实现方式中,可以将EPCM 128存储为特殊EPC页。EPCM 128可以包括一个或多个条目,其中每个条目与EPC 126中的EPC页对应。每个EPCM条目可以以依赖实现方式的格式保持下列信息:EPC页是有效的还是无效的(有效的/无效的);拥有该页的安全飞地实例的标识符;页的类型(REG、TCS、SECS);通过其而允许飞地访问该页的虚拟地址;该页的读/写/执行许可;该页是否是可访问的(被阻止的或未被阻止的)。
系统软件可以在地址转换流中使用EPCM 128来对加载到EPC 126中的EPC页实施访问控制。各种飞地相关的功能可以实现在微代码中,由SGX的硬件实现方式和实现飞地功能的处理逻辑支持。在某些实现方式中,处理逻辑可以经由与处理核106相关联的转换后备缓冲器(TLB)112控制对EPC 126的访问。
虚拟机132采用的来自虚拟地址的映射以及存储器104的物理地址可以存储在转换后备缓冲器(TLB)112中,该转换后备缓冲器可以实现用于转换地址的映射表。TLB 112可以存储逻辑处理器已经使用的存储器地址映射以促进稍后对存储器地址映射的重复使用。“TLB命中”指代被请求的虚拟地址在TLB中存在的情形。“TLB未命中”指代相反情形:当被请求的虚拟地址不在TLB 112中存在时,地址转换可以通过查找页表而继续进行。在确定物理地址之后,为了便于地址转换,虚拟地址到物理地址映射可以进入TLB 112。系统软件(例如,VMM 130)可以在其指向SECS页114的页表中创建条目,SECS页包括用于标识和管理安全飞地的信息。然而,系统软件不能访问SECS页114。
每个TLB条目可以包括指示标识拥有TLB条目引用的存储器位置的飞地的一个或多个位。替代地,如果未提供这些位,则当退出安全飞地时执行TLB转储清除以阻止对EPC126的未经授权的访问。
在启动安全飞地的时刻与破坏安全飞地(例如,通过发出飞地移除指令(例如,EREMOVE))的时刻之间,使飞地的EPC页映射到与任何应用相关联的虚拟地址空间中的这些应用可以执行飞地中的代码。
处理器102的飞地逻辑118可以实现飞地进入指令(EENTER)和飞地退出指令(EEXIT),飞地进入指令在被执行时开始对飞地中的代码的执行,飞地退出指令在被执行时将执行控制返回至调用飞地的软件应用。
包括VMM 130和客户机OS 134的系统软件可以执行存储器地址转换以执行页交换(称为分页)。分页允许系统软件通过将极少使用的EPC页驱逐到较慢的存储设备(诸如盘)而过量使用EPC页116。在驱逐并释放EPC页以被另一飞地使用之前,飞地逻辑118需要确保不会驱逐具有与EPC页相关联的地址转换的TLB条目。飞地逻辑118提供指令,指令在被执行时使系统软件能安全地驱逐EPC页。
如上所述,处理器102的飞地逻辑118可以支持阻止指令(EBLOCK)、跟踪指令(ETRACK)和驱逐指令(EWB)。阻止指令在与EPC页相关联的EPCM条目中设置阻止位以阻止创建到EPC页的新的TLB映射。跟踪指令可以使得时期数(epoch number)增加并且最终的驱逐指令(EWB)可以检测与逻辑处理器相关联的所有TLB条目是否被转储清除以及EPC页是否被自由地驱逐。驱逐指令可以将EPC页从安全飞地释放并且允许EPC页被另一安全飞地使用。
在一些实现方式中,由于VMM 130和客户机OS 134均可以通过执行阻止指令、跟踪指令和驱逐指令而执行对EPC页的安全驱逐,因此在VMM已经对安全飞地发出跟踪指令之后当客户机OS 134对相同的安全飞地发出跟踪指令时可能出现跟踪冲突(本文中可被更一般地称为“冲突”)。在一些实现方式中,当客户机OS 134和VMM 130均同时对相同的安全飞地执行跟踪指令时可能出现冲突。在常规系统中,这种冲突会导致客户机OS 134的重大错误。为了避免该重大错误,在VMM 130发出跟踪指令之后,常规系统会使VMM 130挂起与客户机OS 134相关联的所有飞地活动,这不是高效的。
在一个实现方式中,处理器扩展逻辑电路110包括冲突化解逻辑120(在本文中也称为“冲突化解逻辑电路”),冲突化解逻辑提供允许VMM 130检测VMM 130线程与客户机134线程之间的跟踪结构上的竞争(由跟踪指令管理)的硬件支持。在一个实现方式中,冲突化解逻辑120为VMM 130提供阻止客户机134观察跟踪结构上的竞争的能力。由于客户机134被阻止观察跟踪结构上的竞争,所以客户机134也不能看见竞争中出现的冲突,客户机134不知道如何处理该冲突。
为了避免由于在多个级别对跟踪指令的同时执行而出现的上述冲突,冲突化解逻辑120提供用于实现跟踪指令的冲突阻止变型(ETRACKC)的硬件支持,跟踪指令的冲突阻止变型允许VMM 130通过与客户机134使用的句柄不同的句柄将飞地固定在存储器中。如上所述,为在VMM中使用而设计的跟踪指令的冲突阻止变型(ETRACKC)将飞地中的任何页作为其变量。然而,跟踪指令(ETRACK)仅将飞地的SECS作为其变量。由此,可以在飞地的任何页面而不仅是SECS上调用ETRACKC。ETRACKC然后使用(用作参数中的变量的EPC页的)后指针来定位跟踪数据结构位于其中的SECS。如果VMM在开始跟踪过程之前将驱逐目标页从客户机地址空间解除映射(这在驱逐中是常见的),则VMM可以将该页的地址作为变量传递给跟踪指令并且完全避免与客户机OS的锁冲突。由此,锁定由ETRACKC在页变量上进行而不是由ETRACK在SECS上进行。如此,跟踪指令的页参数充当硬件用于固定飞地的句柄。在一个实现方式中,为EPC中的父页和其对应的子页两者提供ETRACKC。然而,仅为EPC中的父页提供ETRACK。
在一个实现方式中,在检测到跟踪结构的状态中的冲突时,ETRACKC生成跟踪指令错误。在一个实现方式中,客户机OS 134遇到跟踪指令错误。在一个实现方式中,当在跟踪阶段期间在VMM 130和客户机OS 134之间出现冲突时客户机OS 134遇到跟踪指令错误。在一个实现方式中,VM 132不知道冲突。
上述跟踪结构的状态中的冲突不能被阻止。因此,在一个实现方式中,冲突化解逻辑120提供新类型的VM退出(诸如冲突执行控制VM退出),当在跟踪阶段期间在均执行跟踪指令以监视EPC页116的VMM 132与客户机OS 134之间出现冲突时执行该VM退出。在一个实现方式中,当客户机OS 134遇到跟踪指令错误时执行冲突执行控制VM退出,允许VMM 130在客户机OS 134不知情的情况下化解冲突。在一个实现方式中,为了阻止客户机OS 134由于跟踪指令冲突崩溃,VMM 130配置当出现冲突时强制客户机OS 134退出到主机VMM 130的执行控制。由此,执行流从客户机OS 134传递至VMM 130。客户机OS 134不知道执行流已经被传递到VMM 130上。VMM 130然后化解冲突并且恢复客户机的执行。在一个实现方式中,VMM可以具有重复地执行以下步骤的循环的分页线程:阻止一个或多个页、在这些页属于其的飞地上调用跟踪指令以及驱逐被阻止的页。作为化解冲突的一部分,VMM可以通过软件同步过程暂停其分页线程,和/或强制分页线程在不同飞地上工作以避免与客户机的冲突。因此,在出现冲突时,VMM 130阻止客户机OS 134接收重大错误并且阻止客户机OS 134崩溃。
在一个实现方式中,在恢复客户机OS的执行之后,VMM 130允许客户机OS恢复或重试跟踪指令。例如,当VMM 130完成上述冲突化解过程时,VMM 130可以使VM在当之前采用VM退出时返回指令指针(RIP)指向的相同的指令指针处重新进入,因此可以引退指令。
图2示出根据本公开的实现方式的用于管理EPC页的冲突的处理系统200。在一个实现方式中,处理系统200与图1的处理系统100相同。如图2所示,处理系统200可以包括飞地逻辑218,飞地逻辑实现根据本公开的实现方式的阻止(EBLOCK)指令和跟踪指令(ETRACK)。在一个实现方式中,飞地逻辑218与图1的飞地逻辑118相同。诸如VMM 230和客户机OS 234的系统软件应用可以调用阻止指令和跟踪指令以准备对EPC页的驱逐。在一个实现方式中,VMM 230和客户机OS 234分别与图1的VMM 130和客户机134相同。处理系统200还包括管理EPC页的冲突的冲突化解逻辑220(也称为“冲突化解逻辑电路”)。在一个实现方式中,冲突化解逻辑220与图1的冲突化解逻辑120相同。处理系统200可以进一步包括当前引用计数器204、先前引用计数器206和当前时期数计数器208。在一个实现方式中,这些计数器可以实现为与安全飞地相关联的SECS页114的属性字段。下文提供对时期数和引用计数的定义。
在安全飞地的生存周期内,VMM 230和客户机OS 234均可以发出引用EPC页的阻止指令(例如,EBLOCK(EPC_页_地址))来阻止逻辑处理器创建与EPC页相关的新的TLB条目。一个或多个阻止指令跟随有执行跟踪指令以管理和监视对与EPC页相关的TLB条目的转储清除。在主机上运行的VMM 130对阻止指令的执行创建新的飞地时间段(称为时期(epoch))。例如,在安全飞地生存周期的开始,安全飞地处于时期1(或其他合适的整数)。在当前时期数计数器208中记录时期数(1)。响应于(由VMM 230)执行指向安全飞地采用的EPC页的阻止和跟踪指令对,飞地逻辑212可以使存储在当前时期数计数器208中的当前时期数增加一(当前时期数=2)。因此,对指向安全飞地中的EPC页的跟踪指令的每次执行使存储在当前时期数计数器208中的当前时期数增加一,并且当前时期数与VMM 230对跟踪指令的执行的次数对应。
在每个时期期间(例如,在时期2期间),当前引用计数器204可以记录使用TLB条目引用EPC页的逻辑处理器的数量(即,线程的数量)。为了方便逻辑处理器,页表条目和对应的EPCM条目在TLB条目中高速缓存。然而,在对应的EPCM条目中设置了对应的阻止位。在这些情形下,逻辑处理器可以为页表转换使用TLB条目而无需检查在对应的EPCM条目中是否设置了阻止位。响应于VMM 230对后续跟踪指令(例如,ETRACK)的执行,飞地逻辑218使存储在当前时期数计数器208中的当前时期数增加一(例如,增加到时期3),并且如果在复制时先前引用计数器206中的先前引用数为零则将存储在当前引用计数器204中的当前引用数复制到存储先前引用数(或先前时期中的引用数)的先前引用计数器206。
在一个实现方式中,当已经将与EPC页对应的TLB条目从TLB条目移除时,先前引用计数器206中的先前引用数为0。由此,未检测到冲突。时期数与其相关联的引用计数之间存在区别。在这种情形下,当保持到页的TLB映射的线程的引用计数为零时(尽管时期数可能更高),考虑将TLB转储清除。响应于在VMM 230对跟踪指令(例如,ETRACK)的执行之后出现的客户机OS 234在安全飞地中对后续跟踪指令的执行,飞地逻辑218确定存储在当前时期数计数器208中的当前时期数不再为0。因此,飞地逻辑218确定在客户机OS 234中已经出现冲突并且通知冲突化解逻辑220检测到冲突。由此,当执行跟踪指令以监视相同的安全飞地上的EPC页时,客户机OS 234输掉与VMM 230的竞争。
在一个实现方式中,冲突化解逻辑220允许VMM 230检测VMM 230线程与客户机234线程之间的跟踪结构上的竞争。在一个实现方式中,冲突化解逻辑220为VMM 230提供阻止客户机234观察跟踪结构上的竞争的能力。由于客户机234被阻止观察跟踪结构上的竞争,所以客户机234也不能看见竞争中出现的冲突,客户机234不知道如何处理该冲突。
在一个实现方式中,冲突化解逻辑220包括用于实现跟踪指令的冲突阻止变型(ETRACKC)的硬件支持,跟踪指令的冲突阻止变型通过允许VMM 230利用与客户机234使用的句柄不同的句柄将飞地固定在存储器中而减少冲突。如上所述,ETRACKC(为在VMM中使用而设计的)将飞地中的任何页作为其变量。然而,跟踪指令(ETRACK)仅将飞地的SEC作为其变量。由此,可以在飞地的任何页面而不仅是SECS上调用ETRACKC。ETRACKC然后使用(用作参数中的变量的EPC页的)后指针来定位跟踪数据结构位于其中的SECS。如果VMM在开始跟踪过程之前将驱逐目标页从客户机地址空间解除映射(这在驱逐中是常见的),则VMM可以将该页的地址作为变量传递给跟踪指令并且完全避免与客户机OS的锁冲突。由此,锁定由ETRACKC在页变量上进行而不是由ETRACK在SECS上进行。如此,跟踪指令的页参数充当硬件用于固定飞地的句柄。在一个实现方式中,为EPC中的父页和其对应的子页两者提供ETRACKC。然而,仅为EPC中的父页提供ETRACK。
如果在跟踪结构的状态中发现冲突,则ETRACKC生成跟踪指令错误。客户机OS 234可能遇到跟踪指令错误。在一个实现方式中,当在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM 230和客户机OS 234之间出现冲突时客户机OS 234遇到跟踪指令错误。在一个实现方式中,VM不知道冲突。在一个实现方式中,为了解决跟踪指令错误,冲突化解逻辑220提供冲突执行控制VM退出,当在跟踪阶段期间在VMM 230与客户机OS 234之间出现冲突时执行该VM退出。在一个实现方式中,当客户机OS 234遇到跟踪指令错误时执行冲突执行控制VM退出,允许VMM 230在客户机OS 234的不知情的情况下化解冲突。在一个实现方式中,为了阻止客户机OS 234由于跟踪指令错误崩溃,VMM 230配置当冲突导致跟踪指令错误出现时强制客户机OS 234退出到主机VMM 230的执行控制。由此,执行流从客户机OS 234传递至VMM 230。客户机OS 234不知道执行流已经被传递到VMM 230上。VMM 230然后化解冲突并且恢复客户机的执行。
在一个实现方式中,VMM 230可以通过扼制或暂停VMM 230的分页线程来化解冲突。VMM 230的分页线程重复地执行动作的循环,诸如阻止一个或多个页、在这些页属于其的飞地上调用跟踪指令、驱逐被阻止的页等。VMM 230可以经由软件同步过程暂停其分页线程。此外,VMM 230可以强制该线程在不同飞地上工作以避免与客户机的冲突。
在一个实现方式中,当客户机OS 234恢复执行时,VMM 230允许客户机OS 234恢复或重试跟踪指令。例如,当VMM 230已经完成上述冲突化解时,VMM 230使VM在当之前采用VM退出时RIP指向的相同的指令指针处重新进入,因此可以引退跟踪指令。因此,在出现冲突时,VMM 230阻止客户机OS 234接收重大错误并且阻止客户机OS 134崩溃。
图3是根据本公开的实现方式的用于管理处理设备中的飞地存储器页的分页冲突的方法300的流程图。方法300可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理设备、通用计算机系统、或专用机器上运行的指令)、固件或其组合。在一个实现方式中,方法300可以部分地由以上参考图1和2描述的飞地逻辑118、218和冲突化解逻辑120、220执行。
为了简化说明,方法300被描绘以及被描述成一系列动作。然而,根据本公开的动作可以按各种顺序发生,并且/或者可以同时发生,并且伴随本文未呈现以及描述的其他动作发生。此外,并不是所有示出的动作可以被执行以实现根据所公开主题的方法300。此外,本领域技术人员将会理解以及明白,方法300可以替代地经由状态图被表示为一系列相关的状态或者被表示为事件。
在框302处,处理逻辑发起跟踪阶段以跟踪到安全飞地的EPC页的TLB映射并且确保安全飞地的变化反映在TLB上。在框304处,取决于处理逻辑在客户机OS还是VMM中运行,方法300执行不同的过程。如果在框304处处理逻辑在客户机OS中运行,则方法300继续至框306。在框306处,响应于在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间出现冲突,处理逻辑使冲突执行控制VM退出发生。在一个实现方式中,响应于跟踪阶段中的跟踪指令错误,执行冲突执行控制VM退出。冲突执行控制VM退出允许VMM在客户机OS不知情的情况下化解冲突。
如果处理逻辑不在客户机OS中运行,则其在VMM中运行,并且由此,方法300继续至框308。在框308处,处理逻辑执行跟踪指令的冲突阻止变型(ETRACKC)。在一个实现方式中,ETRACKC将安全飞地中的任何页作为跟踪指令的变量参数。将安全飞地的任何页作为跟踪指令的变量的该利用通过允许VMM利用与客户机OS使用的句柄不同的句柄将飞地固定在存储器中而减少冲突。跟踪指令可以使用(用作参数中的变量的EPC页的)后指针来定位跟踪数据结构位于其中的SECS。如果VMM在开始跟踪过程之前将驱逐目标页从客户机地址空间解除映射(这在驱逐中是常见的),则VMM可以将该页的地址作为变量传递给跟踪指令并且完全避免与客户机OS的锁冲突。如此,跟踪指令的页参数充当硬件用于固定飞地的句柄。随后,在框310处,处理逻辑确定跟踪指令错误由跟踪指令的冲突阻止变型(ETRACKC)生成。跟踪指令错误可能由跟踪结构的状态中的冲突引起。在一个实现方式中,当在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间出现冲突时客户机OS遇到跟踪指令错误。在一个实现方式中,VM不知道冲突。在一个实现方式中,当在跟踪阶段期间出现冲突而不是ETRACK生成的跟踪指令错误时,ETRACK生成导致客户机OS崩溃的重大错误。在一个实现方式中,当未出现冲突时,不生成跟踪指令错误并且处理逻辑恢复跟踪阶段。因此,图3的方法300提供在检测到跟踪指令错误时阻止客户机OS接收可能导致客户机OS崩溃的重大错误的过程。
图4是根据本公开的实现方式的用于管理处理设备中的飞地存储器页的分页冲突的方法400的流程图。方法400可以由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理设备、通用计算机系统、或专用机器上运行的指令)、固件或其组合。在一个实现方式中,方法400可以部分地由以上参考图1和2描述的飞地逻辑118、218和冲突化解逻辑120、220执行。
为了简化说明,方法400被描绘以及被描述成一系列动作。然而,根据本公开的动作可以按各种顺序发生,并且/或者可以同时发生,并且伴随本文未呈现以及描述的其他动作发生。此外,并不是所有示出的动作可以被执行以实现根据所公开主题的方法400。此外,本领域技术人员将会理解以及明白,方法400可以替代地经由状态图被表示为一系列相关的状态或者被表示为事件。
在框402处,响应于冲突执行控制VM退出,处理逻辑接收对VM的执行的控制。在一个实现方式中,冲突执行控制VM退出由客户机OS遇到的跟踪指令错误触发。跟踪指令错误可能由安全飞地的跟踪结构(由跟踪指令维持)的状态中的冲突引起。在一个实现方式中,当在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间出现冲突时客户机OS遇到跟踪指令错误。在一个实现方式中,VM不知道冲突。在框404处,处理逻辑经由软件同步过程暂停VMM的分页线程。在框406处,处理逻辑使分页线程在不同安全飞地上工作以避免跟踪指令错误所指示的冲突。在一个实现方式中,可以任选地执行一个或多个框404和406并且不必执行两者。在框408处,处理逻辑允许VMM恢复客户机OS的执行。例如,当VMM已经完成框404和406中的一个或多个中提供的上述冲突化解时,VMM可以使VM在当之前采用VM退出时RIP指向的相同的指令指针处重新进入,因此可以引退客户机OS的跟踪指令。
图5A是示出用于根据本公开的一个实现方式实现的处理器500的微架构的框图。具体地,处理器500描绘根据本公开的至少一个实现方式的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。
处理器500包括前端单元530,该前端单元530耦合到执行引擎单元550,前端单元530和执行引擎单元550两者都耦合到存储器单元570。处理器500可包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为另一个选项,处理器500可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在一个实现方式中,处理器500可以是多核处理器或者可以是多处理器系统的一部分。
前端单元530包括耦合到指令高速缓存单元534的分支预测单元532,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)536,该指令转换后备缓冲器耦合到指令取出单元538,指令取出单元耦合到解码单元540。解码单元540(也称为解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元540可使用各种不同的机制来实现。合适的机制的示例包括但不限于:查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元534进一步耦合至存储器单元570。解码单元540耦合至执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括耦合到引退单元554和一个或多个调度器单元556的集合的重命名/分配器单元552。引退单元554可以包括根据本发明的实现方式的飞地逻辑单元603a和冲突化解逻辑单元603b以为处理设备管理受信任的执行环境中的飞地存储器页的分页冲突。调度器单元556表示任何数目的不同调度器,包括预留站(RS)、中央指令窗等。调度器单元556耦合至物理寄存器堆单元558。物理寄存器堆单元558中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,等等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等等。物理寄存器堆单元558被引退单元554所覆盖,以示出可实现寄存器重命名和乱序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器堆、使用未来文件(future file)、历史缓冲器、引退寄存器堆、使用寄存器映射和寄存器池等等)。执行引擎单元550可以包括例如管理功能单元的功率功能的功率管理单元(PMU)。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。多种不同类型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元554和物理寄存器堆单元558耦合至执行群集560。执行群集560包括一个或多个执行单元562的集合以及一个或多个存储器访问单元564的集合。执行单元562可执行多种操作(例如,移位、加法、减法、乘法)并可对多种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。
尽管一些实现方式可以包括专用于特定功能或功能集合的多个执行单元,但其它实现方式可包括仅一个执行单元或全部执行所有功能的多个执行单元。调度器单元556、物理寄存器堆单元558以及执行群集560示出为可能是复数个,因为某些实现方式为某些类型的数据/操作创建单独的流水线(例如,各自都具有其自身的调度器单元、物理寄存器堆单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线——并且在单独的存储器访问流水线的情况下,实现了其中仅此流水线的执行群集具有存储器访问单元564的某些实现方式)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为乱序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元564耦合到存储器单元570,该存储器单元570可包括数据TLB单元572、数据高速缓存单元(DCU)574、第二级(L2)高速缓存单元576,仅举数例。在一些实现方式中,DCU 574也称为第一级数据高速缓存(L1高速缓存)。DCU 574可处理多个未决的高速缓存未命中,并继续服务传入的存储和加载。它也支持维护高速缓存一致性。数据TLB单元572是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实现方式中,存储器访问单元564可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元570中的数据TLB单元572。L2高速缓存单元576可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实现方式中,处理器500可以与参考图1描述的处理系统100相同以参考本公开的实现方式描述地管理飞地存储器页的冲突。
处理器500可以支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示出的实现方式也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代的实现方式也可具有用于指令和数据的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实现方式中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图5B是示出根据本公开的一些实现方式的由图5A的处理器500实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图5B中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、乱序发布/执行流水线。在图5B中,处理器流水线501包括取出级502、长度解码级504、解码级506、分配级508、重命名级510、调度(也被称为分派或发布)级512、寄存器读取/存储器读取级514、执行级516、写回/存储器写入级518、异常处理级520和提交级522。在一些实现方式中,各个级502-522的排序可以与所示的不同,并且不限于图5B中所示的特定排序。
图6示出根据本公开的一个实现方式的用于处理器600的微架构的框图,处理器600包括用于支持对SE的平台迁移的逻辑电路。在一些实现方式中,根据一个实现方式的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实现方式中,有序前端601是处理器600的一部分,其取出将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。
前端601可包括若干单元。在一个实现方式中,指令预取器626从存储器取出指令,并将指令馈送至指令解码器628,指令解码器628随后解码或解释指令。例如,在一个实现方式中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实现方式中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实现方式的操作。在一个实现方式中,追踪高速缓存630接受经解码的微操作,并将它们组装为微操作队列634中的程序有序序列或踪迹,以用于执行。当追踪高速缓存630遇到复杂指令时,微代码ROM 632提供完成操作所需的uop。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实现方式中,如果需要超过四个微操作来完成指令,则指令解码器628访问微代码ROM 632以进行该指令。对于一个实现方式,指令可被解码为少量的微操作以用于在指令解码器628处进行处理。在另一个实现方式中,如果需要若干微操作来完成操作,则可将指令存储在微代码ROM 632中。追踪高速缓存630参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 632读取微代码序列以完成根据一个实现方式的一条或多条指令。在微代码ROM 632完成对于指令的微操作序列化之后,机器的前端601恢复从追踪高速缓存630提取微操作。
乱序执行引擎603是将指令准备好用于执行的地方。乱序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器601、快速调度器602、慢速/通用浮点调度器604、简单浮点调度器606)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器602、604、606基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实现方式的快速调度器602可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。
在执行块611中,寄存器堆608和610位于调度器602、604和606以及执行单元612、614、616、618、620、622和624之间。存在分别用于整数和浮点操作的分开的寄存器堆608、610。一个实现方式的每个寄存器堆608、610也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆608和浮点寄存器堆610也能够彼此传递数据。对于一个实现方式,整数寄存器堆608被划分为两个单独的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实现方式的浮点寄存器堆610具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块611包括执行单元612、614、616、618、620、622、624,在执行单元612、614、616、618、620、622、624中实际执行指令。该区块包括寄存器堆608、610,寄存器堆608、610存储微指令需要执行的整数和浮点数据操作数值。一个实现方式的处理器600由多个执行单元组成:地址生成单元(AGU)612、AGU 614、快速算术逻辑单元(ALU)616、快速ALU 618、慢速ALU 620、浮点ALU 622、浮点移动单元624。对于一个实现方式,浮点执行单元622、624执行浮点、MMX、SIMD、SSE或其他操作。一个实现方式的浮点ALU 622包括64位/64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的诸个实现方式,涉及浮点值的指令可使用浮点硬件来处理。
在一个实现方式中,ALU操作进入高速ALU单元616、618。一个实现方式的快速ALU616、618可执行快速操作,有效等待时间为半个时钟周期。对于一个实现方式,大多数复杂整数操作进入慢速ALU 620,因为慢速ALU 620包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标志逻辑和分支处理。存储器加载/存储操作由AGU 612、614来执行。对于一个实现方式,整数ALU 616、618、620被描述为对64位数据操作数执行整数操作。在替代实现方式中,ALU 616、618、620可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元622、624可被实现为支持具有多种宽度的位的一系列操作数。对于一个实现方式,浮点单元622、624可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实现方式中,在父加载完成执行之前,微操作调度器602、604、606就分派依赖性操作。因为在处理器600中微操作被推测地调度和执行,所以处理器600也包括处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖性操作需要被重放,而允许独立操作完成。处理器的一个实现方式的调度器和重放机制也设计成用于捕捉用于文本串比较操作的指令序列。
根据本公开的实现方式,处理器600还包括用于实现用于存储器消歧的存储地址预测的逻辑。在一个实现方式中,处理器600的执行块611可以包括用于支持对SE的平台迁移的存储地址预测器(未示出)。
处理器600可以包括耦合至执行块611的引退单元654。引退单元654可以包括根据本公开的实现方式的飞地逻辑单元605a和冲突化解逻辑单元605b以为处理设备管理受信任的执行环境中的飞地存储器页的分页冲突。
术语“寄存器”可以指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,实现方式的寄存器不限于表示特定类型的电路。相反,实现方式的寄存器能够存储并提供数据,并能够执行本文中所述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实现方式中,整数寄存器存储32位整数数据。一个实现方式的寄存器堆也包含八个多媒体SIMD寄存器,用于紧缩数据。
对于以下讨论,寄存器应理解为设计成用于保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽MMXTM寄存器(在一些实例中,也称为“mm”寄存器)。这些MMX寄存器(可用在整数和浮点形式中)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一个实现方式中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实现方式中,整数和浮点数据被包括在相同的寄存器堆中,或被包括在不同的寄存器堆中。进一步地,在一个实现方式中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
实现方式可在许多不同的系统类型中实现。现在参考图7,所示的是示出了计算机系统(系统)700的框图,在计算机系统700中可以使用本公开的实现方式。如图7所示,多处理器系统700是点对点互连系统,且包括经由点对点互连750耦合的第一处理器770和第二处理器770。虽然仅以两个处理器770和780示出,但是应当理解,本公开的实现方式的范围不限于此。在其他实现方式中,在给定处理器中可存在一个或多个附加处理器。在一个实现方式中,多处理器系统700可以支持本文所述的对SE的平台迁移。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由使用点对点(P-P)接口电路778、788的P-P接口750来交换信息。如图7所示,IMC 772和782将处理器耦合到相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可经由使用点对点接口电路776、794、786和798的各个P-P接口752和754与芯片组790交换信息。芯片组790还可经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组790可以经由接口796耦合至第一总线716。在一个实现方式中,第一总线716可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图7所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实现方式中,第二总线720可以是低引脚数(LPC)总线。在一个实现方式中,各种设备可以耦合至第二总线720,包括例如,键盘和/或鼠标722、通信设备827以及存储单元828(诸如,可包括指令/代码和数据730的盘驱动器或其他大容量存储设备)。此外,音频I/O 724可以被耦合到第二总线720。注意,其他架构是可能的。例如,代替图7的点对点架构,系统可以实现多分支总线或其他这类架构。
现在参考图8,所示的是系统800的框图,在系统800中本公开的一个实现方式可以操作。系统800可以包括耦合至图形存储器控制器中枢(GMCH)820的一个或多个处理器810、815。附加的处理器815的可选性在图8中通过虚线来表示。在一个实现方式中,根据本公开的实现方式,处理器810、815支持对SE的平台迁移。
每个处理器810、815可以是如上所述的电路、集成电路、处理器和/或硅集成电路的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制单元不太可能出现在处理器810、815中。图8示出了GMCH 820可以耦合至存储器840,该存储器840可以是例如动态随机存取存储器(DRAM)。对于至少一个实现方式,DRAM可以与非易失性高速缓存相关联。
GMCH 820可以是芯片组或芯片组的部分。GMCH 820可以与处理器810、815进行通信,并控制处理器810、815与存储器840之间的交互。GMCH 820还可担当处理器810、815和系统800的其他元件之间的加速总线接口。对于至少一个实现方式,GMCH 820经由诸如前端总线(FSB)895之类的多点总线与处理器810、815进行通信。
此外,GMCH 820耦合至显示器845(诸如平板或触摸屏显示器)。GMCH 820可包括集成图形加速器。GMCH 820进一步耦合至输入/输出(I/O)控制器中枢(ICH)850,该输入/输出(I/O)控制器中枢(ICH)850可用于将各种外围设备耦合至系统800。在图8的实现方式中作为示例示出了外部图形设备860以及另一外围设备870,外部图形设备860可以是耦合至ICH850的分立图形设备。
替代地,附加的或不同的处理器也可存在于系统800中。例如,附加的处理器815可以包括与处理器810相同的附加的处理器、与处理器810异构的或不对称的附加的处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在包括架构、微架构、热、功耗特征等一系列品质度量的方面,处理器810、815之间存在各种差异。这些差异可以有效显示为处理器810和815之间的不对称性和异构性。对于至少一个实现方式,各种处理器810和815可驻留在同一管芯封装中。
现在参考图9,所示的是系统900的框图,在系统900中本公开的实现方式可以操作。图9示出了处理器970和980。在一个实现方式中,处理器970、980可以支持如上所述的对SE的平台迁移。处理器970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982,并且分别经由点对点(P-P)接口978和988之间的点对点互连950彼此相互通信。处理器970、980各自通过相应P-P接口976到994以及986到998经由点对点互连952和954与芯片组990通信,如图所示。对于至少一个实现方式,CL 972、982可以包括集成存储器控制器单元。CL972、982可以包括I/O控制逻辑。如图所示,存储器932、934耦合至CL 972、982,并且I/O设备914也耦合至控制逻辑972、982。传统I/O设备915经由接口996耦合至芯片组990。
实现方式可在许多不同的系统类型中实现。图10是根据本公开的实现方式的SoC1000的框图。虚线框是更先进的SoC的可选特征。在图10中,互连单元1012被耦合至:应用处理器1020,其包括一个或多个核1002A-N的集合以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一个或多个媒体处理器1018的集合,其可包括集成图形逻辑1008、用于提供静止和/或视频照相功能的图像处理器1024、用于提供硬件音频加速的音频处理器1026、以及用于提供视频编码/解码加速的视频处理器1028;静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,其用于耦合至一个或多个外部显示器。在一个实现方式中,存储器模块可以被包括在集成存储器控制器单元1014中。在另一个实现方式中,存储器模块可以被包括在可以被用来访问和/或控制存储器的SoC 1000的一个或多个其他组件中。应用处理器1020可以包括用于实现静默存储器指令和未命中率跟踪的PMU以优化如本文的实现方式所述的对线程的切换策略。
存储器层次结构包括核内的一个或多个层级的高速缓存、一个或多个共享高速缓存单元1006的集合以及耦合到集成存储器控制器单元1014的集合的外部存储器(未示出)。共享高速缓存单元1006的集合可包括一个或多个中级高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上的组合。
在一些实现方式中,一个或多个核1002A-N能够实现多线程。系统代理1010包括协调并操作核1002A-N的那些组件。系统代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1002A-N以及集成图形逻辑1008的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1002A-N在架构和/或指令集方面可以是同构或异构的。例如,核1002A-N中的一些可以是有序的,而另一些是乱序的。作为另一个示例,核1002A-N中的两个或更多可能能够执行相同的指令集,而其他核可能能够执行该指令集中仅仅子集或执行不同的指令集。
应用处理器1020可以是通用处理器,诸如,酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、凌动(AtomTM)或QuarkTM处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔TM公司获得。或者,应用处理器1020可以来自另一个公司,诸如ARM控股TM公司、MIPSTM等。应用处理器1020可以是专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。应用处理器1020可以被实现在一个或多个芯片上。应用处理器1020可以是一个或多个衬底的部分,并且/或者可以使用诸如例如BiCMOS、CMOS或NMOS之类的多种工艺技术中的任何技术将应用处理器1020实现在一个或多个衬底上。
图11是根据本公开的芯片上系统(SoC)设计的实现方式的框图。作为特定的说明性示例,SoC 1100被包括在用户装备(UE)中。在一个实现方式中,UE是指可由最终用户用于通信的任何设备,诸如,手持电话、智能电话、平板,超薄笔记本、具有宽带适配器的笔记本,或任何其他类似的通信设备。UE常常连接到基站或节点,该基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。
在此,SoC 1100包括2个核——1106和1107。核1106和1107可符合指令集架构,诸如,架构核TM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1106和1107耦合到L2高速缓存控件1108,该L2高速缓存控件1108与总线接口单元1109和L2高速缓存1110相关联以与SoC 1100的其他部分通信。互连1111包括可能实现所述公开的一个或多个方面的芯片上互连,诸如IOSF、AMBA或上文讨论的其他互连。在一个实现方式中,核1106、1107可以支持本文实现方式所述的对SE的平台迁移。
互连1111提供到其他组件的通信信道,其他组件诸如与用户身份模块(SIM)卡对接的SIM 1130、保存供核1106和1107执行以初始化和引导SOC 1100的引导代码的引导ROM1135、与外部存储器(例如,DRAM 1160)对接的SDRAM控制器1140、与非易失性存储器(例如,闪存1165)对接的闪存控制器1145、与外围设备对接的外围控制1150(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1120和LC视频接口1125、用于执行图形相关的计算的GPU 1115等等。这些接口中的任何一种可以包括本文中所述公开的多个方面。另外,SoC 1100示出了用于通信的外围设备,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180以及802.11Wi-Fi 1185。
图12示出了计算机系统1200的示例形式中的机器的示意图,在该计算机系统1200内,可以执行用于使机器执行本文所讨论的方法中的任何一个或多个的一组指令。在替代实现方式中,可以在LAN、内联网、外联网或因特网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(连续的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是,术语“机器”也应当包括单独或共同执行一组(或多组)指令以执行本文所讨论的方法中的任何一种或更多种方法的机器的任意集合。
计算机系统1200包括处理设备1202、主存储器1204(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如,闪存、静态随机存取存储器(SRAM)等)以及数据存储设备1218,它们经由总线1230彼此进行通信。
处理设备1202表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1202也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实现方式中,处理设备1202可以包括一个或多个处理核。处理设备1202被配置成执行用于执行本文中所讨论的操作和步骤的指令1226。在一个实现方式中,处理设备1202与参考图1描述的实现根据本公开的实现方式地管理本文所述的飞地存储器页的冲突的处理系统100相同。
计算机系统1200可以进一步包括通信地耦合至网络1220的网络接口设备1208。计算机系统1200还可以包括视频显示单元1211(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)、以及信号生成设备1216(例如,扬声器)。此外,计算机系统1200可以包括图形处理单元1222、视频处理单元1228以及音频处理单元1232。
数据存储设备1218可以包括非暂态机器可访问存储介质1224,在其上存储指令1226,指令1226实现本文所述的功能的方法中的任何一个或多个,诸如实现静默存储器指令和未命中率跟踪以优化上文所述的对处理设备中的线程的切换策略。在由计算机系统1200对指令1226的执行期间,指令1226也可完全或至少部分地作为指令1226驻留在主存储器1204之内和/或作为指令1226驻留在处理设备1202之内;该主存储器1204和处理设备1202也构成机器可访问存储介质。
非暂态机器可读存储介质1224也可以被用来存储实现管理诸如参考图1中的处理设备100所描述的处理设备中的飞地存储器页的冲突的指令1226,和/或包含调用上面的应用的方法的软件库。虽然非暂态机器可读存储介质1224在示例实现方式中被示出为单个介质,但术语“机器可访问存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“机器可访问存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行本公开的任何一个或多个方法的一组指令的任何介质。应当相应地认为术语“机器可访问存储介质”包括但不限于:固态存储器以及光和磁介质。
以下示例涉及进一步的实现方式。
示例1是一种处理设备,包括:冲突化解逻辑电路,用于:发起跟踪阶段以跟踪到安全飞地的飞地存储器高速缓存(EPC)页的转换后备缓冲器(TLB)映射;以及执行作为跟踪阶段的一部分的跟踪指令,其中跟踪指令将安全飞地中的任何页作为跟踪指令的变量参数。
在示例2中,示例1的主题可以任选地包括,其中对飞地中的多个EPC页中的每一个的父页和父页的对应的子页执行跟踪指令。
在示例3中,示例1-2的主题可以任选地包括,其中冲突化解逻辑电路进一步用于确定由跟踪指令生成了跟踪指令错误。
在示例4中,示例1-3的主题可以任选地包括,其中虚拟机监视器(VMM)管理的虚拟机(VM)的客户机操作系统(OS)遇到跟踪指令错误,其中当在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间出现冲突时遇到跟踪指令错误,其中VM不知道冲突。
在示例5中,示例1-4的主题可以任选地包括,其中冲突化解逻辑电路进一步用于响应于在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间出现冲突而触发冲突执行控制VM退出,其中冲突执行控制VM退出允许VMM化解冲突,使得VM不知道VMM化解冲突。
在示例6中,示例1-5的主题可以任选地包括,其中冲突化解逻辑电路进一步用于响应于触发冲突执行控制VM退出而接收对VM的执行的控制。
在示例7中,示例1-6的主题可以任选地包括,其中响应于VMM接收对VM的执行的控制,VMM用于暂停VMM的正在安全飞地上工作的分页线程。
在示例8中,示例1-7的主题可以任选地包括,其中VMM进一步用于将分页线程重定向以在第二安全飞地上工作,其中第二安全飞地与安全飞地不同。
在示例9中,示例1-8的主题可以任选地包括,其中在暂停分页线程之后,VMM用于使VM在当之前采用VM退出时返回指令指针(RIP)指向的指令指针处重新进入。
示例10是一种系统,包括:存储器;以及耦合至存储器的冲突化解逻辑电路,用于:发起跟踪阶段以跟踪到安全飞地的飞地存储器高速缓存(EPC)页的转换后备缓冲器(TLB)映射;以及执行作为跟踪阶段的一部分的跟踪指令,其中跟踪指令将安全飞地中的任何页作为跟踪指令的变量参数。
在示例11中,示例10的主题可以任选地包括,其中冲突化解逻辑电路进一步用于确定由跟踪指令生成了跟踪指令错误。
在示例12中,示例10-11的主题可以任选地包括,其中虚拟机监视器(VMM)管理的虚拟机(VM)的客户机操作系统(OS)遇到跟踪指令错误,其中当在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间出现冲突时遇到跟踪指令错误,其中VM不知道冲突。
在示例13中,示例10-12的主题可以任选地包括,其中冲突化解逻辑电路进一步用于响应于在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间出现冲突而触发冲突执行控制VM退出,其中冲突执行控制VM退出允许VMM化解冲突,使得VM不知道VMM化解冲突。
在示例14中,示例10-13的主题可以任选地包括,其中冲突化解逻辑电路进一步用于响应于触发冲突执行控制VM退出而接收对VM的执行的控制,并且其中响应于VMM接收对VM的执行的控制,VMM用于暂停VMM的正在安全飞地上工作的分页线程。
示例15是一种非暂态机器可读存储介质,该非暂态机器可读存储介质包括指令,指令在被处理设备访问时,使处理设备执行操作,包括:由处理设备发起跟踪阶段以跟踪到安全飞地的飞地存储器高速缓存(EPC)页的转换后备缓冲器(TLB)映射;以及由处理设备执行作为跟踪阶段的一部分的跟踪指令,其中跟踪指令将安全飞地中的任何页作为跟踪指令的变量参数。
在示例16中,示例15的主题可以任选地包括确定由跟踪指令生成了跟踪指令错误。
在示例17中,示例15-16的主题可以任选地包括,其中虚拟机监视器(VMM)管理的虚拟机(VM)的客户机操作系统(OS)遇到跟踪指令错误,其中当在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间出现冲突时遇到跟踪指令错误,其中VM不知道冲突。
在示例18中,示例15-17的主题可以任选地包括响应于在跟踪阶段期间在均执行跟踪指令以监视EPC页的VMM和客户机OS之间出现冲突而触发冲突执行控制VM退出,其中冲突执行控制VM退出允许VMM化解冲突,使得VM不知道VMM化解冲突。
在示例19中,示例15-18的主题可以任选地包括响应于触发冲突执行控制VM退出而接收对VM的执行的控制,其中响应于VMM接收对VM的执行的控制,VMM用于暂停VMM的正在安全飞地上工作的分页线程。
在示例20中,示例15-19的主题可以任选地包括,其中在暂停分页线程之后,VMM用于使VM在当之前采用冲突执行控制VM退出时返回指令指针(RIP)指向的指令指针处重新进入。
各实现方式可以具有上文所描述的操作特征的不同的组合。例如,上文所描述的方法的所有可选的特征也可以相对于非暂态计算机可读存储介质来实现。这些示例中的细节可以在一个或多个实现方式中的任何地方被使用。
尽管已参考有限数量的实现方式描述了本公开,但是,本领域技术人员将从其中理解很多修改和变型。所附权利要求书旨在涵盖落入本公开的真实精神和范围内的所有这些修改和变型。
设计会经历多个阶段,从创造到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,如仿真中将有用的,可使用硬件描述语言或其他功能性描述语言来表示硬件。此外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门电路的电路级模型。此外,大多数设计在某些阶段都达到表示硬件模型中多种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种各样特征的数据。在任何设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光学或电学波来发送的,这些光学或电学波被调制或以其他方式生成以传送这些信息。当发送指示或承载代码或设计的电学载波达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实现方式的技术的制品(诸如,编码在载波中的信息)。
如本文中所使用的模块指的是硬件、软件、和/或固件的任何组合。作为示例,模块包括与非暂态介质相关联的诸如微控制器之类的硬件,该非暂态介质用于存储适于由该微控制器执行的代码。因此,在一个实现方式中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非暂态介质上的代码。另外,在另一实现方式中,模块的使用是指包括代码的非暂态介质,该代码专门适于由微控制器执行以进行预定操作。并且可推断,在又一实现方式中,术语模块(在该示例中)可以指微控制器和非暂态介质的组合。通常,被示为分开的模块边界一般不同,并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实现方式中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实现方式中,使用短语“被配置成”指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然“被配置成”执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实现方式中,使用术语“用于”、“能够/能够用于”和/或“可操作用于”指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上文所注意,在一个实现方式中,“用于”、“能够/能够用于”和/或“可操作用于”的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如在本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实现方式中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其他表示。例如,十进制数十还可以被表示为二进制值910和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实现方式中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置,而已更新的值潜在地包括低逻辑值,即,置位。注意,可以使用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实现方式可以经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非暂态机器可访问/可读介质包括提供(即,存储和/或发送)诸如计算机或电子系统之类的机器可读形式的信息的任何机制。例如,非暂态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保持从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些与可从其接收信息的非暂态介质相区别。
被用于对逻辑进行编程以执行本公开的诸个实现方式的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。进一步的,指令可经由网络或通过其他计算机可读介质来分发。因此,计算机可读介质可包括用于以机器(诸如,计算机)可读形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实现方式”或“实现方式”的引用意味着结合该实现方式描述的特定特征、结构或特性被包括在本公开的至少一个实现方式中。因此,在整个说明书的多个位置出现短语“在一个实现方式中”或“在实现方式中”不一定全部是指同一实现方式。此外,在一个或多个实现方式中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实现方式给出了具体实施方式。然而,将显而易见的是,可对这些实现方式作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。相应地,应当认为说明书和附图是说明性的而不是限制性的。此外,实现方式和其他示例性语言的上述使用不一定指的是同一实现方式或同一示例,而可能指的是不同和独特的实现方式,也有可能是同一实现方式。

Claims (22)

1.一种处理设备,包括:
冲突化解逻辑电路,用于:
发起跟踪阶段以跟踪到安全飞地的飞地存储器高速缓存(EPC)页的转换后备缓冲器(TLB)映射;以及
执行作为所述跟踪阶段的一部分的跟踪指令,其中所述跟踪指令将所述安全飞地中的任何页作为所述跟踪指令的变量参数。
2.如权利要求1所述的处理设备,其特征在于,对所述飞地中的多个EPC页中的每一个的父页和所述父页的对应的子页执行所述跟踪指令。
3.如权利要求1所述的处理设备,其特征在于,所述冲突化解逻辑电路进一步用于确定由所述跟踪指令生成了跟踪指令错误。
4.如权利要求3所述的处理设备,其特征在于,虚拟机监视器(VMM)管理的虚拟机(VM)的客户机操作系统(OS)遇到所述跟踪指令错误,其中当在所述跟踪阶段期间在均执行所述跟踪指令以监视所述EPC页的所述VMM和所述客户机OS之间出现冲突时遇到所述跟踪指令错误,其中所述VM不知道所述冲突。
5.如权利要求4所述的处理设备,其特征在于,所述冲突化解逻辑电路进一步用于响应于在所述跟踪阶段期间在均执行所述跟踪指令以监视所述EPC页的所述VMM和所述客户机OS之间出现冲突而触发冲突执行控制VM退出,其中所述冲突执行控制VM退出允许所述VMM化解所述冲突,使得所述VM不知道所述VMM化解所述冲突。
6.如权利要求5所述的处理设备,其特征在于,所述冲突化解逻辑电路进一步用于响应于触发所述冲突执行控制VM退出而接收对所述VM的执行的控制。
7.如权利要求6所述的处理设备,其特征在于,响应于所述VMM接收对所述VM的执行的控制,所述VMM用于暂停所述VMM的正在所述安全飞地上工作的分页线程。
8.如权利要求7所述的处理设备,其特征在于,所述VMM进一步用于将所述分页线程重定向以在第二安全飞地上工作,其中所述第二安全飞地与所述安全飞地不同。
9.如权利要求7所述的处理设备,其特征在于,在暂停所述分页线程之后,所述VMM用于使所述VM在当之前采用所述冲突执行控制VM退出时返回指令指针(RIP)指向的指令指针处重新进入。
10.一种系统,包括:
存储器;以及
冲突化解逻辑电路,耦合至所述存储器,所述冲突化解逻辑电路用于:
发起跟踪阶段以跟踪到安全飞地的飞地存储器高速缓存(EPC)页的转换后备缓冲器(TLB)映射;以及
执行作为所述跟踪阶段的一部分的跟踪指令,其中所述跟踪指令将所述安全飞地中的任何页作为所述跟踪指令的变量参数。
11.如权利要求10所述的系统,其特征在于,所述冲突化解逻辑电路进一步用于确定由所述跟踪指令生成了跟踪指令错误。
12.如权利要求11所述的系统,其特征在于,虚拟机监视器(VMM)管理的虚拟机(VM)的客户机操作系统(OS)遇到所述跟踪指令错误,其中当在所述跟踪阶段期间在均执行所述跟踪指令以监视所述EPC页的所述VMM和所述客户机OS之间出现冲突时遇到所述跟踪指令错误,其中所述VM不知道所述冲突。
13.如权利要求12所述的系统,其特征在于,所述冲突化解逻辑电路进一步用于响应于在所述跟踪阶段期间在均执行所述跟踪指令以监视所述EPC页的所述VMM和所述客户机OS之间出现冲突而触发冲突执行控制VM退出,其中所述冲突执行控制VM退出允许所述VMM化解所述冲突,使得所述VM不知道所述VMM化解所述冲突。
14.如权利要求13所述的系统,其特征在于,所述冲突化解逻辑电路进一步用于响应于触发所述冲突执行控制VM退出而接收对所述VM的执行的控制,并且其中响应于所述VMM接收对所述VM的执行的控制,所述VMM用于暂停所述VMM的正在所述安全飞地上工作的分页线程。
15.一种方法,包括:
由处理设备发起跟踪阶段以跟踪到安全飞地的飞地存储器高速缓存(EPC)页的转换后备缓冲器(TLB)映射;以及
由所述处理设备执行作为所述跟踪阶段的一部分的跟踪指令,其中所述跟踪指令将所述安全飞地中的任何页作为所述跟踪指令的变量参数。
16.如权利要求15所述的方法,其特征在于,进一步包括确定由所述跟踪指令生成了跟踪指令错误。
17.如权利要求16所述的方法,其特征在于,虚拟机监视器(VMM)管理的虚拟机(VM)的客户机操作系统(OS)遇到所述跟踪指令错误,其中当在所述跟踪阶段期间在均执行所述跟踪指令以监视所述EPC页的所述VMM和所述客户机OS之间出现冲突时遇到所述跟踪指令错误,其中所述VM不知道所述冲突。
18.如权利要求17所述的方法,其特征在于,进一步包括响应于在所述跟踪阶段期间在均执行所述跟踪指令以监视所述EPC页的所述VMM和所述客户机OS之间出现冲突而触发冲突执行控制VM退出,其中所述冲突执行控制VM退出允许所述VMM化解所述冲突,使得所述VM不知道所述VMM化解所述冲突。
19.如权利要求18所述的方法,其特征在于,进一步包括响应于触发所述冲突执行控制VM退出而接收对所述VM的执行的控制,其中响应于所述VMM接收对所述VM的执行的控制,所述VMM用于暂停所述VMM的正在所述安全飞地上工作的分页线程。
20.至少一种机器可读介质,包括多条指令,所述多条指令响应于在计算设备上执行而使得所述计算设备执行根据权利要求15至19中的任一项所述的方法。
21.一种实现管理用于处理设备的安全飞地的存储器的用于引擎的装置,所述装置配置为执行如权利要求15至19中的任一项所述的方法。
22.一种设备,包括用于执行如权利要求15至19中的任一项所述的方法的装置。
CN201810045711.9A 2017-01-18 2018-01-17 为安全飞地管理存储器 Active CN108334400B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/408,774 2017-01-18
US15/408,774 US10120805B2 (en) 2017-01-18 2017-01-18 Managing memory for secure enclaves

Publications (2)

Publication Number Publication Date
CN108334400A true CN108334400A (zh) 2018-07-27
CN108334400B CN108334400B (zh) 2024-01-12

Family

ID=62841456

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810045711.9A Active CN108334400B (zh) 2017-01-18 2018-01-17 为安全飞地管理存储器

Country Status (2)

Country Link
US (1) US10120805B2 (zh)
CN (1) CN108334400B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704782A (zh) * 2019-09-30 2020-01-17 北京字节跳动网络技术有限公司 页面响应方法、装置、电子设备及存储介质

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592428B1 (en) * 2017-09-27 2020-03-17 Amazon Technologies, Inc. Nested page tables
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
US11093272B2 (en) * 2018-06-27 2021-08-17 International Business Machines Corporation Virtual machine allocation and migration between hardware devices by destroying and generating enclaves using transmitted datafiles and cryptographic keys
WO2020000335A1 (en) * 2018-06-29 2020-01-02 Intel Corporation Systems and methods of restricting access to kernel memory
US11556437B2 (en) 2018-08-22 2023-01-17 Intel Corporation Live migration of virtual devices in a scalable input/output (I/O) virtualization (S-IOV) architecture
US11263122B2 (en) * 2019-04-09 2022-03-01 Vmware, Inc. Implementing fine grain data coherency of a shared memory region
US20210144170A1 (en) * 2019-11-09 2021-05-13 Indian Institute Of Science System and method for protection against side channel attacks
US20210314237A1 (en) * 2020-04-07 2021-10-07 Vmware, Inc. Security threat detection during service query handling

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1545034A (zh) * 2003-11-26 2004-11-10 中国人民解放军国防科学技术大学 片内多处理器局部cache一致性的双环监听方法
CN101533363A (zh) * 2007-11-07 2009-09-16 英特尔公司 引退前-后混合硬件锁定省略(hle)方案
CN101770357A (zh) * 2008-12-31 2010-07-07 世意法(北京)半导体研发有限责任公司 减少处理器中的指令冲突
CN102460376A (zh) * 2009-06-26 2012-05-16 英特尔公司 无约束事务存储器(utm)系统的优化
GB201405732D0 (en) * 2013-03-31 2014-05-14 Intel Corp Instructions and logic to provide advanced paging capabilities for secure enclave page caches
JP2014112383A (ja) * 2013-12-19 2014-06-19 Intel Corp セキュアなアプリケーションの実行を提供するプロセッサ
CN104052621A (zh) * 2013-03-15 2014-09-17 英特尔公司 用于跨快速外围组件互连(pcie)段的平台管理消息的方法和系统
CN104798053A (zh) * 2012-12-28 2015-07-22 英特尔公司 安全区域内的存储器管理
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
US20160378664A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Supporting fault information delivery
US20170269867A1 (en) * 2011-04-20 2017-09-21 Microsoft Technology Licensing, Llc Virtual machine trigger
CN107209722A (zh) * 2015-02-23 2017-09-26 英特尔公司 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1545034A (zh) * 2003-11-26 2004-11-10 中国人民解放军国防科学技术大学 片内多处理器局部cache一致性的双环监听方法
CN101533363A (zh) * 2007-11-07 2009-09-16 英特尔公司 引退前-后混合硬件锁定省略(hle)方案
CN101770357A (zh) * 2008-12-31 2010-07-07 世意法(北京)半导体研发有限责任公司 减少处理器中的指令冲突
CN102460376A (zh) * 2009-06-26 2012-05-16 英特尔公司 无约束事务存储器(utm)系统的优化
US20170269867A1 (en) * 2011-04-20 2017-09-21 Microsoft Technology Licensing, Llc Virtual machine trigger
CN104798053A (zh) * 2012-12-28 2015-07-22 英特尔公司 安全区域内的存储器管理
CN104052621A (zh) * 2013-03-15 2014-09-17 英特尔公司 用于跨快速外围组件互连(pcie)段的平台管理消息的方法和系统
CN104484284A (zh) * 2013-03-31 2015-04-01 英特尔公司 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
GB201405732D0 (en) * 2013-03-31 2014-05-14 Intel Corp Instructions and logic to provide advanced paging capabilities for secure enclave page caches
JP2014112383A (ja) * 2013-12-19 2014-06-19 Intel Corp セキュアなアプリケーションの実行を提供するプロセッサ
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
CN105224865A (zh) * 2014-06-27 2016-01-06 英特尔公司 用于在安全飞地页高速缓存中进行中断和恢复分页的指令和逻辑
CN107209722A (zh) * 2015-02-23 2017-09-26 英特尔公司 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑
US20160378664A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Supporting fault information delivery

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704782A (zh) * 2019-09-30 2020-01-17 北京字节跳动网络技术有限公司 页面响应方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
US10120805B2 (en) 2018-11-06
US20180203801A1 (en) 2018-07-19
CN108334400B (zh) 2024-01-12

Similar Documents

Publication Publication Date Title
CN108334400A (zh) 为安全飞地管理存储器
CN104954356B (zh) 保护共享的互连以用于虚拟机
CN106716434B (zh) 具有独立的用户域与管理程序域的存储器保护密钥架构
US9703720B2 (en) Method and apparatus to allow secure guest access to extended page tables
CN108388528A (zh) 基于硬件的虚拟机通信
CN109960665A (zh) 用于在分页期间逆转页阻止的解除阻止指令
CN108463826A (zh) 用于在环转变期间保护栈的处理器扩展
EP3528130B1 (en) Mechanism to prevent software side channels
US11157303B2 (en) Detecting bus locking conditions and avoiding bus locks
CN106575261A (zh) 受保护的区域中的存储器初始化
TWI742120B (zh) 用以識別及避免在虛擬機器監控器與客端虛擬機器之間追蹤衝突的處理器延伸的處理系統、晶片上系統及方法
US10394595B2 (en) Method to manage guest address space trusted by virtual machine monitor
CN109643283A (zh) 管理飞地存储器页
CN106575284A (zh) 用于内核模块的多核存储器数据记录器
EP3333699A1 (en) System and method to improve nested virtual machine monitor performance
US10452423B2 (en) Method and apparatus for light-weight virtualization contexts
CN109690546B (zh) 支持对客户机飞地存储器页的超额订阅
WO2014122554A1 (en) Key-based data security management
CN108363668A (zh) 线性存储器地址变换和管理
CN110968394A (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