Microprocesseurs hautes performances

publicité
Microprocesseurs
Hautes
Performances
André Seznec
IRISA/INRIA
http://www.irisa.fr/caps
1
2
N’oubliez pas
Pour comprendre l’architecture,
il faut une vision minimale
du contexte technologique
mais aussi économique
Contexte technologique
=
Cible mouvante
Contexte économique
« Intel est le plus fort »
3
« 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 (< 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
4
Quelques 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
5
Quelques 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 à 75 Watts
 > 100 W bientôt
 400 à 600 broches

> 1000 bientôt
6
Quelques 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
7
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 ) ?
8
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, Ultrasparc, HP-PA 2.x, IA64
 En 2005: les jeux ? Word ?
 LE MOUVEMENT EST INEXORABLE:
 x86
la rupture?
9
L’angoisse de l’architecte
 400 mm2 de silicium
 3 générations de technologie en avant
 que faire pour obtenir les performances ?
 Pipeline
 Parallélisme d’instruction
 L’exécution spéculative
 La hiérarchie mémoire
 demain,
le parallélisme de processus
Le pipeline
10
11
Principe de base
 Faire se chevaucher l'exécution de plusieurs instructions.
 On décompose l'exécution d'une instruction en plusieurs
phases successives
12
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.
13
Exemples de pipeline
 MIPS R3000 :
 MIPS R4000 :
14
Exemples de pipeline (2)
 DEC 21064 :
 2 étages d’exécution
 Cypress Sparc
 étages EX et MEM confondus
15
Le 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
16
Attention aux pipelines longs
 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
17
Activités dans le pipeline du 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 l’adresse virtuelle pour les Load/Store ou
 calcul de l'adresse virtuelle de la cible pour les
branchements
18
Activités dans le pipeline du R4000
 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).
19
Les 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
20
Que 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, ..
Petite digression:
De l'avantage d'un jeu d'instruction
régulier pour le pipeline
21
22
RISC 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.
23
Complex 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
24
CISC (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.
25
De 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
26
RISC : 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
27
RISC (2)
 Code relativement volumineux :
 C= A+B :
• 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
28
La 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 !
29
Jeux d'instructions des processeurs RISC
Principes 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
Retour au pipeline
30
31
Les aléas de données
 L’exé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
32
Read After Write sur les processeurs
RISC
 Le problème:
 Une solution: mais perte de 2 cycles !
33
De 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
34
Aléas Read After Write sur les
processeurs RISC

Le délai de chargement mémoire
35
Et comment s'en affranchir
 a= b+c ; d= e+f
36
Les 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)
37
Les 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.
38
RISC 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
39
Les 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.
Le parallélisme d’instructions
40
41
Toujours plus de puissance : les
processeurs superscalaires et VLIW
 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)
42
Les 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 ANNONCES DEPUIS 1993
SONT SUPERSCALAIRES
43
VLIW: 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: l’absence de compatibilité binaire
  Pas utilisé pour les processeurs généraux
44
Superscalaire : 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.
45
superscalaire « 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
46
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
Superscalaire : 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 aux UFs
 La dépendances de données
 Les branchements.
Exécution dans l’ordre ou dans
le désordre
 Respecter l’ordre 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, Athlon, Power (PC),
HP-PA 8500
48
Pourquoi l’exécution dans
l’ordre
 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
49
Pourquoi l’exé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
 pas besoin de recompiler
 hum !!
50
51
Exé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
52
Exé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
53
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
 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
55
Dépendances mémoires (2)
 Solution (actuelle):
 Exécution optimiste dans le désordre
 Réparation si la dépendance existe
 Pb: coût de la réparation
 Prochaine génération: 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
56
Les 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 :
 Cycle 7 sur le DEC 21264
 Cycle 11 sur l'Intel Pentium II
 Cycle 18 sur l ’Intel Pentium4
 Pas question de perdre tous ces cycles !
57
Pré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 d’instructions
 On prédit:
 la cible et la direction des branchements
 les retours de procédures
 les branchements indirects
58
Branchements conditionnels
 Plus important de prédire la direction que la
cible
 Schémas de prédiction de plus en plus
complexes
• adresse
• historique des derniers branchements
–global ou local
• schémas hybrides
59
Prédiction de branchement




1992: DEC 21064, schéma à 1 bit
1993: Pentium, schéma à 2 bits
1995: PentiumPro, historique local
1998: DEC 21264, prédicteur hybride
60
Pré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
l’exécution spéculative:
 CMOV
 prédicats de l ’IA64
61
Exécution dans le désordre:
Savoir « défaire »
 Mauvaise prédiction de branchement
 Mauvaise anticipation d'indépendance
 Interruption, exception
 Valider dans l’ordre du programme
 Ne rien faire de définitif dans le désordre
62
Savoir « défaire »

Une copie du fichier de registres est mise
à jour dans l'ordre du programme
 ou
 Une <<carte>> registres logiques-registres
physiques est sauvegardée
 Les écritures en mémoire sont faites à la
validation
Petit retour sur le pipeline
63
64
Le pipeline: de plus en plus
profond
 Plus on stresse l'horloge, moins on en fait en un
cycle.
 1 cycle = traversée d’une ALU + rebouclage
 Communications intra-CPU de + en + longues:
 plusieurs cycles pour traverser le composant
 Le contrôle est de + en + complexe:
 plus d’instructions en //
 plus de spéculation
65
Quelques profondeurs de
pipeline




12-14 cycles sur l’Intel Pentium III
10-12 cycles sur l’AMD Athlon
7-9 cycles sur l’Alpha 21264
9 cycles sur l’UltraSparc
 10 cycles sur l’Itanium (fin 2000)
 20 cycles sur le Pentium 4 (fin 2000)
 Et ça ne va pas s’améliorer !!
Retour au jeu d’instruction
66
67
Un jeu d’instruction pour le parallélisme
d ’instructions
 parallélisme explicite entre les instructions (à la
VLIW)
 support pour l’exécution spéculative
 Compatibilité assurée par le matériel
68
Le jeu d’instruction EPIC IA64
 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
 le compilateur gère le parallélisme d’instructions,
 mais la compatibilité est assurée par le matériel
69
IA 64
 L’angoisse de la page blanche !?





-Support matériel au pipeline logiciel
• Rotating registers
• Gestion de boucle
-Fenêtres de registres: à taille variable!
-Pas d’adressage basé
-adressage post-incrémenté
- (?) Advanced Loads
Intel PentiumPro ou comment
s’abstraire du jeu d’instruction
70
71
De 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
72
Intel 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
73
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)
74
Intel 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.
75
Pentium 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
Jeu d’instruction: est-ce
important ?
 32 ou 64 bits:
 vers l’abandon (ou la mutation !) d’x86
 AMD x86-64 !
 Les performances:
 et x86 ? :=)
 en flottant !!
 à technologie égale ?
76
Jeu d’instruction: est-ce
important (2) ?
 x86: traduction en mOpérations
 4 cycles perdus !
 Ou utilisation d’un trace cache
 x86 pas assez de registres flottants
 Alpha 21264: 2 opérandes 1 résultat
 le + performant des RISCs
 Itanium: l ’IA 64 dans l’ordre
 800 Mhz en 0.18 m
 Alpha
21164 700 Mhz 0.35m (1997)
77
La hiérarchie mémoire
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
• peu d’entrées, temps d’accès court (cycle), plusieurs ports
 mémoire dynamique (DRAM)
• mémorisation d’une charge sur une capacité, 1 transistor par bit
• grande densité d’intégration (16-64 Mbits)
• temps d’accè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 d’accès court: 5-10 ns
80
Latence mémoire
 La latence mémoire n’est pas seulement constituée par le
temps d’accès DRAM
 traduction d’adresse
 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 !!
81
Les 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
82
Principes 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'une référence à la mémoire, la requête est:


1.) présentée au cache
2.) si la donnée absente alors la requête est présentée à la
mémoire principale (ou à un second niveau de cache).
83
Cache: principe de mise en œuvre
étiquette (tag) =
identificateur de ligne
lignes de cache
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
Espace mémoire
84
De l'importance de la hiérarchie
mémoire

Exemple :
 4 instructions/cycle,
 1 accès mémoire par cycle
 10 cycles de penalité sur le cache secondaire
 100 cycles pour la mémoire
 2% de défauts d'instructions L1, 4% de défauts données
L1, 1 référence sur 4 en défaut sur L2

Pour exécuter 400 instructions : 520 cycles !!
85
Transferts mémoire-cache
 Le temps d ’accès à un bloc de K mots:
 T = a + (K-1) b
 Le temps d'accès au premier mot est plus long:
 envoi de l'adresse + retour
 Structure des mémoires RAM dynamiques
 On n'attend pas la fin du transfert complet des mots avant
d'utiliser un mot du bloc chargé:
 le mot en défaut est en général chargé en premier
86
Placement des données dans les
caches
 Chaque bloc ne peut être chargé qu'à une seule place dans le
cache: cache
 DIRECT MAPPED ou à correspondance directe.
 Chaque bloc peut être chargé à n'importe quelle place dans le
cache:
 FULLY ASSOCIATIVE ou totalement associatif.
 Chaque bloc ne peut être chargé qu'à un nombre limité de
places (ensemble ou SET):
 SET ASSOCIATIVE ou associatif par ensembles.
87
Cache direct-mapped
88
Cache set-associatifs
89
Cache fully-associatifs
90
Remplacer un bloc
 Lorque l'ensemble est plein, quel bloc rejeter en mémoire ?
 RANDOM: les candidats sont choisis de manière aléatoire
 LRU: Least Recently Used
 Random:
 plus simple à mettre en oeuvre
 LRU:
 meilleur en général
 effets bizarres
91
Ecrire
 Toute écriture doit être répercutée dans la mémoire:
 Tout de suite: WRITE THROUGH
 ou plus tard: WRITE BACK ( quand le bloc est évincé du
cache)
 WRITE BACK:
 moins de trafic sur la mémoire
 problème de cohérence entre la mémoire et le cache
 WRITE THROUGH:
 trafic important vers la mémoire
92
Quelle taille de bloc ?
 Blocs longs:
 bénéficie de la localité spatiale
 réduit le nombre de blocs et perd de la place
 Blocs courts:
 nombreux défauts sur des blocs contigus
 Expérimentalement :
 16 - 64 bytes pour les caches 8-32 Kbytes
93
Plusieurs niveaux de caches
 Une hiérarchie de caches:
 des capacités de plus en plus grandes
 des temps d'accès de plus en plus longs.
 L2 devenu la règle générale:
 sur le composant ou sur le même module que le processeur
 temps d ’accès: 7-15 cycles
94
Plusieurs niveaux de cache (2):
memoire - processeur - L2
95
Plusieurs niveaux de cache (3):
memoire - L2 - processeur
96
Problème d’inclusion

doit-on assurer que toute donnée présente dans le cache de
premier niveau est aussi présente dans le cache de second
niveau?
97
Un défaut de cache n’arrête pas
(complètement) le processeur
 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





Intel Pentium : 2 * 8K bytes, 2-way, 60 (1993)-233 Mhz (1997)
MIPS R4400 : 16K Inst + 16K data, DM, 100 (1992) 250 Mhz (1996)
Alpha 21164 : 2* 8K (DM) + L2 96 Kbytes (3-way) 266 (1995) Mhz
700 Mhz (1998)
Intel Pentium III: 2* 16K, 4-way, 1 Ghz (2000)+ L2 256-512K-1M
Alpha 21264 : 2 * 64 Kbytes (2-way), 500 Mhz (1997) 1 Ghz (2001)


Amd Athlon: 2*64K, 2-way, 1,4 Ghz (2001) + 256K L2
Intel Pentium 4: 8K + trace cache + 256K L2, 2 Ghz (2001)

Intel Itanium: 2 * 16K + 96 K L2 (+ 1-4M L3), 800 Mhz (2001)
99
Caches primaires:
tendance générale




1-2 cycles pour lecture ou écriture
multiples accès par cycle
non-bloquant
associatif faible degré
 Restera petit !
 Une exception: HP-PA 8500
100
Caches secondaires : tendance
générale
 Il n’est plus question de s’en passer !
 Généralisation on-chip ou sur le module
 Accès pipeliné
 latence courte : 7-12 cycles
 bus 128 bits, devrait s’élargir
 temps de cycle: 1-3 cycles processeurs
 La contention sur le cache L2 devient un goulot
d’étranglement
101
La mémoire principale
 Loin, trop loin du processeur:
 plusieurs centaines d’instructions
 Vers un abandon du modèle classique ?
 mémoire sur le bus système:
• cohérence par snooping
 bus mémoire + bus système
• cohérence par directory
102
la mémoire principale sur le
bus système
103
Mémoire principale en connexion
directe
104
Les tendances (et les problèmes)
 plus d'instructions par cycle:
 au delà d'un bloc de base par cycle ?
 Exécution dans le désordre:
 de plus en plus de spéculation, adresses! valeurs !
 Pipeline de séquencement très long:
 pénalité de mauvaise prédiction de branchement ?
 Caches premier niveau multiport, non-bloquants, accédés en 12 cycles:
 compromis temps d ’accès, taille, associativité
 Cache second niveau pipeliné non-bloquant
Microprocesseurs généraux,
processeurs enfouis, DSP:
vers une convergence ?
105
106
Un lourd passif
 Les applications temps-réels n'aiment pas les
microprocesseurs:
 temps d'exécution borné:les caches ?
 le parallélisme dynamique ?
 Les calculs concentrés dans quelques sections de code
 performance et/ou place et/ou prix critiques
 Culture:
• programmation assembleur
• Instructions baroques: multiply-add, mais surtout
adressage
107
Un monde qui change (1)
 Impossibilité d'atteindre les performances sans cache:
 Gestion de tous les mouvements de données à la main:
• à peu près impossible !
• et les mouvements d'instructions !
 caches dans les nouveaux DSPs: TriMedia, TMS320C62xx, ..
 De plus en plus de contrôle dans les applications
 Parallélisme d'instruction nécessaire pour la performance
(mais VLIW possible !)
108
Un monde qui change (2)
 Le recyclage des designs de processeurs:
 les coeurs des microcontrolleurs d'aujourd'hui sont dérivés
des microprocesseurs d'hier:
• Des microcontrolleurs sont dérivés de toutes les
grandes familles de processeurs.

Disponibilité de logiciels
109
Un monde qui change (3)




Une culture qui évolue dans le monde des DSPs:
• parallélisme d'instructions, pipeline profond:
– écriture de plus en plus difficile en assembleur.
Compilateurs de plus en plus matures: pipeline logiciel
time-to-market des systèmes enfouis: SURTOUT le logiciel
programmation en langages de haut niveau (euh, C)
110
Un monde qui change (4)
 Les jeux d'instruction multimédias:
 Calcul vectoriel sur des données 8 ou 16 bits
 présents sur tous les processeurs généraux
Et demain ?
111
112
Que faire avec un milliard de
transistors ou plus?
 IRAM: le processeur et sa mémoire
 monoprocesseur + exécution spéculative
 Le parallélisme de processus:
 multiprocesseur à mémoire partagée
 processeur SMT
113
IRAM
 le processeur et sa mémoire sur un même
composant
 bande passante mémoire énorme à un coût
limité
 Une fausse bonne idée
 Consommation mémoire des applications
augmente
 Extensibilité ?
 La solution pour certaines applications enfouies
114
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
 les temps de communication sur le composant
 la contention sur les structures:
• caches , registres, ...
115
Le //isme de processus:
à la croisée des chemins
 Le parallélisme « gros grain » arrive sur le
composant
 Un
multiprocesseur on-chip ?
• IBM Power 4 ( fin 2001)
 Simultaneous Multithreading ?
• Compaq Alpha 21464 ( 2003)
116
Un multiprocesseur on-chip
 Peut-être la solution, mais ..
 Où sont les applications?
 La bande passante sur la mémoire?
 Et la performance sur un processus ?
 Manquons-nous d'imagination à ce point?
117
multiprocesseur on-chip:
IBM Power 4 (2001)
 Marché visé: les serveurs
 2 processeurs superscalaire 4 voies sur un
composant:
 cache secondaire partagé
 4 composants sur un même MCM (multichip module)
 bande passante énorme sur le MCM
118
La vision du programmeur
119
Simultaneous Multithreading
(SMT)
 Les UFs d’un processeur sont sous-utilisées
 SMT:
 Partager les UFs d’un processeur superscalaire
entre plusieurs processus
 Avantages:
 1 processus a toutes les ressources
 partage dynamique des structures (caches,
prédicteurs, UFs)
120
SMT: Alpha 21464 (2003)
 Un processeur superscalaire 8 voies
 Performance ultime sur un processus
 Si multiprocessus, 4 processus se partagent
les unités fonctionnelles:
 Surcoût pour ce partage 5-10 %
121
La vision du programmeur
122
Le processeur de l ’an 2010 ?
 Jeu d'instruction x86+ ?
 extension pour mode 64 bits
 (Multi ?) Superscalaire 10 voies SMT
 Exécution dans le désordre très aggressive
123
La vision du programmeur !
124
Les grandes questions
 Saura-t-on maitriser la complexité
du design?
 Qui saura programmer ces
monstres ?
Téléchargement