SpacemiT-X60 RISC-V SoC 可以享受一些非常健康的性能改进,现在为 LLVM/Clang 21 编译器合并了调度器定义。
今天合并到 RISC-V 编译器代码的 LLVM Git 中,为具有多核、多集群 RISC-V RVA22 处理器的 SpacemiT-X60 SoC 添加了调度器定义。与其他 CPU 目标一样,为指令提供适当的调度信息可以带来一些可衡量的性能优势。

Mikhail Gadelha 编写了添加 SpacemiT-X60 调度程序详细信息的补丁,他评论道:
“这个补丁为 SpacemiT-X60 添加了一个初始调度器模型,仅包括标量指令的延迟。
调度器基于 C908 的记录特性,SpacemiT-X60 被认为是基于该特性,并为多个指令提供预期的延迟。我运行了一个探针来确认所有这些值,并获取 C908 文档未提供的指令(例如,双浮点指令)的延迟。
对于 load 和 store 说明,C908 文档指出 load 的延迟为 \>= 3,store 的延迟为 1。我尝试了几种值的组合,直到得到 5 和 3 的当前值,这产生了最好的结果。
尽管 X60 似乎确实支持至少一些浮点指令的多个问题,但此模型假设单个问题,因为增加它会减少以下收益。
此补丁在 SPEC CPU 2017 上为 rva22u64 和 rva22u64_v提供了 ~4% 的几何平均值改进,一些基准测试提高了 18% (508.namd_r)。有几次执行时间回归,但仅限于干扰性基准测试(523.xalancbmk_r 和 510.parest_r)。
…
这个初始调度模型非常注重提供足够的定义,为 SpacemiT-X60 提供更高的性能。通过更详细的微架构分析,可能会进一步增加收益,但这留给未来的工作。
看到 4% 的地理平均改进,对于某些 SPEC 测试来说,提升高达 18%,而且仍然有机会进一步改进调度模型以获得更好的性能。
转自 RISC-V LLVM Scheduler Tuning For SpacemiT-X60 On Clang Yields 4~18% Speedups – Phoronix
Linuxeden开源社区