La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

ASR5 Système pour architectures multicœurs CSC5001 : Systèmes Hautes Performances Architecte de Services informatiques Répartis Gaël Thomas

Présentations similaires


Présentation au sujet: "ASR5 Système pour architectures multicœurs CSC5001 : Systèmes Hautes Performances Architecte de Services informatiques Répartis Gaël Thomas"— Transcription de la présentation:

1 ASR5 Système pour architectures multicœurs CSC5001 : Systèmes Hautes Performances Architecte de Services informatiques Répartis Gaël Thomas gael.thomas@telecom-sudparis.eu

2 ASR5 Évolution de la puissance des machines 2Système pour architectures multicœurs Évolution Traditionnelle des mono-processeurs Accélération 1.8x 7x 3.6x Time: Moore’s law

3 ASR5 Évolution de la puissance des machines 3Système pour architectures multicœurs 3 Évolution Traditionnelle des mono-processeurs Accélération 1.8x 7x 3.6x Time: Moore’s law Consommation énergétique 1x 49x 7x

4 ASR5 Évolution de la puissance des machines 4Système pour architectures multicœurs 4 Évolution Actuelle des mono-processeurs Accélération Par processeur 1.8x Consommation énergétique 1x 12x 5x 1.8x1.8x

5 ASR5 Architecture d’un multicœurs Système pour architectures multicœurs5 5 Impossible d’utiliser une topologie classique à base de BUS! Pas assez de bande passante/trop de collisions RAM Ethernet Video

6 ASR5 Architecture d’un multicœurs 6Système pour architectures multicœurs 6 Pour passer à l’échelle, il faut changer la topologie RAM Ethernet Pont Sud

7 ASR5 Architecture d’un multicœurs 7Système pour architectures multicœurs 7 Un peu de terminologie Processing Unit (PU) Memory Management Unit (MMU) Cache Data Cache Code TLB Interrupt Controler (IC) Cœur Tuile ou Cluster Timer

8 ASR5 Architecture d’un multicœurs 8Système pour architectures multicœurs 8 Un peu de terminologie : die = ensemble de clusters correspondant à un circuit intégré unique (souvent die = cluster) Die

9 ASR5 Architecture d’un multicœurs Système pour architectures multicœurs9 9 Un peu de terminologie : package/socket = ensemble de dies identiques intégrés sur un même support (celui qu’on achète) Socket

10 ASR5 Architecture d’un multicœurs Système pour architectures multicœurs10 Un peu de terminologie Network On Chip (NOC) si sur un seul die Inter-connect si entre die Peut mixer les deux Network On Chip Inter-Connect

11 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs11 Problème : comment invalider une ligne de cache Protocole MOESI : état par ligne de cache Principe de transition : implémentation d’un verrou lecteur/écrivain États M ou E : verrou en écriture États O ou S : verrou en lecture État I : pas de verrou Duplication des états verrou en écriture ou lecture pour indiquer si la ligne est sale ModifiedOwnedExclusiveSharedInvalid Mémoire centraleIncohérente Cohérente RépliquéesNonOuiNonOuiIndéfini

12 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs12 Problème : comment invalider une ligne de cache Classiquement avec un bus unique : changement d’état via méthode de snooping (espionnage des demandes de lecture/écriture) Cache Ligne @x En lecture Ligne @x En lecture Demande d’acquisition En écriture De @x Invalidation Par snooping

13 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs13 Problème : comment invalider une ligne de cache Snooping ne passe pas à l’échelle car demande un broadcast RAM Ethernet Pont Sud

14 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs14 Problème : comment invalider une ligne de cache Solution : une table associant adresse physique avec cœurs qui cachent la ligne invalidations adressées explicitement aux cœurs qui cachent la ligne Problème : où placer cette table!

15 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs15 Solution : partitionnement de l’espace d’adressage physique  notion de nœud = ensemble de clusters gérant une partition mémoire (en général : un nœud = un die ou un nœud = un cluster) 0 à 1 Go1 à 2 Go2 à 3 Go 3 à 4 Go4 à 5 Go5 à 6 Go Noeud

16 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs16 Table d’association ligne de cache/cœur partitionnée sur les nœuds Une écriture vers la mémoire est effectuée via ce nœud (assure la cohérence) 0 à 1 Go1 à 2 Go2 à 3 Go 3 à 4 Go4 à 5 Go5 à 6 Go Noeud

17 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs17 Exemple : lecture de @X (nœud 3) à partir du cœur 5/4 Nœud 0Nœud 1Nœud 2 Nœud 3Nœud 4Nœud 5 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 @X0/1M

18 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs18 Nœud 0Nœud 1Nœud 2 Nœud 3Nœud 4Nœud 5 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 @X0/1M Demande d’acquisition En lecture De @x Exemple : lecture de @X (nœud 3) à partir du cœur 5/4

19 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs19 Exemple : lecture de @X (nœud 3) à partir du cœur 5/4 Nœud 0Nœud 1Nœud 2 Nœud 3Nœud 4Nœud 5 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Demande d’acquisition En lecture De @x @X0/1M

20 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs20 Nœud 0Nœud 1Nœud 2 Nœud 3Nœud 4Nœud 5 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Acquittement @X0/1O @X5/4O Ligne de @X Passe en lecture Exemple : lecture de @X (nœud 3) à partir du cœur 5/4

21 ASR5 Exemples de multicœurs Système pour architectures multicœurs21 64 cœurs de Tilera (unique die) 12 core Opteron 6174 (6 cœurs * 2 dies * 4 sockets = 48)

22 ASR5 Multicœurs et gestion mémoire Système pour architectures multicœurs22 Conséquences pour le programmeur du multicœurs Accès à la mémoire physique non uniforme : plus un nœud est proche du contrôleur RAM, plus il a un accès rapide Partitionnement de la mémoire sur les nœuds change les latences Deux types d’accès : accès local et accès distant

23 ASR5 Gestion mémoire sous Linux Système pour architectures multicœurs23 Augmenter la localité d’accès (i.e. accès plutôt à la mémoire locale au nœud) Trois principes : Eviter de migrer un processus d’un nœud sur un autre Essayer de maintenir les threads d’un processus sur le même noeud First-touch : lors du premier accès à une page non projetée en mémoire, la page physique est alouée sur le nœud local Table des pages d’un processus Nœud 1Nœud 2Nœud 3 Mémoire Physique de la machine Accès mémoire Threads du processus = page non projetée

24 ASR5 Gestion mémoire sous Linux Système pour architectures multicœurs24 Augmenter la localité d’accès (i.e. accès plutôt à la mémoire locale au nœud) Trois principes : Eviter de migrer un processus d’un nœud sur un autre Essayer de maintenir les threads d’un processus sur le même noeud First-touch : lors du premier accès à une page non mappée en mémoire, la page physique est alouée sur le nœud local Table des pages d’un processus Nœud 1Nœud 2Nœud 3 Mémoire Physique de la machine Threads du processus Allocation à partir du nœud 2 car thread s’exécute sur nœud 2

25 ASR5 Gestion mémoire sous Linux Système pour architectures multicœurs25 Quelques fonctions utiles Placement des processus et des threads setaffinity(ensemble E de cœurs) : oblige le scheduler à placer les threads du processus sur un des cœurs de E pthread_setaffinity(ensemble E de cœurs) : idem pour un thread Placement de pages : mbind(plage d’adresses virtuelle, ensemble de nœud) : demande à n’allouer la mémoire physique des pages qu’à partir de l’ensemble de nœuds madvise(plage d’adresses virtuelle, flag) : demande à libérer les pages physique de la plage d’adresse (permet de migrer) Allocation mémoire : numa_alloc_onnode(taille, nœud N) : malloc sur le nœud N

26 ASR5 Quelques OS Multicœurs Système pour architectures multicœurs26 Linux (et autres OS à mémoire partagée) : Tous les cœurs partagent leur mémoire Communication par mémoire partagée/lock + Interruption entre les cœurs Nombreuses optimisations (compteurs répliqués par cœur, RCU etc…) Performances bonnes jusqu’à 48 cœurs! [Boyd-Wickizer, OSDI 2010] Multikernel (Barelfish [Baumann, SOSP 2009], Helios [Nightingale, SOSP 2009]) : Pas de mémoire physique partagée entre les cœurs dans l’OS Communication par envoi de message (évite la contention sur lignes de cache) OS Clustering [Song, Eurosys 2011] : Chaque nœud exécute un Linux dans une machine virtuelle Les machines virtuelles utilisent des pages physiques différentes Communication entre les cœurs d’un nœud via mémoire partagée/lock Communication entre les nœuds via envois de message


Télécharger ppt "ASR5 Système pour architectures multicœurs CSC5001 : Systèmes Hautes Performances Architecte de Services informatiques Répartis Gaël Thomas"

Présentations similaires


Annonces Google