Vous êtes sur la page 1sur 17

Exercices : implémentation

PIPELINE avec aléas


Correction
Chemin de données de Pipeline avec unité de Renvoie
(Forward)
IF/ID ID/EX EX/MEM MEM/WB

PC
0
1
2
ForwardA
Registers
Instruction ALU
memory 0
1 Data
2 memory

1
ForwardB
Rt 0
0
Rd
1 EX/MEM.RegisterRd
Rs ID/EX.
RegisterRt

Forwarding
EX/MEM.RegWrite
Unit MEM/WB.RegisterRd
ID/EX.
MEM/WB.RegWrite
Unité de Renvoie (Forward) : RegisterRs
Exercice 1
On donne le fragment de code
suivant présentant un problème de
dependence de données qui sera
résolu par renvoi
sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
Schéma de déroulement : Problème de dépendance
Cycle d’horloge
1 2 3 4 5 6 7 8 9

IM Reg DM Reg
sub $2, $1, $3

IM Reg DM Reg
and $12, $2, $5

IM Reg DM Reg
or $13, $6, $2

IM Reg DM Reg
add $14, $2, $2

IM Reg DM Reg
sw $15, 100($2)
• Compléter le schéma de déroulement pour résoudre le problème de dépendance
en se basant sur la description suivante :Étant donné que les registres de pipeline
contiennent déjà le résultat ALU, nous pourrions simplement transmettre cette
valeur aux instructions suivantes, pour éviter les risques liés aux données.
1. Dans le cycle d'horloge 4, l'instruction AND peut obtenir la valeur $ 1 - $ 3 du
registre de pipeline EX / MEM utilisé par sub.
2. Ensuite, au cycle 5, l'OR peut obtenir le même résultat à partir du registre de
pipeline MEM / WB utilisé par SUB.
Compléter les champs manquants en couleur ROUGE à partir de 3 Cycle d’horloge
afin de résoudre le problème dépendance:

• Supposons que chaque registre contient initialement son numéro plus 100.
• Après la première instruction, $2 devrait contenir -2 = 101 - 103.
• Les autres instructions doivent toutes utiliser -2 comme l'un de leurs opérandes.
• Supposons qu'aucun transfert n'est nécessaire, sauf pour le registre $2.
• Nous allons sauter les deux premiers cycles, car ils sont les mêmes qu'avant.
• Nos diagrammes de pipeline suivront certaines conventions:
1. Un X indique des valeurs qui ne sont pas importantes, comme le champ
constant d'une instruction de type R.
2. Points d'interrogation ??? indiquent des valeurs que nous ne connaissons pas,
résultant généralement d'instructions avant et après celles de notre exemple.
IF: or $13, $6, $2 ID: and $12, $2, $5
cycle 3EX: sub $2, $1, $3

IF/ID ID/EX EX/MEM MEM/WB

PC
101
2 0
102 101
1
2
5
0
Registers
Instruction ALU
103
memory X 105 0
103
1 -2
Data
X 2 memory

1
0
5 (Rt) 0
0 2
12 (Rd) 2
1 EX/MEM.RegisterRd
2 (Rs) ID/EX.
RegisterRt

Forwarding
3
Unit
ID/EX. 1 MEM/WB.RegisterRd
RegisterRs

1/29/21 Forwarding 7
cycle 4:renvoie $2 de EX/MEM
IF: add $14, $2, $2 ID: or $13, $6, $2 EX: and $12, $2, $5 MEM: sub $2, $1, $3

IF/ID ID/EX EX/MEM MEM/WB

PC
102
6 0
106 -2
1
2
2
2
Registers
Instruction ALU -2
105
memory X 102 0
105
1 104
Data
X 2 memory

1
0
2 (Rt) 0
0 12
13 (Rd) 12
1 EX/MEM.RegisterRd
6 (Rs) ID/EX.
RegisterRt
2
Forwarding
5
Unit
2 MEM/WB.RegisterRd
ID/EX.
RegisterRs
-2

1/29/21 Forwarding 8
cycle 5: Renvoie $2 de MEM/WB
IF: sw $15, 100($2) ID: add $14, $2, $2 EX: or $13, $6, $2 MEM: and $12, $2, $5 WB: sub
$2, $1, $3

IF/ID ID/EX EX/MEM MEM/WB

PC
106
2 0
-2 106
1
2
2
0
Registers
Instruction ALU 104
102
memory 2 -2 0
-2
1 -2
Data
-2 2
-2 memory
X
1
-2
1
2 (Rt) 0
0 13
14 (Rd) 13
1 EX/MEM.RegisterRd 2
2 (Rs) ID/EX.
RegisterRt
12
Forwarding
2 Unit
ID/EX. 6 2 MEM/WB.RegisterRd
RegisterRs
104

-2

1/29/21 Forwarding 9
Exercice2
• 1/ Affichez ou répertoriez toutes les dépendances dans le fragment de code suivant. Assurez-vous d'indiquer clairement
quelles instructions et quels registres sont impliqués dans chaque dépendance.

Beaucoup de dépendances ici! Le registre $8 est lu et écrit plusieurs fois, comme montré avec les cercles bleuset des flèches. Il
y a aussidépendance entre le troisième et quatrième instructions impliquant $6.
Notez que $8 est écrit en le premier et le deuxième instructions.
2/ Le chemin de données en pipeline sur la page suivante montre le cinquième cycle d'exécution de ce programme. Remplissez
le bon des valeurs de chemin de données pour les quinze symboles de point d'interrogation? dans le diagramme. Il existe une
? au stade IF, trois au stade ID, huit en EX, deux en MEM et un en WB.
• Supposons que les registres contiennent initialement leur numéro plus 100: $6 en contient 106, $8 en contiennent 108, etc.
• Écrivez vos valeurs directement sur le diagramme, mais veuillez écrire clairement.
• Utilisez la notation décimale. Vous pouvez écrire «X» pour toutes les valeurs qui ne peuvent pas être déterminées.
• Étant donné que le chemin de données sur la page suivante
montre les unités de renvoie et de danger comme discuté en
classe, nous pouvons supposer que les dépendances entre les trois
premières instructions seront résolues correctement. Par exemple,
votre réponse doit indiquer la valeur correcte de $8 transmise de
instruction sub de l'étape MEM au lw dans l'étape EX.
• La suspension est nécessaire entre les troisième et quatrième
instructions; l'unité de danger doit détecter cette situation et elle
doit émettre les signaux de commande appropriés pour forcer une
suspension. Notez que le banc de registre de l’étage ID génère une
valeur incorrecte pour $6 et une nouvelle valeur pour $8.
Réponses
Exercice 3
Considérons la suite des instructions suivantes :
 
  10 sub $2, $1, $3
14 lw $5, 0($2)
18 add $1, $3, $5
22 or $2, $7, $8
26 bne $1, $4, Fin
30 and $5, $2, $3
34 addi $1, $8, 15
Fin : 38 ori $1, $2, $3
 
Trouvez les aléas dans cette suite pour la machine pipeline à 5 étages du cours et donner les
solutions possibles pour ces aléas avec un schéma du déroulement .
Exercice 4
Calculer le temps d’exécution d’un programme composé de 5 instructions de
chargements, 10 instructions de rangements, 25 instructions de type-R et 10
instructions de branchement conditionnels pour les trois machines
mono_cycles, multi_cycles et pipeline. On dispose des informations suivantes ;
 Un temps de cycle (période) d’horloge pour le mono-cycle égale à 10ns
Un temps de cycle (période) d’horloge pour le multi-cycle et pour le pipeline égale
2,2ns.
 
On considère pour la machine pipelinée les conditions suivantes :
Les Aléas de structures sont résolus.
Les Aléas de contrôle sont résolus par prédiction (on suppose que 40% des
prédictions sont correctes).
Le programme ne contient pas d’autre type d’aléas.
Réponses

Vous aimerez peut-être aussi