2e Partie
2e Partie
ARCHITECTURE
AVANCÉES DE
L’ORDINATEUR
Cours à l’attention
des étudiants de L1S2 Licence PSIA
2021-2022
BATIOBO Etienne
batioboe@[Link]
PLAN DU COURS
Année 2021-2022
Évaluation diagnostique
Année 2021-2022
Accélération
L’accélération d’un programme parallèle (ou speedup) représente
le gain en rapidité d’exécution obtenu par son exécution sur
plusieurs processeurs.
3
LOI D’AMDAHL
Année 2021-2022
Décomposition d’un programme parallèle
Décomposition du temps d’exécution d’une application parallèle:
Une partie purement séquentielle ;
Énoncé
On note s la proportion parallélisable de l’exécution et p le nombre
de processus. Le rendement est donné par la formule :
R=
Remarques
si p-> ∞ , R=:
L’accélération est toujours limitée par la partie non-
parallélisable du programme
Si (1-s)->0, on a R ~ p : l’accélération est linéaire 4
PLAN DU COURS
Année 2021-2022
Évaluation diagnostique
de l’ordinateur
2ème Partie : Multitraitement
• Loi d’Amdahl
• Traitement vectoriel (opérations multimédias)
• Processeurs multicoeurs et multifilière
• Taxonomie de Flynn : Structures et architectures multiprocesseurs
• Systèmes de programmation multiprocesseur
• Unité de traitement graphique et processeurs graphiques spécialisés
• Introduction à la logique reconfigurable et aux processeurs spécialisés
3ème Partie : Interfaçage et stratégies Entrées / Sorties
4ème Partie : Les Périphériques
5
TRAITEMENT VECTORIEL (OPÉRATIONS MULTIMÉDIAS)
Année 2021-2022
Architectures vectorielles
Pipeline spécialisé pour application d'opérations sur plusieurs données
Chaque opération vectorielle peut traiter des dizaines de données à la fois
Propose il y a plus de 30 ans, utilise dans les supercalculateurs
Année 2021-2022
Architectures vectorielles
Un processeur vectoriel effectue des opérations sur des vecteurs
(tableaux linéaires de nombres).
1) Le calcul de chaque résultat est indépendant des précédents.
Année 2021-2022
Évaluation diagnostique
de l’ordinateur
Année 2021-2022
Un processeur composé d’au moins 2 unités centrales de calcul
sur une même puce.
Permet d’augmenter la puissance de calcul sans augmenter la
fréquence d’horloge.
9
PROCESSEURS MULTICOEURS ET MULTIFILIÈRE
Année 2021-2022
Exemples de processeurs multicoeurs
Année 2021-2022
Partage des caches L2 et L3
Partage du cache L2 (ou L3) :
communications plus rapides entre cœurs,
de l’ordinateur
migration des threads plus facile entre les cœurs,
contention au niveau de la bande passante et de la mémoire,
problème de cohérence.
Pas de partage entre les caches :
pas de contention,
communication/migration plus coûteuse, passage
systématique par le cache local.
La tendance :
cache L2 non partagé, cache L3 partagé (IBM Power5+
/Power6, Interl Hapertown / Nehalem).
11
PROCESSEURS MULTICOEURS ET MULTIFILIÈRE
Année 2021-2022
Architectures massivement parallèles
Problématique :
Consommation électrique : doubler la fréquence x8 de la
consommation électrique.
Solution
Blue Gene/P => augmenter le nombre de cœurs avec des
fréquences réduites.
12
PLAN DU COURS
Année 2021-2022
Évaluation diagnostique
de l’ordinateur
2ème Partie : Multitraitement
• Loi d’Amdahl
• Traitement vectoriel (opérations multimédias)
• Processeurs multicoeurs et multifilière
• Taxonomie de Flynn : Structures et architectures
multiprocesseurs
• Systèmes de programmation multiprocesseur
• Unité de traitement graphique et processeurs graphiques spécialisés
• Introduction à la logique reconfigurable et aux processeurs spécialisés
3ème Partie : Interfaçage et stratégies Entrées / Sorties
4ème Partie : Les Périphériques 13
TAXONOMIE DE FLYNN : STRUCTURES ET ARCHITECTURES
MULTIPROCESSEURS
Année 2021-2022
Classification de Flynn (1966) basée sur le type d’organisation du
flux de données et du flux d’instructions.
Parallélisme de données
de l’ordinateur
14
TAXONOMIE DE FLYNN : STRUCTURES ET ARCHITECTURES
MULTIPROCESSEURS
Année 2021-2022
SISD Single Instruction, une seule mémoire
Un ordinateur séquentiel qui n’exploite aucun parallélisme,
Architecture de Von Neumann
de l’ordinateur
15
PLAN DU COURS
Année 2021-2022
Évaluation diagnostique
de l’ordinateur
Année 2021-2022
Programmation des machines multiprocesseurs
Le programmeur doit indiquer, lors de la conception de son
application, quelles portions de code pourront être exécutées
de façon concurrente sur les différents processeurs de la
17
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR
Année 2021-2022
L’approche bibliothèque de processus légers
Les bibliothèques de processus légers fournissent des méthodes
de gestion des threads, et permettent la création explicite de
tâches dans les programmes.
Année 2021-2022
Les bibliothèques de niveau utilisateur
Dans le cas d’une bibliothèque de niveau utilisateur, les processus
légers sont gérés par un ordonnanceur opérant intégralement en
espace utilisateur, à l’intérieur même du processus créant des
Année 2021-2022
Les bibliothèques de niveau utilisateur (suite)
La gestion des entrées/sorties devient elle aussi un problème,
puisqu’un thread appelant une fonction potentiellement
bloquante, comme une écriture sur le disque, par exemple,
20
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR
Année 2021-2022
Les bibliothèques de niveau noyau
Dans une bibliothèque de niveau noyau, les processus légers sont
généralement gérés par l’ordonnanceur de processus du système, en
espace protégé. Ils sont appelés threads lourds, et correspondent
Année 2021-2022
Les bibliothèques hybrides
Une bibliothèque hybride déploie des threads utilisateur sur un
ensemble de threads lourds gérés par l’ordonnanceur système de
niveau noyau. En pratique, plusieurs threads noyau sont attribués à un
Année 2021-2022
Quelques bibliothèques de processus
La norme POSIX, créée en 1995, a standardisé l’interface des
processus légers (interface PTHREAD).
de l’ordinateur
23
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR
Année 2021-2022
NPTL
Native POSIX Thread Library est la bibliothèque de processus
légers intégrée à Linux.
de l’ordinateur
24
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR
Année 2021-2022
MARCEL
MARCEL est une bibliothèque de threads utilisateurs faisant partie de
la suite logicielle PM2, développée dans l’équipe RUNTIME du LaBRI.
Elle est dotée d’une interface POSIX et est configurable pour
Année 2021-2022
L’approche langage de programmation parallèle
Les langages de programmation parallèle masquent certains
aspects fastidieux de la gestion des processus légers, en
intégrant par exemple des mécanismes de création et
26
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR
Année 2021-2022
Cilk
Le but de Cilk est de permettre l’écriture de programmes parallèles
efficaces quel que soit le nombre de processeurs de la machine. Cilk-5
est une extension du langage C permettant de lancer des tâches de
Année 2021-2022
UPC
Le langage UPC (Unified Parallel C) créé en 2001 repose sur le concept de
mémoire virtuellement partagée (MVP) et s’adresse principalement aux
grappes, en particulier aux grappes de multiprocesseurs.
Année 2021-2022
OPENMP
Le standard industriel OPENMP définit un ensemble d’annotations pour
la parallélisation de programmes séquentiels. Ces dernières permettent
de créer un nombre concerté de threads, en relation avec la machine
Année 2021-2022
OMNI et OMNIST
OMNI et OMNIST Le compilateur de la suite logicielle OMNI a été
initialement pensé pour fournir une implémentation d’OPENMP
fonctionnant sur des ordinateurs à mémoire partagée, ou sur des
30
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR
Année 2021-2022
GOMP
GOMP Intègre à la récente version 4.2 de GCC, le compilateur
GOMP est capable de compiler des applications OPENMP
développées en C, C++ ou FORTRAN95, sur de multiples
31
PLAN DU COURS
Année 2021-2022
Évaluation diagnostique
de l’ordinateur
2ème Partie : Multitraitement
• Loi d’Amdahl
• Traitement vectoriel (opérations multimédias)
• Processeurs multicoeurs et multifilière
• Taxonomie de Flynn : Structures et architectures multiprocesseurs
• Systèmes de programmation multiprocesseur
• Unité de traitement graphique et processeurs graphiques
spécialisés
• Introduction à la logique reconfigurable et aux processeurs spécialisés
3ème Partie : Interfaçage et stratégies Entrées / Sorties
4ème Partie : Les Périphériques 32
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Poussées par une industrie du jeu vidéo de plus en plus exigeante,
les cartes graphiques modernes, communément appelées GPUs, pour
Graphics Processing Units, sont devenues de véritable plateformes de
calcul intensif.
Année 2021-2022
Du rendu 3D au calcul scientifique
La tâche la plus importante des GPUs modernes est le rendu 3D. Nous
pouvons décomposer cette tâche en deux grandes étapes :
1. La projection de la représentation 3D d’une scène sur un plan 2D
34
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Du rendu 3D au calcul scientifique (suite)
En effet, le rendu graphique se parallélisant assez naturellement, les
constructeurs ont décidé d’opter pour une architecture mettant en
scène un très grand nombre d’unités de calcul mises en parallèle.
Année 2021-2022
Architecture
L’architecture d’un GPU moderne est basée sur une grille
programmable. Les éléments de cette grille sont les Streaming
Processors, ou SPs. Une illustration est disponible à la figure 1.2.
36
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Principes d’organisation et d’architecture
de l’ordinateur
Architecture d’un streaming multiprocessor G80
Année 2021-2022
Programmation d’un GPU
Au niveau du GPU, nous disposons d’un ensemble de langages, nous
permettant de le programmer. Les langages les plus connus sont
CUDA et OpenCL.
Année 2021-2022
Architecture
Les différents fils d’exécution du kernel sont appelés threads. La
figure ci-dessous résume ce dernier paragraphe.
39
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Threads GPU
Lors de l’appel du kernel, les threads sont divisés en blocs. Les nombres
de blocs et de threads par bloc sont spécifiés à l’appel du kernel.
Ensuite, chaque bloc est accroché à un SM. Un maximum de 8 blocs
Année 2021-2022
Threads GPU
Dans un même warp, afin d’obtenir une exécution purement parallèle, les threads
ne peuvent pas diverger dans leurs instructions (par exemple, à cause d’un
branchement conditionnel).
de l’ordinateur
groupes suivant les différents chemins d’exécution possibles. Ensuite, les groupes
sont exécutés en série. Si jamais la divergence apparait au sein de warps différents,
elle n’a aucun effet.
Ce phénomène s’explique par la présence d’un seul circuit d’instruction
fetch par SM. En conséquence, tous les SPs voient la même instruction à
exécuter.
Remarquons que si seuls 8 SPs par SM sont disponibles, alors l’exécution
des 32 instructions courantes d’un warp prend 4 cycles. Dans le cas de
l’architecture Fermi, avec ses 32 SPs par SM, un seul cycle est nécessaire.
Avoir en permanence plusieurs warps à disposition permet au SM d’être
toujours actif : c’est-à-dire, de ne pas être bloqué par un warp, par exemple
en attente de données provenant de la mémoire.
Pour terminer, les architectures G80 à GT200 ne peuvent exécuter qu’un
seul kernel à la fois. L’architecture Fermi peut, quant à elle, gérer jusqu’à41
16 kernels concurrents.
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Threads CPU
Dans ce cadre, le concept de thread est légèrement différent : il
s’agit d’un fil d’exécution, ayant son propre flux de contrôle.
Nous pouvons en retirer que la différence fondamentale, entre
de l’ordinateur
threads CPU et GPU, est dans le flux de contrôle.
Les threads actifs du CPU ont leur propre flux de contrôle, ce qui
n’est pas le cas pour un thread GPU. Rappelons que les threads d’un
même SM partagent le même circuit d’instruction fetch.
42
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Mémoire
Dans les architectures des processeurs graphiques modernes, la
mémoire peut être divisée en trois niveaux : mémoire globale,
mémoire partagée et mémoire registre.
43
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Mémoire partagée
Comme nous l’avons vu, chaque SM dispose d’une mémoire,
dite partagée, de taille fixe. Cette mémoire est partagée par
tous les threads d’un même bloc.
44
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
GPU
45
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
GPU
Mémoire globale 6 banques de 128MB
Mémoire partagée 16 kB par SM
46
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Allocation des ressources mémoires
Lors de l’attachement d’un bloc à un SM, les ressources
mémoires pour tous les threads du bloc sont directement
allouées. Rappelons qu’un SM peut ordonnancer plusieurs
Année 2021-2022
Transferts
Des dispositifs de copie entre la mémoire RAM host et la RAM
device sont implémentés. Notons que ces copies peuvent être
synchrones ou asynchrones. L’avantage des copies asynchrones
48
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Paradigme SIMT (Single Instruction Multiple Thread)
Dans la section sur l’architecture, nous avons affirmé que, pour
avoir une exécution parallèle, les threads d’un warp ne doivent
pas diverger dans leurs instructions. Mais si tous les threads
49
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Les nombres en virgule flottante
Une grande évolution dans la technologie des GPUs est
l’adoption du standard IEEE 754.
de l’ordinateur
50
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Les nombres en virgule flottante
Remarquons que, même si certains GPUs implémentent la
double précision, les calculs en double précision sont largement
plus lents que ceux en simple précision.
51
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS
Année 2021-2022
Le multi–GPU
Afin d’augmenter les performances en termes de rendu, les
constructeurs de GPUs ont imaginé des dispositifs utilisant
plusieurs cartes graphiques.