Page 41 - 《软件学报》2026年第6期
P. 41
2360 软件学报 2026 年第 37 卷第 6 期
性能耗时包括编码时间 (x264)、单次操作时间 (SQLite3)、运算时间 (KissFFT)、压缩时间 (xz), 数值越小表明性
能越优; 数据处理速率 (GNU GSL、Pixman) 以单位时间处理的数据量或性能测试数值衡量, 数值越大表明性能
越优.
实验采用算能 SG2044 与进迭时空 K1 作为测试平台, SG2044 平台为 64 核心 RISC-V 架构 CPU; K1 平台为
8 核心 RISC-V CPU. 两平台均支持丰富的指令集扩展, 包括基础架构与核心扩展 (RV64I、M、A、F/D、C, 提供
核心算术、逻辑运算及内存访问能力)、向量计算扩展 (V 系列, 包含 V、Zve32f/Zve64d 等向量长度与数据类型
配置扩展及 Zvfh/Zvfhmin, 强化并行计算与 AI、图形处理效率)、位操作与内存优化扩展 (Zba/Zbb/Zbc/Zbs、
Zicbom/Zicboz、Zawrs, 提升位级运算与内存访问效率)、系统与控制扩展 (Zicsr、Zifencei、Zicntr、Zicond 等, 保
障系统稳定性与执行效率)、浮点增强扩展 (Zfa、Zfh/Zfhmin, 优化浮点运算性能)、压缩指令增强 (Zca/Zcb/Zcd,
提升压缩指令在特定场景的性能)、安全与特权扩展 (Svinval、Svnapot 等, 增强系统安全性与内存管理效率) 以及
性能监控与调试扩展 (Zihpm, 支持细粒度性能分析与调试). 编译工具采用 llvm-project 的 main 分支 LLVM/Clang,
提交号为 2bcdfa198aa511479c46144c5cf95c7c685384ef (提交日期为 2025 年 6 月 19 日), 优化选项为-O3.
为验证所提方案的有效性, 两平台上实验均选取 5 种指令集扩展组合作为基准进行对比, 具体如下.
● RV64GCV: 在 RV64GC 基础上增加向量扩展 (V), 用于评估向量指令对计算密集型软件的性能提升效果;
其完整 RISC-V 指令为 rv64imafdcv_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b.
● RV64GV: 通过移除 RV64GCV 中的 C 扩展, 验证 C 扩展在特定场景下的性能影响; 其完整 RISC-V 指令为
rv64imafdv_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b.
● RV64GCV+B 扩展: 在 RV64GCV 基础上增加 Zba、Zbb、Zbc、Zbs 位操作扩展, 评估位操作指令与向量指
令的协同优化效果; 其完整 RISC-V 指令为 rv64imafdcv_zicsr_zifencei_zba_zbb_zbc_zbs_zve32f_zve32x_
zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b.
● RVA23 子集: 基于 RISC-V RVA23 Profile 的子集 (包含 rv64imafdcv、Zicbom 等扩展), 验证新指令集标准
的性能潜力; 其完整 RISC-V 指令为: rv64imafdcv_zicbom_zicboz_zicntr_zicond_zicsr_zihintntl_zihintpause_
zihpm_zawrs_zfa_zfhmin_zca_zcb_zcd_zba_zbb_zbs_zve32f_zve32x_zve64d_zve64f_zve64x_zvfhmin.
● SG2044 和 K1 全指令扩展: 涵盖算能 SG2044 或进迭时空 K1 支持的所有指令扩展, 作为理论性能上限的参
考基准. SG2044 平台完整 RISC-V 指令为: rv64imafdcv_zicbom_zicboz_zicntr_zicond_zicsr_zifencei_zihintntl_
zihintpause_zihpm_zawrs_ zfa_zfh_zfhmin_zca_zcb_zcd_zba_zbb_zbc_zbs_zve32f_zve32x_zve64d_zve64f_zve64x_
zvfh_zvfhmin_sscofpmf_sstc_svinval_svnapot_svpbmt; K1 平台完整的 RISC-V 指令为: rv64imafdcv_zicbom_
zicboz_zicntr_zicond_ zicsr_zifencei_zihintpause_zihpm_zfh_zfhmin_zca_zcd_zba_zbb_zbc_zbs_zkt_zve32f_zve32x_
zve64d_zve64f_zve64x_zvfh_zvfhmin_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt.
通过对比不同指令集扩展组合的性能差异, 可直接反映向量扩展、位操作扩展等指令集特性对软件性能的实
际影响. 实验中, 采用多次测试取中位数 (如 KissFFT 重复 11 次) 的方式减少随机误差, 并通过一致性验证确保测
试数据的可靠性. 若某指令集扩展组合在目标软件上的性能指标显著优于其他组合 (如耗时降低或速率提升超过
预设阈值), 则表明该组合更适用于此类软件的优化场景.
4.3 实验方法
本实验以 6 款代表性软件 (x264、GNU GSL、SQLite3、Pixman、KissFFT、xz) 为测试对象, 在算能科技
SG2044 平台与进迭时空 K1 上开展性能测试, 重点对比 6 种指令集扩展组合 (RV64GC、RV64GCV、RV64GV、
RV64GCV+B 扩展、RVA23 子集、SG2044 和 K1 全指令扩展) 对软件性能的影响. 实验中 x264 [35] 、GNU GSL [36] 、
SQLite3 [37] 、KissFFT [38] 使用开源基准测试; Pixman 使用 Pixman 软件包自带的 lowlevel-blt-bench 命令, 具体命令为
lowlevel-blt-bench pixbuf; xz 测试方法为压缩 openEuler 24.03 SP1 RISC-V 版中的/usr/lib64/libLLVMRISCVCodeGen.a
文件, 该文件大小约 25 MB.
采用两种测试路径: 一是直接编译测试, 使用 LLVM/Clang (提交号 2bcdfa198aa511479c46144c5cf95c7c685384ef,

