Date: Mercredi, 15 janvier 1995.
Durée: 1 1/2 heures.
Toute documentation permise (sauf la copie du voisin!).
#1) Dans le code MIPS qui suit, complétez l'encodage des instructions bne, add, beq et sw.
lw $18, 4000($19) 35 19 18 4000
bne $18, $21, Sortie
addi $9, $9, -1 8 9 9 -1
Boucle:
add $19, $19, $20
lw $18, 4000($19) 35 19 18 4000
beq $9, $11, Boucle
addi $9, $9, 1 8 9 9 1
Sortie:
sw $10, 0($2)
#2) Déterminez le mot ou la phrase de la liste ci-dessous qui correspond le mieux à la description donnée dans les questions qui suivent. Utilisez, pour répondre, les lettres à gauche des mots ou phrases. Chaque réponse n'est valable qu'une seule fois.
#3) 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. La trace 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'instruction:
Toutefois, on a aussi pu déterminer 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 du compilateur 1.
Remarque 1: Indiquez, dans vos réponses, les principales étapes de votre raisonnement.
Remarque 2: ``x supérieur de 10% à y'' signifie ``x = 1.10 y'',
ce qui est différent de ``y = 0.90 x'', car 1
1.10 =
0.90909...
0.90!
a) Quel est le CPI du code produit par chacun des compilateurs?
b) Quel compilateur produit le code ayant la mesure MIPS la plus élevée et de combien?
c) Quel compilateur produit le code le plus performant (en terme de temps d'exécution) et de combien?
#4) Une compagnie désire acheter un nouvel ordinateur. Des études internes ont montré que la machine actuelle consacrait en moyenne, sur 100 heures de fonctionnement, les temps suivants aux divers programmes utilisés par la compagnie:
Deux ordinateurs - MA et MB - sont proposés pour remplacer l'ancienne machine. Le temps d'exécution des divers programmes sur ces deux machines sont les suivants:
Indiquez (et justifiez) laquelle parmi les équations suivantes décrit le mieux la condition indiquant que la machine MA devrait être sélectionnée, plutôt que la machine MB, en remplacement de l'ancienne machine.
Justifiez brièvement votre choix.
#5) Pour chacune des instructions de style VAX présentées plus bas, donnez une séquence d'instructions MIPS ayant le même effet (tel qu'indiqué par le commentaire). Si vous avez besoin de registres temporaires, utili sez les registres $1 et suivants.
a) movl 100($5), @200 # Mem[100+$5] = Mem[Mem[200]]
b) sobge $5, $6, L1 # $5 = $5 - 1; if ($5 >= $6) goto L1
c) subl3 $5, ($8)+, #10 # $5 = Mem[$8] - 10; $8 = $8 + 4;
#6) Pour chacune des caractéristiques présentées plus bas, dites si elle caractérise uniquement l'architecture MIPS, VAX, les deux ou aucune des deux architectures:
a) Une grande variété de modes d'adressage est disponible.
b) Architecture de type rangement/chargement.
c) Possède des instructions utilisant une valeur constante comme opérande, valeur directement conservée dans l'instruction.
d) Les instructions sont relativement simples et peuvent s'exécuter assez rapidement.
e) N'importe quelle instruction peut utiliser un opérande conservé en mémoire.
f) Possède un mode d'adressage permettant d'indiquer une adresse effective en mémoire via un registre de base plus un déplacement.
g) Possède un accumulateur (Accum), i.e., un registre implicite utilisé pour les opérations arithmétiques. Par exemple, on pourrait avoir une instruction ayant l'allure suivante:
add 180($r1) # Accum = Accum + Mem[180+$r1]
h) L'extraction (lecture) des instructions peut se faire de façon efficace, puisque toutes les instructions ont la même taille.