嵌入式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的分工协作方式。
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操作。其工作流程可分解为四个阶段:
- 命令解析:CPU通过AHB/AXI总线将命令序列写入NPU的命令队列,NPU硬件解析器逐条读取并解码。
- 权重加载:权重以压缩格式存储在系统内存中,NPU的权重解码器负责解压并分发到MAC阵列。利用权重稀疏性跳过零值计算,减少无效功耗。
- 张量计算:MAC阵列按卷积核尺寸滑动窗口,对输入特征图进行乘累加。U55的MAC阵列支持3x3、1x1等常见卷积核,并内置激活函数单元(ReLU、Sigmoid)和池化单元。
- 数据写回:计算结果通过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计算重叠。
实际操作步骤:
- 使用Vela编译器(Arm官方NPU编译器)对模型进行优化,开启权重压缩和内存复用。
- 调整SRAM分区:输入缓冲区64KB,输出缓冲区64KB,权重缓存128KB。
- 配置DMA双缓冲机制:当NPU计算当前帧时,DMA预加载下一帧数据。
- 将摄像头采集频率锁定为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的存储层次、数据通路和中断机制,才能构建出低延迟、低功耗的摄像头人体检测管线。下一阶段将聚焦于摄像头输入接口的具体配置与数据流优化策略。