2. STM32N6硬件与AI加速基础

要在STM32N6上做多模型推理调度,第一步不是写调度器,而是把“硬件账本”算清楚:算力从哪来、数据放在哪、带宽够不够、外设能不能同时喂饱多个模型。STM32N6的AI能力并非单一模块堆叠,而是由Neural-ART NPU、Cortex-M55、多级内存与一组高速外设共同构成的流水线。任何一环成为瓶颈,多模型并发都会退化成串行等待。

一、Neural-ART NPU:算力主体与调用边界

Neural-ART是STM32N6中专门面向神经网络推理的加速器,官方给出的峰值算力约为600 GOPS(INT8,@1 GHz量级,具体随型号与时钟配置变化)。它并不是“通用DSP”,而是围绕卷积、矩阵乘、激活等算子做数据流优化的固定功能阵列。理解它的关键有三点:

  • 算子覆盖有限:NPU擅长Conv、Depthwise Conv、MatMul、常见激活(ReLU/ReLU6/Sigmoid近似)与池化;遇到自定义算子、动态Shape、复杂控制流,往往要回退到Cortex-M55或CPU端预处理。
  • 数据必须“喂得进”:NPU的利用率高度依赖输入张量是否已在可访问的SRAM区域、是否满足对齐与布局要求(如NHWC、通道对齐)。布局转换本身会消耗CPU周期与带宽。
  • 一次一个上下文:NPU通常以“模型/子图”为粒度执行,多模型并发时需要在时间上分时复用,或在图级别切分后交替提交。调度器要管理的是NPU的“占用窗口”,而不是假设它能同时跑两个网络。

因此,多模型推理的第一条硬件约束是:NPU是稀缺的串行资源。调度策略必须围绕“谁先占NPU、占多久、何时让出”来设计。

二、Cortex-M55:控制、预处理与回退执行

Cortex-M55是主控核心,带Helium(MVE)向量扩展,能高效处理定点/浮点向量运算。它在AI流水线中承担四类工作:

  1. 前后处理:图像缩放、归一化、颜色空间转换、NMS、解码等,这些通常不适合NPU,却占大量周期。
  2. 算子回退:NPU不支持的层由M55执行,形成“NPU+M55混合图”。
  3. 调度与同步:中断响应、DMA搬运、模型切换、状态机管理。
  4. 小模型/轻量任务:参数量很小的模型直接跑在M55上可能比“搬运到NPU再搬回”更划算。

关键判断是:不要把所有模型都塞给NPU。一个典型的多模型系统里,可能一个检测模型跑NPU,一个关键词识别小模型跑M55,二者通过时间片与优先级协调。

三、内存层次:带宽与容量的双重约束

STM32N6的内存层次直接决定多模型能否“同时驻留”。典型层次包括:

  • 紧耦合内存TCM:靠近内核,低延迟,适合放关键代码、栈、频繁访问的小张量。
  • 片上SRAM:容量较大,是NPU与M55共享的主工作区,权重、激活、输入输出缓冲区都在这里竞争。
  • 外部存储(如HyperRAM/Octal Flash):容量大但带宽与延迟明显劣于片上,适合放不常换的权重或大帧缓冲,但频繁访问会拖垮实时性。

多模型并发的核心矛盾是:多个模型的权重+激活+输入输出缓冲区之和,是否超过可用片上SRAM。假设两个INT8模型:模型A权重1.2 MB、激活0.4 MB;模型B权重0.8 MB、激活0.3 MB;输入输出各0.2 MB。若全部常驻,需要约3.1 MB。若片上可用SRAM只有2 MB,就必须做权重的按需加载或模型切换,而切换本身会引入外部存储读取延迟。

工程上常用做法:把“常驻小模型”放SRAM,把“大模型权重”放外部存储并按层/按块预取;用双缓冲让DMA搬运与NPU计算重叠。

四、外设接口:数据入口与并发瓶颈

多模型推理的输入往往来自摄像头、麦克风、传感器。STM32N6常见相关外设有DCMI/CSI、I2S/SAI、SPI、UART、SDMMC以及DMA控制器。它们决定“数据能不能按时到”。

以视觉+音频双模型为例:摄像头以30 fps输出RGB565 640×480,单帧约600 KB,折算约18 MB/s;音频以16 kHz、16 bit、单声道持续输入,约32 KB/s。两者带宽差距巨大,但都依赖DMA搬运到SRAM。若DMA通道、SRAM端口或总线仲裁被摄像头占满,音频就可能丢帧。调度器需要为不同外设分配DMA优先级与缓冲区,避免“大流量饿死小流量”。

五、多模型推理的硬件约束总览

把上述要素放在一起,可以得到一张“资源—约束—调度动作”的关系图。下图不是流程步骤,而是帮助你在设计调度器前,先看清各硬件模块之间的数据流与竞争关系。

摄像头 / CSI ~18 MB/s 帧流 麦克风 / I2S ~32 KB/s 音频流 传感器 / SPI 低速周期采样 DMA 通道仲裁 优先级分配 片上 SRAM 权重 / 激活 / 缓冲 多模型竞争焦点 TCM 低延迟代码/栈 外部存储 大权重 / 帧缓冲 Neural-ART NPU 串行资源 ~600 GOPS INT8 Cortex-M55 Helium 向量 前后处理/回退 回退/协同 多模型推理的四条硬约束 NPU 串行:同一时刻只能执行一个模型/子图,需分时复用与优先级抢占。 SRAM 容量:多模型权重+激活+缓冲之和不得超过可用片上内存,否则需按需加载。 DMA/总线带宽:大流量外设可能饿死小流量,需分配优先级与独立缓冲。 M55 周期:前后处理与算子回退会占用CPU,调度器需预留时间片,避免控制路径阻塞。

六、从约束到调度设计

基于以上硬件事实,多模型推理调度器至少要做四件事:

  1. 资源建模:为每个模型记录权重大小、激活峰值、NPU占用时长估计、CPU前后处理周期、输入输出缓冲区大小。
  2. 驻留决策:决定哪些模型常驻SRAM、哪些放外部存储、哪些按需加载;常驻集合必须满足SRAM预算。
  3. 时间片与优先级:NPU按时间片轮转或按优先级抢占;高实时性模型(如安全检测)优先,低优先级模型可降帧。
  4. 数据通路隔离:为不同外设分配DMA通道与双缓冲,避免摄像头与音频互相阻塞。

一个可参考的示例参数表如下(数值为教学假设,非实测):

模型 权重 激活峰值 NPU占用估计 M55前后处理 驻留策略
目标检测 A 1.2 MB 0.4 MB 8 ms/帧 3 ms 常驻SRAM
关键词识别 B 0.3 MB 0.1 MB 1 ms/帧 0.5 ms 常驻SRAM
场景分类 C 2.5 MB 0.6 MB 12 ms/帧 4 ms 外部存储+按需加载

若SRAM预算为2 MB,A+B常驻约2.0 MB(含缓冲),C只能按需加载。调度器在C执行前需从外部存储预取权重,预取时间若为6 ms,则C的实际周期约18 ms。此时若A要求30 fps(33 ms周期),B要求持续低延迟,就需要把C安排在A的帧间空隙,并允许C降帧到10 fps。这就是“硬件约束驱动调度策略”的具体含义。

常见误区:把NPU峰值算力直接当作多模型总吞吐。实际吞吐受SRAM带宽、DMA竞争、CPU前后处理与模型切换开销共同限制,必须按最慢环节估算。

掌握这些硬件边界后,后续的模型量化、内存布局、DMA配置与调度策略才有明确的优化目标:不是追求单个模型最快,而是让多个模型在NPU、M55、SRAM与DMA之间稳定共存。