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小节有算法具体描述。

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/1 19:32:24
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/30 21:32:07
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/30 19:41:56
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/1 19:32:23
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 19:32:35
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/30 21:32:11

日新闻

周新闻

月新闻