自己設(shè)計(jì)出一個(gè)處理器是一件非常有意義的工作。那現(xiàn)在,我們離這個(gè)工作的目標(biāo)只差最后一點(diǎn)點(diǎn)了,而最后的這一步,又是非常關(guān)鍵的。那就是把我們之前所產(chǎn)生的這些控制信號(hào)集成起來,并且,讓這個(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步。接下來我們要做的就是考慮如何集成這些控制信號(hào),形成完整的控制邏輯。
那我們先把之前的數(shù)據(jù)通路中的實(shí)現(xiàn)細(xì)節(jié)隱藏起來,就由一個(gè)方框來表示,那控制這個(gè)數(shù)據(jù)通路正常運(yùn)轉(zhuǎn)的控制信號(hào),一共有這樣8個(gè),那這些控制信號(hào)是怎么產(chǎn)生的呢?還是要從來自指令存儲(chǔ)器的指令編碼開始說起。之前,我們已經(jīng)從指令編碼當(dāng)中提取了若干的信號(hào)作為數(shù)據(jù)通路的輸入,但我們只要回憶一下指令格式就可以知道,還有兩個(gè)位域我們沒有提及,這就是opcode和function。而正是這兩個(gè)位域是用來表明指令執(zhí)行什么樣的操作。因此,我們正是需要用這兩個(gè)信號(hào),來產(chǎn)生下面這些控制信號(hào)。實(shí)現(xiàn)這一部分功能的電路,就被稱為控制邏輯,也就是我們之前提到的控制器。要想知道控制邏輯是怎么實(shí)現(xiàn)的,我們還是先來看一個(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ì)分析過。例如,這個(gè)RegDst信號(hào)應(yīng)該為1,而RegWr信號(hào)也應(yīng)該為1。又比如,這個(gè)MemtoReg信號(hào)應(yīng)該為0。
那我們把這些信號(hào)的值都摘出來,匯總成一張表格。在這張表中,就是執(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è)角度來看,如果按行來看,那我們就可以得到每一個(gè)控制信號(hào)的邏輯表達(dá)式。我們就以第一行這個(gè)RegDst信號(hào)為例。
那從這一行可以看出,只有當(dāng)前指令是加法或者減法指令時(shí),RegDst這個(gè)控制信號(hào)才需要為1,其他時(shí)候都為0就可以了。那我們可以把這個(gè)控制信號(hào)的邏輯表達(dá)式寫出來,如果我們有一根信號(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)該如何生成。
那我們先來看add指令的編碼。add指令是一條R型指令,根據(jù)R型指令的位域劃分,其opcode域都應(yīng)該為0,而function域則指明了在R型指令當(dāng)中細(xì)分的指令類別。因此,對(duì)于add指令來說,其opcode域?yàn)槿?,而function域的第0位到第4位為0, 第5位為1。這樣一種信號(hào)的組合就代表了當(dāng)前指令是add指令。那我們就可以把a(bǔ)dd指令的邏輯表達(dá)式寫出來。
我們先用一根rtype信號(hào)來表示當(dāng)前是一個(gè)R型指令,然后我們來看后面的信號(hào),就是function域的第5位,對(duì)于add指令來說,這一位應(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)生呢? 這非常地簡單,因?yàn)镽型指令就是opcode全為0。所以,我們只需要把opcode中的每一位都先取非,然后進(jìn)行與操作,那么當(dāng)opcode全為0時(shí),這個(gè)rtype信號(hào)就會(huì)為1。我們把這些邏輯表達(dá)式連起來,就可以得到了RegDst這個(gè)控制信號(hào)的邏輯表達(dá)式。
有了這樣的邏輯表達(dá)式,我們就可以用與門和非門畫出產(chǎn)生這個(gè)控制信號(hào)的電路圖來。這樣,對(duì)于這一個(gè)控制信號(hào)來說,它的控制邏輯就已經(jīng)是確定的了。
那我們用同樣的方法還可以得到其他控制信號(hào)的邏輯表達(dá)式。例如ALUSrc這個(gè)信號(hào),我們通過查詢剛才的表格可以知道,它是在 ori指令、load指令和store指令,這三條指令執(zhí)行時(shí)是有效的。因此我們注意下面,我們只要用類似的方法得到ori、lw和sw,這三條指令對(duì)應(yīng)的邏輯表達(dá)式,我們就可以得到ALUSrc這個(gè)控制信號(hào)的邏輯表達(dá)式了。
類似地,我們就可以得到所有控制信號(hào)的邏輯表達(dá)式。那我們注意到,在下面這個(gè)區(qū)域,所有的信號(hào)都是來自指定的編碼了。而且,在對(duì)一些信號(hào)進(jìn)行取非操作之后,這些邏輯表達(dá)式全都只有與操作。而上面這個(gè)區(qū)域的表達(dá)式都是在下面這些信號(hào)的基礎(chǔ)上,進(jìn)行了或操作,從而產(chǎn)生了最終的控制信號(hào)。
因此,我們可以畫出這樣的一個(gè)控制器的示意圖。
我們把指令編碼中opcode的這六位和function的這六位連出來,先接到一組由與門構(gòu)成的邏輯電路中。那么這一個(gè)邏輯電路就實(shí)現(xiàn)了上一頁中下面這片區(qū)域的那些表達(dá)式,從而產(chǎn)生了一組中間信號(hào),那么再將這些信號(hào)接入一組由或門組成的邏輯電路,這組邏輯電路就實(shí)現(xiàn)了上一頁中上半部分那些邏輯表達(dá)式。最后就可以得到了我們想要的所有的控制信號(hào)。
那么這些邏輯電路就是我們剛才所提到的控制邏輯,這樣我們就有了控制器的實(shí)現(xiàn)。 在這樣的電路實(shí)現(xiàn)下,我們固定地將取回指令的最高六位和最低六位,連接到控制邏輯中,那經(jīng)過了這些與門和或門之后,就會(huì)自動(dòng)地生成對(duì)應(yīng)的控制信號(hào)。而這些控制信號(hào)的值,肯定符合我們剛才對(duì)每條指令分析的需求,這樣在指令執(zhí)行的過程中,就不需要任何智力因素的介入去分析當(dāng)前到底是什么指令,以及需要產(chǎn)生什么樣的控制信號(hào)。一切都是通過這樣的控制邏輯電路自動(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條指令,非常地簡單。但是它確實(shí)是一個(gè)可以使用的處理器了。如果你有興趣,還可以繼續(xù)深入到物理設(shè)計(jì)的環(huán)節(jié),把它真正地制造出來。
編輯:hfy
-
處理器
+關(guān)注
關(guān)注
68文章
19896瀏覽量
235255 -
控制信號(hào)
+關(guān)注
關(guān)注
0文章
194瀏覽量
12322 -
控制邏輯
+關(guān)注
關(guān)注
0文章
14瀏覽量
2474
發(fā)布評(píng)論請先 登錄
端側(cè) AI 音頻處理器:集成音頻處理與 AI 計(jì)算能力的創(chuàng)新芯片
視頻處理器晶振應(yīng)用方案
處理器和芯片的區(qū)別是什么 處理器是指cpu嗎
EE-236:將混合信號(hào)前端器件與Blackfin處理器結(jié)合使用的實(shí)時(shí)解決方案

盛顯科技:拼接處理器連接大屏方法是什么?

盛顯科技:拼接處理器是什么設(shè)備類型
光耦知識(shí)分享 | 探討光耦在微處理器及相關(guān)電路中創(chuàng)新應(yīng)用與實(shí)踐

音頻信號(hào)處理器有哪些作用
微處理機(jī)和微處理器的區(qū)別
TLC5940單線控制–消除集成LED驅(qū)動(dòng)器的微處理器控制

AP-2斷鏈保護(hù)信號(hào)處理器受什么控制的影響
盛顯科技:拼接處理器為什么要配置混合矩陣?


微處理器如何控制計(jì)算機(jī)系統(tǒng)
工業(yè)控制信號(hào)防雷器綜合應(yīng)用方案

評(píng)論