Architecture des processeurs et optimisation
Janvier 2013 Documents autorisés - Durée 2h
utiliser impérativement les feuilles quadrillées fournies pour les schémas
Une réponse non justifiée sera considérée comme fausse
On souhaite étudier et comparer la performance d'exécution de la fonction strcpy sur différentes
plateformes matérielles. Toutes ces plateformes sont équipées de la réalisation super-scalaire à 2
pipelines de l’architecture Mips-32 étudiée en cours. Cette réalisation est appelée SS2.
La fonction strcpy copie une chaîne de caractères source dans une autre chaîne de caractères
destination.
char *strcpy (char *dst, char *src)
{
int i = 0;
while (src [i] != ‘\0’)
{
dst [i] = src [i];
i ++;
}
return dst;
}
Le code de la boucle principale de la fonction strcpy en assembleur Mips-32 pipeline est le
suivant. Conformément aux conventions utilisées par le compilateur Gcc, on suppose qu'à l'entrée
de la boucle :
•le registre R4 pointe sur la chaîne dst
•le registre R5 pointe sur la chaîne src
_while : Lb r6 , 0 (r5 )
Sb r6 , 0 (r4 )
Addiu r4 , r4 , 1
Addiu r5 , r5 , 1
Bne r6 , r0 , _while
Nop
Dans un premier temps, on considère que le système mémoire est parfait (tous les accès mémoire
s'effectuent en 1 cycle).
1- En supposant que l’étiquette _while se trouve sur une adresse alignée et que le buffer
d’instructions est vide au début de la boucle, montrer à l’aide d’un schéma simplifié,
l’exécution de la boucle sur la réalisation SS2. Calculer le nombre moyen de cycles par
itération. Calculer le CPI et le CPI-utile.
2- Pour la réalisation SS2, optimiser ce code en modifiant l’ordre des instructions de manière à
éviter au maximum les cycles perdus. Montrer à l’aide d’un schéma simplifié, l’exécution de
la boucle optimisée sur la réalisation SS2. Calculer le nombre moyen de cycles par itération.
Calculer le CPI et le CPI-utile.
3- Pour la réalisation SS2, optimiser ce code utilisant la technique Software pipeline. Indiquer
clairement le nombre d’étages et les instructions comprises dans chaque étage. Montrer à
l’aide d’un schéma simplifié, l’exécution de la boucle optimisée sur la réalisation SS2.
Calculer le nombre moyen de cycles par itération. Calculer le CPI et le CPI-utile.
4- Expliquer pourquoi ne peut-on pas utiliser le déroulement de boucle pour optimiser cette
boucle.