查阅相关资料书籍和博客总结了一下知识点,以便学习巩固复习。
在学习《ARM Cortex-M3与Cortex-M4权威指南(第3版)》 这本书具体说明了触发中断需要多长时间。
在权威指南的第74页提到,Cortex-M3和Cortex-M4的中断等待非常小,只有12个周期。也就是说触发中断后,需要12个时钟周期,才能被系统识别到,并去处理,也就是从中断触发到中断服务程序开始执行的时间。假如单片机时钟周期为72Mhz,那么检测中断的周期就为72/12 = 6MHz ≈ 166.67 ns。
中断请求至少要持续一个时钟周期,也就是说如果使用脉冲触发中断时,脉冲的维持时间至少为单片机系统时钟周期的一个时钟周期。假如单片机时钟周期为72Mhz,那么脉冲的持续时间至少为 1/72Mhz = 0.01388889us ≈ 14ns左右。
在STM32系列芯片中,采用Cortex-M3内核的微控制器具有三级流水线(three-stage pipeline)的架构。三级流水线是指CPU执行指令的过程被划分为三个阶段,每个阶段执行不同的操作,这样可以提高指令的执行效率。
三级流水线的基本阶段:
取指阶段(Instruction Fetch, IF): 从程序存储器中取出指令。
译码和执行阶段(Decode and Execute, DE): 对指令进行解码,并执行相应的操作。
写回阶段(Write Back, WB): 将执行结果写回寄存器文件或内存。
优势包括:
提高吞吐量: 因为不同阶段的指令可以同时被处理,所以在一个时钟周期内可以完成更多的指令。
提高效率: 流水线可以在一个时钟周期内同时处理多个指令的不同阶段,降低了单个指令的执行时间。
每个阶段都对应了CPU执行指令的一个部分。这样的流水线架构使得CPU能够同时执行不同指令的不同阶段,从而提高整体的指令执行速度。
ARM给出的Cortex-M3核单片机的平均执行速度是1.25MIPS/Mhz。
MIPS的全称是Million Instructions Per Second,MIPS/Mhz的意思是(单片机CPU的主频)每兆赫兹下(单片机的指令执行速度)每秒执行1M(兆)条指令。比如,ARM官方给出的STM32F103x系列单片机的平均执行速度是1.25MIPS/Mhz,如果设置单片机的主频为72MHz,那么单片机执行速度=1.25(MIPS/Mhz)*72Mhz = 90MIPS,即每秒执行90M条指令,一条指令的执行时间为 1/90us=0.011us=11ns。但官方说的1.25DMIPS/MHz,是通过测试一些算法来实现的,不是实际测试硬件的结果,只能作为大概的一个参考。
CPU执行中断时需要时间的,如入栈,出栈,以及其他处理,都需要时间,一般情况下,STM32的中断性能不超过500Khz,也就是中断间隔达到2us一次时,不管你中断函数多精简,基本上CPU就不会干其他什么事情了,只在进出中断了。
单条指令执行时间:STM32F10X单片机在主频为72MHz下,C语言程序执行一条指令需要的时间可认为10ns~100ns。
执行一个__nop();是多长时间呢?
NOP指令:空指令,单片机在执行此指令时,什么事都不做,空循环一个时钟周期;
假设系统时钟频率为72Mhz,那么1个时钟周期是 1/72Mhz = 0.01388889us ≈ 14ns,相当于在72Mhz的主频下,执行一个__nop();需要14ns。
本篇完。
本人博客仅代表个人见解方便记录成长笔记。文章来源:https://www.toymoban.com/news/detail-846634.html
若有不足,请指出,感谢您的阅读!文章来源地址https://www.toymoban.com/news/detail-846634.html
到了这里,关于STM32系列单片机“中断触发时间、最小中断周期、指令周期、平均执行速度、和单条指令执行时间”的问题研究的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!