用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑的制作方法

文档序号:11288517阅读:511来源:国知局
用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑的制造方法与工艺

本公开涉及处理逻辑、微处理器以及相关联的指令集架构领域,当由处理器或其他处理逻辑执行该指令集架构时,该指令集架构执行加载、存储、逻辑、数学或其他功能性操作。具体而言,本公开涉及用于在安全飞地页面高速缓存中使进程分叉(fork)和建立子飞地的指令和逻辑。



背景技术:

用于支持诸如语音、视频、事务以及私有数据之类的新使用模型和服务的应用和高性能网络在安全领域提出了新的挑战。出于保密和完整性的目的而保护存储器中的或在传输途中的数据的需求是重要的,但为了支持高速加密操作和维持对受保护的代码和/或数据的安全访问所需的存储器,增加了复杂性最终增加了成本。

一种用于创建和维持安全、受保护或隔离的分区或环境的技术被称为建立飞地(enclave)。飞地是信息和处理能力的集合,其可作为一组来保护。信息和处理能力可包括网络、主机或应用。当飞地的数据和/或指令从外部存储器被加载时,它们被解密、认证并且然后被存储或高速缓存到受保护的存储器中。类似地,当飞地的数据和/或指令从受保护的存储器被驱逐时,它们在被存储回外部存储器之前被加密。安全飞地数据被分配到特定进程并且与该进程的唯一飞地标识符相关联,使得对安全飞地数据的访问仅限于经授权的进程。甚至操作系统也不被允许访问与不同进程的飞地标识符相关联的经解密的飞地数据。

因此,当已经被分配了安全飞地的进程希望利用操作系统调用,fork(),来创建其本身的副本以作为子进程时,操作系统不能访问与父进程相关联的经解密的飞地数据。因此,当分配给父进程的安全飞地仍然活动时,操作系统不能为子进程复制父进程的状态。此外,当操作系统正在为安全飞地执行存储器页面的置入分页(即加载)和/或移出分页(即驱逐和写回)时,必须对全部页面执行加密操作,页面的尺寸通常为4kb。因此,用于安全飞地的页面复制操作可能需要数以万计个处理周期。如果分页进程被中断,则可能需要重新执行分页进程,但是如果在安全飞地的分页操作完成之前不允许对中断的服务,则对中断的延迟服务可能导致一些服务(诸如语音、视频和实时事务)中的不可接受的小故障。

因此,复制父进程的安全飞地的数据和状态的页面以分叉出子进程提出了一系列独特的安全性、用户体验和性能挑战。到目前为止,尚未充分探索解决这些挑战、潜在的性能受限问题以及实时复杂度的解决方案。

附图说明

在所附附图的多个图中以示例方式而非限制方式示出本发明。

图1a是执行用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的系统的一个实施例的框图。

图1b是执行用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的系统的另一实施例的框图。

图1c是执行用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的系统的另一实施例的框图。

图2是执行用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的处理器的一个实施例的框图。

图3a示出根据一个实施例的紧缩数据类型。

图3b示出根据一个实施例的紧缩数据类型。

图3c示出根据一个实施例的紧缩数据类型。

图3d示出根据一个实施例的编码为用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令。

图3e示出根据另一实施例的编码为用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令。

图3f示出根据另一实施例的编码为用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令。

图3g示出根据另一实施例的编码为用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令。

图3h示出使用两个字段来编码指令的实施例。

图3j示出根据另一实施例的编码为用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令。

图4a示出用于执行在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的处理器微架构的一个实施例的要素。

图4b示出用于执行在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的处理器微架构的另一个实施例的要素。

图5是用于执行在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的处理器的一个实施例的框图。

图6是用于执行在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的计算机系统的一个实施例的框图。

图7是用于执行在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的计算机系统的另一实施例的框图。

图8是用于执行在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的计算机系统的另一实施例的框图。

图9是用于执行在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的片上系统的一个实施例的框图。

图10是用于执行在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的处理器的实施例的框图。

图11是在安全飞地页面高速缓存中使进程分叉和建立子飞地的ip核开发系统的一个实施例的框图。

图12示出在安全飞地页面高速缓存中使进程分叉和建立子飞地的架构仿真系统的一个实施例。

图13示出对用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令进行转换的系统的一个实施例。

图14a示出用于使用飞地子创建指令来在安全飞地页面高速缓存中使进程分叉和建立子飞地的处理系统的实施例。

图14b示出用于使用飞地子复制指令来在安全飞地页面高速缓存中使进程分叉和建立子飞地的处理系统的另一实施例。

图15示出处理器中的用于使用用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的装置的实施例。

图16示出用于在安全飞地页面高速缓存中使计算进程分叉和建立子飞地的过程的一个实施例的流程图。

图17a示出使用飞地子创建指令来在安全飞地页面高速缓存中使进程分叉和建立子飞地的过程的一个实施例的流程图。

图17b示出使用飞地子复制指令来在安全飞地页面高速缓存中使进程分叉和建立子飞地的过程的一个实施例的流程图。

图18a示出使用飞地子创建指令来在安全飞地页面高速缓存中使进程分叉和建立子飞地的可中断过程的一个实施例的流程图。

图18b示出使用飞地子复制指令来在安全飞地页面高速缓存中使进程分叉和建立子飞地的可中断过程的一个实施例的流程图。

具体实施方式

以下描述公开了用于在处理器、计算机系统或其他处理设备中、或与处理器、计算机系统或其他处理设备一起结合以在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令和处理逻辑。

在特殊高速缓存或高速缓存的仅保持(例如与飞地相关联的)私有或受保护数据的一部分中,对未加密的私有或受保护数据的访问可仅限于经授权的处理器核、硬件线程或逻辑处理器。此类飞地私有存储器可被称为飞地页面高速缓存(epc)存储器。如同其它物理存储器一样,通过按照需要将数据和/或代码置入分页和移出分页,可使epc支持更大的私有或受保护的地址空间。指令为epc中的分配给父进程和子进程的飞地的安全存储指定地址以存储安全飞地控制结构数据、应用数据、应用代码等等。在一些实施例中,父进程可以执行,或系统软件防护扩展(sgx)库可以执行指令以将父安全飞地控制结构(secs)复制到子进程的安全存储区域、对唯一子飞地id进行初始化并且链接到父secs/飞地id。在一些实施例中,子进程可以执行,或系统sgx库可以执行指令以将页面从父飞地复制到子飞地,其中父飞地和子飞地具有相同密钥,如果被中断,然后还将epc映射的条目设置为部分完成,以及记录子飞地中的页面状态。因此,可以恢复用于从父飞地复制页面的指令。

在一些实施例中,本文中所公开的指令和逻辑能够在用于使进程分叉的secs复制中以及在安全飞地内的页面复制操作中被中断和恢复。在一些实施例中,此类指令指定分配到安全飞地(例如,已经在安全epc中)的页面地址。将理解,通过使用此类飞地指令来在安全epc中使进程分叉和建立子飞地,父进程可以在安全epc中创建(即分叉出)子进程并且为子进程飞地建立副本。还将理解,在不具有对此类指令的处理器支持的情况下,用于完成相同(或类似)技术效果的任何软件系统安全特征(如果真的可行)会是过于昂贵的和/或性能受限的,以致可以不利地接受更少的安全性措施。

在以下描述中,陈述了诸如处理逻辑、处理器类型、微架构条件、事件、启用机制等众多特定细节,以提供对本发明实施例的更透彻理解。然而,本领域技术人员将领会,没有这些具体细节也可实施本发明。此外,没有详细示出一些公知的结构、电路等,以避免不必要地使本发明的多个实施例模糊。

虽然参照处理器来描述下列各实施例,但是,其他实施例也适用于其他类型的集成电路和逻辑器件。本发明的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件可受益于更高的流水线吞吐量和改善的性能。本发明的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可适用于执行数据操纵或管理的任何处理器和机器。另外,下列描述提供了示例,并且为了进行说明,所附附图示出各种示例。然而,这些示例不应当被理解为是限制性意义的,因为它们仅仅旨在提供本发明的诸个实施例的示例,而并非提供本发明的实施例的所有可能实现的详尽列表。

虽然下述的示例描述了在执行单元和逻辑电路的情境中的指令处理和分配,但是也可通过存储在机器可读有形介质上的数据和/或指令来完成本发明的其他实施例,这些数据和/或指令在由机器执行时使得该机器执行与本发明的至少一个实施例相一致的功能。在一个实施例中,与本发明的多个实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令而被编程的通用处理器或专用处理器执行本发明的步骤。本发明的多个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程以执行根据本发明的多个实施例的一个或多个操作。或者,本发明的多个实施例的多个步骤可由包含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。

可将用于对逻辑进行编程以执行本发明的多个实施例的指令存储在系统中的存储器(诸如,dram、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(cd-rom)、磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形的机器可读介质。

设计会经历多个阶段,从创建到仿真到制造。表示设计的数据可以用多种方式来表示该设计。首先,像仿真中有用的那样,可以使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可以被存储在任何形式的机器可读介质中。存储器或者磁或光存储设备(诸如,盘)可以是存储经由光或电波发送的信息的机器可读介质,调制或以其他方式生成这些光或电波以发送这些信息。当发送指示或承载代码或设计的电载波达到实现该电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储具体化本发明的多个实施例的技术的制品(诸如,被编码成载波的信息)。

在现代处理器中,将多个不同的执行单元用于处理和执行各种代码和指令。并不是所有指令都被同等地创建,因为一些指令更快地完成而其他指令可能需要多个时钟周期来完成。指令的吞吐量越快,则处理器的总体性能越好。因此,使许多指令尽可能快地执行将会是有利的。然而,存在具有更大的复杂度,并在执行时间和处理器资源方面要求更多的某些指令。例如,存在浮点指令、加载/存储操作、数据移动等。

因为更多的计算机系统被用于互联网、文本以及多媒体应用,所以已逐渐地引进了附加的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一个或多个计算机架构包括:数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(i/o)。

在一个实施例中,指令集架构(isa)可由一个或更多微架构来执行,微架构包括用于实现一个或多个指令集的处理器逻辑和电路。替代实施例可以通过微代码、扩展微代码或微代码辅助、管理程序、二进制转换、硬件重新编译等来实现isa。因此,具有不同微架构的多个处理器可共享公共指令集的至少一部分。例如,奔腾四(pentium4)处理器、酷睿(coretm)处理器、以及来自加利福尼亚州桑尼威尔(sunnyvale)的超微半导体有限公司(advancedmicrodevices,inc.)的多个处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸如,arm控股有限公司、mips或它们的授权方或兼容方)设计的多个处理器可共享至少一部分公共指令集,但可包括不同的处理器设计。例如,isa的相同寄存器架构在不同的微架构中可使用新的或公知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(rat)、重排序缓冲器(rob)以及引退寄存器堆)的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址或不可由软件编程者寻址的一个或多个寄存器、寄存器架构、寄存器堆、或其他寄存器集合。

在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示多个字段(位的数量、位的位置等)以指定将要被执行的操作以及将要对其执行操作的操作数等。一些指令格式可进一步由指令模板(或子格式)细分定义。例如,给定指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有以不同方式进行解释的给定字段。在一个实施例中,使用指令格式(并且,如果定义过,则以该指令格式的指令模板中的给定的一个)来表示指令,并且该指令指定或指示操作以及该操作将操作的操作数。

科学应用、金融应用、自动向量化通用应用、rms(识别、挖掘和合成)应用以及视觉和多媒体应用(例如,2d/3d图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(simd)指的是使得处理器对多个数据元素执行一个操作的指令类型。可将simd技术用于可将寄存器中的多个位逻辑地划分为多个固定尺寸或可变尺寸的数据元素(每个数据元素表示单独的值)的处理器中。例如,在一个实施例中,可将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之类的组件,该处理器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,该处理器总线可在处理器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总线是用于将外围设备连接到存储器120、芯片组以及处理器102的高速i/o总线。一些示例是音频控制器、固件中枢(闪存bios)128、无线收发机126、数据存储设备124、包括用户输入和键盘接口的传统i/o控制器、串行扩展端口(诸如,通用串行总线(usb))以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、cd-rom设备、闪存设备、或其他大容量存储设备。

对于系统的另一个实施例,根据一个实施例的指令可以与芯片上系统一起使用。芯片上系统的一个实施例包括处理器和存储器。一个这样的系统的存储器是闪存。闪存可以位于与处理器和其他系统组件相同的管芯上。另外,诸如存储器控制器或图形控制器的其他逻辑块也可以位于芯片上系统上。

图1b示出数据处理系统140,该数据处理系统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桥154,用于经由i/o总线153与各种i/o设备进行通信。此类i/o设备可包括但不限于:例如,通用异步接收机/发射机(uart)155、通用串行总线(usb)156、蓝牙无线uart157、以及i/o扩展接口158。

数据处理系统140的一个实施例提供了移动通信、网络通信和/或无线通信,并提供了能够执行包括文本串比较操作的simd操作的处理核159。可利用各种音频、视频、成像和通信算法对处理核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,该解码器165用于识别包括根据一个实施例的、用于由执行单元162执行的指令的指令集163中的多条指令。对于替代实施例,simd协处理器161也包括用于对指令集163中的多条指令进行解码的解码器165b的至少部分。处理核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以及用于识别包括根据一个实施例的多条指令的指令集163中的多条指令的解码器165。

图2是处理器200的微架构的框图,该处理器200包括用于执行根据本发明的一个实施例的指令的逻辑电路。在一些实施例中,可将根据一个实施例的指令实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(例如,单精度和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端201是处理器200的部分,该部分取出要被执行的指令,并准备这些指令以便稍后在处理器流水线中使用。前端201可以包括若干单元。在一个实施例中,指令预取器226从存储器中取出指令,并将这些指令馈送至指令解码器228,指令解码器228进而解码或解释这些指令。例如,在一个实施例中,该解码器将接收到的指令解码为机器可执行的、被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,该解码器将指令解析为可由微架构用于执行根据一个实施例的多个操作的操作码以及对应的数据和控制字段。在一个实施例中,追踪高速缓存230获取经解码的uop,并且在uop队列234中将它们组合为程序排序的序列或踪迹,以用于执行。当追踪高速缓存230遇到复杂指令时,微代码rom232提供完成操作所需的uop。

一些指令被转换为单个微op,而其他指令需要若干个微op以完成完整的操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器228访问微代码rom232以执行该指令。对于一个实施例,可将指令解码为少量的微op,以便在指令解码器228处进行处理。在另一实施例中,如果需要许多微op来完成操作,则可将指令存储在微代码rom232中。追踪高速缓存230参考进入点可编程逻辑阵列(pla)来确定正确的微指令指针,以从微代码rom232中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码rom232完成对指令的微op进行的序列化操作之后,该机器的前端201恢复从追踪高速缓存230中取出微op。

乱序执行引擎203是准备指令以进行执行的地方。乱序执行逻辑具有许多缓冲器,这些缓冲器用于使指令流平滑并且重新排序该指令流,以便在这些指令流沿流水线向下并经调度供执行时优化性能。分配器逻辑分配每一个uop为了执行所需的机器缓冲器和资源。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器堆中的条目。分配器还在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204以及简单浮点调度器206)之前,在两个uop队列(一个用于存储器操作,而另一个用于非存储器操作)中的一个uop队列中,为每一个uop分配条目。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、agu214、快速alu216、快速alu218、慢速alu220、浮点alu222、浮点移动单元224。对于一个实施例,浮点执行块222和224执行浮点、mmx、simd、sse以及其他操作。一个实施例中的浮点alu222包括用于执行除法、平方根和余数微op的64位除64位的浮点除法器。对于本发明的诸个实施例,涉及浮点值的指令可使用浮点硬件来处理。在一个实施例中,alu操作去往高速alu执行单元216和218。一个实施例中的快速alu216和218可以执行有效等待时间为半个时钟周期的快速操作。对于一个实施例,大多数复杂的整数操作去往慢速alu220,因为慢速alu220包括用于长等待时间类型操作的整数执行硬件,例如,乘法器、移位器、标志逻辑和分支处理设备。存储器加载/存储操作由agu212和214来执行。对于一个实施例,在对64位数据操作数执行整数操作的情境中描述整数alu216、218和220。在替代实施例中,alu216、218、220可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元222、224可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元222和224可结合simd以及多媒体指令对128位宽的紧缩数据操作数进行操作。

在一个实施例中,在父加载完成执行之前,uop调度器202、204和206分派从属操作。由于在处理器200中推测性地调度并执行uop,因此处理器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示出替代的寄存器内数据存储格式。每个紧缩数据可包括多于一个的独立数据元素。示出了三种紧缩数据格式:紧缩半数据元素341、紧缩单数据元素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示出了如何将字7到字0存储在simd寄存器中。有符号紧缩字表示347类似于无符号紧缩字寄存器内表示346。注意,每个字数据元素的第十六位是符号指示符。无符号紧缩双字表示348示出了如何存储双字数据元素。有符号紧缩双字表示349类似于无符号紧缩双字寄存器内表示348。注意,必要的符号位是每个双字数据元素的第三十二位。

图3d是与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网(www)intel.com/products/processor/manuals/上获得的“64和ia-32英特尔架构软件开发者手册组合卷2a和2b:指令集参考a-z(64andia-32intelarchitecturesoftwaredeveloper’smanualcombinedvolumes2aand2b:instructionsetreferencea-z)”中描述的操作码格式类型相对应的、具有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操作码字段382和389的一条此类cdp指令。对于替代实施例,可由字段383、384、387和388中的一个或多个对cdp指令操作的这种类型进行编码。可以对每个指令标识多至三个操作数位置,包括多至两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可对8位、16位、32位和64位的值进行操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,可使用条件字段381,有条件地执行指令。对于一些实施例,可通过字段383来对源数据尺寸进行编码。在一些实施例中,可对simd字段执行零(z)、负(n)、进位(c)和溢出(v)检测。对于一些指令,可通过字段384对饱和类型进行编码。

接下来转到图3g,其描绘了根据另一个实施例的用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的另一个替代操作编码(操作码)格式397,该替代操作编码(操作码)格式397对应于可在万维网(www)intel.com/products/processor/manuals/上从加利福尼亚州圣克拉拉市的英特尔公司获得的“高级向量扩展编程参考”(“advancedvectorextensionsprogrammingreference”)中所描述的操作码格式类型。

原始x86指令集向1字节操作码提供各种格式的地址字节(syllable)以及被包括在在附加字节中的立即操作数,其中可从第一个“操作码”字节中获知附加字节的存在。此外,存在作为对该操作码的修饰符而保留的某些字节值(被称为前缀(prefix),因为必须将它们置于指令之前)。当256个操作码字节的原始调配(包括这些特殊的前缀值)耗尽时,将单个字节专用于去往256个操作码的新集合的跳出方式(escape)。因为添加了向量指令(例如,simd),因此,即便通过使用前缀进行扩展,也产生了对更多操作码的需求,并且“两字节”操作码映射也是不够的。为此,将新指令加入附加的映射中,该附加的映射将两字节加上可选的前缀用作标识符。

此外,为了便于在64位模式中实现额外的寄存器,可在前缀和操作码(以及确定该操作码所必需的任何跳出字节)之间使用附加的前缀(被称为“rex”)。在一个实施例中,该rex可具有4个“有效负荷”位,以指示在64位模式中使用附加的寄存器。在其他实施例中,该rex可具有少于或多于4位。至少一个指令集的通用格式(其通常对应于格式360和/或格式370)被一般地示出如下:

[prefixes][rex]escape[escape2]opcodemodrm(等等)

操作码格式397对应于操作码格式370,并包括替代大部分的其他公共使用的传统指令前缀字节和跳出代码的、可选的vex前缀字节391(在一个实施例中,以十六进制的c4开始)。例如,图3h示出了使用两个字段来编码指令的实施例,可在第二跳出代码存在于原始指令中时,或者在需要使用rex字段中的额外位(例如,xb和w字段)时使用该实施例。在图3h所示的实施例中,传统跳出由新的跳出值来表示,传统前缀被完全压缩为“有效负荷(payload)”字节的部分,传统前缀被重新申明并可用于未来的扩展,第二跳出代码被压缩在“映射(map)”字段中且未来的映射或特征空间可用,并且加入新的特征(例如,增加的向量长度以及附加的源寄存器区分符)。

根据一个实施例的指令可通过字段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部分地指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、由立即数对寄存器寻址、寄存器到存储器寻址。

接下来转到图3j,描绘了根据另一实施例的用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的另一替代操作编码(操作码)格式398。操作码格式398对应于操作码格式370和397,并包括替代大部分的其他公共使用的传统指令前缀字节和跳出代码并提供附加的功能的、可选的evex前缀字节396(在一个实施例中,以十六进制的62开始)。根据一个实施例的指令可通过字段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)被一般地示出如下:

evex1rxbmmmmmwvvvlppevex4opcodemodrm[sib][disp][imm]

对于一个实施例,根据evex格式398来编码的指令可具有额外的“有效载荷(payload)”位,这些额外的“有效载荷”位可用于通过附加的新特征来在安全飞地页面高速缓存中使进程分叉和建立子飞地,所述附加的新特征诸如例如用户可配置掩码寄存器、附加的操作数、从128位、256位或512位向量寄存器的选择或待选择的更多的寄存器等等。例如,在vex格式397可以用于不具有掩码的指令的场合,evex格式398可以用于具有显式用户可配置掩码的指令。此外,在vex格式397可用于使用128位或256位向量寄存器的指令的场合,evex格式398可用于使用128位、256位、512位或更大(或更小)的向量寄存器的指令。

用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的示例指令或命令通过下列示例示出:

以上示例指令可以隐式地或显式地为epc中的分配给父进程和子进程的飞地的安全存储指定地址以存储安全飞地控制结构数据、应用数据、应用代码等等。在一些实施例中,父进程可以执行,或系统软件防护扩展(sgx)库可以执行指令以将父安全飞地控制结构(secs)复制到子进程的安全存储区域、对唯一子飞地id进行初始化并且链接到父进程的secs/飞地id。在一些实施例中,子进程可以执行,或系统sgx库可以执行指令以将页面从父飞地复制到子飞地,其中父飞地和子飞地具有相同密钥,如果被中断,然后还将epc映射的条目设置为部分完成,以及记录子飞地中的页面状态。因此,可以恢复用于从父飞地复制页面的指令。

在一些实施例中,本文中所公开的指令和逻辑能够在用于使进程分叉的secs复制中以及在安全飞地内的页面复制操作中被中断和恢复。因此,可以保证使进程分叉和建立安全飞地的页面的子副本的向前进展,并且服务(诸如语音、视频和实时事务)中的不可接受的扰动可以通过及时服务待定中断来避免。在一些实施例中,还可以设置结束复制(end-of-copy)标志来指示用于将页面从父飞地复制到子飞地的最后指令。当设置结束复制标志时,在指令成功完成时,可以将到父secs/飞地id的链接从子secs移除。在一些实施例中,应用可能不能从子进程的飞地访问/执行,直到到父secs/飞地id的链路已经被移除。将理解,通过使用此类飞地指令来在安全epc中使进程分叉和建立子飞地,父进程可以在epc中安全地创建(即分叉出)子进程并且为子进程飞地建立副本。还将理解,在不具有对此类指令的处理器支持的情况下,用于完成相同(或类似)技术效果的任何软件系统安全特征可能(如果真的可行)是过于昂贵的和/或性能受限的,以致可以不利地接受更少的安全性措施。

还将理解,管理许可、物理存储器和/或改变映射仍可通过操作系统(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,指令转换后备缓冲器436耦合至指令取出单元438,指令取出单元438耦合至解码单元440。解码单元或解码器可解码指令,并生成从原始指令中解码出的、或以其他方式反映原始指令的、或从原始指令中导出的一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号作为输出。可使用各种不同的机制来实现解码器。合适的机制的示例包括但不仅限于,查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等等。指令高速缓存单元434进一步耦合到存储器单元470中的第2级(l2)高速缓存单元476。解码单元440耦合至执行引擎单元450中的重命名/分配器单元452。

执行引擎单元450包括耦合至引退单元454的重命名/分配器单元452以及一组一个或多个调度器单元456。调度器单元456表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元456耦合到物理寄存器堆单元458。物理寄存器堆单元458中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、等等)、状态(诸如,指令指针,其是将要被执行的下一个指令的地址)等等。物理寄存器堆单元458被引退单元454所覆盖,以示出可实现寄存器重命名和乱序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器堆、使用未来文件(futurefile)、历史缓冲器以及引退寄存器堆;使用寄存器映射和寄存器池等等)。通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定的电路类型。各种不同类型的寄存器可适用,只要它们能够存储并提供本文中所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元454和物理寄存器堆单元458耦合至执行群集460。执行群集460包括一组一个或多个执行单元462和一组一个或多个存储器访问单元464。执行单元462可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能组的数个执行单元,但是其他实施例可以仅包括一个执行单元或全部都执行所有功能的多个执行单元。调度器单元456、物理寄存器堆单元458和执行群集460被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了多个单独流水线(例如,均具有各自调度器单元、物理寄存器堆单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线;以及在单独的存储器访问流水线的情况下,某些实施例被实现为仅仅该流水线的执行群集具有存储器访问单元464)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行的,而其余的是有序的。

存储器访问单元464的集合耦合到存储器单元470,该存储器单元包括耦合到数据高速缓存单元474的数据tlb单元472,其中数据高速缓存单元耦合到第2级(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))。

应当理解,核可以支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用超线程技术的同步多线程操作)。

尽管在乱序执行的上下文中描述了寄存器重命名,但是,应当理解,寄存器重命名可以用于有序架构中。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元434/474以及共享的l2高速缓存单元476,但替代实施例可具有用于指令和数据两者的单个的内部高速缓存,诸如例如,第1级(l1)内部高速缓存或多个层级的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。或者,全部高速缓存都可以在核和/或处理器的外部。

图5是根据本发明的多个实施例的具有集成的存储器控制器和图形器件的单核处理器和多核处理器500的框图。图5的实线框示出了处理器500,其具有单个核502a、系统代理510、一组一个或多个总线控制器单元516,而可选附加的虚线框示出了替代的处理器500,其具有多个核502a-n、位于系统代理单元510中的一组一个或多个集成存储器控制器单元514的以及集成图形逻辑508。

存储器层次结构包括核内的一个或多个层级的高速缓存、一组或一个或多个共享高速缓存单元506以及耦合到集成存储器控制器单元514的集合的外部存储器(未示出)。共享高速缓存单元506的集合可以包括一个或多个中级高速缓存,诸如,第2级(l2)、第3级(l3)、第4级(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。在图6中以虚线表示附加的处理器615的可选的性质。

每个处理器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)总线,或诸如pciexpress总线或其它第三代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。其他逻辑和电路(包括更多的cpu或gpu以及其他外围设备接口控制器)可被包括在图10的处理器中。

至少一个实施例的一个或多个方面可由存储在表示处理器内的各种逻辑的机器可读介质上的表示性数据来实现,当机器读取该表示性数据时,该表示性数据使得该机器用于制造执行本文所述的技术的逻辑。可将此类表示(即所谓“ip核”)存储在有形的机器可读介质(“磁带”)上,并将其提供给各种顾客或生产设施,以便加载到实际制作该逻辑或处理器的制造机器中。例如,ip核(诸如由arm控股公司所开发的cortextm处理器族以及由中国科学院计算机技术研究所(ict)所开发的龙芯ip核)可被授权或销售给各种客户或受许可方,诸如德州仪器、高通、苹果、或三星,并被实现在由这些客户或受许可方生产的处理器中。

图11示出根据一个实施例的ip核开发的框图。存储设备1130包括仿真软件1120和/或硬件或软件模型1110。在一个实施例中,表示ip核设计的数据可经由存储器1140(例如,硬盘)、有线连接(例如,互联网)1150或无线连接1160而被提供给存储设备1130。由仿真工具和模型所生成的ip核信息可随后被发送到生产设施,可由第三方在该生产设施中制造该ip核以执行根据至少一个实施例的至少一条指令。

在一些实施例中,一条或多条指令可以对应于第一类型或架构(例如,x86),并且可在不同类型或架构(例如,arm)的处理器上被转换或仿真。根据一个实施例,因此可在任何处理器或处理器类型(包括arm、x86、mips、gpu或其他处理器类型或架构)上执行指令。

图12示出了根据一个实施例的第一类型的指令如何被不同类型的处理器仿真。在图12中,程序1205包含可执行与根据一个实施例的指令相同或基本相同的功能的一些指令。然而,程序1205的指令可以是与处理器1215不同或不兼容的类型和/或格式,这意味着不能够由处理器1215原生地执行程序1205中的类型的指令。然而,借助于仿真逻辑1210,将程序1205的指令转换成能够由处理器1215原生执行的指令。在一个实施例中,仿真逻辑被具体化在硬件中。在另一实施例中,将仿真逻辑具体化在有形的机器可读介质中,该机器可读介质包含用于将程序1205中的该类指令转换为能由处理器1215原生地执行的类型的软件。在其他实施例中,仿真逻辑是固定功能或可编程硬件和存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其他实施例中,仿真逻辑在处理器之外,并且由第三方提供。在一个实施例中,通过执行被包括在处理器中或者与该处理器相关联的微代码或固件,处理器能够加载被具体化在包含软件的有形的机器可读介质中的仿真逻辑。

图13是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图13示出可使用x86编译器1304来编译利用高级语言1302的程序,以生成可由具有至少一个x86指令集核的处理器1316原生地执行的x86二进制代码1306。具有至少一个x86指令集核的处理器1316表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他程序的目标代码版本。x86编译器1304表示用于生成x86二进制代码1306(例如,目标代码)的编译器,该x86二进制代码1306可利用或不利用附加的链接处理而在具有至少一个x86指令集核的处理器1316上执行。类似地,图13示出可以使用替代的指令集编译器1308来编译高级语言1302的程序以生成可由不具有至少一个x86指令集核的处理器1314(例如,具有执行加利福尼亚州桑尼维尔市的mips技术公司的mips指令集和/或执行加利福尼州桑尼维尔市的arm控股公司的arm指令集的核的处理器)原生地执行的替代的指令集二进制代码1310。指令转换器1312用于将x86二进制代码1306转换成可以由不具有x86指令集核的处理器1314原生地执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1310相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成通用操作,并且将由来自替代指令集的指令构成。因此,指令转换器1312表示软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1306。

图14a示出用于为安全飞地页面高速缓存epc1460提供多处理能力的处理系统1401的实施例,包括使用飞地子创建指令以在安全飞地页面高速缓存中使进程分叉和建立子飞地。系统1401包括系统存储器1490和处理器1402。处理器1402包括第一硬件线程或逻辑处理器1420和第二硬件线程或逻辑处理器1430。将会理解,虽然出于简化的目的将处理器1402示为包括两个逻辑处理器,每个逻辑处理器表示单个硬件线程,但本发明不限于此。例如,诸如处理器1402之类的处理器或本文中示出的其它处理器具有若干逻辑处理器核是常见的,这些逻辑处理器核可能或可能不共享一些物理资源(例如epc1460)和/或电路系统(例如se单元1470),每个逻辑处理器或处理器核具有能够同时或并发执行软件线程的多个硬件线程。

处理器1402还包括安全飞地(se)单元1470和飞地页面高速缓存epc1460。对于一些实施例,epc1460可以是更大的高速缓存单元(例如一个或多个一级高速缓存1440和1450或二级高速缓存(未示出))的一部分。对于其它实施例,epc1460可以是由多个硬件线程、逻辑处理器或处理核共享的单独结构或分布式结构(例如高速缓存1440和高速缓存1450),以存储用于页面(例如1442、1446和1452)的地址或与其相关联的安全数据,页面被分配给一个或多个安全飞地且可由硬件线程、逻辑处理器或处理核访问。在一些实施例中,os可以驱逐一个页面或多个页面(例如页面1442、1446或1452)、加密数据、并且将它们写回到存储器(例如经加密的页面1495)或到非易失性存储器。在一些实施例中,os然后可从存储器或非易失性存储器读取新页面(例如页面1410)、解密数据并将经解密的页面存储在epc1460中。分页过程(例如其中,安全飞地页面高速缓存存储器内容被加密并被写回、新页面从存储器被加载并解密、tlb条目被转储清除并替换等)可被以处理器核或逻辑处理器(例如逻辑处理器1420和1430)仅短暂中断(例如通过ipi)并且然后恢复直到分页过程完成的方式来完成。

se单元1470还可包括:由多个硬件线程、逻辑处理器或处理核所共享的单独的结构或分布式结构(例如se单元1427和1437),并具有加密单元、完整性保护单元、访问控制单元、范围寄存器、飞地页面高速缓存映射、时期(epoch)计数器存储位置等等。se单元1470还支持用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的飞地子创建指令。

在该示例中,逻辑处理器1420具有解码级1422、读取级1424、一个或多个执行单元(例如执行单元1426)以及写入级1428。逻辑处理器1420还具有tlb1425,其中可安装转换以访问epc1460。逻辑处理器1430具有解码级1432、读取级1434、一个或多个执行单元(例如执行单元1436)以及写入级1438。逻辑处理器1430还具有tlb1435,其中可安装转换以访问epc1460。逻辑处理器1420和1430的实施例还可包括其它流水线级(例如如流水线400中所示的),用于执行飞地指令以为安全飞地页面高速缓存epc1460提供多处理能力。逻辑处理器1420和1430的实施例还可支持用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的飞地子创建指令。

在逻辑处理器1420和1430的实施例中,响应于经解码的飞地子创建指令,一个或多个执行单元(例如执行单元1426和/或1436)可以将第一安全控制结构(secs)从第一安全存储区域(例如1442)复制到第二安全存储区域(例如1452)。进一步响应于经解码的飞地子创建指令,一个或多个执行单元(例如执行单元1426和/或1436)可以利用与新创建的子进程相关联的唯一飞地标识符(例如1453)来初始化第二secs数据,并且在第二secs数据(例如在1452处)中记录到第一secs数据(例如在1442处)的第二secs链路1444。在一些实施例中,链路1444还可以是到第二secs数据(例如在1452处)的双向链路并且也被记录在第一secs数据(例如在1442处)中。

图14b示出用于为安全飞地页面高速缓存epc1460提供多处理能力的处理系统1402的另一实施例,包括使用飞地子复制指令以在安全飞地页面高速缓存中使进程分叉和建立子飞地。

在该第二示例中,逻辑处理器1420和1430的实施例还可以支持飞地子复制指令,飞地子复制指令用于通过将应用数据页面、应用代码页面、飞地库代码页面等从分配给父进程的安全飞地安全地复制到分配给子进程的安全飞地,在安全飞地页面高速缓存中使进程分叉和建立子飞地。在逻辑处理器1420和1430的实施例中,响应于经解码的飞地子复制指令,一个或多个执行单元(例如执行单元1426和/或1436)可以标识存储在第二安全存储区域(例如1452)的第二secs数据中的到第一安全存储区域(例如1442)的第一secs数据的链路(例如1444),并且如果链路被标识,则将安全数据从epc1460中的第一安全存储区域(例如在1446处)复制到epc1460中的第二安全存储区域(例如在1456处)。在一些实施例中,标识存储在第二安全存储区域的第二secs数据中的到第一secs数据的链路还可以包括验证两个secs与相同的加密密钥相关联。

在逻辑处理器1420和1430的实施例中,响应于经解码的飞地子复制指令,如果设置了结束复制标志,则在飞地子复制指令执行成功地完成后,一个或多个执行单元(例如执行单元1426和/或1436)还可以将到第一安全存储区域的第一安全控制结构数据的链路(例如1444)从第二安全存储区域的第二安全控制结构数据移除。在逻辑处理器1420和1430的实施例中,应用可能不能访问epc1460中的第二安全存储区域(例如在1456处),直到至第一安全控制结构数据的链路(例如1444)被移除。

在逻辑处理器1420和1430的一些替代实施例中,响应于经解码的飞地子复制指令,一个或多个执行单元(例如执行单元1426和/或1436)最初可以将第一安全控制结构(secs)从第一安全存储区域(例如1442)复制到第二安全存储区域(例如1452)、利用与新创建的子进程相关联的唯一飞地标识符(例如1453)来初始化第二secs数据、以及在第二secs数据(例如在1452处)中记录到第一secs数据(例如在1442处)的第二secs链路1444和/或也在第一secs数据(例如在1442处)中记录到第二secs数据(例如在1452处)的第二secs链路1444。

将理解,通过使用包括用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令的飞地指令,父进程可以在安全飞地页面高速缓存(例如epc1460)中创建(即分叉出)子进程并且为子进程飞地建立副本。还将理解,用于完成相同(或类似)技术效果的任何软件系统安全特征可能(如果真的可行)是过于昂贵的和/或性能受限的,以致可以不利地接受更少的安全性措施。

图15示出处理器核1501中的装置的实施例,用于使用指令来为安全飞地页面高速缓存提供多处理能力,包括在安全飞地页面高速缓存中使进程分叉和建立子飞地。该装置包括安全飞地(se)单元1502和飞地页面高速缓存epc1520。对于一些实施例,epc1520可以是更大的高速缓存单元(例如一级高速缓存l11540或二级高速缓存(未示出))的一部分。对于其它实施例,epc1520可以是由多个硬件线程、逻辑处理器或处理核共享的单独结构或分布式结构,以存储用于页面(例如1542、1546、1552和1556)的地址的或与其相关联的安全数据,页面被分配给一个或多个安全飞地(例如父飞地1504和/或子飞地1505)且可由硬件线程、逻辑处理器或处理核(例如处理器核1501)访问。se单元1502可以包括加密单元1510、完整性保护单元1512、访问控制单元1514、范围寄存器1516和飞地页面高速缓存映射epc1518。se单元1502还可包括飞地分叉指令1503,包括:echildcreate指令1532、echildcopy指令1534、echildcopyr指令1536以及未示出的其它飞地指令(例如aex指令、eload指令、ewriteback指令、eexit指令、eenter指令、eresume指令等等)。

处理器核1501还包括tlb1525,其中可安装转换以访问epc1520。处理器核1501还包括解码级1522、读取级1524、一个或多个执行单元(例如执行单元1526)以及写入级1528。处理器核1501的实施例还可包括其它流水线级(例如如流水线400中所示),用于执行飞地分叉指令1503以提供多处理能力,包括中断和恢复用于在安全飞地页面高速缓存epc1520中使进程分叉和建立子飞地的指令。

在一个实施例中,echildcreate指令1532指定epc1520中的(第二)安全存储区域作为目的地页面1552地址操作数(例如安全存储区域的有效地址可以被隐式地或显式地指定为诸如rcx的寄存器中的间接目的地操作数)。响应于经解码的echildcreate指令1532,处理器核1501的实施例中的一个或多个执行单元(例如执行单元1526)可以将第一安全控制结构(secs)从第一安全存储区域(例如1542)复制到第二安全存储区域(例如1552)。echildcreate指令1532的实施例还可以隐式地或显式地指定第一安全存储区域的有效地址作为寄存器(例如诸如rbx)中的间接源操作数。进一步响应于经解码的echildcreate指令1532,一个或多个执行单元(例如执行单元1526)可以利用与新创建的子进程相关联的唯一飞地标识符(例如1553)来初始化第二secs数据,并且在第二secs数据(例如在1552处)中记录到第一secs数据(例如在1542处)的第二secs链路1544。在一些实施例中,链路1544还可以是到第二secs数据(例如在1552处)的双向链路并且也被记录在第一secs数据(例如在1542处)中。

在一个实施例中,被分配给父进程的对应的安全飞地1504的第一安全存储区域(例如在1542和/或1546处)会与第一密钥(例如用于加密和/或解密安全数据)相关联,并且被分配给子进程的对应的第二安全飞地1505的第二安全存储区域(例如在1552和/或1556处)也会与相同的第一密钥相关联。一些飞地分叉指令1503的实施例还可以包括验证两个secs与相同的加密密钥相关联。处理器核1501的实施例可以支持飞地子复制指令(例如echildcopy指令1534和/或echildcopyresume指令1536),以通过将应用数据页面、应用代码页面、飞地库代码页面等从分配给父进程的安全飞地1504安全地复制到分配给子进程的安全飞地1505来中断和恢复用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令。

在一个实施例中,echildcopy指令1534指定epc1520中的(第一)安全存储区域作为源页面1546地址操作数。在处理器核1501的实施例中,响应于经解码的echildcopy指令1534(或echildcopyr指令1536),一个或多个执行单元(例如执行单元1526)可以标识存储在第二安全存储区域(例如子飞地1505的1552)的第二secs数据中的到第一安全存储区域(例如父飞地1504的1542)的第一secs数据的链路(例如1544),并且如果链路被标识,则将安全数据从epc1560中的第一安全存储区域(例如在父飞地1504的1546处)复制到epc1560中的第二安全存储区域(例如在子飞地1505的1556处)。在一些实施例中,标识存储在第二安全存储区域(例如在子飞地1505的1556处)的第二secs数据(例如在1552处)中的到第一secs数据(例如在1542处)的链路(例如1544)还可以包括验证两个secs与相同的加密密钥相关联。

在处理器核1501的实施例中,响应于经解码的echildcopy指令1534(或echildcopyr指令1536),如果设置了结束复制标志,则在echildcopy指令1534(或echildcopyr指令1536)执行成功地完成后,一个或多个执行单元(例如执行单元1526)还可以将到第一安全存储区域(例如1504)的第一secs数据的链路(例如1544)从第二安全存储区域(例如1505)的secs数据移除。在处理器核1501的实施例中,应用可能不能访问epc1560中的第二安全存储区域(例如在子飞地1505的1556处),直到至第一secs数据的链路(例如1544)被移除。

在处理器核1501的一些替代实施例中,响应于经解码的echildcopy指令1534,一个或多个执行单元(例如执行单元1526)最初可以将第一secs从第一安全存储区域(例如父飞地1504的1542)复制到第二安全存储区域(例如子飞地1505的1552)、利用与新创建的子进程相关联的唯一飞地标识符(例如1553)来初始化第二secs数据、以及在第二secs数据(例如在1552处)中记录到第一secs数据(例如在1542处)的第二secs链路1544和/或也在第一secs数据(例如在1542处)中记录到第二secs数据(例如在1552处)的第二secs链路1544。

将理解,管理许可、物理存储器和/或改变映射仍可通过操作系统(os)管理,但当存储器内容受保护时(例如在安全飞地中),os未被许可或未被信任来访问飞地私有存储器的实际受保护的内容以在飞地私有存储器中使进程分叉和创建进程的子副本。利用在安全飞地页面高速缓存中使安全飞地进程分叉和建立子飞地的指令和处理逻辑,可在不能信任os的情况下,实现确保私有存储器内容的安全性和/或完整性并且管理使进程分叉和建立安全应用页面的子副本等的技术限制,无需额外的精巧的硬件支持和/或设计努力。

图16示出用于在安全飞地页面高速缓存中使进程分叉和建立子飞地的过程1601的一个实施例的流程图。通过处理块来执行过程1601和本文中公开的其他过程,这些处理块可包括专用硬件或可由通用机器或专用机器或通用机器和专用机器两者的组合执行的软件或固件操作代码。

在过程1601的处理块1610中,父进程1604执行对系统软件防护扩展(sgx)库的分叉调用。例如,可以对特殊库(例如sgxlib1648,称为libsgx)作出来自飞地1604的ocall(os调用)而不是常见的分叉系统调用。结果,在处理块1620中,执行echildcreate命令或指令(例如echildcreate指令1532)。在一个实施例中,echildcreate命令或指令指定epc中的安全存储区域作为目的地页面1652地址操作数(例如安全存储区域的有效地址可以被隐式地或显式地指定为诸如rcx的寄存器中的间接目的地操作数)。响应于echildcreate命令或指令,在处理块1630中,一个或多个执行单元(例如执行单元1426、1436或1526)将第一安全控制结构(secs)从父安全存储区域(例如飞地1604的1642)复制到子安全存储区域(例如到飞地1605的1652)。echildcreate命令或指令的实施例还可以隐式地或显式地指定父安全存储区域的有效地址作为寄存器(例如诸如rbx)中的间接源操作数。进一步响应于echildcreate命令或指令,处理块1640中的一个或多个执行单元利用与新创建的子进程相关联的唯一飞地标识符(例如1653)来初始化第二secs数据(例如在1652中),并且在第二secs数据(例如在1652处)中记录到第一secs数据(例如在1642处)的第二secs链路1644。在一些实施例中,链路1644还可以是到第二secs数据(例如在1652处)的双向链路并且也被记录在第一secs数据(例如在1642处)中。

在一个实施例中,被分配给父进程的对应的安全飞地1604的第一安全存储区域(例如在1642和/或1646处)会与第一密钥(例如用于加密和/或解密安全数据)相关联,并且被分配给子进程的对应的第二安全飞地1605的第二安全存储区域(例如在1652和/或1656处)也会与相同的第一密钥相关联。一些飞地分叉指令的实施例还可以包括直接地或间接地验证两个secs与相同的加密密钥相关联。

在处理块1650中,执行一个或多个echildcopy命令或指令(例如echildcopy指令1534)。在一个实施例中,echildcopy命令或指令指定epc中的安全存储区域作为源页面(例如1646、1647或1648)地址操作数。在一些实施例中,响应于echildcopy命令或指令,一个或多个执行单元(例如执行单元1426、1436或1526)可以标识存储在第二安全存储区域(例如子飞地1605的1652)的第二secs数据中的到第一安全存储区域(例如父飞地1604的1642)的第一secs数据的链路(例如1644),并且如果链路被标识,则将安全数据从epc中的第一安全存储区域(例如在父飞地1604的1646处)复制到epc中的第二安全存储区域(例如在子飞地1605的1656处)。在一些实施例中,标识存储在第二安全存储区域(例如在子飞地1605的1656处)的第二secs数据(例如在1652处)中的到第一secs数据(例如在1642处)的链路(例如1644)还可以包括验证两个secs与相同的加密密钥相关联。

在处理块1660中,执行最后的echildcopy命令或指令(例如echildcopy指令1534或echildcopyr指令1536)。在一些实施例中,响应于最后的echildcopy命令或指令,在最后的echildcopy命令或指令成功完成后(例如当设置了结束复制标志时),一个或多个执行单元(例如执行单元1426、1436或1526)还可以将到第一安全存储区域(例如1504)的父secs数据的echild链路(例如1644)从第二安全存储区域(例如1505)的secs数据移除。在一些实施例中,应用可能不能访问epc中的第二安全存储区域(例如在子飞地1605的1656、1657或1658处),直到至父secs数据的echild链路(例如1644)被移除。

在一些实施例中,本文中所公开的指令和逻辑在用于使进程分叉的secs复制操作(诸如echildcreate命令或指令(例如echildcreate指令1532))中以及在安全飞地内的页面复制操作(诸如echildcopy命令或指令(例如echildcopy指令1534或echildcopyr指令1536))中能够被中断和恢复。因此,可以保证使进程分叉和建立安全飞地的页面的子副本的向前进展,并且服务(诸如语音、视频和实时事务)中的不可接受的小故障可以通过及时服务待定中断来避免。将理解,通过使用此类飞地指令来在安全epc中使进程分叉和建立子飞地,父进程可以在epc中安全地创建(即分叉出)子进程并且为子进程飞地建立副本。还将理解,在不具有对此类指令的处理器支持的情况下,用于完成相同(或类似)技术效果的任何软件系统安全特征可能(如果真的可行)是过于昂贵的和/或性能受限的,以致可以不利地接受更少的安全性措施。

图17a示出使用飞地子创建指令来在安全飞地页面高速缓存中使进程分叉和建立子飞地的过程1701的一个实施例的流程图。在处理块1710中,对飞地子创建指令进行解码。飞地子创建指令的一些实施例可以将以下参数隐式地或显式地指定为操作数:飞地页面高速缓存(epc)中的分配给父进程的对应的第一安全飞地的用于存储第一安全控制结构(secs)的第一安全存储区域,以及epc中的分配给子进程的对应的第二安全飞地的用于存储第二secs的第二安全存储区域。例如,飞地子创建指令的实施例可以指定第一安全存储区域的有效地址作为诸如rbx的寄存器中的间接操作数。飞地子创建指令的实施例可以指定第二安全存储区域的有效地址作为诸如rcx的寄存器中的间接操作数。在处理块1720中,验证epc中的任何被指定的参数。如果在处理块1725中确定epc中的任意被指定的参数是无效的,则处理前进至处理块1790,其中返回失败错误。否则,处理前进至处理块1730,其中访问epc以将第一secs从第一安全存储区域复制到子进程的第二安全存储区域。在处理块1740中,利用与子进程相关联的唯一飞地标识符来初始化子进程的第二secs。在处理块1750中,记录第一源secs与第二子secs之间的链接(例如在第二子secs中和/或在第一源secs中)。在处理块1755中,判断是否成功地执行了用于使进程分叉和建立子飞地的飞地子创建指令。如果是,则在处理块1780中引退飞地子创建指令。如果否,则处理前进至处理块1790,其中返回失败错误。

将理解,虽然本文中所公开的过程1701和其他过程的处理块示出为以迭代方式执行,但是只要有可能,可以优选地实现以替代顺序、或并发地、或并行地执行。在一些实施例中,还可以设置结束复制标志来指示用于将页面从父飞地复制到子进程的飞地的最后飞地子复制指令。当设置结束复制标志时,在飞地子复制指令成功完成时,可以将到父secs/飞地id的链路从子secs移除。在一些实施例中,应用可能不能从子进程的飞地访问/执行,直到至父secs/飞地id的链路已经被移除。

图17b示出使用飞地子复制指令来在安全飞地页面高速缓存中使进程分叉和建立子飞地的过程1702的一个实施例的流程图。在处理块1712中,对飞地子复制指令进行解码。飞地子复制指令的一些实施例可以将以下参数隐式地或显式地指定为操作数:epc中的分配给父进程的对应的第一安全飞地的用于存储第一secs并且用于存储页面地址的安全数据的第一安全存储区域,以及epc中的分配给子进程的对应的第二安全飞地的用于存储第二secs并且用于存储页面地址的安全数据的副本的第二安全存储区域。例如,飞地子复制指令的实施例可以指定第一安全存储区域的有效地址作为诸如rbx的寄存器中的间接操作数。飞地子复制指令的实施例可以指定第二安全存储区域的有效地址作为诸如rcx的寄存器中的间接操作数。在处理块1722中,验证epc中的任何被指定的参数。在飞地子复制指令的一些实施例中,验证epc中的被指定的参数可以包括标识存储在第二secs中的到第一secs的链接。如果在处理块1727中确定epc中的任意被指定的参数是无效的,则处理前进至处理块1790,其中返回失败错误。否则,处理前进至处理块1732,其中如果标识了该链接,则将来自epc中的第一安全存储区域源页面地址的安全数据内容复制到epc中的第二安全存储区域。在处理块1742中,将源页面地址的飞地页面高速缓存映射(epcm)条目复制到子进程的epcm条目。在处理块1752中,将子进程的新epcm条目更新至与子进程相关联的唯一飞地标识符。

在处理块1752中,判断是否设置了结束复制(eoc)标志。例如,飞地子复制指令的实施例可以隐式地或显式地指定eoc标志(即在最后飞地子复制指令上)作为诸如rdx的寄存器中的操作数。如果在处理块1757中确定设置了eoc标志,则在处理块1762中,在飞地子复制指令执行成功地完成后,移除从第二secs到第一secs的链接,并且在处理块1770中引退飞地子复制指令。另一方面,如果在处理块1757中确定未设置eoc标志,则处理直接前进至处理块1770,其中在飞地子复制指令执行成功地完成后引退飞地子复制指令。

在一些实施例中,本文中所公开的指令和逻辑能够在用于使进程分叉的secs复制中以及在安全飞地内的页面复制操作中被中断和恢复。因此,可以保证使进程分叉和建立安全飞地的页面的子副本的向前进展,并且服务(诸如语音、视频和实时事务)中的不可接受的小故障可以通过及时服务待定中断来避免。将理解,通过使用此类飞地指令来在安全epc中使进程分叉和建立子飞地,父进程可以在epc中安全地创建(即分叉出)子进程并且为子进程飞地建立副本。还将理解,在不具有对此类指令的处理器支持的情况下,用于完成相同(或类似)技术效果的任何软件系统安全特征可能(如果真的可行)是过于昂贵的和/或性能受限的,以致可以不利地接受减少的安全性措施。

图18a示出使用飞地子创建指令来在安全飞地页面高速缓存中使进程分叉和建立子飞地的可中断过程1801的一个实施例的流程图。在处理块1810中,对飞地子创建指令进行解码。飞地子创建指令的一些实施例可以将以下参数隐式地或显式地指定为操作数:飞地页面高速缓存(epc)中的分配给父进程的对应的第一安全飞地的用于存储第一安全控制结构(secs)的第一安全存储区域,以及epc中的分配给子进程的对应的第二安全飞地的用于存储第二secs的第二安全存储区域,从而可以验证epc中的任何被指定的参数。例如,飞地子创建指令的实施例可以指定第一安全存储区域的有效地址作为诸如rbx的寄存器中的间接操作数。飞地子创建指令的实施例可以指定第二安全存储区域的有效地址作为诸如rcx的寄存器中的间接操作数。在处理块1831中,访问epc,并且向前进展以将第一secs从第一安全存储区域复制到子进程的第二secs。

在处理块1835中,判断将第一secs从第一安全存储区域复制到子进程的第二secs是否已经完成。如果是,则处理前进至处理块1840,其中利用与子进程相关联的唯一飞地标识符来初始化子进程的第二secs。在处理块1850中,记录第一源secs与第二子secs之间的链接(例如在第二子secs中和/或在第一源secs中),并且在处理块1880中,引退飞地子创建指令。

否则,如果在处理块1835中,将第一secs从第一安全存储区域复制到子进程的第二secs还未完成,则在处理块1821中判断飞地子创建指令是否被中断。如果否,则处理可以在处理块1831中继续开始。另一方面,如果飞地子创建指令被中断,则存在待定中断,并且处理前进至处理块1822,其中对第一secs的复制操作的状态被设定检查点(例如分页操作的部分完成可以被记录在飞地页面高速缓存映射条目中,并且页面状态信息的一部分可以被存储在对应的子页面的高速缓存行中或一些其他安全存储设备中等等)。在处理块1823中,可以返回咨询代码(例如,指示中断可以被服务)。在处理块1824中中断被服务,并且在处理块1825中飞地子创建指令会被恢复到会被从第一安全存储区域的第一secs复制的页面上。处理然后在处理块1831中重复开始,直到在处理块1835中将第一secs从第一安全存储区域复制到子进程的第二secs已经完成,并且处理前进至处理块1840。

图18b示出使用飞地子复制指令来在安全飞地页面高速缓存中使进程分叉和建立子飞地的可中断过程1802的一个实施例的流程图。在处理块1812中,对飞地子复制指令进行解码。飞地子复制指令的一些实施例可以将以下参数隐式地或显式地指定为操作数:epc中的分配给父进程的对应的第一安全飞地的、用于存储第一secs并且用于存储页面地址的安全数据的第一安全存储区域,以及epc中的分配给子进程的对应的第二安全飞地的、用于存储第二secs并且用于存储页面地址的安全数据的副本的第二安全存储区域,从而可以验证epc中的任何被指定的参数,包括标识存储在第二secs中的到第一secs的链接。例如,飞地子复制指令的实施例可以指定第一安全存储区域的有效地址作为诸如rbx的寄存器中的间接操作数。飞地子复制指令的实施例可以指定第二安全存储区域的有效地址作为诸如rcx的寄存器中的间接操作数。在处理块1820中,子进程的飞地页面高速缓存映射(epcm)条目被检查/被设置为与子进程相关联的唯一飞地标识符。在处理块1832中,如果标识了该链接,则访问epc并且向前进展以将安全数据内容从epc中的第一安全存储区域源页面地址复制到epc中的第二安全存储区域。

在处理块1835中,判断将安全数据内容从第一安全存储区域源页面地址复制到子进程的第二安全存储区域是否已经完成。如果是,则处理前进至处理块1857,其中判断是否设置了结束复制(eoc)标志。例如,飞地子复制指令的实施例可以隐式地或显式地指定eoc标志(即在最后飞地子复制指令上)作为诸如rdx的寄存器中的操作数。如果在处理块1857中确定设置了eoc标志,则在处理块1862中,在飞地子复制指令执行成功地完成后,移除从第二secs到第一secs的链接,并且在处理块1870中引退飞地子复制指令。另一方面,如果在处理块1857中确定未设置eoc标志,则处理直接前进至处理块1870,其中在飞地子复制指令执行成功地完成后引退飞地子复制指令。

否则,如果在处理块1835中,将安全数据内容从第一安全存储区域源页面地址复制到子进程的第二安全存储区域还未完成,则在处理块1821中判断飞地子复制指令是否被中断。如果否,则处理可以在处理块1820中继续开始。另一方面,如果飞地子复制指令被中断,则存在待定中断,并且处理前进至处理块1826,其中epcm被设置为指示复制操作的部分完成。在处理块1827中,页面状态信息的一部分可以被存储(例如在对应的子页面的末级高速缓存行中或一些其他安全存储设备中等等)。在处理块1828中,中断被服务,并且在处理块1829中飞地子复制指令会被恢复到会被从第一安全存储区域源页面地址复制到子进程的第二安全存储区域的页面上。处理然后在处理块1820中重复开始,直到在处理块1835中将第一安全存储区域源页面地址复制到子进程的第二安全存储区域已经完成,并且处理前进至处理块1857。

因此,管理许可、物理存储器和/或改变映射仍可通过操作系统(os)管理,但当存储器内容受保护时(例如在安全飞地中),os未被许可或未被信任来访问飞地私有存储器的实际受保护的内容。利用在安全飞地页面高速缓存中使进程分叉和建立子飞地的指令和处理逻辑,可在不能信任os的情况下实现确保私有存储器内容的安全性和/或完整性并且管理使进程分叉和建立页面的子副本的技术限制,无需精巧的硬件支持和/或设计努力。

将理解,在过程1802的一些替代实施例中以及在本文所公开的其它过程中,在可能时,被示为按照特定顺序的处理块也可按照另一顺序或并发地或彼此并行地执行。

本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。

可将程序代码应用于输入指令以执行本文描述的功能并产生输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器之类的处理器的任何系统。

程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。可将被称为“ip核”的此类表示存储在有形的机器可读介质上,并将其提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。

此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(cd-rom)、紧致盘可重写(cd-rw)以及磁光盘;半导体器件,例如只读存储器(rom)、诸如动态随机存取存储器(dram)和静态随机存取存储器(sram)之类的随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、闪存、电可擦除可编程只读存储器(eeprom);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。

因此,本发明的各实施例还包括非暂态有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(hdl),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。

在一些情形下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。

因此,公开了用于执行根据至少一个实施例的一条或多条指令的技术。虽然已经描述并在附图中示出了某些示例性实施例,但是应当理解,此类实施例仅仅是对本宽泛发明的说明而非限制,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到各种其他修改。在诸如本申请这样的、发展迅速且进一步的进展难以预见的技术领域中,所公开的多个实施例在通过启用技术进步所促成的配置和细节上是容易修改的,同时不背离本公开的原理和所附权利要求书的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1