專利名稱:允許快速平臺重啟的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及平臺,并且更具體地說,涉及在平臺重啟期間,通過最小化與平臺連接的輸入/輸出(10)設(shè)備的硬件初始化來允許平臺的快速重啟,但并不僅涉及該方面。
背景技術(shù):
在平臺的操作期間,非常期望平臺具有連續(xù)的正常運行時間或可以連續(xù)地訪問。 平臺的連續(xù)運行能力對終端用戶很重要,并且對企業(yè)尤其重要,因為它會影響企業(yè)的運營。 平臺的正常運行時間和可靠性通常被測量并且稱為5個9,即99. 999%的可用性。在企業(yè) 中,當(dāng)平臺在一年中有超過51/4分鐘不可用時,其不可以被認(rèn)定為滿足5個9。針對企業(yè)的 平臺的銷售通常由平臺滿足5個9的能力來確定。影響平臺的正常運行時間的因素之一是需要重啟或重置平臺。當(dāng)平臺被重啟時, 重啟所花費的時間被認(rèn)為是非正常運行時間并且其影響平臺的可用性。需要重啟平臺的大 量原因中的一些包括由于加載新OS驅(qū)動程序、新軟件或新軟件補(bǔ)丁而重新初始化在平臺 上運行的操作系統(tǒng)(OS)。OS可以確定需要重啟平臺來更新其注冊表項(registry key)或 重啟OS環(huán)境。然而,在一些情況中,可能無需重啟整個平臺來允許OS更新它的注冊表項或無需 重啟OS環(huán)境。在一個實例中,當(dāng)平臺不需要硬件改變而僅需軟件改變時,無需重啟整個平 臺以及再次重新初始化所有硬件。然而,傳統(tǒng)的平臺甚至在當(dāng)平臺不需要硬件改變而僅需 要軟件改變時也執(zhí)行完全的平臺重置。圖IA描述了支持遺留基本輸入/輸出系統(tǒng)(legacy based BIOS)的傳統(tǒng)平臺的 現(xiàn)有技術(shù)的重啟順序100。時間線105示出了重啟順序100的時間基準(zhǔn)。當(dāng)傳統(tǒng)的平臺在 時間0處加電時,其進(jìn)入早期初始化的階段110。在階段110,中央處理單元(CPU)加電并執(zhí) 行位于其重置向量處的BIOS代碼。BIOS可以執(zhí)行平臺的基本檢查,例如加電自檢(POST) 和存儲器檢查。在檢查完成后,BIOS啟動硬件初始化的下一階段115。在階段115中,BIOS 檢測連接到或插在平臺上的10設(shè)備并執(zhí)行初始化任務(wù),例如外圍部件互連(PCI)枚舉、運 行選項只讀存儲器(ROM)或輪詢10設(shè)備。當(dāng)硬件初始化階段115完成時,在階段120運行0S。在平臺的操作期間,會遇到軟 件發(fā)起的重置請求或熱重置。階段125描述了平臺接收到熱重置請求。在接收到熱重置請 求時,平臺執(zhí)行完整的平臺重置并再次進(jìn)入早期初始化的階段130、硬件初始化的階段135 和運行OS的階段140。
根據(jù)對主題的以下詳細(xì)的描述,本發(fā)明實施例的特征和優(yōu)點將變得明顯,其中圖IA描述了傳統(tǒng)的平臺(現(xiàn)有技術(shù))的重啟順序;圖IB描述了根據(jù)本發(fā)明一個實施例的平臺的重啟順序;圖2描述了平臺的引導(dǎo)流程;
圖3描述了根據(jù)本發(fā)明的一個實施例的平臺的重啟順序;圖4描述了根據(jù)本發(fā)明的一個實施例的平臺重啟的流程圖;圖5A描述了根據(jù)本發(fā)明的一個實施例的平臺重啟的流程圖;圖5B描述了根據(jù)本發(fā)明的一個實施例的平臺重啟的流程圖; 圖6描述了根據(jù)本發(fā)明的一個實施例的實現(xiàn)快速平臺重啟的系統(tǒng)。
具體實施例方式說明書中提到的本發(fā)明的“一個實施例”或“一實施例”意味著結(jié)合實施例描述的 特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實施例中。因此,在說明書各處出現(xiàn)的短語 “在一個實施例中”并非必然都指相同的實施例。本發(fā)明的實施例在平臺重啟期間,通過最小化與平臺連接的IO設(shè)備的硬件初始 化來允許平臺執(zhí)行快速重置或重啟。平臺包括但不限于服務(wù)器、臺式計算機(jī)、移動計算機(jī)、 工作站或可以接收熱重置請求以重啟計算設(shè)備的任何計算設(shè)備。平臺包含IO設(shè)備,所述IO 設(shè)備包括但不限于硬盤驅(qū)動器、固態(tài)驅(qū)動器、存儲器模塊、處理器、芯片組、視頻顯示卡、聲 卡、壓縮盤驅(qū)動器、軟盤驅(qū)動器或為平臺執(zhí)行功能的任何其它IO設(shè)備。熱重置請求是由在 平臺上運行的OS或由平臺的本地或遠(yuǎn)程用戶發(fā)起的軟件發(fā)起重置請求(SIRR)。在平臺中 觸發(fā)熱重置的OS中的事件包括但不限于從平臺的本地用戶或遠(yuǎn)程用戶接收到重引導(dǎo)或重 啟請求,以及在OS安裝新軟件模塊或新軟件補(bǔ)丁之后的重啟請求。圖IB描述了根據(jù)本發(fā)明的一個實施例的,支持遺留BIOS的平臺的重啟順序150。 早期初始化的階段160類似于圖IA中描述的階段130。在一個實施例中,修改平臺的BIOS 來檢測并捕獲(trap)對平臺的熱重置請求。階段160執(zhí)行平臺的基本檢查的早期初始化, 例如加電自檢(POST)和存儲器檢測。在檢查完成后,修改的BIOS啟動硬件初始化的下一 階段165。階段165的硬件初始化類似于階段115的硬件初始化。在另一實施例中,修改平臺的BIOS,以在階段165保存連接到平臺的一些或全部 10設(shè)備的先前的硬件狀態(tài)。10設(shè)備的硬件狀態(tài)包括但不限于10設(shè)備的寄存器設(shè)置和在 PCI枚舉期間由BIOS確定的配置設(shè)置。例如,當(dāng)BIOS執(zhí)行PCI枚舉并檢測到連接到平臺的硬盤驅(qū)動器時,BIOS從硬盤驅(qū) 動器請求信息,例如硬盤驅(qū)動器的類型或驅(qū)動器的模式(主或從)。BIOS基于從硬盤驅(qū)動 器獲得的信息來確定傳輸速度的最佳設(shè)置。硬盤驅(qū)動器的最佳設(shè)置由修改后的BIOS來保 存,以使得硬盤的最佳設(shè)置在平臺的重啟期間可以被重新編程。通過保存最佳設(shè)置,避免了 需要BIOS每次在熱重置期間重啟平臺時從硬盤驅(qū)動器請求信息并確定最佳設(shè)置。 完成硬件初始化的階段165之后,在階段170運行OS并且在階段175將OS的熱重 置請求發(fā)送到平臺。在早期初始化的階段180,修改后的BIOS檢測并捕獲熱重置請求。當(dāng) 熱重置請求被捕獲時,修改后的BIOS將熱重置請求轉(zhuǎn)換為僅CPU初始化重置請求。通過將 熱重置請求轉(zhuǎn)換為僅CPU初始化重置請求,平臺中的10設(shè)備不再接收執(zhí)行自身初始化的重 置請求。在圖IB的階段180中,CPU未執(zhí)行在圖IA的階段130中執(zhí)行的全部BIOS代碼。 階段180的修改后的BIOS代碼執(zhí)行基本的CPU初始化,并且通過使用在階段165所保存的 先前的硬件狀態(tài)對10設(shè)備重新編程從而將平臺中的10設(shè)備恢復(fù)到它們先前的硬件狀態(tài)。 在一個實施例中,BIOS使用10設(shè)備的先前的硬件狀態(tài)的保存的寄存器設(shè)置來對10設(shè)備的寄存器進(jìn)行重新編程。在階段180完成后,平臺繞過傳統(tǒng)的硬件初始化階段135,進(jìn)入階段190以重運行或重啟先前在階段170中加載的OS的相同版本。時間線105和155示出了與重啟順序100 相比重啟順序150的基準(zhǔn)時間節(jié)省。執(zhí)行圖IB中的平臺的重啟(階段180和階段190)所 需的時間比執(zhí)行圖IA中的平臺重啟(階段130、階段135和階段140)所需的時間短。通過利用在早期初始化的階段180中所執(zhí)行的小規(guī)模的BIOS代碼并且最小化平 臺中的IO設(shè)備的執(zhí)行自身初始化的需求,平臺的重啟以快速的方式來執(zhí)行。當(dāng)不需要對平 臺硬件進(jìn)行改變以及當(dāng)僅需要對平臺軟件進(jìn)行改變時,圖IB的平臺不執(zhí)行完全的平臺重 置。相反,當(dāng)平臺接收到熱重置請求時,僅重置對于軟件事件重新初始化自身所需的平臺的 一部分。在本發(fā)明的一個實施例中,減少了與平臺的重啟相關(guān)聯(lián)的平臺開銷。平臺中的硬 件初始化的最小化是減少平臺開銷的一種方法,并且還可以執(zhí)行其它用于減少平臺開銷的 方法,以允許平臺的快速重啟。由于與軟件補(bǔ)丁的安裝和常規(guī)維護(hù)相關(guān)聯(lián)的更低的平臺開 銷,因此平臺的更快速的重啟提供了確保企業(yè)中更多的平臺可以維持5個9的可用性的能 力。圖2描述了支持可擴(kuò)展固件接口(EFI)或統(tǒng)一 EFI (UEFI)的平臺的引導(dǎo)流程200。 在一個實施例中,基于針對EFI的Intel 平臺創(chuàng)新框架(Intel Platform Innovation Framework)來實現(xiàn)平臺中的UEFI,下文稱為“框架”。引導(dǎo)流程200包括但不限于平臺加電 時的階段201、平臺初始化時的階段202、OS引導(dǎo)時的階段203、當(dāng)OS接收到熱重置請求時 的階段204。當(dāng)平臺重啟時,引導(dǎo)流程200返回階段201。在引導(dǎo)流程200的加電階段201期間,平臺進(jìn)入“框架”的安全(SEC)階段210。 預(yù)驗證器210處理所有平臺重啟事件,其包括但不限于從未加電狀態(tài)向平臺供電,從活動 狀態(tài)重啟平臺以及接收各種異常情況。引導(dǎo)流程200中的下一階段是平臺初始化階段202。 平臺初始化階段202包括“框架”的預(yù)EFI初始化(PEI)階段220和驅(qū)動執(zhí)行環(huán)境(DXE)階 段 230。在SEC階段210之后,PEI階段220配置平臺以滿足“框架”結(jié)構(gòu)的DXE階段230 的最低必要條件。在PEI階段220期間,PEI核心222初始化關(guān)鍵10設(shè)備,例如CPU 224、 芯片組226和主板228。PEI核心222還初始化圖2中未示出的、平臺中的所有其它關(guān)鍵10 設(shè)備。在PEI階段之后,EFI驅(qū)動調(diào)度器232在DXE階段230期間加載在平臺中連接的10 設(shè)備的設(shè)備驅(qū)動器、總線驅(qū)動器或串行驅(qū)動器236。架構(gòu)協(xié)議234也在該階段被加載。元件 244和246描繪了針對設(shè)備驅(qū)動器236和架構(gòu)協(xié)議246的UEFI接口。在DXE階段230之后,進(jìn)入引導(dǎo)設(shè)備選擇(BDS)階段240。引導(dǎo)管理器242確定大 容量存儲設(shè)備驅(qū)動器從而引導(dǎo)用于平臺的0S,并且當(dāng)多個操作系統(tǒng)出現(xiàn)或安裝在平臺中時 還確定將哪一個OS加載到平臺中。引導(dǎo)流程200進(jìn)入OS引導(dǎo)階段并且平臺進(jìn)入“框架”的 瞬時系統(tǒng)加載(TSL, transient system load)階段250。引導(dǎo)管理器242加載瞬時OS引導(dǎo) 加載程序256,并且瞬時OS引導(dǎo)加載程序256啟動瞬時OS環(huán)境254。OS空缺(OSabsent) 應(yīng)用程序252可以由瞬時OS環(huán)境254運行。在瞬時OS引導(dǎo)加載程序256完成后運行最終 OS引導(dǎo)加載程序258。在一個實施例中,修改弓I導(dǎo)管理器242以加載最終OS加載程序的映像兩次并且將映像復(fù)制到高速緩存中。在其它實施例中,引導(dǎo)管理器242加載最終OS引導(dǎo)加載程序兩 次,并且將最終OS引導(dǎo)加載程序映像的第一副本保存為未改變的基于存儲器的源,并且運 行最終OS引導(dǎo)加載程序映像的第二副本。在其它實施例中,OS的部分映像或整個映像也 可以被復(fù)制為未改變的基于存儲器的源,從而允許恢復(fù)OS的部分映像或整個映像。當(dāng)最終OS引導(dǎo)加載程序258啟動最終OS環(huán)境262并執(zhí)行OS存在(OSpresent) 應(yīng)用程序264時,平臺進(jìn)入運行時間(RT)階段。當(dāng)在RT階段期間由OS接收到熱重置請求 時,引導(dǎo)流程200返回加電階段201以重啟平臺并且再次進(jìn)入平臺初始化階段202和OS引 導(dǎo)階段203。
圖3描述了根據(jù)本發(fā)明的一個實施例的平臺的重啟順序300。平臺從OS接收熱 重置請求304。在一個實施例中,熱重置請求304接著引導(dǎo)流程200。當(dāng)接收到熱重置請求 時,平臺進(jìn)入加電階段301。修改預(yù)驗證器312以檢測并捕獲任何熱重置請求。預(yù)驗證器 312還被修改為當(dāng)熱重置被捕獲時,將該熱重置轉(zhuǎn)換為僅CPU初始化重置請求。當(dāng)預(yù)驗證器312檢測到熱重置304時,其捕獲熱重置304并且將熱重置304轉(zhuǎn)換 為僅CPU初始化重置請求。平臺初始化CPU并且預(yù)驗證器將平臺中的IO設(shè)備恢復(fù)到它們 先前的硬件狀態(tài)。在一個實施例中,預(yù)驗證器調(diào)用“框架”的block 10. reset函數(shù),其將每 個IO設(shè)備恢復(fù)到已知狀態(tài)。由于平臺中的IO設(shè)備被預(yù)驗證器312恢復(fù)到已知的硬件狀態(tài) 或其先前的硬件狀態(tài),所以重啟順序300避免了平臺初始化階段302,并且不執(zhí)行PEI階段 320 和 DXE 階段 330。執(zhí)行PEI核心322的步驟以及初始化CPU 324、芯片組326和主板328的步驟不 被執(zhí)行,并且它們用虛線來表示。此外,EFI驅(qū)動調(diào)度程序332、設(shè)備驅(qū)動器336和架構(gòu)協(xié) 議334不被重新加載,并且它們也用虛線來表示。在BDS階段340,預(yù)驗證器312調(diào)用引導(dǎo) 管理器342。在一個實施例中,引導(dǎo)管理器342使用在BDS階段340期間所保存的最終OS 引導(dǎo)加載程序映像的副本來恢復(fù)最終OS引導(dǎo)加載程序358。在其它實施例中,引導(dǎo)管理器 342也可以被修改為從平臺的引導(dǎo)盤加載另外的映像以加速平臺的重啟。由于使用先前的OS加載程序映像,所以不執(zhí)行用于執(zhí)行瞬時OS引導(dǎo)加載程序 356、瞬時OS環(huán)境354和OS空缺應(yīng)用程序352的步驟,并且用虛線來表示它們。使用在BDS 階段340期間所保存的最終OS引導(dǎo)加載程序映像的副本來執(zhí)行最終OS引導(dǎo)加載程序358, 并且在RT階段360中執(zhí)行最終OS環(huán)境362和OS存在應(yīng)用程序364。圖4描述了根據(jù)本發(fā)明的一個實施例的平臺的重啟順序的流程圖。在步驟405,在 平臺上運行的OS接收到熱重置請求。在一些實施例中,重啟平臺的熱重置請求由在OS中 安裝應(yīng)用程序來觸發(fā),或由平臺的本地或遠(yuǎn)程用戶來觸發(fā)。OS啟動平臺向斷電狀態(tài)的轉(zhuǎn)變。 在一些實施例中,OS啟動平臺向系統(tǒng)功率狀態(tài)5 (S5)的轉(zhuǎn)變。在步驟410中,平臺開始執(zhí)行OS的關(guān)閉,并且OS將OS中的臟數(shù)據(jù)(dirty data) 寫回到大容量存儲設(shè)備。大容量存儲設(shè)備包括但不限于硬盤驅(qū)動器、快閃驅(qū)動器、固態(tài)存儲 器、通用串行總線(USB)驅(qū)動器或用于平臺的任何形式的數(shù)據(jù)存儲單元。不執(zhí)行到大容量 存儲設(shè)備的回寫。在一個實施例中,臟數(shù)據(jù)被回寫到回寫(WB)高速緩存。在步驟410中回寫臟數(shù)據(jù)之后,在步驟415中OS關(guān)閉并觸發(fā)熱重置。在一個實施 例中,通過經(jīng)由端口 64h向板載鍵盤控制器寫入來觸發(fā)熱重置以執(zhí)行平臺的熱重置。在步 驟420中,平臺通過BIOS來執(zhí)行定制的快速重啟流程。在一個實施例中,由在圖IB中討論的修改的BIOS 180來執(zhí)行定制的快速重啟流程420。在其它實施例中,由在圖3中討論的 預(yù)驗證器312來執(zhí)行定制的快速重啟流程420。修改的BIOS 180和預(yù)驗證器312都檢測并 捕獲熱重置請求,并且將熱重置轉(zhuǎn)換為僅CPU初始化重置請求。由修改的BIOS 180或預(yù)驗 證器312將平臺中的IO設(shè)備恢復(fù)到先前的硬件狀態(tài)。 在步驟425,修改后的BIOS發(fā)出中斷19h(十六進(jìn)制)以加載OS。在另一實施例 中,預(yù)驗證器運行引導(dǎo)管理器342以使用先前的OS加載程序映像的副本來恢復(fù)OS引導(dǎo)加 載程序。在步驟430中,OS引導(dǎo)加載程序通過發(fā)出中斷13h(十六進(jìn)制)來命中快閃驅(qū)動 器。在步驟435中,使用本地驅(qū)動器來弓丨導(dǎo)0S,并且在步驟440中,OS重啟完成。圖5A示出了根據(jù)本發(fā)明的一個實施例的、支持遺留BIOS或“框架”的平臺的重 啟順序的流程圖。在步驟502,平臺進(jìn)入早期初始化階段并且對平臺的CPU和存儲器供電。 CPU執(zhí)行位于其重置向量處的BIOS代碼并執(zhí)行平臺的基本檢查,例如加電自檢(POST)和存 儲器檢測。在步驟504,流程檢查是否支持平臺的快速重啟。如果不支持,那么在步驟508 流程進(jìn)行平臺的常規(guī)硬件初始化。在常規(guī)硬件初始化期間,檢測連接到或插入平臺的10設(shè) 備,并且執(zhí)行例如外圍部件互連(PCI)枚舉、運行選項只讀存儲器(ROM)或輪詢10設(shè)備這 樣的任務(wù)。如果支持,那么在步驟506,流程檢查平臺的當(dāng)前的硬件配置是否與平臺的先前 的硬件配置不同。如果硬件配置有改變,那么流程繼續(xù)到步驟508以執(zhí)行平臺的常規(guī)初始化。如果 硬件配置未改變,那么流程繼續(xù)到步驟510以檢測是否有熱重置請求。如果有,那么流程繼 續(xù)到步驟5B。在圖5B中討論了步驟5B。如果沒有,那么流程繼續(xù)到步驟512以執(zhí)行平臺的 常規(guī)初始化。在一個實施例中,由圖IB中討論的修改后的BIOS 180來執(zhí)行步驟502、504、 506和510。在另一實施例中,由圖3的預(yù)驗證器312來執(zhí)行步驟502、504、506和510。在 PEI 320階段和DXE 330階段期間,執(zhí)行常規(guī)初始化的步驟512。盡管步驟506和508顯示 了當(dāng)檢測到硬件改變時平臺不執(zhí)行快速平臺重啟,但是在其它實施例中,可以修改流程以 允許平臺在檢測到硬件改變時支持快速平臺重啟。例如,流程檢測到連接到平臺的新的10 設(shè)備并執(zhí)行新的10設(shè)備的常規(guī)初始化,并且流程繼續(xù)到步驟510。在步驟512之后,流程繼續(xù)到步驟514以檢查平臺是否支持遺留BIOS。如果支持, 那么流程繼續(xù)到步驟518以將平臺的遺留BIOS存儲器區(qū)域中的數(shù)據(jù)復(fù)制到緩沖器。遺留 BIOS存儲器區(qū)域中的數(shù)據(jù)包括但不限于BIOS數(shù)據(jù)區(qū)域(BDA)中的數(shù)據(jù)和擴(kuò)展BIOS數(shù)據(jù)區(qū) 域(EBDA)中的數(shù)據(jù)。在一個實施例中,在平臺的存儲器映射中,將所述緩沖器指示為對OS 或OS加載程序不可用。在另一實施例中,復(fù)制的數(shù)據(jù)被預(yù)先配置簽名并且被放置在緩沖器 的特定存儲器粒度處,以使得其可以由平臺發(fā)現(xiàn)。如果在步驟514中確定平臺不支持遺留BIOS,那么流程繼續(xù)到步驟516。步驟516 加載OS加載程序兩次并將OS加載程序映像的第一副本保存為未改變的基于存儲器的源, 并且運行OS加載程序映像的第二副本。在其它實施例中,OS的部分映像或整個映像也可 以被復(fù)制為未改變的基于存儲器的源,以允許恢復(fù)OS的部分或整個映像。在步驟520,流程 檢查OS加載程序是否嘗試轉(zhuǎn)變?yōu)檫\行時間。如果不是,那么在步驟522,流程繼續(xù)平臺的 OS初始化。如果是,那么流程在步驟524,在平臺重啟期間,維護(hù)引導(dǎo)服務(wù)存儲器以便于平 臺保持其固件基礎(chǔ)結(jié)構(gòu)。在一個實施例中,在支持EFI或支持所述框架的平臺的BDS階段中,由引導(dǎo)管理器342來執(zhí)行步驟516、520、522、524。當(dāng)接收到對“框架”的函數(shù)ExitBootServices的調(diào)用時,引導(dǎo)管理器不解構(gòu)(deconstruct)引導(dǎo)服務(wù)存儲器。在步驟508、518和524后,在步驟 526運行OS。在步驟528,流程接收重置并繼續(xù)到步驟502以執(zhí)行平臺的早期初始化。圖5B說明了當(dāng)步驟510檢測到存在熱重置請求時的流程圖。在一個實施例中,由 圖IB中討論的修改后的BIOS 180來執(zhí)行步驟552、554、556和558。在另一實施例中,由圖 3的預(yù)驗證器312來執(zhí)行步驟552、554、560、562和564。在步驟552,修改后的BIOS 180或 預(yù)驗證器312檢測到并捕獲熱重置請求。修改后的BIOS 180或預(yù)驗證器312還將熱重置 請求轉(zhuǎn)換為僅CPU初始化重置請求。CPU被初始化為其先前的狀態(tài)或已知的狀態(tài)。在步驟 554,流程檢查平臺是否支持遺留BIOS。如果是,那么在步驟556,修改后的BIOS 180將平 臺的CPU切換為實模式,并對高級可編程中斷控制器(APIC)進(jìn)行重新編程。在步驟518,修 改的BIOS 180使用其先前的值的復(fù)制的數(shù)據(jù)將遺留BIOS存儲器區(qū)域恢復(fù)為其先前的值。 在步驟558,修改的BIOS 180經(jīng)由中斷19h (十六進(jìn)制)來啟動引導(dǎo)(boot strap)加載程 序,從而運行OS以重啟平臺。如果平臺不支持遺留BIOS而支持EFI或“框架”,那么在步驟560中預(yù)驗證器312 將平臺的CPU切換為保護(hù)模式,并對高級可編程中斷控制器(APIC)進(jìn)行重新編程。在步驟 562,預(yù)驗證器312將平臺中的10設(shè)備恢復(fù)到它們先前的硬件狀態(tài)或已知的狀態(tài)。在一個 實施例中,預(yù)驗證器312調(diào)用“框架”的block_io重置函數(shù),其將每個10設(shè)備重置為已知 的狀態(tài)或先前的硬件狀態(tài)??梢葬槍γ總€10設(shè)備實現(xiàn)block_io重置函數(shù),或者為所有10 設(shè)備共同地實現(xiàn)block_io重置函數(shù)。在步驟564,使用在步驟516中所保存的先前的OS加載程序映像的副本來恢復(fù)平 臺的OS加載程序。使用在步驟516所保存的OS加載程序映像來運行0S。盡管步驟564 僅恢復(fù)OS加載程序映像,但是在其它實施例中,步驟564可以恢復(fù)其它映像,該其它映像允 許平臺以快速方式來重啟。步驟564和558繼續(xù)到步驟568來運行0S,并且流程返回步驟 5A。盡管流程圖5A和5B描述了針對支持遺留BIOS或EFI的平臺的重啟順序,但是并不意 味著限制性的。本發(fā)明的實施例還可以支持其它形式的引導(dǎo)固件以允許平臺的快速重啟。圖6示出了根據(jù)實施例的實現(xiàn)本文公開的方法的系統(tǒng)600的框圖。系統(tǒng)600包括 但不限于臺式計算機(jī)、膝上型電腦、筆記本電腦、個人數(shù)字助理(PDA)、服務(wù)器、工作站、蜂窩 電話、移動計算設(shè)備、互聯(lián)網(wǎng)裝置或任何其它類型的計算設(shè)備。在另一實施例中,用來實現(xiàn) 本文公開的方法的系統(tǒng)600可以是片上系統(tǒng)(SOC)類型的系統(tǒng)。系統(tǒng)600包括具有存儲器控制器630和輸入/輸出(1/0)控制器640的芯片組 635。芯片組通常提供存儲器和1/0管理功能,以及可以由處理器625訪問或使用的多個通 用和/或?qū)S眉拇嫫?、計時器等。可以使用一個或多個處理器來實現(xiàn)處理器625。存儲器控制器630執(zhí)行使得處理器625能夠經(jīng)由總線665對主存儲器615進(jìn)行訪 問并與其進(jìn)行通信的功能,其中,所述主存儲器615包括易失性存儲器610和非易失性存儲 器620。在本發(fā)明的一個實施例中,修改的BI0S180存儲在非易失性存儲器620中。在本發(fā) 明的其它實施例中,預(yù)驗證器312存儲在非易失性存儲器620中。易失性存儲器610包括但不限于同步動態(tài)隨機(jī)存取存儲器(SDRAM)、動態(tài)隨機(jī)存 取存儲器(DRAM)、RAMBUS動態(tài)隨機(jī)存取存儲器(RDRAM)和/或任何其它類型的隨機(jī)存取存 儲設(shè)備。非易失性存儲器620包括但不限于閃存、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)和/或任何其它期望的類型的存儲器設(shè)備。存儲器615存儲信息和由處理器625執(zhí)行的指令。存儲器615還可以存儲當(dāng)處理 器625執(zhí)行指令時的臨時變量或其它中間信息。系統(tǒng)600包括但不限于耦合到總線665的接口電路655。接口電路655使用任何 類型的公知的接口標(biāo)準(zhǔn)來實現(xiàn),包括但不限于以太網(wǎng)接口、通用串行總線(USB)、第三代輸 入/輸出接口(3GI0)和/或任何其它合適類型的接口。一個或多個輸入 設(shè)備645連接到接口電路655。輸入設(shè)備645允許用戶向處理器 625輸入數(shù)據(jù)和命令。例如,使用鍵盤、鼠標(biāo)、觸摸屏、軌跡板、軌跡球和/或語音識別系統(tǒng)來 實現(xiàn)輸入設(shè)備645,但并不局限于此。一個或多個輸出設(shè)備650連接到接口電路655。例如,使用發(fā)光顯示器(LED)、液 晶顯示器(LCD)、陰極射線管(CRT)顯示器、打印機(jī)和/或揚(yáng)聲器來實現(xiàn)輸出設(shè)備650,但并 不局限于此。接口電路655包括圖形驅(qū)動卡。系統(tǒng)600還包括用于存儲軟件和數(shù)據(jù)的一個或多個大容量存儲設(shè)備660。這種大 容量存儲設(shè)備660的例子包括但不限于軟盤和驅(qū)動器、硬盤驅(qū)動器、快閃盤驅(qū)動器、固態(tài)硬 盤驅(qū)動器、壓縮盤和驅(qū)動器以及數(shù)字多用途盤(DVD)和驅(qū)動器。接口電路655包括通信設(shè)備,例如調(diào)制解調(diào)器或網(wǎng)絡(luò)接口卡,以便經(jīng)由網(wǎng)絡(luò)與外 部計算機(jī)交換數(shù)據(jù)。系統(tǒng)600與網(wǎng)絡(luò)之間的通信鏈路可以是任何類型的網(wǎng)絡(luò)連接,例如以 太網(wǎng)連接、數(shù)字用戶線(DSL)、電話線、蜂窩電話系統(tǒng)、同軸電纜等。通常由I/O控制器640以傳統(tǒng)的方式來控制對輸入設(shè)備645、輸出設(shè)備650、大容 量存儲設(shè)備660和/或網(wǎng)絡(luò)的訪問。特別地,I/O控制器640執(zhí)行允許處理器625經(jīng)由總 線665和接口電路655來與輸入設(shè)備645、輸出設(shè)備650、大容量存儲設(shè)備660和/或網(wǎng)絡(luò) 進(jìn)行通信的功能。雖然圖6中示出的部件被描繪為系統(tǒng)600內(nèi)的分離的模塊,但是這些模塊中的一 些所執(zhí)行的功能可以集成在單個半導(dǎo)體電路內(nèi),或者可以使用兩個或多個分離的集成電路 來實現(xiàn)。例如,盡管存儲器控制器630和I/O控制器640被描述為芯片組635內(nèi)的分離的 模塊,但是相關(guān)領(lǐng)域中的普通技術(shù)人員將容易理解,存儲器控制器630和I/O控制器640可 以集成在單個半導(dǎo)體電路內(nèi)。盡管描述了公開主題的實施例的示例,但是相關(guān)領(lǐng)域中的普通技術(shù)人員將容易理 解,可以替代地使用用于實現(xiàn)所公開的主題的多種其它方法。例如,流程圖中的塊的執(zhí)行的 順序可以改變,和/或框/流程圖中描述的一些塊可以改變、刪除或組合。在上述描述中,描述了公開主題的各個方面。為了解釋說明的目的,闡述了具體的 數(shù)量、系統(tǒng)和配置,以便于對主題的透徹的理解。然而,對于受益于本公開的相關(guān)領(lǐng)域的技 術(shù)人員來說,可以在沒有具體的細(xì)節(jié)的情況下實施本主題是顯而易見的。在其它例子中,省 略、簡化、組合或分離了已知的特征、部件或模塊,以便不使所公開的主題模糊??梢杂糜布⒐碳?、軟件或其組合來實現(xiàn)所公開主題的各種實施例,并且可以通過 參考或結(jié)合程序代碼來描述其,所述程序代碼例如指令、函數(shù)、過程、數(shù)據(jù)結(jié)構(gòu)、邏輯、應(yīng)用 程序、用于設(shè)計的仿真、模擬和制造的設(shè)計表示或格式,當(dāng)由機(jī)器訪問它們時,導(dǎo)致機(jī)器執(zhí) 行任務(wù)、定義抽象數(shù)據(jù)類型或低級硬件環(huán)境或產(chǎn)生結(jié)果。雖然參考示例性實施例描述了所公開的主題,但是該描述并非旨在以限制性的含義來解釋。 對于公開主題所屬領(lǐng)域中的技術(shù)人員來說顯而易見的示例性的實施例的各種變 型以及本主題的其它實施例被認(rèn)為在公開的主題的范圍內(nèi)。
權(quán)利要求
一種重啟平臺的方法,包括捕獲所述平臺的軟件發(fā)起重置請求(SIRR);響應(yīng)于所述捕獲,將與所述平臺耦合的輸入/輸出(IO)設(shè)備恢復(fù)至先前的硬件狀態(tài);以及響應(yīng)于所述恢復(fù),運行操作系統(tǒng)(OS)以重啟所述平臺。
2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括當(dāng)所述SIRR被捕獲時,將所述SIRR轉(zhuǎn)換為僅中央處理單元(CPU)初始化重置請求;以及響應(yīng)于所述轉(zhuǎn)換,初始化所述CPU。
3.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括初始化所述平臺。
4.根據(jù)權(quán)利要求3所述的方法,其中,初始化所述平臺包括保存所述IO設(shè)備的所述先 前的硬件狀態(tài)的至少一個寄存器設(shè)置。
5.根據(jù)權(quán)利要求3所述的方法,其中,初始化所述平臺包括保存先前的OS加載程序映像的副本,其中,所述平臺的基本IO系統(tǒng)(BIOS)支持可擴(kuò) 展固件接口(EFI);以及使用所述先前的OS加載程序映像的所述副本來恢復(fù)所述平臺的OS加載程序。
6.根據(jù)權(quán)利要求3所述的方法,其中,初始化所述平臺包括 確定所述平臺的OS加載程序正試圖轉(zhuǎn)變?yōu)檫\行時間;以及在所述平臺的所述重啟期間,維護(hù)引導(dǎo)服務(wù)存儲器以便于所述平臺保持其固件基礎(chǔ)結(jié) 構(gòu),其中,所述平臺的基本IO系統(tǒng)(BIOS)支持可擴(kuò)展固件接口(EFI)。
7.根據(jù)權(quán)利要求3所述的方法,其中,初始化所述平臺包括將與所述平臺的遺留基本 IO系統(tǒng)(BIOS)存儲器區(qū)域相關(guān)聯(lián)的數(shù)據(jù)復(fù)制到緩沖器中,其中,在存儲器映射中,所述緩 沖器被指示為對于所述OS或?qū)τ贠S加載程序不可用。
8.根據(jù)權(quán)利要求4所述的方法,其中,恢復(fù)所述輸入/輸出(IO)設(shè)備包括使用所述 IO設(shè)備的所述先前的硬件狀態(tài)的所述保存的寄存器設(shè)置來對所述IO設(shè)備的所述至少一個 寄存器中的每一個進(jìn)行重新編程。
9.一種平臺,包括與所述平臺耦合的輸入/輸出(IO)設(shè)備;與所述平臺耦合的操作系統(tǒng)(OS);以及與所述10設(shè)備耦合的基本輸入/輸出系統(tǒng)(BIOS)模塊,用于捕獲所述OS的軟件發(fā)起重置請求(SIRR);響應(yīng)于所述捕獲,將所述10設(shè)備恢復(fù)到先前的硬件狀態(tài);以及響應(yīng)于所述恢復(fù),運行所述OS以重啟所述平臺。
10.根據(jù)權(quán)利要求9所述的平臺,進(jìn)一步包括與所述平臺耦合的中央處理單元(CPU), 并且其中,所述BIOS模塊進(jìn)一步用于當(dāng)捕獲所述SIRR時,將所述SIRR轉(zhuǎn)換為僅CPU初始化重置請求;以及 響應(yīng)于所述轉(zhuǎn)換,初始化所述CPU。
11.根據(jù)權(quán)利要求9所述的平臺,其中,所述BIOS模塊進(jìn)一步用于初始化所述平臺。
12.根據(jù)權(quán)利要求11所述的平臺,其中,用于初始化所述平臺的所述BIOS模塊用于保存所述IO設(shè)備的所述先前的硬件狀態(tài)的至少一個寄存器設(shè)置。
13.根據(jù)權(quán)利要求11所述的平臺,其中,用于初始化所述平臺的所述BIOS模塊用于 保存先前的OS加載程序映像的副本,其中,所述BIOS模塊支持可擴(kuò)展固件接口(EFI);以及使用所述先前的OS加載程序映像的副本來恢復(fù)所述平臺的OS加載程序。
14.根據(jù)權(quán)利要求11所述的平臺,其中,用于初始化所述平臺的所述BIOS模塊用于 確定所述平臺的OS加載程序正試圖轉(zhuǎn)變到運行時間;以及在所述平臺的所述重啟期間,維護(hù)引導(dǎo)服務(wù)存儲器以便于所述平臺保持其固件基礎(chǔ)結(jié) 構(gòu),其中,所述BIOS模塊支持可擴(kuò)展固件接口(EFI)。
15.根據(jù)權(quán)利要求11所述的平臺,其中,用于初始化所述平臺的所述BIOS模塊用于將 與所述平臺的遺留BIOS存儲器區(qū)域相關(guān)聯(lián)的數(shù)據(jù)復(fù)制到緩沖器,其中,在存儲器映射中, 所述緩沖器被指示為對于所述OS或?qū)τ贠S加載程序不可用。
16.根據(jù)權(quán)利要求11所述的平臺,其中,用于恢復(fù)所述10設(shè)備的所述BIOS模塊用于使 用所述10設(shè)備的所述先前的硬件狀態(tài)的保存的寄存器設(shè)置來對所述10設(shè)備的所述至少一 個寄存器中的每一個進(jìn)行重新編程。
17.根據(jù)權(quán)利要求15所述的平臺,其中,所述BIOS模塊進(jìn)一步用于 使用所述復(fù)制的數(shù)據(jù)來恢復(fù)所述平臺的所述遺留BIOS存儲器區(qū)域;以及 啟動引導(dǎo)加載程序以運行所述OS,以重啟所述平臺。
全文摘要
用于通過在平臺重啟期間,最小化在平臺中的IO設(shè)備的硬件初始化來執(zhí)行平臺的快速重置或重啟的方法和系統(tǒng)。平臺的基本輸入/輸出系統(tǒng)(BIOS)捕獲任何軟件發(fā)起重置請求(SIRR)或熱重置。當(dāng)SIRR被捕獲時,BIOS將耦合到平臺的輸入/輸出(IO)設(shè)備恢復(fù)到它們先前的硬件狀態(tài)以避免完全的平臺初始化。由于完全的平臺初始化被最小化,所以可以以快速的方式來執(zhí)行平臺的重啟。
文檔編號G06F11/00GK101814035SQ20091100011
公開日2010年8月25日 申請日期2009年11月19日 優(yōu)先權(quán)日2008年11月19日
發(fā)明者B·庫珀, F·A·西迪基, M·A·羅思曼, V·J·齊默 申請人:英特爾公司