CN108351839A - 用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑 - Google Patents
用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑 Download PDFInfo
- Publication number
- CN108351839A CN108351839A CN201680068757.1A CN201680068757A CN108351839A CN 108351839 A CN108351839 A CN 108351839A CN 201680068757 A CN201680068757 A CN 201680068757A CN 108351839 A CN108351839 A CN 108351839A
- Authority
- CN
- China
- Prior art keywords
- sdcs
- page
- processor
- instruction
- enclave
- 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
- 230000005012 migration Effects 0.000 title claims abstract description 97
- 238000013508 migration Methods 0.000 title claims abstract description 97
- 238000000034 method Methods 0.000 claims abstract description 175
- 230000008569 process Effects 0.000 claims abstract description 152
- 238000003860 storage Methods 0.000 claims abstract description 90
- 238000012545 processing Methods 0.000 claims description 44
- 230000004044 response Effects 0.000 claims description 20
- 238000007789 sealing Methods 0.000 claims description 11
- 238000009826 distribution Methods 0.000 claims description 4
- 230000002045 lasting effect Effects 0.000 claims 2
- 238000012795 verification Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 23
- 238000013461 design Methods 0.000 description 22
- 238000005516 engineering process Methods 0.000 description 20
- 238000012856 packing Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 17
- 238000004519 manufacturing process Methods 0.000 description 16
- 230000002085 persistent effect Effects 0.000 description 16
- 238000007667 floating Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000006073 displacement reaction Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000004088 simulation Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 230000015556 catabolic process Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000006731 degradation reaction Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000002411 adverse Effects 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 3
- 230000033228 biological regulation Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000001737 promoting effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000000547 structure data Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 102000001332 SRC Human genes 0.000 description 1
- 108060006706 SRC Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000027455 binding Effects 0.000 description 1
- 238000009739 binding Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
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/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/1466—Key-lock mechanism
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- 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/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
指令和逻辑支持挂起和恢复安全飞地页面高速缓存(EPC)中飞地的迁移。EPC将安全域控制结构(SDCS)存储在由用于管理进程的飞地和由飞地域可访问的存储中。第二处理器检查对应的版本阵列(VA)页面是否被绑定到SDCS,并且如果是的话,则:递增用于页面的SDSC中的版本计数器,使用SDCS中的版本计数器从EPC对页面执行认证加密,并将加密的页面写入外部存储器。第二处理器检查是否对应的VA页面被绑定到第二处理器的第二SDCS,并且如果是的话,则:使用第二SDCS中的版本计数器对页面执行认证解密,并且如果验证通过,则将解密的页面加载到第二处理器中的EPC。
Description
对相关申请的交叉引用
本申请涉及如下申请:申请序列号13 / 729,277,标题为“Paging in SecureEnclaves”,于2012年12月28日提交; 申请序列号13 / 854,107,标题为“Instructionsand Logic to Provide Advanced Paging Capabilities for Secure Enclave PageCaches”,于2013年3月31日提交; 申请序列号14/318,508,标题为“Instructions andLogic to Interrupt and Resume Paging in a Secure Enclave Page Cache”,于2014年6月27日提交;申请序列号14 / 725,227,标题为“Processor Extensions to supportLive Migration of an Enclaves”,于2015年6月26日提交;以及申请序列号14 / 829,340,标题为“Processor Extensions to support the Migration of an Enclave”,于2015年8月18日提交。
技术领域
本公开属于处理逻辑,微处理器和相关联的指令集架构的领域,所述指令集架构在由处理器或其他处理逻辑执行时执行加载,存储,逻辑,数学或其他功能操作。具体而言,本公开涉及用于挂起和恢复安全飞地(secure enclave)页面高速缓存中安全飞地的迁移的指令和逻辑。
背景技术
用于支持诸如语音,视频,事务和私有数据的新使用模型和服务的应用和高性能网络在安全领域提出了新的挑战。为了机密性和完整性而在存储或传输中保护数据的需求是重要的,但支持维护对受保护代码和/或数据的安全访问所需的高速加密操作和存储会增加复杂性并最终导致费用增加。
用于创建和维护安全的、受保护的或隔离的分区或环境的一种技术被称为建立飞地。飞地是作为一个群组被保护的一组信息和处理能力。信息和处理能力可能包括网络,主机或应用。当从外部存储器加载用于飞地的数据和/或指令时,它们被解密、认证、并且然后存储或高速缓存在受保护的存储器中。类似地,当用于飞地的数据和/或指令从受保护的存储器被逐出时,它们在被存储回外部存储器之前被加密。安全飞地数据被分配给特定进程并与用于该进程的唯一飞地标识符相关联,使得对安全飞地数据的访问被约束在授权进程。甚至操作系统也不被准许访问与不同进程的飞地标识符关联的解密的飞地数据。
因此,当已被分配安全飞地的进程需要被迁移到另一个机器、平台或服务器时,操作系统不能访问与父进程关联的解密的飞地数据。相应地,操作系统在分配给在运行中进程的安全飞地仍处于活动状态时可能无法复制对于被迁移的进程的进程状态。此外,安全飞地通过其密钥绑定到平台,这样以便迁移到另一个平台,平台需要被虚拟化,并且安全飞地需要转而被绑定到平台上运行的虚拟机或容器。然后,至少在安全飞地关闭时,进程和/或虚拟机能够安全地迁移到另一个物理平台。
为了使操作系统复制分配给进程的安全飞地状态以便将该进程迁移到另一物理平台,存储器页面通常可以从受保护的存储器被移出页面和被无效化。当操作系统正在为安全飞地执行存储器页面的分页入(即加载)和/或分页出(即逐出和写回)时,加密操作必须在整个页面上执行,整个页面在大小上通常可以是4KB。因此,针对安全飞地的页面拷贝操作可能要求许多数万个处理周期。如果分页进程中断,则可能需要重新执行,但如果在针对安全飞地的分页操作完成之前不准许中断服务,则中断的延迟服务可能会在一些服务(诸如语音、视频和实时事务)中导致不可接受的故障。将被领会到的是,为了安全地迁移到另一个物理平台,对存储器数据页面和/或可执行页面的任何拷贝都将需要被安全地管理,并且特别是如果对此类数据页面和/或可执行页面的拷贝发生在虚拟机或容器到另一平台的实况迁移期间,则对针对安全飞地的每个存储器数据页面和/或可执行页面的版本控制也将需要被安全地管理。
因此,复制用于安全飞地的数据和状态的页面以将进程迁移到另一机器、平台或服务器呈现了一组独特的安全性、用户体验和性能挑战。目前,解决这些挑战、潜在性能限制问题和实时复杂性的解决方案尚未得到充分探索。
附图说明
本发明在附图的图中以示例而非限制的方式被示出。
图1A是执行指令以挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的系统的一个实施例的框图。
图1B是执行指令以挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的系统的另一实施例的框图。
图1C是执行指令以挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的系统的另一实施例的框图。
图2是执行指令以挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的处理器的一个实施例的框图。
图3A示出根据一个实施例的打包数据类型。
图3B示出根据一个实施例的打包数据类型。
图3C示出根据一个实施例的打包数据类型。
图3D示出根据一个实施例的、用来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令编码。
图3E示出根据另一个实施例的、用来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令编码。
图3F示出根据另一个实施例的、用来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令编码。
图3G示出根据另一个实施例的、用来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令编码。
图3H示出根据另一个实施例的、用来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令编码。
图4A示出处理器微架构的一个实施例的元件,该处理器微架构用于执行挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令。
图4B示出了处理器微架构的另一个实施例的元件,该处理器微架构用于执行挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令。
图5是处理器的一个实施例的框图,该处理器用于执行挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令。
图6是计算机系统的一个实施例的框图,该计算机系统用来执行挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令。
图7是计算机系统的另一个实施例的框图,该计算机系统用来执行挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令。
图8是计算机系统的另一个实施例的框图,该计算机系统用来执行挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令。
图9是片上系统的一个实施例的框图,该片上系统用来执行挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令。
图10是处理器的一实施例的框图,该处理器用来执行挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令。
图11是挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的IP核开发系统的一个实施例的框图。
图12示出挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的架构仿真系统的一个实施例。
图13示出用来转化挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令的系统的一个实施例。
图14示出在用于使用指令以挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的处理器中的设备的实施例。
图15示出在用于使用指令以挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的处理器中的设备的另一实施例。
图16示出了对于挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的进程的一个实施例的流程图。
图17示出了对于挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的另一进程的一个实施例的流程图。
具体实施方式
以下描述公开了指令和处理逻辑,所述指令和处理逻辑用来在处理器、计算机系统或其他处理设备内或与处理器、计算机系统或其他处理设备相关联,来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移。
在只持有私有或受保护数据的特定高速缓存或高速缓存的部分(例如与飞地关联)中,对该私有或受保护数据(在其未被加密时)的访问能够被仅限于针对授权的处理器核、硬件线程或逻辑处理器。此类飞地私有存储器可被称为飞地页面高速缓存(EPC)存储器。正如与其他物理存储器一样,EPC能够根据需要通过分页进和分页出数据和/或代码,来使得其支持更大的私有或受保护地址空间。
根据一些实施例,指令和逻辑支持挂起和恢复安全EPC中飞地的迁移。EPC将安全域控制结构(SDCS)存储在由用于管理进程的飞地以及由飞地域可访问的存储中。处理器检查对应的版本阵列(VA)页面是否被绑定到SDCS,并且如果是的话,则:递增在用于页面的SDCS中的版本计数器、使用SDCS中的版本计数器从EPC对页面执行认证加密、并将加密的页面写入外部存储器。第二处理器检查对应的VA页面是否绑定到第二处理器的第二SDCS,并且如果是的话,则:使用第二SDCS中的版本计数器执行对页面的认证解密、并且如果认证通过的话将解密的页面加载到第二处理器中的EPC。
一些实施例的指令指定在EPC中分配给处理器或多个处理器的域飞地以用来存储安全飞地控制结构数据、应用数据、应用代码等的安全存储的地址。在一些实施例中,管理进程飞地(例如用于虚拟机管理器(VMM)或安全容器)可以执行或者导致系统软件防护扩展(SGX)库执行指令以将域飞地的一个或多个页面绑定到SDCS。管理进程飞地可访问安全存储区域,以将一个或多个页面的认证加密拷贝从安全存储区域写入外部存储器。对于所述一个或多个页面的一个或多个版本可以分别在用于SDCS的安全存储区域中的版本阵列页面中被更新。管理进程飞地还可以访问安全存储区域,以将所述一个或多个版本阵列页面的认证加密拷贝从安全存储区域写入外部存储器。用于最后版本阵列页面的版本阵列槽(slot)可被存储到SDCS中以用于认证安全飞地的迁移图像。SDCS然后可以被管理进程飞地关闭,停用或“静默(quiesce)”,并且SDCS中的对应属性字段可以被设置为指示SDCS被静默。然后,受信任的迁移飞地可以验证SDCS被静默,并将SDCS密封在认证加密持久数据结构中,从而将其放置在外部非易失性存储器中以便迁移,并且然后管理进程飞地可以取消分配原始SDCS。
在一些实施例中,另一个受信任迁移飞地(例如在另一个平台上)可以执行或者引起系统软件防护扩展(SGX)库执行指令以访问外部存储器来检索此类认证加密持久数据结构以用于安全飞地到新的平台的迁移。来自认证加密持久数据结构的密封SDCS被解密和认证,并且验证元数据中的安全策略准许恢复与虚拟机关联的安全飞地。因此,用于被迁移的SDCS的安全飞地控制结构(SECS)由受信任的迁移飞地分配给虚拟机,并且指派用于虚拟机的本地ID。然后,可以从密封的SDCS持久数据结构来配置迁移的SDCS,并且另一个管理进程飞地(例如,用于虚拟机管理器(VMM)或另一平台上的安全容器)可以将用于迁移的SDCS的SDCS指针加载到新平台的处理器寄存器中。版本阵列槽从SDCS加载到对于第一版本阵列页面的版本阵列槽。在针对迁移的SDCS中的版本来检查所述一个或多个版本阵列页面的版本时,所述一个或多个版本阵列页面的拷贝然后可从外部存储器被加载、解密和认证。在针对迁移的SDCS中的版本检查所述一个或多个飞地页面的版本时,所述一个或多个飞地页面的拷贝然后可从外部存储器被加载、解密和认证。
将被领会到的是,通过使用上述飞地指令来挂起和恢复安全飞地的迁移,迁移进程(例如,其中与虚拟机关联的安全飞地页面高速缓存存储器内容被认证、加密和写回,TLB条目被转储清除(flush),用于页面的版本计数器被记录以用于认证并被安全存储,并且虚拟机被迁移到另一平台且被恢复等)能够被拆分成多个阶段,其中处理器核或逻辑处理器可继续在一个或多个阶段期间从只读页面来执行。当页面被自然地分页出时,它们可被准备好以进行迁移。如果修改了一个或多个页面,则它们可被重新进行认证,加密和写回,并且它们的版本计数器会被递增。版本阵列页面可被类似地处理,并且版本阵列信息被安全地传输到迁移平台。因此,可以减少由于迁移进程而导致的性能降级,同时保证安全飞地数据的安全性并且不需要过度的复杂性和设计努力。
在一些实施例中,本文所公开的指令和逻辑能够在迁移安全域进程中以及在从安全飞地内部的页面拷贝操作中被中断和恢复。因此,迁移安全域进程和为安全飞地建立页面的认证拷贝的前向进程可得以保证,并且通过及时服务未决中断可避免诸如语音,视频和实时事务的服务中的不可接受的故障。将被领会到的是,在版本不匹配和/或认证对于迁移的安全域失败的任何此类时间,迁移进程可以在目标平台中被挂起,并且始发平台可被用信号通知来恢复迁移进程(在是失败起因的点开始),使得有问题的页面可被重新认证,加密和写回,并递增其版本计数器。因此,安全迁移进程不仅为检测和防止恶化和/或篡改提供保证,而且还为在此类检测之后的复原以及在始发平台中重新开始迁移进程提供保证。
还将被领会到的是,在没有针对此类指令的处理器支持的情况下,用于实现相同(或类似)技术效果的任何软件系统安全特征可能(如果真是可行的话)是极其昂贵的和/或性能限制到如下程度,即安全性的一些较弱度量可能会被不利地接受。
在以下描述中,阐述了众多特定细节,诸如处理逻辑、处理器类型、微架构条件、事件、启动(enablement)机制等,以便提供本发明实施例的更透彻理解。然而,本领域技术人员将认识到,没有此类特定细节也可实践本发明。此外,一些众所周知的结构、电路等未详细示出,以避免不必要地使本发明的实施例混淆。
尽管以下实施例参考处理器进行描述,但其它实施例可应用于其它类型集成电路和逻辑器件。本发明实施例的类似技术和教导可应用于可受益于更高流水线吞吐量和改进性能的其它类型电路或半导体器件。本发明实施例的教导可应用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可应用于其中执行数据操纵或管理的任何处理器和机器。此外,以下描述提供了示例,并且附图为了示出目的示出了各种示例。然而,这些示例不应被理解为限制意义,因为它们仅仅意图提供本发明实施例的示例,而不是提供本发明的实施例的所有可能实现的详尽列表。
尽管以下示例在执行单元和逻辑电路的上下文中描述了指令处置和分发(distribute),但本发明的其它实施例可通过存储在机器可读有形介质上的数据和/或指令实现,所述指令当由机器执行时使机器执行与本发明的至少一个实施例一致的功能。在一个实施例中,与本发明实施例关联的功能体现在机器可执行指令中。指令可用于使采用指令编程的通用或专用处理器执行本发明的步骤。本发明的实施例可提供为计算机程序产品或软件,该产品或软件可包括机器或计算机可读介质,其上存储有可用于编程计算机(或其它电子装置)以执行根据本发明的实施例的一个或更多个操作的指令。备选地,本发明的实施例的步骤可由包含用于执行所述步骤的固定功能逻辑的特定硬件组件执行,或者由编程的计算机组件和固定功能硬件组件的任何组合执行。
用于对逻辑编程以执行本发明的实施例的指令可被存储在系统中的存储器内,诸如DRAM、高速缓存、闪速存储器或其它存储装置内。更进一步,指令可经由网络或通过其它计算机可读介质分发。从而,机器可读介质可包含用于存储或传送由机器(例如计算机)可读形式的信息的任何机制,但其不限于软盘、光盘、紧凑盘只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在因特网上经由电、光、声或其它形式传播信号(例如载波、红外信号、数字信号等)传送信息中使用的有形机器可读存储装置。相应地,计算机可读介质包含适合于存储或传送由机器(例如计算机)可读形式的电子指令或信息的任何类型有形机器可读介质。
设计从创建到模拟到制造可经过各种阶段。表示设计的数据可用多种方式表示该设计。首先,如在模拟中是有用的,硬件可使用硬件描述语言或另一功能描述语言表示。附加地,在设计过程的某些阶段,可产生具有逻辑和/或晶体管栅的电路级模型。更进一步,多数设计在某一阶段达到用硬件模型表示各种器件的物理布局的数据级。在其中使用常规半导体制造技术的情况下,表示硬件模型的数据可以是规定在用于产生集成电路的掩膜的不同掩膜层上存在或缺乏各种特征的数据。在设计的任何表示中,数据都可存储在任何形式的机器可读介质中。存储器或者磁或光存储装置(诸如盘)可以是机器可读介质,以存储经由调制或以其它方式生成以传送信息的光波或电波传送的此类信息。在传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传送而言,做出新的拷贝。从而,通信提供商或网络提供商可在有形机器可读介质上至少暂时存储体现本发明实施例的技术的制品,诸如被编码到载波中的信息。
在现代处理器中,使用若干不同执行单元来处理和执行各种代码和指令。不是所有的指令同等地被创建,因为一些指令较快地完成,而其它指令可能花了若干时钟周期完成。指令吞吐量越快,处理器的总体性能越好。从而,使许多指令尽可能快地执行会是有利的。然而,存在具有更大复杂性并且在执行时间和处理器资源方面要求更大的某些指令。例如,存在浮点指令、加载/存储操作、数据移动等。
当在因特网、文本和多媒体应用中使用更多计算机系统时,已经随时间引入了附加处理器支持。在一个实施例中,指令集可与一个或多个计算机架构关联,包含数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处置以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可由一个或多个微架构实现,微架构包含用于实现一个或多个指令集的处理器逻辑和电路。备选实施例可通过微代码、扩展微代码或微代码辅助、管理程序、二进制转化、硬件重编译等来实现ISA。相应地,具有不同微架构的处理器至少可共享部分公共指令集。例如,Intel® Pentium 4处理器、Intel® Core™处理器以及来自加利福尼亚州,Sunnyvale 的Advanced Micro devices, Inc的处理器实现了几乎相同版本的x86指令集(具有已经对于较新版本被添加的一些扩展),但具有不同的内部设计。类似地,由其它处理器开发公司(诸如ARM Holding, Ltd、MIPS或他们的许可方或采纳方)设计的处理器可共享公共指令集的至少一部分,但可包含不同处理器设计。例如,ISA的相同寄存器架构可使用新或公知的技术在不同微架构中以不同方式实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重新排序缓冲器(ROB)和引退寄存器堆)的一个或更多个动态分配的物理寄存器。在一个实施例中,寄存器可包括一个或更多个寄存器、寄存器架构、寄存器堆或可以或可以不由软件编程器可寻址的其它寄存器集。
在一个实施例中,指令可包含一个或多个指令格式。在一个实施例中,除了其它之外,指令格式还可指示要规定的各种字段(位数、位的位置等)、要执行的操作以及在其上将执行操作的操作数。一些指令格式可由指令模板(或子格式)进一步间断(broken)定义。例如,给定的指令格式的指令模板可被定义成具有指令格式字段的不同子集,和/或定义成具有不同解译的给定字段。在一个实施例中,指令使用指令格式(并且如果定义了,则在那个指令格式的指令模板中的给定一个模板中)被表述,并且规定或指示操作以及操作将在其上进行操作的操作数。
科学、金融、自动向量化通用、RMS(识别、挖掘和合成)及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)可要求对大量数据项执行相同操作。在一个实施例中,单指令多数据(SIMD)指使得处理器对多个数据元素执行操作的指令的类型。在逻辑上可将寄存器中的位划分成多个固定大小或可变大小数据元素(每个元素表示单独的值)的SIMD技术可使用在处理器中。例如,在一个实施例中,可将64位寄存器中的位组织为包含4个单独16位数据元素的源操作数,每个元素表示单独的16位值。此类型的数据可称为“打包”(packed)数据类型或“向量”数据类型,并且此数据类型的操作数称为打包数据操作数或向量操作数。在一个实施例中,打包数据项或向量可以是在单个寄存器内存储的打包数据元素的序列,并且打包数据操作数或向量操作数可以是SIMD指令(或“打包数据指令”或“向量指令”)的源或目的地操作数。在一个实施例中,SIMD指令指定要对两个源向量操作数执行的单向量操作,以生成相同或不同大小的具有相同或不同数量的数据元素和以相同或不同的数据元素顺序的目的地向量操作数(也称为结果向量操作数)。
例如由具有包括x86、MMX™、流播SIMD扩展(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令的指令集的Intel® Core™处理器,诸如ARM Cortex®系列处理器的具有包括向量浮点(VFP)和/或NEON指令的指令集的ARM处理器,以及诸如由中国科学院的计算技术研究所(ICT)开发的龙芯(Loongson)系列处理器的MIPS处理器所采用的SIMD技术已经在应用性能方面实现了相当大的改进(Core™和MMX™是加利福尼亚州Santa Clara的IntelCorporation的注册商标或商标)。
在一个实施例中,目的地和源寄存器/数据是表示对应数据或操作的源和目的地的常规术语。在一些实施例中,它们可通过具有与描绘的那些名称或功能不同的名称或功能的寄存器、存储器或其它存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域并以此类推。在其它实施例中,两个或更多个SRC和DEST存储区域可对应于相同存储区域(例如,SIMD寄存器)内的不同数据存储元素。在一个实施例中,例如通过将对第一和第二源数据执行的操作的结果写回到用作目的地寄存器的所述两个源寄存器中的一个,源寄存器之一也可充当目的地寄存器。
图1A是根据本发明的一个实施例的用包括执行单元以执行指令的处理器形成的示范计算机系统的框图。根据本发明(例如本文描述的实施例中的),系统100包括诸如处理器102的组件,以采用包括执行用于处理数据的算法的逻辑的执行单元。系统100表示基于根据加利福尼亚州Santa Clara的Intel Corporation可用的PENTIUM® III、PENTIUM® 4、Xeon™、Itanium®、XScale™和/或StrongARM™微处理器的处理系统,尽管也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行从华盛顿Redmond的Microsoft Corporation可得到的Windows™操作系统的某个版本,尽管也可使用其它操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。
实施例并不限于计算机系统。本发明的备选实施例可在诸如手持式装置和嵌入式应用的其它装置中使用。手持式装置的一些示例包括蜂窝电话、因特网协议装置、数码相机、个人数字助理(PDA)及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行根据至少一个实施例的一个或更多个指令的任何其它系统。
图1A是采用处理器102形成的计算机系统100的框图,处理器102包含执行一个或多个执行单元108以执行用来根据本发明一个实施例执行至少一个指令的算法。一个实施例可在单个处理器桌上型计算机或服务器系统的上下文中描述,而备选实施例可包含在多处理器系统中。系统100是“中枢”系统架构的示例。计算机系统100包含用于处理数据信号的处理器102。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或任何其它处理装置,诸如例如数字信号处理器。处理器102耦合到处理器总线110,其可在处理器102与系统100中的其它组件之间传送数据信号。系统100的元件执行本领域技术人员众所周知的它们的常规功能。
在一个实施例中,处理器102包含1级(L1)内部高速缓冲存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。备选地,在另一实施例中,高速缓冲存储器可驻留在处理器102外部。取决于具体实现和需要,其它实施例也可包含内部和外部高速缓存二者的组合。寄存器堆106可将不同类型的数据存储在各种寄存器中,包含整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
执行单元108(包含执行整数和浮点运算的逻辑)也驻留在处理器102中。处理器102也包含存储某些宏指令的微代码的微代码(ucode)ROM。对于一个实施例,执行单元108包含处置打包指令集109的逻辑。通过在通用处理器102的指令集中包括打包指令集109,连同执行指令的关联电路,可使用通用处理器102中的打包数据执行由许多多媒体应用使用的操作。从而,通过使用处理器的数据总线的完全宽度来对打包数据执行操作,可加速和更有效地执行许多多媒体应用。这可消除跨处理器的数据总线传输更小数据单元来一次一个数据元素执行一个或更多个操作的需要。
执行单元108的备选实施例也可用在微控制器、嵌入式处理器、图形装置、DSP以及其它类型逻辑电路中。系统100包含存储器120。存储器120可以是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪速存储器装置或其它存储器装置。存储器120可存储由数据信号表示的可由处理器102执行的指令和/或数据。
系统逻辑芯片116耦合到处理器总线110和存储器120。系统逻辑芯片116在所示实施例中是存储器控制器中枢(MCH)。处理器102可经由处理器总线110与MCH 116通信。MCH116提供到存储器120的高带宽存储器路径118,其用于指令和数据存储以及用于图形命令、数据和组织结构(texture)的存储。MCH 116用来在处理器102、存储器120和系统100中的其它组件之间引导数据信号,并在处理器总线110、存储器120和系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供用于耦合到图形控制器112的图形端口。MCH116通过存储器接口118耦合到存储器120。图形卡112通过加速图形端口(AGP)互连114耦合到MCH 116。
系统100使用专有中枢接口总线122将MCH 116耦合到I/O控制器中枢(ICH)130。ICH 130经由本地I/O总线提供到一些I/O装置的直接连接。本地I/O总线是用于将外设连接到存储器120、芯片集和处理器102的高速I/O总线。一些示例是音频控制器、固件中枢(闪速BIOS)128、无线收发器126、数据存储装置124、含有用户输入和键盘接口的遗留I/O控制器、串行扩展端口(诸如通用串行总线(USB))和网络控制器134。数据存储装置124可包括硬盘驱动器、软盘驱动器、CD-ROM装置、闪速存储器装置或其它大容量存储装置。
对于系统的另一实施例,根据一个实施例的指令可与片上系统一起使用。片上系统的一个实施例由处理器和存储器组成。用于一个此类系统的存储器是闪速存储器。闪速存储器可位于与处理器和其它系统组件相同的管芯上。此外,诸如存储器控制器或图形控制器的其它逻辑块也可位于片上系统上。
图1B示出了实现本发明的一个实施例的原理的数据处理系统140。本领域技术人员将容易认识到,本文描述的实施例可供备选处理系统使用,而不脱离本发明实施例的范围。
根据一个实施例,计算机系统140包括能够执行至少一个指令的处理核159。对于一个实施例,处理核159表示任何类型架构的处理单元,包含但不限于CISC、RISC或VLIW型架构。处理核159还可适合于以一个或多个工艺技术的制造,并且通过充分详细地表示在机器可读介质上,处理核159可适合于促进所述制造。
处理核159包括执行单元142、寄存器堆集合145、以及解码器144。处理核159还包含对理解本发明实施例不必要的附加电路(未示出)。执行单元142可被用于执行由处理核159接收的指令。除了执行典型处理器指令,执行单元142可执行打包指令集143中的指令,以便执行对打包数据格式的操作。打包指令集143包含用于执行本发明实施例的指令以及其它打包指令。执行单元142通过内部总线耦合到寄存器堆145。寄存器堆145表示处理核159上的用于存储信息(包含数据)的存储区域。如先前所提到的,要理解到,存储区域被用于存储不关键的打包数据。执行单元142耦合到解码器144。解码器144被用于将由处理核159接收的指令解码成控制信号和/或微代码入口点。响应于这些控制信号和/或微代码入口点,执行单元142执行适当操作。在一个实施例中,解码器被用于解译指令的操作码,其将指示应该对在指令内指示的对应数据执行什么操作。
处理核159与总线141耦合,以便与各种其它系统装置通信,所述各种其它系统装置例如可包含但不限于:同步动态随机存取存储器(SDRAM)控制146、静态随机存取存储器(SRAM)控制147、突发闪速存储器接口148、个人计算机存储卡国际协会(PCMCIA)/紧凑型闪存(CF)卡控制149、液晶显示器(LCD)控制150、直接存储器存取(DMA)控制器151以及备选总线主接口152。在一个实施例中,数据处理系统140还可包括I/O桥154以便经由I/O总线153与各种I/O装置通信。此类I/O装置例如可包含但不限于通用异步接收器/传送器(UART)155、通用串行总线(USB)156、蓝牙无线UART 157和I/O扩展接口158。
数据处理系统140的一个实施例规定移动、网络和/或无线通信以及能够执行包含文本字符串比较操作的SIMD操作的处理核159。处理核159可采用各种音频、视频、成像和通信算法编程,所述算法包含:离散变换,诸如Walsh-Hadamard变换,快速傅里叶变换(FFT)、离散余弦变换(DCT)以及它们的相应逆变换;压缩/解压缩技术,诸如色彩空间变换、视频编码运动估计或视频解码运动补偿;以及调制/解调(MODEM)功能,诸如脉冲译码调制(PCM)。
图1C示出了能够执行指令以挂起和恢复在安全飞地页面高速缓存中的安全飞地的迁移的数据处理系统的另一备选实施例。根据一个备选实施例,数据处理系统160可包含主处理器166、SIMD协处理器161、高速缓冲存储器167和输入/输出系统168。输入/输出系统168可选地可耦合到无线接口169。SIMD协处理器161能够执行包含根据一个实施例的指令的操作。处理核170可适合于以一个或多个工艺技术的制造,并且通过充分详细地在机器可读介质上表示,处理核170可适合于促进制造所有或部分数据处理系统160(包含处理核170)。
对于一个实施例,SIMD协处理器161包括执行单元162和寄存器堆集合164。主处理器166的一个实施例包括解码器165以识别指令集163中的指令(包含根据一个实施例的指令)以用于由执行单元162执行。对于备选实施例,SIMD协处理器161还包括至少部分解码器165B以解码指令集163中的指令。处理核170还包含对理解本发明实施例不必要的附加电路(未示出)。
在操作中,主处理器166执行数据处理指令流,其控制通用类型的数据处理操作(包含与高速缓冲存储器167和输入/输出系统168的交互)。嵌入在数据处理指令流内的是SIMD协处理器指令。主处理器166的解码器165将这些SIMD协处理器指令识别为应该由附连的SIMD协处理器161执行的类型。相应地,主处理器166在协处理器总线171上发布这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号),这些指令从协处理器总线171被任何附连的SIMD协处理器接收。在此情况下,SIMD协处理器161将接受并执行预期用于它的任何接收的SIMD协处理器指令。
数据可经由无线接口169接收以便由SIMD协处理器指令处理。对于一个示例,语音通信可以以数字信号形式被接收,其可由SIMD协处理器指令处理以重新生成代表语音通信的数字音频样本。对于另一个示例,压缩的音频和/或视频可以数字位流形式被接收,其可由SIMD协处理器指令处理以重新生成数字音频样本和/或运动视频帧。对于处理核170的一个实施例,主处理器166和SIMD协处理器161被集成到单个处理核170中,处理核170包括执行单元162、寄存器堆集合164、以及识别指令集163中的指令(包含根据一个实施例的指令)的解码器165。
图2是根据本发明的一个实施例的包含执行指令的逻辑电路的处理器200的微架构的框图。在一些实施例中,可实现根据一个实施例的指令,以对具有字节、字、双字、四字等大小以及诸如单和双精度整数和浮点数据类型的数据类型的数据元素进行操作。在一个实施例中,有序前端201可以是处理器200的一部分,该部分获取要执行的指令,并且准备所述指令以稍后在处理器流水线中进行使用。前端201可包含几个单元。在一个实施例中,指令预获取器226从存储器中获取指令,并将它们馈送到指令解码器228,其又解码或解译这些指令。例如,在一个实施例中,解码器将接收的指令解码成机器可执行的称为“微指令”或“微操作”(也称为microop或uop)的一个或多个操作。在其它实施例中,解码器将指令解析成操作码和对应的数据以及控制字段,它们由微架构使用以执行根据一个实施例的操作。在一个实施例中,追踪(trace)高速缓存230获得解码的uop并将它们汇编成uop队列234中的程序排序的序列或追踪以便执行。当追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成该操作所需的uop。
一些指令被转换成单个微-op,而其它指令需要几个微-op来完成整个操作。在一个实施例中,如果需要多于四个微-op来完成指令,则解码器228访问微代码ROM 232以执行指令。对于一个实施例,指令可被解码成小数量的微-op,以便在指令解码器228进行处理。在另一实施例中,指令可被存储在微代码ROM 232内,如果需要若干微-op来完成操作的话。追踪高速缓存230指的是入口点可编程逻辑阵列(PLA),其用来确定针对读取微代码序列的正确微指令指针,以完成来自微代码ROM 232的根据一个实施例的一个或多个指令。在微代码ROM 232完成对指令的微-op进行排序后,机器的前端201恢复从追踪高速缓存230获取微-op。
无序执行引擎203是指令被准备以用于执行的地方。无序执行逻辑具有多个缓冲器,以在指令沿流水线向下并且被调度用于执行时,平滑处理和重新排序指令的流以优化性能。分配器逻辑分配每个uop为了执行而所需要的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204和简单浮点调度器206)前面,分配器还为两个uop队列(一个用于存储器操作,并且一个用于非存储器操作)之一中的每个uop分配条目。Uop调度器202、204、206基于其相关性输入寄存器操作数源的准备度和uop完成其操作需要的执行资源的可用性,确定uop何时准备就绪执行。一个实施例的快速调度器202可在主时钟周期的每半个周期上进行调度,而其它调度器可每主处理器时钟周期仅调度一次。调度器对于分派端口进行裁决以调度uop以便执行。
寄存器堆208、210坐落在调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。对于整数运算和浮点运算,分别存在单独的寄存器堆208、210。一个实施例的每个寄存器堆208、210还包含旁路网络,其可向新的相关uop进行旁路或转发尚未写入寄存器堆中的刚刚完成的结果。整数寄存器堆208和浮点寄存器堆210还能够相互传递数据。对于一个实施例,整数寄存器堆208被分成两个单独的寄存器堆,一个寄存器堆用于数据的低阶32位,而第二寄存器堆用于数据的高阶32位。一个实施例的浮点寄存器堆210具有128位宽条目,因为浮点指令通常具有从64位到128位宽的操作数。
执行块211含有执行单元212、214、216、218、220、222、224,在这些执行单元中实际执行所述指令。该区段包含存储微指令需要执行的整数和浮点数据操作数值的寄存器堆208、210。一个实施例的处理器200由如下若干执行单元组成:地址生成单元(AGU)212、AGU214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD和SSE或其它运算。一个实施例的浮点ALU222包含64位×64位浮点除法器以执行除法、平方根和余数微-op。对于本发明的实施例,涉及浮点值的指令可用浮点硬件处置。在一个实施例中,ALU运算去到高速ALU执行单元216、218。一个实施例的快速ALU 216、218可以通过时钟周期一半的有效等待时间执行快速运算。对于一个实施例,最复杂的整数操作去到慢速ALU 220,因为慢速ALU 220包括用于长等待时间类型操作的整数执行硬件,如乘法器、位移、标记逻辑和分支处理。存储器加载/存储操作由AGU 212、214执行。对于一个实施例,整数ALU 216、218、220在对64位数据操作数执行整数运算的上下文中被描述。在备选实施例中,可实现ALU 216、218、220以支持各种数据位,包含16、32、128、256等。类似地,可实现浮点单元222、224以支持具有各种宽度位的一系列操作数。对于一个实施例,浮点单元222、224可结合SIMD和多媒体指令对128位宽打包数据操作数进行操作。
在一个实施例中,在父负载(parent load)已经完成执行之前,uop调度器202、204、206分派相关操作。由于在处理器200中推测性地调度和执行uop,故处理器200还包含处置存储器丢失的逻辑。如果数据加载在数据高速缓存中丢失,则流水线中可存在执行中(in flight)相关操作,其为调度器留下了暂时不正确的数据。重放机制跟踪和重新执行使用不正确数据的指令。可能只需要重放相关操作,并且允许完成独立操作。处理器的一个实施例的调度器和重放机制还设计成捕捉挂起和恢复在安全飞地页面高速缓存中的安全飞地的迁移的指令。
术语“寄存器”可指代被用作识别操作数的指令的部分的板载处理器存储位置。换而言之,寄存器可以是从处理器的外部可用的那些寄存器(从编程器的角度而言)。然而,实施例的寄存器不应被限制于意指特定类型的电路。相反,实施例的寄存器能够存储和提供数据,并且执行本文中描述的功能。本文中描述的寄存器可由处理器内的电路使用任何数量的不同技术实现,诸如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含用于打包数据的8个多媒体SIMD寄存器。对于下面的讨论,寄存器被理解为设计成保持打包数据的数据寄存器,诸如来自加利福尼亚州Santa Clara的IntelCorporation的以MMX技术实现的微处理器中的64位宽MMX™寄存器(在一些实例中也称为“mm”寄存器)。在整数和浮点形式两者中可用的这些MMX寄存器可与伴随SIMD 和SSE指令的打包数据元素一起操作。类似地,与SSE2、SSE3、SSE4或更高版本(一般称为“SSEx”)技术有关的128位宽XMM寄存器也能够被用于保持此类打包数据操作数。在一个实施例中,在存储打包数据和整数数据中,寄存器无需区分所述两种数据类型。在一个实施例中,整数和浮点被包含在相同寄存器堆或不同寄存器堆中。此外,在一个实施例中,浮点和整数数据可存储在不同寄存器或相同寄存器中。
在以下图形的示例中,描述了多个数据操作数。图3A示出根据本发明的一个实施例的在多媒体寄存器中的各种打包数据类型表示。图3A示出用于128位宽操作数的打包字节310、打包字320和打包双字(dword)330的数据类型。此示例的打包字节格式310为128位长,并且包含16个打包字节数据元素。字节在此处被定义为8位的数据。用于每个字节数据元素的信息被存储在针对字节0的位7到位0、针对字节1的位15到位8、针对字节2的位23到位16及最后针对字节15的位120到位127中。因此,在寄存器中使用所有可用位。此存储布置增大了处理器的存储效率。此外,利用访问的16个数据元素,现在可并行对16个数据元素执行一个操作。
通常,数据元素是与相同长度的其它数据元素一起存储在单个寄存器或存储器位置中的单独数据段。在与SSEx技术有关的打包数据序列中,XMM寄存器中存储的数据元素的数量是128位除以单独数据元素的以位为单位的长度。类似地,在与MMX和SSE技术有关的打包数据序列中,MMX寄存器中存储的数据元素的数量是64位除以单独数据元素的以位为单位的长度。虽然图3A中示出的数据类型是128位长,但本发明的实施例也可利用64位宽、256位宽、512位宽或其它大小的操作数操作。此示例的打包字格式320为128位长,并且包含8个打包字数据元素。每个打包字包含16位的信息。图3A的打包双字格式330为128位长,并且包含4个打包双字数据元素。每个打包双字数据元素包含32位的信息。打包四字为128位长,并且包含2个打包四字数据元素。
图3B示出备选的寄存器中的数据存储格式。每个打包数据可包括多于一个独立数据元素。示出了三个打包数据格式;打包半(half)341、打包单342和打包双343。打包半341、打包单342和打包双343的一个实施例包含固定点数据元素。对于备选实施例,打包半341、打包单342和打包双343中的一个或更多个可包含浮点数据元素。打包半341的一个备选实施例为128位长,其包含8个16位数据元素。打包单342的一个实施例为128位长,并且包含4个32位数据元素。打包双343的一个实施例为128位长,并且包含2个64位数据元素。将领会的是,此类打包数据格式可进一步扩展到其它寄存器长度,例如,96位、160位、192位、224位、256位、512位或更多。
图3C示出根据本发明的一个实施例的在多媒体寄存器中的各种有符号和无符号的打包数据类型表示。无符号的打包字节表示344示出在SIMD寄存器中的无符号的打包字节的存储。每个字节数据元素的信息被存储在针对字节0的位7到位0、针对字节1的位15到位8、针对字节2的位23到位16等及最后针对字节15的位120到位127中。因此,在寄存器中使用所有可用位。此存储布置可增大处理器的存储效率。此外,利用访问的16个数据元素,现在可以并行方式对16个数据元素执行一个操作。有符号的打包字节表示345示出有符号的打包字节的存储。要注意的是,每个字节数据元素的第8位可以是符号指示符。无符号的打包字表示346示出在SIMD寄存器中如何存储字7到字0。有符号的打包字表示347类似于无符号的打包字寄存器中的表示346。要注意的是,每个字数据元素的第16位是符号指示符。无符号的打包双字表示348显示如何存储双字数据元素。有符号的打包双字表示349类似于无符号的打包双字寄存器中的表示348。要注意的是,必需的符号位是每个双字数据元素的第32位。
图3D是对操作编码(操作码)格式360的一个实施例的描绘,格式360具有32位或更多的位,以及寄存器/存储器操作数寻址模式,其与万维网(www) at intel.com/products/processor/manuals/上从加利福尼亚州圣克拉拉Intel Corporation可获得的“Intel®64以及IA-32 Intel架构软件开发员手册组合第2A和2B卷:指令集参考A-Z”(Intel® 64 andIA-32 Intel Architecture Software Developer’s Manual Combined Volumes 2A and2B: Instruction Set Reference A-Z)中描述的操作码格式的类型相对应。在一个实施例中,指令可通过字段361和362中的一个或更多个字段编码。可识别直到每指令两个操作数位置,包括直到两个源操作数标识符364和365。对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其它实施例中,它们不同。对于备选实施例,目的地操作数标识符366与源操作数标识符365相同,而在其它实施例中,它们不同。在一个实施例中,通过源操作数标识符364和365识别的源操作数之一被指令的结果改写,而在其它实施例中,标识符364对应于源寄存器元素,并且标识符365对应于目的地寄存器元素。对于一个实施例,操作数标识符364和365可被用于识别32位或64位源和目的地操作数。
图3E是对具有40或更多个位的另一备选操作编码(操作码)格式370的描绘。操作码格式370与操作码格式360相对应,并且包括可选前缀字节378。根据一个实施例的指令可通过字段378、371和372的一个或更多个字段编码。通过源操作数标识符374和375以及通过前缀字节378,可识别直到每指令两个操作数位置。对于一个实施例,前缀字节378可用于识别32位或64位源和目的地操作数。对于一个实施例,目的地操作数标识符376与源操作数标识符374相同,而在其它实施例中,它们不同。对于备选实施例,目的地操作数标识符376与源操作数标识符375相同,而在其它实施例中,它们不同。在一个实施例中,指令对通过操作数标识符374和375识别的一个或更多个操作数进行操作,并且通过操作数标识符374和375识别的一个或更多个操作数通过指令的结果被改写,而在其它实施例中,通过标识符374和375识别的操作数被写入另一寄存器中的另一数据元素。操作码格式360和370允许由MOD字段363和373和由可选比例-索引-基础和位移字节部分地指定的寄存器到寄存器、存储器到寄存器、寄存器接(by)存储器、寄存器接寄存器、寄存器接中间物、寄存器到存储器寻址。
接下来转到图3F,在一些备选实施例中,64位(或128位、或256位、或512位或更多)单指令多数据(SIMD)算术运算可通过协处理器数据处理(CDP)指令被执行。操作编码(操作码)格式380描绘具有CDP操作码字段382和389的一个此类CDP指令。CDP指令的类型,对于备选实施例,操作可通过字段383、384、387和388的一个或多个字段编码。可识别直到每指令三个操作数位置,包括直到两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可对8、16、32和64位值进行操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,可使用条件字段381,有条件地执行指令。对于一些实施例,源数据大小可由字段383编码。在一些实施例中,可对SIMD字段进行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,饱和的类型可由字段384编码。
接下来转到图3G,图3G是根据另一实施例的用以挂起和恢复在安全飞地页面高速缓存中安全飞地的迁移的另一备选操作编码(操作码)格式397的描绘,所述格式397与万维网(www) at intel.com/products/processor/manuals/上从加利福尼亚州Santa Clara的Intel Corp.可获得的“Intel ®Advanced Vector Extensions Programming Reference”中描述的操作码格式类型对应。
原始x86指令集提供具有包含在附加字节中的地址音节与立即数操作数的各种格式的1字节操作码,其的存在从第一“操作码”字节已知。另外,存在保留作为操作码的修饰符(称为前缀,因为其必须放置在指令前)的某些字节值。当256个操作码字节(包括这些特殊前缀值)的原始调色板(palette)用尽时,单个字节专门用作256个操作码的新集合的转义(escape)。当添加向量指令(例如,SIMD)时,生成对更多操作码的需要,并且“两字节”操作码映射也不足够,即使在通过前缀的使用进行扩展时。为此,将新指令添加到附加映射中,所述附加映射使用2个字节加上可选前缀作为标识符。
另外,为促进64位模式中的附加寄存器,可在前缀与操作码(和确定该操作码所必需的任何转义字节)之间使用附加前缀(称为“REX”)。在一个实施例中,REX可具有4个“有效负载”位,以指示64位模式中的附加寄存器的使用。在其它实施例中,它可具有少于或多于4个位。至少一个指令集的通用格式(其通常与格式360和/或格式370对应)通过以下一般地示出:
[prefixes][rex]escape[escape2]opcode modrm(等)
操作码格式397与操作码格式370对应,并包括可选VEX前缀字节391(在一个实施例中以C4十六进制开始),以替换大多数其它常用遗留指令前缀字节与转义码。例如,以下示出使用两个字段来编码指令的实施例,当第二转义码在原始指令中存在时,或当需要使用REX字段中的附加位(例如,XB和W字段)时,可使用所述实施例。在下面示出的实施例中,遗留转义由新转义值表示,遗留前缀被完全压缩为“有效负载”字节的部分,遗留前缀被收回且可用于未来扩展,第二转义码在具有可用的未来映射或特征空间的“映射”字段中被压缩,并添加新特征(例如,增加的向量长度和附加源寄存器指定符)。
根据一个实施例的指令可由字段391和392中的一个或多个编码。可由字段391结合源操作数标识符374和375且结合可选比例-索引-基础(SIB)标识符393、可选位移标识符394和可选立即数字节395来标识高达每指令四个操作数位置。对于一个实施例,VEX前缀字节391可用于标识32位或64位源操作数和目的地操作数和/或128位或256位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式397提供的功能性可为具有操作码格式370的冗余,而在其它实施例中它们不同。操作码格式370和397允许由MOD字段373且由可选(SIB)标识符393、可选位移标识符394和可选立即数字节395部分指定的寄存器到寄存器、存储器到寄存器、寄存器接存储器、寄存器接寄存器、寄存器接立即数、寄存器到存储器寻址。
接下来转到图3H,其是用以根据另一实施例挂起和恢复在安全飞地页面高速缓存中安全飞地的迁移的另一备选操作编码(操作码)格式398的描绘。操作码格式398与操作码格式370和397对应,并包括可选EVEX前缀字节396(在一个实施例中以62十六进制开始),以替换大多数其它常用的遗留指令前缀字节和转义码并且提供附加功能性。根据一个实施例的指令可由字段396和392中的一个或多个编码。可由字段396结合源操作数标识符374和375并结合可选比例-索引-基础(SIB)标识符393、可选位移标识符394和可选立即数字节395来标识高达每指令四个操作数位置以及掩码。对于一个实施例,EVEX前缀字节396可用于标识32位或64位源操作数与目的地操作数和/或128位、256位或512位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式398提供的功能性可为具有操作码格式370或397的冗余,而在其它实施例中它们不同。操作码格式398允许由MOD字段373且由可选(SIB)标识符393、可选位移标识符394与可选立即数字节395部分指定的在具有掩码的情况下的寄存器到寄存器、存储器到寄存器、寄存器接存储器、寄存器接寄存器、寄存器接立即数、寄存器到存储器寻址。至少一个指令集的通用格式(其通常与格式360和/或格式370对应)通过以下一般地示出:
evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm]
对于一个实施例,根据EVEX格式398编码的指令可具有附加“有效负载”位,所述附加“有效负载”位可被用来采用附加新特征挂起和恢复安全飞地页面高速缓存中安全飞地的迁移,所述附加新特征诸如例如用户可配置掩码寄存器、或附加操作数、或者来自128位,256位或512位向量寄存器或者从其进行选择的更多寄存器之中的选择等。例如,在VEX格式397可用于没有掩码的指令的情况下,EVEX格式398可以用于具有明确的用户可配置掩码的指令。此外,在VEX格式397可用于使用128位或256位向量寄存器的指令的情况下,EVEX格式398可用于使用128位,256位,512位或更大(或更小)向量寄存器的指令。
通过如下的示例来示出用来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的示例指令或命令:
将被领会到的是,通过使用上述飞地指令来挂起和恢复安全飞地的迁移,迁移进程(例如,其中与虚拟机关联的安全飞地页面高速缓存存储器内容被认证、加密和写回,TLB条目被转储清除,用于页面的版本计数器被记录以用于认证并被安全存储,并且虚拟机被迁移到另一平台且被恢复等)能够被拆分成多个阶段,其中处理器核或逻辑处理器可继续在一个或多个阶段期间从只读页面来执行。如果修改了一个或多个页面,则它们可被重新进行认证,加密和写回,并且它们的版本计数器被递增。版本阵列页面可被类似地处理,并且版本阵列信息被安全地传输到迁移平台。因此,可以减少由于迁移进程而导致的性能降级,同时保证安全飞地数据的安全性并且不需要过度的复杂性和设计努力。
根据一些实施例,示例指令支持挂起和恢复安全EPC中飞地的迁移。 EPC将安全域控制结构(SDCS)存储在由用于管理进程的飞地以及由飞地域可访问的存储中。处理器检查对应的版本阵列(VA)页面是否被绑定到SDCS,并且如果是的话,则:递增在用于页面的SDCS中的版本计数器、使用SDCS中的版本计数器从EPC对页面执行认证加密、并将加密的页面写入外部存储器(例如,使用EWRITEBACK或EWBX指令)。第二处理器检查对应的VA页面是否绑定到第二处理器的第二SDCS,并且如果是的话,则:使用第二SDCS中的版本计数器执行对页面的认证解密、并且如果认证通过的话将解密的页面加载到第二处理器中的EPC(例如,使用ELOAD或ELDX指令)。
来自上述示例的指令能够指定在EPC中分配给处理器或多个处理器的域飞地以用来存储安全飞地控制结构数据、应用数据、应用代码等的安全存储的地址。在一些实施例中,管理进程飞地(例如用于虚拟机管理器(VMM)或安全容器)可以执行或者引起系统软件防护扩展(SGX)库执行指令(例如EPA或EPAX)以将域飞地的一个或多个页面绑定到SDCS。管理进程飞地可访问安全存储区域,以将所述一个或多个页面的认证加密拷贝从安全存储区域写入外部存储器(例如,使用EWRITEBACK或EWBX指令)。对于所述一个或多个页面的一个或多个版本可以分别在用于SDCS的安全存储区域中的版本阵列页面中被更新。飞地可使用标记为只读的页面(例如使用EWP指令)继续执行,同时相应页面的认证加密拷贝从安全存储区域被写入外部存储器。管理进程飞地还可以访问安全存储区域,以将所述一个或多个版本阵列页面的认证加密拷贝从安全存储区域写入外部存储器。用于最后版本阵列页面的版本阵列槽可被存储到SDCS中(例如,使用EDSTVASLOT指令)以用于认证安全飞地的迁移图像。SDCS然后可以被管理进程飞地关闭,停用或“静默”,并且SDCS中的对应属性字段可以被设置为指示SDCS被静默(例如,使用EDQUIESCE或EDQ指令)。然后,受信任的迁移飞地可以验证SDCS被静默,并将SDCS密封(例如,使用RDRAND和EGETKEY指令)在认证加密持久数据结构中,从而将其放置在外部非易失性存储器中以便迁移,并且然后管理进程飞地可以取消分配原始SDCS。
在一些实施例中,另一个受信任迁移飞地(例如在另一个平台上)可以执行或者引起系统软件防护扩展(SGX)库执行指令以访问外部存储器来检索此类认证加密持久数据结构以用于安全飞地到新的平台的迁移。来自认证加密持久数据结构的密封SDCS被解密和认证(例如,使用EGETKEY指令),并且验证元数据中的安全策略准许恢复与虚拟机关联的安全飞地。因此,用于被迁移的SDCS的安全飞地控制结构(SECS)由受信任的迁移飞地分配(例如,使用ECREATE或EDCREATE指令)给虚拟机,并且指派用于虚拟机的本地ID。然后,可以从密封的SDCS持久数据结构来配置(例如,使用EDINIT指令)迁移的SDCS,并且另一个管理进程飞地(例如,用于虚拟机管理器(VMM)或另一平台上的安全容器)可以将用于迁移的SDCS的SDCS指针加载到新平台的处理器寄存器中(例如,使用EDPTRLD指令)。版本阵列槽从SDCS加载到对于第一版本阵列页面的版本阵列槽(例如,使用EDLDVASLOT指令)。在针对迁移的SDCS中的版本来检查所述一个或多个版本阵列页面的版本时,所述一个或多个版本阵列页面的拷贝然后可从外部存储器被加载、解密和认证(例如,使用ELOAD或ELDX指令)。在针对迁移的SDCS中的版本检查所述一个或多个飞地页面的版本时,所述一个或多个飞地页面的拷贝然后可从外部存储器被加载、解密和认证。
在一些实施例中,本文所公开的指令和逻辑能够在迁移安全域进程中以及在从安全飞地内部的页面拷贝操作中被中断和恢复。因此,迁移安全域进程和为安全飞地建立页面的认证拷贝的前向进程可得以保证,并且通过及时服务未决中断可避免服务中的不可接受的故障。将被领会到的是,通过使用此类飞地指令来挂起和恢复安全EPC中安全飞地的迁移,与虚拟机关联的安全飞地页面高速缓存存储器内容可被认证、加密和写回,TLB条目可被转储清除,用于页面的版本计数器可被记录以用于认证并被安全存储,并且虚拟机能被迁移到另一平台且被恢复。迁移进程能够被拆分成多个阶段,其中处理器核或逻辑处理器可继续在一个或多个阶段期间从只读页面来执行。如果修改了一个或多个页面,则它们可被重新进行认证,加密和写回,并且它们的版本计数器被递增。版本阵列页面可被类似地处理,并且版本阵列信息能够被安全地传输到迁移平台。因此,可以减少由于迁移进程而导致的性能降级,同时保证安全飞地数据的安全性并且不需要过度的复杂性和设计努力。将被领会到的是,在版本不匹配和/或认证对于迁移的安全域失败的任何此类时间,迁移进程可以在目标平台中被挂起,并且始发平台可被用信号通知来恢复迁移进程(在是失败起因的点开始),使得有问题的页面可被重新认证,加密和写回,并递增其版本计数器。因此,安全迁移进程不仅为检测和防止恶化和/或篡改提供保证,而且还为在此类检测之后的复原以及在始发平台中重新开始迁移进程提供保证。还将被领会到的是,在没有针对此类指令的处理器支持的情况下,用于实现相同(或类似)技术效果的任何软件系统安全特征可能(如果真是可行的话)是极其昂贵的和/或性能限制到如下程度,即安全性的一些较弱度量可能会被不利地接受。
还将被领会到的是,管理权限、物理存储器和/或改变映射仍然可以由OS管理,但是当存储器内容被保护时(如在安全飞地中),OS不被准许或被信任来访问飞地私有存储器的实际受保护内容。保证私有存储器内容的安全性和/或完整性,以及管理迁移安全域进程的技术约束和建立安全域页面的安全认证拷贝,而不能信任OS,以上这些能够使用用来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令和处理逻辑来实现,而不需要精心设计的硬件支持和/或设计努力。
图4A是根据本发明的至少一个实施例的示出有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。图4B是根据本发明的至少一个实施例的示出要包括在处理器中的无序发布/执行逻辑、寄存器重命名逻辑和有序架构核的框图。图4A中的实线框示出有序流水线,而虚线框示出寄存器重命名、无序发布/执行流水线。类似地,图4B中的实线框示出有序架构逻辑,而虚线框示出寄存器重命名逻辑和无序发布/执行逻辑。
在图4A中,处理器流水线400包括获取阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也称为分派或发布)阶段412、寄存器读/存储器读阶段414、执行阶段416、写回/存储器写阶段418、异常处理阶段422及提交阶段424。
在图4B中,箭头表示在两个或更多个单元之间的耦合,并且箭头的方向指示在那些单元之间数据流的方向。图4B显示处理器核490,其包括耦合到执行引擎单元450的前端单元430,并且两者均耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或备选核类型。在又一个选项中,核490可以是专用核,诸如,例如网络或通信核、压缩引擎、图形核等。
前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,所述指令高速缓存单元434耦合到指令转化后备缓冲器(TLB) 436,所述TLB 436耦合到指令获取单元438,其耦合到解码单元440。解码单元或解码器可将指令解码,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,它们从原始指令解码或者以其它方式反映原始指令或者从原始指令得到。解码器可使用各种不同机制实现。适合机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元434还耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括耦合到引退单元454和一个或多个调度器单元456的集合的重命名/分配器单元452。调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗口等。调度器单元456耦合到物理寄存器堆单元458。每个物理寄存器堆单元458表示一个或多个物理寄存器堆,这些寄存器堆中的不同寄存器堆存储一个或多个不同数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点等,状态(例如,作为要执行的下一指令的地址的指令指针)等。物理寄存器堆单元458由引退单元454重叠以示出其中可实现寄存器重命名和无序执行的各种方式(例如,使用重排序缓冲器和引退寄存器堆;使用将来文件、历史缓冲器和引退寄存器堆;使用寄存器映射和寄存器池等)。通常,架构寄存器从处理器外部或者从程序器的角度而言是可见的。寄存器不限于任何已知特定类型的电路。各种不同类型的寄存器只要能够如本文中所述存储和提供数据,它们便是适合的。适合寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。引退单元454和物理寄存器堆单元458耦合到执行集群460。执行集群460包括一个或多个执行单元462的集合和一个或多个存储器访问单元464的集合。执行单元462可执行各种操作(例如,移位、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)进行执行。虽然一些实施例可包括专用于特定功能或功能的集合的多个执行单元,但其它实施例可只包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元456、物理寄存器堆单元458和执行集群460示为可能是多个,这是因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器存取流水线,每个流水线具有其自己的调度器单元、物理寄存器堆单元和/或执行集群,并且在单独的存储器存取流水线的情况下,可实现其中仅此流水线的执行集群具有存储器访问单元464的某些实施例)。还应理解的是,在使用单独流水线的情况下,一个或多个这些流水线可以是无序发布/执行,并且其余的流水线是有序的。
存储器访问单元464的集合耦合到存储器单元470,其包括耦合到数据高速缓存单元474的数据TLB单元472,数据高速缓存单元474耦合到2级(L2)高速缓存单元476。在一个示范实施例中,存储器访问单元464可包括负载单元、存储地址单元和存储数据单元,它们中的每个耦合到存储器单元470中的数据TLB单元472。L2高速缓存单元476耦合到一个或多个其它级的高速缓存,并且最终耦合到主存储器。
通过示例,示范寄存器重命名、无序发布/执行核架构可如下实现流水线400:1)指令获取438执行获取阶段和长度解码阶段402和404;2)解码单元440执行解码阶段406;3)重命名/分配器单元452执行分配阶段408和重命名阶段410;4)调度器单元456执行调度阶段412;5)物理寄存器堆单元458和存储器单元470执行寄存器读/存储器读阶段414;执行集群460执行执行阶段416;6)存储器单元470和物理寄存器堆单元458执行写回/存储器写阶段418;7)各种单元涉及异常处理阶段422;以及8)引退单元454和物理寄存器堆单元458执行提交阶段424。
核490可支持一个或多个指令集(例如,x86指令集(其中对于较新版本已添加一些扩展);加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集;加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集(具有诸如NEON的可选另外扩展))。
应理解的是,核可支持多线程(执行两个或更多个并行的操作或线程的集合),并且可以以各种方式这样做,包括时间片多线程、同时多线程(其中,单个物理核提供用于物理核在同时进行多线程的每个线程的逻辑核)或其组合(例如时间片获取和解码及之后的同时多线程,诸如在Intel®超线程技术中一样)。
虽然寄存器重命名在无序执行的上下文中描述,但应理解的是,可在有序架构中使用寄存器重命名。虽然处理器的所示实施例也包括单独的指令和数据高速缓存单元434/474及共享L2高速缓存单元476,但备选实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存,或多个级的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外的外部高速缓存的组合。备选地,所有高速缓存可在核和/或处理器的外部。
图5是根据本发明实施例的具有集成存储器控制器和图形的单核处理器和多核处理器500的框图。图5中的实线框示出处理器500,其具有单个核502A、系统代理510、一个或多个总线控制器单元516的集合,而虚线框的可选添加示出备选处理器500,其具有多个核502A-N、在系统代理单元510中的一个或多个集成存储器控制器单元514的集合,以及集成图形逻辑508。
存储器层级包括核内的一级或多级高速缓存、共享高速缓存单元506集合或一个或多个共享高速缓存单元506、耦合到集成存储器控制器单元514的集合的外部存储器(未示出)。共享高速缓存单元506的集合可包括一个或多个中级高速缓存,例如2级(L2)、3级(L3)、4级(L4),或其它级高速缓存、末级高速缓存(LLC),和/或其组合。虽然在一个实施例中,基于环形的互连单元512将集成图形逻辑508、共享高速缓存单元506的集合以及系统代理单元510互连,但备选实施例可使用任何数量的众所周知的技术来互连此类单元。
在一些实施例中,核502A-N中的一个或多个能够进行多线程。系统代理510包括协调并操作核502A-N的那些组件。系统代理单元510可包括例如功率控制单元(PCU)和显示单元。PCU可以是用于调节核502A-N与集成图形逻辑508的功率状态所需的逻辑和组件,或者包括上述逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核502A-N在架构和/或指令集方面可以是同构或异构的。例如,核502A-N中的一些可以是有序的,而其它核是无序的。作为另一示例,核502A-N中的两个或更多个可以能够执行相同指令集,而其它核可以仅能够执行那个指令集的子集或不同指令集。
处理器可以是通用处理器,例如Core™,i3、i5、i7、2 Dou和Quad、Xeon™、Itanium™、XScale™或StrongARM™处理器,其从加利福尼亚州,Santa Clara的IntelCorporation可获得。备选地,处理器可来自另一公司,例如ARM Holdings, Ltd, MIPS等。处理器可以是专用处理器,诸如,例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器可实现在一个或多个芯片上。处理器500可以是一个或多个衬底的一部分和/或可使用许多工艺技术(诸如,例如BiCMOS、CMOS或NMOS)中的任一个将处理器500实现在一个或多个衬底上。
图6-8是适合于包括处理器500的示范系统,而图9是可以包括一个或多个核502的示范片上系统(SoC)。在本领域已知的其它系统设计和配置对于膝上型计算机、桌面型计算机、手持PC、个人数字助理、工程设计工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置和各种其它电子装置也是适合的。一般而言,能够结合处理器和/或本文所公开的其它执行逻辑的大量系统或电子装置一般是适合的。
现在参考图6,示出了根据本发明的一个实施例的系统600的框图。系统600可包含一个或多个处理器610、615,它们耦合到图形存储器控制器中枢(GMCH)620。在图6中用虚线指代附加处理器615的可选性质。
每个处理器610、615可以是某版本的处理器500。然而,应该指出,不太可能的是,在处理器610、615中将存在集成图形逻辑和集成存储器控制单元。图6示出了GMCH 620可耦合到存储器640,存储器640例如可以是动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可与非易失性高速缓存关联。
GMCH 620可以是芯片集,或者芯片集的一部分。GMCH 620可与处理器610、615通信,并控制处理器610、615与存储器640之间的交互。GMCH 620也可充当处理器610、615与系统600的其它元件之间的加速总线接口。对于至少一个实施例,GMCH 620经由多点总线(诸如前侧总线(FSB)695)与处理器610、615通信。
更进一步,GMCH 620耦合到显示器645(诸如平板显示器)。GMCH 620可包含集成图形加速器。GMCH 620进一步耦合到输入/输出(I/O)控制器中枢(ICH)650,其可用于将各种外设装置耦合到系统600。例如在图6的实施例中示出外部图形装置660,其可以是耦合到ICH 650的分立图形装置,连同另一外设装置670。
备选地,在系统600中也可存在附加的或不同的处理器。例如,附加处理器615可包含与处理器610相同的附加处理器、与处理器610异质或不对称的附加处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。在品质度量谱(包含架构、微架构、热、功耗特性等)方面,在物理资源610、615之间可以存在各种差异。这些差异在处理器610、615之间可有效地将它们自己标明为不对称并且异质。对于至少一个实施例,各种处理器610、615可驻留在同一管芯封装中。
现在参考图7,示出了根据本发明的实施例的第二系统700的框图。如图7中所示的,多处理器系统700是点对点互连系统,并且包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每个可以如一个或多个处理器610、615一样,是某版本的处理器500。
虽然只示出有两个处理器770、780,但要理解,本发明的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理器。
分别示出处理器770和780包含集成存储器控制器单元772和782。处理器770还包含点对点(P-P)接口776和778作为其总线控制器单元的一部分;类似地,第二处理器780包含P-P接口786和788。处理器770、780可经由点对点(P-P)接口750使用P-P接口电路778、788交换信息。如图7中所示,IMC 772和782将处理器耦合到相应存储器,即存储器732和存储器734,它们可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可各自经由单独P-P接口752、754使用点对点接口电路776、794、786、798与芯片集790交换信息。芯片集790还可经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包含在任一处理器中或两个处理器外,仍经由P-P互连与处理器连接,使得任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中(如果处理器被置于低功率模式的话)。
芯片集790可经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外设组件互连(PCI)总线,或诸如PCI高速总线的总线,或另一个第三代I/O互连总线,尽管本发明的范围不限于此。
如图7中所示,各种I/O装置714可耦合到第一总线716,连同将第一总线716耦合到第二总线720的总线桥718。在一个实施例中,第二总线720可以是低管脚计数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线720,例如包含键盘和/或鼠标722、通信装置727和存储单元728,诸如盘驱动器或可包含指令/代码和数据730的其它大容量存储装置。进一步说,音频I/O 724可耦合到第二总线720。要指出,其它架构是可能的。例如,代替图7的点对点架构,系统可实现多点总线或其它此类架构。
现在参考图8,示出了根据本发明的实施例的第三系统800的框图。图7和图8中的相似的元件带有相似的附图标记,并且已经从图8中省略了图7的某些方面,以便避免使图8的其它方面混淆。
图8示出处理器870、880可分别包含集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872、882可包含集成存储器控制器单元,诸如上面结合图5和图7所描述的。此外,CL 872、882也可包含I/O控制逻辑。图8不仅示出了存储器732、734可耦合到CL 872、882,而且I/O装置814也耦合到控制逻辑872、882。遗留I/O装置815耦合到芯片集。
现在参考图9,示出了根据本发明的实施例的SoC 900的框图。图5中的相似元件带有相似附图标记。还有,虚线框是更高级SoC上的可选特征。在图9中,互连单元902耦合到:应用处理器910,其包含一个或多个核502A-N的集合以及共享高速缓存单元506;系统代理单元510;总线控制器单元516;集成存储器控制器单元514;一个或多个媒体处理器920的集合,其可包含集成图形逻辑508、用于提供静止和/或视频相机功能性的图像处理器924、用于提供硬件音频加速的音频处理器926以及用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及用于耦合到一个或多个外部显示器的显示器单元940。
图10示出了根据一个实施例的可执行至少一个指令的包含中央处理单元(CPU)和图形处理单元(GPU)的处理器。在一个实施例中,执行根据至少一个实施例的操作的指令可由CPU执行。在另一实施例中,指令可由GPU执行。在又一实施例中,指令可通过由GPU和CPU执行的操作组合执行。例如,在一个实施例中,根据一个实施例的指令可被接收和解码以便在CPU上执行。然而,解码指令内的一个或多个操作可由CPU执行,并且结果返回到GPU以用于指令的最后引退。相反,在一些实施例中,CPU可充当主处理器,并且GPU充当协处理器。
在一些实施例中,受益于高度并行吞吐量处理器的指令可由GPU执行,而受益于处理器的性能(其受益于深流水线架构)的指令可由CPU执行。例如,图形、科学应用、金融应用和其它并行工作负荷可受益于GPU的性能,并被相应地执行,而更多序列应用(诸如操作系统内核或应用代码)可更适合于CPU。
在图10中,处理器1000包含CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示装置1040、高清多媒体接口(HDMI)控制器1045、MIPI控制器1050、闪速存储器控制器1055、双数据速率(DDR)控制器1060、安全性引擎1065和I2S/I2C(集成芯片间声音/集成电路间)接口1070。其它逻辑和电路可包含在图10的处理器中,包含更多CPU和GPU以及其它外设接口控制器。
至少一个实施例的一个或多个方面可由存储在表示处理器内的各种逻辑的机器可读介质上的代表性数据实现,其当由机器读取时使机器制造执行本文描述的技术的逻辑。称为“IP核”的此类表示可存储在有形机器可读介质(“带”)上,并供应给各种消费者或制造设施,以加载到实际上制造逻辑或处理器的制造机器中。例如,诸如由ARM Holdings,Ltd开发的Cortex™族处理器和中国科学院计算技术研究所(ICT)开发的龙芯IP核的IP核可许可或销售到各种客户或被许可人,诸如Texas Instruments、Qualcomm、Apple或Samsung,并且在由这些客户或被许可人生产的处理器中实现。
图11示出了根据一个实施例示出IP核开发的框图。存储装置1130包含模拟软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(例如硬盘)、有线连接(例如因特网)1150或无线连接1160提供给存储装置1130。由模拟工具和模型生成的IP核信息然后可被传送到制造设施,其中它可由第三方制造以执行根据至少一个实施例的至少一个指令。
在一些实施例中,一个或多个指令可对应于第一类型或架构(例如x86),并且在不同类型或架构(例如ARM)的处理器上转化或仿真。根据一个实施例,指令因此可在任何处理器或处理器类型(包含ARM、x86、MIPS、GPU)或其它处理器类型或架构上执行。
图12示出了根据一个开实施例,如何由不同类型的处理器仿真第一类型的指令。在图12中,程序1205含有可执行与根据一个实施例的指令相同或基本上相同功能的一些指令。然而,程序1205的指令可属于与处理器1215不同或不兼容的类型和/或格式,意味着,程序1205中的类型的指令可能不能够由处理器1215本地执行。然而,在仿真逻辑1210的帮助下,程序1205的指令被转化成能够由处理器1215本地执行的指令。在一个实施例中,仿真逻辑实施在硬件中。在另一实施例中,仿真逻辑实施在有形、机器可读介质中,其含有将程序1205中的类型的指令转化成由处理器1215本地可执行的类型。在其它实施例中,仿真逻辑是固定功能或可编程硬件以及存储在有形、机器可读介质上的程序的组合。在一个实施例中,处理器含有仿真逻辑,而在其它实施例中,仿真逻辑存在于处理器外部,并且由第三方提供。在一个实施例中,处理器能够通过执行在处理器中含有的或与处理器关联的微代码或固件来加载实施在含有软件的有形、机器可读介质中的仿真逻辑。
图13是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示出的实施例中,指令转换器是软件指令转换器,尽管备选地指令转换器可以用软件、固件、硬件或其各种组合实现。图13示出可使用x86编译器1304编译采用高级语言1302的程序以生成x86二进制代码1306,其可由具有至少一个x86指令集核的处理器1316本地执行。具有至少一个x86指令集核的处理器1316表示可通过兼容执行或以其它方式处理(1)Intel x86指令集核的指令集的实质部分或(2)定向为在具有至少一个x86指令集核的Intel处理器上运行的应用或其它软件的对象代码版本,来执行与具有至少一个x86指令集核的Intel处理器基本上相同功能,以便实现与具有至少一个x86指令集核的Intel处理器基本上相同结果的任何处理器。x86编译器1304表示可操作以生成x86二进制代码1306(例如对象代码)的编译器,二进制代码1306可在具有或没有附加连锁处理的情况下在具有至少一个x86指令集核的处理器1316上执行。类似地,图13示出采用高级语言1302的程序可使用备选指令集编译器1308编译以生成备选指令集二进制代码1310,其可由没有至少一个x86指令集核的处理器1314(例如,具有执行加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集,和/或执行加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集的核的处理器)本地执行。指令转换器1312用于将x86二进制代码1306转换成可由没有x86指令集核的处理器1314本地执行的代码。这个转换的代码不太可能不与备选指令集二进制代码1310相同,因为能够进行此操作的指令转化器难以制作;然而,转换的代码将完成一般操作,并且由来自备选指令集的指令组成。从而,指令转换器1312表示通过仿真、模拟或任何其它过程,允许不具有x86指令集处理器或核的处理器或其它电子装置执行x86二进制代码1306的软件、固件、硬件或其组合。
将被领会到的是,通过使用飞地指令来挂起和恢复安全飞地的迁移,迁移进程(例如,其中与虚拟机关联的安全飞地页面高速缓存存储器内容被认证、加密和写回,TLB条目被转储清除,用于页面的版本计数器被记录以用于认证并被安全存储,并且虚拟机被迁移到另一平台且被恢复等)能够被拆分成多个阶段,其中处理器核或逻辑处理器可继续在一个或多个阶段期间从只读页面来执行。如果修改了一个或多个页面,则它们可被重新进行认证,加密和写回,并且它们的版本计数器被递增。版本阵列页面可被类似地处理,并且版本阵列信息被安全地传输到迁移平台。因此,可以减少由于迁移进程而导致的性能降级,同时保证安全飞地数据的安全性并且不需要过度的复杂性和设计努力。
图14示出处理器核1401中的设备的实施例,其用于使用指令挂起和恢复安全飞地页面高速缓存中安全飞地的迁移。设备包括安全飞地(SE)单元1402和飞地页面高速缓存EPC 1420。对于一些实施例,EPC 1420可以是更大的高速缓存单元的一部分,例如,一级高速缓存L1 1440或二级高速缓存(未示出)。对于其它实施例,EPC 1420可以是由多个硬件线程,逻辑处理器或处理核共享的单独结构或分布式结构,用以存储分配给安全飞地并且由运行特定域的进程的硬件线程,逻辑处理器或处理核可访问的页面1443的地址的安全数据。对于一些实施例,EPC 1420可存储用于页面1443的版本数据或计数器和版本阵列页面1442中的其他安全飞地页面,并且分配给安全域的数据页面和版本阵列页面二者可以被绑定到安全域控制结构(SDCS )1441,安全域控制结构(SDCS )1441可由运行与SDCS 1441关联的特定安全域的进程的硬件线程,逻辑处理器或处理核访问,也可由管理进程的安全飞地(也称为控制飞地或迁移飞地)访问。SE单元1402可以包括加密单元1410,完整性保护单元1412,访问控制单元1414,范围寄存器1416,飞地页面高速缓存映射EPCM 1418和寄存器SDCS PTR 1419,用以存储到活动SDCS 1441的指针。SE单元1402还可以包括飞地指令1403,其包括:EDALLOCX指令1431,EDSTVASLOT指令1432,EPAX指令1433,EDTRACK指令1434,EWP /EWPC指令1435,EWBX指令1436,EDEXIT指令1437,EDQ指令1438和其他未示出的飞地指令(例如AEX指令,EDINIT指令,ERESUME指令等)。
处理器核1401还包括TLB 1425,其中可以安装转化以访问EPC 1420。处理器核1401还包括解码阶段1422,读阶段1424,一个或多个执行单元(例如执行单元1426),和写阶段1428。处理器核1401的实施例还可以包括用于执行飞地指令1403的其他流水线阶段(例如,如流水线400中所示),以挂起和恢复安全飞地页面高速缓存EPC 1420中安全飞地的迁移。
在一个实施例中,飞地指令1403通过规定页面1442和1443被认证,加密并写入外部存储器1450和被转移或迁移到另一平台来支持挂起和恢复安全EPC 1420中的飞地的迁移。飞地指令1403还支持SDCS 1441本身被认证,加密并写入外部存储器1450,以便它可以安全地转移到另一平台并被重新启动。EPC 1420将活动的SDCS 1441存储在由用于管理进程的飞地,以及由安全飞地的域集合可访问的存储中。例如,处理器1401可以使用EWBX指令1436来对页面1443进行认证,加密并写入外部存储器1450。处理器1401检查对应的版本阵列(VA)页面1442是否被绑定到由SDCS PTR 1419所指向的SDCS,并且如果是的话,则:递增在用于页面1443的SDCS 1441中的版本计数器、使用SDCS 1441中的版本计数器从EPC 1420对页面1443执行认证加密、并将加密的页面写入外部存储器。在页面1443被安全地转移到另一平台之后,第二处理器将执行相反的操作,检查对应的VA页面是否绑定到第二处理器的第二SDCS,并且如果是的话,则:使用第二SDCS中的版本计数器执行对页面1441的认证解密、并且如果认证通过的话将解密的页面加载到第二处理器中的EPC(例如,使用ELOAD或ELDX指令)。
作为另一个示例,处理器1401可以发起迁移进程,其中使用EDALLOCX指令1431将SDCS 1441分配给控制飞地,并且SDCS 1441被配置(例如,使用一个或多个EDINIT指令等)用于第一安全飞地。可以使用一个或多个EPAX指令1433将第一安全飞地的一个或多个页面1442和1443绑定到SDCS 1441。然后,可使用EWBX指令1436将所述一个或多个页面1443的认证加密拷贝从第一安全存储区域EPC 1420写入外部存储器1450。在用于SDCS 1441的安全存储区域中,一个或多个页面1443的一个或多个版本可作为EWBX指令1436的结果而在一个或多个版本阵列页面1442中被更新。将被领会到的是,飞地可以使用标记为只读的页面继续执行(例如,使用EWP / EWPC指令1435),同时相应页面1442和1443被认证,加密并且相应页面的拷贝从安全存储区域EPC 1420被写入外部存储器1450。如果在任何时间域飞地中的一个或多个需要修改页面1442和/或1443,则写保护可被移除或清除(例如,使用EWP /EWPC指令1435),迁移进程可被挂起,并且然后在之后被恢复(在需要此类修改的页面或多个页面开始)。响应于EDTRACK指令1434,可以跟踪需要修改页面1442和/或1443的任何域飞地。也可以使用EWBX指令1436将一个或多个版本阵列页面1442的认证加密拷贝从安全存储区域EPC 1420写入外部存储器1450。版本阵列槽可以被保存在SDCS 1441中(例如,使用EDSTVASLOT指令1432或类似的指令)。域飞地进程可以使用EEXIT指令1437退出安全飞地。然后,可以使SDCS 1441静默,并且可以设置SDCS 1441中的对应属性字段以指示SDCS 1441被静默(例如,使用EDQ指令1438)。 SDCS 1441可以被密封在认证加密持久结构中(例如使用RARAND和EGETKEY指令或其他类似指令)。认证加密持久结构可以被存储到外部存储器1450以用于迁移。管理进程飞地然后可以取消分配SDCS 1441并且密封的结构可以被安全地传送和迁移到另一个平台。
在一些实施例中,另一个受信任迁移飞地(例如在另一个平台上)可以执行或者引起系统软件防护扩展(SGX)库执行指令以访问外部存储器来检索此类认证加密持久数据结构以用于安全飞地到新的平台的迁移。来自认证加密持久数据结构的密封SDCS被解密和认证(例如,使用EGETKEY指令),并且验证元数据中的安全策略准许恢复与虚拟机关联的安全飞地。将被领会到的是,在版本不匹配和/或认证对于目标平台中迁移的安全域失败的任何时间,迁移进程可以在目标平台中被挂起,并且始发处理器1401可被用信号通知来恢复迁移进程(在是失败起因的点开始)。
图15示出处理器核1501中的设备的备选实施例,其用于使用指令挂起和恢复安全飞地页面高速缓存中安全飞地的迁移。设备包括安全飞地(SE)单元1502和飞地页面高速缓存EPC 1520。对于一些实施例,EPC 1520可以是更大的高速缓存单元的一部分,例如,一级高速缓存L1 1540或二级高速缓存(未示出)。对于其它实施例,EPC 1520可以是由多个硬件线程,逻辑处理器或处理核共享的单独结构或分布式结构,用以存储分配给安全飞地并且由运行特定域的进程的硬件线程,逻辑处理器或处理核可访问的页面1543的地址的安全数据。对于一些实施例,EPC 1520可存储用于页面1543的版本数据或计数器和版本阵列页面1542中的其他安全飞地页面,并且分配给安全域的数据页面和版本阵列页面二者可以被绑定到安全域控制结构(SDCS )1541,安全域控制结构(SDCS )1541可由运行与SDCS 1541关联的特定安全域的进程的硬件线程,逻辑处理器或处理核访问,也可由管理进程的安全飞地(也称为控制飞地或迁移飞地)访问。SE单元1502可以包括加密单元1510,完整性保护单元1512,访问控制单元1514,范围寄存器1516,飞地页面高速缓存映射EPCM 1518和寄存器SDCS PTR 1519,用以存储到活动SDCS 1541的指针。SE单元1502还可以包括飞地指令1503,其包括:ECREATE指令1531,EDLDVASLOT指令1532,EDINIT指令1533,EDPTRLD指令1534,EPAX指令1535,ELOAD指令1536,EENTER指令1537,EGETKEY指令1538和其他未示出的飞地指令(例如AEX指令,EDINIT指令,ERESUME指令等)。
处理器核1501还包括TLB 1525,其中可以安装转化以访问EPC 1520。处理器核1501还包括解码阶段1522,读阶段1524,一个或多个执行单元(例如执行单元1526),和写阶段1528。处理器核1501的实施例还可以包括用于执行飞地指令1503的其他流水线阶段(例如,如流水线400中所示),以挂起和恢复安全飞地页面高速缓存EPC 1520中安全飞地的迁移。
在一个实施例中,飞地指令1503通过规定将页面1542和1543从另一个平台转移或迁移并从外部存储器1550被检索然后被解密和认证,来支持挂起和恢复安全EPC 1520中飞地的迁移。重要的是,飞地指令1503支持SDCS 1541本身从另一个平台安全地转移或迁移并从外部存储器1550被检索然后被解密、认证以及重新启动。EPC 1520将迁移的SDCS 1541存储在由在目标平台上用于管理进程的另一飞地,以及被迁移的安全飞地域集可访问的存储中。例如,处理器1501可从外部存储器1550检索页面1543,然后使用ELOAD(或ELDX)指令1536对其进行解密和认证。处理器1501检查对应的VA页面1542是否被绑定到由SDCS PTR1519指向的SDCS,并且如果是的话,则:使用所述SDCS 1541中的版本计数器,执行从与处理器1501在操作上耦合的外部存储器1550的页面1542的认证解密,并且如果认证解密的认证通过,则将页面1443的解密拷贝加载到EPC 1520。
作为另一示例,处理器1501可以完成迁移进程,其中访问外部存储器1550以检索认证加密持久性数据结构。密封的SDCS 1441可以从加密持久数据结构被解密和认证。使用ECREATE指令1531可为迁移的SDCS 1541分配安全飞地控制结构(SECS)。从密封的SDCS1441配置迁移的SDCS 1541(例如使用EDINIT指令1533或其他指令)。用于被迁移的SDCS1541的SDCS指针可以使用EDPTRLD指令1534被加载到处理器寄存器SDCS PTR 1519中。来自SDCS 1541的版本阵列槽被复原用于针对一个或多个版本阵列页面的第一版本阵列页面1542的版本阵列槽(例如,使用EDLDVASLOT指令1532)。用于进行解密的密钥可以使用EGETKEY指令1538或类似的指令从SDCS 1541获得。所述一个或多个版本阵列页面1542的拷贝可从外部存储器1550被加载到安全存储EPC 1520、被解密以及认证(例如,使用ELOAD指令1536或一些类似的指令)。针对迁移的SDCS 1541中的版本(例如,作为ELOAD指令1536或类似指令的结果)来检查所述一个或多个版本阵列页面1542的版本。安全飞地的所述一个或多个数据页面1543的拷贝从外部存储器1550被加载到安全存储EPC1520、被解密和认证,同时继续针对迁移的SDCS1541中的版本检查所述一个或多个飞地页面1543的版本。迁移的域飞地进程可以使用EENTER指令1537进入安全飞地。将被领会到的是,在版本不匹配和/或认证对于迁移的安全域失败的任何时间,迁移进程可以在目标平台处理器1501中被挂起,并且始发平台(例如处理器1401)可被用信号通知来恢复迁移进程(在是失败起因的点开始)。
图16示出进程1601的一个实施例的流程图,进程1601用来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移。本文公开的进程1601和其他进程通过处理块来执行,所述处理块可包括专门的硬件或由通用机器或由专用机器或由两者的组合可执行的软件或固件操作代码。
在进程1601的处理块1605中,安全域控制结构(SDCS)被分配给控制飞地(例如使用EDALLOCX指令或一些其他类似的指令)。在处理块1610中,配置用于第一安全飞地的SDCS(例如,使用一个或多个EDINIT指令等)。在处理块1615中,第一安全飞地的一个或多个页面被绑定到SDCS(例如,使用一个或多个EPA或EPAX指令)。在处理块1620中,从第一安全存储区域向外部存储器(例如,使用EWRITEBACK或EWBX指令或某种其他类似指令)写入所述一个或多个页面的认证加密拷贝。在处理块1625中,在用于SDCS的第一安全存储区域中(或在SDCS本身中)对所述一个或多个页面的一个或多个版本在一个或多个版本阵列页面中分别进行更新(例如,作为EWRITEBACK或EWBX指令或类似指令的结果)。将被领会到的是,飞地可以使用标记为只读的页面继续执行(例如,使用EWP指令),同时相应页面被认证,加密并且相应页面的拷贝从安全存储区域被写入外部存储器。如果在任何时间域飞地中的一个或多个需要修改此类页面,则写保护可被移除或清除(例如,使用EWPC指令),迁移进程1601可被挂起,并且然后在之后被恢复(在需要此类修改的页面或多个页面开始)。在处理块1630中,将所述一个或多个版本阵列页面的认证加密拷贝从第一安全存储区域写入外部存储器(例如,使用EWRITEBACK或EWBX指令或类似指令)。在处理块1635中,版本阵列槽被保存在SDCS中(例如,使用EDSTVASLOT指令或一些其他类似指令)。在处理块1640中,使SDCS静默,并且可以设置SDCS中的对应属性字段以指示SDCS被静默(例如,使用EDQUIESCE或EDQ指令)。在处理块1645中,SDCS被密封在认证加密持久结构中(例如使用RARAND和EGETKEY指令或一些其他类似指令)。在处理块1650中,认证加密持久结构被存储到外部非易失性存储器以用于迁移。管理进程飞地然后可以取消分配SDCS并且密封的结构可以被安全地传送和迁移到另一个平台。将被领会到的是,在版本不匹配和/或认证对于目标平台中迁移的安全域失败的任何时间,迁移进程1701可以在目标平台中被挂起,并且始发平台可被用信号通知来恢复迁移进程1601(在是失败起因的点开始)。
将进一步被领会到的是,虽然本文中公开的进程1601和其他进程的处理块被图示为以迭代方式执行,但是可以优选地在任何可能的情况下执行以替代的顺序、或者同时、或者以并行方式的执行。
还将被领会到的是,通过使用上述飞地指令来挂起和恢复安全飞地的迁移,迁移进程(例如,其中与虚拟机关联的安全飞地页面高速缓存存储器内容被认证、加密和写回,TLB条目被转储清除,用于页面的版本计数器被记录以用于认证并被安全存储,并且虚拟机被迁移到另一平台且被恢复等)能够被拆分成多个阶段,其中处理器核或逻辑处理器可继续在一个或多个阶段期间从只读页面来执行。如果修改了一个或多个页面,则它们可被重新进行认证,加密和写回,并且它们的版本计数器被递增。版本阵列页面可被类似地处理,并且版本阵列信息被安全地传输到迁移平台。因此,可以减少由于迁移进程而导致的性能降级,同时保证安全飞地数据的安全性并且不需要过度的复杂性和设计努力。
根据一些实施例,本文所公开的指令支持挂起和恢复安全EPC中飞地的迁移。 EPC将安全域控制结构(SDCS)存储在由用于管理进程的飞地以及由飞地域可访问的存储中。处理器检查对应的版本阵列(VA)页面是否被绑定到SDCS,并且如果是的话,则:递增在用于页面的SDCS中的版本计数器、使用SDCS中的版本计数器从EPC对页面执行认证加密、并将加密的页面写入外部存储器(例如,使用EWRITEBACK或EWBX指令)。第二处理器检查对应的VA页面是否绑定到第二处理器的第二SDCS,并且如果是的话,则:使用第二SDCS中的版本计数器执行对页面的认证解密、并且如果认证通过的话将解密的页面加载到第二处理器中的EPC(例如,使用ELOAD或ELDX指令)。
图17示出了另一进程1701的一个实施例的流程图,进程1701用来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移。在一些实施例中,另一个受信任迁移飞地(例如在另一个平台上)可以执行或者引起系统软件防护扩展(SGX)库执行指令以检索用于SDCS的认证加密持久数据结构并且重构安全域以完成安全飞地到新平台的迁移。在处理块1705中,访问外部存储器以检索认证加密持久数据结构。在处理块1710中,密封的安全域控制结构SDCS被从加密的持久数据结构解密并认证。在处理块1715中,为迁移的SDCS分配安全飞地控制结构(SECS)(例如,使用ECREATE或EDCREATE指令)。在处理块1720中,从密封的SDCS配置迁移的SDCS(例如,使用EDINIT指令或一些其他类似的指令)。在处理块1725中,用于迁移的SDCS的SDCS指针被加载到处理器寄存器中(例如,使用EDPTRLD指令)。在处理块1730中,来自SDCS的版本阵列槽被复原用于一个或多个版本阵列页面的第一版本阵列页面的EPC中的版本阵列槽(例如,使用EDLDVASLOT指令)。在处理块1735中,从SDCS获得用于解密的密钥(例如,使用EGETKEY指令或一些其他类似的指令)。在处理块1740中,所述一个或多个版本阵列页面的拷贝从外部存储器被加载到安全存储,被解密和认证(例如,使用ELOAD或ELDX指令)。在处理块1745中,针对迁移的SDCS中的版本(例如,作为ELOAD或ELDX指令或类似指令的结果)来检查所述一个或多个版本阵列页面的版本。在处理块1750中,安全飞地的所述一个或多个数据页面的拷贝从外部存储器被加载到安全存储,被解密和认证,同时继续针对迁移的SDCS中的版本检查在处理块1745中所述一个或多个飞地页面的版本。将被领会到的是,在版本不匹配和/或认证对于迁移的安全域失败的任何时间,迁移进程1701可以在目标平台中被挂起,并且始发平台可被用信号通知来恢复迁移进程1601(在是失败起因的点开始)。
还将被领会到的是,如果可能的话,在进程1701的一些备选实施例中以及在本文中所公开的其他进程中,被图示为以特定顺序执行的处理块也可以以另一顺序执行,或者同时执行,或者彼此并行执行。
在一些实施例中,本文所公开的指令和逻辑能够在迁移安全域进程中以及在从安全飞地内部的页面拷贝操作中被中断和恢复。因此,迁移安全域进程和为安全飞地建立页面的认证拷贝的前向进程可得以保证,并且通过及时服务未决中断可避免诸如语音,视频和实时事务的服务中的不可接受的故障。将被领会到的是,通过使用此类飞地指令来挂起和恢复安全EPC中安全飞地的迁移,与虚拟机关联的安全飞地页面高速缓存存储器内容可被认证、加密和写回,TLB条目可被转储清除,用于页面的版本计数器可被记录以用于认证并被安全存储,并且虚拟机能被迁移到另一平台且被恢复。迁移进程能够被拆分成多个阶段,其中处理器核或逻辑处理器可继续在一个或多个阶段期间从只读页面来执行。如果修改了一个或多个页面,则它们可被重新进行认证,加密和写回,并且它们的版本计数器被递增。版本阵列页面可被类似地处理,并且版本阵列信息能够被安全地传输到迁移平台。因此,可以减少由于迁移进程而导致的性能降级,同时保证安全飞地数据的安全性并且不需要过度的复杂性和设计努力。还将被领会到的是,在没有针对此类指令的处理器支持的情况下,用于实现相同(或类似)技术效果的任何软件系统安全特征可能(如果真是可行的话)是极其昂贵的和/或性能限制到如下程度,即安全性的一些较弱度量可能会被不利地接受。
还将被领会到的是,管理权限、物理存储器和/或改变映射仍然可以由OS管理,但是当存储器内容被保护时(如在安全飞地中),OS不被准许或被信任来访问飞地私有存储器的实际受保护内容。保证私有存储器内容的安全性和/或完整性,以及管理迁移安全域进程的技术约束和建立安全域页面的安全认证拷贝,而不能信任OS,以上这些能够使用用来挂起和恢复安全飞地页面高速缓存中安全飞地的迁移的指令和处理逻辑来实现,而不需要精心设计的硬件支持和/或设计努力。
本文公开的机制的实施例可以在硬件、软件、固件或此类实现方法的组合中实现。本发明的实施例可以被实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置的可编程系统上执行的计算机程序或程序代码。
程序代码可以应用于输入指令以执行本文所描述的功能并生成输出信息。可以以已知的方式将输出信息应用于一个或多个输出装置。为了本申请的目的,处理系统包括具有处理器(诸如,例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何系统。
程序代码可以以高级过程或面向对象的编程语言来实现以与处理系统通信。如果期望,程序代码还可以用汇编或机器语言来实现。事实上,本文描述的机制的范围不限于任何具体的编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,所述逻辑当由机器读时使得机器制造逻辑以执行本文所描述的技术。称为“IP核”的此类表示可以存储在有形的,机器可读介质上,并且供应给各种客户或制造设施以加载到实际制作逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于由机器或装置制造或形成的物品的非暂时性、有形布置,包括存储介质(诸如硬盘、任何其它类型的盘(包括软盘、光盘、紧凑盘只读存储器(CD-ROM)、可重写紧凑盘(CD-RW)和磁光盘))、半导体装置(诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡)或适合于存储电子指令的任何其它类型的媒体。
相应地,本发明的实施例还包括包含指令或包含诸如硬件描述语言(HDL)的设计数据的非暂时性有形机器可读介质,其定义结构、电路、设备、处理器和/或本文描述的系统特征。此类实施例也可以被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换为目标指令集。例如,指令转换器可以转化(例如,使用静态二进制转化,包括动态编译的动态二进制转化)、变形、仿真或以其它方式将指令转换为要由核处理的一个或多个其它指令。指令转换器可以以软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、处理器外或部分在处理器上且部分在处理器外。
因此,公开了用于根据至少一个实施例执行一个或多个指令的技术。虽然已经在附图中描述和示出了某些示范性实施例,但是要理解,此类实施例仅仅是对广义发明的说明而不是限制,并且此发明不限于所示和所描述的特定构造和布置,因为本领域普通技术人员在研究本公开时可以想起各种其它修改。在诸如此类的技术领域中(其中成长快并且不容易预见进一步进展),如在不脱离本公开的原理或随附权利要求的范围的情况下通过实现技术进步所促进的,所公开的实施例可以在布置和细节上容易地可修改。
Claims (25)
1.一种具有第一处理器核的处理器,包括:
飞地页面高速缓存(EPC),用来在分配给安全飞地的对应域集的第一安全存储区域中存储安全域控制结构(SDCS)数据,所述SDCS数据可由管理进程的第一安全飞地访问,并且安全飞地的所述域集包括第二进程的第二安全飞地;
解码级,用来解码一个或多个指令以便由所述处理器来执行;以及
一个或多个执行单元,其中响应于所述一个或多个指令中的解码的第一指令,所述第一指令指定存储在所述EPC中位于分配给所述第二安全飞地的第二安全存储区域中的第一页面,所述一个或多个执行单元将检查与所述第一页面对应的版本阵列(VA)页面是否被绑定到所述SDCS,并且如果所述VA页面被绑定到所述SDCS,则将执行如下操作:
递增在对应于所述第一页面的所述SDCS中的版本计数器,
使用所述SDCS中的所述版本计数器从所述EPC对所述第一页面执行认证加密,以及
将所述第一页面的加密拷贝从所述EPC写回到与所述处理器在操作上耦合的存储器。
2.如权利要求1所述的处理器,其中使用存储在所述SDCS中的一个或多个密钥来执行从所述EPC对所述第一页面的所述认证加密。
3. 如权利要求1所述的处理器,其中所述一个或多个执行单元响应于指定所述第一页面的所述一个或多个指令的解码的第二指令,将检查对应于所述第一页面的所述VA页面是否被绑定到所述SDCS,并且如果所述VA页面被绑定到所述SDCS,则所述一个或多个执行单元将执行如下操作:
使用所述SDCS中的所述版本计数器,从所述存储器对所述第一页面执行认证解密,以及
如果所述认证解密的认证通过,则将所述第一页面的解密拷贝加载到所述EPC。
4.一种处理器,包括:
飞地页面高速缓存(EPC),用来在分配给安全飞地的对应域集的第一安全存储区域中存储安全域控制结构(SDCS)数据,所述SDCS数据可由管理进程的第一安全飞地访问,并且安全飞地的所述域集包括第二进程的第二安全飞地;
解码级,用来解码一个或多个指令以便由所述处理器来执行;以及
一个或多个执行单元,其中响应于所述一个或多个指令中的解码的第一指令,所述第一指令指定要存储在分配给所述第二安全飞地的所述EPC的第二安全存储区域中的第一页面,所述一个或多个执行单元将检查与所述第一页面对应的版本阵列(VA)页面是否被绑定到所述SDCS,并且如果所述VA页面被绑定到所述SDCS,将执行如下操作:
使用所述SDCS中的版本计数器从与所述处理器在操作上耦合的存储器来对所述第一页面执行认证解密,以及
如果所述认证解密的认证通过,则将所述第一页面的解密拷贝加载到所述EPC。
5.如权利要求4所述的处理器,其中所述一个或多个执行单元响应于指定所述VA页面的所述一个或多个指令中的解码的第二指令,要将所述SDCS的VASLOT字段中的版本计数器拷贝到所述EPC中用于所述VA页面的字段。
6.如权利要求5所述的处理器,其中响应于EDLDVASLOT指令而执行将所述SDCS的所述VASLOT字段中的所述版本计数器拷贝到所述VA页面。
7.一种方法,包括:
将安全域控制结构(SDCS)分配给控制飞地;
为第一安全飞地配置所述SDCS;
将所述第一安全飞地的一个或多个页面绑定到所述SDCS;
访问第一安全存储区域,以将所述一个或多个页面的认证加密拷贝从所述第一安全存储区域写入外部存储器;
在用于所述SDCS的所述第一安全存储区域中,对所述一个或多个页面的一个或多个版本分别在一个或多个版本阵列页面中来进行更新;
访问所述第一安全存储区域,以将所述一个或多个版本阵列页面的认证加密拷贝从所述第一安全存储区域写入外部存储器;
使所述SDCS静默并设置所述SDCS中对应的属性字段以指示所述SDCS被静默;
在认证加密第一结构中密封所述SDCS;以及
将所述认证加密第一结构存储到所述外部存储器。
8.如权利要求7所述的方法,其中,响应于EDALLOCX指令来执行将所述SDCS分配给控制飞地。
9.如权利要求7所述的方法,其中响应于EDINIT指令来执行为第一安全飞地配置所述SDCS。
10.如权利要求7所述的方法,其中,至少部分地响应于将新分配的页面与所述SDCS关联的EPA指令来执行将所述第一安全飞地的一个或多个页面绑定到所述SDCS。
11.如权利要求10所述的方法,其中,至少部分地响应于将用于所述SDCS的SDCS指针加载到处理器寄存器中来执行将所述第一安全飞地的一个或多个页面绑定到所述SDCS。
12.如权利要求7所述的方法,其中,访问所述第一安全存储区域以将所述一个或多个页面的认证加密拷贝从所述第一安全存储区域写入所述外部存储器至少部分地响应于写回指令而被执行。
13.如权利要求12所述的方法,其中,至少部分地响应于EWBX写回指令而执行在用于所述SDCS的所述第一安全存储区域中,对所述一个或多个页面的一个或多个版本分别在一个或多个版本阵列页面中来进行更新。
14.如权利要求7所述的方法,还包括:
将对于最后版本阵列页面的版本阵列槽保存到所述SDCS中的版本阵列槽中。
15.如权利要求14所述的方法,其中,至少部分地响应于EDSTVASLOT指令来执行将对于最后版本阵列页面的版本阵列槽保存到所述SDCS中的版本阵列槽中。
16.如权利要求7所述的方法,其中响应于EDQ指令来执行设置所述SDCS中所述对应的属性字段以指示所述SDCS被静默。
17.如权利要求7所述的方法,其中将所述SDCS密封在认证加密第一结构中包括:
验证所述SDCS被静默;
将所述SDCS中的所有软件可访问字段拷贝到持久第一结构;
加密和认证所述持久第一结构以生成认证加密第一结构。
18.如权利要求7所述的方法,还包括:
访问所述外部存储器以检索所述认证加密第一结构;
从所述认证加密第一结构解密和认证所述密封的SDCS;
为迁移的SDCS分配安全飞地控制结构(SECS);
从所述密封的SDCS配置所述迁移的SDCS;
将用于所述迁移的SDCS的SDCS指针加载到处理器寄存器中;
将来自所述SDCS的版本阵列槽加载到用于第一版本阵列页面的版本阵列槽中;
从所述外部存储器加载所述一个或多个版本阵列页面的拷贝;
解密和认证所述一个或多个版本阵列页面的所述拷贝;
针对所述迁移的SDCS中的版本来检查所述一个或多个版本阵列页面的版本;
从所述外部存储器加载所述第一安全飞地的所述一个或多个页面的拷贝;以及
解密和认证所述第一安全飞地的所述一个或多个页面的所述拷贝。
19.如权利要求18所述的方法,其中响应于ECREATE指令来执行为所述迁移的SDCS分配所述SECS。
20.如权利要求18所述的方法,其中响应于EDPTRLD指令来执行将用于所述迁移的SDCS的所述SDCS指针加载到所述处理器寄存器中。
21.如权利要求18所述的方法,其中响应于EDLDVASLOT指令来执行将所述版本阵列槽从所述SDCS加载到用于所述第一版本阵列页面的所述版本阵列槽中。
22. 一种处理系统,包括:
外部存储器;和
处理器,包括:
飞地页面高速缓存(EPC),用来在分配给安全飞地的对应域集的第一安全存储区域中存储安全域控制结构(SDCS)数据,所述SDCS数据可由管理进程的第一安全飞地访问,并且安全飞地的所述域集包括第二进程的第二安全飞地;
解码级,用来解码一个或多个指令以便由所述处理器来执行;以及
一个或多个执行单元,其中响应于所述一个或多个指令中的解码的第一指令,所述第一指令指定存储在所述EPC中位于分配给所述第二安全飞地的第二安全存储区域中的第一页面,所述一个或多个执行单元将检查与所述第一页面对应的版本阵列(VA)页面是否被绑定到所述SDCS,并且如果所述VA页面被绑定到所述SDCS,则将执行如下操作:
递增在对应于所述第一页面的所述SDCS中的版本计数器,
使用所述SDCS中的所述版本计数器从所述EPC对所述第一页面执行认证加密,以及
将所述第一页面的加密拷贝从所述EPC写回到所述外部存储器。
23.如权利要求22所述的处理系统,其中使用存储在所述SDCS中的一个或多个密钥执行从所述EPC对所述第一页面的所述认证加密。
24. 如权利要求22所述的处理系统,所述一个或多个执行单元进一步响应于用于由所述第二处理器执行的第二一个或多个指令的解码的第二指令,所述解码的第二指令指定第二页面,所述一个或多个执行单元将检查对应于所述第二页面的所述VA页面是否被绑定到由所述EPC存储在第三安全存储区域中的第二SDCS,并且如果所述VA页面被绑定到所述第二SDCS,则所述一个或多个执行单元将执行如下操作:
使用所述第二SDCS中的版本计数器,从所述外部存储器执行对所述第二页面的认证解密,以及
如果所述认证解密的认证通过,则将所述第二页面的解密拷贝加载到所述EPC。
25.如权利要求24所述的处理系统,其中使用存储在所述第二SDCS中的一个或多个密钥来执行从所述外部存储器对所述第二页面的所述认证解密。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/998157 | 2015-12-24 | ||
US14/998,157 US10534724B2 (en) | 2015-12-24 | 2015-12-24 | Instructions and logic to suspend/resume migration of enclaves in a secure enclave page cache |
PCT/US2016/068447 WO2017112908A1 (en) | 2015-12-24 | 2016-12-22 | Instructions and logic to suspend/resume migration of enclaves in a secure enclave page cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108351839A true CN108351839A (zh) | 2018-07-31 |
CN108351839B CN108351839B (zh) | 2023-10-31 |
Family
ID=59087857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680068757.1A Active CN108351839B (zh) | 2015-12-24 | 2016-12-22 | 挂起/恢复飞地页面高速缓存中飞地的迁移的设备和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10534724B2 (zh) |
EP (1) | EP3394760A4 (zh) |
CN (1) | CN108351839B (zh) |
TW (1) | TWI724067B (zh) |
WO (1) | WO2017112908A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111638912A (zh) * | 2019-09-19 | 2020-09-08 | 中国科学院信息工程研究所 | 一种轻量级的处理器芯片分支预测器内容隔离方法及电子装置 |
CN111638913A (zh) * | 2019-09-19 | 2020-09-08 | 中国科学院信息工程研究所 | 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置 |
CN112286635A (zh) * | 2020-10-29 | 2021-01-29 | 卓尔智联(武汉)研究院有限公司 | 一种热迁移的方法、装置及电子设备 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
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 |
US9710401B2 (en) | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
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 |
US10216254B1 (en) | 2016-06-29 | 2019-02-26 | Altera Corporation | Methods and apparatus for selectively extracting and loading register states |
US10339063B2 (en) * | 2016-07-19 | 2019-07-02 | Advanced Micro Devices, Inc. | Scheduling independent and dependent operations for processing |
US10460113B2 (en) * | 2016-08-16 | 2019-10-29 | International Business Machines Corporation | Security fix of a container in a virtual machine environment |
US10409744B1 (en) * | 2016-08-30 | 2019-09-10 | Amazon Technologies, Inc. | Low-latency wake-up in a peripheral device |
JP7013707B2 (ja) * | 2017-08-02 | 2022-02-01 | 富士通株式会社 | 情報処理装置および情報処理方法 |
US10761996B2 (en) * | 2018-09-28 | 2020-09-01 | Intel Corporation | Apparatus and method for secure memory access using trust domains |
EP3667505B1 (en) * | 2018-12-14 | 2021-11-10 | Nxp B.V. | Memory system with an incremental hashing operation and method |
US11044080B2 (en) * | 2019-06-24 | 2021-06-22 | International Business Machines Corporation | Cryptographic key orchestration between trusted containers in a multi-node cluster |
US11327782B2 (en) * | 2019-07-19 | 2022-05-10 | Vmware, Inc. | Supporting migration of virtual machines containing enclaves |
US20220083347A1 (en) * | 2020-09-14 | 2022-03-17 | Intel Corporation | Adding cycle noise to enclaved execution environment |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1839375A (zh) * | 2003-07-07 | 2006-09-27 | 密码研究公司 | 用于控制盗版和启用交互式内容的可重编程的安全性 |
CN103052945A (zh) * | 2010-08-06 | 2013-04-17 | 阿尔卡特朗讯 | 管理计算机存储器的方法、程序产品及数据存储设备 |
US20130159726A1 (en) * | 2009-12-22 | 2013-06-20 | Francis X. McKeen | Method and apparatus to provide secure application execution |
CN103620617A (zh) * | 2011-06-29 | 2014-03-05 | 英特尔公司 | 用于带有完整性检查和防止重放攻击的保护的存储器加密的方法和设备 |
US20140189246A1 (en) * | 2012-12-31 | 2014-07-03 | Bin Xing | Measuring applications loaded in secure enclaves at runtime |
US20140189325A1 (en) * | 2012-12-28 | 2014-07-03 | Francis X. McKeen | Paging in secure enclaves |
CN104484284A (zh) * | 2013-03-31 | 2015-04-01 | 英特尔公司 | 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
CN105095772A (zh) * | 2014-05-19 | 2015-11-25 | 英特尔公司 | 用于安全地保存并恢复计算平台状态的方法和装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002353960A (ja) * | 2001-05-30 | 2002-12-06 | Fujitsu Ltd | コード実行装置およびコード配布方法 |
GB2442023B (en) * | 2006-09-13 | 2011-03-02 | Advanced Risc Mach Ltd | Memory access security management |
US20090132804A1 (en) * | 2007-11-21 | 2009-05-21 | Prabir Paul | Secured live software migration |
US9189411B2 (en) * | 2012-12-28 | 2015-11-17 | Intel Corporation | Logging in secure enclaves |
US9501668B2 (en) * | 2013-09-25 | 2016-11-22 | Intel Corporation | Secure video ouput path |
GB2522906B (en) * | 2014-02-10 | 2021-07-14 | Advanced Risc Mach Ltd | Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address |
US9667628B2 (en) * | 2014-11-06 | 2017-05-30 | Intel Corporation | System for establishing ownership of a secure workspace |
CN104699055A (zh) * | 2015-02-13 | 2015-06-10 | 西安热工研究院有限公司 | 一种现场总线控制器及方法 |
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 |
US9606940B2 (en) * | 2015-03-27 | 2017-03-28 | Intel Corporation | Methods and apparatus to utilize a trusted loader in a trusted computing environment |
-
2015
- 2015-12-24 US US14/998,157 patent/US10534724B2/en active Active
-
2016
- 2016-11-24 TW TW105138705A patent/TWI724067B/zh not_active IP Right Cessation
- 2016-12-22 CN CN201680068757.1A patent/CN108351839B/zh active Active
- 2016-12-22 WO PCT/US2016/068447 patent/WO2017112908A1/en active Application Filing
- 2016-12-22 EP EP16880125.6A patent/EP3394760A4/en not_active Withdrawn
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1839375A (zh) * | 2003-07-07 | 2006-09-27 | 密码研究公司 | 用于控制盗版和启用交互式内容的可重编程的安全性 |
US20130159726A1 (en) * | 2009-12-22 | 2013-06-20 | Francis X. McKeen | Method and apparatus to provide secure application execution |
CN103052945A (zh) * | 2010-08-06 | 2013-04-17 | 阿尔卡特朗讯 | 管理计算机存储器的方法、程序产品及数据存储设备 |
CN103620617A (zh) * | 2011-06-29 | 2014-03-05 | 英特尔公司 | 用于带有完整性检查和防止重放攻击的保护的存储器加密的方法和设备 |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
US20140189325A1 (en) * | 2012-12-28 | 2014-07-03 | Francis X. McKeen | Paging in secure enclaves |
CN104798054A (zh) * | 2012-12-28 | 2015-07-22 | 英特尔公司 | 安全区域内的分页 |
US20140189246A1 (en) * | 2012-12-31 | 2014-07-03 | Bin Xing | Measuring applications loaded in secure enclaves at runtime |
CN104484284A (zh) * | 2013-03-31 | 2015-04-01 | 英特尔公司 | 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 |
CN105095772A (zh) * | 2014-05-19 | 2015-11-25 | 英特尔公司 | 用于安全地保存并恢复计算平台状态的方法和装置 |
Non-Patent Citations (4)
Title |
---|
SYLVAIN CONCHON ET AL.: ""Cubicle: A Parallel SMT-Based Model Checker for Parameterized Systems"", 《SPRINGER》 * |
SYLVAIN CONCHON ET AL.: ""Cubicle: A Parallel SMT-Based Model Checker for Parameterized Systems"", 《SPRINGER》, 31 December 2012 (2012-12-31), pages 718 - 724 * |
黄河 等: ""硬件结构支持的基于同步的高速缓存一致性协议"", 《计算机学报》 * |
黄河 等: ""硬件结构支持的基于同步的高速缓存一致性协议"", 《计算机学报》, 31 December 2009 (2009-12-31), pages 1618 - 1630 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111638912A (zh) * | 2019-09-19 | 2020-09-08 | 中国科学院信息工程研究所 | 一种轻量级的处理器芯片分支预测器内容隔离方法及电子装置 |
CN111638913A (zh) * | 2019-09-19 | 2020-09-08 | 中国科学院信息工程研究所 | 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置 |
CN111638913B (zh) * | 2019-09-19 | 2023-05-12 | 中国科学院信息工程研究所 | 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置 |
CN112286635A (zh) * | 2020-10-29 | 2021-01-29 | 卓尔智联(武汉)研究院有限公司 | 一种热迁移的方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3394760A1 (en) | 2018-10-31 |
WO2017112908A1 (en) | 2017-06-29 |
EP3394760A4 (en) | 2019-07-24 |
US10534724B2 (en) | 2020-01-14 |
CN108351839B (zh) | 2023-10-31 |
TW201732584A (zh) | 2017-09-16 |
US20170185533A1 (en) | 2017-06-29 |
TWI724067B (zh) | 2021-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108351839A (zh) | 用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑 | |
CN105224865B (zh) | 中断和恢复分页的指令及相关方法、系统、处理器和介质 | |
JP6702590B2 (ja) | セキュアエンクレーブのプロセスを分岐してセキュアエンクレーブページキャッシュに子エンクレーブを確立する命令及びロジック | |
JP6344614B2 (ja) | セキュアエンクレーブページキャッシュのための進歩したページング能力を提供するための命令および論理 | |
CN108351779B (zh) | 用于安全指令执行流水线的指令和逻辑 | |
TWI610236B (zh) | 用以提供向量壓縮及旋轉功能之指令及邏輯 | |
CN107094369A (zh) | 用于提供simd sm3密码散列函数的指令和逻辑 | |
TW201729078A (zh) | 用於以通道為基礎的跨步儲存操作之指令及邏輯 | |
TWI720056B (zh) | 用於設置多重向量元素操作之指令及邏輯 | |
JP2018512631A (ja) | アトミックな範囲演算を提供する命令及びロジック | |
CN108351781A (zh) | 用于利用monitor和mwait架构的用户级线程同步的方法和设备 | |
TW201723817A (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
TWI729029B (zh) | 用於向量位元欄壓縮及擴展的指令及邏輯 | |
TW201723815A (zh) | 用於偶數與奇數向量取得操作之指令及邏輯 | |
CN111355574A (zh) | 信任域中的安全加密密钥管理 | |
CN108369510A (zh) | 用于以无序加载的置换的指令和逻辑 | |
CN108369512A (zh) | 用于置换序列的指令和逻辑 | |
CN105723329B (zh) | 用于识别多指令串无序处理器中引退的指令的方法和设备 | |
CN108292214A (zh) | 用于获得数据列的指令和逻辑 | |
TW201729081A (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 |