ARPO - IRISAARPO Architectures des processeurs superscalaires, VLIW et optimisations 2 L’interface...

Preview:

Citation preview

1

ARPO

Architectures des processeurssuperscalaires, VLIW et optimisations

2

L’interface logiciel / matériel

transistor

micro-architecture

jeu d’instructions (ISA)

compilateur

langagelogiciel

matériel

3

Jeu d’instructions (ISA)

� C’est l’interface 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

d’instructions• 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 (ensémantique), lisant ses données et instructions dans unemémoire répondant en 100 ns peut exécuter 4 instructionstoutes les 500 ps

5

Contextes des processeurs hautesperformances

� Processeurs à usage général� serveurs, ordinateurs de bureau, ordinateurs de poche

...� exécute tous types d’applications

� Processeurs « enfouis »� téléphone, télévision, voiture ...� application spécifique� processeur spécialisé ou dérivé d’un processeur à

usage général

6

Besoins en performances

� Performance:� améliorer le temps de réponse => interactivité� applications scientifiques� bases de données� traitement du signal� multimédia� …

� Pseudo-loi vérifiée dans l ’histoire de l’informatique:

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 ?

transistor

micro-architecture

jeu d’instructions (ISA)

compilateur

langage

écrire un meilleuralgorithme

optimisations ducompilateur

améliorer l’ISA

meilleure micro-architecture

nouvelletechnologie

8

Où doit porter l’effort ?

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écuterles codes exécutables sur les anciennes générations

Processeur enfouiattention au coût du processeurcompromis performance / consommation électrique

9

Qu’est ce que la performance ?

� Choisissez votre point de vue !

� Débit d’exécution: faire plus de travail utile pendant un temps donné� serveurs� environnement multiprogrammé

� Temps d’exécution : faire un travail donné dans un temps plus court� point de vue de l’utilisateur

� Faire un travail en un temps déterminé: temps réel, une fois l’objectifrien ne sert d’aller plus vite� consommer moins, circuit plus petit, ..

10

Quelques métriques

Fréquence CPU f : fréquence de l’horloge interne du processeur

dépend de la technologie et de la micro-architecture

Cycle CPU: T = 1 / f

Nombre moyen d’instructionsexécutées par cycle cycles de totalnb

exécutées nsinstructiod' totalnb=IPC

11

pour l’architecte, à application, jeux de données, ISA et compilateurfixés,

+ fréquence fixée: Instruction par Cycle (IPC)

MIPS / megaflops

MIPS =

f⋅= IPCMIPS

nombre moyen de millions d’opérationsvirgule flottante par seconde

Utilisé pour le calcul numérique intensif

megaflops =

nombre moyen de millions d’instructionsexécutées par seconde

12

Comparer des machines différentes !?

Solution 1 : temps CPU

Les MIPS n’ont aucune signification ici car les ISA sont différents

Solution 2 : utiliser une machine de référence

référenceréférencerelatif MIPSonaccélératiMIPS ×=

Exemple: VAX MIPS

13

Accélération locale / globale

Un programme passe 50% du temps d’exécution dans du calculen virgule flottante, et supposons qu’on multiplie par 10 lesperformances du calcul en virgule flottante. Quelle estl’accélération globale ?

tttt2011

201

21 =+=′

81.11120 ==

′=

ttaglobale

14

Accélération locale / globale (2)

supposons qu’on multiplie par 1.5 les performances du calcul enentier et par 4 les performances en virgule flottante. Quelle estl’accélération globale ?

tttt2411

41*

21

32*

21 =+=′

18.21124 ==

′=

ttaglobale

15

Accélération locale / globale (3)

tttt50069

5049*

101

501 =+=′

24.769

500 ==′

=ttaglobale

Un programme passe 98 % du temps d’exécution dans du calculen virgule flottante, et supposons qu’on multiplie par 10 lesperformances du calcul en virgule flottante. Quelle estl’accélération globale ?

16

Loi d’Amdahl

tfractionta

fractiont

tta

amélioréelocale

amélioréeglobale

)1( −+=

′=

locale

amélioréeaméliorée

globale

afractionfraction

a+−

=)1(

1

17

Que dit la loi d’Amdhal

Il faut optimiser d’abord 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 d’image, 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 à l’utilisation envisagée ...

19

Évaluer / analyser les performances

� L ’utilisateur lambda: mesures de temps d’exécution� Comprendre le temps d’exécution: instrumentation

� quelle partie du code contribue le plus au temps d’exécution ?� code instrumenté = code original + code supplémentaire permettant de

récupérer de l’information à l’exécution (exemple: adresses mémoire)� exemples d’outils: 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 l’exécution au lieu d’exécuter réellement� l’ISA simulé peut ne pas être celui de la machine sur laquelle on simule� Exemples de simulateurs: Simplescalar, Shade, SimOS, Impact ...

20

N’oubliez pas

Pour comprendre l’architecture,il faut une vision minimale du contexte technologique

mais aussi économique

Contexte technologique =

Cible mouvante

Contexte économique

« Intel est le plus fort »

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 (< 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/2002: Intel Pentium 4 2.8 Ghz x 3 inst/cycle

22

Utilisation des transistors: évolution

années 70

Étoffer l’ISA pour diminuer lenombre d’instructions exécutées + +

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

années 80

+ +

années 90

+

+ ++

Exécution superscalaire + +

+

RISC

8 => 16 => 32 bitscalcul flottant

32 => 64 bitsmultimédia

+

23

Quelques repères (sept. 2002)

� Fréquence : 900 Mhz à 2.8 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.18µ, 0.130µ, 0.90µ� 10 à 20 millions de transistors de logique� Le reste en mémoire cache: jusqu'à 100 millions de

transistors� 20 à 75 Watts

� > 120 W (Itanium 2)� 400 à 600 broches

� > 1000 bientôt

25

Quelques repères (sept. 2002)

� Processeurs x86 pour PC:�bas de gamme: Duron 1.3 Ghz, 64 $�haut de gamme: Athlon 2.25 Ghz, 397 $

� La mémoire DDR DRAM : 0.20 $ le Mbyte

26

Compatibilité binaire

� Une donnée économique : 500 000 000 dePCs !�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 64bits.� 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

L’angoisse de l’architectedu processeur haute performance

� 400 mm2 de silicium� 3 générations de technologie en avant� que faire pour obtenir les performances ?

� Pipeline� Parallélisme d’instruction� L’exécution spéculative� La hiérarchie mémoire

� demain, le parallélisme de processus

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 plusieursphases 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 d’exécution

� Cypress Sparc� étages EX et MEM confondus

� Aujourd’hui:� Pentium 4: 18 cycles avant l ’étage EX !

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 : 300 ps, 400 ps, 300 ps ,200 ps, 400 ps

• Durée totale = 1600 ps� Sur une machine pipeline : cycle 500 ps = 400 ps + 100 ps

(pour les buffers)• Speed-up potentiel : 3.2

� Limite en multipliant les étages du pipeline : overhead desbuffers

35

Le pipeline: les limites

� Actuellement:� 1 cycle = traversée de 12 à 15 portes logique:

• en gros le temps d ’une addition 64 bits

� Demain:� 6 à 8 portes� Déjà sur le Pentium 4:

• ALU séquencée au 1/2 cycle:– temps d’une addition 16 bits

36

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

37

Vie d’une instruction (MIPS 4000)

� 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’instruction , lecture des opérandes,

vérification des étiquettes� 4.EX (Exécution).

� Exécution des opérations registre-registre ou� calcul de l’adresse virtuelle pour les Load/Store ou� calcul de l'adresse virtuelle de la cible pour les

branchements

38

Vie d ’une instructionsur 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'adressephysique du TLB pour déterminer si il y a eu un défaut decache ou non.

� 8. WB (Write Back) :� Ecriture du résultat de l'instruction dans un registre (s'il y a

lieu).

39

Les aléas dans les processeurspipelines

� Parfois (souvent), l'instruction suivante ne peut pas êtreexé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

40

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

41

Petite digression:De l'avantage d'un jeu d'instruction

régulier pour le pipeline

42

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.

43

Complex Instruction Set Computing(CISC).

� But: une instruction machine = une instruction langage de hautniveau� VAX, Intel 80x86, Motorola 680x0, IBM 360

� sur le VAX, une opération arithmétique (2 opérandes, unré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

44

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.

45

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

46

RISC : Reduced Instruction SetComputer

� Concept mis en forme par Patterson et Ditzel (1980), préexistaitbien 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

47

RISC (2)

� Code relativement volumineux :� C= A+B :

• load A,R2• load B,R3• add R3, R2, R1

� pour une même application:� 1.5 à 2 fois le volume que pour un CISC.

� Avantage : se pipeline bien !� Lecture de l'instruction et décodage en temps constant.� Occupation d'une unité fonctionnelle à un instant précis

48

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 !

49

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

50

RISC et Instructions multimédia:une entorse à la simplicité

� Principe général:

� Les instructions multimédia:

N’implé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

51

Retour au pipeline

52

Les aléas de données

� L’exécution pipeline d'une séquence d'instructions doitproduire 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

53

Read After Write sur les processeursRISC� Le problème:

� Une solution: mais perte de 2 cycles !

54

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

55

Aléas Read After Write sur lesprocesseurs RISC

� Le délai de chargement mémoire

56

Et comment s'en affranchir

� a= b+c ; d= e+f

57

Les aléas WAR et WAW sur lesprocesseurs 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 à uncycle précis du pipeline:� en principe, il n'y en a pas.� Sauf que … (multiplication, division, flottants)

58

Les aléas de données sur lesprocesseurs 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.

59

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

60

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 êtretrès important.

61

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 !

62

Le problème des sauts

En moyenne, un saut se produit toutes les 7 instructions

Pipeline de plus en plus long: > 10 étages (Intel P6, Ultrasparc 3, AMD Athlon…), et même ~20 étages (Intel Pentium 4)

)1(77

−+ N inst / cycleIPC = 0

0.25

0.5

0.75

1

1 2 3 4 5 6 7 8

N

IPC

N= étage auquel les sautssont exécutés

63

Le problème des sauts (2)

En moyenne, un saut se produit toutes les 7 instructions

Pipeline de plus en plus long: > 10 étages (Intel P6, Ultrasparc 3, AMD Athlon…), et même ~20 étages (Intel Pentium 4)

)1(77

−+ N inst / cycleIPC = 0

0.25

0.5

0.75

1

1 2 3 4 5 6 7 8

N

IPC

N= étage auquel les sautssont exécutés

64

La prédiction de branchements

prédiction PC

chargement

décodage

exécution

écriture registre

accès cache

correction simal prédit

On essaie de prédirel ’adresse de la prochaine

instruction

65

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 d’une condition: le branchement peut être pris (onsaute) ou non pris (on passe à l’instruction suivante)

� comparaison entre 2 registres ou comparaison d’un registre avec 0� en général, adresse de saut statique� boucles, if…then…else, switch case, ...

66

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

67

Les branchements dans le pipeline

Adresse de saut relatif

Branchementconditionnel exécuté

Saut indirect exécuté

prédiction

chargement

décodage

exécution

écriture registre

accès cache

Branchement identifié

68

Prédiction de branchementdynamique

� Garder un historique des derniers passages etutiliser cet historique pour anticiper le branchement

� Mise en œuvre: une table lue en même temps que lecache d’instructions

� On prédit:� la cible et la direction des branchements� les retours de procédures� les branchements indirects

69

Les étapes de la prédiction

� Prédire qu’à l’adresse indiquée par le compteur de programme se trouve une instructionde branchement

� Identifier le branchement� branchement conditionnel ou inconditionnel ?� appel de fonction ?� retour de fonction ?

� Prédire l’adresse 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

70

Table de prédictions

prédiction

chargement

décodage

exécution

écriture registre

accès cache

Est-ce un branchement ?Si oui : info table= (type, 0/1,adresse saut) PC <== F (PC, info table)Si non : PC <== PC + 4

PC suivant

PC courant

Mise à jour si mauvaise prédiction

71

Identifier le branchement

BTB (Branch Target Buffer)

étiquettes cibles

PC

= ?

Cible

72

Utilisation du BTB

� On stocke dans le BTB les sauts inconditionnels et les branchements pris� La présence d’une entrée dans le BTB entraîne un saut à l’adresse indiquée par le BTB� En l’absence d’une entrée BTB, on suppose que l’instruction n’est 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 l’entrée manquante� si on a prédit un branchement pris alors qu’en réalité il est non pris, enlever

l’entrée du BTB� si on a sauté à une mauvaise adresse, corriger l’adresse de saut dans le BTB

73

Direction d ’un branchementconditionnel

� Il est plus important de prédire la direction que la cible d ’unbranchement conditionel:

� saut relatif: cible recalculée au décodage

� direction connue: à l ’exécution

74

Prédiction comme la dernière fois

for (i=0;i<1000;i++) { for (j=0;j<4;j++) { : corps de la boucle }}

Branchement mal prédit à lapremière et à la dernière itération

prédictiondirectioneffective

11101110

1110111

1 0

mal préditmal prédit

mal préditmal prédit

75

Le compteur 2 bits

0123

0000

11 1 1

prédit 0prédit 1

� 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 d’un état « fort » (0

ou 3)� Se trompe seulement à la dernière itération d ’une boucle

76

Efficacité du compteur 2 bits

for (i=0;i<1000;i++) { for (j=0;j<4;j++) { : corps de la boucle }}

Branchement mal prédit à ladernière itération seulement

� Le compteur 2 bits divise par 2 le nombre de mauvaises prédictions sur lesbranchements conditionnels� 10 % de mauvaises prédictions sur les conditionnels

77

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 qu’en réalité il est non pris, on décrémentele compteur et on laisse l’entré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 d’entrées que le BTB• taille: 256 à 2k entrées

� quand le compteur passe de l’état 2 à l’état 1, l’entrée dans le BTB n’est plusnécessaire

� Autre avantage: plus important de prédire direction que la cible

78

BHT

poids forts poids faibles

BHT

2n compteurs2 bits

n bits

PC du branchementconditionnel

Le bit de poids fort ducompteur donne la prédiction

Interférences entre branchements:

2 branchements en conflit pourune même entrée.

79

Prédire les retours de fonction

� Utiliser une pile d’adresses de retour� pour chaque call exécuté, on empile l’adresse de retour� pour prédire un retour, au lieu d’utiliser l’adresse fournie par le BTB,

dépiler l’adresse au sommet de la pile et sauter à cette adresse� Peut être utilisé aussi pour prédire les retours d’interruptions et d’exceptions� 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) ...

80

Mauvaises prédictions: 10 % c’est trop

� Les processeurs actuels sont superscalaires� chaque étage du pipeline peut traiter plusieurs instructions

simultanément� Le pipeline d’instructions 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 d’historique

81

Inter-corrélations

B1: SI cond1 ET cond2 …

B2: SI cond1 …

Supposons les 4 cas équiprobables.

La probabilité de bien prédire B2 en se basant sur soncomportement passé vaut 50 %

cond1 cond2 cond1 ET cond2

FFVV

FVFV

FFFV

Supposons maintenant qu’on connaisse le résultat de B1 au moment de prédire B2Si cond1 ET cond2 vrai (probabilité 1/4), prédire cond1 vrai 100 % de succèsSi cond1 ET cond2 faux (probabilité 3/4), prédire cond1 faux 66 % de succèsOn 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, c’est moins bien ...

82

Auto-corrélation

for (i=0; i<100; i++)

for (j=0;j<4;j++)

: corps de la boucle

111011101110

Si les 3 dernières directions sontdes 1, prédire 0, sinon prédire 1

100 % de succès

83

Prédicteur à 2 niveaux d’historique

� Premier niveau d’historique� historique global pour détecter les inter-corrélations

• un seul registre à décalage de L bits contient les directions prises par les Lderniers 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 d’historique� chaque branchement utilise plusieurs compteurs 2 bits, stockés dans une PHT

(pattern history table)� utiliser la valeur d’historique local ou global pour sélectionner le compteur dans la

PHT

84

Prédicteur à historique global

PC du branchement conditionnel

PHT

2n compteurs2 bits

histo L bits

n bits

xor

prédiction 0/1

Prédiction insérée dansl’historique pour prédirele branchement suivant

Appliquer une fonction dehachage entre l’adresse etl’historique (par ex. OUexclusif bit à bit)

85

Prédicteur à historique local

2m historiqueslocaux de L

bits

PHT

2n compteurs 2 bits

histo L bits

Prédiction 0/1

NB: temps d’accès pluslong (2 accès chaînés)

PC du branchement conditionnelm bits

86

Hors contraintes matérielles ...

� Les prédicteurs à deux niveaux permettent de diviser par 2-3 le nombre demauvaises 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

87

En pratique ...

� Beaucoup d’interférences de conflits dans la PHT� « paradoxe » de l’anniversaire:

• soit une classe de 23 élèves, la probabilité d’avoir 2 élèves quifêtent leur anniversaire le même jour est de 50 %

� l’espace de la PHT est très mal utilisé

� Quelle longueur d’historique ?� sur les « grosses » applications, trop d’interfé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 l’application

88

Prédicteurs hybrides : principe

Prédicteur 1

Prédicteur 2

Prédicteur N

Méta-prédicteur

PC dubranchement

••

Prédiction

Quelles étaient lesprédictions correctes ?

89

PHT 4kcompteurs

2 bits

Le prédicteur de l’Alpha 21264

1k historiqueslocaux de 10

bits

PHT 1kcompteurs 3

bits

Méta 4kcompteurs

2 bits

historiqueglobal 12 bits

PC du branchement

prédictiontotal: 29 Kbits

90

Exécution conditionnelle

saute à SUITE si (r1 >= r2)r4 = mem(a)r4 = r4 + 1mem(a) = r4SUITE:

r3 = r1 - r2r4 = mem(a)r5 = r4+1r4 = r5 si (r3<0)mem(a)=r4

r3 = r1 - r2p1 = (r3<0)r4 = mem(a) si p1r4 = r4+1 si p1mem(a)=r4 si p1

a = a + (((x - y)>>31)&1) ;

code initial, avec un branchement move conditionnel prédication

if (x<y) { a++;}

prédication sans supports ?

Attention au surcoût en instructions

91

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

92

Prédiction de branchement:tendance générale

� Schémas de plus en plus complexes� Découplage de la prédiction de l'adresse et

de la direction� Pile de retour pour les procédures� Support dans les jeux d'instructions pour

l’exécution spéculative:�CMOV�prédicats de l ’IA64

93

Le parallélisme d’instructions

94

Toujours plus de puissance : les processeurssuperscalaires, 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)

95

Les processeurs superscalaires

� le droit de lancer les instruction par cycle est géré à l'exécutionpar 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 deprocesseurs à 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)

96

VLIW: Very Long Instruction Word

� Parallélisme contrôlé par logiciel:� Le compilateur est en charge de contrôler les unités

fonctionnelles:• gère les aléas de contrôle, de données et de ressources

� Problème: l’absence de compatibilité binaire

� Non utilisé pour les processeurs généraux, mais populairepour les calculateurs enfouis

97

Architecture VLIW (Very LongInstruction Word)

� Une unité de contrôle émet une instruction longue par cycle.

� Chaque instruction longue initialise simultanément plusieurs opérationsindé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 n’y a pas de matériel pour imposer le respect des dépendances

98

Architecture VLIW

UF

Unité decontrôle

UF UF UF inte

rfac

e m

émoi

reBanc de registres

igtr r6 r5 -> r127, uimm 2 -> r126, iadd r0 r6 -> r36, ld32d (16) r4 -> r33, nop;igtr r6 r5 -> r127, uimm 2 -> r126, iadd r0 r6 -> r36, ld32d (16) r4 -> r33, nop;

99

VLIW: format des instructions

� Le format des instructionscomporte un grand nombre de bitspour contrôler directement l'actiondes multiples unités fonctionnelles.

� Pb: trop de NOPs� Multiflow 27 UFs 1024 bits de

large

� Un groupe d’instructions RISC

� Plus d ’unités fonctionnellesque d ’instructions codées dansun mot VLIW

À l’origine Aujourd’hui

Les instructions sont, en général,compressées en mémoire, mais

expansées dans le cache instruction

100

Un exemple de de jeu d’instructions:Trimedia

� Les instructions:� 5 opérations par instruction� la plupart des opérations sont de la forme:

IF rc opcode op1 op2 -> 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 saufiimm et uimm (load de constante)

� 128 registres généraux de 32bits (r0==0, r1==1)

101

Gardes

� Intérêt : éliminer des branchements

if (x==3) y=y1+y2;if (x==3) y=y1+y2;

cmp r11,3bne suiteadd r2 r3 r4

suite:

cmp r11,3bne suiteadd r2 r3 r4

suite:

iseq r11 3 r10IF r10 add r2 r3 r4

iseq r11 3 r10IF r10 add r2 r3 r4

ALU

r2 r3r10

r4

?

102

« Slots » des instructions

� Les opérations ne peuvent être affectées indifféremment dansn’importe quels emplacements (slots) de l’instructions

� Un slot « contrôle » un sous ensemble des unités fonctionnellescapable d ’exécuter un sous ensemble des opérations del ’architecture

FU Type Slot 1 Slot 2 Slot 3 Slot 4 Slot 5CONST X X X X XALU X X X X XDMEM X XBR. X X X....

103

Ordonnancement statique

� latence d’une multiplication = 3 cycles

VLIW

add r1 r2 r9

nop

add r3 r4 r5

mul r6 r7 r3

RISC-CISC

add r1 r2 r9

add r3 r4 r5

mul r6 r7 r3

3 cycles

104

slot 1 slot 2 slot 3 slot 4 slot 51 add r1,r2,r3 add r5,1,r62 ld [r3],r4345 add r4,4,r4 jmp suite

Ordonnancement statique

add r1,r2,r3ld [r3],r4add r5,1,r6add r4,4,r4jmp suite...

add r1,r2,r3ld [r3],r4add r5,1,r6add r4,4,r4jmp suite...

Ordonnancement

ld [r3],r4

105

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 sonrésultat doivent être remplis avec des instructionsindépendantes du branchement: « branch delay slots »

Aussi utilisés dans les premiers ISA RISC (Sparc, MIPS)

106

Branchements retardés

� Sur le TM1000 le branch « delay slot » des branchements estde 3 cycles:

5 x 3 + 4 = 19 instructions à trouver !

b suiteadd r1,r2,r3…

suite:

b suiteadd r1,r2,r3…

suite:

add r1,r2,r3b suitenop...

suite:

add r1,r2,r3b suitenop...

suite:

107

VLIW: architecture pour lesapplications 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 lesapplications 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

108

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.

109

//isme d ’instruction et« general-purpose »

Les processeurs superscalaires

110

superscalaire « naturel » →→→→ 1995

� les unités fonctionnelles existantes dans les microprocesseursne 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

111

Le degré superscalaire

� Difficile à définir:� « performance qu’on est certain de ne pas

dépasser »� 4 inst / cycles sur presque tous les processeurs

existants� 6 inst / cycles sur Itanium� 8 inst / cycles sur le (ex-futur) Alpha 21464:

� projet abandonné en juin 2001� 16 -32 en 2012 ? :=)

112

Exécution dans l’ordre ou dansle désordre

� Respecter l’ordre du programme ou non:� Ah! Si toutes les latences étaient connues

statiquement,…� Les « partisans » de l ’ordre:

� UltraSparc 3, Itanium� Le compilateur doit faire le travail

� Les « partisans » du désordre:� Alpha 21264, Pentium III et 4, Athlon, Power

(PC), HP-PA 8500

113

Pourquoi l’exécution dansl’ordre

� simple à mettre en œuvre� moins de transistors� moins de temps de développement� horloge rapide (discutable)

� pipeline moins profond� le compilateur « voit » tout:

� la micro-architecture� le programme

Même philosophie que VLIW

114

Le compilateur voit « tout »

� Au sein d’un 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 lafrontière d’un bloc de base:� déroulage de boucle, pipeline logiciel, hyperbloc, ..

115

Pourquoi l’exécution dans ledésordre

� l ’ILP statique est limité dans les codes nonré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 !!

116

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

117

Exécution dans le désordre (1)

� Principe :�exécuter les instructions dès que :

opérandes disponibles et unitésfonctionnelles disponibles

� Mise en œuvre :�une grande fenêtre d'instructions où on

choisit les instructions exécutables (80 surAlpha 21264, plus de 100 sur Pentium 4)

118

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 etdu temps : pipeline profond

119

Renommage de registres:ou comment enlever les fausses dépendances (1)

� Aléas WAW et WAR sur les registres peuvent être évitées parrenommage dynamique des registres.

120

Renommage de registres:ou comment enlever les fausses dépendances (2)

� Plus de registres physiques que de registres logiques dansl ’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

121

Renommage de registres:ou comment enlever les fausses dépendances (3)

1:Op R6, R7 -> R52:Op R2, R5 -> R63:Op R6, R3 -> R44:Op R4, R6 -> R2

1:Op L6, L7 -> res12:Op L2, res1 -> res23:Op res2, L3 -> res34:Op res3,res2 -> res4

4 new free registers

+Old map table

1:Op P6, P7 -> RES12:Op P2, RES1 -> RES23:Op RES2, L3 -> RES34:Op RES3,RES2 -> RES4

New map table

122

Dépendances mémoires

� pour exécuter une écriture sur la mémoire, on abesoin de la donnée à écrire

� en dehors de toute information, toute lecturemé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

123

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épendancessur la mémoire� Moshovos et Sohi, Micro'30, décembre 1997� Chrysos et Emer, ISCA ’26, juin 1998

124

Et les interruptions ?

125

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 ’uneexception).

� Mais le résultat du programme ne doit pas (en général ) dépendre dutraitement de l’interruption:� 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 lesprocesseurs exécutant dans le désordre !!

126

Exécution dans le désordre:Savoir « défaire »

� Mauvaise prédiction de branchement� Mauvaise anticipation d'indépendance� Interruption, exception

� Valider dans l’ordre du programme� Ne rien faire de définitif dans le désordre

127

Savoir « défaire »

� Une copie du fichier de registres est miseà jour dans l'ordre du programme

� ou� Une <<carte>> registres logiques-registres

physiques est sauvegardée

� Les écritures en mémoire sont faites à lavalidation

128

Organisation des unités fonctionnelles

129

Unités fonctionnelles centralisées:une fenêtre d’instruction unique

Register File

Functional Units X instructions choisies à l’exécution dans toute la fenêtre

Pb majeur: implémenter le choix X parmi N

130

Design en clusters: N fenêtresd ’instrustions

C0 C1 C3C2

Les instructions sont réparties entre les clustersdans les étages amont

+ Sélection des instructionssimplifiée

- équilibrage de charge

131

Semi-unifié: fenêtres d ’instructions partype d ’instructions

Ld/St ALU1 BRALU2

132

Petit retour sur le pipeline

133

Le pipeline: de plus en plusprofond

� Plus on stresse l'horloge, moins on en fait en uncycle.

� 1 cycle = traversée d’une ALU + rebouclage� Communications intra-CPU de + en + longues:

� plusieurs cycles pour traverser le composant� Le contrôle est de + en + complexe:

� plus d’instructions en //� plus de spéculation

134

Quelques profondeurs depipeline

� 12-14 cycles sur l’Intel Pentium III� 10-12 cycles sur l’AMD Athlon� 7-9 cycles sur l’Alpha 21264� 9 cycles sur l’UltraSparc

� 10 cycles sur l’Itanium (juin 2001)� 20 cycles sur le Pentium 4 (fin 2000)

� Et ça ne va pas s’améliorer !!

135

Retour au jeu d’instruction

136L ’IA64: un jeu d’instruction« general-purpose »pour le //isme d’instructions

� parallélisme explicite entre les instructions (à laVLIW)

� Support pour l’exécution spéculative

� Compatibilité assurée par le matériel

137

Le jeu d’instruction 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 d’instructions,� mais la compatibilité est assurée par le matériel

138

IA 64

� L’angoisse 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 d’adressage basé� -adressage post-incrémenté� - (?) Advanced Loads

139

Intel PentiumPro (2, 3) ou comments’abstraire du jeu d’instruction

140

De la difficulté du superscalaire sur les jeuxd'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

141

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

142

Intel PentiumPro

� MEM + REG → MEM:� 4 microoperations (RISC-like)

� La plupart des instructions sont traduites en 1 à 4microopérations en un cycle

� Certaines instructions ne peuvent pas être traduites en unnombre fixé de microopérations (boucles, instruction flottantestranscendantales , ..) :� traduites en plusieurs cycles

� 3 traducteurs en parallèles (1 complexe + 2 simples)

143

Intel PentiumPro

� Les microopérations venant de différentes instructions sontexecutées dans le désordre comme sur les processeurssuperscalaires out-of-order RISC�

� renommage de registres� stations de réservations ..� Buffer de réordonnancement� Jusqu'à 5 microopérations par cycle.

144

Pentium 4 et Trace cache: juste uncoup plus loin

� Pourquoi retraduire les instructions x86 à chaque nouvelleutilisation ?� Perte de temps� Consommation électrique

� Idée simple mais logique:� Mémoriser les µopérations dans un cache: le Trace Cache

145

Jeu d’instruction: est-ceimportant ?

� 32 ou 64 bits:�vers l’abandon (ou la mutation !) d’x86�AMD x86-64 !

� Les performances:�et x86 ? :=)�en flottant !!�à technologie égale ?

146

Jeu d’instruction: est-ceimportant (2) ?

� x86: traduction en µOpérations� 4 cycles perdus !� Ou utilisation d’un trace cache

• (on mémorise les µOpérations )� x86 pas assez de registres flottants� Alpha 21264: 2 opérandes 1 résultat

� le + performant des RISCs� Mort commerciale

� Itanium: l’IA 64 dans l’ordre� 800 Mhz en 0.18 µ� Alpha 21164 700 Mhz 0.35µ (1997)

147

Jeu d’instruction: est-ceimportant (3) ?

� Pour x86 NON:

transistor

micro-architecture

jeu d’instructions (ISA)

compilateur

langagelogiciel

matériel

Traduction en µµµµopérations

148

Jeu d’instruction: est-ceimportant (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

149

Des erreurs qui ont coûté cher (1)

� L’absence d’accès mémoire octet ou 16 bits sur le jeu Alpha(1992)

� Résultait d ’une mauvaise analyse de l’utilisation des octets

Ecriture d un octet: 4 instructions1. Lecture du mot de 32 bits englobant2. Décalage de l’octet3. Merge de 2 mots de 32 bits4. Ecriture du mot de 32 bits

150

Des erreurs qui ont coûté cher (2)

� L’introduction du CMOV sur l ’Alpha 21164 (1994):� jolie idée pour un processeur exécutant dans l’ordre

� Seule instruction à 3 opérandes sur l ’Alpha 21264 (1998):

In-Order:If R1=0 then R3=R2Out-of-Order:If P1=0 then newP3= P2 else newP3=OldP3

151

Pourrait coûter cher:IA64 et l’exécution dans le désordre

� IA64 a été conçu pour l ’exécution dans l ’ordre etessentiellement pour le code régulier:� exécution conditionnelle de toutes les instructions� support spécial pour l’exé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

152

La hiérarchie mémoire

153

La mémoire

� Plus une mémoire est grande, plus son temps d’accès est long� 3 types de mémoire

� banc de registres• peu d’entrées, temps d’accès court (cycle), plusieurs ports

� mémoire dynamique (DRAM)• mémorisation d’une charge sur une capacité, 1 transistor par bit• grande densité d’intégration (16-64 Mbits)• temps d’accès long: 50-100 ns• utilisé comme mémoire principale

� mémoire statique (SRAM)• mémorisation par bouclage de 2 portes: 1-4 Mbits• cher• temps d’accès court: 5-10 ns

154

Latence mémoire

� La latence mémoire n’est pas seulement constituée par letemps d’accès DRAM� traduction d’adresse� traverser les broches du processeur et le bus externe� multiplexage si plusieurs bancs mémoires

� Latence mémoire principale: 100-200 ns� à 1 GHz, ça fait 100 à 200 cycles CPU

� problème !!

155

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 etspatiales des applications

156

Principes de fonctionnement d'uncache

� Le cache est une petite mémoire rapide dont le contenu est uneimage d'un sous-ensemble de la mémoire.

� Lors d'une référence à la mémoire, la requête est:

� 1.) présentée au cache� 2.) si la donnée absente alors la requête est présentée à la

mémoire principale (ou à un second niveau de cache).

157

Cache: principe de mise en œuvre

lignes de cacheétiquette (tag) =identificateur de ligne

Load &A

Si l’adresse de la lignecontenant A se trouve dansla table des étiquettes, ladonnée est dans le cache

Espace mémoire

A

158

De l'importance de la hiérarchiemémoire

� Exemple :� 4 instructions/cycle,� 1 accès mémoire par cycle� 10 cycles de penalité sur le cache secondaire� 100 cycles pour la mémoire� 2% de défauts d'instructions L1, 4% de défauts données

L1, 1 référence sur 4 en défaut sur L2

� Pour exécuter 400 instructions : 520 cycles !!

159

Transferts mémoire-cache

� Le temps d ’accès à un bloc de K mots:� T = a + (K-1) b

� Le temps d'accès au premier mot est plus long:� envoi de l'adresse + retour� Structure des mémoires RAM dynamiques

� On n'attend pas la fin du transfert complet des mots avantd'utiliser un mot du bloc chargé:� le mot en défaut est en général chargé en premier

160

Placement des données dans lescaches

� Chaque bloc ne peut être chargé qu'à une seule place dans lecache: cache� DIRECT MAPPED ou à correspondance directe.

� Chaque bloc peut être chargé à n'importe quelle place dans lecache:� FULLY ASSOCIATIVE ou totalement associatif.

� Chaque bloc ne peut être chargé qu'à un nombre limité deplaces (ensemble ou SET):� SET ASSOCIATIVE ou associatif par ensembles.

161

Cache direct-mapped

162

Cache set-associatifs

163

Cache fully-associatifs

164

Remplacer un bloc

� Lorque l'ensemble est plein, quel bloc rejeter en mémoire ?� RANDOM: les candidats sont choisis de manière aléatoire� LRU: Least Recently Used

� Random:� plus simple à mettre en oeuvre

� LRU:� meilleur en général� effets bizarres

165

Ecrire

� Toute écriture doit être répercutée dans la mémoire:� Tout de suite: WRITE THROUGH� ou plus tard: WRITE BACK ( quand le bloc est évincé du

cache)� WRITE BACK:

� moins de trafic sur la mémoire� problème de cohérence entre la mémoire et le cache

� WRITE THROUGH:� trafic important vers la mémoire

166

Quelle taille de bloc ?

� Blocs longs:� bénéficie de la localité spatiale� réduit le nombre de blocs et perd de la place

� Blocs courts:� nombreux défauts sur des blocs contigus

� Expérimentalement :� 16 - 64 bytes pour les caches 8-32 Kbytes

167

Plusieurs niveaux de caches

� Une hiérarchie de caches:� des capacités de plus en plus grandes� des temps d'accès de plus en plus longs.

� L2 devenu la règle générale:� sur le composant ou sur le même module que le processeur� temps d ’accès: 7-15 cycles

168

Plusieurs niveaux de cache (2):memoire - processeur - L2

169

Plusieurs niveaux de cache (3):memoire - L2 - processeur

170

Problème d’inclusion

� doit-on assurer que toute donnée présente dans le cache depremier niveau est aussi présente dans le cache de secondniveau?� Mémoire - processeur - L2 : non

• L ’architecture des années 90� Mémoire - L2 - processeur : oui

• Aujourd’hui généralisé: le processeur ne voit pas lestransactions sur le bus.

171

Un défaut de cache n’arrête pas(complètement) le processeur

� Cache non-bloquant:� en présence d’un défaut on envoie la requête vers le niveau

suivant et on continue !

� Préchargement:� on anticipe les prochaines requêtes (par matériel ou par

logiciel)

172

Quelques paramêtres

� Intel Pentium : 2 * 8K bytes, 2-way, 60 (1993)-233 Mhz (1997)� MIPS R4400 : 16K Inst + 16K data, DM, 100 (1992) 250 Mhz (1996)� Alpha 21164 : 2* 8K (DM) + L2 96 Kbytes (3-way) 266 (1995) Mhz

700 Mhz (1998)� Intel Pentium III: 2* 16K, 4-way, 1 Ghz (2000)+ L2 256-512K-1M� Alpha 21264 : 2 * 64 Kbytes (2-way), 500 Mhz (1997) 1 Ghz (2001)

� Amd Athlon: 2*64K, 2-way, 1,4 Ghz (2001) + 256K L2� Intel Pentium 4: 8K + trace cache + 256K L2, 2 Ghz (2001)

� Intel Itanium: 2 * 16K + 96 K L2 (+ 1-4M L3), 800 Mhz (2001)

173

Caches primaires:tendance générale

� 1-2 cycles pour lecture ou écriture� multiples accès par cycle� non-bloquant� associatif faible degré

� Restera petit !� Une exception: HP-PA 8500

174

Caches secondaires : tendancegénérale

� Il n’est plus question de s’en passer !� Généralisation on-chip ou sur le module� Accès pipeliné

� latence courte : 7-12 cycles� bus 128 bits, devrait s’élargir� temps de cycle: 1-3 cycles processeurs

� La contention sur le cache L2 devient un goulotd’étranglement

175

Mémoire virtuelle

� L ’adresse virtuelle est calculée par le programme. Cette adresse est traduite àtravers une table de pages en adressse physique� permet de faire cohabiter plusieurs processus� permet de « voir » un espace d’adressage plus grand que celui par la

mémoire physique� convertir les adresses logiques en adresses physiques

� en général, combinaison de techniques matérielles et logicielles� l’unité de mémoire sur laquelle on travaille = page mémoire� mécanisme de pagination

• les pages qu’on ne peut pas stocker en DRAM sont stockées surdisque

• 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 enDRAM et on met à jour la table des pages

176

Pagination

� Tailles de page typiques: 4 Ko-8Ko-64Ko� Table des pages 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 d’offset), soit 220

pages logiques� Si on devait consulter la table des pages pour chaque accès mémoire, le temps

de traductions serait dominant� On utilise un TLB (translation look-aside buffer)

� TLB = cache de traduction d’adresses intégré sur le processeur� contient un sous-ensemble de la table des pages� typique: 64/128 entrées, fully-associative

177

TLB

Exemple: adresses logiques 32 bits, pages de 4 Ko, TLB 64 entrées

numéro de page logique offset page12 bits20 bits

64 numéros depages physiques +

qq bits de statut

64 tags =numéros de page

logique

adresselogique

numéro de page physique offset pageadressephysique

12 bits

TLB

178

Défauts de TLB

� Gestion par matériel (x86) ou logiciel (SparcV9, Alpha, MIPS)� Logiciel: sur un défaut de TLB, une exception est générée� Matériel: déroule un automate

� Servir un défaut de TLB:� le système consulte la table des pages� si la page est présente en mémoire, le système met le TLB à jour

puis rend la main au programme• latence: quelques dizaines à quelques centaines de cycles

� si la page n’est pas présente c’est un défaut de page• latence: centaines de milliers de cycles (accès disque)

179

Mémoire virtuelle et caches

� adresses virtuelles ou physiques pour l ’accès au cache?� Adresse virtuelle

• pb des synonymes sur les pages accessibles en écriture– des pages virtuelles distinctes projetées sur la même

page physique– plusieurs copies de la même donnée dans le cache

� Adresse physique• accès au TLB avant d’accès au cache ..

� Souvent:• cache L1 données: adresse virtuelle /tag physique• cache L1 instructions: tag physique• cache L2: adresse physique / tag physique

180

Index virtuel / tags physiques

� Permet l’accès au cache et au TLB en //� lecture du cache avec l’adresse virtuelle� l’accès TLB se fait en parallèle avec l’indexage du cache� la comparaison sur les tags s’effectue avec l’adresse physique

� Chemin critique:� L ’accès au TLB

• besoin de l ’adresse physique pour la comparaison des tags

181

Adresse physique / Tag physique

� Une petite astuce pour faire la traduction en //:� utiliser l ’offset comme index !

182

La mémoire principale

� Loin, trop loin du processeur:� 100-150 ns de temps d ’accès� plusieurs centaines d’instructions

� Temps d ’accès:� défaut L1 + logique vers L2� défaut L2 + logique vers le bus mémoire� bus mémoire� composant mémoire� et retour

183

la mémoire principale sur lebus système

184

Mémoire principale et débit.

� Problème de débit aussi:� Largeur du bus: 8-16 bytes� Structures des composants mémoires:

• accès séquentiel plus rapide qu ’accès aléatoire� Débit des composants mémoires:

• Entrelacement des bancs (mais plus de logique àtraverser)

� Fréquence du bus:• Seulement une fraction du cycle processeur

185

Mémoire principale en connexiondirecte

186

Mémoire principale en connexiondirecte (2)

� Connexion directe:� pas d ’arbitrage� bus courts: fréquences élevées (jusqu à 800

MHz)� utilisation de composants mémoire spécialisés

(Rambus)

� Mais difficile d ’implémenter la cohérence de caches

187

Un processeur récent: l ’Alpha 21264

(bien documenté par le constructeur !)

188

l’Alpha 21264

� COMPAQ / DEC� Disponible depuis fin 1998

� Quelques caractéristiques technologiques� transistors : 15 Millions (6 M logique, 9 M caches)� fréquence : 700 MHz (0.25 micron) -> 1 Ghz (0.18 micron)� puissance dissipée : 75 W (2 V)

� Marché visé� stations de travail, serveurs

189

21264: caractéristiques générales

� adresses logiques sur 64 bits� pipeline de 7 étages pour les instructions de calcul entier� processeur superscalaire out-of-order de degré 4� cache de données 64 Ko 2-way SA write-back (ligne 64 octets)� cache d’instructions 64 Ko 2-way SA (ligne 64 octet)� TLB données et TLB instructions de 128 entrées chacun� bus cache secondaire 128 bits� bus système 64 bits� 4 ALUs et 2 unités flottantes

� 2 des ALUs peuvent calculer les adresses load/store, et 2 load/store peuvent accéderau cache par cycle

� au maximum 6 instructions peuvent s’exécuter simultanément (4 int + 2 flottantes)

190

21264: disposition sur silicium

cache d’instructionset prédicteur de

ligne

cache dedonnées

D-TLB (dupliqué)contrôlecache

donnéesgén.PCpréd br

div/sqrt

fp add

reg fp

fp mulfp map interface

L2

tamponload/store

I-TLB

tamponamorç

fp

ALU

ALU

ALU

ALU

ROB

tamponamorç

int

int map

regint

regint

bus load/store

191

Le pipeline du 21264

charg. extrait renom. lance lit reg exec écrit int

lit reg adresse cache 1 cache 2

lit reg FP 1 FP 2 FP 3 FP 4

PC répare

écrit int

écrit fp

pénalité mini si branch mal prédit: 7 cycles

attente éventuelle

calculentier

load/store

calculflottant

lectureligne

extrait bloc/ transit

insert dansfenêtre

1 2 3 4 5 6 7

5 6 7 8 9

5 6 7 8 9 10

load-use: +2 cycleson peutlancer ?

écrit fp

10transit

load-use: +3 cycles

192

21264: prédiction et chargement

� Étage 0: prédiction de ligne� chaque ligne du cache d’instructions comporte un pointeur vers la prochaine ligne de cache (index et

prédiction de banc 0/1) (accès < 1 cycle)� on commence la prédiction de branchement

• rem: prédicteur hybride pour les conditionnels (cf. transparent 115)� Étage 1: chargement et génération PC

� on charge la ligne prédite à l’étage précédent et les 2 tags ayant le même index que la ligne (cache2-way SA)

� la prédiction de branchement commencée au cycle précédent est utilisée pour générer le PC(complet) du bloc en cours de chargement

� comparaison d’index: si désaccord entre étages 0 et 1, c’est le prédicteur de branchement qui« gagne »: on recharge la ligne (bulle dans le pipeline)

• sauf pour les sauts indirect qui ne sont pas des retours� Étage 2: comparaison du PC avec les 2 tags chargés à l’étage précédent

� 2 bulles si mauvaise prédiction de banc� détection éventuelle d’un cache miss

193

21264: prédiction et chargement

Cache 2-waySA

préd.ligne

génération PC

compare index

bloc d’instructions

tags bancs0 et 1

prédhyb

préd. ligne tags

compare tags

PC

Bloc BBloc A

préd. br.

Bloc CÉtage 0Étage 1Étage 2

194

Clusters du 21264

80 registresphysiques (int)

ALU 1 ALU 2

80 registresphysiques (int)

ALU 3 ALU 4

+1 cycle

195

21264: tampons d’adresses

� En fait, séparé en 2 tampons: un tampon de load et un tampon de store de 32entrées chacun

� Les instructions dans chaque tampon sont ordonnées� on associe à tout load/store une entrée dans le tampon d’adresses

correspondant

� Le tampon de store comporte également les données à écrire� les store peuvent s’exécuter OOO mais écrivent dans le tampon de store� les données du tampon sont recopiées dans le cache au retirement, dans

l ’ordre séquentiel

� L ‘ ordre total des load/store est maintenu par matériel entre les deux tampons

196

21264: exécuter les load sans attendre

� Les load peuvent s’exécuter dans le désordre vis à vis des store

� Quand un load accède au cache, on consulte en // le tampon de store� si un store plus ancien a écrit à la même adresse, c’est la donnée dans le

tampon de store qui est mise sur le bus et qui est envoyée au load

� Si un store s’exécute et qu’on trouve qu’un load plus récent a déjà accédé à lamême adresse, le load et les instructions suivantes sont effacées du processeurpuis rechargées� comme une mauvaise prédiction de branchement: on essaie d’éviter� une table de 1k * 1 bits, indexée avec le PC du load, permet de prédire si le

load dépend d’un store ou pas� si on prédit qu’il sera dépendant, on attend que tous les store antérieurs au

load soient exécutés

197

21264: défauts de cache

� 8 défauts de cache de données peuvent être en cours de résolution� Les requêtes peuvent être servies dans le désordre� Sur un miss, la ligne remplacée (si modifiée depuis qu’elle est dans le

cache) est mise dans un tampon de 8 lignes en attente d’écriture versle cache L2

� miss L1 / hit L2:� latence minimum de résolution = 12 cycles (SRAM 6 cycles + 4

cycles de remplissage + 2 cycles pour l ’instruction)� bande passante bus: 16 octets pour 1.5 cycles CPU

� miss L2� latence typique: 160 ns (DRAM 60 ns)

• 96 cycles CPU à 600 MHz� bande passante bus système: 8 octets pour 1.5 cycles CPU

198

Le monoprocesseur à usage général

Synthèse pour aujourd’hui et problèmes pour demain

199

Les tendances (1)

� plus d'instructions par cycle ?� au delà d'un bloc de base par cycle ?� 4 en 1990, 6 en 2001� pas beaucoup de changement en apparence

� mais exécution dans le désordre:� de plus en plus de prédictions de branchement et

spéculation sur l ’indépendance des accès mémoires� pipeline de séquencement très long:

� de moins en moins de fonctionalités par cycle� temps de transit proportionnellement + grand� pénalité de mauvaise prédiction de branchement ?

200

Les tendances (2)

� Caches premier niveau multiport, non-bloquants, accédés en 1-2 cycles:� compromis temps d ’accès, taille, associativité

� Cache second niveau pipeliné non-bloquant :� latence 10-15 cycles� débit 16-32 octets par cycle

� Vers les mémoires en connexion directe

201

Doubler le degré: pas si simple !

� Problème de performance:� juste pas assez d ’instructions indépendantes� prédicteurs de branchement pas assez précis

� suivant les sources:• 20-50 % de performances en plus

� Problème de mise en œuvre:� ce n ’est pas simplement dupliquer les unités fonctionnelles

202

Doubler le degré superscalaire (2)

� Unités fonctionnelles� Surface de silicium: 2x

� consommation: 2x

� même latence

� Registres :� Surface de silicium : 8x� consommation: 3-4x� accès plus long

� Cache L1:� 2 fois plus de ports� pb sur surface,

consommation et tempsd’accès

� Réseau de bypass:� multiplexeurs plus larges

>2x� communications plus

lointaines

203

Le problème des registres

� Besoin d’un registre physique par instruction « en vol »� plus de 100 instructions en vol sur le Pentium 4� 80 sur l ’Alpha 21264

� Besoin de plus de registres physiques quand degrésuperscalaire augmente:� > 256 si degré 8 et pipeline profond

� Organisé en fichier de registres:� physiquement toutes les unités fonctionnelles y lisent leur(s)

opérande(s) et écrivent leur(s) résultat(s)

204

La surface du fichier de registres

205

Fichier de registres distribué4 copies identiques32 Watt (x 3.2)5 cycles (+1)256 x 960 w2 x W (x10)

Fichier de registres centralisé40 Watt (x 4)7 cycles (+3)256 x 768 w2 x W (x 8)

Centralisé 4 voies

10 Watt

4 cycles

128 x 192 w2 x W

Degré 8 contre degré 4100nm, 5 Ghz ( 2003-2004)

8 voies

206

Et demain ?

207

Que faire avec un milliard detransistors ou plus?

� monoprocesseur + exécution spéculative

� Le parallélisme de processus:�multiprocesseur à mémoire partagée�processeur SMT

208

Un monoprocesseur +exécution spéculative

� superscalaire 16 ou 32 voies� hyperspéculation:

� branchements, dépendances, données ..

� Les défis:� la qualité de la prédiction� les temps de communication sur le composant� la contention sur les structures:

• caches , registres, ...

209

Le //isme de processus:à la croisée des chemins

� Le parallélisme « gros grain » arrive sur lecomposant

� Un multiprocesseur on-chip ?• IBM Power 4 ( fin 2001)

� Simultaneous Multithreading ?• Compaq Alpha 21464

– Abandonné en juin 2001• Pentium 4 est SMT

210

Un multiprocesseur on-chip

� Mettre un multiprocesseur sur un mêmecomposant:�Réplication simple�Partage de cache L2 et de l ’accès

mémoire

� Mais la performance sur un processus ?

211

multiprocesseur on-chip:IBM Power 4 (2001)

� Marché visé: les serveurs

� 2 processeurs superscalaire 4 voies sur uncomposant:� cache secondaire partagé

� 4 composants sur un même MCM (multichip module)� bande passante énorme sur le MCM

212

La vision du programmeur

213

Simultaneous Multithreading(SMT)

� Les UFs d’un processeur superscalairessont sous-utilisées

� SMT:� Partager les UFs d’un processeur superscalaire

entre plusieurs processus� Avantages:

� 1 processus a toutes les ressources s ’il est seul� partage dynamique des structures (caches,

prédicteurs, UFs) quand plusieurs processus

214

SMT: Alpha 21464(annulé en juin 2001)

� Un processeur superscalaire 8 voies� Performance ultime sur un processus

� Si multiprocessus, 4 processus se partagentles unités fonctionnelles:�Surcoût pour ce partage 5-10 %

215

La vision du programmeur

216

Le SMT: les avantages

� Partage dynamique des ressources

� Tolérance à la latence mémoire

� Thread d ’un même programme:� communication ultra-rapide:

• données partagées dans le cache L1 !� Préchargement implicite:

• données, mais aussi instructions et prédiction

217

SMT: la difficulté

Il faut implémenter un processeur superscalaire très large

218

Le processeur de l ’an 2010 ?

� Jeu d'instruction x86+ ?�extension pour mode 64 bits

� (Multi ?) Superscalaire 10 voies SMT

� Exécution dans le désordre très aggressive

219

La vision du programmeur !

220

Les grandes questions

� Saura-t-on maitriser la complexitédu design?�Temps de mise au point�consommation électrique

� Qui saura programmer cesmonstres ?

Recommended