Université Pierre et Marie Curie

Systèmes d'exploitation des ordinateurs

Chapitre 1. Les systèmes d'exploitation
Chapitre 2. Mécanismes d'exécution et de communication
Chapitre 3. Gestion des activités parallèles
3.1. Activités simultanées : pseudo parallèlisme
3.1.1. Classes de processus
3.1.2. Compétition entre processus
3.1.3. Machines multiprocesseurs et massivement parallèles
3.2. Mécanismes de synchronisation
Chapitre 4. Gestion des fichiers
Chapitre 5. Partage des ressources
Chapitre 6. Au-dessus du système d'exploitation
Chapitre 7. Notions sur les communications
Chapitre 8. Notions sur la sécurité
Bibliographie
Chapitre 9. Exercices et TPs
Examens
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

3.1.3. Machines multiprocesseurs et massivement parallèles

Le problème de la synchronisation des activités parallèles est déjà compliqué dans le cas de machines monoprocesseurs. Néanmoins les conflits sont encore relativement simples à régler car le processeur n'exécute qu'une instruction à la fois et un seul processus est actif. La recherche de performances toujours accrues a amené à concevoir des ordinateurs multi-processeurs à mémoire commune ou à mémoire séparée. La synchronisation des activités est plus compliquée que pour les machines mono-processuers car les processeurs travaillent de façon asynchrone.

Envisageons d'abord le cas des machines multiprocesseurs à mémoire partagée, c'est à dire les machines où pluisuers processeurs sont branchés sur une mémoire unique et doivent la partager la mémoire ainsi que les périphériques. Le temps de latence des dispositifs après lecture ou écriture par un processeur empèche les autres d'y accéder pendant ce temps. Le gain de puissance n'est pas linéaire avec leur nombre car les conflits d'accès à la mémoire ralentissent sensiblement leur activité dés que ce nombre dépasse quatre. Ceci est connu sous le nom de loi d'Amdhal et eput être représenté sensiblement par une exponentielle à coéfficient négatif. Les machines les plus puissantes dépassent rarement le nombre de 16 ou 64 processeurs même si certains constructeurs ont construit des systèmes à 128 processeurs ou plus mais il ne semble pas que cela apporte un gain réel de puissance.

Les machines massivement parallèles se distinguent des précédentes par le fait que chaque processeur possède une mémoire locale qui lui est propre. Dans la première génération les processeurs étaient tous synchrones et exécutaient tous la même instruction pendant un même cycle d'horloge. Ces machines travaillaient en mode SIMD (Simple Instruction Multiple Data) : chaque processeur, à un instant précis, traitait des données différentes avec une instruction identique d'un programme unique. La programmation était donc relativement simple. La difficulté essentielle était de coordonner les échanges d'information entre processeurs. Des chemins d'accès très rapides permettaient à un processeur  de communiquer avec les processeurs voisins mais cela était le talon d'Achille de ces machines. Les performances étaient très brillantes si on n'abusait pas de ce mécanisme de communication mais s'effondraient très rapidement dans le cas où on ne pouvait plus le maîtriser. Un exemple typique fût la CM2 de TMC.

Dans la seconde génération, l'augmentation de la puissance des processeurs et la possibilité d'installer des mémoires locales importantes a permis de les faire fonctionner de façon asynchrone. Il s'agissait de machines MIMD ou Multiple Instruction Multiple Data. Le concept a depuis évolué en SPMD: Simple Program Multiple Data, ce qui signifie que tous les processeurs exécutent au même instant des instructions différentes d'un programme unique avec des données différentes (Cray T3D, T3E). Enfin est apparu le modèle MPMD: Multiple Program Multiple Data. Chaque processeur exécute, au même instant, un programme différent avec des données différentes. Ce dernier modèle recouvre le précédent. Les processeurs doivent synchroniser leurs activités et on se trouve placé dans la même problématique que celle des machines monoprocesseurs multitâches mais avec des difficultés accrues parce qu'il est plus difficile de contrôler les échanges entre processeurs lorsqu'ils ne partagent pas une mémoire commune mais doivent échanger à travers un réseau d'interconnexion. Néanmoins ces ordinateurs sont maintenant employés partout où une puissance considérable est demandée, en calcul scientifique comme en transactionnel. Ils sont constitués de composants d'un prix raisonnable : processeurs et mémoires disponibles dans des stations de travail haut de gamme connectés au travers d'un réseau plus ou moins rapide selon le prix que l'on ait prêt à payer. Le coût de ce réseau d'interconnexion eput être comparable à celui d'acquisition des machines individuelles appelées noeuds.

Un supervieur logiciel gère l'ensemble et permet éventuellement de découper l'ensemble (plusieurs milliers de noeuds dans les projets les plus importants et couramment jusqu'à 512) en plusieurs sous machines. Chaque noeud peut lui-même être une machine multi-processeurs. La coopération des différents processus est réalisée en employant des bibliothèques spécialisées qui fournissent toutes les fonctions d'échange et de synchronisation nécessaires. La plus ancienne, encore employée est PVM (Parallel Virtual Machine) progressivement remplacé par MPI (Massively Parallel Interface) qui est plus efficace. La programmation est compliquée car l'utilisateur doit gérer lui-même les synchronisations. On trouvera une initiation dans le cours de calcul scientifique intensif.

La prochaine étape serait de masquer la complexité de ces communications inter-processeurs en simulant une mémoire globale unique : cela éviterait d'avoir à gérer spécifiquement les échanges d'informations entre mémoires. Des développements existent autour de HPF (Highly Parallel Fortran), un compilateur Fortran qui serait capable grâce à des instructions et des directives particulières de distribuer données et calculs sur n'importe quelle architecture. Cependant bien que les spécialistes y travaillent depuis plus de dix ans ces compilateurs ne fonctionnent de façon efficace que dans des cas très limités. On est encore très loin de la parallélisation automatique. Pour le moment la programmation reste affaire de spécialistes.


Copyright Yves Epelboin, université P.M. Curie, 2000, MAJ 4 avril, 2005

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante