ARPO - PowerPoint PPT Presentation

About This Presentation
Title:

ARPO

Description:

Title: Cours ARPO Author: Irisa Last modified by: michaud Created Date: 9/23/1999 8:25:51 AM Document presentation format: Affichage l' cran Company – PowerPoint PPT presentation

Number of Views:47
Avg rating:3.0/5.0
Slides: 177
Provided by: Iri144
Category:

less

Transcript and Presenter's Notes

Title: ARPO


1
ARPO
  • Architectures des processeurs superscalaires,
    VLIW et optimisations

2
Linterface logiciel / matériel
langage
logiciel
compilateur
jeu dinstructions (ISA)
micro-architecture
matériel
transistor
3
Différents contextes
  • 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

4
Besoins en performances
  • Performance
  • améliorer le temps de réponse gt interactivité
  • applications scientifiques
  • bases de données
  • traitement du signal
  • multimédia
  • ...

5
Comment 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
6
Où doit porter leffort ?
compilateur
ISA
micro-architecture
processeur usage général



processeur enfoui


  • Processeur usage général
  • en général, on hérite dun ISA 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

7
Plan du cours
  • Performances
  • Architecture des processeurs
  • jeu dinstructions (ISA Instruction Set
    Architecture)
  • micro-architecture
  • Compilateur
  • optimisations de code

8
Améliorer la performance ?
  • Ca dépend du 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
  • Rem diminuer le temps dexécution augmente le
    débit

9
Accélération
Exemple Un programme compilé avec le
compilateur A sexécute en 10 ms Avec le
compilateur B, sexécute en 5 ms
10
accélération B/A
2
5
Le compilateur B est  2 fois plus performant 
que le compilateur A
10
Accélération locale / globale
Exemple supposons quun programme passe 50 du
temps dexécution dans du calcul en virgule
flottante, et supposons quon multiplie par 2 les
performances du calcul en virgule flottante.
Quelle est laccélération globale ?
11
Loi dAmdahl
12
Exemple
Exemple supposons que 50 du temps dexécution
provienne du CPU, les 50 restant des
entrées/sorties. On multiplie par 5 les
performances du CPU. Quelle est laccélération
globale ?
Il faut optimiser dabord le cas le plus fréquent
13
temps CPU / temps réel
temps CPU temps utilisateur système
temps dexécution
temps  réel  (E/S, temps partagé )
Exemple processeur fixé, on travaille sur le
compilateur
On peut utiliser le temps CPU utilisateur pour
mesurer la performance
14
Fréquence / cycle / IPC
Fréquence CPU f fréquence de lhorloge interne
du processeur dépend (entre autres) de léchelle
de gravure des transistors
Cycle CPU T 1 / f
Exemple f 500 MHz T 2 ns
Nombre moyen dinstructions exécutées par cycle
15
MIPS / megaflops
MIPS
nombre moyen de millions dinstructions exécutées
par seconde
Exemple ISA et compilateur fixés , on travaille
sur la micro-architecture utiliser les
MIPS pour mesurer la performance
Si on travaille a fréquence CPU fixée, on peut
utiliser lIPC
nombre moyen de millions dopérations virgule
flottante par seconde
megaflops
Utilisé pour le calcul numérique intensif
16
Comparer 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
17
Programmes 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
au cas étudié ...
18
Évaluer / analyser les performances
  • Mesures de temps  dexécution
  • Instrumentation
  • exemple 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,
  • Utilisation des compteurs matériels du processeur
  • compte certains évènements (exemple nombre
    dinstructions exécutées)
  • quand un compteur atteint sa valeur maximum,
    génère une interruption
  • Simulation
  • on simule 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 ...

19
Jeu 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, ...

20
Types dISA
  • CISC (Complex Instruction Set Computer)
  • ex. Intel x86, VAX, IBM 360, ...
  • taille dinstruction variable
  • plusieurs modes  dadressage (absolu, basé,
    indexé, indirect)
  • instructions registres-mémoire
  • instructions itératives
  • RISC (Reduced Instruction Set Computer)
  • ex. Alpha, Sparc, MIPS, PowerPC ...
  • taille dinstruction constante (en général 32
    bits)
  • architecture load / store
  • modes dadressage simples (basé, indexé)
  • instructions simples registre-registre
  • VLIW (Very Long Instruction Word)
  • 1 instruction VLIW plusieurs opérations
    indépendantes

21
CISC exemple
add r4, 10 (r5, r6)
r4 r4 memr5r610
3 additions
add r7, r5, r6 load r7, 10 (r7) add r4, r4, r7
r7 r5 r6 r7 memr710 r4 r4 r7
Équivalent RISC
22
RISC contre CISC
  • CISC
  • code plus dense, prend moins de place en mémoire
  • RISC
  • décodage plus rapide
  • processeur plus simple
  • le compilateur peut optimiser le code

CISC
décode
Remarque lIntel P6 traduit à la volée les
instructions x86 en micro-opérations RISC
RISC
cœur RISC
23
Jeu dinstructions RISC typique
  • instructions sur 32 bits
  • 32 registres entiers
  • 32 registres flottants
  • load / store (basé)
  • rt rs op imm
  • branchement
  • saut registre

6
5
5
16
op
rs
rt
immédiat
Format I
6
5
5
5
11
  • rd rs fonc rt
  • load / store (indexé)

op
rs
rd
fonc
Format R
rt
  • saut

Format J
24
RISC remarques
  • Architecture 32 ou 64 bits ?
  • cest la taille des adresses virtuelles (
    adresses logiques)
  • Intel x86 architecture 32 bits
  • Alpha, Sparc, MIPS architectures 64 bits
  • en général, correspond à la taille des registres
    entiers
  • Virgule flottante
  • add, mul, div, sqrt, mult-add
  • banc de registres flottants séparé des registres
    entiers
  • registres 64 bits (double précision)
  • Accès mémoires
  • plusieurs grains daccès octet, demi-mot (2
    octets), mot (4 octets), double-mot (8 octets)
  • accès alignés quand on accède un groupe de N
    octets, les log2(N) bits de poids faible de
    ladresse sont nuls

25
Étapes dexécution (RISC)
  • Générer ladresse de linstruction
  • incrémenter le compteur de programme PC PC
    4
  • Lire linstruction en mémoire
  • Décoder linstruction
  • type dinstruction (ALU, flottant, load, store,
    branchement, ?)
  • préciser (add, mul, shift, and, or, adressage
    basé, indexé, ?)
  • registres sources, registre destination
  • Lire les registres sources
  • Exécuter lopération
  • Écrire le résultat dans le registre destination
  • rem pour un saut ou un branchement pris, le
    registre destination implicite est le compteur de
    programme

26
Quelques données technologiques
  • Le temps de traversée dune porte logique nest
    pas nul
  • Positionner une tension sur une connexion, ca
    prend du temps
  • Temps de cycle des processeurs rapides (2000)
    1 ns
  • Durée dune addition entière 64 bits 1 cycle
  • Durée dune addition / multiplication flottante
    3-4 cycles
  • Lecture / écriture registres 1 cycle (dépend du
    nombre de registres et du nombre de ports)
  • Accès mémoire de lt 1 cycle à plusieurs centaines
    de cycles suivant le type et la taille de la
    mémoire

Il faut plusieurs cycles pour exécuter
complètement une instruction
27
La technique du pipeline
  • Découper le traitement dune instruction en
    plusieurs étages
  • mise à jour PC, chargement instruction, décodage
    et lecture registres, exécution, écriture
    registre
  • A un instant donné, chaque étage travaille sur
    une instruction différente
  • en début de cycle, chaque étage envoie  son 
    instruction à létage suivant

cycle N
cycle N1
cycle N2
PC PC4
Inst 5
Inst 6
Inst 7
chargement
Inst 4
Inst 5
Inst 6
décodage / lecture registres
Inst 3
Inst 4
Inst 5
exécution
Inst 2
Inst 3
Inst 4
écriture registre
Inst 1
Inst 2
Inst 3
28
Pipeline remarques
  • Le pipeline ne réduit pas le temps dexécution
    d une instruction
  • en fait, ça lallonge même un peu à cause des
    verrous quon rajoute entre les étages
  • Permet un débit dune instruction par cycle
  • en théorie, pas en pratique (cf. transparents
    suivants)
  • Banc de registres à 3 ports 2 ports de lecture
    et 1 port décriture
  • Rem si lISA autorise ladressage indexé (Sparc,
    PowerPC), il faut un troisième port de lecture
    pour les stores

29
Aléas structurels
  • supposons quau cycle N, une instruction load se
    trouve à létage dexécution et essaie daccéder
    à la mémoire
  • au même instant, une autre instruction se trouve
    à l étage de chargement  dinstructions on doit
    également accéder à la mémoire
  • problème sil ny a quun seul port daccès à la
    mémoire, conflit de ressource
  • 1ère solution donner la priorité au load, et
    différer dun cycle linstruction à létage de
    chargement cest un aléa structurel
  • 2ème solution 2 ports  daccès à la mémoire

30
Dépendances de données
  • Soit 2 instructions I1 et I2 (I2 après I1)
  • 3 types de dépendances de données
  • dépendance RAW (Read After Write)
  • le résultat de I1 est utilisé par I2
  • aussi appelée dépendance vraie
  • dépendance WAR (Write After Read)
  • I2 écrit dans un registre lu par I1
  • aussi appelée anti-dépendance
  • dépendance WAW (Write After Write)
  • I2 écrit dans le même registre que I1
  • aussi appelé dépendance de sortie

I1 r1 r11 I2 load r2, 0(r1)
I1 load r2, 0(r1) I2 r1 r11
I1 load r2, 0(r1) jump I3 if r50 I2 load
r2, 0(r3)
31
Aléas de données
  • Pour respecter les dépendances RAW, WAR et WAW,
    on peut être amené à introduire des  bulles 
    dans le pipeline
  • bulle la partie amont du pipeline est  gelée ,
    seule la partie aval du pipeline progresse
  • Aléas de données
  • RAW
  • WAW pas de problème si les instructions passent
    par létage décriture dans lordre du programme
  • WAR pas de problème si on lit les registres
    dans lordre du programme et toujours au même
    étage du pipeline
  • Les aléas de données, comme les aléas
    structurels, diminuent les performances

32
Aléa RAW
Cycle N
Cycle N1
Cycle N2
Cycle N3
PC PC4
chargement
décodage / lecture registres
I2 r1r11
I2
I2
I1 r1r2r3
bulle
bulle
I2
exécution
écriture registre
I1
bulle
bulle
Dépendance RAW entre I1 et I2 au moment ou I2
essaie de lire r1, I1 na pas encore écrit dedans
I2 doit attendre ...
On attend 2 cycles avant de lancer I2
2 cycles perdus
33
Mécanisme de  bypass 
Banc de registres
Enlève laléa RAW entre I1 et I2
PC PC4
MUX
MUX
chargement
décodage / lecture registres
exécution
écriture registre
34
Plus daléas de données ? presque ...
  • Plus daléas RAW entre instructions
    registre-registre
  • A priori, il ny a pas daléas WAR ou WAW
  • Mais
  • certaines instructions nécessitent plusieurs
    cycles d exécution
  • load / store
  • division et multiplication entière
  • opérations virgule flottante

35
Cas des load / store
  • On supposera pour linstant que laccès à la
    mémoire se fait en 1 cycle
  • Pour exécuter un load / store
  • 1 cycle pour calculer ladresse daccès
    (addition)
  • 1 cycle pour accéder à la mémoire
  • total 2 cycles à l étage dexécution
  • Solution diviser en 2 étages
  • étage dexécution utiliser lALU pour calculer
    ladresse
  • étage daccès mémoire

36
Nombre détages variable ?
Pour les load / store, pipeline à 6 étages Pour
les autres instructions, pipeline à 5 étages
PC PC4
chargement
décodage / lecture registres
exécution
I2 r3r4r5
accès mémoire
I1 load r1,0(r2)
Aléa structurel au cycle suivant, I1 et I2 vont
essayer décrire en même temps dans le banc de
registre, or il ny a quun seul port décriture.
écriture registre
37
Nombre détages fixe
Pipeline à 6 étages pour toutes les
instructions Si linstruction nest pas un load /
store, létage accès mémoire ne fait rien
PC PC4
chargement
décodage / lecture registres
exécution
I2 r3r4r5
accès mémoire
I1 load r1,0(r2)
écriture registre
I1 et I2 écriront dans les registres à des cycles
différents plus daléa structurel
Grâce au bypass, pas de problème
38
Il reste des aléas RAW load-use
Cycle N
Cycle N1
Cycle N2
PC PC4
chargement
décodage / lecture registres
I2 r1r11
I2
exécution
I1 load r1,0(r2)
bulle
I2
accès mémoire
bulle
I1
écriture registre
I1
Un cycle de pénalité load-use Le compilateur
doit essayer dordonner les instructions de
manière à insérer une instruction entre I1 et I2
qui nutilise pas le résultat de I1
39
Exercice
load r2, 0(r1) a add r2, r2, 1 store r2,
0(r1) load r2, 4(r1) b add r2, r2, 1 store
r2, 4(r1)
aa1 bb1
PC PC4
chargement
décodage / lecture registres
exécution
accès mémoire
  • Combien de bulles sont générées sur cette
    séquence ?
  • Transformer le code de manière à éliminer ces
    bulles

écriture registre
40
Exercice
  • Hypothèse
  • 1 instruction sur 5 est un load

PC PC4
chargement
  • 1) Quel est lIPC moyen si la probabilité quune
    instruction dépende de linstruction précédente
    vaut 1/2 ?
  • 2) On suppose quen ordonnant les instructions,
    le compilateur est capable de placer une
    instruction indépendante derrière 75 des load.
    Quel est lIPC moyen ?

décodage / lecture registres
exécution
accès mémoire
écriture registre
41
Exercice
On modifie le pipeline on insère un étage calcul
dadresse spécifique avant létage dexécution.
Les accès mémoire se font à létage dexécution.
(létage calcul dadresse ne fait rien pour les
instructions qui ne sont pas des load / store)
PC PC4
chargement
décodage / lecture registres
  • Combien de bulles sur une dépendance load-use ?
  • Cette structure de pipeline a-telle le même coût
    matériel que la structure précédente ?
  • Que doit faire le compilateur pour tirer partie
    de cette structure de pipeline ?

calcul adresse
exécution / mem
écriture registre
42
Instructions longues
  • Instructions longues sur lAlpha 21264 (1998)
  • multiplication entière 7 cycles, complètement
    pipelinée
  • division flottante 12 cycles SP, 15 cycles DP,
    non pipelinée
  • racine carrée 18 cycles SP, 33 cycles DP, non
    pipelinée
  • Les opérations non pipelinées génèrent des aléas
    structurels
  • Attention aux aléas WAW
  • Problème des interruptions précises
  • si une interruption se produit entre I1 et I2, il
    faut maintenir un état cohérent des registres
  • il ne faut pas que I2 écrivent dans les registres
    avant dêtre sûr que I1 ne génèrera pas
    dexception

43
Dépendances WAW
cycle de lancement
cycle décriture
Exemple de pipeline virgule flottante
I1 fmul f1,f1,f1 I2 fadd f1,f2,f3
N N5 N1 N4
PC
charg.
problème ...
déc/lect.
  • Solutions possibles
  • retarder le lancement de I2 (bulles)
  • masquer lécriture de I1
  • rajouter 2 étages  vides  après ladditionneur
    flottant
  • ...

fadd 3 cycles
fmul 5 cycles
écriture
44
Interruptions précises
  • Nécessaire lorsquon veut redémarrer un programme
    interrompu par une exception
  • par exemple, on peut  émuler  par logiciel
    certaines instructions
  • Faire les écritures registre dans  lordre du
    programme
  • Pipeline de même longueur pour (presque) toutes
    les instructions
  • Problème augmente le nombre de niveaux de bypass
  • Solution utiliser 2 copies du banc de registres
  • banc de travail les écritures peuvent être
    faites dans le désordre
  • banc architectural mis à jour dans lordre du
    programme au commit (dernier étage du pipeline)
  • en cas dinterruption, on recopie le contenu du
    banc architectural dans le banc de travail

45
Cas des sauts aléas de contrôle
PC adresse de saut
Cycle N
Cycle N1
Cycle N2
PC
I35
I36
chargement
I3
I35
I36
décodage / lecture registres
I2
bulle
I35
exécution
I1 jump _at_I35
bulle
bulle
accès mémoire
bulle
I1
écriture registre
I1
Les instructions I2 et I3 sont annulées 2 cycles
de pénalité de saut
46
Impact des aléas de contrôle
  • La pénalité de saut sera dautant plus grande que
    les sauts et branchements seront exécutés tard
    dans le pipeline
  • En moyenne, 1 saut exécuté pour 7 instructions

PC PC4
  • Exercice
  • on suppose pas daléas de donnée ou structurels
  • quel est limpact des aléas de contrôle sur les
    performances ?

chargement
décodage / lecture registres
exécution
accès mémoire
écriture registre
47
Quelles solutions ?
  • Branchement différé (MIPS, Sparc )
  • le saut ne se fait pas tout de suite, mais avec
    un délai
  • exemple le programme exécute I1, puis I2, puis
    I5
  • permet denlever une bulle sur un saut
  • le compilateur doit trouver une instruction utile
    à mettre dans le délai du branchement (à défaut,
    mettre un NOP)
  • années 80, exécution des branchements au 3ème
    étage, aucune pénalité de saut grâce à cette
    technique
  • Prédiction de branchement
  • solution utilisée dans les processeurs dusage
    général des années 90
  • cf. plus loin dans le cours

I1 jump _at_I5 I2 add r1,r1,1 I3 I4 I5
48
Exemple lUltrasparc-3 (2000)
pred.PC
charg. 1
charg. 2
decod. 1
decod. 2
dispatch
Les loads 4/8 octets sont terminés à load 1, les
loads 1/2 octets sont terminés à load 2.
Pipeline  entier 
exec.
load 2
load 1


commit
lit int
écriture registre ou mémoire
lit fp

exec. 1
exec. 2
exec. 3
exec. 4
Pipeline  flottant 
49
Exercice
  • Sur lUltrasparc-3
  • donner le nombre de bulles lorsque
  • une instruction de calcul entier dépend dun load
    4 ou 2 octets
  • 2 instructions de calcul flottant sont
    dépendantes
  • une instruction de calcul flottant dépend dun
    load
  • létage vide en début du pipeline flottant vous
    paraît-il plutôt utile ou plutôt pénalisant ?
  • quel type de mécanisme peut-on imaginer pour
    résoudre le cas dun load dépendant dun store
    récent ?

50
Remarques
  • Optimiser le cas fréquent
  • les opérations très longues (ex. division) sont
    traitées  à coté  du pipeline, en dehors du
    chemin critique dexécution
  • Certains processeurs découplent les pipelines
    entier et flottant
  • exemple MIPS R8000 (1994)
  • les opérations de calcul flottant sont insérées
    dans une file dattente et traitées séparément
  • avantage les dépendances entres instructions de
    calcul flottant nintroduisent pas de bulles
  • inconvénient pas dinterruption précise sur les
    instructions de calcul flottant
  • Les processeurs enfouis ont généralement un
    pipeline court (5-6 étages) alors que le pipeline
    dun processeur à usage général peut faire entre
    10 et 20 étages
  • pipeline long haute fréquence et haute
    consommation électrique

51
La 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 (lt 1 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

52
Latence mémoire
  • La latence mémoire nest pas seulement constituée
    par le temps daccès DRAM
  • translation 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 !!

53
Les caches
  • utiliser de la SRAM pour maintenir des copies des
    instructions et des données utilisées souvent
  • si possible, intégrer cette mémoire cache sur le
    processeur
  • latence moindre
  • les données et instructions stockées dans le
    cache sont étiquetées avec leur adresse afin de
    pouvoir les identifier sans ambiguïté
  • quand on veut charger une instruction ou une
    donnée, on regarde si elle se trouve dans le
    cache ou pas
  • si oui (hit), latence mémoire latence cache 1
    à 10 cycles
  • si non, cest un défaut de cache (miss), on va
    chercher la donnée en mémoire principale, et on
    la recopie dans le cache
  • le cache est transparent à lutilisateur, tout
    est automatique
  • actuellement, cache de données et cache
    dinstructions distincts
  • permet de lire dans le même cycle une donnée et
    une instruction

54
Les caches pourquoi ca marche
  • Localité temporelle
  • des données ou des instructions déjà accédées
    dans le passé sont souvent réutilisées dans un
    futur proche
  • Localité spatiale
  • des données ou des instructions qui sont à des
    adresses proches ont tendance à être accédées
    dans des temps rapprochés
  • sur un défaut de cache, on ne chargera pas une
    seule donnée ou une seule instruction, mais un
    bloc de plusieurs instructions ou données
  • bloc ligne de cache
  • taille dune ligne de cache 16-64 octets

55
Exercice
On suppose que le chargement dinstructions se
fait en 1 cycle (pas de défauts de cache
dinstructions) , quil ny a pas daléas de
contrôle, structurels, WAW ou load-use On suppose
que lorsque la donnée se trouve dans le cache de
données, un load / store passe un seul cycle dans
 létage daccès mémoire Sur un défaut de cache,
le pipeline est gelé en amont de létage daccès
mémoire en attendant que la donnée arrive
PC PC4
chargement
décodage / lecture registres
exécution
accès mémoire
  • Environ 40 des instructions sont des load/store
  • Quel est le débit en IPC du pipeline si un défaut
    de cache prend 50 cycles à se résoudre et si cela
    se produit sur 10 des load/store ?
  • Quelle est la latence moyenne dun load/store ?

écriture registre
56
Caches remarques
  • Même un faible pourcentage de défauts de cache
    est pénalisant
  • Gros travail doptimisation à faire sur les
    caches
  • La hiérarchie mémoire est constituée de plusieurs
    niveaux de cache sur les processeurs actuels
  • caches primaires (L1)
  • cache dinstructions et cache de données
  • 8 à 64 Ko
  • temps daccès 1-2 cycles
  • cache secondaire (L2)
  • unifié (instructions et données)
  • si externe, 512 ko à 4 Mo
  • de plus en plus, intégré sur le processeur (256
    Ko on-chip)
  • latence 5-10 cycles
  • (cache tertiaire externe)

57
Caches remarques
  • Sur un défaut de cache primaire, on va chercher
    la ligne manquante dans le cache secondaire
  • Si défaut de cache secondaire, on va chercher la
    ligne manquante en mémoire principale (ou dans le
    cache tertiaire sil y en a un)
  • La plus grande partie du budget en transistors
    des processeurs actuels est utilisée dans les
    caches
  • Exemple le PA-8500 dHP (1999)
  • 130 millions de transistors, 1.5 Mo de cache
    on-chip

58
Cache principe de mise en œuvre
étiquette (tag) identificateur de ligne
Espace mémoire
lignes de cache
Load A
Si ladresse de la ligne contenant A se trouve
dans la table des étiquettes, la donnée est dans
le cache
A
59
Différents types de cache
  • Compromis entre la complexité du cache et sa
    capacité à retenir un maximum de lignes
  • Cache à correspondance directe (direct-mapped)
  • une ligne na quun seul emplacement possible
    dans le cache
  • conflits entre différentes lignes
  • Cache complètement associatif (fully-associative)
  • une ligne peut être à nimporte quel emplacement
    dans le cache
  • lespace du cache est mieux utilisé
  • Associatif par ensembles de N lignes (N-way
    set-associative)
  • intermédiaire entre direct-mapped et
    fully-associative

60
Cache direct-mapped
Exemple cache de 4 Ko, lignes de 16 octets,
adresses 32 bits
4 bits
8 bits
20 bits
adresse daccès
étiquette (tag)
index cache
offset ligne
8
256 lignes de cache de 16 octets
256 tags de 20 bits
4
20
20
ligne
?
Si tags égaux, la donnée est dans le cache.
Sinon, défaut de cache.
61
Exercice
On considère une architecture 64 bits (adresses
sur 64 bits). Soit un cache direct-mapped pouvant
contenir 64 Ko de données, la taille de ligne
étant de 32 octets.
  • Combien de lignes contient le cache ?
  • Quelle est la taille dune étiquette en nombre de
    bits ?
  • Si on compte la table des étiquettes, quelle est
    la quantité de mémoire réellement occupée par le
    cache ?
  • Montrer que, lorsque deux adresses sont séparées
    par une distance inférieure à 64 Ko, elles ne
    sont pas en conflit dans le cache. La réciproque
    est-elle vraie ?

62
Exercice
Cache direct-mapped 4 Ko, ligne 16 octets
Programme A
Programme B
define _8k 8192 char a_8k register int i,x
0 for (i0ilt_8ki) ai ai1 for
(i_8k-1igt0i--) xxai
define _8k 8192 int a_8k register int i,x
0 for (i0ilt_8ki) ai ai1 for
(i_8k-1igt0i--) xxai
  • Combien de défauts de cache sont générés sur la
    deuxième boucle du programme A ?
  • Même question sur le programme B

63
Exercice
Soit un cache direct-mapped de N octets avec des
lignes de L octets
  • Quelle est la probabilité (fonction de N et L)
    pour que deux adresses aléatoires soient en
    conflit dans le cache ?
  • Quelle conclusion en tirez-vous ?
  • Soit deux tableaux de K octets chacun, commençant
    aux adresses respectives A et B (les données dun
    tableau sont rangées à des adresses contiguës en
    mémoire). On suppose que les adresses A et B sont
    alignées sur des frontières de ligne et que
    chaque tableau fait un nombre entier de lignes.
    Quelle est la probabilité pour que ces deux
    tableaux soient en conflit dans le cache ?

64
Cache N-way set-associatif
Exemple cache 2-way SA de 4 Ko, lignes de 16
octets, adresses 32 bits
4 bits
7 bits
21 bits
étiquette (tag)
index cache
offset ligne
banc 0
banc 1
banc 0
banc 1
128 lignes de 16 octets
128 tags 21 bits
128 lignes de 16 octets
128 tags 21 bits
?
?
Sélectionner la bonne ligne
La ligne est-elle présente ?
ou
65
Cache N-way SA
  • Chaque ensemble est composé de N lignes réparties
    sur N bancs et ayant le même index de cache
  • Temps  daccès plus élevé quun cache
    direct-mapped
  • pour accéder à la donnée, on doit avoir lu les
    tags et effectué la comparaison
  • Si le nombre de bancs dun cache SA est égal au
    nombre total de lignes dans le cache, on obtient
    un cache FA
  • Politique de remplacement en cas de défaut de
    cache, on a le choix entre N emplacements pour
    stocker la nouvelle ligne
  • random
  • remplacer une ligne au hasard parmi les N
  • LRU (least recently used)
  • remplacer la ligne la moins récemment utilisée
  • meilleur que random

66
LRU exemple
Cache 4-way set-associatif Supposons que les
lignes A,B,C,D,E aient le même index cache
Cache avant
Hit / miss ?
Ligne évincée
Cache après
Ligne accédée
A DBCA hit
ADBC
B ADBC hit
BADC
C BADC hit
CBAD
D CBAD hit
DCBA
E DCBA miss A
EDCB
A EDCB miss B
AEDC
E AEDC hit
EADC
B EADC miss C
BEAD
67
Mise en œuvre matérielle du LRU
  • Cache 2-way SA
  • associer un bit B à chaque ensemble
  • ce bit contient le numéro du dernier banc accédé
    (0 ou 1) dans lensemble considéré
  • quand on doit évincer une ligne, choisir le banc
    NON(B)
  • Cache N-way SA
  • associer une matrice de bits Ai,j à chaque
    ensemble du cache
  • Ai,j1 signifie que le banc i a été accédé plus
    récemment que le banc j dans lensemble considéré
  • comme Ai,j NON(Aj,i), prendre la partie
    triangulaire sans la diagonale
  • N(N-1)/2 bits
  • lorsque le banc k est accédé, mettre la ligne k à
    1 et la colonne k à 0
  • le banc le moins récemment accédé est celui dont
    la ligne ne contient que des 0 et la colonne que
    des 1
  • bonne approximation du LRU utiliser une
    structure en arbre
  • exemple 4-way 3 bits (1 pour chaque paire de
    bancs 1 global)

68
Distance de réutilisation définition
  • Dun point de vue algorithmique, on peut
    maintenir lordre LRU par une liste chaînée
  • chaque ligne accédée est placée en tête de liste
  • la ligne en queue de liste est la moins récemment
    utilisée
  • plusieurs listes chaînées
  • les lignes qui ont le même index cache sont dans
    la même liste
  • si cache FA, une seule liste globale
  • Distance de réutilisation D dune ligne
    distance par rapport à la tête de liste
  • D0 pour la ligne en tête de liste
  • D peut être globale (une seule liste) ou locale
    (plusieurs listes)
  • Sur un cache N-way SA LRU, si D lt N cest un hit,
    sinon cest un miss

69
Distance de réutilisation utilité
  • La distance de réutilisation globale dune ligne
    donne une idée de sa localité temporelle
  • Sur un cache FA LRU comportant N lignes
  • si D lt N cest un hit, sinon cest un miss
  • Sur un cache direct-mapped comportant N lignes
  • soit une ligne A et soit D sa distance de
    réutilisation globale
  • D lignes distinctes ont été accédées depuis la
    dernière utilisation
  • si on néglige la localité spatiale, la
    probabilité que ces D
    lignes aient toutes un index différent de A vaut
  • la probabilité davoir un miss sur A vaut
  • La probabilité de miss augmente avec la distance
    de réutilisation

70
Exercice multiplication de matrices
register int i, j, k for (i 0 i lt N i)
for (j 0 j lt N j) for (k 0 k lt
N k) Cij Aik Bkj

for (jj 0 jj lt N jjjjN/2) for (i 0 i lt
N i) for (j jj j lt jjN/2 j)
for (k 0 k lt N k)
Cij Aik Bkj
1
3
  • Combien de fois utilise-t-on un même élément de
    A, B et C ?
  • On suppose 1 ligne 1 donnée. Quelle est la
    distance de réutilisation globale dun élément de
    A, B et C sur chacun des 3 programmes ?
    Conclusion ?
  • On suppose 1 ligne plusieurs données. Entre les
    programmes 1 et 2, lequel des deux est à votre
    avis le plus performant ?
  • on supposera (Xij) X i N j

for (i 0 i lt N i) for (k 0 k lt N
k) for (j 0 j lt N j)
Cij Aik Bkj
2
71
Direct-mapped / set-associatif
  • Direct-mapped
  • accès rapide
  • on na pas besoin dattendre la lecture des tags
    et la comparaison pour savoir ou se trouve la
    donnée
  • Set-associatif
  • en général, 2-way ou 4-way
  • le temps daccès augmente avec lassociativité
  • moins de cache miss
  • règle empirique un cache 2-way SA de taille N a
    grosso-modo le même taux de miss quun cache DM
    de taille 2N

72
La bande passante
  • Bande passante débit maximum de transit des
    données sur le bus entre deux niveaux de cache ou
    vers la mémoire
  • Bande passante limitée par la fréquence et la
    largeur du bus
  • exemple bus 128 bits 500 MHz, bande passante
    maximale 8 Giga-octets par seconde
  • Une bande passante trop petite augmente la
    latence apparente des accès mémoire
  • La localité spatiale permet de bien utiliser la
    bande passante disponible

73
Exemple
Soit un tableau de N entiers accédé pour la
première fois. On suppose que les accès se font
dans  lordre 1,2,3,4,5, ... Les lignes font 64
octets et la bande passante du bus est de 8
octets par cycle. La latence mémoire est de 10
cycles.
Fréquence des miss 1 miss pour 16 accès Latence
moyenne dun load (151 110)/16 1.56
cycles ? FAUX !
Un miss ne met pas 10 cycles à se résoudre, mais
9 64/8 17 cycles Latence moyenne dun load
(151117)/16 2 cycles
Et si on prend des lignes plus petites, par ex.
16 octets ? Fréquence des miss 1 miss pour 4
accès. Temps de résolution dun miss 9 16/8
11 cycles Latence moyenne dun load
(31111)/4 3.5 cycles
74
Quelle taille de ligne ?
  • Petites lignes ?
  • on ne charge sur le bus et dans le cache que des
    données utiles
  • la place occupée par les tags augmente
  • Grandes lignes ?
  • bonne localité spatiale ?
  • effet de préchargement bénéfique
  • on peut avoir un bus plus large
  • localité spatiale médiocre ?
  • espace du cache mal utilisé (beaucoup de
     trous  dans les lignes)
  • risque de conflits entre lignes
  • bande passante gaspillée
  • Compromis
  • taille de ligne typique 64 octets

75
Les écritures dans le cache
  • Les écritures posent moins un problème de latence
    que de bande passante
  • le problème de latence est résolu avec un tampon
    décritures en attente
  • les écritures peuvent se faire lorsque la bande
    passante nest pas utilisée par les lectures ou
    lorsque le tampon est plein
  • Cache write-through
  • lorsquune donnée est écrite dans le cache, elle
    est écrite en même temps dans le niveau de cache
    suivant ou en mémoire principale
  • si le niveau de cache suivant est write-through,
    on propage lécriture de la même façon
  • en cas de miss sur écriture, on se contente
    généralement de ne faire lécriture quen
    mémoire, on ne va pas chercher la ligne manquante
  • facilite le maintient de la cohérence mémoire sur
    machine multi-processeur
  • Cache write-back
  • les écritures se font uniquement dans le cache.
    Lorsquune ligne est évincée du cache et quelle
    a été modifiée, elle est recopiée automatiquement
    en mémoire
  • write-allocate en cas de miss sur écriture, on
    va chercher la ligne manquante
  • meilleur utilisation de la bande passante et
    débit décriture moindre

76
Mémoire virtuelle
  • Les adresses logiques (ou virtuelles, c.a.d
    celles vues par le logiciel) ne sont pas
    forcément celles qui sont utilisées par le
    matériel pour adresser la DRAM (adresses
    physiques)
  • avantage permet de  voir  un espace
    dadressage plus grand que celui offert par la
    quantité de DRAM disponible (et le nombre de
    broches)
  • On utilise un mécanisme de translation dadresse
    pour convertir les adresses logiques en adresses
    physiques
  • en général, combinaison de techniques matérielles
    et logicielles
  • lunité de mémoire sur laquelle on travaille
    page mémoire
  • mécanisme de pagination
  • les pages quon ne peut pas stocker en DRAM sont
    stockées sur disque
  • on utilise une table des pages pour faire la
    translation page logique / physique
  • pour accéder à une page qui se trouve sur disque,
    on la recopie en DRAM et on met à jour la table
    des pages

77
Pagination
  • Taille de page typique 4 Ko
  • Table des page indexée avec le numéro de page
    logique, fournit un numéro de page physique
  • La table des pages est stockée en DRAM, dans une
    zone ne nécessitant pas de translation
  • exemple espace logique sur 32 bits, pages 4 Ko
    (12 bits doffset), soit 220 pages logiques
  • Si on devait consulter la table des pages pour
    chaque accès mémoire, le temps de translation
    serait beaucoup trop long
  • On utilise un TLB (translation look-aside buffer)
  • TLB cache de translation dadresse intégré sur
    le processeur
  • contient un sous-ensemble de la table des pages
  • typique 64/128 entrées, full-associative

78
TLB
Exemple adresses logiques 32 bits, pages de 4
Ko, TLB 64 entrées
12 bits
20 bits
adresse logique
numéro de page logique
offset page
64 tags numéros de page logique
TLB
64 numéros de pages physiques qq bits de statut
12 bits
adresse physique
numéro de page physique
offset page
79
Défauts de TLB
  • Sur un défaut de TLB, une exception est générée
  • le système consulte la table des pages en DRAM
  • si la page est présente en DRAM, le système met
    le TLB à jour puis rend la main au programme
  • latence quelques dizaines à quelques centaines
    de cycles
  • si la page nest pas présente cest un défaut de
    page
  • latence centaines de milliers de cycles (accès
    disque)

80
Mémoire virtuelle et caches
  • Stocke-t-on dans le cache des adresses logiques
    ou physiques ?
  • Adresse logique
  • problème des synonymes sur les pages accessibles
    en écriture
  • des pages logiques distinctes projetées sur la
    même page physique
  • plusieurs copies de la même données dans le cache
  • Adresse physique
  • il faut accéder au TLB avant daccéder au cache,
    ça augmente le temps daccès
  • En général
  • cache L1 données index logique/tag physique
  • cache L1 instructions adresses logiques ou index
    logique/tag physique
  • cache L2 adresses physiques

81
Index logique / tags physiques
  • Si la somme du nombre de bits dindex cache et du
    nombre de bits doffset ligne ne dépasse pas le
    nombre de bits doffset page, lindex de
    ladresse physique est égal à lindex de
    ladresse logique
  • on peut commencer à indexer le cache avec
    ladresse logique, sans attendre que laccès TLB
    soit terminé
  • laccès TLB se fait en parallèle avec lindexage
    du cache, il ne coûte rien
  • la comparaison sur les tags seffectue avec
    ladresse physique
  • Si les pages sont trop petites, on peut
  • augmenter lassociativité du cache pour réduire
    le nombre de bits dindex
  • imposer au système de ne pas altérer les bits
     qui dépassent  lors de la translation
    dadresse

82
En résumé ...
  • Les caches permettent de masquer la latence
    daccès à la mémoire principale
  • lorsque la localité des références est bonne, la
    majorité des load et des store sexécutent en 1
    ou 2 cycles
  • Un cache permet de filtrer les requêtes vers les
    niveaux de cache suivant on économise de la
    bande passante
  • si on a un bus mémoire avec une faible bande
    passante, on a intérêt à avoir un gros cache
  • Technique complémentaire le préchargement
  • préchargement matériel
  • exemple sur un cache miss, charger la ligne
    manquante dans le cache et charger les lignes
    suivantes dans un tampon de préchargement daccès
    rapide
  • fonctionne bien pour les instructions et les
    accès aux tableaux
  • préchargement logiciel instructions fetch
    (plupart des ISA RISC)
  • il faut de la bande passante !

83
Que peut faire le compilateur ?
  • Améliorer la localité temporelle
  • réarranger les boucles
  • exemple multiplication de matrice
  • Améliorer la localité spatiale bien utiliser les
    lignes de cache
  • lire les tableaux 2D dans le bon sens
  • éviter de faire des accès par pas supérieur à 1
  • Utiliser les registres chaque fois que cest
    possible
  • Préchargement logiciel

84
Le problème des sauts
En moyenne, un saut se produit toutes les 7
instructions Pipeline de plus en plus long
actuellement gt 10 étages (Intel P6, Ultrasparc 3,
AMD Athlon ), bientôt 20 étages (Intel Pentium
4)
N étage auquel les sauts sont exécutés
inst / cycle
IPC
85
La prédiction de branchements
Années 80
Années 90
PC PC4
prédiction PC
chargement
chargement
correction si mal prédit
décodage
décodage
saut
exécution
exécution
accès cache
accès cache
écriture registre
écriture registre
Branchements prédits non pris
On essaie de prédire les sauts
86
Prédiction de branchement principes
  • Il faut minimiser le nombre de mauvaises
    prédictions
  • sur un branchement mal prédit, on retrouve le
    problème des aléas de contrôle (bulles)
  • Utiliser le comportement passé des branchements
  • la majorité du temps dexécution est passé dans
    des boucles lorsquon rencontre un branchement,
    on a de bonnes chances de lavoir déjà rencontré
    dans le passé
  • le comportement des branchements nest pas
    aléatoire, il est biaisé on peut prédire le
    comportement futur du branchement en regardant
    son comportement passé
  • Stocker linformation sur le comportement passé
    de chaque branchement dans une table de
    prédictions
  • table daccès rapide indexé avec le PC du
    branchement
  • premier étage du pipeline

87
Types 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, ...

88
Quelques 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

89
Les 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
90
Les é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

91
Table 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
92
Cache de branchements
ou BTB (Branch Target Buffer)
étiquettes
cibles
PC
?
Un branchement est détecté, il est prédit pris
adresse de saut
93
Utilisation 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

94
BTB remarques
  • Aussi appelé BTAC (branch target address cache)
  • Utilisé sur les processeurs Intel P6, AMD Athlon,
    IBM Power3, HP PA-8500 ...
  • Taille 32-2048 entrées
  • Associativité 2/4
  • Prédiction comme la dernière fois ( on prédit
    le même comportement que la dernière fois)
  • fonctionne bien pour les inconditionnels relatifs
  • le comportement est toujours le même
  • pas optimal pour les branchements conditionnels
    et les retours de fonction
  • le comportement nest pas toujours le même
  • 20 de mauvaises prédictions sur les
    conditionnels

95
Pré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
96
Exercice
  • On considère un branchement conditionnel ayant
    une probabilité p dêtre pris.
  • En prédisant comme la dernière fois, quel taux de
    mauvaises prédictions obtient-on sur ce
    branchement ?
  • Quel taux de mauvaises prédictions obtiendrait-on
    si on prédisait ce branchement toujours pris ?
    Est-ce mieux que comme la dernière fois ?

97
Le 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)

98
Efficacité 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

99
Compteur 2 bits mise en œuvre
  • Première possibilité rajouter un compteur 2
    bits dans chaque entrée du BTB
  • on bénéficie de lassociativité 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

100
BHT
PC du branchement conditionnel
poids forts
poids faibles
n bits
BHT 2n compteurs 2 bits
Rem comme il ny a pas de tags, on ne peut pas
avoir dassociativité.
Interférences entre branchements. Problème
analogue aux conflits dans un cache direct mapped.
Le bit de poids fort du compteur donne la
prédiction
101
Pré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) ...

102
BTB / BHT
  • Processeurs ayant à la fois un BTB et une BHT
  • le BTB permet didentifier les branchements avant
    décodage (conditionnel/inconditionnel/appel/retour
    ) et fournit ladresse de saut (sauf pour les
    retours)
  • la BHT prédit la direction des conditionnels
  • Processeurs ayant une BHT mais pas de BTB
  • la prédiction se fait à létage de décodage
  • si prédit non pris, pas de pénalité
  • exemple
Write a Comment
User Comments (0)
About PowerShow.com