注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

路雷米的博客

人生最难的就是在热爱和生计之间做选择, 愿每个人这一生 既对得起梦想又担得责任

 
 
 

日志

 
 

PCIE电源管理----知识点滴  

2015-07-01 19:24:39|  分类: PCI-PCIE |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
PCIe電源管理使I/O電源管理更具效率  

PCIe裝置必須支援電源管理,電源管理裝置包括D0~3共四種狀態。D0狀態為完全開啟(Full On),這個狀態下沒有任何節省電源機制,而且又可分為D0 Uninitialized、D0 Active兩個子狀態;D1狀態為輕待機(Light Sleep),是一個電源節省狀態;D2狀態是重待機(Deep Sleep)狀態,比D1節省電源更多狀態;D3狀態則為完全關閉(Full Off),在這個狀態下電源節省為最大,D3分為D3cold、D3hot兩個子狀態。  

PCIe電源管理狀態其轉變過程如圖3所示,然而每一個PCIe必須提供暫存器有PM即D0完全開啟與D3完全關閉狀態,D1與D2狀態都是選擇性提供。

點圖放大
圖3 PCI Express電源管理功能狀態轉換

由OnNow文件定義整體的電源管理目標為當使用者啟用個人電腦時,個人電腦能馬上準備好使用,而當使用者不使用個人電腦時,設定作業系統透過PCIe電源管理,以控管硬體裝置電源狀態,而PCIe電源管理為作業系統與硬體裝置連接溝通的橋樑,使得I/O電源管理更有效率。  

PCIe電源管理的軟體控制包括以下幾個狀態:

? 進到 L1 狀態
  軟體端變換設備端的供電狀態時,設備端須進入低耗電狀態並回應,不管是轉換到D1、D2或D3hot的狀態,設備端在收到訊息後,都會先送出PM_Enter_ L1 DLLP,然後實體層從L0換到L1的狀態(圖4),此時的時脈和電源都還在正常運作中。
? 跳離L1狀態
  跳離L1有兩種情況,一種是由軟體端直接下指令給設備端,實體層會自動換到L0的狀態,指令也能直接到達設備端,另一種是設備端自動偵測到某些條件而須要跳離L1狀態,回到L0的狀態,並且送出電源管理事件訊息(Power Management Event Message, PME Message)通知軟體端。
? 進到L2/L3 Ready狀態
  當軟體端要設備端轉換至D3hot的狀態時,基本上就是要準備移除時脈和電源。所有在影響範圍內的設備端都應該先進入D3hot的狀態,且實體層已在L1狀態待命,此時軟體端會對所有的設備端發出PME_Turn_Off TLP的指示,設備端的實體層會再度回到L0狀態,並送出PM_Enter_L23 DLLP告知已經準備好接受停止時脈和電源,收到回應之後,設備端便會進入L2/L3 Ready狀態。
? 離開L2/L3 Ready進到L2/L3
  當電源停止供電之後,設備端如有輔助電源Vaux,實體層會進入到L2的狀態,否則就進入L3的狀態。
? 離開L2/L3狀態
  如果實體層處於L3的狀態時,則無法自行醒來,得依靠其他設備端的喚醒機制恢復電力。當實體層在L2狀態時,因為有輔助電源可使用,此時有Beacon和WAKE#兩種喚醒機制可使用,這兩種都是以實體訊號通知軟體端,Beacon機制好處是可由輔助電源產生,但並不是所有的設計都能支援;WAKE#是PCIe定義的一個Open-drain的訊號,由多個設備端共用,當設備端使用其中一種機制觸發,軟體端便可重新啟動設備端。

點圖放大
圖4 實體層電源管理狀態圖

PCIe電源管理軟體相容於PCI PME#

不同以往PCI定義PME#訊號的方式回到工作模式,PCIe使用的是PME Message,雖方式不同,但PCIe的電源管理軟體能相容於PCI的PME#模式,以下為電源管理各項訊息說明。

? 電源管理事件順序
  電源管理事件順序(PME Sequence)是一種封包形式,必須在實體層處於L0的狀態才能送出,所以在送PME Message前先要讓實體層回到L0的狀態。PME Message裡包含Bus#,Device#和Function#等資訊,當軟體端收到後,便可以利用這些資料直接清掉PMCSR內的PME_Status,將設備端回復到D0的工作狀態,並呼叫相關驅動程式回填一些暫存器的資訊。
? 電源管理事件內容
  設備端在低耗電狀態時,尤其是實體層在L2的時候,喚醒會重新連結時脈和電源,並會經過LDn的狀態,重置大部分的電路。這時電源管理事件內容(PME Context)要設法保存下來,並小心不能被重置,電源管理事件內容指的是有關偵測、產生及處理PME事件的相關電路,如PME_Status和PME_Enable,還有一些設備端用來喚醒電源的資訊。
? 電源管理事件鎖死
  在軟體端處理PME Message時,清掉設備端的PME_Status後,才會繼續處理下一個PME Message。但如果PME_Status清掉的回應被後來的PME Message擋住,導致軟體端等不到回應,此時就會產生鎖死(Deadlock)現象。
有鑑於此,軟體端在處理PME Message時,會把之後產生的PME Message都忽略,這樣一來,清掉PME_Status的回應就不會被擋住,但是PME Message被忽略的設備端必須有等待時間(Time-out)的機制,在送出PME Message的100毫秒(+50~-5%)後,如果PME_Status還沒被清掉,就要再重新送出PME Message,有這樣的處理機制就能避免電源管理事件鎖死的問題。  

PCI e 線路電源管理模式可分四種狀態  

PCIe線路部分的電源管理可分成L0(Link 0)/L0s(Link 0 standby)、L1(Link 1)、L2(Link 2)及L3(Link 3)等四種狀態。其中L0模式即當線路處於L0狀態時,是在全速啟動模式之下,並沒有任何省電的功能;L0s模式為較低省電模式。當線路處於閒置時會自動從L0模式自動進入L0s模式,完全不需要軟體的介入。  

L1模式會比L0s模式更省電而且回到正常運作的時間也更長。硬體電路可自行決定要不要進入L1模式,而不需要上層軟體的設定,然而電源管理軟體也可要求硬體將上游端的線路(Upstream Link)轉換成L1模式。  

L2模式會比L1模式更省電且回到正常運作的時間也更長,當電路的時鐘(Clock)與電源關閉時,電源管理軟體可以將上游端的線路轉換成L2模式;而L3模式為進入斷電狀態,亦即線路上完全沒有任何耗電的情形發生。  

主動狀態電源管理可自行判別是否進入省電模式  

主動狀態電源管理(Active State Power Management, ASPM)名稱由來是因為在沒有上層軟體的控制與指揮下,硬體的線路也能經由判斷線上的資料傳送情況自行決定要不要進入省電模式。主動式電源管理的機制很簡單,只有L0s與L1 ASPM兩種狀態,所有的PCIe裝置都必須能支援L0s模式,在所有的省電狀態下,此模式要恢復到正常的工作狀態也是最短的。  

PCIe裝置可自行決定要不要支援L1 ASPM,在PCIe的規範中,其不是必備的模式,雖然L1 ASPM模式能比L0s模式節省較多的電,但也比L0s需要較多的時間,才能恢復到正常的工作狀態。使用PCIe裝置時要注意線路的主動狀態電源管理狀態只能有兩種,一種是只有支援L0s,另一種是支援L0s與L1 ASPM,但如果系統是用同步傳輸的方式交換資料的話,最好不要用L1 ASPM模式,以免恢復的時間過長影響到資料同步傳輸的正確性。  

PCIe能針對線路上游(Upstream)或是下游(Downstream)分別設定要不要進入L0s模式。舉例而言,如果CPU藉由PCIe傳送大量的資料給繪圖卡,而繪圖卡上的PCIe只要傳送少量的回應訊號給CPU,這時繪圖卡就可允許上游線路進入L0s模式,下游的線路還是處於全速啟動的模式下,如此一來,就能享受到約省一半電力的好處。  

當線上閒置的時間超過7微秒時,硬體就可將上游或是下游的線路進入L0s模式,但還是要滿足兩項條件才能進入L0s模式,第一項為若硬體是端點埠(Endpoint Port)或主根埠時,須要在沒有交易處理層封包(Transaction Layer Packets, TLP)待處理的情況下或持有的流量控制點數(Flow Control Credits)不足、無法傳送封包,也沒有資料連結層封包(Data Link Layer Packets, DLLP)待傳送才可進入L0s模式。第二項條件是若硬體為交換埠(Switch Port),除要滿足上面的條件外,還必須要另一端線路處於L0s模式才行。  

雖然線路的上下游端可以單獨決定,但是也可以系統的觀點進一步決定是否要進出L0s模式。舉例而言,若是接收端收到一個要求資料的封包(Non-posted TLP),傳送端就可預知接下來會回應大量的資料,此時傳送端不用等到上層通知就可以自行離開L0s模式預先,且進入全速模式。  

  评论这张
 
阅读(3681)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018