INF6500 : Structures des ordinateurs

Transcription

INF6500 : Structures des ordinateurs
INF6500 :
Structures des ordinateurs
Sylvain Martel - INF6500
1
Cours 4 : Multiprocesseurs
Sylvain Martel - INF6500
2
Multiprocesseurs
Type
SISD
SIMD
MIMD
Communication
Shared memory
Message-passing
E/S
Centralisées
Distribuées
Hybrides
Synchronisation
HDW primitives
Lock (HDW: semaphore)
Barrier (Spin-lock)
Etc.
Groupe
Symmetric shared memory multiprocessors (SMP – UMA)
Mémoire distribuée et partagée (DSM – NUMA)
Mémoire distribuée non partagée (Multicomputer) – RPC
(Hybride)
Coherence Protocol
Directory-based
Snooping
Topologie
Single bus
Crossbar, etc.
Hiérarchie
Oui
Non
Sylvain Martel - INF6500
Snooping Protocol
Write invalidate
Write update (broadcast)
Processeurs
Simple pipeline
Superscalar
Granularité
Process
Thread
3
Performance Metrics pour communication
entre plusieurs processeurs
† Communication bandwidth
„ Limitée par le processeur, interconnections, au lieu
du mécanisme de communication
† Communication latency
„ Idéalement le plus bas possible, (sender overhead,
delais relié au lien de communication (FIFO), receiver
overhead)
† Communication latency hiding
„ Latence de communication en parallèle avec
computation
† Définitions: Bandwidth (bande passante), Throughput
(Débit), Latency (Latence)
Sylvain Martel - INF6500
4
Taxonomie des architectures parallèles
„
„
„
„
Un seul flot d’instruction, un seul flot de données (single
instruction, single datum - SISD) : c’est le monoprocesseur
commun.
Un seul flot d’instructions, plusieurs flots de données (single
instructions, multiple data - SIMD): La même instruction est
exécutée par plusieurs processeurs utilisant différents flots de
données. Chaque processeur a sa propre mémoire données, mais il
y a une seule mémoire d’instructions et un seul processeur de
contrôle qui lance les instructions.
Plusieurs flots d’instructions, un seul flot de données (multiple
instructions, single datum - MISD): aucune machine commerciale
de ce type n’a été construite à ce jour.
Plusieurs flots d’instructions, plusieurs flots de données (multiple
instructions, multiple data – MIMD): Chaque processeur lit ses
propres instructions et opère sur ses propres données.
Sylvain Martel - INF6500
5
SISD (Exemples)
Processeur
Mémoire
Data
Data
Mémoire
Dual-Port
Processeur
Processeur
Instructions
Data
Instructions
Instructions
Mémoire
Mémoire
Mémoire
Data
Sylvain Martel - INF6500
6
SIMD (Exemple)
Mémoire
Mémoire
Mémoire
Mémoire
Data
Data
Data
Data
Processeur
Instructions
Mémoire
Processeur
Processeur
Processeur
Sylvain Martel - INF6500
7
SIMD (Exemple - suite)
Data
Data
Data
Data
Processeur
Processeur
Processeur
Processeur
Instruction 1
Data
Data
Data
Data
Processeur
Processeur
Processeur
Processeur
Data
Data
Data
Data
Mémoire
Mémoire
Mémoire
Mémoire
Instruction 2
Sylvain Martel - INF6500
8
SIMD (Exemple - suite)
Data
Data
Data
Data
MUX
MUX
Data
Data
Data
MUX
Data
MUX
Processeur
Processeur
Processeur
Processeur
Data
Data
Data
Data
Mémoire
Mémoire
Mémoire
Mémoire
Instruction 1, 2, 1, 2, …
Sylvain Martel - INF6500
9
MIMD avec mémoire partagée ou
mémoire distribuée
†
Les premiers multiprocesseurs étaient SIMD. De nos jours, le
modèle MIMD a surgit comme l’architecture évidente à choisir
pour le multiprocesseurs d’usage général:
„
„
†
Flexible : peut fonctionner comme une machine simple utilisateur
destinée à la haute performance pour une application, comme une
machine avec multiprogrammation exécutant beaucoup de tâches
simultanément, ou selon une certaine combinaison de ces
fonctions.
Un MIMD peut être construit en s’appuyant sur les avantages coût
performance des microprocesseurs standard.
Les machine MIMD actuelles sont classables en deux groupes,
selon le nombre de processeurs.
„
Architectures à mémoire partagée centralisée
†
†
†
†
Au plus quelques douzaines de processeurs en1990
Se partagent la même mémoire physique
La connexion est typiquement réalisée par un bus
Temps d’accès uniforme pour chaque processeur
Sylvain Martel - INF6500
10
MIMD avec mémoire partagée
(centralisée) – Multi-thread Oriented
Mémoire Principale
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Inter-processors: Shared Memory Model
Sylvain Martel - INF6500
11
MIMD avec mémoires distribuées –
Multi-process Oriented
Processeur 1
Processeur 2
Processeur 3
Mémoire 1
Mémoire 2
Mémoire 3
…
Processeur N
Mémoire N
Inter-processors: Message Passing Model
Sylvain Martel - INF6500
12
Processes vs. threads
† Process:
„ Segment de codes qui peut-être exécuté
indépendamment par un processeur.
Chaque « process » est indépendant des
« processes » sur les autres processeurs
† Thread:
„ Lorsque plusieurs « processes »
partagent le code et la plupart de leurs
adresses mémoires, ils sont référés
comme des « threads ».
Sylvain Martel - INF6500
13
MIMD avec mémoire partagée centralisée Symmetric
Shared Memory Multiprocessors (SMP) ou UMA (uniform
memory access) – Contention sur le bus
Mémoire Principale
Processeur 1
Processeur 2
Processeur 3
Sylvain Martel - INF6500
Contention augmente
avec augmentation de N
…
Processeur N
14
Réduction de la performance à
cause du niveau de contentions
Performance
Nombre de processeurs
Sylvain Martel - INF6500
15
MIMD avec mémoire partagée centralisée –
Réduction du niveau de contention sur le bus avec
mémoires caches
Mémoire Principale
Contention augmente
moins avec augmentation
de N (possibilité d’ajouter
plus de processeurs)
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
16
Réduction de la performance à
cause du niveau de contentions
Performance
Avec cache
Sans cache
Nombre de processeurs
Sylvain Martel - INF6500
17
MIMD avec mémoire partagée centralisée –
Problèmes de cohérence entre les mémoires
caches (cache coherence)
Copies semblables
du bloc 0
Mémoire Principale
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
18
MIMD avec mémoire partagée centralisée –
Problèmes de cohérence entre les mémoires
caches (cache coherence) - Suite
Processeur 1 écrit
dans le bloc 0, donc:
différentes copies
du bloc 0
Mémoire Principale
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
19
Protocoles de cohérence de caches
(cache coherence protocols)
Write Invalidate Protocol
Snooping Protocols
(Shared Memory)
Write Update ou
Write Broadcast Protocol
Directory-based
Protocols
(Distributed Memory)
Sylvain Martel - INF6500
20
Protocoles de cohérence de caches
(cache coherence protocols)
Write Invalidate Protocol
Snooping Protocols
(Centralized (single)
Shared Memory)
Write Update ou
Write Broadcast Protocol
Directory-based
Protocols
(Distributed Shared Memory)
Sylvain Martel - INF6500
21
MIMD avec mémoire partagée centralisée –
Write Invalidate – T1
Processeur 1 écrit
dans le bloc 0, donc:
différentes copies
du bloc 0
Mémoire Principale
Snooping Bus
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
22
MIMD avec mémoire partagée centralisée –
Write Invalidate – T2
Met « invalide » la copie
du bloc 0 dans la
mémoire cache 3
Mémoire Principale
Note: pour maintenir
la demande de la
bande passante sous
Contrôle, il faut verifier si
un bloc est partagé ou non.
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
23
MIMD avec mémoire partagée centralisée –
Write Invalidate – T3
Processeur 3 lit
dans le bloc 0 mais
invalide, bloc 0 est
remplacé, puis il y a
lecture
Mémoire Principale
Note: Effet d’un tampon
d’écriture sur performance
de P1 et P3, etc.
2
Cache 1
Cache 2
Cache 3
1
Processeur 1
Processeur 2
…
Cache N
…
Processeur N
3
Processeur 3
Sylvain Martel - INF6500
24
MIMD avec mémoire partagée centralisée –
Write Invalidate – T4
Processeur 3 tente
d’écrire dans le bloc 0
mais P1 a exclusivité,
(exclusive accesses)
écriture non permise
Mémoire Principale
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
25
MIMD avec mémoire partagée centralisée –
Write Invalidate – T5
Le bloc 0 dans le cache 1
est remplacé par un
autre bloc
Mémoire Principale
Exclusive Accesses
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
26
MIMD avec mémoire partagée centralisée –
Write Invalidate – T6
Le bloc 0 dans le cache 3
est remplacé par un
autre bloc (dans aucun
autre cache)
2
Mémoire Principale
1
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
27
Protocoles de cohérence de caches
(cache coherence protocols)
Write Invalidate Protocol
Snooping Protocols
(Centralized (single)
Shared Memory)
Write Update ou
Write Broadcast Protocol
Directory-based
Protocols
(Distributed Shared Memory)
Sylvain Martel - INF6500
28
MIMD avec mémoire partagée centralisée –
Write Update or Broadcast – T1
Processeur 1 écrit
dans le bloc 0, donc:
différentes copies
du bloc 0
Mémoire Principale
Snooping Bus
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
29
MIMD avec mémoire partagée centralisée –
Write Update or Broadcast – T2
« Update » la copie
du bloc 0 dans la
mémoire cache 3
Mémoire Principale
Note: Avantages/désavantages
de « update » du bloc 0 dans la
mémoire principale, effet d’un
tampon d’écriture, etc.
Si broadcast
(autres copies du bloc 0)
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
30
MIMD avec mémoire partagée centralisée –
Write Invalidate – T3
Processeur 3 lit
dans le bloc 0, OK si
« update » du bloc 0
est terminé, sinon attend
Mémoire Principale
Note: Effet d’un tampon
d’écriture sur performance
de P1 et P3, etc.
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
31
MIMD avec mémoire partagée centralisée –
Write Update or Broadcast – T4
Processeur 3 tente
d’écrire dans le bloc 0
mais P1 a exclusivité,
(exclusive accesses)
écriture non permise,
(échec au cache)
Mémoire Principale
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
32
MIMD avec mémoire partagée centralisée –
Write Update or Broadcast – T5
Le bloc 0 dans le cache 1
est remplacé par un
autre bloc
Mémoire Principale
Exclusive Accesses
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
33
MIMD avec mémoire partagée centralisée –
Write Update or Broadcast – T6
Le bloc 0 dans le cache 3
est remplacé par un
autre bloc (dans aucun
autre cache)
2
Mémoire Principale
1
Cache 1
Cache 2
Cache 3
…
Cache N
Processeur 1
Processeur 2
Processeur 3
…
Processeur N
Sylvain Martel - INF6500
34
Write Invalidate vs. Write Update
ou Broadcast
† Write Invalidate plus populaire car
moins de trafic sur le bus, mais
possibilité dune plus grande latence si
un autre processeur a besoin de lire
un mot dans le même bloc.
Sylvain Martel - INF6500
35
Architectures de mémoires et
mécanismes de communication
† Mémoire distribuée et partagée (Distributed Shared
Memory – DSM architecture)
„ L’espace d’adresses est partagée entre les
processeurs même si la mémoire n’est pas
centralisée mais distribuée
„ Connue aussi sous le nom de NUMA (nonuniform
memory access) parce que le temps d’accès dépend
du lieu ou adresse du mot accédé dans la mémoire
† Symmetric Shared Memory Multiprocessors (SMP)
ou UMA (uniform memory access)
† Multicomputers (Message-passing multiprocessors)
„ Mémoire distribuée mais non partagée
„ Multiples espaces mémoires
„ Clusters: ordinateurs connectés par LAN avec peu
d’intéractions
Sylvain Martel - INF6500
36
MIMD avec mémoires distribuées
non-partagées avec caches
(message-passing multiprocessors)
Préférence
(shared-memory)
(message-passing)
Bus ou réseau d’interconnexions
Bus Interface
MEM 1
MEM 2
MEM 3
MEM N
Cache 1
Cache 2
Cache 3
Cache N
Processeur 1
Processeur 2
Processeur 3
Sylvain Martel - INF6500
…
Processeur N
37
MIMD avec mémoires distribuées
non-partagées avec caches – Remote Procedure Call (RPC)
1. P3 requiert DATA dans MEM 1, 2. DATA est envoyé par P1 à P3
Message-passing
Bus ou réseau d’interconnexions
MEM 1
MEM 2
MEM 3
MEM N
Cache 1
Cache 2
Cache 3
Cache N
Processeur 1
Processeur 2
Processeur 3
Sylvain Martel - INF6500
Note: Dans le cache ou non, cohérence, etc.
…
Processeur N
38
MIMD avec mémoires distribuées
partagées (DSM) avec caches
Bus ou réseau d’interconnexions
Bus Interface
MEM 1
MEM 2
MEM 3
MEM N
Cache 1
Cache 2
Cache 3
Cache N
Processeur 1
Processeur 2
Processeur 3
Sylvain Martel - INF6500
…
Processeur N
39
MIMD avec mémoires distribuées
partagées avec caches – Accès normale (comme uni-processeur
1. P3 requiert DATA dans MEM 1, 2. P3 accède MEM 1 comme un accès à MEM 3 amis
avec plus de cycles d’attente (Wait-states), possibilité de contention sur le bus partagé
donc plus long cycle d’accès à la mémoire M1
Shared-memory
Bus ou réseau d’interconnexions
MEM 1
MEM 2
MEM 3
MEM N
Cache 1
Cache 2
Cache 3
Cache N
Processeur 1
Processeur 2
Processeur 3
Sylvain Martel - INF6500
Note: Dans le cache ou non, cohérence, etc.
…
Processeur N
40
Protocoles de cohérence de caches
(cache coherence protocols)
Write Invalidate Protocol
Snooping Protocols
(Centralized (single)
or Symmetric Shared
Memory - SMP)
Write Update ou
Write Broadcast Protocol
Directory-based
Protocols
(Distributed Shared Memory - DSM)
Sylvain Martel - INF6500
41
MIMD avec mémoires distribuées
partagées avec caches – Cohérence avec l’ajout de « directories »
Shared-memory
Bus ou réseau d’interconnexions
MEM 1
MEM 2
MEM 3
MEM N
Cache 1
Cache 2
Cache 3
Cache N
Directory
Directory
Directory
Directory
Processeur 1
Processeur 2
Processeur 3
Sylvain Martel - INF6500
Note: Dans le cache ou non, cohérence, etc.
…
Processeur N
42
Directory
† Chaque « directory » est responsable pour
le « tracking » des caches qui partagent les
mêmes adresses de mémoire dans le noeud
(node).
† Le « directory » peut communiquer avec le
processeur et la mémoire à travers un bus
commun, ou il peut avoir un port séparé à
la mémoire, ou il peut être une partie d’un
contrôleur central du noeud où toutes les
communications intranodes et internode passent.
Sylvain Martel - INF6500
43
Synchronisation
† Primitives matérielles de base
(Hardware Primitives)
„ Atomic read and modify (test-and-set)
† Autres techniques de synchronization
„ LOCK
„ BARRIER (SPIN-LOCK)
Sylvain Martel - INF6500
44
Multi-threading avec un processeur
Thread 1
DMUX
Processeur
Thread 1
Pipeline 1
Mémoire
Pipeline 2
Sylvain Martel - INF6500
45
Multi-threading simultané avec un processeur
superscalaire (« converting thread-level
parallelism into instruction-level parallelism)
DMUX
INSTR1
INSTR2
Mémoire
Processeur
Pipeline 1
Pipeline 2
Sylvain Martel - INF6500
46
Autre exemple pour discussion
Mémoire Principale
Cache
Processeur 1
Processeur 2
Processeur 3
Sylvain Martel - INF6500
…
Processeur N
47
Autre exemple pour discussion
Mémoire Principale
Cache L2
L1
Processeur 1
L1
Processeur 2
L1
Processeur 3
Sylvain Martel - INF6500
L1
…
Processeur N
48
Autre exemple pour discussion
Mémoire Principale
(Variables)
C
Processeur 1
C
Mémoire Locale
(Instr., cte)
C
Processeur 2
C
Processeur 3
C
Mémoire Locale
(Instr., cte)
C
…
Processeur N
C
Mémoire Locale
(Instr., cte)
Sylvain Martel - INF6500
C
Mémoire Locale
(Instr., cte)
49
Autre exemple pour discussion
Mémoire Principale
(Variables)
E/S
C
Processeur 1
C
Mémoire Locale
(Instr., cte)
C
Processeur 2
C
Processeur 3
C
Mémoire Locale
(Instr., cte)
C
…
Processeur N
C
Mémoire Locale
(Instr., cte)
Sylvain Martel - INF6500
C
Mémoire Locale
(Instr., cte)
50
Autre exemple pour discussion
Mémoire Principale
(Variables)
C
Processeur 1
E/S
C
Mémoire Locale
(Instr., cte)
C
Processeur 2
E/S
C
Processeur 3
C
Mémoire Locale
(Instr., cte)
E/S
C
…
C
Mémoire Locale
(Instr., cte)
Sylvain Martel - INF6500
Processeur N
C
E/S
Mémoire Locale
(Instr., cte)
51
Autre exemple pour discussion
Mémoire Principale
(Variables)
CLUSTER
C
Processeur 1
C
Mémoire Locale
(Instr., cte)
C
Processeur 2
C
Processeur 3
C
Mémoire Locale
(Instr., cte)
C
…
Processeur N
C
Mémoire Locale
(Instr., cte)
Sylvain Martel - INF6500
C
Mémoire Locale
(Instr., cte)
52
Autre exemple pour discussion
(suite)
Message-passing
Cluster 1
Cluster 2
Cluster 3
Sylvain Martel - INF6500
Cluster N
53
Autre exemple pour discussion
Mémoire Principale
(Globale)
Shared-memory
C
Cluster 1
C
Cluster 2
C
Cluster 3
Sylvain Martel - INF6500
C
Cluster N
54
Autre exemple pour discussion
CROSSBAR
Message-passing
Cluster 1
Cluster 2
Cluster 3
Sylvain Martel - INF6500
Cluster N
55
Autre exemple pour discussion
Mémoire Principale
(Globale)
BANK 0
Mémoire Principale
(Globale)
BANK 1
…
Mémoire Principale
(Globale)
BANK 3
CROSSBAR
Shared-memory
C
Cluster 1
C
Cluster 2
C
Cluster 3
Sylvain Martel - INF6500
C
Cluster N
56
Sylvain Martel - INF6500
57

Documents pareils