專(zhuān)利名稱(chēng):將系統(tǒng)管理代碼區(qū)域訪(fǎng)問(wèn)轉(zhuǎn)向的制作方法
技術(shù)領(lǐng)域:
本^〉開(kāi)涉及信息處理領(lǐng)域,更具體地說(shuō),涉及存儲(chǔ)器管理和保護(hù) 領(lǐng)域。
背景技術(shù):
信息處理系統(tǒng)(如那些包括英特爾公司的Pentium⑧處理器系列中 的處理器的信息處理系統(tǒng))可以提供系統(tǒng)管理模式("SMM"),它是與 正常執(zhí)行環(huán)境并行的操作環(huán)境,它可用于執(zhí)行特殊任務(wù),如系統(tǒng)管理、 設(shè)備管理、功率管理、熱管理、可靠性功能、可用性功能、可服務(wù)性 功能等。SMM通常通過(guò)斷言系統(tǒng)管理中斷引腳而進(jìn)入,并且通過(guò)執(zhí) 行恢復(fù)指令而退出。因?yàn)镾MM是獨(dú)立的操作環(huán)境,所以它有它自己 的專(zhuān)用存儲(chǔ)器空間,必須對(duì)該空間進(jìn)行保護(hù)以免受正常執(zhí)行環(huán)境的影 響。盡管該專(zhuān)用存儲(chǔ)器空間與常^L的系統(tǒng)存儲(chǔ)器分離,但它會(huì)映射到 常規(guī)系統(tǒng)存儲(chǔ)器中的地址區(qū)域。
SMM代碼映射到的常規(guī)系統(tǒng)存儲(chǔ)器中的地址區(qū)域應(yīng)當(dāng)只能在 SMM操作期間才可訪(fǎng)問(wèn)。但是,因?yàn)榈湫偷母咚倬彺娌荒軈^(qū)分SMM 代碼和其它代碼,所以已知的病毒溢出(exploit)涉及在SMM代碼映射 到的地址處對(duì)高速緩存的寫(xiě)入。 一種保護(hù)SMM代碼免于這種溢出的 方法是利用存儲(chǔ)器類(lèi)型范圍寄存器("MTRR")來(lái)將SMM代碼區(qū)域設(shè) 置成在正常執(zhí)行期間不可緩存,在進(jìn)入到SMM時(shí)回寫(xiě)可緩存,并且 在恢復(fù)時(shí)回到不可緩存。
附圖中舉例而非限制性地示出本發(fā)明 圖lW
處理器的實(shí)施例。
具體實(shí)施例方式
以下說(shuō)明描述了用于將SMM代碼區(qū)域訪(fǎng)問(wèn)轉(zhuǎn)向的技術(shù)的實(shí)施 例。在以下描述中,闡述了諸如處理器和系統(tǒng)配置的眾多具體細(xì)節(jié), 以便更充分地理解本發(fā)明。但是,本領(lǐng)域的技術(shù)人員將明白,在沒(méi)有 這些具體細(xì)節(jié)的情況下,也可以實(shí)現(xiàn)本發(fā)明。此外,沒(méi)有詳細(xì)示出一 些熟知的結(jié)構(gòu)、電路等,以免不必要地使本發(fā)明晦澀難懂。
本發(fā)明的實(shí)施例提供SMM代碼區(qū)域訪(fǎng)問(wèn)。該轉(zhuǎn)向可以合乎需要 地用于保護(hù)SMM代碼免于在正常執(zhí)行期間被訪(fǎng)問(wèn)。本發(fā)明的實(shí)施例 可以結(jié)合SMM與正常執(zhí)行才莫式之間的轉(zhuǎn)換來(lái)實(shí)現(xiàn),而不會(huì)因?yàn)樵诳?》1存與不可緩存之間改變存儲(chǔ)器類(lèi)型而帶來(lái)性能損失。
圖1示出本發(fā)明的處理器(處理器110)的實(shí)施例,處理器110包括 用于將對(duì)SMM代碼區(qū)域的訪(fǎng)問(wèn)轉(zhuǎn)向的邏輯。圖中將處理器110示為 位于系統(tǒng)100中,該系統(tǒng)100還包括SMM存儲(chǔ)器120和正常系統(tǒng)存 儲(chǔ)器130。
處理器110可以是多種不同類(lèi)型的處理器中的任何一種處理器, 如英特爾/>司的Pentium⑧處理器系列、Itanium⑧處理器系列或其它處 理器系統(tǒng)中的處理器,或來(lái)自另一家公司的任何其它專(zhuān)用或其它處理 器。盡管圖1示出在處理器中實(shí)施的本發(fā)明,但是本發(fā)明可以替代地 在任何其它類(lèi)型的數(shù)據(jù)處理元件或裝置中實(shí)施。在圖1的實(shí)施例中, 處理器110包括狀態(tài)指示器(indicator)lll、基存儲(chǔ)單元112、存儲(chǔ)器 類(lèi)型存儲(chǔ)單元113、掩碼存儲(chǔ)單元114、有效指示器115、異常終止存 儲(chǔ)單元116、地址比較器117、轉(zhuǎn)向邏輯118和控制邏輯119。
狀態(tài)指示器111用于指示處理器110是否正在SMM中工作。狀 態(tài)指示器111可以是任何存儲(chǔ)單元中的任何字段或指示器,如寄存器
中的狀態(tài)位,當(dāng)處理器110進(jìn)入SMM時(shí),控制邏輯119(如下所述) 將該狀態(tài)位設(shè)置成1,當(dāng)處理器110退出SMM時(shí),控制邏輯119將 該狀態(tài)位清為0。
基(base)存儲(chǔ)單元112用于存儲(chǔ)基地址。基地址用于指定存儲(chǔ)器地 址區(qū)域("SMM區(qū)域"),在該存儲(chǔ)器地址區(qū)域,將訪(fǎng)問(wèn)SMM代碼的。 基存儲(chǔ)單元112可以是任何存儲(chǔ)單元中的任何字段。在一個(gè)實(shí)施例中, 基存儲(chǔ)單元112可以是用于指定對(duì)準(zhǔn)的4K基地址的64位才莫式指定寄 存器("基系統(tǒng)管理范圍寄存器"或"基SMRR")的位31:12。
存儲(chǔ)器類(lèi)型存儲(chǔ)單元113用于存儲(chǔ)由基地址指定的區(qū)域的存儲(chǔ)器 類(lèi)型(如不可緩存、回寫(xiě)可緩存、寫(xiě)保護(hù)可緩存、直寫(xiě)可緩存等)。存 儲(chǔ)器類(lèi)型存儲(chǔ)單元113可以是任何存儲(chǔ)單元中的任何字段。在一個(gè)實(shí) 施例中,存儲(chǔ)器類(lèi)型存儲(chǔ)單元113可以是基SMRR的位7:0。
掩碼存儲(chǔ)單元114用于存儲(chǔ)掩碼(mask)值,當(dāng)將存儲(chǔ)器訪(fǎng)問(wèn)中所 用的地址與基地址進(jìn)行比較時(shí),該掩碼值用于屏蔽所選的位。掩碼存 儲(chǔ)單元114可以是任何存儲(chǔ)單元中的任何字段。在一個(gè)實(shí)施例中,掩 碼存儲(chǔ)單元114可以是用于指定待存儲(chǔ)在基SMRR中的基地址的屏蔽 的位的64位模式指定寄存器("掩碼系統(tǒng)管理范圍寄存器"或"掩碼 SMRR")的位31:12。
有效指示器115用于指示基存儲(chǔ)單元112和掩碼存儲(chǔ)單元114是 否正在存儲(chǔ)有效值。有效指示器115可以是任何存儲(chǔ)單元中的任何字 段或指示器,它可以通過(guò)系統(tǒng)管理初始化代碼、系統(tǒng)管理處理程序、 或任何其它軟件、固件或硬件來(lái)設(shè)置。在一個(gè)實(shí)施例中,有效指示器 可以是掩碼SMRR的位11。
異常終止存儲(chǔ)單元116用于存儲(chǔ)異常終止地址。異常終止地址用 于指定這樣的存儲(chǔ)器地址區(qū)域("異常終止區(qū)域"),如果處理器110 不在SMM中工作,則將對(duì)SMM區(qū)域的訪(fǎng)問(wèn)轉(zhuǎn)向該存儲(chǔ)器地址區(qū)域。 異常終止存儲(chǔ)單元116可以是任何存儲(chǔ)單元中的任何字段。在一個(gè)實(shí) 施例中,異常終止存儲(chǔ)單元116可以是寄存器。在一個(gè)實(shí)施例中,異
常終止地址是處理程序的系統(tǒng)存儲(chǔ)器地址。異常終止區(qū)域中可以存儲(chǔ) 用于處理訪(fǎng)問(wèn)的任何代碼,如操作系統(tǒng)例行程序。
地址比較器117用于將存儲(chǔ)器訪(fǎng)問(wèn)中所用的地址與基地址進(jìn)行比 較。該比較可以根據(jù)任何已知的方法來(lái)執(zhí)行,并且可以使用來(lái)自掩碼 存儲(chǔ)單元114的掩碼值來(lái)屏蔽該比較中的所選位。
轉(zhuǎn)向邏輯118用于在處理器110不在SMM中工作時(shí)將SMM區(qū) 域訪(fǎng)問(wèn)轉(zhuǎn)向異常終止區(qū)域。該轉(zhuǎn)向可以根據(jù)任何已知的方法來(lái)執(zhí)行,
例如用異常終止地址替^:內(nèi)部或外部地址總線(xiàn)上的基地址。
控制邏輯119用于只有在處理器110處于SMM時(shí)才允許對(duì)上文 描述的存儲(chǔ)單元和指示器編程??刂七壿?19可以是處理器110內(nèi)的 微代碼、可編程邏輯、硬編碼邏輯或任何其它形式的控制邏輯。在其 它實(shí)施例中,控制邏輯119可以在處理器內(nèi)的或在處理器可訪(fǎng)問(wèn)的任 何元件或處理器可讀的任何介質(zhì)(如SMM存儲(chǔ)器120)內(nèi)的任何形式的 硬件、軟件或固件(如處理器抽象層)中實(shí)現(xiàn)。
在圖1中,存儲(chǔ)器120和130可以是靜態(tài)或動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器、 基于半導(dǎo)體的只讀存儲(chǔ)器或閃速存儲(chǔ)器、磁盤(pán)或光盤(pán)存儲(chǔ)器、處理器
110可讀的任何其它類(lèi)型的介質(zhì)、或這些介質(zhì)的任意組合。SMM存儲(chǔ) 器120用于存儲(chǔ)SMM代碼。正常系統(tǒng)存儲(chǔ)器130用于存儲(chǔ)包括操作 系統(tǒng)和應(yīng)用程序代碼在內(nèi)的代碼。
處理器110與存儲(chǔ)器120和130可以根據(jù)任何已知的方法相互耦 合或彼此通信,例如直接耦合或通信,或通過(guò)一個(gè)或多個(gè)總線(xiàn)、點(diǎn)對(duì) 點(diǎn)或其它有線(xiàn)或無(wú)線(xiàn)連接、和/或通過(guò)諸如芯片集或存儲(chǔ)器控制器的4壬 何其它元件間接耦合或通信。系統(tǒng)IOO還可包括任意數(shù)量的附加元件 或連接。
圖2示出本發(fā)明的用于將SMM代碼區(qū)域訪(fǎng)問(wèn)轉(zhuǎn)向的方法(方法 200)的實(shí)施例。在方框210,檢測(cè)例如因讀或?qū)懼噶畹奶崛?、解碼、 執(zhí)行或嘗試執(zhí)行引起的存儲(chǔ)器訪(fǎng)問(wèn)。該存儲(chǔ)器訪(fǎng)問(wèn)啟動(dòng)MTRR中的查 找,以便確定所訪(fǎng)問(wèn)的存儲(chǔ)器區(qū)域的存儲(chǔ)器類(lèi)型。
在方框212,通過(guò)例如地址比較器117,利用來(lái)自掩碼SMRR的 掩碼,將與方框210中的存儲(chǔ)器訪(fǎng)問(wèn)關(guān)聯(lián)的地址與來(lái)自基SMRJR的基 地址進(jìn)^f亍比4支。如果地址不匹配,則在方框240允許訪(fǎng)問(wèn)。如果地址 匹配,則在方框214,檢查狀態(tài)指示器111以便確定處理器IIO是否 處于SMM。
從方框214,如果處理器IIO沒(méi)有處于SMM,則在方框220,轉(zhuǎn) 向邏輯118例如通過(guò)用異常終止地址替換與存儲(chǔ)器訪(fǎng)問(wèn)關(guān)聯(lián)的地址的 基部分來(lái)將訪(fǎng)問(wèn)轉(zhuǎn)向異常終止區(qū)域。在方框222,控制邏輯119為存 儲(chǔ)器訪(fǎng)問(wèn)指定不可緩存的存儲(chǔ)器類(lèi)型。在方框240,允許訪(fǎng)問(wèn)。
從方框214,如果處理器IIO處于SMM,則在方框230,為存儲(chǔ) 器訪(fǎng)問(wèn)指定來(lái)自基SMRR的存儲(chǔ)器類(lèi)型。在方框240,允許訪(fǎng)問(wèn)。
在本發(fā)明的范圍內(nèi),方法200可以按不同的次序執(zhí)行,其中可以 同時(shí)執(zhí)行所示方框,可以省去所示方框,可以增加額外的方框,或者 進(jìn)行重新排序的、組合的、省去的或額外的方框的組合。
可以在從創(chuàng)建到模擬到制作的不同階段進(jìn)行設(shè)計(jì)。代表設(shè)計(jì)的數(shù)據(jù)可 以用多種方式來(lái)表示這個(gè)設(shè)計(jì)。首先,可以使用硬件描述語(yǔ)言或另一 種功能描述語(yǔ)言來(lái)表示硬件,這在模擬中有用。作為補(bǔ)充或替代,可 以在設(shè)計(jì)過(guò)程中的某些階段產(chǎn)生具有邏輯和/或晶體管門(mén)的電路級(jí)才莫 型。此外,在某個(gè)階段,大部分設(shè)計(jì)達(dá)到能夠用代表各種設(shè)備的物理 替換的數(shù)據(jù)對(duì)其進(jìn)行建^t的程度。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況 下,代表設(shè)備替換才莫型的數(shù)據(jù)可以是指定在用來(lái)制造集成電路的掩模 的不同掩才莫層上各種特征存在與否的數(shù)據(jù)。
在設(shè)計(jì)的任意表示中,數(shù)據(jù)可以存儲(chǔ)在任意形式的機(jī)器可讀介質(zhì) 中。經(jīng)調(diào)制或以其它方式生成用來(lái)傳送該信息的光波或電波、存儲(chǔ)器、 或諸如盤(pán)的磁或光存儲(chǔ)介質(zhì)都可以作為機(jī)器可讀介質(zhì)。所有這些介質(zhì) 都可以"攜帶"或"指示,,該設(shè)計(jì)、或本發(fā)明的實(shí)施例中所用的其它 信息,如錯(cuò)誤恢復(fù)例行程序中的指令。當(dāng)指示或攜帶信息的電載波得
以傳送時(shí),在執(zhí)行電信號(hào)的復(fù)制、緩沖或重新傳送的程度,進(jìn)行了新 的復(fù)制。因此,通信提供者或網(wǎng)絡(luò)提供者的動(dòng)作可以構(gòu)成物品(例如, 載波)的復(fù)本,從而實(shí)施本發(fā)明的技術(shù)。
因此,上文公開(kāi)了用于將SMM代碼區(qū)域訪(fǎng)問(wèn)轉(zhuǎn)向的技術(shù)。雖然
已經(jīng)描述并在附圖中示出了某些實(shí)施例,但是要了解,這些實(shí)施例只 是說(shuō)明而不是限制寬廣的本發(fā)明,并且本發(fā)明并不局限于所示出和描 述的具體結(jié)構(gòu)和配置,本領(lǐng)域的技術(shù)人員在研究本公開(kāi)之后可以聯(lián)想 到各種其它修改。在發(fā)展迅速并且難以預(yù)見(jiàn)到進(jìn)一步改進(jìn)的諸如此類(lèi)
的技術(shù)領(lǐng)域中,在不背離本公開(kāi)的原則或隨附權(quán)利要求的范圍的前提 下,通過(guò)促進(jìn)4支術(shù)進(jìn)步可以容易地對(duì)所公開(kāi)的實(shí)施例進(jìn)行配置和細(xì)節(jié) 方面的纟務(wù)改。
權(quán)利要求
1.一種裝置,包括用于指示所述裝置是否正在系統(tǒng)管理模式中工作的狀態(tài)指示器;用于存儲(chǔ)基地址的基存儲(chǔ)單元,其中所述基地址用于指定第一存儲(chǔ)器地址區(qū)域,在所述第一存儲(chǔ)器地址區(qū)域,將訪(fǎng)問(wèn)系統(tǒng)管理代碼;用于存儲(chǔ)異常終止地址的異常終止存儲(chǔ)單元,其中所述異常終止地址用于指定第二存儲(chǔ)器地址區(qū)域,如果所述裝置不在所述系統(tǒng)管理模式中工作,則將對(duì)所述第一存儲(chǔ)器地址區(qū)域的訪(fǎng)問(wèn)轉(zhuǎn)向所述第二存儲(chǔ)器地址區(qū)域。
2. 如權(quán)利要求l所述的裝置,還包括轉(zhuǎn)向邏輯,如果所述裝置不 在所述系統(tǒng)管理才莫式中工作,則所述轉(zhuǎn)向邏輯將第一存儲(chǔ)器地址區(qū)域 訪(fǎng)問(wèn)轉(zhuǎn)向所述第二存儲(chǔ)器地址區(qū)域。
3. 如權(quán)利要求l所述的裝置,還包括存儲(chǔ)器類(lèi)型存儲(chǔ)單元,用于 存儲(chǔ)將指定給對(duì)所述第 一存儲(chǔ)器地址區(qū)域的訪(fǎng)問(wèn)的存儲(chǔ)器類(lèi)型。
4. 如權(quán)利要求l所述的裝置,還包括控制邏輯,用于為對(duì)所述第 二存儲(chǔ)器地址區(qū)域的訪(fǎng)問(wèn)指定不可緩存的存儲(chǔ)器類(lèi)型。
5. 如權(quán)利要求l所述的裝置,還包括比較器,用于將所述基地址 和與存儲(chǔ)器訪(fǎng)問(wèn)關(guān)聯(lián)的地址進(jìn)行比較。
6. 如權(quán)利要求5所述的裝置,還包括掩碼存儲(chǔ)單元,用于存儲(chǔ)用 于指定所述比較器要屏蔽的地址位的掩碼。
7. —種方法,包括 檢測(cè)存儲(chǔ)器訪(fǎng)問(wèn)請(qǐng)求;以及如果所述存儲(chǔ)器訪(fǎng)問(wèn)是針對(duì)系統(tǒng)管理代碼區(qū)域并且所述存儲(chǔ)器 訪(fǎng)問(wèn)請(qǐng)求不是在系統(tǒng)管理;f莫式中執(zhí)行的,則將所述存儲(chǔ)器訪(fǎng)問(wèn)轉(zhuǎn)向異 常終止代碼區(qū)域。
8. 如權(quán)利要求7所述的方法,還包括將與所述存儲(chǔ)器訪(fǎng)問(wèn)關(guān)聯(lián)的 地址與基地址進(jìn)行比較,以便確定所述訪(fǎng)問(wèn)是否是針對(duì)所述系統(tǒng)管理代碼區(qū)域的。
9. 如權(quán)利要求8所述的方法,還包括從基地址存儲(chǔ)單元讀取所述 基地址。
10. 如權(quán)利要求8所述的方法,其中將與所述存儲(chǔ)器地址關(guān)聯(lián)的 地址與所述基地址進(jìn)行比較還包括屏蔽所述基地址的所選位。
11. 如權(quán)利要求IO所述的方法,還包括讀取掩碼存儲(chǔ)單元,以便 確定選擇哪些位來(lái)進(jìn)行屏蔽。
12. 如權(quán)利要求7所述的方法,還包括 從存儲(chǔ)器類(lèi)型存儲(chǔ)單元讀取存儲(chǔ)器類(lèi)型;以及如果所述訪(fǎng)問(wèn)是針對(duì)所述系統(tǒng)管理代碼區(qū)域并且所述存儲(chǔ)器訪(fǎng) 問(wèn)請(qǐng)求是在所述系統(tǒng)管理模式中執(zhí)行的,則將所述存儲(chǔ)器類(lèi)型指定給 所述訪(fǎng)問(wèn)。
13. 如權(quán)利要求7所述的方法,還包括如果所述訪(fǎng)問(wèn)是針對(duì)所 述系統(tǒng)管理代碼區(qū)域并且所述存儲(chǔ)器訪(fǎng)問(wèn)請(qǐng)求不是在所述系統(tǒng)管理 模式中執(zhí)行的,則為所述訪(fǎng)問(wèn)指定不可緩存的存儲(chǔ)器類(lèi)型。
14. 如權(quán)利要求7所述的方法,還包括通過(guò)檢查狀態(tài)指示器來(lái)確 定所述訪(fǎng)問(wèn)是否是在所述系統(tǒng)管理模式中執(zhí)行的。
15. 如權(quán)利要求7所述的方法,其中將所述存儲(chǔ)器訪(fǎng)問(wèn)轉(zhuǎn)向異常址的一部分。
16. 如權(quán)利要求15所述的方法,還包括從異常終止地址存儲(chǔ)單元 讀取所述異常終止地址。
17. 如權(quán)利要求7所述的方法: 求是在所述系統(tǒng)管理模式中執(zhí)行的 進(jìn)行訪(fǎng)問(wèn)。
18. —種系統(tǒng),包括 動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器;以及 處理器,所述處理器包括還包括如果所述存儲(chǔ)器訪(fǎng)問(wèn)請(qǐng) 則允許對(duì)所述系統(tǒng)管理代碼區(qū)A戈 用于指示所述處理器是否正在系統(tǒng)管理^t式中工作的狀態(tài)指示器;用于存儲(chǔ)基地址的基存儲(chǔ)單元,其中所述基地址用于指定第 一存儲(chǔ)器地址區(qū)域,在所述第一存儲(chǔ)器地址區(qū)域,將訪(fǎng)問(wèn)系統(tǒng)管理代 碼;用于存儲(chǔ)異常終止地址的異常終止存儲(chǔ)單元,其中所述異常 終止地址用于指定第二存儲(chǔ)器地址區(qū)域,如果所述處理器不在所述系 統(tǒng)管理模式中工作,則將對(duì)所述第 一存儲(chǔ)器地址區(qū)域的訪(fǎng)問(wèn)轉(zhuǎn)向所述 第二存儲(chǔ)器地址區(qū)域。
19. 如權(quán)利要求18所述的系統(tǒng),其中所述動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器用 于存儲(chǔ)所述系統(tǒng)管理代碼。
20. 如權(quán)利要求18所述的系統(tǒng),其中所述動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器是 用于在所述處理器不在所述系統(tǒng)管理模式中工作時(shí)處理對(duì)所述第一 存儲(chǔ)器地址區(qū)域的訪(fǎng)問(wèn)的處理程序。
全文摘要
公開(kāi)用于將SMM代碼區(qū)域訪(fǎng)問(wèn)轉(zhuǎn)向的裝置和方法。在一個(gè)實(shí)施例中,裝置包括狀態(tài)指示器、基存儲(chǔ)單元和異常終止存儲(chǔ)單元。狀態(tài)指示器用于指示裝置是否正在SMM中工作?;鎯?chǔ)單元用于存儲(chǔ)基地址,而異常終止存儲(chǔ)單元用于存儲(chǔ)異常終止地址?;刂酚糜谥付ǖ谝淮鎯?chǔ)器地址區(qū)域,在該區(qū)域,將訪(fǎng)問(wèn)SMM代碼。異常終止地址用于指定第二存儲(chǔ)器地址區(qū)域,如果裝置不在SMM中工作,則將對(duì)第一存儲(chǔ)器地址區(qū)域的訪(fǎng)問(wèn)轉(zhuǎn)向第二存儲(chǔ)器地址區(qū)域。
文檔編號(hào)G06F12/14GK101351775SQ200680049977
公開(kāi)日2009年1月21日 申請(qǐng)日期2006年12月18日 優(yōu)先權(quán)日2005年12月30日
發(fā)明者C·B·拉斯特, D·A·庫(kù)費(fèi)蒂, F·賓斯, H·W·加特勒, M·G·迪克松 申請(qǐng)人:英特爾公司