TW201721412A - 選擇及載入韌體卷區之技術 - Google Patents
選擇及載入韌體卷區之技術 Download PDFInfo
- Publication number
- TW201721412A TW201721412A TW105130583A TW105130583A TW201721412A TW 201721412 A TW201721412 A TW 201721412A TW 105130583 A TW105130583 A TW 105130583A TW 105130583 A TW105130583 A TW 105130583A TW 201721412 A TW201721412 A TW 201721412A
- Authority
- TW
- Taiwan
- Prior art keywords
- firmware
- firmware volume
- volume
- computing device
- memory
- 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/4406—Loading of operating system
- G06F9/4408—Boot device selection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- 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
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本文中所揭示之實例係有關於選擇並且載入韌體卷區。啟動一運算裝置使該運算裝置處於能夠存取對多個其他運算裝置可用之一記憶體的一狀態。該記憶體包括有多個韌體卷區。在一項實例中,基於該運算裝置之一硬體組態或硬體組件選擇至少一個韌體卷區。載入該等經選擇之韌體卷區。
Description
本發明係有關於選擇及載入韌體卷區之技術。
現代的電腦及電腦為基之系統包括有平台韌體或程式碼,其代表非依電性「韌體」記憶體上所儲存之指令及非指令類資料,並且用於初始化該電腦為基之系統及/或用於該電腦為基之系統的低階功能。傳統上,運算系統用之韌體乃編譯為該運算系統用之單一單塊映像(monolithic image)。一運算系統用之韌體用之單塊映像中的程式碼基底會包括有該運算系統使用之一給定平台用之適當檔案的編譯及其支援電腦架構。
依據本發明之一實施例,係特地提出一種運算裝置,其包含有:一啟動引擎,其啟動該運算裝置使該運算裝置處於能夠存取對複數個其他運算裝置可用之一記憶體的一狀態,其中該記憶體包括有複數個韌體卷區;一選擇引擎,其基於該運算裝置之一硬體組態選擇該等韌體卷區其中至少一者;以及一韌體載入引擎,其載入該至少一個韌體卷區。
現代系統韌體(SFW)實作態樣乃建置並且部署為經建立專門用以在一特定硬體平台運行之單一、單塊映像。儘管此類實作態樣可來自於經結構化用以支援多個平台及/或架構之程式碼基底,從此一程式碼基底部署一單塊映像時,會面臨挑戰而無法有效率地支援硬體與電腦架構之一異質混合。再者,由於單塊SFW映像的關係,在系統中相同硬體組態有不同任務的情況下,一生態系統內之一特定角色或一特定工作負載若要支援硬體,會具有挑戰性。
若要支援多種平台及中央處理單元(CPU)架構,開發團隊典型會結構化其程式碼基底,使得能夠針對一給定平台及其支援之CPU架構進行適當檔案之編譯。CPU架構之實例包括有精簡指令集運算(RISC)架構與複雜指令集運算架構(CISC),例如:x86、x64、先進RISC機器、無互鎖管線階段微處理器(MIPS)、精密架構RISC、Power 架構、可擴充處理器架構等。再者,系統板可來自各個製造商以支援此等架構。此外,各別系統板所使用的CPU可以不同。此作法可提升開發效率,然而,在硬體與CPU架構混合之一系統中,隨著硬體實體化會需要不同的單塊映像。
由於對此系統中的各不同硬體組態必須建置並且部署一不同映像,因此沒有效率。此作法的替代方案乃是編譯單一單塊映像以支援任何及所有硬體組態,並且藉由偵檢上有此映像運行中之硬體來得到特定程式碼路徑。然而,隨著混合硬體之系統生長,此一映像之潛在尺寸會變大,而且判定正確程式碼路徑之進行會負面影響此運算系統及/或其特定節點的啟動時間。
若要在此系統內為一特定角色及/或工作負載組配硬體,單塊SFW映像可以經受上述的建置/部署無效率(依據角色/工作負載建置一特定映像),或支援數量持續增加之可調參數與功能表選項以供一使用者或管理員做選擇。後種作法接著將容許使用者或管理員設定此SFW之特定部分執行及/或組配此平台的方式。
這種作法的挑戰在於,映像尺寸隨著每個可調參數及其底下可選擇選項而增大,因為須寫入程式碼才能適應。再者,關於讓使用者或管理員知道哪些選擇才能將系統調到一特定工作負載,複雜度也會提升。
管理軟體可藉由對特定系統部署設定檔,將此複雜度減輕某種程度。此等設定檔可自動化相關選項及/或參數的設定。然而,在單塊SFW映像上使用設定檔仍然沒有效率,其因在於,若須另外支援一新參數,則整體映像都得更新,還得對管理工具設定所述的新參數。此外,此單塊映像傳統上會在運算系統上常駐本機,並且由本機的運算系統來執行。
因此,可將SFW程式碼基底及建置/部署環境結構化,以將此SFW程式碼隔成不同程式庫或韌體卷區,並可基於某些準則獨立地部署至硬體,例如,CPU架構、系統內裝置之一所欲角色/功能、待於裝置上執行之一工作負載、上述組合等。此外,可將此等韌體卷區儲存於一運算系統中之一位置,可由系統之多個運算裝置存取。按照這種方式,此(等)各別裝置可拉動韌體卷區,及/或系統之一管理器可將此等韌體卷區下推至此等各別裝置。韌體於本文中使用時,乃可由硬體執行對一裝置提供低階控制之軟體。韌體可用於對諸如一作業系統之更高階軟體提供一介面及/或服務。在一項實例中,可編譯一韌體卷區,並且可使用不同資料資訊來設定對應韌體程式庫之設定值的各個變化。在另一實例中,不同的設定值可編譯不同的韌體卷區。
「韌體裝置」於本文中使用時,乃包括有韌體程式碼及/或資料之永續性(例如非依電性)實體儲存庫。此外,一「韌體卷區」於本文中使用時,乃一邏輯韌體裝置。統一可延伸韌體介面論壇的平台初始化規格中包括有如何才可實施一韌體卷區之實例。
一韌體卷區或一組韌體卷區可位於裝置上,並且可包括有開啟重設向量程式碼及早期爬出碼(crawl-out code)。此韌體卷區可置放於一唯讀記憶體(ROM)中,或可使用另一種作法來利用此韌體卷區,舉例而言,一硬體輔助將一部分非依電性記憶體映射到一CPU的位址空間。在一些實例中,此韌體卷區亦可包括有用以存取及/或映射一非依電性記憶體之程式碼,從而可映射另外的韌體卷區。
可基於準則將其他SFW模組組織及分組成此等其他韌體卷區。所使用的一個準則可包括有裝置中使用的硬體(例如,處理器類型、特定修訂之硬體設計等)。另一準則可包括有安全性(例如,將安全性敏感之SFW模組分成不同的韌體卷區)。再一準則可包括有一特許(例如,若存在一特許,則有些SFW模組可能可用)。此外,另一準則可包括有可更新能力,舉例而言,一SFW在不用重新啟動便可更新及/或套用的情況下,可與需要重新啟動才能生效的SFW不同。在一些實例中,出自啟動韌體卷區之啟動韌體可發現另外的韌體卷區,判斷有哪些韌體卷區有相關(例如,判斷此韌體卷區是否符合一正確的硬體),以及在此等另外的韌體卷區中調度SFW模組。
在包含有多個機器或「節點」之一系統中,可根據有韌體正在部署之節點的特定內容,使用韌體卷區來部署SFW程式庫。舉例而言,具有一x64 CPU之一節點可使用一組SFW卷區,其組配此等x64處理器以供在系統內使用。在另一實例中,一具有特定安全性佈建之節點可使用一組包括有此等安全性佈建之SFW。在又另一實例中,一節點或一組節點可支援一即時或低潛時應用程式套件。在這種狀況中,可使用具有一低運行時間執行設定檔之SFW卷區。
若要在特定節點上使用多個SFW卷區,此等SFW卷區可與此等各別節點之硬體及/或一設定檔符合,如本文中進一步所述。在一項實例中,此等SFW卷區可基於其在SFW執行流程裡的相對位置,以預定偏移置放於節點上之SFW映像空間內。在另一實例中,可在韌體卷區周圍置放包裝函式,或可建構一表格、清單或檔案系統使置放更有靈活性。
此外,利用修正及/或增強來更新SFW卷區時,可藉由容許此(等)相關節點(例如,使用各別SFW卷區之節點)在出現變化時下拉或直接執行已更新SFW卷區來完成。這可進一步避免將一大單塊映像發送至各受影響節點之額外負荷。在一項實例中,可將SFW卷區有變更的位置儲存於一映射檔、一表格、一清單、一檔案系統等中,供部署組件進行剖析。在一項實例中,此更新使用一原地置換來完成。在另一實例中,此更新可使用用以支援一傍靠傳遞置換之一機制來完成,以便保持前一版SFW卷區的複本。憑藉此作法,若要使用一轉返,則儲存一相容韌體卷區之一可能工作複本。
圖1根據一實例,為包括有一運算裝置之一運算系統的一方塊圖,該運算裝置能夠從可由其他運算裝置存取之一記憶體載入韌體卷區。圖2根據一實例,為一運算裝置的一方塊圖,該運算裝置能夠從可由其他運算裝置存取之一記憶體載入韌體卷區。
在一項實例中,系統100之運算裝置102包括有一啟動引擎110、一選擇引擎112、一韌體載入引擎114、以及一硬體組態116。此硬體組態可包括有若干硬體組件118。運算裝置102可存取包括有複數個韌體卷區142之一記憶體140,此等韌體卷區亦可用於複數個其他運算裝置150a至150n。在一些實例中,如圖2所示,運算裝置102更包括有一設定檔引擎120、一特許引擎122、一管理引擎124、一處理器230、記憶體232、以及輸入輸出介面234。輸入輸出介面234可連接至一輸入裝置240、一輸出裝置242、輸入輸出裝置等。運算裝置102、150a至150n之實例可包括有諸如伺服器、刀鋒伺服器、工作站、桌上型電腦等電腦。在一些實例中,運算裝置102、150可以是將個別運算裝置102、150當作節點使用之系統100之部分。
啟動引擎110可用於啟動運算裝置102使運算裝置102進入能夠存取記憶體140之一狀態。記憶體140可用於複數個其他運算裝置150a至150n。此記憶體為一永續記憶體。永續記憶體之實例包括有憶阻器、相變記憶體、快閃記憶體、鐵電隨機存取記憶體、磁阻隨機存取記憶體等。在一些實例中,此永續記憶體亦可以是系統100之至少一個裝置之一主記憶體。此外,在一些實例中,記憶體140可由多個記憶體所構成。如此,韌體卷區142中有一些可位於一個運算裝置上,而其他韌體卷區則位於其他運算裝置上。
啟動引擎110可使用一SFW卷區啟動此裝置使其進入此狀態。此SFW卷區可位於運算裝置102之記憶體中之一特定位置以在一啟動重設向量進行載入。如此,此SFW卷區可視為早期爬出碼。類似的是,在一些實例中,選擇引擎112及/或韌體載入引擎114可使用位於運算裝置102上之機器可執行SFW卷區來實施。在其他實例中,選擇引擎112及/或韌體載入引擎114可使用機器可執行SFW卷區142來實施。舉例而言,在一項實例中,一硬體功能可實施成使得此啟動重設向量重映射至記憶體140,使得啟動引擎110、選擇引擎112、及/或韌體載入引擎114其中一或多個部分可常駐於韌體卷區142內。在一些實例中,啟動引擎110、選擇引擎112、以及韌體載入引擎114可使用單一SFW卷區來實施。在其他實例中,可使用多個SFW卷區。
如上述,記憶體140包括有複數個韌體卷區142。在一些實例中,此等韌體卷區142乃經由一高速連接(例如十億位元乙太網路)予以連接。在其他實例中,可使用其他類型的連接,例如一光子連接。韌體卷區142可包括有與運算裝置102之硬體組態116配合使用之韌體卷區、以及與其他硬體組件配合使用之韌體卷區。在一些實例中,各別韌體卷區142乃經組配而用於特定組件或組件集合(例如:一處理器、一處理器類型、一系統板、加密/解密加速器、視訊編碼引擎、視訊壓縮引擎、實體感測器、通訊裝置等)。再者,在一些實例中,韌體卷區142中有一些亦可例如基於一設定檔或特許,經組配而用於特定功能。
選擇引擎112可用於選擇韌體卷區142之一子集,以供與運算裝置102之硬體組態116配合使用。在一些實例中,可選擇一個韌體卷區,在其他實例中,可選擇多個韌體卷區。硬體組態116為運算裝置102處可得之一組硬體組件118。在一項實例中,此選擇程序及/或啟動程序之部分可包括有偵檢運算裝置102之組成硬體組態116之硬體組件118。在一項實例中,硬體組件118可分別與一順序相關聯。舉例而言,具有一插座供一週邊裝置用之一系統板可依照待於此週邊裝置本身之前先初始化之順序而相關聯。選擇引擎112可選擇待基於硬體組態116使用之韌體卷區142。舉例而言,特定韌體卷區142可相關聯至特定硬體組件118。不同的硬體組件118可選擇不同的韌體卷區142。舉例而言,一第一硬體組件可選擇一第一韌體卷區,而一第二硬體組件可選擇一第二韌體卷區。
在此選擇程序期間,可使用一映射關係。舉例而言,可使用一管理引擎124選擇相關聯之韌體卷區142。管理引擎124可向一管理員提供運算裝置102之管理存取(例如,當作一網頁、當作連至運算裝置102之一應用程式規劃介面等)。在一些實例中,管理引擎124在運算裝置102電源切斷時可以是可存取的。
在一項實例中,可使用管理引擎124選擇韌體卷區142以與硬體組態116配合使用。此外,在一項實例中,多個韌體卷區可與一硬體組件118相關聯。此等卷區可基於不同因素(例如:版本編號、用於實施此韌體之特許特許、由一設定檔所使用之一特定實作態樣等)而不同。
在一項實例中,可使用管理引擎124基於設定檔選擇此等韌體卷區。舉例而言,系統100中之運算裝置102之一特定功能可設定一設定檔。在一項實例中,運算裝置102可與特定安全特徵相關聯。如此,可選擇與此等安全特徵之實作態樣相關聯之對應韌體卷區。在另一實例中,運算裝置102可與一特定處理器230相關聯。可基於處理器230的存在性來選擇對應的韌體卷區。在一進一步實例中,運算裝置102可用於一即時或低潛時應用程式套件,如此,可選擇與一低運行時間執行設定檔相關聯之韌體卷區。可使用一設定檔引擎120管理設定檔之使用。可使用設定檔設定值幫助選擇用於一硬體組件之一韌體卷區。
在另一實例中,一特許之存在性可用於選擇此等韌體卷區。舉例而言,可使用特許引擎122判定運算裝置102存在什麼特許。這可使用例如指出是否存在特定特許之符記、或另一授權方案來實施。在一項實例中,此授權方案可包括有待實施核心之處理器之數量。在另一實例中,可使用授權方案,例如藉由包括有可由運算裝置102使用之一臨界值(例如:一乙太網路頻寬臨界值、一處理臨界值等),容許使用此等硬體組件之一部分。在一進一步實例中,可使用一授權方案容許特定硬體組件之功能。
如此,當運算裝置102啟動時,啟動引擎110可將運算裝置102初始化成能夠對記憶體140進行通訊。啟動引擎110亦可判定位於運算裝置102上的是什麼硬體組件118。在一些實例中,啟動引擎110可開始執行出自記憶體140之資料,以尋找硬體組件118其中一些。舉例而言,啟動引擎110可指向可能組件之一已更新清單之一記憶體位置。在一些實例中,可由運算裝置102存取之一資料結構上亦可得到相關聯之韌體卷區。在一些實例中,可使用管理引擎124在運算裝置102上本機提供此一資料結構。在其他實例中,一旦可存取記憶體140,便可從記憶體140讀取此資料結構。如上述,可使用設定檔、設定檔設定值、及/或授權資訊選擇韌體卷區。
可使用韌體載入引擎114載入經選擇的韌體卷區。在一項實例中,一第一硬體組件可載入一第一韌體卷區,而一第二硬體組件可載入一第二韌體卷區。在一些實例中,載入此韌體卷區可包括有使用此韌體卷區初始化一相關聯硬體組件。在一些實例中,此載入可直接從記憶體140出現。
在一些實例中,對於運算裝置102,藉由將此等各別韌體卷區映射至與韌體相關聯之一記憶體位址,將此等韌體卷區載入。此外,記憶體140可作為一組織架構附接記憶體,由運算裝置102及/或其他運算裝置150存取。一組織架構附接記憶體是例如經由一光子連接,透過一高速網路,附接至運算裝置102及/或其他運算裝置150之一種記憶體子系統。
在一項實例中,更新由運算裝置102使用之一韌體卷區。此韌體卷區可進行遠端更新,也就是說,藉由有別於運算裝置102之一裝置來更新,例如藉由另一運算裝置150或使用遠端管理作法其中一者來更新。在一項實例中,當更新此卷區時,可使用一卷區管理系統讓運算裝置上的管理引擎經由一訊息知道此更新。可使用各種作法,例如一發行者/用戶作法,使用一清單等。如此,在此實例中,當更新此韌體卷區時,發送指出此更新之一訊息至管理引擎124。管理引擎124接著可令韌體載入引擎114重新載入此已更新韌體卷區。在一些實例中,更新此用過的韌體卷區不需要一重新啟動。此外,在一些實例中,可個別更新此等韌體卷區。在其他實例中,不需要發送一訊息,而是可在下次運算裝置102啟動時,實施此已更新韌體卷區。
系統100可包括有經由一通訊網路(例如,經由一輸入輸出介面234)與其他裝置通訊之一運算裝置102。在某些實例中,此等裝置可以是諸如伺服器、用戶端電腦、桌上型電腦、行動電腦等運算裝置。在其他實例中,此等裝置可包括有特殊用途機器。可經由一處理元件、記憶體、及/或其他組件實施此裝置。
此通訊網路可使用有線通訊、無線通訊、或以上的組合。再者,此通訊網路可包括有多個諸如資料網路、無線網路、電話網路等子通訊網路。此類網路舉例而言,可包括有一公用資料網路,例如網際網路、區域網路(LAN)、廣域網路(WAN)、都會區域網路(MAN)、纜線網路、光纖網路、以上的組合,或類似者。在某些實例中,無線網路可包括有蜂巢式網路、衛星通訊、無線LAN等。再者,此通訊網路的形式可以是介於裝置間之一直接網路鏈。可利用各種通訊結構及基礎結構實施此(等)通訊網路。
以舉例方式,此等裝置經由一通訊協定或多種協定,利用對此通訊網路之存取,彼此通訊且與其他組件進行通訊。一協定可以是一組規則,界定此通訊網路之節點如何與其他節點互動。再者,可藉由交換離散的資料封包或發送訊息,實施網路節點彼此間的通訊。封包可包括有與一協定(例如此(等)網路節點接觸位置的資訊)相關聯之標頭資訊、以及酬載資訊。系統100可將一或多個運算裝置102、150連接至此通訊網路以對其他裝置提供通訊。這可實現此系統對於各種目的之使用,例如資料庫使用、網站伺服等。
引擎110、112、114、120、122、124包括有硬體及/或硬體之組合,並且進行程式規劃以進行本文中所提供的功能。此外,此等模組(圖未示)可包括有程式規劃功能及/或程式規劃功能之組合,藉由如本文中所提供之硬體來執行。當論述此等引擎及模組時,應知,歸屬一引擎之功能亦可歸屬於對應的模組,反之亦然。此外,歸屬於一特定模組及/或引擎之功能亦可使用另一模組及/或引擎來實施。如上述,此等引擎有些可實施成執行韌體卷區之硬體。
一處理器230,諸如適用於取回及執行指令之一中央處理單元(CPU)或一微處理器,及/或電子電路,可被組配用以進行本文中所述各種引擎及模組之功能。在某些情節中,記憶體232或其他記憶體中可包括有諸如韌體卷區之位址資訊等指令及/或其他資訊。可由運算裝置102另外提供輸入輸出介面234。舉例而言,可利用諸如一鍵盤、一感測器、一觸摸介面、一滑鼠、一麥克風等輸入裝置240從運算裝置102週圍之一環境接收輸入。再者,可利用諸如一顯示器之一輸出裝置242向使用者呈現資訊。輸出裝置之實例包括有揚聲器、顯示裝置、放大器等。此外,在某些實例中,可利用一些組件實施本文中所述其他組件之功能。諸如通訊裝置之輸入輸出裝置,像是網路通訊裝置或無線裝置,可視為能夠使用輸入輸出介面234之裝置。
圖3根據一實例,為包括有節點之一系統的一方塊圖,此等節點能夠基於此等節點之硬體組件選擇韌體卷區。系統300可包括有若干節點302a、302b至302m。此等各別節點可包括有各別記憶體304a、304b至304m及各別硬體組件306a、306b至306m。此等節點之記憶體304可使用組織架構320互連。組織架構320可實施成一高速連接,例如一光子連接。再者,在一項實例中,記憶體304可以是經由組織架構320作用之一直接載入記憶體。一直接載入記憶體是容許某硬體獨立於一中央處理單元對一主系統記憶體(例如記憶體304)進行存取之一種記憶體。
在某些實例中,韌體卷區308可經由組織架構320由此等節點存取。再者,此等節點302中一或多者可使用韌體卷區308在各別硬體組件306上載入經選擇的韌體。圖3展示位於節點302m上之韌體卷區308,然而,意欲可使韌體卷區308位於節點302m上、當作冗餘位於多個節點上、及/或分割到多個節點。
在一些實例中,此等節點中有一些,例如節點302a,可包括有一啟動卷區312,其包括有可藉由硬體執行之早期初始化程式碼。啟動卷區312可為小尺寸,並且包括有足以將節點302初始化至使節點302a可存取韌體卷區308 (例如,使用組織架構320)之一狀態。
節點302可使用啟動卷區312判定硬體組件306a (例如藉由對硬體進行掃描、使用節點302之一管理系統所產出之一資料結構等)。節點302a接著可選擇韌體卷區308中待基於此已定硬體在節點302a上實施(例如,藉由執行此等各別韌體卷區)之一子集。在一些實例中,此子集亦基於如上述之一設定檔。再者,此等韌體卷區中有一些可基於如上述之一特許來選擇。
節點302a可載入此等經選擇之韌體卷區供硬體組件306a用。如上述其他節點可按類似方式使用韌體卷區308。在一項實例中,節點302b可包括有硬體組件306b,其與硬體組件306a有相同的硬體組態,但所選擇的韌體卷區不同。在這種狀況中,一用於節點302b的設定檔可以不同。如此,此等經選擇待實施的韌體卷區子集不同。
在一項實例中,對一韌體卷區之一韌體更新可使用卷區管理引擎310出現,及/或可新增新韌體卷區。在一項實例中,當編譯一新卷區時,可將此卷區新增至包括有此等韌體卷區之一韌體儲存庫。再者,卷區管理引擎310可使此韌體卷區與一或多個設定檔、設定檔設定值、特許、硬體組態等相關聯。可使用此韌體卷區將一通知發送至節點,例如節點302a。節點302a接著可使用此新韌體卷區。在一些實例中,不需要一重新啟動,並且可即時實施此韌體卷區。在其他實例中,可在一重新啟動之後使用此新韌體卷區。所示卷區管理引擎310雖然是在節點302m中,韌體管理引擎310仍可位於另一裝置中,例如對記憶體304m有存取權之其他節點其中一者、或能夠更新此等韌體卷區之一外部裝置。
在一些實例中,對此等韌體卷區進行之韌體更新或新韌體卷區之新增可在消耗此韌體卷區之節點遠端處出現。在一些實例中,使用卷區管理引擎310進行此更新。在其他實例中,可在節點302m遠端處建置及上傳此新韌體卷區。
此外,可使用卷區管理引擎310管理韌體卷區308。例如,施作與一機器之一特定生產或修訂階段相關聯之某些韌體卷區,可追蹤並且保護此等各別的韌體卷區。在一項實例中,此等韌體卷區可與一特定節點類型相關聯(例如呈一特定組態之網頁伺服器節點)。此等韌體卷區可如此加標並且予以保護(例如標示成唯讀)。此外,可備份韌體卷區。此外,卷區管理引擎310可產生韌體卷區308之一索引。可在啟動期間將此索引發送至節點302而有助於載入此等韌體卷區。
舉例而言,可在此等各別節點於執行一啟動卷區312期間進行讀取之一特定記憶體位置保持此索引。當選擇韌體卷區時,可由此索引判定此韌體卷區在記憶體304m中的位置。在一些實例中,這種互動類型可發生於此等節點之一管理子系統,而不是在此啟動程序期間發生。在一些實例中,此索引(或其他資料結構)可包括有要用於各別硬體組件的是哪個韌體卷區、設定檔、特許、或以上的組合。在一些實例中,一設定檔可將此程式碼基底限制在一特定集合(例如預設)。在其他實例中,此設定檔可指出此節點應該運行最新的韌體卷區。類似的是,此設定檔可指出是否可使用一穩定建置或搶鮮版建置。舉例而言,一組測試節點可具有使用搶鮮版建置之一設定檔,而一組生產節點具有使用韌體卷區生產測試建置之一設定檔。
在一項實例中,由於此等各別節點不需要包括全部此等韌體卷區,反而是使用一啟動卷區312,節點因而可用一最終啟動卷區來製造及出貨。因此,製造此等節點時,此韌體大部分不需要最終化。可在製造後的某時間對系統300最終化及新增此等韌體卷區。單一單塊韌體映像傳統上會需要在運算裝置製造且裝箱之前完成,相比之下,這種方式是有助益的。
在一些實例中,卷區管理引擎310可將一特定節點(例如節點302a)用之經選擇韌體卷區推送至節點302a以供載入之用。在一項實例中,於啟動期間或在啟動之前,節點302a (例如經由一管理引擎或一啟動引擎中之一程序)可向卷區管理引擎310提供與硬體組件306a有關之資訊、及/或設定檔資訊、及/或特許資訊。卷區管理引擎310使用此已接收資訊選擇待載入供此等硬體組件用之韌體卷區。如上述,此選擇可基於此等硬體組件、此設定檔資訊、此特許資訊、或以上的組合。舉例而言,藉由將此等經選擇韌體卷區推送至節點302a之區域記憶體304a,可在節點306a上載入此等經選擇韌體卷區。在一些實例中,區域記憶體304a亦可由其他節點存取。此外,卷區管理引擎310可引起此等韌體卷區之載入以供系統300之此等節點中之多者之用。
在一些實例中,此等節點可執行啟動期間從區域記憶體選擇出的韌體卷區。舉例而言,卷區管理引擎310可基於硬體組件306b、設定檔資訊、特許資訊、或以上的組合,選擇韌體卷區308之一子集供節點302b用。可對記憶體304b提供此韌體卷區子集。節點302b接著可執行此經選擇的韌體卷區子集。在一項實例中,節點304b包括的硬體組件其硬體組態可相同,但載入且執行之一韌體卷區子集則不同。這舉例而言,可基於一設定檔。
圖4根據一實例,為一方法的一流程圖,用於使一運算裝置從位於另一運算裝置之一記憶體載入經選擇之韌體卷區。圖5根據一實例,為一運算裝置從位於另一運算裝置之一記憶體載入經選擇之韌體卷區的一方塊圖。雖然方法400之執行乃於下文參照運算裝置500作說明,仍可利用其他適用於執行方法400之組件(例如運算裝置102)。方法400可用諸如儲存媒體520等機器可讀儲存媒體上所儲存可執行指令之形式、及/或電子電路系統之形式來實施。此等指令中有一些的形式可以是一本機韌體卷區。
運算裝置500舉例而言,包括有一處理器510、以及一機器可讀儲存媒體520,其包括有指令522、524、526,用於啟動運算裝置500使此運算裝置處於可存取及載入出自位於另一裝置之一記憶體之韌體卷區的一狀態。在某些實例中,此記憶體可具有非依電性。再者,在一些實例中,此記憶體可以是另一裝置之一主記憶體之部分。此記憶體舉例而言,可藉由一組織架構來連接。運算裝置500舉例而言,可以是一伺服器、一工作站、一桌上型電腦、一薄型用戶端等。
處理器510可以是至少一個中央處理單元(CPU)、至少一個半導體為基之微處理器、至少一個圖形處理單元(GPU)、其他適用於取回及執行機器可讀儲存媒體520中所儲存指令之硬體裝置、或以上的組合。舉例而言,處理器510可包括有位在一晶片上之多個核心,包括有跨多個晶片之多個核心、跨多個裝置(例如,若運算裝置500包括有多個節點裝置)之多個核心、或以上的組合。處理器510可擷取、解碼、以及執行用以實施方法400及另外功能的指令522、524、526。舉一替代例或除了取回並執行指令以外,處理器510可包括有至少一個積體電路(IC)、其他控制邏輯、其他電子電路、或以上的組合,其包括有用於進行記憶體522、524、526之功能的若干電子組件。
機器可讀儲存媒體520可以是任何電子、磁性、光學、或其他含有或儲存可執行指令之實體儲存裝置。因此,機器可讀儲存媒體舉例而言,可以是隨機存取記憶體(RAM)、一電氣可抹除可規劃唯讀記憶體(EEPROM)、一儲存驅動機、一光碟唯讀記憶體(CD-ROM)、及類似者。如此,此機器可讀儲存媒體可具有非暫時性。如本文中之詳細說明,機器可讀儲存媒體520可編碼有一系列用於載入經選擇韌體卷區之可執行指令。
於402,處理器510可執行啟動指令522以初始化運算裝置500,並且啟動運算裝置500使此裝置處於能夠存取對多個其他運算裝置可用之一記憶體的一狀態。此記憶體可位於此等其他運算裝置其中一者,並且經由如上述之一組織架構來連接。此外,在一些實例中,此記憶體可以是此裝置之一主記憶體。再者,此記憶體可以是一非依電性記憶體。在某些實例中,運算裝置500經初始化而能夠直接定址此記憶體。在初始化期間,運算裝置500可偵檢運算裝置500之硬體組件。
可使用偵檢到的硬體組件,針對運算裝置500選擇待載入的韌體卷區。於404,舉例而言,可藉由執行韌體選擇指令524,基於此等硬體組件選擇韌體卷區。如上述,亦可基於一設定檔及/或一特許選擇此等韌體卷區。於406,可執行韌體載入指令526以載入此等經選擇之韌體卷區。在一項實例中,可藉由映射此韌體卷區或複製此等硬體組件其中一者之此等韌體卷區之部分至此硬體組件所使用之一記憶體(例如一依電性或非依電性記憶體)來載入此韌體。
在一些實例中,可輪轉此等硬體組件之判定、韌體卷區之選擇、以及此等韌體卷區之載入。舉例而言,處理器510可偵檢一系統板、選擇供此系統板用之一韌體卷區、以及載入此系統板用之韌體卷區。接著,處理器510可偵檢附接至此系統板之一週邊裝置、選擇此週邊裝置用之一韌體卷區、以及載入此韌體卷區。
如上述,可更新(例如藉由一遠端系統更新)位於此記憶體上之此等韌體卷區其中一或多者。可對運算裝置500提供此已更新韌體之位置。運算裝置500接著可從該記憶體載入此已更新韌體。在一些實例中,此載入不用重新啟動運算裝置500也可出現。在一些實例中,啟動指令522、韌體選擇指令524、及/或韌體載入指令526可以是一初始本機韌體卷區之部分。
100~300‧‧‧系統
102、150a~150n、500‧‧‧運算裝置
110‧‧‧啟動引擎
112‧‧‧選擇引擎
114‧‧‧韌體載入引擎
116‧‧‧硬體組態
118、306a~306m‧‧‧硬體組件
120‧‧‧設定檔引擎
122‧‧‧特許引擎
124‧‧‧管理引擎
140、232、304a~304m‧‧‧記憶體
142、308‧‧‧韌體卷區
230、510‧‧‧處理器
234‧‧‧輸入輸出介面
240‧‧‧輸入裝置
242‧‧‧輸出裝置
302a~302m‧‧‧節點
310‧‧‧卷區管理引擎
312‧‧‧啟動卷區
320‧‧‧組織架構
400‧‧‧方法
402~406‧‧‧步驟
520‧‧‧儲存媒體
522~526‧‧‧指令
102、150a~150n、500‧‧‧運算裝置
110‧‧‧啟動引擎
112‧‧‧選擇引擎
114‧‧‧韌體載入引擎
116‧‧‧硬體組態
118、306a~306m‧‧‧硬體組件
120‧‧‧設定檔引擎
122‧‧‧特許引擎
124‧‧‧管理引擎
140、232、304a~304m‧‧‧記憶體
142、308‧‧‧韌體卷區
230、510‧‧‧處理器
234‧‧‧輸入輸出介面
240‧‧‧輸入裝置
242‧‧‧輸出裝置
302a~302m‧‧‧節點
310‧‧‧卷區管理引擎
312‧‧‧啟動卷區
320‧‧‧組織架構
400‧‧‧方法
402~406‧‧‧步驟
520‧‧‧儲存媒體
522~526‧‧‧指令
以下詳細說明會參照圖式,其中:
圖1根據一實例,為包括有一運算裝置之一運算系統的一方塊圖,該運算裝置能夠從可由其他運算裝置存取之一記憶體載入韌體卷區;
圖2根據一實例,為一運算裝置的一方塊圖,該運算裝置能夠從可由其他運算裝置存取之一記憶體載入韌體卷區;
圖3根據一實例,為包括有節點之一系統的一方塊圖,此等節點能夠基於此等節點之硬體組件選擇韌體卷區;
圖4根據一實例,為一方法的一流程圖,用於使一運算裝置從位於另一運算裝置之一記憶體載入經選擇之韌體卷區;以及
圖5根據一實例,為一運算裝置從位於另一運算裝置之一記憶體載入經選擇之韌體卷區的一方塊圖。
300‧‧‧系統
302a~302m‧‧‧節點
304a~304m‧‧‧記憶體
306a~306m‧‧‧硬體組件
308‧‧‧韌體卷區
310‧‧‧卷區管理引擎
312‧‧‧啟動卷區
320‧‧‧組織架構
Claims (15)
- 一種運算裝置,其包含有: 一啟動引擎,其啟動該運算裝置使該運算裝置處於能夠存取對複數個其他運算裝置可用之一記憶體的一狀態, 其中該記憶體包括有複數個韌體卷區; 一選擇引擎,其基於該運算裝置之一硬體組態選擇該等韌體卷區其中至少一者;以及 一韌體載入引擎,其載入該至少一個韌體卷區。
- 如請求項1之運算裝置,其更包含有: 複數個硬體組件, 其中該等硬體組件之一第一者載入該等韌體卷區之一第一者,以及 其中該等硬體組件之一第二者載入該等韌體卷區之一第二者。
- 如請求項1之運算裝置,其更包含有: 一設定檔引擎,其判定包括有該硬體組態用之複數個設定值的一設定檔, 其中該選擇引擎進一步基於該等設定值選擇該至少一個韌體卷區。
- 如請求項1之運算裝置,其更包含有: 複數個硬體組件;以及 一特許引擎,其判定與該等硬體組件相關聯之一特許, 其中該至少一個韌體卷區乃基於該特許而予以進一步選擇。
- 如請求項1項之運算裝置,其中該至少一個韌體卷區乃藉由將該至少一個韌體卷區映射至與該運算裝置用之韌體相關聯之一記憶體位址而予以載入,以及其中該記憶體具永續性,而且各該其他運算裝置可經由一記憶體組織架構存取該記憶體。
- 如請求項1之運算裝置,其更包含有: 一管理引擎, 其中該至少一個韌體卷區遭受更新, 其中該管理引擎接收指出該至少一個韌體卷區遭受更新之一訊息, 其中該韌體載入引擎重新載入該遭受更新之至少一個韌體卷區。
- 如請求項6之運算裝置,再者,其中該管理引擎進一步設定該至少一個韌體卷區之一位置。
- 一種儲存韌體指令之非暫時性機器可讀儲存媒體,該等韌體指令若藉由一裝置之至少一個處理器執行,則令該裝置: 啟動該裝置使該裝置處於能夠存取對複數個其他運算裝置可用且位於該裝置遠端處之記憶體的一狀態, 其中該記憶體包括有複數個韌體卷區; 基於該裝置之複數個硬體組件選擇該等韌體卷區其中至少一者;以及 載入該等經選擇之韌體卷區。
- 如請求項8之非暫時性機器可讀儲存媒體,其更包含有韌體指令,該等韌體指令若藉由該至少一個處理器執行,則令該裝置: 偵檢該等硬體組件; 將該等硬體組件之一第一者用之該等韌體卷區之一第一者映射至該裝置之一非依電性記憶體。
- 如請求項8之非暫時性機器可讀儲存媒體,其更包含有韌體指令,該等韌體指令若藉由該至少一個處理器執行,則令該裝置: 判定包括有該硬體組件用之複數個設定值的一設定檔, 其中該至少一個韌體卷區之選擇乃進一步基於該設定檔。
- 如請求項8之非暫時性機器可讀儲存媒體,其更包含有韌體指令,該等韌體指令若藉由該至少一個處理器執行,則令該裝置: 判定與該等硬體組件其中一者相關聯之一特許, 其中該至少一個韌體卷區其中一者之選擇乃基於該特許。
- 如請求項9之非暫時性機器可讀儲存媒體,其更包含有韌體指令,該等韌體指令若藉由該至少一個處理器執行,則令該裝置: 接收該至少一個韌體卷區用之一遭受更新之韌體卷區之一位置; 使用該遭受更新之韌體卷區代替該至少一個韌體卷區。
- 一種系統,其包含有: 複數個節點; 可由該複數個節點經由組織架構附接記憶體存取之複數個韌體卷區, 其中該等節點其中一者包括有複數個硬體組件, 其中該等韌體卷區乃位於該一個節點外部; 其中該等韌體卷區之一子集乃基於該等硬體組件及一設定檔經選擇以載入供該一個節點用; 其中該一個節點: 執行供該等硬體組件用之該等經選擇之韌體卷區。
- 如請求項13之系統,其中該等經選擇之韌體卷區其中至少一者乃基於一特許經進一步選擇供該等硬體組件其中一者使用。
- 如請求項13之系統,其中該等節點之一第二者包括有與該一個節點呈同一硬體組態之複數個其他硬體組件,其中第二複數個韌體卷區乃基於一第二設定檔經選擇供該等其他硬體組件用,其中該第二者節點進一步: 執行該等第二經選擇之韌體卷區, 其中該等第二經選擇之韌體卷區與該等經選擇之韌體卷區不同。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2015/051623 WO2017052528A1 (en) | 2015-09-23 | 2015-09-23 | Selecting and loading firmware volumes |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201721412A true TW201721412A (zh) | 2017-06-16 |
Family
ID=58386857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105130583A TW201721412A (zh) | 2015-09-23 | 2016-09-22 | 選擇及載入韌體卷區之技術 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10579801B2 (zh) |
TW (1) | TW201721412A (zh) |
WO (1) | WO2017052528A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6701863B2 (ja) * | 2016-03-24 | 2020-05-27 | 日本電気株式会社 | ファームウェア配信システム、配信装置、ファームウェア配信方法およびファームウェア配信プログラム |
US10664598B1 (en) * | 2016-08-15 | 2020-05-26 | American Megatrends International, Llc | Firmware security patch deployment |
US10185571B2 (en) * | 2017-06-08 | 2019-01-22 | Vmware, Inc. | Intelligent UEFI run-time services address space management |
US20200004522A1 (en) * | 2018-06-27 | 2020-01-02 | Hewlett Packard Enterprise Development Lp | Selective download of a portion of a firmware bundle |
US10990411B2 (en) * | 2019-03-25 | 2021-04-27 | Dell Products L.P. | System and method to install firmware volumes from NVMe boot partition |
US11288226B1 (en) * | 2020-10-21 | 2022-03-29 | Pensando Systems, Inc. | Methods and systems for address based transaction filters for on-chip communications fabrics |
US11989551B2 (en) * | 2021-03-18 | 2024-05-21 | Quanta Computer Inc. | Modular firmware composition |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7003656B2 (en) * | 2002-06-13 | 2006-02-21 | Hewlett-Packard Development Company, L.P. | Automatic selection of firmware for a computer that allows a plurality of process types |
US7234051B2 (en) * | 2002-08-09 | 2007-06-19 | Intel Corporation | Method and apparatus for booting from a selection of multiple boot images |
US7363484B2 (en) * | 2003-09-15 | 2008-04-22 | Hewlett-Packard Development Company, L.P. | Apparatus and method for selectively mapping proper boot image to processors of heterogeneous computer systems |
US20050114687A1 (en) | 2003-11-21 | 2005-05-26 | Zimmer Vincent J. | Methods and apparatus to provide protection for firmware resources |
US7577832B2 (en) * | 2004-12-14 | 2009-08-18 | Hewlett-Packard Development Company, L.P. | Apparatus and method for booting a system |
US7617391B2 (en) * | 2005-12-15 | 2009-11-10 | Lsi Logic Corporation | Method and apparatus for dynamically selecting one of multiple firmware images for booting an I/O controller |
US8972546B2 (en) * | 2006-08-14 | 2015-03-03 | International Business Machines Corporation | Apparatus system and method for booting a server from a storage system |
US9112891B2 (en) | 2007-02-02 | 2015-08-18 | Sharp Laboratories Of America, Inc. | Remote firmware management for electronic devices |
US8589302B2 (en) * | 2009-11-30 | 2013-11-19 | Intel Corporation | Automated modular and secure boot firmware update |
US8370618B1 (en) * | 2010-06-16 | 2013-02-05 | American Megatrends, Inc. | Multiple platform support in computer system firmware |
US8856724B2 (en) | 2011-06-20 | 2014-10-07 | Ebay Inc. | Systems and methods for incremental software development |
WO2013147870A1 (en) * | 2012-03-30 | 2013-10-03 | Hewlett-Packard Development Company, L.P. | License management of firmware-controllable features in computer systems |
US8930936B2 (en) | 2012-11-06 | 2015-01-06 | International Business Machines Corporation | Loading remote binaries onto a write-protected device |
US9880859B2 (en) * | 2014-03-26 | 2018-01-30 | Intel Corporation | Boot image discovery and delivery |
CN104133678B (zh) | 2014-07-22 | 2018-01-05 | 中国石油天然气股份有限公司 | 构建、运行交互地震解释系统的方法及装置 |
-
2015
- 2015-09-23 US US15/754,848 patent/US10579801B2/en active Active
- 2015-09-23 WO PCT/US2015/051623 patent/WO2017052528A1/en active Application Filing
-
2016
- 2016-09-22 TW TW105130583A patent/TW201721412A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20180253555A1 (en) | 2018-09-06 |
US10579801B2 (en) | 2020-03-03 |
WO2017052528A1 (en) | 2017-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201721412A (zh) | 選擇及載入韌體卷區之技術 | |
KR101963912B1 (ko) | 라이브러리 운영체제들과의 애플리케이션 호환성을 가능하게 하는 기법 | |
US9201632B2 (en) | Systems and methods for incremental software development | |
US9626181B2 (en) | Systems and methods to securely inject binary images and code into firmware | |
US9507604B2 (en) | Boot method and boot system | |
CN104850762B (zh) | 防止计算机的动作不良的方法、计算机程序以及计算机 | |
CN102298529B (zh) | 为系统提供硅集成代码 | |
US20140033189A1 (en) | Providing virtual appliance system firmware images | |
TWI521428B (zh) | 用於可延伸韌體抽取之方法及相關計算平台 | |
CN103942065B (zh) | 用于更新固件兼容性数据的方法和系统 | |
JP5333579B2 (ja) | 管理サーバ、ブートサーバ、ネットワークブートシステムおよびネットワークブート方法 | |
US10929149B2 (en) | Method and system for updating firmware | |
CN101454765A (zh) | 用补丁等来更新虚拟机 | |
US10305731B2 (en) | System and method for provisioning cloud services across heterogeneous environments using partitioned provisioning instructions stored on a configuration management server | |
JP6089065B2 (ja) | アップデート方法及びコンピュータシステム | |
US20160011879A1 (en) | Preconfiguring hardware and speeding up server discovery prior to bios boot | |
US10338910B2 (en) | Multi-tenant upgrading | |
WO2016062146A1 (zh) | 序列号信息的更新方法、装置及终端 | |
JP7410268B2 (ja) | コンテナ・ベースの仮想化システムに関する方法 | |
CN111782335A (zh) | 通过进程内操作系统的扩展应用机制 | |
US20150355997A1 (en) | Server-Platform Simulation Service | |
KR20070083138A (ko) | 임베디드 시스템 및 임베디드 시스템의 펌웨어 업데이트방법 | |
CN112148377A (zh) | EFI Shell环境下防止SSD异常掉电的方法和装置 | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ | |
TWI777636B (zh) | 組成模組化韌體的方法、裝置及電腦程式產品 |