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

为何RISC-V裸机程序执行速度因所用libc不同差异巨大?

RISC-V裸机环境下不同libc的性能差异问题

在RISC-V裸机环境中,我使用-march=rv32imac -mabi=ilp32编译程序:

  • 链接自己用Crosstool-NG编译的newlib时,Conway生命游戏的执行稳定耗时超10分钟;
  • 链接Platformio提供的Nucleisys版libc时,仅需约2分30秒。

操作步骤

  1. 移动自制libc目录:

    mv ~/x-tools/riscv32-unknown-elf/riscv32-unknown-elf/lib/rv32imac/ ~/x-tools/riscv32-unknown-elf/riscv32-unknown-elf/lib/original_rv32imac
    

    此时重新编译报错:

    error : /home/th/x-tools/riscv32-unknown-elf/lib/gcc/riscv32-unknown-elf/9.4.0/../../../../riscv32-unknown-elf/lib/libc.a(lib_a-atexit.o): can't link double-float modules with soft-float modules
    ...
    
  2. 部署Nucleisys的libc:

    cp -a ~/.platformio/packages/toolchain-gd32v/riscv-nuclei-elf/lib/rv32imac ~/x-tools/riscv32-unknown-elf/riscv32-unknown-elf/lib/
    

    未修改Makefile,仅重新编译后即可看到执行速度差异。

已排查项

两款libc均为软浮点ABI,我已完成以下排查:

  • 列出了自制newlib的编译配置参数;
  • 对比发现快速版ELF包含init_array段,慢速版无此段;
  • 确认SP寄存器初始化逻辑一致;
  • 替换memcpy为本地实现后,速度差异仍存在。

请问问题出在哪里?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:40:16