Page 83 - 《软件学报》2026年第6期
P. 83
2402 软件学报 2026 年第 37 卷第 6 期
值普遍在 1.2–2.0 之间, 表明 TFLite 在算子执行过程中更多依赖用户态计算而较少触发系统调用. 特别是算子 15
(FullyConnected)、算子 33 (Softmax) 在高复杂度下的用户态 CPU 占比接近 100%, 而 TVM 在这些算子上出现明
显的系统调用开销. 缺页率几乎全部呈现深蓝色, 算子 7 (Conv2D)、算子 42 (BiasAdd) 等在高复杂度下的缺页率
比值接近 0.5, 算子 40 (AVERAGE_POOL_2D) 和算子 41 (BatchNorm) 的比值甚至低于 0.4, 表明在这些场景中
TFLite 的内存访问行为具有更好的局部性特征, 而 TVM 的动态内存分配策略在数据规模超过缓存容量后产生严
重的缓存失效. 这归因于 TFLite 针对端侧小资源场景的专门优化: 预先将优化后的算子内核和中间结果加载到内
存中, 避免运行时的动态编译和频繁的内存页调度, 从而维持接近 100% 的用户态执行并大幅减少缺页中断. 值得
注意的是, 这类复杂度相关的差异仅在跨层级测试中才能被充分观测, 若仅在低复杂度场景下进行测试, 则难以体
现其影响.
2.0 2.0
常驻内存 常驻内存
缺页率 1.5 缺页率 1.5
用户态CPU占比 1.0 TFLite/TVM比 用户态CPU占比 1.0 TFLite/TVM比
CPU时间 0.7 CPU时间 0.7
精度损失 精度损失
0.5 0.5
1 5 9 13 17 21 25 29 33 37 41 45 47 1 5 9 13 17 21 25 29 33 37 41 45 47
算子编号 算子编号
图 3 深度学习算子在 RISC-V 平台上的多维度性能 图 4 深度学习算子在 RISC-V 平台上的多维度性能
表现 (高复杂度) 表现 (中复杂度)
2.0
常驻内存
缺页率 1.5
用户态CPU占比 1.0 TFLite/TVM比
CPU时间 0.7
精度损失
0.5
1 5 9 13 17 21 25 29 33 37 41 45 47
算子编号
图 5 深度学习算子在 RISC-V 平台上的多维度性能表现 (低复杂度)
系统层面的用户态 CPU 占比数据揭示了库间实现机制的根本差异: TFLite 在绝大多数情况下维持接近 100%
的用户态占比, 而 TVM 在低复杂度场景下出现显著的系统开销 (如 Conv2D 低复杂度时系统开销高达 26.7%). 然
而, TFLite 的性能优势以更高的内存占用为代价. 常驻内存维度显示, TFLite 在几乎所有算子和所有复杂度层级下
的内存占用比值均小于 1; 部分算子 (如算子 7 (Conv2D)) 在高复杂度下的比值几乎只有一半, 表明 TFLite 在计算
密集型算子上需要额外 60%–100% 的内存开销. 相比之下, 轻量级算子 (如算子 29 (ReLU) 、算子 11 (ELU)) 的常
驻内存比值则略高, 内存代价相对较小.
综合上述结果可以看出, RIVdoo 通过多维度指标和复杂度分组分析, 系统性刻画了 TFLite 和 TVM 在 RISC-V
平台上的性能权衡关系: TFLite 在计算密集型算子 (Conv2D、MatMul、FullyConnected) 上以 60%–100% 内存开
销换取 30%–50% 速度提升, 在轻量级算子 (ReLU、Abs) 上以 10%–30% 内存开销换取 50%–60% 速度提升, 为开
发者在性能与资源约束之间的权衡提供了全面依据. 其次, RIVdoo 的复杂度分组验证了优化策略在不同数据规模
下的一致性, 表明 TFLite 的端侧优化在 RISC-V 平台上具有良好的可扩展性. 第三, RIVdoo 有助于明确两种算子
库在不同资源约束条件下的适用范围: 内存充足时选择 TFLite, 内存受限时选择 TVM, 这种差异化的性能洞察为
RISC-V 深度学习应用的算子库选择提供了精确指导. 因此, RIVdoo 提供的分析结果可作为 RISC-V 平台上算子
库选择和优化决策的参考依据.
图 6−图 8 展示了 47 个深度学习算子在 RISC-V 向量扩展指令 (RVV) 支持下的多维度性能表现, 分别对应高、
中、低这 3 个复杂度层级. 热力图横轴为算子编号 (1–47), 纵轴为 5 个关键性能指标: 常驻内存、缺页率、用户
态 CPU 占比、CPU 时间和精度损失, 颜色深浅表示 RVV 启用与禁用配置下的性能比值 (rw/rv), 蓝色表示 RVV
带来性能提升 (比值<1), 红色表示 RVV 导致性能下降 (比值>1).
实验结果揭示了 RVV 在不同算子类型和复杂度配置下呈现出显著差异化的性能行为. 计算密集型算子在高

