Page 40 - 《软件学报》2026年第6期
P. 40
屈晟 等: 面向 RISC-V 指令集多样性的兼容性感知多层级构建方法 2359
平台中主要通过解析系统提供的/proc/cpuinfo 文件或利用系统调用接口 (如 riscv_hwprobe 系统调用) 实现, 如附
录 A.6 所示.
由于模板文件中仅包含一个简单函数, 因此编译生成的 LLVM IR 文件 (template.bc) 并不包含任何具体的业
务逻辑, 但却完整包含了目标设备所支持的指令集扩展信息与相关 LLVM IR 属性. RuyiBuild 工具链随后利用这
一模板 LLVM IR 文件, 自动调整待部署的目标软件 LLVM IR 文件, 确保其指令集标记与目标设备完全匹配.
具体而言, RuyiBuild 工具链实现或调用了专门的 LLVM IR 属性与指令集扩展比对与合并工具 (如 llvm-
attribute-adjust). 该工具的技术实现原理是分析模板文件与目标 LLVM IR 文件的属性集合, 将模板文件的指令集
扩展属性合并到目标 LLVM IR 文件, 以实现 IR 文件的指令集扩展精确匹配, 如附录 A.7 所示. 命令执行后生成
target_software_adjusted.bc 文件, 其内部的指令集扩展属性已严格匹配目标设备的指令集扩展组合. 最后, Ruyi-
Build 工具链调用 LLVM 工具链中的 lld 链接器, 生成精细化适配目标微架构与指令集扩展的 ELF 文件, 如附录
A.8 所示.
通过上述基于动态模板的指令集扩展自适应机制, RuyiBuild 工具链确保了最终生成的 ELF 文件精确适配目
标设备的具体硬件特性, 避免了指令扩展不兼容的问题, 实现了真正意义上的跨平台兼容性.
除了指令集扩展自适应之外, RuyiBuild 工具链还进一步实现了微架构级别的精细优化机制. 具体而言, 在上
述生成最终 ELF 文件的链接过程中, RuyiBuild 工具链会自动追加一系列 LLVM 编译优化标识 (如-O3、-flto、
-ftree-vectorize 等高级优化选项), 并根据目标微架构的具体特征 (如乱序执行能力、流水线深度、缓存结构等) 自
动调整 LLVM IR 优化参数, 以更好地发挥目标设备的硬件性能潜力. 这些优化选项与参数的组合通过反复的测试
实验与性能评估确定, 在 RuyiBuild 工具链内部以预定义的配置文件形式体现, 工具链在转换过程中自动加载和
应用这些优化参数, 配置文件如附录 A.9 所示. 在转换过程中, RuyiBuild 工具链自动加载配置文件, 并应用于
LLVM IR 到 ELF 文件的转换过程中, 以实现微架构级别的精细化性能优化, 转换过程使用的最优化编译选项如附
录 A.10 所示.
综上所述, 通过上述基于动态模板的指令集扩展自适应与微架构精细优化机制, RuyiBuild 工具链有效解决
了 RISC-V 生态系统中指令集碎片化所带来的软件兼容性与性能优化难题, 实现了统一的 LLVM IR 文件到多样
化目标设备的精细化适配与优化. 这种机制不仅极大提高了软件跨平台部署的效率与可靠性, 也显著提升了软件
在具体目标设备上的实际运行性能, 充分体现了 RuyiBuild 工具链的创新性与先进性.
4 实验设计与结果分析
4.1 实验数据集
为验证所提方案的性能效果, 本研究选取了 6 款具有代表性的软件进行测试, 涵盖多媒体处理、科学计算、
数据库、图形渲染、信号处理及数据压缩等多个领域. 选取的软件需满足以下标准: 基于 C/C++编写的高性能共
享库, 对运行效率有较高要求; 在科学计算、多媒体处理、数据库等计算密集型领域具有典型代表性; 具备通过向
量指令、位操作等扩展指令集实现性能提升的潜力. 此外, 该测试方案同样适用于 Rust、Fortran 等 LLVM 框架支
持的编程语言开发的软件, 选取软件如下.
● x264 [35] : 开源 H.264/MPEG-4 AVC 视频编码库, 广泛应用于视频压缩领域.
● GNU GSL [36] : 开源数值计算库, 提供 CBLAS 标准的纯 C 实现, 包含丰富数学函数与算法.
● SQLite3 [37] : 轻量级嵌入式关系型数据库管理系统, 支持零配置文件型存储.
● Pixman: 开源 2D 图形引擎, 专注于高效像素操作, 为上层图形库提供底层支持.
● KissFFT [38] : 轻量级开源快速傅里叶变换 (FFT) 库, 纯 C 语言实现, 适用于嵌入式环境
● xz: 为 Linux 系统常用高性能压缩工具, 基于 LZMA2 算法, 支持高压缩比.
4.2 评价指标及基准
本文采用性能耗时与数据处理速率作为核心评价指标来量化不同指令集扩展组合对软件性能的影响, 其中,

