色々な環境で動くソフトウェアを作りたい私のような人間としては、色々な命令セットの動く環境を手元に揃えておきたい。x86だとAVX-512の使える環境だったり、ArmだとSMEの動くApple M4を入手したり、という感じだ。そして、新興のISAであるRISC-Vも気になっている。QEMUのようなエミュレーターを使えば大抵の命令セットは動かせるが、実機の方がロマンがある。
RISC-Vはベクトル拡張(RVV)が売りっぽいが、標準化されたのは比較的最近だ。SIMDに関心がある身としては、RISC-Vの動くマシンを手に入れるならベクトル拡張も使いたい。
現在のところ、中国勢がRVVを実装したSoCをいくつか出している。TH1520というSoCに搭載されたXuantie C910はRVVのバージョン0.7.1を実装しているようだ。そして、SpacemiT K1は正式版のRVV1.0準拠(256ビット)を謳っている。
そういうわけでSpacemiT K1は良い候補なのだが、Banana Pi BPI-F3もMilk-V Jupiterも無線(Wi-Fi/Bluetooth)を装備しており、日本在住の身としては技適が心配である(技適なしでも申請すれば使えるみたいな話もあるようだが、面倒くさい)。なので手を出さずにいた。
最近、新しいSoCであるSpacemiT K3が発表され、製品の情報も出てきている。特に、Milk-V Jupiter2 Dev Kitは無線を搭載していないようなので、日本でも安心して使えそうだ。そういうわけで、SpacemiT K3がどんなものか、机上で調べてみた。
実機の流通はまだだが、申請すればクラウドで使えるみたいな情報もある。しかし、現段階では私はそこまで試していない。あくまで情報収集である。
情報源
製品ページはこの辺。
- Key Stone
- 概要(英語、中国語):文档信息
- 概要(PDF):https://cdn-resource.spacemit.com/file/chip/K3/K3_brief_en.pdf
SpacemiTのフォーラムに論文(英語)が投稿されている。
以下は、これらを読んでわかったことをメモしておく。
基本的な構成
X100という、アプリケーション用の汎用コアが8個搭載されている。RVA23対応。H拡張も使える。ベクトル拡張は256ビットの対応。
それとは別に、A100という、AI向けのコアが8個搭載されている。これもRISC-Vが動き、RVA23と、1024ビット(!)のベクトル拡張に対応している。H拡張には対応していない。
AIコアの使い方
X100とA100ではベクトル長を含む特性が異なるので、AI向けの処理がX100で動いたり、普通のアプリケーション向けの処理がA100で動いたりすると嬉しくない。
GPUとかのデバイスだと、GPUで動かしたいプログラムをテキストまたはバイナリーで(CUDAとかだと隠蔽されていたりするが)OpenCLだのVulkanだののAPIを呼び出して送り込む、という形になるが、SpacemiT K3の場合はどうなるのか。
論文によると、OS (Linux) からはX100とA100をまとめて16コアのCPUに見えるらしい。作成されたスレッドはデフォルトでX100の方で動く。そして、何らかの方法でスレッドをA100に移行することができる。
【追記】このリポジトリ
では /proc/set_ai_thread という特殊なファイルにPIDを書き込んでいる。【追記終わり】
X100もA100もRISC-Vベースなので、ヘテロジニアス環境よりはプログラミングはやりやすそうだ。しかし、一つのプロセスの中でVLENが異なるスレッドが共存することになるので、プログラムの仕方によっては注意が必要かもしれない。
まあ、AIコアで行いたい処理はAIの決まりきった処理であろうと考えると、スレッドの移行とか異なるVLENとかを考えるのはAIランタイムを書く人だけで良いのかもしれない。
AIコアその他
AIコアからは行列乗算用のアクセラレーター(IME命令セット、Tensor Core)が使えるらしい。この辺はRISC-V標準が未成熟なのか、独自拡張という形になるようだ。調べた感じではIMEはIntegrated Matrix Extensionの略か。
【追記】IMEの標準化のページと、SpacemiTが実装したと思われるIME仕様へのリンク:
- Integrated Matrix Extension Home – Integrated Matrix Extension – RISC-V Tech Hub
- spacemit-com/riscv-ime-extension-spec: Following the RISC-V IME extension standard, and reusing Vector register resources, these instructions can bring more than a tenfold performance improvement to AI applications at a very small hardware cost
各種マトリクス拡張の方向性については以下の記事で触れられている:
IMEは既存のベクトルレジスターを再利用することが特徴のようだ。【追記終わり】
FP8用の独自命令もあるらしい。これもRISC-V標準が未成熟っぽくて、標準化されたらSpacemiTの後継SoCは標準化されたものに移行するつもりのようだ。
A100にはlocal memoryがあるらしい。資料によっては1.5MBのTCM (Tightly Coupled Memory)とも表記されているが、多分同じものだろう。A100の4コアからなるクラスターごとに1.5MB。プログラムからどう見えるのかはよくわからない。どこかのアドレス空間にマップされるのか。

いつ入手できるのか
SpacemiT K3を搭載した製品は先述のMilk-V Jupiter 2を含む、何種類かが出るようだ。Milk-Vでは現在、実物の購入の割引に使えるクーポンを販売している。
- Milk-V Jupiter2 | Your All-in-One Development Platform
- Sipeed
- Banana Pi BPI-SM10(K3-CoM260) with SpacemiT K3 AI chip design | BananaPi Docs
CNX Softwareの記事(Jupiter 2 – RVA23-compliant SBC features SpacemiT K3 octa-core RISC-V AI SoC, up to 32GB RAM, 256GB UFS – CNX Software)には
The Jupiter 2 RISC-V SBC is expected to ship in April 2026
とあるので、遠くないうちに入手可能になるようだ。
そんな感じで気にはなっているのだが、購入するかどうかの判断は、もう少し情報収集しつつ、実物が出てから判断したい。
【追記】RVVの各種ベンチマークを載せているページを教えて頂いた:
- RVV benchmark
- camel-cdr/rvv-bench: A collection of RISC-V Vector (RVV) benchmarks to help developers write portably performant RVV code
【追記終わり】
