2. STM32N6硬件架构与AI加速资源

STM32N6是ST首款集成自研神经网络加速器(NPU)的通用MCU,其定位不是“更快的M7”,而是把边缘AI推理从“CPU硬扛”转变为“专用单元承担”。理解它的硬件架构,核心是回答三个问题:算力由谁提供、数据在哪些存储层级之间流动、外设如何把真实世界的数据送进推理链路。这三者共同决定了模型能不能跑、跑多快、功耗多少,以及选型时该看哪些参数。

一、三核异构:M55、NPU与M4的职责边界

STM32N6内部包含三个处理单元:Cortex-M55、Neural-ART NPU和Cortex-M4。它们不是简单的“主核+协处理器”,而是按任务性质分工。

Cortex-M55是主应用核,运行最高800MHz,带Helium(M-Profile Vector Extension)向量扩展和Armv8.1-M的DSP指令。Helium对int8/int16的SIMD操作有直接支持,适合处理推理前后的信号预处理(滤波、FFT、归一化)以及轻量模型。它同时负责系统启动、外设管理、通信协议栈和任务调度。

Neural-ART NPU是AI加速核心,提供约600 GOPS的int8算力。它支持卷积、深度可分离卷积、全连接、池化、激活等常见算子,并支持int8与int4量化权重。NPU通过专用总线访问AXI SRAM和外部存储,不占用M55的指令周期。关键点在于:NPU是“算子级加速器”,不是通用处理器,模型必须经过ST Edge AI Core工具链编译成NPU可执行的二进制序列。

Cortex-M4通常作为低功耗协处理器或实时控制核,可独立运行传感器采集、电机控制等实时任务,让M55和NPU专注于AI负载。在典型部署中,M4负责“永远在线”的低速感知,M55+NPU负责“事件触发”的高算力推理。

选型判断:如果模型以int8卷积为主且算力需求超过100 GOPS,NPU是必选项;如果模型是小型全连接或需要复杂控制流,M55的Helium可能更灵活。M4的存在价值在于实时性与功耗隔离,而非AI算力。

二、内存层次:决定推理吞吐的隐形瓶颈

NPU算力再高,如果数据供不上,实际帧率仍会被内存带宽限制。STM32N6的内存层次需要按“谁访问、访问什么、带宽多少”来理解。

最靠近NPU的是AXI SRAM,总容量4.2MB,分为多个bank,NPU和M55均可高速访问。推理时,输入张量、权重和中间激活值应尽量放在AXI SRAM中,避免频繁访问外部存储。权重若超出片上容量,可存放在外部Octo-SPI Flash或HyperRAM中,但NPU访问外部存储的延迟显著高于片上SRAM,会直接拉低有效算力。

Cache与TCM方面,M55带有指令Cache、数据Cache和TCM。对于M55上运行的预处理代码,将热点函数放入TCM可减少取指抖动;对于NPU,则更依赖DMA和SRAM bank的合理分配,而不是Cache。

外部存储接口包括Octo-SPI(支持Xccela/HyperFlash/HyperRAM)和FMC。HyperRAM适合作为大模型的权重仓库,但带宽通常在几百MB/s量级,与AXI SRAM的GB/s级带宽差距明显。一个实用的经验是:把每层权重控制在片上可容纳的范围内,或采用分块加载策略,让NPU在计算当前块时预取下一块。

典型内存分配示例(假设模型int8量化):
AXI SRAM bank1: 输入张量 + 输出张量      (约 512KB)
AXI SRAM bank2: 当前层权重 + 中间激活    (约 1.5MB)
HyperRAM:       剩余权重 + 模型参数      (约 2MB)
TCM:            M55预处理代码 + 小缓冲区  (约 128KB)

这个分配不是固定模板,而是说明一个原则:带宽敏感的数据放片上,容量敏感的数据放片外,实时性敏感的代码放TCM。

三、外设接口:从传感器到推理的完整信号链

边缘AI的输入往往来自摄像头、麦克风、IMU或雷达。STM32N6的外设接口决定了数据能否低延迟、低CPU占用地进入内存。

DCMI/CSI用于摄像头接口,支持并行和MIPI CSI-2。图像数据可通过DMA直接写入AXI SRAM,M55只需配置DMA描述符,无需逐像素搬运。对于640×480灰度图,一帧约300KB,DMA搬运时间远小于CPU轮询。

I2S/SAI/PDM用于音频输入。PDM麦克风通过DFSDM或SAI接口转换为PCM,再送入M55做MFCC或直接送入NPU做音频分类。关键参数是采样率和帧长:16kHz、20ms帧长对应320个采样点,适合关键词唤醒类模型。

SPI/I2C/UART用于连接IMU、温度、压力等低速传感器。这类数据量小,通常由M4或M55的DMA通道采集,再拼装成特征向量。

以太网/USB/SPI从机用于模型更新和结果上报。部署时需要考虑:模型文件通过什么接口写入外部Flash,推理结果通过什么协议上传,以及是否需要在运行时切换模型。

STM32N6 边缘AI硬件架构与数据通路 传感器 / 输入源 摄像头 DCMI/CSI 麦克风 PDM/I2S IMU / 环境传感器 外设接口 + DMA DCMI / CSI-2 SAI / DFSDM SPI / I2C / UART 处理核心 Cortex-M55 @800MHz Helium / DSP / 控制 Neural-ART NPU ~600 GOPS int8 Cortex-M4 实时 / 低功耗协处理 内存层次 AXI SRAM 4.2MB TCM / Cache Octo-SPI / HyperRAM 原始数据 DMA 读写 典型推理数据流(以图像分类为例) 摄像头采集 DCMI + DMA 预处理 M55 Helium NPU推理 int8 卷积 后处理 M55 / M4 输出/上报 UART/Ethernet 输入/输出张量 → AXI SRAM 权重 → AXI SRAM 或 HyperRAM DMA 双缓冲 降低CPU占用 选型关注:NPU算力(GOPS) · 片上SRAM容量 · 外部存储带宽 · 外设DMA通道数 · 功耗模式

四、选型依据:从模型反推硬件配置

面对具体项目,选型不应从“STM32N6有什么”出发,而应从“模型需要什么”反推。以下是一组可操作的判断维度。

判断维度关键问题对STM32N6的对应资源
算力需求模型单次推理的MACs是多少?目标帧率多少?NPU约600 GOPS int8;M55 Helium约数十GOPS
模型容量int8量化后权重+激活值多大?AXI SRAM 4.2MB;超出部分需HyperRAM/Flash
输入带宽摄像头分辨率、帧率、音频采样率DCMI/CSI + DMA;SAI/DFSDM
实时性端到端延迟要求?是否有硬实时控制?M4独立实时核;M55中断响应
功耗预算是否电池供电?是否有常开感知需求?多功耗模式;M4低功耗运行
工具链兼容模型框架是否被ST Edge AI Core支持?TensorFlow Lite / ONNX / Keras转换

一个常见的误区是只看NPU的GOPS数字。实际上,如果模型权重超过4.2MB且必须频繁从HyperRAM读取,有效算力可能下降30%~50%。因此,模型量化后的体积与片上SRAM的匹配度,往往比峰值算力更能决定实际帧率。

注意:NPU不支持所有算子。若模型中包含NPU不支持的层(如某些自定义激活、非标准池化),工具链会将其回退到M55执行,形成“NPU+M55混合执行”。这会增加同步开销,选型前应先用ST Edge AI Core做一次算子覆盖率分析。

五、部署前的资源核对清单

在正式移植模型前,建议按以下顺序核对资源,避免后期返工:

  1. 量化模型体积:用工具链导出int8模型,记录权重、激活值、输入输出张量的字节数。
  2. 核对SRAM分配:确认权重+激活值是否能放入AXI SRAM;若不能,规划HyperRAM分区和预取策略。
  3. 确认外设通道:摄像头/麦克风使用的DMA通道是否与其它外设冲突;DMA描述符数量是否足够双缓冲。
  4. 评估CPU负载:预处理和后处理在M55上的执行时间,是否与NPU推理时间重叠;M4是否承担了足够的实时任务。
  5. 验证工具链输出:用ST Edge AI Core生成NPU二进制,检查算子覆盖率报告,确认回退到M55的层是否可接受。

完成这五步后,再进入具体的工程配置和代码实现,才能把“硬件资源”真正转化为“可交付的推理性能”。