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