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