|

|
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.
|
|