CN107683480A - 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令 - Google Patents
用于支持对受保护容器的实时迁移的处理器、方法、系统和指令 Download PDFInfo
- Publication number
- CN107683480A CN107683480A CN201680030029.1A CN201680030029A CN107683480A CN 107683480 A CN107683480 A CN 107683480A CN 201680030029 A CN201680030029 A CN 201680030029A CN 107683480 A CN107683480 A CN 107683480A
- Authority
- CN
- China
- Prior art keywords
- page
- instruction
- protected container
- write
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
Abstract
一种处理器包括解码单元,所述解码单元用于对指令进行解码,所述指令用于指示受保护容器存储器的页以及在所述受保护容器存储器之外的存储位置。执行单元响应于所述指令而用于确保在所述受保护容器存储器的所述页具有写保护状态的同时不存在对所述页的可写引用。所述执行单元用于对所述受保护容器存储器的所述页的副本进行加密。所述执行单元用于:在已经确保不存在可写引用之后,将所述页的经加密副本存储到在所述受保护容器存储器之外的所述存储位置。所述执行单元用于:在已经将所述经加密副本存储到所述存储位置之后,将所述受保护容器存储器的所述页留置于所述写保护状态,所述页还是有效且可读的。
Description
背景技术
技术领域
本文描述的实施例总体上涉及处理器。具体地,本文描述的实施例总体上涉及具有支持飞地和其他受保护容器的架构的处理器。
技术背景
台式计算机、膝上型计算机、智能电话、服务器、路由器和其他网络元件以及各种其他类型的计算机系统经常用于处理秘密或机密信息。这种秘密或机密信息的几个代表性示例包括但不限于:密码、账户信息、财务信息、金融交易期间的信息、机密性公司数据、企业权利管理信息、个人日程表、个人联系方式、医疗信息、其他个人信息等等。总体上,期望保护这种秘密或机密信息免于检查、篡改等。
附图说明
通过参考以下用于展示实施例的描述和附图,可以最好地理解本发明。在附图中:
图1是计算环境的框图,在所述计算环境中,受保护容器可以从源计算机系统迁移到目的地计算机系统。
图2是软件环境的第一示例实施例的框图,在所述软件环境中,可以对虚拟机的受保护容器执行实时迁移。
图3是软件环境的第二示例实施例的框图,在所述软件环境中,可以对操作系统容器的受保护容器执行迁移。
图4是将受保护容器从源计算机系统迁移到目的地计算机系统的方法的实施例的方框流程图。
图5是对受保护容器存储器的页进行写保护并且将写保护页的加密副本存储在受保护容器存储器之外同时使写保护页在受保护容器存储器中有效且可读的方法的实施例的方框流程图。
图6是可操作用于执行具有用于支持对受保护容器的实时迁移的一条或多条指令的集合的实施例的处理器的实施例的框图。
图7是可操作用于执行受保护容器页写保护指令的实施例的处理器的实施例的框图。
图8是可操作用于执行受保护容器页加密和将经加密副本存储到受保护容器存储器之外指令的实施例的处理器的实施例的框图。
图9是可操作用于执行受保护容器页解除写保护和加密页副本无效化指令的实施例的处理器的实施例的框图。
图10A是框图,展示了有序流水线的实施例和寄存器重命名无序发出/执行流水线的实施例。
图10B是处理器核的实施例的框图,所述处理器核包括耦合至执行引擎单元的前端单元,并且所述前端单元和执行引擎单元两者都耦合至存储器单元。
图11A是单个处理器核的实施例连同其与管芯上互连网络的连接以及连同其2级(L2)高速缓存的本地子集的框图。
图11B是图11A的处理器核的一部分的展开视图的实施例的框图。
图12是可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器的实施例的框图。
图13是计算机架构的第一实施例的框图。
图14是计算机架构的第二实施例的框图。
图15是计算机架构的第三实施例的框图。
图16是计算机架构的第四实施例的框图。
图17是根据本发明的实施例的使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文公开了执行在对受保护容器的实时迁移期间有用的操作的指令、用于执行所述指令的处理器、由所述处理器在处理或执行所述指令时执行的方法以及结合用于处理或执行所述指令的一个或多个处理器的系统。尽管主要结合对受保护容器的实时迁移而对指令进行了描述,但是要理解的是,指令不限于这种用途而是具有一般效用并且可以可选地用于与对受保护容器的实时迁移完全不相关的其他用途。在以下描述中,阐述了许多具体细节(例如,具体指令操作、数据结构及其内容、处理器配置、微架构细节、操作序列等)。然而,可以在没有这些具体细节的情况下实践实施例。在其他实例中,未详细示出公知的电路、结构和技术以避免模糊对本说明书的理解。
图1是计算环境的框图,在所述计算环境中,受保护容器107可以从源计算机系统100迁移到目的地计算机系统121。源计算机系统和目的地计算机系统可以表示台式计算机系统、膝上型计算机系统、智能电话、服务器、网络元件或其他类型的计算机系统。如所示出的,源计算机系统和目的地计算机系统可以通过一个或多个中间网络120彼此耦合或以其他方式彼此通信。一方面,源计算机系统和目的地计算机系统可以通过互联网(例如,“云”)耦合。可替代地,源计算机系统和目的地计算机系统可以通过一个或多个本地有线或无线链路更直接耦合。
源计算机系统包括至少一个处理器112、常规存储器102以及受保护容器存储器106。常规存储器和受保护容器可以表示系统存储器的可以包括一种或多种类型的物理存储器(例如,动态随机存取存储器(DRAM)、闪存等)的不同部分。常规存储器和受保护容器存储器可以具有部分地由处理器的逻辑执行的不同级别的保护或安全性。常规存储器可以表示系统存储器的属于通常用于存储应用、数据等的类型的一部分。如所示出的,常规存储器可以存储特权系统软件103(例如,虚拟机监视器、一个或多个操作系统等)。常规存储器还可以存储一个或多个用户级应用(例如,网络管理应用、数据库应用、电子邮件应用、电子表格应用等)。一方面,源计算机系统可以表示通常不显著限制关于可以加载到系统上的系统软件和用户级应用的用户选择的所谓“开放”系统。
相比常规存储器102,受保护容器存储器106可以具有较高级别的保护和/或安全性。较高级别的保护和/或安全性可以至少部分地由处理器的硬件和/或其他管芯上逻辑执行、控制或以其他方式提供。在一些实施例中,受保护容器存储器可以表示处理器预留存储器的专为处理器预留的一部分,而常规存储器可以不是处理器预留存储器的一部分。通过示例的方式,处理器可以具有与受保护容器存储器相对应的一个或多个范围寄存器。范围寄存器可用于存储与受保护容器存储器的范围相关联的数据,并且可以在作为提供保护和/或安全性的一部分而对受保护容器存储器进行尝试访问时被查询。一方面,数据或范围可由基本输入/输出系统(BIOS)在引导期间存储到范围寄存器中。
受保护容器107(例如,受保护容器的一个或多个页108)可以存储在受保护容器存储器106中。处理器可以具有指令集113,所述指令集包括用于与受保护容器交互(例如,创建、破坏、进入、退出、管理页入、执行安全操作等)的指令。所述指令中的一些可以是可由特权级软件(例如,软件103)而不是由非特权或用户级软件执行的特权级指令。其他指令可以是非特权或用户级指令。作为一个示例,可以为受保护容器利用域105(如例如,虚拟机模块、应用模块等)创建受保护容器。例如,特权系统软件可以创建受保护容器。受保护容器通常可以对特权级软件不透明(例如,特权级软件可以不能看到受保护容器内的代码和/或数据),而可由特权级软件(例如,通过指令集的特权级指令)管理。
受保护容器利用域可以将秘密或机密数据存储到受保护容器中。受保护容器可以有助于向受保护容器中的秘密或机密信息提供机密性以及在一些情况下可选地提供一项或多项其他保护(例如,完整性保护、重放保护等)。机密性通常涉及防止数据公开。完整性通常涉及确保不存在任何数据篡改。处理器的至少一些硬件逻辑可以有助于提供这种机密性和/或其他保护。在各个实施例中,受保护容器可以表示安全飞地、由硬件执行的容器、硬件管理的执行环境、硬件管理的隔离执行区域、待由应用使用的安全和/或专用存储器区域或其他受保护容器。在一些实施例中,受保护容器可以表示软件防护扩展(SGX)飞地,尽管本发明的范围不限于此。在一些实施例中,受保护容器存储器可以表示可操作用于存储一个或多个运行或执行安全飞地的页的SGX飞地页高速缓存(EPC),尽管本发明的范围不限于此。
在一些实施例中,受保护容器页元数据结构(PCPMS)109可用于存储受保护容器107的元数据(例如,安全元数据、访问控制元数据等)。如所示出的,在一些实施例中,可选地,PCPMS可以存储在受保护容器存储器中,尽管这不是必须的。在一些实施例中,PCPMS可以对存储在受保护容器存储器中的每个页的这种元数据进行存储。一方面,PCPMS可以被结构化成针对受保护容器存储器中的不同相应页而具有不同条目,尽管使PCPMS结构化的其他方式也是有可能的(例如,其他类型的表、数据结构等)。每个条目可以存储相应页的元数据。根据特定实施方式,受保护容器页的适当类型的元数据的示例包括但不限于:用于指示页有效还是无效的信息、用于指示受保护容器页所属于的受保护容器的信息、用于指示虚拟地址(允许通过所述虚拟地址访问受保护容器页)的信息、用于指示受保护容器页的读取/写入/执行权限的信息等及其各种组合。可替代地,可选地,在不同实施例中,可以存储较少元数据、附加元数据或其他元数据组合。本发明的范围不限于待存储到PCPMS中的任何已知类型的元数据。对于一些实施例,适合PCPMS的一个示例是SGX飞地页高速缓存映射(EPCM),尽管本发明的范围不限于此。
如图1中示出的,可选地,受保护容器(例如,其页)可以存储在受保护容器存储器中。同样,可选地,PCPMS可以存储在受保护容器存储器中。另外地或可替代地,可选地,受保护容器(例如,其页)和/或PCPMS可以存储在处理器的管芯上受保护容器存储设备中。例如,处理器可以具有用于存储受保护存储器页和/或PCPMS的一个或多个高速缓存115。通过示例的方式,可以使用一个或多个专用高速缓存,可以使用一个或多个高速缓存的专用部分,或者其组合。作为另一个选项,除了高速缓存之外,处理器可以具有用于存储这种页或结构的另一种类型的专用存储设备。管芯外存储器和(多个)管芯上高速缓存两者或其他存储设备的组合也是适合的。
再次参照图1,处理器还可以具有受保护容器逻辑116。受保护容器逻辑可以包括用于执行指令和/或以其他方式支持受保护容器(例如,控制对受保护容器的访问)的硬件、固件或其组合。受保护容器逻辑包括访问控制逻辑117。访问控制逻辑可操作用于:当其驻留于处理器的管芯上时(例如,驻留于(多个)高速缓存、寄存器、其他结构等中),实施、控制或以其他方式提供针对受保护容器存储器以及受保护容器存储器的数据的访问控制。根据特定实施方式,在不同实施例中,不同类型的访问控制逻辑117是适合的。
在一些实施例中,根据特定实施方式,访问控制逻辑可以包括可操作用于部分地通过查询页表、范围寄存器、PCPMS 109等或其组合来控制对受保护容器和/或受保护容器存储器的访问的存储器管理单元(MMU)和/或页未命中处理器(PMH)单元。在一些实施例中,访问控制逻辑可以包括可操作用于在受保护容器的代码和/或数据驻留于处理器内时控制对所述代码和/或数据的访问的逻辑。例如,所述逻辑可操作用于:当代码和/或数据在用于计算的运行时间期间以非加密形式存储或以其他方式驻留于处理器内的高速缓存、寄存器或其他结构或部件内时,控制对所述代码和/或数据的访问。一方面,所述逻辑可操作用于允许从受保护容器的代码中对同一受保护容器的代码和/或数据(无论其是存储在受保护容器存储器中还是驻留于处理器的管芯上)进行授权访问,但可以阻止通过受保护容器之外的代码对受保护容器的代码和/数据(无论其是存储在受保护容器存储器中还是驻留于处理器的管芯上)进行非授权访问。
受保护容器逻辑还可以包括密码单元118。密码单元可操作用于执行加密和解密。在一些实施例中,在受保护容器的代码和/或数据存储到处理器之外(例如,存储到系统存储器中)之前(如例如,在写入到系统存储器中期间、在驱逐保持受保护容器代码和/或数据的高速缓存行期间等),密码单元可以自动地对所述代码和/或数据进行加密。这可以有助于防止代码和/或数据被观看(例如,有助于提供数据机密性)。密码单元还可操作用于:在飞地页的加密代码和/或数据被接收到处理器中(例如,从系统存储器)时,对所述加密代码和/或数据进行解密。
在一些实施例中,可选地,密码单元还可操作用于向受保护容器的代码和/或数据密码地提供完整性保护和/或认证。例如,在一些实施例中,在受保护容器的代码和/或数据存储到处理器之外(例如,存储到系统存储器中)之前,密码单元可以自动地计算所述代码和/或数据的消息认证码或其他认证或完整性检查数据。可选地,密码单元还可操作用于:当受保护容器页的代码和/或数据被接收到处理器中(例如,从系统存储器)时,使用这种认证或完整性检查数据来认证或确保所述代码和/或数据完整性。这可以有助于允许对数据进行认证或完整性检查以便帮助检测对数据的任何篡改或改变。所述逻辑可操作用于检测受保护容器页的完整性违例并防止对被篡改代码/数据(在检测到时)的访问。
一方面,这种密码操作可由密码单元自动且自主地并且对软件透明地执行(例如,如与软件必须执行软件密码算法的多条指令相反)。在一些实施例中,可选地,密码单元可以对受保护容器的代码和/或数据而通常不对不属于受保护容器的常规页的代码和/或数据选择性地执行这种密码操作。
在一些实施例中,可选地,受保护容器逻辑116可以包括用于生成并使用与受保护容器的代码和/或数据相关联的版本信息的逻辑。例如,可选地,当受保护容器的页存储到处理器之外(例如,存储到系统存储器中)时,所述页可以分配有版本信息(例如,唯一版本值、版本计数器等)。可选地,受保护容器逻辑可以包括用于在受保护容器的代码和/或数据(例如,页)被重新加载时检查这种版本信息的逻辑。在一些实施例中,受保护容器逻辑可以仅允许对通过版本信息(例如,仅最后驱逐的版本)指示合法或有效的受保护容器页进行加载。这可以有助于防止对受保护容器代码和/或数据的重放。
为了进一步展示某些概念,以上已经描述了某些类型的保护或安全性。然而,要理解的是,根据特定实施方式、环境、安全需要、成本对安全权衡等,保护或安全性的类型或级别可以因实施方式而不同。本文描述的实施例可以结合具有不同级别的安全性或保护的受保护容器使用。本发明的范围不限于任何已知类型或级别的保护或安全性。
再次参照图1,在一些实施例中,源计算机系统110的特权系统软件103可以包括受保护容器实时迁移模块104,所述受保护容器实时迁移模块可操作用于控制或管理对受保护容器107从源计算机系统到目的地计算机系统121的实时迁移。术语“实时”意味着可以在受保护容器在源计算机系统上运行的同时部分地执行迁移。如进一步示出的,在一些实施例中,处理器包括用于支持对受保护容器(例如,受保护容器107)的实时迁移的一条或多条指令114。如以上提及的,这些指令不限于仅用于对受保护容器的实时迁移,而是还可以可选地根据程序员的创造性天赋而用于各种其他目的。在一些实施例中,所述一条或多条指令可以是仅可以在一个或多个特权执行级下而不是在用户执行级或非特权执行级下执行的特权级指令。所述一个或多个非特权执行级高于由用户级应用(例如,文字处理应用、电子邮件应用、电子表格等)使用的用户执行特权级。在一些实施例中,受保护容器实时迁移模块104可以使用所述一条或多条指令114。此外,在一些实施例中,处理器可以包括可操作用于执行用于支持对受保护容器的实时迁移的所述一条或多条指令114的逻辑119。有利地,所述(多条)指令以及用于执行所述指令的逻辑可以有助于提高对受保护容器的实时迁移的执行效率,尽管可选地所述指令可以可替代地用于其他目的。
在一些实施例中,源计算机系统可以包括密钥管理器受保护容器110,所述密钥管理器受保护容器可操作用于管理可以对应于受保护容器107的一个或多个能够迁移的或可迁移密钥(例如,密钥层次)。如所示出的,可选地,密钥管理器受保护容器还可以存储在受保护容器存储器中。密钥管理器受保护容器可以表示可信实体,所述可信实体用于控制或管理密钥并且允许将所述密钥虚拟化并结合将受保护容器从源计算机系统迁移到目的地计算机系统而将所述密钥从源计算机系统迁移到目的地计算机系统。在一些实施例中,密钥管理器受保护容器可以表示架构保护容器。在SGX实施方式实施例中,密钥管理器受保护容器的一个适合示例是迁移引擎(MigE),尽管本发明的范围不限于此。在其他实施例中,可选地,能够迁移的密钥可以以不同方式实施,如例如,存储到受保护容器中的特殊类型的页中、由不同类型的可信实体控制或管理等等。
根据特定实施方式,可选地,还可以连同受保护容器使用一个或多个其他结构111。例如,在一些实施例中,可以存在用于保持所述一个或多个能够迁移的或可迁移密钥(例如,密钥层次)的结构。例如,在SGX实施方式实施例中,可以存在用于存储可迁移平台SGX密钥、计数器和域状态的SGX域控制结构(SDCS)。作为另一个,在一些实施例中,可选地,可以包括用于存储受保护容器页的版本信息的一个或多个版本页。例如,在SGX实施方式实施例中,可以存在可操作用于存储受保护容器存储器中的页的版本阵列的一个或多个版本阵列页。例如,如以下将进一步解释的,可以存在针对从EPC存储且在EPC中被无效化的页的VA页以及针对从EPC存储并且根据实施例以写保护、有效且可读状态保留在EPC中的页的VAX页的实施例。作为又另一个示例,SGX实施方式实施例,可以存在可操作用于对与页出页(paged-out page)相关联的加密元数据进行存储的分页加密元数据(PCMD)结构、可操作用于存储与页有关的元数据的页元数据结构(PGMD)。将理解的是,可选地,在不同实施方式中,可以以不同方式对与受保护容器相关联的数据和/或元数据进行分区或组合,并且本发明的范围不限于任何已知的对数据和/或元数据进行分区或组合的这种方式。
在迁移完成后,目的地计算机系统可以具有经迁移的受保护容器122。示出了目的地计算机系统的简化版本,尽管要理解的是,可选地,目的地计算机系统可以与源计算机系统类似或相同。一般而言,可能期望为了各种不同原因而对受保护容器进行实时迁移,并且本发明的范围不限于任何已知原因。一方面,可以结合负载均衡而迁移受保护容器。例如,在数据中心的源服务器或云计算环境上运行的虚拟机或其他受保护容器利用域可以使用受保护容器,并且所述域以及受保护容器可以从源服务器迁移到目的地服务器以便使源服务器和目的地服务器上的工作负载均衡。在其他实施例中,受保护容器可以为了其他原因而迁移如例如以便将工作负载从待维修、维护或升级的源计算机系统重新定位,以便将工作负载从运行中的台式计算机重新定位到便携式计算机等等。
图2是软件环境的第一示例实施例的框图,在所述软件环境中,可以对虚拟机(VM)205-N的受保护容器207执行实时迁移。计算机系统包括虚拟机监视器(VMM)203以及第一VM205-1至第N VM 205-N。VMM可以表示主机程序(通常在固件中),所述主机程序可操作用于提供虚拟化管理或控制以便允许计算机系统支持VM。代表性地,VMM可以管理计算机系统的一个或多个处理器、存储器以及其他资源并且将与其相关联的资源分配给VM。每个VM可以表示对程序的执行进行仿真的机器(例如,物理机)的虚拟或软件实施方式。每个VM可以支持对访客操作系统(OS)的执行。如所示出的,第一VM可以具有第一访客操作系统(OS)224-1,并且第N VM可以具有第N访客OS 224-N。操作系统可以或者是同一OS的多个实例或者是不同OS。
在所展示的示例中,第N VM将利用受保护容器207。在一些实施例中,VMM可以包括用于对将受保护容器迁移出计算机系统进行控制或管理的受保护容器实施迁移模块204。如本文中其他地方所描述的,计算机系统的一个或多个处理器(未示出)可以具有用于支持实时迁移的一条或多条指令以及用于执行所述指令的逻辑。在一些实施例中,第一VM可以包括密钥管理器受保护容器210。在一些实施例中,密钥管理器受保护容器可以控制或管理一组一个或多个每VM或VM特定密钥(例如,密钥层次),所述密钥各自对应于所述VM中具有相应受保护容器的不同VM。
图3是软件环境的第二示例实施例的框图,在所述软件环境中,可以对操作系统容器305的受保护容器307执行迁移。计算机系统包括操作系统(OS)303、具有受保护容器307的OS容器305以及OS控制服务325。OS 303可以表示内核并且可以提供基于容器的虚拟化或OS虚拟化。OS容器可以表示OS内表示与访客虚拟机类似的虚拟化层的应用。在一些实施例中,OS可以包括用于对将受保护容器迁移出计算机系统进行控制或管理的受保护容器实施迁移模块304。如前所述,如在本文中其他地方所描述的,计算机系统的一个或多个处理器(未示出)可以具有用于支持对受保护容器的实时迁移的一条或多条指令以及用于执行所述指令的逻辑。同样,在一些实施例中,OS控制服务可以包括密钥管理器受保护容器310。在一些实施例中,密钥管理器受保护容器可以控制或管理一组一个或多个每OS容器或OS容器特定密钥(例如,密钥层次),所述密钥各自对应于所述OS容器中具有相应受保护容器的不同OS容器。
图4是将受保护容器从源计算机系统迁移到目的地计算机系统的方法430的实施例的方框流程图。在一些实施例中,所述方法可由源计算机系统和目的地计算机系统上的协作的受保护容器实时迁移模块控制或管理。
在框431处,在使用受保护容器的应用或域(例如,VM、OS容器等)正在源计算机系统上运行的同时,可以将受保护容器的页的副本从源计算机系统的受保护容器存储器存储到目的地计算机系统的常规存储器中的加密副本中。在一些实施例中,可选地,框431处的操作可以使用图5的方法或其一部分来执行,包括针对所述方法提及的变型中的任何变型,尽管本发明的范围不限于此。
在一些实施例中,在页的副本(例如,经加密副本)从源计算机系统的受保护容器存储器存储到外部位置(例如,存储到源计算机系统的常规存储器中)之前,每个页在源计算机系统的受保护容器存储器中都可以是写保护的。在一些实施例中,在将每个写保护页的副本(例如,经加密副本)从源计算机系统的受保护容器存储器存储到外部位置之前,源计算机系统的相应处理器可以确保或验证不存在对写保护页的可写引用。在一些实施例中,在已经将每个写保护页的副本从源计算机系统的受保护容器存储器存储到外部位置时,写保护页在源计算机系统的受保护容器存储器中可以保持为写保护但有效且可读。也就是说,在一些实施例中,页的副本可以同时存在于源计算机系统的受保护容器存储器(例如,EPC)中并且还作为受保护容器存储器之外(例如,在源计算机系统或目的地计算机系统的常规存储器中)的经加密副本。有利地,这可以允许源计算机系统的正在运行的应用或域在受保护容器实时迁移模块同时工作以便将页迁移到目的地计算机的同时从页中读取数据。
在一些实施例中,为了减少实现对受保护容器的完全迁移所需的停机时间的量,在应用或域(例如,VM或OS容器)正在源系统上运行的同时,大多数到基本上尽可能多的页可以从受保护容器存储器复制到目的地存储位置的常规存储器中。这些页至少可以在概念上被视为写入工作集和非写入工作集。写入工作集中的页往往在应用或域正运行的迁移窗口或时间跨度期间被写入。相比而言,非写入工作集中的页往往在应用或域正运行的迁移窗口或时间跨度期间不被写入或不可能被写入。通常,非写入工作集中的页中的大多数到基本上全部页以及(可能地)写入工作集中的页中的一些页(例如,在页已经从受保护容器存储器复制之后还未被写入的页)可能在应用或域正运行的同时从受保护容器存储器复制到外部位置。此外,甚至是在已经从受保护容器存储器复制了从受保护容器存储器复制的写保护页之后,所述写保护页仍可被读取,这是因为这些页是写保护的但仍是有效(除非已经检测到对页的随后写入)且可读的。这可以允许在进行对这些页的迁移的同时从这些页中读取应用或域。
一方面,假设受保护容器页中的所有受保护容器页不处于写入工作集中,受保护容器实时迁移模块可以对所述受保护容器页进行迭代一次或多次,从而从受保护容器存储器中复制所述受保护容器页。如果检测到对写保护页的尝试写入,则可以使所述页的存储在受保护容器存储器之外的推测副本无效。否则,所述页可以以写保护但有效且可读状态保持在受保护容器中。在第一次迭代之后,受保护容器实时迁移模块可能对剩余未复制的受保护容器页进行迭代一次或多次,直到这种剩余未复制的页的数量变得足够小(例如,减小到低于阈值数量或比例)或根据其他一些期望标准。通常,在几次迭代之后,所述一组剩余未复制的受保护容器页应当大致汇聚到倾向于在迁移窗口或时间帧期间被写入的页的写入工作集中。有利地,对受保护容器页进行写保护以及允许受保护容器页在受保护容器存储器中有效且可读可以有助于减少实现对受保护容器的实时迁移所需的应用或域停机时间。页在受保护容器存储器中仍可以保持可读,而不是使所述页无效。有效地,可以从受保护容器存储器中复制写入工作集之外的几乎所有页,而不是仅仅处于表示工作集的较大组页(例如,所述较大组页另外地包括应用倾向于在迁移窗口期间读取的那些页)之外的那些页。这可以有助于减小在应用被撤销调用或停止之后需要复制的页的数量,这可以有助于减少停机时间。
再次参照图4,在框432处,可以停止对正使用源计算机系统上的受保护容器的应用的执行。在各个实施例中,可选地,应用可以是VM或OS容器,尽管这不是必须的。
在框433处,在正使用受保护容器的应用或域已经停止运行之后,可以将任何剩余未复制的页(以及可选地,任何剩余未复制的特殊页)的副本从源计算机系统的受保护容器存储器复制到目的地计算机系统的常规存储器中的加密副本中。在一些实施例中,可选地,可以使用一个或多个特殊页,尽管本发明的范围不限于此。作为一个示例,可选地,可以使用一个或多个特殊页来存储能够迁移的密钥。作为另一个示例,可选地,可以将一个或多个特殊页用于受保护容器的页的版本信息。例如,在SGX实施方式实施例中,可以使用SDCS来存储能够迁移的密钥,并且可以使用一个或多个版本阵列页(VAX)来存储写出受保护容器存储器但保持处于写保护、有效且可读状态的页的版本信息。在其他实施例中,可以使用单个特殊页来存储能够迁移的密钥和版本信息两者,或者能够迁移的密钥和/或版本信息可以替代地存储在受保护容器页本身中,或者可选地,这种信息可以存储在其他数据结构中,等等。
在框434处,将使用目的地计算机系统上的受保护容器的应用或域可以开始运行。在各个实施例中,可选地,应用可以是VM或OS容器,尽管这不是必须的。
在框435中,可以将加密页(以及可选地,加密的特殊页)从目的地计算机系统的常规存储器加载到目的地计算机系统的受保护容器存储器中的未加密页中。例如,可以在目的地计算机系统的受保护容器存储器中创建受保护容器并将其初始化,并且然后,可以将页加载到受保护容器中。在一些实施例中,可选地,在常规页加载到受保护容器存储器中之前,可以将特殊页加载到受保护容器存储器中,尽管本发明的范围不限于此。
图5是对受保护容器存储器的页进行写保护并且将写保护页的加密副本存储到受保护容器存储器之外同时使写保护页在受保护容器存储器中有效且可读的方法538的实施例的方框流程图。在一些实施例中,所述方法可由源计算机系统的受保护容器实时迁移模块在将受保护容器迁移到目的地计算机系统的同时控制或管理,尽管本发明的范围不限于此。例如,在一些实施例中,可选地,所述方法可以在图4的框431处执行,尽管本发明的范围不限于此。所述方法可以或者使用图1的计算机系统或者类似或不同的计算机系统来执行。可选地,在所述方法中可以使用针对计算机系统100而描述的特性和部件,但所述特性和部件不是必须的。在一些实施例中,可以使用处理器的指令集的一条或多条指令(例如,图1的指令114和/或图6的指令614)来执行所述方法,所述一条或多条指令可操作用于支持对受保护容器的实时迁移。
在框539处,可以对受保护容器存储器的页进行写保护。受保护容器存储器的页或者可以存储在系统存储器中的受保护容器存储器内的其安全存储设备中或者可以缓存或以其他方式存储在处理器的高速缓存或其他管芯上存储位置中的可操作用于使所述页在其中保持安全的安全存储设备中。在一些实施例中,可以响应于对指令集的单条指令的执行或实施而对每个页进行写保护。在一些实施例中,可以通过将受保护容器页元数据结构(例如,PCPMS 109)中的写保护指示配置成指示所述页是写保护的来对每个页进行写保护。例如,在SGX实施方式的实施例中,可以通过对飞地页高速缓存映射(EPCM)中的写保护(WP)位进行配置(例如,设置)来对飞地页进行写保护。在一些实施例中,在对页进行写保护的同时,所述页可以是有效且可读的。在一些实施例中,还可以使每个写保护页在分页结构(例如,扩展分页表)中只读,尽管本发明的范围不限于此。在一些实施例中,可选地,对分页结构的修改可以在用于修改PCPMS中的写保护指示的指令的界限之外进行。在各个方面,从整体算法角度看,可以一次一个地或成批地对页进行写保护,或者可以一次性对受保护容器中的所有页进行写保护。
在框540处,处理器可以确保或验证不存在对写保护页的可写引用。在不同实施例中,这可以以不同方式来进行。在一些实施例中,这可以使用TLB跟踪机制来实施。TLB可以对从与页相关联的虚拟地址到物理地址的转换进行缓存。与获取那些权限(比如,读取和写入权限)相关联的权限也可以缓存在TLB中。缓存在TLB中的这些权限反映了在执行页表行走时执行转换的时候的权限。根据存储器访问请求,如果MMU在TLB中发现转换,则其可以绕过页表查找并且使用缓存在TLB中的转换以及权限。也就是说,MMU可以使用来自TLB的权限(其可能是过时的),而不是在页表中查找权限和/或在PCPMS(例如,EPCM)中检查权限。在页具有TLB中指示页是可写的权限的情况下,甚至是在已经对页进行了写保护(例如,如在框539处描述的)之后,可以将线程写入到页中。为了增强安全性,所述方法可以确保这种缓存的权限从(多个)TLB中冲刷掉。这可以在形成写保护页的副本之前进行。在不同实施例中,这可以采用不同方式来进行。作为一个示例,可以使用时期计数器来确定线程何时可以具有对这种TLB映射的访问以及何时一定冲刷了这种TLB映射(例如,线程一定观察到了对页的写保护)。一旦所有线程已经观察到了对页的写保护,则可以确保不再存在对写保护页的可写引用。在一些实施例中,在SGX实施方式实施例中,可选地,可以使用ETRACK指令和相关联机制来确保在将页写出到主存储器之前从TLB中删除了对被迁移页的写入映射。通过示例的方式,可以使用ETRACK指令来将微架构跟踪器逻辑配置成用于检测在执行ETRACK指令时在飞地中执行的所有逻辑处理器何时已经退出了飞地以及因此何时已经驱逐了所有TLB条目(例如,可以在退出飞地时驱逐在飞地执行期间创建的TLB条目)。
在框541处,可以生成受保护容器存储器的写保护页的加密副本。在一些实施例中,可以响应于对指令集的单条指令的执行或实施而生成每个写保护页的经加密副本。在一些实施例中,可以使用处理器的密码单元(例如,密码单元118),所述密码单元可用于在受保护容器页从处理器写出到系统存储器中的任何地方(包括到受保护容器存储器以及受保护容器存储器之外的常规系统存储器中)时对受保护容器页进行加密。在一些实施例中,可选地,相对于受保护容器存储器,可以使用不同加密来将加密的受保护容器页存储到常规存储器中,尽管这不是必须的。
在框542处,可以将受保护容器存储器的写保护页的加密副本(例如,在框540处生成的加密副本)存储到受保护容器存储器之外(例如,到同一计算机系统的常规存储器中或者以其他方式在非受保护容器存储器中)。在一些实施例中,可以将加密副本存储在常规存储器中,同时相应写保护页在受保护容器存储器中保持有效且可读。在一些实施例中,在加密副本已经存储到受保护容器存储器之外之后,可以允许使用相关联受保护容器的应用或域从受保护容器存储器中的写保护页中进行读取。另一种可替代的可能方式将是在应用正运行的同时使页无效(例如,而不是对页进行写保护以及允许页保持有效且可读),尽管这可能具有潜在缺点,比如,不允许对页进行读取和/或减小可以存储到受保护容器存储器之外的页的整体数量。在一些实施例中,可以响应于对指令集的单条指令的执行或实施而将每个写保护页的经加密副本存储到受保护容器存储器之外(例如,存储到常规存储器中)。在一些实施例中,仅在确保或验证不存在对写保护页的可写引用之后(例如,在框541之后)才可以将加密副本存储到受保护容器存储器之外。
在框543处,可以作出关于是否已经检测到对受保护容器存储器的写保护页的写入尝试的判定。如果还未检测到任何这种尝试写入(即,在框543处,“否”为判定结果),则所述方法可以前进到框545。这可以允许页在受保护容器存储器中保持写保护但有效且可读,同时仅存在页的一个真实非脏副本(non-dirty copy),从而允许维持安全性。
相反,如果已经检测到对写保护页的这种写入尝试(即,在框543处,“是”为判定结果),则所述方法可以前进到框544。代表性地,这种尝试可能被处理器的逻辑检测到(例如,响应于扩展页表违例),并且响应于这种情况,逻辑可能表示错误。在框544处,可以对写保护页进行解除写保护(例如,可以使页可写),并且可以使受保护容器存储器之外(例如,源计算机系统的常规存储器中或者目的地计算机系统的常规存储器中)的任何加密副本无效。使受保护容器存储器之外的副本无效可以有助于如例如通过确保仅存在页的一个真实副本(例如,经加密副本的内容和受保护容器存储器中的页的内容没有分歧)来确保安全性。在一些实施例中,响应于对指令集的单条指令的执行或实施,可以对页进行解除写保护并且可以使受保护容器存储器之外的加密副本无效。在一些实施例中,可以通过将受保护容器页元数据结构(例如,PCPMS 109)中的写保护指示配置成指示页是非写保护的来对每个页进行解除写保护。例如,在SGX技术实施方式的实施例中,可以通过对飞地页高速缓存映射(EPCM)中的写保护(WP)位进行配置(例如,冲刷)来对每个页进行解除写保护。在一些实施例中,还可以使页在分页结构(例如,扩展分页表)中可读且可写,尽管本发明的范围不限于此。在一些实施例中,对分页结构的修改可以在用于修改PCPMS中的写保护指示的指令的界限之外进行。
所述方法可以从框543或框544前进到框545。在框545处,可以作出关于是否重复所述方法的判定。如果将重复所述方法(即,在框545处,“是”为判定结果),则所述方法可以回到框539。可替代地,所述方法可以结束。在不同实施例中,可以以不同方式来执行对是否重复所述方法的判定。例如,可以执行所述方法预定或可配置次数(例如,判定可以涉及具有阈值的循环计数器)。作为另一个示例,判定可以涉及在紧接着之前的迭代中判定是否仍对附加页进行写保护(例如,在框539处)和存储,在紧接着之前的迭代中是否对比撤销写保护(例如,在框544处)的页的数量更多的附加页进行写保护(例如,在框539处)和存储,等等。可替代地,可选地,所述方法可以仅执行一次,并且可选地,可以省略框545。
将理解的是,这仅仅是一种方法的一个说明性示例。其他方法可以包括所展示的框的子集。例如,替代性方法可以仅包括框539。另一种替代性方法可以包括框540、541和542。又另一个框可以仅包括框544。还设想了框的各种其他组合。而且,可选地,可以将附加操作添加到所述方法中。此外,可选地,一些操作或框可以重叠(例如,框540和541可以重叠)或以不同顺序执行(例如,框541可以在框540之前执行,框543可以在整个方法内连续执行,等等)。
图6是可操作用于执行具有用于支持对受保护容器的实时迁移的一条或多条指令614的集合的实施例的处理器612的实施例的框图。如之前提及的,指令还可以用于除了支持对受保护容器的实时迁移之外的其他目的。在一些实施例中,处理器可以是通用处理器(例如,在台式计算机、膝上型计算机或其他计算机中使用的类型的通用微处理器或中央处理单元(CPU))。可替代地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于:密码处理器、网络处理器、通信处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器)。处理器可以具有以下架构中的任何架构:各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构,或者具有不同架构的组合(例如,不同核可以具有不同架构)。
用于支持对受保护容器的实时迁移的所述一条或多条指令614的集合可以是处理器的指令集的指令。指令可以表示宏指令、机器代码指令或汇编语言指令。在所展示的示例实施例中,指令可以包括四条不同指令,尽管本发明的范围不限于此。具体地,指令包括受保护容器页写保护指令650、受保护容器页加密和将经加密副本存储到受保护容器存储器之外指令651、可选的受保护容器页解除写保护和页副本无效化指令652以及可选的受保护容器版本阵列页创建指令653。
在其他实施例中,可选地,可以使用少于或多于四条指令。例如,在替代性实施例中,可选地,可以包括这些指令中的任何单条指令,并且可选地,可以省略其他指令。作为一个示例,可选地,可以仅包括受保护容器页写保护指令。作为另一个示例,可选地,可以仅包括受保护容器页加密和将经加密副本存储到受保护容器存储器之外指令。作为又另一个示例,可选地,可以仅包括受保护容器页写保护指令和受保护容器页加密和将经加密副本存储到受保护容器存储器之外指令。而且,可选地,可以添加一条或多条其他指令,连同所示出的这四条指令中的一条或多条。
在仍其他实施例中,可以以不同方式分配这四条指令的功能。作为一个具体示例,可选地,受保护容器写保护指令650的操作和受保护容器页加密和将经加密副本存储到受保护容器存储器之外指令651的操作可以组合成单条指令。作为另一个具体示例,可选地,受保护容器页加密和将经加密副本存储到受保护容器存储器之外指令651的加密操作反而可以分配给受保护容器写保护指令614并由其执行。作为又另一个具体示例,可选地,受保护容器版本阵列页创建指令653的操作以及或者受保护容器页写保护指令650或者受保护容器页加密和将经加密副本存储到受保护容器存储器之外指令651的操作可以组合成单条指令。这些仅仅是几个说明性示例。对得益于本公开的本领域技术人员而言,其他变型将显而易见。
再次参照图6,处理器包括解码单元或解码器654。解码单元可以接收所述一条或多条指令614中的任何指令并对其进行解码。解码单元可以输出反映、表示和/或导出自接收到的相对较高级指令的一个或多个相对较低级指令或控制信号(例如,一条或多条微指令、微操作、微代码入口点、经解码指令或控制信号等)。在一些实施例中,解码单元可以包括用于接收指令的一个或多个输入结构(例如,(多个)端口、(多个)互连、接口),与其耦合以便对接收到的指令进行识别和解码的指令识别和解码逻辑以及与其耦合以便输出(多个)较低级指令或(多个)控制信号的一个或多个输出结构(例如,(多个)端口、(多个)互连、接口)。解码单元可以使用各种不同的机制来实施,包括但不限于:微代码只读存储器(ROM)、查找表、硬件实施方式、可编程逻辑阵列(PLA)以及适合于实施解码单元的其他机制。
处理器还包括一组寄存器667(例如,通用寄存器)。所述寄存器中的每个寄存器可以表示可操作用于存储数据的管芯上存储位置。寄存器可以表示软件和/或编程器可见的架构可见或架构寄存器、和/或由处理器的指令集的用于标识操作数的指令指示的寄存器。这些架构寄存器与给定微架构中的其他非架构寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)形成对照。寄存器可以在不同的微架构中实施,并且不限于任何特定类型的设计。适合类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器及其组合。在一些实施例中,寄存器可用于存储与指令相关联的输入和/或输出数据。一方面,寄存器可以包括针对图7至图9中的任一者而示出和描述的通用寄存器中的任何通用寄存器并且可以具有针对所述图中的任一者而提及的所描述输入和/或输出中的任何一者。
执行单元655与解码单元654和寄存器667耦合。执行单元可以接收表示和/或导出自被解码指令中的任何一条指令(例如,指令614中的任何一条指令)的所述一条或多条经解码或以其他方式转换的指令或控制信号。执行单元响应于被解码指令和/或作为被解码指令的结果(例如,响应于从所述指令中解码出的一条或多条指令或控制信号)而可操作用于执行一项或多项操作668以便实现指令的操作。如所示出的,执行单元可以与处理器616的其他逻辑和/或存储器606中的页或结构耦合或以其他方式与其通信以便实施被执行的具体指令的操作。在一些实施例中,执行单元可以是针对图7至图9中的任一者而示出和描述的执行单元中的任何执行单元并且可以执行针对所述图中的任一者而描述的操作中的任何操作。
执行单元和/或处理器可以包括可操作用于响应于指令和/或作为指令的结果(例如,响应于从指令中解码出的一条或多条指令或控制信号)而执行这种操作的具体或特定逻辑(例如,晶体管、集成电路系统或可能与固件(例如,存储于非易失性存储器中的指令)和/或软件组合的其他硬件)。在一些实施例中,执行单元可以包括用于接收源数据的一个或多个输入结构(例如,(多个)端口、(多个)互连、接口),与所述一个或多个输入结构耦合以便接收和处理源数据的电路系统或逻辑以及与所述电路系统或逻辑耦合以便实现操作的一个或多个输出结构(例如,(多个)端口、(多个)互连、接口)。
为了避免使描述模糊,已经示出和描述了相对简单的处理器。然而,可选地,处理器可以包括其他处理器组件。例如,各个不同实施例可以包括针对图10至图12中的任一者而示出和描述的组件的各种不同组合和配置。处理器的组件中的所有组件可以耦合到一起以便允许它们根据预期运行。
图7是可操作用于执行受保护容器页写保护指令的实施例的处理器712的实施例的框图。处理器包括解码单元754、执行单元755以及(可选地)一组寄存器767(例如,通用寄存器)。除非指明或以其他方式清楚地显现,可选地,这些组件可以具有图6的相应命名组件的特性中的一些或全部特性。为了避免使描述模糊,将主要在不重复所有(可选地)共同特性情况下对不同和/或附加特性进行描述。此外,在一些实施例中,处理器712可以用于图1的源计算机系统100中。可替代地,处理器712可以用于类似或不同的计算机系统中。
解码单元754可以接收受保护容器页写保护指令750。在一些实施例中,受保护容器页写保护指令可以是特权级指令,所述特权级指令仅可在特权执行级下而不是在非特权或用户执行级下执行。例如,受保护容器页写保护指令可以仅在环0特权级下例如由操作系统、虚拟机监视器(VMM)或其他特权系统软件而不是由用户级应用软件执行。在一些实施例中,指令可以指示附加指令指定信息774,尽管这不是必须的。例如,在SGX实施方式实施例中,指令可以是可以在环0特权级下执行的特权级ENCLS指令,并且可以将通用寄存器EAX隐式地指示为具有“28h”的叶子函数索引值(其用于指示EPC页写保护操作),尽管本发明的范围不限于此。尽管可以以与对受保护容器的迁移不相关的各种不同方式来使用指令,但是一方面,这种特权软件可能使用受保护容器页写保护指令来在将页的经加密副本存储到受保护容器存储器之外之前结合对受保护容器的实时迁移对受保护容器页进行写保护。
在一些实施例中,受保护容器页写保护指令可以指示受保护容器页708。在不同实施例中,可以以不同方式来指示页。在一些实施例中,指令可以明确指定(例如,通过一个或多个字段或位集合)或以其他方式指示(例如,隐式指示)用于存储受保护容器页的有效地址或其他指示775的寄存器(例如,通用寄存器767之一)。作为一个示例,可选地,指令可以具有用于指定寄存器的寄存器指定字段,所述寄存器将具有用于指示受保护容器页的有效地址。作为另一个示例,可选地,指令可以隐式地或暗示地指示隐式寄存器,所述隐式寄存器将具有用于指示受保护容器页的有效地址。在接收到指令时,可以理解,尽管未明确表示,但也使用隐式寄存器来找到有效地址。作为一个具体示例,在SGX实施方式实施例中,隐式通用寄存器RCX可以存储飞地页高速缓存(EPC)页的有效地址。
处理器可操作用于将有效地址与其他地址信息组合,以便获得保护容器页的地址。例如,数据分段(DS)分段可以用于创建线性或虚拟地址。如所示出的,在一些实施例中,可选地,受保护容器存储器706可以处于与处理器耦合的系统存储器770中。可替代地,可选地,受保护容器存储器可以是处理器的一个或多个高速缓存或其他管芯上存储设备。作为一个具体示例,在SGX实施方式实施例中,受保护容器存储器可以是飞地页高速缓存(EPC)。
执行单元755与解码单元754和可选的通用寄存器767耦合。执行单元响应于受保护容器页写保护指令而可操作用于对受保护容器存储器706的所指示的受保护容器页708(其可以处于或者系统存储器或者管芯上高速缓存或其他管芯上存储设备中)进行写保护。在一些实施例中,执行单元可以具有写保护单元,所述写保护单元可操作用于通过将写保护指示符777(其对应于所指示的页)配置成所指示页是写保护的来对也进行写保护。不同类型的写保护指示符适合于不同实施例。在一些实施例中,写保护指示符可以在受保护容器存储器中、在处理器预留存储器中的访问控制保护的数据结构中、在处理器的访问控制保护的寄存器或其他结构中等被实施为一个或多个位。如所示出的,在一些实施例中,可选地,写保护指示符可以包括在受保护容器页安全元数据结构(PSPMS)709中,所述PSPMS用于将页的元数据(例如,安全和访问控制元数据)存储在受保护容器存储器中。在一些实施例中,PSPMS可以具有针对受保护容器存储器中的每个相应不同页的不同写保护指示符。根据一个可能惯例,写保护指示符可以是单个位,所述单个位可以被配置成具有用于指示相应所指示的受保护容器页708不是写保护的第一二进制值(例如,设置为二进制一)或者用于指示相应所指示的受保护容器页是写保护的第二不同二进制值(例如,冲刷为二进制零)。作为一个具体示例,在SGX实施方式实施例中,执行单元可以通过将飞地页高速缓存映射(EPCM)中的写保护(WP)位设置成指示飞地页高速缓存(EPC)的页以及EPCM中的非管理字段是写保护的来对所述页进行写保护,尽管本发明的范围不限于此。代表性地,在设置EPCM的WP位时,如果尝试对页进行写入访问,则页未命中处理器(PMH)单元和/或转换后备缓冲区(TLB)可以表示错误(例如,写保护错误、页错误等)。
在一些实施例中,可选地,指令可以明确指定或以其他方式指示将用于存储受保护容器存储器的所指示受保护容器页708的元数据778的元数据结构711。在不同实施例中,可以以不同方式来指示元数据结构。在一些实施例中,指令750可以明确指定(例如,通过一个或多个字段或位集合)或以其他方式指示(例如,隐式指示)用于存储元数据结构的有效地址或其他指示776的寄存器(例如,通用寄存器767之一)。作为一个示例,可选地,指令可以具有用于指定寄存器的寄存器指定字段,所述寄存器将具有用于指示元数据结构的有效地址。作为另一个示例,可选地,指令可以隐式地或暗示地指示隐式寄存器,所述隐式寄存器将具有用于指示元数据结构的有效地址。作为一个具体示例,在SGX实施方式实施例中,隐式通用寄存器RBX可以存储页元数据(PGMD)结构的有效地址,尽管本发明的范围不限于此。在一些实施例中,可选地,可以使用其他数据结构(例如,PCPMS)来存储元数据。执行单元响应于指令而可操作用于将与所指示的受保护容器页有关的元数据778存储到元数据结构711中。如所示出的,执行单元可以具有用于将元数据存储到元数据结构中的可选元数据存储单元782。可替代地,在其他实施例中,可选地,可以省略(例如,可能不需要、可通过另一条指令执行等)对元数据的这种存储。
在一些实施例中,可选地,执行单元可操作用于在对受保护容器页进行写保护之前执行一项或多项安全或验证检查。在一些实施例中,执行单元可以包括安全检查单元783,所述安全检查单元用于检查或验证能够迁移的密钥结构779具有对所指示的受保护容器页708的控制,所述能够迁移的密钥结构具有能够迁移的密钥780。例如,在SGX实施方式实施例中,执行单元可操作用于确定当前SGX域控制结构(SDCS)具有对受保护容器页的控制,所述当前SDCS可以具有能够迁移的SGX密钥、计数器和加密元数据,尽管本发明的范围不限于此。可替代地,在一些实施例中,可以省略(例如,可能不需要、可通过另一条指令执行等)这种安全或验证检查。
图8是可操作用于执行受保护容器页加密和将经加密副本存储到受保护容器存储器之外指令851的实施例的处理器812的实施例的框图。处理器包括解码单元854、执行单元855以及(可选地)一组寄存器867(例如,通用寄存器)。除非指明或以其他方式清楚地显现,可选地,这些组件可以具有图6的相应命名组件的特性中的一些或全部特性。为了避免使描述模糊,将主要在不重复所有(可选地)共同特性情况下对不同和/或附加特性进行描述。此外,在一些实施例中,处理器812可以用于图1的源计算机系统100中。可替代地,处理器812可以用于类似或不同的计算机系统中。
解码单元854可以接收指令851。在一些实施例中,指令可以是特权级指令,所述特权级指令仅可在特权执行级下而不是在非特权或用户执行级下执行。在一些实施例中,指令可以指示附加指令指定信息874,尽管这不是必须的。例如,在SGX实施方式实施例中,指令可以是特权级ENCLS指令,并且可以将通用寄存器EAX隐式地指示为具有“2Ah”的叶子函数索引值(其用于指示存储来自EPC的加密页操作以及使页在EPC中可读操作),尽管本发明的范围不限于此。尽管可以以一般方式来使用指令,但是一方面,这种特权软件可能在受保护容器正在运行的同时结合对受保护容器的实时迁移使用指令来将写保护页(例如,通过如本文公开的之前写保护指令来进行写保护的页)的经加密副本存储到受保护容器存储器之外(例如,存储到常规存储器中)。
在一些实施例中,指令可以指示受保护容器存储器806的写保护页808。在不同实施例中,可以以不同方式来指示写保护页。在一些实施例中,指令可以明确指定(例如,通过一个或多个字段或位集合)或以其他方式指示(例如,隐式指示)用于存储写保护页808的有效地址或其他指示875的寄存器(例如,通用寄存器867之一)。作为一个具体示例,在SGX实施方式实施例中,隐式通用寄存器RCX可以存储将被存储到EPC之外(例如,存储到常规存储器中)的写保护EPC页的有效地址。如所示出的,在一些实施例中,可选地,受保护容器存储器806可以处于与处理器耦合的系统存储器870中(例如,在系统存储器的硬件预留部分中)。可替代地,可选地,受保护容器存储器806可以是处理器的一个或多个高速缓存或其他管芯上存储设备。组合也是可能的。作为一个具体示例,在SGX实施方式实施例中,受保护容器存储器可以是飞地页高速缓存(EPC)。
执行单元855与解码单元和可选的通用寄存器867耦合。执行单元响应于受保护容器页写保护指令而可操作用于确保在由硬件的受保护容器存储器的页具有写保护状态的同时不存在对受保护容器存储器的写保护页的执行可写引用。如所示出的,执行单元可以包括可以与TLB跟踪逻辑891耦合的可写引用跟踪器单元890。可写引用跟踪器逻辑可操作用于与TLB跟踪逻辑通信以便确保不存在对受保护容器存储器的写保护页的可写引用。可选地,这可以如本文中其他地方描述的那样或通过其他方式执行。在一些实施例中,可选地,可以使用ETRACK指令和相关联机制来确保在将页写出到主存储器中之前从TLB中删除了对被迁移页的写入映射。通过示例的方式,可以使用ETRACK指令来将微架构跟踪器逻辑配置成用于检测在执行ETRACK指令时在飞地中执行的所有逻辑处理器何时已经退出了飞地以及因此何时已经驱逐了所有TLB条目(例如,可以在退出飞地时驱逐在飞地执行期间创建的TLB条目)。
执行单元响应于受保护容器页写保护指令而还可操作用于对受保护容器存储器的所指示的写保护页808的副本进行加密。如所示出的,执行单元可以包括用于执行这种加密的加密单元818(例如,其可以是图1的密码单元118的一部分)。
执行单元进一步可操作用于:在已经确保不存在对由硬件执行的受保护容器存储器的页的可写引用之后,将受保护容器存储器的写保护页的经加密副本887存储到处于受保护容器存储器806之外的目的地位置886。在一些实施例中,目的地位置可以处于如例如用于存储用户级应用(例如,互联网浏览器、数据库应用、文字处理应用等)的存储器等常规存储器中。在一些实施例中,受保护容器存储器中的写保护页可以处于处理器预留存储器中,而加密密钥可以存储在处理器预留存储器之外。在一些实施例中,指令可以明确指定或以其他方式指示对目的地存储位置的指示885(如例如,通过具有用于存储这种指示的指定或隐式寄存器)。执行单元进一步可操作用于:在写保护页的经加密副本887已经被存储到受保护容器存储器之外的所指示的目的地位置886(例如,在作为非处理器预留存储器的常规存储器中)之后,将受保护容器存储器806中的写保护页808留置(leave)于写保护状态(所述写保护状态还是有效且可读的(例如,如与被无效化相反))。允许写保护页保持有效且可读可以提供如本文中其他地方描述的优点,如例如,允许对页进行读取、减少实时迁移之后的停机时间等。
在一些实施例中,可选地,执行单元可操作用于存储被存储在受保护容器存储器之外的写保护页808的版本信息889。例如,执行单元可以包括用于存储版本信息889的页版本存储单元892。在一些实施例中,指令可以指示用于存储受保护容器存储器中的页的版本信息的版本页888。可替代地,代替版本页,可以使用另一个结构来存储版本信息。在一些实施例中,指令可以明确指定或以其他方式指示用于存储版本页888或版本结构的有效地址或其他指示876的寄存器(例如,通用寄存器867之一)。作为一个具体示例,在SGX实施方式实施例中,隐式通用寄存器RDX可以存储VAX页槽的有效地址,尽管本发明的范围不限于此。一方面,VAX页可以表示用于存储被存储在EPC之外的写保护页的版本阵列信息的专用类型的版本阵列页并且不同于用于存储被存储在EPC之外的无效页的版本阵列信息的VA页。在其他实施例中,版本信息可以存储在其他结构(例如,存储器中的受保护结构、管芯上受保护结构等)中的其他类型的页中。版本信息可以有助于防范对加密页的重放。可替代地,对于给定实施方式,可能不旨在或不期望提供对重放的这种防范,并且可选地,可以省略这种版本信息。
在一些实施例中,可选地,执行单元可操作用于在将经加密副本887存储到受保护容器存储器之外的位置中之前执行一项或多项安全或验证检查。如所示出的,执行单元可以包括安全检查单元883。在一些实施例中,安全检查单元可操作用于检查或验证能够迁移的密钥结构879具有对将存储到受保护容器存储器之外的写保护容器页808的控制,所述能够迁移的密钥结构具有能够迁移的密钥880。在一些实施例中,可选地,这还可以包括检查或验证能够迁移的密钥结构具有对将用于存储版本信息的版本页888或其他版本存储结构的控制。例如,在SGX实施方式实施例中,这可以包括确定当前SGX域控制结构(SDCS)具有对写保护页和VAX页的控制,所述当前SDCS可以具有能够迁移的SGX密钥、计数器和加密元数据,尽管本发明的范围不限于此。可替代地,在一些实施例中,可以省略(例如,可能不需要、可通过另一条指令执行等)这种安全或验证检查。
在一些实施例中,可选地,指令可以明确指定或以其他方式指示将用于存储存出写保护页808的元数据878的元数据结构811。在一些实施例中,指令851可以明确指定或以其他方式指示用于存储元数据结构811的有效地址或其他指示884的寄存器(例如,通用寄存器867之一)。作为一个具体示例,在SGX实施方式实施例中,指令可以指示(PCMD)结构,尽管本发明的范围不限于此。执行单元响应于指令而可操作用于将与存出写保护页有关的元数据878存储到元数据结构中。如所示出的,执行单元可以包括可选的元数据存储单元882。通过示例的方式,元数据存储单元可操作用于存储元数据,如例如,与所指示页相对应的页类型、读取-写入-执行权限状态、挂起状态、修改后状态等及其各种组合。这种元数据可能用于确保在页被重新加载(例如,到被迁移的受保护容器中)时的元数据完整性。可替代地,在其他实施例中,可选地,可以省略(例如,可能不需要、可通过另一条指令执行等)对元数据的这种存储。
图9是可操作用于执行受保护容器页解除写保护和加密页副本无效化指令952的实施例的处理器912的实施例的框图。处理器包括解码单元954、执行单元955以及(可选地)一组寄存器967(例如,通用寄存器)。除非指明或以其他方式清楚地显现,可选地,这些组件可以具有图6的相应命名组件的特性中的一些或全部特性。为了避免使描述模糊,将主要在不重复所有(可选地)共同特性情况下对不同和/或附加特性进行描述。此外,在一些实施例中,处理器912可以用于图1的源计算机系统100中。可替代地,处理器912可以用于类似或不同的计算机系统中。
解码单元954可以接收指令952。在一些实施例中,指令可以是特权级指令,所述特权级指令仅可在特权执行级下而不是在非特权或用户执行级下执行。在一些实施例中,指令可以指示附加指令指定信息974,尽管这不是必须的。例如,在SGX实施方式实施例中,指令可以是特权级ENCLS指令,并且可以将通用寄存器EAX隐式地指示为具有“29h”的叶子函数索引值(其用于指示EPC页解除写保护操作),尽管本发明的范围不限于此。尽管可以以一般方式来使用指令,但是一方面,这种特权软件可能在受保护容器正在运行的同时结合对受保护容器的实时迁移使用指令来解决写保护页上的错误(例如,在对写保护页的尝试写入之后)。
在一些实施例中,指令可以指示受保护容器的写保护页908。在一些实施例中,指令可以明确指定或以其他方式指示用于存储写保护页908的有效地址或其他指示975的寄存器(例如,通用寄存器967之一)。作为一个具体示例,在SGX实施方式实施例中,隐式通用寄存器RCX可以存储写保护EPC页的有效地址。如所示出的,在一些实施例中,可选地,受保护容器存储器906可以处于与处理器耦合的系统存储器970中(例如,在系统存储器的硬件预留部分中)。可替代地,可选地,受保护容器存储器906可以是处理器的一个或多个高速缓存或其他管芯上存储设备。这种方式的组合也是适合的。作为一个具体示例,在SGX实施方式实施例中,受保护容器存储器可以是飞地页高速缓存(EPC)。
执行单元955与解码单元和可选的通用寄存器967耦合。执行单元响应于受保护容器页写保护指令而可操作用于对受保护容器存储器的所指示页908(其可以处于或者系统存储器或者管芯上高速缓存或其他管芯上存储设备中)进行解除写保护。一方面,这可以将页留置于有效且可用状态,在所述状态下,允许读取和写入两者。在一些实施例中,执行单元可以具有解除写保护单元993,所述解除写保护单元可操作用于通过将写保护指示符977(其对应于所指示页908)配置成指示页是非写保护的来对页进行解除写保护。以上针对写保护指示符而提及的相同类型的写保护指示符是适合的。在一些实施例中,同一写保护指示符可以用于两条指令。解除写保护指令基本上可以执行与写保护指令相反的指示符配置。如所示出的,在一些实施例中,可选地,写保护指示符可以包括在受保护容器页安全元数据结构(PSPMS)909中,所述PSPMS用于将页的元数据(例如,安全和访问控制元数据)存储在受保护容器存储器中。在SGX实施方式实施例中,执行单元可以通过冲刷飞地页高速缓存映射(EPCM)中的写保护(WP)位以便指示飞地页高速缓存(EPC)的写保护飞地页以及EPCM中的非管理字段是非写保护的来对所述页进行解除写保护,尽管本发明的范围不限于此。
在一些实施例中,可选地,执行单元可操作用于使受保护容器存储器的写保护页的处于受保护容器存储器之外的副本无效。在一些实施例中,可以使用与写保护页908相对应的版本989。在一些实施例中,执行单元响应于指令而可操作用于改变与页相对应的版本。如所示出的,执行单元可以包括用于改变写保护页的版本的版本改变单元994。如所示出的,可选地,版本可以存储在版本页988中。可替代地,可选地,可以使用存储器中的另一个受保护数据结构或者管芯上受保护结构来存储版本。通过示例的方式,执行单元可以例如通过冲刷与迁移版本阵列页中的写保护页相对应的条目或者以其他方式改变版本从而使得所述版本将不匹配来使所述条目无效。
在一些实施例中,指令可以明确指定或以其他方式指示用于存储写保护页的待改变或待无效化的版本989的迁移版本阵列槽的有效地址或其他指示976的寄存器(例如,通用寄存器967之一)。作为一个具体示例,在SGX实施方式实施例中,隐式通用寄存器RDX可以存储迁移版本阵列槽的有效地址,尽管本发明的范围不限于此。在其他实施例中,版本信息可以存储在其他结构(例如,存储器中的受保护结构、管芯上受保护结构等)中的其他类型的页中。
有利地,因为只可以存在写保护页的一个真实副本或版本,所以这可以有助于提供附加安全性。当写保护页变脏或者被修改时,可以使写保护页的其他副本无效,从而使得页的变脏或被修改副本是页的唯一真实副本或版本。这还可以有助于防范对加密页的重放。可替代地,对于给定实施方式,可能不旨在或不期望提供这种防范,并且可选地,可以省略对副本的这种无效化。此外,除了使用版本信息之外,还设想了使页的处于受保护容器之外的副本无效的其他方式。
在一些实施例中,可选地,执行单元可操作用于在使页的处于受保护容器之外的副本无效之前执行一项或多项安全或验证检查。如所示出的,执行单元可以包括安全检查单元983。在一些实施例中,安全检查单元可操作用于检查或验证正确的写保护页被无效化。例如,执行单元可操作用于将页的版本与被无效化的页的版本进行比较以便确保正确的版本信息被冲刷或以其他方式被改变。可选地,如果页是无效的或者如果版本与存储在版本页中的值不匹配,则指令可能失败。可替代地,在一些实施例中,可以省略(例如,可能不需要、可通过另一条指令执行等)这种安全或验证检查。
在一些实施例中,可选地,处理器的解码器还可操作用于对受保护容器版本页或结构创建指令(例如,图6中的指令653)进行解码。在一些实施例中,受保护容器版本页或结构创建指令可以明确指定或以其他方式指示用于存储受保护容器存储器中的页的有效地址或其他指示的寄存器(例如,通用寄存器)。在一些实施例中,页可以是可供用于新页的无效页。处理器还可以包括执行单元,所述执行单元响应于指令而可操作用于创建用于保持版本信息的版本页或结构。在一些实施例中,可以在受保护容器存储器中在受保护容器存储器中的所指示页处(例如,在所指示的有效地址处)创建版本页。在一些实施例中,这可以包括使页归零。在一些实施例中,版本页可以是专用于存储页的版本信息的特殊类型的页,所述页的加密副本被存储在受保护容器存储器之外而页保持以有效且可读状态存储在受保护容器存储器中。在一些实施例中,所创建的页可以是空页,随后,版本信息可以(例如,根据不同指令)存储到所述空页中。在一些实施例中,响应于指令的执行单元还可以对如例如EPCM等受保护容器页元数据结构(PCPMS)的一个或多个条目、字段或其他部分进行初始化或配置。通过示例的方式,这可以包括:指示页是版本类型的页,将页设置为有效以及配置页的读物-写入-执行权限。
示例性核架构、处理器以及计算机架构
处理器核能够以不同的方式实现,用于不同的目的以及在不同的处理器中。例如,这种核的实施方式可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实施方式可以包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这种不同处理器导致不同计算机系统架构,其可以包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中的分开管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在这种情况下,这种协处理器有时被称为专用逻辑,比如,集成图形和/或科学(吞吐量)逻辑或专用核);以及4)芯片上的系统,所述系统可以包括在相同裸片上的所描述的CPU(有时称为(多个)应用核或(多个)应用处理器)、上述协处理器以及附加功能。接下来描述示例性核架构,之后是对示例性处理器和计算机架构的描述。
示例性核架构
有序和无序核框图
图10A是框图,展示了根据本发明的实施例的示例性有序流水线和示例性寄存器重命名无序发出/执行流水线两者。图10B是框图,展示了根据本发明的实施例的将包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名无序发出/执行架构核两者。图10A和图10B中的实线框展示了有序流水线和有序核,而对虚线框的可选添加展示了寄存器重命名无序发出/执行流水线和核。假定有序方面是无序方面的子集,将描述无序方面。
在图10A中,处理器流水线1000包括获取阶段1002、长度解码阶段1004、解码阶段1006、分配阶段1008、重命名阶段1010、调度(也被称为分派或发出)阶段1012、寄存器读取/存储器读取阶段1014、执行阶段1016、回写/存储器写入阶段1018、异常处理阶段1022以及提交阶段1024。
图10B示出了处理器核1090,所述处理器核包括耦合至执行引擎单元1050的前端单元1030,并且所述执行引擎单元和前端单元两者都耦合至存储器单元1070。核1090可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或可替代核类型。作为又另一个选项,核1090可以是专用核,如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1030包括耦合至指令高速缓存单元1034的分支预测单元1032,所述指令高速缓存单元耦合至指令转换后备缓冲器(TLB)1036,所述指令转换后备缓冲器耦合至指令获取单元1038,所述指令获取单元耦合至解码单元1040。解码单元1040(或解码器)可以对指令进行解码并且生成从原始指令中解码出的、或以其他方式反映原始指令或从原始指令衍生出的一个或多个微运算、微代码入口点、微指令、其他指令或其他控制信号作为输出。解码单元1040可以使用各种不同的机制来实施。合适机制的示例包括但不限于:查找表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1090包括微代码ROM或存储用于某些宏指令的微代码的其他介质(例如,在解码单元1040中或者在前端单元1030内)。解码单元1040耦合至执行引擎单元1050中的重命名/分配器单元1052。
执行引擎单元1050包括耦合至引退单元1054的重命名/分配器单元1052和一组一个或多个调度器单元1056。(多个)调度器单元1056表示任何数量的不同调度器,包括保留站、中央指令窗口等。(多个)调度器单元1056耦合至(多个)物理寄存器堆单元1058。(多个)物理寄存器单元1058各自表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,比如,标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为有待执行的下一指令的地址的指令指针)等。在一个实施例中,(多个)物理寄存器堆单元1058包括向量寄存器单元、写入掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、以及通用寄存器。(多个)物理寄存器堆单元1058与引退单元1054重叠以说明可实施寄存器重命名和无序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用将来的(多个)堆、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。引退单元1054和(多个)物理寄存器堆单元1058耦合至(多个)执行群集1060。(多个)执行群集1060包括一组一个或多个执行单元1062和一组一个或多个存储器访问单元1064。执行单元1062可以执行各种运算(例如,移位、加法、减法、乘法)以及对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)执行。尽管一些实施例可包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可只包括一个执行单元或包括全都执行全部功能的多个执行单元。(多个)调度器单元1056、(多个)物理寄存器堆单元1058、以及(多个)执行集群1060被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,所述流水线各自具有其本身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群,并且在分开的存储器访问流水线的情况下,实现了其中只有所述流水线的执行集群具有(多个)存储器访问单元1064的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一者或多者可以是无需发出/执行流水线,并且其余的是有序流水线。
所述一组存储器访问单元1064耦合至存储器单元1070,所述存储器单元包括耦合至数据高速缓存单元1074的数据TLB单元1072,所述数据高速缓存单元耦合至2级(L2)高速缓存单元1076。在一个示例性实施例中,存储器访问单元1064可以包括各自耦合至存储器单元1070中的数据TLB单元1072的加载单元、存储地址单元、以及存储数据单元。指令高速缓存单元1034进一步耦合至存储器单元1070中的2级(L2)高速缓存单元1076。L2高速缓存单元1076耦合至一个或多个其他级的高速缓存并且最终耦合至主存储器。
通过示例的方式,示例性寄存器重命名无序发出/运行核架构可以实施流水线1000如下:1)指令获取1038执行获取和长度解码阶段1002和1004;2)解码单元1040执行解码阶段1006;3)重命名/分配器单元1052执行分配阶段1008和重命名阶段1010;4)(多个)调度器单元1056执行调度阶段1012;5)(多个)物理寄存器堆单元1058和存储器单元1070执行寄存器读取/存储器读取阶段1014;执行集群1060实施执行阶段1016;6)存储器单元1070和(多个)物理寄存器堆单元1058执行回写/存储器写入阶段1018;7)各种单元可以涉及异常处理阶段1022;以及8)引退单元1054和(多个)物理寄存器堆单元1058执行提交阶段1024。
核1090可以支持一个或多个指令集(例如,x86指令集(具有已经添加了较新版本的一些扩展);加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的附加扩展,比如NEON)),包括本文所描述的(多个)指令。在一个实施例中,核1090包括支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用打包数据来执行许多多媒体应用所使用的操作。
应当理解,核可以支持多线程化(执行两个或更多个并行的操作或线程集),并且可以以各种方式来完成多线程化,所述各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分获取和解码以及此后诸如超线程化技术中的同步多线程化)。
虽然在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示实施例还包括分开的指令和数据高速缓存单元1034/1074和共享的L2高速缓存单元1076,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,所述系统可以包括在核和/或处理器外部的内部高速缓存和外部高速缓存的组合。可替代地,所有高速缓存都可以在核和/或处理器的外部。
特定示例性有序核架构
图11A和图11B展示了更特定的示例性有序核架构的框图,所述核是芯片中的多个逻辑块(包括相同类型和/或不同类型的其他核)之一。根据应用,逻辑块通过具有某些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑的高带宽互连网络(例如,环形网络)进行通信。
图11A是根据本发明的实施例的单个处理器核、连同其与管芯上互连网络1102的连接以及连同其2级(L2)高速缓存1104的本地子集的框图。在一个实施例中,指令解码器1100支持具有打包数据指令集扩展的x86指令集。L1高速缓存1106允许对标量和向量单元中的高速缓存存储器的低等待时间访问。虽然在一个实施例中(为了简化设计),标量单元1108和向量单元1110使用分开的寄存器组(分别为标量寄存器11112和向量寄存器1114),并且在它们之间传送的数据被写入存储器并且然后从1级(L1)高速缓存1106中回读,但本发明的替代实施例可以使用不同的途径(例如,使用单个寄存器组或者包括允许数据在两个寄存器堆之间传送而未被写入和回读的通信路径)。
L2高速缓存1104的局部子集是全局L2高速缓存的一部分,所述全局L2高速缓存被划分为多个分开的局部子集,每个处理器核一个。每个处理器核具有到其本身的L2高速缓存1104的局部子集的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集1104中并且可以被快速访问,与其他处理器核并行地访问其局部L2的高速缓存子集。由处理器核写入的数据被存储在其本身的L2高速缓存子集1104中,并且如果需要,则从其他子集冲刷掉。环形网络确保共享数据的相干性。环形网络是双向的,允许诸如处理器核、L2高速缓存和其他逻辑块的媒介在芯片内彼此通信。每个环形数据路径在每个方向为1012位宽。
图11B是根据本发明的实施例的图11A中的处理器核的一部分的展开视图。图11B包括L1高速缓存1104的L1数据高速缓存1106A部分、以及关于向量单元1110和向量寄存器1114的更多细节。具体地,向量单元1110是16位宽向量处理单元(VPU)(参见16位宽ALU1128),所述向量处理单元执行整数、单精度浮点和双精度浮点指令中的一者或多者。VPU支持用混合单元1120对寄存器输入进行混合、用转换单元1122A和1122B进行数字转换、以及用复制单元1124对存储器输入进行复制。写入掩码寄存器1126允许预测结果向量写入。
具有集成存储器控制器和图形的处理器
图12是根据本发明的实施例的可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器1200的框图。图12中的实线框展示了具有单个核1202A、系统代理1210、一组一个或多个总线控制器单元1216的处理器1200,而对虚线框的可选添加展示了具有多个核1202A至1202N、系统代理单元1210中一组一个或多个集成存储器控制器单元1214以及专用逻辑1208的可替代处理器1200。
因此,处理器1200的不同实施方式可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑1208和作为一个或多个通用核(例如,通用有序核、通用无序核、两者的组合)的核1202A至1202N的CPU;2)协处理器,其中,核1202A至1202N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中,核1202A至1202N是大量通用有序核。因此,处理器1200可以是通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器等。处理器可以在一个或多个芯片上实施。处理器1200可以是一个或多个衬底的一部分和/或可以使用如例如BiCMOS、CMOS或NMOS的多种加工技术中的任何一种技术在一个或多个衬底上实施。
存储器层级包括核内的一个或多个级别的高速缓存,一组一个或多个共享高速缓存单元1206、以及外部存储器(未示出),所述外部存储器耦合至所述一组集成存储器控制器单元1214。所述一组共享高速缓存单元1206可以包括一个或多个中级高速缓存,比如,2级(L2)、3级(L3)、4级(L4)、或其他级别的高速缓存、终极高速缓存(LLC)和/或其组合。虽然在一个实施例中,基于环形的互连单元1212将集成图形逻辑1208、所述一组共享高速缓存单元1206、以及系统代理单元1210/(多个)集成存储器控制器单元1214互连,但替代实施例可以使用任何数量的用于互连这种单元的已知技术。在一个实施例中,在一个或多个高速缓存单元1206与核1202A至1202N之间保持相干性。
在一些实施例中,核1202A至1202N中的一个或多个核能够进行多线程化。系统代理1210包括协调和操作核1202A至1202N的那些组件。系统代理单元1210可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核1202A至1202N和集成图形逻辑1208的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
就架构指令集而言,核1202A至1202N可以是同构或异构的;也就是说,核1202A至1202N中的两个或更多个核能够执行相同的指令集,而其他核能够仅执行所述指令集的子集或执行不同的指令集。
示例性计算机架构
图13至图21是示例性计算机架构的框图。本领域中已知的用于膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备和各种其他电子设备的其他系统设计和配置也是合适的。一般,能够结合本文所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备通常是合适的。
现在参照图13,示出了根据本发明的一个实施例的系统1300的框图。系统1300可以包括耦合至控制器中枢1320的一个或多个处理器1310、1315。在一个实施例中,控制器中枢1320包括图形存储器控制器中枢(GMCH)1390和输入/输出中枢(IOH)1350(其可以在分开的芯片上);GMCH 1390包括存储器和图形控制器,存储器1340和协处理器1345耦合至所述图形控制器;IOH 1350将输入/输出(I/O)设备1360耦合至GMCH 1390。可替代地,存储器和图形控制器中的一者或两者被集成在处理器(如本文所述)内,存储器1340和协处理器1345通过IOH 1350直接耦合至单个芯片中的处理器1310和控制器中枢1320。
图13中用虚线表示附加处理器1315的可选特性。每个处理器1310、1315可以包括本文描述的一个或多个处理核,并且可以是处理器1200的某个版本。
存储器1340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器中枢1320经由多点总线(例如,前端总线(FSB)、如快速路径互连(QPI)等点对点接口或类似连接件1395)与(多个)处理器1310、1315通信。
在一个实施例中,协处理器1345是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1320可以包括集成图形加速器。
在包括架构、微架构、热学、功率消耗特性等等的指标度量范围方面,在物理资源1310、1315之间可以存在各种差异。
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。协处理器指令可以被嵌入在指令中。处理器1310将这些协处理器指令识别为属于应由附接的协处理器1345执行的类型。相应地,处理器1310将协处理器总线或其他互连上的这些协处理器指令(或表示协处理器指令的控制信号)发出到协处理器1345。(多个)协处理器1345接受并执行接收到的协处理器指令。
现在参照图14,示出了根据本发明的实施例的第一更具体示例性系统1400的框图。如图14所示,多处理器系统1400是点对点互连系统,并且包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480各自可以是处理器1200的某个版本。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一实施例中,处理器1470和1480分别是处理器1310、协处理器1345。
处理器1470和1480被示出为分别包括集成存储器控制器(IMC)单元1472和1482。处理器1470还包括作为其总线控制器单元的一部分的点对点(P-P)接口1476和1478;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470、1480可以使用P-P接口电路1478、1488经由点对点(P-P)接口1450交换信息。如图14所示,IMC 1472和1482将处理器耦合至对应存储器(即,存储器1432和存储器1434)上,所述存储器可以是主存储器的本地附接至对应处理器上的部分。
处理器1470、1480可以各自使用点对点接口电路1476、1494、1486、1498经由单独的P-P接口1452、1454来与芯片组1490交换信息。可选地,芯片组1490可以经由高性能接口1439与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功耗模式下,则任一或两个处理器的本地高速缓存信息可以被存储在所述共享高速缓存中。
芯片组1490可以经由接口1496耦合至第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(PCI)总线,或如PCI Express总线或另一种第三代I/O互连总线等总线,尽管本发明的范围不限于此。
如图14所示,不同I/O设备1414可以连同总线桥接器1418耦合至第一总线1416,所述总线桥接器可以将第一总线1416耦合至第二总线1420。在一个实施例中,一个或多个附加处理器1415(例如,协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、字段可编程门阵列、或任何其他处理器)被耦合至第一总线1416。在一个实施例中,第二总线1420可以是低引脚数(LPC)总线。在一个实施例中,各个设备可以耦合至第二总线1420,所述设备包括例如键盘和/或鼠标1422、通信设备1427、以及可以包括指令/代码和数据1430的存储单元1428(比如,磁盘驱动器或者其他大容量存储设备)。进一步地,音频I/O 1424可以耦合至第二总线1420。注意,其他架构是可能的。例如,替代图14的点对点架构,系统可以实施多站式总线或其他这种架构。
现在参照图15,示出了根据本发明的实施例的第二更具体示例性系统1500的框图。图14和图15中的相同元件具有相同的参考数字,并且已经从图15中省略了图14的某些方面以避免使图15的其他方面模糊。
图15展示了处理器1470、1480可以分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括集成存储器控制器单元并且包括I/O控制逻辑。图15展示了不仅存储器1432、1434被耦合至CL 1472、1482,而且I/O设备1514也被耦合至控制逻辑1472、1482。传统I/O设备1515被耦合至芯片组1490。
现在参照图16,示出了根据本发明的实施例的SoC 1600的框图。图12中的相似元件具有相同的参考数字。此外,虚线框是关于更先进的SoC的可选特征。在图16中,(多个)互连单元1602被耦合至:应用处理器1610,所述应用处理器包括一组一个或多个核152A至152N和(多个)共享高速缓存单元1206;系统代理单元1210;(多个)总线控制器单元1216;(多个)集成存储器控制器单元1214;一组一个或多个协处理器1620,所述协处理器可以包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(SRAM)单元1630;直接存储器访问(DMA)单元1632;以及显示单元1640,所述显示单元用于耦合至一个或多个外部显示器。在一个实施例中,(多个)协处理器1620是专用处理器,如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
可以在硬件、软件、固件或这种实施方式的组合中实施本文公开的机制的实施例。本发明的实施例可以被实施为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。
如图14所示的代码1430等程序代码可以被应用于输入指令以执行本文所述的功能并且生成输出信息。输出信息能够以已知的方式应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,如例如:数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器。
程序代码可以以高级程序或面向对象的编程语言来实施以便与处理系统通信。如果期望的话,程序代码还可以以汇编或机器语言来实施。事实上,本文描述的机制的范围不限于任何特定的编程语言。在任何情况下,所述语言可以是编译或解释语言。
可由机器可读介质上所存储的代表性指令实现至少一个实施例的一个或多个方面,所述指令表示处理器内的各种逻辑,所述指令当被机器读取时使所述机器制作用于执行本文描述的技术的逻辑。这种表示(被称为“IP核”)可以被存储在有形机器可读介质上并提供给各顾客或制造设施以加载到实际制作所述逻辑或处理器的制作机器中。
这种机器可读存储介质可以包括但不限于:由机器或设备制造或形成的物品的非暂态有形安排,包括如硬盘等存储介质;任何其他类型的盘,包括软盘、光盘、致密盘只读存储器(CD-ROM)、可重写致密盘(CD-RW)和磁光盘;半导体设备,比如,只读存储器(ROM);随机存取存储器(RAM),比如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM);可擦除可编程只读存储器(EPROM);闪存存储器;电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(比如,硬件描述语言(HDL))的非暂态有形机器可读介质,所述非暂态有形机器可读介质限定本文描述的结构、电路、设备、处理器和/或系统特征。这种实施例也可以被称为程序产品。
仿真(包括二进制转换、代码变形等)
在一些情况下,可以使用指令转换器将指令从源指令集转换为目标指令集。例如,指令转换器可以将指令转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、仿真、或以其他方式转换为有待由核处理的一个或多个其他指令。可以在软件、硬件、固件或其组合中实施指令转换器。指令转换器可以处于处理器上、处理器外、或者部分地处于处理器上并且部分地处于处理器外。
图17是框图,对照了根据本发明的实施例的对用于将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用。在所示实施例中,指令转换器是软件指令转换器,然而可替代地,可以在软件、固件、硬件或其各种组合中实施指令转换器。图17示出了可以使用x86编译器1704来编译高级语言1702的程序以生成x86二进制代码1706,所述x86二进制代码可以由具有至少一个x86指令集核的处理器1716本机执行。具有至少一个x86指令集核的处理器1716表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的因特尔处理器基本相同功能的任何处理器:(1)因特尔x86指令集核的指令集的实质部分、或(2)目标代码版本的应用或目标是在具有至少一个x86指令集核的因特尔处理器上运行的其他软件,以便实现与具有至少一个x86指令集核的因特尔处理器基本相同的结果。x86编译器1704表示可操作用于生成x86二进制代码1706(例如,目标代码)的编译器,所述x86二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核1716的处理器上执行。类似地,图17示出了可以使用替代指令集编译器1708来编译生成替代指令集二进制代码1710的高级语言1702的程序,可以由不具有至少一个x86指令集核1714的处理器(例如,具有执行加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集的多个核的处理器)本机执行所述替代指令集二进制代码。指令转换器1712用于将x86二进制代码1706转换为可由不具有x86指令集核1714的处理器本机执行的代码。此经转换的代码不太可能与替代指令集二进制代码1710相同,因为很难制作能够实现这一点的指令转换器;然而,经转换的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1712表示通过仿真、模拟或任何其他进程允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1706的软件、固件、硬件或其组合。
可选地,针对图5和图6中任一者描述的组件、特征和细节还可以适用于图7至图9中的任一者。此外,可选地,针对所述装置中的任一者描述的组件、特征和细节还可以适用于在实施例中可由和/或用这种装置执行的任何方法。本文所述处理器中的任一个可包括在本文(例如,图13至图16)公开的计算机系统中的任一个中。在一些实施例中,计算机系统可以包括动态随机存取存储器(DRAM)。可替代地,计算机系统可以包括某种类型的不需要刷新的易失性存储器或闪存。本文公开的指令可使用本文示出的在本文示出的系统中的任何系统上的具有本文示出的微架构中的任何微架构的处理器中的任何处理器来执行。
在说明书和权利要求书中,可能使用术语“耦合”和“连接”及其衍生词。这些术语并不旨在作为彼此的同义词。而是,在实施例中,“连接”可以用于指示两个或更多个元件直接物理和/或电气接触。“耦合”可以意指两个或更多个元件彼此直接物理和/或电气接触。然而,“耦合”还可以意指两个或更多个元件并非彼此直接接触,但仍彼此协作或交互。例如,执行单元可以通过一个或多个中间组件与寄存器和/或解码单元耦合。在附图中,箭头用于示出连接和耦合。
可能已使用术语“和/或”。如本文所使用的,术语“和/或”是指一个或另一个或两者(例如,A和/或B意指A或B或A和B两者)。
在以上描述中,已经阐述了许多特定细节以便提供对实施例的透彻理解。然而,可以在没有这些具体细节中的一些具体细节的情况下实践其他实施例。本发明的范围不是通过上面提供的具体实施例来确定,而是由下面的权利要求来确定。在其他情况下,已知的电路、结构、设备和操作已经以框图形式和/或没有详细地示出,以避免模糊对说明书的理解。在认为适当的情况下,参考数字或参考数字的端点部分已经在附图中重复,以指示对应的或类似的元件,所述元件可以具有相似或相同的特性,除非另有说明或清楚地显现。
某些操作可以由硬件组件执行、或者可以体现在机器可执行或电路可执行指令中,所述指令可以用于引起和/或导致机器、电路或硬件组件(例如,处理器、处理器的一部分、电路等)编程有执行这些操作的指令。可选地,还可以通过硬件和软件的组合来执行操作。可以包括特定或具体电路或其他逻辑(例如,可能与固件和/或软件组合的硬件)的处理器、机器、电路或硬件可操作用于执行和/或处理指令并且响应于指令而存储结果。
一些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。介质可以包括以机器可读的形式提供(例如,存储)信息的机制。机器可读介质可以提供或已经在其上存储有指令或指令序列,所述指令或指令序列如果和/或当被机器执行时可操作用于使所述机器执行和/或导致所述机器执行本文公开的一种或多种操作、方法或技术。
在一些实施例中,机器可读介质可以包括非暂态机器可读存储介质。例如,非暂态机器可读存储介质可以包括软盘、光存储介质、光盘、光数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、非暂态数据存储设备等。非暂态机器可读存储介质不由暂态传播信号组成。在一些实施例中,存储介质可以包括有形介质,所述有形介质包括固体物质。
适合机器的示例包括但不限于:通用处理器、专用处理器、数字逻辑电路、集成电路等。适合机器的其他示例包括:计算机系统或包括处理器、数字逻辑电路或集成电路的其他电子设备。这种计算系统或电子设备的示例包括但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。
贯穿本说明书,对“一个实施例”、“实施例”,“一个或多个实施例”、“一些实施例”的提及例如指示特定特征可以在本发明的实践中被包括但未必是必须的。类似地,在说明书中,为了简化本公开并辅助理解各个发明性方面,各种特征有时在单个实施例、图或对其的描述中分组在一起。然而,本公开的方法并不被解释为反映本发明要求比每个权利要求中明确陈述的更多特征的意图。相反,正如以下的权利要求书所反映的,发明性方面在于少于单个公开的实施例的全部特征。因此,据此明确地将具体实施方式之后的权利要求结合到具体实施方式中,其中,每一项权利要求独立地代表本发明的单独实施例。
示例实施例
以下示例涉及进一步的实施例。可以在一个或多个实施例中的任何地方使用示例中的细节。
示例1是一种处理器,所述处理器包括解码单元,所述解码单元用于对指令进行解码。所述指令用于指示受保护容器存储器的页,并且用于指示在所述受保护容器存储器之外的存储位置。所述处理器还包括与所述解码单元耦合的执行单元。所述执行单元响应于所述指令而用于确保在所述受保护容器存储器的所述页具有写保护状态的同时在所述处理器中未缓存有针对所述受保护容器存储器的所述页的可写权限。所述执行单元还用于对所述受保护容器存储器的所述页的副本进行加密。所述执行单元进一步用于:在已经确保不存在对所述受保护容器存储器的所述页的可写引用之后,将所述页的经加密副本存储到在所述受保护容器存储器之外的所指示存储位置。所述执行单元还用于在已经将所述页的所述经加密副本存储到在所述受保护容器存储器之外的所述所指示存储位置之后,将所述受保护容器存储器的所述页留置于所述写保护状态,所述页还将是有效且可读的。
示例2包括如示例1所述的处理器,其中,所述解码单元用于对所述指令进行解码,所述指令用于指示所述受保护容器存储器的已经具有所述写保护状态的所述页。
示例3包括如示例1所述的处理器,其中,所述执行单元响应于所述指令而用于对所述受保护容器存储器的所述所指示页进行写保护。
示例4包括如示例1所述的处理器,其中,所述解码单元用于对所述指令进行解码,所述指令用于指示所述受保护容器存储器的将位于处理器预留存储器中的所述页,并且所述指令用于指示将位于所述处理器预留存储器之外的所述存储位置。
示例5包括如示例1所述的处理器,其中,所述执行单元用于通过确保从转换后备缓冲区中删除所述受保护容器存储器的所述页来确保不存在对所述页的可写引用。
示例6包括如示例1至5中任一项所述的处理器,其中,所述执行单元响应于所述指令而用于将具有所述写保护状态的所述页的版本存储在所述受保护容器存储器中。
示例7包括如示例1至5中任一项所述的处理器,其中,所述执行单元响应于所述指令而用于确定:在所述页的所述经加密副本被存储到所述所指示存储位置之前,能够迁移的密钥结构具有对所述受保护容器存储器的所述页的控制,所述能够迁移的密钥结构将具有一个或多个能够迁移的密钥。
示例8包括如示例1至5中任一项所述的处理器,其中,所述解码单元用于对所述指令进行解码,所述指令用于指示页元数据结构。所述执行单元响应于所述指令而用于以所述页元数据结构来存储与所述所指示页相对应的元数据。所述元数据将包括所述页元数据结构中的全部与所述所指示页相对应的以下各项中的多项:页类型、修改状态、读取权限状态、写入权限状态和执行权限状态。
示例9包括如示例1至5中任一项所述的处理器,其中,所述解码单元用于对所述指令进行解码,所述指令用于指示所述受保护容器存储器中的所述页,该页将是飞地页高速缓存中的飞地页的所述页。
示例10包括如示例1至5中任一项所述的处理器,其中,所述解码单元用于对将具有隐式通用寄存器的所述指令进行解码,所述隐式通用寄存器将具有对所述受保护容器存储器的所述页的指示。
示例11包括如示例1至5中任一项所述的处理器,其中,所述解码单元用于对将是特权级指令的所述指令进行解码。
示例12是一种在用于执行操作的处理器中执行一到三条机器指令的方法,所述方法包括:对受保护容器存储器的页进行写保护;确保在所述处理器中未缓存有针对所述受保护容器存储器的所述页的可写权限;以及对所述受保护容器存储器的所述页的副本进行加密。所述操作还包括:在所述确保不存在对所述受保护容器存储器的所述写保护页的可写引用之后,将所述受保护容器存储器的所述页的所述经加密副本存储到在所述受保护容器存储器之外的存储位置;以及在所述将所述受保护容器存储器的所述页的所述经加密副本存储到在所述受保护容器存储器之外的所述存储位置之后,将所述受保护容器存储器的所述写保护页留置于有效且可读状态。
示例13包括如示例12所述的方法,进一步包括:在所述将所述页的所述经加密副本存储到所述存储位置之后,读取所述写保护页。
示例14包括如示例12所述的方法,其中,所述对所述页进行写保护包括配置受保护容器页元数据结构中的写保护指示以指示所述页是写保护的,其中,所述受保护容器页元数据结构存储所述写保护页的安全元数据。
示例15包括如示例14所述的方法,其中,所述配置所述受保护容器页元数据结构中的所述写保护指示包括设置飞地页高速缓存映射中的写保护位。
示例16包括如示例12所述的方法,进一步包括:检测对所述受保护容器存储器的所述写保护页的尝试写入;对所述受保护容器存储器的所述页进行解除写保护;以及使所述页的存储在处于所述受保护容器存储器之外的所述存储位置中的所述经加密副本无效。
示例17包括如示例12所述的方法,其中,所述写保护是响应于执行所述机器指令中的第一机器指令而执行的,并且其中,所述加密、所述确保、所述存储和所述留置的操作是响应于执行所述机器指令中的第二机器指令而执行的。
示例18是一种用于处理指令的系统,所述系统包括:互连;以及处理器,与所述互连相耦合。所述处理器用于接收指令,所述指令用于指示受保护容器存储器的页并且用于指示在所述受保护容器存储器之外的存储位置。所述处理器响应于所述指令而用于确保在所述受保护容器存储器的所述页具有写保护状态的同时不存在对所述受保护容器存储器的所述页的可写引用;并且对所述受保护容器存储器的所述页的副本进行加密。所述处理器还用于:在已经确保不存在对所述受保护容器存储器的所述页的可写引用之后,将所述页的经加密副本存储到在所述受保护容器存储器之外的所指示存储位置;并且在已经将所述页的所述经加密副本存储到在所述受保护容器存储器之外的所述所指示存储位置之后,将所述受保护容器存储器的所述页留置于所述写保护状态,所述页还将是有效且可读的。所述系统还包括与所述互连相耦合的动态随机存取存储器(DRAM)。
示例19包括如示例18所述的系统,其中,所述处理器用于接收所述指令,所述指令用于指示所述受保护容器存储器的已经具有所述写保护状态的所述页。
示例20是一种包括非暂态机器可读存储介质的制品。所述非暂态机器可读存储介质存储一到三条机器指令,所述机器指令如果被机器执行则将使所述机器执行包括以下各项的操作:对受保护容器存储器的页进行写保护;以及确保不存在对所述受保护容器存储器的所述写保护页的可写引用。所述操作还包括:对所述受保护容器存储器的所述页的副本进行加密;以及在所述确保不存在对所述受保护容器存储器的所述写保护页的可写引用之后,将所述受保护容器存储器的所述页的所述经加密副本存储到在所述受保护容器存储器之外的存储位置。所述操作还包括在所述将所述受保护容器存储器的所述页的所述经加密副本存储到在所述受保护容器存储器之外的所述存储位置之后,将所述受保护容器存储器的所述写保护页留置于有效且可读状态。
示例21包括如示例18所述的制品,其中,所述非暂态机器可读存储介质进一步存储一到两条机器指令,所述机器指令如果被机器执行则使所述机器执行包括以下各项的操作:在检测到对所述受保护容器存储器的所述写保护页的尝试写入之后,对所述受保护容器存储器的所述页进行解除写保护;以及使所述页的存储在处于所述受保护容器存储器之外的所述存储位置中的所述经加密副本无效。
示例22是一种处理器,所述处理器包括解码单元,所述解码单元用于对受保护容器页写保护指令进行解码。所述指令用于指示受保护容器存储器的页。所述处理器还包括与所述解码单元耦合的执行单元。所述执行单元响应于所述受保护容器页写保护指令而用于对所述受保护容器存储器的所述所指示页进行写保护。
示例23包括如示例22所述的处理器,其中,所述执行单元用于通过对用于存储所述所指示页的元数据的受保护容器页元数据结构中与所述所指示的页相对应的写保护指示符进行配置来对所述所指示的页进行写保护。
示例24包括如示例23所述的处理器,其中,所述执行单元用于通过对飞地页高速缓存映射中的写保护位进行配置来对所述所指示页进行写保护。
示例25包括如示例22至24中任一项所述的处理器,其中,所述执行单元响应于所述指令而用于确定:在所述页被写保护之前,能够迁移的密钥结构具有对所述受保护容器存储器的所述页的控制,所述能够迁移的密钥结构将具有一个或多个能够迁移的密钥。
示例26包括如示例22至24中任一项所述的处理器,其中,所述解码单元用于对将具有隐式寄存器的所述指令进行解码,所述隐式寄存器将具有由硬件执行的所述受保护容器存储器的所述页的有效地址。
示例27是一种处理器,所述处理器包括解码单元,所述解码单元用于对受保护容器页解除写保护和副本无效化指令进行解码。所述指令用于指示受保护容器存储器的页。所述处理器还包括与所述解码单元耦合的执行单元。所述执行单元响应于所述指令而用于对所述受保护容器存储器的所述所指示页进行解除写保护并且使所述受保护容器存储器的所述页的将位于所述受保护容器存储器之外的任何副本无效。
示例28包括如示例27所述的处理器,其中,所述解码单元用于对所述指令进行解码,所述指令用于指示版本信息,并且其中,所述执行单元用于通过改变所指示的版本信息来使所述页的所述任何副本无效化。
示例29包括如示例28所述的处理器,其中,所述版本信息将存储在所述受保护容器存储器中。
示例30包括如示例27至29中任一项所述的处理器,其中,所述执行单元响应于所述指令而用于通过对受保护容器页元数据结构中的所述写保护指示符进行配置来对所述所指示页进行解除写保护,所述受保护容器页元数据结构用于存储所述受保护容器存储器的页的安全元数据。
示例31包括如示例1至11中任一项所述的处理器,所述处理器进一步包括:可选的分支预测单元,用于对分支进行预测;以及可选的指令预取单元,与所述分支预测单元耦合,所述指令预取单元用于预取包括所述指令的指令。可选地,所述处理器还可以包括可选的1级(L1)指令高速缓存,与所述指令预取单元耦合,所述L1指令高速缓存用于存储指令;可选的L1数据高速缓存,用于存储数据;以及可选的2级(L2)高速缓存,用于存储数据和指令。所述处理器还可以可选地包括指令获取单元,所述指令获取单元与所述解码单元、所述L1指令高速缓存和所述L2高速缓存耦合以便在一些情况下从所述L1指令高速缓存和所述L2高速缓存之一中获取所述指令并且向所述解码单元提供所述指令。所述处理器还可以可选地包括:寄存器重命名单元,用于对寄存器进行重命名;可选的调度器,用于对已经从所述指令中解码出的一项或多项操作进行调度以供执行;以及可选的提交单元,用于提交所述指令的执行结果。
示例32是一种处理器或其他装置,其用于执行或可操作用于执行如示例12至17中任一项所述的方法。
示例33是一种包括用于执行如示例12至17中任一项所述方法的装置的处理器或其他设备。
示例34是一种包括可选地非暂态机器可读介质的制品,所述非暂态机器可读介质可选地存储或以其他方式提供指令,所述指令如果和/或当被处理器、计算机系统、电子设备或其他机器执行时可操作用于使所述机器执行如示例12至17中任一项所述的方法。
示例35是一种基本上如本文描述的处理器或其他装置。
示例36是一种处理器或其他装置,其可操作用于执行基本如本文所述的任何方法。
示例37是一种处理器或其他装置,其用于执行基本上如本文描述的任何指令(例如,其具有用于执行所述指令的组件或其可操作用于执行所述指令)。
示例38是一种计算机系统或其他电子设备,其包括处理器,所述处理器具有解码单元,所述解码单元用于对第一指令集的指令进行解码。所述处理器还具有一个或多个执行单元。所述电子设备还包括与所述处理器耦合的存储设备。所述存储设备用于存储第一指令,所述第一指令可以是基本上如本文公开的指令中的任何指令,并且所述第一指令将属于第二指令集。所述存储设备还用于存储用于将所述第一指令转换成所述第一指令集的一个或多个指令的指令。所述第一指令集的所述一个或多个指令当由所述处理器执行时将使所述处理器仿真所述第一指令。
Claims (25)
1.一种处理器,包括:
解码单元,所述解码单元用于对指令进行解码,所述指令指示受保护容器存储器中的页并且指示在所述受保护容器存储器之外的存储位置;以及
执行单元,所述执行单元与所述解码单元耦合,所述执行单元响应于所述指令而用于:
确保在所述受保护容器存储器的所述页具有写保护状态的同时在所述处理器中未缓存有针对所述受保护容器存储器的所述页的可写权限;
对所述受保护容器存储器的所述页的副本进行加密;
在已经确保不存在对所述受保护容器存储器的所述页的可写引用之后,将所述页的经加密副本存储到在所述受保护容器存储器之外的所指示存储位置;以及
在已经将所述页的所述经加密副本存储到在所述受保护容器存储器之外的所述所指示存储位置之后,将所述受保护容器存储器的所述页留置于所述写保护状态,所述页还将是有效且可读的。
2.如权利要求1所述的处理器,其中,所述解码单元用于对所述指令进行解码,所述指令指示所述受保护容器存储器的已经具有所述写保护状态的所述页。
3.如权利要求1所述的处理器,其中,所述执行单元响应于所述指令而用于对所述受保护容器存储器的所述所指示页进行写保护。
4.如权利要求1所述的处理器,其中,所述解码单元用于对所述指令进行解码,所述指令指示所述受保护容器存储器的将位于处理器预留存储器中的所述页,并且所述指令指示将位于所述处理器预留存储器之外的所述存储位置。
5.如权利要求1所述的处理器,其中,所述执行单元响应于所述指令而用于通过确保已经从所述处理器的所有转换后备缓冲区中冲刷掉所述受保护容器存储器的所述页的所有转换来确保不存在针对所述页的可写权限。
6.如权利要求1至5中任一项所述的处理器,其中,所述执行单元响应于所述指令而用于将具有所述写保护状态的所述页的版本存储在所述受保护容器存储器中。
7.如权利要求1至5中任一项所述的处理器,其中,所述执行单元响应于所述指令而用于确定:在所述页的所述经加密副本被存储到所述所指示存储位置之前,能够迁移的密钥结构具有对所述受保护容器存储器的所述页的控制,所述能够迁移的密钥结构将具有一个或多个能够迁移的密钥。
8.如权利要求1至5中任一项所述的处理器,其中,所述解码单元用于对所述指令进行解码,所述指令指示页元数据结构,并且其中,所述执行单元响应于所述指令而用于以所述页元数据结构来存储与所述所指示页相对应的元数据,其中,所述元数据将包括所述页元数据结构中的全部与所述所指示页相对应的以下各项中的多项:页类型、修改状态、读取权限状态、写入权限状态和执行权限状态。
9.如权利要求1至5中任一项所述的处理器,其中,所述解码单元用于对所述指令进行解码,所述指令指示所述受保护容器存储器中的所述页,该页将是飞地页高速缓存中的飞地页。
10.如权利要求1至5中任一项所述的处理器,其中,所述解码单元用于对具有隐式通用寄存器的所述指令进行解码,所述隐式通用寄存器将具有对所述受保护容器存储器的所述页的指示。
11.如权利要求1至5中任一项所述的处理器,其中,所述解码单元用于对是特权级指令的所述指令进行解码。
12.如权利要求1至5中任一项所述的处理器,进一步包括:
分支预测单元,所述分支预测单元用于对分支进行预测;
指令预取单元,与所述分支预测单元耦合,所述指令预取单元用于预取包括所述指令的指令;
1级(L1)指令高速缓存,与所述指令预取单元耦合,所述L1指令高速缓存用于存储指令;
L1数据高速缓存,用于存储数据;
2级(L2)高速缓存,用于存储数据和指令;
指令获取单元,所述指令获取单元与所述解码单元、所述L1指令高速缓存和所述L2高速缓存耦合以便从所述L1指令高速缓存和所述L2高速缓存之一中获取所述指令并且向所述解码单元提供所述指令;
寄存器重命名单元,所述寄存器重命名单元用于对寄存器进行重命名;
调度器,所述调度器用于调度已经从所述指令中解码出的一项或多项操作以供执行;以及
提交单元,所述提交单元用于提交所述指令的执行结果。
13.一种在处理器中执行一到三条机器指令以便执行包括以下各项的操作的方法:
对受保护容器存储器中的页进行写保护;
确保在所述处理器中未缓存有针对所述受保护容器存储器的所述页的可写权限;
对所述受保护容器存储器的所述页的副本进行加密;
在所述确保不存在对所述受保护容器存储器的所述写保护页的可写引用的操作之后,将所述受保护容器存储器的所述页的所述经加密副本存储到在所述受保护容器存储器之外的存储位置;以及
在所述将所述受保护容器存储器的所述页的所述经加密副本存储到在所述受保护容器存储器之外的所述存储位置的操作之后,将所述受保护容器存储器的所述写保护页留置于有效且可读状态。
14.如权利要求13所述的方法,进一步包括:在所述将所述页的所述经加密副本存储到所述存储位置的操作之后,读取所述写保护页。
15.如权利要求13所述的方法,其中,所述对所述页进行写保护的的操作包括配置受保护容器页元数据结构中的写保护指示以指示所述页是写保护的,其中,所述受保护容器页元数据结构存储所述写保护页的安全元数据。
16.如权利要求13所述的方法,其中,所述配置所述受保护容器页元数据结构中的所述写保护指示的操作包括设置飞地页高速缓存映射中的写保护位。
17.如权利要求13所述的方法,进一步包括:
检测对所述受保护容器存储器的所述写保护页的尝试写入;
对所述受保护容器存储器的所述页进行解除写保护;以及
使所述页的存储在处于所述受保护容器存储器之外的所述存储位置中的所述经加密副本无效。
18.如权利要求13所述的方法,其中,所述写保护的操作是响应于执行所述机器指令中的第一机器指令而执行的,并且其中,所述加密、所述确保、所述存储和所述留置的操作是响应于执行所述机器指令中的第二机器指令而执行的。
19.一种用于处理指令的系统,所述系统包括:
互连;
处理器,与所述互连相耦合,所述处理器用于接收指令,所述指令用于指示受保护容器存储器的页并且用于指示在所述受保护容器存储器之外的存储位置,所述处理器响应于所述指令而用于:
确保在所述受保护容器存储器的所述页具有写保护状态的同时不存在对所述受保护容器存储器的所述页的可写引用;
对所述受保护容器存储器的所述页的副本进行加密;
在已经确保不存在对所述受保护容器存储器的所述页的可写引用之后,将所述页的经加密副本存储到在所述受保护容器存储器之外的所指示存储位置;以及
在已经将所述页的所述经加密副本存储到在所述受保护容器存储器之外的所述所指示存储位置之后,将所述受保护容器存储器的所述页留置于所述写保护状态,所述页还将是有效且可读的;以及
动态随机存取存储器(DRAM),与所述互连相耦合。
20.如权利要求19所述的系统,其中,所述处理器用于接收所述指令,所述指令指示所述受保护容器存储器的已经具有所述写保护状态的所述页。
21.一种包括非暂态机器可读存储介质的制品,所述非暂态机器可读存储介质存储一到三条机器指令,所述机器指令如果被机器执行则将使所述机器执行包括以下各项的操作:
对受保护容器存储器中的页进行写保护;
确保不存在对所述受保护容器存储器的所述写保护页的可写引用;
对所述受保护容器存储器的所述页的副本进行加密;
在所述确保不存在对所述受保护容器存储器的所述写保护页的可写引用的操作之后,将所述受保护容器存储器的所述页的所述经加密副本存储到在所述受保护容器存储器之外的存储位置;以及
在所述将所述受保护容器存储器的所述页的所述经加密副本存储到在所述受保护容器存储器之外的所述存储位置的操作之后,将所述受保护容器存储器的所述写保护页留置于有效且可读状态。
22.如权利要求21所述的制品,其中,所述非暂态机器可读存储介质进一步存储一到两条机器指令,所述机器指令如果被机器执行则使所述机器执行包括以下各项的操作:
在检测到对所述受保护容器存储器的所述写保护页的尝试写入之后,对所述受保护容器存储器的所述页进行解除写保护;以及
使所述页的存储在处于所述受保护容器存储器之外的所述存储位置中的所述经加密副本无效。
23.一种设备,包括用于执行如权利要求13至18中任一项所述的方法的装置。
24.一种包括机器可读存储介质的制品,所述机器可读存储介质存储一到三条机器指令,所述机器指令如果被机器执行则可操作用于使所述机器执行如权利要求13至18中任一项所述的方法。
25.一种电子设备,包括互连、与所述互连相耦合的如权利要求1至5中任一项所述的处理器、与所述互连相耦合的动态随机存取存储器(DRAM)以及与所述互连相耦合的无线设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010877325.3A CN111930644B (zh) | 2015-06-26 | 2016-05-27 | 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/752,227 US9710401B2 (en) | 2015-06-26 | 2015-06-26 | Processors, methods, systems, and instructions to support live migration of protected containers |
US14/752,227 | 2015-06-26 | ||
PCT/US2016/034519 WO2016209547A1 (en) | 2015-06-26 | 2016-05-27 | Processors, methods, systems, and instructions to support live migration of protected containers |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010877325.3A Division CN111930644B (zh) | 2015-06-26 | 2016-05-27 | 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107683480A true CN107683480A (zh) | 2018-02-09 |
CN107683480B CN107683480B (zh) | 2021-12-07 |
Family
ID=57586209
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010877325.3A Active CN111930644B (zh) | 2015-06-26 | 2016-05-27 | 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令 |
CN201680030029.1A Active CN107683480B (zh) | 2015-06-26 | 2016-05-27 | 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010877325.3A Active CN111930644B (zh) | 2015-06-26 | 2016-05-27 | 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令 |
Country Status (5)
Country | Link |
---|---|
US (5) | US9710401B2 (zh) |
EP (2) | EP3641270A1 (zh) |
CN (2) | CN111930644B (zh) |
TW (3) | TWI715580B (zh) |
WO (1) | WO2016209547A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124956A (zh) * | 2019-11-22 | 2020-05-08 | 海光信息技术有限公司 | 一种容器保护方法、处理器、操作系统及计算机设备 |
WO2020168479A1 (en) * | 2019-02-20 | 2020-08-27 | Intel Corporation | Apparatus and method for seamless container migration for graphics processors and associated devices |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9870467B2 (en) * | 2015-03-27 | 2018-01-16 | Intel Corporation | Apparatus and method for implementing a forked system call in a system with a protected region |
US9875189B2 (en) | 2015-06-12 | 2018-01-23 | Intel Corporation | Supporting secure memory intent |
US9710401B2 (en) | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
US9996479B2 (en) * | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
US10664179B2 (en) | 2015-09-25 | 2020-05-26 | Intel Corporation | Processors, methods and systems to allow secure communications between protected container memory and input/output devices |
US10579791B2 (en) * | 2016-03-04 | 2020-03-03 | Intel Corporation | Technologies to defeat secure enclave side-channel attacks using fault-oriented programming |
US10210323B2 (en) * | 2016-05-06 | 2019-02-19 | The Boeing Company | Information assurance system for secure program execution |
US9880872B2 (en) * | 2016-06-10 | 2018-01-30 | GoogleLLC | Post-copy based live virtual machines migration via speculative execution and pre-paging |
US10263988B2 (en) * | 2016-07-02 | 2019-04-16 | Intel Corporation | Protected container key management processors, methods, systems, and instructions |
US10261919B2 (en) * | 2016-07-08 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Selective memory encryption |
US10460113B2 (en) * | 2016-08-16 | 2019-10-29 | International Business Machines Corporation | Security fix of a container in a virtual machine environment |
US10346641B2 (en) * | 2016-09-23 | 2019-07-09 | Intel Corporation | Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory |
US10530777B2 (en) | 2017-01-24 | 2020-01-07 | Microsoft Technology Licensing, Llc | Data unsealing with a sealing enclave |
US10911451B2 (en) | 2017-01-24 | 2021-02-02 | Microsoft Technology Licensing, Llc | Cross-platform enclave data sealing |
US11385926B2 (en) * | 2017-02-17 | 2022-07-12 | Intel Corporation | Application and system fast launch by virtual address area container |
CN108469986B (zh) | 2017-02-23 | 2021-04-09 | 华为技术有限公司 | 一种数据迁移方法及装置 |
US10509733B2 (en) | 2017-03-24 | 2019-12-17 | Red Hat, Inc. | Kernel same-page merging for encrypted memory |
US10209917B2 (en) | 2017-04-20 | 2019-02-19 | Red Hat, Inc. | Physical memory migration for secure encrypted virtual machines |
US10379764B2 (en) * | 2017-05-11 | 2019-08-13 | Red Hat, Inc. | Virtual machine page movement for encrypted memory |
US11354420B2 (en) | 2017-07-21 | 2022-06-07 | Red Hat, Inc. | Re-duplication of de-duplicated encrypted memory |
US10387686B2 (en) | 2017-07-27 | 2019-08-20 | International Business Machines Corporation | Hardware based isolation for secure execution of virtual machines |
US10296741B2 (en) | 2017-07-27 | 2019-05-21 | International Business Machines Corporation | Secure memory implementation for secure execution of virtual machines |
GB2572183A (en) * | 2018-03-21 | 2019-09-25 | Sutton Philip | Recycling method and taggant for a recyclable product |
US11093272B2 (en) | 2018-06-27 | 2021-08-17 | International Business Machines Corporation | Virtual machine allocation and migration between hardware devices by destroying and generating enclaves using transmitted datafiles and cryptographic keys |
US11397692B2 (en) * | 2018-06-29 | 2022-07-26 | Intel Corporation | Low overhead integrity protection with high availability for trust domains |
US10922123B2 (en) * | 2018-12-12 | 2021-02-16 | Microsoft Technology Licensing, Llc | Container migration in computing systems |
CN110069261A (zh) * | 2019-05-11 | 2019-07-30 | 肖银皓 | 一种嵌入式软件的可配置分区方法及系统 |
US11409880B2 (en) * | 2019-07-11 | 2022-08-09 | International Business Machines Corporation | Blackbox security for containers |
KR20210016764A (ko) * | 2019-08-05 | 2021-02-17 | 삼성전자주식회사 | 시스템 온 칩 |
US20210096872A1 (en) * | 2019-09-27 | 2021-04-01 | Intel Corporation | Hardware for eliding security checks when deemed safe during speculative execution |
US11614956B2 (en) | 2019-12-06 | 2023-03-28 | Red Hat, Inc. | Multicast live migration for encrypted virtual machines |
US11354151B2 (en) | 2020-02-12 | 2022-06-07 | International Business Machines Corporation | Hardware memory encryption and protection for containers |
JP7389351B2 (ja) * | 2020-03-23 | 2023-11-30 | 富士通株式会社 | 移動対象コンテナ決定方法および移動対象コンテナ決定プログラム |
US12093713B2 (en) * | 2020-04-14 | 2024-09-17 | Research Foundation For The State University Of New York | Systems and methods for live update of operating systems and hypervisors within virtualization systems |
US11775391B2 (en) | 2020-07-13 | 2023-10-03 | Samsung Electronics Co., Ltd. | RAID system with fault resilient storage devices |
US11700135B2 (en) * | 2020-12-26 | 2023-07-11 | Intel Corporation | ISA accessible physical unclonable function |
US11570010B2 (en) * | 2020-12-26 | 2023-01-31 | Intel Corporation | ISA accessible physical unclonable function |
US12022013B2 (en) | 2020-12-26 | 2024-06-25 | Intel Corporation | ISA accessible physical unclonable function |
US11706039B2 (en) | 2020-12-26 | 2023-07-18 | Intel Corporation | ISA accessible physical unclonable function |
US20220382478A1 (en) * | 2021-06-01 | 2022-12-01 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for page migration in memory systems |
US11693692B2 (en) | 2021-06-17 | 2023-07-04 | International Business Machines Corporation | Program event recording storage alteration processing for a neural network accelerator instruction |
US12079658B2 (en) | 2021-06-17 | 2024-09-03 | International Business Machines Corporation | Detection of invalid machine-specific data types during data conversion |
US11797270B2 (en) | 2021-06-17 | 2023-10-24 | International Business Machines Corporation | Single function to perform multiple operations with distinct operation parameter validation |
US11675592B2 (en) | 2021-06-17 | 2023-06-13 | International Business Machines Corporation | Instruction to query for model-dependent information |
US11734013B2 (en) | 2021-06-17 | 2023-08-22 | International Business Machines Corporation | Exception summary for invalid values detected during instruction execution |
US11269632B1 (en) | 2021-06-17 | 2022-03-08 | International Business Machines Corporation | Data conversion to/from selected data type with implied rounding mode |
US11669331B2 (en) | 2021-06-17 | 2023-06-06 | International Business Machines Corporation | Neural network processing assist instruction |
US20230094125A1 (en) * | 2021-09-24 | 2023-03-30 | Nvidia Corporation | Implementing trusted executing environments across multiple processor devices |
US12019887B2 (en) | 2022-08-16 | 2024-06-25 | Idaho Scientific Llc | System for protecting CPU core by identifying data and instructions |
US20240086556A1 (en) * | 2022-09-12 | 2024-03-14 | Idaho Scientific Llc | Computing data and instructions at immutable points |
CN118585290B (zh) * | 2024-08-06 | 2024-10-18 | 北京蓝耘科技股份有限公司 | 容器迁移优化方法、系统及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1314653A (zh) * | 2000-03-21 | 2001-09-26 | 埃利斯·博哈德公司 | 用于提供对安全数据或区域的存取权的装置和方法 |
CN101114471A (zh) * | 2004-03-19 | 2008-01-30 | Lg电子株式会社 | 记录介质以及用于形成、记录和再现该记录介质的装置 |
US20110085657A1 (en) * | 2009-10-09 | 2011-04-14 | Seagate Technology Llc | Data Encryption to Provide Data Security and Memory Cell Bit Wear Leveling |
US20120042034A1 (en) * | 2010-08-13 | 2012-02-16 | Vmware, Inc. | Live migration of virtual machine during direct access to storage over sr iov adapter |
US20120159184A1 (en) * | 2010-12-17 | 2012-06-21 | Johnson Simon P | Technique for Supporting Multiple Secure Enclaves |
CN104598256A (zh) * | 2013-10-30 | 2015-05-06 | 鸿富锦精密工业(武汉)有限公司 | 计算机bios恢复系统及方法 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070233955A1 (en) * | 2000-01-06 | 2007-10-04 | Super Talent Electronics Inc. | Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces |
US9020801B2 (en) * | 2003-08-11 | 2015-04-28 | Scalemp Inc. | Cluster-based operating system-agnostic virtual computing system |
US7325115B2 (en) * | 2003-11-25 | 2008-01-29 | Microsoft Corporation | Encryption of system paging file |
TWI311327B (en) * | 2006-01-26 | 2009-06-21 | Nuvoton Technology Corporatio | Method for page random write and read in the block of flash memory |
US8285958B1 (en) * | 2007-08-10 | 2012-10-09 | Mcafee, Inc. | System, method, and computer program product for copying a modified page table entry to a translation look aside buffer |
TWI362667B (en) * | 2007-12-31 | 2012-04-21 | Phison Electronics Corp | Data writing method for flash memory and controller thereof |
US8726042B2 (en) * | 2008-02-29 | 2014-05-13 | Microsoft Corporation | Tamper resistant memory protection |
JP5115332B2 (ja) | 2008-05-22 | 2013-01-09 | 富士通株式会社 | エミュレーションプログラム、エミュレーション装置およびエミュレーション方法 |
US9087200B2 (en) | 2009-12-22 | 2015-07-21 | Intel Corporation | Method and apparatus to provide secure application execution |
US9703586B2 (en) * | 2010-02-17 | 2017-07-11 | Microsoft Technology Licensing, Llc | Distribution control and tracking mechanism of virtual machine appliances |
US8656388B2 (en) | 2010-09-30 | 2014-02-18 | Avaya Inc. | Method and apparatus for efficient memory replication for high availability (HA) protection of a virtual machine (VM) |
US9076019B2 (en) | 2011-06-29 | 2015-07-07 | Intel Corporation | Method and apparatus for memory encryption with integrity check and protection against replay attacks |
US9519803B2 (en) | 2012-11-30 | 2016-12-13 | Intel Corporation | Secure environment for graphics processing units |
US9729309B2 (en) | 2012-12-19 | 2017-08-08 | Intel Corporation | Securing data transmission between processor packages |
US9323686B2 (en) | 2012-12-28 | 2016-04-26 | Intel Corporation | Paging in secure enclaves |
US9747102B2 (en) | 2012-12-28 | 2017-08-29 | Intel Corporation | Memory management in secure enclaves |
US9189411B2 (en) | 2012-12-28 | 2015-11-17 | Intel Corporation | Logging in secure enclaves |
US20140189246A1 (en) | 2012-12-31 | 2014-07-03 | Bin Xing | Measuring applications loaded in secure enclaves at runtime |
US9430384B2 (en) | 2013-03-31 | 2016-08-30 | Intel Corporation | Instructions and logic to provide advanced paging capabilities for secure enclave page caches |
US9344219B2 (en) * | 2013-06-25 | 2016-05-17 | Intel Corporation | Increasing communication safety by preventing false packet acceptance in high-speed links |
US8955144B2 (en) | 2013-06-28 | 2015-02-10 | Intel Corporation | Protecting information processing system secrets from debug attacks |
US9563452B2 (en) | 2013-06-28 | 2017-02-07 | Sap Se | Cloud-enabled, distributed and high-availability system with virtual machine checkpointing |
US9276750B2 (en) | 2013-07-23 | 2016-03-01 | Intel Corporation | Secure processing environment measurement and attestation |
US9698989B2 (en) | 2013-07-23 | 2017-07-04 | Intel Corporation | Feature licensing in a secure processing environment |
US20150033034A1 (en) | 2013-07-23 | 2015-01-29 | Gideon Gerzon | Measuring a secure enclave |
US9767044B2 (en) | 2013-09-24 | 2017-09-19 | Intel Corporation | Secure memory repartitioning |
US9471350B2 (en) | 2013-09-26 | 2016-10-18 | Intel Corporation | Live migration of virtualized systems |
US9355262B2 (en) | 2013-12-27 | 2016-05-31 | Intel Corporation | Modifying memory permissions in a secure processing environment |
US9703715B2 (en) | 2013-12-28 | 2017-07-11 | Intel Corporation | Shared memory in a secure processing environment |
US9792448B2 (en) | 2014-02-28 | 2017-10-17 | Advanced Micro Devices, Inc. | Cryptographic protection of information in a processing system |
US9558005B2 (en) | 2014-05-19 | 2017-01-31 | Intel Corporation | Reliable and deterministic live migration of virtual machines |
US10726162B2 (en) | 2014-12-19 | 2020-07-28 | Intel Corporation | Security plugin for a system-on-a-chip platform |
US9710622B2 (en) | 2015-02-23 | 2017-07-18 | Intel Corporation | Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache |
EP3274822A4 (en) | 2015-03-27 | 2018-11-07 | Intel Corporation | Technologies for virtual machine migration |
US9710401B2 (en) | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
WO2016205978A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Techniques for virtual machine migration |
US20160378684A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Multi-page check hints for selective checking of protected container page versus regular page type indications for pages of convertible memory |
US9942035B2 (en) | 2015-08-18 | 2018-04-10 | Intel Corporation | Platform migration of secure enclaves |
US9904805B2 (en) | 2015-09-23 | 2018-02-27 | Intel Corporation | Cryptographic cache lines for a trusted execution environment |
CN107924328B (zh) | 2015-09-25 | 2023-06-06 | 英特尔公司 | 选择虚拟机进行迁移的技术 |
US10353831B2 (en) | 2015-12-24 | 2019-07-16 | Intel Corporation | Trusted launch of secure enclaves in virtualized environments |
US10534724B2 (en) | 2015-12-24 | 2020-01-14 | Intel Corporation | Instructions and logic to suspend/resume migration of enclaves in a secure enclave page cache |
US20170277898A1 (en) | 2016-03-25 | 2017-09-28 | Advanced Micro Devices, Inc. | Key management for secure memory address spaces |
US10176122B2 (en) | 2016-10-19 | 2019-01-08 | Advanced Micro Devices, Inc. | Direct memory access authorization in a processing system |
US20180165224A1 (en) | 2016-12-12 | 2018-06-14 | Ati Technologies Ulc | Secure encrypted virtualization |
-
2015
- 2015-06-26 US US14/752,227 patent/US9710401B2/en active Active
-
2016
- 2016-05-19 TW TW105115540A patent/TWI715580B/zh active
- 2016-05-19 TW TW109134811A patent/TWI751731B/zh active
- 2016-05-19 TW TW110149669A patent/TWI797937B/zh active
- 2016-05-27 WO PCT/US2016/034519 patent/WO2016209547A1/en unknown
- 2016-05-27 CN CN202010877325.3A patent/CN111930644B/zh active Active
- 2016-05-27 EP EP19209069.4A patent/EP3641270A1/en active Pending
- 2016-05-27 CN CN201680030029.1A patent/CN107683480B/zh active Active
- 2016-05-27 EP EP16814991.2A patent/EP3314853B1/en active Active
-
2017
- 2017-07-17 US US15/651,771 patent/US10558588B2/en active Active
-
2019
- 2019-12-27 US US16/729,251 patent/US11055236B2/en active Active
-
2021
- 2021-07-03 US US17/367,349 patent/US11782849B2/en active Active
-
2023
- 2023-10-09 US US18/378,124 patent/US20240184717A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1314653A (zh) * | 2000-03-21 | 2001-09-26 | 埃利斯·博哈德公司 | 用于提供对安全数据或区域的存取权的装置和方法 |
CN101114471A (zh) * | 2004-03-19 | 2008-01-30 | Lg电子株式会社 | 记录介质以及用于形成、记录和再现该记录介质的装置 |
US20110085657A1 (en) * | 2009-10-09 | 2011-04-14 | Seagate Technology Llc | Data Encryption to Provide Data Security and Memory Cell Bit Wear Leveling |
US20120042034A1 (en) * | 2010-08-13 | 2012-02-16 | Vmware, Inc. | Live migration of virtual machine during direct access to storage over sr iov adapter |
US20120159184A1 (en) * | 2010-12-17 | 2012-06-21 | Johnson Simon P | Technique for Supporting Multiple Secure Enclaves |
CN104598256A (zh) * | 2013-10-30 | 2015-05-06 | 鸿富锦精密工业(武汉)有限公司 | 计算机bios恢复系统及方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020168479A1 (en) * | 2019-02-20 | 2020-08-27 | Intel Corporation | Apparatus and method for seamless container migration for graphics processors and associated devices |
US11854114B2 (en) | 2019-02-20 | 2023-12-26 | Intel Corporation | Apparatus and method for seamless container migration for graphics processors and associated devices |
CN111124956A (zh) * | 2019-11-22 | 2020-05-08 | 海光信息技术有限公司 | 一种容器保护方法、处理器、操作系统及计算机设备 |
CN111124956B (zh) * | 2019-11-22 | 2023-03-07 | 海光信息技术股份有限公司 | 一种容器保护方法、处理器、操作系统及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
US11782849B2 (en) | 2023-10-10 |
US20160378688A1 (en) | 2016-12-29 |
TW201713096A (zh) | 2017-04-01 |
TWI751731B (zh) | 2022-01-01 |
EP3314853A4 (en) | 2019-03-13 |
WO2016209547A1 (en) | 2016-12-29 |
US20200142838A1 (en) | 2020-05-07 |
US10558588B2 (en) | 2020-02-11 |
EP3314853B1 (en) | 2021-10-20 |
EP3314853A1 (en) | 2018-05-02 |
CN107683480B (zh) | 2021-12-07 |
TWI797937B (zh) | 2023-04-01 |
TW202243450A (zh) | 2022-11-01 |
US20210406201A1 (en) | 2021-12-30 |
TW202110152A (zh) | 2021-03-01 |
CN111930644B (zh) | 2024-08-06 |
US20240184717A1 (en) | 2024-06-06 |
CN111930644A (zh) | 2020-11-13 |
EP3641270A1 (en) | 2020-04-22 |
US9710401B2 (en) | 2017-07-18 |
TWI715580B (zh) | 2021-01-11 |
US20180004683A1 (en) | 2018-01-04 |
US11055236B2 (en) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107683480A (zh) | 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令 | |
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
TWI697804B (zh) | 安全區之平台遷移 | |
CN105320611B (zh) | 用于细粒存储器保护的方法和设备 | |
CN109690552A (zh) | 用于判定是否将受保护容器页的加密副本加载到受保护容器存储器中的处理器、方法、系统和指令 | |
CN104823173B (zh) | 对预留给处理器逻辑使用的存储器的访问类型保护 | |
CN105320612B (zh) | 验证虚拟地址转换 | |
CN104850777B (zh) | 使用认证的清单来实现对多处理器平台的外部确认 | |
CN105264513B (zh) | 用于过程返回地址验证的系统和方法 | |
CN105184113B (zh) | 用于实现安全视频输出路径的硬件辅助虚拟化 | |
CN104969199B (zh) | 实施黑名单分页结构指示值的处理器、方法,以及系统 | |
CN108027779A (zh) | 允许受保护的容器存储器与输入/输出设备之间的安全通信的处理器、方法、系统和指令 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN106575261A (zh) | 受保护的区域中的存储器初始化 | |
CN109960665A (zh) | 用于在分页期间逆转页阻止的解除阻止指令 | |
CN106716434A (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
CN107667372A (zh) | 用于保护影子栈的处理器、方法、系统和指令 | |
CN104025027B (zh) | 结构访问处理器、方法、系统和指令 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN110472444A (zh) | 防止对加密存储器的未授权访问 | |
CN110162380A (zh) | 用来防止软件侧通道的机制 | |
CN107624182A (zh) | 用于选择性的检查针对可转换存储器的页的受保护容器页对常规页类型指示的多页检查提示 | |
CN108292273A (zh) | 用于子页写入保护的方法和装置 | |
CN105027137B (zh) | 用于针对增强型安全检查的页走查扩展的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |