0% ont trouvé ce document utile (0 vote)
24 vues52 pages

2e Partie

Le document présente un cours sur l'organisation et l'architecture avancées de l'ordinateur, destiné aux étudiants de Licence PSIA. Il couvre des sujets tels que l'organisation fonctionnelle, le multitraitement, la loi d'Amdahl, le traitement vectoriel, les processeurs multicoeurs, et les systèmes de programmation multiprocesseur. Le cours inclut également des informations sur les périphériques et les stratégies d'interfaçage.

Transféré par

marechaldrabo
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
24 vues52 pages

2e Partie

Le document présente un cours sur l'organisation et l'architecture avancées de l'ordinateur, destiné aux étudiants de Licence PSIA. Il couvre des sujets tels que l'organisation fonctionnelle, le multitraitement, la loi d'Amdahl, le traitement vectoriel, les processeurs multicoeurs, et les systèmes de programmation multiprocesseur. Le cours inclut également des informations sur les périphériques et les stratégies d'interfaçage.

Transféré par

marechaldrabo
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

ORGANISATION ET

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

Principes d’organisation et d’architecture


de l’ordinateur
 1ère Partie : Organisation fonctionnelle de l’ordinateur
 2ème Partie : Multitraitement
• Loi d’Amdahl
• Traitement vectoriel (opérations multimédias)
• 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 2
LOI D’AMDAHL

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.

Principes d’organisation et d’architecture


de l’ordinateur
Mesure de l’accélération
 On la mesure par le rapport entre le temps d’exécution du
programme séquentiel et le temps d’exécution sur p
processeurs
Sp

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 ;

Principes d’organisation et d’architecture


de l’ordinateur
 Une partie parallélisable

É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

Principes d’organisation et d’architecture


 1ère Partie : Organisation fonctionnelle de l’ordinateur

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

Principes d’organisation et d’architecture


de l’ordinateur
 Jusqu'à récemment considéré comme trop coûteux pour les
microprocesseurs
 Coûteux en nombre de transistors et en bande passante à la mémoire
Principe de fonctionnement
 Lit de larges ensembles de données distribuées en mémoire
 Place ces ensembles dans de grands registres séquentiels
 Effectue des opérations sur ces registres séquentiels
 Ecrit les résultats en mémoire

Chaque opération traite un vecteur de données


 Dizaines d'opérations registre-registre indépendantes
 Permet l'amortissement de la latence des accès mémoire 6
TRAITEMENT VECTORIEL (OPÉRATIONS MULTIMÉDIAS)

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.

Principes d’organisation et d’architecture


de l’ordinateur
2) Une instruction vectorielle effectue une quantité importante de
travail, ce qui diminue le nb d'instruction.
3) Une boucle est remplacée par une instruction vectorielle. Les
branchements de boucle n'existent plus.

Chaque registre vectoriel est de longueur fixe et ne contient qu'un


seul vecteur.
Un registre vectoriel contient un nombre de mot allant de 64 à
1024 mots, ces mots ont une longueur de 64 bits.
Un mot est traité à chaque cycle d'horloge.
Chaque unité vectorielle de calcul est pipelinée.

Il existe dans ces architectures des registres scalaires pour les


opérations qui ne peuvent être vectorisées
7
PLAN DU COURS

Année 2021-2022
 Évaluation diagnostique

Principes d’organisation et d’architecture


1ère Partie : Organisation fonctionnelle de l’ordinateur

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 8
PROCESSEURS MULTICOEURS ET MULTIFILIÈRE

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.

Principes d’organisation et d’architecture


de l’ordinateur
 Et donc réduire la dissipation thermique.
 Et augmenter la densité : les cœurs sont sur le même support,
la connectique qui relie le processeur à la carte mère ne change
pas par rapport à un mono-cœur.

9
PROCESSEURS MULTICOEURS ET MULTIFILIÈRE

Année 2021-2022
Exemples de processeurs multicoeurs

Principes d’organisation et d’architecture


de l’ordinateur
10
PROCESSEURS MULTICOEURS ET MULTIFILIÈRE

Année 2021-2022
Partage des caches L2 et L3
 Partage du cache L2 (ou L3) :
 communications plus rapides entre cœurs,

Principes d’organisation et d’architecture


 meilleure utilisation de l’espace,

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.

Principes d’organisation et d’architecture


de l’ordinateur
 Memory wall : la vitesse d’accès à la mémoire augmente
beaucoup plus lentement que la puissance crête du
processeur.

 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

Principes d’organisation et d’architecture


 1ère Partie : Organisation fonctionnelle de l’ordinateur

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

Principes d’organisation et d’architecture


Parallélisme d’instructions

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

Principes d’organisation et d’architecture


SIMD Single Instruction, Multiple données

de l’ordinateur

Tableau de processeurs où chaque processeur exécute la même


instruction sur ses propres données locales
 MISD Multiple instructions, une seule mémoire
Une même donnée est traitée par plusieurs processeurs en
parallèle.
 MIMD Instructions multiples, Multiple données
Plusieurs processeurs traitent des données différentes, chaque
processeur possède une mémoire distincte.
L’architecture parallèle la plus utilisée.

15
PLAN DU COURS

Année 2021-2022
 Évaluation diagnostique

Principes d’organisation et d’architecture


1ère Partie : Organisation fonctionnelle de l’ordinateur

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 16
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR

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

Principes d’organisation et d’architecture


de l’ordinateur
machine.
 Il peut utiliser des bibliothèques spécialisées pour créer
explicitement des processus légers ou utiliser un langage
masquant certaines opérations de la parallélisation d’un
programme.

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.

Principes d’organisation et d’architecture


de l’ordinateur
 La gestion de ces dernières est souvent complexe et fastidieuse,
mais cette approche permet d’obtenir les meilleures
performances pour un problème donné.
 Elle autorise en effet un grand nombre d’optimisations qui, pour
être portables efficacement demandent cependant un réel
savoir-faire et un investissement conséquent en temps de
développement. Ces bibliothèques proposent aussi plusieurs
modes d’ordonnancements afin d’orchestrer l’exécution de ces
tâches.
 Nous présentons dans cette partie les trois grands types de
bibliothèques existantes.
18
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR

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

Principes d’organisation et d’architecture


de l’ordinateur
threads.
 Les primitives de gestion des processus légers sont performantes,
puisqu’elles ne nécessitent aucun appel système.
 Cette approche permet d’adapter le comportement de
l’ordonnanceur aux besoins de l’application, autorisant de
nouvelles fonctionnalités comme la migration de threads,
particulièrement utile pour de l’équilibrage de charge.
 De plus, les primitives de création et de gestion de threads sont si
peu couteuses qu’il est possible d’en créer plusieurs centaines
sans écrouler la machine.
 En revanche, une telle approche n’autorise pas plusieurs threads
d’un même processus à s’exécuter sur des processeurs différents.
19
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR

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,

Principes d’organisation et d’architecture


de l’ordinateur
provoque le passage de l’état du processus entier dont il fait
partie de «prêt» à «bloqué», interdisant de cette façon toute
exécution d’autres threads prêts de ce même processus.

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

Principes d’organisation et d’architecture


de l’ordinateur
physiquement à des processus dont la mémoire serait partagée avec
d’autres.
 Du point de vue de l’ordonnanceur, un thread lourd équivaut à un
processus.
 Cette approche permet la gestion d’architectures SMP, puisque
l’ordonnanceur système voit de la même façon les threads et les
processus. Il a donc connaissance de l’existence de ces processus légers
et peut les faire exécuter par n’importe quel processeur de la ma chine.
 De plus, ce type de bibliothèque offre une bonne interaction avec les
entrées/sorties, puisqu’un thread exécutant un appel bloquant ne gène
en rien l’exécution des threads du processus dont il fait partie.
 En revanche, la gestion de ces threads est très chère, la plupart des
primitives d’une telle bibliothèque nécessitant un appel système, et on
peut apparenter ces threads aux véritables processus. 21
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR

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

Principes d’organisation et d’architecture


de l’ordinateur
processus créant des threads utilisateur.
 On parle d’ordonnanceur N : M dans le cas où N threads utilisateurs
s’exécutent par l’intermédiaire de M threads noyau.
 Bien qu’un petit peu moins rapide qu’un ordonnanceur utilisateur pur,
cette approche offre de bonnes performances et supporte les
architectures SMP. Deux threads utilisateur, parmi les trois contenus
dans le processus de gauche, pourront s’exécuter en parallèle sur deux
processeurs différents, puisque le processus dispose de deux threads
noyaux, qu’on peut assimiler comme deux rampes de lancement vers
un des processeurs.
 Cette approche bénéficie aussi de la flexibilité des bibliothèques
utilisateur. Cependant, un tel ordonnanceur est plus complexe à mettre
en œuvre, et n’obtient pas les résultats d’une bibliothèque de niveau
noyau concernant les interactions avec les entrées/sorties. 22
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR

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).

Principes d’organisation et d’architecture


Ainsi, tous les systèmes d’exploitation UNIX en disposent et de

de l’ordinateur

nombreuses applications et bibliothèques l’utilisent. Comme


toute interface normalisée, PTHREAD ne répond pas à certains
besoins spécifiques. Aussi des bibliothèques de processus légers
aux fonctionnalités avancées continuent d’être développées.
 De nombreux codes peuvent alors être facilement portés vers
ces bibliothèques et légèrement modifiés pour tirer parti de ces
nouvelles fonctionnalités.
 Nous présentons dans cette partie deux bibliothèques de
processus légers.

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.

Principes d’organisation et d’architecture


Cette bibliothèque de niveau noyau a été écrite avec pour

de l’ordinateur

principaux objectifs une conformité parfaite à la norme POSIX.


Les fonctionnalités offertes par NPTL sont donc strictement
celles décrites dans la norme POSIX.
 L’exploitation des nouvelles fonctionnalités introduites dans les
noyaux Linux récents permettent à NPTL d’être plus performant
que ses prédécesseurs (LINUX-THREADS notamment).
 De plus, cette bibliothèque intègre un mécanisme de
synchronisation efficace, minimisant les sollicitations du noyau.

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

Principes d’organisation et d’architecture


de l’ordinateur
fonctionner en espace utilisateur ou en fonctionnement hybride.
 A l’origine, cette bibliothèque a été pensée pour faciliter la migration
de threads sur une machine, ou à travers un réseau, permettant ainsi
la mise en place de solutions d’équilibrage de charge.
 Aujourd’hui, cette bibliothèque fournit bien plus que cette simple
migration. Elle introduit notamment le concept de bulle, structure de
données permettant à l’utilisateur de regrouper des tâches par
affinité.
 Ces bulles peuvent exprimer des relations comme le partage de
données, la participation à des opérations collectives, ou plus
généralement un besoin de politique d’ordonnancement particulier.
 Ces politiques sont mises en œuvre à travers différents ordonnanceurs
qui prennent en charge la répartition de ces bulles selon différents 25
critères.
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR

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

Principes d’organisation et d’architecture


de l’ordinateur
synchronisation implicites de tâches.
 Ils apportent un confort de développement supérieur à celui
proposé par l’approche bibliothèque de processus, mais parfois
au détriment des performances, puisque de nombreuses
optimisations ne sont accessibles que lorsqu’on gère des
processus légers «à la main».
 Nous présentons ici quelques langages couramment utilisés
pour exprimer le parallélisme des applications.

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

Principes d’organisation et d’architecture


de l’ordinateur
manière extrêmement efficace : le surcoût du lancement d’une
nouvelle tâche n’est que de 2 à 6 fois le coût d’appel d’une fonction C
classique.
 Pour atteindre une telle efficacité, seuls quelques processus légers
(créés au démarrage du programme) s’exécutent et aucune
synchronisation entre eux n’est utilisée au cours du programme : ce
ne sont que des «conteneurs» du point de vue de Cilk.
 Les tâches ou fonctions à exécuter en parallèle sont rassemblées
dans une file de travaux. Ceux-ci sont choisis puis exécutés dès qu’un
processeur est disponible.
 Cette approche permet une parallélisation de programme très
efficace et pratiquement sans surcoût sur machine monoprocesseur,
mais ne s’applique qu’à des algorithmes récursifs, du type «diviser 27
pour régner».
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR

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.

Principes d’organisation et d’architecture


de l’ordinateur
 L’approche MVP apporte un grand confort d’utilisation puisqu’elle masque
au programmeur les accès distants à la mémoire, contrairement à
l’approche communication par messages explicites. Utilisée sans
connaissance de la répartition des données par rapport aux flots de
calculs, un effet « ping-pong » peut apparaître conduisant alors à des
performances catastrophiques.
 L’originalité du langage UPC est de permettre l’exploitation du modèle MVP
en distribuant dynamiquement le calcul par rapport au placement des
données.
 Pour cela le programmeur explicite les variables à partager, indique la
répartition et le type de cohérence mémoire qu’il désire leur appliquer.
 La distribution du calcul se fait par rapport aux données grâce à la
définition par le programmeur d’une information d’affinité au niveau de la
boucle à distribuer. Ainsi, pour tout indice k la somme a[k] = b[k] + c[k] 28
sera réalisée par le thread a proximité de la variable partagée a[k]..
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR

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

Principes d’organisation et d’architecture


de l’ordinateur
sur laquelle le programme est exécuté. L’utilisateur dispose de mots-
clés qu’il peut passer en paramètres d’une directive OPENMP, afin
notamment:
 d’exprimer la visibilité (privée ou partagée) de variables ;
 de spécifier le type de répartition d’indices lorsqu’on parallélise une
boucle ;
 de contrôler le nombre de threads créés pour exécuter une section
parallèle.
 Le standard définit aussi des primitives automatisant les mécanismes
de synchronisation, d’exclusion mutuelle ou encore de terminaison de
threads. Son comportement, est basé sur le modèle Fork/Join4 qui
décrit la création de threads par le processus invoquant une section
parallèle (fork), et l’attente de ces threads par ce même processus
avant de continuer son exécution (join). 29
SYSTÈMES DE PROGRAMMATION MULTIPROCESSEUR

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

Principes d’organisation et d’architecture


de l’ordinateur
grappes de machines, de façon transparente pour l’utilisateur.
 OMNIST est un portage du compilateur OMNI sur la bibliothèque de
processus légers STACKTHREADS/MP, développée dans l’optique de
supporter de façon efficace les sections parallèles imbriquées.
 Pour ce faire, OMNIST met en œuvre un processus de création
paresseuse de tâches, permettant de différer l’allocation réelle d’un
processus léger au moment de son exécution effective.
 Cette approche réduit considérablement le coût de création d’un
thread. De plus, OMNIST utilise un vol de travail actif, nécessitant
l’appel à une fonction de la bibliothèque de façon régulière pour
distribuer les threads entre les différents processeurs.

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

Principes d’organisation et d’architecture


de l’ordinateur
architectures.
 Le support exécutif de GOMP autorise les sections parallèles
imbriquées, et ne limite pas le nombre de threads créés comme
OMNI.
 Il permet donc de surcharger les processeurs, c’est-à-dire définir
plus de threads que de processeurs, mais n’offre aucun
mécanisme adapté au bon déroulement de cette surcharge,
n’assurant en rien la performance d’une application à
parallélisme imbriqué.

31
PLAN DU COURS

Année 2021-2022
 Évaluation diagnostique

Principes d’organisation et d’architecture


 1ère Partie : Organisation fonctionnelle de l’ordinateur

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.

Principes d’organisation et d’architecture


de l’ordinateur
 Partant de ce constat, des sociétés comme NVIDIA ou AMD, se sont
mises à développer des architectures, permettant le développement
et l’exécution de codes généraux sur GPU.
 Cette nouvelle approche de la programmation porte le nom de
General-Purpose computing on Graphics Processing Units, ou GPGPU.
 L’attrait des processeurs graphiques, dans la résolution de problèmes
de calcul scientifique, réside dans deux points importants. Tout
d’abord, comme nous le verrons dans ce travail, les GPUs nous
offrent une architecture massivement parallèle.
 Ainsi, si nous trouvions un moyen d’exploiter efficacement les GPUs,
nous pourrions accélérer significativement une large gamme de
codes de calculs. Deuxièmement, l’intérêt des cartes graphiques
réside dans leur faible coût, par rapport au prix d’un microprocesseur
33
classique.
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS

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

Principes d’organisation et d’architecture


de l’ordinateur
2. La pixellisation de l’image 2D
 Tout le hardware d’un GPU s’articule autour de ces deux objectifs.
 A l’aube du traitement graphique, les algorithmes de rendu étaient
encodés une fois pour toutes sur la puce.
 En d’autres termes, aucune modification des algorithmes ne pouvait
être apportée. Très vite, les constructeurs ont rendu certaines parties
du processeur programmables : le calcul sur GPU était né.
 L’avantage avec l’utilisation de processeurs graphiques, pour
résoudre des problèmes de calcul intensif, est de pouvoir tirer parti
du degré élevé de parallélisme de ces processeurs.

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.

Principes d’organisation et d’architecture


de l’ordinateur
 Cette approche est très différente de ce qui est choisi pour un CPU. Pour
celui-ci, une grande partie de la surface de la puce est dédiée à la
mémoire et au contrôle.
 Ainsi, seule une faible portion du CPU est dédiée au calcul proprement
dit.
 Nous appellerons device, l’ensemble constitué :
 du GPU
 de mémoires RAM propres au GPU
 d’une interface avec une carte mère
 Nous appellerons host, l’ensemble constitué :
 du CPU
 de mémoires RAM accessibles depuis le CPU
 de la carte mère 35
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS

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.

Principes d’organisation et d’architecture


de l’ordinateur
 Notons qu’un SP est capable d’effectuer une opération réelle
d’addition et de multiplication en un cycle.
 Les streaming processors sont groupés par Streaming
Multiprocessors, également appelés SM. En plus des SPs, ceux-ci
offrent une cache d’instructions, un circuit d’instruction fetch, de
la mémoire partagée, de la mémoire registre et des unités de
calcul de fonctions transcendantes, appelées SFUs (Special
Function Units).
 Une illustration est disponible à la figure suivante.

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

 L’architecture G80 possède 16 streaming multiprocessors, contre 30 pour


l’architecture GT200.
 Notons que la dernière architecture née des laboratoires NVIDIA, l’architecture
Fermi, possède 32 SPs par SM.
 Pour ce qui est des générations antérieures, elles ne disposent que de 8 SPs
par SM. Notons que les nombres annoncés ne sont valables qu’en simple 37
précision.
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS

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.

Principes d’organisation et d’architecture


de l’ordinateur
 Au niveau du CPU, nous disposons d’un ensemble de fonctions
permettant de contrôler le GPU. Il existe différentes librairies
permettant ce contrôle. Celles-ci sont spécifiques au langage utilisé
pour programmer le GPU.
 Grâce à ces fonctions, le CPU est capable de démarrer l’exécution
d’un code sur le GPU. Nous avons donc un code, appelé depuis le
CPU et lancé sur le GPU. Un tel code est appelé kernel.
 Au niveau du CPU, l’appel d’un kernel est toujours asynchrone : une
fois le kernel invoqué, le CPU passe directement à l’instruction
suivante, que le kernel ait fini son exécution ou non.
 En plus de demander le lancement d’un kernel, le CPU a l’obligation
de donner le nombre d’exécutions désiré du kernel. Ces exécutions
seront, autant que faire se peut, parallèles. 38
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS

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.

Principes d’organisation et d’architecture


de l’ordinateur
 Notons que, puisque le CPU a l’obligation de donner le nombre
d’exécutions du kernel, ce nombre doit être connu avant l’appel.
En d’autres termes, il est impossible de modifier a posteriori le
nombre de thread.

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

Principes d’organisation et d’architecture


de l’ordinateur
peuvent être liés à un même SM. Les blocs ne trouvant aucun
multiprocessor libre sont mis en file d’attente. Un bloc est décroché
d’un SM dès que tous ses threads ont finis leurs exécutions.
 En plus de la limitation de 8 blocs par SM, celui-ci ne peut ordonnancer
qu’un nombre limité de warps :
 maximum 24 warps pour l’architecture G80
 maximum 32 warps pour l’architecture GT200
 maximum 48 warps pour l’architecture GF100
 Les threads d’un bloc sont divisés en groupes de 32, appelés warps.
Notons qu’un bloc peut contenir un maximum de 512 threads, soit 16
warps.
 Le nombre de threads résidant dans un SM peut être supérieur au
nombre de SPs. Les threads sont alors ordonnancés temporellement 40
entre les SPs.
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS

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).

Principes d’organisation et d’architecture


 Si nous nous retrouvons dans cette configuration, les threads sont divisés en

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

Principes d’organisation et d’architecture


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.

Principes d’organisation et d’architecture


de l’ordinateur
 Mémoire globale
 La mémoire globale est de type DRAM. Il s’agit d’une
mémoire de très grande capacité, mais à accès lent.
 Cet étage de mémoire est accessible par tous les threads.

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.

Principes d’organisation et d’architecture


de l’ordinateur
 Étant donné qu’un SM peut ordonnancer plusieurs blocs,
cette mémoire devra être répartie entre les blocs d’un même
SM.
 Mémoire registre
 Comme nous l’avons vu, chaque SM dispose d’une mémoire,
dite registre, de taille fixe. Cette mémoire est privée à
chaque thread.
 Étant donné qu’un SM peut ordonnancer plusieurs threads,
cette mémoire sera répartie entre les threads d’un même
SM.

44
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS

Année 2021-2022
GPU

Principes d’organisation et d’architecture


de l’ordinateur
Vue logique de la mémoire d’un 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

Principes d’organisation et d’architecture


de l’ordinateur
Mémoire registre 32 kB par SM

Table: Taille des différentes mémoires pour l’architecture G80

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

Principes d’organisation et d’architecture


de l’ordinateur
blocs : les ressources mémoires de leurs threads seront
également allouées.
 Cette allocation directe des ressources permet un
ordonnancement rapide des threads et des blocs, mais limite les
nombres de threads par bloc et de blocs par SM. Par exemple, si
les threads résidant dans le SM sont trop exigeants en termes
de mémoire registre, le nombre de blocs sera dynamiquement
réduit.
 Il est très important de noter que la réduction des ressources est
effectuée en diminuant le nombre de blocs : l’utilisation de
grands blocs, occupant beaucoup de mémoire, peut conduire à
une utilisation sous-optimale du processeur graphique. 47
UNITÉ DE TRAITEMENT GRAPHIQUE ET PROCESSEURS
GRAPHIQUES SPÉCIALISÉS

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

Principes d’organisation et d’architecture


de l’ordinateur
est le suivant : le code kernel peut continuer son exécution
pendant que des chargements, un montant et/ou 7 un
descendant, ont lieu. On parle alors de parallélisme de tâches.
 Les transferts mémoires s’effectuent au travers d’un bus PCI
Express 16X. Ce bus possède une bande passante théorique,
simultanément en montant et en descendant, de 8GB/s dans sa
version 2.

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

Principes d’organisation et d’architecture


de l’ordinateur
doivent exécuter les mêmes instructions, quel est l’intérêt d’une
telle architecture ?
 La réponse est très simple : bien que les threads ne peuvent pas
diverger dans leurs instructions, ceux-ci peuvent diverger dans
les arguments de ces instructions.
 Pour illustrer ce propos, prenons l’exemple de la somme de deux
vecteurs : chaque thread va effectuer la même opération
d’addition, mais avec des éléments différents.

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.

Principes d’organisation et d’architecture


Utilisé dans la représentation des nombres réels. Il existe

de l’ordinateur

différents degrés de précision, suivant le nombre de bits utilisés


par réel :
 32 bits pour les nombres en simple précision
 64 bits pour les nombres en double précision
 Les premières architectures CUDA, telles que la G80,
n’implémentaient que la version simple précision. Les
architectures plus récentes adoptent, quant à elles, les deux
versions.

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.

Principes d’organisation et d’architecture


de l’ordinateur
 Ce phénomène s’explique par le fait que les SMs embarquent
moins de SPs capables de double précision :
 l’architecture GT200 ne compte que 1 SP par SM en double
précision, contre 8 SP par SM en simple précision
 l’architecture GF100 ne compte que 16 SPs par SM en double
précision, contre 32 SPs par SM 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.

Principes d’organisation et d’architecture


de l’ordinateur
 Remarquons que différents liens propriétaires ont été mis au
point afin d’obtenir une répartition dynamique du rendu entre
les GPUs. Il est important de noter que ces liens ne permettent
pas d’échanges directs de segments de mémoire entre les
cartes graphiques.
 Donc, si dans le cadre d’un code de calcul, des données doivent
être échangées entre les devices, celles-ci doivent passer par le
bus PCI Express.
 Au niveau de la programmation, nous pouvons demander aux
différents GPUs d’exécuter le même kernel. Les données sont
alors réparties entre les GPUs.
52

Vous aimerez peut-être aussi