搜尋此網誌

2011年4月23日 星期六

[AHCI]Power Management Operation[電源管理操作]

8 Power Management Operation[譯自AHCI1.0]

CAP – HBA Capabilities
26
RO
Impl.
Spec
Supports Aggressive Link Power Management (SALP): 當設定為’1’時,當沒有命令被處理,HBA會支援自動引發連接需求變成局部(Partial)或睡眠(Slumber)狀態。當清除為’0’,當這個功能不被支援時,軟體將PxCMD.ALPEPxCMD.ASP位元看成保留。參考8.3.1.3章節。
14
RO
Impl.
Spec
Slumber State Capable (SSC):指示是否 HBA有支援轉換成睡眠(Slumber)狀態。當清除為0,軟體不允許HBA去啟動轉換成睡眠(Slumber)狀態經由有效率的連接電源管理,也不允許PxCMD.ICC區域去啟動轉換成睡眠(Slumber)狀態在每個Port,還有PxSCTL.IPM區域在每個Port必須程式不允許裝置啟動睡眠(Slumber)需求。當設定為’1’,將能夠支援HBA與裝置啟動睡眠(Slumber)
13
RO
Impl.
Spec
Partial State Capable (PSC): 指示是否 HBA有支援轉換成局部(Partial)狀態。當清除為0,軟體不允許HBA去啟動轉換成局部(Partial)狀態經由有效率的連接電源管理,也不允許PxCMD.ICC區域去啟動轉換成睡眠(Slumber)狀態在每個Port,還有PxSCTL.IPM區域在每個Port必須程式不允許裝置啟動局部(Partial)需求。當設定為’1’,將能夠支援HBA與裝置啟動局部(Partial)

Offset 118h: PxCMD – Port x Command and Status
Bit
Type
Reset
Description
31:28
RW
0h
Interface Communication Control (ICC): 這區域介面被用來控制電源管理狀態。如果連接層現在在L_IDLE狀態,寫入到這區域將造成HBA啟動一個介面電源轉換需求。如果連接層現在不在L_IDLE狀態,寫入到這個區域將沒有影響。
Value Definition
Fh-7h Reserved
6h Slumber(睡眠):這將造成HBA要求介面轉換到睡眠(Slumber)狀態。SATA裝置可能會拒絕這需求,以及介面將保留在目前狀態。
5-3h Reserved
2h Partial(局部): 這將造成HBA要求介面轉換到局部(Partial)狀態。SATA裝置可能會拒絕這需求,以及介面將保留在目前狀態。
1h Action(行動): 這將造成HBA要求介面轉換到運作(Action)狀態。
0h No_Op(沒開)/Idle(空閒): 當軟體讀取這個值,它指示HBA已準備接受一個新介面控制命令,儘管轉換到之前選擇狀態還不能發生。
除了No-Op(0h),當系統軟體寫入一個非保留值其他的, HBA將執行動作(Action)和更新這區域後在回到Idle(空閒)0h
如果軟體寫至此區域去改變這狀態到另一個狀態連接是以經存在了(換言之,介面是在行動(Action)狀態和一個需求引起到的行動(Action)狀態)HBA將得到不執行與回傳此區域為空閒(idle)。如果介面是在低電源狀態,以及軟體要轉換它到一個不同低電源狀態,軟體必須優先連接到運作期間與當啟動轉換到低電源狀態需求。
27
RW/RO
0
Aggressive Slumber/Partial (ASP):當設定為’1’,與ALPE被設定,HBA將有效率的進入睡眠(Slumber)狀態,清除PXCI暫存器與清除PxSACT暫存器,或者是,清除PxSACT暫存器與清除PXCI暫存器。當清除為’0’,與ALPE被設定,HBA將有效率的進入局部(Partial)狀態,清除PXCI暫存器與清除PxSACT暫存器,或者是,清除PxSACT暫存器與清除PXCI暫存器。如果CAP.SALP被清為’0’,軟體只能將這bit視為保留。詳細請看8.3.1.3章節。
26
RW/RO
0
Aggressive Link Power Management Enable (ALPE): 當設定為’1’HBA將有效率的進入低連接電源狀態(Partial(局部)Slumer(睡眠))依據上面ASP位元設定狀態。如果CAP.SALP被設為’1’,軟體只能將這bit設為1。如果CAP.SALP被清為’0’,軟體只能將這bit視為保留。詳細請看8.3.1.3章節。

Offset 128h: PxSSTS – Port x Serial ATA Status
11:08
RO
0
Interface Power Management (IPM):指示目前介面狀態。
0h 裝置不存在或者是通信無法建立
1h 介面在行動狀態
2h 介面在部份電源管理狀態
6h 介面在睡眠電源管理狀態
所有其他值保留

Offset 12Ch: PxSCTL – Port x Serial ATA Control
11:08
RW
0h
Interface Power Management Transitions Allowed (IPM): 指示哪些電源狀態HBA允許被轉換。如果一個介面電源管理狀態被除能,HBA不允許去初始化狀態,以及必須來自裝置的任何請求進入那狀態。
0h 沒有介面限制
1h 關於部分狀態轉變被Disable
2h 關於睡眠狀態轉變被Disable
3h 關於部分與睡眠兩者狀態轉變被Disable
所有其他值保留

8.1 Introduction
這個部份包含HBASerial ATA介面電源管理。這份說明文件將不包含任何可能是Serial ATA device內部的電源管理,這介面將會是容易了解的。

8.2 Power State Mappings
這詳細的指明定義PCI device電源管理狀態,這將應用到HBA
  • D0 – 工作中(必要的)
  • D1 – Storage HBA沒有定義。
  • D2 – Storage HBA沒有定義。
  • D3 – 非常深的睡眠(必要的)。這狀態分別進入兩個子狀態,(會對PCI表面配置存取有反應)(不會對PCI表面配置存取有反應)。這兩個子狀態是考慮到相同點,在有,但沒有。在進入D3電源狀態前必須先清除PxCMD.ST0
Serial ATA裝置可能也有多種電源狀態。這每種裝置的狀態為HBAD0狀態的子集合。
  • D0 – 工作中,以及馬上可利用。
  • D1 – 當它接收到IDLE IMMEDIATE command裝置將開始工作。從這狀態離開的潛伏期時間在秒。
  • D2 – 當它接收到STANDBY (IMMEDIATE) command裝置將開始工作。從這狀態離開的潛伏期時間在秒。
  • D2 – 當它接收到SLEEP command裝置將開始工作。從這狀態離開的潛伏期時間在秒。
最後,Serial ATA定義3Phy(或介面)的電源管理
  • Phy Ready – Phy logicPLL兩個都在動作。
  • Partial – Phy logic是有被提供動力的,但是在一種遞減狀態中。離開潛伏期不大於10us
  • Slumber –Phy logic是有被提供動力的,但是在一種遞減狀態中。離開潛伏期可能會達到10ms
由於這些離開的潛伏期狀態常低於D1D2、還有D3狀態,AHCI定義這些狀態作為Device D0狀態的子狀態。
接著下圖將Serial ATA電源等級狀態架構圖
注意:當裝置是在D1D2、或D3狀態,Phy是不需要去做睡眠狀態。當HBAD3狀態時,Phy也不需要去做睡眠狀態。當發生裝置連接到省電模式的介面時,這可能會是什麼情況,那不是一個要求,還有這介面運作在電源管理狀態事件將被中止。

8.3 Power State Transitions
8.3.1 Interface Power Management
SATA 1.0a說明書定義兩個低功率介面電源管理狀態,局部(Partial)和睡眠(Slumber),在電源敏感系統上做SATA連接為了節省電源。經由軟體或HBA它自己,還是裝置局部(Partial)和睡眠(Slumber)介面電源管理狀態會被啟動。介面電源管理狀態是HostDevice之間協商上使用主要的SATA介面。在裝置與HBA上,任何需求都被接受(使用主要的PMACK)或拒絕(使用主要的PMNACK)基於目前的情況和設定。目前介面電源管理狀態被映射成軟體在PxSSTS.IPM

8.3.1.1 Device Initiated
根據定義,一個裝置支援啟動介面電源管理狀態功能以經被除能。去致能這特性,恰當的SET FEATURES Command可以被發佈到裝置。HBA將對裝置啟動電源管理需求有反應像說明書的一樣,經由PxSCTL.IPM。一個需求從裝置進入介面管理狀態可能被HBA拒絕,條件是HBA需要傳送一個FIS到裝置。
得:當使用set feature commandenable裝置中電源管理,HBA對裝置的狀態都反應在PxSCTL.IPM。此刻HBA以啟動電源管理,若突然有事件進入HBA可能會拒絕處理,欲將它喚醒HBA需傳送一個FIS至裝置。

8.3.1.2 System Software Initiated
PxCMD.ICC透過軟體被使用於啟動介面電源管理狀態轉換。這需求去轉換到不同的電源管理狀態將只透過HBA起作用,條件鏈結層目前在L_IDLE狀態。如果當PxCMD.ICC區域被寫入,且HBA鏈結層不是在L_IDLE狀態,所以此需求不被理會。HBA將不執行直接轉換從局部(Partial)到睡眠(Slumber)或者是從睡眠(Slumber)到局部(Partial)基於一個新的值寫入到PxCMD.ICC。如果鏈結目前是局部(Partial)或睡眠(Slumber)介面電源管理狀態,它是軟體負責去引起連結成為行動狀態(Action)之前需要去轉換到一個不同的電源管理狀態。這時間從需求寫到PxCMD.ICC直到連接啟動(Action)被鏈結經由最大恢復時間從局部(Partial)或睡眠(Slumber)如同這樣的概要在SATA1.0a說明書上。

8.3.1.3 HBA Initiated
HBA可能執行有效率電源管理,同樣指示在CAP.SALP。效率電源管理

8.3.2 Device D1,D2, and D3 Status

8.3.3 HBA D3 state

8.4 PME
HBA是在D3狀態,在裝置狀態它可能選擇工作基於一個改變。
HBA是在D3狀態,接下來會的狀況PME必須被引發:
  • PxIS.PCS被設成1由於一個自然的hot plug插入。
  • PxIS.DMPS設定,指示機械存在切換是開或關。

沒有留言:

張貼留言