Vous êtes sur la page 1sur 15

Architectures – Etat de l’art – Prof Richard GRISEL

Université de ROUEN 1. Introduction


IUT
La notion de parallélisme recouvre de nombreux concepts : création
76821 Mont Saint Aignan Cedex d'architectures, technologie de connexion, mise au point de l'environnement
(langages, systèmes d'exploitation), algorithmique et programmation.
Les systèmes informatiques constituent le support physique des machines
parallèles. Dans ces systèmes, la complexité et l’intégration en terme de
composants électroniques ne cessent d’augmenter. Sur ce support physique en
Architectures Multi-processeurs : Etat de l'art constante évolution, il appartient à l’ingénieur d’implanter des algorithmes
traduisant les différentes séquences nécessaires au traitement de l’application.
Reflet de l’imagination humaine pour décrire, quantifier, modéliser,
comprendre, voire gérer et contrôler son environnement, la complexité des
algorithmes ne semble pas avoir de limites, la réalisation matérielle quant à elle
en a quelques unes. Ainsi les puissances actuelles de calcul sont loin de
satisfaire la demande.
On peut donner comme exemple les applications de vision par ordinateur.
De nos jours, un système informatique correct adapté à l’imagerie doit être
capable de travailler sur des images de tailles allant de 512x512 à 4096x4096.
Par exemple, une image de taille 2048x2048 comporte un peu plus de 4 millions
de points élémentaires (pixels), avec le plus souvent un format allant de 16 à 24
bits. Associé à une contrainte de temps réel vidéo, le système doit pouvoir
donner des résultats de calcul tous les 9,5 ns ! A moins d’un traitement d’une
simplicité extrême, une machine séquentielle n’est pas capable aujourd’hui
Prof. R. Grisel d’une telle performance. Pour tenter de répondre à de tels besoins, on peut
améliorer les algorithmes, les simplifier et optimiser l’utilisation des ressources
de la machine. L’algorithme de la transformée de Fourier rapide en est un
exemple type. Mais là aussi des limites existent, liées à la complexité de
l’algorithme.
Le concept du parallélisme remet en question l’architecture même du
système informatique, bien que la majorité des processeurs modernes soient
prévus pour fonctionner en environnement multi-processeurs. Il consiste à faire
effectuer de manière concurrente sur des processeurs des tâches indépendantes à
un instant donné. Les dépendances entre tâches limitent le nombre possible de
processeurs pouvant travailler en parallèle.
Une machine parallèle regroupe deux concepts :
- la définition d’une architecture, c’est-à-dire les caractéristiques de
l’ensemble des processeurs qui traiteront les différentes tâches de
1
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
l’application. Leur nombre, leur agencement ainsi que leur support de P1 P2 P3 P4
communication dépendent de l’application. P1 P2 P3 P4
- le développement d’un algorithme parallèle, donnant le même résultat Mémoire
que l’algorithme séquentiel initial (si il existe), mais gérant au mieux de données
la concurrence intrinsèque de l’application.
Le but de cette partie est de préciser le contexte en effectuant une courte
synthèse des principales architectures rencontrées dans le domaine des doit être relativement élevé de manière à ce que les temps de chargement et de
machines parallèles. L'analyse du comportement de ces machines vidange deviennent négligeables par rapport au temps de traitement de
multiprocesseurs soulève de nombreux problèmes propres au parallélisme et l’application.
aux communications.
Figure 3.4.1.1 : Architecture d’un pipeline à quatre processeurs
En effet, l'augmentation du nombre de processeurs modifie énormément
la structure de base de l'ordinateur. Les problèmes des accès aux mémoires
deviennent cruciaux si les données doivent être acheminées au rythme du Historiquement c’est au début des années 50 et dès l’apparition des
traitement des processeurs. Les communications et la répartition du programme premiers ordinateurs que le recouvrement des opérations fût utilisé. L’UNIVAC
entre ces processeurs posent également d'importants problèmes. Des solutions 1 utilisait le recouvrement entre l’unité de contrôle, la mémoire, le système
ont été proposées et mises en oeuvre dans de nombreuses architectures. La d’entrées/sorties. Vers la fin des années cinquantes, la notion de pipeline a été
variété de ces machines ne permet pas de les classifier de manière simple. mise en œuvre pour l’accélération interne des ordinateurs, grâce au traitement
Néanmoins, parmi diverses tentatives, la classification de Flynn est devenue un en parallèle des différentes phases d’une instruction. Un programme étant une
standard [FLY66][FLY72]. suite d’instructions, le gain de temps fut dans certains cas spectaculaire. En effet
le rendement du premier ordinateur à utiliser ce mode de parallélisation interne
Dans un premier temps, nous présenterons les différents types de (ATLAS, 1956) fut mesuré pour une série d’additions flottantes ; le temps
machines, leurs avantages et inconvénients, en suivant la classification de moyen passait de 6.0 s à 1.6 s. Notons que ce type de parallèlisme interne est
Flynn. Dans un deuxième temps, nous mettrons en évidence les principaux aujourd’hui présent sur les microprocesseurs modernes, type RISC, voire CISC
problèmes rencontrés dans l'élaboration d'une machine multiprocesseur puis à cœur RISC (Pentium Pro).
dans sa programmation. Les mémoires caches feront l'objet d'une présentation Le problème majeur du pipeline est l’exécution d’instructions
particulière. Ces dernières seront traitées dans une autre partie du cours. conditionnelles (branchement par exemple) qui peut entraîner une vidange
complète du pipeline, ou encore la dépendance entre instructions successives
qui peut nécessiter une attente obligatoire. Pour résoudre cela, de nombreuses
2. La notion de Pipeline stratégies ont été mises en œuvre, allant de l’insertion de bulles (phase vide
d’attente d’un opérande ou le résultat d’un test), au ré-arrangement des
Cette façon relativement conservatrice d’accélérer un traitement repose instructions du programme pour ne pas avoir deux instructions successives
sur la décomposition du travail qui doit être effectué de façon répétitive. Un dépendantes. Dans tous les cas ces artifices sont réalisés par deux outils : le
traitement T est ainsi décomposé en N sous-traitements, affectés à P processeurs compilateur et l’optimiseur.
reliés entre eux linéairement (Figure 3.4.1.1).
A chaque période de temps définie, le résultat du traitement du processeur Le mode de parallélisation en pipeline trouve son efficacité dans les
Pi est transféré au processeur Pi+1. Ainsi après un temps nécessaire au traitements répétitifs et continus portant sur un grand nombre de données ; d’où
chargement des P processeurs, P traitements sont effectués en parallèle. Par son succès dans le calcul numérique et le traitement d’image de bas niveau.
contre, lorsque le processeur P0 traite le dernier élément, il faut attendre P Mais, dès que le flot de données varie sensiblement au cours de l’exécution du
pulsations pour que la vidange du pipeline soit effectuée et que le processeur programme, les temps de vidange et de chargement peuvent faire chuter les
PN-1 traite à son tour le dernier élément. Les performances d’une telle machine performances. Or certains algorithmes récursifs ont la particularité d’avoir un
sont étroitement liées au rapport (flot de données)/(nombre de processeurs) qui
2 3
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
nombre de tâches variables au cours de leur exécution. Il faut donc envisager
d’autres modes de parallélisation.
Un flot d'instructions est une suite d'instructions issues d'une partie de
3. Classification des machines multiprocesseurs contrôle en direction d'un ou plusieurs processeurs. Un flot de données est une
Partant du modèle de la machine séquentielle décrit par Von Neuman, la suite de données venant d'une zone mémoire en direction d'un ou plusieurs
duplication des différentes unités ainsi que leur interconnexion conduit à processeurs ou inversement des processeurs vers la mémoire.
différentes solutions suivant que :
- l’on multiplie ou non l’unité de traitement/etou l’unité de contrôle Quatre classes de base pour les machines ont été décrites :
- l’on distribue ou non la mémoire sur l’ensemble des processeurs
- l’on conserve la mémoire comme une seule entité ou bien comme un - les machines SISD (Single Instruction Single Data)
ensemble de « banques mémoire » ou « bancs mémoire ». - les machines SIMD (Single Instruction Multiple Data)
La Figure 3.4.1.1 présente les différentes formes d’unités au sens de Von - les machines MISD (Multiple Instruction Single Data)
Neuman. - les machines MIMD (Multiple Instruction Multiple Data)
Aucune des solutions ci-dessus n’est idéale, mais chacune possède des
caractéristiques plus ou moins adaptées à différents problèmes algorithmiques.
Afin de différencier les différents types obtenus, plusieurs classifications ont été 3.1 Les machines SISD
proposés, ce cours fera référence à la classification dite de Flynn qui, sans être
la meilleure, a le mérite d’être entré dans le langage courant de l’architecture Cette catégorie regroupe toutes les machines classiques monoprocesseurs
parallèle. Cette classification étant ancienne, quelques extensions et à simple flot de données du type Von Neuman sans considération quant à
propositions de classement seront introduites. l’architecture interne du processeur (ex : pipeline interne des instructions des
processeurs RISC ou DSP). Utilisées de manière individuelle, elles permettent
Accès au code tout au plus de simuler le parallélisme. Mises en réseau, ces machines peuvent
Unité formées une architecture de type multi-ordinateurs, dont le réseau est faiblement
Unitéde
decontrôle
contrôle ou moyennement couplé. La performance sera alors très dépendante du réseau;
Bus de contrôle
on utilisera donc cette solution pour valider un algorithme parallèle plutôt que
pour du calcul fortement parallélisé. Néanmoins les performances actuelles des
processeurs et notamment leur possibilité de mise en parallèle avec gestion de la
Unité mémoire partagée devrait aboutir dans un proche avenir à des avancées
MEMOIRE
MEMOIRE Entrées/Sorties Unitéde
de
Données Entrées/Sorties traitement intéressantes.
Donnéesetet traitement
Codes
Codes
3.2 Les machines MISD
Bus de données Cette classe est séparée en deux versions :
- la première se base sur une machine SISD intégrant « N machines
Figure 3.4.1.1: Schéma des unités au sens de Von Neuman virtuelles » qui opèrent sur des séquences de programme différentes les unes
Le travail essentiel d'un ordinateur est d'exécuter une suite d'instruction des autres. Chacune des machines virtuelles a accès à l’unité de traitement une
sur une série de données. En 1966, Flynn a donc classé les machines en fonction fois par cycle. Pour cela, elle a sa propre mémoire pour les instructions, la
de la multiplicité des flots d'instructions et de données disponibles communication entre les différentes unités apparaît seulement via la mémoire
matériellement [FLY66]. commune (et partagée) contenant les données (Figure 3.4.1.1). Cette description
s’apparente plus à une machine monoprocesseur multi-tâches à temps partagé.
4 5
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
Nous discuterons plus loin de la difficulté de classement de cette famille Le Pipe Line est plutôt utilisé à l'intérieur des nouveaux processeurs pour
d’architectures. augmenter leurs performances, ainsi que cela a été signalé précédemment.
Mémoire
Mémoirede
dedonnées
données
3.3 Les machines SIMD
Mémoire Unité
Unité Cette catégorie regroupe les machines ayant un grand nombre de
Unité d ’exécution de
instructions detraitement
traitement processeurs complètement synchrones avec leur propre unité de mémoire pour
stocker les opérandes. Un seul flot d’instructions (une seule unité de contrôle)
agit simultanément sur toutes les opérandes. La communication entre les unités
est réduite à un voisinage déterminé, donc statique. Tout se passe comme si on
Mémoire avait une machine monoprocesseur exécutant en parallèle ses instructions sur
Unité d ’exécution
instructions les tranches de données réparties sur les divers processeurs. A l’intérieur de
cette classe, FLYNN distingue 3 versions :
- les « Array Processor », ensemble d’unités de traitement banalisées,
Mémoire reliées entre elles, le plus souvent sous forme de grille ( Figure
Unité d ’exécution
instructions 3.4.1.1)
- les « Processeurs Associatifs », variante des « Array Processor », une
instruction est exécutée par une unité de traitement conditionnellement
à un registre qui lui est affecté
Figure 3.4.1.1 : Machine MISD première version
- le « Parallélisme fonctionnel »(Figure 3.4.1.2), chaque unité de
- la deuxième version impose un cheminement aux opérandes, ainsi le flot de traitement est spécialisée. L’unité de contrôle ne manipule plus des
données va être traité successivement par différentes unités, seule la première instructions mais des « vecteurs d’instructions ». Il n’y a pas de liaison
unité voit le flot de données initiales. Remarquons que ce type correspond à entre les différentes unités de traitement qui sont toutes reliées à la
l’utilisation du Pipe Line : le flot de données est unique mais il passe mémoire, seul lien de communication des données entre processeurs.
successivement dans plusieurs unités de traitement spécialisées (Figure Cela impose un haut débit d’accès à ces informations sous peine de
3.4.1.2). Le chemin des données peut être configurable ce qui permet créer des contentions et limite le nombre maximal d’unités de
d'implanter un traitement complet. traitement en parallèle. Notons que Flyn appelle ces machines
Mémoire Mémoire Mémoire
« Pipelined Processor » parce que l’architecture interne des « PE »
d'
instructions d'
instructions d'
instructions
peut être sous forme de Pipeline. Nous en resterons pour notre part à
l’aspect macroscopique de l’architecture.
Unité Unité Unité
d'
instructions d'
instructions d'
instructions
Ce type d'architecture est bien adaptés aux traitements de bas niveau, par
Mémoire
de
Unité de
traitement
Unité de
traitement
Unité de
traitement
exemple en traitement d’images, pour lesquels le même algorithme doit être
données
exécuté sur tous les pixels ou groupes de pixels d'une image. Cette architecture
permet des économies de matériel et de programmation par rapport à la solution
MIMD car seulement une unité de contrôle et une mémoire d'instruction sont
nécessaire pour le traitement.
Figure 3.4.1.2 : Principe d’une machine MISD deuxième version
Cette architecture est bien adaptée au traitement de bas niveau sur un flot La faiblesse de cette architecture est le traitement des boucles
de données pour lequel il peut se faire en temps réel, mais elle est très restrictive conditionnelles et des itérations : tous les processeurs ne doivent pas
et mal adaptée aux boucles conditionnelles. obligatoirement exécuter les instructions de la boucle, ils doivent au contraire
patienter pendant le traitement de cette dernière. Des problèmes apparaissent
6 7
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
également pour les accès aux données partagées qui ont lieu tous en même 3.4 Les machines MIMD
temps. Plusieurs solutions ont été mises en oeuvre pour exécuter des
algorithmes irréguliers et asynchrones en créant des noyaux spécifiques aux Dans cette architecture, les processeurs fonctionnent de manière
machines. On pourra consulter [SHU95]. indépendantes les uns des autres, ils possèdent leurs propres flots de données et
d'instructions. Il sont été décrits initialement comme une extension du type
MISD (chacune des machines virtuelles a son flot d’instructions et de données
Réseau de communication
maintenus ensemble dans une mémoire privée), puis est apparu la notion de
multiprocesseurs MIMD, configuration dans laquelle plusieurs monoprocessurs
physiquement complets et indépendants se partagent une mémoire à un niveau
quelconque pour une exécution coopérative d’un programme multi-tâches. Un
PE PE PE système de communication permet de faire passer les informations d'un
Unité
Unitéde
de ---- ---- ---- processeur à un autre : (données, résultats, synchronisation,...). L'exécution de
contrôle
contrôle Mém. Mém. Mém. boucles conditionnelles, d'algorithmes de haut niveau ne posent plus de
problèmes, le champ d'application devient illimité. Cependant de nouveaux
problèmes, liés au caractère asynchrone et non déterministe de ces architectures,
apparaissent : exclusion mutuelle, interblocage, divergence, cohérence des
données, méconnaissance de l’état global du système ...
N unités de traitement banalisées
Figure 3.4.1.1 : Schéma de principe d’un « Array Processor » D'autre part, l'accroissement du nombre de processeurs conduit au
problème de l'engorgement d'accès aux données communes si le réseau de
Vecteur d ’instructions communication n'est pas optimisé. Il existe de nombreuses solutions
Unité
Unitéde
de MM
contrôle électroniques pour la communication, la synchronisation, la répartition de la
contrôle EE
mémoire et des ressources communes. C'est pourquoi, on pourra différentier
MM
plusieurs classes de machines MIMD en fonction de leur réseau de
OO
communication :
II
PE PE PE RR - les systèmes multiprocesseurs à mémoire partagée
EE - les systèmes multiprocesseurs à mémoire répartie
- les SPMD (Single Program Multiple Data)
N unités de traitement spécialisée - les machines systoliques
Figure 3.4.1.2 : Principe du parallélisme fonctionnel
3.4.1 Les systèmes multiprocesseurs à mémoire partagée
On pourra citer comme exemple : Dans cette architecture, tous les processeurs se partagent une large
- la "Connection Machine 2" conçue par le Massachussetts Institute of mémoire commune, par l'intermédiaire d'un bus commun à tous les processeurs
Technology [HIL85][TMC90] qui possède 65536 processeurs 1 bit. (Figure 3.4.1.1). La synchronisation et l'essentiel des communications
- "l'ILIAC IV" conçue par l'Université de l'Illinois [BAR68] avec 64 s'effectuent par dépôts de messages dans la mémoire partagée. L'intérêt de ces
processeurs 64 bits. machine repose sur la simplicité de la programmation : les programmes
multitâches peuvent facilement y être implantés.
Cette solution est mal adaptée aux machines ayant un grand nombre de
processeurs, surtout lorsque toutes les unités veulent accéder la mémoire au
8 9
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
même instant. On parle alors de goulot d'étranglement. Pour réduire la optimiser les transferts, d'où l'apparition de nombreuses figures
fréquence des accès à la mémoire partagée, chaque processeur sera doté d'une d'interconnexion : anneau, tore, damier, cube, hypercube, arbre ...
mémoire locale contenant les instructions. L'ajout de mémoires caches, entre
chaque processeur et le bus partagé, permet de stocker les données les plus
Liens bidirectionnels
fréquemment utilisées par le processeur sans avoir à accéder à la mémoire
commune.
Processeur Processeur Processeur
Processeur Processeur Processeur ... Processeur
Mémoire
Locale
Mémoire
Cache
Mémoire
Cache
Mémoire
Cache
... Mémoire
Cache Processeur Processeur Processeur
Bus Partagé
Mémoire Partagée
Processeur Processeur Processeur
Figure 3.4.1.1 : Principe d'
une machine MIMD à mémoire partagée
Les inconvénients majeurs sont liés au caractère asynchrone et concurrent Figure 3.4.2.1 : Principe d'une machine MIMD à mémoire distribuée
de la machine : exclusions mutuelles, temps de communication aléatoires et non utilisant une topologie en damier
bornés, cohérence de données partagées. Des algorithmes doivent être mis en
place pour compenser ces problèmes et assurer un déroulement normal des Lorsque le nombre de noeuds (processeurs) devient important, il ne faut
traitements. pas que les communications monopolisent les processeurs au détriment des
calculs. C'est pourquoi les noeuds seront alors constitués d'une part du
On pourra citer en exemple les machines multiprocesseurs à mémoire processeur de calcul et d'autre part d'une unité spécialisée dans les
partagée suivantes : communications qui assure les fonctions de relais et de tampon sans interrompre
- BUTTERFLY de Bold Beranek Newman ACI [THO86]. les calculs.
- BALANCE et SYMMETRY de Sequent Computer Systems.
- C90 de Cray. Les inconvénients majeurs sont liés au caractère asynchrone et à la
méconnaissance de l’état global de la machine : exclusions mutuelles, famine,
3.4.2 Les systèmes multiprocesseurs à mémoire répartie ou distribuée temps de communication aléatoires et non bornés, cohérence de données. Des
algorithmes doivent être mis en place pour compenser ces problèmes et assurer
Chaque processeur possède sa propre mémoire locale, les informations un déroulement normal des traitements.
sont transmises d'un processeur à un autre par des liens de Figure 3.4.2.1]. En
général, ces liens sont bidirectionnels et possèdent un débit assez élevé. Dans Cette configuration est la plus répandue pour les grosses architectures
une machine possédant un nombre élevé de processeurs, il est impossible de parallèles :
tous les lier entre eux, chacun étant alors relié à ses proches voisins. Certains - PARAGON d'Intel,
processeurs jouent alors le rôle de relais pour permettre la communication entre
deux unités éloignées. La répartition des liens est donc importante pour
10 11
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
- Connection Machine 5 du Massachussetts Institute of Technology pour la circulation des données dans le réseau. Les machines systoliques font
[TMC92] qui utilise une topologie dite "fat-tree" plus performante couler le flot de données sur la grille des cellules-processeurs de la même façon
qu'un arbre classique, que les systoles du coeur rythment l'irrigation des organes du corps.
- l'hypercube iPSC de Intel [FRI91] .
Le développement des circuits VLSI a permis de nombreuses réalisations
L'apparition des Transputers (processeurs dédiés au parallélisme de machines systoliques régulières et performantes sur une seule puce.
contenant un gestionnaire de liens bidirectionnels et une gestion câblée de
commutation de taches) fut d'une grande utilité dans le développement des
architectures distribuées. 3.5 Topologies
On peut définir la topologie comme la structure matérielle du sous-
3.4.3 les machine SPMD (Single Program Multiple Data) système de communication qui relie les processeurs, les modules mémoire et les
contrôleurs d'entrées-sorties. Même si la topologie semble au premier abord un
Le mode SPMD est une alternative de fonctionnement simplifié implanté simple problème de connections informatiques, elle doit être prise en compte
sur de nombreuses machines réparties MIMD. dans la programmation parallèle pour en exploiter au mieux les performances.
Les instructions sont exécutées indépendamment d'un processeur à un Quelque soit le type de machine, il existe plusieurs possibilités pour la
autre mais la machine dans son ensemble reste synchrone : à la fin de topologie d'interconnexion entre les processeurs [JAC93] :
l'exécution de chaque étape du programme, l'ensemble des processeurs se
synchronisent avant d'effectuer des communications ou la suite du programme. - topologie en bus (bus simples, multiples ou hiérarchisés)
La programmation d'une telle machine est plus simple qu'une MIMD où les - topologie à connections directes (réseaux totalement connectés, en
processus sont indépendants les uns vis à vis des autres, mais le traitement des pipeline, en étoile, en anneau, réseaux en maille, en hypercube, en
boucles conditionnelles, itérations ne pose pas de problèmes comme sur une arbres, ... )
SIMD. - topologie à réseaux commutables utilisant des commutateurs
programmables aux intersections du réseau appelés "crossbar".
Néanmoins, le principal inconvénient de ces machines est que les temps
d'exécution et de communication sont imposés par le processus ou la
communication les plus longs. Il est donc capital de bien répartir la charge de 3.6 Les processeurs
travail entre les différents processeurs pour réduire les attentes.
Le choix du processeur dépend d'une part de la puissance et de
La Connexion Machine 5 et le supercalculateur PARAGON par exemple, l'application, mais aussi de la taille du réseau.
peuvent basculer en mode SPMD, ce qui simplifie leur programmation.
En effet, pour une machine ayant plus d'un millier de noeuds de calcul,
des processeurs élémentaires très simples seront préférés aux processeurs CISC1
3.4.4 les machines systoliques
(Intel x86, Motorola 80x, ...) ou aux gros processeurs RISC2 (SPARC, MIPS,
Ces machines sont réalisées à partir d'un réseau très régulier contenant un Intel, ...). C'est le cas de la "Connexion Machine 2" qui possède 65536
nombre important de processeurs élémentaires (cellules) connectés à leurs processeurs élémentaire 1 bit et de toutes les machines du type systolique
voisins par un maillage simple (orthogonal, hexagonal ou dodécagonal). La utilisant des circuits VLSI.
communication vers l'extérieur est assurée par les cellules de la périphérie qui
sont les seules à être connectées aux entrées-sorties. La majorité des machines parallèles ont été construites à partir de
processeurs standards construits en grande série dont les performances sont
Le fonctionnement de ces machines utilise à la fois la structure cellulaire
1
du réseau, adaptée au calcul vectoriel et matriciel, et le principe du pipeline, Complex Instruction Set Computer : Processeur utilisant un jeu d'instructions complexes.
2
Reducted Instruction Set Computer : Processeur utilisant un jeu réduit d'instructions.
12 13
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
largement suffisantes (on pourra consulter sur l'étude des processeurs RISC communications. De plus, le programmeur ne connaissant jamais parfaitement
[HEU90]). La raison principale est évidemment le coût supplémentaire de le temps d'exécution des taches sur la machine, la répartition du travail sur les
développement d'un nouveau processeur. processeurs ne sera jamais rigoureusement homogène.
Un nouveau type de processeur a été spécialement développé pour La loi d'Amdahl [HEN92] définit l'accélération pouvant être obtenue par
répondre aux besoins en communication. En effet, le Transputer est un l'utilisation d'un dispositif sensé améliorer les performances.
processeur RISC auquel on a ajouté certaines caractéristiques :
- il possède des liens bidirectionnels (4 ou 6), accessibles directement par temps d'exécution de la tâche sans l'amélioration
Accélération = ____________________________________________________
l'Unité d'Exécution. temps d'exécution de la tâche avec l'amélioration lorsque possible
- un gestionnaire de tâches permet l'implémentation du parallélisme des
tâches dans le Transputer de manière transparente pour le programmeur. Si on connaît l'accélération apportée par l'amélioration
La sauvegarde et restauration du contexte des processus sont effectuées (accélérationaméliorée) pendant la fraction de temps où l'amélioration est utilisée
très rapidement par le gestionnaire micro-codé. (fractionaméliorée), on pourra déterminer l'accélération globale au sens d'Amdahl
(accélérationglobale).
Par exemple, les machines TN300 [TEL96], commercialisées par
Tempsamélioré = tempsinitial * [ fractionaméliorée
_______________ ]
TELMAT MULTINODE supportent de 16 à 256 modules de calcul à base de (1 – fractionaméliorée) +
transputers T9000. Nous détaillerons ultérieurement le fonctionnement du accélérationaméliorée
transputer 32 bits T800 développé par la firme INMOS limited [INM88] qui 1
_______________________________
possède 4 liens bidirectionnels, une unité de calcul flottant et qui effectue la Accélérationglobale fractionaméliorée
commutation des taches en 1µs. = (1 – fractionamélioré) + _______________
accélérationaméliorée
4. Problèmes rencontrés pour la programmation parallèle Ainsi, une machine multiprocesseur, dix fois plus rapide que son
aînée monoprocesseur, fournira une accélération de 5.2 fois seulement, si
Il est beaucoup plus difficile d'écrire des programmes performants pour 10% de l'exécution n'a pas pu être parallélisé.
les machines parallèles que pour les machines séquentielles classiques pour
plusieurs raisons : fractionaméliorée = 0.9
- la gestion des communications, de la synchronisation et le partage des accélérationaméliorée = 10
données ne sont pas aisées. accélérationglobale = 1/(0.1 + 0.9/10) = 5.26
- la répartition des processus sur les divers processeurs de manière équitable
est très difficile si on veut obtenir une amélioration des performances
proportionnelle à l'augmentation du nombre de processeurs. 4.2 Communication
Le temps passé dans les communications entre les processeurs ou entre
On pourra néanmoins distinguer des problèmes plus liés à la conception
les processeurs et les mémoires est fondamental. Si celui-ci devient trop
de la machine et d'autres plutôt liés à sa programmation.
important les performances de la machine seront fortement dégradées par
rapport au système monoprocesseur.
4.1 Estimation des performances
Le temps de communication représente non seulement le temps nécessaire
En première approximation on pourrait penser que les performances à la mise en forme du message et à sa transmission, mais aussi au temps
augmentent linéairement avec le nombre de processeurs. Cependant, même si n d'attente pour obtenir le canal de communication. Lorsque le nombre de
processeurs ont la puissance pour terminer une tache n fois plus vite, il faudra processeurs augmente, les temps de communication peuvent tendre vers l'infini
absolument tenir compte du temps inévitablement perdu lors des à cause des goulots d'étranglement ainsi créés.
14 15
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
L’idée de base de l’algorithme de routage n’est pas de définir un seul
Lorsqu'il n'existe pas de systèmes pour synchroniser les échanges, le chemin reliant deux processeurs, mais plutôt de choisir un chemin pour chaque
temps de communication est indéterminé. Il est nécessaire de prendre des paquet de données de manière à contourner le chemin par défaut (le plus court)
précautions sur la validité des traitement ; en effet, lorsqu'un processeur utilise en cas d’encombrement du lien. Il faudra cependant prévoir un système de
des données, il faudra veiller à ce qu'elles ne soient pas obsolètes et savoir si tel contrôle de flux pour déterminer le chemin et un mécanisme d’accusé de
processeur a effectué des modification ou non. Si par contre, on synchronise les réception. Ces techniques sont largement développées dans les ouvrages traitant
communications, le système sera beaucoup plus déterministe mais sans doute de réseaux de communication [TAN90] [ABO90].
moins performant du fait des attentes inévitables.
4.5 Exclusion mutuelle, blocage mutuel et famine
4.3 Choix de la topologie
4.5.1 Exclusion mutuelle
Dans un réseau de n processeurs, il faudrait n*(n–1)/2 liens pour
connecter tous les processeurs entre eux. Lorsque le nombre de processeurs Il y a exclusion mutuelle entre deux processus lorsque l'exécution d'un
augmente, deux obstacles apparaissent : d'une part le coup du réseau devient processus ne peut avoir lieu en même temps que celle de l'autre processus. C'est
très élevé et d'autre part le nombre de liens disponible sur chaque processeur le cas d'une ressource critique qui ne peut être accédée par plus d'un
n'est plus suffisant (exemple : un transputer possède 4 liens). processeur à la fois (accès à la mémoire partagée, aux entrées-sorties,...).
Une fois le nombre de liens de chaque processeur limité à m liaisons, il Tout protocole d'exclusion mutuelle doit posséder un moyen de contrôle
reste cependant (n*m)! / (2*(n*m–2)!) topologies possibles. En fait, le choix de pour respecter les sessions critiques, gérer les accès et éviter les situations
la topologie dépendra du type de partage des données (système à mémoire d'interblocage (tous les processus sont en attente mutuelle).
partagée ou répartie) et du type d'application.
4.5.2 Blocage mutuel (deadlock)
Pour une topologie donnée, il peut exister plusieurs chemins entre deux
processeurs, le choix du chemin devra alors être judicieux pour optimiser les Il y a blocage mutuel (ou interblocage) entre deux ou plusieurs
performances du réseau. On parle alors d'algorithme de routage. processeurs lorsque chaque processeur est en attente de l'occurrence d'un
événement qui ne peut être produit que par un autre des processeurs en attente.
La topologie la plus séduisante est l'utilisation de commutateurs
programmables permettant de créer n'importe quelle topologie, mais le coût de L'apparition de blocages mutuels dépend non seulement de la topologie
ces "crossbars" est très élevé. du réseau mais aussi de l'algorithme de routage implanté. Suivant la fréquence
des blocages mutuels on pourra envisager plusieurs solutions, par exemple,
l'utilisation d'un algorithme de routage à cheminement (wormhole routing)
4.4 Routage
utilisant des mémoires tampon pour réguler le flot de données [MAY90].
L’objectif de l’algorithme de routage est d’optimiser les transferts de
données dans le réseau lorsque plusieurs chemin sont possibles. Le principal 4.5.3 Famine (starvation)
critère d’optimisation sera le temps nécessaire pour transférer les données du
noeud source vers le noeud destination. Cet algorithme n’est pas forcément La famine est un autre problème lié à la concurrence présente dans les
simple, car il faut tenir compte de l’encombrement des noeuds intermédiaires ; il machines multiprocesseurs. En effet, on définit la famine comme l'impossibilité
est possible d’avoir un temps d’attente inacceptable avant de pouvoir traverser pour un processeur P1 d'obtenir une communication avec un autre processeur
le noeud. Le trafic dans le réseau n’est pas forcément régulier, et un noeud P2 (ou une ressource R) déjà en communication avec un tiers et qui de ce fait
plutôt disponible peut être à un instant donné très demandé. n'est jamais à l'écoute de P1. Ce problème peut être résolu en établissant des
règles de priorité tournantes pour éviter d'isoler un processus.
16 17
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
Ainsi, la mémoire partagée ne sera consultée que pour l'accès aux données
partagées et pour la consultation et le dépôt de messages.
4.6 Organisation mémoire
La topologie du réseau et l'organisation de la mémoire sont étroitement
Mémoire Mémoire Mémoire ... Mémoire
liés. Locale Locale Locale Locale
Lorsque la mémoire est distribuée parmi les processeurs, les échanges de
données entre les processeurs peuvent devenir très fréquents si l'algorithme est Processeur Processeur Processeur ... Processeur
gourmand en données. Ainsi certains processeurs doivent interrompre leur
traitement pour jouer le rôle de relais. Pour libérer les processeurs relais de cette
astreinte, on pourra associer, à chaque processeur, une unité spécialisée dans les
communications qui assurera les fonctions de relais et de tampon sans Mémoire Globale Partagée
interrompre les calculs. Néanmoins, le choix de la topologie du réseau et une
programmation optimisée des échanges sont des atouts clefs pour minimiser les
accès aux données réparties dans le réseau. Figure 4.6.1.1 : Ajout de mémoires locales sur une machine MIMD à
mémoire partagée
Lorsque la mémoire globale est partagée, le problème des processeurs
intermédiaires est résolu car aucun processeur ne joue le rôle de relais. Par
4.6.2 Mémoires caches
contre, des conflits d'accès apparaissent lorsque plusieurs processeurs accèdent
la mémoire en même temps. On a alors un goulot d'étranglement qui va Les mémoires caches sont placées entre les processeur et le réseau qui le
provoquer des délais d'attente pour accéder à la mémoire. Pour remédier au relie à la mémoire partagée (le bus partagé par exemple) (Figure 4.6.2.1).
goulot d'étranglement, on pourra concevoir une organisation mémoire L'intérêt du cache est son temps d'accès beaucoup plus rapide que celui de la
hiérarchique par : mémoire principale, surtout en cas de surcharge du réseau. Ainsi, les données
les plus fréquemment consultées sont stockées dans le cache ce qui permet au
- l'ajout de mémoires locales, processeur, dans une majorité des cas, d'accéder directement à son cache et
- l'utilisation de mémoires caches, d'éviter ainsi la consultation de la mémoire partagée, on parle alors de réussite.
- regroupement des processeurs par grappes. Cependant, si la donnée n'est pas présente dans le cache il faudra accéder la
mémoire partagée, on parle d'échec. La nouvelle donnée sera alors chargée dans
Ces trois techniques utilisent une propriété assez générale de la majorité le cache pour un prochain accès.
des logiciels : la localité dans le temps et l'espace des accès mémoire. Dans
[HEN92], une loi empirique sur la localité est proposée : "près de 90% des
instructions exécutées dans un programme représentent 10% de son code". En
effet, la zone mémoire qui a la plus de chances d'être accédée est la dernière ou
la plus proche de la dernière à avoir été accédée. C'est pourquoi, il faudra
stocker cette zone mémoire dans la mémoire ayant le temps d'accès le plus
rapide.
4.6.1 Mémoires locales
En effet, une mémoire locale associée au processeur lui permet de stocker
les instructions et résultats intermédiaires ou à caractère local (Figure 4.6.1.1).
18 19
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
- une pile pour gérer le remplacement des blocs de données lors des échecs.
Processeur Processeur Processeur ... Processeur
Unité de Calcul
Mémoire Mémoire Mémoire ... Mémoire Processeurs ...
Cache Cache Cache Cache Unité d'
Interface avec le Bus
Bus local
Table locale
Mémoire Globale Partagée
Mémoire Unité de
Caches gestion
Statique du cache ...
Figure 4.6.2.1: Ajout de mémoires caches privées sur une machine Pile LRU
MIMD à mémoire partagée
Bus Partagé
Ce mécanisme permet de réduire une grande partie du trafic de données
sur le réseau partagé, mais de nouveaux problèmes apparaissent lors des Unité de gestion de
Mémoire la mémoire partagée
modification des données présentes dans les caches : on risque de perdre la Principale Mémoire principale partagée
cohérence des données (plusieurs caches peuvent contenir des valeurs Table principale
différentes de la même donnée). Il faudra alors mettre en place un mécanisme de
conservation de la cohérence de l'information dans les caches.
On pourra distinguer deux catégories de caches : Figure 4.6.2.2 : Schéma de principe d'
un système de cache pour
multiprocesseurs
- Le cache privé (cache-processeur) : chaque processeur possède une
mémoire cache au travers de laquelle il accède le réseau partagé. L'intérêt Plusieurs solutions peuvent s'envisager pour le rangement des blocs-mémoire
de cette solution est majeur : le cache étant près du processeur, ce dernier dans le cache :
n'accède le réseau qu'en cas d'échec. Les performances du cache sont alors
très bonnes si le taux de réussite est important. Par contre, il est - chaque bloc-mémoire a une seule et unique place possible dans le cache,
nécessaire d'assurer la cohérence de l'information entre les caches. celui-ci est alors appelé à correspondance directe. La correspondance est
généralement réalisée par la relation suivante :
- Le cache partagé (cache-mémoire et cache-disque) : chaque cache est
associé à un banc de mémoire pour en optimiser le temps d'accès. La numéro du bloc dans le cache = numéro du bloc-mémoire MODULO taille du
cohérence de l'information entre les processeurs est toujours conservée cache en blocs
puisqu'il n'existe alors qu'une seule copie de la donnée. Par contre, tous les
- chaque bloc-mémoire peut être placé dans un ensemble restreint de places
accès du processeurs utilisent nécessairement le bus partagé.
dans le cache, celui-ci est alors dit associatif par ensembles de blocs. En
Une mémoire cache est en général constituée de trois éléments (Figure 4.6.2.2) : effet, un bloc-mémoire peut être placé dans un seul et unique ensemble de
n blocs dans le cache. Le numéro de l'ensemble est généralement calculé
- une mémoire statique rapide (souvent à double accès) répartie en K blocs par la formule :
ou en ensemble de blocs contenant les données. numéro de l'ensemble = numéro du bloc-mémoire MODULO nombre
d'ensemble dans le cache
- une table (dite "locale") contenant le mot d'état de chaque bloc de
mémoire présent dans le cache (présent ou invalidé, lecture seule ou
lecture-écriture, modifié,...).
20 21
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
Le bloc-mémoire est alors placé dans n'importe lequel des n blocs de écriture" est associé à chaque bloc du cache pour savoir s'il est nécessaire
l'ensemble imposé. Le cache est souvent dit associatif par n blocs de recopier le bloc avant de le remplacer.
(couramment par 2,4 ou 8 blocs).
- chaque bloc-mémoire peut être placé n'importe où dans le cache, celui-ci 4.6.3 Architecture en grappes
est alors appelé totalement associatif. La position du bloc dans le cache Dans une architecture en grappes, les processeurs sont regroupés en
est alors sauvegardée dans la table locale. grappes : dans chaque grappe, les processeurs se partagent une mémoire et un
réseau internes à la grappe ; toutes les grappes se partagent entre elles le réseau
Il existe principalement deux types de remplacement possible en cas d'échec intergrappe et la mémoire globale partagée (Figure 4.6.3.1). Ainsi, on
pour les caches associatifs : distinguera les communications internes à chaque grappe et les communications
- Remplacement du bloc le plus ancien (LRU3) : pour utiliser au intergrappes. Si l'algorithme est bien décomposé sur les différentes grappes le
maximum la localité des accès on choisit de supprimer le bloc qui est resté temps de communication intergrappe sera alors très faible par rapport au temps
le plus longtemps dans le cache sans avoir été accédé (ce bloc est celui qui de calcul dans chaque grappe car le trafic sera réparti entre les différents
a la plus faible probabilité d'être référencé à nouveau). L'utilisation du réseaux.
LRU nécessite cependant l'utilisation d'une pile : les blocs-mémoire sont
placés dans la pile par ordre temporel de dernier accès, le bloc en cours Mémoire Mémoire
Locale Locale
d'utilisation étant placé au sommet. Le bloc à supprimer est alors celui qui de la de la
Processeur Processeur ... Grappe Processeur Processeur ... Grappe
se trouve tout en bas de la pile.
- Remplacement aléatoire : le numéro du bloc à remplacer dans le cache
Réseau local de la grappe
pour placer le nouveau bloc-mémoire est choisi aléatoirement. Ce
dispositif est le plus simple à mettre en oeuvre, mais il est moins Commutateur ... Commutateur
performant surtout pour les caches de petite taille.
Réseau intergrappe
Lorsque le processeur écrit sur une donnée présente dans le cache, il faut mettre
à jour la version du bloc présente en mémoire principale. Là encore, deux
solutions peuvent s'envisager pour le cycle d'écriture : Mémoire Globale Partagée
- L'écriture simultanée (ou transparente) : l'information est écrite à la fois Figure 4.6.3.1 : Machine MIMD à hiérarchie mémoire en grappes
dans le cache et la mémoire principale. C'est la solution la plus simple à
mettre en oeuvre. Par contre, toutes les écritures se traduisent par des accès
au réseau partagé, ce qui augmente la durée des écritures et encombre le La solution optimale est de cumuler tous ces artifices : utilisation
réseau. conjointe de mémoires locales et de caches et répartition du trafic de données
restant dans plusieurs réseaux. Quoiqu'il en soit, il faudra bien veiller à la
- L'écriture différée (ou recopie) : l'information est écrite uniquement dans cohérence des informations entre les différentes mémoires (système d'exclusion
le cache. La modification de la mémoire principale a lieu seulement au mutuelle, de mise à jour ou d'invalidation de données).
moment du remplacement du bloc dans le cache. Le réseau n'est alors
réquisitionné qu'en cas d'échec ou de remplacement d'un bloc modifié. Un autre problème des mémoires est leur système d'accès séquentiel. Il
Dans le cas des machines multiprocesseurs à caches privés, il faudra veiller est interdit d'effectuer plusieurs lectures simultanées du même bloc mémoire.
à conserver la cohérence des données si un autre processeur demande à C'est pourquoi on utilise des modules mémoire entrelacés.
accéder à une donnée modifiée. Un drapeau "modifié" ou "lecture-
3
Least Recently Used block.
22 23
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
4.7 Cohérence de l'information
Il existe également des techniques hybrides de gestion des écritures dans
Lorsqu'il existe plusieurs niveaux hiérarchiques de mémoire : mémoire les caches faisant appel tantôt à l'invalidation, tantôt à la mise à jour, en
locale, mémoire cache, mémoire globale,..., plusieurs copies du même bloc de fonction de certains critères comme la fréquence d'accès au bloc, le nombre de
données peuvent coexister en plusieurs endroits de la hiérarchie mémoire. Tant copies, etc. On pourra consulter l'étude comparative des mécanismes [TOU95].
qu'aucun processeur n'effectue de modifications de ces données, il n'y a pas de
problèmes. Par contre, si un processeur écrit sur un bloc de données dans sa
mémoire cache par exemple, il possédera alors dans son cache, une copie d'un
même bloc, mais différente des autres. On dit alors qu'il y a perte de la 4.8 Décomposition, équilibrage des charges et affectation
cohérence de l'information car une même donnée possède deux valeurs
différentes. Pour éviter la perte de la cohérence, il faut mettre en oeuvre des On appelle décomposition ou partitionnement ("partitioning") le
mécanismes pour supprimer ou mettre à jour les copies obsolètes du bloc de découpage d'un programme en plusieurs taches pouvant s’exécuter en parallèle.
données. On appelle également granularité du programme : la taille des taches (grains)
pouvant s’exécuter en parallèle. Un programme parallèle à grain fin est
Le principe de la conservation de la cohérence des caches est que constitué d'un nombre important de petites taches tandis qu'un programme à
plusieurs caches peuvent obtenir une copie du même bloc à condition que toutes gros grain est obtenu par un découpage en sous-programmes parallèles.
les copies soient identiques. Pour cela on met en place un algorithme d'écriture
dans le cache utilisant soit la technique de la mise à jour, soit celle de Les principales difficultés de la décomposition sont :
l'invalidation : - de ne garder qu'un minimum d'opérations non parallélisées,
- d'obtenir un bon équilibre des charges ("balancing").
- Dans le cas de la mise à jour, le processeur s'il désire modifier la copie du
bloc qu'il possède, doit modifier en même temps toutes les copies présentes En effet, pour obtenir un bon équilibre des charges il faut que les taches
dans les autres caches ainsi que celle qui se trouve dans la mémoire soient réparties de manière équilibrée dans la machine multiprocesseur et
principale. qu'elles puissent tourner simultanément. Il suffit qu'un processeur se mette en
attente (parce que sa tâche est plus courte) pour que le rendement de la machine
L'avantage de cette technique est la relative simplicité du mécanisme de soit diminué.
conservation de cohérence. Par contre, dans le cas où la proportion
d'écritures est assez élevée, le réseau de communication sera fortement L'affectation ou placement (task allocation) consiste à répartir les
encombré par toutes les mises à jour. différents processus, issus de la décomposition du programme, sur les
différentes ressources (processeurs, liens...). Bien évidemment, l'équilibre des
- Dans le cas de l'invalidation, le processeur s'il désire modifier la copie du
charges et l'affectation des taches vont de paire.
bloc contenue dans son cache, doit vérifier qu'il possède l'unique copie du
bloc en lecture-écriture (R/W4). Si ce n'est pas le cas, il doit consulter la
Une pile ou plusieurs piles contiennent les taches en attente d'exécution.
mémoire principale pour voir s'il existe d'autres copies du bloc et, dans le
L'affectation des taches pourra être réalisée de manière aléatoire, cyclique ou
cas échéant, les invalider. Lorsqu'un cache possède la version R/W d'un
dynamique. En effet, pour optimiser l'équilibrage des charges, on pourra utiliser
bloc et qu'un autre processeur réclame une copie de ce bloc, le contrôleur
une affectation dynamique des taches sur les processeurs pendant l’exécution en
de cache doit recopier la copie en mémoire principale et repasser l'état du
fonction de la disponibilité des processeurs. Une affectation dynamique est dite
bloc en lecture seule (RO4).
centralisée si elle est gérée par un processeur spécialisé dans cette application
L'avantage de cette technique est qu'elle n'encombre pas trop le réseau à
avec une seule pile de tache, elle est décentralisée si ce sont les processeurs qui
part pour les mises à jour de la mémoire principale. Par contre, il est
ont la charge de se répartir mutuellement les taches sur eux-mêmes pour
nécessaire de gérer les états des blocs et les signaux d'invalidation.
équilibrer le travail.
4
Read & Write et Read Only
24 25
Architectures – Etat de l’art – Prof Richard GRISEL Architectures – Etat de l’art – Prof Richard GRISEL
De nombreuses études ont été menées pour optimiser le placement 5. Conclusion
dynamique, on pourra consulter l'étude analytique comparée d'un mécanisme
hiérarchique de piles de taches [DAN95]. Au travers de cette synthèse, nous avons présenté les principales
architectures parallèles. Leur comportement asynchrone ainsi que le
parallélisme des tâches exécutées font apparaître un certain nombre de
4.9 Non déterminisme et terminaison des programmes problèmes nouveaux que nous avons énumérés.
Le non-déterminisme des applications parallèles vient des exécutions La mise au point de ce type de machines se heurte donc à ces problèmes
concurrentes et asynchrones des différents processus sur les différents spécifiques. La simulation du comportement de ces architectures parallèles
processeurs. En effet, un processus ne peut jamais prévoir quand les s'avère donc indispensable. En effet, la simulation reste un outil d'une grande
informations venant des autres processeurs arrivent, ni l'ordre de précédence, utilité pour le développement de machines mais aussi lors de la mise au point de
c'est à dire l'ordre dans lequel arrivent les informations. Ainsi, si la programmes parallèles.
programmation parallèle ne tient pas compte de ce non déterminisme, la suite de
l’exécution du programme devient imprévisible. Certains langages de Tandis que la simulation de programmes parallèles pourra s’effectuer sur
programmation parallèle, dont le plus connu OCCAM [JON88], proposent des un réseau d’ordinateurs multitâches du type Stations de travail, l’estimation de
opérations pour identifier, sélectionner, attendre les communications. la puissance de la machine, en termes d'échanges de données, fera par contre
appel à la simulation fonctionnelle.
La terminaison des programmes parallèles signifie la détermination de la
fin de l’exécution, c'est à dire la fin de tous les processus. Or il existe une Nous avons insisté plus particulièrement sur les problèmes de hiérarchies
probabilité non nulle qu'une tache soit bloquée ou sans fin, ce qui empêche mémoire, de cohérence des informations et de conflits d'accès aux ressources
d'une part la fin du programme et d'autre part en bloque d'autres. Il est communes car ceux-ci sont des paramètres primordiaux.
indispensable de mettre en place un système permettant de connaître l'état de
tous les processeurs (voire processus) de la machine pour contrôler l'état de
l’exécution. Un système de déblocage sera également très utile pour éviter des Références
attentes infinies. Enfin, la mise en place de commande de fin de taches est très
utile pour pouvoir lancer la fin du programme et obtenir une terminaison propre.
[FLY66] : M. J. Flynn, "Very High-Speed Computing Systems", proceedings
of the IEEE, vol. 54, n. 12, p. 1901-1909, Dec. 1966.
4.10 Conclusion [FLY72] : M. J. Flynn, "Some Computer Organization and their
Effectivenesses", IEEE Transactions on Computers, C-21, n. 9, p.
Le parallélisme souffre encore de grosses lacunes :
948-960, Sep. 1972.
- Absence d'un système d'exploitation universel dédié au parallélisme : [SHU95] : W. Shu, M. Y. Wu, "Asynchronous problems on SIMD Parallel
chaque concepteur de machine doit développé ou adapté un système Computers", IEEE Transactions on Parallel and Distributed Systems,
d'exploitation qui tienne compte de la structure des processeurs, du réseau, vol. 6, p. 704-713, Jul. 1995.
de la topologie, des liens de communication, etc.
[HIL85] : W. D. Hillis, "the Connection Machine", the MIT press, Cambridge,
- Difficulté de mise en oeuvre de programmes de parallélisation automatique MA, 1985.
: la décomposition des tâches est encore souvent effectuée manuellement [TMC90] : "Connection Machine model CM-2, technical summary", Technical
par chaque algorithmicien report, Thinking Machines Corporation, Nov. 1990.
- Manque de portabilité des programmes parallèles qui restent très [BAR68] : G. H. Barnes et al., "The ILIAC IV computer", IEEE Transactions
dépendants de la machine. on Computers, vol. 17, p. 746-757, 1968.
26 27
Architectures – Etat de l’art – Prof Richard GRISEL
[THO86] : R.Thomas, "Behaviour of the Butterfly Parallel Processor in the
Presence of Memory Hot Spots", IEEE Int. Conference on Parallel
Processing, p. 46-50, 1986.
[TMC92] : "The Connection Machine CM-5, technical summary", Technical
report, Thinking Machines Corporation, Jan. 1992.
[FRI91] : S. S. Fried, "Personal Supercomputing with the Intel i860", Byte, p.
347-358, Jan. 1991.
[JAC93] : J. L. Jacquemin, "Informatique parallèle et systèmes
multiprocesseurs", Editions Hermès, Paris, 1993.
[HEU90] : J. C. Heudin, C. Panetto, "Les architectures RISC", Bordas, Paris,
1990.
[TEL96] :"TN300 Product Overview", Telmat Multinode, Soultz, 1996.
[INM88] : "The Transputer Databook", INMOS Limited, Bristol UK., 1988.
[HEN92] : J. L. Hennessy, D A Patterson, "Computer architecture. A
quantitative approach", McGraw-Hill, Paris, 1992.
[TAN90] : A. Tanenbaum, "Réseaux : Architecture, protocoles, applications",
Interéditions, 1990.
[ABO90] : N. Abouchi, "Analyse et mesure de performance des réseaux de
communication par simulation", Thèse, INSA Lyon, n° 90ISAL0057,
1990.
[MAY90] : D. May, P. Thomson, "Transputers and Routers : Components for
Concurrent Machines", Proceedings of the 3rd Transputer/Occam
User Group Conference, IOS Press, Tokyo, p. 3-20, May 1990.
[TOU95] : F. M. Toussi, D. J. Lilja, "The potential of compile-time analysis to
adapt the cache coherence enforcement startegy to the data sharing
caracteristics", IEEE Transactions on parallel and distributed
systems, vol. 6, p. 470-481, May 1995.
[DAN95] : S. P. Dandamudi, P. S. P. Cheng, "A Hierarchical Task Queue
Organization for Shared-Memory Multiprocessor Systems", IEEE
Transactions on parallel and distributed systems, vol. 6, p. 1-16, Jan.
1995.
[JON88] :G. Jones, M. Goldsmith, "Programming in occam 2", Prentice Hall
Int., Hemel Hempstead (UK), 1988.
28

Vous aimerez peut-être aussi