0% ont trouvé ce document utile (0 vote)
177 vues32 pages

Architecture et Instructions MIPS

Transféré par

bouchra allalou
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
177 vues32 pages

Architecture et Instructions MIPS

Transféré par

bouchra allalou
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

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