裝置電源管理
ACPI 6.3 規格會定義一組命名空間物件,以指定裝置的裝置電源資訊。 例如,一組物件可以指定裝置在每個支援的裝置電源狀態中所需的電源資源。 另一個物件類型可以描述裝置能夠從低電源狀態喚醒,以回應硬體事件。
Windows 中的裝置電源管理
當系統執行 (也就是說,系統處於 ACPI 定義的工作狀態 S0) ,個別裝置可以在裝置電源狀態之間進行轉換,視活動而定,以節省電源。 在傳統電腦系統中,ACPI 定義的睡眠狀態 (S1 到 S4) 也用來節省電源,但這些中斷連線的高延遲睡眠狀態不會在 Windows SoC 平臺上使用。 因此,電池使用時間高度取決於平臺如何實作執行時間裝置電源管理。
整合至 SoC 的裝置可以透過 Windows Power Framework (PoFx) 進行電源管理。 這些架構整合式裝置是由 PoFx 透過 SoC 特定的電源引擎外掛程式來管理, (microPEP) 知道 SoC 電源和時鐘控制項的詳細資料。 如需 PoFx 的詳細資訊,請參閱 Power Management Framework 概觀。
對於未整合到 SoC 的周邊裝置,Windows 會使用 ACPI 裝置電源管理。 針對這些 ACPI 管理的裝置,裝置驅動程式堆疊中的電源原則擁有者通常會 (函式或類別驅動程式) 進行裝置電源狀態轉換決策,而 Windows ACPI 驅動程式Acpi.sys會叫用 ASL 控制項方法來套用必要的平臺特定電源控制。
您可以單獨使用 ACPI 裝置電源管理,或搭配 microPEP 進行 SoC 裝置電源管理,以及某些裝置堆疊。
如 ACPI 中的裝置電源管理中所述,Windows 支援 ACPI 5.0 規格中定義的 D3cold 電源管理功能。 藉由使用此支援,裝置、平臺和驅動程式可以選擇在執行時間閒置期間完全移除裝置電源。 這項功能可大幅改善電池使用時間。 不過,所有受影響的元件都必須支援移除電源,才能順利返回 D0。 因此,驅動程式 (匯流排和函式) ,以及平臺本身,必須指出它們支援它。 如需 D3cold 驅動程式加入宣告的詳細資訊,請參閱 在驅動程式中支援 D3cold。
ACPI 中的裝置電源管理
命名空間裝置最多支援四個裝置電源狀態、編號為 D0 (完整功能,或「開啟」) 至 D3 (無函式,或「關閉」) 。 每個狀態可以有不同的電源需求,且耗用的電源數目高於低編號狀態。 此外,D3 (關閉) 狀態有兩個子狀態:D3hot 和 D3cold。 D3hot 子系要求裝置在其父匯流排上保持可存取狀態,以便回應匯流排特定的軟體命令。 此需求和用來符合它的電源會在 D3cold 中移除。 最後,裝置可能會因為硬體事件而從低電源狀態喚醒自己,並視需要讓平臺脫離閒置狀態。
平臺會藉由使用全平臺 OSPM 功能方法要求時,授與「_PR3支援」功能的 OS 控制項, (位 2) ,來指出其對 D3cold 的支援。 For more information, see section 6.2.10.2, "Platform-wide OSPM Capabilities", in the ACPI 5.0 specification.
受電源管理的裝置會使用子物件來描述其作業系統的電源功能。 下列各節說明這些功能和物件。
電源資源和狀態
裝置會列出它所需的一組電源資源,以宣告其對電源狀態的支援,以便處於該狀態。 ACPI 電源資源代表電源裝置的電壓滑軌,以及驅動裝置的時鐘訊號。 這些資源會在命名空間的根目錄宣告。 每個電源資源都有一個_ON和一個_OFF方法來控制,以及用來報告其狀態的_STA方法。 For more information, see section 7.1, "Declaring a Power Resource Object", of the ACPI 5.0 specification.
Windows ACPI 驅動程式Acpi.sys會監視共用資源的裝置之間的電源相依性,而且當這些裝置在電源狀態之間轉換時,可確保在任何特定時間只開啟裝置實際需要的電源資源。
電源資源需求 (_PRx)
每個支援的裝置電源狀態都有 Power Resource Requirements (_PRx) 物件,其中 x = 0、1、2 或 3。 當設備磁碟機決定轉換成新的電源狀態時,Acpi.sys可確保開啟新狀態所需的任何電源資源,而且不再使用的任何資源都已關閉。
支援的裝置狀態 | 要使用的資源需求物件 | 要包含在需求物件中的資源 |
---|---|---|
需要 D0 () | _PR0 | 裝置完整功能所需的所有電源和時鐘。 |
D1 | _PR1 | 此狀態類別定義縮減功能所需的任何電源或時鐘。 |
D2 | _PR2 | 此狀態類別定義縮減功能所需的任何電源或時鐘。 |
D3hot (必要) | _PR3 | 只有裝置在其匯流排上出現所需的電源或時鐘,並回應匯流排特定的命令。 |
如果特定平臺支援 D3cold 功能,而裝置的裝置驅動程式加入宣告 D3cold,裝置的_PR3電源資源將會在任何其他裝置未使用時關閉,在轉換為 D3Cold 之後關閉。
如需支援 D3cold 之裝置電源資源需求的詳細資訊,請參閱 D3cold 的韌體需求。
裝置電源狀態 (_PSx)
每個支援的裝置電源狀態 Dx 都有 Power State 方法_PSx,其中 x = 0、1、2 或 3。 這個方法是選擇性的,但如果存在,則會在關閉狀態的電源資源之前叫用,並在狀態的電源資源開啟之後叫用。 _PSx的目的是要針對電源迴圈執行所需的任何平臺特定動作。 _PSx不得存取指派給函式驅動程式的裝置暫存器、存取指派給匯流排驅動程式的匯流排標準暫存器,或開啟或關閉電源資源,這是保留給Acpi.sys的作業。
喚醒功能
電源管理的裝置可能會在處於低電源狀態時偵測事件,並讓平臺喚醒以處理事件。 若要啟用這項功能,Windows 需要平臺和裝置功能的相關資訊。
Sx 裝置喚醒狀態 (_SxW)
在指定的平臺上,裝置狀態之間有特定的對應,可支援喚醒功能和系統狀態,以回應喚醒事件。 ACPI 會定義 _SxW 物件,以提供此資訊給作業系統。 每個支援的系統電源狀態 SxW 物件都是 Sx。 因為 SoC 平臺一律位於 S0 中,所以此處唯一感興趣的物件_S0W。 此物件指定平臺能夠從低電源閒置狀態喚醒,以回應裝置的喚醒訊號。 Windows 會使用 物件,在系統低電源閒置期間判斷裝置的目標 D 狀態。 For more information about _S0W, see section 7.2.20, "_S0W (S0 Device Wake State)", in the ACPI 5.0 specification.
對於大部分 SoC 平臺,裝置在閒置時會積極將電源管理到 D3 狀態,而且系統能夠在裝置處於此狀態時從低電源閒置中喚醒。 針對這類系統,如果物件也支援 D3cold) ,則_S0W物件會傳回 3 (或 4。
不論裝置是否支援喚醒,_S0W (4) 都是 D3Cold 的需求。
任何 D 狀態都可以指定為支援最低電源的喚醒狀態,而某些裝置類別或匯流排會使用不同的值。 例如,SDIO 和 USB 連線裝置會針對此狀態使用狀態 D2。
為了協助將設備磁碟機從 Windows 7 移轉至Windows 8或Windows 8.1,您的裝置可能也需要提供_S4W。 目前,唯一具有此需求的裝置類別是網路 (Ndis.sys) 。
支援喚醒的中斷 (_CRS)
裝置的資源描述表示裝置能夠藉由將中斷標示為「可喚醒」 (ExclusiveAndWake 或 SharedAndWake) 來偵測及發出喚醒事件訊號。 Windows 和設備磁碟機會提供這類中斷的特殊處理,以確保裝置轉換為低電源狀態時已啟用它們。 如需詳細資訊,請參閱 ACPI 5.0 規格的 6.4.3.6 節、「擴充中斷描述元」和第 6.4.3.8.1 節中的中斷和 GpioInt 資源描述元的描述。
喚醒啟用
視使用者案例或系統原則而定,具備喚醒功能的裝置可能或可能實際上無法進行喚醒。 因此,啟用喚醒的中斷可能會在裝置閒置時啟用或無法啟用。 除了啟用中斷之外,Windows 還會使用下列機制在裝置上啟用喚醒。
裝置睡眠喚醒 (_DSW)
ACPI 會將 _DSW 物件定義為作業系統的方法,以通知 ACPI 平臺韌體下一個睡眠或低電源閒置期間。 這個物件是選擇性的,只有在平臺需要事先設定平臺特定的喚醒硬體時,才會使用。 系統會提供裝置的目標 D 狀態和系統的目標 S 狀態。 D 狀態和 S 狀態組合一律符合裝置_SxW物件 () 提供的資訊。
喚醒的電源資源 (_PRW)
在某些情況下,必須開啟額外的電源資源,裝置才能啟用喚醒。 在此情況下,裝置可以提供_PRW物件來列出這些額外的電源資源。 Windows ACPI 驅動程式Acpi.sys會像平常一樣管理這些電源資源,並確定裝置需要裝置 (時開啟這些電源資源,也就是啟用喚醒的裝置) ,否則會關閉。
_PRW也可用來定義傳統 (完整 ACPI 硬體) 電腦平臺的喚醒功能。