Skip to content

Split View: RISC-V RVA23 프로파일 — 배포판은 베이스라인을 올렸고, 하드웨어는 아직 도착하지 않았다

|

RISC-V RVA23 프로파일 — 배포판은 베이스라인을 올렸고, 하드웨어는 아직 도착하지 않았다

들어가며 — 비준된 프로파일과, 그걸 돌릴 하드웨어 사이의 간격

RISC-V 이야기는 대체로 두 가지 톤 중 하나로 옵니다. "개방형 ISA가 세상을 바꾼다"는 쪽이거나, "아직 장난감"이라는 쪽이거나. 둘 다 별로 쓸모가 없습니다. 실무자가 알고 싶은 건 하나입니다 — 지금 이걸 목표로 잡으면 뭐가 되고 뭐가 안 되나.

이 글은 그 질문을 RVA23 프로파일 하나에 걸고 답해 봅니다. RVA23은 2024년 10월 21일에 비준됐고(RISC-V International 발표, 문서 자체는 Version 1.0, 2024-10-17: This document is in Ratified state.), 그 뒤 21개월이 지났습니다. 그동안 우분투는 이 프로파일을 최소 요구사항으로 올렸고, LTS 하나를 그 위에 세웠습니다. 프로파일이 규격에서 제품 요구사항으로 승격된 셈입니다.

그런데 오늘(2026년 7월 16일) 캐노니컬의 RISC-V 다운로드 페이지를 열어 보면, 26.04 LTS 이미지를 받을 수 있는 플랫폼은 QEMU 에뮬레이터 하나입니다. 나머지 열한 개 실물 보드는 전부 24.04.4 LTS만 받을 수 있습니다. 이 간격이 이 글의 주제입니다.

프로파일이 왜 RISC-V에만 있는 물건인가

x86이나 Arm 코드를 짜면서 "이 CPU에 곱셈 명령이 있나"를 걱정하진 않습니다. RISC-V에서는 걱정해야 합니다. 모듈성이 설계 목표였기 때문입니다 — 확장은 골라 담는 것이고, 벤더는 자기 커스텀 확장까지 추가할 수 있습니다.

임베디드에서는 이게 장점입니다. 모든 소프트웨어를 내가 컴파일하니까요. 문제는 바이너리를 남에게 배포하는 시장입니다. 비준 문서의 서두가 이 긴장을 꽤 솔직하게 인정합니다.

The primary goal of the RVA profiles is to align processor vendors targeting binary software markets, so software can rely on the existence of a certain set of ISA features in a particular generation of RISC-V implementations.

같은 문서가 그다음 문단에서 더 노골적으로 말합니다. 프로파일로 미리 정렬해 두지 않으면 RISC-V는 경쟁력이 없을 것이고(Without proactive alignment through RVA profiles, RISC-V will be uncompetitive), 이유는 이렇습니다 — 어떤 벤더가 기능을 구현해도 다른 벤더가 안 하면 바이너리 배포판은 그 기능을 쓰지 않을 것이고, 결국 전부가 손해를 본다는 것입니다.

이게 핵심입니다. 프로파일은 하드웨어 기능이 아니라 하드웨어 벤더들 사이의 합의문입니다. 소프트웨어 생태계는 자기가 실제로 관측한 최소 공통 분모를 고르지, 표가 예쁘다고 골라 주지 않습니다.

문서는 그래서 이렇게 못 박습니다 — 정렬을 유지하고 경쟁력을 높이려면 필수 확장 집합은 세대마다 늘어나야 한다(the mandatory set of extensions must increase over time in successive generations of RVA profile). RVA23의 존재 이유가 이 한 문장입니다.

RVA23이 실제로 강제하는 것 — V와 H

프로파일은 두 갈래로 나옵니다. RVA23U64는 유저 모드에서 보이는 기능을, RVA23S64는 슈퍼바이저 모드(즉 커널이 기대는) 기능을 규정합니다. 뒤에서 보겠지만 우분투가 요구하는 쪽은 S64입니다.

비준 문서에서 RVA23U64의 새 필수 확장 목록을 그대로 옮기면 이렇습니다.

The following mandatory extensions are new in RVA23U64:
  V           Vector extension.          <- "V was optional in RVA22U64."
  Zvfhmin     Vector minimal half-precision floating-point.
  Zvbb        Vector basic bit-manipulation instructions.
  Zvkt        Vector data-independent execution latency.
  Zihintntl   Non-temporal locality hints.
  Zicond      Integer conditional operations.
  Zimop       may-be-operations.
  Zcmop       Compressed may-be-operations.
  Zcb         Additional compressed instructions.
  Zfa         Additional floating-Point instructions.
  Zawrs       Wait-on-reservation-set instructions.
  Supm        Pointer masking (PMLEN=0 and PMLEN=7 at minimum).

목록에서 진짜 무게가 실린 건 첫 줄입니다. 비준 문서가 직접 단 주석이 V was optional in RVA22U64. 입니다. 그리고 이건 확인 가능한 사실입니다 — RVA22 프로파일 원문을 보면 RVA22U64 has four profile options (Zfh, V, Zkn, Zks)라고 적혀 있습니다. 벡터는 선택이었습니다.

여기서 자주 흐려지는 디테일 하나. V는 벡터 길이를 함께 못 박습니다. 벡터 확장 명세The V vector extension depends upon the Zvl128b and Zve64d extensions.라고 적혀 있고, Zvl128b는 VLEN이 최소 128비트라는 뜻입니다. 그러니까 RVA23을 만족하는 칩이면 "벡터가 있다"가 아니라 "최소 128비트 벡터 레지스터가 있고 64비트 부동소수점 벡터 연산이 된다"를 컴파일러가 가정해도 됩니다. 런타임 디스패치 없이요.

슈퍼바이저 쪽(RVA23S64)의 새 필수 항목 중 가장 비싼 건 Sha입니다. 문서 표현으로는 augmented hypervisor extension이고, 실체는 H 확장(하이퍼바이저) + Ssstateen + Shcounterenw + Shvstvala + Shtvala 등을 묶은 것입니다. 그리고 H 역시 RVA22S64에서는 선택 항목이었습니다 — RVA22 원문에서 H는 RVA22S64 Optional Extensions 절 안에 들어 있습니다.

정리하면 RVA23의 헤드라인은 이겁니다. RVA22에서 선택이던 벡터와 하이퍼바이저가 둘 다 필수가 됐다. 이건 실리콘 면적과 검증 비용이 실제로 늘어나는 요구입니다. 공짜 정렬이 아닙니다.

몇 가지 덜 알려진 결정도 같이 봐 둘 만합니다.

  • 스칼라 크립토가 빠졌습니다. RVA22의 선택 항목이던 Zkn/Zks는 RVA23에서 선택지 목록에 없습니다. 문서의 이유가 명확합니다 — 벡터가 이제 필수이고 벡터 크립토가 스칼라보다 훨씬 빠르니, 양쪽 다 벡터 크립토로 옮겨 가라는 것입니다.
  • 제어흐름 무결성은 아직 선택입니다. Zicfilp(랜딩 패드)와 Zicfiss(섀도 스택)는 RVA23U64에서 expansion option, 즉 선택입니다. Arm의 BTI/PAC에 해당하는 방어를 RVA23이라는 이유만으로 기대하면 안 됩니다.
  • Zacas(compare-and-swap)는 development option입니다. 즉 지금은 선택이고 다음 세대에 필수가 될 예정입니다. RVA23 칩이라고 CAS가 있다고 가정할 수 없습니다.

소프트웨어가 먼저 뛰었다 — 우분투의 RVA23S64 베이스라인

여기서 이야기가 흥미로워집니다. 보통은 하드웨어가 나오고 소프트웨어가 따라갑니다. 우분투는 반대로 갔습니다.

캐노니컬의 RISC-V 다운로드 페이지에 붙은 공지 문장이 정확합니다.

Note: We have upgraded the required RISC-V ISA profile to RVA23S64 with the 25.10 release. Hardware that is not RVA23-ready continues to be supported by our 24.04.4 LTS release.

주목할 점은 요구 대상이 U64가 아니라 RVA23S64라는 것입니다. 앞에서 봤듯 S64는 Sha, 즉 하이퍼바이저를 필수로 포함합니다. 데스크톱 이미지를 돌리려고 하이퍼바이저 확장이 필요한 건 아니지만, 프로파일을 통째로 베이스라인으로 삼으면 그렇게 따라옵니다.

캐노니컬은 2026년 2월 회고 글에서 이 결정의 논리를 밝혔습니다 — 생태계 파편화를 피하고 하드웨어 파트너와 보조를 맞추기 위해서라고요. 같은 글이 남겨진 사용자에 대한 답도 같이 제시합니다.

Starting with Ubuntu 25.10, RVA23 became the minimum supported baseline. RVA20 users can still get up to 15 years of support, provided they are using Ubuntu 24.04 LTS with Ubuntu Pro.

이 문장을 공정하게 읽어야 합니다. 이건 "버려졌다"가 아닙니다. 24.04 LTS는 Ubuntu Pro로 최장 15년까지 갑니다. 캐노니컬은 심지어 RVA23 전환 이후에도 새 RVA20 보드(Pine64 Star64, StarFive VisionFive 2 Lite, Milk-V Mars CM)를 추가로 지원했다고 밝히고 있습니다. 다만 그 사용자들의 배포판은 그 자리에 멈춥니다. 새 커널, 새 툴체인, 새 GNOME은 없습니다.

그래서 오늘 뭘 내려받을 수 있나 (2026년 7월 16일 기준)

여기가 이 글에서 제가 직접 확인한 부분입니다. 우분투 26.04 LTS는 2026년 4월 23일에 릴리스됐습니다. 그로부터 석 달 가까이 지난 지금, 캐노니컬이 직접 빌드해서 호스팅하는 RISC-V 이미지 목록은 이렇습니다.

캐노니컬 빌드 이미지 (ubuntu.com/download/risc-v), 2026-07-16 확인

  AllWinner Nezha                      24.04.4 LTS
  DeepComputing FML13V01               24.04.4 LTS
  Microchip PIC64GX1000 Curiosity Kit  24.04.4 LTS
  Microchip Polarfire SoC FPGA Icicle  24.04.4 LTS
  Milk-V Mars                          24.04.4 LTS
  Milk-V Mars CM                       24.04.4 LTS
  Pine64 Star64                        24.04.4 LTS
  SiFive Unmatched                     24.04.4 LTS
  Sipeed LicheeRV Dock                 24.04.4 LTS
  StarFive VisionFive 2                24.04.4 LTS
  StarFive VisionFive 2 Lite           24.04.4 LTS
  QEMU emulator                        26.04 LTS      <- 유일

RVA23 베이스라인 위에 세운 LTS를 캐노니컬 지원으로 돌릴 수 있는 유일한 "플랫폼"이 에뮬레이터입니다. 목록의 실물 보드는 세대가 맞지 않습니다. SiFive Unmatched의 Freedom U740은 데비안 위키 기준 쿼드코어 RV64GC라 벡터 자체가 없고, VisionFive 2·Milk-V Mars·Pine64 Star64가 공유하는 StarFive JH7110(SiFive U74 코어) 계열은 캐노니컬 자신이 RVA20 보드라고 부르는 물건입니다. RVA20에는 벡터가 아예 없습니다 — V는 RVA22에서 선택으로 처음 등장했으니까요.

그럼 실물 RVA23 보드는 우분투 26.04를 아예 못 돌리느냐 — 그건 아닙니다. 별도의 파트너 빌드 페이지가 있고, 거기엔 SpacemiT K3 두 종(CoM260 Kit, Pico-ITX)이 Ubuntu 26.04 Server 이미지로 올라와 있습니다. 다만 그 페이지 상단의 캐노니컬 자신의 경고를 그대로 읽어야 합니다.

These Ubuntu images are built and hosted by Canonical's partners, using Canonical's tools and standard build processes. They are provided as developer previews only, are not production-ready, and do not include Canonical's security updates or support.

개발자 프리뷰이고, 프로덕션용이 아니며, 캐노니컬의 보안 업데이트와 지원이 포함되지 않습니다. 참고로 같은 파트너 페이지의 나머지 보드들(ESWIN EBC7700/EBC7702, Milk-V Titan, SiFive HiFive Premier P550, DeepComputing FML13V01)은 전부 24.04 이미지입니다.

이걸 한 문장으로 요약하면 이렇습니다. 2026년 7월 현재 RISC-V에서 캐노니컬이 지원하는 최신 LTS를 실물 하드웨어로 돌리는 조합은 존재하지 않습니다. 에뮬레이터로 돌리거나, 지원 없는 프리뷰 이미지를 쓰거나, 24.04에 머무르거나 셋 중 하나입니다.

실물 RVA23 실리콘 — SpacemiT K3

그럼 실물은 어디까지 왔나. 현재 가장 구체적인 물건은 SpacemiT K3입니다. K3 Pico-ITX SBC와 CoM260 SoM이 2026년 5월에 출시됐고, 299달러대부터 구할 수 있습니다.

스펙시트상으로는 인상적입니다. X100 "빅" 코어 8개가 최대 2.4GHz, 여기에 1024비트 RVV1.0을 지원하는 A100 AI 코어 8개, LPDDR5 최대 32GB, PCIe Gen3 x4, 10GbE SFP+까지. 다만 다음 두 숫자는 벤더 주장입니다 — INT4 기준 최대 60 TOPS라는 AI 성능과, RK3588과 비슷하다는 130 KDMIPS. 둘 다 SpacemiT 스펙시트 수치이고 독립 검증된 값이 아닙니다.

독립 측정에 가까운 건 CNX Software가 2026년 1월에 공개한 초기 벤치마크입니다. 조건을 먼저 밝히면 — SpacemiT가 제공한 원격 K3 서버에 제3자(Sander)가 접속해 sbc-bench v0.9.72를 돌린 결과이고, CNX 자신이 "초기 벤치마크로 봐야 한다"고 명시했습니다. 하드웨어를 벤더가 제공했다는 점은 감안해서 읽어야 합니다.

그 조건을 달고 보면 숫자는 이렇습니다.

  • 7-Zip 싱글코어: X100이 2736 MIPS, 라즈베리파이 5가 3136 MIPS. 파이 5보다 낮습니다.
  • aes-256-cbc 싱글코어: K3가 869,520.73k, 파이 5가 1,367,736.32k. CNX는 "같은 CPU 주파수에서"라고 조건을 달았고, 이 워크로드에 특이적인 것 같다고 봤습니다.
  • 7-Zip 멀티코어: RK3588보다 약간 우위. 단 중요한 단서가 붙습니다 — 16코어가 인식되는데 7-Zip이나 stress-ng는 8코어만 썼습니다.
  • 메모리 대역폭: 낮은 편이고 파이 5보다 조금 나은 수준.

CNX의 결론을 그대로 옮기면, K3는 다른 RISC-V SoC 대비로는 의미 있는 진전이지만 기존 Arm SoC와 비교하면 대단한 성능은 아니고 RK3588보다 약간 나은 정도입니다.

그리고 벤치마크 로그에서 성능 숫자보다 더 많은 걸 말해 주는 줄이 있습니다. 같은 글에 실린 inxi 출력입니다.

Kernel: 6.12.16-generic arch: riscv64   Distro: Ubuntu 26.04 (Resolute Raccoon)
CPU: 16-core model: Spacemit X100  cache: L2: 10 MiB  Speed: 2200 MHz
Device-1: saturn-edp driver: spacemit_drm_drv v: N/A
API: OpenGL v: 3.3 vendor: mesa v: 24.0.1 renderer: softpipe
API: Vulkan  Message: No Vulkan data available.

renderer: softpipe. 정확히 읽으면 디스플레이 드라이버(spacemit_drm_drv)는 올라와 있지만 3D 가속 경로가 없어 Mesa가 소프트웨어 래스터라이저로 폴백한 상태입니다. Vulkan은 아예 잡히지 않습니다. K3 스펙시트에는 Imagination BXM4-64-MC1 GPU가 Vulkan 1.3 지원으로 적혀 있는데도요. (원격 서버 환경이라는 점은 감안해야 합니다만, 가속 스택이 준비돼 있었다면 잡혔어야 할 자리입니다.) RVA23은 CPU ISA 합의문일 뿐, 드라이버 스택을 배달해 주지 않습니다. 이게 RISC-V 생태계에서 반복되는 패턴입니다 — CPU 코어가 표준을 만족해도 그 옆의 GPU·VPU·NPU 드라이버는 여전히 벤더 BSP 문제로 남습니다.

물량 이야기도 냉정하게 볼 필요가 있습니다. CNX가 SCMP 보도를 인용해 전한 바로는, 이전 세대인 SpacemiT K1이 15만 대 남짓 출하됐습니다. CNX의 표현은 "많은 양은 아니다"였습니다. 이게 오늘 RISC-V 애플리케이션 프로세서 시장의 규모감입니다.

IP 레벨에서는 더 나은 물건이 이미 발표돼 있다는 점은 공정하게 덧붙여야겠습니다. SiFive의 Performance 제품 페이지를 보면 P800 시리즈를 RVA23 with 2x128 bit vectors로, P570 Gen 3을 RVA23 프로파일 기능을 가장 폭넓게 지원하는 코어로 소개합니다. 다만 이건 라이선스 가능한 CPU IP이지, 제가 지금 주문할 수 있는 보드가 아닙니다. IP 발표와 손에 잡히는 실리콘 사이의 시차가 이 분야의 기본 상수라고 보는 편이 안전합니다.

툴체인 — LLVM은 2024년, GCC는 2026년

프로파일이 정말 쓸 만해지려면 컴파일러가 그 이름을 알아야 합니다. -march=rv64gcv_zbb_zvbb_...를 손으로 나열하는 게 아니라 -march=rva23u64라고 쓸 수 있어야 한다는 뜻입니다. 캐노니컬이 프로파일 해설 글에서 이 점을 잘 보여 줬는데, RVA23을 확장 문자열로 풀어 쓰면 대략 이렇게 생겼습니다.

rv64gc_zicsr_zicntr_zihpm_zicbom_zicbop_zicboz_zicond_zimop_zcmop_zfh_zfa_zawrs_zbc_zvfh_
zvfhmin_zvbc_zvkg_zvkned_zvknha_zvknhb_zvksed_zvksh_zvkn_zvknc_zvknf_zvkng_zvks_zvksc_
zvksf_zvksg_zvl128b_zihintpause_zihintntl_svpbmt_svinval_svade_sstc_sscofpmf_ssccptr_...

여기서 툴체인 간 격차가 꽤 큽니다. 저장소를 직접 확인해 봤습니다.

LLVM은 일찍 들어갔습니다. llvm/lib/Target/RISCV/RISCVProfiles.tdrva23u64rva23s64가 release/19.x 브랜치부터 이미 들어 있습니다. LLVM 19는 RVA23 비준(2024년 10월)과 사실상 동시기입니다.

GCC는 한참 늦었습니다. 확인해 보면 이렇습니다.

gcc/config/riscv/riscv-profiles.def
  releases/gcc-14  -> 파일 없음
  releases/gcc-15  -> 파일 없음
  releases/gcc-16  -> rva20u64 rva22u64 rva23s64 rva23u64 rvb23u64

gcc/common/config/riscv/riscv-common.cc를 grep해도 gcc-14와 gcc-15 브랜치에는 rva22u64, rva23u64 문자열 자체가 없습니다. 즉 GCC 15까지는 프로파일 이름을 -march로 받는 기능이 아예 없었습니다. GCC 16.1은 2026년 4월 30일에 나왔고, 16 매뉴얼에 와서야 -march=[ISA|Profile|Profile_ISA|processor-string] 문법과 rva23u64 예시가 문서화됩니다. 프로파일에 확장을 덧붙이는 rva23u64_zacas 같은 표기도 여기서 정리됐습니다.

비준에서 GCC 지원까지 약 18개월입니다. Clang을 쓰면 진작 됐고, GCC로 배포판을 빌드하는 쪽은 기다려야 했다는 뜻입니다. 배포판이 대부분 GCC로 빌드된다는 걸 생각하면 이 격차는 학술적인 게 아닙니다.

Rust는 별도 타깃을 갖고 있습니다. riscv64a23-unknown-linux-gnu가 Tier 2(호스트 툴 제외)이고, 문서에 This target will enable all mandatory features of rva23u64 by default.라고 적혀 있습니다. rustup target add riscv64a23-unknown-linux-gnu로 바로 붙일 수 있습니다. Tier 2는 "빌드는 보장되지만 자동 테스트는 보장되지 않는다"는 뜻이라는 점은 기억해 두는 게 좋습니다.

데비안은 왜 RV64GC에 머물러 있나

우분투와 대조하면 재미있는 게 데비안입니다. 데비안 위키의 문장은 짧고 분명합니다.

The Debian port uses RV64GC as the hardware baseline and the lp64d ABI (the default ABI for RV64G systems).

RV64GC입니다. 벡터도, 하이퍼바이저도 없습니다. 대략 RVA20 수준이고, 우분투가 요구하는 RVA23S64와는 세대가 둘 차이납니다.

이건 데비안이 게을러서가 아닙니다. 두 배포판의 이해관계가 다를 뿐입니다. 우분투는 실리콘 벤더·ODM과 상업 계약을 맺고 다음 세대 제품을 겨냥합니다 — 파트너가 RVA23 칩을 내놓을 예정이면 배포판이 미리 가 있는 게 맞습니다. 데비안은 사용자가 이미 손에 쥔 하드웨어에서 돌아가는 걸 우선합니다. 그리고 오늘 사람들 책상 위에 실제로 있는 RISC-V 보드는 VisionFive 2와 Mars 같은 RV64GC 물건들입니다.

같은 사실(RVA23 하드웨어가 아직 드물다)에서 정반대 결론이 나온 겁니다. 우분투는 "그러니 우리가 먼저 가서 기다리자", 데비안은 "그러니 아직 못 간다". 둘 다 틀리지 않았습니다.

언제 RVA23을 노리고, 언제 노리지 말아야 하나

정리하면 판단은 이렇게 갈립니다.

RVA23을 목표로 잡는 게 맞는 경우

  • 2027년 이후 출시할 제품의 실리콘을 지금 고르고 있다. 프로파일이 존재하는 이유가 정확히 이겁니다 — 벤더 정렬은 미래 시제로 작동합니다.
  • 벡터가 워크로드의 본질이고(코덱, 암호, 추론 커널), 런타임 디스패치와 스칼라 폴백을 이중으로 유지하는 비용을 없애고 싶다. RVA23이면 VLEN 128비트 이상을 컴파일 타임에 가정할 수 있습니다.
  • 하이퍼바이저가 필요하다. RVA22에서 H는 선택이었으므로, 가상화를 요구사항으로 걸면 사실상 RVA23급 하드웨어를 요구하는 것과 같습니다.
  • 툴체인이 Clang이거나, GCC 16 이상으로 올라갈 수 있다.

아직 아닌 경우

  • 지금 당장 실물 보드에서 굴려야 한다. 오늘 기준 선택지는 SpacemiT K3 정도이고, 우분투 이미지는 지원 없는 개발자 프리뷰입니다.
  • 성능이 목적이다. K3의 싱글코어는 라즈베리파이 5보다 낮게 측정됐습니다(7-Zip 2736 대 3136 MIPS). RISC-V를 성능 때문에 고르는 시점은 아직 아닙니다. 고른다면 이유는 다른 데 있어야 합니다 — 라이선스, 커스텀 확장, 공급망, 규제.
  • GPU 가속이 필요하다. renderer: softpipe가 그 답입니다. ISA 프로파일은 드라이버를 주지 않습니다.
  • 데비안 계열 배포판을 쓰고 RV64GC 하드웨어를 이미 갖고 있다. 그대로 두면 됩니다. 데비안 베이스라인이 당분간 움직일 이유가 없습니다.
  • 제어흐름 무결성 같은 보안 기능을 기대한다. Zicfilp/Zicfiss는 RVA23에서도 선택입니다.

FPGA로 RISC-V 코어를 직접 굴려 보는 쪽이 목적이라면 프로파일 논의는 대체로 무관합니다 — 그쪽 이야기는 오픈소스 FPGA와 RISC-V 개발 환경 편에서 따로 다뤘습니다. 프로파일은 어디까지나 "남이 만든 바이너리를 내 칩에서 돌린다"는 문제를 푸는 물건입니다.

마치며

RVA23은 잘 만든 규격이라고 생각합니다. 벡터와 하이퍼바이저를 필수로 못 박은 건 RISC-V가 바이너리 배포 시장에서 살아남으려면 반드시 필요한 결정이었고, 비준 문서 스스로 그 논리를 감추지 않고 적어 뒀습니다. VLEN 128비트 하한처럼 컴파일러가 실제로 기댈 수 있는 보장을 준 것도 실용적입니다.

동시에, 규격이 비준됐다는 것과 그 규격 위에서 일할 수 있다는 것은 21개월이 지난 지금도 다른 이야기입니다. 우분투는 베이스라인을 올렸지만 캐노니컬이 직접 지원하는 26.04 LTS의 유일한 RISC-V 플랫폼은 에뮬레이터이고, 실물 RVA23 보드의 이미지는 프로덕션용이 아니라고 캐노니컬 스스로 명시하고 있습니다. GCC는 올해 4월에야 프로파일 이름을 알아들었습니다. 가장 앞선 RVA23 칩의 싱글코어 성능은 라즈베리파이 5보다 낮게 측정됐고, GPU는 소프트웨어 렌더링으로 돌아갑니다.

그래서 저는 RVA23을 "지금 쓸 것"이 아니라 지금 계획할 것으로 봅니다. 2027~2028년에 물건을 낼 거라면 RVA23은 협상 테이블에 올려야 할 요구사항입니다. 이번 분기에 돌릴 게 필요하다면 24.04 LTS와 RV64GC 보드가 여전히 정답입니다. 프로파일의 가치는 오늘의 하드웨어가 아니라 내일의 하드웨어를 정렬시키는 데 있고, 그건 원래 시간이 걸리는 일입니다.

참고 자료

The RISC-V RVA23 Profile — Distros Raised the Baseline, the Hardware Has Not Arrived Yet

Introduction — The Gap Between a Ratified Profile and the Hardware to Run It

RISC-V stories tend to come in one of two tones. Either "the open ISA is going to change the world," or "it's still a toy." Neither is much use. What a practitioner actually wants to know is one thing — if I target this today, what works and what doesn't.

This post tries to answer that question by betting it all on one profile: RVA23. RVA23 was ratified on October 21, 2024 (RISC-V International's announcement; the document itself reads Version 1.0, 2024-10-17: This document is in Ratified state.), and 21 months have passed since. In that time, Ubuntu raised this profile to a minimum requirement and built one LTS release on top of it. The profile has effectively been promoted from a spec to a product requirement.

But open Canonical's RISC-V download page today (July 16, 2026), and the only platform that can get a 26.04 LTS image is the QEMU emulator, one platform. All eleven of the remaining physical boards can only get 24.04.4 LTS. That gap is this post's subject.

Why Profiles Are a RISC-V-Only Thing

When you write x86 or Arm code, you don't worry about whether "this CPU has a multiply instruction." On RISC-V, you have to. Modularity was a design goal — extensions are picked à la carte, and vendors can even bolt on their own custom extensions.

In embedded, that's a strength — you compile all your own software. The problem is the market where you distribute binaries to other people. The ratification document's preamble is fairly candid about this tension.

The primary goal of the RVA profiles is to align processor vendors targeting binary software markets, so software can rely on the existence of a certain set of ISA features in a particular generation of RISC-V implementations.

The same document is blunter in the next paragraph. Without proactive alignment through profiles, RISC-V will be uncompetitive (Without proactive alignment through RVA profiles, RISC-V will be uncompetitive), and the reasoning goes: if one vendor implements a feature but another doesn't, binary distros won't use that feature, and everyone loses in the end.

That's the crux. A profile isn't a hardware feature — it's an agreement among hardware vendors. The software ecosystem picks the lowest common denominator it actually observes; it doesn't pick a feature because the spec table looks nice.

So the document states it flatly — to keep alignment and stay competitive, the mandatory extension set must increase over time in successive generations of the RVA profile (the mandatory set of extensions must increase over time in successive generations of RVA profile). That one sentence is RVA23's entire reason for existing.

What RVA23 Actually Mandates — V and H

The profile splits into two branches. RVA23U64 specifies what's visible in user mode; RVA23S64 specifies supervisor-mode features (i.e., what the kernel expects). As we'll see later, the one Ubuntu requires is S64.

Carried over verbatim from the ratification document, here's the list of new mandatory extensions in RVA23U64.

The following mandatory extensions are new in RVA23U64:
  V           Vector extension.          <- "V was optional in RVA22U64."
  Zvfhmin     Vector minimal half-precision floating-point.
  Zvbb        Vector basic bit-manipulation instructions.
  Zvkt        Vector data-independent execution latency.
  Zihintntl   Non-temporal locality hints.
  Zicond      Integer conditional operations.
  Zimop       may-be-operations.
  Zcmop       Compressed may-be-operations.
  Zcb         Additional compressed instructions.
  Zfa         Additional floating-Point instructions.
  Zawrs       Wait-on-reservation-set instructions.
  Supm        Pointer masking (PMLEN=0 and PMLEN=7 at minimum).

The line that really carries the weight is the first one. The ratification document's own annotation is V was optional in RVA22U64. And this is verifiable — the RVA22 profile text itself says RVA22U64 has four profile options (Zfh, V, Zkn, Zks). Vector was optional.

One detail that often gets blurred here: V also pins down the vector length. The vector extension spec states The V vector extension depends upon the Zvl128b and Zve64d extensions., and Zvl128b means VLEN is at least 128 bits. So for a chip that satisfies RVA23, a compiler doesn't just get to assume "there's a vector unit" — it can assume "there's at least a 128-bit vector register file and 64-bit floating-point vector ops work," with no runtime dispatch needed.

On the supervisor side (RVA23S64), the most expensive new mandatory item is Sha. The document calls it the augmented hypervisor extension, and in substance it bundles the H extension (hypervisor) with Ssstateen, Shcounterenw, Shvstvala, Shtvala, and more. And H, too, was optional under RVA22S64 — in the RVA22 text, H sits inside the RVA22S64 Optional Extensions section.

To sum up, RVA23's headline is this: Vector and Hypervisor, both optional under RVA22, are now both mandatory. That's a demand that genuinely grows silicon area and verification cost. It isn't free alignment.

A few lesser-known decisions are worth noting alongside this.

  • Scalar crypto dropped out. Zkn/Zks, optional under RVA22, aren't in RVA23's option list at all. The document's reasoning is clear — now that Vector is mandatory and vector crypto is far faster than scalar, the message to both is: move to vector crypto.
  • Control-flow integrity is still optional. Zicfilp (landing pads) and Zicfiss (shadow stack) are an expansion option in RVA23U64 — i.e., optional. Don't expect the equivalent of Arm's BTI/PAC defenses just because a chip says RVA23.
  • Zacas (compare-and-swap) is a development option. That means it's optional now and slated to become mandatory in the next generation. You can't assume an RVA23 chip has CAS.

Software Ran Ahead — Ubuntu's RVA23S64 Baseline

This is where the story gets interesting. Usually hardware ships first and software follows. Ubuntu went the other way.

The notice on Canonical's RISC-V download page states it precisely.

Note: We have upgraded the required RISC-V ISA profile to RVA23S64 with the 25.10 release. Hardware that is not RVA23-ready continues to be supported by our 24.04.4 LTS release.

The notable point is that what's required is not U64 but RVA23S64. As we saw above, S64 mandatorily includes Sha, i.e., the hypervisor. You don't actually need the hypervisor extension to run a desktop image, but if you adopt the whole profile as your baseline, it comes along regardless.

Canonical laid out the logic behind this decision in a February 2026 retrospective — to avoid ecosystem fragmentation and to keep pace with hardware partners. The same post also gives its answer to users being left behind.

Starting with Ubuntu 25.10, RVA23 became the minimum supported baseline. RVA20 users can still get up to 15 years of support, provided they are using Ubuntu 24.04 LTS with Ubuntu Pro.

That sentence deserves a fair reading. This isn't "abandoned." 24.04 LTS goes out to 15 years with Ubuntu Pro. Canonical even states it added support for new RVA20 boards (Pine64 Star64, StarFive VisionFive 2 Lite, Milk-V Mars CM) after the RVA23 transition. It's just that those users' distro stays frozen where it is. No new kernel, no new toolchain, no new GNOME.

So What Can You Actually Download Today (as of July 16, 2026)

This is the part of the post I verified myself directly. Ubuntu 26.04 LTS was released on April 23, 2026. Now, nearly three months later, here's the list of RISC-V images Canonical builds and hosts itself.

Canonical-built images (ubuntu.com/download/risc-v), checked 2026-07-16

  AllWinner Nezha                      24.04.4 LTS
  DeepComputing FML13V01               24.04.4 LTS
  Microchip PIC64GX1000 Curiosity Kit  24.04.4 LTS
  Microchip Polarfire SoC FPGA Icicle  24.04.4 LTS
  Milk-V Mars                          24.04.4 LTS
  Milk-V Mars CM                       24.04.4 LTS
  Pine64 Star64                        24.04.4 LTS
  SiFive Unmatched                     24.04.4 LTS
  Sipeed LicheeRV Dock                 24.04.4 LTS
  StarFive VisionFive 2                24.04.4 LTS
  StarFive VisionFive 2 Lite           24.04.4 LTS
  QEMU emulator                        26.04 LTS      <- only one

The only "platform" that can run an LTS built on the RVA23 baseline with Canonical support is the emulator. The physical boards on the list are the wrong generation. SiFive Unmatched's Freedom U740 is a quad-core RV64GC per the Debian wiki, so it has no vector unit at all, and the StarFive JH7110 (SiFive U74 core) family shared by VisionFive 2, Milk-V Mars, and Pine64 Star64 is something Canonical itself calls an RVA20 board. RVA20 has no vector at all — V first showed up as optional in RVA22.

So can physical RVA23 boards not run Ubuntu 26.04 at all? Not quite. There's a separate partner-built page, and it lists two SpacemiT K3 variants (CoM260 Kit, Pico-ITX) with Ubuntu 26.04 Server images. But you have to read Canonical's own warning at the top of that page as it stands.

These Ubuntu images are built and hosted by Canonical's partners, using Canonical's tools and standard build processes. They are provided as developer previews only, are not production-ready, and do not include Canonical's security updates or support.

Developer preview, not for production, no Canonical security updates or support included. For reference, the rest of the boards on that same partner page — ESWIN EBC7700/EBC7702, Milk-V Titan, SiFive HiFive Premier P550, DeepComputing FML13V01 — are all 24.04 images.

Summed up in one sentence: as of July 2026, there is no combination on RISC-V that runs Canonical's supported, latest LTS on physical hardware. Your choices are run it on the emulator, use an unsupported preview image, or stay on 24.04.

Physical RVA23 Silicon — SpacemiT K3

So how far along is physical hardware? The most concrete thing right now is the SpacemiT K3. The K3 Pico-ITX SBC and CoM260 SoM launched in May 2026, starting at around $299.

On paper it's impressive: 8 X100 "big" cores at up to 2.4GHz, plus 8 A100 AI cores supporting 1024-bit RVV1.0, up to 32GB of LPDDR5, PCIe Gen3 x4, even 10GbE SFP+. But the following two numbers are vendor claims — up to 60 TOPS of AI performance at INT4, and 130 KDMIPS said to be comparable to the RK3588. Both are figures from SpacemiT's spec sheet, not independently verified values.

The closest thing to an independent measurement is an early benchmark CNX Software published in January 2026. Disclosing the conditions first — a third party (Sander) logged into a remote K3 server provided by SpacemiT and ran sbc-bench v0.9.72, and CNX itself stated this "should be viewed as an early benchmark." The fact that the hardware was vendor-provided should be factored into how you read it.

With those conditions attached, here are the numbers.

  • 7-Zip single-core: X100 at 2736 MIPS vs. Raspberry Pi 5 at 3136 MIPS. Lower than the Pi 5.
  • aes-256-cbc single-core: K3 at 869,520.73k vs. Pi 5 at 1,367,736.32k. CNX qualified this as "at the same CPU frequency" and suggested this looked specific to this workload.
  • 7-Zip multi-core: a slight edge over the RK3588. But an important caveat comes with it — 16 cores are detected, yet 7-Zip and stress-ng only used 8.
  • Memory bandwidth: on the low side, only slightly better than the Pi 5.

Carrying over CNX's conclusion as-is: K3 is meaningful progress relative to other RISC-V SoCs, but compared to established Arm SoCs it isn't remarkable performance — only somewhat better than the RK3588.

And there's a line in the benchmark log that says more than the performance numbers do — the inxi output included in the same post.

Kernel: 6.12.16-generic arch: riscv64   Distro: Ubuntu 26.04 (Resolute Raccoon)
CPU: 16-core model: Spacemit X100  cache: L2: 10 MiB  Speed: 2200 MHz
Device-1: saturn-edp driver: spacemit_drm_drv v: N/A
API: OpenGL v: 3.3 vendor: mesa v: 24.0.1 renderer: softpipe
API: Vulkan  Message: No Vulkan data available.

renderer: softpipe. Read precisely, this means the display driver (spacemit_drm_drv) is loaded, but there's no 3D acceleration path, so Mesa has fallen back to a software rasterizer. Vulkan isn't detected at all — even though the K3 spec sheet lists an Imagination BXM4-64-MC1 GPU with Vulkan 1.3 support. (You do have to account for this being a remote server environment, but this is exactly the spot where a ready acceleration stack should have shown up.) RVA23 is just a CPU ISA agreement; it doesn't deliver a driver stack. This is a recurring pattern in the RISC-V ecosystem — even when the CPU core meets the standard, the GPU/VPU/NPU drivers next to it remain a vendor BSP problem.

Volume also needs a cold look. According to CNX citing an SCMP report, the previous generation SpacemiT K1 shipped just over 150,000 units. CNX's phrase for it was "not a huge number." That's the scale of today's RISC-V application-processor market.

In fairness, I should add that better parts have already been announced at the IP level. SiFive's Performance product page introduces the P800 series as RVA23 with 2x128 bit vectors, and the P570 Gen 3 as the core with the broadest support for RVA23 profile features. But this is licensable CPU IP, not a board I can order right now. It's safer to treat the lag between an IP announcement and silicon you can hold in your hand as a constant in this field.

Toolchains — LLVM in 2024, GCC in 2026

For a profile to be genuinely usable, the compiler has to know its name. That means being able to write -march=rva23u64 instead of hand-listing -march=rv64gcv_zbb_zvbb_.... Canonical illustrated this well in its profile explainer post — spelled out as an extension string, RVA23 looks roughly like this.

rv64gc_zicsr_zicntr_zihpm_zicbom_zicbop_zicboz_zicond_zimop_zcmop_zfh_zfa_zawrs_zbc_zvfh_
zvfhmin_zvbc_zvkg_zvkned_zvknha_zvknhb_zvksed_zvksh_zvkn_zvknc_zvknf_zvkng_zvks_zvksc_
zvksf_zvksg_zvl128b_zihintpause_zihintntl_svpbmt_svinval_svade_sstc_sscofpmf_ssccptr_...

This is where the gap between toolchains is fairly large. I checked the repositories directly.

LLVM got there early. rva23u64 and rva23s64 are already in llvm/lib/Target/RISCV/RISCVProfiles.td as of the release/19.x branch. LLVM 19 is effectively concurrent with RVA23's ratification (October 2024).

GCC was much later. Here's what checking shows.

gcc/config/riscv/riscv-profiles.def
  releases/gcc-14  -> file not present
  releases/gcc-15  -> file not present
  releases/gcc-16  -> rva20u64 rva22u64 rva23s64 rva23u64 rvb23u64

Even grepping gcc/common/config/riscv/riscv-common.cc, the strings rva22u64 and rva23u64 don't exist at all on the gcc-14 and gcc-15 branches. In other words, through GCC 15 there was no way at all to accept a profile name via -march. GCC 16.1 came out on April 30, 2026, and only with the 16 manual is the -march=[ISA|Profile|Profile_ISA|processor-string] syntax and the rva23u64 example documented. Notation like rva23u64_zacas, for appending extensions to a profile, was also settled here.

That's about 18 months from ratification to GCC support. It means Clang users were fine early on, while anyone building a distro with GCC had to wait. Given that most distros are built with GCC, this gap isn't academic.

Rust has a dedicated target. riscv64a23-unknown-linux-gnu is Tier 2 (excluding host tools), and the docs state This target will enable all mandatory features of rva23u64 by default.. You can add it right away with rustup target add riscv64a23-unknown-linux-gnu. It's worth remembering that Tier 2 means "builds are guaranteed, but automated testing is not."

Why Debian Stays on RV64GC

What's interesting in contrast to Ubuntu is Debian. The Debian wiki's sentence is short and clear.

The Debian port uses RV64GC as the hardware baseline and the lp64d ABI (the default ABI for RV64G systems).

RV64GC. No vector, no hypervisor. That's roughly RVA20-level, two generations behind the RVA23S64 Ubuntu requires.

This isn't Debian being lazy. It's that the two distros simply have different interests. Ubuntu signs commercial contracts with silicon vendors and ODMs and targets the next generation of products — if a partner is about to ship an RVA23 chip, it makes sense for the distro to get there ahead of time. Debian prioritizes running on hardware users already have in hand. And the RISC-V boards actually sitting on people's desks today are RV64GC things like VisionFive 2 and Mars.

The same fact — RVA23 hardware is still scarce — produces opposite conclusions. Ubuntu's take: "so let's go ahead and wait." Debian's take: "so we can't go yet." Neither is wrong.

When to Target RVA23, and When Not To

Summed up, the call breaks down like this.

When targeting RVA23 makes sense

  • You're picking silicon right now for a product shipping in 2027 or later. This is exactly why profiles exist — vendor alignment operates in the future tense.
  • Vector is central to your workload (codecs, crypto, inference kernels), and you want to eliminate the cost of maintaining both runtime dispatch and a scalar fallback. With RVA23 you can assume VLEN of 128 bits or more at compile time.
  • You need the hypervisor. Since H was optional under RVA22, making virtualization a requirement effectively means requiring RVA23-class hardware.
  • Your toolchain is Clang, or you can move to GCC 16 or later.

When it's not yet time

  • You need to run it on physical boards right now. As of today the only real option is roughly the SpacemiT K3, and the Ubuntu image for it is an unsupported developer preview.
  • Performance is the goal. K3's single-core measured lower than the Raspberry Pi 5 (7-Zip 2736 vs. 3136 MIPS). Now is not the time to pick RISC-V for performance. If you do pick it, the reason has to lie elsewhere — licensing, custom extensions, supply chain, regulation.
  • You need GPU acceleration. renderer: softpipe is your answer. An ISA profile doesn't hand you a driver.
  • You're on a Debian-family distro and already have RV64GC hardware. Leave it as is. There's no reason for Debian's baseline to move anytime soon.
  • You're expecting a security feature like control-flow integrity. Zicfilp/Zicfiss remain optional even under RVA23.

If your goal is running a RISC-V core directly on an FPGA yourself, this profile discussion is mostly beside the point — that side of the story is covered separately in Open FPGA & RISC-V Development 2026 Deep Dive - Yosys, NextPnR, IceStorm, Lattice ECP5, SiFive, BeagleV-Fire, Tang Nano, PULPino. A profile only ever solves the problem of "running someone else's binary on my chip."

Closing

I think RVA23 is a well-made spec. Mandating vector and hypervisor was a decision RISC-V genuinely needed to survive the binary-distribution market, and the ratification document doesn't hide that logic — it states it plainly. Giving compilers a guarantee they can actually rely on, like a 128-bit VLEN floor, is practical too.

At the same time, a spec being ratified and being able to actually work on top of that spec are still two different things, even now, 21 months later. Ubuntu raised its baseline, but the only RISC-V platform for the 26.04 LTS Canonical directly supports is the emulator, and Canonical itself states that images for physical RVA23 boards aren't for production. GCC only understood profile names starting this past April. The most advanced RVA23 chip's single-core performance measured lower than the Raspberry Pi 5, and its GPU runs on software rendering.

So I see RVA23 not as something to "use now," but as something to plan for now. If you're shipping a product in 2027–2028, RVA23 is a requirement that belongs on the negotiating table. If you need something running this quarter, 24.04 LTS and an RV64GC board are still the right answer. A profile's value lies in aligning tomorrow's hardware, not today's — and that's inherently something that takes time.

References