上圖的一個方波稱為一個脈沖,類似于人類的脈搏跳動。對于每一個方形脈沖,電壓或電路從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設計起來極為復雜,雖然在時間上可以有些優(yōu)勢,但是如果在納秒這個級別,快100ns甚至1000ns對于人來說幾乎是感覺不到的,卻增加了電路設計的復雜程度,要知道CPU的電路邏輯本生就是人類一壯舉,如果為了減少納秒級別的時間,而增加本身就已經及其復雜的電路邏輯,無論是時間還是人力成本都會大大增加的。所以設計CPU的工程師們,一定比我們更清楚采用什么樣的設計,同步CPU是更好的選擇。
為什么CPU需要時鐘?前面我們知道目前市場上銷售的CPU都是需要時鐘的同步CPU,那么CPU為什么需要時鐘呢?
這里有一篇文章講的很好,解釋了為什么CPU需要時鐘:為什么CPU需要時鐘這種概念
以下內容引自上面的文章
首先考慮如下邏輯電路:
當A=B=1時,Q=0。當輸入信號發(fā)生變化時,邏輯元件不會立即對輸入變化做出反應,會有一個傳播時延(propagation delay)。當B變化為0時,由于B也作為XOR的直接輸入,所以XOR異或門會立即感知一個輸入變?yōu)?的狀態(tài)變化,XOR輸出變?yōu)榱?。但是由于傳播時延的作用,AND與門的輸出會過一小段時間才變?yōu)?,XOR的輸出會在變?yōu)?后隔一小段時間重現變?yōu)?。表現為下圖就是這樣:
上面這種現象叫作空翻(race condition),即指輸出中出現了一個不希望有的脈沖信號。
一個簡單的辦法就是在輸出端放置一個邊沿觸發(fā)器:
邊沿觸發(fā)器的作用就是只有當CLK端輸入從0變到1時,數據端D的輸入才會影響邊沿觸發(fā)器的輸出。這樣,所有的傳播時延都會被邊沿觸發(fā)器所隱藏掉,這時Q端的輸出將變得穩(wěn)定。比如:
其中灰色的部分代表沒有邊沿觸發(fā)器時的Q端輸出狀態(tài)。我們可以看出,當有了邊沿觸發(fā)器后,Q端的輸出變得穩(wěn)定,基本消除了傳播時延。
從上面的例子我們可以看出CPU為什么要時鐘:目前絕大多數的微處理器都是被同步時序電路所驅動,而時序電路由各種邏輯門組成。正如上面說的那樣,邏輯門需要一小段時間對輸入的變化做出反應(propagation delay)。所以需要時鐘周期來容納傳播時延,并且時鐘周期應當大到需要容納所有邏輯門的傳播時延。
當然,目前也有Asynchronous sequential logic,即不需要時鐘信號做同步。但是這種異步邏輯電路雖然速度比同步時序電路快,然而設計起來比同步時序電路復雜的多,并且會遇到上面說的空翻現象(race condition),所以,現在絕大多數的CPU還是需要時鐘做信號同步的。
CPU的時鐘是如何產生的? 先知道什么是振蕩器CPU的時鐘信號就是一個脈沖,什么東西可以產生脈沖呢,那就是振蕩器。在邏輯電路中,一個首尾相連的非門就構成了一個振蕩器。記住下面這幅圖的非門符號。
只要把非門的輸出和輸入相連就可以構成一個振蕩器。
上面就是振蕩器的邏輯電路圖,下面就是振蕩器的樣子。
那這個東西是怎么工作的呢?在了解這個振蕩器怎么工作之前,還有一個東西需要知道,就是常閉觸點的繼電器。為什么要知道常閉觸點繼電器?因為一個非門的實現就是通過常閉觸點的繼電器來實現的。下圖就是一個常閉觸點的電磁繼電器。
我們在初中物理就知道,電能生磁,在電流周圍會產生磁場,給鐵通電就能就能讓鐵產生磁力,這就是電磁鐵。圖中有一個很大的線圈,只要在這個線圈的兩端加上一定的電壓,線圈中就會流過一定的電流,從而產生電磁效應,銜鐵就會在電磁力吸引的作用下克服彈簧的返回拉力被吸向鐵芯,從而帶動動觸點與常閉觸點分離,與常開觸點接通。當線圈斷電后,電磁的吸力也隨之消失,銜鐵就會在彈簧的反作用力下返回原來的位置,于是動觸點與常閉觸點恢復接通,與常開觸點分離。這樣的常閉觸點繼電器就是一個非門。因為它輸入1,輸出卻是0.
現在的情況是打開電源開關,銜鐵分離;斷開電源開關,銜鐵閉合,這樣只可以振蕩一次,想想如果將它的輸出作為輸入,它就可以分離,閉合,分離,閉合…,只要有電源,它就可以一直振蕩下去。我們把這種輸出作為下一次的輸入的常閉觸點繼電器就叫做振蕩器。
所以,當電源通路的時候,銜鐵臂會被吸引,電路斷開。當電路斷開,失去吸引力,銜鐵臂恢復位置,電路又接通。所以,振蕩器的輸出在0和1之間交替變化,于是就會產生一個一個的脈沖,如下圖。
你可能會問,這東西又慢又大,怎么可能作為CPU的部件呢?
確實,這東西不可能放進CPU中。說這個大家伙不過是為了更好理解振蕩器是什么,這有助于對后面內容的理解。
那CPU中是靠什么來產生一個一個的時鐘脈沖呢?產生脈沖一定是振蕩器,只不過在CPU中,振蕩器不是靠電磁鐵來實現了。CPU是一個IC(集成電路),它的時鐘脈沖由晶振來產生。
晶振這篇文章講的很好:晶振的講解及使用