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