makdir php 并发报错_CPU性能测试——CoreMark篇

本文详述了在Ubuntu20.04上使用CoreMark v1.01对riscv64自研CPU进行性能测试的过程,包括源码获取、移植、编译及运行时遇到的问题。测试结果显示了CoreMark的性能指标,并提及了CoreMark在嵌入式CPU行业的应用。
摘要由CSDN通过智能技术生成

a14a2279b5a31791e482a1d5822d282d.png

本文将介绍使用CoreMark测试程序对我们小组自研芯片进行性能的测试,记录了CoreMarK工具的使用以及对其测试结果进行分析

测试环境:

PC OS: Ubuntu20.04 LTS

CPU: 自研CPU(ARCH=riscv64,ISA=rv64imafdc)

Kernel: CPU使用的内核为Linux4.15

CoreMark: CoreMark v1.01

GNU: riscv64-unknown-linux-gnu

1、CoreMark简介

CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)的Shay Gla-On于2009年提出的一项基准测试程序,CoreMark的主要目标是简化操作,并提供一套测试单核处理器核心的方法。测试标准是在配置参数的组合下单位时间内运行的CoreMark程序次数(单位:CoreMark/MHz),该数字值越大则说明测试的性能越好。

目前在嵌入式CPU行业中普遍公认的性能测试指标的标准主要使用以下三种,MIPS、Dhrystone、Coremark,而CoreMark与Dhrystone一样,拥有体积小、方便移植、易于理解、免费并且显示单个数字基准分数。与Dhrystone不同的是,Dhrystone的主要部分实际上暴露了编译器优化工作负载的能力,而不是实际MCU或CPU的能力,的性能,而CoreMark具有特定的运行和报告规则,从而可以避免由于所使用的编译库不同而导致的测试结果难以比较。

2、获取源码

EEMBC在将CoreMark源码托管在GitHub上可以访问github.com/eembc/coremark直接点击下载获得源码;也可以通过git命令下载到本地。

imaginemiracle@:Download$ git clone https://github.com/eembc/coremark.git

imaginemiracle@:Download$ cd coremark/

imaginemiracle@:coremark$ ls

barebones core_main.c coremark.md5 core_state.c cygwin freebsd linux macos README.md simple

core_list_join.c coremark.h core_matrix.c core_util.c docs LICENSE.md linux64 Makefile rtems

CoreMark项目的详细介绍,可以查阅当前目录下“coremark/docs/html/index.html”。该项目以下是当前目录的个文件介绍:

#在tree命令的输出中,作了部分删除(不影响分析整个CoreMark工程)

imaginemiracle@:coremark$ tree

.

├── barebones --移植到裸机环境下需要修改的目录

│ ├── core_portme.c--移植的目标平台配置信息

│ ├── core_portme.h--计时以及板级初始化实现

│ ├── core_portme.mak--该子目录的makefile

│ ├── cvt.c

│ └── ee_printf.c--打印函数串口发送实现

├── core_list_join.c--列表操作程序

├── core_main.c--主程序

├── coremark.h--项目配置与数据结构的定义头文件

├── coremark.md5

├── core_matrix.c--矩阵运算程序

├── core_state.c--状态机控制程序

├── core_util.c--CRC计算程序

├── cygwin--x86 cygwin和gcc 3.4(四核,双核和单核系统)的测试代码

│ ├── core_portme.c

│ ├── core_portme.h

│ └── core_portme.mak

├── freebsd--以下同理,是在不同操作系统下的测试代码

│ ├── ...

├── LICENSE.md

├── linux

│ ├── ...

├── linux64

│ ├── ...

├── macos

│ ├── ...

├── Makefile

├── README.md--自述文件,CoreMark项目的基本介绍

├── rtems

│ ├── ...

└── simple

├── ...

└──

3、移植到riscv64架构

[注]:若移植的平台是ARM Cortex-M系列的裸机系统,只需要修改“coremark/barebones”目录下的文件即可。

将当前目录下riscv64分支:

imaginemiracle@:coremark$ cp -rf linux64/ riscv64

imaginemiracle@:coremark$ vim riscv64/core_portme.mak

修改CC为riscv64-unknown-linux-gnu-gcc即可(默认已经配置好riscv64-linux-gnu工具链,有很多优秀的博客介绍了riscv chaintool的编译安装过程可以自行查阅参考):

#core_portme.mak文件

OUTFLAG= -o

# Flag: CC

# Use this flag to define compiler to use

# ===========================Alter by me===========================

CC = riscv64-unknown-linux-gnu-gcc

# ============================End Alter============================

# Flag: CFLAGS

# Use this flag to define compiler options. Note, you can add compiler options from the command line using XCFLAGS="other flags"

PORT_CFLAGS = -O2

FLAGS_STR = "$(PORT_CFLAGS) $(XCFLAGS) $(XLFLAGS) $(LFLAGS_END)"

CFLAGS = $(PORT_CFLAGS) -I$(PORT_DIR) -I. -DFLAGS_STR="$(FLAGS_STR)"

#Flag: LFLAGS_END

# Define any libraries needed for linking or other flags that should come at the end of the link line (e.g. linker scripts).

# Note: On certain platforms, the default clock_gettime implementation is supported but requires linking of librt.

LFLAGS_END += -lrt

# Flag: PORT_SRCS

# Port specific source files can be added here

PORT_SRCS = $(PORT_DIR)/core_portme.c

LOAD = echo Loading done

RUN =

OEXT = .o

# ===========================Alter by me===========================

EXE = .rvexe

# ============================End Alter============================

4、编译生成coremark.rvexe

编译命令:

imaginemiracle@:coremark$ make PORT_DIR=riscv64

编译结果如下,会出现错误。

./coremark.rvexe 0x0 0x0 0x66 0 7 1 2000 > ./run1.log

/bin/sh: 1: ./coremark.rvexe: Exec format error

make[1]: *** [Makefile:112: run1.log] Error 2

make[1]: Leaving directory '/media/imaginemiracle/Disk_D/Linux_Workspace/riscv-project/File_System_test/sifive_coremark/test/coremark'

make: *** [Makefile:99: rerun] Error 2

imaginemiracle@:coremark$ file coremark.rvexe

coremark.rvexe: ELF 64-bit LSB executable, UCB RISC-V, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, for GNU/Linux 3.0.0, with debug_info, not stripped

仔细查看该错误并不是编译过程发生的错误,而是在运行编译出的coremark.rvexe报错,答案是肯定的,因为该可执行文件的架构是riscv64,而当前环境架构是x86。

5、在目标平台上运行coremark.rvexe测试性能

下图是在我们自研CPU上CoreMark的测试结果,其中Iterations/Sec就是在跑分榜上CoreMark的值,根据该值和其它参数可以对比各微处理器的性能。

cb3ccc41f7c8b3a53c702e90464a31b4.png

6、CoreMark跑分榜

目前可以看到EEMBC已经上传了592款型号的微控制器CoreMark跑分结果,可以在EEMBC的coremark/scores里看到。(注:下图获取时间为2020-12-31)

e23e7705628a3965e9e4be85f3b43e3b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值