Parallélisme des instructions Architecture et technologie des ordinateurs II Parallélisme des instructions Processeurs superscalaires Processeurs VLIW MÉMOIRE PRINCIPALE DD IO IO BUS SYSTÈME Cache d'instructions MMU Unité de contrôle Unité de traitement Cache de données TLB ALU Décodeur Unité flottante PC CPU Registres G. Tempesti 1
Familles des processeurs ILP Architecture et technologie des ordinateurs II Familles des processeurs ILP Il y a deux grandes familles de processeurs ILP (Instruction Level Parallelism), selon que le logiciel (le compilateur) ou le matériel (le processeur) résout la résolution des dépendances et effectue l'allocation des ressources sont effectuées par : les processeurs superscalaires et les processeurs VLIW (Very Long Instruction Word) COMPILATEUR PROCESSEUR front end et optimisation superscalaire détermination des dépendances détermination des dépendances allocation des ressources allocation des ressources VLIW exécution G. Tempesti 2
Processeurs superscalaires Architecture et technologie des ordinateurs II Processeurs superscalaires instruction unité de dispatch décodage décodage décodage unité de traitement 2 unité de traitement 1 unité de traitement 0 G. Tempesti 3
Processeurs superscalaires Architecture et technologie des ordinateurs II Processeurs superscalaires INPORT Adresse Adresse INPORT OUTPORT REGISTRES REGISTRES REGISTRES PC Séquenceur I0 IR Z I1 Décodeur SHIFTER ADDER X ALU O SHIFTER O INPORT X OUTPORT O R0 X ... Rn O ADDER REGISTRES G. Tempesti 4
Politiques d'envoi des instructions Architecture et technologie des ordinateurs II Politiques d'envoi des instructions In-order issue with in-order completion: les instructions sont cherchées, décodées et envoyées aux unités de traitement dans l’ordre d’écriture du programme. Les résultats sont écrits dans le même ordre. In-order issue with out-of-order completion: les instructions sont cherchées, décodées et envoyées aux unités de traitement dans l’ordre d’écriture du programme. Les résultats sont écrits dès qu'ils sont prêts. Out-of-order issue with out-of-order completion: les instructions sont cherchées, décodées et envoyées aux unités de traitement dès que leurs opérandes sont prêts et que les ressources qu'elles demandent sont disponibles. Les résultats sont écrits dès qu'ils sont prêts. G. Tempesti 5
Politiques d'envoi des instructions Architecture et technologie des ordinateurs II Politiques d'envoi des instructions I1 a besoin de deux cycles d'exécution | I5 dépend du résultat de I4 I3 et I4 utilisent la même ressource | I5 et I6 utilisent la même ressource I1 I2 I3 I4 I5 I6 1 2 3 4 5 6 7 8 I1, I2 I3, I4 I4, I5, I6 decode execute writeback cycle window In-order issue with in-order completion Out-of-order issue with in-order completion Out-of-order issue with out-of-order completion G. Tempesti 6
Out-of-order issue - Implémentation Architecture et technologie des ordinateurs II Out-of-order issue - Implémentation Queue d'instructions: quand l'instruction au sommet de la queue est suspendue, d'autres instructions peuvent être exécutées (si elles n'ont pas de dépendances). INPORT Adresse PC Séquenceur Unité de dispatch: dès leur arrivée dans le processeur, les instructions sont envoyées au décodeur, qui analyse les dépendances. IR Unité de dispatch d'instruction Fenêtre Décodeur Fenêtre d'instruction: le décodeur envoie les instructions dans la fenêtre, tant qu'il y a de la place. Les instructions sont envoyées en exécution, sans regarder l'ordre, pour autant qu'il n'y ait pas de conflits de ressources. ADDER X ALU O SHIFTER O INPORT X OUTPORT O R0 X ... Rn O Un tableau de marques (scoreboard) est une liste des ressources du processeur: dès qu'une instruction demande une (ou plusieurs) des ressources, cette dernière devient indisponible pour les instructions suivantes. G. Tempesti 7
Exemple: le processeur PowerPC 601 Architecture et technologie des ordinateurs II Exemple: le processeur PowerPC 601 Architecture 32 bits Instructions à taille fixe (32 bits) Alignement obligatoire des instructions Big-endian ou little-endian Architecture superscalaire à trois unités de traitement (entiers, virgule flottante et sauts) Cache interne: 32 KB, unifié, 8 voies set-associative, adressé physiquement Pipelines à différentes longueurs Bus de données à 64 bits Prédiction statique du saut 32 registres entiers et 32 registres virgule flottante Registre de conditions G. Tempesti 8
Exemple: le processeur PowerPC 601 Architecture et technologie des ordinateurs II Exemple: le processeur PowerPC 601 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 G. Tempesti 9
Exemple: le processeur PowerPC 601 Architecture et technologie des ordinateurs II Exemple: le processeur PowerPC 601 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 fasse directement que la simple précision) G. Tempesti 10
Exemple: le processeur PowerPC 601 Architecture et technologie des ordinateurs II Exemple: le processeur PowerPC 601 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 par coup d’horloge. Trois instructions peuvent être envoyées en parallèle aux différentes unités de traitement. Les instructions sur les entiers sont toujours exécutées dans l’ordre. En conséquence, une seule instruction accédant à la mémoire est retirée de la queue par cycle d’horloge G. Tempesti 11
Exemple: le processeur PowerPC 601 Architecture et technologie des ordinateurs II Exemple: le processeur PowerPC 601 IU (load/store) MMU adresse physique unité des instructions 52 32 adresse logique adresse logique MMU cache adresse physique répertoire de cache bus d’adresse G. Tempesti 12
Exemple: le processeur PowerPC 601 Architecture et technologie des ordinateurs II Exemple: le processeur PowerPC 601 Caractéristiques du cache: 32 KBytes unifié adressé physiquement 8 voies, associatif par ensembles ensembles de 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 16 mots d’une ligne sont contigus dans la mémoire et ne peuvent pas croiser la limite d’une page les opérations du cache se font sur la base d’un secteur G. Tempesti 13
Exemple: le processeur PowerPC 601 Architecture et technologie des ordinateurs II Exemple: le processeur PowerPC 601 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 Adressage des sauts: adressage absolu adressage relatif saut au registre de lien (LR) saut au registre compteur (CTR) opcode RB offset 31 11 6 RA 16 opcode adresse 31 29 6 30 1 LK opcode offset 31 29 6 30 LK G. Tempesti 14
Exemple: le processeur PowerPC 601 Architecture et technologie des ordinateurs II Exemple: le processeur PowerPC 601 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 fonction d'un bit y spécifié dans 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 n'est 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. G. Tempesti 15
Exemple: le processeur Alpha Architecture et technologie des ordinateurs II Exemple: le processeur Alpha Architecture 64 bits Taille unique des instructions (32 bits) Alignement obligatoire des instructions et des données Little-endian Architecture superscalaire avec des pipelines de longueur différente Adresse virtuelle sur 64 bits, sans segmentation Trois types de données supportés, en 32 (longword) ou 64 (quadword) 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 y a des instructions de manipulation des bytes) Les sauts sont prédits 32 registres entiers (R31 toujours égal à 0) et 32 registres virgule flottante (F31 toujours égal à 0), tous à 64 bits G. Tempesti 16
Exemple: le processeur Alpha Architecture et technologie des ordinateurs II Exemple: le processeur Alpha 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: entier réel saut load store op. load store op. ent. réel load entier X X store entier X opération entière X X X X X load réel X X store réel X opération réelle X X X X X saut entier X saut réel X G. Tempesti 17
Exemple: le processeur Alpha Architecture et technologie des ordinateurs II Exemple: le processeur Alpha S D I F G H J K W réels F load/store S D I A B W A B W entiers chemin de bypass G. Tempesti 18
Exemple: le processeur Alpha Architecture et technologie des ordinateurs II Exemple: le processeur Alpha 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-delà 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 tampon d’écriture. G. Tempesti 19
Exemple: le processeur Alpha Architecture et technologie des ordinateurs II Exemple: le processeur Alpha Les instructions sont cherchées et envoyées à l'exécution dans l’ordre. 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. 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. 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. Prédiction des sauts: 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. La pénalité pour une mauvaise prédiction est de 4 cycles. G. Tempesti 20
Architecture et technologie des ordinateurs II Processeurs VLIW instruction VLIW meta-instr 2 meta-instr 1 meta-instr 0 décodage décodage décodage unité de traitement 2 unité de traitement 1 unité de traitement 0 Avantage: la complexité du matériel est inférieure à celle d’un processeur superscalaire: cela permet d’avoir une fréquence d’horloge plus élevée. Désavantage: la performance dépend énormément de la qualité du compilateur. G. Tempesti 21
Architecture et technologie des ordinateurs II Processeurs VLIW LOAD1 LOAD0 NOP NOP NOP NOP ADDI MUL numéro d’unité VLIW classique séparateur LOAD3 NOP ADD NOP 1 1 ADDI MUL 1 1 1 LOAD1 1 LOAD0 instruction compressée X X X …. X X X …. 1 1 1 LOAD2 1 ADD crossbar 3 2 1 VLIW moderne LOAD1 LOAD0 NOP NOP instruction étendue NOP NOP ADDI MUL LOAD3 NOP ADD NOP G. Tempesti 22
Exemple: le processeur Itanium Architecture et technologie des ordinateurs II Exemple: le processeur Itanium EPIC = Explicitly Parallel Instruction Computing Le parallélisme apparaît de façon explicite dans les instructions: il y a un passage de la complexité du matériel vers le compilateur Trois instructions groupées dans un bundle de 128 bits Nombre élevé de registres (128 + 128) Exécution à prédicats Exécution directe du code x86 Technologie: 0.18µ 5M Vitesse: 800 MHz Performance: SPECint95: 50 SPECfp95: 100 G. Tempesti 23
Exemple: le processeur Itanium Architecture et technologie des ordinateurs II Exemple: le processeur Itanium 41 41 41 5 instruction 2 instruction 1 instruction 0 template opcode registre prédicat (6 bits) source 1 (7 bits) source 2 (7 bits) destination (7 bits) extension de l’opcode / adresse de saut/ divers information sur le groupement des instructions G. Tempesti 24