Académique Documents
Professionnel Documents
Culture Documents
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 »
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
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
Add
P
C 4
RegWrite
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
Add
P
C 4
RegWrite
RegDst
sign
extend
I[15-0]
31 26 25 21 20 16 15 11 10 6 5 0
RegDst
sign
extend
I[15-0]
31 26 25 21 20 16 15 11 10 6 5 0
RegDst
sign
extend
I[15-0]
31 26 25 21 20 16 15
0
Read
? MemWrite
Read
address
Read data
MemToReg
RegDst
sign
extend
I[15-0]
15
+
31 26 25 21 20 16 0
0
m
Add u
P x
C 4 Add 1
RegDst
sign
extend
I[15-0]
Chemin des instructions régulières (R-type)
0
m
Add u
P x
C 4 Add 1
RegDst
sign
extend
I[15-0]
Chemin de l’instruction « addi »
0
m
Add u
P x
C 4 Add 1
RegDst
sign
extend
I[15-0]
Chemin de l’instruction « lw »
0
m
Add u
P x
C 4 Add 1
RegDst
sign
extend
I[15-0]
Chemin de l’instruction « sw »
0
m
Add u
P x
C 4 Add 1
RegDst
sign
extend
I[15-0]
Chemin de l’instruction « beq » cas $rs != $rt
0
m
Add u
P x
C 4 Add 1
RegDst
sign
extend
I[15-0]
Chemin de l’instruction « beq » cas $rs == $rt
0
m
Add u
P x
C 4 Add 1
RegDst
sign
extend
I[15-0]
Signaux de contrôle et de commande
0
m
Add u
P x
C 4 Add 1
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 » ).
RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
Recherche de l’instruction ( Instruction Fetch – IF )
RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
Décodage de l’instruction ( Instruction Decode – ID )
RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
Exécution de l’instruction ( EXecute – EX )
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 )
RegDst
sign
extend
I[15-0]
Etapes d’exécution d’une instruction MIPS
Sauvegarde dans un registre ( Write back data – WB )
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)
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