|
Le paradoxe des machines multi-cœurs
Depuis plusieurs années, Intel et AMD développent des
processeurs multi-cœurs afin de continuer à offrir davantage de puissance.
Le problème est que, dans certains cas de figure, ces nouvelles machines
s’avèrent moins performantes que les machines dotées d’un seul cœur
Pendant des décennies, les fondeurs Intel et AMD
produisaient de nouvelles puces toujours plus puissantes en augmentant la
fréquence d’horloge, c'est-à-dire la vitesse d’exécution de leurs
processeurs. Cette technique a rencontré au début des années 2000 des
limites pratiques quand la chaleur dégagée par ces processeurs et devenue
telle qu’il devenait possible de se servir du capot de certains portable
comme d’une table de cuisson …
En réponse à cette limite physique incontournable,
les architectures multi-cœurs se sont développées de façon à continuer à
offrir davantage de puissance, sans augmenter la fréquence d’horloge et donc
la chaleur dissipée.
Quasiment toutes les machines modernes sont désormais
dotées de deux ou quatre cœurs s’agissant de PC et de beaucoup plus
concernant les serveurs d’applications.
Le problème est que l’utilisation de machines
multi-cœurs peut avoir pour conséquence paradoxale un ralentissement, et non
pas une accélération, de la vitesse d'exécution de certains programmes.
Exemple typique, un PC en fin de vie, dédié à une
application manipulant de gros volumes de données. Son remplacement par une
machine multi-cœurs se traduit par des temps d'exécution plus lents de cette
même application …
Comment est-ce possible ? Une machine possédant deux
ou quatre cœurs ne dispose-t-elle pas de plus de puissance qu'une machine
mono-cœur. Plus de puissance ne se traduit-il pas par une vitesse
d'exécution plus importante ?
La réponse est malheureusement non, sauf si
l'application a été spécifiquement développée pour tirer parti d'une
architecture multi cœurs, ce qui représente aujourd’hui l’exception plutôt
que la règle.
Plusieurs facteurs concourent à expliquer ce résultat
en apparence paradoxal.
* Une application écrite pour s’exécuter sur un seul
cœur ne peut en aucun cas tirer parti des possibilités d’exécution en
parallèle offertes par ces machines.
* La vitesse d'horloge des processeurs multi cœurs
peut être plus lente que celle d'une machine mono processeur.
* Plus le nombre de cœurs augmente et plus il est
nécessaire de consacrer de la puissance de calcul à la coordination des
activités entre les différents cœurs.
Le phénomène est peu connu mais il n’en reste pas
moins que assistons à une transition majeure d'un modèle de développement
basé sur des PC monoprocesseurs à un nouveau monde dans lequel les
architectures multi processeurs constituent la norme.
Cette transition s’avère malheureusement beaucoup
plus difficile et plus laborieuse que le passage du 16 bits au 32 bits, puis
aujourd’hui au 64 bits.
Ce changement de modèle entraine une complexification
significative du développement. Des outils dédiés à ces nouvelles
architectures sont en cours de développement chez Microsoft et Google mais
il faudra des années pour que les programmeurs s'emparent de ces concepts et
en exploitent pleinement les possibilités.
Ce qui précède ne revient pas à dire qu'une machine
multi-cœurs est systématiquement moins performante qu'une machine mono-cœur.
Dans la grande majorité des cas de figure, si vous avez plusieurs programmes
indépendants s'exécutant à un moment donné, la performance globale de votre
PC va grandement bénéficier d'une architecture multi-cœurs dans laquelle
chaque cœur va pouvoir se consacrer à une tâche et l’exécuter en parallèle
avec les autres applications.
Malgré tout, ces machines seront toujours moins
performantes que des machines monoprocesseur pour l'exécution d'applications
intensives et le resteront encore pour de nombreuses années.
Ce paradoxe représente une opportunité commerciale
pour les éditeurs d’applications qui seront les premiers à tirer parti de
ces nouvelles architectures en se différenciant nettement de leurs
concurrents en termes de performance.
En attendant, faut-il se détourner des machines
multi-cœurs pour les raisons mentionnées plus haut ?
A moins que vous ne deviez régulièrement lancer des
simulations sur des volumes de données très important, la réponse est bien
sûr non. Tout au plus est-il utile d’avoir en tête les raisons qui peuvent
expliquer des performances parfois surprenantes à l’occasion d’un
renouvellement de machine.
|