close
Advanced Configuration and Power Interface(ACPI)
-
Introduction
- 是由 Intel、Microsoft、Phoenix、HP 和 Toshiba 等公司共同制定的電腦電源管理規格,讓作業系統可以直接的管理各種裝置利用電源的狀況, 在 BIOS 階段會建立起來
- ACPI 是介於 OS 與硬體之間的 Interface,Interface 可區分為 ACPI Registers、ACPI BIOS、ACPI Table。
- ACPI Table 包括了一個 Definition Block(DSDT Table),它定義了相關 HW Device 的電源管理 Method,OS 會參考它做電源管理。
- ACPI BIOS 是 System Firmware 的一部分,相容於 APCI Spec.,它提供了 ACPI Description Tables。
- ACPI Registers 可以分成 Fixed Register 與 Generic Register,Fixed Register 會被描述在 FADT Table,Generic Register 會用 AML Code 描述在 DSDT 與 SSDT Table。
-
Goal
- ACPI Spec. 不是僅僅針對某一項調節,而是要協調各個部分,綜合管理,使其達到最佳狀態。
- ACPI 是一種工業級的接口協議,它同時規範了硬體和軟體的接口,使得 OS 可以直接配置和電源管理所有設備以及整個系統,操作系統可以收集用戶、應用程式、硬體等各方面信息做出綜合判斷以及執行。
- 支援 Legacy BIOS 電源管理的電腦,從 Legacy Mode 啟動然後等到 ACPI OS 啟動之後轉換到工作狀態,而不支持 Legacy Mode 的電腦如 (RISC:ARM) 直接從 G3 直接到 G0。
-
System Power Management
- ACPI Spec. 定義了一台相容 ACPI 的電腦系統可以有以下七個狀態 (所謂的全域狀態)。
-
G0(S0) 正常工作狀態
- 電腦的正常工作狀態,作業系統和應用程式都在執行,CPU(s) 仍在執行指令。
- 在這個狀態下 (即沒有進入 G1 睡眠),CPU 和硬碟、DVD 驅動器等等這些的裝置可以一再的進入和從低耗電狀態回來,叫做 C-State(C0-Cn) 和 D-State(D0-D3)。
- 例如筆記型電腦,當使用電池執行的時候通常關掉所有當前未使用的裝置,一些桌上型電腦也這麼做來減少噪音。
-
G1 睡眠狀態,細分為 S1 到 S4 這四種狀態
- 系統從這幾種狀態被喚醒到 G0 執行 (喚醒等待時間) 所需的時間最短的是 S1,較短的是 S2 和 S3,最長的是 S4。
-
S1
- 最耗電的睡眠模式。
- Flush 處理器所有的 Registers,並且 CPU 停止執行指令,CPU 和 System RAM 的電源一直維持著,一些裝置如果沒有被使用那麼就會被停止供電,這種模式通常指上電腦待機或叫做 POS,特別在BIOS 設定介面上,一些新式的電腦不再支援 S1,老式的電腦對 S1 支援可能要比 S3 好。
-
S2
- 一個比 S1 更深的睡眠狀態,不再給 CPU 供電了,然而,通常這種模式並不被採用。
-
S3
- 在 BIOS 中叫做 Suspend to RAM(STR),在 Windows XP 以後的 Windows 版本和一些 Linux 發行版中叫做 Standby,在 Windows Vista 和 Mac OS X 則叫做 Sleep,雖然 ACPI Spec. 僅僅提到術語S3 和 Sleep。
- 在這個狀態下,RAM 仍然有電源供給,儘管它也是幾乎唯一的有電源供給的元件。
- 因為作業系統、所有應用程式和被開啟的文檔等等的狀態都是保存在 System RAM 中,使用者可以把工作恢復到上次他們進入睡眠前的狀態,電腦從 S3 狀態回來時,System RAM 的內容和它進入 S3 狀態時候的內容是相同的。
- ACPI Spec. 中提到了 S3 和 S2 是相當類似的,只是有更多的元件在 S3 狀態下會停止供電。
-
S4
- 在 Windows 中叫休眠,在 Mac OS X 中叫作安全睡眠,也稱為 Suspend to Disk,雖然 ACPI Spec. 中只提到了一個術語 S4(Main Article:Hibernate(OS Feature))。
- 在這個狀態下,所有 System Memory 的內容被儲存在 Non-Volatile Memory(Ex: 硬碟),保護作業系統當前的狀態,包括所有應用程式、開啟的文檔等等,這意味著從 S4 恢復後,使用者可以恢復到原本的工作狀態,採用的方法和 S3 是一樣的。
-
S3 v.s S4
- 電腦 Recovery(S3 Boot Path) 的過程比 Restart(S4 Boot Path) 要快。
- 當電腦處於 S3 狀態時,如果任何正在執行的應用程式 (被開啟的文檔...) 有私有資訊在裡面,這些資訊是不會被寫到硬碟上的,然而,在系統不能被喚醒時,比如遇到了電源故障的時候,高速緩衝記憶體可能會被 Flushed 來防止資料毀壞。
- 除了把 System Memory 中的內容移進移出所消耗的時間以外,在 S3 狀態下的時候如果一旦停電了,所有 System Memory 上的資料就會丟失,包括所有的沒有保存的文檔,而在 S4 狀態下則沒有影響。
- S4 和其他的 S-States 有很大不同,事實上更類似 G2(Soft Off) 狀態和 G3(Mechanical Off) 狀態,而不是 S1-S3。
- 在 S4 狀態下的系統同樣可進入G3(Mechanical Off) 狀態,並且保留 S4 時候的狀態資訊,所以它可以恢復到關掉電源之前的執行狀態。
-
G2(S5/Soft Off )
- G2 和 G3(Mechanical Off) 幾乎是相同的,但有些元件仍然供電,使電腦仍然可以被鍵盤、時鐘、Modem(電話喚醒)、LAN(網路喚醒) 還有 USB 裝置所喚醒。
- 在啟動系統從 G2 恢復到 G0 正常工作模式的過程中,無論是 G3(Mechanical Off) 還是 G2 都得執行啟動程式來啟動作業系統,此外,當作業系統在不支援 ACPI 的情況下執行,這種狀態被定義為Legacy。在這個狀態下,硬體和電源不是透過 ACPI 來管理的,實際上已經禁用了 ACPI。
-
G3(Mechanical Off)
- 將所有的裝置電源都關閉,連插頭也拔掉,只有在這狀態下才能安全的拆組電腦 。
-
Device Power Management
- 週邊裝置的電源管理,ACPI 定義 D0、D1、D2、D3、...、Dn,數字越大表示耗電量越低,D0 表示裝置運作中。
- ACPI Table 也定義了週邊裝置的相關電源控制,可以在 OS 端透過 AP 將週邊裝置設定為較省電的模式。
- 設備狀態對於用戶來說往往是不可見的,Ex: 當一個設備已經沒有電源供應的時候,可能整個系統還是在工作狀態。
-
設備狀態是與設備相關的狀態,他們的定義和以下四個因素有關
- 設備耗電多少。
- 硬體保存多少設備的上下文信息。
- 設備要恢复工作,其驅動程序要作什麼工作。
- 延遲是多少。
-
設備狀態有以下幾個
- D0(Fully-On) 是正常工作狀態,耗電量最高,並且設備保留了全部的設備狀態和環境。
- D1 和 D2 是中間電源狀態,它的定義根據設備的不同而有所不同。
- D3 是設備電源關閉,中斷所有來至 SMBus 的監聽,設備狀態和環境全部丟失,重新供電時,操作系統會重新初始化設備,這個狀態下的設備恢复到 D0 相比之下需要最長的時間。
- D3 區分為 D3 Hot & D3 Off,差別在於 D3 Hot 要可以被軟體偵測到。
-
Processor Power Management
- 處理器的電源管理,ACPI Spec. 定義了當 CPU 不在 Sleep 狀態且閒置時,可以進入 Low Power 狀態,也就是 C-State,數字越大表示越省電,C0 表示運作中。
-
處理器電源狀態(C-States(C0 ~ Cn))
- 指在 G0 狀態下(只對 G0 狀態有效,在其他狀態下不予討論) 的處理器電能消耗和溫度管理的狀態,只有C0狀態下CPU才會執行指令。
- C1 到 Cn 狀態下,CPU 都處於各種不同程度的睡眠狀態 (Sleeping States), 在睡眠狀態下,CPU 都有一個恢复到 C0 的喚醒時間 (Latency),它是和 CPU 的電能消耗有關的,通常,用電能量越小意味著得花更長的時間恢复到 C0 狀態,也就是喚醒時間越長。
- 當在 C0 狀態下時,ACPI 允許通過定義節流閥 (Throttling(T-States)) 過程和通過改變多性能狀態 (Multiple Performance States(P-States)) 來改變處理器的性能。
-
C0
- 正常工作狀態,當處理器處於這種狀態下的時候,它能正常處理指令。
-
C1(Halt)
- 擁有最短的喚醒時間,Letancy 必須短到操作系統軟件使用 CPU 的時候不會考慮到喚醒時間方面的因素。一些處理器,比如說 Pentium 4,支持 C1E(Enhanced C1 State) 這样的低電能消耗技術。這個狀態是無法被軟體偵測的。
-
C2 (Stop-Clock)
- 這個狀態下處理器維持着所有的軟體的狀態信息,但是需要更長的時間來恢复到 C0。這個狀態下 Worst Letancy 是由 ACPI Fixed HW Register 提供,並且操作系統軟體可以利用這些信息來决定是採用 C1 還是 C2 狀態,C2 比 C1 更省電。
-
C3 (Sleep)
- 相比 C1 和 C2 更省電了。這個狀態下 Worst Letancy 是由 ACPI Fixed HW Register 提供,並且操作系統軟件可以利用這些信息來决定是採用 C2 還是 C3 狀態,當處於 C3 狀態時,處理器緩存保留了所有的狀態信息,但是忽略所有來至 SMBus 的偵聽。操作系統軟體負責保證緩存數據的一致性。
- 多性能狀態 (P-States(P0 ~ Pn))
- 和 C-States 不同,當 CPU 在 P-States 運作的時候有在執行指令而非停止不動。P-States 的工作原理是將 CPU 的頻率降低,讓 CPU 執行輕量的工作來達到降低耗電的目的。
- Throttling(T-States(T0 ~ Tn))
- 同樣是透過降低 CPU 的頻率來達到省電效果,與 P-States 不同的是,T-States 是停掉 CPU 部分的頻率來達到省電效果,而非放緩 CPU 頻率來達到省電效果。
- Configuration/ Plug & Play
- 組態和隨插即用,ACPI 提供了介面讓 OSPM 可以把資源在插入和移除之間做組態,這些組態將定義在 DSDT & SSDT Table 中,透過 ID 來代表該 Device。
-
Battery Management
- 電池管理,支援 ACPI 的電池裝置是透過 OS 且以 EC 來控制,或者由電池的 Control Method 來控制,這邊的 Control Method 也是由 AML 來實作它。
-
Thermal Management
- 熱的管理,對於 Device 的熱管理也是在 ACPI Spec. 定義的範圍,它提供了簡單的、可調整的模組來給 OEM 定義其 Thermal Zone、Thermal Indicator 和 Method for Cooling Thermal Zones。
-
ACPI 定義了兩種降溫方式
- Passive Cooling,透過降低CPU效能來達到降溫效果,Ex: T-state。
- Active Cooling,透過外在裝置來達到降溫效果,Ex: 風扇。
-
System Event
- 系統事件,ACPI Spec. 定義了通用的事件模組,如 Plug & Play、Power Management、Thermal 等,透過 Event Status/ Enable Register來調用 Event。
- 當系統事件發生時,Core Logic 會將 Status Register 中對應的 Bit 設定為1來表示事件發生。如果對應的 Bit 在 Enable Register 也被設定為 1,那麼會發出 SCI 來告訴 OS,當 OS 收到 SCI 事件時,它會去找該事件所對應的 Control Method,這些 Control Method 會以 AML 的方式告訴 OS 做什麼事,我們則要用 AML 來撰寫它。
-
Embedded Controller
- ACPI Spec. 定義了標準的硬體/軟體的溝通介面給 OS Bus Enumerator 和 EC 之間來做溝通,也就是說可以由 Driver 來存取 EC 的資源,讓 OEM 可以提供 Platform Features 給 OS 的 AP 使用。
-
SMBus Controller
- ACPI Spec. 定義了標準的硬體/軟體的溝通介面給 OS Bus Enumerator 和 SMBus Controller 之間來做溝通,也就是說可以由 Driver 來存取 SMBus Device 的資源,讓 OEM 可以提供 Platform Features 給 OS 的 AP 使用。
-
ACPI HW Feature
- 這裡的 HW 指的是 Programming Model 且內容包括了其行為。
-
Fixed HW/ Generic HW
- Fixed Features 必須符合 ACPI Spec. 編程和行為標准 。
- Generic Features 在實現時有一定程度的靈活性。
- Fixed HW Programming Model 要求在特定的地址位置定義暫存器,而 Generic HW Programming Model 則允許暫存器被安排在更廣泛的地址空間。
- ACPI Driver 可以直接操作 Fixed Registers Space,而 ACPI 依賴 0EM 廠商提供的 AML Code 來操作 Generic Registers Space。
- Fixed HW Features
-
Performance Sensitive
- Ex: OSPM可以透過定義在Fixed HW裡面Performance相關的Feature去作CPU Clock Control與PM Timer相關的Feature。
-
Features that Drivers require during wake up
- Ex: OSPM不需要透過OS而可以透過Access Wake Up Features相關的Fixed HW,去達到Wake Up的目的。
-
Features that Enable catasrophic OS software failure recovery
- Ex: 當OS的SW發生問題的時候, OSPM可以透過定義在Fixed HW裡面的Information去讓系統進到G2的狀態,然後再透過重開機的過程讓OS SW Recovery。
-
Generic HW Features
- Generic HW Programming Model 允許 HW Registers 可以被定義在 Most Address Space 並且提供給 OEM 較有彈性的 Implement。
- OSPM 可以直接去存取 Fixed HW Registers ,但 OSPM 如果要存取 Generic HW Registers 的話,需要透過 AML Code 才能存取得到 Generic HW Registers。
-
ACPI HW Registers 可以存放在以下六種地方
- System I/O
- System Memory
- PCI Configuration
- SMBus
- Embedded Controller
- Function Fixed HW
-
ACPI Machine Language(AML)
- 儲存於Definition Block中 (DSDT or SSDT)。
-
Abstructs the HW from OSPM
- ACPI Spec. 定義了 High Level 的 Control Method,透過呼叫此 Method 來達到某動作而不必考慮 HW。
-
Buffers OEM Code form Different OS Implements
- OEM 可以透過 Implement AML 然後 Running on Different OS,不同的 OS 可能會採取不同的動作,但不需要整個重寫,只要寫怎樣改變對應的動作就好 (底層的 Control Method 都一樣)。
文章內容來源:APCI Spec 5.0
文章標籤
全站熱搜
留言列表