Pourquoi n’y a-t-il pas de PC domestiques avec plus d’un microprocesseur ?

by Jack
Carte mère deux processeurs

Si vous vous êtes déjà demandé pourquoi nous ne voyons plus l’intérieur du monde de PC deux processeurs ou plus, c’est-à-dire plusieurs puces de processeur montées sur une carte, alors vous avez de la chance, puisque nous allons vous donner les réponses. Même s’il se peut que vous ne vous soyez jamais posé la question. Dans tous les cas, deux ne valent-ils pas mieux qu’un ?

Cette question a deux réponses différentes selon le contexte que l’on veut lui donner. La première est la raison économique, car pour la plupart des utilisateurs, il suffit d’avoir une seule puce comme CPU ou processeur système. Cela finit donc par représenter un coût inutile pour les fabricants de cartes mères au final, puisqu’il sera utilisé par très peu de personnes. C’est pourquoi nous ne voyons pas de systèmes à double socket pour les processeurs doubles. En passant à des raisons techniques, l’explication est un peu plus complexe.

Pourquoi ne voit-on pas deux processeurs sur PC ?

Eh bien, la réalité est que Nous utilisons depuis longtemps plus de deux processeurs, car chaque puce CPU possède plusieurs cœurs de traitement et chacun d’eux est un processeur complet en soi. C’est-à-dire avec ses unités de contrôle, ses unités d’exécution et leurs caches correspondants. Le tout assaisonné d’un cache de dernier niveau pour qu’il n’y ait pas de conflits lors de l’accès aux informations en mémoire, ainsi que l’accès à la mémoire en commun grâce au fait qu’aujourd’hui, la partie en charge d’accéder à la RAM se situe à l’intérieur du processeur.

Carte mère deux processeurs

Maintenant, il faut comprendre que tout programme exécuté par un processeur peut être divisé en deux catégories différentes :

  • code séquentiel qu’il ne peut pas être exécuté en parallèle et qu’il ne fonctionne que sur un seul des cœurs. Donc la communication entre ceux-ci ne sera pas importante.
  • code parallèle qui peut être exécuté entre deux cœurs ou plus. C’est ici où La vitesse de communication est très importante.

S’il y a beaucoup de distance physique entre les cœurs qui collaborent les uns avec les autres, cela peut devenir un goulot d’étranglement des performances lors de l’exécution des programmes, nous verrons ce problème ci-dessous.

Processeurs désagrégés et latence

L’un des plus gros problèmes avec l’exécution de code en parallèle est la latence. Aujourd’hui, la plupart des puces sont monolithiques et fabriquées en une seule pièce. Bien que nous ayons le cas d’AMD qui, avec son ordinateur de bureau, Ryzen désintègre complètement le processeur depuis un certain temps, en particulier dans son Ryzen 9. C’est-à-dire deux puces distinctes qui incluent les différents cœurs dans leur intégralité et leurs niveaux de cache.

Bon, en prenant un Ryzen 9 5950X on constate le phénomène suivant :

  • La latence de chaque cœur avec son voisin est de 6,2 nanosecondes.
  • En raison de la structure en anneau où les données circulent dans chaque secteur du processeur par cycle d’horloge et pas tous en même temps, la latence avec le reste des cœurs au sein du même CCD peut atteindre 19,2 nanosecondes.
  • Si l’on doit intercommuniquer un cœur d’un CCD avec un autre CCD, alors on peut passer à des chiffres de latence de 83,6 nanosecondes.

Zen3DDR4

Comme on peut le constater il est contre-productif pour les performances de séparer les cœurs de processeur. Cependant, la solution d’AMD n’est pas deux processeurs totalement séparés, puisque le contrôleur de mémoire est à l’intérieur de l’IOD et donc l’accès à la mémoire est commun. Ce n’est donc pas la même chose que deux processeurs totalement séparés.

La consommation est plus élevée avec deux processeurs ou plus

Un autre point à prendre en compte est le fait que la communication entre les composants d’une puce est d’autant plus coûteuse qu’il y a plus de distance entre eux, car la consommation d’énergie augmente avec la latence. C’est pourquoi, dans cet aspect, il est préférable d’avoir les cœurs aussi proches que possible et même dans la même puce. Bien sûr, il existe également des limitations telles que la vitesse de communication interne et la taille maximale pouvant être fabriquée. Donc non seulement la facture d’électricité augmenterait en plaçant un deuxième processeur, c’est aussi que ceux-ci consommeraient beaucoup plus que séparément, puisqu’il faudrait placer un bus supplémentaire pour la communication entre eux.

De nombreuses puces sont difficiles à communiquer entre elles

Nous devons partir du principe que chaque CPU possède une série d’interfaces qui lui permettent de communiquer avec l’extérieur. D’une part, celle qui lui permet d’interagir avec la mémoire RAM et d’autre part, celle qui la fait communiquer avec les périphériques. Cependant, nous disons que tous doivent collaborer dans un travail commun. Comment faire en sorte que deux processeurs collaborent sans conflits d’aucune sorte ?

  • Pour commencer, nous devons diviser la mémoire RAM en plusieurs espaces différents, un pour chacun des processeurs.
  • Le noyau du système d’exploitation s’exécute sur le premier processeur, mais pas sur tous les processus. Il finit donc par avoir besoin d’un système de cohérence entre les deux parties. Autrement dit, nous devons créer un système de synchronisation des données entre les deux processeurs, afin que les variables en double aient les mêmes informations.

Tout cela est aujourd’hui réalisé avec les processeurs multicœurs actuels. Bien que les choses se compliquent, si nous parlons de séparer les cœurs en différentes puces et toutes avec leurs interfaces périphériques et mémoire. Lorsque les processeurs sont à cœur unique, avoir deux puces et les coordonner était très facile, et même quatre.

Précisément, vous ne voyez généralement pas plus de quatre processeurs dans les serveurs, c’est pourquoi. Pas seulement à cause du fait que la latence entre les cœurs pourrait tuer complètement l’augmentation des performances, en plus de nécessiter une communication très complexe. Pensez que le nombre d’interfaces à communiquer est de multiplier le nombre de celles-ci et de soustraire 1. Ainsi, 4 processeurs nécessitent 15 interconnexions, mais huit d’entre eux 63.

Related Articles

Leave a Comment