|
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是微控制器CPU性能测试基准CoreMark。
* z5 D: i/ ?9 x1 x- N在嵌入式系统行业用于评价CPU性能指标的标准主要有三种:Dhrystone、MIPS、CoreMark,其中CoreMark是一种新兴流行的嵌入式系统处理器测试基准,被认为是比Dhrystone和MIPS更具有实际价值的测试基准。今天痞子衡就和大家详细聊一聊CoreMark。
' j f: }4 J( F( b' I, L9 n Z7 {一、EEMBC协会在讲CoreMark之前,必须要先提EEMBC(Embedded Microprocessor Benchmark Consortium)即嵌入式微处理器基准评测协会,它是一个非盈利性组织,该组织目前共发布了46个性能测试基准,有了这些性能基准参考,嵌入式设计人员可以快速有效地选择处理器。; P1 k3 e& I) D$ i2 i/ u$ x n
EEMBC测试是基于每秒钟算法执行的次数和编译代码大小的综合统计结果。众所周知,编译器选项会对代码大小和执行效率会产生巨大的影响,所以每种测试必须包括足够多的编译器信息并设置不同的优化项。; |: y9 t0 ? m* D: f
EEMBC发展势头很好,其很有可能发展成为嵌入式系统开发人员进行处理器和编译器性能比较的工业标准。关于EEMBC的更多介绍可移步它的官方网站 http://www.eembc.org/
" w+ G+ o' p5 O# J6 |3 Y二、CoreMark标准CoreMark是由EEMBC的Shay Gla-On于2009年提出的一项基准测试程序,其主要目标是测试处理器核心性能。( E' d( E- h* ?& {$ K
CoreMark标准的测试方法很简单,就是在某配置参数组合下单位时间内跑了多少次CoreMark程序,其指标单位为CoreMark/MHz。CoreMark数字越高,意味着性能更高。
7 T8 y! [8 S4 B% B8 l( @6 Q2.1 获取程序CoreMark程序的目前最新版本是1.01。
9 A& k# @! ]/ E. B; P2 @核心程序下载 http://www.eembc.org/coremark/download.php
( S! O& C) \: i9 h平台移植示例 http://www.eembc.org/coremark/ports.php: I, w& }* C2 f3 |5 `5 f- S% R# _
核心程序包下载后,在\coremark_v1.0\readme.txt里可见基本介绍,在\coremark_v1.0\docs\Coremark-requirements.doc里可见设计需求。详细文件目录如下:
( E3 N1 p. F. V& s* @9 e. x\coremark_v1.0* }) L/ k0 f* f* U' A0 u$ A; ^
\barebones --移植到裸机下需要修改的文件
# n: x: s* @ f# @8 r \core_portme.h -- 移植平台工程具体配置信息
6 c( u5 \" m7 i, \4 \) U) s; Z. @ \core_portme.c -- 计时以及板级初始化实现 / `7 k ~7 ~7 l* |7 Y
\cvt.c9 L8 j9 e! p! M5 S( ~/ |8 L8 `
\ee_printf.c -- 打印函数串口发送实现
5 z1 f" ?$ ]0 g1 c, R! O \cygwin --移植到cygwin下需要修改的文件: x7 U; h8 A, a# j: U; R
\linux --移植到linux下需要修改的文件- s. G; e b# E3 ~. @; X5 p
\linux64 --移植到linux64下需要修改的文件
, O3 x a6 m$ v2 l4 H- R \simple --基本移植需要修改的文件
0 X, y& U" F3 U4 W core_main.c --主程序入口
" F7 X N# ~, L* I, l4 ^ core_state.c --状态机控制子程序
6 v, I' p6 ?0 f core_list_join.c --列表操作子程序4 s/ Y- v5 p( H8 p' a5 S
core_matrix.c --矩阵运算子程序0 N; f7 @) |: s8 O$ E% U
core_util.c --CRC计算子程序
: g9 M9 r# D9 R/ ^$ I" _1 I coremark.h --工程配置与数据结构定义! y; b" t2 i( e3 m% T! p
\docs --设计文档
8 ]8 ~ S' j/ W# ` coremark.md5! I. m! O" @ |9 _6 l
LICENSE.txt
: ~+ L* _* x/ e7 ] b' _" j% Q3 z' R Makefile) A. s8 A5 Y: D2 Q
readme.txt --基本介绍
* X& D. ~- L: \" [+ q% \6 T# c1 a release_notes.txt --版本说明
/ B3 M k0 h# v+ |: x( f如果是移植到ARM Cortex-M平台下裸系统运行,一般只需要修改\barebones目录下的文件即可(仅需改动三个函数portable_init()、barebones_clock()、uart_send_char()以及core_portme.h中若干宏定义),其余代码文件不需要修改。关于\barebones下的文件修改,EEMBC上有如下4个示例平台可参考: |
|