TW202338602A - 計算系統、電腦實施方法及電腦程式產品 - Google Patents

計算系統、電腦實施方法及電腦程式產品 Download PDF

Info

Publication number
TW202338602A
TW202338602A TW111124010A TW111124010A TW202338602A TW 202338602 A TW202338602 A TW 202338602A TW 111124010 A TW111124010 A TW 111124010A TW 111124010 A TW111124010 A TW 111124010A TW 202338602 A TW202338602 A TW 202338602A
Authority
TW
Taiwan
Prior art keywords
bmc
bios
mentioned
volatile memory
boot
Prior art date
Application number
TW111124010A
Other languages
English (en)
Other versions
TWI840849B (zh
Inventor
洪明宏
朱書銘
Original Assignee
廣達電腦股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 廣達電腦股份有限公司 filed Critical 廣達電腦股份有限公司
Publication of TW202338602A publication Critical patent/TW202338602A/zh
Application granted granted Critical
Publication of TWI840849B publication Critical patent/TWI840849B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

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

本發明提供一種計算系統。計算系統包含被配置以執行基本輸入/輸出系統(BIOS)的中央處理單元,以及作業系統(OS)。計算系統更包含基板管理控制器(BMC),以及耦接CPU及BMC的第一啟動非揮發性記憶體。第一啟動非揮發性記憶體的第一部份以開放式標準儲存系統設定及組態,使得BIOS及BMC可以基於第一啟動非揮發性記憶體的第一部份的暫時所有權存取系統設定。

Description

計算系統、電腦實施方法及電腦程式產品
本發明是關於計算系統中的啟動管理(boot management),特別是關於改進基板管理控制器(baseboard management controller (BMC))及基本輸入/輸出系統(basic input/output system (BIOS))之間的通訊及記憶體共用。
計算系統(例如:伺服器、桌上型電腦、筆記型電腦等) 在不同的情況下被用以實現廣泛的功能。一些計算系統依賴電池運作,並因此需要低功率操作以節省電池的電力。另一方面,一些計算系統可能接在電源插座上,這種情況下低功率操作就不如計算效能重要。許多計算系統即使接在電源插座上依然在效能及功率消耗上取得平衡。無論使用的是哪種類型的計算系統,計算系統通常在開機(power-up)時初始化。初始化計算系統的流程被稱為「啟動(booting)」。每個計算系統可以根據計算系統中特定的硬體元件而具有不同的啟動順序(sequence)或程序(procedure)。計算系統通常將啟動順序或程序儲存在非揮發性記憶體模組(non-volatile memory module)中。計算系統中的控制器(controller)及處理器(processor)可以具有不同的專用(dedicated)非揮發性記憶體模組,以儲存涉及控制器及處理器的啟動順序。將指令分散到控制器及處理器的分離的非揮發性記憶體模組會導致計算系統中不同的控制器及處理器之間的通訊(communication)及組態(configuration)未達最佳化。本揭露提供一種系統及方法,用以解決有關於在參與啟動計算系統的控制器及處理器之間傳送設定的問題。
實施例一詞及相似的用語(例如執行、配置、方面、範例及選項)旨在廣義上指本揭露及以下請求項的所有標的。包含這些用語的聲明應理解為不被限制於這裡描述的標的,或是不被用以限制以下請求項的意義或範圍。本揭露在此涵蓋的實施例由以下請求項定義,而不是本發明內容。本發明內容是一個揭露內容各面向的高層次概述,及介紹一些概念,上述概念會在實施方式中有進一步的描述。本發明內容不用以識別請求項標的的關鍵或必要特徵。本發明內容也不應單獨使用來決定請求項標的的範圍。標的內容應該以參考本揭露整個詳細說明的適當部份、任何或全部圖示,及每個請求項的方式理解。
本發明的一些實施例有關於計算系統,計算系統包含一中央處理單元(central processing unit (CPU)), CPU被配置以執行一基本輸入/輸出系統(BIOS)及一作業系統(operating system (OS))。計算系統更包含一基板管理控制器(BMC)及一第一啟動非揮發性記憶體,上述第一啟動非揮發性記憶體耦接CPU及BMC。第一啟動非揮發性記憶體的一第一部份以一開放式標準儲存多個系統設定及一組態,使得BIOS及BMC可以基於第一啟動非揮發性記憶體的第一部份的一暫時所有權(temporal ownership)存取(access)系統設定。
在一些實施例中,上述計算系統更包含一多工器(multiplexer (MUX)),耦接第一啟動非揮發性記憶體、BMC,以及CPU。MUX從BMC接收一控制訊號,以在CPU及BMC之間切換存取。在一些實施例中,第一啟動非揮發性記憶體為序列週邊介面快閃記憶體(serial peripheral interface (SPI) flash)。在一些實施例中, BIOS被設計作為第一啟動非揮發性記憶體的第一部份的預設(default)擁有者(owner)。在一些實施方式中,BMC從BIOS請求暫時所有權,以存取第一啟動非揮發性記憶體的第一部份。在一些實施方式中,第一啟動非揮發性記憶體的第一部份包含一唯讀(read-only(RO))部份及一可讀取-可寫入(readable-writable)部份。唯讀部份及可讀取-可寫入部份都可以在執行時間(runtime)內由BMC寫入,但是只有可讀取-可寫入部份可以在執行時間內由BIOS寫入。在一些實施例中,計算系統更包含耦接BMC的一第二啟動非揮發性記憶體。第二啟動非揮發性記憶體儲存多個備份系統設定,上述備份系統設定是儲存在第一啟動非揮發性記憶體的第一部份中的系統設定的備份(backup)。
在一些實施例中,開放式標準為重要產品資料(vital product data (VPD))或JavaScript物件表示法(JavaScript Object Notation (JSON))。在一些實施例中, BMC被設計作為第一啟動非揮發性記憶體的第一部份的預設擁有者。在一些實施例中, OS無法帶內(in-band)存取第一啟動非揮發性記憶體的第一部份。在一些實施例中,OS根據一智慧平台管理介面(intelligent platform management interface (IPMI))與BMC通訊,以存取第一啟動非揮發性記憶體。在一些實施例中, BIOS從BMC請求暫時所有權,以存取第一啟動非揮發性記憶體的第一部份。
本發明的一些實施例有關於電腦實施方法,此方法包含使用多個系統設定啟動一計算系統的一基板管理控制器(BMC),上述系統設定儲存以一開放標準儲存在一第一啟動非揮發性記憶體的一第一部份中。第一啟動非揮發性記憶體耦接計算系統的BMC及一中央處理單元(CPU)。上述方法更包含在BMC接收一開機(power-on)訊號。上述方法更包含由CPU從第一啟動非揮發性記憶體的第一部份啟動一基本輸入/輸出系統(BIOS)。上述方法更包含由BIOS通知BMC系統設定的任何改變。上述方法更包含從BIOS將第一啟動非揮發性記憶體的第一部份的上述暫時所有權切換至BMC,使得BMC能夠以開放標準取得系統設定的改變。
在一些實施例中, BMC向一多工器(MUX)提供一控制訊號, MUX耦接第一啟動非揮發性記憶體、BMC,以及CPU。控制訊號將第一啟動非揮發性記憶體的第一部份的暫時所有權從BIOS切換至BMC。在一些實施方式中,第一啟動非揮發性記憶體為序列週邊介面(SPI)快閃記憶體。在一些實施方式中, BIOS被設計作為第一啟動非揮發性記憶體的第一部份的預設擁有者。在一些實施方式中, BMC從BIOS請求暫時所有權,以存取第一啟動非揮發性記憶體的第一部份。在一些實施方式中,上述方法更包含由BIOS啟動計算系統的一作業系統(OS)。在一些實施方式中, OS在BMC將第一啟動非揮發性記憶體的暫時所有權釋出(release)至BIOS後被啟動。
本發明的一些實施例有關於電腦程式產品。上述電腦程式產品可以有形地(tangibly)在非暫態機器可讀儲存媒體中執行,上述非暫態機器可讀儲存媒體包含多個指令,上述指令被配置以致使一資料處理裝置執行多個操作。上述操作包含使用多個系統設定啟動一計算系統的一基板管理控制器(BMC),上述系統設定以一開放式標準儲存在一第一啟動非揮發性記憶體的一第一部份中。第一啟動非揮發性記憶體耦接計算系統的BMC及一中央處理單元(CPU)。上述操作更包含在BMC接收一開機訊號。上述操作更包含由CPU從第一啟動非揮發性記憶體的第一部份啟動一基本輸入/輸出系統(BIOS)。上述操作更包含由BIOS通知BMC系統設定的任何改變。上述操作更包含從BIOS將第一啟動非揮發性記憶體的第一部份的上述暫時所有權切換至BMC,使得BMC能夠以開放標準取得系統設定的改變。
以上摘要的目的並不是要代表每個實施例或本揭露的每個面向。應該說,以上摘要僅提供在此列出的一些新穎的面向及特徵的一個例子。以上特徵及優點,以及本揭露的其它特徵及優點,藉由接下來代表性實施例及執行本發明的模式的詳細描述,並和附帶的圖示及請求項連結,將會十分清楚。本揭露額外的面向在基於多個實施方式的詳細說明並參考了圖式以後,對於本領域具有通常知識的技術人員來說將會十分清楚,對於圖式的簡要說明在以下提供。
在計算系統中,處理器(例如中央處理單元(CPU))通常參與啟動基本輸入/輸出系統(BIOS),基板管理控制器(BMC)通常參與啟動BMC。因為BIOS及BMC的啟動順序(booting sequence)彼此獨立,所以BMC及BIOS通常同時啟動以減少有關於初始化計算系統的延遲。因此,計算系統配備了兩個非揮發性記憶體模組(例如兩個快閃記憶體模組),以便將BIOS的啟動指令儲存在第一非揮發性記憶體模組中,將BMC的啟動指令儲存在第二非揮發性記憶體模組中。BMC及CPU可以存取它們單獨的(individual)非揮發性記憶體模組。第一及第二非揮發性記憶體模組可以儲存能夠同時應用於CPU及BMC的設定。舉例來說,儲存BIOS的啟動指令的第一非揮發性記憶體模組可能包含BMC所需要的設定,儲存BMC的啟動指令的第二非揮發性記憶體模組可能包含CPU所需要的設定。在傳統的計算系統中,CPU及BMC都無法輕易地存取彼此的非揮發性記憶體模組。BMC及CPU通常需要彼此無法識別的不同的儲存格式(format)。本發明的實施例提供允許BMC或CPU中任一者共用(share)儲存在第一非揮發性記憶體模組或第二非揮發性記憶體模組中任一者上的設定及組態(configuration)的方法及系統。
在此參考附帶的圖式描述多個實施方式,在上述圖式中,使用相似的參考數字來表示相似或相等的元素。上述圖式不一定是按照比例繪製的,而且僅供示意說明本揭露的面向及特徵。大量具體的細節、關係及方法被闡述以提供本揭露特定面向及特徵的完整理解,然而在相關技術領域中的通常知識者將會理解這些面向及特徵可以在缺少一或多個上述具體細節、以其他關係或使用別的方法的情況下實踐。在一些例子中,為了說明的目的眾所皆知的結構或操作並沒有詳細的表示。在此揭露的多個實施方式並不一定被限制於動作或事件示意說明的順序,一些動作可能以不同的順序且/或同時與其他動作或事件發生。進一步來說,並非所有示意說明的動作都是實施本揭露的特定面向及特徵所必須的。
為了便於詳細說明,在適當的地方除非特別聲明,單數包含複數,且反之亦然。「包含」這個詞意思是「包含但不限於」。此外,用來表示近似的詞,例如「大約」、「幾乎」、「大致上」、「大概」及相似的詞在此可以被用以代表「在」、「附近」、「幾乎在」、「在3-5%內的」、「在可接受的製造容忍範圍內」或其中任何邏輯上的組合。同樣的,「垂直」或「水平」這些詞分別額外包含「在垂直或水平方向的3-5%內」。此外,表示方向的詞,例如「頂端」、「底部」、「左」、「右」、「以上」及「以下」意思是與參考圖示中描述的等效方向有關;應該以被參考的物體或元素為基準,根據上下文理解方位,例如以一個物體或元素通常被使用的位置為基準;或是根據在此的其他描述。
參考第1圖,第1圖是計算系統100的方塊圖。計算系統100的範例包含伺服器、筆記型電腦、桌上型電腦、智慧型手機等。計算系統100包含處理器102、圖像處理單元(graphics processing unit (GPU))/視訊介面(video interface)108、晶片組(chipset)104、隨機存取記憶體(random access memory (RAM))模組110、輸入/輸出(input/output(I/O))介面114、硬碟(hard disk(HD))介面112、BIOS唯讀記憶體(BIOS read only memory (ROM))116、BMC 118,以及BMC唯讀記憶體(ROM) 120。第1圖中的每個元件都可以提供在計算系統100的電路板上。上述電路板可以為印刷電路板(printed circuit board (PCB)),上述印刷電路板作為所有元件和連接計算系統100的外部週邊元件的通訊骨幹。在一些範例中,上述電路板為包含銅連接走線(connecting trace)及銅板(plane)的主機板,上述銅連接走線及銅板用以將電源及訊號隔離。
雖然第1圖中僅示出一個處理器102,處理器102可以為一或多個處理器(例如一個處理器、兩個處理器、三個處理器等)。處理器102可以包含CPU及GPU。在一些實施方式中,GPU與CPU分離,並且經由一或多個I/O介面114或一或多個GPU/視訊介面108與CPU通訊。舉例來說,I/O介面114包含用以接收GPU的快速週邊組件互連介面(peripheral component interconnect express (PCIe))插槽,CPU可以經由PCIe匯流排標準管理GPU的初始化及操作。GPU耦接視訊介面,視訊介面使得資訊能夠在顯示器或螢幕上觀看。
RAM模組110可以包含雙倍資料速率同步動態隨機存取記憶體(double data rate synchronous dynamic random access memory (DDR SDRAM))的雙列直插式記憶體模組(dual inline memory modules (DIMMs))。RAM模組110為高速揮發性記憶體模組(high speed volatile memory module),作為處理器102的主記憶體(main memory)。當處理器102的快取記憶體(cache memory)或暫存器(register)記憶體不包含處理器102所需的資訊時,就會使用處理器102的上述主記憶體。RAM模組110相較於處理器102的快取記憶體或暫存器記憶體具有更高的容量(capacity)。
BIOS ROM 116及BMC ROM 120用以使計算系統100的元件的初始化更順利。BIOS ROM 116可以為BIOS非揮發性記憶體(例如快閃記憶體(flash memory)),其中包含用於處理器102(例如CPU)的指令、設定,及/或組態,這些指令、設定,及/或組態用以啟動BIOS程式,上述BIOS程式初始化計算系統100的元件。同樣地,BMC ROM 120可以為非揮發性記憶體,其中包含用於BMC 118的指令、設定,及/或組態,以初始化計算系統100。在一些實施方式中,BIOS ROM 116及BMC ROM 120為串列週邊介面快閃記憶體(serial peripheral interface (SPI) flash memory)。
BIOS ROM 116包含BIOS映像(image)。BIOS映像為包含指令的組態檔(configuration file),上述指令用於計算系統100的基本設定。BIOS映像包含開機自我檢測(power-on self-test (POST))程式、自舉載入器(bootstrap loader)程式、載入BIOS驅動器(load BIOS driver)程式,及/或BIOS組態設定(BIOS configuration setup)。POST程式為電腦硬體的初始測試(initial test),以確保在載入計算系統100的作業系統之前沒有錯誤存在。自舉載入器程式在計算系統100上定位(locate)作業系統,並且在一些實施方式中,一旦BIOS設置完成,自舉載入器程式可以將對於計算系統的控制轉移給作業系統。載入BIOS驅動器程式涉及執行低層級的(low-level)驅動器,以在計算系統100的一些硬體元件上提供基本操作控制。在一些情況下,這些硬體元件包含週邊裝置,例如滑鼠、鍵盤,或其他輸入裝置。BIOS組態設定為允許配置(configure)硬體設定(例如資料及時間)的程式。BMC ROM 120包含BMC映像。BMC映像包含嵌入式(embedded)作業系統、管理程式(management function)的應用程式、有關儲存BMC紀錄的空間組態(space configurations concerning saving BMC log),以及組態資料(configuration data)等。BMC映像有助於啟動BMC 118。
BMC 118為用以管理計算系統的操作的特殊化(specialized)控制器(或處理器)。在一些實施方式中,BMC 118能夠遠端監控計算系統100,並且具有連接至計算系統100的不同元件的通訊通道。舉例來說,BMC 118可以允許遠端監控風扇速度、溫度感測器、硬碟錯誤、電源供應錯誤、作業系統錯誤等。 BMC 118可以包含能夠幫助BMC 118處理機器可讀指令的內部暫時(internal temporary)快取記憶體。範例的BMC包含信驊科技(ASPEED)的AST2300、AST2400、AST2500、AST2600等。
在一些實施方式中,BMC 118連接多個通用輸入/輸出(general purpose input/output (GPIO))接腳(pin)。舉例來說,BMC 118可以連接用於系統重置(reset)(例如重置計算系統100的輸入)的第一GPIO接腳。BMC 118可以連接用於晶片組重置(例如來自BIOS映像的輸出,用於重置並且指示啟動)的第二GPIO接腳。BMC 118可以連接用於開機(即,用於開啟計算系統100的輸入接腳)的第三GPIO接腳。BMC 118可以連接用於電源控制器的第四GPIO接腳,以管理供應到計算系統100的不同部份的電源。藉由路由(routing)開機或系統重置訊號使開機或系統重置訊號通過BMC 118,BMC 118可以捕捉這些輸入,並且在計算系統100開機或重置時使用這些輸入來控制計算系統100的行為。
一或多個I/O介面114可以包含序列先進技術附接(serial advanced technology attachment (SATA))埠,以將匯流排轉接器(bus adapter)連接至儲存裝置,儲存裝置例如硬碟機(hard disk drive)、固態硬碟(solid state drive)、光碟(optical drive)等。一或多個I/O介面114可以包含更多用以接收卡(card)的PCI或PCIe埠,接收卡例如乙太網路卡(Ethernet card)、Wi-Fi卡、藍牙(Bluetooth)卡、音效卡等。I/O介面114可以包含通用序列匯流排(universal serial bus (USB))埠以連接週邊裝置或大量儲存裝置(mass storage device)。
晶片組104為直接連接至處理器的晶片,提供對於元件的存取,上述元件相較於連接處理器102的其他元件使用較慢的速度通訊(例如GPU/視訊介面108及RAM模組110)。舉例來說,晶片組104可以連接HD介面112、I/O介面114、BIOS ROM 116、BMC 118等。HD介面112可以包含序列先進技術附接(SATA)、整合驅動電子(integrated drive electronics (IDE))、週邊組件互連(peripheral component interconnect (PCI))介面等。 雖然以分開的元件表示,在一些實施方式中,計算系統100包含提供處理器102及晶片組104及/或I/O介面114的功能的系統晶片(system on a chip)。
參考第2A圖,第2A圖為本發明實施例之簡化的方塊圖,展示了在計算系統200a中用以存取非揮發性記憶體模組的通訊路徑(communication path)中的元件。計算系統200a與計算系統100(第1圖)相似或相同。計算系統200a包含類似處理器102的CPU 202。計算系統200a包含相似於晶片組104的南橋(southbridge)晶片204。計算系統200a包含BMC 118及非揮發性記憶體模組,非揮發性記憶體模組以BIOS ROM 116及BMC ROM 120表示。BIOS ROM 116及BMC ROM 120可以為快閃ROM。計算系統200a包含多工器(multiplexer (MUX))206,以允許BMC 118及CPU 202存取BIOS ROM 116。CPU 202可以與BMC 118通訊,以便對BMC ROM 120進行特定的(specific)存取。SPI介面及/或增強型SPI(enhanced SPI (eSPI))介面可以作為存取非揮發性記憶體模組的通訊介面使用。在一些實施方式中,低接腳數(low pin count (LPC))介面可以被用於BMC 118及南橋晶片204之間的通訊上。
參考第2B圖,第2B圖為本發明實施例之簡化的方塊圖,展示了在計算系統200b中用以存取非揮發性記憶體模組的通訊路徑的元件。與第2A圖相比第2B圖不包含MUX 206, CPU 202以BMC 118作為管道(conduit)存取BIOS ROM 116。
在計算系統(例如計算系統100、200a、200b)的啟動處理的開機自我檢測(POST)階段中,主機韌體(例如BIOS)將系統組態(configuration)及目錄清單(inventory)傳送到BMC 118。  BIOS在此指儲存在BIOS ROM 116中的程式,上述程式在CPU 202上執行以初始化計算系統200a。藉由讓BMC 118從主機韌體接收系統組態及目錄清單,計算系統200a或200b的使用者可以遠端取得系統組態及目錄清單。遠端存取系統組態及目錄清單指示使用者能夠遠端配置系統設定。在執行時間內,如果偵測到任何錯誤,BIOS可以將系統事件日誌(system event log (SEL))記錄到BMC ROM 120中。為了執行此任務,BIOS依靠低速介面或協議(protocol)(例如在eSPI或LPC介面上執行的智慧平台管理介面(Intelligent Platform Management Interface (IPMI)) 鍵盤控制器規格(Keyboard Control Style (KCS))),以與BMC 118通訊。在BIOS及BMC之間依賴低速介面的此類通訊會花費時間及影響啟動時間,並因此負面地影響計算系統200a或200b的效能。
第3圖為方塊圖,用以示意說明先前技術中計算系統的應用層架構(application layer architecture)300。第3圖也說明使應用層架構300的元件之間能夠進行通訊的應用程式介面(programming interface (API))。應用層架構300包含作業系統(OS)302、BIOS 304,以及BMC 118。OS 302及BIOS 304是由處理器(例如第1圖的處理器102或第2A及2B圖的CPU 202)執行的環境。BIOS 304是通常在計算系統啟動的一開始時會被載入的環境,OS 302是通常在BIOS 304完成其任務後會被載入的環境,因為BIOS 304完成任務代表計算系統的硬體元件適當地運作,能夠載入OS 302。
在傳統的系統中,BIOS 304管理聯合可延伸韌體介面(Unified Extensible Firmware Interface (UEFI))非揮發性隨機存取記憶體(non-volatile random access memory (NVRAM))320。UEFI NVRAM 320儲存設定及組態,與第2A及2B圖的BIOS ROM 116相同或相似。OS 302可以存取UEFI NVRAM 320,以經由在OS 302上執行的UEFI執行時間API 324做出修改,UEFI執行時間API 324與執行在BIOS 304上的UEFI執行時間服務322通訊。BIOS 304可以使用在BIOS 304上執行的IPMI/Redfish API 318與BMC 118通訊,IPMI/Redfish API 318與執行在BMC 118上的IPMI/Redfish API 316通訊。同樣地,OS 302可以經由執行在OS 302上的帶外(out-of-band (OOB))通訊API 310,通過IPMI/Redfish帶外(OOB)介面314與BMC 118通訊。OS 302也可以使用帶內(in-band)通訊API 312與BMC 118通訊。
第4圖示意說明先前技術的應用層架構300的問題。在第3、4圖中示意的不同API代表在BIOS 304及BMC 118之間,以及OS 302及BMC 118之間通訊的訊息需要轉換。當BMC 118想要存取在UEFI NVRAM 320中的設定時,BMC 118無法理解UEFI NVRAM 320的格式。也就是說,BMC 118並沒有類似於執行在BMC 118上的非揮發性(NV)儲存API 326的合適的API,能夠用來直接地存取UEFI NVRAM 320。BIOS 304需要為IPMI/Redfish API 318翻譯儲存在UEFI NVRAM 320中的設定及組態,以將設定及組態傳送至BMC 118。由於BIOS 304需要為BMC 118執行翻譯,總共的啟動時間會增加大約10秒。
在傳統的系統中,BMC 118無法直接地寫入UEFI NVRAM 320是一個問題。舉例來說,在關機狀態下BIOS ROM 116是由BMC 118管理,BMC 118需要讀取與寫入存取BIOS ROM 116包含UEFI NVRAM 320區域的部份。然而,因為BMC 118無法解讀用於UEFI的變數結構及使用的格式,BMC 118無法依照需求編輯UEFI NVRAM 320區域。此外,BMC 118無法理解BIOS ROM 116的UEFI NVRAM 320區域,代表當UEFI NVRAM 320區域故障時,為了復原(recover)BIOS ROM 116的UEFI NVRAM 320區域,全部的BIOS ROM 116都需要更新。只因為UEFI NVRAM 320區域故障就導致BIOS ROM 116無法使用是低效的,且會增加計算系統的停機時間(downtime)。
一些工業標準(例如Redfish)替代性地引入網路介面卡(network interface card (NIC))作為主機介面。使用NIC作為主機介面比KCS更快。然而,在每個啟動環節(session)同步系統組態及目錄清單依然是冗長的,並且需要BIOS 304及BMC 118之間的通訊及翻譯。舉例來說,Redfish只有在系統記憶體(例如第1圖的RAM模組110)初始化並且處在準備就緒狀態(ready state)後才可以使用。在記憶體初始化之前,因為一些晶片組設定是記憶體及/或晶片組的參數(parameter),可能會需要參考這些晶片組設定(例如第2A、2B圖的南橋晶片204的設定)。因此,在系統組態及目錄清單的同步完成後,計算系統會需要執行重新啟動以使用新的設定。重新啟動的需要增加計算系統的啟動時間,且/或在執行時間內減少OS 302的效能。
本揭露的實施例採用字串驅動的(string-driven)開放式標準介面(例如重要產品資料(vital product data (VPD)及/或JavaScript物件表示法(JavaScript Object Notation (JSON))),將系統組態及目錄清單以標準人類可讀(standard human-readable) 格式儲存。第5圖為本發明實施例之計算系統(例如計算系統100)的應用層架構500的方塊圖。第5圖也說明使應用層架構500的元件可以互相通訊的API。應用層架構500包含OS 502、BIOS 504,以及BMC 506。
OS 502、BIOS 504,以及BMC 506是執行在處理器102及BMC 118上的程式。這與第3、4圖中對應的部份不同, 在第5圖中,BIOS 504使用VPD 530, BMC 506使用VPD 532,並且BMC 506及OS 502分別包含VPD API 536及VPD API 534,以直接地存取BIOS 504的VPD 530。藉由使用VPD 530及VPD 532,介面及格式為開放式標準,並且BIOS 504及BMC 506可以使用相同的語意(semantic)來取得、設定,及共用資訊,而不需要和第3、4圖的應用層架構300一樣來回傳遞資訊。在此使用的VPD只是一個範例,也可以使用其他的開放式格式。在一個範例中,開放式的韌體coreboot可以讀取以下的VPD條目(entry),以設定(configure)IPMI故障彈性啟動(fault resilient booting(FRB))等級2。 用於設定IPMI FRB2參數的VPD範例條目
  "coreboot_options": {         "frb2_countdown": "9000",         "frb2_action": "0" }
如第5圖所示,VPD 530及VPD 532的引入並不是為了取代原本在BIOS 504及BMC 506之間的通訊介面。IPMI或Redfish依然可以經由IPMI/Redfish API 316、318使用以進行通訊。因為VPD API 536允許直接存取BIOS 504的VPD 530,所以可以最小化BIOS 504及BMC 506在每個啟動環節的通訊。通訊的最小化是顯著的,尤其是當系統設定、組態,以及目錄清單在前一個啟動環節與當前的啟動環節之間並沒有改變的時候。如果在啟動環節之間有發生改變,BMC 506只需要取得(retrieve)修改過的系統設定、組態,以及目錄清單。如此一來,應用層架構500相較於應用層架構300可以減少啟動時間。
應用層架構500與第3、4圖的應用層架構300相比提供了通訊上的優勢。應用層架構500的BIOS 504及BMC 506使用相同的開放式標準介面(例如VPD)儲存系統組態及目錄清單。系統組態及目錄清單可以儲存在VPD 530中,使得VPD 530在BIOS 504及BMC 506間共用。VPD 530可以位在BIOS ROM 116 (第1圖)上,因此允許BMC 118(第1圖)直接地寫入BIOS ROM 116。從應用層的觀點來看,BMC 506的程式直接地存取BIOS ROM 116的VPD 530區域,可以限制或消除BIOS 504及BMC 506之間經由IPMI/Redfish API 316、318進行不必要的通訊。因為VPD 530可以包含由BMC 506部署(deploy)的設定,BIOS 504可以從VPD 530只讀取被部署的設定,並相應地設定計算系統100(第1圖)而不需要執行重新啟動。
使用相似的方法,當使用者遠端修改任何系統設定時,BMC 506可以在計算系統100(第1圖) 直接地將這些設定更新至VPD 530,或是可以在計算系統100(第1圖)在關機狀態時將這些設定更新至VPD 530。重新啟動後,BIOS 504可以使用VPD 530中的最新設定來設定計算系統100(第1圖)。此外,BMC 506可以直接從VPD 530讀取系統目錄清單,而不需要經由例如KCS的通訊介面。
此外為了達到其他好處,VPD 532可以位在BMC ROM 120(第1圖)上。VPD 532可以作為儲存在VPD 530中的一些或全部內容的備份儲存使用。透過這種方式,當VPD 530損壞(corrupt)時(例如當VPD 530正在被寫入時經歷電源壓降(power drop)),VPD 530可以輕易且快速地從VPD 532復原。雖然在此描述了使用VPD 532作為備份(backup),在其他實施方式中可以使用VPD 530儲存損壞的VPD 532的內容。
如第5圖所示,在一些實施方式中VPD 530及VPD 532並沒有取代UEFI NVRAM 320。VPD 530的功能是使BIOS 504及BMC 506之間能夠共用儲存,並因此在存取系統設定及組態時能夠使用相同的語意。不取代UEFI NVRAM 320可以提供一些傳統(legacy)支援。在一些實施方式中,UEFI NVRAM 320可以由VPD 530取代。為了進行支援,可以為UEFI執行時間服務提供特定剖析器(ad-hoc parser),以解碼(decode)UEFI及VPD之間的格式。當BIOS 504不支援UEFI時,UEFI執行時間服務及UEFI NVRAM 320不是必須的,VPD 530可以被用以達成任何歸屬(attribute)UEFI NVRAM 320的功能(function)。
參考第6圖,第6圖示意說明本發明實施例之VPD 600的區域。VPD 600與第5圖的VPD 530或VPD 532相同或相似。以下會使用VPD 530討論第6圖指示的區域。VPD 530可以具有VPD唯讀(RO)區域602以及VPD可讀取可寫入(readable and writable(RW))區域604。VPD RO區域602儲存無法由BIOS 504(第5圖)改變的靜態(static)資訊。在編譯或產生用於BIOS ROM 116(第1圖)的組態檔時,使用者可以將一些預配置(pre-configuration)資訊(例如BIOS版本)寫入VPD RO區域602,但是不能在執行時間內進行。在執行時間或關機狀態時,只有BMC 506(第5圖)可以修改VPD RO區域602,BIOS 504則無法進行修改。舉例來說,BMC 506可以參考硬體組態來更新庫存計量單位(stock keeping unit (SKU))資訊,以使BIOS 504更順利的執行平台初始化。此外,BMC 506也將本身的設定儲存在VPD RO區域602中作為備份。
VPD RW區域604在BIOS 504(第5圖)及BMC 506(第5圖)之間共用資訊(例如系統組態或目錄清單)。BIOS 504及BMC 506可以讀取或寫入VPD RW區域604,並且可以與彼此同步。允許BIOS 504及BMC 506以這種方式使用VPD RW區域604避免在每個啟動環節上BIOS 504及BMC 506之間過多的通訊。VPD RW區域604因此被用於在BIOS 504及BMC 506之間分享或交換的動態(dynamic)訊息。
參考第7A、7B圖,第7A、7B圖為本發明實施例之流程圖,用以示意說明在啟動時間流程700內的VPD所有權。以下會使用第5圖的應用層架構500來描述啟動時間流程700。在計算系統100開機(即,步驟710)前,BMC 506擁有VPD 530,並且依照需求改變VPD 530。在步驟702中,BMC 506決定是否需要復原(restore)BIOS組態。舉例來說,如果儲存在VPD 530中的BIOS組態損壞了,就需要復原BIOS組態,此時步驟704會被執行。步驟704涉及將備份BIOS組態寫入VPD 530。在一些實施方式中, VPD 532可以如前所述的包含備份設定,以復原任何在VPD 530上損壞的資料。
如果在步驟702中不需要復原BIOS組態,之後在步驟706中BMC 506判斷系統目錄清單及設定組態是否有被改變。BMC 506從VPD RW區域604讀取系統目錄清單及設定選項(option)。從遠端存取的觀點來看,使用者可以存取在系統目錄清單上的訊息,例如CPU訊息、記憶體訊息、PCIe訊息等。如果有支援遠端配置,BMC 506可以從VPD 530取得設定選項。使用者可以經由BMC 506遠端地取得設定選項,以及在之後配置設定選項。當被配置以執行遠端存取模式時,BMC 506具有輔助電源(auxiliary power),並且存取網路介面(例如網路介面卡),使得BMC 506可以由使用者探測(probe)以進行遠端管理。如果系統目錄清單及/或設定選項在步驟706中被改變,之後在步驟708中BMC 506在計算系統100(第1圖)於步驟710中開機前,從VPD 530讀取最新的系統目錄清單或組態。
在步驟708中,BMC 506也可以為BIOS 504將最新的系統組態寫入VPD RO區域602中,使BIOS 504可以使用最新的系統組態進行平台配置。以下為用於PCIe拆分(bifurcation)的VPD RO區域602條目的一個範例。 用於BIOS執行平台初始化的VPD RO的範例條目
  "pcie_bifurcation": {         "cpu 0 port 0": "x4x4x4x4",         "cpu 0 port 1": "x16",         "cpu 0 port 2": "x8x4x4" }  
在以上的範例中,CPU 0(例如第2A、2B圖的CPU 202)提供多個PCIe根埠(root port),例如埠0、1、2等。每個根埠可以執行16條線(lane),但不只限於16條線。每個PCIe根埠可以被配置為4個x4,以連接4個具有x4線的PCI裝置、1個x16,以連接1個具有16條線的PCIe裝置,以及1個x8及2個x4,以連接具有x8及x4線的PCIe裝置。
在其他範例中,因為平台設定及組態也可以經由帶內或帶外通訊(例如經由帶內通訊API 312,及OOB通訊API 310)配置,BMC 506可以將一些系統組態藉由帶內及/或帶外通訊寫入VPD 530的VPD RW區域604。如此一來,OS 502及BMC 506都可以允許遠端使用者或本地(local)使用者修改這些系統組態。以下提供可以使用帶內及/或帶外通訊配置的使用者層級選項。 用於核心啟動以配置各選項的VPD RW條目
  "coreboot_options": {         "coreboot_log_level": "7",         "intel_fsp_log_enable": "0",         "coreboot_console_io_port": "0x2f8" }  
在以上的範例中,「coreboot (coreboot_options)」可以被寫入VPD 530的VPD RW區域604部份。「coreboot日誌等級(coreboot_log_level)」選項描述在啟動期間使用的日誌等級(log level)。「coreboot日誌等級」選項的值越高,紀錄或打印(print)的日誌就越詳細。「允許英特爾韌體支援套件(intel_fsp_log_enable)」具有布林值「0」時指示不允許從英特爾(Intel)韌體支援套件(firmware support package(FSP))打印日誌,因此不會有與FSP相關的日誌在啟動期間顯示。「coreboot控制台輸入輸出埠(coreboot_console_io_port)」位址被設計為「0x2f8」,指示此處使用的通用異步收發器(universal asynchronous receiver transmitter(UART))輸入/輸出埠位址為0x2f8,並且啟動日誌只能從這個特定的埠的位址輸出。
VPD RW區域604條目可以用以指定(specify)使用特定的本地磁碟(disk)進行啟動。因為使用者可以從特定的本地磁碟中指定使用某些選項進行啟動,用於u-root以配置啟動器(booter)組態的VPD RW區域604條目的範例可以如下所示。 用於u-root以配置啟動器組態進而從特定的本地磁碟進行啟動的VPD RW範例條目
  "Boot0001": {         "type": "localboot",         "method": "path",         "device_guid": "16145385-d435-4677-b733-009b73d1de71",         "kernel": "/vmlinuz-4.18.0-305.3.1.el8.x86_64",         "kernel_args": "root=UUID=0b68b3b6-f691-4903-aa38-bb4c528293d3 console=tty0 console=ttyS0,57600n8",         "ramfs": "/initramfs-4.18.0-305.3.1.el8.x86_64.img" }  
在以上的範例中,「Boot0001」指示計算系統(例如計算系統100)可以在啟動OS中使用的第一啟動選項。如果「Boot0001」中有訊息與啟動裝置不相符(mismatch),計算系統會搜尋「Boot0002」、「Boot0003」等,直到訊息符合啟動裝置為止。計算系統之後將啟動到OS中。「類型(type)」屬性(attribute) 指示是否從本地磁碟啟動,或是從NIC或遠端磁碟啟動。「方法(method)」屬性描述如何翻譯接下來的屬性,「路徑(path)」指示提供的值代表可尋址檔案-系統位置(addressable file-system location)。「device_guid」是全域唯一識別符(globally unique identifier (GUID)),被用以辨識使用者帳號(account)、文件、軟體、硬體、軟體介面、交談(session)、資料庫關聯鍵(database key)等。在上述內容中,「device_guid」辨識要從哪一個特定的儲存位置啟動。「核心(kernel)」屬性指示核心的位置。「kernel_args」屬性描述與辨識出的核心一起使用的參數。在本範例中,參數「根(root)」用以辨識指示根目錄(root directory)的通用唯一辨識碼(universally unique identification (UUID))。參數「控制台(console)」基於哪一個選項被支援可以具有多個選項,例如「tty0」或「ttyS0,57600n8」。「控制台(console)」可以重複使用,但是每個技術(technology)只能使用一次。舉例來說,tty為虛擬終端(virtual terminal),ttyS為序列埠(serial port),因此「console=tty0 console=ttyS0」是可以接受的,但是「console=ttyS0 console=ttyS1」是不能接受的。「ramfs」屬性指示將用於特定啟動(即,「Boot0001」)的檔案系統位置。由於這些啟動器組態可以由使用者定義,VPD RW區域604是適合寫入這些選項的位置,如此一來BMC 506及BIOS 504可以簡單地存取最近的啟動器組態。
在其他範例中,VPD RW區域604條目可以用於能夠識別Redfish(Redfish-aware)的BIOS(例如BIOS 504),以配置BIOS的啟動優先度(priority)設定。啟動優先度設定描述搜尋可啟動的作業系統時,各位置的搜尋順序。以下提供在VPD RW區域604中啟動優先度設定的條目的範例。 用於能夠識別Redfish的BIOS的範例VPD RW條目,用以配置啟動優先度選項
  "Boot": {         "BootSourceOverrideEnabled": "Once",         "BootSourceOverrideMode": "UEFI",         "BootSourceOverrideTarget": "Pxe",         "[email protected]": [         "None",         "Pxe",         "Floppy",         "Cd",         "Usb",         "Hdd",         "BiosSetup",         "Utilities",         "Diags",         "UefiTarget",         "SDCard",         "UefiHttp",         "UefiBootNext"         ],         "UefiTargetBootSourceOverride": "" } ,  
在以上的範例中,「允許覆蓋啟動源(BootSourceOverrideEnabled)」屬性設定為「一次(Once)」指示啟動源(boot source)將只應用一次,或是只在外部應用。「允許覆蓋啟動源(BootSourceOverrideEnabled)」屬性可以被設定為不允許(Disable)、一次,或連續(Continuous)。「啟動源覆蓋模式(BootSourceOverrideMode)」屬性描述使用者想要啟動的目標OS的模式。「啟動源覆蓋模式(BootSourceOverrideMode)」可以有兩種值,「UEFI」或「傳統(Legacy)」。「啟動源覆蓋目標(BootSourceOverrideTarget)」屬性描述目標OS儲存在哪一個啟動裝置中。「啟動源覆蓋目標@Redfish.允許值([email protected])」屬性描述「啟動源覆蓋目標(BootSourceOverrideTarget)」參數可以改變成那些值以使用Redfish。
以上的範例說明可以由OS 502及/或遠端使用者設定的動態選項。這些選項可以被寫入至VPD 530的VPD RW區域604中,如此一來BMC 506及BIOS 504可以在啟動時間內存取這些設定,而不需要在BIOS 504及BMC 506之間進行過量的通訊及翻譯。
在計算系統100於步驟710中開機後,在步驟712中BIOS 504從VPD 530讀取平台設定及組態。步驟714涉及取得基礎設定(base on setting)以初始化計算系統(例如計算系統100)。基礎設定為晶片組專用的參數,例如頻率、功率設定(power setting)、核心數量等,用以使BIOS 504執行CPU/晶片組/記憶體的初始化。在POST期間,BIOS 504從VPD 530讀取CPU設定、記憶體設定、晶片組設定等,並進行各自的系統初始化。
在步驟716中,如果系統組態及/或目錄清單已經被改變了,在步驟718中BIOS 504將系統組態及/或目錄清單更新至VPD 530的VPD RW 區域604中。因為只有BMC 506可以寫入VPD RO區域602,BIOS 504將系統組態及/或目錄清單的改變寫入至VPD RW 區域604。
在步驟720中,BIOS 504通知BMC在步驟718中執行的更新。BMC 506在步驟724中取得VPD 530的VPD所有權。在於步驟728中將VPD所有權釋出給BIOS 504前,BMC 506在步驟726中從VPD 530取得最新的系統組態及/或目錄清單。在BIOS 504可以於步驟730中啟動OS 502之前,BIOS 504在步驟722中等待BMC 506執行步驟724、726及728。
在範例中,當BIOS 504通知BMC 506系統目錄清單已經更新了之後,BMC 506取得「已更新的目錄清單(UpdatedInventory)」VPD RW區域604條目,以辨識哪些系統目錄清單已經更新過。BMC 506可以取得已更新的系統目錄清單,並在之後將「已更新的目錄清單」VPD RW區域604條目從VPD RW區域604刪除。刪除上述條目可以防止BMC 506對已經更新過的條目重複執行更新流程。以下提供「已更新的目錄清單」VPD RW區域604的範例條目。 要求BMC再次取得處理器、記憶體及網路訊息的VPD RW的範例條目
  "updated_inventories": {         "processor": "yes",         "memory": "yes",         "network": "yes" }  
啟動時間流程700允許BMC 506能夠執行平台遙測(telemetry)及遠端地配置系統設定。為了確保BMC 506中的資訊一直都是最新的,如果有任何目錄清單被改變過,BIOS 504會再次通知BMC 506取得更新過的值。也就是說,重複步驟720。一旦BMC取得更新過的值,如果OS 502需要帶內存取,BMC將VPD所有權釋出。藉由釋出VPD所有權,本揭露的實施例提供VPD 530的暫時所有權的範例。
VPD RO區域602不是對於所有帶內存取都是可寫入的。即使BMC 506已經解鎖VPD所有權BIOS 504及OS 502也不能寫入至VPD RO區域602。只有VPD RW區域604是可寫入的。作為預設方針,VPD所有權在OS 502啟動前可以留在主機(即,BIOS 504)。因此,一旦OS 502被啟動,VPD所有權依然留在主機。因此,OS 502可以直接存取VPD 530。以下提供用以在OS 502啟動前將預設VPD所有權配置到主機(即,BIOS 504及OS 502)的VPD RO區域602的範例條目。 用以將VPD所有權配置到主機的VPD RO的範例條目
  "vpd_options": {         "default_vpd_ownership": "host" }  
第8圖為本發明實施例之流程圖,用以示意說明BMC 506在執行時間內取得VPD所有權(例如第5圖的VPD 530的所有權)的流程800。如上所述,在啟動到OS 502之後,預設是主機擁有VPD所有權。如果BMC 506需要存取VPD 530,在步驟802中BMC 506觸發系統管理中斷(system management interrupt (SMI)),以從BIOS 504取得VPD所有權。在一些實施方式中,SMI經由通用輸入(general purpose input (GPI))達成。從系統的觀點來看,BMC是一個被動裝置,接受主機OS/BIOS的請求並進行回應。GPI提供BMC 506將SMI傳送至BIOS 504的機制,BIOS 504之後將詢問需要什麼類型的請求。
在步驟804中,如果BIOS 504沒有偵測到中斷,BIOS 504在步驟818中保留VPD所有權。如果BIOS 504偵測到中斷,在步驟806中BIOS 504將VPD所有權轉移至BMC 506,並在步驟808中等待BMC 506釋出VPD所有權。
在步驟810中,BMC 506接收VPD所有權並執行有必要觸發中斷的任務。也就是說,在步驟812中BMC 506判斷是否修改系統組態及/或目錄清單。在步驟814中,BMC 506將新的系統組態及/或目錄清單寫入至VPD 530,並在之後的步驟816中將VPD所有權釋出至BIOS 504。
在一些實施方式中,第5圖的應用層架構500允許更高的安全配置,限制BIOS ROM 116(第1圖)的帶內存取。第9圖為本發明實施例之方塊圖,用以示意說明沒有從OS 502帶內存取VPD 530及UEFI NVRAM 320的應用層架構500。
對於需要更高安全要求或不需要支援來自OS 502的帶內存取的系統或平台而言,可以預設由BMC 506擁有VPD所有權,以阻擋在交遞(hand-off)至OS 502後的所有帶內存取。這樣的改變將使VPD 530成為BMC 506的次要非揮發性儲存。因此,VPD所有權只有在啟動時間屬於BIOS 504。在其他時間(例如,執行時間)VPD所有權屬於BMC 506。這個VPD所有權的預設設定不只引入了更高的安全性,對於BMC 506而言也更有彈性。也就是說,BMC 506可以直接使用VPD 530,而不需要在執行時間內丟出中斷並要求BIOS 504將VPD所有權釋出。因為BIOS 504及BMC 506之間沒有傳送訊息以交換VPD所有權,對於OS 502而言並沒有效能的損失。
在第9圖中,將預設的VPD所有權留在BMC 506可以避免OS 502帶內存取VPD 530及/或UEFI NVRAM 320。指示物(indicator)902、904顯示OS 502並沒有連接這些元件的直接路徑。OS 502必須依賴帶內通訊API 312及OOB通訊API 310,經由IPMI及/或Redfish來指示BMC 506對VPD 530應做出的任何修改。
參考第10A、10B圖,第10A、10B圖為本發明實施例之流程圖,用以示意說明在啟動時間流程1000內的VPD所有權,其中OS 502被限制不能存取VPD 530。在步驟1002中,BMC 506判斷是否復原BIOS組態設定,並且備份的BIOS組態設定在步驟1004中被寫入VPD。步驟1002及1004分別類似於步驟702(第7A圖)及704(第7A圖)。之後使用步驟1006及1008以類似於步驟706(第7A圖)及步驟708(第7A圖)的方式確保目錄清單組態是最新的。
在步驟1010中,計算系統100(第1圖)的電源被開啟。在步驟1012中,BIOS 504從VPD 530以類似於步驟712(第7A圖)的方式讀取平台設定及組態。在步驟1014中,BIOS 504以類似於步驟714(第7A圖)的方式初始化計算系統100(第1圖)。BIOS 504之後在步驟1016及1018中分別以類似於步驟716(第7B圖)及步驟718(第7B圖)的方式確保系統組態及/或目錄清單是最新的。
在步驟1020中,BIOS 504以類似於步驟720(第7B圖)的方式通知BMC 506系統組態及/或目錄清單的更新。BIOS 504之後將VPD所有權釋出。之後在步驟1022,BIOS 504啟動OS 502。
在步驟1024中,BMC 506從BIOS 504取得VPD所有權。在步驟1026中,BMC 506以類似於第7B圖的步驟726的方式從VPD 530取得最新的系統組態及/或目錄清單。在步驟1028中,BMC 506保留VPD 530的VPD所有權,因為BMC 506預設為擁有VPD所有權。以下提供將BMC 506設定為預設的VPD擁有者的範例設定。 在啟動OS前將VPD所有權配置給BMC的VPD RO範例條目
  vpd_options": {         "default_vpd_ownership": "bmc" }  
在啟動至OS 502中後,BMC 506預設擁有VPD所有權。從硬體的觀點來看,BIOS ROM 116(第1圖)被路由至BMC 506,並且與主機(或BIOS 504)斷開連接。在執行時間內,BIOS 504如果有需要可以使用SMI存取VPD 530,並依照需要依賴傳統的IPMI或Redfish介面要求BMC 506存取VPD 530。
在一些實施方式中,讓BIOS 504取得VPD所有權的選擇是不變的。也就是說,BIOS 504可以對BMC 506觸發中斷以取得VPD所有權。即使此選擇是可用的,依然建議採用傳統的IPMI介面,以維持更高的安全配置。第11圖為本發明實施例之流程圖,用以示意說明BIOS 504在執行時間內取得VPD所有權的流程1100。在步驟1102中,BIOS 504經由中斷請求VPD所有權。如果在步驟1104中BMC 506偵測到中斷,BMC 506在步驟1106中將所有權轉移至BIOS 504。如果在步驟1104中BMC 506沒有偵測到中斷,BMC 506在步驟1116中保留VPD所有權。
在步驟1108中,BMC 506排列(queue)所有的VPD存取請求。在一些範例中,當VPD所有權在執行時間內轉移至BIOS 504時,使用者及/或BMC 506可能也會希望同時改變VPD 530內的設定。在此情況下,BMC 506先將這些請求排列,並且一旦VPD所有權回到BMC 506時,BMC 506將任何被請求改變的設定更新至VPD 530中。
在步驟1110中,BIOS 504接收VPD所有權。在步驟1112中,BIOS 504將系統組態及/或目錄清單更新至VPD 530中。一旦BIOS 504完成了其對VPD 530的使用,在步驟1114中BIOS 504將VPD 530的VPD所有權釋出至BMC 506。
第5圖的應用層架構500提供了以上所描述的一些優勢。讓VPD 530在啟動時間內最小化BIOS 504及BMC 506之間的通訊,可以因此加速計算系統100(第1圖)的啟動流程。應用層架構500也提供了VPD 532,VPD 532可以作為BMC 506的本地儲存使用。BMC 506可以將VPD 532作為用以回復(restore)BIOS 504的組態的備份或來源(source),以在BIOS ROM 116被抹除時維護使用者設定。舉例來說,在BIOS 504更新並且VPD RW區域604被抹除之後,BIOS 504可以將VPD條目「回復BIOS組態(restore_bios_configuration)」設定為一個旗號(semaphore)。在重新啟動後,當BMC 506偵測到上述VPD條目時,BMC 506從VPD 532將本身的BIOS組態的備份複本(copy)複製到VPD 530的VPD RW區域604中,並刪除上述旗號。以下提供用以請求BMC 506從備份回復BIOS組態的VPD RW區域604範例條目。 用以請求BMC從備份回復BIOS組態的VPD RW範例條目
  vpd_options": {         "restore_bios_configuration": "yes" }  
在其他範例中,當VPD 530中的事件訊息(event information)損壞(corrupt)時,應用層架構500也允許使用IPMI指令請求BMC 506將預設組態載入VPD 530中。上述預設組態可以在沒有排清(flush)整個BIOS ROM 116(第1圖)的情況下被載入。
此外,BMC 506也可以將任何設定儲存在VPD 530的VPD RO區域602中作為備份。上述備份在VPD 532可能儲存在內的BMC ROM 120(第1圖)被抹除或完全格式化(formatted)時十分方便。BMC 506可以從VPD 530的VPD RO區域602取得本身儲存的組態,並因此回復組態以維護累積的使用者設定。
雖然揭露的實施例已經參照一或多個實施方式示意說明及描述,本技術領域的其他技術人員在閱讀及理解本說明書及附屬的圖式時,將想到或知道相等的改動及修改。此外,雖然本發明的特定特徵可能已經參照一些實施方式中的一個揭露,那樣的特徵可以和一或多個其他實施方式的其他特徵結合,並且在任何給定的或特定的應用中可能是有需要或是有利的。
雖然本揭露的多個實施例已在之前描述過,應該理解描述過的實施例只是以範例的方式呈現,並不是限制。已揭露的實施例可以根據本揭露做出多個改變,而沒有離開本揭露的精神或範圍。因此,本發明的廣泛性及範圍不應該被限制於任何以上描述過的實施例。反而,本發明的範圍應該根據接下來的請求項及請求項的均等範圍定義。
100, 200a, 200b:計算系統 102:處理器 104:晶片組 108:圖像處理單元/視訊介面(GPU/視訊介面) 110:隨機存取記憶體模組(RAM模組) 112:硬碟介面(HD介面) 114:輸入/輸出介面(I/O介面) 116:基本輸入輸出系統唯讀記憶體(BIOS ROM) 118, 506:基板管理控制器(BMC) 120:基板管理控制器唯讀記憶體(BMC ROM) 202:中央處理單元(CPU) 204:南橋晶片 206:多工器(MUX) 300、500:應用層架構 302, 502:作業系統(OS) 304, 504:基本輸入輸出系統(BIOS) 310:帶外通訊應用程式介面(OOB通訊API) 312:帶內通訊應用程式介面(帶內通訊API) 314:智慧平台管理介面/Redfish帶外介面(IPMI/Redfish OOB介面) 316, 318:智慧平台管理介面/Redfish應用程式介面(IPMI/Redfish API) 320:聯合可延伸韌體介面非揮發性隨機存取記憶體(UEFI NVRAM) 322:聯合可延伸韌體介面執行時間服務(UEFI執行時間服務) 324:聯合可延伸韌體介面執行時間應用程式介面(UEFI執行時間API) 326:非揮發性儲存應用程式介面(NV儲存API) 530, 532, 600:重要產品資料(VPD) 534, 536:重要產品資料應用程式介面(VPD API) 602:重要產品資料唯讀區域(VPD RO區域) 604:重要產品資料可讀取可寫入區域(VPD RW區域) 700, 1000:啟動時間流程 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 802, 804, 806, 808, 810, 812, 814, 816, 818, 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, 1022, 1024, 1026, 1028, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116:步驟 800, 1100:流程 902, 904:指示物
本揭露、本揭露的優點及圖示從接下來代表性實施例的描述並參考附帶的圖式會較容易理解。這些圖式只描述了代表性實施例,因此不應該被理解為各種實施方式或請求項的限制。 第1圖為本發明實施例之計算系統的方塊圖。 第2A圖為本發明實施例之存取第一計算系統的記憶體的簡化方塊圖。 第2B圖為本發明實施例之存取第二計算系統的記憶體的簡化方塊圖。 第3圖為方塊圖,用以示意說明先前技術中計算系統的應用層架構。 第4圖為方塊圖,用以示意說明第3圖的應用層架構的問題。 第5圖為本發明實施例之計算系統的應用層架構的方塊圖。 第6圖用以示意說明本發明實施例之重要產品資料(VPD)的區域。 第7A、7B圖為本發明實施例之流程圖,用以示意說明在啟動時間流程內的VPD所有權。 第8圖為本發明實施例之流程圖,用以示意說明BMC在執行時間內取得VPD所有權的流程。 第9圖為本發明實施例之方塊圖,用以示意說明沒有帶內存取VPD的第5圖的應用層架構。 第10A、10B圖為本發明實施例之流程圖,用以示意說明在啟動時間內沒有作業系統存取的VPD所有權。 第11圖為本發明實施例之流程圖,用以示意說明基本輸入/輸出系統(BIOS)在執行時間內取得VPD所有權的流程。
800:流程
802,804,806,808,810,812,814,816,818:步驟

Claims (10)

  1. 一種計算系統,包含: 一中央處理單元(CPU),被配置以執行一基本輸入/輸出系統(BIOS)及一作業系統(OS); 一基板管理控制器(BMC);以及 一第一啟動非揮發性記憶體,耦接上述CPU及上述BMC,上述第一啟動非揮發性記憶體的一第一部份以一開放式標準儲存多個系統設定及一組態,使得上述BIOS及上述BMC可以基於上述第一啟動非揮發性記憶體的上述第一部份的一暫時所有權存取上述系統設定。
  2. 如請求項1之計算系統,更包含: 一多工器(MUX),耦接上述第一啟動非揮發性記憶體、上述BMC,以及上述CPU,其中上述MUX從上述BMC接收一控制訊號,以在上述CPU及上述BMC之間切換存取。
  3. 如請求項1之計算系統,其中上述BIOS被設計作為上述第一啟動非揮發性記憶體的上述第一部份的預設擁有者,其中上述BMC從上述BIOS請求上述暫時所有權以存取上述第一啟動非揮發性記憶體的上述第一部份。
  4. 如請求項1之計算系統,其中上述第一啟動非揮發性記憶體的上述第一部份包含一唯讀部份及一可讀取-可寫入部份,上述唯讀部份及上述可讀取-可寫入部份都可以在執行時間內由上述BMC寫入,只有上述可讀取-可寫入部份可以在執行時間內由上述BIOS寫入。
  5. 如請求項1之計算系統,其中上述BMC被設計作為上述第一啟動非揮發性記憶體的上述第一部份的預設擁有者,其中上述OS無法帶內存取上述第一啟動非揮發性記憶體的上述第一部份,其中上述BIOS從上述BMC請求上述暫時所有權,以存取上述第一啟動非揮發性記憶體的上述第一部份。
  6. 一種電腦實施方法,包含: 使用多個系統設定啟動一計算系統的一基板管理控制器(BMC),上述系統設定以一開放式標準儲存在一第一啟動非揮發性記憶體的一第一部份中,上述第一啟動非揮發性記憶體耦接上述計算系統的上述BMC及一中央處理單元(CPU); 在上述BMC接收一開機訊號; 由上述CPU從上述第一啟動非揮發性記憶體的上述第一部份啟動一基本輸入/輸出系統(BIOS); 由上述BIOS通知上述BMC上述系統設定的任何改變;以及 從上述BIOS將上述第一啟動非揮發性記憶體的上述第一部份的暫時所有權切換至上述BMC,使得上述BMC能夠以上述開放式標準取得上述系統設定的上述改變。
  7. 如請求項6之電腦實施方法,其中上述BMC向一多工器(MUX) 提供一控制訊號,上述MUX耦接上述第一啟動非揮發性記憶體、上述BMC,以及上述CPU,上述控制訊號將上述第一啟動非揮發性記憶體的上述第一部份的上述暫時所有權從上述BIOS切換至上述BMC。
  8. 如請求項6之電腦實施方法,其中上述BIOS被設計作為上述第一啟動非揮發性記憶體的上述第一部份的預設擁有者,其中上述BMC從上述BIOS請求上述暫時所有權以存取上述第一啟動非揮發性記憶體的上述第一部份。
  9. 如請求項6之電腦實施方法,更包含由上述BIOS啟動上述計算系統的一作業系統(OS) ,其中上述BMC從上述BIOS請求上述暫時所有權以存取上述第一啟動非揮發性記憶體的上述第一部份。
  10. 一種電腦程式產品,可以有形地在非暫態機器可讀儲存媒體中實施,上述電腦程式產品包含多個指令,上述指令被配置以致使一資料處理裝置執行多個操作,包含: 使用多個系統設定啟動一計算系統的一基板管理控制器(BMC),上述系統設定以一開放式標準儲存在一第一啟動非揮發性記憶體的一第一部份中,上述第一啟動非揮發性記憶體耦接上述計算系統的上述BMC及一中央處理單元(CPU); 在上述BMC接收一開機訊號; 由上述CPU從上述第一啟動非揮發性記憶體的上述第一部份啟動一基本輸入/輸出系統(BIOS); 由上述BIOS通知上述BMC上述系統設定的任何改變;以及 從上述BIOS將上述第一啟動非揮發性記憶體的上述第一部份的暫時所有權切換至上述BMC,使得上述BMC能夠以上述開放式標準取得上述系統設定的上述改變。
TW111124010A 2022-03-15 2022-06-28 計算系統、電腦實施方法及電腦程式產品 TWI840849B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/695,129 2022-03-15
US17/695,129 US20230297390A1 (en) 2022-03-15 2022-03-15 Systems and methods for memory content sharing between hosts and management controllers

Publications (2)

Publication Number Publication Date
TW202338602A true TW202338602A (zh) 2023-10-01
TWI840849B TWI840849B (zh) 2024-05-01

Family

ID=

Also Published As

Publication number Publication date
CN116795437A (zh) 2023-09-22
US20230297390A1 (en) 2023-09-21

Similar Documents

Publication Publication Date Title
US10990411B2 (en) System and method to install firmware volumes from NVMe boot partition
JP4688821B2 (ja) システム構成の遠隔修正のための方法および装置
US20170228228A1 (en) Remote launch of deploy utility
US8352721B1 (en) Initiating an operating system boot from firmware
US9052916B2 (en) System ROM with an embedded disk image
WO2016074127A1 (zh) 计算机设备及计算机设备内存启动的方法
JP2004178596A (ja) ディスクレスネットワークブータブルコンピュータにおける不揮発性メモリキャッシュを用いた信頼性の改善
US9448889B2 (en) BIOS failover update with service processor
JP2007206885A (ja) コンピュータシステム及びシステム起動方法
US20060036832A1 (en) Virtual computer system and firmware updating method in virtual computer system
CN107533441B (zh) 创建操作***卷
US10303487B2 (en) System and method for booting an information handling system
WO2018120200A1 (zh) 一种服务器管理方法和服务器
US20190004818A1 (en) Method of UEFI Shell for Supporting Power Saving Mode and Computer System thereof
CN109426527B (zh) 在uefi固件及作业***间分享蓝牙数据的电脑***及其方法
JP2006011506A (ja) 起動イメージ提供システム及び方法、ブートノード装置、ブートサーバ装置並びにプログラム
US8499142B1 (en) UEFI boot loader for loading non-UEFI compliant operating systems
TWI823253B (zh) 計算系統、由電腦執行的方法以及電腦程式產品
CN116627472A (zh) 高速***组件设备的固件程序升级方法及服务器
US7506115B2 (en) Incremental provisioning of software
TWI840849B (zh) 計算系統、電腦實施方法及電腦程式產品
WO2022199622A1 (zh) 一种电子设备的启动程序的运行方法和电子设备
TW202338602A (zh) 計算系統、電腦實施方法及電腦程式產品
US11263023B1 (en) System and method for updating host operating system drivers from a management controller
CN112667544A (zh) 一种控制主板插槽使能的方法、装置、***及介质