3. NPU与微控制器系统基础

Arm Ethos-U55/U85 并不是一颗独立运行的处理器,它必须挂载在一个微控制器(MCU)系统或应用处理器子系统中,由 CPU 负责调度、由总线负责搬运、由内存负责存放张量、由中断与 DMA 负责完成异步协作。理解 NPU 的编程模型,前提是先理解它所处的“宿主系统”。本节从 MCU 架构出发,串联总线接口、内存层次、中断与 DMA 四条主线,为后续 Ethos-U 的寄存器配置、命令流下发与算子调度打下系统级基础。

一、MCU 架构:NPU 的宿主环境

典型 Cortex-M 系列 MCU 采用哈佛架构的变体:指令总线(I-Bus)与数据总线(D-Bus)分离,配合系统总线(System Bus)访问外设。核心部件包括内核(Cortex-M55/M85 等)、嵌套向量中断控制器(NVIC)、系统控制块(SCB)、总线矩阵与各类外设。当 Ethos-U 作为协处理器接入时,它通常通过 AXI 或 AHB 主接口访问系统内存,通过 APB 从接口接收 CPU 的寄存器配置。

关键点在于:NPU 是总线上的主设备(Master),而不是外设寄存器堆。它能主动发起对 SRAM、Flash、DTCM 的读写,因此 CPU 只需“下命令”,不必逐字节搬运数据。这正是 NPU 能效远高于纯 CPU 推理的根本原因。

Ethos-U 在系统中的三种典型角色:
1. 紧耦合协处理器:与 Cortex-M 共享 TCM,延迟最低;
2. 总线主设备:通过 AXI 访问共享 SRAM/DDR,适合较大模型;
3. 独立子系统:配合专用 SRAM 与 DMA,形成 NPU 加速域。

二、总线接口:数据如何流动

MCU 内部总线通常分为三层:高性能 AXI/AHB 用于 CPU、NPU、DMA 等主设备;APB 用于低速外设寄存器;专用 TCM 总线用于零等待访问。Ethos-U 的编程接口分为两类:控制路径(APB/AHB 从接口,读写寄存器、命令流基址、中断状态)与数据路径(AXI 主接口,读取权重、特征图,写回输出张量)。

总线仲裁决定了 NPU 与 CPU、DMA 争抢带宽时的优先级。若 NPU 长时间占用 AXI,CPU 取指会被阻塞,表现为系统“卡顿”。因此实际工程中常通过 QoS 配置、总线矩阵分层或独立 SRAM 分区来隔离流量。

典型地址映射(示例):
0x0000_0000 - 0x000F_FFFF   Flash / 代码区
0x2000_0000 - 0x2003_FFFF   SRAM(共享,NPU 数据区)
0x2004_0000 - 0x2004_FFFF   Ethos-U 寄存器(APB 从接口)
0x2005_0000 - 0x2005_FFFF   NPU 专用 SRAM / 命令流缓冲
0xE000_0000 - 0xE00F_FFFF   Cortex-M 系统控制空间(NVIC/SCB)

三、内存层次:张量放在哪里

MCU 的内存层次通常为:寄存器 → TCM(DTCM/ITCM)→ SRAM → Flash/外部存储。Ethos-U 对内存的访问延迟极其敏感,因为卷积与矩阵乘需要反复读取权重和特征图。若权重放在 Flash 且未开启缓存,NPU 的 MAC 利用率会大幅下降。

因此,模型部署时通常将权重常驻 SRAM 或专用 NPU SRAM,特征图放在可被 AXI 高速访问的区域,命令流放在连续、对齐的缓冲区中。Ethos-U 要求命令流与部分数据结构满足对齐要求(如 16 字节对齐),否则会触发总线错误或性能下降。

存储层级典型容量访问延迟NPU 使用建议
DTCM/ITCM64–512 KB1 周期小模型权重、激活缓冲
片上 SRAM256 KB–4 MB数周期主权重区、特征图
Flash / XIPMB 级数十周期仅存放只读模型,需预取
外部 DDRGB 级百周期大模型,需 DMA 预取

四、中断与 DMA:异步协作机制

Ethos-U 完成一次推理后,会通过中断线通知 CPU。CPU 在 NVIC 中使能对应 IRQ,并在中断服务程序(ISR)中读取状态寄存器、清除中断标志、取出输出结果或启动下一段命令流。中断路径必须尽量短,避免在 ISR 中做大量数据搬运。

DMA 则承担“搬运工”角色:在 NPU 计算的同时,DMA 可以把下一层权重从 Flash 预取到 SRAM,或把上一层输出搬到 NPU 输入缓冲。这样 NPU 与 DMA 形成流水线,隐藏访存延迟。典型协作顺序为:CPU 配置 DMA → DMA 搬入权重 → CPU 触发 NPU → NPU 计算 → NPU 中断 → CPU 处理结果。

中断与 DMA 的分工原则:
• 中断负责“事件通知”,不负责“大数据搬运”;
• DMA 负责“块数据搬运”,不负责“逻辑判断”;
• NPU 负责“张量计算”,不负责“控制流”。

五、案例场景:一次 NPU 推理的系统级时序

假设在 Cortex-M55 + Ethos-U55 系统上运行一个关键词识别模型。CPU 首先初始化 NPU 寄存器,将命令流写入 SRAM,配置 DMA 把音频特征搬入输入缓冲;随后写 NPU 启动寄存器。NPU 通过 AXI 读取权重与特征图,完成卷积与全连接,写回输出张量,并拉高中断线。CPU 进入 ISR,读取输出并清除中断。整个过程 CPU 占用率极低,大部分时间处于休眠或处理其他任务。

MCU + Ethos-U 系统级数据流与协作 Cortex-M CPU 控制 / 调度 / ISR NVIC 中断使能 / 优先级 总线矩阵 AXI / AHB APB QoS / 仲裁 地址解码 主/从路由 Ethos-U55/U85 MAC 阵列 / 命令流 AXI 主 + APB 从 DMA 控制器 块搬运 / 预取 内存层次 TCM SRAM Flash 外部 DDR 命令流缓冲 配置 命令 触发 读/写 搬运 NPU 完成中断 → NVIC → CPU ISR IRQ 控制路径 NPU 数据路径 DMA 搬运路径 中断路径

六、常见误区与复盘

  • 误区一:把 NPU 当普通外设。NPU 是总线主设备,能主动访问内存,配置时需关注地址映射与对齐,而非仅写寄存器。
  • 误区二:忽略总线带宽争抢。NPU 与 CPU、DMA 共享 AXI 时,若未做 QoS 或分区,CPU 实时性会下降。
  • 误区三:在 ISR 中搬运大块数据。ISR 应只做状态读取与标志清除,数据搬运交给 DMA 或主循环。
  • 误区四:权重放在 Flash 直接运行。未预取或未缓存时,NPU 会因访存瓶颈而利用率骤降。
调试建议:若 NPU 启动后无中断,优先检查 NVIC 使能位、NPU 中断状态寄存器、命令流地址对齐以及总线错误标志。若推理结果异常,优先确认权重与特征图是否位于 NPU 可访问的地址区间。