
编者按RISC-V 从嵌入式走向数据中心离不开软件生态的全栈支撑。阿里巴巴是龙蜥社区 RISC-V SIG 的重要成员单位JVM 团队深度参与相关工作。阿里巴巴 JDK 团队长期深耕 Java 虚拟机性能优化。近年来其持续推动 RISC-V 后端在 Dragonwell JDK 中的适配与演进。在近期举办的 RISC-V 编译器生态和性能优化 MeetUp上阿里云高级编译器专家蒯微分享了《Dragonwell JDK 在 RISC-V 上的探索》。蒯微分享了阿里巴巴基于 Alibaba Dragonwell 在 RISC-V 架构上的探索工作介绍了在代码密度优化、压缩指令支持、编译器后端移植等方面的社区贡献并重点展望了面向数据中心场景的技术方向。以下为本次分享全文阿里巴巴有大量核心业务如电商等运行在 Java 之上Java 对阿里巴巴而言是一项极为重要的基础软件技术因此内部设有专门团队持续投入 JDK 的研发与优化。此刻分享的 Alibaba Dragonwell 是一款免费的 OpenJDK 发行版提供长期支持包括性能增强、安全修复以及多项专有特性。它覆盖 JDK 多个 lts 版本每个版本分为 Standard 和 Extended 两个子版本。阿里巴巴是龙蜥社区 RISC-V SIG 的重要成员单位JVM 团队深度参与相关工作。Dragonwell JDK 作为 Anolis OS 的基础组件提供二进制发布。在对外的解决方案里Dragonwell JDK 也作为默认的 Java 基础组件为大数据高并发场景提供更优异的性能。我们在多个方向上深耕已久主要涵盖Wisp/Loom 协程阿里巴巴在 JDK 8 时代便自主开发了名为 Wisp 的协程方案提升 Java 在高并发下的性能在社区正式推出 Loom 协程框架后阿里也积极参与并贡献了大量优化。启动加速方面针对 Java 运行时启动慢、预热时间长的问题团队先后探索了 CDSClass Data Sharing预加载、AppCDS 类预热、AOT 编译以及 GraalVM Native Image 等多种方案针对不同场景提供启动加速能力。多租户隔离我们在单个 JVM 内部实现了多租户支持不同租户可设置独立的资源限制无需为每个应用部署独立的 JVM 实例。GC 优化我们在弹性内存回收以及 G1GC/ZGC 等垃圾回收器上持续优化减少 Java 应用暂停时间和提升内存使用效率。性能调优方面面向大数据场景如 Spark、Flink 等的定向优化重点关注向量化优化和指令级性能提升。此外我们也很关注代码密度优化——致力于缩小 JIT 编译生成的代码体积。在大型 Java 应用中JIT 生成的代码量往往非常庞大。根据我们的实践经验优化代码密度后无论是内存占用还是整体性能都能获得明显提升。此外团队近期还开发了热方法直接加速技术对于 Java 应用中已识别的热点方法可跳过 JIT 编译过程直接调用预编译的 Native 方法实现即时加速避免了 JIT 编译路径上的不确定性和额外开销。Alibaba Dragonwell 与 RISC-V 的结缘基于以上积累阿里巴巴将相关优化开源推出了 Alibaba Dragonwell JDK。该版本主要跟踪上游 OpenJDK 的 LTS 版本从JDK 8 到 JDK 25 均有长期支持。自 JDK 11 起团队开始提供 RISC-V 后端支持后续版本均提供可用的 RISC-V 二进制发行版。关于为何投入 RISC-V蒯微回顾了缘起平头哥发布 C910、C920 处理器后积极拓展软件生态主动联系我们寻求 RISC-V 支持。当时生态主要集中在开源工具链和扩展指令领域应用场景以 IoT 和嵌入式为主云端场景几乎空白我们认为这是一个很好的合作切入点。与此同时阿里云提出“一云多芯”战略——不仅支持 x86 和 ARM 平台也要支持 RISC-V 等国产处理器平台。本土化趋势叠加生态需求多重因素共同推动了团队对 RISC-V 的投入。在阿里云及阿里内部的众多应用中代码密度始终是我们重点关注的优化方向缩减代码体积在实践中带来了显著收益。以这个目标作牵引我们重点支持了 RISCV 的压缩指令支持(C-Extension)在 SPECjbb 测试中开启相关优化后最高时下 JIT 生成的代码体积可减少 20%这一收益相当可观同时从当时的测试结果来看性能也获得了一定提升。此外我们还贡献了大量 BugFix 和 GC 优化并重点参与了 Loom 的 RISC-V 后端开发。针对平头哥芯片的专属优化除了社区通用贡献我们还针对平头哥芯片的特有指令做了大量适配工作。平头哥处理器还包含一些自有扩展指令虽然并非标准 RISC-V 指令但测试表明这些指令对 Java 应用有实际收益团队将其集成到 Dragonwell JDK 中通过 JDK 启动选项 -XX:UseCSky 即可开启。在向量化方面由于当时拿到的芯片 Vector 扩展V 扩展规格尚未完全定型团队基于V 0.7.1版本做了向量化相关的优化工作。在 Dragonwell 版本选择上团队将 RISC-V 后端重点放在 Dragonwell 11 上。当时我们看到一方面内部用户和云上用户已大量迁移到 JDK 11另一方面从 Aarch64 的支持经验看Dragonwell 11 在弱内存模型下表现更为稳定因此我们优先选择更新的版本来支持 RISC-V。Dragonwell 11 本身也引入了许多新特性。团队基于上游后端将 RISC-V 支持移植到 Dragonwell 11并同步上游社区的最新改进。当时验证工作涵盖多个层面——QEMU、CSky、HiFive 等多个软硬件平台协同验证包括兼容性、正确性和性能测试。本身 RISC-V 已完全纳入团队的日常发布流程每个大版本都会进行 RISC-V 平台的全面验证并提供可直接下载使用的二进制工具链。在龙蜥生态中我们也提供了 RISC-V 版 JDK 的日常安装支持同时提供 QEMU 的 Docker 镜像方便开发者在没有 RISC-V 物理机的情况下也能进行开发调试。面向数据中心RISC-V 的新征程此前 RISC-V 主要应用于 IoT 和边缘计算场景但随着生态发展RISC-V 已开始向数据中心和高性能计算领域延伸。RISC-V 社区正在制定面向高性能场景的各种新规范平头哥的 C950 芯片也即将发布——这是一款面向数据中心的高性能 RISC-V 处理器目标场景包括大型 Java 应用和高负载云上业务。蒯微表示这与阿里巴巴 JVM 团队原有的目标更加契合。 Dragonwell JDK 25 已明确将在数据中心方向重点发力重点支持 C950 级别的 RISC-V 芯片。目前已在 C920 平台上将 Java 应用成功启动做了大量工程工作虽然性能和主流云主机的性能仍有差距但整体启动和基本运行已完全打通充分验证了当前 RISC-V JDK 的兼容性。同时我们也已开始基于 SPECjbb 等基准测试开展新一轮评估以挖掘更多性能优化点。在面向数据中心迁移的过程中我们的技术推进主要围绕两个方向展开一方面针对电商等核心应用强依赖的 Dragonwell JDK 特性我们已着手将其移植到 Dragonwell JDK 25上为后续业务落地做好准备另一方面我们也已与达摩院展开协同合作共同推进适配与优化工作。针对 C950 等支持 RVA23 Profile 的芯片我们考察了新的扩展可以带来的收益Java 应用可以在以下几个方面获得较大收益TSO 扩展支持C950 支持 ztso 扩展可以将内存模型从弱序模型切换为顺序一致性模型。Java的内存模型通常要求严格的内存屏障Fence弱序内存有可能带来性能提升但也需要在编译器层面进行精确处理以确保正确性。团队通过评估发现开启 ztso 扩展后可以去除大量不必要的内存屏障——基于团队之前在 Aarch64 的实践经验这些屏障往往是应用的性能瓶颈。初步小规模评测显示开启 ztso 扩展后整体收益为正。原子操作优化结合RISC-V上游已有的原子操作扩展团队将针对 C950 微架构做进一步评估和优化。加密算法加速RISC-V在加密指令方面与 x86 仍有差距部分加密算法尚未完全利用新的扩展指令如 Zvbb 等向量加密扩展。团队认为这是Java应用可能获益较大的方向。在新指令支持方面当前工作的重点在于 INTRINSIC 的补齐。我们发现与 x86 平台相比RISC-V 的 INTRINSIC 实现仍存在部分缺失后续将逐步完善这些缺口以确保指令支持的完整性。对于 RISC-V 的新扩展我们也需要评估在引入 Vector API 后能否实现与之相当的性能提升。另一方面由于 C950 的向量宽度与以往有所不同基于模拟器评测结果我们发现通过指令调度优化仍能带来进一步的性能提升这也是团队当前正在推进的工作之一。矩阵指令与端侧 AI 推理C950 还有一个独特之处——新增了矩阵计算指令为AI场景提供了匹敌 GPU 的本地算力。当下 AI 潮流来袭龙蜥社区和阿里巴巴 JVM 团队也会注重 JDK 在 AI 场景中的新的定位。他列举了多个端侧 AI 应用场景在 Token 到达大模型之前端侧小模型可以对请求进行预分类对话类、代码生成类、文章生成类等减轻大模型的推理负担长时间对话产生的冗长上下文可以在端侧进行压缩摘要减少送入大模型的 token 数量密钥管理、格式解析等本地方法调用任务也可以由端侧小模型完成。这里引用一些评测数据在某些场景中端侧计算在整个 Pipeline 延迟中的占比可达 50%这一比例超出了此前的预期。考虑到容器、沙箱等运行环境的开销端侧模型的优化空间值得深入挖掘。Java AI 全栈生态展望当前大部分 AI 场景仍在使用 Python 或 CUDA但 Java 生态中已经逐步建立起完整的 AI 技术栈推理层已有 TensorFlow/PyTorch 的 Java 绑定支持框架层 LangChain4j、Spring AI 等框架日趋成熟计算API层Java也开始探索Babylon等异构计算的编程模式向量数据库等 AI 相关依赖在 Java 社区也有ElasticSearch等成熟方案。Java 在 AI 全栈生态中虽然还在早期但基本框架已经搭建起来。如果能将整个全栈打通将带来两大优势一是资源开销更小从上到下运行在同一个 Java 环境中跨语言、跨进程的调用开销可以显著降低二是和原有生态融合更好Java 最大的优势在于成熟的中间件、工具链和运维体系如果 AI 能力能融入这套已有体系将带来更好的工程化体验。总体来说RISC-V 作为一个开放架构带来了广阔的想象空间和活跃的社区生态。从 IoT 到数据中心、从嵌入式到高性能计算RISC-V 的应用边界正在快速拓展。阿里巴巴 JDK 团队将持续投入 RISC-V 生态建设在 JDK 各版本中不断贡献优化和改进与上游社区协同维护。同时团队也将积极探索Java与AI结合的方向——利用 RISC-V 新架构的特性如矩阵指令为 Java 在端侧 AI 推理场景中开辟新的可能。本次 MeetUp PPT 、视频回放已上线龙蜥官网欢迎点击查看PPT 下载链接龙蜥社区MeetUp - OpenAnolis 龙蜥操作系统开源社区文档中心视频回放Video - OpenAnolis code repository