RISCV支持JVM

RISC-V 并没有像 ARM SBSA 那样专门针对"支持 JVM"制定独立规范,JVM(OpenJDK)对 RISC-V 的支持主要靠RISC-V 服务器需满足 ISA 与 OS ABI 的最低要求 ,以及使用已合入 OpenJDK 主线的 Linux/RISC-V (riscv64) Port(JEP 422)。下面从服务器规范和软件支持两层说明:


一、RISC-V 服务器需要满足的规范(硬件/固ware/OS 层面)

OpenJDK RISC-V Port 对服务器平台的要求对应 RISC-V 国际组织的规范:

1. ISA 要求 --- RV64GC(最低)

  • Base ISARV64I(64-bit 整数基指令集)

  • 必选扩展M(乘除法)、A(原子操作)、F(单精度浮点)、D(双精度浮点)、C(压缩指令)

  • 简写为 RV64GC = RV64IMAFDC,这是 Linux/riscv64 用户态应用(含 JVM)运行的最低 ISA 要求。

  • 可选扩展(JVM 可自动检测并利用):

    • RVV (Vector V) :通过 -XX:+UseRVV启用向量 intrinsic

    • Zba / Zbb (位操作扩展):通过 -XX:+UseZba -XX:+UseZbb启用

    • Sv39/Sv48 MMU:服务器需支持至少 Sv39 页表

2. 特权级与固件 --- 符合 RISC-V Server Specification / SBI Spec

  • 服务器应实现 S-mode / H-mode(Hypervisor) ,运行遵循 **RISC-V Supervisor Binary Interface (SBI)**​ 规范的固件(如 OpenSBI)。

  • Boot 遵循 UEFI for RISC-V​ 或 Device Tree + OpenSBI 启动 Linux kernel ≥ 5.15(推荐 ≥ 6.1)。

3. OS ABI --- Linux/riscv64 (lp64d ABI)

  • 运行 64-bit Little-Endian Linux ,ELF 采用 lp64dABI(使用 F/D 浮点寄存器传参)。

  • glibc ≥ 2.28 推荐,需支持 NPTL 线程、futex、epoll 等 POSIX 接口。

✅ 总结:只要 RISC-V 服务器是 RV64GC + SBI固件 + Linux riscv64 (lp64d ABI),就满足 OpenJDK 运行的底层规范要求,类比 ARM 服务器的 SBSA + SBBR + UEFI 组合。


二、JVM 软件支持 --- OpenJDK RISC-V Port

1. 主线支持情况

  • RISC-V Port 已合入 OpenJDK 主线(JDK 19+,JEP 422) ,JDK 17/21 LTS 均有 riscv64 构建可用

  • 支持的 HotSpot 组件:

    • Template Interpreter

    • C1(Client)和 C2(Server)JIT 编译器

    • 所有主流 GC(Serial / Parallel / CMS / G1 / ZGC / Shenandoah

2. 可用的 RISC-V JDK 发行版

可直接获取预编译 riscv64 包,无需自行交叉编译:

发行版 说明
Eclipse Temurin (Adoptium) JDK 17/21 riscv64 hotspot builds
BiSheng JDK (华为) 基于 OpenJDK,有 riscv64 优化版本
Alibaba Dragonwell Dragonwell 11/17 含 RISC-V 后端
OpenJDK 官方 nightly builds.shipilev.net/openjdk-jdk-riscv

3. 典型部署验证

复制代码
# 解压 riscv64 JDK
tar -xzf OpenJDK21U-jdk_riscv64_linux_hotspot_*.tar.gz -C /usr/lib/jvm/
export JAVA_HOME=/usr/lib/jvm/jdk-21
export PATH=$JAVA_HOME/bin:$PATH

# 验证
java -version

输出应显示 OpenJDK 64-Bit Server VM (build ... riscv64)


三、快速核对清单

检查项 要求
CPU ISA RV64GC (IMAFDC),建议带 RVV/ZbaZbb
MMU Sv39 最低,Sv48 推荐
Firmware OpenSBI 兼容 SBI v0.3+
OS Linux kernel ≥ 5.15,riscv64 lp64d ABI,glibc ≥ 2.28
JDK OpenJDK 19+ / Temurin 17/21 / BiSheng / Dragonwell riscv64 build

如果你的 RISC-V 服务器板卡或虚拟化平台(QEMU -machine virt)满足 RV64GC + Linux riscv64,直接装 riscv64 版 OpenJDK 即可运行 JVM 应用。