Page 43 - 《软件学报》2026年第6期
P. 43

2362                                                       软件学报  2026  年第  37  卷第  6  期


                 集下的耗时均降至       28 s 左右, 性能提升超   28%; GNU GSL  在基线中的处理速率为        10 968.52 MB/s, 在扩展指令集
                 下提升至   17 465 MB/s 以上, 增幅超  60%; xz 的压缩时间从基线的      24.832 s 缩短至  22.839 s (SG2044  指令集), 优化
                 效果明显; K1   平台中, 以  x264  为例, 基线耗时   616.255 s, 而在  RV64GCV+B  组合下降至约   413 s, 性能提升  33%,
                 同样在全部指令集扩展组合中表现出性能提升. 这种性能优势在                      RuyiBuild  与  Clang  编译结果中表现一致, 说明
                 RuyiBuild  能够准确传递指令集扩展带来的性能红利. 特别值得注意的是, 在复杂指令集扩展场景中, RuyiBuild                      的
                 适配稳定性尤为突出. 例如, 在        RV64GCV  向量扩展下, KissFFT  在  Clang  与  RuyiBuild  编译下均较  RV64GV  基础
                 指令集提升约     2.5%; 在  SG2044  全指令集下, SQLite3  的单次操作时间   (Clang 161.048 ms、RuyiBuild 163.231 ms)
                 均优于其他组合, 且两者偏差仅          1.36%. 这一结果证实, RuyiBuild  无需人工干预即可实现与         Clang  相当的优化效
                 果, 其自动化适配机制能够有效应对            RISC-V  指令集碎片化带来的挑战, 为跨平台软件部署提供了高效且可靠的
                 技术路径.

                                              表 3 RuyiBuild  指令集适配效果    (K1)

                                      x264                   SQLite3                   GNU GSL
                    指令集       Clang  RuyiBuild  偏差率  Clang  RuyiBuild  偏差率     Clang    RuyiBuild  偏差率
                               (s)    (s)     (%)     (ms)    (ms)     (%)     (MB/s)    (MB/s)    (%)
                  基线RV64GC   616.255  -       -     288.124    -       -      2 516.19    -         -
                  RV64GCV+B  411.444  413.431  0.48  300.632  301.542  0.30   3 589.45  3 563.34   −0.73
                    RV64GV   429.320  428.996  −0.08  305.687  306.493  0.26  3 524.21  3 393.45   −3.71
                   RV64GCV   418.791  419.725  0.22  302.606  303.089  0.16   3 569.60  3 424.79   −4.06
                    RVA23    409.888  410.649  0.19  300.364  303.245  0.96   3 469.40  3 450.42   −0.55
                      K1     412.358  410.511  −0.45  299.531  301.479  0.65  3 485.93  3 447.82   −1.09
                                       xz                    KissFFT                    Pixman
                    指令集       Clang  RuyiBuild  偏差率  Clang  RuyiBuild  偏差率     Clang    RuyiBuild  偏差率
                               (s)    (s)     (%)     (s)      (s)     (%)     (MP/s)    (MP/s)    (%)
                  基线RV64GC    70.931  -       -      194 353   -       -       39.58      -         -
                  RV64GCV+B   66.390  67.066  1.02   195 862  196 391  0.27    137.93    134.2     −2.70
                    RV64GV    71.324  72.404  1.51   195 527  197 322  0.92    138.04    123.01   −10.89
                   RV64GCV    70.917  70.979  0.09   196 897  196 265  −0.32   136.33    136.23    −0.07
                    RVA23     66.328  66.629  0.45   195 754  196 276  0.27    138.37    135.66    −1.96
                      K1      66.535  66.305  −0.35  195 764  196 733  0.49    137.63    135.54    −1.52

                  4.5   实验结果讨论
                    实验数据证明了      RuyiBuild 的运行性能高度接近基于       Clang 的程序员手动设定编译. RV64GCV+B、RV64GV、
                 RV64GCV、RVA23、SG2044    这  5  个指令集在  SG2044  开发板上的   Wilcoxon  检验结果  (p  值), 分别为  0.843 75、
                 0.687 5、1.0、0.687 5、0.562 5; 在  K1 开发板上的  Wilcoxon 检验结果  (p 值), 分别为  0.843 75、1.0、0.687 5、0.687 5、
                 0.843 75. 可以看出, p  值均大于  0.05, 说明在显著性水平      0.05  下, Clang  与  RuyiBuild  的性能差异均不显著. 在
                 98.3% (59/60) 的测试用例和指令集组合下, 如       x264  在  RV64GCV+B  扩展下  Clang 27.353 s vs. RuyiBuild 28.045 s
                 (偏差仅  2.53%); GNU GSL  在  RV64GCV  下  Clang 18 212.91 MB/s vs. RuyiBuild 17 465.15 MB/s (偏差−4.11%),
                 RuyiBuild  全自动生成的二进制文件性能与开发者使用               Clang  手动指定目标    ISA  编译的版本高度接近, 其中
                 91.7% (55/60) 偏差<3%, 最大偏差−10.89%  出现在  K1 平台  RV64GCV  配置下运行   Pixman. 这充分证明了   RuyiBuild
                 非侵入式捕获     LLVM IR  并在部署阶段进行自动化、目标感知优化的有效性. 其性能损失微乎其微, 却换来了无需
                 修改源码/构建系统的巨大便利性和对未来任意                RISC-V  扩展组合的潜在支持能力, 这是传统          IFUNC (需源码级修
                 改) 和  Multilib (需预编译海量组合) 无法比拟的. RuyiBuild    的核心创新在于其非侵入式的设计, 通过精心设计的
                 编译工具包装     (wrapper) 和环境变量机制, 它实现了对现有软件源码和构建系统               (如  Autotools、CMake) 的零修改.
                 这种透明性确保了       RuyiBuild  能够无缝集成到现有的     Linux  发行版  (如  openEuler) 构建流程和  RPM/Deb  软件包管
   38   39   40   41   42   43   44   45   46   47   48