CoreMark

CoreMark
http://www.eembc.org/
http://www.eembc.org/coremark/download.php
CoreMark是用来衡量嵌入式系统中中心处理单元(CPU,或叫做微控制器MCU)性能的标准。
该标准于2009年由EEMBC组织的Shay Gla-On提出,并且试图将其发展成为工业标准,从而代替陈旧的Dhrystone标准。
代码使用C语言写成,包含如下的运算法则:列举(寻找并排序),数学矩阵操作(普通矩阵运算)和状态机(用来确定输入流中是否包含有效数字),最后还包括CRC(循环冗余校验)。


Version 1.01
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 522683  (core_portme.c 需传入ticks, 7687 HAL_GPT_CLOCK_SOURCE_32K)
Total time (secs): 16.334  (Total_ticks/source_clocl_per_sec_32K)
Iterations/Sec   : 306.11  (CoreMark Score)
Iterations       : 5000    (算法迭代次数)
Compiler version : GCC5.3.1 20160307 (release) [ARM/embedded-5-branch revision 234589]
Compiler flags   : -Os
Memory location  : STATIC
seedcrc          : 0xe9f5
[0]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[0]crcfinal      : 0xbd59
Correct operation validated. See readme.txt for run and reporting rules.
cjson_test completed


http://www.eembc.org/coremark/index.php 中的processor result data如下
Processor    Operating Speed in Mhz CoreMark/MHz (1) CoreMark
Core i7 860         2800              5.94        16622.34
STM32L476                 80              3.32          265.61 
(7687主频 200MHz)


Porting layer:
core_portme.h/c   barebones/cygwin/linux/linux64/simple
—— Compiler_flags
     Iterations number
     MEM_LOCATION ("xip" memory_static)
     HAS_PRINTF 1 HAS_STDIO 1 (#define ee_printf printf)
     HAS_FLOAT 1
     USE_CLOCK 0 HAS_TIME_H 0
     MULTITHREAD 1
     MAIN_HAS_NOARGC 1  MAIN_HAS_NORETURN 1 (Core_main function)
     seed5_volatile 5 (results[0].execs ALL_ALGORITHMS_MASK)
     PERFORMANCE_RUN 1 (seed123 0x0 0 66)(PROFILE_RUN VALIDATION_RUN other seed123)
     #define SEED_METHOD SEED_VOLATILE (seed4 in hard_code, not SEED_FUNC SEED_ARG)
     #define MEM_METHOD MEM_STATIC (global var, 不是MEM_MALLOC MEM_STACK)


     SOURCE_TICKS
     #define CLOCKS_PER_SEC 1000000


Run Rules
What is and is not allowed.
Required
1 The benchmark needs to run for at least 10 seconds.
2 All validation must succeed for seeds 0,0,0x66 and 0x3415,0x3415,0x66, buffer size of 2000 bytes total.
If not using command line arguments to main:
make XCFLAGS="-DPERFORMANCE_RUN=1" REBUILD=1 run1.log
make XCFLAGS="-DVALIDATION_RUN=1" REBUILD=1 run2.log
3 If using profile guided optimization, profile must be generated using seeds of 8,8,8, and buffer size of 1200 bytes total.
make XCFLAGS="-DTOTAL_DATA_SIZE=1200 -DPROFILE_RUN=1" REBUILD=1 run3.log
4 All source files must be compiled with the same flags.
5 All data type sizes must match size in bits such that:
ee_u8 is an 8 bits datatype.
ee_s16 is an 16 bits datatype.
ee_u16 is an 16 bits datatype.
ee_s32 is an 32 bits datatype.
ee_u32 is an 32 bits datatype.
Allowed
Changing number of iterations
Changing toolchain and build/load/run options
Changing method of acquiring a data memory block
Changing the method of acquiring seed values
Changing implementation in core_portme.c
Changing configuration values in core_portme.h
Changing core_portme.mak
Not allowed
Changing of source file other then core_portme* (use make check to validate)






    ARM-GCC 5.3:
https://launchpad.net/gcc-arm-embedded/+download  release.txt

你可能感兴趣的:(嵌入式)