Plan Copyright © F. Muller 2004 Ch1 - Introduction Ch2 - Structure de l’ordinateur Ch3 - Modèle de Programmation Ch4 - Conception des Processeurs Ch5 - Pipeline Ch6 - Parallélisme d’instructions Ch7 - Systèmes Mémoire Ch8 - Mémoires Caches Ch9 - Mémoire Virtuelle Ch10 - Systèmes Multiprocesseurs Architecture de l’ordinateur - Pipeline Ch5 - 1 - Pipeline Introduction Pipelining Aléas d’instructions Prédire le temps d’exécution Forwarding du résultat Copyright © F. Muller 2004 Ch5 - 2 - Introduction Objectifs Comprendre le pipelining Calculer le temps de cycle d’un processeur pipeliné Décrire le forwarding de résultat et expliquer la manière dont il affecte le temps d’exécution Calculer le temps d’exécution de petits segments de code sur processeurs pipelinés avec forwarding du résultat Introduction Les premiers ordinateurs De nos jours Copyright © F. Muller 2004 Chaque instruction (étapes de lecture, décodage, lecture du fichier de registre, calcul, …) était entièrement achevée avant d’exécuter la suivante Inconvénient : chaque étapes restent inopérantes la plupart du temps Pipeline : Recouvrir l’exécution de plusieurs instruction afin de réduire le temps d’exécution d’une séquence d’instructions Inconvénient : nécessite quelques ajouts matériels au processeur mais la vitesse des instructions exécutées est augmentée Architecture de l’ordinateur - Pipeline Ch5 - 3 - Pipelining – Principe (1/3) Processeur non Pipeliné Exécution des étapes pas à pas Extraction de l’instruction Décodage de l’instruction 1 2 3 4 Lecture des registres Exécution de l’instruction 5 temps Écriture du résultat dans les registres Copyright © F. Muller 2004 Architecture de l’ordinateur - Pipeline Ch5 - 4 - Pipelining – Principe (2/3) EI Processeur Pipeliné Division du chemin de données en plusieurs sections Ajout de « latches » entre chaque section Une section s’appelle un étage Chaque étage possède une latence d’un cycle horloge DI Décodage de l’instruction 1 cycle d’horloge Latch LR Lecture des registres 1 cycle d’horloge Latch Pipeline à 5 étages Exécution de l’instruction 1 cycle d’horloge Latch ER Architecture de l’ordinateur - Pipeline 1 cycle d’horloge Latch EX Copyright © F. Muller 2004 Extraction de l’instruction Écriture du résultat dans les registres 1 cycle d’horloge Ch5 - 5 - Pipelining – Principe (3/3) Flux des instructions (5 étages) Débit d’une instruction par seconde Latence de 5 cycles par instruction Cycle EI Étages du pipeline DI LR EX 1 2 3 4 5 6 7 Instruction 1 Instruction 2 Instruction 3 Instruction 4 Instruction 5 Instruction 6 Instruction 7 Instruction 1 Instruction 2 Instruction 3 Instruction 4 Instruction 5 Instruction 6 Instruction 1 Instruction 2 Instruction 3 Instruction 4 Instruction 5 Instruction 1 Instruction 2 Instruction 3 Instruction 4 Instruction 1 Instruction 2 Instruction 3 ER Copyright © F. Muller 2004 Architecture de l’ordinateur - Pipeline Ch5 - 6 - Exemple de Processeurs pipelinés (1/3) Copyright © F. Muller 2004 Processeur Profondeur du pipeline Intel Pentium 4 Prescott 31 Intel Pentium 4 20 Intel Core 2 Duo 14 Intel Pentium II 14 AMD Opteron 1xx 12 Intel Pentium III 10 Freescale G4 (PPC 7450) 7 IBM Power4 12 IBM Power5 16 IBM PowerPC 970 16 Sun UltraSPARC III et IV 14 Intel Itanium 10 MIPS R4400 8 Architecture de l’ordinateur - Pipeline Ch5 - 7 - Exemple du processeur K7 & K8 - AMD (2/3) Copyright © F. Muller 2004 Architecture de l’ordinateur - Pipeline Ch5 - 8 - Exemple des processeurs ARM (3/3) ARM7TDMI (60 – 100 MHz) ARM9TDMI (220 MHz) Copyright © F. Muller 2004 Architecture Von Neumann 3 étages de pipeline CPI ~ 1.9 Architecture Harvard 5 étages de pipeline CPI ~ 1.5 Architecture de l’ordinateur - Pipeline Ch5 - 9 - Temps de cycle - Principe Le pipelining augmente en général le nombre de cycles d’horloge que nécessite un programme pour s’exécuter (instructions bloquées) L’amélioration provient du temps de cycle plus réduit entre chaque étage plus de cycles par seconde Nombre d’instruction par unité de temps plus élevé Temps de cycle Temps de cyclepipeliné = Temps de cyclenon pipeliné Moins négligeable lorsque le nb. d’étages augmente + Latence d’un latch du pipeline Nombre d’étages du pipeline Remarque: On considère que la logique est répartie de manière égale entre les étages Copyright © F. Muller 2004 Architecture de l’ordinateur - Pipeline Ch5 - 10 - Temps de cycle - Exemple Exemple Copyright © F. Muller 2004 Un processeur non pipeliné possède un temps de cycle de 25ns. Quel est le temps de cycle d’une version pipelinée du processeur avec 5 étages de pipeline en considérant que chaque latch possède une latence de 1ns ? Même question avec 50 étages de pipeline ? Architecture de l’ordinateur - Pipeline Ch5 - 11 - Temps de cycle – Cas Réaliste La logique du chemin de données ne peut pas être répartie en différents étages de pipeline de latence égale Le concepteur doit trouver le juste milieu Logique de décodage irrégulière (difficile à diviser) Rechercher les endroits où le nombre de valeurs intermédiaires stockées sont réduit Exemple Copyright © F. Muller 2004 Accès au fichier de registres : 3 ns Décodage d’une instruction : 4 ns etc … Supposons qu’un processeur non pipeliné possédant un temps de cycle de 25ns soit divisé en 5 étages avec des latences de 5,7,3,6 et 4 ns et ayant une latence de latch de 1 ns. Quel est le temps de cycle du processeur ? Architecture de l’ordinateur - Pipeline Ch5 - 12 - Latence de pipeline Le pipeline réduit le temps de cycle d’un processeur et augmente le débit des instructions MAIS Le pipeline augmente la latence du processeur Latence du pipeline = nombre d' étage × Tcycle Exemple 1 Tcycle non pipeliné = 25ns, 5 ou 50 étages, latence latch = 1 ns Pour 5 étages Tcycle = 6 ns Pour 50 étages Latence = 6 ns x 5 = 30 ns Tcycle = 1,5 ns Latence = 1,5 ns x 50 = 75 ns Exemple 2 Tcycle non pipeliné = 25ns, 5 étages (latence = 5,7,3,6,4 ns), latence latch = 1 ns Tcycle = 8 ns Latence = 8 ns x 5 = 40 ns Copyright © F. Muller 2004 Architecture de l’ordinateur - Pipeline Ch5 - 13 - Les aléas d’instruction Introduction Le pipelining augmente la performance du processeur en accélérant le débit des instructions Débit Hélas, c’est trop beau pour être vrai … Copyright © F. Muller 2004 Processeur pipeliné à 5 étages, Tcycle de 6 ns offre un débit idéal de 1/6ns = 1,67x108 instructions/s Processeur non pipeliné, Tcycle = 25ns offre un débit de 4x107 instructions/s Conclusion : le processeur pipeliné va 4 fois plus vite Dépendance entre les instructions Les branchements Accès à la mémoire Architecture de l’ordinateur - Pipeline Ch5 - 14 - Les aléas d’instruction Présentation (1/3) Aléas (dépendances) surviennent lorsque les instructions lisent ou écrivent dans des registres, utilisés par d’autres instructions, il existes 4 catégories: LAL (Lecture Après Lecture) 2 instructions lisent dans le même registre Ne posent pas de problème au processeur Exemple … ADD SUB … Copyright © F. Muller 2004 r1, r2, r3 r4, r5, r3 Aléas LAL Architecture de l’ordinateur - Pipeline Ch5 - 15 - Les aléas d’instruction Présentation (2/3) LAE (Lecture Après Écriture) Une instruction lit un registre qui a été écrit par une instruction précédente Appelé aussi dépendances de données ou dépendances réelles Blocage du pipeline, apparition d’une « bulle » (NOP) … ADD SUB … r1, r2, r3 r4, r5, r1 Aléas LAE Cycle Étages du pipeline EI 1 2 ADD r1,r2,r3 SUB r4,r5,r1 DI LR EX ER Copyright © F. Muller 2004 ADD r1,r2,r3 3 4 5 6 7 SUB r4,r5,r1 SUB r4,r5,r1 SUB r4,r5,r1 ADD r1,r2,r3 NOP (Bulle) NOP (Bulle) SUB r4,r5,r1 ADD r1,r2,r3 NOP (Bulle) NOP (Bulle) 8 SUB r4,r5,r1 ADD r1,r2,r3 Architecture de l’ordinateur - Pipeline SUB r4,r5,r1 Ch5 - 16 - Les aléas d’instruction Présentation (3/3) EAL (Écriture Après Lecture) Une instruction écrit après que l’instruction précédente est lu le même registre … ADD SUB … Une instruction écrit après que l’instruction précédente écrit aussi dans le même registre … ADD SUB … r1, r2, r3 r1, r5, r6 Aléas EAE Problèmes Copyright © F. Muller 2004 Aléas EAL EAE (Écriture Après Écriture) r1, r2, r3 r2, r5, r6 Toutes les instructions ne possèdent pas la même latence Processeurs OOO (Out-of-Order) Architecture de l’ordinateur - Pipeline Ch5 - 17 - Les aléas d’instruction Branchement (aléas de contrôle) Les instructions de branchements conditionnels peuvent engendrer des retard car le processeur ne peut pas déterminer la prochaine instruction à exécuter … ADD BEQ SUB … Étages du pipeline EI DI LR r5, r2, r3 saut r1,r5,r2 On suppose que le résultat du registre r5 est différent de 0 Cycle 1 2 3 4 5 6 ADD r5,r2,r3 BEQ saut NOP (bulle) NOP (bulle) NOP (bulle) SUB r1,r5,r2 ADD r5,r2,r3 BEQ saut NOP (bulle) NOP (bulle) NOP (bulle) ADD r5,r2,r3 BEQ saut NOP (bulle) NOP (bulle) ADD r5,r2,r3 BEQ saut NOP (bulle) ADD r5,r2,r3 BEQ saut EX ER Écriture des flags dans le registre d’état Améliorations possibles Copyright © F. Muller 2004 Écriture du CO Ajout d’un dispositif matériel qui calcule à l’avance le branchement Ajout d’un mécanisme de prédiction Architecture de l’ordinateur - Pipeline Ch5 - 18 - Les aléas d’instruction Aléas structurels Survient lorsque l’architecture du processeur n’est pas capable d’exécuter simultanément toutes les instructions dans le pipeline Exemple Fichier de registres Écriture dans le fichier de registres même cycle Lecture dans le fichier de registres Copyright © F. Muller 2004 Les aléas structurels sont plutôt rares dans les processeurs modernes Les processeurs qui exécutent plus d’une instruction par cycle sont restreints sur le type d’instruction à exécuter en parallèle Exemple : opération sur les entiers // opérations sur les flottants Architecture de l’ordinateur - Pipeline Ch5 - 19 - Les aléas d’instruction Marquage sur les registres Le processeur pipeliné doit tenir compte des registres qui doivent être écrits par les instructions présentes dans le pipeline Permet aux instructions suivantes de savoir lors de l’étage LR si les registres sont disponibles Marquage des registres (scoreboarding) Ajout d’un bit de présence par registre Bit à 1 : lecture possible (rempli) Bit à 0 : attente qu’une instruction vienne écrire (vide) Si le ou les registres ne sont pas près, ajout d’une bulle Fichier de registres Bit de présence Copyright © F. Muller 2004 Architecture de l’ordinateur - Pipeline registre Ch5 - 20 - Prédire le temps d’exécution Principe (1/2) Processeur non pipeliné Processeur pipeliné Le temps d’exécution est la somme des temps de chaque instruction Plus complexe, Tenir compte des dépendances Dans le cas idéal Temps d’exécution (en cycle) = nb. d’étage + (nb. Inst. – 1) Solutions Dessiner un diagramme de flux du pipeline (pas très utilisable pour de longs programmes) Diviser le temps d’exécution en 2 parties Copyright © F. Muller 2004 La latence du pipeline Le temps requis pour émettre toutes les instructions du programme Architecture de l’ordinateur - Pipeline Instruction émise Étages du pipeline Cycle n n+1 EI … … DI … … LR ADD r5,r2,r3 … EX … ADD r5,r2,r3 ER … … Ch5 - 21 - Prédire le temps d’exécution Principe (2/2) La durée d’émission totale Temps d’exécution Commence au cycle d’émission de la première instruction Ajout de cycles intermédiaires lorsque le pipeline est bloqué (bulle) Se termine au cycle d’émission de la dernière instruction Latence du pipeline + temps d’émission des inst. – 1 Dans la pratique Latence pour chaque type d’instruction Les instructions sont émises Copyright © F. Muller 2004 Soit durant le cycle qui suit l’émission de l’instruction que les précèdent Soit lorsque toutes les latences de toutes les instructions dont elles dépendent ont terminées Le nombre de cycles d’un programme requis peuvent être calculé en suivant pas à pas l’écoulement séquentiel des instructions afin de repérer à quel moment chacune des instructions parvient à être émise Architecture de l’ordinateur - Pipeline Ch5 - 22 - Prédire le temps d’exécution Exemple 1 Si notre pipeline possède des latences d’instruction de 4 cycles pour les instructions de branchement, 3 cycles pour les autres, quel est le temps d’exécution de la séquence suivante d’instruction ? ADD SUB MUL ASH OR r1, r2, r3 r4, r5, r6 r8, r2, r1 r5, r2, r1 r10, r11, r4 cycle n cycle n+1 (indépendante) cycle n+3 (dépend de ADD) cycle n+4 (dépend de ADD) cycle n+5 (indépendante) Vérification Étages du pipeline EI 6 cycles pour émettre les instructions Cycle 1 2 3 4 5 6 ADD r1,r2,r3 SUB r4,r5,r6 MUL r8,r2,r1 ASH r5,r2,r1 OR r10,r11,r4 OR r10,r11,r4 ADD r1,r2,r3 SUB r4,r5,r6 MUL r8,r2,r1 ASH r5,r2,r1 ASH r5,r2,r1 OR r10,r11,r4 ADD r1,r2,r3 SUB r4,r5,r6 MUL r8,r2,r1 MUL r8,r2,r1 ASH r5,r2,r1 OR r10,r11,r4 ADD r1,r2,r3 SUB r4,r5,r6 NOP (bulle) MUL r8,r2,r1 ASH r5,r2,r1 OR r10,r11,r4 ADD r1,r2,r3 SUB r4,r5,r6 NOP (bulle) MUL r8,r2,r1 ASH r5,r2,r1 DI LR EX ER Copyright © F. Muller 2004 Architecture de l’ordinateur - Pipeline 7 8 9 10 OR r10,r11,r4 Ch5 - 23 - Prédire le temps d’exécution Exemple 2 Le pipeline possède 7 étages, les instructions de branchement possèdent une latence de 5 cycles, les autres instructions une latence de 2 cycles. Nous supposerons que le branchement n’est pas effectué BNE DIV ADD SUB MUL Copyright © F. Muller 2004 r4, #0, r5 r2, r1, r7 r8, r9, r10 r5, r2, r9 r10, r5, r8 Architecture de l’ordinateur - Pipeline Ch5 - 24 - Forwarding de résultat Principe Une grande partie des délai (dépendance de données) est due au temps requis pour écrire le résultat d’une instruction dans le fichier de registre Solution: transmettre le résultat de l’étage d’exécution directement aux instructions situées dans les précédents étages du pipeline Forwarding de résultat (bypassing) Cycle Étages du pipeline EI 1 2 ADD r1,r2,r3 SUB r4,r5,r1 DI LR ADD r1,r2,r3 3 5 6 7 8 SUB r4,r5,r1 SUB r4,r5,r1 SUB r4,r5,r1 ADD r1,r2,r3 NOP (Bulle) NOP (Bulle) SUB r4,r5,r1 ADD r1,r2,r3 NOP (Bulle) NOP (Bulle) SUB r4,r5,r1 ADD r1,r2,r3 EX ER Exécution de ADD Copyright © F. Muller 2004 4 Écriture du résultat dans r1 Architecture de l’ordinateur - Pipeline Lecture de r1 SUB r4,r5,r1 Exécution de SUB Ch5 - 25 - Forwarding de résultat Exemple d’implémentation Les processeurs implémentent le forwarding de résultat différemment. Par exemple, on peut éviter l’ajout d’un chemin de bypass: EI Latch DI 1er demi cycle : Écriture du fichier de registres 2ème demi cycle : lecture du fichier de registres LR Lecture des registres Latch Ramène à 2 cycles de latence l’exemple précédent Si on ajoute un chemin de bypass, la latence est de 1 cycle Chemin habituel EX Architecture de l’ordinateur - Pipeline Chemin du forwarding de résultat Exécution de l’instruction Latch ER Copyright © F. Muller 2004 Décodage de l’instruction Latch Bilan Extraction de l’instruction Écriture du résultat dans les registres Ch5 - 26 - Forwarding de résultat Exemple Quel est le temps d’exécution (en cycles) du code suivant (cf. Aléas LAE) si le forwarding de résultat est implémenté dans notre pipeline à 5 étages ? ADD SUB r1, r2, r3 r4, r5, r1 cycle n cycle n+1 (bypass) 2 cycles pour émettre les instructions Copyright © F. Muller 2004 Architecture de l’ordinateur - Pipeline Ch5 - 27 - Synthèse Le pipeline améliore la performance des processeurs en recouvrant l’exécution de plusieurs instructions La performance crête d’un système pipeliné dépend Copyright © F. Muller 2004 Du nombre d’étages De l’équilibrage de répartition de la logique d’exécution Délai des latches L’impact du pipeline diminue à mesure que le nombre d’étages augmente (latches non négligeables) La performance d’un système pipeliné est limitée par les dépendances de données : LAE, EAL et EAE Les branchements limitent la performance du pipeline Le forwarding est utilisé pour réduire le délai causé par les dépendances LAE, c’est-à-dire la latence des instructions Architecture de l’ordinateur - Pipeline Ch5 - 28 -