计算机体系结构 33:性能、功耗与能量预算

核心问题

平均功率下降,为什么完成同一任务的能量仍可能上升?功率描述单位时间的能量变化,任务能量还要乘以持续时间。降频降压可能降低动态功率,却也会拉长执行时间;静态功耗、内存和其他系统部件在延长的时间里仍在消耗能量。

本篇只做两个题设点的能量预算。附件:33-energy.json。

范围与证据等级

证据等级为手算。当前没有采集 RAPL、Linux powercap、板级功率计、频率、温度或硬件计数器。题设中的 40 W、25 W、2 s 和 4 s 都是模型输入,不对应当前宿主的传感器读数。

能量关系为:

1
energy(J) = average power(W) × elapsed time(s)

动态 CMOS 功耗常用 αCV²f 解释电压、频率和活动因子的关系,但真实芯片还包含泄漏、供电转换、内存与散热等成本。没有测量就不能把公式写成某颗 CPU 的能耗结论。

核心案例:低功率点消耗更多任务能量

快点题设为 40 W、2 s,任务能量是 80 J。慢点功率降到 25 W,但运行 4 s,任务能量变为 100 J。功率下降 37.5%,任务能量反而增加 25%。

这个反例只证明“低功率不推出低能量”。若工作负载在降频后仍受 I/O 等待限制,时间不一定同比增长;若电压也显著下降,结果还可能反转。温控触发 throttling 时,静态设定点甚至不能代表实际运行轨迹。

模式:把任务边界纳入能量核算

1
任务能量 = ∫任务开始到结束 power(t) dt

CPU DVFS、GPU power cap 和数据中心批任务都适合按任务积分。报告平均功率时必须同时给出测量区间和完成的工作量。

验收结果

python3 examples/computer-architecture/run_batch.py 29-33 退出 0,手算结果为 80 J 与 100 J。输出显式保留 measured_energy=false 和 frequency_temperature_counters=false。本篇没有真机能耗、频率或温度结论。

练习

若慢点功率仍为 25 W,要使任务能量不超过 80 J,执行时间最多是多少?

设计一次真机实验时,为什么只读任务结束瞬间的功率值不够?

模式速查

已知量 能回答 不能回答
平均功率与时间 任务能量 功耗来自哪个部件
频率设定 控制目标 实际频率轨迹
手算题设 关系反例 当前机器能耗

一手参考资料