Page 42 - 《软件学报》2026年第6期
P. 42
屈晟 等: 面向 RISC-V 指令集多样性的兼容性感知多层级构建方法 2361
优化选项-O3) 分别以 5 种指令集扩展组合编译各软件, 通过对应测试工具 (如 x264-benchmark、cachebench 等)
运行并记录性能数据; 二是中间代码优化测试, 先利用 SG2044 全指令集编译生成 LLVM IR bitcode, 再通过 llvm-
attribute-adjust 工具修改 IR 文件以适配不同指令集, 转换为 ELF 格式共享库后, 采用与直接编译测试相同的工具
和方法进行性能评估.
为确保结果可靠性, 部分软件采用多次测试策略 (如 KissFFT 重复运行 11 次并取中位数) 以降低随机误差.
实验中, 通过对比两种测试路径的结果 (如 RuyiBuild 与 Clang 直接编译结果) 验证测试方法的一致性, 最终以性
能耗时 (如编码时间、压缩时间) 或数据处理速率 (如 MB/s、MP/s (百万像素每秒)) 作为核心指标, 量化不同指令
集扩展组合的性能差异.
4.4 实验结果与分析
为检验 RuyiBuild 在指令集适配中的效果, 本文以两款开发板为测试平台: 搭载进迭时空 X60 8 核 CPU、16
GB 内存的进迭时空 K1 开发板, 以及搭载玄铁 C920 64 核 CPU、128 GB 内存的算能 SG2044 开发板. 在此基础
上, 对比 6 款软件在 5 种指令集组合下的性能数据, 其中, 使用 Clang 默认开启-O3 优化选项, SG2044 和 K1 上使
用的前端编译最优选项如附录 A.10 所示, 具体表现见表 2 与表 3. 实验结果显示, 基于 RuyiBuild 工具链全自动生
成的二进制文件与基于 Clang 程序员定制化编译的二进制文件在运行性能方面高度接近, 且在不同平台与各类指
令集扩展组合下均展现出优于基线 (RV64GC) 的性能增益, 验证了其自适应方案的有效性.
表 2 RuyiBuild 指令集适配效果 (SG2044)
x264 SQLite3 GNU GSL
指令集 Clang RuyiBuild 偏差率 Clang RuyiBuild 偏差率 Clang RuyiBuild 偏差率
(s) (s) (%) (ms) (ms) (%) (MB/s) (MB/s) (%)
基线RV64GC 39.033 - - 155.272 - - 10 968.52 - -
RV64GCV+B 27.353 28.045 2.53 162.282 163.738 0.90 19 047.38 18 646.11 −2.11
RV64GV 28.832 28.662 −0.59 165.579 165.262 −0.19 18 371.44 17 857.30 −2.80
RV64GCV 28.660 28.799 0.48 164.832 161.201 −2.20 18 212.91 17 465.15 −4.11
RVA23 27.902 28.254 1.26 166.481 164.284 −1.32 19 053.99 18 576.67 −2.51
SG2044 28.772 28.276 −1.72 161.048 163.231 1.36 18 767.27 18 520.25 −1.32
xz KissFFT Pixman
指令集 Clang RuyiBuild 偏差率 Clang RuyiBuild 偏差率 Clang RuyiBuild 偏差率
(s) (s) (%) (s) (s) (%) (MP/s) (MP/s) (%)
基线RV64GC 24.832 - - 62 423 - - 99.441 5 - -
RV64GCV+B 23.168 23.766 2.58 59 394 58 056 −2.25 327.908 327.842 −0.02
RV64GV 24.768 25.292 2.12 59 850 60 616 1.28 326.215 326.982 0.24
RV64GCV 24.731 24.572 −0.64 58 353 60 399 3.51 330.838 331.383 0.16
RVA23 22.918 23.151 1.02 58 029 58 665 1.10 325.723 335.211 2.91
SG2044 22.904 22.839 −0.28 58 600 58 502 −0.17 321.319 330.469 2.85
从整体性能偏差来看, SG2044 开发板中, RuyiBuild 与 Clang 在不同指令集扩展中的性能差异整体高度接近.
在 RV64GCV+B 组合中, x264 的偏差率为 2.53%, SQLite3 为 0.90%, GNU GSL 为−2.11%, xz 为 2.58%, KissFFT
为−2.25%, Pixman 为−0.02%; RV64GV 指令集下, 偏差率范围在−0.59% (x264)–2.12% (xz) 之间; RV64GCV 指令
集中, 除 KissFFT 偏差率为 3.51% 外, 其余软件偏差均低于 1%; RVA23 子集与 SG2044 指令集下, 最大偏差分别
为 2.91% (Pixman) 和 2.85% (Pixman), 整体波动幅度较小. 在 K1 开发板中, RV64GCV+B 组合中, x264 偏差率仅
0.48%, SQLite3 为 0.30%, xz 为 1.02%, KissFFT 仅 0.27%, 仅 Pixman 偏差率相对较高但也仅−2.70%, 整体波动幅
度同样较小, 表明 RuyiBuild 的自动化处理能够精准复现 Clang 的编译优化效果.
从性能增益角度对比, 两平台所有指令集扩展组合 (RV64GCV+B、RV64GV、RV64GCV、RVA23 子集、
SG2044、K1) 的性能显著优于基线 (RV64GC). SG2044 平台中, 以 x264 为例, 基线耗时 39.033 s, 而在各扩展指令

