專(zhuān)利名稱(chēng):用于在安全執(zhí)行期間資源的無(wú)死鎖總線保護(hù)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及安全執(zhí)行環(huán)境。更具體地,本發(fā)明的實(shí)施例涉及在具有至少一個(gè)以安全執(zhí)行模式執(zhí)行的處理器的多處理器系統(tǒng)中避免死鎖條件。背景多處理器系統(tǒng)在現(xiàn)今信息驅(qū)動(dòng)的社會(huì)中無(wú)處不在。在一些情況中,期望允許系統(tǒng) 中的一個(gè)處理器處理安全敏感信息,同時(shí)限制系統(tǒng)中的其他處理器訪問(wèn)該信息。為此,已經(jīng) 建立了各種安全環(huán)境來(lái)對(duì)安全數(shù)據(jù)的潛在訪問(wèn)器進(jìn)行驗(yàn)證,并在數(shù)據(jù)處于共享存儲(chǔ)器或其 他共享資源時(shí)阻止其他代理訪問(wèn)該數(shù)據(jù)。在一些情況中,阻止在共享總線上的仲裁器把總 線授權(quán)給任何不在安全模式中執(zhí)行的處理器。遺憾的是,諸如停止時(shí)鐘操作之類(lèi)的一些全 局操作需要來(lái)自所有處理器的確認(rèn)以表示它們都準(zhǔn)備好發(fā)生停止時(shí)鐘操作。當(dāng)仲裁器使除 了用于安全模式中的處理器以外的所有總線代理遠(yuǎn)離總線時(shí),剩余的總線代理就不能確認(rèn) 停止時(shí)鐘請(qǐng)求,因此決不會(huì)發(fā)生停止時(shí)鐘操作。這導(dǎo)致了明顯的能力低效和/或死鎖條件。附圖簡(jiǎn)述本發(fā)明通過(guò)實(shí)例的方式并且不限于附圖中的圖來(lái)進(jìn)行說(shuō)明,其中相同的參考標(biāo)記 表示相同的元件。應(yīng)當(dāng)注意,在本公開(kāi)中對(duì)“一”或“一個(gè)”實(shí)施例的提及未必是相同的實(shí) 施例,并且這種提及是指至少一個(gè)。
圖1是本發(fā)明一個(gè)實(shí)施例的系統(tǒng)的框圖。圖2是本發(fā)明一個(gè)實(shí)施例的芯片組中的操作的流程圖。圖3是在本發(fā)明一個(gè)實(shí)施例中處理器中的操作的流程圖。詳細(xì)說(shuō)明圖1是本發(fā)明一個(gè)實(shí)施例的系統(tǒng)的框圖。諸如處理器100之類(lèi)的第一總線代理被 耦合到總線112??偩€112由諸如處理器160之類(lèi)的一個(gè)或多個(gè)附加總線代理共享。總線 代理的數(shù)量可以是任意大的,并且受限于總線112的物理和電氣限制。仲裁單元114仲裁在 諸如處理器100和處理器160之類(lèi)的各種總線代理之間對(duì)總線112的訪問(wèn)。在一些實(shí)施例 中,分開(kāi)的物理總線可以存在,但是被邏輯地仲裁為單個(gè)總線。芯片組120駐留在總線112 上。芯片組120提供了在總線代理共享總線112和系統(tǒng)存儲(chǔ)器140以及輸入/輸出(I/O) 設(shè)備150之間的接口。在一個(gè)實(shí)施例中,每個(gè)處理器可以具有一個(gè)專(zhuān)用總線和與芯片組120 的接口來(lái)訪問(wèn)諸如系統(tǒng)存儲(chǔ)器140和I/O設(shè)備150之類(lèi)的系統(tǒng)資源。每個(gè)處理器100、160分別包括高速緩存102和162。在多處理器系統(tǒng)中高速緩存 的一致性可以以任何常規(guī)的方式來(lái)執(zhí)行,包括回寫(xiě)、直寫(xiě)或任何其他在多處理器系統(tǒng)中傳 統(tǒng)地保持該高速緩存一致性的方式。處理器100包括通過(guò)發(fā)出適當(dāng)?shù)目偩€周期來(lái)允許處理 器進(jìn)入和退出安全執(zhí)行模式的微碼110。驗(yàn)證引擎108被提供來(lái)允許處理器100對(duì)從外部 源接收的代碼進(jìn)行驗(yàn)證以確保該代碼應(yīng)當(dāng)是可信的。在一個(gè)實(shí)施例中,驗(yàn)證引擎108可以在代碼模塊上通過(guò)散列該代碼并將該散列值與使用公共私有密鑰對(duì)的公共密鑰所解密的 數(shù)字簽名的散列值進(jìn)行比較來(lái)執(zhí)行驗(yàn)證。在可選擇實(shí)施例中,驗(yàn)證可以通過(guò)微碼110來(lái)執(zhí) 行。一旦對(duì)代碼進(jìn)行了成功驗(yàn)證,處理器100就可以廣播總線周期以請(qǐng)求進(jìn)入安全模式。一 旦處于安全模式,處理器100就可以以安全模式進(jìn)行操作,直至它發(fā)出總線周期來(lái)釋放該 安全模式。在一個(gè)實(shí)施例中,微碼110使用總線控制器104作為與總線112的聯(lián)絡(luò)(liaison) 以產(chǎn)生總線周期來(lái)進(jìn)入安全執(zhí)行模式。在安全執(zhí)行模式中,處理器100執(zhí)行來(lái)自?xún)?nèi)部隨機(jī) 存取存儲(chǔ)器(RAM) 106的驗(yàn)證代碼。由于RAM 106是內(nèi)部數(shù)據(jù),因此其中所持續(xù)的代碼通常 都不能由外部代理訪問(wèn),除非該代碼可以使用來(lái)自系統(tǒng)存儲(chǔ)器140的安全敏感數(shù)據(jù)或者執(zhí) 行包括其他總線代理不應(yīng)當(dāng)被授權(quán)訪問(wèn)的數(shù)據(jù)的安全敏感I/O操作。因此,當(dāng)處理器100以 安全模式操作時(shí),重要的是不允許處理器160執(zhí)行在總線112上的安全敏感總線周期。然 而,如上所述,通過(guò)拒絕它在仲裁器114處仲裁的權(quán)利來(lái)限制處理器160訪問(wèn)該總線,會(huì)導(dǎo) 致死鎖條件。因此,當(dāng)總線控制器104發(fā)出了構(gòu)成對(duì)進(jìn)入安全模式的請(qǐng)求的信號(hào)時(shí),在芯片組 120中的總線控制器124接收該周期,并且識(shí)別邏輯126提取處理器100的標(biāo)識(shí)符,與系統(tǒng) 中的其他總線代理相比,該標(biāo)識(shí)符唯一地對(duì)其進(jìn)行標(biāo)識(shí)。該標(biāo)識(shí)符被記錄在存儲(chǔ)單元128 中,以供與后續(xù)的總線周期進(jìn)行比較時(shí)使用。在另一個(gè)實(shí)施例中,所有的處理器執(zhí)行高速緩 存無(wú)效握手以作為處理器進(jìn)入安全模式的先決條件。在處理器100和160中存在的高速緩 存無(wú)效邏輯130、131分別執(zhí)行高速緩存無(wú)效。這消除了在安全執(zhí)行模式期間回寫(xiě)的需要。 在可選擇實(shí)施例中,并不發(fā)生高速緩存無(wú)效,但是響應(yīng)于探聽(tīng)(snoop)周期而來(lái)自不安全 總線代理的寫(xiě)入不被認(rèn)為是“安全敏感”周期。當(dāng)處理器100以安全執(zhí)行模式操作時(shí),芯片組120監(jiān)視總線112的安全敏感周期。 如果識(shí)別了安全敏感周期,則芯片組使用比較邏輯122來(lái)將始發(fā)總線代理的標(biāo)識(shí)符與在存 儲(chǔ)單元128中所記錄的標(biāo)識(shí)符進(jìn)行比較。如果標(biāo)識(shí)符匹配,例如安全敏感總線周期的始發(fā) 者是以安全模式操作的總線代理,則允許該事務(wù)完成。然而,如果標(biāo)識(shí)符不匹配,例如在處 理器100以安全執(zhí)行模式執(zhí)行時(shí)處理器160試圖從系統(tǒng)存儲(chǔ)器140讀出或?qū)懭?,則芯片組 120將進(jìn)行調(diào)解(intercede),并且將試圖阻止該事務(wù)的完成,或者阻止不安全總線代理的 進(jìn)一步的事務(wù)。為了便于調(diào)解,芯片組120可以包括復(fù)位/中斷邏輯132。在一個(gè)實(shí)施例 中,芯片組120通過(guò)響應(yīng)于由不安全總線代理發(fā)出的安全敏感總線周期而要求(assert)系 統(tǒng)復(fù)位來(lái)調(diào)解。在另一個(gè)實(shí)施例中,芯片組120對(duì)諸如以安全模式執(zhí)行的處理器100之類(lèi) 的總線代理要求高優(yōu)先級(jí)中斷。在每個(gè)處理器都具有專(zhuān)用總線但是共享某些系統(tǒng)資源的實(shí) 施例中,只有對(duì)諸如系統(tǒng)存儲(chǔ)器140或I/O設(shè)備150之類(lèi)的共享資源的訪問(wèn)可被認(rèn)為是安 全敏感的。換句話說(shuō),即使當(dāng)另一個(gè)總線代理處于安全模式時(shí),處理器也可以在無(wú)需芯片組 干預(yù)的情況下不使用其專(zhuān)用資源。在一些情況下,芯片組120可能希望執(zhí)行全局動(dòng)作(action)。例如,在電源管理的情況下,芯片組常常被分派要求停止時(shí)鐘動(dòng)作的任務(wù)。然而,在該全局動(dòng)作可以發(fā)生之前, 在總線上的每個(gè)代理,例如處理器100和處理器160,必須確認(rèn)它們處于例如它們的時(shí)鐘可 以被停止的狀態(tài)。由于停止時(shí)鐘確認(rèn)不被視為安全敏感事務(wù),因此即使當(dāng)一個(gè)代理以安全 執(zhí)行模式操作時(shí)也允許來(lái)自總線上的所有代理完成它。以這種方式,電源管理和其他內(nèi)務(wù)處理雜事可以被有效地完成,而不危害安全執(zhí)行模式的安全性。在一些實(shí)施例中,諸如直接存儲(chǔ)器存取(DMA)控制器、網(wǎng)卡和其他I/O總線主控器之類(lèi)的其他總線代理可能?chē)L試安全敏感事務(wù)。在一個(gè)實(shí)施例中,對(duì)這種設(shè)備的違反安全性 的防止留給控制它們的處理器。在另一個(gè)實(shí)施例中,芯片組將這種總線代理視作它將是這 樣的處理器總線代理,例如在另一個(gè)代理處于安全模式時(shí)如果這種代理要求了安全敏感周 期則進(jìn)行干預(yù)。圖2是本發(fā)明一個(gè)實(shí)施例的芯片組中的操作的流程圖。在判定塊202,確定總線周 期是否構(gòu)成對(duì)進(jìn)入安全模式的請(qǐng)求。如果不是,芯片組就監(jiān)視附加的總線周期,從而允許它 們以正常過(guò)程完成,直到接收到作為對(duì)安全模式的請(qǐng)求的總線周期。當(dāng)接收到作為對(duì)安全 模式的請(qǐng)求的總線周期時(shí),芯片組在塊204記錄請(qǐng)求的總線周期的標(biāo)識(shí)符。塊210以虛線進(jìn)行描繪,以反映該芯片組可以啟動(dòng)全局動(dòng)作,但是并不需要在流 程圖的每次迭代中都這樣做。這種全局動(dòng)作例如包括停止時(shí)鐘條件的要求或者需要響應(yīng)的 中斷控制器消息周期。在塊212,芯片組接收總線周期。在判定塊214,芯片組確定該周期被認(rèn)為是安全 敏感的。例如,在一個(gè)實(shí)施例中,所有對(duì)系統(tǒng)存儲(chǔ)器或I/O設(shè)備的讀取和寫(xiě)入周期都被認(rèn)為 是安全敏感的。此外,各種控制周期可以被認(rèn)為是安全敏感的。相反,例如中斷確認(rèn)和全局 動(dòng)作確認(rèn)被認(rèn)為是安全不敏感的。例如,對(duì)進(jìn)入安全模式的第二請(qǐng)求(當(dāng)另一個(gè)處理器已 經(jīng)以安全模式執(zhí)行時(shí))可以被視作一種攻擊。如果該周期不是安全敏感的,則在判定塊216 確定該周期是否確認(rèn)了未決的全局動(dòng)作。如果不是,則允許該周期在塊218完成。如果是, 則在判定塊220確定是否已經(jīng)從所有代理接收到確認(rèn)。如果所有的代理都已經(jīng)確認(rèn),則芯 片組在塊222完成全局動(dòng)作。如果在判定塊214確定該周期是安全敏感的,則在224確定該周期是否來(lái)自安全 代理。如果該周期來(lái)自安全代理,則在判定塊226確定該總線周期是否釋放安全模式。如 果不是,則允許該總線周期在塊218完成它。如果是,則當(dāng)前在系統(tǒng)中沒(méi)有代理是處于安全 模式的。如果在判定塊224確定該周期不是來(lái)自處于安全模式的代理,則芯片組在228在 總線訪問(wèn)中進(jìn)行調(diào)解。在各種實(shí)施例中,這種調(diào)解可以采取對(duì)以安全模式操作的總線代理 要求高優(yōu)先級(jí)中斷的形式,或者可以采取要求系統(tǒng)復(fù)位來(lái)復(fù)位整個(gè)系統(tǒng)的形式。圖3是在本發(fā)明一個(gè)實(shí)施例中處理器中的操作的流程圖。在塊302,處理器對(duì)代碼 塊進(jìn)行驗(yàn)證。在塊304,處理器廣播請(qǐng)求進(jìn)入安全模式的總線周期。判定塊306表示在設(shè) 計(jì)時(shí)所作的隱式判定,其中確定在安全執(zhí)行模式期間是否將允許用于高速緩存一致性的回 寫(xiě)。在可選擇實(shí)施例中,驗(yàn)證的代碼可以為在判定塊306做出判定提供基礎(chǔ)。例如,驗(yàn)證代 碼可以在處理器中設(shè)定寄存器來(lái)表示是否允許回寫(xiě)。如果不允許回寫(xiě),則所有的高速緩存 總線代理都需要在塊307使高速緩存無(wú)效以確保在安全執(zhí)行期間高速緩存一致性。高速緩 存無(wú)效可以使用各種握手技術(shù)來(lái)執(zhí)行,這些技術(shù)有效地需要在高速緩存中最當(dāng)前的信息被 回寫(xiě)到系統(tǒng)存儲(chǔ)器中以作為進(jìn)入安全模式的先決條件。在塊308,處理器執(zhí)行來(lái)自?xún)?nèi)部隨機(jī) 存取存儲(chǔ)器(RAM)的驗(yàn)證代碼。處理器可以在不確定的時(shí)間周期中保持在安全模式中。在 一個(gè)實(shí)施例中,芯片組保持其安全警戒,直至安全處理器在總線上發(fā)布釋放周期以退出安 全執(zhí)行模式。當(dāng)處理器完成其安全執(zhí)行時(shí),在塊310它發(fā)出釋放周期以退出安全模式。在上述說(shuō)明書(shū)中,已經(jīng)參考其特定實(shí)施例描述了本發(fā)明。然而,下述將是明顯的,在不背離如由所附權(quán)利要求書(shū)陳述的本發(fā)明的較寬的精神和范圍的情況下可以對(duì)其做出各種修改和改變。因此,本說(shuō)明書(shū)和附圖將在說(shuō)明性而非限制性的意義上來(lái)看待。
權(quán)利要求
一種方法,包括將來(lái)自第一總線代理的總線周期識(shí)別為對(duì)進(jìn)入安全執(zhí)行模式的請(qǐng)求;記錄該第一總線代理的標(biāo)識(shí)符;如果另一個(gè)總線代理啟動(dòng)了安全敏感總線周期,則進(jìn)行調(diào)解。
2.權(quán)利要求1所述的方法,其中調(diào)解包括以下之一 給該第一總線代理發(fā)送高優(yōu)先級(jí)中斷;以及啟動(dòng)系統(tǒng)復(fù)位。
3.權(quán)利要求1所述的方法,其中調(diào)解包括 阻止安全敏感總線周期的完成。
4.權(quán)利要求1所述的方法,其中調(diào)解包括 阻止由另一個(gè)總線代理啟動(dòng)的隨后的事務(wù)。
5.權(quán)利要求1所述的方法,還包括允許來(lái)自任何總線代理的安全不敏感總線周期。
6.權(quán)利要求1所述的方法,還包括 在總線上啟動(dòng)全局動(dòng)作;在該第一總線代理處于安全模式時(shí)通過(guò)總線接受來(lái)自每個(gè)總線代理的全局動(dòng)作的確 認(rèn);以及完成全局動(dòng)作。
7.權(quán)利要求1所述的方法,其中除了回寫(xiě)周期以外,所有涉及系統(tǒng)存儲(chǔ)器和輸入/輸出 設(shè)備的讀取和寫(xiě)入周期都被視為安全敏感周期。
8.權(quán)利要求1所述的方法,還包括從該第一總線代理接收表示釋放安全執(zhí)行模式的總線周期; 響應(yīng)于該釋放而中止調(diào)解。
9.一種系統(tǒng),包括 總線;耦合到總線的第一總線代理,該第一總線代理具有允許進(jìn)入安全執(zhí)行模式的邏輯; 耦合到總線的第二總線代理;以及芯片組,其被耦合到總線來(lái)識(shí)別來(lái)自第一處理器的總線周期以啟動(dòng)安全執(zhí)行模式,該 芯片組記錄第一處理器的標(biāo)識(shí)符,以及限制來(lái)自第二處理器的安全敏感總線周期,直至第 一處理器退出安全執(zhí)行模式。
10.權(quán)利要求9所述的系統(tǒng),其中第一處理器包括 內(nèi)部隨機(jī)存取存儲(chǔ)器;驗(yàn)證引擎;微碼,用于產(chǎn)生第一總線周期以進(jìn)入第二總線周期來(lái)退出安全執(zhí)行模式;以及 總線控制器,用于啟動(dòng)第一和第二總線周期。
11.權(quán)利要求9所述的系統(tǒng),其中芯片組包括總線控制器,用于接受來(lái)自第一和第二處理器的總線周期; 用于識(shí)別請(qǐng)求進(jìn)入安全執(zhí)行模式的周期的邏輯; 存儲(chǔ)元件,用于保留周期的來(lái)源的標(biāo)識(shí)符;以及用于將該標(biāo)識(shí)符與用于隨后的安全敏感周期的來(lái)源的標(biāo)識(shí)符進(jìn)行比較的邏輯。
12.權(quán)利要求9所述的系統(tǒng),其中第一總線代理和第二總線代理均包括高速緩存無(wú)效 邏輯,用于響應(yīng)于進(jìn)入安全執(zhí)行模式的嘗試而使本地高速緩存無(wú)效。
13.權(quán)利要求9所述的系統(tǒng),其中第二總線代理是以下之一直接存儲(chǔ)器存取控制器,網(wǎng)絡(luò)處理器,通用處理器,以及輸入/輸出總線主控器。
14.一種裝置,包括總線控制器,用于識(shí)別請(qǐng)求進(jìn)入安全執(zhí)行模式的總線周期; 存儲(chǔ)單元,用于記錄該總線周期的來(lái)源的標(biāo)識(shí)符;以及 比較邏輯,用于識(shí)別安全敏感總線周期是否源自該來(lái)源。
15.權(quán)利要求14所述的裝置,還包括復(fù)位邏輯,用于響應(yīng)于比較邏輯識(shí)別出該安全敏感總線周期不是源自該來(lái)源而強(qiáng)制系 統(tǒng)復(fù)位。
16.權(quán)利要求14所述的裝置,還包括中斷產(chǎn)生器,用于如果該安全敏感總線周期源自一個(gè)不同的來(lái)源,則響應(yīng)于該安全敏 感總線周期而產(chǎn)生涉及該總線周期的來(lái)源的高優(yōu)先級(jí)中斷。
全文摘要
本發(fā)明用于在安全執(zhí)行期間資源的無(wú)死鎖總線保護(hù)的系統(tǒng)和方法,一種在安全執(zhí)行期間存儲(chǔ)器和I/O資源的無(wú)死鎖總線保護(hù)的方法和系統(tǒng)??偩€周期啟動(dòng)一個(gè)總線代理進(jìn)入安全執(zhí)行模式。芯片組記錄該安全模式處理器的標(biāo)識(shí)符。此后,如果在該安全模式處理器退出安全模式之前另一個(gè)總線代理嘗試安全敏感總線周期,則芯片組進(jìn)行調(diào)解。
文檔編號(hào)G06F21/00GK101826143SQ20101016218
公開(kāi)日2010年9月8日 申請(qǐng)日期2005年9月2日 優(yōu)先權(quán)日2004年9月15日
發(fā)明者D·莫蘭, J·薩頓二世, S·費(fèi)希爾 申請(qǐng)人:英特爾公司