专栏中心

EEPW首页 > 专栏 > 【分析】STM32从Flash中运行程序的时序分析

【分析】STM32从Flash中运行程序的时序分析

发布人:mayer 时间:2009-08-04 来源:工程师 发布文章
【分析】STM32从Flash中运行程序的时序分析

 

来源 CEPARK网站http://www.cepark.com/Index.html  作者: hnrain

大家都知道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的指令不都是单周期指令。

实际的程序执行情况是受很多因素影响的,单纯静态的分析也是不现实的,因此才会出现这么多评测的标准和数据。我们应该以平均的性能指标作为参考的依据,而不是简单的有没有或有多少等待周期作为判断的依据。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

卫生间如何变得更智能?

中国电动汽车技术如何重塑全球汽车设计

Numonyx相变存储器介绍

视频 2010-01-14

满足AI需求的关键本地生态系统:台积电

意法半导体STM8L低能耗系列MCU技术演示

视频 2010-01-14

什么时候应该使用RAG、TAG和RAFT AI?

智能计算 2025-09-14

中国开始针对美国模拟半导体行业进行调查

CX-Protocol Ver1

资源下载 2007-02-09

国外巡飞弹技术发展

视频 2010-01-14

光纤制导导弹关键技术

视频 2010-01-14

CQM1H操作手册

资源下载 2007-02-09

OpenAI 的非营利母公司将获得营利性部门的 $100B+ 股份

智能计算 2025-09-14

从产品到平台:CrowdStrike 如何实现持久增长

国外军用飞艇装备技术发展

视频 2010-01-14

DesignLab V8.0

资源下载 2007-02-09

芯片市场今年将达到 8000 亿美元

EDA/PCB 2025-09-14

NVIDIA再掀AI散热革命! 散热大厂送样微通道盖4Q开奖

台积电重新利用旧晶圆厂,将 EUV 薄膜生产引入内部

更多 培训课堂
更多 焦点
更多 视频

技术专区