时钟周期、机器周期、指令周期
1 时钟周期
例如51单片机,外部晶振为12MHz,则时钟周期为1/(12M),也就是(1/12)微秒。
2 机器周期
用C语言写的程序,会被转换成一条一条的指令,不同的指令执行的时间不同。
而这个时间的最小衡量单位是机器周期。
简单指令需要一个机器周期,复杂指令可能需要两个或两个以上的机器周期。
对于51单片机,一个机器周期等于12个时钟周期。
也就是一个时钟周期为1us。以前用_nop();进行1us延时就是这个道理。
3 指令周期
不同的指令,执行的时间是不同的,但基本的衡量单位是机器周期。
4 STM32的时钟周期、机器周期与指令周期
STM32时钟树如下图所示。
从时钟树可以看出,HCLK、PCLK以及FCLK都是由SYSCLK分频或倍频得到的。
STM32时钟树里缩略词说明如下图所示。
缩略词 | 英文 | 中文 |
SYSCLK | System Clock | 系统时钟 |
HCLK |
High Performance Bus Clock |
高性能总线时钟 |
PCLK | Periphral Bus Clock | 外围设备总线时钟 |
FCLK | Free Runing Clock | 自由运行时钟 |
如下图所示,内核(core)的时钟为72MHz。
正点原子:“STM32有三级流水线,指令周期不定的,arm给出的是1.25MIPS/Mhz,一个平均执行速度。”
“就是1Mhz的频率,每秒钟可以执行1.25M指令。72M,那么就是72*1.25。”
MIPS(Million Instructions Per Second):每秒处理1百万条指令。
5 参考
51、430、stm32周期和执行一条语句需要多长时间的问题
https://blog.csdn.net/helenie/article/details/52810046
计算机组成原理:时钟周期、机器周期和指令周期
https://blog.csdn.net/billbonaparte1/article/details/51297189
STM32的一个指令周期是多少个时钟周期呀?