You are on page 1of 90

1

Fonctionnement et performance
des processeurs
Eric Cariou
Universit de Pau et des Pays de l'Adour
Dpartement Informatique
Eric.Cariou@univ-pau.fr
2
Plan

Fonctionnement des processeurs

Units de calcul et de commande

Registres

Modes d'adressage mmoire

Bus internes

Architecture X bits

Optimisation des performances

Pipeline

Prdiction de branchement

Jeux d'instructions

Architectures superscalaire, multi-core

Exemple avec Athlon 64

Conclusion sur volution des performances


3
Units de calculs

Units ralisant des calculs : 3 types

Calculs logiques et arithmtiques sur les entiers : ALU

Calculs sur les flottants : FPU

Calculs multimdia

UAL (ALU : Arithmetic and Logic Unit)

La plus importante, utilise par tous les programmes

Calculs simples sur les entiers

Calculs logiques (comparaison, OR, NOT, ...)

FPU (Floating Point Unit)

Calculs sur des flottants

Fonctions mathmatiques avances : sqrt, sin ...


4
Units de calcul

Unit multimdia

Diffre selon le type et la marque : Intel MMX et SSE,


AMD 3D Now ! ...

Fait principalement des calculs vectoriels

Excution en parallle d'une mme instruction sur plusieurs


donnes

Un processeur peut intgrer plus d'une unit de


chaque type

Exemple : AMD Athlon 64

3 ALU et 3 FPU : calculs en parallle possibles


5
Unit de commande

Unit qui coordonne le fonctionnement des


autres lments

Dans le but d'excuter une squence d'instructions


(le programme)

Pour excuter une instruction, 2 cycles se


succdent

Cycle de recherche de l'instruction

Cycle d'excution de l'instruction


6
Unit de commande

Constitue de plusieurs lments

Compteur Ordinal (CO) : registre contenant l'adresse du mot


mmoire stockant le code de la prochaine instruction

Registre d'Instruction (RI) : reoit le code de la prochaine


instruction excuter

Le dcodeur : partir du code de l'instruction, dtermine


l'opration excuter

L'horloge : pour synchroniser les lments

Le squenceur : coordonne le tout

Utilise galement pour l'accs en mmoire

Registre d'Adresse (RA) : registre contenant l'adresse du mot


accder en mmoire

Registre Mmoire (RM) : registre contenant le mot lu ou


crire en mmoire
7
Unit de commande
RA
Mmoire
RM
UAL
Accumulateur
RI CO
Squenceur
Dcodeur
Horloge
Unit de commande
1
2 / 8
3
4
6
7
9
10
5
8
Unit de commande

Exemple dans le cas d'une opration utilisant


une seule oprande en mmoire centrale

Cycle de recherche

(1) CO contient l'adresse de l'instruction excuter :


on la place dans RA

(2) Transfert de la donne stocke en mmoire


l'adresse indique dans RA dans RM

(3) La donne stocke dans RM est place dans RI

Cette donne est le code de l'opration excuter +


adresse de l'oprande
9
Unit de commande

Cycle de recherche (suite)

(4) Le dcodeur lit cette donne et dtermine

L'adresse en mmoire de l'oprande

Le type d'opration qui doit tre excuter

(5) Le dcodeur place dans RA l'adresse o est


stocke l'oprande en mmoire

(6) Le dcodeur informe le squenceur du type


d'opration excuter

(7) CO est incrment pour pointer vers la prochaine


instruction rechercher
10
Unit de commande

Cycle d'excution

(8) L'oprande est lue en mmoire et place dans RM

(9) Le contenu de RM est plac dans un


accumulateur ou un registre qui stocke les donnes
en paramtres des oprations

(10) Le squenceur demande l'ALU d'excuter


l'opration
11
Unit de commande

Cycle d'excution, variantes selon les instructions

Si opration de branchement (saut dans la squence


d'instructions)

On place le contenu de RM dans CO

Pas de calcul raliser

Si opration d'criture en mmoire du rsultat d'une


opration prcdente

On place le contenu d'un registre de l'accumulateur dans RM


pour l'crire ensuite en mmoire

Pas de calcul raliser


12
Unit de commande : horloge

Horloge

Dfinit le cycle de base : cycle machine (clock cycle)

Utilise pour synchroniser chaque tape des cycles


de recherche et d'excution

Temps excution d'un cycle de recherche ou


d'excution

Prend un certain nombre de cycles de base

Cycle CPU = temps d'excution minimal d'une


instruction (recherche + excution)
13
Unit de commande : squenceur

Squenceur

Automate gnrant les signaux de commande contrlant


les diffrentes units

2 faons de raliser cette automate

Squenceur cbl

Squenceur micro-programm (firmware)

Avantages

Cbl : un peu plus rapide

Micro-programm : plus souple et plus simple raliser


14
Unit de commande : squenceur

Squenceur cabl

Circuit squentiel ralis avec des portes de base

Pour chaque instruction excutable

Un sous-circuit ralisant le contrle des lments pour


raliser l'opration

Un seul des sous-circuits est activ selon le code


renvoy par le dcodeur

Squenceur micro-programm

Une ROM contient des micro-programmes constitus


de micro-instructions

Le squenceur sait excuter en squence des micro-


instructions
15
Registres

Registre = mots mmoire internes au processeur

Les registres de fonctionnement

Compteur Ordinal (CO), Registre Instruction (RI), ...

Accumulateur

Registres internes l'UAL

Stockent les oprandes et le rsultat d'un calcul

Registres gnraux

Registres accessibles par le programmeur

Servent stocker

Des valeurs souvent utilises

Des rsultats intermdiaires

Sans avoir besoin de repasser par la mmoire

Gain de performance et de temps



16
Registres

Registres d'indice ou d'index (XR : indeX Registers)

Utiliss pour parcourir plus rapidement des tableaux

Jeu d'instruction particulier pour incrmenter et


dcrmenter leurs valeurs

Possibilit d'incrmentation ou dcrmentation


automatique de ces registres aprs leur utilisation

Registres de pile (SP : Stack Pointer)

Pour simuler une pile dans la mmoire centrale


17
Registres

Registres d'tat (PSW : Program Status Word)

Ensemble de bits reprsentant chacun un tat


particulier (drapeau ou flag)

C : dpassement de capacit aprs un calcul de l'UAL

Z : rsultat de l'opration est gal 0

Jeu d'instruction pour tester ces drapeaux

Exemple : saut si Z = 0

La plupart des registres sont manipulables par


programme (voir le cours sur l'assembleur)
18
Modles d'accs mmoire

Le processeur excute des oprations

Avec des oprandes comme paramtres

Plusieurs combinaisons possibles

Exemple sur une opration d'addition : A = B + C

A, B et C tant des valeurs se trouvant en mmoire centrale

Peut-on y accder directement ?

Doit-on les placer avant dans des registres gnraux ?

Doit-on les placer dans l'accumulateur de l'UAL ?

Plusieurs modles gnraux d'accs mmoire

Notation : (m,n) avec

m : nombre maximum d'oprandes par opration (addition ...)

n : nombre d'oprandes accessibles directement en mmoire


centrale pour une opration
19
Modles d'accs mmoire

Modle mmoire-mmoire (3,3)

ADD @A, @B, @C

3 oprandes, toutes accessibles directement en mmoire

Modle mmoire-accumulateur (1,1)

LOAD @B
ADD @C
STORE @A

L'instruction LOAD place le contenu lu dans le registre


accumulateur de l'UAL

L'accumulateur contient ce rsultat aprs le calcul, le


STORE le place l'adresse mmoire prcise

Fonctionnement des premiers CPU 8bits


20
Modles d'accs mmoire

Modle mmoire-registre (2,1)

LOAD R1, @B ; R1 = contenu adr. B


ADD R1, @C ; R1 = R1 + contenu adr. C
STORE R1, @A ; place contenu R1 adr. A

Variante (2,0) possible avec ADD R1,R2

Fonctionnement classique des processeurs 16 bits

Modle pile (0,0)

Utilisation d'une pile pour stocker les oprandes et les


rsultats

PUSH @B
PUSH @C
ADD
POP @A
21
Modles d'accs mmoire

Modle registre-registre (3,0)

Aucun accs direct en mmoire pour une opration


de calcul

Tout passe par des registres

LOAD R1, @B
LOAD R2, @C
ADD R3, R1, R2
STORE R3, @A

Architecture typique des processeurs RISC

Architecture dominante actuellement

Appel aussi modle chargement-rangement


22
Bus internes au CPU

Au coeur du CPU, utilisation de bus

Pour envoi de donnes entre les lments

Contrleur mmoire, units de calculs, registres ...

Pour envoi d'adresse

Lecture/criture en mmoire ou dans un registre ...

Pour commander, coordonner les lments

Chemin de donnes

Units grant le traitement des donnes

Units de calculs

Registres de tout type

Pour modle accs mmoire (3,0) on aura 3 bus de


donnes dans ce chemin
23
Bus internes au CPU
24
Bus internes au CPU

Figure transparent prcdent

Fonctionnement trs simplifi et schmatique d'un CPU de type


chargement-rangement

Les bus

S1 et S2 : entres de l'UAL

R : rsultat, sortie de l'UAL

@ : bus d'adresse pour accs en mmoire centrale (via le cache)

Data : bus de donnes crire ou lues dans mmoire centrale

Manque le bus de commande entre tous les lments

Autres lments

+ : incrmentation automatique du CO pour pointer sur la


prochaine instruction

A, B et C : registres internes de l'UAL


25
Architecture X bits

Processeurs sont souvent diffrencis selon leur


architecture 16, 32 ou 64 bits

Historiquement : taille des registres (8, 16 bits...)

Mais dans processeurs rcents : registres de toute taille


(16, 32, 64, 80 ou 128 bits)

Selon que l'on manipule des entiers, des adresses, des flottants,
des vecteurs ...

Norme de fait de nos jours

Taille des registres gnraux

Un processeur 64 bits a des registres gnraux de 64 bits


26
Architecture X bits

Consquences

Units de calcul entier doivent grer des nombres de


mme taille que les registres gnraux

Bus internes doivent avoir aussi cette mme taille

Registre gnral peut contenir une adresse mmoire

Dfinit alors aussi la taille maximale de mmoire


adressable par le processeur

32 bits : 2
32
octets = 4 Go
64 bits : 2
64
octets = 18 Millions de To

En pratique : codage d'adresses sur moins de bits

AMD Athlon 64 : 48 bits = 256 To thorique mais 1 To en pratique


27
Optimisation et augmentation des
performances des processeurs
28
Augmentation des performances

Recherche permanente de l'augmentation des


performances des CPU

volution des architectures

Points principaux de cette volution

Frquence de fonctionnement

Mmoire cache

Paralllisation et optimisation des squences d'instructions

Pipeline

Architectures superscalaires

Jeu d'instructions

Chaque point influence en bien ou en mal un autre

Recherche du meilleur compromis


29
Frquence

Temps d'excution d'une instruction

Cycle CPU

Ide : diminuer ce cycle

Augmentation de la frquence de fonctionnement

Avantages

Plus d'instructions excutes en moins de temps

Problmes

Technologiques et physique

Temps de propagation des signaux lectriques

Dgagement de chaleur
30
Frquence

Problmes (suite)

Temps de propagation

Les signaux mettent un certain temps traverser les


lments du processeur ou circuler sur un conducteur

Solution

Diminuer la finesse de gravure

Conducteurs plus courts, propagation plus rapide

Diminue le dgagement de chaleur

Chercher d'autres technologies de ralisation de


transistors et des conducteurs
31
Frquence

Problmes (suite)

Architecture, fonctionnement interne influence galement


la monte en frquence

Certaines oprations effectues par le processeur ne sont plus


ralisables en un temps trop court

En gnral, pour une gnration/architecture de


processeur, on a une plage de frquences

Exemple avec CPU Intel : passage du P3 au P4

Intel P3 : de 450 Mhz 1.3 Ghz

Intel P4 : de 1.5 Ghz 3.8 Ghz et plus

Avec modification intermdiaire de l'architecture du P4

Changement important d'architecture pour monter en frquence


32
Mmoire cache

Processeur a besoin d'un dbit soutenu en lecture


d'instructions et de donnes

Pour ne pas devoir attendre sans rien faire

Utilisation de mmoire cache

Mmoire intermdiaire trs rapide entre la mmoire


centrale et le processeur

Avec algorithmes pour deviner et mettre dans le cache


les donnes/instructions avant que le CPU en ait besoin

Recherche bon compromis entre tailles, types de caches,


niveaux de cache, technique d'accs au cache ... pour
optimiser les performances du cache

Voir le cours sur les mmoires


33
Pipeline

Principe du pipeline par l'exemple

Restaurant Universitaire

On passe, dans l'ordre devant 4 lments

Un prsentoir pour les entres

Un prsentoir pour les desserts

Un prsentoir pour les plats de rsistance

Une caisse
Entres Caisse Plats Desserts
Chane de service de repas
34
Pipeline

2 modes d'utilisation pour se servir un repas

Une seule personne la fois dans toute la chane de


service

Quand elle a pass toute la chane et est sortie, une autre


personne entre se servir

Plusieurs personnes la fois, en dcal

Une personne chaque prsentoir/lment

Une personne passe l'lment suivant quand il est libre et


qu'elle en a fini avec son lment courant
Entre Des. Plat Caisse
Entre Des. Plat Caisse
Entre Des. Plat Caisse
Entre Des. Plat Caisse
Pers. 1
Pers. 2
Pers. 3
Pers. 4
temps
35
Pipeline

Intrts du deuxime mode

Plusieurs personnes se servent en mme temps

Gain de temps : plus de personnes passent pendant


une mme dure

Meilleure gestion des lments : toujours utiliss

Inconvnients du deuxime mode

Plus difficile de faire demi-tour dans la chane


d'lments

Ncessite des synchronisations supplmentaires et


des lments dont le parcours prend un temps
proche pour une bonne optimisation
36
Pipeline

Dans un processeur, utilisation d'un pipeline pour excution


d'une opration

Une opration comporte plusieurs sous-oprations

Pipeline pour excution de ces sous-oprations

Une sous-opration utilise une sous-unit du processeur qui


n'est pas utilise par d'autres sous-oprations (si possible...)

Exemple de pipeline simple (fictif)

LE : Lecture de l'instruction en mmoire

DE : Dcodage de l'instruction

CH : Chargement des registres sources dans l'unit de calcul

EX : Excution du calcul

ENR : Enregistrement du rsultat dans le registre destination


37
Pipeline fictif dtail des tapes

En reprenant le chemin de donne prcdent, en modle


chargement-rangement

LE : lecture instruction

Accs en mmoire pour lire le mot mmoire plac l'adresse


contenue dans CO et correspondant la prochaine instruction

Rsultat plac dans RM

DE : dcodage instruction

Copie de RM dans RI puis dcodage de l'opration

CH : chargement des registres

Pour un calcul

Chargement des registres A et B partir des registres du banc

Pour un accs en mmoire

Chargement de RA partir d'un registre du banc

Dans le cas d'une criture en mmoire, chargement en plus de RM partir


d'un registre du banc
38
Pipeline fictif dtail des tapes

EX : excution de l'instruction

Pour un calcul

UAL effectue le calcul

Rsultat disponible dans C

Pour un accs en mmoire

Accs la mmoire via les bus mmoire, RA et/ou RM

Si opration de lecture, RM contient le mot lu l'adresse contenue


dans RA

ENR : enregistrement du rsultat

Pour un calcul

Copie du registre C de l'UAL dans le registre destination du banc

Pour un accs en mmoire

Ecriture : rien faire

Lecture : copie de RM dans le registre destination du banc


39
Pipeline

Excutions dcales de plusieurs instructions en


mme temps

Gain important en utilisant le pipeline

Sans : excution squentielle de 2 instructions en 10 cycles

Avec : excution parallle de 5 instructions en 9 cycles

Gain thorique car nombreux problmes en pratique ...

Pour optimisation : temps de passage dans chaque


tape identique (ou trs proche)
Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Instr. 1 Instr. 1
Instr. 5
Instr. 4
Instr. 2
Instr. 3
40
Pipeline profondeur

En pratique actuellement : autour de 12/15 tages

Exemples de profondeur de pipeline (nombre d'tages)


pour processeurs actuels

Processeurs Intel

Core 2 Duo et Mobile : 14 et 12

P4 Prescott : 30

P4 (avant architecture Prescott) : 20

Gnration prcdente : Intel P3 : 10

Processeurs AMD

Athlon 64 : 12

Gnration prcdente : AMD Athlon XP : 10

Processeurs de type RISC

Sun UltraSparc IV : 14

IBM Power PC 970 : 16


41
Pipeline profondeur

Intrts d'avoir un pipeline plus profond

Plus d'instructions en cours d'excution simultane

Permet une monte en frquence du processeur

Limite de la monte en frquence

Temps de propagation des signaux

A travers une unit et entre les units du CPU

Plus d'units plus petites = temps de propagation plus courts


entre les units

On peut raccourcir le temps de ralisation d'un cycle

Et donc augmenter la frquence du processeur

Mais un pipeline profond pose plus de problmes qu'un


pipeline court

Avec les alas de contrles principalement


42
Pipeline alas

Alas

Problmes rencontrs lors de l'excution d'instructions


par le pipeline

3 familles d'alas

Alas structurels

Des sous-units du CPU doivent tre utilises simultanment


par plusieurs tages du pipeline

Ala de donnes

Une instruction de calcul en cours d'excution dpend d'une


valeur non encore calcule

Alas de contrle

L'instruction suivante dpend du rsultat d'une instruction pas


encore connu (test)
43
Pipeline alas structurels

Exemple d'ala structurel, pour notre pipeline simple

Accs la mmoire dans les tapes

LE : lecture de l'instruction suivante en mmoire

EX dans le cas d'une opration de lecture/criture en mmoire

Utilise une mme sous-unit (accs mmoire) du processeur

Solutions

Attendre pour une instruction que l'unit soit disponible

Peu efficace

Dupliquer dans le processeur ces sous-units

Accs mmoire : intrt de dcouper le cache L1 en deux parties

Partie donnes avec accs via RM et RA

Partie instructions avec accs via CO et RI

Peut alors faire un EX d'accs mmoire et un LE en mme temps : 2


accs mmoires en parallle sur les 2 parties diffrentes du cache L1
44
Pipeline alas structurels

Ala structurel

EX de instr. 2 et LE de instr. 5 : accs la mmoire


Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Instr. 1 Instr. 1
Instr. 5
Instr. 4
Instr. 2
Instr. 3
Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Instr. 1 Instr. 1
Instr. 5
Instr. 4
Instr. 2
Instr. 3
Instr. 6
Le De Ch Ex Enr
Solution par attente :
dcalage de toutes les
instructions suivantes
45
Pipeline alas de donnes

Ala de donnes

R1 = 10 + R2
R3 = R1 x 20 (R1, R2 et R3 sont des registres)

Problme

Le calcul de R3 ne peut se faire que quand R1 est connu


Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
Le De Ch Ex Enr
R1 = 10 + R2
Instr. 5
Instr. 4
R3 = R1 x 20
Instr. 3
R1 est crit
R1 doit tre lu
mais n'est pas
encore crit
46
Pipeline alas de donnes

Ala de donnes : solutions

Arrter l'excution du calcul de R3 tant que R1 n'est


pas connu : peu efficace

Changer l'ordre d'excution des oprations pour viter


ou rduire le problme

Court-circuiter au plus tt le pipeline quand la valeur de


R1 est connue

Le rsultat du dernier calcul est dans le registre C de l'UAL

On peut le rinjecter au cycle suivant dans le registre A ou B


de l'UAL
47
Pipeline alas de donnes

Ala de donnes

Suspension du pipeline

La deuxime instruction est suspendue tant que R1 n'est


pas crit

Court-circuit du pipeline

Aprs l'tape EX de la premire instruction, on connat la


valeur de R1 : on la rinjecte directement dans l'UAL sans
attendre son criture au niveau du banc de registre
Le De Ch Ex Enr
Le De Ch Ex Enr
R1 = 10 + R2
R3 = R1 x 20
Le De Ch Ex Enr
Le De Ch Ex Enr
R1 = 10 + R2
R3 = R1 x 20
48
Pipeline nouveau chemin de donnes

Nouveau chemin de donnes avec court-circuit du pipeline et


accs mmoire via 2 parties du cache
49
Pipeline alas de donnes

Ala de donnes : cas avec rordonnancement

R1 = 10 + R2
R3 = R1 x 20
R4 = 2 x R5
R6 = 10 + R5

Dpendance de donnes entre les 2 premires instructions :


ala de donnes dans le pipeline

Rordonnancement pour viter cet ala

On place les 2 autres instructions entre ces 2 instructions

R1 = 10 + R2
R4 = 2 x R5
R6 = 10 + R5
R3 = R1 x 20
50
Pipeline alas de donnes

Ala de donnes : rordonnancement

Grce ce rordonnancement : pipeline non


suspendu pour aucune des 4 instructions

Utilisation optimale du pipeline

2 types de rordonnancement

Logiciel : fait par le compilateur

Matriel : fait par le processeur en interne


Le De Ch Ex Enr

Le De Ch Ex Enr

Le De Ch Ex Enr

Le De Ch Ex Enr

R1 = 10 + R2
R3 = R1 x 20
R4 = 2 x R5
R6 = 10 + R5
R1 est crit
R1 est lu
51
Pipeline alas de contrle

Alas de contrle

if (R1 > 30)


then R3 = 10 + R1
else R3 = 20 + R1

Fonctionnement du saut conditionnel

En fonction du rsultat du test, le contenu de CO est modifi


avec l'adresse de la prochaine instruction

Phase EX : excution de la comparaison par l'UAL

Phase ENR : criture de CO en fonction du rsultat du test

Problme

Doit connatre la valeur du test de valeur de R1 pour savoir


quelle est l'instruction suivante excuter
52
Pipeline alas de contrle

Alas de contrle (suite)

Solutions

Attendre que le bon CO soit connu : peu efficace

Rordonnancer le code : pas toujours suffisant et possible

Prdire quelle sera la valeur de R1 et commencer le calcul


suivant selon cette prdiction

Solution avec attente

Doit attendre le ENR prcdent avant de faire le LE : on passe


en excution purement squentielle !
Le De Ch Ex Enr
Le De Ch Ex Enr
saut cond.
instr. suivante
CO est crit
lecture de CO
53
Prdiction de branchement

Alas de contrle : prdictions de branchement


pour en limiter les consquences

Indispensable pour efficacit du pipeline

A l'aide de tables statistiques dynamiques

Prdit le rsultat d'un test

On commence ensuite l'instruction suivante prdite

Problme si prdiction errone

On a commenc des calculs inutiles

Vidage du pipeline pour reprendre dans un tat correct

Trs couteux en temps

Trs pnalisant pour des pipelines profonds


54
Prdiction de branchement

Principes de la prdiction

Mmoriser les adresses des branches du programme et


regarder celles qui sont souvent atteintes

Exemple

1 R0 = R2 - 3
2 if R1 = 0 jump suite
3 R3 = 2 x R1
4 R4 = R3 + R1
suite:
5 R3 = 0

Deux branches : adresses 3 et 5

Prdiction : lors du saut conditionnel l'adresse 2, on prendra la


branche la plus souvent atteinte
55
Prdiction de branchement

Deux lments pour fonctionnement

Tampon des branches cibles (BTB : Branch Target Buffer)

Contient les adresses des branches du programme

Table de l'historique des branchements (BHT : Branch History


Table)

Mmoriser l'historique des choix de branchements faits


prcdemment pour faire des prdictions

Fonctionnement dpend de l'algorithme utilis

Exemple basique : 2 bits associs chaque branche

00 : branchement jamais pris jusqu' prsent

01 : branchement parfois pris jusqu' prsent

10 : branchement souvent pris jusqu' prsent

11 : branchement toujours pris jusqu' prsent

Mise jour des BTB et BHT pendant l'excution du programme


56
Prdiction de branchement

Pour plus d'efficacit des prdictions

Augmenter la taille du BTB et du BTH

Pour pouvoir grer plus de branches (BTB)

Si BTB trop petit, il ne stocke pas toutes les branches : pas de


prdictions possibles pour toutes les branches

Pour avoir un historique plus long et prcis (BHT)

Pb : temps d'accs plus long car tables plus grandes

Augmenter la qualit de la prdiction avec des algorithmes plus


efficaces

Pb : prend un temps plus long qu'avec des algorithmes plus simples

Dans les 2 cas : augmentation du temps de la prdiction

Contraire au besoin de connatre au plus tt la prdiction

Limite la monte en frquence du processeur

Efficacit des prdictions

En moyenne, autour de 90% des prdictions sont correctes


57
Pipeline conclusion

Influence de la profondeur du pipeline

Avantage d'un pipeline long

Plus d'instructions en excution parallle

Monte en frquence du processeur facilite

Donc gain en nombre d'instructions excutes en un temps donn

Inconvnient d'un pipeline long

Une erreur de prdiction est plus coteuse

Plus d'oprations en cours d'excution annuler

Solution globale

Trouver le bon compromis entre gain d'un cot et perte de l'autre

Amliorer les algorithmes et units de prdiction de branchement


58
Paralllisation

Gnralisation de la paralllisation d'excution


d'instructions

On a vu le systme du pipeline : plusieurs instructions


simultanes en excution dcale

Approches complmentaires

Ajouter des units (approche superscalaire)

Units de calculs, de commandes ou mme pipeline complet

Permettre l'excution complte ou partielle de plusieurs


instructions en parallle

Exemple : AMD Athlon 64

3 UAL, 3 FPU et 3 units de dcodage d'instructions

Mettre plusieurs processeurs sur la mme puce

Approche multi-core
59
Paralllisation

Intrts de l'ajout d'units

Peut faire plusieurs calculs/traitements en mme temps

Problmes de l'ajout d'unit

Ncessite plus de synchronisation entre units

Prend du temps

Pas toujours pleine utilisation de toutes les units

Exemple : on n'a pas forcment des sries de X additions en


permanence mme aprs rordonnancement

Cot important en terme de transistors et de place

Allongement des distances : temps de propagation

Cot de fabrication plus important

Au final : rarement plus de 2 ou 3 units d'un type


60
Paralllisation : calcul vectoriel

Autre technique

Units de calcul vectoriel

Effectuer un mme calcul avec plusieurs valeurs en


parallle (vecteur de 4, 2 ou 1 valeurs)

Paralllisme SIMD : Single Instruction, Multiple Data

Avantages

Gnralement plus simple et moins lourd de parallliser

En ayant une unit vectorielle avec vecteurs de taille X

Que X units compltes standard non vectorielles


Addition standard
+
+
11
32
21 43 72 86
34 86 59 12
Addition vectorielle 4 valeurs
61
Paralllisation : multi-core

Approche multi-core

Mettre plusieurs coeurs de processeurs sur la mme


puce (le mme die )

2 cores dans les approches actuelles : dual-core

Evolutions futures prvisibles : 4, 8 ... cores par die

Utilit : faire du multi-processeur mais avec un seul

Possibilit de multi-processeur sur des cartes mres ayant un


seul support physique de processeur

Au niveau logiciel, permet l'excution de threads en parallle

Plusieurs applications en parallle

Plusieurs threads d'une mme application


62
Paralllisation : multi-core

3 approches actuellement chez Intel/AMD

Intel Pentium D / XE : approche basique

Deux processeurs entirement dupliqus sur la mme puce,


avec chacun embarquant

Units de commande

Units de calculs

Mmoire cache (niveaux L1 et L2)

Chaque core communique directement et uniquement avec le


chipset via le FSB

Pb de performances pour communication entre 2 cores car on passe


par le chipset

Occupation inutile du FSB avec les communications entre les cores


63
Paralllisation : dual-core

Approche AMD Athlon 64 X2

2 cores entirement dupliqus galement mais avec

Un bus de communication interne au CPU trs rapide entre les 2


cores

Amliore les performances de communication entre les 2 cores

Approche Intel Core 2 Duo

Duplication des 2 cores mais avec un cache L2 commun

Meilleure performance pour communication entre 2 cores

On passe par le cache directement sans passer par un bus


ddi ou le FSB
64
Paralllisation : dual-core

Problme dans tous les cas

Grer la cohrence des donnes entre les caches et la


mmoire centrale
65
Jeux d'instruction

Deux grands types de jeux d'instructions

CISC : Complex Instruction Set Computing

Exemples : processeurs Intel et AMD : familles x86

Fonctionne en modle mmoire (3,3) gnralement

RISC : Reduced Instruction Set Computing

Exemples : Sun Sparc et IBM PowerPC

Et les disparus : DEC Alpha, MIPS, HP PA ...

Fonctionne en modle mmoire (3,0) gnralement

Diffrences fondamentales

Intructions en nombre rduit pour le RISC

Instructions de taille fixe (code opration + oprande)


pour le RISC
66
Jeux d'instruction

Exemple de calcul

Faire la somme du registre R1 et de la valeur l'adresse


100 en mmoire et placer le rsultat l'adresse 200

En CISC

Plusieurs types d'additions grant de multiples modes d'accs


en mmoire et aux registres

Exemples : R = accs registre, A = accs adresse mmoire

ADD R, R, R

ADD R, A, A

ADD A, A, A ....

Une seule opration ncessaire :


ADD R1, @100, @200
67
Jeux d'instructions

En RISC

Calculs uniquement avec des registres

Accs en mmoire : uniquement 2 types

Lecture mmoire vers un registre

criture mmoire partir d'un registre

Exemple prcdent : besoin de 3 instructions


LOAD R2, @100
ADD R3, R1, R2 (R3 = R1 + R2)
STORE R3, @200

Consquence sur nombre de registres d'un mode (3,0)

Un processeur RISC possdent beaucoup plus de registres


gnraux qu'un processeur CISC

Premier CPU x86 (CISC) : 8 registres

On trouve gnralement 32 registres dans les CPU RISC


68
Jeux d'instructions

Comparaison RISC / CISC

Avantage CISC

Plus d'instructions disponibles : programmation plus simple et


souple

Inconvnients

Plus d'instructions grer dans le processeur

Taille d'instruction non fixe : plus compliqu lire et dcoder

Dure d'excution de l'instruction variable (selon nombre


accs mmoire, registres ...)

Plus difficile parallliser


69
Jeux d'instructions

Comparaison RISC / CISC

Avantages RISC

Taille fixe des instructions : plus facile lire et dcoder

Nombre d'instructions plus faibles : plus simple grer

Instructions plus simple et homognes : plus courte


excuter et plus simple parallliser (pipeline)

Inconvnient

Plus d'instructions excuter pour un mme programme

Mais instruction plus simples et rapides excuter


70
Jeux d'instructions

L'architecture RISC a montr qu'elle tait plus performante

Tous les processeurs fonctionnent en RISC de nos jours

Pour un processeur avec un jeu d'instruction CISC

Traduction interne des instructions CISC en micro-oprations de type


RISC

C'est le cas pour tous les processeurs AMD et Intel x86

Apparition de ce fonctionnement avec le PentiumPro chez Intel

Autre avantage de la traduction en micro-instructions

Permet une meilleure gestion des units de calculs et d'optimiser


le code grce un rordonnancement des micro-instructions

Certains processeurs RISC transforment aussi les instructions


natives RISC en micro-instructions internes

Exemple : derniers PowerPC d'IBM


71
Conclusion sur performances

Techniques pour augmenter les performances

Augmentation de la frquence de fonctionnement

Paralllisation pour excuter plusieurs instructions


simultanment

Pipeline

Prdiction de branchement

Rordonnancement des squences d'instructions

Duplication des units de calculs et commandes

Units de calculs vectoriels

Architecture multi-core

Mmoire cache

Jeu d'instruction (interne) de type RISC


72
Conclusion sur les performances

Problmes

Ne peut pas jouer sur tous les points en mme temps


car interdpendances

Exemples

Augmentation de la taille du pipeline

Permet monte en frquence

Mais rduit efficacit de la paralllisation

Augmentation de la prdiction de branchement

Diminue les alas de contrle

Mais limite la monte en frquence

Recherche du meilleur compromis entre tous ces points


73
Exemple de l'Athlon 64
&
Evolution des performances
74
Exemple : AMD Athlon 64

tude des lments d'un processeur rcent

AMD Athlon 64

Commercialis depuis fin 2003

Dclin en plusieurs versions et modles

Y compris une version dual-core

Caractristiques gnrales

Processeur avec jeu d'instructions x86

Frquence : partir de 2.2 Ghz

Cache L1 de taille 2 x 64 Ko

Cache L2 de taille 512 Ko ou 1024 Ko selon modle

L1 et L2 sont exclusifs
75
Exemple : AMD Athlon 64

Cache L1

64 Ko pour donnes et 64 Ko pour instructions

Taille d'une ligne : 64 octets

Associatif par ensemble de 2 (2-way associative)

Ecriture diffre : write-back

Latence : 3 cycles d'horloge

Cache L2

512 Ko ou 1024 Ko

Taille d'une ligne : 64 octets

Associatif par ensemble de 16 (16-way associative)

Latence : 5 cycles d'horloge

Pre-fetching pour charger en avance des donnes/instructions


dans le cache L2
76
Exemple : AMD Athlon 64
77
Exemple : AMD Athlon 64

Mmoire cache

Level 1 instruction cache : cache L1 pour instructions

Level 1 data cache : cache L1 pour donnes

Level 2 cache : cache L2

TLB : tampon de traduction anticipe

Cache pour correspondance entre adresses virtuelles et


physiques

ECC : contrle de parit pour vrifier l'intgrit des


donnes
78
Exemple : AMD Athlon 64

Prdiction de branchement

2k branch targets : tampon des branches cibles d'une


taille de 2 Ko

16k history counter : table de l'historique des


branchements, taille de 16 Ko

Communication avec mmoire

Memory Controller, System Request Queue, Cross Bar

Le contrleur mmoire est intgr au processeur pour


l'Athlon 64 au lieu d'tre dans le pont nord du chipset
79
Exemple : AMD Athlon 64

Ralisation du pipeline, excution des instructions

Elments en plusieurs exemplaires

3 units de calculs entiers : ALU

Calculs simples (addition, ou, dcalage ...) en 1 cycle d'horloge

Multiplication : 3 cycles d'horloge en 32 bits et 5 en 64 bits

3 units de calculs d'adresses mmoire : AGU

3 units de calculs flottants : FADD, FMUL, FMISC

Qui font aussi les calculs scalaire MMX, 3D Now!, SSE1 et 2

3 units de dcodage et gestion de l'excution des instructions

3 blocs Decode1/Decode2 et lments suivants


80
Exemple : AMD Athlon 64

Description du pipeline

12 tages en calculs
entiers

17 tages en flottants
ALU FPU
1 Fetch1
2 Fetch2
3 Pick
4 Decode 1
5 Decode 2
6 Pack
7 Pack/Decode
8 Dispatch Dispatch
9 Schedule Stack Rename
10 Exec Register Rename
11 Data Cache 1 Write Schedule
12 Data Cache 2 Schedule
13 Register Read
14 FX 0
15 FX 1
16 FX 2
17 FX 3
81
Exemple : AMD Athlon 64

tapes du pipeline, pour calcul entier

(1, 2 & 3) fetch et pick

Rcupre les instructions suivantes via le cache L1


d'instructions et la prdiction de branchement

Fournit une instruction chacune des 3 units de dcodage

(4 & 5) : decode 1 et 2

Dcodent les instructions x86 et les transforment en micro-


oprations (OPs) de longueur fixe

Pour fonctionnement interne en mode RISC

(6 & 7) : pack et pack/decode

Continue dcodage pour instructions longues

Regroupement de OPs en pack


82
Exemple : AMD Athlon 64

tapes du pipeline, pour calcul entier (suite)

(8 & 9) dispatch et schedule

Les packs sont distribus aux units de calcul (ALU, FPU


selon les OPs)

(10) exec

Excution des OPs

(11 & 12) data cache 1 et 2

Accs en cache L1 de donnes, en lecture et/ou criture


selon les OPs

Lecture pour chargement dans un registre

criture rsultat d'un calcul


83
Exemple : AMD Athlon 64

105 millions de transistors

Consommation lectrique : 90 Watts

Die de 193 mm2


4 cm
84
Mesures de performances

Plusieurs types de calcul des performances

IPC : Instruction Per Cycle

Nombre moyen d'instructions excutes par cycle d'horloge

Dpend du programme utilis

Nombre d'accs mmoire, entre/sortie, alas gnrs pour le


pipeline ...

Exemple

AMD Athlon XP : 2 2,5 instructions par cycle d'horloge

Intel P4 : 1,5 2 instructions par cycle d'horloge

IPC > 1 car paralllisation gnralise dans le processeur

MIPS : Millions d'Instructions Par Seconde

MIPS = Frquence (en Mhz) x IPC


85
Mesures de performances

Pour comparer les performances des processeurs

Utilise un benchmark

Logiciel ralisant un certain calcul/traitement

On excute ce mme traitement sur tous les processeurs pour


pouvoir comparer le temps d'excution

2 benchmarks pour calculs

Spec Int 2000 : calculs sur des entiers

Spec Fp 2000 : calculs sur des flottants

Il existe de trs nombreux autres types de benchmarks


86
Loi de Moore

En 1965, Gordon Moore (PDG d'Intel) prdit

Que le nombre de transistors utiliss dans les circuits


intgrs doublerait tous les ans

En prenant en compte

Les avances technologiques

Les cots de fabrication

Prdiction ractualise en 1975

Doublement tous les 2 ans au lieu de tous les ans

Complexit grandissante des circuits

Doublement de la puissance de calcul tous les 18 mois


87
Loi de Moore
Source : www.intel.com
88
Loi de Moore
Source : www.intel.com
89
Visualisation volution CPU

3 processeurs Intel pour ordinateurs portables

Toujours plus de transistors, de cache

Mais toujours diminution de la finesse de gravure


90
Quelques sources d'information

En ligne

http://www.onversity.com

Articles sur les principes de fonctionnement des processeurs,


mmoires, caches ....

http://www.x86-secret.com/ & http://www.hardware.fr

Plus de dtails sur le fonctionnement et performances pratiques des


processeurs (notamment l'Ahtlon 64 sur X86-secret)

Nombreux cours sont disponibles en ligne dont

http://www.lri.fr/ENSEIGNANTS/LM/archi/L4.html

Cours principalement sur le fonctionnement d'un processeur

Livres : cours et exercices corrigs

Andrew Tanenbaum, Architecture de l'ordinateur, Dunod

Paolo Zanella et Yves Ligier, Architecture et technologie des


ordinateurs, Dunod

You might also like