L application de la physique classique dans le golf.pptx
Chapitre i architectures des processeurs récents
1. Université Saad Dahlab de Blida
Faculté des Sciences
Département d’Informatique
Licence Génie des Systèmes Informatiques (GSI)
Semestre 4 (2ème année)
ARCHITECTURE DES ORDINATEURS 2
S. AROUSSI
Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/
5. PLAN DU CHAPITRE I
Introduction
Fréquence
CISC
versus RISC
Pipeline
Super
Scalaire
Hyper Threading
Multi Cœurs
Multi Processeurs
5
6. INTRODUCTION
Recherche
permanente
de
l'augmentation
des
performances des processeurs: Évolution des architectures
Points principaux de cette évolution
Fréquence de fonctionnement
Jeu d'instructions
Mémoire cache
Parallélisation et optimisation des séquences d'instructions
(Pipeline, Superscalaires)
Chaque point influence en bien ou en mal un autre:
Recherche du meilleur compromis
6
7. FRÉQUENCE
Exprimé en Herts (Hz), la fréquence du processeur désigne le
nombre
d’opérations
effectuées
en
une
seconde
par
le
processeur. Une horloge lui définit sa cadence.
Idée: Augmenter la fréquence du fonctionnement (plus
d'instructions exécutées en moins de temps)
Problèmes technologiques et physiques:
Temps de propagation des signaux électriques
Dégagement de chaleur
7
8. FRÉQUENCE
Solutions
aux
problèmes
technologiques
et
physiques:
Diminuer la finesse de gravure
Conducteurs plus courts, propagation plus rapide
Diminue le dégagement de chaleur
Chercher d'autres technologies de réalisation de transistors et des
conducteurs
Les processeurs actuels ont une fréquence d’horloge autour
de 3 GHz (3 milliards d’opérations à la seconde) avec une
finesse de gravure de l’ordre de 20 nanomètres.
8
10. ARCHITECTURE CISC
Le processeur CISC possède un jeu étendu d’instructions
complexes et puissantes.
Le processeur CISC réduit le nombre d'instructions écrites dans
un programme et facile ainsi sa compilation.
Une instruction CISC peut effectuer plusieurs opérations
élémentaires (Chargement, Rangement, Arithmétique, ….).
Exemple (Assembleur 8086): ADD [200h], 125
Charger la valeur du mot mémoire 200h
Faire l’addition ([200h]+125)
Ranger le résultat dans le mot mémoire 200h
10
11. ARCHITECTURE CISC
Plusieurs étapes d’exécution (1 à plus de 100 cycles) sont
nécessaires pur exécuter une instruction CISC.
Exemple (Processeur 8088): l’instruction MUL nécessite
133 cycles pour multiplier deux entiers de 16 bits alors que
l’instruction MOV nécessite 2 cycles.
La longueur des instructions CISC sont variables (1 à 10
octets), ce qui ralentit le processus de décodage.
Plus de modes d’adressage mémoire, dont certains
complexes.
11
13. ARCHITECTURE RISC
La philosophie essentielle des processeurs RISC est d’avoir
un nombre important de registres. Des instructions de
chargement et de rangement avec quelques modes
d’adressage sont les seules à faire les échanges avec la
mémoire.
Toutes
les
autres
instructions
travaillent
uniquement avec les registres.
13
14. ARCHITECTURE RISC
Les principales caractéristiques des processeurs RISC sont les
suivantes:
Codage uniforme des instructions. Toutes les instructions
sont codées avec un même nombre de bits. Le code d’opération
se trouve à la même position pour toutes les instructions. Ceci
facilite le décodage des instructions.
Registres indifférenciés et nombreux. Tous les registres
peuvent être utilisés dans tous les contextes. Il n’y a par
exemple pas de registre spécifique pour la pile. Les processeurs
14
séparent cependant les registres pour les valeurs flottantes des
autres registres.
15. ARCHITECTURE RISC
Les principales caractéristiques des processeurs RISC sont les suivantes.
Limitation des accès mémoire. Les seules instructions ayant accès à la
mémoire sont les instructions de chargement et de rangement. Toutes les
autres instructions opèrent sur les registres. Il en résulte une utilisation
intensive des registres.
Nombre réduit de modes d’adressage. Il n’y pas de mode d’adressage
complexe. Les modes d’adressages possibles sont généralement immédiat,
direct, indirect et relatifs.
Nombre réduit de types de données. Les seuls types de données
supportés sont les entiers de différentes tailles (8, 16, 32 et 64 bits) et des
nombres flottants en simple et double précision. Certains processeurs
CISC comportent des instructions pour le traitement des chaînes 15
de
caractères, des polynômes ou des complexes
19. CISC VERSUS RISC
CISC
RISC
Complex Instruction Set Computing
Reduced Instruction Set Computing
Instructions complexes prenant
plusieurs cycles
Instructions simples ne prenant
qu’un seul cycle
Format variable
Format fixe
Décodage complexe et lent
Décodage simple et rapide
Peu de registres
Beaucoup de registres
Toutes les instructions sont
susceptibles d’accèder à la
Mémoire
Seules les instructions de chargement
et de rangement ont accès à la
mémoire
Beaucoup de mode d’adressage
Peu de mode d’adressage
Plus d'instructions disponibles :
programmation plus simple et
souple
Peu d’instructions disponibles:
programmation difficile
Compilateur simple
Compilateur complexe
19
21. PIPELINE
Machine sans pipeline
Processeur conventionnel: exécute les instructions une à la
fois.
En générale, l‘exécution d’une instruction est décomposée
en phases:
Recherche: Lire l'instruction en mémoire.
Décodage: Déterminer l'opération à réaliser;
Exécution: Effectuer l'opération.
L’enchaînement des phases est cadencé par les tops
d'horloge.
21
22. PIPELINE
Machine sans pipeline
Inst. 2
3
4
Inst. 1
5
Inst. 2
3
4
Inst. 1
5
Inst. 2
3
4
Inst. 1
5
Etape 1
Etape 2
Etape 3
2
1
Nombre de cycles: 11
3
7
13
6
9
5
8
15
16
10
12
14
4
Nombre d’instructions terminées: 1
0
4
3
2
5
22
24. PIPELINE
Inspiration du Pipeline:
Inspiré des chaînes industrielles d’assemblage (ex: chaîne
d’assemblage d’automobiles);
Dans une chaîne d'assemblage d'automobiles, il y a
beaucoup d'étapes;
Chaque étape contribue à une partie de la construction de
l'automobile;
Chaque étape opère en parallèle avec les autres étapes,
mais sur une autre voiture.
24
25. PIPELINE
Historique du Pipeline:
Terme introduit au début des années 80;
Mise en œuvre pour l’amélioration des performances.
Premier processeur avec la technique pipeline: INTEL
8086.
Basé sur le fait qu'un processeur peut exécuter plus d'une
seule instruction à la fois si les instructions sont divisés
en étapes;
Premiers processeurs divisaient les instructions 25en
respectant les 3 étapes d’exécution;
26. PIPELINE
Principe du Pipeline:
Le pipeline est divisé en étages (soit n: le nombre de ces
étages);
Chaque étage correspond à une étape d’exécution;
Les instructions rentrent à une extrémité, progressent à
travers les étages et sortent à l'autre extrémité. Ainsi,
plusieurs
instructions
peuvent
se
recouvrir
durant
l'exécution.
Une instruction est terminée à chaque cycle, au lieu d'une
26
instruction tous les n cycles.
27. PIPELINE
Pipeline RISC (basique):
Etapes d’exécution d’une instruction RISC sont:
1. Recherche de l'instruction;
2. Décodage de l'instruction;
3. Recherche des opérandes;
4. Exécution de l’instruction;
5. Sauvegarde des résultats.
27
29. PIPELINE
Pipeline RISC (basique):
Pour 5 instructions, réduit le temps d'exécution de 25
unités de temps à 9 unités de temps.
Supposition : chaque instruction traverse les 5 étages;
Ce n’est pas toujours le cas; par exemple: chargement en
mode immédiat ne nécessite pas d'étage de recherche de
l'opérande en mémoire (Ox).
Pour simplifier le hardware du pipeline, le temps est
calculé en supposant que chaque instruction nécessite les
cinq étages.
29
30. PIPELINE
Exécution dans le pipeline: passe par trois phases
1. Amorçage du pipeline;
2. Exécution normale;
3. Vidage du pipeline.
programme
Cycles d’Horloge
1
Inst n° 1
Inst n° 2
Inst n° 3
Inst n° 4
Inst n° 5
2
3
4
5
6
7
8
I1
D1
O1
E1
S1
I2
D2
O2
E2
S2
I3
D3
O3
E3
S3
I4
D4
O4
E4
S4
I5
D5
O5
E5
9
S5
Pendant les deux dernières phases, une instruction 30
se
termine à chaque cycle d’horloge
31. PIPELINE
Déséquilibre entre les étages:
Les étages n’ont pas les mêmes temps de traitement; Il est
nécessaire donc d’utiliser des buffers (files d’attentes)
entre les étages.
Exemple: Si Temps d'exécution > Temps de recherche
L'étage de recherche devra attendre avant de vider son
(3)
UAL
(4)
Buffer
(2)
RO
Buffer
(1)
DI
Buffer
RI
Buffer
buffer;
SR
31
(5)
32. PIPELINE
Déséquilibre entre les étages:
Temps de passage d’un étage à l’autre pour une
instruction est appelé cycle machine.
Cycle machine inclut le temps de traitement de l’étage +
temps de traversée des buffers
L’étage le plus lent détermine la longueur d'un cycle
(3)
UAL
(4)
Buffer
(2)
RO
Buffer
(1)
DI
Buffer
RI
Buffer
machine
SR
32
(5)
33. PIPELINE
Aléas du pipeline:
Le bon fonctionnement du pipeline peut être perturbé par
plusieurs événements appelés aléas (pipeline hazard en
anglais). Ces événements sont classés en trois catégories.
1. aléas structurels qui surviennent lorsque deux instructions
dans des étages différents du pipeline nécessitent la même ressource.
2. aléas de données qui surviennent lorsqu’une instruction
nécessite une donnée qui n’a pas encore été calculée par une
instruction précédente. Ceci provient du fait que les instructions
lisent leurs arguments dans les premiers étages du pipeline alors
qu’elles produisent leur résultat dans les derniers étages.
33
34. PIPELINE
Aléas du pipeline:
Le bon fonctionnement du pipeline peut être perturbé par
plusieurs événements appelés aléas (pipeline hazard en
anglais). Ces événements sont classés en trois catégories.
1. aléas structurels
2. aléas de données
3. aléas de contrôle qui surviennent dès qu’une instruction de
branchement est exécutée. Si le branchement est effectué, les
instructions qui suivent dans le pipeline ne doivent pas être
exécutée. Ceci provient du fait que la nouvelle adresse est calculée
34
alors que les instructions qui suivent ont déjà été chargées.
35. PIPELINE
Aléas Structurels: interviennent lors de conflits de
ressources:
Exemple : la machine a une seule mémoire pour les
données et les instructions, alors que deux étages du
pipeline veulent faire des opération simultanées (I3 et O1
par exemple).
programme
Cycles d’Horloge
1
Inst n° 1
Inst n° 2
Inst n° 3
2
3
4
5
6
I1
D1
O1
E1
S1
I2
D2
O2
E2
S2
I3
D3
O3
E3
7
S3
35
36. PIPELINE
Aléas Structurels: interviennent lors de conflits de
ressources:
Solutions:
1. Suspendre (ou bloquer) une des instructions jusqu'à ce
que l'unité demandée soit disponible. On voit alors
apparaître des bulles dans le pipeline.
2. Multiplier les ressources; par exemple, séparer entre
mémoire d’instruction et mémoire de programme.
36
37. PIPELINE
Aléas Structurels: interviennent lors de conflits de
ressources:
Solution 1: Suspendre (bloquer) une des instructions
jusqu'à ce que l'unité demandée soit disponible.
programme
Cycles d’Horloge
1
Inst n° 1
2
3
4
5
I1
D1
O1
E1
S1
I2
D2
O2
E2
S2
BULLE
I3
D3
O3
Inst n° 2
Inst n° 3
6
7
8
E3
S3
Problème: l'introduction de suspensions dégrade les
performances.
37
38. PIPELINE
Aléas de Données:
Interviennent lorsque deux instructions sont liées par des
dépendances de données: Une instruction a besoin du
résultat d'une instruction précédente;
Considérons ce code:
c=b+a
e=c+d
En langage d’assembleur:
Inst1: add R4 , R3, R2
Inst2: add R6, R4 , R5
38
Dépendance: Inst 2 a besoin du résultat dans le registre
R4
39. PIPELINE
Aléas
de
Données:
interviennent
lorsque
deux
instructions sont liées par des dépendances de données.
Exemple:
Inst1: add R4 , R3, R2
Inst2: add
programme
R6, R4 , R5
Cycles d’Horloge
1
Inst n° 1
Inst n° 2
2
3
4
5
I1
D1
O1
E1
S1
I2
D2
O2
E2
R4
6 est écrit
7
R4 doit être lu
mais n'est pas
encore écrit
S2
39
40. PIPELINE
Aléas
de
Données:
interviennent
lorsque
deux
instructions sont liées par des dépendances de données.
Solutions:
1. Suspendre une des instructions jusqu'à ce que la
donné soit disponible (calculé).
2. Envoyer au plus tôt la donnée (lorsqu’elle soit
disponible) au pipeline.
3. Réordonnancer (changer l'ordre de) l'exécution des
instructions pour éviter ou réduire le problème
40
41. PIPELINE
Aléas
de
Données:
interviennent
lorsque
deux
instructions sont liées par des dépendances de données.
Solution 1: Suspendre une des instructions jusqu'à ce que
la donné soit disponible (calculé).
Inst1: add R4 , R3, R2
Inst2: add
R6, R4 , R5
programme Cycles d’Horloge
1
Inst n° 1
Inst n° 2
2
3
4
5
I1
D1
O1
E1
S1
I2
D2
Bulle
6
O2
7
E2
8
S2
41
42. PIPELINE
Aléas
de
Données:
interviennent
lorsque
deux
instructions sont liées par des dépendances de données.
Solution 2: Envoyer au plus tôt la donnée (lorsqu’elle soit
calculé) au pipeline.
Inst1: add R4 , R3, R2
Inst2: add
programme
R6, R4 , R5
Cycles d’Horloge
1
Inst n° 1
Inst n° 2
2
3
4
5
I1
D1
O1
E1
S1
I2
D2
Bulle O2
6
E2
7
S2
42
43. PIPELINE
Aléas
de
Données:
interviennent
lorsque
deux
instructions sont liées par des dépendances de données.
Solution 3: Réordonnancer l'exécution des instructions.
Inst1: add
Inst2: add
Inst3: mul
Inst4: div
Inst1: add
Inst3: mul
Inst4: div
Inst2: add
R4, R3, R2
R6, R4, R5
R7, R8, R9
R1, R8, R3
R4, R3, R2
R7, R8, R9
R1, R8, R3
R6, R4, R5
43
44. PIPELINE
Aléas
de
Contrôle:
interviennent
lorsque
qu’une
instruction de branchement est exécutée.
Exemple: Si (R1 > 30) alors R3 10 + R1
Sinon R3 20 + R1
Fonctionnement du saut conditionnel
En fonction du résultat du test, le contenu de CO est modifié avec
l'adresse de la prochaine instruction
Phase Ex : exécution de la comparaison par l'UAL
Phase Sx : écriture de CO en fonction du résultat du test
Problème: On doit connaître la valeur du test de valeur de
44
R1 pour savoir quelle est l'instruction suivante à exécuter
45. PIPELINE
Aléas
de
Contrôle:
Interviennent
lorsque
qu’une
instruction de branchement est exécutée.
Exemple: Si (R1 > 30) alors R3 10 + R1
Sinon R3 20 + R1
Solutions:
1. Attendre que le bon CO soit connu : peu efficace
2. Réordonnancer le code : pas toujours suffisant et
possible
3. Prédire quelle sera la valeur de R1 et commencer le
calcul suivant selon cette prédiction
45
46. PIPELINE
Aléas
de
Contrôle:
Interviennent
lorsque
qu’une
instruction de branchement est exécutée.
Exemple: Si (R1 > 30) alors R3 10 + R1
Sinon R3 20 + R1
Solution avec attente:
programme Cycles d’Horloge
1
Inst n° 1
Inst n° 2
2
3
4
5
I1
D1
O1
E1
CO
6 est7écrit
S1
Bulles
I2
D2
O2
E2
S2
Lecture du CO
46
Attendre le Sx précédent avant de faire le Ix : on passe en
exécution purement séquentielle !
47. PIPELINE
Aléas
de
Contrôle:
interviennent
lorsque
qu’une
instruction de branchement est exécutée.
Solution avec prédictions:
A l'aide de tables statistiques dynamiques, le résultat
d'un test est prédit. On commence ensuite l'instruction
suivante prédite.
Problème si prédiction erronée
On a commencé des calculs inutiles
Vidage du pipeline pour reprendre dans un état correct
Très couteux en temps
Très pénalisant pour des pipelines profonds
47
50. PIPELINE
Aléas de Contrôle: Solution avec prédiction:
1
2
3
4
5
6
7
8
9
10
11
12
13
I
Inst1
Inst2
Inst3
Inst4
Inst5
Inst6
Inst7
Inst8
Inst9
D
Inst1
Inst2
Inst3
Inst4
Inst5
Inst6
Inst7
Inst8
Inst9
O
Inst1
Inst2
Inst3
Inst4
Inst5
Inst6
Inst7
Inst8
Inst9
E
Inst1
Inst2
Inst3
Inst4
Inst5
Inst6
Inst7
Inst8
Inst9
Branchement non pris
S
Inst1
Inst2
Inst3
Inst4
Inst5
Inst6
Inst7
Inst8
Inst9
1
2
3
4
5
6
7
8
9
10
11
12
13
I
Inst1
Inst2
Inst3
Inst4
Inst5
Inst6
Inst7
Inst15
Inst16
D
O
Inst1
Inst2
Inst3
Inst4
Inst5
Inst6
Inst1
Inst2
Inst3
Inst4
Inst5
E
S
Inst1
Inst2 Inst1
Inst3 Inst2
Inst4 Inst3
IInst15
IInst16 IInst15
IInst16 IInst15
IInst16 IInst15
IInst16
Branchement pris
50
Nettoyage du pipeline
51. SUPER-SCALAIRE
Cette approche consiste à ajouter des unités (unités de
calculs, de commandes, ….) ou même un pipeline complet.
FPU (Floating Point Unit): Unité de calcul en virgule flottante
ALU (Arithmetic Logic Unit): Unité Arithmétique et Logique
51
52. SUPER-SCALAIRE
Cette approche consiste à ajouter des unités (unités de
calculs, de commandes, ….) ou même un pipeline complet.
52
53. SUPER-SCALAIRE
Intérêt: Cette approche permet l'exécution complète ou
partielle de plusieurs instructions en parallèle.
Problèmes:
Nécessite plus de synchronisation entre les unités et
les pipelines
Les unités dupliquées ne sont pas toujours en pleine
utilisation
53
Coût important en terme de transistors et de place
54. HYPER-THREADING
Un programme peut être découpé en plusieurs sousprogrammes indépendants, appelé threads, qu'on peut
faire exécuter en parallèle.
Hyper-Threading,
ou
HT,
est
l’implémentation
par
l'entreprise Intel de la technique SMT (Simultaneous
Multi Threading) à deux voies qui permet le partage des
ressources entre deux threads.
54
56. HYPER-THREADING
Schématiquement, l’Hyper-Threading consiste à créer
deux processeurs logiques au sein d'un processeur
physique.
Un processeur logique est doté de ses propres registres de
données, de contrôle et d’état, et d’un contrôleur
d’interruptions particulier.
Les deux processeurs logiques partagent les éléments du
cœur
de
processeur
(unités
de
traitement),
le cache (mémoire) et le bus système. Ainsi, ces deux sous-
processus peuvent être traités simultanément par 56
le
même processeur.
57. HYPER-THREADING
Néanmoins, seul un processeur super scalaire, doté d’une
grande puissance de calcul, peut réellement effectuer un
multi-threading.
Le premier processeur super scalaire capable d’exécuter
plusieurs instructions simultanément a été le Pentium 4
cadencé à 3,6 GHz.
57
58. MULTI-CŒUR
Un processeur est appelé multi-core ou multi-cœur quand
il est doté d’un microprocesseur qui intègre au moins deux
CPU (Central Processing Unit) ou cores indépendants
dans une seule puce.
Le CPU constitue en effet le seul élément capable
d’exécuter un programme ou processus. Il comporte des
unités de calcul, des mémoires caches, des registres, des
ordonnanceurs
ainsi
que
tous
les
autres
circuits
électroniques qui lui permettent d’effectuer des opérations
arithmétiques et logiques.
58
60. MULTI-CŒUR VS HYPER-THREADING
La technologie multi-cœur est assez similaire à la
technologie hyper-threading qui consiste en l’exécution en
parallèle des instructions élémentaires de deux threads
différents.
La nouveauté réside dans le fait qu’il existe plusieurs
cores qui fonctionnent chacun en hyper-threading.
Le but du processeur multi-cœur est donc d’augmenter le
nombre
d’opérations
élémentaires
exécutées
simultanément en un cycle d’horloge. Cette technique a
aussi l’avantage de réduire les réchauffements du CPU. 60
61. MULTIPROCESSEURS
Un
ordinateur
multiprocesseur
est
doté
de
plusieurs processeurs, permettant un parallélisme de
tâches, où un processus peut être exécuté sur chaque
processeur.
La différence entre le multiprocesseur et le multi-cœur
tient au fait qu'il ne s'agit plus d'une division du nombre
d'unités de calcul mais d'une multiplication de celles
existantes. Ainsi, cette technologie permet une plus
grande puissance (vitesse) de calcul.
61
64. MULTIPROCESSEURS
Grace
à
sa
haute
performance,
l’architecture
multiprocesseur, est utilisée pour construire ou fabriquer
des supercalculateurs ou superordinateurs.
Les supercalculateurs sont déployés pour toutes les tâches qui
nécessitent une très forte puissance de calcul comme les prévisions
météorologiques, la modélisation moléculaire (calcul des structures et
propriétés de composés chimiques…), les simulations physiques
(simulations aérodynamiques, calculs de résistance des matériaux,
simulation
d’explosion
d’arme
nucléaire,
étude
de
la
fusion
nucléaire…), la cryptanalyse, les simulations en finance et assurance
(Calcul stochastique), etc.
64
65. SOURCES DE CE COURS
M. Koudil, Cours Approches de conception des systèmes, Partie 2: Accélération des calculs,
Ecole nationale Supérieure d’Informatique (ESI), 2004.
E. Cariou, Fonctionnement et performance des processeurs, Université de Pau et des Pays de
l'Adour, Disponible sur web.univ-pau.fr/~ecariou/cours/archi/cours-7-cpu.pdf
Theoris, Architecture Matérielle des Ordinateurs, Quatrième Partie : Architectures évoluée,
2004, disponible sur repo.mynooblife.org/Materiel/archi%20materielle%20-%20part4.pdf.
P. Michaud, Architecture des processeurs généralistes haute performance, disponible sur
www.lirmm.fr/archi07/archi07-michaud.pdf
Ivan
Boule,
Rappels
Architecture
des
Ordinateurs,
2008,
disponible
sur
deptinfo.cnam.fr/new/spip.php?pdoc7559
G. Grave, Multicoeurs, Hyperthreading, GPGPU : les Architectures modernes, 2012.
65