CPU 散熱 API 使用方法¶
作者:Amit Daniel Kachhap <amit.kachhap@linaro.org>
更新時間:2015 年 1 月 6 日
版權所有 (c) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com)
0. 簡介¶
通用 CPU 散熱(頻率限制)為呼叫者提供註冊/登出 API。冷卻裝置與跳變點的繫結留給使用者。註冊 API 返回冷卻裝置指標。
1. CPU 散熱 API¶
1.1 cpufreq 註冊/登出 API¶
struct thermal_cooling_device *cpufreq_cooling_register(struct cpumask *clip_cpus)此介面函式以名稱“thermal-cpufreq-%x”註冊 cpufreq 冷卻裝置。此 API 可以支援 cpufreq 冷卻裝置的多個例項。
- clip_cpus
將發生頻率約束的 CPU 的 cpumask。
struct thermal_cooling_device *of_cpufreq_cooling_register(struct cpufreq_policy *policy)此介面函式以名稱“thermal-cpufreq-%x”註冊 cpufreq 冷卻裝置,並將其與裝置樹節點連結,以便透過散熱 DT 程式碼繫結它。此 API 可以支援 cpufreq 冷卻裝置的多個例項。
- policy
CPUFreq 策略。
void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)此介面函式登出“thermal-cpufreq-%x”冷卻裝置。
cdev:要登出的冷卻裝置指標。
2. 功率模型¶
功率 API 註冊函式為 CPU 提供了一個簡單的功率模型。當前功率計算為動態功率(目前不支援靜態功率)。此功率模型要求使用核心的 opp 庫註冊 CPU 的工作點,並將 cpufreq_frequency_table 分配給 CPU 的 struct device。如果您使用的是 CONFIG_CPUFREQ_DT,那麼 cpufreq_frequency_table 應該已經分配給 CPU 裝置。
處理器的動態功耗取決於許多因素。對於給定的處理器實現,主要因素是
處理器在執行狀態下消耗動態功率的時間,與在空閒狀態下動態消耗可忽略不計的時間相比。 在這裡,我們將其稱為“利用率”。
DVFS 導致的電壓和頻率水平。 DVFS 水平是控制功耗的主要因素。
在執行時間內,“執行”行為(指令型別、記憶體訪問模式等)在大多數情況下會導致二階變化。 在病態情況下,這種變化可能很顯著,但通常其影響遠小於上述因素。
然後,高階動態功耗模型可以表示為
Pdyn = f(run) * Voltage^2 * Frequency * Utilisation
f(run) 在這裡代表描述的執行行為,其結果的單位為瓦/赫茲/伏特^2(通常以 mW/MHz/uVolt^2 表示)
可以對 f(run) 的詳細行為進行線上建模。 但是,在實踐中,這種線上模型依賴於許多特定於實現的處理器支援和表徵因素。 因此,在初始實現中,該貢獻表示為常數係數。 這是一種簡化,與對總體功率變化的相對貢獻一致。
在這個簡化的表示中,我們的模型變為
Pdyn = Capacitance * Voltage^2 * Frequency * Utilisation
其中 電容 是一個常數,表示以 mW/MHz/uVolt^2 為基本單位的指示性執行時間動態功率係數。 移動 CPU 的典型值可能在 100 到 500 的範圍內。 作為參考,ARM Juno 開發平臺中 SoC 的近似值為:Cortex-A57 叢集為 530,Cortex-A53 叢集為 140。