请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32F407 FLASH零等待加速问题

[复制链接]
恍恍惚惚 提问时间:2019-7-16 17:25 /
在参考手册FLASH 模块中,ART加速器中有这么一句话,凭借ART加速可以使CPU运行168MHZ时的性能相当于零等待。 1.png

然后我用KEIL软件连上板子与示波器根据手册中给出的设置,我们电压时3.3V,配置时钟频率为168,所以选择5个等待周期,开启预取和缓存。
2.png

目的:为了验证开启加速功能时,在168MHZ能否达到零等待。
方法:运行52800条单周期,顺序指令。用的是“MOV R0 #0” "MOV R0 #1",给R0寄存器赋值,从0到20,复制了60次,为了减少指令书写,采用BL跳转自身40次。一共是52800条,跳转40次,跳转可忽略,相当于全部顺序执行。MOV在M4中是32位指令。
在第一条指令前拉高管脚,最后一条指令后拉低管脚,开启预取和缓存,设置5个等待周期。然后在示波器中截取管脚拉高的时间,计算出实际值。
计算出理论零等待时间:应该是52800/168=314微秒。
但是得到的实际值是570微秒。远远达不到零等待时间,这是为什么,哪里出了问题。请大神赐教。非常感谢!



收藏 评论5 发布时间:2019-7-16 17:25

举报

5个回答
恍恍惚惚 回答时间:2019-7-19 08:28:50
有大神了解么,非常感谢!
butterflyspring 回答时间:2019-8-12 16:48:11
这个需要看官方的FLASH接口原理了。并且如描述所说,相当于0等待。在特殊情况下,比如cache 没有命中,需要重新取指,这时候就不能连续计算时间,另外总线的时间,IO指令执行和翻转时间都要考虑进去,并不是一个完全理想化的,而是巧妙利用接口设计等效完成0等待取指,这样才能成本更低,功耗更低,价格更好

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

恍恍惚惚 回答时间:2019-8-22 09:32:06
butterflyspring 发表于 2019-8-12 16:48
这个需要看官方的FLASH接口原理了。并且如描述所说,相当于0等待。在特殊情况下,比如cache 没有命中,需要 ...

非常感谢,这个问题我已经解决了,可以看下面回复。
恍恍惚惚 回答时间:2019-8-22 09:39:23
经过一段时间的研究,这个问题已经解决了。此测试方法可行,附上测试数据。希望能帮到大家。 1566437545(1).png
结论:ST的加速效果在一些特点明显的程序中(针对预取的顺序程序,针对cache的循环程序)加速效果显著能达到零等待性能。但是在大量跳转的程序中虽然达不到零等待,但是加速效果依然显著。
对于之前测量中存在的问题,应该是因为在频率过高时,指令数太少,受限于器材的限制,在示波器上显示不出明显效果,。当我把指令数加到10W条或者频率降低后,问题被解决。
恍恍惚惚 回答时间:2019-8-22 09:41:58
欢迎提出问题,一起探讨。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版