Vous êtes sur la page 1sur 131

EN226 –

Architectures des processeurs II


Année 2023-2024
S8 - Électronique

Mathieu Escouteloup: mathieu.escouteloup@enseirb-matmeca.fr


Jonathan Saussereau: jonathan.saussereau@enseirb-matmeca.fr

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

Fonctionnement d’un processeur


Données

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

Le processeur traite des données en suivant les instructions.


j pgcd
inferieur:
sub a6, a4, a5
sw a5, 0(sp)
sw a6, 4(sp)
addi sp, sp, 8 Mises bout à bout, ces instructions permettent la réalisation
j pgcd
d’une application.
Instructions

ENSEIRB-MATMECA // 9
1. Rappels généraux: Performances et complexité

Contraintes

Qu’est-ce que les performances ?


Capacité à exécuter un grand nombre d’opérations en peu de temps.
Différents cas d’usage:
Réduire le temps d’exécution d’une application.
Répondre à plusieurs requêtes simultanément.
Garantir le temps d’exécution pour une tâche (temps réel).

D’autres contraintes: consommation, coût, sécurité …
Les processeurs sont présents partout.
Pas les mêmes contraintes sur un objet connecté, un PC, un serveur …

ENSEIRB-MATMECA // 10
1. Rappels généraux: Performances et complexité

Métriques pour les performances

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

Le logiciel n’a qu’une vision simplifiée du matériel:


L’ISA ajoute un niveau d’abstraction.
L’état logiciel n’est représenté que par les données dans certains registres et la mémoire.
Les autres détails internes du processeur sont cachés.

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

Abstraction: utilisée pour gérer la complexité des systèmes.


ENSEIRB-MATMECA // 14
1. Rappels généraux: Performances et complexité

Montée en complexité: “Loi de Moore” (1965)

Évolution du nombre de transistors par processeur.

ENSEIRB-MATMECA // 15
1. Rappels généraux: Niveaux d’abstraction

Structure matérielle

Les processeurs sont des systèmes


complexes:
Le résultat de décennies
d’optimisations.
De nombreux mécanismes internes.
Des variations énormes entre plusieurs
implémentations.

Microarchitecture Skylake (2015)


ENSEIRB-MATMECA // 16
1. Rappels généraux: Performances et complexité

Montée en complexité: quelques chiffres


Nombre de transistors dans un microprocesseur:
1971 – Intel 4004: 2 250 transistors.
1979 – Intel 8086: 30 000 transistors.
1989 – Intel 80486: 1 180 285 transistors.
2003 – AMD K8: 105 900 000 transistors.
2010 – Core i7: 1 170 000 000 transistors.

2023 – Apple M2 Ultra: 134 000 000 000 transistors.
Performances des processeurs:
1971 – Intel 4004: 740KHz (< 1 inst./cycle).
1979 – Intel 8086: 5MHz.
1993 – Intel P5: 60-300MHz (2 inst./cycle).
2000 – Intel Pentium IV: 2,8GHz.
2002 – Intel Pentium IV: 3,06GHz, 2 threads.
2005 – Pentium D: 2,66-3,73GHz, 2 cœurs.
2006 – Intel Kentsfield: 2,13-3,00GHz, 4 cœurs.

2023 – Intel i9-14900K: 3,2-6,00GHz, 24 coeurs (8+16)/32 threads.

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

RISC-V dans ce cours


Codes et exemples pour le cours, TD et TP.
Lien spécification:
https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-
IMAFDQC/riscv-spec-20191213.pdf
Lien interpréteur (support limité):
https://www.cs.cornell.edu/courses/cs3410/2019sp/riscv/interpreter/
Simulateur de microarchitectures “maison” pour les TP:
Répertoire GitHub: https://github.com/mescoutelou/riscv-sim

ENSEIRB-MATMECA // 21
2. Le jeu d’instructions RISC-V: Informations générales

Langage d’assemblage

Traduction littérale de valeurs binaires:


L’humain comprend: addi x3, x2, 4 (x3 <= x2 + 4)
La machine comprend: 00000000010000010000000110010011
Traduction effectuée par un outil: l’assembleur.
Instructions classées (ici) en 4 types:
Arithmétique et logique,
Mémoire,
Redirection,
Autres opérations.

ENSEIRB-MATMECA // 22
2. Le jeu d’instructions RISC-V: Informations générales

Formats d’instructions

Six formats d’instructions sur 32 bits.


OPCODE, RD, RS1 et RS2 toujours au même endroit.
Accélère le décodage.
Accélère la lecture des opérandes.

ENSEIRB-MATMECA // 23
2. Le jeu d’instructions RISC-V: Informations générales

ABI: Application Binary Interface


L’utilisation standard des registres suit une convention.
ISA: permet une utilisation libre des registres.
ABI: définit leur utilisation pour une compatibilité entre
applications.

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

Exemples (code et opération):


ASM: sw x3,4 (x2) ASM: lw x10, 0(x31)
OP: MEM[x2 + 4] <= x3 OP: x10 <= MEM[0 + x31]

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

0x04000000 addi sp, sp, -8 PC = 0x04000008


0x04000004 lw a4, 0(sp)

0x04000008 lw a5, 4(sp)


Processeur
0x0400000c addi sp, sp, 4
GPR CSR
0x04000010 jalr zero, ra, 0

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

Redirection: opération implicite sur le PC!

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

Adressage par registre


Une opérande est située dans un registre.
Permet d’indiquer le registre à utiliser.
RISC-V: la plupart des instructions.
Exemple:
add x3, x2, x5
x3, x2, x5 sont trois registres du processeur.

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

Adressage base + offset


Deux opérandes donnent une adresse de base (registre) + un
décalage (immédiat).
Permet de réaliser des accès à partir d’une adresse de base.
RISC-V: les accès mémoires (LOAD/STORE).
Exemple:
lw x3, 8(x2)
L’adresse mémoire est obtenu en faisant x2 + 8.

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

Pile mémoire: principes


Structure mémoire permettant le stockage et l’échange de données.
Fonctionnement LIFO: Last-In First-Out.
Déplacement par rapport à une adresse de base.
SP: Stack Pointer (pointeur de pile).

adresse donnée
… …

sp = 0x80008000 0x80008000 …

0x80007ffc …

0x80007ff8 …

0x80007ff4 …

0x80007ff0 …

… …

ENSEIRB-MATMECA // 38
2. Le jeu d’instructions RISC-V: Pile Mémoire

Pile mémoire: principes


Deux types d’opérations:
PUSH: mettre une donnée dans la pile.
POP: prendre une donnée de la pile

PUSH data0

adresse donnée adresse donnée


… … … …
sp = 0x80008000 0x80008000 … 0x80008000 data0
0x80007ffc … sp = 0x80007ffc 0x80007ffc …
0x80007ff8 … 0x80007ff8 …
0x80007ff4 … 0x80007ff4 …
0x80007ff0 … 0x80007ff0 …
… … … …

PUSH: le pointeur de pile se décrémente !


ENSEIRB-MATMECA // 39
2. Le jeu d’instructions RISC-V: Pile Mémoire

Pile mémoire: principes


Deux types d’operations:
PUSH: mettre une donnée dans la pile.
POP: prendre une donnée de la pile

POP

adresse donnée adresse donnée


… … … …
0x80008000 data0 sp = 0x80008000 0x80008000 data0
sp = 0x80007ffc 0x80007ffc … 0x80007ffc …
0x80007ff8 … 0x80007ff8 …
0x80007ff4 … 0x80007ff4 …
0x80007ff0 … 0x80007ff0 …
… … … …

POP: le pointeur de pile s’incrémente !


ENSEIRB-MATMECA // 40
2. Le jeu d’instructions RISC-V: Pile Mémoire

Pile mémoire: RISC-V


Implémentation différente d’x86(-64) et Arm.
Convention: sp à x2.
Zone mémoire dans la RAM.
Pas d’instruction dédiée: utilisation de LOAD/STORE + opérations sur sp:

PUSH x10: POP x10:


addi sp, sp, -4 lw x10, 0(sp)
sw x10, 0(sp) addi sp, sp, -4

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

0x04000000 addi sp, sp, -8


PC = 0x04000004
0x04000004 lw a4, 0(sp)

0x04000008 lw a5, 4(sp) Processeur Cycle N + 1


0x0400000c addi sp, sp, 4

0x04000010 jalr zero, ra, 0 GPR CSR

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

Améliorer les performances du processeurs


Augmenter la fréquence d’horloge:
Réduction du chemin critique,
Utilisation de pipeline.
Augmenter le taux d’utilisation des ressources matérielles:
Mise en place de mécanismes d’optimisation dédiés,
Augmentation de la complexité du système.
Exécuter des opérations en parallèle:
Optimisation au niveau de l’exécution globale,
Augmentation du coût matériel et de la consommation.
Ajouter de nouvelles instructions:
Implémentation d’instructions spécifiques et optimisées,
Augmentation de la complexité du système.

ENSEIRB-MATMECA // 45
2. Microarchitectures élémentaires: Exécution d’une instruction

Architectures Harvard vs. von Neumann


Processeur Processeur

Instructions
Instructions Données
/ Données

Harvard Von Neumann

• Mémoires instructions/données • Mémoire instructions/données


séparées. unifiée.
• Parallélisation des accès mémoires. • Un accès mémoire par cycle.
• Complexité plus importantes. • Réutilisation du port mémoire.
• Mauvaise utilisation de l’espace • Utilisation de l’espace mémoire
mémoire. optimisée (instructions + données).
ENSEIRB-MATMECA // 46
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 // 47
2. Microarchitectures élémentaires: Pipeline

Exemple: portes logiques


Considérons:
Des registres avant les entrées.
Un registre après la sortie.
1 porte = 1ns de délai de propagation.
1 registre = 2ns.

entrées

sortie
Questions:
Chemin critique ?
Fréquence maximale ?
Comment augmenter la fréquence ?

ENSEIRB-MATMECA // 48
2. Microarchitectures élémentaires: Pipeline

Exemple: portes logiques


2 étages
2 étages:
Chemin critique ?
Utile ?
3 étages:
Chemin critique ?

entrées

sortie
Utile ?
4 étages:
Chemin critique ?
Utile ?
Autres solutions ?

ENSEIRB-MATMECA // 49
2. Microarchitectures élémentaires: Pipeline

ILP: Instruction-Level Parallelism

instruction 1 instruction 2 instruction 3


PC IF ID RR EX AM WB PC IF ID RR EX AM WB PC IF ID RR EX AM WB

7 cycles 7 cycles 7 cycles

Chaque opération = 1 cycle.


Processeur sans pipeline:
1 instruction = 7 cycles.
3 instruction = 21 cycles.

ENSEIRB-MATMECA // 50
2. Microarchitectures élémentaires: Pipeline

ILP: Instruction-Level Parallelism


instruction 1
PC IF ID RR EX AM WB

instruction 2
PC IF ID RR EX AM WB

instruction 3
PC IF ID RR EX AM WB

Chaque opération = 1 cycle.


Processeur avec pipeline:
1 instruction = 7 cycles.
3 instruction = 9 cycles.
𝑁!"!#$% = L + I − 1, avec L = la latence en cycles, et I = le nombre d’instructions.

ENSEIRB-MATMECA // 51
2. Microarchitectures élémentaires: Pipeline

Pipeline standard: 5 étages

IF ID EX MEM WB

Sens du pipeline

IF: Instruction Fetch.


PC de la prochaine instruction calculée en parallèle.
ID: Instruction Decode.
Lecture des registres (RR) effectuée dans le même étage.
EX: Execute.
MEM: Memory.
WB: Write-Back.

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

Que se passe-t-il en cas de blocage d’une instruction ?

IF i1 i2 i3 ??

i1: addi x4, x0, 1 ID i1 i2 ??


i2: add x5, x2, x3
i3: addi x6, x0, 6 EX i1 ??

MEM ??

WB ??
Temps

i1 dure plusieurs cycles (opération multicycle, accès mémoire lent etc.).


ENSEIRB-MATMECA // 55
2. Microarchitectures élémentaires: Dépendances

Dépendances structurelles

Que se passe-t-il en cas de blocage d’une instruction ?

IF i1 i2 i3 i3 i3 i4 i5

i1: addi x4, x0, 1 ID i1 i2 i2 i2 i3 i4


i2: add x5, x2, x3
i3: addi x6, x0, 6 EX i1 i1 i1 i2 i3

MEM i1 i2

WB i1
Temps

Blocage: i2 doit attendre i1 pour avancer, ce qui bloque également i3 …


ENSEIRB-MATMECA // 56
2. Microarchitectures élémentaires: Dépendances

Dépendances de données

Que se passe-t-il si une instruction a besoin du résultat d’une


instruction précédente ?
IF i1 i2 i3 ??

i1: addi x4, x0, 1 ID i1 i2 ??


i2: add x5, x4, x3
i3: addi x6, x0, 6 EX i1 ??

MEM ??

WB ??
Temps

i2 a besoin du résultat de i1. i3 est indépendant.


ENSEIRB-MATMECA // 57
2. Microarchitectures élémentaires: Dépendances

Dépendances de données

Que se passe-t-il si une instruction a besoin du résultat d’une


instruction précédente ?
IF i1 i2 i3 i3 i3 i3 i4

i1: addi x4, x0, 1 ID i1 i2 i2 i2 i2 i3


i2: add x5, x4, x3
i3: addi x6, x0, 6 EX i1 i2

MEM i1
x4 contient la
dernière valeur.
WB i1
Temps

Blocage: i2 est bloqué jusqu’à l’écriture du résultat de i1.


ENSEIRB-MATMECA // 58
2. Microarchitectures élémentaires: Dépendances

Dépendances de données

Prise en compte par le compilateur …


i1: sub x2, x1, x7 i1: sub x2, x1, x7
i2: add x8, x4, x2 i2: sub x18, x6, x9
i3: sub x23, x2, x1 i3: add x8, x4, x2
i4: sub x18, x6, x9 i4: sub x23, x2, x1
i5: add x8, x8, x18 i5: add x8, x8, x18

Programme 1 Programme 2

… mais pas toujours possible !

ENSEIRB-MATMECA // 59
2. Microarchitectures élémentaires: Dépendances

Mécanisme de transfert de registre (bypass)


Version 1 Version 2

Version 3 Version 4
Plusieurs implémentations possibles…
ENSEIRB-MATMECA // 60
2. Microarchitectures élémentaires: Dépendances

Mécanisme de transfert de registre (bypass)


ID i1

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

Que se passe-t-il en cas de redirection du flot de contrôle ?

i1: call function IF i1 i2 i3 ??


i2: add x5, x2, x3
i3: addi x6, x0, 6 ID i1 i2 ??
...
... EX i1 ??
function:
i10: sub x10, x0, x1 MEM ??

WB ??
Temps

i1 saute vers function (PC = @function).


ENSEIRB-MATMECA // 62
2. Microarchitectures élémentaires: Dépendances

Dépendances de contrôle

Que se passe-t-il en cas de redirection du flot de contrôle ?

i1: call function IF i1 i2 i3 i10 i11 i12


i2: add x5, x2, x3
i3: addi x6, x0, 6 ID i1 i2 i10 i11
...
... EX i1 i10
function:
i10: sub x10, x0, x1 MEM i1

WB i1
Temps

Effacement: les instructions préchargées i2 et i3 sont annulées.


ENSEIRB-MATMECA // 63
2. Microarchitectures élémentaires: Dépendances

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.

Coût vs. performances


Bien choisir ce qui doit être dupliqué!

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

Plusieurs opérations similaires par cycle.


Processeur avec pipeline superscalaire:
1 instruction = 7 cycles.
6 instructions = 9 cycles.
&
𝑁!"!#$% = L + ' − 1, avec L = la latence en cycles, I = le nombre d’instructions et S = le nombre d’instructions exécutées
simultanément.
ENSEIRB-MATMECA // 67
2. Microarchitectures élémentaires: Augmenter l’IPC

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

L’impact des dépendances est aussi multiplié!

ENSEIRB-MATMECA // 68
2. Microarchitectures élémentaires: Augmenter l’IPC

Limites du superscalaire

Multiplication des aléas possibles:


Plus grand nombre d’instructions en cours = plus de dépendances possibles.
Coût de la multiplication matérielle:
Plus de ressources matérielles nécessaires,
Plus de complexité à gérer,
Tout multiplier n’est pas forcément pertinent.
Rôle du compilateur:
Gestion des dépendances entre les données,
Prise en compte des unités de calculs disponibles.

ENSEIRB-MATMECA // 69
2. Microarchitectures élémentaires: Augmenter l’IPC

VLIW: Very Long Instruction Word

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

Connait précisément les unités


disponibles,
Gère explicitement le parallélisme,
Répartition statique.

ENSEIRB-MATMECA // 70
2. Microarchitectures élémentaires: Augmenter l’IPC

Parallélisme des tâches

Constat lors de l’exécution d’une seule tâche:


Chaque aléa bloque l’ensemble du fil d’exécution,
Ressources pas utilisées au maximum.

Temps
Question: comment profiter des ressources
encore inutilisées ?

ENSEIRB-MATMECA // 71
2. Microarchitectures élémentaires: Augmenter l’IPC

Parallélisme des tâches

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

Cas idéal visé:


Exécuter simultanément des tâches indépendantes.
Éléments à considérer:
Exécution globale améliorée.
Chaque tâche à un coeur dédié.
Demande de dupliquer entièrement l’ensemble des mécanismes.
Apparition de nouveaux problèmes: cohérence mémoire, synchronisation
des coeurs, contention de la mémoire etc.

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

Mémoires dans un système


La mémoire occupe une grande place dans les systèmes:
Registre:
Petits volumes de données
Technologie SRAM
Mémoire cache:
Quelques KB à plusieurs MB.
Technologie SRAM
Mémoire principale:
Plusieurs GB.
Technologie DRAM.
Mémoire de stockage:
Des dizaines ou centaines de GB.
HDD/SSD

ENSEIRB-MATMECA // 78
4. Mémoires caches: Hiérarchie mémoire

Caractéristiques des mémoires

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

Memory Wall (“mur mémoire”)


Processeur:
En moyenne, 1 instruction sur 4 est un accès mémoire.
Fréquence du MHz au GHz.
Mémoire principale:
Latence ≈ centaine(s) de ns.
Pour une fréquence de 1 GHz, représente des centaines de cycles.
Problème:
Les processeurs sont devenus bien plus rapide que les mémoires.
Temps de réponse de la mémoire: nouveau facteur limitant pour les
performances !

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

Processeur L2 Mémoire principale

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

Organisation 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

Organisation 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

Organisation 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

Organisation 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

Application du principe de localité

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

Identification des données présentes


Bit de validité:
Stocké pour chaque ligne.
Indique si la ligne correspondante est valide.
Au reset, la mémoire cache est vide: tous les bits de validité sont à 0.
Tag:
Stocké pour chaque ligne.
Partie commune des addresses de chaque valeur de la ligne (bits de poids fort).
Taille: 𝑇&'($%%$ − 𝑙𝑜𝑔2(𝐿) avec L, le nombre d’octets par ligne.
Offset:
Partie d’une adresse pour choisir une valeur dans une ligne (bits de poids faible).
Taille: 𝑙𝑜𝑔2(𝐿) avec L, le nombre d’octets par ligne.
Tag Offset
Adresse
ENSEIRB-MATMECA // 92
4. Mémoires caches: Fonctionnement d’un cache

Identification des données présentes


Tag Offset

V Tag Ligne / Valeurs

Hit / Miss ? Valeur


ENSEIRB-MATMECA // 93
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

Tag Index Offset

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

à Contrôleur de mémoire cache peut également être organisé en pipeline !

ENSEIRB-MATMECA // 101
4. Mémoires caches: Optimisations

Gestion des écritures


Une mémoire cache contient une copie de la mémoire centrale.
Chaque niveau mémoire contient donc une copie différente.
Toutes les copies doivent refléter une même version de la mémoire.
Que se passe-t-il si le processeur effectue une modification (écriture) ?

GPR

Processeur L1D L2 Mémoire principale


Écriture Copie

Copie Copie

ENSEIRB-MATMECA // 102
4. Mémoires caches: Optimisations

Gestion des écritures


Écriture traversante (write-through):
Modification propagée dans toute la hiérarchie.
Une écriture du processeur = une écriture sur chaque niveau.

GPR

Processeur L1D L2 Mémoire principale


Écriture Copie Écriture Écriture

Copie Copie

ENSEIRB-MATMECA // 103
4. Mémoires caches: Optimisations

Gestion des écritures


Écriture différée (write-back):
Modification locale uniquement
Une écriture du processeur = une écriture au premier niveau seulement.
Ligne modifiée = marqué dirty (bit d’information supplémentaire par ligne).
Propagation au niveau supérieur quand la ligne est évincée.

GPR

Processeur L1D L2 Mémoire principale


Écriture Dirty

Copie Copie

ENSEIRB-MATMECA // 104
4. Mémoires caches: Optimisations

Gestion des écritures


Écriture différée (write-back):
Modification locale uniquement
Une écriture du processeur = une écriture au premier niveau seulement.
Ligne modifiée = marqué dirty (bit d’information supplémentaire par ligne).
Propagation au niveau supérieur quand la ligne est évincée.

GPR

Processeur L1D L2 Mémoire principale


Eviction Écriture

Dirty Copie

ENSEIRB-MATMECA // 105
4. Mémoires caches: Optimisations

Gestion des écritures


Écriture contournante (write-around):
Modification de la mémoire principale uniquement.
Utile si donnée pas réutilisée prochainement.

GPR

Processeur L1D L2 Mémoire principale


Écriture

Copie

ENSEIRB-MATMECA // 106
4. Mémoires caches: Optimisations

Gestion des miss


Accélérer la disponibilité de la donnée demandée:
Un miss implique d’aller chercher l’ensemble de la ligne.
Fonctionnement de base: cache répond une fois l’ensemble de la ligne
récupérée.
Requête concerne généralement qu’une partie de la ligne.
Alternative: réponse du cache dès que la donnée demandée disponible.
Amélioration: récupérée en premier la donnée demandée.

ENSEIRB-MATMECA // 107
4. Mémoires caches: Optimisations

Gestion des miss


Un contrôleur de cache a les mêmes limites qu’un pipeline:
Mémoire cache dite bloquante.
Sans aléa (pas de miss): une réponse par cycle possible.
Avec aléa (miss): les requêtes suivantes sont bloquées.
Un miss a donc un impact considérable.

Question: comment limiter l’impact d’un miss uniquement aux


opérations sur cette ligne ?

ENSEIRB-MATMECA // 108
4. Mémoires caches: Optimisations

Gestion des miss


Mémoire cache non-bloquante:
Cache hit: la requête est servie normalement.
Cache miss: la requête est sauvegardée dans une table et traitée
ultérieurement.
Un cache hit peut doubler un ou plusieurs miss.
Contrôleur plus complexe:
Une table pour sauvegarder les requêtes,
Un contrôleur dédié aux hit et anciens miss,
Un contrôleur dédié aux miss,
etc.

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

15-30% des instructions sont des redirections:


RISC-V: branchement conditionnel, saut direct ou indirect.
Destination et direction ne sont connues que tardivement:
Récupération de l’instruction faite dans les premiers étages,
Calcul effectué dans les derniers étages.
Mauvaise instruction récupérée = plusieurs cycles perdus !
Impactent les performances des processeurs complexes:
Réduit l’efficacité sur des longs pipelines.
Question: comment gérer au mieux ces changements dans
l’exécution d’un programme ?
ENSEIRB-MATMECA // 112
5. Spéculation: Prédiction de branchement

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

Vue d’un pipeline Prédiction

Correction
PC

IF

ID

EX

MEM

WB

ENSEIRB-MATMECA // 114
5. Spéculation: Prédiction de branchement

Analyse des branchements


Saut:
Direct (JAL):
Destination = PC + imm (statique).
Adresse connue au décodage.
Indirect (JALR):
Destination = registre + imm (dynamique).
Adresse dépend d’un registre.
Utilisation majeure: appel/retour de function.

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

Vue d’un pipeline Prédiction

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

Prédiction dynamique: identification


BTB: Branch Target Buffer
Principe:
Sauvegarde les informations des N derniers sauts/branchements rencontrés.

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
… …

Mémorisation du dernier choix seulement:


2 mauvaises prédictions par boucle.

ENSEIRB-MATMECA // 120
5. Spéculation: Prédiction de branchement

Compteur 2 bits
PREDICTION: NON-PRIS PREDICTION: PRIS

Non-pris Non-pris Non-pris

0 1 2 3

Pris Pris Pris

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
… …

Mémorisation du dernier choix seulement:


1 mauvaise prédiction par boucle.

ENSEIRB-MATMECA // 122
5. Spéculation: Prédiction de branchement

Prédiction dynamique: direction


XX
XX
XX
PC XX
XX
XX
10 Pris
BHT: Branch History Table
XX
Principe:
XX
Un compteur 2 bits associé à chaque valeur de poids faible du PC.
Taille optimale: 4096 compteurs. XX
XX
XX

ENSEIRB-MATMECA // 123
5. Spéculation: Prédiction de branchement

Sauts indirects et fonctions

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

Prédiction dynamique: retours


CALL RET

RSB: Return Stack Buffer


Principe: …
Fonctionnement d’une pile. PC + 4
A chaque CALL rencontré, on enregistre l’adresse Retour 3
de retour.
A chaque RET prédit, on redirige vers la dernière Retour 2
adresse de destination.
Retour 1
Retour 0

ENSEIRB-MATMECA // 125
5. Spéculation: Prédiction de branchement

Exemple de prédicteur de branchement.


XX
XX
BHT
XX
XX
XX
XX
XX
XX
Redirection ?
BTB
PC
Infos + destination Prochain PC

Destination ?

RSB

Retour 2
Retour 1
Retour 0

ENSEIRB-MATMECA // 126
5. Spéculation: Prédiction de branchement

Exemple de prédicteur 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

Autres mécanismes de prédiction

PHT: Pattern History Table


Choisir un compteur en fonction de plusieurs derniers choix.
Prédicteur de branchement global
Enregistre la direction de la globalité des derniers N branchements.
Un registre à décalage supplémentaire.
Prédicteur de branchement local
Enregistre la direction des derniers N branchements pour chaque instruction
indépendamment.
Registres supplémentaires selon la taille de la table.
Prédicteurs plus complexes
Perceptron: utilisation d’un réseau de neurones,
Combinaisons de plusieurs prédicteurs,
etc.
ENSEIRB-MATMECA // 128
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 // 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

Vous aimerez peut-être aussi