Le processeur

publicité
Le processeur
 Evolution du processeur
 Fonctionnement pipepipe-line
 Processeur RISC
 Superscalaire – Superpipeline
 Extensions multimédia
 Processeur vectoriel
Le processeur
1
2
La technologie
Les différents types
 Deux critères permettent de
 CISC : Complex Instruction Set
caractériser le processeur:
 La fréquence d'horloge
 Le nombre de cycles par instruction
Computer
 RISC : Reduce Instruction Set
Computer
 Superscalar RISC:
RISC: Plusieurs
instructions au même cycle
3
4
Autres types...
Répartition
CPI
20
 VLIW : Very Long Instruction Word:
10
Un ensemble d'instructions par cycle.
Une instruction au plus par groupe
d’instructions.
 Superpipelined : Utilisation d'une
horloge multiphase. Plusieurs
instructions dans le même étage de
pipeline
5.0
CISC
2.0
Superpipeline
RISC
1
0.5
Superscalaire
0.2
VLIW
0.1
5
Processeurs
du futur
5
10
20
Vecteur
100 500 1000 2000
6
MHz
Système pipeline
 Superposition dans le temps
Le fonctionnement
pipeline
 Augmentation des performances
 Parallélisme temporel
7
8
Décomposition
Principe du pipeline
 Division d'une tâche en sous tâches
 1 unité logique / sous tâche
 Les sorties d'une unité sont
Unit 1
connectées aux entrées de la
suivante
 Les données entrent par le premier
étage et sortent par le dernier.
Unit 2
Unit 3
Unit
1
1
T1
T2
2
T1
1
T3
2
T2
3
T1
T 14
2
T3
3
T2
4
T1
T 15
T 24
3
T3
4
T2
5
T1
Unit 4
Unit 5
Unit 6
1
2
3
4
T 34
4
T3
5
T2
6
T1
T 44
5
T3
6
T2
7
T1
T 54
6
T3
7
T2
8
T1
T 64
7
T3
8
T2
9
T1
5
T 6 T6 T 6 T 6 T 6
T 25 T 35 T 45 T 55 T 65
T 74
8
T3
9
T2
10
T1
9
10
temps
Transfert des données
pipeline
Définitions
 Latence du pipeline : temps (en cycles )
Modèle Asynchrone:
entre deux instructions consécutives
 Débit du pipeline : Nombre d'instructions
exécutées par cycle, on appelle aussi le
degré d'un processeur superscalaire
 Conflit sur ressource : Deux ou plus
instructions demandent l'utilisation de la
même unité au même instant
 Mécanisme de "handshacking" entre
chaque couple d'unités
DATA
Etage i
Ready
Etage i + 1
ACK
11
12
Modèle Synchrone
Construction
 Horloge contrôle le transfert des données
 Utilisation de latch
Latch
entre 2 unités
 Pipe d'instructions
 Pipe arithmétique
DATA
DATA
DATA
Horloge
Etage
Etage
Etage
Etage
i
i+1
i+2
i+3
 Sans latch (CRAY)
 On parle de Maximum Rate pipepipe-line
13
14
Horloge
Speed--up
Speed
Pipeline d'instructions:
 Sur un pipe nn-étages, il faut:
 Fetch / Execute 2 unités séparées
 n cycles pour obtenir le 1er résultat
 pour ss-1 résultats, il faut ensuite ss-1 cycles.
 Soit n+sn+s-1 cycles pour s résultats
(sur un processeur scalaire, il faut ns cycles)
Phase de
Chargement
Phase d'
exécution
 Le SpeedSpeed-up est égal à
 On réalise les deux phases en même
S = Tscal /Tpipe =
temps sur des instructions différentes.
 Il suffit de connaître la prochaine
instruction: instruction prefetch
 S  n quand
ns
n+s--1
n+s
s +
15
16
Augmentation du
parallélisme
Pipeline 2 étages
 L'instruction prefetch permet au plus
Execute
Fetch
Temps d’exécution constant
Execute
Fetch
Temps d’exécution variable
17
de doubler la vitesse du processeur.
 Exécution souvent plus long que le
chargement.
 La recherche de parallélisme
nécessite un découpage plus fin
 Souvent en 4 ou 5 étapes
successives
18
Exemple le MIPS
5 étages
 Fetch/ Decode/ Fetch OP/ Execute/ Store
1 IF
2
3
4
5
ID
IF
FO
ID
IF
EX
FO
ID
IF
SO
EX
FO
ID
IF
SO
EX
FO
ID
SO
EX
FO
SO
EX
 Fetch/
SO
5 actions
en parallèle
19
1 IF
2
3
4
5
EX
ID
IF
MEM
EX
ID
IF
REG
MEM
EX
ID
IF
ID : Decode + fetch operands
Mem : write back cache + mem
Reg : store ALU into register
REG
MEM
EX
ID
REG
MEM
EX
REG
MEM
REG
5 actions
en parallèle
20
Efficacité
Le pipepipe-line du 80486
 Fetch
Fetch:: Instructions depuis le cache ou la mémoire

vers 2 buffers de prefetch. Chaque buffer contient en
moyenne 5 instructions. Remplissage dès que
possible des buffers.

 Decode stage 1: Décode le code opération et les
modes d’adressage
 Decode stage 2: Génère les signaux pour l’ALU.

Réalise les adressages plus complexes
 Execute: Opérations ALU, Accès cache, registres
 Write Back: Maj des flags, écriture des résultats sur
le cache et le buffer de l’interface du Bus
ID
IF
Decode/ Execute/ Memory/ Register
Soit ti le temps de traversée de
l'étage i.
Le temps d'exécution d'une
instruction est: inst 


Le délai entre 2 instructions
successives est  
Max
Max
 est appelé cycle du pipeline
21
Rupture de pipeline
22
Instructions de Branchement
 Instructions de branchement
 Data dépendance
 Défauts de cache
 Conflits hardware (mémoire)
 Lors de l'exécution d'un JUMP
 La prochaine instruction est la
23
suivante
 OK
 Ce n'est pas la suivante
 Vidage du pipepipe-line
 Remplissage du pipe avec les
bonnes instructions
24
Réduction de la vitesse
Réduction des ruptures
 4 techniques pour réduire les ruptures
x
EX
x
x
x
x
Abandon
 10 à 20% des instructions sont des
JUMP
 réduction de la vitesse globale
 Boucle TantQue, Exit
de pipeline
 Buffer d'instructions
 Loop buffer
 Table de branchement
 Branchement retardé
25
Buffer d'instructions
26
Multiple prepre-fetch
 FIFO d'instructions : assure un flux
constant
 On utilise 2 FIFOs
 Une pour les instructions suivant le
JUMP
 Une pour les instructions à
l'adresse du JUMP
27
Double FIFO
 On charge les 2 FIFOs après un
JUMP
 Après le JUMP, on choisit
l'instruction dans l'une des 2 FIFOs
 Si plusieurs JUMP pris en compte, il
faut plusieurs FIFO (2n = n JUMP)
 Augmente les conflits d’accès
mémoire
28
Loop Buffer
 Petite mémoire rapide contrôlée par l’unité
de chargement des instructions
Mémoire
Séquentiel
 Contient les N instructions les plus
Fetch
FIFO
récemment chargées.
 Fonctionnement comme un cache
d’instructions mais en séquence
 A chaque fetch on recherche d’abord
l’instruction dans le loop buffer
...
Non séquentiel
29
30
Fonctionnement
Table de Branchement
 Prédire dynamiquement l'adresse
 Avec le prefetch, quelques instructions
suivantes sont présentes.
 Si le JUMP saute quelques instructions en
avant, on peut la trouver dans le buffer ex:
if then else
 Si le JUMP saute vers le début d’une
boucle, la boucle complète peut se trouver
dans le buffer
 Cray 1, motorola 68010
31
 Les instructions de JUMP sont
Adresse
branchement
Recherche
dans table
Adresse
de branchement
Adresse
trouvée
CO
Adresse
Fetch
32
Branchement retardé
Decode history table
Adresse
Instruction
suivante : utilisation répétée de la
même adresse
 La 1ère exécution range l'adresse
de branchement
 Lorsque la même instruction JUMP
est exécutée (Fetch), on utilise
l'adresse mémorisée dans une
table (mémoire rapide)
Decode
Execute
Instruction
placées dans le code avant qu'elles
ne prennent effet
 Pour un pipeline à 2 étages , le JUMP
prend effet après la prochaine
instruction
 n étages : le JUMP prend effet après
les nn-1 suivantes
33
Pour un 2 étages
Efficacité
 Pas de vidage de pipe
 Optimisation du compilateur
 70% des JUMP peuvent être suivis
Execute
Fetch
Jump
Jump
NEXT
NEXT
Adresse
Saut
34
d'une instruction RISC
35
36
Data dépendances
Sur 5 étages
Dépendances
de données
 Exemple:
C = 2 * (A + [@100])
Store
ADD AX, [100] % A+100%
SAL AX, 1
%*2%
MOV CX, AX
%C%
AX
Exec
AX
ADD
AX
[100]
Fetch
Op
CX
Shift
AX
AX
Decode
Fetch ADD SAL
37
Mov
Conflit mémoire : entre fetch et accès [100]
38
Fonctionnement
 Détection de la dépendance et
blocage de pipeline jusqu'à
résolution.
 Autoriser le chargement des
instructions qui sont indépendantes
(pas de data dépendance)
 On ne retarde que les instructions
dépendantes.
Processeur RISC
39
Jeu d’instructions
40
Critères
 Ensemble des commandes primitives
que le programmeur peut utiliser sur
une machine.
 Deux écoles RISC et CISC.
 La complexité du jeu d'instruction
dépend
 du format de l'instruction et des
données,
 des modes d'adressage,
 du jeu de registres,
 des instructions de contrôle de flot.
41
42
CISC
Caractéristiques
 De plus en plus de fonctions sont
 Il comprend entre 120 à 350
prises en compte au niveau du
hardware.
 Cette école a été encouragée avec
les techniques de micro
programmation (1960(1960-70).
 Il simplifie la charge du compilateur.
instructions,
 Il utilise un petit nombre de registres
8 à 24,
 Il possède une douzaine de modes
d'adressage.
43
Caractéristiques des RISC
44
Conséquences
 Le RISC est composé d'environ
 Un grand nombre de registres
 100 instructions dans un format fixe
 3 à 5 modes d'adressage
 les accès mémoire sont réservés
aux instructions de Load/Store
améliore le changement de contexte.
 La plupart des instructions
s'exécutent en un cycle.
 L'intégration sur un seul chip permet
d'augmenter la fréquence d'horloge.
45
Quelques CISC et RISC
46
RISC
 On remarque que 25 % des
Caractéristiques
Année
Nombre d'instructions
Taille des instructions
Modes d'adressage
Nombre de registres
Taille du cache
IBM 370 Vax 11/780
1973
1978
208
303
2à6
2 à 57
4
22
16
16
64
64
CISC
80486
1989
235
1 à 11
11
8
8
88000 Mips R4000 IBM RS6000
1988
1991
1990
51
94
184
4
32
4
3
1
2
32
32
32
16
128
32 à 64
RISC
Superscalar
47
instructions d'un CISC sont utilisées
95% du temps.
Faut-il utiliser le silicium pour des
Fautinstructions non fréquemment
utilisées?
48
Modes d’adressage
Types d’instructions
Prédécrément
Indirect
Déplacement
GCC
Postincrément
Jump
Moves
ALU
Indexé
Fréquence
Indirect
Immédiat
TEX
Déplacement
Registre
0
10
20
30
40
50
49
Apparition des RISC
0
10
20
30
40
50
50
Première réalisation
 Premier article en 1980 (Patterson et
 Papier de MIPS en 1983
Ditzel)
 Implantation sur un seul chip
 Temps de conception réduit
 Horloge rapide
 Meilleur utilisation du VLSI
 Introduction du pipeline et du
multiple unités fonctionnelles
 Premier prototype en 1985
51
Propriétés
52
Caractéristiques communes
 Architecture Load/store avec un
 Un petit nombre d’instructions
 Un CPI proche de 1 (cycle par
ensemble de registres orthogonal
 Simples modes d’adressage
 Contrôle des délais de pipeline
instruction)
53
54
Coût et performance
300000
Evaluation des performances
Temps/tache = (inst/tache) x (cycle/inst) x (temps/cycle)
20
250000
15
200000
10
150000
Megahertz
100000
5
50000
Mips processeur
0
0
80386
Transistors
R3000
VUP
80386
R3000
Mips normalisé (VUP)
55
56
Succès des RISC
Avantage du faible CPI
 Horloge rapide (temps/cycle)
 Peu de cycles par instruction : par le
 Parallélisme au niveau de l’instruction
: pipeline
 Pour 5 étages on obtient un facteur
de 4
 1.8 instructions RISC pour une
instruction VAX ou 680x0
fonctionnement pipeline (cycle/inst)
 Faible augmentation du nombre
d’instructions par tâche : optimisation
du compilateur (inst/tâche)
57
58
Haut débit mémoire
Débit mémoire VAX / RISC
 Risc demande beaucoup de débit
60
mémoire
 Plusieurs accès à chaque cycle
 Utilisation de mémoires caches
 Beaucoup d’accès instructions:
appels de procédure
 Peu d’accès données: grand nombre
de registres
50
40
Data
Instruction
30
20
10
0
59
RISC-TEX
VAX-TEX
RISC-GCC
VAX-GCC
60
Approches de mise en oeuvre
Les opérandes
 Références à des variables scalaires
 80% sont locales aux procédures
 IBM / Standford
 Un ensemble de registre unique
 Load/store efficace, optimisation des
délais par le compilateur
 Berkeley
 Multiple ensemble de registres gérés en
fenêtre
 Load/store de 2 cycles ou plus
Constante Integer
Variable scalaire
Array/structure
20
55
25
61
Appel de procédure
62
Fenêtre de registres
 Diminuer le coût de l’appel de
 Un grand nombre de registres
 Seul un sous ensemble est visible à
procédure
 Passage de paramètres
 Sauvegarde des registres
 Adresse de retour
un instant donné (par ex 32)
 Chaque ensemble est divisé en
groupes.
 Pointeur de fenêtre courante CWP
63
Groupes de registres
Recouvrement des fenêtres
n- 1
26-31
R31
Paramètres reçus
R26
R25
n

n
6
10
R16
R15
Paramètres envoyés
Variables globales
R0
16-25
n
10-15
26-31
0-9
Variables locales
R10
R9
64
16-25
n+1
10-15
26-31
6
10
16-25
65
10-15
Recouvrement
des fenêtres lors
de chaque appel
Evite le passage
sur la pile
66
Fonctionnement
Allocation des registres
 A chaque appel on met à jour le CWP
 Les instructions RISC sont registre à
vers la nouvelle fenêtre.
 Diminution du trafic mémoire
 En cas de débordement, les fenêtres
sont recopiées en mémoire (trap sur
CWP)
 Pourrait fonctionner sur un CISC avec
beaucoup de registres
registre
 L’accès aux registres est beaucoup
plus rapide que la mémoire
 L’allocation optimisée des registres
peut réduire le nombre d’accès
mémoire
67
68
function MostlyZero(n:integer):boolean;
var num,ones,zeros,half:integer;
res:boolean;
begin
num:= n*n;
ones:=0;
zeros:=0;
while num>0 do
begin
half:=num div 2;
if 2*half=num
then zeros:=zeros+1
else ones:=ones+1;
num:=half
end;
if zeros>ones
then res:=true
else res:=false;
MostlyZero:=res
Registres ou cache?
Variables locales
Unité de rangement
Variables globales
Swapping
Adressage
R
Window
Number
Registres
Tous les scalaires locaux
Variable par variable
Allouée par le compilateur
Par profondeur d'appel
Adressage registre
TAG Index
Registres
Cache
Most Recently Used
Blocs de mémoire
MRU
Algorithme de remplacement
Adressage mémoire
Tag + Index
Cache
Index
Exemple
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Mémoire
Decoder
TAG
Data
Y
=
Data
N
69
70
end;
RISC et PipePipe-Line
Exécution en séquence
 Instruction Registre à Registre. Deux
Load A, M
Load B, M
Add C, A, B
Store M, C
Branch X
phases:
 I: instruction fetch
 E: exécute sur l’ALU depuis et vers registres
I
E
D
I
E
D
I
E
I
E
D
I
E
 Instruction Load Store. Trois phases:
 I: instruction fetch
 E: Exécute. calcul de l’adresse mémoire
 D: Mémoire. transfert reg <=> mémoire
71
72
Exécution sur un pipe 2
étages
Exécution sur un pipe 3
étages
 I et E s’exécutent en parallèle. D s’exécute
 I, E et D en même temps.
seul. Un seul port mémoire.
Load A, M
Load B, M
Add C, A, B
Store M, C
Branch X
NOOP
I
E
I
Load A, M
Load B, M
NOOP
Add C, A, B
Store M, C
Branch X
NOOP
D
E
I
D
E
I
E
I
D
E
I
E
 NOOP est inséré par le compilateur
I
E
I
D
E
I
D
E
I
E
I
E
I
D
E
I
E
73
74
Exécution sur un 4 étages
 E est coupé en 2: E1 et E2 ( E trop long)
Load A, M
Load B, M
NOOP
Add C, A, B
Store M, C
Branch X
NOOP
NOOP
I
Superscalaire /
superpipeline
E1 E2 D
I E1 E2 D
I E1 E2
I E1 E2
I E1 E2 D
I E1 E2
I E1 E2
I E1 E2
75
Superscalaire (1987)
76
Taux de parallélisme
 CISC et RISC produisent une
 Les superscalaires permettent
instruction par cycle.
 Sur un superscalaire on produit
plusieurs instructions par cycle.
 On utilise plusieurs pipelines
d'instructions.
d'extraire encore plus de parallélisme.
 Toutes les instructions indépendantes
peuvent être exécutées en même
temps (limité par le nombre de
pipeline)
77
78
Fonctionnement
Efficacité
 Par observation, en moyenne on peut
1 IF
2 IF
1
2
1
2
1
2
1
2
ID
ID
IF
IF
FO
FO
ID
ID
IF
IF
EX
EX
FO
FO
ID
ID
IF
IF
SO
SO
EX
EX
FO
FO
ID
ID
IF
IF
SO
SO
EX
EX
FO
FO
ID
ID
SO
SO
EX
EX
FO
FO
SO
SO
EX
EX
SO
SO
10 actions
en parallèle
obtenir deux instructions à exécuter
en parallèle.
 On limite le degré du processeur à 3
ou 5. (projet de degré à 16 sur Alpha
- utilisation multimulti-user)
79
Superpipeline (1988)
80
Fonctionnement
 Utilisation d’une horloge multiphase
 Redécomposition pipeline de chaque
1 IF1 IF2 ID1 ID2 FO1 FO2 E X1 EX2 SO1 SO2
2
IF1 IF2 ID1 ID2 FO1 FO2 EX1 EX2 SO1 SO2
1
IF1 IF2 ID1 ID2 FO1 FO2 EX1 EX2 SO1 SO2
2
IF1 IF2 ID1 ID2 FO1 FO2 EX1 EX2 SO1
1
IF1 IF2 ID1 ID2 FO1 FO2 EX1 EX2
2
IF1 IF2 ID1 ID2 FO1 FO2 EX1
1
IF1 IF2 ID1 ID2 FO1 FO2
2
IF1 IF2 ID1 ID2 FO1
1
IF1 IF2 ID1 ID2
2
IF1 IF2 ID1
étage du pipeline d’instruction
 Demande une fréquence d’horloge
élevée
 Exemple R4000
SO2
SO1
EX2
EX1
FO2
SO2
SO1 SO2
EX2 SO1 SO2
EX1 EX2 SO1 SO2
82
Dépendance de flot
 Augmenter le parallélisme au niveau de
 Exemple:
l’instruction
 add R1, R2
move R3, R1
 La deuxième instruction ne peut être
exécutée tant que la première n’est pas
exécutée
 Compilateur ou Hardware
 5 limitations





SO2
SO1
EX2
EX1
FO2
FO1
10 actions
en parallèle
81
Limitations
SO2
SO1
EX2
EX1
FO2
FO1
ID2
Dépendance de flot
Dépendance procédurale
Conflits sur ressources
Dépendance de sortie
Antidépendance
Pipe1
Pipe2
83
IF
IF
D
D
X
W
X
W
84
Dépendance procédurale
Conflit sur ressource
 Présence de Branch impose le vidage de
 Utilisation de la même unité fonctionnelle,
tous les pipes
inst1
IF
branch IF
inst2
inst3
mémoire, cache, bus...
D
D
X
X
W
W
IF
IF
 On peut supprimer ce conflit en dupliquant
D
D
IF
IF
X
X
D
D
W
W
X
X
les ressources ou en pipelinant les unités
fonctionnelles
W
W
Add
Add
IF
IF
D
D
X
W
X
W
85
Instruction--issue
Instruction
86
Les stratégies
 Ordre dans lequel le processeur exécute
 Accès et exécution ordonnés
 Accès ordonné et exécution désordonnée
 Accès et exécution désordonnés
les différentes étapes des instructions
 Ordre de fetch
 Ordre d’exécution
 Ordre de modification des registres ou
mémoires
 Modifier l’ordre en assurant une exécution
correcte
87
Accès et exécution ordonnés
88
Exemple
 Même ordre que sur une machine
 I1 demande 2 cycles pour exécution
 I3 et I4 sont en conflit sur une unité
séquentielle.
 Exemple:
fonctionnelle
 I5 dépend du résultat produit par I4
 I5 et I6 sont en conflit sur une unité
fonctionnelle
 superscalaire avec Fetch et Decode deux
instructions en parallèle
 3 unités fonctionnelles
 2 unités d’écriture des résultats
89
90
Exécution désordonnée
Accès et exécution ordonnés
Decode
I1
I3
I3
I5
I2
I4
I4
I4
I6
I6
Execute
I1
I1
 Utile pour les instructions demandant
WriteBack
plusieurs cycles
 Exemple: floating point sur Motorola 88000
I2
I3
I4
I5
I6
I1
I2
I3
I4
I5
I6
 Autant d’instructions en exécution qu’il y a
d’unités
 Respect des dépendances de flot et
procédurale
 Dépendance de sortie
91
92
Exécution désordonnée
Dépendance de sortie
 Exemple:
 R3 = R3 + R5
Decode
Dépendance de flot
I1
I3
R4 = R3 + 1
Dépendance de sortie
I5
Execute
I2
I4
I4
I6
I6
I1
I1
WriteBack
I2
I3
I4
I5
I6
R3 = R5 +1
I2
I1
I4
I5
I6
I3
R7 = R3 + R4
93
Accès et exécution
désordonnés
94
Fonctionnement
 Découplage des étages decode et execute
 Un buffer d’instructions: Instruction
 Le choix parmi les instructions à exécuter
Window
 Decode place les instructions dans la
fenêtre
 Quand une UF devient libre elle obtient
une instruction exécutable dans la fenêtre:
ressource et dépendance
 Respect des dépendances
 Respect de l’antidépendance
95
est plus large
96
Accès et exécution
désordonnés
Antidépendance
 Exemple:
– R3 = R3 + R5
R4 = R3 + 1
Dépendance de flot
Decode Window
I1
I3
I5
Dépendance de sortie
I2
I4
I6
I1 I2
I3 I4
I4 I5 I6
I5
Execute
I1
I1
WriteBack
I2
I6
I5
I3
I4
R3 = R5 +1
I2
I1
I4
I5
I3
I6
Antidépendance
R7 = R3 + R4
97
Renommage des registres
98
Pour notre exemple
 Eliminer les dépendances de sorties et
 Exemple:
antidépendances
 Plusieurs instructions utilisent le même
registre
 Allocation dynamique des registres par le
processeur ( ce n’est plus le compilateur)
 Un même registre du code peut référencer
plusieurs registres lors de l’exécution
 R3b = R3a + R5a
R4b = R3b + 1
R3c = R5a +1
R7b = R3c + R4b
99
Compilation
100
Superscalaire et CISC
 Lorsque l'on ne peut exécuter autant
 Application du principe supescalaire au
d'instructions que le degré du processeur,
certains pipelines restent en attente.
 Le nombre d'instructions en cours
d'exécution dépend des dépendances de
données entre les instructions, et des
conflits d’accès aux ressources
 Le travail du compilateur devient capital:
réorganisation du code...
CISC est plus rudimentaire que sur un
RISC
 Donne néanmoins de bons résultats
 Exemple: le Pentium
101
102
Instruction
cache
Pentium
Adresse
branchement
Prefetcher
 Pipe line de 5 étages comme le 80486
QueueAQueueB
 Fetch
Fetch:: Instructions depuis le cache ou la mémoire vers 2
buffers de prefetch. Remplissage dès que possible des buffers.
Adresse de
branchement
Décodeur
coupleur
 Decode stage 1: Décode le code opération et les modes
d’adressage. Branch prédiction. Coupleur d’instructions
Branch
Target
Buffer
Unité contrôle
 Decode stage 2: Génère les signaux pour l’ALU. Réalise les
adressages plus complexes
 Execute: Opérations ALU, Accès cache, registres
 Write Back: Maj des flags, écriture des résultats sur le cache
U
opérande
mémoire
opérande
mémoire
ALU
ALU
Choix
du
branchement
V
et le buffer de l’interface du Bus
 Possède deux unités integer (
(du 80486)
Shifter
103
Couplage d’instructions
Pentium vs 80486
 U et V peuvent exécuter 2 instructions en
 2 fois plus rapide
parallèle
 Les instructions doivent être simples:




Pas de micromicro-programme
Un seul cycle
Pas de dépendance de flot ou de sortie
Pas deux déplacements ou immédiats...
 Deux instructions successives sont alors
couplées et exécutées en parallèle
104
105
1 PF
2
3
4
D1
PF
1 PF
2 PF
3
4
5
6
7
8
D1
D1
PF
PF
D2
D1
PF
D2
D2
D1
D1
PF
PF
EX
D2
D1
PF
WB
EX
D2
D1
WB
EX
D2
EX
EX
D2
D2
D1
D1
PF
PF
WB
WB
EX
EX
D2
D2
D1
D1
WB
WB
EX
EX
D2
D2
80486
WB
EX
WB
Pentium
WB
WB
EX
EX
WB
WB
106
Superscalaire vs
Superpipeline
Prédiction de branchement
 Prédiction dynamique
 Branch Target Buffer
 Performances équivalentes
 Superpipeline demande moins de
 Mémorisation de la dernière adresse de
branchement
hardware mais une horloge plus
rapide
 Superpipeline moins efficace sur le
branch et le démarrage du
programme. StartStart-up plus long.
 Une seule queue de prefetch reste active
 Celle donnée par la table
107
108
VLIW


Compilation
Généralisation des concepts de
codification horizontale en
microprogrammation et du calcul
superscalaire.
Plusieurs instructions dans le
même mot ( 1024 bits ), un champs
pour chacune.
 Plusieurs unités fonctionnelles
travaillent en parallèle, elles partagent
la même file de registres.
 Le compactage des programmes
standard peut être assuré par le
compilateur.
109
110
Compatibilité
Fonctionnement
 Il n'y a pas de compatibilité entre
deux codes de deux VLIW différents.
(différents types de parallélisme: le débit
différent d'une même unité fonctionnelle
entraîne des différences à l'exécution)
 Encore moins avec les processeurs
standard.
111
1 IF
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
ID
FO
IF
ID
EX
EX
EX
EX
FO
SO
IF
ID
EX
EX
EX
EX
FO
IF
ID
IF
SO
EX
EX
EX
EX
FO
SO
EX
EX
EX
EX
SO
112
8 actions en parallèle
VLIW vs superscalaire
Architecture VLIW

Registres

Load
Store
Unit
FP
Add
Unit
...
Integer
Unit
Load
Store
Unit
FP
Add
Unit
...
Integer Branch
Unit
Unit
Branch
Unit
113
Le décodage de l'unique instruction
est plus simple.
Le format du VLIW est moins
compact, certains champs de
l'instruction peuvent ne pas être
utilisés tout le temps.
114
Le point de vue d’Intel
 3 extensions:
Extensions multimédia:
multimédia:
Intel MMX / SSE / SSE2
Motorola Altivec
 MMX (1997)
 SSE (1999)
 SSE2 (2000)
En collaboration avec François Piret Etudiant promo 2002
115
116
Intel MMX
Intel MMX
 Pas de modifications architecturales 
pas de modifications de l’OS
 pas de nouveaux registres, pas de nouvelles
exceptions
+ X86  compatibilité
- Context
Context--switch
 2 améliorations:
 Un cache L1 plus important
 57 nouvelles instructions ( SIMD)
117
118
Intel SSE
Intel SSE
 Streaming SIMD Extensions
 Modifications architecturales:
 128 bits ?
 8 registes 128 bits multimulti-usages
 Vise la 3D
 4 op. simple
précision
 70 nouvelles instructions
 Virgule flottante (sans partage)
 Hardware
 Datapath 64 bits
119
120
Intel SSE2
Intel SSE2
 54 nouvelles instructions
 Data de 128 bits plus malléables
 calcul scientifique (FP)
121
Le point de vue Motorola
122
Motorola Altivec
 Jeu d’instruction
 Altivec
 Unité de calcul
 IntraIntra-élément
 Arithmétique ou non
 Inter
Inter--élément
 Arithmétique ou non
vectoriel
 32 registres 128 bits
 162 instructions
 3 opérandes
123
Motorola Altivec
124
Motorola Altivec
 Intra
Intra--élément
 Inter
Inter--élément
125
126
Comparaison
entre Intel, AMD et Motorola
Fab..
Fab
Ext..
Ext
ISA de
base
Annonce
Prod..
Prod
Inst..
Inst
Intel
MMX
X86
1996
1997
57
AMD
3Dnow!
1997
1998
21
1998
1999
70
8*128b
X86/
MMX
X86/
MMX
Registre
FP
(8*64b)
FP
(8*64b)
Intel
SSE
Motorol
a
Altivec
PowerPC
1998
1999
162
32*128b
AMD
Enh.
3dnow
X86/
MMX/
3Dnow!
1999
2001
24
FP
(8*64b)
Intel
SSE2
X86/
MMX/
SSE
2000
2001
144
8*128b
127
128
Les opérations
1.
2.
3.
4.
5.
1. Les entiers
1.
2.
3.
4.
Entier
Virgules flottantes
Polymorphes
Comparaisons et contrôle de flux
Mémoire
Saturation et overflow
Addition et soustraction
Multiplication
Shift
129
1.1. Saturation et overflow
130
1.2. Addition et soustraction
131
AMD
Intel
Motorola
Modulo
add/sub
8,16,32
8,16,32,64
8,16,32
Saturation
add/sub
U8,U16,S8,
S16
U8,U16,S8,
S16
U8,U16,U32,
S8,S16,S32
Moyenne
U8,U16
U8,U16
U8,U16,U32,
S8,S16,S32
Min/max.
U8,S16
U8,S16
U8,U16,U32,
S8,S16,S32
132
1.3. Multiplication
1.3. Multiplication (suite)
AMD
Intel
Motorola
Mul. Tronquée
S16,U16
S16,U16
S16
Mul. Tr. Arrondie
S16
-
S16
Mul. Complète
S16
S16,U32
U8,U16,S8,S16
Shift log. droite
16,32,64
16,32,64
8,16,32
Shift ari. Droite
16,32
16,32
8,16,32
Shift gauche
16,32,64
16,32,64
8,16,32
• La réduction
• Pair / impair
133
134
1.3. Multiplication (suite et fin)
2  5793 / 2^12
•La toncature:
135
AMD
Intel
Motorola
Interleave/merge
8,16,32
8,16,32
8,16,32
Align/rotate
-
-
8
Shuffle/permute
16(4^4)
16(4^4), 32(4^5)
16(32^16)
16
16
AMD
Intel
Motorola
Mul. Tronquée
S16,U16
S16,U16
S16
Mul. Tr. Arrondie
S16
-
S16
Mul. Complète
S16
S16,U32
U8,U16,S8,S16
Shift log. droite
16,32,64
16,32,64
8,16,32
Shift ari. Droite
16,32
16,32
8,16,32
Shift gauche
16,32,64
16,32,64
8,16,32
136
1.6. Taille et conversion de
type
1.5. Opération de
communication de données
Insert/Extract
1.4. Le Shift
AMD
Intel
Motorola
Saturating FP pack
FP32  S32
FP32  S16
FP32  S32
FP  S32
FP  U32
Truncating FP pack
-
FP64  FP32
FP64  S32
-
S32  S16
S32  S16
S32  S16
S16  S8
S16  U8
32  16*
32  8*
S16  S8
S16  U8
32  16*
32  8*
S16  S8
S16  U8
16  8*
16  8*
16  8
FP unpack
-
32 bits unpack
S32  FP32
FP32  FP64
S32  FP32
S32  FP64
U32  FP32
S32  FP32
U16  U32*
U16  U32*
U8  U16*
U8  U16*
Saturating 32 bits
pack
Saturating 16 bits
pack
Truncating 32 bits
pack
Truncating 16 bits
pack
8,16,32
16 bits unpack
137
8 bits unpack
U16  U32*
S16  FP32
U8  U16*
32  16
138
3. Opérations polymorphes
2. Virgule flottante
Opération
AMD
Intel
Motorola
AND, ANDN,
OR, XOR
AND, ANDN,
OR, XOR
AND, ANDN,NOR
OR, XOR
4. Comparaisons et contrôle de
flux
 approximation réciproque
 Exceptions
 Arrondi
 Opérations scalaires
==
139
AMD
Intel
Motorola
8,16,32,FP32
8,16,32,FP32,FP64
8,16,32,FP32
!=
-
FP32,FP64
>
S8,S18,S32,FP32
S8,S18,S32,FP32,FP64
>=
FP32
FP32,FP64
U8,U16,U32,S8,S16,S3
2,FP32
FP32
<
-
FP32,FP64
-
<=
-
FP32,FP64
-
<>
-
-
FP32
?
-
FP32,FP64
-
!?
-
FP32,FP64
-
5. La mémoire
140
Le prefetching
 Load / Store
Intel:
 Alignement
AMD:
Motorola:
 Préfetching
141
142
Présentation du workload
Horloge (Mhz)
SIMD extensions
SIMD instructions
1e utilisation
Transistor (*106)
Micron
L1 cache (Kbytes)
3. Comparaison des
performances
143
AMD Athlon
500
MMX/3Dnow+
57/24
Juin 1999
22.0
0.25
64
Intel Pentium III
500
MMX/SSE
57/70
Février 1999
9.5
0.20
16
Motorola G4
500
Altivec
162
Août 1999
6.5
0.20
32
L2 cache(Kbytes)
0.5
0.5
1
Registre (# * taille)
FP(8x64b)/ FP(8x64b)
FP(8x64b)/ 8x128b
32x128b
Reorder buf. Entries
72
40
6
It, Fp multimedia units
Int add latence
Int multiply latence
FP add latence
FP multiply latence
2 (combiné)
2[64b/cycle]
3[64b/cycle]
4[64b/cycle]
4[64b/cycle]
2 (combiné)
1[64b/cycle]
3[64b/cycle]
4[64b/cycle]
5[64b/cycle]
3,1
1[128b/cycle]
3[128b/cycle]
4[128b/cycle]
4[128b/cycle]
FP approx. latence
3[32b/cycle]
2[64b/cycle]
4[128b/cycle]
144
Analyse des performances
AMD Athlon 500
Intel Pentium III 500
Motorola G4 500
Add block
Block match
Clip
Color space
DCT
FFT
IDCT
Max val
Mix
Quantize
9.6x
7.0x
1.6x
9.4x
16.9x
2.0x
3.6x
4.0x
2.8x
1.8x
6.4x
4.9x
1.3x
5.6x
31.1x
1.7x
2.8x
3.8x
2.0x
2.5x
2.5x
3.4x
2.6x
4.5x
36.6x
2.0x
3.9x
6.6x
3.8x
2.1x
Short term anal.
1.5x
1.5x
6.5x
Short term synth
2.9x
7.6x
6.5x
Subsmp horiz
Subsmp vert
Synth filt
Transform
1.4x
2.4x
2.8x
2.5x
1.3x
2.2x
1.8x
4.7x
1.6x
9.6x
1.8x
27.4x
Moy. arithmétique
4.5x
5.1x
7.6x
Processeur vectoriel
145
Processeur vectoriel
146
IBM 3090 VF
 Co processeur dédié au calcul
Mémoire
d'opérations sur des vecteurs.
 Un vecteur est défini comme un
tableau d'opérandes.
 La même opération est effectuée sur
l'ensemble des données.
Cache
Vecteur éléments
Décodeur
Vecteur instructions
CPU
Scalaire
Registres
Scalaires
CPU
Vectoriel
Valeur scalaire
Registres
Vectoriels
147
Fonctionnement
148
Intérêts
IF ID FO EX SO
EX IF ID FO EX SO
EX
EX IF ID FO EX SO
EX
EX
EX IF ID FO
EX
EX
EX
EX
EX
EX
EX
EX
149
 Augmente la densité du code
 Réduit le nombre d’instruction à exécuter
(I-bandwith)
(I Les données sont régulières et
structurées: prise en compte hardware
 Intègre le contrôle de la boucle
150
Notion de registres vectoriels
 Ensembles de 16 ou 64 ou 128 registres
Jeu d’instructions
 Extension du jeu d'instructions (machine à
de 64 ou 128 bits
 Peuvent contenir des entiers et surtout
des flottants
 Instructions de chargement spécifiques
registres vectoriels):
 Plusieurs unités de Load/Store (3 sur le Cray)







V1 op V2
s1 op V2
V1 op V2
M(1:n)
V1
op V1
op V1
 V3
 V3
 s1
 V1
 M(1:n)
 V2
 s1
opération binaire
scalaire
réduction
vecteur Load
vecteur Store
opération unaire
réduction unaire
151
Unités fonctionnelles
152
UF Pipeline
Registres
input
 Plusieurs unités indépendantes
 Elles sont en général pipelinées
 Elles peuvent être parallèles
ALU
pipeline
Registre
output
153
UF Parallèle
Pipeline d’addition
C
S
A
Compare
exposants
Shift
mantisse
Add
mantisses
X1, Y1
X2, Y2
C S A N
154
N
ALU
Registres
input
Normalise
ALU
Z1
Z2
C S A N
X3, Y3
Z3
C S A N
X4, Y4
Z4
C S A N
X5, Y5
Z5
C S A N
X6, Y6
Z6
C S A N
ALU
ALU
Registre
output
155
156
Avec deux pipelines
parallèles
Chaînage de pipelines
 Une opération peut commencer lorsque
X1, Y1
C
X2, Y2
C
X3, Y3
X4, Y4
X5, Y5
X6, Y6
S A N
S A N
C S A N
C S A N
C S A N
C S A N
 Les deux premiers opérandes sont prêts
X1 et Y1
 L’unité fonctionnelle est libre
Z1
Z2
Z3
Z4
 Dès qu’un autre couple (Xi, Yi) est prêt, on
l’envoie vers l’UF.
 La production d’une UF est directement
consommée par l’UF suivante
Z5
Z6
157
158
Pour les Load/Store
C= A + B (3 ports d’E/S)
 Les entrées/sorties utilisent des mémoires
entrelacées.
 Sans conflits, elles produisent une donnée
par cycle processeur par port.
 On démarre le calcul avant que toutes les
données soient arrivées
A1
B8
C16
A2
B9
C17
A64
B7
C15
Move V3, C
Move A,V1
C1
B1
B2
B3
......
......
A2 A3 A4 A5
+ + + +
B2 B3 B4 B5
159
Move B,V2
A1
A2
A3
160
ADD V1, V2, V3
Chaînage pour les UF
C = (s x A) + B
 On peut également chaîner les UF
 La ou les sorties des UF sont connectées
 Vload A, V1
directement aux entrées des UF suivantes
 On obtient un Pseudo pipepipe-line par
concaténation
Vload B, V2
Vmul s, V1, V3
Vadd V3, V2, V4
Vstore V4, C
161
162
Téléchargement