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-