Architecture Logicielle et matérielle Cours 9 : interruptions et pipeline d’après un cours de Nicolas Louvet Laure Gonnord http://laure.gonnord.org/pro/teaching/ [email protected] Licence d’info - Université Lyon 1 - FST Interruptions 1 Interruptions Problématique : exemple des E/S Différentes classes d’intructions 2 Exploitation du parallélisme d’instruction Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 2 / 34 Interruptions Problématique : exemple des E/S 1 Interruptions Problématique : exemple des E/S Différentes classes d’intructions 2 Exploitation du parallélisme d’instruction Technique du pipeline Le problème des dépendances Exécution superscalaire Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 3 / 34 Interruptions Problématique : exemple des E/S Une question de vitesse Les E/S se déroulent beaucoup plus lentement que le processeur n’est capable d’exécuter des instructions. Exemple : Supposons que le programme utilisateur effectue des opérations d’écriture WRITE sur une imprimante : à chaque WRITE : préparer l’E/S, en copiant des données ; réaliser effectivement l’E/S sur le périphérique ; retourner des informations de succès ou l’échec. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 4 / 34 Interruptions Problématique : exemple des E/S Dessins ! Prog stoppé, l’UCT reste inactive pendant que l’E/S est réalisée. I long ! ! Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 5 / 34 Interruptions Problématique : exemple des E/S Dessins ! Prog stoppé, l’UCT reste inactive pendant que l’E/S est réalisée. I long ! ! Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 5 / 34 Interruptions Problématique : exemple des E/S Mécanisme d’interruption Pour les E/S : les unités d’E/S : signal d’interruption → l’UCT ; UCT : suspension + lance la gestion de l’interruption ; UCT : reprise de l’exec du programme initial. I Possibilité aux unités extérieures d’interrompre le programme en cours. I OS : gestionnaires d’interruption (mode protégé) Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 6 / 34 Interruptions Problématique : exemple des E/S Une phase de vérification des interruptions est ajoutée au cycle d’instruction : Interruptions interdites Début de l’exécution Chargement d’une instruction Exécution de l’instrution chargée Interruptions autorisées Vérification des interruptions Fin de l’exécution L’UCT vérifie si de nouveaux signaux sont en attente : pas de signal : chargement de l’ins. suivante ; si une interruption doit être traitée, exécution suspendue, contexte sauvegardé en mémoire centrale, PC ← @(gestionnaire_interr) Rque : possibilité d’ignorer les interruptions. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 7 / 34 Interruptions Problématique : exemple des E/S Retour à l’exemple L’UCT peut se consacrer à l’exécution du programme pendant que l’E/S est traitée. L’appel à WRITE ne provoque que l’exécution de la partie « préparation » de l’E/S sur l’UCT. L’unité d’E/S se charge ensuite de réaliser l’E/S. Lorsque le traitement de l’E/S est achevé, l’unité d’E/S envoye un signal d’interruption, le programme en cours est interrompu, l’UCT récupère et traite les informations de retour de l’E/S. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 8 / 34 Interruptions Problématique : exemple des E/S Dessin ! Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 9 / 34 Interruptions Problématique : exemple des E/S Un mécanisme fréquent A chaque fois qu’il y a interaction d’un programme avec un périphérique, le mécanisme des interruptions est utilisé : ce mécanisme est utilisé pour toute synchronisation entre l’exécution d’un programme sur le processeur et les événements qui lui sont périphériques. Le mécanisme des interruptions est utilisé plus généralement pour la gestion de tout événement asynchrone. Les causes de ces événements peuvent être externes à l’UCT, comme on l’a déjà vu, mais aussi internes. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 10 / 34 Interruptions Différentes classes d’intructions 1 Interruptions Problématique : exemple des E/S Différentes classes d’intructions 2 Exploitation du parallélisme d’instruction Technique du pipeline Le problème des dépendances Exécution superscalaire Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 11 / 34 Interruptions Différentes classes d’intructions Différentes classes 1/2 Interruption d’E/S : réussite ou échec d’une opération d’E/S. Exception : quand un problème survient lors de l’exéc. d’une instruction. Ex : dépassement de capacité, division par 0, accès d’un programme à une zone mémoire interdite. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 12 / 34 Interruptions Différentes classes d’intructions Différentes classes 2/2 Interruption logicielle : le jeu d’instruction comprend généralement une instruction (INT sur x86, TRAP sur 68000) permettant de provoquer une interruption du programme, pour faire appel à un gestionnaire d’interruption mis en place par le système d’exploitation. Ex : les appels systèmes des OS, comme read/write sous Linux. Interruption par un timer : il est possible que le signal d’interruption soit généré par une horloge du processeur. Ex : cela permet au système d’exploitation de reprendre périodiquement la main sur les programmes en cours d’exécution sur l’ordinateur. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 13 / 34 Exploitation du parallélisme d’instruction 1 Interruptions 2 Exploitation du parallélisme d’instruction Technique du pipeline Le problème des dépendances Exécution superscalaire Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 14 / 34 Exploitation du parallélisme d’instruction Technique du pipeline 1 Interruptions Problématique : exemple des E/S Différentes classes d’intructions 2 Exploitation du parallélisme d’instruction Technique du pipeline Le problème des dépendances Exécution superscalaire Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 15 / 34 Exploitation du parallélisme d’instruction Technique du pipeline Technique du pipeline Rappel phases d’instruction (ici 1 cycle par phase) : FE (fetch) : chargement de l’instruction depuis la mémoire centrale. DE (decode) : décodage de l’instruction (UCT) EX (execute) : exécution SR (store result) : écriture des résultats en mémoire centrale. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 16 / 34 Exploitation du parallélisme d’instruction Technique du pipeline Rappel chemin de données chemin de donnees UCT fetch memoire decode bus unite de controle execute store result Jusqu’à présent on a considéré les 4 phases sucessivement Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 17 / 34 Exploitation du parallélisme d’instruction Technique du pipeline Exemple exec programme On considère le programme suivant, donné en langage d’assemblage : ADD SUB MUL ADD R4, R5, R6, R7, R1, R3, R2, R1, ADD R4, R1, R0 R0 R1 R1 R3 ; ; ; ; R4 R5 R6 R7 SUB R5, R3, R1 <<<<- R1 R3 R2 R1 + * + R0 R1 R1 R3 MUL R6, R2, R1 ADD R7, R1, R3 FE DE EX SR FE DE EX SR FE DE EX SR FE DE EX SR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 cycles I Le programme s’exécute au total en 16 cycles. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 18 / 34 Exploitation du parallélisme d’instruction Technique du pipeline Exec pipelinée “à 4 étages” Activation des 4 unités à chaque cycle : Au cycle 1, la phase FE de l’ins. 1 est traitée. Au cycle 2, la phase DE de l’ins. 1, et la phase FE de l’ins. 2 sont traitées. ... instruction ADD R7, R1, R3 MUL R5, R2, R1 FE SUB R5, R3, R1 FE DE ADD R4, R1, R0 FE DE EX 1 2 3 FE DE EX SR DE EX SR EX SR SR 4 5 6 7 cycles Désormais, le programme s’exécute en 7 cycles ! Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 19 / 34 Exploitation du parallélisme d’instruction Technique du pipeline Caractéristiques des chemins de données pipelinés Plus généralement, on dit que le chemin de données forme un pipeline à k ≥ 2 étages lorsque : les instructions possédent un cycle d’instruction commun de k phases, le chemin de données se décompose en k unités fonctionnelles, chacune traitant indépendamment l’une des phases du cycle d’instruction, les unités du chemin de données sont activées à chaque cycle par l’UC. Idéalement, une instruction termine son exécution à chaque cycle d’horloge : on peut vérifier que n ≥ 1 instructions s’exécutent donc en n + k − 1 cycles. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 20 / 34 Exploitation du parallélisme d’instruction Technique du pipeline Exemples de machines Tous les processeurs « généralistes » produits depuis le milieux des années 1980 sont pipelinés : Intel Pentium 2 : 14 étages. Intel Pentium 3 : 10 étages. Intel Pentium 4 : 20 à 31 étages (différentes versions). Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 21 / 34 Exploitation du parallélisme d’instruction Le problème des dépendances 1 Interruptions Problématique : exemple des E/S Différentes classes d’intructions 2 Exploitation du parallélisme d’instruction Technique du pipeline Le problème des dépendances Exécution superscalaire Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 22 / 34 Exploitation du parallélisme d’instruction Le problème des dépendances Problème 1 : le temps Cependant, il faut nuancer : il n’est pas toujours possible de terminer l’exécution d’une instruction à chaque cycle. Il y a plusieurs raisons à cela : Il n’est pas réaliste de supposer que les instructions d’accès à la mémoire vont toutes être réalisées en k cycles. On a vu que la latence de l’accès à la mémoire peut être variable (cache-hit / cache-miss). Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 23 / 34 Exploitation du parallélisme d’instruction Le problème des dépendances Dépendance 1 : données Il existe entre les instructions des dépendances de données : une instruction j dépend d’une instruction i si l’instruction i produit un résultat qui est un opérande source de l’instruction j. Par exemple : ADD R2, R0, R1 ADD R3, R2, R1 La seconde instruction ne pourra pas commencer sa phase de EX dans le pipeline tant que la première n’aura pas passé la phase SR. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 24 / 34 Exploitation du parallélisme d’instruction Le problème des dépendances Exemple LD R1, a LD R2, b ADD R4, R1, R2 LD R3, c ADD R5, R4, R3 ST R5, d ; ; ; ; ; ; R1 <- mem[a] R2 <- mem[b] R4 <- R1+R2 R3 <- mem[c] R5 <- R4+R3 mem[d] <- R5 On suppose que la phase EX d’une instruction commence au cycle qui suit la phase SR de l’instruction dont elle dépend : instruction ST R5, d ADD R5, R4, R3 LD R3, c ADD R4, R1, R2 LD R2, b LD R1, a DE FE DE EX SR FE DE EX SR FE FE FE DE EX SR FE FE DE DE DE EX SR FE DE DE EX EX SR dep. de donnee FE DE EX EX SR acces memoire 1 2 3 4 5 6 7 8 9 10 11 12 cycles I 12 cycles (cas favorable 9) Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 25 / 34 Exploitation du parallélisme d’instruction Le problème des dépendances Dépendances 2 : de nom Dépendance de nom : : même nom, mais pas de circulation de données. ,→ Les dépendances de nom peuvent être supprimées à l’aide d’une technique appelée renommage : LD R1, a LD R1, a ADD R1, R1, 1 LD R2, b ST R1, aa ADD R1, R1, 1 LD R1, b ADD R2, R2, 1 ADD R1, R1, 1 ST R1, aa ST R1, bb ST R2, bb I programmeur, compilation, ou processeur (registres) Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 26 / 34 Exploitation du parallélisme d’instruction Le problème des dépendances Dépendance 3 : contrôle 1/2 Dépendance de contrôle : une telle dépendance existe lorsque l’exécution d’une instruction est conditionnée par une instruction de branchement. add: loop: endloop: ADD R2,R0,0 NOT R3,R1 ADD R3,R3,1 ADD R3,R2,R3 BRp endloop ; branchement de sortie de boucle LDR R3,R2,0 ADD R3,R3,1 STR R3,R2,0 ADD R2,R2,1 BR loop ; branchement vers le début de boucle RET I Ralentissement Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 27 / 34 Exploitation du parallélisme d’instruction Le problème des dépendances Dépendance de contrôle - 2/2 Les dépendances de contrôle ne peuvent pas être supprimées, et peuvent ralentir l’exécution des instructions dans le pipeline. Une solution simple est que le pipeline cesse de charger de nouvelles instructions tant que l’instruction de branchement n’est pas traitée. Une technique appelée prédiction de branchement permet cependant d’améliorer le traitement des branchements conditionnels dans le cas moyen. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 28 / 34 Exploitation du parallélisme d’instruction Le problème des dépendances Conclusion - parallélisme d’instruction On vient de voir que : on ne peut pas faire se chevaucher très bien l’exécution de deux instructions présentant des dépendances entre-elles ; un ensemble d’instructions indépdendantes peut s’exécuter très efficacement dans un pipeline. I le parallélisme d’instructions est exploitée en partie par le pipeline (mais on peut faire mieux). Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 29 / 34 Exploitation du parallélisme d’instruction Exécution superscalaire 1 Interruptions Problématique : exemple des E/S Différentes classes d’intructions 2 Exploitation du parallélisme d’instruction Technique du pipeline Le problème des dépendances Exécution superscalaire Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 30 / 34 Exploitation du parallélisme d’instruction Exécution superscalaire Exécution superscalaire Une autre technique pour exploiter le parallélisme d’instruction est celle de l’exécution supercalaire. On suppose maintenant que : l’unité FE est capable de charger deux instructions à chaque cycle ; l’unité DE de sélectionne, parmi l’ensemble des instructions chargées, deux instructions dont les opérandes sont prêts ; le chemin de données comporte deux unités EX, et est donc capable d’exécuter deux instructions en paralléle. Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 31 / 34 Exploitation du parallélisme d’instruction Exécution superscalaire Super scalaire fetch decode execute execute store result Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 32 / 34 Exploitation du parallélisme d’instruction Exécution superscalaire Sur l’exemple ADD SUB MUL ADD R4, R5, R6, R7, R1, R3, R2, R1, R0 R1 R1 R3 ; ; ; ; R4 R5 R6 R7 <<<<- R1 R3 R2 R1 + * + R0 R1 R1 R3 instruction ADD R7, R1, R3 MUL R5, R2, R1 SUB R5, R3, R1 ADD R4, R1, R0 FE FE FE DE FE DE 1 2 DE DE EX EX 3 EX SR EX SR SR SR 4 5 6 7 cycles I 5 cycles ! Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 33 / 34 Exploitation du parallélisme d’instruction Exécution superscalaire Conclusion Les processeurs modernes ont une série de composants architecturaux qui permettent d’exploiter un maximum le parallélisme d’instructions. Une partie du travail est laissé au compilateur I RDV en MIF12 ! Laure Gonnord (L2/FST/Univ Lyon1) ArchiL2 (LIF6) Cours 09 : interruptions/ pipeline 2014 34 / 34