Index

Savoir

Faire

Miscellaneous

Le syndrome P4

 

La sortie récente du Pentium4 est l'occasion de rappeler une règle d'optimisation très efficace, qui relève plus du bon sens que de calculs fumeux et incertains. En effet, les tests parus dans la presse sont relativement contradictoires, tout du moins si l'on ne prend pas le recul nécessaire pour les interpréter.

La règle d'Amdahl
Rentrons tout de suite dans le vif du sujet. Supposons que le temps d'exécution d'une tâche quelconque dépende à 30 % du composant A, à 20 % du B, et à 50 % du C. Supposons maintenant que, grâce à une technique révolutionnaire, il soit possible d'accélérer deux fois le composant A. A ne représenterait donc plus que 15 % du temps précédent. Mais le temps d'exécution total serait de (15+20+50)=85 % du temps précédent. Le rendement est faible : seulement 15 % de gagnés en tout. Dans le même ordre d'idées, diviser par 10 le temps d'exécution de A ne résulterait qu'en un temps d'exécution de (30/10+20+50)=73 % du temps initial. Il y a donc une nette disparité entre l'accélération du composant, et l'accélération totale du système.
Si l'on s'était attaqué au composant C, et qu'on avait divisé par 2 son temps d'exécution, on aurait abouti à un temps total de 75 % du temps initial ; et de 55 % du temps initial si l'on multiplie sa performance par 10. Là encore, le rendement est faible, bien qu'il soit plus appréciable. Continuer à optimiser uniquement C conduira toutefois dans une impasse : l'impossibilité de descendre en dessous de 50 % du temps initial.

La règle d'Amdahl est donc très simple : il ne suffit pas de se concentrer sur une partie seulement du système pour l'accélérer. Cela marche dans un premier temps, mais ensuite il faut que tous les composants suivent.

En pratique...
Lorsqu'Apple a proposé ses bi-processeurs sur le marché, une certaine catégorie d'utilisateurs s'est léché les babines. L'utilisation de deux G4 permettait en effet des gains appréciables sous Photoshop (voir l'article "Stop" pour l'explication du gain). Cependant, le reste des opérations est loin d'avoir subi la même accélération, car seules les opérations que l'on pouvait distribuer sur deux processeurs on tiré bénéfice des nouvelles machines. Le passage, pour le même prix, d'un unique processeur à deux était tout de même une bonne affaire, pour tirer mieux parti de Photoshop, et dans l'attente du futur MacOSX, qui saura mieux gérer le multiprocessing que l'OS actuel. Mais on se trouve totalement dans le cas décrit au paragraphe précédent.

Avec le Pentium4, le problème est plus complexe. L'architecture a fondamentalement changé. L'interface avec la mémoire est devenue démoniaquement efficace, le calcul parallèle a fait un bond en avant avec le support du 128 bits et du calcul double précision, la latence de certaines instructions a diminué, et la fréquence de fonctionnement a augmenté d'un coup de 50 % par rapport au meilleur PentiumIII (1500 MHz contre 1000MHz). Malheureusement, tout cela a un prix : baisse de performance pour les calculs tenant dans le cache premier niveau, et augmentation de la latence d'autres instructions. De plus, et vu que les processeurs actuels prédisent les instructions qui ont le plus de chance d'être exécutées après l'instruction courante, le Pentium4 est très pénalisé s'il se trompe de chemin et doit faire demi-tour. Pour prendre une image familière, ce processeur est une voiture au moteur alignant un nombre impressionnant de tours/minute, et qui est très rapide, mais entre les feux rouges seulement... Le problème tient donc dans le nombre des feux rouges, qui dépend du programme que l'on exécute !

Pour reprendre l'analogie des composants, c'est comme si l'on avait accéléré deux fois le composant C, et ralenti deux fois le A. Au total, on obtient (30*2+20+50/2)=105 %, soit plus lent que le temps initial. Et c'est ce qui se passe, certains tests montrent qu'à fréquence égale le Pentium4 est plus lent qu'un PentiumIII ou qu'un Athlon. Par contre, à fréquence supérieure, et si votre programme dépend principalement de la performance du composant C (et pas du A ni du B), alors vous pouvez tabler sur un gain très appréciable. À l'opposé, si votre programme dépend principalement du composant A, il ne reste plus qu'à prier pour que l'augmentation de fréquence de fonctionnement compense la perte, ce qui est loin d'être une évidence vu les choix technologiques qui ont été faits...
Et nous n'avons pas parlé du coût d'une telle configuration : l'augmentation de performances, quand elle existe, vaut-elle le prix qu'on la paie ? Ceux qui travaillent quasi-constamment avec une unique application n'auront pas de mal à se faire une idée précise, pour savoir si le Pentium4 convient à leurs besoins ou pas. Ceux qui recherchent une configuration polyvalente pourront continuer à se creuser la tête encore longtemps, surtout en comparaison des machines concurrentes, polyvalentes et très abordables...

Conclusion subjective
Ceux qui avaient soutenu le Pentium4 dès son annonce se retranchent derrière les tests SPEC, qui montrent sous un jour favorable ce processeur (grâce à SSE2 et à l'interface mémoire améliorée). Les autres font remarquer que le Pentium4 se fait écraser sur d'autres tests, couramment utilisés jusqu'à présent. Les premiers rétorquent alors que pour juger il faudra recompiler ces tests. Et les seconds ajoutent qu'il ne faut pas s'attendre à un miracle, car un grand nombre d'algorithmes n'utilisent pas le calcul parallèle, ne font pas beaucoup appel à la mémoire, et utilisent justement les ressources qui ont été sacrifiées sur l'autel de la fréquence de fonctionnement.
Ce n'est pas pour couper la poire en deux, ni pour verser dans la démagogie, mais... tout le monde a raison ! Alors, que pourra-t-il se passer ?

L'utilisation de SSE2 donnera la priorité, en calcul en virgule flottante, aux formats 32 et 64 bits, alors que jusqu'à présent les x86 offraient une meilleure précision (80 bits) que les PowerPC, Alpha et Sparc. La large acceptation de SSE2 sera bénéfique pour le développement du calcul parallèle sur micro-ordinateur en général, et devrait mettre sur un pied d'égalité les quatre architectures précédemment citées. Le choix pour le calcul scientifique se fera donc sur la vitesse, et moins sur une possible qualité supérieure avec les x86. Le match sera intéressant.
Alors que la solution SSE2/bande passante donne de très bons résultats en virgule flottante, l'intérêt est très mitigé en entier, qui a été l'objet de beaucoup de compromis. Ainsi, le Pentium4 se révèle parfois un piètre compétiteur face aux PIII, Athlon et même Duron.
L'avenir devrait confirmer que les programmes nécessitant beaucoup de bande passante se sentiront à l'aise sur le Pentium4, tandis que les algorithmes complexes travaillant sur peu de données continueront à tourner très efficacement sur les Athlon et PowerPC actuels. Quid de tout recompiler pour le Pentium4 ? C'est le principal inconvénient de ce processeur, avec le coût : à moins que les éditeurs de logiciels offrent gratuitement la version P4 de leur produit à tous ceux qui ont une licence d'utilisation en cours, le nouveau-né d'Intel ne pourra pas se débarasser de l'Athlon aussi facilement que cela.