Vous êtes sur la page 1sur 124

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 Contexte économique


=
Cible mouvante « 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.
48

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
49

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
50

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 !!
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
76

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 ?
77

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)


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) = Espace mémoire


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


2 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 ?

Vous aimerez peut-être aussi