You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RISC-V 64位平台中mulw是否比mul更快?矩阵乘法实测疑问

RISC-V中mul替换为mulw后速度更快的原因分析
  • 硬件实现差异是核心原因
    RISC-V指令集仅定义指令的功能行为,不约束硬件实现细节。不同厂商的CPU核对mul(64位乘法)和mulw(32位乘法并截断)的硬件支持差异极大:

    • 部分低端嵌入式RISC-V核没有专门的64位乘法单元,执行mul时需要拆分多次32位乘法运算,延迟远高于mulw;
    • 即使配备64位乘法单元,mulw对应的硬件电路通常更小、延迟更短,或能与其他指令更好地流水线并行,吞吐量更高。
  • 编译器优化的关联
    你使用的是未优化的C代码,Clang未做变量范围分析,无法确定矩阵乘法的结果仅需低32位,因此生成了通用的mul指令。手动替换为mulw相当于明确告知硬件:只需32位乘法结果,这会触发更高效的硬件执行路径。若开启编译器优化(如-O2),Clang会自动根据变量类型(比如int型矩阵元素)生成mulw,无需手动修改汇编。

  • 指令行为一致,但性能表现不一定
    从RISC-V规范来看,mulw的功能行为是完全统一的:将两个操作数的低32位相乘,结果截断为32位(RV64架构下会符号扩展为64位)。所有符合规范的RISC-V芯片,mulw的计算结果都一致,但性能(延迟、吞吐量)会因硬件设计不同而差异明显——在部分高性能RISC-V核上,mul和mulw的执行速度可能几乎无区别。

  • 验证建议

    • 在不同RISC-V硬件/模拟核上测试(如QEMU模拟的rv64gc核、VisionFive 2开发板、SiFive Unleashed开发板),对比两者的性能差异;
    • 检查C代码的变量类型:若矩阵元素是32位整数(int),开启优化后编译器会自动生成mulw,此时手动修改汇编的收益会消失。

内容的提问来源于stack exchange,提问作者yinghao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:15:04