4.5 Détection et prise en compte d’une interruption dans un système simple

Au cours de l’exécution d’un programme, l’UC teste la présence d’interruption à la fin de chaque cycle instruction. Cependant, lorsque la durée d’exécution d’une instruction est relativement importante, l’UC n’attend pas la fin de l’instruction pour tester la présence d’une IT.  Plusieurs tests peuvent être effectuées en des endroits précis (ou points interruptible) du microprogramme correspondant à une instruction.


Figure 4.2 : Instant de détection d’une interruption

4.5.1 Détection d’une interruption

La figure ci—dessous illustre un système d’interruption simple. L’UC possède une seule entrée interruption sur laquelle sont reçues les interruptions qui peuvent être provoquer par différents contrôleurs qui lui sont reliés.

Pour détecter la présence d’un IT, l’UC teste à chaque point interruptible, l’état de la bascule (BI). Si BI est à « 1 » ce qui signifie qu’un périphérique au moins demande ses services, l’UC remet à « 0 »la bascule de validation (BV) pour interdire à un autre périphérique de venir l’interrompre. Lorsqu’une interruption est détectée l’UC procède, dans l’ordre, aux opérations suivantes :

  1. Sauvegarde des informations des informations qui lui permettront de répondre ultérieurement l’exécution du programme interrompu.
  2. Recherche de la cause de l’interruption.
  3. Acquittement de l’instruction.
  4. Exécution du programme de traitement de l’interruption.
  5. Restauration des informations sauvegardées, et retour au programme interrompu avec revalidation du système d’interruption.


Figure 4.3 : Système d’interruption simple à une seule entrée.

4.5.2. Sauvegarde du contexte

Toutes les informations qui lui permettront de répondre l’exécution du programme interrompu sont sauvegardées. Ces informations sont :

  • L’adresse de la prochaine instruction à exécuter (CO).
  • Les indication sur l’état de l’UC au moment de l’interruption (Registre d(état).
  • Les opérandes et les résultats intermédiaires qui sont contenu sur les registres généraux.

Ces informations représentent l’état ou le contexte du programme interrompu.

4.5.3.) Recherche de la cause de l’interruption

Rechercher la cause de l’interruption consiste à identifier sa source et l’évènement qui en est à l’origine. On distingue deux modes de recherche :

a-) Recherche par scrutation (Polling)

L’UC procède dans un ordre prédéfini à la lecture de l’état des périphériques. Cet état est résume dans le registre d’état (RE) de chaque contrôleur. Si le bit interruption du mot d’état du contrôleur i est à « 1 », l’UC consulte les autres bits de ce mot afin de déterminer la cause de l‘IT, sinon elle fait la lecture du mot d’état du contrôleur suivant.

Figure 4.4. Recherche de la cause d’IT par scrutation (Polling)

b-) Recherche par daisy chain

Pour identifier le contrôleur source de l’IT, l’UC active la ligne ACK. Si le contrôleur 1 a émis une interruption, il bloque le signal ACK à son niveau, désactive sa bascule d’interruption, et mis sur le bus de données un code qui permettra à l’UC de le reconnaitre. Si le contrôleur 1 n’a pas émis d’interruption, il transmet le signal au contrôleur 2. S’il a activé sa ligne d’interruption, le contrôleur 2 bloque le signal ACK à son niveau et met sur le bus de données un code ou une adresse qui permet à l’UC de retrouver l’adresse mémoire du programme de traitement de l’interruption. Dans le cas contraire, il transmet le signal ACK au contrôleur 2, etc.

4.5.4. Acquittement de l’interruption

Le signal d’IT qui arrive à l’UC est mémorisé dans une bascule au niveau de l’organe source. Cette bascule n’est remise à « 0 » qu’au moment de l’acquittement de l’interruption par l’UC. L’acquittement peut être obtenu selon les machines, au moyen d’un signal de lecture du registre d’état ou du registre de données du contrôleur qui a émis l’IT, ou encore à l’aide de la commande (instruction) d’acquittement.

4.5.5. Traitement de l’interruption

A chaque cause d’IT, il correspond un traitement particulier confié à un programme rangé en MC. Pour pouvoir traiter une instruction, l’UC doit retrouver l’adresse du programme qui lui est associé et la charge dans le compteur ordinal (CO). Les adresses des programmes de traitement des IT peuvent être stockées dans une table en MC. L’UC accède à cette table au moyen d’un index associé à l’interruption. Les éléments de cette table sont initialisés à la mise en marche de la machine.

Figure 4.6. Table d’adresses des différentes IT

Sur certaines machines, une zone mémoire distincte est associée à chaque groupe d’IT. Cette zone est formée de deux champs : un champ qui reçoit le PSW du programme interrompu et un champ qui contient le PSW du programme à exécuter.

4.5.6. Restauration du contexte du programme interrompu

Lorsque le traitement de l’interruption est terminé, les informations sauvegardées au moment de la prise en compte sont chargés dans leurs registres respectifs. Un programme d’IT se termine par une instruction de retour au programme interrompu. Cette instruction a en générale pour effet de restaurer le registre d’état et le compteur ordinal. Le système d’IT est, en même temps, validé (mise à « 1 » de la bascule BV). L’exécution du programme interrompu reprend aussitôt le contenu du compteur ordinal.

Modifié le: jeudi 30 novembre 2023, 18:38