2. 热管理基础
在 Linux Thermal 与 Regulator 工程中,热管理并不是“温度高了就降频”这么简单。它本质上是一套围绕发热—传热—散热—控温建立的动态平衡系统。理解温度、功耗、散热、热阻、热容、结温等基本概念,是读懂内核 thermal zone、cooling device、trip point 以及 regulator 电压调节策略的前提。本节从物理量出发,建立后续驱动开发所需的共同语言。
一、核心物理量:从功耗到结温
芯片内部的温度通常用结温(Tj,Junction Temperature)表示,即半导体 PN 结所在位置的温度。它才是决定器件寿命、漏电流和可靠性的关键指标。我们常说的“CPU 温度”往往来自片上热敏二极管或外部传感器,是结温的近似值。
功耗是热量的来源。CMOS 电路动态功耗可近似表示为:
P = C × V² × f + P_static
其中:
C —— 等效负载电容
V —— 供电电压(Regulator 输出)
f —— 工作频率
P_static —— 静态漏电功耗,随温度升高而增大
这个公式解释了为什么降压比降频更有效:电压以平方关系影响动态功耗。Regulator 在 DVFS(动态电压频率调节)中承担的关键角色,正是配合频率调整同步改变电压,从而在性能与发热之间取得平衡。
热量产生后,会沿着“芯片内部 → 封装 → 散热器 → 环境”的路径传递。描述这条路径阻碍程度的参数就是热阻(Rθ,Thermal Resistance),单位为 ℃/W。热阻越大,同样功耗下温升越高:
ΔT = P × Rθ
Tj = Ta + P × (Rθ_jc + Rθ_ca)
其中:
Ta —— 环境温度
Rθ_jc —— 结到壳的热阻
Rθ_ca —— 壳到环境的热阻
与热阻对应的是热容(Cth,Thermal Capacitance),单位为 J/℃。它描述物体吸收热量后温度上升的“惯性”。热容越大,温度变化越慢。热阻决定稳态温升,热容决定瞬态响应速度。二者共同构成热系统的 RC 网络模型,这也是内核 thermal governor 进行预测和滞回控制的基础。
二、常见术语与内核映射
Linux Thermal 框架把这些物理概念抽象为设备树节点和内核对象。理解术语与代码的对应关系,能显著降低调试成本。
| 术语 | 物理含义 | 内核/设备树对应 |
|---|---|---|
| 结温 Tj | 半导体结区实际温度 | thermal_zone 的 temperature 属性 |
| 热阻 Rθ | 单位功耗引起的温升 | 通常由硬件提供,驱动中用于估算 |
| 热容 Cth | 吸收热量导致温升的惯性 | 影响 governor 的采样与滞回策略 |
| trip point | 触发温控动作的温度阈值 | trips 子节点,含 temperature/hysteresis/type |
| cooling device | 可降低功耗的执行器 | cpufreq、devfreq、风扇、regulator 等 |
| governor | 温控策略算法 | step_wise、power_allocator、fair_share 等 |
三、典型场景:手机 SoC 高负载温控
假设某手机 SoC 在游戏场景下,CPU 大核功耗为 3W,Rθ_jc 为 0.5℃/W,Rθ_ca 为 8℃/W,环境温度 35℃。则稳态结温约为:
Tj = 35 + 3 × (0.5 + 8) = 35 + 25.5 = 60.5℃
若散热条件恶化,Rθ_ca 升至 15℃/W,则 Tj 升至 81.5℃,接近 85℃ 的 trip point。此时 thermal governor 会逐级限制 CPU 频率,并通知 regulator 降低电压。由于功耗与 V² 成正比,电压从 1.0V 降到 0.9V,动态功耗约降至原来的 81%,温升随之缓解。
四、常见误区与复盘
- 误区一:只看温度,不看功耗。温度是结果,功耗是原因。若只调 trip point 而不控制功耗来源,温控会变成“反复降频—反弹”的振荡。
- 误区二:忽略热容导致的滞后。热容大意味着温度上升慢,但也意味着降温慢。trip point 的 hysteresis 设置过小,容易在阈值附近反复触发。
- 误区三:把壳温当结温。壳温通常低于结温,二者差值等于 P × Rθ_jc。用壳温直接判断结温会低估风险。
- 误区四:Regulator 与 Thermal 各自为政。DVFS 需要二者协同:thermal 决定降频等级,regulator 执行对应电压。若电压未同步下降,降频的降温收益会大打折扣。