Multiprocesseur

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Un ordinateur multiprocesseur est doté de plusieurs processeurs, et est donc une forme d'architecture parallèle.

But[modifier | modifier le code]

Plusieurs formes de parallélismes sont exploitables dans les systèmes informatiques. Les ordinateurs multiprocesseurs permettent un parallélisme de tâches, où un processus peut être exécuté sur chaque processeur. On obtient ainsi une plus grande puissance de calcul qu'avec un ordinateur monoprocesseur, qui peut être utilisée soit pour plusieurs programmes qui disposeraient chacun d'un processeur, soit pour des programmes spécialement conçus, qui sont capables de répartir leurs calculs sur les différents processeurs.

Cette technologie a été utilisée pour des supercalculateurs, mais elle peut aussi l'être pour s'affranchir des limites de la montée en fréquence des processeurs : de nombreux processeurs actuels sont dits multicœurs, et embarquent en fait plusieurs monoprocesseurs sur une même puce.

Topologie d'interconnexion[modifier | modifier le code]

Un réseau permet la communication entre les différents processeurs et la mémoire. Sa topologie a une influence importante sur les propriétés du système. À peu près toutes les topologies ont été utilisées, on peut néanmoins en illustrer quelques-unes :

Organisation de la mémoire[modifier | modifier le code]

L'accès à la mémoire influence beaucoup les performances et la façon de programmer de telles architectures. En général, on distingue trois classes de multiprocesseurs selon la façon dont les processeurs accèdent à la mémoire :

  • un accès symétrique (Symmetric MultiProcessing, ou SMP), qui correspond à une connexion de tous les processeurs à une unique mémoire partagée. Cette technique est beaucoup utilisée pour de petits systèmes (typiquement avec moins de 10 processeurs), comme les processeurs multicœurs ;
  • un accès non uniforme (Non Uniform Memory Access, ou NUMA), où la mémoire est distribuée dans différents «nœuds». Le temps d'accès à la mémoire n'est alors plus constant, et dépend de l'endroit auquel le processeur tente d'accéder. De plus, chaque processeur peut disposer d'un cache : si les caches sont cohérents, on parle d'architecture ccNUMA (cache coherent NUMA) ; sinon, l'architecture est dite ncNUMA (No cache).

Processeurs multicœurs[modifier | modifier le code]

2 processeurs non multicœurs, chacun occupant un support.
2 processeurs, chacun multicœur, chacun occupant un support.

Les systèmes multiprocesseurs consomment beaucoup d'énergie et dégagent beaucoup de chaleur. Ces deux facteurs sont limitant dans les contextes où les processeurs sont étroitement confinés (serveurs lames par exemple), soit en très grand nombre (datacenter regroupant des milliers d'ordinateurs, ou superordinateurs massivement parallèles).

La technologie nommées multicœurs (multicore en anglais) permet d'assembler plusieurs cœurs de processeurs côte-à-côte sur le silicium : le support (connectique qui relie le processeur à la carte électronique) lui ne change pas. Certains éléments, comme par exemple l'antémémoire (la mémoire cache) peuvent être mis en commun.

Il est possible de remplacer, en utilisant exactement les mêmes supports, les deux processeurs précédents par leur équivalent multicœurs. Ceux-ci pourront par exemple fonctionner à la fréquence de 2,8 GHz. La machine résultante sera donc toujours dotée de deux processeurs, mais de quatre cœurs, toutefois la fréquence de calcul vaudra toujours 2,8 GHz (chaque cœur du processeur aura la même fréquence que les autres cœurs car la fréquence de calcul est propre au processeur et non pas à chaque cœur), seule la puissance du processeur (exprimée en FLO/s ou FLOPS) sera multipliée par le nombre de cœurs. Par exemple si un processeur monocœur cadencé à 1 GHz et ayant une puissance de 10GFlops est remplacé par un processeur dual-core (à 2 cœurs) cadencé à 1 GHz et dont la puissance de chaque cœur vaut 10 GFlops alors la puissance totale du processeur dual-core vaudra 10 GFlops + 10 GFlops = 20 GFlops.

Associé à la technique de l'hyperthreading, cette technologie est en plein essor. Sun Microsystems étudie en 2008 la construction de multicœurs en trois dimensions, c’est-à-dire avec une zone de recouvrement des deux cœurs (donc superposés) permettant de mettre en place des canaux de communication entre eux.

Ces architectures ne sont intéressantes que pour les programmes qui se prêtent simultanément aux deux techniques précitées (multicœurs et hyperthreading).

Historique[modifier | modifier le code]

Parmi les premières machines multiprocesseurs, le Gamma 60 de Bull fut pionnier (1958), mais il ne disposait pas des langages de programmation adaptés.

Ensuite certains superordinateurs ont marqué leur époque, comme le C.mmp, l'ILLIAC IV et les Connection Machines de Thinking Machines. Aujourd'hui, tous les superordinateurs sont multiprocesseurs, ils sont souvent composés de milliers d'unités de traitement.

Exemples de systèmes multiprocesseurs[modifier | modifier le code]

Les chiffres suivants datent de novembre 2008[1].

  • Linux est le système équipant la très grande majorité (87,80 %) des 500 supercalculateurs les plus puissants de la planète ;
  • Unix perd progressivement du terrain face à Linux, mais occupe encore une place de choix sur le marché des supercalculateurs (4,60 %) ;
  • BSD et Mac OS sont très peu représentés (0,20 % chacun) ;
  • Windows ne peut gérer qu'au maximum 4 processeurs, sauf dans certaines versions « serveur » spécifiques, lui permettant de gérer selon les versions 8, 16 ou 32 processeurs. Windows 7 en version professionnel quant à lui permet de gérer jusqu'à 2 processeurs physiques et 256 cœurs. Il est quasiment inexistant sur le marché des supercalculateurs (1 %). Cependant, l'arrivée de Windows Server HPC devrait permettre d'émerger dans ce domaine.

Références[modifier | modifier le code]

  1. Les supercalculateurs les plus puissants de la planète et leur système d'exploitation

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]