时钟周期 机器周期 指令周期

时钟周期:也称之为振荡周期。这里的振荡就像钟表一样,振荡一次走1秒,连续的振荡产生振荡脉冲,钟表持续走下去。所以时钟周期是一个时间向量。具体的计算:时钟频率的倒数,这里的时钟频率指的是晶振的频率,因为时钟周期的产生是依靠晶振实现的,所以一般单片机CPU外围电路必须加晶振,有些CPU内带振荡,实际这个振荡并非晶振产生的,而是由振荡电路产生的,所以它们是不一样的东西。如果说一个晶振的频率是12Mhz(兆赫兹),那么它的时钟周期就是1/12us(纳秒),也就是12的倒数,单位是:纳秒。所以说选择晶振频率越大,CPU执行速度越快。当然也不是可以选择无限大,这里需要具体的参考CPU数据手册,一般都有上限值。晶振产生的波形是正弦波,连续的正玄波就是脉冲,而CPU执行需要这样的脉冲信号来进行指令的读取执行等操作。CPU的时钟周期也是CPU完成一项原子性操作的时间向量,也就是说:CPU在1个时钟周期内只能做一件事,比如说读指令。不过有些CPU架构在一个时钟周期内并不能完成读指令,所以又引进了一个概念:机器周期。


机器周期:1个机器周期内只能做一件原子性操作:取指令,寄存器读、寄存器写、等。1个机器周期等于若干个时钟周期,这里的比例关系需要看具体的CPU架构,比如说51单片机用的CPU就是1个机器周期等于12个时钟周期。然后就可以具体的计量一个原子性操作具体需要多长时间,比如说取指令在某个CPU架构下就可能需要3个机器周期,寄存器读可能需要5个机器周期。


指令周期:一条指令执行所需要的时间,这里的时间指的是机器周期。这里的指令是指的一条完整的指令执行下来。比如说:访问指令:先取指令,然后在进行访问。这样的指令算下来就需要2个机器周期。取指令需要1个机器周期,进行访问需要1个机器周期。这个不是很好理解,就像a=1+2看着是一条指令,但是如果编译器没有优化的前提下,它映射到CPU上指令是非常多的。所以指令周期理解一下就好,意思就是一条指令完整的运行后所花的时间,这里的时间是机器周期。


晶振为什么两端老是加电容:这个是晶振设计上的要求,要想晶振起振,必须有一个负载电容。只有你的外部电路中的电容值等于晶振内部设计的负载电容值时,晶振才会发生振荡。想要深入了解晶振可以Google搜索一下相关说明。


写到这里我突然想起IO堵塞的问题,一个IO堵塞后指令是否会堵塞,不过现在想来,这是不一样的东西,一个是CPU指令的触发,一个是系统的执行问题。而且还有时间片的存在。想来不能一起考虑。


个人理解,如有错误还望指出。


时钟周期 机器周期 指令周期


本站如无特别说明即为原创,转而告知:(https://iwonmo.com/archives/1637.html)

标签: 单片机

添加新评论