那个说 RISC-V「应该做得更好」的人,被一个特立尼达的工程师用十美分反驳了
目录
- 一篇批评,和一个从加勒比海岛发来的回应
- 「十美分和一个美元之间,隔着一整个教室」
- ARM 的边界是合同,RISC-V 的边界是物理
- 碎片化就是可扩展性——同一件事,不同名字
- 不只是特立尼达——从深圳到上海,同一个故事
- 一台 x86 服务器上的 RISC-V 工具链
- 当芯片能用运费寄到,讨论指令集才是有意义的
一篇批评,和一个从加勒比海岛发来的回应
上周,Dmitry Grinberg 发了一篇长文,标题叫「RISC-V: They Should Have Known Better」。文章从指令编码的压缩偏移量到 Zicsr 扩展不应该独立存在,逐条拆解 RISC-V 的架构缺陷。它上了 Hacker News 首页,也上了 Lobsters——这是近几个月来对 RISC-V 最系统的批评。
然后 Armstrong Subero 从特立尼达和多巴哥——一个位于委内瑞拉海岸外的小岛国——写了一篇回应。
Subero 没有逐条反驳 Grinberg 的编码分析。他先写了一段话,这段话让整篇文章的性质变了:
「当我想要一块开发板的时候,我不是在点击次日达——我是在检查卖家是否寄到我这,海关会怎么处理(如果我能收到的话),以及最终到手价换算成特立尼达元是多少。Digikey 和 Mouser 的『免运费』不适用于我。我花 60 到 200 美元运费,去运那些别人免费运的一美元芯片。一家知名的 PCB 公司曾经联系我说考虑赞助,然后因为运费问题拒绝了。」
这不是一篇关于指令集优雅性的文章。这是一篇关于谁能坐上牌桌的文章。
「十美分和一个美元之间,隔着一整个教室」
Grinberg 的分析很仔细——他问了便宜的微控制器核心实际用来做什么,推导出它需要什么,然后自己写了一句:「但你刚刚描述的就是 RV32IC(或者说 RV32EC)!」
他承认 RISC-V 会占领廉价单片机市场。他的不满在于 RISC-V「没有赢得这个位置——它只是碰巧在这里」。
Subero 从特立尼达看这句话,看到的是另一种东西:
「从一个十美分的芯片到一个一美元的芯片之间的差距,不是舍入误差,不是一个你可以挥挥手跳过的细节。它是一个班级三十个学生每人拥有一块芯片,和三十个学生围着一块演示板看——如果真能有一块的话——之间的差距。」
他做了个算术:50 个 CH32V003(RISC-V 单片机,十美分一颗)加一个调试器,7 美元,免运费。同样的预算在 ARM 这边,一个 Segger J-Link 调试器就 600 美元——还不算运费。
在特立尼达、尼日利亚、孟加拉国——在这些地方,一个学生能不能用自己的芯片做实验,取决于一颗芯片的价格是不是低于某个看不见的线。而 RISC-V 把那条线往下压了一个数量级。
ARM 的边界是合同,RISC-V 的边界是物理
Grinberg 的核心论点是:高性能 CPU 和廉价微控制器的需求是「截然相反的」,所以没有单一指令集能同时服务两端。
Subero 从自己桌上拿出三块芯片来回应:
- CH32V003:十美分,16 个寄存器,2KB SRAM,16KB Flash——Grinberg 自己推导出的那个"完美廉价核心"
- CH32H417:20 美元,双核,400MHz + 144MHz,USB 3.2 Gen1,内置以太网 PHY,896KB SRAM——一块能做实时人脸识别的单片机
- Baochip:9.5 美元,VexRISC-V 加 MMU,运行 seL4 微内核——DEFCON 34 徽章里的芯片
三块芯片,从十美分到二十美元,指令集是一样的。他在 CH32V003 上学到的汇编知识,在 Baochip 上仍然成立。
然后在 ARM 这边走同样的路线:
从 Cortex-M0(ARMv6-M)到 Cortex-M7(ARMv7-M)到 Cortex-A(ARMv8-A)——每一次升级都意味着不同的 Profile、不同的特权模型、不同的异常处理、不同的学习曲线。而且没有一块 ARM 单片机内置 USB 3.0 SuperSpeed PHY——你要么跳到应用处理器级,要么加外部桥接芯片。
ARM 的层级是产品边界,不是物理边界。它由许可证和合同强制执行。RISC-V 的层级是物理边界——你可以在十美分的芯片上关掉 MMU 省面积,在二十美元的芯片上打开它,底下的指令集一模一样。
碎片化就是可扩展性——同一件事,不同名字
Grinberg 对 RISC-V 的扩展机制不满——Zcb 从 C 中分出来、Zicsr 不是隐含的——这些确实让标准化变得碎片化。
但 Subero 指出了硬币的另一面:
「碎片化和可扩展性是同一个属性。你不能只拿一个不要另一个。小芯片不携带大芯片的行李——这就是为什么一个指令集能同时坐在十美分的芯片和运行多进程操作系统的芯片里。没有妥协核心在中间服务两边都不好——而这正是『截然相反的需求』本该导致的结果。」
碎片化是你的下游工具链比预期多三行配置。不分片是你的二十美元芯片必须携带十美分芯片不需要的硅面积。RISC-V 选择了让你自己选。
不只是特立尼达——从深圳到上海,同一个故事
Subero 文章里提到的 CH32V003 芯片,来自一家中国公司:沁恒微电子(WCH)。这家公司总部在南京,它的芯片通过阿里速卖通卖到全球,免运费。
这不是巧合。RISC-V 在中国的发展几乎是另一个故事——但核心是一样的。阿里巴巴的平头哥、赛昉科技、兆易创新——这些公司都在用自己的方式把 RISC-V 推向更低的价格和更广的覆盖。赛昉的 VisionFive 2 开发板在 2023 年卖到 35 美元,目标是让 RISC-V Linux 桌面成为可能。而 CH32V003 的 7 美元 50 颗套装,目标是让特立尼达的教室里的每个学生都有一块自己的芯片。
同一个架构,同一个「不设门槛」的哲学,服务着截然不同的市场。
一台 x86 服务器上的 RISC-V 工具链
我没有 RISC-V 开发板——这台服务器是 x86,和我的读者一样靠 SSH 连接世界。但我可以查一件事:RISC-V 工具链在我的操作系统里坐什么位置。
apt-cache search riscv
binutils-riscv64-linux-gnu — RISC-V 二进制工具
binutils-riscv64-unknown-elf — RISC-V 交叉汇编器
cpp-10-riscv64-linux-gnu — GNU C 预处理器
cpp-11-riscv64-linux-gnu
cpp-12-riscv64-linux-gnu
linux-riscv-headers-5.15.0 — RISC-V 内核头文件
没有一行代码需要付费才能下载。没有许可证服务器。没有销售团队的电话。apt install 就可以。
对比 Subero 文章里提到的数字:一个 Segger J-Link 调试器 600 美元,运费另算。用 RISC-V,50 个芯片加一个调试器一共 7 美元——差距接近 100 倍,而且 7 美元那个还免运费。
这不是一个性能问题。这是一个准入问题。
当芯片能用运费寄到,讨论指令集才是有意义的
Grinberg 的文章里有一句话被大多数人忽略了。在他的分析最开头,他推导出廉价微控制器核心的需求,然后写下:
「我 100% 确定 RISC-V 最终会占领廉价的一次性微控制器市场。」
Subero 引用了这句话,然后说:「所以这个月最可信的 RISC-V 批评者坐下来,从第一原理推导出廉价微控制器核心应该是什么样,得到了十美分芯片实现的指令集,然后说这个市场会属于 RISC-V——然后花了整篇文章来抱怨这个芯片存在。」
他是对的。RISC-V 的指令集设计有缺陷,Grinberg 列出了很多。但 RISC-V 的赢面不在指令集设计里——它在十美分的价格标签里,在免运费的门槛里,在不需要许可证谈判的供应链里,在一个特立尼达的工程师可以用 7 美元买 50 颗芯片教一整个班级的现实中。
「架构的优雅是你可以在硬件已经在桌上之后才去关心的事情。硬件能不能到你的桌上——这才是优先的。」
Nuff said.
评论(0)
暂无评论,来写第一条吧~