UEFI在ARM生態中現狀如何?認證金標準介紹
///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像黑色字體加我地球呺也能領取哦。最近比較閒,帶做畢設,帶學生參加省級或以上比賽///
在大多數人心目中,ARM世界的BootLoader還被uboot+DeviceTree統治。是啊,uboot簡單快捷,移植容易,為什麼不用呢?但uboot有個顯著的缺點:缺乏標準和互操作性。這讓它更合適專用系統,而不是通用系統。在ARM多用於嵌入式設備,如攝像頭和手機等等,的時候,這個並不是問題。嵌入式設備往往是垂直定製開發的,從硬體、固件、BSP和作業系統,都深度定製,沒有問題是定製修改程序所不能解決的。但當ARM進入到x86的傳統領域後,如PC和伺服器市場,情況發生了變化。
ARM生態的通用性需求不斷增長
與大多數人基本的概念不同,在某種意義上來說,X86體系比ARM體系更加開放。X86是很多小夥伴一起玩,以生態圈的概念提供產品,並對自己那部分負責;而ARM體系雖然也依賴生態圈,但最終有個大Boss統合整個生態鏈,提供最後產品並對該產品負總責。
X86生態圈玩家眾多,有OS廠商(OSV)定期發布作業系統,如Windows,Ubuntu;晶片廠商提供CPU,如Intel, AMD;主板廠商(OEM)提供電腦主板;獨立硬體供應商(IHV)生產擴展板卡如顯卡等等PCIE擴展卡,再如內存廠家推出一代一代不同的內存條等等。DIY玩家可以自由選擇搭配合適/兼容的產品搭配出自己心儀的機器,休閒上網用戶花2000多元就可以搭配出一套可用的電腦,而遊戲玩家則可能花費上萬元才能滿足遊戲配置需求。還有些品牌機廠商如Dell和聯想等,他們提供整套最終產品給用戶。但他們實際上是在所有小夥伴的零件基礎上拼湊出個產品,技術不強,話語權弱,並不能統一整個產業鏈。用戶津津樂道的反而是用的什麼CPU,安裝的什麼作業系統,用的那種顯卡等等。Windows死機、藍屏和緩慢等等時候,用戶往往會抱怨微軟和Intel,而不是品牌廠商。在X86生態中,強勢的是整個生態鏈的兩端:微軟和Intel,分別卡住最上游和最下游。在爭取了鏈條利潤的最大頭後,也要直接面對數千數萬種千奇百怪的硬體產品,於是才發明了UEFI和ACPI標準,規範了各個層面的調用接口。更重要的是,為了規範中間鏈條各個廠商的行為,分別推出了一軟一硬兩個認證:WHQL和Intel最新的EVO。保證了市面上上百種產品的質量可控。
傳統ARM體系由最後品牌廠商統合整個產品,它負責打通整個產業鏈,並對其中所有部分負責,話語權極強,同時對技術也相對較強。用戶面對的具體品牌的產品,而不是碎片化的各個部分。強勢的如Apple,硬體軟體一起抓,完全組成閉環的鏈條。稍差也如華為等安卓手機,要負責安卓系統在自己手機移植部分(BSP),客戶出了問題並不會找谷歌,而會去找華為。對規範和標準的需求並不強烈。
隨著采用ARM內核的晶片性能不斷提高,ARM內核晶片不斷進入x86傳統領域。移動和桌面有Apple的Axx,伺服器端有鯤鵬920(也可以用於桌面)、倚天710,、安培和Graviton系列,它們的性能完全可以和Intel/AMD的晶片打擂台。當ARM的小夥伴們進入這些領域後,他們發現一樣也要面臨碎片化的生態系統的問題。於是接受UEFI和ACPI變成了必然的選擇。這也從EDK2社區最活躍的用戶在近幾年已經不是x86的開發者,而是ARM相關開發者(最近一年多換成了RISC-V)可以看出。於此同時EDK2開源平台倉庫EDK2_Platforms下面也湧入了大量ARM平台,好不熱鬧。
現狀是,所有成熟的ARM伺服器產品都采用UEFI+ACPI方案;很多ARM移動和桌面產品已經采用UEFI+ACPI方案;大量ARM產品在趕來的路上;形式喜人。同時,作為ARM世界的靈魂,ARM公司也推出了大量規範和標準,來規范ARM產品的行為,如針對伺服器的伺服器的SBSA和SBBR規範,最新的基本系統架構(BSA)、基本啟動要求(BBR),以及針對安全的基本啟動安全要求(BBSR)等等。多個層次和方向的規範標準相當繁雜,而且標準有些是必須達到的,有些則是推薦,這樣給最終用戶造成了不少困擾,也造成了市場的混亂。如何定義「好的」ARM產品標準,這個標準必須是可衡量的、可標識的,並且要簡單易懂,最好還能朗朗上口?微軟以前的答案是WHQL認證測試和Windowsxx標籤,ARM的是什麼呢?
ARM SystemReady
ARM公司在ARM進入伺服器領域不久就發現了這種需求,推出ARM ServerReady計劃。隨著ARM內核晶片的市場不斷外延,ARM在2020年10月開發者峰會上,正式宣布升級版:ARM SystemReady[1]和白皮書[2]。
ARM SystemReady的口號是「Just Work」(即開即用,不是僅僅工作),強調它的可用性和已驗證性。它主要包括四種認證:
·SystemReady SR:即以前的ServerReady,適用於server和workstation。它除了要求SBBR之外,SBSA和SBBR被替換為通用的BSA規範和SBSA規範。
·SystemReady ES:適用於基礎架構和物聯網邊緣設備等嵌入式伺服器。
·SystemReady IR:用於基礎架構物聯網和物聯網邊緣設備。
·SystemReady LS:適用於當下火熱的LinuxBoot來啟動server。
標準可以說涵蓋了從雲端到物聯網邊緣計算中的所有部分。因為覆蓋範圍大,所以各個部分的標準要求各有不同:
來源:參考資料2
如果通過了基本啟動安全要求(BBSR)的要求,還可以在Logo旁配享ARM特製小盾牌:
關於BSA、SBSA、SBBR和BBSR等標準大家可以在ARM官網或者System Ready Spec頁面[3]找到相關連結,並仔細閱讀。如果大家留言足夠踴躍,也許今後本專欄會專文介紹其中比較重要的SBBR和SBSA規範。
下面是專門整理的各種標準細節和測試套件ACS[4]細節,拿走不謝:
這裡要特別一點,那就是UEFI和ACPI、DeviceTree(DT)的關係。我們可以看到,SystemReady IR固件spec是個奇怪的組合UEFI+DeviceTree。我們普通看到的系統都是UEFI+ACPI,或是uboot+DeviceTree,但是實際上,DT和UEFI並不矛盾,更有甚者,有些定製化奇怪的系統上甚至出現UEFI+ACPI+DT的怪異組合。這裡采用DT主要是考慮物聯網IOT系統使用DT更加簡單。關於為什麼在ARM中,ACPI要替代DT見參考資料5[5]。DT和ACPI的關係可以參考我的這篇文章:
老狼:ACPI與UEFI302贊同 · 16評論文章
結論
ARM SystemReady一經推出,立刻受到眾多小夥伴的歡迎[6]:
來源:參考資料6
值得一提的是,國產BIOS廠商百敖軟體也是成員之一。ARM SystemReady目前已經認證了很多系統[7],其中除了國外大廠之外,還有不少國內的產品。相信未來,可以通過SystemReady的產品會越來越多。