CN104484284A - 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 - Google Patents

用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 Download PDF

Info

Publication number
CN104484284A
CN104484284A CN201410124302.XA CN201410124302A CN104484284A CN 104484284 A CN104484284 A CN 104484284A CN 201410124302 A CN201410124302 A CN 201410124302A CN 104484284 A CN104484284 A CN 104484284A
Authority
CN
China
Prior art keywords
instruction
enclave
hardware thread
processor
decoding
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
CN201410124302.XA
Other languages
English (en)
Other versions
CN104484284B (zh
Inventor
C·V·罗扎斯
I·埃里克山德洛维奇
I·安奈蒂
A·贝伦宗
M·A·戈德史密斯
B·E·亨特利
A·伊凡诺夫
S·P·约翰逊
R·M·勒斯列-赫德
F·X·麦克金
G·尼格
R·拉波波特
S·D·罗杰斯
U·R·萨瓦高恩卡
V·R·斯卡拉塔
V·尚伯格
W·H·史密斯
W·C·伍德
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 CN104484284A publication Critical patent/CN104484284A/zh
Application granted granted Critical
Publication of CN104484284B publication Critical patent/CN104484284B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本申请公开了用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑。指令和逻辑为安全飞地页面高速缓存提供高级分页能力。诸个实施例包括多个硬件线程或处理核心、高速缓存,该高速缓存用于存储共享页面地址的安全数据,该共享页面地址被分配给硬件线程可访问的安全飞地。解码级解码第一指令,并根据该共享页面地址的飞地页面高速缓存映射来标记条目,以阻止为所述第一或第二硬件线程中的任一个创建用于访问该共享页面的新转换,该第一指令将所述共享页面地址指定为操作数。解码第二指令以供执行,该第二指令将所述安全飞地指定为操作数,并且执行单元记录当前正在访问与安全飞地相对应的飞地页面高速缓存中的安全数据的硬件线程,并在任一硬件线程退出安全飞地时将所记录的硬件线程的数量递减。

Description

用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
技术领域
本公开涉及处理逻辑、微处理器以及相关的指令集体系结构的领域,这些指令集体系结构在被处理器或其他处理逻辑所执行时运行逻辑、数学或其他功能性操作。具体而言,本公开涉及用于为安全飞地页面高速缓存(secure enclave page caches)提供高级分页能力的指令和逻辑。
背景技术
用于支持诸如语音、视频、事务以及私有数据之类的新使用模型和服务的应用和高性能网络在安全领域提出了新的挑战。处于保密和完整性的目的而保护存储器中的或在传输途中的数据是重要的,但为了支持高速加密操作和维持对受保护的代码和/或数据的安全访问所需的存储器,增加了复杂性最终增加了成本。
已知的一种用于创建和维持安全、受保护或隔离的分区或环境的技术是建立飞地(enclave)。飞地是信息和处理能力的集合,其可作为一组来保护。信息和处理能力可包括网络、主机或应用。
常用的用于处理数据和/或指令的技术是通过支持虚拟存储器的高速缓存,例如通过采用转换后备缓冲器(TLB)在硬件中根据页面表中存在的映射快速地进行从线性地址到物理存储器地址的转换。TLB中的条目可与一个或多个特定的处理器核心、硬件线程或逻辑处理器相关联。因此,可保护在高速缓存中访问的数据不被未经授权的处理器核心、硬件线程或逻辑处理器所访问。
管理许可、物理存储器和/或改变页面表中的映射通常由操作系统(OS)来管理,但当存储器内容受保护时(例如在飞地中),OS可能未被许可或未被信任来访问实际受保护的内容,即飞地具有私有存储器。因此,在不能信任OS的情况下,确保私有存储器内容的安全性和/或完整性并管理有限量物理存储器的技术限制提出了一系列独特的安全性和性能挑战。
迄今为止,解决这些挑战的安全性解决方案以及对此类性能限制问题以及设计、验证和其它复杂性的潜在解决方案尚未被充分探索。
附图说明
在附图的各图中通过示例而非限制地示出本发明。
图1A是执行用于为安全飞地页面高速缓存提供高级分页能力的指令的系统的一个实施例的框图。
图1B是执行用于为安全飞地页面高速缓存提供高级分页能力的指令的系统的另一实施例的框图。
图1C是执行用于为安全飞地页面高速缓存提供高级分页能力的指令的系统的另一实施例的框图。
图2是执行用于为安全飞地页面高速缓存提供高级分页能力的指令的处理器的一个实施例的框图。
图3A示出根据一个实施例的打包数据类型。
图3B示出根据一个实施例的打包数据类型。
图3C示出根据一个实施例的打包数据类型。
图3D示出根据一个实施例的用于为安全飞地页面高速缓存提供高级分页能力的指令编码。
图3E示出根据另一实施例的用于为安全飞地页面高速缓存提供高级分页能力的指令编码。
图3F示出根据另一实施例的用于为安全飞地页面高速缓存提供高级分页能力的指令编码。
图3G示出根据另一实施例的用于为安全飞地页面高速缓存提供高级分页能力的指令编码。
图3H示出根据另一实施例的用于为安全飞地页面高速缓存提供高级分页能力的指令编码。
图4A示出用于执行为安全飞地页面高速缓存提供高级分页能力的指令的处理器微体系结构的一个实施例的要素。
图4B示出用于执行为安全飞地页面高速缓存提供高级分页能力的指令的处理器微体系结构的另一实施例的要素。
图5是用于执行为安全飞地页面高速缓存提供高级分页能力的指令的处理器的一个实施例的框图。
图6是用于执行为安全飞地页面高速缓存提供高级分页能力的指令的计算机系统的一个实施例的框图。
图7是用于执行为安全飞地页面高速缓存提供高级分页能力的指令的计算机系统的另一实施例的框图。
图8是用于执行为安全飞地页面高速缓存提供高级分页能力的指令的计算机系统的另一实施例的框图。
图9是用于执行为安全飞地页面高速缓存提供高级分页能力的指令的芯片上系统的一个实施例的框图。
图10是用于执行为安全飞地页面高速缓存提供高级分页能力的指令的处理器的实施例的框图。
图11是为安全飞地页面高速缓存提供高级分页能力的IP核开发系统的一个实施例的框图。
图12示出为安全飞地页面高速缓存提供高级分页能力的体系结构仿真系统的一个实施例。
图13示出用于转换为安全飞地页面高速缓存提供高级分页能力的指令的系统的一个实施例。
图14示出使用指令以向安全飞地页面高速缓存提供高级分页能力的处理系统的一个实施例。
图15示出使用指令以向安全飞地页面高速缓存提供高级分页能力的处理器中的装置的实施例。
图16示出用于为安全飞地页面高速缓存提供高级分页能力的过程的一个实施例的流程图。
图17示出用于为安全飞地页面高速缓存提供高级分页能力的过程的替代实施例的流程图。
图18A示出用于为安全飞地页面高速缓存提供高级分页能力的过程的另一实施例的流程图。
图18B示出用于为安全飞地页面高速缓存提供高级分页能力的过程的另一实施例的流程图。
具体实施方式
下文揭示了一种用于在处理器、计算机系统或其他处理设备中、或与处理器、计算机系统或其他处理设备一起结合以为安全飞地页面高速缓存提供高级分页能力的指令和处理逻辑。
在特殊高速缓存或仅保持私有或受保护数据的高速缓存(例如与飞地相关联)的一部分中,对未加密的私有或受保护数据的访问可仅限于经授权的处理器核心、硬件线程或逻辑处理器。这样的飞地私有存储器可被称为飞地页面高速缓存(EPC)存储器。
如同其它物理存储器一样,通过按照需要将数据和/或代码置入分页和移出分页,可使EPC支持更大的私有或受保护的地址空间。改变页面的映射通常由OS管理,但在飞地中,OS不一定有对飞地私有存储器的内容的访问权。
TLB中的条目与一个或多个特定处理器核心、硬件线程或逻辑处理器相关联,当页面正在被移出至存储器或非易失性存储时,一个或多个特定处理器核心、硬件线程或逻辑处理器不应当被允许修改该页面。因此,改变飞地的页面的映射(即逐出页面或加载该飞地的新页面)可能需要系统通过如下方式使访问飞地资源的该一个或多个处理器核心、硬件线程或逻辑处理器“静默”:在EPC存储器内容被加密并写回、新页面从存储器被加载并解密、TLB条目被转储存储和替换等等的同时,将访问飞地资源的该一个或多个处理器核心、硬件线程或逻辑处理器置于临时停用或禁止状态,或使飞地中的任何应用停止运行。可能需要硬件保护机制来保护EPC中的页面,以在不能信任OS的情况下确保私有存储器内容的安全性和/或完整性,并辅助管理有限量的物理私有存储器。
涉及安全飞地的一个示例方法在2012年6月19日提交的名称为“Method and Apparatus to Provide Secure Application Execution(用于提供安全应用执行的方法和装置)”的共同待审的美国专利申请S/N13/527,547中有描述。
每当EPC存储器中的页面被逐出,它就需要利用EPC存储器发信号通知所有处理器核心或逻辑处理器,并且需要所有处理器核心或逻辑处理器退出飞地以替换页面内容、转储存储TLB条目或多个条目、等等。此外,在硬件中确保满足这样的要求以保护飞地隐私性可涉及相当程度的设计和验证复杂性。
将理解,例如,如果在EPC存储器内容被加密并写回、新页面从存储器被加载并解密、TLB条目被转储清除并替换等等场合下的分页过程可被分拆成多个阶段,其中在一个或多个阶段期间仅短暂地中断处理器核心或逻辑处理器,则可减小由于分页过程引起的性能降级。
本文中公开了用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑。一些实施例包括多个硬件线程、逻辑处理器或处理核心、用于存储用于共享页面地址的安全数据的高速缓存,该共享页面地址被分配给安全飞地并可由硬件线程、逻辑处理器或处理核心访问。解码级解码第一指令(例如下文更详细讨论的EBLOCK指令),该第一指令指定共享页面地址作为操作数。一个或多个执行单元标记与共享页面地址的飞地页面高速缓存映射相对应的条目,以阻止为所述多个硬件线程、逻辑处理器或处理核心创建用于访问该共享页面的新的TLB转换。解码第二指令(例如也在下文中详细讨论的ETRACK指令)以供执行,该第二指令指定所述安全飞地作为操作数,并且一个或多个执行单元记录当前正在访问与安全飞地相对应的该飞地页面高速缓存中的安全数据的硬件线程。当硬件线程中的任一个退出安全飞地时,递减所记录的硬件线程的数量。
然后OS可将处理器间中断(IPI)发送至当前正在访问与安全飞地相对应的飞地页面高速缓存中的安全数据的任何硬件线程、逻辑处理器或处理核心。当硬件线程、逻辑处理器或处理核心确收IPI并退出安全飞地时,它们的TLB条目或多个TLB条目被转储清除,并且所记录的硬件线程的数量递减。当所记录的硬件线程的数量达到零时,可以安全地使OS逐出页面或多个页面、对数据加密并将它们写回存储器或非易失性存储器。OS可使用第三指令(例如也在下文中详细讨论的EWB指令)来完成逐出和写回。由于对安全数据的飞地保护可能不能信任OS,所以如果所记录的硬件线程的数量未达到零,则第三指令的一个实施例可能失败。在替代实施例中,第三指令可等待,直到所记录的硬件线程的数量达到零才执行。
将可理解,管理许可、物理存储器和/或改变页面表中的映射通常由操作系统(OS)来管理,但当存储器内容受保护时(例如在飞地中),OS可能未被许可或未被信任来访问实际受保护的内容,因为飞地具有私有存储器。因此,利用为安全飞地页面高速缓存提供高级分页能力的指令和处理逻辑,可在不能信任OS的情况下按照分级方式实现确保私有存储器内容的安全性和/或完整性并且管理有限量物理存储器的技术限制,无需精巧的硬件支持和/或设计努力。
在以下描述中,陈述了诸如处理逻辑、处理器类型、微体系结构条件、事件、启用机制等多种特定细节,以提供对本发明实施例的更透彻理解。然而,本领域技术人员应当领会,没有这些具体细节也可实践本发明。此外,没有详细示出一些公知的结构、电路等等,以避免不必要地混淆本发明的实施例。
虽然下述的诸个实施例参照处理器来描述,但其他实施例也适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于其它类型的电路或半导体器件,这些其它类型的电路或半导体器件也可受益于更高的流水线吞吐量和提高的性能。本发明的诸个实施例的教示适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位、或16位数据运算的处理器或机器,并适用于执行数据操作或管理的任何处理器和机器。此外,下述描述提供了示例,并且附图出于示意性目的示出了多个示例。然而,这些示例不应该被理解为具有限制性目的,因为它们仅仅旨在提供本发明的诸个实施例的示例,而并非对本发明的实施例的所有可能实现方式进行穷举。
虽然下述的示例描述了在执行单元和逻辑电路情况下的指令处理和分配,但本发明的其他实施例也可通过存储在机器可读有形介质上的数据和/或指令来完成,这些数据和/或指令在被机器执行时使得机器执行与本发明至少一个实施例相一致的功能。在一个实施例中,与本发明的实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令编程的通用处理器或专用处理器执行本发明的步骤。本发明的诸个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程来执行根据本发明的实施例的一个或多个操作。另选地,本发明的诸个实施例的这些步骤可由包含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
被用于对逻辑进行编程以执行本发明的诸个实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)内。进一步的,指令可经由网络或其他计算机可读介质来分发。因此,计算机可读介质可包括用于以机器(诸如,计算机)可读的格式存储或发送信息的任何机制,但不限于:磁盘、光盘、致密盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计会经历多个阶段,从创新到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,如仿真中将有用的,可使用硬件描述语言或其他功能性描述语言来表示硬件。此外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门电路的电路级模型。此外,大多数设计在某些阶段都达到表示硬件模型中多种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种各样特征的数据。在任何的设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光学或电学波来发送的,这些光学或电学波被调制或以其他方式生成以传送这些信息。当发送指示或承载代码或设计的电学载波达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本发明的诸个实施例的技术的物品(诸如,编码在载波中的信息)。
在现代处理器中,多个不同执行单元被用于处理和执行多种代码和指令。并不是所有指令都被同等地创建,因为其中有一些更快地被完成而另一些需要多个时钟周期来完成。指令的吞吐量越快,则处理器的总体性能越好。因此,使大量指令尽可能快地执行将会是有利的。然而,某些指令具有更大的复杂度,并需要更多的执行时间和处理器资源。例如,存在浮点指令、加载/存储操作、数据移动等等。
因为更多的计算机系统被用于互联网、文本以及多媒体应用,所以逐渐地引进更多的处理器支持。在一个实施例中,指令集可与一个或多个计算机体系结构相关联,一个或多个计算机体系结构包括数据类型、指令、寄存器体系结构、寻址模式、存储器体系结构、中断和例外处理、外部输入输出(I/O)。
在一个实施例中,指令集体系结构(ISA)可由一个或更多微体系结构来执行,微体系结构包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微体系结构的诸个处理器可共享公共指令集的至少一部分。例如,奔腾四(Pentium4)处理器、酷睿(CoreTM)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices,Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸如,ARM控股有限公司、MIPS或它们的授权方或兼容方)所设计的诸多处理器可共享至少一部分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器体系结构在不同的微体系结构中可使用新的或已知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,使用寄存器别名表RAT、重排序缓冲器ROB、以及隐退寄存器文件)的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址或不可寻址的一个或多个寄存器、寄存器体系结构、寄存器文件、或其他寄存器集合。
在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示多个字段(位的数目、位的位置等)以特别指定将要被执行的操作以及将要被执行的操作的操作数。一些指令格式可进一步被指令模板(或子格式)所细分定义。例如,给定指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有不同解释的给定字段。在一个实施例中,使用指令格式(并且,如果定义过,则以该指令格式的一个给定指令模板)来表示指令,并且该指令指定或指示操作以及该操作将操作的操作数。
科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用以及视觉和多媒体应用(诸如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(SIMD)指的是使得处理器在多个数据元素上执行一操作的一种类型的指令。SIMD技术可被用于处理器中,这些处理器将寄存器中的诸个位(bit)逻辑地划分入多个固定大小或可变大小的数据元素,每个数据元素表示单独的值。例如,在一个实施例中,64位寄存器中的诸个位可被组织为包含四个单独的16位数据元素的源操作数,每个数据元素表示单独的16位值。该数据类型可被称为“打包”数据类型或“向量”数据类型,并且该数据类型的操作数被称为打包数据操作数或向量操作数。在一个实施例中,打包数据项或向量可以是存储在单个寄存器中的打包数据元素的序列,并且打包数据操作数或向量操作数可以是SIMD指令(或“打包数据指令”或“向量指令”)的源操作数或目的地操作数。在一个实施例中,SIMD指令指定了将要被执行在两个源向量操作数上的单个向量操作,以生成具有相同或不同大小的、具有相同或不同数量的数据元素的、具有相同或不同数据元素次序的目的地向量操作数(也被称为结果向量操作数)。
诸如由酷睿(CoreTM)处理器(具有包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)、ARM处理器(诸如,ARM处理器族,具有包括向量浮点(VFP)和/或NEON指令的指令集)、MIPS处理器(诸如,中国科学院计算机技术研究所(ICT)开发的龙芯处理器族)所使用的SIMD技术之类的SIMD技术在应用性能上带来了极大的提高(CoreTM和MMXTM是加利福尼亚州圣克拉拉市的英特尔公司的注册商标或商标)。
在一个实施例中,目的地寄存器/数据和源寄存器/数据是表示对应数据或操作的源和目的地的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所示出的那些名称或功能不同的名称或功能的其他存储区域所实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他存储区域,而“SRC1”和“SRC2”是第一和第二源存储寄存器或其他存储区域,等等。在其他实施例中,SRC和DEST存储区域中的两个或更多区域可对应于相同存储区域中的不同数据存储元素(例如,SIMD寄存器)。在一个实施例中,例如通过将对第一和第二源数据执行的操作的结果写回至两个源寄存器中作为目的地寄存器的那个寄存器,源寄存器中的一个也可以作为目的地寄存器。
图1A是根据本发明的一个实施例的示例性计算机系统的框图,该计算机系统被形成为具有包括执行单元以执行指令的处理器。根据本发明,诸如根据在此所描述的实施例,系统100包括诸如处理器102之类的组件,以采用包括逻辑的执行单元来执行算法以处理数据。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的III、4、XeontmXScaletm和/或StrongARMtm微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司买到的WINDOWStm操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的各实施例不限于硬件和软件的任何具体组合。
实施例不限于计算机系统。本发明的替换实施例可被用于其他设备,诸如手持式设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持PC。嵌入式应用可包括:微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机、或可执行根据至少一个实施例的一个或多个指令的任何其他系统。
图1A是计算机系统100的框图,计算机系统100被形成为具有处理器102,处理器102包括一个或多个执行单元108以执行算法,以执行根据本发明的一个实施例的至少一个指令。参照单处理器桌面或服务器系统来描述了一个实施例,但替代实施例可被包括在多处理器系统中。系统100是“中枢”系统体系结构的示例。计算机系统100包括处理器102以处理数据信号。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或任意其它处理器设备(诸如数字信号处理器)。处理器102耦合至处理器总线110,处理器总线110可在处理器102和系统100内的其他组件之间传输数据信号。系统100的诸个元素执行本领域所熟知的常规功能。
在一个实施例中,处理器102包括第一级(L1)内部高速缓存存储器104。取决于体系结构,处理器102可具有单个内部高速缓存或多级内部高速缓存。或者,在另一个实施例中,高速缓存存储器可位于处理器102的外部。其他实施例也可包括内部高速缓存和外部高速缓存的组合,这取决于特定实现和需求。寄存器文件106可在多个寄存器(包括整数寄存器、浮点寄存器、状态寄存器、指令指针寄存器)中存储不同类型的数据。
执行单元108(包括执行整数和浮点操作的逻辑)也位于处理器102中。处理器102还包括微代码(ucode)ROM,其存储用于特定宏指令的微代码。对于一个实施例,执行单元108包括处理打包指令集109的逻辑。通过将打包指令集109包括在通用处理器102的指令集内并包括相关的电路以执行这些指令,可使用通用处理器102中的打包数据来执行许多多媒体应用所使用的操作。因此,通过将处理器数据总线的全带宽用于对打包数据进行操作,许多多媒体应用可获得加速,并更为有效率地执行。这能减少在处理器数据总线上传输更小数据单元以在一个时间对一个数据元素执行一个或多个操作的需要。
执行单元108的替换实施例也可被用于微控制器、嵌入式处理器、图形设备、DSP以及其他类型的逻辑电路。系统100包括存储器120。存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120可存储可由处理器102执行的指令和/或数据,数据由数据信号表示。
系统逻辑芯片116耦合至处理器总线110和存储器120。在所示出的实施例中的系统逻辑芯片116是存储器控制器中枢(MCH)。处理器102可经由处理器总线110与MCH116通信。MCH116提供至存储器120的高带宽存储器路径118,用于指令和数据存储,以及用于存储图形命令、数据和文本。MCH116用于引导处理器102、存储器120以及系统100内的其他组件之间的数据信号,并在处理器总线110、存储器120和系统I/O122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供耦合至图形控制器112的图形端口。MCH116经由存储器接口118耦合至存储器120。图形卡112通过加速图形端口(AGP)互连114耦合至MCH116。
系统100使用外围设备中枢接口总线122以将MCH116耦合至I/O控制器中枢(ICH)130。ICH130经由本地I/O总线向一些I/O设备提供直接连接。本地I/O总线是高速I/O总线,用于将外围设备连接至存储器120、芯片组以及处理器102。一些示例是音频控制器、固件中枢(闪存BIOS)128、无线收发机126、数据存储器124、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线USB)以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
对于系统的另一个实施例,根据一个实施例的指令可被用于芯片上系统。芯片上系统的一个实施例包括处理器和存储器。用于这样一个系统的存储器是闪存存储器。闪存存储器可位于与处理器和其他系统组件相同的管芯上。此外,诸如存储器控制器或图形控制器之类的其他逻辑块也可位于芯片上系统上。
图1B示出数据处理系统140,数据处理系统140实现本发明的一个实施例的原理。本领域的技术人员将容易理解,在此描述的诸个实施例可用于替代处理系统,而不背离本发明的实施例的范围。
计算机系统140包括处理核心159,处理核心159能执行根据一个实施例的至少一个指令。对于一个实施例,处理核心159表示任何类型的体系结构的处理单元,包括但不限于:CISC、RISC或VLIW类型体系结构、处理核心159也可适于以一种或多种处理技术来制造,并且通过充分详细地表示在机器可读介质上可以便于其制造。
处理核心159包括执行单元142、一组寄存器文件145以及解码器144。处理核心159也包括对于理解本发明的实施例不是必需的额外电路(没有示出)。执行单元142用于执行处理核心159所接收到的指令。除了执行典型的处理器指令外,执行单元142也执行打包指令集143中的指令,用于对打包数据格式执行操作。打包指令集143包括用于执行本发明的诸个实施例的指令以及其他打包指令。执行单元142通过内部总线耦合至寄存器文件145。寄存器文件145表示处理核心159上的存储区域,用于存储包括数据的信息。如前所述的,可以理解,该存储区域被用于存储打包数据不是关键。执行单元142耦合至解码器144。解码器144用于将处理核心159所接收到的指令解码为控制信号和/或微代码进入点。响应于这些控制信号和/或微代码进入点,执行单元142执行合适的操作。在一个实施例中,解码器用于解释指令的操作码,操作码指示应当对该指令内所指示的对应数据执行何种操作。
处理核心159耦合至总线141,用于与多个其他系统设备进行通信,这些系统设备包括但不限于:例如,同步动态随机存取存储器(SDRAM)控制器146、静态随机存取存储器(SRAM)控制器147、猝发闪存接口148、个人计算机存储卡国际协会(PCMCIA)/致密闪存(CF)卡控制器149、液晶显示器(LCD)控制器150、直接存储器存取(DMA)控制器151、以及替代的总线主接口152。在一个实施例中,数据处理系统140也包括I/O桥154,用于经由I/O总线153与多个I/O设备进行通信。这样的I/O设备可包括但不限于:例如,通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART157、以及I/O扩展接口158。
数据处理系统140的一个实施例提供了移动通信、网络通信和/或无线通信,并提供了能够执行SIMD操作的处理核心159,SIMD操作包括文本串比较操作。处理核心159可编程有多种音频、视频、图像和通信算法,包括离散变换(诸如Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)、以及它们相应的逆变换)、压缩/解压缩技术(诸如色彩空间变换)、视频编码运动估计或视频解码运动补偿、以及调制/解调(MODEM)功能(诸如脉冲编码调制PCM)。
图1C示出了能够执行用于为安全飞地页面高速缓存提供高级分页能力的指令的数据处理系统的另一替换实施例。根据一个替代实施例,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存处理器167以及输入/输出系统168。输入/输出系统168可选地耦合至无线接口169。SIMD协处理器161能够执行包括根据一个实施例的指令的操作。处理核心170可适于以一种或多种处理技术来制造,并且通过充分详细地表示在机器可读介质上可以便于包括处理核心170的数据处理系统160的全部或一部分的制造。
对于一个实施例,SIMD协处理器161包括执行单元162以及一组寄存器文件164。主处理器166的一个实施例包括解码器165,用于识别指令集163的指令,指令集163包括根据一个实施例的用于由执行单元162所执行的指令。对于替换实施例,SIMD协处理器161也包括解码器165B的至少一部分以解码指令集163的指令。处理核心170也包括对于理解本发明的实施例不是必需的额外电路(没有示出)。
在操作中,主处理器166执行数据处理指令流,数据处理指令流控制通用类型的数据处理操作,包括与高速缓存存储器167以及输入/输入系统168的交互。SIMD协处理器指令嵌入数据处理指令流中。主处理器166的解码器165将这些SIMD协处理器指令识别为可由附连的SIMD协处理器161来执行的类型。因此,主处理器166在协处理器总线171上发出这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号),任何附连的SIMD协处理器从协处理器总线171接收到这些指令。在该情况中,SIMD协处理器161将接受并执行任何接收到的针对该SIMD协处理器的SIMD协处理器指令。
可经由无线接口169接收数据以通过SIMD协处理器指令进行处理。对于一个示例,语音通信可以数字信号的形式被接收到,其将被SIMD协处理器指令所处理,以重新生成表示该语音通信的数字音频采样。对于另一个示例,压缩音频和/或视频可以数字位流的形式被接收到,其将被SIMD协处理器指令所处理,以重新生成数字音频采样和/或运动视频帧。对于处理核心170的一个实施例,主处理器166和SIMD协处理器161被集成在单个处理核心170中,该单个处理核心170包括执行单元162、一组寄存器文件164、以及解码器165以识别指令集163的指令,指令集163包括根据一个实施例的指令。
图2是包括逻辑电路以执行根据本发明的一个实施例的指令的处理器200的微体系结构的框图。在一些实施例中,根据一个实施例的指令可被实现为对具有字节大小、字大小、双字大小、四字大小等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端201是处理器200的一部分,其获取将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。前端201可包括诸个单元。在一个实施例中,指令预取器226从存储器获取指令,并将指令馈送至指令解码器228,指令解码器228随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微操作数或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微体系结构用于执行根据一个实施例的操作。在一个实施例中,追踪高速缓存230接受经解码的微操作,并将它们组装为程序有序序列或微操作队列234中的踪迹,以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM232提供完成操作所需的微操作。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器228访问微代码ROM232以进行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器228处进行处理。在另一个实施例中,如果需要若干微操作来完成操作,则可将指令存储在微代码ROM232中。追踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM232读取微代码序列以完成根据一个实施例的一个或多个指令。在微代码ROM232完成对于指令的微操作序列化之后,机器的前端201恢复从追踪高速缓存230提取微操作。
无序执行引擎203是将指令准备好用于执行的单元。无序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器文件中的条目。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204、简单浮点调度器206)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器202、204、206基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器202可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。
寄存器文件208、210位于调度器202、204、206和执行块211中的执行单元212、214、216、218、220、222、224之间。也存在单独的寄存器文件208、210,分别用于整数和浮点操作。一个实施例的每个寄存器文件208、210也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器文件的结果旁路或转发给新的依赖微操作。整数寄存器文件208和浮点寄存器文件210也能够彼此通信数据。对于一个实施例,整数寄存器文件208被划分为两个单独的寄存器文件,一个寄存器文件用于低阶的32位数据,第二个寄存器文件用于高阶的32位数据。一个实施例的浮点寄存器文件210具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块211包括执行单元212、214、216、218、220、222、224,在执行单元212、214、216、218、220、222、224中实际执行指令。该区块包括寄存器文件208、210,寄存器文件208、210存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器200包括有多个执行单元:地址生成单元(AGU)212、AGU214、快速ALU216、快速ALU218、慢速ALU220、浮点ALU222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD、SSE以及其他操作。一个实施例的浮点ALU222包括64位/64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本发明的诸个实施例,涉及浮点值的指令可使用浮点硬件来处理。在一个实施例中,ALU操作进入高速ALU执行单元216、218。一个实施例的高速ALU216、218可执行高速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU220,因为慢速ALU220包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU212、214来执行。对于一个实施例,整数ALU216、218、220被描述为对64位数据操作数执行整数操作。在替代实施例中,可实现ALU216、218、220以支持包括16、32、128、256等各种数据位。类似地,可实现浮点单元222、224以支持具有各种位宽的多个操作数。对于一个实施例,浮点单元222、224可结合SIMD和多媒体指令对128位宽度打包数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,微操作调度器202、204、206就分派依赖操作。因为在处理器200中微操作被投机地调度和执行,所以处理器200也包括处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则可能存在带有临时错误数据离开调度器并运行在流水线中的依赖操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也被设计为捕捉为安全飞地页面高速缓存提供高级分页能力的指令。
术语“寄存器”指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,一实施例的寄存器不限于表示特定类型的电路。相反,一实施例的寄存器能够存储并提供数据,能够执行在此所述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器文件也包含八个多媒体SIMD寄存器,用于打包数据。对于以下讨论,寄存器应被理解为设计成保存打包数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器的64位宽MMXtm寄存器(在一些实例中也称为“mm寄存器)。”这些MMX寄存器(可用在整数和浮点格式中)可与伴随SIMD和SSE指令的打包数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样打包数据操作数。在一个实施例中,在存储打包数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器文件中,或被包括在不同的寄存器文件中。进一步的,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
在下述附图的示例中,描述了多个数据操作数。图3A示出了根据本发明一个实施例的多媒体寄存器中的各种打包数据类型表示。图3A示出用于128位宽操作数的打包字节310、打包字320以及打包双字(dword)330的数据类型。本示例的打包字节格式310是128位长,并且包含十六个打包字节数据元素。字节在此被定义为是8位数据。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置提高了处理器的存储效率。同样,因为访问了十六个数据元素,所以现在可对十六个数据元素并行地执行一个操作。
通常,数据元素是单独的数据片,与具有相同长度的其他数据元素一起存储在单个寄存器或存储器位置中。在涉及SSEx技术的打包数据序列中,存储在XMM寄存器中的数据元素的数目是128位除以单个数据元素的位长。类似地,在涉及MMX和SSE技术的打包数据序列中,存储在MMX寄存器中的数据元素的数目是64位除以单个数据元素的位长。虽然图3A中所示的数据类型是128位长,但本发明的诸个实施例也可操作64位宽、256位宽、512位宽或其他大小的操作数。本示例的打包字格式320是128位长,并且包含八个打包字数据元素。每个打包字包含十六位的信息。图3A的打包双字格式330是128位长,并且包含四个打包双字数据元素。每个打包双字数据元素包含三十二位信息。打包四字是128位长,并包含两个打包四字数据元素。
图3B示出了替代的寄存器内数据存储格式。每个打包数据可包括超过一个独立数据元素。示出了三个打包数据格式:打包半数据元素314、打包单数据元素342、以及打包双数据元素343。打包半数据元素341、打包单数据元素342、打包双数据元素343的一个实施例包含定点数据元素。对于替代实施例中,一个或多个打包半数据元素341、打包单数据元素342、打包双数据元素343可包含浮点数据元素。打包半数据元素341的一个替代实施例是一百二十八位长度,包含八个16位数据元素。打包单数据元素342的一个替代实施例是一百二十八位长度,且包含四个32位数据元素。打包双数据元素343的一个实施例是一百二十八位长度,且包含两个64位数据元素。可以理解的是,这样的打包数据格式进一步可被扩展至其他寄存器长度,例如,96位、160位、192位、224位、256位、512位或更长。
图3C示出了根据本发明的一个实施例的多媒体寄存器中的多种有符号和无符号打包数据类型表示。无符号打包字节表示344示出了SIMD寄存器中的无符号打包字节的存储。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,等等,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置可提高处理器的存储效率。同样,因为访问了十六个数据元素,所以可对十六个数据元素并行地执行一个操作。有符号打包字节表示345示出了有符号打包字节的存储。注意到,每个字节数据元素的第八位是符号指示符。无符号打包字表示346示出了SIMD寄存器中字7到字0如何被存储。有符号打包字表示347类似于无符号打包字寄存器内表示346。注意到,每个字数据元素的第十六位是符号指示符。无符号打包双字表示348示出了双字数据元素如何存储。有符号打包双字表示349类似于无符号打包双字寄存器内表示348。注意到,必要的符号位是每个双字数据元素的第三十二位。
图3D是与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网(www)intel.com/products/processor/manuals/上获得的“64和IA-32英特尔体系结构软件开发者手册卷2:指令集参考(64和IA-32IntelArchitecture Software Developer’s Manual Volume2:Instruction SetReference)”中描述的操作码格式类型相对应的具有32或更多位的操作编码(操作码)格式360以及寄存器/存储器操作数寻址模式的一个实施例的描述。在一个实施例中,可通过一个或更多个字段361和362来编码指令。可以标识每个指令高达两个操作数位置,包括高达两个源操作数标识符364和365。对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其他实施例中它们不相同。对于可选实施例,目的地操作数标识符366与源操作数标识符365相同,而在其他实施例中它们不相同。在一个实施例中,由源操作数标识符364和365所标识的源操作数中的一个被指令的结果所覆写,而在其他实施例中,标识符364对应于源寄存器元素,而标识符365对应于目的地寄存器元素。对于一个实施例,操作数标识符364和365可被用于标识32位或64位的源和目的地操作数。
图3E示出了具有四十个或更多位的另一个替代操作编码(操作码)格式370。操作码格式370对应于操作码格式360,并包括可选的前缀字节378。根据一个实施例的指令可通过字段378、371和372中的一个或多个来编码。通过源操作数标识符374和375以及通过前缀字节378,可标识每个指令中高达两个操作数位置。对于一个实施例,前缀字节378可被用于标识32位或64位的源和目的地操作数。对于一个实施例,目的地操作数标识符376与源操作数标识符374相同,而在其他实施例中它们不相同。对于替代实施例,目的地操作数标识符376与源操作数标识符375相同,而在其他实施例中它们不相同。在一个实施例中,指令对由操作数标识符374和375所标识的一个或多个操作数进行操作,并且由操作数标识符374和375所标识的一个或多个操作数被指令的结果所覆写,然而在其他实施例中,由标识符374和375所标识的操作数被写入另一个寄存器中的另一个数据元素中。操作码格式360和370允许由MOD字段363和373以及由可选的比例-变址-基址(scale-index-base)和位移(displacement)字节所部分指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、直接对寄存器寻址、寄存器至存储器寻址。
接下来转到图3F,在一些替换实施例中,64位(或128位、或256位、或512位或更多)单指令多数据(SIMD)算术操作可经由协处理器数据处理(CDP)指令来执行。操作编码(操作码)格式380示出了一个这样的CDP指令,其具有CDP操作码字段382和389。对于替代实施例,该类型CDP指令操作可由字段383、384、387和388中的一个或多个来编码。可以对每个指令标识高达三个操作数位置,包括高达两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可对8、16、32和64位值操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,使用条件字段381,可有条件地执行指令。对于一些实施例,源数据大小可通过字段383来编码。在一些实施例中,可对SIMD字段执行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,饱和类型可通过字段384来编码。
接下来转到图3G,其描绘了根据另一个实施例的用于为安全飞地页面高速缓存提供高级分页能力的另一个替换操作编码(操作码)格式397,该替换操作编码(操作码)格式397对应于可在万维网intel.com/products/processor/manuals/上从加利福尼亚州圣克拉拉市的Intel公司获得的“高级向量扩展编程参考”(“Advanced VectorExtensions Programming Reference”)中所描述的操作码格式类型。
原始x86指令集向1字节操作码提供多种地址字节(syllable)格式以及包含在附加字节中的直接操作数,其中可从第一个“操作码”字节中获知附加字节的存在。此外,特定字节值被预留给操作码作为修改符(称为前缀prefix,因为它们被放置在指令之前)。当256个操作码字节的原始配置(包括这些特殊前缀值)耗尽时,指定单个字节以跳出(escape)到新的256个操作码集合。因为添加了向量指令(诸如,SIMD),即便通过使用前缀进行了扩展以后,也需要产生更多的操作码,并且“两字节”操作码映射也已经不够。为此,将新指令加入附加的映射中,附加的映射使用两字节加上可选的前缀作为标识符。
除此外,为了便于在64位模式中实现额外的寄存器,在前缀和操作码(以及任何的用于确定操作码所需的跳出字节)之间使用额外的前缀(被称为“REX”)。在一个实施例中,REX具有4个“有效载荷”位,以指示在64位模式中使用附加的寄存器。在其他实施例中,可具有比4位更少或更多的位。至少一个指令集的通用格式(一般对应于格式360和/或格式370)被一般地示出如下:
[prefixes][rex]escape[escape2]opcode modrm(等等)
操作码格式397对应于操作码格式370,并包括可选的VEX前缀字节391(在一个实施例中,以十六进制的C4开始)以替换大部分的其他公共使用的传统指令前缀字节和跳出代码。例如,以下示出了使用两个字段来编码指令的实施例,其可在原始指令中存在第二跳出代码时、或在需要在REX字段中使用额外位(诸如,XB和W字段)时被使用。在以下所示的实施例中,传统跳出由新的跳出值所表示,传统前缀被完全压缩为“有效载荷(payload)”字节的一部分,传统前缀被重新申明并可用于未来的扩展,第二跳出代码被压缩在“映射(map)”字段中且未来的映射或特征空间可用,并且加入新的特征(诸如,增加的向量长度以及额外的源寄存器区分符)。
根据一个实施例的指令可通过字段391和392中的一个或多个来编码。通过字段391与源操作码标识符374和375以及可选的比例-变址-基址(scale-index-base,SIB)标识符393、可选位移标识符394以及可选直接字节395相结合,可以为每个指令标识高达四个操作数位置。对于一个实施例,VEX前缀字节391可被用于标识32位或64位的源和目的地操作数和/或128位或256位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式397所提供的功能可与操作码格式370形成冗余,而在其他实施例中它们不同。操作码格式370和397允许由MOD字段373以及由可选的SIB标识符393、可选的位移标识符394以及可选的直接标识符395所部分指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、直接对寄存器寻址、寄存器至存储器寻址。
接着来转到图3H,描绘了根据另一实施例的用于为安全飞地页面高速缓存提供高级分页能力的另一替换操作编码(操作码)格式398。操作码格式398对应于操作码格式370和397,并包括可选的EVEX前缀字节396(在一个实施例中,以十六进制的62开始)以替换大部分的其他公共使用的传统指令前缀字节和跳出代码,并提供附加的功能。根据一个实施例的指令可通过字段396和392中的一个或多个来编码。通过字段396与源操作码标识符374和375以及可选规模化指标(scale-index-base SIB)标识符393、可选位移标识符394以及可选直接字节395相结合,可以标识每个指令高达四个操作数位置和掩码。对于一个实施例,EVEX前缀字节396可被用于标识32位或64位的源和目的地操作数和/或128位、256位或512位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式398所提供的功能可与操作码格式370或397形成冗余,而在其他实施例中它们不同。操作码格式398允许由MOD字段373以及由可选的(SIB)标识符393、可选的位移标识符394以及可选的直接标识符395所部分指定的利用掩码的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、直接对寄存器寻址、寄存器至存储器寻址。至少一个指令集的通用格式(一般对应于格式360和/或格式370)被一般地示出如下:
evex1RXBmmmmm WvvvLpp evex4opcode modrm[sib][disp][imm]
对于一个实施例,根据EVEX格式398来编码的指令可具有额外的“有效载荷(payload)”位,这些额外的“有效载荷”位可用于通过附加的新特征来为安全飞地页面高速缓存提供高级分页能力,所述附加的新特征诸如例如用户可配置掩码寄存器、附加的操作数、从128位、256位或512位矢量寄存器或待选择的更多的寄存器的选择、等等。
例如,在VEX格式397可用于通过隐式掩码来为安全飞地页面高速缓存提供高级分页能力的场合,EVEX格式398可用于通过显式用户可配置掩码来为安全飞地页面高速缓存提供高级分页能力。此外,在VEX格式397可被用于在128位或256位矢量寄存器上为安全飞地页面高速缓存提供高级分页能力的场合,EVEX格式398可用于在128位、256位、512位或更大(或更小)的向量寄存器上为安全飞地页面高速缓存提供高级分页能力。
通过以下示例示出用于为安全飞地页面高速缓存提供高级分页能力的示例指令:
将理解,通过使用上述飞地指令来为安全飞地页面高速缓存提供高级分页能力,分页过程(例如在安全飞地页面高速缓存存储器内容被加密并写回、新页面从存储器被加载并解密、TLB条目被转储清除并替换等等)可被分拆成多个阶段,其中在一个或多个阶段期间仅短暂中断处理器核心或逻辑处理器。因此,可减少由于分页过程引起的性能降级,同时确保安全飞地数据的安全性并且无需不适当的复杂性和设计努力。
一些实施例包括多个硬件线程、逻辑处理器或处理核心、用于存储用于共享页面地址的安全数据的飞地页面高速缓存,该共享页面地址被分配给安全飞地并可由硬件线程、逻辑处理器或处理核心访问。EBLOCK指令的一个实施例将共享页面地址指定为操作数。一个或多个执行单元标记与共享页面地址的飞地页面高速缓存映射相对应的条目,以阻止为所述多个硬件线程、逻辑处理器或处理核心创建用于访问该共享页面的新的TLB转换。ETRACK指令的一个实施例将安全飞地指定为操作数,并且一个或多个执行单元记录当前正在访问与该安全飞地相对应的飞地页面高速缓存中的安全数据的硬件线程。例如,在一个实施例中,飞地可能具有两个或更多个计数器(在此称为“新时期(epoch)”计数器),以记录当前正在访问安全飞地的当前时期中的安全数据的硬件线程的数量,然后将该数量拷贝到最近的前一时期计数器中,并初始化不具有硬件线程的新时期作为新的当前时期。在替代实施例中,EBLOCK&TRACK指令将共享页面地址指定为操作数。一个或多个执行单元标记与用于共享页面地址的飞地页面高速缓存映射相对应的条目,以阻止为多个硬件线程、逻辑处理器或处理核心中的任一个创建用于访问该共享页面的新TLB转换,并记录当前正在访问与该页面存储器地址Addr1相对应的安全飞地的逻辑处理器或硬件线程,并在任一个退出安全飞地时将逻辑处理器或硬件线程的数量递减。在一个或多个替代实施例中,时期计数器总是在跟踪在安全飞地中执行或正在访问与安全飞地相关联的安全数据的硬件线程、逻辑处理器或处理核心。
然后OS可将处理器间中断(IPI)发送至当前正在访问与安全飞地相对应的飞地页面高速缓存中的安全数据的任何硬件线程、逻辑处理器或处理核心。当前正在访问与安全飞地相对应的安全数据的每个硬件线程、逻辑处理器或处理核心将已经使用EENTER或ERESUME指令进入了该安全飞地(该EENTER或ERESUME指令指定安全飞地),并且在那时,时期数(epochnumber)已经与该硬件线程、逻辑处理器或处理核心相关联。当硬件线程、逻辑处理器或处理核心确收IPI并退出安全飞地时,它们的TLB转换或多个TLB转换被转储清除。每当来自最近前一时期的硬件线程退出安全飞地时(例如通过EEXIT或AEX指令),将最近前一时期计数器中所记录的硬件线程的数量递减。
当所记录的硬件线程的数量达到零时,可以安全地使OS逐出页面或多个页面、对数据加密并将它们写回存储器或非易失性存储器。在一个实施例中,OS可使用EWRITEBACK或EWB指令,EWRITEBACK或EWB指令将共享页面地址指定为操作数,以完成逐出、加密安全数据并将该页面写回非易失性存储器。由于对安全数据的飞地保护可能不能信任OS,所以如果来自最近前一时期的所记录的硬件线程的数量未达到零,则EWRITEBACK或EWB指令的一个实施例可能失败。在其它替代实施例中,EWRITEBACK或EWB指令可等待直到所记录的硬件线程的数量达到零再执行,或引发异常。响应于将新的共享页面地址指定为操作数的ELOAD指令的一个实施例,OS可将空闲存储器分配给安全飞地的新页面,并解密用于新页面的安全数据。
将可理解,管理许可、物理存储器和/或改变映射仍通过操作系统(OS)管理,但当存储器内容受保护时(例如在飞地中),OS可能未被许可或未被信任来访问飞地私有存储器的实际受保护的内容。利用为安全飞地页面高速缓存提供高级分页能力的指令和处理逻辑,可在不能信任OS的情况下按照分级方式实现确保私有存储器内容的安全性和/或完整性并且管理有限量物理存储器的技术限制以支持更大的受保护的飞地私有存储器空间,无需精巧的硬件支持和/或设计努力。
图4A是示出根据本发明的至少一个实施例的有序流水线以及寄存器重命名级、无序发布/执行流水线的框图。图4B是示出根据本发明的至少一个实施例的要被包括在处理器中的有序体系结构核心以及寄存器重命名逻辑、无序发布/执行逻辑的框图。图4A中的实线框示出了有序流水线,虚线框示出了寄存器重命名、无序发布/执行流水线。类似地,图4B中的实线框示出了有序体系结构逻辑,而虚线框示出了寄存器重命名逻辑以及无序发布/执行逻辑。
在图4A中,处理器流水线400包括获取级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也被称为指派或发布)级412、寄存器读取/存储器读取级414、执行级416、写回/存储器写入级418、异常处理级422、提交级424。
在图4B中,箭头指示两个或更多个单元之间的耦合,且箭头的方向指示那些单元之间的数据流的方向。图4B示出处理器核心490,包括耦合至执行引擎单元450的前端单元430,前端单元430和执行引擎单元450两者均耦合至存储器单元470。
核心490可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心或混合或其他核心类型。作为另一个选项,核心490可以是专用核心,诸如网络或通信核心、压缩引擎、图形核心或类似物。
前端单元430包括耦合至指令高速缓存单元434的分支预测单元432,该指令高速缓存单元434耦合至指令转换后备缓冲器(TLB)436,该指令转换后备缓冲器(TLB)436耦合至指令获取单元438,该指令获取单元438耦合至解码单元440。解码单元或解码器可解码指令,并生成一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出,这些输出是从原始指令中解码出、或以其他方式反映原始指令、或是从原始指令中推导而出的。解码器可使用各种不同的机制来实现。合适机构的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元434还耦合到存储器单元470中的第二级(L2)高速缓存单元476。解码单元440耦合至执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括耦合到隐退单元454和一组一个或多个调度器单元456的重命名/分配器单元452。调度器单元456表示任意数量的不同调度器,包括预约站、中央指令窗口等。调度器单元456耦合到物理寄存器文件单元458。每个物理寄存器文件单元458表示一个或多个物理寄存器文件,其中不同的物理寄存器文件保存一个或多个不同的数据类型(诸如:标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点,等等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等等。物理寄存器文件单元458被隐退单元454所覆盖,以示出可实现寄存器重命名和无序执行的多种方式(诸如,使用重排序缓冲器和隐退寄存器文件、使用未来文件(future file)、历史缓冲器、隐退寄存器文件、使用寄存器映射和寄存器池等等)。通常,体系结构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。多种不同类型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及专用物理寄存器和动态分配物理寄存器的组合,等等。隐退单元454和物理寄存器文件单元458耦合至执行群集460。执行群集460包括一组一个或多个执行单元462以及一组一个或多个存储器访问单元464。执行单元462可执行多种操作(包括:移位、加法、减法、乘法)并可在多种数据类型(诸如、标量浮点、打包整数、打包浮点、向量整数、向量浮点)上执行。尽管一些实施例可包括专用于特定功能或功能组的多个执行单元,然而其他实施例可包括仅仅一个执行单元或全部执行所有功能的多个执行单元。调度器单元456、物理寄存器文件单元458、执行群集460被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度器单元、物理寄存器文件单元和/或执行群集的标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,以及在单独的存储器访问流水线的情况下特定实施例被实现为仅仅该流水线的执行群集具有存储器访问单元464)。可以理解,在使用诸个单独流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,并且其余的是有序的。
一组存储器访问单元464被耦合至存储器单元470,存储器单元470包括数据TLB单元472,数据TLB单元472耦合至高速缓存单元474,高速缓存单元474耦合至第二级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元470中的数据TLB单元472。L2高速缓存单元476耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
作为示例,示例性的寄存器重命名无序发布/执行核心体系结构可以如下所述地实现流水线400:1)指令获取器438执行获取和长度解码级402和404;2)解码单元440执行解码级406;3)重命名/分配器单元452执行分配级408和重命名级410;4)调度器单元456执行调度级412;5)物理寄存器文件单元458和存储器单元470执行寄存器读取/存储器读取级414;执行群集460实现执行级416;6)存储器单元470和物理寄存器文件单元458执行写回/存储器写入级418;7)多个单元可被牵涉在异常处理级422中;以及8)隐退单元454和物理寄存器文件单元458执行提交级424。
核心490可支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核心可支持多线程(执行操作或线程的两个或多个并行的集),并且可以多种方式实现,包括:时间切割多线程、并发多线程(其中单个物理核心为该物理核心同时多线程执行的每一个线程提供逻辑核心)、或以上的组合(诸如,时间切割获取和解码及之后的同时多线程,诸如超线程Hyperthreading技术)。
虽然在无序执行的背景下描述寄存器重命名,但可以理解,寄存器重命名可被用于有序体系结构中。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但替代的实施例也可具有用于指令和数据的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和外部高速缓存的组合,外部高速缓存位于核心和/或处理器之外。或者,所有的高速缓存都可位于核心和/或处理器之外。
图5是根据本发明的实施例的单核心处理器和多核心处理器500的框图,具有集成的存储器控制器和图形器件。图5的实线框示出了处理器500,处理器500具有单个核心502A、系统代理150、一组一个或多个总线控制器单元516,而可选附加的虚线框示出了替代的处理器500,其具有多个核心502A-N、位于系统代理单元510中的一组一个或多个集成存储器控制器单元514以及集成图形逻辑508。
存储器层级包括核心内的一个或多个高速缓存级、一组一个或多个共享高速缓存单元506、以及耦合至该组集成存储器控制器单元514的外部存储器(未示出)。该组共享高速缓存单元506可包括一个或多个中级高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上的组合。虽然在一个实施例中基于环形的互连单元512将集成图形逻辑508、该组共享高速缓存单元506和系统代理单元510进行互连,但替代的实施例也使用任何数量的公知技术来互连这些单元。
在一些实施例中,一个或多个核心502A-N能够实现多线程。系统代理510包括协调和操作核心502A-N的那些组件。系统代理单元510可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核心502A-N以及集成图形逻辑508的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核心502A-N可以是在体系结构和/或指令集上同构的或异构的。例如,核心502A-N中的一些可以是有序的,而另一些是无序的。如另一个示例,核心502A-N中的两个或多个核心能够执行相同的指令集,而其他核心能够执行该指令集中的一个子集或执行不同的指令集。
处理器可以是通用功能处理器,诸如酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔公司获得。或者,处理器可以来自另一个公司,诸如来自ARM控股公司、MIPS、等等。处理器可以是专用处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器、或类似物。处理器可以实现在一个或多个芯片上。处理器500可以是一个或多个基板的一部分,和/或使用多种工艺技术(诸如,BiCMOS、CMOS、或NMOS)中的任意技术被实现在一个或多个基板上。
图6-8是适于包括处理器500的示例性系统,图9是可包括一个或多个核心502的示例性芯片上系统(SoC)。本领域内已知的用于以下对象的其他系统设计和配置也可适用:膝上计算机、台式机、手持PC、个人数字助理、工程设计工作站、服务器、网络设备、网络集线器、交换器、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备。一般而言,本文中公开的各种能够合并处理器和/或其它执行逻辑的系统或电子设备一般是适用的。
现在参考图6,所示出的是根据本发明一个实施例的系统600的框图。系统600可包括耦合至图形存储器控制器中枢(GMCH)620的一个或多个处理器610、615。附加的处理器615的任选性在图6中通过虚线来表示。
每个处理器610、615可以是处理器500的某些版本。然而,应该理解,集成图形逻辑和集成存储器控制单元不太可能出现在处理器610、615中。图6示出GMCH620可耦合至存储器640,该存储器640可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH620可以是芯片组或芯片组的一部分。GMCH620可以与(多个)处理器610、615进行通信,并控制处理器610、615与存储器640之间的交互。GMCH620还可担当(多个)处理器610、615和系统600的其它元件之间的加速总线接口。对于至少一个实施例,GMCH620经由诸如前端总线(FSB)695之类的多点总线与(多个)处理器610、615进行通信。
此外,GMCH620耦合至显示器645(诸如平板显示器)。GMCH620可包括集成图形加速器。GMCH620还耦合至输入/输出(I/O)控制器中枢(ICH)650,该输入/输出(I/O)控制器中枢(ICH)650可用于将各种外围设备耦合至系统600。在图6的实施例中作为示例示出了外部图形设备660以及另一外围设备670,该外部图形设备660可以是耦合至ICH650的分立图形设备。
替代地,系统600中还可存在附加或不同的处理器。例如,附加(多个)处理器615可包括与处理器610相同的附加(多个)处理器、与处理器610异类或不对称的附加(多个)处理器、加速器(诸如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。按照包括体系结构、微体系结构、热、功耗特征等等优点的度量谱,(多个)物理资源610、615之间存在各种差别。这些差别会有效显示为处理器610、615之间的不对称性和异类性。对于至少一个实施例,各种处理器610、615可驻留在同一管芯封装中。
现在参照图7,所示出的是根据本发明实施例的第二系统700的框图。如图7所示,多处理器系统700是点对点互连系统,且包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个可以是处理器500的一些版本,如处理器610、615中的一个或多个一样。
虽然仅以两个处理器770、780来示出,但应理解本发明的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理器。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由使用点对点(P-P)接口电路778、788的P-P接口750来交换信息。如图7所示,IMC772和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、通信设备727以及存储单元728,诸如在一个实施例中可包括指令/代码和数据730的盘驱动器或者其他大容量存储设备。此外,音频I/O724可耦合至第二总线720。注意,其它体系结构是可能的。例如,代替图7的点对点体系结构,系统可实现多点总线或者其他此类体系结构。
现在参照图8,所示出的是根据本发明实施例的第三系统800的框图。图7和8中的类似元件使用类似附图标记,且在图8中省略了图7的某些方面以避免混淆图8的其它方面。
图8示出处理器870、880可分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL872、882可包括诸如以上联系图5和7所描述的集成存储器控制器单元。此外,CL872、882还可包括I/O控制逻辑。图8示出不仅存储器832、834耦合至CL872、882,I/O设备814也耦合至控制逻辑872、882。传统I/O设备815耦合至芯片组890。
现在参照图9,所示出的是根据本发明一个实施例的SoC900的框图。图5中的相似组件具有相同的标号。同样,虚线框是在更为先进的SoC上的可选特征。在图9中,互连单元902耦合至:应用处理器910,包括一组一个或多个核心502A-N以及共享高速缓存单元506;系统代理单元510;总线控制器单元516;集成存储器控制器单元514;一组一个或多个媒体处理器920,可包括集成图形逻辑508、用于提供静态和/或视频照相功能的图像处理器924、提供硬件音频加速的音频处理器926、提供视频编码/解码加速的视频处理器928、静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及显示单元940,用于耦合至一个或多个外部显示器。
图10示出处理器,包括中央处理单元(CPU)和图形处理单元(GPU),该处理器可执行根据一个实施例的至少一个指令。在一个实施例中,执行根据至少一个实施例的操作的指令可由CPU来执行。在另一个实施例中,指令可以由GPU来执行。在还有一个实施例中,指令可以由GPU和CPU所执行的操作的组合来执行。例如,在一个实施例中,根据一个实施例的指令可被接收,并被解码用于在GPU上执行。然而,经解码的指令中的一个或多个操作可由CPU来执行,并且结果被返回给GPU用于指令的最终隐退。相反,在一些实施例中,CPU可作为主处理器,而GPU作为协处理器。
在一些实施例中,受益于高度并行吞吐量的指令可由GPU来执行,而受益于处理器(这些处理器受益于深度流水线体系结构)的性能的指令可由CPU来执行。例如,图形、科学应用、金融应用以及其他并行工作负荷可受益于GPU的性能并相应地执行,而更多的序列化应用,诸如操作系统内核或应用代码更适于CPU。
在图10中,处理器1000包括:CPU1005、GPU1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、高清晰度多媒体接口(HDMI)控制器1045、MIPI控制器1050、闪存存储器控制器1055、双数据率(DDR)控制器1060、安全引擎1065、I2S/I2C(集成跨芯片声音/跨集成电路)接口1070。其他逻辑和电路可被包括在图10的处理器中,包括更多的CPU或GPU以及其他外围设备接口控制器。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性数据来实现,该数据表示处理器中的各种逻辑,其在被机器读取时使得该机器生成执行本文描述的技术的逻辑。此类表示即所谓“IP核”可以存储在有形的机器可读介质(“磁带”)上并提供给各种顾客或制造商,以加载到实际制作该逻辑或处理器的编制机器中去。例如,IP核(诸如由ARM控股公司所开发的CortexTM处理器族以及由中国科学院计算机技术研究所(ICT)所开发的龙芯IP核)可被授权或销售给多个客户或受许可方,诸如德州仪器、高通、苹果、或三星,并被实现在由这些客户或受许可方所制造的处理器中。
图11示出根据一个实施例的IP核开发的框图。存储器1130包括仿真软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(诸如,硬盘)、有线连接(诸如,互联网)1150或无线连接1160而被提供给存储器1130。由仿真工具和模型所生成的IP核信息可随后被发送给制造工厂,在制造工厂可由第三方来进行生产以执行根据至少一个实施例的至少一个指令。
在一些实施例中,一个或多个指令可以对应于第一类型或体系结构(例如x86),并且在不同类型或体系结构的处理器(例如ARM)上被转换或仿真。根据一个实施例,指令可以在任何处理器或处理器类型上执行,包括ARM、x86、MIPS、GPU或其它处理器类型或体系结构。
图12示出了根据一个实施例的第一类型的指令如何被不同类型的处理器所仿真。在图12中,程序1205包含一些指令,这些指令可执行与根据一个实施例的指令相同或基本相同的功能。然而,程序1205的指令可以是与处理器1215所不同或不兼容的类型和/或格式,这意味着程序1205中的类型的指令不能天然地被处理器1215所执行。然而,借助于仿真逻辑1210,程序1205的指令可被转换成能够由处理器1215所天然执行的指令。在一个实施例中,仿真逻辑被具体化在硬件中。在另一实施例中,仿真逻辑具体化在有形的机器可读介质中,该机器可读介质包含将程序1205中的该类指令翻译成直接能由处理器1215执行的类型的软件。在其它实施例中,仿真逻辑是固定功能或可编程硬件和存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,但在其它实施例中,仿真逻辑在处理器之外并由第三方提供。在一个实施例中,处理器能够通过执行包含在处理器中或者与之相关联的微代码或固件,加载具体化在包含软件的有形的机器可读介质中的仿真逻辑。
图13是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但是作为替代,指令转换器可以以软件、固件、硬件或其各种组合来实现。图13以高级语言1302示出了程序,该程序可使用x86编译器1304来编译以生成x86二进制代码1306,该二进制代码可天然地由具有至少一个x86指令集核心的处理器1316来执行。具有至少一个x86指令集核心1316的处理器表示任何处理器,该处理器能够通过兼容地执行或以其它方式处理(1)英特尔x86指令集核的指令集的大部分或(2)旨在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的目标代码版本来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能,以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1304表示可操作用于生成x86二进制代码1306(例如目标代码)的编译器,该x86二进制代码1306能够通过附加的链接处理或无需附加的链接处理而在具有至少一个x86指令集核的处理器1316上执行。类似地,图13以高级语言1302示出了程序,该程序可使用替换指令集编译器1308来编译以生成替换指令集二进制代码1310,替换指令集二进制代码1310可由不具有至少一个x86指令集核心的处理器1314(诸如,具有可执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集的处理器和/或执行加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集的处理器)来天然地执行。该指令转换器1312被用于将x86二进制代码1306转换为可由不具有x86指令集核心的处理器1314所天然地执行的代码。该经变换的代码不太可能与替换指令集二进制代码1310一样,因为难以制造能完成这样的指令转换器;然而,经变换的代码将完成通用操作,并由替换指令集的指令所构成。因此,指令转换器1312表示软件、固件、硬件或它们的组合,通过仿真、模拟或任何其他处理允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1306。
图14示出使用指令以向安全飞地页面高速缓存EPC1460提供高级分页能力的处理系统1401的一个实施例。系统1401包括系统存储器1490和处理器1402。处理器1402包括第一硬件线程或逻辑处理器1420和第二硬件线程或逻辑处理器1430。将理解,虽然出于简化的目的将处理器1402示为包括两个逻辑处理器,每个逻辑处理器表示单个硬件线程,但本发明不限于此。例如,诸如处理器1402之类的处理器或本文中示出的其它处理器具有若干逻辑处理器核心是常见的,这些逻辑处理器核心可能或可能不共享一些物理资源(例如EPC1460)和/或电路系统(例如SE单元1470),每个逻辑处理器或处理器核心具有能够同时或并发执行软件线程的多个硬件线程。
处理器1402还包括安全飞地(SE)单元1470和飞地页面高速缓存EPC1460。对于一些实施例,EPC1460可以是更大的高速缓存单元(例如一个或多个一级高速缓存1440和1450或二级高速缓存(未示出))的一部分。对于其它实施例,EPC1460可以是由多个硬件线程、逻辑处理器或处理核心共享的单独结构或分布式结构(例如高速缓存1440和高速缓存1450),以存储用于共享页面1442、1444和1456的地址的安全数据,共享页面1442、1444和1456被分配给安全飞地且可由硬件线程、逻辑处理器或处理核心访问。
类似地,SE单元1470可包括:由多个硬件线程、逻辑处理器或处理核心所共享的单独的结构或分布式结构(例如SE单元1427和1437),并具有加密单元、完整性保护单元、访问控制单元、范围寄存器、飞地页面高速缓存映射以及两个或更多个时期计数器存储位置,其中两个或更多个时期计数器存储位置用于存储至少一个前一时期和当前时期。SE单元1470还支持用于为安全飞地页面高速缓存提供高级分页能力的飞地指令。
在该示例中,逻辑处理器1420具有解码级1422、读取级1424、一个或多个执行单元(例如执行单元1426)以及写入级1428。逻辑处理器1420还具有TLB1425,其中可安装转换以访问EPC1460。逻辑处理器1430具有解码级1432、读取级1434、一个或多个执行单元(例如执行单元1436)以及写入级1438。逻辑处理器1430还具有TLB1435,其中可安装转换以访问EPC1460。逻辑处理器1420和1430的实施例还可包括其它流水线级(例如如流水线400中所示的),用于执行飞地指令以为安全飞地页面高速缓存EPC1460提供高级分页能力。
将理解,通过使用飞地指令来为安全飞地页面高速缓存提供高级分页能力,分页过程(例如,在安全飞地页面高速缓存存储器内容被加密并写回、新页面从存储器被加载并解密、TLB条目被转储清除并替换等等)可被分拆成多个阶段,其中在一个或多个阶段期间仅短暂中断处理器核心或逻辑处理器。因此,可减少由于分页过程引起的性能降级,同时确保安全飞地数据的安全性并且无需不适当的复杂性和设计努力。
在一个实施例中,EBLOCK指令将共享页面(例如页面1442)的地址指定作为操作数。一个或多个执行单元(例如执行单元1426)标记与共享页面地址的飞地页面高速缓存映射相对应的条目,以阻止为所述多个硬件线程、逻辑处理器或处理核心创建用于访问该共享页面的新的TLB转换(例如在TLB1435中)。在一个实施例中,ETRACK指令将安全飞地指定为操作数,并且一个或多个执行单元(例如执行单元1426)记录当前正在访问与该安全飞地相对应的飞地页面高速缓存(EPC1460)中的安全数据的硬件线程。例如,在一个实施例中,飞地可能具有两个或更多个时期计数器,以记录当前正在访问安全飞地的当前时期中的安全数据的硬件线程的数量,然后将该数量拷贝到最近的前一时期计数器中(例如响应于ETRACK指令),并初始化不具有硬件线程的新时期作为新的当前时期。
然后OS可将IPI发送至当前正在访问与安全飞地相对应的飞地页面高速缓存中的安全数据的任何硬件线程、逻辑处理器或处理核心。在一个实施例中,当前正在访问与安全飞地相对应的安全数据的每个硬件线程、逻辑处理器或处理核心(例如逻辑处理器1420和1430)已经使用EENTER或ERESUME指令进入了该安全飞地(该EENTER或ERESUME指令指定安全飞地),并且在那时,时期数(epoch number)已经与该硬件线程、逻辑处理器或处理核心相关联。当硬件线程、逻辑处理器或处理核心确收IPI并退出安全飞地时,它们的TLB转换或多个TLB转换被转储清除(例如从TLB1425和/或TLB1435)。每当来自最近前一时期的硬件线程退出安全飞地时(例如通过EEXIT或AEX指令),将最近前一时期计数器中所记录的硬件线程的数量递减。
当所记录的硬件线程的数量达到零时,可以安全地使OS逐出页面或多个页面(例如页面1442)、对数据加密并将它们写回存储器(例如作为加密页面1495)或非易失性存储器。在一个实施例中,OS可使用EWRITEBACK或EWB指令,EWRITEBACK或EWB指令将共享页面(例如页面1442)地址指定为操作数,以完成逐出、加密安全数据并将该页面写回存储器或非易失性存储器。由于对安全数据的飞地保护可能不能信任OS,所以如果来自最近前一时期的所记录的硬件线程的数量未达到零,则EWRITEBACK或EWB指令的一个实施例可能失败。在其它替代实施例中,EWRITEBACK或EWB指令可等待直到所记录的硬件线程的数量达到零再执行,或引发异常。在一个实施例中,OS然后可使用ELOAD指令来从存储器或非易失性存储器读取新页面(例如页面1410)、解密数据并将经解密的页面存储在EPC1460中。因此,分页过程(例如其中,安全飞地页面高速缓存存储器内容被加密并被写回、新页面从存储器被读取并解密、TLB条目被转储清除并替换等)可被分拆成多个阶段,其中处理器核心或逻辑处理器(例如逻辑处理器1420和1430)在一个或多个阶段期间仅短暂中断(例如通过IPI)。
图15示出使用指令向安全飞地页面高速缓存提供高级分页能力的处理器1501中的装置的实施例。该装置包括安全飞地(SE)单元1502和飞地页面高速缓存EPC1520。对于一些实施例,EPC1520可以是更大的高速缓存单元(例如一级高速缓存L11540或二级高速缓存(未示出))的一部分。对于其它实施例,EPC1520可以是由多个硬件线程、逻辑处理器或处理核心所共享的单独结构或分布式结构,以存储用于共享页面1542的地址的安全数据,共享页面1542被分配给安全飞地且可由硬件线程、逻辑处理器或处理核心访问。SE单元1502可包括加密单元1510、完整性保护单元1512、访问控制单元1514、范围寄存器1516、飞地页面高速缓存映射EPC1518以及两个或更多个时期计数器存储位置:前一时期PE1517以及当前时期CE1519。SE单元1502还可包括飞地指令1503,包括:EBLOCK指令1531、ETRACK指令1532、EWB指令1533、ELOAD指令1534、EEXIT指令1535、EENTER指令1536以及未示出的其它飞地指令(例如AEX指令、ERESUME指令等等)。
处理器核心1501还包括TLB1525,其中可安装转换以访问EPC1520。处理器核心1501还包括解码级1522、读取级1524、一个或多个执行单元(例如执行单元1526)以及写入级1528。处理器核心1501的实施例还可包括其它流水线级(例如如流水线400中所示),用于执行飞地指令1503以为安全飞地页面高速缓存EPC1520提供高级分页能力。
在一个实施例中,EBLOCK指令1531指定共享页面1542地址作为操作数。一个或多个执行单元(例如执行单元1526)标记与共享页面1542地址的EPCM1518中的飞地页面高速缓存映射相对应的条目,以阻止为所述多个硬件线程、逻辑处理器或处理核心创建用于访问该共享页面的新的TLB转换(例如在TLB1525中或在任何其它TLB中)。在一个实施例中,ETRACK指令1532将安全飞地指定为操作数,并且一个或多个执行单元(例如执行单元1526或访问控制单元1514)记录当前正在访问与该安全飞地相对应的飞地页面高速缓存EPC1520中的安全数据的硬件线程。例如,在一个实施例中,飞地可能具有两个或更多个时期计数器(例如在PE1517中和在CE1519中),以记录当前正在访问安全飞地的当前时期(例如在CE1519)中的安全数据的硬件线程的数量,然后将该数量拷贝到最近的前一时期计数器中(例如在PE1517中),并初始化不具有硬件线程的新时期作为新的当前时期(例如在CE1519中)。
然后OS可将IPI发送至当前正在访问与安全飞地相对应的飞地页面高速缓存EPC1520中的安全数据的任何硬件线程、逻辑处理器或处理核心。当前正在访问与安全飞地相对应的安全数据的每个硬件线程、逻辑处理器或处理核心已经使用EENTER(或ERESUME)指令1536进入了该安全飞地(该EENTER或ERESUME指令指定安全飞地),并且在那时,时期数(epoch number)已经与该硬件线程、逻辑处理器或处理核心相关联。当硬件线程、逻辑处理器或处理核心确收IPI并退出安全飞地时,它们的TLB转换或多个TLB转换被转储清除(例如从TLB1525)。每当来自最近前一时期(例如对应于PE1517)的硬件线程通过EEXIT(或AEX)指令1535退出安全飞地时,将最近前一时期计数器中(例如PE1517)所记录的硬件线程的数量递减。
当所记录的硬件线程的数量(例如PE1517中)达到零时,可以安全地使OS逐出页面或多个页面(例如共享页面1542)、对数据加密并将它们写回存储器或非易失性存储器。在一个实施例中,OS可使用将共享页面地址指定为操作数的EWB(或EWRITEBACK)指令1533,以完成逐出、加密安全数据并将该页面1542写回非易失性存储器。由于对安全数据的飞地保护可能不能信任OS,所以如果来自最近前一时期(例如PE1517中)的所记录的硬件线程的数量未达到零,则EWB指令1533的一个实施例可能失败。在其它替代实施例中,EWB指令1533可等待直到所记录的硬件线程的数量(例如PE1517中)达到零再执行,或EWB指令1533可引发异常。
将可理解,管理许可、物理存储器和/或改变映射仍通过操作系统(OS)管理,但当存储器内容受保护时(例如在飞地中),OS可能未被许可或未被信任来访问飞地私有存储器的实际受保护的内容。利用为安全飞地页面高速缓存提供高级分页能力的指令和处理逻辑,可在不能信任OS的情况下按照分级方式实现确保私有存储器内容的安全性和/或完整性并且管理有限量物理存储器(例如EPC1520或EPC1460)的技术限制以支持更大的受保护的飞地私有存储器空间,无需精巧的硬件支持和/或设计努力。
图16示出用于为安全飞地分页高速缓存提供高级分页能力的过程1601的一个实施例的流程图。过程1601和本文中公开的其他过程通过处理块来执行,处理块可包括专用硬件或可由通用机器或专用机器或其某种组合执行的软件或固件操作码。
在过程1601的处理块1610,创建安全飞地以保护隐私数据和/或指令。在处理块1620,将EPC页面分配给安全飞地。在处理块1625,判断是否需要分页。如果不需要,则在处理块1620将EPC页面继续分配给安全飞地,其中可将安全数据存储在用于共享页面地址的EPC行中,该共享页面地址被分配给安全飞地且可由正在该安全飞地中执行的多个硬件线程访问。否则,在处理块1630,执行一个或多个EBLOCK指令,在一个实施例中,每个EBLOCK指令将共享页面地址指定为操作数。在处理块1640,执行ETRACK指令,在一个实施例中,ETRACK指令指定安全飞地。在处理块1650,将IPI发送至正在安全飞地中执行的每个逻辑处理器,以使它们退出该安全飞地。在处理块1660中验证IPI的确收,并且在处理块1665中判断是否所有IPI都已被确收。如果不是,则在处理块1660中继续处理,但如果所有IPI都已被确收,则处理继续至处理块1670。在处理块1670,执行一个或多个EWB指令,在一个实施例中,每个EWB指令将被阻止的共享页面地址中的一个指定为操作数。在处理块1680,执行一个或多个ELOAD指令,在一个实施例中,每个ELOAD指令将新的共享页面地址指定为操作数。处理随后在处理块1625中开始重新迭代。
图17示出用于为安全飞地分页高速缓存提供高级分页能力的过程1701的替代实施例的流程图。在过程1701的处理块1710,针对共享页面(例如响应于将共享页面地址指定为操作数的EBLOCK指令)标记条目,以阻止在任何TLB中创建新转换。在处理块1720,记录当前正在访问安全飞地中的安全数据的硬件线程、逻辑处理器或处理核心(例如响应于将安全飞地指定为操作数的ETRACK指令)。在处理块1730,当任何线程退出安全飞地时(例如使用EEXIT或AEX指令),将所记录线程的数量递减。在处理块1735,判断所记录线程的数量现在是否为零。如果不是,则在处理块1730中继续处理,但如果所记录线程的数量现在为零,则处理继续至处理块1740。在处理块1740,逐出用于该共享页面的安全数据,并且在处理块1750,加密被逐出的共享页面的安全数据(例如响应于将该共享页面地址指定为操作数的EWRITEBACK或EWB指令)。然后在处理块1760,将被逐出的共享页面的加密安全数据写回至存储器或写回至非易失性存储器。在处理块1770,将空闲存储器分配给安全飞地的新页面。在处理块1780,解密新页面的安全数据(例如响应于将新的共享页面地址指定为操作数的ELOAD指令)。
图18A示出用于为安全飞地分页高速缓存提供高级分页能力的过程1801的另一实施例的流程图。在过程1801的处理块1810,执行多个硬件线程(例如在多线程处理器中)。在处理块1820,将安全数据存储在用于共享页面的高速缓存中,该共享页面被分配给安全飞地且可由多个线程访问。在过程1802的处理块1830,解码一个或多个EBLOCK指令,在一个实施例中,每个EBLOCK指令将共享页面地址指定为操作数。在处理块1840,针对共享页面标记条目,以阻止在任何TLB中创建新转换。在处理块1850,记录当前正在访问安全飞地中的安全数据的硬件线程、逻辑处理器或处理核心。在过程1803的处理块1860,解码一个或多个ETRACK指令,在一个实施例中,每个ETRACK指令将安全飞地指定为操作数。在处理块1870,当任何线程退出安全飞地时(例如使用EEXIT或AEX指令),将所记录线程的数量递减。在处理块1880,判断所记录线程的数量现在是否为零。如果不是,则在处理块1870中继续处理,但如果所记录线程的数量现在为零,则处理继续至处理块1890。在处理块1890,将共享页面的安全数据从页面移出至存储器或至非易失性存储器(例如响应于将共享页面地址指定为操作数的EWRITEBACK或EWB指令)。
通过使用飞地指令来为安全飞地页面高速缓存提供高级分页能力,分页过程(例如在安全飞地页面高速缓存存储器内容被加密并写回、新页面从存储器被加载并解密、TLB条目被转储清除并替换等等)可被分拆成多个阶段,其中在一个或多个阶段期间仅短暂中断处理器核心或逻辑处理器。因此,可减少由于分页过程引起的性能降级,同时确保安全飞地数据的安全性并且无需不适当的复杂性和设计努力。
图18B示出用于为安全飞地分页高速缓存提供高级分页能力的过程1804的另一实施例的流程图。在过程1801的处理块1804,执行多个硬件线程(例如在多线程处理器中)。在处理块1820,将安全数据存储在用于共享页面的高速缓存中,该共享页面被分配给安全飞地且可由多个线程访问。在过程1805的处理块1830,解码一个或多个EBLOCK指令,在一个实施例中,每个EBLOCK指令将共享页面地址指定为操作数。在处理块1840,针对共享页面标记条目,以阻止在任何TLB中创建新转换。在过程1806的处理块1860,解码一个或多个ETRACK指令,在一个实施例中,每个ETRACK指令将安全飞地指定为操作数。在处理块1850,记录当前正在访问安全飞地中的安全数据的硬件线程、逻辑处理器或处理核心。在处理块1870,当任何线程退出安全飞地时(例如使用EEXIT或AEX指令),将所记录线程的数量递减。在处理块1880,判断所记录线程的数量现在是否为零。如果不是,则在处理块1870中继续处理,但如果所记录线程的数量现在为零,则处理继续至处理块1890。在处理块1890,将共享页面的安全数据从页面移出至存储器或至非易失性存储器(例如响应于将共享页面地址指定为操作数的EWRITEBACK或EWB指令)。
因此,管理许可、物理存储器和/或改变映射仍可由OS管理,但该OS未被允许或未被信任来访问飞地私有存储器的实际受保护内容。利用为安全飞地页面高速缓存提供高级分页能力的指令和处理逻辑,可按照分级方式实现确保私有存储器内容的安全性和/或完整性并且管理有限量物理存储器的技术限制以支持更大的受保护的飞地私有存储器空间,无需精巧的硬件支持和/或设计努力。将理解,在过程1804的一些替代实施例中以及在本文所公开的其它过程中,在可能时,被示为按照特定顺序的处理块也可按照另一顺序或并发地或彼此并行地执行。
本文公开的机制的实施例可实现在硬件、软件、固件或这些实现手段的组合中。本发明的实施例可被实现为在包括至少一个处理器、存储器系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备的可编程系统上执行的计算机程序。
可将程序代码应用至输入指令以执行本文描述的功能并产生输出信息。输出信息可以已知形式被施加至一个或多个输出设备。为本申请的目的,处理系统包括任何具有下列特征的系统:其具有例如数字信号处理器(DSP)的处理器、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可按照高级过程或面向对象的高级编程语言来实现,以与处理系统通信。程序代码在需要时还可按照汇编或机器语言来实现。事实上,本文描述的机制不仅限于任何具体的编程语言的范围。在任一情形下,语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,其在被机器读取时使得该机器生成执行本文描述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的非易失性的粒子有形排列,包括存储介质,诸如:硬盘;包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何其它类型的盘;诸如只读存储器(ROM)之类的半导体器件;诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);闪存;电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的实施例也包括非易失性有形机器可读介质,该介质包含诸如硬件描述语言(HDL)之类的设计数据,该设计数据限定本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况中,指令转换器可被用于将指令从源指令集转换为目标指令集。例如,指令转换器可将指令翻译(诸如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变体、仿真或以其他方式转换为有待核心处理的一个或多个其他指令。指令转换器可用软件、硬件、固件或其组合来实现。指令转换器可以位于处理器上,位于处理器外,或部分位于处理器上且部分位于处理器外。
因此,揭示了用于执行根据至少一个实施例的一个或多个指令的技术。虽然已经描述了特定示例实施例,并示出在附图中,可以理解到,这些实施例仅仅是示例性的且不限制本发明的翻译,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到多种其他修改方式。在本技术领域中,因为发展很快且未来的进步不易预见,故本公开的诸个实施例可通过受益于技术进步而容易地获得配置和细节上的改动,而不背离本公开的原理和所附权利要求书的范围。

Claims (38)

1.一种处理器,包括:
第一硬件线程和第二硬件线程;
飞地页面高速缓存,用于将共享页面地址的安全数据存储在高速缓存行中,所述共享页面地址被分配给所述第一和第二硬件线程可访问的相应安全飞地;
解码级,用于解码第一指令以供所述处理器执行,所述第一指令将所述共享页面地址指定为操作数;以及
一个或多个执行单元,用于响应于经解码的第一指令:
标记与所述共享页面地址的飞地页面高速缓存映射相对应的条目,以阻止为所述第一或第二硬件线程中的任一个创建用于访问与所述共享页面地址相对应的安全数据的新转换。
2.如权利要求1所述的处理器,其特征在于,所述第一指令是EBLOCK指令,所述EBLOCK指令指定所述共享页面地址以防止在任何转换后备缓冲器(TLB)中创建与所述共享页面地址相对应的新转换。
3.如权利要求1所述的处理器,其特征在于,包括:
所述解码级,用于解码第二指令以供所述处理器执行,所述第二指令将所述安全飞地指定为操作数;以及
一个或多个执行单元,用于响应于经解码的第二指令:
记录当前正在访问与所述安全飞地相对应的飞地页面高速缓存中的安全数据的硬件线程。
4.如权利要求3所述的处理器,其特征在于,所述第二指令是ETRACK指令,所述ETRACK指令指定所述安全飞地以记录当前正在所述安全飞地中执行的硬件线程的数量。
5.如权利要求4所述的处理器,其特征在于,所述一个或多个执行单元响应于经解码的第二指令:
当所述硬件线程中的任一个退出所述安全飞地时,将所记录的当前正在所述安全飞地中执行的硬件线程的数量递减。
6.如权利要求4所述的处理器,其特征在于,所述一个或多个执行单元响应于经解码的第一指令:
当所述硬件线程中的任一个退出所述安全飞地时,将所记录的当前正在所述安全飞地中执行的硬件线程的数量递减。
7.一种处理器,包括:
第一硬件线程和第二硬件线程;
飞地页面高速缓存,用于将共享页面地址的安全数据存储在高速缓存行中,所述共享页面地址被分配给所述第一和第二硬件线程可访问的相应安全飞地;
解码级,用于解码第一指令以供所述处理器执行,所述第一指令将所述安全飞地指定为操作数;以及
一个或多个执行单元,用于响应于经解码的第一指令:
记录当前正在访问与所述安全飞地相对应的飞地页面高速缓存中的安全数据的硬件线程。
8.如权利要求7所述的处理器,其特征在于,所述第一指令是ETRACK指令,所述ETRACK指令指定所述安全飞地以记录当前正在所述安全飞地中执行的硬件线程的数量。
9.如权利要求8所述的处理器,其特征在于,所述一个或多个执行单元响应于经解码的第一指令:
当所述硬件线程中的任一个退出所述安全飞地时,将所记录的当前正在所述安全飞地中执行的硬件线程的数量递减。
10.如权利要求7所述的处理器,其特征在于,包括:
所述解码级,用于解码第二指令以供所述处理器执行,所述第二指令将所述共享页面地址指定为操作数;以及
一个或多个执行单元,用于响应于经解码的第二指令:
标记与所述共享页面地址的飞地页面高速缓存映射相对应的条目,以阻止为所述第一或第二硬件线程中的任一个创建用于访问与所述共享页面地址相对应的安全数据的新转换。
11.如权利要求10所述的处理器,其特征在于,所述第二指令是EBLOCK指令,所述EBLOCK指令指定所述共享页面地址以防止在任何TLB中创建与所述共享页面地址相对应的新转换。
12.如权利要求11所述的处理器,其特征在于,所述一个或多个执行单元响应于经解码的第二指令:
当所述硬件线程中的任一个退出所述安全飞地时,将所记录的当前正在所述安全飞地中执行的硬件线程的数量递减。
13.如权利要求7所述的处理器,其特征在于,包括:
所述解码级,用于解码第二指令以供所述处理器执行,所述第二指令将所述共享页面地址指定为操作数;以及
一个或多个执行单元,用于响应于经解码的第二指令:
如果所记录的当前正在所述安全飞地中执行的硬件线程的数量达到零,则逐出并写回与所述共享页面地址相对应的飞地页面高速缓存中的安全数据。
14.如权利要求13所述的处理器,其特征在于,所述第二指令是飞地写回(EWB)指令,所述飞地写回(EWB)指令指定所述共享页面地址,以从飞地页面高速缓存中逐出并写回所述共享页面。
15.如权利要求14所述的处理器,其特征在于,如果所记录的当前正在所述安全飞地中执行的硬件线程的数量尚未达到零,则所述第二指令失败。
16.如权利要求14所述的处理器,其特征在于,所述第二指令等待直到所记录的当前正在所述安全飞地中执行的硬件线程的数量达到零才执行。
17.一种方法,包括:
在多线程处理器中执行第一硬件线程和第二硬件线程;
将共享页面地址的安全数据存储在高速缓存行中,所述共享页面地址被分配给所述第一和第二硬件线程可访问的相应安全飞地;
解码第一指令以供所述处理器执行,所述第一指令将所述共享页面地址指定为操作数;以及
响应于解码所述第一指令,标记与所述共享页面地址的飞地页面高速缓存映射相对应的条目,以阻止为所述第一或第二硬件线程中的任一个创建用于访问与所述共享页面地址相对应的安全数据的新转换。
18.如权利要求17所述的方法,其特征在于,所述第一指令是EBLOCK指令,所述EBLOCK指令指定所述共享页面地址以防止在任何TLB中创建与所述共享页面地址相对应的新转换。
19.如权利要求17所述的方法,其特征在于,包括:
响应于解码所述第一指令,还记录当前正在访问与所述安全飞地相对应的飞地页面高速缓存中的安全数据的硬件线程。
20.如权利要求19所述的方法,其特征在于,响应于解码所述第一指令,当所述硬件线程中的任一个退出所述安全飞地时,将所记录的当前正在所述安全飞地中执行的硬件线程的数量递减。
21.如权利要求20所述的方法,其特征在于,当所述硬件线程中的任一个硬件线程退出所述安全飞地时,在与所述任一个硬件线程相对应的TLB中转储清除与所述共享页面地址相对应的转换。
22.如权利要求17所述的方法,其特征在于,包括:
解码第二指令以供所述处理器执行,所述第二指令将所述安全飞地指定为操作数;以及
响应于解码所述第二指令,记录当前正在访问与所述安全飞地相对应的飞地页面高速缓存中的安全数据的硬件线程。
23.如权利要求22所述的方法,其特征在于,响应于解码所述第二指令,当所述硬件线程中的任一个退出所述安全飞地时,将所记录的当前正在所述安全飞地中执行的硬件线程的数量递减。
24.如权利要求22所述的方法,其特征在于,包括:
解码第三指令以供所述处理器执行,所述第三指令将所述共享页面地址指定为操作数;以及
响应于解码所述第三指令,如果所记录的当前正在所述安全飞地中执行的硬件线程的数量达到零,则逐出并写回与所述共享页面地址相对应的飞地页面高速缓存中的安全数据。
25.如权利要求24所述的方法,其特征在于,响应于解码所述第三指令以供所述处理器执行,在将所述安全数据写回存储器或非易失性存储器之前加密与所述共享页面地址相对应的飞地页面高速缓存中的安全数据。
26.如权利要求24所述的方法,其特征在于,如果所记录的当前正在所述安全飞地中执行的硬件线程的数量尚未达到零,则所述第三指令失败。
27.如权利要求24所述的方法,其特征在于,所述第三指令等待直到所记录的当前正在所述安全飞地中执行的硬件线程的数量达到零才执行。
28.一种方法,包括:
在多线程处理器中执行第一硬件线程和第二硬件线程;
将共享页面地址的安全数据存储在高速缓存行中,所述共享页面地址被分配给所述第一和第二硬件线程可访问的相应安全飞地;
解码第一指令以供所述处理器执行,所述第一指令将所述安全飞地指定为操作数;以及
响应于解码所述第一指令,记录当前正在访问与所述安全飞地相对应的飞地页面高速缓存中的安全数据的硬件线程。
29.如权利要求28所述的方法,其特征在于,所述第一指令是ETRACK指令,所述ETRACK指令指定所述安全飞地以记录当前正在所述安全飞地中执行的硬件线程的数量。
30.如权利要求28所述的方法,其特征在于,响应于解码所述第一指令,当所述硬件线程中的任一个退出所述安全飞地时,将所记录的当前正在所述安全飞地中执行的硬件线程的数量递减。
31.如权利要求30所述的方法,其特征在于,响应于解码所述第一指令,防止在任何TLB中创建与所述共享页面地址相对应的新转换。
32.如权利要求30所述的方法,其特征在于,包括:
解码第二指令以供所述处理器执行,所述第二指令将所述共享页面地址指定为操作数;以及
响应于解码所述第二指令,如果所记录的当前正在所述安全飞地中执行的硬件线程的数量达到零,则逐出并写回与所述共享页面地址相对应的飞地页面高速缓存中的安全数据。
33.如权利要求32所述的方法,其特征在于,响应于解码所述第二指令以供所述处理器执行,在将所述安全数据写回存储器或非易失性存储器之前加密与所述共享页面地址相对应的飞地页面高速缓存中的安全数据。
34.如权利要求33所述的方法,其特征在于,如果所记录的当前正在所述安全飞地中执行的硬件线程的数量尚未达到零,则所述第二指令失败。
35.一种处理系统,包括:
存储器;以及
处理器,包括:
第一硬件线程和第二硬件线程,
飞地页面高速缓存,用于将共享页面地址的安全数据存储在高速缓存行中,所述共享页面地址被分配给所述第一和第二硬件线程可访问的相应安全飞地,
解码级,用于解码第一指令以供所述处理器执行,所述第一指令将所述共享页面地址指定为操作数,以及
一个或多个执行单元,用于响应于经解码的第一指令,标记与所述共享页面地址的飞地页面高速缓存映射相对应的条目,以阻止为所述第一或第二硬件线程中的任一个创建用于访问与所述共享页面地址相对应的安全数据的新转换;
所述解码级,用于解码第二指令以供所述处理器执行,所述第二指令将所述安全飞地指定为操作数,以及
所述一个或多个执行单元,用于响应于经解码的第二指令:
记录当前正在访问与所述安全飞地相对应的飞地页面高速缓存中的安全数据的硬件线程,
当所述硬件线程中的任一个退出所述安全飞地时,将所记录的当前正在所述安全飞地中执行的硬件线程的数量递减。
36.如权利要求35所述的处理系统,其特征在于,当所述硬件线程中的任一个硬件线程退出所述安全飞地时,在与所述任一个硬件线程相对应的TLB中转储清除与所述共享页面地址相对应的转换。
37.如权利要求36所述的处理系统,其特征在于,所述处理器包括:
所述解码级,用于解码第三指令以供所述处理器执行,所述第三指令将所述共享页面地址指定为操作数;以及
所述一个或多个执行单元,用于响应于经解码的第三指令,如果所记录的当前正在所述安全飞地中执行的硬件线程的数量达到零,则逐出并写回与所述共享页面地址相对应的飞地页面高速缓存中的安全数据。
38.如权利要求37所述的处理系统,其特征在于,如果所记录的当前正在所述安全飞地中执行的硬件线程的数量尚未达到零,则所述第三指令失败。
CN201410124302.XA 2013-03-31 2014-03-28 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 Active CN104484284B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/854,107 US9430384B2 (en) 2013-03-31 2013-03-31 Instructions and logic to provide advanced paging capabilities for secure enclave page caches
US13/854,107 2013-03-31

Publications (2)

Publication Number Publication Date
CN104484284A true CN104484284A (zh) 2015-04-01
CN104484284B CN104484284B (zh) 2017-11-21

Family

ID=50737713

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410124302.XA Active CN104484284B (zh) 2013-03-31 2014-03-28 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑

Country Status (7)

Country Link
US (2) US9430384B2 (zh)
JP (2) JP5802290B2 (zh)
KR (1) KR101628886B1 (zh)
CN (1) CN104484284B (zh)
BR (1) BR102014006806A2 (zh)
DE (1) DE102014004563A1 (zh)
GB (4) GB2515611B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430384B2 (en) 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
CN107273138A (zh) * 2017-07-04 2017-10-20 杭州铜板街互联网金融信息服务有限公司 基于Android业务模块间交互的解耦方法和系统
CN107466400A (zh) * 2015-04-16 2017-12-12 英赛瑟库尔公司 用于在至少两个功能实体之间共享存储器的方法
CN108334400A (zh) * 2017-01-18 2018-07-27 英特尔公司 为安全飞地管理存储器
CN108351839A (zh) * 2015-12-24 2018-07-31 英特尔公司 用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑
CN108694057A (zh) * 2017-03-31 2018-10-23 英特尔公司 用于改善主机到设备通信以获得最优功率和性能的高效型基于范围的存储器回写
CN110622138A (zh) * 2017-02-23 2019-12-27 华为技术有限公司 一种数据迁移方法及装置
CN110998545A (zh) * 2017-07-25 2020-04-10 国际商业机器公司 具有安全模块的计算机系统软件/固件和处理器单元
CN110998575A (zh) * 2019-04-19 2020-04-10 阿里巴巴集团控股有限公司 在支持受保护执行环境的处理器上执行可信应用的方法和设备
CN111259380A (zh) * 2017-08-22 2020-06-09 海光信息技术有限公司 内存页转移方法和函数调用方法
CN111291041A (zh) * 2018-12-10 2020-06-16 Sap欧洲公司 列数据的非统一分页
US10867092B2 (en) 2017-12-16 2020-12-15 Intel Corporation Avoiding asynchronous enclave exits based on requests to invalidate translation lookaside buffer entries

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9705892B2 (en) * 2014-06-27 2017-07-11 Intel Corporation Trusted time service for offline mode
US9684608B2 (en) 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles
US9710622B2 (en) * 2015-02-23 2017-07-18 Intel Corporation Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache
US9870467B2 (en) * 2015-03-27 2018-01-16 Intel Corporation Apparatus and method for implementing a forked system call in a system with a protected region
WO2016204766A1 (en) 2015-06-18 2016-12-22 Hewlett Packard Enterprise Development Lp Transmitting contents of an operation field to a media controller
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US9460011B1 (en) 2015-12-14 2016-10-04 International Business Machines Corporation Memory reference estimation method and device based on improved cache
US9798641B2 (en) * 2015-12-22 2017-10-24 Intel Corporation Method to increase cloud availability and silicon isolation using secure enclaves
US10354095B2 (en) * 2016-03-31 2019-07-16 Intel Corporation Methods and apparatus to initialize enclaves on target processors
US10346641B2 (en) 2016-09-23 2019-07-09 Intel Corporation Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory
US10180854B2 (en) * 2016-09-28 2019-01-15 Intel Corporation Processor extensions to identify and avoid tracking conflicts between virtual machine monitor and guest virtual machine
US20180095892A1 (en) * 2016-10-01 2018-04-05 Intel Corporation Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
US10372452B2 (en) * 2017-03-14 2019-08-06 Samsung Electronics Co., Ltd. Memory load to load fusing
US10552344B2 (en) * 2017-12-26 2020-02-04 Intel Corporation Unblock instruction to reverse page block during paging
US11126699B2 (en) * 2018-02-07 2021-09-21 Nec Corporation Replica trusted execution environment: enabling seamless replication of trusted execution environment (TEE)-based enclaves in the cloud
US10970390B2 (en) * 2018-02-15 2021-04-06 Intel Corporation Mechanism to prevent software side channels
US10649911B2 (en) * 2018-03-29 2020-05-12 Intel Corporation Supporting memory paging in virtualized systems using trust domains
US11494485B2 (en) * 2018-04-30 2022-11-08 Google Llc Uniform enclave interface
CN112005237B (zh) 2018-04-30 2024-04-30 谷歌有限责任公司 安全区中的处理器与处理加速器之间的安全协作
EP4155996A1 (en) 2018-04-30 2023-03-29 Google LLC Enclave interactions
US11436016B2 (en) * 2019-12-04 2022-09-06 Advanced Micro Devices, Inc. Techniques for improving operand caching
CN113867789A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102289386A (zh) * 2010-06-21 2011-12-21 英特尔公司 通过部分虚拟化机器的统一存储设备
US20120030768A1 (en) * 2009-04-14 2012-02-02 Ronald Mraz Ruggedized, compact and integrated one-way controlled interface to enforce confidentiality of a secure enclave
CN102473224A (zh) * 2009-12-22 2012-05-23 英特尔公司 提供安全应用执行的方法和装置
US20120159184A1 (en) * 2010-12-17 2012-06-21 Johnson Simon P Technique for Supporting Multiple Secure Enclaves
US20120163589A1 (en) * 2010-12-22 2012-06-28 Johnson Simon P System and method for implementing a trusted dynamic launch and trusted platform module (tpm) using secure enclaves

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6185258B1 (en) * 1997-09-16 2001-02-06 At&T Wireless Services Inc. Transmitter diversity technique for wireless communications
US6539470B1 (en) * 1999-11-16 2003-03-25 Advanced Micro Devices, Inc. Instruction decode unit producing instruction operand information in the order in which the operands are identified, and systems including same
JP3866597B2 (ja) * 2002-03-20 2007-01-10 株式会社東芝 内部メモリ型耐タンパプロセッサおよび秘密保護方法
CN100354786C (zh) * 2002-07-09 2007-12-12 富士通株式会社 开放型通用抗攻击cpu及其应用系统
US7475220B1 (en) * 2003-08-18 2009-01-06 Cray Incorporated Buffer overflow detection
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7657754B2 (en) * 2005-12-08 2010-02-02 Agere Systems Inc Methods and apparatus for the secure handling of data in a microcontroller
US7836320B2 (en) * 2006-07-07 2010-11-16 Arm Limited Power management in a data processing apparatus having a plurality of domains in which devices of the data processing apparatus can operate
US8108659B1 (en) * 2006-11-03 2012-01-31 Nvidia Corporation Controlling access to memory resources shared among parallel synchronizable threads
US7958320B2 (en) * 2006-12-05 2011-06-07 Intel Corporation Protected cache architecture and secure programming paradigm to protect applications
US8909601B2 (en) * 2007-11-13 2014-12-09 Oracle America, Inc. System and method for implementing shared scalable nonzero indicators
WO2010019916A1 (en) * 2008-08-14 2010-02-18 The Trustees Of Princeton University Hardware trust anchors in sp-enabled processors
JP2012508938A (ja) * 2008-11-14 2012-04-12 インテル・コーポレーション セキュアなアプリケーション実行方法および装置
US8677076B2 (en) * 2010-03-30 2014-03-18 Oracle International Corporation System and method for tracking references to shared objects using byte-addressable per-thread reference counters
US8954755B2 (en) * 2012-01-23 2015-02-10 International Business Machines Corporation Memory address translation-based data encryption with integrated encryption engine
US9223709B1 (en) * 2012-03-06 2015-12-29 Marvell International Ltd. Thread-aware cache memory management
US20140181484A1 (en) * 2012-12-21 2014-06-26 James Callister Mechanism to provide high performance and fairness in a multi-threading computer system
US9430384B2 (en) 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120030768A1 (en) * 2009-04-14 2012-02-02 Ronald Mraz Ruggedized, compact and integrated one-way controlled interface to enforce confidentiality of a secure enclave
CN102473224A (zh) * 2009-12-22 2012-05-23 英特尔公司 提供安全应用执行的方法和装置
CN102289386A (zh) * 2010-06-21 2011-12-21 英特尔公司 通过部分虚拟化机器的统一存储设备
US20120159184A1 (en) * 2010-12-17 2012-06-21 Johnson Simon P Technique for Supporting Multiple Secure Enclaves
US20120163589A1 (en) * 2010-12-22 2012-06-28 Johnson Simon P System and method for implementing a trusted dynamic launch and trusted platform module (tpm) using secure enclaves

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592421B2 (en) 2013-03-31 2020-03-17 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
US9430384B2 (en) 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
CN107466400B (zh) * 2015-04-16 2020-12-04 拉姆伯斯公司 用于在至少两个功能实体之间共享存储器的方法
CN107466400A (zh) * 2015-04-16 2017-12-12 英赛瑟库尔公司 用于在至少两个功能实体之间共享存储器的方法
CN108351839A (zh) * 2015-12-24 2018-07-31 英特尔公司 用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑
CN108351839B (zh) * 2015-12-24 2023-10-31 英特尔公司 挂起/恢复飞地页面高速缓存中飞地的迁移的设备和方法
CN108334400A (zh) * 2017-01-18 2018-07-27 英特尔公司 为安全飞地管理存储器
CN108334400B (zh) * 2017-01-18 2024-01-12 英特尔公司 为安全飞地管理存储器
CN110622138A (zh) * 2017-02-23 2019-12-27 华为技术有限公司 一种数据迁移方法及装置
CN110622138B (zh) * 2017-02-23 2022-12-30 华为技术有限公司 一种数据迁移方法及装置
CN108694057A (zh) * 2017-03-31 2018-10-23 英特尔公司 用于改善主机到设备通信以获得最优功率和性能的高效型基于范围的存储器回写
CN107273138A (zh) * 2017-07-04 2017-10-20 杭州铜板街互联网金融信息服务有限公司 基于Android业务模块间交互的解耦方法和系统
CN110998545B (zh) * 2017-07-25 2023-05-26 国际商业机器公司 具有安全模块的计算机系统软件/固件和处理器单元
CN110998545A (zh) * 2017-07-25 2020-04-10 国际商业机器公司 具有安全模块的计算机系统软件/固件和处理器单元
CN111259380A (zh) * 2017-08-22 2020-06-09 海光信息技术有限公司 内存页转移方法和函数调用方法
US10867092B2 (en) 2017-12-16 2020-12-15 Intel Corporation Avoiding asynchronous enclave exits based on requests to invalidate translation lookaside buffer entries
CN111291041A (zh) * 2018-12-10 2020-06-16 Sap欧洲公司 列数据的非统一分页
CN111291041B (zh) * 2018-12-10 2023-06-06 Sap欧洲公司 列数据的非统一分页
CN110998575A (zh) * 2019-04-19 2020-04-10 阿里巴巴集团控股有限公司 在支持受保护执行环境的处理器上执行可信应用的方法和设备
CN110998575B (zh) * 2019-04-19 2024-04-16 创新先进技术有限公司 在支持受保护执行环境的处理器上执行可信应用的方法和设备

Also Published As

Publication number Publication date
GB201601398D0 (en) 2016-03-09
DE102014004563A1 (de) 2014-10-02
KR20140118862A (ko) 2014-10-08
CN104484284B (zh) 2017-11-21
GB2528796A8 (en) 2018-04-18
GB2515611B (en) 2015-06-03
JP5802290B2 (ja) 2015-10-28
JP2016006681A (ja) 2016-01-14
KR101628886B1 (ko) 2016-06-09
GB201405732D0 (en) 2014-05-14
US9430384B2 (en) 2016-08-30
US10592421B2 (en) 2020-03-17
US20160371191A1 (en) 2016-12-22
GB2515611A (en) 2014-12-31
GB2522137B (en) 2015-12-02
GB2534037A (en) 2016-07-13
US20140297962A1 (en) 2014-10-02
GB2528796A (en) 2016-02-03
GB2534037A8 (en) 2018-04-18
GB2534037B8 (en) 2018-04-18
GB2528796B (en) 2016-05-18
GB201505638D0 (en) 2015-05-13
GB2534037B (en) 2016-10-19
GB201515835D0 (en) 2015-10-21
GB2528796B8 (en) 2018-04-18
BR102014006806A2 (pt) 2014-12-02
GB2522137A (en) 2015-07-15
JP2014203456A (ja) 2014-10-27
JP6344614B2 (ja) 2018-06-20

Similar Documents

Publication Publication Date Title
CN104484284A (zh) 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN107209722B (zh) 处理器、处理系统和用于指令执行的方法
TWI567642B (zh) 用以中斷與回復安全獨立領域中的分頁之指令及邏輯
JP6207095B2 (ja) 条件付きループをベクトル化する命令及び論理
CN108351779B (zh) 用于安全指令执行流水线的指令和逻辑
TWI724067B (zh) 用以在安全指定位址空間頁面快取記憶體中暫停/回復指定位址空間的遷移之指令及邏輯
CN103959237B (zh) 用于提供向量横向比较功能的指令和逻辑
KR101842058B1 (ko) 푸싱형 버퍼 복사 및 저장 기능성을 제공하기 위한 명령어 및 논리
CN108369509B (zh) 用于基于通道的跨步分散操作的指令和逻辑
CN104011662A (zh) 用于提供向量混合和置换功能的指令和逻辑
CN104049945A (zh) 用于融合指令以在多个测试源上提供或(or)测试和与(and)测试功能的方法和装置
CN104050077A (zh) 利用多个测试源来提供或(or)测试和与(and)测试功能的可融合指令和逻辑
CN103827814A (zh) 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑
CN103827813A (zh) 用于提供向量分散操作和聚集操作功能的指令和逻辑
CN104321741A (zh) 双舍入组合浮点乘法和加法
CN104915181A (zh) 条件存储器错误帮助抑制
CN103827815A (zh) 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑
CN104049953A (zh) 用于合并操作掩码的未经掩码元素的处理器、方法、系统和指令
CN104951274A (zh) 用于控制流安全性的二进制转换机制的指令和逻辑
CN103959236A (zh) 用于提供向量横向多数表决功能的指令和逻辑
CN104025033A (zh) 利用控制操纵的simd可变移位和循环
EP3391236A1 (en) Instructions and logic for get-multiple-vector-elements operations
CN103988173A (zh) 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑
CN116339827A (zh) 用于利用描述符实现基于能力的分区切换的电路系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant