自己設(shè)計(jì)出一個(gè)處理器是一件非常有意義的工作。那現(xiàn)在,我們離這個(gè)工作的目標(biāo)只差最后一點(diǎn)點(diǎn)了,而最后的這一步,又是非常關(guān)鍵的。那就是把我們之前所產(chǎn)生的這些控制信號(hào)集成起來(lái),并且,讓這個(gè)處理器能夠自動(dòng)地工作。

現(xiàn)在我們已經(jīng)分析完了這個(gè)示例的指令系統(tǒng)中所有的指令,我們也知道了每一條指令應(yīng)該設(shè)置怎么樣的控制信號(hào)。

因此,我們現(xiàn)在就已經(jīng)完成了這5個(gè)設(shè)計(jì)步驟當(dāng)中的第4步。接下來(lái)我們要做的就是考慮如何集成這些控制信號(hào),形成完整的控制邏輯。

那我們先把之前的數(shù)據(jù)通路中的實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái),就由一個(gè)方框來(lái)表示,那控制這個(gè)數(shù)據(jù)通路正常運(yùn)轉(zhuǎn)的控制信號(hào),一共有這樣8個(gè),那這些控制信號(hào)是怎么產(chǎn)生的呢?還是要從來(lái)自指令存儲(chǔ)器的指令編碼開(kāi)始說(shuō)起。之前,我們已經(jīng)從指令編碼當(dāng)中提取了若干的信號(hào)作為數(shù)據(jù)通路的輸入,但我們只要回憶一下指令格式就可以知道,還有兩個(gè)位域我們沒(méi)有提及,這就是opcode和function。而正是這兩個(gè)位域是用來(lái)表明指令執(zhí)行什么樣的操作。因此,我們正是需要用這兩個(gè)信號(hào),來(lái)產(chǎn)生下面這些控制信號(hào)。實(shí)現(xiàn)這一部分功能的電路,就被稱為控制邏輯,也就是我們之前提到的控制器。要想知道控制邏輯是怎么實(shí)現(xiàn)的,我們還是先來(lái)看一個(gè)例子。

我們以add指令為例。當(dāng)我們?nèi)』匾粭l指令的編碼,如果是一條add指令,那它所需要執(zhí)行的操作就是這兩個(gè),一是將兩個(gè)寄存器當(dāng)中的數(shù)相加,并保存到另一個(gè)寄存器當(dāng)中,然后就將PC+4更新到PC寄存器當(dāng)中。對(duì)于這條指令所需要的各個(gè)控制信號(hào)的值,我們之前也已經(jīng)詳細(xì)分析過(guò)。例如,這個(gè)RegDst信號(hào)應(yīng)該為1,而RegWr信號(hào)也應(yīng)該為1。又比如,這個(gè)MemtoReg信號(hào)應(yīng)該為0。

那我們把這些信號(hào)的值都摘出來(lái),匯總成一張表格。在這張表中,就是執(zhí)行這條add指令時(shí),各個(gè)控制信號(hào)的值。而add指令對(duì)應(yīng)的opcode域的值和function域的值,我們也列在上面。
那用同樣的方法,我們也可以列出減法指令所對(duì)應(yīng)的所有控制信號(hào)的值,以及其他指令各自對(duì)應(yīng)的控制信號(hào)的值。這樣,我們就得到了一張完整的表格,描述了每條指令和每個(gè)控制信號(hào)之間的關(guān)系。
我們是用一列一列的方式得到了這張表格,然后我們換一個(gè)角度來(lái)看,如果按行來(lái)看,那我們就可以得到每一個(gè)控制信號(hào)的邏輯表達(dá)式。我們就以第一行這個(gè)RegDst信號(hào)為例。

那從這一行可以看出,只有當(dāng)前指令是加法或者減法指令時(shí),RegDst這個(gè)控制信號(hào)才需要為1,其他時(shí)候都為0就可以了。那我們可以把這個(gè)控制信號(hào)的邏輯表達(dá)式寫出來(lái),如果我們有一根信號(hào)標(biāo)明現(xiàn)在是加法指令,即為add;另外有根信號(hào)標(biāo)明現(xiàn)在是減法指令,即為sub,那這個(gè)RegDst的控制信號(hào)就等于add和sub這兩個(gè)信號(hào)進(jìn)行或操作。那我們還得進(jìn)一步分析,add和sub這兩個(gè)信號(hào)應(yīng)該如何生成。
那我們先來(lái)看add指令的編碼。add指令是一條R型指令,根據(jù)R型指令的位域劃分,其opcode域都應(yīng)該為0,而function域則指明了在R型指令當(dāng)中細(xì)分的指令類別。因此,對(duì)于add指令來(lái)說(shuō),其opcode域?yàn)槿?,而function域的第0位到第4位為0, 第5位為1。這樣一種信號(hào)的組合就代表了當(dāng)前指令是add指令。那我們就可以把a(bǔ)dd指令的邏輯表達(dá)式寫出來(lái)。
我們先用一根rtype信號(hào)來(lái)表示當(dāng)前是一個(gè)R型指令,然后我們來(lái)看后面的信號(hào),就是function域的第5位,對(duì)于add指令來(lái)說(shuō),這一位應(yīng)該為1,而function的第4位,一直到第0位,都應(yīng)該為0。所以我們將function 0到4,每一位都先取非,
然后與function域的第5位,以及這個(gè)rtype信號(hào),一起進(jìn)行與操作,這樣就可以得到了add信號(hào)。我們用類似的方法也可以得到sub這個(gè)信號(hào)。
那么rtype這個(gè)信號(hào)又是如何產(chǎn)生呢? 這非常地簡(jiǎn)單,因?yàn)镽型指令就是opcode全為0。所以,我們只需要把opcode中的每一位都先取非,然后進(jìn)行與操作,那么當(dāng)opcode全為0時(shí),這個(gè)rtype信號(hào)就會(huì)為1。我們把這些邏輯表達(dá)式連起來(lái),就可以得到了RegDst這個(gè)控制信號(hào)的邏輯表達(dá)式。
有了這樣的邏輯表達(dá)式,我們就可以用與門和非門畫出產(chǎn)生這個(gè)控制信號(hào)的電路圖來(lái)。這樣,對(duì)于這一個(gè)控制信號(hào)來(lái)說(shuō),它的控制邏輯就已經(jīng)是確定的了。

那我們用同樣的方法還可以得到其他控制信號(hào)的邏輯表達(dá)式。例如ALUSrc這個(gè)信號(hào),我們通過(guò)查詢剛才的表格可以知道,它是在 ori指令、load指令和store指令,這三條指令執(zhí)行時(shí)是有效的。因此我們注意下面,我們只要用類似的方法得到ori、lw和sw,這三條指令對(duì)應(yīng)的邏輯表達(dá)式,我們就可以得到ALUSrc這個(gè)控制信號(hào)的邏輯表達(dá)式了。
類似地,我們就可以得到所有控制信號(hào)的邏輯表達(dá)式。那我們注意到,在下面這個(gè)區(qū)域,所有的信號(hào)都是來(lái)自指定的編碼了。而且,在對(duì)一些信號(hào)進(jìn)行取非操作之后,這些邏輯表達(dá)式全都只有與操作。而上面這個(gè)區(qū)域的表達(dá)式都是在下面這些信號(hào)的基礎(chǔ)上,進(jìn)行了或操作,從而產(chǎn)生了最終的控制信號(hào)。

因此,我們可以畫出這樣的一個(gè)控制器的示意圖。
我們把指令編碼中opcode的這六位和function的這六位連出來(lái),先接到一組由與門構(gòu)成的邏輯電路中。那么這一個(gè)邏輯電路就實(shí)現(xiàn)了上一頁(yè)中下面這片區(qū)域的那些表達(dá)式,從而產(chǎn)生了一組中間信號(hào),那么再將這些信號(hào)接入一組由或門組成的邏輯電路,這組邏輯電路就實(shí)現(xiàn)了上一頁(yè)中上半部分那些邏輯表達(dá)式。最后就可以得到了我們想要的所有的控制信號(hào)。
那么這些邏輯電路就是我們剛才所提到的控制邏輯,這樣我們就有了控制器的實(shí)現(xiàn)。 在這樣的電路實(shí)現(xiàn)下,我們固定地將取回指令的最高六位和最低六位,連接到控制邏輯中,那經(jīng)過(guò)了這些與門和或門之后,就會(huì)自動(dòng)地生成對(duì)應(yīng)的控制信號(hào)。而這些控制信號(hào)的值,肯定符合我們剛才對(duì)每條指令分析的需求,這樣在指令執(zhí)行的過(guò)程中,就不需要任何智力因素的介入去分析當(dāng)前到底是什么指令,以及需要產(chǎn)生什么樣的控制信號(hào)。一切都是通過(guò)這樣的控制邏輯電路自動(dòng)生成的,這樣,處理器就能一條接一條地取回指令自動(dòng)地執(zhí)行下去。

現(xiàn)在我們已經(jīng)完成了控制信號(hào)的集成,并形成了完整的控制邏輯電路,這最后一步工作,我們也就已經(jīng)完成了。
現(xiàn)在,我們已經(jīng)完成了一個(gè)處理器結(jié)構(gòu)設(shè)計(jì)的步驟了。雖然這個(gè)處理器只是單周期的,而且也只支持6條指令,非常地簡(jiǎn)單。但是它確實(shí)是一個(gè)可以使用的處理器了。如果你有興趣,還可以繼續(xù)深入到物理設(shè)計(jì)的環(huán)節(jié),把它真正地制造出來(lái)。
編輯:hfy
-
處理器
+關(guān)注
關(guān)注
68文章
20350瀏覽量
255429 -
控制信號(hào)
+關(guān)注
關(guān)注
0文章
200瀏覽量
12735 -
控制邏輯
+關(guān)注
關(guān)注
0文章
14瀏覽量
2613
發(fā)布評(píng)論請(qǐng)先 登錄
FM3164/FM31256:集成F - RAM的處理器伴侶芯片深度剖析
TMS320R2811和TMS320R2812數(shù)字信號(hào)處理器深度解析
探秘SCF5249集成ColdFire?微處理器:性能與應(yīng)用的深度剖析
AD9979:高速數(shù)字視頻相機(jī)的理想CCD信號(hào)處理器
探索ADDI7004:高性能圖像信號(hào)處理器的卓越之選
高性能雙路 CCD 信號(hào)處理器 AD9972:助力高速數(shù)字?jǐn)z像應(yīng)用
AD9942:雙通道14位CCD信號(hào)處理器的技術(shù)剖析與應(yīng)用指南
AD9928:高度集成的CCD信號(hào)處理器
ADSP-CM40xF系列混合信號(hào)控制處理器:高性能與多功能的完美融合
ADAU1401A音頻處理器:高性能音頻解決方案的首選
PGA460超聲波信號(hào)處理器與換能器驅(qū)動(dòng)器的深度解析
大科學(xué)裝置信號(hào)采集處理解決方案
HXS320F280049C數(shù)字信號(hào)處理器(DSP)芯片
LM98620成像信號(hào)處理器數(shù)據(jù)手冊(cè)
控制信號(hào)集成處理器的設(shè)計(jì)方案
評(píng)論