La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Chapitre2 La technique du Pipeline Architecture Des Ordinateurs Master Info Première Année Master1/IUP 3."— Transcription de la présentation:

1

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

3 Introduction Idée : Ne pas attendre la fin de l instruction pour démarrer une nouvelle 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é 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 ABCD 4 Paquets Laver Essorer Plier 30 mn40mn 20mn

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

5 Laver mes vêtements en pipeline: Possible mais !! Les 4 paquets sont lavés en 3.5h au lieu de 6h Les 4 paquets sont lavés en 3.5h au lieu de 6h A BC D 6 PM Time Perte de temps à transférer les paquets

6 Appliquant le principe à larchitecture Rappel : Rappel : Lexécution de linstruction se fait toujours en 5 étapes 1.Lecture de linstruction 2.Décodage et en même temps lecture des registres 3.Calcul dans lUAL Instruction UAL : appliquer lopération Instruction UAL : appliquer lopération Instruction Mémoire : Calculer ladresse Instruction Mémoire : Calculer ladresse Instruction de branchement : Calculer ladresse de branchement et évaluer la condition Instruction de branchement : Calculer ladresse de branchement et évaluer la condition 4.Accès mémoire 5.Mise à jour du registre destination (pour les UAL et loads) ou CP (pour les branchements)

7 Chemin de données de la machine MIPS sans Pipeline ack egister 1 Read register 2 16 Sign extend Write register Write data Read data Address Data memory 1 ALU result M u x ALU Zero IF: Instruction fetchID: Instruction decode/ register file read EX: Execute/ address calculation MEM: Memory accessWB: Write b Lexécution de linstruction se fait toujours de gauche à droite, sauf pour lécriture du résultat et la mise à jour de CP en cas de branchement pris. Num de reg Contenu reg Branchem ent terminé étape 4 CP+4

8 EXEMPLE ack egister 1 Read register 2 16 Sign extend Write register Write data Read data Address Data memory 1 ALU result M u x ALU Zero IF: Instruction fetchID: Instruction decode/ register file read EX: Execute/ address calculation MEM: Memory accessWB: Write b Lexécution de linstruction se fait toujours de gauche à droite, sauf pour lécriture du résultat et la mise à jour de CP en cas de branchement pris. Num de reg Contenu reg Branchem ent terminé étape ADD R1, R2, R

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

10 Les instructions ne sont pas sauvegardées ack egister 1 Read register 2 16 Sign extend Write register Write data Read data Address Data memory 1 ALU result M u x ALU Zero IF: Instruction fetchID: Instruction decode/ register file read EX: Execute/ address calculation MEM: Memory accessWB: Write b Linstruction contient des informations (numéros des registres, signaux de contrôle, …) qui seront utilisées bien après la lecture de linstruction. Il faut les mémoriser. Num de reg Contenu reg Branchem ent terminé étape ADD R1, R2, R Sub R5, R6, R

11 Chemin de données pipeliné : ajout des buffers Instruction memory Address Add Add result Shift left 2 I n s t r u c t i o n IF/IDEX/MEMMEM/WB M u x 0 1 Add PC 0 Write data M u x 1 Registers Read data 1 Read data 2 Read register 1 Read register 2 16 Sign extend Write register Write data Read data 1 ALU result M u x ALU Zero ID/EX Data memory Address Buffer pour stocker le résultat : le tapis roulant 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 Add R1, R2, R3

12 Chemin de données pipeliné : ajout des buffers Instruction memory Address Add Add result Shift left 2 I n s t r u c t i o n IF/IDEX/MEMMEM/WB M u x 0 1 Add PC 0 Write data M u x 1 Registers Read data 1 Read data 2 Read register 1 Read register 2 16 Sign extend Write register Write data Read data 1 ALU result M u x ALU Zero ID/EX Data memory Address Buffer pour stocker le résultat : le tapis roulant 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 Add R1, R2, R3 Sub R5, R6, R7

13 Chemin de données pipeliné : ajout des buffers Instruction memory Address Add Add result Shift left 2 I n s t r u c t i o n IF/IDEX/MEMMEM/WB M u x 0 1 Add PC 0 Write data M u x 1 Registers Read data 1 Read data 2 Read register 1 Read register 2 16 Sign extend Write register Write data Read data 1 ALU result M u x ALU Zero ID/EX Data memory Address Buffer pour stocker le résultat : le tapis roulant 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 Add R1, R2, R3 Sub ….LW …..

14 Chemin de données pipeliné : ajout des buffers Instruction memory Address Add Add result Shift left 2 I n s t r u c t i o n IF/IDEX/MEMMEM/WB M u x 0 1 Add PC 0 Write data M u x 1 Registers Read data 1 Read data 2 Read register 1 Read register 2 16 Sign extend Write register Write data Read data 1 ALU result M u x ALU Zero ID/EX Data memory Address Buffer pour stocker le résultat : le tapis roulant 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 Add R1, R2, R3 Sub ….LW ….. Add ……

15 Représentation graphique Lecture Mémoire Ecriture Registre

16 Les signaux de contrôle des étages RegDst = 1; On écrit dans rd, si non dans rt ALUOpx : donne lopération à réaliser dans lUAL exemple 001 : addition, 010 : soustracation, …. 100: regarder le champ fonction Branch =1 si cest 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 Execution/Address Calculation stage control lines Memory access stage control lines Write-back stage control lines Instruction Reg Dst ALU Op1 ALU Op0 ALU SrcBranch Mem Read Mem Write Reg write Mem to Reg R-format lw sw X X beq X X

17 Mémorisation des signaux de contrôle Une fois linstruction décodée et pour éviter de redécoder de nouveau; On stocke les signaux de contrôle dans les buffers de pipeleine

18 PC Instruction memory I n s t r u c t i o n Add Instruction [20–16] M e m t o R e g ALUOp Branch Regst ALSrc Instruction [15–0] 0 0 M u x 0 1 Add Add result R ontrol ALU Instruction [15–11] 6 EX M WB M WB WB D U egisters Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend M u x 1 ALU result Zero Write data Read data M u x 1 ALU control Shift left 2 R e g W r i t e MemRead C IF/ID PCSrc ID/EX EX/MEM MEM/WB M u x 0 1 M e m W r i t e Address Data memory Address Il faut garder le num du reg destination rt ou rd Le chemin de données avec les signaux de contrôle

19 Instruction memory I n s t r u c t i o n Add Instruction [20–16] M e m t o R e g ALUOp Branch Regst ALSrc Instruction [15–0] 0 0 M u x 0 1 Add Add result R ontrol ALU Instruction [15–11] 6 EX M WB M WB WB D U egisters Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend M u x 1 ALU result Zero Write data Read data M u x 1 ALU control Shift left 2 R e g W r i t e MemRead C IF/ID PCSrc ID/EX EX/MEM MEM/WB M u x 0 1 M e m W r i t e Address Data memory Address Le chemin de données avec les signaux de contrôle Add r3, r2, r fonc Add r3, r2, r1 100

20 Problèmes liés à l exploitation du pipeline Pourquoi ne peut-on pas obtenir un CPI = 1? Pourquoi ne peut-on pas obtenir un CPI = 1? 3 causes : Les aléas 3 causes : Les aléas –Les aléas de structurels : Plusieurs instructions veulent utiliser la même unité: exemple 1instruction 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 –Linstruction J a besoin dune 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

21 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

22 Les aléas de données IMReg IMReg CC 1CC 2CC 3CC 4CC 5CC 6 Time (in clock cycles) sub $2, $1, $3 Program execution order (in instructions) and $12, $2, $5 IM Reg DMReg IMDMReg IMDMReg CC 7CC 8CC /–20–20–20–20–20 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Value of register $2: DM Reg Reg Reg Reg DM au début à la fin Les instructions : and, or et add utilisent lancien contenu du reg 2 !!! CC : clock cycle

23 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 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 or$13, $6, $2 add$14, $2, $2 add$14, $2, $2 sw$15, 100($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

24 Résoudre les aléas de données par des instructions sans effet (les NOP) IMReg sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 DM Reg NOP Valeur dans R2 disponible

25 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. 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. 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 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

26 3) Par Envoi direct Direct « Forwarding » ou « By-pass » Le résultat est envoyé directement vers linstruction destination avant quil ne soit écrit dans le registre destination: Il y a transmission directe entre instructions sans passer par les regs Lorsquun reg est lu et écrit dans le même cycle, on lit la nouvelle valeur

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

28 M u x ALU I D/EX MEM/WB Data memory E X /MEM Registe r s SANS ENVOI DIRECT Registers M u x M u x ALU ID/EXMEM/WB Data memory M u x Forwarding unit EX/MEM b. With forwarding ForwardB Rd EX/MEM.RegisterRd MEM/WB.RegisterRd Rt Rt Rs ForwardA M u x AVEC ENVOI DIRECT Add $6, $12, $13 Add $2, $3, $4 Sub $5, $6, $6 …. Rs Rt

29 Le chemin de données complet avec lenvoi direct regWrite TD Donnez le schéma de lunité Forward Unit

30 L envoie direct ne marche à chaque coup!!! Reg IM Reg Reg IM CC 1CC 2CC 3CC 4CC 5CC 6 Time (in clock cycles) lw $2, 20($1) Program execution order (in instructions) and $4, $2, $ 5 IMRegDMReg IMDMReg IMDMReg CC 7CC 8CC 9 or $8, $2, $6 add $9, $4, $ 2 slt $1, $6, $7 DMReg Reg Reg DM Le problème des instructions de chargement ?

31 Solution : Retarder d un cycle l instruction AND lw $2, 20($1) Program execution order (in instructions) and $4, $2, $5 or $8, $2, $6 add $9, $4, $2 Reg IM Reg IM DM CC 1CC 2CC 3CC 4CC 5CC 6 Time (in clock cycles) IM Reg DMReg IM DM Reg CC 7CC 8CC 9CC 10 DM Reg Reg Reg Bulle Pour ne pas avancer il faut mettre à zéro les sng de contrôle Pour ne pas avancer il ne faut pas charger une nouvelle instruction et ne pas modifier PC

32 L aléas de données avec une instruction de chargement PC Instruction memory Registers M u x M u x M u x Control ALU EX M WB M WB WB ID/EX EX/MEM MEM/WB Data memory M u x Hazard detection unit Forwarding unit 0 M u x IF/ID I n s t r u c t i o n ID/EX.MemRead I F / I D W r i t e P C W r i t e ID/EX.RegisterRt IF/ID.RegisterRd IF/ID.RegisterRt IF/ID.RegisterRt IF/ID.RegisterRs Rt Rs Rd Rt EX/MEM.RegisterRd MEM/WB.RegisterRd Lw rt, 100(Rs) And Rs, Rt, Rd Rs, Rt rt RAZ lw $2, 20($1) and $4, $2, $5 rt rs rt

33 Dernier type d aléas : les aléas de contrôle les branchements pris Le résultat de la condition du branchement nest 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 !!!!!!

34 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 larrivée de nouvelle instruction jusquà ce que la condition soit évaluée: Perte de 3 cycles 1 : Dés qu une instruction de branchement est chargée dans IF/D, on bloque larrivée de nouvelle instruction jusquà ce que la condition soit évaluée: Perte de 3 cycles Reg CC 1 Time (in clock cycles) 40 beq $1, $3, 7 Program execution order (in instructions) IMReg IM IM IM DM DMReg Reg IM 72 lw $4, 50($7) CC 2CC 3CC 4CC 5CC 6CC 7CC 8CC 9

35 2) Continuer l exécution des instructions chargées Mais vider les buffers si branchement pris. Les instructions se trouvant après linstruction branchement sont toujours chargées Les instructions se trouvant après linstruction 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. 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. PC Instruction memory Control EX M WB M WB WB ID/EX EX/MEM MEM/WB 0 M u x 0 M u x ID.Flush EX.Flush IF.Flush IF/ID 0 M u x IF.Flush IF/ID 0 M u x Branchement pris COP

36 3) On peut remplir le vide par des instructions utiles Delayed Branch Exemple avec une instruction

37 Exemples de quelques processeurs pipelinés ARM7 (1990) : processeur pour applications embarqués à 3 étages de pipeline. 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) FETCH DECODE EXECUTE 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 PC - 4 PC - 8

38 Pipeline sur le PentiumI (1995) Les étapes (pipeline) du Pentium I (instructions arithmétiques entières) 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 linstruction. – 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 lAthlon, 12 étages sur le Pentium III et 20 étages sur le pentium IV 20 étages sur le pentium IV

39 Micro-acrhitecture Pentium4

40 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). 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. 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. 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. 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.

41 Le pipeline sur les processeurs Alpha le DEC 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. le DEC 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 a une profondeur de dix étages. 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 a une profondeur de dix étages.

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

43 PowerPc 970 (alias G4) 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

44 P4 : un pipeline à 20 étages

45 Pipeline du core-Duo

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


Télécharger ppt "Chapitre2 La technique du Pipeline Architecture Des Ordinateurs Master Info Première Année Master1/IUP 3."

Présentations similaires


Annonces Google