Les 8: Datapad & Controle
description
Transcript of Les 8: Datapad & Controle
ca8-1
Les 8: Datapad & Controle
“A man with a watch knows what time it is. A man with two watches is never sure.”
Wet van Segal.
ca8-2
Inhoud
• Sequentiële logica
• Het datapad
• Een-cyclus-per-instructiemachine
• Meer-cycli-per-instructiemachine
• Microcodering
• RISC vs. CISC
ca8-3
Sequentiële logica
Combinatorische functie
Combinatorische functie
i1
ik…
f1
fm
…
…
klok
s1
sn
ca8-4
S-R Latch (NOR)
S
RQ
Q S
R
Q
Q
A B A+B
0 0 10 1 01 0 01 1 0
ca8-5
S-R Latch
S
RQ
Q
Qt S R Qt+1
0 0 0 00 0 1 0 0 1 0 10 1 1 -1 0 0 11 0 1 0 1 1 0 11 1 1 -
ca8-6
S-R Latch (NAND)
S
RQ
Q S
R
Q
Q
A B AB
0 0 10 1 11 0 11 1 0
ca8-7
Geklokte S-R Latch
S
RQ
Q
clk
ca8-8
D-Latch
D
Q
Qclk
D Q
C Q
ca8-9
D-Latch
D
C
Q
ca8-10
Sequentiële logica
Combinatorische functie
Combinatorische functie
i1
ik…
f1
fm
…
…
klok
Q1 D1
s1
Qn Dn
sn
ca8-11
Master-Slave D-Latch(D-Flip Flop)
D Q
C Q
D Q
C Q
D Q
QFlip-flop: D
ca8-12
D-Flip-Flop
D
C
Q
setup-tijd hold tijd
ca8-13
J-K Flip-Flop
Qt J K Qt+1
0 0 0 00 0 1 0 0 1 0 10 1 1 11 0 0 11 0 1 0 1 1 0 11 1 1 0
J Q
K Q
S Q
R Q
J
K
Flip-flop: JK
ca8-14
T Flip-Flop
1
1
clk
Q
Q
T
S Q
R Q
Flip-flop: T
ca8-15
Register
D Q
Q
D Q
Q
D Q
Q
d31 d30 d0a31 a30 a0clk
w
ca8-16
Registerbestand
Reg 0
Reg 1
Reg 2
Reg n-1
…
deco
der
w
d
Din
Mul
tiple
xer
1M
ultip
lexe
r 2
Dout2
Dout1
clk
Reg 1
Reg 2
1 schrijfpoort
2 leespoorten
ca8-17
Inhoud
• Sequentiële logica
• Het datapad
• Een-cyclus-per-instructiemachine
• Meer-cycli-per-instructiemachine
• Microcodering
• RISC vs. CISC
ca8-18
Von Neumann-machineFysiek zicht
Invoer/Uitvoer
Geheugen:bau-cellen
RAM
adres
controle
data
BUS
controlecontrole
klokklok
registersregistersALU
Invoer/Uitvoer
ControleControle
klokklok
registersregisters
Geheugen
CVEadres
controle
dataALU
BUS
cachecache
ca8-19
De klok
http://smoothspan.wordpress.com/2007/09/06/a-picture-of-the-multicore-crisis/
ca8-20
VoorbeeldenMerk Type Freq (GHz)
Intel Core i7-2600K 3,4
Intel Core i7-2630QM 2,0
Intel Xeon E3-1220L 2,2
AMD Phenom II X6 1090T BE 3,2
AMD E2-3000M 1,8
AMD Atlon 64 FX-76 3,2
IBM Power7 795 Turbo Core 4,25
ARM Cortex-A15 1-1,5
ca8-21
Processor
Data-geheugen
Instructie-geheugen
Datapad
Controle-eenheid
ca8-22
Laden van een instructie
PC
geheugen
4
+
leesadres
instructie
ca8-23
ALU-instructie: RRR
Register-bestand
ra
rb
rd
Din
Alu
b.v. : add r1, r2, r3
regW
ca8-24
ALU-instructie: RRI
Register-bestand
ra
rb
rd
Din
Alu
letterlijkeoperand
b.v. : addi r1, 10, r3
regW
ca8-25
MEM-instructie
Register-bestand
ra
rb
rd
Din
add
geheugen
offset
MemW MemR
b.v. : ld r1, 10(r3)
regW
ca8-26
controletransferinstructie
ra
cmpge
PC
Offset
add
conditieRegister-bestand
0
b.v.: brge r1,16(pc) 4
+
0
1
ca8-27
Inhoud
• Sequentiële logica
• Het datapad
• Een cyclus-per-instructiemachine
• Meer cycli-per-instructiemachine
• Microcodering
• RISC vs. CISC
ca8-28
instructie-geheugen
4+
deco
der
Register-bestand
ra
rb
rd
Din
Datageheugen
offset
PC
0
Controle-eenheidS
1S
2
Res
PC
RegW
Alu
Mem
W
Mem
R
0
Cmp
Eén cyclus-per-instructiemachine
ca8-29
Controletabel
add 0 1 1 0 001 xxx 0 0 1
addi 0 1 1 1 001 xxx 0 0 1
load 0 1 1 1 001 xxx 0 1 0
store 0 0 1 1 001 xxx 1 0 x
jump 1 0 0 1 001 111 0 0 1
brge 1 0 0 1 001 110 0 0 1
PC
RegW
S1 S2 Alu Mem
W
Mem
R
Res
Cmp
ca8-30
Controle
0110001xxx001
0111001xxx001
0111001xxx010
0011001xxx10x
1001001111001
1001001110001
Add 000
Addi 001
Load 010
Store 011
Jump 100
Brge 101
ca8-31
Inhoud
• Sequentiële logica
• Het datapad
• Een-cyclus-per-instructiemachine
• Meer-cycli-per-instructiemachine
• Microcodering
• RISC vs. CISC
ca8-32
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
Controle-eenheid
cond
Meer-cycli-per-instructiemachine
ca8-33
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=add PCSrc=1 Cond=0, PCW=1
Con
dInstructie: eerste cyclus
ca8-34
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
S1=0 S2=2 Alu=add
Instructie: tweede cyclusC
ond
ca8-35
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
S1=2 S2=0 Alu=add
ADD: derde cyclusC
ond
ca8-36
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
S1=2 S2=2 Alu=add
ADDI: derde cyclusC
ond
ca8-37
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
C=1 RegW=1
ADD/ADDI: vierde cyclusC
ond
ca8-38
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
S1=2 S2=2 Alu=add
LOAD/STORE: derde cyclusC
ond
ca8-39
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
Mar=1 MemW=1
STORE: vierde cyclusC
ond
ca8-40
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
Mar=1 MemR=1
LOAD: vierde cyclusC
ond
ca8-41
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
C=0 RegW=1
LOAD: vijfde cyclusC
ond
ca8-42
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
PCSrc=0 PCW=1 Cond=0
JUMP: derde cyclusC
ond
ca8-43
gehe
ugen
deco
der
Reg
iste
r-be
stan
d
ra
rb
rd
Dinoffset
PC
0
S1
S2
Reg
W Alu
Mem
W
Mem
RIR A
B
4LMD
R
R
C
IRWPC
W
Mar
PC
Src
S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1
BRGE: derde cyclusC
ond
ca8-44
Samenvatting controlesignalenMar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=add PCSrc=1 Cond=0, PCW=1
S1=0 S2=2 Alu=add
S1=2 S2=0
Alu=add
C=1 RegW=1
S1=2 S2=2 Alu=add
Mar=1 MemW=1
Mar=1 MemR=1
C=0 RegW=1
PCSrc=0 PCW=1Cond=0
S1=1 S2=0 Alu=cmpge PCSrc=0
PCW=1 Cond=1
Cyclus 1
Cyclus 2
Cyclus 3
Cyclus 4
Cyclus 5
S1=2 S2=2
Alu=add
ca8-45
Samenvatting controlesignalen
Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=add PCSrc=1 Cond=0, PCW=1
S1=0 S2=2 Alu=add
S1=2 S2=0 Alu=add
C=1 RegW=1
S1=2 S2=2 Alu=add
Mar=1 MemW=1
Mar=1 MemR=1
C=0 RegW=1
PCSrc=0 PCW=1Cond=0
S1=1 S2=0 Alu=cmpge PCSrc=0
PCW=1 Cond=1
add
Load
/sto
re
jump
brge
storeload
0 1
2
4
5
67
8
9
10
S1=2 S2=2 Alu=add
3
addi
ca8-46
Controle-uitgangen
PCW 0 9 10
Cond 0 9 10
Mar 0 6 7
MemW 6
MemR 0 7
IRW 0
C 4 8
RegW 4 8
S1 0 1 2 3 5 10
S2 0 1 2 3 5 10
Alu 0 1 2 3 5 10
PCSrc 0 9 10
PCW 0 9 10
Cond 0 9 10
Mar 0 6 7
MemW 6
MemR 0 7
IRW 0
C 4 8
RegW 4 8
S1 0 1 2 3 5 10
S2 0 1 2 3 5 10
Alu 0 1 2 3 5 10
PCSrc 0 9 10
uitgang bijhorende toestanden
ca8-47
Controle-uitgangen
0 0 0 0 1 0 0 0 1 1 X 0 00 01 001 1
0 0 0 1 0 X X 0 0 0 X 0 00 10 001 X
0 0 1 0 0 X X 0 0 0 X 0 10 00 001 X
0 0 1 1 0 X X 0 0 0 X 0 10 10 010 X
0 1 0 0 0 X X 0 0 0 1 1 XX XX 000 X
0 1 0 1 0 X X 0 0 0 X 0 10 10 001 X
0 1 1 0 0 X 1 1 0 0 X 0 XX XX 000 X
0 1 1 1 0 X 1 0 1 0 X 0 XX XX 000 X
1 0 0 0 0 X X 0 0 0 0 1 XX XX 000 X
1 0 0 1 1 0 X 0 0 0 X 0 XX XX 000 0
1 0 1 0 1 1 X 0 0 0 X 0 01 00 100 0
0 0 0 0 1 0 0 0 1 1 X 0 00 01 001 1
0 0 0 1 0 X X 0 0 0 X 0 00 10 001 X
0 0 1 0 0 X X 0 0 0 X 0 10 00 001 X
0 0 1 1 0 X X 0 0 0 X 0 10 10 010 X
0 1 0 0 0 X X 0 0 0 1 1 XX XX 000 X
0 1 0 1 0 X X 0 0 0 X 0 10 10 001 X
0 1 1 0 0 X 1 1 0 0 X 0 XX XX 000 X
0 1 1 1 0 X 1 0 1 0 X 0 XX XX 000 X
1 0 0 0 0 X X 0 0 0 0 1 XX XX 000 X
1 0 0 1 1 0 X 0 0 0 X 0 XX XX 000 0
1 0 1 0 1 1 X 0 0 0 X 0 01 00 100 0
PC
W
Con
d
Mar
Mem
W
Mem
R
IRW
C Reg
W
S1
S2
Alu
PC
Src
toestand
ca8-48
Volgende-toestanduitgangen
0 0 0 0 0 0 0 1
0 0 0 1 op = add 0 0 1 0
0 0 0 1 op = addi 0 0 1 1
0 0 0 1 op = load/store 0 1 0 1
0 0 0 1 op = jump 1 0 0 1
0 0 0 1 op = brge 1 0 1 0
0 0 1 0 0 1 0 0
0 0 1 1 0 1 0 0
0 1 0 1 op = store 0 1 1 0
0 1 0 1 op = load 0 1 1 1
0 1 0 0 0 0 0 0
0 1 1 1 1 0 0 0
1 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0
1 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 1 op = add 0 0 1 0
0 0 0 1 op = addi 0 0 1 1
0 0 0 1 op = load/store 0 1 0 1
0 0 0 1 op = jump 1 0 0 1
0 0 0 1 op = brge 1 0 1 0
0 0 1 0 0 1 0 0
0 0 1 1 0 1 0 0
0 1 0 1 op = store 0 1 1 0
0 1 0 1 op = load 0 1 1 1
0 1 0 0 0 0 0 0
0 1 1 1 1 0 0 0
1 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0
1 0 1 0 0 0 0 0
toestand voorwaarde volgende toestand
ca8-49
Controle-eenheid
PCWCondMarMemWMemRIRWCRegWS1S2AluPCSrcNS3NS2NS1NS0
IR toestand
input
output
S3..S0Op3..Op0
ca8-50
ROM-Implementatie
IRtoestand
ROM116x16
bits
ROM2
256x4 bits
ca8-51
Inhoud van ROM11000 1100 0001 0011
0000 0000 0010 0010
0000 0000 1000 0010
0000 0000 1010 0100
0000 0011 0000 0000
0000 0000 1010 0010
0011 0000 0000 0000
0010 1000 0000 0000
0000 0001 0000 0000
1000 0000 0000 0000
1001 0000 0100 1000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
1000 1100 0001 0011
0000 0000 0010 0010
0000 0000 1000 0010
0000 0000 1010 0100
0000 0011 0000 0000
0000 0000 1010 0010
0011 0000 0000 0000
0010 1000 0000 0000
0000 0001 0000 0000
1000 0000 0000 0000
1001 0000 0100 1000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
ca8-52
Inhoud
• Sequentiële logica
• Het datapad
• Een cyclus-per-instructiemachine
• Meer cycli-per-instructiemachine
• Microcodering
• RISC vs. CISC
ca8-53
Sequencer-implementatie
IR
toestand
ROM116x18
bits
1
+
Tabel 1
0
Tabel 2
16x4 bits
ca8-54
Samenvatting controlesignalen
Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=plus PCSrc=1 Cond=0, PCW=1
S1=0 S2=2 Alu=add
S1=2 S2=0 Alu=add
C=1 RegW=1
S1=2 S2=2 Alu=add
Mar=1 MemW=1
Mar=1 MemR=1
C=0 RegW=1
PCSrc=0 PCW=1Cond=0
S1=1 S2=0 Alu=cmpge PCSrc=0
PCW=1 Cond=1
add
Load
/sto
re
jump
brge
storeload
0 1
2
3
6
78
9
10
11
S1=2 S2=2 Alu=add
4
addi
C=1 RegW=1
5
01
10
11
11
11
11
11
11
00
00
0000
ca8-55
Microcode
A
BRegisters C
temp
PC
mar
mdr
IR
geheugen
tekenuitb
+1
μPC
microcode
jump tabel 1
jump tabel 2
jump tabel 3
controle datapad
ALU
ca8-56
μPC Label ALU S1 S2 Dest ExtIR Const JCond Adr Mem MAdr MDest Regs0000 Fetch Mbusy Fetch RW PC IR 0001 ADD PC Const PC 4 Jump1 RR 0002 LdSt ADD A IR MAR Word Jump2 0003 Brge S1 A LT Fetch 0004 Jump ADD PC IR PC Word True Fetch 0005 Add ADD A B C 0006 True Fetch WF3 0007 Addi ADD A IR C Word True Wb2 0008 Load Mbusy Load RW MAR MDR 0009 S1 MDR C 000A Wb2 True Fetch WF2 000B Store S2 B MDR 000C Store2 Mbusy Store2 WW MAR 000D True Fetch
Opcode Jump Table 1 Jump Table 2 LD LdSt Load ST LdSt Store ADD Add ADDI Addi BRGE Brge JUMP Jump
Microcodeprogramma
ca8-57
Onderbrekingen en excepties
Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=plus PCSrc=1 Cond=0, PCW=1
S1=0 S2=2 Alu=add
S1=2 S2=0 Alu=add
C=1 RegW=1
S1=2 S2=2 Alu=add
Mar=1 MemW=1
Mar=1 MemR=1
C=0 RegW=1
PCSrc=0 PCW=1Cond=0
S1=1 S2=0 Alu=cmpge PCSrc=0
PCW=1 Cond=1
add
Load
/sto
re
jump
brge
storeload
0 1
2
4
5
67
8
9
10
S1=2 S2=2 Alu=add
3
addi
ongeldigNieuwe
PC
NieuwePC
over
flow
overflow
NieuwePC
geheugenfout
NieuwePC
onde
rbre
king
ca8-58
Inhoud
• Sequentiële logica
• Het datapad
• Een cyclus-per-instructiemachine
• Meer cycli-per-instructiemachine
• Microcodering
• RISC vs. CISC
ca8-59
Evolutie van instructiesetsSingle Accumulator (EDSAC 1950)
Accumulator + Index Registers(Manchester Mark I, IBM 700 series 1953)
Separation of Programming Model from Implementation
High-level Language Based Concept of a Family(B5000 1963) (IBM 360 1964)
General Purpose Register Machines
Complex Instruction Sets Load/Store Architecture
RISC
(Vax, Intel 432 1977-80) (CDC 6600, Cray 1 1963-76)
(Mips,SPARC,HP-PA,IBM RS6000, . . .1987)
ca8-60
Instructiegebruik
Instructie aandeel
Toewijzing 47
If 23
Call 15
Lus 6
Goto 3
Andere 7
ca8-61
Complexiteit
Toewijzing Lok. var Parameters
- 22 41
80 17 19
15 20 15
3 14 9
2 8 7
0 20 8
0
1
2
3
4
≥ 5
ca8-62
Processor Strafverhouding
Berkeley RISC II 0.90
Motorola M68000 0.34
uitvoeringstijd machinetaal .
uitvoeringstijd hoge-niveautaal
C is een alternatief voor assembler
Strafverhouding
ca8-63
Kenmerken
• Voornamelijk instructies die ‘echt’ nodig zijn
• Vooral instructies die effectief gebruikt worden, eenvoudig decodeerbaar
• Groot aantal registers, RRR-machinemodel
• Geen complexe adresseermodes
ca8-64
instructies: vaste lengte + gealigneerd
32-bit loads minder efficiënt
Eenvoudige decodering
15 031 25 20
opcode D S1 subopcode S2
opcode B5 S1 subopcode immediate
opcode D/B5/M5 S1 immediate
opcode B5/M5 S1 subopcode vector
opcode D26
opcode D S1 op sfu crs/crd S2
ca8-65
Sparc Registervensters
%l0-%l7
%o0-%o7
%g0-%g7
Niveau 1
%g0-%g7
%l0-%l7
%o0-%o7
%i0-%i7Niveau 2
%l0-%l7
%o0-%o7
%i0-%i7
%g0-%g7
Niveau 3
2-32 vensters40-520 registers
ARM Thumb
ca8-66
ARM State (T=0) Thumb State (T=1)
32-bit ARM-instructies
Conditionele uitvoering16 registers
RRR-instructies
Default toestand bij opstarten
16-bit Thumb-instructiesNiet-conditioneel8 registersRR-instructiesKleine letterlijke operandi
Tijdens uitvoering geëxpandeerd naar ARM-instructies
30% compacter dan ARM-code40% meer instructies nodig: 40% trager
Goed voor niet-kritische code
ca8-67
Processorfabrikanten
• SUN: Sparc• [COMPAQ (Nu Intel): Alpha-processor]• HP: PA-RISC• Freescale + IBM: PowerPC• MIPS: MIPS• Intel+HP: Itanium (VLIW)• Intel: IA32 / x86-64 (CISC)• AMD: IA32 / x86-64 (CISC)
ca8-68
Pauze