Les ordinateurs ont bons cœurs

Publié le 3 avril 2017 par Gee dans Tu sais quoi ?
Inclus dans le livre Grise Bouille, Tome III

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

Un processeur Intel Core 2 Duo anthropomorphisé dit, tout fier : « J'ai deux cœurs ! » Un poulpe répond : « Petit joueur… »

Alors à quoi ça sert, un ordinateur dont le processeur a plusieurs cœurs ?

Demandons à ce vendeur d'une enseigne française bien connue.

Une cliente demande : « Ça sert à quoi, un processeur à deux cœurs ? » Un vendeur avec une casquette SNAC répond, très sûr de lui : « Eh bien, ça vous permet de lancer deux applications à la fois. »

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 :

Une travailleuse ouvre une porte de bureau très vite en criant : « Le chef arrive ! » Sa collègue, derrière un ordinateur, panique : « Mince, faut qu'je ferme le Solitaire pour relancer Word !  Aah, si seulement on pouvait lancer deux applications à la fois, je pourrais simplement passer d'une fenêtre à l'autre ! » Le smiley, dubitatif : « Vous voulez dire qu'on n'avait pas encore inventé le Alt-Tab ?! »

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 !

Gee précise, d'un air innocent : « À ne pas confondre avec l'élection présidentielle dont l'intérêt est d'être multi-tache. À condition que chaque tache ait ses 500 signatures… »

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.

Le smiley remarque d'un air taquin : « Gee recycle son article “Les ordinateurs sont cons” pour la 200 000e fois. » Gee répond, blasé : « Bah quoi. C'est écologique. » Une image extraite de la BD en question montre que c'est l'intelligence (humaine) assistée de la vitesse (de la machine) qui donne l'informatique (double rainbow).

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.

Gee commente : « Imaginez Superman qui construirait deux maisons en passant de l'une à l'autre à la vitesse de la lumière et en ajoutant une brique à chaque fois.  Vous verriez les deux maisons s'élever en même temps alors que techniquement, il n'y a qu'une seule construction à la fois. » Superman, les mains sur les hanches entre deux maisons à moitié construites : « Vous croyez vraiment que j'ai qu'ça à foutre ? »

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.

Le Geek encourage un robot à travailler : « Plus vite !  Plus vite ! » Le robot, qui agite ses bras aussi vite que possible en ayant l'air de galérer : « Mais j'suis au max, là ! J'ai pas quatre bras ! » Le Geek : « Eh bah on va remédier à cela. »

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.

1997. Un type rigole en regardant l'ordinateur d'une femme : « Haaa, mais t'as encore ton Pentium à 150 MHz ? Haha mais on n'est plus en 1995 !  Mon Pentium II tourne à 300 MHz ! » La femme répond, agacée : « Et ta sœur, elle est sous MS-DOS ? »

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…

Une image d'un transistor faisant 10 nm de haut. À côté, un atome de silicium est représenté, il fait 0,1 nm de haut. Le smiley commente : « Moi qui pensais qu'un transistor, c'était une radio de vieux… »

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 !

Le Geek encourage toujours le robot : « Plus vite !  Plus vite ! » Le robot agite les mains tellement vites qu'elles sont en train de prendre feu : « Haaaaaa, trop chaauuuudd ! Je foooooonds ! »

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.

Un mec derrière une énorme machine avec des ventilateurs énormes, de la fumée partout. Il porte des lunettes de protection et commente : « C'est sûr que si on doit embarquer une usine de refroidissement à azote liquide dans chaque ordinateur, c'est un peu limitant… »

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

Le robot, résigné, les bras ouverts : « Docteur ! Tous ces programmes, c'est trop d'émotion pour moi !  Greffez-moi un deuxième cœur ! » Une doctoresse le regarde en se demandant quoi faire, elle a une clef anglaise à la main. Le smiley ne comprend plus : « Punaise, j'me paume dans les analogies moi.  C'est des bras ou des cœurs, qu'il lui faut ? »

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.

Un manager parle à une équipe de femmes : « Bon, alors vous êtes réunies à neuf, car il faudrait que vous fassiez un bébé en un mois. » Les femmes s'interrogent : « Euuuuhh…  Il est con ? »

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…

Deux cœurs regardent un texte disant : « Les sanglots longs des violons de l'automne » Le premier cœur lit : « Alors, “Les sanglots longs…”. »

… temps pendant lequel un deuxième cœur peut modifier l'information !

Le premier cœur se retourne pour noter : « Je note… les…  sanglots… longs… » Pendant ce temps-là, le second cœur va effacer le texte pour en écrire un nouveau.

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.

Le texte est maintenant : « Blessent mon cœur d'une langueur monotone. » Le premier cœur regarde la suite et lit : « “D'une langueur monotone”. Donc “Les sanglots longs d'une langueur monote.” C'est vachement beau mais ça n'veut rien dire, non ? » Le second cœur répond : « C'est une licence poétique… » Le smiley commente : « Ouais, moi aussi, je croyais que c'était “bercent”, mais en fait non. »

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.

Le texte « Les sanglots longs des violons de l'automne » est caché derrière un gros bonhomme avec une barre de fer à la main, l'air pas commode. Le second cœur dit : « J'voudrais bien écrire là. » Le gardien répond : « Occupé.  T'attends ton tour. » Le cœur : « Quel gros con, c'videur. »

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

Un schéma d'interblocage. Un cœur dit : « J'ai bloqué le mutex A et je dois accéder à B pour terminer ma tâche et libérer A. » Le gardien répond : « Pas possible, B est bloqué. » En effet, un autre cœur dit en même temps : « J'ai bloqué le mutex B et je dois accéder à A pour terminer ma tâche et libérer B. » Le gardien lui répond aussi : « Pas possible, A est bloqué ! » Le smiley commente : « Dans la vraie vie, on ne resterait pas bloqués ad vitam aeternam, mais un ordinateur, c'est c…  enfin, vous savez. »

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.

Le pouple du début dit : « Eh ouais !  Trois cœurs, c'est pas si simple à gérer. » Un GPU (processeur graphique) répond en souriant ironiquement : « P'tit joueur. » Note : BD sous licence CC BY SA (grisebouille.net), dessinée le 2 avril 2017 par Gee.

Publié le 3 avril 2017 par Gee dans Tu sais quoi ?

🛈 Si vous avez aimé cet article, vous pouvez le retrouver dans le livre Grise Bouille, Tome III.

Soutenir

Ce blog est publié sous licence libre, il est librement copiable, partageable, modifiable et réutilisable. Il est gratuit car financé principalement par vos dons. Sans inscription, vous pouvez très simplement me soutenir :

Pour l'année 2023-2024, 8388 € ont pour l'instant été collectés sur un objectif annuel de 21 000 € (SMIC brut), soit 40 % de l'objectif :

Sources de revenu

L'année étant entamée à 58 %, il y a actuellement un retard de 3792 € sur l'objectif.

Avancement de l'année

Vous pouvez également, si vous le souhaitez, passer par une plateforme de financement participatif :