• Aucun résultat trouvé

CPU (2) TD6

N/A
N/A
Protected

Academic year: 2022

Partager "CPU (2) TD6"

Copied!
126
0
0

Texte intégral

(1)

TD6

CPU (2)

(2)

2

Lignes de contrôle d'une ALU

(3)

+

a

k

less

k

CarryIn

CarryOut Op

0

1 2

Result b

Invert

a

Invert

0 1

0 1

M

a

M

b

M

s

3 b

k

+ a

31

b

31

CarryIn

CarryOut Op

0 1

2 Result

b

Invert

a

Invert

0 1

0 1

3 less

Set

2

2

(4)

4

a

0

b

0

a

1

b

1

a

2

b

2

a

3

a

inv

b

neg CarryIn

CarryOut

b

3

r

3

r

2

r

1

r

0

0 0 0

Set

Op

(5)

zero

r

3

r

2

r

1

r

0

a

0

b

0

a

1

b

1

a

2

b

2

a

3

a

inv

b

neg CarryIn

CarryOut b

3

0 0 0

Set

ligne de contrôle Zero ?

Op

(6)

6

a

0

b

0

a

1

b

1

a

2

b

2

a

3

a

inv

b

neg CarryIn

CarryOut

b

3

r

3

r

2

r

1

r

0

0 0 0

zero

Set

Op

Overflow

ligne de contrôle Overflow ?

(7)

a

inv

b

inv

CarryIn Op

1

Op

0

AND

OR

ADD

SUB

SLT

(8)

8

a

inv

b

inv

CarryIn Op

1

Op

0

AND 0 0 X 0 0

OR

ADD

SUB

SLT

(9)

a

inv

b

inv

CarryIn Op

1

Op

0

AND 0 0 X 0 0

OR 0 0 X 0 1

ADD

SUB

SLT

(10)

10

a

inv

b

inv

CarryIn Op

1

Op

0

AND 0 0 X 0 0

OR 0 0 X 0 1

ADD 0 0 0 1 0

SUB

SLT

(11)

a

inv

b

inv

CarryIn Op

1

Op

0

AND 0 0 X 0 0

OR 0 0 X 0 1

ADD 0 0 0 1 0

SUB 0 1 1 1 0

SLT

(12)

12

a

inv

b

inv

CarryIn Op

1

Op

0

AND 0 0 X 0 0

OR 0 0 X 0 1

ADD 0 0 0 1 0

SUB 0 1 1 1 0

SLT 0 1 1 1 1

a

inv

b

inv

Op

1

Op

0

AND 0 0 0 0

OR 0 0 0 1

ADD 0 0 1 0

SUB 0 1 1 0

SLT 0 1 1 1

(13)

Contrôle d'une ALU

(14)

14

a

b

ALU operation

CarryOut

Zero Result Overflow

32

32

32

4

(15)

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

(16)

16

objectif :

trouver les 4 bits du code de contrôle de l'ALU à partir

– du type de l'instruction, défini par les 2 bits de ALUOp (type R, accès mémoire, saut conditionnel)

– du champ de fonction dans les cas des instructions de type R

(17)

instructions du processeur qui demandent l'utilisation de l'ALU

Type Code

(18)

18

instructions du processeur qui demandent l'utilisation de l'ALU

Type Code

accès mémoire LW accès mémoire SW saut conditionnel BEQ

type R ADD

type R SUB

type R AND

type R OR

type R SLT

(19)

utilisation de l'ALU ?

Type Code fonction

accès mémoire LW accès mémoire SW saut conditionnel BEQ

type R ADD

type R SUB

type R AND

type R OR

type R SLT

(20)

20

utilisation de l'ALU 

Type Code fonction

accès mémoire LW add accès mémoire SW

saut conditionnel BEQ

type R ADD

type R SUB

type R AND

type R OR

type R SLT

(21)

utilisation de l'ALU 

Type Code fonction

accès mémoire LW add accès mémoire SW add saut conditionnel BEQ

type R ADD

type R SUB

type R AND

type R OR

type R SLT

(22)

22

utilisation de l'ALU 

Type Code fonction

accès mémoire LW add accès mémoire SW add saut conditionnel BEQ sub

type R ADD

type R SUB

type R AND

type R OR

type R SLT

(23)

utilisation de l'ALU 

Type Code fonction

accès mémoire LW add accès mémoire SW add saut conditionnel BEQ sub

type R ADD add

type R SUB

type R AND

type R OR

type R SLT

(24)

24

utilisation de l'ALU 

Type Code fonction

accès mémoire LW add accès mémoire SW add saut conditionnel BEQ sub

type R ADD add

type R SUB sub

type R AND

type R OR

type R SLT

(25)

utilisation de l'ALU 

Type Code fonction

accès mémoire LW add accès mémoire SW add saut conditionnel BEQ sub

type R ADD add

type R SUB sub

type R AND and

type R OR

type R SLT

(26)

26

utilisation de l'ALU 

Type Code fonction

accès mémoire LW add accès mémoire SW add saut conditionnel BEQ sub

type R ADD add

type R SUB sub

type R AND and

type R OR or

type R SLT

(27)

utilisation de l'ALU 

Type Code fonction

accès mémoire LW add accès mémoire SW add saut conditionnel BEQ sub

type R ADD add

type R SUB sub

type R AND and

type R OR or

type R SLT slt

(28)

28

codes commandes ALU ?

addition 

Type Code fonction Op

3-0

accès mémoire LW add

accès mémoire SW add saut conditionnel BEQ sub

type R ADD add

type R SUB sub

type R AND and

type R OR or

type R SLT slt

(29)

codes commandes ALU

addition 

Type Code fonction Op

3-0

accès mémoire LW add 0010 accès mémoire SW add 0010 saut conditionnel BEQ sub

type R ADD add 0010

type R SUB sub

type R AND and

type R OR or

type R SLT slt

(30)

30

codes commandes ALU

soustraction 

Type Code fonction Op

3-0

accès mémoire LW add 0010 accès mémoire SW add 0010 saut conditionnel BEQ sub

type R ADD add 0010

type R SUB sub

type R AND and

type R OR or

type R SLT slt

(31)

codes commandes ALU

soustraction 

Type Code fonction Op

3-0

accès mémoire LW add 0010 accès mémoire SW add 0010 saut conditionnel BEQ sub 0110

type R ADD add 0010

type R SUB sub 0110

type R AND and

type R OR or

type R SLT slt

(32)

32

codes commandes ALU

and, or, slt 

Type Code fonction Op

3-0

accès mémoire LW add 0010 accès mémoire SW add 0010 saut conditionnel BEQ sub 0110

type R ADD add 0010

type R SUB sub 0110

type R AND and

type R OR or

type R SLT slt

(33)

codes commandes ALU

and, or, slt 

Type Code fonction Op

3-0

accès mémoire LW add 0010 accès mémoire SW add 0010 saut conditionnel BEQ sub 0110

type R ADD add 0010

type R SUB sub 0110

type R AND and 0000

type R OR or 0001

type R SLT slt 0111

(34)

34

champ de fonction et ALUOp pour obtenir les 4 bits de Op ? 

Type Code fonction Op

3-0

ALUOp Champ accès mémoire LW add 0010

accès mémoire SW add 0010 saut conditionnel BEQ sub 0110

type R ADD add 0010

type R SUB sub 0110

type R AND and 0000

type R OR or 0001

type R SLT slt 0111

(35)

champ de fonction et ALUOp pour obtenir les 4 bits de Op  

Type Code fonction Op

3-0

ALUOp Champ accès mémoire LW add 0010 00

accès mémoire SW add 0010 00 saut conditionnel BEQ sub 0110 01

type R ADD add 0010 10

type R SUB sub 0110 10

type R AND and 0000 10

type R OR or 0001 10

type R SLT slt 0111 10

défini uniquement pour les

instructions de type R

(36)

36

champ de fonction et ALUOp pour obtenir les 4 bits de Op  

Type Code fonction Op

3-0

ALUOp Champ accès mémoire LW add 0010 00

accès mémoire SW add 0010 00 saut conditionnel BEQ sub 0110 01

type R ADD add 0010 10 100000

type R SUB sub 0110 10 100010

type R AND and 0000 10 100100

type R OR or 0001 10 100101

type R SLT slt 0111 10 101010

(37)

champ de fonction et ALUOp pour obtenir les 4 bits de Op  

Type Code fonction Op

3-0

ALUOp Champ

accès mémoire LW add 0010 00 XXXXXX

accès mémoire SW add 0010 00 XXXXXX

saut conditionnel BEQ sub 0110 01 XXXXXX

type R ADD add 0010 10 100000

type R SUB sub 0110 10 100010

type R AND and 0000 10 100100

type R OR or 0001 10 100101

type R SLT slt 0111 10 101010

(38)

38

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

(39)

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 1 0

0 0 1 0

0 1 1 0

0 1 1 0

0 0 0 0

0 0 0 1

0 1 1 1

(40)

40

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 1 0

0 0 1 0

0 1 1 0

0 1 1 0

0 0 0 0

0 0 0 1

0 1 1 1

accès

mémoire

(41)

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

0 0 1 0

0 1 1 0

0 1 1 0

0 0 0 0

0 0 0 1

0 1 1 1

(42)

42

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

0 0 1 0

0 1 1 0

0 1 1 0

0 0 0 0

0 0 0 1

0 1 1 1

add

(43)

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 1 0

0 1 1 0

0 0 0 0

0 0 0 1

0 1 1 1

(44)

44

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 1 0

0 1 1 0

0 0 0 0

0 0 0 1

0 1 1 1

beq

(45)

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

0 1 1 0

0 0 0 0

0 0 0 1

0 1 1 1

beq

(46)

46

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

0 1 1 0

0 0 0 0

0 0 0 1

0 1 1 1

sub

(47)

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

1 0 1 0 0 0 1 0 0 1 1 0

0 0 0 0

0 0 0 1

0 1 1 1

(48)

48

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération)

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

1 0 1 0 0 0 1 0 0 1 1 0

0 0 0 0

0 0 0 1

0 1 1 1

and

(49)

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

1 0 1 0 0 0 1 0 0 1 1 0

1 0 1 0 0 1 0 0 0 0 0 0

0 0 0 1

0 1 1 1

(50)

50

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

1 0 1 0 0 0 1 0 0 1 1 0

1 0 1 0 0 1 0 0 0 0 0 0

0 0 0 1

0 1 1 1

or

(51)

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

1 0 1 0 0 0 1 0 0 1 1 0

1 0 1 0 0 1 0 0 0 0 0 0

1 0 1 0 0 1 0 1 0 0 0 1

0 1 1 1

(52)

52

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

1 0 1 0 0 0 1 0 0 1 1 0

1 0 1 0 0 1 0 0 0 0 0 0

1 0 1 0 0 1 0 1 0 0 0 1

0 1 1 1

slt

(53)

remplir la table de vérité pour les opérations de l'ALU

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

1 0 1 0 0 0 1 0 0 1 1 0

1 0 1 0 0 1 0 0 0 0 0 0

1 0 1 0 0 1 0 1 0 0 0 1

1 0 1 0 1 0 1 0 0 1 1 1

(54)

54

simplifications ?

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

1 0 1 0 0 0 1 0 0 1 1 0

1 0 1 0 0 1 0 0 0 0 0 0

1 0 1 0 0 1 0 1 0 0 0 1

1 0 1 0 1 0 1 0 0 1 1 1

(55)

simplifications

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

1 0 1 0 0 0 1 0 0 1 1 0

1 0 1 0 0 1 0 0 0 0 0 0

1 0 1 0 0 1 0 1 0 0 0 1

1 0 1 0 1 0 1 0 0 1 1 1

(56)

56

simplifications

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 0 1 0 0 0 0 0 0 0 1 0

0 1 X X X X X X 0 1 1 0

1 0 1 0 0 0 1 0 0 1 1 0

1 0 1 0 0 1 0 0 0 0 0 0

1 0 1 0 0 1 0 1 0 0 0 1

1 0 1 0 1 0 1 0 0 1 1 1

11 n'est jamais utilisé

1X au lieu de 10

X1 au lieu de 01

(57)

simplifications

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 X 1 0 0 0 0 0 0 0 1 0

X 1 X X X X X X 0 1 1 0

1 X 1 0 0 0 1 0 0 1 1 0

1 X 1 0 0 1 0 0 0 0 0 0

1 X 1 0 0 1 0 1 0 0 0 1

1 X 1 0 1 0 1 0 0 1 1 1

11 nest jamais utilisé

1X au lieu de 10

X1 au lieu de 01

(58)

58

simplifications

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 X 1 0 0 0 0 0 0 0 1 0

X 1 X X X X X X 0 1 1 0

1 X 1 0 0 0 1 0 0 1 1 0

1 X 1 0 0 1 0 0 0 0 0 0

1 X 1 0 0 1 0 1 0 0 0 1

1 X 1 0 1 0 1 0 0 1 1 1

simplifications

(59)

simplifications

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 X 1 0 0 0 0 0 0 0 1 0

X 1 X X X X X X 0 1 1 0

1 X 1 0 0 0 1 0 0 1 1 0

1 X 1 0 0 1 0 0 0 0 0 0

1 X 1 0 0 1 0 1 0 0 0 1

1 X 1 0 1 0 1 0 0 1 1 1

quand F5 et F4 sont utilisés, ils sont toujours à 10

F5 et F4 non discriminants

(60)

60

simplifications

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 X X X 0 0 0 0 0 0 1 0

X 1 X X X X X X 0 1 1 0

1 X X X 0 0 1 0 0 1 1 0

1 X X X 0 1 0 0 0 0 0 0

1 X X X 0 1 0 1 0 0 0 1

1 X X X 1 0 1 0 0 1 1 1

quand F5 et F4 sont utilisés, ils sont toujours à 10

F5 et F4 non discriminants

(61)

en déduire les équations donnant les bits du code

d'opération de l'ALU en fonction de ALUOp et du champ de fonction

Op 3 est toujours faux

(62)

62

Op 2 est vrai pour

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

X 1 X X X X X X 0 1 1 0

1 X X X 0 0 1 0 0 1 1 0

1 X X X 1 0 1 0 0 1 1 0

(63)

Op 2 est vrai pour

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

X 1 X X X X X X

1 X X X 0 0 1 0

1 X X X 1 0 1 0

F3 est non discriminant

(64)

64

Op 2 est vrai pour

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

X 1 X X X X X X

1 X X X X 0 1 0

1 X X X X 0 1 0

F3 est non discriminant

(65)

Op 2 est vrai pour

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

X 1 X X X X X X

1 X X X X 0 1 0

1 X X X X 0 1 0

F3 est non discriminant

(66)

66

Op 2 est vrai pour

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

X 1 X X X X X X

1 X X X X 0 1 0

si on regarde maintenant les combinaisons pour lesquelles Op 2 est faux

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

0 0 X X X X X X

1 X X X 0 0 0 0

1 X X X 0 1 0 0

1 X X X 0 1 0 1

(67)

Op 2 est vrai pour

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

X 1 X X X X X X

1 X X X X 0 1 0

si on regarde maintenant les combinaisons pour lesquelles Op 2 est faux

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

0 0 X X X X X X

1 X X X 0 0 0 0

1 X X X 0 1 0 0

1 X X X 0 1 0 1

F1 toujours à 0

(68)

68

Op 2 est vrai pour

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

X 1 X X X X X X

1 X X X X 0 1 0

si on regarde maintenant les combinaisons pour lesquelles Op 2 est faux

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

0 0 X X X X X X

1 X X X 0 0 0 0

1 X X X 0 1 0 0

1 X X X 0 1 0 1

F1 toujours à 0

F0 et F2 non

discriminants

(69)

Op 2 est vrai pour

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

X 1 X X X X X X

1 X X X X X 1 X

Op 2 = ALUOp 0 + ALUOp 1 .F1

(70)

70

Op 1 est vrai pour

avec un raisonnement analogue au précédent, on détermine la table de vérité pour Op 1  :

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

0 0 X X X X X X 0 0 1 0

1 X X X 0 0 0 0 0 0 1 0

X 1 X X X X X X 0 1 1 0

1 X X X 0 0 1 0 0 1 1 0

1 X X X 1 0 1 0 0 1 1 1

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

0 X X X X X X X

X X X X X 0 X X

Op 1 = ALUOp 1 + F2

(71)

Op 0 est vrai pour

ALUOp Champ de fonction Opération

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0 Op

3

Op

2

Op

1

Op

0

1 X X X 0 1 0 1 0 0 0 1

1 X X X 1 0 1 0 0 1 1 1

soit encore

ALUOp

1

ALUOp

0

F5 F4 F3 F2 F1 F0

1 X X X X X X 1

1 X X X 1 X X X

Op 0 = ALUOp 1 . ( F3+ F0)

(72)

72

○ ALUOp0

ALUOp1

F2 F1 F0

Op2

Op1 Op0

F3 ○

(73)

Unité de contrôle de la CPU

(74)

74

objectif :

déterminer les valeurs que doivent prendre les différentes

lignes de commande

(75)

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

(76)

76

ligne type R LW SW BEQ

Entrées

F31 F30 F29 F28 F27 F26

Sorties

RegDest

ALUSrc

MemtoReg

RegWrite

MemRead

MemWrite

Branch

ALUOP

1

ALUOP

0

(77)

ligne type R LW SW BEQ

Entrées

F31 F30 F29 F28 F27 F26

Sorties

RegDest ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOP

1

ALUOP

Instructions de type R (F[31:26] = 0

10

= 000000

2

(78)

78

ligne type R LW SW BEQ

Entrées

F31 0

F30 0

F29 0

F28 0

F27 0

F26 0

Sorties

RegDest ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOP

1

ALUOP

0

Instructions de type R (F[31:26] = 0

10

= 000000

2

(79)

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

(80)

80

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

PC chargé

add $t1,$t2,$t3

(81)

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

PC incrémenté

0

(82)

82

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

$t2 et $t3 chargés dans

l'ALU

$t2 $t3

add $t1,$t2,$t3

0

0

(83)

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

l'ALU fait l'addition 0

0

10

(84)

84

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

add $t1,$t2,$t3 résultat chargé

dans $t1

$t1

10

(85)

ligne type R LW SW BEQ

Entrées

F31 0

F30 0

F29 0

F28 0

F27 0

F26 0

Sorties

RegDest 1

ALUSrc 0

MemtoReg 0

RegWrite 1

MemRead 0

MemWrite 0

Branch 0

ALUOP

1

1

ALUOP 0

Instructions de type R (F[31:26] = 0

10

= 000000

2

(86)

86

ligne type R LW SW BEQ

Entrées

F31 0

F30 0

F29 0

F28 0

F27 0

F26 0

Sorties

RegDest 1

ALUSrc 0

MemtoReg 0

RegWrite 1

MemRead 0

MemWrite 0

Branch 0

ALUOP

1

1

ALUOP

0

0

Instructions de type LW (F[31:26] = 35

10

= 100011

2

(87)

ligne type R LW SW BEQ

Entrées

F31 0 1

F30 0 0

F29 0 0

F28 0 0

F27 0 1

F26 0 1

Sorties

RegDest 1

ALUSrc 0

MemtoReg 0

RegWrite 1

MemRead 0

MemWrite 0

Branch 0

ALUOP

1

1

ALUOP 0

Instructions de type LW (F[31:26] = 35

10

= 100011

2

(88)

88

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

lw $t1,offset($t2)

(89)

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

PC

chargé

(90)

90

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

lw $t1,offset($t2) PC

incrémenté

(91)

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

$t2 $t2 lu et chargé dans l'ALU

offset étendu à 32 bits et

chargé dans l'ALU

(92)

92

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

lw $t1,offset($t2)

offset + $t2 est

l'adresse mémoire

(93)

93

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

lw $t1,offset($t2) le contenu de la mémoire est

$t1

(94)

94

ligne type R LW SW BEQ

Entrées

F31 0 1

F30 0 0

F29 0 0

F28 0 0

F27 0 1

F26 0 1

Sorties

RegDest 1 0

ALUSrc 0 1

MemtoReg 0 1

RegWrite 1 1

MemRead 0 1

MemWrite 0 0

Branch 0 0

ALUOP

1

1 0

ALUOP

0

0 0

Instructions de type LW (F[31:26] = 35

10

= 100011

2

(95)

ligne type R LW SW BEQ

Entrées

F31 0 1

F30 0 0

F29 0 0

F28 0 0

F27 0 1

F26 0 1

Sorties

RegDest 1 0

ALUSrc 0 1

MemtoReg 0 1

RegWrite 1 1

MemRead 0 1

MemWrite 0 0

Branch 0 0

ALUOP

1

1 0

ALUOP 0 0

Instructions de type SW (F[31:26] = 43

10

= 100111

2

(96)

96

ligne type R LW SW BEQ

Entrées

F31 0 1 1

F30 0 0 0

F29 0 0 0

F28 0 0 1

F27 0 1 1

F26 0 1 1

Sorties

RegDest 1 0

ALUSrc 0 1

MemtoReg 0 1

RegWrite 1 1

MemRead 0 1

MemWrite 0 0

Branch 0 0

ALUOP

1

1 0

ALUOP

0

0 0

Instructions de type SW (F[31:26] = 43

10

= 100111

2

(97)

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

(98)

98

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

sw $t1,offset($t2)

PC

chargé

(99)

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

PC

incrémenté

(100)

100

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

sw $t1,offset($t2)

$t2 lu et chargé dans l'ALU

offset étendu à 32 bits et chargé dans l'ALU

$t2

(101)

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

offset + $t2 est

l'adresse mémoire

(102)

102

Registres

Registre lecture #1 Registre lecture #2

Registre écriture Données

écriture

Données lecture #2 Données lecture #1

Ext.

bit de signe

32

ALU

M u x

Zéro Résultat

Mémoire données

Adresse

Données à écrire

M u x

Données lues Lecture

adresse

Mém.

instr.

instruction (31:0)

PC

Add

4

Add

Résultat

Décal.

gauche 2 bits

M u x

Source PC

M u x

instruction [25:21]

instruction [20:16]

instruction [15:11]

instruction [15:0]

instruction [5:0]

0

0

0 0

1 1

1 1

Contrôle ALU

RegDest Branch MemRead MemWrite

ALUOp MemtoReg ALUSrc RegWrite

Contrôle

16 instruction [31:26]

sw $t1,offset($t2)

$t1

le contenu de $t1 est stocké

dans la mémoire

(103)

ligne type R LW SW BEQ

Entrées

F31 0 1 1

F30 0 0 0

F29 0 0 0

F28 0 0 1

F27 0 1 1

F26 0 1 1

Sorties

RegDest 1 0 X

ALUSrc 0 1 1

MemtoReg 0 1 X

RegWrite 1 1 0

MemRead 0 1 0

MemWrite 0 0 1

Branch 0 0 0

ALUOP

1

1 0 0

ALUOP 0 0 0

Instructions de type SW (F[31:26] = 43

10

= 100111

2

(104)

104

ligne type R LW SW BEQ

Entrées

F31 0 1 1

F30 0 0 0

F29 0 0 0

F28 0 0 1

F27 0 1 1

F26 0 1 1

Sorties

RegDest 1 0 X

ALUSrc 0 1 1

MemtoReg 0 1 X

RegWrite 1 1 0

MemRead 0 1 0

MemWrite 0 0 1

Branch 0 0 0

ALUOP

1

1 0 0

ALUOP

0

0 0 0

Instructions de type BEQ (F[31:26] = 4

10

= 000100

2

(105)

ligne type R LW SW BEQ

Entrées

F31 0 1 1 0

F30 0 0 0 0

F29 0 0 0 0

F28 0 0 1 1

F27 0 1 1 0

F26 0 1 1 0

Sorties

RegDest 1 0 X

ALUSrc 0 1 1

MemtoReg 0 1 X

RegWrite 1 1 0

MemRead 0 1 0

MemWrite 0 0 1

Branch 0 0 0

ALUOP

1

1 0 0

ALUOP 0 0 0

Instructions de type BEQ (F[31:26] = 4

10

= 000100

2

Références

Documents relatifs

Pour dépiler la lettre du haut de la pile, on effectue la division euclidienne par |Γ| du premier compteur, en décrémentant |Γ| par |Γ| le premier compteur tout en incrémentant par

Vérifier que A est inversible et calculer son

Montrons que (s n ) est géométrique et déterminons son terme général.. Montrons que (d n ) est constante et déterminons

2- En utilisant le principe de conservation de l´energie, déduire l´équation différentielle du mou- vement

Un éléctron 1 animé d´une vitesse de 10 6 ms − 1 entre dans une région de champ magnétique suivant une direction perpendiculaire à celui-ci. Trouver l´intensité du

Un élève consulte Internet pour récolter des informations sur les ondes radio. Il lit : “Lorsqu’une onde rencontre un obstacle de grande dimension par-rapport à la longueur

pourra admettre cette question pour faire la suite. Jantzen, Representations of algebraic groups, Part

Enfin, ceux avec (**) peuvent être considérés comme des compléments de cours et sont réservés aux étudiant(e)s les plus