STM指令周期1.25MIPS/Mhz,1M频率每秒钟执行1.25M指令。72M是72*1.25。每个指令执行周期为1M(us)/72*1.25M=0.011us,8M的AVR单指令周期0.125us

  • Post author:
  • Post category:其他


在keil中编程时,写了一行代码,然后就想知道,执行这句C代码需要多长时间。

时钟周期在这就不解释了,频率的倒数。

指令周期,个人理解就是cpu执行一条汇编指令所需要的时间。

我们知道cm3使用的三级流水线,那么到底一条指令的执行需要多少个时钟周期。下面通过keil软件仿真,来计算一个指令所需的时钟周期。

使用STM32F103RC,。配置其主时钟HCLK为72mhz测试代码如下:

然后开始仿真

编译通过后,点击dbg按钮,调出如下窗口:

并且设置以上的断点,开始单步调试。并记录时间,

单步调试

这样便可以计算出执行  MVOS  r1,#0x04 所用的时间视为29.20833-29.19444=0.1389us。使用这种方式便可以测试出每条指令所使用的时间。便有了下面的表。

但是,我测试BL.W指令所需要的是8T0,不知道是什么原因,其他指令都是正确的

ARM官方给出的指令周期是

STM32有三级流水线,指令周期不定的,arm给出的是1.25MIPS/Mhz,一个平均执行速度。


个人理解就是1Mhz的频率,每秒钟可以执行1.25M指令。72M,那么就是72*1.25。每个指令的执行周期为1M(us)/72*1.25M=0.01111us


时钟周期为1/72M=0.01389us.也就是相当于一个时钟周期或者振荡周期执行一条指令。为什么平均指令周期比时钟周期还小呢?怎么参照时钟周期啊?因为是三级流水线,指令周期不定,有时候几条指令同时进行的,是平均指令周期。

而这个最大的应用是通过单周期指令去测试系统时钟是否配置的正确。

————————————————

版权声明:本文为CSDN博主「lsh_sharon」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_41092963/java/article/details/82759097


时钟周期:

时钟周期

也称为振荡周期,定义为时钟脉冲的倒数

(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),

是计算机中最基本的、最小的时间单位

在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟 周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算 机,时钟频率越高,计算机的工作速度就越快。


8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。


机器周期:


在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。

例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。

完成一个基本操作所需要的时间称为机器周期。


一般情况下,一个机器周期由若干个S周期(状态周期)组成。

8051系列单片机的一个机器周期同6个 S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),

8051单片机的机器周期由6个 状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。


例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒;


指令周期:


执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。


对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期



对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。


通常

含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。


总线周期:


由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的

。通常

把CPU通过总线对微处理器外部(存贮器或 I/O接口)进行一次访问所需时间称为一个总线周期。


指令周期 机器周期 状态周期 振荡时钟周期(时钟周期)(转)_weixin_30421525的博客-CSDN博客

12M晶振的51单片机一个时钟周期是1/12M=1/12000000,机器周期等于12个时钟周期也就是1US,

一个指令周期最小的也是一个机器周期是1US

8M的AVR单片机,一个指令周期一般都是一个时钟周期,1/8000000=0.000000125=0.125us