1. 程式人生 > >【筆記】控制單元的設計

【筆記】控制單元的設計

一、組合邏輯設計

1.組合邏輯控制單元框圖

  控制單元的時鐘輸入實際上是一個脈衝序列,其頻率即為機器的主頻,它使CU能按一定的節拍發出各種控制訊號。節拍的寬度應滿足資料資訊通過資料匯流排從源到目的所需的時間。以時鐘為計數脈衝,通過一個計數器,又稱節拍發生器,便可產生一個與時鐘週期等寬的節拍序列。

這裡寫圖片描述

2.微操作的節拍安排

  安排微操作節拍時應注意一下3點:

  • 有些微操作的次序是不容改變的,故安排微操作節拍時必須注意微操作的先後順序。
  • 凡是被控制物件不同的微操作,若能在一個節拍內執行,應儘可能安排在同一個節拍內,以節省時間。
  • 如果有些微操作所佔時間不長,應該將它們安排在一個節拍內完成,並且允許這些微操作有先後次序。

二、微程式設計

1.微程式設計思想的產生

  由於這些微指令是以二進位制程式碼形式表示的,每位代表一個控制訊號,因此逐條執行每一條微指令,也就相應地完成了一條機器指令的全部操作。微程式控制單元的核心部件是一個控制儲存器。

2.微程式控制單元框圖及工作原理

機器指令對應的微程式

  採用微程式設計方法設計控制單元的過程就是編寫每一條機器指令的微程式,它是按執行每條機器指令所需的微操作命令的先後順序而編寫的,因此一條機器指令對應一個微程式。

  控制儲存器中的微程式個數應為機器指令數再加上對應取指、間接定址和中斷週期3個微程式。

微程式控制單元的基本框圖

  點劃線框內的控制儲存器(簡稱控存)是微程式控制單元的核心部件,用來存放全部微程式;CMAR是控存地址暫存器,用來存放欲讀出的微指令地址;CMDR是控存資料暫存器,用來存放從控存讀出的微指令;順序邏輯是用來控制微指令序列的,具體就是控制形成下一條微指令的地址,其輸入與微地址形成部件、微指令的下地址欄位以及外來的標誌有關。
  微指令的基本格式共分為兩個欄位,一個為操作控制欄位,該欄位發出各種控制訊號;另一個為順序控制欄位,它可指出下條微指令的地址,以控制微指令序列的執行順序。

這裡寫圖片描述

3.微指令的編碼方式

  微指令的編碼方式又稱為微指令的控制方式,是指對微指令的控制欄位進行編碼,以形成控制訊號。

直接編碼方式

  在微指令的操作控制欄位中,每一位代表一個微操作命令,這種編碼方式即為直接編碼方式
  這種方式含義清晰,而且只要微命令從控存讀出,即刻可由控制欄位發出命令,速度快。但由於機器中微操作命令甚多,可能造成控存容量極大。

欄位直接編碼方式

  這種方式就是將微指令的操作控制欄位分成若干段,將一組互斥的微操作命令放在一個欄位內,通過對這個欄位譯碼,便可對應每一個微命令。這種方式因靠欄位直接譯碼發出微命令,故又有顯示編碼之稱。
  採用欄位直接編碼方法可用較少的二進位制資訊表示較多的微操作命令訊號。由於增加了譯碼電路,使微程式的執行速度稍微減慢。至於操作控制欄位應分幾段,與需要並行發出的微命令個數有關。每段的長度可以不等,與具體要求互斥的微命令個數有關。

欄位間接編碼方式

  這種方式一個欄位的某些微命令還需由另一個欄位中的某些微命令來解釋,由於不是靠欄位直接譯碼發出微命令,故稱為欄位間接編碼,又稱為隱式編碼。
  這種方法雖然可以進一步縮短微指令字長,但因削弱了微指令的並行控制能力,因此通常用做欄位直接編碼法的一種輔助手段。

混合編碼

  這種方法是把直接編碼和欄位編碼混合使用,以便能綜合考慮微指令的字長、靈活性和執行微程式的速度等方面的要求。

其他

  微指令中還可設定常數字段,用來提供常數、計數器初值等。常數字段還可以和某些解釋位配合,如解釋位為0,表示該欄位提供常數;解釋位為1,表示該欄位提供某種命令,使微指令更靈活。

4.微指令序列地址的形成

直接由微指令的下地址欄位指出

  大部分微指令的下地址欄位直接指出了後續微指令的地址。這種方式又稱為斷定方式

根據機器指令的操作碼形成

  當機器指令取至指令暫存器後,微指令的地址由操作碼經微地址形成部件。微地址形成部件實際上是一個編碼器,其輸入為指令操作碼,輸出就是對應該機器指令微程式的首地址。它可採用PROM實現,以指令的操作碼作為PROM的地址,而相應的儲存單元內容就是對應該指令微程式的首地址。

增量計數器法

  對於順序地址,微指令可次啊用增量計數法,即(CMAR)+1CMAR(CMAR)+1 \rightarrow CMAR來形成後續微指令的地址。

分支轉移

   當遇到條件轉移指令時,微指令出現了分支,必須根據各種標誌來決定下一條微指令的地址。

在這裡插入圖片描述

其中,轉移方式指明判別條件,轉移地址指明轉移成功後的去向,若不成功則順序執行。

通過測試網路形成

   微指令的地址還可以通過測試網路形成。圖中微指令的地址分兩部分,高段h為非測試地址,由微指令的H段地址碼直接形成;地段1為測試地址,由微指令的L段地址碼通過測試網路形成。

由硬體產生微程式入口地址

   當電源加電後,第一條微指令的地址可由專門的硬體電路產生,也可由外部直接向CMAR輸入微指令的地址,這個地址即為取指週期微程式的入口地址。故響應中斷時,可由硬體產生中斷週期微程式的入口地址。
   當出現間接定址時,也可由硬體產生間址週期微程式的入口地址。

多路選擇器可選擇以下4路地址:

  • (CMAR)+1CMAR(CMAR)+1 \rightarrow CMAR
  • 微指令的下地址欄位
  • 指令暫存器(通過微地址形成部件)
  • 微程式入口地址

5.微指令格式

  微指令格式與微指令的編碼方式有關,通常分為水平型微指令垂直型微指令兩種。

水平型微指令

   水平型微指令的特點是一次能定義並執行多個並行操作的微命令。從編碼方法看,直接編碼、欄位直接編碼、欄位間接編碼以、直接和欄位混合編碼都屬於水平型微指令。

垂直型微指令

   垂直型微指令的特點是採用類似機器指令操作碼的方式,在微指令字中,設定微操作碼欄位,由微操作碼規定微指令的功能。通常一條微指令有1~ 2個微命令,控制1 ~ 2種操作。

兩種微指令格式的比較

  1. 水平型未執行比垂直型微指令並行操作能力強、效率高、靈活強。
  2. 水平型微指令執行一條機器指令所需的微指令數目少,因此速度比垂直型微指令的速度快。
  3. 水平型微指令用較短的微程式結構換取較長的微指令結構,垂直型微指令正相反,它以較長的微程式結構換取較短的微指令結構。
  4. 水平型微指令與機器指令差別較大,垂直型微指令與機器指令相似。

   水平型微指令由操作控制欄位、判別測試欄位、下地址欄位三部分構成。

6.靜態微程式設計和動態微程式設計

   通常指令系統是固定的,對應每一條機器指令的微程式是計算機設計者實現編好的,因此一般微程式無需改變,這種微程式設計技術即成為靜態微程式設計,其控制儲存器採用ROM。
   如果採用EPROM作為控制儲存器,人們可以通過改變微指令和微程式來改變機器的指令系統,這種微程式設計技術稱為動態微程式設計。動態微程式設計由於可以根據需要改變微指令和微程式,因此可以在一臺機器上實現不同型別的指令系統,有利於模擬。

7.毫微程式設計

   微程式可看作是解釋機器指令的,毫微程式可看作是解釋微程式的,而組成毫微程式設計的優點是用少量的控制儲存器空間來達到高度的並行。
   毫微程式設計採用兩級微程式的設計方法。第一級微程式為垂直型微指令,並行功能不強,但有嚴格的順序結構,由它確定後續微指令的地址,當需要時可呼叫第二級。第二級微程式為水平型微指令,具有很強的並行操作能力,但不包含後續微指令的地址。第二級微程式執行完畢後又返回到第一級微程式。兩級微程式分別放在兩級控制儲存器內。

在這裡插入圖片描述

   CMAR1CMAR_1為第一級控存地址暫存器,CMDR1CMDR_1存放從第一級控制儲存器中讀出的微指令,如果該微指令只產生一些簡單的控制訊號,則可以通過譯碼,直接形成微操作命令,不必呼叫第二級。如果需呼叫第二級控制儲存器時,則將毫微程式的地址送至CMAR2CMAR_2,然後由第二級控制儲存器中讀出的微指令去直接控制硬體。垂直型微指令不是和水平型微指令一條一條地對應,而是由水平型微指令(稱為毫微指令)組成的毫微程式去執行垂直型微指令的操作。
  二級控制儲存器雖然能減少控制儲存器的容量,但因有時一條微指令要訪問兩次控制儲存器,影響了速度。

8.序列微程式控制和並行微程式控制

  完成一條微指令也分兩個階段:取微指令和執行微指令。由於取微指令和執行微指令的操作是在兩個完全不同的部件中完成的,因此可將這兩部分操作秉性進行,以縮短微指令週期,這就是並行微程式控制。
  當採用並行微程式控制時,為了不影響本條微指令的正確執行,需增加一個微指令暫存器來暫存下一條微指令。由於執行本條微指令與取下一條微指令是同時進行的,因此當遇到需要根據本條微指令的處理結果來決定下條微指令的地址時,就不能並行操作,此時可延遲一個微指令週期再取微指令。

9.微程式設計舉例

執行階段的微操作及節拍安排

  微程式設計控制單元的主要任務是編寫對應各條機器指令的微程式,具體步驟是首先寫出對應機器指令的全部微操作及節拍安排,然後確定微指令格式,最後編寫出每條微指令的二進位制程式碼(稱為微指令碼點)。

  在取指微程式中,每一條微指令都需要增加一個將微指令下地址欄位送至CMAR的微操作,記作Ad(CMDR)CMARAd(CMDR) \rightarrow CMAR,而這一操作只能由下一個時鐘週期T的上升沿將地址打入到CMAR內。至於取指微程式的最後一條微指令,其後續微指令的地址是由微地址形成部件形成的,而且也只能由下一個T的上升沿將該地址打入到CMAR中,即微地址形成部件CAMR\rightarrow CAMR。為了反映該地址與操作碼有關,故記作OP(IR)OP(IR) \rightarrow微地址形成部件CMAR\rightarrow CMAR

  微操作指令共20個,微指令共38條。CLA、COM、SHR、CSL、STP為非訪存指令,ADD、STA、LDA為訪存指令,JMP、BAN為轉移類指令。

確定微指令格式

  微指令的格式包括微指令的編碼方式、後續微指令的地址形成方式、微指令字長等3個方面。
  (1)微指令的編碼方式:可採用直接編碼方式,由微指令控制欄位的某一位直接控制一個微操作。
  (2)後續微指令的地址形成方式:可採用由指令的操作碼和微指令的下地址欄位兩種方式形成後續微指令的地址。
  (3)微指令字長:微指令字長至少取26位。
  如果將CMDR的下地址欄位Ad(CMDR)直接接到控制儲存器的地址線上,並由下一個時鐘週期的上升沿將該地址單元的內容(微指令)讀到CMDR中,便能做到在一個時鐘週期內讀出並執行一條微指令。同理,也可將指令暫存器的操作碼欄位OP(IR)經微地址形成部件形成的後續微指令的地址,直接送到控制儲存器的地址線上。這兩路地址可通過一個多路選擇器,根據需要任選一路。
  這樣,10條機器指令共對應20-2=18個微操作和38-19=19條微指令。為了便於擴充,操作控制欄位取24位,下地址欄位取6位。

  在確定微指令格式機器字長的過程中,還可將一些微操作命令合用一位程式碼來控制,這樣可大大壓縮微指令的操作控制欄位,縮短微指令字長。