支持用于存储器地址范围的可配置安全级别的制作方法

文档序号:14033929阅读:238来源:国知局
支持用于存储器地址范围的可配置安全级别的制作方法

本公开的实施例一般涉及计算机系统,并且更具体地涉及但不限于支持用于存储器地址范围的可配置安全级别。

背景

确保计算机系统内的应用和数据的执行和完整性的安全越来越重要。各种已知的安全技术不能以灵活但可靠的方式充分确保应用和数据的安全。

附图说明

通过下文给出的具体实施方式并通过本公开各种实施例的附图,将更完整地理解本公开。然而,不应当认为这些附图将本公开限制为特定实施例,而是这些附图仅用于说明和理解。

图1示出根据一个实施例的处理设备的框图。

图2示出根据一个实施例的包括用于支持用于存储器地址范围的可配置安全级别的存储器的系统。

图3示意性地示出根据本公开的一个或多个方面的为存储用于实现完整性和重放保护的加密元数据所采用的示例数据结构。

图4示出根据一个实施例的用于支持用于存储器地址范围的可配置安全级别的方法的流程图。

图5a是示出根据一个实施例的处理器的微架构的框图。

图5b是示出根据一个实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。

图6是示出根据一种实现方式的计算机系统的框图。

图7是示出系统的框图,在该系统中可以使用本公开的实施例。

图8是示出系统的框图,在该系统中可以使用本公开的实施例。

图9是示出系统的框图,在该系统中可以使用本公开的实施例。

图10是示出芯片上系统(soc)的框图,在该芯片上系统中可以使用本公开的实施例。

图11是示出soc设计的框图,在该soc设计中可以使用本公开的实施例。

图12示出了示出计算机系统的框图,在该计算机系统中可以使用本公开的实施例。

具体实施方式

描述了用于支持用于存储器地址范围的可配置安全级别的技术。在一个实施例中,提供了一种处理器。该处理器可以包括配置为实现软件防护扩展技术以提供存储器保护的处理逻辑。“存储器保护”通常可以包括通过加密、完整性和/或重放保护来保护数据的机密性。完整性保护可以抵抗攻击,其中例如,攻击者可以在解密之前修改存储器中的经加密的数据。重放保护可以阻止攻击,其中例如,攻击者使得解密操作重复以获得对受保护的数据的未经授权的访问。

使用提供安全的硬件加密的计算和存储环境(例如,安全飞地)的某些处理器指令。本文中的“安全飞地”将指应用的地址空间内的使应用能保持秘密并且保护其代码的完整性的受保护的区域。对来自未驻留在飞地中的应用的与安全飞地相关联的数据的访问被阻止,即使这种访问是由有特权的应用(诸如bios、操作系统或虚拟机监视器)尝试的。此外,安全飞地的数据内容不能通过有特权的代码或者甚至不能通过向存储器总线应用硬件探头来解密。

可以实现用于保护安全飞地的数据的若干技术。在一个实施例中,可以使用存储器加密引擎(mee)硬件以用于数据的加密以及该数据的完整性和重放保护。mee可以加密被移动至可能在处理器外部的不受信任的系统存储器的数据。当存储器页存储在系统存储器中时,mee使用加密机制来加密数据并且使用其他技术来提供完整性和机密性。当从系统存储器读取数据时,mee解密数据并检查数据的完整性,并且然后将数据置于处理器的内部高速缓存中。

为了对受保护的数据提供完整性保护,mee可以存储消息认证码(mac)值,其中处理器高速缓存的每个数据行被移动至系统存储器。当从系统存储器读取数据行时,其完整性可以通过计算数据行的mac值以及将所计算的mac值与所存储的mac值进行比较来验证。在某些实现方式中,mac存储在系统存储器中,并且因此还需要被保护免于被访问或篡改。重放保护可以进一步由处理器通过存储每当数据行被写回至系统存储器时递增的数据行的版本(ver)来提供。

为了保护mac和ver值本身,可以采用包括多个节点的重放保护树。树的每个节点由基于节点内容和存储在树的下一级别上的计数器的值计算的嵌入式mac(emac)验证。mac、ver和计数器的值在本文中可以共同称为“加密元数据”。重放保护树可以具有可变数量的级别,每个级别处包括一种类型的计数器。为了确保重放保护,通过从存储数据行的ver值的端节点开始遍历树来验证从外部存储器读取的每个数据行。重放保护树中的级别的数量随着受保护的存储器区域的尺寸线性地增长。例如,为了保护64gb的存储器区域,可以利用七级树,因此要求顶级计数器为8kb。因此,对于数据行的每次读取,将需要从系统存储器加载七个附加存储器行,由此与未受保护的存储器读取将需要的数据存储器带宽的量相比创建所需的数据存储器带宽的量的七倍的开销。

在一些情况下,各种系统可能要求大量的存储器带宽。例如,一些系统应用可能调用高比率的数据在其与存储器之间来回移动。此外,一些系统可能具有需要整个应用在安全飞地内运行的使用模型。在这些情形下,系统性能高度依赖可用于应用的存储器带宽的量,可用于应用的存储器带宽的量可能被与重放保护树相关联的带宽要求影响。

本公开的实施例提供允许诸如系统管理员的用户配置安全性与性能之间的平衡的机制。在一些实施例中,可以配置安全范围寄存器以使使用重放保护树来保护数据的带宽和性能影响最小化。在一个实施例中,安全范围寄存器可以包括安全级别指示符,其可以用于将受保护的存储器的总范围分成至少两个子类别:1)仅加密范围,以及2)完全保护范围。在完全保护范围中,处理器可以使用诸如mee的加密硬件来提供加密、完整性和重放保护。在仅加密范围中,加密硬件可以用于在将数据行发送至存储器之前仅加密数据行。因为加密硬件不需要访问加密元数据(例如,mac和ver数据),所以加密硬件不会显著地影响处理器的带宽利用,从而提高系统性能。

图1示出根据一个实施例的处理设备100的框图,其可以支持可配置安全范围功能。处理设备100一般可以称为“处理器”或“cpu”。此处的“处理器”或“cpu”将指能够执行对算术、逻辑或i/o操作进行编码的指令的设备。在一个说明性示例中,处理器可以包括算术逻辑单元(alu)、控制单元以及多个寄存器。在另一方面中,处理器可以包括一个或多个处理核,因此,处理器可以是通常能够处理单个指令流水线的单核处理器,或可以是可以同时处理多个指令流水线的多核处理器。在另一方面中,处理器可以实现为单个集成电路、两个或更多个集成电路,或可以是多芯片模块(例如,其中,各个微处理器管芯被包括在单个集成电路封装中,因此,这些微处理器管芯共享单个插槽)的组件。

如图1所示,处理设备100可以包括各种组件。在一个实施例中,处理设备100可以包括一个或多个处理器核110和存储器控制器单元120以及其他组件,如所示地相互耦合。处理设备100还可以包括通信组件(未示出),其可以用于处理设备100的各种组件之间的点对点通信。处理设备100可用在包括但不限于台式计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(pda)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、因特网设备或任何其他类型的计算设备的计算系统(未示出)中。在另一实施例中,处理设备100可用在芯片上系统(soc)系统中。在一个实施例中,soc可以包括处理设备100和存储器。一个这样的系统的存储器是dram存储器。dram存储器可以位于与处理器和其他系统组件相同的芯片上。另外,诸如存储器控制器或图形控制器的其他逻辑块也可以位于芯片上。

处理器核110可以执行处理设备100的指令。指令可以包括但不限于:用于取出指令的预取逻辑、用于解码指令的解码逻辑、用于执行指令的执行逻辑等。计算系统可以代表基于可从美国加利福尼亚州圣克拉拉市的英公司获得的族处理器和/或微处理器的处理系统,不过也可使用其他系统(包括具有其他微处理器的计算设备、工程工作站、机顶盒等)。在一个实施例中,样本计算系统可以执行操作系统、嵌入式软件和/或图形用户界面的一个版本。因此,本公开的各实施例不限于硬件电路和软件的任何特定组合。

在说明性示例中,处理核110可以具有微架构,其包括用于实现指令集架构(isa)的处理器逻辑和电路。具有不同微架构的多个处理器核可共享公共指令集的至少一部分。例如,isa的相同寄存器架构在不同的微架构中可使用各种技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,使用寄存器别名表(rat)、重排序缓冲器(rob)、以及引退寄存器堆)的一个或多个动态分配物理寄存器。

存储器控制器120可以执行使得处理设备100能访问包括易失性存储器和/或非易失性存储器的存储器(未示出)并与之进行通信的功能。在一个实施例中,存储器控制器120可以耦合至存储器加密引擎(mee)130等。本文中的mee130将指代硬件实现的处理逻辑,其加密处理设备100与处理器芯片外的存储器(诸如随机存取存储器(sram)或动态随机存取存储器(dram))之间的数据通信量。在一些实施例中,mee130可以位于与处理设备100相关联的处理器芯片上,而存储器位于处理器芯片外。

处理设备100包括用于高速缓存指令和/或数据的高速缓存单元140。高速缓存单元140包括但不限于一级(l1)142、二级(l2)144和末级高速缓存(llc)146,或处理设备100中的高速缓存存储器的任何其他配置。如所示,高速缓存单元140可以集成在处理核110中。高速缓存单元140可以存储被处理设备100的一个或多个组件利用的数据(例如,包括指令)。例如,高速缓存单元140可以本地地高速缓存数据以用于处理设备100的组件的更快的访问。在一些实施例中,l1高速缓存142和l2高速缓存144可以在其与llc146之间传输数据。在一个实施例中,存储器控制器120可以连接至llc146并且可以连接至mee130。存储器控制器120可以访问驻留在可能在处理设备100外部的存储器上的受保护的数据。

在一些实施例中,处理设备100可以利用技术来保护在受保护的环境中的存储器的至少一部分。在一个实施例中,处理设备100可以支持安全飞地(未示出),安全飞地可以表示任何逻辑、电路、硬件(诸如mee130)、或处理核110执行的其他结构以用于为存储器的一部分创建和维持受保护的区域。这种环境的每个实例可以被称为安全飞地,尽管本发明的实施例不限于使用安全飞地作为受保护的环境的那些环境。在一个实施例中,可以使用来自公司的处理器族或其他处理器族中的处理器的指令集中的指令来创建和维持安全飞地。

处理设备100可以实现若干技术以用于保护与安全飞地相关联的存储器数据。在一个示例中,处理设备100可以使用mee130实现保护机制。例如,如果高速缓存数据行属于安全飞地,则mee130可以保护被逐出处理设备100并且移动至存储器的高速缓存数据行。在一个实施例中,例如当随着数据行移动到处理设备100中和移动到处理设备100外攻击者尝试静默地观察数据行时,mee130可以使用对高速缓存行的加密来抵抗被动攻击。例如,为了加密高速缓存行,mee130可以实现一种算法,该算法可以使用秘密密钥(例如,密码密钥)执行一系列变换以将称为“明文”的可理解数据变换成称为“密文”的不可理解形式。在该示例中,解密(逆向密码)可以由mee使用密码密钥在一系列变换中执行以将密文变换回明文。这仅仅是一个示例,因为其他类型的加密逻辑也可以由mee130实现。

在另一实施例中,为了提供完整性/重放保护以抵抗主动攻击(其中攻击者可以改变存储在存储器中的数据以引起处理设备100中的原本将不会发生的活动),mee130可以执行计数器模式加密技术,其要求加密种子对于数据行在时间上和空间上均是唯一的。空间唯一性可通过使用要被访问的数据行的地址来实现,而时间唯一性可通过使用用作数据行的版本的计数器来实现。在一个实施例中,mee130也通过使用计数器树结构来保护数据行,在计数器树结构中只有树的根存储在管芯上并且形成信任根(即,信任边界)。数据行的版本是该计数器树结构的一部分。替代地,可为重放保护使用其他保护机制。例如,与安全高速缓存行相关联的mac可存储在管芯上,因为成功的重放攻击将需要重放数据行及其相关联的mac。

在一些实施例中,处理设备100可以包括将受保护的存储器分成包括第一安全级别和第二安全级别的两个类别的机制。例如,第一安全级别可以指示仅使用加密保护的存储器的范围,而第二安全级别可以指示使用mee130生成的加密元数据保护的存储器的范围。在一个实施例中,可配置安全范围寄存器150可以用于将受保护的存储器分成至少两个子类别。可配置安全范围寄存器150可以是可用作处理设备100的一部分的存储硬件。在一个实施例中,可配置安全范围寄存器150可以包括安全级别指示符(例如,数组、树、其他寄存器或各种类型的数据结构等)的集合,该安全级别指示符的集合可配置有或以其他方式编程有一个或多个值以指定将系统存储器分成子类别的存储器范围。可配置安全范围寄存器150可以结合处理设备100的isa架构一起工作。在一个实施例中,当安全飞地发动时,安全飞地可以设置可配置安全范围寄存器150的值并且在寄存器150中设置锁定位,例如,这阻止值后续被改变,除非重启发生。

图2示出根据一个实施例的包括用于支持用于存储器地址范围的可配置安全级别的存储器201的系统200。在该示例中,存储器201包括受保护的地址范围,其被分成多个安全级别子类别,诸如完全保护范围(例如,使用mee130生成的加密元数据来加密数据)以及仅加密范围(例如,在不生成加密元数据的情况下加密数据)。如上所述,处理设备100的可配置安全范围寄存器150可以包括安全级别指示符202以标识存储器201的哪些存储器范围正在完全保护范围或仅加密范围被保护。在一些实施例中,安全级别指示符202可以包括但不限于,数据数组、树、可以被设置为值的其他寄存器或不同类型的数据结构,诸如存储器地址。

在一些实施例中,可以以若干方式对可配置安全范围寄存器150的安全级别指示符202进行编程以标识与存储器201中的存储器范围相关联的安全级别。在一个实施例中,安全范围寄存器150可以配置为显式地标识受保护的仅加密范围。因此,存储在该范围外部的位置中的任何数据项可以接收完全保护。例如,安全范围寄存器150的安全级别指示符202可以包括可以设置为与诸如存储器范围210的仅加密存储器范围的开始存储器地址203和结束存储器地址205对应的存储器位置地址的数据结构。该配置可以为处理设备100标识用于保存在存储器的仅加密范围中的任何数据的该仅加密范围。就此,可以使用加密逻辑(例如,密文)来加密/解密保存在该范围中的数据。当数据保存在该范围外部的存储器位置(诸如存储器范围220和230)中时,该数据可以使用mee130生成的加密元数据被完全地保护。

在另一实施例中,安全级别指示符202可以包括设置为标识子范围之间的边界的存储器地址的数据结构。例如,安全级别指示符202可以包括可以设置为存储器地址203、205和207的数据结构,其中每个存储器地址指示子范围的开始和结束边界。在该示例中,安全级别指示符202还可以包括指示例如存储器地址203和205之间的子范围可以是受保护的存储器的仅加密范围和/或存储器地址205和207之间的子范围可以是受保护的存储器的完全保护范围的值。

在又一实施例中,安全级别指示符202可以包括设置为标识存储器201中的将存储器201分成多个安全级别子范围的边界点的存储器地址的数据结构。例如,数据结构可以包括与可以将存储器201的保护范围分成仅加密范围和完全保护范围的存储器地址203对应的值。在该示例中,安全级别指示符202可以包括方向位,其可以配置为标识边界的哪一侧是仅加密范围和哪一侧是完全保护范围。可以根据安全级别指示符202中设置的值来加密移动至这些被标识的范围和从这些被标识的范围移动出的数据。此外,可以采用其他技术来利用可配置安全范围寄存器150的安全级别指示符202以标识存储器201的保护范围的不同安全级别子范围。

如图2所示,可以使用处理设备100的加密逻辑来保护受保护的应用代码和数据(诸如与安全飞地相关联的应用/数据)。例如,被逐出处理器芯片的属于该存储器位置的任何数据行在被存储在存储器201中之前将被处理器加密逻辑加密(例如,密文),并且随后在被返回至存储器核110之前被解密。由此,不需要额外地存储和检索完全保护范围使用的加密元数据。尽管经加密的数据/密文保持数据的机密性,但是其不保护存储器免受主动攻击或重放攻击。然而,攻击者不能易理解地读取数据。此外,可以通过保护数据免受许多软件攻击的某些指令来保护数据,并且isa使用的范围(例如,存储器范围230)存储在完全保护范围中以避免对该存储器的范围的任何主动攻击或重放攻击。

在一些实施例中,可以配置完全保护范围以便占据被保护的存储器201的总范围的某个百分比(例如,少于百分之10)。可以配置该某个百分比以节省存储器带宽。例如,如果总保护范围包括存储器的64gb,则完全保护范围可以包括该存储器的1gb,而仅加密范围可以包括63gb。在一些实施例中,控制isa的运行的所有存储器位于该完全保护范围(例如,存储器范围230)中。这可以确保当多个线程在该存储器的范围中运行时,多个线程将具有时间和空间局部性。时间局部性指代在相对小的时间段内对特定存储器位置的多次访问。空间局部性指代在相对小的时间段内对相对接近的存储器位置的访问。

在一些实施例中,位于完全保护范围中的存储器可以通过使用加密元数据被完全地保护。在一个实施例中,除了保护数据的机密性,mee130可以为数据的完整性和重放保护生成加密元数据。此后,mee130可以将加密元数据存储在位于完全保护范围中的位置中,诸如存储器范围220中。下文参考图3讨论用于存储加密元数据的数据结构的示例(例如,重放保护树)。

图3示意性地示出根据本公开的一个或多个方面的为存储用于实现完整性和重放保护的加密元数据所采用的示例数据结构300。在该示例中,数据结构300可以包括例如由处理设备100的mee130生成的重放保护树。重放保护树结构包括树节点的级别的层次结构。顶(根)级包括一系列管芯上计数器(即,l3计数器310),这些计数器存储在与处理设备100相关联的处理器管芯的内部存储中。内部存储包括但不限于,管芯上静态随机存取存储器(sram)、寄存器堆以及处理器管芯中的任何其他合适的存储器。由于l3计数器310在处理器管芯上,所以它们的内容是受信任的并且免受被动和主动攻击。

在一个实施例中,每个l3计数器310链接至l2中间元数据315的块,其包括一系列l2计数器320。每个l2计数器320链接至l1中间元数据的块(未示出),其包括一系列l1计数器(未示出)。在该示例中,为了说明的简单,从图3省略表示l1中间元数据和l1计数器的块。每个l1计数器链接至l0中间元数据325的块,其包括一系列l0计数器330。每个l0计数器330链接至版本块340,其包括一系列版本节点345。每个版本节点345与存储器201的受保护的区域中的经加密的数据行360相关联。版本节点345的内容是相关联的数据行的版本,其提供计数器模式加密中的加密种子的时间分量。由于较低级计数器(包括l2、l1和l0计数器以及版本节点345)在处理器管芯之外并且因此易受攻击的影响,所以利用嵌入式消息认证码(mac)(示出为具有阴影线的块)对每个计数器和每个版本节点进行编码以确保它们的完整性。

在数据行移动至存储器201之前,其可以被mee130加密。对于从存储器读取,经加密的数据行360在被传递至处理核110之前可以被mee130解密。每个经加密的数据行360编码有包括根据数据行360的内容计算的mac的mac节点350。每当数据行被写回至存储器时,mee130更新该mac以反映存储在存储器201中的最近的数据值。当从存储器201读取数据行时,mee130通过计算数据行的mac值以及将所计算的mac值与所存储的mac值进行比较来验证其完整性。重放保护可以进一步通过对每个数据行存储每当数据行被写回至存储器201时递增的其版本(ver)值345来提供。

当处理设备100执行写入操作以将经加密的数据行360中的一个写入驻留在存储器201上的受保护的存储器区域时(例如,当将来自管芯上llc146的数据行驱逐至存储器201中的受保护的区域时),mee130更新与数据行相关联的mac350并且使该数据行的版本345和与该数据行相关联的l0、l1、l2和l3计数器(310、320、330)递增。这个更新过程从计数器树的底部级继续向上至l3计数器的根级,l3计数器安全地存储在处理器管芯上的芯片上并且因此被保证有抵抗攻击的保护。在计数器树的每个级别的计数器充当下一较低级的版本,以存储数据行的版本的版本节点345结束。因此,在写入数据行时,更新所有计数器(包括版本)及其相关联的嵌入式mac以及数据行的地址标识的分支以反映版本更新。

为了确保重放保护,每当从受保护的区域加载数据行时,对向上至计数器树的根的树节点验证该数据行的真实性。任何级别处的不匹配指示潜在的攻击并且引起安全异常,从而打败攻击。具体而言,当处理设备100对经加密的数据行360中的一个执行读取操作时,mee130标识该数据行的版本和l0、l1、l2和l3计数器(310、320、330)。读取操作不改变版本和l0、l1、l2和l3计数器(310、320、330)的值。在读取操作之后,mee130验证与数据行相关联的mac350。此外,mee130验证与版本、l0、l1、l2和l3计数器(310、320、330)中的每一个相关联的嵌入式mac。这个验证过程从计数器树的底部级继续向上至安全根计数器l3。

图4示出根据一个实施例的用于支持用于存储器地址范围的可配置安全级别的方法的流程图。方法400可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,在处理设备上运行的指令)、固件或其组合的处理逻辑来执行。在一个实施例中,处理设备100的处理器核110可以执行方法400。尽管以特定顺序或次序示出,但是这些过程的次序可被修改,除非另行指出。因此,所示实现方式应被理解成仅作为示例,并且所示过程可按不同次序来执行,且一些过程可被并行地执行。此外,在各实施例中可以省略一个或多个过程。因此,在每一实现方式中不要求所有过程。其它过程流程是可能的。

方法400在框410处开始,其中可以标识寄存器,该寄存器指示被保护的存储器范围为仅加密的还是完全保护的。例如,处理设备100可以标识可配置安全级别寄存器150中的安全级别指示符202。如上所述,指示符202的集合可以包括被设置为用于指示存储器数据被保护为仅加密保护还是完全保护的值的一个或多个数据结构。在框415处,方法400取决于是正在将数据项移动至芯片外存储器还是从芯片外存储器移动出而分支。如果正在将数据移动至存储器,则方法400可以继续至框420。否则,方法400继续至框460。

在框420处,方法400基于在框410处标识的寄存器来确定被移动到存储器中的数据项的安全级别。如果确定数据项正在被移动至存储器的完全保护范围,则方法400可以继续至框430。否则,方法400继续至框450。在框430处,处理设备100的加密硬件(诸如mee130)可以从本地元数据高速缓存检索加密元数据以用于数据项。如果高速缓存未命中发生,则加密硬件可以从芯片外存储器得到元数据。在框440处,加密元数据可以存储在本地元数据高速缓存中,并且数据项可以被加密并且发送至存储器。如果确定数据项正在被移动至存储器的仅加密保护范围,则在框450处,处理设备100的加密硬件用于在不生成加密元数据的情况下加密数据项。

在框460处,方法400基于在框410处标识的寄存器来确定从存储器读取的数据项的安全级别。如果确定数据项正在被从存储器的完全保护范围读取,则方法400可以继续至框470。否则,方法400继续至框490。在框470处,mee130检索加密元数据以用于来自存储器的数据项,并且在框480处使用加密元数据来验证数据项。如果确定数据项正在被从存储器的仅加密保护范围读取,则在490处,处理设备100使用加密硬件来解密数据项。

图5a是示出根据本公开的一个实施例的用于实现支持用于存储器地址范围的可配置安全级别的技术的处理器500的微架构的框图。具体地,处理器500描绘根据本公开的至少一个实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。

处理器500包括前端单元530,该前端单元530耦合到执行引擎单元550,前端单元530和执行引擎单元550两者都耦合到存储器单元570。处理器500可包括精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核或混合或替代核类型。作为另一个选项,处理器500可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在一个实施例中,处理器500可以是多核处理器或者可以是多处理器系统的一部分。

前端单元530包括耦合到指令高速缓存单元534的分支预测单元532,该指令高速缓存单元耦合到指令转换后备缓冲器(tlb)536,该指令转换后备缓冲器耦合到指令取出单元538,指令取出单元耦合到解码单元540。解码单元540(也称为解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码器540可使用各种不同的机制来实现。合适的机制的示例包括但不限于:查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。指令高速缓存单元534进一步耦合至存储器单元570。解码单元540耦合至执行引擎单元550中的重命名/分配器单元552。

执行引擎单元550包括耦合到引退单元554和一个或多个调度器单元556的集合的重命名/分配器单元552。调度器单元556表示任何数目的不同调度器,包括预留站(rs)、中央指令窗等。调度器单元556耦合至物理寄存器堆单元558。物理寄存器堆单元558中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,等等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等等。物理寄存器堆单元558与引退单元554重叠以示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用重排序缓冲器和引退寄存器堆;使用未来文件、历史缓冲器和引退寄存器堆;使用寄存器映射和寄存器池等等)。执行引擎单元550可以包括例如管理功能单元的功率功能的功率管理单元(pmu)590。

通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。多种不同类型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元554和物理寄存器堆单元558耦合至执行群集560。执行群集560包括一个或多个执行单元562的集合以及一个或多个存储器访问单元564的集合。执行单元562可执行多种操作(例如,移位、加法、减法、乘法)并可对多种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。

尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其它实施例可包括仅一个执行单元或全部执行所有功能的多个执行单元。调度器单元556、物理寄存器堆单元558和执行群集560被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整型流水线、标量浮点/紧缩整型/紧缩浮点/向量整型/向量浮点流水线,和/或各自具有其自己的调度器单元、物理寄存器堆单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元564的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为乱序发布/执行,并且其余流水线可以为有序发布/执行。

存储器访问单元564的集合耦合到存储器单元570,该存储器单元570可包括数据预取器580、数据tlb单元572、数据高速缓存单元(dcu)574、第二级(l2)高速缓存单元576,仅举数例。在一些实施例中,dcu574也称为第一级数据高速缓存(l1高速缓存)。dcu574可处理多个未决的高速缓存未命中,并继续服务传入的存储和加载。它也支持维护高速缓存一致性。数据tlb单元572是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括加载单元、存储地址单元以及存储数据单元,其中的每一个均耦合至存储器单元570中的数据tlb单元572。l2高速缓存单元576可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。

在一个实施例中,数据预取器580通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到dcu574。预取可以指示在存储在存储器层次结构(例如,较低等级的高速缓存或存储器)的一个存储器位置的数据被处理器实际要求之前,将数据转换至更靠近(例如,产生更少访问等待时间)处理器的较高等级的存储器位置。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器之一至数据高速缓存和/或预取缓冲器的早期取回。

在一个实现方式中,处理器500可以与参考图1描述的处理设备100相同。具体而言,数据tlb单元572可以与tlb155相同并参考图1描述,以在处理设备中实现参考本公开的实现方式描述的用于为存储器地址范围支持可配置安全级别的技术。

处理器500可以支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的mips技术公司的mips指令集、加利福尼亚州桑尼威尔的arm控股公司的arm指令集(具有可选附加扩展,诸如neon))。

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

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

图5b是示出根据本公开的一些实施例的由图5a的处理器500实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图5b中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、乱序发布/执行流水线。在图5b中,处理器流水线501包括取出级502、长度解码级504、解码级506、分配级508、重命名级510、调度(也被称为分派或发布)级512、寄存器读取/存储器读取级514、执行级516、写回/存储器写入级518、异常处理级522和提交级524。在一些实施例中,各个级502-524的排序可以与所示的不同,并且不限于图5b中所示的特定排序。

图6示出根据本公开的一个实施例的包括用于实现为存储器地址范围支持可配置安全级别的技术的逻辑电路的处理器600的微架构的框图。在一些实施例中,根据一个实施例的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端601是处理器600的一部分,其取出将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。

前端601可包括若干单元。在一个实施例中,指令预取器626从存储器取出指令,并将指令馈送至指令解码器628,指令解码器628随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实施例的操作。在一个实施例中,追踪高速缓存630接受经解码的微操作,并将它们组装为微操作队列634中的程序有序序列或踪迹,以用于执行。当追踪高速缓存630遇到复杂指令时,微代码rom632提供完成操作所需的uop。

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

乱序执行引擎603是将指令准备好用于执行的地方。乱序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器602、慢速/通用浮点调度器604、简单浮点调度器606)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器602、604、606基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器602可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。

在执行块611中,寄存器堆608和610位于调度器602、604和606以及执行单元612、614、616、618、620、622和624之间。存在分别用于整数和浮点操作的分开的寄存器堆608、610。一个实施例的每个寄存器堆608、610也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆608和浮点寄存器堆610也能够彼此传递数据。对于一个实施例,整数寄存器堆608被划分为两个单独的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实施例的浮点寄存器堆610具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。

执行块611包括执行单元612、614、616、618、620、622、624,在执行单元612、614、616、618、620、622、624中实际执行指令。该区块包括寄存器堆608、610,寄存器堆608、610存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器600包括有多个执行单元:地址生成单元(agu)612、agu614、快速alu616、快速alu618、慢速alu620、浮点alu622、浮点移动单元624。对于一个实施例,浮点执行块622、624执行浮点、mmx、simd、sse或其他操作。一个实施例的浮点alu622包括64位/64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的诸个实施例,涉及浮点值的指令可使用浮点硬件来处理。

在一个实施例中,alu操作进入高速alu执行单元616、618。一个实施例的快速alu616、618可执行快速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速alu620,因为慢速alu620包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由agu612、614来执行。对于一个实施例,整数alu616、618、620被描述为对64位数据操作数执行整数操作。在替代实施例中,alu616、618、620可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元622、624可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元622、624可结合simd和多媒体指令对128位宽度紧缩数据操作数进行操作。

在一个实施例中,在父加载完成执行之前,微操作调度器602、604、606就分派依赖性操作。因为在处理器600中微操作被推测地调度和执行,所以处理器600也包括处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖性操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也设计成用于捕捉用于文本串比较操作的指令序列。

根据本公开的各实施例,处理器600还包括用于实现用于存储器消歧的存储地址预测的逻辑。在一个实施例中,处理器600的执行块611可以包括用于实现用于为存储器地址范围支持可配置安全级别的技术的存储地址预测器(未示出)。

术语“寄存器”可以指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,实施例的寄存器不限于表示特定类型的电路。相反,实施例的寄存器能够存储并提供数据,并能够执行本文中所述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含八个多媒体simd寄存器,用于紧缩数据。

对于以下讨论,寄存器应理解为设计成用于保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了mmx技术的微处理器中的64位宽mmxtm寄存器(在一些实例中,也称为‘mm’寄存器)。这些mmx寄存器(可用在整数和浮点形式中)可与伴随simd和sse指令的紧缩数据元素一起操作。类似地,涉及sse2、sse3、sse4或更新的技术(统称为“ssex”)的128位宽xmm寄存器也可被用于保持这样紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器堆中,或被包括在不同的寄存器堆中。进一步地,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。

实施例可在许多不同的系统类型中实现。现在参考图7,所示的是示出了系统700的框图,在系统700中可以使用本公开的实施例。如图7所示,多处理器系统700是点对点互连系统,且包括经由点对点互连750耦合的第一处理器770和第二处理器780。虽然仅以两个处理器770和780示出,但是应当理解,本公开的实施例的范围不限于此。在其他实施例中,在给定处理器中可存在一个或多个附加处理器。在一个实施例中,多处理器系统700可以实现本文所述的用于为存储器地址范围支持可配置安全级别的技术。

处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(p-p)接口776和778;类似地,第二处理器780包括p-p接口786和788。处理器770、780可以经由使用点对点(p-p)接口电路778、788的p-p接口750来交换信息。如图7所示,imc772和782将处理器耦合到相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连到相应处理器的主存储器的部分。

处理器770、780可经由使用点对点接口电路776、794、786、798的各个p-p接口752、754与芯片组790交换信息。芯片组790还可经由高性能图形接口739与高性能图形电路738交换信息。

共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由p-p互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。

芯片组790可以经由接口796耦合至第一总线716。在一个实施例中,第一总线716可以是外围组件互连(pci)总线或诸如pci高速总线或另一第三代i/o互连总线之类的总线,但是本公开的范围不限于此。

如图7所示,各种i/o设备714可连同总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(lpc)总线。在一个实施例中,各种设备可以耦合至第二总线720,包括例如,键盘和/或鼠标722、通信设备727以及可包括指令/代码和数据730的存储单元728(诸如,盘驱动器或其他大容量存储设备)。此外,音频i/o724可以被耦合到第二总线720。注意,其他架构是可能的。例如,代替图7的点对点架构,系统可以实现多分支总线或其他这类架构。

现在参考图8,所示的是系统800的框图,在系统800中本公开的一个实施例可以操作。系统800可以包括耦合至图形存储器控制器中枢(gmch)820的一个或多个处理器810、815。附加的处理器815的可选性在图8中通过虚线来表示。在一个实施例中,处理器810、815实现根据本公开的实施例的为存储器地址范围支持可配置安全级别的技术。

每个处理器810、815可以是如上所述的电路、集成电路、处理器和/或硅集成电路的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制单元不太可能出现在处理器810、815中。图8示出了gmch820可以耦合至存储器840,该存储器840可以是例如动态随机存取存储器(dram)。对于至少一个实施例,dram可以与非易失性高速缓存相关联。

gmch820可以是芯片组或芯片组的部分。gmch820可以与处理器810、815进行通信,并控制处理器810、815与存储器840之间的交互。gmch820还可担当处理器810、815和系统800的其他元件之间的加速总线接口。对于至少一个实施例,gmch820经由诸如前端总线(fsb)895之类的多点总线与处理器810、815进行通信。

此外,gmch820耦合至显示器845(诸如平板或触摸屏显示器)。gmch820可包括集成图形加速器。gmch820进一步耦合至输入/输出(i/o)控制器中枢(ich)850,该输入/输出(i/o)控制器中枢(ich)850可用于将各种外围设备耦合至系统800。在图8的实施例中作为示例示出了外部图形设备860以及另一外围设备870,外部图形设备860可以是耦合至ich850的分立图形设备。

替代地,附加的或不同的处理器也可存在于系统800中。例如,附加的处理器815可以包括与处理器810相同的附加的处理器、与处理器810异构的或不对称的附加的处理器、加速器(诸如例如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列或任何其他处理器。在包括架构、微架构、热、功耗特征等一系列品质度量的方面,处理器810、815之间存在各种差异。这些差异可以有效显示为处理器810和815之间的不对称性和异构性。对于至少一个实施例,各种处理器810和815可驻留在同一管芯封装中。

现在参考图9,所示的是系统900的框图,在系统900中本公开的实施例可以操作。图9示出了处理器970和980。在一个实施例中,处理器970、980可以实现上文所述的用于为存储器地址范围支持可配置安全级别的技术。处理器970、980可以分别包括集成存储器和i/o控制逻辑(“cl”)972和982,并且分别经由点对点(p-p)接口978和988之间的点对点互连950彼此相互通信。处理器970、980各自通过相应p-p接口976到994以及986到998经由点对点互连952和954与芯片组990通信,如图所示。对于至少一个实施例,cl972、982可以包括集成存储器控制器单元。cl972、982可以包括i/o控制逻辑。如图所示,存储器932、934耦合至cl972、982,并且i/o设备914也耦合至控制逻辑972、982。传统i/o设备915经由接口996耦合至芯片组990。

实施例可在许多不同的系统类型中实现。图10是根据本公开的实施例的soc1000的框图。虚线框是更先进的soc的可选特征。在图10中,互连单元1012耦合至:应用处理器1020,包括一组一个或多个核1002a-n以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个媒体处理器1018,可包括集成图形逻辑1008、用于提供静态和/或视频照相功能的图像处理器1024、提供硬件音频加速的音频处理器1026、提供视频编码/解码加速的视频处理器1028、静态随机存取存储器(sram)单元1030;直接存储器存取(dma)单元1032;以及显示单元1040,用于耦合至一个或多个外部显示器。在一个实施例中,存储器模块可以被包括在集成存储器控制器单元1014中。在另一个实施例中,存储器模块可以被包括在可以被用来访问和/或控制存储器的soc1000的一个或多个其他组件中。应用处理器1020可以包括用于实现静默存储器指令和未命中率跟踪的pmu以优化如本文的实施例所述的对线程的切换策略。

存储器层次结构包括核内的一个或多个层级的高速缓存、一组或一个或多个共享高速缓存单元1006以及耦合到集成存储器控制器单元1014的集合的外部存储器(未示出)。共享高速缓存单元1006的集合可包括一个或多个中级高速缓存,诸如,第二级(l2)、第三级(l3)、第四级(l4)或其他级别的高速缓存、末级高速缓存(llc)和/或以上的组合。

在一些实施例中,一个或多个核1002a-n能够实现多线程。系统代理1010包括协调并操作核1002a-n的那些组件。系统代理单元1010可包括例如功率控制单元(pcu)和显示单元。pcu可以是对核1002a-n以及集成图形逻辑1008的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。

核1002a-n在架构和/或指令集方面可以是同构或异构的。例如,核1002a-n中的一些可以是有序的,而另一些是乱序的。作为另一个示例,核1002a-n中的两个或更多能够执行相同的指令集,而其他核仅能够执行该指令集的子集或不同的指令集。

应用处理器1020可以是通用处理器,诸如,酷睿(coretm)i3、i5、i7、2duo和quad、至强(xeontm)、安腾(itaniumtm)、凌动(atomtm)或quarktm处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔tm公司获得。或者,应用处理器1020可以来自另一个公司,诸如arm控股tm公司、mipstm等。应用处理器1020可以是专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。应用处理器1020可以被实现在一个或多个芯片上。应用处理器1020可以是一个或多个衬底的部分,并且/或者可以使用诸如例如bicmos、cmos或nmos之类的多种工艺技术中的任何技术将应用处理器1020实现在一个或多个衬底上。

图11是根据本公开的芯片上系统(soc)设计的实施例的框图。作为特定的说明性示例,soc1100被包括在用户装备(ue)中。在一个实施例中,ue是指可由最终用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本,或任何其他类似的通信设备。ue常常连接到基站或节点,该基站或节点本质上潜在地对应于gsm网络中的移动站(ms)。

在此,soc1100包括2个核——1106和1107。核1106和1107可符合指令集架构,诸如,基于架构酷睿(coretm)的处理器、超微半导体公司(amd)处理器、基于mips的处理器、基于arm的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1106和1107耦合到高速缓存控件1108,该高速缓存控件1108与总线接口单元1109和l2高速缓存1110相关联以与系统1100的其他部分通信。互连1110包括可能实现所述公开的一个或多个方面的芯片上互连,诸如iosf、amba或上文讨论的其他互连。在一个实施例中,核1106、1107可以实现如本文的实施例所述的用于为存储器地址范围支持可配置安全级别的技术。

互连1110提供到其他组件的通信信道,其他组件诸如用于与用户身份模块(sim)卡对接的sim1130、用于保存供核1106和1107执行以初始化和引导soc1100的引导代码的引导rom1140、用于与外部存储器(例如,dram1160)对接的sdram控制器1140、用于与非易失性存储器(例如,闪存1165)对接的闪存控制器1145、用于与外围设备对接的外围控制装置1150(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的gpu1115等等。这些接口中的任何一种可以包括本文中所述公开的多个方面。另外,系统1100示出了用于通信的外围设备,诸如蓝牙模块1170、3g调制解调器1175、gps1180以及wi-fi1185。

图12示出了计算机系统1200的示例形式中的机器的示意图,在该计算机系统1200内,可以执行用于使机器执行本文所讨论的方法中的任何一个或多个的一组指令。在替代实施例中,可以在lan、内联网、外联网或因特网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(连续的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是,术语“机器”也应当包括单独或共同执行一组(或多组)指令以执行本文所讨论的方法中的任何一种或更多种方法的机器的任意集合。

计算机系统1200包括处理设备1202、主存储器1204(例如,只读存储器(rom)、闪存、动态随机存取存储器(dram)(诸如,同步dram(sdram)或dram(rdram)等)、静态存储器1206(例如,闪存、静态随机存取存储器(sram)等)以及数据存储设备1218,它们经由总线1230彼此进行通信。

处理设备1202表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(cisc)微处理器、精简指令集计算机(risc)微处理器、超长指令字(vliw)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1202也可以是一个或多个专用处理设备,诸如,专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。在一个实施例中,处理设备1202可以包括一个或多个处理核。处理设备1202被配置成执行用于执行本文中所讨论的操作和步骤的处理逻辑1226。在一个实施例中,处理设备1202与参考图1描述的实现如本公开的实施例所述的为存储器地址范围支持可配置安全级别的技术的处理器架构100相同。

计算机系统1200可以进一步包括通信地耦合至网络1220的网络接口设备1208。计算机系统1200还可以包括视频显示单元1210(例如,液晶显示器(lcd)或阴极射线管(crt))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)、以及信号生成设备1216(例如,扬声器)。此外,计算机系统1200可以包括图形处理单元1222、视频处理单元1228以及音频处理单元1232。

数据存储设备1218可以包括机器可访问存储介质1224,在其上存储软件1226,软件1226实现本文所述的功能的方法中的任何一个或多个,诸如实现静默存储器指令和未命中率跟踪以优化上文所述的对处理设备中的线程的切换策略。在由计算机系统1200对软件1226的执行期间,软件1226也可完全或至少部分地作为指令1226驻留在主存储器1204之内和/或作为处理逻辑1226驻留在处理设备1202之内;该主存储器1204和处理设备1202也构成机器可访问存储介质。

机器可读存储介质1224也可以被用来存储实现静默存储器指令和未命中率跟踪以优化对诸如参考图1中的处理设备100所述的处理设备中的线程的切换策略的指令1226,和/或包含调用上面的应用的方法的软件库。虽然机器可访问存储介质1128在示例实施例中被示出为单个介质,但术语“机器可访问存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“机器可访问存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行本公开的任何一个或多个方法的一组指令的任何介质。应当相应地认为术语“机器可访问存储介质”包括但不限于:固态存储器以及光和磁介质。

以下各示例涉及进一步的实施例。

示例1是一种处理器,包括:a)处理核;b)存储器控制器,可操作地耦合至处理核,用于访问芯片外存储器中的数据;以及c)存储器加密引擎(mee),可操作地耦合至存储器控制器,mee用于:响应于检测到关于与芯片外存储器相关联的存储器地址范围内的存储器地址标识的存储器位置的存储器访问操作,1)基于存储在安全范围寄存器上的值来标识与存储器位置相关联的安全级别指示符;以及2)考虑到安全级别指示符而访问与芯片外存储器的存储器地址范围相关联的数据项的至少一部分。

在示例2中,示例1的主题,其中安全级别指示符标识芯片外存储器的仅加密存储器范围和完全保护存储器范围。

在示例3中,示例1-2中的任一项的主题,其中安全级别指示符包括用于标识芯片外存储器的仅加密存储器范围和完全保护存储器范围中的至少一个的一个或多个存储器地址范围。

在示例4中,示例1-3中的任一项的主题,其中安全级别指示符包括将芯片外存储器分成仅加密存储器范围和完全保护存储器范围的存储器地址。

在示例5中,示例1-4中的任一项的主题,其中响应于检测到数据项要被传输至芯片外存储器的仅加密存储器范围,mee进一步用于加密与数据项相关联的数据。

在示例6中,示例1-5中的任一项的主题,其中响应于检测到数据项要从芯片外存储器的仅加密存储器范围传输,mee进一步用于解密与数据项相关联的数据。

在示例7中,示例1-6中的任一项的主题,其中响应于检测到数据项要被传输至芯片外存储器的完全保护存储器范围,mee进一步用于存储与数据项相关联的加密元数据。

在示例8中,示例1-7中的任一项的主题,其中响应于检测到数据项要从芯片外存储器的完全保护存储器范围传输,mee进一步用于检索与数据项相关联的加密元数据。

在示例9中,示例1-8中的任一项的主题,其中数据由与处理器核相关联的指令集架构(isa)指令保护,isa指令保护数据免受软件攻击,并且与isa指令相关联的存储器的范围存储在完全保护存储器范围中以保护数据免受主动和重放攻击。

各实施例可具有以上所述的结构特征的不同组合。例如,也可参照本文中描述的方法或过程来实现上文中描述的处理器的所有任选特征,并且可在一个或多个实施例中的任何地方使用示例中的细节。

示例10是一种方法,包括:1)响应于检测到关于与芯片外存储器设备相关联的存储器地址范围内的存储器地址标识的存储器位置的存储器访问操作,使用处理设备基于存储在安全范围寄存器上的值来标识与存储器位置相关联的安全级别指示符;以及2)考虑到安全级别指示符而使用处理设备访问与芯片外存储器的存储器地址范围相关联的数据项的至少一部分。

在示例11中,示例10的主题,其中安全级别指示符标识芯片外存储器设备的仅加密存储器范围和完全保护存储器范围。

在示例12中,示例10-11中的任一项的主题,其中安全级别指示符包括标识芯片外存储器设备的仅加密存储器范围和完全保护存储器范围中的至少一个的一个或多个存储器地址范围。

在示例13中,示例10-12中的任一项的主题,其中安全级别指示符包括将芯片外存储器分成仅加密存储器范围和完全保护存储器范围的存储器地址。

在示例14中,示例10-13中的任一项的主题,进一步包括响应于检测到数据项要被传输至芯片外存储器设备的仅加密存储器范围,加密与数据项相关联的数据。

在示例15中,示例10-14中的任一项的主题,进一步包括响应于检测到数据项要从芯片外存储器设备的仅加密存储器范围传输,解密与数据项相关联的数据。

在示例16中,示例10-15中的任一项的主题,进一步包括响应于检测到数据项要被传输至芯片外存储器的完全保护存储器范围,生成与数据项相关联的加密元数据。

在示例17中,示例10-16中的任一项的主题,进一步包括响应于检测到数据项要从芯片外存储器的完全保护存储器范围传输,检索与数据项相关联的加密元数据。

在示例18中,示例10-17中的任一项的主题,其中数据由与处理器核相关联的指令集架构(isa)指令保护,isa指令保护数据免受软件攻击,并且与isa指令相关联的存储器的范围存储在完全保护存储器范围中以保护数据免受主动和重放攻击。

各实施例可以具有上文所描述的操作特征的不同的组合。例如,上文所描述的方法的所有可选的特征也可以相对于非暂态计算机可读存储介质来实现。这些示例中的细节可以在一个或多个实施例中的任何地方被使用。

示例19是一种非暂态计算机可读存储介质,包括指令,指令在被处理器执行时使处理器用于:1)响应于检测到关于与芯片外存储器相关联的存储器地址范围内的存储器地址标识的存储器位置的存储器访问操作,基于存储在安全范围寄存器上的值来标识与存储器位置相关联的安全级别指示符;以及2)考虑到安全级别指示符而访问与芯片外存储器的存储器地址范围相关联的数据项的至少一部分。

在示例20中,示例19的主题,其中安全级别指示符标识芯片外存储器的仅加密存储器范围和完全保护存储器范围。

在示例21中,示例19-20中的任一项的主题,其中安全级别指示符包括用于标识芯片外存储器的仅加密存储器范围和完全保护存储器范围中的至少一个的一个或多个存储器地址范围。

在示例22中,示例19-21中的任一项的主题,其中安全级别指示符包括将芯片外存储器分成仅加密存储器范围和完全保护存储器范围的存储器地址。

在示例23中,示例19-22中的任一项的主题,其中响应于检测到数据项要被传输至芯片外存储器的仅加密存储器范围,可执行指令进一步使处理系统用于加密与数据项相关联的数据。

在示例24中,示例19-23中的任一项的主题,其中响应于检测到数据项要从芯片外存储器的仅加密存储器范围传输,可执行指令进一步使处理系统用于解密与数据项相关联的数据。

在示例25中,示例19-24中的任一项的主题,其中响应于检测到数据项要被传输至芯片外存储器的完全保护存储器范围,可执行指令进一步使处理系统用于生成与数据项相关联的加密元数据。

在示例26中,示例19-25中的任一项的主题,其中响应于检测到数据项要从芯片外存储器的完全保护存储器范围传输,可执行指令进一步使处理系统用于检索与数据项相关联的加密元数据。

在示例27中,示例19-26中的任一项的主题,其中数据由与处理器核相关联的指令集架构(isa)指令保护,isa指令保护数据免受软件攻击,并且与isa指令相关联的存储器的范围存储在完全保护存储器范围中以保护数据免受主动和重放攻击。

各实施例可具有以上所述的结构特征的不同组合。例如,也可参照本文中描述的系统来实现上文中描述的处理器和方法的所有任选特征,并且可在一个或多个实施例中的任何地方使用示例中的细节。

示例28是非暂态计算机可读存储介质,包括指令,指令在被处理器执行时使处理器执行示例9-16中的任一项的主题。

示例29是芯片上系统(soc),包括:多个功能单元,以及耦合至多个功能单元的存储器控制器单元(mcu),其中mcu包括存储器加密引擎(mee),其中mee配置为执行示例10-18中的任一项的主题。

在示例30中,示例29的主题,其中soc进一步包括示例1-9和19-27中的任一项的主题。

示例31是一种设备,包括:a)处理器的多个功能单元;b)用于响应于检测到关于与芯片外存储器相关联的存储器地址范围内的存储器地址标识的存储器位置的存储器访问操作,基于存储在安全范围寄存器上的值来标识与存储器位置相关联的安全级别指示符的装置;以及c)用于考虑到安全级别指示符而访问与芯片外存储器的存储器地址范围相关联的数据项的至少一部分的装置。

在示例32中,示例31的主题,进一步包括示例1-9和19-27中的任一项的主题。

示例33是一种系统,包括:存储器设备和包括存储器加密引擎(mee)的处理器,其中处理器配置为执行示例10-18中的任一项的主题。

在示例34中,示例30的主题,进一步包括示例1-9和19-27中的任一项的主题。

尽管是参考有限数量的实施例来描述本公开的,但是本领域技术人员将从其中理解到很多的修改和变型。所附权利要求书旨在涵盖落入本公开的真实精神和范围内的所有这些修改和变型。

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

如本文中所使用的模块指的是硬件、软件、和/或固件的任何组合。作为示例,模块包括与非暂态介质相关联的诸如微控制器之类的硬件,该非暂态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非暂态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非暂态介质,该代码专门适于由微控制器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非暂态介质的组合。通常,被示为分开的模块边界一般不同,并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。

在一个实施例中,使用短语“被配置成”指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然“被配置成”执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。

此外,在一个实施例中,使用术语‘用于’、‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上文所注意,在一个实施例中,用于、能够、或能用于的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。

如在本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其他表示。例如,十进制数十还可以被表示为二进制值910和十六进制字母a。因此,值包括能够被保存在计算机系统中的信息的任何表示。

而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置,而已更新的值潜在地包括低逻辑值,即,置位。注意,可以使用值的任何组合来表示任何数量的状态。

上述方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非暂态机器可访问/可读介质包括提供(即,存储和/或发送)诸如计算机或电子系统之类的机器可读形式的信息的任何机制。例如,非暂态机器可访问介质包括:随机存取存储器(ram),诸如,静态ram(sram)或动态ram(dram);rom;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保持从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些与可从其接收信息的非暂态介质相区别。

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

贯穿本说明书,对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定全部是指同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。

在上述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,将显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。相应地,应当认为说明书和附图是说明性的而不是限制性的。此外,实施例和其他示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。

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