RISC-V: They Should Have Known Better — 一位嵌入式工程师对 RISC-V 的系统性批评
整理并评析 Dmitry Grinberg 对 RISC-V 的长篇批评:从微控制器中断开销、扩展可选性、缺失的位操作、立即数与压缩指令编码,到 RVA23 profiles 和 RISC-V 真正适合的市场;结合官方规范与 Ubuntu 支持策略区分事实、设计取舍和作者观点。
来源:Dmitry Grinberg,RISC-V: They Should Have Known Better(原网页未标示发布日期,本站访问于 2026-08-15)。
阅读说明:本文采用 正文(原文内容整理)+ 解析(中文深度解读) 的结构。第一部分忠实梳理作者的完整论证,不作逐字转载;第二部分再进行事实核查、技术评析与产业延伸。原文措辞尖锐,本文尽量把修辞与可验证的技术论点分开。
第一部分:正文(原文内容整理)
原文主旨
Dmitry Grinberg 的核心判断不是「RISC-V 会失败」,而是:RISC-V 把开放、可扩展和低授权成本做成了优势,却把复杂性转移给了软件生态、芯片实现者与兼容性管理;它会在成本敏感的嵌入式控制和加速器伴生核中成功,但这不等于它天然适合高性能通用计算。
这是一篇立场鲜明的批评文。它最有价值的地方,是逼迫读者把三个常被混为一谈的问题拆开:
- 指令集规范是否开放;
- 指令集本身是否设计优秀;
- 围绕它构建高性能内核、操作系统和软件生态是否便宜。
「开放 ISA」只直接回答第一个问题,并不会自动保证后两个问题。
原文的七层论证
1. 一套 ISA 很难同时对所有场景最优
作者首先反对「RISC-V 将从几分钱的微控制器一直统治到超级计算机」这种全覆盖叙事。极小型嵌入式核关注面积、代码密度、中断延迟和确定性;高性能乱序核则关注宽发射、分支预测、访存吞吐、向量能力与解码效率。两端的目标不仅影响微架构,也会反过来影响 ISA 取舍。
在廉价控制核场景中,作者用中断上下文保存作例子:基础 RISC-V 需要软件保存寄存器,而 Cortex-M 系列具有硬件自动压栈路径。对简单、顺序执行的小核而言,额外指令会直接转化为延迟和代码体积;厂商推出 CLIC、快速中断或自动压栈等扩展,恰好说明基础路径不总能满足实时场景。
但这组周期数不能被理解成所有 RISC-V 核与所有 Cortex-M 核的统一排名。中断延迟还受 ABI、实现方式、存储器等待、流水线和具体扩展影响。更稳妥的结论是:极简 ISA 把一部分复杂性留给软件或平台扩展,小核不会像大核那样轻易把这些成本隐藏掉。
2. 「可选」既是自由,也是碎片化税
原文最强烈的批评集中在扩展可选性。乘除法、压缩指令、位操作、CSR、用户态、监督态、向量等能力由不同扩展组合表达,使「支持 RISC-V」本身无法告诉软件足够多的信息。
作者尤其质疑能力发现机制:如果发现扩展需要访问 CSR,而相关 CSR 能力本身又不是所有基础实现都必须具备,裸机软件和通用系统软件就需要依赖额外的平台契约。计时器地址、异常入口和特权层接口也不只由非特权基础 ISA 决定,而要由特权规范、平台规范、固件接口与设备树等共同补足。
这种模块化设计让芯片厂可以只为目标市场购买所需的硬件预算,但代价是:编译器必须知道目标扩展组合,二进制发行版必须选择基线,操作系统必须依赖更高层的平台约束。省下的晶体管与授权费,并不会让系统复杂性消失,只会改变由谁承担。
3. 一些高频操作缺少直接表达
作者列出三类他认为「明显应该有」的能力:
- 寄存器加移位寄存器的寻址方式,用于数组访问;
- 测试某一位并跳转;
- 位域提取、插入和清除。
RISC-V 通常用多条基础指令,或通过 Zba、Zbs 等位操作扩展覆盖其中一部分。作者的批评重点不是「这些操作无法完成」,而是它们需要更多指令、临时寄存器或微架构融合;对小核意味着代码更大、周期更多,对大核则意味着更复杂的融合和重命名压力。
反方观点也很明确:复杂寻址和复合指令会占用编码空间、增加解码及验证组合,并不一定在每种流水线里都划算。真正需要比较的不是指令条数,而是编译后代码密度、前端带宽、能耗、关键路径和实现面积的整体结果。
4. 立即数与压缩指令编码:难看是否等于低效?
原文花了大量篇幅批评 RISC-V 将立即数位分散在不同位置,尤其是分支、跳转和 16 位压缩指令。对模拟器、反汇编器和动态代码生成器而言,这确实增加了重组工作;部分压缩扩展还会根据扩展组合复用编码,使二进制兼容边界更难理解。
但官方规范给出的设计理由并非毫无根据:RV32I 规范强调保持 rs1、rs2、rd 位置稳定,并把立即数符号位固定在 inst[31],让符号扩展可与解码并行;B/J 类型通过旋转编码位降低最简单实现的信号扇出和立即数多路选择成本。压缩指令规范也把减少立即数多路选择器作为字段重排的理由。
因此争议本质上是工程目标排序:
- 作者更重视编码规律、模拟器实现、长期语义稳定和软件可理解性;
- 规范设计者更重视简单硬件的布线、关键路径和固定寄存器字段。
字段「看起来乱」是事实,但是否因此导致更差芯片,需要具体实现数据,而不能只凭编码图下结论。
5. Profiles 是补丁,还是生态成熟的必经阶段?
RISC-V 通过 Profiles 为应用处理器规定共同基线。官方 RVA23 Profile 强制要求一组相当完整的能力,包括整数乘除、原子操作、单双精度浮点、压缩指令、位操作、CSR、计数器,以及在 RVA23 中成为强制项的向量扩展等。
作者把 Profiles 视为对早期「无限可选」设计的补救:如果后来还要再建立一层规范,告诉软件哪些扩展终于可以依赖,说明第一层规范没有提供足够稳定的平台基线。
另一种理解是,ISA 与产品平台本来就不是同一层。x86-64 也存在微架构级别,Arm 也通过架构版本、profiles 和平台标准收敛功能。Profiles 可以被看作生态从探索期进入规模化二进制分发阶段的正常产物。真正的问题不是 Profiles 是否存在,而是它来得是否太晚、旧硬件如何过渡,以及 Profile 之外的平台接口能否同步收敛。
6. 「现有板卡永远跑不了 Ubuntu LTS」过于绝对
原文认为大批早期 RISC-V SBC 不满足 RVA23,将被未来 Ubuntu 和 Android 版本甩下。这一方向判断有现实依据,但表述需要修正。
Ubuntu 官方支持页说明,Ubuntu 25.10 起把最低基线升级为 RVA23S64;不满足 RVA23 的硬件仍由 Ubuntu 24.04.4 LTS 支持。换言之:
- 早期 RVA20 设备确实无法直接运行以 RVA23 为最低基线的新发行版;
- 但它们并非「从未或永远无法运行 Ubuntu LTS」;
- 更准确的风险是无法无缝升级到未来以 RVA23 为基线的系统与软件仓库。
这仍然是重要的生态断层,只是不应把「未来主线停止兼容」写成「既有 LTS 完全不存在」。
7. 作者最终并不认为 RISC-V 会消失
文章结尾给出的市场判断比前文修辞克制得多:
- 极低成本嵌入式控制核:RISC-V 很可能替代大量 8051、PIC 等传统内核,因为授权与可用实现成本足够低;
- AI/ML 加速器伴生核:矩阵乘法、DMA 和专用模块承担主要计算,通用核负责调度与控制,「够用且便宜」比单线程性能更重要;
- 中低端 SBC:RISC-V 与较老 Arm 核会长期共存;
- 高端桌面与通用计算:作者不看好 RISC-V 击败成熟的 AArch64 实现,因为开放规范不会自动生成高性能乱序核心,也不会免费带来软件生态。
这是全文最值得保留的判断框架:RISC-V 的胜负不是一场覆盖所有计算市场的总决赛,而是在不同工作负载中,开放性、授权成本、芯片面积、软件兼容和绝对性能之间分别结算。
第二部分:解析(中文深度解读)
争议点核查表
| 争议 | 原文倾向 | 更完整的判断 |
|---|---|---|
| 扩展可选性 | 造成标准名存实亡 | 确实增加软件矩阵;Profiles 正在为应用处理器建立可依赖基线 |
| 立即数编码 | 对模拟器和实现都不合理 | 软件端更复杂;官方目标是固定寄存器字段、并行符号扩展并降低简单硬件 mux 成本 |
| 小核中断 | 基础 RISC-V 明显落后 Cortex-M | 批评指向真实取舍,但精确周期高度依赖 ABI、内核与中断扩展 |
| RVA23 | 是对早期碎片化的迟到补丁 | 既是补救,也是二进制生态成熟时常见的收敛机制 |
| 旧 SBC | 将无法运行 Ubuntu LTS | 无法满足新基线,但 Ubuntu 24.04 LTS 仍支持部分 RVA20 硬件 |
| 开放 ISA | 被宣传成免费高性能 CPU | 规范开放不等于实现免费;高性能物理设计、验证和软件生态仍然昂贵 |
对产业与投资的启示
1. 不要把 ISA 份额等同于 CPU IP 利润
RISC-V 出货增长可以来自面积很小、单价很低的控制核,也可以来自高价值应用处理器。两者都计入「RISC-V 核心数量」,商业含义却完全不同。判断公司价值时,应区分:
- 自研核还是第三方 IP;
- 控制核、实时核还是乱序应用核;
- 收入来自授权、芯片、工具链还是系统方案;
- 软件移植、认证与长期支持成本由谁承担。
2. Profiles 收敛会淘汰一批过渡产品
RVA23 把向量、位操作、浮点、原子操作等纳入统一应用处理器基线,有利于发行版和商业软件减少构建矩阵,也意味着不满足基线的早期 SBC 和 SoC 更快进入维护模式。短期看这是兼容性阵痛,长期看却是形成可规模化软件市场的必要条件。
3. RISC-V 最强的切入口可能不是「替代桌面 Arm」
在 AI 加速器、存储控制器、网络芯片、传感器和各种 SoC 内部,CPU 往往只是控制平面。此时客户更在意可定制、无单颗版税、供应链可控和与专用硬件紧密耦合。RISC-V 即使在单线程性能上没有优势,也可能因为系统级经济性胜出。
4. 软件与验证才是开放架构的长期护城河
指令集文档可以开放,但高质量编译器后端、调试器、性能库、虚拟化、固件、认证、兼容性测试和量产验证不会凭空出现。未来真正有定价权的,不一定是再做一个 RISC-V 核的公司,而可能是能把硬件、工具链和垂直软件一起交付的团队。
我的结论
这篇文章不是对 RISC-V 的中立教材,而是一份极有价值的「反方诉状」。作者的一些技术问题值得认真回答:扩展组合如何发现、二进制基线如何收敛、编码复用是否制造兼容陷阱、简单核是否为极简 ISA 付出了过高的软件成本。
但从这些问题直接推导出 RISC-V 无法进入高性能市场,也同样过早。Profiles、平台规范、工具链和新一代实现正在改变问题边界。更稳健的判断是:
RISC-V 已经证明开放 ISA 可以建立全球生态;下一阶段要证明的,是这个生态能否把自由度收敛成稳定平台,同时不丢掉当初开放与可定制的优势。
这场竞争最终不会由口号决定,而会由同一工作负载下的性能、功耗、面积、软件成本和十年兼容性共同决定。
延伸资料
- Dmitry Grinberg 原文
- RISC-V Ratified Specifications Library
- RVA23 Profile 官方定义
- RISC-V RV32I Base Integer ISA
- RISC-V Compressed Instructions
- Ubuntu 的 RISC-V / RVA23 支持说明
本文为技术观点整理,不构成投资建议。涉及性能与兼容性的判断应以具体芯片、软件版本和官方规范为准。