Etude de cas: Power PC et Alpha

Transcription

Etude de cas: Power PC et Alpha
Etude de cas:
Power PC et Alpha
Eduardo Sanchez
Laboratoire de Systèmes Logiques
Ecole Polytechnique Fédérale de Lausanne
Histoire du Power PC
Architecture POWER (Performance Optimized With Enhanced RISC)
RS/6000
processeur multi-chips
RIOS
Page 2
RSC
RIOS Single Chip
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Power PC
association
IBM-Apple-Motorola
Caractéristiques du Power PC 601
♦ Architecture 32 bits
♦ Instructions à taille fixe (32 bits)
♦ Architecture superscalaire à trois unités de traitement (entiers,
virgule flottante et sauts)
♦ Cache interne: 32 KB, unifiée, 8 voies set-associative, adressée
physiquement
♦ Pipelines à différentes longueurs
♦ Bus de données à 64 bits
♦ Prédiction statique du saut (absence de pénalité de saut)
♦ Alignement obligatoire des instructions
♦ 32 registres entiers et 32 registres virgule flottante
♦ Registre de conditions
♦ Big-endian ou little-endian
Page 3
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Page 4
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Unité des entiers (IU)
♦ Exécute toutes les opérations sur des données entières et tous
les accès à la mémoire (load/store), y compris ceux avec les
registres virgule flottante
♦ Contient:
•
•
•
•
•
une ALU
un multiplicateur
un diviseur
un registre XER (integer exception register)
32 registres généraux
♦ Peut recevoir une instruction par coup d’horloge
Page 5
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Unité virgule flottante (FPU)
♦ Contient:
•
•
•
•
un multiplicateur/additionneur
un diviseur
un registre FPSCR (FP status and control register)
32 registres généraux à 64 bits
♦ Implémentation complète du standard IEEE 754, en simple ou
double précision (bien que l’unité ne fait directement que la simple
précision)
Page 6
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Unité des instructions
♦ Contient deux parties:
• une queue d’instructions à 8 niveaux
• une unité de traitement des sauts (BPU):
∗
∗
∗
∗
une ALU pour le calcul des adresses
un registre-compteur (CTR)
un registre de lien (LR)
un registre de conditions (CR)
♦ La queue d’instructions peut recevoir jusqu’à 8 instructions de la cache (un
secteur) par coup d’horloge
♦ Trois instructions parmi les 4 de la moitié inférieure de la queue peuvent être
envoyées en parallèle aux différentes unités de traitement
♦ Les instructions sur les entiers ne peuvent être envoyées que du dernier niveau,
afin d’assurer l’exécution dans l’ordre de ce type d’instruction. En conséquence,
une seule instruction accédant à la mémoire est retirée de la queue par cycle
d’horloge
Page 7
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
cache
IQ7
IQ6
IQ5
IQ4
IQ3
IQ2
IQ1
IQ0 (IU Decode)
FPU Buffer
FPU Decode
IU Buffer
FPU Execute 1
IU Execute
Load/Store
FPU Execute 2
Writeback
Page 8
BPU Dec/Exec
Writeback
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Writeback
Gestion de la mémoire
IU
(load/store)
MMU
52
unité des
instructions
32
adresse logique
adresse logique
MMU
adresse
physique
cache
répertoire
de cache
bus
d’adresse
Page 9
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
adresse
physique
♦ Caractéristiques de la mémoire cache:
•
•
•
•
•
•
•
•
•
32 KBytes
adressée physiquement
unifiée
8 voies, associative par ensembles
un ensemble contient 64 lignes, 2 secteurs par ligne, 8 mots par secteur
algorithme LRU pour le remplacement
écriture copy-back ou write-through au choix
chaque ligne possède un tag et 4 bits d’état (2 par secteur)
les états possibles d’un secteur sont:
∗
∗
∗
∗
modifié: le secteur contient la seule valeur correcte pour cette adresse
exclusif: le secteur est le seul à stocker cette donnée (la même qu’en mémoire)
partagé: la même valeur que dans la mémoire et qu’au moins dans une autre cache
non valable: le secteur contient une valeur incorrecte
• les 16 mots d’une ligne sont contigus dans la mémoire et ne peuvent pas
croiser la limite d’une page
• les opérations de la cache se font sur la base d’un secteur
Page 10
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Page 11
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Répertoire d’instructions
♦ Toutes les instructions ont une largeur unique: 32 bits
♦ L’alignement des instructions est obligatoire
♦ Types d’instruction:
• Instructions sur les entiers (byte, half-word, word)
∗
∗
∗
∗
arithmétiques
comparaison
logiques
rotation et décalage
• Instructions virgule flottante (simple et double précision)
∗
∗
∗
∗
∗
Page 12
arithmétiques
multiplication/addition
arrondi et conversion
comparaison
status et contrôle
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
• Load/store
∗ entiers (byte, half-word, word)
∗ multiple sur les entiers
∗ virgule flottante (word, double word)
• Séquencement
∗ sauts conditionnels et inconditionnnels
∗ traps
• Contrôle du processeur
∗ accès aux registres spéciaux
• Gestion de la mémoire
∗ gestion de la cache
∗ gestion de la MMU
Page 13
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Modes d’adressage
♦ Adressage des données:
• Indirect de registre
adresse = (RA)
• Indirect de registre avec index
adresse = (RA) + (RB)
• Indirect de registre avec index immédiat
adresse = (RA) + offset
6
opcode
Page 14
11
RB
16
RA
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
31
offset
♦ Adressage des sauts:
• adressage absolu
6
29 30 31
opcode
adresse
6
opcode
11
BO
1
16
LK
29 30 31
adresse
BI
1
LK
• adressage relatif
6
29 30 31
opcode
offset
6
opcode
11
BO
16
BI
• saut au registre de lien (LR)
• saut au registre compteur (CTR)
Page 15
0
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
LK
29 30 31
offset
0
LK
Prédiction des sauts
♦ La BPU a besoin d’un seul cycle d’horloge pour décoder et exécuter
une instruction de saut
♦ Dans le cas d’un saut conditionnel, la BPU vérifie dans le pipeline si
une instruction en cours peut modifier la condition. Si non,
l’adresse de saut est calculée. Si oui, la branche est prédite, en
foction du bit y du champ BO de l’instruction
♦ Si la prédiction s’avère fausse, on enlève les instructions de la
branche prédite et on prend l’autre branche
♦ Le writeback est interdit dans les instructions d’une branche tant
que la condition ne soit pas résolue
♦ Il existe un seul niveau de prédiction: on ne fait pas de prédiction à
l’intérieur d’une branche qui n’est pas encore résolue
♦ Lers instructions de séquencement ne peuvent pas être exécutées
dans le désordre
Page 16
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Traitement des conditions
♦ Le registre de conditions (CR) est divisé en 8 champs à 4 bits:
3
CR0
negative (LT)
positive (GT)
zero (EQ)
summary overflow (SO)
7
CR1
11
CR2
15
CR3
19
CR4
23
CR5
27
CR6
31
CR7
exceptions
virgule flottante
♦ La mise à jour de CR0 et CR1 est commandée dans l’instruction. Par
exemple:
add
RD,RA,RB
RD ← RA + RB
add.
mise à jour de CR0
addo
mise à jour de OV dans XER
addo.
mise à jour de CR et XER
Page 17
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
♦ Les instructions de comparaison modifient un champ de CR, choisi
dans l’instruction même (CR0 par défaut)
♦ La condition testée dans une instruction de saut conditionnel est
l’un des 32 bits de CR, choisi par le champ BI de l’instruction
♦ En plus, le champ BO de l’instruction détermine un traitement
additionnel de la condition:
0000y
0001y
0010y
0100y
0101y
Page 18
décrémentation de CTR
saut si CTR≠0 et la condition est fausse
décrémentation de CTR
saut si CTR=0 et la condition est fausse
saut si la condition est fausse
décrémentation de CTR
saut si CTR≠0 et la condition est vraie
décrémentation de CTR
saut si CTR=0 et la condition est vraie
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
♦ 0110y
1000y
1001y
10100
saut si la condition est vraie
décrémentation de CTR
saut si CTR≠0
décrémentation de CTR
saut si CTR=0
saut inconditionnel
♦ Le bit y détermine le type de prédiction du saut:
si y=0 alors le saut en arrière est pris (valeur par défaut)
si y=1 alors le saut en avant est pris
Page 19
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Traitement des exceptions
♦ Types d’exception:
asynchrone
imprécise
machine check
system reset
asynchrone
précise
interruption externe
synchrone
précise
produite par une instruction
♦ Dans un traitement précis, l’adresse de l’instruction qui cause
l’exception est connue: ni cette instruction ni les suivantes ne sont
exécutées. L’état de la machine est sauvé
♦ Dans un traitement imprécis, l’état de la machine ne peut pas être
sauvé (en tout cas pas complètement)
♦ Les exceptions synchrones sont traitées dans l’ordre des
instructions, même si elles sont détectées autrement: une
instruction synchrone est traitée seulement lorsque l’exécution de
toutes les instructions précédentes est terminée
Page 20
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
♦ Les actions réalisées par le processeur lors du traitement d’une
exception sont:
• l’adresse de retour et le registre d’état sont sauvés dans SRR0 et SRR1
(Save/Restore Registers)
• on passe à l’état superviseur
• le contrôle est passé à une adresse déterminée pour chaque exception
(vecteur d’exception)
Page 21
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Timing d'un succès de la cache
Page 22
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Timing d'un échec de la cache
Page 23
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Page 24
Timing d'un
saut non pris
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Processeur Alpha: caractéristiques générales
♦ Architecture 64 bits
♦ 32 registres entiers (R31 toujours égal à 0) et 32 registres virgule
flottante (F31 toujours égal à 0), tous à 64 bits
♦ Adresse virtuelle sur 64 bits, sans segmentation
♦ Il n’y a pas de registre de conditions
♦ Taille unique des instructions (32 bits)
♦ Little-endian
♦ Alignement obligatoire des instructions et des données (un
opérande de taille 2N bytes possède une adresse avec les N bits de
poids faible à 0)
Page 25
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
♦ Trois types de données supportés, en mode longword (32 bits) ou
quadword (64 bits):
• entiers
• virgule flottante IEEE
• virgule flottante DEC
♦ Il n’y a pas de division pour les entiers
♦ Il n’y a pas d’opérations sur les bytes. Par contre, il existe des
instructions de manipulation des bytes
♦ Les exceptions arithmétiques sont imprécises
♦ Les exceptions du gestionnaire de mémoire sont précises
♦ Architecture superscalaire avec des pipelines de longueur
différente
♦ Il n’y a pas de pénalité de branchement: les sauts sont prédits
Page 26
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Format des instructions
Opérations:
26
21
16
13
opcode
RA
constante
opcode
RA
RB
opcode
RA
RB
0
12
5
0
1
fonction
RC
0
fonction
RC
fonction
entière
réelle
RC
Accès à la mémoire:
26
opcode
Sauts:
RA
26
opcode
PAL:
16
RB
0
déplacement
21
RA
0
déplacement
26
opcode
Page 27
21
0
fonction
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Types d’instruction
♦ Opérations arithmétiques sur les entiers:
•
•
•
•
addition
soustraction
multiplication
comparaison: deux registres, signés ou non, sont comparés et le résultat
booléen est écrit dans le registre destination
♦ Opérations arithmétiques sur les réels:
•
•
•
•
•
•
Page 28
addition
soustraction
multiplication
division
comparaison
conversion de format
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
♦ Accès à la mémoire (load/store):
• un seul mode d’adressage est accepté:
adresse = RB + (constante sur 16 bits)
(si le registre est R31, c’est un adressage absolu)
• les accès sont permis seulement sur 32 ou 64 bits
♦ Sauts:
• saut conditionnel:
test de RA(=0, >0, <0, ≠0, ≥0, ≤0, pair, impair) ou FA (=0, >0, <0,
≠0, ≥0, ≤0)
adresse = PC + 4(constante sur 21 bits)
• saut inconditionnel:
adresse = PC + 4(constante sur 21 bits)
l’adresse PC+4 est stockée dans RA (RA=R31 si ce n’est pas nécessaire)
• saut calculé:
adresse = RB
l’adresse PC+4 est stockée dans RA (RA=R31 si ce n’est pas nécessaire)
Page 29
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
♦ Instructions PAL (Privileged Architecture Library):
permettent l’appel à des sousprogrammes en mode privilégié, avec
les interruptions inhibées.
Ces instructions sont utilisées pour gérer toutes les actions en
rapport avec le système d’exploitation, réalisées par microcode
dans les processeurs CISC
♦ Instructions diverses:
l’instruction TRAPB (Trap Barrier) est placée après une opération
arithmétique si l’on veut un traitement précis des exceptions:
l’envoi pour exécution des instructions suivantes est arrêté jusqu’à
ce que toutes les instructions précédentes terminent sans
exceptions
Page 30
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Avantage du MOVE conditionnel
♦ Cette instruction permet l’élimination d’une instruction de saut
(c’est-à-dire d’une prédiction)
♦ Exemple:
Programme en C;
if (a == 1)
c = b << 2;
else c = b << 4;
On suppose:
R1 contient b
R7 pointe à a
R8 pointe à c
Page 31
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Code avec saut conditionnel:
LDL
CMPEQ
BEQ
SLL
BR
shft2: SLL
store: STL
R2,R7,0
R5,R2,1
R5,shft2
R3,R1,4
store
R3,R1,2
R8,R3,0
R2 ← a
test de a avec 1
saut si a==1
R3 ← b<<4
R3 ← b<<2
M[R8] ← c
Code avec MOVE conditionnel:
LDL
SLL
SLL
CMPEQ
CMOV
STL
Page 32
R2,R7,0
R3,R1,4
R4,R1,2
R5,R2,1
R3,R4,R5
R8,R3,0
R2 ← a
R3 ← b<<4
R4 ← b<<2
test de a avec 1
R3 ← R4 si a==1
M[R8] ← c
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
L’organisation superscalaire du 21064
♦ Il y a quatre unités de traitement:
•
•
•
•
unité des entiers
unité des réels
unité des load/store
unité des sauts
♦ Deux instructions peuvent être exécutées en parallèle:
load entier
store entier
opération entière
load réel
store réel
opération réelle
saut entier
saut réel
Page 33
load
entier
store
X
X
X
op.
X
X
X
X
X
load
réel
store
X
X
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
X
op.
X
X
X
X
X
saut
ent.
réel
X
X
♦ Les instructions sont cherchées et envoyées à exécution dans
l’ordre
♦ Une paire d’instructions peuvent être envoyées en parallèle
seulement si elles sont alignées dans le même quadword. Si
seulement la première instruction est envoyée en exécution, la
deuxième reste seule pour le cycle suivant
♦ Les registres entiers possèdent 4 ports de lecture et 2 d’écriture
♦ Les registres réels possèdent 3 ports de lecture et 2 d’écriture
♦ Les combinaisons saut + load/store ne sont pas possibles parce
que le port de lecture des registres est partagé par ces deux
unités
Page 34
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Le pipeline du 21064
S
D
I
F
G
H
J
K
F
S
D
I
A
B
A
B
W
chemin de bypass
Page 35
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
W
load/store
entiers
W
réels
♦ F (fetch): recherche de deux instructions dans la cache
♦ S (swap): envoi des deux instructions dans le bon pipeline.
Prédiction du saut
♦ D (decode): identification des opérandes
♦ I (issue): lecture des opérandes. Analyse des dépendances. Au-délà
de cette phase il est impossible de bloquer le pipeline
♦ A: première phase de l’ALU. Les opérations et les décalages courts
sont terminés. L’adresse du load/store est calculée. Le PC est mis à
jour
♦ B: deuxième phase de l’ALU. Les décalages longs sont terminés. La
cache de données est lue pour les loads
♦ W (write): écriture des registres. Le succès/échec de l’accès à la
cache est déterminé: lors d’un succès, on écrit dans le buffer
d’écriture
Page 36
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
♦ Le pipeline des réels utilise 5 phases pour les opérations d’addition
et multiplication. La division utilise 31 ou 61 cycles, selon la
précision (simple ou double)
♦ Il y a un total de 38 bypasses, pour permettre l’utilisation du
résultat d’une opération comme opérande d’une instruction
postérieure, sans attendre l’écriture du registre
♦ La pénalité d’une mauvaise prédiction de saut est de 4 cycles
Page 37
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Prédiction des sauts du 21064
♦ La première fois qu’un saut a lieu, la prédiction se fait de façon
statique: les sauts en arrière sont pris. Par la suite, la prédiction
se fait dynamiquement: un bit d’histoire est gardé dans la cache
pour toutes les instructions de saut (en fait, il y a un bit par groupe
de deux instructions dans la cache, ce qui fausse la prédiction de
deux sauts contigus)
♦ La pénalité pour una mauvaise prédiction est de 4 cycles
Page 38
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Traitement des exceptions du 21064
♦ Les exceptions arithmétiques sont traitées par défaut de façon
imprécise (il n’est pas garanti que les instructions qui suivent celle
produisant l’exception ne sont pas exécutées)
♦ Le traitement des exceptions arithmétiques peut être rendu
précis (instruction TRAPB), mais avec une perte de performance
Page 39
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne

Documents pareils