Les ordinateurs ont bons cœurs
Nouvel article de vulgarisation informatique. Le pluriel à « bons cœurs » est volontaire 🙂
Les ordinateurs ont bons cœurs
💡 Depuis une grosse dizaine d'année, il est devenu courant de parler de processeur « dual core », « multicore » ou, en français, « multi-cœurs ».
Alors à quoi ça sert, un ordinateur dont le processeur a plusieurs cœurs ?
Demandons à ce vendeur d'une enseigne française bien connue.
NO. FUCKING. SHIT.
Cette réponse est une réponse réellement entendue dans un magasin SNAC.
Si vous en doutiez : c'est n'importe quoi.
Avant l'apparition des multicœurs, est-ce que ce vendeur pense que ça se passait comme ça, dans les bureaux :
Bien sûr que non !
▶️ D'ailleurs, tout l'intérêt des ordinateurs de bureau, ça a toujours été d'être multi-tâche, et ce, bien avant l'apparition des processeurs à plusieurs cœurs !
Mais je m'égare.
💡 Rappelons qu'un processeur, à la base, ça ne fait qu'une seule chose très simple à la fois. Mais comme il fait cette chose simple extrêmement vite, en en enchaînant beaucoup, à la fin, ça fait une chose compliquée.
✷ Voir Les ordinateurs sont cons.
▶️ Pour qu'on ait l'illusion que deux tâches (ou plus) se déroulent en parallèle, l'ordinateur n'arrête tout simplement pas de passer de l'une à l'autre, si vite qu'on a l'illusion que les deux tâches se déroulent en même temps.
Mais alors pourquoi, si on peut gérer le multi-tâche depuis des décennies, cherche-t-on depuis quelques années à multiplier les cœurs du processeur ?
▶️ Parce qu'on n'arrive plus à augmenter leur vitesse.
Si vous avez un peu touché à l'informatique avant les années 2000, vous vous souvenez qu'à l'époque, on disait que la vitesse des processeurs doublait tous les 2 ans.
La loi de Moore disait qu'on doublait le nombre de transistors sur un processeur tous les 2 ans, grâce à la miniaturisation de plus en plus performante.
⚠️ Seulement, on a fini par atteindre des limites… physiques. Miniaturiser devient bien sûr plus complexe à mesure que la taille d'un transistor tend vers la taille de quelques atomes…
⚠️ Mais surtout, on arrive à une telle densité de transistors que le refroidissement devient très problématique : plus c'est petit, plus ça va vite et plus ça chauffe !
💡 Notez que le record de vitesse est de 500 GHz. Mais c'est comme un record de TGV : c'est cool, on montre qu'on sait faire, mais ça n'est pas pour le grand public.
Dans les processeurs grand public, on plafonne plutôt aux alentours de 2 GHz (en gros) depuis pas mal d'années.
▶️ Pour accélérer quand même la vitesse globale du système, on multiplie donc le nombre d'unités de calcul dans un processeur (les fameux « cœurs »).
Tout est parfait, alors ?
Il suffit d'augmenter le nombre de cœurs et on continuera d'augmenter les performances ?
NON !
On a juste augmenté les performances globales en répartissant les programmes sur plusieurs unités de calcul.
⚠️ Mais par contre, un programme unique continue de s'exécuter séquentiellement sur un seul cœur à la fois ! Ce n'est pas parce qu'il y a quatre cœurs qu'il va comme par magie s'exécuter quatre fois plus vite.
▶️ En effet, paralléliser une tâche qui était réalisée séquentiellement (une opération après l'autre dans un ordre donné), non seulement ce n'est pas toujours possible, mais ça nécessite souvent pas mal d'adaptations pour que ça marche ! Parce que les différents cœurs travaillent alors sur de la mémoire partagée.
Par exemple, si un cœur lit une information, ça peut lui prendre un certain temps…
… temps pendant lequel un deuxième cœur peut modifier l'information !
⚠️ Et du coup, le premier cœur peut se retrouver avec une information erronée. Dans un cadre informatique, soit ça plante, soit ça ne marche pas comme prévu.
▶️ Pour cela, on est obligés d'introduire des mécanismes de synchronisation comme les « mutex » (un petit mot qui veut dire « mutual exclusion » soit « exclusion mutuelle »).
Imaginez, en gros, un gardien qui protège l'information le temps qu'un cœur la lise ou l'écrive.
⚠️ Bien sûr, utiliser ce genre de mécanisme n'est pas gratuit et « réduit » le gain de performances qu'on a à paralléliser le calcul. Sans parler des multiples problèmes qui peuvent arriver, comme les interblocages (« deadlocks » dans la langue de James Bond).
💡 Bref, les processeurs à plusieurs cœurs, c'est une solution pour continuer à augmenter les performances des ordinateurs face à un problème physique… mais ça ne résout pas tout et surtout, ça change la façon dont on écrit des programmes.
🛈 Si vous avez aimé cet article, vous pouvez le retrouver dans le livre Grise Bouille, Tome III.