Les 8: Datapad & Controle

Post on 17-Jan-2016

32 views 0 download

Tags:

description

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. Inhoud. Sequentiële logica Het datapad Een-cyclus-per-instructiemachine Meer-cycli-per-instructiemachine Microcodering RISC vs. CISC. s 1. …. s n. klok. - PowerPoint PPT Presentation

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