高級配置與電源接口
高級配置與電源接口(英語:Advanced Configuration and Power Interface,縮寫:ACPI),是1997年由英特爾、微軟、東芝共同提出、制定的操作系統電源管理、硬體組態介面,是一種開放標準,取代了進階電源管理、多處理器規範、舊式隨插即用規範。2000年8月康柏和鳳凰科技加入,推出 ACPI 2.0規格。2004年9月惠普取代康柏,推出 ACPI 3.0規格。2009年6月16日則推出 ACPI 4.0規格。2011年11月23日推出ACPI 5.0規格。由於ACPI技術正被多個操作系統和處理器架構採用,該規格的管理模式需要與時俱進。2013年10月,ACPI的推廣者們一致同意將ACPI的屬有歸到UEFI論壇。今後新的ACPI規格將由UEFI論壇制定。ACPI定義了系統韌體(BIOS或UEFI)和作業系統之間的硬體抽象介面[1][2]。
狀態 | 已出版 |
---|---|
首次出版 | 1996年12月 |
最新版本 | 6.5 2022年8月 |
組織 | |
有關標準 | UEFI |
領域 | 電源管理固件 |
縮寫 | ACPI |
網站 | uefi |
概要
編輯首先,進階電源管理(APM, Advanced Power Management)將電源管理幾乎完全分配給BIOS控制,這大大的限制了操作系統在控制電能消耗方面的功能。
ACPI可以實現的功能包括:
- 系統電源管理(System power management)
- 設備電源管理(Device power management)
- 處理器電源管理(Processor power management)
- 設備和處理器性能管理(Device and processor performance management)
- 配置/即插即用(Configuration/Plug and Play)
- 系統事件(System Event)
- 電池管理(Battery management)
- 溫度管理(Thermal management)
- 嵌入式控制器(Embedded Controller)
- SMBus控制器(SMBus Controller)
Windows 98是微軟第一個支持ACPI的操作系統。FreeBSD v5.0是支持ACPI的第一個UNIX操作系統 [來源請求]。Linux、NetBSD和OpenBSD都支持ACPI。Windows Vista及以後的Windows要求電腦必須支援ACPI。
ACPI術語(部分)
編輯- 高級配置電源管理接口(Advanced Configuration and Power Interface (ACPI))
- 按照在本文中的定義, ACPI是一種描述硬件接口的方法,要足夠抽象以允許靈活創新的硬件實現,並且足夠具體以允許shrink-wrap OS code使用這個硬件接口
- ACPI硬件(ACPI Hardware)
- 它是一種電腦硬件,具有支持OSPM所必備的特性,而且還具有特定的接口,這些接口的特性是由ACPI規範所指定的描述表(Description Tables)所描述的。
- ACPI命名空間(ACPI Namespace)
- 一個樹狀層次機構,在受操作系統控制的內存裡面,這段內存裡面包含命名對象(named objects)等。這些對象(objects)可以是數據對象,控制方法對象,總線/設備包對象等。操作系統通過從駐留在 ACPI BIOS 中的 ACPI Tables 載入載出(loading and/or unloading)定義塊(definition blocks),來動態改變命名空間(namespace)的內容。在ACPI Namespace 中的所有信息都來自 Differentiated System Description Table (DSDT),DSDT 裡面包含了 Differentiated Definition Block 還有一個或者多個其他的定義塊(definition blocks)。
- ACPI機器語言(ACPI Machine Language (AML))
- 是一種由ACPI兼容的OS支持的虛擬機的偽代碼(Pseudo-code),裡面寫有ACPI控制方法和控制對象。
- 高級可編程中斷控制器(Advanced Programmable Interrupt Controller (APIC))
- 一個中斷控制器架構,通常多見於Intel32位架構(Intel Architecture-based 32-bit)的PC系統。APIC架構支持多處理器中斷管理(中斷均勻的分布在所有處理器),多I/O子系統支持,與8259A兼容,並且支持處理器內部中斷(Inter-Processor Interrupt, IPI)。這個架構由直屬於處理器的本地APICs(Local APICs)和在(南橋)芯片中的I/O APIC組成。
- ACPI源語言(ACPI Source Language (ASL))
- 一種和AML等同的編程語言。ASL編譯以後就是AML鏡像(AML images)。
- 控制方法(Control Method)
- 控制方法定義OS如何執行一個簡單的硬件任務。例如,OS調用控制方法(Control Method)去讀取一個高溫區的溫度。控制方法是用一種叫做AML的編碼語言寫的,AML可以被兼容ACPI的OS所解釋並執行。ACPI兼容的系統必須在ACPI table中提供一組最小的控制方法。OS提供一組well-defined 的控制方法,以使ACPI table開發者能夠在他們的控制方法中引用。OEM廠商可以通過,要麼Including control methods in the BIOS that test configurations and respond as needed,要麼為芯片組的不同修訂版包含一組不同的控制方法,來使一個BIOS能夠同時支持芯片組的不同修訂版。
- 中央處理器或者處理器(Central Processing Unit (CPU) or Processor)
- 定義區塊(Definition Block)
- Definition Blockl以數據和控制方法(編碼成AML)的形式包含關於硬件實現和配置詳細信息。OEM廠商可以在ACPI Tables中提供一個或者多個Definition Blocks。有一個definition block是必須被提供:那就是Differentiated Definition Block,它描述了基本的系統。在裝載Differentiated Definition Block之後,緊接着OS會把Differentiated Definition Block的內容插入到ACPI Namespace。OS可以動態的從the active ACPI Namespace插入和刪除的其他definition blocks,可以包含指向Differentiated Definition Block的引用。
- 裝置(Device)
- 熱溫區(Thermal Zone)
- ACPI 風扇(Fan)
- 裝置上下文(Device Context)
- 裝置中包含的變化的數據;通常是易失性(volatile)數據。當進入或者離開特定的狀態(states)的時候,設備應該忘記這些信息,在這種情況下OS軟件負責保存並恢復這些信息。設備上下文(Device Context)指的是包含在設備周邊的小數量的信息。同樣可以看看系統上下文。
- 區分系統描述表(Differentiated System Description Table (DSDT))
- OEM廠商必須為ACPI兼容的OS提供一個DSDT。這個DSDT包含區分定義塊,它能提供關於基本系統的實現和配置信息。OS總是在ACPI Namespace中插入DSDT信息,當系統啟動的時候,而且絕不會刪除它。
- 它是一個在OS和固件平台之間的接口。
- 嵌入式控制器(Embedded Controller)
- 嵌入式控制器介面(Embedded Controller Interface)
- 韌體ACPI控制結構(Firmware ACPI Control Structure (FACS))
- 在讀寫內存中的一種結構,BIOS用它來實現韌體和OS之間的信息交換(handshaking )。通過FADT(Fixed ACPI Description Table)FACS被轉到兼容ACPI的OS中。FACS包含上次啟動時的系統硬件簽名,firmware waking vector,和Global Lock。
- 固定ACPI描述表(Fixed ACPI Description Table (FADT))
- 一個包含ACPI 硬件寄存器塊(Hardware Register Block)的實現和配置詳細信息的表,OS需要用這些配置信息來直接管理ACPI硬件寄存器塊和DSDT的物理地址,DSDT則包含其他平台的實現和配置詳細信息。 OEM廠商必須在RSDT/XSDT中提供FADT給兼容ACPI的OS。當系統啟動的時候,OS則總是把已經定義好了的namespace信息(它存在於DSDT的Differentiated Definition Block中)插入到ACPI Namespace,並且OS絕不會刪除它。
- 固定特徵(Fixed Features)
- ACPI接口提供的一組特徵。ACPI規範限制硬件編程模型(hardware programming model)在哪產生還有如何產生的。所有的Fixed Features,如果被使用了,會按照本片規範中的描述進行實現,以使OSPM能夠直接訪問Fixed Features寄存器(fixed feature registers)。
- 固定特徵事件(Fixed Feature Events)
- 一組事件,當Fixed Feature寄存器中的一對狀態和事件位(event bits)被在同一時間設定時,這組事件會在ACPI接口處發生。當一個Fixed Feature時間發生時,系統控制中斷(SCI,system control interrupt)is raised。對於ACPI Fixed Feature Events來說OSPM(or an ACPI-aware driver)扮演事件的處理者。
- 固定特徵寄存器(Fixed Feature Registers)
- 一組在fixed feature register space中的硬件寄存器,fixed feature register space在系統I/O地址空間的特殊的地址里。ACPI為fixed features定義了寄存器塊(register blocks)(每個寄存器塊從FADT那裡得到一個單獨的指針)
- 一般目的事件寄存器(General-Purpose Event Registers)
- The general-purpose event registers contain the event programming model for generic features. All general-purpose events generate SCIs.
- 一般特徵(Generic Feature)
- 全局系統狀態(Global System States)
- Global System States適用於整個系統,而且對於用戶是可見的。各種不同的Global System States在ACPI規範中是從G0標記到G3的。
- 省略位(Ignored Bits)
- 在ACPI硬件寄存器中的一些沒有被使用的位(bits),在ACPI規範中會指定這些位是「ignored」的。在讀的時候,軟件會忽略ACPI硬件寄存器中的Ignored Bits位(而不去讀取它),寫的時候,會保護Ignored Bits(不去寫這寫位)。
- Intel個人電腦架構(Intel Architecture-Personal Computer (IA-PC))
- 一種對於計算機的一般描述術語,這種計算機的處理器架構符合Intel處理器家族基於Intel架構指令集(Intel Architecture instruction set)的定義,並且有工業標準(industry-standard)PC的結構。
- I/O APIC(Input/Output Advanced Programmable Interrupt Controller)
- 一個輸入輸出高級可編程中斷控制器,用來從設備傳遞中斷給處理器裡面的本地APIC(local APIC)。
- I/O SAPIC
- An Input/Output Streamlined Advanced Programmable Interrupt Controller用來從設備傳遞中斷給處理器裡面的本地APIC(local APIC)。應用於安騰處理器(Itanium)。和APIC的不同可以看看Intel® Itanium® Processor Family Interrupt Architecture Guide ,PDF文檔的最後一章會講到不同點。
- 老式的(Legacy)
- 這是一種電腦狀態,在這個電腦狀態下電源管理策略是由平台硬件/固件決定的。在如今的系統中,傳統電源管理特性被用來支持安裝有傳統OS的電腦中的電源管理,這種傳統OS並不支持OS直接管理電源架構(OS-directed power management architecture)。
- 老式的硬件(Legacy Hardware)
- 沒有ACPI或者OSPM電源管理支持的電腦系統。
- 老式的操作系統(Legacy OS)
- 此類的作業系統無法得知或對系統的電源管理功能做管理,包含在此類型內的如一些支援APM 1.x的作業系統。
- 本地APIC(Local APIC)
- 接收來自I/O APIC的中斷。
- 本地SAPIC(Local SAPIC)
- 接收來自I/O SAPIC的中斷。關於SAPIC,請看「I/O SAPIC」。
- 複合APIC描述表(Multiple APIC Description Table (MADT))
- 它被用在支持APIC和SAPIC的系統上,以描述APIC的實現。Following the MADT is a list of APIC/SAPIC structures that declare the APIC/SAPIC features of the machine.
- 對象(Object)
- ACPI Namespace的節點就是objects,這些objects被OS用system definition tables中的信息插入tree。這些objects可以是數據對象(data objects),包對象(package objects),控制方法對象(control method objects)等。包對象refer to其他對象(objects)。對象同樣擁有類型(type),大小(size),和相對名稱(relative name)。
- 對象名(Object name)
- ACPI Namespace的一部分。有一組規則for naming objects。
- 操作系統直接電源管理(Operating System-directed Power Management (OSPM))
- 電源(和系統)管理的一個模型,在其中OS扮演重要的角色,使用全局信息為手邊的任務優化系統行為(system behavior)。
- 包(Package)
- 一組objects。
- 電源按鈕(Power Button)
- 用戶按的按鈕或者其他有觸點的開關(switch contact)設備,通過它可以把系統從睡眠或者soft off狀態切換到工作狀態,還可以給OS發送信號使OS從睡眠或者soft off狀態恢復到工作狀態。
- 電源管理(Power Management)
- 一種最小化系統電源消耗的軟硬件機制,管理系統熱量限制,延長系統電池使用時間(battery life)。電源管理在系統速度,噪音,電池使用時間,處理器速度,還有電源消耗之間取得平衡。一些system functions,比如appliance (for example, answering machine, furnace control) operations,需要電源管理。
- 電源資源(Power Resources)
- 設備需要的資源(比如power planes和clock sources),設備需要在給定的電源狀態下對這些資源進行操作。
- 電源來源(Power Sources)
- 寄存器分組(Register Grouping)
- 由兩個寄存器塊組成(它有兩個指向兩個不同寄存器塊的指針)。在寄存器分組(register grouping)內部的固定位可以被在兩個寄存器塊(register blocks)之間拆分。這就允許了在寄存器分組內部的位可以被在兩個芯片(chips)之間拆分。
- 保留位(Reserved Bits)
- 在ACPI硬件寄存器中有一些沒有被使用的位,在ACPI規範中被稱為保留位。為了未來能夠擴展,硬件寄存器保留位總是被歸零,並且寫入的數據不會造成其他的影響。OSPM的實現必須往所有使能和狀態寄存器的保留位寫「0」,同樣還要往控制寄存器(control registers)的preserve bits寫「0」
- 根系統描述指針(Root System Description Pointer (RSDP))
- 兼容ACPI的系統必須在系統低地址空間(system’s low address space)提供一個RSDP。這種結構的唯一目的就是提供RSDT和XSDT的物理地址。
- 根系統描述表(Root System Description Table (RSDT))
- signature為RSDT的table,它跟隨在一組指向其他系統描述表(system description tables)的物理指針之後。OS通過跟隨RSDP結構中的指針來定位RSDT。
狀態
編輯全局狀態(Global System States,G-State)
編輯ACPI規範定義了一台兼容ACPI的計算機系統可以有以下七個狀態(所謂的全局狀態):
- G0(S0)正常工作狀態:計算機的正常工作狀態-操作系統和應用程序都在運行。CPU執行指令。 在這個狀態下(即沒有進入G1睡眠),CPU、硬盤、光碟機等設備可以進入節能狀態(如裝置和處理器效能狀態P-State、裝置電源狀態D-State、處理器電源狀態C-State)或從節能狀態恢復。
- G1 睡眠 細分為從S0ix到S4等幾種狀態。Linux內核的/sys/power/state檔案中對應的關鍵字與狀態: standby(S1), mem(S3), disk(S4)。在Windows中可用
powercfg /a
命令列出平台支援的ACPI G1狀態。- S0ix:Modern Standby。只有BIOS、作業系統和所有的硬件都支援S0ix才能使用Modern Standby[3]。S0ix與S3不相容。
- S1:最耗電的睡眠模式。CPU的所有寄存器被刷新,並且CPU停止執行指令。CPU和內存的電源被維持。這種模式通常叫Power on Suspend或者叫做POS。老式的電腦對S1支持可能比S3好。
- S2:一種比S1更深的睡眠狀態,停止CPU的電源供應。然而,這種模式通常並不被採用。
- S3 :又稱為Suspend to RAM或STR,在Windows XP以後的Windows版本和一些Linux發行版中叫做"待機(Standby)", 在Windows Vista和Mac OS X則叫做"睡眠(Sleep)"。在這個狀態下,RAM是唯一的有電源供應的元件。S3的恢復的過程比S4快。如果S3睡眠過程中斷電,則所有儲存在RAM中的資料將遺失。S3是筆記型電腦最常用的睡眠模式。
- S4: 在Windows中叫休眠 ,在Mac OS X中叫作安全睡眠,也稱為Suspend to Disk。在這個狀態下,所有內存的內容被儲存在硬盤,儲存操作系統當前的狀態。S4和S3之間的差異是:S4消耗的時間較S3長;S3狀態下的時候如果系統斷電,則所有RAM上的數據就會丟失,包括所有的沒有保存的文檔,而在S4狀態下則沒有影響。S4和"S1-S3"狀態有很大不同,更類似G2Soft Off狀態和G3 Mechanical Off狀態。在S4狀態下的系統同樣可進入G3(Mechanical Off)狀態,並且保留S4時候的狀態信息。在Windows中可用
powercfg
命令的/h
開關設定Windows的休眠功能。
- G2(S5)Soft Off--G2,S5,和Soft Off都是相同的叫法。G2和G3Mechanical Off幾乎是相同的,但有些部件仍然帶電,使計算機仍然可以被鍵盤、時鐘(RTC)、數據機、LAN、USB等設備所喚醒。[4]在啟動系統從G2恢復到G0正常工作模式的過程中,無論是G3 Mechanical Off還是G2都得運行啟動程式來啟動操作系統。
此外,當操作系統在不支持ACPI的情況下運行,這種狀態被定義為Legacy。在這個狀態下,硬件和電源不是通過ACPI來管理的,而是由進階電源管理(APM)、舊式隨插即用(Legacy Plug and Play)等管理。
- G3(S6)Mechanical Off--G3,S6,和Mechanical Off都是相同的叫法。即全部件斷電,在這種情況下只能從開機鍵喚醒。
(參考資料:ACPI規範3.0b版的鏈接在下面 External links, 查看chapter 7.3.4)
設備電源狀態(Device Power State)
編輯當一個設備已沒有電源供應的時候,可能整個電腦系統還在工作,光驅是一個很好的例子。 設備狀態是與設備相關的狀態,他們的定義和以下四個因素有關:
電源消耗(Power consumption),設備用電量的多少。
設備狀態/環境(Device context),設備(從D0進入其他狀態的時候)保留了多少原來的狀態/環境。操作系統負責保存丟失的設備狀態/環境。
設備驅動(Device driver),讓設備恢復到D0,驅動程序應該做什麼(或者做多少)。
設備狀態有以下幾個:
- D0 Fully-On 是(正常)工作狀態,電源消耗量最多,設備是完全被響應的,並且設備保留了全部的設備狀態/環境。
- D1 和 D2是中間電源狀態,它的定義根據設備的不同而有所不同。
- D3 Off是設備電源關閉所以對總線來說是沒有相應的。設備狀態/環境全部丟失,操作系統會重新初始化設備當重新給它加電的時候。這個狀態下的設備恢復到D0相比之下需要最長的時間。
設備狀態 | 電源消耗 | 保留設備狀態信息 | 驅動程序恢復 |
---|---|---|---|
D1 | D0>D1>D2>D3 | >D2 | <D2 |
D2 | D0>D1>D2>D3 | <D1 | >D1 |
D3 - Off | 0 | 沒有保留 | 完全初始化並且裝載 |
處理器電源狀態(Processor Power State)
編輯處理器電源狀態(C0,C1,C2,C3……Cn狀態)是指在G0狀態下的處理器電能消耗和溫度管理的狀態。
只有C0狀態下CPU才會執行指令,C1到Cn狀態下CPU都處於各種不同程度的睡眠狀態(Sleeping States),在這睡眠狀態下,CPU都有一個恢復到C0的喚醒時間(latency),它是和CPU的電能消耗有關的,通常,用電能量越小意味着得花更長的時間恢復到C0狀態,也就是喚醒時間越長。
當在C0狀態下時,ACPI可以通過性能狀態(P-states)來改變處理器的性能。
各個狀態的定義如下所示:
- C0是正常工作狀態,當處理器處於這種狀態下的時候,它能正常處理指令。
- C1(通常稱為Halt),擁有最短的喚醒時間,這個延時必須短到操作系統軟件使用CPU的時候不會考慮到喚醒時間方面的因素。一些處理器,比如Pentium 4、酷睿,支持C1E(Enhanced C1 state)。
- C2 (通常稱為Stop-Clock),這個狀態下處理器維持着所有的軟件所見的狀態信息,但是需要更長的時間來恢復到C0。這個狀態下情況最壞的硬件喚醒時間是由ACPI固件提供,並且操作系統可以利用這些信息來決定是採用C1而不是C2狀態,C2比C1更省電。
- C3 (通常稱為Sleep),相比C1和C2更省電了。這個狀態下情況最壞的硬件喚醒時間是由ACPI固件提供,並且操作系統可以利用這些信息來決定是採用C2而不是C3狀態,當處於C3狀態時,處理器緩存保留了所有的狀態信息,但是忽略所有的偵聽。操作系統負責保證緩存數據的一致性。
- 附加的C-State由處理器廠商來定義,如Intel Haswell處理器最多有C10。
設備和處理器性能狀態(Device and Processor Performance States)
編輯設備和處理器性能狀態(Px狀態)是在C0(對於處理器)和D0(對於設備)下定義的電源消耗和能力的狀態。性能狀態允許OSPM在性能和能源消耗之間取得平衡。P0是最高性能狀態,從P1到Pn是連續的低性能狀態,最高限制n為16。
- P0狀態,使用最大性能並且消耗的電能最多。
- P1狀態,性能比前者要小,但是消耗電能也相應少一些。
- Pn狀態,n是的大小是依賴於處理器和設備的,處理器和設備可以定一個任意的不超過16的數字。
這個狀態在Intel處理器中稱為SpeedStep,在AMD處理器中稱為PowerNow!、Cool'n'Quiet,在VIA處理器中稱為PowerSaver。
參見
編輯參考文獻
編輯- ^ What is ACPI (Advanced Configuration and Power Interface)? - Definition from WhatIs.com. SearchWindowsServer. [2020-09-18]. (原始內容存檔於2019-05-15) (英語).
- ^ ACPI Device Tree - Representation of ACPI Namespace — The Linux Kernel documentation. www.kernel.org. [2020-09-18]. (原始內容存檔於2020-08-05).
- ^ 新式待命. docs.microsoft.com. [2020-03-20]. (原始內容存檔於2022-04-23) (中文(繁體)).
- ^ Aram Kananov » How To: ACPI Suspend to RAM on Dell Latitude D800 with Fedora Core 3 網際網路檔案館的存檔,存檔日期2008-10-02.