Index

Savoir

Faire

Miscellaneous

Stop

Un vent de panique souffle sur les benchmarks depuis qu'Apple a sorti ses G4 bi-processeurs. Cette sortie est-elle une manoeuvre marketing ou permet-elle aux applications de délivrer une puissance réellement supérieure ? À mon avis, beaucoup de commentateurs ont perdu leur sang froid et leur bon sens en voulant à tout prix donner des chiffres sur le sujet. Alors STOP ! Reprenons tout depuis de début...

Avant
Déjà que benchmarker était difficile...Combien de fois sur Internet pouvons-nous voir des indices globaux, calculés à partir de collections de mesures de rapidité sur des programmes n'ayant rien à voir les uns avec les autres, et qui ont pour but de désigner d'un doigt inquisiteur la malheureuse machine qui n'obtient pas le meilleur score ? Comment un disque dur rapide peut-il compenser une carte graphique lente, et dans quelle mesure ? Pourquoi une unité de calcul en virgule flottante performante pourrait-elle compenser une mémoire cache médiocre dans un indice global, surtout si les programmes que vous utilisez ne s'en servent pas ? Et pourquoi ne pas comparer des carottes et des pommes de terre pendant qu'on y est ?

C'est pourquoi tous les résultats publiés sur ce site sont le fruit de programmes développés personnellement (de manière à pouvoir contrôler exactement comment ils sont fabriqués et ce qu'ils mesurent), dans des secteurs proches (calcul scientifique, traitement d'images, etc.), et le plus souvent sur des calculs scalaires (ie n'utilisant ni MMX, ni SSE, ni 3DNow! ni Altivec) sauf mention contraire. De plus, des commentaires indiquant la portée des tests réalisés sont souvent donnés, afin d'éviter d'extrapoler trop loin les chiffres. Ainsi le portage et la comparaison des résultats sont facilités, et les conclusions tirées ont une réelle signification.

Maintenant, offusquons nous un peu. Offusquons nous que certains disent préférer un processeur à 1000 MHz par rapport à deux processeurs à 500 MHz parce que tous les programmes n'en tireront pas parti. Certes il est vrai en général qu'un processeur à 1000 MHz fait tourner les anciens programmes plus vite qu'un processeur à 500 MHz, et que pour tirer parti de deux processeurs il faut réécrire le programme, à condition que cela soit possible et de savoir comment le faire.
Maintenant, essayons de voir comment le gain de performance se traduit dans la réalité. Il est rare que le processeur seul soit impliqué dans la performance, et le plus souvent la mémoire est un élément crucial. Supposons donc que notre programme exécute un grand nombre de fois une lecture de données indépendantes en mémoire, des calculs sur ces données, et l'écriture du résultat en mémoire, pour une répartition du temps d'un tiers dans les accès mémoire et deux tiers dans le calcul. Les données comptent pour 512ko environ. Le graphique suivant illustre deux calculs consécutifs exécutés sur un processeur à 500 MHz équipé de 512ko de cache niveau 2 :

Pour un processeur à 1000 MHz, nous supposerons que le calcul s'exécute exactement deux fois plus vite, soit en 1/3T au lieu de 2/3T. Par contre l'accès mémoire pose problème. Seul le premier, voire le second niveau de mémoire cache peut monter à la même fréquence. Mais souvent, si le cache de niveau 2 est lui aussi à 1000 MHz, il est deux fois plus petit, ce qui induit des accès à la mémoire RAM, beaucoup plus lente... Nous supposerons par simplification que les lectures et écritures en mémoire prennent le même temps sur le processeur à 1000 MHz que sur le 500 MHz. La figure suivante illustre ce fait :

Résultat : le processeur deux fois plus rapide, payé à prix d'or, ne permet de gagner qu'un tiers du temps de calcul total.

Un bi-processeur comme le nouveau G4 d'Apple, solidement équipé d'1 Mo de mémoire cache de niveau 2 par processeur, se comporte dans notre cas (données indépendantes) comme deux unités de calcul indépendantes. On peut assigner la moitié des calculs à un processeur, l'autre moitié à l'autre, ce qui est illustré comme suit :

Processeur 1 : 

Processeur 2 : 

Résultat : le traitement de la totalité des données a effectivement pris deux fois moins de temps.

Bien sûr, avec des tailles de cache différentes, des tailles de données différentes, etc. on peut faire varier les rapports de performance à loisir, mais la 'loi d'Amdahl' reste la même : améliorer seulement une partie de l'architecture conduit asymptotiquement à une impasse. Quand on sait trouver facilement le parallélisme, autant l'utiliser, même avec une architecture moins performante : on peut y gagner beaucoup (facteur 2) ou y perdre un peu moins (1/3T dans notre exemple).

Maintenant
Le bi-processing, il y a quelques mois encore chasse gardée des passionnés de PC et domaine quasiment inconnu sur Macintosh, a fait une incursion remarquée en version standard dans une machine qu'un non-spécialiste de l'informatique peut se procurer très simplement. Est-ce la première fois (clin d'oeil à la BeBox, ou au Commodore 128 pour les plus âgés ;-) ? Peu importe. Est-ce que ce fait est le fruit de la conjonction entre les supposés problèmes de rendement d'un des deux camps et la supposée volonté de l'autre camp de réserver le bi-processing à une clientèle haut de gamme ? Peu importe aussi. La machine est là, et elle démontre des capacités intéressantes, parfois inexploitées (dans beaucoup de programmes non conçus pour), parfois détonnantes. Et on aurait tort de faire la fine bouche, puisque le prix de la configuration bi-processeur est le même que la précédente en mono-processeur, avec en plus d'autres avantages en matériel.

Après
Linux, BeOS, WindowsNT et j'en passe sont capables de tirer parti du bi-processing, MacOS le fait aussi partiellement, et le futur MacOSX devrait se montrer au moins aussi bon que la concurrence sur PC à ce petit jeu là. Alors s'il est possible, pour un surcoût modique, de disposer d'une machine avec plusieurs processeurs, pourquoi ne pas s'en réjouir ? Tout en gardant à l'esprit que l'augmentation de performance peut aller de nulle à très rentable, ne serait-il pas plus logique d'abonder dans le sens de cette évolution, plutôt que de disserter à l'infini sur ses avantages et désavantages ?