EEMBC 的 CoreMark? 評(píng)分是一種比較通用的基準(zhǔn)測(cè)試方式,用于測(cè)量嵌入式系統(tǒng)中使用的微控制器(MCU)和中央處理單元(CPU)的性能,可以幫助人們比較不同的 CPU 架構(gòu)的性能表現(xiàn)。
CoreMark 基準(zhǔn)評(píng)分特點(diǎn)
CRC 算法具有雙重功能,在鏈表元素中包含的數(shù)據(jù)上執(zhí)行16位CRC,以驗(yàn)證操作正確,保證操作正確并提供自我檢查機(jī)制。
為了確保編譯器不能在編譯時(shí)預(yù)先計(jì)算結(jié)果,基準(zhǔn)測(cè)試中的每個(gè)操作都會(huì)產(chǎn)生一個(gè)在編譯時(shí)不可用的值。此外,基準(zhǔn)測(cè)試中定時(shí)部分使用的所有代碼都是基準(zhǔn)測(cè)試本身的一部分(沒(méi)有庫(kù)調(diào)用)。
CoreMark 是一種基于 C 語(yǔ)言的 CPU 性能評(píng)測(cè)工具,其目標(biāo)是為了提供一個(gè)可重復(fù)、可移植且各平臺(tái)間性能得分可比較的基準(zhǔn)測(cè)試。CoreMark 包含多個(gè)小型測(cè)試,旨在模擬實(shí)際應(yīng)用程序中常見(jiàn)的操作和趨勢(shì)。
一、下載&編譯
既然基于C,那就直接在板上編譯好了。git clone https://github.com/eembc/coremark.git直接把代碼從gethub上擼下來(lái),可能網(wǎng)絡(luò)故障,需要多試幾次。
本地編譯好辦,先看看gcc版本。
linaro@linaro-alip:~/coremark$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/8/lto-wrapper Target: aarch64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 8.3.0-6' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --disable-libphobos --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu Thread model: posix gcc version 8.3.0 (Debian 8.3.0-6)
免去交叉編譯的麻煩,直接make即可。
linaro@linaro-alip:~/coremark$ make make XCFLAGS=" -DPERFORMANCE_RUN=1" load run1.log make[1]: Entering directory '/home/linaro/coremark' make port_prebuild make[2]: Entering directory '/home/linaro/coremark' make[2]: Nothing to be done for 'port_prebuild'. make[2]: Leaving directory '/home/linaro/coremark' make link make[2]: Entering directory '/home/linaro/coremark' cc -O2 -Ilinux -Iposix -I. -DFLAGS_STR=""-O2 -DPERFORMANCE_RUN=1 -lrt"" -DITERATIONS=0 -DPERFORMANCE_RUN=1 core_list_join.c core_main.c core_matrix.c core_state.c core_util.c posix/core_portme.c -o ./coremark.exe -lrt Link performed along with compile make[2]: Leaving directory '/home/linaro/coremark' make port_postbuild make[2]: Entering directory '/home/linaro/coremark' make[2]: Nothing to be done for 'port_postbuild'. make[2]: Leaving directory '/home/linaro/coremark' make port_preload make[2]: Entering directory '/home/linaro/coremark' make[2]: Nothing to be done for 'port_preload'. make[2]: Leaving directory '/home/linaro/coremark' echo Loading done ./coremark.exe Loading done ./coremark.exe make port_postload make[2]: Entering directory '/home/linaro/coremark' make[2]: Nothing to be done for 'port_postload'. make[2]: Leaving directory '/home/linaro/coremark' make port_prerun make[2]: Entering directory '/home/linaro/coremark' make[2]: Nothing to be done for 'port_prerun'. make[2]: Leaving directory '/home/linaro/coremark' ./coremark.exe 0x0 0x0 0x66 0 7 1 2000 > ./run1.log make port_postrun make[2]: Entering directory '/home/linaro/coremark' make[2]: Nothing to be done for 'port_postrun'. make[2]: Leaving directory '/home/linaro/coremark' make[1]: Leaving directory '/home/linaro/coremark' make XCFLAGS=" -DVALIDATION_RUN=1" load run2.log make[1]: Entering directory '/home/linaro/coremark' make port_preload make[2]: Entering directory '/home/linaro/coremark' make[2]: Nothing to be done for 'port_preload'. make[2]: Leaving directory '/home/linaro/coremark' echo Loading done ./coremark.exe Loading done ./coremark.exe make port_postload make[2]: Entering directory '/home/linaro/coremark' make[2]: Nothing to be done for 'port_postload'. make[2]: Leaving directory '/home/linaro/coremark' make port_prerun make[2]: Entering directory '/home/linaro/coremark' make[2]: Nothing to be done for 'port_prerun'. make[2]: Leaving directory '/home/linaro/coremark' ./coremark.exe 0x3415 0x3415 0x66 0 7 1 2000 > ./run2.log make port_postrun make[2]: Entering directory '/home/linaro/coremark' make[2]: Nothing to be done for 'port_postrun'. make[2]: Leaving directory '/home/linaro/coremark' make[1]: Leaving directory '/home/linaro/coremark' Check run1.log and run2.log for results. See README.md for run and reporting rules.
生成coremark.exe ,奇怪了,這種.exe命名不是windows才有的嗎?Linux/GNU很少用這種方式。anyway,先看看可執(zhí)行文件。
linaro@linaro-alip:~/coremark$ file coremark.exe coremark.exe: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=ba590f0bbe7fe0273ccd6026c9fa18352507e4c0, not stripped
二、跑分
./coremark.exe跑跑,估計(jì)等過(guò)10s的樣子。
GCC8.3.0 -O2 -lrt / Heap 級(jí)別上,跑了接近7000分。
三、對(duì)比
這個(gè)成績(jī)?cè)趺礃幽???lái)對(duì)比下。
對(duì)比起來(lái)還是挺不錯(cuò)的,再來(lái)看看常見(jiàn)開(kāi)發(fā)板的跑分情況。
審核編輯 黃宇
-
測(cè)試
+關(guān)注
關(guān)注
8文章
5269瀏覽量
126598 -
基準(zhǔn)測(cè)試
+關(guān)注
關(guān)注
0文章
19瀏覽量
7585 -
編譯
+關(guān)注
關(guān)注
0文章
657瀏覽量
32852 -
RK3566
+關(guān)注
關(guān)注
0文章
145瀏覽量
4824
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論