Architecture Logicielle et matérielle - Cours 9 : interruptions

publicité
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 
Téléchargement