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 MhzCoreMark/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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章