裝置已進 D0,功率限制還有哪些層次?

裝置已進 D0,功率限制還有哪些層次?

選擇步驟後,圖中對應的元件與下方解說會加上重點標示。完整圖與所有解說會持續顯示;也可用方向鍵切換步驟。

圖中三欄是不同機制的分工,不是硬體必須依序執行的流程。以下從資料代表的對象開始,再看授權與 D0 內的調整。

不同功率機制的對象與用途三欄分別表示功耗回報、插卡授權與D0內功率配置,並非三個連續步驟。緊急降功耗另有優先關係。回報功耗資料Power Budgeting按相同條件整理需求整張卡的功率授權Slot / Power Limit依授權機制限制功率Function 的功率配置DPA within D0依 Control 與 Status 判讀Emergency Power Reduction:支援時優先處理

作者依 Base 6.0 §§6.8、6.9、6.16、6.24 繪製。每種能力均須先確認是否實作及其適用條件。DPA 是 Dynamic Power Allocation(動態功率配置)。

D0 表示 Function 處於工作電源狀態,功率仍受系統授權與所用機制限制。Power Budgeting(功率預算資料)讓系統了解裝置在指定條件下的需求;DPA(Dynamic Power Allocation,動態功率配置)則讓軟體在 D0 內調整 Function 的功率配置。本章先讀功耗資料,再帶一次降功率與升功率的完整案例。

  1. 先確認資料代表誰與哪種條件

    功耗資料可能涵蓋 Function、Device 或整張卡;同一組數字也可能分別表示持續功率與最大功率。

    先用 Table 6-10 判斷回報範圍,再用 Data Select 選資料,依 Table 7-122 解讀電源軌、狀態、Type 與倍率。

    Base 6.0 §6.8,pp.742–744;§7.8.1,pp.1090–1098。

  2. 分清需求回報與功率授權

    讀到一筆功耗需求,不會自動增加系統給插卡的功率額度。

    Slot Power Limit 透過訊息把限制交給同一條 Link 的對端;Power Limit PM Sub State 另有初始化時機限制,不能當成一般運作中的任意調整欄位。

    Base 6.0 §§6.8.3、6.9,pp.744–746。

  3. 在 D0 內追蹤配置與轉換

    降功率期間,Status 先保留較高配置;升功率期間,Status 就必須顯示較高配置。

    沿 DPA 的 Capability、Latency Indicator、Power Allocation Array、Control 與 Status 帶讀轉換。緊急降功耗屬於另外的保護機制。

    Base 6.0 §6.16,pp.777–778;§7.9.12,pp.1236–1241;§6.24,pp.812–813。

要替插卡安排功率,先確定資料代表誰

先回顧一個範圍差異:Function 是軟體可識別的功能,插卡則可能包含多個 Function,甚至多個 Device。Table 6-10 Power Budgeting Deployments(p.743)依能力結構的分布決定資料涵蓋範圍。例如,多功能 Device 只有一個 Function 實作 Power Budgeting(功率預算資料)時,資料代表整個 Device;若多個 Function 都實作,資料才分別代表各 Function,依表中規則加總。

這一步要在算瓦數之前完成。多裝置插卡還要判斷資料是按整張卡回報,還是按 Device 回報;沒有這個範圍資訊,直接把所有可讀值相加會重複計算。§6.8.1 也把韌體已配置與預算管理者接手的情況分開,實際平台採用哪一種管理流程由平台決定。

【模擬資料】以下資料為教學用途建立,不代表特定硬體或平台。本章使用一張只有單功能 Endpoint 的插卡,所有耗電均涵蓋在 Function 0 的回報中,沒有其他 Device 或外接電源。它從 12 V 與 3.3 V 兩條電源軌取電,目前為 D0。假設 System Allocated=0、Extended Power Budgeting Supported=0,且共有四筆非延伸資料;平台另已依適用外形規格與總預算完成足夠的功率授權。

來源:§6.8 Power Budgeting Mechanism、§6.8.1 System Power Budgeting Process Recommendations、Table 6-10,文件/PDF pp.742–744。

Data Select 怎麼選,哪些資料才可以加總?

先沿 Extended Capability(延伸能力結構)鏈找到 ID 0004h、Version 1h,將起點記為 C。Figure 7-136 定位三個本次會用到的入口:Data Select 在 C+04h,為 8-bit;Data 在 C+08h,為 32-bit;Power Budgeting Capability 在 C+0Ch。先查 Capability 的 System Allocated,再依序寫入 Data Select 索引、讀取 Data。索引從 0 開始,預設值未定義,因此每次查詢都要明確選取。

接著打開 Figure 7-139/Table 7-122。Base Power 在 bits [7:0];Data Scale 低兩位在 bits [9:8],第三位另在 bit 21,並不連續。本例未使用延伸資料,第三位為 0,倍率編碼 001b 代表 0.1×。先由 PM State、PM Sub State、Type、Power Rail 辨認條件,再把 Base Power 乘上倍率:

IndexDataPM State / Sub StateTypePower RailBase PowerData Scale功率
0000181B4hD0 / 0011b000b / 12 V1800.1×18 W
100058132hD0 / 0011b001b / 3.3 V500.1×5 W
2000381C8hD0 / 0111b000b / 12 V2000.1×20 W
30007813ChD0 / 0111b001b / 3.3 V600.1×6 W

以索引 0 的 000181B4h 為例,Base Power=B4h=180、Data Scale=001b,所以得到 18 W;Type=011b 是 Sustained Power(持續功率),Power Rail=000b 是 12 V。索引 1 的條件相同,只是另一條電源軌,所以兩筆一起構成 23 W 的 D0 持續功率。索引 2/3 同屬 Type=111b 的 Maximum Power(最大功率),加總為 26 W。

Table 7-122 對這兩種 Type 使用不同量測定義:除非外形規格另有明定,Sustained Power 是最大吞吐量下的 5 秒平均,Maximum Power 則使用 1 ms 移動視窗。23 W 與 26 W 描述不同條件,不一起加總。若另有 Thermal(熱負載)項目,要用於散熱評估,也不當成額外電源軌再加一次。

本例索引 4 已超出四筆資料,Data 回傳全零。若裝置支援 Extended Power Budgeting,延伸項目在 Enable=0 時也會被隱藏成全零;因此不同裝置上的零值,還要連同 Support、Enable 與索引解讀。另外,Base Power 大於 EFh 且符合 Table 7-122 所列條件時,會改用功率區間編碼;不能一律把 F0h 當成 240 W。

本例 System Allocated=0,所以需要由負責的預算管理者納入評估。若該 bit=1,表示這份裝置預算已包含在系統預算內,軟體做功率預算決策時必須忽略這份回報,避免再算一次;裝置本身仍然會耗電。

來源:§7.8.1–§7.8.1.5,Figure 7-136(p.1090)、Figure 7-137/Table 7-120(p.1091)、Figure 7-139/Table 7-122(pp.1094–1097)、Figure 7-140/Table 7-123(p.1098);Data Select 與全零規則見 pp.1091、1093。

讀到 26 W,系統就已經授權 26 W 了嗎?

Power Budgeting 回報需求;授權要再查使用中的機制。§6.9 的 Slot Power Limit(插槽功率限制)由 Downstream Port 的 Slot Capabilities 欄位提供,透過 Set_Slot_Power_Limit Message 傳給同一條 Link 對端的 Upstream Port,再反映於 Device Capabilities 的 Captured Slot Power Limit Value/Scale。這項限制的對象是整張插卡。

插卡尚未獲得較高功率授權前,必須遵守適用外形規格的初始限制;Slot 機制也不是任意往下寫一個更小值。§6.8.3 另定義 Power Limit PM Sub State 與 Out of Band Power Limit 等機制,具有不同的優先關係。前者的 Power Limit Enable/Power Limit PM Sub State 只能在所有 Functions 都處於 D0uninitialized 時,以 Configuration Write 設定;任何 Function 離開該狀態後再改,行為未定義。

因此,下面的執行期調整使用 DPA。Power Budgeting 的 PM Sub State 最多有 8 個,DPA Substate 最多有 32 個;規格沒有把這兩組編號直接配對。Function 的 D0/D1 等電源狀態,以及 Link 的 L1.1/L1.2,也各有不同意義。

來源:§6.8.3 Power Limit Mechanismsm(原文標題拼字)、§6.9 Slot Power Limit Control,文件/PDF pp.744–746。

同在 D0,如何把配置從 26 W 降到 10 W?

DPA 是可選的 Endpoint Function 功能,適用於 D0。Substate 從 0 連續編到 Substate_Max;0 代表最高配置,每往後一級的配置必須小於或等於前一級。軟體可以直接從 0 選到 2,無須先經過 1;Function 在任一子狀態中都必須回應 Configuration Space 存取。

延續前面的單功能插卡,假設另找到 DPA Extended Capability,起點為 D。Figure 7-281 先給整體布局;Figure 7-282/Table 7-251 確認 ID=0016h、Version=1h。接著依下列順序把能力換成可用的配置表:

  1. Figure 7-283/Table 7-252:D+04h 的 DPA Capability=08031002h。Substate_Max=2,表示共三個子狀態;Power Allocation Scale=01b,倍率為 1.0×;Transition Latency Unit=00b,單位為 1 ms;Value 0=3,Value 1=8。
  2. Figure 7-284/Table 7-253:D+08h 的 DPA Latency Indicator=00000004h。bit 2=1,因此目標子狀態 2 用 Value 1;bit 0/1=0,兩者用 Value 0。
  3. Figures 7-287/7-288、Table 7-256:Power Allocation Array 從 D+10h 開始,每個子狀態一個 byte,不是每項一個 DWORD。
SubstateArray offsetArray byteAllocationIndicator bitMaximum latency
0D+10h1Ah26 W03 ms
1D+11h12h18 W03 ms
2D+12h0Ah10 W18 ms

因此,選擇子狀態 2 的最大轉換時間是 8 ms;回到子狀態 0 則是 3 ms。這些上限依目標子狀態選取,裝置可以提早完成。DPA 的倍率與前面 Power Budgeting Data Scale 的編碼不同,必須各讀自己的 Table。

來源:§6.16 Dynamic Power Allocation (DPA) Capability,文件/PDF pp.777–778;§7.9.12、Figures 7-281–7-288、Tables 7-251–7-256,pp.1236–1241。

Control 與 Status 要怎麼一起看?

先看 Figure 7-285/Table 7-254:Status 在 D+0Ch,bits [4:0] 是 Substate Status,bit 8 是 Substate Control Enabled。本例初始讀值 0100h,表示 Enabled=1、目前子狀態為 0。再看 Figure 7-286/Table 7-255:Control 在 D+0Eh,bits [4:0] 是要求的目標,其餘 RsvdP(保留原值)位元本例原值均為 0。以下假設 Function 持續在 D0、沒有 Reset、緊急降功耗或其他軟體改寫,先完成降功率,再提出升功率要求。

降功率:26 W → 10 W / 升功率:10 W → 26 W過渡期間 Substate Status=0,配置仍為 26 W. 過渡期間 Substate Status=0,配置已為 26 W.降功率:26 W → 10 W要求 2完成於 2(最長 8 ms)過渡期間 Substate Status=0,配置仍為 26 W升功率:10 W → 26 W要求 0完成於 0(最長 3 ms)過渡期間 Substate Status=0,配置已為 26 W
作者依 §6.16 繪製的兩種轉換方向;不代表每次降功率後都必須升回去。圖中的瓦數表示配置額度,並非瞬間實測功率。
觀察時點ControlStatusStatus 對應配置系統如何安排功率
降功率前0000h0100h26 W按原配置保留額度
降功率進行中0002h0100h26 W尚未完成降功率,先保留原額度
降功率已完成0002h0102h10 W此時才可按較低配置重新安排額度
升功率已開始,仍在過渡中0000h0100h26 W提出升功率要求前,就須先備妥較高額度

降功率時,Status 必須等轉換完成才顯示較低配置。本例 Substate Control=2、Substate Status 仍為 0 的期間,系統要保留 26 W,不能先把差額分給別張卡。讀到 Substate Status=2 之後,Function 必須遵守該狀態的 10 W 配置。

升功率時則不同:轉換期間 Substate Status 就要顯示較高配置,所以讀到目標 0 不能單獨證明已完成轉換。系統必須在提出要求前先準備好 26 W 額度,再依目標的最大轉換時間與需要的裝置資訊安排後續動作。Substate Status 表示的是裝置必須遵守的配置,不是功率感測器的即時讀值,也不保證某個應用效能。

§6.16 允許軟體在前一次轉換完成前再改目標;裝置可調整進行中的轉換,或在完成後比對最新目標並繼續轉換。本例為了看清兩個方向,沒有插入其他要求。分析實機紀錄時,必須保留每次 Control 寫入,不能只拿最後一筆 Status 反推完整經過。

來源:§6.16,文件/PDF pp.777–778;§7.9.12.4–§7.9.12.5、Figures 7-285/7-286、Tables 7-254/7-255,pp.1239–1240。

Enabled=0,要寫 1 把 DPA 打開嗎?

這個欄位要先看屬性。Substate Control Enabled 是 RW1C(寫入 1 會清除),不在 DPA Control 裡,而在 DPA Status 的 bit 8。硬體在 Conventional Reset 或 FLR(Function Level Reset,單一功能重設)後設為 1;軟體不能直接把它設回 1。

例如,在子狀態 2 時讀到 Status=0102h,若向 Status 寫入 0100h,效果是清除 Enabled。之後即使修改 Control 的目標,也不會由該欄位直接啟動 DPA 轉換。這讓裝置專屬軟體可以接手功率管理;接手後的策略由相應軟體與裝置機制決定,不能由 Disabled 推論裝置會永久固定在 10 W。

來源:§6.16,文件/PDF p.777;§7.9.12.4、Table 7-254,pp.1239–1240。

緊急降功耗後,裝置會自動恢復嗎?

Emergency Power Reduction State(緊急功率降低狀態)是可選的保護機制,用來避免系統損害;支援時會優先於這裡的一般功率控制。先從 Device Capabilities 2 的 Emergency Power Reduction Supported 與 Emergency Power Reduction Initialization Required,連到 Table 6-16 核對允許的觸發方式。退出後如何恢復,則繼續讀 §6.24 的文字規則。

例如 Supported=10b 可使用適用外形規格定義的機制;該外形規格必須確實定義這種請求方式,才能使用此編碼。廠商專屬與自主機制也依 Table 6-16 的條件判讀。這裡沒有一個對所有平台通用的「寫標準 Configuration bit 即觸發」流程。

Initialization Required進入時退出後
0Function 可以降低效能或進入裝置專屬休眠;Upstream Port 維持運作,未完成 Requests 必須正常完成不需軟體介入即可恢復正常操作
1Function 停止正常運作,Upstream Port 可以進入 DL_Down;若仍維持 DL_Up,未完成 Requests 仍須正常完成需要軟體介入;若先前進入 DL_Down,所有 Functions 都會被重設,並需要完整重新配置

Initialization Required=1 時也可能維持 DL_Up,因此光是 Configuration Space 可讀,仍不足以判定是否需要軟體重新初始化。裝置如何通知軟體需要重新初始化,以及外部觸發訊號的硬體細節,還要查平台、外形規格或廠商文件。Power Budgeting 回報也須包含相應的緊急狀態功耗資料,不能直接沿用前面正常 D0 的 26 W。

來源:§6.24 Emergency Power Reduction State、Table 6-16 Emergency Power Reduction Supported Values,文件/PDF pp.812–813;§7.5.3.15,p.993;§7.8.1.4,p.1097。

多功能裝置與 PF/VF,哪些功率要一起算?

PF
Physical Function,實體功能
VF
Virtual Function,虛擬功能

PF(Physical Function,實體功能)與 VF(Virtual Function,虛擬功能)屬於 SR-IOV(單根 I/O 虛擬化)的功能分工。Power Budgeting 可由 PF 實作,回報必須涵蓋其相關 VFs;VF 不得實作這組能力。DPA 也由相關 PF 管理 VF 的功率,VF 不得實作 DPA Capability。

SR-IOV
Single Root I/O Virtualization,單根I/O虛擬化

一般多功能 Device 則可以有部分或全部 Functions 實作 DPA;總配置依各份 DPA 配置加總。一個 Function 的 DPA 也可涵蓋其他未實作 DPA 的 Functions,這些關聯由實作決定。因此本章的單功能案例不能直接複製成「每個 VF 都再配置 26 W」。

Function 的 D-State 另依 §5.10:PF 必須有 Power Management Capability,VF 可選。VF 沒有自己的能力時,視為跟隨相關 PF 的等效電源狀態;若 VF 有自己的能力,PF 比 VF 進入更低功耗狀態會造成未定義行為,軟體應先降低 VFs 的電源狀態,再降低 PF。這與本章在 D0 內調整 DPA 配置是不同操作。

來源:§5.10–§5.10.1,文件/PDF p.655;§6.16.1,p.778;§7.8.1,p.1090。

版本與來源

本章依 PCI Express Base Specification Revision 6.0(6.0-1.0-PUB)。以下文件印刷頁與 PDF 檢視器頁碼相同;案例讀值與轉換觀察均為教學假設,未執行實機量測。

完整來源定位
  • §6.8 Power Budgeting Mechanism, pp.742–745; Table 6-10 Power Budgeting Deployments, p.743; §6.8.1 System Power Budgeting Process Recommendations, pp.743–744; §6.8.3 Power Limit Mechanismsm, pp.744–745; §6.9 Slot Power Limit Control, pp.745–746.
  • §7.8.1 Power Budgeting Extended Capability, pp.1090–1098; Figure 7-136 (layout), p.1090; Figure 7-137 / Table 7-120 (header), p.1091; §7.8.1.2 Power Budgeting Data Select Register, p.1091; §7.8.1.3 / Figure 7-138 / Table 7-121 Power Budgeting Control Register, pp.1091–1093; §7.8.1.4 / Figure 7-139 / Table 7-122 Power Budgeting Data Register, pp.1093–1097; §7.8.1.5 / Figure 7-140 / Table 7-123 Power Budgeting Capability Register, p.1098.
  • §6.16 Dynamic Power Allocation (DPA) Capability, pp.777–778; §6.16.1 DPA Capability with Multi-Function Devices, p.778.
  • §7.9.12 Dynamic Power Allocation Extended Capability (DPA Capability), pp.1236–1241; Figure 7-281 Dynamic Power Allocation Extended Capability Structure, p.1237; Figure 7-282 / Table 7-251 DPA Extended Capability Header, pp.1237–1238; Figure 7-283 / Table 7-252 DPA Capability Register, pp.1238–1239; Figure 7-284 / Table 7-253 DPA Latency Indicator Register, p.1239; Figure 7-285 / Table 7-254 DPA Status Register, pp.1239–1240; Figure 7-286 / Table 7-255 DPA Control Register, p.1240; Figure 7-287 DPA Power Allocation Array, p.1240; Figure 7-288 / Table 7-256 Substate Power Allocation Register (0 to Substate_Max), p.1241.
  • §6.24 Emergency Power Reduction State, pp.812–813; Table 6-16 Emergency Power Reduction Supported Values, p.812; §7.5.3.15 Device Capabilities 2 Register, p.993 (support and initialization fields); §5.10 SR-IOV Power Management / §5.10.1 VF Device Power Management States, p.655.