Rôle des performances
Temps de réponse et débit
Rappels : Le temps de réponse est la durée s’écoulant entre le début et la fin d’une tache. Le débit est la quantité de travail effectuée en un temps donné.
Exercice
Les modifications suivantes apportées à un système informatique augmentent-elles le débit de sortie, diminuent elles le temps de réponse, ou les deux ?
1- Remplacer le processeur de l’ordinateur par une version plus rapide
2- Ajouter à un système utilisant plusieurs des processeurs supplémentaires destinés à des taches séparées – par exemple, gérer un système de réservation de billets d’avion.
Réponse
Diminuer le temps de réponse améliore presque toujours le débit de sortie. Ainsi dans le cas 1, le temps de réponse et le débit de sortie sont tous les deux améliorés. Dans le cas 2, aucune tâche n’est accélérée, et donc seul le débit de sortie augmente. Si toutefois la demande de traitement dans le second était plus importante que le débit de sortie, le système puisse être amené à placer les requêtes en attente. Dans ce cas, augmenter le débit de sortie pourrait aussi améliorer le temps de réponse. Ainsi, pour de nombreux systèmes informatiques réels, changer un paramètre, soit le temps d’exécution soit le débit de sortie, affecte souvent l’autre.
La performance
Dans notre discussion nous nous intéressons aux temps de réponse. Maximiser les performances équivaut à minimiser le temps d’exécution.
Exercice
Si la machine A exécute un programme en 10 secondes et la machine B exécute le même programme en 15 secondes, de combien A est-elle plus rapide que B ?
Réponse:
Nous savons que A est n fois plus rapide que B si
Performances-A / Performances-B = n ou
Temps d’exécution-B / temps d’exécution-A = n
Le rapport est donc de 15/10.
Relier les métriques entre elles.
Temps d’exécution UC pour un programme = Nombre de cycles UC pour un programme/fréquence d’horloge. Tous les ordinateurs sont construits avec une horloge de fréquence constante qui détermine à quels moments les événements se produisent dans la machine.
3.1. Exercice
Notre programme s’exécute en 10 secondes sur A, qui dispose d’une horloge à 100Mhz. Nous tentons d’aider un concepteur à construire une machine B, qui exécutera ce programme en 6 secondes. Le concepteur établi qu’une augmentation substantielle de la fréquence d’horloge est possible, mais que cette augmentation affectera le reste de la conception de l’UC, imposant à la machine B d’utiliser 1,2 fois plus de cycles d’horloge que la machine A pour ce programme. Quel objectif de la fréquence d’horloge devrons-nous donner au concepteur ?
Déterminons tout d’abord le nombre de cycles d’horloge nécessaires au programme sur A :
Tps UC-A = NB de cycles UC-A / Fréquence d’H-A
10 = NB cycles UC-A / 100*106Cycles/secondes
Nb cycles UC-A = 10*100*106 = 1000*106 cycles
Le temps UC pour B peut être obtenu en utilisant l’équation suivante :
Tps UC-B = 1,2*1000*106cycles / Fréquence d’H-B
Fréquence d’H-B = 1,2*1000*106 cycles / 6 secondes = 200Mhz
Rappel : NB de cycles UC = NI * CPI. Avec CPI, le nombre de cycles d’horloge par instruction, correspond au nombre moyen de cycles d’horloge qu’il faut à chaque instruction pour s’exécuter.
Exercice
Supposons que nous ayons deux mises en oeuvres différentes de la même architecture de jeu d’instructions. Pour un programme donné, la machine-A a un temps de cycle d’horloge de 10 ns et un CPI de 2, et la machine B un temps de cycle d’H de 20 ns et un CPI de 1,2 pour le même programme. Quelle machine est la plus rapide pour ce programme et de combien ?
Réponse
Nous savons que chaque machine exécute le même nombre d’instructions pour ce programme, soit I ce nombre. Tout d’abord, déterminons le nombre de cycles d’H pour chaque machine :
Nombre de cycles UC-A = I*2
Nombre de cycles UC-B = I*1,2
Nous pouvons calculer le temps UC pour chaque machine :Temps UC-A = Nb. de cycles UC-A * Tps de cycle-A= I*2*10ns=20*Ins De même pour B : Temps UC-B=I*1,2*20ns=24*Ins.De manière évidente, la machine A est plus rapide. Le rapport des temps d’exécution nous indique de combien A est plus rapide :Performance UC-A/Performances UC-B = Tps d’exécution-B / Tps d’exécution-A = 24*I ns/20*I ns=1,2A est 1,2 plus rapide que B pour ce programme.
Autre formule à donner au étudiants
Le CPI varie avec l’application, ainsi qu’avec les mises en oeuvre d’un même jeu d’instructions. Les concepteurs obtiennent souvent le CPI par une simulation détaillée de la mise en oeuvre. Il est parfois possible de calculer le nombre de cycles d’horloge UC en regardant les différents types d’instructions utilisés et en se servant de leurs nombres de cycles d’horloge.
Nb de cycles d’horloge UC =
Où Ci est le nombre des instructions de classe i exécutées, CPI, est le nombre moyen de cycles par instruction pour cette classe, et n le nombre de classes d’instructions.
Exercice
Un concepteur de compilateur essaie de choisir entre deux séquences de code pour une machine donnée. Les concepteurs du matériel ont fourni les informations suivantes :
Classe d’instruction | CPI pour cette classe |
A | 1 |
B | 2 |
C | 3 |
Pour une expression particulière d’un langage de haut niveau, le concepteur du compilateur envisage deux séquences de code qui nécessitent les nombres d’instructions suivantes :
Nombre d’instructions pour la classe d’instruction | |||
Séquence de code | A | B | C |
1 | 2 | 1 | 2 |
2 | 4 | 1 | 1 |
Quelle séquence de code exécute le plus d’instructions ? Laquelle sera la plus rapide ? Quel est le CPI de chaque séquence ?
La séquence 1 exécute 2+1+2 = 5 instructions. La séquence 2 en exécute 4+1+1 = 6. La séquence 1 exécute donc moins d’instructions.
Nous pouvons utiliser l’équation du nombre de cycles d’horloge UC fondée sur le nombre d’instructions et le CPI pour obtenir le nombre total de cycles d’horloge pour chaque séquence :
il vient d’après la formule :
Nb de cycles UC-1 = 2*1+1*2+2*3 = 10cycles
Nb. de cycles UC2 = 4*1+1*2+1*3 = 9 cycles
La séquence 2 est donc plus rapide, même si elle exécute en fait plus d’instructions. Puisque la séquence 2 utilise globalement moins de cycles d’horloge mais a plus d’instructions, elle doit avoir un CPI inférieur. Les valeurs du CPI peuvent être calculées par
CPI = Nb. de cycle UC / Nb. d’instructions
CPI-1 = 10/5 = 2
CPI-2 = 9/6 = 1,5
Cet exercice montre le danger encouru lorsque l’on utilise un seul paramètre (le nombre d’instructions) pour établir les performances. Par exemple le MIPS ne prend pas en compte tous les termes.
Exercice
Pour les instructions de branchement conditionnel, on envisage deux possibilités :
UC A. Un code condition est positionné par une instruction de comparaison et suivi par un branchement qui teste le code condition.
UC B. Une comparaison est comprise dans le branchement.
Sur les deux UC, l’instruction de branchement conditionnel prend 2 cycles, et toutes les instructions prennent 1 cycle. (Evidemment, en décidant que le CPI est 1 pour tout excepté les branchements, on ne prend pas en compte dans cet exemple simple les pertes dues au système mémoire). Sur l’UC A, 20% de toutes les instructions exécutées sont des branchements conditionnels ; puisque chaque branchement nécessité une comparaison, il y a aussi 20% des instructions qui sont des comparaisons. Parce que l’UC A n’a pas de comparaison dans le branchement, son temps de cycle est de 25% inférieur à celui de l’UC B. Quelle UC est le plus rapide ?
Puisque les aspects système sont négligés, on peut utiliser la formule de performance de l’UC :
CPIA = ((0,2*2)+(0,8*1)) soit 1,2 puisque 20% des instructions sont des branchements (2 cycles) et que les autres prennent 1 cycle.
Soit tUCA et tUCB les temps d’exécution, tcA et tcB les temps de cycle et nA et nB les nombres d’instructions respectifs des deux machines A et B. tcB = 1,25*tcA, puisque A est 25% plus rapide. La performance de l’UC A est alors
TUCA = nA*1,2*tcA = 1,2*nA*tcA
Il n’y a pas de comparaisons dans l’UC B, de telle sorte que 20%/80%, soit 25% des instructions, sont des branchements (2 cycles), et les 75% restant prennent 1 cycle, CPIb est alors ((0,25*2)+(0,75*1) soit 1,25. Puisque l’UC B n’exécute pas de comparaisons, nb=0,8*nA. La performance de l’UC B est
TUCB = (0,8*nA)*1,25*(1,25*tcA) = 1,25*nA*tcA
Sous, ces hypothèses, l’UC A, avec le plus petit cycle d’horloge, est plus rapide que l’UC B, qui exécute moins d’instructions.