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