RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

電路中的控制信號實現(xiàn)方案 時序電路如何組成處理器

454398 ? 來源:博客園 ? 作者:牛有肉 ? 2020-11-20 14:27 ? 次閱讀

時序電路

首先來看兩個問題:

1.為什么CPU要用時序電路,時序電路與普通邏輯電路有什么區(qū)別。

2.觸發(fā)器、鎖存器以及時鐘脈沖對時序電路的作用是什么,它們是如何工作的。

帶著這兩個問題,我們從頭了解一下邏輯電路。要了解邏輯電路,首先我們便要了解組成邏輯電路的基本單位:邏輯門。

邏輯門

邏輯門是數(shù)字電路組成的基本單元,它們的輸出是它們輸入位值的布爾函數(shù)。最常用的邏輯門便是我們熟知的與、或、非。

對于與門,只有a、b輸入都為1時,輸出才為1。

對于或門,輸入a、b只要有一個為1,輸出便為1。

對于非門,若輸入為1則輸出為0,輸入為0則輸出為1。

以上三種是最基本的邏輯門,我們可以通過它們的組合來實現(xiàn)復(fù)雜的邏輯推演,最簡單的比如與或、異或等。再復(fù)雜的邏輯,都可以用最基本的邏輯的特定組合實現(xiàn)出來,就像我們應(yīng)用層工程師靠有限的語法可以創(chuàng)造出近乎無限的應(yīng)用一樣。

邏輯門總是活動的,一旦一個門的輸入變化了,在很短的時間內(nèi),輸出便會相應(yīng)的變化。

使用很多的邏輯門構(gòu)建成一張網(wǎng),便得到了一個實現(xiàn)的復(fù)雜邏輯的計算塊(computational Block),稱為組合電路。組合電路的構(gòu)成遵循以下原則:

1. 每個邏輯門的輸入必須連接了一個系統(tǒng)的輸入、某個存儲單元的輸出或某個邏輯門的輸出(三選一)。

2. 兩個或多個邏輯門的輸出不能連接在一起,否則可能產(chǎn)生互相矛盾的信號造成錯誤或電路故障。

3. 這個網(wǎng)必須是無環(huán)的,也就是說不能有回路,否則會使網(wǎng)的計算邏輯有歧義。

了解了基本的邏輯門和組合電路的概念,我們再介紹一下電路中的控制信號是如何實現(xiàn)的。

控制信號

我們說過再復(fù)雜的邏輯也可以靠最基本的邏輯組合而成,輸入輸出的控制邏輯也不例外。為了更好的理解控制信號是如何工作的,我們介紹一種非常有用的組合電路:位多路復(fù)用器。

其中的 s 輸入控制著兩個與門。其中位于上方的與門的邏輯是 !s && b ,位于下方的與門的邏輯是 s && a 。

也就是說當(dāng) s 的輸入為 1 時,b的輸入是無法到達或門的, 0&&b 恒為零。此時 a 的輸入便是整個電路的輸出。

反之當(dāng) s 輸入為 0 時,a 的輸入是無法到達或門的 ,0&&a 恒為零。此時 b 的輸入便是整個電路的輸出。

可以看到 s 輸入的電位高低直接決定著 a、b 中哪個輸入有效,這便是控制信號工作的一個典型例子。

看到控制信號是如何工作的,我們來假想一下簡單的寄存器是如何依賴一個時鐘控制信號工作的。一個時鐘信號周期的由低電平變?yōu)楦唠娖皆儆筛唠娖阶優(yōu)榈碗娖健?/p>

以該信號作為寄存器的控制信號,寄存器內(nèi)每一位輸入位都與該信號進行與邏輯后再進入寄存器,那么可以想象,在時鐘周期內(nèi)的低電平部分,任何信號無法寫入寄存器,等待時鐘信號變?yōu)楦唠娖綍r寄存器才變?yōu)榭蓪懭霠顟B(tài)。這就是一個簡單的觸發(fā)器了,隨著時鐘信號周而復(fù)始的改變著自己的狀態(tài)。

當(dāng)然真正的觸發(fā)器的實現(xiàn)比這復(fù)雜的多,這里只是方便理解舉了最簡單的例子。

明白了上述基本概念,我們看一下普通組合邏輯電路與時序電路的區(qū)別。

普通組合邏輯電路與時序電路的區(qū)別

1.毛刺容忍

組合邏輯電路從本質(zhì)上講,不存儲任何信息。它們只是簡單的響應(yīng)輸入信號,產(chǎn)生符合輸入的某個邏輯表達式結(jié)果的輸出。

而時鐘電路是擁有自己的狀態(tài)的,時序電路某一個狀態(tài)除了依賴當(dāng)前的輸入外,還依賴電路的上一個狀態(tài)。

而我們想要電路擁有自己的狀態(tài)并可以基于這個狀態(tài)進行計算,必須在組合邏輯電路中引入存儲設(shè)備和控制存儲設(shè)備的周期性變化的時鐘信號。

引入存儲設(shè)備是容易理解的,沒有存儲設(shè)備的電路當(dāng)然是沒有自己的狀態(tài)的,因為它沒有存儲狀態(tài)信息的載體,存儲器就是存儲電路狀態(tài)信息的載體。

而時鐘周期的作用相對就不是那么容易理解,我們舉個例子來理解時鐘信號的作用:

我們來看一個沒有時鐘信號的組合邏輯電路:

我們前面說過,邏輯門總是活動的,一旦一個邏輯門的輸入改變,則輸出會在很短的時間內(nèi)發(fā)生改變。

但是需要注意的是,這個“很短時間內(nèi)”的描述。由于元器件的質(zhì)量/種類不同、路線的長度不同等物理因素的限制,不同的輸入到達輸出的時間是不同的。

比如圖中,c 輸入到達下方的與門與到達上方的與門的兩條路線中,到達下方與門的路線多出了一個非門。那么 c 信號到達上方的與門自然要比到達下方的與門的速度快。

所以當(dāng) c 信號發(fā)生改變時,有一段時間內(nèi),F(xiàn) 端的輸出是錯誤的,因為 A&&C 已經(jīng)到達 F 端但 B&&!C 還沒有到達,也就是說 F1 是比 F0 到達的慢的,存在延遲,如下圖所示:

我們稱這種情況為“毛刺”。

雖然毛刺出現(xiàn)的時間是很短暫的,但是對于一個電路系統(tǒng)的輸出來說卻是致命的。如果我們在發(fā)生毛刺的時間內(nèi)將錯誤的輸出寫入存儲器,接下來的邏輯會一錯再錯并讓我們摸不到頭腦。

而時序電路則不會出現(xiàn)上述問題,我們將A/B/C的輸入到F的輸出看作一個完整的動作,在一個時鐘周期內(nèi)完成。那么,A/B/C的輸入將在時鐘沿觸發(fā),F(xiàn)也將在時鐘沿采集結(jié)果。而在采集結(jié)果時,F(xiàn)的輸出已經(jīng)跨越了毛刺處于穩(wěn)定狀態(tài)。當(dāng)然,這樣時一個鐘周期內(nèi)高電平持續(xù)的時間必須足夠使 F 輸出達到穩(wěn)定狀態(tài)。

這樣,下一個動作(發(fā)生在下一個時鐘周期)如果基于 F 輸出,將得到正確的結(jié)果。這是時序電路與普通邏輯電路的區(qū)別之一:對毛刺的容忍。

可以看到,通過時鐘周期,組合邏輯電路中輸入的變化可以看作一個一個的動作。而在一個時鐘周期內(nèi),電路完成一個最基本的動作,保證下個時鐘周期的動作可以獲取正確的電路狀態(tài)。

如果無法理解電路按動作運轉(zhuǎn)的意義,我們看一個非常簡單的例子:

int a=0;
int b=a;

我們需要將 a=0 執(zhí)行完后,執(zhí)行 b=a 才有意義。a=0沒有執(zhí)行完成或未執(zhí)行時,b=a 的執(zhí)行完全沒有意義。這就是程序按指令運轉(zhuǎn)的重要性,正如電路按動作運轉(zhuǎn)的重要性。

時鐘周期將一個一個的動作隔離開來,確保每個動作在執(zhí)行時,上一個動作已經(jīng)完全執(zhí)行完成了。而存儲器則記錄電路的狀態(tài),每個動作的執(zhí)行結(jié)果放在存儲器中供下個動作使用。

這正是CPU所需要的,CPU執(zhí)行一條一條的指令正可以看作一個一個的動作(當(dāng)然這里并不是指的一條指令,CPU的基本動作是比指令更加細(xì)化的單位,尤其是在流水線的引入之后。指令正是由一個個基本的動作構(gòu)成的,這些基本動作指的是取指令/指令譯碼/指令執(zhí)行/訪存/寫回/PC增加等等)。

時鐘周期像人類的心跳,CPU隨著時鐘節(jié)拍快速又有條不紊的運行。正如前面所說,一個時鐘周期必須足夠CPU完全完成耗時最長的基本動作,時鐘周期對于不同的CPU來說并不是固定的,確定一個CPU的時鐘周期也是一個非常復(fù)雜的任務(wù)。

2.支持反饋邏輯

如果我們要實現(xiàn)一個計數(shù)器,如果用非時序電路實現(xiàn)是這樣的:

上述電路是完全無法使用的,電路的下一個輸出依賴電路現(xiàn)在時刻的狀態(tài),除了上一節(jié)所述的毛刺現(xiàn)象會造成結(jié)果的不可預(yù)計外,電路本身的邏輯存在死循環(huán)。

要支持反饋邏輯,必須使用寄存器將結(jié)果暫存起來,由時鐘沿控制數(shù)據(jù)的反饋更新。

說完了時序電路的特性,我們看看時序電路如何組成處理器

時序電路構(gòu)成處理器

我們可以看到,一個最基本的處理器是這樣一個電路:

1. 可以完成邏輯的運算。

2. 電路需要有自己的狀態(tài)。

3. 每一個輸出除了基于輸入和處理邏輯外,還需要基于當(dāng)前電路的狀態(tài)。

時序電路可以很好的滿足上述特性。對于時序電路來說,時鐘脈沖便是電路的心跳,而寄存器是協(xié)同整個電路按心跳節(jié)拍運轉(zhuǎn)的動脈瓣。

大多數(shù)時候,寄存器處于一種穩(wěn)定狀態(tài),產(chǎn)生的輸出等于它的當(dāng)前狀態(tài)。信號沿著寄存器前面的組合電路傳播。這時產(chǎn)生一個新的寄存器輸入,但當(dāng)當(dāng)前時鐘脈沖處于低電位時,寄存器的輸出仍保持不變。直到時鐘脈沖變?yōu)楦唠娢?,輸入信號便寫入到寄存器中,成為下一個狀態(tài)。直到下一個時鐘上升沿,寄存器的狀態(tài)和輸出都不會發(fā)生改變。

電信號暢通無阻的在組合電路中傳播,而寄存器就成為這種傳播的屏障。只有在每個時鐘的上升沿時,信號才可以通過寄存器進入下一個組合電路。

而一個個的組合電路執(zhí)行著不同的動作,對于整個電路而言,時鐘脈沖與寄存器的配合使得電路在每個動作執(zhí)行完成后才會執(zhí)行下一個動作。處理器在一個時鐘周期內(nèi),執(zhí)行完一個動作并把狀態(tài)更新到寄存器。直到下一個時鐘周期再執(zhí)行下一個動作,此時上個動作已經(jīng)完全執(zhí)行完成了,而電路的最新狀態(tài)也已經(jīng)通過寄存器傳播到了負(fù)責(zé)當(dāng)前動作的電路中來。

換個角度,時鐘周期保證了每個周期結(jié)束時,這個周期內(nèi)的輸入已經(jīng)完整的轉(zhuǎn)化為了輸出。而這個輸出保存在寄存器內(nèi)供下個周期的動作使用。時鐘周期和寄存器的配合將電路要執(zhí)行的動作與動作之間隔離開來。每個動作的結(jié)尾會更新PC寄存器,而這也將成為下一個動作的開始。一個一個動作有條不紊的執(zhí)行,周而復(fù)始。(這種描述僅適用于最簡單的處理器模型,即一個時鐘周期完成一條指令的執(zhí)行的處理器。當(dāng)引入流水線后,由于分支、控制指令等原因造成了流水線冒險,PC的更新有著更加完備的機制,而不是固定的在一條指令的最后更新)

上面便是一個最簡單的處理器結(jié)構(gòu),左邊標(biāo)識了每部分電路對應(yīng)的動作。

我們可以使一個時鐘周期內(nèi)執(zhí)行完成整個指令執(zhí)行(上述所有動作),這樣下一個時鐘周期執(zhí)行下一條指令時可以保證上條指令可以執(zhí)行完成。雖然這樣時鐘周期會長到讓人難以接受,但它保證了指令流的正常流轉(zhuǎn)。

我們可以想象,這樣一個完整的過程是從讀PC計數(shù)器數(shù)值并取指令開始的。PC計數(shù)器中的數(shù)值造成了后面一系列電路狀態(tài)的變化,在PC不改變時,電路處于一個穩(wěn)定的狀態(tài),也就是完整執(zhí)行完一個指令的狀態(tài)。

而當(dāng)PC計數(shù)器一旦發(fā)生改變,將引起整個電路的新一輪的狀態(tài)改變。指令執(zhí)行的最后一個動作便是改變PC計數(shù)器,這樣在下一個時鐘周期,整個電路將執(zhí)行新的指令。

或者我們可以將負(fù)責(zé)各個動作的電路間用寄存器隔離開來,一個時鐘周期內(nèi)只執(zhí)行一個動作而不是一條指令,這樣可以大大加快電路的整體效率。事實上流水線便是這樣做的,為了更高的效率,許多流水線的層級非常深,一個取指/譯碼/執(zhí)行三個動作可能被拆分成十五個甚至更多個動作。這樣一個時鐘周期內(nèi),就可以處理多條指令(當(dāng)然它們處于不同的動作階段)。

典型的流水線簡圖如下:

我們用寄存器將負(fù)責(zé)每一個動作的模塊隔離開來,然后將時鐘周期設(shè)為每個模塊剛好可以向本模塊寄存器寫入數(shù)據(jù)的時間(而不是信號從頭傳播到尾的時間)。這樣一個時鐘周期內(nèi),每個模塊都執(zhí)行一次完整的動作。在單個時鐘周期內(nèi),每個模塊在服務(wù)不同的指令,而不是所有模塊服務(wù)同一個指令(如果這樣則每個模塊只在高電平持續(xù)時間的一小塊時間內(nèi)工作)。在單位時間內(nèi),整個邏輯電路服務(wù)的指令總數(shù)大大增加,也就是吞吐量得到了增加。

因為增加了電路的復(fù)雜性,對于一條指令而言,從頭走到尾所需的時間變長了,但對整個電路而言,吞吐量增加了。這便是流水線機制的意義。

我們在試圖理解流水線的動作時,不要將關(guān)注點放在邏輯電路上,而要將關(guān)注點放在寄存器值的變化上。因為組合邏輯電路不受時鐘信號影響,僅負(fù)責(zé)信號的傳播,真正依賴時鐘信號的是寄存器的寫入行為。我們的目標(biāo)便是寄存器的值隨著時鐘周期發(fā)生正確的變化。當(dāng)組合邏輯A前的輸入(也就是PC寄存器值)發(fā)生變化后,每過一個時鐘周期,該變化便依次傳遞到后面模塊的寄存器中。

流水線聽起來很完美,但也存在一些缺陷。比如我們很難將各個模塊的延遲變?yōu)橐恢碌模麄€電路的速度將受限于最慢的模塊。時鐘周期必須大于最慢模塊的整體計算時間,這就給其它模塊帶來了延遲。另外,流水線的層級也并非是越深越好。隨著流水線層架的加深,寄存器的增多將導(dǎo)致整體電路延遲的增加,當(dāng)層級到達一定深度時,該延遲占用總計算時間的比例增大,造成收益的減小。

指令如流水一樣進入處理器,而不是一條指令執(zhí)行完成后下一條指令才進入處理器。雖然將指令的執(zhí)行拆分成多個小動作會帶來許多麻煩,比如流水線冒險,但其帶來的吞吐量及縮短時鐘周期的收益是值得我們花費精力來解決這些麻煩的。

一個最基本的處理器的實現(xiàn)需要組合邏輯電路和兩種存儲設(shè)備:時鐘寄存器(程序計數(shù)器和指令狀態(tài)寄存器)和隨機訪問存儲器(指令內(nèi)存/數(shù)據(jù)內(nèi)存和寄存器文件)。

組合邏輯不需要任何時序或控制,只要輸入變化了,值就通過邏輯門網(wǎng)絡(luò)傳播。

那么我們還有四個硬件需要用時序控制:程序計數(shù)器/指令狀態(tài)寄存器/數(shù)據(jù)內(nèi)存和寄存器文件。因為時序控制的都是寫入操作,而指令內(nèi)存不需要寫入操作,所以也不需要時序控制。

時鐘脈沖控制著上述四個元器件的寫入操作。時鐘信號觸發(fā)將值寫入到指令狀態(tài)寄存器和隨機訪問存儲器。

處理器真的是一個非常宏大的話題,筆者能力極其有限,只能盡量的從非常宏觀的角度上描述一下對處理器的認(rèn)識(依然很吃力)。

混亂的戰(zhàn)場上,兩個士兵在黑暗的建筑里遇到。 不知道對方是否自己人,只能祈禱對方別沖動。 但如果聽到了槍聲,就已經(jīng)沒有了選擇的余地。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120230
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2256

    瀏覽量

    94476
  • 時序電路
    +關(guān)注

    關(guān)注

    1

    文章

    114

    瀏覽量

    21696
  • 多路復(fù)用器
    +關(guān)注

    關(guān)注

    9

    文章

    873

    瀏覽量

    65297
  • 控制信號
    +關(guān)注

    關(guān)注

    0

    文章

    164

    瀏覽量

    11957
收藏 人收藏

    評論

    相關(guān)推薦

    光耦知識分享 | 探討光耦在微處理器及相關(guān)電路創(chuàng)新應(yīng)用與實踐

    設(shè)備、工業(yè)控制系統(tǒng)等。光耦在微處理器及相關(guān)電路的應(yīng)用主要是用于信號電平轉(zhuǎn)換、電氣隔離和故障保護。以下是光耦在微
    的頭像 發(fā)表于 11-05 09:00 ?171次閱讀
    光耦知識分享 | 探討光耦在微<b class='flag-5'>處理器</b>及相關(guān)<b class='flag-5'>電路</b><b class='flag-5'>中</b>創(chuàng)新應(yīng)用與實踐

    邏輯電路芯片-組合邏輯電路芯片-時序邏輯電路芯片

    、GPU、內(nèi)存控制器等核心部件均大量使用邏輯電路芯片實現(xiàn)復(fù)雜的運算和控制功能。 通信設(shè)備:路由、交換機、基站等通信設(shè)備
    發(fā)表于 09-30 10:47

    時序邏輯電路必不可少的部分是什么

    狀態(tài)信息和當(dāng)前的輸入信號來產(chǎn)生輸出。 具體來說,時序邏輯電路的存儲電路通常由觸發(fā)(Flip-
    的頭像 發(fā)表于 08-28 14:12 ?446次閱讀

    時序邏輯電路的基本概念、組成、分類及設(shè)計方法

    時序邏輯電路是數(shù)字電路的一種重要類型,它不僅在計算機、通信、控制等領(lǐng)域有著廣泛的應(yīng)用,而且對于理解和設(shè)計現(xiàn)代電子系統(tǒng)具有重要意義。 1.
    的頭像 發(fā)表于 08-28 11:45 ?1255次閱讀

    時序邏輯電路的功能表示方法有哪些

    時序邏輯電路是數(shù)字電路的一種重要類型,其特點是電路的輸出不僅取決于當(dāng)前的輸入,還取決于電路的狀
    的頭像 發(fā)表于 08-28 11:41 ?583次閱讀

    時序邏輯電路包括什么器件組成

    時序邏輯電路是一種數(shù)字電路,它根據(jù)輸入信號電路內(nèi)部狀態(tài)的變化產(chǎn)生輸出信號。
    的頭像 發(fā)表于 07-30 15:02 ?861次閱讀

    觸發(fā)時序邏輯電路詳解

    在數(shù)字電路設(shè)計,觸發(fā)時序邏輯電路是構(gòu)建復(fù)雜數(shù)字系統(tǒng)不可或缺的基礎(chǔ)元素。觸發(fā)(Flip-F
    的頭像 發(fā)表于 07-18 17:43 ?1591次閱讀

    探討光耦在微處理器及相關(guān)電路創(chuàng)新應(yīng)用與實踐

    處理器(MCU)是一種集成電路芯片,用于執(zhí)行計算機程序指令和處理數(shù)據(jù)。它是計算機系統(tǒng)的核心部件,負(fù)責(zé)執(zhí)行各種計算、邏輯和控制任務(wù)。光耦在微處理器
    的頭像 發(fā)表于 06-28 11:26 ?328次閱讀
    探討光耦在微<b class='flag-5'>處理器</b>及相關(guān)<b class='flag-5'>電路</b><b class='flag-5'>中</b>創(chuàng)新應(yīng)用與實踐

    時序電路的工作原理及功能是什么

    時序電路是數(shù)字電子學(xué)的一個核心概念,它利用了觸發(fā)或其他記憶元件來存儲信息,并根據(jù)輸入信號和當(dāng)前狀態(tài)產(chǎn)生輸出。
    的頭像 發(fā)表于 05-23 15:14 ?2207次閱讀

    什么電路具有記憶功能 時序電路是不含有記憶功能的器件對嗎

    什么電路具有記憶功能 時序電路是不含有記憶功能的器件對嗎 什么電路具有記憶功能? 電路的記憶功能是指其能夠存儲和保持之前輸入的信息并在需要時進行檢索和使用的能力。在現(xiàn)代
    的頭像 發(fā)表于 03-26 16:12 ?2541次閱讀

    時序邏輯電路輸出與什么有關(guān) 時序邏輯電路由哪兩部分組成

    時序邏輯電路的輸出與輸入信號以及內(nèi)部存儲狀態(tài)有關(guān)。時序邏輯電路是一類特殊的數(shù)字
    的頭像 發(fā)表于 02-06 14:30 ?2613次閱讀

    時序電路基本原理是什么 時序電路由什么組成

    組成部分,它提供了電路各個階段的時間基準(zhǔn)。觸發(fā)負(fù)責(zé)存儲和傳輸數(shù)據(jù),它們根據(jù)時鐘信號的變化來決定在何時改變輸出狀態(tài)。組合邏輯
    的頭像 發(fā)表于 02-06 11:30 ?2029次閱讀

    時序電路的分類 時序電路的基本單元電路有哪些

    時序電路可以分為同步時序電路和異步時序電路。接下來,我們將詳細(xì)討論時序電路的分類以及其基本單元電路。 一、同步
    的頭像 發(fā)表于 02-06 11:25 ?2531次閱讀

    時序電路包括兩種類型 時序電路必然存在狀態(tài)循環(huán)對不對

    時序電路是由觸發(fā)時序元件組成的數(shù)字電路,用于處理時序
    的頭像 發(fā)表于 02-06 11:22 ?1419次閱讀

    時序邏輯電路有哪些 時序邏輯電路和組合邏輯電路區(qū)別

    時序邏輯電路是一種能夠存儲信息并根據(jù)時鐘信號按照特定順序執(zhí)行操作的電路。它是計算機硬件中非常重要的一部分,用于實現(xiàn)存儲器、
    的頭像 發(fā)表于 02-06 11:18 ?9752次閱讀
    RM新时代网站-首页