news 2026/7/17 4:22:37

Arm Ethos-U65 介绍(2) Vela编译和命令流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Arm Ethos-U65 介绍(2) Vela编译和命令流

编程模型

软件栈

网络模型到 NPU 实现的步骤如下,总体划分为离线和运行两部分

a)离线工具链(量化 → Vela编译)

离线过程需要将网络模型转换为 NPU 可以接受的二进制命令流,具体流程为:
训练模型:流程起点是准备训练好的模型
量化:IP 只支持 TensorFlow Lite 格式的定点模型,需要将模型量化为tflite格式模型。
编译:ARM 提供 Vela 编译工具,将 tflite 模型编译成二进制命令流,编译同时会进行权重压缩、内存分配等优化,这个优化不会有精度损失。

b)运行(Arm NN → 驱动 → NPU)

使用 CMSIS:NN 库可以简化运行流程,也可以通过寄存器直接配置 NPU 工作,具体流程如下:
• 将编译好的命令流、权重等数据放入内存;
• 通过写寄存器,将命令流的内存地址等信息告知 NPU;
• 触发 NPU 开始执行;
• NPU 运算完毕后,通过中断(IRQ)通知主机。

寄存器

寄存器按照功能层面分为BASE、BASE_POINT、ID、和PMU共4个区域,下面说明一些可以配置IP基本运行的寄存器。

a)BASE 寄存器
BASE 用于 IP 工作的基本配置,流程是预先在存储中准备好命令流、原始数据、权重,通过 QBASE0 指定命令流起始地址,然后通过 CMD 触发 IP 运算,等待中断清除中断,最后读取结果。

地址寄存器说明
0x0008CMD触发IP工作、清除中断
0x0010/14QBASE0/1命令流存放的起始地址,40bit地址所以需要2个寄存器
0x0018QREAD当前命令执行地址,用于读取debug
0x0020QSIZE命令流大小,单位是Byte
0x003CREGIONCFG配置每个区域使用的AXI接口
0x0040/44/48/4CAXI_LIMIT0/1/2/3配置AXI接口burst长度、outstanding长度等

b)BASE_POINT 寄存器
IP 包含8个区域,BASE_POINT 寄存器指示了每个区域的偏移。例如 ip 示例程序用了区域 0、1、2、3,分别存储权重、输入图像、中间缓存、输出图像。区域的划分本意是配合 REGIONCFG 指定不同存储设备,哪个区域用来干什么实际上是命令流里的代码决定的,即命令流也可以写成所有过程只用区域 0,然后在区域 0 内再加上不同偏移。

地址寄存器说明
0x0080/84BASEP0/1区域0地址偏移,40bit地址所以需要2个寄存器
0x008C/88BASEP2/3区域1地址偏移
0x0094/90BASEP4/5区域2地址偏移
0x009C/98BASEP6/7区域3地址偏移

c)ID、PMU寄存器
ID 用于指示IP信息,PMU 用于性能分析和优化。

命令流

命令包含 cmd0 和 cmd1 两类,cmd0 为32it,由 10bit指令+6bit标识+16bit参数构成;cmd1 为 64bit,在 6bit 标识不同的基础上又附带了 32bit 数据。

Bit15Bit14Bit13Bit12Bit11Bit10Bits 9-0Data
000000cmd0No data item
010000cmd132-bit data item payload

下图为指令流示例,SET_PARALLEL_MODE 为 cmd0 指令,32bit,参数是1;而后面 SET_IFM_BASE0 为 cmd1 指令,64bit,参数为0,附带数据0,指令地址偏移依次累加。

命令大体可以分为如下几类,通常命令流由很多段运算组成,每段运算又由很多 SET + OP_KERNEL 组成。只有存储到存储才需要 NPU_OP_DMA_START 命令,对于 CONV、POOL 等运算 IP 内部会自动调用 DMA 读取 IFM 和写 OFM 地址数据。

命令描述
NPU_OP_<KERNEL><KERNEL>可以是CONV、DEPTHWSIECONV、POOL等运算
NPU_SET_<STATE>配置运算参数
NPU_OP_STOP指示命令执行完成
NPU_OP_DMA_START发起DMA搬运
NPU_OP_<CONDITION>_WAIT等待状态满足

权重压缩

IP使用的权重采用压缩编码,压缩方式为无损压缩,即IP运算结果应该和tflite模型是完全一致的。压缩方式包括对零值序列编码和非零的 Golomb-Rice 编码和查找表编码,ip trm 3.7小节有算法具体描述。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 4:19:19

Fluentd配置文件加密:从风险到落地的全链路安全防护方案

1. 项目概述&#xff1a;为什么Fluentd配置文件加密是运维安全的“命门”&#xff1f;如果你负责过生产环境的日志收集&#xff0c;尤其是使用Fluentd作为核心的日志路由引擎&#xff0c;那你一定对它的配置文件&#xff08;通常是fluent.conf&#xff09;又爱又恨。爱的是它强…

作者头像 李华
网站建设 2026/7/17 4:18:08

C++模板实战:构建通用数据处理框架,告别重复代码

1. 项目概述&#xff1a;当数据处理遇上C模板干了这么多年C&#xff0c;我越来越觉得&#xff0c;数据处理这事儿&#xff0c;本质上就是一场关于“类型”和“操作”的抽象游戏。你想想&#xff0c;无论是从文件里读一堆数字做统计分析&#xff0c;还是处理网络传来的JSON包&am…

作者头像 李华
网站建设 2026/7/17 4:17:50

Windows 2000服务架构解析与安全管理实践

1. Windows 2000服务架构深度解析Windows 2000作为微软企业级操作系统的里程碑版本&#xff0c;其服务架构设计至今仍影响着现代服务器体系。不同于普通用户熟悉的应用程序&#xff0c;服务&#xff08;Service&#xff09;是在后台长期运行的组件&#xff0c;通常随系统启动而…

作者头像 李华
网站建设 2026/7/17 4:17:40

DRC模块高亮抑制的原理

目录 1. 基础流水线架构 2. Raw域前置DRC高光抑制核心原理 1. 基础流水线架构 本次说明基于平台固定Raw域处理链路&#xff1a;BLC&#xff08;黑电平校正&#xff09;→ LSC&#xff08;镜头阴影校正&#xff09;→ DRC&#xff08;动态范围压缩&#xff09;→ WB&#xff0…

作者头像 李华
网站建设 2026/7/17 4:16:41

KV260视觉套件开发实战:从DPU原理到AI模型部署

1. KV260视觉入门套件初体验&#xff1a;从开箱到上电当我第一次拿到KV260视觉入门套件时&#xff0c;黑色哑光外壳上醒目的AMD-Xilinx标志就给人一种专业感。这个比信用卡略大的开发板搭载了Zynq UltraScale MPSoC&#xff0c;板载资源相当丰富&#xff1a;4GB DDR4内存、8GB …

作者头像 李华
网站建设 2026/7/17 4:15:27

AI编程助手选型指南:从单次补全到工程化集成的实践路径

最近在几个开发者社群里&#xff0c;看到不少人在讨论 AI 编程工具的订阅选择。有人纠结于要不要从某个知名平台转向新出的 Cline Pass&#xff0c;也有人直接抛出了“Codex Opencode Go”的组合方案&#xff0c;甚至提到了搭配 oh-my-opencode-slim 这样的配置脚本。这让我意…

作者头像 李华