Try to
imagine studying physics without a measure of length other than «Object
A looks larger than Object B» or studying chemistry without a measure
of temperature better than «The reaction vessel became very hot».
Without absolute metrics, sciences remain in a state of infancy. That is
the state that computer science has been in.
John Gustafson, Laboratoire Ames, département américain de
l'énergie.
Essayez
d'imaginer l'étude de la physique sans autre mesure de la longueur
que «L'objet A semble plus long que l'objet B» ou l'étude
de la chimie sans une mesure de la température meilleure que «Le
réacteur est devenu très chaud». Sans métriques
les sciences restent en enfance. C'est l'état de l'informatique.
8.0 INTRODUCTION
Nous utilisons ici les trois mots complexité, puissance et variabilité dans leur sens commun et non dans les sens savants qui seraient algorithmique pour le premier, physique pour le second et génétique pour le troisième.
Ce chapitre contient :
un aperçu sur la complexité
d'un système informatique;
un examen de ce que l'on peut
nommer
puissance d'un système informatique
et les évaluations que l'on fait des unités centrales;
quelques techniques d'évaluation
des performances;
un aperçu de l'influence
du
logiciel sur les performances;
la conclusion
du chapitre;
une note sur la variabilité.
8.1. LA COMPLEXITÉ D'UN SYSTÈME INFORMATIQUE
A distinguishing characteristic of computer science is the enormous gap that exists between the simple instruction sets of our computers and the complexity of useful software. This dichotomy produces intellectual challenges of the highest order. Today many important applications contains several million lines of code, too many for one person to read in a year and impossible for one person to fully understand. VLSI chips are now being manufactured containing more than one hundred million transistors, again posing an almost impossible problem for human comprehension.
John Savage, Professeur à l'université de Providence, 1996
Un caractère remarquable de l'informatique est le fossé immense qu'il y a entre la simplicité des jeux d'instructions et la complexité des logiciels ordinaires. Cet écart engendre des défis intellectuels de la plus haute nature. Aujourd'hui, beaucoup de logiciels importants contiennent plusieurs millions de lignes de code, beaucoup trop pour qu'un individu puisse seulement les lire en une année et impossibles à être vraiment compris par une personne. Les puces de circuits intégrés vont contenir plus de cent millions de transistors, elles poseront elles aussi un problème impossible pour la compréhension humaine.
John Savage compare l'état des logiciels à celui du jeu d'instructions, et s'étonne de leur écart. Cet écart n'est pas plus grand, mutatis mutandis que celui qu'il y a entre l'œuvre de Balzac et le lexiques des mots de sa langue. Il y a également un fossé considérable entre la simplicité des jeux d'instructions, surtout celui des machines RISC, et la complexité architecturale des processeurs que l'on a vue dans les chapitres précédents.
Cette complexité tient autant au nombre de composants qu'à la difficulté induite par leur organisation et par leur fonctionnement en l'absence de lois générales et de règles de construction ou d'agrégation.
Cette complexité a pour origine le nombre de composants et le nombre d'états distincts que le tout peut avoir.
La complexité des algorithmes
fait l'objet de très nombreuses études.
La complexité
d'un programme ou d'un algorithme est abordée très brièvement
plus loin.
La complexité d'un système
informatique n'a pas fait l'objet de travaux aboutissant à des conclusions
utilisables, à notre connaissance.
8.2 LA PUISSANCE D'UN SYSTÈME INFORMATIQUE
8.2.1 Puissance intrinsèque et puissance effective
Ici aussi, puissance a son sens banal : ce que «peut» faire la machine en cause; ce qu'elle contient en puissance avant de le manifester en actes. Cette puissance n'a aucun rapport avec la puissance définie en mécanique, en électricité et dans les autres domaines de la physique où l'on dispose de lois de conservation sous la forme d'équations de bilan avec leurs dimensions, leurs règles de composition et de calcul. Alors qu'il existe en mécanique des seuils minimaux pour vaincre un frottement ou la composante due à la pesanteur pour mouvoir une charge, il n'y a pas de tels seuils en informatique (sauf à avoir une alimentation électrique insuffisante). Ces points sont plus longuement développés dans la conclusion du cours.
Tout ordinateur, pourvu qu'il possède des caractéristiques minimales (n'importe quelle machine existante les a en surabondance) peut résoudre tout problème relevant de la classe des fonctions calculables. Mais la théorie, non seulement ne dit pas le temps nécessaire à leur exécution, mais n'aborde aucune considération de temps hors le fait de distinguer s'il est fini ou infini. Le temps nécessaire est fonction aussi bien de la complexité de l'algorithme de résolution du problème, du choix pertinent d'un langage et de son traducteur, de la qualité de l'expression sous la forme d'un programme, que des caractéristiques physiques architecturales et d'organisation de l'ordinateur d'exécution. C'est pourquoi nous sommes amenés à définir et à distinguer :
La PUISSANCE INTRINSÈQUE, c'est-à-dire la capacité à exécuter un algorithme. Elle est infinie au sens où tout algorithme bien conçu résolvant un problème calculable et bien exprimé dans un langage adéquat, sera exécuté sur n'importe quel ordinateur en un temps fini, pourvu que l'universelle capacité de celui-ci n'ait pas été masquée.
Les PUISSANCES EFFECTIVES, que l'on doit plutôt nommer PERFORMANCES relèvent des :
![]() |
Elle ne peut apporter aucune lumière en matière de puissance effective. |
![]() |
C'est donc par des voies extérieures que doit être construit un discours et que doivent être établies des méthodes, des techniques, des procédés et des outils en matière d'architectures d'ordinateurs.
En ce domaine, tout va être accumulation d'inventions, d'expériences, de recettes et de tours de main avec deux conséquences ici aussi :
Véhicule | Vitesse en
km/h
|
Nombre
de passagers
|
Débit
en passagerxkm/h
|
voiture de sport |
200
|
2
|
400
|
autocar |
90
|
60
|
5400
|
train de banlieue |
60
|
600
|
36000
|
On peut définir deux mesures partielles :
On doit dire alors en toute rigueur que Y est -n% plus rapide que X.
C'est une abus que de dire n% plus puissante au lieu de n% plus rapide.
8.2.2 De l'augmentation des performances ou la loi d'Amdahl
Pour augmenter la performance globale d'un système, il faut augmenter la performance d'un ou de plusieurs de ses composants.
Certains composants sont plus fréquemment utilisés que d'autres. Il paraît donc raisonnable de consacrer la dépense possible à améliorer les composants les plus utilisés plutôt que ceux qui le sont moins. Notons toutefois que la notion de composant le plus ou le moins utilisé dépend de la nature du travail. On l'a vu il y a très longtemps déjà quand dans les années 50, on a rendu simultanées les opérations d'entrées et sorties des machines consacrées à la gestion. À l'opposé, on n'achètera pas une machine pour le motif qu'elle a une unité de virgule flottante câblée, alors que les travaux à faire sont la comptabilité et la paye.
La loi d'Amdahl définit l'augmentation de la performance que l'on peut attendre d'une amélioration du système.
Utilisons les conventions suivantes :
.T
est le temps d'exécution d'un programme sur le système d'origine.
.Ta
est le temps d'exécution du même programme sur le système
amélioré.
.f
est la fraction du temps T concernée par l'amélioration.
.Ac
est l'accélération obtenue par l'amélioration.
L'accélération
obtenue est alors :
La loi d'Amdahl dit que la limite
de l'accélération est :
Exemple d'application :
Supposons que pour un programme
rédigé en langage donné, le pourcentage du temps passé
à faire du calcul vectoriel soit de 70%. Supposons de plus que la
rédaction de cette partie en assembleur rende son exécution
deux fois plus rapide, les calculs seraient les mêmes pour un câblage
qui rendrait l'exécution deux fois plus rapide.
et à la limite :
Introduction du coût
Considérons des systèmes
Si
dont les coûts respectifs sont Ci.
Considérons des programmes
Pj.
Considérons le temps
d'exécution
Tji du programme Pj sur
la machine Si.
Le rapport coût à
performance du programme Pj sur la machine Si est
Une valeur plus grande de CiTji signifie
Système |
Coût
|
T1i
(s)
|
CiTj1
|
Tj2
|
CiT2i
|
S1 |
6000
|
2,5
|
15000
|
4,0
|
24000
|
S2 |
14000
|
1,0
|
14000
|
1,2
|
16800
|
8.2.3 Les évaluations des unités centrales
Les nombres de base sont relatifs :
CPI = C/I et s'il y a partition :
CPI = {S(CPIixIi)}/I = S (CPIi x Ii/I), les sommes sont de i = 1 à n.
Le nombre de cycles pour le programme est alors :
qui montre l'importance de ces trois facteurs interdépendants sur lesquels on raisonne trop souvent séparément.
Avec la partition du jeu d'instructions, on écrit :
T = S (CPIixIi)xTh
On ne peut pas modifier isolément
CPI, I ou Th,
Th dépend
au moins du matériel et de son organisation,
CPI dépend du jeu d'instructions,
du matériel et du compilateur,
I dépend au moins du
jeu d'instructions et du compilateur.
ATTENTION
:
![]() |
Ces évaluations
ne valent que dans des conditions précises :
|
![]() |
Exemple d'évaluation :
Dans une UC nommée A, le branchement se fait par le positionnement d'une condition en une instruction, le test et le branchement lui-même sont faits en une autre instruction. Le branchement demande ainsi deux cycles. Toutes les autres instructions demandent un cycle. Dans un programme 20% des instructions sont de tels branchements et 20% sont des placements de conditions. Le temps de cycle de A est 25% plus rapide que le temps de cycle d'une autre unité centrale nommée B qui fait le positionnement de la condition et le branchement en une seule instruction. Cette instruction demande deux cycles, toutes les autres se font en un cycle. Quelle est l'UC la plus rapide ?
Calculons :
CPI(A) = S CPIixIi/I = 0,2x2 + 0,2x1 + 0,6x1 = 1,20
T(A) = 1,2xI(A)xTh(A)
Comme l'unité centrale B ne demande pas de positionnement de condition, il y a 20 % d'instructions en moins, 25% (20/80) sont des branchements qui demandent 2 cycles.
CPI(B) = S CPIixIi/I = 0,25x2 +0,75x1 = 1,25
T(B) = (0,8xI(A))x1,25x(1,25xTh(A))
Supposons que l'on puisse modifier le temps de cycle d'horloge de B, de combien faut-il le modifier pour que B et A aient la même performance dans ces conditions ? Soit X cette modification :
T(B) = (0,8xI(A))x1,25x(XxTh(A)) or, on veut que T(A) = T(B)
donc 1,2 = 0,8x1,25xX et X = 1,2
Conservatoire national des arts et métiers
Architectures des systèmes informatiques
CHAPITRE 8
Complexité, Puissance et Variabilité
Année 2002-2003