STM32的指令周期
在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。
而这个最大的应用是通过单周期指令去测试系统时钟是否配置的正确。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步