用于安全地保存并恢復(fù)計算平臺狀態(tài)的方法和裝置的制造方法
【專利說明】用于安全地保存并恢復(fù)計算平臺狀態(tài)的方法和裝置 【背景技術(shù)】 技術(shù)領(lǐng)域
[0001] 本發(fā)明總體涉及計算機(jī)處理器領(lǐng)域。更具體地說,本發(fā)明涉及用于安全地存儲并 恢復(fù)計算平臺狀態(tài)的裝置和方法。
[0002] 相關(guān)技術(shù)描述
[0003] 許多現(xiàn)代處理器不具有處理器上的、在其中存儲必須保持最新且不被復(fù)用的狀態(tài) 數(shù)據(jù)的永久存儲設(shè)備。這尤其與諸如軟件防護(hù)擴(kuò)展(SGX)之類的安全技術(shù)有關(guān),在SGX中, 當(dāng)掛起并恢復(fù)平臺時需要將內(nèi)部密鑰和配置數(shù)據(jù)存儲在處理器外部,以便節(jié)能。
[0004] 對該問題先前的解決方案需要從處理器直接去往僅由該處理器擁有的、受信任的 存儲設(shè)備的硬件接口。確保該通道的安全要求保護(hù)在受信任的生產(chǎn)設(shè)施中的密鑰交換以免 受對該密鑰的惡意觀察。這需要通常不能在個人計算設(shè)備中找到的特殊硬件。此外,伴隨 著外包、離岸生產(chǎn)的增加,要獲取該信任如果不是不可能的,也是非常困難的。此外,可將閃 存添加到處理器自身中以確保在掛起操作期間所存儲的數(shù)據(jù)的安全,再次導(dǎo)致了顯著的額 外生產(chǎn)成本。 【附圖說明】
[0005] 結(jié)合以下附圖,從以下【具體實施方式】中可獲得對本發(fā)明更好的理解,其中:
[0006] 圖IA是示出根據(jù)本發(fā)明的多個實施例的示例性有序流水線以及示例性寄存器重 命名的無序發(fā)布/執(zhí)行流水線兩者的框圖;
[0007] 圖IB是示出根據(jù)本發(fā)明的多個實施例的要包括在處理器中的有序架構(gòu)核的示例 性實施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的框圖;
[0008] 圖2是根據(jù)本發(fā)明的多個實施例的具有集成的存儲器控制器和圖形器件的單核 處理器和多核處理器的框圖;
[0009] 圖3示出本發(fā)明的一個實施例的系統(tǒng)的框圖;
[0010] 圖4示出根據(jù)本發(fā)明的實施例的第二系統(tǒng)的框圖;
[0011] 圖5示出根據(jù)本發(fā)明的實施例的第三系統(tǒng)的框圖;
[0012] 圖6示出根據(jù)本發(fā)明的實施例的芯片上系統(tǒng)(SoC)的框圖;
[0013] 圖7示出根據(jù)本發(fā)明的多個實施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的 二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖;
[0014] 圖8示出用于將處理器與一個或多個其他計算組件配對的本發(fā)明的一個實施例;
[0015] 圖9示出收集配對數(shù)據(jù)并將其存儲在數(shù)據(jù)庫中的一個實施例;
[0016] 圖10示出用于生成消息認(rèn)證碼(MAC)密鑰的方法的一個實施例;
[0017] 圖11示出用于生成配對數(shù)據(jù)的方法的一個實施例;
[0018] 圖12示出用于使用計數(shù)器值安全地恢復(fù)處理器狀態(tài)的技術(shù);
[0019] 圖13示出用于使用計數(shù)器值安全地掛起處理器狀態(tài)的技術(shù);
[0020] 圖14示出根據(jù)本發(fā)明的一個實施例可如何將配對ID注入到現(xiàn)有密鑰中。 【具體實施方式】
[0021] 在下面的描述中,為了進(jìn)行解釋,闡述了眾多具體細(xì)節(jié)以便提供對以下描述的本 發(fā)明的各實施例的全面理解。然而,對本領(lǐng)域技術(shù)人員顯而易見的是,可以在沒有這些具體 細(xì)節(jié)中的一些細(xì)節(jié)的情況下實施本發(fā)明的各實施例。在其他實例中,公知的結(jié)構(gòu)和設(shè)備以 框圖形式示出,以避免使本發(fā)明的實施例的基本原理模糊。
[0022] 示例性處理器架構(gòu)和數(shù)據(jù)類型
[0023] 圖IA是示出根據(jù)本發(fā)明的多個實施例的示例性有序流水線和示例性的寄存器重 命名的無序發(fā)布/執(zhí)行流水線的框圖。圖IB是示出根據(jù)本發(fā)明的多個實施例的要包括在 處理器中的有序架構(gòu)核的示例性實施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu) 核的框圖。圖IA-B中的實線框示出有序流水線和有序核,而可選增加的虛線框示出寄存器 重命名的、無序發(fā)布/執(zhí)行流水線和核??紤]到有序方面是無序方面的子集,將描述無序方 面。
[0024] 在圖IA中,處理器流水線100包括取出級102、長度解碼級104、解碼級106、分配 級108、重命名級110、調(diào)度(也稱為分派或發(fā)布)級112、寄存器讀取/存儲器讀取級114、 執(zhí)行級116、寫回/存儲器寫入級118、異常處理級122和提交級124。
[0025] 圖IB示出了包括耦合到執(zhí)行引擎單元150的前端單元130的處理器核190,且 執(zhí)行引擎單元和前端單元兩者都耦合到存儲器單元170。核190可以是精簡指令集計算 (RISC)核、復(fù)雜指令集計算(CISC)核、超長指令字(VLIW)核或混合或替代核類型。作為又 一選項,核190可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計算圖 形處理單元(GPGPU)核、或圖形核等等。
[0026] 前端單元130包括親合到指令高速緩存單元134的分支預(yù)測單元132,該指令高 速緩存單元耦合到指令轉(zhuǎn)換后備緩沖器(TLB) 136,該指令轉(zhuǎn)換后備緩沖器耦合到指令取出 單元138,該指令取出單元耦合到解碼單元140。解碼單元140 (或解碼器)可解碼指令,并 生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個或多 個微操作、微代碼進(jìn)入點、微指令、其他指令、或其他控制信號作為輸出。解碼單元140可使 用各種不同的機(jī)制來實現(xiàn)。合適機(jī)制的示例包括但不限于,查找表、硬件實現(xiàn)、可編程邏輯 陣列(PLA)、微代碼只讀存儲器(ROM)等。在一個實施例中,核190包括微代碼ROM或存儲 用于某些宏指令的微代碼的其他介質(zhì)(例如,在解碼單元140中或以其他方式在前端單元 130內(nèi))。解碼單元140耦合至執(zhí)行引擎單元150中的重命名/分配器單元152。
[0027] 執(zhí)行引擎單元150包括重命名/分配器單元152,該重命名/分配器單元耦合至 引退單元154和一個或多個調(diào)度器單元156的集合。調(diào)度器單元156表示任意數(shù)量的不同 調(diào)度器,包括預(yù)留站、中央指令窗等。調(diào)度器單元156耦合到物理寄存器組單元158。物理 寄存器組單元158中的每一個表示一個或多個物理寄存器組,其中不同的物理寄存器組存 儲一個或多個不同的數(shù)據(jù)類型,諸如,標(biāo)量整數(shù)、標(biāo)量浮點、緊縮整數(shù)、緊縮浮點、向量整數(shù)、 向量浮點、狀態(tài)(諸如,作為要被執(zhí)行的下一條指令的地址的指令指針)等。在一個實施例 中,物理寄存器組單元158包括向量寄存器單元、寫掩碼寄存器單元和標(biāo)量寄存器單元。這 些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器組單 元158被引退單元154覆蓋,以示出可實現(xiàn)寄存器重命名和無序執(zhí)行的多種方式(例如,使 用重排序緩沖器和引退寄存器組;使用未來文件(future file)、歷史緩沖器和引退寄存器 組;使用寄存器映射和寄存器池等)。引退單元154和物理寄存器組單元158耦合到執(zhí)行 群集160。執(zhí)行群集160包括一個或多個執(zhí)行單元162的集合和一個或多個存儲器訪問單 元164的集合。執(zhí)行單元162可對各種類型的數(shù)據(jù)(例如,標(biāo)量浮點、緊縮整數(shù)、緊縮浮點、 向量整數(shù)、向量浮點)執(zhí)行各種操作(例如,移位、加法、減法、乘法)。盡管一些實施例可 包括專用于特定功能或功能集的多個執(zhí)行單元,但其他實施例可包括全部執(zhí)行所有功能的 僅一個執(zhí)行單元或多個執(zhí)行單元。調(diào)度器單元156、物理寄存器組單元158和執(zhí)行群集160 被示出為可能有多個,因為某些實施例為某些類型的數(shù)據(jù)/操作創(chuàng)建分開的流水線(例如, 標(biāo)量整數(shù)流水線、標(biāo)量浮點/緊縮整數(shù)/緊縮浮點/向量整數(shù)/向量浮點流水線,和/或各 自具有其自身的調(diào)度器單元、物理寄存器組單元和/或執(zhí)行群集的存儲器訪問流水線一一 以及在分開的存儲器訪問流水線的情況下,實現(xiàn)其中僅該流水線的執(zhí)行群集具有存儲器訪 問單元164的某些實施例)。還應(yīng)當(dāng)理解,在使用分開的流水線的情況下,這些流水線中的 一個或多個可以是無序發(fā)布/執(zhí)行,并且其余流水線可以是有序的。
[0028] 存儲器訪問單元164的集合耦合至存儲器單元170,該存儲器單元包括數(shù)據(jù)TLB單 元172,該數(shù)據(jù)TLB單元親合至高速緩存單元174,該高速緩存單元親合至第二級(L2)高速 緩存單元176。在一個示例性實施例中,存儲器訪問單元164可包括加載單元、存儲地址單 元和存儲數(shù)據(jù)單元,其中的每一個均親合至存儲器單元170中的數(shù)據(jù)TLB單元172。指令高 速緩存單元134還耦合到存儲器單元170中的第二級(L2)高速緩存單元176。L2高速緩 存單元176耦合到一個或多個其他級的高速緩存,并最終耦合到主存儲器。
[0029] 作為示例,示例性寄存器重命名的、無序發(fā)布/執(zhí)行核架構(gòu)按如下方式實現(xiàn)流水 線100 :1)指令取出器138執(zhí)行取出和長度解碼級102和104 ;2)解碼單元140執(zhí)行解碼級 106 ;3)重命名/分配器單元152執(zhí)行分配級108和重命名級110 ;4)調(diào)度器單元156執(zhí)行 調(diào)度級112 ;5)物理寄存器組單元158和存儲器單元170執(zhí)行寄存器讀取/存儲器讀取級 114 ;執(zhí)行群集160實現(xiàn)執(zhí)行級116 ;6)存儲器單元170和物理寄存器組單元158執(zhí)行寫回 /存儲器寫入級118 ;7)多個單元可被牽涉在異常處理級122中;以及8)引退單元154和 物理寄存器組單元158執(zhí)行提交級124。
[0030] 核190可支持一個或多個指令集(例如,X86指令集(具有與較新版本一起添加 的一些擴(kuò)展);加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集;加利福尼州桑尼 維爾市的ARM控股的ARM指令集(具有諸如NEON等可選附加擴(kuò)展)),其中包括本文中描述 的各指令。在一個實施例中,核190包括用于支持緊縮數(shù)據(jù)指令集擴(kuò)展(例如,AVXUAVX2 和/或下文描述的一些形式的通用向量友好指令格式(U = 0和/或U = 1))的邏輯,從而 實用緊縮數(shù)據(jù)來執(zhí)行由許多多媒體應(yīng)用使用的操作。
[0031] 應(yīng)當(dāng)理解,核可支持多線程化(執(zhí)行兩個或更多并行的操作或線程的集合),并且 可以按各種方式來完成該多線程化,包括,時分多線程化、同步多線程化(其中單個物理核 為物理核正在同步進(jìn)行多線程化的多個線程中的每一個線程提供邏輯核)、或其組合(例 如,時分取出和解碼以及此后諸如用Intel?超線程化技術(shù)進(jìn)行的同步多線程化)。
[0032] 盡管在無序執(zhí)行的上情境中描述了寄存器重命名,但應(yīng)當(dāng)理解,可以在有序架構(gòu) 中使用寄存器重命名。盡管所示出的處理器的實施例還包括分開的指令和數(shù)據(jù)高速緩存單 元134/174以及共享L2高速緩存單元176,但替代實施例可以具有用于指令和數(shù)據(jù)兩者的 單個內(nèi)部高速緩存,諸如例如一級(LI)內(nèi)部高速緩存或多個級別的內(nèi)