2. Arm Ethos-U系列概述
Arm Ethos-U 系列是 Arm 面向嵌入式与物联网边缘设备推出的微型神经网络加速器(microNPU)家族。它并不替代 CPU,而是作为 Cortex-M 或 Cortex-A 的协处理器,通过 AXI/APB 总线挂载,专门承担卷积、全连接、池化、激活等张量运算,从而在毫瓦级功耗预算内实现数十至数百 GOPS 的推理能力。理解 Ethos-U55 与 Ethos-U85 的定位差异,是后续掌握命令流、张量地址、权重压缩与算子映射的前提。
一、核心原理:从 U55 到 U85 的架构演进
Ethos-U55 是 Ethos-U 家族的第一代产品,定位为“超低功耗、确定性推理”的微控制器级 NPU。它采用固定功能的数据通路,主要支持 8 位与 16 位整数量化(int8/int16),内部由卷积引擎、权重解码器、张量地址生成器和命令解析器组成。U55 的典型配置为 32 至 256 个 MAC/周期,对应 0.5 TOPS 以下的算力,适合电池供电、成本敏感的终端设备。
Ethos-U85 则是面向更高吞吐与更复杂模型的新一代架构。它在 U55 的基础上显著扩展了算力规模,支持更高的 MAC 阵列配置,并增强了对 Transformer 类结构中常见算子的支持,例如更灵活的矩阵乘、转置与逐元素运算。U85 同样以整数运算为主,但在数据复用、权重压缩和命令调度上做了优化,使其能够在保持嵌入式功耗轮廓的同时,承载更大参数量、更高分辨率的模型。
关键区别一句话总结:U55 解决“能不能在 MCU 上跑轻量 CNN”,U85 解决“能不能在边缘端跑更大、更现代的模型(含注意力结构)”。
二、定位与差异对比
两者共享同一套软件栈与编程模型:模型经 Vela 编译器量化与调度后生成命令流,由驱动写入命令队列,NPU 按序执行并产生中断。差异主要体现在算力、算子覆盖、内存带宽需求与目标 SoC 形态上。
| 维度 | Ethos-U55 | Ethos-U85 |
|---|---|---|
| 定位 | MCU 级超低功耗推理 | 边缘端高吞吐推理 |
| 典型算力 | 0.5 TOPS 以下 | 更高,面向更大 MAC 配置 |
| 量化支持 | int8 / int16 | int8 / int16,算子覆盖更广 |
| 算子覆盖 | 经典 CNN 为主 | 增强矩阵运算,适配注意力结构 |
| 内存需求 | SRAM/TCM 即可 | 更高带宽,常配 DDR 或大 SRAM |
| 典型宿主 | Cortex-M55/M85 | Cortex-M85/A 系列或异构 SoC |
| 应用重心 | 关键词唤醒、简单视觉 | 多模态、视觉检测、语音增强 |
三、方法流程:从模型到 NPU 执行
无论 U55 还是 U85,开发流程都遵循“训练—量化—编译—部署—执行”的链路。以下命令展示使用 Vela 编译器将 TFLite 模型转换为 Ethos-U 可执行格式的典型过程:
# 1. 训练并导出 TFLite 模型
python train.py --output model.tflite
# 2. 使用 Vela 编译,指定目标配置
vela model.tflite \
--accelerator-config ethos-u55-128 \
--output-dir ./out \
--system-config MySysConfig
# 3. 生成物包含命令流与权重
ls ./out
# model_vela.tflite model_vela.tflite.summary ...
编译后,模型中的算子被划分为“NPU 可执行”与“CPU 回退”两类。驱动在初始化时配置 NPU 基地址、中断号与命令队列,随后将命令流地址写入寄存器并启动。执行完成后通过中断通知 CPU 读取输出张量。
四、典型应用场景与用例
- U55 典型用例:关键词唤醒(KWS)、手势识别、简单图像分类、异常振动检测、低分辨率人脸检测。
- U85 典型用例:多目标视觉检测、语音降噪与增强、姿态估计、小型 Transformer 推理、工业视觉质检。
- 共同场景:智能家居、可穿戴、工业传感、车载边缘节点、电池供电的始终在线设备。
例如在智能门锁中,U55 可承担人脸检测的轻量网络,实现毫秒级唤醒;而在需要同时处理人脸识别与语音指令的高端门禁中,U85 能并行承载更大模型,减少 CPU 占用与整体功耗。
五、误区与复盘
常见误区一:认为 NPU 算力越高越好。实际上若模型算子大量回退到 CPU,NPU 利用率会很低,需通过 Vela 报告检查 NPU 算子占比。
常见误区二:忽略内存带宽。U85 算力更强,但若 SRAM/DDR 带宽不足,MAC 阵列会因取数等待而闲置。
常见误区三:把 U55 与 U85 的软件接口视为完全不同。两者共享命令流与驱动模型,迁移时主要调整加速器配置与算子支持列表。
复盘时应重点关注三点:模型量化是否对称、命令流是否连续、DMA 与 CPU 访问是否产生冲突。只有把架构定位、算子覆盖与内存系统一起考虑,才能为具体产品选出合适的 Ethos-U 型号。