一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于迁移受保护虚拟机的方法、装置、系统、和指令与流程

2022-07-02 08:04:47 来源:中国专利 TAG:
1.本文描述的实施例概括而言涉及虚拟化。具体地,本文描述的实施例概括而言涉及受保护虚拟机的迁移。
背景技术
::2.现代处理设备采用盘加密来保护静态数据。然而,存储器中的数据是明文的并且容易受到攻击。攻击者可使用多种技术,包括基于软件和基于硬件的总线扫描、存储器扫描、硬件探测等等,来从存储器取回数据。来自存储器的这种数据可包括敏感数据,例如隐私敏感数据、知识产权敏感数据、用于文件加密或通信的加密密钥,等等。此外,计算中的一个当前趋势是通过利用由云服务提供商(cloudserviceprovider,csp)提供的基于虚拟化的托管服务来将数据和企业工作负载移动到云中。这进一步加剧了数据的暴露。csp的客户或所谓的租户正在要求对于其工作负载的更好的安全性和隔离解决方案。具体而言,客户正在寻求解决方案来在租户的软件的可信计算基础(trustedcomputingbase,tcb)的外部使能csp提供的软件的操作。系统的tcb指的是有能力影响对系统的整体操作的信任的一组硬件、固件、和/或软件组件。附图说明3.通过参考以下描述和附图可以最好地理解本发明,这些附图用于图示实施例。在附图中:4.图1是图示出受保护虚拟机从源平台到目的地平台的迁移的框图。5.图2是图示出根据一个实现方式的利用信任域在虚拟化系统中提供隔离的示例计算系统的框图。6.图3是图示出根据一个实现方式的利用信任域在虚拟化系统中提供隔离的另一示例计算系统的框图。7.图4是根据一个实现方式的信任域体系结构的示例的框图。8.图5是图示出源信任域从源平台到目的地平台的迁移的实施例的框图。9.图6a-6c是图示出源信任域从源平台到目的地平台的迁移中所涉及的逻辑的详细示例的框图。10.图7是示出根据一些实施例的使用多个流的源受保护虚拟机从源平台到目的地平台的迁移的框图。11.图8是示出根据一些实施例的使用令牌来控制受保护虚拟机从源平台到目的地平台的迁移的框图。12.图9a是示出有序管线的实施例和寄存器重命名无序发布/执行管线的实施例的框图。13.图9b是处理器核心的实施例的框图,该处理器核心包括与执行引擎单元耦合的前端单元并且它们两者都耦合到存储器单元。14.图10a是单个处理器核心及其与片上互连网络的连接以及其二级(l2)缓存的本地子集的实施例的框图。15.图10b是图10a的处理器核心的一部分的扩展视图的实施例的框图。16.图11是处理器的实施例的框图,该处理器可具有多于一个核心,可具有集成存储器控制器,并且可具有集成图形。17.图12是计算机体系结构的第一实施例的框图。18.图13是计算机体系结构的第二实施例的框图。19.图14是计算机体系结构的第三实施例的框图。20.图15是计算机体系结构的第四实施例的框图。21.图16是根据本发明实施例的使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。具体实施方式22.本公开涉及用于将受保护虚拟机(virtualmachine,vm)从源平台迁移到目的地平台的方法、装置、系统、和非暂态计算机可读存储介质。在下面的描述中,阐述了许多具体细节(例如,具体的应用二进制接口(applicationbinaryinterface,abi)基元、具体的操作和操作序列、具体的信任域扩展(trustdomainextensions,tdx)实现细节,等等)。然而,在没有这些具体细节的情况下也可以实现实施例。在其他情况下,没有详细示出公知的电路、结构、和技术,以避免模糊对说明书的理解。23.i.受保护虚拟机的迁移24.图1是图示出源受保护虚拟机(vm)105s从源平台100s到目的地平台100d的迁移107的框图。源平台和目的地平台可以代表服务器(例如,像图2的虚拟化服务器200那样的虚拟化服务器),或者与本文公开的那些类似的其他计算机系统。一般而言,这些平台可以代表已知其上运行虚拟机的各种不同平台中的任何一种。源平台具有平台硬件101s,并且目的地平台具有平台硬件101d。这种硬件的示例包括核心、缓存、寄存器、转化后备缓冲器(translationlookasidebuffer,tlb)、存储器管理单元(memorymanagementunit,mmu)、加密引擎(cryptographicengine,crypto)、其他处理器硬件、输入/输出设备、主存储器、辅存储器、其他系统级硬件、以及在处理器和计算机系统中发现的其他硬件(例如,如本文公开的其他处理器和计算机系统中所示)。25.源平台具有源虚拟机管理器(virtualmachinemanager,vmm)102s,并且目的地平台具有目的地vmm102d。vmm有时被称为管理程序(hypervisor)。源vmm可以按本领域已知的方式创建和管理一个或多个vm,包括源受保护vm。类似地,一旦一个或多个vm——包括目的地受保护vm——已被迁移,目的地vmm就可以创建和管理、支持或以其他方式与该一个或多个vm交互。26.源平台具有源安全性组件103s,并且目的地平台具有目的地安全性组件103d。在各种实施例中,源和目的地安全性组件可以是安全性服务模块(例如,tdx模块)、安全性处理器(例如,平台安全性处理器)、处理器微代码、安全性固件组件、或者其他安全性组件。可以用硬件、固件、软件、或者其任何组合来实现安全性组件。源和目的地安全性组件可操作来分别向源和目的地受保护vm提供保护或安全性。在一些实施例中,这可包括保护受保护vm免受不在受保护vm的可信计算基础(tcb)内的软件——包括源和目的地vmm——的影响。这种方法可以依靠加密、硬件隔离、或其他方法。就本文使用的而言,受保护vm可以代表加密的、隔离的、或以其他方式受保护的vm,其状态是vmm不可访问的。27.源和目的地安全性组件103s、103d可分别使用本领域已知的各种不同类型的方法来保护源和目的地受保护vm105s、105d。这种方法的一个示例是使用英特尔多密钥全存储器加密(multi-keytotalmemoryencryption,mktme)的虚拟机,它使用加密来保护vm的数据和代码。mktme支持全存储器加密(totalmemoryencryption,tme),因为它允许软件使用一个或多个单独的密钥对易失性或持久性存储器进行加密。另一个示例是信任域扩展(tdx)中的信任域(td),它同时使用加密、完好性保护、和硬件隔离来保护vm的数据和代码免受来自tcb以外的元素的软件和硬件攻击。当mktme被与tdx一起使用时,它经由单独的密钥为不同td的存储器内容提供保密性,这样td密钥就不能被不信任的vmm所操作。mktme可被与tdx一起使用,也可不与tdx一起使用。td是加密并且硬件隔离的vm的示例。另一个示例是amd安全加密虚拟化(secureencryptedvirtualization,sev)中的加密vm,它使用加密来保护vm的数据和代码。还有一个示例是amdsev安全嵌套分页(securenestedpaging,sev-snp)中的加密vm,它使用加密和硬件隔离来保护vm的数据和代码。还有一个示例是软件防护扩展(sgx)中的安全飞地,它使用加密、硬件隔离、重放保护、和其他保护措施来保护安全飞地的代码和数据。mktme、tdx、sev、sev-snp、和sgx中的每一者都能够为加密的工作负载(vm或应用程序)提供页,这些页被用密钥来进行加密,该密钥在硬件中对vmm、管理程序、或主机操作系统保密。这些只是几个示例。受益于本公开的本领域技术人员将会明白,本文公开的实施例也可被应用于本领域已知的或未来开发的其他技术。28.源安全性组件具有源迁移组件104s,并且目的地安全性组件具有目的地迁移组件104d。源和目的地迁移组件可操作来协助迁移。可以用硬件、固件、软件、或者其任何组合来实现源和目的地迁移组件。迁移可以将源受保护vm从源平台移动到成为目的地平台上的目的地受保护vm。可以出于各种不同的原因而执行这种迁移,例如,帮助进行容量规划/负载平衡,允许对平台进行服务、维护、或升级,允许在平台上安装微代码、固件、或软件补丁,帮助满足客户服务水平协议(service-levelagreement,sla)目标,等等。在一些实施例中,源安全性组件103s和/或源迁移组件104s也可以可选地操作来将源受保护vm105s“停放”为停放的源vm106。停放源受保护vm广义上是指停止其执行并且将其保留在源平台上(例如,暂时停用它或者停止它并且让其在源平台上休息)。作为另一种选项,在一些实施例中,源受保护vm可以可选地被迁移多于一次,以允许经由实时迁移进行克隆(例如,在一些情况下,如果源受保护vm的迁移策略允许的话则进行克隆,否则就不进行克隆)。29.迁移107可以是所谓的冷迁移或所谓的实时迁移。在冷迁移中,源受保护vm105s可以在迁移的大部分(或者全部)持续时间中被暂停或停止,并且目的地受保护vm可以在迁移完成之后被恢复。在实时迁移中,源受保护vm可以在迁移的大部分时间期间保持执行,然后在迁移的最后一部分被完成的同时被暂停或停止(这可能比面向会话的协议(例如tcp/ip)的网络超时更短)。通常,目的地受保护vm可以在源受保护vm被停止之后、但在迁移完成之前的某个时间点被恢复。实时迁移有时会因为以下方面而受到青睐:通过在很多(或者大部分)迁移在进行的同时允许受保护vm之一继续操作来减少停机时间。30.ii.作为受保护虚拟机的示例的信任域31.如上所述,在一些实施例中,受保护vm可以是信任域扩展(tdx)中的信任域(td)。tdx是一种英特尔技术,它以一种新的被称为信任域(td)的虚拟机访客扩展了虚拟机扩展(virtualmachinesextensions,vmx)和多密钥全存储器加密(mktme)。td在一种cpu模式中运行,该模式相对于包括托管vmm在内的任何其他软件保护其存储器内容及其cpu状态的保密性(除非被td自身明确共享)。tdx是构建在安全仲裁模式(securearbitrationmode,seam)之上的,seam是一种cpu模式和vmxisa的扩展。在seam模式中运行的英特尔tdx模块充当主机vmm和访客td之间的中介。预期主机vmm将是知晓英特尔tdx的。主机vmm可以启动和管理访客td和传统的访客vm。主机vmm可以从传统vm的角度维持传统功能。它可能主要在其管理的td方面受到限制。32.tdx可能有助于为在不信任的csp基础设施中执行的客户(租户)软件提供保密性(和完好性)。td体系结构可以是片上系统(system-on-chip,soc)能力,它在td工作负载和csp软件(例如csp的vmm)之间提供了隔离。td体系结构的组件可包括:1)经由mktme引擎进行的存储器加密;2)资源管理能力,例如vmm;以及3)经由tdx模块管理的物理地址元数据表(physicaladdressmeta-datatable,pamt)和经由tdx模块施行的保密td控制结构提供的处理器中的执行状态和存储器隔离能力。td体系结构提供了处理器部署td的能力,这些td利用mktme引擎、pamt、安全的(完好性受保护的)ept(扩展页表)和被访问控制的保密td控制结构来实现td工作负载的安全操作。33.在一个实现方式中,租户的软件是在被称为td的体系结构概念中被执行的。td(也被称为租户td)指的是租户工作负载(例如,它可包括单独的操作系统(operatingsystem,os)以及运行在os之上的其他第3环应用,或者运行在vmm之上的vm以及其他第3环应用)。每个td可独立于系统中的其他td来进行操作,并且可以使用平台上的vmm所指派的(一个或多个)逻辑处理器、存储器、和i/o。每个td可在存储器中被加密隔离,使用mktme引擎的至少一个专属加密密钥来对与td相关联的存储器(保存代码和/或数据)进行加密。34.在本公开的实现方式中,td体系结构中的vmm对于td可充当主机并且对于核心和其他平台硬件可具有完全控制权。vmm可向td中的软件指派(一个或多个)逻辑处理器。然而,可以限制vmm在指派的(一个或多个)逻辑处理器上访问td的执行状态。类似地,vmm向td指派物理存储器和i/o资源,但无权访问td的存储器状态(这是由于cpu对每个td强制使用单独的加密密钥)以及存储器上的其他完好性/重放控制。在td中执行的软件以降低的权限进行操作,从而使得vmm可保持对平台资源的控制。然而,在所限定的情况下,vmm不能影响存储器或cpu结构中的td状态的保密性或完好性。35.用于在虚拟化系统中提供隔离的传统系统并没有将csp软件完全从租户的tcb中提取出来。此外,传统系统可能会使用单独的芯片组子系统来大幅增加tcb,而本公开的实现方式可避免这一点。在一些情况下,td体系结构可通过从tcb中去除csp软件来明确地减少tcb,从而在客户(租户)工作负载和csp软件之间提供隔离。实现方式通过为csp客户工作负载(租户td)提供安全隔离而提供了相对于传统系统的技术改进,并且允许从客户的tcb中去除csp软件,同时满足csp的安全性和功能要求。此外,td体系结构可扩展到多个td,这可以支持多个租户工作负载。此外,本文描述的td体系结构是通用的,并且可被应用于任何动态随机访问存储器(dynamicrandom-accessmemory,dram),或者基于存储类存储器(storageclassmemory,scm)的存储器,例如非易失性双列直插式存储器模块(non-volatiledualin-linememorymodule,nv-dimm)。因此,本公开的实现方式允许软件利用性能益处,例如scm的nvdimm直接访问存储(directaccessstorage,das)模式,而不影响平台安全性要求。36.图2是根据本公开的实现方式的使用td在虚拟化系统中提供隔离的计算系统208的示意性框图。虚拟化系统包括支持若干个客户端设备218a-218c的虚拟化服务器200。虚拟化服务器包括至少一个处理器209(也被称为处理设备),其执行vmm202。vmm可包括以下vmm(也可称为管理程序),其可以实例化一个或多个td205a-205c,这些td可由客户端设备218a-218c经由网络接口217来访问。客户端设备可包括但不限于桌面型计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(personaldigitalassistant,pda)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网电器、或者任何其他类型的计算设备。37.td可以指租户(例如,客户)工作负载。租户工作负载例如可包括单独的os以及运行在os之上的其他第3环应用,或者可包括运行在vmm之上的vm以及其他第3环应用。在本公开的实现方式中,使用单独的专属密钥来对与td相关联的存储器(保存代码和数据)进行加密,并且针对由主机软件或由主机控制的设备的任何篡改对该密钥进行完好性保护,从而可在存储器中对每个td进行加密隔离。38.处理器209可包括一个或多个核心120、范围寄存器211、存储器管理单元(memorymanagementunit,mmu)212、以及(一个或多个)输出端口219。图2是执行vmm202的处理器核心210与pamt216和安全ept343以及一个或多个信任域控制结构(trustdomaincontrolstructure,tdcs)214和信任域虚拟处理器控制结构(trustdomainvirtual-processorcontrolstructure,tdvps)215通信的详细视图的示意框图,如图2中所示。tdvps和tdvpx在本文中可被互换使用。处理器209可被用于系统中,该系统包括但不限于桌面型计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、pda、服务器、工作站、蜂窝电话、移动计算设备、智能电话、互联网电器、或者任何其他类型的计算设备。在另一个实现方式中,处理器209可被用于soc系统中。39.计算系统208可以是服务器或其他计算机系统,其具有可从英特尔公司获得的一个或多个处理器,虽然本发明的范围不限于此。在一个实现方式中,样本系统208执行可从华盛顿州雷德蒙市微软公司获得的windowstm操作系统的一个版本,虽然也可以使用其他操作系统(例如,unix和linux)、嵌入式软件、和/或图形用户接口。因此,本公开的实现方式不限于硬件电路和软件的任何特定组合。40.一个或多个处理核心210执行系统的指令。处理核心210包括但不限于用以取得指令的预取电路,用以对指令解码的解码电路,用以执行指令的执行电路,等等。在一实现方式中,计算系统208包括一组件,例如处理器209,以采用包括电路的执行单元来执行用于处理数据的算法。41.虚拟化服务器200包括主存储器220和辅存储装置221,以存储程序二进制文件和os驱动器事件。辅存储装置221中的数据可被存储在被称为页的块中,并且每个页可以对应于一组物理存储器地址。虚拟化服务器200可采用虚拟存储器管理,其中由(一个或多个)核心210运行的应用,例如td205a–205c,使用被映射到访客物理存储器地址的虚拟存储器地址,并且访客物理存储器地址被mmu212映射到主机/系统物理地址。42.核心210可使用mmu212来将页从辅存储装置221加载到主存储器220中(其包括易失性存储器和/或非易失性存储器),以便由在处理器209上(例如,在核心上)运行的软件更快地访问。当td205a-205c之一尝试访问与被加载到主存储器中的页的物理存储器地址相对应的虚拟存储器地址时,mmu返回所请求的数据。核心210可以执行vmm202的vmm部分,以将访客物理地址转化为主存储器的主机物理地址,并且为允许核心读取、游走、和解释这些映射的协议提供参数。43.在一个实现方式中,处理器209实现了td体系结构和td体系结构的isa扩展(seam)。seam体系结构和在seam模式中运行的tdx模块提供td工作负载205a-205c之间的隔离以及与在处理器209上执行的csp软件(例如,vmm202和/或cspvmm(例如,根vmm202))的隔离。td体系结构的组件可包括:1)经由mktme引擎213进行的存储器加密、完好性、和重放保护,2)本文称为vmm202的资源管理能力,以及3)经由pamt216和安全ept343和tdx模块204以及经由受访问控制的保密td控制结构(即,tdcs214和tdvps215)在处理器209中提供的执行状态和存储器隔离能力。td体系结构提供了处理器209部署td205a-205c的能力,这些td利用mktme引擎213、pamt216、和安全ept343以及受访问控制的td控制结构(即,tdcs214和tdvps215)来实现td工作负载205a-205c的安全操作。44.在本公开的实现方式中,vmm202充当主机并且对于核心210和其他平台硬件具有控制权。vmm向td205a-205c中的软件指派(一个或多个)逻辑处理器。然而,vmm不能访问td在指派的(一个或多个)逻辑处理器上的执行状态。类似地,vmm向td指派物理存储器和i/o资源,但无权访问td的存储器状态(这是由于单独的加密密钥)以及存储器上的其他完好性/重放控制。45.关于单独的加密密钥,处理器可以利用mktme引擎213来加密(和解密)在执行期间使用的存储器。通过全存储器加密(tme),在核心210上执行的软件进行的任何存储器访问都可以被用加密密钥在存储器中进行加密。mktme是对tme的一个增强,其允许使用多个加密密钥。处理器209可以利用mktme引擎来使得不同的页被使用不同的mktme密钥来加密。mktme引擎213可以在本文描述的td体系结构中被利用来支持每个td205a-205c的一个或多个加密密钥,以帮助实现不同的csp客户工作负载之间的加密隔离。例如,当mktme引擎被用于td体系结构中时,cpu默认施行td(所有页)将被使用td特定的密钥进行加密。此外,td可以进一步选择特定的td页为明文或者被使用对csp软件不透明的不同临时密钥来进行加密。46.每个td205a-205c是一个软件环境,它支持由vmm(例如,使用虚拟机扩展(vmx))、os、和/或应用软件(由os托管)构成的软件栈。每个td可以很大程度上独立于其他td进行操作,并且使用平台上的vmm202所指派的(一个或多个)逻辑处理器、存储器、和i/o。在td中执行的软件以降低的权限进行操作,从而使得vmm可保持对平台资源的控制;然而,在所限定的情况下,vmm不能影响td的保密性或完好性。下面参考图3更详细地描述td体系结构和tdx的进一步细节。47.系统208包括主存储器220。主存储器包括dram设备、静态随机访问存储器(taticrandomaccessmemory,sram)设备、闪存设备、或者其他存储器设备。主存储器存储由数据信号表示的指令和/或数据,这些指令和数据将被处理器209执行。处理器可经由处理设备总线与主存储器耦合。系统逻辑芯片,例如存储器控制器中枢(memorycontrollerhub,mch),可以耦合到处理设备总线和主存储器。mch可以向主存储器提供高带宽存储器路径,用于指令和数据存储以及用于图形命令、数据、和纹理的存储。mch例如可被用于在处理器、主存储器、和系统中的其他组件之间引导数据信号,并且在处理设备总线、存储器、和系统i/o之间桥接数据信号。mch可通过存储器接口与存储器耦合。在一些实现方式中,系统逻辑芯片可提供图形端口,用于通过加速图形端口(acceleratedgraphicsport,agp)互连来耦合到图形控制器。48.计算系统208还可包括i/o控制器中枢(i/ocontrollerhub,ich)。ich可经由本地i/o总线提供与一些i/o设备的直接连接。本地i/o总线是一种高速i/o总线,用于将外围设备连接到存储器220、芯片组、和处理器209。一些示例是音频控制器、固件中枢(闪速bios)、无线收发器、数据存储装置、包含用户输入和键盘接口的传统i/o控制器、串行扩展端口(例如通用串行总线(universalserialbus,usb))、以及网络控制器。数据存储设备可包括硬盘驱动器、软盘驱动器、cd-rom设备、闪存设备、或者其他大容量存储设备。49.参考图3,根据本公开的一个实现方式,该图描绘了适合于图2的处理器209的处理器309的框图。在一个实现方式中,处理器可以经由单个核心210或者跨越几个核心210执行系统栈326。如上所述,处理器可提供td体系结构和tdx,以便为在不信任的云服务提供商(csp)基础设施中的客户/租户(即,td205a)中运行的客户软件提供保密性(和完好性)。td体系结构提供:经由pamt316和安全ept343进行的存储器隔离;经由tdcs314和/或tdvps315进行的包含cpu密钥管理的cpu状态隔离;以及用于td205a软件的cpu测量基础设施。50.在一个实现方式中,td体系结构提供isa扩展(被称为tdx),其支持os和os管理的应用(虚拟化的和非虚拟化的)的保密操作。启用了tdx的平台,例如包括处理器209的平台,可以充当多个加密情境,这些加密情境被称为td。为了便于说明,描绘了单个td305。每个td可以运行vmm、vm、os、和/或应用。例如,td305被描绘为托管着一个vmm和两个vm。tdx模块204支持td305。51.在一个实现方式中,vmm202可包括作为vmm功能的一部分(例如,根vmm)。vmm可以指用以创建、运行、和管理虚拟机(vm)的软件、固件、或硬件。应当注意,vmm可以创建、运行、和管理一个或多个vm。vmm可以创建和运行vm,并且为vm分配一个或多个虚拟处理器(例如,vcpu)。vm在本文中也可被称为访客。vmm可以允许vm访问底层计算系统(例如图2的计算系统208)的硬件。vm可以执行访客操作系统(os)。vmm可以管理访客os的执行。访客os的功能可以是控制vm的虚拟处理器对计算系统的底层硬件和软件资源的访问。应当注意,当有许多vm在处理设备上操作时,vmm可以管理在许多访客上执行的每个访客os。52.tdx还为被称为vmm202的td体系结构的td管理层提供编程接口。vmm可被实现为csp/根vmm的一部分。vmm管理td205a/b/c的操作。虽然vmm202可以向td指派和管理资源,例如cpu、存储器、和输入/输出(i/o),但vmm被设计为在td的tcb之外操作。系统的tcb指的是有能力影响对系统的整体操作的信任的一组硬件、固件、和/或软件组件。53.在一个实现方式中,td体系结构从而是一种保护在td205a中运行的软件的能力。如上所述,td体系结构的组件可包括:1)经由具有对tme的多密钥扩展的tme引擎(例如,图2的mktme引擎213)进行的存储器加密;2)软件资源管理层(vmm202);以及3)td体系结构中的执行状态和存储器隔离能力。54.pamt216和安全ept343是由tdx模块管理的结构,例如表格,用以施行物理存储器页向执行中的td(例如td205a)的指派。处理器209也使用pamt和安全ept来施行由作为租户td或vmm操作的软件引用的物理地址不能访问没有明确指派给它的存储器。pamt和安全ept施行以下属性。首先,td以外的软件不应当能够以明文访问(读取/写入/执行)属于不同td的任何存储器(这包括vmm)。其次,经由pamt和安全ept指派给特定td(例如td)的存储器页,应当是从系统中的任何处理器可访问的(该处理器正在执行存储器被指派给的td)。55.pamt和安全ept结构被用来保存每个4kb存储器页的元数据属性。可以为额外的页大小(2mb,1gb)定义额外的结构。每个4kb存储器页的元数据是由物理页地址直接索引的。在其他实现方式中,其他的页大小可以由层次结构(比如页表)来支持。在pamt和安全ept中引用的4kb页可以属于td的一个运行实例。在pamt和安全ept中引用的4kb页可以是有效的存储器,或者可以被标记为无效(因此例如可以是io)。在一个实现方式中,每个td实例包括一个保存该td的tdcs的页。56.在一个实现方式中,pamt和安全ept在存储器的4kb边界上对齐,并且占据了一个在平台初始化之后被保护而不能被软件访问的物理上连续的存储器区域。在一实现方式中,pamt是一种微体系结构的结构,并且不能被软件直接访问。pamt和安全ept可以为主机物理存储器的每个4kb页存储各种安全性属性。57.pamt和安全ept可以在tdx在处理器中被启用时被启用(例如,经由基于cpuid的枚举)。一旦pamt和安全ept被启用,pamt和安全ept就可以被处理器用来对由软件(包括vmm)发起的所有物理存储器访问施行存储器访问控制。在一个实现方式中,访问控制是在由软件进行的存储器访问的页游走期间被施行的。处理器对未被指派给租户td或vmm的存储器执行的物理存储器访问以中止页语义而失败。58.图4是描绘实现td体系结构400的示例计算系统的框图。第一环境210是这样的环境:其中租户信任csp来施行保密性,并且不实现本公开的实现方式的td体系结构。这种环境使用cspvmm管理的tcb202。这种环境可包括cspvmm455管理cspvm214和/或一个或多个传统租户vm216a、216b。在这种情况下,租户vm是由在vm的tcb中的cspvmm管理的。在本公开的实现方式中,租户vm在这种模型中仍然可以利用经由tme或mktme的存储器加密。59.另一种类型的环境是td,其中租户不信任csp来施行保密性,从而依赖于tdx模块404和具有本公开的实现方式的td体系结构的cpu。这种类型的td在两个变体中被示出为td2405a和td3405b。td2405a被示出为具有虚拟化模式(例如vmx),该虚拟化模式被在td2中运行的租户vmm(非根)454利用来管理租户vm451、452。td3不包括使用虚拟化模式的软件,而是直接在td3405b中运行受启发的os235。td2和td3是具有如本公开的实现方式中描述的硬件施行的tcb204的租户td。在一个实现方式中,td2或td3可以与关于图2描述的td205a相同。60.vmm402管理环境210的生命周期以及td2405a和td3405b,包括资源的分配。然而,vmm402不在td2和td3的tcb中。td体系结构400不对系统上活跃的td的数目或混合施加任何体系结构限制。然而,特定实现方式中的软件和某些硬件限制可由于其他约束而限制同时在系统上运行的td的数目。61.iii.信任域的迁移62.现在将结合受tdx保护的td的迁移来描述具体的示例实施例。td是受保护的、硬件隔离的vm的示例实施例。然而,受益于本公开的本领域技术人员将会明白,本文公开的实施例也可被应用于其他类型的受保护vm的迁移,例如,那些由mktme、sev、sev-snp、sgx、或其他技术保护的vm。63.图5是图示出源信任域(td)505s从源平台500s到目的地平台500d的迁移507的实施例的框图。该平台可以是先前对于图1的平台描述的类型(例如,服务器、计算机系统,等等)。源平台具有平台硬件501s,并且目的地平台具有平台硬件501d。这种硬件可以是先前对于图1的硬件描述的类型(例如,核心、缓存,等等)。64.源平台具有源tdx知晓主机vmm502s,并且目的地平台具有目的地tdx知晓主机vmm502d。vmm有时被称为管理程序。源和目的地vmm是知晓tdx的,因为它们分别能够与源tdx模块503s(它是源安全性组件103s的示例实施例)和目的地tdx模块503d(它是目的地安全性组件103d的示例实施例)交互。它们可以知晓tdx并且与tdx模块交互的一种方式是通过可操作来使用各自的tdx模块主机侧api556s、556d与tdx模块503s、503d交互。这些tdx模块主机侧api代表vmm可以用来与tdx模块交互的基元或命令基元的示例实施例。下面将进一步提供根据具体示例实施例的api的具体示例。在其他实施例中,其他基元或命令基元(例如,指令集的指令、应用编程接口(applicationprogramminginterface,api)命令、对存储器映射输入和/或输出(memory-mappedinputand/oroutput,mmio)寄存器的写入,等等)可被vmm用来与其他安全性组件进行交互。65.源tdx知晓主机vmm502s和源tdx模块503s可以管理、支持、或以其他方式与源td505s交互。同样地,目的地tdx知晓主机vmm502d和目的地tdx模块503d可以管理、支持、或以其他方式与目的地td505d交互。源td可以代表以cpu模式(例如,seam)操作的软件,该模式将tdx知晓主机vmm502s和源平台的不信任设备从其操作tcb中排除以获得保密性。源td可具有tdx启发的操作系统(os)528s和可选的一个或多个应用560s和驱动器559s。同样地,目的地td可具有tdx启发的os558d和可选的一个或多个应用560d和驱动器559d。该os是受启发的或半虚拟化的,因为它知晓它作为td运行。在其他实施例中,vmm可以可选地被嵌套在td内。源td的操作tcb可包括源td在其上运行的一个或多个cpu、源tdx模块503s、tdx启发os、以及应用。源td的资源可以由源tdx知晓主机vmm管理,但其状态保护可以由源tdx模块503s管理,并且可能无法被源tdx知晓主机vmm访问。66.可选地,源和目的地vmm还可以分别管理、支持、或以其他方式与一个或多个源vm549s和一个或多个目的地vm549d交互。这些vm不是像td是受保护vm那样的受保护vm,例如因为不具有相同级别的保密性(例如,没有被加密)、没有被硬件隔离到相同的程度(例如,与vmm隔离),等等。67.源平台具有源tdx模块(例如,代表源安全性组件的示例实施例),并且目的地平台具有目的地tdx模块(例如,代表目的地安全性组件的示例实施例)。可以用硬件、固件、软件、或者其任何组合实现tdx模块。源和目的地tdx模块可操作来分别向源和目的地td提供保护或安全性。在一些实施例中,这可包括保护td免受不在td的可信计算基础(tcb)内的软件——包括源和目的地tdx知晓vmm——的影响。可以可选地使用本文其他地方描述的各种类型的保护,或者其子集或超集。在一些实施例中,这可包括将不同的主机密钥标识符(hostkeyidentifier,hkid)指派给不同的组件。当mktme被激活时,hkid可以代表由平台上的一个或多个存储器控制器使用的加密密钥的密钥标识符。当tdx活跃时,hkid空间可以被划分为cpu施行的空间和vmm施行的空间。在一些实施例中,源迁移服务td可以被指派以hkid1,源td可以被指派以hkid2,目的地迁移服务td可以被指派以hkid3,并且目的地td可以被指派以hkid4,其中hkid1、hkid2、hkid3、hkid4是第一至第四hkid,它们都是不同的。用于其他受保护vms的技术,例如sev和sev-snp,也向不同的受保护vm指派不同的密钥标识符和不同的密钥。68.源和目的地tdx知晓主机vmm经由源和目的地tdx模块可以执行操作来分别导出或导入源td的内容。迁移源td505s(以及一般其他类型的受保护vm)的一个挑战是维持安全性。例如,源td可以在中央处理单元(cpu)模式中运行,该模式保护其存储器内容和其cpu状态的保密性,不受任何其他平台软件(包括源tdx知晓主机vmm)的影响。类似地,在允许源tdx知晓主机vmm将源td迁移到目的地平台的同时,也应当保护源td的存储器内容及其cpu状态的保密性。69.源tdx模块具有源迁移组件504s,并且目的地tdx模块具有目的地迁移组件504d。源和目的地tdx模块和/或它们各自的源和目的地迁移组件可以操作来执行下面进一步描述的各种操作,以协助迁移。可以用硬件、固件、软件、或其任何组合来实现迁移组件。迁移可以将源td505s从源平台移动到成为目的地平台上的目的地td505d。源和目的地tdx知晓主机vmm和现有的(例如,不受信任的)软件栈可很大程度上负责迁移源td的加密内容(一旦其已被加密和以其他方式受保护)。该迁移可以是冷迁移或者如前所述的实时迁移。在一些实施例中,源tdx模块503s和/或源迁移组件504s也可以可选地操作来“停放”源td505s,如前所述。70.在一些实施例中,还可包括可选的源迁移服务td561s和可选的目的地迁移服务td561d以协助迁移507。迁移服务td是迁移代理或引擎的示例实施例。迁移服务td在此也可被称为迁移td(migtd)。在一些实施例中,迁移服务td可以是具有迁移逻辑以执行与迁移相关联的功能的每个tdx的服务td的示例实施例。如图所示,在一些实施例中,源迁移服务td可具有迁移服务和策略评估逻辑562s和td虚拟固件(tdvirtualfirmware,tdvf)垫片逻辑563s。同样地,目的地迁移服务td可具有迁移服务和策略评估逻辑562d和tdvf垫片逻辑563d。逻辑562s、562d可操作来评估和施行源td的td迁移策略。td迁移策略可以代表td租户所指示的规则集合,这些规则控制td被允许迁移到哪些平台安全性级别,在一些情况下控制其是否可被复制,以及如果可以,那被复制多少次,或者其他迁移策略。例如,迁移服务和策略评估逻辑可操作来合作以基于对源td的td迁移策略的遵守来评估潜在的迁移源平台和目的地平台。如果td迁移策略允许迁移,那么迁移服务td可以合作以安全地将迁移能力密钥从源平台传送到目的地平台,该密钥将被用于在迁移期间加密或保护源td的内容。在一些实施例中,它们可以代表体系结构上定义的td或体系结构上的td。在一些实施例中,它们可以在td的tcb内。在一些实施例中,它们可能比各自的vmm更受td的信任。71.tdx模块503s、503d和/或它们的迁移组件504s、503d可以实现在seamvmx扩展之上实现的体系结构上定义的tdx迁移特征,以在源td的迁移期间保护源td的内容,例如在不受信任的托管云环境中进行保护。通常,在源td被迁移到的目的地平台上,源td可以被指派一不同的密钥id,并且在tdx的情况下,可以被指派一不同的临时密钥。可扩展的td迁移策略可与源td相关联,用于维护源td的安全性态势。td迁移策略可以由源迁移服务td或迁移td(migtd)561s以可缩放和可扩展的方式施行,其用于为迁移td提供服务。在一些实施例中,源td的页、状态、或其他内容可以在被seam传送的同时通过使用用于源td的唯一迁移会话的迁移能力密钥或迁移密钥而得到保护。72.迁移能力密钥可用于对被迁移的信息进行加密,以帮助为信息提供保密性和完好性。源平台和目的地平台上的迁移服务td可以基于源td的迁移策略信息来商定迁移密钥。迁移密钥可以由源迁移服务td在源td的策略协商成功之后生成。作为示例,每一方的迁移服务td可以使用通用绑定写入协议在源/目的地td中设置迁移密钥。例如,迁移密钥可以由迁移服务td经由主机vmm使用服务td元数据写入协议来编程到源和目的地td的tdcs中。为了提供安全性,迁移密钥可以可选地仅由迁移服务td和tdx模块可访问。在一些实现方式中,密钥强度可以是256比特或某个其他数目的比特(例如,临时的aes-256-gcm密钥)。在一些实施例中,可以使用下面进一步论述的迁移流aes-gcm协议,该协议可以规定状态在源平台和目的地平台之间被有序迁移。该协议可以帮助确保或施行每个迁移流内的顺序。当持有迁移密钥的td被拆除时,或者当新的密钥被编程时,迁移密钥可以被销毁。73.tdx模块503s、503d可以分别通过各自的tdx访客-主机接口557s、557d与td505s、505d和迁移服务td561s、561d交互。在一些实施例中,td迁移和源迁移服务td可以不依赖于与在被迁移的源td的内部操作的tdx启发os558s或任何其他td访客软件的任何交互。74.如上所述,tdx模块(例如,源和目的地tdx模块503s、503d)可以实现tdx模块主机侧api556s、556d和tdx访客-主机接口557s、557d。在一些实施例中,可以通过指令集的指令来访问tdx模块主机侧api和tdx访客-主机接口。指令集的指令代表可用于访问由tdx模块提供的操作的命令基元的一个适当的示例实施例。替换实施例可以使用其他类型的命令基元(例如,命令、写入到mmio寄存器的代码、在接口上提供的消息,等等)。75.在一些实施例中,tdx模块可操作来运行或执行两种类型的指令,即seamcall指令和tdcall指令。seamcall指令可被主机vmm用于调用tdx模块主机侧api的多个操作之一。tdcall指令可被tdx非根模式中的访客td软件(例如,td启发os)用于调用tdx访客-主机接口的多个操作之一。seamcall和tdcall指令都可以支持多种操作。这些指令的每个特定实例可以指示出要执行的这些操作中的特定一个。在tdxseamcall和tdcall指令的情况下,特定的操作可由通用x86寄存器rax中的叶操作值来指示,该值是由指令来隐含指示的。叶值宽泛代表了选择操作中的特定一个的值。每个操作可以按任何期望的方式被指派以独特的值,并且叶操作可以被给予该值以选择操作。替换实施例可以用不同的方式指示特定的操作,例如,由指令集的指令指定或指示的另一寄存器中的值,指令集的指令的立即数的值,写入到mmio寄存器的操作码或其他值,等等。76.因此,tdx知晓主机vmm可以调用或以其他方式使用seamcall指令,以在调用seamcall的硬件线程上开始tdx模块的执行,或者td可以调用或以其他方式使用tdcall指令,使得tdx模块在td虚拟逻辑处理器在其中执行的物理逻辑处理器和/或硬件线程上执行。tdx模块可以接收指令。tdx模块可操作来确定由叶操作或其他值指示的要执行的特定操作。指令的一些变体可具有一个或多个其他输入参数或操作对象来用于操作的执行,但其他变体可能没有。这些输入参数或操作对象可以在存储器、寄存器、或由指令指定(例如,明确指定)或以其他方式指示(例如,隐含指示)的其他存储位置中。tdx模块可包括用以理解和执行指令的逻辑。在一些实施例中,这可包括用以解码指令的解码单元或其他逻辑以及用以运行或执行指令和/或其指示的操作的执行单元或其他逻辑。在一个示例实施例中,seamcall指令和叶子可以像cpu的指令集的其他指令一样被cpu解码和执行,并且其执行可将控制权转移到tdx模块。在这样的示例实施例中,tdx模块可包括被加载到受范围寄存器保护的存储器区域中并从该区域操作的软件,这样它的真实性可以经由cpu签名的测量或引述来进行验证,并且可以在运行时受到保护以防止被其他软件和硬件篡改(例如,因为该存储器区域可以使用与td密钥不同的私有临时密钥来进行加密和完好性保护)。tdx模块可包括调遣器子模块,它可以调用由叶函数指示的适当操作(例如,api)。然后,指示的操作也可以由cpu(例如,一个或多个核心)执行。这只是可以进行的一种可能方式。在其他实施例中,可以用硬件、软件、固件、或者其任何组合来执行seamcall或其他基元(例如,至少一些硬件和/或固件,可能与软件相结合)。77.tdx模块可以执行指令和/或操作。在一些实施例中,tdx模块可以执行一个或多个检查。在一些情况下,检查可能会失败,或者在指令和/或操作完成之前可能发生差错。在其他情况下,检查可能成功,并且指令和/或操作可以没有差错地完成。在一些实施例中,可以存储可选的返回或状态代码(例如,值)以指示出指令和/或操作的执行结果(例如,指令和/或操作是否成功完成或者是否有差错,例如tdx模块经历了致命的状况并且已被关停)。在tdxseamcall和tdcall指令的情况下,可以在隐含的通用x86寄存器rax中提供返回或状态代码。替换实施例可以用其他方式指示出返回或状态代码(例如,在一个或多个标志、寄存器、存储器位置、或其他体系结构上可见的存储位置中)。一些指令和/或操作可具有额外的输出参数或操作对象,这些参数或操作对象可以被存储在体系结构上可见的存储位置中,而其他的则不可以。78.表格1列出了根据一个示例实施例的tdx模块主机侧api的一组示例操作。该组操作可由tdx模块(例如,源tdx模块503s和目的地tdx模块503d)支持。要明白,这只是一组示例操作,而本发明的范围不限于这特定的一组示例操作。设想到了许多其他的实施例,其中操作中的两个或更多个可以被组合到一起成为单个操作,和/或操作之一可以被划分成两个或更多个操作和/或各种操作可被不同地执行。在一些实施例中,这些操作中的每一个可以作为seamcall指令下的不同叶操作可用,其中seamcall指令作为操作码,并且叶操作作为由seamcall指令指示的值。该表格是按行和列排列的。每一行代表seamcall指令下的不同操作。助记符列列出了每个操作的唯一助记符。助记符是用文字来向人类读者唯一地识别不同的指令变体,虽然应当理解,对于这些不同的操作的每一者也可能有数值(例如,二进制)。没有提供特定的数值,因为它们可以被任意指派或至少以各种不同的方式指派。操作列列出了要执行的特定操作。对于每个助记符可以从表格读取特定的操作。要明白,这些操作在不同的实施例中可按不同的方式被执行。根据实施例的方法可包括执行这些操作中的任何一个或多个,作为执行指令(例如,seamcall指令)或其他命令基元的一部分。79.表格1:tdx模块主机侧api操作80.81.[0082][0083]支持这些操作中的每一者的tdx模块可具有相应的一组逻辑来执行这些操作中的每一者。这种逻辑可包括硬件(例如,电路、晶体管,等等)、固件(例如,存储在非易失性存储器中的微代码或其他低级别或电路级指令)、软件、或者这些的任何组合(例如,至少一些硬件和/或固件可能与一些软件相结合)。为方便起见,在下面的论述中,用以每个操作的tdx模块的这种逻辑也被用该相应操作的助记符来提及。虽然为了方便和简化描述而被描述为单独的逻辑,但也要明白,一些操作的逻辑可以被其他操作共享和重复使用。也就是说,逻辑不需要是单独的,而是可以可选地重叠,以减少需要被包括在tdx模块中的逻辑的总量。[0084]图6a-6c是图示出td从源平台600s到目的地平台600d的迁移中所涉及的逻辑的详细示例的框图。每个块可以代表在迁移的某个阶段执行相应操作的逻辑。大多数块的命名与表格1的助记符相同或类似,并且每个这样的块可以代表可操作来执行该助记符的相应操作的tdx模块的逻辑(例如,如果该逻辑在源平台500s中则代表tdx模块503s,或者如果该逻辑在目的地平台500d中则代表tdx模块503d)。在其名称中带有migtd的几个逻辑是migtd的逻辑(例如,如果逻辑在源平台中,则为migtd561s,或者如果逻辑在目的地平台中,则为migtd561d)。可以用硬件、固件、软件、或者任何组合(例如,至少一些硬件和/或固件可能与软件相结合)来实现每个这样的逻辑。[0085]逻辑可被使用并且其操作一般可在示出该逻辑块的迁移阶段来执行。迁移在时间上一般是从左到右进行的。如图的底部所示,这些阶段随着时间的增长最初包括预迁移阶段、预留阶段、迭代性的预拷贝阶段、停止和拷贝控制状态阶段、提交阶段、以及最后的后拷贝阶段。[0086]最初,如图中左上方所示,可以构建源访客td。作为传统td,源vmm可以调用传统的tdh.mng.create逻辑664来执行其关联的tdh.mng.createtdx操作以创建源td。可以类似地构建目的地访客td。目的地vmm可以调用传统的tdh.mng.create逻辑678来执行其关联的tdh.mng.create操作以创建目的地td。目的地td可以被设置为“模板”,以接收源td的状态。[0087]源vmm可以调用tdh.servtd.bind逻辑665来执行其关联的tdh.servtd.bind操作,以将migtd绑定到被迁移的源td以及可选的其它源td。类似地,迁移td也被绑定到目的地td。然后,源vmm可以通过使用另一个tdx模块操作添加tdcs页来建立tdcs。目的地vmm可以调用tdh.mng.configkey逻辑679来执行其关联的tdh.mng.configkey操作,以便将指派给td的hkid和硬件生成的加密密钥编程到每个封装的mktme加密引擎中。[0088]源vmm可调用tdh.mng.init逻辑667来执行其关联的tdh.mng.init操作,以设置不可变的控制状态。这种不可变的控制状态可以代表td状态变量,这些变量可在td构建期间被修改,但在td的测量最终完成之后通常不会被修改。这些状态变量中的一些控制td及其存储器的迁移方式。因此,如图所示,不可变的td控制状态或配置可以在任何td存储器状态被迁移之前被迁移。由于源td要被迁移,所以它可以被初始化以迁移能力属性。源vmm也可以调用tdx模块以了解tdx模块支持td迁移。tdx模块可以响应性地返回关于其迁移能力的信息(例如,是否支持实时迁移)。[0089]目的地vmm可以调用tdh.servtd.bind逻辑681来执行其关联的tdh.servtd.bind操作,即目的地migtd的鉴证和绑定。源migtd逻辑669和目的地migtd逻辑682可以执行它们的tdhservtd.msg操作,以执行在源平台和目的地平台两者上执行的迁移td的基于引述的相互认证(例如,使用diffie-hellman交换),验证或处理td迁移策略(例如,按照源td的迁移策略建立td迁移兼容性),在tdx模块和migtd之间建立安全的或受保护的传输会话或通道,执行迁移会话密钥协商,生成临时迁移会话密钥,并且用迁移密钥来填充tdcs。也可以为td模板预留控制结构资源以便开始迁移。[0090]源migtd逻辑668和目的地migtd逻辑682可以执行它们的tdh.servtd.msg和tdh.mig.stream.create操作,以将迁移密钥从源平台传送到目的地平台,并且将迁移会话密钥写入到目标td的tdcs。服务td绑定允许迁移td通过交换用临时绑定密钥加密和mac的消息来访问特定的目标td元数据。[0091]td全局不可变控制状态也可以被迁移。tdx模块可以保护访客td全局状态(例如,td范围控制结构)的保密性和完好性,该全局状态可以存储访客td元数据,并且除了tdx模块以外,任何软件或设备都不能直接访问该全局状态。这些结构可以用私钥来进行加密和完好性保护,并且由tdx模块api功能来管理。这些不可变控制状态变量中的一些控制td及其存储器的迁移方式。因此,不可变td控制状态可以在任何td存储器状态被迁移之前被迁移。源vmm可以调用tdh.export.state.immutable逻辑670来执行其关联的tdh.export.state.immutable操作,以导出不可变的状态(例如,td不可变配置信息)。目的地vmm可以调用tdh.import.state.immutable逻辑684来执行其关联的tdh.import.state.immutable操作,以导入不可变的状态。[0092]td私有存储器迁移可以在有序迁移阶段和无序迁移阶段中发生。在有序阶段期间,源vmm可以调用tdh.export.page逻辑671来执行其关联的tdh.export.page操作,以导出存储器内容(例如,一个或多个页)。在实时迁移中,这可以在源td正在运行的同时在实时迁移预拷贝阶段期间完成。目的地vmm可以调用tdh.import.page逻辑685来执行其关联的tdh.import.page操作,以导入存储器内容(例如,一个或多个页)。不要求实时迁移。可以改为使用冷迁移,其中源td在导出存储器内容之前被暂停。另外,可以使用由vmm使用的传统机制来迁移指派给td的共享存储器(因为共享存储器是vmm可以自由访问的)。[0093]td迁移可能不会迁移hkid。相反,可以向在目的地平台上创建的td指派自由hkid,以接收来自源平台的td的可迁移资产。在从源平台向目的地平台的传输期间,可以使用中间加密来保护所有td私有存储器,该中间加密是使用aes-gcm256使用经由迁移td和seam协商的td迁移密钥来执行的。在目的地平台上,当存储器被导入到指派给目的地td的目的地平台存储器中时,可以经由目的地临时密钥来对存储器进行加密。[0094]在实时迁移中,目的地td可以在迁移过程期间开始执行。在预期源td将被迁移(没有克隆)的典型实时迁移场景中,目的地td可以在迭代预拷贝阶段导入存储器页的工作集合之后开始执行。源vmm可以调用tdh.export.pause逻辑672来执行其关联的tdh.export.pause操作,以暂停源td。这可包括检查先决条件并且防止源td继续执行。在源td被暂停之后,可进入硬件封锁时段,在该时段中剩余存储器、源td的最终(可变)控制状态、和全局控制状态可被从源平台导出并且被目的地平台导入。[0095]源vmm可以调用tdh.export.page逻辑673来执行其关联的tdh.export.page操作,以导出存储器状态。目的地vmm可以调用tdh.import.page逻辑686来执行其关联的tdh.import.page操作,以导入存储器状态。td可变非存储器状态是自从其被最终确定之后可能已变化了的一组源td状态变量。不可变非存储器状态对于td范围(作为tdr和tdcs控制结构的一部分)和vcpu范围(作为tdvps控制结构的一部分)存在。源vmm可以调用tdh.export.state.vp逻辑674来执行其关联的tdh.export.state.vp操作,以导出可变tdvp状态(按每个vcpu)。目的地vmm可以调用tdh.import.state.vp逻辑687来执行其关联的tdh.import.state.vp操作,以导入可变tdvp状态。源vmm可以调用tdh.export.state.td逻辑674来执行其关联的tdh.export.state.td操作,以导出td状态(按每个td)。目的地vmm可以调用tdh.import.state.td逻辑687来执行其关联的tdh.import.state.td操作,以导入td状态。[0096]在一些实施例中,可以通过允许td在目的地平台上运行来使用存储器状态的后拷贝。在一些实时迁移场景中,主机vmm可以在目的地td已开始执行之后筹划一些存储器状态转移懒散地发生。在这种情况下,主机vmm将被要求在目的地td发生访问时取得所需的页——这种访问顺序是不确定的,并且很可能与主机vmm排队转移存储器状态的顺序不同。在后拷贝阶段中经由tdh.export.page逻辑676和tdh.import.page逻辑690转移剩余的存储器状态。[0097]为了支持这种按需模型,后拷贝期间的存储器迁移的顺序不由tdx施行。在一些实施例中,主机vmm可以实现多个迁移队列,这些队列具有存储器状态转移的多个优先级。例如,源平台上的主机vmm可以保留每个加密迁移页的拷贝,直到它接收到来自目的地的指出该页已被成功导入的确认为止。如果需要,该拷贝可以在高优先级队列上被重发送。另一个选项是,不保留导出页的拷贝,而是根据需要再次调用tdh.export.page。另外,为了简化这个模型的主机vmm软件,在这个后拷贝阶段中用于存储器导入的tdx模块接口api将返回额外的信息差错代码,以表明主机vmm尝试了陈旧的导入,以考虑到访客物理地址(guestphysicaladdress,gpa)的低时延导入操作取代了从更高时延导入队列的导入的情况。或者,在其他实施例中,vmm可以在允许目的地td运行之前首先完成所有存储器迁移,然而从在无序阶段期间支持的更简单并且可能更高性能的操作中受益。[0098]在一些实施例中,tdx模块可以使用提交协议来施行源td的所有导出状态必须在目的地td可以运行之前被导入。该提交协议可以帮助确保主机vmm不能违反td实时迁移的安全性目标。例如,在一些实施例中,可以施行,在源td到目的地td的实时迁移之后,即使差错导致td迁移被中止,目的地和源td也不可继续执行。[0099]在源平台上,tdh.export.pause逻辑672开始td实时迁移的封锁阶段,并且tdh.export.state.done逻辑691结束实时迁移的封锁阶段(并且标记td存储器预拷贝、可变tdvp、和可变td全局控制状态的转移的结束)。tdh.export.state.done逻辑691生成经加密认证的开始令牌,以允许目的地td成为可运行的。在目的地平台上,tdh.import.state.done逻辑688消耗加密开始令牌,以允许目的地td被解除暂停。[0100]在差错场景中,迁移过程可在开始令牌被生成之前由源平台上的主机经由tdh.export.abort逻辑675主动中止。如果已经生成了开始令牌(例如,预拷贝完成),则目的地平台可以使用生成中止令牌的tdh.import.state.abort逻辑689生来成中止令牌,该中止令牌可以被源td平台tdx模块的tdh.export.abort逻辑675消耗,以中止迁移过程并且允许源td再次变得可运行。在成功提交后,源td可被拆除,并且迁移密钥可被td拆除逻辑677销毁。[0101]在一些实施例中,tdx模块可以可选地施行若干个安全性目标。一个安全性目标是,csp不能够将td迁移到具有不符合td迁移策略中表达的最低要求的tcb的目的地平台,该策略可以是可配置和可鉴证的。作为一个推论,td鉴证可以施行安全性的基准线。td可以在更强的tcb平台上开始,然后被迁移到更弱的tcb(如果它们在td的安全性策略内的话)。另一个安全性目标是,csp不能够在租户不知情的情况下创建可迁移的td(鉴证报告可包括td可迁移属性)。另一个安全性目标是,csp不能够在迁移期间克隆td(在迁移过程完成之后,只有源td或目的地td在执行)。另一个安全性目标是,csp不能够在来自源td的任何陈旧状态上操作目的地td。另一个安全性目标是,td迁移数据的安全性(保密性、完好性、和重放保护)应当与源和目的地之间的传输机制无关。另一个安全性目标是,td迁移应当施行不可迁移的资产(任何可以在目标上序列化和重创建的东西)在源处被重置,以允许迁移之后在目的地上安全重用和恢复。[0102]在一些实施例中,tdx模块可以可选地施行若干个功能目标。一个功能目标是,csp能够在没有租户td运行时参与的情况下迁移租户td。另一个功能目标是,td能够在创建时选择加入迁移。租户软件不应当是这个决定的一部分。另一个功能目标是,csp能够在迁移td期间尽量减少仅由于td迁移而产生的额外性能影响。例如,td迁移使页碎片化成为必需。另一个功能目标是,tdos不需要新的启发来迁移具有tdxio直接指派设备的td。作为一个推论,tdxio可允许热插拔设备附接/脱离通知。另一个功能目标是,td可以是通过vmx嵌套来迁移的。[0103]iv.多个流和命令导入的计数器[0104]图7是示出根据一些实施例的使用多个流796-1、796-n的源受保护vm705从源平台700s到目的地平台700d的迁移的框图。源平台和目的地平台可以分别是服务器或其他计算机系统,并且可以与本文描述的其他平台(例如,图1、图2、图5等等的平台)相似或相同。源平台包括源安全性组件(例如,tdx模块、平台安全性处理器,等等),其可选地可以与本文描述的其他组件(例如,图1的源安全性组件、图5的tdx模块,等等)相似或相同。源安全性组件可操作来支持和保护源受保护vm705。源受保护vm(例如,tdx信任域、sev加密vm、sev-snp加密虚拟机),可选地可以与本文描述的其他vm(例如,图1的源受保护vm105s、图5的源信任域505s,等等)相似或相同。源平台还具有vmm,该vmm可选地可以与本文描述的其他vmm(例如,图1的源vmm1025,图5的tdx知晓主机vmm556s,等等)相似或相同。[0105]源受保护vm705在多个流796-1、796-n中被从源平台700s迁移到目的地平台700d。在图示的实施例中,示出了两个流,即第一流796-1和第n流796-n,虽然可选地可以有更多的流(例如,达到配置的最大数目)。在各种实施例中,可以有两个、三个、四个、五个、至少十个,或者可选地更多个。vmm702可以创建或设立流。例如,vmm可具有安全迁移模块792,该模块具有命令基元756以协助迁移。在tdx示例中,命令基元可包括本文其他地方提到的seamcall指令和叶操作。命令基元可包括流创建基元756-1以配置流来使用,并且源安全性组件可具有流创建逻辑794以执行该命令基元来协助创建相应的流。作为示例,在tdx中,可能有seamcalltdh.mig.stream.create叶,来使得vmm能够初始化可用于使用多个主机cpu资源导出td状态的迁移流情境,并且tdx模块可具有逻辑来以施行安全性目标的方式执行指令叶。可选地,相同或类似的基元可被目的地平台上的vmm用于配置流来用于状态的导入。[0106]迁移流796-1、796-n可被用于并发地传送页。在图示的实施例中,页以捆绑包(bundle)(例如,b0、b1、b2、b3)的形式被传送,每个捆绑包包括一个或多个页和元数据(例如,如下文进一步论述的捆绑包计数器值、用于完好性保护的可选消息认证码、以及其他元数据)。在一些实施例中,每个捆绑包可包括单个页。在其他实施例中,每个捆绑包可包括多个页。如果希望,这些页可以可选地是4千字节的页或者具有其他大小(例如,更大的大小)。不同的捆绑包可以被分配(例如,由vmm分配)到不同的流。例如,命令基元756可包括捆绑包导出基元756-2,以使得捆绑包被导出,并且源安全性组件可具有捆绑包导出逻辑771,以执行捆绑包导出基元,来协助安全地导出捆绑包。作为示例,在tdx中,可能有seamcalltdh.export.page叶,vmm可以使用其来使得tdh.export.page逻辑导出捆绑包,并且tdx模块可具有逻辑来执行指令叶,以使得捆绑包以施行安全性目标的方式被导出。[0107]使用多个迁移流的一个可能的优点是,它可能有助于提高迁移的带宽或速度。另外,它可能允许使用多个逻辑处理器来并发地处理迁移流。如图所示,源平台可包括多个逻辑处理器,包括第一逻辑处理器710-1以及第n逻辑处理器710-n。这些逻辑处理器可以代表核心、多线程核心的硬件线程,等等。许多计算机系统,尤其是服务器,可具有许多逻辑处理器(例如,多于十个,多于二十个,多于一百个,或者甚至更多)。在图示中,第一流796-1已被配置为由第一逻辑处理器710-1处理,而第n流已被配置为由第n逻辑处理器710-n处理。在一些实施例中,至少大部分流可以可选地被配置为由逻辑处理器中的不同的一个来处理,以帮助改善处理流的并发性或并行性,从而提高迁移带宽或速度。在一些实施例中,例如在tdx中,用于处理流的逻辑处理器可以是通用的逻辑处理器和/或cpu核心和/或cpu硬件线程,而不是专用的特殊用途安全性处理器。如前所述,许多现代计算机系统,尤其是服务器,具有许多cpu逻辑处理器,而通常它们具有较少的或者只具有一个专用的特殊用途安全性处理器。通过让cpu逻辑处理器执行处理,使得多得多的逻辑处理器可用于处理,这可能有助于提高处理流的并发性或并行性,从而提高迁移带宽或速度。[0108]一个或多个迁移队列可被用于迁移。在一些实施例中,可以可选地使用两个或更多个迁移队列。如图所示,系统存储器720可以可选地包括第一队列795-1和第二队列795-2。在这个图示中,第一队列被用于第一流,并且第二队列被用于第n流,虽然这不是必需的。也可以让多个流使用同一个队列,以及让一个流使用多个队列。[0109]根据实施例,具有多个队列的一个可能的原因是,让某些捆绑包的传送速度优先于其他捆绑包(例如,让捆绑包b5和b7优先于b4和b6)。作为示例,第二队列795-2可以被指派(例如,由vmm指派)比第一队列795-1更高的时间递送优先级(例如,第一队列可以是较低的时间优先级队列,并且第二队列可以是较高的时间优先级队列,其中这些术语“较低”和“较高”是仅指向彼此的相对术语,而不是指向任何特定水平的绝对术语)。这种优先级区分的一个可能原因是支持服务质量(qualityofservice,qos)目标,虽然还有其他原因。某些类型的数据可被认为是时间上优先级较高的数据(例如,需要相对更快地被迁移),而其他类型的数据可被认为是时间上优先级较低的数据(例如,可以相对较慢地被迁移)。作为一个具体示例,按需的页后拷贝(例如,例如可能由目的地平台上的扩展分页表格违反触发)可能比其他可以更懒散地迁移的页的后拷贝具有相对更高的优先级。为了避免较高优先级的页被迫与较低优先级的页在同一队列中等待的队头阻塞,可以可选地使用第二较高优先级队列,并且较高优先级的页可以被主机vmm选择性地分配到第二较高优先级队列。vmm可以根据各种标准决定是把要迁移的页放在相对较高优先级的队列中,还是放在相对较低优先级的队列中(例如,作为一个示例,可以把按需后拷贝页放在相对较高优先级的队列中,并且把其他后拷贝页放在相对较低优先级的队列中)。这也可以可选地允许不同的流在时间上优先于其他流。例如,较高优先级的流可以被分配到较高优先级的队列,而较低优先级的流可以被分配到较低优先级的队列。同样地,这些术语“较低”和“较高”只是相对于彼此使用的相对术语,而不是指向任何绝对水平的绝对术语。在任何情况下,这可能允许一些捆绑包的递送在时间上优先于其他捆绑包。[0110]在一些实施例中,被传送的每个捆绑包可以可选地被从捆绑包计数器793指派计数器值(例如,捆绑包计数器值)。捆绑包计数器被显示在安全性组件中,但也可以在其他地方。如图所示,b0可被指派计数器值0,b3可被指派计数器值1,b1可被指派计数器值0,并且b2被指派计数器值1。作为示例,源平台(例如,源安全性组件)可具有迁移捆绑包计数器或计数器。该计数器可以代表每个流的单调增大(或减小)的迁移捆绑包计数器。它可以从初始值(例如,0、1、或某个期望的值)开始,并且可以对于被放入流中的每个捆绑包单调地增大(例如,递增)或者单调地减小(例如,递减)。作为示例,它可以被表示为32比特、64比特、或其他值。每个被迁移的捆绑包可以与反映其被迁移的顺序的其计数器值相关联(例如,计数器值可以被存储在捆绑包的元数据中)。例如,在一些实施例中,作为使得捆绑包被导出的一部分,捆绑包导出基元756-2可以将当前的捆绑包计数器值引入到捆绑包中(例如,引入到捆绑包的元数据的字段中)。例如,在tdx中,seamcalltdh.export.page可以这样做。[0111]在这样的实施例中,计数器值可以帮助允许施行捆绑包的某种排序迁移(例如,在目的地导入)。迁移可具有初始的有序阶段或部分,其中捆绑包应当被按序(例如,按次序)递送。在实时迁移期间,这个有序阶段可能发生在源受保护vm继续在源平台上运行(例如,并且改变其存储器状态)之时、在被迁移的受保护vm开始在目的地平台上运行(例如,并且开始改变其存储器状态)之前。同一个存储器页的较新(例如,较新鲜)的导出应当在同一个页的较旧(例如,陈旧)的导出之后被导入,这样较新的存储器页就会替换较旧的存储器页,而不是相反。此外,对于在有序阶段期间被迁移的任何存储器页,在有序阶段结束之前应当迁移该页的最新版本。在有序阶段期间,可以使用特定流来迁移任何特定的私有存储器页(以及在嵌套vmm情况下的其任何别名)。在每个迁移流内,存储器状态(例如,捆绑包)可以被有序迁移(例如,在目的地导入)。计数器值可被用于此目的。使用特定迁移流的导出或导入操作一般应当被序列化,主要在流之间支持并发。目的地平台可以施行该顺序。例如,目的地平台可以维护类似的计数器(例如,下一个捆绑包计数器),它被用于验证和施行所有导出的状态已经在目的地平台处被导入(有序)。例如,目的地平台可以检查接收到的捆绑包中的捆绑包计数器值是否等于或以其他方式与本地维护的预期计数器值(例如,下一个捆绑包计数器值)兼容,并且如果捆绑包验证成功,则导入捆绑包并且递增或以其他方式更新本地预期计数器值(例如,下一个捆绑包计数器值)以计入导入的捆绑包。例如,在一些实施例中,目的地的vmm可以发出或使用目的地安全性组件(例如,tdx模块)可以实现的捆绑包导入基元(在tdx中为seamcalltdh.import.page)来执行这种验证。这可能有助于当同一页的多个拷贝可能被迁移时,在实时更新期间保证存储器导出和导入的恰当年龄排序。这种恰当的排序出于安全性原因(例如,帮助防止重放型攻击)和性能原因都是可取的。[0112]在一些实施例中,迁移可以使用伽罗瓦/计数器模式(galois/countermode,gcm)中的高级加密标准(advancedencryptionstandard,aes)来在源平台和目的地平台之间传送捆绑包或其他存储器状态。aes-gcm协议可以帮助确保存储器状态在源平台和目的地平台之间有序迁移。作为示例,捆绑包计数器可以被纳入来构造用于aes-gcm的非重复初始化值(initializationvalue,iv)(可选地与其他元数据一起,例如流情境、捆绑包的其他元数据,等等)。另外,在一些实施例中,可以可选地在aes-gcmiv中包括另一个单调增大的计数器(例如,iv_counter)。它可以从一个值(例如,1)开始,并且在每次使用aes-gcm来加密捆绑包时被递增(即使数据被丢弃并且没有被用于迁移)。[0113]在一些实施例中,迁移可以可选地具有后来的无序阶段或部分(例如,停止和拷贝阶段、后拷贝阶段,等等),其中不要求捆绑包被有序递送,而是可以被无序递送。这样的无序阶段或部分不是必需的,但可以帮助提高性能。在无序阶段期间,源受保护vm不运行,因此其存储器和非存储器状态可能不会变化。因此,在无序阶段中页被迁移的顺序不像在有序阶段中那么重要。此外,主机vmm可以将导出的页(甚至是同一导出页的多个拷贝)指派到不同的优先级队列,如前所述。例如,这可用于优先迁移某些类型的页而不是其他页(例如,在目的地受保护vm开始运行之后优先按需后拷贝页)。还要注意,相同的流队列可被用于有序和无序两者。队列的语义使用是由主机vmm决定的。非存储器状态只能被迁移一次;较旧的迁移非存储器状态不会被较新的推翻。[0114]在有序导入阶段中,目的地vmm可以为空闲的访客物理地址(gpa)导入页,并且它也可以将页的较新版本重加载到先前导入的存在的gpa地址。在无序导入阶段中,可能只允许导入到不存在的gpa地址。在这个阶段,源平台上的所有存储器状态都被保证是不可变的,而且到目前为止导出的所有页的最新版本都被保证已被导入。从而,无序导入的顺序是不相关的。这可允许可选地使用单独的迁移流和/或队列来进行更高优先级、更低时延的更新(例如,基于ept违反,通过允许td以高优先级按需运行和迁移存储器页来实现后拷贝)。[0115]v.控制迁移的令牌[0116]图8是示出根据一些实施例的使用令牌897-1,897-n898,899来控制受保护vm从源平台800s到目的地平台800d的迁移的框图。源平台和目的地平台可以分别是服务器或其他计算机系统,并且可以与本文描述的其他平台(例如,图1、图2、图5等等的平台)相似或相同。源平台包括源安全性组件(例如,tdx模块、平台安全性处理器,等等),其可选地可以与本文描述的其他组件(例如,图1的源安全性组件、图5的tdx模块,等等)相似或相同。源安全性组件可操作来支持和保护源受保护vm,源受保护vm可选地可以与本文描述的其他vm(例如,图1的源受保护vm105s、图5的源信任域505s,等等)相似或相同。源平台还具有vmm,该vmm可选地可以与本文描述的其他vmm(例如,图1的源vmm1025,图5的tdx知晓主机vmm556s,等等)相似或相同。[0117]令牌可以广泛地代表可用于传达其期望含义的任何消息或信号(例如,它们是开始令牌,它们是中止令牌,等等)。在一些实施例中,令牌可以可选地被格式化为迁移捆绑包,没有存储器页内容,但具有元数据来表明它是令牌(例如,在一些情况下是开始令牌,在其他情况下是中止令牌)。或者,令牌可以是其他类型的消息、信号、或传输。[0118]在一些实施例中,一个或多个开始令牌897-1、897-2可用于验证或确保受保护vm存储器内容(例如,捆绑包)的恰当有序导出。一个或多个开始令牌可被用作指示符或标记,以指示或标记迁移的有序阶段的结束和/或无序阶段的开始和/或目的地受保护vm可开始运行的点。它们可用于实现汇聚点,以验证或施行在开始令牌之前导出的所有流上的所有有序迁移捆绑包或状态(例如,图7中的捆绑包b0、b1、b2等等)在导入开始令牌以及无序阶段开始以及目的地受保护vm可以开始执行之前已被导入。开始令牌可用于验证或确保源平台上不存在在开始令牌之前导出的任何存储器页的较新版本。[0119]在一些实施例中,源vmm802s可以使得一个或多个开始令牌897-1、897-2被生成并传输到目的地平台802d,以传达关于迁移的无序阶段的结束的信息,如上文对于图7所描述。例如,源vmm可以发出或使用开始令牌命令基元856-1,以使得源安全性组件803s的开始令牌生成逻辑891生成开始令牌897-1并且使其被传输到目的地平台。例如,在tdx实现方式中,源vmm可以发出或使用tdh.export.state.done指令叶(作为开始令牌基元891的示例实施例)来调用源tdx模块(作为源安全性组件803s的示例实施例)的tdh.export.state.done逻辑(作为开始令牌生成逻辑891的示例实施例),以执行其关联的tdh.export.state.done操作来创建和发送开始令牌。在一些实施例中,vmm可以使得使用此命令基元的实例来使得对于在迁移的有序导出阶段期间使用的每个流生成和传输开始令牌。或者,当迁移的有序阶段中使用的最后一个活跃流完成传输其捆绑包时,可以使得仅从该流传输单个开始令牌。当对于特定实现方式需要传输的所有一个或多个开始令牌被传输时,源平台可以开始进入无序阶段。存储器内容的导出可以继续支持迁移的无序阶段。[0120]目的地平台802d可以接收开始令牌897-1、897-2,并且可以使用它们来验证或确保受保护vm存储器内容(例如,捆绑包)的恰当有序导出。在一些实施例中,目的地vmm可以使用开始令牌作为指示符或标记来指示或标记迁移的有序阶段的结束和/或无序阶段的开始和/或目的地受保护vm可开始运行的点。目的地vmm可以使用开始令牌来实现汇聚点,以验证或施行在开始令牌之前导出的所有有序迁移捆绑包或状态(在所有流上)在导入开始令牌和/或无序阶段开始和/或目的地受保护vm可开始执行之前已被目的地平台导入。目的地vmm可以使用开始令牌来验证或确保源平台上不存在在开始令牌之前导出的任何存储器页的较新版本。[0121]目的地vmm可以发出命令基元,以处理打算用于特定设计的完整的一组一个或多个开始令牌中的每一者。例如,目的地vmm可以发出或使用开始令牌验证命令基元802-1,以使得目的地安全性组件803d的开始令牌验证逻辑888验证相应的开始令牌。例如,在tdx实现方式中,目的地vmm可以发出或使用tdh.import.state.done指令叶(作为开始令牌验证命令基元802-1的示例实施例)来调用目的地tdx模块(作为目的地安全性组件803d的示例实施例)的tdh.import.state.done逻辑(作为开始令牌验证逻辑888的示例实施例)来执行其关联的tdh.import.state.done操作以处理和验证相应的开始令牌。如果验证失败,则它可能导致生成和发送中止令牌,如下文进一步论述。开始令牌验证基元(例如,tdh.import.state.done指令叶)可以对于在有序阶段中使用的每个流和相应的开始令牌被执行一次。最后调用的开始令牌验证基元可以导致转变到一个状态,该状态结束了有序阶段,并且分别开始了无序的导出和导入阶段。然后,存储器导入可以继续无序进行(例如,在后拷贝阶段中)。在一些情况下,只有当页的访客物理地址是空闲的时候,这些页才会被导入。[0122]有各种迁移中止机制可用于中止迁移。在一些情况下,在生成开始令牌(例如,开始令牌897-1、897-2之一)之前,可以由源平台(例如,源vmm)主动地中止迁移。例如,源vmm802s可以发出或使用中止命令基元856-2,以使得源安全性组件803s的中止逻辑875生成中止令牌898,并且使得其被传输到目的地平台。例如,在tdx实现方式中,源vmm可以发出或使用tdh.export.abort指令叶(作为中止基元856-2的示例实施例)来调用源tdx模块(作为源安全性组件803s的示例实施例)的tdh.export.abort逻辑(作为中止逻辑875的示例实施例)来执行其关联的tdh.export.abort操作以生成中止令牌并且使得其被传输到目的地平台。中止令牌的传输可以中止迁移,并且允许源td再次变得可运行。中止令牌可以用来保证目的地受保护vm不会在目的地平台上执行,因此源平台上的源受保护vm可以执行。[0123]如果已经生成了开始令牌(例如,开始令牌897-1、897-2之一),则目的地平台802d可以生成中止令牌899并且将其传输到源平台。例如,目的地vmm可以发出或使用中止命令基元来使得目的地安全性组件803d的中止逻辑889生成中止令牌899并且使得其被传输到源平台。例如,在tdx实现方式中,目的地vmm可以发出或使用tdh.import.abort指令叶(作为中止基元802-2的示例实施例)来调用目的地tdx模块(作为目的地安全性组件803d的示例实施例)的tdh.import.abort逻辑(作为中止逻辑的示例实施例)来执行其关联的tdh.import.abort操作以生成中止令牌并且使得其被传输到源平台。源平台可以接收和处理中止令牌899,使用它来中止迁移,并且允许源td再次变得可运行。例如,源vmm可以发出或使用中止命令基元856-2来处理从目的地平台接收的中止令牌899,并且如果它是有效的,则恢复源受保护vm的执行。例如,在tdx实现方式中,源vmm可以发出或使用tdh.export.abort指令叶,以调用源tdx模块的tdh.export.abort逻辑来执行其关联的tdh.export.abort操作,以检查中止令牌899的有效性。如果中止令牌的有效性被确认,那么迁移可以被中止,并且源td可以执行。其他导入失败也可能导致中止,例如页导入的顺序不当或错误,对开始令牌的验证检查失败,等等。当导入失败或迁移中止时,目的地受保护vm可能无法运行,并且可能被拆除。对于图2、图3、图4、图6、图7、和图8中的任何一个描述的组件、特征、和细节也可以可选地适用于图1和图5中的任何一个。为任何装置描述的组件、特征、和细节可以可选地适用于本文公开的任何方法,在实施例中,这些方法可以可选地由这样的装置执行和/或利用这样的装置来执行。[0124]vi.示例tdx指令[0125]tdh.export.page指令[0126]被主机vmm用来导出4kb或2mbtd私有存储器页作为共享存储器中的迁移捆绑包,其中包括mbmd和单个4kb或2mb页或者一组512个4kb页,被用迁移会话密钥来加密。还捕捉了安全eptgpa到hpa的映射和属性。迁移捆绑包由存储在mbmd中的mac来保护。它是可中断的。预期主机vmm将在一个循环中调用它,直到它以成功指示或者以不可恢复的差错指示返回为止。[0127]作为输入操作对象,rax具有seamcall指令叶号。rcx具有ept映射信息:(1)比特[2:0]映射要导出的私有页的安全ept条目的级别:0(4kb)或1(2mb);(2)比特[51:12]要导出的私有页的访客物理地址的比特51:12。rdx具有源td的tdr页的hpa。r8具有要用于mbmd的存储器缓冲区的hpa(包括hkid比特)和存储器大小(例如,以字节为单位)。r9具有目的地页或迁移页列表的hpa、类型、和大小。r10具有关于迁移流和恢复标志的信息:(1)比特[31:0]迁移流索引;(2)比特63为0表明新的调用,或者为1则表明恢复先前中断的操作。[0128]该操作检查以下条件1至8。1.pamt中的tdr页元数据必须正确(pt必须是pt_tdr)。2.td没有处于fatal状态中(tdr.fatal为false)。3.在硬件上配置了td密钥(tdr.lifecycle_state是td_keys_configured)。4.分配了tdcs(tdr.num_tdcx为要求的数字)。5.tdcs.op_state是live_export、paused_export、或者post_export。6.迁移流索引是正确的:6.1.如果导出处于有序阶段中(tdcs.op_state是live_export或者paused_export):6.1.1.迁移流索引与源页gpa和level以及tdcs.num_in_order_migs的散列函数的输出相匹配,定义见16.3.1。6.2.否则(出口处于无序阶段中):6.2.1.迁移流索引低于tdcs.num_migs。7.迁移流的enabled标志为true。8.为mbmd提供的缓冲区足够大并且能装入4kb页内。如果检查成功,则该操作进行以下操作9:9.如果resume输入标志为1,表明这是恢复先前中断的tdh.export.page:9.1.检查流情境的interrupted_func是否包含tdh.export.page的叶号。9.2.检查当前输入(gpa和级别,r9的内容)是否与函数被中断时保存在流情境中的相同。如果通过,则该操作进行以下10-13:10.基于gpa和级别操作对象在sept中游走,并且找到该页的叶条目。11.如果td没有被暂停(tdcs.op_state是live_export):11.1.检查该页被阻止写入;其sept状态必须是*blockedw状态之一。11.2.基于页的pamt.bepoch检查tlb跟踪。12.否则:12.1.检查该页未被阻止(sept状态不是blocked)。13.vm嵌套:检查所有别名已被阻止写入(pamt.alias_count==pamt.blockw_count)。[0129]如果通过,则该操作进行以下操作14:14.如果resume输入标志为0,则表明这是一个新的(非恢复的)tdh.export.page调用。14.1.如果迁移流的initialized标志为false:14.1.1.初始化迁移流并且将其initialized标志设置true。14.2.通过串接作为方向比特的0、流索引、和流情境的next_iv_counter,为这个迁移捆绑包构建96biv,如表格4.2中所描述。14.3.基于mbmd的经mac的字段累积流情境中的mac。详见8.3.1。14.4.将mbmd字段(不包括mac)写入到由主机vmm提供的存储器缓冲区。14.5.递增流情境的next_iv_counter。如果通过,则该操作进行以下操作15和16:15.如果sept状态为非挂起的*blockedw状态之一,则写入迁移数据:15.1.如果页大小为2mb,则重复导出4kb的块,直到所有的页都被导出为止,或者直到检测到挂起的中断为止:15.1.1.如果已提供了页列表,则从其中获得4kb页hpa。否则,使用提供的页hpa。15.1.2.使用迁移流情境将4kb的页块加密到目的地数据页中,并且更新mac计算。15.1.3.如果有挂起的中断15.1.3.1。在流情境中保存中间状态(gpa和级别,到目前为止保存的4kb块的数目,r9的内容)。15.1.3.2.将流情境的interrpted_func字段设置为tdh.export.page叶号。15.1.3.3.以tdx_interrupted_resumable状态终止tdh.export.page。15.1.4.否则,前进到页列表中的下一个条目(如果适用),或者否则就前进到下一个4kb块。15.2.否则(页大小为4kb),使用迁移流情境将页加密到目的地数据页中,并且更新mac计算。16.否则(sept状态是pending_*状态之一),不存在页数据,并且只导出mbmd。[0130]如果通过,则该操作进行以下操作17-20:17.将累积的mac写入到存储器中的mbmd。18.更新setp条目状态和迁移计数器,如下:18.1.如果sept条目状态是blockedw或pending_blockedw(即,这是在这个导出会话中第一次导出该页):18.1.1.将sept条目状态分别设置为exporterd_blockedw或pending_exported_blockedw。18.1.2.递增tdcs.mig_count。18.2.否则(sept状态为exported_dirty_blockedw或pending_exported_dirty_blockedw(即,该页在这个导出会话中已被导出,并且是脏的):18.2.1.将sept条目状态t分别设置为exporterd_blockedw或pending_exported_blockedw。18.2.2.递减tdcs.dirty_count。19.递增流情境的next_mb_counter字段。20.将流情境的interrpted_func字段设置为-1,表明没有中断的功能。[0131]tdh.export.state.done指令[0132]被主机vmm用来结束有序导出阶段,并且从源seam生成和导出开始令牌,以使得能够在目的地平台上运行迁移的td。开始令牌是在指定的迁移流上被导出的。在对所有迁移流调用了这个指令之后,结束被迁移的暂停源td的封锁阶段。带有令牌的提交协议允许使用基于计数器的方案来施行所有经修改的状态必须被导出,并且所有导出的状态必须在使用后续计数器加密的令牌被正确认证和解密之前在目的地上被导入,以允许目的地td可运行。[0133]输入操作对象在rax中包括seamcall指令叶号,在rcx中包括源td的tdr页的hpa,在r8中包括用于mbmd的存储器缓冲区的hpa和存储器大小,其中比特[11:0]指示出分配给mbmd的存储器缓冲区的大小(以字节为单位),并且比特[51:12]指示出主机物理地址(包括hkid比特)。r10指示出迁移流索引。[0134]该操作检查以下条件1至10:1.pamt中的tdr页元数据必须正确(pt必须是pt_tdr)。2.td没有处于fatal状态中(tdr.fatal为false)。3.在硬件上配置了td密钥(tdr.lifecycle_state是td_keys_configured)。4.分配了tdcs(tdr.num_tdcx为要求的数字)。5.导出会话在进行中并且td已被暂停:tdcs.op_state是paused_export。6.迁移流索引低于tdcs.num_in_order_migs。7.迁移流的enabled标志为true。8.为mbmd提供的缓冲区足够大并且能装入4kb页内。9.tdcs.dirty_count为0,表明没有到目前为止导出的任何存储器页的未导出的较新版本仍然存在。尚未导出的存储器页可能仍然存在,并且可能在以后被导出(无序)。10.td可变状态已被导出(由tdh.export.state.td)。[0135]如果成功,则该操作进行以下11至18:11.递增tdcs.num_in_order_done。12.如果已经对在这个迁移会话期间在其上进行了任何导出的所有其他迁移流执行了tdh.export.state.done(tdcs.num_in_order_done==tdcs.num_in_order_migs):12.1.开始后导出阶段:将td操作子状态设置为post_export。12.2.将所有迁移流的enabled标志设为true。13.否则:13.1.将当前迁移流的enabled标志设为false。14.如果迁移流的initialized标志是false:14.1.初始化迁移流,将其initialized标志设为true。15.通过串接作为方向比特的0、流索引、和流情境的next_iv_counter,为这个迁移捆绑包构建96biv,如表格4.2中所描述。16.创建开始令牌mbmd。17.基于mbmd的经mac的字段累积mac,并且写入到mbmd的mac字段值。详见8.3.1。18.将mbmd写入到所提供的存储器缓冲区。[0136]tdh.import.state.done指令[0137]被目的地平台上的主机vmm用来消耗来自从源平台接收的源seam的开始令牌,以授权目的地seam允许迁移的td成为可运行的。如果成功,并且如果其在所有其他迁移流上都成功,则将目标td标记为runnable(不能恢复源)。失败则将目标td标记为import_failed,并且返回中止令牌,然后保证目的地td不会运行。带有令牌的提交协议允许使用基于计数器的方案来施行所有经修改的状态必须被导出,并且所有导出状态必须在使用后续计数器加密的令牌被正确认证和解密之前在目的地上被导入以允许目的地td可运行。[0138]输入操作对象在rax中包括seamcall指令叶号,在rcx中包括源td的tdr页的hpa,在r8中包括hpa和存储器中的mbmd结构的存储器大小,其中比特[11:0]指示出包含mbmd的存储器缓冲区的大小(以字节为单位),并且比特[51:12]指示出主机物理地址(包括hkid比特)。在r10中提供的是迁移流索引[0139]该操作检查以下条件1至8:1.pamt中的tdr页元数据必须正确(pt必须是pt_tdr)。2.td没有处于fatal状态中(tdr.fatal为false)。3.在硬件上配置了td密钥(tdr.lifecycle_state是td_keys_configured)。4.分配了tdcs(tdr.num_tdcx为要求的数字)。5.导入会话在进行中并且td范围的状态已被导入:tdcs.op_state是state_import。6.迁移流索引低于tdcs.num_in_order_migs。7.迁移流的enabled标志为true。8.为mbmd提供的缓冲区足够大并且能装入4kb页内。[0140]如果成功,则该操作进行以下操作9至10:9.将mbmd拷贝到临时缓冲区中。10.检查mbmd字段:10.1.检查size足够大。10.2.检查mb_type指示令牌,并且mb_subtype指示开始令牌。10.3.检查migs_index与输入参数相同。10.4.检查mb_counter值等于迁移流的next_mb_counter。10.5.检查保留字段为0。如果通过,则该操作进行以下操作11至13:11.如果迁移流的initialized标志为false:11.1.初始化迁移流并且将其initialized标志设置true。12.通过串接作为方向比特的0、流索引、和mbmd的iv_counter,为这个迁移捆绑包构建96biv,如表格4.2中所描述。13.基于mbmd的经mac的字段累积mac,并且检查该值是否与mbmd的mac字段的值相同。详见8.3.1。如果通过,则该操作进行以下操作14至17:14.递增流情境的next_mb_counter。15.递增tdcs.num_in_order_done。16.如果已经为在有序阶段期间使用的所有其他迁移流执行了tdh.import.state.done(tdcs.num_in_order_done等于tdcs.num_in_order_migs):16.1.开始无序导入阶段:将tdcs.op_state设置为post_import。16.2.将所有迁移流的enabled标志设置为true。17.否则:17.1.将当前迁移流的enabled标志设为false。[0141]示范性核心体系结构、处理器和计算机体系结构[0142]可以按不同的方式、为了不同的目的、在不同的处理器中实现处理器核心。例如,这种核心的实现方式可包括:1)打算用于通用计算的通用有序核心;2)打算用于通用计算的高性能通用无序核心;3)主要打算用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可包括:1)包括打算用于通用计算的一个或多个通用有序核心和/或打算用于通用计算的一个或多个通用无序核心的cpu;以及2)包括主要打算用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统体系结构,这些体系结构可包括:1)协处理器在与cpu分开的芯片上;2)协处理器在与cpu相同的封装中、分开的管芯上;3)协处理器与cpu在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可在同一管芯上包括所描述的cpu(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)、上述的协处理器以及额外的功能。接下来描述示范性核心体系结构,然后是对示范性处理器和计算机体系结构的描述。[0143]示范性核心体系结构[0144]有序和无序核心框图[0145]图9a是图示出根据本发明实施例的示例性有序管线和示例性寄存器重命名、无序发布/执行管线两者的框图。图9b是图示出根据本发明实施例的包括在处理器中的有序体系结构核心的示例性实施例和示例性寄存器重命名、无序发布/执行体系结构核心两者的框图。图9a-9b中的实线框图示了有序管线和有序核心,而虚线框的可选添加图示了寄存器重命名、无序发布/执行管线和核心。考虑到有序方面是无序方面的子集,将描述无序方面。[0146]在图9a中,处理器管线900包括取得阶段902、长度解码阶段904、解码阶段906、分配阶段908、重命名阶段910、调度(也称为调遣或发布)阶段912、寄存器读取/存储器读取阶段914、执行阶段916、写回/存储器写入阶段918、异常处理阶段922、以及提交阶段924。[0147]图9b示出了包括耦合到执行引擎单元950的前端单元930的处理器核心990,并且执行引擎单元950和前端单元930两者都耦合到存储器单元970。核心990可以是精简指令集计算(reducedinstructionsetcomputing,risc)核心、复杂指令集计算(complexinstructionsetcomputing,cisc)核心、超长指令字(verylonginstructionword,vliw)核心、或者混合或替换核心类型。作为另外一个选项,核心990可以是专用核心,例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(generalpurposecomputinggraphicsprocessingunit,gpgpu)核心、图形核心,等等。[0148]前端单元930包括分支预测单元932,其耦合到指令缓存单元934,指令缓存单元934耦合到指令转化后备缓冲器(translationlookasidebuffer,tlb)单元936,指令tlb单元936耦合到指令取得单元938,指令取得单元938耦合到解码单元940。解码单元940(或解码器)可对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。可利用各种不同的机制来实现解码单元940。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmablelogicarray,pla)、微代码只读存储器(readonlymemory,rom),等等。在一个实施例中,核心990包括微代码rom或其他介质,其为某些宏指令存储微代码(例如,在解码单元940中或者以其他方式在前端单元930内)。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。[0149]执行引擎单元950包括重命名/分配器单元952,其耦合到引退单元954和一组一个或多个调度器单元956。(一个或多个)调度器单元956表示任何数目的不同调度器,包括预留站、中央指令窗口,等等。(一个或多个)调度器单元956耦合到(一个或多个)物理寄存器文件单元958。物理寄存器文件单元958中的每一者表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针),等等。在一个实施例中,物理寄存器文件单元958包括向量寄存器单元、写入掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可提供体系结构式向量寄存器、向量掩码寄存器、以及通用寄存器。(一个或多个)物理寄存器文件单元958与引退单元954重叠,以说明可用来实现寄存器重命名和无序执行的各种方式(例如,利用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;利用(一个或多个)未来文件、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器文件;利用寄存器映射和寄存器池;等等)。引退单元954和(一个或多个)物理寄存器文件单元958耦合到(一个或多个)执行集群960。(一个或多个)执行集群960包括一组一个或多个执行单元962和一组一个或多个存储器访问单元964。执行单元962可在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定功能或功能集合的若干个执行单元,但其他实施例可只包括一个执行单元或者全部执行所有功能的多个执行单元。(一个或多个)调度器单元956、(一个或多个)物理寄存器文件单元958、和(一个或多个)执行集群960被示出为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线、和/或存储器访问管线,它们各自具有其自己的调度器单元、物理寄存器文件单元、和/或执行集群——并且在单独的存储器访问管线的情况下,实现了某些实施例,其中只有此管线的执行集群具有(一个或多个)存储器访问单元964)。还应当理解,在使用分开管线的情况下,这些管线中的一个或多个可以是无序发布/执行管线,并且其余的是有序管线。[0150]一组存储器访问单元964耦合到存储器单元970,存储器单元970包括数据tlb单元972,数据tlb单元972耦合到数据缓存单元974,数据缓存单元974耦合到2级(l2)缓存单元976。在一个示例性实施例中,存储器访问单元964可包括加载单元、存储地址单元、以及存储数据单元,它们中的每一者耦合到存储器单元970中的数据tlb单元972。指令缓存单元934进一步耦合到存储器单元970中的2级(l2)缓存单元976。l2缓存单元976耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。[0151]作为示例,示例性寄存器重命名、无序发布/执行核心体系结构可如下实现管线900:1)指令取得单元938执行取得和长度解码阶段902和904;2)解码单元940执行解码阶段906;3)重命名/分配器单元952执行分配阶段908和重命名阶段910;4)(一个或多个)调度器单元956执行调度阶段912;5)(一个或多个)物理寄存器文件单元958和存储器单元970执行寄存器读取/存储器读取阶段914;执行集群960执行执行阶段916;6)存储器单元970和(一个或多个)物理寄存器文件单元958执行写回/存储器写入阶段918;7)异常处理阶段922可涉及各种单元;并且8)引退单元954和(一个或多个)物理寄存器文件单元958执行提交阶段924。[0152]核心990可支持一个或多个指令集(例如,x86指令集(带有已随着较新版本添加的一些扩展);加州森尼维尔市的mips技术公司的mips指令集;加州森尼维尔市的arm控股公司的arm指令集(带有可选的额外扩展,例如neon)),包括本文描述的(一个或多个)指令。在一个实施例中,核心990包括用以支持紧缩数据指令集扩展(例如,avx1、avx2)的逻辑,从而允许许多多媒体应用使用的操作被利用紧缩数据来执行。[0153]应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按各种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心为该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式取得和解码,然后是同时多线程处理,例如像hyperthreading技术中那样)。[0154]虽然是在无序执行的情境中描述寄存器重命名的,但应当理解,寄存器重命名可被用在有序体系结构中。虽然处理器的图示实施例还包括分开的指令和数据缓存单元934/974和共享的l2缓存单元976,但替换实施例可具有用于指令和数据两者的单个内部缓存,例如,1级(l1)内部缓存或者多级别的内部缓存。在一些实施例中,系统可包括内部缓存与在核心和/或处理器外部的外部缓存的组合。或者,所有缓存可在核心和/或处理器外部。[0155]具体示例性有序核心体系结构[0156]图10a-10b图示出更具体的示例性有序核心体系结构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一。逻辑块通过高带宽互连网络(例如,环状网络)与某些固定功能逻辑、存储器i/o接口、和其他必要i/o逻辑进行通信,这取决于应用。[0157]图10a是根据本发明实施例的单个处理器核心及其与片上互连网络1002的连接以及2级(l2)缓存的其本地子集1004的框图。在一个实施例中,指令解码器1000支持具有紧缩数据指令集扩展的x86指令集。l1缓存1006允许低时延访问以将存储器缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用不同的寄存器集合(分别是标量寄存器1012和向量寄存器1014)并且在它们之间传送的数据被写入到存储器,然后被从1级(l1)缓存1006读回,但本发明的替换实施例可以使用不同的方案(例如,使用单个寄存器集合或者包括允许数据在两个寄存器文件之间传送而不被写入和读回的通信路径)。[0158]l2缓存的本地子集1004是全局l2缓存的一部分,全局l2缓存被划分成不同的本地子集,每处理器核心一个本地子集。每个处理器核心具有到l2缓存的其自己的本地子集1004的直接访问路径。处理器核心所读取的数据被存储在其l2缓存子集1004中并且可被迅速访问,所述访问与其他处理器核心访问其自己的本地l2缓存子集并行进行。处理器核心所写入的数据被存储在其自己的l2缓存子集1004中并且在必要时被从其他子集冲刷出。环状网络确保了共享数据的一致性。环状网络是双向的,以允许诸如处理器核心、l2缓存、和其他逻辑块之类的代理在芯片内与彼此通信。每个环状数据路径在每方向上是1012比特宽的。[0159]图10b是根据本发明实施例的图10a中的处理器核心的一部分的扩展视图。图10b包括l1缓存1004的l1数据缓存1006a部分,以及关于向量单元1010和向量寄存器1014的更多细节。具体而言,向量单元1010是16宽的向量处理单元(vectorprocessingunit,vpu)(参见16宽alu1028),其执行整数指令、单精度浮点指令、和双精度浮点指令中的一种或多种指令。vpu支持利用调配单元1020调配寄存器输入,利用数值转换单元1022a-b进行数值转换,以及利用复制单元1024对存储器输入进行复制。写入掩码寄存器1026允许断言结果向量写入。[0160]具有集成存储器控制器和图形的处理器[0161]图11是根据本发明实施例的可具有多于一个核心、可具有集成的存储器控制器、并且可具有集成的图形的处理器1100的框图。图11中的实线框图示了具有单个核心1102a、系统代理1110、一组一个或多个总线控制器单元1116的处理器1100,而虚线框的可选添加图示了具有多个核心1102a-n、系统代理单元1110中的一组一个或多个集成存储器控制单元1114、和专用逻辑1108的替换处理器1100。[0162]因此,处理器1100的不同实现方式可包括:1)其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心)并且核心1102a-n是一个或多个通用核心(例如,通用有序核心、通用无序核心、或者两者的组合)的cpu;2)其中核心1102a-n是大量的主要打算用于图形和/或科学(吞吐量)的专用核心的协处理器;以及3)其中核心1102a-n是大量的通用有序核心的协处理器。从而,处理器1100可以是通用处理器、协处理器、或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量集成众核(manyintegratedcore,mic)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。处理器可被实现在一个或多个芯片上。处理器1100可以是一个或多个衬底的一部分和/或可利用若干个工艺技术中的任何一者被实现在一个或多个衬底上,这些技术例如是bicmos、cmos或nmos。[0163]存储器层次体系包括核心内的一级或多级缓存、一组或一个或多个共享缓存单元1106、以及与该组集成存储器控制器单元1114相耦合的外部存储器(未示出)。该组共享缓存单元1106可包括一个或多个中间级别缓存(例如2级(l2)、3级(l3)、4级(4)或者其他级别的缓存),末级缓存(lastlevelcache,llc),和/或这些的组合。虽然在一个实施例中基于环的互连单元1112互连集成图形逻辑1108、该组共享缓存单元1106、以及系统代理单元1110/(一个或多个)集成存储器控制器单元1114,但替换实施例也可使用任何数目的公知技术来互连这种单元。在一个实施例中,在一个或多个缓存单元1106和核心1102a-n之间维持一致性。[0164]在一些实施例中,核心1102a-n中的一个或多个能够进行多线程处理。系统代理1110包括协调和操作核心1102a-n的那些组件。系统代理单元1110可包括例如功率控制单元(powercontrolunit,pcu)和显示单元。pcu可以是或者可以包括对核心1102a-n和集成图形逻辑1108的功率状态进行调节所需要的逻辑和组件。显示单元用于驱动一个或多个在外部连接的显示器。[0165]核心1102a-n就体系结构指令集而言可以是同构的或者异构的;也就是说,核心1102a-n中的两个或更多个能够执行同一指令集,而其他的核心能够只执行该指令集的子集或者不同的指令集。[0166]示例性计算机体系结构[0167]图12-图21是示例性计算机体系结构的框图。本领域中已知的用于膝上型电脑、桌面型电脑、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digitalsignalprocessor,dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置,也是适当的。总之,能够包含本文公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般是适当的。[0168]现在参考图12,其中示出了根据本发明的一个实施例的系统1200的框图。系统1200可包括一个或多个处理器1210、1215,它们耦合到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(graphicsmemorycontrollerhub,gmch)1290和输入/输出中枢(input/outputhub,ioh)1250(它们可在不同的芯片上);gmch1290包括与存储器1240和协处理器1245耦合的存储器和图形控制器;ioh1250将输入/输出(i/o)设备1260耦合到gmch1290。或者,存储器和图形控制器中的一者或两者被集成在处理器内(如本文所述),存储器1240和协处理器1245直接耦合到处理器1210,并且控制器中枢1220与ioh1250在单个芯片中。[0169]额外的处理器1215的可选性在图12中用虚线表示。每个处理器1210、1215可包括本文描述的处理核心中的一个或多个并且可以是处理器1100的某个版本。[0170]存储器1240可例如是动态随机访问存储器(dynamicrandomaccessmemory,dram)、相变存储器(phasechangememory,pcm)、或者两者的组合。对于至少一个实施例,控制器中枢1220经由多点分支总线(例如前端总线(frontsidebus,fsb))、点到点接口(例如quickpathinterconnect(qpi))或者类似的连接1295与(一个或多个)处理器1210、1215进行通信。[0171]在一个实施例中,协处理器1245是专用处理器,例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。在一个实施例中,控制器中枢1220可包括集成的图形加速器。[0172]在物理资源1210、1215之间,就包括体系结构特性、微体系结构特性、热特性、功率消耗特性等等在内的价值度量的范围而言,可以有各种差异。[0173]在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1210将这些协处理器指令识别为应当由附接的协处理器1245执行的类型。因此,处理器1210在协处理器总线或其他互连上向协处理器1245发出这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器1245接受并且执行接收到的协处理器指令。[0174]现在参考图13,其中示出了根据本发明实施例的第一更具体示例性系统1300的框图。如图13所示,多处理器系统1300是点到点互连系统,并且包括经由点到点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一者可以是处理器1100的某个版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。[0175]处理器1370和1380被示出为分别包括集成存储器控制器(integratedmemorycontroller,imc)单元1372和1382。处理器1370还包括点到点(p-p)接口1376和1378作为其总线控制器单元的一部分;类似地,第二处理器1380包括p-p接口1386和1388。处理器1370、1380可利用p-p接口电路1378、1388经由点到点(p-p)接口1350交换信息。如图13中所示,imc1372和1382将处理器耦合到各自的存储器,即存储器1332和存储器1334,存储器1332和存储器1334可以是在本地附接到各个处理器的主存储器的一部分。[0176]处理器1370、1380可分别利用点到点接口电路1376、1394、1386、1398经由个体p-p接口1352、1354与芯片组1390交换信息。芯片组1390可以可选地经由高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。[0177]共享缓存(未示出)可被包括在任一处理器中,或者在两个处理器之外,但经由p-p互连与处理器连接,从而使得任一个或两个处理器的本地缓存信息在处理器被置于低功率模式中的情况下可被存储在该共享缓存中。[0178]芯片组1390可经由接口1396耦合到第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(peripheralcomponentinterconnect,pci)总线,或者诸如快速pci总线或另一种第三代i/o互连总线之类的总线,虽然本发明的范围不限于此。[0179]如图13中所示,各种i/o设备1314可耦合到第一总线1316,以及将第一总线1316耦合到第二总线1320的总线桥1318。在一个实施例中,一个或多个额外的处理器1315,例如协处理器、高吞吐量mic处理器、gpgpu、加速器(例如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列、或者任何其他处理器,耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(lowpincount,lpc)总线。各种设备可耦合到第二总线1320,包括例如键盘/鼠标1322、通信设备1327和存储单元1328,例如盘驱动器或者其他大容量存储设备,其中该存储单元1328在一个实施例中可包括指令/代码和数据1330。另外,音频i/o1324可耦合到第二总线1320。注意,其他体系结构是可能的。例如,取代图13的点到点体系结构,系统可实现多点分支总线或者其他这种体系结构。[0180]现在参考图14,其中示出了根据本发明实施例的第二更具体示例性系统1400的框图。图13和图14中的相似元素带有相似的标号,并且图13的某些方面被从图14中省略以避免模糊图14的其他方面。[0181]图14图示出处理器1370、1880可分别包括集成存储器和i/o控制逻辑(“cl”)1372和1382。从而,cl1372、1382包括集成存储器控制器单元并且包括i/o控制逻辑。图14图示出不仅存储器1332、1334耦合到cl1372、1382,而且i/o设备1414也耦合到控制逻辑1372、1382。传统i/o设备1415耦合到芯片组1390。[0182]现在参考图15,其中示出了根据本发明实施例的soc1500的框图。图11中的相似元素带有相似的标号。另外,虚线框是更先进soc上的可选特征。在图15中,(一个或多个)互连单元1502耦合到:应用处理器1510,其包括一组一个或多个核心142a-n和(一个或多个)共享缓存单元1106;系统代理单元1110;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;一组一个或多个协处理器1520,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机访问存储器(staticrandomaccessmemory,sram)单元1530;直接存储器访问(directmemoryaccess,dma)单元1532;以及显示单元1540,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1520包括专用处理器,例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器,等等。[0183]可以用硬件、软件、固件、或者这种实现方案的组合来实现本文公开的机制的实施例。本发明的实施例可被实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备的可编程系统上执行的计算机程序或程序代码。[0184]程序代码,例如图13中所示的代码1330,可被应用到输入指令,以执行本文描述的功能并且生成输出信息。输出信息可按已知的方式被应用到一个或多个输出设备。对于本技术而言,处理系统包括任何具有处理器的系统,该处理器是例如数字信号处理器(digitalsignalprocessor,dsp)、微控制器、专用集成电路(applicationspecificintegratedcircuit,asic)、或者微处理器。[0185]可以用高级别过程式或面向对象的编程语言来实现程序代码以与处理系统进行通信。如果希望,也可以用汇编或机器语言来实现程序代码。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是经编译或者经解译的语言。[0186]至少一个实施例的一个或多个方面可由被存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些代表性指令在被机器读取时使得该机器制作逻辑来执行本文描述的技术。这种被称为“ip核心”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。[0187]这种机器可读存储介质可包括但不限于由机器或设备制造或形成的物品的非暂态有形布置,包括诸如以下项之类的存储介质:硬盘,任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compactdiskread-onlymemory,cd-rom)、可改写致密盘(compactdiskrewritable,cd-rw)、以及磁光盘),半导体设备(诸如,只读存储器(read-onlymemory,rom),诸如动态随机访问存储器(dynamicrandomaccessmemory,dram)、静态随机访问存储器(staticrandomaccessmemory,sram)之类的随机访问存储器(randomaccessmemory,ram),可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom),闪速存储器,电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom),相变存储器(phasechangememory,pcm)),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介质。[0188]因此,本发明的实施例还包括非暂态有形机器可读介质,其包含指令或者包含定义本文描述的结构、电路、装置、处理器、和/或系统特征的设计数据,例如硬件描述语言(hardwaredescriptionlanguage,hdl)。这种实施例也可被称为程序产品。[0189]仿真(包括二进制转化、代码变形等等)[0190]在一些情况下,指令转换器可被用于将指令从源指令集转换到目标指令集。例如,指令转换器可将指令转化(例如,利用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真、或者以其他方式转换到要被核心处理的一个或多个其他指令。可以用软件、硬件、固件、或者其组合来实现指令转换器。指令转换器可以在处理器上、在处理器外、或者一部分在处理器上一部分在处理器外。[0191]图16是根据本发明实施例的与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令对比的框图。在图示的实施例中,指令转换器是软件指令转换器,虽然可替换地,可以用软件、固件、硬件、或者其各种组合来实现指令转换器。图16示出了可以利用x86编译器1604来编译高级别语言1602的程序以生成x86二进制代码1606,x86二进制代码1606可由具有至少一个x86指令集核心1616的处理器原生执行。具有至少一个x86指令集核心的处理器1616表示任何这样的处理器:这种处理器可通过兼容地执行或以其他方式处理(1)英特尔x86指令集核心的指令集的实质部分或者(2)目标为在具有至少一个x86指令集核心的英特尔处理器上运行的应用或其他软件的目标代码版本,来执行与具有至少一个x86指令集核心的英特尔处理器基本上相同的功能,以便实现与具有至少一个x86指令集核心的英特尔处理器基本上相同的结果。x86编译器1604表示可操作来生成x86二进制代码1606(例如,目标代码)的编译器,x86二进制代码1606在带有或不带有额外的链接处理的情况下可在具有至少一个x86指令集核心的处理器1616上被执行。类似地,图16示出了高级别语言1602的程序可被利用替换指令集编译器1608来编译以生成替换指令集二进制代码1610,替换指令集二进制代码1610可由没有至少一个x86指令集核心的处理器1614(例如,具有执行加州森尼维耳市的mips技术公司的mips指令集和/或执行加州森尼维耳市的arm控股公司的arm指令集的核心的处理器)原生执行。指令转换器1612用于将x86二进制代码1606转换成可由没有x86指令集核心的处理器1614原生执行的代码。这个转换后的代码不太可能与替换指令集二进制代码1610相同,因为能够做到这一点的指令转换器是难以制作的;然而,转换后的代码将实现一般操作并且由来自替换指令集的指令构成。从而,指令转换器1612表示通过仿真、模拟、或任何其他过程允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件、或者其组合。[0192]在说明书和/或权利要求中,可能使用了术语“耦合”和/或“连接”及其衍生词。这些术语并不打算是彼此的同义词。更确切地说,在实施例中,“连接”可用于指示出两个或更多个元素与彼此发生直接的物理和/或电气接触。“耦合”的意思可以是两个或更多个元素与彼此发生直接的物理和/或电气接触。然而,“耦合”也可以指两个或更多个元素没有与彼此发生直接接触,但仍与彼此合作或交互。例如,执行单元可以通过一个或多个居间组件与寄存器和/或解码单元耦合。在附图中,箭头被用来显示连接和耦合。[0193]本文公开的逻辑和模块可以用硬件(例如,集成电路、晶体管、逻辑门,等等)、固件(例如,存储微代码、微指令或其他低级别或电路级指令的非易失性存储器)、软件(例如,存储在非暂态计算机可读存储介质上的高级别指令)或其组合(例如,硬件和/或固件可能与一些软件相结合)来实现。在一些情况下,如果已示出和描述了多个逻辑或模块,则在适当的情况下,它们反而可以可选地被集成在一起成为单个逻辑或模块。在其他情况下,如果已示出和描述了单个逻辑或模块,则在适当的情况下,它可以可选地被分离成两个或更多个逻辑或模块。[0194]此外,在上文描述的各种实施例中,除非另有特别注明,否则诸如短语“a、b或c中的至少一者”之类的析取语言打算被理解为意指a、b或c,或者其任何组合(例如,a、b和/或c)。因此,析取语言并不打算也不应当被理解为暗示给定的实施例要求至少一个a、至少一个b或者至少一个c各自都存在。[0195]在以上描述中,阐述了许多具体细节以便提供对实施例的透彻理解。然而,没有这些具体细节中的一些也可以实现其他实施例。本发明的范围不是由上面提供的具体示例决定的,而只是由所附权利要求书决定。在其他情况下,以框图形式和/或没有细节地示出了公知的电路、结构、设备和操作,以避免模糊对描述的理解。在认为适当时,标号或标号的末端部分在图中重复出现,以指示对应或类似的元素,这些元素可以可选地具有类似或相同的特性,除非另有规定或者明显可见。[0196]某些操作可由硬件组件执行,或者可体现在机器可执行或电路可执行的指令中,这些指令可被用于引起和/或导致用这些指令编程的机器、电路或硬件组件(例如,处理器、处理器的一部分、电路等等)执行这些操作。这些操作也可以可选地由硬件和软件的组合来执行。处理器、机器、电路或硬件可包括具体或特定的电路或其他逻辑(例如,可能与固件和/或软件相结合的硬件),可操作来执行和/或处理指令并且存储响应于指令的结果。[0197]一些实施例包括包含机器可读介质的制造品(例如,计算机程序产品)。该介质可包括一种机制,该机制以机器可读的形式提供信息,例如存储信息。机器可读介质可提供或在其上存储指令或指令序列,该指令或指令序列如果被机器执行和/或在被机器执行时,可操作来使得机器执行和/或导致机器执行本文公开的一个或多个操作、方法或技术。[0198]在一些实施例中,机器可读介质可包括有形和/或非暂态机器可读存储介质。例如,非暂态机器可读存储介质可包括软盘、光存储介质、光盘、光数据存储设备、cd-rom、磁盘、磁光盘、只读存储器(readonlymemory,rom)、可编程rom(programmablerom,prom)、可擦除可编程rom(erasable-and-programmablerom,eprom)、电可擦除可编程rom(electrically-erasable-and-programmablerom,eeprom)、随机访问存储器(randomaccessmemory,ram)、静态ram(static-ram,sram)、动态ram(dynamic-ram,dram)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、非暂态数据存储设备,等等。非暂态机器可读存储介质不包括暂态的传播信号。在一些实施例中,存储介质可包括包含固态物质或材料的有形介质,例如半导体材料、相变材料、磁性固态材料、固态数据存储材料,等等。或者,可以可选地使用非有形暂态计算机可读传输介质,例如,电、光、声或其他形式的传播信号——例如载波、红外信号和数字信号。[0199]适当机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路,等等。适当机器的其他示例包括计算机系统或其他电子设备,其中包括处理器、数字逻辑电路或集成电路。这种计算机系统或电子设备的示例包括但不限于桌面型计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(mobileinternetdevice,mid)、媒体播放器、智能电视、上网电脑、机顶盒、以及视频游戏控制器。[0200]提及“一个实施例”、“一实施例”、“一示例实施例”等等表明描述的实施例可包括特定的特征、结构或特性,但可能不一定每个实施例都包括该特定特征、结构或特性。此外,这种短语不一定指的是同一实施例。另外,当联系一实施例来描述特定的特征、结构或特性时,认为联系其他实施例(无论是否明确描述)来实现这种特征、结构或特性,是在本领域技术人员的知识范围内的。[0201]说明书和附图因此应被认为是说明性的,而不是限制性的。然而,很明显,在不脱离如权利要求中记载的本公开的更宽精神和范围的情况下,可对其进行各种修改和改变。[0202]示例实施例[0203]以下示例涉及进一步实施例。示例中的具体细节可被用在一个或多个实施例中的任何地方。[0204]示例1是一种方法,该方法包括:施行下述操作:在第一受保护虚拟机(vm)从第一平台到第二平台的迁移的有序阶段期间,通过流在所述第二平台处接收到的所述第一受保护vm的多个状态捆绑包被导入到所述第二平台的第二受保护vm,导入的顺序与从所述第一受保护vm导出所述多个状态捆绑包的顺序相同。所述方法还包括:通过所述流接收标记,所述标记用于标记所述迁移的有序阶段的结束。所述方法还包括:确定在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所有状态捆绑包已被导入到所述第二受保护vm。所述方法还包括:基于确定在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包已被导入到所述第二受保护vm,而开始所述迁移的无序阶段。[0205]示例2包括如示例1所述的方法,还包括,在所述迁移的无序阶段中,允许第二多个状态捆绑包被以与从所述第一受保护vm导出所述第二多个状态捆绑包的顺序不同的顺序导入到所述第二受保护vm。[0206]示例3包括如示例1至2中的任何一者所述的方法,还包括:基于确定在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包已被导入到所述第二受保护vm,而开始执行所述第二受保护vm。[0207]示例4包括如示例1至3中的任何一者所述的方法,可选地其中所述施行包括施行所述多个状态捆绑包中的指示出从所述第一受保护vm导出所述多个状态捆绑包的顺序的值分别与指示被导入到所述第二受保护vm中的所述多个状态捆绑包的数目的值相一致。[0208]示例5包括如示例1至4中的任何一者所述的方法,还包括可选地通过第二流接收所述第一受保护vm的多个状态捆绑包,可选地利用第一虚拟中央处理单元(vcpu)处理通过所述流接收的多个状态捆绑包,并且可选地利用第二vcpu处理通过所述第二流接收的多个状态捆绑包。[0209]示例6包括如示例1至5中的任何一者所述的方法,还包括可选地施行下述操作:在所述迁移的有序阶段期间通过第二流在所述第二平台处接收的所述第一受保护vm的第二多个状态捆绑包被导入到所述第二受保护vm,导入的顺序与从所述第一受保护vm导出所述第二多个状态捆绑包的顺序相同。所述方法还可选地包括通过所述第二流接收第二标记。所述方法还可选地包括在确定在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包已被导入到所述第二受保护vm之前,确定在通过所述第二流接收的所述第二标记导出之前从所述第一受保护vm导出的所有状态捆绑包已被导入到所述第二受保护vm。[0210]示例7包括如示例1至6中的任何一者所述的方法,还包括通过用于将所述第一受保护vm的状态捆绑包传送到所述第二平台的多个流中的每一者接收标记,并且可选地其中通过所述流接收所述标记包括在通过所述多个流接收所述标记之后通过所述流接收所述标记。[0211]示例8包括如示例1至7中的任何一者所述的方法,可选地还包括从虚拟机监视器接收命令基元,并且可选地其中所述确定和所述开始是响应于所述命令基元而执行的。[0212]示例9包括如示例1至8中的任何一者所述的方法,可选地其中所述第二受保护vm是信任域,并且所述方法可选地还包括使所述信任域的状态对于所述第二平台的虚拟机监视器维持保密。[0213]示例10包括如示例1至9中的任何一者所述的方法,可选地其中所述流是经计数器模式加密和认证的流。[0214]示例11包括如示例1至10中的任何一者所述的方法,可选地其中所述标记被用对于vmm保持保密的迁移能力密钥来加密。[0215]示例12是一种非暂态机器可读存储介质,存储多个指令,所述多个指令在被机器执行的情况下使得所述机器执行操作,所述操作包括:施行下述操作:在第一受保护虚拟机(vm)从第一平台到第二平台的迁移的有序阶段期间,通过流在所述第二平台处接收到的所述第一受保护vm的多个状态捆绑包被导入到所述第二平台的第二受保护vm,导入的顺序与从所述第一受保护vm导出所述多个状态捆绑包的顺序相同。所述操作还包括:确定在导出所述迁移的有序阶段结束的标记之前从所述第一受保护vm导出的所有状态捆绑包是否已被导入到所述第二受保护vm,所述标记是通过所述流接收的。所述操作还包括:基于确定结果是否是在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包已被导入到所述第二受保护vm,而确定是否开始所述迁移的无序阶段。[0216]示例13包括如示例12所述的非暂态机器可读存储介质,可选地其中确定是否开始所述迁移的无序阶段的指令还包括在被所述机器执行的情况下使得所述机器执行包括如下操作的指令:基于确定在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包已被导入到所述第二受保护vm,而确定开始所述迁移的无序阶段。[0217]示例14包括如示例12至13中的任何一者所述的非暂态机器可读存储介质,可选地其中确定是否开始所述迁移的无序阶段的指令还包括在被所述机器执行的情况下使得所述机器执行包括如下操作的指令:在确定在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包还没有被导入到所述第二受保护vm时,确定中止所述迁移。[0218]示例15包括如示例12至14中的任何一者所述的非暂态机器可读存储介质,可选地其中所述指令还包括在被所述机器执行的情况下使得所述机器执行包括如下操作的指令:在所述迁移的无序阶段中,允许第二多个状态捆绑包被以与在所述迁移的无序阶段期间从所述第一受保护vm导出所述第二多个状态捆绑包的顺序不同的顺序导入到所述第二受保护vm。[0219]示例16包括如示例12至15中的任何一者所述的非暂态机器可读存储介质,可选地其中所述指令还包括在被所述机器执行的情况下使得所述机器执行包括如下操作的指令:基于确定结果是否是在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包已被导入到所述第二受保护vm,而确定是否开始所述第二受保护vm的执行。[0220]示例17包括如示例12至16中的任何一者所述的非暂态机器可读存储介质,可选地其中所述施行的指令还包括在被所述机器执行的情况下使得所述机器执行包括如下操作的指令:施行下述操作,即所述多个状态捆绑包中的指示出从所述第一受保护vm导出所述多个状态捆绑包的顺序的值分别与指示被导入到所述第二受保护vm中的所述多个状态捆绑包的数目的值相一致。[0221]示例18是一种装置,包括多个核心,以及非暂态机器可读存储介质。所述非暂态机器可读存储介质存储多个指令,所述多个指令在被机器执行的情况下使得所述机器执行操作。所述操作包括:施行下述操作:在第一受保护虚拟机(vm)从第一平台到第二平台的迁移的有序阶段期间,通过流在所述第二平台处接收到的所述第一受保护vm的多个状态捆绑包被导入到所述第二平台的第二受保护vm,导入的顺序与从所述第一受保护vm导出所述多个状态捆绑包的顺序相同。所述操作还包括:确定在导出所述迁移的有序阶段结束的标记之前从所述第一受保护vm导出的所有状态捆绑包是否已被导入到所述第二受保护vm,所述标记是通过所述流接收的。所述操作还包括:基于确定结果是否是在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包已被导入到所述第二受保护vm,而确定是否开始所述迁移的无序阶段。[0222]示例19包括如示例18所述的装置,可选地其中确定是否开始所述迁移的无序阶段的指令还包括在被所述机器执行的情况下使得所述机器执行包括如下操作的指令:在确定在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包已被导入到所述第二受保护vm时,确定开始所述迁移的无序阶段,并且可选地在确定在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包还没有被导入到所述第二受保护vm时,确定中止所述迁移。[0223]示例20包括如示例18至19中的任何一者所述的装置,可选地其中所述多个状态捆绑包被根据计数器模式加密利用迁移能力密钥来进行加密,还包括受保护迁移服务vm向所述第一平台认证所述第二平台,并且可选地其中所述迁移能力密钥不对所述受保护迁移服务vm保持保密,但对虚拟机监视器(vmm)保持保密。[0224]示例21包括如示例18至20中的任何一者所述的装置,可选地其中所述标记被根据计数器模式加密利用迁移能力密钥来进行加密和完好性保护,所述迁移能力密钥对虚拟机监视器(vmm)保持保密。[0225]示例22是一种装置,包括中央处理单元(cpu),以及与所述cpu耦合的处理器,来施行下述操作:在第一受保护虚拟机(vm)从第一平台到第二平台的迁移的有序阶段期间,通过流在所述第二平台处接收到的所述第一受保护vm的多个状态捆绑包被导入到所述第二平台的第二受保护vm,导入的顺序与从所述第一受保护vm导出所述多个状态捆绑包的顺序相同。与所述cpu耦合的所述处理器还确定在导出所述迁移的有序阶段结束的标记之前从所述第一受保护vm导出的所有状态捆绑包是否已被导入到所述第二受保护vm,所述标记是通过所述流接收的。与所述cpu耦合的所述处理器还基于确定结果是否是在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包已被导入到所述第二受保护vm,而确定是否开始所述迁移的无序阶段。[0226]示例23包括如示例22所述的装置,可选地其中与所述cpu耦合的所述处理器可选地还在确定在通过所述流接收所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包已被导入到所述第二受保护vm时,确定开始所述迁移的无序阶段。与所述cpu耦合的所述处理器可选地还在确定在通过所述流接收的所述标记导出之前从所述第一受保护vm导出的所述所有状态捆绑包还没有被导入到所述第二受保护vm时,确定中止所述迁移。[0227]示例24包括如示例22至23中的任何一者所述的装置,可选地其中所述多个状态捆绑包可选地被根据计数器模式加密利用迁移能力密钥来进行加密,并且可选地还包括受保护迁移服务vm向所述第一平台认证所述第二平台,并且可选地其中所述迁移能力密钥不对所述受保护迁移服务vm保持保密,但对vmm保持保密。[0228]示例25包括如示例22至24中的任何一者所述的装置,可选地其中所述标记可选地被根据计数器模式加密利用迁移能力密钥来进行加密和完好性保护,所述迁移能力密钥可选地对vmm保持保密。[0229]示例26包括如示例22至25中的任何一者所述的装置,可选地其中所述流可选地是经计数器模式加密和可选地认证的流。[0230]示例27是一种可操作来执行如示例1至11中的任何一者所述的方法的装置。[0231]示例28是一种装置,包括用于执行如示例1至11中的任何一者所述的方法的部件。[0232]示例29是一种装置,包括可操作来执行如示例1至11中的任何一者所述的方法的模块和/或单元和/或逻辑和/或电路和/或部件的任何组合。[0233]示例30是一种可选地非暂态和/或有形的机器可读介质,其可选地存储或者以其他方式提供指令,所述指令在被计算机系统或其他机器执行的情况下和/或在被计算机系统或其他机器执行时,可操作来使得所述机器执行如示例1至11中的任何一者所述的方法。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献