指令周期
- 格式:pdf
- 大小:303.44 KB
- 文档页数:8


51 单片机指令周期,机器周期,时钟周期详解
51 单片机有指令周期,机器周期,时钟周期的说法,看似相近,但是
又都不太一样,很容易混淆。还是详细分析一下。
时钟周期:单片机外接的晶振的振荡周期就是时钟周期,时钟周期=振
荡周期。比方说,80C51 单片机外接了一个 11.0592M 的晶体振荡器,那我们
就说这个单片机系统的时钟周期是 1/11.0592M,这里要注意 11.0592M 是频率,
周期是频率的倒数。
机器周期:单片机执行指令所消耗的最小时间单位。我们都知道 51 单
片机采用的 CISC(复杂指令指令集),所以有很多条指令,并且各条指令执行的
时间也可能不一样(有一样的哦),但是它们执行的时间必须是机器周期的整数
倍,这就是机器周期的意义所在。8051 系列单片机又在这个基础上进行细分,
将一个机器周期划分为 6 个状态周期,也就是 S1-S6,每个状态周期又由两个
节拍组成,P1 和 P2,而 P1=P2=时钟周期。这也就是经常说的 8051 系列单片
机的的时钟频率是晶振频率的 12 分频,或者是 1/12,就是这个意思。现在(截
至 2012)新的单片机已经能做到不分频了,就是机器周期=时钟周期。
指令周期:指令周期执行某一条指令所消耗的时间,它等于机器周期的
整数倍。传统的 80C51 单片机的指令周期大多数是单周期指令,也就是指令周
期=机器周期,少部分是双周期指令。现在(截至 2012)新的单片机已经能做到
不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。
来看这张 8051 单片机外部数据,这里 ALE 和$PSEN$的变化频率已经小
于一个机器周期,如果使用 C 语言模拟这个信号是没有办法做到的一一对应的,
所以只能尽量和上面的时序相同,周期延长。
ARM7各种指令的周期数
ARM7各种指令的周期数
ARM7 具有3 级流水线结构(取指、译码、执行),对大多数指令来说每
条流水线的处理都是单周期的,不过某些情况下,取指和执行的周期数会延长,导致流水线进入stall 状态,指令执行时间超过1 个周期。经过在LPC213x/214x(NXP ARM7TDMI-S)上的试验,得出各类指令的执行周期数如下:1、大部分算术运算和逻辑运算指令都是单周期的(乘法例外)。
2、STR 指令需要增加1 个总线周期。如果地址位于内部SRAM,则是2 个周期;如果地址位于AHB、VPB 等外设总线上(例如访问外设的寄存器),由于
局部总线和外设总线桥接还有额外延时,因此需要再增加一些周期数,在
LPC213x/214x 上,当VPB 和主频相同时,需要再增加5 个周期额外延时,即用STR 指令访问外设寄存器需要7 个期。3、LDR 指令需要增加2 个总线周期。同理,如果地址位于内部SRAM,则是3 个周期;如果地址在外设总线上,同样需要再增加一些周期数,在LPC213x/214x 上,当VPB 和主频相同时,LDR 指令需要8 个周期。4、对于一次操作多个寄存器的STM、LDM 类指令,指令周期数与STR、LDR 类似,但每增加一个寄存器需要增加一个总线周期,例如当地址位于内部SRAM、寄存器个数为N 时,执行周期数为1+N(STM)和2+N(LDM)。5、无条件跳转语句和跳转语句成功跳转,需要重新填充流水线,因此至少需要3 个周期(假设访问程序存储空间是单周期的)。
6、LDR 指令的目标寄存器为R15(PC)时,相当于读总线+跳转,至少需要
5 个周期(假设访问程序存储空间是单周期的)。7、乘法指令根据操作数位数的不同,从2-5 个周期都有可能。8、对于所有的带条件的指令,如果条件不满足,指令不被执行,都只需要花1 个周期来跳过该指令。9、实际应用时,还需考虑程序存储器的访问速度(影响流水线取指阶段的周期数)以及Cache
单片机时钟周期、机器周期、指令周期与总线周期
时钟周期:
时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12us),是计算机中最基本的、最小的时间单位。
在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。具体计算就是1/fosc。也就是说如果晶振为1MHz,那么时钟周期就为1us;6MHz的话,就是1/6us。
8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。
机器周期:
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状
态周期)组成。
8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。具体计算为:时钟周期Xcycles。如果单片机是12周期的话,那么机器周期就是T×12。假设晶振频率为12M,单片机为12周期的话,那么机器周期就是1us。
例如外接24M晶振的单片机,他的一个机器周期=12/24M秒;52系列单片机一个机器周期等于12个时钟周期。设晶振频率为12MHz时,52单片机是12T的单片机,即频率要12分频。12M经过分频变为1M,由T=1/f,即一个机器周期变为1us
MCS-51单片机的指令时序
时序是用定时单位来描述的,MCS-51的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明。
·节拍与状态:
我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1),后半周期对应的节拍定义为2(P2)。
·机器周期:
MCS-51有固定的机器周期,规定一个机器周期有6个状态,分别表示为S1-S6,而一个状态包含两个节拍,那么一个机器周期就有12个节拍,我们可以记着S1P1、S1P2……S6P1、S6P2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6MHz的时钟频率,一个机器周期就是2us,而如使用12MHz的时钟频率,一个机器周期就是1us。
·指令周期:
执行一条指令所需要的时间称为指令周期,MCS-51的指令有单字节、双字节和三字节的,所以它们的指令周期不尽相同,也就是说它们所需的机器周期不相同,可能包括一到四个不等的机器周期(这些内容,我们将在下面的章节中加以说明)。
·MCS-51的指令时序:
MCS-51指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:
·单字节指令单机器周期
·单字节指令双机器周期
·双字节指令单机器周期 ·双字节指令双机器周期
·三字节指令双机器周期
·单字节指令四机器周期(如单字节的乘除法指令)
下图是MCS-51系列单片机的指令时序图:
上图是单周期和双周期取指及执行时序,图中的ALE脉冲是为了锁存地址的选通信号,显然,每出现一次该信号单片机即进行一次读指令操作。从时序图中可看出,该信号是时钟频率6分频后得到,在一个机器周期中,ALE信号两次有效,第一次在S1P2和S2P1期间,第二次在S4P2和S5P1期间。