chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RISC-V ACPI 二三事

進(jìn)迭時空 ? 2025-09-08 18:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

熟悉 x86 電腦的朋友估計(jì)對 ACPI 這個名詞不會陌生,在如今的計(jì)算機(jī)市場上,ACPI廣泛應(yīng)用于筆記本電腦、臺式機(jī)、工作站以及服務(wù)器等產(chǎn)品上。新興的 RISC-V 架構(gòu)要進(jìn)入桌面/服務(wù)器領(lǐng)域,不可避免地會與 ACPI 打上交道。



什么是 ACPI?



ACPI 全稱是 Advanced Configuration and Power Interface(高級配置與電源接口),它是一套開放標(biāo)準(zhǔn),可供操作系統(tǒng)用于發(fā)現(xiàn)和配置硬件、自動配置即插即用和熱插拔設(shè)備、進(jìn)行電源管理以及狀態(tài)監(jiān)控等[1]



ACPI 的初版規(guī)范由英特爾Intel)、微軟(Microsoft)和東芝(Toshiba)共同制定,在 1996 年 12 月發(fā)布。隨后越來越多的公司加入到 ACPI 規(guī)范的改進(jìn)中。2013 年 10 月,ACPI 規(guī)范轉(zhuǎn)交由 UEFI 論壇維護(hù),一直至今。最新的 ACPI 規(guī)范已經(jīng)演變到了 6.6 版本,在 2025 年 5 月發(fā)布。


在 ACPI 之前,計(jì)算機(jī)的電源管理幾乎完全交由底層的 BIOS 固件來控制,這大大限制了操作系統(tǒng)在能耗控制上的功能。ACPI 的出現(xiàn),取代了 APM(Advanced Power Management)、MPS(MultiProcessor Specification)、Legacy PnP(Plug and Play BIOS)等規(guī)范,讓操作系統(tǒng)在電源管理和硬件配置上獲得了更多的自主權(quán),從而實(shí)現(xiàn)了OSPM(Operating System-directed configuration and Power Management,操作系統(tǒng)導(dǎo)向的配置和電源管理)系統(tǒng)。



ACPI 框架



一個使用 ACPI 的系統(tǒng)的完整框圖如下:


23a75402-8c9c-11f0-8ce9-92fbcf53809c.png

取自 ACPI specification v6.6[2]



橙色部分是 ACPI 規(guī)范所覆蓋的內(nèi)容,因此 ACPI 定義的是一種軟件和硬件組件的接口規(guī)范:

硬件上:

ACPI Register Set:在硬件上實(shí)現(xiàn)的 ACPI 寄存器組,為 x86 架構(gòu)特有。ARMRISC-V 通常用的是 hardware-reduced ACPI,可無需在硬件上實(shí)現(xiàn)這些寄存器。

軟件上,定義了多個 ACPI 表(Table),這些表整體可分為兩種類型:

Static Tables:又稱為Data Tables,由裸數(shù)據(jù)組成,ACPI Driver 可直接讀取表中的內(nèi)容。

Definition Block Tables:由AML(ACPI Machine Language)字節(jié)碼(byte code)組成,它的內(nèi)容要經(jīng)AML Interpreter(解釋器)解釋后才能被 ACPI Driver 讀取到。


綠色部分是操作系統(tǒng)中的相關(guān)組件,其中:

ACPI Driver:操作系統(tǒng)用于對接 ACPI 的驅(qū)動,AML Interpreter 也是屬于其中的一部分。其中有一個比較出名的開源工程ACPICA(ACPI Component Architecture)[3],它提供了與操作系統(tǒng)無關(guān)的一些 ACPI 相關(guān)代碼實(shí)現(xiàn),也包括一個 AML Interpreter 的實(shí)現(xiàn)。目前 ACPICA 的代碼被用于 Linux、FreeBSD 等系統(tǒng)中,作為 ACPI Driver 的一部分。

OSPM(Operating System-directed configuration and Power Management):以 ACPI 為核心、由操作系統(tǒng)主導(dǎo)的電源管理子系統(tǒng)的統(tǒng)稱。

藍(lán)色部分是硬件或平臺相關(guān)的組件,其中:

Platform Firmware是負(fù)責(zé)啟動機(jī)器、實(shí)現(xiàn)休眠/喚醒/重啟等接口的固件,通常指 BIOS/UEFI。它也負(fù)責(zé)生成各個 ACPI 表并提供給操作系統(tǒng)。



ACPI Namespace



前面提到 ACPI 的 Definition Block Tables 由 AML 字節(jié)碼組成,而 AML 字節(jié)碼的生成流程通常如下圖:工程師使用ASL(ACPI Source Language)語言對硬件信息進(jìn)行描述,隨后通過 ASL 編譯器(例如 iASL)將其編譯為 AML 字節(jié)碼,生成 Definition Block Tables,并打包進(jìn)固件:


23b99608-8c9c-11f0-8ce9-92fbcf53809c.png

取自 Basic ACPI Source Language (ASL) Constructs Tutorial[4]



從固件中獲取到 ACPI 表后,操作系統(tǒng)中的 AML Interpreter 會解析 AML 字節(jié)碼,構(gòu)造出硬件設(shè)備的樹狀層次結(jié)構(gòu),這種結(jié)構(gòu)稱為 ACPI namespace。操作系統(tǒng)從ACPI namespace中即可獲取到硬件的各種信息:


23c9b236-8c9c-11f0-8ce9-92fbcf53809c.png

取自 Basic ACPI Source Language (ASL) Constructs Tutorial[4]




ACPI 與 UEFI 的關(guān)系



在 ACPI 出現(xiàn)的場合,通常也能見到 UEFI 的身影。UEFI 全稱是 Unified Extensible Firmware Interface(統(tǒng)一可擴(kuò)展固件接口),它是計(jì)算機(jī)固件的一種規(guī)范,旨在替代 BIOS。


它的前身是英特爾于 1998 年提出的 Intel Boot Initiative,后改名為 EFI(Extensible Firmware Interface,可擴(kuò)展固件接口),再于 2005 年改名為 UEFI 并轉(zhuǎn)交由 UEFI 論壇維護(hù)發(fā)展至今[5]。UEFI 規(guī)范的一個比較出名的實(shí)現(xiàn)是由 TianoCore 社區(qū)開源的 EDK II 工程[6]。


雖然都是規(guī)范,但 ACPI 與 UEFI 關(guān)注的點(diǎn)不同:ACPI 是從硬件抽象的角度定義了操作系統(tǒng)發(fā)現(xiàn)、配置、管理硬件的規(guī)范接口,而 UEFI 定義的是固件與操作系統(tǒng)間軟件層面的規(guī)范接口。從兩者最初制定的目的也能看出差異:ACPI 是為了將 BIOS 固件的電源管理等功能以規(guī)范的接口交由操作系統(tǒng)來主導(dǎo),而 UEFI 則是為了替代 BIOS 固件本身。


ACPI 與 UEFI 初版規(guī)范的提出都有英特爾的參與,并后面都交由 UEFI 論壇[7]維護(hù),兩者間存在著諸多聯(lián)系,但并非強(qiáng)綁定,其他 bootloader(如 U-Boot)也可以支持 ACPI,UEFI 也支持安裝其他的配置表(如 Device Tree)供操作系統(tǒng)使用。不過在個人電腦/服務(wù)器領(lǐng)域,UEFI + ACPI 還是目前最常見、最成熟的使用組合。




為什么 RISC-V 需要支持 ACPI?



在討論 RISC-V 為什么需要支持 ACPI 之前,我們可以看一下發(fā)展路線十分相似的 ARM:同樣都是起家于嵌入式領(lǐng)域,隨后向個人電腦/服務(wù)器領(lǐng)域發(fā)起進(jìn)攻。ARM 所經(jīng)歷過的挑戰(zhàn),在 RISC-V 上也同樣存在。




嵌入式與個人電腦/服務(wù)器的產(chǎn)品生態(tài)差異


嵌入式領(lǐng)域與個人電腦/服務(wù)器領(lǐng)域,兩者的產(chǎn)品生態(tài)形式有較大的不同:


嵌入式領(lǐng)域的產(chǎn)品,通常會存在一個品牌廠商,整合上游廠商提供的軟、硬件,做成一個高度定制化的最終產(chǎn)品,并對其負(fù)責(zé)。例如手機(jī),普通用戶通常接觸到的只有蘋果/華為/小米等最終的手機(jī)品牌廠商,無法輕易更換手機(jī)主板上的硬件,不同手機(jī)的固件/操作系統(tǒng)通常也互不通用。


個人電腦/服務(wù)器領(lǐng)域的產(chǎn)品,普通用戶能直接接觸到的廠商會多很多,CPU、主板、電源、硬盤、顯卡等均可能來自不同的廠商,用戶可選擇合適的零部件產(chǎn)品,自行搭建出滿足自身需求的機(jī)器。各零部件廠商也只對自身的零部件產(chǎn)品負(fù)責(zé)。軟件操作系統(tǒng)的通用性也更強(qiáng),一臺機(jī)器可以運(yùn)行 Windows、Ubuntu 等不同的操作系統(tǒng),同一個操作系統(tǒng)通常也只需一個鏡像就可適配不同的硬件機(jī)器。


(當(dāng)然,目前市面上不乏很多集成化、定制化程度很高的個人電腦產(chǎn)品,例如蘋果公司的 Mac 電腦,或其他一些筆記本電腦,它們的產(chǎn)品形態(tài)更接近于手機(jī)這樣的嵌入式產(chǎn)品,普通用戶無法輕易自行更換其軟、硬件。不過從整體生態(tài)而言,這樣的產(chǎn)品還是相對少數(shù)。)


個人電腦/服務(wù)器生態(tài)中如此多廠商的軟、硬件能相互通用,不可或缺地會存在 “標(biāo)準(zhǔn)”。




個人電腦/服務(wù)器生態(tài)標(biāo)準(zhǔn)的形成


在 20 世紀(jì) 70~80 年代,個人電腦(PC,Personal Computer)剛面向市場時,并不存在統(tǒng)一的標(biāo)準(zhǔn),不同廠商間的個人電腦互不兼容。1981 年 8 月,IBM 推出了 IBM PC,并隨后公布了上面除 BIOS 外的全部技術(shù)資料,并允許第三方公司生產(chǎn)與其兼容的硬件,即采用所謂的開放架構(gòu)(open architecture)。


此舉大大促進(jìn)了整個個人電腦產(chǎn)業(yè)的發(fā)展,IBM PC 逐漸成為事實(shí)上的個人電腦 “開放標(biāo)準(zhǔn)”,與該標(biāo)準(zhǔn)兼容的機(jī)器都統(tǒng)稱為“IBM PC 兼容機(jī)”(IBM PC Compatible)[8]。


隨著計(jì)算機(jī)技術(shù)的發(fā)展,到了 1990 年代,IBM 對個人電腦架構(gòu)的影響力逐漸下降,取而代之的業(yè)界標(biāo)準(zhǔn)變成了“Wintel” [9]:Windows + Intel,代指基于英特爾(Intel)的 x86 處理器、運(yùn)行微軟(Microsoft)的 Windows 操作系統(tǒng)的個人電腦。由英特爾和微軟主導(dǎo)的行業(yè)聯(lián)盟發(fā)布了諸多的軟、硬件規(guī)范:UEFI、ACPI、PCI/PCIe 等,“IBM PC 兼容機(jī)” 的說法也逐漸被“標(biāo)準(zhǔn) PC”(standard PC)以及后續(xù)的 “ACPI PC” 所取代[8]。


Wintel 架構(gòu)在 x86 計(jì)算機(jī)中極具統(tǒng)治力,一直至今。除了臺式機(jī)外,筆記本電腦或服務(wù)器產(chǎn)品也深受其影響,并且即使機(jī)器是基于其他廠商(如 AMD)的 x86 處理器,或運(yùn)行其他的操作系統(tǒng)(如 Linux),也在很大程度上兼容該架構(gòu)。


23dc7e98-8c9c-11f0-8ce9-92fbcf53809c.png

2000 年代的個人電腦主板結(jié)構(gòu)框圖[10]




Device Tree vs ACPI


前面提到說 ACPI 的 ASL 語言可以通過 ACPI namespace 這樣的硬件抽象結(jié)構(gòu)來描述硬件信息,供操作系統(tǒng)使用,而嵌入式領(lǐng)域常用的另外一套技術(shù)方案 —— Device Tree,也能對硬件進(jìn)行抽象。單論硬件抽象功能,兩者并無孰優(yōu)孰劣之分,那隨著 ARM/RISC-V 進(jìn)入個人電腦/服務(wù)器領(lǐng)域,Device Tree 是否有可能伴隨 ARM/RISC-V 的使用慣性而帶入進(jìn)來,并成為與 ACPI 抗衡甚至取代 ACPI 的新行業(yè)標(biāo)準(zhǔn)?


目前來看暫無這樣的趨勢。因?yàn)樵趥€人電腦/服務(wù)器領(lǐng)域,Device Tree 相比 ACPI 還是有以下兩點(diǎn)不足:


一是規(guī)范的涉及范圍:Device Tree 的規(guī)范[11]只涉及如何使用 DTS(Device Tree Source)語言來描述硬件信息,而 ACPI 規(guī)范涉及的范圍更廣:除了如何使用 ASL 語言描述硬件信息,ACPI 規(guī)范還規(guī)定了操作系統(tǒng)如何與底層固件、硬件交互的很多要求。這些規(guī)范的約束,是實(shí)現(xiàn) “一個通用操作系統(tǒng)可運(yùn)行在不同機(jī)器上” 的必要條件之一。


二是靈活性:ASL 語法上更加靈活,如下面的例子,它支持變量賦值、流程控制等運(yùn)算符,可以讓固件在無需修改操作系統(tǒng)的情況下,實(shí)現(xiàn)更加靈活的行為:


DefinitionBlock ("","DSDT",2,"","",0x0){ Name (INT1,0x02) Method (CTDW,1) { local0= arg0 while(local0) { printf("%o",local0) local0-- } } Method (CTUP,1) { local0= arg0 while(local0


因此,目前 Device Tree 有的,ACPI 有;Device Tree 沒有的,ACPI 也有。并且在 ACPI 已經(jīng)是個人電腦/服務(wù)器領(lǐng)域生態(tài)標(biāo)準(zhǔn)的前提下,要擴(kuò)展 Device Tree 讓它成為一個并沒有明顯優(yōu)于 ACPI 的新標(biāo)準(zhǔn),成為一件費(fèi)力又不討好的事情。自然而然地,在嵌入式領(lǐng)域使用更加輕量的 Device Tree,在個人電腦/服務(wù)器領(lǐng)域使用更符合行業(yè)生態(tài)標(biāo)準(zhǔn)的 ACPI,是更加合適的選擇。




ARM 的選擇


嵌入式領(lǐng)域高度定制化的產(chǎn)品特點(diǎn),難以形成行業(yè)內(nèi)通用的標(biāo)準(zhǔn)。在面對個人電腦/服務(wù)器這些有著幾十年歷史、涉及諸多零部件廠商、并且相互間遵循一定行業(yè)標(biāo)準(zhǔn)的 x86 傳統(tǒng)生態(tài)領(lǐng)域時,ARM 嵌入式領(lǐng)域常用的 U-Boot、Device Tree 等技術(shù)方案也難以施展拳腳。那么 ARM 的選擇自然不言而喻:在個人電腦/服務(wù)器也全面擁抱起了 x86 常用的 UEFI、ACPI、SMBIOS 等標(biāo)準(zhǔn)。


對此,ARM 于 2020 年發(fā)布了Arm SystemReady標(biāo)準(zhǔn),對不同產(chǎn)品的軟、硬件做出規(guī)范要求:


23f2ab50-8c9c-11f0-8ce9-92fbcf53809c.png

ARM SystemReady 對不同產(chǎn)品的要求。取自 arm-systemready-whitepaper.pdf[12]



在 2024 年 11 月 21 日發(fā)布的 Arm SystemReady Requirements Specification v3.0[13]中,ARM 調(diào)整了 SystemReady 的分類:


SystemReady LS 被棄用

SystemReady ES 和 SR 統(tǒng)稱為新的 “SystemReady”,用于那些可運(yùn)行一個無需定制化修改的、通用的操作系統(tǒng)的產(chǎn)品,它要求 ACPI 是必須實(shí)現(xiàn)的

SystemReady IR 則改名為 “SystemReady Devicetree”,用于那些運(yùn)行嵌入式 Linux/BSD 操作系統(tǒng)的產(chǎn)品。


240b312a-8c9c-11f0-8ce9-92fbcf53809c.png

取自 Arm SystemReady Requirements Specification v3.0[13]


可見,對于個人電腦/服務(wù)器領(lǐng)域,ACPI 是十分重要的,它是實(shí)現(xiàn)操作系統(tǒng)通用化不可或缺的一環(huán)。




Hardware-reduced ACPI



ACPI 誕生于 x86 架構(gòu),它的規(guī)范中也規(guī)定了需在硬件上實(shí)現(xiàn)的 ACPI 寄存器組,這些寄存器跟 x86 自然有著千絲萬縷的關(guān)系。但 ARM/RISC-V 硬件上不一定實(shí)現(xiàn)有這些寄存器,那它們要如何支持 ACPI 呢?


ACPI 規(guī)范 v5.0 引入了一種新的方法,稱為hardware-reduced ACPI,它不再要求必須實(shí)現(xiàn)以下這些 ACPI 硬件特性[14]:


Power Management (PM) timer

Real Time Clock (RTC) wake alarm

System Control Interrupt (SCI)

Fixed Hardware register set (PMx_* event/control/status registers)

GPE block registers (GPEx_* event/control/status registers)

Embedded controller


相對應(yīng)地,某些功能有了替代的實(shí)現(xiàn)手法。例如 ACPI 的事件通知模型,在傳統(tǒng) x86 上它是通過 SCI(System Control Interrupt)中斷和 GPE(General-Purpose Event)寄存器實(shí)現(xiàn),由 SCI 中斷來觸發(fā) ACPI 事件的產(chǎn)生;而在 hardware-reduced ACPI 中,則變成可通過 GPIO-signaled ACPI Events 或 Interrupt-signaled ACPI Events 這兩種機(jī)制實(shí)現(xiàn),前者是由 GPIO 中斷來觸發(fā) ACPI 事件,后者則可由任意中斷來觸發(fā) ACPI 事件。



ACPI 電源管理




ACPI 電源管理相關(guān)狀態(tài)分類


關(guān)于電源管理,ACPI 規(guī)范中為系統(tǒng)以及設(shè)備定義了以下狀態(tài)(state):


2417f400-8c9c-11f0-8ce9-92fbcf53809c.png

取自 ACPI specification v6.6[2]


系統(tǒng)的全局狀態(tài)Gx(Global System State)與睡眠狀態(tài) Sx(Sleeping State):

G0(S0)- Working:正常工作狀態(tài)。

G1 - Sleeping:以較低功耗運(yùn)行的狀態(tài)。從用戶角度 “看起來” 系統(tǒng)像是關(guān)閉的,但無需重啟操作系統(tǒng)就可回到 G0/S0 狀態(tài)。G1 又細(xì)分為 S1~S4 四種傳統(tǒng)狀態(tài),以及一種相對較近新提出的 S0ix 狀態(tài):

S1 - POS(Power on Suspend):最耗電的睡眠狀態(tài)。該狀態(tài)下會維持 CPU 和內(nèi)存的供電,操作系統(tǒng)的上下文不會丟失。

S2:一種比 S1 更深的睡眠狀態(tài)。該狀態(tài)下 CPU 會斷電。

S3 - STR(Suspend to RAM)/ Standby / Sleep:該狀態(tài)下只有內(nèi)存被供電,除了內(nèi)存外的其他上下文都不會保留。

S4 - STD(Suspend to Disk)/ Hibernation / Non-Volatile Sleep:該狀態(tài)允許主板斷電,操作系統(tǒng)會將上下文保存在非易失存儲介質(zhì)(Non-Volatile Storage)中。

S0ix- 該狀態(tài)有多種名稱:ACPI 規(guī)范中稱之為Low Power S0 Idle[2],英特爾稱之為S0ix[15],微軟稱之為Modern Standby[16],Linux 內(nèi)核稱之為Suspend o Idle 或 S2Idle[17]該睡眠狀態(tài)的功耗接近甚至低于傳統(tǒng)的S3 狀態(tài),并且能更快地恢復(fù)到 G0/S0 狀態(tài)。該狀態(tài)還可以繼續(xù)細(xì)分為 S0i1、S0i2、S0i3 等子狀態(tài)。

G2(S5)- Soft Off:以最低功耗運(yùn)行的狀態(tài)。硬件不保留操作系統(tǒng)的上下文,操作系統(tǒng)經(jīng)重啟后才能回到 G0/S0 狀態(tài)。該狀態(tài)下并不一定能安全地移除硬件。

G3 - Mechanical Off機(jī)械上的斷電狀態(tài)。不保留硬件上下文,可安全移除硬件。操作系統(tǒng)經(jīng)重啟后才能回到 G0/S0 狀態(tài)。該狀態(tài)下除了 RTC(real-time clock)外,功耗為零。

Legacy:如果系統(tǒng)不支持 ACPI,則運(yùn)行在該狀態(tài)。該狀態(tài)下的電源管理通過 APM、Legacy PnP 等規(guī)范實(shí)現(xiàn)。


設(shè)備的電源狀態(tài)Dx(Device Power State):系統(tǒng)處于 G0/S0 狀態(tài)時,設(shè)備可在以下電源狀態(tài)之間切換(設(shè)備不一定會實(shí)現(xiàn)所有這些電源狀態(tài),實(shí)現(xiàn)的狀態(tài)多寡會視設(shè)備類別而有所不同):

D0 - Fully-On:功耗最高的狀態(tài)。設(shè)備完全活躍并能持續(xù)保持所有相關(guān)上下文。

D1:其含義視設(shè)備類別而定。通常會被定義為相比 D2 功耗更高、保留的上下文更多的狀態(tài)。很多設(shè)備都沒有定義該狀態(tài)。

D2:其含義視設(shè)備類別而定。通常會被定義為相比 D1 或 D0 功耗更低、保留的上下文更少的狀態(tài)。很多設(shè)備都沒有定義該狀態(tài)。

D3hot:其含義視設(shè)備類別而定。通常會被定義為在不影響設(shè)備枚舉的情況下功耗盡可能低的狀態(tài)。

D3(D3cold)- Off:設(shè)備完全斷電。該設(shè)備所有上下文都會丟失。在軟件上無法被枚舉到。


CPU 的電源狀態(tài)Cx(Processor Power State):系統(tǒng)處于 G0/S0 狀態(tài)時,CPU 可在以下電源狀態(tài)之間切換:

C0:該狀態(tài)下 CPU 會正常執(zhí)行指令。

C1 - Halt:擁有最短喚醒延遲的狀態(tài)。該狀態(tài)下 CPU 不執(zhí)行指令。

C2 - Stop Clock:比 C1 功耗更低,但喚醒延遲更長。該狀態(tài)下 CPU 不執(zhí)行指令。

C3 - Sleep:比 C2 功耗更低,但喚醒延遲更長。該狀態(tài)下 CPU 不執(zhí)行指令。


CPU 或設(shè)備的性能狀態(tài)Px(Device and Processor Performance State):當(dāng) CPU 或設(shè)備處于活躍狀態(tài)時(C0/D0),可處于以下不同的性能狀態(tài):

P0:性能最高,功耗最大。

P1 ~ Pn:隨著 n 增大,性能降低,功耗也降低。n 的大小視實(shí)際 CPU 和設(shè)備而定,最大不超過 255。




Hardware-reduced ACPI 的電源管理實(shí)現(xiàn)


系統(tǒng)級睡眠狀態(tài) Sx


傳統(tǒng) x86 ACPI 會借助硬件寄存器來實(shí)現(xiàn) Sx 狀態(tài)切換,而對于使用 hardware-reduced ACPI 的 ARM/RISC-V,通常也不與 x86 的 ACPI 方法兼容。但所幸,它們都定義有架構(gòu)內(nèi)通用的規(guī)范接口,并且也可使用 UEFI 的一些標(biāo)準(zhǔn)接口:


UEFI runtime service(運(yùn)行時服務(wù))ResetSystem()可供操作系統(tǒng)調(diào)用來實(shí)現(xiàn)重啟或關(guān)機(jī)的功能,從而實(shí)現(xiàn) G0/S0 與 G2/S5 狀態(tài)間的切換。通過 UEFI runtime service,與硬件平臺相關(guān)的寄存器操作被下放到 UEFI 或更底層的固件中,對操作系統(tǒng)不可見,操作系統(tǒng)只需調(diào)用 UEFI 的標(biāo)準(zhǔn)接口即可實(shí)現(xiàn)重啟和關(guān)機(jī)的功能。


ARM 定義有SCMI(System Control and Management Interface)規(guī)范,可提供一套標(biāo)準(zhǔn)接口用于電源、性能以及系統(tǒng)管理[18],從而實(shí)現(xiàn) Sx 狀態(tài)的切換。


RISC-V 定義 SBI(Supervisor Binary Interface)規(guī)范[19],通過以下這些標(biāo)準(zhǔn)接口可實(shí)現(xiàn) Sx 狀態(tài)的切換:

SBISRST(System Reset)Extension:可用于實(shí)現(xiàn)重啟/關(guān)機(jī)功能。

SBISUSP(System Suspend)Extension:可用于實(shí)現(xiàn)休眠功能。


設(shè)備電源狀態(tài) Dx


設(shè)備的 Dx 電源狀態(tài)不涉及 ACPI 硬件寄存器,ARM/RISC-V 也與 x86 相同,通過 ACPI 規(guī)范中定義的 ASL 對象(object)來實(shí)現(xiàn),具體包含以下這些:


242ce57c-8c9c-11f0-8ce9-92fbcf53809c.png

取自 ACPI specification v6.6[2]


24402830-8c9c-11f0-8ce9-92fbcf53809c.png

取自 ACPI specification v6.6[2]


CPU 電源狀態(tài) Cx 與性能狀態(tài) Px


對于 CPU 的電源狀態(tài) Cx 與性能狀態(tài) Px,ACPI 規(guī)范中均提供了方法供實(shí)現(xiàn) hardware-reduced ACPI 的平臺使用:


LPI(Low Power Idle)States機(jī)制:結(jié)合 FFH 規(guī)范,通過該指令集架構(gòu)平臺自身的方法實(shí)現(xiàn) CPU 的 Cx 狀態(tài)控制。


CPPC(Collaborative Processor Performance Control)機(jī)制:結(jié)合 FFH 規(guī)范,通過協(xié)處理器對主處理器的 Px 狀態(tài)進(jìn)行控制。


LPI States 和 CPPC 兩套機(jī)制都要結(jié)合FFH(Functional Fixed Hardware)規(guī)范使用,F(xiàn)FH 規(guī)范讓 ACPI 規(guī)范可以對接到各指令集架構(gòu)平臺自身內(nèi)部的、架構(gòu)間各異的一些實(shí)現(xiàn)方法。x86/ARM/RISC-V 都分別定義有自己的 FFH 規(guī)范[20][21][22]。


例如 RISC-V,F(xiàn)FH 最終會對接到 SBI 擴(kuò)展的實(shí)現(xiàn)中:


Cx 狀態(tài)的控制由 “ACPI LPI States 機(jī)制 + RISC-V FFH 規(guī)范 + RISC-V SBI HSM(Hart State Management)Extension” 實(shí)現(xiàn)。


Px 狀態(tài)的控制由 “ACPI CPPC 機(jī)制 + RISC-V FFH 規(guī)范 + RISC-V SBI CPPC Extension” 實(shí)現(xiàn)。




RISC-V ACPI 的相關(guān)規(guī)范



借 ARM 的 “他山之石”,RISC-V 社區(qū)早早地認(rèn)識到了在個人電腦/服務(wù)器領(lǐng)域?qū)由鷳B(tài)標(biāo)準(zhǔn)的重要性,因此十分積極地制定了一些相關(guān)規(guī)范,其中涉及 ACPI 的有:


RISC-V BRS(Boot and Runtime Services)Specification[23]:分別為通用系統(tǒng)和定制化系統(tǒng)提出了BRS-I(Interoperable)和BRS-B(Bespoke)兩套標(biāo)準(zhǔn),定義了它們在設(shè)備發(fā)現(xiàn)、系統(tǒng)管理等方面的軟件要求(類似于 ARM 的 “SystemReady” 和 “SystemReady Devicetree”),其中也包括對 RISC-V ACPI 的一些新增定義與實(shí)現(xiàn)要求:


24502794-8c9c-11f0-8ce9-92fbcf53809c.png

為 RISC-V 新增的 ACPI ID。取自 RISC-V BRS specification v0.91[23]


245e725e-8c9c-11f0-8ce9-92fbcf53809c.png

RISC-V 必須實(shí)現(xiàn)的 ACPI 表。取自 RISC-V BRS specification v0.91[23]


246e372a-8c9c-11f0-8ce9-92fbcf53809c.png

RISC-V 可按需實(shí)現(xiàn)的 ACPI 表。取自 RISC-V BRS specification v0.91[23]



ACPI 規(guī)范中一些原有內(nèi)容也增加 RISC-V 的支持,例如新增了描述 RISC-V Hart 能力的RHCT(RISC-V Hart Capabilities Table),在MADT(Multiple APIC Description Table)中增加描述 RISC-V 中斷控制器 AIA 和 PLIC 的結(jié)構(gòu),等等:


24810dfa-8c9c-11f0-8ce9-92fbcf53809c.png

ACPI v6.6 的改動(截圖中并沒有囊括所有),其中包含很多 RISC-V 內(nèi)容。取自 ACPI specification v6.6[2]


RIMT(RISC-V IO Mapping Table)Specification[24]:定義了描述 RISC-V IOMMU 信息的 ACPI 表的規(guī)范。


RISC-V FFH(Functional Fixed Hardware)Specification[22]:定義了 RISC-V 的 ACPI FFH 規(guī)范,供 ACPI 的 LPI States 機(jī)制和 CPPC 機(jī)制使用,實(shí)現(xiàn)對 CPU Cx 狀態(tài)和 Px 狀態(tài)的控制。




進(jìn)迭時空芯片對 ACPI 的支持



目前進(jìn)迭時空已經(jīng)量產(chǎn)的 8 核 64 位 RISC-V AI CPU 芯片 K1,已經(jīng)基于開源的 Tianocore EDK II[6],完成了對 UEFI 的適配,預(yù)計(jì)在不遠(yuǎn)的將來也會加入 ACPI 的支持,在終端領(lǐng)域適配更加通用、開放的生態(tài)。


另外進(jìn)迭時空正在研發(fā)中的服務(wù)器芯片平臺,基于自研的 X100 高性能處理器核,完整支持虛擬化、安全、RAS 等服務(wù)器特性,符合 RISC-V Server SoC Specification v1.0[25]規(guī)范的要求,目前也已經(jīng)完成了 UEFI + ACPI 的適配,可基于 ACPI 啟動 Linux 內(nèi)核:


2493f988-8c9c-11f0-8ce9-92fbcf53809c.png

進(jìn)迭時空服務(wù)器芯片平臺 Linux 內(nèi)核啟動日志




結(jié)語



RISC-V 因 “開放” 的優(yōu)勢而發(fā)展迅猛,但 “碎片化” 的烏云也一直籠罩在其上空。為此 RISC-V 社區(qū)制定了各種軟、硬件規(guī)范,也接受了源自于 x86 的 ACPI,讓碎片化問題逐步得以改善。相信在不遠(yuǎn)將來的某一天,RISC-V 也能像 x86 那樣,只需一個操作系統(tǒng)鏡像就可在不同的機(jī)器上運(yùn)行。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ACPI
    +關(guān)注

    關(guān)注

    1

    文章

    14

    瀏覽量

    9206
  • 電源接口
    +關(guān)注

    關(guān)注

    0

    文章

    68

    瀏覽量

    18741
  • RISC-V
    +關(guān)注

    關(guān)注

    47

    文章

    2698

    瀏覽量

    50849
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    關(guān)于RISC-V二三

    基于RISC-V指令集規(guī)范,既可以由開源社區(qū)來開發(fā)開源免費(fèi)版的處理器實(shí)現(xiàn)(如Berkeley開發(fā)的Rocket核等),也可以有商業(yè)公司開發(fā)收費(fèi)授權(quán)版的處理器實(shí)現(xiàn)(如國內(nèi)平頭哥玄鐵910、芯來N200核與優(yōu)矽渭河WH-32核等)。
    發(fā)表于 08-15 14:24 ?4989次閱讀

    什么是RISC-V

    siFive搞RISC-V 賽昉搞RISC-V 香山搞RISC-V 到底什么是RISC-V? 先不問有什么用,RISC-V目前的能力來說,工
    發(fā)表于 02-02 10:41

    淺談RISC-V

    RISC-V社區(qū)最近很熱鬧,也有人來問我的看法。這里胡扯兩句。RISC-V這么熱鬧,媒體功不可沒。在中國,媒體就是生產(chǎn)力。在2016年ARM被孫正義收購以后,一下子成為了一個大IP,關(guān)注度急劇上升
    發(fā)表于 09-11 17:44

    為什么選擇RISC-V?

    RISC-V是一種開放式ISA(指令集體系結(jié)構(gòu)),為處理器體系結(jié)構(gòu)的創(chuàng)新開創(chuàng)了新紀(jì)元。RISC-V基金會由325多家成員公司組成。這是該技術(shù)的主要優(yōu)勢。軟件架構(gòu)師/固件工程師/軟件開發(fā)
    發(fā)表于 07-27 17:38

    RISC-V你了解多少?

    為 riscv-basics.com 的網(wǎng)站。里面的內(nèi)容主題為“設(shè)計(jì)系統(tǒng)芯片之前需要考慮的五件”,從成本、碎片化風(fēng)險、生態(tài)系統(tǒng)、安全性和設(shè)計(jì)保證上對 RISC-V 進(jìn)行“攻擊”。此舉自然引起了 RISC-V
    發(fā)表于 08-13 15:13

    什么是RISC-V? RISC-V指令具有哪些特點(diǎn)應(yīng)用?

    什么是RISC-V?RISC-V指令具有哪些特點(diǎn)應(yīng)用?自己怎么才能設(shè)計(jì)出設(shè)計(jì)一套指令集?
    發(fā)表于 10-14 09:05

    【轉(zhuǎn)載】RISC-V 能打 50 年!risc-v 現(xiàn)在和未來的發(fā)展

    ,揭開這個“年少有為”的開源指令集架構(gòu)的神秘面紗。重點(diǎn)速覽:向 Linux 基金會學(xué)習(xí): 學(xué)會如何去構(gòu)建開源社區(qū)是一件很重要的,也希望在硬件領(lǐng)域開拓新天地的 RISC-V 能在該領(lǐng)域“繼承 Linux
    發(fā)表于 02-27 20:02

    RISC-V 發(fā)展

    RISC-V 發(fā)展2015年成立了RISC-V基金會,這是個非營利性組織,主要為了維護(hù)和發(fā)展RISC-V。目前RISC-V的IP供應(yīng)商大部分是國內(nèi)的廠商,例如sifive、阿里平頭哥、
    發(fā)表于 04-14 10:18

    RISC-V規(guī)范的演進(jìn) RISC-V何時爆發(fā)?

    RISC-V的關(guān)注度越來越高,開源的理念也正在被越來越多的開發(fā)者和公司接受。對于尚不成熟的RISC-V而言,無論是規(guī)范和技術(shù)的演進(jìn)還是生態(tài)的建設(shè),還有人才和專利都還有不小挑戰(zhàn)。2021年RISC-V
    的頭像 發(fā)表于 02-11 10:10 ?3777次閱讀

    RISC-V學(xué)習(xí)筆記【1】RISC-V概述

    國產(chǎn)處理器芯片起步較晚,從2013年至今,集成電路每年的進(jìn)口額均超過了 2000 億美元。RISC-V和AI(人工智能)芯片是我國最有希望突破的領(lǐng)域之一。RISC-V使用的領(lǐng)域還是對于生態(tài)依賴比較
    發(fā)表于 11-24 09:28 ?3067次閱讀

    openEuler加入RISC-V Landscape

    北京時間2023年3月8日,openEuler加入RISC-V Landscape。 此次加入RISC-V Landscape,意味著openEuler在對RISC-V架構(gòu)的生態(tài)適配
    的頭像 發(fā)表于 03-13 18:40 ?1810次閱讀

    聊一聊RISC-V處理器的二三

    近幾年,RISC-V在全球范圍內(nèi)攻城略池,不少企業(yè)都開始研發(fā)基于RISC-V架構(gòu)的芯片。不過,研發(fā)并非易事,可謂有人歡喜有人愁。
    發(fā)表于 07-03 16:26 ?1388次閱讀
    聊一聊<b class='flag-5'>RISC-V</b>處理器的<b class='flag-5'>二三</b><b class='flag-5'>事</b>

    RISC-VRISC-V AI的未來(特邀講座)

    主題演講:RISC-VRISC-V AI的未來(特邀講座)ppt分享
    發(fā)表于 07-14 17:15 ?20次下載

    RISC-V設(shè)計(jì)支持工具,支持RISC-V技術(shù)的基礎(chǔ)

    RISC-V設(shè)計(jì)支持工具,支持RISC-V技術(shù)的基礎(chǔ) ppt分享
    發(fā)表于 07-14 17:15 ?22次下載

    加入全球 RISC-V Advocate 行列,共筑 RISC-V 的未來 !

    加入RISC-VAdvocate行列!我們正在尋找來自世界各地的RISC-V愛好者,通過全球推廣和參與,成為支持RISC-V進(jìn)步的關(guān)鍵參與者。作為一名RISC-VAdvocate,您將
    的頭像 發(fā)表于 09-10 08:08 ?1134次閱讀
    加入全球 <b class='flag-5'>RISC-V</b> Advocate 行列,共筑 <b class='flag-5'>RISC-V</b> 的未來 !