專(zhuān)利名稱(chēng):用于隔離執(zhí)行的隔離指令的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器。本發(fā)明特別涉及處理器安全。
背景技術(shù):
微處理器和通訊技術(shù)的進(jìn)步已經(jīng)為那些超越了傳統(tǒng)經(jīng)營(yíng)方式的應(yīng)用開(kāi)拓了很多機(jī)會(huì)。電子商務(wù)(E_commerce)和企業(yè)對(duì)企業(yè)(B2B)交易現(xiàn)在正變得流行,并以很快的速度到達(dá)全球市場(chǎng)。不幸的是,在現(xiàn)代微處理器系統(tǒng)為用戶(hù)提供了方便和有效的經(jīng)營(yíng)、通訊和交易方法的同時(shí),它們對(duì)于不擇手段的攻擊而言也是脆弱的。舉出幾個(gè)這些攻擊的例子,包括病毒、侵入、安全破壞和篡改。因此,為了保護(hù)計(jì)算機(jī)系統(tǒng)的完整性和提高用戶(hù)的信任,計(jì)算機(jī)安全正變得越來(lái)越重要。
由不擇手段的攻擊導(dǎo)致的威脅可以有多種形式。攻擊可以是遠(yuǎn)程的,不需要物理接入。黑客遠(yuǎn)程發(fā)出的侵入攻擊可以中斷與成千上萬(wàn)用戶(hù)相連的系統(tǒng)的正常運(yùn)行。病毒程序可以破壞一個(gè)單用戶(hù)平臺(tái)的代碼和/或數(shù)據(jù)。
現(xiàn)有防范攻擊的技術(shù)有很多缺點(diǎn)。反病毒程序只能掃描和檢測(cè)已知病毒。大多數(shù)反病毒程序采用一種弱策略,在此策略中,一個(gè)文件或程序被假定是好的直到被證明是壞的。對(duì)很多安全應(yīng)用程序來(lái)說(shuō),這種弱策略可能不適當(dāng)。此外,大多數(shù)反病毒程序被駐留在平臺(tái)中本地使用。這可能不適于小組作業(yè)環(huán)境。采用加密或其他安全技術(shù)的安全協(xié)同處理器或者智能卡在速度性能、存儲(chǔ)器容量和靈活性上有局限。重新設(shè)計(jì)操作系統(tǒng)產(chǎn)生了軟件兼容性問(wèn)題并導(dǎo)致開(kāi)發(fā)努力方面巨大的投資。
本發(fā)明的優(yōu)點(diǎn)和特征在下面對(duì)本發(fā)明的詳細(xì)描述中將變得清楚,其中圖1A是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的邏輯操作結(jié)構(gòu)的圖。
圖1B是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例在操作系統(tǒng)和處理器中不同單元的可訪(fǎng)問(wèn)性的圖。
圖1C是說(shuō)明可以實(shí)現(xiàn)本發(fā)明的一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)的圖。
圖2是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于隔離指令的結(jié)構(gòu)的圖。
圖3足說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的內(nèi)部存儲(chǔ)器的圖。
圖4是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的外部存儲(chǔ)器的圖。
圖5是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_init指令過(guò)程的流程圖。
圖6A是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例在iso_init指令中執(zhí)行生成函數(shù)的過(guò)程的流程圖。
圖6B是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例在iso_init指令中執(zhí)行處理器安全內(nèi)核加載器函數(shù)的過(guò)程的流程圖。
圖7是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_close指令的過(guò)程的流程圖。
圖8A是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_enter指令的過(guò)程的流程圖。
圖8B是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_exit指令的過(guò)程的流程圖。
圖9A是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_config_read指令的過(guò)程的流程圖。
圖9B是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_config_write指令的過(guò)程的流程圖。
具體實(shí)施例方式
在本發(fā)明的一個(gè)實(shí)施例中提供了一項(xiàng)執(zhí)行隔離指令的技術(shù)。一個(gè)執(zhí)行單元在平臺(tái)上運(yùn)行的處理器中執(zhí)行一條隔離指令。該處理器被配置成正常執(zhí)行模式和隔離執(zhí)行模式之一。當(dāng)處理器被配置為隔離執(zhí)行模式時(shí),一個(gè)參數(shù)存儲(chǔ)器包含至少一個(gè)參數(shù)以支持執(zhí)行隔離指令。
在一個(gè)實(shí)施例中,隔離指令是隔離初始化(iso_init)指令、隔離關(guān)閉(iso_colse)指令、隔離進(jìn)入(iso_enter)指令、隔離退出(iso_exit)指令、隔離配置讀(iso_config_read)指令和隔離配置寫(xiě)(iso_config_write)指令之一。參數(shù)是隔離特征字、執(zhí)行模式字、邏輯處理器值、包括一個(gè)屏蔽值和一個(gè)基本值的隔離設(shè)置、出口物理地址、入口物理地址和處理器安全內(nèi)核加載器物理地址。
參數(shù)存儲(chǔ)器是內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器之一。內(nèi)部存儲(chǔ)器包括存儲(chǔ)執(zhí)行模式字的控制寄存器、邏輯處理器寄存器、存儲(chǔ)屏蔽值的屏蔽寄存器、存儲(chǔ)基本值的基本寄存器、幀寄存器組、存儲(chǔ)出口地址的退出幀寄存器、存儲(chǔ)入口地址的進(jìn)入幀寄存器和存儲(chǔ)處理器安全內(nèi)核加載器地址的加載器寄存器。外部存儲(chǔ)器包括存儲(chǔ)器控制器中心(MCH)存儲(chǔ)器和輸入/輸出控制器中心(ICH)存儲(chǔ)器。執(zhí)行模式字把處理器配置為隔離執(zhí)行模式。
在iso_init指令被執(zhí)行時(shí),假如隔離區(qū)域還沒(méi)有被生成的話(huà),使得處理器生成一塊由存儲(chǔ)器中的基本值和屏蔽值定義的隔離區(qū)域;在MCH寄存器中設(shè)定隔離區(qū)域的范圍;利用加載器寄存器中的處理器安全內(nèi)核加載器地址,把處理器安全內(nèi)核加載器復(fù)制到隔離區(qū)域;并執(zhí)行該處理器安全內(nèi)核加載器。在iso_init指令被執(zhí)行時(shí),還使得處理器為平臺(tái)初始化隔離區(qū)域,并獲得處理器安全內(nèi)核的位置。使得處理器執(zhí)行處理器安全內(nèi)核加載器的iso_init指令使得處理器把處理器安全內(nèi)核復(fù)制到隔離區(qū)域,使用包含在處理器安全內(nèi)核加載器中的公共密鑰驗(yàn)證處理器安全內(nèi)核的簽名,并且如果簽名被驗(yàn)證,就執(zhí)行該處理器安全內(nèi)核。因此,iso_init指令保證平臺(tái)或環(huán)境的狀態(tài)在隔離區(qū)域被生成時(shí)是清潔的。
在iso_enter指令被執(zhí)行時(shí),使得處理器在一個(gè)退出幀中存儲(chǔ)幀寄存器組的內(nèi)容,退出幀寄存器中的出口地址指向該退出幀,并把一個(gè)進(jìn)入幀加載到該幀寄存器組中,進(jìn)入幀寄存器中的入口地址指向該進(jìn)入幀。在iso_exit指令被執(zhí)行時(shí),使得處理器把一個(gè)退出幀加載到幀寄存器組。退出幀寄存器中的出口地址指向該退出幀。在iso_colse指令被執(zhí)行時(shí),假如一個(gè)對(duì)應(yīng)的邏輯處理器要最后退出的話(huà),使得處理器復(fù)位處理器中的隔離設(shè)置,如果該處理器要最后退出的話(huà),并復(fù)位在MCH和ICH中的隔離設(shè)置。在iso_config_read指令被執(zhí)行時(shí),使得處理器返回和參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。在iso_config_write指令被執(zhí)行時(shí),使得處理器寫(xiě)和參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。
下列指令是最基本的,不可被中斷的,以保證環(huán)境和/或平臺(tái)的完整性iso_enter、iso_exit、iso_close、iso_config_read、iso_config_write。在iso_enter指令被執(zhí)行時(shí),使得處理器存儲(chǔ)在一個(gè)退出幀中的幀寄存器組的內(nèi)容,退出幀寄存器中的出口地址正指向該退出幀,并把一個(gè)進(jìn)入幀加載到幀寄存器組,進(jìn)入幀寄存器中的入口地址正指向該進(jìn)入幀。在iso_exit指令被執(zhí)行時(shí),使得處理器把一個(gè)退出幀加載到幀寄存器組。退出幀寄存器中的出口地址指向該退出幀。在iso_colse指令被執(zhí)行時(shí),假如一個(gè)對(duì)應(yīng)的邏輯處理器要最后退出的話(huà),使得處理器復(fù)位處理器中的隔離設(shè)置,假如該處理器要最后退出的話(huà),并復(fù)位MCH和ICH中的隔離設(shè)置。在iso_config_read指令被執(zhí)行時(shí),使得處理器返回和參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。在iso_config_write指令被執(zhí)行時(shí),使得處理器寫(xiě)和參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。
在下列描述中,為說(shuō)明的目的,給出了許多細(xì)節(jié)以便提供本發(fā)明的一個(gè)詳盡的理解。但是對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),為實(shí)現(xiàn)本發(fā)明,并非必需這些詳細(xì)而明確的細(xì)節(jié)將顯而易見(jiàn)。在其他例子中,為避免使本發(fā)明顯得晦澀,公知的電氣結(jié)構(gòu)和電路被以塊狀方框圖的形式示出。
結(jié)構(gòu)綜述為計(jì)算機(jī)系統(tǒng)或平臺(tái)提供安全的一個(gè)原理是隔離執(zhí)行結(jié)構(gòu)的概念。隔離執(zhí)行結(jié)構(gòu)包括同計(jì)算機(jī)系統(tǒng)或平臺(tái)的操作系統(tǒng)直接或間接交互作用的硬件和軟件部件的邏輯的和物理的定義。操作系統(tǒng)和處理器可能具有被稱(chēng)為環(huán)的幾個(gè)等級(jí)的層次結(jié)構(gòu),與各種操作模式對(duì)應(yīng)。環(huán)是被設(shè)計(jì)用于執(zhí)行操作系統(tǒng)內(nèi)專(zhuān)門(mén)任務(wù)的軟件和硬件部件的邏輯劃分。該劃分一般基于特權(quán)的程度或等級(jí),也即變動(dòng)平臺(tái)的能力。例如,環(huán)-0是最內(nèi)層的環(huán),處于層次結(jié)構(gòu)的最高層。環(huán)-0包含最關(guān)鍵、最有特權(quán)的部件。此外,環(huán)-0內(nèi)的模塊也可以訪(fǎng)問(wèn)特權(quán)較低一些的數(shù)據(jù),反之則不然。環(huán)-3是最外層的環(huán),處于層次結(jié)構(gòu)的最底層。環(huán)-3一般包含用戶(hù)或應(yīng)用程序?qū)硬⒕哂凶畹偷奶貦?quán)。環(huán)-1和環(huán)-2表示具有減低的特權(quán)的中間環(huán)。
圖1A是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的邏輯操作結(jié)構(gòu)50的圖。邏輯操作結(jié)構(gòu)50是操作系統(tǒng)和處理器的部件的抽象。邏輯操作結(jié)構(gòu)50包括環(huán)-0 10、環(huán)-1 20、環(huán)-2 30、環(huán)-3 40和處理器安全內(nèi)核(hub)加載器52。處理器安全內(nèi)核加載器52是處理器執(zhí)行程序(PE,processorexecutive)處置器(handler)的一個(gè)實(shí)例。該P(yáng)E處置器用于處理和/或管理處理器執(zhí)行程序(PE),這將在后面討論。邏輯操作結(jié)構(gòu)50有兩種操作模式正常執(zhí)行模式和隔離執(zhí)行模式。邏輯操作結(jié)構(gòu)50中的每個(gè)環(huán)都可以在兩種模式下操作。處理器安全內(nèi)核加載器52僅在隔離執(zhí)行模式下操作。
環(huán)-0 10包括兩部分正常執(zhí)行環(huán)-0 11和隔離執(zhí)行環(huán)-0 15。正常執(zhí)行環(huán)-0 11包括對(duì)操作系統(tǒng)非常關(guān)鍵的,通常被稱(chēng)為核的軟件模塊。這些軟件模塊包括基本操作系統(tǒng)(例如,核)12、軟件驅(qū)動(dòng)程序13和硬件驅(qū)動(dòng)程序14。隔離執(zhí)行環(huán)-0 15包括操作系統(tǒng)(OS)安全內(nèi)核16和處理器安全內(nèi)核18。OS安全內(nèi)核16和處理器安全內(nèi)核18分別是OS執(zhí)行程序(OSE)和處理器執(zhí)行程序(PE)的實(shí)例。OSE和PE是執(zhí)行實(shí)體的一部分,這些執(zhí)行實(shí)體在和隔離區(qū)域70和隔離執(zhí)行模式相關(guān)的安全環(huán)境中運(yùn)行。處理器安全內(nèi)核加載器52是保存在系統(tǒng)內(nèi)一個(gè)芯片組中的受保護(hù)引導(dǎo)程序加載器代碼,負(fù)責(zé)把處理器安全內(nèi)核18從處理器或芯片組中加載到隔離區(qū)域,這將在后面說(shuō)明。
類(lèi)似地,環(huán)-1 20、環(huán)-2 30和環(huán)-3 40分別包括正常執(zhí)行環(huán)-1 21、環(huán)2-31、環(huán)-3 41和隔離執(zhí)行環(huán)-1 25、環(huán)-2 35和環(huán)-3 45。特別地,正常執(zhí)行環(huán)-3包括N個(gè)應(yīng)用程序421到42N而隔離執(zhí)行環(huán)-3包括K個(gè)小應(yīng)用程序(applet)461到46K。
隔離執(zhí)行結(jié)構(gòu)的一個(gè)概念是在系統(tǒng)存儲(chǔ)器中生成一個(gè)被稱(chēng)為隔離區(qū)域的隔離區(qū),它受到計(jì)算機(jī)系統(tǒng)中處理器和芯片組的雙重保護(hù)。隔離區(qū)也可以在高速緩沖存儲(chǔ)器中,由翻譯后援(TLB,translation look aside)訪(fǎng)問(wèn)校驗(yàn)來(lái)保護(hù)。只允許從處理器的前端總線(xiàn)(FSB,front side bus)對(duì)該隔離區(qū)訪(fǎng)問(wèn),采用被稱(chēng)為隔離讀和寫(xiě)周期的特殊的總線(xiàn)(例如,存儲(chǔ)器讀和寫(xiě))周期進(jìn)行。該特殊總線(xiàn)周期也被用于巡視(snooping)。隔離讀和寫(xiě)周期由運(yùn)行在隔離執(zhí)行模式中的處理器發(fā)出。隔離執(zhí)行模式用處理器中的特權(quán)指令,與處理器安全內(nèi)核加載器52相結(jié)合來(lái)初始化。處理器安全內(nèi)核加載器52驗(yàn)證并把一個(gè)環(huán)-0安全內(nèi)核軟件模塊(例如,處理器安全內(nèi)核18)加載到隔離區(qū)域。處理器安全內(nèi)核18為隔離執(zhí)行提供涉及硬件的服務(wù)。
處理器安全內(nèi)核18的任務(wù)之一是驗(yàn)證和并把環(huán)-0 OS安全內(nèi)核16加載到隔離區(qū)域,并產(chǎn)生一個(gè)對(duì)平臺(tái)、處理器安全內(nèi)核18和操作系統(tǒng)安全內(nèi)核16的組合唯一的密鑰層次結(jié)構(gòu)的根。操作系統(tǒng)安全內(nèi)核16提供到基本OS 12(例如,操作系統(tǒng)中不受保護(hù)的段)中服務(wù)的鏈接,提供隔離區(qū)域內(nèi)的頁(yè)面管理,并負(fù)責(zé)加把包括小應(yīng)用程序461到46K的環(huán)-3應(yīng)用程序模塊45加載到隔離區(qū)域內(nèi)劃分出的受保護(hù)頁(yè)面。操作系統(tǒng)安全內(nèi)核16也可以加載環(huán)-0支持模塊。
操作系統(tǒng)安全內(nèi)核16可以選擇支持隔離區(qū)域和普通(例如,非隔離的)存儲(chǔ)器之間數(shù)據(jù)的分頁(yè)(paging)。如果這樣,則操作系統(tǒng)安全內(nèi)核16也負(fù)責(zé)在把頁(yè)面回收(evict)到普通存儲(chǔ)器前將隔離區(qū)域頁(yè)面加密和散列處理(hash),并負(fù)責(zé)在頁(yè)面恢復(fù)時(shí)校驗(yàn)頁(yè)面內(nèi)容。隔離模式小應(yīng)用程序461到46K和它們的數(shù)據(jù)對(duì)來(lái)自其他小應(yīng)用程序以及非隔離區(qū)域的應(yīng)用程序(例如,421到42N)、動(dòng)態(tài)鏈接庫(kù)(DLL)、驅(qū)動(dòng)器以至于基本操作系統(tǒng)12的所有軟件攻擊都是抗篡改和抗監(jiān)控的。只有處理器安全內(nèi)核18或者操作系統(tǒng)安全內(nèi)核16可以干涉或監(jiān)控小應(yīng)用程序的執(zhí)行。
圖1B是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的操作系統(tǒng)10和處理器中各個(gè)單元可訪(fǎng)問(wèn)性的框圖。為說(shuō)明目的,只示出了環(huán)-0 10和環(huán)-3 40的單元。邏輯操作結(jié)構(gòu)50中的各個(gè)單元根據(jù)它們的環(huán)的層次和執(zhí)行模式來(lái)訪(fǎng)問(wèn)可訪(fǎng)問(wèn)物理存儲(chǔ)器60。
可訪(fǎng)問(wèn)物理存儲(chǔ)器60包括隔離區(qū)域70和非隔離區(qū)域80。隔離區(qū)域70包括小應(yīng)用程序頁(yè)面72和安全內(nèi)核頁(yè)面74。非隔離區(qū)域包括應(yīng)用程序頁(yè)面82和操作系統(tǒng)頁(yè)面84。只有操作在隔離執(zhí)行模式下的操作系統(tǒng)的單元和處理器可以訪(fǎng)問(wèn)隔離區(qū)域70。非隔離區(qū)域80對(duì)于環(huán)-0操作系統(tǒng)的所有單元和處理器都是可訪(fǎng)問(wèn)的。
包括基本OS 12、軟件驅(qū)動(dòng)器13和硬件驅(qū)動(dòng)器14的正常執(zhí)行環(huán)-011既可以訪(fǎng)問(wèn)OS頁(yè)面84也可以訪(fǎng)問(wèn)應(yīng)用程序頁(yè)面82。包括應(yīng)用程序421到42N的正常執(zhí)行環(huán)-3只能訪(fǎng)問(wèn)應(yīng)用程序頁(yè)面82。然而正常執(zhí)行環(huán)-0 11和環(huán)-3 41均不能訪(fǎng)問(wèn)隔離區(qū)域70。
包括OS安全內(nèi)核16和處理器安全內(nèi)核18的隔離執(zhí)行環(huán)-0 15既可以訪(fǎng)問(wèn)包括小應(yīng)用程序頁(yè)面72和安全內(nèi)核頁(yè)面74的隔離區(qū)域70,也可以訪(fǎng)問(wèn)包括應(yīng)用程序頁(yè)面82和OS頁(yè)面84的非隔離區(qū)域。包括小應(yīng)用程序461到46K的隔離執(zhí)行環(huán)-3 45只能訪(fǎng)問(wèn)應(yīng)用程序頁(yè)面82和小應(yīng)用程序頁(yè)面72。小應(yīng)用程序461到46K駐留于隔離區(qū)域70。
圖1C是說(shuō)明了可以實(shí)現(xiàn)本發(fā)明的一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)100的圖。計(jì)算機(jī)系統(tǒng)100包括處理器110、主機(jī)總線(xiàn)120、存儲(chǔ)器控制器中心(MCH)130、系統(tǒng)存儲(chǔ)器140、輸入/輸出控制器中心(ICH)150、非易失性存儲(chǔ)器或系統(tǒng)閃存160、海量存儲(chǔ)設(shè)備170、輸入/輸出設(shè)備175、令牌總線(xiàn)180、母板(MB)令牌182、讀取器184和令牌(token)186。MCH 130可以被集成到集成了諸如隔離執(zhí)行模式、主機(jī)-外圍設(shè)備總線(xiàn)接口、存儲(chǔ)器控制的多項(xiàng)功能的芯片組中。類(lèi)似地,ICH 150也可以同MCH 130一起或分開(kāi)集成到芯片組中以執(zhí)行I/O功能。為清楚起見(jiàn),并非所有的外部設(shè)備總線(xiàn)都被示出??梢韵胍?jiàn),系統(tǒng)100也可以包括例如外圍部件互聯(lián)(PCI)、圖形加速端口(AGP)、工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線(xiàn)和通用串行總線(xiàn)(USB)等的外圍設(shè)備總線(xiàn)。
處理器110表示任意一種結(jié)構(gòu)類(lèi)型的中央處理單元,例如復(fù)雜指令集計(jì)算機(jī)(CISC)、精簡(jiǎn)指令集計(jì)算機(jī)(RISC)、超長(zhǎng)指令字(VLIW)或混合結(jié)構(gòu)。在一個(gè)實(shí)施例中,處理器110和英特爾結(jié)構(gòu)(IA)的處理器兼容,例如奔騰TM系列、IA-32TM系列和IA-64TM系列。處理器110包括正常執(zhí)行模式112和隔離執(zhí)行電路115。在正常執(zhí)行模式112中,處理器110在非安全環(huán)境或者在沒(méi)有隔離執(zhí)行模式提供的安全特征的正常環(huán)境下運(yùn)行。隔離執(zhí)行電路115提供了允許處理器110在隔離執(zhí)行模式下運(yùn)行的機(jī)制。隔離執(zhí)行電路115為隔離執(zhí)行模式提供了軟件和硬件支持。該支持包括為隔離執(zhí)行進(jìn)行配置,定義隔離區(qū)域,定義隔離指令(例如,解碼和執(zhí)行),產(chǎn)生隔離訪(fǎng)問(wèn)總線(xiàn)周期和產(chǎn)生隔離模式中斷。
在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)100可以是一個(gè)單處理器系統(tǒng),例如一臺(tái)只有一個(gè)主中央處理單元,例如處理器110的桌上型計(jì)算機(jī)。在其他實(shí)施例中,計(jì)算機(jī)系統(tǒng)100可以包括多個(gè)處理器,例如處理器110、110a、110b等,如圖1C所示。這樣,計(jì)算機(jī)系統(tǒng)100可以是一個(gè)具有任意數(shù)量處理器的多處理器計(jì)算機(jī)系統(tǒng)。例如,多處理器計(jì)算機(jī)系統(tǒng)100可以作為服務(wù)器或工作站環(huán)境的一部分來(lái)運(yùn)行。處理器110的基本描述和操作將在下面詳細(xì)討論。本領(lǐng)域技術(shù)人員將能理解處理器110的基本描述和操作適用于如圖1C所示的其他處理器110a和110b,也適用于根據(jù)本發(fā)明的一個(gè)實(shí)施例可以被用在多處理器計(jì)算機(jī)系統(tǒng)100中的任意數(shù)量的其他處理器。
處理器110也可以具有多個(gè)邏輯處理器。邏輯處理器,有時(shí)候被稱(chēng)為線(xiàn)程,是物理處理器內(nèi)具有根據(jù)某種劃分策略被分配的結(jié)構(gòu)狀態(tài)和物理資源的一個(gè)功能單元。在本發(fā)明的范圍內(nèi),術(shù)語(yǔ)“線(xiàn)程”和“邏輯處理器”用來(lái)表達(dá)相同物。多線(xiàn)程處理器是具有多個(gè)線(xiàn)程或多個(gè)邏輯處理器的處理器。多處理器系統(tǒng)(例如,包含處理器110、110a和110b的系統(tǒng))可以具有多個(gè)多線(xiàn)程處理器。
主機(jī)總線(xiàn)120提供了允許處理器110或者處理器110、110a和110b與其他處理器或設(shè)備,如MCH 130,通信的接口信號(hào)。除正常模式外,主機(jī)總線(xiàn)120還為隔離訪(fǎng)問(wèn)總線(xiàn)模式提供了對(duì)應(yīng)的接口信號(hào),用于處理器110被配置為隔離執(zhí)行模式時(shí)的存儲(chǔ)器讀和寫(xiě)周期。隔離訪(fǎng)問(wèn)總線(xiàn)模式被應(yīng)用于在處理器110處于隔離執(zhí)行模式時(shí)開(kāi)始的存儲(chǔ)器訪(fǎng)問(wèn)。如果地址在隔離區(qū)域地址范圍內(nèi)并且處理器110被初始化為隔離執(zhí)行模式,則隔離訪(fǎng)問(wèn)總線(xiàn)模式也被應(yīng)用于指令預(yù)讀取和高速緩沖存儲(chǔ)器回寫(xiě)周期。如果隔離訪(fǎng)問(wèn)總線(xiàn)模式被應(yīng)用并且處理器110被初始化為隔離執(zhí)行模式,則處理器110響應(yīng)巡視周期,到達(dá)隔離區(qū)域地址范圍內(nèi)的一個(gè)被緩存的地址。
MCH 130給存儲(chǔ)器和輸入/輸出設(shè)備,如系統(tǒng)存儲(chǔ)器140和ICH 150,提供控制和配置。MCH 130提供接口電路以識(shí)別和伺服存儲(chǔ)器參考總線(xiàn)周期上的隔離訪(fǎng)問(wèn)應(yīng)用,存儲(chǔ)器參考總線(xiàn)周期包括隔離存儲(chǔ)器讀和寫(xiě)周期。此外,MCH 130有表示在系統(tǒng)存儲(chǔ)器140中的隔離區(qū)域的存儲(chǔ)器范圍寄存器(例如,基本和長(zhǎng)度寄存器)。一旦被配置,MCH 130就放棄任何對(duì)未使隔離訪(fǎng)問(wèn)總線(xiàn)模式被應(yīng)用的隔離區(qū)域的訪(fǎng)問(wèn)。
系統(tǒng)存儲(chǔ)器140存儲(chǔ)系統(tǒng)代碼和數(shù)據(jù)。系統(tǒng)存儲(chǔ)器140一般是用動(dòng)態(tài)隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器(DRAM)或者靜態(tài)隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器(SRAM)來(lái)實(shí)現(xiàn)。系統(tǒng)存儲(chǔ)器140包括可訪(fǎng)問(wèn)的物理存儲(chǔ)器60(圖1B所示)??稍L(fǎng)問(wèn)的物理存儲(chǔ)器包括被加載的操作系統(tǒng)142、隔離區(qū)域70(圖1B所示)以及隔離控制和狀態(tài)空間148。被加載的操作系統(tǒng)142是被加載到系統(tǒng)存儲(chǔ)器140的操作系統(tǒng)的一部分。被加載的OS 142一般是由在諸如引導(dǎo)只讀存儲(chǔ)器(ROM)的引導(dǎo)存儲(chǔ)器內(nèi)的某種引導(dǎo)代碼從海量存儲(chǔ)設(shè)備中加載的。如圖1B所示,隔離區(qū)域70是處理器110在隔離執(zhí)行模式下運(yùn)行時(shí)定義的存儲(chǔ)器區(qū)域。對(duì)隔離區(qū)域70的訪(fǎng)問(wèn)是受限的并由處理器110和/或MCH 130或其他集成了隔離區(qū)域功能的芯片組強(qiáng)制執(zhí)行。隔離控制和狀態(tài)空間148是一個(gè)類(lèi)似于輸入/輸出口(I/O)、由處理器110和/或MCH 130定義的獨(dú)立地址空間。隔離控制和狀態(tài)空間148主要包括隔離執(zhí)行控制和狀態(tài)寄存器。隔離控制和狀態(tài)空間148不覆蓋任何現(xiàn)存地址空間并用隔離總線(xiàn)周期訪(fǎng)問(wèn)。系統(tǒng)存儲(chǔ)器140也可以包括未示出的其他程序或數(shù)據(jù)。
ICH 150表示系統(tǒng)內(nèi)具有隔離執(zhí)行功能的一個(gè)已知單點(diǎn)。為清楚起見(jiàn),只有一個(gè)ICH 150被示出。系統(tǒng)100可以具有很多類(lèi)似于ICH 150的ICH。如果有多個(gè)ICH,則一個(gè)被指定的ICH被選擇以控制隔離區(qū)域配置和狀態(tài)。在一個(gè)實(shí)施例中,該選擇由一個(gè)外部短接引線(xiàn)(strapping pin)執(zhí)行。本領(lǐng)域的技術(shù)人員知道,可以使用其他的選擇方法,包括使用可編程配置寄存器。ICH 150具有很多被設(shè)計(jì)用于支持除傳統(tǒng)I/O功能以外的隔離執(zhí)行模式的功能。特別是ICH 150包括隔離總線(xiàn)周期接口152、處理器安全內(nèi)核加載器52(圖1A所示)、摘要存儲(chǔ)器154、加密密鑰存儲(chǔ)器155、隔離執(zhí)行邏輯處理器管理器156和令牌總線(xiàn)接口159。
隔離總線(xiàn)周期接口152包括與隔離總線(xiàn)周期信號(hào)接口的電路,以識(shí)別和伺服隔離總線(xiàn)周期,諸如隔離讀和寫(xiě)總線(xiàn)周期。如圖1A所示,處理器安全內(nèi)核加載器52包括一個(gè)處理器安全內(nèi)核加載器代碼和它的摘要(例如,散列)值。處理器安全內(nèi)核加載器52通過(guò)執(zhí)行適當(dāng)?shù)母綦x指令(例如,Iso_Init)來(lái)調(diào)用并被傳遞到隔離區(qū)域70。從隔離區(qū)域80,處理器安全內(nèi)核加載器52把處理器安全內(nèi)核18從系統(tǒng)閃存存儲(chǔ)器(例如,在非易失性存儲(chǔ)器160中的處理器安全內(nèi)核代碼18)中復(fù)制到隔離區(qū)域70,驗(yàn)證并記錄它的完整性,并管理一個(gè)用于保護(hù)處理器安全內(nèi)核的秘密的對(duì)稱(chēng)密鑰。在一個(gè)實(shí)施例中,處理器安全內(nèi)核加載器52在只讀存儲(chǔ)器(ROM)中實(shí)現(xiàn)。為安全的目的,處理器安全內(nèi)核加載器52是不可修改,抗篡改和不可替換的。摘要存儲(chǔ)器154一般在RAM中實(shí)現(xiàn),存儲(chǔ)被加載的處理器安全內(nèi)核18、操作系統(tǒng)安全內(nèi)核16和任何其他被加載到隔離執(zhí)行空間中的關(guān)鍵模塊(例如,環(huán)-0模塊)的摘要(例如,散列)值。加密密鑰存儲(chǔ)器155存有對(duì)系統(tǒng)100的平臺(tái)而言是唯一的對(duì)稱(chēng)加密/解密密鑰。在一個(gè)實(shí)施例中,加密密鑰存儲(chǔ)器155包括在制造時(shí)可以被編程的內(nèi)部熔絲(fuse)。或者,加密密鑰存儲(chǔ)器155也可以用隨機(jī)數(shù)發(fā)生器和一條引線(xiàn)的短接產(chǎn)生。隔離執(zhí)行邏輯處理器管理器156管理在隔離執(zhí)行模式下運(yùn)行的邏輯處理器的運(yùn)行。在一個(gè)實(shí)施例中,隔離執(zhí)行邏輯處理器管理器156包括一個(gè)跟蹤參與到隔離執(zhí)行模式中的邏輯處理器數(shù)量的邏輯處理器計(jì)數(shù)寄存器。令牌總線(xiàn)接口159與令牌總線(xiàn)180相接口。處理器安全內(nèi)核加載器摘要、處理器安全內(nèi)核摘要、操作系統(tǒng)安全內(nèi)核摘要和可選附加摘要的組合表示整個(gè)隔離執(zhí)行摘要,被稱(chēng)為隔離摘要。隔離摘要是鑒別控制隔離執(zhí)行配置和運(yùn)行的環(huán)-0代碼的指紋。隔離摘要用于證明或者檢驗(yàn)當(dāng)前的隔離執(zhí)行的狀態(tài)。
非易失性存儲(chǔ)器160存儲(chǔ)非易失性信息。一般非易失性存儲(chǔ)器160在閃存存儲(chǔ)器中實(shí)現(xiàn)。非易失性存儲(chǔ)器160包括處理器安全內(nèi)核18。處理器安全內(nèi)核18提供了隔離區(qū)域70最初的建立和低層的管理,包括校驗(yàn)、加載和記錄操作系統(tǒng)安全內(nèi)核16,以及管理用于保護(hù)操作系統(tǒng)安全內(nèi)核的秘密的對(duì)稱(chēng)密鑰。處理器安全內(nèi)核18也可以為由其他硬件提供的低層安全服務(wù)提供應(yīng)用程序接口(API)的抽象(abstraction)。處理器安全內(nèi)核18也可以由原始設(shè)備生產(chǎn)商(OEM)或者操作系統(tǒng)銷(xiāo)售商(OSV)通過(guò)引導(dǎo)磁盤(pán)分發(fā)。
海量存儲(chǔ)設(shè)備170存儲(chǔ)諸如代碼(例如,處理器安全內(nèi)核18)、程序,文件、數(shù)據(jù)、應(yīng)用程序(例如,應(yīng)用程序421到42N)、小應(yīng)用程序和操作系統(tǒng)這樣的文檔信息。海量存儲(chǔ)設(shè)備170可以包括緊致盤(pán)(CD)ROM 172、軟盤(pán)174和硬(盤(pán))驅(qū)動(dòng)器176以及任何其他磁性或光學(xué)存儲(chǔ)設(shè)備。海量存儲(chǔ)設(shè)備170提供了讀取機(jī)器可讀介質(zhì)的機(jī)制。如果采用軟件實(shí)現(xiàn),本發(fā)明的各個(gè)單元是完成必要任務(wù)的代碼段。程序或代碼段可以被存儲(chǔ)在處理器可讀介質(zhì)中或者被包含在載波中的計(jì)算機(jī)數(shù)據(jù)信號(hào)或者被載波調(diào)制的信號(hào)在傳輸介質(zhì)上傳輸?!疤幚砥骺勺x介質(zhì)”可以包括任何可以存儲(chǔ)或傳送信息的介質(zhì)。處理器可讀介質(zhì)的例子包括電子電路、半導(dǎo)體存儲(chǔ)器設(shè)備、ROM,閃存存儲(chǔ)器、可擦除可編程ROM(EPROM)、軟盤(pán)、緊致盤(pán)CD-ROM、光盤(pán)、硬盤(pán)、光纖光學(xué)介質(zhì)、射頻(RF)鏈路等。計(jì)算機(jī)數(shù)據(jù)信號(hào)可以包括任何可以沿傳輸介質(zhì),例如電子網(wǎng)絡(luò)信道、光纖、空氣,電磁場(chǎng),射頻鏈路等傳播的信號(hào)。代碼段可以通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)例如國(guó)際互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)等下載。
I/O設(shè)備175可以包括任何完成I/O功能的I/O設(shè)備。I/O設(shè)備175的例子包括輸入設(shè)備(例如,鍵盤(pán)、鼠標(biāo),軌跡球和定位設(shè)備)控制器、媒體卡(例如,聲音、視頻,圖形)、網(wǎng)卡和任何其他外圍控制器。
令牌總線(xiàn)180提供了系統(tǒng)中ICH 150和各種令牌之間的接口。令牌是完成具有安全功能的專(zhuān)用輸入/輸出功能的設(shè)備。令牌具有類(lèi)似于智能卡的特點(diǎn),包括至少一個(gè)保留目的的公共/私人密鑰對(duì)和用私人密鑰標(biāo)記數(shù)據(jù)的能力。與令牌總線(xiàn)180相連的令牌的例子包括一個(gè)母板令牌182、令牌讀取器184和其他的便攜式令牌186(例如,智能卡)。ICH 150中的令牌總線(xiàn)接口159通過(guò)令牌總線(xiàn)180和ICH 150相連并保證在被命令檢驗(yàn)隔離執(zhí)行的狀態(tài)時(shí),對(duì)應(yīng)的令牌(例如,母板令牌182、令牌186)只標(biāo)記有效的隔離摘要信息。為安全目的,令牌應(yīng)該被連接到摘要存儲(chǔ)器。
隔離指令圖2是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的在圖1C中所示的隔離執(zhí)行電路115的一部分的圖。隔離執(zhí)行電路115包括執(zhí)行單元230和參數(shù)存儲(chǔ)器240。
執(zhí)行單元230在處理器110內(nèi)執(zhí)行一條隔離指令,如圖1C所示。如上述討論,處理器110在包括MCH 130、系統(tǒng)存儲(chǔ)器140、ICH 150和令牌總線(xiàn)的平臺(tái)中運(yùn)行,如圖1C所示。此外,處理器110被配置為正常執(zhí)行模式和隔離執(zhí)行模式之一。執(zhí)行單元230可以包括對(duì)隔離指令進(jìn)行解碼的解碼器、執(zhí)行被解碼指令中的任務(wù)的子執(zhí)行單元、完成算術(shù)邏輯功能的算術(shù)邏輯單元和相關(guān)的寄存器。執(zhí)行單元230接收隔離指令210。
隔離指令210也可以是一個(gè)宏指令,它包括很多微指令,或匯編語(yǔ)言級(jí)的指令。隔離指令210也可以是一個(gè)高級(jí)語(yǔ)言指令或者一個(gè)函數(shù),一個(gè)例程,一個(gè)用高級(jí)語(yǔ)言寫(xiě)成的子程序。以下,術(shù)語(yǔ)“指令”是指處理器110(圖1C)所執(zhí)行的一個(gè)任務(wù)或函數(shù)的抽象概念。該任務(wù)或函數(shù)可以用單個(gè)操作、一系列微操作、一個(gè)微代碼例程、一條宏指令、一個(gè)匯編語(yǔ)言例程或函數(shù)、一個(gè)高級(jí)語(yǔ)言的說(shuō)明、一個(gè)高級(jí)語(yǔ)言子例程或子程序或函數(shù)、或者專(zhuān)用硬件電路來(lái)實(shí)現(xiàn)。
隔離指令210包括很多指令。在一個(gè)實(shí)施例中,這些指令包括隔離初始化(iso_init)指令212、隔離關(guān)閉(iso_enter)指令214、隔離進(jìn)入(iso_enter)指令216、隔離退出(iso_exit)指令218,隔離配置讀(iso_config_read)指令222和隔離配置寫(xiě)(iso_config_write)指令224。io_nit指令212也可以被稱(chēng)為隔離生成(iso_create)指令。
參數(shù)存儲(chǔ)器240包含至少一個(gè)用于在處理器110被配置為隔離執(zhí)行模式時(shí)支持執(zhí)行隔離指令210的參數(shù)。參數(shù)存儲(chǔ)器240包括一個(gè)內(nèi)部存儲(chǔ)器232和一個(gè)外部存儲(chǔ)器234。內(nèi)部存儲(chǔ)器232對(duì)處理器110來(lái)說(shuō)是內(nèi)部的,而外部存儲(chǔ)器234對(duì)處理器110來(lái)說(shuō)是外部的。參數(shù)是隔離特征字、執(zhí)行模式字、邏輯處理器值、包括屏蔽值和基本值的隔離設(shè)置、幀、出口物理地址、入口物理地址和處理器安全內(nèi)核加載器物理地址之一。
圖3是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的在圖2中所示的內(nèi)部存儲(chǔ)器232的框圖。內(nèi)部存儲(chǔ)器232包括特征寄存器310、處理器控制寄存器320、邏輯處理器寄存器330、隔離設(shè)置寄存器340、幀寄存器組350、退出幀寄存器360、進(jìn)入幀寄存器370和加載器寄存器380。
特征寄存器310存儲(chǔ)隔離特征字。隔離特征字表明隔離指令出現(xiàn)于處理器110中以及出現(xiàn)的是隔離指令的哪個(gè)特征。特征的例子可以包括隔離指令的類(lèi)型,一個(gè)隨機(jī)數(shù)和一個(gè)隨機(jī)數(shù)狀態(tài)。處理器控制寄存器320存儲(chǔ)執(zhí)行模式字322。執(zhí)行模式字322保存一位以表示處理器是否被配置為隔離執(zhí)行模式。在一個(gè)實(shí)施例中,執(zhí)行模式字只能由把控制傳送到隔離執(zhí)行模式或從隔離執(zhí)行模式取回控制的指令來(lái)訪(fǎng)問(wèn)。這些指令的例子包括iso_int、iso_enter和iso_exit指令。
邏輯處理器寄存器330存儲(chǔ)邏輯處理器值332。邏輯處理器值332表示進(jìn)入隔離執(zhí)行模式的邏輯處理器的數(shù)量。一個(gè)物理處理器可能具有多個(gè)邏輯處理器,每一個(gè)邏輯處理器與一個(gè)邏輯處理器對(duì)應(yīng)。開(kāi)始時(shí),邏輯處理器值332是零。當(dāng)一個(gè)邏輯處理器進(jìn)入隔離執(zhí)行模式時(shí),邏輯處理器值332增加1。當(dāng)一個(gè)邏輯處理器退出隔離執(zhí)行模式時(shí),邏輯處理器值332減小1。邏輯處理器值332有一個(gè)最大值以限制處于隔離執(zhí)行模式的邏輯處理器的數(shù)量。當(dāng)一個(gè)邏輯處理器退出并且邏輯處理器值332減小到零時(shí),該邏輯處理器知曉它是將要從隔離執(zhí)行模式中退出的最后一個(gè)邏輯處理器。
幀寄存器組350存儲(chǔ)了對(duì)應(yīng)于一幀的很多值。一幀包括很多在退出或進(jìn)入隔離執(zhí)行模式時(shí)需要被保存或恢復(fù)的很多寄存器值。一般這些幀的值是跟蹤處理器狀態(tài)時(shí)必需的值。在一個(gè)實(shí)施例中,處理器是奔騰型。幀信息包括控制寄存器3(CR3)、控制寄存器4(CR4)、中斷描述符任務(wù)寄存器(IDTR)基準(zhǔn)、IDTR界限、全局描述符任務(wù)寄存器(GDTR)基本值、GDTR界限值、任務(wù)寄存器(TR)值、擴(kuò)展指令指針(EIP)、代碼段(CS)值、CS描述符、擴(kuò)展標(biāo)志(EFLAGS)、擴(kuò)展堆棧指針(ESP)、堆棧段(SS)值和SS描述符。與退出或進(jìn)入隔離執(zhí)行模式對(duì)應(yīng)的幀分別被稱(chēng)為退出幀或進(jìn)入幀。
退出幀寄存器360存儲(chǔ)出口地址362。出口地址362是退出幀的物理地址。進(jìn)入幀寄存器370存儲(chǔ)入口地址372。入口幀地址372是進(jìn)入幀的物理地址。加載寄存器380存儲(chǔ)處理器安全內(nèi)核加載器地址382。處理器安全內(nèi)核加載器地址382是處理器安全內(nèi)核加載器52的物理地址。
圖4是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的在圖2中所示的外部存儲(chǔ)器234的框圖。外部存儲(chǔ)器234包括MCH存儲(chǔ)器410和ICH存儲(chǔ)器450。
MCH存儲(chǔ)器410在MCH中并且是如圖1C所示隔離區(qū)域控制135的一部分。MCH存儲(chǔ)器410包括MCH邏輯處理器寄存器420、MCH屏蔽寄存器430和MCH基本寄存器440。MCH邏輯處理器寄存器420存儲(chǔ)MCH邏輯處理器值422。MCH邏輯處理器值422表示被配置為使用如圖1C所示系統(tǒng)存儲(chǔ)器140中的隔離區(qū)域70的邏輯處理器的數(shù)量。MCH屏蔽寄存器430和MCH基本寄存器440分別存儲(chǔ)MCH屏蔽值432和MCH基本值442。MCH屏蔽值432和MCH基本值442用于定義隔離區(qū)域70。
ICH存儲(chǔ)器450在ICH中如圖1C所示。ICH存儲(chǔ)器450包括ICH邏輯處理器寄存器460、ICH屏蔽寄存器470和ICH基本寄存器480。ICH邏輯處理器寄存器460存儲(chǔ)ICH邏輯處理器值462。ICH邏輯處理器值462表示被配置為使用如圖1C所示系統(tǒng)存儲(chǔ)器140中的隔離區(qū)域70的邏輯處理器的數(shù)量。ICH屏蔽寄存器470和ICH基本寄存器480分別存儲(chǔ)ICH屏蔽值472和ICH基本值482。ICH屏蔽值472和ICH基本值482用于定義隔離區(qū)域70。ICH邏輯處理器值462是指寄存器中的全部邏輯處理器,包括那些分處于不同的物理處理器中的。但是MCH邏輯處理器值422只指那些在與對(duì)應(yīng)的MCH直接連接的物理處理器中的邏輯處理器。
圖5是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_init指令的過(guò)程500的流程圖。
在開(kāi)始后,過(guò)程500為初始化做準(zhǔn)備(塊510)。該準(zhǔn)備可以包括受保護(hù)非分頁(yè)模式的驗(yàn)證,隔離區(qū)域屏蔽和基本值的有效性的驗(yàn)證。然后,過(guò)程500確定是否隔離區(qū)域已經(jīng)被生成(塊520)。如果已生成,過(guò)程500前進(jìn)到塊540。否則,過(guò)程500生成一塊隔離區(qū)域(塊530)。生成的過(guò)程將在圖6A中說(shuō)明。
然后過(guò)程500在MCH寄存器和處理器寄存器中設(shè)置范圍(塊540)。這包括更新處理器屏蔽和基本寄存器和MCH屏蔽和基本寄存器。接著,過(guò)程500使用在加載器寄存器中的處理器安全內(nèi)核加載器地址把處理器安全內(nèi)核加載器從ICH中復(fù)制到隔離區(qū)域(塊550)。
然后過(guò)程500為平臺(tái)初始化隔離區(qū)域(塊560)。然后過(guò)程500獲得處理器安全內(nèi)核的一個(gè)位置或物理地址(塊570)。接著,過(guò)程500通過(guò)執(zhí)行處理器安全內(nèi)核加載器代碼把控制傳遞給處理器安全內(nèi)核(塊580)。然后過(guò)程500結(jié)束。
圖6A是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行在iso_init指令中的生成函數(shù)的過(guò)程530的流程圖。
在開(kāi)始后,過(guò)程530確定處理器安全內(nèi)核加載器的大小是否小于或等于由屏蔽值定義的隔離區(qū)域的范圍(塊610)。如果不是,則隔離區(qū)域不足夠大以存儲(chǔ)整個(gè)處理器安全內(nèi)核加載器,過(guò)程530產(chǎn)生一個(gè)失敗或錯(cuò)誤狀態(tài)(塊615)。否則,過(guò)程530通過(guò)設(shè)置執(zhí)行模式字中的適當(dāng)位而把處理器配置為隔離執(zhí)行模式(塊620)。
然后過(guò)程530確定該處理器是否是第一個(gè)要生成隔離區(qū)域的處理器(塊625)。如果不是,則過(guò)程530確定是否處理器安全內(nèi)核已經(jīng)被初始化(塊630)。如果處理器安全內(nèi)核尚未被初始化,則過(guò)程530產(chǎn)生一個(gè)失敗或錯(cuò)誤狀態(tài)(塊635)。如果處理器安全內(nèi)核已經(jīng)被恰當(dāng)?shù)爻跏蓟?,則過(guò)程530讀取包括屏蔽和基本值的全局處理器設(shè)置(塊640)。然后過(guò)程530通過(guò)把全局設(shè)置傳遞到處理器設(shè)置中來(lái)初始化處理器設(shè)置(塊645)。然后過(guò)程530結(jié)束或者返回主過(guò)程。
如果該處理器是第一個(gè)要生成隔離區(qū)域的處理器,則過(guò)程530確定模式是否正待初始化(塊650)。這可以通過(guò)讀取ICH中的一個(gè)狀態(tài)值來(lái)實(shí)現(xiàn)。如果狀態(tài)表明模式不在等待初始化,則過(guò)程530產(chǎn)生一個(gè)失敗或錯(cuò)誤狀態(tài)(塊655)。否則,過(guò)程530確定是否已經(jīng)有一個(gè)隔離區(qū)域(塊660)。如果已經(jīng)有一個(gè)隔離區(qū)域,則過(guò)程530前進(jìn)到塊670。如果沒(méi)有隔離區(qū)域,則過(guò)程530在ICH中保存設(shè)置(例如,基本和屏蔽值)(塊665)。然后過(guò)程530從ICH中獲得設(shè)置(例如,基本和屏蔽值)(塊670)。然后過(guò)程530結(jié)束或者返回主過(guò)程。
圖6B是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例在iso_init指令中執(zhí)行處理器安全內(nèi)核加載器函數(shù)的過(guò)程580的流程圖。
在開(kāi)始后,過(guò)程580使用在處理器安全內(nèi)核加載器中的處理器安全內(nèi)核物理地址來(lái)把處理器安全內(nèi)核復(fù)制到隔離區(qū)域中(塊675)。然后過(guò)程580使用在處理器安全內(nèi)核加載器中的公共密鑰來(lái)驗(yàn)證處理器安全內(nèi)核的簽名(塊680)。接著,過(guò)程580確定是否該簽名通過(guò)了驗(yàn)證(塊685)。如果未通過(guò)驗(yàn)證,過(guò)程580產(chǎn)生一個(gè)失敗或錯(cuò)誤狀態(tài)(塊690)。否則過(guò)程580執(zhí)行處理器安全內(nèi)核(塊695)。然后過(guò)程580結(jié)束或者返回主過(guò)程。
圖7是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_close指令的過(guò)程700的流程圖。
在開(kāi)始后,過(guò)程700為關(guān)閉做準(zhǔn)備(塊710)。該準(zhǔn)備可以包括獲得退出幀和保存當(dāng)前IDTR界限。然后,過(guò)程700通過(guò)配置隔離執(zhí)行模式字來(lái)設(shè)置隔離執(zhí)行模式(塊720)。接著,過(guò)程700通過(guò)清除指向處理器入口幀的指針來(lái)移去處理器的邏輯處理器(塊730)。
然后,過(guò)程700確定這個(gè)是否是最后一個(gè)要從隔離執(zhí)行模式退出的邏輯處理器(塊740)。如果不是,則過(guò)程700前進(jìn)到塊760。否則,過(guò)程700復(fù)位處理器的隔離設(shè)置值(例如,基本和屏蔽值)(塊750)。然后,過(guò)程700確定這個(gè)是否是最后一個(gè)要從隔離執(zhí)行模式退出的處理器(塊760)。如果不是,過(guò)程700前進(jìn)到塊780。否則,過(guò)程700復(fù)位MCH和ICH中的隔離設(shè)置(塊770)。然后,過(guò)程700通過(guò)寫(xiě)執(zhí)行模式字來(lái)清除隔離執(zhí)行模式(塊780)。然后,過(guò)程700結(jié)束。
圖8A是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_enter指令的過(guò)程800的流程圖。
在開(kāi)始后,過(guò)程800為進(jìn)入做準(zhǔn)備(塊810)。該準(zhǔn)備可以包括幀地址的驗(yàn)證和當(dāng)前控制寄存器和IDTR界限的保存。然后,過(guò)程800通過(guò)配置執(zhí)行模式字來(lái)設(shè)置隔離執(zhí)行模式(塊820)。接著,過(guò)程800把幀寄存器組的內(nèi)容存儲(chǔ)到退出幀中(塊830)。退出幀寄存器中的出口地址指向退出幀。然后,過(guò)程800把一個(gè)進(jìn)入幀加載到幀寄存器組中(塊840)。進(jìn)入幀寄存器中的入口地址指向進(jìn)入幀。然后,過(guò)程800結(jié)束。
圖8B是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_exit指令的過(guò)程850的流程圖。
在開(kāi)始后,過(guò)程850為退出做準(zhǔn)備(塊860)。該準(zhǔn)備可以包括驗(yàn)證幀地址和清除IDTR界限以保證如果在恢復(fù)幀之前有機(jī)器校驗(yàn)的話(huà)對(duì)正確的處理程序恰當(dāng)調(diào)度。然后,過(guò)程850把一個(gè)退出幀加載到幀寄存器組中(塊870)。退出幀寄存器中的出口地址指向退出幀。然后,過(guò)程850結(jié)束。
圖9A是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_config_read指令的過(guò)程900的流程圖。
在開(kāi)始后,過(guò)程900為讀取配置存儲(chǔ)器做準(zhǔn)備(塊910)。該準(zhǔn)備可以包括驗(yàn)證配置存儲(chǔ)器的地址。然后,過(guò)程900返回與參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容(塊920)。然后,過(guò)程900結(jié)束。
圖9B是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的執(zhí)行iso_config_write指令的過(guò)程950的流程圖。
在開(kāi)始后,過(guò)程950為寫(xiě)入配置存儲(chǔ)器做準(zhǔn)備(塊960)。該準(zhǔn)備可以包括驗(yàn)證配置存儲(chǔ)器的地址。然后,過(guò)程950寫(xiě)與參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容(塊970)。然后,過(guò)程950結(jié)束。
雖然本發(fā)明是參考說(shuō)明性的實(shí)施例進(jìn)行描述的,但是不應(yīng)該限制性地解釋這些描述。說(shuō)明性實(shí)施例的各種變化以及本發(fā)明的其他實(shí)施例對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的本領(lǐng)域技術(shù)人員而言是清楚的,因而被認(rèn)為是處于本發(fā)明的精神和范圍內(nèi)。
權(quán)利要求
1.一種裝置,包括執(zhí)行單元,以在處理器內(nèi)執(zhí)行隔離指令,該處理器運(yùn)行在一個(gè)平臺(tái)中,該處理器被配置為正常執(zhí)行模式和隔離執(zhí)行模式之一;和參數(shù)存儲(chǔ)器,包含至少一個(gè)參數(shù),以支持在處理器被配置為隔離執(zhí)行模式時(shí)的隔離指令執(zhí)行。
2.如權(quán)利要求1所述的裝置,其中,隔離指令是隔離初始化(iso_init)指令、隔離關(guān)閉(iso_close)指令、隔離進(jìn)入(iso_enter)指令、隔離退出(iso_exit)指令、隔離配置讀(iso_config_read)指令和隔離配置寫(xiě)(iso_config_write)指令之一。
3.如權(quán)利要求2所述的裝置,其中,至少一個(gè)參數(shù)是隔離特征字、執(zhí)行模式字、邏輯處理器值、包括屏蔽值和基本值的隔離設(shè)置、幀、出口物理地址、入口物理地址和處理器安全內(nèi)核加載器物理地址之一。
4.如權(quán)利要求3所述的裝置,其中,參數(shù)存儲(chǔ)器是內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器之一。
5.如權(quán)利要求4所述的裝置,其中,內(nèi)部存儲(chǔ)器包括存儲(chǔ)隔離特征字的特征寄存器、存儲(chǔ)執(zhí)行模式字的控制寄存器、存儲(chǔ)邏輯處理器值的邏輯處理器寄存器、存儲(chǔ)屏蔽值的屏蔽寄存器、存儲(chǔ)基本值的基本寄存器、存儲(chǔ)幀的幀寄存器組、存儲(chǔ)出口地址的退出幀寄存器、存儲(chǔ)入口地址的進(jìn)入幀寄存器和存儲(chǔ)處理器安全內(nèi)核加載器地址的加載器寄存器。
6.如權(quán)利要求5所述的裝置,其中,外部存儲(chǔ)器包括在MCH中的存儲(chǔ)器控制器中心(MCH)存儲(chǔ)器和在ICH中的輸入/輸出控制器中心(ICH)存儲(chǔ)器。
7.如權(quán)利要求6所述的裝置,其中,執(zhí)行模式字把處理器配置為隔離執(zhí)行模式。
8.如權(quán)利要求7所述的裝置,其中,當(dāng)執(zhí)行iso_init指令時(shí),使得處理器假如隔離區(qū)域還沒(méi)有被生成的話(huà),在存儲(chǔ)器中生成隔離區(qū)域,該隔離區(qū)域由基本值和屏蔽值定義;在MCH存儲(chǔ)器中設(shè)置隔離區(qū)域的范圍;利用加載器寄存器中的處理器安全內(nèi)核加載器地址,把處理器安全內(nèi)核加載器復(fù)制到隔離區(qū)域;并且執(zhí)行該處理器安全內(nèi)核加載器。
9.如權(quán)利要求8所述的裝置,其中,當(dāng)執(zhí)行iso_init指令時(shí),還使得處理器為平臺(tái)初始化隔離區(qū)域;并且獲取處理器安全內(nèi)核的位置。
10.如權(quán)利要求9所述的裝置,其中,使得處理器執(zhí)行處理器安全內(nèi)核加載器的iso_init指令使得處理器把處理器安全內(nèi)核復(fù)制到隔離區(qū)域;并且使用包含在處理器安全內(nèi)核加載器中的公共密鑰來(lái)校驗(yàn)處理器安全內(nèi)核的簽名;并且如果簽名被驗(yàn)證,則執(zhí)行該處理器安全內(nèi)核。
11.如權(quán)利要求7所述的裝置,其中,當(dāng)執(zhí)行iso_close指令時(shí),使得處理器假如一個(gè)對(duì)應(yīng)的邏輯處理器要最后退出,則復(fù)位處理器中的隔離設(shè)置;并且假如該處理器要最后退出,則復(fù)位在MCH和ICH中的隔離設(shè)置。
12.如權(quán)利要求7所述的裝置,其中,當(dāng)執(zhí)行iso_enter指令時(shí),使得處理器在退出幀中存儲(chǔ)幀寄存器組的內(nèi)容,退出幀寄存器中的出口地址指向該退出幀;并且把進(jìn)入幀加載到幀寄存器組,進(jìn)入幀寄存器中的入口地址指向該進(jìn)入幀。
13.如權(quán)利要求7所述的裝置,其中,當(dāng)執(zhí)行iso_exit指令時(shí),使得處理器把退出幀加載到幀寄存器組,退出幀寄存器中的出口地址指向該退出幀。
14.如權(quán)利要求7所述的裝置,其中,當(dāng)執(zhí)行iso_config_read指令時(shí),使得處理器返回與參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。
15.如權(quán)利要求7所述的裝置,其中,當(dāng)執(zhí)行iso_config_write指令時(shí),使得處理器寫(xiě)與參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。
16.一種方法,包括由在一個(gè)平臺(tái)中運(yùn)行的處理器內(nèi)的執(zhí)行單元執(zhí)行隔離指令,該處理器被配置為正常執(zhí)行模式和隔離執(zhí)行模式之一;和當(dāng)處理器被配置為隔離執(zhí)行模式時(shí),由包含至少一個(gè)參數(shù)的參數(shù)存儲(chǔ)器支持隔離指令執(zhí)行。
17.如權(quán)利要求16所述的方法,其中,執(zhí)行隔離指令包括執(zhí)行隔離初始化(iso_init)指令、隔離關(guān)閉(iso_close)指令、隔離進(jìn)入(iso_enter)指令、隔離退出(iso_exit)指令、隔離配置讀(iso_config_read)指令和隔離配置寫(xiě)(iso_config_write)指令之一。
18.如權(quán)利要求17所述的方法,其中,至少一個(gè)參數(shù)是隔離特征字、執(zhí)行模式字、邏輯處理器值、包括屏蔽值和基本值的隔離設(shè)置、幀、出口物理地址、入口物理地址和處理器安全內(nèi)核加載器物理地址之一。
19.如權(quán)利要求18所述的方法,其中,參數(shù)存儲(chǔ)器是內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器之一。
20.如權(quán)利要求19所述的方法,其中,內(nèi)部存儲(chǔ)器包括存儲(chǔ)隔離特征字的特征寄存器、存儲(chǔ)執(zhí)行模式字的控制寄存器、存儲(chǔ)邏輯處理器值的邏輯處理器寄存器、存儲(chǔ)屏蔽值的屏蔽寄存器、存儲(chǔ)基本值的基本寄存器、存儲(chǔ)幀的幀寄存器組、存儲(chǔ)出口地址的退出幀寄存器、存儲(chǔ)入口地址的進(jìn)入幀寄存器和存儲(chǔ)處理器安全內(nèi)核加載器地址的加載器寄存器。
21.如權(quán)利要求20所述的方法,其中,外部存儲(chǔ)器包括在MCH中的存儲(chǔ)器控制器中心(MCH)存儲(chǔ)器和在ICH中的輸入/輸出控制器中心(ICH)存儲(chǔ)器。
22.如權(quán)利要求21所述的方法,其中,執(zhí)行模式字把處理器配置為隔離執(zhí)行模式。
23.如權(quán)利要求22所述的方法,其中,執(zhí)行iso_init指令包括假如隔離區(qū)域還沒(méi)有被生成的話(huà),在存儲(chǔ)器中生成隔離區(qū)域,該隔離區(qū)域由基本值和屏蔽值定義;在MCH存儲(chǔ)器中設(shè)置隔離區(qū)域的范圍;利用加載器寄存器中的處理器安全內(nèi)核加載器地址,把處理器安全內(nèi)核加載器復(fù)制到隔離區(qū)域;并且執(zhí)行該處理器安全內(nèi)核加載器。
24.如權(quán)利要求23所述的方法,其中,執(zhí)行iso_init指令還包括為平臺(tái)初始化隔離區(qū)域;并且獲取處理器安全內(nèi)核的位置。
25.如權(quán)利要求24所述的方法,其中,執(zhí)行處理器安全內(nèi)核加載器包括把處理器安全內(nèi)核復(fù)制到隔離區(qū)域;使用包含在處理器安全內(nèi)核加載器中的公共密鑰來(lái)校驗(yàn)處理器安全內(nèi)核的簽名;并且如果簽名被驗(yàn)證,則執(zhí)行該處理器安全內(nèi)核。
26.如權(quán)利要求22所述的方法,其中,執(zhí)行iso_close指令包括假如一個(gè)對(duì)應(yīng)的邏輯處理器要最后退出,則復(fù)位處理器中的隔離設(shè)置;并且假如該處理器要最后退出,復(fù)位在MCH和ICH中的隔離設(shè)置。
27.如權(quán)利要求22所述的方法,其中,執(zhí)行iso_enter指令包括在退出幀中存儲(chǔ)幀寄存器組的內(nèi)容,退出幀寄存器中的出口地址指向該退出幀;并且把進(jìn)入幀加載到幀寄存器組,進(jìn)入幀寄存器中的入口地址指向該進(jìn)入幀。
28.如權(quán)利要求22所述的方法,其中,執(zhí)行iso_exit指令包括把退出幀加載到幀寄存器組,退出幀寄存器中的出口地址指向該退出幀。
29.如權(quán)利要求22所述的方法,其中,執(zhí)行iso_config_read指令包括返回與參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。
30.如權(quán)利要求22所述的方法,其中,執(zhí)行iso_config_write指令包括寫(xiě)與參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。
31.一種系統(tǒng)包括芯片組;連接到芯片組的具有隔離存儲(chǔ)器區(qū)域的存儲(chǔ)器;和連接到芯片組和存儲(chǔ)器的在一個(gè)平臺(tái)中運(yùn)行的處理器,該處理器具有隔離指令執(zhí)行電路,該處理器被配置為正常執(zhí)行模式和隔離執(zhí)行模式之一,隔離指令執(zhí)行電路包括執(zhí)行隔離指令的執(zhí)行單元,和參數(shù)存儲(chǔ)器,包含至少一個(gè)參數(shù),以支持在處理器被配置為隔離執(zhí)行模式時(shí)的隔離指令執(zhí)行。
32.如權(quán)利要求31所述的系統(tǒng),其中,隔離指令是隔離初始化(iso_init)指令、隔離關(guān)閉(iso_close)指令、隔離進(jìn)入(iso_enter)指令、隔離退出(iso_exit)指令、隔離配置讀(iso_config_read)指令和隔離配置寫(xiě)(iso_config_write)指令之一。
33.如權(quán)利要求32所述的系統(tǒng),其中,至少一個(gè)參數(shù)是隔離特征字、執(zhí)行模式字、邏輯處理器值、包括屏蔽值和基本值的隔離設(shè)置、幀、出口物理地址、入口物理地址和處理器安全內(nèi)核加載器物理地址之一。
34.如權(quán)利要求33所述的系統(tǒng),其中,參數(shù)存儲(chǔ)器是內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器之一。
35.如權(quán)利要求34所述的系統(tǒng),其中,內(nèi)部存儲(chǔ)器包括存儲(chǔ)隔離特征字的特征寄存器,存儲(chǔ)執(zhí)行模式字的控制寄存器、存儲(chǔ)邏輯處理器值的邏輯處理器寄存器、存儲(chǔ)屏蔽值的屏蔽寄存器、存儲(chǔ)基本值的基本寄存器、存儲(chǔ)幀的幀寄存器組、存儲(chǔ)出口地址的退出幀寄存器、存儲(chǔ)入口地址的進(jìn)入幀寄存器和存儲(chǔ)處理器安全內(nèi)核加載器地址的加載器寄存器。
36.如權(quán)利要求35所述的系統(tǒng),其中,外部存儲(chǔ)器包括在MCH中的存儲(chǔ)器控制器中心(MCH)存儲(chǔ)器和在ICH中的輸入/輸出控制器中心(ICH)存儲(chǔ)器。
37.如權(quán)利要求36所述的系統(tǒng),其中,執(zhí)行模式字把處理器配置為隔離執(zhí)行模式。
38.如權(quán)利要求37所述的系統(tǒng),其中,當(dāng)執(zhí)行iso_init指令時(shí),使得處理器假如隔離區(qū)域還沒(méi)有被生成的話(huà),在存儲(chǔ)器中生成隔離區(qū)域,該隔離區(qū)域由基本值和屏蔽值定義;在MCH存儲(chǔ)器中設(shè)置隔離區(qū)域的范圍;利用加載器寄存器中的處理器安全內(nèi)核加載器地址,把處理器安全內(nèi)核加載器復(fù)制到隔離區(qū)域;并且執(zhí)行該處理器安全內(nèi)核加載器。
39.如權(quán)利要求38所述的系統(tǒng),其中,當(dāng)執(zhí)行iso_init指令時(shí),還使得處理器為平臺(tái)初始化隔離區(qū)域;并且獲取處理器安全內(nèi)核的位置。
40.如權(quán)利要求39所述的系統(tǒng),其中,使得處理器執(zhí)行處理器安全內(nèi)核加載器的iso_init指令使得處理器把處理器安全內(nèi)核復(fù)制到隔離區(qū)域;并且使用包含在處理器安全內(nèi)核加載器中的公共密鑰來(lái)校驗(yàn)處理器安全內(nèi)核的簽名;并且如果簽名被驗(yàn)證,執(zhí)行該處理器安全內(nèi)核。
41.如權(quán)利要求37所述的系統(tǒng),其中,當(dāng)執(zhí)行iso_close指令時(shí),使得處理器假如一個(gè)對(duì)應(yīng)的邏輯處理器要最后退出,則復(fù)位處理器中的隔離設(shè)置;并且假如該處理器要最后退出,則復(fù)位在MCH和ICH中的隔離設(shè)置。
42.如權(quán)利要求37所述的系統(tǒng),其中,當(dāng)執(zhí)行iso_enter指令時(shí),使得處理器在退出幀中存儲(chǔ)幀寄存器組的內(nèi)容,退出幀寄存器中的出口地址指向該退出幀;并且把進(jìn)入幀加載到幀寄存器組,進(jìn)入幀寄存器中的入口地址指向該進(jìn)入幀。
43.如權(quán)利要求37所述的系統(tǒng),其中,當(dāng)執(zhí)行iso_exit指令時(shí),使得處理器把退出幀加載到幀寄存器組,退出幀寄存器中的出口地址指向該退出幀。
44.如權(quán)利要求37所述的系統(tǒng),其中,當(dāng)執(zhí)行iso_config_read指令時(shí),使得處理器返回與參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。
45.如權(quán)利要求37所述的系統(tǒng),其中,當(dāng)執(zhí)行iso_config_write指令時(shí),使得處理器寫(xiě)與參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。
46.一種計(jì)算機(jī)程序產(chǎn)品,包括內(nèi)部含有計(jì)算機(jī)程序代碼的機(jī)器可讀介質(zhì),該計(jì)算機(jī)程序產(chǎn)品具有計(jì)算機(jī)可讀程序代碼,用于由在一個(gè)平臺(tái)中運(yùn)行的處理器內(nèi)的執(zhí)行單元執(zhí)行隔離指令,該處理器被配置為正常執(zhí)行模式和隔離執(zhí)行模式之一;和計(jì)算機(jī)可讀程序代碼,用于當(dāng)處理器被配置為隔離執(zhí)行模式時(shí),由包含至少一個(gè)參數(shù)的參數(shù)存儲(chǔ)器支持隔離指令執(zhí)行。
47.如權(quán)利要求46所述的計(jì)算機(jī)程序產(chǎn)品,其中,用于執(zhí)行隔離指令的計(jì)算機(jī)可讀程序代碼包括用于執(zhí)行隔離初始化(iso_init)指令、隔離關(guān)閉(iso_close)指令、隔離進(jìn)入(iso_enter)指令、隔離退出(iso_exit)指令、隔離配置讀(iso_config_read)指令和隔離配置寫(xiě)(iso_config_write)指令之一的計(jì)算機(jī)可讀程序代碼。
48.如權(quán)利要求47所述的計(jì)算機(jī)程序產(chǎn)品,其中,至少一個(gè)參數(shù)是隔離特征字、執(zhí)行模式字、邏輯處理器值、包括屏蔽值和基本值的隔離設(shè)置、幀、出口物理地址、入口物理地址和處理器安全內(nèi)核加載器物理地址之一。
49.如權(quán)利要求48所述的計(jì)算機(jī)程序產(chǎn)品,其中,參數(shù)存儲(chǔ)器是內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器之一。
50.如權(quán)利要求49所述的計(jì)算機(jī)程序產(chǎn)品,其中,內(nèi)部存儲(chǔ)器包括存儲(chǔ)隔離特征字的特征寄存器、存儲(chǔ)執(zhí)行模式字的控制寄存器、存儲(chǔ)邏輯處理器值的邏輯處理器寄存器、存儲(chǔ)屏蔽值的屏蔽寄存器、存儲(chǔ)基本值的基本寄存器、存儲(chǔ)幀的幀寄存器組、存儲(chǔ)出口地址的退出幀寄存器、存儲(chǔ)入口地址的進(jìn)入幀寄存器和存儲(chǔ)處理器安全內(nèi)核加載器地址的加載器寄存器。
51.如權(quán)利要求50所述的計(jì)算機(jī)程序產(chǎn)品,其中,外部存儲(chǔ)器包括在MCH中的存儲(chǔ)器控制器中心(MCH)存儲(chǔ)器和在ICH中的輸入/輸出控制器中心(ICH)存儲(chǔ)器。
52.如權(quán)利要求51所述的計(jì)算機(jī)程序產(chǎn)品,其中,執(zhí)行模式字把處理器配置為隔離執(zhí)行模式。
53.如權(quán)利要求52所述的計(jì)算機(jī)程序產(chǎn)品,其中,用于執(zhí)行iso_init指令的計(jì)算機(jī)可讀程序代碼包括計(jì)算機(jī)可讀程序代碼,用于假如隔離區(qū)域還沒(méi)有被生成的話(huà),在存儲(chǔ)器中生成隔離區(qū)域,該隔離區(qū)域由基本值和屏蔽值定義;計(jì)算機(jī)可讀程序代碼,用于在MCH存儲(chǔ)器中設(shè)置隔離區(qū)域的范圍;計(jì)算機(jī)可讀程序代碼,用于利用加載器寄存器中的處理器安全內(nèi)核加載器地址,把處理器安全內(nèi)核加載器復(fù)制到隔離區(qū)域;和計(jì)算機(jī)可讀程序代碼,用于執(zhí)行該處理器安全內(nèi)核加載器。
54.如權(quán)利要求53所述的計(jì)算機(jī)程序產(chǎn)品,其中,用于執(zhí)行iso_init指令的計(jì)算機(jī)可讀程序代碼還包括計(jì)算機(jī)可讀程序代碼,用于為平臺(tái)初始化隔離區(qū)域;和計(jì)算機(jī)可讀程序代碼,用于獲取處理器安全內(nèi)核的位置。
55.如權(quán)利要求54所述的計(jì)算機(jī)程序產(chǎn)品,其中,用于執(zhí)行處理器安全內(nèi)核加載器的計(jì)算機(jī)可讀程序代碼包括計(jì)算機(jī)可讀程序代碼,用于把處理器安全內(nèi)核復(fù)制到隔離區(qū)域;和計(jì)算機(jī)可讀程序代碼,用于使用包含在處理器安全內(nèi)核加載器中的公共密鑰來(lái)校驗(yàn)處理器安全內(nèi)核的簽名;和計(jì)算機(jī)可讀程序代碼,用于如果簽名被驗(yàn)證,則執(zhí)行該處理器安全內(nèi)核。
56.如權(quán)利要求52所述的計(jì)算機(jī)程序產(chǎn)品,其中,用于執(zhí)行iso_close指令的計(jì)算機(jī)可讀程序代碼包括計(jì)算機(jī)可讀程序代碼,用于假如一個(gè)對(duì)應(yīng)的邏輯處理器要最后退出,則復(fù)位處理器中的隔離設(shè)置;和計(jì)算機(jī)可讀程序代碼,用于假如該處理器要最后退出,則復(fù)位在MCH和ICH中的隔離設(shè)置。
57.如權(quán)利要求52所述的計(jì)算機(jī)程序產(chǎn)品,其中,用于執(zhí)行iso_enter指令的計(jì)算機(jī)可讀程序代碼包括計(jì)算機(jī)可讀程序代碼,用于在退出幀中存儲(chǔ)幀寄存器組的內(nèi)容,退出幀寄存器中的出口地址指向該退出幀;和計(jì)算機(jī)可讀程序代碼,用于把進(jìn)入幀加載到幀寄存器組,進(jìn)入幀寄存器中的入口地址指向該進(jìn)入幀。
58.如權(quán)利要求52所述的計(jì)算機(jī)程序產(chǎn)品,其中,用于執(zhí)行iso_exit指令的計(jì)算機(jī)可讀程序代碼包括計(jì)算機(jī)可讀程序代碼,用于把退出幀加載到幀寄存器組,退出幀寄存器中的出口地址指向該退出幀。
59.如權(quán)利要求52所述的計(jì)算機(jī)程序產(chǎn)品,其中,用于執(zhí)行iso_config_read指令的計(jì)算機(jī)可讀程序代碼包括計(jì)算機(jī)可讀程序代碼,用于返回與參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。
60.如權(quán)利要求52所述的計(jì)算機(jī)程序產(chǎn)品,其中,用于執(zhí)行iso_config_write指令的計(jì)算機(jī)可讀程序代碼包括計(jì)算機(jī)可讀程序代碼,用于寫(xiě)與參數(shù)存儲(chǔ)器對(duì)應(yīng)的配置存儲(chǔ)器的內(nèi)容。
全文摘要
根據(jù)本發(fā)明的實(shí)施例,提供了一種執(zhí)行隔離指令的技術(shù)。在一個(gè)平臺(tái)中運(yùn)行的處理器內(nèi),執(zhí)行單元執(zhí)行隔離指令。該處理器被配置為正常執(zhí)行模式和隔離執(zhí)行模式之一。當(dāng)該處理器被配置為隔離執(zhí)行模式時(shí),參數(shù)存儲(chǔ)器包含至少一個(gè)參數(shù)以支持隔離指令執(zhí)行。
文檔編號(hào)G06F9/46GK1423765SQ01807400
公開(kāi)日2003年6月11日 申請(qǐng)日期2001年3月23日 優(yōu)先權(quán)日2000年3月31日
發(fā)明者卡爾·M·埃利森, 羅杰·A·戈利韋爾, 霍華德·C·赫伯特, 德里克·C·林, 弗朗西斯·X·麥基恩, 吉爾貝特·奈格, 肯·雷內(nèi)里斯, 詹姆斯·A·薩頓, 什里康德·S·塔庫(kù)爾, 米林德·米塔爾 申請(qǐng)人:英特爾公司