Arm Ethos-U65 介绍(1) 架构、数据格式与算子

📅 2026/7/17 21:23:31
Arm Ethos-U65 介绍(1) 架构、数据格式与算子
概述产品定位Arm Ethos-U 系列是 Arm 为微处理器系统实现边缘计算设计的 NPU IP 核旨在以极低的功耗和芯片面积高效加速机器学习推理任务推荐和Cortex-M处理器搭配当前包括U55、U65、U85三款产品。本文以U65进行介绍U65 支持最高 1TOP/s 算力支持 TensorFlow Lite架构要求权重 8bit 量化可以部署在裸机或 RTOS 系统。官方提供 Vela 编译器可以将模型转化为指令流高效在 NPU 上部署同时可以使用CMSIS-NN 库简化开发流程。应用场景官方针对U65提供了 Corstone-315 物联网参考设计平台方案是 Cortex M85Ethos U65Mali C55M85 是专门面向机器学习的 MCU支持最新的 Helium 技术C55 是 ISP。以目标检测为例U65 只能计算中间过程前处理 resize 和格式转换还需要 ISP 实现后处理排序和 NMS 还需要处理器实现甚至对于网络中一些 U65 不支持的算子也需要处理器实现。成熟产品可以参考恩智浦 i.MX 93 处理器整体方案为 Cortex A55M33Ethos-U65异构架构。硬件架构功能模块NPU包含Central ControlCC、DMA controller、Weight decoder、MAC unit和Output unit等子模块下面分别介绍。•Central Control解析命令流为具体任务排队并分派给 DMA 、权重解码器、MAC单元和输出单元•DMA controller通过AXI主接口进行数据搬运包括读命令流、读写权重和偏置、读输入特征图IFM、写输出特征图OFM和内存到内存搬运用于优化加速运算•Weight decoder权重解码器u65 输入权重为压缩编码格式经DMA搬运到IP内部解码再分发至MAC单元待参与运算。•MAC unit读取特征图IFM执行点积和累加运算对应卷积、深度卷积、向量乘等算子。•Output unit对输出特征图OFM执行缩放、偏置和激活函数处理然后写到外部存储激活函数支持ReLU、ReLU1、ReLU6、Leaky ReLU、tanh、sigmoid、LUT实际后几个都是LUT实现的输出运算支持加/减/乘、最值、绝对值、左/右移前导零计数。外部接口•时钟复位模块为单一时钟域。•APB 4 从接口用于寄存器配置。•AXI 5 主接口x2用于读取指令块、读取权重、读写中间数据可以通过寄存器配置哪些区域通过哪个AXI接口实现。•Q-Channel低功耗握手接口参见 amba spec。•IRQ中断指示运算完成。数据类型特征图格式IP在外部采用NHWC批次、高、宽、通道格式也就是TensorFlow Lite的标准格式内部采用NHCWB16格式将每16个通道打包为Block以提升访问效率。对于NHWC要求N1每个元素大小1字节或2字节元素 (y, x, c) 的地址为 BASE ySTRIDE_Y x*STRIDE_X c*ElemSizeBASE是基地址STRIDE是偏移BASE和STRIDE在命令流中可以看到定义。数据类型与精度支持如下数据类型数据类型范围/取值支持的激活与权重组合• 无符号8位激活 无符号8位权重支持按tensor配置激活和权重的无符号零点范围 0–255• 有符号8位激活 有符号8位权重支持按tensor配置激活的有符号零点范围 -128 至 127• 有符号16位激活 有符号8位权重激活和权重均为对称逐输出通道偏置与缩放激活值• 8位激活值支持逐输出通道偏置和缩放• 16位激活值支持逐输出通道偏置和缩放累加器格式32位累加器, 40位累加器, 16位浮点累加器s5.10位宽8×16位操作的运行速度是 8×8 位操作的一半Tensor维度• 高度范围1–65536• 宽度范围1–65536• 深度通道数范围1–65536算子支持算子支持如下在支持的基础上还有额外约束条件。ABS、ADD、ARG_MAX、AVERAGE_POOL_2D、BATCH_MATMUL、CONCATENATION、CONV_2D、DEPTHWISE_CONV_2D、EXP、EXPAND_DIMS、FULLY_CONNECTED、HARD_SWISH、LEAKY_RELU、LOG、LOGISTIC、MAXIMUM、MAX_POOL_2D、MEAN、MINIMUM、MIRROR_PAD、MUL、NEG、PACK、PAD、PADV2、PRELU、QUANTIZE、REDUCE_MAX、REDUCE_MIN、RELU、RELU6、RELU_0_TO_1、RELU_N1_TO_1、RESHAPE、RESIZE_BILINEAR、RESIZE_NEAREST_NEIGHBOR、REVERSE_V2、RSQRT、SLICE、SOFTMAX、SPLIT、SPLIT_V、SQUARED_DIFFERENCE、SQUEEZE、STRIDED_SLICE、SUB、SUM、TANH、TILE、TRANSPOSE、TRANSPOSE_CONV、UNIDIRECTIONAL_SEQUENCE_LSTM、UNPACK卷积NPU允许最大 64x64 的 2D 卷积和 1x4096 的 1D 卷积所以实际网络需要拆成若干Block再进行计算对于 8 位激活值32 位累加器不会溢出对于 16 位激活值40 位累加器不会溢出。参数要求卷积核1 kernel_x*kernel_y 64*641 kernel_y 64精度权重类型: {int8, uint8}步长1 stride_x 31 stride_y 3膨胀卷积1x1, 1x2, 2x1, 2x2上采样限制2x2pad填充顶部/左侧 0–31, 底部/右侧 0–32融合激活函数{int8, uint8, int16}: ReLU, ReLUX, tanh, sigmoid, LUT权重顺序按深度优先、按部分核优先缩放逐输出通道的缩放和偏置参数累加器fp(s5.10), int32, int40深度卷积深度卷积有一个 H×W×C 的矩阵其中大小为 H×W 的卷积核独立地应用于每个通道。每一层只应用一个卷积核depth_multiplier1。参数要求卷积核1 kernel_x*kernel_y 64*641 kernel_y 64Precision权重类型: {int8, uint8}步长1 stride_x 31 stride_y 3膨胀卷积1x1, 1x2, 2x1, 2x2上采样限制2x2pad填充顶部/左侧 0–31, 底部/右侧 0–32融合激活函数{int8, uint8, int16}: ReLU, ReLUX, tanh, sigmoid, LUTDepth multiplier1缩放逐输出通道的缩放和偏置参数累加器fp(s5.10), int32, int40池化参数要求卷积核带填充的平均池化1 kernel_x 81 kernel_y 8不带填充的平均池化 和 最大池化1 kernel_x * kernel_y 256*2561 kernel_y 256精度不带填充的平均池化{uint8, int8, int16} → {uint8, int8, int16}任意配对均可带填充的平均池化 或 最大池化输出特征图类型必须等于输入特征图类型支持类型{int8, uint8, int16}步长1 stride_x 31 stride_y 3输入上采样平均池化2×2 最近邻插值, 或 2×2 零插入最大池化2×2 最近邻插值pad填充平均池化顶部/左侧 0–3, 底部/右侧 0–4最大池化顶部/左侧 0–127, 底部/右侧 0–128融合激活函数{int8, uint8, int16}: ReLU, ReLUX, tanh, sigmoid, LUT缩放带pad的平均池化 或 最大池化无缩放不带pad的平均池化可选择逐通道缩放偏置或全局缩放累加器所有池化: int32不带填充的平均池化: int32, int40