Telechargé par Yasmine Chiheb

SIMD

publicité
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
Téléchargement