ca8

advertisement
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-1
Inhoud
•
•
•
•
•
•
Sequentiële logica
Het datapad
Eén-cyclus-per-instructiemachine
Meer-cycli-per-instructiemachine
Microcodering
RISC vs. CISC
ca8-2
Sequentiële logica
i1
…
ik
Combinatorische
functie
f1
…
fm
s1
…
sn
klok
ca8-3
S-R Latch (NOR)
S
Q
S
R
Q
R
Q
A
B
A+B
0
0
1
1
0
1
0
1
1
0
0
0
Q

ca8-4
S-R Latch
S
Q
Q
R
Qt
0
0
0
0
1
1
1
1
S
0
0
1
1
0
0
1
1
R
0
1
0
1
0
1
0
1
Qt+1
0
0
1
1
0
1
ca8-5
S-R Latch (NAND)
S
Q
S
R
Q
R
Q
A
B
AB
0
0
1
1
0
1
0
1
1
1
1
0
Q

ca8-6
Geklokte S-R Latch
S
Q
clk
Q
R
ca8-7
D-Latch
D
Q
clk
Q
D Q
C Q
ca8-8
D-Latch
D
C
Q
ca8-9
Sequentiële logica
i1
…
ik
Combinatorische
functie
f1
…
fm
Q1 D1
s1
…
Qn Dn
sn
klok
ca8-10
Master-Slave D-Latch
(D-Flip Flop)
D Q
D Q
C Q
C Q
D Q
Flip-flop: D
Q
ca8-11
D-Flip-Flop
D
C
Q
setup-tijd hold tijd
ca8-12
J Q
J-K Flip-Flop
K Q
J
S Q
K
R Q
Qt
0
0
0
0
1
1
1
1
J K
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
Qt+1
0
0
1
1
1
0
1
0
Flip-flop: JK
ca8-13
T
Q
T Flip-Flop
Q
1
S Q
clk
R Q
1
Flip-flop: T
ca8-14
Register
clk
a31 d30
d31
a30
a0
d0
D Q
D Q
D Q
Q
Q
Q
w
ca8-15
clk
w
Reg 1
Din
Reg 2
…
Multiplexer 1
Reg 1
Reg n-1
1 schrijfpoort
2 leespoorten
Registerbestand
Dout1
Reg 2
Multiplexer 2
d
decoder
Reg 0
Dout2
ca8-16
Inhoud
•
•
•
•
•
•
Sequentiële logica
Het datapad
Eén-cyclus-per-instructiemachine
Meer-cycli-per-instructiemachine
Microcodering
RISC vs. CISC
ca8-17
Von Neumann-machine
Fysiek zicht
BUS
adres
data
controle
CVE
Controle
controle
klok
cache
registers
Geheugen
Geheugen:bau-cellen
RAM
Invoer/Uitvoer
ca8-18
De klok
ca8-19
Voorbeelden
Merk
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-20
Processor
Data-geheugen
Datapad
Controle-eenheid
Instructie-geheugen
ca8-21
Laden van een instructie
+
4
PC
leesadres
geheugen
instructie
ca8-22
ALU-instructie: RRR
Alu
regW
ra
rb
Registerbestand
rd
Din
b.v. : add r1, r2, r3
ca8-23
ALU-instructie: RRI
Alu
regW
ra
rb
Registerbestand
rd
Din
letterlijke
operand
b.v. : addi r1, 10, r3
ca8-24
MEM-instructie
add
MemW
MemR
ra
rb
Registerbestand
rd
Din
geheugen
regW
offset
b.v. : ld r1, 10(r3)
ca8-25
controletransferinstructie
cmpge
ra
conditie
Registerbestand
1
0
0
4
b.v.: brge r1,16(pc)
add
+
PC
Offset
ca8-26
Inhoud
•
•
•
•
•
•
Sequentiële logica
Het datapad
Eén cyclus-per-instructiemachine
Meer cycli-per-instructiemachine
Microcodering
RISC vs. CISC
ca8-27
Eén cyclus-perinstructiemachine
4
0
Cmp
+
Data
geheugen
rb
offset
RegW
Res
Registerbestand
Alu
Din
MemR
rd
MemW
instructiegeheugen
S1
PC
S2
0
decoder
ra
PC
Controle-eenheid
ca8-28
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
ca8-29
Controle
Add 000
0110001xxx001
Addi 001
0111001xxx001
Load 010
0111001xxx010
Store 011
0011001xxx10x
Jump 100
1001001111001
Brge 101
1001001110001
ca8-30
Inhoud
•
•
•
•
•
•
Sequentiële logica
Het datapad
Eén-cyclus-per-instructiemachine
Meer-cycli-per-instructiemachine
Microcodering
RISC vs. CISC
ca8-31
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
Meer-cycli-per-instructiemachine
cond
C
Controle-eenheid
ca8-32
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
Instructie: eerste cyclus
Cond
C
Mar=0 MemR=1 IRW=1 S1=0 S2=1 Alu=add PCSrc=1
Cond=0 PCW=1 memW=0 RegW=0 IRW=0
ca8-33
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
Instructie: tweede cyclus
Cond
C
S1=0 S2=2 Alu=add memW=0 RegW=0 IRW=0 PCW=0
ca8-34
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
ADD: derde cyclus
Cond
C
S1=2 S2=0 Alu=add memW=0 RegW=0 IRW=0 PCW=0
ca8-35
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
ADDI: derde cyclus
Cond
C
S1=2 S2=2 Alu=add memW=0 RegW=0 IRW=0 PCW=0
ca8-36
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
ADD/ADDI: vierde cyclus
Cond
C
C=1 RegW=1 memW=0 IRW=0 PCW=0
ca8-37
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
LOAD/STORE: derde cyclus
Cond
C
S1=2 S2=2 Alu=add memW=0 RegW=0 IRW=0 PCW=0
ca8-38
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
STORE: vierde cyclus
Cond
C
Mar=1 MemW=1 RegW=0 IRW=0 PCW=0
ca8-39
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
LOAD: vierde cyclus
Cond
C
Mar=1 MemR=1 memW=0 RegW=0 IRW=0 PCW=0
ca8-40
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
LOAD: vijfde cyclus
Cond
C
C=0 RegW=1 memW=0 IRW=0 PCW=0
ca8-41
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
JUMP: derde cyclus
Cond
C
PCSrc=0 PCW=1 Cond=0 memW=0 RegW=0 IRW=0
ca8-42
rb
A
Din
4
B
S2
PCSrc
offset
R
Alu
rd
S1
RegW
LMDR
0
IRW
MemR
decoder
IR
geheugen
MemW
Mar
PCW
PC
ra
Registerbestand
BRGE: derde cyclus
Cond
C
S1=1 S2=0 Alu=cmpge PCSrc=0 PCW=1 Cond=1
memW=0 RegW=0 IRW=0
ca8-43
Samenvatting controlesignalen
Cyclus 1
Mar=0 MemR=1 IRW=1 S1=0 S2=1
Alu=add PCSrc=1 Cond=0, PCW=1
(4)
Cyclus 2
S1=0 S2=2 Alu=add
(1)
S1=2
S1=2 S2=0
S2=2
Cyclus 3 Alu=add
Alu=add
(1)
(1)
Cyclus 4
Cyclus 5
C=1 RegW=1
(3)
PCSrc=0
S1=2 S2=2 Alu=add PCW=1
(1)
Cond=0
(4)
S1=1 S2=0
Alu=cmpge
PCSrc=0
PCW=1 Cond=1
(4)
Mar=1
Mar=1
(1) memW=0 RegW=0
MemW=1 MemR=1
IRW=0 PCW=0
(2)
(1)
(2) RegW=0 IRW=0 PCW=0
C=0
RegW=1
(3)
(3) memW=0 IRW=0 PCW=0
(4) memW=0 RegW=0 IRW=0
ca8-44
Samenvatting controlesignalen
0
1
S1=0 S2=2 Alu=add (1)
Mar=0 MemR=1
IRW=1 S1=0 S2=1
Alu=add PCSrc=1
Cond=0, PCW=1 (4)
10
2
3
S1=2 S2=0
Alu=add (1)
S1=2 S2=2
Alu=add (1)
5
S1=2 S2=2
Alu=add (1)
6
4
load
store
MemW=1
Mar=1 (2)
S1=1 S2=0
Alu=cmpge
PCSrc=0 PCW=1
Cond=1(4)
7
MemR=1
Mar=1 (1)
C=1 RegW=1 (3)
8
9
PCSrc=0
PCW=1
Cond=0 (4)
C=0
RegW=1 (3)
ca8-45
Controle-uitgangen
uitgang
bijhorende toestanden
PCW
0 1
Cond
0
Mar
0
MemW
0 1
MemR
0
IRW
0 1
2
3
4 5 6
7 8
9 10
9 10
6
2
3
4 5 6
7
7 8
9 10
7
2
3
C
4 5 6
4
7 8
9 10
8
RegW
0 1
2
3
4 5 6
7 8
9 10
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
ca8-46
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 001
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
PCSrc
0
0
Alu
1 0
S2
0 0 0 0
S1
toestand
PCW
Cond
Mar
MemW
MemR
IRW
C
RegW
Controle-uitgangen
ca8-47
Volgende-toestanduitgangen
toestand
0 0 0 0
voorwaarde
volgende toestand
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 0
0 0 0 0
0 1 0 1
op = store
0 1 1 0
0 1 0 1
op = load
0 1 1 1
0 1 1 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
ca8-48
output
input
Op3..Op0
S3..S0
IR
toestand
PCW
Cond
Mar
MemW
MemR
IRW
C
RegW
S1
S2
Alu
PCSrc
NS3
NS2
NS1
NS0
Controleeenheid
ca8-49
ROM-Implementatie
ROM1
16x16
bits
ROM2
256x4
bits
toestand
IR
ca8-50
Inhoud van ROM1
0000
1000 1100
0001 0011
0001
0000 0000 0010 0010
0010
0000 0000 1000 0010
0011
0000 0000 1010 0100
0100
0000 0011
0101
0000 0000 1010 0010
0110
0011 0000 0000 0000
0111
0010 1000 0000 0000
1000
0000 0001 0000 0000
1001
1000 0000 0000 0000
1010
1001 0000 0100 1000
1011
0000 0000 0000 0000
1100
0000 0000 0000 0000
1101
0000 0000 0000 0000
1110
0000 0000 0000 0000
1111
0000 0000 0000 0000
0000 0000
ca8-51
Inhoud
•
•
•
•
•
•
Sequentiële logica
Het datapad
Eén cyclus-per-instructiemachine
Meer cycli-per-instructiemachine
Microcodering
RISC vs. CISC
ca8-52
Sequencer-implementatie
ROM1
16x18
bits
1
toestand
+
0
Tabel 1
16x4
bits
Tabel 2
IR
ca8-53
Samenvatting controlesignalen
0
00
1
01
S1=0 S2=2 Alu=add (1)
Mar=0 MemR=1
IRW=1 S1=0 S2=1
Alu=plus PCSrc=1
Cond=0, PCW=1 (4)
2
4
S1=2 S2=0
Alu=add (1)
S1=2 S2=2
Alu=add (1)
00
00
6
10
S1=2 S2=2
Alu=add (1)
7
3
5
RegW=1
C=1 (3)
RegW=1
C=1 (3)
11
11
11
S1=1 S2=0
Alu=cmpge
PCSrc=0 PCW=1
Cond=1 (4)
load
store
11
Mar=1
MemW=1 (1)
11
8
00
MemR=1
Mar=1 (1)
9
11
10
PCSrc=0 11
PCW=1
Cond=0 (4)
C=0
RegW=1 (3)
ca8-54
Microcode
controle
+
datapad
1
ALU
μPC
A
microcode
Registers
C
B
jump tabel 1
jump tabel 2
temp
jump tabel 3
PC
mar
geheugen
mdr
tekenuitb
IR
ca8-55
Microcodeprogramma
μPC
0000
0001
0002
0003
0004
0005
0006
0007
0008
0009
000A
000B
000C
000D
Label
Fetch
LdSt
Brge
Jump
Add
Addi
Load
ALU
S1
ADD
ADD
S1
ADD
ADD
PC
A
A
PC
A
ADD
S1
Wb2
Store S2
Store2
S2
A
MDR
Dest ExtIR Const JCond
Mbusy
Const PC
4
Jump1
IR
MAR Word
Jump2
LT
IR
PC
Word
True
B
C
True
IR
C
Word
True
Mbusy
C
True
B
MDR
Mbusy
True
Opcode
LD
ST
ADD
ADDI
BRGE
JUMP
Jump Table 1
LdSt
LdSt
Add
Addi
Brge
Jump
Adr
Fetch
Mem
RW
MAdr
PC
MDest Regs
IR
RR
Fetch
Fetch
Fetch
Wb2
Load
WF3
RW
MAR
Fetch
Store2 WW
Fetch
MDR
WF2
MAR
Jump Table 2
Load
Store
ca8-56
Onderbrekingen en excepties
Nieuwe
PC
0
1
S1=0 S2=2 Alu=add (1)
Mar=0 MemR=1
IRW=1 S1=0 S2=1
Alu=plus PCSrc=1
Cond=0, PCW=1 (4)
Nieuwe
PC
10
5
2
3
S1=2 S2=0
Alu=add (1)
S1=2 S2=2
Alu=add (1)
S1=2 S2=2 Alu=add (1)
overflow
6
4
load
store
Mar=1
MemW=1 (2)
S1=1 S2=0
Alu=cmpge
PCSrc=0 PCW=1
Cond=1 (4)
7
Mar=1
MemR=1 (1)
C=1 RegW=1 (3)
8
9
PCSrc=0
PCW=1
Cond=0 (4)
C=0
RegW=1 (3)
Nieuwe
PC
Nieuwe
PC
ca8-57
Inhoud
•
•
•
•
•
•
Sequentiële logica
Het datapad
Eén cyclus-per-instructiemachine
Meer cycli-per-instructiemachine
Microcodering
RISC vs. CISC
ca8-58
Evolutie van instructiesets
Single Accumulator (EDSAC 1950)
Accumulator + Index Registers
(Manchester Mark I, IBM 700 series 1953)
Separation of Programming Model
from Implementation
High-level Language Based
(B5000 1963)
Concept of a Family
(IBM 360 1964)
General Purpose Register Machines
Complex Instruction Sets
(Vax, Intel 432 1977-80)
Load/Store Architecture
(CDC 6600, Cray 1 1963-76)
RISC
(Mips,SPARC,HP-PA,IBM RS6000, . . .1987)
ca8-59
Instructiegebruik
Instructie
aandeel
Toewijzing
47
If
23
Call
15
Lus
6
Goto
3
Andere
7
ca8-60
Complexiteit
Toewijzing
Lok. var Parameters
0
-
22
41
1
80
17
19
2
15
20
15
3
3
14
9
4
2
8
7
20
8
≥5 0
ca8-61
Strafverhouding
uitvoeringstijd machinetaal
uitvoeringstijd hoge-niveautaal
Processor
.
Strafverhouding
Berkeley RISC II
0.90
Motorola M68000
0.34
C is een alternatief voor assembler
ca8-62
Kenmerken
• Voornamelijk instructies die ‘echt’ nodig
zijn
• Vooral instructies die effectief gebruikt
worden, eenvoudig decodeerbaar
• Groot aantal registers, RRRmachinemodel
• Geen complexe adresseermodes
ca8-63
Eenvoudige decodering
instructies: vaste lengte + gealigneerd
31
25
20
15
opcode
D
S1
opcode
B5
S1
opcode
D/B5/M5
S1
opcode
B5/M5
S1
opcode
opcode
0
subopcode
subopcode
S2
immediate
immediate
subopcode
vector
D26
D
S1
op
sfu
crs/crd
S2
32-bit loads minder efficiënt
ca8-64
Sparc Registervensters
Niveau 1
%l0-%l7 Niveau 2
%o0-%o7 %i0-%i7
%l0-%l7 Niveau 3
%o0-%o7 %i0-%i7
%l0-%l7
%o0-%o7
2-32 vensters
40-520 registers
%g0-%g7 %g0-%g7 %g0-%g7
ca8-65
ARM Thumb
ARM State (T=0)
32-bit ARM-instructies
Conditionele uitvoering
16 registers
RRR-instructies
Default toestand bij
opstarten
Thumb State (T=1)
16-bit Thumb-instructies
Niet-conditioneel
8 registers
RR-instructies
Kleine letterlijke operandi
Tijdens uitvoering
geëxpandeerd naar ARMinstructies
30% compacter dan ARM-code
40% meer instructies nodig: 40% trager
Goed voor niet-kritische code
ca8-66
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-67
Pauze
ca8-68
Download