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