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基本运行的寄存器。aBASE 寄存器BASE 用于 IP 工作的基本配置流程是预先在存储中准备好命令流、原始数据、权重通过 QBASE0 指定命令流起始地址然后通过 CMD 触发 IP 运算等待中断清除中断最后读取结果。地址寄存器说明0x0008CMD触发IP工作、清除中断0x0010/14QBASE0/1命令流存放的起始地址40bit地址所以需要2个寄存器0x0018QREAD当前命令执行地址用于读取debug0x0020QSIZE命令流大小单位是Byte0x003CREGIONCFG配置每个区域使用的AXI接口0x0040/44/48/4CAXI_LIMIT0/1/2/3配置AXI接口burst长度、outstanding长度等bBASE_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地址偏移cID、PMU寄存器ID 用于指示IP信息PMU 用于性能分析和优化。命令流命令包含 cmd0 和 cmd1 两类cmd0 为32it由 10bit指令6bit标识16bit参数构成cmd1 为 64bit在 6bit 标识不同的基础上又附带了 32bit 数据。Bit15Bit14Bit13Bit12Bit11Bit10Bits 9-0Data000000cmd0No data item010000cmd132-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_KERNELKERNEL可以是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小节有算法具体描述。

相关新闻

最新新闻

GitHub 上传项目“渡劫”实录:那些年我踩过的坑与进阶指南

GitHub 上传项目“渡劫”实录:那些年我踩过的坑与进阶指南

第一次把自己的项目发布到 GitHub 时,我像个刚学会走路的孩子,既兴奋又忐忑。本以为是一次简单的代码备份,没想到却演变成了一场“斗智斗勇”的冒险。从神秘的红色报错,到 GitHub 的大文件限制,再到 master 与 main 分…

2026/7/17 8:08:00
如何快速下载网页视频:猫抓浏览器嗅探工具的完整使用指南

如何快速下载网页视频:猫抓浏览器嗅探工具的完整使用指南

如何快速下载网页视频:猫抓浏览器嗅探工具的完整使用指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法保存喜欢的在线视频…

2026/7/17 8:08:00
联想拯救者工具箱完整指南:释放笔记本性能的终极工具

联想拯救者工具箱完整指南:释放笔记本性能的终极工具

联想拯救者工具箱完整指南:释放笔记本性能的终极工具 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 联想拯救者…

2026/7/17 8:08:00
如何用Untrunc高效修复损坏的MP4/MOV视频文件:免费开源解决方案

如何用Untrunc高效修复损坏的MP4/MOV视频文件:免费开源解决方案

如何用Untrunc高效修复损坏的MP4/MOV视频文件:免费开源解决方案 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 当珍贵的婚礼录像、重要的会议记录或孩子…

2026/7/17 8:08:00
Windows 11与EndeavourOS双系统部署及Nvidia驱动配置指南

Windows 11与EndeavourOS双系统部署及Nvidia驱动配置指南

1. 项目概述:Windows 11与EndeavourOS双系统部署挑战 每次在Nvidia显卡设备上部署LinuxWindows双系统都像一场技术冒险。这次我们要在UEFI环境下实现Windows 11与EndeavourOS(基于Arch Linux的发行版)的和谐共存,核心难点在于Nvid…

2026/7/17 8:08:00
Linux包管理工具Yum命令详解与实战技巧

Linux包管理工具Yum命令详解与实战技巧

1. Yum命令概述yum(Yellowdog Updater Modified)是Red Hat系列Linux发行版(如CentOS、RHEL、Fedora等)中广泛使用的包管理工具。它基于RPM包管理系统,能够自动解决软件包依赖关系,极大简化了Linux系统中的软…

2026/7/17 8:02:59

月新闻