Pourquoi le masquage d'interruptions est essentiel dans les microprocesseurs
Exécution atomique et déterminisme temps-réel
Le masquage d'interruptions désactive temporairement le traitement d'interruptions, permettant au CPU d'exécuter sections de code critiques atomiquement. C'est une primitive de synchronisation fondamentale.
Raisons clés
- Protection section critique : Prévient conditions de course lors accès ressources partagées (variables globales, registres matériels, listes chainées). Sans masquage, une ISR pourrait corrompre données mid-update.
- Déterminisme temps-réel : Garantit pire temps d'exécution (WCET) pour tâches haute priorité en bornant latence interruption. Essentiel pour systèmes temps-réel dur (automobile, avionique, commande moteurs).
- Lecture-Modification-Écriture atomique : Permet implémentation sûre sémaphores, mutex, et algorithmes lock-free sur mono-cœur.
- Gestion énergie : Désactivation horloges contrôleur interruptions pendant sommeil profond réduit courant fuite appareils batterie.
- Optimisation commutation contexte : Réduit sauvegardes/restaurations contexte inutiles quand interruptions différées pendant courtes routines noyau.
Mécanismes implémentation
- Masque global : Drapeau unique (ex: x86
CLI/STI, ARMCPSID I/CPSIE I, RISC-VmieCSR). - Masque sélectif : Bits activation par interruption dans contrôleur interruptions (PIC, APIC, GIC, PLIC).
- Seuil priorité : Masquer toutes en dessous d'un niveau (ARM BASEPRI, RISC-V PMP).
Risques surutilisation
Masquage excessif → latence interruptions accrue, deadlines manqués, événements perdus (débordement série, dérive tic minuteur). Bonne pratique : sections masquées < 10–20 µs ; verrouillage finement granulaire où possible.
