Académique Documents
Professionnel Documents
Culture Documents
v1.0
EN226 - Objectifs
Questions principales:
(Rappel) À quoi sert une ISA/ un jeu d’instructions ?
(Rappel) Comment s’utilise un langage d’assemblage (e.g. RISC-V) ?
Comment fonctionne un processeur ?
Quel est le rôle de chacun des différents mécanismes internes au processeur ?
À quoi sert la hiérarchie mémoire ?
Comment fonctionne une mémoire cache ?
Quels mécanismes utilisent les processeurs modernes ?
Liens avec les autres enseignements:
Langage C.
EN114: Architecture de base d’un processeur.
EN210: Conception d'un processeur avec jeu d'instructions élémentaires.
ENSEIRB-MATMECA // 2
EN226 - Structure du cours
1. Rappels généraux 4. Mémoires caches
Vue globale des systèmes Hiérarchie mémoire
Abstraction et complexité Principe de localité
2. Le jeu d’instructions RISC-V Fonctionnement d’un cache
Structure de l’ISA Optimisations
Types d’opérations 5. Spéculation
Modes d’adressage Prédiction de branchement
Pile mémoire Prefetching
3. Microarchitectures élémentaires Exécution dans le désordre
Exécution d’une instruction 6. Problématiques actuelles
Pipeline
Dépendances
Augmenter l’IPC
ENSEIRB-MATMECA // 3
EN226 - Organisation du cours
Volume horaire: 16 x 1h20 (5 demi-journée + 1h20)
Cours intégrés (Cours + TD)
CI1: Rappels généraux + ISA RISC-V
CI2 & CI3: Pipeline
CI4: Mémoires caches
CI5: Spéculation
Travaux pratiques
Sujet 1 (~1h20): Langage d’assemblage et simulation
Sujet 2 (~4h): Analyse d’exécutions avec un pipeline
Sujet 3 (~4h): Analyse d’exécutions avec des mémoires caches
ENSEIRB-MATMECA // 4
EN226 - Évaluation
TP (1/3)
Exécution de code sur simulateur
Réponses aux questions sur Moodle.
À envoyer à la fin de la dernière séance de TP.
QCM (1/3)
Questions de cours.
Créneaux et nombres non-définis.
Examen (1/3)
Dernière séance sur 1h.
Questions de cours.
Exercices type TD.
ENSEIRB-MATMECA // 5
Références bibliographiques
Computer Organization and Design: The Hardware/Software Interface, RISC-V Edition, David A. Patterson et John L.
Hennessy, 2017, 696 pages
Computer Architecture: A Quantitative Approach, John L. Hennessy et David A. Patterson, 2017, 936 pages
The RISC-V Reader: An Open Architecture Atlas, David Patterson et Andrew Waterman, 2017, 200 pages
RISC-V Spécifications, https://riscv.org/technical/specifications/
ENSEIRB-MATMECA // 6
EN226 - Sommaire
1. Rappels généraux 4. Mémoires caches
Vue globale des systèmes Hiérarchie mémoire
Abstraction et complexité Principe de localité
2. Le jeu d’instructions RISC-V Fonctionnement d’un cache
Structure de l’ISA Optimisations
Types d’opérations 5. Spéculation
Modes d’adressage Prédiction de branchement
Pile mémoire Prefetching
3. Microarchitectures élémentaires Exécution dans le désordre
Exécution d’une instruction 6. Problématiques actuelles
Pipeline
Dépendances
Augmenter l’IPC
ENSEIRB-MATMECA // 7
1. Rappels généraux
Vue globale des systèmes
Couches d’abstraction
Structure matérielle
Contraintes et métriques
Abstraction et complexité
Niveaux d’abstraction
Loi de Moore
Historique des évolutions
ENSEIRB-MATMECA // 8
1. Rappels généraux: Vue globale des systèmes
Processeur Application
pgcd:
addi sp, sp, -8
lw a4, 0(sp)
lw a5, 4(sp)
egal:
bne a4, a5, superieur
sw a4, 0(sp)
addi sp, sp, 4
jalr zero, ra, 0
superieur:
blt a5, a4, inferieur
sub a6, a5, a4
sw a4, 0(sp)
sw a6, 4(sp)
addi sp, sp, 8
ENSEIRB-MATMECA // 9
1. Rappels généraux: Performances et complexité
Contraintes
ENSEIRB-MATMECA // 10
1. Rappels généraux: Performances et complexité
Fréquence:
Vitesse de l’horloge de synchronisation utilisée.
!
Fréquence = "é$%&'( en Hz
Latence
Temps pour totalement exécuter une opération.
Généralement en nombre de cycles.
Débit
Nombre d’opérations exécutées sur un temps donné.
)
IPC (Instructions Par Cycle) = !"#$%&'$!("#
)')'*+#
ENSEIRB-MATMECA // 11
1. Rappels généraux
Vue globale des systèmes
Couches d’abstraction
Structure matérielle
Contraintes et métriques
Abstraction et complexité
Niveaux d’abstraction
Loi de Moore
Historique des évolutions
ENSEIRB-MATMECA // 12
1. Rappels généraux: Niveaux d’abstraction
Vue logicielle
GPR CSR
Processeur Mémoire
I/O
ENSEIRB-MATMECA // 13
1. Rappels généraux: Niveaux d’abstraction
Couches d’abstraction
Application
Système d’exploitation
Logiciel
Pilote (driver)
Assembleur
ISA Ce cours
Microarchitecture
Cellule logique
Matériel
Transistor
Technologie
ENSEIRB-MATMECA // 15
1. Rappels généraux: Niveaux d’abstraction
Structure matérielle
ENSEIRB-MATMECA // 17
EN226 - Structure du cours
1. Rappels généraux 4. Mémoires caches
Vue globale des systèmes Hiérarchie mémoire
Abstraction et complexité Principe de localité
2. Le jeu d’instructions RISC-V Fonctionnement d’un cache
Structure de l’ISA Optimisations
Types d’opérations 5. Spéculation
Modes d’adressage Prédiction de branchement
Pile mémoire Prefetching
3. Microarchitectures élémentaires Exécution dans le désordre
Exécution d’une instruction 6. Problématiques actuelles
Pipeline
Dépendances
Augmenter l’IPC
ENSEIRB-MATMECA // 18
2. Le jeu d’instructions RISC-V
Structure de l’ISA
Informations générales
Encodage
Types instructions
Arithmétiques et logiques
Mémoire
Redirection
Autres opérations
Modes d’adressage
Adressage par registre
Adressage immédiat
Adressage relatif
Adressage base + offset
Pile mémoire
ENSEIRB-MATMECA // 19
2. Le jeu d’instructions RISC-V: Informations générales
Informations générales
Développement et implémentations
Libre et ouverte, maintenue officiellement par une fondation.
Depuis 2010.
Actuellement dans la recherche et systèmes embarqués (nombreux
développements à venir).
Entreprises partenaires: SiFive, Google, Nvidia, Western Digital …
Caractéristiques
RISC.
Modèle d’exécution: registre-registre.
Base de 40 instructions (55 en 64 bits)
Multiples extensions officielles: M, A, C, F, D, V …
32 ou 64 bits.
ENSEIRB-MATMECA // 20
2. Le jeu d’instructions RISC-V: Informations générales
ENSEIRB-MATMECA // 21
2. Le jeu d’instructions RISC-V: Informations générales
Langage d’assemblage
ENSEIRB-MATMECA // 22
2. Le jeu d’instructions RISC-V: Informations générales
Formats d’instructions
ENSEIRB-MATMECA // 23
2. Le jeu d’instructions RISC-V: Informations générales
ENSEIRB-MATMECA // 24
2. Le jeu d’instructions RISC-V
Structure de l’ISA
Informations générales
Encodage
Types instructions
Arithmétiques et logiques
Mémoire
Redirection
Autres opérations
Modes d’adressage
Adressage par registre
Adressage immédiat
Adressage relatif
Adressage base + offset
Pile mémoire
ENSEIRB-MATMECA // 25
2. Le jeu d’instructions RISC-V: Types d’instructions
Langage d’assemblage
Instructions arithmétiques et logiques:
Opérations sur les données situées dans les registres du processeur.
Arithmétique: ADD, SUB, SLT, SLTU.
Décalage: SLL, SRL, SRA.
Logique: XOR, AND, OR.
2 formats d’opérandes: registre ou immédiat (sauf SUB).
Exemples (code et opération):
ASM: addi x3, x2, 4 ASM: xor x10, x22, x31
OP: x3 <= x2 + 4 OP: x10 <= x22 ^ x31
ENSEIRB-MATMECA // 26
2. Le jeu d’instructions RISC-V: Types d’instructions
Langage d’assemblage
Instructions mémoire:
Opérations pour récupérer/envoyer des données en mémoire.
Chargement (“load”): LW, LH, LHU, LB, LBU.
Rangement (“store”): SW, SH, SB.
1 opérande registre (donnée), 1 opérande mémoire (adresse).
ENSEIRB-MATMECA // 27
2. Le jeu d’instructions RISC-V: Types d’instructions
Langage d’assemblage
PC: compteur ordinal (Program Counter)
Registre architectural.
Contient l’adresse de l’instruction à exécuter.
Accessible directement ou non selon les ISA (e.g. lecture possible avec
l’instruction AUIPC pour RISC-V).
Mémoire
Adresse Instruction
ENSEIRB-MATMECA // 28
2. Le jeu d’instructions RISC-V: Types d’instructions
Langage d’assemblage
Instructions de redirection:
Opérations pour rediriger l’exécution du programme.
Saut: redirection sans condition.
Branchement conditionnel: redirection si la condition est respectée.
Saut direct: JAL.
Saut indirect: JALR.
Branchement conditionnel: BEQ, BNE, BLT, BLTU, BGE, BGEU.
ENSEIRB-MATMECA // 29
2. Le jeu d’instructions RISC-V: Types d’instructions
Langage d’assemblage
Exemples (code et opération):
ASM: jal x3, 0x24 ASM: jalr x3, x2, 0x100
OP: x3 <= PC + 4 OP: x3 <= PC + 4
OP: PC <= PC + 0x24 OP: PC <= x2 + 0x100
ASM: beq x2, x3, 0x10 ASM: blt x2, x3, 0x20
OP: SI (x2 == x3) OP: SI (x2 < x3)
OP: ALORS PC <= PC + 0x10 OP: ALORS PC <= PC + 0x20
ENSEIRB-MATMECA // 30
2. Le jeu d’instructions RISC-V: Types d’instructions
Langage d’assemblage
Autres opérations:
Lecture du PC,
Lecture/écriture de registres spéciaux (compteurs de performances).
Appel système,
Instruction d’arrêt,
… et autres extensions !
ENSEIRB-MATMECA // 31
2. Le jeu d’instructions RISC-V
Structure de l’ISA
Informations générales
Encodage
Types instructions
Arithmétiques et logiques
Mémoire
Redirection
Autres opérations
Modes d’adressage
Adressage par registre
Adressage immédiat
Adressage relatif
Adressage base + offset
Pile mémoire
ENSEIRB-MATMECA // 32
2. Le jeu d’instructions RISC-V: Modes d’adressage
ENSEIRB-MATMECA // 33
2. Le jeu d’instructions RISC-V: Modes d’adressage
Adressage immédiat
Une opérande est un immédiat (valeur encodée directement dans
l’instruction).
Valeurs possibles limitées par les bits de l’instruction.
Permet d’utiliser certaines valeurs sans allouer un registre.
RISC-V: certaines opérations arithmétiques et logiques.
Exemple:
addi x3, x2, 4
La valeur 4 est directement indiquée dans l’instruction.
Valeurs possibles sur 12 bits.
ENSEIRB-MATMECA // 34
2. Le jeu d’instructions RISC-V: Modes d’adressage
Adressage relatif
Une opérande est un décalage par rapport à l’adresse actuelle (PC).
Permet d’économiser un registre pour une adresse proche.
RISC-V: les branchements conditionnels et le saut direct JAL.
Exemple:
beq x3, x2, 16
La valeur 16 est directement ajouté au PC pour obtenir l’adresse de
destination.
ENSEIRB-MATMECA // 35
2. Le jeu d’instructions RISC-V: Modes d’adressage
ENSEIRB-MATMECA // 36
2. Le jeu d’instructions RISC-V
Structure de l’ISA
Informations générales
Encodage
Types instructions
Arithmétiques et logiques
Mémoire
Redirection
Autres opérations
Modes d’adressage
Adressage par registre
Adressage immédiat
Adressage relatif
Adressage base + offset
Pile mémoire
ENSEIRB-MATMECA // 37
2. Le jeu d’instructions RISC-V: Pile Mémoire
adresse donnée
… …
sp = 0x80008000 0x80008000 …
0x80007ffc …
0x80007ff8 …
0x80007ff4 …
0x80007ff0 …
… …
ENSEIRB-MATMECA // 38
2. Le jeu d’instructions RISC-V: Pile Mémoire
PUSH data0
POP
ENSEIRB-MATMECA // 41
EN226 - Structure du cours
1. Rappels généraux 4. Mémoires caches
Vue globale des systèmes Hiérarchie mémoire
Abstraction et complexité Principe de localité
2. Le jeu d’instructions RISC-V Fonctionnement d’un cache
Structure de l’ISA Optimisations
Types d’opérations 5. Spéculation
Modes d’adressage Prédiction de branchement
Pile mémoire Prefetching
3. Microarchitectures élémentaires Exécution dans le désordre
Exécution d’une instruction 6. Problématiques actuelles
Pipeline
Dépendances
Augmenter l’IPC
ENSEIRB-MATMECA // 42
2. Microarchitectures élémentaires: Exécution d’une instruction
Décomposition de l’exécution
Mémoire
Adresse Instruction
PC = 0x04000000
0x04000000 addi sp, sp, -8
0x04000004
0x04000008
lw a4, 0(sp)
lw a5, 4(sp)
Processeur Cycle N
0x0400000c addi sp, sp, 4 GPR CSR
0x04000010 jalr zero, ra, 0
Adresse Instruction
ENSEIRB-MATMECA // 43
2. Microarchitectures élémentaires: Exécution d’une instruction
Décomposition de l’exécution
7 étapes principales:
1. Calculer le PC.
2. Récupérer instruction en mémoire.
3. Décoder.
4. Lire les registres.
5. Exécuter l’opération.
6. Accès mémoire si nécessaire.
7. Ranger le résultat.
instruction 1 instruction 2 instruction 3
PC IF ID RR EX AM WB PC IF ID RR EX AM WB PC IF …
ENSEIRB-MATMECA // 44
2. Microarchitectures élémentaires: Exécution d’une instruction
ENSEIRB-MATMECA // 45
2. Microarchitectures élémentaires: Exécution d’une instruction
Instructions
Instructions Données
/ Données
ENSEIRB-MATMECA // 47
2. Microarchitectures élémentaires: Pipeline
entrées
sortie
Questions:
Chemin critique ?
Fréquence maximale ?
Comment augmenter la fréquence ?
ENSEIRB-MATMECA // 48
2. Microarchitectures élémentaires: Pipeline
entrées
sortie
Utile ?
4 étages:
Chemin critique ?
Utile ?
Autres solutions ?
ENSEIRB-MATMECA // 49
2. Microarchitectures élémentaires: Pipeline
ENSEIRB-MATMECA // 50
2. Microarchitectures élémentaires: Pipeline
instruction 2
PC IF ID RR EX AM WB
instruction 3
PC IF ID RR EX AM WB
ENSEIRB-MATMECA // 51
2. Microarchitectures élémentaires: Pipeline
IF ID EX MEM WB
Sens du pipeline
ENSEIRB-MATMECA // 52
2. Microarchitectures élémentaires: Pipeline
Pipelines existants
Intel Pentium (x86): 5 étages
Intel Pentium 3 (x86): 10 étages.
Intel Pentium 4 (x86): 20 étages.
Intel Pentium 4 Prescott (x86): 31 étages.
Intel Kaby Lake (x86): 14 étages
R4400 (MIPS): 8 étages.
Cortex-M3 (ARM): 3 étages.
Cortex-A57 (ARM): 15 étages.
BOOM (RISC-V): 10 étages
ENSEIRB-MATMECA // 53
3. Microarchitectures élémentaires
Exécution d’une instruction
Décomposition de l’exécution
Architectures Harvard vs. von Neumann
Pipeline
Logique combinatoire et séquentielle
Parallélisme au niveau instruction
Dépendances
Dépendances structurelles
Dépendances de données
Dépendances de contrôle
Augmenter l’IPC
Microarchitecture superscalaire
VLIW
Parallélisme des tâches
ENSEIRB-MATMECA // 54
2. Microarchitectures élémentaires: Dépendances
Dépendances structurelles
IF i1 i2 i3 ??
MEM ??
WB ??
Temps
Dépendances structurelles
IF i1 i2 i3 i3 i3 i4 i5
MEM i1 i2
WB i1
Temps
Dépendances de données
MEM ??
WB ??
Temps
Dépendances de données
MEM i1
x4 contient la
dernière valeur.
WB i1
Temps
Dépendances de données
Programme 1 Programme 2
ENSEIRB-MATMECA // 59
2. Microarchitectures élémentaires: Dépendances
Version 3 Version 4
Plusieurs implémentations possibles…
ENSEIRB-MATMECA // 60
2. Microarchitectures élémentaires: Dépendances
Version 1
EX
WB
i1: sub x2, x1, x7
ID i1
Version 2
i2: add x8, x2, x3
i3: lw x5, 0(x2) EX
i4: add x6, x4, x5 WB
i5: add x7, x8, x6
Version 3 ID i1
Programme à considérer EX
WB
ID i1
Version 4
EX
WB
Mais laquelle est la plus efficace ?
ENSEIRB-MATMECA // 61
2. Microarchitectures élémentaires: Dépendances
Dépendances de contrôle
WB ??
Temps
Dépendances de contrôle
WB i1
Temps
Dépendances de contrôle
Problème majeur pour les performances:
15-30% des instructions sont des branchements.
Importance augmente avec la profondeur du pipeline.
Solution matérielle: la prédiction de branchement.
Statique: on fixe dès le départ le choix fait par le processeur (peu efficace).
Dynamique: on mémorise au cours de l’exécution des informations pour anticiper
les futurs branchements.
Détaillée dans la partie 4.
Solution logicielle:
Limiter les branchements par le compilateur.
Exemple: déroulage de boucle.
ENSEIRB-MATMECA // 64
3. Microarchitectures élémentaires
Exécution d’une instruction
Décomposition de l’exécution
Architectures Harvard vs. von Neumann
Pipeline
Logique combinatoire et séquentielle
Parallélisme au niveau instruction
Dépendances
Dépendances structurelles
Dépendances de données
Dépendances de contrôle
Augmenter l’IPC
Microarchitecture superscalaire
VLIW
Parallélisme des tâches
ENSEIRB-MATMECA // 65
2. Microarchitectures élémentaires: Augmenter l’IPC
Exploiter l’ILP.
Scalaire:
Vise un IPC maximum de 1.
Une seule même opération par cycle.
Ne profite pas pleinement de l’indépendance entre instructions.
Superscalaire:
Vise un IPC maximum de N.
Duplication des opérations principales.
Plusieurs mêmes opérations par cycle possible.
ENSEIRB-MATMECA // 66
2. Microarchitectures élémentaires: Augmenter l’IPC
Microarchitecture superscalaire
instructions 1 & 2
PC IF ID RR EX AM WB
PC IF ID RR EX AM WB
instructions 3 & 4
PC IF ID RR EX AM WB
PC IF ID RR EX AM WB
instructions 5 & 6
PC IF ID RR EX AM WB
PC IF ID RR EX AM WB
Microarchitecture superscalaire
i1 i3 i5 i7 i9 i6 i8
IF
i2 i4 i6 i8 i10 i7 i9
i1 i3 i5 i7 i6
ID
i2 i4 i6 i8 i7
i1 i3 i5
EX
i2 i4 i6
MEM i1 i3 i5
i2 i4
WB i1 i3 i5
i2 i4
ENSEIRB-MATMECA // 68
2. Microarchitectures élémentaires: Augmenter l’IPC
Limites du superscalaire
ENSEIRB-MATMECA // 69
2. Microarchitectures élémentaires: Augmenter l’IPC
1 instruction: instruction
De nombreux bits (128, 256 …),
Plusieurs opérations en parallèle.
Compilateur:
opération 0 opération 1 opération 2 opération 3
ENSEIRB-MATMECA // 70
2. Microarchitectures élémentaires: Augmenter l’IPC
Temps
Question: comment profiter des ressources
encore inutilisées ?
ENSEIRB-MATMECA // 71
2. Microarchitectures élémentaires: Augmenter l’IPC
Solution envisagée:
Multithreading: plusieurs tâches indépendantes sur un
même processeur.
Cas idéal visé: ressources toujours utilisées.
Temps
Éléments à considérer:
Exécution globale améliorée …
Mais potentielles pertes à l’échelle d’une seule tâche.
Stratégie efficace si les tâches sont bien choisies !
ENSEIRB-MATMECA // 72
2. Microarchitectures élémentaires: Augmenter l’IPC
Multithreading: implémentations
Temps
Temps
Temps
Temps
Superscalaire Multithreading Multithreading Simultaneous
à grain fin à grain grossier Multithreading
(SMT)
ENSEIRB-MATMECA // 73
2. Microarchitectures élémentaires: Augmenter l’IPC
Multicoeur
CPU 0 CPU 1
Mémoire
CPU 2 CPU 3
Solution envisagée:
Multicoeur: plusieurs tâches indépendantes sur plusieurs processeurs.
ENSEIRB-MATMECA // 74
2. Microarchitectures élémentaires: Augmenter l’IPC
Multicoeur
ENSEIRB-MATMECA // 75
EN226 - Structure du cours
1. Rappels généraux 4. Mémoires caches
Vue globale des systèmes Hiérarchie mémoire
Abstraction et complexité Principe de localité
2. Le jeu d’instructions RISC-V Fonctionnement d’un cache
Structure de l’ISA Optimisations
Types d’opérations 5. Spéculation
Modes d’adressage Prédiction de branchement
Pile mémoire Prefetching
3. Microarchitectures élémentaires Exécution dans le désordre
Exécution d’une instruction 6. Problématiques actuelles
Pipeline
Dépendances
Augmenter l’IPC
ENSEIRB-MATMECA // 76
4. Mémoires caches
Hiérarchie Mémoire
Caractéristiques des mémoires
Memory wall
Différents niveaux
Principe de localité
Localité spatiale
Localité temporelle
Fonctionnement d’un cache
Organisation d’un cache
Associativité
Politiques de remplacement
Optimisations
Gestion des écritures
Gestion des miss
ENSEIRB-MATMECA // 77
4. Mémoires caches: Hiérarchie mémoire
ENSEIRB-MATMECA // 78
4. Mémoires caches: Hiérarchie mémoire
Taille:
Nombre de bits que la mémoire peut contenir.
Latence:
Délai de réponse après reception de l’adresse.
Volatilité:
Conservation des données même après une coupure d’alimentation.
Compromis: grande mémoire = lente … et inversement !
ENSEIRB-MATMECA // 79
4. Mémoires caches: Hiérarchie mémoire
ENSEIRB-MATMECA // 80
4. Mémoires caches: Hiérarchie mémoire
Différents niveaux
Mise en place de niveaux mémoires intermédiaires:
Illusion d’une mémoire grande et rapide !
GPR L1D
L1I
Taille
Latence
ENSEIRB-MATMECA // 81
4. Mémoires caches: Hiérarchie mémoire
Différents niveaux
Généralement jusqu’à 4 niveaux:
L1I/L1D:
Une mémoire cache rapide et proche du processeur.
Généralement une dédiée aux instrutions, une autre aux données.
Taille: 128 Ko ~ 1Mo.
L2:
Premier niveau de mémoire unifiée.
Taille: 256 Ko ~ 32 Mo.
L3:
Premier niveau partagé entre les différents coeurs.
Taille: 32 ~128 Mo.
L4:
(Plus rare) Niveau partagé entre l’ensemble des composants (CPU/GPU).
Utilise de la DRAM (au lieu de la SRAM).
Taille: 128 Mo.
ENSEIRB-MATMECA // 82
4. Mémoires caches
Hiérarchie Mémoire
Caractéristiques des mémoires
Memory wall
Différents niveaux
Principe de localité
Localité spatiale
Localité temporelle
Fonctionnement d’un cache
Organisation d’un cache
Associativité
Politiques de remplacement
Optimisations
Gestion des écritures
Gestion des miss
ENSEIRB-MATMECA // 83
4. Mémoires caches: Principe de localité
Localité spatiale
Principe de localité:
Observation sur l’organisation et le fonctionnement global des programmes.
Deux types de localités.
1) Localité spatiale:
Un programme utilise géréralement des données/instructions proches de celles
déjà utilisées récemment.
Exemples:
Instructions successives, tableaux de données etc.
ENSEIRB-MATMECA // 84
4. Mémoires caches: Principe de localité
Localité spatiale
Principe de localité:
Observation sur l’organisation et le fonctionnement global des programmes.
Deux types de localités.
2) Localité temporelle:
Un programme réutilise géréralement des données/instructions qu’il a déjà
utilisées récemment.
Exemples:
Boucles, fonctions, pile mémoire etc.
ENSEIRB-MATMECA // 85
4. Mémoires caches
Hiérarchie Mémoire
Caractéristiques des mémoires
Memory wall
Différents niveaux
Principe de localité
Localité spatiale
Localité temporelle
Fonctionnement d’un cache
Organisation d’un cache
Associativité
Politiques de remplacement
Optimisations
Gestion des écritures
Gestion des miss
ENSEIRB-MATMECA // 86
4. Mémoires caches: Fonctionnement d’un cache
Objectif:
Rapprocher du processeur une sous-partie de la mémoire principale.
à Accès à cette sous-partie accéléré. Mémoire
Cache
ENSEIRB-MATMECA // 87
4. Mémoires caches: Fonctionnement d’un cache
Fonctionnement:
Lors d’un accès mémoire, le processeur envoie une adresse.
Donnée présente à accès rapide (cache hit). Mémoire
Requête
Cache
1
Processeur
Réponse
ENSEIRB-MATMECA // 88
4. Mémoires caches: Fonctionnement d’un cache
Fonctionnement:
Lors d’un accès mémoire, le processeur envoie une adresse.
Donnée absente à accès lent (cache miss). Mémoire
Requête Requête
Cache
1 2
Processeur
4 3
Réponse Réponse
ENSEIRB-MATMECA // 89
4. Mémoires caches: Fonctionnement d’un cache
4 questions:
Quelles données doivent être mises dans la mémoire cache ?
Utilisation du principe de localité.
Quelles données sont présentes dans la mémoire cache ?
Principe du tag et du bit de validité.
Comment sont organisées les données dans la mémoire cache ?
Associativité.
Si la mémoire cache est pleine, quelle donnée peut être remplacée ?
Politique de remplacement.
ENSEIRB-MATMECA // 90
4. Mémoires caches: Fonctionnement d’un cache
Localité temporelle:
Idée: une valeur récemment utilisée le sera probablement à nouveau.
Application: quand une valeur est récupérée en mémoire, on la conserve
temporairement dans la mémoire cache.
Localité spatiale:
Idée: une valeur proche d’une récemment utilisée sera probablement utilisée.
Application:
Découpage de la mémoire en bloc (appelé ligne).
Quand une valeur mémoire est utilisée, l’ensemble de la ligne est mise dans la mémoire
cache.
ENSEIRB-MATMECA // 91
4. Mémoires caches: Fonctionnement d’un cache
Associativité
Associatitivité:
Nombre d’emplacements où une ligne peut être rangée dans une mémoire
cache.
Impacte directement le temps de recherche d’une ligne.
Une mémoire cache avec une grande associativité sera généralement plus lent.
Cache
Tag 0
Tag 1
Tag 2
Tag 3
…
Tag N
ENSEIRB-MATMECA // 94
4. Mémoires caches: Fonctionnement d’un cache
Associativité
Mémoire cache pleinement associative:
Chaque ligne peut être enregistrée dans n’importe quel emplacement.
Taille du tag: 𝑇*'$(++( − 𝑙𝑜𝑔2(𝐿) avec L, le nombre d’octets par ligne.
Avantage: la mémoire cache est plus flexible.
Inconvénient: chaque tag doit être comparé lors d’un accès.
Mémoire
0 1
Cache
2 3(3)
0
4 5
5
6 7
8
8 9
12
10 11
12 13
14 15
ENSEIRB-MATMECA // 95
4. Mémoires caches: Fonctionnement d’un cache
Associativité
Mémoire cache à correspondance directe:
Chaque ligne peut être enregistrée dans n’importe quel emplacement.
Taille du tag: 𝑇&'($%%$ − 𝑙𝑜𝑔2 𝐿 − 𝑙𝑜𝑔2(𝑆) avec L, le nombre d’octets par ligne et
S, le nombre d’emplacements.
Avantage: un seul tag à comparer pour chaque accès.
Inconvénient: Aucune flexibilité.
Mémoire
0(0) 1(1)
Cache
2(2) 3(3)
0 0
4(0) 5(1)
1 5
6(2) 7(3)
2
8(0) 9(1)
3
10(2) 11(3)
12(0) 13(1)
14(2) 15(3)
ENSEIRB-MATMECA // 96
4. Mémoires caches: Fonctionnement d’un cache
Associativité
Mémoire cache associative par ensembles à N-voies:
Chaque ligne peut être enregistrée dans n’importe quel emplacement d’un sous-
ensemble (un set).
Taille du tag: 𝑇&'($%%$ − 𝑙𝑜𝑔2 𝐿 − 𝑙𝑜𝑔2(𝑆) avec L, le nombre d’octets par ligne et
S, le nombre de sous-ensembles.
Compromis: tous les tags ne doivent pas être comparés.
Compromis: une certaine flexibilité possible.
Mémoire
0(0) 1(1)
Cache
2(0) 3(1)
0
0 4(0) 5(1)
8
6(0) 7(1)
5
1 8(0) 9(1)
10(0) 11(1)
12(0) 13(1)
14(0) 15(1)
ENSEIRB-MATMECA // 97
4. Mémoires caches: Fonctionnement d’un cache
Associativité
Découpage de l’adresse:
Adresse: 𝑇*'$(++( bits.
Offset: 𝑙𝑜𝑔2 𝐿 avec L, le nombre d’octets par ligne.
Index: 𝑙𝑜𝑔2(𝑆) avec S, le nombre de sous-ensembles.
Tag: 𝑇*'$(++( − 𝑙𝑜𝑔2 𝐿 − 𝑙𝑜𝑔2(𝑆).
Adresse
ENSEIRB-MATMECA // 98
4. Mémoires caches: Fonctionnement d’un cache
Politiques de remplacement
Quand la mémoire cache (un sous-ensemble) est plein, quelle ligne
remplacée lors d’un accès ?
Dépend de la politique de remplacement implémentée.
Plusieurs politiques possibles:
LRU (Least Recently Used): remplace la ligne la moins récemment utilisée.
FIFO (First-In First-Out): remplace la première ligne enregistrée.
Aléatoire: remplace aléatoirement une ligne.
LFU (Least Frequently Used): remplace la moins fréquemment utilisée.
PLRU (Pseudo Least Recently Used): essaye d’imiter un fonctionnement LRU
avec moins de complexité.
ENSEIRB-MATMECA // 99
4. Mémoires caches
Hiérarchie Mémoire
Caractéristiques des mémoires
Memory wall
Différents niveaux
Principe de localité
Localité spatiale
Localité temporelle
Fonctionnement d’un cache
Organisation d’un cache
Associativité
Politiques de remplacement
Optimisations
Gestion des écritures
Gestion des miss
ENSEIRB-MATMECA // 100
4. Mémoires caches: Optimisations
Pipeline
Un accès mémoire dans un cache peut-être divisé:
Choix du set adressé,
Choix de la ligne lue,
Lecture de l’état d’une ligne,
Requête de lecture (si nécessaire),
Réponse de lecture (si nécessaire),
Requête d’écriture (si nécessaire),
Requête vers le niveau mémoire supérieur (miss),
Réponse du niveau mémoire supérieur (miss).
ENSEIRB-MATMECA // 101
4. Mémoires caches: Optimisations
GPR
Copie Copie
ENSEIRB-MATMECA // 102
4. Mémoires caches: Optimisations
GPR
Copie Copie
ENSEIRB-MATMECA // 103
4. Mémoires caches: Optimisations
GPR
Copie Copie
ENSEIRB-MATMECA // 104
4. Mémoires caches: Optimisations
GPR
Dirty Copie
ENSEIRB-MATMECA // 105
4. Mémoires caches: Optimisations
GPR
Copie
ENSEIRB-MATMECA // 106
4. Mémoires caches: Optimisations
ENSEIRB-MATMECA // 107
4. Mémoires caches: Optimisations
ENSEIRB-MATMECA // 108
4. Mémoires caches: Optimisations
ENSEIRB-MATMECA // 109
EN226 - Structure du cours
1. Rappels généraux 4. Mémoires caches
Vue globale des systèmes Hiérarchie mémoire
Abstraction et complexité Principe de localité
2. Le jeu d’instructions RISC-V Fonctionnement d’un cache
Structure de l’ISA Optimisations
Types d’opérations 5. Spéculation
Modes d’adressage Prédiction de branchement
Pile mémoire Prefetching
3. Microarchitectures élémentaires Exécution dans le désordre
Exécution d’une instruction 6. Problématiques actuelles
Pipeline
Dépendances
Augmenter l’IPC
ENSEIRB-MATMECA // 110
5. Spéculation
Prédiction de branchement
Intérêt
Identification: BTB
Direction: BHT
Retour: RSB
Autres strategies
Prefetching
Exécution dans le désordre
Dans l’ordre vs. dans le désordre
Renommage de registres
Dépendances mémoires
ENSEIRB-MATMECA // 111
5. Spéculation: Prédiction de branchement
Problématique
Prédiction de branchement
Objectif:
Anticiper les futurs aléas pour réduire les cycles perdus.
Stratégies:
Approche statique:
Observer le comportement des programmes en général,
Déduire des règles à appliquer systématiquement.
Approche dynamique:
Utiliser les exécutions passées pour accélérer les exécutions futures.
Utilisation de mécanismes de mémorisation des informations.
ENSEIRB-MATMECA // 113
5. Spéculation: Prédiction de branchement
Correction
PC
IF
ID
EX
MEM
WB
ENSEIRB-MATMECA // 114
5. Spéculation: Prédiction de branchement
Branchement conditionnel
BEQ, BNE, BGE, BGEU, BLT, BLTU.
Saut depend de la condition.
Destination = PC + imm (statique).
Adresse potentielle connue au décodage.
Utilisations majeures: boucles, if…then…else etc.
ENSEIRB-MATMECA // 115
5. Spéculation: Prédiction de branchement
Prédiction de branchement
3 questions:
L’instruction à l’adresse visée est-elle un saut/branchement ?
Le prochain PC peut-il être recalculé ?
Quelle est l’adresse de destination ?
Quel sera le prochain PC ?
Le saut doit-il être effectué ?
Le prochain PC va-t-il être recalculé ?
ENSEIRB-MATMECA // 116
5. Spéculation: Prédiction de branchement
Correction
PC
IF
• Saut / branchement ?
ID • Adresse statique.
• Condition.
EX • Adresse dynamique.
MEM
WB
ENSEIRB-MATMECA // 117
5. Spéculation: Prédiction de branchement
Prédiction statique
Même prédiction indépendamment du programme.
Stratégie 1:
Prochaine instruction = PC + 4.
Approche la plus simple.
Stratégie 2:
Saut direct effectué dès que l’instruction est décodée.
Limite les cycles perdus.
Stratégie 3:
Branchement en arrière (immédiat négatif) = pris.
Déduction des boucles.
Appliqué dès que l’instruction est décodée.
etc.
ENSEIRB-MATMECA // 118
5. Spéculation: Prédiction de branchement
V PC Destination Type
PC = Destination + Type
ENSEIRB-MATMECA // 119
5. Spéculation: Prédiction de branchement
Sauts conditionnels
Direction Prédiction
Pris Défaut
Pris Pris for (i=0; i<10; i=i+1) {
Pris Pris for (j=0; j<4; j=j+1) {
loop body
Pris Pris }
Non-pris Pris }
Pris Non-pris
… …
ENSEIRB-MATMECA // 120
5. Spéculation: Prédiction de branchement
Compteur 2 bits
PREDICTION: NON-PRIS PREDICTION: PRIS
0 1 2 3
ENSEIRB-MATMECA // 121
5. Spéculation: Prédiction de branchement
Compteur 2 bits
Direction Prédiction
Pris Défaut
Pris Pris for (i=0; i<10; i=i+1) {
Pris Pris for (j=0; j<4; j=j+1) {
loop body
Pris Pris }
Non-pris Pris }
Pris Pris
… …
ENSEIRB-MATMECA // 122
5. Spéculation: Prédiction de branchement
ENSEIRB-MATMECA // 123
5. Spéculation: Prédiction de branchement
Sauts indirects:
main:
Destination dépend des registres. …
Peut changer à chaque exécution. i0
Majoritairement appel/retour. i1
i2 func:
Fonction: call func …
i4 …
Pour chaque appel, une instruction i5 ret
retour associée. …
Destination retour = toujours
instruction suivante.
ENSEIRB-MATMECA // 124
5. Spéculation: Prédiction de branchement
ENSEIRB-MATMECA // 125
5. Spéculation: Prédiction de branchement
Destination ?
RSB
…
Retour 2
Retour 1
Retour 0
ENSEIRB-MATMECA // 126
5. Spéculation: Prédiction de branchement
Avantages:
Efficace pour la plupart des programmes.
Réponse en un cycle possible.
Simple à implémenter.
Limites:
Besoin d’avoir déjà rencontré et exécuté l’instruction de redirection.
Prédiction des branchements conditionnels limitée.
Dépend de la taille des mécanismes.
ENSEIRB-MATMECA // 127
5. Spéculation: Prédiction de branchement
ENSEIRB-MATMECA // 129
5. Spéculation: Prefetching
Préchargement logiciel
Objectif:
anticiper de futurs accès aux mémoires caches.
Stratégie 1: Logiciel + ISA + Matériel
L’ISA met à disposition un moyen d’informer le matériel (e.g. extension
RISC-V ZiCbo).
Le logiciel l’utilise en amont d’accès mémoire:
Suffisamment en amont pour laisser le temps au prefetcher !
Le matériel (prefetcher) précharge les données dans la mémoire cache.
ENSEIRB-MATMECA // 130
5. Spéculation: Prefetching
Prefetching: matériel
Objectif:
anticiper de futurs accès aux mémoires caches.
Stratégie 2: Matériel
Similaire à de la prediction de branchement mais au niveau des caches.
Le matériel (prefetcher) tente d’anticiper de futurs accès.
Version la plus simple:
Miss détecté, ligne L récupérée.
Prefetcher récupère également la ligne L + 1 (localité spatiale).
Efficace pour les instructions, limitée pour les données.
ENSEIRB-MATMECA // 131