1. 课程导入与功耗优化全景
STM32N6 是 ST 首款集成自研神经网络加速器 Neural-ART 的 MCU,典型算力约 600 GOPS,配合 1 GHz 的 Cortex-M55 与 4.2 MB 片上 SRAM,使边缘 AI 推理第一次可以完全在 MCU 内部完成。但这也带来一个直接后果:功耗不再由单一 CPU 决定,而是由 NPU、CPU、内存子系统、外设与电源管理单元共同决定。本课程的目标,是建立一套从模型到芯片、可测量、可归因、可优化的功耗分析框架。
典型应用场景与功耗画像
STM32N6 的边缘 AI 场景大致可分为三类,它们的功耗画像差异很大:
- 常开感知类:关键词唤醒、人员检测、异常声音识别。特点是推理频率低(1~10 Hz)、模型小(<200 KB)、平均功耗要求苛刻,通常以电池供电,目标平均电流在百微安到几毫安量级。
- 间歇推理类:工业视觉质检、门禁人脸识别、智能家居手势控制。特点是事件触发、单次推理算力需求高(数百 MOPS 到数 GOPS),但占空比低,优化重点是“唤醒—推理—休眠”的切换开销与唤醒延迟。
- 连续推理类:视频流目标跟踪、多路传感器融合。特点是 NPU 与 CPU 长期工作,功耗以百毫瓦计,优化重点是能效比(GOPS/W)与内存带宽瓶颈。
这三类场景决定了优化目标的不同:常开感知追求平均功耗,间歇推理追求能量/次,连续推理追求能效比。工程上必须先明确属于哪一类,否则优化方向会完全跑偏。
功耗构成:五个可归因的域
把 STM32N6 的功耗拆开看,可以归到五个域:
- NPU 动态功耗:与推理频率、MAC 利用率、权重与激活值的数据搬运量强相关。Neural-ART 的能效在 0.5~1 TOPS/W 量级,但实际利用率受内存带宽限制。
- CPU 动态功耗:Cortex-M55 负责前后处理、调度与协议栈。带 Helium(MVE)的向量指令能显著降低前后处理周期数,从而降低这部分功耗。
- 内存子系统功耗:包括 4.2 MB SRAM 的访问功耗与外部 PSRAM/Flash 的接口功耗。这是最容易被忽视、却常常是瓶颈的一项。
- 外设与接口功耗:摄像头接口(CSI)、MIPI、DCMI、UART、SPI、以太网等,取决于数据率与是否常开。
- 静态与漏电功耗:与温度、电压、工艺角相关,在低功耗模式下成为主导项。
一个常见的误区是只盯着 NPU 的 GOPS 和频率,而忽略了数据搬运。在 STM32N6 上,一次推理的能量往往有相当比例消耗在 SRAM 读写与外部存储访问上,因此“减少数据搬运”常常比“提高 NPU 频率”更有效。
从模型到芯片的功耗分析框架
下面这张图给出本课程贯穿始终的分析框架:左侧是模型侧的可控变量,中间是芯片侧的功耗域,右侧是可观测的测量点与优化目标。它把“模型—编译—运行时—芯片—测量”串成一条可归因的链路。
框架的关键在于“可归因”:任何一次功耗异常,都应该能沿着这条链路找到对应的域。例如平均电流偏高,可能是 NPU 占空比过高、也可能是唤醒延迟太长导致无法进入深度睡眠、还可能是外部 PSRAM 常开。只有把测量点与功耗域对应起来,优化才不是盲调。
工程约束:不能只看功耗
实际项目中,功耗优化始终受四类约束牵制:
- 精度约束:量化到 INT8 通常精度损失可接受,但 INT4 或更激进的量化可能让 mAP 掉几个点,必须用验证集确认。
- 实时性约束:降低 NPU 频率能省功耗,但单次推理时间变长,可能错过帧率或响应窗口。
- 内存约束:4.2 MB SRAM 要同时容纳权重、激活值、双缓冲与协议栈,放不下就要外扩,而外扩本身增加功耗。
- 成本与开发周期约束:不是所有项目都能上外部 PSRAM 或做定制板,优化要在现有硬件上完成。
建立功耗基线是第一步:在目标板上以固定输入、固定频率、固定温度跑一次完整推理,记录平均电流、峰值电流、单次推理时间与能量。后续所有优化都以这条基线为参照,避免“感觉变快了”这类不可验证的判断。