鯤鵬軟件構(gòu)成
鯤鵬處理器的軟件生態(tài)是一個不斷發(fā)展的軟件生態(tài),服務(wù)器本身也具有復(fù)雜度多樣性,經(jīng)過很長時間的發(fā)展服務(wù)器硬件有不同的操作系統(tǒng)方案,這些操作系統(tǒng)往往還實現(xiàn)了軟件的分層組合,很難簡單描述其軟件架構(gòu)。
本節(jié)從一個比較高的層次,主要從GNU/Linux軟件生態(tài)角度出發(fā),介紹鯤鵬軟件的構(gòu)成。
以下為鯤鵬 GNU/Linux 的軟件架構(gòu)高層視圖:
上圖中,底部為鯤鵬服務(wù)器硬件,以 鯤鵬處理器為核心的通用服務(wù)器設(shè)備。
在包含ARM核心的硬件系統(tǒng)上運行的軟件不可避免的會包含特定系統(tǒng)的代碼,此類代碼通常以固件形式與其他系統(tǒng)軟件分開,本節(jié)將此特性的代碼稱為----硬件特定軟件。
在服務(wù)器領(lǐng)域,服務(wù)器的硬件與硬件特定軟件對服務(wù)器“開箱即用”的影響最大,所以這兩部分都要滿足ARM服務(wù)器相關(guān)的合規(guī)性要求(詳見:ARMv8-A 體系結(jié)構(gòu)、鯤鵬軟件生態(tài)與云服務(wù))
硬件特定軟件
硬件特定軟件是指ARM服務(wù)器中特定系統(tǒng)的、常以固件形式提供的軟件,主要包括所謂的Boot Loader 和設(shè)備特定固件。
本節(jié)將先介紹Boot Loader,然后介紹 ARM 服務(wù)器中的固件要求規(guī)范 SBSA 和 SBBR,以及其中 涉及到的一些重要元素, 如 UEFI、ACPI 與 ATF( ARM 可信固件)。
1. Boot Loader
Boot Loader 即啟動加載程序,是 Bootstrap Loader 一詞的縮寫版,通常是系統(tǒng)上電或重置運行后的第一個軟件,因此它是專門針對特定處理器和主板的。
粗略的看啟動流程包括三個主要階段:
- 系統(tǒng)上電,硬件加載Boot Loader;
- Boot Loader 加載操作系統(tǒng),例如Linux內(nèi)核;
- 操作系統(tǒng)加載應(yīng)用程序和用戶數(shù)據(jù),完成啟動過程。
其中,Boot Loader的主要作用就是充當(dāng)硬件與操作系統(tǒng)之間的媒介,用于加載操作系統(tǒng)。為完成這一目的,Boot Loader往往要尋找并釋放操作系統(tǒng),建立操作系統(tǒng)運行的基本環(huán)境(例如初始化內(nèi)存、發(fā)現(xiàn)硬件設(shè)備參數(shù)回傳操作系統(tǒng)等)。一些復(fù)雜的 Boot Loader還會有很多額外的功能,如支持多階段啟動、多種啟動方式(如Flash內(nèi)存、磁盤、網(wǎng)絡(luò)、U盤、光盤等)、啟動多種操作系統(tǒng)、更新固件、提供運行時服務(wù)、支持底層調(diào)試等。
在服務(wù)器領(lǐng)域,支持 安全啟動也是一個很重要的特性。
2. SBSA 與 SBBR
不同操作系統(tǒng)對系統(tǒng)加載過程中的要求是不一樣的。在ARM的傳統(tǒng)強項——嵌入式設(shè)備與移動終端——領(lǐng)域的Soc產(chǎn)品,往往是 定制化、差異化、價格敏感的,用戶很少跟換硬件模塊操作系統(tǒng)。在這些情況下,定制軟件的成本遠遠小于移除硬件功能帶來的成本節(jié)省。所以此類情況下使用方案多是高度定制化的,如“啟動固件+Boot Loader(u-boot、fastboot)+操作系統(tǒng)(Linux)+應(yīng)用軟件”
但在 服務(wù)器和PC領(lǐng)域,軟件通常由第三方開發(fā),用戶只要考慮“開箱即用”和“模塊可更換”。定制硬件的成本遠超過軟件成本。所以,使用的方案一般為標準化的接口兼容的。
SBSA(Server Base Boot Requirements)和SBBR(Server Base Boot Requirements)是ARM在服務(wù)器應(yīng)用領(lǐng)域?qū)?/strong>服務(wù)器基本啟動需求提出的規(guī)范。
SBBA的規(guī)范是基于ARM 64 位處理器架構(gòu)的硬件體系結(jié)構(gòu)的規(guī)范,詳細描述了服務(wù)器操作系統(tǒng)軟件,如:操作系統(tǒng)、Hypervisor(虛擬機管理器)和固件所依賴的特性和系統(tǒng)架構(gòu)關(guān)鍵層面,包括 CPU、PCIe、定時器、IOMMU、UART(Universal Asynchronous Recevier / Transmitter,通用異步收發(fā)傳輸器)、看門狗和中斷等,目標是有足夠標準的
系統(tǒng)架構(gòu),來使一個恰當(dāng)?shù)?font face="黑體" color="#db5079">系統(tǒng)鏡像能在所有符合規(guī)范的系統(tǒng)硬件上運行。
SBSA標準主要定義了以下方面的要求:
1.服務(wù)器在加電自檢(POST)階段應(yīng)該檢查的基本硬件組件,例如處理器、內(nèi)存、硬盤驅(qū)動器、鍵盤和鼠標等。
2.服務(wù)器引導(dǎo)過程中需要加載的最小軟件集合,包括固件(如BIOS或UEFI固件)、引導(dǎo)加載器(如GRUB或UEFI引導(dǎo)加載器)以及內(nèi)核等。
3.服務(wù)器在引導(dǎo)過程中應(yīng)該遵循的基本時序和順序。
4.對于采用多引導(dǎo)架構(gòu)的系統(tǒng),SBSA還規(guī)定了引導(dǎo)過程中如何處理多個操作系統(tǒng)的引導(dǎo)選項。
SBBR規(guī)范是對系統(tǒng)啟動固件的規(guī)范,定義了符合SBSA標準的ARM AArch64 架構(gòu)的服務(wù)器上的操作系統(tǒng)或者Hypervisor(虛擬機管理器)要實現(xiàn)開箱即用能力的基本固件需求,包括所需啟動和運行時的服務(wù)和安全要求,并遵循UEFI(Unified Extensible Firmware Interface,統(tǒng)一可拓展固件接口)和ACPI (高級適配電源管理接口規(guī)范)
SBSA/SBBR是針對ARM服務(wù)器能夠啟動OS或監(jiān)視器等固件上提出的最小需求集,同時遵循了UEFI、ACPI、PSCI、SMBIO等工業(yè)標準。其中,SBSA和SBBR雖然名字相似,但它們實際上關(guān)注的方面有所不同。SBSA主要關(guān)注系統(tǒng)啟動和運行的最小需求,包括啟動加載程序、運行時服務(wù)、固件抽象等,而SBBR則關(guān)注引導(dǎo)程序的最小需求,例如UEFI的BootServices、RuntimeServices、Protocol等基礎(chǔ)服務(wù)及協(xié)議接口。
在實現(xiàn)層面,SBSA和SBBR規(guī)范主要通過LuvOS這個定制化Linux系統(tǒng)來實現(xiàn)。LuvOS是基于Linux內(nèi)核的,通過將FWTS(Firmware Test Suite)和SBSA-ACS(ARM Server Base Architecture - Automotive and Server Consortium Starter Kit) 在Linux下的工具與標準Linux內(nèi)核共同編譯獲得。
3. UEFI
UEFI最早由Intel推出,是16位 x86“傳統(tǒng)”PC BIOS的后繼產(chǎn)品,目前由UEFI論壇維護。
UEFI(Unified Extensible Firmware Interface) 是一種在計算機固件中使用的圖形化標準接口,它被設(shè)計用來替代傳統(tǒng)的BIOS。UEFI被定義為一個可擴展的固件接口規(guī)范,它提供了一組標準的API,使得操作系統(tǒng)可以在預(yù)啟動環(huán)境下與固件進行交互。
UEFI規(guī)范的開源參考實現(xiàn)是edk2 或 EDK Ⅱ,源碼位于https://github.com/tianocore/tianocore.github.io/tree/master/edk2
上游開發(fā)小組為TianoCore社區(qū)
UEFI是以圖形化界面展示的,相比傳統(tǒng)的BIOS,它更易于使用和定制。此外,UEFI還提供了一些先進的功能,例如網(wǎng)絡(luò)配置、硬件診斷和安全啟動等。
UEFI是由一些行業(yè)領(lǐng)先的公司共同制定的,包括AMD、Intel、Microsoft等。隨著計算機硬件的發(fā)展,UEFI也在不斷演進,以滿足新的需求。
UEFI 規(guī)范中包含一個啟動管理器 BOOT Manager,他會根據(jù)NVRAM(Non-Volatile Random Access Memory,非易失性隨機訪問存儲器)中的參數(shù)決定如何加載可執(zhí)行文件(可能是Boot Loader 或者其他鏡像文件),EFI(可拓展固件接口)可執(zhí)行文件格式必須符合PE(Protable Executable,可移植可執(zhí)行)格式,PE是一種廣泛應(yīng)用在Windows平臺上
4. ACPI
ACPI(Advanced Configuration and Power Interface)是一種開放式電源管理接口規(guī)范,它被設(shè)計用來提供一種通用的、標準化的電源管理方式。ACPI定義了在操作系統(tǒng)控制之下對電源管理進行完全控制的一種接口規(guī)范。
ACPI主要包含以下幾部分:文章來源:http://www.zghlxwxcb.cn/news/detail-679631.html
- 用于描述計算機系統(tǒng)中電源狀態(tài)和設(shè)備狀態(tài)的表(Tables);
- 用于操作系統(tǒng)與固件之間進行通信的接口(Interfaces);
- 用于描述電源、散熱管理及系統(tǒng)配置的規(guī)范;
- 用于提供運行時電源管理的事件(Events)。
ACPI是一種比較復(fù)雜的規(guī)范,它提供了豐富的電源管理功能。在計算機領(lǐng)域,許多新的電源管理特性都是基于ACPI實現(xiàn)的。文章來源地址http://www.zghlxwxcb.cn/news/detail-679631.html
到了這里,關(guān)于DP讀書:鯤鵬處理器 架構(gòu)與編程(十一)鯤鵬生態(tài)軟硬件構(gòu)成的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!