amobbs.com 阿莫电子技术论坛

标题: 意外发现,Cortex-M7的性能和诸多关键参数碾压A7和R7 [打印本页]

作者: bluelucky    时间: 2017-6-24 23:41
标题: 意外发现,Cortex-M7的性能和诸多关键参数碾压A7和R7
本帖最后由 bluelucky 于 2017-6-24 23:47 编辑

之前一直以为ARM, A-R-M, M排在最后也最便宜,肯定性能最低,但最近意外发现并非如此,M7居然完全碾压R7和A7!
如下表所示,我从ARM网站,eembc.org网站查到的结果,竟然发现M7的性能比A7和R7都强

从表中可以看出,M核性能、实时性、成本和能效最高, R核的总线带宽更高还支持多核, A核带MMU可以跑Linux, Android。另一个没有列出的是M核响应中断最快捷。
看来NXP, ST, Atmel积极发展M7产品还是对的。NXP最狠,做了600MHz M7的i.MX RT,还屌丝价 <3$/片 @ 10k量。
分析了一下,感觉有以下原因。               
1: Cortex-A系列CoreMark反而最低,估计主要是没有TCM, 而Dcache命中率很难高上去(相比之下,Icache的命中率却往往很高,对于大多核心算法甚至高达100%)。另一方面, A和R的跑分不如预期,可能也受其过长的流水线影响,分支预测失败时重装填流水线付出了较大代价。当然了,流水线级数多才能飙主频。
2: R7,A9的CoreMark不如M7, 但DMIPS比M7好,说明测试基准影响还是明显的。显然CoreMark对基于TCM的实时性能更有亲和性,对基于Cache的平均性能更有破坏性
3:带TCM的核(R#,M7)均有一个总线slave接口供DMA存取TCM. 当然了,DMA这头会有等待周期,并且只有在CPU不访问TCM时才理会DMA。
4: ECC和双核锁步都是与safety(也称为安全,但注意和security是不同的意思)有关的。ECC通过在RAM中加入额外的bit检查和纠正RAM中的数据错误;双核锁步(lockstep)则是两个完全相同的核给予完全相同的激励,期待完全相同的响应,以确信CPU在正常工作。这类土豪的用法只出现在使命关键(safety critical)类系统中,比如草上飞的,云里走的,浪里破的,救人命的… M7也支持这两项,这是要革R系列中低端产品的命啊

这都是我个人在对CPU理解层次上的猜测,不太有信心,希望有高人指正

作者: takashiki    时间: 2017-6-25 07:08
看了上面的表,有几个问题,感觉以前看了假的宣传:

1、IAR CoreMark比armcc低10%,然而,大家都说IAR优化更好
2、R系列:R5比A5占用的面积还大,R7比A7占用的面积还大;R系列明显CoreMark和主频比同代A系列主频高
3、同代R系列的流水线比A系列要长
通篇对比下来,除了没有MMU和SIMD以外,R系列分分钟干死同代A系列的节奏。然而,我基本上都没听说过R系列的消息……
作者: bluelucky    时间: 2017-6-25 07:46
IAR在Cortex-M上确实是跑分神器。但是Cortex-A上的表现被追上,或许和IAR深耕MCU和ARM在A系列上编译器开发更专注有关。
R系列其实是低调的小霸主,在硬盘,modem, 和一些safety-critical的应用中还是很受欢迎的。但现在看起来确实被A和M两面夹击。
其实R系列和A的架构是兼容的,就是A系列上的分支出来的,M则自成一派。
从上面数据看,我倒是觉得要是M带了MMU和SIMD,才是要革所有中低端R和A的命
作者: dellric    时间: 2017-6-25 11:43
bluelucky 发表于 2017-6-25 07:46
IAR在Cortex-M上确实是跑分神器。但是Cortex-A上的表现被追上,或许和IAR深耕MCU和ARM在A系列上编译器开发 ...

M带了MMU编程就没那么简单了,就是必须上高档操作系统才能匹配,但那个就是A了
作者: xycfwrj    时间: 2017-6-25 13:05
dsp 就是因为有l2 data ram性能很容易做上去,m7有tcm确实是走在正确的道路上
作者: bluelucky    时间: 2017-6-25 15:42
A的MMU是必配的,若是M的MMU可以选配,那才有意思。既能当MCU又能当MPU。
作者: boyiee    时间: 2017-6-25 19:33
不是这么对比的,首先A9已经是好多年前的内核了,现在的都是A73了。

差别很大的,A系列针对的是复杂的应用环境,不是M7这样单片机的简单逻辑的计算,乱序和顺序的差别也非常大,
其他不说,A8 A9的性能差别就非常大,实际测试过AM335和IMX6S,同样的运行于800Mhz,针对同一个USB摄像头图像处理的软件性能表现相差一倍多,这其中内存带宽,处理器自带的NEON,浮点处理器,L1,L2缓存等都影响很大,不能从单个coremark来说处理器性能。
作者: bluelucky    时间: 2017-6-25 20:24
确实,CoreMark还是非常简单的程序,只能相当于一个“血常规”的检查。其它因素,像NEON, SMP, L2, 乱序, 第5代AMBA和双主接口,这些因素还是很能影响复杂应用的综合性能的。
只是想来,如果一个CPU设计的能够兼顾不同场景并精于某一类,还是对很多开发要求提供有力的支持的。
作者: 下一页    时间: 2017-6-25 23:36
dellric 发表于 2017-6-25 11:43
M带了MMU编程就没那么简单了,就是必须上高档操作系统才能匹配,但那个就是A了 ...

就是这么回事,不能单看速度啊之类的指标,指令集和功能差异也很大,速度再快的risc也没法和cisc比运算能力。多慢的电脑,跑安卓也没压力。
作者: lw32    时间: 2017-6-26 09:22
看了上面的结果,怎么感觉GCC的编译那么渣
作者: cheungman    时间: 2017-6-26 09:34
期待m7有一天能支持NEON
作者: bluelucky    时间: 2017-6-26 10:54
Intel的CISC其实现在微架构都是翻译成RISC执行的。
GCC一如既往不擅长跑分,不知真实性能是不是这么渣。有一点我可以肯定,GCC在code size上的表现是真正的渣渣,有时导致客户被迫选择大Flash的器件或咬牙买商业开发工具。
A核的诸多特性其实也受边际效应递减的影响:付出很大的面积和功耗代价但性能提供并不相称。最典型的就是乱序。同一系列(如R5,R7,A7,A9)乱序和顺序的表现相差不大。
作者: myxiaonia    时间: 2017-6-26 11:11
上次试用segger的编译器,开最高优化后看看反汇编,寄存器优化太烂了,很多可以用寄存器副本运算的它就喜欢访存,果断删除
作者: zchong    时间: 2017-6-26 12:00
楼主的图来源哪里?
作者: RAMILE    时间: 2017-6-26 13:01
本帖最后由 RAMILE 于 2017-6-26 13:18 编辑
superAFE 发表于 2017-6-26 11:10
看过LZ翻译的《CM3...指南》,对当年学stm32F103帮助很大。


LZ作为NXP的AE,听了会感到蛋蛋的忧伤  
作者: xwkm    时间: 2017-6-27 08:36
下一页 发表于 2017-6-25 23:36
就是这么回事,不能单看速度啊之类的指标,指令集和功能差异也很大,速度再快的risc也没法和cisc比运算能 ...

现在IBM的POWER还是略微领先X86的。还有A72和ATOM比性能也是很不错的~

RISC/CISC只是ISA,性能上微结构才是关键~
作者: bluelucky    时间: 2017-6-27 09:32
to 13楼: 谢谢! 我在这方面特别感激ARM的大神Joseph,他直到现在也仍然笔耕不缀
to 15楼: 是我自己做的表,从ARM和eembc.org查的数据,有的数据在ARM最新的网站上已经没有了,从别的地方搜出的过去曾刊登的数据。
to 16楼: 不会呀,我其实也是用STM32出道的,只是想追逐点新鲜刺激才换用了LPC做个项目结果就上船了...
其实业界很小,台上的竞争对手台下也往往是老同事或老相识,只是各为其主,互相促进




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4