INPG/ENSIMAG — 3`eme ann´ee SLE — CEAMC - examen 9 F´evrier 2016
2 D´eroulement de boucles et ordonnancement d’instruc-
tions
On dispose d’un processeur MIPS permettant d’ex´ecuter une instruction enti`ere par
cycle, auquel on adjoint un op´erateur d’addition flottante pipelin´ee acceptant une nou-
velle addition `a chaque cycle mais d’une latence de 2 cycles (2 stalls entre l’instruction
qui produit et celle qui consomme) et un op´erateur de multiplication flottante pipelin´ee
acceptant une nouvelle multiplication `a chaque cycle mais d’une latence de 4 cycles.
Par ailleurs, on rappelle que le registre r´esultat d’un chargement `a partir de la m´emoire
(entier, LD, ou flottant, LD.D) n’est pas disponible dans le cycle suivant, mais dans le
cycle d’apr`es (1 stall entre l’instruction de chargement et l’instruction qui consomme le
registre), et que l’instruction qui suit le branchement est ex´ecut´ee inconditionnellement.
Cette instruction doit ˆetre consid´er´ee comme un stall si elle est un NOP.
Soit le code :
for (i = n; i > 0; i--) y[i] = y[i] + a*x[i];
Que l’on peut traduire en assembleur MIPS par
L.D F0, 0(R0) % charge a, constant sur la boucle
loop: L.D F1, 0(R1) % charge y[i]
L.D F2, 0(R2) % charge x[i]
MUL.D F2, F2, F0 % calcul de a * x[i]
ADD.D F1, F1, F2 % somme `a y[i]
ADDUI R1, R1, 8 % passe `a l’y suivant
ADDUI R2, R2, 8 % passe `a l’x suivant
ADDUI R3, R3, -1 % d´ecr´emente le compteur
S.D F1 % sauve le resultat
BNEZ R3, loop % it`ere si pas au bout
Q1 Indiquer les stalls dans le code sans le modifier et en d´eduire le CPI moyen des
instructions de cette boucle (le NOP ´etant consid´er´e comme un stall).
Q2 On d´ecide de r´eordonnancer les instructions sans modifier le comportement afin de
minimiser les stalls. Proposez une nouvelle version du programme en mettant toujours
les stalls en ´evidence et donnez le CPI.
Q3 On d´esire d´erouler cette boucle 2 fois afin de gagner encore en performance, l’hy-
poth`ese ´etant qu’elle se fait un nombre pair de fois. En repartant de la version initiale
du programme donn´ee dans l’´enonc´e (et non de votre version optimis´ee en Q2), proposez
une nouvelle version du programme en mettant toujours les stalls en ´evidence et donnez
le CPI.
Q4 Finalement, on se propose de r´eordonner cette version d´eroul´ee (il ´etait temps),
sachant que les autres registres entiers et flottants sont disponibles `a loisir. Proposez une
nouvelle version du programme en mettant toujours les stalls en ´evidence et donnez le
CPI.
3 R´eseau sur puce
Cet exercice porte sur le r´eseau dont la topologie est donn´ee `a la figure 1. Les hypo-
th`eses sont les suivantes : un paquet qui va d’un routeur `a l’un de ses voisins (directement
connect´e par un lien) met 1 cycle ; les connexions entre les nœuds (liens) sont des canaux
bidirectionnels, chaque canal poss´edant une bande passante not´ee b.
2015-2016 page: 4/5