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 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) E/S Centralisées Distribuées Hybrides Coherence Protocol Directory-based Snooping Snooping Protocol Write invalidate Write update (broadcast) Synchronisation HDW primitives Lock (HDW: semaphore) Barrier (Spin-lock) Etc. Topologie Single bus Crossbar, etc. Hiérarchie Oui Non Processeurs Simple pipeline Superscalar Granularité Process Thread Sylvain Martel - INF6500 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 Instructions Mémoire Mémoire Processeur Instructions Mémoire Processeur Instructions Mémoire Mémoire Dual-Port Sylvain Martel - INF6500 6
SIMD (Exemple) Mémoire Processeur Instructions Mémoire Mémoire Processeur Mémoire Processeur Mémoire Processeur Sylvain Martel - INF6500 7
SIMD (Exemple - suite) Processeur Processeur Mémoire Processeur Processeur Mémoire Processeur Processeur Mémoire Processeur Processeur Mémoire Instruction 1 Instruction 2 Sylvain Martel - INF6500 8
SIMD (Exemple - suite) MUX Processeur Mémoire MUX Processeur Mémoire MUX Processeur Mémoire MUX Processeur 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 Processeur N Mémoire 1 Mémoire 2 Mémoire 3 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 Contention augmente avec augmentation de N Processeur 1 Processeur 2 Processeur 3 Processeur N Sylvain Martel - INF6500 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 WriteInvalidate 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 WriteInvalidate 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 WriteInvalidate 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 Cache N 1 3 Processeur 1 Processeur 2 Processeur 3 Processeur N Sylvain Martel - INF6500 24
MIMD avec mémoire partagée centralisée WriteInvalidate 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 WriteInvalidate 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 WriteInvalidate 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 WriteInvalidate 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 Processeur N Sylvain Martel - INF6500 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 Processeur N Note: Dans le cache ou non, cohérence, etc. Sylvain Martel - INF6500 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 Processeur N Sylvain Martel - INF6500 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 Processeur N Note: Dans le cache ou non, cohérence, etc. Sylvain Martel - INF6500 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 Processeur N Note: Dans le cache ou non, cohérence, etc. Sylvain Martel - INF6500 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 DMUX Thread 1 Processeur Thread 1 Mémoire Pipeline 1 Pipeline 2 Sylvain Martel - INF6500 45
Multi-threading simultané avec un processeur superscalaire («converting thread-level parallelism into instruction-level parallelism) DMUX INSTR1 INSTR2 Processeur Mémoire Pipeline 1 Pipeline 2 Sylvain Martel - INF6500 46
Autre exemple pour discussion Mémoire Principale Cache Processeur 1 Processeur 2 Processeur 3 Processeur N Sylvain Martel - INF6500 47
Autre exemple pour discussion Mémoire Principale Cache L2 L1 L1 L1 L1 Processeur 1 Processeur 2 Processeur 3 Processeur N Sylvain Martel - INF6500 48
Autre exemple pour discussion Mémoire Principale (Variables) C C C C Processeur 1 Processeur 2 Processeur 3 Processeur N C C C C Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Sylvain Martel - INF6500 49
Autre exemple pour discussion E/S Mémoire Principale (Variables) C C C C Processeur 1 Processeur 2 Processeur 3 Processeur N C C C C Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Sylvain Martel - INF6500 50
Autre exemple pour discussion Mémoire Principale (Variables) C C C C Processeur 1 Processeur 2 Processeur 3 Processeur N C C C C E/S E/S E/S E/S Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Sylvain Martel - INF6500 51
Autre exemple pour discussion CLUSTER Mémoire Principale (Variables) C C C C Processeur 1 Processeur 2 Processeur 3 Processeur N C C C C Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Mémoire Locale (Instr., cte) Sylvain Martel - INF6500 52
Autre exemple pour discussion (suite) Message-passing Cluster 1 Cluster 2 Cluster 3 Cluster N Sylvain Martel - INF6500 53
Autre exemple pour discussion Shared-memory Mémoire Principale (Globale) C C C C Cluster 1 Cluster 2 Cluster 3 Cluster N Sylvain Martel - INF6500 54
Autre exemple pour discussion Message-passing CROSSBAR Cluster 1 Cluster 2 Cluster 3 Cluster N Sylvain Martel - INF6500 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 C C C Cluster 1 Cluster 2 Cluster 3 Cluster N Sylvain Martel - INF6500 56
Sylvain Martel - INF6500 57