ARPO - PowerPoint PPT Presentation

1 / 219
About This Presentation
Title:

ARPO

Description:

il faut avoir de bonnes raisons pour lancer un nouveau jeu d'instructions ... Et comment s'en affranchir. a= b c ; d= e f. 56. Les al as WAR et WAW sur les processeurs ... – PowerPoint PPT presentation

Number of Views:251
Avg rating:3.0/5.0
Slides: 220
Provided by: sez
Category:
Tags: arpo | affranchir | aient

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

4
Microarchitecture
  • Vision macrocospique de l implémentation du
    matériel
  • pas besoin de savoir comment fonctionne un
    transistor !!
  • Mais comprendre pourquoi un programme séquentiel
    (en sémantique), lisant ses données et
    instructions dans une mémoire répondant en 100 ns
    peut exécuter 4 instructions toutes les 500 ps

5
Contextes des processeurs hautes performances
  • Processeurs à usage général
  • serveurs, ordinateurs de bureau, ordinateurs de
    poche ...
  • exécute tous types dapplications
  • Processeurs  enfouis 
  • téléphone, télévision, voiture ...
  • application spécifique
  • processeur spécialisé ou dérivé dun processeur à
    usage général

6
Besoins en performances
  • Performance
  • améliorer le temps de réponse gt interactivité
  • applications scientifiques
  • bases de données
  • traitement du signal
  • multimédia
  • Pseudo-loi vérifiée dans l histoire de
    linformatique

Tout gain en performance génère de nouvelles
applications qui génèrent de nouvelles demandes
en performance
7
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
8
Où doit porter leffort ?
compilateur
ISA
micro-architecture
processeur usage général



processeur enfoui



Processeur usage général ISA préexistant
(exemple Intel x86) compatibilité binaire la
nouvelle génération de processeur doit pouvoir
exécuter les codes exécutables sur les anciennes
générations Processeur enfoui attention au coût
du processeur compromis performance /
consommation électrique
9
Quest ce que la performance ?
  • Choisissez votre point de vue !
  • Débit dexécution faire plus de travail utile
    pendant un temps donné
  • serveurs
  • environnement multiprogrammé
  • Temps dexécution faire un travail donné dans
    un temps plus court
  • point de vue de lutilisateur
  • Faire un travail en un temps déterminé temps
    réel, une fois lobjectif rien ne sert daller
    plus vite
  • consommer moins, circuit plus petit, ..

10
Quelques métriques
Fréquence CPU f fréquence de lhorloge interne
du processeur dépend de la technologie et de la
micro-architecture
Cycle CPU T 1 / f
Nombre moyen dinstructions exécutées par cycle
11
MIPS / megaflops
MIPS
nombre moyen de millions dinstructions exécutées
par seconde
pour larchitecte, à application, jeux de
données, ISA et compilateur fixés,
fréquence fixée Instruction par Cycle (IPC)
nombre moyen de millions dopérations virgule
flottante par seconde
megaflops
Utilisé pour le calcul numérique intensif
12
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
13
Accélération locale / globale
Un programme passe 50 du temps dexécution dans
du calcul en virgule flottante, et supposons
quon multiplie par 10 les performances du calcul
en virgule flottante. Quelle est laccélération
globale ?
14
Accélération locale / globale (2)
supposons quon multiplie par 1.5 les
performances du calcul en entier et par 4 les
performances en virgule flottante. Quelle est
laccélération globale ?
15
Accélération locale / globale (3)
Un programme passe 98 du temps dexécution dans
du calcul en virgule flottante, et supposons
quon multiplie par 10 les performances du calcul
en virgule flottante. Quelle est laccélération
globale ?
16
Loi dAmdahl
17
Que dit la loi dAmdhal
Il faut optimiser dabord le cas le plus fréquent
Mais aussi optimiser tous les composants
18
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 à lutilisation envisagée ...
19
Évaluer / analyser les performances
  • L utilisateur lambda mesures de temps
     dexécution
  • Comprendre le temps dexécution instrumentation
  • quelle partie du code contribue le plus au temps
    dexécution ?
  • code instrumenté code original code
    supplémentaire permettant de récupérer de
    linformation à lexécution (exemple adresses
    mémoire)
  • exemples doutils Prof, Pixie, Salto, EEL, Atom,
  • Compréhension fine utiliser les compteurs
    matériels du processeur
  • compte certains évènements
  • Définition de nouvelles architectures
  • simuler lexécution au lieu dexécuter réellement
  • lISA simulé peut ne pas être celui de la machine
    sur laquelle on simule
  • Exemples de simulateurs Simplescalar, Shade,
    SimOS, Impact ...

20
Noubliez pas
Pour comprendre larchitecture, il faut une
vision minimale du contexte technologique mais
aussi économique
Contexte technologique Cible mouvante
Contexte économique  Intel est le plus fort 
21
 Loi  de Moore
  • Le nombre de transistors sur un micro-processeur
    double tous les 18 mois
  • 1972 2000 transistors (Intel 4004)
  • 1979 30000 transistors (Intel 8086)
  • 1989 1 M transistors (Intel 80486)
  • 1999 130 M transistors (HP PA-8500)
  • Les performances des processeurs doublent tous
    les 18 mois
  • 1989 Intel 80486 16 Mhz (lt 1inst/cycle)
  • 1993 Intel Pentium 66 Mhz x 2 inst/cycle
  • 1995 Intel PentiumPro 150 Mhz x 3 inst/cycle
  • 06/2000 Intel Pentium III 1Ghz x 3 inst/cycle
  • 09/2001 Intel Pentium 4 2 Ghz x 3 inst/cycle

22
Utilisation des transistors évolution
8 gt 16 gt 32 bits calcul flottant
32 gt 64 bits multimédia
RISC
années 70
années 80
années 90
Étoffer lISA pour diminuer le nombre
dinstructions exécutées



de mémoire on-chip (cache,registres) pour
diminuer les accès externes



Exécution superscalaire

23
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

24
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 à 60 Watts
  • gt 100 W bientôt
  • 400 à 600 broches
  • gt 1000 bientôt

25
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

26
Compatibilité binaire
  • Une donnée économique 500 000 000 de PCs !
  • un nouveau jeu d'instructions RISQUÉ !!
  • Le monde change (peut-être)
  • les processeurs enfouis, le multimédia
  • l'IA 64 arrive
  • x86 mutation vers 64 bits (AMD ) ?

27
Architecture 32 ou 64 bits
  • Architecture 32 bits l'adresse virtuelle est de
    32 bits
  • PowerPC, x86,
  • Architecture 64 bits l'adresse virtuelle est
    de 64 bits.
  • MIPS III, Alpha, Sparc V9, HP-PA 2.x, IA64
  • En 2005 les jeux ? Word ?
  • LE MOUVEMENT EST INEXORABLE
  • x86 la rupture ou x86-64 ?

28
Langoisse de larchitectedu processeur haute
performance
  • 400 mm2 de silicium
  • 3 générations de technologie en avant
  • que faire pour obtenir les performances ?
  • Pipeline
  • Parallélisme dinstruction
  • Lexécution spéculative
  • La hiérarchie mémoire
  • demain, le parallélisme de processus

29
Le pipeline
30
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

31
Pipeline (2)
  • On ajuste les phases pour qu'elles aient la même
    durée
  • 1 cycle de la machine
  • L'exécution d'une instruction est allongée
  • Difficile de découper en phases de même durée
  • Le découpage entraîne un surcoût
  • traversée de buffers
  • Mais une instruction peut être lancée tous les
    cycles.

32
Exemples de pipeline
  • MIPS R3000
  • MIPS R4000

33
Exemples de pipeline (2)
  • DEC 21064
  • 2 étages dexécution
  • Cypress Sparc
  • étages EX et MEM confondus

34
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

35
Attention aux exécutions longues
  • Sur les entiers
  • multiplication 5-10 cycles
  • division 20-50 cycles
  • Sur les flottants
  • Addition 2-5 cycles
  • Multiplication 2-6 cycles
  • Division 10-50 cycles

36
Vie d une instruction sur le MIPS R4000
  • 1. IF (Instruction Fetch).
  • Lecture du cache instructions et lecture du TLB
  • 2. IS (Instruction Fetch, Second Half)
  • Fin de lecture du TLB et du cache instructions
  • 3. RF (Register File)
  • Décodage de línstruction , lecture des opérandes,
    vérification des étiquettes
  • 4.EX (Exécution).
  • Exécution des opérations registre-registre ou
  • calcul de ladresse virtuelle pour les
    Load/Store ou
  • calcul de l'adresse virtuelle de la cible pour
    les branchements

37
Vie d une instruction sur le MIPS R4000 (2)
  • 5 DF (Data Fetch, First Half)
  • accès au cache de données, et parallèlement, et
    traduction de l'adresse virtuelle en adresse
    physique
  • 6. DS (Data Fetch, Second Half)
  • fin de l'accès au cache et de la traduction
    d'adresses.
  • 7. TC (Tag Check)
  • comparaison de l'étiquette du cache avec
    l'adresse physique du TLB pour déterminer si il y
    a eu un défaut de cache ou non.
  • 8. WB (Write Back)
  • Ecriture du résultat de l'instruction dans un
    registre (s'il y a lieu).

38
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

39
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, ..

40
  • Petite digression
  • De l'avantage d'un jeu d'instruction régulier
    pour le pipeline

41
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.

42
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

43
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.

44
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

45
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
  • Registres indifférenciés

46
RISC (2)
  • Code relativement volumineux
  • C AB
  • load A,R2
  • load B,R3
  • add R3, R2, R1
  • pour une même application
  • 1.5 à 2 fois le volume que pour un CISC.
  • Avantage se pipeline bien !
  • Lecture de l'instruction et décodage en temps
    constant.
  • Occupation d'une unité fonctionnelle à un instant
    précis

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

48
Jeux d'instructions des processeurs
RISCPrincipes communs
  • Une seule taille d'instruction 32 bits en
    général
  • simplifie le décodage et le calcul de
    l'anticipation de l'adresse suivante
  • Architecture load/store
  • Modes d'adressage simples basé et indexé
  • Instructions simples registre-registre
  • Presque consensus
  • 32 registres
  • Bloc de registres distincts pour les flottants

49
RISC et Instructions multimédiaune entorse à la
simplicité
  • Principe général
  • Les instructions multimédia

Nimplémenter une instruction que si le
compilateur est capable de la générer.
On  packe  plusieurs mots de 16 bits dans un
registre de 64 bits. On exécute 4 fois la même
instruction en //.
Aucun compilateur ne les gère correctement
50
Retour au pipeline
51
Les aléas de données
  • Lexécution pipeline d'une séquence
    d'instructions doit produire le même résultat
    qu'une exécution séquentielle.
  • 3 types d'aléas peuvent se produire i précède j
  • RAW (Read After Write)
  • j utilise un résultat de i comme opérande
  • le résultat doit être écrit par avant que j ne
    le lise.
  • WAR (Write After Read)
  • j écrit un résultat dans une source de i
  • i doit avoir lu sa source avant que j ne
    l'écrive
  • WAW (Write After Write)
  • i et j écrivent leurs résultats à la même place
  • j doit écrire son résultat après i

52
Read After Write sur les processeurs RISC
  • Le problème
  • Une solution mais perte de 2 cycles !

53
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

54
Aléas Read After Write sur les processeurs RISC
  • Le délai de chargement mémoire

55
Et comment s'en affranchir
  • a bc d ef

56
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)

57
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.

58
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

59
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.

60
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. Au plus tôt
  • Cycle 7 sur le DEC 21264
  • Cycle 11 sur l'Intel Pentium III
  • Cycle 18 sur l Intel Pentium 4
  • multiplié par X inst./ cycles !
  • Pas question de perdre tous ces cycles !

61
Le problème des sauts
En moyenne, un saut se produit toutes les 7
instructions Pipeline de plus en plus long gt 10
étages (Intel P6, Ultrasparc 3, AMD Athlon ),
et même 20 étages (Intel Pentium 4)
N étage auquel les sauts sont exécutés
inst / cycle
IPC
62
Le problème des sauts (2)
En moyenne, un saut se produit toutes les 7
instructions Pipeline de plus en plus long gt 10
étages (Intel P6, Ultrasparc 3, AMD Athlon ),
et même 20 étages (Intel Pentium 4)
N étage auquel les sauts sont exécutés
inst / cycle
IPC
63
La prédiction de branchements
64
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, ...

65
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

66
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
67
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 dinstructions
  • On prédit
  • la cible et la direction des branchements
  • les retours de procédures
  • les branchements indirects

68
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

69
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
70
Identifier le branchement
BTB (Branch Target Buffer)
étiquettes
cibles
PC
?
Cible
71
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

72
Direction d un branchement conditionnel
  • Il est plus important de prédire la direction que
    la cible d un branchement conditionel
  • saut relatif cible recalculée au décodage
  • direction connue à l exécution

73
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
74
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)
  • Se trompe seulement à la dernière itération
    d une boucle

75
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

76
Compteur 2 bits mise en uvre
  • Première possibilité rajouter un compteur 2
    bits dans chaque entrée du BTB
  • si un branchement est prédit pris mais quen
    réalité il est non pris, on décrémente le
    compteur et on laisse lentrée dans le BTB
  • Deuxième possibilité stocker les compteurs 2
    bits dans une table spécifique, la BHT (branch
    history table)
  • MIPS R10000, IBM Power3, PowerPC, AMD Athlon, HP
    PA-8500
  • pas de tags, juste 2 bits dans chaque entrée
  • la BHT peut comporter plus dentrées que le BTB
  • taille 256 à 2k entrées
  • quand le compteur passe de létat 2 à létat 1,
    lentrée dans le BTB nest plus nécessaire
  • Autre avantage plus important de prédire
    direction que la cible

77
BHT
PC du branchement conditionnel
poids forts
poids faibles
n bits
BHT 2n compteurs 2 bits
Interférences entre branchements 2 branchements
en conflit pour une même entrée.
Le bit de poids fort du compteur donne la
prédiction
78
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) ...

79
Mauvaises prédictions 10 cest trop
  • Les processeurs actuels sont superscalaires
  • chaque étage du pipeline peut traiter plusieurs
    instructions simultanément
  • Le pipeline dinstructions est long
  • Exemple
  • 4 instructions par cycles
  • IPCidéal 4
  • 12 cycles de pénalité si branchement mal prédit
  • 1 conditionnel pour 8 instructions, soit 80
    instructions par mauvaise prédiction
  • IPCmaxi 80 / (80/4 12) 2.5
  • On sait faire mieux la prédiction à 2 niveaux
    dhistorique

80
Inter-corrélations
cond1
cond2
cond1 ET cond2
B1 SI cond1 ET cond2 B2 SI cond1
F V F V
F F F V
F F V V
Supposons les 4 cas équiprobables. La
probabilité de bien prédire B2 en se basant sur
son comportement passé vaut 50
Supposons maintenant quon connaisse le résultat
de B1 au moment de prédire B2 Si cond1 ET cond2
vrai (probabilité 1/4), prédire cond1 vrai
100 de succès Si cond1 ET cond2 faux
(probabilité 3/4), prédire cond1 faux
66 de succès On peut prédire B2 avec un taux de
succès de 1/4 3/4 2/3 75
Remarque si on permute B1 et B2, cest moins
bien ...
81
Auto-corrélation
1 1 1 0
for (i0 ilt100 i) for (j0jlt4j)
corps de la boucle
1 1 1 0
Si les 3 dernières directions sont des 1, prédire
0, sinon prédire 1
1 1 1 0
100 de succès
82
Prédicteur à 2 niveaux dhistorique
  • Premier niveau dhistorique
  • historique global pour détecter les
    inter-corrélations
  • un seul registre à décalage de L bits contient
    les directions prises par les L derniers
    branchements rencontrés
  • historique local pour détecter les
    auto-corrélations
  • un registre à décalage de L bits pour chaque
    branchement
  • contient les L dernières directions prises par ce
    branchement
  • prédit bien les boucles faisant au plus L
    itérations
  • Deuxième niveau dhistorique
  • chaque branchement utilise plusieurs compteurs 2
    bits, stockés dans une PHT (pattern history
    table)
  • utiliser la valeur dhistorique local ou global
    pour sélectionner le compteur dans la PHT

83
Prédicteur à historique global
n bits
PC du branchement conditionnel
Appliquer une fonction de hachage entre ladresse
et lhistorique (par ex. OU exclusif bit à bit)
xor
histo L bits
Prédiction insérée dans lhistorique pour prédire
le branchement suivant
PHT 2n compteurs 2 bits
prédiction 0/1
84
Prédicteur à historique local
m bits
PC du branchement conditionnel
2m historiques locaux de L bits
histo L bits
PHT 2n compteurs 2 bits
NB temps daccès plus long (2 accès chaînés)
Prédiction 0/1
85
Hors contraintes matérielles ...
  • Les prédicteurs à deux niveaux permettent de
    diviser par 2-3 le nombre de mauvaises
    prédictions
  • typique 5 de mauvaises prédictions
  • voire moins sur les codes  flottants 
  • Historique global
  • efficace sur les codes  entiers 
  • Historique local
  • plus efficace sur les codes  flottants 
  • beaucoup de boucles, comportement régulier

86
En pratique ...
  • Beaucoup dinterférences de conflits dans la PHT
  •  paradoxe  de lanniversaire
  • soit une classe de 23 élèves, la probabilité
    davoir 2 élèves qui fêtent leur anniversaire le
    même jour est de 50
  • lespace de la PHT est très mal utilisé
  • Quelle longueur dhistorique ?
  • sur les  grosses  applications, trop
    dinterférences de capacité, on préfère un
    historique court (voire une BHT)
  • sur les  petites  applications, on préfère un
    historique long
  • Historique local ou historique global ?
  • ça dépend de lapplication

87
Prédicteurs hybrides principe
Quelles étaient les prédictions correctes ?
Méta-prédicteur
Prédicteur 1
PC du branchement
Prédicteur 2
Prédiction



Prédicteur N
88
Le prédicteur de lAlpha 21264
PC du branchement
historique global 12 bits
1k historiques locaux de 10 bits
PHT 1k compteurs 3 bits
Méta 4k compteurs 2 bits
PHT 4k compteurs 2 bits
total 29 Kbits
prédiction
89
Exécution conditionnelle
if (xlty) a
prédication
code initial, avec un branchement
move conditionnel
saute à SUITE si (r1 gt r2) r4 mem(a) r4 r4
1 mem(a) r4 SUITE
r3 r1 - r2 r4 mem(a) r5 r41 r4 r5 si
(r3lt0) mem(a)r4
r3 r1 - r2 p1 (r3lt0) r4 mem(a) si p1 r4
r41 si p1 mem(a)r4 si p1
prédication sans supports ?
Attention au surcoût en instructions
a a (((x - y)gtgt31)1)
90
Prédiction de branchement
  • 1992 Alpha 21064, schéma à 1 bit
  • 1993 Pentium, schéma à 2 bits
  • 1995 PentiumPro, historique local
  • 1998 Alpha 21264, prédicteur hybride
  • 2000 Pentium 4 secret !
  • Alpha 21464 (arrété en juin 2001)
  • global, mixe 4 longueurs d historique
  • 352 Kbits au total

91
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
    lexécution spéculative
  • CMOV
  • prédicats de l IA64

92
Le parallélisme dinstructions
93
Toujours plus de puissance les processeurs
superscalaires, VLIW et EPIC
  • Processeurs RISC jusqu'en 1991
  • objectif 1 instruction par cycle
  • mais comment aller plus vite
  • Diviser le temps de cycle et multiplier les
    étages superpipeline
  • Lancer plusieurs instructions par cycle
  • qui contrôle
  • Le matériel superscalaire
  • Le compilateur VLIW (Very Long Instruction Word)
  • Les 2 EPIC (Explicitly Parallel Instruction
    Computing)

94
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 (GENERAUX) ANNONCES DEPUIS
    1993 SONT SUPERSCALAIRES

On va en parler (beaucoup)
95
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 labsence de compatibilité binaire
  • Non utilisé pour les processeurs généraux, mais
    populaire pour les calculateurs enfouis

96
Architecture VLIW (Very Long Instruction Word)
  • Une unité de contrôle émet une instruction longue
    par cycle.
  • Chaque instruction longue initialise
    simultanément plusieurs opérations indépendantes
  • le compilateur garantit que les instructions
    d une même instruction longue sont
    indépendantes.
  • Ie compilateur garantit que les instructions
    lancées sont indépendantes de toutes les
    instructions encore  en vol 
  • Il ny a pas de matériel pour imposer le respect
    des dépendances

97
Architecture VLIW
Unité de contrôle
Banc de registres
interface mémoire
UF
UF
UF
UF
98
VLIW format des instructions
À lorigine
Aujourdhui
  • Le format des instructions comporte un grand
    nombre de bits pour contrôler directement
    l'action des multiples unités fonctionnelles.
  • Pb trop de NOPs
  • Multiflow 27 UFs 1024 bits de large
  • Un groupe dinstructions RISC
  • Plus d unités fonctionnelles que d instructions
    codées dans un mot VLIW

Les instructions sont, en général, compressées en
mémoire, mais expansées dans le cache instruction
99
Un exemple de de jeu dinstructionsTrimedia
  • Les instructions
  • 5 opérations par instruction
  • la plupart des opérations sont de la forme
  • IF rc opcode op1 op2 -gt op3
  • avec rc la garde, op1, op2 et op3les opérandes.
  • Si rc contient  vrai  alors op3 est modifié.
  • Les gardes s applique à l ensemble des
    opérations sauf iimm et uimm (load de constante)
  • 128 registres généraux de 32bits (r00, r11)

100
Gardes
  • Intérêt éliminer des branchements

if (x3) yy1y2
cmp r11,3 bne suite add r2 r3 r4 suite
iseq r11 3 r10 IF r10 add r2 r3 r4
101
 Slots  des instructions
  • Les opérations ne peuvent être affectées
    indifféremment dans nimporte quels emplacements
    (slots) de linstructions
  • Un slot  contrôle  un sous ensemble des unités
    fonctionnelles capable d exécuter un sous
    ensemble des opérations de l architecture

....
102
Ordonnancement statique
  • latence dune multiplication 3 cycles

VLIW
RISC-CISC
mul r6 r7
r3
mul r6 r7
r3
add r1 r2
r9
add r1 r2
r9
nop
3 cycles
add r3 r4
r5
add r3 r4
r5
103
Ordonnancement statique
add r1,r2,r3 ld r3,r4 add r5,1,r6 add
r4,4,r4 jmp suite ...
Ordonnancement
104
Et aussi les branchements  retardés 
  • On n exécute les branchements qu au cycle EX du
    pipeline
  • pas de contrôle pas de prédiction de
    branchement
  • pas de contrôle pas d annulation
    d instruction en cours
  • Les slots entre le branchement et la connaissance
    de son résultat doivent être remplis avec des
    instructions indépendantes du branchement
     branch delay slots 

Aussi utilisés dans les premiers ISA RISC
(Sparc, MIPS)
105
Branchements retardés
  • Sur le TM1000 le branch  delay slot  des
    branchements est de 3 cycles
  • 5 x 3 4 19 instructions à trouver !

add r1,r2,r3 b suite nop ... suite
b suite add r1,r2,r3 suite
106
VLIW architecture pour les applications
embarquées
  • Pas de possibilités de compatibilité binaire
    d une génération à l autre
  • Efficace sur les codes réguliers (boucle), peu
    efficace sur les applications general-purpose
    (trop de branchements)
  •  Cost-effective 
  • pas de contrôle
  • moins de surface de silicium
  • moins de consommation
  • temps de conception et mise au point réduit

107
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.

108
//isme d instruction et  general-purpose 
  • Les processeurs superscalaires

109
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

110
Le degré superscalaire
  • Difficile à définir
  •  performance quon est certain de ne pas
    dépasser 
  • 4 inst / cycles sur presque tous les processeurs
    existants
  • 6 inst / cycles sur Itanium
  • 8 inst / cycles sur le (ex-futur) Alpha 21464
  • projet abandonné en juin 2001
  • 16 -32 en 2012 ? )

111
Exécution dans lordre ou dans le désordre
  • Respecter lordre du programme ou non
  • Ah! Si toutes les latences étaient connues
    statiquement,
  • Les  partisans  de l ordre
  • UltraSparc 3, Itanium
  • Le compilateur doit faire le travail
  • Les  partisans  du désordre
  • Alpha 21264, Pentium III et 4, Athlon, Power
    (PC), HP-PA 8500

112
Pourquoi lexécution dans lordre
  • simple à mettre en uvre
  • moins de transistors
  • moins de temps de développement
  • horloge rapide (discutable)
  • pipeline moins profond
  • le compilateur  voit  tout
  • la micro-architecture
  • le programme

Même philosophie que VLIW
113
Le compilateur voit  tout 
  • Au sein dun bloc de base !
  • (bloc de base suite d instructions non séparée
    par un branchement ou une étiquette)
  • le compilateur est capable de réordonnancer les
    instructions pour les lancer en //
  • On peut appliquer des techniques logicielles pour
    dépasser la frontière dun bloc de base
  • déroulage de boucle, pipeline logiciel,
    hyperbloc, ..

114
Pourquoi lexécution dans le désordre
  • l ILP statique est limité dans les codes non
    réguliers
  • le compilateur ne  voit  pas tout
  • latences inconnues à la compilation
  • (in)dépendances inconnues à la compilation
  • sur la mémoire
  • pas besoin de recompiler
  • hum !!

115
Le compilateur ne  voit  pas tout
  • Latences inconnues à la compilation
  • accès à la mémoire 1 ou 10 ou 100 cycles
  • (In)dépendances mémoires
  • Le compilateur ne peut prendre que des décisions
    conservatrices
  •  Perdu  après quelques branchements
  • explosion combinatoire
  • explosion de la taille de code

116
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 (80 sur Alpha 21264,
    plus de 100 sur Pentium 4)

117
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

118
Renommage de registres ou comment enlever les
fausses dépendances (1)
  • Aléas WAW et WAR sur les registres peuvent être
    évitées par renommage dynamique des registres.

119
Renommage de registres ou comment enlever les
fausses dépendances (2)
  • Plus de registres physiques que de registres
    logiques dans l ISA
  • Maintenir une liste de registres physiques
    disponibles
  • Affecter un nouveau registre physique à chaque
    nouvelle écriture de registres
  • Libérer les registres après leur dernière
    utilisation

120
Renommage de registres ou comment enlever les
fausses dépendances (3)
1Op L6, L7 -gt res1 2Op L2, res1 -gt res2 3Op
res2, L3 -gt res3 4Op res3,res2 -gt res4
1Op R6, R7 -gt R5 2Op R2, R5 -gt R6 3Op R6, R3
-gt R4 4Op R4, R6 -gt R2
4 new free registers

Old map table
121
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

122
Dépendances mémoires (2)
  • Solution provisoire
  • Exécution optimiste dans le désordre
  • Réparation si la dépendance existe
  • Pb coût de la réparation
  • Solution émergente la prédiction de dépendances
    sur la mémoire
  • Moshovos et Sohi, Micro'30, décembre 1997
  • Chrysos et Emer, ISCA 26, juin 1998

123
Et les interruptions ?
124
Les interruptions
  • L exécution d un processus peut être
    interrompue par un événement externe (préemption
    du système, signal extérieur, ..) ou interne
    (traitement d une exception).
  • Mais le résultat du programme ne doit pas (en
    général ) dépendre du traitement de
    linterruption
  • Le traitement d une interruption nécessite de
    pouvoir à tout instant être capable de définir et
    sauver un état cohérent de la machine
  • Program Counter
  • Registres
  • Mémoire
  • Sur les processeurs exécutant dans l ordre,
    relativement simple mais sur les processeurs
    exécutant dans le désordre !!

125
Exécution dans le désordreSavoir  défaire 
  • Mauvaise prédiction de branchement
  • Mauvaise anticipation d'indépendance
  • Interruption, exception
  • Valider dans lordre du programme
  • Ne rien faire de définitif dans le désordre

126
Savoir  défaire 
  • Une copie du fichier de registres est mise à
    jour dans l'ordre du programme
  • ou
  • Une ltltcartegtgt registres logiques-registres
    physiques est sauvegardée
  • Les écritures en mémoire sont faites à la
    validation

127
  • Organisation des unités fonctionnelles

128
Unités fonctionnelles centraliséesune fenêtre
dinstruction unique
X instructions choisies à lexécution dans toute
la fenêtre Pb majeur implémenter le choix X
parmi N
129
Design en clusters N fenêtres d instrustions
Les instructions sont réparties entre les
clusters dans les étages amont Sélection des
instructions simplifiée - équilibrage de charge
130
Semi-unifié fenêtres d instructions par type
d instructions
Ld/St
ALU1
BR
ALU2
131
Petit retour sur le pipeline
132
Le pipeline de plus en plus profond
  • Plus on stresse l'horloge, moins on en fait en un
    cycle.
  • 1 cycle traversée dune ALU rebouclage
  • Communications intra-CPU de en longues
  • plusieurs cycles pour traverser le composant
  • Le contrôle est de en complexe
  • plus dinstructions en //
  • plus de spéculation

133
Quelques profondeurs de pipeline
  • 12-14 cycles sur lIntel Pentium III
  • 10-12 cycles sur lAMD Athlon
  • 7-9 cycles sur lAlpha 21264
  • 9 cycles sur lUltraSparc
  • 10 cycles sur lItanium (juin 2001)
  • 20 cycles sur le Pentium 4 (fin 2000)
  • Et ça ne va pas saméliorer !!

134
Retour au jeu dinstruction
135
L IA64 un jeu dinstruction  general-purpose 
pour le //isme dinstructions
  • parallélisme explicite entre les instructions (à
    la VLIW)
  • Support pour lexécution spéculative
  • Compatibilité assurée par  le matériel

136
Le jeu dinstruction EPIC IA64(Explicitly
Parallel Instruction Computing)
  • EPIC IA64
  • RISC
  • plus de registres (128 entiers, 128 flottants)
  • 3 instructions codées en 128 bits
  • 64 registres de prédicats
  • dépendances gérées par le matériel
  • (?) Advanced Loads
  • officiellement le compilateur gère le
    parallélisme dinstructions,
  • mais la compatibilité est assurée par le matériel

137
IA 64
  • Langoisse de la page blanche !?
  • -Support matériel au pipeline logiciel
  • Rotating registers numéro logique de registre
    calculé ?
  • Gestion de boucle compteurs spécialisés ?
  • -Fenêtres de registres à taille variable!
  • -Pas dadressage basé
  • -adressage post-incrémenté
  • - (?) Advanced Loads

138
Intel PentiumPro (2, 3) ou comment sabstraire du
jeu dinstruction
139
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

140
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

141
Intel PentiumPro
  • MEM REG ? MEM
  • 4 microoperations (RISC-like)
  • La plupart des instructions sont traduites en 1
    à 4 microopérations en un cycle
  • Certaines instructions ne peuvent pas être
    traduites en un nombre fixé de microopérations
    (boucles, instruction flottantes transcendantales
    , ..)
  • traduites en plusieurs cycles
  • 3 traducteurs en parallèles (1 complexe 2
    simples)

142
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.

143
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

144
Jeu dinstruction est-ce important ?
  • 32 ou 64 bits
  • vers labandon (ou la mutation !) dx86
  • AMD x86-64 !
  • Les performances
  • et x86 ? )
  • en flottant !!
  • à technologie égale ?

145
Jeu dinstruction est-ce important (2) ?
  • x86 traduction en mOpérations
  • 4 cycles perdus !
  • Ou utilisation dun trace cache
  • (on mémorise les mOpérations )
  • x86 pas assez de registres flottants
  • Alpha 21264 2 opérandes 1 résultat
  • le performant des RISCs
  • Mort commerciale
  • Itanium lIA 64 dans lordre
  • 800 Mhz en 0.18 m
  • Alpha 21164 700 Mhz 0.35m (1997)

146
Jeu dinstruction est-ce important (3) ?
  • Pour x86 NON

langage
logiciel
compilateur
jeu dinstructions (ISA)
Traduction en mopérations
micro-architecture
matériel
transistor
147
Jeu dinstruction est-ce important (4) ?
  • IA 64
  • Bien pour le calcul régulier
  • Prochaines implémentations dans le désordre
  • Un grand mystère ?
  • Les processeurs enfouis
  • minimiser la couche de traduction
  • taille, consommation, coût de développement

148
Des erreurs qui ont coûté cher (1)
  • Labsence daccès mémoire octet ou 16 bits sur
    le jeu Alpha (1992)
  • Résultait d une mauvaise analyse de
    lutilisation des octets

Ecriture d un octet 4 instructions 1. Lecture du
mot de 32 bits englobant 2. Décalage de
loctet 3. Merge de 2 mots de 32 bits 4. Ecriture
du mot de 32 bits
149
Des erreurs qui ont coûté cher (2)
  • Lintroduction du CMOV sur l Alpha 21164
    (1994)
  • jolie idée pour un processeur exécutant dans
    lordre
  • Seule instruction à 3 opérandes sur l Alpha
    21264 (1998)

In-Order If R10 then R3R2 Out-of-Order If
P10 then newP3 P2 else newP3OldP3
150
Pourrait coûter cher IA64 et lexécution dans
le désordre
  • IA64 a été conçu pour l exécution dans l ordre
    et essentiellement pour le code régulier
  • exécution conditionnelle de toutes les
    instructions
  • support spécial pour lexécution des boucles
  • fenêtre de registres tournantes
  • le numéro logique du registre est calculé
  • instructions avec jusquà 5 opérandes et 4
    résultats

151
La hiérarchie mémoire
152
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 (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

153
Latence mémoire
  • La latence mémoire nest pas seulement constituée
    par le temps daccès DRAM
  • traduction dadresse
  • traverser les broches du processeur et le bus
    externe
  • multiplexage si plusieurs bancs mémoires
  • Latence mémoire principale 100-200 ns
  • à 1 GHz, ça fait 100 à 200 cycles CPU
  • problème !!

154
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

155
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'un
Write a Comment
User Comments (0)
About PowerShow.com