概要
- RISC-V の設計や拡張性に対する批判的視点
- 低価格マイコン 用途でのRISC-Vの弱点
- 命令圧縮やエンコーディング の問題点
- 高性能サーバー用途 でのRISC-Vの限界
- 拡張仕様 による断片化や標準化の課題
RISC-V:知っておくべきだったこと
-
RISC-Vは「すべての用途に最適」と主張されるが、 万能なISAは存在しない 現実
-
高性能CPU と 低価格マイコン では求められる設計要件が真逆
-
RISC-Vが 安価なシングルユースマイコン市場 を支配するのは設計の優秀さではなく、8051からの世代交代に過ぎない現状
- 低価格マイコンでは 割り込み遅延の短縮 と コアサイズの縮小 が最重要
- ROMやSRAM上での実行が前提となるため、 コード密度 が重要
- 数学演算や特権分離は不要、 RV32ICやRV32EC が該当するが、割り込み処理には Zicsr 拡張が必須
- Zicsrなしでは 割り込みハンドラ の実装が煩雑化し、MIPSやCortex-M0より劣る
-
割り込み処理の サイクル数比較 では、RISC-VはCortex-M0に大きく劣後
- RISC-V: 44サイクル以上
- Cortex-M0: 27サイクル
- RV32Eを使っても 38サイクル で依然として劣る
-
命令圧縮(Compressed Instructions) の設計不備
- 16ビット命令でのオフセット範囲が極端に狭い(例:バイトストアで 0~3 のみ)
- Cortex-M0はより広い範囲(例:バイトで 0~31)をサポート
- 圧縮命令でさえ Zcb など別拡張扱い、標準化されていない
-
サーバーコア では スループット重視、命令デコードの効率性が重要
- 現代の高性能コアは 4バイト固定長命令 が最適(例:AArch64、MIPS)
- 圧縮命令は 大規模コアでは逆効果、デコード効率悪化
- RISC-Vの命令長識別は「簡単」だが、 固定長命令の即時性・効率性 には敵わない
-
アドレッシングモード の不備
- 配列アクセスで 複数命令を要する (例:シフト→加算→メモリアクセス)
- ARMやx86のような [reg + reg × シフト] 型モードがない
- 後付けで Zba拡張 が追加されたが、依然として 命令数・コードサイズで不利
-
標準化されていない 拡張仕様 (CLIC、Zcb、Zba等)の乱立
- ベンダーごとに 非標準シリコン を実装する必要があり、エコシステムの断片化が進行
- 標準の不備を各社が独自拡張で補う状況
RISC-Vの今後と展望
- RISC-Vが 全用途を支配する という主張は現実的でない
- 低価格マイコン市場 では8051の後継として普及は進む見込み
- 高性能サーバー用途 や 標準化の完成度 では、依然として課題が多い
- 拡張仕様の 乱立と断片化 による標準の弱体化リスク
結論
- RISC-Vは 設計思想や拡張性 で多くの課題を抱える
- 特定用途では有望だが、 万能なISA としての地位は確立できていない
- 標準化とエコシステムの成熟が 今後の成否の鍵
(本記事は筆者個人の見解であり、所属組織・猫の意見を代表するものではありません)