1. Supposez qu'une amélioration d'un mode d'exécution s'un processeur est accéléré par le facteur 10.  Ce mode est utilisé 50% du temps d'exécution du programme test lorsque ce mode est activé (et non 50% du temps original d'exécution sans ce mode!).

a) Calculez l'accélération globale obtenue pour ce programme lorsque le mode amélioré est activé.

Posons que le programme prend un temps Ta pour s'exécuter lorsque le mode est activé.
Il passe Ta/2 dans le mode amélioré qui aurait pris un temps 10Ta/2 sans l'amélioration.
Le temps original est donc To = Ta/2 + 10Ta/2 = 11Ta/2.

Le facteur d'accélération FA = To / Ta = 11Ta/2 / Ta = 11/2 = 5.5

b) Quelle est la proportion (en %) du temps d'exécution originale (sans amélioration) qui peut utiliser le mode amélioré?
10Ta/2 / ( 11Ta/2 ) = 10/11
Ce qui donne environ 91%
2. Supposez qu'un processeur avec un cache parfait se comporte lors d'exécution des programmes tests comme indiqué dans la table suivant:
Type d'instruction Fréquence moyenne
d'occurrence
Nb de cycles moyen
par instruction
Arithmétique
Chargement
Rangement
Branchement
43%
21%
12%
24%
1
2
2
3
Avec un cache réel, on a mesuré que le taux de défaut de cache lors de la recherche d'instructions est de 5%, l'accès aux données a un taux de défaut de 10%, et la pénalité de défaut est de 40 cycles.  Trouvez le CPI de chaque type d'instruction avec le cache réel et ensuite trouvez le facteur par lequel la machine avec un cache idéal (sans défaut de cache) est plus rapide qu'avec le cache réel sur les programmes tests ayant les caractéristiques indiquées dans la table ci-dessus.
En moyenne, sont perdus:
5% * 40 cycles = 2 cycles pour la recherche d'instructions (toutes les instructions).
10% * 40 cycles = 4 cycles pour l'accès aux données (chargement).
Le CPI moyen pour chaque type d'instruction devient donc:
Arithmétique
Chargement
Rangement
Branchement
1+2=3
2+2+4=8
2+2=4
3+2=5

Un programme a un CPI moyen de 43%*1 + 21%*2 + 12%*2 + 24%*3 = 1.81 sur le cache idéal.
Un programme a un CPI moyen de 43%*3 + 21%*8 + 12%*4 + 24%*5 = 4.65 sur le cache réel.
Facteur = 4.65/1.81 qui est environ 2.57

3. p.139  3.1 (voir la question dans le livre)
a) Quel est le CPI moyen si la clock a une période de 0.2us?
Le temps d'exécution moyen est 60%*1.2us + 10%*0.8us + 30%*1.0us = 1.1us.
Le CPI moyen est donc 1.1us/0.2us = 5.5
b) Combien de MIPS pour ce programme?
1 / (106 * 1.1 10-6s)  qui donne environ 0.9 MIPS
4. Supposez que vous avez un programme test qui est typique à vos programmes d'applications.  Un de vos anciens postes de travail ne possède pas une unité à virgule flottante et doit émuler chaque instruction VF par une séquence d'instructions à nombres entiers.  Ce modèle de poste a un taux d'exécution de 100 MIPS sur votre programme test.  Un vendeur vous offre un coprocesseur qui fournit un support à virgule flottante à ca poste de travail.  Le système combiné poste de travail - coprocesseur a le taux de 80 MIPS sur le même programme test.
Les symboles suivants sont utilisés dans le reste de la question:
I = nombre d'instructions à nombre entier exécutées dans ce programme test;
F = nombre d'instructions à virgule flottante exécutées dans le programme;
Y = nombre d'instructions à nombre entier nécessaire pour émuler une instruction à virgule flottante;
W = temps d'exécution du programme sur le poste de travail original;
B = temps d'exécution du programme sur le poste avec le coprocesseur.
Questions:
a) Écrivez l'équation pour le taux MIPS de chacune de ces deux configurations.
(Si les temps sont en micro secondes)
Pour la machine originale: 100 MIPS = (I + Y*F) / W
Pour la machine avec coprocesseur: 80 MIPS = (I + F) / B
b) Pour la configuration sans le coprocesseut à virgule flottante, on a mesuré que F = 8*106, Y = 50, W = 500.  Déterminez I.
I = 100MIPS*W - Y*F = 100MIPS*500us - 50*8*106 = 7600
c) Quelle est la valeure de B sous les conditions énoncées en (b)?
B = (I + F)/80MIPS = (7600 + 8*106)/80MIPS = 105.6us
d) Quel est le taux MFLOPS de la machine avec le coprocesseur?
Le processeur passe 7600/100MIPS = 76us à exécuter les instructions à nombres entiers.
Il passe donc 105.6us - 76us = 29.6us à exécuter les instructions VF.
Dans ce temps il exécute 8*106 = 848 instructions.  Il fait donc 848 / 29.6us qui donne environ 29MFLOPS
e) En considérant que la configuration avec le coprocesseur a le taux MIPS plus bas que le poste original, est-il utile d'acheter le coprocesseur?
Le taux MIPS a baisser car le nombre d'instruction a baisser, le processeur n'est pas plus lent.  Si on regarde le temps d'exécution, on voit qu'en fait il est presque 5 fois plus vite sur notre programme test.