CN105224865B - 中断和恢复分页的指令及相关方法、系统、处理器和介质 - Google Patents
中断和恢复分页的指令及相关方法、系统、处理器和介质 Download PDFInfo
- Publication number
- CN105224865B CN105224865B CN201510403947.1A CN201510403947A CN105224865B CN 105224865 B CN105224865 B CN 105224865B CN 201510403947 A CN201510403947 A CN 201510403947A CN 105224865 B CN105224865 B CN 105224865B
- Authority
- CN
- China
- Prior art keywords
- page
- instruction
- enclave
- processor
- cache
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
在安全飞地中的指令和逻辑中断和恢复分页。实施例包括指令,指定分配给安全飞地的页地址,该指令被解码用于由处理器执行。该处理器包括飞地页高速缓存,其用于与该页地址相对应的页的第一高速缓存行和最后的高速缓存行中存储安全数据。当用于该页的飞地页高速缓存映射中的条目仅指示存储在该飞地页高速缓存的部分页时,从该页的第一或最后的高速缓存行读取页状态。用于部分页的条目可以被设置,并且新的页状态当写回时可以记录在第一高速缓存行,或当在该指令的执行被中断时加载该页时记录在该最后的高速缓存行。因此该写回或加载可以恢复。
Description
技术领域
本公开属于处理逻辑、微处理器和相关联的指令集体系结构领域,其当由处理器或其他处理逻辑执行时,执行加载、存储、逻辑、数学或其他功能操作。特别地,本公开涉及在安全飞地中进行中断和恢复分页的指令和逻辑。
背景技术
用于支持新的使用模型和服务,如语音、视频、事务和私有数据的应用和高性能网络给安全区域带来了新的挑战。在存储或传输中针对机密性和完整性来保护数据的需要是重要的,但支持保持对被保护代码和/或数据的安全访问所需要的高速密码操作和存储增加了复杂度并且最终增加了成本。
已知一种用于建立和保持安全的、受保护的或隔离的分区或环境的技术为建立飞地。飞地为一组信息和处理能力,其作为分组来进行保护。该信息和处理能力可以包括网络、主机或应用。当用于飞地的数据和/或指令从外部的存储器加载时,其被解密、认证、然后存储或高速缓存于受保护的存储器中。类似地,当用于飞地的数据和/或指令从受保护的存储器收回时,其在被存储回外部存储器之前被加密。
因此,当针对安全飞地执行存储器页的页面换入(即加载)和/或页面换出(即收回和写回)时,密码的操作必须在整个页上执行,整个页可以典型地为4KB大小。因此,加载或收回用于安全飞地的页可能需要数万个处理周期。如果页面换入或页面换出过程中断,则可能需要重新执行,但由于中断的出现可能相对频繁,所以加载或收回用于安全飞地的页的前向进展可能难以保证。另一方面,如果中断服务不被允许,直到加载或收回用于安全飞地的页已完成,则延迟的中断服务在某些服务(诸如,语音、视频和实时事务)中可能导致不可接受的差错。
因此,保证加载和/或收回用于安全飞地的存储器页的前向进展呈现出一系列特别的用户体验和性能挑战。目前为止,解决该挑战的解决方案,潜在的性能限制问题和实时复杂度还没有被充分地开发。
附图示出
本发明以示例的形式示出并且不受附图的图的限制。
图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示出了使用指令来提供包括在安全飞地中进行中断和恢复分页的高级分页能力的处理器中的装置的一个实施例。
图16A示出了用于提供包括在安全飞地中进行中断和恢复分页的高级分页能力的过程的一个实施例的流程图。
图16B示出了用于在安全飞地中进行中断和恢复分页的过程的一个实施例的流程图。
图16C示出了用于在安全飞地中进行中断和恢复分页的过程的一个实施例的流程图。
图17示出了用于提供用于安全飞地页高速缓存的高级分页能力的过程的可选实施例的流程图。
图18A示出了用于提供包括在安全飞地中进行中断和恢复分页的高级分页能力的过程的另一实施例的流程图。
图18B示出了用于提供包括在安全飞地中进行中断和恢复分页的高级分页能力的过程的另一实施例的流程图。
图18C示出了用于在安全飞地中进行中断和恢复分页的过程的实施例的流程图。
图18D示出了用于在安全飞地中进行中断和恢复分页的过程的另一实施例的流程图。
具体实施方式
如下描述公开了指令和处理逻辑,其用于在处理器、计算机系统或其他处理装置中或与处理器、计算机系统或其他处理装置关联的在安全飞地(secure enclave)中进行中断和恢复分页。
在仅保存私有或受保护数据(例如,与飞地相关联的)的专门的高速缓存或高速缓存部分中,当未加密时对该私有或受保护数据的访问可能仅限于授权的处理器核、硬件线程、或逻辑处理器。这样的飞地私有存储器可以被称为飞地页高速缓存(EPC)存储器。正如其他物理存储器一样,EPC可以被做成通过按需对数据和/或代码进行页面换入和换出以支持更大的私有或受保护的地址空间。
公开指令和逻辑以在安全飞地中进行中断和恢复分页操作。在某些实施例中,指令指定分配给安全飞地的页地址(例如,在安全飞地页高速缓存中),以用于从外部存储器加载或用于写回外部存储器。该指令被解码用于由处理器执行。处理器包括飞地页高速缓存,其用于至少在与页地址相对应的页的第一高速缓存行和最后的高速缓存行存储安全数据。当针对该页的飞地页高速缓存映射中的条目仅指示部分页存储在飞地页高速缓存中时,从页的第一或最后的高速缓存行读取页状态。可以设置部分页的条目,并且当写回时新的页状态可以记录在第一高速缓存行中,或当在指令的执行被中断时加载该页时新的页状态可以记录在最后的高速缓存行。因此写回或加载可以恢复。
改变页的映射典型地由普通计算系统的OS管理,但在飞地中,OS不一定需要访问飞地私有存储器的内容。传输后备缓冲器(TLB)中的条目与一个或多个特定处理器核、硬件线程或逻辑处理器相关联,在其页面被换出至存储器或非易失性存储装置时均不应当被允许修改页。因此,改变飞地的页的映射,例如收回飞地的页或加载飞地的新的页,可能需要系统以某种方式通过将访问飞地资源的一个或多个处理器核、硬件线程或逻辑处理器置为暂时非活动或抑制状态或另外停止飞地中的任何应用运行来“停止”访问飞地资源的一个或多个处理器核、硬件线程或逻辑处理器,同时EPC存储器内容被加密和写回,新的页从存储器加载和解密,TLB条目被刷新和替换等。硬件保护机制可能需要用于保护EPC中的页,以保证私有存储器内容的安全和/或完整性,并且在不能够信任OS的情况下协助管理有限数量的物理私有存储器。
涉及安全飞地的一个示例方法在2012年6月19日提交的标题为“Method andApparatus to Provide Secure Application Execution”的共同未决美国专利申请,序列号为13/527,547中进行了描述。当EPC存储器的页被收回时,可以导致向利用EPC存储器的所有处理器核或逻辑处理器发送信令,和/或要求所有处理器核或逻辑处理器退出飞地,以替换页内容、刷新一个或多个TLB条目等。此外,在硬件中保证这样的需求被满足,以便保护飞地隐私,这可能涉及大量的设计和验证复杂度。
某些实施例包括多个硬件线程、逻辑处理器或处理核,高速缓存用于存储分配给安全飞地的共享页地址的并且由硬件线程逻辑处理器或处理核可访问的安全数据。解码级对第一指令(例如EBLOCK指令,在下文对其进行更详细的讨论)进行解码,该第一指令指定共享页地址作为操作数。一个或多个执行单元标记与用于共享页地址的飞地页高速缓存映射相对应的条目,以阻止针对任何所述多个硬件线程、逻辑处理器或处理核创建新的TLB转换来访问共享页。第二指令(例如,ETRACK指令,在下文对其进行更详细的讨论)被解码用于执行,第二指令指定所述安全飞地作为操作数,并且一个或多个执行单元记录当前访问与安全飞地相对应的在飞地页高速缓存中的安全数据的硬件线程。当任何硬件线程退出安全飞地时,所记录的硬件线程的数量递减。
然后OS可以将内部处理器中断(IPI)发送至当前访问与安全飞地相对应的飞地页高速缓存中的安全数据的任何硬件线程、逻辑处理器或处理核。当硬件线程、逻辑处理器或处理核确认IPI并退出安全飞地时,其一个或多个TLB条目被刷新并且所记录的硬件线程的数量递减。当所记录的硬件线程的数量达到零时,OS收回页、对页进行加密、并且将其写回存储器或非易失性存储装置是安全的。OS可以使用第三指令(例如,EWB指令,在下文对其进行更详细的讨论)以完成收回和写回。由于安全数据的飞地保护可能不能够信任OS,所以如果所记录的硬件线程的数量未达到零,则第三指令的一个实施例可能失败。在可替换的实施例中,第三指令可以等待直到所记录的硬件线程的数量达到零以执行。
应当意识到管理许可、物理存储器和/或改变映射仍可以由OS管理,但当存储器内容被保护时,如在飞地中,OS可能不被允许或信任以访问实际保护的内容,这是因为飞地具有私有存储器。因此保证私有存储器内容的安全和/或完整性和在可能不能够信任OS的情况下管理有限数量的物理存储器的技术约束可以以分级方式利用指令和处理逻辑以在安全飞地中进行中断和恢复分页,而不需要精细的硬件支持和/或设计工作来完成。此外,当安全飞地页高速缓存存储器内容被加密和写回,和/或新的页从存储器加载并且解密时,做出前向进展,并且可以执行定期检查,以确定是否有任何未决的中断。当有未决的中断时,分页操作的部分完成可以记录在飞地页高速缓存映射条目中,并且可以存储页状态信息(例如,在用于对应页的高速缓存行中或在某些其他安全存储装置中)。然后可以对中断进行服务,并且之后可以恢复相对应的分页操作(例如,利用ELOAD恢复或EWRITEBACK恢复指令,在下文对其进行更详细的讨论)。因此可以保证加载和/或收回安全飞地的存储器页的前向进展,并且服务(诸如,语音、视频和实时事务)中不可接受的差错可以由于及时地对未决的中断进行服务而避免。
在下面的描述中,阐述了多个特定的细节,例如,处理逻辑、处理器类型、微架构条件、事件、启动机制等,以便提供对本发明的实施例的更彻底的理解。然而本领域中的技术人员将认识到,本发明可以在没有这样的特定细节的情况下被实施。此外,没有详细示出一些公知的结构、电路等以便避免不必要地使对本发明的实施例难理解。
虽然参考处理器描述了下面的实施例,但是其它实施例可应用于其它类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可以应用于可以受益于较高流水线吞吐量和改进的性能的其它类型的电路或半导体设备。本发明的实施例的教导可应用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并可以应用于数据的操纵或管理在其中被执行的任何处理器和机器。此外,下面的描述提供了示例,并且附图出于说明的目的地示出了各种示例。然而,这些示例不应在限制的意义上被解释,因为它们仅仅是要提供本发明的实施例的示例而不是提供本发明的实施例的所有可能实现的详尽的列表。
虽然下面的示例在执行单元和逻辑电路的上下文中描述了指令处理和分布,但是本发明的其它实施例可以通过存储在机器可读、有形介质上的数据或指令的方式来完成,所述数据或指令当由机器执行时使机器执行与本发明的至少一个实施例一致的功能。在一个实施例中,与本发明的实施例相关联的功能体现在机器可执行指令中。所述指令能够用于使利用指令编程的通用或专用处理器执行本发明的步骤。本发明的实施例可以被提供为可以包括机器或计算机可读介质的计算机程序产品或软件,所述机器或计算机可读介质具有在其上存储的指令,所述指令可以用于对计算机(或其它电子设备)进行编程以根据本发明的实施例执行一个或多个操作。可替换地,本发明的实施例的步骤可以由包含用于执行步骤的固定功能逻辑的特定的硬件部件、或由编程计算机部件和固定功能硬件部件的任何组合执行。
用于对逻辑进行编程以执行本发明的实施例的指令可以存储在系统中的存储器(例如,DRAM、高速缓存、闪速存储器或其它存储装置)内。此外,指令可以经由网络或通过其它计算机可读介质来分布。因此,机器可读介质可以包括用于存储或发送以机器(例如,计算机)可读的形式的信息的任何机构,但不限于软盘、光学盘、光盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传输信息中使用的有形、机器可读存储装置。因此,计算机可读介质包括适合于存储或发送以机器(例如,计算机)可读的形式的电子指令或信息的任何类型的有形机器可读介质。
设计也可以经历各种级,从创建到仿真到制造。表示设计的数据可以用多种方式来表示设计。首先,如在仿真中有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。此外,可以在设计过程的一些级生成具有逻辑和/或晶体管栅极的电路级模型。此外,在一些级,大部分设计达到表示在硬件模型中的各种设备的物理放置的数据的水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于生成集成电路的掩模的不同掩模层上各种特征的存在或不存在的数据。在设计的任何表示中,所述数据可以存储在任何形式的机器可读介质中。存储器或磁性或光学存储装置(例如,磁盘)可以是机器可读介质,其用于存储经由光波或电波传输的信息,所述光波或电波被调制或否则生成以传输这样的信息。当指示或携带代码或设计的电载波被发送时,在电信号的复制、缓冲或重传被执行的程度上,制造新拷贝。因此,通信提供者或网络提供者可以在有形、机器可读介质上至少暂时性地存储制品,例如,被编码到载波中的信息,所述信息体现了本发明的实施例的技术。
在现代处理器中,多个不同的执行单元用于处理并且执行各种代码和指令。不是所有指令都同等地被创建,一些更快完成,而另一些可能花费多个时钟周期来完成。指令的吞吐量越快,处理器的整体性能就越好。因此,尽可能快地执行很多指令将是有利的。然而,存在具有较大的复杂性并且从执行时间和处理器资源方面来说需要更多的某些指令。例如,存在浮点指令、加载/存储操作、数据移动等。
由于在互联网、文本和多媒体应用中使用更多的计算机系统,所以随着时间的过去引入了额外的处理器支持。在一个实施例中,指令集可以与一个或多个计算机架构相关联,所述计算机架构包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、和外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可以由一个或多个微架构实现,所述微架构包括用于实现一个或多个指令集的处理器逻辑和电路。相应地,具有不同的微架构的处理器可以共享公共指令集的至少一部分。例如, Pentium 4处理器、 CoreTM处理器和来自Sunnyvale CA的Advanced Micro Devices,Inc的处理器实现x86指令集的几乎相同的版本(具有添加有较新版本的一些扩展),但具有不同的内部设计。类似地,由其它处理器开发公司(例如,ARM Holdings,Ltd、MIPS或其许可证接受方或采用方)设计的处理器可以共享公共指令集的至少一部分,但可以包括不同的处理器设计。例如,可以使用新的或公知的技术在不同的微架构中以不同的方式实现ISA的相同的寄存器架构,所述寄存器架构包括专用物理寄存器、使用寄存器重命名机制(例如,寄存器别名表(RAT)、记录器缓冲器(ROB)和引退寄存器文件的使用)的一个或多个动态分配的物理寄存器。在一个实施例中,寄存器可以包括一个或多个寄存器、寄存器架构、寄存器文件或可以或可以不由软件编程者可寻址的其它寄存器集。
在一个实施例中,指令可以包括一个或多个指令格式。在一个实施例中,指令格式可以指示各种字段(位的数量、位的位置等)来指定待执行的操作和操作数,其中该操作将在该操作数上被执行,连同其它事物。一些指令格式可以进一步由指令模板(或子格式)中断地定义。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同子集和/或被定义为具有被不同地解释的给定字段。在一个实施例中,指令使用指令格式来进行表示(并且,如果被定义,则在该指令格式的指令模板的给定模板中)并且指定或指示操作和操作数,其中该操作将在该操作数上操作。
科学、金融、自动矢量化通用、RMS(识别、挖掘和合成)、以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)可能需要要在大量的数据项上执行的相同的操作。在一个实施例中,单指令多数据(SIMD)指使处理器在多个数据元素上执行操作的指令的类型。可以在处理器中使用SIMD技术,所述SIMD技术可以将寄存器中的位逻辑地划分为多个固定尺寸或可变尺寸的数据元素,每一个数据元素表示单独的值。例如,在一个实施例中,在64位寄存器中的位可以被组织为包含四个单独的16位数据元素的源操作数,每一个数据元素表示单独的16位值。这类数据可以被称为“紧缩”数据类型或“矢量”数据类型,并且所述数据类型的操作数被称为紧缩数据操作数或矢量操作数。在一个实施例中,紧缩数据项或矢量可以是存储在单个寄存器中的紧缩数据元素的序列,并且紧缩数据操作数或矢量操作数可以是SIMD指令(或“紧缩数据指令”或“矢量指令”)的源或目的操作数。在一个实施例中,SIMD指令指定单个矢量操作,所述单个矢量操作要在两个源矢量操作数上被执行以生成相同或不同尺寸、具有相同或不同数量的数据元素和以相同或不同的数据元素顺序的目的矢量操作数(也被称为结果矢量操作数)。
例如由具有包括x86、MMXTM指令集、流式SIMD扩展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令的指令集的 CoreTM处理器、ARM处理器(例如,具有包括矢量浮点(VFP)和/或NEON指令的指令集的ARM 系列的处理器)、以及MIPS处理器(例如,由中国科学院的计算技术研究所(ICT)开发的Loongson系列的处理器)使用的SIMD技术使在应用性能中的显而易见的改进变得可能(CoreTM和MMXTM是Santa Clara,Calif的Intel公司的注册商标或商标)。
在一个实施例中,目的和源寄存器/数据是表示相对应的数据或操作的源和目的地的一般术语。在一些实施例中,它们可以由寄存器、存储器或具有除了所描述的那些名称或功能以外的其它名称或功能的其它存储区域实现。例如,在一个实施例中,“DEST1”可以是暂时性存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域,等等。在其它实施例中,SRC和DEST存储区域中的两个或更多个可以与在同一存储区域(例如,SIMD寄存器)内的不同数据存储元件相对应。在一个实施例中,源寄存器中的一个也可以通过例如将在第一和第二源数据上执行的操作的结果写回到用作目的寄存器的两个源寄存器中的一个来充当目的寄存器。
图1A为根据本发明的一个实施例的由包括用于执行指令的执行单元的处理器形成的示例性计算机系统的框图。系统100包括部件(例如,处理器102),用于使用包括逻辑的执行单元来执行用于处理数据的算法。系统100代表基于从Santa Clara,California的Intel公司可得到的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,但是也可以使用其它系统(包括具有其它微处理器、工程工作站、机顶盒等的PC)。在一个实施例中,范例系统100执行从Redmond,Washington的Microsoft公司可得到的WINDOWSTM操作系统的版本,但是也可以使用其它操作系统(例如,UNIX和Linux)、嵌入式软件、和/或图形用户接口。因此,本发明的实施例不限于硬件电路和软件的任何特定的组合。
实施例不限于计算机系统。可以在其它设备(例如,手持设备和嵌入式应用)中使用本发明的可选实施例。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字摄像机、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可以根据至少一个实施例执行一个或多个指令的任何其它系统。
图1A是由处理器102形成的计算机系统100的框图,处理器102包括一个或多个执行单元108,用于实施算法,以根据本发明的一个实施例来实施至少一个指令。可以在单处理器桌面型或服务器系统的上下文中描述一个实施例,但可选的实施例可以包括在多处理器系统中。系统100是“中心”系统架构的示例。计算机系统100包括用于处理数据信号的处理器102。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器、或任何其它处理器设备,例如,数字信号处理器。处理器102耦合到处理器总线110,处理器总线110可以在系统100中的处理器102和其它部件之间传输数据信号。系统100的元件执行熟悉本领域的人员所公知的常规功能。
在一个实施例中,处理器102包括一级(L1)内部高速缓冲存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。可替换地,在另一实施例中,高速缓冲存储器可以存在于处理器102的外部。取决于特定的实现和需要,其它实施例还可以包括内部和外部高速缓存二者的组合。寄存器文件106将不同类型的数据存储在各种寄存器中,所述各种寄存器包括整数寄存器、浮点寄存器、矢量寄存器、状态寄存器、和指令指针寄存器。
执行单元108包括执行整数和浮点操作的逻辑,执行单元108也存在于处理器102中。处理器102还包括微代码(ucode)ROM,其存储微代码以用于某些微指令。对于一个实施例,执行单元108包括用于处理紧缩指令集109的逻辑。通过将紧缩指令集109包括在通用处理器102的指令集中,连同用于执行指令的相关联的电路,可以在通用处理器102中使用紧缩数据来执行由很多多媒体应用使用的操作。因此,很多多媒体应用通过使用处理器的数据总线的全宽以用于在紧缩数据上执行操作来更有效地被加速和执行。这潜在地消除了如下需要,在处理器的数据总线当中传送较小的数据单元,以执行一个或多个操作,一次一个数据元素。
也可以在微控制器、嵌入式处理器、图形设备、DSP和其它类型的逻辑电路中使用执行单元108的可替换实施例。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其它存储器设备。存储器120可以存储由数据信号表示的指令和/或数据,所述数据信号可以由处理器102执行。
系统逻辑芯片116耦合到处理器总线110和存储器120。系统逻辑芯片116在所示的实施例中是存储器控制器中心(MCH)。处理器102可以经由处理器总线110与MCH 116通信。MCH 116向存储器120提供高带宽存储器路径118,以用于指令和数据存储以及用于图形命令、数据和结构的存储。MCH 116在系统100中的处理器102、存储器120和其它部件之间引导数据信号,并在处理器总线110、存储器120和系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可以提供图形端口以用于耦合到图形控制器112。MCH 116通过存储器接口118耦合到存储器120。图形卡112通过加速图形端口(AGP)互连114耦合到MCH 116。
系统100使用专用集线器接口总线122来将MCH 116耦合到I/O控制器中心(ICH)130。ICH 130提供经由局部I/O总线到一些I/O设备的直接连接。局部I/O总线是用于将外围设备连接到存储器120、芯片组和处理器102的高速I/O总线。一些示例是音频控制器、固件集线器(闪速存储器BIOS)128、无线收发机126、数据存储装置124、包含用户输入和键盘接口的旧版I/O控制器、串行扩展端口,例如通用串行总线(USB)和网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪速存储器设备、或其它大容量存储设备。
对于系统的另一实施例,根据一个实施例的指令可以与芯片上系统一起使用。芯片上系统的一个实施例由处理器和存储器组成。一个这样的系统的存储器是闪速存储器。闪速存储器可以位于与处理器和其它系统部件相同的管芯上。此外,其它逻辑块(例如,存储器控制器或图形控制器)也可以位于芯片上的系统上。
图1B示出了实现本发明的一个实施例的原理的数据处理系统140。本领域中的技术人员将容易认识到,本文描述的实施例可以与可选的处理系统一起使用,而不偏离本发明的实施例的范围。
计算机系统140包括能够根据一个实施例执行至少一个指令的处理核心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总线153与各种I/O设备通信的I/O桥154。这样的I/O设备可以包括但不限于例如通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART 157和I/O扩展接口158。
数据处理系统140的一个实施例提供了移动、网络、和/或无线通信和能够执行包括文本串比较操作的SIMD操作的处理核心159。可以使用各种音频、视频、成像和通信算法——包括离散转换,例如,Walsh-Hadamard转换、快速傅立叶转换(FFT)、离散余弦转换(DCT)以及其相应的逆转换;压缩/解压缩技术,例如,颜色空间转换、视频编码运动估计或视频解码运动补偿;以及调制/解调(MODEM)函数,例如,脉冲编码调制(PCM)——来对处理核心159进行编程。。
图1C示出了能够执行指令以在安全飞地中进行中断和恢复分页的数据处理系统另一可选的实施例。根据一个可选的实施例,数据处理系统160可以包括主处理器166、SIMD协处理器161、高速缓冲存储器167和输入/输出系统168。输入/输出系统168可以耦合到无线接口169。SIMD协处理器161能够根据一个实施例来执行包括指令的操作。处理核心170可以适合于用一种或多种处理技术来制造,并且通过足够详细地呈现在机器可读介质上,可以适合有助于包括处理核心170的数据处理系统160的全部或部分的制造。
对于一个实施例,SIMD协处理器161包括执行单元162和一组寄存器文件164。主处理器165的一个实施例包括解码器165,以用于根据一个实施例来识别包括指令的指令集163的指令以由执行单元162执行。对于可选的实施例,SIMD协处理器161还包括解码器165B的至少部分,以用于对指令集163的指令进行解码。处理核心170还包括对本发明的实施例的理解不是必需的额外的电路(未示出)。
在操作中,主处理器166执行控制通用类型的数据处理操作的数据处理指令的流,通用类型的数据处理操作包括与高速缓冲存储器167和输入/输出系统168的交互。嵌入在数据处理指令的流中的是SIMD协处理器指令。主处理器166的解码器165将这些SIMD协处理器指令识别为应由附加的SIMD协处理器161执行的类型。相应地,主处理器166在协处理器总线166上发出这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号),其中它们从协处理器总线166由任何附加的SIMD协处理器接收。在这种情况下,SIMD协处理器161将接受并执行打算用于它的任何所接收的SIMD协处理器指令。
可以经由无线接口169来接收数据,以用于由SIMD协处理器指令处理。对于一个示例,可以以数字信号的形式接收语音通信,所述数字信号可以由SIMD协处理器指令处理以重新生成表示语音通信的数字音频样本。对于另一示例,可以以数字位流的形式接收压缩的音频和/或视频,所述数字位流可以由SIMD协处理器指令处理以重新生成数字音频样本和/或运动视频帧。对于处理核心170的一个实施例,主处理器166和SIMD协处理器161集成到包括执行单元162、一组寄存器文件164和解码器165的单个处理核心170中,以识别包括根据一个实施例的指令的指令集163的指令。
图2是包括用于执行根据本发明的一个实施例的指令的逻辑电路在内的处理器200的微体系结构的框图。在一些实施例中,根据一个实施例的指令可以被实现为在具有字节、字、双字、四字等的尺寸以及数据类型(例如,单和双精度整数和浮点数据类型)的数据元素上操作。在一个实施例中,有序前端201是取出待执行的指令并使它们准备好稍后在处理器流水线中使用的处理器200的部分。前端201可以包括几个单元。在一个实施例中,指令预取器226从存储器取出指令并将它们馈送到指令解码器228,解码器228继而对它们进行解码或解释它们。例如,在一个实施例中,解码器将所接收的指令解码为机器可以执行的被称为“微指令”或“微操作”(也被称为微op或uops)的一个或多个操作。在其它实施例中,解码器将指令解析为操作码和由微体系结构使用的相对应的数据和控制字段以根据一个实施例执行操作。在一个实施例中,追踪高速缓存230采用解码的uops,并将它们组合为在uop队列234中的程序有序序列或轨迹以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的uops。
一些指令被转换为单个微操作,而其它指令需要几个微操作来完成完整的操作。在一个实施例中,如果需要多于四个微操作来完成指令,则解码器228访问微代码ROM 232以进行指令。对于一个实施例,指令可以被解码为用于在指令解码器228处处理的少量微操作。在另一实施例中,指令可以存储在微代码ROM 232内,假定需要多个微操作来完成操作。追踪高速缓存230指入口点可编程逻辑阵列(PLA),以确定正确的微指令指针,以用于读取微代码序列从而根据一个实施例完成来自微代码ROM 232的一个或多个指令。在微代码ROM232完成指令的微操作排序之后,机器的前端201恢复从追踪高速缓存230取出微操作。
乱序执行引擎203是指令准备用于执行的位置。乱序执行逻辑具有多个缓冲器以使指令流趋于平滑并重新排序以优化性能,因为它们沿着流水线行进并被调度用于执行。分配器逻辑分配每一个uop需要的机器缓冲器和资源以便执行。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。分配器还为两个uop队列中的一个uop队列的每一个uop分配条目,一个用于存储器操作以及一个用于非存储器操作,在指令调度器的前面:存储器调度器、快速调度器202、慢速/通用浮点调度器204和简单浮点调度器206。uop调度器202、204、206基于其相关的输入寄存器操作数源的准备状态和uop需要来完成其操作的执行资源的可用性来确定uop何时准备执行。一个实施例的快速调度器202可以在主时钟周期的每一半上进行调度,而其它调度器可以每主处理器时钟周期调度一次。调度器仲裁分派端口以调度uop用于执行。
寄存器文件208、210位于调度器202、204、206和执行块211中的执行单元212、214、216、218、220、222、224之间。存在分别用于整数和浮点操作的单独的寄存器文件208、210。一个实施例的每一个寄存器文件208、210还包括旁路网络,所述旁路网络可以将还没有被写到寄存器文件中的刚刚完成的结果绕过或转发到新的相关的uop。整数寄存器文件208和浮点寄存器文件210也能够与其它传递数据。对于一个实施例,整数寄存器文件208分为两个单独的寄存器文件,一个寄存器文件用于数据的低位32位,以及第二寄存器文件用于数据的高位32位。一个实施例的浮点寄存器文件210具有128位宽条目,这是因为浮点指令一般具有在宽度上从64到128位的操作数。
执行块211包含执行单元212、214、216、218、220、222、224,在其中指令实际上被执行。所述部分包括存储微指令需要执行的整数和浮点数据操作值的寄存器文件208、210。一个实施例的处理器200由多个执行单元组成:地址生成单元(AGU)212、AGU 214、快ALU 216、快ALU 218、慢ALU 220、浮点ALU 222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD、和SSE、或其它操作。一个实施例的浮点ALU 222包括64位乘64位浮点除法器,以执行除法、平方根和余数微操作。对于本发明的实施例,可以使用浮点硬件来处理涉及浮点值的指令。在一个实施例中,ALU操作转到高速ALU执行单元216、218。一个实施例的快ALU 216、218可以以时钟周期一半的有效延迟来执行快操作。对于一个实施例,大部分复杂整数操作转到慢ALU 220,因为慢ALU 220包括用于长延迟类型的操作(例如,乘法、移位、标志逻辑和分支处理)的整数执行硬件。存储器加载/存储操作由AGU 212、214执行。对于一个实施例,在对64位数据操作数执行整数操作的上下文中描述了整数ALU 216、218、220。在可选的实施例中,ALU 216、218、220可以被实现为支持包括16、32、128、256等的各种数据位。类似地,浮点单元222、224可以被实现为支持具有各种宽度的位的一定范围的操作数。对于一个实施例,浮点单元222、224可以结合SIMD和多媒体指令在128位宽封装的数据操作数上操作。
在一个实施例中,uops调度器202、204、206在父加载完成执行之前分派相关的操作。因为uops在处理器200中被推测地调度和执行,处理器200还包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则可能在流水线的飞行中存在相关的操作,其给调度器留下暂时不正确的数据。重放机制跟踪并重新执行使用不正确的数据的指令。相关的操作应被重放,并且不相关的操作被允许完成。处理器的一个实施例的调度器和重放机制也被设计为捕获文本串比较操作的指令序列。
术语“寄存器”可以指用作指令的部分以识别操作数的机载处理器存储位置。换句话说,寄存器可以是从处理器的外部可用(从编程者的观点看)的那些寄存器。然而,寄存器的实施例不应在特定类型电路的意义上被限制。更确切地,实施例的寄存器能够存储并提供数据,并执行本文描述的功能。本文描述的寄存器可以使用任何数量的不同技术由处理器内的电路实现,例如,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器文件还包含用于封装的数据的八个多媒体SIMD寄存器。对于下面的讨论,寄存器被理解为被设计用于保存封装的数据的数据寄存器,例如,在使用来自Santa Clara,Californiad的Intel公司的MMXTM技术实现的微处理器中的64位宽MMX寄存器(在一些实例中也被称为“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中。因此,在寄存器中使用了所有可用的位。这个存储布置增加了处理器的存储效率。同样,使用所访问的16个数据元素,一个操作现在也可以在16个数据元素上并行地执行。
通常,数据元素是存储在单个寄存器或具有相同长度的其它数据元素的存储器位置上的单独的一条数据。在与SSEx技术有关的封装的数据序列中,存储在XMM寄存器中的数据元素的数量是128位除以单独数据元素的位的长度。类似地,在与MMX和SSE技术有关的封装的数据序列中,存储在MMX寄存器中的数据元素的数量是64位除以单独数据元素的位的长度。虽然图3A所示的数据类型是128位长,但是本发明的实施例也可以使用64位宽或其它尺寸的操作数来操作。这个示例的封装的字格式320是128位长并包含八个封装的字数据元素。每一个封装的字包含16位的信息。图3A的封装的双字格式330是128位长并包含四个封装的双字数据元素。每一个封装的双字数据元素包含32位的信息。封装的四字是128位长并包含两个封装的四字数据元素。
图3B示出了可选的寄存器中数据存储格式。每一个封装的数据可以包括多于一个的不相关的数据元素。示出了三个封装的数据格式:封装的半341、封装的单342和封装的双343。封装的半341、封装的单342和封装的双343的一个实施例包含定点数据元素。对于可选的实施例,封装的半341、封装的单342和封装的双343中的一个或多个可以包含浮点数据元素。封装的半341的一个可选实施例是128位长,包含八个16位数据元素。封装的单342的一个实施例是128位长并包含四个32位数据元素。封装的双343的一个实施例是128位长并包含两个64位数据元素。将认识到,这样的封装的数据格式可以进一步扩展到其它寄存器长度,例如,扩展到96位、160位、192位、224位、256位或更多。
图3C示出了根据本发明的一个实施例的在多媒体寄存器中的各种带符号和不带符号的封装的数据类型表示。不带符号的封装的字节表示344示出了在SIMD寄存器中的不带符号的封装的字节的存储。每一个字节数据元素的信息存储在字节零的位7到位0、字节一的位15到位8、字节二的位23到位16、和最后字节15的位120到位127中。因此,在寄存器中使用了所有可用的位。这个存储布置可以增加处理器的存储效率。同样,使用所访问的16个数据元素,一个操作现在也可以以并行的方式在16个数据元素上被执行。带符号的封装的字节表示345示出了带符号的封装的字节的存储。注意,每个字节数据元素的第8位是符号指示符。不带符号的封装的字表示346示出了字7到字0如何存储在SIMD寄存器中。带符号的封装的字表示347与不带符号的封装的字寄存器中表示346类似。注意,每一个字数据元素的第16位是符号指示符。不带符号的封装的双字表示348示出了双字数据元素如何被存储。带符号的封装的双字表示349与不带符号的封装的双字寄存器中表示348类似。注意,必要的符号位是每一个双字数据元素的第32位。
图3D是具有32或更多位的操作编码(操作码)格式360的一个实施例的描绘,并且寄存器/存储器操作数寻址模式与在intel.com/design/litcentr的万维网(www)上的从Santa Clara,CA的Intel公司可得到的“IA-32Intel Architecture Software Developer’s Manual Volume 2:Instruction Set Reference”中描述的一种类型的操作码格式相对应。在一个实施例中,以及指令可以由一个或多个字段361和362进行编码。每指令可以识别多达两个操作数位置,包括多达两个源操作数标识符364和365。对于一个实施例,目的操作数标识符366与源操作数标识符364相同,而在其它实施例中,它们是不同的。对于可选的实施例,目的操作数标识符366与源操作数标识符365相同,而在其它实施例中,它们是不同的。在一个实施例中,由源操作数标识符364和365识别的源操作数中的一个由文本串比较操作的结果覆写,而在其它实施例中,标识符364与源寄存器元素相对应,并且标识符365与目的寄存器元素相对应。对于一个实施例,操作数标识符364和365可以用于识别32位或64位源和目的操作数。
图3E是具有40或更多位的另一可选的操作编码(操作码)格式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)和移位字节指定的寄存器到寄存器、存储器到寄存器、寄存器乘存储器、寄存器乘寄存器、寄存器乘中间、寄存器到存储器寻址。
接着转到图3F,在一些可选的实施例中,可以通过协处理器数据处理(CDP)指令来执行64位单指令多数据(SIMD)算术操作。操作编码(操作码)格式380描绘具有CDP操作码字段382和389的一个这样的CDP指令。CDP指令的类型,对于可选的实施例,操作可以由字段383、384、387和388中的一个或多个进行编码。可以识别每指令多达三个操作数位置,包括多达两个源操作数标识符385和390以及一个目的操作数标识符386。协处理器的一个实施例可以在8、16、32和64位值上操作。对于一个实施例,在整数数据元素上执行指令。在一些实施例中,可以使用条件字段381有条件地执行指令。对于一些实施例,源数据尺寸可以由字段383编码。在一些实施例中,零(Z)、负(N)、进位(C)和溢出(V)检测可以在SIMD字段上完成。对于一些指令,饱和的类型可以由字段384编码。
接着转到图3G,其是根据另一实施例的用于提供SIMD地址冲突检测功能的另一可替换的操作编码(操作码)格式397的描绘,操作编码格式397与在intel.com/products/processors/manuals/的万维网(www)上的从Santa Clara,CA的Intel公司可得到的“ Advanced Vector Extensions Programming Reference”中描述的操作码格式的类型相对应。
为具有各种格式的地址字节和包含在额外字节中的立即操作数的1字节操作码提供原始x86指令集,额外字节的存在从第一“操作码”字节已知。此外,存在某些字节值,其被保留作为操作码的修改符(被称为前缀,因为它们必须被放置在指令之前)。当256个操作码字节(包括这些特殊前缀值)的原始调色板被用尽时,单个字节专门用作新的一组256个操作码的转义。当矢量指令(例如,SIMD)被添加时,生成对更多操作码的需要,并且“两字节”操作码映射也是不够的,即使当通过前缀的使用进行了扩展时。为此目的,在使用2个字节加上可选前缀作为标识符的额外的映射中添加了新指令。
此外,为了便于在64位模式中的额外寄存器,可以在前缀和操作码(和确定操作码所必需的任何转义字节)之间使用额外的前缀(被称为“REX”)。在一个实施例中,REX可以具有4个“有效载荷”位以指示在64位模式中的额外寄存器的使用。在其它实施例中,它可以具有比4位更少或更多的位。至少一个指令集的一般格式(其通常与格式360和/或格式370相对应)一般由下式示出:
[前缀][额外的前缀]转义[转义2]操作码modrm(等)
操作码格式397与操作码格式370相对应,并包括可选的VEX前缀字节391(在一个实施例中以C4hex开始)以代替大部分其它常用的旧版指令前缀字节和转义码。例如,下文示出了使用两个字段来对指令进行编码的实施例,该实施例可以在第二转义码存在于原始指令中时或在需要使用REX字段中的额外位(例如,XB和W字段)时使用。在下面示出的实施例中,旧版转义由新的转义值表示,旧版前缀被完全压缩为“有效载荷”字节的部分,旧版前缀被回收并可用于未来扩展,第二转义码在“映射”字段中被压缩,未来映射或特征空间是可用的,并且新的特征被添加(例如,增加的矢量长度和额外的源寄存器说明符)。
根据一个实施例的指令可以由一个或多个字段391和392进行编码。多达每指令四个操作数位置可以由字段391结合源操作数标识符374和375并结合可选的规模索引基(SIB)标识符393、可选的移位标识符394和可选的立即字节395进行识别。对于一个实施例,VEX前缀字节391可以用于识别32位或64位源和目的操作数和/或128位或256位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式397提供的功能可以与操作码格式370是重复的,而在其它实施例中,它们是不同的。操作码格式370和397允许部分地由MOD字段373并由可选的(SIB)标识符393、可选的移位标识符394、以及可选的立即字节395指定的寄存器到寄存器、存储器到寄存器、由存储器到寄存器、由寄存器到寄存器、由中间到寄存器、寄存器到存储器寻址。
接着转到图3H,其是根据另一实施例的提供SIMD地址冲突检测功能的另一可替换的操作编码(操作码)格式398的描绘。操作码格式398与操作码格式370和397相对应,并包括可选的EVEX前缀字节396(在一个实施例中以62hex开始)以代替大部分其它常用的旧版指令前缀字节和转义码并提供额外的功能。根据一个实施例的指令可以由字段396和392中的一个或多个进行编码。多达每指令四个操作数位置和掩码可以由字段396结合源操作数标识符374和375并结合可选的规模索引基(SIB)标识符393、可选的移位标识符394、和可选的立即字节395进行识别。对于一个实施例,EVEX前缀字节396可以用于识别32位或64位源和目的操作数和/或128位、256位或512位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式398提供的功能可以与操作码格式370或397是重复的,而在其它实施例中,它们是不同的。操作码格式398允许部分地由MOD字段373并由可选的(SIB)标识符393、可选的移位标识符394和可选的立即字节395指定的具有掩码的寄存器到寄存器、存储器到寄存器、由存储器到寄存器、由寄存器到寄存器、由中间到寄存器、寄存器到存储器寻址。至少一个指令集的一般格式(其通常与格式360和/或格式370相对应)一般由下式示出:
evex 1RXBmmmmm WvvvLpp evex4操作码modrm[sib][disp][imm]
对于一个实施例,根据EVEX格式398编码的指令可以具有可以用于提供具有额外的“有效载荷”位,所述额外的“有效载荷”位用于向SIMD地址冲突检测功能提供额外的新特征(例如,用户可配置的掩码寄存器或额外的操作数或从128位、256位或512位矢量寄存器当中的选择或要从其中进行选择的更多寄存器等)。例如,其中VEX格式397可以用于利用隐式掩码在安全飞地中进行中断和恢复分页,EVEX格式398可以用于利用显式用户可配置掩码在安全飞地中进行中断和恢复分页。附加地,其中VEX格式397可以用于在128位或256位向量寄存器上的安全飞地中进行中断和恢复分页,EVEX格式398可以用于在128位、256位、512位或更大的(或更小)向量寄存器上的安全飞地中进行中断和恢复分页。
提供包括在安全飞地中进行中断和恢复分页的高级分页能力的示例指令由如下示例示出:
应当意识到通过使用上述飞地指令以在安全飞地中进行中断和恢复分页,分页过程(例如,在其中,安全飞地页高速缓存存储器内容被加密和写回,从存储器加载新的页并进行解密,TLB条目被刷新和替换等)可以被分解为多个阶段,其中处理器核或逻辑处理器仅简单地在一个或多个阶段期间中断。因此由于分页过程的性能下降可以被降低,同时保证安全飞地数据的安全,而不需要过度的复杂度和设计劳动。
某些实施例包括多个硬件线程、逻辑处理器或处理核、飞地页高速缓存,其用于存储用于分配给安全飞地并可以由硬件线程、逻辑处理器或处理核访问的共享页地址的安全数据。EBLOCK指令的一个实施例指定共享页地址为操作数。一个或多个执行单元标记与共享页地址的飞地页高速缓存映射相对应的条目以阻止针对任何多个硬件线程、逻辑处理器或处理核创建新的TLB转换来访问共享页。ETRACK指令的一个实施例指定安全飞地作为操作数,并且一个或多个执行单元记录当前访问与安全飞地相对应的飞地页高速缓存中的安全数据的硬件线程。例如,在一个实施例中,飞地可以具有两个或更多个计数器,在本文被称为“时期”计数器,以记录当前访问安全飞地的当前时期中的安全数据的硬件线程的数量,然后复制该数字至最近的先前时期计数器并且利用无硬件线程将新的时期初始化为新的当前时期。在可替换的实施例中,EBLOCK&TRACK指令指定共享页地址作为操作数。一个或多个执行单元标记与用于共享页地址的飞地页高速缓存映射相对应的条目以阻止针对多个硬件线程、逻辑处理器或处理核中的任何一项创建新的TLB转换来访问共享页,并且记录当前访问与页存储器地址Addr1相对应的安全飞地的逻辑处理器或硬件线程,并且在任何退出安全飞地时递减逻辑处理器或硬件线程的数量。在一个或多个可替换的实施例中,时期计数器始终跟踪硬件线程、逻辑处理器或处理核执行或访问与安全飞地相关联的安全数据。
OS然后可以将内部处理器中断(IPI)发送至当前访问与安全飞地相对应的飞地页高速缓存中的安全数据的任何硬件线程、逻辑处理器或处理核。当前访问与安全飞地相对应的安全数据的每一个硬件线程、逻辑处理器或处理核,将利用指定安全飞地的EENTER或ERESUME指令进入安全飞地,并且此时时期数已经与硬件线程、逻辑处理器或处理核相关联。当硬件线程、逻辑处理器或处理核确认IPI并且退出安全飞地时,其一个或多个TLB转换被刷新。无论何时来自最近先前时期的硬件线程退出安全飞地(例如,利用EEXIT或AEX指令)时,最近先前时期计数器中的所记录的硬件线程的数量被递减。
当所记录的硬件线程的数量达到零时,OS收回一个或多个页、对数据进行加密、并将其写回存储器或非易失性存储装置是安全的。在一个实施例中,OS可以使用将共享页地址指定作为操作数的EWRITEBACK或EWB指令,以完成收回、对安全数据进行加密并将页写回非易失性存储装置。由于安全数据的飞地保护可能不能够信任OS,所以如果来自最近先前时期的所记录的硬件线程的数量未达到零,则EWRITEBACK或EWB指令的一个实施例可能失败。在其它可替换的实施例中,EWRITEBACK或EWB指令可以等待直到所记录的硬件线程的数量达到零以执行或产生异常。OS可以将空闲存储分配给安全飞地的新的页,并响应于将新的共享页地址指定作为操作数的ELOAD或ELD指令的一个实施例,对新页的安全数据进行解密。
此外,当安全飞地页高速缓存存储器内容被加密和写回,和/或新的页从存储器加载并进行解密时,作出前向进展,并且可以执行定期检查以确定是否有任何未决的中断。当有未决的中断时,分页操作的部分完成(例如,来自EWRITEBACK或EWB指令或来自ELOAD或ELD指令)可以记录在飞地页高速缓存映射条目中,并且可以存储页状态信息(例如,在相对应页的高速缓存行中,或在某些其他安全存储装置中)。然后,可以对中断进行服务,并且然后可以恢复相对应的分页操作(例如,分别利用EWRITEBACK恢复或EWBR指令或ELOAD恢复或ELDR指令)。因此可以保证加载和/或收回安全飞地的存储器页的前向进展,并且服务中的不可接受的差错(诸如,语音、视频和实时事务)可以通过及时地对未决的中断进行服务而避免。
应当意识到,可以仍由OS来管理管理许可、物理存储器和/或改变映射,但当保护存储器内容时,如在安全飞地中,OS不被允许或信任以访问飞地私有存储器的实际保护内容。在不能够信任OS的情况下,保证私有存储器内容的安全和/或完整性和管理利用有限数量的物理存储器以支持更大的、受保护的、飞地私有存储器空间的技术约束,可以以分级方式实现,其利用指令和处理逻辑以在安全飞地中进行中断和恢复分页,而不需要复杂的硬件支持和/或设计劳动。
图4A是示出了根据本发明的至少一个实施例的有序流水线和寄存器重命名级、乱序发出/执行流水线的框图。图4B是示出了根据本发明的至少一个实施例的包括在处理器中的有序架构核心和寄存器重命名逻辑、乱序发出/执行逻辑的框图。图4A中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、乱序发出/执行流水线。类似地,图4B中的实线框示出了有序架构逻辑,而虚线框示出了寄存器重命名逻辑和乱序发出/执行逻辑。
在图4A中,处理器流水线400包括取出级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也被称为分派或发出)级412、寄存器读取/存储器读取级414、执行级416、写回/存储器写级418、异常处理级422和提交级424。
在图4B中,箭头表示在两个或更多个单元之间的耦合,并且箭头的方向指示在那些单元之间的数据流的方向。图4B示出了包括耦合到执行引擎单元450的前端单元430的处理器核心490,并且这两个单元都耦合到存储器单元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重叠以示出寄存器重命名和乱序执行可以被实现的各种方式(例如,使用记录器缓冲器和引退寄存器文件,使用未来文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池;等等)。通常,架构寄存器从处理器的外部或从编程者的观点是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是适当的,只要它们能够存储并提供如本文描述的数据。适当的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元454和物理寄存器文件单元458耦合到执行群集460。执行群集460包括一个或多个执行单元162的集合和一个或多个存储器存取单元464的集合。执行单元462可以执行各种操作(例如,移位、加法、减法、乘法)并且针对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点)。虽然一些实施例可以包括专用于特定的功能或功能集合的多个执行单元,但是其它实施例可以包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元456、物理寄存器文件单元458和执行群集460被示为可能是多个,这是因为某些实施例针对某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/矢量整数/矢量浮点流水线、和/或存储器存取流水线,每一个流水线具有其自己的调度器单元、物理寄存器文件单元、和/或执行群集,并且在单独的存储器存取流水线的情况下,某些实施例被实现,其中只有这个流水线的执行群集具有存储器存取单元464)。也应理解,在单独的流水线被使用的场合,这些流水线中的一个或多个可以是乱序发出/执行,并且其余流水线是有序的。
所述存储器存取单元464的集合耦合到存储器单元470,存储器单元470包括耦合到数据高速缓存单元474的数据TLB单元472,数据高速缓存单元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指令集(具有添加有较新版本的一些扩展);Sunnyvale,CA的MIPS Technologies的MIPS指令集;Sunnyvale,CA的ARMHoldings的ARM指令集(具有额外的扩展例如,NEON))。
应理解,核心可以支持多线程(执行两组或更多组并行的操作或线程),并可以用各种方式这么做,包括时间分片多线程、同时多线程(其中单个物理核心为每一个线程提供逻辑核心,物理核心是同时多线程的)或其组合(例如,时间分片取出和解码和在下文例如在超线程技术中的同时多线程)。
虽然在乱序执行的上下文中描述了寄存器重命名,但是应理解,可以在顺序架构中使用寄存器重命名。虽然处理器的所示实施例还包括单独的指令和数据高速缓存单元434/474以及共享L2高速缓存单元476,但是可选的实施例可以具有用于指令和数据二者的单个内部高速缓存,例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。可替换地,所有高速缓存都可以在核心和/或处理器外部。
图5是根据本发明的实施例的单核处理器和具有集成存储器控制器和图形的多核处理器500的框图。图5中的实线框示出了具有单个核心502A、系统代理510、一个或多个总线控制器单元516的集合的处理器500,而虚线框的添加示出了具有多个核心502A-N、在系统代理单元510中的一个或多个集成存储器控制器单元514的集合、和集成图形逻辑508的可选的处理器500。
存储器层次结构包括在核心内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元506或共享高速缓存单元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中的两个或更多个可能能够执行相同的指令集,而其它核心可能能够执行该指令集的子集或不同的指令集。
处理器可以是通用处理器,例如,从Santa Clara,Calif的Intel公司可得到的CoreTM i3、i5、i7、2Duo和Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM处理器。可替换地,处理器可以来自另一公司,例如,ARM Holdings,Ltd、MIPS等。处理器可以是专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器可以在一个或多个芯片上实现。处理器500可以是一个或多个衬底的一部分和/或可以使用多种处理技术(例如,BiCMOS、CMOS或NMOS)中的任何在一个或多个衬底上实现。
图6-图8是适合于包括处理器500的示例性系统,而图9是可以包括核心502中的一个或多个的示例性芯片上系统(SoC)。对膝上型计算机、桌上型计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其它电子设备的领域公知的其它系统设计和配置也是适当的。通常,能够合并处理器和/或如本文公开的其它执行逻辑的种类繁多的系统或电子设备通常是适当的。
现在参考图6,示出了根据本发明的一个实施例的系统600的框图。系统600可以包括耦合到图形存储器控制器中心(GMCH)620的一个或多个处理器610、615。在图6中用虚线表示额外的处理器615的可选的性质。
每一个处理器610、615可以是处理器500的某个版本。然而,应注意,集成图形逻辑和集成存储器控制器单元不可能存在于处理器610、615中。图6示出了GMCH 620可以耦合到存储器640,存储器640可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 620可以是芯片组或芯片组的一部分。GMCH 620可以与处理器610、615通信,并控制在处理器610、615和存储器640之间的交互。GMCH 620也可以充当在处理器610、615和系统600的其它元件之间的加速总线接口。对于至少一个实施例,GMCH 620经由多分支总线(例如,前端总线(FSB)695)与处理器610、615通信。
此外,GMCH 620耦合到显示器645(例如,平板显示器)。GMCH 620可以包括集成图形加速器。GMCH 620进一步耦合到输入/输出(I/O)控制器中心(ICH)650,其可以用于将各种外围设备耦合到系统600。例如在图6的实施例中示出的是外部图形设备660,其可以是耦合到ICH 650连同另一外围设备670的分立的图形设备。
可替换地,额外或不同的处理器也可以存在于系统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所示,IMC 772和782将处理器耦合到可以是在本地附接到相应的处理器的主存储器的部分的相应的存储器,即存储器732和存储器734。
处理器770、780每一个可以经由单独的P-P接口752、754使用点对点接口电路776、794、786、798与芯片组790交换信息。芯片组790也可以经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可以包括在处理器中或在两个处理器的外部,然而经由P-P连接与处理器连接,使得如果处理器被置为低功率模式中,中的任一项或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。
芯片组790可以经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围部件互连(PIC)总线或诸如快速PCI总线或另一第三代I/O互连总线的总线,但是本公开的范围并不被如此限制。
如图7所示,各种I/O设备714可以耦合到第一总线716,连同将第一总线716耦合到第二总线720的总线桥718。在一个实施例中,第二总线720可以是低引脚计数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线720,所述各种设备包括例如键盘和/或鼠标722、通信设备727和存储单元728例如,磁盘驱动器或可以包括指令/代码和数据730的其它大容量存储设备。此外,音频I/O 724可以耦合到第二总线720。注意,其它架构是可能的。例如,不是图7的点对点架构,系统可以实现多分支总线或其它这样的架构。
现在参考图8,示出了根据本发明的实施例的第三系统800的框图。在图7和8中的相似元件承载相似的附图标记,并且图7的某些方面从图8省略,以便避免使图8的其它方面难理解。
图8示出了处理器870、880可以分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872、882可以包括集成存储器控制器单元,例如,上面关于图5和图7描述的集成存储器控制器单元。此外,CL 872、882还可以包括I/O控制逻辑。图8示出了不仅存储器832、834耦合到CL 872、882,以及I/O设备814也耦合到控制逻辑872、882。旧版I/O设备815耦合到芯片组890。
现在参考图9,示出了根据本发明的实施例的SoC 900的框图。图5中的相似元件承载相似的附图标记。此外,虚线框是在更高级的SoC上的可选的特征。在图9中,互连单元902耦合到:包括一个或多个核心502A-N的集合和共享高速缓存单元906的应用处理器910;系统代理单元910;总线控制器单元516;集成存储器控制器单元514;一个或多个媒体处理器920的集合,媒体处理器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包括CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、高清晰多媒体接口(HDMI)控制器1045、MIPI控制器1050、双数据率(DDR)控制器1060、安全引擎1065和I2S/I2C(集成芯片间声音/集成电路间)接口1070。其它逻辑和电路可以包括在图10的处理器中,所述其它逻辑和电路包括更多的CPU或GPU和其它外围接口控制器。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性数据实现,所述代表性数据表示处理器内的各种逻辑,所述代表性数据当由机器读取时,使所述机器制造逻辑以执行本文描述的技术。被称为“IP核心”的这样的表示可以存储在有形、机器可读介质(“带子”)上,并被应用到各种消费者或制造设施,以加载到实际制造逻辑或处理器的制造机器中。例如,IP核心(例如,由ARM Holdings,Ltd开发的CortexTM系列处理器和中国科学院的计算技术研究所(ICT)开发的Loongson IP核心)可以被许可或出售给各种消费者或许可证接受方(例如,Texas Instruments、Qualcomm、Apple、或Samsung),并在由这些消费者或许可证接受方生成的处理器中实现。
图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指令集核心1316的处理器自然地执行的x86二进制代码1306。具有至少一个x86指令集核心1316的处理器代表能够执行与具有至少一个x86指令集核心的Intel处理器实质上相同的功能的任何处理器,执行与具有至少一个x86指令集核心的Intel处理器实质上相同的功能可以通过兼容地执行或否则处理(1)Intel x86指令集核心的指令集的相当大的部分或(2)应用的对象代码版本或目标为在具有至少一个x86指令集核心的Intel处理器上运行的其它软件,以便实现与具有至少一个x86指令集核心的Intel处理器实质上相同的结果。x86编译器1304代表可操作用于生成x86二进制代码1306(例如,对象代码)的编译器,x86二进制代码1306可以在有或没有额外的链接处理的情况下在具有至少一个x86指令集核心1316的处理器上执行。类似地,图13示出了以高级语言1302的形式的程序可以使用可替换的指令集编译器1308进行编译,以生成可以由不具有至少一个x86指令集核心1314的处理器(例如,具有执行Sunnyvale,CA的MIPS Technologies的MIPS指令集和/或执行Sunnyvale,CA的ARM Holdings的ARM指令集的核心的处理器)自然地执行的可替换的指令集二进制代码1310。指令转换器1312用于将x86二进制代码1306转换为可以自然地由不具有x86指令集核心1314的处理器执行的代码。这个转换的代码不可能与可替换的指令集二进制代码1310相同,因为能够完成此的指令转换器难以制造;然而,所转换的代码将完成一般操作并由来自可选的指令集的指令构成。因此,指令转换器1312代表软件、固件、硬件或其组合,其通过模拟、仿真或任何其它过程允许不具有x86指令集核心处理器或核心的处理器或其它电子设备执行x86二进制代码1306。
图14示出了处理系统1401的一个实施例,用于利用指令来提供包括在安全飞地中进行中断和恢复分页的针对安全飞地页高速缓存EPC 1460的高级分页能力。系统1401包括系统存储器1490和处理器1402。处理器1402包含第一硬件线程或逻辑处理器1420,以及第二硬件线程或逻辑处理器1430。应当理解,尽管为简单起见将处理器1402示出为包括两个逻辑处理器,每一个表示单个硬件线程,但本发明不限于此。例如,处理器(诸如,处理器1402或本文示出的其他处理器)典型地具有某些逻辑处理器核,其可以共享或不共享某些物理资源(例如,EPC 1460)和或电路(例如,SE单元1470),每一个逻辑处理器或处理器核具有能够同时或并发执行软件线程的多个硬件线程。
处理器1402还包括安全飞地(SE)单元1470和飞地页高速缓存EPC 1460。对于某些实施例,EPC 1460可以为更大的高速缓存单元的一部分,例如,一个或多个一级高速缓存1440和1450或二级高速缓存(未示出)。对于其他实施例,EPC 1460可以为独立的结构或分布式结构(例如,高速缓存1440和高速缓存1450),其由多个硬件线程、逻辑处理器或处理核共享,以存储分配给安全飞地并由硬件线程、逻辑处理器或处理核可访问的用于共享页的地址1442、1444和1456的安全数据。
类似地,SE单元1470可以包括由多个硬件线程、逻辑处理器或处理核共享的独立的结构或分布式结构(例如,SE单元1427和1437),具有加密单元、完整性保护单元、访问控制单元、范围寄存器、飞地页高速缓存映射、以及两个或更多个时期计数器存储位置,以存储至少先前时期和当前时期。SE单元1470还支持飞地指令以在安全飞地中进行中断和恢复分页。
在该示例中,逻辑处理器1420具有解码级1422、读取级1424、一个或多个执行单元(例如,执行单元1426)和写入级1428。逻辑处理器1420还具有TLB 1425,在其中可以建立转换来访问EPC 1460。逻辑处理器1430具有解码级1432、读取级1434、一个或多个执行单元(例如,执行单元1436)和写入级1438。逻辑处理器1430还具有TLB 1435,在其中可以建立转换来访问EPC 1460。逻辑处理器的实施例1420和1430还可以包括其他管线级(例如,管线400所示出的),以用于执行飞地指令以针对安全飞地页高速缓存EPC 1460提供高级分页能力。逻辑处理器1420和1430的实施例还可以支持飞地指令,以在安全飞地中进行中断和恢复分页。
应当意识到,通过使用包括在安全飞地中进行中断和恢复分页的指令的飞地指令,分页过程(例如,在其中安全飞地页高速缓存存储器内容被加密和写回,新的页从存储器加载并进行解密,TLB条目被刷新和替换等)可以分解为级,其中处理器核或逻辑处理器(例如,逻辑处理器1420和1430)仅简单地在一个或多个级期间中断。因此由于分页过程的性能下降可以被降低,同时保证安全飞地数据的安全而不需要过度的复杂度和设计劳动。此外,当安全飞地页高速缓存存储器内容被加密和写回,和/或新的页从存储器加载并进行解密时,做出前向进展,并且执行定期检查,以确定是否有任何未决的中断。当存在未决的中断时,可以将分页操作的部分完成记录在飞地页高速缓存映射条目中,并且可以存储页状态信息(例如,在相对应页的高速缓存行中或在某些其他安全存储装置中)。然后可以对中断进行服务,并且然后可以恢复相对应的分页操作。因此保证加载和/或收回针对安全飞地的存储器页的前向进展,并且服务中不可接受的差错(诸如,语音,视频和实时事务)通过及时地对任何未决中断进行服务来避免。
在一个实施例中,EBLOCK指令指定共享页的地址(例如,页1442)作为操作数。一个或多个执行单元(例如,执行单元1426)标记与共享页地址的飞地页高速缓存映射相对应的条目,以阻止针对多个硬件线程、逻辑处理器或处理核的任何创建新的TLB转换(例如在TLB1435中)来访问共享页。在一个实施例中,ETRACK指令指定安全飞地作为操作数,并且一个或多个执行单元(例如,执行单元1426)记录当前访问与安全飞地相对应的飞地页高速缓存EPC 1460中的安全数据的硬件线程。例如,在一个实施例中,飞地可以具有两个或更多个时期计数器,以记录当前访问安全飞地中的当前时期的安全数据的硬件线程的数量,然后将该数量复制到最近先前时期计数(例如,响应于ETRACK指令)并将没有硬件线程的新的时期初始化为新的当前时期。
OS然后可以将IPI发送至当前访问在与安全飞地相对应的飞地页高速缓存中的安全数据的任何硬件线程、逻辑处理器或处理核。在一个实施例中,当前访问与安全飞地相对应的安全数据的每一个硬件线程、逻辑处理器或处理核(例如,逻辑处理器1420和1430)将利用指定安全飞地的EENTER或ERESUME指令进入安全飞地,并且此时时期数量将与硬件线程、逻辑处理器或处理核相关联。当硬件线程、逻辑处理器或处理核确认IPI并退出安全飞地时,其一个或多个TLB转换被刷新(例如,从TLB 1425和/或TLB 1435)。无论何时来自最近先前时期的硬件线程退出安全飞地(例如,利用EEXIT或AEX指令),最近先前时期计数器中所记录的硬件线程的数量被递减。
当所记录的硬件线程的数量达到零时,OS收回一个或多个页(例如,页1442)、对数据进行加密、并将其写回存储器(例如,作为加密页1495)或非易失性存储装置是安全的。在一个实施例中,OS可以使用EWRITEBACK或EWB指令,其指定共享页(例如,页1442)的地址作为操作数,以便完成收回、对安全数据进行加密并将页写回到存储器或非易失性存储装置。由于安全数据的飞地保护不能够信任OS,如果来自最近先前时期的所记录的硬件线程的数量未达到零,则EWRITEBACK或EWB指令的一个实施例可能失败。在其它可替换的实施例中,EWRITEBACK或EWB指令可以等待直到所记录的硬件线程的数量达到零以执行或可以导致异常。在一个实施例中,OS然后可以使用ELOAD指令从存储器或非易失性存储装置中读取新的页(例如,页1410),解密数据并将解密的页存储在EPC 1460中。因此分页过程(例如,其中安全飞地页高速缓存存储器内容被加密和写回,新的页从存储器加载和解密,TLB条目被刷新和替换等。)可以分解为级,其中处理器核或逻辑处理器(例如,逻辑处理器1420和1430)仅简单地在一个或多个级期间中断(例如,通过IPI)。
当安全飞地页高速缓存存储器内容被加密和写回时,和/或新的页从存储器加载和被解密时,做出前向进展,并且可以执行定期检查以确定是否有任何未决中断。当有未决中断时,分页操作的部分完成(例如,来自EWRITEBACK或EWB指令,或来自ELOAD或ELD指令)可以记录在飞地页高速缓存映射条目中,并且页状态信息可以存储在用于相对应页的合适的未使用高速缓存行(或在某些其他安全存储装置)中。然后可以对中断进行服务,并且可以恢复相对应的分页操作(例如,分别利用EWRITEBACK恢复或EWBR指令,或ELOAD恢复或ELDR指令)。因此可以保证加载和/或收回用于安全飞地的存储器页的前向进展,并且服务中的不可接受的差错(诸如,语音、视频和实时事务)可以通过及时地对未决中断进行服务而避免。
图15示出了处理器1501的装置的实施例,所述装置用于利用指令来向安全飞地页高速缓存提供包括在安全飞地中进行中断和恢复分页的高级分页能力。该装置包括安全飞地(SE)单元1502和飞地页高速缓存EPC 1520。对于某些实施例,EPC 1520可以为更大高速缓存单元的一部分,例如,一级高速缓存,L1 1540或二级高速缓存(未示出)。对于其它实施例,EPC 1520可以为独立的结构或分布式结构,其由多个硬件线程、逻辑处理器或处理核共享,以存储被分配给安全飞地并由硬件线程、逻辑处理器或处理核可访问的共享页1542的地址的安全数据。SE单元1502可以包括加密单元1510、完整性保护单元1512、访问控制单元1514、范围寄存器1516、飞地页高速缓存映射EPC 1518和两个或更多个时期计数器存储位置:先前时期,PE 1517和当前时期,CE 1519。SE单元1502还可以包括飞地指令1503,其包括:EBLOCK指令1531、ETRACK指令1532、EWB指令1533、ELOAD指令1534、EEXIT指令1535、EENTER指令1536、EWBR(或EWRITEBACK恢复)指令1537、ELOADR(或ELOAD恢复或ELDR)指令1538和其他飞地指令,未示出(例如,AEX指令、ERESUME指令等。)。
处理器核1501还包括TLB 1525,其中可以建立转换以访问EPC 1520。处理器核1501还包括解码级1522、读取级1524、一个或多个执行单元(例如,执行单元1526)和写入级1528。处理器核1501的实施例还可以包括其他管线级(如管线400所示),以用于执行飞地指令1503以提供包括在安全飞地页高速缓存EPC 1520中进行中断和恢复分页的高级分页能力。
在一个实施例中,EBLOCK指令1531指定共享页1542地址作为操作数。一个或多个执行单元(例如,执行单元1526)标记与用于共享页1542的地址的EPCM 1518中飞地页高速缓存映射相对应的条目,以阻止针对硬件线程、逻辑处理器或处理核生成新的TLB转换(例如,在TLB 1525中或在其他任何TLB中)来访问共享页。在一个实施例中,ETRACK指令1532指定安全飞地作为操作数,并且一个或多个执行单元(例如,执行单元1526或访问控制单元1514)记录当前访问与安全飞地相对应的飞地页高速缓存EPC 1520中的安全数据的硬件线程。例如,在一个实施例中,飞地可以具有两个或更多个时期计数器(例如,在PE 1517中和在CE 1519中),以记录正在访问在安全飞地的当前时期中的安全数据(例如,在CE 1519中)的硬件线程的数量,然后将该数字复制到最近先前时期计数器(例如,在PE 1517中),并且利用无硬件线程将新的时期初始化为新的、当前时期(例如,在CE 1519中)。
OS然后可以将IPI发送至当前访问与安全飞地相对应的飞地页高速缓存EPC 1520中的安全数据的任何硬件线程、逻辑处理器或处理核。当前访问与安全飞地相对应的安全数据的每一个硬件线程、逻辑处理器或处理核将利用指定安全飞地的EENTER(或ERESUME)指令1536进入安全飞地,并且此时时期数量将与硬件线程、逻辑处理器或处理核相关联。当硬件线程、逻辑处理器或处理核确认IPI并退出安全飞地时,其一个或多个TLB转换被刷新(例如,从TLB 1525)。无论何时来自最近先前时期的硬件线程(例如,与PE 1517相对应)利用EEXIT(或AEX)指令1535退出安全飞地时,最近先前时期计数器(例如,在PE 1517中)中的所记录的硬件线程的数量被递减。
当所记录的硬件线程的数量(例如,在PE 1517中)达到零时,OS收回一个或多个页(例如,共享页1542)、对数据进行加密,并且写回存储器或非易失性存储装置是安全的。在一个实施例中,OS可以使用指定共享页1542的地址作为操作数的EWB(或EWRITEBACK)指令1533,以完成收回、对安全数据进行加密并将页1542写回非易失性存储装置。由于安全数据的飞地保护可能不能够信任OS,所以如果来自最近先前时期(例如,在PE 1517中)的所记录的硬件线程的数量未达到零,则EWB指令1533的一个实施例可能失败。在其它可替换的实施例中,EWB指令1533可以等待直到所记录的硬件线程的数量(例如,在PE 1517中)达到零以执行,或EWB指令1533可以导致异常。在将页1542收回、加密和写回到非易失性存储装置完成之后,可以执行ELD(或ELOAD)指令1534,在一个实施例中,指定新的共享页地址作为操作数。
在安全飞地页高速缓存存储器内容(例如,共享页1542)被加密和写回时,和/或在新的页从存储器加载和解密时,做出前向非中断进展,并且可以执行定期检查以确定是否有任何未决中断。当有未决中断时,可以在飞地页高速缓存映射条目中记录分页操作的部分完成(例如,来自EWRITEBACK或EWB指令1533,或来自ELOAD或ELD指令1534),并且页状态信息可以存储在用于相对应页的高速缓存行,例如,在共享页1542中(或在某些其他安全存储装置中)。在某些实施例中,页状态信息可以包括用于记录在指令执行的部分完成之后恢复的位置的指针。在某些实施例中,页状态信息可以存储在相对应页的第一高速缓存行(例如,来自EWRITEBACK或EWB指令1533,或同样来自EWRITEBACK恢复或EWBR指令1537)。在某些实施例中,页状态信息可以存储在相对应页的最后的高速缓存行(例如,来自ELOAD或ELD指令1534,或同样来自ELOAD恢复或ELDR指令1538)。然后可以对中断进行服务,并且之后可以恢复相对应的分页操作(例如,分别利用EWRITEBACK恢复或EWBR指令1537,或ELOAD恢复或ELDR指令1538)。因此可以保证加载和/或收回用于安全飞地的存储器页的前向进展,并且服务中的不可接受的差错(诸如,语音、视频和实时事务)可以由于及时地服务未决中断而避免。
应当意识到仍可以由OS管理管理许可、物理存储器和/或改变映射,但当存储器内容被保护时,如在安全飞地中,OS不被允许或信任以访问飞地私有存储器的实际保护内容。保证私有存储器内容的安全和/或完整性和管理利用有限数量的物理存储器(例如,EPC1520或EPC 1460)来支持更大的、受保护的、飞地私有存储器空间,而不能够信任OS的技术约束,可以以分级方式实现,利用指令和处理逻辑以在安全飞地中进行中断和恢复分页,而不需要复杂的硬件支持和/或设计劳动。在安全飞地页高速缓存存储器内容被加密和写回,和/或新的页从存储器加载和解密时,做出前向进展,并且可以执行定期检查以确定是否有任何未决中断。当有未决中断时,分页操作的部分完成可以记录在飞地页高速缓存映射条目中,并且可以存储页状态信息(例如,在相对应页的高速缓存行中,或在某些其他安全存储装置中)。然后可以对中断进行服务,并且之后相对应的分页操作可以恢复。因此保证了加载和/或收回安全飞地的存储器页的前向进展,并且服务中的不可的接受差错(诸如,语音、视频和实时事务)通过及时地对任何未决的中断进行服务来避免。
图16A示出了用于提供包括在安全飞地中进行中断和恢复分页的高级分页能力的过程1601的一个实施例的流程图。本文公开的过程1601和其他过程由处理框执行,所述处理框可以包括由通用机器或由专用机器或由两者的组合可执行的专用的硬件或软件或固件操作代码。
在过程1601的处理框1610,创建安全飞地,以保护私有数据和/或指令。在处理框1620,EPC页被分配给安全飞地。在处理框1625,确定是否需要分页。如果否,则在处理框1620,EPC页继续被分配给安全飞地,其中安全数据可以存储在用于分配给由在安全飞地中执行的多个硬件线程可访问的共享页地址的EPC行。另外,在处理框1630中,一个或多个EBLOCK指令被执行,在一个实施例中,每一个EBLOCK指令指定共享页地址作为操作数。在处理框1640中,ETRACK指令被执行,在一个实施例中,ETRACK指令指定安全飞地。在处理框1650中,IPI被发送至在安全飞地中执行的每一个逻辑处理器,以使其退出安全飞地。每一个逻辑处理器的中断处理器继而可以确认IPI。对IPI的确认在处理框1660验证,并且在处理框1665确定是否所有IPI已确认。如果否,处理在处理框1660继续,但如果所有IPI已确认,则过程进行到处理框1670。在处理框1670,一个或多个EWB指令被执行,在一个实施例中,每一个EWB指令指定阻止的共享页地址中的一个作为操作数。在处理框1680,一个或多个ELOAD指令被执行,在一个实施例中,每一个ELOAD指令指定新的共享页地址作为操作数。然后在处理框1625过程开始重新迭代。在安全飞地页高速缓存存储器内容被加密和写回(例如,在处理框1670中)时,和/或在新的页从存储器加载和解密(例如,在处理框1680中)时,可以做出前向非中断进展,并且可以执行定期检查以确定是否有任何未决中断。当有未决中断时,分页操作的部分完成可以记录在飞地页高速缓存映射条目中,并且可以存储页状态信息的一部分(例如,在相对应页的高速缓存行中,或在某些其他安全存储装置中)。在某些实施例中,页状态信息的一部分可以存储在相对应页的第一高速缓存行(例如,在EWRITEBACK或EWB指令期间,而且也在EWRITEBACK恢复或EWBR指令期间)。在某些实施例中,页状态信息的一部分可以存储在相对应页的最后的高速缓存行中(例如,在ELOAD或ELD指令期间,并且也在ELOAD恢复或ELDR指令期间)。在某些实施例中,页状态信息的一部分可以包括用于记录在指令执行的部分完成之后恢复的位置的指针。然后可以对中断进行服务,并且相对应的分页操作可以恢复(例如,分别利用EWRITEBACK恢复或EWBR指令,或ELOAD恢复或ELDR指令)。在某些实施例中,对安全飞地中不完整或部分完整的页的任何其他访问可以导致飞地页错误和/或不完整或部分完整分页操作的恢复。在某些实施例中,对安全飞地中不完整或部分完整的页的任何其他访问还可以记录在相对应的不完整或部分完整页的一个或多个高速缓存行中。
图16B示出了用于在安全飞地中进行中断和恢复分页的过程1607的一个实施例的流程图。在处理框1671中,EWB(或EWRITEBACK)指令开始在要被加密和写回的页上执行分页操作。在处理框1672中,在写回分页操作中做出前向非中断进展。在处理框1673中,可以执行定期检查,以确定写回分页操作是否完成,其中过程进行到处理框1678或否则在处理框1674确定是否有任何未决中断。如果否,处理在处理框1672继续。当有未决中断时,过程进行到处理框1675,其中写回分页操作的状态被建立检查点(例如,分页操作的部分完成可以记录在飞地页高速缓存映射条目中,并且页状态信息的一部分可以存储在相对应页的高速缓存行中或在某些其他安全存储装置中等)。在处理框1676中,询问代码用于返回(例如,指示可以对中断进行服务)。在处理框1690中,对中断进行服务,并且在处理框1677中,写回分页操作利用存储的检查点状态信息(作为一个实施例,例如在相对应页的第一高速缓存行中)在要被加密和写回的页中恢复(例如,通过执行EWRITEBACK恢复或EWBR指令)。处理然后在处理框1672开始重新迭代,直到在处理框1673中,写回分页操作已完成并且写回分页操作(例如,来自执行EWB或EWRITEBACK,EWRITEBACK恢复或EWBR指令)在处理框1678结束。
图16C示出了用于在安全飞地中进行中断和恢复分页的过程1608的另一实施例的流程图。在处理框1681中,ELOAD(或ELD)指令开始在要从存储器加载和解密的页上执行分页操作。在处理框1682中,在页加载操作中做出前向非中断进展。在处理框1683中,可以执行定期检查以确定页加载操作是否完成,其中过程进行到处理框1688,或否则在处理框1684确定是否有任何未决中断。如果否,则处理在处理框1682继续。当有未决中断时,过程进行到处理框1685,其中对页加载操作的状态建立检查点(例如,分页操作的部分完成可以记录在飞地页高速缓存映射条目中,并且页状态信息的一部分可以存储在相对应的页的高速缓存行中或在某些其他安全存储装置中)。在处理框1686中,询问代码被返回(例如,指示可以对中断进行服务)。在处理框1690中,对中断进行服务,并且在处理框1687中页加载操作利用存储的检查点状态信息(作为一个实施例,例如在相对应页的最后的高速缓存行中)在要从存储器加载和解密的页上恢复(例如,通过执行ELOAD恢复或ELDR指令)。然后处理在处理框1682开始重新迭代,直到在处理框1683中,页加载操作已完成并且页加载操作(例如,从执行ELD或ELOAD,ELOADR ESUME或ELDR指令)在处理框1688结束。
因此,在安全飞地页高速缓存存储器内容被加密和写回时,和/或新的页从存储器加载并解密时,可以做出前向非中断进展,并且可以执行定期检查以确定是否有任何未决中断。只要有未决中断,分页操作的部分完成可以记录在飞地页高速缓存映射条目中,并且页状态信息可以存储在高速缓存行中(或在某些其他安全位置中)以恢复针对相对应页的分页操作。然后可以对中断进行服务,并且然后相对应的分页操作可以利用存储的页状态信息恢复。因此保证了加载和/或收回安全飞地的存储器页的前向进展,并且服务中的不可接受的差错(诸如,语音、视频和实时事务)通过及时地对任何未决中断进行服务而避免。
图17示出了用于向安全飞地页高速缓存提供高级分页能力的过程1701的可替换的实施例的流程图。在过程1701的处理框1710中,针对共享页来标记条目(例如,响应于指定共享页地址作为操作数的EBLOCK指令),以阻止在任何TLB中生成新的转换。在处理框1720中,记录当前访问安全飞地中的安全数据的硬件线程、逻辑处理器或处理核(例如,响应于指定安全飞地作为操作数的ETRACK指令)。在处理框1730中,当任何线程退出安全飞地(例如,利用EEXIT或AEX指令)时,所记录的线程的数量递减。在处理框1735中,确定线程的记录数量现在是否为零。如果否,过程在处理框1730继续,但如果线程的记录数量现在为零,则过程进行到处理框1740。在处理框1740中,共享页的安全数据被收回,并且在处理框1750中,收回的共享页的安全数据被加密(例如,响应于指定共享页地址作为操作数的EWRITEBACK或EWB指令)。然后在处理框1760中,收回的共享页的加密的安全数据被写回存储器或非易失性存储装置。在处理框1770中,空闲存储被分配给安全飞地的新页。在处理框1780中,新页的安全数据被解密(例如,响应于指定新的共享页地址作为操作数的ELOAD或ELD指令)。如上所示,当安全飞地页内容被加密和写回时,和/或新的页从存储器加载和解密时,可以做出前向非中断进展,并且可以执行定期检查,以确定是否有任何未决中断。当有未决中断时,分页操作的部分完成可以记录在飞地页高速缓存映射条目中,并且页状态信息可以存储在高速缓存行(或在某些其他安全存储装置)中,以恢复针对相对应的页的分页操作。然后可以对中断进行服务,并且然后相对应的分页操作可以利用存储的页状态信息来恢复(例如,分别响应于EWRITEBACK恢复或EWBR指令,或ELOAD恢复或ELDR指令。
图18A示出了用于提供包括在安全飞地中进行中断和恢复分页的高级分页能力的过程1801的另一实施例的流程图。在过程1801的处理框1810中,多个硬件线程被执行(例如,在多线程处理器中)。在处理框1808中,安全数据存储在分配给由多个线程可访问的安全飞地的共享页的高速缓存中。在过程1802的处理框1830中,对EBLOCK指令进行解码,在一个实施例中,EBLOCK指令指定共享页地址作为操作数。在处理框1840中,针对共享页来标记条目,以阻止在任何TLB中生成新的转换。在处理框1850中,当前访问安全飞地中的安全数据的硬件线程、逻辑处理器或处理核被记录。在过程1803的处理框1860中,ETRACK指令被解码,在一个实施例中,ETRACK指令指定安全飞地作为操作数。在处理框1870中,当任何线程退出安全飞地(例如,利用EEXIT或AEX指令)时,记录的线程数量被递减。在处理框1880确定线程的记录数量现在是否为零。如果否,过程在处理框1870继续,但如果线程的记录数量现在为零,则过程进行到处理框1807。在处理框1807,共享页的安全数据被换出页面至存储器或非易失性存储装置(例如,响应于指定共享页地址作为操作数的EWRITEBACK或EWB指令)。
通过使用飞地指令来提供包括在安全飞地中进行中断和恢复分页的高级分页能力,分页过程(例如,其中安全飞地页高速缓存存储器内容被加密和写回、新的页从存储器加载和解密、TLB条目被刷新和替换等)可以分解为级,其中处理器核或逻辑处理器仅简单地在一个或多个级期间中断。因此由于分页过程导致的性能下降可以被降低,同时保证安全飞地数据的安全而不需要过度的复杂度和设计劳动。在安全飞地页内容被加密和写回时,和/或新的页从存储器加载和解密时,可以保证前向非中断进展,并且可以执行定期检查以确定是否有任何未决中断。当有未决中断时,分页操作的部分完成可以记录在飞地页高速缓存映射条目中,并且页状态信息可以存储在高速缓存行中(或在某些其他安全存储装置中),以恢复相对应的页的分页操作。在某些实施例中,页状态信息可以至少包括用于记录在指令执行的部分完成之后恢复的位置的指针。然后可以对中断进行服务,并且之后相对应的分页操作可以利用存储的页状态信息(例如,分别响应于EWRITEBACK恢复或EWBR指令,或ELOAD恢复或ELDR指令)恢复。
图18B示出了用于提供包括在安全飞地中进行中断和恢复分页的高级分页能力的过程1804的另一实施例的流程图。在过程1804的处理框1810中,多个硬件线程被执行(例如,在多线程处理器中)。在处理框1808中,安全数据被存储在分配给由多个线程可访问的安全飞地的共享页的高速缓存中。在过程1805的处理框1830中,EBLOCK指令被解码,在一个实施例中,EBLOCK指令指定共享页地址作为操作数。在处理框1840中,针对共享页来标记条目,以阻止在任何TLB中生成新的转换。在过程1806的处理框1860中,ETRACK指令被解码,在一个实施例中,ETRACK指令指定安全飞地作为操作数。在处理框1850中当前访问安全飞地中的安全数据的硬件线程、逻辑处理器或处理核被记录。在处理框1870中,当任何线程退出安全飞地(例如,利用EEXIT或AEX指令)时,记录的线程的数量被递减。在处理框1880中,确定记录的线程的数量现在是否为零。如果否,则过程在处理框1870继续,但如果记录的线程的数量现在为零,则过程进行到处理框1807。在处理框1807,共享页的安全数据被换出页面到存储器或非易失性存储装置(例如,响应于指定共享页地址作为操作数的EWRITEBACK或EWB指令)。可以执行定期检查以确定是否有任何未决中断。当有未决中断时,分页操作的部分完成可以记录在飞地页高速缓存映射条目中,并且页状态信息可以存储在高速缓存行中(或在某些其他安全存储装置中),以恢复针对相对应的页的分页操作。然后可以对中断进行服务,并且然后相对应的分页操作可以利用存储的页状态信息(例如,分别响应于EWRITEBACK恢复或EWBR指令,或ELOAD恢复或ELDR指令)恢复。
图18C示出了用于在安全飞地中进行中断和恢复分页的过程1807的实施例的流程图。在处理框1817中,EWB(或EWRITEBACK)指令被解码,在一个实施例中,EWB(或EWRITEBACK)指令针对要被加密和写回的页指定页地址作为操作数。在处理框1827中,做出前向非中断进展,对该页的加密的数据进行页面换出并执行写回操作到存储器或非易失性存储装置。在处理框1837,可以执行定期检查以确定如果对加密的数据进行页面换出和执行写回操作已完成,则在此情况下过程进行到处理框1887或否则在处理框1847确定是否有任何未决中断。如果否,则过程在处理框1827继续。当有未决中断时,处理进行到处理框1857,其中对分页操作的部分完成的指示被设置在飞地页高速缓存映射条目中,并且在处理框1867,页状态信息的一部分被记录在相对应的页地址的第一高速缓存行中。在某些实施例中,询问代码可以被返回(例如,指示可以对中断进行服务)。在处理框1890,对中断进行服务,并且在处理框1877,EWBR(或EWRITEBACK恢复)指令被解码,在一个实施例中,EWBR(或EWRITEBACK恢复)指令针对利用记录的页状态信息的一部分(例如,在相对应页的第一高速缓存行中)恢复被加密和写回的页来指定页地址作为操作数。然后处理在处理框1827重新开始,直到在处理框1837,对加密的数据进行页面换出和执行写回操作已完成,并且对加密的数据进行页面换出和执行写回到存储器或非易失性存储装置(例如,从执行EWB或EWRITEBACK,EWRITEBACK恢复或EWBR指令)在处理框1887结束。
图18D示出了用于在安全飞地中进行中断和恢复分页的过程1808的另一实施例的流程图。在处理框1818,ELOAD(或ELD)指令被解码,在一个实施例中,ELOAD(或ELD)指令针对分配给安全数据要被加载的安全飞地的页指定页地址作为操作数。在处理框1828,做出前向非中断进展,加载分配给安全飞地的页的安全数据。在处理框1838,可以执行定期检查以确定对分配给安全飞地的页的安全数据的加载是否已完成,在此情况下过程进行到处理框1888或否则在处理框1848确定是否有任何未决中断。如果否,则过程在处理框1828继续。当有未决中断时,过程进行到处理框1858,其中对分页操作的部分完成的指示设置在飞地页高速缓存映射条目中,并且在处理框1868,页状态信息的一部分记录在相对应的页地址的最后的高速缓存行。在某些实施例中,询问代码可以被返回(例如,指示可以对中断进行服务)。在处理框1890,对中断进行服务,并且在处理框1878,ELDR(或ELOAD恢复)指令被解码,在一个实施例中,ELDR(或ELOAD恢复)指令针对利用记录的页状态信息的一部分(例如,在相对应的页的最后的高速缓存行中)恢复加载分配给安全飞地的页的安全数据的页,指定页地址作为操作数。然后处理在处理框1828重新开始迭代,直到在处理框1838,加载分配给安全飞地的页的安全数据已完成,并且加载分配给安全飞地的页的安全数据(例如,从执行ELD或ELOAD,ELOAD恢复或ELDR指令)在处理框1888结束。
因此仍可以由OS来管理管理许可、物理存储器和/或改变映射,但OS不被允许或信任以访问飞地私有存储器的实际保护内容。保证私有存储器内容的安全和/或完整性和管理利用有限数量的物理存储器支持更大的、受保护的、飞地私有存储器空间的技术约束,可以以分级的方式实现,其利用指令和处理逻辑以在安全飞地中进行中断和恢复分页,而不需要精细的硬件支持和/或设计劳动。此外,在安全飞地页高速缓存存储器内容被加密和写回时和/或新的页从存储器加载和解密时,做出前向进展,并且执行定期检查以确定是否有任何未决中断。当有未决中断时,分页操作的部分完成可以记录在飞地页高速缓存映射条目中,并且可以存储页状态信息(例如,在相对应的页的高速缓存行中或在某些其他安全存储装置中)。然后可以对中断进行服务,并且然后相对应的分页操作可以恢复。因此保证了加载和/或收回安全飞地的存储器页的前向进展,并且服务中的不可接受的差错(诸如,语音、视频和实时事务)通过及时地针对任何未决中断进行服务而避免。
应当意识到,被示出以特定顺序执行的过程块还可以以另一顺序、或并发地、或与其它平行地、如果可能在过程1804的一些可替换的实施例中、以及在本文所公开的其它过程中执行。
本文公开的机制的实施例可以在硬件、软件、固件或这样实现的方法的组合中实现。本发明的实施例可以被实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的可编程系统上执行的计算机程序或程序代码。
程序代码可以应用于输入指令以执行本文描述的功能并生成输出信息。输出信息可以用已知的方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器(例如,数字信号处理器(DSP))、微控制器、专用集成电路(ASIC)或微处理器的任何系统。
程序代码可以以高级程序或面向对象的编程语言实现,以与处理系统进行通信。如果需要,也可以以汇编或机器语言来实现程序代码。事实上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令实现,所述代表性指令代表在处理器内的各种逻辑,当由机器读取时,使机器制造逻辑以执行在本文中描述的技术。被称为“IP核心”的这样的表示可以存储在有形、机器可读介质上并被提供到各种消费者或制造设施,以加载到实际上制造逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的制品的非暂时性、有形布置,包括存储介质,例如,硬盘、任何其它类型的盘,包括软盘、光学盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘、半导体器件,例如,只读存储器(ROM)、随机存取存储器(RAM),例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、或适合于存储电子指令的任何其它类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(例如,硬件描述语言(HDL))的非暂时性、有形机器可读介质,其定义了本文描述的结构、电路、装置、处理器和/或系统特征。这样的实施例也可以被称为程序产品。
在一些情况下,指令转换器可以用于将指令从源指令集转换成目标指令集。例如,指令转换器可以将指令转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、仿真或否则转换成由核心处理的一个或多个其它指令。指令转换器可以在软件、硬件、固件或其组合中实现。指令转换器可以在处理器上、在处理器外、或部分在处理器上或部分在处理器外。
因此,公开了用于根据至少一个实施例执行一个或多个指令的技术。虽然在附图中描述和示出了某些示例性实施例,但是应理解,这样的实施例仅仅是广泛的发明的举例示出而不对广泛的发明进行限制,以及本发明不限于所示和所述的特定结构和布置,因为本领域中的普通技术人员在研究本公开时可以想到各种其它修改。在诸如如下的技术领域中,在该领域,增长快速并且更远的进步不容易预见,所公开的实施例可以在布置和细节上容易修改,正如通过实现技术进步所促进的,而不偏离本公开的原理或附随的权利要求的范围。
Claims (31)
1.一种处理器,包括:
飞地页高速缓存,其用于在分配给相对应的安全飞地的页地址的安全存储中存储安全数据;
解码器,其用于对指令进行解码以执行作为所解码的指令,所述指令指定所述页地址作为操作数;以及
执行单元,其可操作地耦合至所述飞地页高速缓存以及所述解码器,其中,所述执行单元响应于所解码的指令,用于:
响应于检测到所述指令的未决中断,设置与所述页地址的飞地页高速缓存映射相对应的条目,以指示所述指令的执行的部分完成,以及
响应于检测到所述指令的所述未决中断,在与所述页地址相对应的页的所述安全存储中记录页状态部分。
2.根据权利要求1所述的处理器,其中,所述页状态部分包括用于记录用于在所述指令的执行的部分完成之后在其处恢复执行的所述相对应的页的位置的指针。
3.根据权利要求2所述的处理器,其中,所述与所述页地址的飞地页高速缓存映射相对应的条目被设置为指示相对应的页的部分加载完成。
4.根据权利要求3所述的处理器,其中,所述页状态部分被记录在所述相对应的页的最后的高速缓存行。
5.根据权利要求1-4中的任一项所述的处理器,其中,所述指令为ELOAD或ELD指令,其指定在其处将所述相对应的页加载到所述飞地页高速缓存中的所述页地址。
6.根据权利要求1-4中的任一项所述的处理器,其中,所述指令为ELOAD RESUME或ELDR指令,其指定在其处恢复将所述相对应的页加载到所述飞地页高速缓存中的所述页地址。
7.根据权利要求1-2中的任一项所述的处理器,其中,所述与所述页地址的飞地页高速缓存映射相对应的条目被设置为指示所述相对应的页的部分写回完成。
8.根据权利要求7所述的处理器,其中,所述页状态部分被记录在所述页地址的第一高速缓存行中。
9.根据权利要求7所述的处理器,其中,所述指令为EWRITEBACK或EWB指令,其指定所述页地址以从所述飞地页高速缓存将所述相对应的页写回到外部存储器。
10.根据权利要求7所述的处理器,其中,所述指令为EWRITEBACK RESUME或EWBR指令,其指定在其处恢复从所述飞地页高速缓存将所述相对应的页写回到外部存储器的所述页地址。
11.根据权利要求1-2中的任一项所述的处理器,其中,响应于所解码的指令,所述执行单元进一步用于:
当所述与所述页地址的飞地页高速缓存映射相对应的条目指示部分页的安全数据被存储在所述安全存储中时,从与所述页地址相对应的所述页的安全存储中读取所述页状态部分。
12.根据权利要求11所述的处理器,其中,响应于所解码的指令,所述执行单元进一步用于:
检查所述与所述页地址的飞地页高速缓存映射相对应的条目,以确定部分页的安全数据是否存储在所述飞地页高速缓存中。
13.一种用于指令执行的方法,包括:
对指令进行解码以用于由处理器执行,所述指令指定分配给相对应的安全飞地的页地址作为操作数;
访问飞地页高速缓存,所述飞地页高速缓存用于在所述页地址的第一高速缓存行和与所述页地址相对应的页的最后的高速缓存行中存储安全数据;并且
当与所述页地址的飞地页高速缓存映射相对应的条目指示部分页的安全数据存储在所述飞地页高速缓存中时,从所述页地址的所述第一高速缓存行或从与所述页地址相对应的页的所述最后的高速缓存行读取第一页状态部分;
响应于检测到所述指令的未决中断,设置所述与所述页地址的所述飞地页高速缓存映射相对应的条目,以指示所述指令的执行的部分完成,并且
响应于检测到所述指令的所述未决中断,在所述页地址的所述第一高速缓存行或与所述页地址相对应的页的所述最后的高速缓存行中记录第二页状态部分。
14.根据权利要求13所述的方法,其中,所述第一页状态部分包括用于记录用于在所述指令的执行的部分完成之后在其处恢复执行的所述相对应的页的位置的指针。
15.根据权利要求13-14中的任一项所述的方法,还包括设置所述与所述页地址的所述飞地页高速缓存映射相对应的条目以指示所述相对应的页的部分加载完成。
16.根据权利要求15所述的方法,还包括在所述相对应的页的所述最后的高速缓存行中记录所述第二页状态部分。
17.根据权利要求15所述的方法,其中,所述指令为ELOAD RESUME或ELDR指令,其指定在其处恢复将所述相对应的页加载到所述飞地页高速缓存中的所述页地址。
18.根据权利要求13-14中的任一项所述的方法,还包括设置所述与所述页地址的所述飞地页高速缓存映射相对应的条目以指示所述相对应的页的部分写回完成。
19.根据权利要求18所述的方法,还包括在所述页地址的所述第一高速缓存行中记录所述页状态部分。
20.根据权利要求18所述的方法,其中,所述指令为EWRITEBACK RESUME或EWBR指令,其指定在其处恢复从所述飞地页高速缓存将所述相对应的页写回到外部存储器的所述页地址。
21.一种处理系统,包括:
外部存储器;以及
处理器,包括:
飞地页高速缓存,其用于在分配给相对应的安全飞地的页地址的安全存储位置中存储安全数据;
解码器,其用于对第一指令进行解码以供由所述处理器执行,所述第一指令将所述页地址指定作为操作数,并且用于对第二指令进行解码以供由所述处理器执行,所述第二指令将所述页地址指定作为操作数;以及
可操作地耦合至所述飞地页高速缓存和所述解码器的执行单元,其中,所述执行单元响应于所解码的第一指令,用于:
响应于检测到所述第一指令的未决中断,设置与所述页地址的飞地页高速缓存映射相对应的条目以指示所述第一指令的执行的部分完成,并且
响应于检测到所述第一指令的所述未决中断,在与所述页地址相对应的页的所述安全存储位置中记录第一页状态部分;并且
其中所述执行单元,响应于所解码的第二指令,还用于:
当所述与所述页地址的飞地页高速缓存映射相对应的条目指示所述相对应的页的部分页的安全数据存储在所述飞地页高速缓存中时,从与所述页地址相对应的页的所述安全存储位置中读取所述第一页状态部分。
22.根据权利要求21所述的处理系统,其中,所述执行单元,响应于所解码的第二指令,还用于:
响应于检测到所述第二指令的未决中断,设置所述与所述页地址的所述飞地页高速缓存映射相对应的条目以指示所述第二指令的执行的部分完成;并且
响应于检测到所述第二指令的所述未决中断,在与所述页地址相对应的页的所述安全存储位置中记录第二页状态部分。
23.根据权利要求21-22中的任一项所述的处理系统,其中,所述第一页状态部分包括用于记录用于在所述第一指令执行的部分完成之后在其处恢复执行的所述相对应的页的位置的指针。
24.根据权利要求23所述的处理系统,其中,所述第一页状态部分被记录在相对应的页的最后的高速缓存行中。
25.根据权利要求23所述的处理系统,其中,所述第二指令为飞地加载恢复指令,所述飞地加载恢复指令指定在其处恢复将所述相对应的页加载到所述飞地页高速缓存中的所述页地址。
26.根据权利要求23所述的处理系统,其中,所述第一指令为飞地加载指令,所述飞地加载指令指定在其处将所述相对应的页加载到所述飞地页高速缓存中的所述页地址。
27.根据权利要求23所述的处理系统,其中,所述第一页状态部分被记录在所述页地址的第一高速缓存行中。
28.根据权利要求23所述的处理系统,其中,所述第二指令为飞地写回恢复指令,所述飞地写回恢复指令指定在其处恢复从所述飞地页高速缓存将所述相对应的页写回到外部存储器的所述页地址。
29.根据权利要求23所述的处理系统,其中,所述第一指令为飞地写回指令,所述飞地写回指令指定在其处将所述相对应的页从所述飞地页高速缓存写回到外部存储器的所述页地址。
30.一种非暂时性机器可读介质,其存储有处理器可访问的多个指令,所述多个指令包括一指令,该指令在由所述处理器读取时,使得所述处理器执行根据权利要求13-20中的任意一项所述的方法。
31.一种用于指令执行的系统,包括:
存储器,其用于存储多个指令;以及
处理器,其耦合到所述存储器,所述多个指令包括一指令,该指令在由所述处理器读取时,使得所述处理器执行根据权利要求13-20中的任意一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/318,508 | 2014-06-27 | ||
US14/318,508 US9703733B2 (en) | 2014-06-27 | 2014-06-27 | Instructions and logic to interrupt and resume paging in a secure enclave page cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105224865A CN105224865A (zh) | 2016-01-06 |
CN105224865B true CN105224865B (zh) | 2019-02-22 |
Family
ID=54839847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510403947.1A Active CN105224865B (zh) | 2014-06-27 | 2015-05-27 | 中断和恢复分页的指令及相关方法、系统、处理器和介质 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9703733B2 (zh) |
CN (1) | CN105224865B (zh) |
DE (1) | DE102015006863A1 (zh) |
TW (2) | TWI616816B (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11188652B2 (en) | 2012-10-02 | 2021-11-30 | Mordecai Barkan | Access management and credential protection |
US9342695B2 (en) | 2012-10-02 | 2016-05-17 | Mordecai Barkan | Secured automated or semi-automated systems |
US9703733B2 (en) | 2014-06-27 | 2017-07-11 | Intel Corporation | Instructions and logic to interrupt and resume paging in a secure enclave page cache |
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 |
US10198298B2 (en) * | 2015-09-16 | 2019-02-05 | Salesforce.Com, Inc. | Handling multiple task sequences in a stream processing framework |
US10146592B2 (en) | 2015-09-18 | 2018-12-04 | Salesforce.Com, Inc. | Managing resource allocation in a stream processing framework |
US9798641B2 (en) * | 2015-12-22 | 2017-10-24 | Intel Corporation | Method to increase cloud availability and silicon isolation using secure enclaves |
US10437635B2 (en) | 2016-02-10 | 2019-10-08 | Salesforce.Com, Inc. | Throttling events in entity lifecycle management |
US9946657B1 (en) * | 2016-03-01 | 2018-04-17 | Nutanix, Inc. | Spilling small cache entries to a solid state device |
CN106158012B (zh) * | 2016-07-05 | 2019-07-16 | 深圳市紫光同创电子有限公司 | Fpga片内sram的时序处理方法、片内sram及fpga |
US9977743B2 (en) * | 2016-08-31 | 2018-05-22 | Intel Corporation | Managing enclave memory pages |
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 |
US10120805B2 (en) * | 2017-01-18 | 2018-11-06 | Intel Corporation | Managing memory for secure enclaves |
US10908952B2 (en) * | 2017-04-21 | 2021-02-02 | Intel Corporation | Preemptive scheduling of in-enclave threads |
US11184763B2 (en) * | 2017-04-27 | 2021-11-23 | Mordecai Barkan | Hands free access management and credential protection |
GB2563882B (en) * | 2017-06-28 | 2019-10-23 | Advanced Risc Mach Ltd | Interrupting sequences of command actions performed upon memory regions |
GB2563885B (en) * | 2017-06-28 | 2019-10-23 | Advanced Risc Mach Ltd | Interrupting export of memory regions |
WO2019002816A1 (en) | 2017-06-28 | 2019-01-03 | Arm Limited | LOCKING REGION OF MEMORY |
US20190034617A1 (en) | 2017-07-31 | 2019-01-31 | Intel Corporation | Flexible container attestation |
CN111259380B (zh) * | 2017-08-22 | 2021-02-12 | 海光信息技术股份有限公司 | 内存页转移方法和函数调用方法 |
DE102017215297A1 (de) | 2017-09-01 | 2018-10-25 | Audi Ag | Recheneinrichtung mit mehreren Recheneinheiten, Kraftfahrzeug und Verfahren zum Betrieb einer Recheneinrichtung |
US10628315B2 (en) * | 2017-09-28 | 2020-04-21 | Intel Corporation | Secure memory repartitioning technologies |
US10423550B2 (en) * | 2017-10-25 | 2019-09-24 | International Business Machines Corporation | Managing efficient selection of a particular processor thread for handling an interrupt |
US10552344B2 (en) * | 2017-12-26 | 2020-02-04 | Intel Corporation | Unblock instruction to reverse page block during paging |
US10970390B2 (en) * | 2018-02-15 | 2021-04-06 | Intel Corporation | Mechanism to prevent software side channels |
US10713053B2 (en) * | 2018-04-06 | 2020-07-14 | Intel Corporation | Adaptive spatial access prefetcher apparatus and method |
US11249765B2 (en) * | 2018-08-22 | 2022-02-15 | Advanced Micro Devices, Inc. | Performance for GPU exceptions |
US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
US10831478B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
US10831502B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Migration of partially completed instructions |
US11575504B2 (en) | 2019-06-29 | 2023-02-07 | Intel Corporation | Cryptographic computing engine for memory load and store units of a microarchitecture pipeline |
US11403234B2 (en) | 2019-06-29 | 2022-08-02 | Intel Corporation | Cryptographic computing using encrypted base addresses and used in multi-tenant environments |
US11580234B2 (en) | 2019-06-29 | 2023-02-14 | Intel Corporation | Implicit integrity for cryptographic computing |
US11250165B2 (en) | 2019-12-20 | 2022-02-15 | Intel Corporation | Binding of cryptographic operations to context or speculative execution restrictions |
US10754798B1 (en) * | 2019-09-11 | 2020-08-25 | International Business Machines Corporation | Link speed recovery in a data storage system |
CN111443949B (zh) * | 2020-03-25 | 2024-02-02 | 北京计算机技术及应用研究所 | 一种飞腾服务器平台下的内核内存页拷贝加速方法 |
US20220100512A1 (en) * | 2021-12-10 | 2022-03-31 | Intel Corporation | Deterministic replay of a multi-threaded trace on a multi-threaded processor |
US11669625B2 (en) | 2020-12-26 | 2023-06-06 | Intel Corporation | Data type based cryptographic computing |
US11580035B2 (en) | 2020-12-26 | 2023-02-14 | Intel Corporation | Fine-grained stack protection using cryptographic computing |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002353960A (ja) * | 2001-05-30 | 2002-12-06 | Fujitsu Ltd | コード実行装置およびコード配布方法 |
US7130951B1 (en) * | 2002-04-18 | 2006-10-31 | Advanced Micro Devices, Inc. | Method for selectively disabling interrupts on a secure execution mode-capable processor |
US7165135B1 (en) * | 2002-04-18 | 2007-01-16 | Advanced Micro Devices, Inc. | Method and apparatus for controlling interrupts in a secure execution mode-capable processor |
US7734932B2 (en) | 2003-11-10 | 2010-06-08 | Broadcom Corporation | System and method for securing executable code |
US7509474B2 (en) | 2005-06-08 | 2009-03-24 | Micron Technology, Inc. | Robust index storage for non-volatile memory |
US8973094B2 (en) | 2006-05-26 | 2015-03-03 | Intel Corporation | Execution of a secured environment initialization instruction on a point-to-point interconnect system |
US8607034B2 (en) * | 2008-05-24 | 2013-12-10 | Via Technologies, Inc. | Apparatus and method for disabling a microprocessor that provides for a secure execution mode |
BRPI0924512A2 (pt) * | 2009-12-22 | 2016-03-01 | Intel Corp | método e aparelho de fornecimento de execução de aplicativos seguros |
US9087200B2 (en) * | 2009-12-22 | 2015-07-21 | Intel Corporation | Method and apparatus to provide secure application execution |
US8972746B2 (en) | 2010-12-17 | 2015-03-03 | Intel Corporation | Technique for supporting multiple secure enclaves |
US8832452B2 (en) | 2010-12-22 | 2014-09-09 | Intel Corporation | System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves |
GB201217531D0 (en) * | 2012-10-01 | 2012-11-14 | Advanced Risc Mach Ltd | ARMv7-M Asset Protection Proposal |
US9323686B2 (en) | 2012-12-28 | 2016-04-26 | Intel Corporation | Paging in secure enclaves |
US9703733B2 (en) | 2014-06-27 | 2017-07-11 | Intel Corporation | Instructions and logic to interrupt and resume paging in a secure enclave page cache |
-
2014
- 2014-06-27 US US14/318,508 patent/US9703733B2/en active Active
-
2015
- 2015-05-19 TW TW105135046A patent/TWI616816B/zh not_active IP Right Cessation
- 2015-05-19 TW TW104115910A patent/TWI567642B/zh not_active IP Right Cessation
- 2015-05-27 DE DE102015006863.6A patent/DE102015006863A1/de active Pending
- 2015-05-27 CN CN201510403947.1A patent/CN105224865B/zh active Active
-
2017
- 2017-06-02 US US15/612,845 patent/US9990314B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US9703733B2 (en) | 2017-07-11 |
TWI616816B (zh) | 2018-03-01 |
US20170337145A1 (en) | 2017-11-23 |
DE102015006863A1 (de) | 2015-12-31 |
CN105224865A (zh) | 2016-01-06 |
US20150378941A1 (en) | 2015-12-31 |
TW201730747A (zh) | 2017-09-01 |
TWI567642B (zh) | 2017-01-21 |
US9990314B2 (en) | 2018-06-05 |
TW201606646A (zh) | 2016-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105224865B (zh) | 中断和恢复分页的指令及相关方法、系统、处理器和介质 | |
JP6344614B2 (ja) | セキュアエンクレーブページキャッシュのための進歩したページング能力を提供するための命令および論理 | |
CN107209722B (zh) | 处理器、处理系统和用于指令执行的方法 | |
TWI712887B (zh) | 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體 | |
CN108351839B (zh) | 挂起/恢复飞地页面高速缓存中飞地的迁移的设备和方法 | |
CN108292215B (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108351779B (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN108369509B (zh) | 用于基于通道的跨步分散操作的指令和逻辑 | |
CN108369511B (zh) | 用于基于通道的跨步存储操作的指令和逻辑 | |
KR101877347B1 (ko) | 벡터 로드-op/저장-op에 스트라이드 기능을 제공하는 명령어 및 로직 | |
CN107003921A (zh) | 具有有限状态机控制的可重配置测试访问端口 | |
TW201732550A (zh) | 用於載入索引和散佈運算之指令和邏輯 | |
CN108369573A (zh) | 用于设置多个向量元素的操作的指令和逻辑 | |
TW201729076A (zh) | 用於合成與排列操作序列之指令及邏輯 | |
JP2021057879A (ja) | プライベートパイプラインを持つプロセッサ | |
CN106575219A (zh) | 针对用于处理运算的向量格式的指令和逻辑技术领域 | |
CN108369510A (zh) | 用于以无序加载的置换的指令和逻辑 | |
CN105723329B (zh) | 用于识别多指令串无序处理器中引退的指令的方法和设备 | |
CN108369512A (zh) | 用于置换序列的指令和逻辑 | |
CN108292214A (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 |