可缩放多密钥总存储器加密引擎的制作方法

文档序号:21319612发布日期:2020-06-30 20:50阅读:201来源:国知局
可缩放多密钥总存储器加密引擎的制作方法

本公开涉及计算机系统;更具体地,涉及对存储在计算机系统的存储器中的数据的保护。



背景技术:

诸如在计算机上运行的硬件系统和软件系统的计算机系统通常具有未被检测到的漏洞,这些漏洞可以被硬件或软件攻击利用。例如,侧信道攻击可以利用计算机硬件系统中的缺陷以窃取有价值的数据。实现侧信道攻击的攻击者可以使用对计算系统的物理访问来获得信息。其他攻击可以包括通过互联网或其他通信网络接收的恶意计算机程序。攻击可以包括木马、病毒、蠕虫、间谍软件以及其他恶意软件。

附图说明

图1是根据一个实现方式的具有可缩放多密钥总存储器加密引擎的芯片上系统的高级框图。

图2是根据一个实现方式的密钥标识符选择电路的框图。

图3是根据一个实现方式的具有可缩放多密钥加密引擎的芯片上系统的框图。

图4是用于实现可缩放多密钥总存储器加密引擎的说明性方法的流程图。

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

图5b是示出根据本公开的实现方式的可实现对多密钥密码引擎的硬件支持的处理器或集成电路的微架构的框图。

图6示出根据本公开的实现方式的实现对多密钥密码引擎的硬件支持的处理器或集成电路的微架构的框图。

图7是根据一个实现方式的计算机系统的框图。

图8是根据另一实现方式的计算机系统的框图。

图9是根据一个实现方式的芯片上系统的框图。

图10示出计算系统的框图的另一实现方式。

图11示出计算系统的框图的另一实现方式。

具体实施方式

当数据被从处理器传输到所存储的存储器时,加密引擎可以由系统用于加密数据。在一些加密引擎中,单个短时密钥可以用于加密要被加密的所有数据。在一些加密引擎中,多个密钥可以用于以不同方式加密存储器的不同部分。在加密引擎中使用多个密钥可以提供页级的加密粒度;意味着可以为要被加密的存储器的每个页选择密钥。存储器页可以是固定长度的连续的存储器块。以此方式,由一个应用使用的存储器可以仅可由该应用基于用于加密由应用访问的存储器的一个或多个加密密钥访问。

在一些实例中,密钥标识符(keyid)可以由加密引擎使用以选择由加密引擎使用来加密存储器页的加密密钥。为了标识用于加密或解密特定事务的存储器的加密密钥,keyid可以被嵌入在存储器页的物理地址的较高位中。例如,为了支持64个密钥,必须使用物理地址的六个较高位来唯一地标识不同密钥,七个位可以用于支持128个密钥,等等。然而,添加更多密钥可能减少平台的可寻址物理存储器,因为更少的位可以用于寻址存储器。因此,将keyid嵌入在较高位中将不能在不缩小平台的存储器的情况下高效地缩放。此外,当存在用于寻址单个物理地址(例如,同一物理地址的64个不同较高密钥位组合)的多个方法时,在处理器上对存储器进行高速缓存时混叠(aliasing)成为问题。当用两个或更多个不同的keyid将给定的物理地址高速缓存在一致性域中时,混叠问题可能发生。存储器页可能可由第一keyid访问,但是然后成为可由第二keyid访问。如果可由第一keyid访问的页的所高速缓存的存储器块包含修改,则它们可能被驱逐并破坏可由第二keyid访问的页的所高速缓存的存储器块。为了避免与混叠相关联的高速缓存一致性问题,系统必须求助于计算密集的操作,诸如使整个高速缓存无效以及对整个高速缓存转储清除。除了是计算密集的之外,这些操还负担不相关的工作负荷,因为它们的高速缓存行也被无效和转储清除。转储清除还消耗存储器带宽,并且可能导致进一步的性能降级。

本文中所描述的实施例可以解决以上缺陷。诸如虚拟机的应用可以被分派由平台支持的密钥的子集,应用在该平台上执行。平台可以包括单个芯片上系统(soc)、单处理器系统、或多处理器系统,等等。soc可以包括一个处理器或多个处理器。可以在soc中的一个或多个逻辑处理器上调度应用。子集的密钥中的每一个的keyid可以存储在soc中的逻辑处理器范围的寄存器中。当存储器访问请求从在逻辑处理器上执行的应用发生时,可以从逻辑处理器范围的寄存器中选择keyid中的一个以与要被访问的物理地址相关联。所访问的存储器块可以被高速缓存在soc上。keyid也可以作为所高速缓存的存储器块的属性被高速缓存在soc上。存储器块和keyid两者均可以由诸如存储器块的物理地址的标签索引。

在一个实施例中,当存储器访问请求发生时,可以从由soc支持的所有keyid的子集中选择keyid。对于每个存储器访问请求,称为密钥标识符选择符(ksel)的一组位可以用于从密钥属性表(kat)寄存器中选择keyid。可能存在与每个逻辑处理器相关联的一个kat寄存器,该kat寄存器配置为保存被调度以在相关联的逻辑处理器上执行的应用的keyid。多路复用器可以基于ksel从kat寄存器中选择keyid。ksel可以与存储器的物理页相关联,并且可以作为页走查(walk)的一部分被确定。页走查可以是多级页走查。例如,第一级页表可以将宾客线性地址转换为宾客物理地址(称为第一级页表),并且第二级页表可以将宾客物理地址转换为主机物理地址(称为第二级页表)。可以从第一或第二级页表获得ksel。在一些实施例中,提供ksel的页表级可以是可配置的。在另一实施例中,可能存在使用主机物理地址来进行索引并且用于提供ksel的页表。

一旦被确定,页的ksel就可以存储在转换后备缓冲器(tlb)中,并且可以与针对存储器的该页的所有存储器访问请求相关联。当被访问之后所访问的存储器块被高速缓存在soc中时,所选择的keyid可以作为存储器块的属性被存储在soc的keyid高速缓存(kic)中。存储器块也可以称为高速缓存行。

在另一实施例中,ksel可以嵌入在由应用使用的线性地址中。线性地址可以是出于由应用执行的进程的目的而由应用使用的逻辑地址。线性地址可以被索引至主存储器中的物理地址。主存储器可以指代任何芯片外存储器存储。ksel可以与线性地址剥离,并且被发送至用于选择keyid的多路复用器。由于keyid未嵌入物理地址中,因此由系统支持的keyid和加密密钥的数量是可缩放的。将ksel嵌入线性地址中也可以允许为存储器页内的每个存储器块或高速缓存行选择唯一的keyid。

此外,本文中所描述的实施例可以解决伴随当前方法的混叠的问题。当存储器块将被访问时,如果该块和与从kat寄存器中选择的keyid(如上所述)不相同的keyid被高速缓存在soc中,则存储器块或高速缓存行可能被从高速缓存驱逐并且任何修改被写回至主存储器。然后,可以从主存储器检取存储器块并且在soc中将该存储器块高速缓存为与所选择的keyid相关联。因此,在任何给定时间,可以仅存在被高速缓存在soc上的同一一致性域中的由单个物理地址索引的一个存储器块。一致性域可以是跨该域内的所有高速缓存和存储器设备包含一致的数据的存储器域。

图1是示出包括kat寄存器110、选择电路120和高速缓存130的soc100的框图。选择电路120从kat寄存器110中选择要作为存储器块的属性被高速缓存在高速缓存130中的keyid,逻辑处理器150的存储器执行单元160请求对该存储器块的访问。所选择的keyid可以与存储器请求一起被传输到高速缓存130和存储器控制器140。当存储器块被从soc100传送至主存储器170时,从kat寄存器110中选择的keyid然后可以由存储器控制器140使用以选择加密密钥来加密存储器块。当从主存储器170检取存储器块并且将其存储在soc100内时,keyid也可以用于选择加密密钥以解密存储器块。主存储器170可以是任何芯片外存储,诸如随机存取存储器(ram)、动态ram(dram)和非易失性ram。

kat寄存器110可以存储与在逻辑处理器150上执行的应用相关联的多个keyid。应用可以是任何类型的应用,诸如网络应用、桌面应用、浏览器应用、虚拟机等等。与应用相关联的keyid可以允许应用加密并且排他地访问由应用使用的存储器的页和块。每个keyid可以标识将由存储器控制器140使用以加密和解密与相应的keyid相关联的存储器块的加密密钥。在逻辑处理器150上的应用的激活后,多个keyid可以被加载到kat寄存器110中。

选择电路120可以是多路复用器,该多路复用器基于称为密钥标识符选择符(ksel)的一组位从kat寄存器110中选择keyid中的一个。ksel可以是嵌入在由应用使用的线性地址的较高位中的一组位。线性地址可以映射到存储器块的物理地址。物理地址可以标识主存储器170中的存储器块的物理位置。ksel可以与线性地址剥离,并且由逻辑处理器150的存储器执行单元160发送至选择电路120。ksel可以由从存储器执行单元160发送的加载/存储/代码取出携带。然后可以基于ksel从kat寄存器110中选择keyid。keyid然后可以作为由提供了ksel的加载/存储/代码取出所访问的存储器块的属性被存储在高速缓存130中。

在替代实施例中,ksel可以存储在页表中。可以存在由物理地址索引以提供ksel的多个页表,诸如嵌套页表或专用表。哪个级别的页表提供ksel可以是可配置的。ksel可以作为线性地址映射到的页的物理地址的属性存储在页表中。根据线性地址确定物理地址可以包括查阅页表以标识线性地址到物理地址的映射。查阅页表以根据线性地址确定物理地址可以称为页走查。然后可以作为页走查的一部分来确定ksel并且与物理地址一起来检取ksel。从页走查确定的ksel可以高速缓存在tlb中。ksel可以再次由用于访问位于物理地址处的存储器块的加载/存储/代码取出携带。

高速缓存130可以存储已经被逻辑处理器150访问的存储器块。然而,可以从高速缓存130驱逐在某个时间段内还未被访问或不常访问的所高速缓存的存储器块。从高速缓存驱逐存储器块可以包括从高速缓存130移除存储器块。在一些实例中,可以将存储器块与当该存储器块被存储在高速缓存130中时对存储器块已经作出的任何修改写回至主存储器170。此外,高速缓存130可以存储keyid以及存储在高速缓存130中的每个存储器块。因此,存储在高速缓存130中的每个存储器块可以具有与其相关联的keyid,该keyid可以由存储器控制器140使用以选择当存储器块从高速缓存130被驱逐并被写入主存储器170时用于加密存储器块的加密密钥。

存储器控制器140可以控制对主存储器170的存储器访问。存储器控制器140还可以包括或耦合至总存储器加密(tme)引擎,该tme用于当存储器从soc100被传送至主存储器170时加密该存储器。存储器控制器140可以存储用于加密存储器块的多个加密密钥或具有对这些加密密钥的访问权。存储器控制器140还可以存储keyid到相关联的加密密钥的映射,使得加密密钥可以由其相关联的keyid标识。逻辑处理器150和存储器执行单元160可以控制存储器访问请求,执行页走查以确定物理地址,并且将ksel传送至选择电路120以选择keyid。

存储器控制器140可以耦合至加密密钥高速缓存145。加密密钥高速缓存145也可以是存储器控制器140的一部分。加密密钥高速缓存145可以存储由存储器控制器140活跃地使用的加密密钥。不活跃密钥可以存储在为存储加密密钥保留的主存储器170的区域中。可以将已变得不活跃的活跃密钥从加密密钥高速缓存145卸载到系统存储器170的保留区域。可以使用被编程到tme引擎中的加密密钥来加密用于从加密密钥高速缓存145卸载加密密钥的系统存储器170的保留区域。

在一个实施例中,加密密钥高速缓存145是由硬件管理的。存储器控制器140可以接收具有keyid的存储器访问请求。作为响应,将通过keyid在加密密钥高速缓存145中查找加密密钥。如果在查找加密密钥时存在未命中(即密钥未被找到),则存储器控制器140可以选择要驱逐的加密密钥高速缓存145的牺牲者,并将所驱逐的加密密钥替换为由存储器访问请求的keyid标识的加密密钥。

在一个实施例中,加密密钥高速缓存145可以由软件管理。软件可以标识哪些密钥在使用中以及哪些密钥是休眠的或不活跃的。软件可以将指令发送给存储器控制器140或加密引擎,以将在使用中的密钥装载到加密密钥高速缓存145并且卸载不活跃的密钥。软件可以基于由软件定义的使用模型来装载和卸载密钥。

图2是示出用于选择要与由逻辑处理器访问的存储器块相关联的keyid的keyid选择电路200的框图。kat寄存器210可以存储标识可由在逻辑处理器上执行的应用访问的加密密钥的多个keyid。kat寄存器210可以与逻辑处理器相关联。逻辑处理器可以正在处理器核上执行。kat寄存器210可以存储由该kat寄存器210驻留在其上的soc支持的所有加密密钥的子集。可以基于正在逻辑处理器上执行的应用来确定存储在kat寄存器210中的keyid的子集。在激活在处理器核上执行的逻辑处理器上的应用后,微代码可以将keyid的子集加载到kat寄存器210中。

keyid选择多路复用器220可以是耦合至kat寄存器210的硬件电路,用于为逻辑处理器请求访问的存储器块选择keyid215。keyid选择多路复用器220可以接收keyid选择符(ksel)225作为输入以选择keyid215。ksel225可以是从与存储器访问请求相关联的线性地址剥离的一组位。

替代地,ksel可以作为页走查的一部分被确定,在此之后ksel可以被高速缓存在转换后备缓冲器(tlb)中。tlb可以是soc上的高速缓存,用于存储来自页走查的线性地址到物理地址的映射,因此物理地址可以被快速地检取而无需另一次页走查。包括ksel225以及每个keyid的位的数量可以是log2(n),其中n是存储在kat寄存器210中的keyid的数量。替代地,kat寄存器210可以包含任何数量的条目,并且keyid215和ksel225可以包括任何数量的位。

模式选择多路复用器230可以是确定处理器应当使用可缩放mk-tme模式还是以传统模式操作的多路复用器。可缩放mk-tme启用260可以是模式选择多路复用器230的输入,用于选择是否启用可缩放mk-tme模式或是否启用传统模式。在传统模式中,keyid可以嵌入物理地址240中。可要求传统模式支持已经能够在传统模式中工作的传统软件。模式选择可以允许与传统软件的向后兼容性,同时允许较新的软件在可缩放mk-tme模式中操作。可缩放mk-tme启用260可以由bios在启动时设置。替代地,可缩放mk-tme启用260可以由操作系统或虚拟机管理器选择。

图3是示出soc300的框图,soc300利用各自分别与一个或多个逻辑处理器310a-c相关联的一个或多个keyid选择电路200a-c、以及用于存储与存储在soc300的一致性域中的存储器块相关联的keyid的一个或多个keyid高速缓存(kic)350a-c。一个或多个逻辑处理器310a-c可以在一个或多个处理器核上执行。每个逻辑处理器310a-c可以耦合至在图2中详细描述的keyid选择电路200a-c。每个逻辑处理器可以执行一个或多个应用。由逻辑处理器执行的应用可以是虚拟机或任何其他类型的软件应用。

soc300可以包括经互连的存储器设备的“网格”,这些存储器设备可以相互通信和协调以一致地高速缓存soc300上的存储器块和元数据。存储器设备可以包括高速缓存和归属代理320a-c、监听过滤器330a-c、末级高速缓存340a-c和keyid高速缓存(kic)350a-c。网格的高速缓存和归属代理320a-c可以控制存储器设备之间的通信以协调网格的存储器设备之间的一致的高速缓存操作。在一个示例中,网格的存储器设备可以是一致性域。

例如,高速缓存和归属代理320a可以包含用于以下操作的逻辑:控制监听过滤器330a、末级高速缓存(llc)340a和kic350a,并且与高速缓存和归属代理320b-c通信以确定什么被高速缓存在由高速缓存和归属代理320b-c控制的存储器设备内。监听过滤器330a-c可以是无数据高速缓存,其存储被存储在处理器核侧高速缓存上的存储器块的位置。llc340a-c可以存储已经被逻辑处理器中的任何一个访问的存储器块。llc340a-c可以是soc300内的最后高速缓存,在要求对主存储器390的访问之前可以将存储器块存储在该最后的高速缓存中。

在一个示例中,kic350a-c可以存储被存储在soc300的一致性域内的每个存储器块的keyid。可以基于keyid与其相关联的存储器块的物理地址来索引并且因此确定存储在kic350a-c中的keyid。以此方式,可以利用由块的物理地址标识的keyid来标记被高速缓存在soc300内的每个存储器块。kic350a-c可以是物理上分开的高速缓存,或者其可以被集成到监听过滤器330a-c或llc350a-c中。

当逻辑处理器请求对存储器块的访问时,可以从keyid选择电路200a-c中的kat寄存器中选择keyid。高速缓存和归属代理320a-c可以确定是否通过将块的物理地址用作标识符来将存储器块高速缓存在soc300上。高速缓存和归属代理320a-c可以使用物理地址来查询监听过滤器、末级高速缓存或这两者,以确定存储器块是否被高速缓存在soc300上。如果存储器块的物理地址被标识为被高速缓存在soc300中,则高速缓存和归属代理320a-c可以确定存储在kic350a-c中的keyid是否是由keyid选择电路200a-c选择的同一keyid。如果所存储的keyid与所选择的keyid不匹配,则可以将存储器块从高速缓存移除并且与当该存储器块被高速缓存在soc300上时作出的任何修改一起写回至主存储器390。当从soc300被移动到主存储器390时,存储器块可以通过由存储在kic350a-c中的keyid标识的加密密钥来加密。然后可以再次检取存储器块,并且将其与作为标签或属性的新的所选择的keyid一起高速缓存。keyid可以存储在kic350a-c中,并且通过存储器块的物理地址来索引。以此方式,可以一次仅将物理地址的一个存储器块高速缓存在soc300内。

存储器控制器和总存储器加密引擎(mc/tme)370a-b可以在存储器块从soc300被移除时对它们进行加密,并且当块从主存储器390被检取时对它们进行解密。mc/tme370a-b可以使用由与存储器块相关联的keyid标识的加密密钥来加密或解密存储器块。每个存储器块可以与用于对该存储器块进行加密的keyid一起被存储。如上所述,keyid可以存储在kic350a-c中。针对其中存储器块从主存储器390被检取的存储器请求,mc/tme370a-b可以基于与存储器块一起存储的keyid来解密块。网格到存储器360a-b可以是网格与mc/tme370a-b之间的接口。网格到i/osf380可以是网格与输入/输出设备之间的接口。

将每个存储器块与keyid高速缓存在kic350a-c中的一个优点可以是实现新的指令集架构(isa)。isa可以被定义为对与所指定的keyid一起存储的所高速缓存的存储器块转储清除。以此方式,操作系统可以以对平台中的其他应用的最小影响来超额订阅keyid空间。例如,keyid可以由软件指定为指令的参数。指令可以使微代码标识与所指定的keyid相关联的存储器块。转储清除命令可以将由微代码标识的每个存储器块转储清除至主存储器390。

图4是示出使用具有可缩放多密钥加密引擎的soc的示例方法400的流程图。在框402处,当在处理器核的逻辑处理器上激活或初始化应用或虚拟机时,可以将与该应用或虚拟机相关联的keyid的列表加载到kat寄存器中。例如,虚拟机可以被分派四个密钥,但是soc可以支持多得多的数量的密钥。四个密钥可以由当虚拟机被激活时被加载到kat寄存器中的四个keyid标识。

在框404处,可以将存储器访问请求从处理器核传送至keyid选择电路,该keyid选择电路包括用于从kat寄存器中选择keyid的多路复用器。存储器访问请求可以包括keyid选择符(ksel)。ksel可以与存储器访问请求剥离,并且被输入到多路复用器中。ksel可以包括一组位。ksel可以由页走查确定或者可以嵌入线性地址中。

在框406处,可以基于从存储器请求接收的ksel从kat寄存器中选择keyid。应用的开发者可以对ksel进行编程以为应用存储器的加密选择适当的加密密钥。应用可以具有对存储在kat寄存器中的n个密钥的访问权,并且对ksel的编程将确定使用这n个密钥中的哪一个。因为ksel是从n个密钥中进行选择的多路复用器的选择输入,所以keyid和ksel两者均可以包括log2(n)个位。替代地,kat寄存器210可以包含任何数量的条目,并且keyid215和ksel225可以包括任何数量的位。此外,如果ksel225被编程有选择未在kat寄存器210中实现的索引的值,则错误可能产生。

在框408处,可以将keyid和存储器访问请求发送至存储器设备的系统代理。存储器设备可以是多个经互连的存储器设备中的一个。系统代理可以控制将存储器块高速缓存在soc内。存储器访问请求可以包括包含ksel的加载/存储/代码取出和要访问的存储器块的物理地址。

在框410处,可以确定与存储器访问请求的物理地址对应的存储器块是否存储在soc内。系统代理可以使用存储器访问请求的物理地址来确定存储器块是否被高速缓存在soc内。物理地址可以是与存储器块相关联地被存储的标签或元数据。系统代理可以搜索包含被高速缓存在核侧高速缓存中的存储器块的位置的监听过滤器。系统代理还可以搜索高速缓存以确定具有由系统代理接收的物理地址的存储器块是否存储在高速缓存中。

在框412处,如果在框410处确定未找到物理地址,意味着存储器块未被高速缓存在soc中,则存储器请求可以根据驱逐过程来驱逐存储在高速缓存中的存储器块。如果需要驱逐以在高速缓存中为所请求的新的存储器块腾出空间,则可以驱逐存储器块。如果在高速缓存中存在无效条目,则可以不需要驱逐。然后可以从主存储器检取所请求的存储器块,并且将其与在框406处选择的keyid一起高速缓存。keyid可以作为与所检取的存储器块相关联的属性或标签存储在kic中。

在框414处,如果在框412处确定物理地址被高速缓存在soc中,则还可以确定在框406处选择的keyid是否是与同物理地址相关联地被存储的keyid相同的keyid。keyid可以是与存储器块相关联的属性或标签,并且可以由存储器块的物理地址或与存储器块相关联的任何其他标签标识。

在框416处,如果在框414处确定与物理地址一起存储的keyid不是与利用存储器访问请求选择的keyid相同的keyid,则可以驱逐存储器块。在框418处,当在框416处驱逐存储器块之后,可以从主存储器检取存储器块,并且然后将其与在框406处选择的、作为属性的keyid一起被高速缓存在soc中。在框420处,如果在框414处确定与存储器块相关联的keyid是在框406处选择的同一keyid,则存储器请求可以从高速缓存检取存储器块,并且将其返回至处理器核。

图5a是示出根据实现方式的实现对限制不受信任的软件对加密密钥的使用的硬件支持的处理器500的微架构的框图。具体地,处理器500描绘根据本公开的至少一个实现方式的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。

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

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

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

通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。各种不同类型的寄存器是合适的,只要它们能够存储并提供本文所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元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是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。数据tlb单元572可以被扩展以高速缓存ksel,如上所述。在一个示例性实现方式中,存储器访问单元564可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元570中的数据tlb单元572。l2高速缓存单元576可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。

在一个实现方式中,数据预取器580通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到dcu574。预取可以指在处理器实际需要数据之前将存储在存储器层级结构(例如,较低级别高速缓存或存储器)的一个存储器位置(例如,地方)的数据传送至更接近处理器的较高级别的存储器位置(例如,产生较低的访问等待时间)。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器中的一个到数据高速缓存和/或预取缓冲器的早期检取。预取可以使用对数据预取器580进行了训练的原始请求的ksel来完成。

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

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

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

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

图6示出根据本公开的实现方式的包括实现对限制不受信任的软件对加密密钥的使用的硬件支持的处理器或集成电路的逻辑电路的处理器600的微架构的框图。在一些实现方式中,根据一个实现方式的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实现方式中,有序前端601是处理器600的部分,该有序前端601取出将要被执行的指令并准备这些指令以供稍后在处理器流水线中使用。页添加和内容复制的实现方式可以实现在处理器600中。

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

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

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

寄存器集合608和610位于调度器602、604和606以及执行块611中的执行单元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。对于一个实现方式,浮点执行块612、614执行浮点、mmx、simd、sse或其他操作。一个实现方式的浮点alu612包括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也包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖操作。重放机制追踪使用错误数据的指令,并重新执行这些指令。仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实现方式的调度器和重放机制也被设计成用于捕捉用于文本串比较操作的指令序列。

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

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

实现方式可在许多不同的系统类型中实现。现在参照图7,其中示出了根据一个实现方式的可实现对限制不受信任的软件对加密密钥的使用的硬件支持的多处理器系统700的框图。如图7所示,多处理器系统700是点对点互连系统,且包括经由点对点互连750耦合的第一处理器770和第二处理器780。如图7所示,处理器770和780中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核774a和774b和处理器核784a和784b),虽然潜在地更多核可以存在于处理器中。虽然以两个处理器770、780来示出,但应理解本公开的范围不限于此。在其他实现方式中,在给定处理器中可存在一个或多个附加处理器。

处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(p-p)接口776和788;类似地,第二处理器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交换信息。

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

现在参照图10,所示出的是根据本公开的实现方式的可实现对限制不受信任的软件对加密密钥的使用的硬件支持的第三系统1000的框图。图7和10中的类似元件使用类似附图标记,且在图10中省略了图7的某些方面以避免使图7的其他方面模糊。

图8示出处理器870、880可分别包括集成存储器和i/o控制逻辑(“cl”)872和892。对于至少一个实现方式,cl872、892可包括如本文中所述的集成存储器控制器单元。此外,cl872、892还可包括i/o控制逻辑。图8示出了存储器832、834耦合到cl872、892,并且i/o设备814也耦合到控制逻辑872、892。传统i/o设备815耦合至芯片组890。

图9是可包括可实现对限制不受信任的软件对加密密钥的使用的硬件支持的核902a至902n中的一个或多个的示例性芯片上系统(soc)900。本领域中已知的对膝上型设备、台式机、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。

在图9的示例性soc900内,虚线框是更先进的soc上的特征。互连单元902可以耦合至:应用处理器917,包括一个或多个核的集合902a-n以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一个或多个媒体处理器的集合920,可包括集成图形逻辑908、用于提供静态和/或视频照相功能的图像处理器924、提供硬件音频加速的音频处理器926以及提供视频编码/解码加速的视频处理器928;静态随机存取存储器(sram)单元930;直接存储器存取(dma)单元932;以及显示单元940,用于耦合至一个或多个外部显示器。

接下来参考图10,描绘了根据本公开的各实现方式的可实现对限制不受信任的软件对加密密钥的使用的硬件支持的芯片上系统(soc)设计的实现方式。作为说明性示例,soc1000被包括在用户装备(ue)中。在一个实现方式中,ue指可由最终用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本,或任何其他类似的通信设备。ue可连接至基站或节点,该基站或节点本质上可对应于gsm网络中的移动站(ms)。页添加和内容复制的实现方式可以实现在soc1000中。

在此,soc1000包括2个核——1006和1007。类似于上文的讨论,核1006和1007可符合指令集架构,诸如,具有架构核tm的处理器、超微半导体公司(amd)处理器、基于mips的处理器、基于arm的处理器设计、或它们的客户、以及它们的被许可方或采纳方。核1006和1007被耦合至高速缓存控件1008,该高速缓存控件1008与总线接口单元1009和l2高速缓存1010相关联以与系统1000的其他部分通信。互连1011包括芯片上互连,诸如,iosf、amba或上文讨论的其他互连,它们可以实现所描述的公开的一个或多个方面。

在一个实现方式中,sdram控制器1040可以经由高速缓存1010连接到互连1011。互连1011提供到其他组件的通信信道,其他组件诸如与用户身份模块(sim)卡对接的sim1030、保存供核1006和1007执行以初始化和引导soc1000的引导代码的引导rom1035、与外部存储器(例如,dram1060)对接的sdram控制器1040、与非易失性存储器(例如,闪存1065)对接的闪存控制器1045、与外围设备对接的外围控制1050(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1020和视频接口1025、用于执行图形相关的计算的gpu1015等等。这些接口中的任何一种可以包括本文中所描述的各实现方式的各方面。

另外,系统示出了用于通信的外围设备,诸如,模块1070、3g调制解调器1075、gps1080以及1085。注意,如上文所述,ue包括用于通信的无线电装置。因此,这些外围通信模块可以不被全部包括。然而,在ue中,应当包括用于外部通信的某种形式的无线电装置。

图11示出了计算系统1100的示例形式的机器的示意图,在该计算系统1100内,可以执行用于使机器根据本文中所讨论的方法中的任何一种或多种方法的实现对限制不受信任的软件对加密密钥的使用的硬件支持的一组指令。在替代实现方式中,可以在lan、内联网、外联网或互联网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(顺序的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是,术语“机器”也应当认为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一种或更多种方法的机器的任何集合。可以在计算系统1100中实现页面添加和内容复制的实现方式。

计算系统1100包括处理设备1102、主存储器1104(例如,闪存、动态随机存取存储器(dram)(诸如同步dram(sdram)或dram(rdram)等等)、静态存储器1106(例如,闪存、静态随机存取存储器(sram),等等),以及数据存储设备1116,它们通过总线1108相互进行通信。

处理设备1102表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等等。更具体地,处理设备可以是复杂指令集计算(cisc)微处理器、精简指令集计算机(risc)微处理器、超长指令字(vliw)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1102也可以是一个或多个专用处理设备,诸如,专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等等。在一个实现方式中,处理设备1102可包括一个或多个处理器核。处理设备1102被配置成执行用于执行本文中所讨论的操作的处理逻辑1126。

在一个实现方式中,处理设备1102可以是包括所公开的llc高速缓存架构的处理器或集成电路的一部分。替代地,计算系统1100可包括如本文中所描述的其他组件。应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。

计算系统1100还可以包括可通信地耦合到网络1119的网络接口设备1118。计算系统1100还可以包括视频显示设备1110(例如,液晶显示器(lcd)或阴极射线管(crt))、字母数字输入设备1112(例如,键盘)、光标控制设备1114(例如,鼠标)、信号生成设备1120(例如,扬声器),或其他外围设备。此外,计算系统1100可以包括图形处理单元1122、视频处理单元1128以及音频处理单元1132。在另一个实现方式中,计算系统1100可以包括芯片组(未示出),芯片组是指被设计为与处理设备1102一起协作并控制处理设备1102与外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是将处理设备1102链接到非常高速度的设备(诸如,主存储器1104和图形控制器)以及将处理设备1102链接到较低速度的外围设备的外围总线(诸如,usb、pci或isa总线)的主板上的一组芯片。

数据存储设备1116可以包括计算机可读存储介质1124,在其上面存储了具体化本文所描述的功能的方法中的任何一种或多种的软件1126。在由计算系统1100对软件1126的执行期间,软件1126也可完全或至少部分地作为指令1126驻留在主存储器1104之内和/或作为处理逻辑驻留在处理设备1102之内;该主存储器1104和处理设备1102也构成计算机可读存储介质。

计算机可读存储介质1124还可用于存储指令1126,该指令1126利用处理设备1102和/或软件库,该软件库包含调用上述应用的方法。虽然计算机可读存储介质1124在示例实现方式中被示出为单个介质,但术语“计算机可读存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“计算机可读存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行所公开的实现方式的方法中的任何一种或多种的一组指令的任何介质。术语“计算机可读存储介质”应当相应地视为包括但不限于固态存储器以及光和磁介质。

以下示例涉及进一步的实现方式。

示例1是一种处理器,包括:处理器核,用于执行应用;密钥属性表(kat)寄存器,用于存储与应用相关联的多个密钥标识符(keyid),其中多个keyid中的keyid标识加密密钥;选择电路,耦合至kat寄存器,选择电路用于基于keyid选择符(ksel)从kat寄存器中选择keyid,其中ksel与要执行对其的访问的存储器块相关联;高速缓存,耦合至处理器核,高速缓存用于存储在其上已经执行了访问的存储器块的物理地址、数据和keyid,其中keyid是与存储器块相关联的属性;以及存储器控制器,耦合至高速缓存,用于当存储在高速缓存中的存储器块从高速缓存被驱逐到主存储器时基于由keyid标识的加密密钥来加密存储器块的数据。

在示例2中,如示例1的主题,其中处理器核执行各自与一个或多个kat寄存器中的一个相关联的一个或多个逻辑处理器,并且其中一个或多个逻辑处理器中的逻辑处理器用于当在与kat寄存器相关联的逻辑处理器上激活虚拟机后将多个keyid加载到kat寄存器中。

在示例3中,如示例1-2中的任一项的主题,进一步包括加密密钥高速缓存,耦合至存储器控制器,加密密钥高速缓存用于存储与活跃的keyid相关联的加密密钥,其中处理器核用于将与不活跃的keyid相关联的加密密钥从加密密钥高速缓存卸载到主存储器的保留区域,并且其中加密密钥在被卸载到主存储器的保留区域后由存储器控制器加密。

在示例4中,如示例1-3中的任一项的主题,其中高速缓存包括:数据高速缓存,用于存储存储器块的数据;以及keyid高速缓存,用于存储存储器块的keyid。

在示例5中,如示例1-4中的任一项的主题,进一步包括:第一存储器设备,可操作地耦合至第一逻辑处理器,其中keyid高速缓存驻留在第一存储器设备上;以及第二存储器设备,可操作地耦合至第二逻辑处理器和第一存储器设备,其中第二keyid高速缓存驻留在第二存储器设备上。

在示例6中,如示例1-5中的任一项的主题,其中ksel嵌入在包括指向存储器块的物理地址的指针的线性地址中。

在示例7中,如示例1-6中的任一项的主题,其中ksel作为与存储器的物理页相关联的属性被存储在页表中,其中存储器块驻留在存储器的物理页内,并且其中存储器的物理页的物理地址根据由应用提供的线性地址来确定。

在示例8中,如示例1-7中的任一项的主题,其中存储器控制器包括总存储器加密引擎。

示例9是一种系统,包括:主存储器;处理器,耦合至主存储器,其中处理器包括:处理器核,用于执行应用;密钥属性表(kat)寄存器,用于存储与应用相关联的多个密钥标识符(keyid),其中多个keyid中的keyid标识加密密钥;选择电路,耦合至kat寄存器,选择电路用于基于keyid选择符(ksel)从kat寄存器中选择keyid,其中ksel与要执行对其的访问的存储器页相关联;高速缓存,耦合至处理器核,高速缓存用于存储在其上已经执行了访问的存储器页的物理地址、数据和keyid,其中keyid是与存储器页相关联的属性;以及存储器控制器,存储器控制器用于当存储器页从系统被驱逐到主存储器时使用由keyid标识的加密密钥来加密存储器页。

在示例10中,如示例9的主题,其中处理器是多核处理器,多核处理器进一步包括:第二处理器核,用于执行第二应用;第二kat寄存器,用于存储与第二应用相关联的第二多个keyid,其中第二多个keyid中的第二keyid标识第二加密密钥;第二选择电路,耦合至第二kat寄存器,第二选择电路用于基于第二ksel从第二kat寄存器中选择第二keyid,其中第二ksel与要执行对其的访问的第二存储器页相关联;以及第二高速缓存,耦合至第二处理器核,第二高速缓存用于存储在其上已经执行了访问的第二存储器页的第二物理地址、数据和第二keyid,其中第二keyid是与第二存储器页相关联的属性。

在示例11中,如示例9-10中的任一项的主题,其中当在处理器核上激活应用后多个keyid被加载到kat寄存器中,并且当在第二处理器核上激活第二应用后第二多个keyid被加载到第二kat寄存器中。

在示例12中,如示例9-11中的任一项的主题,进一步包括模式选择多路复用器,用于选择传统模式或可缩放多密钥加密模式,并且其中存储器控制器驻留在处理器上。

在示例13中,如示例9-12中的任一项的主题,进一步包括:加密密钥高速缓存,耦合至存储器控制器,加密密钥高速缓存用于存储与活跃的keyid相关联的加密密钥,其中处理器核用于将与不活跃的keyid相关联的加密密钥从加密密钥高速缓存卸载到系统存储器的保留区域,并且其中加密密钥在被卸载到系统存储器的保留区域后由存储器控制器加密。

在示例14中,如示例9-13中的任一项的主题,其中加密密钥高速缓存由硬件管理,以将不活跃的加密密钥卸载到保留区域并且从系统存储器加载与加载到kat寄存器中的keyid相关联的加密密钥。

在示例15中,如示例9-14中的任一项的主题,其中加密密钥高速缓存由软件管理,软件基于加密密钥的使用来加载和卸载加密密钥。

示例16是一种方法,包括:用标识一个或多个密钥标识符(keyid)来加载密钥属性表(kat)寄存器,这一个或多个keyid用于加密由应用使用的存储器的加密密钥,其中这一个或多个keyid是可由系统访问的所有keyid的子集;由处理设备请求要由应用使用的存储器块;从kat寄存器中选择与存储器请求相关联的keyid,其中使用选择电路和密钥标识符选择符(ksel)从kat寄存器中选择keyid;以及将keyid存储在keyid高速缓存(kic)中,kic用于存储用于由系统高速缓存的每个存储器块的keyid。

在示例17中,如示例16的主题,进一步包括:基于存储器块的物理地址确定存储器块由系统高速缓存;确定由系统高速缓存的存储器块不与从kat寄存器中选择的keyid相关联;从高速缓存驱逐存储器块;以及从主存储器检取存储器块,对存储器块进行高速缓存,并且将从kat寄存器中选择的keyid存储在kic中,存储为与存储器块相关联。

在示例18中,如示例16-17中的任一项的主题,进一步包括:基于存储器块的物理地址确定存储器块由系统高速缓存;确定由系统高速缓存的存储器块与从kat寄存器中选择的keyid相关联;以及通过检取由系统高速缓存的存储器块来完成存储器请求。

在示例19中,如示例16-18中的任一项的主题,进一步包括:将与不活跃的keyid相关联的加密密钥从加密密钥高速缓存卸载到主存储器的保留区域;以及在将加密密钥卸载到主存储器的保留区域后对加密密钥进行加密。

在示例20中,如示例16-19中的任一项的主题,其中应用是虚拟机。

示例21是一种设备,包括用于执行示例16-20中的任一项的方法的装置。

示例22是至少一种机器可读介质,包括多条指令,指令当被执行时用于实现如示例16-20中的任一项的方法或实现如示例16-20中的任一项的的装置。

示例23是一种装置,包括配置为执行如示例16-20中的任一项的方法的处理器。

尽管已参考有限数量的实现方式描述了本公开,但是,本领域技术人员将从其中理解很多修改和变型。所附权利要求书旨在将所有此类修改和变型涵盖为落在本公开的真实精神和范围内。

在本文中的描述中,阐明了众多特定细节(诸如,特定类型的处理器和系统配置的示例、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线级和操作等)以提供对本公开的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本公开。在其他实例中,未详细描述公知的组件或方法,以避免不必要地使本公开模糊,公知的组件或方法诸如,特定和替代的处理器架构、用于所描述算法的特定逻辑电路/代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现、代码中算法的特定表达、特定的掉电和功率门控技术/逻辑以及计算机系统的其他特定的操作细节。

各实现方式是参考特定集成电路中的(诸如计算平台或微处理器中的)确定基于扇区的高速缓存的高速缓存行中的数据的有效性来描述的。实现方式也可以适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的各实现方式不仅限于台式计算机系统或便携式计算机,诸如,ultrabookstm计算机。并且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、芯片上系统(soc)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(pda)和手持式pc。嵌入式应用通常包括微控制器、数字信号处理器(dsp)、芯片上系统、网络计算机(netpc)、机顶盒、网络中枢、广域网(wan)交换机或可执行以下教导的功能与操作的任何其他系统。描述了系统可以是任何类型的计算机或嵌入式系统。所公开的各实现方式可以特别用于低端设备,诸如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监视控制和数据采集(scada)系统等等。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将在以下描述中变得显而易见的,本文描述的方法、装置和系统的实现方式(无论是关于硬件、固件、软件还是它们的组合)对于用性能考量来平衡的‘绿色技术’的前景是至关重要的。

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

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

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

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

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

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

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

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

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

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

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

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

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

具体实施方式的一些部分在对计算机存储器内的数据位的操作的算法和符号表示方面来呈现。这些算法描述及表示是数据处理领域的技术人员用于向本领域的其他技术人员最有效地传达其工作实质的手段。算法在此一般被理解为导致所需结果的自洽的操作序列。这些操作需要对物理量进行物理操纵。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。主要出于常见用途的考虑,时不时地将这些信号称为位、值、要素、符号、字符、项、数字等已被证明是方便的。本文中描述的块可以是硬件、软件、固件或其组合。

然而,应当记住,所有这些和类似的术语将与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非明确指明,否则从上文的讨论中显而易见地看出,可以理解,在全文中,利用诸如“定义”、“接收”、“确定”、“发布”、“链接”、“关联”、“获得”、“验证”、“阻止”、“执行”、“请求”、“通信”等术语的讨论,指的是计算系统或类似电子计算设备的动作和进程,该计算系统或类似电子计算设备操纵在该计算系统的寄存器和存储器内表示为物理(例如,电子)量的数据并将其转换成在该计算系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。

在本文中使用的词语“示例”或“示例性”意味着用作示例、实例或说明。在此被描述为“示例”或“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。相反,词语“示例”或“示例性”的使用旨在以具体的方式来呈现诸概念。如在该申请中使用的,术语“或”旨在表示包含性的“或”,而不是排它性的“或”。也就是说,除非另有指定或根据上下文显而易见,否则“x包括a或b”旨在表示自然包含性排列中的任一者。也就是说,如果x包括a;x包括b;或x包括a和b两者,则在任何前述的情况下都满足“x包括a或b”。此外,在本申请和所附权利要求中使用的冠词“一”和“一个”一般应当被解释为表示“一个或多个”,除非另有规定或根据上下文明确指示为单数形式。此外,通篇对术语“实现方式”或“一个实现方式”或“实现方式”或“一种实现方式”的使用不旨在意指同一个实现方式或实现方式,除非被描述为如此。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等旨在用作用于在不同元件之间进行区分的标记,并且可以不一定具有根据它们的数字指定的顺序含义。

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