Telechargé par studing 2nd

TP 2

publicité
ISSATSousse
Architecture des ordinateurs
Filière : 2éme Année Prépa
TP2 :
Pipeline et Ordonnancement
Rappel du cours :
Il existe des cas où la performance d’un processeur pipeliné peut être dégradée ; on parle des
aléas :
 Exemple d’Aléa :
Il se produit lorsqu’une instruction produit un résultat, et qu’une instruction suivante utilise ce
résultat avant qu’il ait pu être écrit dans le banc de registre.
 Lorsqu’un aléa se produit, cela signifie qu’une instruction ne peut continuer à
progresser dans le pipeline. Pendant un ou plusieurs cycles, l’instruction va rester bloquée
dans un étage de pipeline, mais les instructions situées plus en avant pourront continuer à
s’exécuter jusqu’à ce que l’aléa ait disparu.
Travail demandé
Exercice 1 :
1. Ecrire un code assembleur en DLX qui permet de réaliser les fonctions suivantes :
a :=
d :=
e :=
Avec
b + c;
a - f;
g + h;
a=0, b=5, c=2, d=0, e=0, f=4, g=5, h=9 initialement
2. Donner le nombre de cycles total.
3. Donner le nombre d’instructions total.
4. Reprendre l’ordonnancement du programme en essayant de minimiser le temps
d’exécution et éviter les dépendances de données.
Exercice 2 :
1. Ecrire un code assembleur en DLX qui permet de réaliser la fonction suivante :
-5-
ISSATSousse
Architecture des ordinateurs
for (i=10; i>0; i=i-1)
{S= S + x(i);}
2. Donner le nombre de cycles total.
3. Donner le nombre d’instructions total.
4. Représenter l’évolution du pipeline du code (faire un tableau).
Exercice 3 :
L’algorithme suivant permet d’effectuer une opération de multiplication entre deux matrices
carrées d’ordre 3.
X
Somme=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
somme=somme+a[i][j]*b[j][i];
c[i][j]=somme;
}
1. Traduire cet algorithme en un programme en assembleur DLX.
2. Déterminer le nombre de cycles de ce programme.
3. Afin d’optimiser ce code, reprendre l’ordonnancement du programme en essayant de
minimiser les aléas provoqués par les dépendances.
-6-
Téléchargement