本帖最后由 wolfgang2015 于 2018-1-12 10:33 编辑 # S" o0 n) V, D- D7 N8 F3 i 年末了,工作的事情终于告一段落,这几天有空了,又刚好碰到F769I-Disco系列的评测活动,发现即便同一芯片和板子跑出来的Coremark 分值也参差不齐,有高有低。周末把自己宅在家里一天,用自己的环境和手边的几个Nucleo板子做几个简单的跑分测试。然后通过自己的跑分同其他网友的跑分以及官方的跑分做对比、参考看看是否有什么问题造成了各自跑分不同 & @7 a" C3 M# R- T: B5 c! C8 h# f 直道目前,ST推出了超低功耗、主流型、超高性能型几系列的芯片 ( D6 a; u+ R0 r3 j* {4 v 同时官方也给除了自己的Coremark F0/F1/F3主流系列的Coremark 分值如下图: ; s# m/ z- v: O, D L0/L1/L3超低功耗系列的Coremark 分值如下图:5 W. V, ?6 z( p7 e5 y( ?& V- d F2/F4/F7超高性能系列的Coremark 分值如下图:3 R" ~5 P/ a* F% a ) ?) y$ k. [2 i9 z 我这里板卡有限,有的还在做其他的开发试验这里就先做了几个Nucleo开发板的评测:. z% W: p7 H8 u* Q : P1 x1 |* n: n$ p( {# g; ^ Nucleo-F030R8 CoreMark 1.0 : 76.456107 参考官方跑分:106(同主频)跑分对比:72.13%& ~/ k( F* b- p# v3 M Nucleo-F401RE CoreMark 1.0 : 217.959895 参考官方跑分:604(180MHz)不具对比性 Nucleo-F767ZI CoreMark 1.0 : 901.117386 参考官方跑分:1082(同主频) 跑分对比:83.28% 6 v( o N9 J/ t* l6 O! B, t Nucleo-L073RZ CoreMark 1.0 : 55.522653 参考官方跑分:75(同主频) 跑分对比:74.03%5 g& g' H3 w1 @( n) d Nucleo-L432KC CoreMark 1.0 : 205.581539 参考官方跑分:273(同主频) 跑分对比:75.30% Nucleo-F413ZH CoreMark 1.0 : 259.197180 参考官方跑分:604(180MHz)不具对比性* c" C+ Q4 ^) W, |3 T' T9 i 基本上均为官方跑分的72%~75% ,性能相差近1/4。F7性能最接近在83.28左右比其他的跑分高10%左右,,不知道这是不是得益于芯片的性能提升和大缓存技术,平滑了编译器优化等级带来的影响。6 b/ s& f$ J) C2 N" N7 a1 K# ]1 m& D 排除了验证方法的差异后,其实可以得出这样的一个结论: + d8 S1 G) F* S6 t/ `4 y$ _/ s( h 评测跑分的工具——GCC编译器存在着差异; N, z9 L0 I! p _ 5 D3 q/ n9 _1 a0 C : R+ p$ R |8 U) t0 b 跑分对编译器的优化等级 -O 参数有严重倚赖,各位所使用的ARM编译工具属于以下三大体系中的一种 1、ARM RealView (armcc) 其代表工具是:Keil MDK7 F+ Q* A& f: z* I 优化等级能到 -O39 [$ X( [& Z/ ]- H; ]/ P 2、IAR EWARM (iccarm) 其代表工具为:IAR Embedded Workbench 优化等级能到 -Ohs (height speed)2 z! S. g* M- ?9 Z 3、GNU Compiler Collection (gcc) 代表工具就是:Eclipse + Ac6 / Linux + arm-none-eabi 优化等级能到 -O3 我的评测环境刚好就是第三种,如果参考网友与官方接近的跑分所使用的工具为IAR Embedded Workbench,那么可以简单的推测出,在IAR -Ohs 编译环境下,能将ST芯片的性能发挥到最大。GNU Compiler Collection -O3的优化能达到到 IAR -Ohs的3/4左右的分值;跟IAR 在-O3 的优化能力差不多;ARM RealView -O3 的优化能力也仅有-Ohs 3/4 左右。 但不过IAR的-Ohs优化牺牲了些什么,从这个评测中还无法得知。只能希望对编译器有更深入了解的网友来解答,或者通过其他的评测内容来对各种编译器的性能作一个数据说明。1 W0 M: v/ ~' a. E % }) b+ B' H: T( ]) u( h 三种编译工具,是由不同的编译厂家/爱好者制作,其编译器编译出来的代码大小、执行效率是不同,即便在同一款主板上执行,执行的结果也是不样的。: V4 v" Y" q! j* ?- x b$ k ; E! F" t3 ~/ V* V+ g& O) T' l 跑分只是一个我们了解编译器、了解主板芯片性能的一个直观表现,这个结果可为我们选择编译器提供了参考和借鉴。在什么样的环境下用什么样的编译器提供一些直观体验。* V# o$ J% N, e% x. S 8 n2 J j0 Y( J, b$ [: | 功欲善其事,必先利其器。评测的结果测得了对开发板的了解,对开发工具的了解,还是很值得的。希望大家能利用自己手边的板子加入到相关评测活动中,能从侧面对ST芯片和主板有深入一点的了解,也能对工具了解深入一步。 & I) X3 P% p% X6 }3 i2 y$ I9 j6 I+ w + E$ ^2 ~, h' P/ R. E0 X( _) Q 相关评测文档参考:+ z2 [, l% j' V+ r3 U, y [Coremark跑分评测] Nucleo-L073RZ Coremark跑分" K$ l/ ~! W$ X [Coremark跑分评测] Nucleo-L432KC Coremark跑分* K' D9 O2 o4 s# I' ? [Coremark跑分评测] Nucleo-F030R8 Coremark跑分 [Coremark跑分评测] Nucleo-F401RE Coremark跑分 4 d5 ~2 e0 D) d$ }6 y [Coremark跑分评测] Nucleo-F767ZI Coremark跑分 7 r5 E& ]6 [! V [Coremark跑分评测] Nucleo-F413ZH Coremark跑分 / S7 V, A$ f6 B* F- ?1 r4 H : Z0 g5 X1 E$ Q. s9 i* }1 z , x/ V& V, S1 Q( ~0 S# ^6 z6 s0 C: R$ R8 N . h; Q! E. V _# h1 \1 N! w 3 ?/ {- |% o" _4 b 5 @6 a5 I- Q% I9 x - N3 Z& m; Q# ~* u , y+ o3 H: E3 ~5 Q4 j' {7 u ; G Z& `- Y* I. @" `1 _ |
只是这点跑分上得出相对高点,其他的相关编译器规范指标,还无从得知。有些性能的提升会牺牲编译后的代码段长度,牺牲浮点运算,当然没有浮点运算的CPU自然不会,这仅仅是个跑分测试,如果是多信号的计算验证,相同时间内,或者一定时间内谁的计算结果接近于样本值,这才是考验MCU计算能力主要表现。
o, m" s7 M- J1 V' }% H
要不别人也不会推出这么好的开发工具。
楼主如果有时间可以将一段代码在三个编译器上都编译一下,然后看一下汇编代码部分,进行对比。
为楼主向技术的根里刨的精神点赞!!!
一起袍,一起学习。
过奖了,一些皮毛,对那些吃透编译器的人来说,就多想了一些而已。$ j) N* A; O7 A5 i+ i
一起学习
,无回帖,不论坛. v" V& D+ f$ @3 [9 h" X5 @- l