Page 30 - 《软件学报》2026年第6期
P. 30
屈晟 等: 面向 RISC-V 指令集多样性的兼容性感知多层级构建方法 2349
表 1 当前构建方案对比
对比方案 无需修改源码 精细优化 不要求用户技术水平 易与rpm/dnf等集成
Multilib 否 否 是 否
IFUNC 否 (且难度大) 否 是 是
客户端源码编译 是 是 否 否
服务端源码编译并构造多仓库 是 否 半 (需要用户选择正确软件仓库) 是
RuyiBuild 是 是 是 是
Multilib 方法通过修改软件的构建系统, 如 Makefile, 将原来只编译一遍的动态库编译多遍, 此方法会进一步
增加构建系统的复杂度与软件的维护代价, 因此, 只有少数关键基础库采用了此方法以提高兼容性, 如 glibc 使用
Multilib 方法实现了对 x86-64-v2、x86-64-v3 和 x86-64-v4 这 3 种指令集组合的支持. 另外, 使用此方法编译同一
动态库的多个版本还需要同步修改 RPM (RPM package manager) 等软件包制作脚本, 带来更大的工作量.
IFUNC 方法的实现是所有方法中难度最大的, 首先需要编译器支持, 其次需要动态加载器支持, 同时还需要
对被优化软件的源代码进行修改, 通过如#pragma 等方式标记需要特殊优化的函数, 提示编译器进行多版本编译.
客户端源码编译即使用手动或自动的方法, 在用户终端上进行软件编译. 因用户环境的不可控性, 势必存在不
可控问题, 进而要求用户进行手动处理, 因此, 要求用户具备较高技术水平. 同时, 为支持用户手动介入, 难以充分
利用发行版配套的自动化工具, 导致与 rpm/dnf 等包管理器集成困难, 所以只能局限于开发者小范围分发使用.
与 Multilib 和 IFUNC 方案相比, RuyiBuild 不需要对软件源码做任何修改, 并且提供了贴近硬件特性的细粒
度控制; 与在客户端从源码编译相比, 降低了对用户技术水平的要求, 无需下载编译依赖, 也降低了对用户设备的
性能要求; 与在服务端从源码编译相比, 减轻了操作系统发行版开发团队的工作量, 无需为无数种现有和潜在的指
令集和微架构组合分别编译整个软件仓库.
通过本文提出的 RuyiBuild 工具链及其关键技术机制, 不仅有效解决了 RISC-V 平台软件生态中的碎片化问
题, 还为 RISC-V 平台的规模化应用与推广提供了重要的技术支撑, 具有重要的学术和实践意义. 本文的主要研究
贡献可以凝练总结为以下 4 点.
(1) 提出一种针对 RISC-V 平台指令集扩展与微架构多样性的跨平台软件构建与分发方案. 该方案基于统一
的 LLVM IR 格式, 在不修改现有软件源码与构建系统的前提下, 实现软件跨平台的高效部署与精细优化, 有效解
决现有方案 (IFUNC 与 Multilib) 所面临的软件生态碎片化难题, 并且达到类似从源码编译的性能.
(2) 提出并实现了基于动态模板的指令集扩展自适应与微架构精细化优化方法. 该方法能够自动检测目标设
备的具体指令集扩展组合与微架构特征, 动态调整 LLVM IR 文件, 生成针对目标设备的精细优化二进制文件, 显
著提高软件在具体目标设备上的性能表现.
(3) 设计并实现一套客户端与云端的双模式 LLVM IR 动态转换与资源自适应调度机制. 客户端动态转换机制
通过实时监控设备资源使用情况, 实现转换过程资源自适应调度, 确保转换任务不会影响终端用户体验; 云端机制
则通过批量化并行转换与自动化 RPM 仓库建设, 极大提高软件部署效率.
(4) 通过与 Linux 发行版 RPM 软件仓库的自动集成与构建机制, 实现 LLVM IR 软件包到常规 RPM 软件包的
自动化批量转换, 用户可直接通过标准软件管理工具 (如 dnf) 安装, 极大降低软件部署复杂性, 提升用户体验, 并
推动 RISC-V 生态系统的软件分发与部署效率.
本文第 2 节分析现有相关研究成果与技术方案的局限性. 第 3 节详细介绍 RuyiBuild 工具链的设计思想、整
体结构与具体技术实现. 第 4 节通过实验与性能评估, 验证 RuyiBuild 工具链的有效性与先进性. 第 5 节对全文工
作进行总结, 并对未来研究方向进行展望.
2 研究背景
为了更好地理解 RuyiBuild 工具链的设计动机与实现机制, 本节将介绍本文所依赖的关键技术基础, 包括

