7.3.8. CPU性能测试
7.3.8.1. 测试说明
本测试使用Coremark工具进行测试,源码和编译好的软件放在10-cpu_performace目录下。
CoreMark是一项基准测试程序,其主要目标是测试处理器核心性能,CoreMark标准的测试方法就是在某配置参数组合下单位时间内跑了多少次CoreMark程序,
业界的分数呈现为 Coremark / CPU clock Mhz / Core num,即 coremark每秒跑的次数 / cpu时钟频率 / cpu的核数,最终得到一个评分。
7.3.8.2. 测试方法
解压
coremark-main.zip,并进入coremark-main文件夹执行
./coremark_single 0x0 0x0 0x66 0 7 1 2000 > ./run1.log,等待程序执行完毕;执行./coremark_multi 0x0 0x0 0x66 0 7 1 2000 > ./run2.log,等待程序执行完毕。查看
run1.log里面的单核测试成绩,参考如下:
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 20830
Total time (secs): 20.830000
Iterations/Sec : 5280.844935
Iterations : 110000
Compiler version : GCC6.5.0
Compiler flags : -O3 -funroll-all-loops -static --param max-inline-insns-auto=550 -DPERFORMANCE_RUN=1 -lrt
Memory location : Please put data memory location here
(e.g. code in flash, data on heap etc)
seedcrc : 0xe9f5
[0]crclist : 0xe714
[0]crcmatrix : 0x1fd7
[0]crcstate : 0x8e3a
[0]crcfinal : 0x33ff
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 5280.844935 / GCC6.5.0 -O3 -funroll-all-loops -static --param max-inline-insns-auto=550 -DPERFORMANCE_RUN=1 -lrt / Heap
注意到Iterations/Sec这栏,表示每秒钟迭代多少次,也就是我们上面公式的coremark分数。
根据公式,这颗x3的单核分数为5280.844935/1200(默认频率)/1 = 4.400。属于正常范围。
./run2.log里面保存着多核心的成绩,计算多核分数和单核分数类似,此处不再赘述。
7.3.8.3. 测试指标
单核分数 X > 4.2
四核分数 X > 4.2
7.3.8.4. 附录
交叉编译coremark流程如下:
进入
coremark-main目录,将aarch64/core_portme.mak中的CC编译器路径换成自己的用于交叉编译的gcc路径。执行
make PORT_DIR=aarch64 XCFLAGS="-O3 -funroll-all-loops -static --param max-inline-insns-auto=550 -DPERFORMANCE_RUN=1" REBUILD=1 run1.log编译单核测试程序;执行make PORT_DIR=aarch64 XCFLAGS="-O3 -funroll-all-loops -static --param max-inline-insns-auto=550 -DPERFORMANCE_RUN=1 -DMULTITHREAD=4 -DUSE_PTHREAD -pthread" REBUILD=1 run1.log编译生成4核测试程序,其中-DMULTITHREAD=参数用于控制生成几核心的测试程序。