mardi 6 novembre 2007

Différences entre multicoeurs et multiprocesseurs

Il semble que la question se pose à une époque ou il existe encore des machines multiprocesseurs de la génération antérieure avec des processeurs double cœurs de la génération en cours (et je vous passe les quadcore d'Intel) ou les multiprocesseurs à base de multicoeurs.
Les questions légitimes portent la plupart du temps sur l'aspect performance des choses, et de faire une comparaison entre les deux architectures comme si il suffisait de faire l'équation Deux Cœurs = Deux processeurs Simple Cœur, alors que rien n'est moins évident que ce raccourci et ce autant au niveau matériel que logiciel même...

Commençons d'un point de vue basique, tout le monde peut imaginer assez facilement qu'entre une machine avec une carte mère ayant plusieurs emplacements pour des processeurs et une avec un seul il y a des différences techniques qui peuvent déjà commencer à expliquer les différences de performance entre les deux plateformes.
La première différence concerne les échanges d'informations entre les processeurs, sur une carte mère multiprocesseur, c'est à elle qu'incombe ces échanges, et c'est par son intermédiaire qu'ils seront réalisés. Bien entendu et malgré les différentes plateformes technologiques existantes, les canaux utilisés sont beaucoup plus petits et lents que ne le sont ceux existant entre deux cœurs sur une même puce.
En effet les échanges entre cœurs sont souvent faits à la vitesse du processeur et souvent sur des liaisons internes à très grande vitesse.
A propos d'échanges, une différence existe aussi concernant les accès mémoire puisque c'est le processeur qui les gère sur une machine multicoeurs, ils sont plus facilement accessibles et les chevauchements sont gérés par le processeur pour éviter que les données ne soient lus ou écrites à des endroits où d'autres cœurs sont en train de lire ou d'écrire.
Dans le cas du multiprocesseur, c'est la carte mère et son chipset qui gère ceci, et là encore les goulots d'étranglement sont dans les canaux utilisés pour gérer ça.
Une autre des différences concerne la consommation électrique qui est moindre sur une machine uniprocesseur quand bien même il contient plusieurs cœurs.


Concernant maintenant l'utilisation de tous les jours, quelles sont les différences et surtout laquelle des différentes plateformes peut être la plus performante?
Tout d'abord il faut savoir qu'une limitation existe suivant le système d'exploitation et du nombre de processeurs, en effet que ça soit sur des systèmes Windows serveur ou même Vista, le prix entre une version monoprocesseur (voir parfois biprocesseurs) et multiprocesseurs et sans commune mesure.
Mais il faut savoir que pour Microsoft un processeur double ou quadruple cœurs n'est rien d'autre qu'un processeur unique (ce qui est physiquement exact puisque chaque cœur n'est en fait qu'une unité de calcul et pas un processeur à part entière) et donc que vous pouvez utiliser un Vista standard sur une machine quadruple cœurs, alors que sur une machine multiprocesseurs vous devrez vous acquitter d'une version spéciale sans quoi un seul des processeurs sera pris en compte.
A l'époque ou n'existait pas les multicoeurs, le multitâche était produit par ce que l'on appelle les threads, ces processus partagent le temps processeur de manière équitable en fonction des priorités et des nécessités, chaque thread utilisation quelques microsecondes avant de laisser la main au thread suivant.
Dans tous les systèmes récents, ces threads sont au cœur même du système, une des différences entre multicoeurs et multiprocesseurs consiste en la répartition de ces threads entre les unités de calcul, en effet concernant le multiprocesseur, il faut que le système assure correctement la répartition afin que les différents processeurs soient utilisés à leur maximum de performance.
Concernant les logiciels aussi, il faut qu'ils utilisent des instructions particulières du système de manière à faire répartir justement les traitements correctement entre les différents processeurs, alors que dans le cas du multicoeur, c'est lui qui assure ce travail et qui réparti justement entre les différents cœurs en fonction du traitement.
Et c'est là l'une des différences essentielle qui fait que pour une utilisation classique d'un ordinateur (pas une utilisation professionnelle ou spécifique comme un serveur) une machine multicoeur est plus performante puisque elle optimise en temps réel la charge sur les différents cœurs.
Ces différences sont bien entendu réduites pour peu que l'on utilise un système réellement multiprocesseur et des logiciels eux aussi conçus et programmés pour prendre en compte plusieurs processeurs physiques.


Les multicoeurs vont devenir de plus en plus courants et ce pour plusieurs raisons qui sont une question de coût, un multicoeur coutant moins à fabriquer que deux processeurs par exemple. De plus leur puissance fait qu'ils sont un choix bien plus intéressant.
D'ailleurs les machines multiprocesseurs à base de processeurs multicoeurs sont aussi l'avenir des solutions nécessitant une puissance de calcul importante comme pour les serveurs et leurs applications diverses.
Ce petit laïus n'est pas exhaustif, il ne couvre pas toutes les différences, mais permet de se faire une idée assez précise, de tout temps les gens ont toujours été attirés par les multiprocesseurs, mais il est de cette attirance comme de beaucoup de mythe elle ne repose que sur le fait que les systèmes multiprocesseurs sont plus rares et plus chers, mais pour les particuliers ils ne sont et ne seront jamais d'une utilité quelconque, sauf dans le cas ou ces machines sont utilisées pour leurs réels objectifs et sur des systèmes adéquats.



Venez réagir sur le forum

Aucun commentaire: