Vous êtes sur la page 1sur 32

Ce que nous allons voir aujourd’hui

 Chemin de données
P&H : 4.1, 4.3-4.8
CU
REGISTRES BUS
b1 00 d’adresses
Décodeur
17 c2
Instruction
01 45

Contrôleur Mémoire
adresse Instruction 23 00
. . r2 , r5 a4
MAR
. . BUS de
. . 0xf408 données
IR
0xf408 add r2 , r5, M[0xa4]
0xf409 jpz 0xf400 PC 1 add
0xf40A lw r0, M[0xAF]
. .
. . MDR
. . P BUS de
5C
0xf409 commandes
ALU
Contenu de la mémoire
ACC
Commandes
ECRIRE
LIRE
de BUS C-BUS
FLAGS
Implémentation d’instructions MIPS
Exemple d’implémentation des instructions MIPS suivantes :
 Arithmétique : add addi sub and or slt
 Transfert de données : lw sw
 Branchement : beq
Nous allons concevoir une implémentation en cycle unique. C.-à-d. Le
temps d’exécution de chacune de nos instructions est FIXE et le même
pour tous.
Ex : si l’instruction add mets 8 nanosecondes (ns) pour s’exécuter
(notre cycle) alors cela va de soit avec “addi”, “sub”, …
Unités de « Mémoire »
Read Instruction
 Architecture Harvard (mémoire distinctes pour les address [31-0]
instructions et les données)
Instruction
 Ces mémoires sont 32-bits de large (bus de donnée de 32 memory
bits) afin qu’on puisse lire les instructions et/ou les mots de
donnée en une seule opération.
 Les lignes bordeaux représentent les signaux de contrôle. MemWrite
MemRead et MemWrite sont mis à « 1 » si l’unité « Data
memory » doit être lue ou écrite respectivement, ils sont Read Read
toujours à « 0 » autrement. address data
 Pour maintenant, on suppose qu’on ne peut pas écrire dans Write
l’unité « Instruction memory ». On va prétendre que le address
Data
programme est déjà présent et ne change pas au cours de Write
data memory
son exécution.
MemRead
Récupération d’instructions « fetching »

 Le processeur est dans une boucle infinie. Il récupère des


instructions de la mémoire et les exécute. Add

4
P
 Le registre « Program Counter (PC) » ou « Compteur C
Ordinal » en français contient l'adresse de l'instruction
en cours.
Read Instruction
address [31-0]
 Les instructions du MIPS R3000 ont toutes une taille de
32 bits (C.-à-d. quatre octets). Le registre PC doit donc Instruction
memory
être incrémenter de « 4 » pour lire la prochaine
instruction dans l’ordre.
Unités « UAL » et « Banc de registres »
RegWrite
 Toute instruction régulière (R-type) DOIT accéder aux
5 Read Read
Registres et à l’Unité Arithmétique et Logique (UAL).
register 1 data 1
 Le « Banc de Registres » du MIPS R3000 contient 32 5 Read Read
registres, donc cinq bits suffisent pour spécifier un register 2 data 2
5
registre donné. Write
register
 On peut LIRE deux registres en MÊME temps. Write
Registers
data
 RegWrite est mis à « 1 » si un registre doit être
modifié. ALUOp Fonction
000 and
 Voici une simple UAL avec cinq opérations, 001 or
sélectionnées par un signal de contrôle sur 010 add
UAL
trois bits (ALUOp). 110 sub
111 slt
ALUOp
Format d’instructions « R – type »
Opérations
Opérations « registre
« registre –– registre »
registre »
 Manipulation
Manipulation de
de trois
trois registres
registres (opérations
(opérations arithmétiques
arithmétiques et
et logiques)
logiques)

31 25 20 15 10 6 5 0
26 21 16 11

R – type (Regular) : opcode rs rt rd sh func

Exemples
Exemples: :
add
add$18,
$18,$8,
$8,$17
$17 ##$18
$18:=:=$8
$8 ++$17
$1710010
000000 01000 10001 00000 100000

and
and$12,
$12,$10,
$10,$11
$11 ##$12
$12:=:=$10
$10 and
and$11
$11
000000 01010 01011 01100 00000 100100
31 26 25 21 20 16 15 11 10 6 5 0

R – type opcode rs rt rd sh func

Add
P
C 4
RegWrite

Read Instruction I[25-21] Read Read


address [31-0] register 1 data 1
I[20-16] Read
register 2 UAL
Instruction
I[15-11] Write Read
memory register data 2
Write
data
Registers ALUOp
Format d’instructions « I – type »
Opérations
Opérations « registre
« registre –– immédiat »
immédiat »
 Manipulation
Manipulation de
de constantes,
constantes, transfert
transfert d’informations,
d’informations, branchements
branchements conditionnels
conditionnels

31 25 20 15 0
26 21 16
0000 0000 0000 0000 0000 0000 0001 00002 = 1610
I – type (Immediate) : opcode rs rt Valeur immédiate

Exemples
Exemples
0000 : : 1111 1111 1111 11002 = 6553210
0000 0000 0000
sw
sw $a0,
$a0, 16($sp)
16($sp) ##mem
mem 4[16
4 [16 ++($sp)]
($sp)]:=:=$a0
$a0
1111 1111 1111 1111 1111 1111 1111
101011 11002 = -400100
11101 10 0000 0000 0001 0000

addi
addi$11,
$11,$10,
$10,-4-4 ##$11
$11:=:=$10
$10 - -44
001000 01010 01011 1111 1111 1111 1100
31 26 25 21 20 16 15 11 10 6 5 0

R – type opcode rs rt rd sh func

Add
P
C 4
RegWrite

Read Instruction I[25-21] Read Read


address [31-0] register 1 data 1
I[20-16] Read
register 2 UAL
Instruction
I[15-11] Write Read
memory register data 2
Write
data
Registers ALUOp
31 26 25 21 20 16 15 11 10 6 5 0

R – type opcode rs rt rd sh func

addi 001000 rs rt Valeur immédiate


Add
P
C 4
RegWrite

Read Instruction I[25-21] Read Read


address [31-0] register 1 data 1
I[20-16] Read ALUSrc
register 2 UAL
Instruction 0
Write Read
memory m
register data 2 1
u m
x Write u
I[15-11] 1 Registers x ALUOp
data
0

RegDst
sign
extend
I[15-0]
31 26 25 21 20 16 15 11 10 6 5 0

R – type opcode rs rt rd sh func

addi 001000 rs rt Valeur immédiate


Add
P
C lw 100011 rs rt Valeur immédiate
4
RegWrite MemToReg

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] address 1
register 1 data 1
m
I[20-16] Read ALUSrc u
register 2 x
Instruction UAL 0
0
Write Read Data
memory m 1
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
31 26 25 21 20 16 15 11 10 6 5 0

R – type opcode rs rt rd sh func

addi 001000 rs rt Valeur immédiate


Add
P
C lw / sw 10X011 rs rt Valeur immédiate
4
RegWrite MemWrite MemToReg

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
31 26 25 21 20 16 15
0

beq 000100 rs rt offset

if ( ($rs) == ($rt) ) PC = PC + 4 + ( offset << 2 )


Add
P
C 4

Read Instruction I[25-21] Read


RegWrite

Read
? MemWrite

Read
address
Read data
MemToReg

address [31-0] register 1 data 1 1


m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
15

+
31 26 25 21 20 16 0

beq 000100 rs rt offset

0
m
Add u
P x
C 4 Add 1

RegWrite MemWrite MemToReg


<< 2 PCSrc

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] zero address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Chemin des instructions régulières (R-type)
0
m
Add u
P x
C 4 Add 1

RegWrite MemWrite MemToReg


<< 2 PCSrc

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] zero address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Chemin de l’instruction « addi »
0
m
Add u
P x
C 4 Add 1

RegWrite MemWrite MemToReg


<< 2 PCSrc

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] zero address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Chemin de l’instruction « lw »
0
m
Add u
P x
C 4 Add 1

RegWrite MemWrite MemToReg


<< 2 PCSrc

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] zero address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Chemin de l’instruction « sw »
0
m
Add u
P x
C 4 Add 1

RegWrite MemWrite MemToReg


<< 2 PCSrc

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] zero address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Chemin de l’instruction « beq » cas $rs != $rt
0
m
Add u
P x
C 4 Add 1

RegWrite MemWrite MemToReg


<< 2 PCSrc

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] zero address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Chemin de l’instruction « beq » cas $rs == $rt
0
m
Add u
P x
C 4 Add 1

RegWrite MemWrite MemToReg


<< 2 PCSrc

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] zero address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Signaux de contrôle et de commande
0
m
Add u
P x
C 4 Add 1

RegWrite MemWrite MemToReg


<< 2 PCSrc

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] zero address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Signaux de contrôle et de commande
 sw et beq sont les seules instructions dans notre exemple d’instructions qui ne modifient pas le
contenu des registres.
 Seules les instructions lw, sw et addi utilisent le champ « immédiat ».
 ALUOp est fonction du champs « func » pour les instructions régulières (R-type).
 Le signal de contrôle PCSrc (non listé ici) est mis à « 1 » si l’instruction exécutée est beq ET si le
flag « zero » de l’unité Arithmétique et Logique est « vrai ».
Instruction RegDst RegWrite ALUSrc ALUOp MemWrite MemRead MemToReg
add 1 1 1 010 0 0 0
sub 1 1 1 110 0 0 0
and 1 1 1 000 0 0 0
or 1 1 1 001 0 0 0
slt 1 1 1 111 0 0 0
addi 1 1 0 010 0 0 0
lw 0 1 0 010 0 1 1
sw X 0 0 010 1 0 X
beq X 0 1 110 0 0 X
Génération des signaux de contrôle

isBEQ PCSrc
Read Instruction I[31-26]
Opcode
address [31-0] RegDst
I[5-0]
Func RegWrite
Instruction zero
memory ALUSrc
Décodeur
d’instructions MemWrite UAL
MemRead
MemToReg
3
ALUOp
Etapes d’exécution d’une instruction MIPS
Exemple pour l’instruction « lw » ( par soucis de clarté, on va ignorer dans cet exemple
le bloc de circuit lié à l’incrémentation du registre « PC » ).

RegWrite MemWrite MemToReg

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
Recherche de l’instruction ( Instruction Fetch – IF )

RegWrite MemWrite MemToReg

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
Décodage de l’instruction ( Instruction Decode – ID )

RegWrite MemWrite MemToReg

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
Exécution de l’instruction ( EXecute – EX )

RegWrite MemWrite MemToReg

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
Accès à la mémoire des données ( Data Memory Access – MEM )

RegWrite MemWrite MemToReg

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
Sauvegarde dans un registre ( Write back data – WB )

RegWrite MemWrite MemToReg

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
Recherche (IF) Décodage (ID) Exécution (EX) Accès Mem. (MEM) (WB)

RegWrite MemWrite MemToReg

Read Instruction I[25-21] Read Read


Read Read data
address [31-0] address 1
register 1 data 1
m
I[20-16] Read ALUSrc Write u
register 2 address x
Instruction UAL 0
0
Write Read Write Data
memory m 1 data
u register data 2
m memory
x Write u
I[15-11] 1 Registers x ALUOp
data MemRead
0

RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
 Pas toutes les étapes sont Instruction Étapes requises
nécessaires/obligatoires pour
beq IF ID EX
exécuter chaque instruction
MIPS R-type IF ID EX WB

addi IF ID EX WB
 A droite, un tableau illustrant
les étapes requises pour notre sw IF ID EX MEM

exemple d’instructions lw IF ID EX MEM WB

Vous aimerez peut-être aussi