TW201937395A - 安全區之平台遷移 - Google Patents

安全區之平台遷移 Download PDF

Info

Publication number
TW201937395A
TW201937395A TW108121535A TW108121535A TW201937395A TW 201937395 A TW201937395 A TW 201937395A TW 108121535 A TW108121535 A TW 108121535A TW 108121535 A TW108121535 A TW 108121535A TW 201937395 A TW201937395 A TW 201937395A
Authority
TW
Taiwan
Prior art keywords
virtual machine
encrypted portion
guest virtual
platform
memory
Prior art date
Application number
TW108121535A
Other languages
English (en)
Other versions
TWI697804B (zh
Inventor
卡洛斯 羅哲斯
孟那 維傑
里貝卡 萊斯里赫德
克萊斯多夫 莫辛斯基
桑納斯 加拉伯提
法蘭西斯 麥恩
文森 史嘉拉塔
賽門 強生
伊亞 亞歷羅奇
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW201937395A publication Critical patent/TW201937395A/zh
Application granted granted Critical
Publication of TWI697804B publication Critical patent/TWI697804B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Abstract

揭露一種用以支援安全區之平台遷移的處理器。在一實施例中,處理器包括記憶體控制器單元,用以存取安全區、及處理器核心,耦接至記憶體控制器單元。處理器核心用以識別關聯於安全區的控制結構。控制結構包含複數個資料槽和密鑰,關聯於包含記憶體控制器單元和處理器核心的第一平台。來自安全區之資料之版本係關聯於複數個資料槽。可遷移密鑰被產生作為用於關聯於控制結構之密鑰的替換。可遷移密鑰控制對安全區的存取。此後,控制結構被遷移至第二平台以能夠在第二平台上存取安全區。

Description

安全區之平台遷移
本揭露的實施例一般關於電腦系統,且更具體地關於但不限於安全區的平台遷移。
現代處理器被設計以保護記憶體中的敏感資料免受硬體和軟體攻擊。一些處理器提供可保留一部分記憶體並對此部分記憶體實施加密保護的策略。此部分記憶體可能包括可在安全平台上存取的複數個安全記憶體分頁。
100‧‧‧處理裝置
110‧‧‧處理器核心
120‧‧‧記憶體控制器
130‧‧‧系統代理器
135‧‧‧記憶體加密引擎(MEE)
140‧‧‧虛擬機監視器
150‧‧‧訪客虛擬機(VM-1)
160‧‧‧訪客VM-N
170‧‧‧VM控制域
157‧‧‧作業系統(OS)
167‧‧‧OS
155‧‧‧安全區(SE)
165‧‧‧SE
175‧‧‧遷移服務模組
145‧‧‧遷移驅動程式
180‧‧‧控制區
177‧‧‧控制OS
200‧‧‧系統
201‧‧‧主記憶體
202‧‧‧安全分頁
204‧‧‧安全分頁
206‧‧‧安全分頁
208‧‧‧安全分頁
210‧‧‧控制結構
203‧‧‧包圍分頁快取(EPC)
212-218‧‧‧版本陣列(VA)
300‧‧‧系統
302‧‧‧可遷移密鑰
304‧‧‧屬性位元
310‧‧‧EGETKEY
320‧‧‧平台密鑰
400‧‧‧系統
410‧‧‧網路
401‧‧‧第二處理裝置
420‧‧‧處理器核心
425‧‧‧處理器核心
480‧‧‧控制區
470‧‧‧控制域
440‧‧‧VMM
500‧‧‧方法
502‧‧‧方塊
504‧‧‧方塊
506‧‧‧方塊
508‧‧‧方塊
510‧‧‧方塊
512‧‧‧方塊
514‧‧‧方塊
600‧‧‧處理器
630‧‧‧前端單元
650‧‧‧執行引擎單元
670‧‧‧記憶體單元
632‧‧‧分支預測單元
634‧‧‧指令快取單元
636‧‧‧指令轉譯旁視緩衝器
638‧‧‧指令提取單元
640‧‧‧解碼單元
652‧‧‧更名/分配器單元
654‧‧‧引退單元
656‧‧‧排程器單元
658‧‧‧實體暫存器檔案單元
660‧‧‧執行叢集
662‧‧‧執行單元
664‧‧‧記憶體存取單元
672‧‧‧資料轉譯旁視緩衝器(TLB)單元
674‧‧‧資料快取單元
676‧‧‧L2快取單元
690‧‧‧電源管理單元
680‧‧‧資料預取器
601‧‧‧處理器管線
602‧‧‧提取級
604‧‧‧長度解碼級
606‧‧‧解碼級
608‧‧‧分配級
610‧‧‧更名級
612‧‧‧排程級
614‧‧‧暫存器讀取/記憶體讀取級
616‧‧‧執行級
618‧‧‧寫回/記憶體寫入級
620‧‧‧例外處理級
622‧‧‧提交級
700‧‧‧處理器
701‧‧‧前端
726‧‧‧指令預取器
728‧‧‧指令解碼器
730‧‧‧追蹤快取
734‧‧‧微運算(uop)佇列
732‧‧‧微碼ROM
703‧‧‧亂序執行引擎
702‧‧‧快速排程器
704‧‧‧慢/通用浮點數排程器
706‧‧‧簡單浮點數排程器
711‧‧‧執行方塊
712‧‧‧執行單元
714‧‧‧執行單元
716‧‧‧執行單元
718‧‧‧執行單元
720‧‧‧執行單元
722‧‧‧執行單元
724‧‧‧執行單元
708‧‧‧暫存器檔案
710‧‧‧暫存器檔案
800‧‧‧多處理器系統
850‧‧‧點對點互連
870‧‧‧第一處理器
880‧‧‧第二處理器
872‧‧‧記憶體控制器中心
882‧‧‧記憶體控制器中心
876‧‧‧點對點(P-P)介面
878‧‧‧P-P介面
886‧‧‧P-P介面
888‧‧‧P-P介面
832‧‧‧記憶體
834‧‧‧記憶體
852‧‧‧P-P介面
854‧‧‧P-P介面
890‧‧‧晶片組
839‧‧‧高效能圖形介面
838‧‧‧高效能圖形電路
894‧‧‧P-P介面
898‧‧‧P-P介面
892‧‧‧介面
816‧‧‧第一匯流排
814‧‧‧I/O裝置
818‧‧‧匯流排橋接器
820‧‧‧第二匯流排
822‧‧‧鍵盤及/或滑鼠
827‧‧‧通訊裝置
830‧‧‧碼和資料
828‧‧‧儲存單元
824‧‧‧音頻I/O
900‧‧‧系統
910‧‧‧處理器
915‧‧‧處理器
920‧‧‧圖形記憶體控制器中心
950‧‧‧輸入/輸出控制器中心
940‧‧‧記憶體
960‧‧‧圖形裝置
995‧‧‧前端匯流排
945‧‧‧顯示器
970‧‧‧周邊裝置
1000‧‧‧系統
1070‧‧‧處理器
1080‧‧‧處理器
1072‧‧‧控制邏輯(CL)
1082‧‧‧CL
1078‧‧‧P-P介面
1088‧‧‧P-P介面
1050‧‧‧互連
1052‧‧‧互連
1054‧‧‧互連
1076‧‧‧P-P介面
1094‧‧‧P-P介面
1086‧‧‧P-P介面
1098‧‧‧P-P介面
1090‧‧‧晶片組
1014‧‧‧I/O裝置
1015‧‧‧傳統I/O裝置
1096‧‧‧介面
1032‧‧‧記憶體
1034‧‧‧記憶體
1100‧‧‧系統晶片(SoC)
1112‧‧‧互連單元
1102A-N‧‧‧核心
1106‧‧‧共享快取單元
1120‧‧‧應用處理器
1110‧‧‧系統代理器單元
1116‧‧‧匯流排控制器單元
1114‧‧‧整合記憶體控制器單元
1108‧‧‧整合圖形邏輯
1124‧‧‧影像處理器
1126‧‧‧音頻處理器
1128‧‧‧視頻處理器
1118‧‧‧媒體處理器
1130‧‧‧靜態隨機存取記憶體單元
1132‧‧‧直接記憶體存取單元
1140‧‧‧顯示單元
1200‧‧‧SoC
1206‧‧‧核心
1207‧‧‧核心
1208‧‧‧快取控制
1209‧‧‧匯流排介面單元
1210‧‧‧L2快取
1230‧‧‧用戶身分模組
1235‧‧‧開機ROM
1260‧‧‧DRAM
1240‧‧‧SDRAM控制器
1265‧‧‧快閃
1245‧‧‧快閃控制器
1250‧‧‧周邊控制
1220‧‧‧視頻編解碼器
1225‧‧‧視頻介面
1215‧‧‧圖形處理單元(GPU)
1270‧‧‧藍芽模組
1275‧‧‧3G數據機
1280‧‧‧GPS
1285‧‧‧Wi-Fi
1300‧‧‧電腦系統
1302‧‧‧處理裝置
1304‧‧‧主記憶體
1306‧‧‧靜態記憶體
1318‧‧‧資料儲存裝置
1330‧‧‧匯流排
1326‧‧‧指令
1320‧‧‧網路
1308‧‧‧網路介面裝置
1310‧‧‧視頻顯示單元
1312‧‧‧字母數字輸入裝置
1314‧‧‧游標控制裝置
1316‧‧‧信號產生裝置
1322‧‧‧圖形處理單元
1328‧‧‧視頻處理單元
1332‧‧‧音頻處理單元
1324‧‧‧機器可存取儲存媒體
將從下面給定的詳細描述和從本揭露之各種實施例的附圖更全面地理解本揭露。然而,圖不應被視為將本揭露限制於具體實施例,而是僅用於解釋和理解。
第1圖繪示根據一實施例之處理裝置的方塊圖。
第2圖繪示根據一實施例之用於配置控制結 構以支援安全區之平台遷移的系統。
第3圖繪示根據一實施例之用於密封控制結構的系統。
第4圖繪示根據一實施例之用於支援安全區之平台遷移的系統。
第5圖繪示根據一實施例之用以支援安全區之平台遷移之方法的流程圖。
第6A圖係繪示根據一實施例之用於處理器之微型架構的方塊圖。
第6B圖係繪示根據一實施例之有序管線與暫存器更名、亂序發出/執行管線的方塊圖。
第7圖係繪示根據一實施例之電腦系統的方塊圖。
第8圖係繪示可能使用本揭露之實施例之系統的方塊圖。
第9圖係繪示可能使用本揭露之實施例之系統的方塊圖。
第10圖係繪示可能使用本揭露之實施例之系統的方塊圖。
第11圖係繪示可能使用本揭露之實施例之系統晶片(SoC)的方塊圖。
第12圖係繪示可能使用本揭露之實施例之SoC設計的方塊圖。
第13圖繪示繪示可能使用本揭露之實施例之 電腦系統的方塊圖。
【發明內容及實施方式】
本揭露的實施例實作用於安全區(SE)之平台遷移的技術。在一實施例中,處理裝置(例如處理器)可能包含被配置以實作由SE表示之信任執行環境的處理邏輯。處理裝置可能執行存在受保護記憶體中的指令並存取存在此受保護記憶體中的資料,同時防止對受保護記憶體的未授權存取。即使由如BIOS、作業系統或虛擬機監視器的特權應用程式嘗試上述存取,也可防止不在SE中的應用程式存取與SE關聯的記憶體分頁。主動安全區可能被劃分為加密部分和解密部分。加密部分可能在未受保護的記憶體(如主記憶體或磁片)中。解密部分存在與SE關聯的包圍分頁快取(EPC)中。EPC是由處理裝置所用以暫時儲存SE記憶體分頁的受保護記憶體。
處理裝置可能實作用於保護存取EPC的若干機制。在一實施例中,用於EPC的保護機制可能以與處理裝置關聯的記憶體加密引擎(MEE)來實作。當EPC儲存在不受信任的外部記憶體(例如DRAM)中時,MEE使用包括加密密鑰的加密機制以加密資料及其他技術以提供完整性和機密性。當從DRAM讀取EPC記憶體時,對其解密並作完整性檢查,然後將其放置到處理裝置的內部快取中。在這一點上,與處理裝置關聯的存取控制機制可能接管。例如,存取控制機制可能使用處理裝置之處理器 核心中的分頁失誤處理器以及系統代理器來實作。在一些實施例中,系統代理器可能在處理裝置的非核心中。非核心可能包括不在核心中但需要核心效能的處理裝置之功能。在一些實施例中,SE可能包括允許將EPC內部的記憶體分頁安全複製到常規記憶體的一組指令。這些指令可能使用包括加密密鑰的加密和存取控制機制之組合,加密密鑰與在MEE中使用的加密密鑰不同。
先前的實作不能允許SE在兩個不同的平台之間遷移,因為一些加密密鑰是持久的且綁定至特定的硬體平台,這些密鑰係例如密封和證明加密密鑰。其他密鑰則具有綁定到主機系統的特定生命週期。例如,一些系統提供使用具有短壽命的每分頁加密密鑰來保護分頁空間。然而,將SE遷移到新平台可能出於各種原因。例如,系統管理員可能旨在將SE移動到新平台,以改進SE的操作效能或當需要在當前平台上執行維護時。
依照本揭露的實施例,提供了藉由以下方式支援將SE從一個平台遷移到另一平台的技術:1)實現將SE平台狀態(密鑰和其他資訊)封裝到包含在受保護記憶體中的控制結構中、2)允許具有不同平台狀態(例如,不同密鑰)之控制結構的多個實例、以及3)提供管理控制結構之生命週期的遷移服務,其可包括以信任方式在平台之間傳輸控制結構。
在一個實施例中,SE可在稱為平台A的第一平台上執行,並綁定到由遷移服務初始化的控制結構。SE 可包括秘密(例如,安全記憶體分頁)並可密封這些秘密。例如,可使用保護技術來密封秘密,保護技術利用SE屬性和平台唯一密鑰的組合來產生加密密鑰。控制結構可能包括被產生以控制對SE的存取之可遷移密鑰。為了遷移控制結構,遷移服務可能執行一組指令,其能夠在被稱為平台B的第二平台上分配、初始化和控制該控制結構。在一些實施例中,第二平台可能在與平台A相同或不同的實體機器上。為了將加密的秘密儲存在控制結構中,遷移服務可能從系統記憶體驅逐與SE關聯的記憶體分頁。然後,遷移服務可能將被驅逐之記憶體分頁的版本資料複製到與控制結構關聯的記憶體位置。在一實施例中,控制結構可能被密封。在一些實施例中,與控制結構關聯的SE可能在平台A上被關閉,因此在這種情況下可能不需要密封控制結構。
此後,遷移服務可能將SE的內容和秘密從平台A遷移或以其它方式複製到平台B。例如,遷移服務可將與SE關聯的控制結構安全地複製到平台B。為了安全地複製控制結構,控制結構的內容可能在被複製之前使用保護技術(例如,加密和認證)來保護。在一些實施例中,遷移服務可能將控制結構中的SE之非揮發性內容(例如,用以支援保護技術的可遷移密鑰)安全地傳送到平台B上的第二遷移服務。在平台B上,SE可藉由使用控制結構之所傳送內容的第二遷移服務來產生和初始化。這可能允許SE當SE在平台B上重新開機時獲得存取先 前密封的秘密。
第1圖係繪示根據一實施例之可能支援SE之平台遷移的處理裝置100之方塊圖。處理裝置100通常可能被稱為「處理器」或「CPU」。這裡的「處理器」或「CPU」是指能夠執行指令編碼算術、邏輯、或I/O操作的裝置。在一示範實例中,處理器可能包括算術邏輯單元(ALU)、控制單元、和複數個暫存器。在另一方面,處理器可能包括一或多個處理核心,並因此可能是通常能夠處理單一指令管線的單核心處理器、或可能同時處理多個指令管線的多核心處理器。在另一方面,處理器可能被實作為單一積體電路、兩個或更多積體電路、或可能是多晶片模組的元件(例如,其中個別微處理器晶粒被包括在單一積體電路封裝中,並因此共享單一插座)。
如第1圖所示,處理裝置100可能包括各種元件。在一實施例中,處理裝置100可能包括如圖所示彼此耦接之在其他元件之間的一或多個處理器核心110。處理裝置100還可能包括可能用於處理裝置100之各種元件之間的點對點通訊的通訊元件(未示出)。處理裝置100可能使用在計算系統(未示出)中,其包括但不限於桌上型電腦、平板電腦、膝上型電腦、小筆電、筆記型電腦、個人數位助理(PDA)、伺服器、工作站、蜂巢式電話、行動計算裝置、智慧型電話、網際網路裝置或任何其他類型的計算裝置。在另一實施例中,處理裝置100可能使用在系統晶片(SoC)系統中。
處理器核心110可能執行處理裝置100的指令。處理器核心110包括但不限於用以提取指令的預取邏輯、用以解碼指令的解碼邏輯、用以執行指令的執行邏輯、等等。處理器核心110包括用以快取指令及/或資料的快取(未示出)。快取包括但不限於第1級、第2級、及最後一級的快取(LLC)、或處理裝置100內之快取記憶體的任何其他配置。處理器核心110可能與計算系統一起使用在計算系統之單一積體電路(IC)晶片上。晶片上之計算系統的一個實施例可能包含處理器和記憶體。用於一個這樣系統的記憶體是快閃記憶體。快閃記憶體可能位於與處理器和其他系統元件相同的晶粒上。另外,諸如記憶體控制器或圖形控制器的其它邏輯方塊也可位於系統晶片上。指令可能包括但不限於用以提取指令的預取邏輯、用以解碼指令的解碼邏輯、用於執行指令的執行邏輯、等等。計算系統可能代表基於來自美國加州Santa Clara的Intel®公司的處理器及/或微處理器之Pentium®系列的處理系統,但是也可能使用其他系統(包括具有其他微處理器、工程工作站、機上盒等等的計算裝置)。在一實施例中,樣本計算系統可能執行作業系統、嵌入式軟體、及/或圖形使用者介面的版本。因此,本揭露的實施例不限於硬體電路和軟體的任何特定組合。
記憶體控制器120可能執行使處理裝置100能夠存取包括揮發性記憶體及/或非揮發性記憶體的主記憶體(未示出)並與其通訊的功能。在一實施例中,記憶 體控制器120可能耦接至系統代理器130,其可能包括記憶體加密引擎(MEE)135。在一些實施例中,MEE 135可能位於與處理裝置100關聯的處理器晶粒上,而主記憶體位於處理器晶粒之外。在一實施例中,MEE 135可能產生加密密鑰,若從處理裝置100中被驅逐之任何快取線屬於SE,則該加密密鑰可以用以執行所述快取線的加密/解密。在另一實施例中,加密密鑰可能例如藉由ucode或信任韌體編程到MEE 135中。在一些實施例中,密鑰本身可能由位於處理裝置100中的數位隨機數產生器產生。除了加密密鑰之外,亦可能存在由某些處理器指令所使用以支援SE資料保護和證明的處理器熔合密鑰。
在一實施例中,處理裝置100可能包括虛擬機監視器(VMM)140。VMM 140也可能被稱為管理程序。VMM 140可能抽象可能包括處理裝置100之主機電腦系統之硬體平台的實體層,並將此抽象呈現給一組訪客虛擬機(訪客VM)150、160。VMM 140提供虛擬作業平台給訪客VM 150、160,並管理訪客VM 150、160的執行。在一些實施例中,可能提供一個以上的VMM以支援處理裝置100的訪客VM 150、160。
在一實施例中,VMM 140可能管理複數個訪客VM,如訪客VM-1 150至訪客VM-N 160以及VM控制域170,這些可能全部同時在處理裝置100上運行。每個VM 150、160可以是機器的軟體實作,其執行程式就像它是實際的實體機器一般。程式可能包括作業系統 (OS),諸如OS 157和OS 167、及其他類型的軟體及/或應用程式。在一實施例中,訪客VM-1 150至訪客VM-N 160可能分別包括安全區,諸如SE 155和SE 165。SE 155、165提供安全位置給VM 150、160之應用程式,以在OS程序的情境內執行碼和儲存資料。SE 155、165基於主記憶體的EPC部分中的記憶體分頁來執行。
在一或多個實施例中,VMM 140可能在啟動時包括VM控制域170。在一實施例中,VM控制域170可能與VMM 140分離。在另一實施例中,VM控制域170可能是處理裝置100之主機OS(例如核心為基的虛擬機)的一部分。在這種情況下,下面描述的遷移服務可能在主機OS上執行。在一些實施例中,除了其他軟體和應用程式之外,VM控制域170可能也包括其自己的作業系統和控制OS 177。VM控制域170可能是可使用VMM 140與訪客VM-1 150至訪客VM-N 160之各者通訊的軟體實作。例如,VM控制域170可使用VMM 140的控制介面(未示出)以發出用以開始、結束、和暫停訪客VM 150、160之任一者的指令。VM控制域170可單獨地或作為群組地發出用於訪客VM 150、160的指令。例如,VM控制域170可向僅在那裡設置的訪客VM-1 150發出暫停命令,而VMM 140和其他VM正常操作。
依照本揭露的實施例,VM控制域170可支援將包含SE(例如SE 155)的VM從一個硬體平台遷移到另一硬體平台。例如,VM控制域170可能包括可管理SE 之生命週期的遷移服務模組175,包括以信任方式在兩個平台之間傳送SE。在一實施例中,VM控制域170係配置為與VMM 140互動以用於將SE 155遷移到不同的平台。具體地,VM控制域170係配置以接收將SE 155移動到新平台的請求,並將此請求轉送到VMM 140的遷移驅動程式145。在一或多個實施例中,遷移驅動程式145包括直接與訪客VM 150、160和如主記憶體之底層平台資源互動的功能。
在一實施例中,遷移服務模組175可能包括一類型之區,例如控制區180或遷移區(MigE)。控制區180可能用以促成包含SE的VM從一個平台遷移到另一個平台。在一些實施例中,控制區180可能與控制結構(未示出)關聯。控制結構包含與SE 155相關的狀態資訊以允許對應之訪客VM-1 150的遷移。此狀態資訊包括與SE 155關聯的一組加密密鑰以及在給定硬體平台上的VM-1 150內支援SGX指令所需的其他密碼元資料。在一些實施例中,VMM 140可以為其所管理的每個訪客VM 150、160創建或分配特定控制結構。下面參考第2圖進一步討論使用控制結構來支援SE之平台遷移的此程序。
第2圖繪示根據一實施例之用於分配控制結構210以支援SE之平台遷移的系統200。在此實例中,系統200包括主記憶體201。主記憶體201可能包括複數個安全記憶體範圍,例如構成EPC 203的安全範圍。例如使用關於第1圖所述之處理裝置100的MEE 135來使用 加密、完整性、和重放保護來保護存在主記憶體201中的EPC 203之記憶體分頁。依照一些實施例,與EPC 203關聯之SE的安全記憶體分頁(如,SE 155之安全分頁202、204、206和208)可綁定到控制結構210並遷移到遠端平台。
當創建新的SGX結構時,其被綁定到記憶體201中的SGX域控制結構(SDCS)(如控制結構210),其唯一識別區實例(例如,控制區180)。在一實施例中,VMM 140可能接著將與控制結構210關聯的記憶體位址載入到如處理裝置100之一或多個處理器的暫存器中。在另一實施例中,VMM 140可能將控制結構210的位址編程入虛擬機控制結構(VMCS)中。若不再需要控制結構210,則VMM 140可能從處理裝置100的硬體平台的所有邏輯處理器卸載和移除結構或VMCS。例如,當SE 155已經遷移到新平台時,可能不再需要控制結構180。
為了將SE 155遷移到新平台,可能從主記憶體201驅逐與SE 155關聯的一或多個記憶體分頁。當從記憶體201取得用以加密分頁的密鑰時,EPC分頁被驅逐。在一實施例中,遷移服務模組175可能通知系統軟體(例如,VMM 140)分配記憶體空間給控制結構210。例如,VMM 140可以使用判定的SGX指令來分配SGX結構,當指令被VMM 140所執行時,分配包含版本槽之陣列的VA分頁。所分配的VA分頁係用於驅逐與區(如SE 155)關聯的分頁。在一些實施例中,VMM 100可能隨後分配一些額外的VA分頁以驅逐第一組VA分頁。此後,驅逐程序可能重複,直到剩下單一槽為止。接著可能將此槽移動到SDCS。
在替代實施例中,VMM可使用指令EDVASLOTLD分配VA分頁並將SDCS中的版本移動到新分配之VA分頁中的VA槽。VMM可接著使用VA槽來將從EPC驅逐的VA分頁載入到常規記憶體且其版本存在於最近由EDVASLOTLD所散佈的VA槽中。然後,它可在新載入的分頁中使用VA槽來將額外的VA分頁或SE載回EPC中。
在一些實施例中,SGX指令也可能初始化控制結構210。例如,SGX指令可能在所分配的記憶體空間中初始化複數個版本陣列(VA)槽,例如VA 212-218。在某些情況下,如控制結構210的分配SDCS只能被部分地初始化。在這種情況下,SDCS可能被置於未決狀態。為了完成SDCS的初始化,控制區180可能執行也稱為「EDINIT」的指令來完成初始化。EDINIT指令可能取得未決SDCS並使用由控制區180提供的資料來完成初始化。在一些實施例中,此資料可能包括密鑰和版本資訊。
VA槽可能用以保持與被驅逐之SE 155的記憶體分頁202-208關聯的版本資料。例如,當SE的EPC分頁被驅逐時,關於每個分頁的某些資訊被保持在用以驅逐分頁之控制結構210的對應VA槽中。版本資料可能用以 防止重放攻擊以及確保資料的最新副本被載入在目的地。在另一個實施例中,可以儲存認證標籤而不是版本資料。在一些實施例中,與被驅逐的分頁相關的其他資料可能儲存在單獨的結構中。此單獨結構可能包括例如認證分頁的加密內容、元資料和分頁的版本的認證標籤。單獨的結構可能存在主記憶體201的一般系統記憶體位置中。在版本資料被載入到控制結構210中之後,可能執行密封控制結構210的指令。
第3圖繪示根據一實施例之用於密封控制結構(如第2圖的控制結構210)的系統300。在此實例中,系統300可能包括控制區180,其可能是第1圖之遷移服務模組175的一部分或包括在第1圖的遷移服務模組175中。控制結構210當被密封時可能包括一組可遷移密鑰302,其能夠存取SE 155及指令組以便於將控制結構以及其他資訊遷移到不同的平台。此其他資訊可能包括例如與控制結構210關聯之SE之VM的安全策略資訊。
為了存取控制結構210(例如,對其讀取或寫入資訊),控制區180可能執行特定指令。此指令可能驗證控制區180是此結構的控制區。當執行指令時,控制區180可能傳遞與控制結構中的識別符比較的控制結構識別符。然後,指令可能驗證被請求之結構中有任何欄位可由控制區180所存取。
如第3圖所示,可遷移密鑰302儲存在控制結構210中。為了實現遷移,控制區可產生可遷移密鑰 302以用作可遷移區之平台密鑰320的替換。在一些實施例中,SGX架構提供用於請求密鑰的介面以及在許多指令中使用密鑰。密鑰可能從平台密鑰320導出,或在處理裝置100的開機時間期間被ucode或信任韌體產生。
在一些實施例中,區可能使用修改的EGETKEY指令,例如EGETKEY 310。修改的EGETKEY指令可能使用控制結構內的密鑰而不是平台密鑰320,來允許與控制結構關聯的區可被遷移而不需要修改。在一些實施例中,平台密鑰320可能用作對EGETKEY 310的輸入參數。
在一實施例中,例如,基於控制區180對VMM 140的請求,關閉與SE 155關聯的VM。在一些實施例中,控制結構210被VMM 140使用指令而「靜默」,並隨後通知控制區180,使得控制結構210可被標記為終止。當控制結構210靜默時,處理器不允許例如藉由現有SGX指令來更新控制結構。在一實施例中,控制結構210可能包括屬性位元304以指示結構是否已經靜默。當控制結構210靜默時,VMM 140設定屬性位元304,且例如在控制結構210成功遷移到新平台之後,控制區180清除此位元304。
第4圖繪示根據一實施例之用於支援SE之平台遷移的系統400。在此實例中,系統400可能包括在第一硬體平台上之第1圖的處理裝置100和在可經由網路410存取之第二硬體平台上的第二處理裝置401。第二處 理裝置401可能與處理裝置100相當。例如,第二處理裝置401可能包括處理器核心420和425(類似於處理器核心110)、由處理器核心420和425之任一者執行的VMM 440(類似於VMM 140)、及包括控制區480(類似於VM控制域170及控制區180)的控制域470。依照一些實施例,系統400可能配置以從特定硬體平台遷移到包括SE的另一訪客VM。
在一實施例中,控制區180被通知訪客VM的特定SE將被遷移到第二平台上的處理裝置401。在一些實施例中,第二平台可能在與平台A不同或相同的實體機器上。例如,處理裝置401可能在包含處理裝置100之相同實體主機的分區上。控制區180可能被通知將與SE 155關聯的控制結構210遷移到控制區480。最初,控制區180可能驗證此請求。例如,控制區180可能藉由檢查結構210的屬性位元來驗證控制結構210未在使用中且被密封。若控制結構210在使用中,則控制區180可能取消或將SE 155的遷移延遲到稍後的時間。若控制結構210如在此所討論地未在使用中且被密封,則控制區180可能接著將結構210的所有權安全地傳送到第二控制區480。這可能包括將控制結構210和伴隨的安全資料移動到在第二平台上的處理裝置401。在一些實施例中,控制結構210可能例如藉由使用中央機構(例如耦接至網路410的信任伺服器)或經由網路410的點對點連接來被傳送到第二控制區480。在這點上,控制區180可能是到中央機構 的指令,其使其將控制結構210發送到第二控制區480。
一旦控制結構210和伴隨的SE 155和VM 150資料已被傳送,則可使用處理裝置401上的資訊來重新建立控制結構210。在這點上,處理裝置401的VMM 440可能請求控制結構210被開啟。例如,第二控制區480可能基於與控制結構210關聯的加密密鑰(例如,可遷移密鑰302)來執行認證解密技術。在一些實施例中,加密密鑰可能例如經由來自第一控制區180的安全連線來預先共享或傳送到第二控制區480。然後,VMM 400可能恢復在第二平台之處理裝置401上包括SE 155的訪客VM 150。
第5圖是繪示根據本揭露之實作之用於實作處理裝置的控制指令以支援SE之平台遷移之方法500的流程圖。方法500可能由可能包含硬體(例如,電路、專用邏輯、可編程邏輯、微碼、等等)、軟體(如在處理裝置上運行的指令)、韌體、或其組合的處理邏輯來執行。在一實施例中,第1圖之處理裝置100的核心110可能執行方法500。雖然以特定的順序或次序顯示,但除非另有說明,可修改處理的順序。因此,所示的實作應當僅被理解為實例,且所示的處理可以用不同的順序執行,且一些處理可能並行地執行。另外,在各種實施例中可能省略一或多個處理。因此,在每個實作中並不需要所有處理。其他處理流程是可能的。
方法500開始於方塊502,其中可以識別與安 全區關聯的控制結構。控制結構包括與第一平台關聯的複數個資料槽和密鑰。在方塊504,來自安全區之資料的版本可能與複數個資料槽關聯。在方塊506,可能產生當成對與第一平台關聯之密鑰的替換之可遷移密鑰。可遷移密鑰被用以控制存取安全區。在方塊508,控制結構可能被遷移到第二平台以能夠存取第二平台上的安全區。
方塊510根據遷移是否完成而分支。若遷移成功完成,則方法500可能進行到方塊512,其中例如通知可能被發送到第二平台上的遷移服務。回應中,第二平台上的遷移服務可能使用來自控制結構的資料在第二平台上重建安全區,然後在第二平台上恢復所遷移的安全區。若遷移在完成之前終止,則方法500可能進行到方塊514。在方塊514,例如,警報可能被發送到在第一平台上的VMM 140。回應於此,VMM 140可能重新啟動第一平台上之安全區的執行並在稍後的時間重試遷移此區。
第6A圖係繪示依照本揭露之一實施例實作之用於處理器600之微型架構的方塊圖。具體來說,處理器600描繪根據本揭露之至少一實施例之將包括在處理器中的有序架構核心與暫存器更名、亂序發出/執行邏輯。
處理器600包括前端單元630,耦接至執行引擎單元650,且這兩者都耦接至記憶體單元670。處理器600可能包括精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或任一核心類型。作為另一種選擇,處理器600可能包括 專用核心,例如,網路或通訊核心、壓縮引擎、圖形核心、或之類。在一實施例中,處理器600可能是多核心處理器或可能是多處理器系統之一部分。
前端單元630包括分支預測單元632,耦接至指令快取單元634,其係耦接至指令轉譯旁視緩衝器(TLB)636,其係耦接至指令提取單元638,其係耦接至解碼單元640。解碼單元640(也已知為解碼器)可能解碼指令,並產生作為輸出的一或更多微運算、微碼進入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或以其他方式反映原始指令、或從原始指令取得。解碼器640可能使用各種不同機制來實作。適當機制之實例包括,但不限於查找表、硬體實作、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。指令快取單元634更耦接至記憶體單元670。解碼單元640係耦接至執行引擎單元650中的更名/分配器單元652。
執行引擎單元650包括更名/分配器單元652,耦接至引退單元654及一組一或多個排程器單元656。排程器單元656代表任何數量的不同排程器,包括保留站(RS)、中央指令視窗、等等。排程器單元656係耦接至實體暫存器檔案單元658。每個實體暫存器檔案單元658代表一或多個實體暫存器檔案,其中不同者儲存一或多個不同的資料類型,如純量整數、純量浮點數、緊縮整數、緊縮浮點數、向量整數、向量浮點數、狀態(例如,指令指標,其係待執行之下一個指令的位址)、等 等。引退單元654重疊實體暫存器檔案單元658以繪示可能實作暫存器更名和亂序執行的各種方式(例如,使用重排序緩衝器和引退暫存器檔案;使用未來檔案、歷史緩衝器、和引退暫存器檔案;使用暫存器映射及暫存器池;等等)。執行引擎單元650可能包括例如管理功能單元之電源功能的電源管理單元(PMU)690。
一般來說,架構暫存器從處理器的外部或從程式設計者的角度來看是可見的。暫存器不限於任何已知的特定類型的電路。各種不同類型的暫存器是適當的,只要它們能夠儲存和提供如本文所述的資料。適當暫存器的實例包括但不限於專用實體暫存器、使用暫存器更名之動態分配的實體暫存器、專用和動態分配之實體暫存器的組合、等等。引退單元654和實體暫存器檔案單元658係耦接至執行叢集660。執行叢集660包括一組一或多個執行單元662和一組一或多個記憶體存取單元664。執行單元662可能對各種類型的資料(例如,純量浮點數、緊縮整數、緊縮浮點數、向量整數、向量浮點數)進行各種運算(例如,移位、加法、減法、乘法)。
儘管一些實施例可能包括一些專用於特定功能或功能組的執行單元,但其他實施例可能包括只有一個執行單元或全部進行所有功能的多個執行單元。排程器單元656、實體暫存器檔案單元658、和執行叢集660被顯示為可能是複數的,因為某些實施例對某些類型的資料/運算建立獨立管線(例如,純量整數管線、純量浮點數/ 緊縮整數/緊縮浮點數/向量整數/向量浮點數管線、及/或各具有其自己之排程器單元的記憶體存取管線、實體暫存器檔案單元、及/或執行叢集-且在獨立的記憶體存取管線之情況下,實作了某些實施例是只有此管線的執行叢集具有記憶體存取單元664)。也應了解這裡使用了獨立管線,這些管線之一或多個可能是亂序發出/執行且其餘的是有序的。
這組記憶體存取單元664係耦接至記憶體單元670,其可能包括資料預取器680、資料TLB單元672、資料快取單元(DCU)674、及第2級(L2)快取單元676以舉幾個實例。在一些實施例中,DCU 674也已知為第1級資料快取(L1快取)。DCU 674可能處理多個未完成的快取失誤並繼續服務輸入的儲存和載入。它還支援維護快取一致性。資料TLB單元672是用於藉由映射虛擬和實體位址空間來提高虛擬位址轉換速度的快取。在一示範實施例中,記憶體存取單元664可能包括載入單元、儲存位址單元、及儲存資料單元,各耦接至記憶體單元670中的資料TLB單元672。L2快取單元676係耦接至一或多個其他級的快取且最終耦接至主記憶體。
在一實施例中,資料預取器680藉由自動預測程式將要消耗的資料來推測性地將資料載入/預取至DCU 674。預取可能指在資料實際被處理器需求之前將儲存在記憶體階層的一個記憶體位置(例如,較低級的快取或記憶體)中的資料傳送到更接近(例如,產生較低的存 取等待時間)處理器的較高級記憶體位置。更具體地,預取可能指在處理器發出對回傳之特定資料的需求之前,從其中一個較低級快取/記憶體至資料快取和/或預取緩衝器的資料之早期取回。
在一實施例中,處理器600可能與關於第1圖所述的處理裝置100相同以支援關於本揭露之實作所述之處理裝置中的SE的平台遷移。
處理器600可能支援一或多個指令集(例如,x86指令集(具有已加入較新版本的一些擴充);美國加州Sunnyvale的MIPS技術之MIPS指令集;美國加州Sunnyvale的ARM股份公司之ARM指令集(具有如NEON的可選額外的擴充))。
應了解核心可能支援多執行緒(執行兩個或多個平行組的操作或執行緒),且可能以各種方式來實行,包括時間切割多執行緒、同時多執行緒(其中單一實體核心提供邏輯核心給實體核心係同時多執行緒的每個執行緒)、或以上之組合(例如,時間切割提取和解碼及之後如Intel®超執行緒技術的同時多執行緒)。
儘管在亂序執行之內文中說明了暫存器更名,但應了解可能在有序架構中使用暫存器更名。儘管處理器之所示實施例也包括分開的指令和資料快取單元及共享L2快取單元,但其他實施例可能具有用於指令和資料兩者的單一內部快取,例如,第1級(L1)內部快取、或多級的內部快取。在一些實施例中,系統可能包括內部快 取與在核心及/或處理器外部的外部快取之組合。另外,所有快取可能在核心及/或處理器外部。
第6B圖係繪示根據本揭露之一些實施例被第6A圖之處理器600實作的有序管線與暫存器更名級、亂序發出/執行管線的方塊圖。第6B圖中的實線框繪示有序管線,而虛線框繪示暫存器更名、亂序發出/執行管線。在第6B圖中,處理器管線601包括提取級602、長度解碼級604、解碼級606、分配級608、更名級610、排程(也稱為發送或發出)級612、暫存器讀取/記憶體讀取級614、執行級616、寫回/記憶體寫入級618、例外處理級620、及提交級622。在一些實施例中,級602-624的順序可能與所示的不同,且不限於第6B圖中所示的特定順序。
第7圖繪示依照本揭露之一實施例之用於包括用以支援SE之平台遷移的邏輯電路之處理器700的微型架構之方塊圖。在一些實施例中,依照一實施例的指令可被實作以對具有位元組、字組、雙字組、四字組等大小的資料元件以及諸如單精度和雙精度整數和浮點數資料類型的資料類型進行運算。在一實施例中,有序前端701是處理器700的一部分,其提取要執行的指令並準備它們稍後在處理器管線中使用。
前端701可能包括幾個單元。在一實施例中,指令預取器726從記憶體提取指令並將它們饋送到指令解碼器728,其進而解碼或解譯它們。例如,在一實施 例中,解碼器將接收的指令解碼成機器可執行之稱為「微指令」或「微運算」(也稱為微op或uop)的一或多個運算。在其他實施例中,依照一實施例,解碼器將指令解析為運算碼以及對應資料和控制欄位,其被微型架構使用以執行運算。在一實施例中,追蹤快取730採用解碼的uop並將其組合成程式次序序列或在uop佇列734中追蹤用於執行。當追蹤快取730遇到複雜指令時,微碼ROM 732提供完成運算所需的uop。
一些指令被轉成單一微op,而其他指令需要幾個微op來完成完整的運算。在一個實施例中,若需要多於四個微op來完成指令,則解碼器728存取微碼ROM 732以執行指令。針對一實施例,指令可被解碼為小數目的微op用於在指令解碼器728進行處理。在另一實施例中,如果需要多個微op來完成操作,則指令可儲存在微碼ROM 732內。追蹤快取730是指進入點可編程邏輯陣列(PLA)以判定正確微指令指標,來根據一實施例從微碼ROM 732讀取微碼序列以完成一或多個指令。在微碼ROM 732完成用於指令之序列微op之後,機器的前端701繼續從追蹤快取730提取微op。
亂序執行引擎703是準備執行指令的地方。亂序執行邏輯具有多個緩衝器以平滑和重新排序指令流以便在它們沿著管線下行並被排程用於執行時最佳化效能。分配器邏輯分配每個uop需要的機器緩衝區和資源以便執行。暫存器更名邏輯將邏輯暫存器更名至暫存器檔案中的 項目上。分配器還在指令排程器:記憶體排程器、快速排程器702、慢/通用浮點數排程器704、及簡單浮點數排程器706前面為兩個uop佇列之其一者分配用於每個uop的項目,一個用於記憶體運算,一個用於非記憶體運算。uop排程器702、704、706基於其依賴輸入暫存器運算元來源的備妥狀態以及uop需要完成其運算之執行資源的可用性,來判定uop何時準備好可執行。一實施例的快速排程器702可在主時脈週期的每一半上排程,而其他排程器可只在每個主處理器時脈週期排程一次。排程器對發送埠進行仲裁以排程uop用於執行。
暫存器檔案708、710位在排程器702、704、706和執行方塊711的執行單元712、714、716、718、720、722、724之間。有獨立的暫存器檔案708、710,分別用於整數和浮點運算。一實施例的每個暫存器檔案708、710也包括旁路網路,其繞過或轉送尚未寫進暫存器檔案中之已完成結果至新的依賴uop。整數暫存器檔案708和浮點暫存器檔案710也能夠與另一個通訊資料。針對一實施例,整數暫存器檔案708被分成兩個獨立暫存器檔案,一個暫存器檔案用於資料的低次序32位元且第二暫存器檔案用於資料的高次序32位元。一實施例的浮點暫存器檔案710具有128位元寬項目,因為浮點數指令通常具有寬度從64位元到128位元的運算元。
執行方塊711包含執行單元712、714、716、718、720、722、724,這裡指令被實際執行。此章節包括 暫存器檔案708、710,其儲存微指令需要執行的整數和浮點資料運算元值。一實施例的處理器700包含若干執行單元:位址產生單元(AGU)712、AGU 714、快速ALU 716、快速ALU 718、慢ALU 720、浮點ALU 722、浮點移動單元724。針對一實施例,浮點執行方塊722、724執行浮點、MMX、SIMD、及SSE、或其他運算。一實施例的浮點ALU 722包括64位元×64位元浮點除法器以執行除法、平方根、及餘數微op。針對本揭露之實施例,涉及浮點值的指令可能以浮點硬體來處理。
在一實施例中,ALU運算前往高速ALU執行單元716、718。一實施例的快速ALU 716、718會以半個時脈週期的有效延遲來執行快速運算。針對一實施例,最複雜整數運算前往慢ALU 720,由於慢ALU 720包括整數執行硬體用於長延遲類型的運算,如乘法、移位、旗標邏輯、及分支處理。記憶體載入/儲存操作係由AGU 712、714執行。針對一實施例,在對64位元資料運算元執行整數運算之上下文中說明整數ALU 716、718、720。在替代實施例中,可以實作ALU 716、718、720以支援包括16、32、128、256、等等的各種資料位元。同樣地,可以實作浮點單元722、724以支援具有各種寬度之位元的運算元之範圍。針對一實施例,浮點單元722、724會結合SIMD和多媒體指令運算128位元寬緊縮資料運算元。
在一實施例中,uop排程器702、704、706在 完成執行父載入之前發送依賴操作。由於uop在處理器700中被推測地排程和執行,處理器700也包括用以處理記憶體失誤的邏輯。若資料載入在資料快取中失誤,則在管線中會有進行中的依賴運算會有暫時不正確資料留在排程器。重放機制追蹤並再執行使用不正確資料的指令。只有依賴操作需要被重放且獨立操作允許被完成。處理器之一個實施例的排程器和重放機制還被設計以捕獲用於文字串比較操作的指令序列。
處理器700也包括根據本揭露之實施例之用以實作用於記憶體相依消除的儲存位址預測之邏輯。在一實施例中,處理器700的執行方塊711可能包括用於支援SE之平台遷移的儲存位址預測(未示出)。
術語「暫存器」可能指用作用以識別運算元之指令之一部分的板上處理器儲存位置。換句話說,暫存器可能從處理器的外部是可用的(從程式設計者的角度)。然而,實施例之暫存器的含義不應限於特定類型的電路。相反,實施例的暫存器能夠儲存和提供資料,並執行本文所述的功能。本文所述的暫存器可使用任何數量的不同技術由處理器內的電路來實作,諸如專用實體暫存器、使用暫存器更名的動態分配實體暫存器、專用和動態分配的實體暫存器之組合、等等。在一實施例中,整數暫存器儲存三十二位元的整數資料。一實施例的暫存器檔案也包含用於緊縮資料的八個多媒體SIMD暫存器。
對於下面的討論,暫存器被理解為設計以保 持緊縮資料的資料暫存器,諸如在來自美國加州Santa Clara的英特爾公司的MMX技術實現之微處理器中的64位寬MMXTM暫存器(在一些情況下也被稱為「mm」暫存器)。這些MMX暫存器以整數和浮點數形式提供,可與伴隨SIMD和SSE指令的緊縮資料元件一起操作。同樣地,與SSE2、SSE3、SSE4、或更高(統稱為「SSEx」)技術相關的128位元寬的XMM暫存器也可用以保持這樣的緊縮資料運算元。在一實施例中,在儲存緊縮資料和整數資料時,暫存器不需要在兩種資料類型之間進行區分。在一實施例中,整數和浮點被包含在相同的暫存器檔案或不同的暫存器檔案中。此外,在一實施例中,浮點和整數資料可能儲存在不同的暫存器或相同的暫存器中。
實施例可能在許多不同的系統類型中實作。現在參考第8圖,顯示的是繪示可能使用本揭露之實施例之系統800之方塊圖。如第8圖所示,多處理器系統800是點對點互連系統,且包括經由點對點互連850耦接的第一處理器870和第二處理器880。儘管顯示只有兩個處理器870、880,但了解本發明之範疇不以此為限。在其他實施例中,一或多個額外處理器可能出現在給定處理器中。在一實施例中,多處理器系統800可能支援如本文所述之SE的平台遷移。
顯示處理器870和880分別包括整合記憶體控制器單元872和882。處理器870也包括作為其匯流排 控制器單元點對點(P-P)介面876和878的部分;同樣地,第二處理器880包括P-P介面886和888。處理器870、880可能使用P-P介面電路878、888經由點對點(P-P)介面850來交換資訊。如第8圖所示,IMC 872和882將處理器耦接至各別記憶體(即記憶體832和記憶體834),其可能是本地附接於各別處理器之主記憶體的部分。
處理器870、880可能使用點對點介面電路876、894、886、898經由個別P-P介面852、854來與晶片組890交換資訊。晶片組890可能經由高效能圖形介面839來與高效能圖形電路838交換資訊。
共享快取(未顯示)可能包括在兩處理器之外的任一處理器中或之外,還經由p-p互連與處理器連接,使得若將處理器置於低功率模式中,則任一或兩處理器的區域快取資訊可能儲存於共享快取中。
晶片組890可能經由介面896來耦接至第一匯流排816。在一實施例中,第一匯流排816可能是周邊元件互連(PCI)匯流排、或如PCI快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本揭露之範圍並不以此為限。
如第8圖所示,各種I/O裝置814可能與匯流排橋接器818一起耦接至第一匯流排816,其中匯流排橋接器818將第一匯流排816耦接至第二匯流排820。在一實施例中,第二匯流排820可能是低接腳數(LPC)匯 流排。在一實施例中,各種裝置可能耦接至第二匯流排820,包括例如鍵盤及/或滑鼠822、通訊裝置827及如磁碟機或可能包括指令/碼和資料830之其他大容量儲存裝置的儲存單元828。此外,音頻I/O 824可能耦接至第二匯流排820。請注意其他架構係可能的。例如,系統可能實作多點匯流排或其他這類架構,來取代第8圖之點對點架構。
現在參考第9圖,顯示的是本揭露之一實施例可能操作之系統900的方塊圖。系統900可能包括一或多個處理器910、915,其係耦接至圖形記憶體控制器中心(GMCH)920。在第9圖中以虛線來表示額外處理器915的非必要性。在一實施例中,處理器910、915支援根據本揭露之實施例之SE的平台遷移。
每個處理器910、915可能是如上所述的電路、積體電路、處理器、及/或矽積體電路的一些版本。然而,應注意積體圖形邏輯和積體記憶體控制單元似不會存在於處理器910、915中。第9圖繪示GMCH 920可能耦接至記憶體940,其可能是例如動態隨機存取記憶體(DRAM)。針對至少一實施例,DRAM可能關聯於非揮發性快取。
GMCH 920可能是晶片組,或一部分的晶片組。GMCH 920可能與處理器910、915通訊及控制處理器910、915與記憶體940之間的互動。GMCH 920可能也當作在處理器910、915及系統900之其他元件之間的 加速匯流排介面。針對至少一實施例,GMCH 920經由如前端匯流排(FSB)995之多點匯流排來與處理器910、915通訊。
再者,GMCH 920係耦接至顯示器945(如平板或觸控顯示器)。GMCH 920可能包括整合圖形加速器。GMCH 920更耦接至輸入/輸出(I/O)控制器中心(ICH)950,其可能用以將各種周邊裝置耦接至系統900。例如在第9圖之實施例中顯示的是外部圖形裝置960,其可能是與其他周邊裝置970一起耦接至ICH 950的分開圖形裝置。
替代地,額外或不同處理器可能也出現在系統900中。例如,額外處理器915可能包括與處理器910相同的額外處理器、與處理器910異質或不對稱的額外處理器、加速器(例如,圖形加速器或數位信號處理(DSP)單元)、場效可編程閘陣列、或任何其他處理器。就包括架構、微型架構、熱、功率消耗特性、等等的規制標準而言,在處理器910、915之間會有多種差異。這些差異可能有效地在處理器910、915之間將它們顯示為不對稱和異質性的。針對至少一個實施例,各種處理器910、915可能存在於相同的晶粒封裝中。
現在參考第10圖,顯示的是本揭露之實施例可能操作之系統1000的方塊圖。第10圖繪示處理器1070、1080。在一實施例中,處理器1070、1080可能支援如上所述之SE的平台遷移。處理器1070、1080可能分 別包括整合記憶體和I/O控制邏輯(「CL」)1072和1082並經由分別在點對點(P-P)介面1078和1088之間的點對點互連1050彼此相互通訊。處理器1070、1080各自經由點對點互連1052和1054通過各別P-P介面1076至1094和1086至1098與晶片組1090通訊,如圖所示。針對至少一實施例,CL 1072、1082可能包括整合記憶體控制器單元。CL 1072、1082可能包括I/O控制邏輯。如所示,記憶體1032、1034耦接至CL 1072、1082,且I/O裝置1014也耦接至控制邏輯1072、1082。傳統I/O裝置1015係經由介面1096耦接至晶片組1090。
實施例可能在許多不同的系統類型中實作。第11圖係依照本揭露之實施例之SoC 1100的方塊圖。虛線框在更進階的SoC上是非必要的特徵。在第11圖中,互連單元1112係耦接至:包括一組一或多個核心1102A-N及共享快取單元1106的應用處理器1120;系統代理器單元1110;匯流排控制器單元1116;整合記憶體控制器單元1114;可能包括整合圖形邏輯1108、用於提供靜態及/或錄影機功能的影像處理器1124、用於提供硬體音頻加速的音頻處理器1126、和用於提供視頻編碼/解碼加速的視頻處理器1128的一組或一或更多媒體處理器1118;靜態隨機存取記憶體(SRAM)單元1130;直接記憶體存取(DMA)單元1132、及用於耦接至一或多個外部顯示器的顯示單元1140。在一實施例中,記憶體模組可能被包括在整合記憶體控制器單元1114中。在另一實施例 中,記憶體模組可能被包括在可能用以存取及/或控制記憶體之SoC 1100的一或多個其他元件中。應用處理器1120可能包括用於實作靜默記憶體指令和失誤率追蹤以最佳化執行緒上之切換策略的PMU,如本文的實施例中所述。
記憶體階層包括核心內之一或多級的快取、一組或一或多個共享快取單元1106、及耦接至這組整合記憶體控制器單元1114的外部記憶體(未示出)。這組共享快取單元1106可能包括如第2級(L2)、第3級(L3)、第4級(L4)、或其他級之快取的一或多個中級快取、最後一級的快取(LLC)、及/或以上之組合。
在一些實施例中,一或更多核心1102A-N能夠執行多執行緒。系統代理器1110包括那些協調和操作核心1102A-N的元件。例如,系統代理器單元1110可能包括電力控制單元(PCU)及顯示單元。PCU可能是或包括調節核心1102A-N及整合圖形邏輯1108之電力狀態所需的邏輯和元件。顯示單元係用於驅動一或多個外部連接的顯示器。
就架構及/或指令集而言,核心1102A-N可能是同型或不同型的。例如,核心1102A-N之一些者可能是有序的而其他是亂序的。作為另一實例,核心1102A-N之兩個或更多者也許能夠執行相同的指令集,而其他也許僅能夠執行指令集的子集或不同的指令集。
應用處理器1120可能是如CoreTMi3、i5、 i7、2 Duo和Quad、XeonTM、ItaniumTM、AtomTM或QuarkTM處理器的通用處理器,其可能得自於美國加州Santa Clara的IntelTM公司。另外,應用處理器1120可能來自另一公司,例如ARM HoldingsTM股份有限公司、MIPSTM、等等。應用處理器1120可能是專用處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、協處理器、嵌入式處理器或之類。應用程式處理器1120可能在一或更多晶片上實作。應用處理器1120可能是一或多個基板的一部分及/或可能使用例如BiCMOS、CMOS、或NMOS的一些處理技術之任一者來實作在一或多個基板上。
第12圖係依照本揭露的系統晶片(SoC)設計之實施例的方塊圖。作為具體說明性實例,SoC 1200係包括在使用者設備(UE)中。在一實施例中,UE係指要由終端使用者用來通訊的任何裝置,例如手持電話、智慧型手機、平板電腦、超薄型筆記型電腦、具有寬頻適配器的筆記型電腦、或任何其他類似的通訊裝置。通常UE連接至基地台或節點,其可能本質上對應於在GSM網路中的行動台(MS)。
在此,SoC 1200包括2個核心-1206和1207。核心1206和1207可能遵守指令集結構,例如Intel® Architecture CoreTM為基的處理器、超微半導體公司(AMD)處理器、MIPS為基的處理器、ARM為基的處理器設計、或以上之客戶、以及其獲許可的人或採用者。 核心1206和1207係耦接至快取控制1208,其係與匯流排介面單元1209和L2快取1210關聯以與系統1200的其他部分通訊。互連1211包括晶片上互連,例如IOSF、AMBA、或上述其他互連,其可能實作所述之揭露的一或更多態樣。在一實施例中,核心1206、1207可能支援本文實施例中所述之SE的平台遷移。
互連1211將通訊通道提供至其他元件,例如用以連接SIM卡的用戶身分模組(SIM)1230、用以保持啟動碼以供核心1206和1207執行以初始化和啟動SoC 1200的開機ROM 1235、用以連接外部記憶體(例如,DRAM 1260)的SDRAM控制器1240、用以連接非揮發性記憶體(例如,快閃1265)的快閃控制器1245、用以連接周邊裝置的周邊控制1250(例如,串列周邊介面)、用以顯示和接收輸入(例如,觸控功能的輸入)的視頻編解碼器1220和視頻介面1225、用以進行圖形相關計算的GPU 1215、等等。這些介面之任一者可能結合本文所述之揭露的態樣。另外,系統1200繪示用於通訊的周邊裝置,例如藍芽模組1270、3G數據機1275、GPS 1280、及Wi-Fi 1285。
第13圖繪示以在其中可能執行用於使機器進行本文所述之任一或多個方法之一組指令的電腦系統1200為示範形式之機器的圖示。在其他實施例中,機器可能連接(例如,網路)至在LAN、企業內部網路、企業間網路、或網際網路中的其他機器。機器可能在主從式網 路環境中之伺服器或客戶端裝置的容量中操作,或作為在點對點(或分佈式)網路環境中的對等機器。機器可能是個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、蜂巢式電話、網路裝置、伺服器、網路路由器、交換器或橋接器、或能夠執行明定要由此機器採取的動作之一組指令(順序或以其他方式)的任何機器。此外,儘管只有繪示單一機器,但「機器」之術語也應被視為包括機器之任何組合,其個別地或共同地執行一組(或多組)指令以進行本文所述之任一或更多方法。
電腦系統1300包括處理裝置1302、主記憶體1304(例如,唯讀記憶體(ROM)、快閃記憶體、動態隨機存取記憶體(DRAM)(例如同步DRAM(SDRAM)或DRAM(RDRAM)、等等)、靜態記憶體1306(例如,快閃記憶體、靜態隨機存取記憶體(SRAM)、等等)、及資料儲存裝置1318,其經由匯流排1330來彼此通訊。
處理裝置1302代表一或更多通用處理裝置,例如微處理器、中央處理單元或之類。更具體而言,處理裝置可能是複雜指令集計算(CISC)微處理器、精簡指令集電腦(RISC)微處理器、極長指令字(VLIW)微處理器、或實作其他指令集的處理器、或實作指令集之組合的處理器。處理裝置1302可能也是一或多個專用處理裝置,例如專用積體電路(ASIC)、現場可編程閘陣列(FPGA)、數位信號處理器(DSP)、網路處理器、或之類。在一實施例中,處理裝置1302可能包括一或更多處 理核心。處理裝置1302係配置以執行用於進行本文所述之操作和步驟的處理邏輯1326。在一實施例中,處理裝置1302與關於第1圖所述的處理器架構100相同,其實作如本文中所揭露之實施例所述之SE的平台遷移。
電腦系統1300可能更包括通訊地耦接至網路1320的網路介面裝置1308。電腦系統1300也可能包括視頻顯示單元1310(例如,液晶顯示器(LCD)或陰極射線管(CRT))、字母數字輸入裝置1312(例如,鍵盤)、游標控制裝置1314(例如,滑鼠)、及信號產生裝置1316(例如,揚聲器)。又,電腦系統1300可能包括圖形處理單元1322、視頻處理單元1328、及音頻處理單元1332。
資料儲存裝置1318可能包括於其上係實作本文所述之任一或多個方法(例如實作靜默記憶體指令和失誤率追蹤以在如上所述之處理裝置中最佳化執行緒上的切換策略)之儲存之軟體1326的非暫態機器可存取儲存媒體1324。軟體1326在由電腦系統1300執行它們期間可能也完全地或至少部分地存在於主記憶體1304內作為指令1326及/或存在於處理裝置1302內作為處理邏輯1326;主記憶體1304和處理裝置1302也構成機器可存取儲存媒體。
非暫態機器可讀儲存媒體1324可能也用以儲存實作靜默記憶體指令和失誤率追蹤以在處理裝置(如關於第1圖之處理裝置100所述)中最佳化執行緒上之切換 策略的指令1326及/或包含呼叫上述應用程式之方法的軟體庫。儘管非暫態機器可存取儲存媒體1324在示範實施例中被顯示為單一媒體,但「機器可存取儲存媒體」之術語應被視為包括單一媒體或多個媒體(例如,集中式或分佈式資料庫及/或相關快取和伺服器),其儲存一或多組指令。「機器可存取儲存媒體」之術語也應被視為包括能夠儲存、編碼或載送一組指令用於藉由機器來執行且使機器進行本揭露之任一或多個方法的任何媒體。「機器可存取儲存媒體」之術語藉此應被視為包括,但不限於固態記憶體、及光學和磁性媒體。
下列實例關於其他實施例。
實例1係一種處理器,包含:1)記憶體控制器單元,用以存取安全區及處理器核心,耦接至記憶體控制器單元。處理器核心用以:a)識別關聯於安全區的控制結構,控制結構包含複數個資料槽和密鑰,關聯於包含記憶體控制器單元和處理器核心的第一平台;b)將來自安全區之資料之版本關聯於複數個資料槽;c)產生可遷移密鑰作為用於關聯於控制結構之密鑰的替換,可遷移密鑰用以控制存取安全區;及d)將控制結構遷移至第二平台以能夠存取在第二平台上的安全區。
在實例2中,實例1的主題,其中處理器核心更用以密封控制結構以防止對在複數個資料槽中之內容的更新。
在實例3中,實例1-2之任一者的主題,其 中處理器核心更用以開啟控制結構以讀取在複數個資料槽中的內容。
在實例4中,實例1-3之任一者的主題,其中遷移控制結構更包含處理器核心用以安全地將控制結構從第一平台傳送至第二平台。
在實例5中,實例1-4之任一者的主題,其中遷移控制結構更包含處理器核心用以:1)安全地傳送控制結構至信任伺服器,及2)使信任伺服器傳送控制結構至第二平台。
在實例6中,實例1-5之任一者的主題,其中回應於偵測到完成控制結構的遷移,處理器核心更產生通知指示器。
在實例7中,實例1-6之任一者的主題,其中處理器核心更用以暫停關聯於安全區之虛擬機的執行。
在實例8中,實例1-7之任一者的主題,其中回應於暫停虛擬機的執行,處理器核心更用以:1)從記憶體驅逐關聯於安全區的記憶體分頁;及2)關聯驅逐記憶體分頁之版本資料與關聯於控制結構的複數個資料槽。
各個實施例可能具有上述之結構特徵的不同組合。例如,上述之處理器的所有可選特徵也可能相對於本文所述的方法或程序來實作,且實例中的具體細節可能在一或多個實施例中的任何地方使用。
實例9係一種方法,包含:a)藉由處理裝置 識別關聯於安全區的控制結構,控制結構包含複數個資料槽和密鑰,關聯於包含記憶體控制器單元和處理器核心的第一平台;b)將來自安全區之資料之版本關聯於複數個資料槽;c)使用處理裝置產生可遷移密鑰作為用於關聯於控制結構之密鑰的替換,可遷移密鑰用以控制存取安全區;及d)使用處理裝置將控制結構遷移至第二平台以能夠存取在第二平台上的安全區。
在實例10中,實例9的主題,其中更包含密封控制結構以防止對在複數個資料槽中之內容的更新。
在實例11中,實例9-10之任一者的主題,更包含開啟控制結構用於讀取在複數個資料槽中的內容。
在實例12中,實例9-11之任一者的主題,其中遷移控制結構更包含安全地將控制結構從第一平台傳送至第二平台。
在實例13中,實例9-12之任一者的主題,其中遷移控制結構更包含:1)安全地傳送控制結構至信任伺服器,及2)使信任伺服器傳送控制結構至第二平台。
在實例14中,實例9-13之任一者的主題,其中回應於偵測到完成控制結構的遷移,產生通知指示器。
在實例15中,實例9-14之任一者的主題,更包含暫停關聯於安全區之虛擬機的執行。
在實例16中,實例9-15之任一者的主題, 更包含回應於暫停虛擬機的執行而:1)從記憶體驅逐關聯於安全區的記憶體分頁;及2)關聯驅逐記憶體分頁之版本資料與關聯於控制結構的複數個資料槽。
各個實施例可能具有上述之操作特徵的不同組合。例如,上述之方法的所有可選特徵也可能關於非暫態電腦可讀儲存媒體來實作。實例中的具體細節可能在一或多個實施例中的任何地方使用。
實例17係一種非暫態電腦可讀儲存媒體,包括指令,其當被處理裝置執行時使處理裝置:a)使用處理裝置識別關聯於安全區的控制結構,控制結構包含複數個資料槽和密鑰,關聯於包含記憶體控制器單元和處理器核心的第一平台;b)將來自安全區之資料之版本關聯於複數個資料槽;c)產生可遷移密鑰作為用於關聯於控制結構之密鑰的替換,可遷移密鑰用以控制存取安全區;及d)將控制結構遷移至第二平台以能夠存取在第二平台上的安全區。
在實例18中,實例17的主題,其中可執行指令更使處理裝置密封控制結構以防止對在複數個資料槽中之內容的更新。
在實例19中,實例17-18之任一者的主題,其中可執行指令更使處理裝置開啟控制結構用於讀取在複數個資料槽中的內容。
在實例20中,實例17-19之任一者的主題,其中為了遷移控制結構,可執行指令更使處理裝置安全地 將控制結構從第一平台傳送至第二平台。
在實例21中,實例17-20之任一者的主題,其中為了遷移控制結構,可執行指令更使處理裝置:1)安全地傳送控制結構至信任伺服器,及2)使信任伺服器傳送控制結構至第二平台。
在實例22中,實例17-21之任一者的主題,其中回應於偵測到完成控制結構的遷移,可執行指令更使處理裝置產生通知指示器。
在實例23中,實例17-22之任一者的主題,其中可執行指令更使處理裝置暫停關聯於安全區之虛擬機的執行。
在實例24中,實例17-23之任一者的主題,其中回應於暫停虛擬機的執行,可執行指令更使處理裝置:1)從記憶體驅逐關聯於安全區的記憶體分頁;及2)關聯驅逐記憶體分頁之版本資料與關聯於控制結構的複數個資料槽。
實例25係一種非暫態電腦可讀儲存媒體,包括指令,其當被處理器執行時使處理器執行實例9-16的方法。
各個實施例可能具有上述之操作特徵的不同組合。
實例26係一種系統,包含系統晶片(SoC),包含複數個功能單元和耦接至複數個功能單元的記憶體控制器單元(MCU),其中MCU包含處理器, 其中處理器係配置以執行實例9-16的方法。
在實例27中,實例26的主題,其中SoC更包含實例1-8和17-24之任一者的主題。
實例28係一種設備,包含:1)處理器的複數個功能單元;2)用於藉由處理器識別關聯於安全區的控制結構之工具,控制結構包含複數個資料槽和密鑰,關聯於包含記憶體控制器單元和處理器的第一平台;3)用於將來自安全區之資料之版本關聯於複數個資料槽的工具;4)用於產生可遷移密鑰作為用於關聯於控制結構之密鑰的替換之工具,可遷移密鑰用以控制存取安全區;及5)將控制結構遷移至第二平台以能夠存取在第二平台上的安全區之工具。
在實例29中,實例28的主題,更包含實例1-8和17-24之任一者的主題。
實例30係一種系統,包含:記憶體裝置和包含記憶體控制器單元的處理器,其中處理器係配置以執行實例9-16之任一者的方法。
在實例31中,實例30的主題,更包含實例1-8和17-24之任一者的主題。
儘管已關於有限數量的實施例描述了本揭露,但是本領域之技藝者將知道其中的許多修改和變化。旨在所附申請專利範圍涵蓋如落入本揭露之真實精神和範圍內的所有這樣修改和變化。
設計可能經歷從創建到模擬到製造的各個階 段。表示設計的資料可能以多種方式表示設計。首先,如在模擬中有用的,可能使用硬體描述語言或另一功能描述語言來表示硬體。另外,可能在設計程序的一些階段產生具有邏輯及/或電晶體閘極的電路級模型。再者,大多數設計在一些階段達到表示硬體模型中之各種裝置之實體佈置的資料級別。在使用傳統半導體製造技術的情況下,表示硬體模型的資料可能是指定在對用以產生積體電路之遮罩的不同遮罩層上存在或不存在各種特徵的資料。在設計的任何表示中,資料可能儲存在任何形式的機器可讀媒體中。記憶體或如磁片的磁或光儲存器可能是儲存經由光或電波傳輸之資訊的機器可讀媒體,光或電波經調製或以其他方式產生以傳輸這樣的資訊。當傳送指示或攜帶碼或設計的電載波時,在執行電信號之複製、緩衝或重傳的範圍內,進行新的複製。因此,通訊提供者或網路提供者可能在有形的機器可讀媒體上(至少暫時地)儲存具體化本揭露之實施例之技術的文章(如編碼成載波的資訊)。
如本文使用的模組係指硬體、軟體、及/或韌體的任何組合。作為實例,模組包括關聯於非暫態媒體的硬體(如微控制器)以儲存適用於被微控制器執行的碼。因此,在一實施例中,對模組的引用是指被特別地配置以識別及/或執行將保持在非暫態媒體上之碼的硬體。此外,在另一實施例中,模組的使用是指包括碼的非暫態媒體,其特別適於由微控制器執行以執行預定操作。且如可推斷,在另一實施例中,術語模組(在此實例中)可能指 微控制器和非暫態媒體的組合。通常被示為分開的模組邊界通常變化並可能重疊。例如,第一和第二模組可能共享硬體、軟體、韌體、或其組合,同時潛在地保留一些獨立的硬體、軟體、或韌體。在一個實施例中,術語邏輯的使用包括硬體,例如電晶體、暫存器、或其他硬體,例如可編程邏輯裝置。
在一個實施例中使用「配置以」之詞是指佈置、放置在一起、製造、提供銷售、進口及/或設計設備、硬體、邏輯、或元件以執行指定或確定的任務。在此實例中,若其被設計、耦接、及/或互連以執行所指定的任務,則不操作的設備或其元件仍然被「配置以」執行指定的任務。作為純說明性實例,邏輯閘可能在操作期間提供0或1。但「配置以」向時脈提供致能信號的邏輯閘不包括可能提供1或0的每個潛在邏輯閘。反而,邏輯閘是以在操作期間1或0輸出係用以致能時脈的一些方式耦接的邏輯閘。再次注意,術語「配置以」的使用不需要操作,而是集中於設備、硬體、及/或元件的潛在狀態,其中在潛在狀態下,設備、硬體、及/或元件被設計以當設備、硬體、及/或元件正操作時執行特定任務。
再者,在一實施例中,「用以」、「能夠/可能」、及或「可操作以」之詞的使用是指以這樣的方式設計的一些設備、邏輯、硬體、及/或元件能夠以指定方式使用設備、邏輯、硬體、及/或元件。如上注意,在一實施例中,使用用以、能夠、或可操作以係指設備、邏輯、 硬體、及/或元件的潛在狀態,其中設備、邏輯、硬體、及/或元件不操作,而是以能夠以指定方式使用設備的這樣方式來設計。
如本文所使用的值包括數字、狀態、邏輯狀態、或二進制邏輯狀態的任何已知表示。通常,邏輯準位、邏輯值、或邏輯值的使用也被稱為1和0,其簡單地表示二進制邏輯狀態。例如,1表示高邏輯準位且0表示低邏輯準位。在一實施例中,如電晶體或快閃胞元的儲存胞元可能能夠保持單一邏輯值或多個邏輯值。然而,已經使用在電腦系統中之值的其他表示。例如,十進制數十也可能表示為二進制值910和十六進制字母A。因此,值包括能夠保存在電腦系統中之資訊的任何表示。
此外,狀態可能由值或值的部分表示。作為實例,如邏輯1的第一值可能表示預設或初始狀態,而如邏輯零的第二值可能表示非預設狀態。另外,在一實施例中,術語重置和設置分別指預設值和更新值或狀態。例如,預設值可能包括高邏輯值,即重置,而更新值可能包括低邏輯值,即設置。注意,值的任何組合可能用以表示任何數量的狀態。
可能經由儲存在可被處理元件執行的機器可存取、機器可讀、電腦可存取、或電腦可讀媒體上的指令或碼來實作上述之方法、硬體、軟體、韌體或碼的實施例。非暫態機器可存取/可讀媒體包括以機器(如電腦或電子系統)可讀的形式提供(即存儲和/或傳輸)資訊的 任何機制。例如,非暫態機器可存取媒體包括如靜態RAM(SRAM)或動態RAM(DRAM)的隨機存取記憶體(RAM);ROM;磁或光儲存媒體;快閃記憶體裝置;電儲存裝置;光儲存裝置;聲學儲存裝置;用於保持從暫時(傳播)信號(例如,載波、紅外線信號、數位信號)接收之資訊之其它形式的儲存裝置;等等,其將與可能從其接收資訊的非暫態媒體區分。
用以編程邏輯以執行本揭露之實施例的指令可能儲存在系統中的記憶體內,諸如DRAM、快取、快閃記憶體、或其他儲存器。此外,指令可能經由網路或藉由其他電腦可讀媒體來分布。因此,機器可讀媒體可能包括用於以可被機器(例如,電腦)讀取的形式儲存或傳輸資訊的任何機制,但不限於軟碟、光碟片、唯讀光碟機、和磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可編程唯讀記憶體(EPROM)、電可抹除可編程唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體、或在經由電、光、聲、或其它形式之傳播信號(如,載波、紅外線信號、數位信號、等等)之網際網路上傳輸資訊中使用的有形機器可讀儲存器。藉此,電腦可讀媒體包括適用於以由機器(例如,電腦)可讀的形式儲存或傳送電子指令或資訊之任何類型的有形機器可讀媒體。
遍及本說明書提到「一個實施例」或「一實施例」表示關於實施例所述之特定特徵、結構、或特性被 包括在本揭露之至少一實施例中。因此,在遍及本說明書之各種地方中之「在一個實施例中」或「在一實施例中」之詞的出現不一定全部指相同實施例。又,在一個或多個實施例中,特定特徵、結構、或特性可能以任何適當的方式組合。
在前述說明書中,已經參考具體示範實施例給定詳細描述。然而,將顯而易見的是,在不脫離如所附申請專利範圍中闡述之本揭露的更廣泛精神和範圍的情況下,可能對其進行各種修改和改變。因此,說明書和附圖被認為是說明性的而不是限制性的。此外,實施例和其他示範語言的上述使用不一定指相同的實施例或相同的實例,而是可以指不同和差異的實施例,以及潛在地相同的實施例。

Claims (30)

  1. 一種系統晶片(SoC),包含:記憶體控制器,用以控制對記憶體的存取;記憶體加密引擎,用以使用密鑰以加密寫入至與訪客虛擬機相關的加密部分的資料及解密由該加密部份讀出的資料,該加密部分係在該記憶體中;及處理器核心,耦接至該記憶體控制器,該處理器核心用以:存取與該訪客虛擬機相關的該加密部分有關的控制結構,該控制結構用以包含與該訪客虛擬機相關的該加密部分的狀態資訊,及用於與該訪客虛擬機相關的該加密部分的該密鑰;產生用於與該訪客虛擬機相關的該加密部分的複數可遷移密鑰,以當其被遷移至第二平台時,保護與該訪客虛擬機相關的該加密部分;及促成與該訪客虛擬機相關的該加密部分的安全策略資訊、該複數可遷移密鑰及認證資訊遷移至該第二平台,該認證資訊用以保護來自該控制結構的至少部分內容。
  2. 如申請專利範圍第1項所述之SoC,其中該處理器核心係用以將所述可遷移密鑰儲存於該控制結構中。
  3. 如申請專利範圍第1項所述之SoC,其中該處理器核心係用以促成與該訪客虛擬機相關的該加密部分相關的版本資訊遷移至該第二平台。
  4. 如申請專利範圍第1項所述之SoC,更包含數位 隨機數產生器,用以產生用於密鑰產生的隨機數。
  5. 如申請專利範圍第1項所述之SoC,其中該訪客虛擬機能具有該加密部分與未加密部分。
  6. 如申請專利範圍第1項所述之SoC,其中該SoC係用以將用於該訪客虛擬機的該加密部分的該密鑰儲存入該記憶體加密引擎。
  7. 一種系統晶片(SoC),包含:記憶體控制器,用以控制對記憶體的存取;記憶體加密引擎,用以使用密鑰以加密寫入至與訪客虛擬機相關的加密部分的資料及解密由該加密部分讀出的資料,該加密部分係在該記憶體中;及處理器核心,耦接至該記憶體控制器,該處理器核心包含:存取與該訪客虛擬機相關的該加密部分相關的控制結構的手段,該控制結構用以包含與該訪客虛擬機相關的該加密部分的狀態資訊,及用於與該訪客虛擬機相關的該加密部分的該密鑰;產生用於與該訪客虛擬機相關的該加密部分的複數可遷移密鑰的手段,以當其被遷移至第二平台時,保護與該訪客虛擬機相關的該加密部分;及促成與該訪客虛擬機相關的該加密部分的安全策略資訊、該複數可遷移密鑰及認證資訊遷移至該第二平台的手段,該認證資訊用以保護來自該控制結構的至少部分內容。
  8. 如申請專利範圍第7項所述之SoC,其中該處理器核心係用以將所述可遷移密鑰儲存於該控制結構中。
  9. 如申請專利範圍第7項所述之SoC,其中該促成遷移的手段係用以促成與該訪客虛擬機相關的該加密部分相關的版本資訊的遷移至該第二平台。
  10. 如申請專利範圍第7項所述之SoC,更包含用以產生用於密鑰產生的隨機數的手段。
  11. 如申請專利範圍第7項所述之SoC,其中該訪客虛擬機能具有該加密部分與未加密部分。
  12. 如申請專利範圍第7項所述之SoC,其中該SoC用以將用於與該訪客虛擬機相關的該加密部分的該密鑰儲存入該記憶體加密引擎。
  13. 一種系統晶片(SoC),包含:記憶體控制器,用以控制對記憶體的存取;記憶體加密引擎,用以使用密鑰以加密寫入至與訪客虛擬機相關的加密部分的資料及解密由該加密部分讀出的資料,該加密部分係在該記憶體中;處理器核心,耦接至該記憶體控制器;及電腦可讀非暫態儲存媒體,包含可執行指令,當所述指令為該SoC所執行時,使得該SoC用以:存取與該訪客虛擬機相關的該加密部分相關的控制結構,該控制結構用以包含與該訪客虛擬機相關的該加密部分的狀態資訊,及用於與該訪客虛擬機相關的該加密部分的該密鑰; 產生用於與該訪客虛擬機相關的該加密部分的複數可遷移密鑰,以當其被遷移至第二平台時,保護與該訪客虛擬機相關的該加密部分;及促成與該訪客虛擬機相關的該加密部分的安全策略資訊、該複數可遷移密鑰及認證資訊遷移至該第二平台,該認證資訊用以保護來自該控制結構的至少部分內容。
  14. 如申請專利範圍第13項所述之SoC,其中該電腦可讀非暫態儲存媒體更包含可執行指令,當其為該SoC所執行時,使得該SoC用以將所述可遷移密鑰儲存於該控制結構中。
  15. 如申請專利範圍第13項所述之SoC,其中該電腦可讀非暫態儲存媒體更包含可執行指令,當其為該SoC所執行時,使得該SoC用以促成與該訪客虛擬機相關的該加密部分相關的版本資訊遷移至該第二平台。
  16. 如申請專利範圍第13項所述之SoC,更包含數位隨機數產生器,用以產生用於密鑰產生的隨機數。
  17. 如申請專利範圍第13項所述之SoC,其中該訪客虛擬機係能具有該加密部分與未加密部分。
  18. 如申請專利範圍第13項所述之SoC,其中該電腦可讀非暫態儲存媒體更包含可執行指令,當其為該SoC所執行時,使得該SoC用以將用於該訪客虛擬機的該加密部分的該密鑰儲存入該記憶體加密引擎。
  19. 一種在虛擬機的平台遷移期間執行的方法,包含: 控制對記憶體的存取;以密鑰來加密寫入至與訪客虛擬機相關的加密部分的資料及解密由該加密部分讀出的資料,該加密部分係在該記憶體中;存取與該訪客虛擬機相關的該加密部分相關的控制結構,該控制結構用以包含與該訪客虛擬機相關的該加密部分的狀態資訊,及用於與該訪客虛擬機相關的該加密部分的該密鑰;產生用於與該訪客虛擬機相關的該加密部分的複數可遷移密鑰,以當其被遷移至第二平台時,保護與該訪客虛擬機相關的該加密部分;及促成與該訪客虛擬機相關的該加密部分的安全策略資訊、該複數可遷移密鑰及認證資訊遷移至該第二平台,該認證資訊用以保護來自該控制結構的至少部分內容。
  20. 如申請專利範圍第19項所述之方法,更包含將所述可遷移密鑰儲存於該控制結構中。
  21. 如申請專利範圍第19項所述之方法,更包含促成與該訪客虛擬機相關的該加密部分相關的版本資訊的遷移至該第二平台。
  22. 如申請專利範圍第19項所述之方法,更包含產生用於密鑰產生的隨機數。
  23. 如申請專利範圍第19項所述之方法,其中該訪客虛擬機具有該加密部分與未加密部分。
  24. 如申請專利範圍第19項所述之方法,更包含將 用於與該訪客虛擬機相關的該加密部分的該密鑰儲存入用於所述加密該資料的記憶體加密引擎中。
  25. 一種用以執行虛擬機的平台遷移的系統,包含:第一平台,包含:記憶體控制器,用以控制對記憶體的存取;記憶體加密引擎,用以使用密鑰加密寫入至訪客虛擬機的加密部分的資料及解密由該加密部分讀出的資料,該加密部分係在該記憶體中;及處理器核心,耦接至該記憶體控制器,該處理器核心用以:存取與該訪客虛擬機相關的該加密部分相關的控制結構,該控制結構用以包含與該訪客虛擬機相關的該加密部分的狀態資訊,及用於與該訪客虛擬機相關的該加密部分的該密鑰;產生用於與該訪客虛擬機相關的該加密部分的複數可遷移密鑰,以當其被遷移至第二平台時,保護與該訪客虛擬機相關的該加密部分;及促成與該訪客虛擬機相關的該加密部分的安全策略資訊、該複數可遷移密鑰及認證資訊遷移至該第二平台,該認證資訊用以保護來自該控制結構的至少部分內容;及該第二平台包含:網路介面裝置,用以接收該安全策略資訊、該複數可遷移密鑰及該認證資訊;及處理裝置,用以: 使用該複數可遷移密鑰,解密已經由該第一平台遷移至該第二平台的與該訪客虛擬機相關的該加密部分的資料;及在該第二平台上恢復該訪客虛擬機。
  26. 如申請專利範圍第25項之系統,其中該處理器核心係用以將所述可遷移密鑰儲存於該控制結構中。
  27. 如申請專利範圍第25項之系統,其中該處理器核心用以促成與該訪客虛擬機相關的該加密部分相關的版本資訊的遷移至該第二平台。
  28. 如申請專利範圍第25項之系統,其中該第一平台更包含數位隨機數產生器,用以產生用於密鑰產生的隨機數。
  29. 如申請專利範圍第25項之系統,其中該第一平台的該訪客虛擬機係能具有該加密部分與未加密部分。
  30. 如申請專利範圍第25項之系統,其中該第一平台係用以將用於該訪客虛擬機的該加密部分的該密鑰儲存入該記憶體加密引擎。
TW108121535A 2015-08-18 2016-07-12 安全區之平台遷移 TWI697804B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/829,340 2015-08-18
US14/829,340 US9942035B2 (en) 2015-08-18 2015-08-18 Platform migration of secure enclaves

Publications (2)

Publication Number Publication Date
TW201937395A true TW201937395A (zh) 2019-09-16
TWI697804B TWI697804B (zh) 2020-07-01

Family

ID=58051169

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105121917A TWI690822B (zh) 2015-08-18 2016-07-12 安全區之平台遷移
TW108121535A TWI697804B (zh) 2015-08-18 2016-07-12 安全區之平台遷移

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW105121917A TWI690822B (zh) 2015-08-18 2016-07-12 安全區之平台遷移

Country Status (3)

Country Link
US (1) US9942035B2 (zh)
TW (2) TWI690822B (zh)
WO (1) WO2017030822A1 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10102151B2 (en) * 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
US10536274B2 (en) * 2016-03-31 2020-01-14 Intel Corporation Cryptographic protection for trusted operating systems
US10152350B2 (en) * 2016-07-01 2018-12-11 Intel Corporation Secure domain manager
US10261919B2 (en) * 2016-07-08 2019-04-16 Hewlett Packard Enterprise Development Lp Selective memory encryption
US10311217B2 (en) * 2016-12-09 2019-06-04 Microsoft Technology Licensing, Llc Application piracy prevention with secure enclave protection of automatically modularized functions
US10866824B2 (en) * 2017-01-13 2020-12-15 Citrix Systems, Inc. Continuous uptime of guest virtual machines during upgrade of a virtualization host device
US10867029B2 (en) * 2017-01-24 2020-12-15 Microsoft Technology Licensing, Llc Enclave client abstraction model
CN108469986B (zh) * 2017-02-23 2021-04-09 华为技术有限公司 一种数据迁移方法及装置
US11113400B1 (en) * 2017-12-26 2021-09-07 Virtuozzo International Gmbh System and method for providing distributed compute platform on untrusted hardware
US11755753B2 (en) 2018-06-13 2023-09-12 Kyndryl, Inc. Mechanism to enable secure memory sharing between enclaves and I/O adapters
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
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11347869B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11455398B2 (en) * 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
GB2579682B (en) * 2019-03-25 2021-03-24 Trustonic Ltd Trusted execution environment migration method
SG11201908930YA (en) 2019-03-29 2019-10-30 Alibaba Group Holding Ltd Managing cryptographic keys based on identity information
AU2019204724C1 (en) * 2019-03-29 2021-12-09 Advanced New Technologies Co., Ltd. Cryptography chip with identity verification
SG11201908931TA (en) 2019-03-29 2019-10-30 Alibaba Group Holding Ltd Cryptographic key management based on identity information
WO2019120323A2 (en) 2019-03-29 2019-06-27 Alibaba Group Holding Limited Securely performing cryptographic operations
US20220269797A1 (en) * 2021-02-25 2022-08-25 Dell Products, Lp System and method for secure movement of trusted memory regions across numa nodes

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7293040B2 (en) 2005-02-11 2007-11-06 Sybase, Inc. System and methodology for database migration between platforms
US8015408B2 (en) * 2006-09-14 2011-09-06 Interdigital Technology Corporation Trust evaluation for a mobile software agent on a trusted computing platform
US9087200B2 (en) 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
DE102010011652A1 (de) 2010-03-17 2011-09-22 Siemens Aktiengesellschaft Applikationsplattform und Verfahren zum Betrieb einer Datenverarbeitungseinrichtung mit einer solchen
US8972746B2 (en) 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
CN102831030A (zh) * 2011-06-16 2012-12-19 鸿富锦精密工业(深圳)有限公司 数据备份与恢复系统及方法
CN104012030B (zh) * 2011-12-21 2018-04-13 英特尔公司 用于保护对称加密密钥的系统及方法
US9372988B2 (en) * 2011-12-22 2016-06-21 Intel Corporation User controllable platform-level trigger to set policy for protecting platform from malware
EP2850552B1 (en) 2012-05-16 2019-05-08 Okta, Inc. Systems and methods for providing and managing distributed enclaves

Also Published As

Publication number Publication date
US9942035B2 (en) 2018-04-10
TW201729136A (zh) 2017-08-16
US20170054557A1 (en) 2017-02-23
TWI690822B (zh) 2020-04-11
WO2017030822A1 (en) 2017-02-23
TWI697804B (zh) 2020-07-01

Similar Documents

Publication Publication Date Title
TWI690822B (zh) 安全區之平台遷移
TWI751731B (zh) 用以支援保護容器的即時遷移之處理器、方法、系統和指令
US11023622B2 (en) Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory
KR102269010B1 (ko) 보호 영역에서의 메모리 초기화
JP6702590B2 (ja) セキュアエンクレーブのプロセスを分岐してセキュアエンクレーブページキャッシュに子エンクレーブを確立する命令及びロジック
TWI567558B (zh) 用於虛擬機器的安全分享互連的處理系統、晶片上系統及方法
US9448950B2 (en) Using authenticated manifests to enable external certification of multi-processor platforms
US10572395B2 (en) Non-enclave access prevention
US9852301B2 (en) Creating secure channels between a protected execution environment and fixed-function endpoints
US10534724B2 (en) Instructions and logic to suspend/resume migration of enclaves in a secure enclave page cache
US11531772B2 (en) Support for increased number of concurrent keys within multi-key cryptographic engine
CN111353164A (zh) 用于信任域创建和摧毁的方法和装置
US10255199B1 (en) Evicting clean secure pages without encryption
TW202137011A (zh) 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體
US10263988B2 (en) Protected container key management processors, methods, systems, and instructions
EP3547200B1 (en) Supporting memory paging in virtualized systems using trust domains
EP3671522B1 (en) Secure encryption key management in trust domains
US10324862B2 (en) Supporting oversubscription of guest enclave memory pages