RISC-V:他们本该更清楚

批评者认为,RISC‑V 高度模块化、扩展繁多的设计会导致碎片化,使特性检测和可移植二进制变得困难,并忽视了 x86、ARM 和 MIPS 数十年演进中总结出的经验。另一些人则反驳说,RISC‑V 开放、免版税的 ISA,日益成熟的工具链支持,以及像 RVA23 这样的新兴 Profile,使它在实践中“已经足够好”——尤其是在微控制器和嵌入式系统中——即便它在桌面和服务器上仍未能与顶级 ARM 或 x86 核心竞争。这场争论凸显了更广泛的张力:优雅的 ISA 设计,与最终决定架构胜负的经济、法律和生态因素之间的张力。

ISA 与软件的重要性

  • 几位评论者认为,历史表明“软件更重要;ISA 不重要”:x86 尽管技术上并不优雅,仍然存活下来,因为它能很好地运行现有软件。
  • 也有人反驳说,ISA 细节在边缘上确实重要:代码大小、解码复杂度和清晰的语义会影响成本与可行性,尤其对小型或廉价内核而言。

可选性、碎片化与 Profile

  • 一个核心批评是 RISC‑V 的极端可选性:扩展很多,可选子集很多,编码也有重叠。
  • 这使得发布既可移植又高性能的二进制变得困难,尤其是对那些事先不知道确切核心的二进制/Blob 而言。
  • 有人认为这在 MCU 场景下可以接受,因为供应商和目标平台高度绑定;但也有人指出现实中的案例(二进制 Blob、核心替换)会因此出问题。
  • RVA23 之类的 Profile 被视为部分修正——为某些市场定义经过筛选的必选集合——但有人认为它们来得太晚,而且仍然留下边缘情况。

特性检测与配置

  • 有人抱怨没有简单、可靠的方法让软件查询哪些扩展存在;对非法指令进行陷阱处理也含糊不清,因为重叠编码可能属于不同扩展。
  • 也有人回应说,OS 基线、设备树以及未来像 mconfigptr 这样的机制可以缓解这些问题,不过细节仍在演进中。

代码密度与指令编码

  • 关于代码密度的讨论很多:RISC‑V 压缩指令(16/32 位)对比 AArch64 固定 32 位,对比 x86 可变长度。
  • 有人声称 RV64GC(+RVC/RVA23)优于 x86‑64,至少与 AArch64 具有竞争力;也有人认为 RISC‑V “为”可变长度付出了代价,但并没有充分利用它。
  • 关于前端复杂度也有争论:可变长度解码会增加硬件成本,但支持者说这点开销很小,且与 ARM 多写回指令的拆解复杂度相当。

嵌入式 vs 桌面 / 高性能

  • 许多人认为 RISC‑V 的自然归宿是深度嵌入式和 MCU,在那里成本和开放性比峰值性能更重要。
  • 怀疑者不认为 RISC‑V 会在高端挑战 AArch64/x86,理由是该 ISA 并不是为大型乱序核心塑造的,而且生态也落后。
  • 也有人认为,随着时间推移和开放设计的推进,当晶体管预算趋于平台期时,性能差距会缩小。

开放性、专利与动机

  • 一个强烈观点是,RISC‑V 的主要优势在于法律层面:它是一种不受单一厂商控制的开放 ISA,尤其对中国以及希望避免 ARM/x86 授权费用的公司有吸引力。
  • 也承认“没有专利”无法被正式证明,但 RISC‑V 刻意做成“法律上不同的 MIPS”,以降低风险。

实际体验与工具链

  • 爱好者和一些商业用户表示,RISC‑V 的两大优势是:主线 GCC/LLVM 支持,以及不必受授权律师困扰。
  • 提到的现实痛点包括:某些 RISC‑V MCU 上沉重的中断序言、缺少类似 x86 的调试/观察点特性,以及要从最小的 RV64I 升级到 RV64GC/RVA23 才能运行主流发行版。
  • 共识是,尽管有缺点,RISC‑V 今天“还不错”且可用,尤其是在你同时控制硬件和软件的场景中。