9.1 微操作命令的分析
9.1.1 取指周期
取指令的過程可歸納為以下幾個操作:
- 現行指令地址送至記憶體地址寄存器
- 向主記憶體發送讀命令
- 將MAR(透過地址總線)所指的主記憶體單元中的內容(指令)經數據總線讀至MDR內
- 將MDR的內容送至IR
- 指令的操作碼送至CU譯碼
- 形成下一條指令的地址
9.1.2 間址周期
間址周期完成取運算元有效地址的任務。
- 將指令的地址碼部份(形式地址)送至記憶體地址寄存器
- 向主記憶體發送讀命令,啟動主記憶體作讀操作
- 將MAR(透過地址總線)所指的主記憶體單元中的內容(有效地址)經數據總線讀至MDR內
- 將有效地址送至指令寄存器的 地址欄位
9.1.3 執行周期
非訪存指令
這類指令在執行周期不存取記憶體。
例:清空ACC
- 清除累加器指令CLA
- 累加器取反指令COM
- 算術右移一位指令SHR
- 迴圈左移一位指令CSL
- 停機指令STP:執行標誌觸發器G,當G=1時,表示機器執行;當G=0時,表示停機。STP指令在執行階段只需將執行標誌觸發器置「0」
訪存指令
這類指令在執行階段都需要存取記憶體。
1. 加法指令ADD X
該指令在執行階段需要完成累加器內容與對應與主記憶體X地址單元的內容相加,結果送累加器的操作。
- 將指令的 地址碼 部份送至MAR
- 向主記憶體發讀命令,啟動主記憶體作讀操作
- 將MAR(透過地址總線)所指的主記憶體單元中的內容(運算元)經數據總線讀至MDR內
- 給ALU發送加命令,將ACC的內容和MDR的內容相加,結果存於ACC
2. 存數指令STA X
該指令在執行階段需將累加器ACC的內容存於主記憶體的X地址單元中。
- 將指令的地址碼部份送至MAR
- 向主記憶體發寫命令,啟動主記憶體作寫操作
- 將累加器內容送至MDR
- 將MDR的內容(透過數據總線)寫入到MAR(透過地址總線)所指的主記憶體單元中
3. 取數指令LDA X
該指令在執行階段需將主記憶體X地址單元的內容存至累加器ACC中。
- 將指令的 地址碼 部份送至MAR
- 向主記憶體發讀命令,啟動主記憶體作讀操作
- 將MAR的內容(透過地址總線)所指的主記憶體單元中的內容經數據總線讀至MDR內
- 將MDR的內容送至ACC
轉移類指令
1. 無條件轉移指令JMP X
該指令在執行階段完成將指令的地址碼部份X送至PC的操作
2. 條件轉移指令BAN X
該指令根據上一條指令執行的結果決定下一條指令的地址,若結果為負(累加器最高位為1),則指令的地址碼送至PC,否則程式按原順序執行。
9.1.4 中斷周期
在執行周期結束時刻,CPU要查詢是否有請求中斷的時事件發生,如果有則進入中斷周期。假設程式斷點存至主記憶體的0地址單元,且采用 硬件向量法 尋找入口地址,則在中斷周期需完成如下操作。
- 將特定地址「0」送至記憶體地址寄存器
- 向主記憶體發寫命令,啟動記憶體作寫操作
- 將PC的內容(程式斷點)送至MDR
- 將MDR的內容(程式斷點)透過數據總線寫入到MAR(透過地址總線)所指示的主記憶體單元(0地址單元)中
- 將向量地址形成部件的輸出送至PC,為下一條指令的取指周期做準備。
- 關中斷,將允許中斷觸發器清零(該操作可直接由硬件路線完成)。
如果程式斷點存入堆疊,而且進棧操作是先修改指標,後儲存數據。
9.2 控制單元的功能
9.2.1 控制單元的外特性
輸入訊號
1. 時鐘
為了控制單元按一定的 先後順序 、一定的節奏發出各個控制訊號,控制單元必須受時鐘控制,即每一個時鐘脈沖使控制單元發送一個操作命令,或發送一組需要同時執行的操作命令。
2. 指令寄存器
現行指令的操作碼決定了不同指令在執行周期所需完成的不同操作,故指令的操作碼欄位是控制單元的輸入訊號,它與時鐘配合可產生不同的控制訊號。
3. 標誌
控制單元有時需依賴CPU當前所處的狀態(如ALU操作的結果)產生控制訊號,因此「標誌」也是控制單元的輸入訊號。
4. 來自系統總線(控制總線)的控制訊號
例如中斷請求、DMA請求。
輸出訊號
1. CPU內的控制訊號
主要用於CPU內的寄存器之間的傳送和控制ALU實作不同的操作。
2. 送至系統總線的訊號
例如,命令主記憶體或I/O讀/寫、中斷響應等。
9.2.2 控制訊號舉例
不采用CPU內部總線的方式
1. 取指周期
- 控制訊號C0有效,開啟PC送往MAR的控制門
- 控制訊號C1有效,開啟MAR送往地址總線的輸出門
- 透過控制總線向主記憶體發送 讀 命令
- C2有效,開啟數據總線送至MDR的輸入門
- C3有效,開啟MDR和 IR 之間的控制門,至此指令送至 IR
- C4有效,開啟指令操作碼送至CU的輸出門。CU在操作碼和時鐘的控制下,可產生各種控制訊號
- PC內容+1
2. 間址周期
- C5有效,開啟MDR和MAR之間的控制門,將指令的形式地址送至MAR
- C1有效,開啟MAR送往地址總線的輸出門
- 透過控制總線向主記憶體放出讀命令
- C2有效,開啟數據總線送至MDR的輸入門,至此,有效地址存入MDR
- C3有效,開啟MDR和IR之間的控制門,將有效地址送至IR的地址碼欄位
3.執行周期
- C5有效,開啟MDR和MAR之間的控制門,將有效地址送至MAR
- C1有效,開啟MAR送往地址總線的輸出門
- 透過地址總線向主記憶體發出讀命令
- C2有效,開啟數據總線送至MDR的輸入門,至此,運算元存入MDR
- C6、C7同時有效,開啟AC和MDR通往ALU的控制門
- 透過CPU內部控制總線對ALU發出「ADD」加控制訊號,完成AC的內容和MDR的內容相加
- C8有效,開啟ALU通往AC的控制門,至此將求和結果存入AC
采用CPU內部總線的方式
1. 取指周期
- PCo和MARi有效,完成PC經內部總線送至MAR的操作,即PC—>MAR
- 透過控制總線向主記憶體發讀命令,即1—>R
- 記憶體透過數據總線將MAR所指單元的內容(指令)送至MDR
- MDRo和IRi有效,將MDR的內容送至IR,即MDR—>IR,至此,指令送至IR,其操作碼欄位開始控制CU
- PC的內容+1
2. 間址周期
- MDRo和MARi有效,將指令的形式地址經內部總線送至MAR,即MDR—>MAR
- 透過控制總線向主記憶體發讀命令,即1—>R
- 記憶體透過數據總線將MAR所指單元的內容(有效地址)送至MDR
- MDRo和IRi有效,將MDR的有效地址送至IR的地址碼欄位,即MDR—>Ad(IR)
3. 執行周期
- MDRo和MARi有效,將有效地址經內部總線送至MAR,即MDR—>MAR
- 透過控制總線向主記憶體發讀命令,即1—>R
- 記憶體透過數據總線將MAR所指單元的內容(運算元)送至MDR
- MDRo和Yi有效,將運算元送至Y,即MDR—>Y
- ACo和ALUi有效,同時CU向ALU發「ADD」加控制訊號,使AC的內容和Y的內容相加(Y的內容送至ALU不必透過總線),結果送寄存器Z,即(AC)+(Y)—>Z
- Zo和ACi有效,將運算結果存入AC,即Z—>AC
9.2.3 多級時序系統
機器周期
機器周期可看作是所有指令的執行過程中的一個基準時間,機器周期取決於 指令的功能 及器 件的速度。
確定機器周期時,通常要分析機器指令的執行步驟及每一步驟所需的時間。通常以存取一次記憶體的時間定為基準時間較為合理,這個基準時間就是機器周期。由於不論執行什麽指令,都需要存取記憶體取出指令, 因此在儲存字長等於指令字長的前提下,取指周期也可看作機器周期。
時鐘周期
在一個機器周期裏可完成若幹個微操作,每個微操作都需要一定的時間,可用時鐘訊號來控制產生每一個微操作命令。
時鐘訊號可由機器主振電路發出的脈沖訊號經整形後產生,時鐘訊號的頻率即為CPU主頻。用時鐘訊號控制節拍發生器,就可產生節拍。每個節拍的寬度正好對應一個時鐘周期。在每個 節拍 內機器可完成一個或幾個需同時執行的操作, 它是控制電腦操作的最小時間單位。
多級時序系統
一個 指令周期 包含若幹個 機器周期 , 一個機器周期又包含若幹個 時鐘周期 ,每個指令周期內的機器周期數可以不等,每個機器周期內的節拍數也可以不等。 機器周期 、 節拍 組成了 多級時序系統 。
一般來說,CPU的主頻越快,機器的執行速度也越快 。在機器周期所含時鐘周期數相同的前提下,兩機平均指令執行速度之比等於兩機主頻之比。
實際上機器的速度不僅與主頻有關,還與機器周期中所含的時鐘周期數以及指令周期中所含的機器周期數有關。同樣主頻的機器,由於機器周期所含時鐘周期數不同,執行速度也不同。 機器周期所含時鐘周期數少的機器,速度更快。
9.2.4 控制方式
控制單元控制一條指令執行的過程實質上是一次執行一個確定的微操作序列的過程。
通常將如何形成控制不同微操作序列所采用的時序控制方式稱為CU的控制方式。常見的控制方式有 同步控制、異步控制、聯合控制、人工控制 。
同步控制方式
任何一條指令或指令中任何一個微操作的執行都是事先確定的,並且都是受 統一基準時標的時序訊號 所控制的方式。
1. 采用定長的機器周期
不論指令所對應的微操作序列有多長,也不管微操作的簡繁,一律以最長的微操作序列和最繁的微操作作為標準,采取完全統一的、具有相同時間間隔和相同數目的節拍作為機器周期來執行各種不同的指令
2. 采用不定長的機器周期
每個機器周期內的節拍數可以不等。通常把大多數微操作安排在一個較短的機器周期內完成,而對某些復雜的微操作,采用延長機器周期或增加節拍的方法來解決。
3. 采用中央控制和局部控制結合的方法
這種方案將機器的大部份指令安排在統一的、較短的機器周期內完成,稱為 中央控制 ,而將少數操作復雜的指令中的某些操作采用局部控制方式來完成。
在設計局部控制路線時需要註意兩點:
- 使局部控制的每一個節拍T*的寬度與中央控制的節拍寬度相同
- 將局部控制節拍作為中央控制中機器節拍的延續,插入到中央控制的執行周期內,使機器以同樣的節奏工作,保證了局部控制和中央控制的同步。
異步控制方式
異步控制方式不存在基準時標訊號,沒有固定的周期節拍和嚴格的時鐘同步,采用應答方式,執行每條指令和每個操作需要多少時間就占用多少時間。結構比同步控制方式復雜。
聯合控制方式
同步控制和異步控制相結合就是聯合控制方式 。這種方式對各種不同指令的微操作實行 大部份統一、小部份區別對待 的辦法。
例如:
對取指、取數等指令可以用同步控制
對I/O器材采用異步控制
人工控制方式
人工控制是為了調機和軟件開發的需要,在機器面板或內部設定一些開關或按鍵,來達到人工控制的目的。