指令架构集是否有必要开源?聊聊RISC-V和开源闭源指令集的争议。

RISC-V,根据维基百科的解释

RISC-V 是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。该项目于2010年在加州大学伯克利分校启动。
与大多数指令集相比,RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件而不必支付给任何公司专利费。虽然这不是第一个开源指令集,但它具有重要意义,因为其设计使其适用于现代计算设备(如仓库规模云计算机、高端移动电话和微小嵌入式系统)。设计者考虑到了这些用途中的性能与功率效率。该指令集还具有众多支持的软件,这解决了新指令集通常的弱点。

最近读到一篇关于开源与闭源(专有)指令架构集的争论。Dave Christie的观点,代表了传统闭源 ISA 阵营的观点。而 David Patterson 作为 RISC-V 的主要推动者之一,代表了开源 ISA 阵营。

Dave Christie:

  1. 主流ISA,(尤其是x86,ARM,Power, MIPS, Sparc),已经很好地为该行业服务了。
  2. 构建完美的指令架构集并不能确保商业上的成功。
  3. 指令架构集不仅仅是一门技术,更是生态系统。一旦达到一定规模,它的巨大生态会让它变得无比强大。
  4. 过去的经验证明,目前指令架构集的所有者会负责任地管理。
  5. 指令架构集会偶尔有失误,RISC-V也终将如此。

Dave Christie对 RISV-V提出质疑:

  1. RISC-V存在很多替代品,例如 Open RISC, Lattice Mico32.
  2. 非常长的指令字(VLIW)格式是RISC-V中的一个选项。但这个选项过于学术化,因为它试图为太多人提供太多的东西。VLIW适合高度专业化而非通用的用途。
  3. 不赞成共享的开放核设计可以缩短进入市场的时间。
  4. 不赞成行业需要一个标准化的指令架构集来保护世界免遭专有指令集的垄断。

Dave Christie提出:与其在指令架构集进行标准化,不如使用「虚拟指令架构集」或中间件语言来标准化软硬件之间的接口。例如异构系统架构(Heterogeneous System Architecture(HSA))

另一方David Patterson认为:

  1. 开放的标准、开源的软件塑造了计算机行业,如表一。指令架构集不应该例外。
  2. 指令架构集是软硬件的相接之处,很重要。
  3. 专有的指令架构集是AMD和 Intel 构起的护城河。不仅拥有怪癖的专利,还会在你违反许可时起诉你。即使获得许可证也未必能免受诉讼。
  4. ARM 的许可证不允许他人设计 ARM 内核,导致扼杀创新和竞争。
  5. 从技术角度看,指令架构集没有理由要专有。因为大部分的生态开发不是指令集的所有者开发,而是外部人员开发的。而且很多人都有设计优秀的指令架构集的经验。而且目前流行的指令集ARM 和 x86 不是特别优雅,只是比较成功。 而且如果指令集与特定的公司挂钩,那么公司倒闭时,指令架构集也会随之而逝。

David Patterson 认为开源指令架构集的优点:

  1. 开源产生更多的创新
  2. 共享的内核可以缩短进入市场的时间并降低成本。
  3. 共享的内核可以减少错误,因为大家都可以看得到。
  4. 便于学术研究。

David Patterson 还提出了一个很有意思的角度:

RISC-V 是最小化的模块指令架构集。像 Intel 这类公司设计的指令架构集需要能处理任何东西,因此随着时间的推移,会越来越大。而在21世纪的架构中,指令架构集应该用于SoC(即 System on a Chip,系统级芯片)。这就是RISC-V 的优势:基础指令少,支持32, 64, 128位, 可以添加标准扩展,支持更小的指令大小,为特定SoC指令预留了空间。

从2024年的角度来看,David Patterson关于开源指令架构集和RISC-V的观点大体上被证明是正确的。RISC-V作为一个模块化、可扩展的 ISA,确实获得了广泛采用。目前,RISC-V拥有蓬勃发展的生态系统,得到了学术界和工业界的大力支持,在嵌入式系统、IoT和高性能计算等领域都有所突破。(传统的专有指令架构集如ARM和x86在市场份额上目前仍然保持强势地位。)

isa-1

isa-2

注:ISA 是 Instruction Set Architecture 的缩写,中文通常翻译为”指令集架构”。