Skip to content
Published on

RISC-V RVA23 プロファイル — ディストリはベースラインを上げたが、ハードウェアはまだ届いていない

シェア
Authors

はじめに — 批准されたプロファイルと、それを動かすハードウェアの間の溝

RISC-Vの話は、大体二つのトーンのどちらかに落ち着きます。「オープンISAが世界を変える」派か、「まだおもちゃ」派か。どちらもあまり役に立ちません。実務者が知りたいことは一つです — 今これを目標にすると、何ができて何ができないのか。

本稿はその問いを、RVA23プロファイル一つに賭けて答えます。RVA23は2024年10月21日に批准され(RISC-V Internationalの発表、文書自体にはVersion 1.0, 2024-10-17: This document is in Ratified state.とあります)、それから21か月が経ちました。その間にUbuntuはこのプロファイルを最小要件に引き上げ、LTSを一つその上に構築しました。プロファイルが仕様から製品要件へと格上げされたわけです。

ところが今日(2026年7月16日)、CanonicalのRISC-Vダウンロードページを開くと、26.04 LTSイメージを入手できるプラットフォームは、QEMUエミュレータただ一つです。残る実機ボード11種はすべて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です。後で見るように、Ubuntuが要求するのは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の選択肢リストにありません。文書の理由は明確です — ベクトルが今や必須であり、ベクトル暗号がスカラーよりはるかに速いので、両方ともベクトル暗号へ移行せよ、ということです。
  • 制御フロー完全性(CFI)はまだオプションです。Zicfilp(ランディングパッド)とZicfiss(シャドウスタック)はRVA23U64でexpansion option、つまりオプションです。ArmのBTI/PACに相当する防御を、RVA23だからという理由だけで期待してはいけません。
  • Zacas(compare-and-swap)はdevelopment optionです。つまり今はオプションで、次世代で必須になる予定です。RVA23チップだからといってCASがあると仮定はできません。

ソフトウェアが先に走った — UbuntuのRVA23S64ベースライン

ここから話が面白くなります。普通はハードウェアが出てからソフトウェアが追いかけます。Ubuntuは逆を行きました。

Canonicalの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、つまりハイパーバイザを必須で含みます。デスクトップイメージを動かすためにハイパーバイザ拡張が必要なわけではありませんが、プロファイルをまるごとベースラインにすると、そのまま付いてきます。

Canonicalは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年まで続きます。Canonicalは、RVA23移行後も新しいRVA20ボード(Pine64 Star64、StarFive VisionFive 2 Lite、Milk-V Mars CM)を追加サポートしたとも述べています。ただし、それらのユーザーのディストリビューションはその場に留まります。新しいカーネルも、新しいツールチェーンも、新しいGNOMEもありません。

そして今日何がダウンロードできるのか(2026年7月16日時点)

ここが本稿で私が直接確認した部分です。Ubuntu 26.04 LTSは2026年4月23日にリリースされました。それから3か月近く経った今、Canonicalが自前でビルドしホスティングするRISC-Vイメージの一覧はこうです。

Canonicalビルドイメージ (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をCanonicalサポート付きで動かせる唯一の「プラットフォーム」がエミュレータです。リストの実機ボードは世代が合っていません。SiFive UnmatchedのFreedom U740はDebian Wiki基準でクアッドコアRV64GCであり、ベクトル自体がありません。VisionFive 2・Milk-V Mars・Pine64 Star64が共有するStarFive JH7110(SiFive U74コア)系列は、Canonical自身がRVA20ボードと呼んでいる、まさにそういうものです。RVA20にはベクトルがそもそもありません — VはRVA22でオプションとして初めて登場したからです。

では実機のRVA23ボードはUbuntu 26.04をまったく動かせないのか — そうではありません。別途パートナービルドページがあり、そこにはSpacemiT K3の二種(CoM260 Kit、Pico-ITX)がUbuntu 26.04 Serverイメージとして掲載されています。ただし、そのページ冒頭のCanonical自身の警告をそのまま読む必要があります。

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.

開発者プレビューであり、プロダクション用ではなく、Canonicalのセキュリティアップデートとサポートは含まれません。参考までに、同じパートナーページの残りのボード(ESWIN EBC7700/EBC7702、Milk-V Titan、SiFive HiFive Premier P550、DeepComputing FML13V01)はすべて24.04イメージです。

これを一文でまとめるとこうなります。2026年7月現在、RISC-VでCanonicalがサポートする最新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サーバーに第三者(Sander)がアクセスしてsbc-bench v0.9.72を回した結果であり、CNX自身が「初期ベンチマークとして見るべき」と明記しています。ハードウェアをベンダーが提供したという点は割り引いて読む必要があります。

その条件を踏まえた上での数字はこうです。

  • 7-Zipシングルコア:X100が2736 MIPS、Raspberry Pi 5が3136 MIPS。Pi 5より低い数値です。
  • aes-256-cbcシングルコア:K3が869,520.73k、Pi 5が1,367,736.32k。CNXは「同じCPU周波数で」と条件を付け、このワークロードに特有の傾向のようだと見ています。
  • 7-Zipマルチコア:RK3588よりわずかに優位。ただし重要な注釈が付きます — 16コアが認識されているのに、7-Zipやstress-ngは8コアしか使っていません。
  • メモリ帯域幅:低めで、Pi 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と書けるということです。Canonicalがプロファイル解説記事でこの点をよく示していて、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ブランチにはrva22u64rva23u64という文字列自体がありません。つまり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は「ビルドは保証されるが自動テストは保証されない」という意味である点は覚えておくとよいでしょう。

Debianはなぜ RV64GCに留まっているのか

Ubuntuと対照すると面白いのがDebianです。Debian Wikiの文はごく短く明快です。

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

RV64GCです。ベクトルもハイパーバイザもありません。おおよそRVA20レベルであり、Ubuntuが要求するRVA23S64とは世代が二つ違います。

これはDebianが怠けているからではありません。両ディストリビューションの利害が単に異なるだけです。Ubuntuはシリコンベンダー・ODMと商業契約を結び、次世代製品を狙います — パートナーがRVA23チップを出す予定なら、ディストリビューション側が先回りしておくのは理にかなっています。Debianはユーザーがすでに手にしているハードウェアで動くことを優先します。そして今日、人々の机の上に実際にあるRISC-VボードはVisionFive 2やMarsのようなRV64GCのものです。

同じ事実(RVA23ハードウェアがまだ希少である)から正反対の結論が出たわけです。Ubuntuは「だから我々が先に行って待とう」、Debianは「だからまだ行けない」。どちらも間違っていません。

いつRVA23を狙い、いつ狙うべきでないか

まとめると、判断はこう分かれます。

RVA23を目標にするのが妥当な場合

  • 2027年以降に出す製品のシリコンを今選定している。プロファイルが存在する理由はまさにこれです — ベンダーの足並み揃えは未来時制で機能します。
  • ベクトルがワークロードの本質であり(コーデック、暗号、推論カーネル)、ランタイムディスパッチとスカラーフォールバックの二重維持コストをなくしたい。RVA23ならVLEN 128ビット以上をコンパイル時に前提にできます。
  • ハイパーバイザが必要である。RVA22でHはオプションだったので、仮想化を要件にすることは事実上RVA23級のハードウェアを要求することと同じです。
  • ツールチェーンがClangか、GCC 16以上に上げられる。

まだその時ではない場合

  • 今すぐ実機ボードで動かす必要がある。今日時点の選択肢はSpacemiT K3程度で、Ubuntuイメージはサポートなしの開発者プレビューです。
  • 性能が目的である。K3のシングルコアはRaspberry Pi 5より低く測定されました(7-Zip 2736対3136 MIPS)。性能目的でRISC-Vを選ぶ時期ではまだありません。選ぶならその理由は別のところにあるべきです — ライセンス、カスタム拡張、サプライチェーン、規制。
  • GPUアクセラレーションが必要である。renderer: softpipeがその答えです。ISAプロファイルはドライバをくれません。
  • Debian系ディストリビューションを使い、RV64GCハードウェアをすでに持っている。そのままで構いません。Debianのベースラインが当面動く理由はありません。
  • 制御フロー完全性のようなセキュリティ機能を期待している。Zicfilp/ZicfissはRVA23でもオプションのままです。

FPGAでRISC-Vコアを自分で動かしてみることが目的であれば、プロファイルの議論はおおむね無関係です — その話はオープン FPGA & RISC-V 開発 2026 完全ガイド - Yosys・NextPnR・IceStorm・Lattice ECP5・SiFive・BeagleV-Fire・Tang Nano・PULPino 徹底解説編で別途扱いました。プロファイルはあくまで「他人が作ったバイナリを自分のチップで動かす」という問題を解くためのものです。

おわりに

RVA23はよくできた仕様だと思います。ベクトルとハイパーバイザを必須にしたのは、RISC-Vがバイナリ配布市場で生き残るために必ず必要な決定であり、批准文書自身がそのロジックを隠さずに書き記しています。VLEN 128ビットという下限のように、コンパイラが実際に頼れる保証を与えたことも実用的です。

同時に、仕様が批准されたことと、その仕様の上で実際に仕事ができることは、21か月経った今でも別の話です。Ubuntuはベースラインを引き上げましたが、Canonicalが直接サポートする26.04 LTSの唯一のRISC-Vプラットフォームはエミュレータであり、実機RVA23ボードのイメージはプロダクション用ではないとCanonical自身が明記しています。GCCは今年4月になってようやくプロファイル名を認識しました。最も先行するRVA23チップのシングルコア性能はRaspberry Pi 5より低く測定され、GPUはソフトウェアレンダリングで動いています。

だから私は、RVA23を「今使うもの」ではなく、今計画すべきもの、そういうものとして見ています。2027〜2028年に製品を出すのであれば、RVA23は交渉のテーブルに載せるべき要件です。今四半期に動かすものが必要なら、24.04 LTSとRV64GCボードが依然として正解です。プロファイルの価値は今日のハードウェアではなく明日のハードウェアを整列させることにあり、それは元来時間のかかる仕事です。

参考資料