Title: ARPO
1ARPO
- Architectures des processeurs superscalaires,
VLIW et optimisations
2Linterface logiciel / matériel
langage
logiciel
compilateur
jeu dinstructions (ISA)
micro-architecture
matériel
transistor
3Jeu dinstructions (ISA)
- Cest linterface matériel / logiciel
- Exemples
- Intel x86 (1979)
- MIPS , SPARC (milieu années 80)
- Alpha (début années 90)
- Les ISA évoluent lentement, par ajouts successifs
- il faut avoir de bonnes raisons pour lancer un
nouveau jeu dinstructions - plus de raisons pour les processeurs enfouis
applications spécifiques, densité du code,
consommation électrique, ...
4Microarchitecture
- Vision macrocospique de l implémentation du
matériel - pas besoin de savoir comment fonctionne un
transistor !! - Mais comprendre pourquoi un programme séquentiel
(en sémantique), lisant ses données et
instructions dans une mémoire répondant en 100 ns
peut exécuter 4 instructions toutes les 500 ps
5Contextes des processeurs hautes performances
- Processeurs à usage général
- serveurs, ordinateurs de bureau, ordinateurs de
poche ... - exécute tous types dapplications
- Processeurs enfouis
- téléphone, télévision, voiture ...
- application spécifique
- processeur spécialisé ou dérivé dun processeur à
usage général
6Besoins en performances
- Performance
- améliorer le temps de réponse gt interactivité
- applications scientifiques
- bases de données
- traitement du signal
- multimédia
-
- Pseudo-loi vérifiée dans l histoire de
linformatique
Tout gain en performance génère de nouvelles
applications qui génèrent de nouvelles demandes
en performance
7Comment améliorer la performance ?
écrire un meilleur algorithme
langage
optimisations du compilateur
compilateur
jeu dinstructions (ISA)
améliorer lISA
micro-architecture
meilleure micro-architecture
transistor
nouvelle technologie
8Où doit porter leffort ?
compilateur
ISA
micro-architecture
processeur usage général
processeur enfoui
Processeur usage général ISA préexistant
(exemple Intel x86) compatibilité binaire la
nouvelle génération de processeur doit pouvoir
exécuter les codes exécutables sur les anciennes
générations Processeur enfoui attention au coût
du processeur compromis performance /
consommation électrique
9Quest ce que la performance ?
- Choisissez votre point de vue !
- Débit dexécution faire plus de travail utile
pendant un temps donné - serveurs
- environnement multiprogrammé
- Temps dexécution faire un travail donné dans
un temps plus court - point de vue de lutilisateur
- Faire un travail en un temps déterminé temps
réel, une fois lobjectif rien ne sert daller
plus vite - consommer moins, circuit plus petit, ..
10Quelques métriques
Fréquence CPU f fréquence de lhorloge interne
du processeur dépend de la technologie et de la
micro-architecture
Cycle CPU T 1 / f
Nombre moyen dinstructions exécutées par cycle
11MIPS / megaflops
MIPS
nombre moyen de millions dinstructions exécutées
par seconde
pour larchitecte, à application, jeux de
données, ISA et compilateur fixés,
fréquence fixée Instruction par Cycle (IPC)
nombre moyen de millions dopérations virgule
flottante par seconde
megaflops
Utilisé pour le calcul numérique intensif
12Comparer des machines différentes !?
Les MIPS nont aucune signification ici car les
ISA sont différents
Solution 1 temps CPU
Solution 2 utiliser une machine de référence
Exemple VAX MIPS
13Accélération locale / globale
Un programme passe 50 du temps dexécution dans
du calcul en virgule flottante, et supposons
quon multiplie par 10 les performances du calcul
en virgule flottante. Quelle est laccélération
globale ?
14Accélération locale / globale (2)
supposons quon multiplie par 1.5 les
performances du calcul en entier et par 4 les
performances en virgule flottante. Quelle est
laccélération globale ?
15Accélération locale / globale (3)
Un programme passe 98 du temps dexécution dans
du calcul en virgule flottante, et supposons
quon multiplie par 10 les performances du calcul
en virgule flottante. Quelle est laccélération
globale ?
16Loi dAmdahl
17Que dit la loi dAmdhal
Il faut optimiser dabord le cas le plus fréquent
Mais aussi optimiser tous les composants
18Programmes de test
- Programmes standards (benchmarks)
- exemple 1 SPEC CPU2000
- SPEC int compression de données, compilateur,
interpréteur, synthèse dimage, analyseur
grammatical, jeu déchec, conception de circuits
... - SPEC fp physique, maths, chimie, météo ...
- Exemple 2 TPC (Transaction Processing
Performance) - base de données multi-utilisateurs
- sollicite les entrées-sorties
- Programmes spécifiques
Il faut choisir les programmes de test
appropriés à lutilisation envisagée ...
19Évaluer / analyser les performances
- L utilisateur lambda mesures de temps
dexécution - Comprendre le temps dexécution instrumentation
- quelle partie du code contribue le plus au temps
dexécution ? - code instrumenté code original code
supplémentaire permettant de récupérer de
linformation à lexécution (exemple adresses
mémoire) - exemples doutils Prof, Pixie, Salto, EEL, Atom,
- Compréhension fine utiliser les compteurs
matériels du processeur - compte certains évènements
- Définition de nouvelles architectures
- simuler lexécution au lieu dexécuter réellement
- lISA simulé peut ne pas être celui de la machine
sur laquelle on simule - Exemples de simulateurs Simplescalar, Shade,
SimOS, Impact ...
20 Noubliez pas
Pour comprendre larchitecture, il faut une
vision minimale du contexte technologique mais
aussi économique
Contexte technologique Cible mouvante
Contexte économique Intel est le plus fort
21 Loi de Moore
- Le nombre de transistors sur un micro-processeur
double tous les 18 mois - 1972 2000 transistors (Intel 4004)
- 1979 30000 transistors (Intel 8086)
- 1989 1 M transistors (Intel 80486)
- 1999 130 M transistors (HP PA-8500)
- Les performances des processeurs doublent tous
les 18 mois - 1989 Intel 80486 16 Mhz (lt 1inst/cycle)
- 1993 Intel Pentium 66 Mhz x 2 inst/cycle
- 1995 Intel PentiumPro 150 Mhz x 3 inst/cycle
- 06/2000 Intel Pentium III 1Ghz x 3 inst/cycle
- 09/2001 Intel Pentium 4 2 Ghz x 3 inst/cycle
22Utilisation des transistors évolution
8 gt 16 gt 32 bits calcul flottant
32 gt 64 bits multimédia
RISC
années 70
années 80
années 90
Étoffer lISA pour diminuer le nombre
dinstructions exécutées
de mémoire on-chip (cache,registres) pour
diminuer les accès externes
Exécution superscalaire
23Quelques repères (sept. 2001)
- Fréquence 700 Mhz à 2 Ghz
- Durée d'une opération ALU 1 cycle
- Durée d'une opération flottante 3 cycles
- Lecture/écriture dans un registre 1-3 cycles
- souvent un chemin critique ...
- Lecture/écriture du cache L1 1-2 cycles
- dilemme taille-associativité-temps d accès
24Quelques repères (2001)
- L'intégration 0.25m, 0.18m, 0.125m (fin 2001)
- 10 à 20 millions de transistors de logique
- Le reste en mémoire cache jusqu'à 100 millions
de transistors - 20 à 60 Watts
- gt 100 W bientôt
- 400 à 600 broches
- gt 1000 bientôt
25Quelques repères (sept. 2001)
- Processeurs x86 pour PC
- bas de gamme Celeron 733 Mhz, 64
- haut de gamme Pentium 4 2 Ghz, 550
- La mémoire DRAM 0.15 le Mbyte
- La mémoire SRAM 50 le Mbyte
26 Compatibilité binaire
- Une donnée économique 500 000 000 de PCs !
- un nouveau jeu d'instructions RISQUÉ !!
- Le monde change (peut-être)
- les processeurs enfouis, le multimédia
- l'IA 64 arrive
- x86 mutation vers 64 bits (AMD ) ?
27 Architecture 32 ou 64 bits
- Architecture 32 bits l'adresse virtuelle est de
32 bits - PowerPC, x86,
- Architecture 64 bits l'adresse virtuelle est
de 64 bits. - MIPS III, Alpha, Sparc V9, HP-PA 2.x, IA64
- En 2005 les jeux ? Word ?
- LE MOUVEMENT EST INEXORABLE
- x86 la rupture ou x86-64 ?
28Langoisse de larchitectedu processeur haute
performance
- 400 mm2 de silicium
- 3 générations de technologie en avant
- que faire pour obtenir les performances ?
- Pipeline
- Parallélisme dinstruction
- Lexécution spéculative
- La hiérarchie mémoire
- demain, le parallélisme de processus
29Le pipeline
30Principe de base
- Faire se chevaucher l'exécution de plusieurs
instructions. - On décompose l'exécution d'une instruction en
plusieurs phases successives
31 Pipeline (2)
- On ajuste les phases pour qu'elles aient la même
durée - 1 cycle de la machine
- L'exécution d'une instruction est allongée
- Difficile de découper en phases de même durée
- Le découpage entraîne un surcoût
- traversée de buffers
- Mais une instruction peut être lancée tous les
cycles.
32Exemples de pipeline
33Exemples de pipeline (2)
- DEC 21064
- 2 étages dexécution
- Cypress Sparc
- étages EX et MEM confondus
34Le débit d'un pipeline
- Hypothèse on peut séquencer une instruction par
cycle - débit maximum d'1 instruction par cycle
- Exemple 5 étages
- Sur une machine non pipeline 3 ns, 4 ns, 3 ns ,
2 ns, 4 ns - Durée totale 16 ns
- Sur une machine pipeline cycle 5 ns 4 ns 1
ns (pour les buffers) - Speed-up potentiel 3.2
- Limite en multipliant les étages du pipeline
overhead des buffers
35Attention aux exécutions longues
- Sur les entiers
- multiplication 5-10 cycles
- division 20-50 cycles
- Sur les flottants
- Addition 2-5 cycles
- Multiplication 2-6 cycles
- Division 10-50 cycles
36Vie d une instruction sur le MIPS R4000
- 1. IF (Instruction Fetch).
- Lecture du cache instructions et lecture du TLB
- 2. IS (Instruction Fetch, Second Half)
- Fin de lecture du TLB et du cache instructions
- 3. RF (Register File)
- Décodage de línstruction , lecture des opérandes,
vérification des étiquettes - 4.EX (Exécution).
- Exécution des opérations registre-registre ou
- calcul de ladresse virtuelle pour les
Load/Store ou - calcul de l'adresse virtuelle de la cible pour
les branchements
37Vie d une instruction sur le MIPS R4000 (2)
- 5 DF (Data Fetch, First Half)
- accès au cache de données, et parallèlement, et
traduction de l'adresse virtuelle en adresse
physique - 6. DS (Data Fetch, Second Half)
- fin de l'accès au cache et de la traduction
d'adresses. - 7. TC (Tag Check)
- comparaison de l'étiquette du cache avec
l'adresse physique du TLB pour déterminer si il y
a eu un défaut de cache ou non. - 8. WB (Write Back)
- Ecriture du résultat de l'instruction dans un
registre (s'il y a lieu).
38Les aléas dans les processeurs pipelines
- Parfois (souvent), l'instruction suivante ne peut
pas être exécutée tout de suite - Ces situations sont appelées aléas
- Aléas de structure conflits de ressources
- Aléas de données dépendances de données
- Aléas de contrôle les branchements
39Que faire sur les aléas?
- Gestion par matériel
- détecter les aléas et les éviter en retardant
l'avancée de l'instruction amont en attendant la
résolution de l'aléa. - Gestion par logiciel
- retarder les instructions pour éviter les
dépendances, ..
40- Petite digression
- De l'avantage d'un jeu d'instruction régulier
pour le pipeline
41RISC versus CISC
- Entre 1960 et 1980, la complexité des opérations
qui pouvaient être implémentées en matériel a
augmenté - les jeux d'instructions ont suivi le même chemin.
42Complex Instruction Set Computing (CISC).
- But une instruction machine une instruction
langage de haut niveau - VAX, Intel 80x86, Motorola 680x0, IBM 360
- sur le VAX, une opération arithmétique (2
opérandes, un résultat) - opérandes et résultat soit en registre, soit en
mémoire - 8 cas
- Le calcul de l'adresse pour chacun des accès à la
mémoire peut être - absolu adresse codée dans l'instruction
- basé registre immédiat
- indexé registre registre
- indirect lue en mémoire
43CISC (2)
- Codage compact des applications
- peu demandeur en lecture sur les instructions
- Tailles d'instructions variables (1 à 15 octets
sur le xxx86) - Temps d'exécution variables et occupation
chaotique des ressources - une même instruction peut occuper 6 fois la
mémoire sur le VAX.
44De la difficulté du pipeline sur les CISC
- Taille variable des instructions
- pour connaître l'adresse de l'instruction
suivante, il faut d'abord décoder l'instruction
courante. - Le séquencement des instructions entraîne de
nombreux conflits de ressource - plusieurs utilisations de la même unité
fonctionnelles - Pipeline difficile, mais pas impossible
- Le coût de la logique de contrôle est
relativement important
45RISC Reduced Instruction Set Computer
- Concept mis en forme par Patterson et Ditzel
(1980), préexistait bien avant. - Principes
- Une seule taille d'instruction 32 bits en
général , simplifie le décodage - Architecture load/store pas d'opérations avec
opérandes ou résultat en mémoire - Modes d'adressage simples basé et indexé
- Instructions simples registre-registre
opérandes dans les registres et résultat dans les
registres - Registres indifférenciés
46RISC (2)
- Code relativement volumineux
- C AB
- load A,R2
- load B,R3
- add R3, R2, R1
- pour une même application
- 1.5 à 2 fois le volume que pour un CISC.
- Avantage se pipeline bien !
- Lecture de l'instruction et décodage en temps
constant. - Occupation d'une unité fonctionnelle à un instant
précis
47La saga RISC
- 1980 Patterson et Ditzel formalisent le concept
- 1982 IBM 801, RISC I et RISC II
- 1987-88 MIPS R2000, Sparc
- 1990 IBM Power, Intel i860
- 1992- DEC Alpha, TI Supersparc, MIPS R4000,
R8000 et R10000, HP8000, Ultrasparc , .. - Intel xxx86 fait de la résistance !
48Jeux d'instructions des processeurs
RISCPrincipes communs
- Une seule taille d'instruction 32 bits en
général - simplifie le décodage et le calcul de
l'anticipation de l'adresse suivante - Architecture load/store
- Modes d'adressage simples basé et indexé
- Instructions simples registre-registre
- Presque consensus
- 32 registres
- Bloc de registres distincts pour les flottants
49RISC et Instructions multimédiaune entorse à la
simplicité
- Principe général
- Les instructions multimédia
Nimplémenter une instruction que si le
compilateur est capable de la générer.
On packe plusieurs mots de 16 bits dans un
registre de 64 bits. On exécute 4 fois la même
instruction en //.
Aucun compilateur ne les gère correctement
50Retour au pipeline
51Les aléas de données
- Lexécution pipeline d'une séquence
d'instructions doit produire le même résultat
qu'une exécution séquentielle. - 3 types d'aléas peuvent se produire i précède j
- RAW (Read After Write)
- j utilise un résultat de i comme opérande
- le résultat doit être écrit par avant que j ne
le lise. - WAR (Write After Read)
- j écrit un résultat dans une source de i
- i doit avoir lu sa source avant que j ne
l'écrive - WAW (Write After Write)
- i et j écrivent leurs résultats à la même place
- j doit écrire son résultat après i
52Read After Write sur les processeurs RISC
- Le problème
- Une solution mais perte de 2 cycles !
53De l'utilité des mécanismes de bypass
- Le résultat en sortie de l'ALU est en fait
disponible plus tôt - On peut l'intercepter avant l'écriture dans le
fichier de registres
54Aléas Read After Write sur les processeurs RISC
- Le délai de chargement mémoire
55Et comment s'en affranchir
56Les aléas WAR et WAW sur les processeurs RISC
- Il n'y en a jamais !
- Les opérandes sont lus dans les registres dès le
décodage. - Les aléas Write After Write sur les processeurs
RISC - Il ne peut y en avoir que si les écritures ne
sont pas faites à un cycle précis du pipeline - en principe, il n'y en a pas.
- Sauf que (multiplication, division, flottants)
57Les aléas de données sur les processeurs CISC
- Tous les types d'aléas sont possibles
- Read After Write
- Write after Read
- le nombre des opérandes d'une instruction est
très élevé. - Write after Write
- la durée d'exécution des instructions est tout à
fait variable - Pipeliner l'exécution de plusieurs instructions
sur un processeur CISC requiert beaucoup de
précautions.
58RISC versus CISC
- RISC
- mécanismes de contrôle plus simple
- possibilité de réordonnancement de code
- RISC coût et temps de conception plus réduit.
- RISC taille du composant plus réduit (à
performance et technologies équivalentes) - CISC volume de code plus réduit
59Les aléas de contrôle
- L'instruction est un branchement conditionnel ou
non - quelle instruction exécuter ?
- Le nombre de cycles perdu sur les branchements
peut être très important.
60Les dépendances de contrôle
- 15 à 30 des instructions sont des
branchements. - La cible et la direction d'un branchement sont
connues très tard dans le pipeline. Au plus tôt
- Cycle 7 sur le DEC 21264
- Cycle 11 sur l'Intel Pentium III
- Cycle 18 sur l Intel Pentium 4
- multiplié par X inst./ cycles !
- Pas question de perdre tous ces cycles !
61Le problème des sauts
En moyenne, un saut se produit toutes les 7
instructions Pipeline de plus en plus long gt 10
étages (Intel P6, Ultrasparc 3, AMD Athlon ),
et même 20 étages (Intel Pentium 4)
N étage auquel les sauts sont exécutés
inst / cycle
IPC
62Le problème des sauts (2)
En moyenne, un saut se produit toutes les 7
instructions Pipeline de plus en plus long gt 10
étages (Intel P6, Ultrasparc 3, AMD Athlon ),
et même 20 étages (Intel Pentium 4)
N étage auquel les sauts sont exécutés
inst / cycle
IPC
63La prédiction de branchements
64Types de branchements
- Branchement inconditionnel
- le saut est systématique
- saut relatif
- adresse de saut statique, connue à la compilation
- exemple PC du branchement offset immédiat
- saut indirect
- adresse de saut dynamique, lue dans un registre
- retours de fonction, appels de fonctions, switch
case, pointeurs de fonctions - Branchement conditionnel
- dépend de lévaluation dune condition le
branchement peut être pris (on saute) ou non pris
(on passe à linstruction suivante) - comparaison entre 2 registres ou comparaison dun
registre avec 0 - en général, adresse de saut statique
- boucles, ifthenelse, switch case, ...
65Quelques statistiques ...
- En moyenne 1 instruction sur 5 est un branchement
(conditionnel ou inconditionnel) - les blocs de base sont petits (certains font 1 ou
2 instructions) - il est souhaitable de pouvoir prédire un
branchement par cycle - 75 des branchements sont conditionnels
- il est important de bien prédire les branchements
conditionnels - 40 des branchements conditionnels sont non pris
- prédire toujours non pris 60 de
mauvaises prédictions - 10 des branchements sont des retours de
fonction - 0 à 10 des branchements sont des appels de
fonction indirects - plus nombreux dans les codes orientés objet
- Restant branchements inconditionnels relatifs
66Les branchements dans le pipeline
Branchement identifié
prédiction
Adresse de saut relatif
chargement
décodage
Branchement conditionnel exécuté Saut indirect
exécuté
exécution
accès cache
écriture registre
67Prédiction de branchement dynamique
- Garder un historique des derniers passages et
utiliser cet historique pour anticiper le
branchement - Mise en uvre une table lue en même temps que le
cache dinstructions - On prédit
- la cible et la direction des branchements
- les retours de procédures
- les branchements indirects
68Les étapes de la prédiction
- Prédire quà ladresse indiquée par le compteur
de programme se trouve une instruction de
branchement - Identifier le branchement
- branchement conditionnel ou inconditionnel ?
- appel de fonction ?
- retour de fonction ?
- Prédire ladresse de saut
- Pour les branchements conditionnels, prédire si
le branchement est pris (1) ou non pris (0) - En cas de mauvaise prédiction, profiter du temps
de réparation du pipeline pour corriger la table
de prédiction
69Table de prédictions
Est-ce un branchement ? Si oui info table
(type, 0/1,adresse saut) PC lt F (PC, info
table) Si non PC lt PC 4
PC suivant
prédiction
PC courant
chargement
décodage
Mise à jour si mauvaise prédiction
exécution
accès cache
écriture registre
70Identifier le branchement
BTB (Branch Target Buffer)
étiquettes
cibles
PC
?
Cible
71Utilisation du BTB
- On stocke dans le BTB les sauts inconditionnels
et les branchements pris - La présence dune entrée dans le BTB entraîne un
saut à ladresse indiquée par le BTB - En labsence dune entrée BTB, on suppose que
linstruction nest pas un branchement ou est un
branchement non pris - En cas de mauvaise prédiction, corriger le BTB
- si on a manqué un saut, rajouter lentrée
manquante - si on a prédit un branchement pris alors quen
réalité il est non pris, enlever lentrée du BTB - si on a sauté à une mauvaise adresse, corriger
ladresse de saut dans le BTB
72Direction d un branchement conditionnel
- Il est plus important de prédire la direction que
la cible d un branchement conditionel - saut relatif cible recalculée au décodage
- direction connue à l exécution
73Prédiction comme la dernière fois
direction effective
prédiction
1
for (i0ilt1000i) for (j0jlt4j)
corps de la boucle
1
1
1
1
mal prédit
0
1
mal prédit
1
0
1
1
1
1
mal prédit
0
1
mal prédit
1
0
Branchement mal prédit à la première et à la
dernière itération
74Le compteur 2 bits
prédit 0
prédit 1
1
1
1
1
0
1
2
3
0
0
0
0
- 4 états 2 bits
- la prédiction est obtenue en lisant le bit de
poids fort du compteur - il faut 2 mauvaises prédictions consécutives pour
changer la prédiction en partant dun état
fort (0 ou 3) - Se trompe seulement à la dernière itération
d une boucle
75Efficacité du compteur 2 bits
for (i0ilt1000i) for (j0jlt4j)
corps de la boucle
Branchement mal prédit à la dernière itération
seulement
- Le compteur 2 bits divise par 2 le nombre de
mauvaises prédictions sur les branchements
conditionnels - 10 de mauvaises prédictions sur les
conditionnels
76Compteur 2 bits mise en uvre
- Première possibilité rajouter un compteur 2
bits dans chaque entrée du BTB - si un branchement est prédit pris mais quen
réalité il est non pris, on décrémente le
compteur et on laisse lentrée dans le BTB - Deuxième possibilité stocker les compteurs 2
bits dans une table spécifique, la BHT (branch
history table) - MIPS R10000, IBM Power3, PowerPC, AMD Athlon, HP
PA-8500 - pas de tags, juste 2 bits dans chaque entrée
- la BHT peut comporter plus dentrées que le BTB
- taille 256 à 2k entrées
- quand le compteur passe de létat 2 à létat 1,
lentrée dans le BTB nest plus nécessaire - Autre avantage plus important de prédire
direction que la cible
77BHT
PC du branchement conditionnel
poids forts
poids faibles
n bits
BHT 2n compteurs 2 bits
Interférences entre branchements 2 branchements
en conflit pour une même entrée.
Le bit de poids fort du compteur donne la
prédiction
78Prédire les retours de fonction
- Utiliser une pile dadresses de retour
- pour chaque call exécuté, on empile ladresse de
retour - pour prédire un retour, au lieu dutiliser
ladresse fournie par le BTB, dépiler ladresse
au sommet de la pile et sauter à cette adresse - Peut être utilisé aussi pour prédire les retours
dinterruptions et dexceptions - Si pile suffisamment profonde, 100 de bonnes
prédictions - UltraSparc-3 (8 entrées), AMD Athlon (12 entr.),
Alpha 21264 (32 entr.) - ne pas abuser de la récursivité
- Principale difficulté identifier les appels
et les retours - utiliser le code-op (ex. appel saut avec lien)
- le compilateur peut aider le processeur
- exemple hint (Alpha), jr 31 (MIPS) ...
79Mauvaises prédictions 10 cest trop
- Les processeurs actuels sont superscalaires
- chaque étage du pipeline peut traiter plusieurs
instructions simultanément - Le pipeline dinstructions est long
- Exemple
- 4 instructions par cycles
- IPCidéal 4
- 12 cycles de pénalité si branchement mal prédit
- 1 conditionnel pour 8 instructions, soit 80
instructions par mauvaise prédiction - IPCmaxi 80 / (80/4 12) 2.5
- On sait faire mieux la prédiction à 2 niveaux
dhistorique
80Inter-corrélations
cond1
cond2
cond1 ET cond2
B1 SI cond1 ET cond2 B2 SI cond1
F V F V
F F F V
F F V V
Supposons les 4 cas équiprobables. La
probabilité de bien prédire B2 en se basant sur
son comportement passé vaut 50
Supposons maintenant quon connaisse le résultat
de B1 au moment de prédire B2 Si cond1 ET cond2
vrai (probabilité 1/4), prédire cond1 vrai
100 de succès Si cond1 ET cond2 faux
(probabilité 3/4), prédire cond1 faux
66 de succès On peut prédire B2 avec un taux de
succès de 1/4 3/4 2/3 75
Remarque si on permute B1 et B2, cest moins
bien ...
81Auto-corrélation
1 1 1 0
for (i0 ilt100 i) for (j0jlt4j)
corps de la boucle
1 1 1 0
Si les 3 dernières directions sont des 1, prédire
0, sinon prédire 1
1 1 1 0
100 de succès
82Prédicteur à 2 niveaux dhistorique
- Premier niveau dhistorique
- historique global pour détecter les
inter-corrélations - un seul registre à décalage de L bits contient
les directions prises par les L derniers
branchements rencontrés - historique local pour détecter les
auto-corrélations - un registre à décalage de L bits pour chaque
branchement - contient les L dernières directions prises par ce
branchement - prédit bien les boucles faisant au plus L
itérations - Deuxième niveau dhistorique
- chaque branchement utilise plusieurs compteurs 2
bits, stockés dans une PHT (pattern history
table) - utiliser la valeur dhistorique local ou global
pour sélectionner le compteur dans la PHT
83Prédicteur à historique global
n bits
PC du branchement conditionnel
Appliquer une fonction de hachage entre ladresse
et lhistorique (par ex. OU exclusif bit à bit)
xor
histo L bits
Prédiction insérée dans lhistorique pour prédire
le branchement suivant
PHT 2n compteurs 2 bits
prédiction 0/1
84Prédicteur à historique local
m bits
PC du branchement conditionnel
2m historiques locaux de L bits
histo L bits
PHT 2n compteurs 2 bits
NB temps daccès plus long (2 accès chaînés)
Prédiction 0/1
85Hors contraintes matérielles ...
- Les prédicteurs à deux niveaux permettent de
diviser par 2-3 le nombre de mauvaises
prédictions - typique 5 de mauvaises prédictions
- voire moins sur les codes flottants
- Historique global
- efficace sur les codes entiers
- Historique local
- plus efficace sur les codes flottants
- beaucoup de boucles, comportement régulier
86En pratique ...
- Beaucoup dinterférences de conflits dans la PHT
- paradoxe de lanniversaire
- soit une classe de 23 élèves, la probabilité
davoir 2 élèves qui fêtent leur anniversaire le
même jour est de 50 - lespace de la PHT est très mal utilisé
- Quelle longueur dhistorique ?
- sur les grosses applications, trop
dinterférences de capacité, on préfère un
historique court (voire une BHT) - sur les petites applications, on préfère un
historique long - Historique local ou historique global ?
- ça dépend de lapplication
87Prédicteurs hybrides principe
Quelles étaient les prédictions correctes ?
Méta-prédicteur
Prédicteur 1
PC du branchement
Prédicteur 2
Prédiction
Prédicteur N
88Le prédicteur de lAlpha 21264
PC du branchement
historique global 12 bits
1k historiques locaux de 10 bits
PHT 1k compteurs 3 bits
Méta 4k compteurs 2 bits
PHT 4k compteurs 2 bits
total 29 Kbits
prédiction
89Exécution conditionnelle
if (xlty) a
prédication
code initial, avec un branchement
move conditionnel
saute à SUITE si (r1 gt r2) r4 mem(a) r4 r4
1 mem(a) r4 SUITE
r3 r1 - r2 r4 mem(a) r5 r41 r4 r5 si
(r3lt0) mem(a)r4
r3 r1 - r2 p1 (r3lt0) r4 mem(a) si p1 r4
r41 si p1 mem(a)r4 si p1
prédication sans supports ?
Attention au surcoût en instructions
a a (((x - y)gtgt31)1)
90Prédiction de branchement
- 1992 Alpha 21064, schéma à 1 bit
- 1993 Pentium, schéma à 2 bits
- 1995 PentiumPro, historique local
- 1998 Alpha 21264, prédicteur hybride
- 2000 Pentium 4 secret !
- Alpha 21464 (arrété en juin 2001)
- global, mixe 4 longueurs d historique
- 352 Kbits au total
91Prédiction de branchement tendance générale
- Schémas de plus en plus complexes
- Découplage de la prédiction de l'adresse et de la
direction - Pile de retour pour les procédures
- Support dans les jeux d'instructions pour
lexécution spéculative - CMOV
- prédicats de l IA64
92Le parallélisme dinstructions
93Toujours plus de puissance les processeurs
superscalaires, VLIW et EPIC
- Processeurs RISC jusqu'en 1991
- objectif 1 instruction par cycle
- mais comment aller plus vite
- Diviser le temps de cycle et multiplier les
étages superpipeline - Lancer plusieurs instructions par cycle
- qui contrôle
- Le matériel superscalaire
- Le compilateur VLIW (Very Long Instruction Word)
- Les 2 EPIC (Explicitly Parallel Instruction
Computing)
94Les processeurs superscalaires
- le droit de lancer les instruction par cycle est
géré à l'exécution par matériel - aléas de ressource e.g. partage d'une même
unité fonctionnelle - aléas de données ne pas lancer 2 opérations
dépendantes - aléas de contrôle attention aux branchements
- permet la compatibilité binaire d'une génération
de processeurs à l'autre - du processeur RISC (1 instruction par cycle) au
processeur superscalaire (x instructions par
cycle) - TOUS LES PROCESSEURS (GENERAUX) ANNONCES DEPUIS
1993 SONT SUPERSCALAIRES
On va en parler (beaucoup)
95VLIW Very Long Instruction Word
- Parallélisme contrôlé par logiciel
- Le compilateur est en charge de contrôler les
unités fonctionnelles - gère les aléas de contrôle, de données et de
ressources - Problème labsence de compatibilité binaire
- Non utilisé pour les processeurs généraux, mais
populaire pour les calculateurs enfouis
96Architecture VLIW (Very Long Instruction Word)
- Une unité de contrôle émet une instruction longue
par cycle. - Chaque instruction longue initialise
simultanément plusieurs opérations indépendantes - le compilateur garantit que les instructions
d une même instruction longue sont
indépendantes. - Ie compilateur garantit que les instructions
lancées sont indépendantes de toutes les
instructions encore en vol - Il ny a pas de matériel pour imposer le respect
des dépendances
97Architecture VLIW
Unité de contrôle
Banc de registres
interface mémoire
UF
UF
UF
UF
98VLIW format des instructions
À lorigine
Aujourdhui
- Le format des instructions comporte un grand
nombre de bits pour contrôler directement
l'action des multiples unités fonctionnelles. - Pb trop de NOPs
- Multiflow 27 UFs 1024 bits de large
- Un groupe dinstructions RISC
- Plus d unités fonctionnelles que d instructions
codées dans un mot VLIW
Les instructions sont, en général, compressées en
mémoire, mais expansées dans le cache instruction
99Un exemple de de jeu dinstructionsTrimedia
- Les instructions
- 5 opérations par instruction
- la plupart des opérations sont de la forme
- IF rc opcode op1 op2 -gt op3
- avec rc la garde, op1, op2 et op3les opérandes.
- Si rc contient vrai alors op3 est modifié.
- Les gardes s applique à l ensemble des
opérations sauf iimm et uimm (load de constante) - 128 registres généraux de 32bits (r00, r11)
100Gardes
- Intérêt éliminer des branchements
if (x3) yy1y2
cmp r11,3 bne suite add r2 r3 r4 suite
iseq r11 3 r10 IF r10 add r2 r3 r4
101 Slots des instructions
- Les opérations ne peuvent être affectées
indifféremment dans nimporte quels emplacements
(slots) de linstructions - Un slot contrôle un sous ensemble des unités
fonctionnelles capable d exécuter un sous
ensemble des opérations de l architecture
....
102Ordonnancement statique
- latence dune multiplication 3 cycles
VLIW
RISC-CISC
mul r6 r7
r3
mul r6 r7
r3
add r1 r2
r9
add r1 r2
r9
nop
3 cycles
add r3 r4
r5
add r3 r4
r5
103Ordonnancement statique
add r1,r2,r3 ld r3,r4 add r5,1,r6 add
r4,4,r4 jmp suite ...
Ordonnancement
104Et aussi les branchements retardés
- On n exécute les branchements qu au cycle EX du
pipeline - pas de contrôle pas de prédiction de
branchement - pas de contrôle pas d annulation
d instruction en cours - Les slots entre le branchement et la connaissance
de son résultat doivent être remplis avec des
instructions indépendantes du branchement
branch delay slots
Aussi utilisés dans les premiers ISA RISC
(Sparc, MIPS)
105Branchements retardés
- Sur le TM1000 le branch delay slot des
branchements est de 3 cycles - 5 x 3 4 19 instructions à trouver !
add r1,r2,r3 b suite nop ... suite
b suite add r1,r2,r3 suite
106VLIW architecture pour les applications
embarquées
- Pas de possibilités de compatibilité binaire
d une génération à l autre - Efficace sur les codes réguliers (boucle), peu
efficace sur les applications general-purpose
(trop de branchements) - Cost-effective
- pas de contrôle
- moins de surface de silicium
- moins de consommation
- temps de conception et mise au point réduit
107Superscalaire les problèmes
- Parallélisme d'instructions limité
- 3 à 8 instructions par cycle
- Le fichier de registres
- le nombre de ports augmentent chemin critique
- La fourniture des instructions
- La gestion des dépendances de données
- Les branchements.
108//isme d instruction et general-purpose
- Les processeurs superscalaires
109superscalaire naturel ? 1995
- les unités fonctionnelles existantes dans les
microprocesseurs ne sont pas dupliquées - ALU
- Unité flottante
- Accès à la mémoire
- Unité de séquencement
- ? DEC 21064, IBM Power, Power601
- Certaines unités fonctionnelles dupliquées
- TI SuperSparc 2 ALUs
- MIPS R8000, IBM Power2 2 opérateurs flottants,
2 accès au cache
110Le degré superscalaire
- Difficile à définir
- performance quon est certain de ne pas
dépasser - 4 inst / cycles sur presque tous les processeurs
existants - 6 inst / cycles sur Itanium
- 8 inst / cycles sur le (ex-futur) Alpha 21464
- projet abandonné en juin 2001
- 16 -32 en 2012 ? )
111Exécution dans lordre ou dans le désordre
- Respecter lordre du programme ou non
- Ah! Si toutes les latences étaient connues
statiquement, - Les partisans de l ordre
- UltraSparc 3, Itanium
- Le compilateur doit faire le travail
- Les partisans du désordre
- Alpha 21264, Pentium III et 4, Athlon, Power
(PC), HP-PA 8500
112Pourquoi lexécution dans lordre
- simple à mettre en uvre
- moins de transistors
- moins de temps de développement
- horloge rapide (discutable)
- pipeline moins profond
- le compilateur voit tout
- la micro-architecture
- le programme
Même philosophie que VLIW
113Le compilateur voit tout
- Au sein dun bloc de base !
- (bloc de base suite d instructions non séparée
par un branchement ou une étiquette) - le compilateur est capable de réordonnancer les
instructions pour les lancer en // - On peut appliquer des techniques logicielles pour
dépasser la frontière dun bloc de base - déroulage de boucle, pipeline logiciel,
hyperbloc, ..
114Pourquoi lexécution dans le désordre
- l ILP statique est limité dans les codes non
réguliers - le compilateur ne voit pas tout
- latences inconnues à la compilation
- (in)dépendances inconnues à la compilation
- sur la mémoire
- pas besoin de recompiler
- hum !!
115Le compilateur ne voit pas tout
- Latences inconnues à la compilation
- accès à la mémoire 1 ou 10 ou 100 cycles
- (In)dépendances mémoires
- Le compilateur ne peut prendre que des décisions
conservatrices - Perdu après quelques branchements
- explosion combinatoire
- explosion de la taille de code
116Exécution dans le désordre (1)
- Principe
- exécuter les instructions dès que opérandes
disponibles et unités fonctionnelles disponibles - Mise en uvre
- une grande fenêtre d'instructions où on choisit
les instructions exécutables (80 sur Alpha 21264,
plus de 100 sur Pentium 4)
117Exécution dans le désordre (2)
- Le séquencement consiste à
- Lire les instructions en //
- Marquer les dépendances
- Renommer les registres
- Dispatcher vers les unités fonctionnelles
- Attendre ..
- La gestion des dépendances prend de la place et
du temps pipeline profond
118Renommage de registres ou comment enlever les
fausses dépendances (1)
- Aléas WAW et WAR sur les registres peuvent être
évitées par renommage dynamique des registres.
119Renommage de registres ou comment enlever les
fausses dépendances (2)
- Plus de registres physiques que de registres
logiques dans l ISA - Maintenir une liste de registres physiques
disponibles - Affecter un nouveau registre physique à chaque
nouvelle écriture de registres - Libérer les registres après leur dernière
utilisation
120Renommage de registres ou comment enlever les
fausses dépendances (3)
1Op L6, L7 -gt res1 2Op L2, res1 -gt res2 3Op
res2, L3 -gt res3 4Op res3,res2 -gt res4
1Op R6, R7 -gt R5 2Op R2, R5 -gt R6 3Op R6, R3
-gt R4 4Op R4, R6 -gt R2
4 new free registers
Old map table
121Dépendances mémoires
- pour exécuter une écriture sur la mémoire, on a
besoin de la donnée à écrire - en dehors de toute information, toute lecture
mémoire est potentiellement dépendante de toute
écriture mémoire précédente - solution (provisoire)
- Calcul des adresses dans l'ordre du programme
- Dépassement des écritures par les lectures avec
détection des aléas
122 Dépendances mémoires (2)
- Solution provisoire
- Exécution optimiste dans le désordre
- Réparation si la dépendance existe
- Pb coût de la réparation
- Solution émergente la prédiction de dépendances
sur la mémoire - Moshovos et Sohi, Micro'30, décembre 1997
- Chrysos et Emer, ISCA 26, juin 1998
123Et les interruptions ?
124Les interruptions
- L exécution d un processus peut être
interrompue par un événement externe (préemption
du système, signal extérieur, ..) ou interne
(traitement d une exception). - Mais le résultat du programme ne doit pas (en
général ) dépendre du traitement de
linterruption - Le traitement d une interruption nécessite de
pouvoir à tout instant être capable de définir et
sauver un état cohérent de la machine - Program Counter
- Registres
- Mémoire
- Sur les processeurs exécutant dans l ordre,
relativement simple mais sur les processeurs
exécutant dans le désordre !!
125Exécution dans le désordreSavoir défaire
- Mauvaise prédiction de branchement
- Mauvaise anticipation d'indépendance
- Interruption, exception
- Valider dans lordre du programme
- Ne rien faire de définitif dans le désordre
126Savoir défaire
- Une copie du fichier de registres est mise à
jour dans l'ordre du programme - ou
- Une ltltcartegtgt registres logiques-registres
physiques est sauvegardée - Les écritures en mémoire sont faites à la
validation
127- Organisation des unités fonctionnelles
128Unités fonctionnelles centraliséesune fenêtre
dinstruction unique
X instructions choisies à lexécution dans toute
la fenêtre Pb majeur implémenter le choix X
parmi N
129Design en clusters N fenêtres d instrustions
Les instructions sont réparties entre les
clusters dans les étages amont Sélection des
instructions simplifiée - équilibrage de charge
130Semi-unifié fenêtres d instructions par type
d instructions
Ld/St
ALU1
BR
ALU2
131Petit retour sur le pipeline
132Le pipeline de plus en plus profond
- Plus on stresse l'horloge, moins on en fait en un
cycle. - 1 cycle traversée dune ALU rebouclage
- Communications intra-CPU de en longues
- plusieurs cycles pour traverser le composant
- Le contrôle est de en complexe
- plus dinstructions en //
- plus de spéculation
133Quelques profondeurs de pipeline
- 12-14 cycles sur lIntel Pentium III
- 10-12 cycles sur lAMD Athlon
- 7-9 cycles sur lAlpha 21264
- 9 cycles sur lUltraSparc
- 10 cycles sur lItanium (juin 2001)
- 20 cycles sur le Pentium 4 (fin 2000)
- Et ça ne va pas saméliorer !!
134Retour au jeu dinstruction
135L IA64 un jeu dinstruction general-purpose
pour le //isme dinstructions
- parallélisme explicite entre les instructions (à
la VLIW) - Support pour lexécution spéculative
- Compatibilité assurée par le matériel
136Le jeu dinstruction EPIC IA64(Explicitly
Parallel Instruction Computing)
- EPIC IA64
- RISC
- plus de registres (128 entiers, 128 flottants)
- 3 instructions codées en 128 bits
- 64 registres de prédicats
- dépendances gérées par le matériel
- (?) Advanced Loads
- officiellement le compilateur gère le
parallélisme dinstructions, - mais la compatibilité est assurée par le matériel
137 IA 64
- Langoisse de la page blanche !?
- -Support matériel au pipeline logiciel
- Rotating registers numéro logique de registre
calculé ? - Gestion de boucle compteurs spécialisés ?
- -Fenêtres de registres à taille variable!
- -Pas dadressage basé
- -adressage post-incrémenté
- - (?) Advanced Loads
138Intel PentiumPro (2, 3) ou comment sabstraire du
jeu dinstruction
139De la difficulté du superscalaire sur les jeux
d'instruction non réguliers
- Les difficultés liées au jeu d'instructions
- Taille d'instructions variables (1 à 15 bytes)
- Plusieurs occupations successives d'une même
ressource - Nombre d'itérations inconnu sur certaines
instructions - Temps d'exécution imprévisible pour certaines
instructions
140Intel PentiumPro la solution adoptée
- Une constation
- les jeux d'instruction RISC sont plus simples à
pipeliner et exécuter en parallèle - La solution
- exécuter du "code " RISC !
- Comment ?
- Le décodage des instructions est remplacée par
une traduction en pseudo-code RISC
141 Intel PentiumPro
- MEM REG ? MEM
- 4 microoperations (RISC-like)
- La plupart des instructions sont traduites en 1
à 4 microopérations en un cycle - Certaines instructions ne peuvent pas être
traduites en un nombre fixé de microopérations
(boucles, instruction flottantes transcendantales
, ..) - traduites en plusieurs cycles
- 3 traducteurs en parallèles (1 complexe 2
simples)
142Intel PentiumPro
- Les microopérations venant de différentes
instructions sont executées dans le désordre
comme sur les processeurs superscalaires
out-of-order RISC -
- renommage de registres
- stations de réservations ..
- Buffer de réordonnancement
- Jusqu'à 5 microopérations par cycle.
143Pentium 4 et Trace cache juste un coup plus loin
- Pourquoi retraduire les instructions x86 à
chaque nouvelle utilisation ? - Perte de temps
- Consommation électrique
- Idée simple mais logique
- Mémoriser les mopérations dans un cache le Trace
Cache
144Jeu dinstruction est-ce important ?
- 32 ou 64 bits
- vers labandon (ou la mutation !) dx86
- AMD x86-64 !
- Les performances
- et x86 ? )
- en flottant !!
- à technologie égale ?
145Jeu dinstruction est-ce important (2) ?
- x86 traduction en mOpérations
- 4 cycles perdus !
- Ou utilisation dun trace cache
- (on mémorise les mOpérations )
- x86 pas assez de registres flottants
- Alpha 21264 2 opérandes 1 résultat
- le performant des RISCs
- Mort commerciale
- Itanium lIA 64 dans lordre
- 800 Mhz en 0.18 m
- Alpha 21164 700 Mhz 0.35m (1997)
146Jeu dinstruction est-ce important (3) ?
langage
logiciel
compilateur
jeu dinstructions (ISA)
Traduction en mopérations
micro-architecture
matériel
transistor
147Jeu dinstruction est-ce important (4) ?
- IA 64
- Bien pour le calcul régulier
- Prochaines implémentations dans le désordre
- Un grand mystère ?
- Les processeurs enfouis
- minimiser la couche de traduction
- taille, consommation, coût de développement
148Des erreurs qui ont coûté cher (1)
- Labsence daccès mémoire octet ou 16 bits sur
le jeu Alpha (1992) - Résultait d une mauvaise analyse de
lutilisation des octets
Ecriture d un octet 4 instructions 1. Lecture du
mot de 32 bits englobant 2. Décalage de
loctet 3. Merge de 2 mots de 32 bits 4. Ecriture
du mot de 32 bits
149Des erreurs qui ont coûté cher (2)
- Lintroduction du CMOV sur l Alpha 21164
(1994) - jolie idée pour un processeur exécutant dans
lordre - Seule instruction à 3 opérandes sur l Alpha
21264 (1998)
In-Order If R10 then R3R2 Out-of-Order If
P10 then newP3 P2 else newP3OldP3
150Pourrait coûter cher IA64 et lexécution dans
le désordre
- IA64 a été conçu pour l exécution dans l ordre
et essentiellement pour le code régulier - exécution conditionnelle de toutes les
instructions - support spécial pour lexécution des boucles
- fenêtre de registres tournantes
- le numéro logique du registre est calculé
- instructions avec jusquà 5 opérandes et 4
résultats
151La hiérarchie mémoire
152La mémoire
- Plus une mémoire est grande, plus son temps
daccès est long - 3 types de mémoire
- banc de registres
- peu dentrées, temps daccès court (cycle),
plusieurs ports - mémoire dynamique (DRAM)
- mémorisation dune charge sur une capacité, 1
transistor par bit - grande densité dintégration (16-64 Mbits)
- temps daccès long 50-100 ns
- utilisé comme mémoire principale
- mémoire statique (SRAM)
- mémorisation par bouclage de 2 portes 1-4 Mbits
- cher
- temps daccès court 5-10 ns
153Latence mémoire
- La latence mémoire nest pas seulement constituée
par le temps daccès DRAM - traduction dadresse
- traverser les broches du processeur et le bus
externe - multiplexage si plusieurs bancs mémoires
- Latence mémoire principale 100-200 ns
- à 1 GHz, ça fait 100 à 200 cycles CPU
- problème !!
154Les caches
- La mémoire est
- bon marché et lente ou
- chère et rapide.
- Les caches donner l'illusion d'une mémoire
globale rapide. - Principe utiliser les propriétés de localité
temporelles et spatiales des applications
155Principes de fonctionnement d'un cache
- Le cache est une petite mémoire rapide dont le
contenu est une image d'un sous-ensemble de la
mémoire. - Lors d'un