OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3648|回复: 12

求助!!!关于rt1052代码外置、与600M主频关系

[复制链接]

19

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1062
金钱
1062
注册时间
2017-10-6
在线时间
167 小时
发表于 2018-11-28 16:16:33 | 显示全部楼层 |阅读模式
    这几天被一个问题困扰了,比如单片机代码放在外部flash中,外部flash通过spi与单片机通信,单片机主频是600M,而spi顶多是40M,那么单片机加载程序速度远远不如主频速度,即使600M主频,也会因为代码外置flash而降低速度。    请问单片机读取外置代码是,一次读取完成之后,就再也不读取了吗?

    如果是循环读取代码的话,就算单片机主频是600M,那么不也被40M的spi拉低了速度吗?
    求大神解答
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7381

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14979
金钱
14979
注册时间
2013-11-13
在线时间
1823 小时
发表于 2018-11-28 20:24:38 | 显示全部楼层
32初学者 发表于 2018-11-28 19:59
冯诺依曼结构是这样,不过哈弗结构好像不能公用,是分开的

不要忘了RT1052有个超大的I,D Cache
开往春天的手扶拖拉机
回复 支持 1 反对 0

使用道具 举报

19

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1062
金钱
1062
注册时间
2017-10-6
在线时间
167 小时
 楼主| 发表于 2018-11-28 16:32:56 | 显示全部楼层
我可能有点明白了,不管是内置flash还是外置flash都逃不过本身固有的时间,还有RAM,但是可以提高计算速度(即主频),其实600M主频,不包括读取指令和数据,一个程序时间=读取指令时间+计算时间(主频)+写入数据时间(RAM),在Flash和RAM无法提升的情况下,提升主频可以加快程序运算时间。
回复 支持 反对

使用道具 举报

19

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1062
金钱
1062
注册时间
2017-10-6
在线时间
167 小时
 楼主| 发表于 2018-11-28 17:07:54 | 显示全部楼层
还是不理解,单片机加载指令是从flash中,而flash速度达不到单片机主频速度,会拖累单片机,
可不可以这样理解,首先指令本身数据量很小,根据指令所运行计算时间会很长,所以就算flash速度慢也不影响,读写数据RAM也一样
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-12-1
在线时间
5 小时
发表于 2018-11-28 17:11:48 | 显示全部楼层
好像RT1052会先把外置FLASH中的代码读取到内部ram中吧,下载到外部FLASH只是代码存到那而已。
回复 支持 反对

使用道具 举报

19

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1062
金钱
1062
注册时间
2017-10-6
在线时间
167 小时
 楼主| 发表于 2018-11-28 19:59:53 | 显示全部楼层
xming 发表于 2018-11-28 17:11
好像RT1052会先把外置FLASH中的代码读取到内部ram中吧,下载到外部FLASH只是代码存到那而已。

冯诺依曼结构是这样,不过哈弗结构好像不能公用,是分开的
回复 支持 反对

使用道具 举报

19

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1062
金钱
1062
注册时间
2017-10-6
在线时间
167 小时
 楼主| 发表于 2018-11-28 20:45:19 | 显示全部楼层
zuozhongkai 发表于 2018-11-28 20:24
不要忘了RT1052有个超大的I,D Cache

难道是把代码缓存到 Cache中?一次性全部搬运吗?如果代码量大于 Cache容量呢?求大神解答
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2018-5-5
在线时间
1 小时
发表于 2018-11-29 20:41:52 | 显示全部楼层
本帖最后由 AlexYzhov 于 2018-11-29 20:49 编辑

找本计算机体系结构的书补补基础吧,层次存储结构章节。

首先,RT的flexspi是ahb-qspi bridge,配置好后cpu可以通过存储器总线直接访问挂载到flexspi的nor flash。走存储器总线,也就使得nor flash上的数据可以在取指过程中利用上m7上统一的cache。

首先cache并不是银弹。为什么会有加速效果,你得先明白程序是有时间和空间局部性的,只有code在满足这样的条件下,cache才有很好的加速效果。如果你代码存在长跳转和密集的随机查表,cache的效果并不会很好。但反过来说,对于其他90%的数据,cache都非常有效。

ps: 为啥用32f1的时候就没人纠结32的flash只能跑60Mhz的事情呢。。32同样是靠flash加速,但多数32型号的cache不是内核的通用cache,而是设计在访存外设里罢了。。唉
回复 支持 反对

使用道具 举报

19

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1062
金钱
1062
注册时间
2017-10-6
在线时间
167 小时
 楼主| 发表于 2018-11-30 09:25:28 | 显示全部楼层
AlexYzhov 发表于 2018-11-29 20:41
找本计算机体系结构的书补补基础吧,层次存储结构章节。

首先,RT的flexspi是ahb-qspi bridge,配置好后 ...

谢谢,不过现在知道,外部flash代码通过cache加速了。
一个程序运行时间=代码加载时间+数据运算时间+数据读写时间,主频应该是影响数据运算时间,代码指令与flash、cache有关,数据读写与RAM有关。
回复 支持 反对

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-12-14
在线时间
31 小时
发表于 2018-12-2 09:20:59 | 显示全部楼层
楼主可以@原子哥!
回复 支持 反对

使用道具 举报

19

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1062
金钱
1062
注册时间
2017-10-6
在线时间
167 小时
 楼主| 发表于 2018-12-2 10:25:02 | 显示全部楼层
这两天查了点资料,算是有点明白了,如果重复代码(指令)比较多,那么rt1052会把这些重复指令放到Cache中,供CPU随时调取,而且如果此时是代码量(指令)小,那么RT1052凭借600M主频,运行速度是很快的,如果代码量大,而且重复指令少的话,估计RT1052速度会降下来
回复 支持 反对

使用道具 举报

0

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2018-5-9
在线时间
164 小时
发表于 2018-12-2 15:58:19 | 显示全部楼层
32初学者 发表于 2018-12-2 10:25
这两天查了点资料,算是有点明白了,如果重复代码(指令)比较多,那么rt1052会把这些重复指令放到Cache中 ...

不是重复程序,是调用密集的程序。
回复 支持 反对

使用道具 举报

19

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1062
金钱
1062
注册时间
2017-10-6
在线时间
167 小时
 楼主| 发表于 2018-12-2 17:18:05 | 显示全部楼层
alexvhozy 发表于 2018-12-2 15:58
不是重复程序,是调用密集的程序。

对对!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 06:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表