您的位置 首页 系统

STM32从Flash中运转程序的时序剖析

都知道STM32的CPU时钟频率可以达到72MHz,以后还会更快,但是由于半导体制造工艺的限制,存放程序的Flash存储器不可能达到这么高的工作频率

都知道STM32的CPU时钟频率能够到达72MHz,今后还会更快,可是由于半导体制作工艺的约束,寄存程序的Flash存储器不可能到达这么高的作业频率,这样当CPU直接拜访Flash存储器时有必要刺进等候周期以得到正确的成果。

问题是在Flash的速度比CPU慢的状况下,是不是能够简略地说STM32在履行Flash中的程序时每条指令都需求刺进等候周期呢?等候周期的刺进对程序的履行到底有多大的影响?请看下面的剖析:
首要,STM32的内部Flash是组织成64位宽度,即每次能够读出64位;在Flash与CPU的取指行列之间有两个缓冲器,用于暂存Flash中取出的指令,见下图。
其次,STM32的指令有16位的也有32位的,指令是从图中绿色的缓冲器取出;当绿色缓冲器变空时,黄色缓冲器中的内容会被复制到绿色缓冲器中;这样取指与读取Flash互不搅扰。
正由于STM32的指令有不同长度,所以程序履行的等候周期与程序的内容有关。
图一是假定一切指令都是16位的指令:
1)时间t0时黄色缓冲器和绿色缓冲器都为空,此刻CPU等候3个周期后,到时间t1时才干读到指令;
2)时间t1时绿色缓冲器被填满,黄色缓冲器仍为空,Flash控制器持续读取后续指令;
3)时间t2时绿色缓冲器还有两个字节,黄色缓冲器被填满;此刻由于两个缓冲器都有数据,读取Flash的操作暂停(图一中的绿色虚线框所示);
4)当黄色缓冲器变空时,绿色缓冲器被复制到黄色缓冲器,一起康复读取Flash的操作;
5)时间t3时缓冲器的状况又变为上述第3)步的状况。
从以上剖析能够看出,CPU的指令履行是没有等候周期的。但当履行跳转指令时,Flash缓冲器中的内容报废,体系回到了上述第1)步的状况。
图二是假定每三条指令中有两条16位的指令和一条32位的指令。这种状况下,如图所示,CPU的指令履行也是没有等候周期的。
图三是假定一切指令都是32位的指令,从图中可看出,CPU每履行两条指令,要刺进一个等候周期。
上面的剖析仅仅针对每个CPU周期都有取指操作的状况,而实践的操作中状况并没有这么简略,由于Cortex-M3的指令不都是单周期指令。
实践的程序履行状况是受许多要素影响的,单纯静态的剖析也是不现实的,因而才会呈现这么多评测的规范和数据。咱们应该以均匀的性能指标作为参阅的根据,而不是简略的有没有或有多少等候周期作为判别的根据。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/254524.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部