上图的一个方波称为一个脉冲,类似于人类的脉搏跳动。对于每一个方形脉冲,电压或电路从0上升到最大值的那条线叫做上升沿;反之,电压或电流逐渐下降的那条线叫做下降沿。一个脉冲称为CPU的一个时钟信号,或者时钟脉冲。一个脉冲周期就叫CPU时钟周期,一个时钟周期内时钟信号震荡一次。
两个脉冲相继出现的间隔时间,就是脉冲周期,它是频率的倒数;而将在单位时间(1秒)内所产生的脉冲个数称为频率。
频率的单位有:Hz(赫)、kHz(千赫)、MHz(兆赫)、GHz(吉赫)。
其中1GHz=1000MHz,1MHz=1000kHz,1kHz=1000Hz。计算脉冲信号周期的时间单位及相应的换算关系是:s(秒)、ms(毫秒)、μs(微秒)、ns(纳秒)
其中:1s=1000ms,1 ms=1000μs(微秒),1μs=1000ns。 CPU一定需要时钟吗?CPU可以有时钟,也可以没有时钟。使用时钟工作的CPU被称为同步CPU (synchronous CPU),而不使用时钟工作的CPU被称为异步CPU (asynchronous CPU)。目前市面上广泛销售的CPU都是同步CPU。异步CPU要比同步CPU更快,因为异步的CPU接到输入立马就响应然后输出,不需要同步等待其他信号,用的时间更少,所以异步CPU快于同步CPU。那么为什么大多数的CPU采用时钟的方式呢?是因为异步CPU设计起来极为复杂,虽然在时间上可以有些优势,但是如果在纳秒这个级别,快100ns甚至1000ns对于人来说几乎是感觉不到的,却增加了电路设计的复杂程度,要知道CPU的电路逻辑本生就是人类一壮举,如果为了减少纳秒级别的时间,而增加本身就已经及其复杂的电路逻辑,无论是时间还是人力成本都会大大增加的。所以设计CPU的工程师们,一定比我们更清楚采用什么样的设计,同步CPU是更好的选择。
为什么CPU需要时钟?前面我们知道目前市场上销售的CPU都是需要时钟的同步CPU,那么CPU为什么需要时钟呢?
这里有一篇文章讲的很好,解释了为什么CPU需要时钟:为什么CPU需要时钟这种概念
以下内容引自上面的文章
首先考虑如下逻辑电路:
当A=B=1时,Q=0。当输入信号发生变化时,逻辑元件不会立即对输入变化做出反应,会有一个传播时延(propagation delay)。当B变化为0时,由于B也作为XOR的直接输入,所以XOR异或门会立即感知一个输入变为0的状态变化,XOR输出变为了1。但是由于传播时延的作用,AND与门的输出会过一小段时间才变为0,XOR的输出会在变为1后隔一小段时间重现变为0。表现为下图就是这样:
上面这种现象叫作空翻(race condition),即指输出中出现了一个不希望有的脉冲信号。
一个简单的办法就是在输出端放置一个边沿触发器:
边沿触发器的作用就是只有当CLK端输入从0变到1时,数据端D的输入才会影响边沿触发器的输出。这样,所有的传播时延都会被边沿触发器所隐藏掉,这时Q端的输出将变得稳定。比如:
其中灰色的部分代表没有边沿触发器时的Q端输出状态。我们可以看出,当有了边沿触发器后,Q端的输出变得稳定,基本消除了传播时延。
从上面的例子我们可以看出CPU为什么要时钟:目前绝大多数的微处理器都是被同步时序电路所驱动,而时序电路由各种逻辑门组成。正如上面说的那样,逻辑门需要一小段时间对输入的变化做出反应(propagation delay)。所以需要时钟周期来容纳传播时延,并且时钟周期应当大到需要容纳所有逻辑门的传播时延。
当然,目前也有Asynchronous sequential logic,即不需要时钟信号做同步。但是这种异步逻辑电路虽然速度比同步时序电路快,然而设计起来比同步时序电路复杂的多,并且会遇到上面说的空翻现象(race condition),所以,现在绝大多数的CPU还是需要时钟做信号同步的。
CPU的时钟是如何产生的? 先知道什么是振荡器CPU的时钟信号就是一个脉冲,什么东西可以产生脉冲呢,那就是振荡器。在逻辑电路中,一个首尾相连的非门就构成了一个振荡器。记住下面这幅图的非门符号。
只要把非门的输出和输入相连就可以构成一个振荡器。
上面就是振荡器的逻辑电路图,下面就是振荡器的样子。
那这个东西是怎么工作的呢?在了解这个振荡器怎么工作之前,还有一个东西需要知道,就是常闭触点的继电器。为什么要知道常闭触点继电器?因为一个非门的实现就是通过常闭触点的继电器来实现的。下图就是一个常闭触点的电磁继电器。
我们在初中物理就知道,电能生磁,在电流周围会产生磁场,给铁通电就能就能让铁产生磁力,这就是电磁铁。图中有一个很大的线圈,只要在这个线圈的两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服弹簧的返回拉力被吸向铁芯,从而带动动触点与常闭触点分离,与常开触点接通。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力下返回原来的位置,于是动触点与常闭触点恢复接通,与常开触点分离。这样的常闭触点继电器就是一个非门。因为它输入1,输出却是0.
现在的情况是打开电源开关,衔铁分离;断开电源开关,衔铁闭合,这样只可以振荡一次,想想如果将它的输出作为输入,它就可以分离,闭合,分离,闭合…,只要有电源,它就可以一直振荡下去。我们把这种输出作为下一次的输入的常闭触点继电器就叫做振荡器。
所以,当电源通路的时候,衔铁臂会被吸引,电路断开。当电路断开,失去吸引力,衔铁臂恢复位置,电路又接通。所以,振荡器的输出在0和1之间交替变化,于是就会产生一个一个的脉冲,如下图。
你可能会问,这东西又慢又大,怎么可能作为CPU的部件呢?
确实,这东西不可能放进CPU中。说这个大家伙不过是为了更好理解振荡器是什么,这有助于对后面内容的理解。
那CPU中是靠什么来产生一个一个的时钟脉冲呢?产生脉冲一定是振荡器,只不过在CPU中,振荡器不是靠电磁铁来实现了。CPU是一个IC(集成电路),它的时钟脉冲由晶振来产生。
晶振这篇文章讲的很好:晶振的讲解及使用