FLASH预取
在stm32中,我们的代码都是放在flash中的,内核是M3,内核要读flash中的code,它是一条一条读一条一条执行的。读完第一条,还没读第二条代码时,内核先会把将要读的读的第二条代码先取好,放好等待它去读,这个过程称为预取指。
Cortex处理器采用的是三级流水线的哈佛结构,一条指令的执行分为:取指阶段(Fetch stage)、译码阶段(Decode stage)、执行阶段(Execute stage)。
CPU 通常需要 4 个周期( 72Mhz下, 2 个等待周期)读取 64 位数据进入指令缓冲.
CPU 通常需要 1 到 2 个周期执行一条指令(16位或者32位).
类比:工厂里面的流水线,工人加工一个产品需要2个周期,产品运送到工人目前需要4个周期。
没预取:相当于工人加工完一个产品,传送带动一次。
预取:相当于工人一边加工,传送带一边在运行
CPU的运行频率高,而内部FLASH的运行频率低,所以预取指令能够加快CPU的执行速度,