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
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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.