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