Chapitre2 La technique du Pipeline

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

Électronique de base du processeur
sont des registres 32 bits
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
TECHNOLOGIE DES ORDINATEURS
CALCUL MENTAL Quelques situations.
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Architecture des processeurs généralistes haute performance
Concepts d’architectures avancées
GEF 435 Principes des systèmes d’exploitation
Plan du cours : 2ème Partie
Objectif de l’exposé.
Performances 1 Évolution : Performance. Performances 2 Évolution : Mémoire.
Aléas 1 Les aléas de données Jusquà présent toutes les instructions étaient indépendantes ; aucune dentre elles nutilisaient les résultats calculés par.
Objectifs Nous allons concevoir une mise en œuvre contenant un noyau de jeu d’instructions. Nous verrons comment l’architecture de jeu d’instructions.
Les aléas de données Jusqu’à présent toutes les instructions étaient indépendantes ; aucune d’entre elles n’utilisaient les résultats calculés par une.
Ch 5 : La Prédiction des Branchements
Introduction Par définition, dans un modèle à cycle unique, le cycle d’horloge doit avoir la même durée pour toutes les instructions. Le cycle d’horloge.
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Architecture Systèmes
Exécution en ordre partiel Une fois les instructions renommées, les seules dépendances qui subsistent entre instructions registre-registre sont les dépendances.
Architecture de machines Le microprocesseur
Chapitre 8 : L’architecture de base des ordinateurs
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Mémoire cache ou antémémoire
Architecture et technologie des ordinateurs II
Architecture de base d’un ordinateur
Gestion des Périphériques
Architecture et technologie des ordinateurs II
Architecture des Ordinateurs
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
LES SYSTEMES AUTOMATISES
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Pipeline – opérations multicycles Nous avons vu jusquà maintenant comment faire un.
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Pipeline Les systèmes modernes utilisent tous des architectures pipelines – Pourquoi?
Systèmes Superscalaires et VLIW
Parallélisme des instructions
Parallélisme des instructions
Architecture et technologie des ordinateurs II
Chap. 2 - Structure d’un ordinateur
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
Lycée ELKHAWARIZMI De SAFI
Processeurs et chemins des données
Architecture Des Ordinateurs Microprocesseur Et Mémoire
André Seznec Caps Team IRISA/INRIA 1 Processeurs Hautes Performances Panorama et Nouveaux Défis André Seznec IRISA/INRIA
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Encodage du jeu d’instructions.
1 INFOR 101 Chapitres 5 et 6 Marianne Morris. 2 Discussion du devoir # 2 La solution du devoir No. 2 est à la page Web du cours!
3-Présentation d’un µP simple
L’architecture du processeur Xtensa de Tensilica
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Modélisation VHDL de.
ARPO: architecture des processeurs superscalaires,VLIW et optimisation André Seznec et François Bodin.
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Conception de processeurs – partie 2 Approches traditionnelles.
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Étude de cas Maintenant qu’on a vu les pipelines, le superscalaire, le VLIW, la gestion des.
Architecture et technologie des ordinateurs II
INFOR 101 Chapitre 5 Marianne Morris.
Architecture et technologie des ordinateurs II
CST 101 : Conception des systèmes de télécommunication
Contrôle 1 Mise en place du contrôle Chemin de données Mémoire Entrées Contrôle Sorties.
Patricia Renault UPMC 2005/2006
Pipeline 1 Amélioration des performances par la technique du pipeline.
Représentation digitale des données Trois formats de base: 1) Décimale: base 10 (Une constante i.e dimension d ’1 vecteur) 2) Binaire: base 2 ( Mask, set/reset.
Pipeline 1 Amélioration des performances par la technique du pipeline.
Chapitre 3 L’accès aux données.
Les bascules et registres
Processeur RISK R3000. PLAN - Processeur RISK R3000 Structure du processeur Structure du processeur Logique de contrôle Logique de contrôle Détection.
Formations Système Embarqué & Informatique Industrielle
Département Informatique L’optimisation Laurent JEANPIERRE IUT de CAEN – Campus 3.
Unité Centrale de Traitement Processeur
Ch3 : Les Processeurs Superscalairs
Transcription de la présentation:

Chapitre2 La technique du Pipeline Architecture Des Ordinateurs Master Info Première Année Master1/IUP 3

Introduction Idée : Ne pas attendre la fin de l ’instruction pour démarrer une nouvelle Découper l ’exécution de l ’instruction en phase +- indépendantes et de même degrés de complexité Si non perte de temps A B C D 4 Paquets Laver Essorer Plier 30 mn 40mn 20mn

Solution naïve : Un paquet à la fois 6h 7h 8h 9h 10h 11h 12h Time 30 40 20 30 40 20 30 40 20 30 40 20 A B C D 6h pour laver les 4 paquets

Laver mes vêtements en pipeline: Possible mais !! 6 PM 7 8 9 10 11 Time 40 40 30 40 40 20 A Perte de temps à transférer les paquets B C D Les 4 paquets sont lavés en 3.5h au lieu de 6h

Appliquant le principe à l’architecture Rappel : L’exécution de l’instruction se fait toujours en 5 étapes Lecture de l’instruction Décodage et en même temps lecture des registres Calcul dans l’UAL Instruction UAL : appliquer l’opération Instruction Mémoire : Calculer l’adresse Instruction de branchement : Calculer l’adresse de branchement et évaluer la condition Accès mémoire Mise à jour du registre destination (pour les UAL et loads) ou CP (pour les branchements)

Chemin de données de la machine MIPS sans Pipeline F : I n s t r u c t i o n f e t c h I D : I n s t r u c t i o n d e c o d e / E X : E x e c u t e / M E M : M e m o r y a c c e s s W B : W r i t e b r e g i s t e r f i l e r e a d a d d r e s s c a l c u l a t i o n a c k I n s t r u c i o m e y A d 4 3 2 l S h f M x 1 P C W a R g Contenu reg Branchement terminé étape 4 Num de reg CP+4 e g i s t e r 1 R e a d r e g i s t e r 2 Z e r o A L U A L U W r i t e r e s u l t A d d r e s s R e a d r e g i s t e r M d a t a u D a t a W r i t e x m e m o r y d a t a 1 1 6 S i g n e x t e n d L’exécution de l’instruction se fait toujours de gauche à droite, sauf pour l’écriture du résultat et la mise à jour de CP en cas de branchement pris.

Branchement terminé étape 4 EXEMPLE I F : I n s t r u c t i o n f e t c h I D : I n s t r u c t i o n d e c o d e / E X : E x e c u t e / M E M : M e m o r y a c c e s s W B : W r i t e b r e g i s t e r f i l e r e a d a d d r e s s c a l c u l a t i o n a c k I n s t r u c i o m e y A d 4 3 2 l S h f M x 1 P C W a R g Contenu reg Branchement terminé étape 4 Num de reg 3 e g i s t e r 1 1 2 100 ADD R1, R2, R3 R e a d r e g i s t e r 2 Z e r o A L U A L U W r i t e r e s u l t A d d r e s s R e a d r e g i s t e r M d a t a u D a t a W r i t e x m e m o r y d a t a 1 1 6 3 S i g n e x t e n d 3 L’exécution de l’instruction se fait toujours de gauche à droite, sauf pour l’écriture du résultat et la mise à jour de CP en cas de branchement pris.

Exécution des instructions sans et avec pipileine F D Ex Mem Er F D Ex Mem Er 10 5 10 10 5 Temps 10 5 10 10 5 10 Idéalement : CPI = 1 1 Instruction par cycle

Les instructions ne sont pas sauvegardées F : I n s t r u c t i o n f e t c h I D : I n s t r u c t i o n d e c o d e / E X : E x e c u t e / M E M : M e m o r y a c c e s s W B : W r i t e b r e g i s t e r f i l e r e a d a d d r e s s c a l c u l a t i o n a c k I n s t r u c i o m e y A d 4 3 2 l S h f M x 1 P C W a R g Contenu reg Branchement terminé étape 4 Num de reg 104 Sub R5, R6, R7 5 6 7 1 2 3 e g i s t e r 1 100 ADD R1, R2, R3 R e a d r e g i s t e r 2 Z e r o A L U A L U W r i t e r e s u l t A d d r e s s R e a d r e g i s t e r M d a t a u D a t a W r i t e 3 7 x m e m o r y d a t a 1 1 6 S i g n e x t e n d L’instruction contient des informations (numéros des registres, signaux de contrôle, …) qui seront utilisées bien après la lecture de l’instruction. Il faut les mémoriser.

Chemin de données pipeliné : ajout des buffers Buffer pour stocker le résultat : le tapis roulant M u x 1 I F / I D I D / E X E X / M E M M E M / W B A d d A d d 4 A d d r e s u l t S h i f t l e f t 2 o n R e a d P C A d d r e s s t i r e g i s t e r 1 u c R e a d t r R e a d d a t a 1 n s Z e r o I n s t r u Add R1, R2, R3 c t i o n I r e g i s t e r 2 R e g i s t e r s m e m o r y R e a d A L U A L U W r i t e d a t a 2 r e s u l t A d d r e s s R e a d 1 r e g i s t e r M d a t a u D a t a M W r i t e x u m e m o r y d a t a x 1 W r i t e d a t a 1 6 3 2 S i g n e x t e n d Ces « buffers » sont utilisés non seulement pour stocker les données mais aussi les signaux de contrôle. L'écriture dans les buffers est faite à chaque fin de cycle par les signaux : FI/IDWrite, ID/ExWrite, EX/MemWrite, Mem/RbWrite

Chemin de données pipeliné : ajout des buffers Buffer pour stocker le résultat : le tapis roulant M u x 1 I F / I D I D / E X E X / M E M M E M / W B A d d A d d 4 A d d r e s u l t S h i f t l e f t 2 o n R e a d P C A d d r e s s t i r e g i s t e r 1 R e a d u c t r R e a d Add R1, R2, R3 d a t a 1 Sub R5, R6, R7 n s Z e r o I n s t r u c t i o n I r e g i s t e r 2 R e g i s t e r s m e m o r y R e a d A L U A L U W r i t e d a t a 2 r e s u l t A d d r e s s R e a d 1 r e g i s t e r M d a t a u D a t a M W r i t e x u m e m o r y d a t a x 1 W r i t e d a t a 1 6 3 2 S i g n e x t e n d Ces « buffers » sont utilisés non seulement pour stocker les données mais aussi les signaux de contrôle. L'écriture dans les buffers est faite à chaque fin de cycle par les signaux : FI/IDWrite, ID/ExWrite, EX/MemWrite, Mem/RbWrite

Chemin de données pipeliné : ajout des buffers Buffer pour stocker le résultat : le tapis roulant M u x 1 I F / I D I D / E X E X / M E M M E M / W B A d d A d d 4 A d d r e s u l t S h i f t l e f t 2 o n R e a d P C A d d r e s s t i r e g i s t e r 1 c R e a d u t r R e a d d a t a 1 Add R1, R2, R3 s n Z e r o I n s t r u LW ….. c t i o n I r e g i s t e r 2 Sub …. R e g i s t e r s m e m o r y R e a d A L U A L U W r i t e d a t a 2 r e s u l t A d d r e s s R e a d r e g i s t e r M d a t a 1 u D a t a M W r i t e x u m e m o r y d a t a x 1 W r i t e d a t a 1 6 3 2 S i g n e x t e n d Ces « buffers » sont utilisés non seulement pour stocker les données mais aussi les signaux de contrôle. L'écriture dans les buffers est faite à chaque fin de cycle par les signaux : FI/IDWrite, ID/ExWrite, EX/MemWrite, Mem/RbWrite

Chemin de données pipeliné : ajout des buffers Buffer pour stocker le résultat : le tapis roulant M u x 1 I F / I D I D / E X E X / M E M M E M / W B A d d A d d 4 A d d r e s u l t S h i f t l e f t 2 n o R e a d P C A d d r e s s t i r e g i s t e r 1 c R e a d u t r R e a d d a t a 1 n s Z e r o I n s t r u Add …… c t i o n I r e g i s t e r 2 R e g i s t e r s m e m o r y R e a d A L U A L U Add R1, R2, R3 W r i t e LW ….. d a t a 2 Sub …. r e s u l t A d d r e s s R e a d r e g i s t e r M d a t a 1 u D a t a M W r i t e x u m e m o r y d a t a x 1 W r i t e d a t a 1 6 3 2 S i g n e x t e n d Ces « buffers » sont utilisés non seulement pour stocker les données mais aussi les signaux de contrôle. L'écriture dans les buffers est faite à chaque fin de cycle par les signaux : FI/IDWrite, ID/ExWrite, EX/MemWrite, Mem/RbWrite

Représentation graphique M R e g D C 1 2 3 4 5 6 l w $ , ( ) s u b A L U Ordre d ’exécution Lecture Mémoire Ecriture Registre

Les signaux de contrôle des étages Write-back Execution/Address Calculation Memory access stage stage control stage control lines control lines lines Reg ALU ALU ALU Mem Mem Reg Mem Instruction Dst Op1 Op0 Src Branch Read Write write to Reg R-format 1 1 1 lw 1 1 1 1 sw X 1 1 X beq X 1 1 X RegDst = 1; On écrit dans rd, si non dans rt ALUOpx : donne l’opération à réaliser dans l’UAL exemple 001 : addition, 010 : soustracation , …. 100: regarder le champ fonction Branch =1 si c’est une instr de branchement MemRead = 1 on fait une lecture en mémoire MemWrite = 1 on fait une écriture en mémoire RegWrite =1 on écrit dans un registre rd ou rt (suivant RegDst) MemToReg = 1 ; la donnée écrite dans le reg provient de la mémoire ; si non du regsitre

Mémorisation des signaux de contrôle Une fois l’instruction décodée et pour éviter de redécoder de nouveau; On stocke les signaux de contrôle dans les buffers de pipeleine C o n t r l E X M W B I F / D s u c i

Le chemin de données avec les signaux de contrôle P C S r c I D / E X M u W B x E X / M E M 1 C o n t r o l M W B M E M / W B E X M W B I F / I D A d d 4 A d d e A d d t r e s u l t r i W S h i f t B r a n c h g R e l e f t 2 e i t A L U S r c W r n o R e a d m e g P C A d d r e s s i M R e c t r e g i s t e r 1 u R e a d o r t s t R e a d d a t a 1 m n I r e g i s t e r 2 Z e r o e I n s t r u c t i o n M m e m o r y R e g i s t e r s R e a d A L U A L U W r i t e d a t a 2 r e s u l t A d d r e s s R e a d r e g i s t e r M d a t a 1 u D a t a M W r i t e x m e m o r y u d a t a x 1 W r i t e d a t a I n s t r u c t i o n [ 1 5 – ] 1 6 3 2 6 S i g n A L U M e m R e a d Il faut garder le num du reg destination rt ou rd e x t e n d c o n t r o l I n s t r u c t i o n [ 2 – 1 6 ] A L U O p M I n s t r u c t i o n u [ 1 5 – 1 1 ] x 1 R e g D s t

Le chemin de données avec les signaux de contrôle P C S r c 104 1 I D / E X M u W B x E X / M E M 1 1 1 0 0 000 10 C o n t r o l M W B 104 M E M / W B 100 E X M W B I F / I D 104 104 A d d 4 A d d e A d d t r e s u l t r i W S h i f t B r a n c h g e 1 R l e f t 2 e t i A L U S r c r W 11 n o R e a d m e g e 100 A d d r e s s i c t r e g i s t e r 1 M R u 2 R e a d 100 Add r3, r2, r1 o r t s t R e a d d a t a 1 5 + m n e I n s t r u c t i o n I r e g i s t e r 2 Z e r o 16 16 M m e m o r y Add r3, r2, r1 R e g i s t e r s R e a d A L U A L U W r i t e d a t a 2 r e s u l t A d d r e s s R e a d 1 r e g i s t e r M d a t a u D a t a M W r i t e x m e m o r y u x 16 d a t a 1 W r i t e d a t a I n s t r u c t i o n 16 [ 1 5 – ] 1 6 3 2 fonc 6 S i g n A L U M e m R e a d e x t e n d c o n t r o l I n s t r u c t i o n 2 11 [ 2 – 1 6 ] 3 A L U O p 3 3 M I n s t r u c t i o n u [ 1 5 – 1 1 ] x 1 1 3 R e g D s t

Problèmes liés à l exploitation du pipeline Pourquoi ne peut-on pas obtenir un CPI = 1? 3 causes : Les aléas Les aléas de structurels : Plusieurs instructions veulent utiliser la même unité: exemple 1’instruction lie en mémoire (Fetch) et une autre écrit en mémoire un store d ’une données. Solution : dédoubler les unités ou multiplier les ports de lecture/Ecriture (ex Transparent suivant) Les aléas de données : Dépendance de données L’instruction J a besoin d’une donnée qui est entrain de se calculer par I . J dépend de I et toute les deux sont dans le pipeline. Les aléas de contrôle : Instruction de branchement La décision de prendre le branchement ou non n ’est connu qu ’ à la fin de la phase 4. Risque : Il ne faut pas exécuter les instructions se trouvant juste après le branchement. Risque d’écraser les registres

Détourner les aléas structurels en multipliant les unités fonctionnelles Aléas structurel sur la mémoire Avoir une mémoire (cache) Instruction et une mémoire (cache) données

Les aléas de données Les instructions : and, or et add utilisent CC : clock cycle au début à la fin I M R e g C 1 2 3 4 5 6 T i m ( n c l o k y s ) u b $ , P r a x t d D 7 8 9 / – w V f : Les instructions : and, or et add utilisent l’ancien contenu du reg 2 !!!

Quelles solutions pour les dépendances de données (DD)? 1) Compter sur le compilateur pour détecter les DD, et insérer les instructions NOP. Inconv. : perte de temps Dans notre cas à chaque dépendance entre deux instructions : Il faut insérer 1, 2 ou 3 Nop suivant la distance entre les instructions. sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Remarque le compilateur peut aussi déplacer du code pour l ’insérer entre deux instructions dépendantes. (cf. TD) Nop

Résoudre les aléas de données par des instructions sans effet (les NOP) Valeur dans R2 disponible s u b $ 2 , $ 1 , $ 3 I M R e g D M R e g I M R e g D NOP NOP NOP I M R e g D a n d $ 1 2 , $ 2 , $ 5 o r $ 1 3 , $ 6 , $ 2 a d d $ 1 4 , $ 2 , $ 2

Autres solutions 2) Utiliser le matériel adéquat pour détecter la dépendance et suspendre l ’arrivée de nouvelle instruction tant que le résultat n ’est pas calculé. Aléas résolu. On bloque l ’arrivé des instruction: And, Or et Add jusqu’à ce que le reg 2 soit écrit. Un comparateur pour comparer le no du reg lue avec no du registre destination même chose que le schéma précédent mais des suspensions au lieu de NOP

3) Par Envoi direct Direct « Forwarding » ou « By-pass » Le résultat est envoyé directement vers l’instruction destination avant qu’il ne soit écrit dans le registre destination: Il y a transmission directe entre instructions sans passer par les regs I M R e g C 1 2 3 4 5 6 T i m ( n c l o k y s ) u b $ , P r a x t d D 7 8 9 / – w V f : X E W B Lorsqu’un reg est lu et écrit dans le même cycle, on lit la nouvelle valeur

L ’envoi direct (direct forwarding) Les registres UAL Sans envoi direct Les registres UAL Mx Avec envoi direct

SANS ENVOI DIRECT Add $6, $12, $13 Add $2, $3, $4 Sub $5, $6, $6 M u x A L U I D / E X W B a t m e o r y R g i s SANS ENVOI DIRECT R e g i s t r M u x A L U I D / E X W B a m o y F w d n b . h f AVEC ENVOI DIRECT Add $6, $12, $13 Add $2, $3, $4 Sub $5, $6, $6 …. Rs Rt

Le chemin de données complet avec l’envoi direct TD Donnez le schéma de l’unité Forward Unit P C I n s t r u c i o m e y R g M x l A L U E X W B D / a F w d . regWrite regWrite

L ’envoie direct ne marche à chaque coup!!! Le problème des instructions de chargement T i m e ( i n c l o c k c y c l e s ) P r o g r a m C C 1 C C 2 C C 3 C C 4 C C 5 C C 6 C C 7 C C 8 C C 9 e x e c u t i o n o r d e r ( i n i n s t r u c t i o n s ) l w $ 2 , 2 ( $ 1 ) I M R e g D M R e g ? a n d $ 4 , $ 2 , $ 5 I M R e g D M R e g o r $ 8 , $ 2 , $ 6 I M R e g D M R e g a d d $ 9 , $ 4 , $ 2 I M R e g D M R e g s l t $ 1 , $ 6 , $ 7 I M R e g D M R e g

Solution : Retarder d ’un cycle l ’instruction AND P r o g r a m T i m e ( i n c l o c k c y c l e s ) e x e c u t i o n C C 1 C C 2 C C 3 C C 4 C C 5 C C 6 C C 7 C C 8 C C 9 C C 1 o r d e r ( i n i n s t r u c t i o n s ) Pour ne pas avancer il faut mettre à zéro les sng de contrôle l w $ 2 , 2 ( $ 1 ) I M R e g D M R e g Pour ne pas avancer il ne faut pas charger une nouvelle instruction et ne pas modifier PC a n d $ 4 , $ 2 , $ 5 I M R e g D M R e g o r $ 8 , $ 2 , $ 6 I M R e g D M R e g Bulle a d d $ 9 , $ 4 , $ 2 I M R e g D M R e g

L ’aléas de données avec une instruction de chargement And Rs, Rt, Rd Lw rt, 100(Rs) H a z a r d I D / E X . M e m R e a d d e t e c t i o n u n i t I D / E X Rs, Rt RAZ e i t rt W B r E X / M E M W D I M F / I C o n t r o l u M W B x M E M / W B I F / I D E X M W B e t r i W C n M P o i t u u c x r t n s R e g i s t e r s I n s t r u c t i o n I D a t a P C A L U m e m o r y m e m o r y M u M x u x I F / I D . R e g i s t e r R s I F / I D . R e g i s t e r R t I F / I D . R e g i s t e r R t R t M E X / M E M . R e g i s t e r R d I F / I D . R e g i s t e r R d R d u l w $ 2 , 2 ( $ 1 ) x rt I D / E X . R e g i s t e r R t R s F o r w a r d i n g M E M / W B . R e g i s t e r R d R t u n i t a n d $ 4 , $ 2 , $ 5 rs rt

Dernier type d ’aléas : les aléas de contrôle les branchements pris Le résultat de la condition du branchement n’est connu qu ’à la fin de la phase 4. Pendant la phase 2, et 3 et 4, les trois instructions suivantes ont été chargées Problème si la condition est vérifiée , On écrase des registres !!!!!! R e g C 1 T i m ( n c l o k y s ) 4 b q $ , 3 7 P r a x u t d I M D 2 5 8 6 w 9

Deux solutions possibles pour lutter contre les aléas de branchement 1 : Dés qu ’une instruction de branchement est chargée dans IF/D, on bloque l’arrivée de nouvelle instruction jusqu’à ce que la condition soit évaluée: Perte de 3 cycles P r o g r a m T i m e ( i n c l o c k c y c l e s ) e x e c u t i o n C C 1 C C 2 C C 3 C C 4 C C 5 C C 6 C C 7 C C 8 C C 9 o r d e r ( i n i n s t r u c t i o n s ) 4 b e q $ 1 , $ 3 , 7 I M R e g D M R e g I M I M I M 7 2 l w $ 4 , 5 ( $ 7 ) I M R e g D M R e g

2) Continuer l ’exécution des instructions chargées Mais vider les buffers si branchement pris. 1 1 1 I D / E X M u W B x E X / M E M M M M COP C o n t r o l u M u u W B x x x M E M / W B I I F F / / I I D D E X M W B Branchement pris I n s t r u c t i o n P C Les instructions se trouvant après l’instruction branchement sont toujours chargées Si la condition est vérifiée, les instructions sont vidées des buffers IF/ID, ID/EXE, EXE/MEM, on met des zéros partout. m e m o r y

3) On peut remplir le vide par des instructions utiles Delayed Branch . F r o m b e f d $ s 1 , 2 3 i = t h n D l y b . F r o m t a g e s u $ 4 , 5 6 … d 1 2 3 i f = h n D l y Exemple avec une instruction

Exemples de quelques processeurs pipelinés ARM7 (1990) : processeur pour applications embarqués à 3 étages de pipeline. Les instructions sont exécutées dans le même ordre de leurs lectures (in order) PC FETCH Instruction fetched from memory Decoding of registers used in instruction Register(s) read from Register Bank Shift and ALU operation Write register(s) back to Register Bank PC - 4 DECODE PC - 8 EXECUTE

Pipeline sur le PentiumI (1995) Les étapes (pipeline) du Pentium I (instructions arithmétiques entières) Prefetch. Chargement des instructions du cache (ou de la mémoire) dans les tampons de pré-chargement. Decode 1. Décodage de l’instruction. Decode 2. Calcul de l'adresse des opérandes présentes en mémoire. Execute. Exécution des instructions et accès à la mémoire. Write Back. Modification de l'état du processeur par l'achèvement de l'exécution des instructions. Pipeline de 10 étages sur l’Athlon, 12 étages sur le Pentium III et 20 étages sur le pentium IV

Micro-acrhitecture Pentium4

Pipeline sur MIPS R3000 et R4000 Le MIPS R3000 implémente un pipeline de cinq étages typique d'un processeur RISC traditionnel (chargement de l'instruction, décodage, exécution ou calcul de l'adresse, accès à la mémoire, mise à jour du banc de registres). La gestion des interblocages (aléas de données) au sein du pipeline est effectuée par logiciel. Le MIPS R4000 est le premier des processeurs RISC à mettre en œuvre la technique du superpipeline. Division de chaque étage du pipeline en sous phases. Les étages critiques ont été divisés en deux, voire en trois, pour permettre à ce processeur d'atteindre des fréquences élevées. Le pipeline a au total une profondeur de huit étages.

Le pipeline sur les processeurs Alpha 21064 le DEC 21064 utilise la technique du superpipeline avec un pipeline de sept étages. Les quatre premiers servent au chargement des instructions, à leur décodage, à la prédiction de branchement ainsi qu'à la résolution des conflits sur un processeur superscalaire de degré deux. Ces quatre premiers étages sont dit statiques dans la mesure où les instructions peuvent attendre à ce niveau la résolution des conflits de ressources, par opposition aux étages d'exécution dits dynamiques, et dans lesquels la phase d'exécution des instructions ne peut être interrompue. Ces quatre premiers étages sont donc communs aux pipelines entier et flottant. Le pipeline flottant du DEC 21064 a une profondeur de dix étages.

PowerPC 603 PowerPc : Les pipelines d'exécution des instructions entières et flottantes ont une profondeur respective de cinq et six étages

PowerPc 970 (alias G4) 58 million transistors Execution core • Support for up to 215 in-flight instructions • Simultaneous issue of up to 10 out-of-order operations: –One Velocity Engine permute operation (SIMD) –One Velocity Engine arithmetic logic operation (SIMD) –Two floating-point operations –Two fixed-point register-to-register operations –Two load or store operations –One condition register operation –One branch operation • 64K L1 instruction cache; 32K L1 data cache • 512K internal L2 cache • Support for up to eight outstanding L1 cache line misses • Hardware-initiated instruction prefetching from L2 cache 58 million transistors Maximum core frequency: 2GHz

P4 : un pipeline à 20 étages

Pipeline du core-Duo

Plus de détails : Intel P4 : http://www.hardware.fr/html/articles/lire.php3?article=283 http://www.active-hardware.com/francais/reviews/processor/pentium4-2fr.htm PowerPc : http://www.rs6000.ibm.com/resource/technology/603.html Cours du Pr Sanchez , Ecole Polytechnique de Lausanne http://lslwww.epfl.ch/pages/teaching/cours_lsl/ao/home.html