19. interruptions Flashcards
Une interruption interrompt
l’exécution des instructions
par le microprocesseur.
Lors d’une interruption: 3 étapes
- l’exécution du programme principal est suspendue;
- une routine (fonction) traitant l’interruption est exécutée;
- puis le programme principal est continué.
Quelle est la différence entre une interruption et un
branchement?
les interruptions peuvent survenir n’importe quand pendant
l’exécution.
4 Types d’interruptions
- Système: reset, faute matérielle générale, etc.
- Exception: erreur au cours de l’exécution des instructions, par
exemple: - instruction invalide
- division par 0
- tentative d’accès à de la mémoire protégée
- Matérielles: générées par les périphériques, par exemple:
- le clavier dans notre scénario 1 plus haut
- l’imprimante lorsqu’elle a terminé, etc.
- Logicielles: générées par le programmeur avec une instruction
spéciale (présente dans tous les jeux d’instructions)
Il y a 7 types d’interruptions dans le microprocesseur ARM
- Reset: redémarrage du microprocesseur
- Interruption logicielle: activée par l’instruction SVC pour utiliser les
fonctions systèmes (par exemple pour communiquer avec les
périphériques); - Data abort: accès mémoire invalide lors d’un LDR;
- Prefetch abort: accès mémoire invalide lors de la lecture d’une
instruction (étape « lecture » dans le pipeline) - Instruction indéfinie: erreur dans le décodage d’une instruction
- IRQ: activée par un périphérique (Interrupt ReQuest)
- FIQ: activée par un périphérique, mais qui peut être traité plus
rapidement qu’une IRQ (Fast Interrupt reQuest)
expliquer concept de priorité
une interruption
de haute priorité peut interrompre une interruption
ayant un niveau de priorité plus bas.
* Certaines interruptions peuvent survenir n’importe
quand, même pendant une autre interruption.
* Certaines interruptions, comme «reset», ont une
priorité (maximale pour «reset») qui ne peut pas
être changée.
lister ordre de priorité (haut vers bas)
reset, data abort, FIQ, IRQ, prefetch abort, interruption logicielle et instruction indéfinie
Qu’arrive-t-il si une interruption survient lorsqu’on
traite une interruption?
Cela dépend de la priorité
* Si la priorité de la nouvelle interruption est plus élevée:
* On interrompt l’exécution et on traite cette nouvelle
interruption
- Si la priorité de la nouvelle interruption est moins élevée:
- On attend que le traitement de l’interruption à plus haute
priorité soit terminé, et on traite cette nouvelle interruption
par la suite
étapes de traitement d’interruptions
Interruption!
1. Terminer l’instruction en cours
2. Déterminer s’il faut traiter l’interruption.
3. Sauvegarder le contexte
4. Déterminer l’adresse de la routine de traitement de l’interruption
5. Exécuter cette routine
Traitement de l’interruption…
1. Restaurer le contexte
2. Reprendre là ou le processeur était rendu
fonctions « spéciales » que l’on appelle que pour
traiter les interruptions
Les routines de traitement d’interruptions
Où sont-elles situées?
- en mémoire!
Comment fait-on pour savoir:
* quelle routine exécuter pour quelle interruption?
* à quelle adresse est cette routine?
Grâce à la table des vecteurs d’interruption
Table des vecteurs d’interruption
* Contient une—— (en ARM) qui branche vers
la ——- de l’interruption
* Commence à l’adresse —– de la mémoire
* peut être déplacée ——-
* dans un système complet, la table est modifiée par le
————.
Table des vecteurs d’interruption
* Contient une instruction (en ARM) qui branche vers
la routine de traitement de l’interruption
* Commence à l’adresse 0x0 de la mémoire
* peut être déplacée ailleurs
* dans un système complet, la table est modifiée par le
système d’exploitation.
nombre de registre ARM et leur utilité
16 registres de 32 bits:
* R0 à R12: registres généraux
- R13 à R15: registres spécifiques (ayant des
fonctionnalités pré-établies) - R13: Pointeur de pile (Stack Pointer ou SP)
- R14: Registre de liens (Link Register ou LR)
- R15: Compteur de programme (Program Counter ou PC)
- 1 registre d’état, le Current Program Status Register
(CPSR) - mémorise les résultats d’opérations arithmétiques
- stocke le « mode d’exécution »
Un microprocesseur possède plusieurs
modes
En temps normal, le microprocesseur est en mode
utilisateur
Lorsqu’une interruption survient, le microprocesseur
adopte le mode correspondant à
l’interruption
traitée
Le microprocesseur ARM possède 6 modes, qui
correspondent aux interruptions disponibles:
User: le mode « par défaut » disponible pour le programmeur
2. Supervisor: activé par une instruction du programmeur pour
utiliser les fonctions systèmes (par exemple pour communiquer
avec les périphériques);
3. Abort: activé lors d’un accès mémoire invalide;
4. Undefined: activé lors d’une erreur dans le décodage d’une
instruction (instruction invalide)
5. IRQ: activé par un périphérique (Interrupt ReQuest)
6. FIQ: activé par un périphérique, mais qui peut être traité plus
rapidement qu’une IRQ (Fast Interrupt reQuest)