為什麼CPU需要時鐘這種概念?

2021-09-24 15:58:29 字數 1132 閱讀 9203

本文同時發表在

最近在研究計算機裡的基本邏輯電路,想到乙個問題:為什麼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。每次計算就是這些小電容翻來覆去的充電放電。很多小電容組成乙個個基本的模組,比如輸入0011輸出0100 但從輸入0011到實際輸出0100是有乙個延遲的。因為前面說了,電容要充電放電,這個需要時間。這些小模組各種連線,組成複雜的功...

邊沿觸發是什麼意思 為什麼CPU需要時鐘這種概念?

最近在研究計算機裡的基本邏輯電路,想到乙個問題 為什麼cpu需要時鐘這樣的概念?首先考慮如下邏輯電路 當a b 1時,q 0。當輸入訊號發生變化時,邏輯元件不會立即對輸入變化做出反應,會有乙個傳播時延 propagation delay 當b變化為0時,由於b也作為xor的直接輸入,所以xor異或門...

CPU定址?為什麼需要虛擬位址空間?

cpu定址 現代處理器使用的是一種稱為虛擬定址的定址方式。使用虛擬定址,cpu需要將虛擬位址翻譯成實體地址,這樣才能訪問到真實的物理記憶體。實際上完成虛擬位址轉換為實體地址轉換的硬體是cpu中含有乙個被稱為記憶體管理單元的硬體。1.使用者可以訪問任意的記憶體,定址記憶體的每個位元組,這樣容易破壞作業...