一、微程序控制器
1. 基本思想
微程序控制器採用存儲邏輯,將微操作信號按照一定規則進行信息編碼,形成微指令。再將微指令按照時間的先後順序排列起來,構成微程序,並存入專門的存儲器(控制存儲器CM)中。機器執行指令時,一條條讀出微指令,從而產生各種操作控制信號,使各部件執行相應的操作。
2. 基本概念
● 微命令:控制部件通過控制總線向執行部件發出的控制命令。
● 微操作:執行部件收到微命令後執行的操作。
● 微指令:在機器的一個CPU週期中,一組實現一定操作功能的微命令的組合,構成一條微指令。
● 微程序:一組完成某個功能的微指令序列,構成一個微程序。
● 控制存儲器:簡稱控存,是用來存放微程序的存儲器。
● 微地址:控制存儲器的存儲單元的編號。
3. 組成部分
微程序控制器的微操作信號發生器由以下部分組成:
- 控制存儲器:保存指令系統中所有指令的微程序。
- 微指令寄存器:保存當前正在執行的微指令。
- 微地址寄存器:接受微地址形成部件送來的微地址,爲在CM中讀取微指令做準備。
- 地址轉移邏輯:產生微程序的入口地址和後續地址,保證微指令額連續執行。
4. 微操作分類
- 相容性微操作:能夠同時或在同一個CPU週期內並行執行的微操作。
- 相斥性微操作:不能同時或在同一個CPU週期內並行執行的微操作。
在一條微指令中,相容性微操作的微命令可以同時爲1,而相斥性微操作的微命令不能同時爲1。
5. 工作流程
- 根據PC的值,取出一條內存放入指令寄存器IR;
- 根據微程序入口地址,從控存中取出微指令放入微指令寄存器,產生微命令,完成規定操作;
- 繼續從控存中取出下一條微指令並執行,直到這段微程序執行完成,此時一條機器指令執行完畢;
- 重複以上步驟,直到程序執行完畢。
例:如圖是一個運算器的數據通路圖,設微指令字長爲23位,格式如圖。試編寫指令:ADD R2,R1 -> R2 對應的微程序。
分析:指令的微程序流程圖如下:
根據流程圖,我們可以得知,該微程序由兩條微指令組成,分別爲:
- 000 000 000 000 11111 10 0000 (該直接地址不是下一微指令的直接地址,因爲需要指令譯碼;P1即譯碼後獲取地址)
- 010 100 100 100 00000 00 0000 (指令運行完畢,返回起點0000)
其中第一條微指令是取指微指令。對於同一臺機器,取指微指令是相同的。也可以單獨拿出這條指令,設爲機器的取指微程序。
6. 微指令設計目標
設計微指令結構應當追求以下目標:
- 有利於縮短微指令字長
- 有利於減小控存的容量
- 有利於提高微程序的執行速度
- 有利於對微指令的修改
- 有利於提高微程序設計的靈活性
7. 微指令編碼方式
- 直接表示法:在微指令的操作控制字段中,每一位代表一個微命令。
優點:簡單、直觀、運行速度快; 缺點:微指令長度過長。
- 字段直接編碼法:控制字段分爲若干小字段,一組互斥的微命令放在一個字段內;字段分別編碼,每種編碼代表一個命令。
優點:縮短微指令字長 缺點:需要譯碼,減慢執行速度。
- 混合編碼法:直接表示法和字段直接編碼法混合使用。
8. 微地址形成方式
微地址可以分爲兩大類:微程序的入口地址和後繼微地址。
入口地址是根據機器指令的操作生成的:
第一條微指令的地址可以由專門的硬件電路生成,也可以外部向微地址寄存器輸入;該第一條微指令就是取指微程序的入口地址。當取指微程序取出機器指令後,機器指令的操作碼字段就會指出各個微程序的入口地址。
因此,對於微地址的形成方式,應重點關注後繼微地址。
- 計數器法
順序執行微程序時,後繼微地址由當前的微地址加上一個增量產生(類似於程序計數器PC)。在非順序執行時,由微指令的順序控制字段產生轉移地址。
優點:順序控制字段較短,微地址產生機構簡單; 缺點:不能實現兩路以上的並行微程序轉移。
- 斷定法
後繼微地址由微程序設計者指定,或是根據測試結果直接決定後繼微地址的全部或部分值。
優點:靈活性好,速度快; 缺點:微地址產生機構複雜。
9. 微指令格式
- 水平型微指令
一次能定義並執行多個並行操作的微指令格式。上面例題中使用的就是水平型微指令。 - 垂直型微指令
微指令中設有微操作碼字段,採用微操作碼編譯法,由微操作碼規定微指令的功能。相當於機器指令操作碼的使用方法。
垂直型微指令不要求並行執行的能力,通常一條微指令只有1~2個微命令,執行1~2個微操作。
對於同一條機器指令,需要發出的微命令實際上是固定不變的。水平型微指令犧牲了微指令長度,換來了微指令數目的簡化;而垂直型微指令恰好相反。
兩者的比較:
- 水平型微指令的並行能力、靈活性更強;
- 水平型微指令執行一條機器指令所需要的微指令數目更少,執行速度更快;
- 水平型微指令用較短的微程序結構換取較長的微指令結構;
- 水平型微指令與機器指令相差較大。
二、硬佈線控制器
1. 設計思想
硬佈線控制器是採用組合邏輯的思想,把微操作信號發生器看作一個產生專門固定時序控制信號的邏輯電路。
該邏輯電路是按數字邏輯電路的設計原則設計出的由門電路和觸發器構成的複雜樹形網絡,故稱爲硬佈線控制器。
2. 基本結構
硬佈線控制器邏輯網絡的輸入信號共有三類:
● 指令操作碼譯碼器的輸出I
● 執行部件的反饋信號B
● 時序部件的時序信號,又分爲節拍電位信號M和節拍脈衝信號T
其輸出信號就是微操作控制信號C。
由數字電路可以歸納,該邏輯網絡的輸出方程爲:C = f(I, B, M, T)
3. 設計步驟
- 繪製指令的指令週期流程圖:以數據通路圖爲基礎,分析所有指令的指令週期流程圖。
- 列出微操作時間表:把指令流程圖中的微操作序列合理地安排在各個機器週期的節拍和脈衝中,保證不發生衝突。
- 微操作邏輯綜合:把同一微操作用邏輯關係式綜合起來,並加以簡化。
- 畫出邏輯電路圖。
例:一個數據通路圖如下,試設計實現以下指令的硬佈線控制器。
分析:
第一步,畫出指令週期流程圖。
第二步,列出時間表
第三步,根據時間表,得出微操作邏輯表達式。
例如:對於PCout,其在且僅在T0時有效,可以得到PCout = T0;
對於MARin,在T0時一定有效,且在非JZ指令的T3上有效。可以得到MARin = T0 + T3 · !JZ。
最後可得各個微操作控制信號的邏輯表達式如圖:
第四步,畫出邏輯電路圖。(太多了,略)