第六章 Processor Unit
Instruction Cycle Fetch Phase Execution phase IR [[PC]] PC [PC] + 4 Execution phase
記憶體 控制 處理器 N個通用暫存器 圖1.2 處理器與記憶體之間的交互連接 MAR MDR 控制 PC R R 處理器 1 IR ALU R n - 1 N個通用暫存器 圖1.2 處理器與記憶體之間的交互連接 Figure 1.2. Connections between the processor and the memory.
CPU Processor (CPU): the active part of the computer, which does all the work (data manipulation and decision-making) Datapath: portion of the processor which contains hardware necessary to perform all operations required by the computer (the brawn) Control: portion of the processor (also in hardware) which tells the datapath what needs to be done (the brain) The control unit tells the datapath what to do every clock cycle during the execution of instructions
Single bus Datapath 圖 7.1 處理器內部資料路徑的單一匯流排組織 Control unit 內部處理器匯流排 控制訊號 PC 指令解碼器 與控制邏輯 位址線 MAR 記憶體 匯流排 MDR Data lines IR Y 常數 4 R0 選擇 MUX Add A B ALU Sub R ( n - 1 ) 控制線 ALU Carry-in XOR TEMP Z 圖 7.1 處理器內部資料路徑的單一匯流排組織
Transferring between registers Two control signals Riin , Riout control the switch to bus Riin = 1 means data loaded from bus to register Ri Riout = 1 menas data put from register Ri to bus When Riout = 0 bus can pass data to other registers For example, if we want copy R1 to R4 then the signal sequence in the datapath will be: R1out = 1, will activate the output of R1 and the content of R1 will be put on bus R4in = 1, will activate the input of R4 and data on bus will enter R4
圖 7.2 圖 7.1 中的暫存器之輸入與輸出閘 內部處理器匯流排 R i R i R i Y Y 常數 4 選擇 MUX A B ALU in R i R i out Y in Y 常數 4 選擇 MUX A B ALU Z in Z Z out 圖 7.2 圖 7.1 中的暫存器之輸入與輸出閘
ALU operation Add R1,R2,R3 1. R1out 、Yin (1 clock, 2 micro-operations) 2. R2out 、SelectY、Add、Zin (1 clock, 4 micro-operations) 3. Zout 、 R3in (1 clock, 2 micro-operations)
Read data from memory 圖 7.4 針對暫存器 MDR 的連接與控制訊號 記憶體匯流排 資料線 內部處理器匯流排 MDR outE out MDR MDR MDR inE in 圖 7.4 針對暫存器 MDR 的連接與控制訊號
Micro-operations for read operation Move (R1), R2 1. MAR [R1] 2. 啟動記憶體匯流排的讀取運算 3. 等候從記憶體的控制訊號MFC的回應 4. 從啟動記憶體匯流排載入到MDR 5. R2 [MDR] Needs 5 cpu clocks
Some micro-operations can be operated concurrently 1. R1out 、MARin 、Read 2. MDRinE 、 WMFC 3. MDRout 、 R2in Needs 3 cpu clocks
新的記憶體位址放到address lines Step 1 2 3 Clock MAR in Address Read 同時 MR MDR inE Data MFC MDR out 圖 7.5 記憶體 Read 作業的時序圖
Micro-operations for write operation Move R2, (R1) 1. R1out 、 MARin 2. R2out 、MDRin 、Write 3. MDRoutE 、 WMFC
ALU operations Add (R3), R1 提取該指令 提取第一個運算元(由暫存器R3所指的記憶體內容) 執行加法運算
Facilitate Branch EA calculation 步驟 動作 1 PCout、MARin、Read、Select4、Add、Zin 2 Zout、PCin、Yin、WMFC 3 MDRout、IRin 4 R3out、MARin、Read 5 R1out、Yin、WMFC 6 MDRout、SelectY、Add、Zin 7 Zout、R1in、End B會看到,注意B沒有 latch 圖 7.6 針對指令 Add (R3),R1 的執行之控制序列
Unconditional Branch operations 步驟 動作 1 PCout、MAR、Read、Select4、Add、Zin 2 Zout、PCin、Yin、WMFC 3 MDRout、IRin 4 IRout 的偏移量欄位、Add、Zin 5 Z、PCin、End 圖 7.7 無條件式Branch指令之控制序列
多重匯流排組織 圖 7.8 資料路徑的三條匯流排組織 匯流排 A 匯流排 B 匯流排 C 遞增器 PC 暫存器檔 常數 4 MUX A ALU R B 指令解碼器 IR MDR MAR 記憶體匯流排 資料線 位址線 圖 7.8 資料路徑的三條匯流排組織
多重匯流排組織下的指令執行 Add R4,R5,R6 (R6 R4+R5) 步驟 動作 1 PCout、R=B、MARin、Read、IncPC 2 WMFC 3 MDRout B、R=B、IRin 4 R4out A、R5out B、SelectA、Add、R6in、End 圖 7.9 針對圖 7.8 中的三條匯流排組織之指令 Add R4,R5,R6 的控制序列
Control Unit 實作方式 Hardwired Control Micro-programmed Control
Hardwired Control Implementation CLK 控制步驟 計數器 時序 外部輸入 IR 解碼器/編碼器 條件碼 控制訊號 圖 7.10 控制單元組織
圖 7.11 分開解碼與編碼功能 CLK 時序 控制步驟 計數器 Reset Step decoder T T T INS INS 外部輸入 2 n INS 1 INS 外部輸入 2 IR 指令解碼器 解碼器 條件碼 INS m Run End 控制訊號 圖 7.11 分開解碼與編碼功能
步驟 動作 1 PCout、MARin、Read、Select4、Add、Zin 2 Zout、PCin、Yin、WMFC 3 MDRout、IRin 4 R3out、MARin、Read 5 R1out、Yin、WMFC 6 MDRout、SelectY、Add、Zin 7 Zout、R1in、End 步驟 動作 1 PCout、MARin、Read、Select4、Add、Zin 2 Zout、PCin、Yin、WMFC 3 MDRout、IRin 4 IRout 的偏移量欄位、Add、Zin 5 Zout、PCin、End Zin在 1st clock, 6th clock, 4th clock中出現 Zin = T1 + T6 ‧ADD + T4 ‧ BR + … Or 第一個time slot(1st clock) And
分支 加 T T 4 6 T 1 圖 7.12 圖 7.1 中處理器之 Zin 控制訊號的產生
指令單元 整數單元 浮點數單元 指令快取 資料快取 匯流排介面 處理器 系統匯流排 主記憶體 輸入/輸出 圖 7.14 完整處理器的區塊圖
Micro-programmed Control Control Word (CW) A word of bit string (eg 50 bits ~ 80 bits) Every bit represents control signal Micro-routine A serial of CWs Micro-instruction A single CW Micro-operation Every signal represented by 1 bit in CW Control store Store micro-routines
Machine Instruction vs micro-instruction One machine instruction mapping to one micro-routine One micro-routine consists of many control words One control word consists of many micro-operations One clock executes one CW, that is, those micro-operations within CW executing at the same clock
一個微常式 微運算 Yin 在clock 2, clock 5被設定為1 圖 7.15 圖 7.6 的微指令範例 7個微指令 微指令 MAR out 微指令 in out MAR Read MDR Select in Add out in out WMFC PC PC IR Y in Z in out R1 R1 R3 End Z CW(微指令) 1 1 1 1 1 1 1 2 1 1 1 1 3 1 1 4 1 1 1 5 1 1 1 6 1 1 1 7 1 1 1 Yin 在clock 2, clock 5被設定為1 圖 7.15 圖 7.6 的微指令範例 7個微指令
起始位址 產生器 IR 時脈 m P C 控制 記憶體 CW 圖 7.16 微程式控制單元的基本組織
位址 微指令 PCout、MARin、Read、Select4、Add、Zin 1 Zout、PCin、Yin、WMFC 2 MDRout、IRin 3 跳到適當微常式的起始位址 …………………………………………………………………... 25 若 N=0,則跳到微指令 0 26 IRout 的偏移量欄位、SelectY、Add、Zin 5 Zout、PCin、End 圖 7.17 針對指令 Branch < 0 的微常式
圖 7.18 讓微程式能夠執行條件式分支的控制單元組織 外部輸入 起始與分支 位址產生器 IR 條件碼 時序 m P C 控制 記憶體 CW 圖 7.18 讓微程式能夠執行條件式分支的控制單元組織
Micro-instruction design Horizontal microinstruction (horizontal organization) 每一位元對應一個微運算 可使多個微運算同時執行,提昇硬體的使用度,但實際的應用中,有些位元會被浪費掉 因為指令寬度長,因此成本高 執行速度快為期優點 Vertical microinstruction (vertical organization) 採數個位元為一組(互斥的訊號分為同一組),經過1至2的解碼後,藉以引發更多個微運算 利用較少的位元藉由適當的解碼而得到較多的微運算 指令寬度較短,因此成本降低 執行速度較慢
Horizontal microinstruction out 微指令 in out MAR Read Select WMFC PC PC MDR in in Add out in out IR Y Z in out R1 R1 R3 End Z 1 1 1 1 1 1 1 2 1 1 1 1 3 1 1 4 1 1 1 5 1 1 1 6 1 1 1 7 1 1 1
Vertical microinstruction 微指令 F1 F2 F3 F4 F5 F1 (4 個位元) F2 (3個位元) F3 (3個位元) F4 (4個位元) F5 (2個位元) 0000: 不傳送 000:不傳送 000:不傳送 0000: 加 00:不動作 0001: PC 001: PC 001: MAR 0001: 減 01: 讀取 out in in 0010: MDR 010: IR 010: MDR 10: 寫出 out in in 0011: Z 011: Z 011: TEMP out in in 0100: R0 100: R0 100: Y 1111: XOR out in in 0101: R1 101: R1 out in 0110: R2 110: R2 16 個 ALU 函式 out in 0111: R3 111: R3 out in 1010: TEMP out 1011: Offset out F6 F7 F8 只須19 bits來表示42 signals,若用水平組織則須42 bits F6 (1個位元) F7 (1個位元) F8 (1個位元) 0: SelectY 0:不動作 0: 繼續 1: Select4 1: WMFC 1: 結束 圖 7.19 採用欄位編碼的微指令之部分格式範例
圖 7.20 指令 Add src,Rdst 的微程式流程圖 _ _ Bit-ORing 圖 7.20 指令 Add src,Rdst 的微程式流程圖 _ _
帶有下一個位址欄位的微指令 為了使讓多個machine instrcutions能共用微指令,因此在微常式中會有許多分支微指令以跳到所需的微指令 這些分支微指令(branch micro-instructions)(見圖7-20)在datapath中執行無用的作業,其目的只是為了決定下一個微指令的位址。因此會降低計算機的作業速度,因此有包含下一個位址欄位的微指令的發明
取代μPC 圖 7.22 帶有下一個微指令位址的設計 IR 外部輸入 條件碼 解碼電路 m A R 控制記憶體 下一個位址 m I R 微指令解碼器 控制訊號 圖 7.22 帶有下一個微指令位址的設計
圖 7.23 在 7.5.3 節的範例中微指令的格式 微指令 F0 F1 F2 F3 F0 (8 個位元) F1 (3 個位元) 下一個微指令 位址 000: 不傳送 000: 不傳送 000: 不傳送 001: PC out 001: PC in 001: MAR in 010: MDR 010: IR 010: MDR out in in 011: Z 011: Z 011: TEMP out in in 100: Rsrc out 100: Rsrc in 100: Y in 101: Rdst out 101: Rdst in 110: TEMP out F4 F5 F6 F7 F4 (4 個位元) F5 (2 個位元) F6 (1 個位元) F7 (1 個位元) 0000: Add 00: 不動作 0: SelectY 0: 不動作 0001: Sub 01: Read 1: Select4 1: WMFC 10: Write 1111: XOR F8 F9 F10 F8 (1 個位元) F9 (1 個位元) F10 (1 個位元) 0: NextAdrs 0: 不動作 0: 不動作 1: InstDec 1: OR 1: OR mode indsrc 圖 7.23 在 7.5.3 節的範例中微指令的格式
圖 7.24 使用下一個微指令位址欄位來實作圖 7.21 的微常式。 (請參見圖 7.23 所示之編碼過的訊號。) 八進制 位址 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 3 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 7 2 1 1 1 1 1 1 1 1 1 1 1 7 3 1 1 1 1 圖 7.24 使用下一個微指令位址欄位來實作圖 7.21 的微常式。 (請參見圖 7.23 所示之編碼過的訊號。)
圖 7.25 控制訊號產生電路的一些細節 R15 R15 R0 R0 解碼器 解碼器 IR Rsrc Rdst InstDec 外部輸入 out in out 解碼器 解碼器 IR Rsrc Rdst InstDec out 外部輸入 OR 解碼電路 mode 條件碼 OR indsrc m A R 控制記憶體 下一個位址 F1 F2 F8 F9 F10 Rdst out Rdst in 微指令解碼器 Rsrc out Rsrc in 其他控制訊號 圖 7.25 控制訊號產生電路的一些細節