TD6
CPU (2)
2
Lignes de contrôle d'une ALU
+
a
kless
kCarryIn
CarryOut Op
0
1 2
Result b
Inverta
Invert0 1
0 1
M
aM
bM
s3 b
k+ a
31b
31CarryIn
CarryOut Op
0 1
2 Result
b
Inverta
Invert0 1
0 1
3 less
Set
2
2
4
a
0b
0a
1b
1a
2b
2a
3a
invb
neg CarryInCarryOut
b
3r
3r
2r
1r
00 0 0
Set
Op
zero
r
3r
2r
1r
0a
0b
0a
1b
1a
2b
2a
3a
invb
neg CarryInCarryOut b
30 0 0
Set
ligne de contrôle Zero ?
Op6
a
0b
0a
1b
1a
2b
2a
3a
invb
neg CarryInCarryOut
b
3r
3r
2r
1r
00 0 0
zero
Set
Op
Overflow
ligne de contrôle Overflow ?
a
invb
invCarryIn Op
1Op
0AND
OR
ADD
SUB
SLT
8
a
invb
invCarryIn Op
1Op
0AND 0 0 X 0 0
OR
ADD
SUB
SLT
a
invb
invCarryIn Op
1Op
0AND 0 0 X 0 0
OR 0 0 X 0 1
ADD
SUB
SLT
10
a
invb
invCarryIn Op
1Op
0AND 0 0 X 0 0
OR 0 0 X 0 1
ADD 0 0 0 1 0
SUB
SLT
a
invb
invCarryIn Op
1Op
0AND 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
a
invb
invCarryIn Op
1Op
0AND 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
invb
invOp
1Op
0AND 0 0 0 0
OR 0 0 0 1
ADD 0 0 1 0
SUB 0 1 1 0
SLT 0 1 1 1
Contrôle d'une ALU
14
a
b
ALU operation
CarryOut
Zero Result Overflow
32
32
32
4
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
●
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
●
instructions du processeur qui demandent l'utilisation de l'ALU
Type Code
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
●
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
●
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
●
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
●
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
●
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
●
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
●
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
●
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
●
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
●
codes commandes ALU ?
●
addition
Type Code fonction Op
3-0accè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
●
codes commandes ALU
●
addition
Type Code fonction Op
3-0accè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
●
codes commandes ALU
●
soustraction
Type Code fonction Op
3-0accè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
●
codes commandes ALU
●
soustraction
Type Code fonction Op
3-0accè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
●
codes commandes ALU
●
and, or, slt
Type Code fonction Op
3-0accè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
●
codes commandes ALU
●
and, or, slt
Type Code fonction Op
3-0accè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
●
champ de fonction et ALUOp pour obtenir les 4 bits de Op ?
Type Code fonction Op
3-0ALUOp 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
●
champ de fonction et ALUOp pour obtenir les 4 bits de Op
Type Code fonction Op
3-0ALUOp 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
●
champ de fonction et ALUOp pour obtenir les 4 bits de Op
Type Code fonction Op
3-0ALUOp 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
●
champ de fonction et ALUOp pour obtenir les 4 bits de Op
Type Code fonction Op
3-0ALUOp 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
0●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération)
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
remplir la table de vérité pour les opérations de l'ALU
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
simplifications ?
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
simplifications
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
simplifications
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
simplifications
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
simplifications
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
simplifications
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
simplifications
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
●
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
●
Op 2 est vrai pour
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
0X 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
●
Op 2 est vrai pour
ALUOp
1ALUOp
0F5 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
●
Op 2 est vrai pour
ALUOp
1ALUOp
0F5 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
●
Op 2 est vrai pour
ALUOp
1ALUOp
0F5 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
●
Op 2 est vrai pour
ALUOp
1ALUOp
0F5 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
1ALUOp
0F5 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
●
Op 2 est vrai pour
ALUOp
1ALUOp
0F5 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
1ALUOp
0F5 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
●
Op 2 est vrai pour
ALUOp
1ALUOp
0F5 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
1ALUOp
0F5 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
●
Op 2 est vrai pour
ALUOp
1ALUOp
0F5 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
●
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
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
00 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
1ALUOp
0F5 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
●
Op 0 est vrai pour
ALUOp Champ de fonction Opération
ALUOp
1ALUOp
0F5 F4 F3 F2 F1 F0 Op
3Op
2Op
1Op
01 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
1ALUOp
0F5 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
●
○ ALUOp0
ALUOp1
F2 F1 F0
Op2
Op1 Op0
●
F3 ○
Unité de contrôle de la CPU
74
●
objectif :
●
déterminer les valeurs que doivent prendre les différentes
lignes de commande
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
ligne type R LW SW BEQ
Entrées
F31 F30 F29 F28 F27 F26
Sorties
RegDest
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALUOP
1ALUOP
0ligne type R LW SW BEQ
Entrées
F31 F30 F29 F28 F27 F26
Sorties
RegDest ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOP
1ALUOP
Instructions de type R (F[31:26] = 0
10= 000000
278
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
1ALUOP
0Instructions de type R (F[31:26] = 0
10= 000000
2Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
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
11
ALUOP 0
Instructions de type R (F[31:26] = 0
10= 000000
286
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
11
ALUOP
00
Instructions de type LW (F[31:26] = 35
10= 100011
2ligne 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
11
ALUOP 0
Instructions de type LW (F[31:26] = 35
10= 100011
288
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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)
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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é
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
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
11 0
ALUOP
00 0
Instructions de type LW (F[31:26] = 35
10= 100011
2ligne 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
11 0
ALUOP 0 0
Instructions de type SW (F[31:26] = 43
10= 100111
296
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
11 0
ALUOP
00 0
Instructions de type SW (F[31:26] = 43
10= 100111
2Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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é
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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
Registres
Registre lecture #1 Registre lecture #2
Registre écriture Données
écriture
Données lecture #2 Données lecture #1
Ext.
bit de signe
32ALU
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]