RISC-V:他们本该更清楚些
RISC‑V 作为一种开放、免版税的 CPU 指令集迅速崛起,但也面临对其技术设计选择的尖锐批评。评论者争论其碎片化的可选扩展、别扭的指令编码以及薄弱的运行时特性检测,是否使它不适合作为高性能或通用系统的基础;也有人认为,与开放标准和不断增长的生态相比,这些缺陷并不重要。许多人最终认为,即便从 ISA 纯粹主义的角度看它是一次错失,RISC‑V 依然“足够好”,足以在成本和许可占主导的嵌入式、MCU 和加速器设计中取代专有内核。
总体情绪
- 许多人认同文章准确指出了 RISC‑V 中真实的设计瑕疵(可选性、编码、陷阱、中断)。
- 也有人认为批评过头了:RISC‑V “没问题”,在真实产品中可用,而且所有 ISA 都有难看的角落。
- 还有不少人指出,像 Linux 一样,“足够好 + 免费”可以胜过“技术上更好 + 受许可限制”。
可选扩展与碎片化
- 主要担忧:几乎所有东西都是可选的;每个选项都会把变体数量翻倍。
- 缺乏一种简单、标准的方式来枚举所有扩展(包括厂商扩展),这让可移植二进制、内核和 blob 变得困难。
- 有些人说这对嵌入式不是问题(你知道确切芯片),或者对 OS 级应用不是问题(你针对像 RVA23 这样的配置文件)。
- 另一些人反驳说,共享库、blob 和生命周期很长的产品会让这成为现实问题,而不是理论问题。
- 配置文件(例如 RVA23)被视为部分缓解,但不是完整解决方案。
指令编码、代码密度与解码
- 关于压缩(16/32 位)编码、固定宽度编码与完全可变长度编码的争论:
- 批评者:RISC‑V 承受了可变长度的复杂性成本,却只达到 AArch64 的代码密度,并没有明显更好;不同扩展之间重叠的编码被称为危险且令人困惑。
- 支持者:现代内核已经会拆解/融合复杂指令(x86、ARM),所以 RISC‑V 的做法是类似的;有人声称 RV64GC/RVA23 的文本体积优于 x86‑64,并且与 AArch64 具有竞争力。
- 一些微架构细节(JAL 范围、缺少标志位、立即数布局)被称为“非必要的失误”;另一些人则认为这些是为了更简单的高性能设计而作出的合理取舍。
嵌入式与高性能用例
- 许多人认为 RISC‑V 很适合深度嵌入式和 MCU 类角色,尤其适合作为 8051 级内核以及受许可限制的 ARM‑M 的法律上“干净”的替代品。
- 中断延迟和上下文保存开销(尤其是带 FP 时)受到批评;有人指出这些可以通过更好的约定或扩展(例如 Zfinx)缓解。
- 对于桌面/服务器级内核,观点分歧:
- 怀疑者:RISC‑V 没有吸取 ARMv8/x86 的经验教训,不适合顶级 OoO 内核;高利润市场直接为 ARM 买单就行。
- 乐观者:只要有时间,开源内核和配置文件会达到 M 系列/A 系列级别的性能;现有高端 x86/ARM 内核已经通过微操作隐藏了 ISA 的怪癖。
软件兼容性与特性检测
- 一个强烈批评是,你无法可靠地捕获未定义指令,因为它们可能属于另一个扩展,因此通过执行 opcode 来探测是危险的。
- 有些人认为由 OS 介导的发现方式(设备树、
/proc/cpuinfo、标准化配置文件)对实际软件已经足够。 - 嵌入式开发者指出,他们往往必须支持一系列芯片;相似内核之间的静默行为变化(尤其是在有厂商 blob 时)被视为严重风险。
法律、市场与“开放性”论点
- 一个核心的支持 RISC‑V 主题是:免版税、考虑专利的设计以及“开放标准”地位极具吸引力,尤其适用于:
- 成本敏感的嵌入式设备。
- 希望避免 ARM/x86 许可或地缘政治杠杆的公司和国家。
- 另一些人提醒说,微架构和扩展上的专利仍然存在,没有任何 ISA 能被证明完全不会遭遇专利流氓。
RISC‑V 作为“ISA 框架”与未来方向
- 有些人把 RISC‑V 视为不是单一 ISA,而是许多 ISA 的生成器(基础 + 可混搭扩展)。
- 这种灵活性在加速器(AI、GPU、自定义 IP)和爱好者内核方面受到赞赏,但也被指责导致生态碎片化。
- 还出现了一些建议:
- 一个“RISC‑VI”或重新编码、更严格的配置文件,从 ARMv8 和 RISC‑V 自身的失误中吸取经验。
- 围绕少数几个定义清晰的配置文件和查询机制进行更激进的标准化,而不是不断增加更细粒度的选项。