打印

STM32F4是迄今性能最高的以CM4为核心的MCU

[复制链接]
31943|101
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
根据Coremark测试评估和Dhrystone测试评估,STM32F4是迄今性能最高的以CM4为核心的MCU。

程序运行于168MHz主频时,通过Flash取指令(不是内部SRAM),Dhrystone测试得到210DMIPS,Coremark测试得到363分。

Dhrystone_Result_STM32F4_CN.gif (43 KB )

Dhrystone_Result_STM32F4_CN.gif

Coremark_Result_STM32F4_CN.gif (81.71 KB )

Coremark_Result_STM32F4_CN.gif
来自 2楼
香水城|  楼主 | 2011-9-19 21:42 | 只看该作者
达到这一高性能的秘密在于ART实时加速器。

我们知道,CPU的速度肯定要比外部存储器的速度快很多,比如我们现在使用的PC机,CPU的速度已经达到了超过2~3GHz,而即使是最快的DDR3 SDRAM的时钟频率也不过1GHz左右,所以才出现了各种各样的缓存技术,例如L1、L2甚至L3缓存。

在以Flash作为存储器的MCU中,也存在CPU的速度高于程序存储器的问题,STM32F2和STM32F4的MCU使用了ST特有的ART加速器,可以最大限度地消除Flash存储器较慢从而限制MCU性能的影响,经过ART加速器的加速,CPU可以在所有工作频率下以近乎零等待的方式,从Flash中运行程序。

ART的工作原理是这样的:每次读出Flash中的指令和数据的宽度是128位;在Flash与CPU之间的取指通道上,有64个128位的缓存。当CPU顺序地从Flash取指令时,由于Flash的数据通道宽度大大超过一条指令的长度,所以除了刚开始阶段,CPU需要等待Flash取指令,随后CPU则不需再等待。但是当程序需要进行跳转时,CPU还是需要等待Flash以获得指令;在STM32F2或STM32F4中,当程序需要跳转时,会首先查看上述64个128位的缓存是否有已经存储的跳转目标的指令,如果已经存在目标地址的指令,则直接执行而不需等待;如果这64个缓存中没有目标地址的指令,则CPU需要等待Flash取出新地址的指令,在执行新取出指令的同时,这些指令会被送入64个缓存之一供下次跳转时使用。这种缓存机制,非常适合循环程序的运行,CPU执行一个循环的第一次时需要等待Flash取指令,但随后CPU就不需等待了,实现真正的零等待执行!

对于从Flash中取常数的操作,ART加速器设置了8个128位的数据缓存,工作原理与上述的指令缓存一样。这个数据缓存特别适合于Cortex-M的编译器所使用的Constant Pool技术。

STM32_ART_Accelerator.gif (89.12 KB )

STM32_ART_Accelerator.gif

使用特权

评论回复
板凳
116291151| | 2011-9-19 21:15 | 只看该作者
wsm

使用特权

评论回复
地板
z_zt| | 2011-9-19 21:25 | 只看该作者
学习!多谢多谢!

使用特权

评论回复
5
mcuisp| | 2011-9-20 01:42 | 只看该作者
本帖最后由 mcuisp 于 2011-9-20 01:44 编辑

令人神往的产品。
已经达到甚至超过了arm9的水平了。

MCU N==NXP
MCU F==FreeScale
MCU R==?

使用特权

评论回复
6
一览| | 2011-9-20 08:48 | 只看该作者
楼上正解。 R:瑞萨。
ART 在STR9中就有了。
其实在现在很多超过33 MHz 的都有了,算法做的效率+缓冲大小决定了速度。
M4的IS都是一样的。

使用特权

评论回复
7
cheungman| | 2011-9-20 09:15 | 只看该作者
本帖最后由 cheungman 于 2011-9-20 09:21 编辑

Coremark测试得到363 ------------------------------- CoreMark™/MHz = 363/168=2.16, 这个系数跟freescale差不了多远.

使用特权

评论回复
8
IJK| | 2011-9-20 10:53 | 只看该作者
Coremark测试得到363 ------------------------------- CoreMark™/MHz = 363/168=2.16, 这个系数跟freescale差不了多远.

78412
cheungman 发表于 2011-9-20 09:15


这个数据跟1L的第2张图是一致的(蓝色的线应该对应Freescale Kinetis)。另外根据1L的第1张图,Freescale Kinetis在Dhrystone测试中随着主频升高有性能的损失,这暗示Freescale Kinetis只针对Coremark测试进行了优化。

使用特权

评论回复
9
airwill| | 2011-9-20 10:53 | 只看该作者
这次看到的介绍更详细了, 除了指令缓冲, 还有数据缓冲了.
相当于 64/8 组相连.
非常高兴地看到. 从 F1xx 的 64 位宽度升为 128 位宽度.
但是到 120Mhz 的 F2xx 的确 128 位宽度是够了.
但是到 168Mhz 的 F4xx, 估计读取 FLASH 4个 CPU 时钟已经不够了(顺序执行又要等待 FLASH 了).
何况上图的红线画到惊人的 360MHz!  
请问  168Mhz 的 F4xx 是否已经使用 256 位宽度了呢?
而以后惊人的 360MHz 是否会使用 512 位宽度呢?

使用特权

评论回复
10
Ryanhsiung| | 2011-9-20 10:54 | 只看该作者
终于要出来了,赶紧啊!!不然新产品还是用DISPIC的片子

使用特权

评论回复
11
mcuisp| | 2011-9-20 12:24 | 只看该作者
这次看到的介绍更详细了, 除了指令缓冲, 还有数据缓冲了.
相当于 64/8 组相连.
非常高兴地看到. 从 F1xx 的 64 位宽度升为 128 位宽度.
但是到 120Mhz 的 F2xx 的确 128 位宽度是够了.
但是到 168Mhz 的 F4xx, 估计 ...
airwill 发表于 2011-9-20 10:53

个人认为,增加宽度不如增加组数。
128位宽度是因为读FLASH的位宽是128位。增加这个恐怕代价很大。

使用特权

评论回复
12
guet_new_man| | 2011-9-20 12:44 | 只看该作者
敢问,这个产品的应用定位是哪些场合?

使用特权

评论回复
13
Simon21ic| | 2011-9-20 12:58 | 只看该作者
这个已经有开发板了,看来比F2给力。希望不要难产。

使用特权

评论回复
14
MicroMMU| | 2011-9-20 13:08 | 只看该作者
上有ARM9 ,A8,A9,下有F10X,F20X,不知如何定位。
容量大,价格高。上不了量的。
搞些容量小的吧。不是打自己的脚。
给个建议。在32位MCU这一块,以后全用CM4核。把CM3停掉。
低端小容量的,尽量用裁减的核。芯片面积与CM3应该差不多。
以后选型与技术支持及服务都省了不少事,实现“一步到位”,
呵呵,就怕ARM又搞了个M5,M6出来。

使用特权

评论回复
15
zhuzhou123| | 2011-9-20 13:17 | 只看该作者
大家都是高手啊

使用特权

评论回复
16
香水城|  楼主 | 2011-9-20 13:54 | 只看该作者
个人认为,增加宽度不如增加组数。
128位宽度是因为读FLASH的位宽是128位。增加这个恐怕代价很大。
mcuisp 发表于 2011-9-20 12:24


哈哈,目前的64组已经是加倍了,实际上在测试时32组缓存已经达到了1楼的水平。

使用特权

评论回复
17
airwill| | 2011-9-20 14:20 | 只看该作者
下载到 RM0090 了, 看了一下 55 页的 Table 3.
最快读取指令也要 6 个 CPU cycles.
也就是说, 6 个 Clock 读取 128 bits.
但是 128 bits 最快 4 个 Clock 就执行完了, 接下来, 如果 缓存没有指令, 就得从 FLASH 读取了. 这样最大有 1/3 的时间在等待 FLASH.
但是 F2xx 就不同. 最快读取指令也要 4 个 CPU cycles, 而读取到的指令 最快也要 4 个 CPU cycles 才能执行完. 所以 F2xx 是不存在等待 FLASH 的情况的.
.

使用特权

评论回复
18
airwill| | 2011-9-20 14:20 | 只看该作者
本帖最后由 airwill 于 2011-9-20 14:50 编辑

下载到 RM0090 了, 看了一下 55 页的 Table 3.
最快读取指令也要 6 个 CPU cycles.
也就是说, 6 个 Clock 读取 128 bits.
但是 128 bits 最快 4 个 Clock 就执行完了, 接下来, 如果 缓存没有指令, 就得从 FLASH 读取了. 这样最大有 1/3 的时间在等待 FLASH.
但是 F2xx 就不同. 最快读取指令也要 4 个 CPU cycles, 而读取到的指令 最快也要 4 个 CPU cycles 才能执行完. 所以 F2xx 是不存在等待 FLASH 的情况的.
.

真是郁闷, 我怎么又发了两次. 点击发送一次, 没有响应, 再点击, 还是没有响应. 回头刷新, 却发现已经发了两次了!

使用特权

评论回复
19
hqgboy| | 2011-9-20 14:54 | 只看该作者
不错。看PWM和TIMER好像有32BIT的。

使用特权

评论回复
20
IJK| | 2011-9-20 15:16 | 只看该作者
上有ARM9 ,A8,A9,下有F10X,F20X,不知如何定位。
容量大,价格高。上不了量的。
搞些容量小的吧。不是打自己的脚。
给个建议。在32位MCU这一块,以后全用CM4核。把CM3停掉。
低端小容量的,尽量用裁减的核。芯片 ...
MicroMMU 发表于 2011-9-20 13:08


这是没有办法的,ARM为了自己的生存和发展,现在有了M0、M1、M3、M4,以后完全有可能出M5、M6,以及比M0更低端的;就象ARM有了A8、A9,现在高端又推出A15,低端又推出A5一样。倒是夹在M和A系列中间的R系列,似乎ARM并不在意,以后M3说不定也陷入这种高不成低不就的境地。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:STM32技术专家

596

主题

17068

帖子

283

粉丝