Université Alger 1 Faculté des sciences Département Informatique 2ème année Master RSE 2022/2023 Architectures parallèles « L’architecture SIMD » 1 Dr HALFAOUI Fadhila Définition et architecture L’architecture SIMD est une architecture dont toutes les unités de traitement exécutent le même flux d’instructions qui opèrent sur des flux de données différents, Ce modèle est l’un des premiers modèles d’architecture parallèle, UC Flux d’instructions UC Unité de contrôle UT Unité de traitement M Mémoire locale UT1 ML UT2 ML UT3 ML Flux de données L’architecture SIMD Chaque processeur exécute la même opération que les autres mais sur des données différentes. Chaque processeur possède une petite mémoire locale. Ce modèle convient principalement pour des calculs numériques réguliers (comme le traitement d’images). Exemples : Cray-1 (1976), NEC SX-5, Tera/Cray SV1, Connection Machine CM 1(1985),… Actuellement GPUs (processeur graphique) L’architecture SIMD L’architecture SIMD est désormais utilisée essentiellement pour des applications très spécialisées. Le modèle SIMD a tiré sa popularité de sa simplicité pour le programmeur et pour l’architecte et le constructeur de machine. Le modèle SIMD n’exploite que le parallélisme de données. Il s’agit d’appliquer la même opération à une très grande quantité d’informations Machines spécialisées dans les traitements des tableaux (ARRAY Processors). Modèle d’exécution fortement synchrone. Caractéristiques Une seule unité de contrôle, Plusieurs unités de traitement, Registres et mémoires locale Les unités de calcul totalement synchronisées. Un seul cycle d’horloge par traitement et un seul compteur ordinal. Une instruction unique contrôle l’exécution simultanée de plusieurs éléments de calcul. Les unités d’exécution parallèles sont synchronisées et chaque unité a son propre registre d’adresses, Les processeurs vectoriels sont souvent considérés comme des architectures de type SIMD. Exemple de machine SIMD Institution Nom NB de processeur FPU Bande passante Bits par processeur MB/s Année Univ. Illinois ILLiac IV 64 64 2560 64 1972 Thinking machines CM2 65536 2048 16384 1 1987 Maspar MP1216 16384 0 23000 4 1989 Avantages et inconvénients Les avantages Meilleur avec le parallélisme à grand volume de données; Amortit le coût du contrôle à travers les nombreuses unités d’exécution; Réduit la taille de la mémoire de programme; L’inconvénient principal de l’architecture SIMD est : Peu adaptés à des instructions très variées, Les architectures SIMD sont utilisées dans le cadre spécifique de machines dédiées Processeurs vectoriels: SIMD à mémoire partagée Calculateurs SIMD qui peuvent opérer sur des vecteurs en exécutant simultanément la même instruction sur des paires d’éléments vectoriels et, donc, chaque instruction est exécutée par un élément de calcul séparé. Les processeurs vectoriels ont généralement des registres vectoriels qui peuvent stocker de 64 à 128 mots chacun Ils exécutent des opérations sur des scalaires et des instructions opérant sur des vecteurs, Dans une architecture SIMD, chaque traitement est exécuté sur un ensemble différent de données par unité de traitement différente. Les processeurs sont hautement spécialisés pour les problèmes numériques exprimés sous forme de matrice ou de vecteur, c’est à dire ils opèrent sur des vecteurs de données d’où le nom de processeurs vectoriels. La communication entre processeurs est prise en charge par le programmeur en utilisant un mécanisme d’échange de messages qui sert à traduire les transferts d’informations et les nécessaires synchronisations entre processeurs. Il existe plusieurs outils standards à utiliser pour cela, tels que: MPI, PVM, etc. Machines vectorielles Les architectures vectorielles sont des machines très coûteuses mais très performantes pour certaines applications. Exemple la machine CRAY (1976) est née suite à la nécessité d’exécuter les applications numériques plus rapidement que sur une machine séquentielle de l’époque. Architecture dédiée au traitement numérique. Machines vectorielles Ces applications utilisent principalement Des algorithmes d’algèbre linéaire, Des méthodes de résolution de système d’équations aux dérivés partielles Des méthodes de résolution de systèmes d’équations différentielles Des transformées (Fourier,…) Ces algorithmes sont caractérisés par : Des calculs en représentation à virgule flottante Un même calcul est appliqué à un très grand nombre de données Le jeu d’instructions comprend des instructions vectorielles qui s’appliquent à tous les éléments stockés dans les registres vectoriels opérandes. Instructions de sémantique forte (type CISC), c’est l’équivalent d’une boucle. Architecture de type LOAD/STORE, uniquement ces instructions référencent la mémoire le reste s’appliquent sur les registres vectoriels. L’addition est pipelinée. Machines vectorielles Performance L’exploitation pipelinée est la source des performances des architectures vectorielles. Si le temps de traversé de chaque étage = 1 cycle, il faut 4 cycles pour exécuter une addition dans le cas séquentiel. En cas de pipeline, un résultat est produit à chaque cycle (4 fois plus rapide). Les 4 premiers cycles correspondent au démarrage de l’instruction vectorielle. Les instructions LOAD/STORE sont aussi pipelinées Exécution d’une instruction vectorielle L’exécution d’une instruction vectorielle se résume dans les étapes suivantes : Chargement de vecteur depuis la mémoire vers le registre vectoriel. Opérations arithmétiques et logiques entre des vecteurs. Opérations entre des vecteurs et des scalaires. Placements des résultats dans la mémoire Architecture d’un processus vectoriel Mémoire Unité de calcul vectorielle Unité de lecture/écritur e Registres vectoriels Programmation Le paradigme de programmation Multithreading est le plus utilisé dans les architectures SIMD à mémoire partagé. Un thread est défini comme étant une courte séquence d'instructions pouvant être exécutée comme une seule unité par un processeur, La difficulté de ce modèle de programmation est la synchronisation des accès à la mémoire entre les tâches concurrentes. Multithreading La programmation parallèle la plus simple consiste à avoir plusieurs threads ou flots d’instruction qui s’exécutent en manipulant des données stockées dans une mémoire commune. Elle est donc naturellement le type de programmation le plus employé sur les architectures à mémoire partagées. Le Multithreading peut être vu comme un parallélisme d’instructions. Il consiste donc à décomposer un programme en plusieurs tâches (threads) qui peuvent alors être exécutées simultanément. Ce type de threads est souvent appelé des threads utilisateurs. Multithreading Le principal avantage du Multithreading est que cette solution est utilisable sur des architectures à mémoire partagée ce qui améliore efficacement les performances particulièrement en termes de temps de communication l’inconvénient majeur dans ce cas est le surcoût relatif au basculement entre threads. En effet, on doit enregistrer l’environnement d’exécution du thread qu’on veut mettre en attente et chargé les registres du processeur avec le contexte d’exécution du nouveau thread à exécuter Exemple: Soit l’ensemble de 16 nombres, les étapes du calcul de l’addition de ces nombres sur 4 processeurs en utilisant une architecture SIMD sont les suivants Étape 1: l’unité de contrôle divise les nombres en 4 sous-ensembles, un seul ensemble par processeur N1,N2,N3,N4 N5,N6,N7,N8 N9,N10,N11,N12 N13,N14,N15,N16 UC Exemple: Soit l’ensemble de 16 nombres, les étapes du calcul de l’addition de ces nombres sur 4 processeurs en utilisant une architecture SIMD sont les suivants Étape 2: calcul des sommes partielles sur les processeurs individuels; calcul sériel sur chaque unité R1=somme(N1,N2 ,N3,N4) R2=somme( N5,N6,N7,N8) R 3=somme( N9,N10,N11,N12) R4=somme( N13,N14,N15,N16) UC Exemple: Soit l’ensemble de 16 nombres, les étapes du calcul de l’addition de ces nombres sur 4 processeurs en utilisant une architecture SIMD sont les suivants Étape 1: La moitié des processeurs envoie les données, l’autre moitié les reçoit et effectue une addition. Le réseau d’interconnexion est utilisé pour communiquer les données R5=R1+R2 R2 R6=R3+R4 R4 UC Exemple: Soit l’ensemble de 16 nombres, les étapes du calcul de l’addition de ces nombres sur 4 processeurs en utilisant une architecture SIMD sont les suivants Étape 4: Étape 4: Additionner à nouveau les sommes partielles. Le résultat final est donc obtenue R7=R5+R6 UC R6 Exemple: Références Cours Dr. BENHAMIDA Nadjette : architectures parallèles