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