Les interruptions matérielles ou IRQ dans Windows

Les interruptions matérielles ou IRQ (Interrupt ReQuest) en anglais sont des signals asynchrones envoyés par un périphérique au processeur de l’ordinateur.
Le but est d’attirer l’attention du processeur lorsqu’une tâche par un périphérique est en cours.
Par exemple, lorsqu’une imprimante a terminé d’imprimer, celle-ci envoyé une interruption au processeur qui peut ensuite effectuer une autre tâche.

Cet article donne quelques éléments d’explications autour des IRQ dans Windows.

Les IRQ dans Windows
Les IRQ dans Windows

Introduction aux IRQ

Chaque périphérique d’un ordinateur sont en communication avec le processeur lié à adresse IRQ.
Un périphérique peut avoir besoin d’attirer l’attention du processeur ou inversement selon les tâches effectuées.
Pour se faire, il utilise son interruption matérielles ou IRQ.

Un ordinateur possède 256 interruptions matérielles dont 16 liés à des périphériques d’entrées/sorties.
Ainsi on trouve la liste d’interruption matérielles suivantes :

  • IRQ 0 : Horloge Système
  • IRQ 1 : Clavier
  • IRQ 2 : N/A (cascade du second contrôleur)
  • IRQ 3 : Port série (COM2/COM4)
  • IRQ 4 : Port série (COM1/COM3)
  • IRQ 5 : LPT2 (carte de son)
  • IRQ 6 : Lecteur de disquettes
  • IRQ 7 : Port parallèle (LPT1)
  • IRQ 8 : Horloge temps réel
  • IRQ 9 : N/A (PCI)
  • IRQ 10 : N/A
  • IRQ 11 : N/A (USB)
  • IRQ 12 : N/A (PS/2)
  • IRQ 13 : Coprocesseur math.
  • IRQ 14 : Disque dur primaire
  • IRQ 15 : Disque dur secondaire
L'IRQ 4 du port Série visible puis les informations systèmes
L’IRQ 4 du port Série visible puis les informations systèmes

Ainsi lorsque vous pressez une touche sur le clavier, une interruption matérielle est envoyée au processeur.
Le numéro d’IRQ le plus bas possède une priorité plus importante.
Ainsi, si deux interruptions sont reçues simultanéments par le processeur, ce dernier prendre en priorité l’IRQ le plus bas.

Enfin, afin de ne pas trop distraire le processeur, des mécanismes sont mis en place qui permettent notamment de gérer les priorités et les évènements en temps réel.

Les autres IRQ restant sont dites logicielles, c’est à dire qu’un processus en cours d’exécution peut aussi attirer l’attention du processeur.
Cela permet par exemple quand une tâche est terminée de le signaler pour que le processeur lance une nouvelle tâche lié à un matériel de l’ordinateur.

Les interruptions matérielles ou IRQ dans Windows

Chaque périphérique possède sa propre adresse IRQ qui est matérialisée par un numéro.
Lorsque vous installez un nouveau périphérique, un IRQ est alors attribué par les mécanismes Plug & Play.

IRQ Steering

Les périphériques PCI utilisent son propre BUS IRQ pour communiquer avec le processeur.
En théorie chaque périphérique a son propre numéro d’IRQ.
Toutefois, Windows et les BIOS possède une fonction dites « IRQ Steering » qui permet de partager un même numéro IRQ à plusieurs périphériques PCI.
Cela peut s’avérer utile pour régler les problèmes de conflits d’IRQ notamment quand le nombre d’IRQ libre est insuffisant.

Pour se faire Windows gère une table de routage qui associe l’IRQ matérielle au ISA et permet aussi de gérer ses propres priorités.

C’est une très ancienne fonctionnalité de Windows, puisque l’IRQ Steering est apparu pour la première fois sur Windows 95 OSR 2

IRQL de Windows

Enfin Windows possède sa propre table IRQL (Interrupt Request Level) qui permet de gérer les priorités des IRQ pour chaque processeur.

Windows permet donc de gérer les priorités des IRQ matérielles et logicielles ainsi que des niveaux d’IRQL.
Chaque processus et pilote Windows fonctionne à un certain niveau d’IRQL qui définit aussi son niveau de priorité.
Par exemple, à l’IRQL 0, le processeur fonctionne en mode Kernel ou userland. à l’IRQL 2, le processeur est dit au niveau DISPATCH_LEVEL.
Une liste des priorités est donnée sur cette page : Managing Hardware Priorities

Enfin, un périphérique, processus ou driver qui fonctionne à un niveau IRQ bas peut envoyer une interruption à un autre fonctionne à un niveau supérieur.
En clair donc, plus l’IRQL est bas, plus on obtient de priorité sur le processeur.

Une description des IRQL de Windows est donnée sur cette page : What is IRQL and why is it important?

Obtenir l’IRQ d’un périphérique dans Windows

Le gestionnaire de périphérique de Windows permet de visualiser l’IRQ d’un périphérique.

  • Ouvrez le gestionnaire de périphériques de Windows, Plus d’informations, lire l’article : Le gestionnaire de périphérique de Windows
  • Double-cliquez sur le périphérique puis cliquez sur l’onglet Ressources.
  • Dans la liste l’IRQ du périphérique s’affiche.
L'interruption matérielle de la carte Ethernet
L’interruption matérielle de la carte Ethernet
L'IRQ de la carte vidéo
L’IRQ de la carte vidéo

Enfin, il est possible d’afficher la liste des IRQ en cliquant sur le menu Affichage puis Ressources par type.
Enfin déroulez Requête d’interruption (IRQ).

La liste des interruption matérielles et IRQ dans Windows
La liste des interruption matérielles et IRQ dans Windows

Les problèmes autour des IRQ

La gestion des IRQ dans Windows peuvent parfois générer des problèmes.
On trouve globalement deux problèmes : des conflits d’IRQ ou des plantages de type BSOD.

Les conflits d’IRQ

Les conflits d’IRQ surviennent lorsque des périphériques utilisent le même IRQ ou vu comme cela par l’ordinateur.
Cela était très courant avec les anciennes versions de Windows, comme Windows 95.
Ces conflits sont de moins en moins fréquents puisque des améliorations ont été apportées au fil du temps à Windows.
La technologie IRQ Steering permet notamment de limiter ces problèmes de conflits d’IRQ.

De mauvaises conceptions sur des anciennes cartes mères, notamment avec les ports séries pouvaient générer des conflits d’IRQ.
L’arrivé de l’USB a aussi beaucoup contribué à éliminer ce phénomène.

Lorsque cela arrive, le périphérique est marqué en erreur dans le gestionnaire de périphériques de Windows.
Vous pouvez aussi obtenir la liste des périphériques à problèmes depuis les informations systèmes > composants > périphériques à problèmes.

Lister les périphériques à problèmes de Windows
Lister les périphériques à problèmes de Windows

BSOD IRQL_NOT_LESS_OR_EQUAL

Les BSOD IRQL_NOT_LESS_OR_EQUAL survient lorsque Windows ou un pilote possède un haut niveau d’IRQL tente d’accéder à une adresse invalide de la mémoire.
Généralement, il s’agit d’un bug de fonctionnement du pilote.

La page suivante traite des BSOD : Plantage Windows et BSOD IRQL_NOT_LESS_OR_EQUAL

Les BSOD IRQL_NOT_LESS_OR_EQUAL
Les BSOD IRQL_NOT_LESS_OR_EQUAL

MSIs et la fin des IRQ

MSIs (Message Signaled Interrupts) est une alternative au fonctionnement des IRQ.
Ce nouveau système est implémenté pour les périphériques de type PCI-Express.
Les anciennes normes PCI ne le gèrent pas.

Au lieu d’utiliser les canaux IRQ, les périphériques MSIs écrit les messages dans des zones spécifiques de la mémoire.

Depuis la version Vista, Windows gère la norme MSIs.
Vous trouverez sur le forum un article pour optimiser les réglages MSIs de votre ordinateur : OPTIMISATION : Les avantages de passer d’IRQ (Legacy Mode) en MSI

(Visité 283 fois, 2 visites ce jour)