组成原理---控制器
文章目錄
- 控制器的組成及指令的執(zhí)行
- 基本的計(jì)算機(jī)組成和功能
- 控制器的組成
- 時(shí)序及控制方式
- 數(shù)據(jù)通路和指令的執(zhí)行過(guò)程
- 簡(jiǎn)單計(jì)算機(jī)系統(tǒng)主機(jī)各部件的實(shí)現(xiàn)方案
- 簡(jiǎn)單計(jì)算機(jī)系統(tǒng)中指令的執(zhí)行過(guò)程
- MIPS單周期CPU的數(shù)據(jù)通路和指令的執(zhí)行過(guò)程
- 硬布線控制器
- 控制器的設(shè)計(jì)方法
- 硬布線控制器的結(jié)構(gòu)與原理
- 硬布線控制器的時(shí)序系統(tǒng)
- 硬布線控制器的設(shè)計(jì)舉例
- MIPS硬布線多周期CPU的設(shè)計(jì)
- 微程序控制器
- 微程序控制的基本概念和工作原理
- 簡(jiǎn)單微程序控制器的設(shè)計(jì)
- 微程序設(shè)計(jì)技術(shù)
- 微程序控制方式下模型機(jī)的設(shè)計(jì)實(shí)例
- 微程序控制器與硬布線控制器的比較
控制器的組成及指令的執(zhí)行
根據(jù)指令協(xié)調(diào)計(jì)算機(jī)各部件進(jìn)行有條不紊的工作
基本的計(jì)算機(jī)組成和功能
- 計(jì)算機(jī)系統(tǒng)的基本組成
中央處理器CPU,存儲(chǔ)器,IO系統(tǒng)他們之間通過(guò)總線連接。
從物理上來(lái)說(shuō),總線就是一組導(dǎo)線,其作用是把一些信息從一個(gè)部件傳到另一個(gè)部件,源部件先將數(shù)據(jù)輸出到總線上,然后目的部件再?gòu)目偩€上接收這些數(shù)據(jù)。 - 地址總線來(lái)自于CPU或總線主設(shè)備。
- 數(shù)據(jù)總線的作用是在CPU,存儲(chǔ)器和IO設(shè)備之間傳送數(shù)據(jù)。
- 控制總線包含了許多單向控制信號(hào)線和單/雙向的狀態(tài)信號(hào)線。
- 一般計(jì)算機(jī)系統(tǒng)具有分層次的主線
CPU使用來(lái)訪問(wèn)存儲(chǔ)器和IO控制器。
IO控制器通過(guò)二級(jí)(局部)總線來(lái)訪問(wèn)IO設(shè)備。 - CPU的基本功能
指令控制:確保計(jì)算機(jī)指令按程序的順序執(zhí)行。
操作控制:一條指令的功能通常由若干個(gè)操作信號(hào)(微操作)組合起來(lái)實(shí)現(xiàn),CPU控制這些微操作的產(chǎn)生,組合,傳送和管理。
時(shí)間控制:使各種微操作和指令的執(zhí)行嚴(yán)格按照時(shí)間序列進(jìn)行。
數(shù)據(jù)加工:由運(yùn)算器對(duì)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算。 - 取指令周期:取出指令并譯碼。
執(zhí)行指令周期:執(zhí)行指令。
控制器的組成
控制器的功能:從存儲(chǔ)器中取指令,對(duì)指令譯碼,產(chǎn)生控制信號(hào)并控制計(jì)算機(jī)系統(tǒng)各部件有序的執(zhí)行,從而實(shí)現(xiàn)這條指令的功能。
- 程序計(jì)數(shù)器PC
專門的寄存器來(lái)保存指令的地址,即指令地址寄存器。
存放當(dāng)前正執(zhí)行的指令地址或下一條指令的地址。
具有自加一功能的計(jì)數(shù)器。
指令順序執(zhí)行時(shí),由程序計(jì)數(shù)器本身的遞增功能來(lái)產(chǎn)生下一條指令的地址。
當(dāng)遇到轉(zhuǎn)移指令,由指令直接提供轉(zhuǎn)移地址,或在控制器的控制下由運(yùn)算器形成轉(zhuǎn)移地址,結(jié)果送PC作為下一條指令的地址。 - 指令寄存器IR
控制器從內(nèi)存中取出的指令,存放在IR中,以便控制器對(duì)指令進(jìn)行譯碼,執(zhí)行。
可將IR擴(kuò)充為指令隊(duì)列,或稱指令棧,允許預(yù)取多條指令。 - 指令譯碼器
對(duì)操作碼進(jìn)行譯碼以識(shí)別該指令所要求的操作。
將指令寄存器中的操作碼字段輸入指令譯碼器,操作碼經(jīng)譯碼后的信號(hào)與操作控制信號(hào)形成部件一起產(chǎn)生該指令所需要的,有一定時(shí)序關(guān)系的操作控制信號(hào)序列。 - 操作控制信號(hào)形成部件
根據(jù)指令操作碼的譯碼信號(hào)及時(shí)序信號(hào),產(chǎn)生取出指令和執(zhí)行這條指令所需的各種操作控制信號(hào),以便正確的建立數(shù)據(jù)通路,完成取出指令和執(zhí)行指令的控制。 - 時(shí)序信號(hào)產(chǎn)生器
提供時(shí)鐘信號(hào)和機(jī)器周期信號(hào),以規(guī)定每個(gè)操作的時(shí)間。 - 地址寄存器AR
收納可能有多種來(lái)源的地址,統(tǒng)一在規(guī)定的節(jié)拍將地址送上總線。 - 數(shù)據(jù)寄存器DR
CPU把數(shù)據(jù)發(fā)送到存儲(chǔ)器或IO設(shè)備時(shí),CPU會(huì)將數(shù)據(jù)送入DR,然后再將數(shù)據(jù)從DR送至總線。
CPU從存儲(chǔ)器或IO設(shè)備接受數(shù)據(jù)時(shí),先將數(shù)據(jù)送上DR,然后從DR將數(shù)據(jù)送到CPU內(nèi)部的某部件中。
時(shí)序及控制方式
-
時(shí)序信號(hào)
一臺(tái)計(jì)算機(jī)內(nèi)的控制信號(hào)一般均由若干個(gè)周期狀態(tài),若干個(gè)節(jié)拍電位和若干個(gè)節(jié)拍脈沖這樣三級(jí)時(shí)序來(lái)對(duì)各種操作信號(hào)進(jìn)行定時(shí),在時(shí)間上對(duì)各種操作信號(hào)進(jìn)行約束,以便對(duì)各種操作信號(hào)進(jìn)行協(xié)調(diào)。指令周期:取出一條指令并完成該指令的執(zhí)行所需要的時(shí)間。
機(jī)器周期:又稱CPU周期,指CPU與內(nèi)存交換一次信息所需要的時(shí)間。一個(gè)指令周期可能有若干個(gè)機(jī)器周期。
時(shí)鐘周期:又稱節(jié)拍周期,是處理操作的最基本時(shí)間單位,即T周期。一個(gè)CPU周期包含若干個(gè)時(shí)鐘周期。把一個(gè)機(jī)器周期分成若干個(gè)相等的時(shí)間段,每一個(gè)時(shí)間段對(duì)應(yīng)一個(gè)電位信號(hào),稱為節(jié)拍電位信號(hào),節(jié)拍的寬度取決于CPU完成一次基本操作的時(shí)間。
一個(gè)機(jī)器周期需要多少個(gè)節(jié)拍取決于該周期內(nèi)需要順序完成的基本操作步數(shù)。
統(tǒng)一節(jié)拍法
以最復(fù)雜的機(jī)器周期為基準(zhǔn),每一節(jié)拍的時(shí)間長(zhǎng)短也以最繁瑣的微操作為基準(zhǔn),使所有的機(jī)器周期長(zhǎng)度相等,每一個(gè)機(jī)器周期內(nèi)含有相同數(shù)目的節(jié)拍,稱定長(zhǎng)機(jī)器周期。分散節(jié)拍法
根據(jù)實(shí)際需要安排節(jié)拍數(shù),稱不定長(zhǎng)機(jī)器周期。延長(zhǎng)節(jié)拍法
大多數(shù)機(jī)器周期采用相同的基本節(jié)拍數(shù),若某個(gè)機(jī)器周期內(nèi)按規(guī)定的基本節(jié)拍數(shù)無(wú)法完成該周期的全部微操作,則可延長(zhǎng)節(jié)拍。時(shí)鐘周期插入
不設(shè)置節(jié)拍,直接使用時(shí)鐘周期信號(hào)。一個(gè)機(jī)器周期中含有若干個(gè)時(shí)鐘周期,時(shí)鐘周期的數(shù)目取決于機(jī)器周期內(nèi)要完成的微操作個(gè)數(shù),一個(gè)機(jī)器周期的基本時(shí)鐘周期數(shù)確定后,可以不斷插入等待時(shí)鐘周期。
-
時(shí)序信號(hào)產(chǎn)生器
時(shí)鐘源
由石英晶體振蕩器和與非門組成的正反饋振蕩電路組成。
為環(huán)形脈沖發(fā)成器提供頻率穩(wěn)定且電平匹配的方波時(shí)鐘脈沖信號(hào)。
環(huán)形脈沖發(fā)成器
產(chǎn)生一組有序的,間隔相等或不等的脈沖序列,以便通過(guò)譯碼電路產(chǎn)生節(jié)拍脈沖。
節(jié)拍脈沖和讀寫時(shí)序譯碼
啟停邏輯控制
控制原始的節(jié)拍脈沖只在啟動(dòng)機(jī)器運(yùn)行的情況下允許時(shí)序信號(hào)產(chǎn)生器發(fā)出CPU所需的節(jié)拍脈沖。同樣讀寫時(shí)序信號(hào)也需要由啟停控制邏輯來(lái)控制。
當(dāng)D觸發(fā)器為Q端輸出1時(shí),原始節(jié)拍脈沖提供CPU所需要的節(jié)拍信號(hào),反之,關(guān)閉時(shí)序產(chǎn)生器。
由于啟動(dòng)和停機(jī)是隨機(jī)的,當(dāng)啟動(dòng)計(jì)算機(jī)時(shí),要從第一個(gè)節(jié)拍脈沖前沿開(kāi)始工作,停機(jī)一定要在第四個(gè)節(jié)拍脈沖結(jié)束后關(guān)閉時(shí)序產(chǎn)生器,使發(fā)送出的脈沖是完整的,由右側(cè)的SR觸發(fā)器保證。 -
控制方式
不同指令的指令周期所需要的機(jī)器周期數(shù)不等,反映了指令的復(fù)雜程度,即控制信號(hào)的多少。對(duì)一個(gè)機(jī)器周期來(lái)說(shuō)也有操作控制信號(hào)的多少和出現(xiàn)的次序問(wèn)題。同步控制方式(固定時(shí)序控制方式或無(wú)應(yīng)答控制方式)
采用相同的機(jī)器周期數(shù),和相同的節(jié)拍脈沖來(lái)形成每條指令的操作控制信號(hào)序列,因此每條指令的執(zhí)行用時(shí)都是相同的。以微操作序列最長(zhǎng)的為標(biāo)準(zhǔn),確定控制微操作運(yùn)行的時(shí)鐘周期數(shù)(節(jié)拍數(shù)),控制器產(chǎn)生統(tǒng)一的,順序固定的,周而復(fù)始的節(jié)拍電位(機(jī)器周期信號(hào))和節(jié)拍脈沖(時(shí)鐘周期信號(hào))。
電路簡(jiǎn)單,運(yùn)行速度慢。異步控制方式(可變時(shí)序控制方式或應(yīng)答控制方式)
每條指令需要多少節(jié)拍就產(chǎn)生對(duì)少節(jié)拍,當(dāng)指令執(zhí)行完畢后,發(fā)出回答信號(hào),控制器收到回答信號(hào)后,開(kāi)始下條指令的執(zhí)行。
運(yùn)行效率高,電路復(fù)雜。聯(lián)合控制方式
大部分指令安排在統(tǒng)一的機(jī)器周期內(nèi)完成,即同步控制。較少數(shù)的特殊指令,或微操作序列過(guò)長(zhǎng)或過(guò)短,或時(shí)間難以確定,采用異步控制來(lái)完成。
一般的設(shè)計(jì)思想是功能部件內(nèi)部采用同步控制方式,功能部件之間采用異步控制方式。
數(shù)據(jù)通路和指令的執(zhí)行過(guò)程
- 在所有需要傳送數(shù)據(jù)的部件之間創(chuàng)建一條直接通路,對(duì)很小的計(jì)算機(jī)系統(tǒng)可行。
- 在CPU內(nèi)部創(chuàng)建一條總線,各個(gè)部件之間使用總線來(lái)傳遞數(shù)據(jù)。
簡(jiǎn)單計(jì)算機(jī)系統(tǒng)主機(jī)各部件的實(shí)現(xiàn)方案
-
運(yùn)算器
-
控制器
通常情況下,PC+1信號(hào)會(huì)與脈沖信號(hào)相連接,
有一些計(jì)數(shù)器芯片在寫入時(shí)需要打入脈沖,并且靠脈沖來(lái)實(shí)現(xiàn)計(jì)數(shù),因此,把數(shù)據(jù)總線上的值送入PC時(shí),需要控制信號(hào)B-PC#=0且PC+1有效,打入脈沖由PC+1提供。 -
存儲(chǔ)器
簡(jiǎn)單計(jì)算機(jī)系統(tǒng)中指令的執(zhí)行過(guò)程
-
指令格式
-
取指令
控制器先將第一條指令的地址置入PC,PC將當(dāng)前指令地址送到AR,同時(shí)PC內(nèi)容加一,指向下一條指令的地址,AR的輸出通過(guò)地址總線送到存儲(chǔ)器的地址端,指明指令所在的地址單元,控制器發(fā)出讀控制信號(hào),控制從存儲(chǔ)器中讀出這條指令,該指令通過(guò)DB送到IR。指令取到IR后,立即由指令譯碼器對(duì)其進(jìn)行分析譯碼,指令譯碼器首先判斷該指令是什么指令,然后將判斷結(jié)果傳遞給操作控制信號(hào)形成部件。
取指令階段對(duì)于所有指令來(lái)說(shuō),其操作控制信號(hào)都是相同的。
-
執(zhí)行指令
操作控制信號(hào)形成部件根據(jù)指令譯碼信息和時(shí)序周期信號(hào),發(fā)出該指令所需的所有部件的有一定時(shí)序關(guān)系的控制信號(hào)序列。完成指令的執(zhí)行。指令的執(zhí)行階段對(duì)于不同的指令,其操作控制信號(hào)是不同的。
MIPS單周期CPU的數(shù)據(jù)通路和指令的執(zhí)行過(guò)程
-
設(shè)計(jì)步驟
分析MIPS的指令格式,以及每種格式下指令的功能。
根據(jù)指令的功能,羅列所需器件和器件之間的鏈接方式。
確定每個(gè)器件所需的控制信號(hào)。 -
取指令
-
更新版
指令存儲(chǔ)器是一個(gè)只讀存儲(chǔ)器,根據(jù)PC提供的地址讀取對(duì)應(yīng)單元存放的指令,因此不需要讀控制信號(hào)。MIPS指令長(zhǎng)度為32位,因此,指令存儲(chǔ)器的寬度也設(shè)計(jì)成32位,PC的32位地址對(duì)應(yīng)的是字節(jié)地址,實(shí)際訪存是取PC的高30位為地址來(lái)訪存,PC的最后兩位用于選擇讀出的是32位指令字中的哪一個(gè)字節(jié),一次訪存取出一條指令,4個(gè)字節(jié)。
由于指令存儲(chǔ)器是只讀存儲(chǔ)器,只要指令地址在執(zhí)行期間保持不變,那么從指令存儲(chǔ)器取出的代碼就會(huì)維持不變,因此取消了指令寄存器。
每次取指令后,PC應(yīng)自增4。添加一個(gè)PC_new來(lái)暫存PC自增值,在指令周期(也就是時(shí)鐘周期)clk的上升沿執(zhí)行取指令操作,在clk的下降沿更新PC值。
系統(tǒng)啟動(dòng)時(shí)PC復(fù)位,添加復(fù)位信號(hào)rst。
-
R型指令數(shù)據(jù)通路的設(shè)計(jì)
所有R型指令,OP相同,指令功能有功能碼func指出。
rs,rt為源操作數(shù)
rd為目的操作數(shù)添加多端口寄存器堆和多功能運(yùn)算器
寄存器堆寫操作邊沿觸發(fā),寫操作的輸入信號(hào)必須在始終邊沿來(lái)臨時(shí)已經(jīng)有效。
ALU不需要時(shí)鐘,但需要時(shí)鐘脈沖來(lái)置標(biāo)志位。
當(dāng)前指令的操作碼OP和func字段由指令譯碼部件處理:首先根據(jù)OP字段判斷指令類型,然后將func字段翻譯成ALU的控制信號(hào)ALU_OP,以指定ALU的運(yùn)算功能。在clk的上升沿,啟動(dòng)指令存儲(chǔ)器,依據(jù)PC讀出指令,在clk高電平持續(xù)期間,完成PC值的自增,指令譯碼,寄存器讀操作。隨后完成ALU運(yùn)算。在clk的下降沿完成目的寄存器的寫入,PC值的更新和標(biāo)志寄存器的更新。將clk返向后作為寄存器堆,PC和標(biāo)志寄存器的打入脈沖。
指令對(duì)標(biāo)志寄存器影響的規(guī)律
傳送類和跳轉(zhuǎn)類指令不影響標(biāo)志位
有符號(hào)算術(shù)運(yùn)算類指令影響ZF(零標(biāo)志位)和OF(溢出標(biāo)志位)
無(wú)符號(hào)算術(shù)運(yùn)算類指令和邏輯運(yùn)算類指令影響ZF
條件轉(zhuǎn)移類指令一般會(huì)使用標(biāo)志位ZF -
I型指令數(shù)據(jù)通路的設(shè)計(jì)
數(shù)據(jù)傳送類指令,訪存指令,分支指令和含立即數(shù)的指令一般采用I型指令。rs,立即數(shù)為源地址
rd為目的地址
增加二選一數(shù)據(jù)選擇器,支持目的寄存器的兩種來(lái)源
對(duì)于R型指令,目的寄存器是rd,對(duì)于I型指令,目的寄存器是rt。
在指令機(jī)器碼輸出與寄存器堆模塊的寫地址輸入端口前設(shè)置一個(gè)二選一選擇器。
設(shè)置一個(gè)控制信號(hào)來(lái)控制將那個(gè)字段送入寫地址。增加器件,使指令低16位的立即數(shù)imm經(jīng)過(guò)擴(kuò)展,與rs執(zhí)行運(yùn)算操作
對(duì)有符號(hào)數(shù)的運(yùn)算,進(jìn)行符號(hào)擴(kuò)展,用16位立即數(shù)的最高位填充高16位,構(gòu)成32位數(shù)。對(duì)于無(wú)符號(hào)數(shù)的運(yùn)算,執(zhí)行零擴(kuò)展。
設(shè)置一個(gè)控制信號(hào)來(lái)控制進(jìn)行符號(hào)擴(kuò)展還是零擴(kuò)展。
對(duì)于有符號(hào)數(shù)的運(yùn)算指令和存取數(shù)指令需要符號(hào)擴(kuò)展。
對(duì)于無(wú)符號(hào)數(shù)的運(yùn)算指令和邏輯運(yùn)算類指令進(jìn)行0擴(kuò)展。增加二選一數(shù)據(jù)選擇器,支持ALU運(yùn)算數(shù)據(jù)的兩種來(lái)源rt或imm。
設(shè)置一個(gè)控制信號(hào)來(lái)控制數(shù)據(jù)來(lái)源。
EA=(rs)+offset增加一個(gè)數(shù)據(jù)存儲(chǔ)器RAM,存放指令訪問(wèn)的數(shù)據(jù)。
該存儲(chǔ)器讀操作不需要脈沖,寫操作需要脈沖。
設(shè)置控制信號(hào)控制,控制信號(hào)有效且clk下降沿到來(lái)時(shí)寫存儲(chǔ)器。使用ALU實(shí)現(xiàn)對(duì)EA的計(jì)算。
操作數(shù)是rs和經(jīng)過(guò)符號(hào)擴(kuò)展的offset,計(jì)算的結(jié)果EA直接送存儲(chǔ)器地址端口。存儲(chǔ)器讀出的數(shù)據(jù)
在對(duì)寄存器的寫入端口出設(shè)置一個(gè)二選一多路選擇器,控制將ALU輸出或存儲(chǔ)器的讀出數(shù)據(jù)送寄存器堆。存儲(chǔ)器寫入數(shù)據(jù)
將寄存器的讀端口數(shù)據(jù)直接寫入存儲(chǔ)器的寫端口。 -
轉(zhuǎn)移指令數(shù)據(jù)通路的設(shè)計(jì)
jal(J)指令不僅轉(zhuǎn)移,而且在轉(zhuǎn)移前將jal指令的下一條指令的地址保存到編號(hào)為31的寄存器中。(PC+4->MYM31,{(PC+4)高四位,address,0,0}->PC
jr指令(R)將32位數(shù)據(jù)當(dāng)做指令地址,直接置入PC。通常和jal指令配合使用,用于子程序的調(diào)用與返回。jal相當(dāng)于CALL,jr相當(dāng)于RET。
I型條件轉(zhuǎn)移指令“beq rs,rt,label”的功能是相等轉(zhuǎn)移:if(rs=rt) then PC+4+offset*4->PC else PC+4->PC。其中offset是有符號(hào)數(shù),是跳轉(zhuǎn)目標(biāo)指令的地址相對(duì)于下一條指令地址的偏移量。offset需要符號(hào)擴(kuò)展為32位后再左移兩位。轉(zhuǎn)移地址產(chǎn)生后,要送入PC才能完成跳轉(zhuǎn)。
對(duì)于PC來(lái)說(shuō),如果加上PC自增,則PC的來(lái)源有四種,需要一個(gè)四選一多路選擇器,由兩位控制信號(hào)來(lái)選擇。jal指令需要將PC+4的值存入MYM31寄存器中,寄存器寫入地址的選擇需要多一種可能性,對(duì)于寫入數(shù)據(jù)的選擇也多一種可能性,需要修改寄存器堆在寫入地址前的多路選擇器和寫入數(shù)據(jù)前的多路選擇器。
beq指令需要根據(jù)標(biāo)志ZF來(lái)判斷是否轉(zhuǎn)移。
硬布線控制器
根據(jù)指令的要求,當(dāng)前的時(shí)序及外部和內(nèi)部的狀態(tài)情況,按時(shí)間順序發(fā)送一系列微操作控制信號(hào)。
他由復(fù)雜的組合邏輯門電路和一些觸發(fā)器構(gòu)成,又稱為組合邏輯控制器,或常規(guī)邏輯控制器。
不可更改和擴(kuò)充。
速度快。
硬布線控制器和微程序控制器在硬件上最大的區(qū)別就是操作控制信號(hào)形成部件的組成結(jié)構(gòu)不同。
控制器的設(shè)計(jì)方法
- 確定指令系統(tǒng),包括指令系統(tǒng)中每條指令的格式,功能和尋址方式,分配操作碼。
- 圍繞指令系統(tǒng)的實(shí)現(xiàn),確定CPU的內(nèi)部結(jié)構(gòu),包括運(yùn)算器的功能和組成,控制器的類型,結(jié)構(gòu)組成及各部件的連接方式和數(shù)據(jù)通路,同時(shí)也需要確定時(shí)序系統(tǒng)的構(gòu)成。
- 在以上基礎(chǔ)上,分析每條指令的執(zhí)行過(guò)程,按機(jī)器周期順序,寫出必須發(fā)送的微操作控制信號(hào)序列。
- 綜合每個(gè)微操作控制序列的邏輯函數(shù),化簡(jiǎn)和優(yōu)化。
- 用邏輯電路實(shí)現(xiàn)。
硬布線控制器的結(jié)構(gòu)與原理
- 微操作控制信號(hào)C是四種輸入信號(hào)的函數(shù) I用于指出當(dāng)前是哪一條指令的指令周期。 M,T指出當(dāng)前處于哪一個(gè)機(jī)器周期和哪一個(gè)節(jié)拍。
S指出運(yùn)算器的結(jié)果狀態(tài)及機(jī)器內(nèi)部的其他狀態(tài),已決定某些操作信號(hào)是否發(fā)送。 E指出和傳遞CPU外部各部件的狀態(tài)和控制信號(hào)。 - 信號(hào)C一部分送到CPU外部,構(gòu)成系統(tǒng)總線的控制總線,另一部分送到CPU內(nèi)部以供使用。
- 機(jī)器指令執(zhí)行的各個(gè)步驟是在各個(gè)機(jī)器周期中,由指令的操作碼,機(jī)器周期信號(hào)和時(shí)鐘周期信號(hào)驅(qū)動(dòng)操作控制器的組合邏輯電路來(lái)完成的,一個(gè)機(jī)器周期完成一個(gè)步驟。
硬布線控制器的時(shí)序系統(tǒng)
- 機(jī)器周期信號(hào)一般可以采用計(jì)數(shù)器輸出譯碼方式產(chǎn)生。若指令系統(tǒng)的所有機(jī)器指令中,最長(zhǎng)的一條指令包含n個(gè)機(jī)器周期,則需要m=log2n位的計(jì)數(shù)器,通過(guò)m:2m譯碼器輸出機(jī)器周期信號(hào)。以一般的自增或自減計(jì)數(shù)器不同,該計(jì)數(shù)器必須按照不同指令的需求產(chǎn)生不同的計(jì)數(shù)順序。
- 計(jì)數(shù)器以格雷碼的形式編碼,避免兩個(gè)觸發(fā)器同時(shí)翻轉(zhuǎn)造成毛刺。
496
硬布線控制器的設(shè)計(jì)舉例
-
指令系統(tǒng)
-
模型機(jī)結(jié)構(gòu)
-
首先,在CPU的系統(tǒng)結(jié)構(gòu)基礎(chǔ)上,依據(jù)指令功能設(shè)計(jì)出指令執(zhí)行的數(shù)據(jù)通路,并規(guī)定出實(shí)現(xiàn)這些數(shù)據(jù)通路所必須發(fā)送的微操作控制信號(hào);然后按照總線分時(shí)享用的原則,將這些有序的操作劃分為不同的機(jī)器周期,即保證在一個(gè)機(jī)器周期中,總線上傳輸?shù)臄?shù)據(jù)是唯一的,且總線上的數(shù)據(jù)不能停留到下一個(gè)機(jī)器周期。
-
ADD指令
M0:將當(dāng)前指令地址送AR,且PC指向指令的下一字地址。
M1:從內(nèi)存中取指令送寄存器,譯碼。
M2:將指令的第二字地址送AR,且PC指向指令的下一條指令地址。
M3:從內(nèi)存中取出指令的第二個(gè)字即立即數(shù),送ALU
M4:將另一個(gè)操作數(shù)送ALU。
M5:完成加法操作并將結(jié)果送R0。 -
JMP指令
M0:將當(dāng)前指令地址送AR,且PC指向指令的下一字地址。
M1:從內(nèi)存中取指令送寄存器,譯碼。
M2:將指令的第二字地址送AR,且PC指向指令的下一條指令地址。
M3:在內(nèi)存中取出指令的第二個(gè)字即轉(zhuǎn)移地址送PC,實(shí)現(xiàn)轉(zhuǎn)移。 -
ADD
ADD·M0:PC->AR,PC+1->PC
ADD·M1:RAM->IR,指令譯碼
ADD·M2:PC->AR,PC+1->PC
ADD·M3:RAM->DA1
ADD·M4:R0->DA2
ADD·M5:DA1+DA2->R0 -
JMP
JMP·M0:PC->AR,PC+1->PC
JMP·M1:RAM->IR,指令譯碼
JMP·M2:PC->AR,PC+1->PC
JMP·M3:RAM->PC -
取指令
ADD·M0:(PC-B)#,B-AR,PC+1
ADD·M1:(M-R)#,B-IR,J1# -
ADD
ADD·M2:(PC-B)#,B-AR,PC+1
ADD·M3:(M-R)#,B-DA1
ADD·M4:(R0-B)#,B-DA2
ADD·M5:ALU(F=A+B),(ALU-B)#,B-R0 -
JMP
JMP·M2:(PC-B)#,B-AR,PC+1
JMP·M3:(M-R)#,(B-PC)# -
綜合微操作控制信號(hào)的邏輯函數(shù)
若某個(gè)微操作控制信號(hào)必須在某個(gè)機(jī)器周期內(nèi)的Tn時(shí)刻有效,則該信號(hào)表達(dá)式還要和Tn時(shí)鐘信號(hào)相與當(dāng)指令系統(tǒng)被擴(kuò)充時(shí),只需更新微操作控制信號(hào)的邏輯函數(shù)。
對(duì)于已將確定的指令系統(tǒng),要對(duì)各信號(hào)的邏輯函數(shù)進(jìn)行化簡(jiǎn)和優(yōu)化。不僅要從邏輯代數(shù)的角度,還要從指令系統(tǒng)的整體邏輯上考慮。比如該例中,ADD+JMP=1。
-
邏輯實(shí)現(xiàn)
MIPS硬布線多周期CPU的設(shè)計(jì)
- 單周期缺點(diǎn)
運(yùn)行效率低下
時(shí)鐘周期由執(zhí)行時(shí)間最長(zhǎng)的指令決定
在一個(gè)指令周期內(nèi),各功能部件被獨(dú)占
單個(gè)周期內(nèi)所有功能部件必須單獨(dú)設(shè)置,不能復(fù)用。
-
設(shè)計(jì)原則
不同的指令,依據(jù)功能需要可以包含不同數(shù)目的時(shí)鐘周期。
時(shí)鐘周期的內(nèi)部只完成指令的部分功能,效率更高。
提高硬件的利用率。 -
多周期CPU的數(shù)據(jù)通路
與單周期相比
指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合二為一。
只設(shè)置一個(gè)ALU運(yùn)算部件,節(jié)省兩個(gè)加法器。
添加兩個(gè)專用寄存器(IR,MDR)和三個(gè)附加寄存器(A,B,F)。每個(gè)時(shí)鐘周期的下降沿,均需將本時(shí)鐘周期的操作結(jié)果存入暫存器,專用寄存器或者通用寄存器保存,以便下一個(gè)時(shí)鐘周期使用。
對(duì)于某條指令的執(zhí)行結(jié)果,若要用于下一條指令,則應(yīng)該存入程序員可見(jiàn)的部件,有程序員或編譯器以指令方式明確指定。對(duì)于某一條指令中一個(gè)時(shí)鐘周期的執(zhí)行結(jié)果,若要用于該指令的下一時(shí)鐘周期,則應(yīng)該存入程序員不可見(jiàn),硬件設(shè)計(jì)者可見(jiàn)的附加寄存器。需要在這個(gè)功能部件之間加設(shè)一個(gè)緩沖寄存器,在時(shí)鐘周期的下降沿將部件執(zhí)行結(jié)果置入這些寄存器。
-
R型指令的執(zhí)行過(guò)程
取指令,PC自增:Mem[PC]->IR,PC+4->PC.
讀寄存器:Reg[rs]->A,Reg[rt]->B
ALU運(yùn)算:A(op)B->F
結(jié)果寄存器:F->Reg[rd] -
I型取數(shù)指令
取指令,PC自增:Mem[PC]->IR,PC+4->PC.
讀寄存器:Reg[rs]->A,Reg[rt]->B(無(wú)關(guān)操作)
計(jì)算有效地址:EA:A+offset->F
讀存儲(chǔ)器:Mem[F]->MDR
寫結(jié)果寄存器:MDR->Reg[rt] -
I型存數(shù)指令
取指令,PC自增:Mem[PC]->IR,PC+4->PC.
讀寄存器:Reg[rs]->A,Reg[rt]->B
計(jì)算有效地址:EA:A+offset->F
寫存儲(chǔ)器:B->Mem[F] -
I型分支指令
取指令,PC自增:Mem[PC]->IR,PC+4->PC.
讀寄存器和轉(zhuǎn)移地址計(jì)算:Reg[rs]->A,Reg[rt]->B,PC+offset*4->F
完成分支:A-B,產(chǎn)生ZF,zero=1,則F->PC,zero=0,空操作。 -
J型跳轉(zhuǎn)指令
取指令,PC自增:Mem[PC]->IR,PC+4->PC.
完成跳轉(zhuǎn):{PC[31:28],address,00}->PC -
多周期CPU的具體實(shí)現(xiàn)方案
凡是寫入操作,總是在下降沿,以保證功能部件操作完成后,再保存結(jié)果。
在寫入周期下降沿有效指將這些寫控制信號(hào)和時(shí)鐘周期的反向信號(hào)向與后作為部件的寫操作控制信號(hào)。
存儲(chǔ)器的讀信號(hào)可以不受時(shí)鐘控制,是電平型信號(hào)。沒(méi)有控制信號(hào)表名直接使用時(shí)鐘周期的脈沖作為打入脈沖,即每個(gè)時(shí)鐘周期的后沿均執(zhí)行寫入操作。
沒(méi)有輸出控制,內(nèi)容始終可用。 -
設(shè)計(jì)實(shí)例
確定指令系統(tǒng)
確定系統(tǒng)結(jié)構(gòu)與數(shù)據(jù)通路
分析每條指令的執(zhí)行過(guò)程,寫出發(fā)送的微操作控制信號(hào)序列
綜合每個(gè)微操作控制信號(hào)的邏輯函數(shù)
實(shí)現(xiàn)操作控制信號(hào)形成部件的組合邏輯電路
輸入變量:OP,func,時(shí)鐘周期,ALU的結(jié)果狀態(tài)
輸出:各個(gè)控制信號(hào)
描述每個(gè)時(shí)鐘周期發(fā)送的控制信號(hào):指令·周期·狀態(tài):控制信號(hào)
邏輯函數(shù)綜合:對(duì)每個(gè)控制信號(hào),凡是:右邊出現(xiàn)該信號(hào)的,將左邊的條件進(jìn)行或運(yùn)算
優(yōu)化和化簡(jiǎn)邏輯函數(shù)
邏輯實(shí)現(xiàn)
將所有控制信號(hào)的最簡(jiǎn)邏輯函數(shù)用電路實(shí)現(xiàn)
微程序控制器
計(jì)算機(jī)系統(tǒng)的控制電路是按照一系列離散步驟進(jìn)行操作的,即一條指令可以分成一系列基本的操作步驟。
這些步驟就像計(jì)算機(jī)程序執(zhí)行過(guò)程一樣,可以用軟件的方法來(lái)實(shí)現(xiàn)。
微程序控制的基本概念和工作原理
-
微地址寄存器μAR的值與指令執(zhí)行的一個(gè)過(guò)程相對(duì)應(yīng)。 μAR的輸出作為控制存儲(chǔ)器CM的地址,CM的一個(gè)存儲(chǔ)單元中剛好存儲(chǔ)一條微指令。
CM一般是只讀的,CM的地址一般叫做微地址。 每條微指令包含一組微命令,一個(gè)微命令完成一個(gè)微操作。
微命令是組成微指令的最小單位,也就是微操作控制信號(hào),微操作就是指令執(zhí)行時(shí)必須完成的基本操作。
執(zhí)行一條微指令所需要的時(shí)間叫做微周期,一般可以作為一個(gè)機(jī)器周期。 微指令的有序集合叫做微程序,微程序是實(shí)現(xiàn)一條機(jī)器指令功能的程序。 -
微指令由控制字段,判別字段和下址字段組成。 控制字段包含一組微命令信號(hào),即微操作控制信號(hào)。
下址字段,指令操作碼和狀態(tài)標(biāo)志等微地址形成電路的輸入,輸出就是下一條微指令的地址。 判別字段指明下址的來(lái)源。 -
下地址的生成方法
下一微地址就是CM中的下一個(gè)地址:當(dāng)前微地址加一。下一微地址是由當(dāng)前微指令提供的一個(gè)絕對(duì)CM地址,這個(gè)微地址可能是后繼微地址的全部,也可能是后繼微地址的一部分。
根據(jù)指令的OP產(chǎn)生該指令對(duì)應(yīng)的微程序入口地址,通常這個(gè)工作由映像邏輯(只用一次)來(lái)完成,指令OP輸入映像邏輯后,硬件將操作碼映射成該指令對(duì)應(yīng)執(zhí)行指令周期中的第一條微指令的地址,即程序入口地址,將程序入口地址裝入微地址寄存器就可以轉(zhuǎn)入到正確的微程序。
調(diào)用微子程序時(shí),其返回地址存儲(chǔ)在子程序寄存器或硬件堆棧中。
-
開(kāi)機(jī)后,首先使μAR置為取指令的第一條微指令地址,從CM中取出第一條微指令,完成PC->AR,PC+1操作,然后根據(jù)微指令的下址字段分別取出第二條微指令,完成RAM->IR,即從內(nèi)存中讀出指令送IR,并發(fā)出譯碼信號(hào)使指令譯碼器工作,即形成該指令的執(zhí)行指令階段的微程序入口地址,從CM中取出該指令執(zhí)行時(shí)的第一條微指令送到微指令寄存器,發(fā)出控制信號(hào)實(shí)現(xiàn)微操作。然后該指令執(zhí)行時(shí)的其余微指令地址是當(dāng)前微地址加1或由當(dāng)前微指令下址字段確定,依次從控存中取出其余微指令,實(shí)現(xiàn)該指令所需的所有微作,即完成了該指令的執(zhí)行。每一條指令的最后一條微指令執(zhí)行完后均會(huì)回到取指令的第一條微指令執(zhí)行,以取下一條指令,如此重復(fù),直至用戶要運(yùn)行的程序指令執(zhí)行完為止。
簡(jiǎn)單微程序控制器的設(shè)計(jì)
-
確定指令系統(tǒng),包括指令系統(tǒng)中每條指令的格式,功能和尋址方式,分配操作碼。
圍繞指令系統(tǒng)的實(shí)現(xiàn),確定CPU的內(nèi)部結(jié)構(gòu),包括運(yùn)算器的功能和組成,控制器的類型,結(jié)構(gòu)組成及各部件的連接方式和數(shù)據(jù)通路,同時(shí)也需要確定時(shí)序系統(tǒng)的構(gòu)成。
在以上基礎(chǔ)上,分析每條指令的執(zhí)行過(guò)程,畫(huà)出指令系統(tǒng)的微程序流程圖。
根據(jù)CPU的結(jié)構(gòu),寫出每條指令所發(fā)送的微操作控制信號(hào)序列。
結(jié)合微程序控制器的結(jié)構(gòu),微操作控制信號(hào)序列和控制存儲(chǔ)器的容量,設(shè)計(jì)微指令格式。
分配微程序流程圖中各微指令的微地址,并編寫微指令代碼。
將所有微指令代碼裝入控制存儲(chǔ)器的相應(yīng)單元。 -
微程序控制器的設(shè)計(jì)主要完成兩個(gè)任務(wù):產(chǎn)生正確的微命令;產(chǎn)生正確的微指令序列(即上述 CPU 狀態(tài)轉(zhuǎn)換序列)。
-
以指令集:ADD 和 JMP,系統(tǒng)的結(jié)構(gòu)和數(shù)據(jù)通路沒(méi)有改變,CPU 的有限狀態(tài)機(jī)中只有 8 個(gè)狀態(tài),也就是說(shuō)可能產(chǎn)生的下址只有 8 個(gè)。
在取指令周期的第二個(gè)狀態(tài)(RAM->IR,指令譯碼)之后的微地址有兩種可能性,微控器采用第三種方法(指令譯碼)來(lái)產(chǎn)生下一微地址,ADD和 JMP 指令的最后一個(gè)狀態(tài)采用第二種方法即當(dāng)前微指令提供下一微地址,其余狀態(tài)均可采用第一種方法即把當(dāng)前微地址加1來(lái)作為下一微地址。兩條指令集的有 8 種狀態(tài),則需要微指令提供的絕對(duì)微地址必須≥3 位。
-
寄存器控制的微命令產(chǎn)生方式
-
微指令的格式
-
假設(shè) ADD 指令的操作碼I7I6I5I4是0000,JMP 指令的操作碼I7I6I5I4是0001,對(duì)于三位微地址,則微程序的入口地址的邏輯表達(dá)式可以寫成I410,用很簡(jiǎn)單的電路就可以實(shí)現(xiàn)操作碼譯碼,即由指令的操作碼按邏輯電路映射成該指令的微程序入口地址。由微程序的入口地址的邏輯表達(dá)式(I410)得到ADD 執(zhí)行指令周期中的第一個(gè)狀態(tài)微地址是010,JMP 執(zhí)行指令周期中的第一個(gè)狀態(tài)的微地址是 110。然后分別把剩下的微地址分配給其他CPU 狀態(tài),于是得到簡(jiǎn)單微控器的微程序流程圖。
將1位判別測(cè)試字段里的轉(zhuǎn)移方式命名為J1#,若J1#=0表示下址來(lái)源是指令譯碼,J1#=1表示下址來(lái)源由微指令的下址字段提供,則對(duì)所有狀態(tài)來(lái)說(shuō),只有微地址為001的狀態(tài)對(duì)應(yīng)的微指令的判別測(cè)試字段是 0,其他狀態(tài)對(duì)應(yīng)的微指令的判別測(cè)試字段都是1.
我們先把系統(tǒng)中每一個(gè)微操作都羅列出來(lái),給它們命名,然后用微指令控制字段中的一位來(lái)表示一個(gè)微命令,對(duì)于每一條微指令,它需要哪些微命令,也就是說(shuō)需要產(chǎn)生哪些微操作(控制信號(hào)),就只需要把該微指令中所需要的微命令位置為有效,而將不需要的微命令位置為無(wú)效。
控制信號(hào)共n個(gè),所以按照微指令控制字段每位對(duì)應(yīng)一個(gè)微命令的設(shè)計(jì)方法,該微程序控制器的微指令控制字段需要n位,于是該微程序控制器的微指令的格式就確定了。
有些微命令是高電平有效,有些微命令是低電平有效,若要給 PC 置數(shù)必須 B-PC#和 PC+1 同時(shí)有效。
微程序設(shè)計(jì)技術(shù)
-
從控存中取出一條微指令來(lái)實(shí)現(xiàn)一個(gè)操作步驟,一條機(jī)器指令的執(zhí)行就是由若干條微指令分別完成各個(gè)步驟來(lái)實(shí)現(xiàn)的。
-
實(shí)際的計(jì)算機(jī)至少包含上百個(gè)控制信號(hào)和多種轉(zhuǎn)移方式,如果其控制字段還是按照上述設(shè)計(jì)方法(微指令一位對(duì)應(yīng)一個(gè)控制信號(hào)),將導(dǎo)致控制存儲(chǔ)器的容量大,從而導(dǎo)致 CPU芯片體積過(guò)大。
-
通常,在實(shí)際進(jìn)行微程序設(shè)計(jì)時(shí),應(yīng)考慮以下因 素:
有利于縮短微指令字長(zhǎng);
有利于減少控制存儲(chǔ)器的容量;
有利于微程序的執(zhí)行速度;
有利于對(duì)微指令的修改;
有利于微程序設(shè)計(jì)的靈活性。 -
微指令的編譯法:微指令中控制字段的設(shè)計(jì)方法。
直接控制法
在微指令的控制字段中,每一位代表一個(gè)微命令,在設(shè)計(jì)微指令時(shí),如果要發(fā)出某個(gè)微命令則將控制字段中對(duì)應(yīng)位置有效,這樣就可以打開(kāi)或關(guān)閉某個(gè)控制門,這就是直接控制法。如果是編碼控制則需要置相應(yīng)編碼值。
微指令的控制字段太長(zhǎng)字段直接編譯法
在計(jì)算機(jī)中各個(gè)微命令,在任一條微指令周期內(nèi)不可能同時(shí)發(fā)出,一般一條微指令的大部分微命令是無(wú)效的,而只有幾個(gè)微命令有效。如果有一組微命令,在任一個(gè)微周期(一條微指令所需的執(zhí)行時(shí)間)只有一個(gè)微命令起作用,那么這一組微命令是互斥的;通常將在同一個(gè)微周期中不能同時(shí)出現(xiàn)的微命令稱為相斥性微命令,而將在同一個(gè)微周期中可以同時(shí)出現(xiàn)的微命令稱為相容性微命令。
將這些互斥的微命令編成一組,用編碼來(lái)表示一個(gè)微命令。從而縮短微指令長(zhǎng)度。這樣微指令寄存器的輸出端加一個(gè)譯碼器,該譯碼器的輸出就是這一組微命令,每一條微指令該字段的一個(gè)編碼經(jīng)過(guò)譯碼器譯碼后輸出一個(gè)微命令。一般要留一個(gè)編碼(通常為 0 編碼)表示這一組微命令沒(méi)有一個(gè)有效。
字段直接編譯法的分段原則是:
相斥性微命令分在同一字段內(nèi),相容性微命令分在不同字段內(nèi)。前者可以提高信息位的利用率,縮短微指令字長(zhǎng);后者有利于實(shí)現(xiàn)并行操作,加快指令的執(zhí)行速度。一般將同類操作中互斥的微命令劃分在一個(gè)字段內(nèi),這樣使微指令結(jié)構(gòu)清晰,易于編制微程序和易于擴(kuò)充功能。
每個(gè)小字段的信息位不能太長(zhǎng),一般不超過(guò) 6 位,否則將增加譯碼線路的復(fù)雜性和譯碼時(shí)間。
字段間接編譯法
在這種編碼方法中,某一字段所產(chǎn)生的微命令,是和另一字段的代碼聯(lián)合定義出來(lái)的。 -
微指令下址字段設(shè)計(jì)方法
微程序入口地址的產(chǎn)生
每一條機(jī)器指令都對(duì)應(yīng)一段微程序,首先由“取機(jī)器指令”的微程序完成將一條機(jī)器指令從主存中取出并送到 IR,這段微程序一般安排在控制存儲(chǔ)器的特定單元;然后根據(jù)機(jī)器指令的操作碼轉(zhuǎn)移到其對(duì)應(yīng)的微程序入口地址,也就是指令譯碼,通常采用邏輯電路、PROM 來(lái)實(shí)現(xiàn)這種微程序的轉(zhuǎn)移。指令譯碼產(chǎn)生相應(yīng)微程序入口地址如果采用 PROM 來(lái)實(shí)現(xiàn),這種 PROM 稱為映射存儲(chǔ)器(MAPROM),它是將指令的操作碼作為地址輸入,而其相應(yīng)的存儲(chǔ)單元的內(nèi)容即為該指令的微程序入口地址,從存儲(chǔ)器的數(shù)據(jù)線輸出到微地址寄存器,從CM中取該微程序的第一條微指令。
可以采用邏輯電路來(lái)實(shí)現(xiàn) 。
-
后繼微地址的產(chǎn)生
確定了微程序入口地址后,就可以開(kāi)始執(zhí)行微程序。每條微指令執(zhí)行完畢,都要根據(jù)要求產(chǎn)生后繼微指令地址。計(jì)數(shù)器方式
在微程序控制器單元中設(shè)置一個(gè)微程序計(jì)數(shù)器μPC, 在順序執(zhí)行微指令時(shí),后繼微指令地址由現(xiàn)行微地址加上一個(gè)增量(通常為 1)來(lái)產(chǎn)生。遇到轉(zhuǎn)移時(shí),由微指令給出轉(zhuǎn)移地址,使微程序按新的微地址順序執(zhí)行。
這種方式下微程序流控制由兩部分信息確定:轉(zhuǎn)移控制字段 BCF 和轉(zhuǎn)移地址字段 BAF,其微指令格式如下:
BAF 用于給出微指令轉(zhuǎn)移的部分微地址,BCF 用來(lái)確定后繼微地址是順序執(zhí)行還是條件轉(zhuǎn)移。當(dāng)微程序轉(zhuǎn)移條件成立時(shí),將用 BAF 修改送μPC 的部分地址,否則順序執(zhí)行下一條微指令(μPC+1)。
在微程序流的控制中,由微指令的BCF 所定義的微命令應(yīng)能選擇各種后繼微地址來(lái)源。假設(shè),在微程序中有順序執(zhí)行、無(wú)條件轉(zhuǎn)移、條件轉(zhuǎn)移、測(cè)試循環(huán)、轉(zhuǎn)微子程序和返回 6 種情況,再加上每條指令取出后要轉(zhuǎn)移到相應(yīng)的微程序入口地址,則轉(zhuǎn)移控制字段 BCF 用 3 位。轉(zhuǎn)移地址字段 BAF 一般位數(shù)少,將它送到μPC 的若干低位或高位形成后繼微地址。
BCF 字段輸出端設(shè)置一譯碼器使得分別當(dāng):
BCF=000,0 譯碼線有效即為順序執(zhí)行微命令,使與門打開(kāi),+1 信號(hào)進(jìn)入μPC,順序執(zhí)行微指令,后繼微地址為μ PC+1;
BCF=001,1 譯碼線有效即為指令操作碼譯碼產(chǎn)生微程序入口的微命令,將指令譯碼器輸出門打開(kāi),根據(jù)機(jī)器指令操作碼譯碼產(chǎn)生后繼微地址。
BCF=010,2 譯碼線有效即為無(wú)條件轉(zhuǎn)移微命令,BAF 送μPC,由 BAF 和μ PC 組合形成后繼微地址。
BCF=011,3 譯碼線有效即為條件轉(zhuǎn)移微命令,由轉(zhuǎn)移條件的測(cè)試結(jié)果來(lái)確定是否轉(zhuǎn)移。若測(cè)試條件滿足,則有 BAF 和μ PC 組合形成后繼微地址;若測(cè)試條件不滿足,則μ PC+1 作為后繼微地址。
BCF=100,4 譯碼線有效即為測(cè)試循環(huán)微命令,后繼微地址由測(cè)試循環(huán)條件確定。當(dāng)測(cè)試條件(循環(huán)計(jì)數(shù)器內(nèi)容為零)不滿足時(shí),循環(huán)繼續(xù),循環(huán)計(jì)數(shù)器減一,循環(huán)入口微地址也就是后繼微地址由 BAF 與μ PC 組合形成;當(dāng)測(cè)試條件滿足時(shí),表示循環(huán)結(jié)束,其后繼微地址為μ PC+1,以此跳出循環(huán)。
BCF=101,5 譯碼線有效即轉(zhuǎn)微子程序微命令,其后繼微地址即微子程序入口微地址由 BAF與μ PC 組合形成。在轉(zhuǎn)移之前,要把該條微指令的下一微地址μPC+1 送入返回地址寄存器中,以備返回微主程序。
BCF=110,6 譯碼線有效即返回微命令,其后繼微地址為返回地址寄存器中的內(nèi)容,將其送入μ PC,從而實(shí)現(xiàn)從微子程序返回到原來(lái)的微主程序。計(jì)數(shù)器方式產(chǎn)生后繼微地址的工作過(guò)程是,機(jī)器加電后執(zhí)行的第一條微指令地址,也就是取指令的微程序起始地址由硬件電路置入μ PC 中,順序執(zhí)行取指令微程序,實(shí)現(xiàn)從主存中取出機(jī)器指令送IR;由機(jī)器指令操作碼譯碼后產(chǎn)生相應(yīng)微程序入口地址,接下去若順序執(zhí)行微指令,則將μ PC+1 作為后繼微地址;若遇轉(zhuǎn)移類微指令而且轉(zhuǎn)移條件滿足,則由 BAF 和μ PC 組合產(chǎn)生后繼微地址,否則μ PC+1。這樣,直至一段微程序執(zhí)行完畢,完成一條機(jī)器指令為止;重復(fù)又轉(zhuǎn)入取指令微程序。
優(yōu)點(diǎn)是微指令字較短,便于編寫微程序,后繼微地址產(chǎn)生機(jī)構(gòu)比較簡(jiǎn)單;缺點(diǎn)是執(zhí)行速度相對(duì)較慢,因?yàn)橛?jì)數(shù)器方式不易于直接實(shí)現(xiàn)各測(cè)試條件的多路轉(zhuǎn)移,在編寫微程序中,由于頻繁地用到非順序的微指令,在微程序中要插入很多的轉(zhuǎn)移微指令,這樣會(huì)影響微程序的執(zhí)行速度。這種方式的微程序即要滿足地址遞增順序,又要滿足靈活地轉(zhuǎn)向各種共用微程序與微子程序入口的要求,因此微程序在控制存儲(chǔ)器中的物理分配不方便,需合理安派、調(diào)整。
判定方式(下址字段法)
其后繼微指令地址可由設(shè)計(jì)者指定或設(shè)計(jì)者指定的測(cè)試判別字段控制產(chǎn)生。這種方式要在微指令格式中設(shè)置一個(gè)字段用來(lái)指明下一條要執(zhí)行的微指令地址,所以也稱為下址字段法。在這種方式中,因?yàn)槊恳粭l微指令至少都是一條無(wú)條件轉(zhuǎn)移微指令,因此不必設(shè)置專門的轉(zhuǎn)移微指令。
μ AR 代替了μ PC,μ AR 的內(nèi)容可以由微指令的下址字段來(lái)裝入,也可以由微地址散轉(zhuǎn)及修改電路來(lái)裝入,微地址散轉(zhuǎn)及修改電路包括由機(jī)器指令操作碼產(chǎn)生對(duì)應(yīng)微程序入口地址的邏輯電路和條件轉(zhuǎn)移時(shí)的微地址修改邏輯電路。
當(dāng)微程序無(wú)分支時(shí),后繼微指令地址由微指令的下址字段直接給出,這是在設(shè)計(jì)微程序流程圖時(shí)由設(shè)計(jì)者指定的。當(dāng)微程序出現(xiàn)分支時(shí),由微指令的測(cè)試字段信號(hào)啟動(dòng)微地址修改邏輯電路,根據(jù)狀態(tài)標(biāo)志位來(lái)修改μ AR 的若干位來(lái)產(chǎn)生后繼微地址,使微程序轉(zhuǎn)移到相應(yīng)的微地址。測(cè)試判別字段的位數(shù)取決于測(cè)試源的個(gè)數(shù),微指令中可以用直接控制法表示,即一位表示一個(gè)測(cè)試源,也可以將若干個(gè)測(cè)試源組合用幾位表示,并經(jīng)過(guò)譯碼后一次只有一個(gè)測(cè)試源有效。需要修改的μ AR 的位數(shù)取決于轉(zhuǎn)移分支的路數(shù)。下址字段的位數(shù)取決于控制存儲(chǔ)器的容量,與μ AR 的位數(shù)相等。
優(yōu)點(diǎn)是可以實(shí)現(xiàn)快速多路分支,以提高微程序的執(zhí)行速度,微程序在控制存儲(chǔ)器中的物理分配方便,微程序設(shè)計(jì)靈活;缺點(diǎn)是微指令字加長(zhǎng),形成后繼微地址的結(jié)構(gòu)比較復(fù)雜。
-
微指令格式的類型
水平型微指令
其基本特征是:微指令字采用直接控制法的基本思想,一條微指令能控制數(shù)據(jù)通路中多個(gè)功能部件并行操作。控制信息的編碼簡(jiǎn)單,盡可能使微命令與控制門之間有直接對(duì)應(yīng)的關(guān)系。在微指令字中,不必給出源部件或目標(biāo)部件的編址,因?yàn)樗鼈円呀?jīng)隱含在有關(guān)的并行操作的微命令中。優(yōu)點(diǎn)是:一條微指令可同時(shí)發(fā)許多個(gè)微命令,且微指令控制字段直接控制,不用字段譯碼,使得微指令執(zhí)行效率高,速度快,靈活,各部件執(zhí)行操作的并行能力強(qiáng);水平型微指令來(lái)解釋一條指令或完成某種功能所需要的微指令條數(shù)少,因此編制的微程序就比較短。
缺點(diǎn)是:微指令字太長(zhǎng),增加了控制存儲(chǔ)器的橫向容量。垂直型微指令
采用完全編碼的方法,將一套微命令代碼化構(gòu)成微指令。因此,一條微指令只能控制一二種微操作,由微操作碼、源地址和目標(biāo)地址以及其他附帶信息,它可以和機(jī)器指令一樣分成多種類型的微指令,所有微指令構(gòu)成一個(gè)微指令系統(tǒng)。微指令字采用短格式,一條微指令只能控制一二個(gè)微操作,并行控制能力差。對(duì)于用戶來(lái)說(shuō),垂直型微指令比較直觀,容易掌握和便于使用。微指令字短,減少了橫向控制存儲(chǔ)器的容量。 缺點(diǎn)是:微指令要經(jīng)過(guò)譯碼才能發(fā)出微命令,微指令的執(zhí)行效率低,并行操作性比較差,解釋一條機(jī)器指令或完成某種功能所需要的微指令條數(shù)增多,增加了縱向微程序容量。一般實(shí)際設(shè)計(jì)微指令時(shí),大多采用兩種類型結(jié)合的方法來(lái)設(shè)計(jì)微指
令,使得微指令字長(zhǎng)適當(dāng),并行操作能力也比較強(qiáng),設(shè)計(jì)的微程序容量適當(dāng)。 -
微程序控存和動(dòng)態(tài)微程序設(shè)計(jì)
微程序控制存儲(chǔ)器一般由只讀存儲(chǔ)器構(gòu)成,如果使用可讀寫的隨機(jī)存儲(chǔ)器作為控制存儲(chǔ)器也可以,但停電后 RAM 中的內(nèi)容會(huì)消失,所以,開(kāi)機(jī)后還要首先將外存上存放的微程序調(diào)到CM的 RAM 中,才能開(kāi)始執(zhí)行程序。 采用 RAM 作為控制存儲(chǔ)器的優(yōu)點(diǎn)是可以實(shí)現(xiàn)指令系統(tǒng)的擴(kuò)充或調(diào)整。在一臺(tái)微程序控制的計(jì)算機(jī)中,假如能根據(jù)用戶的要求改變微程序,那么這臺(tái)機(jī)器就具有動(dòng)態(tài)微程序設(shè)計(jì)功能。動(dòng)態(tài)微程序設(shè)計(jì)的目的是使計(jì)算機(jī)能更靈活、更有效地適應(yīng)于各種不同的應(yīng)用場(chǎng)合。允許用戶在原來(lái)指令系統(tǒng)的基礎(chǔ)上增加一些指令來(lái)提高程序的執(zhí)行效率。用于動(dòng)態(tài)微程序設(shè)計(jì)的控制存儲(chǔ)器稱為可寫控制存儲(chǔ)器或用戶控制存儲(chǔ)器。
-
毫微程序設(shè)計(jì)
把垂直型微指令設(shè)計(jì)和水平型微指令設(shè)計(jì)結(jié)合起來(lái),采用兩級(jí)微程序設(shè)計(jì)。第一級(jí)為垂直微程序,用來(lái)解釋機(jī)器指令,稱為微程序并存放在稱為微程序存儲(chǔ)器的控存中。第二級(jí)為水平微程序,用來(lái)解釋垂直微指令,并產(chǎn)生相應(yīng)微命令,實(shí)現(xiàn)數(shù)據(jù)通路的控制。由于它是解釋微程序的微程序,所以稱為毫微程序,存放在稱為毫微程序存儲(chǔ)器的控存中。這樣毫微程序的每條水平型微指令就可稱之為毫微指令;而使用垂直微指令和毫微指令這兩種微指令的程序開(kāi)發(fā)就叫做毫微程序設(shè)計(jì)。
毫微程序設(shè)計(jì)使得微程序流的控制和微命令發(fā)出完全分離,微程序流控制由微程序級(jí)實(shí)現(xiàn)(垂直型微指令),而微命令則由毫微程序產(chǎn)生。微命令是非常簡(jiǎn)單的控制信號(hào),可由垂直型微指令直接產(chǎn)生,無(wú)需再用毫微指令去解釋。
一條垂直微指令只用一條毫微指令來(lái)解釋。這種情況可簡(jiǎn)化垂直微指令的譯碼器,并且相同的毫微指令在毫微程序存儲(chǔ)器中只存放一條即可,能減少控制存儲(chǔ)器的容量。
一條垂直微指令由一段毫微程序來(lái)解釋。這是最一般的情況。這時(shí)毫微程序與垂直微指令的關(guān)系就類似于微程序與機(jī)器指令的關(guān)系。這種情況,微程序設(shè)計(jì)更隨意,更能有效地控制數(shù)據(jù)通路。
微程序控制方式下模型機(jī)的設(shè)計(jì)實(shí)例
-
指令的執(zhí)行過(guò)程
用開(kāi)關(guān)單元的 CLR 開(kāi)關(guān)將 PC 程序計(jì)數(shù)器、控存地址寄存器和微指令寄存器清零,使程序從 0 地址單元取指令; 微指令從控存 00 微地址開(kāi)始執(zhí)行,經(jīng)過(guò)微程序控制臺(tái)使在 01 微地址的微指令執(zhí)行的 T2 時(shí)刻發(fā)出控制信號(hào),T3 時(shí)刻將 PC程序計(jì)數(shù)器的內(nèi)容打入 AR 地址寄存器; 由 02 微地址的微指令發(fā) M-R#、B-IR 信號(hào),將 AR 地址寄存器所尋址的指令從存儲(chǔ)器中取出送總線,并打入 IR 指令寄存器; 由 03 微地址的微指令發(fā) J1#信號(hào),將指令操作碼通過(guò)指令譯碼器轉(zhuǎn)換成微地址寄存器(控存地址寄存器)的輸出置1(SE6#-SE0#)信號(hào),使得形成下一條微指令地址(即該指令的微程序入口地址); 從控存中取出該指令的第一條微指令到微指令寄存器μ IR 發(fā)出控制信號(hào),并由該微指令的下址字段MA6~MA0經(jīng)微地址寄存器再到控存取下一條微指令; 每一條微指令的控制信號(hào)控制各單元(如運(yùn)算器單元、輸入單元、輸出單元、寄存器單元等)完成相應(yīng)的操作,直到一條指令的所有微指令執(zhí)行完,即完成一條指令的功能,此時(shí),先判測(cè)有無(wú)中斷,若中斷信號(hào)有效,則將下一條指令的PC壓入堆棧,并從中斷向量單元取出中斷子程序入口地址,再回到 01 微地址執(zhí)行取指令的微指令,既轉(zhuǎn)入中斷子程序執(zhí)行。若中斷信號(hào)無(wú)效,則回到01 微地址行取指令的微指令,即繼續(xù)執(zhí)行指令。 -
微指令的格式
微指令字長(zhǎng) 24 位,記為 M23~M0,其中 M13~M8 采用直接控制法、BTO 和 OTB 字段采用了字段直接編譯法,FUNC 和 FS 一起采用了字段間接編譯法,下址是 7 位。 -
指令譯碼器
指令寄存器的輸出接至指令譯碼器,即指令譯碼電路。該電路主要功能是根據(jù)輸入的指令操作碼 I7-I2、微程序的轉(zhuǎn)移方式 J1#-J5#、運(yùn)算結(jié)果的狀態(tài) FC 和 FZ、控制臺(tái)開(kāi)關(guān) K1 和 K2 的狀態(tài),進(jìn)行邏輯譯碼,產(chǎn)生后繼微地址的控制信號(hào) SE6#- SE0#,以控制實(shí)現(xiàn)機(jī)器指令轉(zhuǎn)入微程序入口和微程序的順序、分支、循環(huán)運(yùn)行。模型機(jī)用判定方式產(chǎn)生后繼微地址。SE6#~SE0#用于控制修改后繼微地址的相應(yīng)位
MA6~MA0,當(dāng) SEi# =0,則微地址 MAi被修改(置 1),否則,MAi不變,與原微指令寄存器輸出的下址字段相同。 -
微程序控制器
指令寄存器 IR
控制器將指令從存儲(chǔ)器中取出后送入指令寄存器 IR,指令的操作碼輸入指令譯碼器進(jìn)
行譯碼。指令譯碼(后繼微地址轉(zhuǎn)移控制電路)
后繼微地址轉(zhuǎn)移控制電路一方面將指令寄存器的指令操作碼轉(zhuǎn)換成該指令的微程序入口地址,另一方面可以實(shí)現(xiàn)微指令的轉(zhuǎn)移控制,當(dāng)需要根據(jù)硬件中斷信號(hào)、運(yùn)算器運(yùn)算狀
態(tài)等進(jìn)行微指令轉(zhuǎn)移時(shí),可以根據(jù)這些信號(hào)的不同狀態(tài)實(shí)現(xiàn)微地址的分支控制,從而實(shí)現(xiàn)
微指令轉(zhuǎn)移。控制存儲(chǔ)器 CM
能存放 24 位的微指令。微指令下址字段 7 位,因此,控存的實(shí)際容量為 128×24 位,即可以存放 128 條微指令。 控存中的 24 位微碼,高 17 位送微指令寄存器 μIR 保存并譯碼,低 7 位(下址字段)則送后繼微地址轉(zhuǎn)移控制邏輯產(chǎn)生后繼微地址。微指令寄存器 μIR 和微指令譯碼器
微指令寄存器 μIR 的功能是存放從控存 CM 中讀出的高 16 位的微碼 M23~M8(低 7 位
M6~M0 是下址字段,M7 為空)。μIR 的清零端 CLR# 接 CLR 開(kāi)關(guān),即在總清時(shí),使 μIR清零。μIR 的數(shù)據(jù)輸入端接控存 CM 的數(shù)據(jù) I/O 端;而 μIR 的數(shù)據(jù)輸出端就是整機(jī)的控制信號(hào),其中 M13~M8是直接控制的信號(hào),M23~M9是經(jīng)過(guò)微指令譯碼器譯碼后產(chǎn)生控制信號(hào)。控存地址寄存器 CMAR
由輸入信號(hào) SE6#~SE0#控制修改當(dāng)前微指令(從控存 CM 中讀出)的下址字段 M6-M0(即 MA6-MA0),以產(chǎn)生下條微指令的控存地址,即后繼微地址。 -
設(shè)計(jì)流程
設(shè)計(jì)指令的功能,指令碼及尋址方式
編寫微程序流程圖
根據(jù)指令碼和轉(zhuǎn)移方式分配微地址及下址字段
根據(jù)微指令格式,編寫微指令代碼
微程序控制器與硬布線控制器的比較
- 根本區(qū)別在于微操作控制信號(hào)的產(chǎn)生方法不同:微程序控制器是事先將編寫好的微代碼放入控制存儲(chǔ)器,執(zhí)行過(guò)程中需要時(shí)再?gòu)目卮嬷凶x取并送出的;而硬布線控制器由組合邏輯電路產(chǎn)生微操作控制信號(hào)。
- 從電路的規(guī)整性來(lái)說(shuō),微程序控制器電路相對(duì)規(guī)整,而硬布線控制器電路設(shè)計(jì)較為繁瑣、不規(guī)整。由于微程序控制器的控制信號(hào)存于控存,屬于存儲(chǔ)邏輯電路;而硬布線控制器屬于時(shí)序及組合邏輯電路,所以電路設(shè)計(jì)較微程序控制器更為繁雜與復(fù)雜。
- 從指令系統(tǒng)的易擴(kuò)充性來(lái)說(shuō),微程序控制器易修改和擴(kuò)充,而硬布線控制器不易修改和擴(kuò)充。如果需要修改一條指令的功能或者增加一條指令,對(duì)于微程序控制器,只需在控制存儲(chǔ)器中修改或添加相應(yīng)的微程序段即可;而對(duì)于硬布線控制器,則要修改所有涉及到的微操作控制信號(hào)的邏輯函數(shù)和電路,變動(dòng)甚大,非常不利于指令的修改和擴(kuò)充。
- 微程序控制器執(zhí)行指令的速度相對(duì)硬布線控制器慢,因?yàn)榍罢咝枰x控存、微指令譯碼、發(fā)送微操作控制信號(hào)來(lái)完成一個(gè) CPU 周期(機(jī)器周期),而后者經(jīng)過(guò)一些門電路的延遲,即可產(chǎn)生微操作控制信號(hào),所以更利于硬布線控制器的 CPU 提高主頻。
- 微程序控制器早先多應(yīng)用于 CISC 系統(tǒng),硬布線控制器多應(yīng)用于 RISC 系統(tǒng)。在現(xiàn)代的 RISC 系統(tǒng)中,絕大多數(shù)指令為簡(jiǎn)單指令,均用硬布線方式實(shí)現(xiàn);少數(shù)復(fù)雜指令則使用微程序?qū)崿F(xiàn)。而在現(xiàn)代的 CISC 系統(tǒng)中,譬如 Intel 微處理器,也將一些原先采用微程序?qū)崿F(xiàn)的指令,改用硬布線實(shí)現(xiàn),以提高 CPU 速度和節(jié)省芯片面積。
總結(jié)
以上是生活随笔為你收集整理的组成原理---控制器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端学习(1956)vue之电商管理系统
- 下一篇: 前端学习(1945)vue之电商管理系统