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.