專(zhuān)利名稱(chēng):用于限制安全執(zhí)行環(huán)境的硬件失敗信息泄漏的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及微處理器系統(tǒng),并更為具體地涉及可以在可信任或安全環(huán)境中操作的微處理器系統(tǒng)。
背景技術(shù):
在本地或遠(yuǎn)程微處理器上執(zhí)行的越來(lái)越多的金融和個(gè)人事務(wù)已經(jīng)促進(jìn)了“可信任的”或“安全的”微處理器環(huán)境的建立。這些環(huán)境設(shè)法解決的問(wèn)題是隱私或正被破壞或?yàn)E用數(shù)據(jù)的泄露。用戶(hù)不希望他們的私人數(shù)據(jù)公之于眾。他們也不希望他們的數(shù)據(jù)在不適當(dāng)?shù)氖聞?wù)中被修改或使用。這樣的例子包括病例卡的無(wú)意公開(kāi)或從在線銀行或其他存放處的資金的電子盜竊。同樣,內(nèi)容提供者尋求對(duì)數(shù)字內(nèi)容(例如,音樂(lè),其他音頻,視頻,或其他類(lèi)型的數(shù)據(jù))的保護(hù)而防止在無(wú)授權(quán)情況下被拷貝。
可以不時(shí)地運(yùn)行于可信任或非可信任模式中,或同時(shí)運(yùn)行在這兩個(gè)模式中的系統(tǒng)可以利用某些錯(cuò)誤報(bào)告措施解決安全問(wèn)題。例如,在奔騰可兼容結(jié)構(gòu)中提供一種硬件錯(cuò)誤報(bào)告系統(tǒng),稱(chēng)為機(jī)器檢測(cè)結(jié)構(gòu)(MCA)。MCA可以提供一種機(jī)制用于檢測(cè)和報(bào)告硬件錯(cuò)誤,例如系統(tǒng)總線錯(cuò)誤,糾錯(cuò)碼(ECC)錯(cuò)誤,奇偶錯(cuò)誤,高速緩存錯(cuò)誤,以及翻譯后援緩沖器(TLB)錯(cuò)誤。MCA可以包括多個(gè)支持MCA的寄存器,所述寄存器可以用于記錄與可被檢測(cè)到的錯(cuò)誤有關(guān)的信息。MCA寄存器如果在可信任模式的操作過(guò)程中發(fā)生硬件失敗,則它們會(huì)具有寫(xiě)入其中的安全感應(yīng)信息。為了更好的支持診斷軟件的并發(fā)執(zhí)行,這些MCA寄存器的內(nèi)容可以通過(guò)處理器重啟事件而保存下來(lái)。
在一些處理器實(shí)例中具有內(nèi)部調(diào)試標(biāo)記,該標(biāo)記可以影響對(duì)另一個(gè)硬件測(cè)試和調(diào)試鉤(debug hook)的訪問(wèn)。例如,如果內(nèi)部調(diào)試標(biāo)記被設(shè)定,則訪問(wèn)可以被授權(quán)為內(nèi)部處理器節(jié)點(diǎn)狀態(tài),所述狀態(tài)在正常的處理器運(yùn)行過(guò)程中無(wú)效。該標(biāo)記可以在制造和最終測(cè)試過(guò)程中設(shè)置,而在準(zhǔn)備向終端用戶(hù)傳送過(guò)程中被清除。在其他實(shí)例中,可以實(shí)施內(nèi)部調(diào)試標(biāo)記的其他控制方法。
參考附圖以示例的方式而不是以限制的方式舉例說(shuō)明了本發(fā)明,附圖中相同的附圖標(biāo)記表示相同的元件,其中圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的示例可信任或安全軟件環(huán)境的示意圖。
圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的機(jī)器檢測(cè)結(jié)構(gòu)定序器和寄存器的示意圖。
圖3A是根據(jù)本發(fā)明一個(gè)實(shí)施例的機(jī)器檢測(cè)結(jié)構(gòu)狀態(tài)寄存器的示意圖。
圖3B是根據(jù)本發(fā)明一個(gè)實(shí)施例的機(jī)器檢測(cè)結(jié)構(gòu)地址寄存器的示意圖。
圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的一組機(jī)器檢測(cè)結(jié)構(gòu)狀態(tài)寄存器的示意圖。
圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的定序器操作的流程圖。
圖6A是根據(jù)本發(fā)明實(shí)施例的包括具有機(jī)器檢測(cè)結(jié)構(gòu)定序器的處理器的系統(tǒng)的示意圖。
圖6B是根據(jù)本發(fā)明另一實(shí)施例的包括具有機(jī)器檢測(cè)結(jié)構(gòu)定序器的處理器的系統(tǒng)的示意圖。
具體實(shí)施例方式
以下說(shuō)明描述了這樣的技術(shù)用于在處理器系統(tǒng)的安全或可信任模式操作過(guò)程中,限制由錯(cuò)誤報(bào)告系統(tǒng)收集的硬件失敗信息的泄露。在以下說(shuō)明中,列出了諸如邏輯設(shè)備,軟件模塊配置,總線和其他接口信號(hào)傳輸技術(shù)之類(lèi)的多個(gè)具體細(xì)節(jié)以及操作細(xì)節(jié),以提供對(duì)本發(fā)明更為透徹的理解。然而,本發(fā)明所屬領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)現(xiàn)。在其他情況下,控制結(jié)構(gòu),門(mén)級(jí)電路和全軟件指令序列沒(méi)有被詳細(xì)示出以免模糊本發(fā)明。根據(jù)所包括的說(shuō)明,本領(lǐng)域的普通技術(shù)人員能夠在不進(jìn)行過(guò)度實(shí)驗(yàn)的情況下實(shí)現(xiàn)相應(yīng)的功能。在某些實(shí)施例中,本發(fā)明以在諸如因特爾公司制造的奔騰可兼容處理器中實(shí)現(xiàn)的機(jī)器檢測(cè)結(jié)構(gòu)(MCA)的形式公開(kāi)。然而,本發(fā)明也可以在其他類(lèi)型的處理器的其他類(lèi)型錯(cuò)誤報(bào)告系統(tǒng)中實(shí)現(xiàn),所述處理器例如Itanium處理器系列可兼容處理器,X-Scale系列可兼容處理器,或來(lái)自其他供應(yīng)商或設(shè)計(jì)者的任何處理器結(jié)構(gòu)的多個(gè)種類(lèi)的不同通用處理器中的任何一種。另外,一些實(shí)施例可以包括或者可以是專(zhuān)用處理器,諸如圖形,網(wǎng)絡(luò),圖像,通信,或任何其他已知或可用類(lèi)型的處理器。
現(xiàn)參照?qǐng)D1,根據(jù)本發(fā)明一個(gè)實(shí)施例示出了示例可信任或安全軟件環(huán)境的示意圖。在圖1實(shí)施例中,可信任和非可信任軟件可以被同時(shí)加載并可以在一個(gè)計(jì)算機(jī)系統(tǒng)(如硬件180所示)中同時(shí)執(zhí)行。硬件180可以包括一個(gè)或多個(gè)處理器,將處理器連接于存儲(chǔ)器或輸入/輸出設(shè)備的邏輯(有時(shí)稱(chēng)為“芯片集”),以及諸如可信任平臺(tái)模塊之類(lèi)的專(zhuān)用安全設(shè)備。
安全虛擬機(jī)監(jiān)控器(SVMM)150可以選擇性地允許或阻止一個(gè)或多個(gè)非可信任操作系統(tǒng)140和非可信任應(yīng)用程序110通過(guò)130直接訪問(wèn)硬件180。在這種情況下,“非可信任的”不必表示操作系統(tǒng)或應(yīng)用程序故意發(fā)生誤差,而是相互作用代碼(interacting code)的大小和種類(lèi)使得可靠地?cái)嘌攒浖缢谕剡\(yùn)行、并且沒(méi)有病毒或其他外部代碼妨礙該軟件的執(zhí)行是不實(shí)際的。在典型實(shí)施例中,非可信任代碼可以包括在如今個(gè)人計(jì)算機(jī)上建立的普通操作系統(tǒng)和應(yīng)用程序。
SVMM 150也選擇性地允許或阻止一個(gè)或多個(gè)可信任或安全內(nèi)核160和一個(gè)或多個(gè)可信任應(yīng)用程序170直接訪問(wèn)硬件180。可以限制這種可信任或安全內(nèi)核160和可信任應(yīng)用程序170的大小和功能以增強(qiáng)對(duì)其執(zhí)行信任分析的能力。可信任應(yīng)用程序170可以是可在安全環(huán)境中執(zhí)行的任何軟件代碼,程序,例行程序,或例行程序集。因此,可信任應(yīng)用程序170可以是各種應(yīng)用程序,或代碼序列,或者可以是諸如Java小程序之類(lèi)的相對(duì)較小的應(yīng)用程序。
通常由操作系統(tǒng)140或內(nèi)核160執(zhí)行的、能夠改變系統(tǒng)資源保護(hù)或特權(quán)的指令或操作可以由SVMM 150捕獲,并選擇性地允許,部分性地允許,或拒絕。作為例子,在典型實(shí)施例中,通常由操作系統(tǒng)140或內(nèi)核160執(zhí)行的、改變處理器頁(yè)表的指令被SVMM 150替代地捕獲,這將確保請(qǐng)求沒(méi)有試圖將頁(yè)特權(quán)改變到其虛擬機(jī)區(qū)域之外。
硬件180內(nèi)的一個(gè)處理器或多個(gè)處理器可以包含某些專(zhuān)用電路或邏輯元件以初始化和支持安全或可信任操作。例如,處理器可以支持初始化可信任操作的專(zhuān)用安全模式開(kāi)始(SENTER)指令的執(zhí)行。當(dāng)被執(zhí)行時(shí),SENTER指令可以以可信任的方式加載并初始化SVMM 150,從而在先前非可信任系統(tǒng)中初始化可信任操作。
SENTER指令的初始處理器的執(zhí)行可以通過(guò)將執(zhí)行控制轉(zhuǎn)移到系統(tǒng)初始代碼的可信任拷貝而終止,然后可以執(zhí)行其系統(tǒng)測(cè)試和配置操作并可以寄存SVMM 150的存儲(chǔ)駐留拷貝。一旦可信任系統(tǒng)初始化代碼已經(jīng)完成其執(zhí)行,則系統(tǒng)初始化代碼可以最終將初始化處理器的執(zhí)行控制轉(zhuǎn)移到SVMM 150。這時(shí),在硬件180的處理器中安全模式標(biāo)記可以被設(shè)置為真。在一個(gè)實(shí)施例中,安全模式標(biāo)記可以由處理器微碼控制,并且在結(jié)構(gòu)上是不可見(jiàn)的。從向前的這個(gè)角度來(lái)看,整個(gè)系統(tǒng)可以如上所述以可信任模式運(yùn)行。
為了在SVMM 150的控制之下離開(kāi)可信任模式,并從而返回至非可信任操作,可以執(zhí)行安全退出(SEXIT)指令。SEXIT指令可以支持終止可信任操作,尤其是SVMM 150的操作。這時(shí),可以在硬件180的處理器中將安全模式標(biāo)記設(shè)置為假。
現(xiàn)參照?qǐng)D2,根據(jù)本發(fā)明一個(gè)實(shí)施例示出了機(jī)器檢測(cè)結(jié)構(gòu)(MCA)定序器和MCA寄存器的示意圖。MCA定序器210和MCA寄存器的復(fù)制拷貝可以位于硬件280內(nèi)的一個(gè)或多個(gè)處理器之內(nèi)。在一個(gè)實(shí)施例中,MCA定序器210可以控制將硬件錯(cuò)誤產(chǎn)生的數(shù)據(jù)加載到MCA寄存器中。MCA定序器210可以在一些條件下將錯(cuò)誤狀態(tài)數(shù)據(jù)加載到MCA狀態(tài)寄存器214組中,將錯(cuò)誤地址和其他可選的混雜數(shù)據(jù)加載到MCA地址和混雜寄存器216組中,并將機(jī)器狀態(tài)數(shù)據(jù)組加載到MCA機(jī)器狀態(tài)寄存器220組中。MCA狀態(tài)寄存器214,MCA地址和混雜寄存器216和MCA機(jī)器狀態(tài)寄存器220可以通過(guò)多種系統(tǒng)事件來(lái)保存它們的數(shù)據(jù)。在多個(gè)實(shí)施例中,這些寄存器可以具有不同程度的非易失性。在一個(gè)實(shí)施例中,這些寄存器中的數(shù)據(jù)可以隨著軟件重置事件而被保存,所述軟件重置事件可以包括隨著奔騰可兼容處理器的INIT#信號(hào)管腳上的信號(hào)確定之后的局部軟重置,或包括隨著奔騰可兼容處理器的RESET#信號(hào)管腳上的信號(hào)確定之后的全局軟重置。然而,在一個(gè)實(shí)施例中這些寄存器中的數(shù)據(jù)可以不必隨著硬件重置而保存,所述硬件重置可以包括關(guān)閉電源之后再打開(kāi),或者去確定(de-assert)奔騰可兼容處理器的PWRGOOD信號(hào)管腳上的信號(hào)。
MCA定序器210可以在不同實(shí)施例中以多個(gè)不同方式實(shí)現(xiàn)。在一個(gè)實(shí)施例中,MCA定序器210可以作為硬件狀態(tài)機(jī)實(shí)現(xiàn)。在其他實(shí)施例中,MCA定序器210可以作為固定的功能硬件邏輯或作為處理器微碼、或作為固定的功能硬件邏輯和處理器微碼的組合實(shí)現(xiàn)。另外其他的實(shí)施例可以通過(guò)執(zhí)行可信任處理器軟件或固件代碼來(lái)實(shí)現(xiàn)MCA定序器210,所述軟件和固件代碼可以存儲(chǔ)在硬件280的處理器之外。
硬件280可以包括安全模式標(biāo)記224。該安全模式標(biāo)記224可以類(lèi)似于結(jié)合圖1的上述標(biāo)記,在圖1中標(biāo)記位于處理器硬件中并由安全指令的微碼控制。在其他實(shí)施例中,該標(biāo)記可以是軟件標(biāo)記,或可以是芯片集內(nèi)的硬件標(biāo)記。MCA定序器210可以檢查安全模式標(biāo)記224的值(真或假),并接著基于MCA寄存器建立的值來(lái)更新或不更新與錯(cuò)誤條件相關(guān)的所選信息到MCA寄存器中。在一個(gè)實(shí)施例中,當(dāng)安全模式標(biāo)記是假時(shí),MCA定序器210可以開(kāi)始將錯(cuò)誤狀態(tài)數(shù)據(jù)加載到MCA狀態(tài)寄存器214組中,將錯(cuò)誤地址和其他可選混雜數(shù)據(jù)加載到MCA地址和混雜寄存器216組中,并將機(jī)器狀態(tài)數(shù)據(jù)組加載到MCA機(jī)器狀態(tài)寄存器220組中。
然而,當(dāng)安全模式標(biāo)記是真時(shí),MCA定序器210仍然可以將錯(cuò)誤狀態(tài)數(shù)據(jù)加載到MCA狀態(tài)寄存器214組中,將錯(cuò)誤地址和其他可選混雜數(shù)據(jù)加載到MCA地址和混雜寄存器216組中,但禁止將機(jī)器狀態(tài)數(shù)據(jù)組加載到MCA機(jī)器狀態(tài)寄存器220組中或?qū)C(jī)器狀態(tài)數(shù)據(jù)組標(biāo)記為無(wú)效。如此,未必包含安全感應(yīng)內(nèi)容(例如什么錯(cuò)誤類(lèi)型、在哪個(gè)地址產(chǎn)生存儲(chǔ)器錯(cuò)誤)的錯(cuò)誤狀態(tài)數(shù)據(jù)和其他類(lèi)似的錯(cuò)誤狀態(tài)數(shù)據(jù)仍然可以被放置在相應(yīng)的MCA寄存器中以有助于以后的調(diào)試。同時(shí),可以包括諸如通用寄存器,指令指針和算法標(biāo)記之類(lèi)的這些內(nèi)容的項(xiàng)的機(jī)器狀態(tài)數(shù)據(jù),可以作為有效數(shù)據(jù)不被加載到MCA機(jī)器狀態(tài)寄存器中。因?yàn)镸CA機(jī)器狀態(tài)寄存器可以由非可信任軟件檢查,所以如果通用寄存器包含諸如密鑰,明碼電文和密碼電文的兩種拷貝,信用卡號(hào)碼,社會(huì)安全號(hào)和其他種類(lèi)的敏感數(shù)據(jù)之類(lèi)的項(xiàng),則這將防止敏感信息的泄露。
在一些實(shí)施例中,硬件280中的處理器也可以包括內(nèi)部調(diào)試標(biāo)記226。該內(nèi)部調(diào)試標(biāo)記226可以在制造處理器時(shí)設(shè)置(真值),并在一個(gè)或多個(gè)已定義事件時(shí)清除。在一個(gè)實(shí)施例中,這些已定義事件可以包括最終測(cè)試或最終制造步驟,或者在將庫(kù)存產(chǎn)品發(fā)布給顧客的時(shí)候。在一個(gè)實(shí)施例中,保險(xiǎn)絲230可以在該已定義事件過(guò)程中熔斷以清除(假值)標(biāo)記。在其他實(shí)施例中,也可以使用其他方法來(lái)設(shè)置和清除內(nèi)部調(diào)試標(biāo)記。內(nèi)部調(diào)試標(biāo)記226可以用于使能處理器制造商的某一測(cè)試和調(diào)試功能,其通常不應(yīng)該被提供給處理器的終端用戶(hù)。
在一個(gè)實(shí)施例中,MCA定序器210也可以檢查內(nèi)部調(diào)試標(biāo)記226的值。在安全模式標(biāo)記224具有假值的情況下,內(nèi)部調(diào)試標(biāo)記226的值是沒(méi)有關(guān)系的,并且MCA定序器210可以開(kāi)始將錯(cuò)誤狀態(tài)數(shù)據(jù)加載到MCA狀態(tài)寄存器214組中,將錯(cuò)誤地址和其他可選混雜數(shù)據(jù)加載到MCA地址和混雜寄存器216組中,并將機(jī)器狀態(tài)數(shù)據(jù)組加載到MCA機(jī)器狀態(tài)寄存器220組中。
在安全模式標(biāo)記224具有真值的情況下,內(nèi)部調(diào)試標(biāo)記226的值是有關(guān)系的。當(dāng)內(nèi)部調(diào)試標(biāo)記226具有真值時(shí),則MCA定序器210可以不考慮安全模式標(biāo)記224的狀態(tài)。在這種情況下,MCA定序器210可以開(kāi)始將錯(cuò)誤狀態(tài)數(shù)據(jù)加載到MCA狀態(tài)寄存器214組中,將錯(cuò)誤地址和其他可選混雜數(shù)據(jù)加載到MCA地址和混雜寄存器216組中,并將機(jī)器狀態(tài)數(shù)據(jù)組加載到MCA機(jī)器狀態(tài)寄存器220組中。當(dāng)內(nèi)部調(diào)試標(biāo)記226具有假值時(shí),則MCA定序器210不可以不考慮安全模式標(biāo)記224的狀態(tài)。在這種情況下,MCA定序器210仍然可以將錯(cuò)誤狀態(tài)數(shù)據(jù)加載到MCA狀態(tài)寄存器214組中,將錯(cuò)誤地址和其他可選混雜數(shù)據(jù)加載到MCA地址和混雜寄存器216組中,但是禁止將機(jī)器狀態(tài)數(shù)據(jù)組加載到MCA機(jī)器狀態(tài)寄存器220組中或?qū)C(jī)器狀態(tài)數(shù)據(jù)組標(biāo)記為無(wú)效。
現(xiàn)參照?qǐng)D3A,根據(jù)本發(fā)明一個(gè)實(shí)施例示出了機(jī)器檢測(cè)結(jié)構(gòu)狀態(tài)(MCA)寄存器300的示意圖。在其他實(shí)施例中,也可以使用其他形式的錯(cuò)誤報(bào)告狀態(tài)寄存器。MCA結(jié)構(gòu)狀態(tài)寄存器300可以是包括在圖2的MCA狀態(tài)寄存器214中的幾個(gè)寄存器中的一個(gè)。在一個(gè)實(shí)施例中,可以具有幾個(gè)這樣的MCA結(jié)構(gòu)狀態(tài)寄存器,對(duì)于所包括的每個(gè)硬件單元的一個(gè)。這種硬件單元可以是高速緩沖存儲(chǔ)器,執(zhí)行單元,總線接口,和處理器的其他這種功能單元。這里MCA結(jié)構(gòu)狀態(tài)寄存器300被標(biāo)記為多個(gè)中的第i個(gè)寄存器。
MCA結(jié)構(gòu)狀態(tài)寄存器300可以包括MCA錯(cuò)誤碼區(qū)域以指定標(biāo)準(zhǔn)錯(cuò)誤碼,特定模型錯(cuò)誤碼區(qū)域以指定對(duì)處理器系列特定的錯(cuò)誤碼,以及多個(gè)標(biāo)記位。這種標(biāo)記位可以包括VAL位,以表示寄存器的內(nèi)容是否有效,包括OVER位以表示當(dāng)先前錯(cuò)誤的結(jié)果仍在寄存器中時(shí)發(fā)生機(jī)器檢測(cè)錯(cuò)誤,包括UC位以表示處理器是否能夠檢查錯(cuò)誤,以及包括EN位以表示錯(cuò)誤由分開(kāi)的控制寄存器(未示出)中的一個(gè)位使能。一對(duì)標(biāo)記位,MISCV和ADDRV可以顯示混雜數(shù)據(jù)寄存器和錯(cuò)誤地址寄存器中的數(shù)據(jù)分別是否有效。這些混雜數(shù)據(jù)和錯(cuò)誤地址寄存器可以包括在圖2的MCA地址和混雜寄存器216中。最后,處理器環(huán)境破壞(PCC)標(biāo)記位可以表示處理器的狀態(tài)很可能已經(jīng)被特定錯(cuò)誤條件破壞,并且表示處理器的可靠的重新啟動(dòng)是不可能的。
現(xiàn)參照?qǐng)D3B,根據(jù)本發(fā)明一個(gè)實(shí)施例示出了機(jī)器檢測(cè)結(jié)構(gòu)(MCA)地址寄存器340的示意圖。MCA地址寄存器340可以是包括在圖2的MCA地址和混雜寄存器216中的幾個(gè)寄存器中的一個(gè)。在一個(gè)實(shí)施例中,可以具有幾個(gè)這樣的MCA地址寄存器,對(duì)于所包括的每個(gè)硬件單元的一個(gè)。這樣的硬件單元可以是高速緩沖存儲(chǔ)器,執(zhí)行單元,總線接口,和處理器的其他這種功能單元。這里,MCA地址寄存器340被標(biāo)記為幾個(gè)寄存器中的第i個(gè)。MCA地址寄存器340可以包含地址區(qū)域以包含產(chǎn)生機(jī)器檢測(cè)錯(cuò)誤的代碼或數(shù)據(jù)存儲(chǔ)位置的地址。當(dāng)相應(yīng)第i結(jié)構(gòu)狀態(tài)寄存器的ADDRV位被清除(假值)時(shí),該MCA地址寄存器340可以不被實(shí)現(xiàn)或沒(méi)有包含地址。
現(xiàn)參照?qǐng)D4,根據(jù)本發(fā)明一個(gè)實(shí)施例示出了機(jī)器檢測(cè)結(jié)構(gòu)狀態(tài)寄存器組的示意圖。在一個(gè)實(shí)施例中,奔騰類(lèi)可兼容處理器的所謂擴(kuò)展寄存器在出現(xiàn)錯(cuò)誤時(shí)的狀態(tài)可以保存在狀態(tài)寄存器410至438中。另外,算法際記EFLAGS寄存器的狀態(tài)可以保存于狀態(tài)寄存器442中。最后,擴(kuò)展指令指針(EIP)的狀態(tài)可以保存于狀態(tài)寄存器446中。
在一個(gè)實(shí)施例中,機(jī)器檢測(cè)結(jié)構(gòu)狀態(tài)寄存器組可以包括一個(gè)或多個(gè)混雜狀態(tài)寄存器450。在一個(gè)實(shí)施例中,混雜狀態(tài)寄存器450可以包含頁(yè)輔助或缺頁(yè)的指示。另外,混雜狀態(tài)寄存器450也可以包括微碼指令指針。在一個(gè)實(shí)施例中,圖2的MCA定序器210可以使用混雜狀態(tài)寄存器450將MCA機(jī)器狀態(tài)寄存器220的內(nèi)容標(biāo)記為無(wú)效。這可以通過(guò)將無(wú)效組合位(例如所有“1”)放置在所有或部分混雜狀態(tài)寄存器450中來(lái)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,混雜狀態(tài)寄存器450內(nèi)的微碼指令指針可以都寫(xiě)為“1”,以將MCA機(jī)器狀態(tài)寄存器220的內(nèi)容標(biāo)記為無(wú)效。在其他實(shí)施例中,也可以使用混雜狀態(tài)寄存器450的其他部分。
現(xiàn)參照?qǐng)D5,根據(jù)本發(fā)明一個(gè)實(shí)施例示出了定序器操作的流程圖。定序器在不同實(shí)施例中可以以不同的方式實(shí)現(xiàn)。在一個(gè)實(shí)施例中,定序器可以實(shí)施為硬件狀態(tài)機(jī)。在其他實(shí)施例中,定序器可以實(shí)施為固定功能硬件邏輯或作為處理器微碼,或作為固定功能硬件邏輯和處理器微碼的組合。另外其他實(shí)施例可以通過(guò)執(zhí)行可信任處理器軟件或固件代碼來(lái)實(shí)現(xiàn)定序器,所述軟件或固件代碼可以存儲(chǔ)在處理器之外。
在塊510中,該處理監(jiān)控MCA行為,查找錯(cuò)誤的出現(xiàn)。在塊514,檢測(cè)到這種錯(cuò)誤。然后在塊518定序器可以記錄硬件錯(cuò)誤類(lèi)型和來(lái)源。在一個(gè)實(shí)施例中,這可以通過(guò)將一個(gè)或多個(gè)錯(cuò)誤碼寫(xiě)入狀態(tài)寄存器并通過(guò)寫(xiě)下產(chǎn)生錯(cuò)誤的代碼或數(shù)據(jù)存儲(chǔ)位置的地址而執(zhí)行。
在確定塊522,可以確定安全模式標(biāo)記是否是真。如果答案是否,則處理可以沿著NO路徑退出確定塊522。然后在塊530,定序器可以記錄處理器的結(jié)構(gòu)狀態(tài)。在一個(gè)實(shí)施例中,這可以通過(guò)將通用寄存器的內(nèi)容、指令指針和其他結(jié)構(gòu)狀態(tài)變量寫(xiě)入機(jī)器狀態(tài)寄存器組而執(zhí)行。在塊534,定序器可以接著確保結(jié)構(gòu)狀態(tài)寄存器被表示為有效。在一個(gè)實(shí)施例中,這可以通過(guò)確保部分混雜狀態(tài)寄存器的內(nèi)容是有效組合位而部分地被執(zhí)行。
返回至確定塊522,如果答案為是,則處理可以沿著YES路徑退出確定塊522。在一個(gè)實(shí)施例中,處理接著進(jìn)入可選確定塊526,而在另一個(gè)實(shí)施例中處理直接進(jìn)入塊538。如果確定塊526存在,則在確定塊526可以確定內(nèi)部調(diào)試標(biāo)記是否為真。如果為真,則處理沿著YES路徑退出確定塊526,并進(jìn)入塊530。如果為假,則處理沿著NO路徑退出確定塊526并進(jìn)入塊538。在塊538,可以防止結(jié)構(gòu)狀態(tài)被記錄,或可以被標(biāo)記為無(wú)效。在一個(gè)實(shí)施例中,這可以通過(guò)將部分混雜狀態(tài)寄存器的內(nèi)容設(shè)置為無(wú)效組合位而部分地被執(zhí)行。在一個(gè)實(shí)施例中,無(wú)效組合位可以都是“1”。
現(xiàn)參照?qǐng)D6A和6B,根據(jù)本發(fā)明兩個(gè)實(shí)施例示出了包括具有機(jī)器檢測(cè)結(jié)構(gòu)定序器的處理器的系統(tǒng)的示意圖。圖6A系統(tǒng)大體上顯示了這樣的系統(tǒng)其中處理器,存儲(chǔ)器,和輸入/輸出設(shè)備是通過(guò)系統(tǒng)總線互連的,而圖6B系統(tǒng)大體上顯示了這樣的系統(tǒng)其中處理器,存儲(chǔ)器,和輸入/輸出設(shè)備是通過(guò)多個(gè)點(diǎn)到點(diǎn)接口而互連的。
圖6A系統(tǒng)可以包括一個(gè)或多個(gè)處理器,為清楚起見(jiàn),這里只示出了其中兩個(gè)處理器40,60。處理器40,60可以包括一級(jí)高速緩沖存儲(chǔ)器42,62。圖6A系統(tǒng)可以具有通過(guò)總線接口44,64,12,8與系統(tǒng)總線6連接的多個(gè)功能。在一個(gè)實(shí)施例中,系統(tǒng)總線6可以是利用因特爾公司制造的奔騰類(lèi)微處理器的前端總線(FSB)。在其他實(shí)施例中,也可以使用其他總線。在一些實(shí)施例中,存儲(chǔ)控制器34和總線橋32可以共同被稱(chēng)為芯片集。在一些實(shí)施例中,芯片集的功能可以在物理芯片中被分開(kāi),而不同于圖6A實(shí)施例所顯示的。
存儲(chǔ)控制器34可以允許處理器40,60從系統(tǒng)存儲(chǔ)器10和從基本輸入/輸出系統(tǒng)(BIOS)可擦寫(xiě)可編程只讀存儲(chǔ)器(EPROM)36讀出和寫(xiě)入。在一些實(shí)施例中,BIOS EPROM 36可以使用閃存。存儲(chǔ)控制器34可以包括總線接口8以允許存儲(chǔ)器系統(tǒng)總線6上從將要被傳送到總線代理的數(shù)據(jù)讀出和將數(shù)據(jù)寫(xiě)入到總線代理。存儲(chǔ)控制器34也可以通過(guò)高性能圖形接口39連接高性能圖形電路38。在某些實(shí)施例中,高性能圖形接口39可以是加速圖形端口AGP接口。存儲(chǔ)控制器34可以通過(guò)高性能圖形接口39將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器10引導(dǎo)到高性能圖形電路38。
圖6B系統(tǒng)也可以包括一個(gè)或多個(gè)處理器,為清楚起見(jiàn),只示出了其中兩個(gè)處理器70,80。處理器70,80每個(gè)可以包括連接于存儲(chǔ)器2,4的本地存儲(chǔ)控制器集線器(MCH)72,82。處理器70,80可以利用點(diǎn)到點(diǎn)接口電路78,88通過(guò)點(diǎn)到點(diǎn)接口50交換數(shù)據(jù)。處理器70,80每個(gè)可以利用點(diǎn)到點(diǎn)接口電路76,94,86,98通過(guò)各個(gè)點(diǎn)到點(diǎn)接口52,54與芯片集90交換數(shù)據(jù)。芯片集90也可以通過(guò)高性能圖形接口92與高性能圖形電路38交換數(shù)據(jù)。
在圖6A系統(tǒng)中,總線橋32可以允許系統(tǒng)總線6和總線16之間的數(shù)據(jù)交換,所述總線16在一些實(shí)施例中可以是工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線或外設(shè)部件互連(PCI)總線。在圖6B系統(tǒng)中,芯片集90可以通過(guò)總線接口96與總線16交換數(shù)據(jù)。在任何一個(gè)系統(tǒng)中,總線16上都具有多個(gè)輸入/輸出I/O設(shè)備14,在一些實(shí)施例中包括低性能圖形控制器,視頻控制器,和聯(lián)網(wǎng)控制器。在一些實(shí)施例中另一個(gè)總線橋18可以用于允許在總線16和總線20之間的數(shù)據(jù)交換。在一些實(shí)施例中總線20可以是小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線,集成驅(qū)動(dòng)電子技術(shù)(IDE)總線,或通用串行(USB)總線。另外I/O設(shè)備可以連接于總線20。這些設(shè)備可以包括鍵盤(pán)和光標(biāo)控制設(shè)備22,包括鼠標(biāo),音頻I/O24,通信設(shè)備26,包括調(diào)制解調(diào)器和網(wǎng)絡(luò)接口,以及數(shù)據(jù)存儲(chǔ)設(shè)備28。軟件代碼30可以存儲(chǔ)在數(shù)據(jù)存儲(chǔ)設(shè)備28中。在一些實(shí)施例中,數(shù)據(jù)存儲(chǔ)設(shè)備28可以是固定磁盤(pán),軟盤(pán)驅(qū)動(dòng)器,光盤(pán)驅(qū)動(dòng)器,磁光盤(pán)驅(qū)動(dòng)器,磁帶,或非易失性存儲(chǔ)器,包括閃存。
在以上說(shuō)明中,已參照具體實(shí)施例描述了本發(fā)明。然而,很明顯的是,在不背離如所附權(quán)利要求中所提出的本發(fā)明更為寬泛的精神和范圍的情況下可以對(duì)其作出多種修改和改變。因此,說(shuō)明書(shū)和附圖是示例而不是限制。
權(quán)利要求
1.一種裝置,包括指示處理器在可信任模式中運(yùn)行的安全模式標(biāo)記;以及當(dāng)所述安全模式標(biāo)記為真時(shí)將機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效的定序器。
2.根據(jù)權(quán)利要求1所述的裝置,其中所述定序器通過(guò)為所述機(jī)器狀態(tài)寄存器設(shè)置有效位來(lái)將所述機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效。
3.根據(jù)權(quán)利要求1所述的裝置,其中所述定序器通過(guò)將所述機(jī)器狀態(tài)寄存器的部分混雜狀態(tài)寄存器設(shè)置為無(wú)效數(shù)字來(lái)將所述機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效。
4.根據(jù)權(quán)利要求1所述的裝置,其中當(dāng)所述安全模式標(biāo)記為假時(shí)所述定序器將機(jī)器狀態(tài)數(shù)據(jù)加載到所述機(jī)器狀態(tài)寄存器中。
5.根據(jù)權(quán)利要求4所述的裝置,其中即使所述安全模式標(biāo)記為真,當(dāng)所述安全模式標(biāo)記仍是真時(shí),所述定序器確保所述機(jī)器狀態(tài)寄存器沒(méi)有被標(biāo)記為無(wú)效。
6.根據(jù)權(quán)利要求1所述的裝置,還包括內(nèi)部調(diào)試標(biāo)記,其中當(dāng)所述內(nèi)部調(diào)試標(biāo)記為假并且所述安全模式標(biāo)記為真時(shí),所述定序器將機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效。
7.根據(jù)權(quán)利要求6所述的裝置,其中當(dāng)所述內(nèi)部調(diào)試標(biāo)記為真而忽視所述安全模式標(biāo)記,所述定序器將機(jī)器狀態(tài)數(shù)據(jù)加載到所述機(jī)器狀態(tài)寄存器中。
8.根據(jù)權(quán)利要求1所述的裝置,其中忽視所述安全模式標(biāo)記的值,所述定序器將機(jī)器錯(cuò)誤狀態(tài)數(shù)據(jù)加載到機(jī)器錯(cuò)誤狀態(tài)寄存器中。
9.根據(jù)權(quán)利要求1所述的裝置,其中所述安全模式標(biāo)記是通過(guò)執(zhí)行安全模式進(jìn)入指令而設(shè)置的。
10.一種方法,包括接收機(jī)器錯(cuò)誤數(shù)據(jù);確定安全模式標(biāo)記的第一值;以及如果所述第一值是真則將機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效。
11.根據(jù)權(quán)利要求10所述的方法,其中所述作標(biāo)記步驟包括為所述機(jī)器狀態(tài)寄存器設(shè)置有效位。
12.根據(jù)權(quán)利要求10所述的方法,其中所述作標(biāo)記步驟包括將所述機(jī)器狀態(tài)寄存器的部分混雜狀態(tài)寄存器設(shè)置為無(wú)效數(shù)字。
13.根據(jù)權(quán)利要求10所述的方法,還包括當(dāng)所述第一值為假時(shí)將機(jī)器狀態(tài)數(shù)據(jù)加載到所述機(jī)器狀態(tài)寄存器中。
14.根據(jù)權(quán)利要求13所述的方法,還包括當(dāng)所述第一值為假時(shí)確保所述機(jī)器狀態(tài)寄存器沒(méi)有被標(biāo)記為無(wú)效。
15.根據(jù)權(quán)利要求10所述的方法,其中所述作標(biāo)記步驟包括當(dāng)內(nèi)部調(diào)試標(biāo)記的第二值是假并且所述安全模式標(biāo)記的所述第一值為真時(shí),將所述機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效。
16.根據(jù)權(quán)利要求15所述的方法,還包括即使所述安全模式標(biāo)記的所述第一值為真,當(dāng)所述第二值仍是真時(shí)將機(jī)器狀態(tài)數(shù)據(jù)加載到所述機(jī)器狀態(tài)寄存器中。
17.根據(jù)權(quán)利要求10所述的方法,還包括忽視所述第一值,將機(jī)器錯(cuò)誤狀態(tài)數(shù)據(jù)加載到機(jī)器錯(cuò)誤狀態(tài)寄存器中。
18.根據(jù)權(quán)利要求10所述的方法,還包括通過(guò)執(zhí)行安全模式進(jìn)入指令來(lái)設(shè)置所述第一值。
19.一種系統(tǒng),包括處理器,包括安全模式標(biāo)記,其用于指示處理器以安全模式運(yùn)行,以及定序器,其用于當(dāng)所述安全模式標(biāo)記是真時(shí)將機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效;系統(tǒng)互連接口;以及音頻輸入/輸出邏輯。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中所述定序器通過(guò)為所述機(jī)器狀態(tài)寄存器設(shè)置有效位來(lái)將所述機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效。
21.根據(jù)權(quán)利要求19所述的系統(tǒng),其中所述定序器通過(guò)將所述機(jī)器狀態(tài)寄存器的部分混雜狀態(tài)寄存器設(shè)置為無(wú)效數(shù)字來(lái)將所述機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效。
22.根據(jù)權(quán)利要求19所述的系統(tǒng),其中當(dāng)所述安全模式標(biāo)記為假時(shí)所述定序器將機(jī)器狀態(tài)數(shù)據(jù)加載到所述機(jī)器狀態(tài)寄存器中。
23.根據(jù)權(quán)利要求22所述的系統(tǒng),其中當(dāng)所述安全模式標(biāo)記為假時(shí)所述定序器確保所述機(jī)器狀態(tài)寄存器沒(méi)有被標(biāo)記為無(wú)效。
24.根據(jù)權(quán)利要求19所述的系統(tǒng),其中忽視所述安全模式標(biāo)記的值,所述定序器將機(jī)器錯(cuò)誤狀態(tài)數(shù)據(jù)加載到機(jī)器錯(cuò)誤狀態(tài)寄存器中。
25.根據(jù)權(quán)利要求19所述的系統(tǒng),其中所述安全模式標(biāo)記是通過(guò)執(zhí)行安全模式進(jìn)入指令而設(shè)置的。
26.一種計(jì)算機(jī)可讀介質(zhì),包含機(jī)器可執(zhí)行程序來(lái)執(zhí)行以下處理接收機(jī)器錯(cuò)誤數(shù)據(jù);確定安全模式標(biāo)記的第一值;以及如果所述第一值是真,則將機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效。
27.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)可讀介質(zhì),其中所述作標(biāo)記步驟包括為所述機(jī)器狀態(tài)寄存器設(shè)置有效位。
28.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)可讀介質(zhì),其中所述作標(biāo)記步驟包括將所述機(jī)器狀態(tài)寄存器的部分混雜狀態(tài)寄存器設(shè)置為無(wú)效數(shù)字。
29.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)可讀介質(zhì),還包括當(dāng)所述第一值為假時(shí),將機(jī)器狀態(tài)數(shù)據(jù)加載到所述機(jī)器狀態(tài)寄存器中。
30.根據(jù)權(quán)利要求29所述的計(jì)算機(jī)可讀介質(zhì),還包括當(dāng)所述第一值為假時(shí)確保所述機(jī)器狀態(tài)寄存器沒(méi)有被標(biāo)記為無(wú)效。
31.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)可讀介質(zhì),其中所述作標(biāo)記步驟包括當(dāng)內(nèi)部調(diào)試標(biāo)記的第二值是假并且所述安全模式標(biāo)記的所述第一值為真時(shí)將所述機(jī)器狀態(tài)寄存器標(biāo)記為無(wú)效。
32.根據(jù)權(quán)利要求31所述的計(jì)算機(jī)可讀介質(zhì),還包括即使所述安全模式標(biāo)記的所述第一值為真,當(dāng)所述第二值也是真時(shí),將機(jī)器狀態(tài)數(shù)據(jù)加載到所述機(jī)器狀態(tài)寄存器中。
33.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)可讀介質(zhì),還包括忽視所述第一值,將機(jī)器錯(cuò)誤狀態(tài)數(shù)據(jù)加載到機(jī)器錯(cuò)誤狀態(tài)寄存器中。
34.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)可讀介質(zhì),還包括通過(guò)執(zhí)行安全模式進(jìn)入指令來(lái)設(shè)定所述第一值。
全文摘要
描述了用于限制硬件失敗信息泄露的方法和裝置。在一個(gè)實(shí)施例中,處理器的錯(cuò)誤報(bào)告系統(tǒng)可以將多種狀態(tài)和錯(cuò)誤地址數(shù)據(jù)記錄到寄存器中,寄存器通過(guò)熱復(fù)位事件保持它們的內(nèi)容。但是處理器的錯(cuò)誤報(bào)告系統(tǒng)接著可以確定處理器是否在以可信任的或安全的模式中運(yùn)行。如果沒(méi)有,則處理器的結(jié)構(gòu)狀態(tài)變量也可以被記錄到寄存器中。但是如果處理器在以可信任的或安全的模式中運(yùn)行,則結(jié)構(gòu)狀態(tài)變量的記錄可以被禁止,或標(biāo)記為無(wú)效。
文檔編號(hào)G06F1/00GK1760884SQ200510116590
公開(kāi)日2006年4月19日 申請(qǐng)日期2005年9月30日 優(yōu)先權(quán)日2004年9月30日
發(fā)明者S·菲徹爾, S·達(dá)塔 申請(qǐng)人:英特爾公司