Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Hautes
Performances
André Seznec
IRISA/INRIA
http://www.irisa.fr/caps
1
2
N’oubliez pas
« Loi » de Moore
Compatibilité binaire
l'IA 64 arrive
Architecture 32 ou 64 bits
L’angoisse de l’architecte
Parallélisme d’instruction
L’exécution spéculative
La hiérarchie mémoire
10
11
Principe de base
Pipeline (2)
On ajuste les phases pour qu'elles aient la même durée :
1 cycle de la machine
• traversée de buffers
Exemples de pipeline
MIPS R3000 :
MIPS R4000 :
14
DEC 21064 :
2 étages d’exécution
Cypress Sparc
étages EX et MEM confondus
15
• 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
16
1. IF (Instruction Fetch).
Lecture du cache instructions et lecture du TLB
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
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).
19
21
22
CISC (2)
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é
RISC (2)
• 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.
La saga RISC
Presque consensus:
32 registres
30
31
a= b+c ; d= e+f
36
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
RISC :
mécanismes de contrôle plus simple
40
41
• qui contrôle:
– Le matériel: superscalaire
– Le compilateur: VLIW (Very Long Instruction Word)
42
Le fichier de registres:
Les branchements.
45
Unité flottante
Accès à la mémoire
Unité de séquencement
Le degré superscalaire
Difficile à définir:
« performance qu’on 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 (futur) Alpha 21464
16 -32 sur Alpha 21964 ?? En 2012 ? :=)
47
chemin critique
le programme
50
(in)dépendances inconnues à la
compilation
pas besoin de recompiler
hum !!
51
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
52
Le séquencement consiste à :
Lire les instructions en //
Attendre ..
Renommage de registres:
ou comment enlever les fausses dépendances
Aléas WAW et WAR sur les registres peuvent être évitées par
renommage dynamique des registres.
54
Dépendances mémoires
Solution (actuelle):
Exécution optimiste dans le désordre
Prédiction de branchement
dynamique
Branchements conditionnels
Prédiction de branchement
Prédiction de branchement:
tendance générale
prédicats de l ’IA64
61
Savoir « défaire »
63
64
plus de spéculation
65
Quelques profondeurs de
pipeline
Et ça ne va pas s’améliorer !!
Retour au jeu d’instruction
66
67
EPIC IA64 =
RISC
+ 64 registres de prédicats
IA 64
70
71
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
73
Intel PentiumPro
Intel PentiumPro
renommage de registres
stations de réservations ..
Buffer de réordonnancement
Jusqu'à 5 microopérations par cycle.
75
Consommation électrique
32 ou 64 bits:
vers l’abandon (ou la mutation !) d’x86
AMD x86-64 !
Les performances:
et x86 ? :=)
en flottant !!
à technologie égale ?
77
78
79
La mémoire
Plus une mémoire est grande, plus son temps d’accès est long
3 types de mémoire
banc de registres
Latence mémoire
problème !!
81
Les caches
La mémoire est:
bon marché et lente ou
chère et rapide.
Le cache est une petite mémoire rapide dont le contenu est une
image d'un sous-ensemble de la mémoire.
Load &A
Si l’adresse de la ligne
contenant A se trouve dans
la table des étiquettes, la
donnée est dans le cache A
84
De l'importance de la hiérarchie
mémoire
Exemple :
4 instructions/cycle,
Transferts mémoire-cache
Chaque bloc ne peut être chargé qu'à une seule place dans le
cache: cache
DIRECT MAPPED ou à correspondance directe.
Cache direct-mapped
88
Cache set-associatifs
89
Cache fully-associatifs
90
Remplacer un bloc
Random:
plus simple à mettre en oeuvre
LRU:
meilleur en général
effets bizarres
91
Ecrire
WRITE THROUGH:
trafic important vers la mémoire
92
Blocs longs:
bénéficie de la localité spatiale
Blocs courts:
nombreux défauts sur des blocs contigus
Expérimentalement :
16 - 64 bytes pour les caches 8-32 Kbytes
93
Problème d’inclusion
Cache non-bloquant:
en présence d’un défaut on envoie la requête vers le niveau
suivant et on continue !
Préchargement:
on anticipe les prochaines requêtes (par matériel ou par
logiciel)
98
Quelques paramêtres
Caches primaires:
tendance générale
Restera petit !
Une exception: HP-PA 8500
100
La mémoire principale
105
106
Un lourd passif
le parallélisme dynamique ?
Culture:
• programmation assembleur
• Instructions baroques: multiply-add, mais surtout
adressage
107
Disponibilité de logiciels
109
111
112
Le parallélisme de processus:
multiprocesseur à mémoire partagée
processeur SMT
113
IRAM
Un monoprocesseur +
exécution spéculative
superscalaire 16 ou 32 voies
hyperspéculation:
branchements, dépendances, données ..
Les défis:
la qualité de la prédiction
Le //isme de processus:
à la croisée des chemins
Un multiprocesseur on-chip ?
• IBM Power 4 ( fin 2001)
Simultaneous Multithreading ?
Un multiprocesseur on-chip
multiprocesseur on-chip:
IBM Power 4 (2001)
La vision du programmeur
119
Simultaneous Multithreading
(SMT)
La vision du programmeur
122
La vision du programmeur !
124