围绕《RISC-V: They should have known better》引出的争论,一组数字最容易被记住:某套 RISC-V 中断处理路径需要 44 个周期,对照方案只要 27 个周期。17 个周期的差距,随即被解释成 RISC-V 在单片机领域的先天短板。

这笔账提出了一个真实问题,但还不足以给整个架构下结论。中断延迟取决于具体内核、流水线、存储器、编译器和中断控制器。测试条件没有对齐,44 比 27 只能说明两段特定执行路径有差异,不能证明所有 RISC-V MCU 都慢于 Arm Cortex-M。

44 比 27 的争议,问题出在比较边界

中断处理不是一条指令,也不是一个孤立的周期数字。从外设发出请求,到处理函数真正执行,通常要经过中断识别、流水线切换、向量跳转、上下文保存和编译器生成的函数序言。

其中任何一项变化,结果都会不同。闪存是否有等待周期、指令缓存是否命中、采用什么 ABI、保存多少个寄存器、是否允许嵌套中断,都会改写最终数字。“失之毫厘,谬以千里”,用在微控制器基准测试上并不夸张。

原有分析还有三处技术关系需要厘清:

  • **CSRRW 属于 Zicsr.** 如果处理序列使用 CSRRW 访问 mscratch 等控制状态寄存器,就不能再把同一序列当作“缺少 Zicsr”的例子。
  • CLIC 不等于硬件自动保存上下文。 CLIC 路线可以改善向量分发、优先级和抢占处理,但寄存器由硬件还是软件保存,仍取决于内核实现和配套机制。
  • RVA23 不能直接解决 RV32 单片机碎片化。 RVA23 面向 64 位应用处理器,服务的是操作系统级平台兼容性,不是微控制器中断模型的统一规范。

这三点并非术语纠错那么简单。它们说明 RISC-V 的“模块化”很容易被写成笼统结论:扩展名称相同,不代表芯片实现相同;同样写着 RISC-V,进入中断的路径也可能相差很大。

Cortex-M 的优势来自统一异常模型,不只是指令集

RISC-V 与 Cortex-M 的差异,不能只按指令数量计算。Arm 在 Cortex-M 产品线上把异常处理做成了较统一的硬件模型。以 Cortex-M3、Cortex-M4 为例,异常进入时会自动压栈 R0-R3、R12、LR、PC 和 xPSR,合计 8 个寄存器;尾链等机制还能减少连续中断之间的重复开销。

典型 RISC-V MCU 则给芯片厂商留下更多实现空间。厂商可以选择简单的机器模式入口,也可以增加向量化、快速中断寄存器或 CLIC 类设计。好处是灵活,代价是产品之间难以只凭 ISA 标签横向比较。

比较项Cortex-M3/M4 常见做法RISC-V MCU 常见情况
异常入口硬件自动保存固定寄存器集合保存方式取决于内核和软件约定
中断控制NVIC 与处理器异常模型结合较紧控制器、入口模式和优先级机制因产品而异
连续中断可使用尾链等硬件优化是否支持类似优化要查具体内核资料
代码密度Thumb-2 工具链成熟RVC、Zc 可改善密度,但要看芯片与编译器支持
选型依据同系列行为相对可预测不能只看“RV32”或扩展列表

这正是 44 比 27 真正重要的地方:它提醒芯片厂商,开放指令集并不会自动带来有竞争力的微控制器体验。中断入口、调试工具、编译器质量和 RTOS 移植都要有人完成。ISA 授权成本降低,只是产品工程的起点。

但这组数字也没有标题看上去那么重要。普通传感器节点、联网设备和低频控制器未必受 17 个周期支配。低功耗唤醒时间可能由振荡器和电源域决定;运行 RTOS 和网络协议栈的产品,驱动成熟度、外设稳定性及长期维护往往比一次中断入口更影响交付。

高频中断项目应暂停“按架构站队”,改测整条路径

最受这场争论影响的是两类人:做电机控制、实时采样等高频中断任务的固件团队,以及准备采用 RISC-V MCU 的芯片和模组采购方。

如果项目已经选定具体芯片,不必因为 44 比 27 立刻换架构。更现实的动作是在量产候选板上测一次端到端延迟,并记录最坏值,而不是只看内核手册里的理想周期。

测试至少要固定这些条件:

  • 使用相同优化等级、ABI 和编译器版本;
  • 分别测试代码位于 SRAM、零等待闪存和带等待周期闪存的情况;
  • 记录中断请求到 GPIO 翻转的完整时间,而非只数汇编指令;
  • 覆盖空处理函数、真实寄存器保存集合和 RTOS 中断入口;
  • 加入嵌套中断、连续中断及缓存未命中的最坏场景。

采购方还应向供应商索要具体内核名称、中断控制器说明和可复现的测试工程。只写“支持 RISC-V”“支持快速中断”没有决策价值。真正能改变选型的,是量产频率下的最坏中断延迟、代码体积,以及调试器能否稳定复现现场问题。

接下来要观察的也不是 RVA23,而是 RV32 微控制器能否形成更清楚的硬件与软件约定:快速中断机制是否进入更多量产内核,GCC、LLVM 和 RTOS 是否针对这些机制稳定生成代码,芯片厂商是否愿意公布可复现数据。在这些条件成熟前,RISC-V MCU 可以有成本和定制优势,却还不能靠指令集名称换来一致的实时性能。