Grundzüge der Informatik II - Technische Universität Darmstadt
Transcription
Grundzüge der Informatik II - Technische Universität Darmstadt
Kapitel 8 (3. Teil MIPS): Steuerwerk für die Eintakt-Implementierung (Kurzform) Technische Grundlagen der Informatik 2 SS 2009 R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt 1. Entwurf Steuerwerk für die Eintakt-Implementierung 2. A. Erzeugung der Steuersignale (Control) B. Entwurf ALU Control Logic (Hilfslogik) C. Branch Control Logic (Hilfslogik) Ausführung von R-Format Load/Store Verzweigung beq Jump, Erweiterung der Hardware 3. Zeitverhalten 4. Zusammenfassung 5. Anhang: ALU Control Logic in Verilog Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Inhalt 8–2 Erzeugen von Steuersignalen (Art und Reihenfolge der Mikooperationen) allgemein abhängig von Befehl Berechnungsergebnissen Status der Maschine Control State Für die Eintakt-Implementierung besteht das STW nur aus einem Umcodierungsschaltnetz (keine FSM): Opcode Steuersignale Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 1. Aufgabe des Steuerwerks 8–3 „Single Cycle“-Operationswerk (Wdh.) PCSrc M u x Add Add ALU result 4 Shift left 2 Registers PC Read address Instruction Instruction memory Read register 1 Read Read data 1 register 2 Write register Write data RegWrite 16 ALUSrc Read data 2 Sign extend M u x 3 ALU operation Zero ALU ALU result MemWrite MemtoReg Address Read data Data memory Write data 32 MemRead Es fehlt noch das Steuerwerk (Control Unit), es wird jetzt schrittweise entwickelt M u x Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–4 Operationswerk mit Steuersignalen PCSrc Add ALU Add result 4 RegWrite Instruction [25– 21] PC Read address Instruction [31– 0] BefehlsInstruction speicher memory Instruction [20– 16] 0 M u Instruction [15– 11] x 1 RegDst Instruction [15– 0] Read register 1 Read register 2 Read data 1 Read Write data 2 register RegisterWrite Registers data werk 16 Sign 32 extend 32 Bit Befehl Shift left 2 MemWrite ALUSrc 0 M u x 1 ALU control Instruction [5– 0] Steuersignale ALU Control Logic 0 M u x 1 ALUOp Zero ALU ALU ALU result MemtoReg Address Read data Datenspeicher Write Data data memory MemRead 1 M u x 0 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–5 CONTROL ALU Add result Add 4 Instruction [31 26] PC Instruction memory Instruction [15 11] Instruction [15 0] ANDGatter für PCSrc PCSrc Branch Control Read register 1 Instruction [20 16] Instruction [31– 0] Shift left 2 RegDst Branch MemRead MemtoReg Control ALUOp MemWrite ALUSrc RegWrite Instruction [25 21] Read address 0 M u x 1 0 M u x 1 Read data 1 Read register 2 Registers Read Write data 2 register 0 M u x 1 Write data 16 Sign extend Zero ALU ALU result 32 ALU control Instruction [5 0] ALU Control Address Write data Read data Data memory 1 M u x 0 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Operationswerk mit Steuerwerk und -leitungen 8–6 A. Erzeugung der Steuersignale (Control) Befe hl Format op lw I 10 0011 sw I beq funct ALUSr c Memt oReg xx xxxx 1 1 10 1011 xx xxxx 1 I 00 0100 xx xxxx add R 00 0000 10 0000 1 1 10 sub R 00 0000 10 0010 1 1 10 and R 00 0000 10 0100 1 1 10 or R 00 0000 10 0101 1 1 10 slt R 00 0000 10 1010 1 1 10 F5 .. F0 RegDst Reg Mem Mem Write Read Write 1 1 ALUop Branch 00 1 00 01 1 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–7 Erzeugung der Steuersignale (Control) Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Umcodierung des OPC in die Steuersignale Inputs OPC Op5 Op4 Op3 Op2 Op1 Op0 R-format Iw sw beq RegDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOp1 ALUOpO 8–8 Steuersignale 8–9 B. Entwurf der ALU Control Logic Inputs Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD OPC Op5 Op4 Op3 Op2 Op1 Op0 R-format Iw sw beq RegDst Steuersignale ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOp1 ALUOpO funct Gesucht ALU Control Logic 6 Hilfssignale ALU Entwurf der ALU Control Logic OPC Umcodierung 6 2 Befehl ALUOp funct 6 ALU Control Logic ? 3 ALU control input y (ALU operation) Zero ALU ALU result Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–10 8–11 Vollständige 32-Bit ALU (Wdh.) Operation ALU-Steuersignale a0 b0 CarryIn ALU0 Less CarryOut Result0 a1 b1 0 CarryIn ALU1 Less CarryOut Result1 a2 b2 0 CarryIn ALU2 Less CarryOut Result2 a31 b31 0 CarryIn ALU31 Less 000 001 010 110 111 Zero Result31 Set Overflow = = = = = and or add subtract slt Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Bnegate ALU-Steuersignale Befehl Format op def. Hilfssignale ALUop funct ALU F5 .. F0 ALU operation control input y lw I 10 0011 00 xx xxxx + 010 sw I 10 1011 00 xx xxxx + 010 beq I 00 0100 01 xx xxxx - 110 add R 00 0000 10 10 0000 + 010 sub R 00 0000 10 10 0010 - 110 and R 00 0000 10 10 0100 & 000 or R 00 0000 10 10 0101 | 001 slt R 00 0000 10 10 1010 (-) 111 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–12 ALU Control Logic: Minimierung def. Hilfssignale funct ALU F5 .. F0 control input 00 xx xxxx 010 00 xx xxxx 010 01 xx xxxx 110 10 10 0000 010 10 10 0010 110 10 10 0100 000 10 10 0101 001 ALUop 10 10 1010 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–13 ALUOp ALU control block ALUOp0 ALUOp1 111 F3 F2 F (5– 0) Operation2 Operation1 y F1 Operation0 F0 Operation (Bei bedingtem Sprung) PCSrc ist das einzige Steuersignal das nicht nur vom Befehl abhängt, sondern auch vom Ergebnis einer Berechnung (Zero-Ausgang der ersten ALU)! Es bestimmt, ob die Folgeadresse PC+4 oder die Sprungadresse benutzt wird. 8–14 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD C. Branch Control Logic Laden der neuen Befehlsadresse Branch Control Logic ALU Add result Add 4 Instruction [31 26] PC Instruction memory Instruction [15 11] Instruction [15 0] ANDGatter für PCSrc PCSrc Read register 1 Instruction [20 16] Instruction [31– 0] Shift left 2 RegDst Branch MemRead MemtoReg Control ALUOp MemWrite ALUSrc RegWrite Instruction [25 21] Read address 0 M u x 1 0 M u x 1 Read data 1 Read register 2 Registers Read Write data 2 register 0 M u x 1 Write data 16 Instruction [5 0] Sign extend Zero ALU ALU result Address Write data Read data Data memory 1 M u x 0 32 ALU control R-Format Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–15 Ergebnis: Operationswerk mit Steuerwerk ALU Add result Add 4 Instruction [31 26] PC Instruction memory Instruction [15 11] Instruction [15 0] PCSrc Read register 1 Instruction [20 16] Instruction [31– 0] Shift left 2 RegDst Branch MemRead MemtoReg Control ALUOp MemWrite ALUSrc RegWrite Instruction [25 21] Read address 0 M u x 1 0 M u x 1 Read data 1 Read register 2 Registers Read Write data 2 register 0 M u x 1 Write data 16 Sign extend Zero ALU ALU result 32 ALU control Instruction [5 0] R-Format Address Write data Read data Data memory 1 M u x 0 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–16 z. B. add $t1, $t2, $t3 1. Befehl holen, PC+4 2. Decodieren und Register $t2 und $t3 lesen 3. ALU-Operation 4. Ergebnis in das Register $t1 schreiben ACHTUNG! Wir haben es hier mit einer Eintakt-Steuerung zu tun, d. h. ein Befehl wird vollständig in einem Taktzyklus ausgeführt. Korrektes Timing wird einzig durch den Datenfluss im Operationswerk garantiert, der grob von linke nach rechts (gem. Abb. 8-16) erfolgt. Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 3. Ausführung R-Format 8–17 z. B. lw $t1, offset($t2) 1. Befehl holen, PC+4 2. $t2 lesen 3. Berechnung der effektiven Adresse: $t2 + offset 4. Adressierung des Datenspeichers, lesen 5. Daten aus dem Speicher $t1 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Ausführung Load/Store 8–18 beq $t1, $t2, Label 1. Befehl holen, PCnext0=PC+4 2. $t1 und $t2 lesen 3. Subtraktion 4. (Sprungzieladresse berechnen) PCnext1:=(PC+4)+shl2(signext(Label)) 5. Der Wert der Zero-Leitung aus der ALU entscheidet, ob PCnext0 oder PCnext1 benutzt wird Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Ausführung Verzweigung 8–19 „Jump“-Befehl (opcode = 2) Sprungziel = höchstwertigen 4 Bits von (PC+4) konkateniert mit (L shift left 2) Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Ausführung Jump, Format J 8–20 zusätzliches Steuersignal Generierung des Sprungziels Instruction [25– 0] Shift 26 left 2 28 Jump address [31– 0] 0 M u x 1 PC+4 [31– 28] ALU Add result Add 4 Instruction [31– 26] PC Instruction memory Read register 1 Instruction [20– 16] Instruction [31– 0] Instruction [15– 11] Instruction [15– 0] Shift left 2 RegDst Jump Branch MemRead Control MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25– 21] Read address 1 M u x 0 0 M u x 1 Read data 1 Read register 2 Registers Read Write data 2 register 0 M u x 1 Write data 16 Instruction [5– 0] Sign extend 32 ALU control Zero ALU ALU result Address Write data Read data Data memory 1 M u x 0 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Erweiterung für J-Format Zusätzlicher Multiplexer für8–21 neuen PC-Wert PC Bef. holen Register Datenspeicher Ausführungszeit wird für alle Befehle gleich gesetzt. Ausführungszeit wird durch die am längsten dauernde Operation bestimmt (insbesondere durch die von uns noch gar nicht betrachteten Gleitkomma-Befehle). Taktzykluszeit wird durch den kritischen Pfad (maximale Gesamtverzögerungszeit durch die Komponenten) bestimmt Hardware-Einheiten müssen möglicherweise mehrfach vorhanden sein, da jede Einheit in einem Taktzyklus nur einmal verwendet werden kann. Eintakt-Implementierung ist ineffizient! Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 3. Zeitverhalten der Eintakt-Implementierung 8–22 Der Kritische Pfad bestimmt die kleinste mögliche Dauer des Taktes. Betrachte alle Wege Bestimme den längsten Weg. Der neue Wert am Ausgang eines Registers ist nach der positiven Flanke nach der Zeit tcto = tclocktoOutput stabil. Dazu kommt ggf. noch eine Lesezeit tregread , die durch die Leselogik (z. B. Multiplexer) bestimmt wird. Am Eingang vor einem Register muss der neue Wert mindestens vor der Set-Up-Zeit tsetup stabil sein. Die Zeit zum Lesen aus dem Datenspeicher bezeichnen wir mit treaddata. Die Set-Up-Zeit zum Schreiben in den Datenspeicher bezeichnen wir mit twritedata Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–23 betrachte alle relevanten Schaltnetze Befehlszähler pc, Registersatz REGS und der Datenspeicher DataMem sind jeweils zweimal gezeichnet, aber nur einmal vorhanden. Alle Schaltnetze (Programmspeicher Pmem, Recheneinheiten plus4, ALU, Multiplexer mux) besitzen Verzögerungszeiten. Shift und Konkatenation sind nur Verdrahtungen und sollen keine (signifikante) Verzögerung verursachen. Bemerkung: Für den Registerspeicher und Datenspeicher müssen Schreibsignale (MemWrite, RegWrite) erzeugt werden. Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Graph zur Ermittlung der kritischen Pfade 8–24 8–25 Eintakt-Implementierung (zum Vergleich) Instruction [25– 0] Shift 26 left 2 28 PC+4 [31– 28] Add 4 Instruction [31– 26] PC Instruction [15– 11] Instruction [15– 0] Load 1 M u x 0 Shift left 2 Read register 1 0 M u x 1 Read data 1 Read register 2 Registers Read Write data 2 register 0 M u x 1 Write data 16 Instruction [5– 0] R 0 M u x 1 ALU Add result RegDst Jump Branch MemRead Control MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [20– 16] Instruction [31– 0] Instruction memory Jump Instruction [25– 21] Read address Jump address [31– 0] Sign extend 32 ALU control Zero ALU ALU result Address Write data Read data Data memory 1 M u x 0 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD relativer Sprung(Verzweigung) Kritischen Pfad für den Jump-Befehl Konkatenation (tK=0) plus 4 pc tcto tsetup pc mux5 tclocktooutput Pmem Control Befehl-Lesezeit Bei einem Jump-Befehl sind die Wege durch den speziellen Graphen gegeben. T = tcto + max(tplus4, tPmem, tPmem + tControl) + tmux5 + tsetup T = tcto + max(tplus4, tPmem + tcontrol ) + tmux5 + tsetup für tcto=2 ns, tsetup=1 ns, tplus4=4 ns, tPmem=5 ns, tmux=2 ns, tControl=3 ns ergibt sich T = 2 + max(4, 5 + 3) + 2 + 1 = 13 ns 1/T = 76,9 MHz Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–26 Graph, der alle Verzögerungszeiten der Eintakt-Implementierung enthält 8–27 add mux4 tsetup pc mux5 tcto pc and clock Control clock RegWrite AluControl regread1 ALU mux2 REGS mux 1 MemRead mux3 regwrite regread2 REGS MemWrite clock clock DataMem clock readdata writedata DataMem clock Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD plus 4 Die folgende Folie zeigt für den Befehl Load die aktiven Speicherelemente und Schaltnetze. Beispiel tcto, tsetup, tregread, tregwrite, tmux, tcontrol, tAluControl, tand =1 tPmem=6, treaddata=6, tALU=5, tplus4=2 Ermittlung des Kritischen Pfades durch Addition der Verzögerungszeiten und Markierung an den Kanten. T = 22 Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Kritischer Pfad für Load 8–28 Kritischer Pfad für Load plus 4 tsetup mux5 pc mux4 pc tcto (+1) and (+6) 1 7 (+1) Control 8 (+1) RegWrite AluControl 9 regread1 mux 1 (+5) ALU mux2 REGS mux3 regread2 (+1) 14 DataMem readdata (+6) 20 regwrite 21 (+1) 22 REGS Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD 8–29 Der Kritische Pfad hängt ab von dem Befehlstyp kann sogar von den Daten abhängen (z. B. von der Zero-Bedingung bei dem Befehl beq) ist insgesamt bei der Eintakt-Implementierung sehr lang Möglichkeiten zur Reduzierung der kritischen Pfadlänge Mehrtakt-Implementierung (wie bei Dinatos) Pipelining Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Ergebnis 8–30 Bei der Eintakt-Implementierung besteht das Steuerwerk nur aus einem Steuer-Schaltnetz Steuersignale ALU-Steuersignale zum Lesen und Schreiben der Register und des Datenspeichers für die Multiplexer PCnext = Inputsignale: Befehl und ALU-Output-Condition (Zero) PC + 4 PC + relativeSprungadresse (if beq and cond true) absoluteSprungadresse (bei Jump) Kritische Pfad Summe der Verzögerungszeiten für den längsten Weg abhängig vom Befehlstyp Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Zusammenfassung 8–31 Umsetzung in Schaltung ALU-Steuersignale Anhang: ALU ControlfürLogic in Verilog 8–32 ALUOp ALUOp0 ALUOp1 F3 F2 F (5– 0) Operation2 Operation1 Operation F1 Operation0 F0 module alu_control(F, ALUOp, Operation); input [5:0] F; // kommt direkt aus dem Befehl input [1:0] ALUOp; // kommt vom OPC-Decoder output [2:0] Operation; // ALU control input - ALU-Operation wire x = F[0] | F[3]; wire y = F[1] & ALUOp[1]; assign Operation[0] = x & ALUOp[1]; assign Operation[1] = ~ALUOp[1] | ~F[2]; assign Operation[2] = ALUOp[0] | y; endmodule Technische Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD ALU control block