安全區(qū)域內(nèi)的存儲器管理的制作方法
【專利說明】安全區(qū)域內(nèi)的存儲器管理
[0001] 背景
[0002] 領(lǐng)域
[0003] 本公開涉及信息處理領(lǐng)域,并且更具體地涉及信息處理系統(tǒng)內(nèi)的安全性領(lǐng)域。
[0004] 相關(guān)技術(shù)描述
[0005] 機(jī)密信息由許多信息處理系統(tǒng)存儲、傳輸和使用。因此,已經(jīng)開發(fā)了提供機(jī)密信息 的安全處理和存儲的技術(shù)。這些技術(shù)包括用于在信息處理系統(tǒng)內(nèi)創(chuàng)建和維護(hù)安全、受保護(hù) 或隔離分區(qū)或環(huán)境的各種方法。
[0006] 附圖簡要說明
[0007] 通過舉例而非限制在附圖中示出本發(fā)明。
[0008] 圖1示出根據(jù)本發(fā)明的實(shí)施例的包括安全區(qū)域內(nèi)的存儲器管理的系統(tǒng)。
[0009] 圖2示出根據(jù)本發(fā)明的實(shí)施例的安全區(qū)域單元。
[0010] 圖3示出根據(jù)本發(fā)明實(shí)施例的用于安全區(qū)域內(nèi)的存儲器管理的方法。
[0011] 詳細(xì)描述
[0012] 描述了用于安全區(qū)域(secureenclave)內(nèi)的存儲器管理的本發(fā)明的實(shí)施例。在本 描述中,可列出眾多特定細(xì)節(jié)(諸如組件和系統(tǒng)配置),以便提供對本發(fā)明的更透徹理解。 然而,本領(lǐng)域普通技術(shù)人員將認(rèn)識到可在沒有這些特定細(xì)節(jié)的情況下實(shí)踐本發(fā)明。此外,未 詳細(xì)示出某些公知的結(jié)構(gòu)、電路等等,以便避免不必要地混淆本發(fā)明。
[0013] 在以下描述中,對"一個實(shí)施例"、"實(shí)施例"、"示例實(shí)施例"、"各實(shí)施例"等等的引 用指示如此描述的本發(fā)明的實(shí)施例(多個)可包括具體特征、結(jié)構(gòu)、或特性,然而多個實(shí)施 例可以包括但不是每個實(shí)施例都需要包括該具體特征、結(jié)構(gòu)、或特性。進(jìn)一步地,某些實(shí)施 例可具有針對其他實(shí)施例所描述的特征中的某些、全部或沒有。
[0014] 如在權(quán)利要求書中所使用的,除非以其他方式指明,用于描述元件的順序形容詞 "第一"、"第二"、"第三"等等的使用僅指示元件的具體實(shí)例或者類似元件的不同實(shí)例并且不 旨在暗示這些如此描述的元件必須按特定順序(或者按時間、按空間排序或者以任何其他 方式)。
[0015] 而且,術(shù)語"位"、"標(biāo)志"、"字段"、"條目"等等可用于描述寄存器、表格、數(shù)據(jù)庫或 其他數(shù)據(jù)結(jié)構(gòu)中的任何類型的存儲位置,不管是用硬件還是用軟件實(shí)現(xiàn),但并不旨在將本 發(fā)明的實(shí)施例限制為任何特定存儲位置中的任何特定類型的存儲位置或任何數(shù)量的位或 其他元素。術(shù)語"清零"可用于指示存儲邏輯值零或者以其他方式致使將其存儲在存儲位 置中,并且術(shù)語"置位"可用于指示存儲邏輯值1、全1或某種其他指定值或以其他方式致使 將其存儲在存儲位置中;然而,這些術(shù)語不旨在將本發(fā)明的實(shí)施例限制為任何特定的邏輯 慣例,因?yàn)榭稍诒景l(fā)明的實(shí)施例中使用任何邏輯慣例。
[0016] 如在背景部分中所描述的,已經(jīng)開發(fā)了用于在信息處理系統(tǒng)內(nèi)創(chuàng)建和維護(hù)安全、 受保護(hù)或隔離分區(qū)或環(huán)境的各種方法。一種這種方法涉及如在于2012年6月19日提交的 序列號為13/527, 547標(biāo)題為"提供安全應(yīng)用執(zhí)行的方法和裝置"的共同未決的美國專利申 請所描述的安全區(qū)域,該申請通過飲用作為安全區(qū)域的至少一個實(shí)施例的示例并入在此。 然而,并入的引用不旨在以任何方式限制本發(fā)明的實(shí)施例的范圍并且可使用其他實(shí)施例同 時仍保留在本發(fā)明的精神和范圍內(nèi)。
[0017] 圖1示出系統(tǒng)100,即根據(jù)本發(fā)明的實(shí)施例的包括安全區(qū)域內(nèi)的分頁的信息處理 系統(tǒng)。系統(tǒng)100可表示任何類型的信息處理系統(tǒng),諸如服務(wù)器、桌上計(jì)算機(jī)、便攜式計(jì)算機(jī)、 機(jī)頂盒、手持式設(shè)備、或嵌入式控制系統(tǒng)。系統(tǒng)100包括處理器110、存儲器120、以及信息 存儲設(shè)備130。體現(xiàn)本發(fā)明的系統(tǒng)可包括任何數(shù)量的這些組件中的每一個組件以及任何其 他組件或其他元件,諸如信息存儲設(shè)備、外圍設(shè)備和輸入/輸出設(shè)備。本系統(tǒng)實(shí)施例或任何 系統(tǒng)實(shí)施例中的任何或全部組件或其他元件可通過任何數(shù)量的總線、點(diǎn)到點(diǎn)、或其他有線 或無線接口或連接而連接、耦合、或以其他方式與彼此通信。
[0018] 系統(tǒng)存儲器120可以是動態(tài)隨機(jī)存取存儲器或者處理器110可讀的任何其他類型 的介質(zhì)。信息存儲設(shè)備130可包括任何類型的永久或非易失性存儲器或存儲設(shè)備,諸如閃 存和/或固態(tài)驅(qū)動、磁驅(qū)動或光盤驅(qū)動。
[0019] 處理器110可表示集成在單個襯底上或者封裝在單個封裝中的一個或多個處理 器,每個處理器可包括呈任何組合的多個線程和/或多個執(zhí)行核。被表示為處理器110的 每個處理器可以是任何類型的處理器,包括通用處理器,諸如I英特爾?酷睿處理器族、 英特爾?凌動處理器族中的處理器、或來自英特爾⑧公司的其他處理器族或來自另 一家公司的另一個處理器或?qū)S锰幚砥骰蛭⒖刂破?。處理器Iio可包括指令單元111、執(zhí)行 單元112、處理存儲設(shè)備113、接口單元114、處理器控制單元115、高速緩存單元116以及安 全區(qū)域單元117。處理器110還可包括未在圖1中示出的任何其他電路、結(jié)構(gòu)、或邏輯,和/ 或在圖1中的其他地方示出或描述的任何電路、結(jié)構(gòu)、或邏輯。
[0020] 指令單元111可表示用于取出、接收、解碼、和/或調(diào)度指令的任何電路、結(jié)構(gòu)或其 他硬件,諸如指令解碼器??稍诒景l(fā)明的范圍內(nèi)使用任何指令格式;例如,指令可包括操作 碼和一個或多個操作數(shù),其中該操作碼可被解碼為一個或多個微指令或微操作以便由執(zhí)行 單元112執(zhí)行。
[0021] 執(zhí)行單元112可包括用于處理數(shù)據(jù)并執(zhí)行指令、微指令、和/或微操作的任何電 路、結(jié)構(gòu)、或其他硬件,諸如算術(shù)單元、邏輯單元、浮點(diǎn)單元、移位器等等。
[0022] 處理存儲單元113可表示可用于處理器110內(nèi)的任何目的的任何類型的存儲設(shè) 備,例如,其可包括任何數(shù)量的數(shù)據(jù)寄存器、指令寄存器、狀態(tài)寄存器、配置寄存器、控制寄 存器、其他可編程或硬編碼寄存器或寄存器組、或任何其他存儲結(jié)構(gòu)。
[0023] 接口單元114可表示任何電路、結(jié)構(gòu)、或其他硬件(諸如總線單元、消息傳送單元、 或任何其他單元、端口、或接口),以便允許處理器110通過任何類型的總線、點(diǎn)到點(diǎn)、或其 他連接直接或通過任何其他組件(諸如存儲器控制器或總線橋)與系統(tǒng)100內(nèi)的其他組件 通信。
[0024] 處理器控制單元115可包括任何邏輯、微代碼、電路、或其他硬件以便控制處理器 110的這些單元和其他元件的操作以及在處理器110之內(nèi)、向內(nèi)、以及向外的數(shù)據(jù)傳送。處 理器控制單元115可通過致使處理器110執(zhí)行由指令單元111接收的指令和從由指令單元 111接收的指令導(dǎo)出的微指令或微操作來致使處理器110執(zhí)行或參與執(zhí)行本發(fā)明的方法實(shí) 施例,諸如以下描述的方法實(shí)施例。
[0025] 高速緩存單元116可表示信息處理系統(tǒng)110的存儲器層次內(nèi)的用靜態(tài)隨機(jī)存取存 儲器或任何其他存儲器技術(shù)實(shí)現(xiàn)的一個或多個高速緩存存儲器級別。高速緩存單元116可 包括根據(jù)用于信息處理系統(tǒng)內(nèi)的高速緩存的任何已知的方法專用于或者在處理器110內(nèi) 的任何一個或多個執(zhí)行核或處理器之間共享的高速緩存存儲器的任何組合。
[0026] 安全區(qū)域單元117可表示用于創(chuàng)建和維護(hù)安全、受保護(hù)或隔離環(huán)境的任何邏輯、 電路、硬件或其他結(jié)構(gòu),該環(huán)境諸如在此描述的安全區(qū)域,應(yīng)用或其他軟件可在該安全區(qū)域 內(nèi)運(yùn)行、執(zhí)行、加載或以其他方式在信息處理系統(tǒng)(諸如系統(tǒng)100)中存在。出于本描述的 目的,這種環(huán)境的每個實(shí)例可被稱為安全區(qū)域,盡管本發(fā)明的實(shí)施例不限于在一個實(shí)施例 中將安全區(qū)域用作安全、受保護(hù)或隔離環(huán)境的那些實(shí)施例,可使用英特爾?酷睿?.處理器 族或來自英特爾公司的其他處理器族的處理器的指令集內(nèi)的指令創(chuàng)建并維護(hù)安全區(qū)域。
[0027] 圖2示出安全區(qū)域單元200,其實(shí)施例可用作系統(tǒng)100內(nèi)的安全區(qū)域單元117。安 全區(qū)域單元200的全部或部分可被包括在處理器110的任何一個或多個其他單元內(nèi),諸如 指令單元111、執(zhí)行單元112、處理器存儲設(shè)備113、處理器控制單元115和高速緩存單元 116〇
[0028] 安全區(qū)域單元200可包括加密單元210,該加密單元可包括用于執(zhí)行任何一個或 多個加密算法和相應(yīng)的解密算法的任何邏輯、電路或其他硬件并且可包括與處理器110內(nèi) 的另一個加密單元共享的邏輯、電路或其他硬件。
[0029] 安全區(qū)域單元200還可包括區(qū)域頁高速緩存(EPC) 220。在一個實(shí)施例中,EPC220 可以是高速緩存單元116的專用部分,諸如末級高速緩存的部分。其他實(shí)施例是可能的,包 括其中EPC220的全部或部分可位于處理器110外部的實(shí)施例。EPC220可用于為一個或 多個安全區(qū)域存儲未經(jīng)加密的代碼和數(shù)據(jù)。訪問控制邏輯214、范圍寄存器216和EPC映 射(EPCM)240可用于防止訪問EPC220內(nèi)的頁,除非由該頁所分配給的安全區(qū)域內(nèi)在處理 器110上運(yùn)行的應(yīng)用訪問。
[0030] 安全區(qū)域單元200還可包括EPC存儲器管理單元(MMU) 230APCMMU230可包括提 供根據(jù)本發(fā)明的實(shí)施例用于管理EPC220的存儲器空間的任何邏輯、電路或其他硬件。EPC MMU單元230可包括用于解碼和執(zhí)行EADD指令23UEAUG指令232、EMOD指令233、EACCEPT 指令234和EREMOVE指令235的微代碼、邏輯、電路和/或其他硬件。這些指令可由操作系 統(tǒng)和/或其他軟件用于動態(tài)地增加和減小EPC220內(nèi)的分配給一個或多個安全區(qū)域的存儲 器空間的尺寸。
[0031] EADD指令231是可由操作系統(tǒng)用來將EPC220內(nèi)的頁分配給安全區(qū)域的特權(quán)指 令。不像使用EAUG指令232分配頁,使用EADD指令231分配頁不涉及安全區(qū)域使用EACCEPT 指令234接受分配。換言之,EPC220內(nèi)的頁的狀態(tài)可直接從無效(INVALID)變?yōu)橛行?(VALID)而不經(jīng)歷未決(PENDING)狀態(tài),如以下結(jié)合EAUG指令232的使用所描述的。
[0032] EAUG指令232是可由操作系統(tǒng)用來將EPC220內(nèi)的未測量的歸零的頁分配給現(xiàn)有 安全區(qū)域的特權(quán)指令。EAUG指令232的執(zhí)行致使頁從VALID狀態(tài)變?yōu)镻