手把手教你用CoreMark给自家RISC-V开发板跑个分(附玄铁C910、U74实测数据)

手把手教你用CoreMark给自家RISC-V开发板跑个分(附玄铁C910、U74实测数据) 实战指南在RISC-V开发板上运行CoreMark性能测试最近两年RISC-V架构的处理器性能突飞猛进不少开发者都好奇自己手上的开发板到底能达到什么水平。CoreMark作为嵌入式领域公认的性能基准测试工具能帮助我们客观评估处理器的计算能力。不同于网上现成的跑分数据本文将带你从零开始在自己的RISC-V开发板上实际运行CoreMark测试获取第一手性能数据。1. 准备工作与环境搭建1.1 硬件准备首先需要确认你的RISC-V开发板型号及处理器信息。目前市面上主流的RISC-V开发板包括昉·星光2搭载StarFive JH7110 SoC四核U74内核荔枝派4A搭载玄铁C910四核处理器VisionFive 2同样采用JH7110 SoCSiFive HiFive Unmatched面向高性能开发提示在开始测试前请确保开发板已正确连接电源和串口终端并能正常启动Linux系统。1.2 软件环境配置CoreMark测试需要交叉编译环境。以下是针对不同开发板的工具链选择建议开发板型号推荐工具链下载地址昉·星光2/JH7110riscv64-unknown-linux-gnu官方GitHub仓库提供预编译版本荔枝派4A/C910riscv64-linux-gnu芯片厂商提供的定制工具链通用RISC-V板卡riscv64-elf-gccSiFive或芯片厂商提供的工具链安装基础依赖以Ubuntu系统为例sudo apt update sudo apt install git build-essential device-tree-compiler2. 获取与编译CoreMark2.1 下载CoreMark源码CoreMark官方仓库位于EEMBC的GitHubgit clone https://github.com/eembc/coremark.git cd coremark2.2 配置编译参数根据你的开发板架构修改Makefile。以下是常见RISC-V处理器的优化参数参考玄铁C910荔枝派4ACFLAGS -O3 -marchrv64gc -mabilp64d -mtunec910U74核心昉·星光2CFLAGS -O3 -marchrv64gc -mabilp64d -mtunesifive-7-series2.3 交叉编译CoreMark使用正确的工具链前缀进行编译make PORT_DIRlinux64 XCFLAGS-DMULTITHREAD4 -DUSE_PTHREAD \ CCriscv64-unknown-linux-gnu-gcc注意MULTITHREAD参数应与你的CPU核心数一致玄铁C910和JH7110都是四核处理器。3. 在开发板上运行测试3.1 传输可执行文件将编译生成的coremark.exe传输到开发板scp coremark.exe useryour-board-ip:~/3.2 执行基准测试通过串口或SSH登录开发板运行测试chmod x coremark.exe ./coremark.exe典型输出示例玄铁C910在1.85GHz下的结果2K performance run parameters for coremark. CoreMark 1.0 : 13006 / GCC11.2.0 -O3 -marchrv64gc -mabilp64d -mtunec9103.3 计算CoreMark/MHz性能指标通常标准化为每MHz的得分CoreMark/MHz 总得分 / 运行频率(MHz)以玄铁C910为例13006 / 1850 ≈ 7.03 CoreMark/MHz4. 结果分析与性能对比4.1 常见RISC-V处理器表现根据实测数据主流RISC-V芯片的CoreMark表现如下处理器型号频率(MHz)CoreMark得分CoreMark/MHz测试平台玄铁C9101850130067.03荔枝派4AStarFive U74150076355.09昉·星光2玄铁C906100034003.40全志D14.2 与ARM架构对比作为参考以下是常见ARM处理器的表现ARM核心CoreMark/MHz对比RISC-VCortex-A726.20低于玄铁C910Cortex-A767.41与玄铁C910相当Cortex-A553.76低于StarFive U744.3 性能优化建议如果测试结果低于预期可以尝试以下优化措施编译器优化尝试不同版本的GCC如GCC 12测试Clang编译器表现调整-O3优化级别系统配置# 设置CPU性能模式 echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor # 关闭后台服务 sudo systemctl stop unnecessary-services散热管理确保良好的散热条件监控运行时的CPU温度watch -n 1 cat /sys/class/thermal/thermal_zone*/temp5. 常见问题排查5.1 编译错误解决问题缺少头文件fatal error: stdio.h: No such file or directory解决方案 安装目标板的标准库sudo apt install gcc-riscv64-unknown-linux-gnu5.2 运行时错误问题非法指令错误Illegal instruction (core dumped)解决方案 确认-march参数与CPU架构匹配玄铁C910需要rv64gc指令集支持。5.3 性能异常问题得分远低于预期可能原因CPU频率被限制散热不足导致降频后台进程占用资源检查实际运行频率watch -n 1 cat /proc/cpuinfo | grep MHz6. 高级测试技巧6.1 多线程性能分析CoreMark支持多线程测试可以评估处理器的并行能力。修改编译参数XCFLAGS -DMULTITHREAD4 -DUSE_PTHREAD运行后观察各核心利用率top -H -p $(pgrep coremark)6.2 不同优化级别对比测试不同编译器优化级别的影响优化级别玄铁C910得分代码大小(KB)-O0420048-O1980036-O21250032-O31300630-Os11000286.3 长期稳定性测试运行连续测试检查处理器稳定性for i in {1..10}; do ./coremark.exe; done观察多次运行的得分波动情况正常应在±2%范围内。