欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在處理器中提供用于系統(tǒng)管理模式的狀態(tài)存儲裝置的制作方法

文檔序號:6331721閱讀:134來源:國知局
專利名稱:在處理器中提供用于系統(tǒng)管理模式的狀態(tài)存儲裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及在處理器中提供用于系統(tǒng)管理模式的狀態(tài)存儲裝置。
背景技術(shù)
大多數(shù)計算機系統(tǒng)處理器支持稱為系統(tǒng)管理模式(SMM)的特殊操作模式。SMM提 供對于操作系統(tǒng)(OS)軟件透明的不同操作環(huán)境。此模式常常被原始設(shè)備制造商(OEM)用 于執(zhí)行例如系統(tǒng)管理、裝置、電源和熱管理的特殊任務(wù)。服務(wù)器相關(guān)的可靠性、可用性和可 服務(wù)性(RAS)功能常常使用SMM來實現(xiàn)。通常通過向處理器發(fā)送系統(tǒng)管理中斷(SMI)消息 來進入SMM。當(dāng)確認SMI時,處理器將當(dāng)前處理器上下文(也稱為處理器保存狀態(tài))保存 到系統(tǒng)存儲器中專門分配給SMM的部分,稱為系統(tǒng)管理隨機存取存儲器(SMRAM),并且執(zhí)行 SMRAM中包含的SMI處理程序(handler)代碼。當(dāng)SMI處理程序完成其操作時,它執(zhí)行特殊 的(僅在SMM中有效的)恢復(fù)指令,該指令使處理器從SMRAM重新加載所保存的處理器上 下文并恢復(fù)執(zhí)行中斷的任務(wù)。在多處理器系統(tǒng)中,一般將SMI消息廣播到所有處理器。SMI處理程序選擇一個 處理器(稱為SMM主控(monarch))來處理事件。此處理器等待直到所有其他處理器會合 (rendezvous)在SMM內(nèi),之后才處理SMI事件。非主控處理器保留在SMM中,直到主控完成 事件處理。當(dāng)處理了 SMM事件時,主控將以信號通知其他處理器退出SMM。實現(xiàn)這種同步的 進入和退出行為以阻止兩個并行環(huán)境(OS與SMM)之間的任何資源沖突。即,如果一些處理 器在OS環(huán)境中是活動的,而同時其余的處理器在SMM環(huán)境中是活動的,則可能的是它們可 能修改共享的資源,并由此干擾彼此的操作,從而導(dǎo)致系統(tǒng)崩潰。此外,某些SMM事件只能 由特定邏輯處理器或一組邏輯處理器來處理。廣播確保了此條件總是被滿足,因為所有邏 輯處理器都將進入SMI。因此,多處理器系統(tǒng)中的SMI處理是復(fù)雜的且能消耗所有系統(tǒng)資源,阻止其他有 用工作的處理,因為當(dāng)處理器處于SMM中時,它就不可用于操作系統(tǒng)。

發(fā)明內(nèi)容
本發(fā)明提供一種設(shè)備,包括處理器核,執(zhí)行指令并進入系統(tǒng)管理模式(SMM),其 中當(dāng)進入所述SMM時,所述處理器核將存儲所述處理器核的狀態(tài)存儲裝置中存在的活動狀 態(tài)到所述處理器核的存儲單元中,并將通過插入與所述SMM關(guān)聯(lián)的值到所述狀態(tài)存儲裝置 中來設(shè)立SMM執(zhí)行環(huán)境。本發(fā)明還提供一種方法,包括響應(yīng)系統(tǒng)管理中斷(SMI)事件,確定處理器上執(zhí)行 的所有線程是否已進入系統(tǒng)管理模式(SMM)會合狀態(tài);以及如果否,則確定其余線程是否 正在執(zhí)行長流操作或處于SMI禁止的狀態(tài)中,以及如果是,則使用主控線程在其余線程執(zhí) 行所述長流操作或處于所述SMI禁止的狀態(tài)中時處理所述SMI事件,否則在處理所述SMI 事件之前等待其余線程進入所述SMM會合狀態(tài)。本發(fā)明還提供一種系統(tǒng),包括第一處理器,包括執(zhí)行指令和進入系統(tǒng)管理模式(SMM)的第一核、指示所述第一核上執(zhí)行的線程是否處于長流操作中的第一指示符、指示所 述線程是否處于系統(tǒng)管理中斷(SMI)禁止的狀態(tài)中的第二指示符以及存儲單元,其中在進 入所述SMM時,所述第一核將存儲所述第一核的狀態(tài)存儲裝置中存在的活動狀態(tài)到所述存 儲單元中并將存儲SMM執(zhí)行狀態(tài)到所述狀態(tài)存儲裝置中,所述存儲單元專用于在所述SMM 期間存儲所述活動狀態(tài);第二處理器,包括執(zhí)行指令和進入所述SMM的第二核、指示所述第 二核上執(zhí)行的第二線程是否處于長流操作中的第一指示符、指示所述第二線程是否處于所 述SMI禁止的狀態(tài)中的第二指示符以及第二存儲單元,其中在進入所述SMM時,所述第二核 將存儲所述第二核的狀態(tài)存儲裝置中存在的活動狀態(tài)到所述第二存儲單元中并將存儲SMM 執(zhí)行狀態(tài)到所述狀態(tài)存儲裝置中,所述第二存儲單元專用于在所述SMM期間存儲所述活動 狀態(tài);以及動態(tài)隨機存取存儲器(DRAM),耦合到所述第一和第二處理器,其中所述DRAM的 一部分是用于所述系統(tǒng)的系統(tǒng)管理隨機存取存儲器(SMRAM)。


圖1是根據(jù)本發(fā)明的一個實施例的處理器的框圖。圖2是根據(jù)本發(fā)明的一個實施例的多處理器系統(tǒng)的框圖。圖3是根據(jù)本發(fā)明的一個實施例的方法的流程圖。圖4是根據(jù)本發(fā)明的另一個實施例的方法的流程圖。
具體實施例方式在多種實施例中,能夠使用管芯上存儲裝置(on-die storage)作為使用外部物理 存儲器的備選以存儲有關(guān)SMM進入/退出的各個線程的保存狀態(tài)。相比之下,對于進入和 退出SMM,目前的系統(tǒng)依賴于外部物理存儲器。這種SMM對系統(tǒng)RAM的依賴性導(dǎo)致任務(wù)關(guān) 鍵應(yīng)用中的伸縮(scaling)、性能和可靠性相關(guān)的限制,并且能使用本發(fā)明的一實施例來避 免。注意,當(dāng)在本文中使用時,術(shù)語“線程”可以指包括用于與進程關(guān)聯(lián)的架構(gòu)狀態(tài)的處理 器中的存儲裝置(例如,寄存器文件(register file)和關(guān)聯(lián)的配置和狀態(tài)寄存器)的硬 件線程。當(dāng)在本文中使用時,術(shù)語“硬件線程”與術(shù)語“邏輯處理器”同義來使用。每個處 理器核可以包括多個邏輯處理器,每個邏輯處理器具有專用的架構(gòu)狀態(tài)存儲裝置,但是其 共享其他核資源(例如前端單元、執(zhí)行單元等)。在不同的實現(xiàn)中,提供用于在SMM期間存儲任何活動線程的保存狀態(tài)的管芯上 存儲裝置能夠是用作用于保存狀態(tài)存儲裝置的小專用存儲器的處理器本身中的寄存器文 件或管芯上靜態(tài)RAM(SRAM)。一些處理器可以包括用于像電源管理的特定任務(wù)的管芯上 SRAM,例如,例如根據(jù)高級配置和電源接口(ACPI)狀態(tài)的OS管理的低電源(low power)狀 態(tài)(例如,C6狀態(tài)或其他電源管理操作)。在此類處理器中,能夠為每個線程的SRAM保存 狀態(tài)預(yù)留在每線程基礎(chǔ)上分區(qū)的此SRAM中的部分。作為一個示例,每個邏輯處理器可以使 用1千字節(jié)(KB)的SRAM存儲裝置以用于SMM保存狀態(tài)。如果給定的處理器不能將這個量 的SRAM專用于SMM保存狀態(tài),則能夠?qū)崿F(xiàn)一實施例使得它能夠利用為C6流(flow)預(yù)留的 SRAM。在此情況中,SMM內(nèi)部的C6/C7轉(zhuǎn)變能夠降級到更低的低電源狀態(tài)(例如,C3)以確 ?;コ獾貙⒐蚕淼腟RAM空間用于SMM狀態(tài)保存。一些處理器并不為C6狀態(tài)保存實現(xiàn)專用 的SRAM,而是相反利用末級高速緩存(LLC)的一部分以用于在C6狀態(tài)保存期間存儲處理器
5狀態(tài)。在這些處理器中,SMM保存狀態(tài)能夠存儲在LLC中。一旦保存,則可以在不同方式中存取此內(nèi)部SMM保存狀態(tài)。例如,能夠使用每線程 基礎(chǔ)上的模型特定的寄存器(MSR)尋址或后向兼容機制來存取該內(nèi)部狀態(tài)。常規(guī)方式下, 處理器能夠在某個系統(tǒng)存儲器地址存取SMM保存狀態(tài)。后向兼容機制包括捕捉(trap)邏 輯處理器對這些遺留存儲器地址的存取并將其重定向到適合的SRAM位置的處理器中的邏 輯。如果要求與現(xiàn)有基本輸入/輸出系統(tǒng)(BIOS)軟件的絕對后向兼容性,則能實現(xiàn)此類重 定向。這些MSR只能在SMM模式中讀或?qū)懖⑶易裱cSMM保存狀態(tài)關(guān)聯(lián)的約束。如果一個 邏輯處理器需要對另一個處理器的保存狀態(tài)的存取,則這能經(jīng)軟件協(xié)議來完成。在一些實施例中,專用處理器標(biāo)識符葉(leaf)(例如,CPUID葉)或其字段或特征 啟用的MSR(模型特定的寄存器)位能用于啟用內(nèi)部SRAM的使用?,F(xiàn)在參考圖1,示出的是 根據(jù)本發(fā)明的一個實施例的處理器的框圖。如圖1中所示,處理器100可以是多階流水線 式(multi-stage pipelined)亂序處理器。處理器100以相對簡化的視圖來顯示以示出關(guān) 聯(lián)本文中描述的SMM技術(shù)來使用的多種特征。如所見到的,處理器100可以是包括多個處 理器核105并且其可以在單個半導(dǎo)體管芯上形成的多核處理器。雖然在圖1的實施例中以 四個此類核示出,但是應(yīng)理解,本發(fā)明的范圍此方面不受限制。如圖1中還所見的,處理器 100中可存在附加的組件。例如,可存在集成的存儲器控制器(IMC)IOS以及靜態(tài)隨機存取 存儲器(SRAM) 106。如上討論的,在一些實現(xiàn)中,根據(jù)本發(fā)明的一實施例,此存儲器可用于存 儲上下文狀態(tài),其否則將存儲在SRAM中。仍然還有的是,處理器100可以包括末級高速緩 存(LLC) 109,其可以是在所有處理器核之間共享的共享高速緩存。如圖1中所示,處理器100包括前端單元110,其可用于取要執(zhí)行的宏指令并將其 準(zhǔn)備用于核中的稍后使用。例如,前端單元110可以包括指令預(yù)取器、指令解碼器、追蹤高 速緩存(trace cache)連同微代碼存儲裝置以及微指令(μ op)存儲裝置。指令預(yù)取器可 以從存儲器取宏指令并將其饋送到指令解碼器以將其解碼成原語(即μ op)以用于由處理 器執(zhí)行。追蹤高速緩存可以取得解碼的μ op并將其組裝(assemble)成程序排序的序列。 當(dāng)然,可以在前端單元110中實現(xiàn)附加的組件和特征。耦合在前端單元110與執(zhí)行單元120之間的是亂序(000)引擎115,其可用于接收 微指令并將其準(zhǔn)備用于執(zhí)行。更確切地來說,000引擎115可包括多種緩沖器以對微指令 流重新排序并分配對于執(zhí)行所需的多種資源以及提供將邏輯寄存器重命名到多種寄存器 文件(例如寄存器文件130a)內(nèi)的存儲位置上。寄存器文件130可以包括用于整數(shù)和浮點 運算的單獨寄存器文件。注意可以存在多個寄存器文件130a-n,每個寄存器文件用于不同 的邏輯處理器。還可以存在附加的寄存器,即狀態(tài)和配置寄存器135。如所見到的,每組寄 存器135a-n可以用于不同的邏輯處理器。這些多種寄存器可用于配置核以用于不同的操 作模式以及提供有關(guān)執(zhí)行的線程和不同指令的狀態(tài)信息。在圖1所示的示例中,此類寄存器可包括SMM保存狀態(tài)寄存器136。在多種實現(xiàn) 中,可以存在多個此類寄存器,每個寄存器與核上操作的給定線程關(guān)聯(lián)。如上文討論的,此 類寄存器可存儲指示符(例如,啟用位)以在進入SMM時使得線程的狀態(tài)能夠存儲在例如 核本身內(nèi)。如果此指示符未被啟用,則進入SMM時,線程的上下文將轉(zhuǎn)而存儲到SMRAM。在 一些實施例中,此MSR可以包含能夠控制其他處理器特征的其他位。在一些實施例中,能夠 使包含指示符的此寄存器文件135僅在SMM中是可更改的,由此保護它免于被SMM外的惡
6意組件進行惡意更改,從而增加系統(tǒng)的安全性和健壯性。如還所見到的,寄存器文件135還可以包括一個或多個SMM狀態(tài)指示符寄存器 138。此類指示符寄存器可以采用位圖或位矢量的形式,其中每個邏輯處理器具有指示該邏 輯處理器何時被禁止進入SMM或該邏輯處理器是否處于長流執(zhí)行中的位置。在一個實施例 中,可對于每個此類指示存在單獨寄存器。備選的是,可以存在單個寄存器,并由此可以使 用邏輯組合的指示符為每個邏輯處理器指示一個這些狀態(tài)的存在。下文描述有關(guān)使用這些 寄存器的進一步細節(jié)。仍參考圖1,執(zhí)行單元120中可以存在多種資源,除其他專門的硬件外,包括 例如整數(shù)、浮點和單個指令多個數(shù)據(jù)(SIMD)邏輯單元。可以將結(jié)果提供到引退單元 (retirement unit) 140,其可操作以確定是否能夠有效地引退所執(zhí)行的指令,以及是否能 夠?qū)⒔Y(jié)果數(shù)據(jù)提交到處理器的架構(gòu)狀態(tài),或是否發(fā)生一個或多個異常阻止指令的正確引退。如圖1中所示,引退單元140耦合到高速緩存存儲器150,在一個實施例中,高速緩 存存儲器150可以是低級高速緩存(例如,Ll高速緩存),但是本發(fā)明的范圍在此方面不受 限制。同樣,執(zhí)行單元120能直接耦合到高速緩存150(圖1中未示出)。從高速緩存存儲 器150,可以進行與較高級高速緩存、系統(tǒng)存儲器等的數(shù)據(jù)通信。雖然在圖1的實施例中以 此高級示出,但是應(yīng)理解,本發(fā)明的范圍在此方面不受限制。例如,可以在有序處理器中實 現(xiàn)其他實施例。通過在內(nèi)部將SMM保存狀態(tài)存儲到處理器,可以改進系統(tǒng)的可靠性和健壯性。艮口, 通常是SMRAM駐留在其上的一組外部動態(tài)隨機存取存儲器(DRAM)裝置的物理存儲器容易 遭遇存儲器錯誤。在無本發(fā)明的一實施例的情況下,SMM操作用盡此外部存儲器,并因此在 錯誤狀況中不能依靠。相反使用本發(fā)明的一實施例,通過在處理錯誤時執(zhí)行來自非易失性 空間的SMI處理程序,能夠改進SMRAM存儲器的可靠性。例如,在它處理存儲器錯誤的同時, SMM處理程序能夠從像BIOS閃存或外部SRAM的更健壯的存儲裝置來運行。同樣,當(dāng)SMM 保存狀態(tài)對于處理器是內(nèi)部的時,此存儲裝置的架構(gòu)狀態(tài)能夠僅通過MSR暴露于外部的軟 件。在SMM代碼執(zhí)行“Resume (RSM) ”指令之后復(fù)原機器執(zhí)行狀態(tài)所需的處理器的微架構(gòu)狀 態(tài)無需暴露于外部軟件,因為它對于此內(nèi)部機器狀態(tài)沒有合法使用。這還意味著惡意軟件 代碼無權(quán)存取敏感的微架構(gòu)狀態(tài)(如果保存的數(shù)據(jù)存儲位于SMRAM中,則它將如此做),從 而使得機器更安全且健壯。實施例還可以改進性能和等待時間。許多服務(wù)器應(yīng)用/操作系統(tǒng)是非一致存儲器 架構(gòu)(NUMA)優(yōu)化的且BIOS通常將存儲器配置成使得整個SMRAM(其是鄰接存儲器范圍) 映射到單個插槽(socket)。因此,所有SMM保存狀態(tài)/復(fù)原狀態(tài)操作對于所有邏輯CPU將 看上去如同遠程寫/遠程讀,除非這些操作包含在SMRAM對其是本地的一個插槽中。對于 具有四個插槽且各具有12個核的服務(wù)器配置的性能分析指示,SMM保存狀態(tài)寫操作能受到 互連和存儲器帶寬的限制并且能花費高達5微秒。隨著應(yīng)用變得越是NUMA優(yōu)化的,處理器 可能為遠程業(yè)務(wù)分配越少的緩沖器。當(dāng)那發(fā)生時,SMRAM保存狀態(tài)寫和讀操作將花費甚至 更長時間。操作系統(tǒng)通常具有對于CPU能處于SMM中多長時間的限制,以便維持可接受的 實時性能并避免高速網(wǎng)絡(luò)鏈路上的超時。超過此限制影響OS響應(yīng)度、應(yīng)用等待時間并且甚 至可能導(dǎo)致操作系統(tǒng)功能失效。因此,使用根據(jù)本發(fā)明的一實施例的管芯上SMM保存狀態(tài)減少了等待時間,并因此使得為SMM處理程序分配的另外時間能夠服務(wù)于SMM事件(SMM的 有效工作)。此外,實施例可以改進可伸縮性。在多處理器系統(tǒng)中,當(dāng)SMI發(fā)生時,系統(tǒng)中的每 個線程必須將其保存狀態(tài)存儲在外部系統(tǒng)存儲器中其自己專用的保存狀態(tài)區(qū)中,如在系統(tǒng) 引導(dǎo)期間由系統(tǒng)BIOS定義和預(yù)留的。要預(yù)留作為捕獲系統(tǒng)中所有線程的所有保存狀態(tài)所 要求的SMRAM空間的物理存儲器的總量隨著系統(tǒng)中線程的數(shù)量而線性地增加。對于具有對 稱多線程支持的多核多插槽系統(tǒng),空間的量能夠相當(dāng)大(并且在一個實施例中,可以約為 大概256KB)。通過為SMM保存狀態(tài)提供管芯上存儲裝置,可以避免對于容納所有核及其線 程的不斷擴展的SMRAM區(qū)的需求,從而利于伸縮。這還消除對于BIOS為每個線程在SMRAM 中查找并分配唯一且不重疊的區(qū)的必要性。仍然還有的是,這還保存存儲器保護區(qū)免于在 硅中實現(xiàn)。在熱插拔情況中,SMRAM中的架構(gòu)定義的SMM保存狀態(tài)區(qū)域在1MB以下。在無本 發(fā)明的一實施例的情況下,當(dāng)添加新處理器時,BIOS設(shè)立存儲器保護范圍,并將遷移出數(shù)據(jù) 以避免OS攻擊和/或干擾。實施例消除如此做的需要,因為保存的狀態(tài)不再存儲在OS可 見的存儲器中。現(xiàn)在參考圖2,示出的是根據(jù)本發(fā)明的一個實施例的多處理器系統(tǒng)的框圖。如圖2 中所示,多處理器系統(tǒng)200包括多個處理器ZlOi^Oj統(tǒng)稱為處理器210)。雖然在圖2的 實施例中以四個此類處理器示出,但是應(yīng)理解,本發(fā)明的范圍在此方面不受限制。在圖2中 所示的實現(xiàn)中,存在非一致存儲器架構(gòu)(NUMA)系統(tǒng),使得系統(tǒng)存儲器22(^* 220^5由互連 217!和2173本地附連到處理器210i和2103。因此,處理器2102和210n對存儲器的存取要 求通過多個點到點(PTP)互連215之一與處理器210i和2103之一的通信。如圖2的實現(xiàn) 中所見,可以是DRAM的存儲器220i包括SMRAM 225。在此NUMA架構(gòu)中,SMRAM 225是用于 整個系統(tǒng)的系統(tǒng)管理存儲。因此,在無本發(fā)明的一實施例的情況下,有關(guān)SMM進入或退出的 每個處理器需要保存/復(fù)原上下文到此SMRAM 225。這進而導(dǎo)致PTP互連215和互連217i 上的帶寬的大量使用,以及增加用于進入SMM和從SMM退出的等待時間。因此,在多種實施例中,除了一個或多個核212和集成的存儲器控制器214外,每 個處理器210還可包括SRAM 216。在多種實施例中,SRAM 216可以專用于存儲SMM保存狀 態(tài)。即,當(dāng)發(fā)生系統(tǒng)管理中斷時,可以將用于每個處理器210的多個邏輯處理器的上下文狀 態(tài)本地存儲到它的SRAM 216,從而避免對于與SMRAM 225的狀態(tài)信息通信的需要。在其他 實施例中,不采用專用的管芯上存儲裝置,而是能將此上下文狀態(tài)存儲在例如寄存器文件 的芯片上寄存器中或例如高速緩存存儲器的其他位置中。雖然在圖2的實施例中以此特定 實現(xiàn)示出,但是本發(fā)明的范圍在此方面不受限制。例如,實施例還可以與一致存儲器架構(gòu)系 統(tǒng)一起使用?,F(xiàn)在參考圖3,示出的是根據(jù)本發(fā)明的一個實施例的方法的流程圖。如圖3中所 示,可以執(zhí)行方法300以處理進入SMM而無需為了保存狀態(tài)信息而存取SMRAM。注意,為了 易于討論,假定只存在單個硬件線程,但是在許多實現(xiàn)中,多個線程可以一起進入SMM。如圖 3中所見的,方法300可通過接收系統(tǒng)管理中斷而開始(框310)。接收到此中斷時,可以將 當(dāng)前活動狀態(tài)(例如,給定硬件線程的活動狀態(tài))保存到管芯上存儲裝置(框320)。如上 文討論的,此管芯上存儲裝置可以是專用的SRAM、用于另一個目的(例如,電源管理狀態(tài)) 的SRAM、寄存器存儲裝置、管芯上高速緩存存儲裝置等。
8
仍參考圖3,例如按照處理器規(guī)范所定義的,將處理器狀態(tài)修改為匹配SMM進入狀 態(tài)(框330)。此狀態(tài)包括用于多種控制和配置寄存器的值以及用于寄存器文件的初始值。 此設(shè)立由此通過將與SMM進入狀態(tài)關(guān)聯(lián)的預(yù)定值加載到狀態(tài)存儲裝置中來準(zhǔn)備適合于SMM 處理程序的SMM執(zhí)行環(huán)境。當(dāng)已設(shè)立SMM狀態(tài)時,控制傳遞到框340,其中SMM可使用來自 SMRAM的代碼和數(shù)據(jù)來執(zhí)行(框340)。因此,可以執(zhí)行期望的SMM操作。當(dāng)然本發(fā)明的范 圍在此方面不受限制,SMM操作的示例包括電源管理操作、錯誤處理操作等。然后可以確定SMM操作是否已完成(菱形框350)。如果沒有,則SMM中的執(zhí)行可 繼續(xù)。如果完成,則處理器執(zhí)行恢復(fù)指令(框360)。作為此指令的結(jié)果,可以將先前的狀態(tài) 從管芯上存儲裝置加載回處理器的寄存器中(框370)。然后,處理器可以恢復(fù)與復(fù)原回到 活動狀態(tài)的此先前狀態(tài)所對應(yīng)的線程的執(zhí)行(框380)。雖然在圖3的實施例中以此特定實 現(xiàn)示出,但是應(yīng)理解,本發(fā)明的范圍在此方面不受限制。例如,在一些實現(xiàn)中,不是執(zhí)行來自 SMRAM的SMM操作(特別是在SMM用于處理如DRAM錯誤的錯誤時),一些實施例可相反從 例如閃速存儲器的非易失性存儲裝置獲得SMM狀態(tài)信息、SMM代碼和數(shù)據(jù)。如上所述,活動狀態(tài)的硅存儲能夠減少SMM等待時間。實施例可以通過使得在某 些情況中能夠更快速地進入SMM來進一步減少等待時間,如現(xiàn)在將討論的。SMM等待時間定義為處理器每單個SMI對其處于SMM環(huán)境中的持續(xù)時間。對于總 SMM等待時間有兩個主要促成因素(contributor)處理器開銷和OEM BIOS代碼。必須將 此等待時間保持在控制之下以避免對OS環(huán)境的副作用,例如超時和時鐘漂移。另外的需求 也將要求減少此等待時間,這變得難以實現(xiàn)。目前,規(guī)定SMI等待時間在約190微秒之下。 像因特網(wǎng)門戶數(shù)據(jù)中心和效用計算的新使用模型期望來自應(yīng)用的更可預(yù)測的等待時間。結(jié) 果,OS供應(yīng)商正在奮力爭取SMM等待時間中的進一步減少。另一方面,其他技術(shù)隨著時間 過去具有增加SMI等待時間的潛在可能。例如,對多核處理器的業(yè)界推進意味著SMI處理 程序必須會合數(shù)量不斷增加的處理器核。新的基于SMM的能力也將附加的壓力置于SMM等 待時間上。例如,高端RAS能力依靠SMM。此外,一些OEM利用SMM來交付唯一的電源管理 能力以區(qū)分他們的產(chǎn)品。已知許多OEM生成SMI每秒高達8次。某些指令集架構(gòu)(ISA)包括例如寫回(write back)和使無效指令(例如,wbinvd) 的指令,其使所有高速緩存行(cache line)無效并將它們寫回到存儲器。這些操作能花費 長時間來完成,例如,大約IO3至IO7個處理器周期,特別是在支持大高速緩存大小的處理器 中。此外,存在其中能延遲SMI響應(yīng)的某些處理器狀態(tài)(例如,C3和C6低處理器狀態(tài))。 總的來說,這些指令和處理器狀態(tài)稱為“長流(longflow) ”狀態(tài),其定義為表示能花費不一 般長數(shù)量的周期來完成(例如,大約IO3個時鐘)并且其能延遲進入SMM的指令或進程。在 一個實施例中,將延遲SMM進入大于5微秒的任何流能稱為長流。就SMM而言,如果一個或 多個邏輯處理器處于長流中,則它延遲SMM進入。如上文解釋的,SMM主控等待直到所有期望的邏輯處理器都已進入SMM。當(dāng)進入 SMM時,每個處理器在SMRAM中設(shè)置它自己的位以指示它已進入SMM。主控等待直到所有期 望的處理器都已設(shè)置它們的位。當(dāng)一個或多個邏輯處理器處于長流中并稍后進入SMM時, 它保持住(hold up) SMM主控,并因此增加SMM等待時間。此外,存在其中禁止SMI事件的 某些架構(gòu)狀態(tài),例如等待啟動處理器間中斷(WFS)和TXT休眠狀態(tài)。如果0S/BI0S將一個 或多個邏輯處理器置于SMI禁止的狀態(tài)中,則它將不進入SMM直到0S/BI0S顯式地將其帶
9出此狀態(tài)。因為SMI事件將所有其他處理器置于SMM中,所以O(shè)S不能顯露(unmask) SMI。 在此情況下,SMM主控必須依靠長超時來確定SMI禁止的處理器的存在。這些超時延遲SMM 會合并增加總SMM等待時間或減少可用于SMM事件處理的時間量。在多種實施例中,甚至在一些邏輯處理器處于長流中的情況下,仍能夠避免對SMM 內(nèi)部超時的需要。消除此類超時能夠?qū)⑵骄鵖MM等待時間改進10-20%,以及在最壞情況下 將SMM等待時間改進至少幾個毫秒。實施例依靠以下事實處于長流中或SMI禁止的狀態(tài)中的處理器不太可能存取共 享資源。此外,此類處理器不太可能已經(jīng)引起SMI,并且因此其參與對于SMI處理不是必需 的。因此,SMM主控能夠在此類處理器已進入SMM之前繼續(xù)進行SMM處理。但是,在繼續(xù)之前,SMM主控必須能夠可靠地檢測哪些處理器處于長流和/或SMI 禁止的狀態(tài)中。為了檢測長流中繁忙的或處于SMI禁止的狀態(tài)中的處理器,實施例可例如 通過位圖來提供用于這些狀態(tài)的指示符。在一個實施例中,此類指示能夠通過稱為L0NG_ FL0W_INDICATI0N和SMI_INHIBITED_INDICATION的全局可見配置寄存器來提供。在此實施 例中,能夠?qū)Σ宀壑械拿總€邏輯處理器分配一個位。作為一個示例,這些寄存器可以由圖1 的寄存器138來表示。在其中處理器微代碼涉及進入長流與SMI禁止的狀態(tài)和從其退出的 實現(xiàn)中,微代碼/硬件能夠填充這些寄存器位。一些長流能引起長于5微秒的時間,并且因 此不等待處于這些狀態(tài)中的處理器的能力能夠提供SMM等待時間中的顯著節(jié)省。將來的處 理器可能花費多于5微秒來用于SMM微代碼進入流,并且其本身能視為長流。SMM主控能夠 等待直到所有處理器被考慮到,即,它們或者加入SMM或被報告處于長流中或處于SMI禁止 的狀態(tài)中。為了有助于此類確定,能夠使用存儲在SMRAM中的一個或多個表(例如位圖), 如下文描述的。在一個實施例中,在執(zhí)行指示符寄存器的檢查之前,主控處理器保存其狀態(tài)并運 行SMM前導(dǎo)代碼(preamble code) 0這些步驟能輕易花費多于0. 5微秒。此持續(xù)時間遠大 于用于任何飛行中的中斷(in-flightinterrupt)的傳播時間,從而確保SMI交付到核與讀 取其指示符寄存器之間不存在競爭狀況。如果在某些配置下延遲較小,則主控處理器能夠 插入小延遲循環(huán)來彌補(make up)?,F(xiàn)在參考圖4,示出的是根據(jù)本發(fā)明的另一個實施例的方法的流程圖。確切地來 說,圖4示出用于在所有邏輯處理器無需在SMM狀態(tài)中會合時處理進入SMM和從SMM退出 的流程圖。以此方式,能夠避免與執(zhí)行SMM操作之前等待所有邏輯處理器相關(guān)聯(lián)的等待時 間。如圖4中所見,方法400可通過生成SMI事件來開始(框410)。此SMI事件可傳播到 所有線程。注意,為了易于討論,假定圖4的線程是針對單個處理器插槽而言的,但是實現(xiàn) 能夠用于跨多個插槽會合SMM。接下來,可以在SMM指示符圖中為進入SMM會合狀態(tài)的每個線程設(shè)置指示符(框 420)。要理解,線程能夠首先執(zhí)行多種進入SMM的準(zhǔn)備動作,例如,狀態(tài)保存,例如上文參考 圖3描述的。進入SMM會合狀態(tài)的每個線程可以在可存儲在SMRAM中的SMM指示符圖中設(shè) 置指示符。在一個實施例中,此圖可以是其中每個邏輯處理器與圖的位關(guān)聯(lián)的位圖,以及其 中能夠?qū)⒚總€插槽的邏輯處理器分到圖的不同段中。由此,當(dāng)給定線程進入SMM時,位圖 中其對應(yīng)的位可以被設(shè)置。然后,可以選擇SMM內(nèi)部的線程之一作為主控或執(zhí)行線程(框 430)。在多種實施例中,哪個線程將是執(zhí)行線程的確定可變化。例如,可以預(yù)先選擇主控
10(例如,插槽0上的邏輯處理器0)或能夠經(jīng)由競選機制動態(tài)地選擇主控。仍然參考圖4,每個線程然后可以確定它是否已被選擇作為主控(菱形框435)。如 果未被選擇,則該線程可以進入休眠狀態(tài),其中它等待主控線程以信號通知完成(框470)。因此,控制為主控線程傳遞到框440。這里,可以為所有線程確定ACCOUNTED狀 態(tài)。在一個實施例中,除了也可存在于SMRAM中的線程存在圖外,此狀態(tài)還可以基于多種配 置寄存器、SMM指示符圖。此存在圖可以是與SMM指示符圖相似的位圖,并且其可在SMM初 始化期間設(shè)置以指示系統(tǒng)中存在的線程。在一個實施例中,框440處的確定是如下的按位 的或運算0R(L0NG_FL0W_INDICATI0N,SMI_INHIBITED_INDICATION, IN_SMM_INDICATION), 其中L0NG_FL0W_INDICATI0N是從存儲位矢量的狀態(tài)寄存器來獲得的,其每個位指示對應(yīng) 線程是否處于長流操作中,SMI_INHIBITED_INDICATION是從存儲位矢量的狀態(tài)寄存器獲得 的,其每個位指示對應(yīng)線程是否處于SMI禁止的狀態(tài)中,并且IN_SMM_INDICATION是SMM指 示符圖。按位或的結(jié)果、ACCOUNTED可存儲在位圖(例如,在SMRAM中)中。在此分析之后, 控制傳遞到菱形框450,其中可以確定對于所有存在的線程,ACCOUNTED狀態(tài)是否是活動的 (菱形框450)。這能基于ACCOUNTED運算的結(jié)果與存在圖之間的比較來確定。如果不是, 則控制傳遞回框440。否則,控制傳遞到框455,其中可以處理SMI事件。因此,主控線程可 以執(zhí)行期望的SMM代碼。在主控線程執(zhí)行的SMM結(jié)束時,控制傳遞到框460。在框460,可 以將ACCOUNTED狀態(tài)和SMM指示符重置(reset)(框460)。即,主控線程可以將這兩個位圖 中的值都重置。然后,主控線程可以用信號通知其他邏輯處理器它們可以從SMI恢復(fù)(框 465)。以此方式,其他線程從它們的等待循環(huán)釋放。因此,在框475,所有線程可從SMM恢 復(fù)。雖然在圖4的實施例中以此特定實現(xiàn)來示出,但是本發(fā)明的范圍在此方面不受限制。因此,實施例使得實現(xiàn)SMM處理程序執(zhí)行而沒有存儲器依賴性,從而改進可靠性。 此機制還解決與SMM關(guān)聯(lián)的性能和可伸縮性問題,使得SMI處理能夠避免成為多核/多插 槽系統(tǒng)中的瓶頸。因此,實施例避免具有DRAM依賴性的SMM代碼的執(zhí)行,使得實現(xiàn)其中SMM 代碼診斷和糾正存儲器錯誤的高可用性使用模型。實施例還使得在存在邏輯處理器處于長流或SMI禁止的狀態(tài)中時能夠以減少的 等待時間進入SMM。相比之下,目前沒有可靠的機制能由SMM代碼用于確定一個或多個處理 器是將稍后加入SMM還是處于SMM禁止的狀態(tài)中,并因此設(shè)置比最長長流狀態(tài)更長的超時。 此解決方案除了不可靠且難以實現(xiàn)外,還增加SMM等待時間并減少OS實時響應(yīng),而使用本 發(fā)明的一實施例能克服這些缺點。實施例可在代碼中實現(xiàn),并且可存儲在其上存儲有指令的存儲媒體上,所述指令 能用于編程系統(tǒng)以執(zhí)行這些指令。存儲媒體可包括但不限于任何類型的盤,包括軟盤、光 盤、光盤、固態(tài)驅(qū)動器(SSD)、緊致盤只讀存儲器(⑶-ROM)、緊致盤可重寫(⑶-RW)和磁光 盤;半導(dǎo)體裝置,例如只讀存儲器(ROM)、隨機存取存儲器(RAM)(例如動態(tài)隨機存取存儲器 (DRAM)、靜態(tài)隨機存取存儲器(SRAM))、可擦除可編程只讀存儲器(EPROM)、閃速存儲器、電 可擦除可編程只讀存儲器(EEPROM)、磁卡或光卡;或者適合于存儲電子指令的任何其他類 型的媒體。雖然本發(fā)明已經(jīng)相對有限數(shù)量的實施例來描述,但是本領(lǐng)域技術(shù)人員將從其領(lǐng)會 到許多修改和變化。所附權(quán)利要求旨在涵蓋落在本發(fā)明的真正精神和范圍內(nèi)的所有此類修 改和變化。
權(quán)利要求
1.一種設(shè)備,包括處理器核,執(zhí)行指令并進入系統(tǒng)管理模式(SMM),其中當(dāng)進入所述SMM時,所述處理器 核將存儲所述處理器核的狀態(tài)存儲裝置中存在的活動狀態(tài)到所述處理器核的存儲單元中, 并將通過插入與所述SMM關(guān)聯(lián)的值到所述狀態(tài)存儲裝置中來設(shè)立SMM執(zhí)行環(huán)境。
2.如權(quán)利要求1所述的設(shè)備,其中所述處理器核將暴露所述存儲單元中存儲的信息以 作為僅對SMM代碼可存取的機器特定的寄存器(MSR)。
3.如權(quán)利要求1所述的設(shè)備,還包括第一狀態(tài)寄存器,所述第一狀態(tài)寄存器存儲指示 啟用所述處理器核將所述活動狀態(tài)存儲在所述存儲單元中而非存儲在系統(tǒng)管理隨機存取 存儲器(SMRAM)中的指示符。
4.如權(quán)利要求3所述的設(shè)備,其中所述第一狀態(tài)寄存器只能被所述SMM中執(zhí)行的代理 來更新。
5.如權(quán)利要求3所述的設(shè)備,其中所述處理器核將執(zhí)行存儲在所述SMRAM中的SMM代碼。
6.如權(quán)利要求5所述的設(shè)備,其中當(dāng)所述SMM將解析存儲器錯誤時,所述處理器核將從 非易失性存儲器獲得恢復(fù)SMM代碼而不從所述SMRAM獲得所述SMM代碼。
7.如權(quán)利要求3所述的設(shè)備,還包括第二狀態(tài)寄存器,所述第二狀態(tài)寄存器存儲指示 所述處理器核的邏輯處理器處于長流操作中的指示符。
8.如權(quán)利要求7所述的設(shè)備,還包括第三狀態(tài)寄存器,所述第三狀態(tài)寄存器存儲指示 所述處理器核的邏輯處理器處于系統(tǒng)管理中斷(SMI)禁止的狀態(tài)中的指示符。
9.如權(quán)利要求8所述的設(shè)備,還包括SMM指示符圖,所述SMM指示符圖存儲已進入所述 SMM的處理器核的每個邏輯處理器的指示。
10.如權(quán)利要求8所述的設(shè)備,其中所述第一、第二和第三狀態(tài)寄存器在所述SMM外部 是不可寫的。
11.如權(quán)利要求1所述的設(shè)備,還包括主控處理器,所述主控處理器執(zhí)行所述SMM而無 需所述處理器核的所有邏輯處理器都已執(zhí)行所述SMM中的會合。
12.如權(quán)利要求11所述的設(shè)備,其中所述主控處理器將存取指示所述處理器核的邏輯 處理器處于長流操作中的第一狀態(tài)寄存器、指示所述處理器核的邏輯處理器處于SMI禁止 的狀態(tài)中的第二狀態(tài)寄存器以及指示已進入所述SMM的處理器核的每個邏輯處理器的SMM 指示符圖,并基于此來確定是否要執(zhí)行請求的SMM操作而無需所有邏輯處理器已執(zhí)行所述會合。
13.如權(quán)利要求12所述的設(shè)備,其中如果所述處理器核的每個邏輯處理器已進入所述 SMM、處于長流操作中或處于SMI禁止的狀態(tài)中,則所述主控處理器將執(zhí)行所述請求的SMM 操作而無需所有邏輯處理器已執(zhí)行所述會合。
14.一種方法,包括響應(yīng)系統(tǒng)管理中斷(SMI)事件,確定處理器上執(zhí)行的所有線程是否已進入系統(tǒng)管理模 式(SMM)會合狀態(tài);以及如果否,則確定其余線程是否正在執(zhí)行長流操作或處于SMI禁止的狀態(tài)中,以及如果 是,則使用主控線程在其余線程執(zhí)行所述長流操作或處于所述SMI禁止的狀態(tài)中時處理所 述SMI事件,否則在處理所述SMI事件之前等待其余線程進入所述SMM會合狀態(tài)。
15.如權(quán)利要求14所述的方法,還包括在SMM指示符圖中為進入所述SMM會合狀態(tài)的 每個線程設(shè)置指示符。
16.如權(quán)利要求15所述的方法,還包括設(shè)置所述處理器的第一狀態(tài)寄存器的指示符以指示線程處于長流操作中;以及設(shè)置所述處理器的第二狀態(tài)寄存器的指示符以指示線程處于SMI禁止的狀態(tài)中。
17.如權(quán)利要求16所述的方法,其中所述確定包括執(zhí)行所述SMM指示符圖、所述第一狀 態(tài)寄存器和所述第二狀態(tài)寄存器之間的按位或運算。
18.如權(quán)利要求14所述的方法,其中在進入所述SMM時,所述主控線程將存儲所述處理 器的狀態(tài)存儲裝置中存在的活動狀態(tài)到所述處理器的存儲單元中并將存儲SMM狀態(tài)到所 述狀態(tài)存儲裝置中。
19.一種系統(tǒng),包括第一處理器,包括執(zhí)行指令和進入系統(tǒng)管理模式(SMM)的第一核、指示所述第一核 上執(zhí)行的線程是否處于長流操作中的第一指示符、指示所述線程是否處于系統(tǒng)管理中斷 (SMI)禁止的狀態(tài)中的第二指示符以及存儲單元,其中在進入所述SMM時,所述第一核將存 儲所述第一核的狀態(tài)存儲裝置中存在的活動狀態(tài)到所述存儲單元中并將存儲SMM執(zhí)行狀 態(tài)到所述狀態(tài)存儲裝置中,所述存儲單元專用于在所述SMM期間存儲所述活動狀態(tài);第二處理器,包括執(zhí)行指令和進入所述SMM的第二核、指示所述第二核上執(zhí)行的第二 線程是否處于長流操作中的第一指示符、指示所述第二線程是否處于所述SMI禁止的狀態(tài) 中的第二指示符以及第二存儲單元,其中在進入所述SMM時,所述第二核將存儲所述第二 核的狀態(tài)存儲裝置中存在的活動狀態(tài)到所述第二存儲單元中并將存儲SMM執(zhí)行狀態(tài)到所 述狀態(tài)存儲裝置中,所述第二存儲單元專用于在所述SMM期間存儲所述活動狀態(tài);以及動態(tài)隨機存取存儲器(DRAM),耦合到所述第一和第二處理器,其中所述DRAM的一部分 是用于所述系統(tǒng)的系統(tǒng)管理隨機存取存儲器(SMRAM)。
20.如權(quán)利要求19所述的系統(tǒng),其中所述DRAM耦合在其中所述第二處理器將通過所述 第一處理器與所述DRAM通信的非一致存儲器架構(gòu)(NUMA)中。
21.如權(quán)利要求19所述的系統(tǒng),其中所述第二處理器將不將所述活動狀態(tài)存儲到所述 SMRAM來響應(yīng)SMI信號而是轉(zhuǎn)而將所述活動狀態(tài)存儲在所述第二存儲單元中。
22.如權(quán)利要求19所述的系統(tǒng),其中所述第一處理器包括主控處理器,所述主控處理 器在其中所述第一和第二處理器的至少一個邏輯處理器未進入SMM會合狀態(tài)的所述SMM會 合狀態(tài)之后執(zhí)行SMM操作。
23.如權(quán)利要求22所述的系統(tǒng),其中所述至少一個邏輯處理器處于長流操作中或SMI 禁止的狀態(tài)中。
24.如權(quán)利要求22所述的系統(tǒng),其中所述主控處理器將存取指示所述第一處理器的任 何邏輯處理器是否處于長流操作中的第一位圖、指示所述第一處理器的任何邏輯處理器是 否處于SMI禁止的狀態(tài)中的第二位圖以及指示已進入所述SMM會合狀態(tài)的所述第一處理器 的每個邏輯處理器的第三位圖,并基于此來確定是否要在所述至少一個邏輯處理器未進入 所述SMM會合狀態(tài)時執(zhí)行所述SMM操作。
全文摘要
本發(fā)明名稱為“在處理器中提供用于系統(tǒng)管理模式的狀態(tài)存儲裝置”。在一個實施例中,本發(fā)明包括具有例如靜態(tài)隨機存取存儲器的管芯上存儲裝置的處理器,管芯上存儲裝置在進入系統(tǒng)管理模式(SMM)時存儲從處理器的架構(gòu)狀態(tài)存儲裝置交換出來的一個或多個線程的架構(gòu)狀態(tài)。以此方式,能夠避免將此狀態(tài)信息傳送到系統(tǒng)管理存儲器,從而減少與進入SMM關(guān)聯(lián)的等待時間。實施例還可以使處理器能夠更新處于長指令流中或處于系統(tǒng)管理中斷(SMI)阻塞的狀態(tài)中的執(zhí)行代理的狀態(tài),以便向SMM內(nèi)部的代理提供指示。還描述了其他實施例并且對其要求權(quán)利。
文檔編號G06F9/48GK102004668SQ20101027740
公開日2011年4月6日 申請日期2010年8月31日 優(yōu)先權(quán)日2009年8月31日
發(fā)明者B·加尼桑, F·賓斯, G·B·多希, M·J·庫馬爾, M·S·納圖, R·C·斯旺森, R·N·默西, R·S·帕塔薩拉蒂, S·M·達塔, T·蘭加拉詹 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
浏阳市| 凤凰县| 阳山县| 遂平县| 土默特右旗| 区。| 泊头市| 化隆| 大同市| 庄河市| 临城县| 邢台市| 额尔古纳市| 揭东县| 积石山| 东台市| 香港| 岑巩县| 鸡泽县| 如皋市| 集安市| 临漳县| 彝良县| 漳州市| 类乌齐县| 鄂托克前旗| 嘉禾县| 沛县| 肥东县| 合山市| 叶城县| 扎兰屯市| 神农架林区| 扬中市| 巴林左旗| 抚顺县| 上饶市| 二连浩特市| 云南省| 贵州省| 偏关县|