Journal Comment ca marche, les IRQ sur PC ?

Posté par  .
Étiquettes : aucune
1
31
mai
2003
Voila, j'inaugure mon journal par cette question angoissante et existentielle, copie d'un post (http://linuxfr.org/comments/203996.html) lancé lors d'une dépêche sur l'Opteron (et cette fois-ci, avec la case bien cochée).

Si un dlfp-naute calé en hardware avait la réponse, je lui en serais reconnaissant.

« Complètement vrai.

Ceci m'amène à une autre question. L'architecture d'un PC a toujours été très loin de représenter l'idéal en la matière (même dans les premières années), mais même sachant cela, il y a quelque chose qui m'a toujours échappé.

Comment se fait-il que les périphériques d'un PC aient besoin d'une IRQ exclusive ?

Qu'ils aient tous une adresse I/O qui leur est propre, ça c'est normal. Mais l'IRQ, pour autant que je sache, c'est une ligne qui permet d'interrompre automatiquement le processeur lorsqu'elle passe à un état déterminé (en général 0), lequel processeur se charge alors de vérifier quel périphérique a sonné et a besoin d'être traité. En ce sens, une seule IRQ devrait être suffisante pour tout le monde.

En 1987, j'utilisais un MO6 dont le 6809 local ne proposait que trois interruptions matérielles (à part Reset), dont seule l'IRQ était réellement exploitée. Cela suffisait à gérer une souris, une crayon optique, un lecteur de disquette, un clavier, un timer (le clignotement du curseur était réalisé en soft) et plusieurs autres périphériques. Le tout emmené dans une joyeuse farandole à 1 Mhz.

En principe, une ligne que l'on active en la mettant à la masse peut très supporter un OU câblé, et a partir du moment où au moins un périphérique relie cette ligne à la masse, l'interruption est déclenchée, et le pilote passe en revue les ports des périphériques susceptibles d'interrompre le processeur et traite chacun d'eux le cas échéant.

Pourquoi tant de soucis sur un PC ? ».
  • # Re: Comment ca marche, les IRQ sur PC ?

    Posté par  . Évalué à 3.

    Ben tout simplement si tu as un IRQ qui arrive pendant la procedure de traitement d'un autre IRQ, tu as une regle de priorite : l'IRQ le plus bas est traite en premier.
    Si tu n'as pas d'IRQ differents, tu ne peux pas "queuer" par ordre de priorité les IRQ arrivant puisque tu ne sais pas a quoi l'IRQ unique correspond. J'espère que je suis assez clair (il est tard).
    En gros, si tu as un seul IRQ, il va falloir aller voir qui veut le proc, si un IRQ arrive à ce moment là tu en fais quoi ? si tu l'ignores les IRQ ne servent plus à rien, si tu le queues pour le traiter après tu fais peut-être attendre un truc plus pressant que celui que tu traites, et si tu le traites en faisant attendre celui que tu traitais, il n'est peut-être pas aussi prioritaire que ça et tu as fait poireauter ton premier IRQ pour rien.
  • # Re: Comment ca marche, les IRQ sur PC ?

    Posté par  . Évalué à 1.

    Le partage des IRQ au niveau matériel ne pose pas réellement de problème, le bus PCI le fait naturellement, et sur x86 sous Linux, on peut partager une IRQ entre plusieurs cartes sous réserve que les drivers concernées le supporte. Les autres architectures font souvent cela naturellement. Je crois que le problème est essentiellement qu'à la base, cela n'avait pas été prévu. Il y avait plus d'interruptions que nécessaire, cela semblait large. Ceci pose des problèmes lorsqu'on n'est pas capable de déterminer qui a déclencher l'interruption, dans ce cas, seul le numéro de l'interruption permettait de savoir qui était le coupable. Le but du PC étant de faire une machine bon marché, ça coutait moins cher de s'arreter là.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.