为什么CPU需要时钟
为什么CPU需要时钟这样一个概念?
什么是时钟脉冲,CPU为什么需要时钟,时钟信号是怎么产生的?
上面这个图的方波就是一个脉冲,类比于人类的脉搏跳动。一个脉冲称之为CPU的一个时钟信号
,或者时钟脉冲
。一个脉冲周期就叫CPU时钟周期,一个时钟周期内时钟信号震荡一次。
接下来我们先来看这个电路图:
在上图中,起初 A = B = 1 A=B=1 A=B=1时, Q = 0 Q=0 Q=0.当输入信号发生变化时,逻辑元件不会立即对输入变化做出反应,会有一个传播时延(propagation delay)。当这个B变化为0时,由于B也作为XOR直接输入,所以XOR异或门会立即感知一个输入变化为0的状态变化,XOR输出变为了1。但是由于传播时延的作用,与门的输出会过一小段时间才变为0,XOR们的输出会在变为1后隔一小段时间重新变回0.可以通过下图来看这个变化的过程:
上面的这种现象叫做空翻(race condition),即指出现了一个不希望有的脉冲信号。可以看到虽然AB是一样的结果,但是输出的Q却得到了不一样的结果,对应Q中突起的那一小块。
为了解决这种传输时延带来的错误结果,最简单的方法就是在输出端放置一个边沿触发器:
可以看到我们在原来电路的基础上,添加上了一个CLK。边沿触发器的作用就是只有当CLK端输入从0变为1时,数据端D的输入才会影响边沿触发器的输出。这样,所有的传播时延都会被边沿触发器所隐藏掉,这个时候Q端的输出将变得稳定(不会受传送时延的影响)。比如:
上图中Q中的灰色部分代表没有边沿触发器时Q端状态的输出。我们可以看出,当有了边沿触发器之后,Q端的输出变得稳定,基本消除了传播时延。
根据上图我们进一步理解前面说的边缘触发器的作用。在上述的电路中,只有当CLK处于高电频的时候输出端Q才会接收输入。所以只要AB运作时的传输时延控制在CLK低电频率的时间段内,传输时延产生的影响就会被输出端屏蔽掉。
通过上面的例子我们可以看出CPU为什么要时钟:目前大多数的微处理器都是呗同步时序电路所驱动,而时序电路由各种逻辑门组成。正如上面说的那样,逻辑门需要一小段时间对输入的变化做出反应。所以需要时钟周期来容纳传播时延,并且时钟周期应当打到容乃所有逻辑门的传输时延。
当然,还有一种异步逻辑电路(Asynchronous sequential logic),即不需要时钟信号做同步。但是这种异步逻辑电路虽然速度比同步时序电路快,然而设计起来比同步时序电路复杂的多,并且可能会遇上前面说的空翻现象。所以,现在绝大多数的CPU还是需要时钟做信号同步的。
关于计算机中的时钟脉冲是如何产生的?
计算机中的时钟脉冲是由一个叫晶振部件辅助产生的,这里不细讲。可以理解的是通过晶振可以稳定的脉冲信号,可以作为上图中的CLK。
参考
- 为什么CPU需要时钟这个概念
- Why do Microcontrollers need a Clock
- 晶振的讲解及使用