嵌入式AI与Ethos-U基础:Arm Ethos-U55/U65架构、NPU加速原理、与MCU的协同工作方式

在嵌入式AI应用从云端推理向边缘端迁移的浪潮中,Arm Ethos-U系列NPU(Neural Processing Unit)扮演了关键角色。Ethos-U55与Ethos-U65是专为Cortex-M和Cortex-A系列处理器设计的AI加速器,它们并非替代MCU/CPU,而是作为协处理器,与主控核心协同完成神经网络推理任务。理解其架构设计、加速原理以及协同工作机制,是优化摄像头输入管线、实现低延迟人体检测的前提。本章将深入剖析Ethos-U的硬件架构、NPU加速的核心逻辑,以及在实际系统中与MCU的分工协作方式。

MCU 域 (Cortex-M55/M85) NPU 域 (Ethos-U55/U65) Cortex-M CPU 控制流 / 预处理 DMA 控制器 图像搬运 / 数据流 SRAM 输入/输出缓冲区 中断控制器 NVIC / 事件触发 MAC 阵列 8x8 / 16x16 乘累加 并行计算引擎 激活/池化单元 ReLU / Sigmoid MaxPool / AvgPool 权重解码器 压缩权重解压 稀疏性跳过 命令队列 指令解析与调度 多级流水线 共享系统内存 (SRAM / SDRAM) 输入特征图 / 输出特征图 / 权重缓存 通过 AXI 总线访问 摄像头接口 DCMI / CSI-2 RAW / YUV 数据 控制信号 AXI 总线数据通路 Ethos-U 与 MCU 通过 AXI 总线共享内存,NPU 作为从设备由 CPU 配置并触发

2.1 Ethos-U55与U65架构核心差异

Ethos-U55与U65虽然同属Arm嵌入式AI加速器家族,但设计定位有明显区别。U55面向Cortex-M系列MCU,通常集成在微控制器内部或作为紧耦合协处理器;U65则面向Cortex-A应用处理器,支持更大的内存带宽和更复杂的网络模型。两者在MAC阵列规模、内存接口、支持的网络类型上存在代际差异。

特性维度 Ethos-U55 Ethos-U65
目标主控 Cortex-M55 / M85 Cortex-A32 / A35 / A53
MAC单元数量 32~128 MAC/周期 128~256 MAC/周期
内存带宽 32-bit AXI 64-bit AXI
支持量化 Int8 / Int16 Int8 / Int16 / BFloat16
典型算力 0.5~2 TOPS 1~4 TOPS
典型应用 关键词唤醒、简单人体检测 人脸识别、多目标跟踪

在实际摄像头人体检测项目中,U55通常用于电池供电的IoT设备,如智能门锁、低功耗监控摄像头;U65则用于需要同时处理多路视频流或更高分辨率输入的边缘网关。选择时需根据模型参数量、输入分辨率(如192x192x3)和帧率要求综合评估。

2.2 NPU加速原理:从指令到张量计算

NPU加速的核心在于将神经网络中的大量乘加运算(MAC)并行化。与CPU逐条执行指令不同,Ethos-U采用单指令多数据(SIMD)和脉动阵列结构,在一个时钟周期内完成多个MAC操作。其工作流程可分解为四个阶段:

  1. 命令解析:CPU通过AHB/AXI总线将命令序列写入NPU的命令队列,NPU硬件解析器逐条读取并解码。
  2. 权重加载:权重以压缩格式存储在系统内存中,NPU的权重解码器负责解压并分发到MAC阵列。利用权重稀疏性跳过零值计算,减少无效功耗。
  3. 张量计算:MAC阵列按卷积核尺寸滑动窗口,对输入特征图进行乘累加。U55的MAC阵列支持3x3、1x1等常见卷积核,并内置激活函数单元(ReLU、Sigmoid)和池化单元。
  4. 数据写回:计算结果通过AXI总线写回系统内存,同时更新输出特征图指针,准备下一层计算。

关键优化点:Ethos-U支持内存复用机制。输入特征图、输出特征图与中间缓冲区可以共享同一块SRAM区域,通过地址偏移避免频繁的内存分配和释放。在摄像头管线中,这意味着上一帧的输出可以直接作为下一帧的输入缓冲区,减少拷贝开销。

2.3 MCU与NPU的协同工作模式

在Ethos-U系统中,MCU(Cortex-M)扮演"指挥官"角色,NPU是"计算加速器"。两者通过共享内存和中断机制实现异步协作。典型的协同流程如下:

// 伪代码:MCU 驱动 NPU 执行推理
1.  MCU 准备输入数据(摄像头帧)到共享内存地址 0x30000000
2.  MCU 配置 NPU 任务描述符(网络模型地址、输入/输出地址、层数)
3.  MCU 写 NPU 触发寄存器(BASE_ADDR + 0x00 = 0x1)
4.  NPU 开始执行,MCU 进入 WFI(等待中断)或处理其他任务
5.  NPU 完成推理,产生中断信号(IRQ)
6.  MCU 中断服务例程读取输出结果(人体检测框坐标)
7.  MCU 根据结果控制外设(如报警、抓拍)

这种异步模式极大提升了系统吞吐量。在摄像头输入管线中,MCU可以在NPU推理上一帧时,同时采集并预处理下一帧图像,实现流水线并行。具体而言,DMA控制器负责将摄像头数据搬运到SRAM,CPU执行格式转换(如RGB888转RGB8888)、缩放、归一化等预处理,NPU则专注于卷积计算。

2.4 案例拆解:基于U55的低功耗人体检测摄像头

以一个典型的智能门锁场景为例,设备采用Cortex-M55 + Ethos-U55组合,摄像头输出640x480 RGB图像,但人体检测模型输入要求192x192x3。系统设计面临三个约束:功耗低于100mW、帧率不低于5FPS、SRAM容量仅512KB。

初始现象与目标:直接使用CPU进行卷积计算,每帧推理耗时约800ms,功耗达到350mW,无法满足电池供电需求。引入Ethos-U55后,目标是将推理时间压缩至150ms以内,功耗降至80mW。

关键参数与数据:

  • 模型:MobileNetV2-0.25(量化至Int8),参数量约0.7M
  • 输入:192x192x3,输出:10x10x6(锚框+类别+坐标)
  • U55配置:64 MAC/周期,工作频率200MHz
  • 共享内存:256KB SRAM(输入+输出+中间层)

分析判断过程:通过Arm Cycle模型仿真,发现瓶颈不在MAC计算,而在内存带宽。每层卷积需要从SRAM读取输入特征图和权重,写回输出。若输入输出缓冲区分配不合理,会产生大量bank冲突。优化方案是将输入特征图按通道分块(如每块16通道),权重按输出通道分块,使DMA传输与MAC计算重叠。

实际操作步骤:

  1. 使用Vela编译器(Arm官方NPU编译器)对模型进行优化,开启权重压缩和内存复用。
  2. 调整SRAM分区:输入缓冲区64KB,输出缓冲区64KB,权重缓存128KB。
  3. 配置DMA双缓冲机制:当NPU计算当前帧时,DMA预加载下一帧数据。
  4. 将摄像头采集频率锁定为15FPS,但NPU推理频率为5FPS,中间帧用于运动检测(CPU执行简单帧差法)。

结果对比:优化后单帧推理时间降至120ms,系统总功耗78mW(其中NPU占45mW,CPU占20mW,摄像头占13mW),帧率稳定在5FPS。相比纯CPU方案,推理速度提升6.7倍,功耗降低77%。

风险与代价:内存复用导致调试难度增加,若网络结构变化需重新验证内存布局;双缓冲机制占用额外SRAM,限制了模型规模扩展。

复盘经验:在Ethos-U项目中,内存带宽规划比MAC利用率更重要。建议在项目初期使用Arm的固定虚拟平台(FVP)进行性能仿真,避免硬件流片后才发现瓶颈。

2.5 常见误区与设计要点

误区一:认为NPU可以完全替代CPU。实际上,NPU只负责卷积、全连接等计算密集型算子,而图像预处理(如颜色空间转换)、后处理(如NMS非极大值抑制)、控制逻辑仍需CPU完成。在人体检测中,NMS操作在CPU上执行可能消耗10-20ms,需优化算法或使用NPU支持的算子。

误区二:忽略数据格式对齐。Ethos-U要求输入特征图按16字节对齐,且通道数需为4的倍数。若摄像头输出为RGB888(3通道),需转换为RGB8888(4通道)或使用NHWC布局并填充零通道,否则NPU无法直接读取。

经验提示:使用Vela编译器时,务必开启--arena-cache-size参数,为NPU预留足够的内存池。同时,利用--config文件指定SRAM大小和带宽,编译器会自动进行内存分块和调度优化。对于摄像头输入,建议在MCU侧完成分辨率缩放和格式转换,避免NPU处理非对齐数据。

总结而言,Ethos-U55/U65为嵌入式AI提供了高效的算力底座,但其价值发挥依赖于合理的系统架构设计。开发者需深入理解NPU的存储层次、数据通路和中断机制,才能构建出低延迟、低功耗的摄像头人体检测管线。下一阶段将聚焦于摄像头输入接口的具体配置与数据流优化策略。