INF4170 -- Architecture des ordinateurs
Examen #1
(6 juin 1996)
Durée: 17:30 - 19:00 Documentation autorisée: Toute documentation personnelle.
Nom:
Code permanent:
1. Instructions MIPS (10 pts)
Soit l'instruction C suivante, où y ainsi que les éléments de A sont des entiers (4 octets):
A[11] = A[10] + 8*y;
Supposons que le registre $t0 contienne déjà la valeur de y et que l'adresse de base du tableau A soit conservée dans le registre $t1 ($t1=&A[0]). Donnez une suite d'instructions machines MIPS permettant de réaliser l'instruction C indiquée.
Indice:
. De plus, vous pouvez utiliser et modifier les
registres $t0, $t1, $t2, etc.
2. Encodage MIPS (10 pts)
Dans le code machine MIPS qui suit, complétez l'encodage des instructions (tel qu'effectué dans la vraie machine MIPS):
3. Instructions style VAX en MIPS (10 pts)
Pour chacune des instructions (style VAX) présentée plus bas, donnez une séquence d'instructions machines MIPS ayant l'effet indiqué par le commentaire. Si vous avez besoin de registres temporaires, utilisez $1, $2, etc.
4. Performances et CPI (15 pts)
On désire comparer deux machines ayant les caractéristiques suivantes:
Soit
le nombre d'instructions exécutées par le programme P
sur la machine
.
[5]a) En utilisant les informations précédentes, donnez
la formule donnant le temps d'exécution du programme P sur
la machine
:
[5]b) Toujours en utilisant les informations
précédents, donnez la formule donnant le temps d'exécution du
programme P sur la machine
:
[5]c) Quel est le CPI moyen de
pour le programme P
si son exécution a permis de déterminer que la machine
était, pour ce programme, 2 fois plus rapide que
?
5. Performances (15 pts)
Soit une machine M ayant une fréquence d'horloge de 10 MHz. Cette machine comporte trois (3) classes d'instructions ayant les CPIs suivants:
On désire comparer le code produit par deux compilateurs. L'exécution d'un ensemble de programmes a permis de déterminer, pour chacun des compilateurs, la fréquence moyenne d'exécution de chacune des classes d'instructions:
On a aussi déterminé que le nombre d'instructions exécutées par les programmes produits par le compilateur 2 était supérieur de 10% au nombre d'instructions exécutées par les programmes produits par le compilateur 1.
Note: ``x supérieur de 10% à y'' signifie ``x = 1.10 * y'', ce qui est différent de ``y = 0.90 * x''.
[5]a) Quel est le CPI moyen du code produit par chacun des compilateurs?
[5]b) Quel compilateur produit le code ayant la mesure MIPS la plus élevée et de combien?
Mesure MIPS la plus élevée et de combien =
[5]c) Quel compilateur produit le code le plus performant (en terme de temps d'exécution) et de combien?
Plus performant et de combien =
6. Vrai ou Faux? (10 pts)