pcie D3 cold


從 Windows 8 開始,設備可以進入 D3cold 電源子狀態,即使當系統處於 S0 電源狀態。

PCI 總線規范引入了 PCI 電源管理,因此它已將 D3(關)設備電源狀態拆分為兩個子狀態:D3hot 和 D3cold。這種區分已添加到ACPI 3.0 中的 ACPI 規范,並在 ACPI 4.0 中擴展。

Windows 始終支持這兩個 D3 子狀態,但僅當整個計算機退出S0(工作)系統電源狀態進入睡眠或休眠狀態(通常 S3 或 S4)時,Windows 7 及早期版本的 Windows 才支持 D3cold子狀態。

從 Windows 8 開始,即使當系統保持為 S0 狀態時,設備驅動程序可以允許其設備進入 D3cold 狀態。

D3hot(通常只稱作“D3”)是設備的“軟關閉”狀態。在此狀態下,總線掃描可以檢測到設備,並且發送給設備的命令可能會導致它再次打開電源。

在D3cold 中,將切斷所有電源,只保留少量電源以驅動設備的喚醒邏輯。例如,對於 PCI Express (PCIe) 設備,轉換到D3cold 后,經常關閉主要設備電源 Vcc。關閉 Vcc 可減少耗電量,並延長移動硬件平台在一定的電池電量下可運行的時間。

當設備處在D3cold 時,總線掃描將無法檢測到該設備,並且該設備不能接收命令。恢復 Vcc 電源會將設備置於未初始化狀態,通常相當於 D0狀態。然后,軟件必須重新初始化該設備以將其置於工作狀態。

將設備置於 D3cold 並不意味着已切斷供給設備的所有電源 — 它僅表示切斷了主電源 Vcc。如果喚醒邏輯不需要輔助電源Vaux,也可能會將其切斷。但是,可能需要將喚醒事件通知給處理器的設備必須能夠獲取足夠電源,以便操作喚醒邏輯。例如,切斷其主電源的以太網接口卡(NIC) 可能從以太網電纜獲取足夠電源。

或者,供給 Wi-Fi NIC 的待機電源可能從 PCIe接口之外的電源提供,在這種情況下,可能會完全關閉 PCIe 接口。

所有設備都需要支持D0和D3(both D3hot & D3cold)。

 

D3狀態,又稱為Full-Off狀態。其也有兩個子狀態D3 Hot狀態和D3 Cold狀態。當設備進入D3 Hot狀態,表明該設備的電源尚未切斷;而進入D3Cold狀態,則表明設備的電源已被切斷,如有Vaux存在,則鏈路進入L2狀態,否則進入L3狀態。

軟件層可以通過向PMCSR(Power Mgt Control and Status Register)的PowerState位置寫相關值,使得設備的某個Function進入D3 Hot狀態。在D3 Hot狀態下,該Function只能發送PME消息和PME_TO_ACK消息或者應答配置請求和PME_Turn_Off消息。

在進入D3狀態之前,軟件必須保證所有重要的Non-Posted的請求都收到了與之匹配的Completion。這可以通過配置空間中的設備狀態寄存器的相關位來查詢。如果由於目標PCIe設備故障,導致其長時間內無法接收到Completion,則軟件必須要等待足夠長的時間在執行進入D3的操作。當Function進入D3 Hot狀態后,鏈路則會強制進入L1狀態。此時Function的內容(寄存器中的數據等)將會丟失,但是PCIe設備必須要保證PME的相關內容不受影響,這樣才能在D3 Hot狀態下產生PME消息。

 

如何進D3 cold?

在D3 Hot狀態下,當PCIe設備的電源(Vcc)被斷開后,則自動從D3 Hot狀態進入D3 Cold狀態。退出D3 Cold狀態可以使用CLKREQ#或PERST#信號或Beacon信號或WAKE#信號。此后,可能還需要一次復位操作,才能使得該Function進入D0活動狀態。

配置pcie power status pmcap設置為D3,即可進入D3 hot狀態。在D3 Hot的情況下,軟件可以向Function的PMCSR中的PowerState位置(與前面的pcie power status pmcap應該是一個意思)寫入相關內容,使得Function從D3 Hot狀態切換為D0未初始化狀態。

如下圖為D狀態轉換

 

 

 

 

附:PCIe總線定義的與功耗管理功能

PCIe總線定義的與功耗管理功能(Power Management,PM)相關的主要有:PCI-Compatible PM、Native PCIe Extensions、Bandwith Management和Event Timing Optimization。

其中,PCI-Compatible PM是一種在軟件上和硬件上都與PCI-PM(定義在ACPI Spec中)兼容的模式,其要求PCIe設備的每個Function都包含PCI Power Management Capability寄存器。軟件可以通過配置請求(Configuration Request)的方式來切換PCIe設備的某個Function的PM狀態。在PCIe Spec V2.1中,還引入了動態功耗分配(Dynamic Power Allocation,DPA)的功能,具體請參考相關Spec,該模式並非本文介紹的重點。

本文介紹的重點為Native PCIe Extensions模式。該模式定義了一個基於硬件的,自發的鏈路功耗狀態管理單元(Active State Power Management for the Link,ASPM),以及相關的喚醒機制(后面會詳細講)。PCIe設備之間通過功耗管理事件(Power Management Event,PME)來進行相互通信,並控制功耗狀態的切換。而功耗管理事件(PME)本質上是一種Message。

在PCIe Spec V2.1中,還引入了帶寬管理功能(前面的文章也提到過),這里就不詳細介紹了,具體請參考相關的Spec。

此外,Event Timing Optimization主要是針對Native PCIe Extensions模式中的PME的時序優化和防死鎖(Dead-Lock)等,本文也不再詳細介紹,具體請參考Spec相關內容或者Mindshare的書籍的相關章節。

PCI Power Management Capability寄存器對於PCI總線來說是可選的,但是對於PCIe總線來說則是強制的。該寄存器位於PCI-Compatible的配置空間中,其Capability ID為01h。如下圖所示:

 

 

 ACPI(Advanced Configuration and Power Interface) Spec主要定義的是操作系統層面上的PM,在ACPI指定之前,各個廠商的設備之間的PM兼容性很差,甚至是完全不兼容。而ACPI的出現,統一了操作系統層PM(即OSPM)的規范。OSPM的各個功耗狀態定義如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM