打印
[STM32F1]

STM32执行一句语句需要多少ns?

[复制链接]
20704|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bear1|  楼主 | 2014-12-17 09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
根据语句不同,最短的多少ns?最长的多少ns?
沙发
小班儿| | 2014-12-17 09:39 | 只看该作者
这个问题不好回答,不同的编译器,不同的时钟结果是不一样的!!

使用特权

评论回复
板凳
bear1|  楼主 | 2014-12-17 09:42 | 只看该作者
小班儿 发表于 2014-12-17 09:39
这个问题不好回答,不同的编译器,不同的时钟结果是不一样的!!

那极限 最快能达到几ns?

使用特权

评论回复
地板
xppx1987| | 2014-12-17 09:48 | 只看该作者
这个问题同求~

使用特权

评论回复
5
小班儿| | 2014-12-17 09:50 | 只看该作者
bear1 发表于 2014-12-17 09:42
那极限 最快能达到几ns?

不同的语句在编译后需要的指令不一样。一条指令为6个机器周期,如果系统时间为72mhz,一条机器周期为1/72m。你可以自己算一下!

使用特权

评论回复
6
Eric2013| | 2014-12-17 10:19 | 只看该作者
最短的是单时钟周期指令,比如:nop

使用特权

评论回复
7
仙人球W| | 2014-12-17 10:32 | 只看该作者
执行指令时,CPU首先到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号完成指令所规定的操作。
(1)时序:CPU在执行指令时所需控制信号的时间顺序称为时序。
时序是用定时单位来描述的,时序单位有四个,分别是时钟周期(节拍)、状态、机器周期和指令周期。
(2)机器周期、指令周期与指令时序
各种指令时序与时钟周期相关。
1时钟周期
时钟控制信号的基本时间单位。若晶振频率为fosc,则时钟周期
2机器周期
CPU完成一个基本操作所需时间为机器周期。执行一条指令分为几个机器周期。每个机器周期完成一个基本操作,如取指令、读或写数据等。每12个时钟周期为1个机器周期。
若晶振为6MHz,则机器周期为2μs,若晶振为12MHz,则机器周期为1μs。
1个机器周期包括12个时钟周期,分6个状态:S1~S6。每个状态又分两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为S1P1、S1P2、S2P1、S2P2、…、S6P2,
指令周期
执行一条指令所需的时间。简单的单字节指令,取出指令立即执行,只需一个机器周期的时间。而有些复杂的指令,如转移、乘、除指令则需两个或多个机器周期。
从指令执行时间看:
单字节和双字节指令一般为单机器周期和双机器周期;
三字节指令都是双机器周期;
乘、除指令占用4个机器周期。

使用特权

评论回复
8
mmuuss586| | 2014-12-17 12:24 | 只看该作者

单周期指令,也就是最快的,主频的倒数;

使用特权

评论回复
9
cool_coder| | 2014-12-17 14:02 | 只看该作者
关于STM32F1的指令时序,可以查ARM的CM3参考手册第18章

使用特权

评论回复
10
shdjdq| | 2014-12-17 14:12 | 只看该作者
STM32F103很多是单周期指令,还有一些是二周期指令。跳转,判断,端口操作,要慢一些。如用外部总线,可能更慢了。

使用特权

评论回复
11
bear1|  楼主 | 2014-12-17 14:44 | 只看该作者
mmuuss586 发表于 2014-12-17 12:24
单周期指令,也就是最快的,主频的倒数;

1000/72 = 13.8888888888888888…… ns

使用特权

评论回复
12
玄德| | 2014-12-17 18:08 | 只看该作者
本帖最后由 玄德 于 2014-12-17 21:43 编辑

以前51,时钟周期、机器周期、指令周期,概念很清楚,容易计算。
51的指令,在时间上是首尾相接的,总的执行时间等于各指令时间之和。

取指令、译码、执行,哪个步骤都需要至少一个时钟,这点大家都一样。
但现在单片机的设计原理不同了,是流水线操作,相邻指令的各个步骤对应的时钟是错位、重叠的,所谓“单时钟”只是最后表现出来的效果,
这样就大大提高了速度。
即使这样,第一条指令和最后一条指令,效果就不是“单时钟”了。

不过,现在真没有去计较过这个问题,没有意义了。


使用特权

评论回复
13
通宵敲代码| | 2014-12-17 18:15 | 只看该作者
这个真不好说。

时钟频率不一样,指令周期也不同。
但周期指令的上面也提了,就是时钟的倒数。
多周期指令就要具体分析了。

如果环境稳定,可以考录适当超频,(不推荐)。
这是我以前做的测试数据,仅供参考
72MHz的F1可以超频的108MHz,运行还算稳定。
84MHz的F4可以超频的150MHz,稳定性没具体测试。

使用特权

评论回复
14
泰山特曲123| | 2014-12-17 18:25 | 只看该作者
貌似还要受三级流水线的影响,如果预取指令不正确的话,估计还要浪费点时间。

使用特权

评论回复
15
搞IT的| | 2014-12-17 18:41 | 只看该作者
理论问题和实际问题结合的一个问题

使用特权

评论回复
16
苏山人家| | 2014-12-17 22:11 | 只看该作者
m3,m0,m4最高主频不一样,stm32是个家族。你精确型号。不一样指令可能也不同,m4还有协处理指令,所以没发回答

使用特权

评论回复
17
請放心遠行!| | 2014-12-17 23:08 | 只看该作者
仙人球W 发表于 2014-12-17 10:32
执行指令时,CPU首先到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号 ...

受教了。

使用特权

评论回复
18
菜鸟同学| | 2015-10-17 19:10 | 只看该作者
通宵敲代码 发表于 2014-12-17 18:15
这个真不好说。

时钟频率不一样,指令周期也不同。

超频==你是拿老板的产品开玩笑!

使用特权

评论回复
19
734774645| | 2015-10-17 22:13 | 只看该作者
要看你什么应用,什么应用就会什么时钟,然后多少机器周期

使用特权

评论回复
20
mintspring| | 2015-10-18 11:16 | 只看该作者
不是这么算的,都是看主频,还有周期数,ARM都是一样的。

使用特权

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

本版积分规则

151

主题

964

帖子

1

粉丝