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