TWI617914B - 用以從睡眠狀態加速回復之專用啟動路徑 - Google Patents
用以從睡眠狀態加速回復之專用啟動路徑 Download PDFInfo
- Publication number
- TWI617914B TWI617914B TW103114848A TW103114848A TWI617914B TW I617914 B TWI617914 B TW I617914B TW 103114848 A TW103114848 A TW 103114848A TW 103114848 A TW103114848 A TW 103114848A TW I617914 B TWI617914 B TW I617914B
- Authority
- TW
- Taiwan
- Prior art keywords
- firmware
- ram
- computing device
- replacement
- firmware volume
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本發明討論一種用以從睡眠狀態加速回復之專用啟動路徑。在一兼容UEFI系統,一特別建構的替代韌體卷被建立,其僅包含用於從一S3睡眠狀態回復期間的編碼模組。該替代的韌體卷在一正常啟動期間複製到隨機存取記憶體(RAM)中。當該系統隨即進入該S3睡眠狀態且開始該回復啟動進程,在該啟動序列之編碼偵測到其為從該S3睡眠狀態之一回復,重新起動一RAM配置及跳去執行一在RAM之該替代的韌體卷中之前EFI初始化(PEI)核心進入點,而非跳至在ROM中的一韌體卷。該替代的韌體卷執行指定的S3回復任務,然後返回控制該作業系統。
Description
本申請案主張美國臨時專利申請案號61/816105,標題為“Specialized Boot Path for Speeding Up Resume from Sleep State”,申請日為2013年4月25日的專利申請案之權益及優先權,其全文內容中的專利參考文獻全體皆引用作為本說明書的揭示內容。
本發明係關於用以從睡眠狀態加速回復之專用啟動路徑。
多數計算裝置係由包括在該裝置內之韌體所初始化,且該韌體提供一系列的軟體服務,這些軟體服務幫助作業系統(OS)的開機,也提供這些服務的較小子集,其在作業系統開機後可繼續被利用。韌體是一種已經被寫在唯讀記憶體(ROM)模組上之軟體,此模組包括但不限於唯讀記憶體(ROM)、可程式唯讀記憶體(PROM)、可抹除可程式唯讀記憶體(EPROM)、電氣
可抹除可程式唯讀記憶體(EEPROM)或快閃記憶體(以上全體在本文之後均以“ROM”表示)。在其他服務中,直到將該計算裝置之作業系統載入記憶體之開機進程可運行前,由此種韌體負責該計算裝置之操作。儘管某些服務的提供,在載入該作業系統後會基於安全性及其他因素,回頭向該韌體要求來自該作業系統的控制移轉,但一旦作業系統經載入,就由該作業系統接管該計算裝置的正常操作。
統一可延伸韌體介面(UEFI)是一個由非營利工業主體所創建的規範,詳述在操作系統和計算裝置之韌體間的一編程介面,此類韌體包括下列但不限於:個人電腦(PC)。UEFI規範描述一組工具,藉此,計算裝置可以一種有組織的方式從提供電力狀態推移到全操作式。此規範顯示了欲求結果但卻無法謹慎地說明內部的實施策略。此UEFI韌體規範取代了先前工業上所使用的早期OS/韌體介面,現在則被稱作遺留BIOS。
當在一計算裝置中實施時,用於UEFI韌體的機器碼及該韌體所使用的全部永久資料,都位在ROM中。在很多情況下,該ROM是一被稱為快閃記憶體(flash ROM)的可電氣抹除矽裝置。快閃記憶體具有特徵在於,可經由電氣指令被抹除繼而個別元件可被寫入,且該裝置將無限期地保留該資料。當電力先供應給該計算裝置時,該系統會執行一個叫做重置的處理,其清除一已知情況之狀態並開始該韌體的執行。該韌體係從該計算裝
置中之快閃記憶體或其他ROM讀取。
本發明之實施例提供一用以提高一計算裝置從一睡眠狀態回復之速度的一專用啟動路徑。在一兼容UEFI的計算裝置中,一特別建構的替代的韌體卷被建立,其僅包含從一先進組態與電力介面(ACPI)S3睡眠狀態回復期間所需的編碼模組。在一正常啟動序列期間,此替代的韌體卷被複製到隨機存取記憶體(RAM)中。當該系統依序進入該S3睡眠狀態時,一旦喚醒事件被偵測到,該系統即藉由開始一第二啟動進程回復執行。在該啟動進程的安全(SEC)相位中之韌體卷則偵測到系統執行當前正在從一S3睡眠狀態回復。基於該偵測,一先前儲存的RAM配置被重新起動,以及先前記錄的該替代的韌體卷之一位址被檢索。韌體卷繼而將該回復啟動序列之執行轉向至在該替代的韌體卷之一前EFI初始化(PEI)核心進入點,而非至在快閃記憶體中之常用的韌體卷。該替代的韌體卷可執行一精簡的及/或最佳化的回復任務組,然後將該計算裝置的控制交回給該作業系統。本發明之具有一組在RAM中之精簡的及/或最佳化的韌體模組之該替代的韌體卷之使用,比起習知技術的從一快閃ROM部分執行一全組的非最佳化的韌體模組,可加快從一S3睡眠狀態回復執行所需的時間。
在一實施例中,一種包括對該計算裝置執行
一第一啟動序列的一計算裝置可實施之方法。該方法複製一替代的韌體卷,其包含在一S3睡眠狀態回復序列進入隨機存取記憶體(RAM)期間所需的韌體模組。該方法亦對該計算裝置將RAM配置資訊存入非依電性記憶體中。在該第一啟動序列完成之後,該計算裝置進入一S3睡眠狀態。該計算裝置之執行在進入該S3睡眠狀態後,經由開始一第二啟動序列響應一喚醒事件之偵測回復。韌體碼偵測該第二啟動序列係一從該S3睡眠狀態之回復,並且重新起動該RAM配置。該方法亦檢索一該替代的韌體卷之先前記錄的位址,其在該計算裝置完成該S3睡眠狀態之進入動作之前被記錄。在該計算裝置回復一由作業系統所控制的操作模式之前,使用經檢索的該位址,將該第二啟動序列之執行轉移為在RAM中之該替代的韌體卷中之一前EFI初始化(PEI)核心進入點。
在另一實施例中,一計算裝置包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、中央處理單元(CPU)及儲存在ROM中之韌體碼。該韌體碼對該計算裝置執行一第一啟動序列,將一包含有S3睡眠狀態回復序列期間所需的韌體模組之替代的韌體卷複製到RAM中,以及將一用於該計算裝置之RAM配置儲存至一非依電性記憶體中,該計算裝置包括在經複製的替代的韌體卷之RAM中的一位址。在該計算裝置隨著該第一啟動序列完成接著進入一S3睡眠狀態,然後根據一喚醒事件開始一第二啟動序列之後,韌體碼在該CPU的重置向量上開
始執行,偵測該第二啟動序列係從該S3睡眠狀態之一回復,並且重新起動該RAM配置。該替代的韌體卷之一預記錄的位址亦被檢索,該位址記錄在該計算裝置完成進入該S3睡眠狀態之前。在該計算裝置回復一由作業系統所控制的操作模式之前,使用經檢索的位址,亦使該韌體碼將該第二啟動序列之執行轉移至在RAM中之該替代的韌體卷的一預EFI初始化(PEI)核心進入點。
102-112、202-216、302-314、402-410‧‧‧步驟
500‧‧‧計算裝置
502‧‧‧中央處理單元
504‧‧‧隨機存取記憶體
510‧‧‧硬碟驅動器
512‧‧‧作業系統(OS)
520‧‧‧唯讀記憶體(ROM)
530‧‧‧韌體
531‧‧‧替代的韌體卷
580‧‧‧顯示器
582‧‧‧用戶介面(UI)
560‧‧‧用戶
570‧‧‧輸入裝置
包含於本說明書中並構成本說明書的一部分的附圖顯示了一或多個本發明之實施例,配合說明書內文,能增進對本發明的理解。在附圖中:第1圖描繪與該UEFI平台初始化說明一致的一啟動流程示例;第2圖描繪由本發明一實施例所執行之步驟序列的一個示例,其使用一儲存在RAM中之替代的韌體卷,從一S3睡眠狀態回復執行;第3圖描繪由本發明一實施例所執行之步驟序列的一個示例,其識別、核對及執行一替代的韌體卷;第4圖描繪由本發明一實施例所執行之步驟序列的一個示例,其核對儲存在RAM中之該替代的韌體卷係未更改的;第5圖描繪適於實行本發明之一實施例的一個示例環境。
該先進組態與電力介面(ACPI)規範定義在該計算裝置中之作業系統所實施的一標準化的裝置配置及電源管理。作為其電源管理標準的一部份,該ACPI規範定義六種基本系統電力狀態或範圍在S0(開)至S5(關)之“睡眠狀態”。該睡眠狀態描述電力節約逐漸增強程度及所需時間漸漸增長,使得該系統對一使用者來說為可用的。例如,當在一S5電力狀態的系統比在一S3電力狀態的系統需要更多時間去回應一使用者輸入指令,在一S3電力狀態的計算裝置比在一S1電力狀態的計算裝置節約更多的電力。在一兼容ACPI的計算裝置中,一作業系統,藉由將一特定的“睡眠值”寫入至一睡眠登記中,控制該計算裝置在睡眠狀態間之轉換。
由該ACPI規範所定義之六種睡眠狀態如下:
S0:開(未睡眠)
S1:該S1睡眠狀態係一低喚醒延遲之睡眠狀態。在該狀態中,沒有系統上下文遺失(CPU或晶片組)且硬體維持所有系統的上下文。
S2:該S2睡眠狀態係一低喚醒延遲之睡眠狀態。該狀態除了該CPU和系統快取上下文遺失(該OS負責維持該等快閃和CPU上下文)外,與該S1睡眠狀態相同。在該喚醒事件後,控制來自該處理器的重置向量之開始動作。
S3:該S3睡眠狀態係一低喚醒延遲之睡眠狀態,其中除了系統記憶體外之所有系統上下文都遺失。在此狀態中,CPU、快閃器及晶片組上下文都遺失。硬體則維持記憶體上下文且重新起動一些CPU和L3快閃器配置上下文。在該喚醒事件後,控制來自該處理器的重置向量之開始動作。
S4:該S4睡眠狀態係最低電力、最長喚醒延遲之由ACPI支持的睡眠狀態。為了使電力減少到一最低情況,假定該硬體平台都關閉所有裝置的電源。平台上下文係保留的。
S5:軟關閉狀態。該S5狀態除了該OS未儲存任何上下文外,與該S4狀態相同。該系統係在該“軟”關閉狀態且當其喚醒時需要一完全啟動。軟體使用一不同的狀態值在該S5狀態和該S4狀態進行分辨,以允許在該BIOS內的初始化啟動作業去分辨該啟動是否從一已儲存的記憶體影像喚醒。
在一兼容ACPI的計算裝置中,一“睡眠控制登記”係定義在一固定ACPI描述表(FADT)中的一I/O登記。FADT係以ACPI定義之表,其描述若干個固定硬體資源,其中包括一睡眠控制登記。該ACPI描述定義兩種不同類型的睡眠控制登記:PM1控制(第4.8.1段落)及睡眠控制(第4.8.3.7段落)。前者係使用當該系統未被以降低硬體(參見HW_REDUCED_ACPI,表5-35)分類,而後者則係使用當該系統以降低硬體分類。依慣例,
為了觸發一睡眠狀態轉換,該作業系統會確認定義在FADT中的睡眠控制登記之位址,並將一與所希望的睡眠狀態相關之睡眠類型值寫入該位址。
該UEFI平台初始化說明定義一典型的啟動流處理,其致力於由平台初始化(PI)韌體啟動一兼容UEFI的計算裝置。在PI韌體中之典型的啟動碼流如以下順序通過一連續階段:1.安全(SEC)階段;2.前EFI初始化(PEI)階段;3.驅動器執行環境(DXE)階段;4.啟動裝置選擇(BDS)階段;5.運行階段;6.後期(AL)階段;第1圖描繪與該UEFI平台初始化說明一致的一啟動流程示例。該啟動流程示例隨著SEC階段韌體開始執行,在該CPU重置向量開始執行(步驟102)。該CPU重置向量係該CPU將在一CPU重置後檢索用以執行之第一指令的默認位置。該SEC階段從CPU重置之時間延伸,直到暫時的RAM為可用的。在其他負載之間,該SEC階段處理平台重置事件,建立一暫時的記憶體存儲,例如,藉由使用處理器快取作為平坦記憶體,且將指針傳遞給該暫時的記憶體、暫時的疊片組及該PEI階段的一啟動韌體卷(BFV)。該PEI階段(步驟104)初始化用於該DXE階段之記憶,以開始使用被叫做PEI模組
(PEIM)的驅動器,其包含在由該SEC階段所提供之BFV中。在該PEI階段所執行的最後模組,被稱作驅動器執行環境初始化程式載入器(DXE IPL)或(DXE初始化程式載入)變換操作至該DXE階段。該DXE階段(步驟106)初始化諸如晶片組和附加卡的系統組件。該BDS選擇階段(步驟108)選擇一啟動裝置,從中去加載一作業系統。該運行階段(步驟110)係有關當該作業系統載入記憶體且接管控制該計算裝置,一啟動序列完成後之時間。該AL階段(步驟112)發生在該作業系統關閉後,該計算裝置之韌體從該作業系統接回控制之時,例如,該計算裝置變換至像是一睡眠狀態的一低電力狀態(步驟111)之結果,及一CPU重置發生之前。
一用於一S3回復啟動序列之傳統方法,已對一正常啟動及一S3回復啟動使用相同的韌體卷。此兩種啟動的例子中,在該CPU重置向量開始執行的動作,透過該安全(SEC)階段進行,進入該前EFI初始化(PEI)核心,處理所有該PEI模組並跳至一由該EXEIPL模組提供的離開點。在一正常啟動情況下,該DXEIPL模組繼續至該DXE階段,但若一S3回復動作已被偵測到,該模組則轉向一另一通道以重新起動系統配置、處理一另一組韌體模組及跳至該ACPI行進向量。
前述試圖提高此種傳統的S3回復處理之速度,透過兩種類型的最佳化方式獲得解決。第一種類型的最佳化利用以下實據:在進入該S3回復啟動路徑之前,
該系統必須使用該“正常”(非睡眠狀態回復)之啟動路徑開始進行啟動。在該正常啟動路徑期間,該PEI模組常具有以下兩個任務:1)尋找已載入之裝置及其較佳的配置;然後2)以該較佳的配置程式化該裝置。一些傳統的方法已試圖想要藉由在正常的啟動期間快取該較佳的配置來最佳化該S3回復路徑。其中,允許該S3回復啟動路徑跳過該“尋找”步驟,在該“程式化”步驟使用所快取的資料,繼而節省保貴的時間。
第二種類型的最佳化依據該PEI調度的能力進行以下步驟:a)延遲PEI模組之執行;及b)在超過一個韌體卷中找到PEI模組。首先,該PEI模組可被建立使得其不被計畫用以執行,除非其達到依賴表現。該依賴表現包含PPI(介面)列表,其必須在該PEI模組將被計畫用於執行之前發布。例如,在該S3回復啟動路徑期間,一PPI被發布以標記該啟動模式。該S3回復路徑特有的驅動器(或另一啟動路徑,像是危機恢復)可將該PPI編列入其依賴表現中。第二,一PEI模組或該SEC可僅在一特定的啟動模式下,揭露一第二、補充的韌體卷。所以,舉例來說,該主要的韌體卷可僅包含S3回復所需的該PEI模組,但揭露一包含用於正常啟動所需之額外模組之次卷。
本發明的實施例藉由將一替代的韌體卷載入至僅在該S3回復路徑使用之RAM以提升回復時間之速度,對上述所討論之兩種技術提供益處。經由使用一替代
的韌體卷,一最小值或數量減少之PEI模組可被執行於該S3回復路徑上。由於降低了與處理較少的模組及其相關的依賴表現有關之耗費,執行速度增加了。藉由使用RAM,盡可能的用去較少執行ROM的時間,執行速度明顯地提高了,這是由於來自一快閃裝置或其他類型的ROM之編碼執行,比來自RAM之編碼執行明顯地慢。此外,藉由使用一用於該S3回復路徑之專用的編碼組,一些模組(例如該PEI核心及DXE IPL)的其他版本,可被建立用於該S3回復情況之最佳化。
第2圖描繪由本發明一實施例所執行之步驟序列的一個示例,其使用一儲存在RAM中之替代的韌體卷,從一S3睡眠狀態回復執行。該整體序列由一第一啟動序列開始(步驟202)。在該第一啟動序列期間,一替換的卷被加載到RAM中(步驟204)。此替代的韌體卷可被定制來僅包含一S3回復進程所需的韌體卷。另外,該替代的韌體卷可包含使用在一S3回復啟動序列之一些模組的替代版本。在另一個實施例中,該替換的韌體卷將與儲存在ROM中之一韌體卷相同。在這種情況下,使用該替代的韌體卷之好處將只有從RAM對ROM之執行韌體碼的執行速度更快的時間產生。當該第一啟動序列完成之時,用於該計算裝置之該作業系統已經被加載至該記憶體中,並控制計算裝置之執行(步驟206)。
隨後,在該作業系統之控制下的一正常作業模式期間,一事件發生對一S3睡眠狀態觸發一轉換,並
藉由將該RAM配置儲存至非依電性記憶體對其進行保存(步驟208)。對一S3狀態的轉換可為一用戶指令的結果,或可為在該操作環境中之一事件被自動觸發的結果。該經保存的RAM配置係記錄有關一RAM裝置的配置及該記憶體控制器的配置之資料,以當從該S3電力狀態回復時可重新起動該RAM裝置進入一完全工作狀況。為了讓S3進入工作,有關RAM裝置的數量和類型之資訊,以及其他類似的資訊(“RAM配置”)都由該韌體保存。此資訊保存之目的是由於,該CPU和記憶體控制器在一睡眠狀態期間進入一低功耗狀態,其中在該睡眠狀態期間一些或所有的此類資訊都將丟失。在某些情況下,重新發現該RAM配置資訊的動作,造成被放置在一低功耗狀態之RAM裝置中的數據丟失,或從該S3狀態回復之時可能會拉長所期望的時間。該韌體儲存一些或全部的此種資訊,可幫助該RAM裝置可靠和迅速的恢復進入一完全工作狀態。該所儲存的資訊在初始化啟動期間可完成。另外的資訊可儲存在AL階段(在SLP_EN寫入將該系統轉換到一睡眠狀態之後)中之系統管理模式(SMM)裡。關於SMM的內容如下進一步討論。在一實施例中,執行在該SEC階段之編碼使用此資訊來重新起動該RAM裝置進入一完全工作狀態。在另一實施例中,則是執行在該PEI階段之編碼使用此資訊來重新起動RAM裝置進入一完全工作狀態。
除了該RAM配置之外,本發明的實施例還記
錄該韌體卷在完成該計算系統進入該S3睡眠狀態之轉換前的一位址。在該替代的韌體卷之位址還未固定的情況下(在該韌體建構期間),在RAM中之該替代的韌體卷所複製之該位址被儲存,使得該SEC(或其他韌體)編碼知道該替代的韌體卷之位置。該位址可被記錄在RAM中(在此情況下,其在RAM重新起動之後檢索)或該位址可被記錄在快閃記憶體中。無論該位址被除儲存在哪裡,其都在該系統完全地進入該S3睡眠狀態之前被記錄。
轉換到該S3睡眠狀態之後,在CPU重置位置對該計算裝置再次執行下述喚醒事件(步驟210)。喚醒事件是導致一計算系統從睡眠狀態到執行狀態之變換的系統事件,且被定義在ACPI規範中。例如,從鍵盤、滑鼠、USB裝置所接收到的輸入資料,或從一局域網(LAN)或其他在S3睡眠狀態期間所定義之類型所接收之一訊息,可為一致使在該CPU重置位置開始執行之一喚醒事件。在該喚醒事件之後,SEC編碼識別經回復的執行作為從一S3睡眠狀態之一回復啟動的一部分,並重新起動先前儲存的RAM配置(步驟212)。先前的睡眠狀態可以許多的方式被檢測,包括通過檢查硬體內之登記。此外,在該回復啟動序列期間,該韌體編碼檢索該替代的韌體卷之固定或經記錄的位址。本發明的該SEC韌體碼,使用經儲存的記憶體位址跳至執行在RAM中的該替代的韌體卷之該PEI核心進入點(步驟214)。任何在該替代的韌體卷中規定的S3任務被實施,然後進行跳至該
ACPI喚向量以回到該計算裝置之作業系統控制之執行(步驟216)。
如上面所討論的,轉換到一S3睡眠狀態會導致該計算裝置的一重置以及從該CPU重置向量開始執行。第3圖描繪由本發明之一實施例所執行之步驟序列的一個示例,其識別、核對及執行一替代的韌體卷來開始該CPU重置。正如上面所討論的,轉換到一S3睡眠狀態致使該CPU在該CPU重置向量上開始執行。此標記了如UEFI平台初始化規範中所述的開始動作。在這個階段,該SEC編碼為該PEI階段設置該CPU的執行環境。這包括編制臨時的RAM和定位該啟動韌體卷(BFV)。其還執行任何重要的初始化動作,例如為使有穩體的CPU操作加載微指令更新(步驟302)。在本發明的一實施例中,經修改的SEC編碼偵測所回復的執行是否來自一S3睡眠狀態,如果是則對該計算裝置重新起動一RAM配置,以達到其在功能上等同於在進入S3睡眠之前之配置(步驟304)。本發明的韌體碼還偵測在RAM中之替代的韌體卷之位置(該替代的韌體卷在如上述的一先前的正常啟動其間中被複製並儲存)(步驟306)。在RAM中之替代的韌體卷之位置可為固定的(例如,總是在相同的位置使得該韌體碼可預先被知道)或一記錄或相關於該替代的韌體卷之位置可被儲存在RAM或非依電性存儲器中,如一EFI變量被該韌體檢索後複製進RAM中。如以下將進一步討論相關的第4圖,本發明的該SEC韌體碼
也確認以確保被複製儲存在RAM之後的替代的韌體卷還沒有被修改(步驟308)。一旦該替代的韌體卷已證實為未修改,該韌體編碼識別並跳至執行在該替代的韌體卷之該PEI核心中之一進入點(步驟310)。在進入該PEI核心之後,所有在該替代的韌體卷中之該PEI模組將被找到、識別和發送,並接著執行跳至在該替代的韌體卷中之DXE IPL模組的進入點(步驟312)。由於僅在一S3回復期間使用該DXE IPL模組(相對於一傳統的S3回復之一啟動序列,其中該DXE IPL先負責確認在開始該S3任務之前的回復狀態),該替代的韌體卷之該DXE IPL模組可立即開始執行S3任務,而無需先檢測該計算裝置之回復狀態。一旦該S3回復任務完成,執行跳至該ACPI喚醒向量,且控制權回到該作業系統。
如上述所討論,該儲存在RAM中之經複製的替代的韌體卷,由於其在存儲期間或之後可能被修改,故需在執行前由該韌體核對儲存至RAM中。第4圖描繪由本發明一實施例所執行之步驟序列的一個示例,其核對儲存在RAM中之該替代的韌體卷係未更改的。在該替代的韌體卷核對過程開始於一正常期間之該S3睡眠狀態之前(非S3,非緊急回復啟動)。在一S3睡眠狀態之依序轉換之前該正常啟動序列發生期間,本發明之一DXE模組找到在ROM中的一S3回復替代的韌體卷,分配一相同尺寸之RAM緩存並複製該S3回復韌體卷至該RAM緩存區。在一實施例中,經複製的韌體卷之一雜湊包括在該替
代的韌體卷的數據結構中,或在快閃ROM中之一些其他預定義的位置中。該雜湊可在當該替代的韌體卷從該組成韌體模組建立之時在構建中計算。另外則是,沒有雜湊在構件時被計算,而是在之後才計算及儲存在一無法被OS軟體竄改之位置中。該DXE模組保存該替代的韌體卷之位址,使得其可在隨後的S3睡眠/回復序列期間由本發明的韌體檢索(步驟404)。但應當理解的是,如果該實施利用一固定位置複製該替代的韌體卷到RAM中,該位置資訊之保存係不必要的。在一接續的S3回復啟動序列期間,該替代的韌體卷被識別(步驟406)且在RAM中的該替代的韌體卷之雜湊與儲存在ROM中之原來的替代的韌體卷之雜湊進行比較(步驟408)。如上所述,儲存在ROM中的該替代的韌體卷之雜湊可在比較時產生,或可能當進入該S3睡眠狀態或在該構建過程中,已預先計算並儲存在第一次啟動之時。同樣地,存儲在RAM中的該替代的韌體卷之雜湊也可在該比較之時產生,而不是在已預先計算並儲存作為該替代的韌體卷之一部分財產生。若該雜湊匹配(步驟409),在RAM中的該替代的韌體卷還沒有被修改,且執行跳至在RAM中之該替代的韌體卷之該PEI核心的進入點(步驟410)。若該雜湊不匹配(步驟409),在RAM中的該替代的韌體卷已被修改,並且不再被信任。在這種情況下,執行可透過使用儲存在ROM中的原始的替代的韌體卷(儘管以一較慢的執行速度)(步驟412)。或者,在一錯誤的情況下,實施動作
可藉由產生一錯誤訊息或採取其他一些先前特定的動作來停止S3回復啟動序列。
在另一實施例中,一相同的韌體卷可同時用於正常的及與使用該韌體卷之一RAM複製之S3回復不同之S3回復執行路徑。此舉給出了RAM的速度優勢和較小的ROM軌跡。然而,該實施例不允許離開不在該S3回復啟動路徑使用中之PEI模組,或創建任何模組之一特殊版本,如DXE IPL。
在另一實施例中,該替代的韌體卷之複製到如前述之RAM中可發生在系統管理模式(SMM)中,從而使該複製過程中在該S3睡眠進程中被建立,而非在一較早的正常啟動序列期間。許多CPU具有一正常的操作模式和一被稱作系統管理模式(SMM)的第二操作模式。當該CPU處於正常操作模式下,其可存取該電腦之所有元件,除了SMM模式專用之某些記憶體區域。與此相反,當該CPU在SMM模式中操作,其可存取該計算裝置的所有元件,包括專用記憶體。該CPU可透過多個包括由韌體觸發之SMI事件的被稱作系統管理中斷(SMI)事件的觸發器,引導從正常操作模式轉換至SMM。SMI事件觸發在主記憶體中掛起執行,並在SMM記憶體中的一特定位置回復執行。許多芯片組提供了一個選項,使得當該SLP_EN位元被設置,並非立即轉換進入一S3睡眠狀態,而是該系統在執行一CPU重置之前產生一個系統管理中斷(SMI)和該系統進入SMM的第一轉換。
在此替代的實施例中,一SMI觸發轉換到SMM之後,該替代的韌體卷之複製可從快閃中之複製進入記憶中之RAM緩存區。這提供了一個好處,即由於假設當該系統在該S3狀態時,該RAM未被竄改,則先前描述的驗證步驟可為了提高性能被跳過。而這種方法的缺點是,某些類型的S3自我更新錯誤將無法自動糾正(例如:若在低功耗狀態引入一錯誤時)以及一些惡意攻擊的形式要求存取RAM中的物理訪問可能被執行。在該替代的韌體卷之複製到RAM緩存區之後,執行即可回復到如前述在該CPU重置向量之時。
第5圖描繪適於實行本發明之一實施例的一個示例環境。一計算裝置500之示例配備有CPU 502、隨機存取記憶體(RAM)504和非依電性記憶體,例如一硬碟驅動器510或其它非依電性存儲位置。該硬碟驅動器510可存儲一作業系統(OS)512,其在一啟動進程中加載到記憶體504中。該計算裝置504可為一平板計算裝置、行動電話、智慧型手機、PDA、筆記型電腦、輕省筆電、桌上型電腦、行動計算裝置或裝備有處理器的其它計算裝置。該計算裝置包括ROM 520。韌體530位在ROM中,其可負責在一啟動序列期間將OS 512裝載到RAM 504中。韌體530還可以包括一替代的韌體卷531。該替代的韌體卷531可被複製到如上述之RAM504中,以提供一更快的S3回復啟動序列。計算裝置500還可以包括由一用戶560存取之一輸入裝置570。該用戶560可查看與
計算裝置500通訊的一顯示表面或裝置580。顯示表面或裝置580可顯示一用戶界面582。
應當理解的是,雖然本文的描述指的是一替代的韌體卷(單數)被加載到RAM中,一個以上的替代的韌體卷被加載到RAM中也並不脫離本發明的精神和範圍。
本發明之部分或所有的實施例可被提供為嵌入於或在一或多個非暫時性媒體中之一或多個電腦可讀程式或編碼。該媒體可以是但不限於:硬碟、光碟、數字通用光碟、ROM、PROM、EPROM、EEPROM、快閃記憶體、RAM或磁帶。在一般情況下,該電腦可讀程式或編碼可以任何計算機語言來實現。
因為某些變化可在不脫離本發明的範圍下產生,這意味著包含於上述內文中或顯示於附圖中的所有內容皆被解釋為說明性質,而非其字面意義。本領域的從業人員將認識到,步驟順序及圖式中所描繪的架構在不脫離本發明的範圍內可以進行變換,且本文所包含的圖式僅是本發明眾多可能的描繪中的一個例子。
以上關於本發明實施例之示例的內容提供了說明和描述,但並非意在是窮舉或將本發明限制於所揭示的精確形式。根據以上所教示的或從本發明的實踐中可進行可能的修改和變化。例如,當一系列的動作被陳述,在其它實現方式中,動作的順序可進行與本發明原理一致的修改。此外,非依賴性的動作也可以平行地執行。
Claims (22)
- 一種計算裝置可實施之方法,其包含:執行用於該計算裝置之一第一啟動序列,該計算裝置將僅包含有多個韌體模組之預建立的替代的韌體卷複製到隨機存取記憶體(RAM)中,其中該等韌體模組在一S3睡眠狀態回復序列期間使用;將一用於該計算裝置之RAM配置儲存至非依電性記憶體中;在該第一啟動序列完成後,使該計算裝置進入一S3睡眠狀態;藉由開始一第二啟動序列響應一喚醒事件,在進入該S3睡眠狀態後回復該計算裝置之執行;偵測該第二啟動序列係一從該S3睡眠狀態之回復動作及重新起動該RAM配置;檢索該替代的韌體卷之一預記錄的位址,該位址在該計算裝置完成進入該S3睡眠狀態前被記錄;以及在該計算裝置回復一由作業系統所控制的操作模式之前,使用經檢索的該位址,將該第二啟動序列之執行轉移為在RAM中之該替代的韌體卷中之一前可延伸韌體介面初始化(PEI)核心進入點。
- 如申請專利範圍第1項所述之方法,其進一步包含:比對在RAM中之該替代的韌體卷之一第一雜湊和在ROM中之該替代的韌體卷之第二雜湊,該比對發生在 RAM中之該替代的韌體卷之該PEI核心進入點開始執行之前進行比對。
- 如申請專利範圍第2項所述之方法,其進一步包含:在該第一啟動序列期間,計算該替代的韌體卷之該第二雜湊且將其儲存至ROM中。
- 如申請專利範圍第2項所述之方法,其進一步包含:在用於該替代的韌體卷之一建立進程期間,計算該替代的韌體卷之該第二雜湊且將其儲存至ROM中。
- 如申請專利範圍第2項所述之方法,其進一步包含:當該替代的韌體卷複製到RAM中時,計算經複製的該替代的韌體卷之該第一雜湊並將該第一雜湊連同經複製的該替代的韌體卷儲存至RAM中。
- 如申請專利範圍第1項所述之方法,其中該替代的韌體卷包括小於使用在該第一啟動序列之一群韌體模組之全部的一子集。
- 如申請專利範圍第6項所述之方法,其中至少一個在該子集的韌體模組為了從一S3睡眠狀態之一回復而最佳化。
- 如申請專利範圍第1項所述之方法,其中該替代的韌體卷係儲存在ROM中之韌體卷的一相同的複製。
- 如申請專利範圍第1項所述之方法,其中該替代 的韌體卷在該第一啟動序列期間被複製到RAM中。
- 如申請專利範圍第1項所述之方法,其中該替代的韌體卷在變換到該S3睡眠狀態期間被複製到RAM中。
- 一種具有用以在一計算裝置中從一睡眠狀態執行回復之指令的非依電性電腦可讀媒體,當執行該等指令時致使該計算裝置進行以下步驟:執行用於該計算裝置之一第一啟動序列,該計算裝置將一僅包含有多個韌體模組之預建立的替代的韌體卷複製到隨機存取記憶體(RAM)中,其中該等韌體模組在一S3睡眠狀態回復序列期間使用;將一用於該計算裝置之RAM配置儲存至非依電性記憶體中;在該第一啟動序列完成後,使該計算裝置進入一S3睡眠狀態;藉由開始一第二啟動序列響應一喚醒事件,在進入該S3睡眠狀態後回復該計算裝置之執行;偵測該第二啟動序列係一從該S3睡眠狀態之回復動作及重新起動該RAM配置;檢索該替代的韌體卷之一預記錄的位址,該位址在該計算裝置完成進入該S3睡眠狀態前被記錄;以及在該計算裝置回復一由作業系統所控制的操作模式之前,使用經檢索的該位址,將該第二啟動序列之執行轉移為在RAM中之該替代的韌體卷中之一前可延伸韌體介面初始化(PEI)核心進入點。
- 如申請專利範圍第11項所述之媒體,其中當執行該等指令時進一步致使該計算裝置進行以下步驟:比對在RAM中之該替代的韌體卷之一第一雜湊和在ROM中之該替代的韌體卷之第二雜湊,該比對發生在RAM中之該替代的韌體卷之該PEI核心進入點開始執行之前。
- 如申請專利範圍第12項所述之媒體,其中當執行該等指令時進一步致使該計算裝置進行以下步驟:在該第一啟動序列期間,計算該替代的韌體卷之該第二雜湊且將其儲存至ROM中。
- 如申請專利範圍第12項所述之媒體,其中當執行該等指令時進一步致使該計算裝置進行以下步驟:在用於該替代的韌體卷之一建立進程期間,計算該替代的韌體卷之該第二雜湊計算且將其儲存至ROM中。
- 如申請專利範圍第12項所述之媒體,其中當執行該等指令時進一步致使該計算裝置進行以下步驟:當該替代的韌體卷複製到RAM中時,計算經複製的該替代的韌體卷之該第一雜湊並將該第一雜湊連同經複製的該替代的韌體卷儲存至RAM中。
- 如申請專利範圍第11項所述之媒體,其中該替代的韌體卷包括小於使用在該第一啟動序列之一群韌體模組之全部的一子集。
- 如申請專利範圍第16項所述之媒體,其中至少一個在該子集的韌體模組為了從一S3睡眠狀態之一回復 而最佳化。
- 如申請專利範圍第11項所述之媒體,其中該替代的韌體卷係儲存在ROM中之韌體卷的一相同的複製。
- 如申請專利範圍第11項所述之媒體,其中該替代的韌體卷在該第一啟動序列期間被複製到RAM中。
- 如申請專利範圍第11項所述之媒體,其中該替代的韌體卷在變換到該S3睡眠狀態期間被複製到RAM中。
- 一種計算裝置,其包含:一隨機存取記憶體(RAM);一唯讀記憶體(ROM);一中央處理單元(CPU),以及儲存在該ROM中之韌體碼,當被執行時進行以下步驟:執行用於該計算裝置之一第一啟動序列,該計算裝置將一僅包含有多個韌體模組之預建立的替代的韌體卷複製到RAM中,其中該等韌體模組在一S3睡眠狀態回復序列期間使用;將一用於該計算裝置之RAM配置儲存至一非依電性記憶體中,該計算裝置包括經複製的該替代的韌體卷之在RAM中的一位址;其中在完成該第一啟動序列後,當該計算裝置一進入一S3睡眠狀態時,該韌體碼執行進一步進行以下步驟:藉由開始一在該CPU之重置向量的第二啟動序列響 應一喚醒事件之偵測,回復該計算裝置之執行;偵測該第二啟動序列係一從該S3睡眠狀態之回復動作及重新起動該RAM配置;檢索該替代的韌體卷之一預記錄的位址,該位址在該計算裝置完成進入該S3睡眠狀態前被記錄;以及在該計算裝置回復一由作業系統所控制的操作模式之前,使用經檢索的該位址,將該第二啟動序列之執行轉移為在RAM中之該替代的韌體卷中之一前EFI初始化(PEI)核心進入點。
- 如申請專利範圍第21項所述之計算裝置,其中該韌體碼比對在RAM中之該替代的韌體卷之一第一雜湊和儲存在ROM中之該替代的韌體卷之第二雜湊,該比對發生在RAM中之該替代的韌體卷之該PEI核心進入點開始執行之前。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361816105P | 2013-04-25 | 2013-04-25 | |
US61/816,105 | 2013-04-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201502764A TW201502764A (zh) | 2015-01-16 |
TWI617914B true TWI617914B (zh) | 2018-03-11 |
Family
ID=51790331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103114848A TWI617914B (zh) | 2013-04-25 | 2014-04-24 | 用以從睡眠狀態加速回復之專用啟動路徑 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9189248B2 (zh) |
TW (1) | TWI617914B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11423149B2 (en) | 2019-10-07 | 2022-08-23 | Insyde Software Corp. | Method and computer apparatus securely executing extensible firmware application |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377063B (zh) | 2012-04-28 | 2016-06-22 | 国际商业机器公司 | 从遗留操作系统环境恢复到uefi预启动环境的方法和系统 |
US9720698B2 (en) * | 2013-05-07 | 2017-08-01 | Insyde Software Corp. | Method and device for increased boot sequence speed using a cache in non-volatile memory |
US10079019B2 (en) | 2013-11-12 | 2018-09-18 | Apple Inc. | Always-on audio control for mobile device |
US9934047B2 (en) * | 2014-03-20 | 2018-04-03 | Intel Corporation | Techniques for switching between operating systems |
US10031000B2 (en) | 2014-05-29 | 2018-07-24 | Apple Inc. | System on a chip with always-on processor |
US9778728B2 (en) * | 2014-05-29 | 2017-10-03 | Apple Inc. | System on a chip with fast wake from sleep |
KR102225313B1 (ko) * | 2014-08-20 | 2021-03-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치의 동작 방법 |
US9619242B2 (en) * | 2014-12-23 | 2017-04-11 | Intel Corporation | Methods, systems and apparatus to initialize a platform |
US10198274B2 (en) * | 2015-03-27 | 2019-02-05 | Intel Corporation | Technologies for improved hybrid sleep power management |
US10055236B2 (en) * | 2015-07-02 | 2018-08-21 | Sandisk Technologies Llc | Runtime data storage and/or retrieval |
US10452404B2 (en) | 2016-07-28 | 2019-10-22 | Microsoft Technology Licensing, Llc. | Optimized UEFI reboot process |
US20190004818A1 (en) * | 2017-06-29 | 2019-01-03 | American Megatrends Inc. | Method of UEFI Shell for Supporting Power Saving Mode and Computer System thereof |
CN109426579A (zh) * | 2017-08-28 | 2019-03-05 | 西门子公司 | 机床加工文件的中断恢复方法及适用该方法的机床 |
CN107832238B (zh) * | 2017-10-09 | 2021-08-31 | 江苏航天龙梦信息技术有限公司 | 一种基于龙芯处理器平台的高速缓存作内存的方法 |
US12073226B2 (en) * | 2020-02-24 | 2024-08-27 | Intel Corporation | Implementing external memory training at runtime |
TWI743963B (zh) * | 2020-08-25 | 2021-10-21 | 瑞昱半導體股份有限公司 | 電腦系統及其具有安全開機機制的電子裝置及運作狀態還原方法 |
US11899567B2 (en) * | 2021-09-10 | 2024-02-13 | Cirrus Logic, Inc. | System with hardware register and controller external to processor that facilitates transitions between firmware images using hardware register written with firmware image entry points |
US20230083300A1 (en) * | 2021-09-10 | 2023-03-16 | Cirrus Logic International Semiconductor Ltd. | Multi-processor system with dynamically selectable multi-stage firmware image sequencing and distributed processing system thereof |
WO2023136830A1 (en) * | 2022-01-14 | 2023-07-20 | Hewlett-Packard Development Company, L.P. | Variable memories |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030070065A1 (en) * | 1999-03-31 | 2003-04-10 | Fleming Bruce L. | Suspending to nonvolatile storage |
US6694451B2 (en) * | 2000-12-07 | 2004-02-17 | Hewlett-Packard Development Company, L.P. | Method for redundant suspend to RAM |
US20080222423A1 (en) * | 2007-03-06 | 2008-09-11 | Secude International | System and method for providing secure authentication of devices awakened from powered sleep state |
US7546447B2 (en) * | 2004-05-08 | 2009-06-09 | Intel Corporation | Firmware interface runtime environment protection field |
US20100169631A1 (en) * | 2008-12-30 | 2010-07-01 | Jiewen Yao | Authentication for resume boot path |
-
2013
- 2013-09-03 US US14/016,995 patent/US9189248B2/en active Active
-
2014
- 2014-04-24 TW TW103114848A patent/TWI617914B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030070065A1 (en) * | 1999-03-31 | 2003-04-10 | Fleming Bruce L. | Suspending to nonvolatile storage |
US6694451B2 (en) * | 2000-12-07 | 2004-02-17 | Hewlett-Packard Development Company, L.P. | Method for redundant suspend to RAM |
US7546447B2 (en) * | 2004-05-08 | 2009-06-09 | Intel Corporation | Firmware interface runtime environment protection field |
US20080222423A1 (en) * | 2007-03-06 | 2008-09-11 | Secude International | System and method for providing secure authentication of devices awakened from powered sleep state |
US20100169631A1 (en) * | 2008-12-30 | 2010-07-01 | Jiewen Yao | Authentication for resume boot path |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11423149B2 (en) | 2019-10-07 | 2022-08-23 | Insyde Software Corp. | Method and computer apparatus securely executing extensible firmware application |
TWI788594B (zh) * | 2019-10-07 | 2023-01-01 | 系微股份有限公司 | 安全執行可延伸韌體應用程式的方法及計算機設備 |
Also Published As
Publication number | Publication date |
---|---|
US20140325197A1 (en) | 2014-10-30 |
US9189248B2 (en) | 2015-11-17 |
TW201502764A (zh) | 2015-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI617914B (zh) | 用以從睡眠狀態加速回復之專用啟動路徑 | |
US7971081B2 (en) | System and method for fast platform hibernate and resume | |
TWI436199B (zh) | 電源管理控制器與方法 | |
US8028177B2 (en) | Method for changing power states of a computer | |
RU2568280C2 (ru) | Быстрый запуск компьютера | |
EP3274788B1 (en) | Technologies for improved hybrid sleep power management | |
US7584374B2 (en) | Driver/variable cache and batch reading system and method for fast resume | |
CN101356501A (zh) | 用于快速启动操作系统的方法和装置 | |
JP5885881B2 (ja) | コンピューティングデバイスにおける電源オフ状態の実施 | |
JP2013520744A (ja) | 最小ブートイメージの生成方法及びその装置 | |
US20190004818A1 (en) | Method of UEFI Shell for Supporting Power Saving Mode and Computer System thereof | |
US20150347155A1 (en) | Switching between operational contexts | |
WO2021233363A1 (zh) | 计算设备及其bios更新方法和介质 | |
JP2009516244A5 (zh) | ||
US20150160881A1 (en) | System and method for transferring data between operating systems | |
TWI605332B (zh) | 使用唯cpu重設的支援先進組態與電力介面(acpi)休眠狀態的方法及裝置 | |
US20130166852A1 (en) | Method for hibernation mechanism and computer system therefor | |
US20150317181A1 (en) | Operating system switching method | |
US7272731B2 (en) | Information handling system having reduced power consumption | |
US20180253349A1 (en) | Fault tolerant operating metohd and electronic device using the same | |
US11880231B2 (en) | Accurate timestamp or derived counter value generation on a complex CPU | |
CN103309691A (zh) | 信息处理设备及其快速启动方法 | |
JP2003242026A (ja) | 情報処理システムおよびプログラム実行モード制御方法 | |
CN105224399A (zh) | 电子装置及其切换作业系统的方法 | |
TW531699B (en) | Memory structure able to prevent data loss and its protection method |