Examen d`Architectures Avancées Exercice 1 ( IV points) Exercice 2

publicité
ESIL/Dépt Informatique A2
Le 27 Janvier 2005
Examen d’Architectures Avancées
Durée 3 Heures – Documents autorisés.
Un barème indique les points attribués à chaque question.
Soyez concis et précis dans vos réponses.
Dans certains les exercices on utilise le jeu d'instructions du DLX vu en cours. On rappelle que le DLX est une machine load/store et
dispose de 32 registres généraux de taille 32 bits (General Puporse Registers ou GPRs) nommés R0, R1, ..., R31 (R0 a toujours la
valeur 0). Il dispose aussi de 32 registres flottants de taille 32 bits (Floating Point registers ou FP registers) nommés F0, F1, ..., F31.
Les registres flottants sont utilisés par paires pour les opérations sur les flottants double précision (on a donc 16 registres double
précision nommés F0, F2, ..., F30).
On utilisera la notation en langage d'assemblage op dest,source1,.... Par exemple, add R1,R2,R3 additionne R2 et R3, et
range le résultat dans R1, lw R1,0(R2) charge dans R1 la donnée à l'adresse 0+R2, et SW 20(R2),R1 range R1 à l'adresse
20+R2. Le symbole # indique que le reste de la ligne est un commentaire.
Exercice 1 ( IV points)
Une entreprise utilise ses ordinateurs pour des applications qui requièrent beaucoup de calculs de traitement d'images. Les
performances des ordinateurs actuels sont de 6,5 images par seconde, ce qui n'est pas satisfaisant, notamment pour
l'application de visioconférence. Un consultant appelé pour «se pencher sur le problème» propose 2 solutions :
- la première est de remplacer tous les ordinateurs actuels, au coût de 8000 € pièce, par de nouveaux ordinateurs dont les
performances sont multipliées par 3 à tous les niveaux ;
- la seconde est de ne remplacer que la carte graphique en utilisant une carte spécialisée pour le traitement d'images au coût
de 3000 € pièce, et qui traite les images 10 fois plus vite que la carte graphique actuelle.
Les applications visées passent 80% de leur temps à traiter les images.
Question 1 (2 pts)
Comparer les deux solutions en termes de performances et de coût.
Question 2 (1 pt)
Les ordinateurs actuels ont une fréquence d'horloge de 2 GHZ alors que les nouveaux sont cadencés à 3 GHZ et exécutent les
instructions en 1/3 du temps. Le jeu d'instructions n'a pas changé. Le CPI sur les nouveaux ordinateurs est 0,73 cycles par
instruction. Quel est le CPI sur les ordinateurs actuels?
Question 3 (1 pts)
Comment expliquez-vous un CPI fractionnaire et inférieur à 1 (0,73) pour les nouveaux ordinateurs ? Donnez un exemple
d'architecture avec ses différents paramètres (profondeur du pipeline, nombre d'étages, fréquence de blocage du pipeline, …)
qui pourraient conduire à un CPI de 0,73.
Exercice 2 (IV points)
On considère une implantation du DLX avec un pipeline linéaire à 5 étages (IF, ID, EX, MEM, WB). Les divers étages ont la
même fonction que le pipeline simple que nous avons étudié en cours, sauf que ici le calcul de l'adresse de branchement ainsi
que l'évaluation de la condition de branchement sont réalisés par l'étage EX. On voudrait analyser l'effet de l'ajout d'un
mécanisme de prédiction de branchement.
On muni le DLX d'un buffer des adresses de branchement appelé BTB (Branch Target Buffer) dans la suite. Le BTB est
accédé lorsque l'instruction de branchement est en train d'être décodée, et l'adresse de branchement est donc disponible à l'issue
de l'étage ID. On considère un programme P pour lequel :
- 50% des branchements conditionnels conduisent à un succès lors de l'accès au BTB ;
- 80% des branchements conditionnels qui accèdent avec succès au BTB sont pris ;
- 20% des branchements qui conduisent à un échec lors de l'accès au BTB sont pris.
Question 4 (2 pts)
Calculer la pénalité des instructions de branchements sur le CPI pour le programme P.
Question 5 (1 pts)
Que devient cette pénalité si le BTB contient les instructions cibles au lieu des adresses de branchements?
Question 6 (1 pts)
Reprendre les questions 4 et 5 en supposant cette fois-ci que le BTB est accédé à l’étage IF .
Exercice 3 ( VIII points)
On considère P3, une implantation super scalaire 2 voies du DLX. P3 a les caractéristiques suivantes :
1/ 3
ESIL/Dépt Informatique A2
Le 27 Janvier 2005
Examen d’Architectures Avancées
- un étage F (fetch) pour la lecture des instructions. L’étage F est capable de lire 2 instructions dans le même cycle ;
- un étage D (decode) pour le décodage ;
- plusieurs étages d’exécution qui réalisent aussi les accès mémoire ;
- et un étage «write-back» qui réalise l’écriture des registres. Deux instructions peuvent passer «write-back» en même temps.
L’organisation du chemin de données est montrée figure 1. Les étages d’exécution sont organisés en 2 pipelines linéaires
parallèles (High et Low). High et Low peuvent réaliser l’exécution simultanée de n’importe quelle paire d’opérations.
High
E1
F
E2/
M1
E3/
M2
E3
D
W
E1
E2/
M1
E3/
M2
E3
Low
Figure 1 : Organisation du chemin de données de P3
La résolution des dépendances de données est réalisée par l’unité de décodage. Les instructions attendent dans l’unité de
décodage jusqu’à ce qu’on soit sûr que les dépendances de données seront satisfaites. Les instructions sont envoyées aux étages
d’exécution dans l’ordre. Une instruction bloquée dans D bloque donc les instructions suivantes.
Le lancement des instructions est effectué de la façon suivante :
- à chaque cycle, l’unité de décodage prend zéro, une, ou deux instructions prêtes, lit leurs opérandes ou positionne les
commandes pour le forwarding, et envoie les instructions aux étages d’exécution ;
s’il y a moins de deux instructions qui peuvent être lancées, des bulles (NOP) sont envoyées aux étages d’exécution ;
- quand deux instructions sont lancées en même temps, High reçoit l’instruction la plus ancienne ;
- quand on ne peut lancer qu’une instruction, celle-ci est envoyée à High.
Les pipelines High et Low exécutent tous les types d’instructions. Pour les instructions «courtes», les derniers étages ne font
que transmettre le résultat à l’étage suivant (en d’autres termes, toutes les instructions passent dans les mêmes étages
d’exécution, mais les résultats des «instructions courtes» sont disponibles plus tôt pour le forwarding). Toutes les instructions
sont complètement pipelinées, et les résultats des instructions sont disponibles pour le forwarding dès que leur calcul est
terminé.
Les temps d’exécution des diverses instructions sont donnés par le tableau de la figure 2 ci-dessous.
Figure 2 : Temps d’exécution des instructions
opération
addd
multd
divd
op sur entiers, branchements
load et store
temps d’exécution (cycles)
2
3
4
1
3
Les opérations d’accès à la mémoire s’exécutent en 3 cycles : 1 cycle pour le calcul de l’adresse (par le premier étage
d’exécution), et deux cycles pour l’accès mémoire proprement dit. Les 2 cycles pour l’accès à la mémoire sont indivisibles
(pour ces opérations, il n’y a pas de résultat intermédiaire transmis entre E2/M1 et E3/M2).
Le calcul de l’adresse de branchement et l’évaluation de la condition de branchement sont réalisés par le première étage
d’exécution (E1).
Question 7 (2 pts)
Dans un premier temps, on décide de résoudre les aléas de contrôle en n’utilisant que les branchements différés.
a) Qu’est ce que cela signifie ? Quels sont les avantages et les inconvénients d’un tel choix ?
b) Combien d’instructions le programmeur en langage d’assemblage (le compilateur, la plupart du temps) devra mettre
dans le délai du branchement différé ? Justifiez.
c) Le programmeur peut-il choisir un nombre d’instructions à mettre dans le délai de branchement au cas par cas en
fonction des aléas de données dans son programme ? Expliquez.
2/3
ESIL/Dépt Informatique A2
Examen d’Architectures Avancées
Le 27 Janvier 2005
Question 8 (1 pt)
Est-il possible d’avoir des aléas WAR sur la mémoire ? Pourquoi ? Et si votre réponse est «oui », comment peut-on résoudre
ces aléas ?
Question 9 (2 pts)
Compléter le chemin de données de la figure 1 en ajoutant les chemins de forwarding. On mettra une flèche allant de l’étage
source vers l’étage destination et étiquetée avec les types des instructions dont on fait suivre les résultats (M pour multd, D
pour divd, A pour addd, I pour les opérations sur les entiers, Ld pour load). Si vous pensez ne pas pouvoir faire un schéma
lisible, n’hésitez pas à faire la liste des chemins dans le style « ES  ED : étiquettes» (où ES est l’étage source et ED l’étage
destination).
Question 10 (3 pts)
On décide maintenant de résoudre les aléas de contrôle en utilisant des branchements différés de longueur une instruction et de
bloquer les autres instructions jusqu’à résolution du branchement.
On rappelle qu’un load ne termine pas avant la fin de E3/M2, et qu’un store doit avoir la donnée à stocker avant le début de
E2/M1. Considérons la séquence d’instructions suivante (on notera que addi et subi sont des opérations sur les entiers) :
Loop : lw
sw
addi
subi
addi
bnz
nop
r1,
r1,
r2,
r4,
r3,
r4,
0(r2)
0(r3)
r2, 4
r4, 1
r3, 4
loop
a)
Pourquoi les instructions load et store ne peuvent-elles pas être lancées dans le même cycle ? Quel est le nombre
minimum d’instructions qui doivent les séparer pour éviter le blocage ?
b) Est-il possible de changer le chemin de données décrit ci-dessus pour permettre aux 2 instructions d’être lancées dans
le même cycle (sans changer les temps d’exécution des instructions) ?
c) Ordonnancer la boucle ci-dessus, en la dépliant si besoin, pour qu’elle puisse s’exécuter sans blocages (2 instructions
par cycle).
Exercice 4 ( IV points)
La plupart des processeurs modernes ont des mécanismes d’ordonnancement dynamique qui lancent l’exécution des
instructions dans l’ordre, les exécutent dans le désordre en fonction de la disponibilité des opérandes, et modifient l’état visible
du processeur dans l’ordre.
Question 11 (2 pts)
a) Pourquoi : a1) modifier l’état de la machine dans l’ordre ? a2) lancer les instructions dans l’ordre ?
b) Qu’appelle-t-on exceptions précises (ou encore comportement précis vis-à-vis des exceptions) ? Pourquoi est-il important
d’avoir des exceptions précises ? Donnez 3 raisons.
Question 12 (2 pts)
Quelle structure de données les mécanismes d’ordonnancement dynamique utilisent souvent à la fois pour implanter les
exceptions précises et la prédiction des branchements ? On précisera les informations contenues dans cette structure de données
et la façon dont ces informations sont utilisées pour traiter les exceptions et les mauvaises prédictions de branchements.
Exercice 5 ( IV points)
Cet exercice porte sur l’article de D.M. Tullsen et al. intitulé “Expoiting choice : Instruction Fetch and Issue on an
Implementable Simultaneous Multithreading processor”.
Question 13 (4 pts)
Répondre en 30 lignes (maximum).
a)
Décrire le(s) problème(s) abordé(s), l’approche utilisée, et les principales conclusions de ce travail.
b) Quel est votre avis sur la pertinence du travail décrit dans cet article ?
Fin
3/3
Téléchargement