信任域架构与多密钥总存储器加密技术在服务器中的共存的制作方法

文档序号:21319621发布日期:2020-06-30 20:50阅读:383来源:国知局
信任域架构与多密钥总存储器加密技术在服务器中的共存的制作方法

本公开涉及计算机系统;更具体地说,涉及确保信任域架构与多密钥总存储器加密技术在服务器中的共存。



背景技术:

现代处理设备采用磁盘加密来保护静态数据。然而,存储器中的数据采用明文(plaintext)形式,并且容易受到攻击。攻击者可以使用各种各样的技术,包括基于软件和硬件的总线扫描、存储器扫描、硬件探测等等,以从存储器中检索数据。来自存储器的此数据可以包括敏感数据,例如隐私敏感数据、ip敏感数据、以及还有用于文件加密或通信的密钥。随着利用云服务提供商提供的基于虚拟化的托管服务将数据和企业工作负荷移动到云中的当前趋势,数据的暴露被进一步加剧。

附图说明

图1a是图示了根据一个实现方式的示例计算系统的框图,该示例计算系统使得能够实现信任域(td)架构与多密钥总存储器加密(mk-tme)技术在虚拟系统中的共存。

图1b是图示了根据一个实现方式的使得能够实现td架构与mk-tme技术的共存的计算系统的处理器的示例处理器核的框图。

图1c是图示了根据另一实现方式的示例计算系统的框图,该示例计算系统使得能够实现td架构与mk-tme技术在不具有虚拟化的计算系统中的共存。

图2a是图示了根据一个实现方式的将加密密钥标识符(id)空间划分成td和mk-tme密钥id的图。

图2b是图示了根据一个实现方式的使用连结到物理存储器地址的m个位的地址空间将加密密钥id编码并且划分成tdx和mk-tme密钥id的图。

图2c是根据一个实现方式的微架构密钥加密表的图示,该表由密钥id索引并且存储密钥id与加密密钥的关联。

图2d是根据一个实现方式的微架构密钥所有权(ownership)表的图示,该表由密钥id索引并且存储密钥id至各种信任域的分配。

图2e是根据一个实现方式的微架构存储器所有权表的图示,该表存储针对存储器的物理页面的元数据属性。

图3是根据一个实现方式的表示存储器加密引擎的一部分的门架构的框图。

图4a是图示了根据实现方式的访客虚拟地址到访客物理地址以及访客物理地址到主机物理地址的转换(translation)的框图。

图4b是图示了根据实现方式的扩展页面表(ept)的使用以将访客物理地址转换成主机物理地址的框图。

图4c是根据一个实现方式的存储器地址选择硬件的框图,该存储器地址选择硬件用于在启用了td和mk-tme架构两者时使用扩展页面表将访客物理地址映射到主机物理地址。

图5是根据一个实现方式的用以使得能够实现td架构和mk-tme技术的共存的示例方法的流程图。

图6是根据一个实现方式的用以使得能够实现td和mk-tme技术的共存从而进一步使得能够实现存储器分页的示例方法的流程图。

图7a是图示了用于可以在其中使用本公开的一个实现方式的处理器的微架构的框图。

图7b是图示了根据本公开的至少一个实现方式实现的有序流水线和寄存器重命名阶段、无序(out-of-order)发布/执行流水线的框图。

图8图示了根据一个实现方式的处理设备的微架构的框图,该处理设备包括逻辑电路,该逻辑电路用以在使用信任域的虚拟化系统中提供信任域架构与多密钥总存储器加密技术的共存。

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

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

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

图12图示了用于计算系统的框图的另一实现方式。

图13图示了用于计算系统的框图的另一实现方式。

具体实现方式

本公开的各方面涉及在硬件级别下使得能够实现信任域(td)基础设施与多密钥总存储器加密(mk-tme)技术的共存。mk-tme技术指代为操作系统(或虚拟计算环境中的管理程序(hypervisor))提供如下能力:使用不同加密密钥来对与不同客户端/应用相关联的物理存储器的页面进行加密。td基础设施指代允许客户端/应用在td的高度安全的环境中执行,在该环境中,甚至操作系统(或管理程序)也可能无权访问与td相关联的物理存储器页面。

常规的云服务器计算和虚拟计算环境为各种设备提供了远程计算资源和远程数据存储资源。远程计算和数据存储使得保护数据免遭未经授权的人员和恶意软件的访问尤其重要。驻留在存储器中的未加密明文数据、以及在存储器与处理器之间移动的数据可能容易受到扫描攻击。攻击者可以使用各种各样的技术,包括总线扫描、存储器扫描等等来从存储器中检索数据。这种数据甚至可能包括用于加密的密钥。对应地,如果存在攻击者或未经授权的软件可能拥有这种密钥的可能性,那么即使利用加密密钥加密的数据也不安全。

保护存储器中的数据的一种方法是利用总存储器加密(tme)技术,其中可以利用加密密钥对由在处理器核上执行的软件进行的存储器访问进行加密。例如,加密密钥可以是由处理器在启动时生成的128位密钥,并且被用来对在外部存储器总线上发送的数据进行加密。特别地,当处理器向存储器做出写请求时,可以在将数据发送到存储器之前由存储器加密引擎对数据进行加密,在存储器中,数据以加密形式存储。在从存储器读取数据时,数据将以加密形式被发送到处理器。一旦数据已经到达处理器,就利用加密密钥对其进行解密。由于数据以明文形式保留在处理器中,因此tme技术不需要对现有软件以及现有软件如何与处理器交互进行修改。

多密钥tme(mk-tme)技术是tme技术的扩展,它提供了对多个加密密钥的支持,从而允许分隔的(compartmentalized)存储器加密。例如,处理器架构可以允许在启动时生成多个加密密钥,以用于利用不同的mk-tme密钥对不同的存储器页面进行加密。多密钥扩展特别适合与诸如由csp使用的多域架构一起工作,这是因为受支持的密钥的数量可能与实现方式有关。处理器可以利用mk-tme引擎来使得使用不同的mk-tme密钥对不同的页面进行加密。

在一些实现方式中,csp可以选择指定要使用相同的vm特定密钥而被加密的虚拟机(vm)的页面。在其他实例中,csp可以选择特定的vm页面是要以明文形式保留,还是要使用可能对软件不透明的不同临时密钥被加密。mk-tme引擎可以每个域支持至少一个密钥,并且从而实现csp上存在的不同工作负荷之间的密码隔离。工作负荷可以与租户或所有者(例如,从csp租赁主机服务器的使用的实体)相关联。

在td扩展(tdx)架构中,可以有多个安全td,它们对应于不同的客户端机器(例如,虚拟机)、访客操作系统、主机操作系统、管理程序等等。附加地,甚至可以安全地执行由相同访客操作系统内的相同客户端运行的不同应用。为了在存在多个td时确保安全计算的可扩缩性,每个td可以使用一个或多个私钥,这些私钥对于在td外部操作的软件是不可用的。在一些实例中,在一个安全域中执行的软件可以有权访问特定于该特定域的私钥,并且有权访问可以由多个域使用的共享密钥。例如,在安全域内部运行的软件可以将私钥用于其安全执行,诸如读取、写入或运行操作。另一方面,同一软件可以使用共享密钥来访问与其他域共享的结构或设备,诸如打印机、键盘、鼠标、监视器、网络适配器、路由器等等。

甚至可以保护td免遭特权用户(诸如操作系统os(主机或者访客)、虚拟机监视器(管理程序)、基本输入/输出系统(bios)固件、系统管理模式等等)的影响。对应地,即使恶意软件接管了诸如操作系统之类的特权域,由td存储在存储器中的敏感数据仍然受到保护。这种数据可以包括医疗记录、生物识别(biometric)因素、个人id信息、知识产权、密码、加密密钥或其他敏感数据。

每个td可以独立于其他td进行操作,并且使用由作为主机os、管理程序的部分或作为单独的软件程序而操作的信任域资源管理器(tdrm)分配的(一个或多个)逻辑处理器、存储器和i/o。可以使用mk-tme引擎的至少一个独有加密密钥在存储器中将每个td密码地隔离,以用于加密与td相关联的存储器(保持代码和/或数据)。

运行虚拟化架构的csp主机服务器可能需要运行mk-tme技术和tdx架构两者,以有效执行客户端/租户应用。例如,主机服务器可以在td内执行高度敏感的应用,使得执行vm的管理程序无权访问被分配给td及其可信计算基(tcb)的加密密钥和存储器页面。同时,主机服务器可以使用mk-tme技术来运行要求较少安全性和隔离的应用,其中管理程序保留对被用在这些不太敏感的应用中的存储器页面和加密密钥的控制。然后,管理程序可以使用不同的mk-tme密钥将不同的应用彼此隔离,但仍保留在每个应用的tcb中。

在各种实现方式中,本公开的各方面解决了使得能够实现mk-tme技术和tdx架构的共存的需要。在一些实现方式中,所公开的计算系统可以确保被分配给td的密钥id不能由mk-tme软件使用,该软件诸如在td的tcb外部运行的管理程序或vm。在相关的实现方式中,所公开的架构可以确保两个活动的td不可以同时使用被指定为td的受限密钥id的密钥id。为了存储在td中的数据的附加安全性,还可能合期望的是,在与不复存在的td相关联的所有高速缓存数据被转储清除之后,将该不复存在的td的密钥id重新分配给其他td。

此外,即使在高度安全的td内,客户端也可能需要与共享结构(例如,共享硬件设备)进行通信。例如,输入输出(i/o)设备、打印机、网络适配器、路由器或其他处理设备等等可能由多个td以及由运行使用mk-tme保护的vm的管理程序使用。在实现方式中,仍然可能需要通过对与共享结构的操作有关的存储器事务进行加密来保护对这种共享结构的访问(免受其他应用或外部恶意攻击的影响)。因此,td可能需要能够使用不同的加密密钥:至少一个受限密钥,用于其安全操作和对td的私有存储器页面的访问,以及至少一个非受限密钥,用于td与共享结构的通信。在td的可信计算基中运行的软件可能尝试将非受限密钥用于涉及私有存储器页面的存储器事务。例如,可信的软件可能会尝试使用非受限密钥将数据写入到私有存储器页面中。在没有本说明书中公开的硬件保护的情况下,这种数据可能容易受到来自tcb外部的程序的软件访问(例如,读取操作)的影响,该程序可能获取对共享的非受限密钥的访问。

图1a图示了示例计算系统100,其使得能够实现tdx和mktme技术在支持多个客户端设备102a、102b和102c的虚拟化服务器110上的共存。计算系统100可以进一步包括网络接口104和共享的硬件设备160a和160b。虚拟化服务器110可以包括但不限于:处理器112、存储器设备130以及一个或多个td150a、150b和150c。处理器112可以执行虚拟机监视器(vmm)或管理程序140、td资源管理器(tdrm)142,该td资源管理器进而可以运行一个或多个虚拟机(vm)155。在各种实现方式中,处理器112可以包括一个或多个处理器核114、一个或多个寄存器116(例如,硬件寄存器)、高速缓存118、存储器控制器120、密钥加密表(ket)122、密钥所有权表(kot)124和存储器所有权表(mot)126。存储器控制器120可以进一步包括诸如mk-tme引擎136之类的存储器加密引擎。存储器设备130可以包括动态随机存取存储器(dram)、同步dram(sdram)、诸如静态随机存取存储器(sram)之类的静态存储器、闪速存储器、数据存储设备或其他类型的存储器设备。为了简洁起见,存储器设备130此后将被称为存储器130。

每个客户端设备可以是远程台式计算机、平板设备、智能手机、另一个服务器、瘦/瘦的(thin/lean)客户端等等。每个客户端设备可以在td150a、150b和150c中的一个或多个以及一个或多个vm155中执行虚拟化服务器110上的应用,其中vm在每个相应td的tcb外部运行。管理程序140可以执行虚拟机环境,其中管理程序利用主机的硬件能力并且要执行一个或多个访客操作系统,该访客操作系统支持从单独的客户端设备102a、102b和102c运行的客户端应用。在一个实现方式中,单个td(诸如td150a)可以向单个客户端102a提供安全的执行环境,并且支持单个访客os。在另一实现方式中,一个td可以支持多个租户,每个租户都运行单独的虚拟机,并且由在td内部运行的租户虚拟机监视器(租户vmm)提供便利。租户vmm(图1中未明确图示出)可能正在与管理程序(主机vmm)140通信以访问存储器130和处理器112。tdrm142可以进一步启用td150a-c的执行状态。tdrm142可以是管理程序140的扩展,或者可以作为管理程序140支持的单独资源。

tdrm142和管理程序140可以充当用于td的主机,并且控制td对处理器112和其他系统硬件的访问。处理器112可以具有一个或多个处理器核114、硬件寄存器116和高速缓存118。处理器112可以进一步具有存储器控制器(存储器管理单元)120以控制存储器操作。存储器控制器可以具有存储器加密引擎(诸如mk-tme引擎136)以利用适当的加密密钥来对存储器操作进行加密/解密。处理器112可以具有进入tdx模式的能力,在tdx模式中,tdx指令被加载到处理器112的硬件寄存器116(诸如控制寄存器或模型特定的寄存器)中,以便于存储器与不属于td的tcb的任何软件的隔离。tdrm可以具有进入和退出tdx模式的能力。

tdrm142可以充当主机并且具有对处理器和其他平台硬件的控制。tdrm142可以向td(例如,td150a)中的软件分配(一个或多个)逻辑处理器,但是不能访问所分配的(一个或多个)逻辑处理器上的td执行状态。类似地,tdrm142可以将物理存储器和i/o资源分配给td,但是由于单独的加密密钥以及存储器上的其他完整性/重放控制而不能私下访问/欺骗(spoof)td的存储器状态。

td表示可以支持软件堆栈的软件环境,该软件堆栈包括vmm、访客操作系统以及(一个或多个)访客os托管的各种应用软件。每个td可以独立于其他td进行操作,并且使用由tdrm分配的(一个或多个)逻辑处理器、存储器和i/o。在td中执行的软件可以以减少的特权进行操作,使得tdrm可以保留对平台资源的控制。另一方面,tdrm无法访问与td相关联的数据或以其他某种方式影响td的机密性或完整性。

tdrm142(或tdrm的管理程序部分)可以实行加密密钥的管理。例如,tdrm可以将不同的密钥分配给不同的td、在存储器加密引擎上配置密钥、在密钥被重新分配给不同的td时要求执行高速缓存转储清除等等。在本公开的实现方式中,td架构中的tdrm142充当用于td的主机,并且具有对核和其他平台硬件的完全控制。tdrm142向td中的软件分配(一个或多个)逻辑处理器。然而,tdrm142可能无权访问所分配的(一个或多个)逻辑处理器上的td执行状态。类似地,tdrm142将物理存储器和i/o资源分配给td,但是由于对每td的处理器强制执行的单独加密密钥的使用以及对存储器的其他完整性和重放控制,tdrm142可能无法私下访问td的存储器状态。在td中执行的软件以减少的特权进行操作,使得tdrm142可以保留对平台资源的控制。然而,可能不允许tdrm142通过获取对td的可信计算基的访问来损害td的机密性或完整性。

为了进一步改善td中的数据的安全性,tdx架构可以采用安全生成的k个加密密钥。在一个实现方式中,tdrm142可以使处理器112(例如,使用如下详述的指令tdcreate(td创建))为每个td生成临时存储器加密密钥和对应的密钥标识符(id)。可以通过唯一的密钥id将加密密钥(例如,k个加密密钥)标识为在处理器上运行的软件。在一个实现方式中,用于td的密钥id可以被附加到与该td相关联的物理存储器地址。bios(或其他启动固件)在启动期间可以针对特定数量的密钥id在物理存储器地址内分配一定范围的位。例如,在一个实现方式中,bios可以在硬件寄存器116中存储一定范围的位,该硬件寄存器诸如特定于模型的寄存器(msr)。在启动之后,计算系统100可以从msr检索位的范围,并且采用那些位来对物理存储器地址内的密钥id进行编码。

在各种实现方式中,每个密钥id可以是具有二进制表示的任何数字。例如,从0开始并且以k-1结尾的k个连续数字的范围可以在一个实现方式中使用。在另一实现方式中,用于表示加密密钥id的数字的范围可以从不同的数字开始。在一些实现方式中,该范围不需要是连续的。加密密钥id的二进制编码可以包括m个位,其中m可以是使得m≥log2k的整数,以确保m个位的各种组合的总数2m不少于不同加密密钥的数量k

可以利用加密密钥之一来对存储器130的物理页面进行加密。如所讨论的,可以将与用于存储器加密的加密密钥相对应的密钥id添加到存储器(例如,主机服务器的物理存储器)的物理页面的物理存储器地址,这将在下面更详细地解释。在密钥id被附加到物理存储器地址的情况下,除非存储器事务请求包括页面的物理存储器地址和用于对存储器的物理页面进行加密/解密的加密密钥的正确密钥id两者,否则软件请求的存储器事务可能会失败。存储器事务可以是涉及存储器的物理页面的“读取”、“写入”或“执行”操作。

受限密钥id与被分配给td以供私人使用的物理存储器的物理存储器地址的连结可以防止对这种存储器的未授权或未保护的访问。为了维持受限加密密钥与非受限加密密钥的硬件隔离,处理器112可能需要使得能够将密钥id划分为受限td密钥id(例如,被分配给tdx)和非受限mk-tme密钥id(例如,被分配给管理程序、tdrm、os或td的tcb外部的其他软件),并且在执行tdx架构期间将该划分(partition)维持在处理器内部存储的一个或多个微架构表中。在一些实现方式中,启动软件或固件(例如,bios)可以设置这种划分,并且将该划分的标识存储在处理器112的硬件寄存器116中,该处理器可以是在计算系统100启动之后可访问的软件。这允许系统在主机服务器内运行td架构和mk-tme技术两者,以实现在td内部运行的高度安全的虚拟机以及受mk-tme机制保护的未修改的vm。

为了维持与软件(诸如,管理程序140)的隔离,在一个实现方式中,密钥id到受限和非受限id的划分可以是静态的。如果在启动后(post-boot)执行期间确定密钥id的不同划分可能是最佳的,则启动后软件(例如,管理程序140)可以请求密钥id重新划分。例如,如果需要高度安全执行的应用的数量已经增加,则这可能是有利的。在一些实现方式中,这可以通过启动后软件发起与启动固件/软件的握手机制从而请求修改密钥id划分来完成。在握手完成并且确定密钥id空间的新的期望划分时,tdrm142可以使用密钥id来保存当前在处理器上运行的td的执行状态,并且实行系统重启。这可以提供灵活性,以基于计算系统的当前状态和工作负荷在mk-tme与tdx之间定义密钥id的划分。

管理程序140可以将逻辑处理器、物理存储器、加密密钥id、i/o设备等等分配给td,但是不能访问td的执行状态和/或被存储在分配给td的物理存储器中的数据。处理器112可以利用mk-tme引擎136来使用受限的加密密钥以便于安全的数据存储和处理。例如,在实行“写入”代码的情况下,mk-tme引擎136可以在将数据从一个或多个寄存器116或高速缓存118移动到存储器130之前对数据进行加密。相反地,在“读取”或“执行”命令之后,mk-tme引擎可以在数据从存储器130移动到处理器112时对数据进行解密。

处理器112的每个处理器核114可以支持对应于逻辑处理器的一个或多个硬件线程。在一些实现方式中,处理器核114支持的逻辑处理器可以由tdrm142分配给td150a-c。除了客户端虚拟机的基于tdx的实现方式之外,虚拟化服务器110还可以为一个或多个客户端设备102a-c执行td外部的一个或多个vm155。尽管在td的可信计算基外部的软件(诸如tdrm142和管理程序140)可能无权访问被分配给td的物理存储器页面和/或td的执行状态,但是在一个实现方式中,在td外部运行的虚拟机可能不会针对管理程序140的访问而被保护。尽管如此,在每个td的tcb外部运行的虚拟机仍可能被保护以免受源自td或其他虚拟机的软件访问的影响。在一些实现方式中,mk-tme引擎136可以防止这种访问,这通过使用mk-tme引擎136利用一个或多个非受限加密密钥来对在处理器112与存储器130之间移动的数据进行加密。术语“非受限的”意指对管理程序140可访问的密钥。另一方面,在一些实现方式中,可以禁止未经授权的td和vm将这种密钥用于存储器事务。

附加地,在至少一些实现方式中,可以共享非受限密钥中的一个或多个。共享密钥可以由两个或更多个实体访问,该实体诸如在tdx环境外部运行的td和vm。共享密钥可以被用来访问一个或多个共享结构,诸如共享硬件设备160a和160b,其可以是打印机、键盘、鼠标、监视器、网络适配器、路由器等等。例如,为了打印图像或文本页面,在td150a中运行的软件可能需要利用共享密钥对数据进行加密,并且将加密数据存储在存储器130中,然后再将数据传输到共享硬件设备。在一个实现方式中,共享硬件设备160a可以经由网络接口104连接到虚拟化服务器110。在另一实现方式中,共享硬件设备可以在虚拟化服务器110的本地,如例如由共享硬件设备160b图示的那样。

存储器控制器120要控制(一个或多个)处理器核114、寄存器116、高速缓存118和存储器130之间的数据交换。在一些实现方式中,存储器控制器120可以耦合到用于存储加密密钥和加密密钥的密钥id的ket122,并且耦合到用于存储密钥id至td的分配的kot124。存储器控制器120还可以耦合到在tdx架构外部运行的vm,并且耦合到被用来存储物理存储器页面的属性(诸如,物理存储器页面至td和vm的分配)的mot126。存储器控制器120可以包括mk-tme引擎136,以使得能够存在多个加密密钥,该多个加密密钥被用来对移动到存储器130/从存储器130移动的数据进行加密/解密。

为了使得能够实现虚拟存储器实现方式,存储器130可以存储访客页面表132和扩展页面表(ept)134,它们由vm设置以供管理程序140使用。例如,当执行存储器事务时,租户软件(例如,访客os)可以引用线性地址,诸如访客虚拟地址(gva)。作为响应,处理器112可以在访客页面表132中执行页面遍历(pagewalk),以标识与所引用的线性地址相关联的访客物理地址(gpa)。gpa仍然可以是主机服务器(诸如虚拟化服务器110)的虚拟地址。为了标识所确定的gpa的主机物理存储器地址(hpa),处理器112可以在ept134中执行另一页面遍历。然后,可以使用被用来对与所确定的hpa相关联的特定存储器页面进行加密的密钥id来对在所确定的hpa中引用的物理存储器页面中存储的数据进行解密。在一个实现方式中,密钥id与hpa的关联被存储在mot126中。

图1b是图示了根据一个实现方式的使得能够实现td架构与mk-tme技术的共存的计算系统的处理器的示例处理器核的框图。在图1b中图示的实现方式中,每个处理器核114可以包括高速缓存118a、硬件虚拟化支持电路117和硬件寄存器116a。硬件寄存器116a可以包括例如多个特定于模型的寄存器116b(或msr)和控制寄存器116c(例如,cr1、cr2、cr3等等)。在该实现方式中,当在本文中引用高速缓存118和硬件寄存器116时,可以将该实现方式理解成附加地或替代地包括一个或多个处理器核114的高速缓存118a和硬件寄存器116a。

处理器核114可以执行指令以运行多个硬件线程,也被称为逻辑处理器,包括第一逻辑处理器119a、第二逻辑处理器119b等等,直到第n个逻辑处理器119n。在一个实现方式中,第一逻辑处理器119a是管理程序140。管理程序140可以执行和控制多个vm155。附加地,管理程序140可以将与对应加密密钥相关联的密钥id分配给在计算系统100上操作的各种td。

图1c是图示了根据各种实现方式的示例计算系统101的框图,该示例计算系统101使得能够实现td架构与mk-tme技术在不具有直接运行在处理设备170的操作系统180上的虚拟化的计算系统101中的共存。td150可以与mk-tme引擎136一起执行以从td150a的tcb移除os180。(图1a的实现方式的)管理程序140或(图2b的实现方式的)os可以为td150a分配多个加密密钥,包括:一个或多个受限密钥,用于安全访问td的私有存储器页面,以及一个或多个非受限密钥,用于访问可以与其他处理设备共享的共享硬件设备160a-b(图1a)。

在一个实现方式中,处理设备170可以是个人计算机或不使用云计算的另一处理设备。尽管如此,在处理设备170上安全执行各种应用的需求可能使得执行多个td以防止在td150a内部运行的应用访问被分配给td150b的存储器页面中的安全数据是有利的。例如,处理设备可以是医疗办公室或诊所中的记录保存计算机。在td150a内部运行的应用可以存储患者的健康历史记录,而在td150b内部执行的另一个应用可以存储患者的个人数据。即使某些恶意软件获得对被分配给td150a的加密密钥的访问并且访问了患者的健康历史记录,医疗办公室或诊所也可以希望保护个人数据。因此,管理程序140或os180可以向td150b分配一个或多个受限加密密钥,该一个或多个受限加密密钥与被分配给td150a的受限加密密钥不同。管理程序140或os180可以保留对在td150a和150b外部运行的其他应用的其他(非受限)密钥的控制。出于安全原因,管理程序140可能不允许访问对td150a和150b的这种非受限密钥。在一些实现方式中,管理程序140可以与td150a和/或td150b共享其一些非受限密钥,以用于与对共享硬件设备160a和/或160b的访问相关联的存储器事务,该共享硬件设备可以是打印机、i/o设备、监视器、网络适配器等等。这些设备中的一些设备(例如,硬件设备160a)可以经由网络接口104连接到处理设备170。

在各种实现方式中,可以使用处理器112的适当指令集架构来实现信任域基础设施,诸如信任域扩展(tdx)实现方式。在一个实现方式中,td150a可以由tdrm142创建和启动,该tdrm142可以提供编程接口以管理td的操作。tdrm142可以使用td创建指令(例如,tdcreate)来创建td150a。tdrm142可以选择物理存储器的区域(例如,对齐的4kb区域),并且将其作为参数提供给td创建指令。存储器的该区域可以被用作td150a的td控制结构(tdcs)。在一些实现方式中,tdcs占用了存储器的4kb自然对齐区域。可以阻止在mot中针对td150a被标识为tdcs的页面以防受到软件读取和写入操作,并且以此方式保护该页面以供在tdx架构中使用。例如,tdcs可以保存td标识符、被分配给td的加密密钥、以及与该加密密钥相关联的密钥id。tdcreate指令在被执行时可以使处理器112验证目的地4kb页面被分配给td(使用mot126)。tdcreate指令可以进一步使处理器112生成针对td150a的加密密钥和相关联的密钥id。然后,处理器112可以使用被分配给td的加密密钥来初始化目的地页面上的页面内容。tdcreate指令还可以使处理器112初始化用于td测量的散列,该散列要被存储在tdcs中。

在一个实现方式中,tdrm142可以使用tdaddpage指令来设置td150a的初始块代码和数据,该tdaddpage(td添加页面)指令指定了作为参数的tdcs页面的地址、tdrm地址空间中的td图像的代码(或数据)页面的地址、以及被分配给td150a的物理页面。处理器112然后可以验证目的地4kb页面被分配给td150a。一旦验证,处理器112就在tdcs中扩展用于td150a的散列。然后,处理器使用被分配给td150a的唯一加密密钥将页面内容从源拷贝到目的地页面。可以遵循类似的过程来将如所需要的那么多的并且由处理器112和存储器130支持的其他td150b-c实例化,。

可以由bios配置的mk-tme引擎136在启动计算系统100时实现加密密钥以及与加密密钥相关联的密钥id,或者由处理设备170使用硬件寄存器116(例如,msr)中的tme激活(tme_activate)msr来实现加密密钥以及与加密密钥相关联的密钥id。为了实现mktme,可以设置tme_activatemsr中的tmeenablerwl位,并且可以将位35:32设置成非零值(这些值指定了针对mk-tme配置的密钥id位的数量)。这些mk_tme_keyid_bits是要分配给mk-tme使用的密钥id位的数量。与枚举类似,这是一编码值。写入大于最大支持的keyid位的枚举数的值可能会导致一般保护错误(#gp)。如果eax(tmeenable)的位1也未被设置为“1”,则将非零值写入该字段也可能导致一般保护错误,这是因为要使得tme能够使用mk-tme。tme_activatemsr也可以被用来锁定其他与tme相关的msr(例如,exclud_mask,exclude_base),使得在锁定寄存器之后对它们的任何写入都将被忽略。当重置计算系统100时,可以重置锁定。

在一些实现方式中,当启动计算系统100时,bios可以将特定信息存储在tme_activatemsr中,以供处理器112(例如,存储器控制器120)稍后在限制对受限加密密钥和密钥id的访问中使用。该信息可以包括针对用于密钥id的物理存储器地址(例如,主机物理地址)的地址位的数量的值。由bios存储到tme_activatemsr中的特定信息可以进一步包括划分标识符(例如,划分密钥id),以将密钥id划分成非受限密钥id和受限密钥id。此外,在一个实现方式中,物理存储器地址的第二数量的受限位可以存储在tme_activatemsr中,该tme_activatemsr指定了受限密钥id如何与非受限密钥id划分开。

图2a图示了在一个实现方式中将加密密钥id空间划分200成tdx和mk-tme密钥id,其中单个边界将非受限密钥id与受限密钥id分离。在启动时,处理器112可以在msr内存储用于密钥id编码的位范围。该位范围可以支持k个密钥id以标识k个加密密钥。处理器112可以进一步在msr内标识密钥id空间的划分200。在一个实现方式中,k个密钥id可以被划分成kmk个非受限密钥id和ktd个非受限密钥id,使得kmk+ktd=k。,非受限密钥id可以是被分配给图1a中图示的虚拟化实现方式中的管理程序140(例如,用于分配给共享设备)的mk-tme密钥id。mk-tme密钥id可以进一步被分配给图1c中图示的非虚拟化实现方式中的操作系统180(或tdrm142)。可以将受限密钥id分配给td基础设施,并且然后进一步分配给一个或多个td150a-c。

在一个实现方式中,密钥id可以被映射到范围从0到k-1的整数数字的连续间隔上。非受限密钥id可以映射到范围从0到kmk-1的较低连续数字集上,其中受限密钥id映射到范围从kmkk-1的较高连续数字集上。在图2a中图示的实现方式中,定义了受限与非受限密钥id之间的一个边界,例如,处于密钥id=kmk的线下面。尽管在某些实例中将密钥id空间划分成两个连续的范围可能是有利的,但在其他实现方式中,可以定义多个边界,以使得非受限密钥id的多个区域与受限密钥id的区域间隔开。

图2b图示了使用连结到物理存储器地址的m个位的地址空间的一种可能的将加密密钥id编码并且划分205成tdx和mk-tme密钥id。在一个实现方式中,值m表示连结(或附加)到物理存储器页面的物理存储器地址210的地址位的数量。在一些实现方式中,物理存储器页面可以是4kb页面,并且可以被分配给要利用受限加密密钥之一进行加密的td150a-c之一。(在其他实现中方式,层次结构(比如是页面表)可以支持其他页面大小。)替代地,可以将物理存储器页面分配给要利用非受限密钥之一进行加密的管理程序140,以用于由管理程序或由管理程序启用的应用之一进行非共享使用,由管理程序启用的应用包括在tdx架构外部执行的vm155。替代地,可以利用被分配给管理程序140的非受限密钥之一来对物理存储器页面进行加密,并且由管理程序进一步将其分配给多个td,以用于与共享结构(诸如共享硬件设备160a-b)的使用相关联的存储器事务。

为了足以对k个密钥id进行编码,地址位的数量m必须至少等于log2k。在作为示例而非限制图示的一个实现方式中,m=7,并且地址位的这种数量可以支持多达27=128个不同的密钥id。第一密钥(密钥id=0)可以是tme密钥,即,被分配给管理程序140以对由该管理程序拥有的存储器事务进行加密的密钥。例如,物理存储器地址210可以被用来存储管理程序的配置,该配置不与管理程序启用的任何td和/或vm共享。

为了便于将密钥id划分为受限和不受限密钥id,可以定义地址位的数量的第二值l。为了足以对kmk个非受限密钥id进行编码,l至少等于log2kmk。例如,为了对kmk=20个非受限密钥id进行编码,l必须至少是5。要注意的是,相同的值l=5将足以对多达32个非受限密钥id进行编码。

m个地址位的较低l个位可以被称为非受限位(或通用位)的位子范围,其余的较高m-l个位可以被称为受限位的子范围。在一个实现方式中,对于所有非受限密钥id编码,地址位具有相同的值0。例如,物理存储器地址220指代利用与等于22的密钥id相关联的加密密钥进行加密的物理存储器的页面。因为最前面的(受限的)m-l个位具有相同的值0,所以密钥id是被分配给管理程序的非受限mk-tme密钥id。

在相同的实现方式中,如果设置了m-l个受限位中的任一个(即,具有值一(“1”)的),则该密钥id是受限的,并且被分配给信任域基础设施的td中的一个。例如,物理存储器地址230指代利用与等于51的密钥id相关联的加密密钥进行加密的物理存储器的页面。在一个实现方式中,该密钥id可以由td150a使用。作为另一示例,物理存储器地址240指代利用与等于82的密钥id相关联的加密密钥进行加密的物理存储器的页面。在一个实现方式中,该密钥id可以由td150b使用。

要注意的是,在一个实现方式中,尽管l个通用(非受限)位被用来对非受限密钥id进行编码,其中m-l个受限位是清空的(即,具有值零(“0”)),但是通用位和受限位两者被用来对受限密钥id进行编码。图2b中图示的划分所支持的受限密钥id的总数为27-25=96。

在一些实现方式中,为了对非受限密钥id进行编码,较高的通用位具有值一(“1”)而不是值零(“0”)。在这种实现方式中,较低的2m-2l个密钥id是受限密钥id,而较高的2l个密钥id是非受限的。

在图2b中图示的划分中,通用位是连续的,并且受限位也是如此(例如rrggggg),其中受限位是密钥id编码的m-l个较高位,而通用位是l个较低位。在一些实现方式中,可以使用非连续的通用位和受限位。例如,对于l=5个通用位和m-l=2个受限位的相同情况,位的映射可以是非连续的,例如rgrgggg。假设非受限密钥id是其中所有r=0的这种情况,那么密钥id空间将看起来是如下那样:

非受限(mk-tme)密钥,

受限(tdx)密钥,

非受限(mk-tme)密钥,

受限(tdx)密钥。

对应地,将在受限与非受限密钥id之间实现三个边界。

对于其他划分实现方式,边界的数量甚至可能更大。在一个实现方式中,受限密钥可以与非受限密钥id一个接一个地间隔开。作为示例的一种方式,如果用于密钥id编码的m个位中只有最低位是受限位,则这种情况可能发生。假设该最低位针对受限密钥id而被设置,并且针对非受限密钥id是清空的,则每个偶数(和第0个)密钥id是非受限密钥id,而每个奇数密钥id是受限密钥id。在这种实现方式中,受限密钥id的数量与非受限密钥id的数量相同。

在mk-tme架构(具有或不具有tdx)中,每个存储器页面都可以利用加密密钥之一被加密。在一个实现方式中,处理器112可以经由存储器控制器120强制执行加密密钥使用。存储器控制器120可以耦合到图2c2e中图示的多个表以使得能够实现这种强制执行。例如,存储器控制器可以包括ket122,该ket122存储加密密钥到密钥id的映射,如图2c中针对一个实现方式所图示的那样,在该实现方式中,有k=128个总计密钥和ktdx=96个受限密钥。在一个实现方式中,加密密钥255可以是128位密钥。可以通过密钥id250对ket122进行索引。可以如上所述的那样实现密钥id(以及因此加密密钥)的划分。当存储器事务涉及存储器的物理页面的物理存储器地址时,处理器可以从用于密钥id编码的物理存储器地址的较高的m个位来提取密钥id。处理器然后可以参考ket122来确定要使用哪个加密密钥来对存储器的物理页面进行解密或加密。

ket122(图2c)是用于配置加密引擎(诸如mk-tme引擎136)的微架构硬件表。可以通过tdconfigkey(td配置密钥)指令来实行ket122到tdx密钥和mk-tme密钥的划分。

存储器控制器120可以耦合到kot124(图2d)。kot124可以存储密钥id250至各种td以及密钥id250至在每个相应td的tcb外部运行的软件(诸如管理程序)的分配265。在一个实现方式中,可以通过密钥id250来对kot进行索引。对于每个密钥id250,kot124可以存储对密钥id250当前分配到的实体的引用。例如,第一非受限密钥id=0可以被分配到管理程序140以对在管理程序根操作中使用的物理存储器页面进行加密。多个其他非受限密钥id250可以进一步被分配给管理程序140或用于由管理程序140使用。管理程序可以进一步将非受限密钥id250中的一些分配给其他应用,诸如在tdx架构外部运行的vm155。kot124还可以存储受限密钥id至各种执行的td的分配,该各种执行的td为:td1、td2、td3等等。可以将多于一个受限密钥id250分配给同一td。受限密钥id250中的一些可能未被分配给任何td,但可以根据需要被保留以供稍后使用。

kot124是微架构硬件表,其用于管理tdx和mk-tme库存,特别是用于将密钥id250分配给td150a-c、调用密钥id250、以及在将密钥id250重新分配给不同td之前控制转储清除高速缓存118。kot124提供硬件保护,以防相同的tdx密钥id多次同时分配给不同的td。

因为在处理器112的硬件中实现了ket122和kot124,所以这些表不能由软件直接访问。这允许处理器112跟踪软件的正确操作并且保证tdx安全性目标。

如图2e中图示的,存储器控制器120可以进一步耦合到由处理器112管理的存储器所有权表(mot)126,以强制执行物理存储器页面到正在执行的td(诸如td150a)的分配。在一个实现方式中,在td150a或tdrm142无法访问未明确分配给它们的存储器的情况下,处理器112还使用mot126来强制通过软件操作引用物理地址。

mot126可以强制以下性质。首先,在td150a外部的软件不得以明文格式访问(读/写/执行)属于不同td的任何存储器(这包括作为安全域的tdrm142)。其次,在一个实现方式中,经由mot126分配给特定td(诸如td150a)的存储器页面可以从系统中的任何逻辑处理器(其中该逻辑处理器正在执行存储器被分配到的td)来访问。

mot126结构可以被用来为存储器的每个4kb页面保持元数据属性。可以为附加的页面大小(2mb,1gb)定义附加的结构。存储器的每个4kb页面的元数据都由物理页面地址直接索引。在其他实现方式中,层次结构(比如页面表)可以支持其他页面大小。在mot126中引用的4kb页面可以属于td150a的一个运行实例。在mot126中引用的4kb页面可以是有效存储器或被标记为无效。

在一个实现方式中,mot126在存储器的4kb边界上对齐,并且占据存储器的物理连续区域,该区域在平台初始化之后被保护以免于被软件访问。在一个实现方式中,mot是微架构结构,并且不能由软件直接访问。在架构上,mot126可以为主机物理存储器的每个4kb页面保持以下属性:主机物理存储器页面的主机物理地址282、页面状态284(指示该页面是否为有效的存储器页面)、页面状态286(指示该页面是否已分配)正在分配/释放/重新分配给td的过程中等等)、td标识符(tdid)288(指示页面被分配给哪个特定td)、以及被用来对主机物理存储器页面进行加密/解密的加密密钥的密钥id250。

当在处理器112中启用tdx时,可以启用mot126(例如,在基于cpuid的枚举之后,经由cr4启用位)。一旦启用了mot126,处理器112就可以使用mot126来针对包括tdrm142的软件启动的物理存储器访问强制执行存储器访问控制。

在实现方式中,tdrm142使用具有以下子指令的mot操作指令(tdmotop)、经由mot126来管理存储器资源:

添加页面至mot(tdmotaddpage)标记了mot126中的空闲条目(freeentry),该空闲条目对应于如被(唯一地)分配给由tdid288指定的td150a的主机物理地址(hpa)。任何其他先前页面状态都可能引起错误。该指令强制执行跨线程转换后备缓冲器(tlb)击落(shootdown),以确认没有其他td150b对至该hpa的映射进行高速缓存。具体地,tlb击落可以被理解为跨处理器112的所有处理器核114的tlb条目的无效。tdmotaddpage指令可以由tdrm142调用。如果tdrm142已启用扩展的mot,则指令可以指定被映射到指定hpa的初始访客物理地址(gpa)。处理器112通过遍历由tdrm142管理的ept134来验证gpa被映射到hpa。可以实现tdmotaddpage指令的变体,该变体将页面分配给td(tdmotaugpage),但可能不捕获页面的测量。

从mot撤销页面(tdmotrevokepage)将分配的页面标记为空闲页面。该指令强制执行跨线程tlb击落,以确认后续的td150a访问针对hpa所有权的检查,并且处理器112清空了页面内容。在tlb填充期间经历mot126页面错误的td150a访问会使得处理器112使tdcs无效,这会防止另外的td进入到td150a中。该指令叶可以由tdrm142调用。

阻止mot中的页面(tdmotblockpage)将与hpa相对应的mot126的空闲或分配的条目标记为被阻止用于软件使用。任何其他先前页面状态都会引起tdrm142错误。该指令强制执行跨线程tlb击落,以确认后续的td150a访问针对hpa所有权的检查。该指令叶可以由tdrm142调用。

解除阻止mot中的页面(tdmotunblockpage)将与hpa相对应的已阻止的mot126条目标记为对于软件使用/分配是有效的。任何其他先前页面状态都会引起错误。tdmotblockpage指令可以由tdrm142调用。

在一些实现方式中并且在对图2e的附加关注的情况下,存储器控制器120可以将存储器130的一个或多个物理页面分配给td150a,以供在td150a内部执行的软件程序和应用的私有使用。存储器控制器120然后可以更新mot126中的存储器的所分配的物理页面中的每一个的元数据属性,包括以下各项中的一些(但不限于以下各项):主机物理地址282、页面状态284、页面状态286、页面的tdid288、以及与要由存储器控制器120使用以对存储在存储器的物理页面中的数据进行加密/解密的加密密钥相关联的受限密钥id250。

在一些实现方式中,处理器112可以启用附加的td,并且管理程序140(或tdrm142)可以根据需要将来自受限密钥id列表中的附加密钥id分配给这种附加td。在这种实现方式中,存储器控制器120可能需要将单独的物理存储器页面分配给各种td并且相应地更新mot126。

在一些实现方式中,由存储器控制器120分配的物理存储器页面可以在一个或多个td和/或管理程序140之间共享。在这种实现方式中,存储器控制器120可以实行与上述基本相同的操作,但是将页面状态286指定为针对该页面而共享。存储器控制器120然后可以存储可以有权访问共享页面的td的多个tdid。存储器控制器可以存储与要由存储器控制器120使用以对存储在存储器的共享页面中的数据进行加密/解密的加密密钥相关联的共享非受限密钥id250。

当存储器控制器120检测到涉及被分配给特定td的存储器的物理页面的存储器事务时,存储器控制器120可以在许多情况下生成错误和/或中止过程,该许多情况包括但不限于以下情况:

·包括连结到物理存储器地址的非受限id的存储器事务,而存储器的物理页面是被分配给td的私有页面。

·包含连结到物理存储器地址的错误受限密钥id的存储器事务,针对该物理存储器地址,预期不同的受限密钥id。

·包括连结到物理存储器地址的正确受限密钥id的存储器事务,但是该存储器事务由受限密钥id被分配到的td的tcb外部的软件程序所启动(例如,由管理程序140或由在不同td内部执行的软件程序启动的存储器事务)。

特别地,在第一种情况下,在td150a中执行的可信软件可能错误地将非受限(共享或非共享的)mk-tme请求密钥id连结到存储器的私有物理页面的物理存储器地址,该私有物理页面是利用被分配给td150a的受限tdx密钥之一而被加密的(或在写操作的情况下预期被加密)。在这种情况下,在一个实现方式中,存储器控制器120可以经由mk-tme引擎136检测到没有设置请求密钥id的受限位,并且因此,请求密钥id不是受限密钥id之一。对应地,存储器控制器120可以响应于确定请求密钥id的受限位中的至少一个被设置(或者在如上文讨论的一些实现方式中,为清空的)而生成错误,例如非受限密钥页面错误。该错误可以被用来向发起了存储器事务的软件程序通知:在预期受限密钥的情况下已经使用了非受限密钥。在一些实现方式中,存储器控制器120可以进一步检测到存储器事务源自td150a的信任计算基外部(例如,来自td150b-c之一、在td外部运行的vm155之一、管理程序140等等的事务),并且生成静默中止页面语义。在一些实现方式中,这可能意味着写操作被静默忽略,而读操作在所有位上返回值1(或0)。

图3是根据一些实现方式的表示系统100或101的mk-tme引擎136的一部分的门架构300的框图。mk-tme引擎136可以包括或(or)门310、比较器320、第一与(and)门330和第二与(and)门340。图3图示了一种硬件机制,其用于在一个实现方式中强制执行受限密钥id的适当使用。该硬件机制可以服务于被分配给各个td150a-c的多个处理器核114或逻辑处理器。在一些实现方式中,可以针对多个(或全部)处理器核/逻辑处理器复制该硬件机制。

在各种实现方式中,当软件程序(管理程序,或在td150a-c之一内执行的程序,或在td外部执行的vm155之一内执行的程序)发出存储器事务时,存储器控制器120可以处理该事务。当存储器事务涉及页面遍历(参考图4a-4b更详细地讨论的)或代码获取访问时,或(or)门310可以触发输出。代码获取访问可以是获取执行循环的一部分,其中处理器112可以从存储器130中检索程序指令。当存储器控制器120检测到存储器事务时,该存储器控制器可以从被用来对请求密钥id进行编码的物理存储器地址中的位提取请求密钥id。然后,比较器320可以通过将密钥id划分标识符与请求密钥id进行比较来确定请求密钥id是非受限密钥id。例如,在一个实现方式中,密钥id划分标识符可以是被用来标识非受限密钥id与受限密钥id之间的边界的划分密钥id。在另一实现方式中,划分标识符可以是物理存储器地址的受限位的数量。比较器320可以将请求密钥id处于非受限密钥id内的确定输出到与门330。第一与门330可以从一个或多个硬件寄存器116接收作为其第二输入的指示:即,与存储器请求相关联的逻辑处理器正在以td模式执行。例如,在一个实现方式中,可以将相同的逻辑处理器分配给td150a和在td基础设施外部执行的vm155之一。在另一实现方式中,与td150a相关联的逻辑处理器可以具有两种操作模式。当tdrm142在所分配的逻辑处理器上执行td进入指令时,逻辑处理器可以以可信域模式开始执行,并且可以访问利用被分配给td150a的受限密钥进行加密的存储器页面。当tdrm142执行td退出指令时,逻辑处理器可以中断td150a的执行,利用被分配给td150a的受限密钥id来对td150a的当前执行状态进行加密,并且将该执行状态存储在存储器130中。随后,并且直到下一个td进入指令,在一个实现方式中,逻辑处理器可以在td150a的tcb外部以不可信模式进行操作,并且可以执行来自tdrm142或管理程序140的指令。在不可信模式下,逻辑处理器可能无法访问利用被分配给td150a的密钥进行加密的存储器页面。

在第一与门330处,处理器核114可以通过访问硬件寄存器116来确认逻辑处理器在处于可信域模式下时正在执行存储器事务。然后,第一与门330的输出可以连同来自“或”门310的输出被一起输入到第二与门340,以生成可以发信号通知非受限密钥错误的最终输出。可以由处理器核114(或逻辑处理器之一)根据错误过程来处理非受限密钥页面错误。在一些实现方式中,非受限密钥页面错误类似于指令集架构(isa)错误,诸如保留位页面错误。在一些实现方式中,存储器控制器120可以执行静默中止页面语义,如上面解释的。

在第二种情况下,存储器控制器可以检测到涉及被分配给td150a并且利用被分配给td150a的第一受限密钥进行加密(或在写操作的情况下预期被加密)的存储器的物理页面的存储器事务。存储器事务可以包括存储器的物理页面的物理存储器地址和被分配给不同的td(诸如td150b)的第二受限密钥id。在已经确定了存储器事务对利用非受限密钥加密的存储器页面进行寻址并且包括非受限密钥id(尽管是错误的密钥id)的情况下,存储器控制器120可能不生成非受限密钥错误。代替地,在一些实现方式中,存储器控制器120可以参考mot以确定第二密钥id不是存储器的物理页面的正确属性。例如,存储器控制器120可以在mot126内部定位主机物理地址(物理存储器地址)282,并且确定与主机物理地址282相关联的密钥id250实际上是第一受限密钥id而不是(如所请求的)第二受限密钥id。对应地,存储器控制器120可以响应于确定已经使用了错误的受限密钥id而生成错误(例如,“受限密钥”错误)。该错误可以被用来向启动了存储器事务的软件程序通知:它使用了错误的受限密钥。在一些实现方式中,存储器控制器120可以进一步检测存储器事务是否源自td150a的tcb外部(例如,来自其他td150b-c之一的事务)并且生成中止页面语义,如上面解释的那样。

在第三种情况下,存储器控制器可以检测到涉及存储器的并且被分配给td150a的物理页面的存储器事务,其中存储器事务源自于不同的td(诸如td150b),并且包括存储器的物理页面的存储器地址和第一受限密钥id。在已经确定了存储器事务对利用非受限密钥加密的存储器页面进行寻址并且包括非受限密钥id的情况下,存储器控制器120可能不生成非受限密钥错误。此外,在已经确定了存储器事务对利用第一密钥(例如,存储器页面的正确密钥)加密的物理存储器页面进行寻址的情况下,存储器控制器120也可能不生成受限密钥错误。代替地,在一些实现方式中,存储器控制器120可以确定存储器事务源自于td150b并且参考kot以确定第一密钥id没有被分配给td150b。例如,存储器控制器120可以在kot124内部定位密钥id250,并且确定密钥id250被分配给td150a。对应地,存储器控制器120可以响应于确定外来td尝试使用未被分配给它的密钥id而生成错误(例如,“外来td”错误)。外来td错误可以被用来向发起了存储器事务的软件程序通知:它尝试对错误的物理存储器页面进行寻址,该错误的物理存储器页面未被分配给该软件在其上运行的td。在一些实现方式中,存储器控制器120可以生生中止页面语义,如上面解释的那样。

在一些实现方式中,在使用了虚拟存储器的情况下,存储器事务可以是使用页面遍历的事务。存储器事务可以是对线性地址(例如,虚拟地址)的引用,该线性地址然后通过分页链接到物理存储器地址。例如,在其中使用了虚拟机架构的那些实现方式中,线性地址可以是由管理程序生成的访客虚拟地址(gva)。在一些实现方式中,gva可以通过访客页面表132映射到访客物理地址(gpa),该访客物理地址本身可以是主机虚拟地址。gpa可以通过ept134进一步映射到主机物理地址(hpa)。从gpa到hpa的映射可以通过管理程序140在ept中进行遍历来启用。

关于虚拟存储器和虚拟机架构,在td中运行的软件可能无权直接访问由存储器控制器120分配给td的物理存储器页面的hpa。管理程序可以向td分配非受限密钥id,以用于对td的共享存储器页面进行加密。在一个实现方式中,管理程序可以为给定的td生成gpa/访客页面表132。在另一实现方式中,tdrm142可以为给定的td生成gpa/访客页面表132。在又一实现方式中,在td内部运行的虚拟机监视器可以为td生成gpa/访客页面表132。

图4a是图示了根据实现方式的访客虚拟地址(gva)到访客物理地址(gpa)、以及gpa到主机物理地址(hpa)或物理存储器地址的转换的框图400。在一个实现方式中,为了模拟代表虚拟机的指令,管理程序140可能需要将指令使用的线性地址(例如,gva)转换成物理存储器地址,使得管理程序可以访问该物理地址处的数据。

为了实行该转换,管理程序140可能需要首先确定分页和分段,包括检查虚拟机的分段状态。虚拟机可能正在td内执行。管理程序还可以在指令调用的时间处确定虚拟机的分页模式,包括检查由虚拟机设置的页面表以及检查由管理程序140编程的硬件寄存器116(例如,控制寄存器和msr)。在发现分页和分段模式之后,管理程序可能针对逻辑地址生成gva,并且检测任何分段错误。

假设没有检测到分段错误,则管理程序可以将gva转换成gpa,以及将gpa转换成hpa,包括在软件中实行页面表遍历。为了在软件中实行这些转换,管理程序可以将虚拟机最初设置的许多分页结构条目和ept条目加载到通用硬件寄存器或存储器中。一旦加载了这些分页和ept条目,管理程序就可以通过对转换电路(诸如,页面丢失处理程序(pmh))进行建模来实行转换。

更具体地,参考图4a,管理程序140可以加载由虚拟机建立的来自访客页面表132的多个访客页面表条目132a和来自ept134的多个扩展页面表条目134a。管理程序然后可以经由遍历(例如,顺序搜索)通过访客页面表条目132a来实行转换,以从gva生成gpa。管理程序然后可以使用gpa来遍历(例如,顺序搜索)ept134以生成与gpa相关联的hpa。ept134的使用是可以被用来支持物理存储器虚拟化的特征。当ept在使用中时,通常将被视为物理地址(并且被用来访问存储器)的某些地址将被代替地视为访客物理地址。通过遍历一组ept分页结构来转换访客物理地址,以产生被用来访问物理存储器的物理地址。

图4b是图示了根据一个实现方式的ept的使用以将gpa转换成hpa的框图420。例如,访客物理地址(gpa)可以被拆分成一系列偏移(offset),每个偏移要在ept条目134a的层次结构的表结构内进行搜索。在该示例中,从其中导出了ept条目的ept包括条目的四级层次结构表,包括页面映射级别4表、页面目录指针表、页面目录条目表、以及页面表条目表。(在其他实现方式中,ept内可能存在不同数量的层次结构级别,并且因此,所公开的实现方式将不受ept的特定实现方式所限制。)可以将在ept层次结构的级别处的每个搜索的结果添加到针对下一个表的偏移中,以在ept层次结构中定位下一个级别的表的下一个结果。第四个(页面表条目)表的结果可以与页面偏移组合,以定位物理存储器中的4kb页面(例如),该页面是主机物理地址。

图4c是根据一个实现方式的存储器地址选择硬件440的框图,该存储器地址选择硬件440用于在启用了td和mk-tme架构两者时使用ept134将访客物理地址(gpa)映射到主机物理地址(hpa)。在使得能够实现tdx和mk-tme架构的共存的实现方式中,td、tdrm或管理程序可以通过在访客页面表132的gpa中设置s位来将由td使用的存储器页面标识为共享的或私有的,如图4c中图示的。s位可以不被用作实际地址的部分,而是代替地用作存储器页面的状态(共享的/私有的)标记。gpa中具有值一(“1”)的s位可以将gpa指定为对于td是私有的。相反地,具有一个值的gpa的s位可以将gpa指定为是由td共享的。(在另一实现方式中,可以将值交换,其中零(“0”)值将gpa指定为私有的,而一(“1”)将gpa指定为共享的。)在一个实现方式中,gpa中的s位还可以在相关联的gva中复制。在其他实现方式中,gva可以不包括s位;代替地,关于存储器页面状态的信息可以存储在访客页面表132中并且被附加到可以在页面遍历期间访问的gpa。

管理程序可以将第一受限密钥id分配给td150a。管理程序140还可以将第二非受限密钥id分配给同一td150a。td可以使用与第一(受限的,tdx)密钥id相关联的加密密钥来对私有存储器事务进行加密/解密。第一td可以使用与第二(非受限的,mk-tme)密钥相关联的加密密钥来对共享存储器事务进行加密/解密,该共享存储器事务例如与共享硬件设备相关联的存储器事务。

管理程序140可以在用于td的一组访客页面表132内将与存储器的物理存储器地址(例如,hpa)相关联的物理页面标记为私有的或共享的,该标记是利用与该物理页面相关联的访客虚拟地址(例如,gva)的条目中的共享位(s位)的值而进行的。可以在页面表132中引用gva以映射到gpa,并且可以在ept134中引用gpa以映射到存储器的物理页面的hpa。管理程序可以使用该一组访客页面表132将gva转换成gpa,其中在转换后获得的gpa也包括s位,该s位具有与其在gva中所具有的值相同的值。

如图4c中图示的,在一个实现方式中,管理程序140可以使用ept134将gpa转换成物理存储器地址hpa。在一个实现方式中,管理程序可以将s位的值确定为已设置(即,存储器页面是共享的),并且因此生成包括第二(非受限mk-tme)密钥id和主机物理存储器地址hpa的存储器事务。管理程序可以将s位的值确定为清空的(即,存储器页面是私有的),并且从处理器112的安全存储装置(例如,硬件寄存器116或高速缓存118)检索第一(受限)密钥id。在一个实现方式中,管理程序然后可以生成包括第一密钥id和物理存储器地址hpa的存储器事务。

在一个实现方式中,多路复用器450可以被用来基于s位的值在第一密钥id与第二密钥id之间进行选择,第二密钥id包括非受限密钥id并且被附加到ept的条目内的第二物理存储器地址。可以将来自硬件寄存器116或高速缓存118(图1a)的第一密钥id和来自管理程序的第二密钥id输入到多路复用器450,其中s位的值为控制参数。例如,在一个实现方式中,多路复用器450可以被实现为处理器112硬件的部分,诸如存储器控制器120或mk-tme引擎136的部分。

在某些实现方式中,mk-tme密钥id被附加到最前面的m个地址位中,其中最前面的m-l个受限位具有零值。在可以采用不同密钥id划分的其他实现方式中,可以以与所使用的密钥id划分的细节一致的方式来附加mk-tme密钥。

在ept134中实行遍历的管理程序140可以确定与所请求的存储器事务相关联的密钥id是tdx密钥id之一。在一个实现方式中,管理程序可以通过检测到最前面的m-l个受限位之一被设置来确定这一点。管理程序140然后可以尝试访问存储器的物理页面。当确定不可信软件(例如,管理程序)正尝试执行具有受限密钥id的存储器事务时,存储器控制器120可以中断这种访问。

当gpa中的s位清空时(其中私有页面可能指示秘密页面),存储器事务密钥id是在td创建时被分配给td的tdx密钥id之一。如上面参考图2a-2e所解释的,这种密钥id被保证将处于受限密钥id的范围内。因此,利用与被分配给td的tdx密钥id相关联的td私有加密密钥来对td的私有页面进行加密。在检测到gpa中的s位是清空的并且在从gva映射到hpa之后,管理程序140可以生成包括受限tdx密钥id和主机物理存储器地址的存储器事务。

参考回到图3,当处理器112在处于信任域模式下时检测到页面表遍历(例如,对访客页面表132或ept134的遍历)是利用非受限密钥id而进行的时候,门架构300可以同样生成非受限密钥页面错误。“或”门310可以从存储器控制器120接收如下指示:物理存储器地址hpa是从使用页面遍历的存储器事务(即,使用访客页面表132和ept134以用于地址转换的事务)获得的。因此,当比较器320验证请求密钥id属于密钥id的非受限范围并且第一与门330进一步检测到处理器112以td模式操作时,第二与门340的输出将是非受限页面错误。在一个实现方式中,此处描述的机制确保了在td模式下,仅可以使用利用tdx受限密钥加密的页面表。该机制的不同实现方式可以甚至更进一步地划分受限密钥id空间,例如,为代码分配特定的受限密钥id,为页面表分配单独的受限密钥id,以及为被分配给td的通用私有存储器分配另一个密钥id。该机制的其他实现方式可能会在这些情况下生成其他架构错误,诸如#gp(通用保护)错误。

图5图示了使得能够实现tdx和mk-tme架构在相同计算设备(参考回到图1a和1c,诸如支持虚拟机的系统100或不具有虚拟化的计算系统101)上的共存的示例方法。方法500可以通过处理逻辑来实行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如由tdrm或vmm实行的操作)、固件或其组合。在一个实现方式中,方法500由图1的处理器112实行。在另一实现方式中,方法500由关于图7a-13描述的任何处理设备实行。替代地,系统100的其他组件(或在处理器112上执行的软件)可以实行方法500的一些或全部操作。

进一步参考图5,方法500可以开始于:处理逻辑将用于密钥id的物理存储器地址的地址位的第一数量的第一值存储在硬件寄存器中(例如,在硬件寄存器116(图1a)之一中)(510)。在一个实现方式中,密钥id与加密密钥相关联。在一个实现方式中,地址位的第一数量可以是地址位的总数m,如上面解释的。

方法500可以以如下来继续进行:处理逻辑将用以把密钥id划分成非受限密钥id和受限密钥id的划分标识符存储在硬件寄存器中(520)。划分标识符可以是用于标识非受限密钥id与受限密钥id之间的边界的划分密钥id。在一些实现方式中,划分标识符可以包括受限位的数量m-l,并且进一步包括受限位的位置。在一个实现方式中,受限位是用于密钥id编码的m个总计位中的较高的m-l个位。在另一实现方式中,受限位是非连续的。在又一实现方式中,仅存在一个受限位,该受限位可以是m个位中的最低位。

方法500可以以如下来继续进行:处理逻辑执行管理程序(530)。管理程序可以是由主机计算系统的操作系统支持并且进而启用虚拟机环境的软件程序。方法500可以以如下来继续进行:处理逻辑将非受限密钥id分配给管理程序140。非受限密钥id可以对应于如下加密密钥:该加密密钥由处理器112的mk-tme引擎136启用,并且由管理程序140使用以对驻留在被分配给管理程序的物理存储器页面中的并且由管理程序用来运行在td外部执行的vm155的数据进行加密。

方法500可以以如下来继续进行:处理逻辑将第一密钥id分配给td基础设施的第一td,其中第一密钥id是受限密钥id之一(550)。方法500可以继续将存储器130的第一物理页面分配给第一td,其中要利用与第一密钥id相关联的加密密钥来对存储器的第一物理页面中的数据进行加密。

图6图示了使得能够实现td和mk-tme技术的共存从而进一步使得能够实现存储器分页的示例方法。方法600可以由处理逻辑来实行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如由tdrm或vmm实行的操作)、固件或其组合。方法600可以开始于:处理逻辑实行方法600的上面描述的步骤510至560。例如,类似于方法500的步骤550,处理逻辑可以将第一密钥id分配给td,其中第一密钥id是受限密钥id之一。为了紧凑起见,在图6中没有明确地重复方法500的其他步骤,但是可以理解方法500的其他步骤也将在图6的方法600内实现。

方法600可以继续以如下来继续进行:处理逻辑例如通过管理程序140将第二密钥id分配给第一td,其中第二密钥id是非受限密钥id之一(610)。第一td可以使用与第一密钥id相关联的加密密钥来对私有存储器事务进行加密/解密。第一td可以使用与第二密钥相关联的加密密钥来对共享存储器事务进行加密/解密,该共享存储器事务例如与共享硬件设备相关联的存储器事务。

方法600可以以如下来继续进行:处理逻辑在用于td的一组访客页面表内将与存储器的物理存储器地址(例如,hpa)相关联的物理页面标记为私有的或共享的,该标记是利用与物理页面相关联的访客物理地址(例如,gpa)的条目中的共享位(s位)的值而进行的(620)。可以在ept134中引用gpa,以映射到存储器的物理页面的hpa。在一个实现方式中,利用s位的值进行标记可以包括将s位的值设置成0,以将物理页面指定为私有的,以及将s位的值设置为1,以将物理页面指定为共享的。在另一实现方式中,两个值可以实现相反的指定。

方法600可以以如下来继续进行:处理逻辑使用该一组访客页面表将gva转换成gpa,其中在转换后获得的gpa也包括s位,该s位具有与其在gva中所具有的值相同的值(630)。方法600可以以如下来继续进行:处理逻辑使用ept134将gpa转换成物理存储器地址hpa(640)。方法600可以以如下来继续进行:处理逻辑确定s位的值是“私有的”(例如,0,该位是“清空的”)还是“共享的”(例如,1,该位是“已设置”)(650)。如果s位的值被确定为是0(指示私有物理存储器页面),则方法600可以以如下来进行:处理逻辑检索被分配给td的第一(受限)密钥id(660)。例如,处理逻辑可以从存储在处理器112内部的mot126检索第一密钥id。替代地,处理逻辑可以从管理程序140或tdrm142检索第一密钥。

在一个实现方式中,方法600可以以如下来继续进行:处理逻辑生成包括第一(受限tdx)密钥id和物理存储器地址hpa的存储器事务(670)。然而,如果处理逻辑确定s位的值已设置(指示共享存储器页面),则在一个实现方式中,方法600可以以如下来进行:处理逻辑生成包括第二(非受限mk-tme)密钥id和主机物理存储器地址hpa的存储器事务(680)。

图7a是图示了根据本公开的至少一个实现方式的处理器的有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图,该处理器监测处理设备的性能以提供信任域架构与多密钥总存储器加密技术的共存。图7b是图示了根据本公开的至少一个实现方式的要被包括在处理器中的有序架构核和寄存器重命名逻辑、无序发布/执行逻辑的框图。图7a中的实线框图示了有序流水线,而虚线框图示了寄存器重命名、无序发布/执行流水线。类似地,图7b中的实线框图示了有序架构逻辑,而虚线框图示了寄存器重命名逻辑和无序发布/执行逻辑。

在图7a中,处理器流水线700包括获取阶段702、长度解码阶段704、解码阶段706、分配阶段708、重命名阶段710、调度(也被称为分发或发布)阶段712、寄存器读取/存储器读取阶段714、执行阶段716、写回/存储器写入阶段718、异常处理阶段722以及提交阶段724。在一些实现方式中,以不同的次序提供这些阶段,并且可以将不同的阶段视为有序和无序的。

在图7b中,箭头表示两个或更多个单元之间的耦合,并且箭头的方向指示那些单元之间的数据流的方向。图7b示出了处理器核(核)790,处理器核(核)790包括耦合到执行引擎单元750的前端单元730,并且这两者都耦合到存储器单元770。

核790可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核或混合的或可替换的核类型。作为又一选项,核790可以是专用核,诸如例如网络或通信核、压缩引擎、图形核等等。

前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,该指令高速缓存单元734耦合到指令转换后备缓冲器(tlb)736,该指令转换后备缓冲器(tlb)736耦合到指令获取单元738,该指令获取单元738耦合到解码单元740。解码单元或解码器可以解码指令,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号(其从原始指令解码或者以其他方式反映原始指令,或者从原始指令导出)。可以使用各种不同的机制来实现解码器。合适的机制的示例包括但不限于:查找表、硬件实现方式、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。指令高速缓存单元734进一步耦合到存储单元770中的2级(l2)高速缓存单元776。解码单元740耦合到执行引擎单元750中的重命名/分配器单元752。

执行引擎单元750包括耦合到退役(retirement)单元754和一组一个或多个调度器单元756的重命名/分配器单元752。(一个或多个)调度器单元756表示任何数量的不同调度器,包括保留站、中央指令窗口等。(一个或多个)调度器单元756耦合到(一个或多个)物理寄存器堆(一个或多个)单元758。(一个或多个)物理寄存器堆单元758中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点等,状态(例如,作为要执行的下一条指令的地址的指令指针)等。(一个或多个)物理寄存器堆(一个或多个)单元758被退役单元754重叠,以说明可以实现寄存器重命名和无序执行的各种方式(例如,使用(一个或多个)重新排序缓冲器和(一个或多个)退役寄存器堆、使用(一个或多个)未来文件、(一个或多个)历史缓冲器、以及(一个或多个)退役寄存器堆;使用寄存器地图和寄存器池等)。

通常,架构寄存器从处理器的外部或者从程序设计员的视角是可见的。寄存器不限于任何已知特定类型的电路。各种不同类型的寄存器是适合的,只要它们能够如本文所述的那样存储和提供数据即可。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。退役单元754和(一个或多个)物理寄存器堆(一个或多个)单元758耦合到(一个或多个)执行集群760。(一个或多个)执行集群760包括一组一个或多个执行单元762和一组一个或多个存储器访问单元764。执行单元762可以实行各种操作(例如,移位、加法、减法、乘法)并且在各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)上实行。

虽然一些实现方式可以包括专用于特定功能或功能集合的多个执行单元,但是其他实现方式可以包括全部实行全部功能的一个执行单元或多个执行单元。(一个或多个)调度器单元756、(一个或多个)物理寄存器堆(一个或多个)单元758和(一个或多个)执行集群760被示出为可能是多个,这是因为某些实现方式为某些类型的数据/运算创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或均具有它们自己的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在单独的存储器访问流水线的情况下,实现了其中该流水线的执行集群具有(一个或多个)存储器访问单元764的某些实施例)。还应当理解,在使用了单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行并且其余的是有序的。

该组存储器访问单元764耦合到存储器单元770,该存储器单元770包括耦合到数据高速缓存单元774的数据tlb单元772,该数据高速缓存单元774耦合到2级(l2)高速缓存单元776。在一个示例性实现方式中,存储器访问单元764可以包括负载单元、存储地址单元和存储数据单元,其中的每一个耦合到存储器单元770中的数据tlb单元772。l2高速缓存单元776耦合到一个或多个其他级的高速缓存并且最终耦合到主存储器。

作为示例,示例性寄存器重命名、无序发布/执行核架构可以如下那样实现图7a的流水线700:1)指令获取38分别实行获取和长度解码阶段702和704;2)解码单元740实行解码阶段706;3)重命名/分配器单元752实行分配阶段708和重命名阶段710;4)(一个或多个)调度器单元756实行调度阶段712;5)(一个或多个)物理寄存器堆(一个或多个)单元758和存储器单元770实行寄存器读取/存储器读取阶段714;执行集群760实行执行阶段716;6)存储器单元770和(一个或多个)物理寄存器堆(一个或多个)单元758实行写回/存储器写入阶段718;7)异常处理阶段722中可能涉及各种单元;8)退役单元754和(一个或多个)物理寄存器堆(一个或多个)单元758实行提交阶段724。

核790可以支持一个或多个指令集(例如,x86指令集(具有已经被添加有较新版本的一些扩展);加利福尼亚州森尼维尔市的美普思科技公司(mipstechnologies)的mips指令集;加利福尼亚州森尼维尔市的arm控股的arm指令集(具有诸如neon之类的附加扩展))。

应当理解的是,核可以支持多线程(执行操作或线程的两个或更多个并行集合)并且可以以各种方式来这么做,该各种方式包括:时间切片多线程、同时多线程(在单个物理核为线程中的每一个提供逻辑核的情况下,该物理核是同时多线程的)或它们的组合(例如,此后诸如在英特尔®超线程技术中的时间切片获取和解码以及同时多线程)。

虽然在无序执行的上下文中描述了寄存器重命名,但是应当理解的是,可以在有序架构中使用寄存器重命名。虽然处理器的所说明的实现方式还包括单独的指令以及数据高速缓存单元734/774和共享l2高速缓存单元776,但是替代的实现方式可以具有用于指令和数据两者的单个内部高速缓存,诸如例如1级(l1)内部高速缓存、或多级内部高速缓存。在一些实现方式中,系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,全部的高速缓存都可以在核和/或处理器的外部。

图8图示了根据本公开的至少一个实现方式的处理设备800的微架构的框图,处理设备800包括逻辑电路以提供信任域架构与多密钥总存储器加密技术的共存。在一些实现方式中,指令可以被实现成在数据元素上操作,该数据元素具有字节、字、双倍字、四倍字等的大小以及数据类型(诸如,单精度和双精度整数和浮点数据类型)。在一个实现方式中,有序前端801是处理设备800的部分,该部分获取要执行的指令并且准备这些指令以供稍后在处理设备流水线中使用。提供信任域架构与多密钥总存储器加密技术的共存的实现方式可以在处理设备800中实现。

前端801可以包括若干个单元。在一个实现方式中,指令预获取器826从存储器获取指令并且将它们馈送至指令解码器828,指令解码器828进而将它们解码或解释。例如,在一个实现方式中,解码器将接收到的指令解码成机器可以执行的被叫做“微指令”或“微操作”(也叫作微op或uops)的一个或多个操作。在其他实现方式中,解码器将指令解析成操作码(opcode)和对应的数据和控制字段,它们被微架构使用以实行根据一个实现方式的操作。在一个实现方式中,追踪高速缓存830取得经解码的uops并且将它们汇编成程序有序序列或者在uop队列834中追踪以用于执行。当追踪高速缓存830遇到复杂指令时,微代码rom832提供完成该操作所需的uops。

一些指令被转换成单个微op,而其他指令需要若干个微op来完成完整操作。在一个实现方式中,如果需要多于四个微op以完成指令,则解码器818访问微代码rom832以执行该指令。对于一个实现方式,可以将指令解码成小数量的微op以用于在指令解码器828处进行处理。在另一实现方式中,倘若需要多个微op以实现该操作,则可以将指令存储在微代码rom832内。追踪高速缓存830指代入口点可编程逻辑阵列(pla),以确定用于读取微代码序列的正确的微指令指针,以根据一个实现方式完成来自微代码rom832的一个或多个指令。当微代码rom832完成了对指令的微op的排序之后,该机器的前端801恢复从追踪高速缓存830获取微op。

无序执行引擎803是准备指令以用于执行的地方。无序执行逻辑具有许多缓冲器以使指令流平滑并将指令流重新排序,以便当它们顺着流水线向下行进并且得以调度以供执行时优化性能。分配器逻辑分配每个uop为了进行执行所需要的缓冲器和资源。分配器/寄存器重命名逻辑840将逻辑寄存器重命名到寄存器堆中的条目上。分配器840还为两个uop队列中的一个中的每个uop分配条目,一个队列用于存储器操作842,并且一个队列用于非存储器操作844,它们在指令调度器的前面,该指令调度器为:存储器调度器846、快速调度器802、慢速/通用浮点调度器804和简单浮点调度器806。uop调度器802、804、806基于其相关输入寄存器操作数源的就绪度以及uop完成其操作所需的执行资源的可用性来确定uop何时准备好执行。一个实现方式的快速调度器802可以在主时钟周期的每半个周期上进行调度,而其他调度器可能仅仅每主处理设备时钟周期调度一次。调度器对分派端口进行仲裁以对uop进行调度以供执行。

寄存器堆808、810位于调度器802、804、806与执行块811中的执行单元812、814、816、818、820、822、824之间。存在分别用于整数和浮点运算的单独的寄存器堆808、810。一个实现方式的每个寄存器堆808、810还包括旁路网络,该旁路(bypass)网络可以绕过或向新的相关uop转发尚未被写入到寄存器堆中的刚完成的结果。整数寄存器堆808和浮点寄存器堆810还能够与另一个一起传送数据。对于一个实现方式,将整数寄存器堆808拆分成两个单独的寄存器堆,一个寄存器堆用于数据的低序32位,而第二寄存器堆用于数据的高序32位。一个实现方式的浮点寄存器堆810具有128位宽条目,这是因为浮点指令通常具有在宽度方面从64至128位的操作数。

执行块811包含执行单元812、814、816、818、820、822、824,指令实际在其中被执行。该区段包括寄存器堆808、810,它们存储微指令需要执行的整数和浮点数据运算数的值。一个实现方式的处理设备800包括多个执行单元:地址生成单元(agu)812、agu814、快速alu816、快速alu818、慢速alu820、浮点alu822、浮点移动单元824。对于一个实现方式,浮点执行块812、814执行浮点、mmx、simd和sse、或其他运算。一个实现方式的浮点alu812包括64位乘64位浮点除法器以执行除法、平方根和余数微op。对于本公开的实现方式,涉及浮点值的指令可以利用浮点硬件来处理。

在一个实现方式中,alu运算去往高速alu执行单元816、818。一个实现方式的快速alu816、818可以在半个时钟周期的有效等待时间的情况下执行快速运算。对于一个实现方式,大多数复杂的整数运算去往慢速alu820,这是因为慢速alu820包括用于长等待时间类型的运算(诸如,乘法器、移位、标志逻辑和分支处理)的整数执行硬件。agu812、814执行存储器加载/存储操作。对于一个实现方式,在关于64位数据操作数实行整数运算的上下文中描述了整数alu816、818、820。在替代实现方式中,alu816、818、820可以被实现成支持包括16、32、128、256等的各种数据位。类似地,浮点单元822、824可以被实现成支持具有各种宽度的位的操作数的范围。对于一个实现方式,浮点单元822、824可以结合simd和多媒体指令在128位宽的打包数据操作数上进行操作。

在一个实现方式中,uops调度器802、804、806在父负载已经完成执行之前分派相关操作。随着uops在处理设备800中被推测地(speculatively)调度和执行,处理设备800还包括用以处理存储器未命中(miss)的逻辑。如果数据负载在数据高速缓存中未命中,则在该流水线中可能存在已经向调度器留下了暂时不正确的数据的飞行中(inflight)的相关操作。重放机构追踪并且重新执行使用不正确数据的指令。仅相关操作需要被重放,并且独立的操作被允许完成。处理设备的一个实现方式的调度器和重放机构还被设计成捕捉用于文本字符串比较操作的指令序列。

根据一个实现方式,处理设备800还包括用以提供信任域架构与多密钥总存储器加密技术的共存的逻辑。在一个实现方式中,根据本文中的描述,处理设备800的执行块811可以包括tdrm142、mot126和tdcs,以提供信任域架构与多密钥总存储器加密技术的共存。

术语“寄存器”可以指代被用作指令的部分以标识操作数的板载处理设备存储位置。换句话说,寄存器可以是(从程序设计员的角度看)可从处理设备的外部使用的那些寄存器。然而,实现方式的寄存器不应当在含义上被限于特定类型的电路。而是,实现方式的寄存器能够存储和提供数据,并且实行本文中所描述的功能。本文中所描述的寄存器可以由处理设备内的电路使用任何数量的不同技术来实现,诸如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实现方式中,整数寄存器存储三十二位整数数据。一个实现方式的寄存器堆还包含用于打包数据的八个多媒体simd寄存器。

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

可以在许多不同的系统类型中实现用于提供信任域架构与多密钥总存储器加密技术的共存的实现方式。现在参考图9,示出的是根据实现方式的多处理设备系统900的框图。如图9中所示,多处理设备系统900是点到点互连系统,并且包括经由点到点互连950耦合的第一处理设备970和第二处理设备980。如图9中所示,处理设备970和980中的每一个可以是多核处理设备,包括第一和第二处理设备核(未示出),尽管在处理设备中可能存在潜在地多得多的核。根据本公开的实现方式,处理设备均可以包括混合写模式逻辑。用于提供信任域架构与多密钥总存储器加密技术的共存的实现方式可以在处理设备970、处理设备980或两者中实现。

虽然示出有两个处理设备970、980,但是要理解的是,本公开的范围不限于此。在其他实现方式中,在给定处理设备中可以存在一个或多个附加处理设备。

处理器970和980被示为分别包括集成存储器控制器单元(imc)972和982。处理设备970还包括作为其总线控制器单元的部分的点到点(p-p)接口976和978;类似地,第二处理设备980包括p-p接口986和988。处理设备970、980可以经由点到点(p-p)接口950使用p-p接口电路978、988来交换信息。如图9中示出的,imc972和982将处理设备耦合到相应的存储器,也就是存储器932和存储器934,这些存储器可以是本地附接到相应处理设备的主存储器的部分。

处理器970、980可以均使用点到点接口电路976、994、986、998经由单独的p-p接口952、954来与芯片组990交换信息。芯片组990还可以经由高性能图形接口992与高性能图形电路938交换信息。

共享高速缓存(未示出)可以被包括在任一个处理设备中,或者在两个处理设备之外,然而还经由p-p互连与处理设备连接,以使得如果将处理设备置于低功率模式中,则可以将任一个或两个处理设备的本地高速缓存信息存储在共享高速缓存中。

芯片组990可以经由接口996耦合到第一总线916。在一个实现方式中,第一总线916可以是外围组件互连(pci)总线,或者诸如pci快速总线或另一第三代i/o互连总线之类的总线,尽管本公开的范围不限于此。

如图9中示出的,各种i/o设备914可以连同总线桥918一起耦合到第一总线916,该总线桥918将第一总线916耦合到第二总线920。在一个实现方式中,第二总线920可以是低引脚计数(lpc)总线。各种设备可以耦合到第二总线920,这些设备包括例如键盘和/或鼠标922、通信设备927以及诸如磁盘驱动器或其他大容量存储设备之类的存储单元928,存储单元928在一个实现方式中可以包括指令/代码和数据930。进一步地,音频i/o924可以耦合到第二总线920。要注意的是,其他架构也是可能的。例如,代替于图9的点到点架构,该系统可以实现多点总线(multi-dropbus)或其他这种架构。

现在参考图10,示出的是根据本公开的实现方式的第三系统1000的框图。图9和10中的相似元件拥有相似的附图标记,并且已经从图10中省略了图9的某些方面,以避免使图10的其他方面模糊。

图10图示了处理器970、980。在一个实现方式中,处理器970、980可以实现混合的核。处理器970、980可以分别包括集成存储器和i/o控制逻辑(“cl”)1072和1082,并且分别经由点到点(p-p)接口978与988之间的点到点互连950彼此互相通信。处理器970、980如示出的那样均通过相应的p-p接口976至994和986至998经由点到点互连952和954与芯片组990通信。对于至少一个实现方式,cl1072、1082可以包括本文中所述的imcs972、982。附加地,cl1072、1082还可以包括i/o控制逻辑。图10图示了存储器932、934耦合到cl1072、1082,并且i/o设备1014也耦合到cl1072、1082。传统i/o设备1015经由接口996耦合到芯片组990。用于提供信任域架构与多密钥总存储器加密技术的共存的实现方式可以在处理设备970、处理设备980或两者中实现。

图11是可以包括应用处理器1110的核1112a……1112n中的一个或多个的示例片上系统(soc)1100。用于膝上型电脑、台式电脑、手持式pc、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理设备、数字信号处理设备(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备、以及各种其他电子设备的本领域已知的其他系统设计和配置也是适合的。一般而言,能够并入如本文中公开的处理设备和/或其他执行逻辑的种类庞杂的系统或电子设备通常是适合的。

现在参考图11,示出的是根据本公开的实现方式的soc1100的框图。而且,虚线框是更高级的soc上的特征。在图11中,(一个或多个)互连单元1102耦合到:应用处理器1110,其包括分别包含一个或多个高速缓存单元1104a……1104n的一组一个或多个核1112a-n、以及(一个或多个)共享高速缓存单元1106;系统代理单元1113;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;一组或一个或多个媒体处理设备1120,其可以包括集成图形逻辑1108、用于提供静止和/或视频相机功能的图像处理设备1124、用于提供硬件音频加速的音频处理设备1126、以及用于提供视频编码/解码加速的视频处理设备1128;静态随机存取存储器(sram)单元1130;直接存储器访问(dma)单元1132;以及用于耦合到一个或多个外部显示器的显示单元1140。可以在soc1100中实现用于提供信任域架构与多密钥总存储器加密技术的共存的实现方式。

接着转向图12,描绘了根据本公开的实现方式的soc设计的实现方式。作为说明性示例,soc1200被包括在用户设备(ue)中。在一个实现方式中,ue指代要由最终用户使用以进行通信的任何设备,诸如手持电话、智能电话、平板设备、超薄笔记本电脑、具有宽带适配器的笔记本电脑或任何其他类似的通信设备。ue可以连接到基站或节点,该基站或节点在本质上可以对应于gsm网络中的移动站(ms)。可以在soc1200中实现用于提供信任域架构与多密钥总存储器加密技术的共存的实现方式。

在这里,soc1220包括2个核——1206和1207。类似于以上讨论,核1206和1207可以符合指令集架构,诸如具有英特尔®架构核tm的处理设备、高级微设备公司(amd)处理设备、基于mips的处理设备、基于arm的处理设备设计或其客户、以及它们的许可方或采用者。核1206和1207耦合到高速缓存控件1208,该高速缓存控件1208与总线接口单元1209和l2高速缓存1210相关联,以与系统1200的其他部分进行通信。互连1211包括片上互连,诸如iosf、amba或以上讨论的其他互连,它们可以实现所描述的公开的一个或多个方面。

互连1211向其他组件提供通信信道,该其他组件诸如是:用以与sim卡对接的订户标识模块(sim)1230、用以保持启动代码以用于由核1206和1207执行以初始化并启动soc1200的启动rom1235、用以与外部存储器(例如,dram1260)对接的sdram控制器1240、用以与非易失性存储器(例如,闪存1265)对接的闪存控制器1245、用以与外围设备对接的外围控件1250(例如,串行外围接口)、视频编解码器1220以及用以显示和接收输入(例如,触摸启用的输入)的视频接口1225、用以实行图形相关计算的gpu1215等。这些接口中的任何接口可以结合本文中所述的实现方式的各方面。

附加地,该系统图示了用于通信的外围设备,诸如蓝牙模块1270、3g调制解调器1275、gps1280和wi-fi1285。如上面陈述的那样注意,ue包括用于通信的无线电装置。因此,可以不全部包括这些外围通信模块。然而,在ue中应该包括用于外部通信的某种形式的无线电装置。

图13图示了采用计算系统1300的示例形式的机器的示图表示,在该计算系统内可以执行一组指令,该一组指令用于使机器实行本文中讨论的方法中的任何一个或多个方法。在替代实现方式中,机器可以连接(例如,联网)到lan、内联网、外联网或互联网中的其他机器。该机器可以在客户端-服务器网络环境中的服务器或客户端设备的容量中或者作为对等(或分布式)网络环境中的对等机器进行操作。该机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web电器、服务器、网络路由器、交换机或桥接器、或能够(顺序的或以其他方式)执行指定要由该机器采取的动作的一组指令的任何机器。进一步地,虽然图示了仅单个机器,但是术语“机器”也应该被理解为包括单独地或者联合地执行一组(或多组)指令以实行本文中讨论的方法中的任何一个或多个方法的任何机器集合。转换页面和区段的实现方式可以在计算系统1300中实现。

计算系统1300包括经由总线1330彼此通信的处理设备1302、主存储器1304(例如,只读存储器(rom)、闪速存储器、动态随机存取存储器(dram)(诸如同步dram(sdram)或dram(rdram)等))、静态存储器1306(例如,闪速存储器、静态随机存取存储器(sram)等)和数据存储设备1318。

处理设备1302表示诸如微处理设备、中央处理单元等等的一个或多个通用处理设备。更特别地,处理设备可以是复杂指令集计算(cisc)微处理设备、精简指令集计算机(risc)微处理设备、甚长指令字(vliw)微处理设备或实现其他指令集的处理设备、或实现指令集的组合的处理设备。处理设备1302也可以是一个或多个专用处理设备,诸如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理设备(dsp)、网络处理设备等等。在一个实现方式中,处理设备1302可以包括一个或处理设备核。处理设备1302被配置成执行指令1326以便实行本文中所讨论的操作。在一个实现方式中,处理设备1302可以是图1的计算系统100的部分。替代地,计算系统1300可以包括如本文所描述的其他组件。应当理解的是,核可以支持多线程(执行操作或线程的两个或更多个并行集合)并且可以以各种方式这么做,该各种方式包括:时间切片多线程、同时多线程(在单个物理核为线程中的每一个提供逻辑核的情况下,该物理核同时是多线程的)或它们的组合(例如,此后诸如在英特尔®超线程技术中的时间切片获取和解码以及同时多线程)。

计算系统1300可以进一步包括通信地耦合到网络1320的网络接口设备1308。计算系统1300还可以包括视频显示单元1310(例如,液晶显示器(lcd)或阴极射线管(crt))、字母数字输入设备1312(例如,键盘)、光标控制设备1314(例如,鼠标)、信号生成设备1316(例如,扬声器)或其他外围设备。此外,计算系统1300可以包括图形处理单元1322、视频处理单元1328和音频处理单元1332。在另一实现方式中,计算系统1300可以包括芯片组(未图示),其指代一组集成电路或芯片,它们被设计成与处理设备1302一起工作并且控制处理设备1302与外部设备之间的通信。例如,芯片组可以是母板上的一组芯片,该母板将处理设备1302链接到甚高速设备(诸如,主存储器1304和图形控制器),以及将处理设备1302链接到外围设备的低速外围总线(诸如,usb、pci或isa总线)。

数据存储设备1318可以包括:计算机可读存储介质1324,其上存储有指令1326,指令1326体现了本文中所述的功能的方法中的任何一个或多个方法。在由计算系统1300执行指令1326期间,指令1326还可以完全或至少部分地驻留在主存储器1304内作为指令1326、和/或驻留在处理设备1302内作为处理逻辑;主存储器1304和处理设备1302也构成机器可读存储介质。

计算机可读存储介质1324也可以被用来存储诸如关于图1所描述的利用处理设备1302的指令1326,和/或包含调用以上应用的方法的软件库。虽然计算机可读存储介质1324在示例实现方式中被示出为单个介质,但是术语“计算机可读存储介质”应该被理解成包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应当被理解成包括能够存储、编码或承载一组指令以用于由机器执行并且使得机器实行本实现方式的方法中的任何一个或多个方法的任何介质。术语“计算机可读存储介质”因此应被理解成包括但不限于固态存储器以及光学和磁性介质。

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

示例1是一种处理器,其包括:1)用以执行管理程序的处理器核,该处理器核包括用以存储以下各项的硬件寄存器:a)位范围,用以标识物理存储器地址中的定义了密钥标识符(id)的地址位的第一数量;以及b)密钥id的划分密钥id,用以标识密钥id的非受限密钥id与受限密钥id之间的边界;以及其中处理器核用以:a)分配非受限密钥id中的至少一个以供管理程序使用;以及b)将密钥id的第一密钥id分配给信任域基础设施的第一信任域,其中,第一密钥id是受限密钥id之一;以及2)耦合到处理器核的存储器控制器,用以将存储器的第一物理页面分配给第一信任域,其中存储器的第一物理页面的数据要利用与第一密钥id相关联的加密密钥被加密。

在示例2中,根据示例1的处理器,其中位范围包括非受限位的第一位子范围和受限位的第二位子范围,其中对于非受限密钥id,受限位中的每一个要具有第一二进制值,并且其中对于受限密钥id,受限位中的至少一个要具有与第一二进制值不同的第二二进制值。

在示例3中,根据示例2的处理器,其中存储器控制器进一步用以:1)检测涉及被分配给第一信任域的存储器的第一物理页面的存储器事务,其中该存储器事务包括存储器的物理页面的物理存储器地址以及请求密钥id;以及2)响应于确定请求密钥id的受限位中的至少一个具有第二二进制值而生成错误。

在示例4中,根据示例3的处理器,其中存储器事务是代码获取或使用页面遍历的存储器事务中的一个,并且其中该错误是非受限密钥页面错误。

在示例5中,根据示例1的处理器,其中存储器控制器进一步用以:响应于检测到由第一信任域的信任计算基(tcb)外部的软件程序发起的并且涉及存储器的第一物理页面的存储器事务而生成错误。

在示例6中,根据示例1的处理器,其中处理器核进一步用以将第二密钥id分配给第二信任域,其中第二密钥id是受限密钥id之一,并且其中存储器控制器进一步用以:1)将存储器的第二物理页面分配给第二信任域,其中存储器的第二物理页面中的数据要利用与第二密钥id相关联的加密密钥被加密;2)在密钥所有权表(kot)中存储第一密钥id到第一信任域的分配和第二密钥id到第二信任域的分配;以及3)在存储器所有权表(mot)中存储标识了存储器的第一物理页面到第一信任域的分配的第一信任域标识符和标识了存储器的第二物理页面到第二信任域的分配的第二信任域标识符。

在示例7中,根据示例6的处理器,其中存储器控制器进一步用以:1)检测涉及存储器的第一物理页面的存储器事务,其中该存储器事务包括存储器的第一物理页面的物理存储器地址以及第二密钥id;2)参考mot,以确定第二密钥id不是存储器的第一物理页面的正确属性;以及3)生成错误。

在示例8中,根据示例6的处理器,其中存储器控制器进一步用以:1)检测涉及存储器的第一物理页面的存储器事务,其中该存储器事务源自于第二信任域,并且包括存储器的第一物理页面的存储器地址以及第一密钥id;2)参考kot,以确定第一密钥id没有被分配给第二信任域;以及3)生成错误。

在示例9中,根据示例1的处理器,其中管理程序用以:1)将与存储器的第一物理存储器地址相关联的第一物理页面标记为私有的,其中该标记包括在针对第一信任域的一组ept内清空与第一物理页面相关联的访客物理地址的条目中的共享位(s位)的值;2)使用一组访客页面表将访客虚拟地址转换成访客物理地址;3)使用扩展页面表将访客物理地址转换成第一物理存储器地址;4)基于访客物理地址中的s位的值从处理器的安全存储装置检索第一密钥id;以及5)生成包括第一密钥id和第一物理存储器地址的存储器事务。

在示例10中,根据示例9的处理器,其中处理器核进一步包括多路复用器,该多路复用器用以基于s位的值在第一密钥id与第二密钥id之间进行选择,该第二密钥id包括附加到ept的条目内的第二物理存储器地址的非受限密钥id。

在示例11中,根据示例1的处理器,其中管理程序用以:1)将第二密钥id分配给第一信任域,其中第二密钥id是非受限密钥id之一,2)将与存储器的第二物理存储器地址相关联的第二物理页面标记为共享的,其中该标记包括在针对第一信任域的一组ept内设置与第二物理页面相关联的访客物理地址的条目中的共享位(s位)的值,3)使用一组访客页面表将访客虚拟地址转换成访客物理地址,4)使用ept并基于s位的值来转换访客物理地址,以从ept中的条目获得第二物理存储器地址和第二密钥id的组合;以及5)生成包括第二密钥id和第二物理存储器地址的存储器事务。

各种实现方式可以具有上述结构特征的不同组合。例如,还可以关于本文中所描述的系统来实现上述处理器和方法的所有可选特征,并且可以在一个或多个实现方式中的任何地方使用示例中的具体内容。

示例12是一种系统,其包括:1)存储器设备;2)硬件寄存器,用以存储:a)位范围,用以标识物理存储器地址中的定义了密钥标识符(id)的地址位的第一数量;以及b)密钥id的划分密钥id,用以标识密钥id的非受限密钥id与受限密钥id之间的边界;以及3)耦合到存储器设备的处理器,该处理器包括硬件寄存器和存储器控制器,其中该处理器用以执行第一软件程序,以将密钥id的第一密钥id分配给信任域基础设施的第一信任域,其中第一密钥id是受限密钥id之一;以及其中存储器控制器用以将存储器设备的第一物理页面分配给第一信任域,其中存储器的第一物理页面的数据要利用与第一密钥id相关联的加密密钥被加密。

在示例13中,根据示例12的系统,其中第一软件程序进一步用以将密钥id的第二密钥id分配给第二信任域,其中第二密钥id是受限密钥id之一,并且其中存储器控制器进一步用以将存储器的第二物理页面分配给第二信任域,其中存储器的第二物理页面中的数据要利用与第二密钥id相关联的加密密钥被加密。

在示例14中,根据示例13的系统,进一步包括:共享硬件设备,其对于在第一信任域中运行的第二软件程序是可访问的,其中该共享硬件设备对于在第二信任域中运行的第三软件程序是进一步可访问的,其中第一软件程序进一步用以将共享密钥id分配给第一信任域和第二信任域两者,其中共享密钥id是非受限密钥id之一,并且其中与共享密钥id相关联的加密密钥要用于涉及共享硬件设备的存储器事务。

在示例15中,根据示例14的系统,其中共享硬件设备是i/o设备、网络适配器、打印机、通信设备或处理设备中的一个。

在示例16中,根据示例12的系统,其中存储器控制器进一步用以:1)检测涉及被分配给第一信任域的存储器的第一物理页面的存储器事务,其中该存储器事务包括存储器的第一物理页面的物理存储器地址以及共享密钥id;以及2)响应于确定共享密钥id是非受限密钥id而生成错误。

在示例17中,根据示例16的系统,其中存储器事务是与代码获取相关联的存储器事务,或者用以采用页面遍历来访问物理存储器地址,并且其中该错误是非受限密钥页面错误。

各种实现方式可以具有上述结构特征的不同组合。例如,还可以关于本文中所描述的系统来实现上述处理器和方法的所有可选特征,并且可以在一个或多个实现方式中的任何地方使用示例中的具体内容。

示例18是一种方法,其包括:1)从处理器的硬件寄存器检索位范围,以标识物理存储器地址中的定义了密钥标识符(id)的地址位的第一数量;以及2)从硬件寄存器检索密钥id的划分密钥id,以将密钥id划分成密钥id的非受限密钥id和受限密钥id;3)由处理器执行管理程序;4)由处理器分配非受限密钥id中的至少一个,以供管理程序使用;5)由管理程序将密钥id的第一密钥id分配给信任域基础设施的第一信任域,其中第一密钥id是受限密钥id之一;以及6)由存储器控制器将存储器的第一物理页面分配给第一信任域,其中存储器的第一物理页面中的数据要利用与第一密钥id相关联的加密密钥被加密。

在示例19中,根据示例18的方法,进一步包括:1)由管理程序将第二密钥id分配给第二信任域,其中第二密钥id是受限密钥id之一;2)由存储器控制器将存储器的第二物理页面分配给第二信任域,其中存储器的第二物理页面中的数据要利用与第二密钥id相关联的加密密钥被加密;3)由存储器控制器在密钥所有权表(kot)中存储第一密钥id到第一信任域的分配和第二密钥id到第二信任域的分配;以及4)由存储器控制器在存储器所有权表(mot)中存储标识了存储器的第一物理页面到第一信任域的分配的第一信任域标识符和标识了存储器的第二物理页面到第二信任域的分配的第二信任域标识符。

在示例20中,根据示例19的方法,进一步包括:1)由存储器控制器检测涉及存储器的第一物理页面的存储器事务,其中该存储器事务包括存储器的第一物理页面的物理存储器地址以及第二密钥id;2)由存储器控制器参考mot,以确定第二密钥id不是存储器的第一物理页面的正确属性;以及3)由存储器控制器生成错误。

在示例21中,根据示例20的方法,进一步包括:1)由存储器控制器检测涉及存储器的第一物理页面的存储器事务,其中该存储器事务源自于第二信任域,并且包括存储器的第一物理页面的存储器地址以及第一密钥id;2)由存储器控制器参考kot,以确定第一密钥id没有被分配给第二信任域;以及3)由存储器控制器生成错误。

在示例22中,根据示例18的方法,进一步包括:1)将与存储器的第一物理存储器地址相关联的第一物理页面标记为私有的,其中该标记包括在针对第一信任域的一组ept内清空与第一物理页面相关联的访客物理地址的条目中的e(s位)的值;2)使用一组访客页面表将访客虚拟地址转换成访客物理地址;3)使用ept将访客物理地址转换成物理存储器地址;4)基于访客物理地址中的s位的值来检索第一密钥id;以及5)生成包括第一密钥id和第一物理存储器地址的存储器事务。

在示例23中,根据示例18的方法,进一步包括:1)将第二密钥id分配给第一信任域,其中第二密钥id是非受限密钥id之一;2)将与存储器的第二物理存储器地址相关联的第二物理页面标记为共享的,其中该标记包括在针对第一信任域的一组ept内设置与第二物理页面相关联的访客物理地址的条目中的共享位(s位)的值,3)使用一组访客页面表将访客虚拟地址转换成访客物理地址,4)使用ept并基于s位的值来转换访客物理地址,以从ept中的条目获得第二物理存储器地址和第二密钥id的组合;以及5)生成包括第二密钥id和第二物理存储器地址的存储器事务。

各种实现方式可以具有上述结构特征的不同组合。例如,还可以关于本文中所描述的系统来实现上述处理器和方法的所有可选特征,并且可以在一个或多个实现方式中的任何地方使用示例中的具体内容。

示例24是一种存储指令的非暂时性计算机可读介质,该指令在由具有耦合到系统存储器的核的处理器执行时,使得处理器执行多个逻辑操作,包括:1)从处理器的硬件寄存器检索位范围,以标识物理存储器地址中的定义了密钥标识符(id)的地址位的第一数量;以及2)从硬件寄存器检索密钥id的划分密钥id,以将密钥id划分成密钥id的非受限密钥id和受限密钥id;3)由处理器执行管理程序;4)由处理器分配非受限密钥id中的至少一个,以供管理程序使用;5)由管理程序将密钥id的第一密钥id分配给信任域基础设施的第一信任域,其中第一密钥id是受限密钥id之一;以及6)由存储器控制器将存储器的第一物理页面分配给第一信任域,其中存储器的第一物理页面中的数据要利用与第一密钥id相关联的加密密钥被加密。

在示例25中,根据示例24的非暂时性计算机可读介质,其中该操作进一步包括:1)由管理程序将第二密钥id分配给第二信任域,其中第二密钥id是受限密钥id之一;2)由存储器控制器将存储器的第二物理页面分配给第二信任域,其中存储器的第二物理页面中的数据要利用与第二密钥id相关联的加密密钥被加密;3)由存储器控制器在密钥所有权表(kot)中存储第一密钥id到第一信任域的分配和第二密钥id到第二信任域的分配;以及4)由存储器控制器在存储器所有权表(mot)中存储标识了存储器的第一物理页面到第一信任域的分配的第一信任域标识符和标识了存储器的第二物理页面到第二信任域的分配的第二信任域标识符。

在示例26中,根据示例25的非暂时性计算机可读介质,其中该操作进一步包括:1)由存储器控制器检测涉及存储器的第一物理页面的存储器事务,其中该存储器事务包括存储器的第一物理页面的物理存储器地址以及第二密钥id;2)由存储器控制器参考mot,以确定第二密钥id不是存储器的第一物理页面的正确属性;以及3)由存储器控制器生成错误。

在示例27中,根据示例26的非暂时性计算机可读介质,其中该操作进一步包括:1)由存储器控制器检测涉及存储器的第一物理页面的存储器事务,其中该存储器事务源自于第二信任域,并且包括存储器的第一物理页面的存储器地址以及第一密钥id;2)由存储器控制器参考kot,以确定第一密钥id没有被分配给第二信任域;以及3)由存储器控制器生成错误。

在示例28中,根据示例24的非暂时性计算机可读介质,其中该操作进一步包括:1)将与存储器的第一物理存储器地址相关联的第一物理页面标记为私有的,其中该标记包括在针对第一信任域的一组ept内清空与第一物理页面相关联的访客物理地址的条目中的共享位(s位)的值;2)使用一组访客页面表将访客虚拟地址转换成访客物理地址;3)使用ept将访客物理地址转换成第一物理存储器地址;4)基于访客物理地址中的s位的值来检索第一密钥id;以及5)生成包括第一密钥id和第一物理存储器地址的存储器事务。

在示例29中,根据示例24的非暂时性计算机可读介质,其中该操作进一步包括:1)将第二密钥id分配给第一信任域,其中第二密钥id是非受限密钥id之一;2)将与存储器的第二物理存储器地址相关联的第二物理页面标记为共享的,其中该标记包括在针对第一信任域的一组ept内设置与第二物理页面相关联的访客物理地址的条目中的共享位(s位)的值;3)使用一组访客页面表将访客虚拟地址转换成访客物理地址;4)使用ept并基于s位的值来转换访客物理地址,以从ept中的条目获得第二物理存储器地址和第二密钥id的组合;以及5)生成包括第二密钥id和第二物理存储器地址的存储器事务。

各种实现方式可以具有上述结构特征的不同组合。例如,还可以关于本文中所描述的系统来实现上述处理器和方法的所有可选特征,并且可以在一个或多个实施例中的任何地方使用示例中的具体内容。

示例30是一种系统,其包括:1)用于从处理器的硬件寄存器检索位范围以标识物理存储器地址中的定义了密钥标识符(id)的地址位的第一数量的装置;以及2)用于从硬件寄存器检索密钥id的划分密钥id以将密钥id划分成密钥id的非受限密钥id和受限密钥id的装置;3)用于由处理器执行管理程序的装置;4)用于由处理器分配非受限密钥id中的至少一个以供管理程序使用的装置;5)用于由管理程序将密钥id的第一密钥id分配给信任域基础设施的第一信任域的装置,其中第一密钥id是受限密钥id之一;以及6)用于由存储器控制器将存储器的第一物理页面分配给第一信任域的装置,其中存储器的第一物理页面中的数据要利用与第一密钥id相关联的加密密钥被加密。

在示例31中,根据示例30的系统,进一步包括:1)用于由管理程序将第二密钥id分配给第二信任域的装置,其中第二密钥id是受限密钥id之一;2)用于由存储器控制器将存储器的第二物理页面分配给第二信任域的装置,其中存储器的第二物理页面中的数据要利用与第二密钥id相关联的加密密钥被加密;3)用于由存储器控制器在密钥所有权表(kot)中存储第一密钥id到第一信任域的分配和第二密钥id到第二信任域的分配的装置;以及4)用于由存储器控制器在存储器所有权表(mot)中存储第一信任域标识符和第二信任域标识符的装置,该第一信任域标识符标识了存储器的第一物理页面到第一信任域的分配,第二信任域标识符标识了存储器的第二物理页面到第二信任域的分配。

在示例32中,根据示例31的系统,进一步包括:1)用于由存储器控制器检测涉及存储器的第一物理页面的存储器事务的装置,其中该存储器事务包括存储器的第一物理页面的物理存储器地址以及第二密钥id;2)用于由存储器控制器参考mot以确定第二密钥id不是存储器的第一物理页面的正确属性的装置;以及3)用于由存储器控制器生成错误的装置。

在示例33中,根据示例32的系统,进一步包括:1)用于由存储器控制器检测涉及存储器的第一物理页面的存储器事务的装置,其中该存储器事务源自于第二信任域,并且包括存储器的第一物理页面的存储器地址以及第一密钥id;2)用于由存储器控制器参考kot以确定第一密钥id没有被分配给第二信任域的装置;以及3)用于由存储器控制器生成错误的装置。

在示例34中,根据示例30的方法,进一步包括:1)用于将与存储器的第一物理存储器地址相关联的第一物理页面标记为私有的装置,其中该标记包括在针对第一信任域的一组ept内清空与第一物理页面相关联的访客物理地址的条目中的共享位(s位)的值;2)用于使用一组访客页面表将访客虚拟地址转换成访客物理地址的装置;3)用于使用ept将客户物理地址转换成第一物理存储器地址的装置;4)用于基于访客物理地址中的s位的值来检索第一密钥id的装置;以及5)用于生成包括第一密钥id和第一物理存储器地址的存储器事务的装置。

在示例35中,根据示例30的系统,进一步包括:1)用于将第二密钥id分配给第一信任域的装置,其中第二密钥id是非受限密钥id之一;2)用于将与存储器的第二物理存储器地址相关联的第二物理页面标记为共享的装置,其中该标记包括在针对第一信任域的一组ept内设置与第二物理页面相关联的访客物理地址的条目中的共享位(s位)的值;3)用于使用一组访客页面表将访客虚拟地址转换成访客物理地址的装置;4)用于使用ept并基于s位的值来转换访客物理地址以从ept中的条目获得第二物理存储器地址和第二密钥id的组合的装置;以及5)用于生成包括第二密钥id和第二物理存储器地址的存储器事务的装置。

虽然已经关于有限数量的实现方式描述了本公开,但是本领域技术人员将从其中领会到众多修改和变型。意图在于,所附权利要求覆盖如落入本公开的真实精神和范围内的所有这种修改和变型。

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

参考在使用特定集成电路中的信任域的虚拟化系统中(诸如,计算平台或微处理设备中)提供信任域架构与多密钥总存储器加密技术的共存来描述实现方式。实现方式还可以适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的实现方式不限于台式计算机系统或便携式计算机,诸如英特尔®超极本tm计算机。并且也可以被用在其他设备中,该其他设备诸如手持设备、平板设备、其他薄笔记本电脑、片上系统(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指代低逻辑电平。在一个实现方式中,存储单元(诸如晶体管或闪存单元)可以能够保存单个逻辑值或多个逻辑值。然而,已经使用了值在计算机系统中的其他表示。例如,十进制数字十也可以被表示为二进制值1010和十六进制字母a。因此,该值包括能够在计算机系统中保存的信息的任何表示。

而且,状态可以通过值或值的部分来表示。作为示例,诸如逻辑一的第一值可以表示默认或初始状态,而诸如逻辑零的第二值可以表示非默认状态。此外,在一个实现方式中,术语重置(reset)和设置分别指代默认和经更新的值或状态。例如,默认值潜在地包括高逻辑值,即重置,而经更新的值潜在地包括低逻辑值,即设置。要指出的是,值的任何组合可以被用来表示任何数量的状态。

以上阐述的方法、硬件、软件、固件或代码的实现方式可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现,该指令或代码可由处理元件执行。非暂时性机器可访问/可读介质包括以可由机器(诸如,计算机或电子系统)读取的形式提供(即,存储和/或传输)信息的任何机构。例如,非暂时性机器可访问介质包括随机存取存储器(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