TWI751731B - 用以支援保護容器的即時遷移之處理器、方法、系統和指令 - Google Patents
用以支援保護容器的即時遷移之處理器、方法、系統和指令 Download PDFInfo
- Publication number
- TWI751731B TWI751731B TW109134811A TW109134811A TWI751731B TW I751731 B TWI751731 B TW I751731B TW 109134811 A TW109134811 A TW 109134811A TW 109134811 A TW109134811 A TW 109134811A TW I751731 B TWI751731 B TW I751731B
- Authority
- TW
- Taiwan
- Prior art keywords
- page
- instruction
- memory
- container
- processor
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
Abstract
一種處理器包括用以解碼指令之解碼單元,該指令係用以指示保護容器記憶體之頁、及該保護容器記憶體外部之儲存位置。回應於該指令,一執行單元係用以確保其沒有對於該保護容器記憶體之該頁的可寫入參考,當其具有寫入保護狀態時。該執行單元係用以加密該保護容器記憶體之該頁的副本。執行單元係用以儲存該頁之該加密副本至該保護容器記憶體外部之儲存位置,在已確保其沒有可寫入參考以後。該執行單元係用以使該保護容器記憶體之該頁處於該寫入保護狀態,其亦為有效且可讀取的,在該加密副本已被儲存至該儲存位置以後。
Description
文中所述之實施例一般係有關於處理器。特別地,文中所述之實施例一般係有關具有其支援指定位址空間或其他保護容器之架構的處理器。
桌上型電腦、膝上型電腦、智慧型手機、伺服器、路由器和其他網路元件、以及各種其他類型的電腦系統常被用於處理秘密或機密資訊。此類秘密或機密資訊之一些代表性範例包括(但不限定於)通行碼、帳戶資訊、金融資訊、金融交易期間之資訊、機密公司資料、企業版權管理資訊、個人日曆、個人聯絡人、醫藥資訊、其他個人資訊,等等。通常希望保護此類秘密或機密資訊不被檢驗、破壞,等等。
100:來源電腦系統
102:正規記憶體
103:特權系統軟體
104:保護容器即時遷移模組
105:保護容器利用領域
106:保護容器記憶體
107:保護容器
108:頁
109:保護容器頁元資料結構(PCPMS)
110:密鑰管理者保護容器
111:其他結構
112:處理器
113:指令集
114:一或更多指令
115:快取
116:保護容器邏輯
117:存取控制邏輯
118:密碼單元
119:邏輯
120:中間網路
121:目的地電腦系統
122:已遷移保護容器
203:虛擬機器監視器(VMM)
204:保護容器即時遷移模組
205-1:第一VM
205-N:第N VM
207:保護容器
210:密鑰管理者保護容器
224-1:第一訪客作業系統(OS)
224-N:第N訪客OS
303:作業系統(OS)
304:保護容器即時遷移模組
305:作業系統容器
307:保護容器
310:密鑰管理者保護容器
325:OS控制服務
606:記憶體
612:處理器
614:指令
616:處理器之其他邏輯
650:保護容器頁寫入保護指令
651:保護容器頁加密並儲存保護容器記憶體外部之加密副本指令
652:保護容器頁寫入未保護和頁副本無效化指令
653:保護容器版本陣列頁產生指令
654:解碼單元
655:執行單元
667:暫存器
668:一或更多操作
706:保護容器記憶體
708:指示的保護容器頁
709:保護容器頁安全性元資料結構(PSPMS)
711:元資料結構
712:處理器
750:保護容器頁寫入保護指令
754:解碼單元
755:執行單元
767:通用暫存器
770:系統記憶體
774:額外指令指明資訊
775:有效位址或其他指示
776:有效位址或其他指示
777:寫入保護指示器
778:元資料
779:能夠遷移的密鑰結構
780:能夠遷移的密鑰
782:元資料儲存單元
783:安全性檢查單元
806:保護容器記憶體
808:寫入保護頁
811:元資料結構
812:處理器
818:加密單元
851:保護容器頁加密及儲存加密副本於保護容器記憶體外部指令
854:解碼單元
855:執行單元
867:暫存器
870:系統記憶體
874:額外指令指明資訊
875:有效位址或其他指示
876:有效位址或其他指示
878:元資料
879:能夠遷移的密鑰結構
880:能夠遷移的密鑰
882:元資料儲存單元
883:安全性檢查單元
884:有效位址或其他指示
885:目的地儲存位置之指示
886:目的地位置
887:加密副本
888:版本頁
889:版本資訊
890:可寫入參考追蹤器單元
891:TLB追蹤邏輯
892:頁版本儲存單元
906:保護容器記憶體
908:寫入保護頁
909:保護容器頁安全性元資料結構(PSPMS)
912:處理器
952:保護容器頁寫入未保護及加密頁副本無效化指令
954:解碼單元
955:執行單元
967:通用暫存器
970:系統記憶體
974:額外指令指明資訊
975:有效位址或其他指示
976:有效位址或其他指示
977:寫入保護指示器
983:安全性檢查單元
988:版本頁
989:版本
993:寫入未保護單元
994:版本改變單元
1000:處理器管線
1002:提取級
1004:長度解碼級
1006:解碼級
1008:配置級
1010:重新命名級
1012:排程級
1014:暫存器讀取/記憶體讀取級
1016:執行級
1018:寫入回/記憶體寫入級
1022:例外處置級
1024:確定級
1030:前端單元
1032:分支預測單元
1034:指令快取單元
1036:指令轉譯後備緩衝(TLB)
1038:指令提取單元
1040:解碼單元
1050:執行引擎單元
1052:重新命名/配置器單元
1054:撤回單元
1056:排程器單元
1058:實體暫存器檔單元
1060:執行叢集
1062:執行單元
1064:記憶體存取單元
1070:記憶體單元
1072:資料TLB單元
1074:資料快取單元
1076:第二階(L2)快取單元
1090:處理器核心
1100:指令解碼器
1102:晶粒上互連網路
1104:第二階(L2)快取
1106:L1快取
1106A:L1資料快取
1108:純量單元
1110:向量單元
1112:純量暫存器
1114:向量暫存器
1120:拌合單元
1122A-B:數字轉換單元
1124:複製單元
1126:寫入遮蔽暫存器
1128:16寬的ALU
1200:處理器
1202A-N:核心
1206:共享快取單元
1208:特殊用途邏輯
1210:系統代理
1212:環狀為基的互連單元
1214:集成記憶體控制器單元
1216:匯流排控制器單元
1300:系統
1310,1315:處理器
1320:控制器集線器
1340:記憶體
1345:共處理器
1350:輸入/輸出集線器(IOH)
1360:輸入/輸出(I/O)裝置
1390:圖形記憶體控制器集線器(GMCH)
1395:連接
1400:多處理器系統
1414:I/O裝置
1415:額外處理器
1416:第一匯流排
1418:匯流排橋
1420:第二匯流排
1422:鍵盤及/或滑鼠
1424:音頻I/O
1427:通訊裝置
1428:儲存單元
1430:指令/碼及資料
1432:記憶體
1434:記憶體
1438:共處理器
1439:高性能介面
1450:點對點互連
1452,1454:P-P介面
1470:第一處理器
1472,1482:集成記憶體控制器(IMC)單元
1476,1478:點對點(P-P)介面
1480:第二處理器
1486,1488:P-P介面
1490:晶片組
1494,1498:點對點介面電路
1496:介面
1500:系統
1514:I/O裝置
1515:舊有I/O裝置
1600:SoC
1602:互連單元
1610:應用程式處理器
1620:共處理器
1630:靜態隨機存取記憶體(SRAM)單元
1632:直接記憶體存取(DMA)單元
1640:顯示單元
1702:高階語言
1704:x86編譯器
1706:x86二元碼
1708:指令集編譯器
1710:指令集二元碼
1712:指令轉換器
1714:沒有至少一x86指令集核心之處理器
1716:具有至少一x86指令集核心之處理器
本發明可藉由參考其被用以闡明實施例之以下描述及後附圖形而被最佳地瞭解。於圖形中:
圖1為一種計算環境之方塊圖,其中保護容器可從來源電腦系統被遷移至目的地電腦系統。
圖2為軟體環境之第一範例實施例的方塊圖,其中即時遷移可被履行於虛擬機器之保護容器上。
圖3為軟體環境之第二範例實施例的方塊圖,其中遷移可被履行於作業系統容器之保護容器上。
圖4為一種保護容器從來源電腦系統至目的地電腦系統之遷移的方法之實施例的方塊流程圖。
圖5為一種保護容器記憶體之寫入保護頁的方法之實施例的方塊流程圖,該方法並將寫入保護頁之加密副本儲存於該保護容器記憶體之外部,而同時保持該些寫入保護頁為有效且可讀於保護容器記憶體中。
圖6為一種可操作以履行用以支援保護容器之即時遷移的一組一或更多指令之實施例的處理器之實施例的方塊圖。
圖7為一種可操作以履行保護容器頁寫入保護指令之實施例的處理器之實施例的方塊圖。
圖8為一種可操作以履行保護容器頁加密及儲存加密副本於保護容器記憶體外部指令之實施例的處理器之實施例的方塊圖。
圖9為一種可操作以履行保護容器頁寫入未保護及加密頁副本無效化指令之實施例的處理器之實施例的方塊
圖。
圖10A為闡明依序管線之一實施例及暫存器重新命名失序發送/執行管線之一實施例的方塊圖。
圖10B為處理器核心之實施例的方塊圖,該處理器核心包括一耦合至執行引擎單位之前端單元且兩者均耦合至記憶體單元。
圖11A為單處理器核心之實施例的方塊圖,連同與晶粒上互連網路之其連接、以及第二階(L2)快取之其本地子集。
圖11B為圖11A之處理器核心的部分之展開視圖的實施例之方塊圖。
圖12為一種處理器之實施例的方塊圖,該處理器可具有多於一個核心、可具有集成記憶體控制器、且可具有集成圖形。
圖13為一種電腦架構之第一實施例的方塊圖。
圖14為一種電腦架構之第二實施例的方塊圖。
圖15為一種電腦架構之第三實施例的方塊圖。
圖16為一種電腦架構之第四實施例的方塊圖。
圖17為一種軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據本發明之實施例。
文中所揭露者為履行可用於保護容器之即時遷移期間
的操作之指令,用以執行該些指令之處理器,當處理或執行該些指令時由該些處理器所履行的方法,及結合一或更多用以處理或執行該些指令之處理器的系統。雖然該些指令主要係配合保護容器之即時遷移來描述,但應理解其該些指令不限於此類使用而是具有一般利用性並可選擇性地被用於完全無關於保護容器之即時遷移的其他使用。於以下描述中,提出了多樣特定的細節(例如,特定指令操作、資料結構及其內容、處理器組態、微架構細節、操作之序列,等等)。然而,實施例可被實行而無這些特定的細節。於其他例子中,眾所周知的電路、結構及技術未被詳細地顯示以免妨礙對本說明書之瞭解。
圖1為一種計算環境之方塊圖,其中保護容器107可從來源電腦系統100被遷移至目的地電腦系統121。來源和目的地電腦系統可代表桌上型電腦系統、膝上型電腦系統、智慧型手機、伺服器、網路元件、或其他類型的電腦系統。如圖所示,來源和目的地電腦系統可彼此耦合或者通訊,藉由一或更多中間網路120。於一形態中,來源和目的地電腦系統可透過網際網路(例如,「雲」)來耦合。替代地,來源和目的地電腦系統可藉由一或更多局部有線或無線鏈結而被更直接地耦合。
來源電腦系統包括至少一處理器112、正規記憶體102、及保護容器記憶體106。正規記憶體和保護容器可代表系統記憶體之不同部分,該系統記憶體可包括一或更多類型的實體記憶體(例如,動態隨機存取記憶體
(DRAM)、快閃記憶體,等等)。正規和保護容器記憶體可具有部分地由處理器之邏輯所執行的不同等級的保護或安全性。正規記憶體可代表一般用於儲存應用程式、資料等等之類型的系統記憶體之一部分。如圖所示,正規記憶體可儲存特權系統軟體103(例如,虛擬機器監視器、一或更多作業系統,等等)。正規記憶體亦可儲存一或更多使用者等級的應用程式(例如,網路管理應用程式、資料庫應用程式、電子郵件應用程式、試算表應用程式,等等)。於一形態中,來源電腦系統可代表一種所謂的「開放式」系統,其通常不會顯著地限制有關系統軟體以及使用者等級的應用程式(其可被載入至系統上)之使用者選擇。
保護容器記憶體106可具有較正規記憶體102更高等級的保護及/或安全性。更高等級的保護及/或安全性可至少部分地由處理器之硬體及/或其他晶粒上邏輯來執行、控制、或者提供。於某些實施例中,保護容器記憶體可代表處理器保留記憶體(其被保留專門由該處理器所使用)之一部分,而正規記憶體可不是處理器保留記憶體之部分。舉例而言,處理器可具有一或更多範圍暫存器,其係相應於保護容器記憶體。範圍暫存器可被用以儲存與保護容器記憶體之範圍相關的資料,並可在嘗試存取保護容器記憶體時被諮詢,而成為提供保護及/或安全性之部分。於一形態中,資料或範圍可於開機期間由基礎輸入/輸出系統(BIOS)儲存於範圍暫存器中。
保護容器107(例如,保護容器之一或更多頁108)可被儲存於保護容器記憶體106中。處理器可具有指令集113,其包括用以與保護容器互動(例如,產生、破壞、進入、離開、管理分頁入、履行其上之安全性操作)的指令。部分該些指令可為特權等級指令,其可由特權等級軟體(例如,軟體103)來履行但不可由非特權或使用者等級軟體來履行。其他指令可為非特權或使用者等級指令。當作一範例,保護容器可被產生給保護容器利用領域105,諸如(例如)虛擬機器模組、應用程式模組,等等。例如,特權系統軟體可產生保護容器。保護容器針對特權等級軟體可通常為不透明的(例如,特權等級軟體無法得以看見保護容器內之碼及/或資料,而可以被特權等級軟體所管理(例如,透過指令集之特權等級指令))。
保護容器利用領域可將秘密或機密資料儲存於保護容器中。保護容器可協助提供機密性以及(於某些情況下)選擇性地一或更多其他保護(例如,完整性保護、重播保護,等等)給保護容器中之秘密或機密資訊。機密性通常涉及防止資料揭露。完整性通常涉及確保沒有資料破壞。處理器之至少某硬體邏輯可協助提供此類機密性及/或其他保護。於各個實施例中,保護容器可代表安全指定位址空間、硬體執行容器、硬體管理執行環境、硬體管理隔離執行區、將由應用程式所使用之安全及/或私人記憶體區、或其他保護容器。於某些實施例中,保護容器可代表Intel® Software Guard Extensions(Intel® SGX)指定位
址空間,雖然本發明之範圍不限於此。於某些實施例中,保護容器記憶體可代表Intel® SGX指定位址空間頁快取(EPC),其可操作以儲存一或更多運行或執行安全指定位址空間之頁,雖然本發明之範圍未如此限制。
於某些實施例中,保護容器頁元資料結構(PCPMS)109可被用以儲存保護容器107之元資料(例如,安全性元資料、存取控制元資料,等等)。如圖所示,於某些實施例中,PCPMS可選擇性地被儲存於保護容器記憶體中,雖然此並非必要。於某些實施例中,PCPMS可儲存保護容器記憶體中所儲存之各頁的此元資料。於一形態中,PCPMS可被構成具有針對不同相應頁的不同項目於保護容器記憶體中,雖然構成PCPMS之其他方式亦為可能的(例如,其他類型的表、資料結構,等等)。各項目可儲存相應頁之元資料。用於保護容器頁之適當類型元資料的範例包括(但不限定於):用以指示該頁是否有效或無效之資訊、用以指示該保護容器頁所屬之保護容器的資訊、用以指示虛擬位址之資訊,該保護容器頁係透過該虛擬位址而容許被存取、用以指示該保護容器頁之讀取/寫入/執行許可的資訊,等等,以及其各種組合,根據特定實施方式。替代地,較少的元資料、額外的元資料、或元資料之其他組合可選擇性地被儲存於不同的實施例中。本發明之範圍不限於其將被儲存於PCPMS中之任何已知類型的元資料。適當PCPMS之一範例(針對某些實施例)為Intel® SGX指定位址空間頁快取映圖(EPCM),雖然
本發明之範圍未如此限制。
如圖1所示,保護容器(例如,其頁)可選擇性地被儲存於保護容器記憶體中。同樣地,PCPMS可選擇性地被儲存於保護容器記憶體中。此外,或者替代地,保護容器(例如,其頁)及/或PCPMS可選擇性地被儲存於處理器之晶粒上保護容器儲存中。例如,處理器可具有一或更多快取115,用以儲存保護容器頁及/或PCPMS。舉例而言,一或更多專屬快取可被使用,一或更多快取之專屬部分可被使用,或者其組合。當作另一選項,處理器可具有用以儲存此類頁或結構之除了快取外之其他類型的專屬儲存。晶粒外記憶體及晶粒上快取兩者之組合或者其他儲存亦為適當的。
再次參考圖1,處理器亦可具有保護容器邏輯116。保護容器邏輯可包括硬體、韌體、或其組合,用以履行指令及/或支援保護容器(例如,控制對於保護容器之存取)。保護容器邏輯包括存取控制邏輯117。存取控制邏輯可操作以執行、控制、或者提供針對保護容器記憶體之存取控制以及保護容器記憶體之資料,當其駐存於處理器之晶粒上時(例如,於快取、暫存器、其他結構,等等中)。不同類型的存取控制邏輯117在不同實施例中為適當的,根據特定實施方式。
於某些實施例中,存取控制邏輯可包括記憶體管理單元(MMU)及/或頁遺失處置器(PMH)單元,其可操作以控制對於保護容器及/或保護容器記憶體之存取,部分
地藉由諮詢頁表格、範圍暫存器、PCPMS 109等等、或者其組合,根據特定實施方式。於某些實施例中,存取控制邏輯可包括邏輯,其係操作以控制對於保護容器之碼及/或資料的存取,當該碼及/或資料駐存在處理器內時。例如,該邏輯可操作以控制對於該碼及/或資料之存取,當其被儲存或者駐存(以未加密形式)在處理器內之快取、暫存器、及其他結構或組件中,於當用於計算之運作時間期間。於一形態中,邏輯可操作以容許對於保護容器之碼及/或資料(無論其被儲存於保護容器記憶體中或者駐存在處理器之晶粒上)的授權存取,從相同保護容器之碼;但是可防止對於保護容器之碼及/或資料(無論其被儲存於保護容器記憶體中或者駐存在處理器之晶粒上)的未授權存取,藉由保護容器外部之碼。
保護容器邏輯亦可包括密碼單元118。密碼單元可操作以履行加密及解密。於某些實施例中,密碼單元可自動地加密保護容器之碼及/或資料,在該碼及/或資料被儲存出處理器(例如,至系統記憶體)前,諸如(例如)於寫入至系統記憶體期間、於保持保護容器碼及/或資料之快取線的逐出期間,等等。此可協助防止碼及/或資料被看見(例如,協助提供資料之機密性)。密碼單元亦可操作以將指定位址空間頁之已加密的碼及/或資料解密,當其被接收入處理器(例如,自系統記憶體)時。
於某些實施例中,密碼單元亦可選擇性地操作以密碼地提供完整性保護及/或鑑別至保護容器之碼及/或資料。
例如,於某些實施例中,密碼單元可自動地計算訊息鑑別碼、或者其他鑑別或完整性檢查資料,針對保護容器之碼及/或資料,在該碼及/或資料被儲存出處理器(例如,至系統記憶體)前。密碼單元亦可選擇性地操作以使用此鑑別或完整性檢查資料來鑑別或確保保護容器頁之碼及/或資料的完整性,當其被接收入處理器(例如,自系統記憶體)時。此可協助容許資料之鑑別或完整性檢查以協助檢測資料之任何破壞或改變。該邏輯可操作以檢測保護容器頁之完整性違反並防止於檢測時存取至被破壞的碼/資料。
於一形態中,此密碼操作可由密碼單元所自動地且自律地履行,且對軟體透明的(例如,相較於軟體必須履行軟體密碼演算法之多重指令)。於某些實施例中,密碼單元可選擇性地履行此等密碼操作於保護容器之碼及/或資料,但通常非於其不屬於保護容器的一般頁之碼及/或資料。
於某些實施例中,保護容器邏輯116可選擇性地包括邏輯,用以產生並使用與保護容器之碼及/或資料相關的版本資訊。例如,保護容器之頁可選擇性地為指定版本資訊(例如,獨特版本值、版本計數,等等),當其被儲存出處理器(例如,至系統記憶體)。保護容器邏輯可選擇性地包括邏輯,用以當重新載入保護容器之碼及/或資料(例如,頁)時觀看此版本資訊。於某些實施例中,保護容器邏輯可僅容許藉由根據應載入之版本資訊而為合法或
有效所指示的保護容器頁(例如,僅最後逐出的版本)。此可協助防止保護容器碼及/或資料之重播。
為了進一步闡明某些觀念,某些類型的保護或安全性已被描述於上。然而,應理解:保護或安全性之類型和等級可隨著實施方式而改變,根據特定實施方式、環境、安全性需求、成本相對於安全性權衡,等等。文中所述之實施例可配合不同等級的安全性或保護之保護容器來使用。本發明之範圍不限於任何已知類型或等級的保護或安全性。
再次參考圖1,於某些實施例中,來源電腦系統110之特權系統軟體103可包括保護容器即時遷移模組104,其係操作以控制或管理從來源電腦系統至目的地電腦系統121之保護容器107的即時遷移。術語「即時」指的是該遷移可被部分地履行在保護容器正運行於來源電腦系統上時。如進一步所示,於某些實施例中,處理器包括一或更多指令114,用以支援保護容器(例如,保護容器107)之即時遷移。如上所述,這些指令不限於僅被用於保護容器之即時遷移,而亦可選擇性地被用於各種其他目的,依據編程者之創造性天才。於某些實施例中,一或更多指令可為特權等級指令,其可僅被執行在一或更多特權等級的執行,而不在使用者等級或非特權等級的執行。該些一或更多特權等級的執行係高於其由使用者等級應用程式(文字處理應用程式、電子郵件應用程式、試算表,等等)所使用之使用者等級的執行特權。於某些實施例中,保護容
器即時遷移模組104可使用一或更多指令114。此外,於某些實施例中,處理器包括邏輯119,其係操作以履行用以支援保護容器之即時遷移的一或更多指令114。有利地,指令及用以履行該些指令的邏輯可協助增加履行保護容器之即時遷移的效率,雖然該些指令可替代地選擇性地被用於其他目的。
於某些實施例中,來源電腦系統可包括密鑰管理者保護容器110,其可操作以管理一或更多能夠遷移的或可遷移的密鑰(例如,密鑰階層),其可相應於保護容器107。如圖所示,密鑰管理者保護容器亦可選擇性地被儲存於保護容器記憶體中。密鑰管理者保護容器可代表信任實體,用以控制或管理密鑰並容許其被虛擬化且從來源電腦系統被遷移至目的地電腦系統,配合該保護容器從來源電腦系統被遷移至目的地電腦系統。於某些實施例中,密鑰管理者保護容器可代表架構保護容器。密鑰管理者保護容器之一適當範例(於Intel® SGX實施方式實施例中)為遷移引擎(MigE),雖然本發明之範圍未如此限制。於其他實施例中,能夠遷移的密鑰可選擇性地被不同地實施,諸如(例如)被儲存於保護容器中之特殊類型的頁中、被不同類型的信任實體所控制或管理,等等。
根據特定實施方式,一或更多其他結構111亦可選擇性地配合保護容器來使用。例如,於某些實施例中,可有一種用以保持該些一或更多能夠遷移的或可遷移的密鑰(例如,密鑰階層)之結構。例如,於Intel® SGX實施
方式實施例中,可有一種SGX領域控制結構(SDCS),用以儲存可遷移平台SGX密鑰、計數器、及領域狀態。當作另一範例,於某些實施例中,一或更多版本頁可選擇性地被包括以儲存用於保護容器頁之版本資訊。例如,於Intel® SGX實施方式實施例中,可有一或更多版本陣列頁,其係操作以將頁之版本陣列儲存於保護容器記憶體中。例如,可有VA頁(針對儲存自EPC且在EPC中無效化的頁)及VAX頁之實施例(針對儲存自EPC且依據實施例而被留存以寫入保護的、有效的、及可讀取的狀態於EPC中的頁),如以下將被進一步解釋者。如又另一範例,Intel® SGX實施方式實施例,可有分頁密碼元資料(PCMD)結構,其係操作以儲存與分頁出頁相關的密碼元資料、頁元資料結構(PGMD),其係操作以儲存關於該頁之元資料。應理解:與保護容器相關的資料及/或元資料可選擇性地被分割或組合以許多不同的方式於不同的實施方式中;且本發明之範圍不限於分割或組合資料及/或元資料之任何已知的此類方式。
在遷移完成後,目的地電腦系統可具有已遷移保護容器122。目的地電腦系統之簡化版本被顯示,雖然應理解:目的地電腦系統可選擇性地類似於或相同於來源電腦系統。通常,為了各種原因可能希望即時遷移保護容器,且本發明之範圍不限於任何已知的原因。於一形態中,保護容器可配合負載平衡而被遷移。例如,運行於資料中心(或雲端計算環境)之來源伺服器上的虛擬機器或其他保
護容器利用領域可能正在使用該保護容器,而該領域以及該保護容器可從來源伺服器被遷移至目的地伺服器以平衡來源及目的地伺服器上之工作負擔。於其他實施例中,保護容器可為了其他原因而被遷移,諸如(例如)為了從來源電腦系統(其將被服務、維修、或升級)重新配置工作負擔、為了從運行中的桌上型電腦重新配置工作負擔至可攜式電腦,等等。
圖2為軟體環境之第一範例實施例的方塊圖,其中即時遷移可被履行於虛擬機器(VM)205-N之保護容器207上。電腦系統包括虛擬機器監視器(VMM)203、及第一VM 205-1至第N VM 205-N。VMM可代表主機程式(經常為韌體),其係操作以提供虛擬化管理或控制以容許電腦系統支援VM。代表性地,VMM可管理一或更多處理器、記憶體、及電腦系統之其他資源,並將與其相關的資源配置給VM。各VM可代表一仿真程式之執行(如同實體機器)的機器之虛擬或軟體實施方式。各VM可支援訪客作業系統(OS)之執行。如圖所示,第一VM可具有第一訪客作業系統(OS)224-1而第N VM可具有第N訪客OS 224-N。作業系統可為相同OS或不同OS之多數例子。
於所示之範例中,第N VM係用來利用保護容器207。於某些實施例中,VMM可包括保護容器即時遷移模組204,用以控制或管理保護容器之遷移出電腦系統。電腦系統之一或更多處理器(未顯示)可具有一或更多指
令、及用來履行該些指令之邏輯,用以支援即時遷移,如文中別處所述。於某些實施例中,第一VM可包括密鑰管理者保護容器210。於某些實施例中,密鑰管理者保護容器可控制或管理一組一或更多全VM或VM特定密鑰(例如,密鑰階層),各相應於其具有相應保護容器之VM的不同一者。
圖3為軟體環境之第二範例實施例的方塊圖,其中遷移可被履行於作業系統容器305之保護容器307上。電腦系統包括作業系統(OS)303、具有保護容器307之OS容器305、及OS控制服務325。OS 303可代表核心並可提供容器為基的虛擬化或OS虛擬化。OS容器可代表OS內之應用程式,該OS代表類似於訪客虛擬機器之虛擬化層。於某些實施例中,OS可包括保護容器即時遷移模組304,用以控制或管理保護容器之遷移出電腦系統。如前所述,電腦系統之一或更多處理器(未顯示)可具有一或更多指令、及用來履行該些指令之邏輯,用以支援保護容器之即時遷移,如文中別處所述。類似地,於某些實施例中,OS控制服務可包括密鑰管理者保護容器310。於某些實施例中,密鑰管理者保護容器可控制或管理一組一或更多全OS容器或OS容器特定密鑰(例如,密鑰階層),各相應於其具有相應保護容器之OS容器的不同一者。
圖4為一種保護容器從來源電腦系統至目的地電腦系統之遷移的方法430之實施例的方塊流程圖。於某些實施
例中,該方法可藉由來源和目的地電腦系統上之合作的保護容器即時遷移模組而被控制或管理。
於區塊431,保護容器之頁的副本可從來源電腦系統之保護容器記憶體被儲存至目的地電腦系統之正規記憶體中的加密副本,當其正使用該保護容器之應用程式或領域(例如,VM、OS容器,等等)正運行於來源電腦系統上時。於某些實施例中,區塊431上之操作可選擇性地使用圖5之方法(或其一部分)而被履行,包括為此所述之任何變化,雖然本發明之範圍未如此限制。
於某些實施例中,各頁可被寫入保護於來源電腦系統之保護容器記憶體中,在該頁之副本(例如,加密副本)從來源電腦系統之保護容器記憶體被儲存至外部位置(例如,至來源電腦系統之正規記憶體)前。於某些實施例中,在從來源電腦系統之保護容器記憶體儲存各寫入保護頁之副本(例如,加密副本)至外部位置以前,來源電腦系統之相應處理器可確保或證實其沒有對於寫入保護頁之可寫入參考。於某些實施例中,在各寫入保護頁之副本已從來源電腦系統之保護容器記憶體被儲存至外部位置以後,寫入保護頁可被留存為寫入保護,但為有效且可讀取的,於來源電腦系統之保護容器記憶體中。亦即,於某些實施例中,頁之副本可同時地存在於來源電腦系統之保護容器記憶體(例如,EPC)中,且亦當作保護容器記憶體外部之加密副本(例如,於來源或目的地電腦系統之正規記憶體中)。有利地,此可容許來源電腦系統之運行中應
用程式或領域從該頁讀取資料,當保護容器即時遷移模組同時地工作以遷移該頁至目的地電腦系統時。
於某些實施例中,為了減少欲達成保護容器之完整遷移所需的停機時間量,從最多至實質上盡可能多的頁可從保護容器記憶體被複製至目的地儲存位置之正規記憶體,當應用程式或領域(例如,VM或OS容器)正運行於來源系統上時。這些頁可至少觀念上地被視為寫入工作組及非寫入工作組。寫入工作組中之頁傾向於被寫入在當應用程式或領域正運行時的遷移窗或時間段期間。反之,非寫入工作組中之頁傾向於不被寫入或不太可能被寫入在當應用程式或領域正運行時的遷移窗或時間段期間。通常,非寫入工作組中從大部分至實質上所有的頁、以及寫入工作組中潛在地某些頁(例如,那些在其已被複製自保護容器記憶體後尚未被寫入者)可潛在地從保護容器記憶體被複製至外部位置,當應用程式或領域正運行時。此外,從保護容器記憶體所複製的寫入保護頁可仍被讀取自,甚至在其已被複製自保護容器記憶體以後,因為這些頁被寫入保護,但仍為有效(除非後續寫入至頁已被檢測)、且可讀取。此可容許應用程式或領域讀取自這些頁,當這些頁之遷移進行時。
於一形態中,保護容器即時遷移模組可疊代遍及所有保護容器頁一或更多次,從保護容器記憶體複製該些保護容器頁,假設該些頁非於寫入工作組中。假如檢測到對於寫入保護頁之嘗試寫入,則其被儲存在保護容器記憶體外
部之該頁的臆測副本可被無效化。否則,該頁可被留存在保護容器中,於寫入保護但有效且可讀取的狀態。在第一疊代後,保護容器即時遷移模組可選擇性地疊代遍及剩餘的未複製保護容器頁一或更多次(預定數目次數),直到此等剩餘的未複製頁之數目變得夠小(例如,減至低於臨限數目或比例),或者依據某其他想要的準則。典型地,在一些疊代後,該組剩餘的未複製保護容器頁應約略地收斂至寫入工作組的頁,其係傾向於被寫入於遷移窗或時間框期間。有利地,寫入保護該些保護容器頁、並容許該些頁為有效且可讀取於保護容器記憶體中,可協助減少欲達成保護容器之即時遷移所需的應用程式或領域之停機時間。取代無效化該些頁,該些頁可仍維持可讀取於保護容器記憶體中。有效地,寫入工作組外部之大約所有頁可被複製自保護容器記憶體,以取代代表工作組之較大組的頁外部之僅那些頁(例如,其額外地包括於遷移窗期間應用程式所傾向於讀取自的那些頁)。此可協助減少在應用程式被去排程或停止後需被複製的頁之數目,其可協助減少停機時間。
再次參考圖4,於區塊432,其正使用來源電腦系統上之保護容器的應用程式之執行可被停止。於各個實施例中,應用程式可選擇性地為VM或OS容器,雖然此並非必要。
於區塊433,任何剩餘的未複製頁、及選擇性地任何剩餘的未複製特殊頁之副本可從來源電腦系統之保護容器
記憶體被複製至目的地電腦系統之正規記憶體中的加密副本,在其正使用保護容器之應用程式或領域已停止運行以後。於某些實施例中,一或更多特殊頁可選擇性地被使用,雖然本發明之範圍未如此限制。當作一範例,一或更多特殊頁可選擇性地被用以儲存能夠遷移的密鑰。當作另一範例,一或更多特殊頁可選擇性地被用於保護容器之頁的版本資訊。例如,於Intel® SGX實施方式實施例中,SDCS頁可被用以儲存能夠遷移的密鑰,而一或更多版本陣列頁(VAX)可被用以儲存其寫出保護容器記憶體(但留存於寫入保護、有效、且可讀取的狀態)之頁的版本資訊。於其他實施例中,單一特殊頁可被用以儲存能夠遷移的密鑰及版本資訊兩者,或者能夠遷移的密鑰及/或版本資訊可取代地被儲存於保護容器頁本身中,或者此資訊可選擇性地被儲存於其他資料結構中,等等。
於區塊434,其將使用目的地電腦系統上之保護容器的應用程式或領域可開始運行。於各個實施例中,應用程式可選擇性地為VM或OS容器,雖然此並非必要。
於區塊435,加密頁(及選擇性地加密特殊頁)可從目的地電腦系統之正規記憶體被載入至目的地電腦系統之保護容器記憶體中的未加密頁。例如,保護容器可被產生或初始化於目的地電腦系統之保護容器記憶體中,且接著頁可被載入保護容器。於某些實施例中,特殊頁可選擇性地被載入保護容器記憶體,在正規頁被載入保護容器記憶體以前,雖然本發明之範圍未如此限制。
圖5為一種保護容器記憶體之寫入保護頁的方法538之實施例的方塊流程圖,該方法並將寫入保護頁之加密副本儲存於該保護容器記憶體之外部,而同時保持該些寫入保護頁為有效且可讀於保護容器記憶體中。於某些實施例中,該方法可由來源電腦系統之保護容器即時遷移模組所控制並管理,當遷移一保護容器至目的地電腦系統時,雖然本發明之範圍未如此限制。例如,於某些實施例中,該方法可選擇性地被履行於圖4之區塊431上,雖然本發明之範圍未如此限制。該方法可被履行以圖1之電腦系統、或者類似或不同的電腦系統。針對電腦系統100所述之特性及組件可選擇性地被用於該方法中,但非必要。於某些實施例中,該方法可被履行以處理器之指令集的一或更多指令(例如,圖1之指令114及/或圖6之指令614),其係操作以支援保護容器之即時遷移。
於區塊539,保護容器記憶體之頁可被寫入保護。保護容器記憶體之頁可被儲存於系統記憶體中之保護容器記憶體內的其安全儲存中;或可被快取或者儲存於處理器之快取或其他晶粒上儲存位置中的安全儲存(其係操作以保持該些頁安全於其中)中。於某些實施例中,各頁可回應於指令集之單指令的執行或履行而被寫入保護。於某些實施例中,各頁可藉由以下方式而被寫入保護:組態保護容器頁元資料結構(例如,PCPMS 109)中之寫入保護指示以指示其該頁被寫入保護。例如,於Intel® SGX實施方式之一實施例中,指定位址空間頁可藉由組態(例如,設
定)指定位址空間頁快取映圖(EPCM)中之寫入保護(WP)位元而被寫入保護。於某些實施例中,當寫入保護時,該些頁可為有效且可讀取的。於某些實施例中,各寫入保護頁亦可變為僅被讀取於分頁結構(例如,擴充分頁表)中,雖然本發明之範圍未如此限制。於某些實施例中,分頁結構之修改可選擇性地於其用以修改PCPMS中之寫入保護指示的指令之侷限以外。於各個形態中,從整體演算法的觀點,該些頁可被一次一個地(或批次地)寫入保護、或者保護容器中之所有頁可被一次地寫入保護。
於區塊540,處理器可確保或證實其沒有對於寫入保護頁之可寫入參考。此可以不同方式被進行於不同實施例中。於某些實施例中,此可被實施以TLB追蹤機制。TLB可快取從與頁相關的虛擬至實體位址之轉譯。與存取那些許可(諸如讀取和寫入許可)相關的許可亦可被快取於TLB中。於TLB中所快取之這些許可係反映在當履行頁表行走時履行該些轉譯的時刻之許可。於記憶體存取請求時,假如MMU發現TLB中之轉移,則其可略過頁表查找並使用該轉移(以及該些許可),其被快取於TLB中。亦即,MMU可使用來自TLB之許可(其可能是過期的),取代查找頁表中之許可及/或檢查PCPMS(例如,EPCM)中之許可。於其中頁具有TLB中之許可(其指示該頁為可寫入的)的情況下,執行緒可寫入至該頁,即使在該頁已被寫入保護以後(例如,如區塊539所述)。為了增進安全性,該方法可確保其此等快取的許可被清除自
TLB。此可被進行在製作寫入保護頁之副本以前。此可以不同方式被進行於不同實施例中。當作一範例,時期計數器可被用以判定執行緒何時可具有對於此一TLB映射之存取權,以及此一TLB映射何時需已被清除(例如,執行緒需已觀察到該頁之寫入保護)。一旦所有執行緒已觀察到該頁之寫入保護,則其可被確保沒有對於寫入保護頁之更多可寫入參考。於某些實施例中,於Intel® SGX實施方式實施例中,ETRACK指令及相關機制可選擇性地被用以確保其寫入映射至一正被遷移的頁在將該頁寫出至主記憶體以前被移除自TLB。舉例而言,ETRACK指令可被用以組態微架構追蹤器邏輯,用以檢測在ETRACK指令之執行的時刻於指定位址空間中執行的所有邏輯處理器何時已離開該指定位址空間而因此所有TLB項目已被排出(例如,於指定位址空間執行期間所產生的TLB項目可被排出在當離開該指定位址空間時)。
於區塊541,保護容器記憶體之寫入保護頁的加密副本可被產生。於某些實施例中,各寫入保護頁之加密副本可回應於指令集之單指令的執行或履行而被產生。於某些實施例中,可使用處理器之密碼單元(例如,密碼單元118),其可被用以加密保護容器頁在當該些頁從該處理器被寫入至系統記憶體中之任何地方時,包括進入保護容器記憶體及保護容器記憶體外部之正規系統記憶體。於某些實施例中,不同的加密可選擇性地被用以將已加密的保護容器頁儲存至正規記憶體相對於保護容器記憶體,雖然
此並非必要。
於區塊542,保護容器記憶體之寫入保護頁的加密副本(例如,於區塊540所產生的加密副本)可被儲存出保護容器記憶體(例如,於相同電腦系統之正規記憶體中或者於非保護容器記憶體中)。於某些實施例中,加密副本可被儲存於正規記憶體中,而相應的寫入保護頁維持有效且可讀取於保護容器記憶體中。於某些實施例中,使用相關保護容器之應用程式或領域可被容許讀取自保護容器記憶體中之寫入保護頁,在加密副本已被儲存出保護容器記憶體後。另一替代性可能方式將是用以無效化該些頁(例如,取代寫入保護該些頁並容許該些頁保持有效且可讀取),雖然此可能具有潛在缺點,諸如不容許該些頁被讀取自及/或減少其可被儲存出保護容器記憶體之頁的總數,當應用程式正運行時。於某些實施例中,各寫入保護頁之加密副本可回應於指令集之單指令的執行或履行而被儲存出保護容器記憶體(例如,至正規記憶體)。於某些實施例中,加密副本可被儲存出保護容器記憶體(例如,至正規記憶體),僅在確保或證實其沒有對於寫入保護頁之可寫入參考後(例如,在區塊541後)。
於區塊543,可判定對於寫入至保護容器記憶體之寫入保護頁的企圖是否已被檢測。假如未檢測到此企圖寫入(亦即,「無」為區塊543上之判定),則該方法可前進至區塊545。此可容許該頁保持寫入保護(但為有效且可讀取)於保護容器記憶體中,當該頁之僅一真實非髒副本
存在時,藉此容許安全性被維持。
反之,假如已檢測到此企圖寫入至寫入保護頁(亦即,「是」為區塊543上之判定),則該方法可前進至區塊544。代表性地,此一企圖可潛在地被處理器之邏輯所檢測(例如,回應於擴充頁表違反),並回應於此該邏輯可通知錯誤。於區塊544,寫入保護頁可被寫入保護(例如,該頁可變為可寫入),而保護容器記憶體外部之任何加密副本(例如,於來源電腦系統之正規記憶體中或者於目的地電腦系統之正規記憶體中)可被無效化。無效化保護容器記憶體外部之副本可協助確保安全性,諸如(例如)藉由確保其僅有頁之一真實副本(例如,其加密副本與保護容器記憶體中之頁的內容不發散)。於某些實施例中,該頁可為寫入未保護,而保護容器記憶體外部之加密副本可被無效化,回應於指令集之單指令的執行或履行。於某些實施例中,該頁可藉由以下方式而為寫入未保護:組態保護容器頁元資料結構(例如,PCPMS 109)中之寫入保護指示以指示其該頁為寫入未保護。例如,於Intel® SGX技術實施方式之一實施例中,各頁可藉由組態(例如,清除)指定位址空間頁快取映圖(EPCM)中之寫入保護(WP)位元而為寫入未保護。於某些實施例中,該頁亦可變為可讀取及可寫入於分頁結構(例如,擴充分頁表)中,雖然本發明之範圍未如此限制。於某些實施例中,分頁結構之修改可於其用以修改PCPMS中之寫入保護指示的指令之侷限以外。
該方法可從區塊543或區塊544前進至區塊545。於區塊545,可判定是否重複該方法。假如該方法應被重複(亦即,「是」為區塊545上之判定),則該方法可再訪區塊539。替代地,該方法可結束。是否重複該方法之判定可以不同方式被履行於不同實施例中。例如,該方法可被履行預定的或可組態的次數(例如,該判定可涉及具有臨限值之迴路計數器)。當作另一範例,該判定可涉及判定:額外頁是否仍被寫入保護(例如,於區塊539)並儲存於緊接在前的疊代中、比未寫入保護之頁數更多的額外頁是否被寫入保護(例如,於區塊539)並儲存於緊接在前的疊代中(例如,於區塊544),等等。替代地,該方法可選擇性地僅被履行一次,而區塊545可選擇性地被省略。
應理解:此僅為方法之一說明性範例。其他方法可包括所述區塊之子集。例如,替代方法可僅包括區塊539。另一替代方法可包括區塊540、541、及542。又另一方法可僅包括區塊544。區塊之各種其他組合亦被考量。同時,額外的操作可選擇性地被加至該方法。此外,某些操作或區塊可選擇性地被重疊(例如,區塊540與541可被重疊)、或被履行以不同的順序(例如,區塊541可被履行在區塊540之前、區塊543可被持續地履行遍及該方法,等等)。
圖6為一種操作以履行用以支援保護容器之即時遷移的一組一或更多指令614之實施例的處理器612之實施例
的方塊圖。如前所述,該些指令亦可被用於除了支援保護容器之即時遷移以外的其他目的。於某些實施例中,處理器可為通用處理器(例如,用於桌上型電腦、筆記型電腦、或其他電腦之類型的通用微處理器或中央處理單元(CPU))。另一方面,處理器可為特殊用途處理器。適當的特殊用途處理器之範例包括(但不限定於)密碼處理器、網路處理器、通訊處理器、共處理器、嵌入處理器、數位信號處理器(DSP)、及控制器(例如,微控制器)。處理器可具有多種複雜指令集計算(CISC)架構、減少指令集計算(RISC)架構、極長指令字元(VLIW)架構、併合架構、其他類型的架構之任一者,或者具有不同架構之組合(例如,不同核心可具有不同架構)。
用以支援保護容器之即時遷移的該組一或更多指令614可為處理器之指令集的指令。該些指令可代表微指令、機器碼指令、或組合語言指令。於所示的範例實施例中,該些指令包括四個不同指令,雖然本發明之範圍未如此限制。明確地,該些指令包括保護容器頁寫入保護指令650、保護容器頁加密並儲存保護容器記憶體外部之加密副本指令651、選擇性的保護容器頁寫入未保護和頁副本無效化指令652、及選擇性的保護容器版本陣列頁產生指令653。
於其他實施例中,少於或多於四個指令可選擇性地被使用。例如,於一替代實施例中,這些指令之單一指令可選擇性地被包括而其他者選擇性地被省略。當作一範例,
僅保護容器頁寫入保護指令可選擇性地被包括。當作另一範例,僅保護容器頁加密並儲存保護容器記憶體外部之加密副本指令可選擇性地被包括。當作又另一範例,僅保護容器頁寫入保護指令及保護容器頁加密並儲存保護容器記憶體外部之加密副本指令可選擇性地被包括。同時,一或更多其他指令可選擇性地被加入,連同一或更多所示的該些四個指令。
於又其他實施例中,這四個指令之功能可被不同的分配。當作一特定範例,保護容器寫入保護指令650的操作及保護容器頁加密並儲存保護容器記憶體外部之加密副本指令651的操作可選擇性地被組合成單指令。當作另一特定範例,保護容器頁加密並儲存保護容器記憶體外部之加密副本指令651的加密操作可選擇性地被替代分配給保護容器寫入保護指令614並由保護容器寫入保護指令614所履行。當作又另一特定範例,保護容器版本陣列頁產生指令653的操作及任一保護容器頁寫入保護指令650或保護容器頁加密並儲存保護容器記憶體外部之加密副本指令651的操作可選擇性地被組合成單指令。這些僅為少許說明性範例。其他變化將是那些熟悉此技藝人士所清楚明白的並具有本發明之優點。
再次參考圖6,處理器包括解碼單元或解碼器654。解碼單元可接收並解碼一或更多指令614之任一者。解碼單元可輸出一或更多相對較低階的指令或控制信號(例如,一或更多微指令、微運算、微碼進入點、已解碼指令
或控制信號,等等),其係反應、代表、及/或衍生自所接收之相對較高階的指令。於某些實施例中,解碼單元可包括:一或更多輸入結構(例如,埠、互連、介面),用以接收指令、指令辨識並解碼邏輯,其係耦合以辨識並解碼該接收的指令、及一或更多輸出結構(例如,埠、互連、介面),其係耦合以輸出較低階指令或控制信號。解碼單元可使用各種不同的機制來實施,包括(但不限定於)微碼唯讀記憶體(ROM)、查找表、硬體實施方式、可編程邏輯陣列(PLA)、及適於實施解碼單元之其他機制。
處理器亦包括一組暫存器667(例如,通用暫存器)。該些暫存器之各者可代表一操作以儲存資料之晶粒上儲存位置。該些暫存器可代表架構上可見或者架構暫存器,其為軟體及/或編程器可見的、及/或為由處理器之指令集的指令所指示以識別運算元的暫存器。這些架構暫存器在既定的微架構上是相反於其他非架構暫存器(例如,暫時暫存器、記錄器緩衝器、退役暫存器,等等)。該些暫存器可被實施以不同方式於不同的微架構中,且不限於任何特定類型的設計。適當類型暫存器之範例包括(但不限定於)專屬實體暫存器、使用暫存器重新命名之動態配置實體暫存器、及其組合。於某些實施例中,該些暫存器可被用以儲存與該些指令相關的輸入及/或輸出資料。於一形態中,該些暫存器可包括針對圖7-9之任一者所顯示並描述的通用暫存器,並可具有針對其所提及之所述的輸
入及/或輸出之任一者。
執行單元655與解碼單元654及暫存器667耦合。執行單元可接收一或更多已解碼或者已轉換指令或控制信號,其係代表及/或衍生自已被解碼的指令之任一者(指令614之任一者)。執行單元係操作以回應於及/或由於該被解碼的指令(例如,回應於從該指令所解碼之一或更多指令或控制信號)來履行一或更多操作668以達成該指令之操作。如圖所示,執行單元可被耦合與(或者通連與)處理器之其他邏輯616及/或記憶體606中之頁或結構,以實施其被履行之特定指令的操作。於某些實施例中,執行單元可為針對圖7-9之任一者所顯示並描述的執行單元之任一者,並可履行針對其所述的操作之任一者。
執行單元及/或處理器可包括特定或特別邏輯(例如,電晶體、積體電路、或潛在地與韌體(例如,非揮發性記憶體中所儲存之指令)及/或軟體結合之其他硬體),其係操作以回應於及/或由於該些指令來履行此等操作(例如,回應於從該些指令所解碼之一或更多指令或控制信號)。於某些實施例中,執行單元可包括:一或更多輸入結構(例如,埠、互連、介面),用以接收來源資料、電路或邏輯,其係耦合以接收和處理來源資料、及一或更多輸出結構(例如,埠、互連、介面),其係耦合以實現該些操作。
為了避免混淆說明,已顯示及描述一相對簡單的處理器。然而,處理器可選擇性地包括其他處理器組件。例
如,各個不同實施例可包括針對圖10-12之任一者所顯示並描述的組件之各個不同組合及組態。處理器之所有組件可被耦合在一起以容許其操作如所欲。
圖7為一種操作以履行保護容器頁寫入保護指令之實施例的處理器712之實施例的方塊圖。處理器包括解碼單元754、執行單元755、及選擇性地一組暫存器767(例如,通用暫存器)。除非有指明(或者為很清楚明顯的),這些組件可選擇性地具有圖6之相應地命名的組件之部分或所有特性。為了避免混淆說明,將主要地描述不同及/或額外的特性而不重複所有選擇性地共同特性。此外,於某些實施例中,處理器712可被用於圖1之來源電腦系統100。替代地,處理器712可被用於類似的或不同的電腦系統。
解碼單元754可接收保護容器頁寫入保護指令750。於某些實施例中,保護容器頁寫入保護指令可為特權等級指令,其可僅被履行在一或更多特權等級的執行,而不在非特權或使用者等級的執行。例如,保護容器頁寫入保護指令可僅被履行於第0環等級的特權,例如,藉由作業系統、虛擬機器監視器(VMM)、或其他特權系統軟體,但非藉由使用者等級應用程式軟體。於某些實施例中,該指令可指示額外指令指明資訊774,雖然此並非必要。例如,於Intel® SGX實施方式實施例,該指令可為特權等級ENCLS指令,其可被執行於第0環特權等級,並可隱含地指示通用暫存器EAX為具有「28h」之葉功能指標值
以指示EPC頁寫入保護操作,雖然本發明之範圍未如此限制。雖然該指令可被使用以非相關於保護容器之遷移的多種不同方式,於一形態中此特權軟體可潛在地使用保護容器頁寫入保護指令以寫入保護一保護容器頁,在該頁之加密副本被儲存出保護容器記憶體以前,配合保護容器之即時遷移。
於某些實施例中,保護容器頁寫入保護指令可指示保護容器頁708。該頁可以不同方式被指示於不同實施例中。於某些實施例中,該指令可明確地指明(例如,透過一或更多欄位或一組位元)、或者指示(例如,隱含地指示)暫存器(例如,通用暫存器767之一),其係用以儲存保護容器頁之有效位址或其他指示775。當作一範例,該指令可選擇性地具有暫存器指明欄位,用以指明一具有有效位址之暫存器,該有效位址係用以指示保護容器頁。當作另一範例,該指令可選擇性地隱含地或暗示地指示一具有有效位址之隱含暫存器,該有效位址係用以指示保護容器頁。於接收該指令時,其可被瞭解(雖未被明確地表達)為使用隱含暫存器來找出有效位址。當作一特定範例,於Intel® SGX實施方式實施例中,隱含通用暫存器RCX可儲存指定位址空間頁快取(EPC)頁之有效位址。
處理器可操作以結合有效位址與其他位址資訊來獲得保護容器頁之位址。例如,資料區段(DS)區段可被用以產生線性或虛擬位址。如圖所示,於某些實施例中,保護容器記憶體706可選擇性地位於一與該處理器耦合的系
統記憶體770中。替代地,保護容器記憶體可選擇性地為處理器之一或更多快取或其他晶粒上儲存。當作一特定範例,於Intel® SGX實施方式實施例中,保護容器記憶體可為指定位址空間頁快取(EPC)。
執行單元755與解碼單元754及選擇性通用暫存器767耦合。回應於保護容器頁寫入保護指令,執行單元可操作以寫入保護保護容器記憶體706之該指示的保護容器頁708,其可位於系統記憶體或者晶粒上快取或其他晶粒上儲存中。於某些實施例中,執行單元可具有寫入保護單元,其係操作以寫入保護該頁,藉由組態寫入保護指示器777(其係相應於該指示頁)以指示該頁被寫入保護。不同類型的寫入保護指示器係適於不同的實施例。於某些實施例中,寫入保護指示器可被實施為一或更多位元於保護容器記憶體中、於處理器保留記憶體中之存取控制保護資料結構中、於處理器之存取控制保護暫存器或其他結構中,等等。如圖所示,於某些實施例中,寫入保護指示器可選擇性地被包括於保護容器頁安全性元資料結構(PSPMS)709,該結構709係用以儲存保護容器記憶體中之頁的元資料(例如,安全性及存取控制元資料)。於某些實施例中,PSPMS可具有針對保護容器記憶體中之各相應不同頁的不同寫入保護指示器。依據一可能約定,寫入保護指示器可為單一位元,其可被組態成具有第一二元值(例如,設為二元一)以指示其相應的指示保護容器頁708未被寫入保護,或第二不同的二元值(例如,清除
至二元零)以指示其相應的指示保護容器頁被寫入保護。當作一特定範例,於Intel® SGX實施方式實施例中,執行單元可寫入保護指定位址空間頁快取(EPC)之指定位址空間頁,藉由設定寫入保護(WP)位元於指定位址空間頁快取映圖(EPCM)中以指示其EPCM中之該頁以及非監督欄位被寫入保護,雖然本發明之範圍未如此限制。代表性地,當EPCM之WP位元被設定時,頁遺失處置器(PMH)單元及/或轉譯後備緩衝(TLB)可通知錯誤(例如,寫入保護錯誤、頁錯誤,等等),假如嘗試對該頁之寫入存取的話。
於某些實施例中,該指令可選擇性地明確地指明或者指示元資料結構711,其被用以儲存保護容器記憶體之指示保護容器頁708的元資料778。元資料結構可以不同方式被指示於不同實施例中。於某些實施例中,該指令750可明確地指明(例如,透過一或更多欄位或一組位元)、或者指示(例如,隱含地指示)暫存器(例如,通用暫存器767之一),其係用以儲存元資料結構之有效位址或其他指示776。當作一範例,該指令可選擇性地具有暫存器指明欄位,用以指明一具有有效位址之暫存器,該有效位址係用以指示元資料結構。當作另一範例,該指令可選擇性地隱含地或暗示地指示一具有有效位址之隱含暫存器,該有效位址係用以指示元資料結構。當作一特定範例,於Intel® SGX實施方式實施例中,隱含通用暫存器RBX可儲存頁元資料(PGMD)結構之有效位址,雖然本發明之
範圍未如此限制。於其他實施例中,其他資料結構可選擇性地被用以儲存元資料(例如,PCPMS)。回應於該指令,執行單元可操作以儲存有關元資料結構711中之指示保護容器頁的元資料778。如圖所示,執行單元可具有選擇性元資料儲存單元782,用以儲存元資料於元資料結構中。替代地,於其他實施例中,元資料之此儲存可選擇性地被省略(例如,可能不需要、可由另一指令所履行,等等)。
於某些實施例中,在寫入保護該保護容器頁之前,執行單元可選擇性地操作以履行一或更多安全性或驗證檢查。於某些實施例中,執行單元可包括安全性檢查單元783,用以檢查或驗證其能夠遷移的密鑰結構779,其具有能夠遷移的密鑰780、具有對指示保護容器頁708之控制。例如,於Intel® SGX實施方式實施例中,執行單元可操作以判定一具有能夠遷移的SGX密鑰、計數器、及密碼元資料之目前SGX領域控制結構(SDCS)具有對保護容器頁之控制,雖然本發明之範圍未如此限制。替代地,於其他實施例中,此安全性或驗證檢查可選擇性地被省略(例如,可能不需要、可由另一指令所履行,等等)。
圖8為一種可操作以履行保護容器頁加密及儲存加密副本於保護容器記憶體外部指令851之實施例的處理器812之實施例的方塊圖。處理器包括解碼單元854、執行單元855、及選擇性地一組暫存器867(例如,通用暫存
器)。除非有指明(或者為很清楚明顯的),這些組件可選擇性地具有圖6之相應地命名的組件之部分或所有特性。為了避免混淆說明,將主要地描述不同及/或額外的特性而不重複所有選擇性地共同特性。此外,於某些實施例中,處理器812可被用於圖1之來源電腦系統100。替代地,處理器812可被用於類似的或不同的電腦系統。
解碼單元854可接收指令851。於某些實施例中,該指令可為特權等級指令,其可僅被履行在特權等級的執行,而不在非特權或使用者等級的執行。於某些實施例中,該指令可指示額外指令指明資訊874,雖然此並非必要。例如,於Intel® SGX實施方式實施例中,該指令可為特權等級ENCLS指令,並可隱含地指示通用暫存器EAX為具有「2Ah」之葉功能指標值以指示儲存加密頁自EPC操作及保留頁可讀取於EPC操作,雖然本發明之範圍未如此限制。雖然該指令可被使用以一般方式,於一形態中,此特權軟體可潛在地使用該指令以儲存寫入保護頁之加密副本(例如,由如文中所揭露之先前寫入保護指令所保護之一寫入)出保護容器記憶體(例如,至正規記憶體),當保護容器配合該保護容器而處於操作中時。
於某些實施例中,該指令可指示保護容器記憶體806之寫入保護頁808。寫入保護頁可以不同方式被指示於不同實施例中。於某些實施例中,該指令可明確地指明(例如,透過一或更多欄位或一組位元)、或者指示(例如,隱含地指示)暫存器(例如,通用暫存器867之一),其
係用以儲存寫入保護頁808之有效位址或其他指示875。
當作一特定範例,於Intel® SGX實施方式實施例中,隱含通用暫存器RCX可儲存其將被儲存出EPC(例如,至正規記憶體)之寫入保護EPC頁的有效位址。如圖所示,於某些實施例中,保護容器記憶體806可選擇性地位於一與該處理器耦合的系統記憶體870中(例如,於系統記憶體之硬體保留部分中)。替代地,保護容器記憶體806可選擇性地為處理器之一或更多快取或其他晶粒上儲存。組合亦為適當的。當作一特定範例,於Intel® SGX實施方式實施例中,保護容器記憶體可為指定位址空間頁快取(EPC)。
執行單元855與解碼單元及選擇性通用暫存器867耦合。回應於保護容器頁寫入保護指令,執行單元可操作以確保沒有對於保護容器記憶體之寫入保護頁的可寫入參考,當硬體執行的保護容器記憶體之頁具有寫入保護狀態時。如圖所示,執行單元可包括可寫入參考追蹤器單元890,其可與TLB追蹤邏輯891耦合。可寫入參考追蹤器邏輯可操作以與TLB追蹤邏輯通訊來確保沒有對於保護容器記憶體之寫入保護頁的可寫入參考。此可選擇性地被履行如文中別處所述,或藉由其他方式。於某些實施例中,ETRACK指令及相關機制可選擇性地被用以確保其寫入映射至一正被遷移的頁在將該頁寫出至主記憶體以前被移除自TLB。舉例而言,ETRACK指令可被用以組態微架構追蹤器邏輯,用以檢測在ETRACK指令之執行的時刻
於指定位址空間中執行的所有邏輯處理器何時已離開該指定位址空間而因此所有TLB項目已被排出(例如,於指定位址空間執行期間所產生的TLB項目可被排出在當離開該指定位址空間時)。
回應於保護容器頁寫入保護指令,執行單元亦可操作以加密保護容器記憶體之指示寫入保護頁808的副本。如圖所示,執行單元可包括加密單元818(例如,其可為圖1之密碼單元118的一部分)以履行此加密。
執行單元可進一步操作以儲存保護容器記憶體之寫入保護頁的加密副本887至目的地位置886,其係位於保護容器記憶體806之外部,在已確保其沒有對於硬體執行的保護容器記憶體之頁的可寫入參考以後。於某些實施例中,目的地位置可位於正規記憶體中,諸如(例如)用以儲存使用者等級應用程式(例如,網際網路瀏覽器、資料庫應用程式、文字處理應用程式,等等)之記憶體。於某些實施例中,保護容器記憶體中之寫入保護頁可位於處理器保留記憶體中,但加密副本可被儲存於處理器保留記憶體之外部。於某些實施例中,該指令可明確地指明或者指示目的地儲存位置之指示885,諸如(例如)藉由具有一用以儲存此指示之指明或隱含暫存器。執行單元可進一步操作以使保護容器記憶體806中之寫入保護頁808處於寫入保護狀態,其亦為有效且可讀取的(例如,相對於被無效化),在寫入保護頁之加密副本887已被儲存至保護容器記憶體外部(例如,於其為非處理器保留記憶體之正規
記憶體中)之指示的目的地位置886以後。容許寫入保護頁保持有效且可讀取可提供如文中別處所述之優點,諸如(例如)容許該頁被讀取自、減少接續於即時遷移後之停機時間,等等。
於某些實施例中,執行單元可選擇性地操作以儲存其被儲存出保護容器記憶體之寫入保護頁808的版本資訊889。例如,執行單元可包括用以儲存版本資訊889之頁版本儲存單元892。於某些實施例中,該指令可指示版本頁888,其係用以將頁之版本資訊儲存於保護容器記憶體中。替代地,取代版本頁,可使用另一結構以儲存版本資訊。於某些實施例中,該指令可明確地指明、或者指示暫存器(例如,通用暫存器867之一),其係用以儲存版本頁888或版本結構之有效位址或其他指示876。當作一特定範例,於Intel® SGX實施方式實施例中,隱含通用暫存器RDX可儲存VAX頁槽之有效位址,雖然本發明之範圍未如此限制。於一形態中,VAX頁可代表專屬類型的版本陣列頁,其被用以儲存針對儲存出EPC之寫入保護頁的版本陣列資訊,且其係不同於被用以儲存針對儲存出EPC之無效化頁的版本陣列資訊之VA頁。於其他實施例中,版本資訊可被儲存於其他類型的頁中、於其他結構中(例如,記憶體中之保護結構、晶粒上之保護結構,等等)。版本資訊可協助保護免於加密頁之重播。替代地,可能針對既定實施方式不欲或不想要提供免於重播之此保護,且此版本資訊可選擇性地被省略。
於某些實施例中,在儲存加密副本887於保護容器記憶體外部之位置以前,執行單元可選擇性地操作以履行一或更多安全性或驗證檢查。如圖所示,執行單元可包括安全性檢查單元883。於某些實施例中,安全性檢查單元可操作以檢查或驗證其能夠遷移的密鑰結構879(其具有能夠遷移的密鑰880)具有對其將被儲存出保護容器記憶體之寫入保護容器頁808的控制。於某些實施例中,此亦可選擇性地包括檢查或驗證其能夠遷移的密鑰結構具有對其將被用以儲存版本資訊之版本頁888或其他版本儲存結構的控制。例如,於Intel® SGX實施方式實施例中,此可包括判定一可具有能夠遷移的SGX密鑰、計數器、及密碼元資料之目前SGX領域控制結構(SDCS)具有對保護容器頁及VAX頁之控制,雖然本發明之範圍未如此限制。替代地,於其他實施例中,此安全性或驗證檢查可選擇性地被省略(例如,可能不需要、可由另一指令所履行,等等)。
於某些實施例中,該指令可選擇性地明確地指明或者指示元資料結構811,其被用以儲存針對儲存出寫入保護頁808的元資料878。於某些實施例中,該指令851可明確地指明、或者指示暫存器(例如,通用暫存器867之一),其係用以儲存元資料結構811之有效位址或其他指示884。當作一特定範例,於Intel® SGX實施方式實施例中,該指令可指示(PCMD)結構,雖然本發明之範圍未如此限制。回應於該指令,執行單元可操作以儲存有關元
資料結構中之儲存出寫入保護頁的元資料878。如圖所示,執行單元可包括選擇性元資料儲存單元882。舉例而言,元資料儲存單元可操作以儲存元資料,諸如(例如)頁類型、讀取-寫入-執行許可狀態、未決狀態、修改狀態,等等、以及其各種組合,相應於該指示頁。此元資料可潛在地被用以確保當該頁被重新載入時該元資料之完整性(例如,於遷移保護容器中)。替代地,於其他實施例中,元資料之此儲存可選擇性地被省略(例如,可能不需要、可由另一指令所履行,等等)。
圖9為一種可操作以履行保護容器頁寫入未保護及加密頁副本無效化指令952之實施例的處理器912之實施例的方塊圖。處理器包括解碼單元954、執行單元955、及選擇性地一組暫存器967(例如,通用暫存器)。除非有指明(或者為很清楚明顯的),這些組件可選擇性地具有圖6之相應地命名的組件之部分或所有特性。為了避免混淆說明,將主要地描述不同及/或額外的特性而不重複所有選擇性地共同特性。此外,於某些實施例中,處理器912可被用於圖1之來源電腦系統100。替代地,處理器912可被用於類似的或不同的電腦系統。
解碼單元954可接收指令952。於某些實施例中,該指令可為特權等級指令,其可僅被履行在特權等級的執行,而不在非特權或使用者等級的執行。於某些實施例中,該指令可指示額外指令指明資訊974,雖然此並非必要。例如,於Intel® SGX實施方式實施例,該指令可為
特權等級ENCLS指令,其可隱含地指示通用暫存器EAX為具有「29h」之葉功能指標值以指示EPC頁寫入未保護操作,雖然本發明之範圍未如此限制。雖然該指令可被使用以一般方式,於一形態中,此特權軟體可潛在地使用該指令以解決寫入保護頁上之錯誤(例如,接續於對寫入保護頁之嘗試寫入後),當保護容器配合該保護容器之即時遷移而處於操作中時。
於某些實施例中,該指令可指示保護容器之寫入保護頁908。於某些實施例中,該指令可明確地指明、或者指示暫存器(例如,通用暫存器967之一),其係用以儲存寫入保護頁908之有效位址或其他指示975。當作一特定範例,於Intel® SGX實施方式實施例中,隱含通用暫存器RCX可儲存寫入保護EPC頁之有效位址。如圖所示,於某些實施例中,保護容器記憶體906可選擇性地位於一與該處理器耦合的系統記憶體970中(例如,於系統記憶體之硬體保留部分中)。替代地,保護容器記憶體906可選擇性地為處理器之一或更多快取或其他晶粒上儲存。此等方式之組合亦為適當的。當作一特定範例,於Intel® SGX實施方式實施例中,保護容器記憶體可為指定位址空間頁快取(EPC)。
執行單元955與解碼單元及選擇性通用暫存器967耦合。回應於保護容器頁寫入保護指令,執行單元可操作以寫入未保護該保護容器記憶體之該指示頁908,其可位於系統記憶體或者晶粒上快取或其他晶粒上儲存中。於一形
態中,此可將該頁置於有效且可用的狀態,其中讀取和寫入兩者均允許。於某些實施例中,執行單元可具有寫入未保護單元993,其係操作以寫入未保護該頁,藉由組態寫入保護指示器977(其係相應於該指示頁908)以指示該頁未被寫入保護。針對寫入保護指示器之上述相同類型的寫入保護指示器是適當的。於某些實施例中,相同的寫入保護指示器可被用於兩指令。寫入未保護指令可履行實質上該指示器之相反組態以當作寫入保護指令。如圖所示,於某些實施例中,寫入保護指示器可選擇性地被包括於保護容器頁安全性元資料結構(PSPMS)909,該結構係用以儲存保護容器記憶體中之頁的元資料(例如,安全性及存取控制元資料)。於Intel® SGX實施方式實施例中,執行單元可寫入未保護指定位址空間頁快取(EPC)之寫入保護指定位址空間頁,藉由清除寫入保護(WP)位元於指定位址空間頁快取映圖(EPCM)中以指示其EPCM中之該頁以及非監督欄位被寫入未保護,雖然本發明之範圍未如此限制。
於某些實施例中,執行單元可選擇性地操作以無效化其位於保護容器記憶體外部之保護容器記憶體的寫入保護頁之副本。於某些實施例中,相應於寫入保護頁908之版本989可被使用。於某些實施例中,回應於該指令,執行單元可操作以改變相應於該頁之版本。如圖所示,執行單元可包括版本改變單元994,用以改變寫入保護頁之版本。如圖所示,該版本可選擇性地被儲存於版本頁988
中。替代地,記憶體中之另一保護資料結構(或晶粒上保護結構)可選擇性地被用以儲存該版本。舉例而言,執行單元可無效化一相應於遷移版本陣列頁中之寫入保護頁的項目,藉由清除該項目中之該版本、或者改變該版本以致其將不匹配。
於某些實施例中,該指令可明確地指明、或者指示暫存器(例如,通用暫存器967之一),其係用以儲存遷移版本陣列槽(其將具有待被改變或無效化之寫入保護頁的版本989)之有效位址或其他指示976。當作一特定範例,於Intel® SGX實施方式實施例中,隱含通用暫存器RDX可儲存遷移版本陣列槽之有效位址,雖然本發明之範圍未如此限制。於其他實施例中,版本資訊可被儲存於其他類型的頁中、於其他結構中(例如,記憶體中之保護結構、晶粒上之保護結構,等等)。
有利地,此可協助提供額外的安全性,因為可僅有寫入保護頁之一真實副本或版本。當寫入保護頁變髒或被修改,則寫入保護頁之其他副本可被無效化以致該頁之髒的或修改的副本為該頁之唯一真實副本或版本。此可協助保護免於加密頁之重播。替代地,可能針對既定實施方式不欲或不想要提供此保護,且該些副本之此無效化可選擇性地被省略。此外,除了使用版本資訊以外,亦考量無效化保護容器外部之頁的副本之其他方式。
於某些實施例中,在無效化保護容器外部之頁的副本以前,執行單元可選擇性地操作以履行一或更多安全性或
驗證檢查。如圖所示,執行單元可包括安全性檢查單元983。於某些實施例中,安全性檢查單元可操作以檢查或驗證其正確的寫入保護頁被無效化。例如,執行單元可操作以將該頁之版本與被無效化的頁之版本進行比較以確保其正確版本資訊被清除或者改變。該指令可選擇性地失敗,假如該頁為無效的或假如該版本不吻合版本頁中所儲存之值。替代地,於其他實施例中,此安全性或驗證檢查可選擇性地被省略(例如,可能不需要、可由另一指令所履行,等等)。
於某些實施例中,處理器之解碼器亦可選擇性地操作以解碼保護容器版本頁或結構產生指令(例如,圖6中之指令653)。於某些實施例中,保護容器版本頁或結構產生指令可明確地指明、或者指示暫存器(例如,通用暫存器),其係用以儲存保護容器記憶體中之頁的有效位址或其他指示。於某些實施例中,該頁可為無效頁,其得以被用於新的頁。處理器亦可包括執行單元,其可操作(回應於該指令)以產生用來保持版本資訊之版本頁或結構。於某些實施例中,版本頁可被產生於保護容器記憶體中,在保護容器記憶體之指示頁上(例如,在指示的有效位址上)。於某些實施例中,此可包括歸零出該頁。於某些實施例中,版本頁可為一種特殊類型的頁,其係專用於儲存頁之版本資訊,其中加密副本係針對該些頁而被儲存出保護容器記憶體但該些頁以有效且可讀取的狀態保持儲存於該保護容器記憶體中。於某些實施例中,該儲存的頁可為
空白頁,其中版本資訊可後續地被儲存入該空白頁(例如,藉由不同指令)。於某些實施例中,執行單元(回應於該指令)亦可初始化或組態保護容器頁元資料結構(PCPMS)之一或更多項目、欄位、或其他部分,諸如(例如)EPCM。舉例而言,此可包括:指示其該頁為一種版本類型的頁、設定該頁為有效、及組態針對該頁之讀取-寫入-執行許可。
處理器核心可被實施以不同方式、用於不同目的、以及於不同處理器中。例如,此類核心之實施方式可包括:1)用於通用計算之通用依序核心;2)用於通用計算之高性能通用失序核心;3)主要用於圖形及/或科學(通量)計算之特殊用途核心。不同處理器之實施方式可包括:1)CPU,其包括用於通用計算之一或更多通用依序核心及/或用於通用計算之一或更多通用失序核心;及2)核心處理器,其包括主要用於圖形及/或科學(通量)之一或更多特殊用途核心。此等不同處理器導致不同的電腦系統架構,其可包括:1)在來自該CPU之分離晶片上的共處理器;2)在與CPU相同的封裝中之分離晶粒上的共處理器;3)在與CPU相同的晶粒上的共處理器(於該情況下,此一處理器有時被稱為特殊用途邏輯,諸如集成圖形及/或科學(通量)邏輯、或稱為特殊用途核心);及4)在一可包括於相同晶粒上之所述CPU(有時稱為應用程式
核心或應用程式處理器)、上述共處理器、及額外功能的晶片上之系統。範例核心架構被描述於下,接續著範例處理器及電腦架構之描述。
圖10A為闡明範例依序管線及範例暫存器重新命名、失序發送/執行管線兩者之方塊圖,依據本發明之實施例。圖10B為一方塊圖,其闡明將包括於依據本發明之實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名、失序發送/執行架構核心兩者。圖10A-B中之實線方盒係闡明依序管線及依序核心,而虛線方盒之選擇性加入係闡明暫存器重新命名、失序發送/執行管線及核心。假設其依序形態為失序形態之子集,將描述失序形態。
於圖10A中,處理器管線1000包括提取級1002、長度解碼級1004、解碼級1006、配置級1008、重新命名級1010、排程(亦已知為分派或發送)級1012、暫存器讀取/記憶體讀取級1014、執行級1016、寫入回/記憶體/寫入級1018、例外處置級1022、及確定級1024。
圖10B顯示處理器核心1090,其包括一耦合至執行單元引擎單元1050之前端單元1030,且兩者均耦合至記憶體單元1070。核心1090可為減少指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元
(VLIW)核心、或者併合或替代核心類型。當作又另一種選擇,核心1090可為特殊用途核心,諸如(例如)網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,等等。
前端單元1030包括一分支預測單元1032,其係耦合至指令快取單元1034,其係耦合至指令轉譯後備緩衝(TLB)1036,其係耦合至指令提取單元1038,其係耦合至解碼單元1040。解碼單元1040(或解碼器)可解碼指令;並可將以下產生為輸出:一或更多微操作、微碼進入點、微指令、其他指令、或其他控制信號,其被解碼自(或者反應)、或被衍生自原始指令。解碼單元1040可使用各種不同的機制來實施。適當機制之範例包括(但不限定於)查找表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM),等等。於一實施例中,核心1090包括微碼ROM或者儲存用於某些巨指令之微碼的其他媒體(例如,於解碼單元1040中或者於前端單元1030內)。解碼單元1040被耦合至執行引擎單元1050中之重新命名/配置器單元1052。
執行引擎單元1050包括重新命名/配置器單元1052,其係耦合至撤回單元1054及一組一或更多排程器單元1056。排程器單元1056代表任何數目的不同排程器,包括保留站、中央指令窗,等等。排程器單元1056被耦合至實體暫存器檔單元1058。實體暫存器檔單元1058之各者代表一或更多實體暫存器檔,其不同者係儲存一或更多
不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為下一待執行指令之位址的指令指標),等等。於一實施例中,實體暫存器檔單元1058包含向量暫存器單元、寫入遮蔽暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮蔽暫存器、及通用暫存器。實體暫存器檔單元1058係由撤回單元1054所重疊以闡明其中暫存器重新命名及失序執行可被實施之各種方式(例如,使用記錄器緩衝器和撤回暫存器檔;使用未來檔、歷史緩衝器、和撤回暫存器檔;使用暫存器映圖和暫存器池,等等)。撤回單元1054及實體暫存器檔單元1058被耦合至執行叢集1060。執行叢集1060包括一組一或更多執行單元1062及一組一或更多記憶體存取單元1064。執行單元1062可履行各種操作(例如,偏移、相加、相減、相乘)以及於各種類型的資料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括數個專屬於特定功能或功能集之執行單元,但其他實施例可包括僅一個執行單元或者全部履行所有功能之多數執行單元。排程器單元1056、實體暫存器檔單元1058、及執行叢集1060被顯示為可能複數的,因為某些實施例係針對某些類型的資料/操作產生分離的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有本身的排程器單元、實體暫存器檔單元、及/或執行叢集-且
於分離記憶體存取管線之情況下,某些實施例被實施於其中僅有此管線之執行叢集具有記憶體存取單元1064)。亦應理解:當使用分離管線時,這些管線之一或更多者可為失序發送/執行而其他者為依序。
該組記憶體存取單元1064被耦合至記憶體單元1070,其包括資料TLB單元1072,其耦合至資料快取單元1074,其耦合至第二階(L2)快取單元1076。於一範例實施例中,記憶體存取單元1064可包括載入單元、儲存位址單元、及儲存資料單元,其各者係耦合至記憶體單元1070中之資料TLB單元1072。指令快取單元1034被進一步耦合至記憶體單元1070中之第二階(L2)快取單元1076。L2快取單元1076被耦合至一或更多其他階的快取且最終至主記憶體。
舉例而言,範例暫存器重新命名、失序發送/執行核心架構可實施管線1000如下:1)指令提取1038履行提取和長度解碼級1002和1004;2)解碼單元1040履行解碼級1006;3)重新命名/配置器單元1052履行配置級1008和重新命名級1010;4)排程器單元1056履行排程級1012;5)實體暫存器檔單元1058和記憶體單元1070履行暫存器讀取/記憶體讀取級1014;執行叢集1060履行執行級1016;6)記憶體單元1070和實體暫存器檔單元1058履行寫入回/記憶體寫入級1018;7)各個單元可參與例外處置級1022;及8)撤回單元1054和實體暫存器檔單元1058履行確定級1024。
核心1090可支援一或更多指令集(例如,x86指令集,具有其已被加入以較新版本之某些延伸);MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有諸如NEON之選擇性額外延伸),包括文中所述之指令。於一實施例中,核心1090包括支援緊縮資料指令集延伸(例如,AVX1、AVX2)之邏輯,藉此容許由許多多媒體應用程式所使用的操作使用緊縮資料來履行。
應理解:核心可支援多線程(執行二或更多平行組的操作或線緒),並可以多種方式執行,包括時間切割多線程、同時多線程(其中單一實體核心提供邏輯核心給其實體核心正同時地多線程之每一線緒)、或者其組合(例如,時間切割提取和解碼以及之後的同時多線程,諸如Intel® Hyperthreading科技)。
雖然暫存器重新命名被描述於失序執行之背景,但應理解其暫存器重新命名可被使用於依序架構。雖然處理器之所述的實施例亦包括分離的指令和資料快取單元1034/1074以及共享L2快取單元1076,但替代實施例可具有針對指令和資料兩者之單一內部快取,諸如(例如)第一階(L1)內部快取、或多階內部快取。於某些實施例中,該系統可包括內部快取與外部快取之組合,該外部快取是位於核心及/或處理器之外部。替代地,所有快取可於核心及/或處理器之外部。
圖11A-B闡明更特定的範例依序核心架構之方塊圖,該核心將為晶片中之數個邏輯區塊之一(包括相同類型及/或不同類型之其他核心)。邏輯區塊係透過高頻寬互連網路(例如,環狀網路)來通訊,利用某些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯,根據其應用而定。
圖11A為單處理器核心之方塊圖,連同與晶粒上互連網路1102之其連接、以及第二階(L2)快取1104之其本地子集,依據本發明之實施例。於一實施例中,指令解碼器1100支援具有緊縮資料指令集延伸之x86指令集。L1快取1106容許針對快取記憶體之低潛時存取入純量及向量單元。雖然於一實施例中(為了簡化設計),純量單元1108及向量單元1110使用分離的暫存器組(個別地,純量暫存器11112及向量暫存器1114),且於其間轉移的資料被寫入至記憶體並接著從第一階(L1)快取1106被讀取回;但本發明之替代實施例可使用不同的方式(例如,使用單一暫存器組或者包括一通訊路徑,其容許資料被轉移於兩暫存器檔之間而不被寫入及讀取回)。
L2快取1104之本地子集為其被劃分為分離本地子集(每一處理器核心有一個)之總體L2快取的部分。各處理器核心具有一直接存取路徑通至L2快取1104之其本身的本地子集。由處理器核心所讀取的資料被儲存於其L2快取子集1104中且可被快速地存取,平行於存取其本身
本地L2快取子集之其他處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取子集1104中且被清除自其他子集,假如需要的話。環狀網路確保共享資料之一致性。環狀網路為雙向的,以容許諸如處理器核心、L2快取及其他邏輯區塊等代理於晶片內部彼此通訊。各環狀資料路徑於每方向為1012位元寬。
圖11B為圖11A中之處理器核心的部分之延伸視圖,依據本發明之實施例。圖11B包括L1快取1104之L1資料快取1106A部分、以及有關向量單元1110和向量暫存器1114之更多細節。明確地,向量單元1110為16寬的向量處理單元(VPU)(參見16寬的ALU 1128),其係執行整數、單精確度浮點、及雙精確度浮點指令之一或更多者。VPU支援以拌合單元1120拌合暫存器輸入、以數字轉換單元1122A-B之數字轉換、及於記憶體輸入上以複製單元1124之複製。寫入遮蔽暫存器1126容許斷定結果向量寫入。
圖12為一種處理器1200之方塊圖,該處理器1200可具有多於一個核心、可具有集成記憶體控制器、且可具有集成圖形,依據本發明之實施例。圖12中之實線方塊闡明處理器1200,其具有單核心1202A、系統代理1210、一組一或更多匯流排控制器單元1216;而虛線方塊之選擇性加入闡明一替代處理器1200,其具有多核心
1202A-N、系統代理單元1210中之一組一或更多集成記憶體控制器單元1214、及特殊用途邏輯1208。
因此,處理器1200之不同實施方式可包括:1)CPU,具有其為集成圖形及/或科學(通量)邏輯(其可包括一或更多核心)之特殊用途邏輯1208、及其為一或更多通用核心(例如,通用依序核心、通用失序核心、兩者之組合)之核心1202A-N;2)共處理器,具有其為主要用於圖形及/或科學(通量)之大量特殊用途核心的核心1202A-N;及3)共處理器,具有其為大量通用依序核心的核心1202A-N。因此,處理器1200可為通用處理器、共處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多數集成核心(MIC)共處理器(包括30或更多核心)、嵌入式處理器,等等。該處理器可被實施於一或更多晶片上。處理器1200可為一或更多基底之部分及/或可被實施於其上,使用數個製程技術之任一者,諸如(例如)BiCMOS、CMOS、或NMOS。
記憶體階層包括該些核心內之一或更多階快取、一組或者一或更多共享快取單元1206、及耦合至該組集成記憶體控制器單元1214之額外記憶體(未顯示)。該組共享快取單元1206可包括一或更多中階快取,諸如第二階(L2)、第三階(L3)、第四階(L4)、或其他階快取、最後階快取(LLC)、及/或其組合。雖然於一實施例中環狀為基的互連單元1212將以下裝置互連:集成圖形
邏輯1208、該組共享快取單元1206、及系統代理單元1210/集成記憶體單元1214,但替代實施例可使用任何數目之眾所周知的技術以互連此等單元。於一實施例中,一致性被維持於一或更多快取單元1206與核心1202-A-N之間。
於某些實施例中,一或更多核心1202A-N能夠進行多線程。系統代理1210包括協調並操作核心1202A-N之那些組件。系統代理單元1210可包括(例如)電力控制單元(PCU)及顯示單元。PCU可為或者包括用以調節核心1202A-N及集成圖形邏輯1208之電力狀態所需的邏輯和組件。顯示單元係用以驅動一或更多外部連接的顯示。
核心1202A-N可針對架構指令集為同質的或異質的;亦即,二或更多核心1202A-N可執行相同的指令集,而其他者可執行該指令集或不同指令集之僅一子集。
圖13-21為範例電腦架構之方塊圖。用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置之技術中已知的其他系統設計和組態亦為適當的。通常,能夠結合處理器及/或其他執行邏輯(如文中所揭露者)之多種系統或電子裝置
為一般性適當的。
現在參考圖13,其顯示依據本發明之一實施例的系統1300之方塊圖。系統1300可包括一或更多處理器1310、1315,其被耦合至控制器集線器1320。於一實施例中,控制器集線器1320包括圖形記憶體控制器集線器(GMCH)1390及輸入/輸出集線器(IOH)1350(其可於分離的晶片上);GMCH 1390包括記憶體及圖形控制器(耦合至記憶體1340及共處理器1345);IOH 1350為通至GMCH 1390之耦合輸入/輸出(I/O)裝置1360。另一方面,記憶體與圖形控制器之一或兩者被集成於處理器內(如文中所述者),記憶體1340及共處理器1345被直接地耦合至處理器1310、及具有IOH 1350之單一晶片中的控制器集線器1320。
額外處理器1315之選擇性本質於圖13中被標示以斷線。各處理器1310、1315可包括文中所述的處理核心之一或更多者並可為處理器1200之某版本。
記憶體1340可為(例如)動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1320經由諸如前側匯流排(FSB)等多點分支匯流排、諸如QuickPath互連(QPI)等點對點介面、或類似連接1395而與處理器1310、1315通訊。
於一實施例中,共處理器1345為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、
壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。於一實施例中,控制器集線器1320可包括集成圖形加速器。
於實體資源1310、1315間可有多樣差異,針對價值矩陣之譜,包括架構、微架構、熱、功率耗損特性,等等。
於一實施例中,處理器1310執行其控制一般類型之資料處理操作的指令。指令內所嵌入者可為共處理器指令。處理器1310辨識這些共處理器指令為其應由裝附之共處理器1345所執行的類型。因此,處理器1310將共處理器匯流排或其他互連上之這些共處理器指令(或代表共處理器指令之控制信號)發送至共處理器1345。共處理器1345接受並執行該些接收的共處理器指令。
現在參考圖14,其顯示依據本發明之實施例的第一更特定範例系統1400之方塊圖。如圖14中所示,多處理器系統1400為點對點互連系統,並包括經由點對點互連1450而耦合之第一處理器1470及第二處理器1480。處理器1470及1480之每一者可為處理器1200之某版本。於本發明之一實施例中,處理器1470及1480個別為處理器1310及1315,而共處理器1438為共處理器1345。於另一實施例中,處理器1470及1480個別為處理器1310及共處理器1345。
處理器1470及1480被顯示為個別地包括集成記憶體控制器(IMC)單元1472及1482。處理器1470亦包括其
匯流排控制器單元點對點(P-P)介面1476及1478之部分;類似地,第二處理器1480包括P-P介面1486及1488。處理器1470、1480可使用P-P介面電路1478、1488而經由點對點(P-P)介面1450來交換資訊。如圖14中所示,IMC 1472及1482將處理器耦合至個別記憶體,亦即記憶體1432及記憶體1434,其可為本地地裝附至個別處理器之主記憶體的部分。
處理器1470、1480可各經由個別的P-P介面1452、1454而與晶片組1490交換資訊,使用點對點介面電路1476、1494、1486、1498。晶片組1490可經由高性能介面1439而選擇性地與共處理器1438交換資訊。於一實施例中,共處理器1438為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。
共享快取(未顯示)可被包括於任一處理器中或者於兩處理器外部,而經由P-P互連與處理器連接,以致處理器之任一者或兩者的本地快取資訊可被儲存於共享快取中,假如處理器被置於低功率模式時。
晶片組1490可經由一介面1496而被耦合至第一匯流排1416。於一實施例中,第一匯流排1416可為周邊組件互連(PCI)匯流排、或者諸如PCI快速匯流排或其他第三代I/O互連匯流排等匯流排,雖然本發明之範圍未如此限制。
如圖14中所示,各種I/O裝置1414可被耦合至第一
匯流排1416,連同匯流排橋1418,其係將第一匯流排1416耦合至第二匯流排1420。於一實施例中,一或更多額外處理器1415(諸如共處理器、高通量MIC處理器、GPGPU加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任何其他處理器)被耦合至第一匯流排1416。於一實施例中,第二匯流排1420可為低管腳數(LPC)匯流排。各個裝置可被耦合至第二匯流排1420,其包括(例如)鍵盤/滑鼠1422、通訊裝置1427、及資料儲存單元1428,諸如磁碟機或其他大量儲存裝置(其可包括指令/碼及資料1430),於一實施例中。此外,音頻I/O 1424可被耦合至第二匯流排1420。注意:其他架構是可能的。例如,取代圖14之點對點架構,系統可實施多點分支匯流排其他此類架構。
現在參考圖15,其顯示依據本發明之實施例的第二更特定範例系統1500之方塊圖。圖14與15中之類似元件具有類似的參考數字,且圖14之某些形態已從圖15省略以免混淆圖15之其他形態。
圖15闡明其處理器1470、1480可包括集成記憶體及I/O控制邏輯(「CL」)1472和1482,個別地。因此,CL 1472、1482包括集成記憶體控制器單元並包括I/O控制邏輯。圖15闡明其不僅記憶體1432、1434被耦合至CL 1472、1482,同時其I/O裝置1514亦被耦合至控制邏輯1472、1482。舊有I/O裝置1515被耦合至晶片組
1490。
現在參考圖16,其顯示依據本發明之一實施例的SoC 1600之方塊圖。圖12中之類似元件具有類似的參考數字。同時,虛線方塊為更多先進SoC上之選擇性特徵。於圖16中,互連單元1602被耦合至:應用程式處理器1610,其包括一組一或更多核心152A-N及共享快取單元1206;系統代理單元1210;匯流排控制器單元1216;集成記憶體控制器單元1214;一組一或更多共處理器1620,其可包括集成圖形邏輯、影像處理器、音頻處理器、及視頻處理器;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;及顯示單元1640,用以耦合至一或更多外部顯示。於一實施例中,共處理器1620包括特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器,等等。
文中所揭露之機制的實施例可被實施以硬體、軟體、韌體、或此等實施方式之組合。本發明之實施例可被實施為電腦程式或程式碼,其被執行於可編程系統上,該可編程系統包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼(諸如圖14中所示之碼1430)可被應用於輸入指令以履行文中所述之功能並產生輸出資訊。輸出資訊可被應用於一或更多輸出裝置,以已知的方式。為了本申
請案之目的,處理系統包括任何系統,其具有處理器,諸如(例如)數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可被實施以高階程序或目標導向的編程語言來與處理系統通訊。程式碼亦可被實施以組合或機器語言,假如想要的話。事實上,文中所述之機制在範圍上不限於任何特定編程語言。於任何情況下,該語言可為編譯或解讀語言。
至少一實施例之一或更多形態可由其儲存在機器可讀取媒體上之代表性指令所實施,該機器可讀取媒體代表處理器內之各個邏輯,當由機器讀取時造成該機器製造邏輯以履行文中所述之技術。此等表示(已知為「IP核心」)可被儲存在有形的、機器可讀取媒體上,且被供應至各個消費者或製造設施以載入其實際上製造該邏輯或處理器之製造機器。
此類機器可讀取儲存媒體可包括(無限制)由機器或裝置所製造或形成之物件的非暫態、有形配置,包括:儲存媒體,諸如硬碟、包括軟碟、光碟、微型碟唯讀記憶體(CD-ROM)、微型碟可再寫入(CD-RW)、及磁光碟等任何其他類型的碟片;半導體裝置,諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)等隨機存取記憶體(RAM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相位改變記憶
體(PCM)、磁或光學卡、或者適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)等設計資料之非暫態、有形的機器可讀取媒體,該硬體描述語言(HDL)係定義文中所述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
於某些情況下,指令轉換器可被用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態二元翻譯、動態二元翻譯,包括動態編譯)、變形、仿真、或者轉換至一或更多其他指令以供由核心所處理。指令轉換器可被實施以軟體、硬體、韌體、或其組合。指令轉換器可位於處理器上、處理器外、或者部分於處理器上而部分於處理器外。
圖17為一種對照軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據本發明之實施例。於所述之實施例中,指令轉換器為一種軟體指令轉換器,雖然替代地該指令轉換器亦可被實施以軟體、韌體、硬體、或其各種組合。圖17顯示一種高階語言1702之程式可使用x86編譯器1704而被編譯以產生x86二元碼1706,其可由具有至少一x86指令集核心之處理器1716來本機地執行。具有
至少一x86指令集核心之處理器1716代表任何處理器,其可藉由可相容地執行或者處理以下事項來履行實質上如一種具有至少一x86指令集核心之Intel處理器的相同功能:(1)Intel x86指令集核心之指令集的實質部分或者(2)針對運作於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體之物件碼版本,以獲得如具有至少一x86指令集核心之Intel處理器的相同結果。x86編譯器1704代表一種編譯器,其可操作以產生x86二元碼1706(例如,物件碼),其可(具有或沒有額外鏈結處理)被執行於具有至少一x86指令集核心之處理器1716上。類似地,圖17顯示高階語言1702之程式可使用替代的指令集編譯器1708而被編譯以產生替代的指令集二元碼1710,其可由沒有至少一x86指令集核心之處理器1714來本機地執行(例如,具有其執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或其執行ARM Holdings of Sunnyvale,CA之ARM指令集的核心之處理器)。指令轉換器1712被用以將x86二元碼1706轉換為其可由沒有至少一x86指令集核心之處理器1714來本機地執行的碼。已轉換碼不太可能相同於替代的指令集二元碼1710,因為能夠執行此功能之指令很難製造;然而,已轉換碼將完成一般性操作並由來自替代指令集之指令所組成。因此,指令轉換器1712代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其他程序)容許處理器或其他不具有x86指令集處理器或核心的電子
裝置來執行x86二元碼1706。
針對圖5-6之任一者所述之組件、特徵、及細節亦可選擇性地應用於圖7-9之任一者。再者,針對設備之任一者所述之組件、特徵、及細節亦可選擇性地應用於其在實施例中可由及/或以此類設備所履行的方法之任一者。文中所述的處理器之任一者可被包括於文中所揭露的電腦系統之任一者(例如,圖13-16)。於某些實施例中,電腦系統可包括動態隨機存取記憶體(DRAM)。替代地,電腦系統可包括其不需被更新之揮發性記憶體的類型或者快閃記憶體。文中所揭露之指令可被履行以文中所示之任何處理器,其具有文中所示之任何微架構,於文中所示之任何系統上。
於說明書及申請專利範圍中,術語「耦合」及/或「連接」(連同其衍生詞)可被使用。這些術語並非被用為彼此的同義詞。反之,於實施例中,「連接」可被用以指示其二或更多元件係彼此直接地實體及/或電氣接觸。「耦合」可表示二或更多元件係彼此直接地物理及/或電氣接觸。然而,「耦合」亦可表示其二或更多元件不是彼此直接接觸,而仍彼此合作或互動。例如,執行單元可透過一或更多中間組件而與暫存器及/或解碼單元耦合。於圖形中,箭號被用以顯示連接或耦合。
術語「及/或」可已被使用。如文中所使用者,術語「及/或」表示一者或另一者或兩者(例如,A及/或B表示A或B或A與B兩者)。
於以上說明中,已提出數個特定細節以提供實施例之透徹瞭解。然而,其他實施例可被實行而無這些特定的細節。本發明之範圍並非由以上所提供的特定範例來決定,而僅由底下的申請專利範圍來決定。於其他例子中,眾所周知的電路、結構、裝置、及操作已被顯示於方塊圖形式及/或無細節地,以避免妨礙對描述之瞭解。在適當情況下,參考數字、或參考數字之末端部已被重複於圖形中以指示相應的或類似的元件,其可選擇性地具有類似的或相同的特性,除非另有指明或清楚明白的。
某些操作可由硬體組件來履行,或者可被實施以機器可執行或電路可執行指令,其可被用以致使及/或導致以指令編程之機器、電路、或硬體組件(例如,處理器、處理器之部分、電路,等等)履行該些操作。該些操作亦可選擇性地由硬體與軟體之組合來履行。處理器、機器、電路、或硬體可包括特定或特殊的電路或其他邏輯(例如,潛在地與韌體及/或軟體結合之硬體),其可操作以執行及/或處理指令並回應於該指令而儲存結果。
某些實施例包括製造物件(例如,電腦程式產品),其包括機器可讀取媒體。媒體可包括一種機制,其係以可由機器讀取之形式提供(例如,儲存)資訊。機器可讀取媒體可提供(或於其上儲存)指令或指令序列,其(假如及/或當由機器執行時)可操作以致使機器履行及/或導致機器履行文中所揭露的操作、方法、或技術之一。
於某些實施例中,機器可讀取媒體可包括非暫態機器
可讀取儲存媒體。例如,非暫態機器可讀取儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除且可編程ROM(EPROM)、電可抹除且可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相位改變記憶體、相位改變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置,等等。非暫態機器可讀取儲存媒體不包括暫態傳播信號。於某些實施例中,儲存媒體可包括有形媒體,其包括固態物質。
適當機器之範例包括(但不限定於)通用處理器、特殊用途處理器、數位邏輯電路、積體電路,等等。適當機器之又其他範例包括電腦系統或其他電子裝置,其包括處理器、數位邏輯電路、或積體電路。此類電腦系統或電子裝置之範例包括(但不限定於)桌上型電腦、膝上型電腦、筆記型電腦、輸入板電腦、小筆電、智慧型手機、行動電話、伺服器、網路裝置(例如,路由器及開關)、行動網際網路裝置(MID)、媒體播放器、智慧電視、桌上型易網機、機上盒、及視頻遊戲控制器。
遍及本說明書針對「一實施例」、「實施例」、「一或更多實施例」、「某些實施例」(舉例而言)之參考係指示其特定特徵可被包括於本發明之實施中但並不一定必要。類似地,於說明書中,各個特徵有時被組合在一起於
單一實施例、圖形、或其描述中,以供解釋本發明及協助瞭解實施例之各個發明性形態的目的。然而,本發明之方法不應被解讀為反應其本發明需要比各申請專利範圍中所明確記載之更多特徵的企圖。反之,如以下申請專利範圍所反應者,發明性形態在於比單一所揭露實施例之所有特徵更少的特徵。因此,接續著實施方式之申請專利範圍於此被清楚地併入此實施方式中,以各項申請專利範圍本身可獨立成為本發明之一分離的實施例。
下列範例係有關進一步的實施例。範例中之明確細節可被使用於一或更多實施例中的任何地方。
範例1為一種處理器,其包括一用以解碼指令之解碼單元。該指令係用以指示保護容器記憶體之頁,且係用以指示該保護容器記憶體外部之儲存位置。該處理器亦包括一與該解碼單元耦合之執行單元。回應於該指令,該執行單元係用以確保其沒有針對該保護容器記憶體之該頁的可寫入許可被快取於該處理器中,當該保護容器記憶體之該頁具有寫入保護狀態時。該執行單元亦用以加密該保護容器記憶體之該頁的副本。執行單元進一步用以儲存該頁之該加密副本至該保護容器記憶體外部之該指示儲存位置,在已確保其沒有對於該保護容器記憶體之該頁的可寫入參考以後。該執行單元亦用以使該保護容器記憶體之該頁處於該寫入保護狀態,其亦為有效且可讀取的,在該頁之該
加密副本已被儲存至該保護容器記憶體外部之該指示儲存位置以後。
範例2包括範例1之處理器,其中該解碼單元係用以解碼其用以指示已具有該寫入保護狀態之該保護容器記憶體的該頁之該指令。
範例3包括範例1之處理器,其中該執行單元回應於該指令以寫入保護該保護容器記憶體之該指示頁。
範例4包括範例1之處理器,其中該解碼單元係用以解碼其用以指示將位於處理器保留記憶體中之該保護容器記憶體的該頁之該指令,且該指令係用以指示其將位於該處理器保留記憶體外部之該儲存位置。
範例5包括範例1之處理器,其中該執行單元係用以確保其沒有對於該保護容器記憶體之該頁的可寫入參考,藉由確保其被移除自轉譯後備緩衝。
範例6包括範例1至5的任一者之處理器,其中該執行單元回應於該指令以將一具有該寫入保護狀態之該頁的版本儲存於該保護容器記憶體中。
範例7包括範例1至5的任一者之處理器,其中該執行單元回應於該指令以判定其能夠遷移的密鑰結構具有對該保護容器記憶體之該頁的控制,在該頁之該加密副本被儲存至該指示儲存位置以前,其中該能夠遷移的密鑰結構係用以具有一或更多能夠遷移的密碼密鑰。
範例8包括範例1至5的任一者之處理器,其中該解碼單元係用以解碼其用以指示頁元資料結構之該指令。該
執行單元回應於該指令以將相應於該指示頁之元資料儲存於該頁元資料結構中。該元資料係用以包括複數頁類型、修改狀態、讀取許可狀態、寫入許可狀態、及執行許可狀態,其所有係相應於該指示頁,於該頁元資料結構中。
範例9包括範例1至5的任一者之處理器,其中該解碼單元係用以解碼其用以指示其應為指定位址空間頁快取中之指定位址空間頁的該保護容器記憶體之該頁的該指令。
範例10包括範例1至5的任一者之處理器,其中該解碼單元係用以解碼其用以具有隱含通用暫存器之該指令,該隱含通用暫存器係用以具有該保護容器記憶體之該頁的指示。
範例11包括範例1至5的任一者之處理器,其中該解碼單元係用以解碼其應為特權等級指令之該指令。
範例12為一種履行自處理器中之一至三個機器指令的方法,用以履行包括以下之操作:寫入保護保護容器記憶體之頁、確保其沒有針對該保護容器記憶體之該頁的可寫入許可被快取於該處理器中、及加密該保護容器記憶體之該頁的副本。該些操作亦包括:儲存該保護容器記憶體之該頁的該加密副本至一位於該保護容器記憶體外部之儲存位置,在該確保其沒有對於該保護容器記憶體之該寫入保護頁的可寫入參考以後;以及使該保護容器記憶體之該寫入保護頁處於有效且可讀取狀態,在該儲存該保護容器記憶體之該頁的該加密副本至位於該保護容器記憶體外部
之該儲存位置以後。
範例13包括範例12之方法,進一步包括讀取該寫入保護頁,在該儲存該頁之該加密副本至該儲存位置以後。
範例14包括範例12之方法,其中該寫入保護該頁包括組態保護容器頁元資料結構中之寫入保護指示以指示其該頁被寫入保護,其中該保護容器頁元資料結構係儲存針對該寫入保護頁之安全性元資料。
範例15包括範例14之方法,其中該組態該保護容器頁元資料結構中之該寫入保護指示包括設定指定位址空間頁快取映圖中之寫入保護位元。
範例16包括範例12之方法,進一步包括:對於該保護容器記憶體之該寫入保護頁的嘗試寫入;寫入未保護該保護容器記憶體之該頁;及無效化位於該保護容器記憶體外部之該儲存位置中所儲存的該頁之該加密副本。
範例17包括範例12之方法,其中該寫入保護係回應於履行該些機器指令之第一個而被履行,且其中該加密、該確保、該儲存、及該使處於係回應於履行該些機器指令之第二個而被履行。
範例18為一種用以處理指令之系統,其包括互連、及一與該互連耦合之處理器。該處理器係用以接收一指令,該指令係用以指示保護容器記憶體之頁;且係用以指示該保護容器記憶體外部之儲存位置。該處理器係回應於該指令以確保其沒有對於該保護容器記憶體之該頁的可寫入參考,當該保護容器記憶體之該頁具有寫入保護狀態
時;並加密該保護容器記憶體之該頁的副本。該處理器亦用以儲存該頁之該加密副本至該保護容器記憶體外部之該指示儲存位置,在已確保其沒有對於該保護容器記憶體之該頁的可寫入參考以後;並使該保護容器記憶體之該頁處於該寫入保護狀態,其亦為有效且可讀取的,在該頁之該加密副本已被儲存至該保護容器記憶體外部之該指示儲存位置以後。該系統亦包括與該互連耦合之動態隨機存取記憶體(DRAM)。
範例19包括範例18之系統,其中該處理器係用以接收其用以指示已具有該寫入保護狀態之該保護容器記憶體的該頁之該指令。
範例20為一種包括非暫態機器可讀取儲存媒體之製造物件。該非暫態機器可讀取儲存媒體係儲存自一至三個機器指令,假如由機器所執行則該些機器指令係用以致使該機器履行包括以下之操作:寫入保護保護容器記憶體之頁;及確保其沒有對於該保護容器記憶體之該寫入保護頁的可寫入參考。該些操作亦包括:加密該保護容器記憶體之該頁的副本;及儲存該保護容器記憶體之該頁的該加密副本至一位於該保護容器記憶體外部之儲存位置,在該確保其沒有對於該保護容器記憶體之該寫入保護頁的可寫入參考以後。該些操作亦包括使該保護容器記憶體之該寫入保護頁處於有效且可讀取狀態,在該儲存該保護容器記憶體之該頁的該加密副本至位於該保護容器記憶體外部之該儲存位置以後。
範例21包括範例18之製造物件,其中該非暫態機器可讀取儲存媒體進一步儲存自一至兩個機器指令,假如由機器所執行則該些機器指令係用以致使該機器履行包括以下之操作:寫入未保護該保護容器記憶體之該頁,在檢測到對於該保護容器記憶體之該寫入保護頁的嘗試寫入以後;及無效化位於該保護容器記憶體外部之該儲存位置中所儲存的該頁之該加密副本。
範例22為一種處理器,其包括一用以解碼保護容器頁寫入保護指令之解碼單元。該指令係用以指示保護容器記憶體之頁。該處理器亦包括一與該解碼單元耦合之執行單元。該執行單元係回應於該保護容器頁寫入保護指令以寫入保護該保護容器記憶體之該指示頁。
範例23包括範例22之處理器,其中該執行單元係藉由寫入保護指示器之組態以寫入保護該指示頁,該寫入保護指示器係相應於該指示頁,於一用以儲存該指示頁之元資料的保護容器頁元資料結構中。
範例24包括範例23之方法,其中該執行單元係藉由指定位址空間頁快取映圖中之寫入保護位元的組態以寫入保護該指示頁。
範例25包括範例22至24的任一者之處理器,其中該執行單元回應於該指令以判定其能夠遷移的密鑰結構具有對該保護容器記憶體之該頁的控制,在該頁被寫入保護以前,其中該能夠遷移的密鑰結構係用以具有一或更多能夠遷移的密碼密鑰。
範例26包括範例22至24的任一者之處理器,其中該解碼單元係用以解碼其用以具有隱含暫存器之該指令,該隱含暫存器係用以具有該硬體執行的保護容器記憶體之該頁的有效位址。
範例27為一種處理器,其包括一用以解碼保護容器頁寫入未保護及副本無效化指令之解碼單元。該指令係用以指示保護容器記憶體之頁。該處理器亦包括一與該解碼單元耦合之執行單元。該執行單元回應於該指令以寫入未保護該保護容器記憶體之該指示頁;並無效化其應位於該保護容器記憶體外部之該保護容器記憶體的該頁之任何副本。
範例28包括範例27之處理器,其中該解碼單元係用以解碼其用以指示版本資訊之該指令,且其中該執行單元係用以藉由改變該指示的版本資訊來無效化該頁之該些任何副本。
範例29包括範例28之處理器,其中版本資訊係用以被儲存於該保護容器記憶體中。
範例30包括範例27至29的任一者之處理器,其中該執行單元回應於該指令以藉由保護容器頁元資料結構中之該寫入保護指示器的組態來寫入未保護該指示頁,該保護容器頁元資料結構係用以儲存該保護容器記憶體之頁的安全性元資料。
範例31包括範例1至11的任一者之處理器,進一步包括用以預測分支之選擇性分支預測單元、及與該分支預
測單元耦合之選擇性指令預提取單元,該指令預提取單元係用以預提取包括該指令之指令。該處理器亦可選擇性地包括:與該指令預提取單元耦合之第1階(L1)指令快取、用以儲存資料之選擇性L1資料快取、及用以儲存資料和指令之選擇性第2階(L2)快取,該L1指令快取係用以儲存指令。該處理器亦可包括與該解碼單元、該L1指令快取、及該L2快取耦合之指令提取單元,用以(於某些情況下)從該L1指令快取與該L2快取之一提取該指令;並提供該指令至該解碼單元。該處理器亦可選擇性地包括:暫存器重新命名單元,用以重新命名暫存器、選擇性排程器,用以排程一或更多已從該指令所解碼的操作以供執行、及選擇性確認單元,用以確認該指令之執行結果。
範例32為一種用以履行或者可操作以履行範例12至17的任一者之方法的處理器或其他設備。
範例33為一種包括用以履行範例12至17的任一者之方法的機構之處理器或其他設備。
範例34為一種包括選擇性非暫態機器可讀取媒體之製造物件,該機器可讀取媒體係選擇性地儲存或者提供指令,假如及/或當由處理器、電腦系統、電子裝置、或其他機器所執行時,則該指令係操作以致使該機器履行範例12至17的任一者之方法。
範例35為一種實質上如文中所述的處理器或其他設備。
範例36為一種可操作以履行實質上如文中所述的任何方法之處理器或其他設備。
範例37為一種用以履行(例如,其具有組件以履行或其可操作以履行)實質上如文中所述之任何指令的處理器或其他設備。
範例38為一種電腦系統或其他電子裝置,其包括具有用以解碼第一指令集之指令的解碼單元之處理器。該處理器亦具有一或更多執行單元。該電子裝置亦包括與該處理器耦合之儲存裝置。該儲存裝置係用以儲存第一指令,該第一指令可為實質上如文中所揭露之任何指令,且其係屬於第二不同的指令集。該儲存裝置亦用以儲存將該第一指令轉換為該第一指令集之一或更多指令的指令。當由該處理器履行時,該第一指令集之該些一或更多指令係用以致使該處理器仿真該第一指令。
100:來源電腦系統
102:正規記憶體
103:特權系統軟體
104:保護容器即時遷移模組
105:保護容器利用領域
106:保護容器記憶體
107:保護容器
108:頁
109:保護容器頁元資料結構(PCPMS)
110:密鑰管理者保護容器
111:其他結構
112:處理器
113:指令集
114:一或更多指令
115:快取
116:保護容器邏輯
117:存取控制邏輯
118:密碼單元
119:邏輯
120:中間網路
121:目的地電腦系統
122:已遷移保護容器
Claims (12)
- 一種系統單晶片,包含:解碼器,用以將指令解碼;電路,用以回應於該指令來存取控制結構,該控制結構用於儲存能夠從該來源電腦系統遷移到目的地電腦系統的複數個密碼密鑰;密碼單元,回應於該指令,用以:利用第一密碼密鑰將資料的副本解密,該資料將在虛擬機器的加密部分內;以及利用與該第一密碼密鑰不同的第二密碼密鑰將該資料的該解密副本加密;以及記憶體控制器,回應於該指令,將由該密碼單元加密後的該資料的該加密副本儲存到該虛擬機器的該加密部分外部的記憶體位置,作為該虛擬機器從該來源電腦系統遷移到該目的地電腦系統的一部分,其中該系統單晶片在該資料的該加密副本已儲存到該虛擬機器的該加密部分外部的該記憶體位置後,使該虛擬機器的該加密部分內的該資料有效且可讀取。
- 如請求項1的系統單晶片,其中該系統單晶片係回應於該指令基於該資料的該副本來執行訊息鑑別碼計算。
- 如請求項1或2的系統單晶片,其中該控制結構還用於儲存加密元資料。
- 如請求項1的系統單晶片,其中該系統 單晶片係用以回應於該指令在該虛擬機器的該加密部分內的該資料具有寫入保護狀態時透過確保該虛擬機器的該加密部分內的該資料的所有轉譯已從該處理器的所有轉譯後備緩衝清除來確保沒有針對該資料的可寫入許可被快取於該系統單晶片的處理器中。
- 一種將資料從來源電腦系統的虛擬機器的加密部分傳輸到該虛擬機器的該加密部分外部的記憶體位置的方法,包含:回應於指令來存取控制結構,該控制結構儲存能夠從該來源電腦系統遷移到目的地電腦系統的複數個密碼密鑰;回應於該指令,利用第一密碼密鑰將資料的副本解密,該資料儲存在虛擬機器的加密部分內;以及回應於該指令,利用與該第一密碼密鑰不同的第二密碼密鑰將該資料的該解密副本加密;回應於該指令,將該資料的該加密副本儲存到該虛擬機器的該加密部分外部的該記憶體位置;以及在該資料的該加密副本儲存到該虛擬機器的該加密部分外部的該記憶體位置後,使該虛擬機器的該加密部分內儲存的該資料有效且可讀取。
- 如請求項5的方法,包含回應於該指令基於該資料的該副本來執行訊息鑑別碼計算。
- 如請求項5或6的方法,其中該控制結構還用於儲存加密元資料。
- 如請求項5的方法,還包含:回應於該指令在該虛擬機器的該加密部分內的該資料具有寫入保護狀態時透過確保該虛擬機器的該加密部分內的該資料的所有轉譯已從該處理器的所有轉譯後備緩衝清除來確保沒有針對該資料的可寫入許可被快取於該系統單晶片的處理器中。
- 一種系統單晶片,包含:解碼器,用以將指令解碼;電路,用以回應於該指令來存取控制結構,該控制結構用於儲存能夠從該來源電腦系統遷移到目的地電腦系統的複數個密碼密鑰;密碼單元,回應於該指令,用以:利用第一密碼密鑰將資料的副本解密,該資料將在虛擬機器的加密部分內;以及利用與該第一密碼密鑰不同的第二密碼密鑰將該資料的該解密副本加密;以及記憶體控制器,回應於該指令,將由該密碼單元加密後的該資料的該加密副本儲存到該虛擬機器的該加密部分外部的記憶體位置,其中該系統單晶片在該資料的該加密副本已儲存到該虛擬機器的該加密部分外部的該記憶體位置後,使該虛擬機器的該加密部分內的該資料有效且可讀取。
- 如請求項9的系統單晶片,其中該系統單晶片係回應於該指令基於該資料的該副本來執行訊息 鑑別碼計算。
- 如請求項9或10的系統單晶片,其中該控制結構還用於儲存加密元資料。
- 如請求項9的系統單晶片,其中該系統單晶片係用以回應於該指令在該虛擬機器的該加密部分內的該資料具有寫入保護狀態時透過確保該虛擬機器的該加密部分內的該資料的所有轉譯已從該處理器的所有轉譯後備緩衝清除來確保沒有針對該資料的可寫入許可被快取於該系統單晶片的處理器中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/752,227 | 2015-06-26 | ||
US14/752,227 US9710401B2 (en) | 2015-06-26 | 2015-06-26 | Processors, methods, systems, and instructions to support live migration of protected containers |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202110152A TW202110152A (zh) | 2021-03-01 |
TWI751731B true TWI751731B (zh) | 2022-01-01 |
Family
ID=57586209
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105115540A TWI715580B (zh) | 2015-06-26 | 2016-05-19 | 用以支援保護容器的即時遷移之處理器、方法、系統和指令 |
TW110149669A TWI797937B (zh) | 2015-06-26 | 2016-05-19 | 用以支援保護容器的即時遷移之處理器、方法、系統和指令 |
TW109134811A TWI751731B (zh) | 2015-06-26 | 2016-05-19 | 用以支援保護容器的即時遷移之處理器、方法、系統和指令 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105115540A TWI715580B (zh) | 2015-06-26 | 2016-05-19 | 用以支援保護容器的即時遷移之處理器、方法、系統和指令 |
TW110149669A TWI797937B (zh) | 2015-06-26 | 2016-05-19 | 用以支援保護容器的即時遷移之處理器、方法、系統和指令 |
Country Status (5)
Country | Link |
---|---|
US (5) | US9710401B2 (zh) |
EP (2) | EP3314853B1 (zh) |
CN (2) | CN107683480B (zh) |
TW (3) | TWI715580B (zh) |
WO (1) | WO2016209547A1 (zh) |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9870467B2 (en) * | 2015-03-27 | 2018-01-16 | Intel Corporation | Apparatus and method for implementing a forked system call in a system with a protected region |
US9875189B2 (en) | 2015-06-12 | 2018-01-23 | Intel Corporation | Supporting secure memory intent |
US9710401B2 (en) | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
US9996479B2 (en) * | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
US10664179B2 (en) | 2015-09-25 | 2020-05-26 | Intel Corporation | Processors, methods and systems to allow secure communications between protected container memory and input/output devices |
US10579791B2 (en) * | 2016-03-04 | 2020-03-03 | Intel Corporation | Technologies to defeat secure enclave side-channel attacks using fault-oriented programming |
US10210323B2 (en) * | 2016-05-06 | 2019-02-19 | The Boeing Company | Information assurance system for secure program execution |
US9880872B2 (en) * | 2016-06-10 | 2018-01-30 | GoogleLLC | Post-copy based live virtual machines migration via speculative execution and pre-paging |
US10263988B2 (en) * | 2016-07-02 | 2019-04-16 | Intel Corporation | Protected container key management processors, methods, systems, and instructions |
US10261919B2 (en) * | 2016-07-08 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Selective memory encryption |
US10460113B2 (en) * | 2016-08-16 | 2019-10-29 | International Business Machines Corporation | Security fix of a container in a virtual machine environment |
US10346641B2 (en) | 2016-09-23 | 2019-07-09 | Intel Corporation | Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory |
US10911451B2 (en) | 2017-01-24 | 2021-02-02 | Microsoft Technology Licensing, Llc | Cross-platform enclave data sealing |
US10530777B2 (en) | 2017-01-24 | 2020-01-07 | Microsoft Technology Licensing, Llc | Data unsealing with a sealing enclave |
WO2018148923A1 (en) * | 2017-02-17 | 2018-08-23 | Intel Corporation | Application and system fast launch by virtual address area container |
CN108469986B (zh) * | 2017-02-23 | 2021-04-09 | 华为技术有限公司 | 一种数据迁移方法及装置 |
US10509733B2 (en) | 2017-03-24 | 2019-12-17 | Red Hat, Inc. | Kernel same-page merging for encrypted memory |
US10209917B2 (en) | 2017-04-20 | 2019-02-19 | Red Hat, Inc. | Physical memory migration for secure encrypted virtual machines |
US10379764B2 (en) * | 2017-05-11 | 2019-08-13 | Red Hat, Inc. | Virtual machine page movement for encrypted memory |
US11354420B2 (en) | 2017-07-21 | 2022-06-07 | Red Hat, Inc. | Re-duplication of de-duplicated encrypted memory |
US10387686B2 (en) | 2017-07-27 | 2019-08-20 | International Business Machines Corporation | Hardware based isolation for secure execution of virtual machines |
US10296741B2 (en) | 2017-07-27 | 2019-05-21 | International Business Machines Corporation | Secure memory implementation for secure execution of virtual machines |
GB2572183A (en) * | 2018-03-21 | 2019-09-25 | Sutton Philip | Recycling method and taggant for a recyclable product |
US11093272B2 (en) | 2018-06-27 | 2021-08-17 | International Business Machines Corporation | Virtual machine allocation and migration between hardware devices by destroying and generating enclaves using transmitted datafiles and cryptographic keys |
US11397692B2 (en) * | 2018-06-29 | 2022-07-26 | Intel Corporation | Low overhead integrity protection with high availability for trust domains |
US10922123B2 (en) * | 2018-12-12 | 2021-02-16 | Microsoft Technology Licensing, Llc | Container migration in computing systems |
WO2020168479A1 (en) * | 2019-02-20 | 2020-08-27 | Intel Corporation | Apparatus and method for seamless container migration for graphics processors and associated devices |
CN110069261A (zh) * | 2019-05-11 | 2019-07-30 | 肖银皓 | 一种嵌入式软件的可配置分区方法及系统 |
US11409880B2 (en) * | 2019-07-11 | 2022-08-09 | International Business Machines Corporation | Blackbox security for containers |
KR20210016764A (ko) * | 2019-08-05 | 2021-02-17 | 삼성전자주식회사 | 시스템 온 칩 |
US20210096872A1 (en) * | 2019-09-27 | 2021-04-01 | Intel Corporation | Hardware for eliding security checks when deemed safe during speculative execution |
CN111124956B (zh) * | 2019-11-22 | 2023-03-07 | 海光信息技术股份有限公司 | 一种容器保护方法、处理器、操作系统及计算机设备 |
US11614956B2 (en) | 2019-12-06 | 2023-03-28 | Red Hat, Inc. | Multicast live migration for encrypted virtual machines |
US11354151B2 (en) | 2020-02-12 | 2022-06-07 | International Business Machines Corporation | Hardware memory encryption and protection for containers |
JP7389351B2 (ja) * | 2020-03-23 | 2023-11-30 | 富士通株式会社 | 移動対象コンテナ決定方法および移動対象コンテナ決定プログラム |
US12093713B2 (en) * | 2020-04-14 | 2024-09-17 | Research Foundation For The State University Of New York | Systems and methods for live update of operating systems and hypervisors within virtualization systems |
US12026055B2 (en) | 2020-07-13 | 2024-07-02 | Samsung Electronics Co., Ltd. | Storage device with fault resilient read-only mode |
US11570010B2 (en) * | 2020-12-26 | 2023-01-31 | Intel Corporation | ISA accessible physical unclonable function |
US12022013B2 (en) | 2020-12-26 | 2024-06-25 | Intel Corporation | ISA accessible physical unclonable function |
US11700135B2 (en) * | 2020-12-26 | 2023-07-11 | Intel Corporation | ISA accessible physical unclonable function |
US11706039B2 (en) | 2020-12-26 | 2023-07-18 | Intel Corporation | ISA accessible physical unclonable function |
US20220382478A1 (en) * | 2021-06-01 | 2022-12-01 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for page migration in memory systems |
US11734013B2 (en) | 2021-06-17 | 2023-08-22 | International Business Machines Corporation | Exception summary for invalid values detected during instruction execution |
US11269632B1 (en) | 2021-06-17 | 2022-03-08 | International Business Machines Corporation | Data conversion to/from selected data type with implied rounding mode |
US11669331B2 (en) | 2021-06-17 | 2023-06-06 | International Business Machines Corporation | Neural network processing assist instruction |
US11675592B2 (en) | 2021-06-17 | 2023-06-13 | International Business Machines Corporation | Instruction to query for model-dependent information |
US11693692B2 (en) | 2021-06-17 | 2023-07-04 | International Business Machines Corporation | Program event recording storage alteration processing for a neural network accelerator instruction |
US11797270B2 (en) | 2021-06-17 | 2023-10-24 | International Business Machines Corporation | Single function to perform multiple operations with distinct operation parameter validation |
US12079658B2 (en) | 2021-06-17 | 2024-09-03 | International Business Machines Corporation | Detection of invalid machine-specific data types during data conversion |
US20230094125A1 (en) * | 2021-09-24 | 2023-03-30 | Nvidia Corporation | Implementing trusted executing environments across multiple processor devices |
US12019887B2 (en) | 2022-08-16 | 2024-06-25 | Idaho Scientific Llc | System for protecting CPU core by identifying data and instructions |
US20240086556A1 (en) | 2022-09-12 | 2024-03-14 | Idaho Scientific Llc | Computing data and instructions at immutable points |
CN118585290B (zh) * | 2024-08-06 | 2024-10-18 | 北京蓝耘科技股份有限公司 | 容器迁移优化方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200929224A (en) * | 2007-12-31 | 2009-07-01 | Phison Electronics Corp | Data writing method for flash memory and controller thereof |
US20120042034A1 (en) * | 2010-08-13 | 2012-02-16 | Vmware, Inc. | Live migration of virtual machine during direct access to storage over sr iov adapter |
US20120159184A1 (en) * | 2010-12-17 | 2012-06-21 | Johnson Simon P | Technique for Supporting Multiple Secure Enclaves |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070233955A1 (en) * | 2000-01-06 | 2007-10-04 | Super Talent Electronics Inc. | Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces |
CN1215428C (zh) * | 2000-03-21 | 2005-08-17 | 埃利斯·博哈德公司 | 用于提供对安全数据或区域的存取权的装置和方法 |
US9020801B2 (en) * | 2003-08-11 | 2015-04-28 | Scalemp Inc. | Cluster-based operating system-agnostic virtual computing system |
US7325115B2 (en) * | 2003-11-25 | 2008-01-29 | Microsoft Corporation | Encryption of system paging file |
CN101572098B (zh) * | 2004-03-19 | 2013-02-20 | Lg电子株式会社 | 形成、记录和再现记录介质的设备和方法 |
TWI311327B (en) * | 2006-01-26 | 2009-06-21 | Nuvoton Technology Corporatio | Method for page random write and read in the block of flash memory |
US8285958B1 (en) * | 2007-08-10 | 2012-10-09 | Mcafee, Inc. | System, method, and computer program product for copying a modified page table entry to a translation look aside buffer |
US8726042B2 (en) * | 2008-02-29 | 2014-05-13 | Microsoft Corporation | Tamper resistant memory protection |
JP5115332B2 (ja) | 2008-05-22 | 2013-01-09 | 富士通株式会社 | エミュレーションプログラム、エミュレーション装置およびエミュレーション方法 |
US8526605B2 (en) * | 2009-10-09 | 2013-09-03 | Seagate Technology Llc | Data encryption to provide data security and memory cell bit wear leveling |
US9087200B2 (en) | 2009-12-22 | 2015-07-21 | Intel Corporation | Method and apparatus to provide secure application execution |
US9703586B2 (en) * | 2010-02-17 | 2017-07-11 | Microsoft Technology Licensing, Llc | Distribution control and tracking mechanism of virtual machine appliances |
US8656388B2 (en) | 2010-09-30 | 2014-02-18 | Avaya Inc. | Method and apparatus for efficient memory replication for high availability (HA) protection of a virtual machine (VM) |
JP5700481B2 (ja) | 2011-06-29 | 2015-04-15 | インテル・コーポレーション | 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置 |
US9519803B2 (en) | 2012-11-30 | 2016-12-13 | Intel Corporation | Secure environment for graphics processing units |
US9729309B2 (en) | 2012-12-19 | 2017-08-08 | Intel Corporation | Securing data transmission between processor packages |
US9189411B2 (en) | 2012-12-28 | 2015-11-17 | Intel Corporation | Logging in secure enclaves |
US9323686B2 (en) | 2012-12-28 | 2016-04-26 | Intel Corporation | Paging in secure enclaves |
US9747102B2 (en) | 2012-12-28 | 2017-08-29 | Intel Corporation | Memory management in secure enclaves |
US20140189246A1 (en) | 2012-12-31 | 2014-07-03 | Bin Xing | Measuring applications loaded in secure enclaves at runtime |
US9430384B2 (en) | 2013-03-31 | 2016-08-30 | Intel Corporation | Instructions and logic to provide advanced paging capabilities for secure enclave page caches |
US9344219B2 (en) * | 2013-06-25 | 2016-05-17 | Intel Corporation | Increasing communication safety by preventing false packet acceptance in high-speed links |
US8955144B2 (en) | 2013-06-28 | 2015-02-10 | Intel Corporation | Protecting information processing system secrets from debug attacks |
US9563452B2 (en) | 2013-06-28 | 2017-02-07 | Sap Se | Cloud-enabled, distributed and high-availability system with virtual machine checkpointing |
US9698989B2 (en) | 2013-07-23 | 2017-07-04 | Intel Corporation | Feature licensing in a secure processing environment |
US9276750B2 (en) | 2013-07-23 | 2016-03-01 | Intel Corporation | Secure processing environment measurement and attestation |
US20150033034A1 (en) | 2013-07-23 | 2015-01-29 | Gideon Gerzon | Measuring a secure enclave |
US9767044B2 (en) | 2013-09-24 | 2017-09-19 | Intel Corporation | Secure memory repartitioning |
US9471350B2 (en) | 2013-09-26 | 2016-10-18 | Intel Corporation | Live migration of virtualized systems |
CN104598256A (zh) * | 2013-10-30 | 2015-05-06 | 鸿富锦精密工业(武汉)有限公司 | 计算机bios恢复系统及方法 |
US9355262B2 (en) | 2013-12-27 | 2016-05-31 | Intel Corporation | Modifying memory permissions in a secure processing environment |
US9703715B2 (en) | 2013-12-28 | 2017-07-11 | Intel Corporation | Shared memory in a secure processing environment |
US9792448B2 (en) | 2014-02-28 | 2017-10-17 | Advanced Micro Devices, Inc. | Cryptographic protection of information in a processing system |
US9558005B2 (en) | 2014-05-19 | 2017-01-31 | Intel Corporation | Reliable and deterministic live migration of virtual machines |
US10726162B2 (en) | 2014-12-19 | 2020-07-28 | Intel Corporation | Security plugin for a system-on-a-chip platform |
US9710622B2 (en) | 2015-02-23 | 2017-07-18 | Intel Corporation | Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache |
WO2016154786A1 (en) | 2015-03-27 | 2016-10-06 | Intel Corporation | Technologies for virtual machine migration |
US9710401B2 (en) | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
US20160378684A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Multi-page check hints for selective checking of protected container page versus regular page type indications for pages of convertible memory |
US10467048B2 (en) | 2015-06-26 | 2019-11-05 | Intel Corporation | Techniques for virtual machine migration |
US9942035B2 (en) | 2015-08-18 | 2018-04-10 | Intel Corporation | Platform migration of secure enclaves |
US9904805B2 (en) | 2015-09-23 | 2018-02-27 | Intel Corporation | Cryptographic cache lines for a trusted execution environment |
CN107924328B (zh) | 2015-09-25 | 2023-06-06 | 英特尔公司 | 选择虚拟机进行迁移的技术 |
US10353831B2 (en) | 2015-12-24 | 2019-07-16 | Intel Corporation | Trusted launch of secure enclaves in virtualized environments |
US10534724B2 (en) | 2015-12-24 | 2020-01-14 | Intel Corporation | Instructions and logic to suspend/resume migration of enclaves in a secure enclave page cache |
US20170277898A1 (en) | 2016-03-25 | 2017-09-28 | Advanced Micro Devices, Inc. | Key management for secure memory address spaces |
US10176122B2 (en) | 2016-10-19 | 2019-01-08 | Advanced Micro Devices, Inc. | Direct memory access authorization in a processing system |
US20180165224A1 (en) | 2016-12-12 | 2018-06-14 | Ati Technologies Ulc | Secure encrypted virtualization |
-
2015
- 2015-06-26 US US14/752,227 patent/US9710401B2/en active Active
-
2016
- 2016-05-19 TW TW105115540A patent/TWI715580B/zh active
- 2016-05-19 TW TW110149669A patent/TWI797937B/zh active
- 2016-05-19 TW TW109134811A patent/TWI751731B/zh active
- 2016-05-27 EP EP16814991.2A patent/EP3314853B1/en active Active
- 2016-05-27 CN CN201680030029.1A patent/CN107683480B/zh active Active
- 2016-05-27 EP EP19209069.4A patent/EP3641270A1/en active Pending
- 2016-05-27 CN CN202010877325.3A patent/CN111930644B/zh active Active
- 2016-05-27 WO PCT/US2016/034519 patent/WO2016209547A1/en unknown
-
2017
- 2017-07-17 US US15/651,771 patent/US10558588B2/en active Active
-
2019
- 2019-12-27 US US16/729,251 patent/US11055236B2/en active Active
-
2021
- 2021-07-03 US US17/367,349 patent/US11782849B2/en active Active
-
2023
- 2023-10-09 US US18/378,124 patent/US20240184717A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200929224A (en) * | 2007-12-31 | 2009-07-01 | Phison Electronics Corp | Data writing method for flash memory and controller thereof |
US20120042034A1 (en) * | 2010-08-13 | 2012-02-16 | Vmware, Inc. | Live migration of virtual machine during direct access to storage over sr iov adapter |
US20120159184A1 (en) * | 2010-12-17 | 2012-06-21 | Johnson Simon P | Technique for Supporting Multiple Secure Enclaves |
Also Published As
Publication number | Publication date |
---|---|
US10558588B2 (en) | 2020-02-11 |
EP3314853A1 (en) | 2018-05-02 |
CN111930644B (zh) | 2024-08-06 |
TW201713096A (zh) | 2017-04-01 |
US11782849B2 (en) | 2023-10-10 |
TWI715580B (zh) | 2021-01-11 |
CN107683480B (zh) | 2021-12-07 |
US20200142838A1 (en) | 2020-05-07 |
TWI797937B (zh) | 2023-04-01 |
US11055236B2 (en) | 2021-07-06 |
EP3314853A4 (en) | 2019-03-13 |
US20160378688A1 (en) | 2016-12-29 |
CN111930644A (zh) | 2020-11-13 |
WO2016209547A1 (en) | 2016-12-29 |
EP3641270A1 (en) | 2020-04-22 |
TW202110152A (zh) | 2021-03-01 |
CN107683480A (zh) | 2018-02-09 |
US20180004683A1 (en) | 2018-01-04 |
TW202243450A (zh) | 2022-11-01 |
US20210406201A1 (en) | 2021-12-30 |
US9710401B2 (en) | 2017-07-18 |
EP3314853B1 (en) | 2021-10-20 |
US20240184717A1 (en) | 2024-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI751731B (zh) | 用以支援保護容器的即時遷移之處理器、方法、系統和指令 | |
JP7501982B2 (ja) | 信頼ドメインを用いた、仮想化されたシステムにおける分離の提供 | |
US11023622B2 (en) | Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory | |
TWI697804B (zh) | 安全區之平台遷移 | |
EP3757859B1 (en) | Host-convertible secure enclaves in memory that leverage multi-key total memory encryption with integrity | |
US10263988B2 (en) | Protected container key management processors, methods, systems, and instructions | |
KR20210047975A (ko) | 보호 영역에서의 메모리 초기화 | |
CN111353157A (zh) | 限制不受信任软件对加密密钥的使用 |